pax_global_header00006660000000000000000000000064150767157450014533gustar00rootroot0000000000000052 comment=6abdacad3f3fe944ea42177844469139e81feda6 gohugoio-hugo-6abdaca/000077500000000000000000000000001507671574500151365ustar00rootroot00000000000000gohugoio-hugo-6abdaca/.circleci/000077500000000000000000000000001507671574500167715ustar00rootroot00000000000000gohugoio-hugo-6abdaca/.circleci/config.yml000066400000000000000000000057711507671574500207730ustar00rootroot00000000000000parameters: # v2: 11m. defaults: &defaults resource_class: large docker: - image: bepsays/ci-hugoreleaser:1.22500.20300 environment: &buildenv GOMODCACHE: /root/project/gomodcache version: 2 jobs: prepare_release: <<: *defaults environment: &buildenv GOMODCACHE: /root/project/gomodcache steps: - setup_remote_docker - checkout: path: hugo - &git-config run: command: | git config --global user.email "bjorn.erik.pedersen+hugoreleaser@gmail.com" git config --global user.name "hugoreleaser" - run: command: | cd hugo go mod download go run -tags release main.go release --step 1 - save_cache: key: git-sha-{{ .Revision }} paths: - hugo - gomodcache build_container1: <<: [*defaults] environment: <<: [*buildenv] steps: - &restore-cache restore_cache: key: git-sha-{{ .Revision }} - run: no_output_timeout: 20m command: | mkdir -p /tmp/files/dist1 cd hugo hugoreleaser build -paths "builds/container1/**" -workers 3 -dist /tmp/files/dist1 -chunks $CIRCLE_NODE_TOTAL -chunk-index $CIRCLE_NODE_INDEX - &persist-workspace persist_to_workspace: root: /tmp/files paths: - dist1 - dist2 parallelism: 7 build_container2: <<: [*defaults] environment: <<: [*buildenv] docker: - image: bepsays/ci-hugoreleaser-linux-arm64:1.22500.20300 steps: - *restore-cache - &attach-workspace attach_workspace: at: /tmp/workspace - run: command: | mkdir -p /tmp/files/dist2 cd hugo hugoreleaser build -paths "builds/container2/**" -workers 1 -dist /tmp/files/dist2 - *persist-workspace archive_and_release: <<: [*defaults] environment: <<: [*buildenv] steps: - *restore-cache - *attach-workspace - *git-config - run: name: Add github.com to known hosts command: ssh-keyscan github.com >> ~/.ssh/known_hosts - run: command: | cp -a /tmp/workspace/dist1/. ./hugo/dist cp -a /tmp/workspace/dist2/. ./hugo/dist - run: command: | cd hugo hugoreleaser archive hugoreleaser release go run -tags release main.go release --step 2 workflows: version: 2 release: jobs: - prepare_release: filters: branches: only: /release-.*/ - build_container1: requires: - prepare_release - build_container2: requires: - prepare_release - archive_and_release: context: org-global requires: - build_container1 - build_container2 gohugoio-hugo-6abdaca/.dockerignore000066400000000000000000000001011507671574500176020ustar00rootroot00000000000000*.md *.log *.txt .git .github .circleci docs examples Dockerfile gohugoio-hugo-6abdaca/.gitattributes000066400000000000000000000002401507671574500200250ustar00rootroot00000000000000# Text files have auto line endings * text=auto # Go source files always have LF line endings *.go text eol=lf # SVG files should not be modified *.svg -text gohugoio-hugo-6abdaca/.github/000077500000000000000000000000001507671574500164765ustar00rootroot00000000000000gohugoio-hugo-6abdaca/.github/ISSUE_TEMPLATE/000077500000000000000000000000001507671574500206615ustar00rootroot00000000000000gohugoio-hugo-6abdaca/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000010031507671574500233450ustar00rootroot00000000000000--- name: 'Bug report' labels: 'Bug, NeedsTriage' assignees: '' about: Create a report to help us improve --- ### What version of Hugo are you using (`hugo version`)?
$ hugo version

### Does this issue reproduce with the latest release? gohugoio-hugo-6abdaca/.github/ISSUE_TEMPLATE/config.yml000066400000000000000000000005511507671574500226520ustar00rootroot00000000000000blank_issues_enabled: false contact_links: - name: SUPPORT, ISSUES and TROUBLESHOOTING url: https://discourse.gohugo.io/ about: Please DO NOT use Github for support requests. Please visit https://discourse.gohugo.io for support! You will be helped much faster there. If you ignore this request your issue might be closed with a discourse label. gohugoio-hugo-6abdaca/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000004301507671574500244030ustar00rootroot00000000000000--- name: Proposal about: Propose a new feature for Hugo title: '' labels: 'Proposal, NeedsTriage' assignees: '' --- gohugoio-hugo-6abdaca/.github/SUPPORT.md000066400000000000000000000003121507671574500201700ustar00rootroot00000000000000### Asking Support Questions We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions. Please don't use the GitHub issue tracker to ask questions. gohugoio-hugo-6abdaca/.github/dependabot.yml000066400000000000000000000003561507671574500213320ustar00rootroot00000000000000# See https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#package-ecosystem version: 2 updates: - package-ecosystem: "gomod" directory: "/" schedule: interval: "daily" gohugoio-hugo-6abdaca/.github/workflows/000077500000000000000000000000001507671574500205335ustar00rootroot00000000000000gohugoio-hugo-6abdaca/.github/workflows/image.yml000066400000000000000000000026211507671574500223410ustar00rootroot00000000000000name: Build Docker image on: release: types: [published] pull_request: permissions: packages: write env: REGISTRY_IMAGE: ghcr.io/gohugoio/hugo jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Docker meta id: meta uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 with: images: ${{ env.REGISTRY_IMAGE }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 - name: Login to GHCR # Login is only needed when the image is pushed uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push id: build uses: docker/build-push-action@16ebe778df0e7752d2cfcbd924afdbbd89c1a755 # v6.6.1 with: context: . provenance: mode=max sbom: true push: ${{ github.event_name != 'pull_request' }} platforms: linux/amd64,linux/arm64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: HUGO_BUILD_TAGS=extended,withdeploygohugoio-hugo-6abdaca/.github/workflows/stale.yml000066400000000000000000000047421507671574500223750ustar00rootroot00000000000000name: 'Close stale and lock closed issues and PRs' on: workflow_dispatch: schedule: - cron: '30 1 * * *' permissions: contents: read jobs: stale: permissions: issues: write pull-requests: write runs-on: ubuntu-latest steps: - uses: dessant/lock-threads@7de207be1d3ce97a9abe6ff1306222982d1ca9f9 # v5.0.1 with: issue-inactive-days: 21 add-issue-labels: 'Outdated' issue-comment: > This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. pr-comment: > This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 with: operations-per-run: 999 days-before-issue-stale: 365 days-before-pr-stale: 365 days-before-issue-close: 56 days-before-pr-close: 56 stale-issue-message: > This issue has been automatically marked as stale because it has not had recent activity. The resources of the Hugo team are limited, and so we are asking for your help. If this is a **bug** and you can still reproduce this error on the master branch, please reply with all of the information you have about it in order to keep the issue open. If this is a **feature request**, and you feel that it is still relevant and valuable, please tell us why. This issue will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions. stale-pr-message: This PR has been automatically marked as stale because it has not had recent activity. The resources of the Hugo team are limited, and so we are asking for your help. Please check https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#code-contribution and verify that this code contribution fits with the description. If yes, tell us in a comment. This PR will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions. stale-issue-label: 'Stale' exempt-issue-labels: 'Keep,Security' stale-pr-label: 'Stale' exempt-pr-labels: 'Keep,Security' gohugoio-hugo-6abdaca/.github/workflows/test.yml000066400000000000000000000120761507671574500222430ustar00rootroot00000000000000on: push: branches: [master] pull_request: name: Test env: GOPROXY: https://proxy.golang.org GO111MODULE: on SASS_VERSION: 1.80.3 DART_SASS_SHA_LINUX: 7c933edbad0a7d389192c5b79393485c088bd2c4398e32f5754c32af006a9ffd DART_SASS_SHA_MACOS: 79e060b0e131c3bb3c16926bafc371dc33feab122bfa8c01aa337a072097967b DART_SASS_SHA_WINDOWS: 0bc4708b37cd1bac4740e83ac5e3176e66b774f77fd5dd364da5b5cfc9bfb469 permissions: contents: read jobs: test: strategy: matrix: go-version: [1.24.x, 1.25.x] os: [ubuntu-latest, windows-latest] # macos disabled for now because of disk space issues. runs-on: ${{ matrix.os }} steps: - if: matrix.os == 'ubuntu-latest' name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 with: # this might remove tools that are actually needed, # if set to "true" but frees about 6 GB tool-cache: false android: true dotnet: true haskell: true large-packages: true docker-images: true swap-storage: true - name: Checkout code uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Install Go uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version: ${{ matrix.go-version }} check-latest: true cache: true cache-dependency-path: | **/go.sum **/go.mod - name: Install Ruby uses: ruby/setup-ruby@44511735964dcb71245e7e55f72539531f7bc0eb # v1.257.0 with: ruby-version: "2.7" bundler-cache: true # - name: Install Python uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: "3.x" - name: Install Mage run: go install github.com/magefile/mage@v1.15.0 - name: Install asciidoctor uses: reitzig/actions-asciidoctor@c642db5eedd1d729bb8c92034770d0b2f769eda6 # v2.0.2 - name: Install docutils run: | pip install docutils rst2html --version - if: matrix.os == 'ubuntu-latest' name: Install pandoc on Linux run: | sudo apt-get update -y sudo apt-get install -y pandoc - if: matrix.os == 'macos-latest' run: | brew install pandoc - if: matrix.os == 'windows-latest' run: | choco install pandoc - run: pandoc -v - if: matrix.os == 'windows-latest' run: | choco install mingw - if: matrix.os == 'ubuntu-latest' name: Install dart-sass Linux run: | echo "Install Dart Sass version ${SASS_VERSION} ..." curl -LJO "https://github.com/sass/dart-sass/releases/download/${SASS_VERSION}/dart-sass-${SASS_VERSION}-linux-x64.tar.gz"; echo "${DART_SASS_SHA_LINUX} dart-sass-${SASS_VERSION}-linux-x64.tar.gz" | sha256sum -c; tar -xvf "dart-sass-${SASS_VERSION}-linux-x64.tar.gz"; echo "$GOBIN" echo "$GITHUB_WORKSPACE/dart-sass/" >> $GITHUB_PATH - if: matrix.os == 'macos-latest' name: Install dart-sass MacOS run: | echo "Install Dart Sass version ${SASS_VERSION} ..." curl -LJO "https://github.com/sass/dart-sass/releases/download/${SASS_VERSION}/dart-sass-${SASS_VERSION}-macos-x64.tar.gz"; echo "${DART_SASS_SHA_MACOS} dart-sass-${SASS_VERSION}-macos-x64.tar.gz" | shasum -a 256 -c; tar -xvf "dart-sass-${SASS_VERSION}-macos-x64.tar.gz"; echo "$GITHUB_WORKSPACE/dart-sass/" >> $GITHUB_PATH - if: matrix.os == 'windows-latest' name: Install dart-sass Windows run: | echo "Install Dart Sass version ${env:SASS_VERSION} ..." curl -LJO "https://github.com/sass/dart-sass/releases/download/${env:SASS_VERSION}/dart-sass-${env:SASS_VERSION}-windows-x64.zip"; Expand-Archive -Path "dart-sass-${env:SASS_VERSION}-windows-x64.zip" -DestinationPath .; echo "$env:GITHUB_WORKSPACE/dart-sass/" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf-8 -Append - if: matrix.os == 'ubuntu-latest' name: Install staticcheck run: go install honnef.co/go/tools/cmd/staticcheck@latest - if: matrix.os == 'ubuntu-latest' name: Run staticcheck run: staticcheck ./... - if: matrix.os != 'windows-latest' name: Check run: | sass --version; mage -v check; env: HUGO_BUILD_TAGS: extended,withdeploy - if: matrix.os == 'windows-latest' # See issue #11052. We limit the build to regular test (no -race flag) on Windows for now. name: Test run: | mage -v test; env: HUGO_BUILD_TAGS: extended,withdeploy - name: Build tags run: | go install -tags extended - if: matrix.os == 'ubuntu-latest' name: Build for dragonfly run: | go install env: GOARCH: amd64 GOOS: dragonfly gohugoio-hugo-6abdaca/.gitignore000066400000000000000000000000521507671574500171230ustar00rootroot00000000000000 *.test imports.* dist/ public/ .DS_Store gohugoio-hugo-6abdaca/.gitmodules000066400000000000000000000000001507671574500173010ustar00rootroot00000000000000gohugoio-hugo-6abdaca/.mailmap000066400000000000000000000002421507671574500165550ustar00rootroot00000000000000spf13 Steve Francia bep Bjørn Erik Pedersen gohugoio-hugo-6abdaca/CONTRIBUTING.md000066400000000000000000000207371507671574500174000ustar00rootroot00000000000000>**Note:** We would appreciate if you hold on with any big refactoring (like renaming deprecated Go packages), mainly because of potential for extra merge work for future coming in in the near future. # Contributing to Hugo We welcome contributions to Hugo of any kind including documentation, themes, organization, tutorials, blog posts, bug reports, issues, feature requests, feature implementations, pull requests, answering questions on the forum, helping to manage issues, etc. The Hugo community and maintainers are [very active](https://github.com/gohugoio/hugo/pulse/monthly) and helpful, and the project benefits greatly from this activity. We created a [step by step guide](https://gohugo.io/tutorials/how-to-contribute-to-hugo/) if you're unfamiliar with GitHub or contributing to open source projects in general. *Note that this repository only contains the actual source code of Hugo. For **only** documentation-related pull requests / issues please refer to the [hugoDocs](https://github.com/gohugoio/hugoDocs) repository.* *Changes to the codebase **and** related documentation, e.g. for a new feature, should still use a single pull request.* ## Table of Contents * [Asking Support Questions](#asking-support-questions) * [Reporting Issues](#reporting-issues) * [Submitting Patches](#submitting-patches) * [Code Contribution Guidelines](#code-contribution-guidelines) * [Git Commit Message Guidelines](#git-commit-message-guidelines) * [Fetching the Sources From GitHub](#fetching-the-sources-from-github) * [Building Hugo with Your Changes](#building-hugo-with-your-changes) ## Asking Support Questions We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions. Please don't use the GitHub issue tracker to ask questions. ## Reporting Issues If you believe you have found a defect in Hugo or its documentation, use the GitHub issue tracker to report the problem to the Hugo maintainers. If you're not sure if it's a bug or not, start by asking in the [discussion forum](https://discourse.gohugo.io). When reporting the issue, please provide the version of Hugo in use (`hugo version`) and your operating system. - [Hugo Issues · gohugoio/hugo](https://github.com/gohugoio/hugo/issues) - [Hugo Documentation Issues · gohugoio/hugoDocs](https://github.com/gohugoio/hugoDocs/issues) - [Hugo Website Theme Issues · gohugoio/hugoThemesSite](https://github.com/gohugoio/hugoThemesSite/issues) ## Code Contribution Hugo has become a fully featured static site generator, so any new functionality must: * be useful to many. * fit naturally into _what Hugo does best._ * strive not to break existing sites. * close or update an open [Hugo issue](https://github.com/gohugoio/hugo/issues) If it is of some complexity, the contributor is expected to maintain and support the new feature in the future (answer questions on the forum, fix any bugs etc.). Any non-trivial code change needs to update an open [issue](https://github.com/gohugoio/hugo/issues). A non-trivial code change without an issue reference with one of the labels `bug` or `enhancement` will not be merged. Note that we do not accept new features that require [CGO](https://github.com/golang/go/wiki/cgo). We have one exception to this rule which is LibSASS. **Bug fixes are, of course, always welcome.** ## Submitting Patches The Hugo project welcomes all contributors and contributions regardless of skill or experience level. If you are interested in helping with the project, we will help you with your contribution. ### Code Contribution Guidelines Because we want to create the best possible product for our users and the best contribution experience for our developers, we have a set of guidelines which ensure that all contributions are acceptable. The guidelines are not intended as a filter or barrier to participation. If you are unfamiliar with the contribution process, the Hugo team will help you and teach you how to bring your contribution in accordance with the guidelines. To make the contribution process as seamless as possible, we ask for the following: * Go ahead and fork the project and make your changes. We encourage pull requests to allow for review and discussion of code changes. * When you’re ready to create a pull request, be sure to: * Sign the [CLA](https://cla-assistant.io/gohugoio/hugo). * Have test cases for the new code. If you have questions about how to do this, please ask in your pull request. * Run `go fmt`. * Add documentation if you are adding new features or changing functionality. The docs site lives in `/docs`. * Squash your commits into a single commit. `git rebase -i`. It’s okay to force update your pull request with `git push -f`. * Ensure that `mage check` succeeds. [Travis CI](https://travis-ci.org/gohugoio/hugo) (Windows, Linux and macOS) will fail the build if `mage check` fails. * Follow the **Git Commit Message Guidelines** below. ### Git Commit Message Guidelines This [blog article](https://cbea.ms/git-commit/) is a good resource for learning how to write good commit messages, the most important part being that each commit message should have a title/subject in imperative mood starting with a capital letter and no trailing period: *"js: Return error when option x is not set"*, **NOT** *"returning some error."* Most title/subjects should have a lower-cased prefix with a colon and one whitespace. The prefix can be: * The name of the package where (most of) the changes are made (e.g. `media: Add text/calendar`) * If the package name is deeply nested/long, try to shorten it from the left side, e.g. `markup/goldmark` is OK, `resources/resource_transformers/js` can be shortened to `js`. * If this commit touches several packages with a common functional topic, use that as a prefix, e.g. `errors: Resolve correct line numbers`) * If this commit touches many packages without a common functional topic, prefix with `all:` (e.g. `all: Reformat Go code`) * If this is a documentation update, prefix with `docs:`. * If nothing of the above applies, just leave the prefix out. * Note that the above excludes nouns seen in other repositories, e.g. "chore:". Also, if your commit references one or more GitHub issues, always end your commit message body with *See #1234* or *Fixes #1234*. Replace *1234* with the GitHub issue ID. The last example will close the issue when the commit is merged into *master*. An example: ```text tpl: Add custom index function Add a custom index template function that deviates from the stdlib simply by not returning an "index out of range" error if an array, slice or string index is out of range. Instead, we just return nil values. This should help make the new default function more useful for Hugo users. Fixes #1949 ``` ### Fetching the Sources From GitHub Since Hugo 0.48, Hugo uses the Go Modules support built into Go 1.11 to build. The easiest is to clone Hugo in a directory outside of `GOPATH`, as in the following example: ```bash mkdir $HOME/src cd $HOME/src git clone https://github.com/gohugoio/hugo.git cd hugo go install ``` For some convenient build and test targets, you also will want to install Mage: ```bash go install github.com/magefile/mage ``` Now, to make a change to Hugo's source: 1. Create a new branch for your changes (the branch name is arbitrary): ```bash git checkout -b iss1234 ``` 1. After making your changes, commit them to your new branch: ```bash git commit -a -v ``` 1. Fork Hugo in GitHub. 1. Add your fork as a new remote (the remote name, "fork" in this example, is arbitrary): ```bash git remote add fork git@github.com:USERNAME/hugo.git ``` 1. Push the changes to your new remote: ```bash git push --set-upstream fork iss1234 ``` 1. You're now ready to submit a PR based upon the new branch in your forked repository. ### Building Hugo with Your Changes Hugo uses [mage](https://github.com/magefile/mage) to sync vendor dependencies, build Hugo, run the test suite and other things. You must run mage from the Hugo directory. ```bash cd $HOME/go/src/github.com/gohugoio/hugo ``` To build Hugo: ```bash mage hugo ``` To install hugo in `$HOME/go/bin`: ```bash mage install ``` To run the tests: ```bash mage hugoRace mage -v check ``` To list all available commands along with descriptions: ```bash mage -l ``` **Note:** From Hugo 0.43 we have added a build tag, `extended` that adds **SCSS support**. This needs a C compiler installed to build. You can enable this when building by: ```bash HUGO_BUILD_TAGS=extended mage install ```` gohugoio-hugo-6abdaca/Dockerfile000077500000000000000000000063071507671574500171410ustar00rootroot00000000000000# GitHub: https://github.com/gohugoio # Twitter: https://twitter.com/gohugoio # Website: https://gohugo.io/ ARG GO_VERSION="1.25" ARG ALPINE_VERSION="3.22" ARG DART_SASS_VERSION="1.79.3" FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.5.0 AS xx FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS gobuild FROM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS gorun FROM gobuild AS build RUN apk add clang lld # Set up cross-compilation helpers COPY --from=xx / / ARG TARGETPLATFORM RUN xx-apk add musl-dev gcc g++ # Optionally set HUGO_BUILD_TAGS to "none" or "withdeploy" when building like so: # docker build --build-arg HUGO_BUILD_TAGS=withdeploy . # # We build the extended version by default. ARG HUGO_BUILD_TAGS="extended" ENV CGO_ENABLED=1 ENV GOPROXY=https://proxy.golang.org ENV GOCACHE=/root/.cache/go-build ENV GOMODCACHE=/go/pkg/mod ARG TARGETPLATFORM WORKDIR /go/src/github.com/gohugoio/hugo # For --mount=type=cache the value of target is the default cache id, so # for the go mod cache it would be good if we could share it with other Go images using the same setup, # but the go build cache needs to be per platform. # See this comment: https://github.com/moby/buildkit/issues/1706#issuecomment-702238282 RUN --mount=target=. \ --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build,id=go-build-$TARGETPLATFORM <Hugo A fast and flexible static site generator built with love by [bep], [spf13], and [friends] in [Go]. --- [![GoDoc](https://godoc.org/github.com/gohugoio/hugo?status.svg)](https://godoc.org/github.com/gohugoio/hugo) [![Tests on Linux, MacOS and Windows](https://github.com/gohugoio/hugo/workflows/Test/badge.svg)](https://github.com/gohugoio/hugo/actions?query=workflow%3ATest) [![Go Report Card](https://goreportcard.com/badge/github.com/gohugoio/hugo)](https://goreportcard.com/report/github.com/gohugoio/hugo) [Website] | [Installation] | [Documentation] | [Support] | [Contributing] | Mastodon ## Overview Hugo is a [static site generator] written in [Go], optimized for speed and designed for flexibility. With its advanced templating system and fast asset pipelines, Hugo renders a complete site in seconds, often less. Due to its flexible framework, multilingual support, and powerful taxonomy system, Hugo is widely used to create: - Corporate, government, nonprofit, education, news, event, and project sites - Documentation sites - Image portfolios - Landing pages - Business, professional, and personal blogs - Resumes and CVs Use Hugo's embedded web server during development to instantly see changes to content, structure, behavior, and presentation. Then deploy the site to your host, or push changes to your Git provider for automated builds and deployment. Hugo's fast asset pipelines include: - Image processing – Convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract EXIF data - JavaScript bundling – Transpile TypeScript and JSX to JavaScript, bundle, tree shake, minify, create source maps, and perform SRI hashing. - Sass processing – Transpile Sass to CSS, bundle, tree shake, minify, create source maps, perform SRI hashing, and integrate with PostCSS - Tailwind CSS processing – Compile Tailwind CSS utility classes into standard CSS, bundle, tree shake, optimize, minify, perform SRI hashing, and integrate with PostCSS And with [Hugo Modules], you can share content, assets, data, translations, themes, templates, and configuration with other projects via public or private Git repositories. See the [features] section of the documentation for a comprehensive summary of Hugo's capabilities. ## Sponsors

 

Linode     The complete IDE crafted for professional Go developers.     CloudCannon

## Editions Hugo is available in three editions: standard, extended, and extended/deploy. While the standard edition provides core functionality, the extended and extended/deploy editions offer advanced features. Feature|extended edition|extended/deploy edition :--|:-:|:-: Encode to the WebP format when [processing images]. You can decode WebP images with any edition.|:heavy_check_mark:|:heavy_check_mark: [Transpile Sass to CSS] using the embedded LibSass transpiler. You can use the [Dart Sass] transpiler with any edition.|:heavy_check_mark:|:heavy_check_mark: Deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container. See [details].|:x:|:heavy_check_mark: [dart sass]: https://gohugo.io/functions/css/sass/#dart-sass [processing images]: https://gohugo.io/content-management/image-processing/ [transpile sass to css]: https://gohugo.io/functions/css/sass/ [details]: https://gohugo.io/hosting-and-deployment/hugo-deploy/ Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition. ## Installation Install Hugo from a [prebuilt binary], package manager, or package repository. Please see the installation instructions for your operating system: - [macOS] - [Linux] - [Windows] - [DragonFly BSD, FreeBSD, NetBSD, and OpenBSD] ## Build from source Prerequisites to build Hugo from source: - Standard edition: Go 1.24.0 or later - Extended edition: Go 1.24.0 or later, and GCC - Extended/deploy edition: Go 1.24.0 or later, and GCC Build the standard edition: ```text go install github.com/gohugoio/hugo@latest ``` Build the extended edition: ```text CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest ``` Build the extended/deploy edition: ```text CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@latest ``` ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=gohugoio/hugo&type=Timeline)](https://star-history.com/#gohugoio/hugo&Timeline) ## Documentation Hugo's [documentation] includes installation instructions, a quick start guide, conceptual explanations, reference information, and examples. Please submit documentation issues and pull requests to the [documentation repository]. ## Support Please **do not use the issue queue** for questions or troubleshooting. Unless you are certain that your issue is a software defect, use the [forum]. Hugo’s [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question. ## Contributing You can contribute to the Hugo project by: - Answering questions on the [forum] - Improving the [documentation] - Monitoring the [issue queue] - Creating or improving [themes] - Squashing [bugs] Please submit documentation issues and pull requests to the [documentation repository]. If you have an idea for an enhancement or new feature, create a new topic on the [forum] in the "Feature" category. This will help you to: - Determine if the capability already exists - Measure interest - Refine the concept If there is sufficient interest, [create a proposal]. Do not submit a pull request until the project lead accepts the proposal. For a complete guide to contributing to Hugo, see the [Contribution Guide](CONTRIBUTING.md). ## Dependencies Hugo stands on the shoulders of great open source libraries. Run `hugo env --logLevel info` to display a list of dependencies.
See current dependencies ```text github.com/BurntSushi/locker="v0.0.0-20171006230638-a6e239ea1c69" github.com/PuerkitoBio/goquery="v1.10.1" github.com/alecthomas/chroma/v2="v2.15.0" github.com/andybalholm/cascadia="v1.3.3" github.com/armon/go-radix="v1.0.1-0.20221118154546-54df44f2176c" github.com/bep/clocks="v0.5.0" github.com/bep/debounce="v1.2.0" github.com/bep/gitmap="v1.6.0" github.com/bep/goat="v0.5.0" github.com/bep/godartsass/v2="v2.3.2" github.com/bep/golibsass="v1.2.0" github.com/bep/gowebp="v0.3.0" github.com/bep/imagemeta="v0.8.4" github.com/bep/lazycache="v0.7.0" github.com/bep/logg="v0.4.0" github.com/bep/mclib="v1.20400.20402" github.com/bep/overlayfs="v0.9.2" github.com/bep/simplecobra="v0.5.0" github.com/bep/tmc="v0.5.1" github.com/cespare/xxhash/v2="v2.3.0" github.com/clbanning/mxj/v2="v2.7.0" github.com/cpuguy83/go-md2man/v2="v2.0.4" github.com/disintegration/gift="v1.2.1" github.com/dlclark/regexp2="v1.11.5" github.com/dop251/goja="v0.0.0-20250125213203-5ef83b82af17" github.com/evanw/esbuild="v0.24.2" github.com/fatih/color="v1.18.0" github.com/frankban/quicktest="v1.14.6" github.com/fsnotify/fsnotify="v1.8.0" github.com/getkin/kin-openapi="v0.129.0" github.com/ghodss/yaml="v1.0.0" github.com/go-openapi/jsonpointer="v0.21.0" github.com/go-openapi/swag="v0.23.0" github.com/go-sourcemap/sourcemap="v2.1.4+incompatible" github.com/gobuffalo/flect="v1.0.3" github.com/gobwas/glob="v0.2.3" github.com/gohugoio/go-i18n/v2="v2.1.3-0.20230805085216-e63c13218d0e" github.com/gohugoio/hashstructure="v0.5.0" github.com/gohugoio/httpcache="v0.7.0" github.com/gohugoio/hugo-goldmark-extensions/extras="v0.2.0" github.com/gohugoio/hugo-goldmark-extensions/passthrough="v0.3.0" github.com/gohugoio/locales="v0.14.0" github.com/gohugoio/localescompressed="v1.0.1" github.com/golang/freetype="v0.0.0-20170609003504-e2365dfdc4a0" github.com/google/go-cmp="v0.6.0" github.com/google/pprof="v0.0.0-20250208200701-d0013a598941" github.com/gorilla/websocket="v1.5.3" github.com/hairyhenderson/go-codeowners="v0.7.0" github.com/hashicorp/golang-lru/v2="v2.0.7" github.com/jdkato/prose="v1.2.1" github.com/josharian/intern="v1.0.0" github.com/kr/pretty="v0.3.1" github.com/kr/text="v0.2.0" github.com/kyokomi/emoji/v2="v2.2.13" github.com/lucasb-eyer/go-colorful="v1.2.0" github.com/mailru/easyjson="v0.7.7" github.com/makeworld-the-better-one/dither/v2="v2.4.0" github.com/marekm4/color-extractor="v1.2.1" github.com/mattn/go-colorable="v0.1.13" github.com/mattn/go-isatty="v0.0.20" github.com/mattn/go-runewidth="v0.0.9" github.com/mazznoer/csscolorparser="v0.1.5" github.com/mitchellh/mapstructure="v1.5.1-0.20231216201459-8508981c8b6c" github.com/mohae/deepcopy="v0.0.0-20170929034955-c48cc78d4826" github.com/muesli/smartcrop="v0.3.0" github.com/niklasfasching/go-org="v1.7.0" github.com/oasdiff/yaml3="v0.0.0-20241210130736-a94c01f36349" github.com/oasdiff/yaml="v0.0.0-20241210131133-6b86fb107d80" github.com/olekukonko/tablewriter="v0.0.5" github.com/pbnjay/memory="v0.0.0-20210728143218-7b4eea64cf58" github.com/pelletier/go-toml/v2="v2.2.3" github.com/perimeterx/marshmallow="v1.1.5" github.com/pkg/browser="v0.0.0-20240102092130-5ac0b6a4141c" github.com/pkg/errors="v0.9.1" github.com/rivo/uniseg="v0.4.7" github.com/rogpeppe/go-internal="v1.13.1" github.com/russross/blackfriday/v2="v2.1.0" github.com/sass/libsass="3.6.6" github.com/spf13/afero="v1.11.0" github.com/spf13/cast="v1.7.1" github.com/spf13/cobra="v1.8.1" github.com/spf13/fsync="v0.10.1" github.com/spf13/pflag="v1.0.6" github.com/tdewolff/minify/v2="v2.20.37" github.com/tdewolff/parse/v2="v2.7.15" github.com/tetratelabs/wazero="v1.8.2" github.com/webmproject/libwebp="v1.3.2" github.com/yuin/goldmark-emoji="v1.0.4" github.com/yuin/goldmark="v1.7.8" go.uber.org/automaxprocs="v1.5.3" golang.org/x/crypto="v0.33.0" golang.org/x/exp="v0.0.0-20250210185358-939b2ce775ac" golang.org/x/image="v0.24.0" golang.org/x/mod="v0.23.0" golang.org/x/net="v0.35.0" golang.org/x/sync="v0.11.0" golang.org/x/sys="v0.30.0" golang.org/x/text="v0.22.0" golang.org/x/tools="v0.30.0" golang.org/x/xerrors="v0.0.0-20240903120638-7835f813f4da" gonum.org/v1/plot="v0.15.0" google.golang.org/protobuf="v1.36.5" gopkg.in/yaml.v2="v2.4.0" gopkg.in/yaml.v3="v3.0.1" oss.terrastruct.com/d2="v0.6.9" oss.terrastruct.com/util-go="v0.0.0-20241005222610-44c011a04896" rsc.io/qr="v0.2.0" software.sslmate.com/src/go-pkcs12="v0.2.0" ```
gohugoio-hugo-6abdaca/SECURITY.md000066400000000000000000000006771507671574500167410ustar00rootroot00000000000000## Security Policy ### Reporting a Vulnerability Please report (suspected) security vulnerabilities to **[bjorn.erik.pedersen@gmail.com](mailto:bjorn.erik.pedersen@gmail.com)**. You will receive a response from us within 48 hours. If we can confirm the issue, we will release a patch as soon as possible depending on the complexity of the issue but historically within days. Also see [Hugo's Security Model](https://gohugo.io/about/security/). gohugoio-hugo-6abdaca/bufferpool/000077500000000000000000000000001507671574500173015ustar00rootroot00000000000000gohugoio-hugo-6abdaca/bufferpool/bufpool.go000066400000000000000000000021141507671574500212740ustar00rootroot00000000000000// Copyright 2015 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package bufferpool provides a pool of bytes buffers. package bufferpool import ( "bytes" "sync" ) var bufferPool = &sync.Pool{ New: func() any { return &bytes.Buffer{} }, } // GetBuffer returns a buffer from the pool. func GetBuffer() (buf *bytes.Buffer) { return bufferPool.Get().(*bytes.Buffer) } // PutBuffer returns a buffer to the pool. // The buffer is reset before it is put back into circulation. func PutBuffer(buf *bytes.Buffer) { buf.Reset() bufferPool.Put(buf) } gohugoio-hugo-6abdaca/bufferpool/bufpool_test.go000066400000000000000000000016251507671574500223410ustar00rootroot00000000000000// Copyright 2016-present The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package bufferpool import ( "testing" qt "github.com/frankban/quicktest" ) func TestBufferPool(t *testing.T) { c := qt.New(t) buff := GetBuffer() buff.WriteString("do be do be do") c.Assert(buff.String(), qt.Equals, "do be do be do") PutBuffer(buff) c.Assert(buff.Len(), qt.Equals, 0) } gohugoio-hugo-6abdaca/cache/000077500000000000000000000000001507671574500162015ustar00rootroot00000000000000gohugoio-hugo-6abdaca/cache/docs.go000066400000000000000000000001151507671574500174550ustar00rootroot00000000000000// Package cache contains the different cache implementations. package cache gohugoio-hugo-6abdaca/cache/dynacache/000077500000000000000000000000001507671574500201205ustar00rootroot00000000000000gohugoio-hugo-6abdaca/cache/dynacache/dynacache.go000066400000000000000000000365061507671574500224000ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package dynacache import ( "context" "fmt" "math" "path" "regexp" "runtime" "sync" "time" "github.com/bep/lazycache" "github.com/bep/logg" "github.com/gohugoio/hugo/common/collections" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/rungroup" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources/resource" ) const minMaxSize = 10 type KeyIdentity struct { Key any Identity identity.Identity } // New creates a new cache. func New(opts Options) *Cache { if opts.CheckInterval == 0 { opts.CheckInterval = time.Second * 2 } if opts.MaxSize == 0 { opts.MaxSize = 100000 } if opts.Log == nil { panic("nil Log") } if opts.MinMaxSize == 0 { opts.MinMaxSize = 30 } stats := &stats{ opts: opts, adjustmentFactor: 1.0, currentMaxSize: opts.MaxSize, availableMemory: config.GetMemoryLimit(), } infol := opts.Log.InfoCommand("dynacache") evictedIdentities := collections.NewStack[KeyIdentity]() onEvict := func(k, v any) { if !opts.Watching { return } identity.WalkIdentitiesShallow(v, func(level int, id identity.Identity) bool { evictedIdentities.Push(KeyIdentity{Key: k, Identity: id}) return false }) resource.MarkStale(v) } c := &Cache{ partitions: make(map[string]PartitionManager), onEvict: onEvict, evictedIdentities: evictedIdentities, opts: opts, stats: stats, infol: infol, } c.stop = c.start() return c } // Options for the cache. type Options struct { Log loggers.Logger CheckInterval time.Duration MaxSize int MinMaxSize int Watching bool } // Options for a partition. type OptionsPartition struct { // When to clear the this partition. ClearWhen ClearWhen // Weight is a number between 1 and 100 that indicates how, in general, how big this partition may get. Weight int } func (o OptionsPartition) WeightFraction() float64 { return float64(o.Weight) / 100 } func (o OptionsPartition) CalculateMaxSize(maxSizePerPartition int) int { return int(math.Floor(float64(maxSizePerPartition) * o.WeightFraction())) } // A dynamic partitioned cache. type Cache struct { mu sync.RWMutex partitions map[string]PartitionManager onEvict func(k, v any) evictedIdentities *collections.Stack[KeyIdentity] opts Options infol logg.LevelLogger stats *stats stopOnce sync.Once stop func() } // DrainEvictedIdentities drains the evicted identities from the cache. func (c *Cache) DrainEvictedIdentities() []KeyIdentity { return c.evictedIdentities.Drain() } // DrainEvictedIdentitiesMatching drains the evicted identities from the cache that match the given predicate. func (c *Cache) DrainEvictedIdentitiesMatching(predicate func(KeyIdentity) bool) []KeyIdentity { return c.evictedIdentities.DrainMatching(predicate) } // ClearMatching clears all partition for which the predicate returns true. func (c *Cache) ClearMatching(predicatePartition func(k string, p PartitionManager) bool, predicateValue func(k, v any) bool) { if predicatePartition == nil { predicatePartition = func(k string, p PartitionManager) bool { return true } } if predicateValue == nil { panic("nil predicateValue") } g := rungroup.Run[PartitionManager](context.Background(), rungroup.Config[PartitionManager]{ NumWorkers: len(c.partitions), Handle: func(ctx context.Context, partition PartitionManager) error { partition.clearMatching(predicateValue) return nil }, }) for k, p := range c.partitions { if !predicatePartition(k, p) { continue } g.Enqueue(p) } g.Wait() } // ClearOnRebuild prepares the cache for a new rebuild taking the given changeset into account. // predicate is optional and will clear any entry for which it returns true. func (c *Cache) ClearOnRebuild(predicate func(k, v any) bool, changeset ...identity.Identity) { g := rungroup.Run[PartitionManager](context.Background(), rungroup.Config[PartitionManager]{ NumWorkers: len(c.partitions), Handle: func(ctx context.Context, partition PartitionManager) error { partition.clearOnRebuild(predicate, changeset...) return nil }, }) for _, p := range c.partitions { g.Enqueue(p) } g.Wait() // Clear any entries marked as stale above. g = rungroup.Run[PartitionManager](context.Background(), rungroup.Config[PartitionManager]{ NumWorkers: len(c.partitions), Handle: func(ctx context.Context, partition PartitionManager) error { partition.clearStale() return nil }, }) for _, p := range c.partitions { g.Enqueue(p) } g.Wait() } type keysProvider interface { Keys() []string } // Keys returns a list of keys in all partitions. func (c *Cache) Keys(predicate func(s string) bool) []string { if predicate == nil { predicate = func(s string) bool { return true } } var keys []string for pn, g := range c.partitions { pkeys := g.(keysProvider).Keys() for _, k := range pkeys { p := path.Join(pn, k) if predicate(p) { keys = append(keys, p) } } } return keys } func calculateMaxSizePerPartition(maxItemsTotal, totalWeightQuantity, numPartitions int) int { if numPartitions == 0 { panic("numPartitions must be > 0") } if totalWeightQuantity == 0 { panic("totalWeightQuantity must be > 0") } avgWeight := float64(totalWeightQuantity) / float64(numPartitions) return int(math.Floor(float64(maxItemsTotal) / float64(numPartitions) * (100.0 / avgWeight))) } // Stop stops the cache. func (c *Cache) Stop() { c.stopOnce.Do(func() { c.stop() }) } func (c *Cache) adjustCurrentMaxSize() { c.mu.RLock() defer c.mu.RUnlock() if len(c.partitions) == 0 { return } var m runtime.MemStats runtime.ReadMemStats(&m) s := c.stats s.memstatsCurrent = m // fmt.Printf("\n\nAvailable = %v\nAlloc = %v\nTotalAlloc = %v\nSys = %v\nNumGC = %v\nMaxSize = %d\nAdjustmentFactor=%f\n\n", helpers.FormatByteCount(s.availableMemory), helpers.FormatByteCount(m.Alloc), helpers.FormatByteCount(m.TotalAlloc), helpers.FormatByteCount(m.Sys), m.NumGC, c.stats.currentMaxSize, s.adjustmentFactor) if s.availableMemory >= s.memstatsCurrent.Alloc { if s.adjustmentFactor <= 1.0 { s.adjustmentFactor += 0.2 } } else { // We're low on memory. s.adjustmentFactor -= 0.4 } if s.adjustmentFactor <= 0 { s.adjustmentFactor = 0.05 } if !s.adjustCurrentMaxSize() { return } totalWeight := 0 for _, pm := range c.partitions { totalWeight += pm.getOptions().Weight } maxSizePerPartition := calculateMaxSizePerPartition(c.stats.currentMaxSize, totalWeight, len(c.partitions)) evicted := 0 for _, p := range c.partitions { evicted += p.adjustMaxSize(p.getOptions().CalculateMaxSize(maxSizePerPartition)) } if evicted > 0 { c.infol. WithFields( logg.Fields{ {Name: "evicted", Value: evicted}, {Name: "numGC", Value: m.NumGC}, {Name: "limit", Value: helpers.FormatByteCount(c.stats.availableMemory)}, {Name: "alloc", Value: helpers.FormatByteCount(m.Alloc)}, {Name: "totalAlloc", Value: helpers.FormatByteCount(m.TotalAlloc)}, }, ).Logf("adjusted partitions' max size") } } func (c *Cache) start() func() { ticker := time.NewTicker(c.opts.CheckInterval) quit := make(chan struct{}) go func() { for { select { case <-ticker.C: c.adjustCurrentMaxSize() // Reset the ticker to avoid drift. ticker.Reset(c.opts.CheckInterval) case <-quit: ticker.Stop() return } } }() return func() { close(quit) } } var partitionNameRe = regexp.MustCompile(`^\/[a-zA-Z0-9]{4}(\/[a-zA-Z0-9]+)?(\/[a-zA-Z0-9]+)?`) // GetOrCreatePartition gets or creates a partition with the given name. func GetOrCreatePartition[K comparable, V any](c *Cache, name string, opts OptionsPartition) *Partition[K, V] { if c == nil { panic("nil Cache") } if opts.Weight < 1 || opts.Weight > 100 { panic("invalid Weight, must be between 1 and 100") } if partitionNameRe.FindString(name) != name { panic(fmt.Sprintf("invalid partition name %q", name)) } c.mu.RLock() p, found := c.partitions[name] c.mu.RUnlock() if found { return p.(*Partition[K, V]) } c.mu.Lock() defer c.mu.Unlock() // Double check. p, found = c.partitions[name] if found { return p.(*Partition[K, V]) } // At this point, we don't know the number of partitions or their configuration, but // this will be re-adjusted later. const numberOfPartitionsEstimate = 10 maxSize := opts.CalculateMaxSize(c.opts.MaxSize / numberOfPartitionsEstimate) onEvict := func(k K, v V) { c.onEvict(k, v) } // Create a new partition and cache it. partition := &Partition[K, V]{ c: lazycache.New(lazycache.Options[K, V]{MaxEntries: maxSize, OnEvict: onEvict}), maxSize: maxSize, trace: c.opts.Log.Logger().WithLevel(logg.LevelTrace).WithField("partition", name), opts: opts, } c.partitions[name] = partition return partition } // Partition is a partition in the cache. type Partition[K comparable, V any] struct { c *lazycache.Cache[K, V] zero V trace logg.LevelLogger opts OptionsPartition maxSize int } // GetOrCreate gets or creates a value for the given key. func (p *Partition[K, V]) GetOrCreate(key K, create func(key K) (V, error)) (V, error) { v, err := p.doGetOrCreate(key, create) if err != nil { return p.zero, err } if resource.StaleVersion(v) > 0 { p.c.Delete(key) return p.doGetOrCreate(key, create) } return v, err } func (p *Partition[K, V]) doGetOrCreate(key K, create func(key K) (V, error)) (V, error) { v, _, err := p.c.GetOrCreate(key, create) return v, err } func (p *Partition[K, V]) GetOrCreateWitTimeout(key K, duration time.Duration, create func(key K) (V, error)) (V, error) { v, err := p.doGetOrCreateWitTimeout(key, duration, create) if err != nil { return p.zero, err } if resource.StaleVersion(v) > 0 { p.c.Delete(key) return p.doGetOrCreateWitTimeout(key, duration, create) } return v, err } // GetOrCreateWitTimeout gets or creates a value for the given key and times out if the create function // takes too long. func (p *Partition[K, V]) doGetOrCreateWitTimeout(key K, duration time.Duration, create func(key K) (V, error)) (V, error) { resultch := make(chan V, 1) errch := make(chan error, 1) go func() { var ( v V err error ) defer func() { if r := recover(); r != nil { if rerr, ok := r.(error); ok { err = rerr } else { err = fmt.Errorf("panic: %v", r) } } if err != nil { errch <- err } else { resultch <- v } }() v, _, err = p.c.GetOrCreate(key, create) }() select { case v := <-resultch: return v, nil case err := <-errch: return p.zero, err case <-time.After(duration): return p.zero, &herrors.TimeoutError{ Duration: duration, } } } func (p *Partition[K, V]) clearMatching(predicate func(k, v any) bool) { p.c.DeleteFunc(func(key K, v V) bool { if predicate(key, v) { p.trace.Log( logg.StringFunc( func() string { return fmt.Sprintf("clearing cache key %v", key) }, ), ) return true } return false }) } func (p *Partition[K, V]) clearOnRebuild(predicate func(k, v any) bool, changeset ...identity.Identity) { if predicate == nil { predicate = func(k, v any) bool { return false } } opts := p.getOptions() if opts.ClearWhen == ClearNever { return } if opts.ClearWhen == ClearOnRebuild { // Clear all. p.Clear() return } depsFinder := identity.NewFinder(identity.FinderConfig{}) shouldDelete := func(key K, v V) bool { // We always clear elements marked as stale. if resource.StaleVersion(v) > 0 { return true } // Now check if this entry has changed based on the changeset // based on filesystem events. if len(changeset) == 0 { // Nothing changed. return false } var probablyDependent bool identity.WalkIdentitiesShallow(v, func(level int, id2 identity.Identity) bool { for _, id := range changeset { if r := depsFinder.Contains(id, id2, -1); r > 0 { // It's probably dependent, evict from cache. probablyDependent = true return true } } return false }) return probablyDependent } // First pass. // Second pass needs to be done in a separate loop to catch any // elements marked as stale in the other partitions. p.c.DeleteFunc(func(key K, v V) bool { if predicate(key, v) || shouldDelete(key, v) { p.trace.Log( logg.StringFunc( func() string { return fmt.Sprintf("first pass: clearing cache key %v", key) }, ), ) return true } return false }) } func (p *Partition[K, V]) Keys() []K { var keys []K p.c.DeleteFunc(func(key K, v V) bool { keys = append(keys, key) return false }) return keys } func (p *Partition[K, V]) clearStale() { p.c.DeleteFunc(func(key K, v V) bool { staleVersion := resource.StaleVersion(v) if staleVersion > 0 { p.trace.Log( logg.StringFunc( func() string { return fmt.Sprintf("second pass: clearing cache key %v", key) }, ), ) } return staleVersion > 0 }) } // adjustMaxSize adjusts the max size of the and returns the number of items evicted. func (p *Partition[K, V]) adjustMaxSize(newMaxSize int) int { if newMaxSize < minMaxSize { newMaxSize = minMaxSize } oldMaxSize := p.maxSize if newMaxSize == oldMaxSize { return 0 } p.maxSize = newMaxSize // fmt.Println("Adjusting max size of partition from", oldMaxSize, "to", newMaxSize) return p.c.Resize(newMaxSize) } func (p *Partition[K, V]) getMaxSize() int { return p.maxSize } func (p *Partition[K, V]) getOptions() OptionsPartition { return p.opts } func (p *Partition[K, V]) Clear() { p.c.DeleteFunc(func(key K, v V) bool { return true }) } func (p *Partition[K, V]) Get(ctx context.Context, key K) (V, bool) { return p.c.Get(key) } type PartitionManager interface { adjustMaxSize(addend int) int getMaxSize() int getOptions() OptionsPartition clearOnRebuild(predicate func(k, v any) bool, changeset ...identity.Identity) clearMatching(predicate func(k, v any) bool) clearStale() } const ( ClearOnRebuild ClearWhen = iota + 1 ClearOnChange ClearNever ) type ClearWhen int type stats struct { opts Options memstatsCurrent runtime.MemStats currentMaxSize int availableMemory uint64 adjustmentFactor float64 } func (s *stats) adjustCurrentMaxSize() bool { newCurrentMaxSize := int(math.Floor(float64(s.opts.MaxSize) * s.adjustmentFactor)) if newCurrentMaxSize < s.opts.MinMaxSize { newCurrentMaxSize = int(s.opts.MinMaxSize) } changed := newCurrentMaxSize != s.currentMaxSize s.currentMaxSize = newCurrentMaxSize return changed } // CleanKey turns s into a format suitable for a cache key for this package. // The key will be a Unix-styled path with a leading slash but no trailing slash. func CleanKey(s string) string { return path.Clean(paths.ToSlashPreserveLeading(s)) } gohugoio-hugo-6abdaca/cache/dynacache/dynacache_test.go000066400000000000000000000136101507671574500234260ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package dynacache import ( "errors" "fmt" "path/filepath" "testing" "time" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources/resource" ) var ( _ resource.StaleInfo = (*testItem)(nil) _ identity.Identity = (*testItem)(nil) ) type testItem struct { name string staleVersion uint32 } func (t testItem) StaleVersion() uint32 { return t.staleVersion } func (t testItem) IdentifierBase() string { return t.name } func TestCache(t *testing.T) { t.Parallel() c := qt.New(t) cache := New(Options{ Log: loggers.NewDefault(), }) c.Cleanup(func() { cache.Stop() }) opts := OptionsPartition{Weight: 30} c.Assert(cache, qt.Not(qt.IsNil)) p1 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", opts) c.Assert(p1, qt.Not(qt.IsNil)) p2 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", opts) c.Assert(func() { GetOrCreatePartition[string, testItem](cache, "foo bar", opts) }, qt.PanicMatches, ".*invalid partition name.*") c.Assert(func() { GetOrCreatePartition[string, testItem](cache, "/aaaa/cccc", OptionsPartition{Weight: 1234}) }, qt.PanicMatches, ".*invalid Weight.*") c.Assert(p2, qt.Equals, p1) p3 := GetOrCreatePartition[string, testItem](cache, "/aaaa/cccc", opts) c.Assert(p3, qt.Not(qt.IsNil)) c.Assert(p3, qt.Not(qt.Equals), p1) c.Assert(func() { New(Options{}) }, qt.PanicMatches, ".*nil Log.*") } func TestCalculateMaxSizePerPartition(t *testing.T) { t.Parallel() c := qt.New(t) c.Assert(calculateMaxSizePerPartition(1000, 500, 5), qt.Equals, 200) c.Assert(calculateMaxSizePerPartition(1000, 250, 5), qt.Equals, 400) c.Assert(func() { calculateMaxSizePerPartition(1000, 250, 0) }, qt.PanicMatches, ".*must be > 0.*") c.Assert(func() { calculateMaxSizePerPartition(1000, 0, 1) }, qt.PanicMatches, ".*must be > 0.*") } func TestCleanKey(t *testing.T) { c := qt.New(t) c.Assert(CleanKey("a/b/c"), qt.Equals, "/a/b/c") c.Assert(CleanKey("/a/b/c"), qt.Equals, "/a/b/c") c.Assert(CleanKey("a/b/c/"), qt.Equals, "/a/b/c") c.Assert(CleanKey(filepath.FromSlash("/a/b/c/")), qt.Equals, "/a/b/c") } func newTestCache(t *testing.T) *Cache { cache := New( Options{ Log: loggers.NewDefault(), }, ) p1 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", OptionsPartition{Weight: 30, ClearWhen: ClearOnRebuild}) p2 := GetOrCreatePartition[string, testItem](cache, "/aaaa/cccc", OptionsPartition{Weight: 30, ClearWhen: ClearOnChange}) p1.GetOrCreate("clearOnRebuild", func(string) (testItem, error) { return testItem{}, nil }) p2.GetOrCreate("clearBecauseStale", func(string) (testItem, error) { return testItem{ staleVersion: 32, }, nil }) p2.GetOrCreate("clearBecauseIdentityChanged", func(string) (testItem, error) { return testItem{ name: "changed", }, nil }) p2.GetOrCreate("clearNever", func(string) (testItem, error) { return testItem{ staleVersion: 0, }, nil }) t.Cleanup(func() { cache.Stop() }) return cache } func TestClear(t *testing.T) { t.Parallel() c := qt.New(t) predicateAll := func(string) bool { return true } cache := newTestCache(t) c.Assert(cache.Keys(predicateAll), qt.HasLen, 4) cache.ClearOnRebuild(nil) // Stale items are always cleared. c.Assert(cache.Keys(predicateAll), qt.HasLen, 2) cache = newTestCache(t) cache.ClearOnRebuild(nil, identity.StringIdentity("changed")) c.Assert(cache.Keys(nil), qt.HasLen, 1) cache = newTestCache(t) cache.ClearMatching(nil, func(k, v any) bool { return k.(string) == "clearOnRebuild" }) c.Assert(cache.Keys(predicateAll), qt.HasLen, 3) cache.adjustCurrentMaxSize() } func TestPanicInCreate(t *testing.T) { t.Parallel() c := qt.New(t) cache := newTestCache(t) p1 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", OptionsPartition{Weight: 30, ClearWhen: ClearOnRebuild}) willPanic := func(i int) func() { return func() { p1.GetOrCreate(fmt.Sprintf("panic-%d", i), func(key string) (testItem, error) { panic(errors.New(key)) }) } } // GetOrCreateWitTimeout needs to recover from panics in the create func. willErr := func(i int) error { _, err := p1.GetOrCreateWitTimeout(fmt.Sprintf("error-%d", i), 10*time.Second, func(key string) (testItem, error) { return testItem{}, errors.New(key) }) return err } for i := range 3 { for range 3 { c.Assert(willPanic(i), qt.PanicMatches, fmt.Sprintf("panic-%d", i)) c.Assert(willErr(i), qt.ErrorMatches, fmt.Sprintf("error-%d", i)) } } // Test the same keys again without the panic. for i := range 3 { for range 3 { v, err := p1.GetOrCreate(fmt.Sprintf("panic-%d", i), func(key string) (testItem, error) { return testItem{ name: key, }, nil }) c.Assert(err, qt.IsNil) c.Assert(v.name, qt.Equals, fmt.Sprintf("panic-%d", i)) v, err = p1.GetOrCreateWitTimeout(fmt.Sprintf("error-%d", i), 10*time.Second, func(key string) (testItem, error) { return testItem{ name: key, }, nil }) c.Assert(err, qt.IsNil) c.Assert(v.name, qt.Equals, fmt.Sprintf("error-%d", i)) } } } func TestAdjustCurrentMaxSize(t *testing.T) { t.Parallel() c := qt.New(t) cache := newTestCache(t) alloc := cache.stats.memstatsCurrent.Alloc cache.adjustCurrentMaxSize() c.Assert(cache.stats.memstatsCurrent.Alloc, qt.Not(qt.Equals), alloc) } gohugoio-hugo-6abdaca/cache/filecache/000077500000000000000000000000001507671574500201045ustar00rootroot00000000000000gohugoio-hugo-6abdaca/cache/filecache/filecache.go000066400000000000000000000243131507671574500223410ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package filecache import ( "bytes" "errors" "io" "os" "path/filepath" "strings" "sync" "time" "github.com/gohugoio/httpcache" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/helpers" "github.com/BurntSushi/locker" "github.com/spf13/afero" ) // ErrFatal can be used to signal an unrecoverable error. var ErrFatal = errors.New("fatal filecache error") const ( FilecacheRootDirname = "filecache" ) // Cache caches a set of files in a directory. This is usually a file on // disk, but since this is backed by an Afero file system, it can be anything. type Cache struct { Fs afero.Fs // Max age for items in this cache. Negative duration means forever, // 0 is effectively turning this cache off. maxAge time.Duration // When set, we just remove this entire root directory on expiration. pruneAllRootDir string nlocker *lockTracker initOnce sync.Once initErr error } type lockTracker struct { seenMu sync.RWMutex seen map[string]struct{} *locker.Locker } // Lock tracks the ids in use. We use this information to do garbage collection // after a Hugo build. func (l *lockTracker) Lock(id string) { l.seenMu.RLock() if _, seen := l.seen[id]; !seen { l.seenMu.RUnlock() l.seenMu.Lock() l.seen[id] = struct{}{} l.seenMu.Unlock() } else { l.seenMu.RUnlock() } l.Locker.Lock(id) } // ItemInfo contains info about a cached file. type ItemInfo struct { // This is the file's name relative to the cache's filesystem. Name string } // NewCache creates a new file cache with the given filesystem and max age. func NewCache(fs afero.Fs, maxAge time.Duration, pruneAllRootDir string) *Cache { return &Cache{ Fs: fs, nlocker: &lockTracker{Locker: locker.NewLocker(), seen: make(map[string]struct{})}, maxAge: maxAge, pruneAllRootDir: pruneAllRootDir, } } // lockedFile is a file with a lock that is released on Close. type lockedFile struct { afero.File unlock func() } func (l *lockedFile) Close() error { defer l.unlock() return l.File.Close() } func (c *Cache) init() error { c.initOnce.Do(func() { // Create the base dir if it does not exist. if err := c.Fs.MkdirAll("", 0o777); err != nil && !os.IsExist(err) { c.initErr = err } }) return c.initErr } // WriteCloser returns a transactional writer into the cache. // It's important that it's closed when done. func (c *Cache) WriteCloser(id string) (ItemInfo, io.WriteCloser, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) info := ItemInfo{Name: id} f, err := helpers.OpenFileForWriting(c.Fs, id) if err != nil { c.nlocker.Unlock(id) return info, nil, err } return info, &lockedFile{ File: f, unlock: func() { c.nlocker.Unlock(id) }, }, nil } // ReadOrCreate tries to lookup the file in cache. // If found, it is passed to read and then closed. // If not found a new file is created and passed to create, which should close // it when done. func (c *Cache) ReadOrCreate(id string, read func(info ItemInfo, r io.ReadSeeker) error, create func(info ItemInfo, w io.WriteCloser) error, ) (info ItemInfo, err error) { if err := c.init(); err != nil { return ItemInfo{}, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info = ItemInfo{Name: id} if r := c.getOrRemove(id); r != nil { err = read(info, r) defer r.Close() if err == nil || err == ErrFatal { // See https://github.com/gohugoio/hugo/issues/6401 // To recover from file corruption we handle read errors // as the cache item was not found. // Any file permission issue will also fail in the next step. return } } f, err := helpers.OpenFileForWriting(c.Fs, id) if err != nil { return } err = create(info, f) return } // NamedLock locks the given id. The lock is released when the returned function is called. func (c *Cache) NamedLock(id string) func() { id = cleanID(id) c.nlocker.Lock(id) return func() { c.nlocker.Unlock(id) } } // GetOrCreate tries to get the file with the given id from cache. If not found or expired, create will // be invoked and the result cached. // This method is protected by a named lock using the given id as identifier. func (c *Cache) GetOrCreate(id string, create func() (io.ReadCloser, error)) (ItemInfo, io.ReadCloser, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info := ItemInfo{Name: id} if r := c.getOrRemove(id); r != nil { return info, r, nil } var ( r io.ReadCloser err error ) r, err = create() if err != nil { return info, nil, err } if c.maxAge == 0 { // No caching. return info, hugio.ToReadCloser(r), nil } var buff bytes.Buffer return info, hugio.ToReadCloser(&buff), c.writeReader(id, io.TeeReader(r, &buff)) } func (c *Cache) writeReader(id string, r io.Reader) error { dir := filepath.Dir(id) if dir != "" { _ = c.Fs.MkdirAll(dir, 0o777) } f, err := c.Fs.Create(id) if err != nil { return err } defer f.Close() _, _ = io.Copy(f, r) return nil } // GetOrCreateBytes is the same as GetOrCreate, but produces a byte slice. func (c *Cache) GetOrCreateBytes(id string, create func() ([]byte, error)) (ItemInfo, []byte, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info := ItemInfo{Name: id} if r := c.getOrRemove(id); r != nil { defer r.Close() b, err := io.ReadAll(r) return info, b, err } var ( b []byte err error ) b, err = create() if err != nil { return info, nil, err } if c.maxAge == 0 { return info, b, nil } if err := c.writeReader(id, bytes.NewReader(b)); err != nil { return info, nil, err } return info, b, nil } // GetBytes gets the file content with the given id from the cache, nil if none found. func (c *Cache) GetBytes(id string) (ItemInfo, []byte, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info := ItemInfo{Name: id} if r := c.getOrRemove(id); r != nil { defer r.Close() b, err := io.ReadAll(r) return info, b, err } return info, nil, nil } // Get gets the file with the given id from the cache, nil if none found. func (c *Cache) Get(id string) (ItemInfo, io.ReadCloser, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info := ItemInfo{Name: id} r := c.getOrRemove(id) return info, r, nil } // getOrRemove gets the file with the given id. If it's expired, it will // be removed. func (c *Cache) getOrRemove(id string) hugio.ReadSeekCloser { if c.maxAge == 0 { // No caching. return nil } if removed, err := c.removeIfExpired(id); err != nil || removed { return nil } f, err := c.Fs.Open(id) if err != nil { return nil } return f } func (c *Cache) getBytesAndRemoveIfExpired(id string) ([]byte, bool) { if c.maxAge == 0 { // No caching. return nil, false } f, err := c.Fs.Open(id) if err != nil { return nil, false } defer f.Close() b, err := io.ReadAll(f) if err != nil { return nil, false } removed, err := c.removeIfExpired(id) if err != nil { return nil, false } return b, removed } func (c *Cache) removeIfExpired(id string) (bool, error) { if c.maxAge <= 0 { return false, nil } fi, err := c.Fs.Stat(id) if err != nil { return false, err } if c.isExpired(fi.ModTime()) { c.Fs.Remove(id) return true, nil } return false, nil } func (c *Cache) isExpired(modTime time.Time) bool { if c.maxAge < 0 { return false } // Note the use of time.Since here. // We cannot use Hugo's global Clock for this. return c.maxAge == 0 || time.Since(modTime) > c.maxAge } // For testing func (c *Cache) GetString(id string) string { id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) f, err := c.Fs.Open(id) if err != nil { return "" } defer f.Close() b, _ := io.ReadAll(f) return string(b) } // Caches is a named set of caches. type Caches map[string]*Cache // Get gets a named cache, nil if none found. func (f Caches) Get(name string) *Cache { return f[strings.ToLower(name)] } // NewCaches creates a new set of file caches from the given // configuration. func NewCaches(p *helpers.PathSpec) (Caches, error) { dcfg := p.Cfg.GetConfigSection("caches").(Configs) fs := p.Fs.Source m := make(Caches) for k, v := range dcfg { var cfs afero.Fs if v.IsResourceDir { cfs = p.BaseFs.ResourcesCache } else { cfs = fs } if cfs == nil { panic("nil fs") } baseDir := v.DirCompiled bfs := hugofs.NewBasePathFs(cfs, baseDir) var pruneAllRootDir string if k == CacheKeyModules { pruneAllRootDir = "pkg" } m[k] = NewCache(bfs, v.MaxAge, pruneAllRootDir) } return m, nil } func cleanID(name string) string { return strings.TrimPrefix(filepath.Clean(name), helpers.FilePathSeparator) } // AsHTTPCache returns an httpcache.Cache implementation for this file cache. // Note that none of the methods are protected by named locks, so you need to make sure // to do that in your own code. func (c *Cache) AsHTTPCache() httpcache.Cache { return &httpCache{c: c} } type httpCache struct { c *Cache } func (h *httpCache) Get(id string) (resp []byte, ok bool) { id = cleanID(id) b, removed := h.c.getBytesAndRemoveIfExpired(id) return b, !removed } func (h *httpCache) Set(id string, resp []byte) { if h.c.maxAge == 0 { return } id = cleanID(id) if err := h.c.writeReader(id, bytes.NewReader(resp)); err != nil { panic(err) } } func (h *httpCache) Delete(key string) { h.c.Fs.Remove(key) } gohugoio-hugo-6abdaca/cache/filecache/filecache_config.go000066400000000000000000000147211507671574500236700ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package filecache provides a file based cache for Hugo. package filecache import ( "errors" "fmt" "path" "path/filepath" "strings" "time" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config" "github.com/mitchellh/mapstructure" "github.com/spf13/afero" ) const ( resourcesGenDir = ":resourceDir/_gen" cacheDirProject = ":cacheDir/:project" ) var defaultCacheConfig = FileCacheConfig{ MaxAge: -1, // Never expire Dir: cacheDirProject, } const ( CacheKeyGetJSON = "getjson" CacheKeyGetCSV = "getcsv" CacheKeyImages = "images" CacheKeyAssets = "assets" CacheKeyModules = "modules" CacheKeyGetResource = "getresource" CacheKeyMisc = "misc" ) type Configs map[string]FileCacheConfig // For internal use. func (c Configs) CacheDirModules() string { return c[CacheKeyModules].DirCompiled } var defaultCacheConfigs = Configs{ CacheKeyModules: { MaxAge: -1, Dir: ":cacheDir/modules", }, CacheKeyGetJSON: defaultCacheConfig, CacheKeyGetCSV: defaultCacheConfig, CacheKeyImages: { MaxAge: -1, Dir: resourcesGenDir, }, CacheKeyAssets: { MaxAge: -1, Dir: resourcesGenDir, }, CacheKeyGetResource: { MaxAge: -1, // Never expire Dir: cacheDirProject, }, CacheKeyMisc: { MaxAge: -1, Dir: cacheDirProject, }, } type FileCacheConfig struct { // Max age of cache entries in this cache. Any items older than this will // be removed and not returned from the cache. // A negative value means forever, 0 means cache is disabled. // Hugo is lenient with what types it accepts here, but we recommend using // a duration string, a sequence of decimal numbers, each with optional fraction and a unit suffix, // such as "300ms", "1.5h" or "2h45m". // Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". MaxAge time.Duration // The directory where files are stored. Dir string DirCompiled string `json:"-"` // Will resources/_gen will get its own composite filesystem that // also checks any theme. IsResourceDir bool `json:"-"` } // GetJSONCache gets the file cache for getJSON. func (f Caches) GetJSONCache() *Cache { return f[CacheKeyGetJSON] } // GetCSVCache gets the file cache for getCSV. func (f Caches) GetCSVCache() *Cache { return f[CacheKeyGetCSV] } // ImageCache gets the file cache for processed images. func (f Caches) ImageCache() *Cache { return f[CacheKeyImages] } // ModulesCache gets the file cache for Hugo Modules. func (f Caches) ModulesCache() *Cache { return f[CacheKeyModules] } // AssetsCache gets the file cache for assets (processed resources, SCSS etc.). func (f Caches) AssetsCache() *Cache { return f[CacheKeyAssets] } // MiscCache gets the file cache for miscellaneous stuff. func (f Caches) MiscCache() *Cache { return f[CacheKeyMisc] } // GetResourceCache gets the file cache for remote resources. func (f Caches) GetResourceCache() *Cache { return f[CacheKeyGetResource] } func DecodeConfig(fs afero.Fs, bcfg config.BaseConfig, m map[string]any) (Configs, error) { c := make(Configs) valid := make(map[string]bool) // Add defaults for k, v := range defaultCacheConfigs { c[k] = v valid[k] = true } _, isOsFs := fs.(*afero.OsFs) for k, v := range m { if _, ok := v.(maps.Params); !ok { continue } cc := defaultCacheConfig dc := &mapstructure.DecoderConfig{ Result: &cc, DecodeHook: mapstructure.StringToTimeDurationHookFunc(), WeaklyTypedInput: true, } decoder, err := mapstructure.NewDecoder(dc) if err != nil { return c, err } if err := decoder.Decode(v); err != nil { return nil, fmt.Errorf("failed to decode filecache config: %w", err) } if cc.Dir == "" { return c, errors.New("must provide cache Dir") } name := strings.ToLower(k) if !valid[name] { return nil, fmt.Errorf("%q is not a valid cache name", name) } c[name] = cc } for k, v := range c { dir := filepath.ToSlash(filepath.Clean(v.Dir)) hadSlash := strings.HasPrefix(dir, "/") parts := strings.Split(dir, "/") for i, part := range parts { if strings.HasPrefix(part, ":") { resolved, isResource, err := resolveDirPlaceholder(fs, bcfg, part) if err != nil { return c, err } if isResource { v.IsResourceDir = true } parts[i] = resolved } } dir = path.Join(parts...) if hadSlash { dir = "/" + dir } v.DirCompiled = filepath.Clean(filepath.FromSlash(dir)) if !v.IsResourceDir { if isOsFs && !filepath.IsAbs(v.DirCompiled) { return c, fmt.Errorf("%q must resolve to an absolute directory", v.DirCompiled) } // Avoid cache in root, e.g. / (Unix) or c:\ (Windows) if len(strings.TrimPrefix(v.DirCompiled, filepath.VolumeName(v.DirCompiled))) == 1 { return c, fmt.Errorf("%q is a root folder and not allowed as cache dir", v.DirCompiled) } } if !strings.HasPrefix(v.DirCompiled, "_gen") { // We do cache eviction (file removes) and since the user can set // his/hers own cache directory, we really want to make sure // we do not delete any files that do not belong to this cache. // We do add the cache name as the root, but this is an extra safe // guard. We skip the files inside /resources/_gen/ because // that would be breaking. v.DirCompiled = filepath.Join(v.DirCompiled, FilecacheRootDirname, k) } else { v.DirCompiled = filepath.Join(v.DirCompiled, k) } c[k] = v } return c, nil } // Resolves :resourceDir => /myproject/resources etc., :cacheDir => ... func resolveDirPlaceholder(fs afero.Fs, bcfg config.BaseConfig, placeholder string) (cacheDir string, isResource bool, err error) { switch strings.ToLower(placeholder) { case ":resourcedir": return "", true, nil case ":cachedir": return bcfg.CacheDir, false, nil case ":project": return filepath.Base(bcfg.WorkingDir), false, nil } return "", false, fmt.Errorf("%q is not a valid placeholder (valid values are :cacheDir or :resourceDir)", placeholder) } gohugoio-hugo-6abdaca/cache/filecache/filecache_config_test.go000066400000000000000000000073001507671574500247220ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package filecache_test import ( "path/filepath" "runtime" "testing" "time" "github.com/spf13/afero" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/testconfig" qt "github.com/frankban/quicktest" ) func TestDecodeConfig(t *testing.T) { t.Parallel() c := qt.New(t) configStr := ` resourceDir = "myresources" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archetypeDir = "archetypes" [caches] [caches.getJSON] maxAge = "10m" dir = "/path/to/c1" [caches.getCSV] maxAge = "11h" dir = "/path/to/c2" [caches.images] dir = "/path/to/c3" [caches.getResource] dir = "/path/to/c4" ` cfg, err := config.FromConfigString(configStr, "toml") c.Assert(err, qt.IsNil) fs := afero.NewMemMapFs() decoded := testconfig.GetTestConfigs(fs, cfg).Base.Caches c.Assert(len(decoded), qt.Equals, 7) c2 := decoded["getcsv"] c.Assert(c2.MaxAge.String(), qt.Equals, "11h0m0s") c.Assert(c2.DirCompiled, qt.Equals, filepath.FromSlash("/path/to/c2/filecache/getcsv")) c3 := decoded["images"] c.Assert(c3.MaxAge, qt.Equals, time.Duration(-1)) c.Assert(c3.DirCompiled, qt.Equals, filepath.FromSlash("/path/to/c3/filecache/images")) c4 := decoded["getresource"] c.Assert(c4.MaxAge, qt.Equals, time.Duration(-1)) c.Assert(c4.DirCompiled, qt.Equals, filepath.FromSlash("/path/to/c4/filecache/getresource")) } func TestDecodeConfigIgnoreCache(t *testing.T) { t.Parallel() c := qt.New(t) configStr := ` resourceDir = "myresources" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archeTypedir = "archetypes" ignoreCache = true [caches] [caches.getJSON] maxAge = 1234 dir = "/path/to/c1" [caches.getCSV] maxAge = 3456 dir = "/path/to/c2" [caches.images] dir = "/path/to/c3" [caches.getResource] dir = "/path/to/c4" ` cfg, err := config.FromConfigString(configStr, "toml") c.Assert(err, qt.IsNil) fs := afero.NewMemMapFs() decoded := testconfig.GetTestConfigs(fs, cfg).Base.Caches c.Assert(len(decoded), qt.Equals, 7) for _, v := range decoded { c.Assert(v.MaxAge, qt.Equals, time.Duration(0)) } } func TestDecodeConfigDefault(t *testing.T) { c := qt.New(t) cfg := config.New() if runtime.GOOS == "windows" { cfg.Set("resourceDir", "c:\\cache\\resources") cfg.Set("cacheDir", "c:\\cache\\thecache") } else { cfg.Set("resourceDir", "/cache/resources") cfg.Set("cacheDir", "/cache/thecache") } cfg.Set("workingDir", filepath.FromSlash("/my/cool/hugoproject")) fs := afero.NewMemMapFs() decoded := testconfig.GetTestConfigs(fs, cfg).Base.Caches c.Assert(len(decoded), qt.Equals, 7) imgConfig := decoded[filecache.CacheKeyImages] jsonConfig := decoded[filecache.CacheKeyGetJSON] if runtime.GOOS == "windows" { c.Assert(imgConfig.DirCompiled, qt.Equals, filepath.FromSlash("_gen/images")) } else { c.Assert(imgConfig.DirCompiled, qt.Equals, "_gen/images") c.Assert(jsonConfig.DirCompiled, qt.Equals, "/cache/thecache/hugoproject/filecache/getjson") } c.Assert(imgConfig.IsResourceDir, qt.Equals, true) c.Assert(jsonConfig.IsResourceDir, qt.Equals, false) } gohugoio-hugo-6abdaca/cache/filecache/filecache_integration_test.go000066400000000000000000000055771507671574500260160ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package filecache_test import ( "path/filepath" "testing" "time" "github.com/bep/logg" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/htesting" "github.com/gohugoio/hugo/hugolib" ) // See issue #10781. That issue wouldn't have been triggered if we kept // the empty root directories (e.g. _resources/gen/images). // It's still an upstream Go issue that we also need to handle, but // this is a test for the first part. func TestPruneShouldPreserveEmptyCacheRoots(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" -- content/_index.md -- --- title: "Home" --- ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{T: t, TxtarString: files, RunGC: true, NeedsOsFS: true}, ).Build() _, err := b.H.BaseFs.ResourcesCache.Stat(filepath.Join("_gen", "images")) b.Assert(err, qt.IsNil) } func TestPruneImages(t *testing.T) { if htesting.IsCI() { // TODO(bep) t.Skip("skip flaky test on CI server") } t.Skip("skip flaky test") files := ` -- hugo.toml -- baseURL = "https://example.com" [caches] [caches.images] maxAge = "200ms" dir = ":resourceDir/_gen" -- content/_index.md -- --- title: "Home" --- -- assets/a/pixel.png -- iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg== -- layouts/index.html -- {{ warnf "HOME!" }} {{ $img := resources.GetMatch "**.png" }} {{ $img = $img.Resize "3x3" }} {{ $img.RelPermalink }} ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{T: t, TxtarString: files, Running: true, RunGC: true, NeedsOsFS: true, LogLevel: logg.LevelInfo}, ).Build() b.Assert(b.GCCount, qt.Equals, 0) b.Assert(b.H, qt.IsNotNil) imagesCacheDir := filepath.Join("_gen", "images") _, err := b.H.BaseFs.ResourcesCache.Stat(imagesCacheDir) b.Assert(err, qt.IsNil) // TODO(bep) we need a way to test full rebuilds. // For now, just sleep a little so the cache elements expires. time.Sleep(500 * time.Millisecond) b.RenameFile("assets/a/pixel.png", "assets/b/pixel2.png").Build() b.Assert(b.GCCount, qt.Equals, 1) // Build it again to GC the empty a dir. b.Build() _, err = b.H.BaseFs.ResourcesCache.Stat(filepath.Join(imagesCacheDir, "a")) b.Assert(err, qt.Not(qt.IsNil)) _, err = b.H.BaseFs.ResourcesCache.Stat(imagesCacheDir) b.Assert(err, qt.IsNil) } gohugoio-hugo-6abdaca/cache/filecache/filecache_pruner.go000066400000000000000000000057041507671574500237370ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package filecache import ( "fmt" "io" "os" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/hugofs" "github.com/spf13/afero" ) // Prune removes expired and unused items from this cache. // The last one requires a full build so the cache usage can be tracked. // Note that we operate directly on the filesystem here, so this is not // thread safe. func (c Caches) Prune() (int, error) { counter := 0 for k, cache := range c { count, err := cache.Prune(false) counter += count if err != nil { if herrors.IsNotExist(err) { continue } return counter, fmt.Errorf("failed to prune cache %q: %w", k, err) } } return counter, nil } // Prune removes expired and unused items from this cache. // If force is set, everything will be removed not considering expiry time. func (c *Cache) Prune(force bool) (int, error) { if c.pruneAllRootDir != "" { return c.pruneRootDir(force) } if err := c.init(); err != nil { return 0, err } counter := 0 err := afero.Walk(c.Fs, "", func(name string, info os.FileInfo, err error) error { if info == nil { return nil } name = cleanID(name) if info.IsDir() { f, err := c.Fs.Open(name) if err != nil { // This cache dir may not exist. return nil } _, err = f.Readdirnames(1) f.Close() if err == io.EOF { // Empty dir. if name == "." { // e.g. /_gen/images -- keep it even if empty. err = nil } else { err = c.Fs.Remove(name) } } if err != nil && !herrors.IsNotExist(err) { return err } return nil } shouldRemove := force || c.isExpired(info.ModTime()) if !shouldRemove && len(c.nlocker.seen) > 0 { // Remove it if it's not been touched/used in the last build. _, seen := c.nlocker.seen[name] shouldRemove = !seen } if shouldRemove { err := c.Fs.Remove(name) if err == nil { counter++ } if err != nil && !herrors.IsNotExist(err) { return err } } return nil }) return counter, err } func (c *Cache) pruneRootDir(force bool) (int, error) { if err := c.init(); err != nil { return 0, err } info, err := c.Fs.Stat(c.pruneAllRootDir) if err != nil { if herrors.IsNotExist(err) { return 0, nil } return 0, err } if !force && !c.isExpired(info.ModTime()) { return 0, nil } return hugofs.MakeReadableAndRemoveAllModulePkgDir(c.Fs, c.pruneAllRootDir) } gohugoio-hugo-6abdaca/cache/filecache/filecache_pruner_test.go000066400000000000000000000050651507671574500247760ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package filecache_test import ( "fmt" "testing" "time" "github.com/gohugoio/hugo/cache/filecache" "github.com/spf13/afero" qt "github.com/frankban/quicktest" ) func TestPrune(t *testing.T) { t.Parallel() c := qt.New(t) configStr := ` resourceDir = "myresources" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archeTypedir = "archetypes" [caches] [caches.getjson] maxAge = "200ms" dir = "/cache/c" [caches.getcsv] maxAge = "200ms" dir = "/cache/d" [caches.assets] maxAge = "200ms" dir = ":resourceDir/_gen" [caches.images] maxAge = "200ms" dir = ":resourceDir/_gen" ` for _, name := range []string{filecache.CacheKeyGetCSV, filecache.CacheKeyGetJSON, filecache.CacheKeyAssets, filecache.CacheKeyImages} { msg := qt.Commentf("cache: %s", name) p := newPathsSpec(t, afero.NewMemMapFs(), configStr) caches, err := filecache.NewCaches(p) c.Assert(err, qt.IsNil) cache := caches[name] for i := range 10 { id := fmt.Sprintf("i%d", i) cache.GetOrCreateBytes(id, func() ([]byte, error) { return []byte("abc"), nil }) if i == 4 { // This will expire the first 5 time.Sleep(201 * time.Millisecond) } } count, err := caches.Prune() c.Assert(err, qt.IsNil) c.Assert(count, qt.Equals, 5, msg) for i := range 10 { id := fmt.Sprintf("i%d", i) v := cache.GetString(id) if i < 5 { c.Assert(v, qt.Equals, "") } else { c.Assert(v, qt.Equals, "abc") } } caches, err = filecache.NewCaches(p) c.Assert(err, qt.IsNil) cache = caches[name] // Touch one and then prune. cache.GetOrCreateBytes("i5", func() ([]byte, error) { return []byte("abc"), nil }) count, err = caches.Prune() c.Assert(err, qt.IsNil) c.Assert(count, qt.Equals, 4) // Now only the i5 should be left. for i := range 10 { id := fmt.Sprintf("i%d", i) v := cache.GetString(id) if i != 5 { c.Assert(v, qt.Equals, "") } else { c.Assert(v, qt.Equals, "abc") } } } } gohugoio-hugo-6abdaca/cache/filecache/filecache_test.go000066400000000000000000000151021507671574500233740ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package filecache_test import ( "errors" "fmt" "io" "strings" "sync" "testing" "time" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/testconfig" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/spf13/afero" qt "github.com/frankban/quicktest" ) func TestFileCache(t *testing.T) { t.Parallel() c := qt.New(t) tempWorkingDir := t.TempDir() tempCacheDir := t.TempDir() osfs := afero.NewOsFs() for _, test := range []struct { cacheDir string workingDir string }{ // Run with same dirs twice to make sure that works. {tempCacheDir, tempWorkingDir}, {tempCacheDir, tempWorkingDir}, } { configStr := ` workingDir = "WORKING_DIR" resourceDir = "resources" cacheDir = "CACHEDIR" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archeTypedir = "archetypes" [caches] [caches.getJSON] maxAge = "10h" dir = ":cacheDir/c" ` winPathSep := "\\\\" replacer := strings.NewReplacer("CACHEDIR", test.cacheDir, "WORKING_DIR", test.workingDir) configStr = replacer.Replace(configStr) configStr = strings.Replace(configStr, "\\", winPathSep, -1) p := newPathsSpec(t, osfs, configStr) caches, err := filecache.NewCaches(p) c.Assert(err, qt.IsNil) cache := caches.Get("GetJSON") c.Assert(cache, qt.Not(qt.IsNil)) cache = caches.Get("Images") c.Assert(cache, qt.Not(qt.IsNil)) rf := func(s string) func() (io.ReadCloser, error) { return func() (io.ReadCloser, error) { return struct { io.ReadSeeker io.Closer }{ strings.NewReader(s), io.NopCloser(nil), }, nil } } bf := func() ([]byte, error) { return []byte("bcd"), nil } for _, ca := range []*filecache.Cache{caches.ImageCache(), caches.AssetsCache(), caches.GetJSONCache(), caches.GetCSVCache()} { for range 2 { info, r, err := ca.GetOrCreate("a", rf("abc")) c.Assert(err, qt.IsNil) c.Assert(r, qt.Not(qt.IsNil)) c.Assert(info.Name, qt.Equals, "a") b, _ := io.ReadAll(r) r.Close() c.Assert(string(b), qt.Equals, "abc") info, b, err = ca.GetOrCreateBytes("b", bf) c.Assert(err, qt.IsNil) c.Assert(r, qt.Not(qt.IsNil)) c.Assert(info.Name, qt.Equals, "b") c.Assert(string(b), qt.Equals, "bcd") _, b, err = ca.GetOrCreateBytes("a", bf) c.Assert(err, qt.IsNil) c.Assert(string(b), qt.Equals, "abc") _, r, err = ca.GetOrCreate("a", rf("bcd")) c.Assert(err, qt.IsNil) b, _ = io.ReadAll(r) r.Close() c.Assert(string(b), qt.Equals, "abc") } } c.Assert(caches.Get("getJSON"), qt.Not(qt.IsNil)) info, w, err := caches.ImageCache().WriteCloser("mykey") c.Assert(err, qt.IsNil) c.Assert(info.Name, qt.Equals, "mykey") io.WriteString(w, "Hugo is great!") w.Close() c.Assert(caches.ImageCache().GetString("mykey"), qt.Equals, "Hugo is great!") info, r, err := caches.ImageCache().Get("mykey") c.Assert(err, qt.IsNil) c.Assert(r, qt.Not(qt.IsNil)) c.Assert(info.Name, qt.Equals, "mykey") b, _ := io.ReadAll(r) r.Close() c.Assert(string(b), qt.Equals, "Hugo is great!") info, b, err = caches.ImageCache().GetBytes("mykey") c.Assert(err, qt.IsNil) c.Assert(info.Name, qt.Equals, "mykey") c.Assert(string(b), qt.Equals, "Hugo is great!") } } func TestFileCacheConcurrent(t *testing.T) { t.Parallel() c := qt.New(t) configStr := ` resourceDir = "myresources" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archeTypedir = "archetypes" [caches] [caches.getjson] maxAge = "1s" dir = "/cache/c" ` p := newPathsSpec(t, afero.NewMemMapFs(), configStr) caches, err := filecache.NewCaches(p) c.Assert(err, qt.IsNil) const cacheName = "getjson" filenameData := func(i int) (string, string) { data := fmt.Sprintf("data: %d", i) filename := fmt.Sprintf("file%d", i) return filename, data } var wg sync.WaitGroup for i := range 50 { wg.Add(1) go func(i int) { defer wg.Done() for range 20 { ca := caches.Get(cacheName) c.Assert(ca, qt.Not(qt.IsNil)) filename, data := filenameData(i) _, r, err := ca.GetOrCreate(filename, func() (io.ReadCloser, error) { return hugio.ToReadCloser(strings.NewReader(data)), nil }) c.Assert(err, qt.IsNil) b, _ := io.ReadAll(r) r.Close() c.Assert(string(b), qt.Equals, data) // Trigger some expiration. time.Sleep(50 * time.Millisecond) } }(i) } wg.Wait() } func TestFileCacheReadOrCreateErrorInRead(t *testing.T) { t.Parallel() c := qt.New(t) var result string rf := func(failLevel int) func(info filecache.ItemInfo, r io.ReadSeeker) error { return func(info filecache.ItemInfo, r io.ReadSeeker) error { if failLevel > 0 { if failLevel > 1 { return filecache.ErrFatal } return errors.New("fail") } b, _ := io.ReadAll(r) result = string(b) return nil } } bf := func(s string) func(info filecache.ItemInfo, w io.WriteCloser) error { return func(info filecache.ItemInfo, w io.WriteCloser) error { defer w.Close() result = s _, err := w.Write([]byte(s)) return err } } cache := filecache.NewCache(afero.NewMemMapFs(), 100*time.Hour, "") const id = "a32" _, err := cache.ReadOrCreate(id, rf(0), bf("v1")) c.Assert(err, qt.IsNil) c.Assert(result, qt.Equals, "v1") _, err = cache.ReadOrCreate(id, rf(0), bf("v2")) c.Assert(err, qt.IsNil) c.Assert(result, qt.Equals, "v1") _, err = cache.ReadOrCreate(id, rf(1), bf("v3")) c.Assert(err, qt.IsNil) c.Assert(result, qt.Equals, "v3") _, err = cache.ReadOrCreate(id, rf(2), bf("v3")) c.Assert(err, qt.Equals, filecache.ErrFatal) } func newPathsSpec(t *testing.T, fs afero.Fs, configStr string) *helpers.PathSpec { c := qt.New(t) cfg, err := config.FromConfigString(configStr, "toml") c.Assert(err, qt.IsNil) acfg := testconfig.GetTestConfig(fs, cfg) p, err := helpers.NewPathSpec(hugofs.NewFrom(fs, acfg.BaseConfig()), acfg, nil) c.Assert(err, qt.IsNil) return p } gohugoio-hugo-6abdaca/cache/httpcache/000077500000000000000000000000001507671574500201445ustar00rootroot00000000000000gohugoio-hugo-6abdaca/cache/httpcache/httpcache.go000066400000000000000000000127221507671574500224420ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package httpcache import ( "encoding/json" "time" "github.com/gobwas/glob" "github.com/gohugoio/hugo/common/predicate" "github.com/gohugoio/hugo/config" "github.com/mitchellh/mapstructure" ) // DefaultConfig holds the default configuration for the HTTP cache. var DefaultConfig = Config{ RespectCacheControlNoStoreInRequest: true, RespectCacheControlNoStoreInResponse: false, Cache: Cache{ For: GlobMatcher{ Excludes: []string{"**"}, }, }, Polls: []PollConfig{ { For: GlobMatcher{ Includes: []string{"**"}, }, Disable: true, }, }, } // Config holds the configuration for the HTTP cache. type Config struct { // When enabled and there's a Cache-Control: no-store directive in the request, response will never be stored in disk cache. RespectCacheControlNoStoreInRequest bool // When enabled and there's a Cache-Control: no-store directive in the response, response will never be stored in disk cache. RespectCacheControlNoStoreInResponse bool // Enables HTTP cache behavior (RFC 9111) for these resources. // When this is not enabled for a resource, Hugo will go straight to the file cache. Cache Cache // Polls holds a list of configurations for polling remote resources to detect changes in watch mode. // This can be disabled for some resources, typically if they are known to not change. Polls []PollConfig } type Cache struct { // Enable HTTP cache behavior (RFC 9111) for these resources. For GlobMatcher } func (c *Config) Compile() (ConfigCompiled, error) { cc := ConfigCompiled{ Base: *c, } p, err := c.Cache.For.CompilePredicate() if err != nil { return cc, err } cc.For = p for _, pc := range c.Polls { p, err := pc.For.CompilePredicate() if err != nil { return cc, err } cc.PollConfigs = append(cc.PollConfigs, PollConfigCompiled{ For: p, Config: pc, }) } return cc, nil } // PollConfig holds the configuration for polling remote resources to detect changes in watch mode. type PollConfig struct { // What remote resources to apply this configuration to. For GlobMatcher // Disable polling for this configuration. Disable bool // Low is the lower bound for the polling interval. // This is the starting point when the resource has recently changed, // if that resource stops changing, the polling interval will gradually increase towards High. Low time.Duration // High is the upper bound for the polling interval. // This is the interval used when the resource is stable. High time.Duration } func (c PollConfig) MarshalJSON() (b []byte, err error) { // Marshal the durations as strings. type Alias PollConfig return json.Marshal(&struct { Low string High string Alias }{ Low: c.Low.String(), High: c.High.String(), Alias: (Alias)(c), }) } type GlobMatcher struct { // Excludes holds a list of glob patterns that will be excluded. Excludes []string // Includes holds a list of glob patterns that will be included. Includes []string } func (gm GlobMatcher) IsZero() bool { return len(gm.Includes) == 0 && len(gm.Excludes) == 0 } type ConfigCompiled struct { Base Config For predicate.P[string] PollConfigs []PollConfigCompiled } func (c *ConfigCompiled) PollConfigFor(s string) PollConfigCompiled { for _, pc := range c.PollConfigs { if pc.For(s) { return pc } } return PollConfigCompiled{} } func (c *ConfigCompiled) IsPollingDisabled() bool { for _, pc := range c.PollConfigs { if !pc.Config.Disable { return false } } return true } type PollConfigCompiled struct { For predicate.P[string] Config PollConfig } func (p PollConfigCompiled) IsZero() bool { return p.For == nil } func (gm *GlobMatcher) CompilePredicate() (func(string) bool, error) { if gm.IsZero() { panic("no includes or excludes") } var p predicate.P[string] for _, include := range gm.Includes { g, err := glob.Compile(include, '/') if err != nil { return nil, err } fn := func(s string) bool { return g.Match(s) } p = p.Or(fn) } for _, exclude := range gm.Excludes { g, err := glob.Compile(exclude, '/') if err != nil { return nil, err } fn := func(s string) bool { return !g.Match(s) } p = p.And(fn) } return p, nil } func DecodeConfig(_ config.BaseConfig, m map[string]any) (Config, error) { if len(m) == 0 { return DefaultConfig, nil } var c Config dc := &mapstructure.DecoderConfig{ Result: &c, DecodeHook: mapstructure.StringToTimeDurationHookFunc(), WeaklyTypedInput: true, } decoder, err := mapstructure.NewDecoder(dc) if err != nil { return c, err } if err := decoder.Decode(m); err != nil { return c, err } if c.Cache.For.IsZero() { c.Cache.For = DefaultConfig.Cache.For } for pci := range c.Polls { if c.Polls[pci].For.IsZero() { c.Polls[pci].For = DefaultConfig.Cache.For c.Polls[pci].Disable = true } } if len(c.Polls) == 0 { c.Polls = DefaultConfig.Polls } return c, nil } gohugoio-hugo-6abdaca/cache/httpcache/httpcache_integration_test.go000066400000000000000000000047431507671574500261100ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package httpcache_test import ( "testing" "time" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/hugolib" ) func TestConfigCustom(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- [httpcache] [httpcache.cache.for] includes = ["**gohugo.io**"] [[httpcache.polls]] low = "5s" high = "32s" [httpcache.polls.for] includes = ["**gohugo.io**"] ` b := hugolib.Test(t, files) httpcacheConf := b.H.Configs.Base.HTTPCache compiled := b.H.Configs.Base.C.HTTPCache b.Assert(httpcacheConf.Cache.For.Includes, qt.DeepEquals, []string{"**gohugo.io**"}) b.Assert(httpcacheConf.Cache.For.Excludes, qt.IsNil) pc := compiled.PollConfigFor("https://gohugo.io/foo.jpg") b.Assert(pc.Config.Low, qt.Equals, 5*time.Second) b.Assert(pc.Config.High, qt.Equals, 32*time.Second) b.Assert(compiled.PollConfigFor("https://example.com/foo.jpg").IsZero(), qt.IsTrue) } func TestConfigDefault(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- ` b := hugolib.Test(t, files) compiled := b.H.Configs.Base.C.HTTPCache b.Assert(compiled.For("https://gohugo.io/posts.json"), qt.IsFalse) b.Assert(compiled.For("https://gohugo.io/foo.jpg"), qt.IsFalse) b.Assert(compiled.PollConfigFor("https://gohugo.io/foo.jpg").Config.Disable, qt.IsTrue) } func TestConfigPollsOnly(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- [httpcache] [[httpcache.polls]] low = "5s" high = "32s" [httpcache.polls.for] includes = ["**gohugo.io**"] ` b := hugolib.Test(t, files) compiled := b.H.Configs.Base.C.HTTPCache b.Assert(compiled.For("https://gohugo.io/posts.json"), qt.IsFalse) b.Assert(compiled.For("https://gohugo.io/foo.jpg"), qt.IsFalse) pc := compiled.PollConfigFor("https://gohugo.io/foo.jpg") b.Assert(pc.Config.Low, qt.Equals, 5*time.Second) b.Assert(pc.Config.High, qt.Equals, 32*time.Second) b.Assert(compiled.PollConfigFor("https://example.com/foo.jpg").IsZero(), qt.IsTrue) } gohugoio-hugo-6abdaca/cache/httpcache/httpcache_test.go000066400000000000000000000036371507671574500235060ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package httpcache import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestGlobMatcher(t *testing.T) { c := qt.New(t) g := GlobMatcher{ Includes: []string{"**/*.jpg", "**.png", "**/bar/**"}, Excludes: []string{"**/foo.jpg", "**.css"}, } p, err := g.CompilePredicate() c.Assert(err, qt.IsNil) c.Assert(p("foo.jpg"), qt.IsFalse) c.Assert(p("foo.png"), qt.IsTrue) c.Assert(p("foo/bar.jpg"), qt.IsTrue) c.Assert(p("foo/bar.png"), qt.IsTrue) c.Assert(p("foo/bar/foo.jpg"), qt.IsFalse) c.Assert(p("foo/bar/foo.css"), qt.IsFalse) c.Assert(p("foo.css"), qt.IsFalse) c.Assert(p("foo/bar/foo.css"), qt.IsFalse) c.Assert(p("foo/bar/foo.xml"), qt.IsTrue) } func TestDefaultConfig(t *testing.T) { c := qt.New(t) _, err := DefaultConfig.Compile() c.Assert(err, qt.IsNil) } func TestDecodeConfigInjectsDefaultAndCompiles(t *testing.T) { c := qt.New(t) cfg, err := DecodeConfig(config.BaseConfig{}, map[string]interface{}{}) c.Assert(err, qt.IsNil) c.Assert(cfg, qt.DeepEquals, DefaultConfig) _, err = cfg.Compile() c.Assert(err, qt.IsNil) cfg, err = DecodeConfig(config.BaseConfig{}, map[string]any{ "cache": map[string]any{ "polls": []map[string]any{ {"disable": true}, }, }, }) c.Assert(err, qt.IsNil) _, err = cfg.Compile() c.Assert(err, qt.IsNil) } gohugoio-hugo-6abdaca/check_gofmt.sh000077500000000000000000000000631507671574500177450ustar00rootroot00000000000000#!/usr/bin/env bash diff <(gofmt -d .) <(printf '')gohugoio-hugo-6abdaca/codegen/000077500000000000000000000000001507671574500165425ustar00rootroot00000000000000gohugoio-hugo-6abdaca/codegen/methods.go000066400000000000000000000303001507671574500205300ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package codegen contains helpers for code generation. package codegen import ( "fmt" "go/ast" "go/parser" "go/token" "os" "path" "path/filepath" "reflect" "regexp" "slices" "sort" "strings" "sync" ) // Make room for insertions const weightWidth = 1000 // NewInspector creates a new Inspector given a source root. func NewInspector(root string) *Inspector { return &Inspector{ProjectRootDir: root} } // Inspector provides methods to help code generation. It uses a combination // of reflection and source code AST to do the heavy lifting. type Inspector struct { ProjectRootDir string init sync.Once // Determines method order. Go's reflect sorts lexicographically, so // we must parse the source to preserve this order. methodWeight map[string]map[string]int } // MethodsFromTypes create a method set from the include slice, excluding any // method in exclude. func (c *Inspector) MethodsFromTypes(include []reflect.Type, exclude []reflect.Type) Methods { c.parseSource() var methods Methods excludes := make(map[string]bool) if len(exclude) > 0 { for _, m := range c.MethodsFromTypes(exclude, nil) { excludes[m.Name] = true } } // There may be overlapping interfaces in types. Do a simple check for now. seen := make(map[string]bool) nameAndPackage := func(t reflect.Type) (string, string) { var name, pkg string isPointer := t.Kind() == reflect.Ptr if isPointer { t = t.Elem() } pkgPrefix := "" if pkgPath := t.PkgPath(); pkgPath != "" { pkgPath = strings.TrimSuffix(pkgPath, "/") _, shortPath := path.Split(pkgPath) pkgPrefix = shortPath + "." pkg = pkgPath } name = t.Name() if name == "" { // interface{} name = t.String() } if isPointer { pkgPrefix = "*" + pkgPrefix } name = pkgPrefix + name return name, pkg } for _, t := range include { for i := range t.NumMethod() { m := t.Method(i) if excludes[m.Name] || seen[m.Name] { continue } seen[m.Name] = true if m.PkgPath != "" { // Not exported continue } numIn := m.Type.NumIn() ownerName, _ := nameAndPackage(t) method := Method{Owner: t, OwnerName: ownerName, Name: m.Name} for i := range numIn { in := m.Type.In(i) name, pkg := nameAndPackage(in) if pkg != "" { method.Imports = append(method.Imports, pkg) } method.In = append(method.In, name) } numOut := m.Type.NumOut() if numOut > 0 { for i := range numOut { out := m.Type.Out(i) name, pkg := nameAndPackage(out) if pkg != "" { method.Imports = append(method.Imports, pkg) } method.Out = append(method.Out, name) } } methods = append(methods, method) } } sort.SliceStable(methods, func(i, j int) bool { mi, mj := methods[i], methods[j] wi := c.methodWeight[mi.OwnerName][mi.Name] wj := c.methodWeight[mj.OwnerName][mj.Name] if wi == wj { return mi.Name < mj.Name } return wi < wj }) return methods } func (c *Inspector) parseSource() { c.init.Do(func() { if !strings.Contains(c.ProjectRootDir, "hugo") { panic("dir must be set to the Hugo root") } c.methodWeight = make(map[string]map[string]int) dirExcludes := regexp.MustCompile("docs|examples") fileExcludes := regexp.MustCompile("autogen") var filenames []string filepath.Walk(c.ProjectRootDir, func(path string, info os.FileInfo, err error) error { if info.IsDir() { if dirExcludes.MatchString(info.Name()) { return filepath.SkipDir } } if !strings.HasSuffix(path, ".go") || fileExcludes.MatchString(path) { return nil } filenames = append(filenames, path) return nil }) for _, filename := range filenames { pkg := c.packageFromPath(filename) fset := token.NewFileSet() node, err := parser.ParseFile(fset, filename, nil, parser.ParseComments) if err != nil { panic(err) } ast.Inspect(node, func(n ast.Node) bool { switch t := n.(type) { case *ast.TypeSpec: if t.Name.IsExported() { switch it := t.Type.(type) { case *ast.InterfaceType: iface := pkg + "." + t.Name.Name methodNames := collectMethodsRecursive(pkg, it.Methods.List) weights := make(map[string]int) weight := weightWidth for _, name := range methodNames { weights[name] = weight weight += weightWidth } c.methodWeight[iface] = weights } } } return true }) } // Complement for _, v1 := range c.methodWeight { for k2, w := range v1 { if v, found := c.methodWeight[k2]; found { for k3, v3 := range v { v1[k3] = (v3 / weightWidth) + w } } } } }) } func (c *Inspector) packageFromPath(p string) string { p = filepath.ToSlash(p) base := path.Base(p) if !strings.Contains(base, ".") { return base } return path.Base(strings.TrimSuffix(p, base)) } // Method holds enough information about it to recreate it. type Method struct { // The interface we extracted this method from. Owner reflect.Type // String version of the above, on the form PACKAGE.NAME, e.g. // page.Page OwnerName string // Method name. Name string // Imports needed to satisfy the method signature. Imports []string // Argument types, including any package prefix, e.g. string, int, interface{}, // net.Url In []string // Return types. Out []string } // Declaration creates a method declaration (without any body) for the given receiver. func (m Method) Declaration(receiver string) string { return fmt.Sprintf("func (%s %s) %s%s %s", receiverShort(receiver), receiver, m.Name, m.inStr(), m.outStr()) } // DeclarationNamed creates a method declaration (without any body) for the given receiver // with named return values. func (m Method) DeclarationNamed(receiver string) string { return fmt.Sprintf("func (%s %s) %s%s %s", receiverShort(receiver), receiver, m.Name, m.inStr(), m.outStrNamed()) } // Delegate creates a delegate call string. func (m Method) Delegate(receiver, delegate string) string { ret := "" if len(m.Out) > 0 { ret = "return " } return fmt.Sprintf("%s%s.%s.%s%s", ret, receiverShort(receiver), delegate, m.Name, m.inOutStr()) } func (m Method) String() string { return m.Name + m.inStr() + " " + m.outStr() + "\n" } func (m Method) inOutStr() string { if len(m.In) == 0 { return "()" } args := make([]string, len(m.In)) for i := range args { args[i] = fmt.Sprintf("arg%d", i) } return "(" + strings.Join(args, ", ") + ")" } func (m Method) inStr() string { if len(m.In) == 0 { return "()" } args := make([]string, len(m.In)) for i := range args { args[i] = fmt.Sprintf("arg%d %s", i, m.In[i]) } return "(" + strings.Join(args, ", ") + ")" } func (m Method) outStr() string { if len(m.Out) == 0 { return "" } if len(m.Out) == 1 { return m.Out[0] } return "(" + strings.Join(m.Out, ", ") + ")" } func (m Method) outStrNamed() string { if len(m.Out) == 0 { return "" } outs := make([]string, len(m.Out)) for i := range outs { outs[i] = fmt.Sprintf("o%d %s", i, m.Out[i]) } return "(" + strings.Join(outs, ", ") + ")" } // Methods represents a list of methods for one or more interfaces. // The order matches the defined order in their source file(s). type Methods []Method // Imports returns a sorted list of package imports needed to satisfy the // signatures of all methods. func (m Methods) Imports() []string { var pkgImports []string for _, method := range m { pkgImports = append(pkgImports, method.Imports...) } if len(pkgImports) > 0 { pkgImports = uniqueNonEmptyStrings(pkgImports) sort.Strings(pkgImports) } return pkgImports } // ToMarshalJSON creates a MarshalJSON method for these methods. Any method name // matching any of the regexps in excludes will be ignored. func (m Methods) ToMarshalJSON(receiver, pkgPath string, excludes ...string) (string, []string) { var sb strings.Builder r := receiverShort(receiver) what := firstToUpper(trimAsterisk(receiver)) pgkName := path.Base(pkgPath) fmt.Fprintf(&sb, "func Marshal%sToJSON(%s %s) ([]byte, error) {\n", what, r, receiver) var methods Methods excludeRes := make([]*regexp.Regexp, len(excludes)) for i, exclude := range excludes { excludeRes[i] = regexp.MustCompile(exclude) } for _, method := range m { // Exclude methods with arguments and incompatible return values if len(method.In) > 0 || len(method.Out) == 0 || len(method.Out) > 2 { continue } if len(method.Out) == 2 { if method.Out[1] != "error" { continue } } for _, re := range excludeRes { if re.MatchString(method.Name) { continue } } methods = append(methods, method) } for _, method := range methods { varn := varName(method.Name) if len(method.Out) == 1 { fmt.Fprintf(&sb, "\t%s := %s.%s()\n", varn, r, method.Name) } else { fmt.Fprintf(&sb, "\t%s, err := %s.%s()\n", varn, r, method.Name) fmt.Fprint(&sb, "\tif err != nil {\n\t\treturn nil, err\n\t}\n") } } fmt.Fprint(&sb, "\n\ts := struct {\n") for _, method := range methods { fmt.Fprintf(&sb, "\t\t%s %s\n", method.Name, typeName(method.Out[0], pgkName)) } fmt.Fprint(&sb, "\n\t}{\n") for _, method := range methods { varn := varName(method.Name) fmt.Fprintf(&sb, "\t\t%s: %s,\n", method.Name, varn) } fmt.Fprint(&sb, "\n\t}\n\n") fmt.Fprint(&sb, "\treturn json.Marshal(&s)\n}") pkgImports := append(methods.Imports(), "encoding/json") if pkgPath != "" { // Exclude self for i, pkgImp := range pkgImports { if pkgImp == pkgPath { pkgImports = slices.Delete(pkgImports, i, i+1) } } } return sb.String(), pkgImports } func collectMethodsRecursive(pkg string, f []*ast.Field) []string { var methodNames []string for _, m := range f { if m.Names != nil { methodNames = append(methodNames, m.Names[0].Name) continue } if ident, ok := m.Type.(*ast.Ident); ok && ident.Obj != nil { switch tt := ident.Obj.Decl.(*ast.TypeSpec).Type.(type) { case *ast.InterfaceType: // Embedded interface methodNames = append( methodNames, collectMethodsRecursive( pkg, tt.Methods.List)...) } } else { // Embedded, but in a different file/package. Return the // package.Name and deal with that later. name := packageName(m.Type) if !strings.Contains(name, ".") { // Assume current package name = pkg + "." + name } methodNames = append(methodNames, name) } } return methodNames } func firstToLower(name string) string { return strings.ToLower(name[:1]) + name[1:] } func firstToUpper(name string) string { return strings.ToUpper(name[:1]) + name[1:] } func packageName(e ast.Expr) string { switch tp := e.(type) { case *ast.Ident: return tp.Name case *ast.SelectorExpr: return fmt.Sprintf("%s.%s", packageName(tp.X), packageName(tp.Sel)) } return "" } func receiverShort(receiver string) string { return strings.ToLower(trimAsterisk(receiver))[:1] } func trimAsterisk(name string) string { return strings.TrimPrefix(name, "*") } func typeName(name, pkg string) string { return strings.TrimPrefix(name, pkg+".") } func uniqueNonEmptyStrings(s []string) []string { var unique []string set := map[string]any{} for _, val := range s { if val == "" { continue } if _, ok := set[val]; !ok { unique = append(unique, val) set[val] = val } } return unique } func varName(name string) string { name = firstToLower(name) // Adjust some reserved keywords, see https://golang.org/ref/spec#Keywords switch name { case "type": name = "typ" case "package": name = "pkg" // Not reserved, but syntax highlighters has it as a keyword. case "len": name = "length" } return name } gohugoio-hugo-6abdaca/codegen/methods2_test.go000066400000000000000000000013221507671574500216530ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package codegen type IEmbed interface { MethodEmbed3(s string) string MethodEmbed1() string MethodEmbed2() } gohugoio-hugo-6abdaca/codegen/methods_test.go000066400000000000000000000050511507671574500215740ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package codegen import ( "fmt" "net" "os" "reflect" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/herrors" ) func TestMethods(t *testing.T) { var ( zeroIE = reflect.TypeOf((*IEmbed)(nil)).Elem() zeroIEOnly = reflect.TypeOf((*IEOnly)(nil)).Elem() zeroI = reflect.TypeOf((*I)(nil)).Elem() ) dir, _ := os.Getwd() insp := NewInspector(dir) t.Run("MethodsFromTypes", func(t *testing.T) { c := qt.New(t) methods := insp.MethodsFromTypes([]reflect.Type{zeroI}, nil) methodsStr := fmt.Sprint(methods) c.Assert(methodsStr, qt.Contains, "Method1(arg0 herrors.ErrorContext)") c.Assert(methodsStr, qt.Contains, "Method7() interface {}") c.Assert(methodsStr, qt.Contains, "Method0() string\n Method4() string") c.Assert(methodsStr, qt.Contains, "MethodEmbed3(arg0 string) string\n MethodEmbed1() string") c.Assert(methods.Imports(), qt.Contains, "github.com/gohugoio/hugo/common/herrors") }) t.Run("EmbedOnly", func(t *testing.T) { c := qt.New(t) methods := insp.MethodsFromTypes([]reflect.Type{zeroIEOnly}, nil) methodsStr := fmt.Sprint(methods) c.Assert(methodsStr, qt.Contains, "MethodEmbed3(arg0 string) string") }) t.Run("ToMarshalJSON", func(t *testing.T) { c := qt.New(t) m, pkg := insp.MethodsFromTypes( []reflect.Type{zeroI}, []reflect.Type{zeroIE}).ToMarshalJSON("*page", "page") c.Assert(m, qt.Contains, "method6 := p.Method6()") c.Assert(m, qt.Contains, "Method0: method0,") c.Assert(m, qt.Contains, "return json.Marshal(&s)") c.Assert(pkg, qt.Contains, "github.com/gohugoio/hugo/common/herrors") c.Assert(pkg, qt.Contains, "encoding/json") fmt.Println(pkg) }) } type I interface { IEmbed Method0() string Method4() string Method1(myerr herrors.ErrorContext) Method3(myint int, mystring string) Method5() (string, error) Method6() *net.IP Method7() any Method8() herrors.ErrorContext method2() method9() os.FileInfo } type IEOnly interface { IEmbed } gohugoio-hugo-6abdaca/commands/000077500000000000000000000000001507671574500167375ustar00rootroot00000000000000gohugoio-hugo-6abdaca/commands/commandeer.go000066400000000000000000000502751507671574500214110ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "context" "errors" "fmt" "io" "log" "os" "os/signal" "path/filepath" "runtime" "strings" "sync" "sync/atomic" "syscall" "time" "go.uber.org/automaxprocs/maxprocs" "github.com/bep/clocks" "github.com/bep/lazycache" "github.com/bep/logg" "github.com/bep/overlayfs" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/hstrings" "github.com/gohugoio/hugo/common/htime" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources/kinds" "github.com/spf13/afero" "github.com/spf13/cobra" ) var errHelp = errors.New("help requested") // Execute executes a command. func Execute(args []string) error { // Default GOMAXPROCS to be CPU limit aware, still respecting GOMAXPROCS env. maxprocs.Set() x, err := newExec() if err != nil { return err } args = mapLegacyArgs(args) cd, err := x.Execute(context.Background(), args) if cd != nil { if closer, ok := cd.Root.Command.(types.Closer); ok { closer.Close() } } if err != nil { if err == errHelp { cd.CobraCommand.Help() fmt.Println() return nil } if simplecobra.IsCommandError(err) { // Print the help, but also return the error to fail the command. cd.CobraCommand.Help() fmt.Println() } } return err } type commonConfig struct { mu *sync.Mutex configs *allconfig.Configs cfg config.Provider fs *hugofs.Fs } type configKey struct { counter int32 ignoreModulesDoesNotExists bool } // This is the root command. type rootCommand struct { Printf func(format string, v ...any) Println func(a ...any) StdOut io.Writer StdErr io.Writer logger loggers.Logger // The main cache busting key for the caches below. configVersionID atomic.Int32 // Some, but not all commands need access to these. // Some needs more than one, so keep them in a small cache. commonConfigs *lazycache.Cache[configKey, *commonConfig] hugoSites *lazycache.Cache[configKey, *hugolib.HugoSites] // changesFromBuild received from Hugo in watch mode. changesFromBuild chan []identity.Identity commands []simplecobra.Commander // Flags source string buildWatch bool environment string // Common build flags. baseURL string gc bool poll string forceSyncStatic bool // Profile flags (for debugging of performance problems) cpuprofile string memprofile string mutexprofile string traceprofile string printm bool logLevel string quiet bool devMode bool // Hidden flag. renderToMemory bool cfgFile string cfgDir string } func (r *rootCommand) isVerbose() bool { return r.logger.Level() <= logg.LevelInfo } func (r *rootCommand) Close() error { if r.hugoSites != nil { r.hugoSites.DeleteFunc(func(key configKey, value *hugolib.HugoSites) bool { if value != nil { value.Close() } return false }) } return nil } func (r *rootCommand) Build(cd *simplecobra.Commandeer, bcfg hugolib.BuildCfg, cfg config.Provider) (*hugolib.HugoSites, error) { h, err := r.Hugo(cfg) if err != nil { return nil, err } if err := h.Build(bcfg); err != nil { return nil, err } return h, nil } func (r *rootCommand) Commands() []simplecobra.Commander { return r.commands } func (r *rootCommand) ConfigFromConfig(key configKey, oldConf *commonConfig) (*commonConfig, error) { cc, _, err := r.commonConfigs.GetOrCreate(key, func(key configKey) (*commonConfig, error) { fs := oldConf.fs configs, err := allconfig.LoadConfig( allconfig.ConfigSourceDescriptor{ Flags: oldConf.cfg, Fs: fs.Source, Filename: r.cfgFile, ConfigDir: r.cfgDir, Logger: r.logger, Environment: r.environment, IgnoreModuleDoesNotExist: key.ignoreModulesDoesNotExists, }, ) if err != nil { return nil, err } if !configs.Base.C.Clock.IsZero() { // TODO(bep) find a better place for this. htime.Clock = clocks.Start(configs.Base.C.Clock) } return &commonConfig{ mu: oldConf.mu, configs: configs, cfg: oldConf.cfg, fs: fs, }, nil }) return cc, err } func (r *rootCommand) ConfigFromProvider(key configKey, cfg config.Provider) (*commonConfig, error) { if cfg == nil { panic("cfg must be set") } cc, _, err := r.commonConfigs.GetOrCreate(key, func(key configKey) (*commonConfig, error) { var dir string if r.source != "" { dir, _ = filepath.Abs(r.source) } else { dir, _ = os.Getwd() } if cfg == nil { cfg = config.New() } if !cfg.IsSet("workingDir") { cfg.Set("workingDir", dir) } else { if err := os.MkdirAll(cfg.GetString("workingDir"), 0o777); err != nil { return nil, fmt.Errorf("failed to create workingDir: %w", err) } } // Load the config first to allow publishDir to be configured in config file. configs, err := allconfig.LoadConfig( allconfig.ConfigSourceDescriptor{ Flags: cfg, Fs: hugofs.Os, Filename: r.cfgFile, ConfigDir: r.cfgDir, Environment: r.environment, Logger: r.logger, IgnoreModuleDoesNotExist: key.ignoreModulesDoesNotExists, }, ) if err != nil { return nil, err } base := configs.Base cfg.Set("publishDir", base.PublishDir) cfg.Set("publishDirStatic", base.PublishDir) cfg.Set("publishDirDynamic", base.PublishDir) renderStaticToDisk := cfg.GetBool("renderStaticToDisk") sourceFs := hugofs.Os var destinationFs afero.Fs if cfg.GetBool("renderToMemory") { destinationFs = afero.NewMemMapFs() if renderStaticToDisk { // Hybrid, render dynamic content to Root. cfg.Set("publishDirDynamic", "/") } else { // Rendering to memoryFS, publish to Root regardless of publishDir. cfg.Set("publishDirDynamic", "/") cfg.Set("publishDirStatic", "/") } } else { destinationFs = hugofs.Os } fs := hugofs.NewFromSourceAndDestination(sourceFs, destinationFs, cfg) if renderStaticToDisk { dynamicFs := fs.PublishDir publishDirStatic := cfg.GetString("publishDirStatic") workingDir := cfg.GetString("workingDir") absPublishDirStatic := paths.AbsPathify(workingDir, publishDirStatic) staticFs := hugofs.NewBasePathFs(afero.NewOsFs(), absPublishDirStatic) // Serve from both the static and dynamic fs, // the first will take priority. // THis is a read-only filesystem, // we do all the writes to // fs.Destination and fs.DestinationStatic. fs.PublishDirServer = overlayfs.New( overlayfs.Options{ Fss: []afero.Fs{ dynamicFs, staticFs, }, }, ) fs.PublishDirStatic = staticFs } if !base.C.Clock.IsZero() { // TODO(bep) find a better place for this. htime.Clock = clocks.Start(configs.Base.C.Clock) } if base.PrintPathWarnings { // Note that we only care about the "dynamic creates" here, // so skip the static fs. fs.PublishDir = hugofs.NewCreateCountingFs(fs.PublishDir) } commonConfig := &commonConfig{ mu: &sync.Mutex{}, configs: configs, cfg: cfg, fs: fs, } return commonConfig, nil }) return cc, err } func (r *rootCommand) HugFromConfig(conf *commonConfig) (*hugolib.HugoSites, error) { k := configKey{counter: r.configVersionID.Load()} h, _, err := r.hugoSites.GetOrCreate(k, func(key configKey) (*hugolib.HugoSites, error) { depsCfg := r.newDepsConfig(conf) return hugolib.NewHugoSites(depsCfg) }) return h, err } func (r *rootCommand) Hugo(cfg config.Provider) (*hugolib.HugoSites, error) { return r.getOrCreateHugo(cfg, false) } func (r *rootCommand) getOrCreateHugo(cfg config.Provider, ignoreModuleDoesNotExist bool) (*hugolib.HugoSites, error) { k := configKey{counter: r.configVersionID.Load(), ignoreModulesDoesNotExists: ignoreModuleDoesNotExist} h, _, err := r.hugoSites.GetOrCreate(k, func(key configKey) (*hugolib.HugoSites, error) { conf, err := r.ConfigFromProvider(key, cfg) if err != nil { return nil, err } depsCfg := r.newDepsConfig(conf) return hugolib.NewHugoSites(depsCfg) }) return h, err } func (r *rootCommand) newDepsConfig(conf *commonConfig) deps.DepsCfg { return deps.DepsCfg{Configs: conf.configs, Fs: conf.fs, StdOut: r.logger.StdOut(), StdErr: r.logger.StdErr(), LogLevel: r.logger.Level(), ChangesFromBuild: r.changesFromBuild} } func (r *rootCommand) Name() string { return "hugo" } func (r *rootCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { b := newHugoBuilder(r, nil) if !r.buildWatch { defer b.postBuild("Total", time.Now()) } if err := b.loadConfig(cd, false); err != nil { return err } err := func() error { if r.buildWatch { defer r.timeTrack(time.Now(), "Built") } err := b.build() if err != nil { return err } return nil }() if err != nil { return err } if !r.buildWatch { // Done. return nil } watchDirs, err := b.getDirList() if err != nil { return err } watchGroups := helpers.ExtractAndGroupRootPaths(watchDirs) for _, group := range watchGroups { r.Printf("Watching for changes in %s\n", group) } watcher, err := b.newWatcher(r.poll, watchDirs...) if err != nil { return err } defer watcher.Close() r.Println("Press Ctrl+C to stop") sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) <-sigs return nil } func (r *rootCommand) PreRun(cd, runner *simplecobra.Commandeer) error { r.StdOut = os.Stdout r.StdErr = os.Stderr if r.quiet { r.StdOut = io.Discard r.StdErr = io.Discard } // Used by mkcert (server). log.SetOutput(r.StdOut) r.Printf = func(format string, v ...any) { if !r.quiet { fmt.Fprintf(r.StdOut, format, v...) } } r.Println = func(a ...any) { if !r.quiet { fmt.Fprintln(r.StdOut, a...) } } _, running := runner.Command.(*serverCommand) var err error r.logger, err = r.createLogger(running) if err != nil { return err } // Set up the global logger early to allow info deprecations during config load. loggers.SetGlobalLogger(r.logger) r.changesFromBuild = make(chan []identity.Identity, 10) r.commonConfigs = lazycache.New(lazycache.Options[configKey, *commonConfig]{MaxEntries: 5}) // We don't want to keep stale HugoSites in memory longer than needed. r.hugoSites = lazycache.New(lazycache.Options[configKey, *hugolib.HugoSites]{ MaxEntries: 1, OnEvict: func(key configKey, value *hugolib.HugoSites) { value.Close() runtime.GC() }, }) return nil } func (r *rootCommand) createLogger(running bool) (loggers.Logger, error) { level := logg.LevelWarn if r.devMode { level = logg.LevelTrace } else { if r.logLevel != "" { switch strings.ToLower(r.logLevel) { case "debug": level = logg.LevelDebug case "info": level = logg.LevelInfo case "warn", "warning": level = logg.LevelWarn case "error": level = logg.LevelError default: return nil, fmt.Errorf("invalid log level: %q, must be one of debug, warn, info or error", r.logLevel) } } } optsLogger := loggers.Options{ DistinctLevel: logg.LevelWarn, Level: level, StdOut: r.StdOut, StdErr: r.StdErr, StoreErrors: running, } return loggers.New(optsLogger), nil } func (r *rootCommand) resetLogs() { r.logger.Reset() loggers.Log().Reset() } // IsTestRun reports whether the command is running as a test. func (r *rootCommand) IsTestRun() bool { return os.Getenv("HUGO_TESTRUN") != "" } func (r *rootCommand) Init(cd *simplecobra.Commandeer) error { return r.initRootCommand("", cd) } func (r *rootCommand) initRootCommand(subCommandName string, cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand commandName := "hugo" if subCommandName != "" { commandName = subCommandName } cmd.Use = fmt.Sprintf("%s [flags]", commandName) cmd.Short = "Build your site" cmd.Long = `COMMAND_NAME is the main command, used to build your Hugo site. Hugo is a Fast and Flexible Static Site Generator built with love by spf13 and friends in Go. Complete documentation is available at https://gohugo.io/.` cmd.Long = strings.ReplaceAll(cmd.Long, "COMMAND_NAME", commandName) // Configure persistent flags cmd.PersistentFlags().StringVarP(&r.source, "source", "s", "", "filesystem path to read files relative from") _ = cmd.MarkFlagDirname("source") cmd.PersistentFlags().StringP("destination", "d", "", "filesystem path to write files to") _ = cmd.MarkFlagDirname("destination") cmd.PersistentFlags().StringVarP(&r.environment, "environment", "e", "", "build environment") _ = cmd.RegisterFlagCompletionFunc("environment", cobra.NoFileCompletions) cmd.PersistentFlags().StringP("themesDir", "", "", "filesystem path to themes directory") _ = cmd.MarkFlagDirname("themesDir") cmd.PersistentFlags().StringP("ignoreVendorPaths", "", "", "ignores any _vendor for module paths matching the given Glob pattern") cmd.PersistentFlags().BoolP("noBuildLock", "", false, "don't create .hugo_build.lock file") _ = cmd.RegisterFlagCompletionFunc("ignoreVendorPaths", cobra.NoFileCompletions) cmd.PersistentFlags().String("clock", "", "set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00") _ = cmd.RegisterFlagCompletionFunc("clock", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&r.cfgFile, "config", "", "config file (default is hugo.yaml|json|toml)") _ = cmd.MarkFlagFilename("config", config.ValidConfigFileExtensions...) cmd.PersistentFlags().StringVar(&r.cfgDir, "configDir", "config", "config dir") _ = cmd.MarkFlagDirname("configDir") cmd.PersistentFlags().BoolVar(&r.quiet, "quiet", false, "build in quiet mode") cmd.PersistentFlags().BoolVarP(&r.renderToMemory, "renderToMemory", "M", false, "render to memory (mostly useful when running the server)") cmd.PersistentFlags().BoolVarP(&r.devMode, "devMode", "", false, "only used for internal testing, flag hidden.") cmd.PersistentFlags().StringVar(&r.logLevel, "logLevel", "", "log level (debug|info|warn|error)") _ = cmd.RegisterFlagCompletionFunc("logLevel", cobra.FixedCompletions([]string{"debug", "info", "warn", "error"}, cobra.ShellCompDirectiveNoFileComp)) cmd.Flags().BoolVarP(&r.buildWatch, "watch", "w", false, "watch filesystem for changes and recreate as needed") cmd.PersistentFlags().MarkHidden("devMode") // Configure local flags applyLocalFlagsBuild(cmd, r) return nil } // A sub set of the complete build flags. These flags are used by new and mod. func applyLocalFlagsBuildConfig(cmd *cobra.Command, r *rootCommand) { cmd.Flags().StringSliceP("theme", "t", []string{}, "themes to use (located in /themes/THEMENAME/)") _ = cmd.MarkFlagDirname("theme") cmd.Flags().StringVarP(&r.baseURL, "baseURL", "b", "", "hostname (and path) to the root, e.g. https://spf13.com/") cmd.Flags().StringP("cacheDir", "", "", "filesystem path to cache directory") _ = cmd.MarkFlagDirname("cacheDir") cmd.Flags().StringP("contentDir", "c", "", "filesystem path to content directory") cmd.Flags().StringSliceP("renderSegments", "", []string{}, "named segments to render (configured in the segments config)") } // Flags needed to do a build (used by hugo and hugo server commands) func applyLocalFlagsBuild(cmd *cobra.Command, r *rootCommand) { applyLocalFlagsBuildConfig(cmd, r) cmd.Flags().Bool("cleanDestinationDir", false, "remove files from destination not found in static directories") cmd.Flags().BoolP("buildDrafts", "D", false, "include content marked as draft") cmd.Flags().BoolP("buildFuture", "F", false, "include content with publishdate in the future") cmd.Flags().BoolP("buildExpired", "E", false, "include expired content") cmd.Flags().BoolP("ignoreCache", "", false, "ignores the cache directory") cmd.Flags().Bool("enableGitInfo", false, "add Git revision, date, author, and CODEOWNERS info to the pages") cmd.Flags().StringP("layoutDir", "l", "", "filesystem path to layout directory") _ = cmd.MarkFlagDirname("layoutDir") cmd.Flags().BoolVar(&r.gc, "gc", false, "enable to run some cleanup tasks (remove unused cache files) after the build") cmd.Flags().StringVar(&r.poll, "poll", "", "set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes") _ = cmd.RegisterFlagCompletionFunc("poll", cobra.NoFileCompletions) cmd.Flags().Bool("panicOnWarning", false, "panic on first WARNING log") cmd.Flags().Bool("templateMetrics", false, "display metrics about template executions") cmd.Flags().Bool("templateMetricsHints", false, "calculate some improvement hints when combined with --templateMetrics") cmd.Flags().BoolVar(&r.forceSyncStatic, "forceSyncStatic", false, "copy all files when static is changed.") cmd.Flags().BoolP("noTimes", "", false, "don't sync modification time of files") cmd.Flags().BoolP("noChmod", "", false, "don't sync permission mode of files") cmd.Flags().BoolP("printI18nWarnings", "", false, "print missing translations") cmd.Flags().BoolP("printPathWarnings", "", false, "print warnings on duplicate target paths etc.") cmd.Flags().BoolP("printUnusedTemplates", "", false, "print warnings on unused templates.") cmd.Flags().StringVarP(&r.cpuprofile, "profile-cpu", "", "", "write cpu profile to `file`") cmd.Flags().StringVarP(&r.memprofile, "profile-mem", "", "", "write memory profile to `file`") cmd.Flags().BoolVarP(&r.printm, "printMemoryUsage", "", false, "print memory usage to screen at intervals") cmd.Flags().StringVarP(&r.mutexprofile, "profile-mutex", "", "", "write Mutex profile to `file`") cmd.Flags().StringVarP(&r.traceprofile, "trace", "", "", "write trace to `file` (not useful in general)") // Hide these for now. cmd.Flags().MarkHidden("profile-cpu") cmd.Flags().MarkHidden("profile-mem") cmd.Flags().MarkHidden("profile-mutex") cmd.Flags().StringSlice("disableKinds", []string{}, "disable different kind of pages (home, RSS etc.)") _ = cmd.RegisterFlagCompletionFunc("disableKinds", cobra.FixedCompletions(kinds.AllKinds, cobra.ShellCompDirectiveNoFileComp)) cmd.Flags().Bool("minify", false, "minify any supported output format (HTML, XML etc.)") } func (r *rootCommand) timeTrack(start time.Time, name string) { elapsed := time.Since(start) r.Printf("%s in %v ms\n", name, int(1000*elapsed.Seconds())) } type simpleCommand struct { use string name string short string long string run func(ctx context.Context, cd *simplecobra.Commandeer, rootCmd *rootCommand, args []string) error withc func(cmd *cobra.Command, r *rootCommand) initc func(cd *simplecobra.Commandeer) error commands []simplecobra.Commander rootCmd *rootCommand } func (c *simpleCommand) Commands() []simplecobra.Commander { return c.commands } func (c *simpleCommand) Name() string { return c.name } func (c *simpleCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { if c.run == nil { return nil } return c.run(ctx, cd, c.rootCmd, args) } func (c *simpleCommand) Init(cd *simplecobra.Commandeer) error { c.rootCmd = cd.Root.Command.(*rootCommand) cmd := cd.CobraCommand cmd.Short = c.short cmd.Long = c.long if c.use != "" { cmd.Use = c.use } if c.withc != nil { c.withc(cmd, c.rootCmd) } return nil } func (c *simpleCommand) PreRun(cd, runner *simplecobra.Commandeer) error { if c.initc != nil { return c.initc(cd) } return nil } func mapLegacyArgs(args []string) []string { if len(args) > 1 && args[0] == "new" && !hstrings.EqualAny(args[1], "site", "theme", "content") { // Insert "content" as the second argument args = append(args[:1], append([]string{"content"}, args[1:]...)...) } return args } gohugoio-hugo-6abdaca/commands/commands.go000066400000000000000000000035641507671574500210770ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "context" "github.com/bep/simplecobra" ) // newExec wires up all of Hugo's CLI. func newExec() (*simplecobra.Exec, error) { rootCmd := &rootCommand{ commands: []simplecobra.Commander{ newHugoBuildCmd(), newVersionCmd(), newEnvCommand(), newServerCommand(), newDeployCommand(), newConfigCommand(), newNewCommand(), newConvertCommand(), newImportCommand(), newListCommand(), newModCommands(), newGenCommand(), newReleaseCommand(), }, } return simplecobra.New(rootCmd) } func newHugoBuildCmd() simplecobra.Commander { return &hugoBuildCommand{} } // hugoBuildCommand just delegates to the rootCommand. type hugoBuildCommand struct { rootCmd *rootCommand } func (c *hugoBuildCommand) Commands() []simplecobra.Commander { return nil } func (c *hugoBuildCommand) Name() string { return "build" } func (c *hugoBuildCommand) Init(cd *simplecobra.Commandeer) error { c.rootCmd = cd.Root.Command.(*rootCommand) return c.rootCmd.initRootCommand("build", cd) } func (c *hugoBuildCommand) PreRun(cd, runner *simplecobra.Commandeer) error { return c.rootCmd.PreRun(cd, runner) } func (c *hugoBuildCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return c.rootCmd.Run(ctx, cd, args) } gohugoio-hugo-6abdaca/commands/config.go000066400000000000000000000147521507671574500205440ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "bytes" "context" "encoding/json" "fmt" "os" "strings" "time" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/cobra" ) // newConfigCommand creates a new config command and its subcommands. func newConfigCommand() *configCommand { return &configCommand{ commands: []simplecobra.Commander{ &configMountsCommand{}, }, } } type configCommand struct { r *rootCommand format string lang string printZero bool commands []simplecobra.Commander } func (c *configCommand) Commands() []simplecobra.Commander { return c.commands } func (c *configCommand) Name() string { return "config" } func (c *configCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { conf, err := c.r.ConfigFromProvider(configKey{counter: c.r.configVersionID.Load()}, flagsToCfg(cd, nil)) if err != nil { return err } var config *allconfig.Config if c.lang != "" { var found bool config, found = conf.configs.LanguageConfigMap[c.lang] if !found { return fmt.Errorf("language %q not found", c.lang) } } else { config = conf.configs.LanguageConfigSlice[0] } var buf bytes.Buffer dec := json.NewEncoder(&buf) dec.SetIndent("", " ") dec.SetEscapeHTML(false) if err := dec.Encode(parser.ReplacingJSONMarshaller{Value: config, KeysToLower: true, OmitEmpty: !c.printZero}); err != nil { return err } format := strings.ToLower(c.format) switch format { case "json": os.Stdout.Write(buf.Bytes()) default: // Decode the JSON to a map[string]interface{} and then unmarshal it again to the correct format. var m map[string]any if err := json.Unmarshal(buf.Bytes(), &m); err != nil { return err } maps.ConvertFloat64WithNoDecimalsToInt(m) switch format { case "yaml": return parser.InterfaceToConfig(m, metadecoders.YAML, os.Stdout) case "toml": return parser.InterfaceToConfig(m, metadecoders.TOML, os.Stdout) default: return fmt.Errorf("unsupported format: %q", format) } } return nil } func (c *configCommand) Init(cd *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) cmd := cd.CobraCommand cmd.Short = "Display site configuration" cmd.Long = `Display site configuration, both default and custom settings.` cmd.Flags().StringVar(&c.format, "format", "toml", "preferred file format (toml, yaml or json)") _ = cmd.RegisterFlagCompletionFunc("format", cobra.FixedCompletions([]string{"toml", "yaml", "json"}, cobra.ShellCompDirectiveNoFileComp)) cmd.Flags().StringVar(&c.lang, "lang", "", "the language to display config for. Defaults to the first language defined.") cmd.Flags().BoolVar(&c.printZero, "printZero", false, `include config options with zero values (e.g. false, 0, "") in the output`) _ = cmd.RegisterFlagCompletionFunc("lang", cobra.NoFileCompletions) applyLocalFlagsBuildConfig(cmd, c.r) return nil } func (c *configCommand) PreRun(cd, runner *simplecobra.Commandeer) error { return nil } type configModMount struct { Source string `json:"source"` Target string `json:"target"` Lang string `json:"lang,omitempty"` } type configModMounts struct { verbose bool m modules.Module } // MarshalJSON is for internal use only. func (m *configModMounts) MarshalJSON() ([]byte, error) { var mounts []configModMount for _, mount := range m.m.Mounts() { mounts = append(mounts, configModMount{ Source: mount.Source, Target: mount.Target, Lang: mount.Lang, }) } var ownerPath string if m.m.Owner() != nil { ownerPath = m.m.Owner().Path() } if m.verbose { config := m.m.Config() return json.Marshal(&struct { Path string `json:"path"` Version string `json:"version"` Time time.Time `json:"time"` Owner string `json:"owner"` Dir string `json:"dir"` Meta map[string]any `json:"meta"` HugoVersion modules.HugoVersion `json:"hugoVersion"` Mounts []configModMount `json:"mounts"` }{ Path: m.m.Path(), Version: m.m.Version(), Time: m.m.Time(), Owner: ownerPath, Dir: m.m.Dir(), Meta: config.Params, HugoVersion: config.HugoVersion, Mounts: mounts, }) } return json.Marshal(&struct { Path string `json:"path"` Version string `json:"version"` Time time.Time `json:"time"` Owner string `json:"owner"` Dir string `json:"dir"` Mounts []configModMount `json:"mounts"` }{ Path: m.m.Path(), Version: m.m.Version(), Time: m.m.Time(), Owner: ownerPath, Dir: m.m.Dir(), Mounts: mounts, }) } type configMountsCommand struct { r *rootCommand configCmd *configCommand } func (c *configMountsCommand) Commands() []simplecobra.Commander { return nil } func (c *configMountsCommand) Name() string { return "mounts" } func (c *configMountsCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { r := c.configCmd.r conf, err := r.ConfigFromProvider(configKey{counter: c.r.configVersionID.Load()}, flagsToCfg(cd, nil)) if err != nil { return err } for _, m := range conf.configs.Modules { if err := parser.InterfaceToConfig(&configModMounts{m: m, verbose: r.isVerbose()}, metadecoders.JSON, os.Stdout); err != nil { return err } } return nil } func (c *configMountsCommand) Init(cd *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) cmd := cd.CobraCommand cmd.Short = "Print the configured file mounts" cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, c.r) return nil } func (c *configMountsCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.configCmd = cd.Parent.Command.(*configCommand) return nil } gohugoio-hugo-6abdaca/commands/convert.go000066400000000000000000000143111507671574500207460ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "bytes" "context" "fmt" "path/filepath" "strings" "time" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/gohugoio/hugo/parser/pageparser" "github.com/gohugoio/hugo/resources/page" "github.com/spf13/cobra" ) func newConvertCommand() *convertCommand { var c *convertCommand c = &convertCommand{ commands: []simplecobra.Commander{ &simpleCommand{ name: "toJSON", short: "Convert front matter to JSON", long: `toJSON converts all front matter in the content directory to use JSON for the front matter.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { return c.convertContents(metadecoders.JSON) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "toTOML", short: "Convert front matter to TOML", long: `toTOML converts all front matter in the content directory to use TOML for the front matter.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { return c.convertContents(metadecoders.TOML) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "toYAML", short: "Convert front matter to YAML", long: `toYAML converts all front matter in the content directory to use YAML for the front matter.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { return c.convertContents(metadecoders.YAML) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, }, } return c } type convertCommand struct { // Flags. outputDir string unsafe bool // Deps. r *rootCommand h *hugolib.HugoSites // Commands. commands []simplecobra.Commander } func (c *convertCommand) Commands() []simplecobra.Commander { return c.commands } func (c *convertCommand) Name() string { return "convert" } func (c *convertCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return nil } func (c *convertCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Convert front matter to another format" cmd.Long = `Convert front matter to another format. See convert's subcommands toJSON, toTOML and toYAML for more information.` cmd.PersistentFlags().StringVarP(&c.outputDir, "output", "o", "", "filesystem path to write files to") _ = cmd.MarkFlagDirname("output") cmd.PersistentFlags().BoolVar(&c.unsafe, "unsafe", false, "enable less safe operations, please backup first") cmd.RunE = nil return nil } func (c *convertCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) cfg := config.New() cfg.Set("buildDrafts", true) h, err := c.r.Hugo(flagsToCfg(cd, cfg)) if err != nil { return err } c.h = h return nil } func (c *convertCommand) convertAndSavePage(p page.Page, site *hugolib.Site, targetFormat metadecoders.Format) error { // The resources are not in .Site.AllPages. for _, r := range p.Resources().ByType("page") { if err := c.convertAndSavePage(r.(page.Page), site, targetFormat); err != nil { return err } } if p.File() == nil { // No content file. return nil } errMsg := fmt.Errorf("error processing file %q", p.File().Path()) site.Log.Infoln("attempting to convert", p.File().Filename()) f := p.File() file, err := f.FileInfo().Meta().Open() if err != nil { site.Log.Errorln(errMsg) file.Close() return nil } pf, err := pageparser.ParseFrontMatterAndContent(file) if err != nil { site.Log.Errorln(errMsg) file.Close() return err } file.Close() // better handling of dates in formats that don't have support for them if pf.FrontMatterFormat == metadecoders.JSON || pf.FrontMatterFormat == metadecoders.YAML || pf.FrontMatterFormat == metadecoders.TOML { for k, v := range pf.FrontMatter { switch vv := v.(type) { case time.Time: pf.FrontMatter[k] = vv.Format(time.RFC3339) } } } var newContent bytes.Buffer err = parser.InterfaceToFrontMatter(pf.FrontMatter, targetFormat, &newContent) if err != nil { site.Log.Errorln(errMsg) return err } newContent.Write(pf.Content) newFilename := p.File().Filename() if c.outputDir != "" { contentDir := strings.TrimSuffix(newFilename, p.File().Path()) contentDir = filepath.Base(contentDir) newFilename = filepath.Join(c.outputDir, contentDir, p.File().Path()) } fs := hugofs.Os if err := helpers.WriteToDisk(newFilename, &newContent, fs); err != nil { return fmt.Errorf("failed to save file %q:: %w", newFilename, err) } return nil } func (c *convertCommand) convertContents(format metadecoders.Format) error { if c.outputDir == "" && !c.unsafe { return newUserError("Unsafe operation not allowed, use --unsafe or set a different output path") } if err := c.h.Build(hugolib.BuildCfg{SkipRender: true}); err != nil { return err } site := c.h.Sites[0] var pagesBackedByFile page.Pages for _, p := range site.AllPages() { if p.File() == nil { continue } pagesBackedByFile = append(pagesBackedByFile, p) } site.Log.Println("processing", len(pagesBackedByFile), "content files") for _, p := range site.AllPages() { if err := c.convertAndSavePage(p, site, format); err != nil { return err } } return nil } gohugoio-hugo-6abdaca/commands/deploy.go000066400000000000000000000027611507671574500205700ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build withdeploy package commands import ( "context" "github.com/gohugoio/hugo/deploy" "github.com/bep/simplecobra" "github.com/spf13/cobra" ) func newDeployCommand() simplecobra.Commander { return &simpleCommand{ name: "deploy", short: "Deploy your site to a cloud provider", long: `Deploy your site to a cloud provider See https://gohugo.io/hosting-and-deployment/hugo-deploy/ for detailed documentation. `, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfgWithAdditionalConfigBase(cd, nil, "deployment")) if err != nil { return err } deployer, err := deploy.New(h.Configs.GetFirstLanguageConfig(), h.Log, h.PathSpec.PublishFs) if err != nil { return err } return deployer.Deploy(ctx) }, withc: func(cmd *cobra.Command, r *rootCommand) { applyDeployFlags(cmd, r) }, } } gohugoio-hugo-6abdaca/commands/deploy_flags.go000066400000000000000000000033211507671574500217350ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "github.com/gohugoio/hugo/deploy/deployconfig" "github.com/spf13/cobra" ) func applyDeployFlags(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.Flags().String("target", "", "target deployment from deployments section in config file; defaults to the first one") _ = cmd.RegisterFlagCompletionFunc("target", cobra.NoFileCompletions) cmd.Flags().Bool("confirm", false, "ask for confirmation before making changes to the target") cmd.Flags().Bool("dryRun", false, "dry run") cmd.Flags().Bool("force", false, "force upload of all files") cmd.Flags().Bool("invalidateCDN", deployconfig.DefaultConfig.InvalidateCDN, "invalidate the CDN cache listed in the deployment target") cmd.Flags().Int("maxDeletes", deployconfig.DefaultConfig.MaxDeletes, "maximum # of files to delete, or -1 to disable") _ = cmd.RegisterFlagCompletionFunc("maxDeletes", cobra.NoFileCompletions) cmd.Flags().Int("workers", deployconfig.DefaultConfig.Workers, "number of workers to transfer files. defaults to 10") _ = cmd.RegisterFlagCompletionFunc("workers", cobra.NoFileCompletions) } gohugoio-hugo-6abdaca/commands/deploy_off.go000066400000000000000000000035421507671574500214200ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build !withdeploy // Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "context" "errors" "github.com/bep/simplecobra" "github.com/spf13/cobra" ) func newDeployCommand() simplecobra.Commander { return &simpleCommand{ name: "deploy", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { return errors.New("deploy not supported in this version of Hugo; install a release with 'withdeploy' in the archive filename or build yourself with the 'withdeploy' build tag. Also see https://github.com/gohugoio/hugo/pull/12995") }, withc: func(cmd *cobra.Command, r *rootCommand) { applyDeployFlags(cmd, r) cmd.Hidden = true }, } } gohugoio-hugo-6abdaca/commands/env.go000066400000000000000000000043161507671574500200620ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "context" "runtime" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/hugo" "github.com/spf13/cobra" ) func newEnvCommand() simplecobra.Commander { return &simpleCommand{ name: "env", short: "Display version and environment info", long: "Display version and environment info. This is useful in Hugo bug reports", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { r.Printf("%s\n", hugo.BuildVersionString()) r.Printf("GOOS=%q\n", runtime.GOOS) r.Printf("GOARCH=%q\n", runtime.GOARCH) r.Printf("GOVERSION=%q\n", runtime.Version()) if r.isVerbose() { deps := hugo.GetDependencyList() for _, dep := range deps { r.Printf("%s\n", dep) } } else { // These are also included in the GetDependencyList above; // always print these as these are most likely the most useful to know about. deps := hugo.GetDependencyListNonGo() for _, dep := range deps { r.Printf("%s\n", dep) } } return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, } } func newVersionCmd() simplecobra.Commander { return &simpleCommand{ name: "version", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { r.Println(hugo.BuildVersionString()) return nil }, short: "Display version", long: "Display version and environment info. This is useful in Hugo bug reports.", withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, } } gohugoio-hugo-6abdaca/commands/gen.go000066400000000000000000000251041507671574500200410ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "bytes" "context" "encoding/json" "fmt" "os" "path" "path/filepath" "slices" "strings" "github.com/alecthomas/chroma/v2" "github.com/alecthomas/chroma/v2/formatters/html" "github.com/alecthomas/chroma/v2/styles" "github.com/bep/simplecobra" "github.com/goccy/go-yaml" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/docshelper" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/parser" "github.com/spf13/cobra" "github.com/spf13/cobra/doc" ) func newGenCommand() *genCommand { var ( // Flags. gendocdir string genmandir string // Chroma flags. style string highlightStyle string lineNumbersInlineStyle string lineNumbersTableStyle string omitEmpty bool omitClassComments bool ) newChromaStyles := func() simplecobra.Commander { return &simpleCommand{ name: "chromastyles", short: "Generate CSS stylesheet for the Chroma code highlighter", long: `Generate CSS stylesheet for the Chroma code highlighter for a given style. This stylesheet is needed if markup.highlight.noClasses is disabled in config. See https://xyproto.github.io/splash/docs/all.html for a preview of the available styles`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { style = strings.ToLower(style) if !slices.Contains(styles.Names(), style) { return fmt.Errorf("invalid style: %s", style) } builder := styles.Get(style).Builder() if highlightStyle != "" { builder.Add(chroma.LineHighlight, highlightStyle) } if lineNumbersInlineStyle != "" { builder.Add(chroma.LineNumbers, lineNumbersInlineStyle) } if lineNumbersTableStyle != "" { builder.Add(chroma.LineNumbersTable, lineNumbersTableStyle) } style, err := builder.Build() if err != nil { return err } if omitEmpty { // See https://github.com/alecthomas/chroma/commit/5b2a4c5a26c503c79bc86ba3c4ae5b330028bd3d hugo.Deprecate("--omitEmpty", "Flag is no longer needed, empty classes are now always omitted.", "v0.149.0") } options := []html.Option{ html.WithCSSComments(!omitClassComments), } formatter := html.New(options...) w := os.Stdout fmt.Fprintf(w, "/* Generated using: hugo %s */\n\n", strings.Join(os.Args[1:], " ")) formatter.WriteCSS(w, style) return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().StringVar(&style, "style", "friendly", "highlighter style (see https://xyproto.github.io/splash/docs/)") _ = cmd.RegisterFlagCompletionFunc("style", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&highlightStyle, "highlightStyle", "", `foreground and background colors for highlighted lines, e.g. --highlightStyle "#fff000 bg:#000fff"`) _ = cmd.RegisterFlagCompletionFunc("highlightStyle", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&lineNumbersInlineStyle, "lineNumbersInlineStyle", "", `foreground and background colors for inline line numbers, e.g. --lineNumbersInlineStyle "#fff000 bg:#000fff"`) _ = cmd.RegisterFlagCompletionFunc("lineNumbersInlineStyle", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&lineNumbersTableStyle, "lineNumbersTableStyle", "", `foreground and background colors for table line numbers, e.g. --lineNumbersTableStyle "#fff000 bg:#000fff"`) _ = cmd.RegisterFlagCompletionFunc("lineNumbersTableStyle", cobra.NoFileCompletions) cmd.PersistentFlags().BoolVar(&omitEmpty, "omitEmpty", false, `omit empty CSS rules (deprecated, no longer needed)`) _ = cmd.RegisterFlagCompletionFunc("omitEmpty", cobra.NoFileCompletions) cmd.PersistentFlags().BoolVar(&omitClassComments, "omitClassComments", false, `omit CSS class comment prefixes in the generated CSS`) _ = cmd.RegisterFlagCompletionFunc("omitClassComments", cobra.NoFileCompletions) }, } } newMan := func() simplecobra.Commander { return &simpleCommand{ name: "man", short: "Generate man pages for the Hugo CLI", long: `This command automatically generates up-to-date man pages of Hugo's command-line interface. By default, it creates the man page files in the "man" directory under the current directory.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { header := &doc.GenManHeader{ Section: "1", Manual: "Hugo Manual", Source: fmt.Sprintf("Hugo %s", hugo.CurrentVersion), } if !strings.HasSuffix(genmandir, helpers.FilePathSeparator) { genmandir += helpers.FilePathSeparator } if found, _ := helpers.Exists(genmandir, hugofs.Os); !found { r.Println("Directory", genmandir, "does not exist, creating...") if err := hugofs.Os.MkdirAll(genmandir, 0o777); err != nil { return err } } cd.CobraCommand.Root().DisableAutoGenTag = true r.Println("Generating Hugo man pages in", genmandir, "...") doc.GenManTree(cd.CobraCommand.Root(), header, genmandir) r.Println("Done.") return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().StringVar(&genmandir, "dir", "man/", "the directory to write the man pages.") _ = cmd.MarkFlagDirname("dir") }, } } newGen := func() simplecobra.Commander { const gendocFrontmatterTemplate = `--- title: "%s" slug: %s url: %s --- ` return &simpleCommand{ name: "doc", short: "Generate Markdown documentation for the Hugo CLI", long: `Generate Markdown documentation for the Hugo CLI. This command is, mostly, used to create up-to-date documentation of Hugo's command-line interface for https://gohugo.io/. It creates one Markdown file per command with front matter suitable for rendering in Hugo.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { cd.CobraCommand.VisitParents(func(c *cobra.Command) { // Disable the "Auto generated by spf13/cobra on DATE" // as it creates a lot of diffs. c.DisableAutoGenTag = true }) if !strings.HasSuffix(gendocdir, helpers.FilePathSeparator) { gendocdir += helpers.FilePathSeparator } if found, _ := helpers.Exists(gendocdir, hugofs.Os); !found { r.Println("Directory", gendocdir, "does not exist, creating...") if err := hugofs.Os.MkdirAll(gendocdir, 0o777); err != nil { return err } } prepender := func(filename string) string { name := filepath.Base(filename) base := strings.TrimSuffix(name, path.Ext(name)) url := "/docs/reference/commands/" + strings.ToLower(base) + "/" return fmt.Sprintf(gendocFrontmatterTemplate, strings.Replace(base, "_", " ", -1), base, url) } linkHandler := func(name string) string { base := strings.TrimSuffix(name, path.Ext(name)) return "/docs/reference/commands/" + strings.ToLower(base) + "/" } r.Println("Generating Hugo command-line documentation in", gendocdir, "...") doc.GenMarkdownTreeCustom(cd.CobraCommand.Root(), gendocdir, prepender, linkHandler) r.Println("Done.") return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().StringVar(&gendocdir, "dir", "/tmp/hugodoc/", "the directory to write the doc.") _ = cmd.MarkFlagDirname("dir") }, } } var docsHelperTarget string newDocsHelper := func() simplecobra.Commander { return &simpleCommand{ name: "docshelper", short: "Generate some data files for the Hugo docs", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { r.Println("Generate docs data to", docsHelperTarget) var buf bytes.Buffer jsonEnc := json.NewEncoder(&buf) configProvider := func() docshelper.DocProvider { conf := hugolib.DefaultConfig() conf.CacheDir = "" // The default value does not make sense in the docs. defaultConfig := parser.NullBoolJSONMarshaller{Wrapped: parser.LowerCaseCamelJSONMarshaller{Value: conf}} return docshelper.DocProvider{"config": defaultConfig} } docshelper.AddDocProviderFunc(configProvider) if err := jsonEnc.Encode(docshelper.GetDocProvider()); err != nil { return err } // Decode the JSON to a map[string]interface{} and then unmarshal it again to the correct format. var m map[string]any if err := json.Unmarshal(buf.Bytes(), &m); err != nil { return err } targetFile := filepath.Join(docsHelperTarget, "docs.yaml") f, err := os.Create(targetFile) if err != nil { return err } defer f.Close() yamlEnc := yaml.NewEncoder(f) if err := yamlEnc.Encode(m); err != nil { return err } r.Println("Done!") return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.Hidden = true cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().StringVarP(&docsHelperTarget, "dir", "", "docs/data", "data dir") }, } } return &genCommand{ commands: []simplecobra.Commander{ newChromaStyles(), newGen(), newMan(), newDocsHelper(), }, } } type genCommand struct { rootCmd *rootCommand commands []simplecobra.Commander } func (c *genCommand) Commands() []simplecobra.Commander { return c.commands } func (c *genCommand) Name() string { return "gen" } func (c *genCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return nil } func (c *genCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Generate documentation and syntax highlighting styles" cmd.Long = "Generate documentation for your project using Hugo's documentation engine, including syntax highlighting for various programming languages." cmd.RunE = nil return nil } func (c *genCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.rootCmd = cd.Root.Command.(*rootCommand) return nil } gohugoio-hugo-6abdaca/commands/helpers.go000066400000000000000000000061311507671574500207310ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "errors" "fmt" "log" "os" "path/filepath" "strings" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/config" "github.com/spf13/pflag" ) const ( ansiEsc = "\u001B" clearLine = "\r\033[K" hideCursor = ansiEsc + "[?25l" showCursor = ansiEsc + "[?25h" ) func newUserError(a ...any) *simplecobra.CommandError { return &simplecobra.CommandError{Err: errors.New(fmt.Sprint(a...))} } func setValueFromFlag(flags *pflag.FlagSet, key string, cfg config.Provider, targetKey string, force bool) { key = strings.TrimSpace(key) if (force && flags.Lookup(key) != nil) || flags.Changed(key) { f := flags.Lookup(key) configKey := key if targetKey != "" { configKey = targetKey } // Gotta love this API. switch f.Value.Type() { case "bool": bv, _ := flags.GetBool(key) cfg.Set(configKey, bv) case "string": cfg.Set(configKey, f.Value.String()) case "stringSlice": bv, _ := flags.GetStringSlice(key) cfg.Set(configKey, bv) case "int": iv, _ := flags.GetInt(key) cfg.Set(configKey, iv) default: panic(fmt.Sprintf("update switch with %s", f.Value.Type())) } } } func flagsToCfg(cd *simplecobra.Commandeer, cfg config.Provider) config.Provider { return flagsToCfgWithAdditionalConfigBase(cd, cfg, "") } func flagsToCfgWithAdditionalConfigBase(cd *simplecobra.Commandeer, cfg config.Provider, additionalConfigBase string) config.Provider { if cfg == nil { cfg = config.New() } // Flags with a different name in the config. keyMap := map[string]string{ "minify": "minify.minifyOutput", "destination": "publishDir", "editor": "newContentEditor", } // Flags that we for some reason don't want to expose in the site config. internalKeySet := map[string]bool{ "quiet": true, "verbose": true, "watch": true, "liveReloadPort": true, "renderToMemory": true, "clock": true, } cmd := cd.CobraCommand flags := cmd.Flags() flags.VisitAll(func(f *pflag.Flag) { if f.Changed { targetKey := f.Name if internalKeySet[targetKey] { targetKey = "internal." + targetKey } else if mapped, ok := keyMap[targetKey]; ok { targetKey = mapped } setValueFromFlag(flags, f.Name, cfg, targetKey, false) if additionalConfigBase != "" { setValueFromFlag(flags, f.Name, cfg, additionalConfigBase+"."+targetKey, true) } } }) return cfg } func mkdir(x ...string) { p := filepath.Join(x...) err := os.MkdirAll(p, 0o777) // before umask if err != nil { log.Fatal(err) } } gohugoio-hugo-6abdaca/commands/hugo_windows.go000066400000000000000000000020311507671574500217760ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( // For time zone lookups on Windows without Go installed. // See #8892 _ "time/tzdata" "github.com/spf13/cobra" ) func init() { // This message to show to Windows users if Hugo is opened from explorer.exe cobra.MousetrapHelpText = ` Hugo is a command-line tool for generating static websites. You need to open PowerShell and run Hugo from there. Visit https://gohugo.io/ for more information.` } gohugoio-hugo-6abdaca/commands/hugobuilder.go000066400000000000000000000704571507671574500216140ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "context" "errors" "fmt" "os" "path/filepath" "runtime" "runtime/pprof" "runtime/trace" "strings" "sync" "sync/atomic" "time" "github.com/bep/debounce" "github.com/bep/simplecobra" "github.com/fsnotify/fsnotify" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/htime" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/terminal" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/hugolib/filesystems" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/livereload" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/watcher" "github.com/spf13/fsync" "golang.org/x/sync/errgroup" "golang.org/x/sync/semaphore" ) type hugoBuilder struct { r *rootCommand confmu sync.Mutex conf *commonConfig // May be nil. s *serverCommand // Currently only set when in "fast render mode". changeDetector *fileChangeDetector visitedURLs *types.EvictingQueue[string] fullRebuildSem *semaphore.Weighted debounce func(f func()) onConfigLoaded func(reloaded bool) error fastRenderMode bool showErrorInBrowser bool errState hugoBuilderErrState } var errConfigNotSet = errors.New("config not set") func (c *hugoBuilder) withConfE(fn func(conf *commonConfig) error) error { c.confmu.Lock() defer c.confmu.Unlock() if c.conf == nil { return errConfigNotSet } return fn(c.conf) } func (c *hugoBuilder) withConf(fn func(conf *commonConfig)) { c.confmu.Lock() defer c.confmu.Unlock() fn(c.conf) } type hugoBuilderErrState struct { mu sync.Mutex paused bool builderr error waserr bool } func (e *hugoBuilderErrState) setPaused(p bool) { e.mu.Lock() defer e.mu.Unlock() e.paused = p } func (e *hugoBuilderErrState) isPaused() bool { e.mu.Lock() defer e.mu.Unlock() return e.paused } func (e *hugoBuilderErrState) setBuildErr(err error) { e.mu.Lock() defer e.mu.Unlock() e.builderr = err } func (e *hugoBuilderErrState) buildErr() error { e.mu.Lock() defer e.mu.Unlock() return e.builderr } func (e *hugoBuilderErrState) setWasErr(w bool) { e.mu.Lock() defer e.mu.Unlock() e.waserr = w } func (e *hugoBuilderErrState) wasErr() bool { e.mu.Lock() defer e.mu.Unlock() return e.waserr } // getDirList provides NewWatcher() with a list of directories to watch for changes. func (c *hugoBuilder) getDirList() ([]string, error) { h, err := c.hugo() if err != nil { return nil, err } return helpers.UniqueStringsSorted(h.PathSpec.BaseFs.WatchFilenames()), nil } func (c *hugoBuilder) initCPUProfile() (func(), error) { if c.r.cpuprofile == "" { return nil, nil } f, err := os.Create(c.r.cpuprofile) if err != nil { return nil, fmt.Errorf("failed to create CPU profile: %w", err) } if err := pprof.StartCPUProfile(f); err != nil { return nil, fmt.Errorf("failed to start CPU profile: %w", err) } return func() { pprof.StopCPUProfile() f.Close() }, nil } func (c *hugoBuilder) initMemProfile() { if c.r.memprofile == "" { return } f, err := os.Create(c.r.memprofile) if err != nil { c.r.logger.Errorf("could not create memory profile: ", err) } defer f.Close() runtime.GC() // get up-to-date statistics if err := pprof.WriteHeapProfile(f); err != nil { c.r.logger.Errorf("could not write memory profile: ", err) } } func (c *hugoBuilder) initMemTicker() func() { memticker := time.NewTicker(5 * time.Second) quit := make(chan struct{}) printMem := func() { var m runtime.MemStats runtime.ReadMemStats(&m) fmt.Printf("\n\nAlloc = %v\nTotalAlloc = %v\nSys = %v\nNumGC = %v\n\n", formatByteCount(m.Alloc), formatByteCount(m.TotalAlloc), formatByteCount(m.Sys), m.NumGC) } go func() { for { select { case <-memticker.C: printMem() case <-quit: memticker.Stop() printMem() return } } }() return func() { close(quit) } } func (c *hugoBuilder) initMutexProfile() (func(), error) { if c.r.mutexprofile == "" { return nil, nil } f, err := os.Create(c.r.mutexprofile) if err != nil { return nil, err } runtime.SetMutexProfileFraction(1) return func() { pprof.Lookup("mutex").WriteTo(f, 0) f.Close() }, nil } func (c *hugoBuilder) initProfiling() (func(), error) { stopCPUProf, err := c.initCPUProfile() if err != nil { return nil, err } stopMutexProf, err := c.initMutexProfile() if err != nil { return nil, err } stopTraceProf, err := c.initTraceProfile() if err != nil { return nil, err } var stopMemTicker func() if c.r.printm { stopMemTicker = c.initMemTicker() } return func() { c.initMemProfile() if stopCPUProf != nil { stopCPUProf() } if stopMutexProf != nil { stopMutexProf() } if stopTraceProf != nil { stopTraceProf() } if stopMemTicker != nil { stopMemTicker() } }, nil } func (c *hugoBuilder) initTraceProfile() (func(), error) { if c.r.traceprofile == "" { return nil, nil } f, err := os.Create(c.r.traceprofile) if err != nil { return nil, fmt.Errorf("failed to create trace file: %w", err) } if err := trace.Start(f); err != nil { return nil, fmt.Errorf("failed to start trace: %w", err) } return func() { trace.Stop() f.Close() }, nil } // newWatcher creates a new watcher to watch filesystem events. func (c *hugoBuilder) newWatcher(pollIntervalStr string, dirList ...string) (*watcher.Batcher, error) { staticSyncer := &staticSyncer{c: c} var pollInterval time.Duration poll := pollIntervalStr != "" if poll { pollInterval, err := types.ToDurationE(pollIntervalStr) if err != nil { return nil, fmt.Errorf("invalid value for flag poll: %s", err) } c.r.logger.Printf("Use watcher with poll interval %v", pollInterval) } if pollInterval == 0 { pollInterval = 500 * time.Millisecond } watcher, err := watcher.New(500*time.Millisecond, pollInterval, poll) if err != nil { return nil, err } h, err := c.hugo() if err != nil { return nil, err } spec := h.Deps.SourceSpec for _, d := range dirList { if d != "" { if spec.IgnoreFile(d) { continue } _ = watcher.Add(d) } } // Identifies changes to config (config.toml) files. configSet := make(map[string]bool) var configFiles []string c.withConf(func(conf *commonConfig) { configFiles = conf.configs.LoadingInfo.ConfigFiles }) c.r.Println("Watching for config changes in", strings.Join(configFiles, ", ")) for _, configFile := range configFiles { watcher.Add(configFile) configSet[configFile] = true } go func() { for { select { case changes := <-c.r.changesFromBuild: unlock, err := h.LockBuild() if err != nil { c.r.logger.Errorln("Failed to acquire a build lock: %s", err) return } c.changeDetector.PrepareNew() err = c.rebuildSitesForChanges(changes) if err != nil { c.r.logger.Errorln("Error while watching:", err) } if c.s != nil && c.s.doLiveReload { doReload := c.changeDetector == nil || len(c.changeDetector.changed()) > 0 doReload = doReload || c.showErrorInBrowser && c.errState.buildErr() != nil if doReload { livereload.ForceRefresh() } } unlock() case evs := <-watcher.Events: unlock, err := h.LockBuild() if err != nil { c.r.logger.Errorln("Failed to acquire a build lock: %s", err) return } c.handleEvents(watcher, staticSyncer, evs, configSet) if c.showErrorInBrowser && c.errState.buildErr() != nil { // Need to reload browser to show the error livereload.ForceRefresh() } unlock() case err := <-watcher.Errors(): if err != nil && !herrors.IsNotExist(err) { c.r.logger.Errorln("Error while watching:", err) } } } }() return watcher, nil } func (c *hugoBuilder) build() error { stopProfiling, err := c.initProfiling() if err != nil { return err } defer func() { if stopProfiling != nil { stopProfiling() } }() if err := c.fullBuild(false); err != nil { return err } if !c.r.quiet { c.r.Println() h, err := c.hugo() if err != nil { return err } h.PrintProcessingStats(os.Stdout) c.r.Println() } return nil } func (c *hugoBuilder) buildSites(noBuildLock bool) (err error) { defer func() { c.errState.setBuildErr(err) }() var h *hugolib.HugoSites h, err = c.hugo() if err != nil { return } err = h.Build(hugolib.BuildCfg{NoBuildLock: noBuildLock}) return } func (c *hugoBuilder) copyStatic() (map[string]uint64, error) { m, err := c.doWithPublishDirs(c.copyStaticTo) if err == nil || herrors.IsNotExist(err) { return m, nil } return m, err } func (c *hugoBuilder) copyStaticTo(sourceFs *filesystems.SourceFilesystem) (uint64, error) { infol := c.r.logger.InfoCommand("static") publishDir := helpers.FilePathSeparator if sourceFs.PublishFolder != "" { publishDir = filepath.Join(publishDir, sourceFs.PublishFolder) } fs := &countingStatFs{Fs: sourceFs.Fs} syncer := fsync.NewSyncer() c.withConf(func(conf *commonConfig) { syncer.NoTimes = conf.configs.Base.NoTimes syncer.NoChmod = conf.configs.Base.NoChmod syncer.ChmodFilter = chmodFilter syncer.DestFs = conf.fs.PublishDirStatic // Now that we are using a unionFs for the static directories // We can effectively clean the publishDir on initial sync syncer.Delete = conf.configs.Base.CleanDestinationDir }) syncer.SrcFs = fs if syncer.Delete { infol.Logf("removing all files from destination that don't exist in static dirs") syncer.DeleteFilter = func(f fsync.FileInfo) bool { return f.IsDir() && strings.HasPrefix(f.Name(), ".") } } start := time.Now() // because we are using a baseFs (to get the union right). // set sync src to root err := syncer.Sync(publishDir, helpers.FilePathSeparator) if err != nil { return 0, err } loggers.TimeTrackf(infol, start, nil, "syncing static files to %s", publishDir) // Sync runs Stat 2 times for every source file. numFiles := fs.statCounter / 2 return numFiles, err } func (c *hugoBuilder) doWithPublishDirs(f func(sourceFs *filesystems.SourceFilesystem) (uint64, error)) (map[string]uint64, error) { langCount := make(map[string]uint64) h, err := c.hugo() if err != nil { return nil, err } staticFilesystems := h.BaseFs.SourceFilesystems.Static if len(staticFilesystems) == 0 { c.r.logger.Infoln("No static directories found to sync") return langCount, nil } for lang, fs := range staticFilesystems { cnt, err := f(fs) if err != nil { return langCount, err } if lang == "" { // Not multihost c.withConf(func(conf *commonConfig) { for _, l := range conf.configs.Languages { langCount[l.Lang] = cnt } }) } else { langCount[lang] = cnt } } return langCount, nil } func (c *hugoBuilder) progressIntermediate() { terminal.ReportProgress(c.r.StdOut, terminal.ProgressIntermediate, 0) } func (c *hugoBuilder) progressHidden() { terminal.ReportProgress(c.r.StdOut, terminal.ProgressHidden, 0) } func (c *hugoBuilder) fullBuild(noBuildLock bool) error { var ( g errgroup.Group langCount map[string]uint64 ) c.r.logger.Println("Start building sites … ") c.r.logger.Println(hugo.BuildVersionString()) c.r.logger.Println() if terminal.IsTerminal(os.Stdout) { defer func() { fmt.Print(showCursor + clearLine) }() } copyStaticFunc := func() error { cnt, err := c.copyStatic() if err != nil { return fmt.Errorf("error copying static files: %w", err) } langCount = cnt return nil } buildSitesFunc := func() error { if err := c.buildSites(noBuildLock); err != nil { return fmt.Errorf("error building site: %w", err) } return nil } // Do not copy static files and build sites in parallel if cleanDestinationDir is enabled. // This flag deletes all static resources in /public folder that are missing in /static, // and it does so at the end of copyStatic() call. var cleanDestinationDir bool c.withConf(func(conf *commonConfig) { cleanDestinationDir = conf.configs.Base.CleanDestinationDir }) if cleanDestinationDir { if err := copyStaticFunc(); err != nil { return err } if err := buildSitesFunc(); err != nil { return err } } else { g.Go(copyStaticFunc) g.Go(buildSitesFunc) if err := g.Wait(); err != nil { return err } } h, err := c.hugo() if err != nil { return err } for _, s := range h.Sites { s.ProcessingStats.Static = langCount[s.Language().Lang] } if c.r.gc { count, err := h.GC() if err != nil { return err } for _, s := range h.Sites { // We have no way of knowing what site the garbage belonged to. s.ProcessingStats.Cleaned = uint64(count) } } return nil } func (c *hugoBuilder) fullRebuild(changeType string) { if changeType == configChangeGoMod { // go.mod may be changed during the build itself, and // we really want to prevent superfluous builds. if !c.fullRebuildSem.TryAcquire(1) { return } c.fullRebuildSem.Release(1) } c.fullRebuildSem.Acquire(context.Background(), 1) go func() { defer c.fullRebuildSem.Release(1) c.printChangeDetected(changeType) defer func() { // Allow any file system events to arrive basimplecobra. // This will block any rebuild on config changes for the // duration of the sleep. time.Sleep(2 * time.Second) }() defer c.postBuild("Rebuilt", time.Now()) err := c.reloadConfig() if err != nil { // Set the processing on pause until the state is recovered. c.errState.setPaused(true) c.handleBuildErr(err, "Failed to reload config") if c.s.doLiveReload { livereload.ForceRefresh() } } else { c.errState.setPaused(false) } if !c.errState.isPaused() { _, err := c.copyStatic() if err != nil { c.r.logger.Errorln(err) return } err = c.buildSites(false) if err != nil { c.r.logger.Errorln(err) } else if c.s != nil && c.s.doLiveReload { livereload.ForceRefresh() } } }() } func (c *hugoBuilder) handleBuildErr(err error, msg string) { c.errState.setBuildErr(err) c.r.logger.Errorln(msg + ": " + cleanErrorLog(err.Error())) } func (c *hugoBuilder) handleEvents(watcher *watcher.Batcher, staticSyncer *staticSyncer, evs []fsnotify.Event, configSet map[string]bool, ) { defer func() { c.errState.setWasErr(false) }() var isHandled bool // Filter out ghost events (from deleted, renamed directories). // This seems to be a bug in fsnotify, or possibly MacOS. var n int for _, ev := range evs { keep := true // Write and rename operations are often followed by CHMOD. // There may be valid use cases for rebuilding the site on CHMOD, // but that will require more complex logic than this simple conditional. // On OS X this seems to be related to Spotlight, see: // https://github.com/go-fsnotify/fsnotify/issues/15 // A workaround is to put your site(s) on the Spotlight exception list, // but that may be a little mysterious for most end users. // So, for now, we skip reload on CHMOD. // We do have to check for WRITE though. On slower laptops a Chmod // could be aggregated with other important events, and we still want // to rebuild on those if ev.Op == fsnotify.Chmod { keep = false } else if ev.Has(fsnotify.Create) || ev.Has(fsnotify.Write) { if _, err := os.Stat(ev.Name); err != nil { keep = false } } if keep { evs[n] = ev n++ } } evs = evs[:n] for _, ev := range evs { isConfig := configSet[ev.Name] configChangeType := configChangeConfig if isConfig { if strings.Contains(ev.Name, "go.mod") { configChangeType = configChangeGoMod } if strings.Contains(ev.Name, ".work") { configChangeType = configChangeGoWork } } if !isConfig { // It may be one of the /config folders dirname := filepath.Dir(ev.Name) if dirname != "." && configSet[dirname] { isConfig = true } } if isConfig { isHandled = true if ev.Op&fsnotify.Chmod == fsnotify.Chmod { continue } if ev.Op&fsnotify.Remove == fsnotify.Remove || ev.Op&fsnotify.Rename == fsnotify.Rename { c.withConf(func(conf *commonConfig) { for _, configFile := range conf.configs.LoadingInfo.ConfigFiles { counter := 0 for watcher.Add(configFile) != nil { counter++ if counter >= 100 { break } time.Sleep(100 * time.Millisecond) } } }) } // Config file(s) changed. Need full rebuild. c.fullRebuild(configChangeType) return } } if isHandled { return } if c.errState.isPaused() { // Wait for the server to get into a consistent state before // we continue with processing. return } if len(evs) > 50 { // This is probably a mass edit of the content dir. // Schedule a full rebuild for when it slows down. c.debounce(func() { c.fullRebuild("") }) return } c.r.logger.Debugln("Received System Events:", evs) staticEvents := []fsnotify.Event{} dynamicEvents := []fsnotify.Event{} filterDuplicateEvents := func(evs []fsnotify.Event) []fsnotify.Event { seen := make(map[string]bool) var n int for _, ev := range evs { if seen[ev.Name] { continue } seen[ev.Name] = true evs[n] = ev n++ } return evs[:n] } h, err := c.hugo() if err != nil { c.r.logger.Errorln("Error getting the Hugo object:", err) return } n = 0 for _, ev := range evs { if h.ShouldSkipFileChangeEvent(ev) { continue } evs[n] = ev n++ } evs = evs[:n] for _, ev := range evs { ext := filepath.Ext(ev.Name) baseName := filepath.Base(ev.Name) istemp := strings.HasSuffix(ext, "~") || (ext == ".swp") || // vim (ext == ".swx") || // vim (ext == ".bck") || // helix (ext == ".tmp") || // generic temp file (ext == ".DS_Store") || // OSX Thumbnail baseName == "4913" || // vim strings.HasPrefix(ext, ".goutputstream") || // gnome strings.HasSuffix(ext, "jb_old___") || // intelliJ strings.HasSuffix(ext, "jb_tmp___") || // intelliJ strings.HasSuffix(ext, "jb_bak___") || // intelliJ strings.HasPrefix(ext, ".sb-") || // byword strings.HasPrefix(baseName, ".#") || // emacs strings.HasPrefix(baseName, "#") // emacs if istemp { continue } if h.Deps.SourceSpec.IgnoreFile(ev.Name) { continue } // Sometimes during rm -rf operations a '"": REMOVE' is triggered. Just ignore these if ev.Name == "" { continue } walkAdder := func(path string, f hugofs.FileMetaInfo) error { if f.IsDir() { c.r.logger.Println("adding created directory to watchlist", path) if err := watcher.Add(path); err != nil { return err } } else if !staticSyncer.isStatic(h, path) { // Hugo's rebuilding logic is entirely file based. When you drop a new folder into // /content on OSX, the above logic will handle future watching of those files, // but the initial CREATE is lost. dynamicEvents = append(dynamicEvents, fsnotify.Event{Name: path, Op: fsnotify.Create}) } return nil } // recursively add new directories to watch list if ev.Has(fsnotify.Create) || ev.Has(fsnotify.Rename) { c.withConf(func(conf *commonConfig) { if s, err := conf.fs.Source.Stat(ev.Name); err == nil && s.Mode().IsDir() { _ = helpers.Walk(conf.fs.Source, ev.Name, walkAdder) } }) } if staticSyncer.isStatic(h, ev.Name) { staticEvents = append(staticEvents, ev) } else { dynamicEvents = append(dynamicEvents, ev) } } lrl := c.r.logger.InfoCommand("livereload") staticEvents = filterDuplicateEvents(staticEvents) dynamicEvents = filterDuplicateEvents(dynamicEvents) if len(staticEvents) > 0 { c.printChangeDetected("Static files") if c.r.forceSyncStatic { c.r.logger.Printf("Syncing all static files\n") _, err := c.copyStatic() if err != nil { c.r.logger.Errorln("Error copying static files to publish dir:", err) return } } else { if err := staticSyncer.syncsStaticEvents(staticEvents); err != nil { c.r.logger.Errorln("Error syncing static files to publish dir:", err) return } } if c.s != nil && c.s.doLiveReload { // Will block forever trying to write to a channel that nobody is reading if livereload isn't initialized if !c.errState.wasErr() && len(staticEvents) == 1 { h, err := c.hugo() if err != nil { c.r.logger.Errorln("Error getting the Hugo object:", err) return } path := h.BaseFs.SourceFilesystems.MakeStaticPathRelative(staticEvents[0].Name) path = h.RelURL(paths.ToSlashTrimLeading(path), false) lrl.Logf("refreshing static file %q", path) livereload.RefreshPath(path) } else { lrl.Logf("got %d static file change events, force refresh", len(staticEvents)) livereload.ForceRefresh() } } } if len(dynamicEvents) > 0 { partitionedEvents := partitionDynamicEvents( h.BaseFs.SourceFilesystems, dynamicEvents) onePageName := pickOneWriteOrCreatePath(h.Conf.ContentTypes(), partitionedEvents.ContentEvents) c.printChangeDetected("") c.changeDetector.PrepareNew() func() { defer c.postBuild("Total", time.Now()) if err := c.rebuildSites(dynamicEvents); err != nil { c.handleBuildErr(err, "Rebuild failed") } }() if c.s != nil && c.s.doLiveReload { if c.errState.wasErr() { livereload.ForceRefresh() return } changed := c.changeDetector.changed() if c.changeDetector != nil { if len(changed) >= 10 { lrl.Logf("build changed %d files", len(changed)) } else { lrl.Logf("build changed %d files: %q", len(changed), changed) } if len(changed) == 0 { // Nothing has changed. return } } // If this change set also contains one or more CSS files, we need to // refresh these as well. var cssChanges []string var otherChanges []string for _, ev := range changed { if strings.HasSuffix(ev, ".css") { cssChanges = append(cssChanges, ev) } else { otherChanges = append(otherChanges, ev) } } if len(partitionedEvents.ContentEvents) > 0 { navigate := c.s != nil && c.s.navigateToChanged // We have fetched the same page above, but it may have // changed. var p page.Page if navigate { if onePageName != "" { p = h.GetContentPage(onePageName) } } if p != nil && p.RelPermalink() != "" { link, port := p.RelPermalink(), p.Site().ServerPort() lrl.Logf("navigating to %q using port %d", link, port) livereload.NavigateToPathForPort(link, port) } else { lrl.Logf("no page to navigate to, force refresh") livereload.ForceRefresh() } } else if len(otherChanges) > 0 || len(cssChanges) > 0 { if len(otherChanges) == 1 { // Allow single changes to be refreshed without a full page reload. pathToRefresh := h.PathSpec.RelURL(paths.ToSlashTrimLeading(otherChanges[0]), false) lrl.Logf("refreshing %q", pathToRefresh) livereload.RefreshPath(pathToRefresh) } else if len(cssChanges) == 0 || len(otherChanges) > 1 { lrl.Logf("force refresh") livereload.ForceRefresh() } } else { lrl.Logf("force refresh") livereload.ForceRefresh() } if len(cssChanges) > 0 { // Allow some time for the live reload script to get reconnected. if len(otherChanges) > 0 { time.Sleep(200 * time.Millisecond) } for _, ev := range cssChanges { pathToRefresh := h.PathSpec.RelURL(paths.ToSlashTrimLeading(ev), false) lrl.Logf("refreshing CSS %q", pathToRefresh) livereload.RefreshPath(pathToRefresh) } } } } } func (c *hugoBuilder) postBuild(what string, start time.Time) { if h, err := c.hugo(); err == nil && h.Conf.Running() { h.LogServerAddresses() } c.r.timeTrack(start, what) } func (c *hugoBuilder) hugo() (*hugolib.HugoSites, error) { var h *hugolib.HugoSites if err := c.withConfE(func(conf *commonConfig) error { var err error h, err = c.r.HugFromConfig(conf) return err }); err != nil { return nil, err } if c.s != nil { // A running server, register the media types. for _, s := range h.Sites { s.RegisterMediaTypes() } } return h, nil } func (c *hugoBuilder) hugoTry() *hugolib.HugoSites { var h *hugolib.HugoSites c.withConf(func(conf *commonConfig) { h, _ = c.r.HugFromConfig(conf) }) return h } func (c *hugoBuilder) loadConfig(cd *simplecobra.Commandeer, running bool) error { if terminal.PrintANSIColors(os.Stdout) { defer c.progressHidden() // If the configuration takes a while to load, we want to show some progress. // This is typically loading of external modules. d := debounce.New(500 * time.Millisecond) d(func() { c.progressIntermediate() }) defer d(func() {}) } cfg := config.New() cfg.Set("renderToMemory", c.r.renderToMemory) watch := c.r.buildWatch || (c.s != nil && c.s.serverWatch) if c.r.environment == "" { // We need to set the environment as early as possible because we need it to load the correct config. // Check if the user has set it in env. if env := os.Getenv("HUGO_ENVIRONMENT"); env != "" { c.r.environment = env } else if env := os.Getenv("HUGO_ENV"); env != "" { c.r.environment = env } else { if c.s != nil { // The server defaults to development. c.r.environment = hugo.EnvironmentDevelopment } else { c.r.environment = hugo.EnvironmentProduction } } } cfg.Set("environment", c.r.environment) cfg.Set("internal", maps.Params{ "running": running, "watch": watch, "verbose": c.r.isVerbose(), "fastRenderMode": c.fastRenderMode, }) conf, err := c.r.ConfigFromProvider(configKey{counter: c.r.configVersionID.Load()}, flagsToCfg(cd, cfg)) if err != nil { return err } if len(conf.configs.LoadingInfo.ConfigFiles) == 0 { //lint:ignore ST1005 end user message. return errors.New("Unable to locate config file or config directory. Perhaps you need to create a new site.\nRun `hugo help new` for details.") } c.conf = conf if c.onConfigLoaded != nil { if err := c.onConfigLoaded(false); err != nil { return err } } return nil } var rebuildCounter atomic.Uint64 func (c *hugoBuilder) printChangeDetected(typ string) { msg := "\nChange" if typ != "" { msg += " of " + typ } msg += fmt.Sprintf(" detected, rebuilding site (#%d).", rebuildCounter.Add(1)) c.r.logger.Println(msg) const layout = "2006-01-02 15:04:05.000 -0700" c.r.logger.Println(htime.Now().Format(layout)) } func (c *hugoBuilder) rebuildSites(events []fsnotify.Event) (err error) { defer func() { c.errState.setBuildErr(err) }() if err := c.errState.buildErr(); err != nil { ferrs := herrors.UnwrapFileErrorsWithErrorContext(err) for _, err := range ferrs { events = append(events, fsnotify.Event{Name: err.Position().Filename, Op: fsnotify.Write}) } } var h *hugolib.HugoSites h, err = c.hugo() if err != nil { return } err = h.Build(hugolib.BuildCfg{NoBuildLock: true, RecentlyTouched: c.visitedURLs, ErrRecovery: c.errState.wasErr()}, events...) return } func (c *hugoBuilder) rebuildSitesForChanges(ids []identity.Identity) (err error) { defer func() { c.errState.setBuildErr(err) }() var h *hugolib.HugoSites h, err = c.hugo() if err != nil { return } whatChanged := &hugolib.WhatChanged{} whatChanged.Add(ids...) err = h.Build(hugolib.BuildCfg{NoBuildLock: true, WhatChanged: whatChanged, RecentlyTouched: c.visitedURLs, ErrRecovery: c.errState.wasErr()}) return } func (c *hugoBuilder) reloadConfig() error { c.r.resetLogs() c.r.configVersionID.Add(1) if err := c.withConfE(func(conf *commonConfig) error { oldConf := conf newConf, err := c.r.ConfigFromConfig(configKey{counter: c.r.configVersionID.Load()}, conf) if err != nil { return err } sameLen := len(oldConf.configs.Languages) == len(newConf.configs.Languages) if !sameLen { if oldConf.configs.IsMultihost || newConf.configs.IsMultihost { return errors.New("multihost change detected, please restart server") } } c.conf = newConf return nil }); err != nil { return err } if c.onConfigLoaded != nil { if err := c.onConfigLoaded(true); err != nil { return err } } return nil } gohugoio-hugo-6abdaca/commands/import.go000066400000000000000000000400741507671574500206050ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "bytes" "context" "errors" "fmt" "io" "log" "os" "path/filepath" "regexp" "strconv" "strings" "time" "unicode" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/htime" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/gohugoio/hugo/parser/pageparser" "github.com/spf13/afero" "github.com/spf13/cobra" ) func newImportCommand() *importCommand { var c *importCommand c = &importCommand{ commands: []simplecobra.Commander{ &simpleCommand{ name: "jekyll", short: "hugo import from Jekyll", long: `hugo import from Jekyll. Import from Jekyll requires two paths, e.g. ` + "`hugo import jekyll jekyll_root_path target_path`.", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 2 { return newUserError(`import from jekyll requires two paths, e.g. ` + "`hugo import jekyll jekyll_root_path target_path`.") } return c.importFromJekyll(args) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.Flags().BoolVar(&c.force, "force", false, "allow import into non-empty target directory") }, }, }, } return c } type importCommand struct { r *rootCommand force bool commands []simplecobra.Commander } func (c *importCommand) Commands() []simplecobra.Commander { return c.commands } func (c *importCommand) Name() string { return "import" } func (c *importCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return nil } func (c *importCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Import a site from another system" cmd.Long = `Import a site from another system. Import requires a subcommand, e.g. ` + "`hugo import jekyll jekyll_root_path target_path`." cmd.RunE = nil return nil } func (c *importCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) return nil } func (i *importCommand) createConfigFromJekyll(fs afero.Fs, inpath string, kind metadecoders.Format, jekyllConfig map[string]any) (err error) { title := "My New Hugo Site" baseURL := "http://example.org/" for key, value := range jekyllConfig { lowerKey := strings.ToLower(key) switch lowerKey { case "title": if str, ok := value.(string); ok { title = str } case "url": if str, ok := value.(string); ok { baseURL = str } } } in := map[string]any{ "baseURL": baseURL, "title": title, "languageCode": "en-us", "disablePathToLower": true, } var buf bytes.Buffer err = parser.InterfaceToConfig(in, kind, &buf) if err != nil { return err } return helpers.WriteToDisk(filepath.Join(inpath, "hugo."+string(kind)), &buf, fs) } func (c *importCommand) getJekyllDirInfo(fs afero.Fs, jekyllRoot string) (map[string]bool, bool) { postDirs := make(map[string]bool) hasAnyPost := false if entries, err := os.ReadDir(jekyllRoot); err == nil { for _, entry := range entries { if entry.IsDir() { subDir := filepath.Join(jekyllRoot, entry.Name()) if isPostDir, hasAnyPostInDir := c.retrieveJekyllPostDir(fs, subDir); isPostDir { postDirs[entry.Name()] = hasAnyPostInDir if hasAnyPostInDir { hasAnyPost = true } } } } } return postDirs, hasAnyPost } func (c *importCommand) createSiteFromJekyll(jekyllRoot, targetDir string, jekyllPostDirs map[string]bool) error { fs := &afero.OsFs{} if exists, _ := helpers.Exists(targetDir, fs); exists { if isDir, _ := helpers.IsDir(targetDir, fs); !isDir { return errors.New("target path \"" + targetDir + "\" exists but is not a directory") } isEmpty, _ := helpers.IsEmpty(targetDir, fs) if !isEmpty && !c.force { return errors.New("target path \"" + targetDir + "\" exists and is not empty") } } jekyllConfig := c.loadJekyllConfig(fs, jekyllRoot) mkdir(targetDir, "layouts") mkdir(targetDir, "content") mkdir(targetDir, "archetypes") mkdir(targetDir, "static") mkdir(targetDir, "data") mkdir(targetDir, "themes") c.createConfigFromJekyll(fs, targetDir, "yaml", jekyllConfig) c.copyJekyllFilesAndFolders(jekyllRoot, filepath.Join(targetDir, "static"), jekyllPostDirs) return nil } func (c *importCommand) convertJekyllContent(m any, content string) (string, error) { metadata, _ := maps.ToStringMapE(m) lines := strings.Split(content, "\n") var resultLines []string for _, line := range lines { resultLines = append(resultLines, strings.Trim(line, "\r\n")) } content = strings.Join(resultLines, "\n") excerptSep := "" if value, ok := metadata["excerpt_separator"]; ok { if str, strOk := value.(string); strOk { content = strings.Replace(content, strings.TrimSpace(str), excerptSep, -1) } } replaceList := []struct { re *regexp.Regexp replace string }{ {regexp.MustCompile("(?i)"), ""}, {regexp.MustCompile(`\{%\s*raw\s*%\}\s*(.*?)\s*\{%\s*endraw\s*%\}`), "$1"}, {regexp.MustCompile(`{%\s*endhighlight\s*%}`), "{{< / highlight >}}"}, } for _, replace := range replaceList { content = replace.re.ReplaceAllString(content, replace.replace) } replaceListFunc := []struct { re *regexp.Regexp replace func(string) string }{ // Octopress image tag: http://octopress.org/docs/plugins/image-tag/ {regexp.MustCompile(`{%\s+img\s*(.*?)\s*%}`), c.replaceImageTag}, {regexp.MustCompile(`{%\s*highlight\s*(.*?)\s*%}`), c.replaceHighlightTag}, } for _, replace := range replaceListFunc { content = replace.re.ReplaceAllStringFunc(content, replace.replace) } var buf bytes.Buffer if len(metadata) != 0 { err := parser.InterfaceToFrontMatter(m, metadecoders.YAML, &buf) if err != nil { return "", err } } buf.WriteString(content) return buf.String(), nil } func (c *importCommand) convertJekyllMetaData(m any, postName string, postDate time.Time, draft bool) (any, error) { metadata, err := maps.ToStringMapE(m) if err != nil { return nil, err } if draft { metadata["draft"] = true } for key, value := range metadata { lowerKey := strings.ToLower(key) switch lowerKey { case "layout": delete(metadata, key) case "permalink": if str, ok := value.(string); ok { metadata["url"] = str } delete(metadata, key) case "category": if str, ok := value.(string); ok { metadata["categories"] = []string{str} } delete(metadata, key) case "excerpt_separator": if key != lowerKey { delete(metadata, key) metadata[lowerKey] = value } case "date": if str, ok := value.(string); ok { re := regexp.MustCompile(`(\d+):(\d+):(\d+)`) r := re.FindAllStringSubmatch(str, -1) if len(r) > 0 { hour, _ := strconv.Atoi(r[0][1]) minute, _ := strconv.Atoi(r[0][2]) second, _ := strconv.Atoi(r[0][3]) postDate = time.Date(postDate.Year(), postDate.Month(), postDate.Day(), hour, minute, second, 0, time.UTC) } } delete(metadata, key) } } metadata["date"] = postDate.Format(time.RFC3339) return metadata, nil } func (c *importCommand) convertJekyllPost(path, relPath, targetDir string, draft bool) error { log.Println("Converting", path) filename := filepath.Base(path) postDate, postName, err := c.parseJekyllFilename(filename) if err != nil { c.r.Printf("Failed to parse filename '%s': %s. Skipping.", filename, err) return nil } log.Println(filename, postDate, postName) targetFile := filepath.Join(targetDir, relPath) targetParentDir := filepath.Dir(targetFile) os.MkdirAll(targetParentDir, 0o777) contentBytes, err := os.ReadFile(path) if err != nil { c.r.logger.Errorln("Read file error:", path) return err } pf, err := pageparser.ParseFrontMatterAndContent(bytes.NewReader(contentBytes)) if err != nil { return fmt.Errorf("failed to parse file %q: %s", filename, err) } newmetadata, err := c.convertJekyllMetaData(pf.FrontMatter, postName, postDate, draft) if err != nil { return fmt.Errorf("failed to convert metadata for file %q: %s", filename, err) } content, err := c.convertJekyllContent(newmetadata, string(pf.Content)) if err != nil { return fmt.Errorf("failed to convert content for file %q: %s", filename, err) } fs := hugofs.Os if err := helpers.WriteToDisk(targetFile, strings.NewReader(content), fs); err != nil { return fmt.Errorf("failed to save file %q: %s", filename, err) } return nil } func (c *importCommand) copyJekyllFilesAndFolders(jekyllRoot, dest string, jekyllPostDirs map[string]bool) (err error) { fs := hugofs.Os fi, err := fs.Stat(jekyllRoot) if err != nil { return err } if !fi.IsDir() { return errors.New(jekyllRoot + " is not a directory") } err = os.MkdirAll(dest, fi.Mode()) if err != nil { return err } entries, err := os.ReadDir(jekyllRoot) if err != nil { return err } for _, entry := range entries { sfp := filepath.Join(jekyllRoot, entry.Name()) dfp := filepath.Join(dest, entry.Name()) if entry.IsDir() { if entry.Name()[0] != '_' && entry.Name()[0] != '.' { if _, ok := jekyllPostDirs[entry.Name()]; !ok { err = hugio.CopyDir(fs, sfp, dfp, nil) if err != nil { c.r.logger.Errorln(err) } } } } else { lowerEntryName := strings.ToLower(entry.Name()) exceptSuffix := []string{ ".md", ".markdown", ".html", ".htm", ".xml", ".textile", "rakefile", "gemfile", ".lock", } isExcept := false for _, suffix := range exceptSuffix { if strings.HasSuffix(lowerEntryName, suffix) { isExcept = true break } } if !isExcept && entry.Name()[0] != '.' && entry.Name()[0] != '_' { err = hugio.CopyFile(fs, sfp, dfp) if err != nil { c.r.logger.Errorln(err) } } } } return nil } func (c *importCommand) importFromJekyll(args []string) error { jekyllRoot, err := filepath.Abs(filepath.Clean(args[0])) if err != nil { return newUserError("path error:", args[0]) } targetDir, err := filepath.Abs(filepath.Clean(args[1])) if err != nil { return newUserError("path error:", args[1]) } c.r.Println("Import Jekyll from:", jekyllRoot, "to:", targetDir) if strings.HasPrefix(filepath.Dir(targetDir), jekyllRoot) { return newUserError("abort: target path should not be inside the Jekyll root") } fs := afero.NewOsFs() jekyllPostDirs, hasAnyPost := c.getJekyllDirInfo(fs, jekyllRoot) if !hasAnyPost { return errors.New("abort: jekyll root contains neither posts nor drafts") } err = c.createSiteFromJekyll(jekyllRoot, targetDir, jekyllPostDirs) if err != nil { return newUserError(err) } c.r.Println("Importing...") fileCount := 0 callback := func(path string, fi hugofs.FileMetaInfo) error { if fi.IsDir() { return nil } relPath, err := filepath.Rel(jekyllRoot, path) if err != nil { return newUserError("get rel path error:", path) } relPath = filepath.ToSlash(relPath) draft := false switch { case strings.Contains(relPath, "_posts/"): relPath = filepath.Join("content/post", strings.Replace(relPath, "_posts/", "", -1)) case strings.Contains(relPath, "_drafts/"): relPath = filepath.Join("content/draft", strings.Replace(relPath, "_drafts/", "", -1)) draft = true default: return nil } fileCount++ return c.convertJekyllPost(path, relPath, targetDir, draft) } for jekyllPostDir, hasAnyPostInDir := range jekyllPostDirs { if hasAnyPostInDir { if err = helpers.Walk(hugofs.Os, filepath.Join(jekyllRoot, jekyllPostDir), callback); err != nil { return err } } } c.r.Println("Congratulations!", fileCount, "post(s) imported!") c.r.Println("Now, start Hugo by yourself:\n") c.r.Println("cd " + args[1]) c.r.Println("git init") c.r.Println("git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke") c.r.Println("echo \"theme = 'ananke'\" > hugo.toml") c.r.Println("hugo server") return nil } func (c *importCommand) loadJekyllConfig(fs afero.Fs, jekyllRoot string) map[string]any { path := filepath.Join(jekyllRoot, "_config.yml") exists, err := helpers.Exists(path, fs) if err != nil || !exists { c.r.Println("_config.yaml not found: Is the specified Jekyll root correct?") return nil } f, err := fs.Open(path) if err != nil { return nil } defer f.Close() b, err := io.ReadAll(f) if err != nil { return nil } m, err := metadecoders.Default.UnmarshalToMap(b, metadecoders.YAML) if err != nil { return nil } return m } func (c *importCommand) parseJekyllFilename(filename string) (time.Time, string, error) { re := regexp.MustCompile(`(\d+-\d+-\d+)-(.+)\..*`) r := re.FindAllStringSubmatch(filename, -1) if len(r) == 0 { return htime.Now(), "", errors.New("filename not match") } postDate, err := time.Parse("2006-1-2", r[0][1]) if err != nil { return htime.Now(), "", err } postName := r[0][2] return postDate, postName, nil } func (c *importCommand) replaceHighlightTag(match string) string { r := regexp.MustCompile(`{%\s*highlight\s*(.*?)\s*%}`) parts := r.FindStringSubmatch(match) lastQuote := rune(0) f := func(c rune) bool { switch { case c == lastQuote: lastQuote = rune(0) return false case lastQuote != rune(0): return false case unicode.In(c, unicode.Quotation_Mark): lastQuote = c return false default: return unicode.IsSpace(c) } } // splitting string by space but considering quoted section items := strings.FieldsFunc(parts[1], f) result := bytes.NewBufferString("{{< highlight ") result.WriteString(items[0]) // language options := items[1:] for i, opt := range options { opt = strings.Replace(opt, "\"", "", -1) if opt == "linenos" { opt = "linenos=table" } if i == 0 { opt = " \"" + opt } if i < len(options)-1 { opt += "," } else if i == len(options)-1 { opt += "\"" } result.WriteString(opt) } result.WriteString(" >}}") return result.String() } func (c *importCommand) replaceImageTag(match string) string { r := regexp.MustCompile(`{%\s+img\s*(\p{L}*)\s+([\S]*/[\S]+)\s+(\d*)\s*(\d*)\s*(.*?)\s*%}`) result := bytes.NewBufferString("{{< figure ") parts := r.FindStringSubmatch(match) // Index 0 is the entire string, ignore c.replaceOptionalPart(result, "class", parts[1]) c.replaceOptionalPart(result, "src", parts[2]) c.replaceOptionalPart(result, "width", parts[3]) c.replaceOptionalPart(result, "height", parts[4]) // title + alt part := parts[5] if len(part) > 0 { splits := strings.Split(part, "'") lenSplits := len(splits) if lenSplits == 1 { c.replaceOptionalPart(result, "title", splits[0]) } else if lenSplits == 3 { c.replaceOptionalPart(result, "title", splits[1]) } else if lenSplits == 5 { c.replaceOptionalPart(result, "title", splits[1]) c.replaceOptionalPart(result, "alt", splits[3]) } } result.WriteString(">}}") return result.String() } func (c *importCommand) replaceOptionalPart(buffer *bytes.Buffer, partName string, part string) { if len(part) > 0 { buffer.WriteString(partName + "=\"" + part + "\" ") } } func (c *importCommand) retrieveJekyllPostDir(fs afero.Fs, dir string) (bool, bool) { if strings.HasSuffix(dir, "_posts") || strings.HasSuffix(dir, "_drafts") { isEmpty, _ := helpers.IsEmpty(dir, fs) return true, !isEmpty } if entries, err := os.ReadDir(dir); err == nil { for _, entry := range entries { if entry.IsDir() { subDir := filepath.Join(dir, entry.Name()) if isPostDir, hasAnyPost := c.retrieveJekyllPostDir(fs, subDir); isPostDir { return isPostDir, hasAnyPost } } } } return false, true } gohugoio-hugo-6abdaca/commands/list.go000066400000000000000000000133471507671574500202510ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "context" "encoding/csv" "os" "path/filepath" "strconv" "strings" "time" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/resource" "github.com/spf13/cobra" ) // newListCommand creates a new list command and its subcommands. func newListCommand() *listCommand { createRecord := func(workingDir string, p page.Page) []string { return []string{ filepath.ToSlash(strings.TrimPrefix(p.File().Filename(), workingDir+string(os.PathSeparator))), p.Slug(), p.Title(), p.Date().Format(time.RFC3339), p.ExpiryDate().Format(time.RFC3339), p.PublishDate().Format(time.RFC3339), strconv.FormatBool(p.Draft()), p.Permalink(), p.Kind(), p.Section(), } } list := func(cd *simplecobra.Commandeer, r *rootCommand, shouldInclude func(page.Page) bool, opts ...any) error { bcfg := hugolib.BuildCfg{SkipRender: true} cfg := flagsToCfg(cd, nil) for i := 0; i < len(opts); i += 2 { cfg.Set(opts[i].(string), opts[i+1]) } h, err := r.Build(cd, bcfg, cfg) if err != nil { return err } writer := csv.NewWriter(r.StdOut) defer writer.Flush() writer.Write([]string{ "path", "slug", "title", "date", "expiryDate", "publishDate", "draft", "permalink", "kind", "section", }) for _, p := range h.Pages() { if shouldInclude(p) { record := createRecord(h.Conf.BaseConfig().WorkingDir, p) if err := writer.Write(record); err != nil { return err } } } return nil } return &listCommand{ commands: []simplecobra.Commander{ &simpleCommand{ name: "drafts", short: "List draft content", long: `List draft content.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { if !p.Draft() || p.File() == nil { return false } return true } return list(cd, r, shouldInclude, "buildDrafts", true, "buildFuture", true, "buildExpired", true, ) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "future", short: "List future content", long: `List content with a future publication date.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { if !resource.IsFuture(p) || p.File() == nil { return false } return true } return list(cd, r, shouldInclude, "buildFuture", true, "buildDrafts", true, ) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "expired", short: "List expired content", long: `List content with a past expiration date.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { if !resource.IsExpired(p) || p.File() == nil { return false } return true } return list(cd, r, shouldInclude, "buildExpired", true, "buildDrafts", true, ) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "all", short: "List all content", long: `List all content including draft, future, and expired.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { return p.File() != nil } return list(cd, r, shouldInclude, "buildDrafts", true, "buildFuture", true, "buildExpired", true) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "published", short: "List published content", long: `List content that is not draft, future, or expired.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { return !p.Draft() && !resource.IsFuture(p) && !resource.IsExpired(p) && p.File() != nil } return list(cd, r, shouldInclude) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, }, } } type listCommand struct { commands []simplecobra.Commander } func (c *listCommand) Commands() []simplecobra.Commander { return c.commands } func (c *listCommand) Name() string { return "list" } func (c *listCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { // Do nothing. return nil } func (c *listCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "List content" cmd.Long = `List content. List requires a subcommand, e.g. hugo list drafts` cmd.RunE = nil return nil } func (c *listCommand) PreRun(cd, runner *simplecobra.Commandeer) error { return nil } gohugoio-hugo-6abdaca/commands/mod.go000066400000000000000000000263241507671574500200540ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "context" "errors" "os" "path/filepath" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/modules/npm" "github.com/spf13/cobra" ) const commonUsageMod = ` Note that Hugo will always start out by resolving the components defined in the site configuration, provided by a _vendor directory (if no --ignoreVendorPaths flag provided), Go Modules, or a folder inside the themes directory, in that order. See https://gohugo.io/hugo-modules/ for more information. ` // buildConfigCommands creates a new config command and its subcommands. func newModCommands() *modCommands { var ( clean bool pattern string all bool ) npmCommand := &simpleCommand{ name: "npm", short: "Various npm helpers", long: `Various npm (Node package manager) helpers.`, commands: []simplecobra.Commander{ &simpleCommand{ name: "pack", short: "Experimental: Prepares and writes a composite package.json file for your project", long: `Prepares and writes a composite package.json file for your project. On first run it creates a "package.hugo.json" in the project root if not already there. This file will be used as a template file with the base dependency set. This set will be merged with all "package.hugo.json" files found in the dependency tree, picking the version closest to the project. This command is marked as 'Experimental'. We think it's a great idea, so it's not likely to be removed from Hugo, but we need to test this out in "real life" to get a feel of it, so this may/will change in future versions of Hugo. `, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } return npm.Pack(h.BaseFs.ProjectSourceFs, h.BaseFs.AssetsWithDuplicatesPreserved.Fs) }, }, }, } return &modCommands{ commands: []simplecobra.Commander{ &simpleCommand{ name: "init", short: "Initialize this project as a Hugo Module", long: `Initialize this project as a Hugo Module. It will try to guess the module path, but you may help by passing it as an argument, e.g: hugo mod init github.com/gohugoio/testshortcodes Note that Hugo Modules supports multi-module projects, so you can initialize a Hugo Module inside a subfolder on GitHub, as one example. `, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.getOrCreateHugo(flagsToCfg(cd, nil), true) if err != nil { return err } var initPath string if len(args) >= 1 { initPath = args[0] } c := h.Configs.ModulesClient if err := c.Init(initPath); err != nil { return err } return nil }, }, &simpleCommand{ name: "verify", short: "Verify dependencies", long: `Verify checks that the dependencies of the current module, which are stored in a local downloaded source cache, have not been modified since being downloaded.`, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) cmd.Flags().BoolVarP(&clean, "clean", "", false, "delete module cache for dependencies that fail verification") }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { conf, err := r.ConfigFromProvider(configKey{counter: r.configVersionID.Load()}, flagsToCfg(cd, nil)) if err != nil { return err } client := conf.configs.ModulesClient return client.Verify(clean) }, }, &simpleCommand{ name: "graph", short: "Print a module dependency graph", long: `Print a module dependency graph with information about module status (disabled, vendored). Note that for vendored modules, that is the version listed and not the one from go.mod. `, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) cmd.Flags().BoolVarP(&clean, "clean", "", false, "delete module cache for dependencies that fail verification") }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { conf, err := r.ConfigFromProvider(configKey{counter: r.configVersionID.Load()}, flagsToCfg(cd, nil)) if err != nil { return err } client := conf.configs.ModulesClient return client.Graph(os.Stdout) }, }, &simpleCommand{ name: "clean", short: "Delete the Hugo Module cache for the current project", long: `Delete the Hugo Module cache for the current project.`, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) cmd.Flags().StringVarP(&pattern, "pattern", "", "", `pattern matching module paths to clean (all if not set), e.g. "**hugo*"`) _ = cmd.RegisterFlagCompletionFunc("pattern", cobra.NoFileCompletions) cmd.Flags().BoolVarP(&all, "all", "", false, "clean entire module cache") }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } if all { modCache := h.ResourceSpec.FileCaches.ModulesCache() count, err := modCache.Prune(true) r.Printf("Deleted %d files from module cache.", count) return err } return h.Configs.ModulesClient.Clean(pattern) }, }, &simpleCommand{ name: "tidy", short: "Remove unused entries in go.mod and go.sum", withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } return h.Configs.ModulesClient.Tidy() }, }, &simpleCommand{ name: "vendor", short: "Vendor all module dependencies into the _vendor directory", long: `Vendor all module dependencies into the _vendor directory. If a module is vendored, that is where Hugo will look for it's dependencies. `, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } return h.Configs.ModulesClient.Vendor() }, }, &simpleCommand{ name: "get", short: "Resolves dependencies in your current Hugo project", long: ` Resolves dependencies in your current Hugo project. Some examples: Install the latest version possible for a given module: hugo mod get github.com/gohugoio/testshortcodes Install a specific version: hugo mod get github.com/gohugoio/testshortcodes@v0.3.0 Install the latest versions of all direct module dependencies: hugo mod get hugo mod get ./... (recursive) Install the latest versions of all module dependencies (direct and indirect): hugo mod get -u hugo mod get -u ./... (recursive) Run "go help get" for more information. All flags available for "go get" is also relevant here. ` + commonUsageMod, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.DisableFlagParsing = true cmd.ValidArgsFunction = cobra.NoFileCompletions }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { // We currently just pass on the flags we get to Go and // need to do the flag handling manually. if len(args) == 1 && (args[0] == "-h" || args[0] == "--help") { return errHelp } var lastArg string if len(args) != 0 { lastArg = args[len(args)-1] } if lastArg == "./..." { args = args[:len(args)-1] // Do a recursive update. dirname, err := os.Getwd() if err != nil { return err } // Sanity chesimplecobra. We do recursive walking and want to avoid // accidents. if len(dirname) < 5 { return errors.New("must not be run from the file system root") } filepath.Walk(dirname, func(path string, info os.FileInfo, err error) error { if info.IsDir() { return nil } if info.Name() == "go.mod" { // Found a module. dir := filepath.Dir(path) cfg := config.New() cfg.Set("workingDir", dir) conf, err := r.ConfigFromProvider(configKey{counter: r.configVersionID.Add(1)}, flagsToCfg(cd, cfg)) if err != nil { return err } r.Println("Update module in", conf.configs.Base.WorkingDir) client := conf.configs.ModulesClient return client.Get(args...) } return nil }) return nil } else { conf, err := r.ConfigFromProvider(configKey{counter: r.configVersionID.Load()}, flagsToCfg(cd, nil)) if err != nil { return err } client := conf.configs.ModulesClient return client.Get(args...) } }, }, npmCommand, }, } } type modCommands struct { r *rootCommand commands []simplecobra.Commander } func (c *modCommands) Commands() []simplecobra.Commander { return c.commands } func (c *modCommands) Name() string { return "mod" } func (c *modCommands) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { _, err := c.r.ConfigFromProvider(configKey{counter: c.r.configVersionID.Load()}, nil) if err != nil { return err } // config := conf.configs.Base return nil } func (c *modCommands) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Manage modules" cmd.Long = `Various helpers to help manage the modules in your project's dependency graph. Most operations here requires a Go version installed on your system (>= Go 1.12) and the relevant VCS client (typically Git). This is not needed if you only operate on modules inside /themes or if you have vendored them via "hugo mod vendor". ` + commonUsageMod cmd.RunE = nil return nil } func (c *modCommands) PreRun(cd, runner *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) return nil } gohugoio-hugo-6abdaca/commands/new.go000066400000000000000000000173041507671574500200640ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "bytes" "context" "path/filepath" "strings" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/create" "github.com/gohugoio/hugo/create/skeletons" "github.com/spf13/cobra" ) func newNewCommand() *newCommand { var ( force bool contentType string format string ) var c *newCommand c = &newCommand{ commands: []simplecobra.Commander{ &simpleCommand{ name: "content", use: "content [path]", short: "Create new content", long: `Create a new content file and automatically set the date and title. It will guess which kind of file to create based on the path provided. You can also specify the kind with ` + "`-k KIND`" + `. If archetypes are provided in your theme or site, they will be used. Ensure you run this within the root directory of your site.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 1 { return newUserError("path needs to be provided") } cfg := flagsToCfg(cd, nil) cfg.Set("BuildFuture", true) h, err := r.Hugo(cfg) if err != nil { return err } return create.NewContent(h, contentType, args[0], force) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { if len(args) != 0 { return []string{}, cobra.ShellCompDirectiveNoFileComp } return []string{}, cobra.ShellCompDirectiveNoFileComp | cobra.ShellCompDirectiveFilterDirs } cmd.Flags().StringVarP(&contentType, "kind", "k", "", "content type to create") cmd.Flags().String("editor", "", "edit new content with this editor, if provided") _ = cmd.RegisterFlagCompletionFunc("editor", cobra.NoFileCompletions) cmd.Flags().BoolVarP(&force, "force", "f", false, "overwrite file if it already exists") applyLocalFlagsBuildConfig(cmd, r) }, }, &simpleCommand{ name: "site", use: "site [path]", short: "Create a new site", long: `Create a new site at the specified path.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 1 { return newUserError("path needs to be provided") } createpath, err := filepath.Abs(filepath.Clean(args[0])) if err != nil { return err } cfg := config.New() cfg.Set("workingDir", createpath) cfg.Set("publishDir", "public") conf, err := r.ConfigFromProvider(configKey{counter: r.configVersionID.Load()}, flagsToCfg(cd, cfg)) if err != nil { return err } sourceFs := conf.fs.Source err = skeletons.CreateSite(createpath, sourceFs, force, format) if err != nil { return err } r.Printf("Congratulations! Your new Hugo site was created in %s.\n\n", createpath) r.Println(c.newSiteNextStepsText(createpath, format)) return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { if len(args) != 0 { return []string{}, cobra.ShellCompDirectiveNoFileComp } return []string{}, cobra.ShellCompDirectiveNoFileComp | cobra.ShellCompDirectiveFilterDirs } cmd.Flags().BoolVarP(&force, "force", "f", false, "init inside non-empty directory") cmd.Flags().StringVar(&format, "format", "toml", "preferred file format (toml, yaml or json)") _ = cmd.RegisterFlagCompletionFunc("format", cobra.FixedCompletions([]string{"toml", "yaml", "json"}, cobra.ShellCompDirectiveNoFileComp)) }, }, &simpleCommand{ name: "theme", use: "theme [name]", short: "Create a new theme", long: `Create a new theme with the specified name in the ./themes directory. This generates a functional theme including template examples and sample content.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 1 { return newUserError("theme name needs to be provided") } cfg := config.New() cfg.Set("publishDir", "public") conf, err := r.ConfigFromProvider(configKey{counter: r.configVersionID.Load()}, flagsToCfg(cd, cfg)) if err != nil { return err } sourceFs := conf.fs.Source createpath := paths.AbsPathify(conf.configs.Base.WorkingDir, filepath.Join(conf.configs.Base.ThemesDir, args[0])) r.Println("Creating new theme in", createpath) err = skeletons.CreateTheme(createpath, sourceFs, format) if err != nil { return err } return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { if len(args) != 0 { return []string{}, cobra.ShellCompDirectiveNoFileComp } return []string{}, cobra.ShellCompDirectiveNoFileComp | cobra.ShellCompDirectiveFilterDirs } cmd.Flags().StringVar(&format, "format", "toml", "preferred file format (toml, yaml or json)") _ = cmd.RegisterFlagCompletionFunc("format", cobra.FixedCompletions([]string{"toml", "yaml", "json"}, cobra.ShellCompDirectiveNoFileComp)) }, }, }, } return c } type newCommand struct { rootCmd *rootCommand commands []simplecobra.Commander } func (c *newCommand) Commands() []simplecobra.Commander { return c.commands } func (c *newCommand) Name() string { return "new" } func (c *newCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return nil } func (c *newCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Create new content" cmd.Long = `Create a new content file and automatically set the date and title. It will guess which kind of file to create based on the path provided. You can also specify the kind with ` + "`-k KIND`" + `. If archetypes are provided in your theme or site, they will be used. Ensure you run this within the root directory of your site.` cmd.RunE = nil return nil } func (c *newCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.rootCmd = cd.Root.Command.(*rootCommand) return nil } func (c *newCommand) newSiteNextStepsText(path string, format string) string { format = strings.ToLower(format) var nextStepsText bytes.Buffer nextStepsText.WriteString(`Just a few more steps... 1. Change the current directory to ` + path + `. 2. Create or install a theme: - Create a new theme with the command "hugo new theme " - Or, install a theme from https://themes.gohugo.io/ 3. Edit hugo.` + format + `, setting the "theme" property to the theme name. 4. Create new content with the command "hugo new content `) nextStepsText.WriteString(filepath.Join("", ".")) nextStepsText.WriteString(`". 5. Start the embedded web server with the command "hugo server --buildDrafts". See documentation at https://gohugo.io/.`) return nextStepsText.String() } gohugoio-hugo-6abdaca/commands/release.go000066400000000000000000000035061507671574500207120ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "context" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/releaser" "github.com/spf13/cobra" ) // Note: This is a command only meant for internal use and must be run // via "go run -tags release main.go release" on the actual code base that is in the release. func newReleaseCommand() simplecobra.Commander { var ( step int skipPush bool try bool ) return &simpleCommand{ name: "release", short: "Release a new version of Hugo", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { rel, err := releaser.New(skipPush, try, step) if err != nil { return err } return rel.Run() }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.Hidden = true cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().BoolVarP(&skipPush, "skip-push", "", false, "skip pushing to remote") cmd.PersistentFlags().BoolVarP(&try, "try", "", false, "no changes") cmd.PersistentFlags().IntVarP(&step, "step", "", 0, "step to run (1: set new version 2: prepare next dev version)") _ = cmd.RegisterFlagCompletionFunc("step", cobra.FixedCompletions([]string{"1", "2"}, cobra.ShellCompDirectiveNoFileComp)) }, } } gohugoio-hugo-6abdaca/commands/server.go000066400000000000000000001044721507671574500206040ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package commands import ( "bytes" "context" "crypto/tls" "crypto/x509" "encoding/json" "encoding/pem" "errors" "fmt" "io" "maps" "net" "net/http" _ "net/http/pprof" "net/url" "os" "os/signal" "path" "path/filepath" "regexp" "sort" "strconv" "strings" "sync" "sync/atomic" "syscall" "time" "github.com/bep/mclib" "github.com/pkg/browser" "github.com/bep/debounce" "github.com/bep/simplecobra" "github.com/fsnotify/fsnotify" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/tpl/tplimpl" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/urls" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/hugolib/filesystems" "github.com/gohugoio/hugo/livereload" "github.com/gohugoio/hugo/transform" "github.com/gohugoio/hugo/transform/livereloadinject" "github.com/spf13/afero" "github.com/spf13/cobra" "github.com/spf13/fsync" "golang.org/x/sync/errgroup" "golang.org/x/sync/semaphore" ) var ( logDuplicateTemplateExecuteRe = regexp.MustCompile(`: template: .*?:\d+:\d+: executing ".*?"`) logDuplicateTemplateParseRe = regexp.MustCompile(`: template: .*?:\d+:\d*`) ) var logReplacer = strings.NewReplacer( "can't", "can’t", // Chroma lexer doesn't do well with "can't" "*hugolib.pageState", "page.Page", // Page is the public interface. "Rebuild failed:", "", ) const ( configChangeConfig = "config file" configChangeGoMod = "go.mod file" configChangeGoWork = "go work file" ) const ( hugoHeaderRedirect = "X-Hugo-Redirect" ) func newHugoBuilder(r *rootCommand, s *serverCommand, onConfigLoaded ...func(reloaded bool) error) *hugoBuilder { var visitedURLs *types.EvictingQueue[string] if s != nil && !s.disableFastRender { visitedURLs = types.NewEvictingQueue[string](20) } return &hugoBuilder{ r: r, s: s, visitedURLs: visitedURLs, fullRebuildSem: semaphore.NewWeighted(1), debounce: debounce.New(4 * time.Second), onConfigLoaded: func(reloaded bool) error { for _, wc := range onConfigLoaded { if err := wc(reloaded); err != nil { return err } } return nil }, } } func newServerCommand() *serverCommand { // Flags. var uninstall bool c := &serverCommand{ quit: make(chan bool), commands: []simplecobra.Commander{ &simpleCommand{ name: "trust", short: "Install the local CA in the system trust store", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { action := "-install" if uninstall { action = "-uninstall" } os.Args = []string{action} return mclib.RunMain() }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.Flags().BoolVar(&uninstall, "uninstall", false, "Uninstall the local CA (but do not delete it).") }, }, }, } return c } func (c *serverCommand) Commands() []simplecobra.Commander { return c.commands } type countingStatFs struct { afero.Fs statCounter uint64 } func (fs *countingStatFs) Stat(name string) (os.FileInfo, error) { f, err := fs.Fs.Stat(name) if err == nil { if !f.IsDir() { atomic.AddUint64(&fs.statCounter, 1) } } return f, err } // dynamicEvents contains events that is considered dynamic, as in "not static". // Both of these categories will trigger a new build, but the asset events // does not fit into the "navigate to changed" logic. type dynamicEvents struct { ContentEvents []fsnotify.Event AssetEvents []fsnotify.Event } type fileChangeDetector struct { sync.Mutex current map[string]uint64 prev map[string]uint64 irrelevantRe *regexp.Regexp } func (f *fileChangeDetector) OnFileClose(name string, checksum uint64) { f.Lock() defer f.Unlock() f.current[name] = checksum } func (f *fileChangeDetector) PrepareNew() { if f == nil { return } f.Lock() defer f.Unlock() if f.current == nil { f.current = make(map[string]uint64) f.prev = make(map[string]uint64) return } f.prev = make(map[string]uint64) maps.Copy(f.prev, f.current) f.current = make(map[string]uint64) } func (f *fileChangeDetector) changed() []string { if f == nil { return nil } f.Lock() defer f.Unlock() var c []string for k, v := range f.current { vv, found := f.prev[k] if !found || v != vv { c = append(c, k) } } return f.filterIrrelevantAndSort(c) } func (f *fileChangeDetector) filterIrrelevantAndSort(in []string) []string { var filtered []string for _, v := range in { if !f.irrelevantRe.MatchString(v) { filtered = append(filtered, v) } } sort.Strings(filtered) return filtered } type fileServer struct { baseURLs []urls.BaseURL roots []string errorTemplate func(err any) (io.Reader, error) c *serverCommand } func (f *fileServer) createEndpoint(i int) (*http.ServeMux, net.Listener, string, string, error) { r := f.c.r baseURL := f.baseURLs[i] root := f.roots[i] port := f.c.serverPorts[i].p listener := f.c.serverPorts[i].ln logger := f.c.r.logger if i == 0 { r.Printf("Environment: %q\n", f.c.hugoTry().Deps.Site.Hugo().Environment) mainTarget := "disk" if f.c.r.renderToMemory { mainTarget = "memory" } if f.c.renderStaticToDisk { r.Printf("Serving pages from %s and static files from disk\n", mainTarget) } else { r.Printf("Serving pages from %s\n", mainTarget) } } var httpFs *afero.HttpFs f.c.withConf(func(conf *commonConfig) { httpFs = afero.NewHttpFs(conf.fs.PublishDirServer) }) fs := filesOnlyFs{httpFs.Dir(path.Join("/", root))} if i == 0 && f.c.fastRenderMode { r.Println("Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender") } decorate := func(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if f.c.showErrorInBrowser { // First check the error state err := f.c.getErrorWithContext() if err != nil { f.c.errState.setWasErr(true) w.WriteHeader(500) r, err := f.errorTemplate(err) if err != nil { logger.Errorln(err) } port = 1313 f.c.withConf(func(conf *commonConfig) { if lrport := conf.configs.GetFirstLanguageConfig().BaseURLLiveReload().Port(); lrport != 0 { port = lrport } }) lr := baseURL.URL() lr.Host = fmt.Sprintf("%s:%d", lr.Hostname(), port) fmt.Fprint(w, injectLiveReloadScript(r, lr)) return } } if f.c.noHTTPCache { w.Header().Set("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0") w.Header().Set("Pragma", "no-cache") } var serverConfig config.Server f.c.withConf(func(conf *commonConfig) { serverConfig = conf.configs.Base.Server }) // Ignore any query params for the operations below. requestURI, _ := url.PathUnescape(strings.TrimSuffix(r.RequestURI, "?"+r.URL.RawQuery)) for _, header := range serverConfig.MatchHeaders(requestURI) { w.Header().Set(header.Key, header.Value) } if canRedirect(requestURI, r) { if redirect := serverConfig.MatchRedirect(requestURI, r.Header); !redirect.IsZero() { doRedirect := true // This matches Netlify's behavior and is needed for SPA behavior. // See https://docs.netlify.com/routing/redirects/rewrites-proxies/ if !redirect.Force { path := filepath.Clean(strings.TrimPrefix(requestURI, baseURL.Path())) if root != "" { path = filepath.Join(root, path) } var fs afero.Fs f.c.withConf(func(conf *commonConfig) { fs = conf.fs.PublishDirServer }) fi, err := fs.Stat(path) if err == nil { if fi.IsDir() { // There will be overlapping directories, so we // need to check for a file. _, err = fs.Stat(filepath.Join(path, "index.html")) doRedirect = err != nil } else { doRedirect = false } } } if doRedirect { w.Header().Set(hugoHeaderRedirect, "true") switch redirect.Status { case 404: w.WriteHeader(404) file, err := fs.Open(strings.TrimPrefix(redirect.To, baseURL.Path())) if err == nil { defer file.Close() io.Copy(w, file) } else { fmt.Fprintln(w, "

Page Not Found

") } return case 200: if r2 := f.rewriteRequest(r, strings.TrimPrefix(redirect.To, baseURL.Path())); r2 != nil { requestURI = redirect.To r = r2 } default: w.Header().Set("Content-Type", "") http.Redirect(w, r, redirect.To, redirect.Status) return } } } } if f.c.fastRenderMode && f.c.errState.buildErr() == nil { if isNavigation(requestURI, r) { if !f.c.visitedURLs.Contains(requestURI) { // If not already on stack, re-render that single page. if err := f.c.partialReRender(requestURI); err != nil { f.c.handleBuildErr(err, fmt.Sprintf("Failed to render %q", requestURI)) if f.c.showErrorInBrowser { http.Redirect(w, r, requestURI, http.StatusMovedPermanently) return } } } f.c.visitedURLs.Add(requestURI) } } h.ServeHTTP(w, r) }) } fileserver := decorate(http.FileServer(fs)) mu := http.NewServeMux() if baseURL.Path() == "" || baseURL.Path() == "/" { mu.Handle("/", fileserver) } else { mu.Handle(baseURL.Path(), http.StripPrefix(baseURL.Path(), fileserver)) } if r.IsTestRun() { var shutDownOnce sync.Once mu.HandleFunc("/__stop", func(w http.ResponseWriter, r *http.Request) { shutDownOnce.Do(func() { close(f.c.quit) }) }) } endpoint := net.JoinHostPort(f.c.serverInterface, strconv.Itoa(port)) return mu, listener, baseURL.String(), endpoint, nil } func (f *fileServer) rewriteRequest(r *http.Request, toPath string) *http.Request { r2 := new(http.Request) *r2 = *r r2.URL = new(url.URL) *r2.URL = *r.URL r2.URL.Path = toPath r2.Header.Set("X-Rewrite-Original-URI", r.URL.RequestURI()) return r2 } type filesOnlyFs struct { fs http.FileSystem } func (fs filesOnlyFs) Open(name string) (http.File, error) { f, err := fs.fs.Open(name) if err != nil { return nil, err } return noDirFile{f}, nil } type noDirFile struct { http.File } func (f noDirFile) Readdir(count int) ([]os.FileInfo, error) { return nil, nil } type serverCommand struct { r *rootCommand commands []simplecobra.Commander *hugoBuilder quit chan bool // Closed when the server should shut down. Used in tests only. serverPorts []serverPortListener doLiveReload bool // Flags. renderStaticToDisk bool navigateToChanged bool openBrowser bool serverAppend bool serverInterface string tlsCertFile string tlsKeyFile string tlsAuto bool pprof bool serverPort int liveReloadPort int serverWatch bool noHTTPCache bool disableLiveReload bool disableFastRender bool disableBrowserError bool } func (c *serverCommand) Name() string { return "server" } func (c *serverCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { if c.pprof { go func() { http.ListenAndServe("localhost:8080", nil) }() } // Watch runs its own server as part of the routine if c.serverWatch { watchDirs, err := c.getDirList() if err != nil { return err } watchGroups := helpers.ExtractAndGroupRootPaths(watchDirs) for _, group := range watchGroups { c.r.Printf("Watching for changes in %s\n", group) } watcher, err := c.newWatcher(c.r.poll, watchDirs...) if err != nil { return err } defer watcher.Close() } err := func() error { defer c.r.timeTrack(time.Now(), "Built") return c.build() }() if err != nil { return err } return c.serve() } func (c *serverCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Start the embedded web server" cmd.Long = `Hugo provides its own webserver which builds and serves the site. While hugo server is high performance, it is a webserver with limited options. The ` + "`" + `hugo server` + "`" + ` command will by default write and serve files from disk, but you can render to memory by using the ` + "`" + `--renderToMemory` + "`" + ` flag. This can be faster in some cases, but it will consume more memory. By default hugo will also watch your files for any changes you make and automatically rebuild the site. It will then live reload any open browser pages and push the latest content to them. As most Hugo sites are built in a fraction of a second, you will be able to save and see your changes nearly instantly.` cmd.Aliases = []string{"serve"} cmd.Flags().IntVarP(&c.serverPort, "port", "p", 1313, "port on which the server will listen") _ = cmd.RegisterFlagCompletionFunc("port", cobra.NoFileCompletions) cmd.Flags().IntVar(&c.liveReloadPort, "liveReloadPort", -1, "port for live reloading (i.e. 443 in HTTPS proxy situations)") _ = cmd.RegisterFlagCompletionFunc("liveReloadPort", cobra.NoFileCompletions) cmd.Flags().StringVarP(&c.serverInterface, "bind", "", "127.0.0.1", "interface to which the server will bind") _ = cmd.RegisterFlagCompletionFunc("bind", cobra.NoFileCompletions) cmd.Flags().StringVarP(&c.tlsCertFile, "tlsCertFile", "", "", "path to TLS certificate file") _ = cmd.MarkFlagFilename("tlsCertFile", "pem") cmd.Flags().StringVarP(&c.tlsKeyFile, "tlsKeyFile", "", "", "path to TLS key file") _ = cmd.MarkFlagFilename("tlsKeyFile", "pem") cmd.Flags().BoolVar(&c.tlsAuto, "tlsAuto", false, "generate and use locally-trusted certificates.") cmd.Flags().BoolVar(&c.pprof, "pprof", false, "enable the pprof server (port 8080)") cmd.Flags().BoolVarP(&c.serverWatch, "watch", "w", true, "watch filesystem for changes and recreate as needed") cmd.Flags().BoolVar(&c.noHTTPCache, "noHTTPCache", false, "prevent HTTP caching") cmd.Flags().BoolVarP(&c.serverAppend, "appendPort", "", true, "append port to baseURL") cmd.Flags().BoolVar(&c.disableLiveReload, "disableLiveReload", false, "watch without enabling live browser reload on rebuild") cmd.Flags().BoolVarP(&c.navigateToChanged, "navigateToChanged", "N", false, "navigate to changed content file on live browser reload") cmd.Flags().BoolVarP(&c.openBrowser, "openBrowser", "O", false, "open the site in a browser after server startup") cmd.Flags().BoolVar(&c.renderStaticToDisk, "renderStaticToDisk", false, "serve static files from disk and dynamic files from memory") cmd.Flags().BoolVar(&c.disableFastRender, "disableFastRender", false, "enables full re-renders on changes") cmd.Flags().BoolVar(&c.disableBrowserError, "disableBrowserError", false, "do not show build errors in the browser") r := cd.Root.Command.(*rootCommand) applyLocalFlagsBuild(cmd, r) return nil } func (c *serverCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) c.hugoBuilder = newHugoBuilder( c.r, c, func(reloaded bool) error { if !reloaded { if err := c.createServerPorts(cd); err != nil { return err } if (c.tlsCertFile == "" || c.tlsKeyFile == "") && c.tlsAuto { c.withConfE(func(conf *commonConfig) error { return c.createCertificates(conf) }) } } if err := c.setServerInfoInConfig(); err != nil { return err } if !reloaded && c.fastRenderMode { c.withConf(func(conf *commonConfig) { conf.fs.PublishDir = hugofs.NewHashingFs(conf.fs.PublishDir, c.changeDetector) conf.fs.PublishDirStatic = hugofs.NewHashingFs(conf.fs.PublishDirStatic, c.changeDetector) }) } return nil }, ) destinationFlag := cd.CobraCommand.Flags().Lookup("destination") if c.r.renderToMemory && (destinationFlag != nil && destinationFlag.Changed) { return fmt.Errorf("cannot use --renderToMemory with --destination") } c.doLiveReload = !c.disableLiveReload c.fastRenderMode = !c.disableFastRender c.showErrorInBrowser = c.doLiveReload && !c.disableBrowserError if c.fastRenderMode { // For now, fast render mode only. It should, however, be fast enough // for the full variant, too. c.changeDetector = &fileChangeDetector{ // We use this detector to decide to do a Hot reload of a single path or not. // We need to filter out source maps and possibly some other to be able // to make that decision. irrelevantRe: regexp.MustCompile(`\.map$`), } c.changeDetector.PrepareNew() } err := c.loadConfig(cd, true) if err != nil { return err } return nil } func (c *serverCommand) setServerInfoInConfig() error { if len(c.serverPorts) == 0 { panic("no server ports set") } return c.withConfE(func(conf *commonConfig) error { for i, language := range conf.configs.LanguagesDefaultFirst { isMultihost := conf.configs.IsMultihost var serverPort int if isMultihost { serverPort = c.serverPorts[i].p } else { serverPort = c.serverPorts[0].p } langConfig := conf.configs.LanguageConfigMap[language.Lang] baseURLStr, err := c.fixURL(langConfig.BaseURL, c.r.baseURL, serverPort) if err != nil { return err } baseURL, err := urls.NewBaseURLFromString(baseURLStr) if err != nil { return fmt.Errorf("failed to create baseURL from %q: %s", baseURLStr, err) } baseURLLiveReload := baseURL if c.liveReloadPort != -1 { baseURLLiveReload, _ = baseURLLiveReload.WithPort(c.liveReloadPort) } langConfig.C.SetServerInfo(baseURL, baseURLLiveReload, c.serverInterface) } return nil }) } func (c *serverCommand) getErrorWithContext() any { buildErr := c.errState.buildErr() if buildErr == nil { return nil } m := make(map[string]any) m["Error"] = cleanErrorLog(c.r.logger.Errors()) m["Version"] = hugo.BuildVersionString() ferrors := herrors.UnwrapFileErrorsWithErrorContext(buildErr) m["Files"] = ferrors return m } func (c *serverCommand) createCertificates(conf *commonConfig) error { hostname := "localhost" if c.r.baseURL != "" { u, err := url.Parse(c.r.baseURL) if err != nil { return err } hostname = u.Hostname() } // For now, store these in the Hugo cache dir. // Hugo should probably introduce some concept of a less temporary application directory. keyDir := filepath.Join(conf.configs.LoadingInfo.BaseConfig.CacheDir, "_mkcerts") // Create the directory if it doesn't exist. if _, err := os.Stat(keyDir); os.IsNotExist(err) { if err := os.MkdirAll(keyDir, 0o777); err != nil { return err } } c.tlsCertFile = filepath.Join(keyDir, fmt.Sprintf("%s.pem", hostname)) c.tlsKeyFile = filepath.Join(keyDir, fmt.Sprintf("%s-key.pem", hostname)) // Check if the certificate already exists and is valid. certPEM, err := os.ReadFile(c.tlsCertFile) if err == nil { rootPem, err := os.ReadFile(filepath.Join(mclib.GetCAROOT(), "rootCA.pem")) if err == nil { if err := c.verifyCert(rootPem, certPEM, hostname); err == nil { c.r.Println("Using existing", c.tlsCertFile, "and", c.tlsKeyFile) return nil } } } c.r.Println("Creating TLS certificates in", keyDir) // Yes, this is unfortunate, but it's currently the only way to use Mkcert as a library. os.Args = []string{"-cert-file", c.tlsCertFile, "-key-file", c.tlsKeyFile, hostname} return mclib.RunMain() } func (c *serverCommand) verifyCert(rootPEM, certPEM []byte, name string) error { roots := x509.NewCertPool() ok := roots.AppendCertsFromPEM(rootPEM) if !ok { return fmt.Errorf("failed to parse root certificate") } block, _ := pem.Decode(certPEM) if block == nil { return fmt.Errorf("failed to parse certificate PEM") } cert, err := x509.ParseCertificate(block.Bytes) if err != nil { return fmt.Errorf("failed to parse certificate: %v", err.Error()) } opts := x509.VerifyOptions{ DNSName: name, Roots: roots, } if _, err := cert.Verify(opts); err != nil { return fmt.Errorf("failed to verify certificate: %v", err.Error()) } return nil } func (c *serverCommand) createServerPorts(cd *simplecobra.Commandeer) error { flags := cd.CobraCommand.Flags() var cerr error c.withConf(func(conf *commonConfig) { isMultihost := conf.configs.IsMultihost c.serverPorts = make([]serverPortListener, 1) if isMultihost { if !c.serverAppend { cerr = errors.New("--appendPort=false not supported when in multihost mode") return } c.serverPorts = make([]serverPortListener, len(conf.configs.Languages)) } currentServerPort := c.serverPort for i := range c.serverPorts { l, err := net.Listen("tcp", net.JoinHostPort(c.serverInterface, strconv.Itoa(currentServerPort))) if err == nil { c.serverPorts[i] = serverPortListener{ln: l, p: currentServerPort} } else { if i == 0 && flags.Changed("port") { // port set explicitly by user -- he/she probably meant it! cerr = fmt.Errorf("server startup failed: %s", err) return } c.r.Println("port", currentServerPort, "already in use, attempting to use an available port") l, sp, err := helpers.TCPListen() if err != nil { cerr = fmt.Errorf("unable to find alternative port to use: %s", err) return } c.serverPorts[i] = serverPortListener{ln: l, p: sp.Port} } currentServerPort = c.serverPorts[i].p + 1 } }) return cerr } // fixURL massages the baseURL into a form needed for serving // all pages correctly. func (c *serverCommand) fixURL(baseURLFromConfig, baseURLFromFlag string, port int) (string, error) { certsSet := (c.tlsCertFile != "" && c.tlsKeyFile != "") || c.tlsAuto useLocalhost := false baseURL := baseURLFromFlag if baseURL == "" { baseURL = baseURLFromConfig useLocalhost = true } if !strings.HasSuffix(baseURL, "/") { baseURL = baseURL + "/" } // do an initial parse of the input string u, err := url.Parse(baseURL) if err != nil { return "", err } // if no Host is defined, then assume that no schema or double-slash were // present in the url. Add a double-slash and make a best effort attempt. if u.Host == "" && baseURL != "/" { baseURL = "//" + baseURL u, err = url.Parse(baseURL) if err != nil { return "", err } } if useLocalhost { if certsSet { u.Scheme = "https" } else if u.Scheme == "https" { u.Scheme = "http" } u.Host = "localhost" } if c.serverAppend { if strings.Contains(u.Host, ":") { u.Host, _, err = net.SplitHostPort(u.Host) if err != nil { return "", fmt.Errorf("failed to split baseURL hostport: %w", err) } } u.Host += fmt.Sprintf(":%d", port) } return u.String(), nil } func (c *serverCommand) partialReRender(urls ...string) (err error) { defer func() { c.errState.setWasErr(false) }() visited := types.NewEvictingQueue[string](len(urls)) for _, url := range urls { visited.Add(url) } var h *hugolib.HugoSites h, err = c.hugo() if err != nil { return } // Note: We do not set NoBuildLock as the file lock is not acquired at this stage. err = h.Build(hugolib.BuildCfg{NoBuildLock: false, RecentlyTouched: visited, PartialReRender: true, ErrRecovery: c.errState.wasErr()}) return } func (c *serverCommand) serve() error { var ( baseURLs []urls.BaseURL roots []string h *hugolib.HugoSites ) err := c.withConfE(func(conf *commonConfig) error { isMultihost := conf.configs.IsMultihost var err error h, err = c.r.HugFromConfig(conf) if err != nil { return err } // We need the server to share the same logger as the Hugo build (for error counts etc.) c.r.logger = h.Log if isMultihost { for _, l := range conf.configs.ConfigLangs() { baseURLs = append(baseURLs, l.BaseURL()) roots = append(roots, l.Language().Lang) } } else { l := conf.configs.GetFirstLanguageConfig() baseURLs = []urls.BaseURL{l.BaseURL()} roots = []string{""} } return nil }) if err != nil { return err } // Cache it here. The HugoSites object may be unavailable later on due to intermittent configuration errors. // To allow the en user to change the error template while the server is running, we use // the freshest template we can provide. var ( errTempl *tplimpl.TemplInfo templHandler *tplimpl.TemplateStore ) getErrorTemplateAndHandler := func(h *hugolib.HugoSites) (*tplimpl.TemplInfo, *tplimpl.TemplateStore) { if h == nil { return errTempl, templHandler } templHandler := h.GetTemplateStore() errTempl := templHandler.LookupByPath("/_server/error.html") if errTempl == nil { panic("template server/error.html not found") } return errTempl, templHandler } errTempl, templHandler = getErrorTemplateAndHandler(h) srv := &fileServer{ baseURLs: baseURLs, roots: roots, c: c, errorTemplate: func(ctx any) (io.Reader, error) { // hugoTry does not block, getErrorTemplateAndHandler will fall back // to cached values if nil. templ, handler := getErrorTemplateAndHandler(c.hugoTry()) b := &bytes.Buffer{} err := handler.ExecuteWithContext(context.Background(), templ, b, ctx) return b, err }, } doLiveReload := !c.disableLiveReload if doLiveReload { livereload.Initialize() } sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) var servers []*http.Server wg1, ctx := errgroup.WithContext(context.Background()) for i := range baseURLs { mu, listener, serverURL, endpoint, err := srv.createEndpoint(i) var srv *http.Server if c.tlsCertFile != "" && c.tlsKeyFile != "" { srv = &http.Server{ Addr: endpoint, Handler: mu, TLSConfig: &tls.Config{ MinVersion: tls.VersionTLS12, }, } } else { srv = &http.Server{ Addr: endpoint, Handler: mu, } } servers = append(servers, srv) if doLiveReload { baseURL := baseURLs[i] mu.HandleFunc(baseURL.Path()+"livereload.js", livereload.ServeJS) mu.HandleFunc(baseURL.Path()+"livereload", livereload.Handler) } c.r.Printf("Web Server is available at %s (bind address %s) %s\n", serverURL, c.serverInterface, roots[i]) wg1.Go(func() error { if c.tlsCertFile != "" && c.tlsKeyFile != "" { err = srv.ServeTLS(listener, c.tlsCertFile, c.tlsKeyFile) } else { err = srv.Serve(listener) } if err != nil && err != http.ErrServerClosed { return err } return nil }) } if c.r.IsTestRun() { // Write a .ready file to disk to signal ready status. // This is where the test is run from. var baseURLs []string for _, baseURL := range srv.baseURLs { baseURLs = append(baseURLs, baseURL.String()) } testInfo := map[string]any{ "baseURLs": baseURLs, } dir := os.Getenv("WORK") if dir != "" { readyFile := filepath.Join(dir, ".ready") // encode the test info as JSON into the .ready file. b, err := json.Marshal(testInfo) if err != nil { return err } err = os.WriteFile(readyFile, b, 0o777) if err != nil { return err } } } c.r.Println("Press Ctrl+C to stop") if c.openBrowser { // There may be more than one baseURL in multihost mode, open the first. if err := browser.OpenURL(baseURLs[0].String()); err != nil { c.r.logger.Warnf("Failed to open browser: %s", err) } } err = func() error { for { select { case <-c.quit: return nil case <-sigs: return nil case <-ctx.Done(): return ctx.Err() } } }() if err != nil { c.r.Println("Error:", err) } ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() wg2, ctx := errgroup.WithContext(ctx) for _, srv := range servers { srv := srv wg2.Go(func() error { return srv.Shutdown(ctx) }) } err1, err2 := wg1.Wait(), wg2.Wait() if err1 != nil { return err1 } return err2 } type serverPortListener struct { p int ln net.Listener } type staticSyncer struct { c *hugoBuilder } func (s *staticSyncer) isStatic(h *hugolib.HugoSites, filename string) bool { return h.BaseFs.SourceFilesystems.IsStatic(filename) } func (s *staticSyncer) syncsStaticEvents(staticEvents []fsnotify.Event) error { c := s.c syncFn := func(sourceFs *filesystems.SourceFilesystem) (uint64, error) { publishDir := helpers.FilePathSeparator if sourceFs.PublishFolder != "" { publishDir = filepath.Join(publishDir, sourceFs.PublishFolder) } syncer := fsync.NewSyncer() c.withConf(func(conf *commonConfig) { syncer.NoTimes = conf.configs.Base.NoTimes syncer.NoChmod = conf.configs.Base.NoChmod syncer.ChmodFilter = chmodFilter syncer.SrcFs = sourceFs.Fs syncer.DestFs = conf.fs.PublishDir if c.s != nil && c.s.renderStaticToDisk { syncer.DestFs = conf.fs.PublishDirStatic } }) logger := s.c.r.logger for _, ev := range staticEvents { // Due to our approach of layering both directories and the content's rendered output // into one we can't accurately remove a file not in one of the source directories. // If a file is in the local static dir and also in the theme static dir and we remove // it from one of those locations we expect it to still exist in the destination // // If Hugo generates a file (from the content dir) over a static file // the content generated file should take precedence. // // Because we are now watching and handling individual events it is possible that a static // event that occupies the same path as a content generated file will take precedence // until a regeneration of the content takes places. // // Hugo assumes that these cases are very rare and will permit this bad behavior // The alternative is to track every single file and which pipeline rendered it // and then to handle conflict resolution on every event. fromPath := ev.Name relPath, found := sourceFs.MakePathRelative(fromPath, true) if !found { // Not member of this virtual host. continue } // Remove || rename is harder and will require an assumption. // Hugo takes the following approach: // If the static file exists in any of the static source directories after this event // Hugo will re-sync it. // If it does not exist in all of the static directories Hugo will remove it. // // This assumes that Hugo has not generated content on top of a static file and then removed // the source of that static file. In this case Hugo will incorrectly remove that file // from the published directory. if ev.Op&fsnotify.Rename == fsnotify.Rename || ev.Op&fsnotify.Remove == fsnotify.Remove { if _, err := sourceFs.Fs.Stat(relPath); herrors.IsNotExist(err) { // If file doesn't exist in any static dir, remove it logger.Println("File no longer exists in static dir, removing", relPath) c.withConf(func(conf *commonConfig) { _ = conf.fs.PublishDirStatic.RemoveAll(relPath) }) } else if err == nil { // If file still exists, sync it logger.Println("Syncing", relPath, "to", publishDir) if err := syncer.Sync(relPath, relPath); err != nil { c.r.logger.Errorln(err) } } else { c.r.logger.Errorln(err) } continue } // For all other event operations Hugo will sync static. logger.Println("Syncing", relPath, "to", publishDir) if err := syncer.Sync(filepath.Join(publishDir, relPath), relPath); err != nil { c.r.logger.Errorln(err) } } return 0, nil } _, err := c.doWithPublishDirs(syncFn) return err } func chmodFilter(dst, src os.FileInfo) bool { // Hugo publishes data from multiple sources, potentially // with overlapping directory structures. We cannot sync permissions // for directories as that would mean that we might end up with write-protected // directories inside /public. // One example of this would be syncing from the Go Module cache, // which have 0555 directories. return src.IsDir() } func cleanErrorLog(content string) string { content = logReplacer.Replace(content) content = logDuplicateTemplateExecuteRe.ReplaceAllString(content, "") content = logDuplicateTemplateParseRe.ReplaceAllString(content, "") seen := make(map[string]bool) parts := strings.Split(content, ": ") keep := make([]string, 0, len(parts)) for _, part := range parts { if seen[part] { continue } seen[part] = true keep = append(keep, part) } return strings.Join(keep, ": ") } func injectLiveReloadScript(src io.Reader, baseURL *url.URL) string { var b bytes.Buffer chain := transform.Chain{livereloadinject.New(baseURL)} chain.Apply(&b, src) return b.String() } func partitionDynamicEvents(sourceFs *filesystems.SourceFilesystems, events []fsnotify.Event) (de dynamicEvents) { for _, e := range events { if !sourceFs.IsContent(e.Name) { de.AssetEvents = append(de.AssetEvents, e) } else { de.ContentEvents = append(de.ContentEvents, e) } } return } func pickOneWriteOrCreatePath(contentTypes config.ContentTypesProvider, events []fsnotify.Event) string { name := "" for _, ev := range events { if ev.Op&fsnotify.Write == fsnotify.Write || ev.Op&fsnotify.Create == fsnotify.Create { if contentTypes.IsIndexContentFile(ev.Name) { return ev.Name } if contentTypes.IsContentFile(ev.Name) { name = ev.Name } } } return name } func formatByteCount(b uint64) string { const unit = 1000 if b < unit { return fmt.Sprintf("%d B", b) } div, exp := int64(unit), 0 for n := b / unit; n >= unit; n /= unit { div *= unit exp++ } return fmt.Sprintf("%.1f %cB", float64(b)/float64(div), "kMGTPE"[exp]) } func canRedirect(requestURIWithoutQuery string, r *http.Request) bool { if r.Header.Get(hugoHeaderRedirect) != "" { return false } return isNavigation(requestURIWithoutQuery, r) } // Sec-Fetch-Mode should be sent by all recent browser versions, see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Mode#navigate // Fall back to the file extension if not set. // The main take here is that we don't want to have CSS/JS files etc. partake in this logic. func isNavigation(requestURIWithoutQuery string, r *http.Request) bool { return r.Header.Get("Sec-Fetch-Mode") == "navigate" || isPropablyHTMLRequest(requestURIWithoutQuery) } func isPropablyHTMLRequest(requestURIWithoutQuery string) bool { if strings.HasSuffix(requestURIWithoutQuery, "/") || strings.HasSuffix(requestURIWithoutQuery, "html") || strings.HasSuffix(requestURIWithoutQuery, "htm") { return true } return !strings.Contains(requestURIWithoutQuery, ".") } gohugoio-hugo-6abdaca/common/000077500000000000000000000000001507671574500164265ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/collections/000077500000000000000000000000001507671574500207445ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/collections/append.go000066400000000000000000000074461507671574500225550ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package collections import ( "fmt" "reflect" ) // Append appends from to a slice to and returns the resulting slice. // If length of from is one and the only element is a slice of same type as to, // it will be appended. func Append(to any, from ...any) (any, error) { if len(from) == 0 { return to, nil } tov, toIsNil := indirect(reflect.ValueOf(to)) toIsNil = toIsNil || to == nil var tot reflect.Type if !toIsNil { if tov.Kind() == reflect.Slice { // Create a copy of tov, so we don't modify the original. c := reflect.MakeSlice(tov.Type(), tov.Len(), tov.Len()+len(from)) reflect.Copy(c, tov) tov = c } if tov.Kind() != reflect.Slice { return nil, fmt.Errorf("expected a slice, got %T", to) } tot = tov.Type().Elem() if tot.Kind() == reflect.Slice { totvt := tot.Elem() fromvs := make([]reflect.Value, len(from)) for i, f := range from { fromv := reflect.ValueOf(f) fromt := fromv.Type() if fromt.Kind() == reflect.Slice { fromt = fromt.Elem() } if totvt != fromt { return nil, fmt.Errorf("cannot append slice of %s to slice of %s", fromt, totvt) } else { fromvs[i] = fromv } } return reflect.Append(tov, fromvs...).Interface(), nil } toIsNil = tov.Len() == 0 if len(from) == 1 { fromv := reflect.ValueOf(from[0]) if !fromv.IsValid() { // from[0] is nil return appendToInterfaceSliceFromValues(tov, fromv) } fromt := fromv.Type() if fromt.Kind() == reflect.Slice { fromt = fromt.Elem() } if fromv.Kind() == reflect.Slice { if toIsNil { // If we get nil []string, we just return the []string return from[0], nil } // If we get []string []string, we append the from slice to to if tot == fromt { return reflect.AppendSlice(tov, fromv).Interface(), nil } else if !fromt.AssignableTo(tot) { // Fall back to a []interface{} slice. return appendToInterfaceSliceFromValues(tov, fromv) } } } } if toIsNil { return Slice(from...), nil } for _, f := range from { fv := reflect.ValueOf(f) if !fv.IsValid() || !fv.Type().AssignableTo(tot) { // Fall back to a []interface{} slice. tov, _ := indirect(reflect.ValueOf(to)) return appendToInterfaceSlice(tov, from...) } tov = reflect.Append(tov, fv) } return tov.Interface(), nil } func appendToInterfaceSliceFromValues(slice1, slice2 reflect.Value) ([]any, error) { var tos []any for _, slice := range []reflect.Value{slice1, slice2} { if !slice.IsValid() { tos = append(tos, nil) continue } for i := range slice.Len() { tos = append(tos, slice.Index(i).Interface()) } } return tos, nil } func appendToInterfaceSlice(tov reflect.Value, from ...any) ([]any, error) { var tos []any for i := range tov.Len() { tos = append(tos, tov.Index(i).Interface()) } tos = append(tos, from...) return tos, nil } // indirect is borrowed from the Go stdlib: 'text/template/exec.go' // TODO(bep) consolidate func indirect(v reflect.Value) (rv reflect.Value, isNil bool) { for ; v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface; v = v.Elem() { if v.IsNil() { return v, true } if v.Kind() == reflect.Interface && v.NumMethod() > 0 { break } } return v, false } gohugoio-hugo-6abdaca/common/collections/append_test.go000066400000000000000000000117501507671574500236050ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package collections import ( "html/template" "reflect" "testing" qt "github.com/frankban/quicktest" ) func TestAppend(t *testing.T) { t.Parallel() c := qt.New(t) for i, test := range []struct { start any addend []any expected any }{ {[]string{"a", "b"}, []any{"c"}, []string{"a", "b", "c"}}, {[]string{"a", "b"}, []any{"c", "d", "e"}, []string{"a", "b", "c", "d", "e"}}, {[]string{"a", "b"}, []any{[]string{"c", "d", "e"}}, []string{"a", "b", "c", "d", "e"}}, {[]string{"a"}, []any{"b", template.HTML("c")}, []any{"a", "b", template.HTML("c")}}, {nil, []any{"a", "b"}, []string{"a", "b"}}, {nil, []any{nil}, []any{nil}}, {[]any{}, []any{[]string{"c", "d", "e"}}, []string{"c", "d", "e"}}, { tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}, []any{&tstSlicer{"c"}}, tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}, &tstSlicer{"c"}}, }, { &tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}, []any{&tstSlicer{"c"}}, tstSlicers{ &tstSlicer{"a"}, &tstSlicer{"b"}, &tstSlicer{"c"}, }, }, { testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}}, []any{&tstSlicerIn1{"c"}}, testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}, &tstSlicerIn1{"c"}}, }, // https://github.com/gohugoio/hugo/issues/5361 { []string{"a", "b"}, []any{tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}}, []any{"a", "b", &tstSlicer{"a"}, &tstSlicer{"b"}}, }, { []string{"a", "b"}, []any{&tstSlicer{"a"}}, []any{"a", "b", &tstSlicer{"a"}}, }, // Errors {"", []any{[]string{"a", "b"}}, false}, // No string concatenation. { "ab", []any{"c"}, false, }, {[]string{"a", "b"}, []any{nil}, []any{"a", "b", nil}}, {[]string{"a", "b"}, []any{nil, "d", nil}, []any{"a", "b", nil, "d", nil}}, {[]any{"a", nil, "c"}, []any{"d", nil, "f"}, []any{"a", nil, "c", "d", nil, "f"}}, {[]string{"a", "b"}, []any{}, []string{"a", "b"}}, } { result, err := Append(test.start, test.addend...) if b, ok := test.expected.(bool); ok && !b { c.Assert(err, qt.Not(qt.IsNil)) continue } c.Assert(err, qt.IsNil) c.Assert(result, qt.DeepEquals, test.expected, qt.Commentf("test: [%d] %v", i, test)) } } // #11093 func TestAppendToMultiDimensionalSlice(t *testing.T) { t.Parallel() c := qt.New(t) for _, test := range []struct { to any from []any expected any }{ { [][]string{{"a", "b"}}, []any{[]string{"c", "d"}}, [][]string{ {"a", "b"}, {"c", "d"}, }, }, { [][]string{{"a", "b"}}, []any{[]string{"c", "d"}, []string{"e", "f"}}, [][]string{ {"a", "b"}, {"c", "d"}, {"e", "f"}, }, }, { [][]string{{"a", "b"}}, []any{[]int{1, 2}}, false, }, } { result, err := Append(test.to, test.from...) if b, ok := test.expected.(bool); ok && !b { c.Assert(err, qt.Not(qt.IsNil)) } else { c.Assert(err, qt.IsNil) c.Assert(result, qt.DeepEquals, test.expected) } } } func TestAppendShouldMakeACopyOfTheInputSlice(t *testing.T) { t.Parallel() c := qt.New(t) slice := make([]string, 0, 100) slice = append(slice, "a", "b") result, err := Append(slice, "c") c.Assert(err, qt.IsNil) slice[0] = "d" c.Assert(result, qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(slice, qt.DeepEquals, []string{"d", "b"}) } func TestIndirect(t *testing.T) { t.Parallel() c := qt.New(t) type testStruct struct { Field string } var ( nilPtr *testStruct nilIface interface{} = nil nonNilIface interface{} = &testStruct{Field: "hello"} ) tests := []struct { name string input any wantKind reflect.Kind wantNil bool }{ { name: "nil pointer", input: nilPtr, wantKind: reflect.Ptr, wantNil: true, }, { name: "nil interface", input: nilIface, wantKind: reflect.Invalid, wantNil: false, }, { name: "non-nil pointer to struct", input: &testStruct{Field: "abc"}, wantKind: reflect.Struct, wantNil: false, }, { name: "non-nil interface holding pointer", input: nonNilIface, wantKind: reflect.Struct, wantNil: false, }, { name: "plain value", input: testStruct{Field: "xyz"}, wantKind: reflect.Struct, wantNil: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { v := reflect.ValueOf(tt.input) got, isNil := indirect(v) c.Assert(got.Kind(), qt.Equals, tt.wantKind) c.Assert(isNil, qt.Equals, tt.wantNil) }) } } gohugoio-hugo-6abdaca/common/collections/collections.go000066400000000000000000000015331507671574500236130ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package collections contains common Hugo functionality related to collection // handling. package collections // Grouper defines a very generic way to group items by a given key. type Grouper interface { Group(key any, items any) (any, error) } gohugoio-hugo-6abdaca/common/collections/order.go000066400000000000000000000013761507671574500224150ustar00rootroot00000000000000// Copyright 2020 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package collections type Order interface { // Ordinal is a zero-based ordinal that represents the order of an object // in a collection. Ordinal() int } gohugoio-hugo-6abdaca/common/collections/slice.go000066400000000000000000000044631507671574500224010ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package collections import ( "reflect" "sort" ) // Slicer defines a very generic way to create a typed slice. This is used // in collections.Slice template func to get types such as Pages, PageGroups etc. // instead of the less useful []interface{}. type Slicer interface { Slice(items any) (any, error) } // Slice returns a slice of all passed arguments. func Slice(args ...any) any { if len(args) == 0 { return args } first := args[0] firstType := reflect.TypeOf(first) if firstType == nil { return args } if g, ok := first.(Slicer); ok { v, err := g.Slice(args) if err == nil { return v } // If Slice fails, the items are not of the same type and // []interface{} is the best we can do. return args } if len(args) > 1 { // This can be a mix of types. for i := 1; i < len(args); i++ { if firstType != reflect.TypeOf(args[i]) { // []interface{} is the best we can do return args } } } slice := reflect.MakeSlice(reflect.SliceOf(firstType), len(args), len(args)) for i, arg := range args { slice.Index(i).Set(reflect.ValueOf(arg)) } return slice.Interface() } // StringSliceToInterfaceSlice converts ss to []interface{}. func StringSliceToInterfaceSlice(ss []string) []any { result := make([]any, len(ss)) for i, s := range ss { result[i] = s } return result } type SortedStringSlice []string // Contains returns true if s is in ss. func (ss SortedStringSlice) Contains(s string) bool { i := sort.SearchStrings(ss, s) return i < len(ss) && ss[i] == s } // Count returns the number of times s is in ss. func (ss SortedStringSlice) Count(s string) int { var count int i := sort.SearchStrings(ss, s) for i < len(ss) && ss[i] == s { count++ i++ } return count } gohugoio-hugo-6abdaca/common/collections/slice_test.go000066400000000000000000000075431507671574500234420ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package collections import ( "errors" "testing" qt "github.com/frankban/quicktest" ) var ( _ Slicer = (*tstSlicer)(nil) _ Slicer = (*tstSlicerIn1)(nil) _ Slicer = (*tstSlicerIn2)(nil) _ testSlicerInterface = (*tstSlicerIn1)(nil) _ testSlicerInterface = (*tstSlicerIn1)(nil) ) type testSlicerInterface interface { Name() string } type testSlicerInterfaces []testSlicerInterface type tstSlicerIn1 struct { TheName string } type tstSlicerIn2 struct { TheName string } type tstSlicer struct { TheName string } func (p *tstSlicerIn1) Slice(in any) (any, error) { items := in.([]any) result := make(testSlicerInterfaces, len(items)) for i, v := range items { switch vv := v.(type) { case testSlicerInterface: result[i] = vv default: return nil, errors.New("invalid type") } } return result, nil } func (p *tstSlicerIn2) Slice(in any) (any, error) { items := in.([]any) result := make(testSlicerInterfaces, len(items)) for i, v := range items { switch vv := v.(type) { case testSlicerInterface: result[i] = vv default: return nil, errors.New("invalid type") } } return result, nil } func (p *tstSlicerIn1) Name() string { return p.TheName } func (p *tstSlicerIn2) Name() string { return p.TheName } func (p *tstSlicer) Slice(in any) (any, error) { items := in.([]any) result := make(tstSlicers, len(items)) for i, v := range items { switch vv := v.(type) { case *tstSlicer: result[i] = vv default: return nil, errors.New("invalid type") } } return result, nil } type tstSlicers []*tstSlicer func TestSlice(t *testing.T) { t.Parallel() c := qt.New(t) for i, test := range []struct { args []any expected any }{ {[]any{"a", "b"}, []string{"a", "b"}}, {[]any{&tstSlicer{"a"}, &tstSlicer{"b"}}, tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}}, {[]any{&tstSlicer{"a"}, "b"}, []any{&tstSlicer{"a"}, "b"}}, {[]any{}, []any{}}, {[]any{nil}, []any{nil}}, {[]any{5, "b"}, []any{5, "b"}}, {[]any{&tstSlicerIn1{"a"}, &tstSlicerIn2{"b"}}, testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn2{"b"}}}, {[]any{&tstSlicerIn1{"a"}, &tstSlicer{"b"}}, []any{&tstSlicerIn1{"a"}, &tstSlicer{"b"}}}, } { errMsg := qt.Commentf("[%d] %v", i, test.args) result := Slice(test.args...) c.Assert(test.expected, qt.DeepEquals, result, errMsg) } } func TestSortedStringSlice(t *testing.T) { t.Parallel() c := qt.New(t) var s SortedStringSlice = []string{"a", "b", "b", "b", "c", "d"} c.Assert(s.Contains("a"), qt.IsTrue) c.Assert(s.Contains("b"), qt.IsTrue) c.Assert(s.Contains("z"), qt.IsFalse) c.Assert(s.Count("b"), qt.Equals, 3) c.Assert(s.Count("z"), qt.Equals, 0) c.Assert(s.Count("a"), qt.Equals, 1) } func TestStringSliceToInterfaceSlice(t *testing.T) { t.Parallel() c := qt.New(t) tests := []struct { name string in []string want []any }{ { name: "empty slice", in: []string{}, want: []any{}, }, { name: "single element", in: []string{"hello"}, want: []any{"hello"}, }, { name: "multiple elements", in: []string{"a", "b", "c"}, want: []any{"a", "b", "c"}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := StringSliceToInterfaceSlice(tt.in) c.Assert(got, qt.DeepEquals, tt.want) }) } } gohugoio-hugo-6abdaca/common/collections/stack.go000066400000000000000000000034471507671574500224100ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package collections import "slices" import "sync" // Stack is a simple LIFO stack that is safe for concurrent use. type Stack[T any] struct { items []T zero T mu sync.RWMutex } func NewStack[T any]() *Stack[T] { return &Stack[T]{} } func (s *Stack[T]) Push(item T) { s.mu.Lock() defer s.mu.Unlock() s.items = append(s.items, item) } func (s *Stack[T]) Pop() (T, bool) { s.mu.Lock() defer s.mu.Unlock() if len(s.items) == 0 { return s.zero, false } item := s.items[len(s.items)-1] s.items = s.items[:len(s.items)-1] return item, true } func (s *Stack[T]) Peek() (T, bool) { s.mu.RLock() defer s.mu.RUnlock() if len(s.items) == 0 { return s.zero, false } return s.items[len(s.items)-1], true } func (s *Stack[T]) Len() int { s.mu.RLock() defer s.mu.RUnlock() return len(s.items) } func (s *Stack[T]) Drain() []T { s.mu.Lock() defer s.mu.Unlock() items := s.items s.items = nil return items } func (s *Stack[T]) DrainMatching(predicate func(T) bool) []T { s.mu.Lock() defer s.mu.Unlock() var items []T for i := len(s.items) - 1; i >= 0; i-- { if predicate(s.items[i]) { items = append(items, s.items[i]) s.items = slices.Delete(s.items, i, i+1) } } return items } gohugoio-hugo-6abdaca/common/collections/stack_test.go000066400000000000000000000022611507671574500234400ustar00rootroot00000000000000package collections import ( "testing" qt "github.com/frankban/quicktest" ) func TestNewStack(t *testing.T) { t.Parallel() c := qt.New(t) s := NewStack[int]() c.Assert(s, qt.IsNotNil) } func TestStackBasic(t *testing.T) { t.Parallel() c := qt.New(t) s := NewStack[int]() c.Assert(s.Len(), qt.Equals, 0) s.Push(1) s.Push(2) s.Push(3) c.Assert(s.Len(), qt.Equals, 3) top, ok := s.Peek() c.Assert(ok, qt.Equals, true) c.Assert(top, qt.Equals, 3) popped, ok := s.Pop() c.Assert(ok, qt.Equals, true) c.Assert(popped, qt.Equals, 3) c.Assert(s.Len(), qt.Equals, 2) _, _ = s.Pop() _, _ = s.Pop() _, ok = s.Pop() c.Assert(ok, qt.Equals, false) } func TestStackDrain(t *testing.T) { t.Parallel() c := qt.New(t) s := NewStack[string]() s.Push("a") s.Push("b") got := s.Drain() c.Assert(got, qt.DeepEquals, []string{"a", "b"}) c.Assert(s.Len(), qt.Equals, 0) } func TestStackDrainMatching(t *testing.T) { t.Parallel() c := qt.New(t) s := NewStack[int]() s.Push(1) s.Push(2) s.Push(3) s.Push(4) got := s.DrainMatching(func(v int) bool { return v%2 == 0 }) c.Assert(got, qt.DeepEquals, []int{4, 2}) c.Assert(s.Drain(), qt.DeepEquals, []int{1, 3}) } gohugoio-hugo-6abdaca/common/constants/000077500000000000000000000000001507671574500204425ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/constants/constants.go000066400000000000000000000034571507671574500230160ustar00rootroot00000000000000// Copyright 2020 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package constants // Error/Warning IDs. // Do not change these values. const ( // IDs for remote errors in tpl/data. ErrRemoteGetJSON = "error-remote-getjson" ErrRemoteGetCSV = "error-remote-getcsv" WarnFrontMatterParamsOverrides = "warning-frontmatter-params-overrides" WarnRenderShortcodesInHTML = "warning-rendershortcodes-in-html" WarnGoldmarkRawHTML = "warning-goldmark-raw-html" WarnPartialSuperfluousPrefix = "warning-partial-superfluous-prefix" WarnHomePageIsLeafBundle = "warning-home-page-is-leaf-bundle" ) // Field/method names with special meaning. const ( FieldRelPermalink = "RelPermalink" FieldPermalink = "Permalink" ) // IsFieldRelOrPermalink returns whether the given name is a RelPermalink or Permalink. func IsFieldRelOrPermalink(name string) bool { return name == FieldRelPermalink || name == FieldPermalink } // Resource transformations. const ( ResourceTransformationFingerprint = "fingerprint" ) // IsResourceTransformationPermalinkHash returns whether the given name is a resource transformation that changes the permalink based on the content. func IsResourceTransformationPermalinkHash(name string) bool { return name == ResourceTransformationFingerprint } gohugoio-hugo-6abdaca/common/docs.go000066400000000000000000000001201507671574500176760ustar00rootroot00000000000000// Package common provides common helper functionality for Hugo. package common gohugoio-hugo-6abdaca/common/hashing/000077500000000000000000000000001507671574500200475ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/hashing/hashing.go000066400000000000000000000112701507671574500220200ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package hashing provides common hashing utilities. package hashing import ( "crypto/md5" "encoding/hex" "io" "strconv" "sync" "github.com/cespare/xxhash/v2" "github.com/gohugoio/hashstructure" "github.com/gohugoio/hugo/identity" ) // XXHashFromReader calculates the xxHash for the given reader. func XXHashFromReader(r io.Reader) (uint64, int64, error) { h := getXxHashReadFrom() defer putXxHashReadFrom(h) size, err := io.Copy(h, r) if err != nil { return 0, 0, err } return h.Sum64(), size, nil } // XxHashFromReaderHexEncoded calculates the xxHash for the given reader // and returns the hash as a hex encoded string. func XxHashFromReaderHexEncoded(r io.Reader) (string, error) { h := getXxHashReadFrom() defer putXxHashReadFrom(h) _, err := io.Copy(h, r) if err != nil { return "", err } hash := h.Sum(nil) return hex.EncodeToString(hash), nil } // XXHashFromString calculates the xxHash for the given string. func XXHashFromString(s string) (uint64, error) { h := xxhash.New() h.WriteString(s) return h.Sum64(), nil } // XxHashFromStringHexEncoded calculates the xxHash for the given string // and returns the hash as a hex encoded string. func XxHashFromStringHexEncoded(f string) string { h := xxhash.New() h.WriteString(f) hash := h.Sum(nil) return hex.EncodeToString(hash) } // MD5FromStringHexEncoded returns the MD5 hash of the given string. func MD5FromStringHexEncoded(f string) string { h := md5.New() h.Write([]byte(f)) return hex.EncodeToString(h.Sum(nil)) } // HashString returns a hash from the given elements. // It will panic if the hash cannot be calculated. // Note that this hash should be used primarily for identity, not for change detection as // it in the more complex values (e.g. Page) will not hash the full content. func HashString(vs ...any) string { hash := HashUint64(vs...) return strconv.FormatUint(hash, 10) } // HashStringHex returns a hash from the given elements as a hex encoded string. // See HashString for more information. func HashStringHex(vs ...any) string { hash := HashUint64(vs...) return strconv.FormatUint(hash, 16) } var hashOptsPool = sync.Pool{ New: func() any { return &hashstructure.HashOptions{ Hasher: xxhash.New(), } }, } func getHashOpts() *hashstructure.HashOptions { return hashOptsPool.Get().(*hashstructure.HashOptions) } func putHashOpts(opts *hashstructure.HashOptions) { opts.Hasher.Reset() hashOptsPool.Put(opts) } // HashUint64 returns a hash from the given elements. // It will panic if the hash cannot be calculated. // Note that this hash should be used primarily for identity, not for change detection as // it in the more complex values (e.g. Page) will not hash the full content. func HashUint64(vs ...any) uint64 { var o any if len(vs) == 1 { o = toHashable(vs[0]) } else { elements := make([]any, len(vs)) for i, e := range vs { elements[i] = toHashable(e) } o = elements } hash, err := Hash(o) if err != nil { panic(err) } return hash } // Hash returns a hash from vs. func Hash(vs ...any) (uint64, error) { hashOpts := getHashOpts() defer putHashOpts(hashOpts) var v any = vs if len(vs) == 1 { v = vs[0] } return hashstructure.Hash(v, hashOpts) } type keyer interface { Key() string } // For structs, hashstructure.Hash only works on the exported fields, // so rewrite the input slice for known identity types. func toHashable(v any) any { switch t := v.(type) { case keyer: return t.Key() case identity.IdentityProvider: return t.GetIdentity() default: return v } } type xxhashReadFrom struct { buff []byte *xxhash.Digest } func (x *xxhashReadFrom) ReadFrom(r io.Reader) (int64, error) { for { n, err := r.Read(x.buff) if n > 0 { x.Digest.Write(x.buff[:n]) } if err != nil { if err == io.EOF { err = nil } return int64(n), err } } } var xXhashReadFromPool = sync.Pool{ New: func() any { return &xxhashReadFrom{Digest: xxhash.New(), buff: make([]byte, 48*1024)} }, } func getXxHashReadFrom() *xxhashReadFrom { return xXhashReadFromPool.Get().(*xxhashReadFrom) } func putXxHashReadFrom(h *xxhashReadFrom) { h.Reset() xXhashReadFromPool.Put(h) } gohugoio-hugo-6abdaca/common/hashing/hashing_test.go000066400000000000000000000067461507671574500230730ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hashing import ( "fmt" "math" "strings" "sync" "testing" qt "github.com/frankban/quicktest" ) func TestXxHashFromReader(t *testing.T) { c := qt.New(t) s := "Hello World" r := strings.NewReader(s) got, size, err := XXHashFromReader(r) c.Assert(err, qt.IsNil) c.Assert(size, qt.Equals, int64(len(s))) c.Assert(got, qt.Equals, uint64(7148569436472236994)) } func TestXxHashFromReaderPara(t *testing.T) { c := qt.New(t) var wg sync.WaitGroup for i := range 10 { i := i wg.Add(1) go func() { defer wg.Done() for j := range 100 { s := strings.Repeat("Hello ", i+j+1*42) r := strings.NewReader(s) got, size, err := XXHashFromReader(r) c.Assert(size, qt.Equals, int64(len(s))) c.Assert(err, qt.IsNil) expect, _ := XXHashFromString(s) c.Assert(got, qt.Equals, expect) } }() } wg.Wait() } func TestXxHashFromString(t *testing.T) { c := qt.New(t) s := "Hello World" got, err := XXHashFromString(s) c.Assert(err, qt.IsNil) c.Assert(got, qt.Equals, uint64(7148569436472236994)) } func TestXxHashFromStringHexEncoded(t *testing.T) { c := qt.New(t) s := "The quick brown fox jumps over the lazy dog" got := XxHashFromStringHexEncoded(s) // Facit: https://asecuritysite.com/encryption/xxhash?val=The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dog c.Assert(got, qt.Equals, "0b242d361fda71bc") } func BenchmarkXXHashFromReader(b *testing.B) { r := strings.NewReader("Hello World") b.ResetTimer() for i := 0; i < b.N; i++ { XXHashFromReader(r) r.Seek(0, 0) } } func BenchmarkXXHashFromString(b *testing.B) { s := "Hello World" b.ResetTimer() for i := 0; i < b.N; i++ { XXHashFromString(s) } } func BenchmarkXXHashFromStringHexEncoded(b *testing.B) { s := "The quick brown fox jumps over the lazy dog" b.ResetTimer() for i := 0; i < b.N; i++ { XxHashFromStringHexEncoded(s) } } func TestHashString(t *testing.T) { c := qt.New(t) c.Assert(HashString("a", "b"), qt.Equals, "3176555414984061461") c.Assert(HashString("ab"), qt.Equals, "7347350983217793633") var vals []any = []any{"a", "b", tstKeyer{"c"}} c.Assert(HashString(vals...), qt.Equals, "4438730547989914315") c.Assert(vals[2], qt.Equals, tstKeyer{"c"}) } type tstKeyer struct { key string } func (t tstKeyer) Key() string { return t.key } func (t tstKeyer) String() string { return "key: " + t.key } func BenchmarkHashString(b *testing.B) { word := " hello " var tests []string for i := 1; i <= 5; i++ { sentence := strings.Repeat(word, int(math.Pow(4, float64(i)))) tests = append(tests, sentence) } b.ResetTimer() for _, test := range tests { b.Run(fmt.Sprintf("n%d", len(test)), func(b *testing.B) { for i := 0; i < b.N; i++ { HashString(test) } }) } } func BenchmarkHashMap(b *testing.B) { m := map[string]any{} for i := range 1000 { m[fmt.Sprintf("key%d", i)] = i } b.ResetTimer() for i := 0; i < b.N; i++ { HashString(m) } } gohugoio-hugo-6abdaca/common/hdebug/000077500000000000000000000000001507671574500176645ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/hdebug/debug.go000066400000000000000000000031361507671574500213040ustar00rootroot00000000000000// Copyright 2025 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hdebug import ( "fmt" "strings" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/htesting" ) // Printf is a debug print function that should be removed before committing code to the repository. func Printf(format string, args ...any) { panicIfRealCI() if len(args) == 1 && !strings.Contains(format, "%") { format = format + ": %v" } if !strings.HasSuffix(format, "\n") { format = format + "\n" } fmt.Printf(format, args...) } func AssertNotNil(a ...any) { panicIfRealCI() for _, v := range a { if types.IsNil(v) { panic("hdebug.AssertNotNil: value is nil") } } } func Panicf(format string, args ...any) { panicIfRealCI() // fmt.Println(stack()) if len(args) == 1 && !strings.Contains(format, "%") { format = format + ": %v" } if !strings.HasSuffix(format, "\n") { format = format + "\n" } panic(fmt.Sprintf(format, args...)) } func panicIfRealCI() { if htesting.IsRealCI() { panic("This debug statement should be removed before committing code!") } } gohugoio-hugo-6abdaca/common/herrors/000077500000000000000000000000001507671574500201125ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/herrors/error_locator.go000066400000000000000000000105031507671574500233140ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package herrors contains common Hugo errors and error related utilities. package herrors import ( "io" "path/filepath" "strings" "github.com/gohugoio/hugo/common/text" ) // LineMatcher contains the elements used to match an error to a line type LineMatcher struct { Position text.Position Error error LineNumber int Offset int Line string } // LineMatcherFn is used to match a line with an error. // It returns the column number or 0 if the line was found, but column could not be determined. Returns -1 if no line match. type LineMatcherFn func(m LineMatcher) int // SimpleLineMatcher simply matches by line number. var SimpleLineMatcher = func(m LineMatcher) int { if m.Position.LineNumber == m.LineNumber { // We found the line, but don't know the column. return 0 } return -1 } // NopLineMatcher is a matcher that always returns 1. // This will effectively give line 1, column 1. var NopLineMatcher = func(m LineMatcher) int { return 1 } // OffsetMatcher is a line matcher that matches by offset. var OffsetMatcher = func(m LineMatcher) int { if m.Offset+len(m.Line) >= m.Position.Offset { // We found the line, but return 0 to signal that we want to determine // the column from the error. return 0 } return -1 } // ContainsMatcher is a line matcher that matches by line content. func ContainsMatcher(text string) func(m LineMatcher) int { return func(m LineMatcher) int { if idx := strings.Index(m.Line, text); idx != -1 { return idx + 1 } return -1 } } // ErrorContext contains contextual information about an error. This will // typically be the lines surrounding some problem in a file. type ErrorContext struct { // If a match will contain the matched line and up to 2 lines before and after. // Will be empty if no match. Lines []string // The position of the error in the Lines above. 0 based. LinesPos int // The position of the content in the file. Note that this may be different from the error's position set // in FileError. Position text.Position // The lexer to use for syntax highlighting. // https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages ChromaLexer string } func chromaLexerFromType(fileType string) string { switch fileType { case "html", "htm": return "go-html-template" } return fileType } func extNoDelimiter(filename string) string { return strings.TrimPrefix(filepath.Ext(filename), ".") } func chromaLexerFromFilename(filename string) string { if strings.Contains(filename, "layouts") { return "go-html-template" } ext := extNoDelimiter(filename) return chromaLexerFromType(ext) } func locateErrorInString(src string, matcher LineMatcherFn) *ErrorContext { return locateError(strings.NewReader(src), &fileError{}, matcher) } func locateError(r io.Reader, le FileError, matches LineMatcherFn) *ErrorContext { if le == nil { panic("must provide an error") } ectx := &ErrorContext{LinesPos: -1, Position: text.Position{Offset: -1}} b, err := io.ReadAll(r) if err != nil { return ectx } lines := strings.Split(string(b), "\n") lineNo := 0 posBytes := 0 for li, line := range lines { lineNo = li + 1 m := LineMatcher{ Position: le.Position(), Error: le, LineNumber: lineNo, Offset: posBytes, Line: line, } v := matches(m) if ectx.LinesPos == -1 && v != -1 { ectx.Position.LineNumber = lineNo ectx.Position.ColumnNumber = v break } posBytes += len(line) } if ectx.Position.LineNumber > 0 { low := max(ectx.Position.LineNumber-3, 0) if ectx.Position.LineNumber > 2 { ectx.LinesPos = 2 } else { ectx.LinesPos = ectx.Position.LineNumber - 1 } high := min(ectx.Position.LineNumber+2, len(lines)) ectx.Lines = lines[low:high] } return ectx } gohugoio-hugo-6abdaca/common/herrors/error_locator_test.go000066400000000000000000000067351507671574500243670ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package herrors contains common Hugo errors and error related utilities. package herrors import ( "strings" "testing" qt "github.com/frankban/quicktest" ) func TestErrorLocator(t *testing.T) { c := qt.New(t) lineMatcher := func(m LineMatcher) int { if strings.Contains(m.Line, "THEONE") { return 1 } return -1 } lines := `LINE 1 LINE 2 LINE 3 LINE 4 This is THEONE LINE 6 LINE 7 LINE 8 ` location := locateErrorInString(lines, lineMatcher) pos := location.Position c.Assert(location.Lines, qt.DeepEquals, []string{"LINE 3", "LINE 4", "This is THEONE", "LINE 6", "LINE 7"}) c.Assert(pos.LineNumber, qt.Equals, 5) c.Assert(location.LinesPos, qt.Equals, 2) locate := func(s string, m LineMatcherFn) *ErrorContext { ctx := locateErrorInString(s, m) return ctx } c.Assert(locate(`This is THEONE`, lineMatcher).Lines, qt.DeepEquals, []string{"This is THEONE"}) location = locateErrorInString(`L1 This is THEONE L2 `, lineMatcher) pos = location.Position c.Assert(pos.LineNumber, qt.Equals, 2) c.Assert(location.LinesPos, qt.Equals, 1) c.Assert(location.Lines, qt.DeepEquals, []string{"L1", "This is THEONE", "L2", ""}) location = locate(`This is THEONE L2 `, lineMatcher) c.Assert(location.LinesPos, qt.Equals, 0) c.Assert(location.Lines, qt.DeepEquals, []string{"This is THEONE", "L2", ""}) location = locate(`L1 This THEONE `, lineMatcher) c.Assert(location.Lines, qt.DeepEquals, []string{"L1", "This THEONE", ""}) c.Assert(location.LinesPos, qt.Equals, 1) location = locate(`L1 L2 This THEONE `, lineMatcher) c.Assert(location.Lines, qt.DeepEquals, []string{"L1", "L2", "This THEONE", ""}) c.Assert(location.LinesPos, qt.Equals, 2) location = locateErrorInString("NO MATCH", lineMatcher) pos = location.Position c.Assert(pos.LineNumber, qt.Equals, 0) c.Assert(location.LinesPos, qt.Equals, -1) c.Assert(len(location.Lines), qt.Equals, 0) lineMatcher = func(m LineMatcher) int { if m.LineNumber == 6 { return 1 } return -1 } location = locateErrorInString(`A B C D E F G H I J`, lineMatcher) pos = location.Position c.Assert(location.Lines, qt.DeepEquals, []string{"D", "E", "F", "G", "H"}) c.Assert(pos.LineNumber, qt.Equals, 6) c.Assert(location.LinesPos, qt.Equals, 2) // Test match EOF lineMatcher = func(m LineMatcher) int { if m.LineNumber == 4 { return 1 } return -1 } location = locateErrorInString(`A B C `, lineMatcher) pos = location.Position c.Assert(location.Lines, qt.DeepEquals, []string{"B", "C", ""}) c.Assert(pos.LineNumber, qt.Equals, 4) c.Assert(location.LinesPos, qt.Equals, 2) offsetMatcher := func(m LineMatcher) int { if m.Offset == 1 { return 1 } return -1 } location = locateErrorInString(`A B C D E`, offsetMatcher) pos = location.Position c.Assert(location.Lines, qt.DeepEquals, []string{"A", "B", "C", "D"}) c.Assert(pos.LineNumber, qt.Equals, 2) c.Assert(location.LinesPos, qt.Equals, 1) } gohugoio-hugo-6abdaca/common/herrors/errors.go000066400000000000000000000113401507671574500217540ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package herrors contains common Hugo errors and error related utilities. package herrors import ( "errors" "fmt" "os" "regexp" "runtime/debug" "strings" "time" ) // ErrorSender is a, typically, non-blocking error handler. type ErrorSender interface { SendError(err error) } // Recover is a helper function that can be used to capture panics. // Put this at the top of a method/function that crashes in a template: // // defer herrors.Recover() func Recover(args ...any) { if r := recover(); r != nil { fmt.Println("ERR:", r) args = append(args, "stacktrace from panic: \n"+string(debug.Stack()), "\n") fmt.Println(args...) } } // IsTimeoutError returns true if the given error is or contains a TimeoutError. func IsTimeoutError(err error) bool { return errors.Is(err, &TimeoutError{}) } type TimeoutError struct { Duration time.Duration } func (e *TimeoutError) Error() string { return fmt.Sprintf("timeout after %s", e.Duration) } func (e *TimeoutError) Is(target error) bool { _, ok := target.(*TimeoutError) return ok } // errMessage wraps an error with a message. type errMessage struct { msg string err error } func (e *errMessage) Error() string { return e.msg } func (e *errMessage) Unwrap() error { return e.err } // IsFeatureNotAvailableError returns true if the given error is or contains a FeatureNotAvailableError. func IsFeatureNotAvailableError(err error) bool { return errors.Is(err, &FeatureNotAvailableError{}) } // ErrFeatureNotAvailable denotes that a feature is unavailable. // // We will, at least to begin with, make some Hugo features (SCSS with libsass) optional, // and this error is used to signal those situations. var ErrFeatureNotAvailable = &FeatureNotAvailableError{Cause: errors.New("this feature is not available in your current Hugo version, see https://goo.gl/YMrWcn for more information")} // FeatureNotAvailableError is an error type used to signal that a feature is not available. type FeatureNotAvailableError struct { Cause error } func (e *FeatureNotAvailableError) Unwrap() error { return e.Cause } func (e *FeatureNotAvailableError) Error() string { return e.Cause.Error() } func (e *FeatureNotAvailableError) Is(target error) bool { _, ok := target.(*FeatureNotAvailableError) return ok } // Must panics if err != nil. func Must(err error) { if err != nil { panic(err) } } // IsNotExist returns true if the error is a file not found error. // Unlike os.IsNotExist, this also considers wrapped errors. func IsNotExist(err error) bool { if os.IsNotExist(err) { return true } // os.IsNotExist does not consider wrapped errors. if os.IsNotExist(errors.Unwrap(err)) { return true } return false } // IsExist returns true if the error is a file exists error. // Unlike os.IsExist, this also considers wrapped errors. func IsExist(err error) bool { if os.IsExist(err) { return true } // os.IsExist does not consider wrapped errors. if os.IsExist(errors.Unwrap(err)) { return true } return false } var nilPointerErrRe = regexp.MustCompile(`at <(.*)>: error calling (.*?): runtime error: invalid memory address or nil pointer dereference`) const deferredPrefix = "__hdeferred/" var deferredStringToRemove = regexp.MustCompile(`executing "__hdeferred/.*?" `) // ImproveRenderErr improves the error message for rendering errors. func ImproveRenderErr(inErr error) (outErr error) { outErr = inErr msg := improveIfNilPointerMsg(inErr) if msg != "" { outErr = &errMessage{msg: msg, err: outErr} } if strings.Contains(inErr.Error(), deferredPrefix) { msg := deferredStringToRemove.ReplaceAllString(inErr.Error(), "executing ") outErr = &errMessage{msg: msg, err: outErr} } return } func improveIfNilPointerMsg(inErr error) string { m := nilPointerErrRe.FindStringSubmatch(inErr.Error()) if len(m) == 0 { return "" } call := m[1] field := m[2] parts := strings.Split(call, ".") if len(parts) < 2 { return "" } receiverName := parts[len(parts)-2] receiver := strings.Join(parts[:len(parts)-1], ".") s := fmt.Sprintf("– %s is nil; wrap it in if or with: {{ with %s }}{{ .%s }}{{ end }}", receiverName, receiver, field) return nilPointerErrRe.ReplaceAllString(inErr.Error(), s) } gohugoio-hugo-6abdaca/common/herrors/errors_test.go000066400000000000000000000027711507671574500230230ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package herrors import ( "errors" "fmt" "testing" qt "github.com/frankban/quicktest" "github.com/spf13/afero" ) func TestIsNotExist(t *testing.T) { c := qt.New(t) c.Assert(IsNotExist(afero.ErrFileNotFound), qt.Equals, true) c.Assert(IsNotExist(afero.ErrFileExists), qt.Equals, false) c.Assert(IsNotExist(afero.ErrDestinationExists), qt.Equals, false) c.Assert(IsNotExist(nil), qt.Equals, false) c.Assert(IsNotExist(fmt.Errorf("foo")), qt.Equals, false) // os.IsNotExist returns false for wrapped errors. c.Assert(IsNotExist(fmt.Errorf("foo: %w", afero.ErrFileNotFound)), qt.Equals, true) } func TestIsFeatureNotAvailableError(t *testing.T) { c := qt.New(t) c.Assert(IsFeatureNotAvailableError(ErrFeatureNotAvailable), qt.Equals, true) c.Assert(IsFeatureNotAvailableError(&FeatureNotAvailableError{}), qt.Equals, true) c.Assert(IsFeatureNotAvailableError(errors.New("asdf")), qt.Equals, false) } gohugoio-hugo-6abdaca/common/herrors/file_error.go000066400000000000000000000246371507671574500226050ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable lfmtaw or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package herrors import ( "encoding/json" "errors" "fmt" "io" "path/filepath" "github.com/bep/godartsass/v2" "github.com/bep/golibsass/libsass/libsasserrors" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/text" "github.com/pelletier/go-toml/v2" "github.com/spf13/afero" "github.com/tdewolff/parse/v2" ) // FileError represents an error when handling a file: Parsing a config file, // execute a template etc. type FileError interface { error // ErrorContext holds some context information about the error. ErrorContext() *ErrorContext text.Positioner // UpdatePosition updates the position of the error. UpdatePosition(pos text.Position) FileError // UpdateContent updates the error with a new ErrorContext from the content of the file. UpdateContent(r io.Reader, linematcher LineMatcherFn) FileError // SetFilename sets the filename of the error. SetFilename(filename string) FileError } // Unwrapper can unwrap errors created with fmt.Errorf. type Unwrapper interface { Unwrap() error } var ( _ FileError = (*fileError)(nil) _ Unwrapper = (*fileError)(nil) ) func (fe *fileError) SetFilename(filename string) FileError { fe.position.Filename = filename return fe } func (fe *fileError) UpdatePosition(pos text.Position) FileError { oldFilename := fe.Position().Filename if pos.Filename != "" && fe.fileType == "" { _, fe.fileType = paths.FileAndExtNoDelimiter(filepath.Clean(pos.Filename)) } if pos.Filename == "" { pos.Filename = oldFilename } fe.position = pos return fe } func (fe *fileError) UpdateContent(r io.Reader, linematcher LineMatcherFn) FileError { if linematcher == nil { linematcher = SimpleLineMatcher } var ( posle = fe.position ectx *ErrorContext ) if posle.LineNumber <= 1 && posle.Offset > 0 { // Try to locate the line number from the content if offset is set. ectx = locateError(r, fe, func(m LineMatcher) int { if posle.Offset >= m.Offset && posle.Offset < m.Offset+len(m.Line) { lno := posle.LineNumber - m.Position.LineNumber + m.LineNumber m.Position = text.Position{LineNumber: lno} return linematcher(m) } return -1 }) } else { ectx = locateError(r, fe, linematcher) } if ectx.ChromaLexer == "" { if fe.fileType != "" { ectx.ChromaLexer = chromaLexerFromType(fe.fileType) } else { ectx.ChromaLexer = chromaLexerFromFilename(fe.Position().Filename) } } fe.errorContext = ectx if ectx.Position.LineNumber > 0 && ectx.Position.LineNumber > fe.position.LineNumber { fe.position.LineNumber = ectx.Position.LineNumber } if ectx.Position.ColumnNumber > 0 && ectx.Position.ColumnNumber > fe.position.ColumnNumber { fe.position.ColumnNumber = ectx.Position.ColumnNumber } return fe } type fileError struct { position text.Position errorContext *ErrorContext fileType string cause error } func (e *fileError) ErrorContext() *ErrorContext { return e.errorContext } // Position returns the text position of this error. func (e fileError) Position() text.Position { return e.position } func (e *fileError) Error() string { return fmt.Sprintf("%s: %s", e.position, e.causeString()) } func (e *fileError) causeString() string { if e.cause == nil { return "" } switch v := e.cause.(type) { // Avoid repeating the file info in the error message. case godartsass.SassError: return v.Message case libsasserrors.Error: return v.Message default: return v.Error() } } func (e *fileError) Unwrap() error { return e.cause } // NewFileError creates a new FileError that wraps err. // It will try to extract the filename and line number from err. func NewFileError(err error) FileError { // Filetype is used to determine the Chroma lexer to use. fileType, pos := extractFileTypePos(err) return &fileError{cause: err, fileType: fileType, position: pos} } // NewFileErrorFromName creates a new FileError that wraps err. // The value for name should identify the file, the best // being the full filename to the file on disk. func NewFileErrorFromName(err error, name string) FileError { // Filetype is used to determine the Chroma lexer to use. fileType, pos := extractFileTypePos(err) pos.Filename = name if fileType == "" { _, fileType = paths.FileAndExtNoDelimiter(filepath.Clean(name)) } return &fileError{cause: err, fileType: fileType, position: pos} } // NewFileErrorFromPos will use the filename and line number from pos to create a new FileError, wrapping err. func NewFileErrorFromPos(err error, pos text.Position) FileError { // Filetype is used to determine the Chroma lexer to use. fileType, _ := extractFileTypePos(err) if fileType == "" { _, fileType = paths.FileAndExtNoDelimiter(filepath.Clean(pos.Filename)) } return &fileError{cause: err, fileType: fileType, position: pos} } func NewFileErrorFromFileInErr(err error, fs afero.Fs, linematcher LineMatcherFn) FileError { fe := NewFileError(err) pos := fe.Position() if pos.Filename == "" { return fe } f, realFilename, err2 := openFile(pos.Filename, fs) if err2 != nil { return fe } pos.Filename = realFilename defer f.Close() return fe.UpdateContent(f, linematcher) } func NewFileErrorFromFileInPos(err error, pos text.Position, fs afero.Fs, linematcher LineMatcherFn) FileError { if err == nil { panic("err is nil") } f, realFilename, err2 := openFile(pos.Filename, fs) if err2 != nil { return NewFileErrorFromPos(err, pos) } pos.Filename = realFilename defer f.Close() return NewFileErrorFromPos(err, pos).UpdateContent(f, linematcher) } // NewFileErrorFromFile is a convenience method to create a new FileError from a file. func NewFileErrorFromFile(err error, filename string, fs afero.Fs, linematcher LineMatcherFn) FileError { if err == nil { panic("err is nil") } f, realFilename, err2 := openFile(filename, fs) if err2 != nil { return NewFileErrorFromName(err, realFilename) } defer f.Close() fe := NewFileErrorFromName(err, realFilename) fe = fe.UpdateContent(f, linematcher) return fe } func openFile(filename string, fs afero.Fs) (afero.File, string, error) { realFilename := filename // We want the most specific filename possible in the error message. fi, err2 := fs.Stat(filename) if err2 == nil { if s, ok := fi.(interface { Filename() string }); ok { realFilename = s.Filename() } } f, err2 := fs.Open(filename) if err2 != nil { return nil, realFilename, err2 } return f, realFilename, nil } // Cause returns the underlying error, that is, // it unwraps errors until it finds one that does not implement // the Unwrap method. // For a shallow variant, see Unwrap. func Cause(err error) error { type unwrapper interface { Unwrap() error } for err != nil { cause, ok := err.(unwrapper) if !ok { break } err = cause.Unwrap() } return err } // Unwrap returns the underlying error or itself if it does not implement Unwrap. func Unwrap(err error) error { if u := errors.Unwrap(err); u != nil { return u } return err } func extractFileTypePos(err error) (string, text.Position) { err = Unwrap(err) var fileType string // LibSass, DartSass if pos := extractPosition(err); pos.LineNumber > 0 || pos.Offset > 0 { _, fileType = paths.FileAndExtNoDelimiter(pos.Filename) return fileType, pos } // Default to line 1 col 1 if we don't find any better. pos := text.Position{ Offset: -1, LineNumber: 1, ColumnNumber: 1, } // JSON errors. offset, typ := extractOffsetAndType(err) if fileType == "" { fileType = typ } if offset >= 0 { pos.Offset = offset } // The error type from the minifier contains line number and column number. if line, col := extractLineNumberAndColumnNumber(err); line >= 0 { pos.LineNumber = line pos.ColumnNumber = col return fileType, pos } // Look in the error message for the line number. if lno, col := commonLineNumberExtractor(err); lno > 0 { pos.ColumnNumber = col pos.LineNumber = lno } if fileType == "" && pos.Filename != "" { _, fileType = paths.FileAndExtNoDelimiter(pos.Filename) } return fileType, pos } // UnwrapFileError tries to unwrap a FileError from err. // It returns nil if this is not possible. func UnwrapFileError(err error) FileError { for err != nil { switch v := err.(type) { case FileError: return v default: err = errors.Unwrap(err) } } return nil } // UnwrapFileErrors tries to unwrap all FileError. func UnwrapFileErrors(err error) []FileError { var errs []FileError for err != nil { if v, ok := err.(FileError); ok { errs = append(errs, v) } err = errors.Unwrap(err) } return errs } // UnwrapFileErrorsWithErrorContext tries to unwrap all FileError in err that has an ErrorContext. func UnwrapFileErrorsWithErrorContext(err error) []FileError { var errs []FileError for err != nil { if v, ok := err.(FileError); ok && v.ErrorContext() != nil { errs = append(errs, v) } err = errors.Unwrap(err) } return errs } func extractOffsetAndType(e error) (int, string) { switch v := e.(type) { case *json.UnmarshalTypeError: return int(v.Offset), "json" case *json.SyntaxError: return int(v.Offset), "json" default: return -1, "" } } func extractLineNumberAndColumnNumber(e error) (int, int) { switch v := e.(type) { case *parse.Error: return v.Line, v.Column case *toml.DecodeError: return v.Position() } return -1, -1 } func extractPosition(e error) (pos text.Position) { switch v := e.(type) { case godartsass.SassError: span := v.Span start := span.Start filename, _ := paths.UrlStringToFilename(span.Url) pos.Filename = filename pos.Offset = start.Offset pos.ColumnNumber = start.Column case libsasserrors.Error: pos.Filename = v.File pos.LineNumber = v.Line pos.ColumnNumber = v.Column } return } // TextSegmentError is an error with a text segment attached. type TextSegmentError struct { Segment string Err error } func (e TextSegmentError) Unwrap() error { return e.Err } func (e TextSegmentError) Error() string { return e.Err.Error() } gohugoio-hugo-6abdaca/common/herrors/file_error_test.go000066400000000000000000000060031507671574500236270ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package herrors import ( "errors" "fmt" "strings" "testing" "github.com/gohugoio/hugo/common/text" qt "github.com/frankban/quicktest" ) func TestNewFileError(t *testing.T) { t.Parallel() c := qt.New(t) fe := NewFileErrorFromName(errors.New("bar"), "foo.html") c.Assert(fe.Error(), qt.Equals, `"foo.html:1:1": bar`) lines := "" for i := 1; i <= 100; i++ { lines += fmt.Sprintf("line %d\n", i) } fe.UpdatePosition(text.Position{LineNumber: 32, ColumnNumber: 2}) c.Assert(fe.Error(), qt.Equals, `"foo.html:32:2": bar`) fe.UpdatePosition(text.Position{LineNumber: 0, ColumnNumber: 0, Offset: 212}) fe.UpdateContent(strings.NewReader(lines), nil) c.Assert(fe.Error(), qt.Equals, `"foo.html:32:0": bar`) errorContext := fe.ErrorContext() c.Assert(errorContext, qt.IsNotNil) c.Assert(errorContext.Lines, qt.DeepEquals, []string{"line 30", "line 31", "line 32", "line 33", "line 34"}) c.Assert(errorContext.LinesPos, qt.Equals, 2) c.Assert(errorContext.ChromaLexer, qt.Equals, "go-html-template") } func TestNewFileErrorExtractFromMessage(t *testing.T) { t.Parallel() c := qt.New(t) for i, test := range []struct { in error offset int lineNumber int columnNumber int }{ {errors.New("no line number for you"), 0, 1, 1}, {errors.New(`template: _default/single.html:4:15: executing "_default/single.html" at <.Titles>: can't evaluate field Titles in type *hugolib.PageOutput`), 0, 4, 15}, {errors.New("parse failed: template: _default/bundle-resource-meta.html:11: unexpected in operand"), 0, 11, 1}, {errors.New(`failed:: template: _default/bundle-resource-meta.html:2:7: executing "main" at <.Titles>`), 0, 2, 7}, {errors.New(`failed to load translations: (6, 7): was expecting token =, but got "g" instead`), 0, 6, 7}, {errors.New(`execute of template failed: template: index.html:2:5: executing "index.html" at : error calling partial: "/layouts/partials/foo.html:3:6": execute of template failed: template: partials/foo.html:3:6: executing "partials/foo.html" at <.ThisDoesNotExist>: can't evaluate field ThisDoesNotExist in type *hugolib.pageStat`), 0, 2, 5}, } { got := NewFileErrorFromName(test.in, "test.txt") errMsg := qt.Commentf("[%d][%T]", i, got) pos := got.Position() c.Assert(pos.LineNumber, qt.Equals, test.lineNumber, errMsg) c.Assert(pos.ColumnNumber, qt.Equals, test.columnNumber, errMsg) c.Assert(errors.Unwrap(got), qt.Not(qt.IsNil)) } } gohugoio-hugo-6abdaca/common/herrors/line_number_extractors.go000066400000000000000000000033531507671574500252220ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package herrors import ( "regexp" "strconv" ) var lineNumberExtractors = []lineNumberExtractor{ // YAML parse errors. newLineNumberErrHandlerFromRegexp(`\[(\d+):(\d+)\]`), // Template/shortcode parse errors newLineNumberErrHandlerFromRegexp(`:(\d+):(\d*):`), newLineNumberErrHandlerFromRegexp(`:(\d+):`), // i18n bundle errors newLineNumberErrHandlerFromRegexp(`\((\d+),\s(\d*)`), } func commonLineNumberExtractor(e error) (int, int) { for _, handler := range lineNumberExtractors { lno, col := handler(e) if lno > 0 { return lno, col } } return 0, 0 } type lineNumberExtractor func(e error) (int, int) func newLineNumberErrHandlerFromRegexp(expression string) lineNumberExtractor { re := regexp.MustCompile(expression) return extractLineNo(re) } func extractLineNo(re *regexp.Regexp) lineNumberExtractor { return func(e error) (int, int) { if e == nil { panic("no error") } col := 1 s := e.Error() m := re.FindStringSubmatch(s) if len(m) >= 2 { lno, _ := strconv.Atoi(m[1]) if len(m) > 2 { col, _ = strconv.Atoi(m[2]) } if col <= 0 { col = 1 } return lno, col } return 0, col } } gohugoio-hugo-6abdaca/common/herrors/line_number_extractors_test.go000066400000000000000000000016501507671574500262570ustar00rootroot00000000000000// Copyright 2025 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package herrors import ( "errors" "testing" qt "github.com/frankban/quicktest" ) func TestCommonLineNumberExtractor(t *testing.T) { t.Parallel() c := qt.New(t) lno, col := commonLineNumberExtractor(errors.New("[4:9] value is not allowed in this context")) c.Assert(lno, qt.Equals, 4) c.Assert(col, qt.Equals, 9) } gohugoio-hugo-6abdaca/common/hexec/000077500000000000000000000000001507671574500175225ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/hexec/exec.go000066400000000000000000000221071507671574500207770ustar00rootroot00000000000000// Copyright 2020 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hexec import ( "bytes" "context" "errors" "fmt" "io" "os" "os/exec" "path/filepath" "regexp" "strings" "sync" "github.com/bep/logg" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/security" ) var WithDir = func(dir string) func(c *commandeer) { return func(c *commandeer) { c.dir = dir } } var WithContext = func(ctx context.Context) func(c *commandeer) { return func(c *commandeer) { c.ctx = ctx } } var WithStdout = func(w io.Writer) func(c *commandeer) { return func(c *commandeer) { c.stdout = w } } var WithStderr = func(w io.Writer) func(c *commandeer) { return func(c *commandeer) { c.stderr = w } } var WithStdin = func(r io.Reader) func(c *commandeer) { return func(c *commandeer) { c.stdin = r } } var WithEnviron = func(env []string) func(c *commandeer) { return func(c *commandeer) { setOrAppend := func(s string) { k1, _ := config.SplitEnvVar(s) var found bool for i, v := range c.env { k2, _ := config.SplitEnvVar(v) if k1 == k2 { found = true c.env[i] = s } } if !found { c.env = append(c.env, s) } } for _, s := range env { setOrAppend(s) } } } // New creates a new Exec using the provided security config. func New(cfg security.Config, workingDir string, log loggers.Logger) *Exec { var baseEnviron []string for _, v := range os.Environ() { k, _ := config.SplitEnvVar(v) if cfg.Exec.OsEnv.Accept(k) { baseEnviron = append(baseEnviron, v) } } return &Exec{ sc: cfg, workingDir: workingDir, infol: log.InfoCommand("exec"), baseEnviron: baseEnviron, newNPXRunnerCache: maps.NewCache[string, func(arg ...any) (Runner, error)](), } } // IsNotFound reports whether this is an error about a binary not found. func IsNotFound(err error) bool { var notFoundErr *NotFoundError return errors.As(err, ¬FoundErr) } // Exec enforces a security policy for commands run via os/exec. type Exec struct { sc security.Config workingDir string infol logg.LevelLogger // os.Environ filtered by the Exec.OsEnviron whitelist filter. baseEnviron []string newNPXRunnerCache *maps.Cache[string, func(arg ...any) (Runner, error)] npxInit sync.Once npxAvailable bool } func (e *Exec) New(name string, arg ...any) (Runner, error) { return e.new(name, "", arg...) } // New will fail if name is not allowed according to the configured security policy. // Else a configured Runner will be returned ready to be Run. func (e *Exec) new(name string, fullyQualifiedName string, arg ...any) (Runner, error) { if err := e.sc.CheckAllowedExec(name); err != nil { return nil, err } env := make([]string, len(e.baseEnviron)) copy(env, e.baseEnviron) cm := &commandeer{ name: name, fullyQualifiedName: fullyQualifiedName, env: env, } return cm.command(arg...) } type binaryLocation int func (b binaryLocation) String() string { switch b { case binaryLocationNodeModules: return "node_modules/.bin" case binaryLocationNpx: return "npx" case binaryLocationPath: return "PATH" } return "unknown" } const ( binaryLocationNodeModules binaryLocation = iota + 1 binaryLocationNpx binaryLocationPath ) // Npx will in order: // 1. Try fo find the binary in the WORKINGDIR/node_modules/.bin directory. // 2. If not found, and npx is available, run npx --no-install . // 3. Fall back to the PATH. // If name is "tailwindcss", we will try the PATH as the second option. func (e *Exec) Npx(name string, arg ...any) (Runner, error) { if err := e.sc.CheckAllowedExec(name); err != nil { return nil, err } newRunner, err := e.newNPXRunnerCache.GetOrCreate(name, func() (func(...any) (Runner, error), error) { type tryFunc func() func(...any) (Runner, error) tryFuncs := map[binaryLocation]tryFunc{ binaryLocationNodeModules: func() func(...any) (Runner, error) { nodeBinFilename := filepath.Join(e.workingDir, nodeModulesBinPath, name) _, err := exec.LookPath(nodeBinFilename) if err != nil { return nil } return func(arg2 ...any) (Runner, error) { return e.new(name, nodeBinFilename, arg2...) } }, binaryLocationNpx: func() func(...any) (Runner, error) { e.checkNpx() if !e.npxAvailable { return nil } return func(arg2 ...any) (Runner, error) { return e.npx(name, arg2...) } }, binaryLocationPath: func() func(...any) (Runner, error) { if _, err := exec.LookPath(name); err != nil { return nil } return func(arg2 ...any) (Runner, error) { return e.New(name, arg2...) } }, } locations := []binaryLocation{binaryLocationNodeModules, binaryLocationNpx, binaryLocationPath} if name == "tailwindcss" { // See https://github.com/gohugoio/hugo/issues/13221#issuecomment-2574801253 locations = []binaryLocation{binaryLocationNodeModules, binaryLocationPath, binaryLocationNpx} } for _, loc := range locations { if f := tryFuncs[loc](); f != nil { e.infol.Logf("resolve %q using %s", name, loc) return f, nil } } return nil, &NotFoundError{name: name, method: fmt.Sprintf("in %s", locations[len(locations)-1])} }) if err != nil { return nil, err } return newRunner(arg...) } const ( npxNoInstall = "--no-install" npxBinary = "npx" nodeModulesBinPath = "node_modules/.bin" ) func (e *Exec) checkNpx() { e.npxInit.Do(func() { e.npxAvailable = InPath(npxBinary) }) } // npx is a convenience method to create a Runner running npx --no-install 0 case reflect.Bool: truth = val.Bool() case reflect.Complex64, reflect.Complex128: truth = val.Complex() != 0 case reflect.Chan, reflect.Func, reflect.Ptr, reflect.Interface: truth = !val.IsNil() case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: truth = val.Int() != 0 case reflect.Float32, reflect.Float64: truth = val.Float() != 0 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: truth = val.Uint() != 0 case reflect.Struct: truth = true // Struct values are always true. default: return } return } type methodKey struct { typ reflect.Type name string } var methodCache sync.Map // GetMethodByName is the same as reflect.Value.MethodByName, but it caches the // type lookup. func GetMethodByName(v reflect.Value, name string) reflect.Value { index := GetMethodIndexByName(v.Type(), name) if index == -1 { return reflect.Value{} } return v.Method(index) } // GetMethodIndexByName returns the index of the method with the given name, or // -1 if no such method exists. func GetMethodIndexByName(tp reflect.Type, name string) int { k := methodKey{tp, name} v, found := methodCache.Load(k) if found { return v.(int) } m, ok := tp.MethodByName(name) index := m.Index if !ok { index = -1 } methodCache.Store(k, index) if !ok { return -1 } return m.Index } var ( timeType = reflect.TypeOf((*time.Time)(nil)).Elem() asTimeProviderType = reflect.TypeOf((*htime.AsTimeProvider)(nil)).Elem() ) // IsTime returns whether tp is a time.Time type or if it can be converted into one // in ToTime. func IsTime(tp reflect.Type) bool { if tp == timeType { return true } if tp.Implements(asTimeProviderType) { return true } return false } // IsValid returns whether v is not nil and a valid value. func IsValid(v reflect.Value) bool { if !v.IsValid() { return false } switch v.Kind() { case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: return !v.IsNil() } return true } // AsTime returns v as a time.Time if possible. // The given location is only used if the value implements AsTimeProvider (e.g. go-toml local). // A zero Time and false is returned if this isn't possible. // Note that this function does not accept string dates. func AsTime(v reflect.Value, loc *time.Location) (time.Time, bool) { if v.Kind() == reflect.Interface { return AsTime(v.Elem(), loc) } if v.Type() == timeType { return v.Interface().(time.Time), true } if v.Type().Implements(asTimeProviderType) { return v.Interface().(htime.AsTimeProvider).AsTime(loc), true } return time.Time{}, false } // ToSliceAny converts the given value to a slice of any if possible. func ToSliceAny(v any) ([]any, bool) { if v == nil { return nil, false } switch vv := v.(type) { case []any: return vv, true default: vvv := reflect.ValueOf(v) if vvv.Kind() == reflect.Slice { out := make([]any, vvv.Len()) for i := range vvv.Len() { out[i] = vvv.Index(i).Interface() } return out, true } } return nil, false } func CallMethodByName(cxt context.Context, name string, v reflect.Value) []reflect.Value { fn := v.MethodByName(name) var args []reflect.Value tp := fn.Type() if tp.NumIn() > 0 { if tp.NumIn() > 1 { panic("not supported") } first := tp.In(0) if IsContextType(first) { args = append(args, reflect.ValueOf(cxt)) } } return fn.Call(args) } // Based on: https://github.com/golang/go/blob/178a2c42254166cffed1b25fb1d3c7a5727cada6/src/text/template/exec.go#L931 func indirectInterface(v reflect.Value) reflect.Value { if v.Kind() != reflect.Interface { return v } if v.IsNil() { return reflect.Value{} } return v.Elem() } var contextInterface = reflect.TypeOf((*context.Context)(nil)).Elem() var isContextCache = maps.NewCache[reflect.Type, bool]() type k string var contextTypeValue = reflect.TypeOf(context.WithValue(context.Background(), k("key"), 32)) // IsContextType returns whether tp is a context.Context type. func IsContextType(tp reflect.Type) bool { if tp == contextTypeValue { return true } if tp == contextInterface { return true } isContext, _ := isContextCache.GetOrCreate(tp, func() (bool, error) { return tp.Implements(contextInterface), nil }) return isContext } // ConvertIfPossible tries to convert val to typ if possible. // This is currently only implemented for int kinds, // added to handle the move to a new YAML library which produces uint64 for unsigned integers. // We can expand on this later if needed. // This conversion is lossless. // See Issue 14079. func ConvertIfPossible(val reflect.Value, typ reflect.Type) (reflect.Value, bool) { if IsInt(typ.Kind()) { if IsInt(val.Kind()) { if typ.OverflowInt(val.Int()) { return reflect.Value{}, false } return val.Convert(typ), true } if IsUint(val.Kind()) { if val.Uint() > uint64(math.MaxInt64) { return reflect.Value{}, false } if typ.OverflowInt(int64(val.Uint())) { return reflect.Value{}, false } return val.Convert(typ), true } if IsFloat(val.Kind()) { f := val.Float() if f < float64(math.MinInt64) || f > float64(math.MaxInt64) { return reflect.Value{}, false } i := int64(f) if typ.OverflowInt(i) { return reflect.Value{}, false } // Check for lossless conversion. if float64(i) != f { return reflect.Value{}, false } return val.Convert(typ), true } } return reflect.Value{}, false } gohugoio-hugo-6abdaca/common/hreflect/helpers_test.go000066400000000000000000000143661507671574500232640ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hreflect import ( "context" "math" "reflect" "testing" "time" qt "github.com/frankban/quicktest" ) type zeroStruct struct { zero bool } func (z zeroStruct) IsZero() bool { return z.zero } func TestIsTruthful(t *testing.T) { c := qt.New(t) var nilpointerZero *zeroStruct c.Assert(IsTruthful(true), qt.Equals, true) c.Assert(IsTruthful(false), qt.Equals, false) c.Assert(IsTruthful(time.Now()), qt.Equals, true) c.Assert(IsTruthful(time.Time{}), qt.Equals, false) c.Assert(IsTruthful(&zeroStruct{zero: false}), qt.Equals, true) c.Assert(IsTruthful(&zeroStruct{zero: true}), qt.Equals, false) c.Assert(IsTruthful(zeroStruct{zero: false}), qt.Equals, true) c.Assert(IsTruthful(zeroStruct{zero: true}), qt.Equals, false) c.Assert(IsTruthful(nil), qt.Equals, false) c.Assert(IsTruthful(nilpointerZero), qt.Equals, false) } func TestGetMethodByName(t *testing.T) { c := qt.New(t) v := reflect.ValueOf(&testStruct{}) tp := v.Type() c.Assert(GetMethodIndexByName(tp, "Method1"), qt.Equals, 0) c.Assert(GetMethodIndexByName(tp, "Method3"), qt.Equals, 2) c.Assert(GetMethodIndexByName(tp, "Foo"), qt.Equals, -1) } func TestIsContextType(t *testing.T) { c := qt.New(t) type k string ctx := context.Background() valueCtx := context.WithValue(ctx, k("key"), 32) c.Assert(IsContextType(reflect.TypeOf(ctx)), qt.IsTrue) c.Assert(IsContextType(reflect.TypeOf(valueCtx)), qt.IsTrue) } func TestToSliceAny(t *testing.T) { c := qt.New(t) checkOK := func(in any, expected []any) { out, ok := ToSliceAny(in) c.Assert(ok, qt.Equals, true) c.Assert(out, qt.DeepEquals, expected) } checkOK([]any{1, 2, 3}, []any{1, 2, 3}) checkOK([]int{1, 2, 3}, []any{1, 2, 3}) } func BenchmarkIsContextType(b *testing.B) { type k string b.Run("value", func(b *testing.B) { ctx := context.Background() ctxs := make([]reflect.Type, b.N) for i := 0; i < b.N; i++ { ctxs[i] = reflect.TypeOf(context.WithValue(ctx, k("key"), i)) } b.ResetTimer() for i := 0; i < b.N; i++ { if !IsContextType(ctxs[i]) { b.Fatal("not context") } } }) b.Run("background", func(b *testing.B) { var ctxt reflect.Type = reflect.TypeOf(context.Background()) for i := 0; i < b.N; i++ { if !IsContextType(ctxt) { b.Fatal("not context") } } }) } func BenchmarkIsTruthFulValue(b *testing.B) { var ( stringHugo = reflect.ValueOf("Hugo") stringEmpty = reflect.ValueOf("") zero = reflect.ValueOf(time.Time{}) timeNow = reflect.ValueOf(time.Now()) boolTrue = reflect.ValueOf(true) boolFalse = reflect.ValueOf(false) nilPointer = reflect.ValueOf((*zeroStruct)(nil)) ) b.ResetTimer() for i := 0; i < b.N; i++ { IsTruthfulValue(stringHugo) IsTruthfulValue(stringEmpty) IsTruthfulValue(zero) IsTruthfulValue(timeNow) IsTruthfulValue(boolTrue) IsTruthfulValue(boolFalse) IsTruthfulValue(nilPointer) } } type testStruct struct{} func (t *testStruct) Method1() string { return "Hugo" } func (t *testStruct) Method2() string { return "Hugo" } func (t *testStruct) Method3() string { return "Hugo" } func (t *testStruct) Method4() string { return "Hugo" } func (t *testStruct) Method5() string { return "Hugo" } func BenchmarkGetMethodByName(b *testing.B) { v := reflect.ValueOf(&testStruct{}) methods := []string{"Method1", "Method2", "Method3", "Method4", "Method5"} b.ResetTimer() for i := 0; i < b.N; i++ { for _, method := range methods { _ = GetMethodByName(v, method) } } } func BenchmarkGetMethodByNamePara(b *testing.B) { v := reflect.ValueOf(&testStruct{}) methods := []string{"Method1", "Method2", "Method3", "Method4", "Method5"} b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { for _, method := range methods { _ = GetMethodByName(v, method) } } }) } func TestCastIfPossible(t *testing.T) { c := qt.New(t) for _, test := range []struct { name string value any typ any expected any ok bool }{ // From uint to int. { name: "uint64(math.MaxUint64) to int16", value: uint64(math.MaxUint64), typ: int16(0), ok: false, // overflow }, { name: "uint64(math.MaxUint64) to int64", value: uint64(math.MaxUint64), typ: int64(0), ok: false, // overflow }, { name: "uint64(math.MaxInt16) to int16", value: uint64(math.MaxInt16), typ: int64(0), ok: true, expected: int64(math.MaxInt16), }, // From int to int. { name: "int64(math.MaxInt64) to int16", value: int64(math.MaxInt64), typ: int16(0), ok: false, // overflow }, { name: "int64(math.MaxInt16) to int", value: int64(math.MaxInt16), typ: int(0), ok: true, expected: int(math.MaxInt16), }, { name: "int64(math.MaxInt16) to int", value: int64(math.MaxInt16), typ: int(0), ok: true, expected: int(math.MaxInt16), }, // From float to int. { name: "float64(1.5) to int", value: float64(1.5), typ: int(0), ok: false, // loss of precision }, { name: "float64(1.0) to int", value: float64(1.0), typ: int(0), ok: true, expected: int(1), }, { name: "float64(math.MaxFloat64) to int16", value: float64(math.MaxFloat64), typ: int16(0), ok: false, // overflow }, { name: "float64(32767) to int16", value: float64(32767), typ: int16(0), ok: true, expected: int16(32767), }, } { v, ok := ConvertIfPossible(reflect.ValueOf(test.value), reflect.TypeOf(test.typ)) c.Assert(ok, qt.Equals, test.ok, qt.Commentf("test case: %s", test.name)) if test.ok { c.Assert(v.Interface(), qt.Equals, test.expected, qt.Commentf("test case: %s", test.name)) } } } gohugoio-hugo-6abdaca/common/hstrings/000077500000000000000000000000001507671574500202675ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/hstrings/strings.go000066400000000000000000000066511507671574500223170ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hstrings import ( "fmt" "regexp" "slices" "strings" "sync" "github.com/gohugoio/hugo/compare" ) var _ compare.Eqer = StringEqualFold("") // StringEqualFold is a string that implements the compare.Eqer interface and considers // two strings equal if they are equal when folded to lower case. // The compare.Eqer interface is used in Hugo to compare values in templates (e.g. using the eq template function). type StringEqualFold string func (s StringEqualFold) EqualFold(s2 string) bool { return strings.EqualFold(string(s), s2) } func (s StringEqualFold) String() string { return string(s) } func (s StringEqualFold) Eq(s2 any) bool { switch ss := s2.(type) { case string: return s.EqualFold(ss) case fmt.Stringer: return s.EqualFold(ss.String()) } return false } // EqualAny returns whether a string is equal to any of the given strings. func EqualAny(a string, b ...string) bool { return slices.Contains(b, a) } // regexpCache represents a cache of regexp objects protected by a mutex. type regexpCache struct { mu sync.RWMutex re map[string]*regexp.Regexp } func (rc *regexpCache) getOrCompileRegexp(pattern string) (re *regexp.Regexp, err error) { var ok bool if re, ok = rc.get(pattern); !ok { re, err = regexp.Compile(pattern) if err != nil { return nil, err } rc.set(pattern, re) } return re, nil } func (rc *regexpCache) get(key string) (re *regexp.Regexp, ok bool) { rc.mu.RLock() re, ok = rc.re[key] rc.mu.RUnlock() return } func (rc *regexpCache) set(key string, re *regexp.Regexp) { rc.mu.Lock() rc.re[key] = re rc.mu.Unlock() } var reCache = regexpCache{re: make(map[string]*regexp.Regexp)} // GetOrCompileRegexp retrieves a regexp object from the cache based upon the pattern. // If the pattern is not found in the cache, the pattern is compiled and added to // the cache. func GetOrCompileRegexp(pattern string) (re *regexp.Regexp, err error) { return reCache.getOrCompileRegexp(pattern) } // InSlice checks if a string is an element of a slice of strings // and returns a boolean value. func InSlice(arr []string, el string) bool { return slices.Contains(arr, el) } // InSlicEqualFold checks if a string is an element of a slice of strings // and returns a boolean value. // It uses strings.EqualFold to compare. func InSlicEqualFold(arr []string, el string) bool { for _, v := range arr { if strings.EqualFold(v, el) { return true } } return false } // ToString converts the given value to a string. // Note that this is a more strict version compared to cast.ToString, // as it will not try to convert numeric values to strings, // but only accept strings or fmt.Stringer. func ToString(v any) (string, bool) { switch vv := v.(type) { case string: return vv, true case fmt.Stringer: return vv.String(), true } return "", false } type ( Strings2 [2]string Strings3 [3]string ) gohugoio-hugo-6abdaca/common/hstrings/strings_test.go000066400000000000000000000030761507671574500233540ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hstrings import ( "regexp" "testing" qt "github.com/frankban/quicktest" ) func TestStringEqualFold(t *testing.T) { c := qt.New(t) s1 := "A" s2 := "a" c.Assert(StringEqualFold(s1).EqualFold(s2), qt.Equals, true) c.Assert(StringEqualFold(s1).EqualFold(s1), qt.Equals, true) c.Assert(StringEqualFold(s2).EqualFold(s1), qt.Equals, true) c.Assert(StringEqualFold(s2).EqualFold(s2), qt.Equals, true) c.Assert(StringEqualFold(s1).EqualFold("b"), qt.Equals, false) c.Assert(StringEqualFold(s1).Eq(s2), qt.Equals, true) c.Assert(StringEqualFold(s1).Eq("b"), qt.Equals, false) } func TestGetOrCompileRegexp(t *testing.T) { c := qt.New(t) re, err := GetOrCompileRegexp(`\d+`) c.Assert(err, qt.IsNil) c.Assert(re.MatchString("123"), qt.Equals, true) } func BenchmarkGetOrCompileRegexp(b *testing.B) { for i := 0; i < b.N; i++ { GetOrCompileRegexp(`\d+`) } } func BenchmarkCompileRegexp(b *testing.B) { for i := 0; i < b.N; i++ { regexp.MustCompile(`\d+`) } } gohugoio-hugo-6abdaca/common/htime/000077500000000000000000000000001507671574500175345ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/htime/htime_integration_test.go000066400000000000000000000040051507671574500246320ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package htime_test import ( "testing" "github.com/gohugoio/hugo/hugolib" ) // Issue #11267 func TestApplyWithContext(t *testing.T) { t.Parallel() files := ` -- config.toml -- defaultContentLanguage = 'it' -- layouts/index.html -- {{ $dates := slice "2022-01-03" "2022-02-01" "2022-03-02" "2022-04-07" "2022-05-06" "2022-06-04" "2022-07-03" "2022-08-01" "2022-09-06" "2022-10-05" "2022-11-03" "2022-12-02" }} {{ range $dates }} {{ . | time.Format "month: _January_ weekday: _Monday_" }} {{ . | time.Format "month: _Jan_ weekday: _Mon_" }} {{ end }} ` b := hugolib.Test(t, files) b.AssertFileContent("public/index.html", ` month: _gennaio_ weekday: _lunedì_ month: _gen_ weekday: _lun_ month: _febbraio_ weekday: _martedì_ month: _feb_ weekday: _mar_ month: _marzo_ weekday: _mercoledì_ month: _mar_ weekday: _mer_ month: _aprile_ weekday: _giovedì_ month: _apr_ weekday: _gio_ month: _maggio_ weekday: _venerdì_ month: _mag_ weekday: _ven_ month: _giugno_ weekday: _sabato_ month: _giu_ weekday: _sab_ month: _luglio_ weekday: _domenica_ month: _lug_ weekday: _dom_ month: _agosto_ weekday: _lunedì_ month: _ago_ weekday: _lun_ month: _settembre_ weekday: _martedì_ month: _set_ weekday: _mar_ month: _ottobre_ weekday: _mercoledì_ month: _ott_ weekday: _mer_ month: _novembre_ weekday: _giovedì_ month: _nov_ weekday: _gio_ month: _dicembre_ weekday: _venerdì_ month: _dic_ weekday: _ven_ `) } gohugoio-hugo-6abdaca/common/htime/time.go000066400000000000000000000074521507671574500210310ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package htime import ( "log" "strings" "time" "github.com/bep/clocks" "github.com/spf13/cast" "github.com/gohugoio/locales" ) var ( longDayNames = []string{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", } shortDayNames = []string{ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", } shortMonthNames = []string{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", } longMonthNames = []string{ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", } Clock = clocks.System() ) func NewTimeFormatter(ltr locales.Translator) TimeFormatter { if ltr == nil { panic("must provide a locales.Translator") } return TimeFormatter{ ltr: ltr, } } // TimeFormatter is locale aware. type TimeFormatter struct { ltr locales.Translator } func (f TimeFormatter) Format(t time.Time, layout string) string { if layout == "" { return "" } if layout[0] == ':' { // It may be one of Hugo's custom layouts. switch strings.ToLower(layout[1:]) { case "date_full": return f.ltr.FmtDateFull(t) case "date_long": return f.ltr.FmtDateLong(t) case "date_medium": return f.ltr.FmtDateMedium(t) case "date_short": return f.ltr.FmtDateShort(t) case "time_full": return f.ltr.FmtTimeFull(t) case "time_long": return f.ltr.FmtTimeLong(t) case "time_medium": return f.ltr.FmtTimeMedium(t) case "time_short": return f.ltr.FmtTimeShort(t) } } s := t.Format(layout) monthIdx := t.Month() - 1 // Month() starts at 1. dayIdx := t.Weekday() if strings.Contains(layout, "January") { s = strings.ReplaceAll(s, longMonthNames[monthIdx], f.ltr.MonthWide(t.Month())) } else if strings.Contains(layout, "Jan") { s = strings.ReplaceAll(s, shortMonthNames[monthIdx], f.ltr.MonthAbbreviated(t.Month())) } if strings.Contains(layout, "Monday") { s = strings.ReplaceAll(s, longDayNames[dayIdx], f.ltr.WeekdayWide(t.Weekday())) } else if strings.Contains(layout, "Mon") { s = strings.ReplaceAll(s, shortDayNames[dayIdx], f.ltr.WeekdayAbbreviated(t.Weekday())) } return s } func ToTimeInDefaultLocationE(i any, location *time.Location) (tim time.Time, err error) { switch vv := i.(type) { case AsTimeProvider: return vv.AsTime(location), nil // issue #8895 // datetimes parsed by `go-toml` have empty zone name // convert back them into string and use `cast` // TODO(bep) add tests, make sure we really need this. case time.Time: i = vv.Format(time.RFC3339) } return cast.ToTimeInDefaultLocationE(i, location) } // Now returns time.Now() or time value based on the `clock` flag. // Use this function to fake time inside hugo. func Now() time.Time { return Clock.Now() } func Since(t time.Time) time.Duration { return Clock.Since(t) } // AsTimeProvider is implemented by go-toml's LocalDate and LocalDateTime. type AsTimeProvider interface { AsTime(zone *time.Location) time.Time } // StopWatch is a simple helper to measure time during development. func StopWatch(name string) func() { start := time.Now() return func() { log.Printf("StopWatch %q took %s", name, time.Since(start)) } } gohugoio-hugo-6abdaca/common/htime/time_test.go000066400000000000000000000122201507671574500220550ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package htime import ( "testing" "time" qt "github.com/frankban/quicktest" translators "github.com/gohugoio/localescompressed" ) func TestTimeFormatter(t *testing.T) { c := qt.New(t) june06, _ := time.Parse("2006-Jan-02", "2018-Jun-06") june06 = june06.Add(7777 * time.Second) jan06, _ := time.Parse("2006-Jan-02", "2018-Jan-06") jan06 = jan06.Add(32 * time.Second) mondayNovemberFirst, _ := time.Parse("2006-Jan-02", "2021-11-01") mondayNovemberFirst = mondayNovemberFirst.Add(33 * time.Second) c.Run("Norsk nynorsk", func(c *qt.C) { f := NewTimeFormatter(translators.GetTranslator("nn")) c.Assert(f.Format(june06, "Monday Jan 2 2006"), qt.Equals, "onsdag juni 6 2018") c.Assert(f.Format(june06, "Mon January 2 2006"), qt.Equals, "on. juni 6 2018") c.Assert(f.Format(june06, "Mon Mon"), qt.Equals, "on. on.") }) c.Run("Custom layouts Norsk nynorsk", func(c *qt.C) { f := NewTimeFormatter(translators.GetTranslator("nn")) c.Assert(f.Format(june06, ":date_full"), qt.Equals, "onsdag 6. juni 2018") c.Assert(f.Format(june06, ":date_long"), qt.Equals, "6. juni 2018") c.Assert(f.Format(june06, ":date_medium"), qt.Equals, "6. juni 2018") c.Assert(f.Format(june06, ":date_short"), qt.Equals, "06.06.2018") c.Assert(f.Format(june06, ":time_full"), qt.Equals, "kl. 02:09:37 UTC") c.Assert(f.Format(june06, ":time_long"), qt.Equals, "02:09:37 UTC") c.Assert(f.Format(june06, ":time_medium"), qt.Equals, "02:09:37") c.Assert(f.Format(june06, ":time_short"), qt.Equals, "02:09") }) c.Run("Custom layouts English", func(c *qt.C) { f := NewTimeFormatter(translators.GetTranslator("en")) c.Assert(f.Format(june06, ":date_full"), qt.Equals, "Wednesday, June 6, 2018") c.Assert(f.Format(june06, ":date_long"), qt.Equals, "June 6, 2018") c.Assert(f.Format(june06, ":date_medium"), qt.Equals, "Jun 6, 2018") c.Assert(f.Format(june06, ":date_short"), qt.Equals, "6/6/18") c.Assert(f.Format(june06, ":time_full"), qt.Equals, "2:09:37 am UTC") c.Assert(f.Format(june06, ":time_long"), qt.Equals, "2:09:37 am UTC") c.Assert(f.Format(june06, ":time_medium"), qt.Equals, "2:09:37 am") c.Assert(f.Format(june06, ":time_short"), qt.Equals, "2:09 am") }) c.Run("English", func(c *qt.C) { f := NewTimeFormatter(translators.GetTranslator("en")) c.Assert(f.Format(june06, "Monday Jan 2 2006"), qt.Equals, "Wednesday Jun 6 2018") c.Assert(f.Format(june06, "Mon January 2 2006"), qt.Equals, "Wed June 6 2018") c.Assert(f.Format(june06, "Mon Mon"), qt.Equals, "Wed Wed") }) c.Run("Weekdays German", func(c *qt.C) { tr := translators.GetTranslator("de") f := NewTimeFormatter(tr) // Issue #9107 for i, weekDayWideGerman := range []string{"Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"} { date := mondayNovemberFirst.Add(time.Duration(i*24) * time.Hour) c.Assert(tr.WeekdayWide(date.Weekday()), qt.Equals, weekDayWideGerman) c.Assert(f.Format(date, "Monday"), qt.Equals, weekDayWideGerman) } for i, weekDayAbbreviatedGerman := range []string{"Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa.", "So."} { date := mondayNovemberFirst.Add(time.Duration(i*24) * time.Hour) c.Assert(tr.WeekdayAbbreviated(date.Weekday()), qt.Equals, weekDayAbbreviatedGerman) c.Assert(f.Format(date, "Mon"), qt.Equals, weekDayAbbreviatedGerman) } }) c.Run("Months German", func(c *qt.C) { tr := translators.GetTranslator("de") f := NewTimeFormatter(tr) // Issue #9107 for i, monthWideNorway := range []string{"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli"} { date := jan06.Add(time.Duration(i*24*31) * time.Hour) c.Assert(tr.MonthWide(date.Month()), qt.Equals, monthWideNorway) c.Assert(f.Format(date, "January"), qt.Equals, monthWideNorway) } }) } func BenchmarkTimeFormatter(b *testing.B) { june06, _ := time.Parse("2006-Jan-02", "2018-Jun-06") b.Run("Native", func(b *testing.B) { for i := 0; i < b.N; i++ { got := june06.Format("Monday Jan 2 2006") if got != "Wednesday Jun 6 2018" { b.Fatalf("invalid format, got %q", got) } } }) b.Run("Localized", func(b *testing.B) { f := NewTimeFormatter(translators.GetTranslator("nn")) b.ResetTimer() for i := 0; i < b.N; i++ { got := f.Format(june06, "Monday Jan 2 2006") if got != "onsdag juni 6 2018" { b.Fatalf("invalid format, got %q", got) } } }) b.Run("Localized Custom", func(b *testing.B) { f := NewTimeFormatter(translators.GetTranslator("nn")) b.ResetTimer() for i := 0; i < b.N; i++ { got := f.Format(june06, ":date_medium") if got != "6. juni 2018" { b.Fatalf("invalid format, got %q", got) } } }) } gohugoio-hugo-6abdaca/common/hugio/000077500000000000000000000000001507671574500175415ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/hugio/copy.go000066400000000000000000000037361507671574500210530ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugio import ( "fmt" "io" iofs "io/fs" "path/filepath" "github.com/spf13/afero" ) // CopyFile copies a file. func CopyFile(fs afero.Fs, from, to string) error { sf, err := fs.Open(from) if err != nil { return err } defer sf.Close() df, err := fs.Create(to) if err != nil { return err } defer df.Close() _, err = io.Copy(df, sf) if err != nil { return err } si, err := fs.Stat(from) if err != nil { err = fs.Chmod(to, si.Mode()) if err != nil { return err } } return nil } // CopyDir copies a directory. func CopyDir(fs afero.Fs, from, to string, shouldCopy func(filename string) bool) error { fi, err := fs.Stat(from) if err != nil { return err } if !fi.IsDir() { return fmt.Errorf("%q is not a directory", from) } err = fs.MkdirAll(to, 0o777) // before umask if err != nil { return err } d, err := fs.Open(from) if err != nil { return err } entries, _ := d.(iofs.ReadDirFile).ReadDir(-1) for _, entry := range entries { fromFilename := filepath.Join(from, entry.Name()) toFilename := filepath.Join(to, entry.Name()) if entry.IsDir() { if shouldCopy != nil && !shouldCopy(fromFilename) { continue } if err := CopyDir(fs, fromFilename, toFilename, shouldCopy); err != nil { return err } } else { if err := CopyFile(fs, fromFilename, toFilename); err != nil { return err } } } return nil } gohugoio-hugo-6abdaca/common/hugio/hasBytesWriter.go000066400000000000000000000031521507671574500230500ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugio import ( "bytes" ) // HasBytesWriter is a writer will match against a slice of patterns. type HasBytesWriter struct { Patterns []*HasBytesPattern i int done bool buff []byte } type HasBytesPattern struct { Match bool Pattern []byte } func (h *HasBytesWriter) patternLen() int { l := 0 for _, p := range h.Patterns { l += len(p.Pattern) } return l } func (h *HasBytesWriter) Write(p []byte) (n int, err error) { if h.done { return len(p), nil } if len(h.buff) == 0 { h.buff = make([]byte, h.patternLen()*2) } for i := range p { h.buff[h.i] = p[i] h.i++ if h.i == len(h.buff) { // Shift left. copy(h.buff, h.buff[len(h.buff)/2:]) h.i = len(h.buff) / 2 } for _, pp := range h.Patterns { if bytes.Contains(h.buff, pp.Pattern) { pp.Match = true done := true for _, ppp := range h.Patterns { if !ppp.Match { done = false break } } if done { h.done = true } return len(p), nil } } } return len(p), nil } gohugoio-hugo-6abdaca/common/hugio/hasBytesWriter_test.go000066400000000000000000000031111507671574500241020ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugio import ( "bytes" "fmt" "io" "math/rand" "strings" "testing" "time" qt "github.com/frankban/quicktest" ) func TestHasBytesWriter(t *testing.T) { r := rand.New(rand.NewSource(time.Now().UnixNano())) c := qt.New((t)) neww := func() (*HasBytesWriter, io.Writer) { var b bytes.Buffer h := &HasBytesWriter{ Patterns: []*HasBytesPattern{ {Pattern: []byte("__foo")}, }, } return h, io.MultiWriter(&b, h) } rndStr := func() string { return strings.Repeat("ab cfo", r.Intn(33)) } for range 22 { h, w := neww() fmt.Fprint(w, rndStr()+"abc __foobar"+rndStr()) c.Assert(h.Patterns[0].Match, qt.Equals, true) h, w = neww() fmt.Fprint(w, rndStr()+"abc __f") fmt.Fprint(w, "oo bar"+rndStr()) c.Assert(h.Patterns[0].Match, qt.Equals, true) h, w = neww() fmt.Fprint(w, rndStr()+"abc __moo bar") c.Assert(h.Patterns[0].Match, qt.Equals, false) } h, w := neww() fmt.Fprintf(w, "__foo") c.Assert(h.Patterns[0].Match, qt.Equals, true) } gohugoio-hugo-6abdaca/common/hugio/readers.go000066400000000000000000000060201507671574500215130ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugio import ( "bytes" "io" "strings" ) // ReadSeeker wraps io.Reader and io.Seeker. type ReadSeeker interface { io.Reader io.Seeker } // ReadSeekCloser is implemented by afero.File. We use this as the common type for // content in Resource objects, even for strings. type ReadSeekCloser interface { ReadSeeker io.Closer } // ReadSeekCloserProvider provides a ReadSeekCloser. type ReadSeekCloserProvider interface { ReadSeekCloser() (ReadSeekCloser, error) } // readSeekerNopCloser implements ReadSeekCloser by doing nothing in Close. type readSeekerNopCloser struct { ReadSeeker } // Close does nothing. func (r readSeekerNopCloser) Close() error { return nil } // NewReadSeekerNoOpCloser creates a new ReadSeekerNoOpCloser with the given ReadSeeker. func NewReadSeekerNoOpCloser(r ReadSeeker) ReadSeekCloser { return readSeekerNopCloser{r} } // NewReadSeekerNoOpCloserFromString uses strings.NewReader to create a new ReadSeekerNoOpCloser // from the given string. func NewReadSeekerNoOpCloserFromString(content string) ReadSeekCloser { return stringReadSeeker{s: content, readSeekerNopCloser: readSeekerNopCloser{strings.NewReader(content)}} } var _ StringReader = (*stringReadSeeker)(nil) type stringReadSeeker struct { s string readSeekerNopCloser } func (s *stringReadSeeker) ReadString() string { return s.s } // StringReader provides a way to read a string. type StringReader interface { ReadString() string } // NewReadSeekerNoOpCloserFromBytes uses bytes.NewReader to create a new ReadSeekerNoOpCloser // from the given bytes slice. func NewReadSeekerNoOpCloserFromBytes(content []byte) readSeekerNopCloser { return readSeekerNopCloser{bytes.NewReader(content)} } // NewOpenReadSeekCloser creates a new ReadSeekCloser from the given ReadSeeker. // The ReadSeeker will be seeked to the beginning before returned. func NewOpenReadSeekCloser(r ReadSeekCloser) OpenReadSeekCloser { return func() (ReadSeekCloser, error) { r.Seek(0, io.SeekStart) return r, nil } } // OpenReadSeekCloser allows setting some other way (than reading from a filesystem) // to open or create a ReadSeekCloser. type OpenReadSeekCloser func() (ReadSeekCloser, error) // ReadString reads from the given reader and returns the content as a string. func ReadString(r io.Reader) (string, error) { if sr, ok := r.(StringReader); ok { return sr.ReadString(), nil } b, err := io.ReadAll(r) if err != nil { return "", err } return string(b), nil } gohugoio-hugo-6abdaca/common/hugio/writers.go000066400000000000000000000052761507671574500216010ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugio import ( "io" ) // As implemented by strings.Builder. type FlexiWriter interface { io.Writer io.ByteWriter WriteString(s string) (int, error) WriteRune(r rune) (int, error) } type multiWriteCloser struct { io.Writer closers []io.WriteCloser } func (m multiWriteCloser) Close() error { var err error for _, c := range m.closers { if closeErr := c.Close(); closeErr != nil { err = closeErr } } return err } // NewMultiWriteCloser creates a new io.WriteCloser that duplicates its writes to all the // provided writers. func NewMultiWriteCloser(writeClosers ...io.WriteCloser) io.WriteCloser { writers := make([]io.Writer, len(writeClosers)) for i, w := range writeClosers { writers[i] = w } return multiWriteCloser{Writer: io.MultiWriter(writers...), closers: writeClosers} } // ToWriteCloser creates an io.WriteCloser from the given io.Writer. // If it's not already, one will be created with a Close method that does nothing. func ToWriteCloser(w io.Writer) io.WriteCloser { if rw, ok := w.(io.WriteCloser); ok { return rw } return struct { io.Writer io.Closer }{ w, io.NopCloser(nil), } } // ToReadCloser creates an io.ReadCloser from the given io.Reader. // If it's not already, one will be created with a Close method that does nothing. func ToReadCloser(r io.Reader) io.ReadCloser { if rc, ok := r.(io.ReadCloser); ok { return rc } return struct { io.Reader io.Closer }{ r, io.NopCloser(nil), } } type ReadWriteCloser interface { io.Reader io.Writer io.Closer } // PipeReadWriteCloser is a convenience type to create a pipe with a ReadCloser and a WriteCloser. type PipeReadWriteCloser struct { *io.PipeReader *io.PipeWriter } // NewPipeReadWriteCloser creates a new PipeReadWriteCloser. func NewPipeReadWriteCloser() PipeReadWriteCloser { pr, pw := io.Pipe() return PipeReadWriteCloser{pr, pw} } func (c PipeReadWriteCloser) Close() (err error) { if err = c.PipeReader.Close(); err != nil { return } err = c.PipeWriter.Close() return } func (c PipeReadWriteCloser) WriteString(s string) (int, error) { return c.PipeWriter.Write([]byte(s)) } gohugoio-hugo-6abdaca/common/hugo/000077500000000000000000000000001507671574500173705ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/hugo/hugo.go000066400000000000000000000311341507671574500206630ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugo import ( "context" "fmt" "html/template" "os" "path/filepath" "runtime/debug" "sort" "strings" "sync" "time" "github.com/bep/logg" "github.com/bep/godartsass/v2" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/hugofs/files" "github.com/bep/helpers/contexthelpers" "github.com/spf13/afero" iofs "io/fs" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/hugofs" ) const ( EnvironmentDevelopment = "development" EnvironmentProduction = "production" ) var ( // buildDate allows vendor-specified build date when .git/ is unavailable. buildDate string // vendorInfo contains vendor notes about the current build. vendorInfo string ) var _ maps.StoreProvider = (*HugoInfo)(nil) // HugoInfo contains information about the current Hugo environment type HugoInfo struct { CommitHash string BuildDate string // The build environment. // Defaults are "production" (hugo) and "development" (hugo server). // This can also be set by the user. // It can be any string, but it will be all lower case. Environment string // version of go that the Hugo binary was built with GoVersion string conf ConfigProvider deps []*Dependency store *maps.Scratch // Context gives access to some of the context scoped variables. Context Context } // Version returns the current version as a comparable version string. func (i HugoInfo) Version() VersionString { return CurrentVersion.Version() } // Generator a Hugo meta generator HTML tag. func (i HugoInfo) Generator() template.HTML { return template.HTML(fmt.Sprintf(``, CurrentVersion.String())) } // IsDevelopment reports whether the current running environment is "development". func (i HugoInfo) IsDevelopment() bool { return i.Environment == EnvironmentDevelopment } // IsProduction reports whether the current running environment is "production". func (i HugoInfo) IsProduction() bool { return i.Environment == EnvironmentProduction } // IsServer reports whether the built-in server is running. func (i HugoInfo) IsServer() bool { return i.conf.Running() } // IsExtended reports whether the Hugo binary is the extended version. func (i HugoInfo) IsExtended() bool { return IsExtended } // WorkingDir returns the project working directory. func (i HugoInfo) WorkingDir() string { return i.conf.WorkingDir() } // Deps gets a list of dependencies for this Hugo build. func (i HugoInfo) Deps() []*Dependency { return i.deps } func (i HugoInfo) Store() *maps.Scratch { return i.store } // Deprecated: Use hugo.IsMultihost instead. func (i HugoInfo) IsMultiHost() bool { Deprecate("hugo.IsMultiHost", "Use hugo.IsMultihost instead.", "v0.124.0") return i.conf.IsMultihost() } // IsMultihost reports whether each configured language has a unique baseURL. func (i HugoInfo) IsMultihost() bool { return i.conf.IsMultihost() } // IsMultilingual reports whether there are two or more configured languages. func (i HugoInfo) IsMultilingual() bool { return i.conf.IsMultilingual() } type contextKey uint8 const ( contextKeyMarkupScope contextKey = iota ) var markupScope = contexthelpers.NewContextDispatcher[string](contextKeyMarkupScope) type Context struct{} func (c Context) MarkupScope(ctx context.Context) string { return GetMarkupScope(ctx) } // SetMarkupScope sets the markup scope in the context. func SetMarkupScope(ctx context.Context, s string) context.Context { return markupScope.Set(ctx, s) } // GetMarkupScope gets the markup scope from the context. func GetMarkupScope(ctx context.Context) string { return markupScope.Get(ctx) } // ConfigProvider represents the config options that are relevant for HugoInfo. type ConfigProvider interface { Environment() string Running() bool WorkingDir() string IsMultihost() bool IsMultilingual() bool } // NewInfo creates a new Hugo Info object. func NewInfo(conf ConfigProvider, deps []*Dependency) HugoInfo { if conf.Environment() == "" { panic("environment not set") } var ( commitHash string buildDate string goVersion string ) bi := getBuildInfo() if bi != nil { commitHash = bi.Revision buildDate = bi.RevisionTime goVersion = bi.GoVersion } return HugoInfo{ CommitHash: commitHash, BuildDate: buildDate, Environment: conf.Environment(), conf: conf, deps: deps, store: maps.NewScratch(), GoVersion: goVersion, } } // GetExecEnviron creates and gets the common os/exec environment used in the // external programs we interact with via os/exec, e.g. postcss. func GetExecEnviron(workDir string, cfg config.AllProvider, fs afero.Fs) []string { var env []string nodepath := filepath.Join(workDir, "node_modules") if np := os.Getenv("NODE_PATH"); np != "" { nodepath = workDir + string(os.PathListSeparator) + np } config.SetEnvVars(&env, "NODE_PATH", nodepath) config.SetEnvVars(&env, "PWD", workDir) config.SetEnvVars(&env, "HUGO_ENVIRONMENT", cfg.Environment()) config.SetEnvVars(&env, "HUGO_ENV", cfg.Environment()) config.SetEnvVars(&env, "HUGO_PUBLISHDIR", filepath.Join(workDir, cfg.BaseConfig().PublishDir)) if fs != nil { var fis []iofs.DirEntry d, err := fs.Open(files.FolderJSConfig) if err == nil { fis, err = d.(iofs.ReadDirFile).ReadDir(-1) } if err == nil { for _, fi := range fis { key := fmt.Sprintf("HUGO_FILE_%s", strings.ReplaceAll(strings.ToUpper(fi.Name()), ".", "_")) value := fi.(hugofs.FileMetaInfo).Meta().Filename config.SetEnvVars(&env, key, value) } } } return env } type buildInfo struct { VersionControlSystem string Revision string RevisionTime string Modified bool GoOS string GoArch string *debug.BuildInfo } var ( bInfo *buildInfo bInfoInit sync.Once ) func getBuildInfo() *buildInfo { bInfoInit.Do(func() { bi, ok := debug.ReadBuildInfo() if !ok { return } bInfo = &buildInfo{BuildInfo: bi} for _, s := range bInfo.Settings { switch s.Key { case "vcs": bInfo.VersionControlSystem = s.Value case "vcs.revision": bInfo.Revision = s.Value case "vcs.time": bInfo.RevisionTime = s.Value case "vcs.modified": bInfo.Modified = s.Value == "true" case "GOOS": bInfo.GoOS = s.Value case "GOARCH": bInfo.GoArch = s.Value } } }) return bInfo } func formatDep(path, version string) string { return fmt.Sprintf("%s=%q", path, version) } // GetDependencyList returns a sorted dependency list on the format package="version". // It includes both Go dependencies and (a manually maintained) list of C(++) dependencies. func GetDependencyList() []string { var deps []string bi := getBuildInfo() if bi == nil { return deps } for _, dep := range bi.Deps { deps = append(deps, formatDep(dep.Path, dep.Version)) } deps = append(deps, GetDependencyListNonGo()...) sort.Strings(deps) return deps } // GetDependencyListNonGo returns a list of non-Go dependencies. func GetDependencyListNonGo() []string { var deps []string if IsExtended { deps = append( deps, formatDep("github.com/sass/libsass", "3.6.6"), formatDep("github.com/webmproject/libwebp", "v1.3.2"), ) } if dartSass := dartSassVersion(); dartSass.ProtocolVersion != "" { dartSassPath := "github.com/sass/dart-sass-embedded" if IsDartSassGeV2() { dartSassPath = "github.com/sass/dart-sass" } deps = append(deps, formatDep(dartSassPath+"/protocol", dartSass.ProtocolVersion), formatDep(dartSassPath+"/compiler", dartSass.CompilerVersion), formatDep(dartSassPath+"/implementation", dartSass.ImplementationVersion), ) } return deps } // IsRunningAsTest reports whether we are running as a test. func IsRunningAsTest() bool { for _, arg := range os.Args { if strings.HasPrefix(arg, "-test") { return true } } return false } // Dependency is a single dependency, which can be either a Hugo Module or a local theme. type Dependency struct { // Returns the path to this module. // This will either be the module path, e.g. "github.com/gohugoio/myshortcodes", // or the path below your /theme folder, e.g. "mytheme". Path string // The module version. Version string // Whether this dependency is vendored. Vendor bool // Time version was created. Time time.Time // In the dependency tree, this is the first module that defines this module // as a dependency. Owner *Dependency // Replaced by this dependency. Replace *Dependency } func dartSassVersion() godartsass.DartSassVersion { if DartSassBinaryName == "" || !IsDartSassGeV2() { return godartsass.DartSassVersion{} } v, _ := godartsass.Version(DartSassBinaryName) return v } // DartSassBinaryName is the name of the Dart Sass binary to use. // TODO(bep) find a better place for this. var DartSassBinaryName string func init() { DartSassBinaryName = os.Getenv("DART_SASS_BINARY") if DartSassBinaryName == "" { for _, name := range dartSassBinaryNamesV2 { if hexec.InPath(name) { DartSassBinaryName = name break } } if DartSassBinaryName == "" { if hexec.InPath(dartSassBinaryNameV1) { DartSassBinaryName = dartSassBinaryNameV1 } } } } var ( dartSassBinaryNameV1 = "dart-sass-embedded" dartSassBinaryNamesV2 = []string{"dart-sass", "sass"} ) // TODO(bep) we eventually want to remove this, but keep it for a while to throw an informative error. // We stopped supporting the old binary in Hugo 0.139.0. func IsDartSassGeV2() bool { // dart-sass-embedded was the first version of the embedded Dart Sass before it was moved into the main project. return !strings.Contains(DartSassBinaryName, "embedded") } // Deprecate informs about a deprecation starting at the given version. // // A deprecation typically needs a simple change in the template, but doing so will make the template incompatible with older versions. // Theme maintainers generally want // 1. No warnings or errors in the console when building a Hugo site. // 2. Their theme to work for at least the last few Hugo versions. func Deprecate(item, alternative string, version string) { level := deprecationLogLevelFromVersion(version) deprecateLevel(item, alternative, version, level) } // See Deprecate for details. func DeprecateWithLogger(item, alternative string, version string, log logg.Logger) { level := deprecationLogLevelFromVersion(version) deprecateLevelWithLogger(item, alternative, version, level, log) } // DeprecateLevelMin informs about a deprecation starting at the given version, but with a minimum log level. func DeprecateLevelMin(item, alternative string, version string, minLevel logg.Level) { level := max(deprecationLogLevelFromVersion(version), minLevel) deprecateLevel(item, alternative, version, level) } // deprecateLevel informs about a deprecation logging at the given level. func deprecateLevel(item, alternative, version string, level logg.Level) { deprecateLevelWithLogger(item, alternative, version, level, loggers.Log().Logger()) } // DeprecateLevel informs about a deprecation logging at the given level. func deprecateLevelWithLogger(item, alternative, version string, level logg.Level, log logg.Logger) { var msg string if level == logg.LevelError { msg = fmt.Sprintf("%s was deprecated in Hugo %s and subsequently removed. %s", item, version, alternative) } else { msg = fmt.Sprintf("%s was deprecated in Hugo %s and will be removed in a future release. %s", item, version, alternative) } log.WithLevel(level).WithField(loggers.FieldNameCmd, "deprecated").Logf("%s", msg) } // We usually do about one minor version a month. // We want people to run at least the current and previous version without any warnings. // We want people who don't update Hugo that often to see the warnings and errors before we remove the feature. func deprecationLogLevelFromVersion(ver string) logg.Level { from := MustParseVersion(ver) to := CurrentVersion minorDiff := to.Minor - from.Minor switch { case minorDiff >= 15: // Start failing the build after about 15 months. return logg.LevelError case minorDiff >= 3: // Start printing warnings after about 3 months. return logg.LevelWarn default: return logg.LevelInfo } } gohugoio-hugo-6abdaca/common/hugo/hugo_integration_test.go000066400000000000000000000036651507671574500243350ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugo_test import ( "strings" "testing" "github.com/gohugoio/hugo/hugolib" ) func TestIsMultilingualAndIsMultihost(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['page','rss','section','sitemap','taxonomy','term'] defaultContentLanguageInSubdir = true [languages.de] baseURL = 'https://de.example.org/' [languages.en] baseURL = 'https://en.example.org/' -- content/_index.md -- --- title: home --- -- layouts/index.html -- multilingual={{ hugo.IsMultilingual }} multihost={{ hugo.IsMultihost }} ` b := hugolib.Test(t, files) b.AssertFileContent("public/de/index.html", "multilingual=true", "multihost=true", ) b.AssertFileContent("public/en/index.html", "multilingual=true", "multihost=true", ) files = strings.ReplaceAll(files, "baseURL = 'https://de.example.org/'", "") files = strings.ReplaceAll(files, "baseURL = 'https://en.example.org/'", "") b = hugolib.Test(t, files) b.AssertFileContent("public/de/index.html", "multilingual=true", "multihost=false", ) b.AssertFileContent("public/en/index.html", "multilingual=true", "multihost=false", ) files = strings.ReplaceAll(files, "[languages.de]", "") files = strings.ReplaceAll(files, "[languages.en]", "") b = hugolib.Test(t, files) b.AssertFileContent("public/en/index.html", "multilingual=false", "multihost=false", ) } gohugoio-hugo-6abdaca/common/hugo/hugo_test.go000066400000000000000000000066441507671574500217320ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugo import ( "context" "fmt" "testing" "github.com/bep/logg" qt "github.com/frankban/quicktest" ) func TestHugoInfo(t *testing.T) { c := qt.New(t) conf := testConfig{environment: "production", workingDir: "/mywork", running: false} hugoInfo := NewInfo(conf, nil) c.Assert(hugoInfo.Version(), qt.Equals, CurrentVersion.Version()) c.Assert(fmt.Sprintf("%T", VersionString("")), qt.Equals, fmt.Sprintf("%T", hugoInfo.Version())) c.Assert(hugoInfo.WorkingDir(), qt.Equals, "/mywork") bi := getBuildInfo() if bi != nil { c.Assert(hugoInfo.CommitHash, qt.Equals, bi.Revision) c.Assert(hugoInfo.BuildDate, qt.Equals, bi.RevisionTime) c.Assert(hugoInfo.GoVersion, qt.Equals, bi.GoVersion) } c.Assert(hugoInfo.Environment, qt.Equals, "production") c.Assert(string(hugoInfo.Generator()), qt.Contains, fmt.Sprintf("Hugo %s", hugoInfo.Version())) c.Assert(hugoInfo.IsDevelopment(), qt.Equals, false) c.Assert(hugoInfo.IsProduction(), qt.Equals, true) c.Assert(hugoInfo.IsExtended(), qt.Equals, IsExtended) c.Assert(hugoInfo.IsServer(), qt.Equals, false) devHugoInfo := NewInfo(testConfig{environment: "development", running: true}, nil) c.Assert(devHugoInfo.IsDevelopment(), qt.Equals, true) c.Assert(devHugoInfo.IsProduction(), qt.Equals, false) c.Assert(devHugoInfo.IsServer(), qt.Equals, true) } func TestDeprecationLogLevelFromVersion(t *testing.T) { c := qt.New(t) c.Assert(deprecationLogLevelFromVersion("0.55.0"), qt.Equals, logg.LevelError) ver := CurrentVersion c.Assert(deprecationLogLevelFromVersion(ver.String()), qt.Equals, logg.LevelInfo) ver.Minor -= 3 c.Assert(deprecationLogLevelFromVersion(ver.String()), qt.Equals, logg.LevelWarn) ver.Minor -= 4 c.Assert(deprecationLogLevelFromVersion(ver.String()), qt.Equals, logg.LevelWarn) ver.Minor -= 13 c.Assert(deprecationLogLevelFromVersion(ver.String()), qt.Equals, logg.LevelError) // Added just to find the threshold for where we can remove deprecated items. // Subtract 5 from the minor version of the first ERRORed version => 0.122.0. c.Assert(deprecationLogLevelFromVersion("0.127.0"), qt.Equals, logg.LevelError) } func TestMarkupScope(t *testing.T) { c := qt.New(t) conf := testConfig{environment: "production", workingDir: "/mywork", running: false} info := NewInfo(conf, nil) ctx := context.Background() ctx = SetMarkupScope(ctx, "foo") c.Assert(info.Context.MarkupScope(ctx), qt.Equals, "foo") } type testConfig struct { environment string running bool workingDir string multihost bool multilingual bool } func (c testConfig) Environment() string { return c.environment } func (c testConfig) Running() bool { return c.running } func (c testConfig) WorkingDir() string { return c.workingDir } func (c testConfig) IsMultihost() bool { return c.multihost } func (c testConfig) IsMultilingual() bool { return c.multilingual } gohugoio-hugo-6abdaca/common/hugo/vars_extended.go000066400000000000000000000012321507671574500225500ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build extended package hugo var IsExtended = true gohugoio-hugo-6abdaca/common/hugo/vars_regular.go000066400000000000000000000012341507671574500224130ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build !extended package hugo var IsExtended = false gohugoio-hugo-6abdaca/common/hugo/vars_withdeploy.go000066400000000000000000000012361507671574500231440ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build withdeploy package hugo var IsWithdeploy = true gohugoio-hugo-6abdaca/common/hugo/vars_withdeploy_off.go000066400000000000000000000012401507671574500237710ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build !withdeploy package hugo var IsWithdeploy = false gohugoio-hugo-6abdaca/common/hugo/version.go000066400000000000000000000154321507671574500214110ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugo import ( "fmt" "io" "math" "runtime" "strconv" "strings" "github.com/gohugoio/hugo/compare" "github.com/spf13/cast" ) // Version represents the Hugo build version. type Version struct { Major int Minor int // Increment this for bug releases PatchLevel int // HugoVersionSuffix is the suffix used in the Hugo version string. // It will be blank for release versions. Suffix string } var ( _ compare.Eqer = (*VersionString)(nil) _ compare.Comparer = (*VersionString)(nil) ) func (v Version) String() string { return version(v.Major, v.Minor, v.PatchLevel, v.Suffix) } // Version returns the Hugo version. func (v Version) Version() VersionString { return VersionString(v.String()) } // Compare implements the compare.Comparer interface. func (h Version) Compare(other any) int { return compareVersions(h, other) } // VersionString represents a Hugo version string. type VersionString string func (h VersionString) String() string { return string(h) } // Compare implements the compare.Comparer interface. func (h VersionString) Compare(other any) int { return compareVersions(h.Version(), other) } func (h VersionString) Version() Version { return MustParseVersion(h.String()) } // Eq implements the compare.Eqer interface. func (h VersionString) Eq(other any) bool { s, err := cast.ToStringE(other) if err != nil { return false } return s == h.String() } var versionSuffixes = []string{"-test", "-DEV"} // ParseVersion parses a version string. func ParseVersion(s string) (Version, error) { var vv Version for _, suffix := range versionSuffixes { if strings.HasSuffix(s, suffix) { vv.Suffix = suffix s = strings.TrimSuffix(s, suffix) } } vv.Major, vv.Minor, vv.PatchLevel = parseVersion(s) return vv, nil } // MustParseVersion parses a version string // and panics if any error occurs. func MustParseVersion(s string) Version { vv, err := ParseVersion(s) if err != nil { panic(err) } return vv } // ReleaseVersion represents the release version. func (v Version) ReleaseVersion() Version { v.Suffix = "" return v } // Next returns the next Hugo release version. func (v Version) Next() Version { return Version{Major: v.Major, Minor: v.Minor + 1} } // Prev returns the previous Hugo release version. func (v Version) Prev() Version { return Version{Major: v.Major, Minor: v.Minor - 1} } // NextPatchLevel returns the next patch/bugfix Hugo version. // This will be a patch increment on the previous Hugo version. func (v Version) NextPatchLevel(level int) Version { prev := v.Prev() prev.PatchLevel = level return prev } // BuildVersionString creates a version string. This is what you see when // running "hugo version". func BuildVersionString() string { // program := "Hugo Static Site Generator" program := "hugo" version := "v" + CurrentVersion.String() bi := getBuildInfo() if bi == nil { return version } if bi.Revision != "" { version += "-" + bi.Revision } if IsExtended { version += "+extended" } if IsWithdeploy { version += "+withdeploy" } osArch := bi.GoOS + "/" + bi.GoArch date := bi.RevisionTime if date == "" { // Accept vendor-specified build date if .git/ is unavailable. date = buildDate } if date == "" { date = "unknown" } versionString := fmt.Sprintf("%s %s %s BuildDate=%s", program, version, osArch, date) if vendorInfo != "" { versionString += " VendorInfo=" + vendorInfo } return versionString } func version(major, minor, patch int, suffix string) string { if patch > 0 || minor > 53 { return fmt.Sprintf("%d.%d.%d%s", major, minor, patch, suffix) } return fmt.Sprintf("%d.%d%s", major, minor, suffix) } // CompareVersion compares the given version string or number against the // running Hugo version. // It returns -1 if the given version is less than, 0 if equal and 1 if greater than // the running version. func CompareVersion(version any) int { return compareVersions(CurrentVersion, version) } func compareVersions(inVersion Version, in any) int { var c int switch d := in.(type) { case float64: c = compareFloatWithVersion(d, inVersion) case float32: c = compareFloatWithVersion(float64(d), inVersion) case int: c = compareFloatWithVersion(float64(d), inVersion) case int32: c = compareFloatWithVersion(float64(d), inVersion) case int64: c = compareFloatWithVersion(float64(d), inVersion) case Version: if d.Major == inVersion.Major && d.Minor == inVersion.Minor && d.PatchLevel == inVersion.PatchLevel { return strings.Compare(inVersion.Suffix, d.Suffix) } if d.Major > inVersion.Major { return 1 } else if d.Major < inVersion.Major { return -1 } if d.Minor > inVersion.Minor { return 1 } else if d.Minor < inVersion.Minor { return -1 } if d.PatchLevel > inVersion.PatchLevel { return 1 } else if d.PatchLevel < inVersion.PatchLevel { return -1 } default: s, err := cast.ToStringE(in) if err != nil { return -1 } v, err := ParseVersion(s) if err != nil { return -1 } return inVersion.Compare(v) } return c } func parseVersion(s string) (int, int, int) { var major, minor, patch int parts := strings.Split(s, ".") if len(parts) > 0 { major, _ = strconv.Atoi(parts[0]) } if len(parts) > 1 { minor, _ = strconv.Atoi(parts[1]) } if len(parts) > 2 { patch, _ = strconv.Atoi(parts[2]) } return major, minor, patch } // compareFloatWithVersion compares v1 with v2. // It returns -1 if v1 is less than v2, 0 if v1 is equal to v2 and 1 if v1 is greater than v2. func compareFloatWithVersion(v1 float64, v2 Version) int { mf, minf := math.Modf(v1) v1maj := int(mf) v1min := int(minf * 100) if v2.Major == v1maj && v2.Minor == v1min { return 0 } if v1maj > v2.Major { return 1 } if v1maj < v2.Major { return -1 } if v1min > v2.Minor { return 1 } return -1 } func GoMinorVersion() int { return goMinorVersion(runtime.Version()) } func goMinorVersion(version string) int { if strings.HasPrefix(version, "devel") { return 9999 // magic } var major, minor int var trailing string n, err := fmt.Sscanf(version, "go%d.%d%s", &major, &minor, &trailing) if n == 2 && err == io.EOF { // Means there were no trailing characters (i.e., not an alpha/beta) err = nil } if err != nil { return 0 } return minor } gohugoio-hugo-6abdaca/common/hugo/version_current.go000066400000000000000000000014521507671574500231500ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugo // CurrentVersion represents the current build version. // This should be the only one. var CurrentVersion = Version{ Major: 0, Minor: 152, PatchLevel: 2, Suffix: "", } gohugoio-hugo-6abdaca/common/hugo/version_test.go000066400000000000000000000074601507671574500224520ustar00rootroot00000000000000// Copyright 2015 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hugo import ( "testing" qt "github.com/frankban/quicktest" ) func TestHugoVersion(t *testing.T) { c := qt.New(t) c.Assert(version(0, 15, 0, "-DEV"), qt.Equals, "0.15-DEV") c.Assert(version(0, 15, 2, "-DEV"), qt.Equals, "0.15.2-DEV") v := Version{Minor: 21, Suffix: "-DEV"} c.Assert(v.ReleaseVersion().String(), qt.Equals, "0.21") c.Assert(v.String(), qt.Equals, "0.21-DEV") c.Assert(v.Next().String(), qt.Equals, "0.22") nextVersionString := v.Next().Version() c.Assert(nextVersionString.String(), qt.Equals, "0.22") c.Assert(nextVersionString.Eq("0.22"), qt.Equals, true) c.Assert(nextVersionString.Eq("0.21"), qt.Equals, false) c.Assert(nextVersionString.Eq(nextVersionString), qt.Equals, true) c.Assert(v.NextPatchLevel(3).String(), qt.Equals, "0.20.3") // We started to use full semver versions even for main // releases in v0.54.0 v = Version{Minor: 53, PatchLevel: 0} c.Assert(v.String(), qt.Equals, "0.53") c.Assert(v.Next().String(), qt.Equals, "0.54.0") c.Assert(v.Next().Next().String(), qt.Equals, "0.55.0") v = Version{Minor: 54, PatchLevel: 0, Suffix: "-DEV"} c.Assert(v.String(), qt.Equals, "0.54.0-DEV") } func TestCompareVersions(t *testing.T) { c := qt.New(t) c.Assert(compareVersions(MustParseVersion("0.20.0"), 0.20), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.20.0"), float32(0.20)), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.20.0"), float64(0.20)), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.19.1"), 0.20), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.19.3"), "0.20.2"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.1"), 3), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.1"), int32(3)), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.1"), int64(3)), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.20"), "0.20"), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.20.1"), "0.20.1"), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.20.1"), "0.20"), qt.Equals, -1) c.Assert(compareVersions(MustParseVersion("0.20.0"), "0.20.1"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.20.1"), "0.20.2"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.21.1"), "0.22.1"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.22.0"), "0.22-DEV"), qt.Equals, -1) c.Assert(compareVersions(MustParseVersion("0.22.0"), "0.22.1-DEV"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.22.0-DEV"), "0.22"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.22.1-DEV"), "0.22"), qt.Equals, -1) c.Assert(compareVersions(MustParseVersion("0.22.1-DEV"), "0.22.1-DEV"), qt.Equals, 0) } func TestParseHugoVersion(t *testing.T) { c := qt.New(t) c.Assert(MustParseVersion("0.25").String(), qt.Equals, "0.25") c.Assert(MustParseVersion("0.25.2").String(), qt.Equals, "0.25.2") c.Assert(MustParseVersion("0.25-test").String(), qt.Equals, "0.25-test") c.Assert(MustParseVersion("0.25-DEV").String(), qt.Equals, "0.25-DEV") } func TestGoMinorVersion(t *testing.T) { c := qt.New(t) c.Assert(goMinorVersion("go1.12.5"), qt.Equals, 12) c.Assert(goMinorVersion("go1.14rc1"), qt.Equals, 14) c.Assert(GoMinorVersion() >= 11, qt.Equals, true) } gohugoio-hugo-6abdaca/common/loggers/000077500000000000000000000000001507671574500200705ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/loggers/handlerdefault.go000066400000000000000000000051341507671574500234040ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // package loggers contains some basic logging setup. package loggers import ( "fmt" "io" "strings" "sync" "github.com/bep/logg" "github.com/fatih/color" ) // levelColor mapping. var levelColor = [...]*color.Color{ logg.LevelTrace: color.New(color.FgWhite), logg.LevelDebug: color.New(color.FgWhite), logg.LevelInfo: color.New(color.FgBlue), logg.LevelWarn: color.New(color.FgYellow), logg.LevelError: color.New(color.FgRed), } // levelString mapping. var levelString = [...]string{ logg.LevelTrace: "TRACE", logg.LevelDebug: "DEBUG", logg.LevelInfo: "INFO ", logg.LevelWarn: "WARN ", logg.LevelError: "ERROR", } // newDefaultHandler handler. func newDefaultHandler(outWriter, errWriter io.Writer) logg.Handler { return &defaultHandler{ outWriter: outWriter, errWriter: errWriter, Padding: 0, } } // Default Handler implementation. // Based on https://github.com/apex/log/blob/master/handlers/cli/cli.go type defaultHandler struct { mu sync.Mutex outWriter io.Writer // Defaults to os.Stdout. errWriter io.Writer // Defaults to os.Stderr. Padding int } // HandleLog implements logg.Handler. func (h *defaultHandler) HandleLog(e *logg.Entry) error { color := levelColor[e.Level] level := levelString[e.Level] h.mu.Lock() defer h.mu.Unlock() var w io.Writer if e.Level > logg.LevelInfo { w = h.errWriter } else { w = h.outWriter } var prefix string for _, field := range e.Fields { if field.Name == FieldNameCmd { prefix = fmt.Sprint(field.Value) break } } if prefix != "" { prefix = prefix + ": " } color.Fprintf(w, "%s %s%s", fmt.Sprintf("%*s", h.Padding+1, level), color.Sprint(prefix), e.Message) for _, field := range e.Fields { if strings.HasPrefix(field.Name, reservedFieldNamePrefix) { continue } fmt.Fprintf(w, " %s %v", color.Sprint(field.Name), field.Value) } fmt.Fprintln(w) return nil } gohugoio-hugo-6abdaca/common/loggers/handlersmisc.go000066400000000000000000000065571507671574500231100ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package loggers import ( "fmt" "strings" "sync" "github.com/bep/logg" "github.com/gohugoio/hugo/common/hashing" ) // PanicOnWarningHook panics on warnings. var PanicOnWarningHook = func(e *logg.Entry) error { if e.Level != logg.LevelWarn { return nil } panic(e.Message) } func newLogLevelCounter() *logLevelCounter { return &logLevelCounter{ counters: make(map[logg.Level]int), } } func newLogOnceHandler(threshold logg.Level) *logOnceHandler { return &logOnceHandler{ threshold: threshold, seen: make(map[uint64]bool), } } func newStopHandler(h ...logg.Handler) *stopHandler { return &stopHandler{ handlers: h, } } func newSuppressStatementsHandler(statements map[string]bool) *suppressStatementsHandler { return &suppressStatementsHandler{ statements: statements, } } type logLevelCounter struct { mu sync.RWMutex counters map[logg.Level]int } func (h *logLevelCounter) HandleLog(e *logg.Entry) error { h.mu.Lock() defer h.mu.Unlock() h.counters[e.Level]++ return nil } var errStop = fmt.Errorf("stop") type logOnceHandler struct { threshold logg.Level mu sync.Mutex seen map[uint64]bool } func (h *logOnceHandler) HandleLog(e *logg.Entry) error { if e.Level < h.threshold { // We typically only want to enable this for warnings and above. // The common use case is that many go routines may log the same error. return nil } h.mu.Lock() defer h.mu.Unlock() hash := hashing.HashUint64(e.Level, e.Message, e.Fields) if h.seen[hash] { return errStop } h.seen[hash] = true return nil } func (h *logOnceHandler) reset() { h.mu.Lock() defer h.mu.Unlock() h.seen = make(map[uint64]bool) } type stopHandler struct { handlers []logg.Handler } // HandleLog implements logg.Handler. func (h *stopHandler) HandleLog(e *logg.Entry) error { for _, handler := range h.handlers { if err := handler.HandleLog(e); err != nil { if err == errStop { return nil } return err } } return nil } type suppressStatementsHandler struct { statements map[string]bool } func (h *suppressStatementsHandler) HandleLog(e *logg.Entry) error { for _, field := range e.Fields { if field.Name == FieldNameStatementID { if h.statements[field.Value.(string)] { return errStop } } } return nil } // whiteSpaceTrimmer creates a new log handler that trims whitespace from log messages and string fields. func whiteSpaceTrimmer() logg.Handler { return logg.HandlerFunc(func(e *logg.Entry) error { e.Message = strings.TrimSpace(e.Message) for i, field := range e.Fields { if s, ok := field.Value.(string); ok { e.Fields[i].Value = strings.TrimSpace(s) } } return nil }) } gohugoio-hugo-6abdaca/common/loggers/handlerterminal.go000066400000000000000000000045541507671574500236000ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package loggers import ( "fmt" "io" "regexp" "strings" "sync" "github.com/bep/logg" ) // newNoAnsiEscapeHandler creates a new noAnsiEscapeHandler func newNoAnsiEscapeHandler(outWriter, errWriter io.Writer, noLevelPrefix bool, predicate func(*logg.Entry) bool) *noAnsiEscapeHandler { if predicate == nil { predicate = func(e *logg.Entry) bool { return true } } return &noAnsiEscapeHandler{ noLevelPrefix: noLevelPrefix, outWriter: outWriter, errWriter: errWriter, predicate: predicate, } } type noAnsiEscapeHandler struct { mu sync.Mutex outWriter io.Writer errWriter io.Writer predicate func(*logg.Entry) bool noLevelPrefix bool } func (h *noAnsiEscapeHandler) HandleLog(e *logg.Entry) error { if !h.predicate(e) { return nil } h.mu.Lock() defer h.mu.Unlock() var w io.Writer if e.Level > logg.LevelInfo { w = h.errWriter } else { w = h.outWriter } var prefix string for _, field := range e.Fields { if field.Name == FieldNameCmd { prefix = fmt.Sprint(field.Value) break } } if prefix != "" { prefix = prefix + ": " } msg := stripANSI(e.Message) if h.noLevelPrefix { fmt.Fprintf(w, "%s%s", prefix, msg) } else { fmt.Fprintf(w, "%s %s%s", levelString[e.Level], prefix, msg) } for _, field := range e.Fields { if strings.HasPrefix(field.Name, reservedFieldNamePrefix) { continue } fmt.Fprintf(w, " %s %v", field.Name, field.Value) } fmt.Fprintln(w) return nil } var ansiRe = regexp.MustCompile(`\x1b\[[0-9;]*m`) // stripANSI removes ANSI escape codes from s. func stripANSI(s string) string { return ansiRe.ReplaceAllString(s, "") } gohugoio-hugo-6abdaca/common/loggers/handlerterminal_test.go000066400000000000000000000024701507671574500246320ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package loggers import ( "bytes" "testing" "github.com/bep/logg" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/terminal" ) func TestNoAnsiEscapeHandler(t *testing.T) { c := qt.New(t) test := func(s string) { c.Assert(stripANSI(terminal.Notice(s)), qt.Equals, s) } test(`error in "file.md:1:2"`) var buf bytes.Buffer h := newNoAnsiEscapeHandler(&buf, &buf, false, nil) h.HandleLog(&logg.Entry{Message: terminal.Notice(`error in "file.md:1:2"`), Level: logg.LevelInfo}) c.Assert(buf.String(), qt.Equals, "INFO error in \"file.md:1:2\"\n") } gohugoio-hugo-6abdaca/common/loggers/logger.go000066400000000000000000000221701507671574500217000ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package loggers import ( "fmt" "io" "os" "strings" "time" "github.com/bep/logg" "github.com/bep/logg/handlers/multi" "github.com/gohugoio/hugo/common/terminal" ) var ( reservedFieldNamePrefix = "__h_field_" // FieldNameCmd is the name of the field that holds the command name. FieldNameCmd = reservedFieldNamePrefix + "_cmd" // Used to suppress statements. FieldNameStatementID = reservedFieldNamePrefix + "__h_field_statement_id" ) // Options defines options for the logger. type Options struct { Level logg.Level StdOut io.Writer StdErr io.Writer DistinctLevel logg.Level StoreErrors bool HandlerPost func(e *logg.Entry) error SuppressStatements map[string]bool } // New creates a new logger with the given options. func New(opts Options) Logger { if opts.StdOut == nil { opts.StdOut = os.Stdout } if opts.StdErr == nil { opts.StdErr = os.Stderr } if opts.Level == 0 { opts.Level = logg.LevelWarn } var logHandler logg.Handler if terminal.PrintANSIColors(os.Stderr) { logHandler = newDefaultHandler(opts.StdErr, opts.StdErr) } else { logHandler = newNoAnsiEscapeHandler(opts.StdErr, opts.StdErr, false, nil) } errorsw := &strings.Builder{} logCounters := newLogLevelCounter() handlers := []logg.Handler{ logCounters, } if opts.Level == logg.LevelTrace { // Trace is used during development only, and it's useful to // only see the trace messages. handlers = append(handlers, logg.HandlerFunc(func(e *logg.Entry) error { if e.Level != logg.LevelTrace { return logg.ErrStopLogEntry } return nil }), ) } handlers = append(handlers, whiteSpaceTrimmer(), logHandler) if opts.HandlerPost != nil { var hookHandler logg.HandlerFunc = func(e *logg.Entry) error { opts.HandlerPost(e) return nil } handlers = append(handlers, hookHandler) } if opts.StoreErrors { h := newNoAnsiEscapeHandler(io.Discard, errorsw, true, func(e *logg.Entry) bool { return e.Level >= logg.LevelError }) handlers = append(handlers, h) } logHandler = multi.New(handlers...) var logOnce *logOnceHandler if opts.DistinctLevel != 0 { logOnce = newLogOnceHandler(opts.DistinctLevel) logHandler = newStopHandler(logOnce, logHandler) } if len(opts.SuppressStatements) > 0 { logHandler = newStopHandler(newSuppressStatementsHandler(opts.SuppressStatements), logHandler) } logger := logg.New( logg.Options{ Level: opts.Level, Handler: logHandler, }, ) l := logger.WithLevel(opts.Level) reset := func() { logCounters.mu.Lock() defer logCounters.mu.Unlock() logCounters.counters = make(map[logg.Level]int) errorsw.Reset() if logOnce != nil { logOnce.reset() } } return &logAdapter{ logCounters: logCounters, errors: errorsw, reset: reset, stdOut: opts.StdOut, stdErr: opts.StdErr, level: opts.Level, logger: logger, tracel: l.WithLevel(logg.LevelTrace), debugl: l.WithLevel(logg.LevelDebug), infol: l.WithLevel(logg.LevelInfo), warnl: l.WithLevel(logg.LevelWarn), errorl: l.WithLevel(logg.LevelError), } } // NewDefault creates a new logger with the default options. func NewDefault() Logger { opts := Options{ DistinctLevel: logg.LevelWarn, Level: logg.LevelWarn, } return New(opts) } func NewTrace() Logger { opts := Options{ DistinctLevel: logg.LevelWarn, Level: logg.LevelTrace, } return New(opts) } func LevelLoggerToWriter(l logg.LevelLogger) io.Writer { return logWriter{l: l} } type Logger interface { Debug() logg.LevelLogger Debugf(format string, v ...any) Debugln(v ...any) Error() logg.LevelLogger Errorf(format string, v ...any) Erroridf(id, format string, v ...any) Errorln(v ...any) Errors() string Info() logg.LevelLogger InfoCommand(command string) logg.LevelLogger Infof(format string, v ...any) Infoln(v ...any) Level() logg.Level LoggCount(logg.Level) int Logger() logg.Logger StdOut() io.Writer StdErr() io.Writer Printf(format string, v ...any) Println(v ...any) PrintTimerIfDelayed(start time.Time, name string) Reset() Warn() logg.LevelLogger WarnCommand(command string) logg.LevelLogger Warnf(format string, v ...any) Warnidf(id, format string, v ...any) Warnln(v ...any) Deprecatef(fail bool, format string, v ...any) Trace(s logg.StringFunc) } type logAdapter struct { logCounters *logLevelCounter errors *strings.Builder reset func() stdOut io.Writer stdErr io.Writer level logg.Level logger logg.Logger tracel logg.LevelLogger debugl logg.LevelLogger infol logg.LevelLogger warnl logg.LevelLogger errorl logg.LevelLogger } func (l *logAdapter) Debug() logg.LevelLogger { return l.debugl } func (l *logAdapter) Debugf(format string, v ...any) { l.debugl.Logf(format, v...) } func (l *logAdapter) Debugln(v ...any) { l.debugl.Logf(l.sprint(v...)) } func (l *logAdapter) Info() logg.LevelLogger { return l.infol } func (l *logAdapter) InfoCommand(command string) logg.LevelLogger { return l.infol.WithField(FieldNameCmd, command) } func (l *logAdapter) Infof(format string, v ...any) { l.infol.Logf(format, v...) } func (l *logAdapter) Infoln(v ...any) { l.infol.Logf(l.sprint(v...)) } func (l *logAdapter) Level() logg.Level { return l.level } func (l *logAdapter) LoggCount(level logg.Level) int { l.logCounters.mu.RLock() defer l.logCounters.mu.RUnlock() return l.logCounters.counters[level] } func (l *logAdapter) Logger() logg.Logger { return l.logger } func (l *logAdapter) StdOut() io.Writer { return l.stdOut } func (l *logAdapter) StdErr() io.Writer { return l.stdErr } // PrintTimerIfDelayed prints a time statement to the FEEDBACK logger // if considerable time is spent. func (l *logAdapter) PrintTimerIfDelayed(start time.Time, name string) { elapsed := time.Since(start) milli := int(1000 * elapsed.Seconds()) if milli < 500 { return } fmt.Fprintf(l.stdErr, "%s in %v ms", name, milli) } func (l *logAdapter) Printf(format string, v ...any) { // Add trailing newline if not present. if !strings.HasSuffix(format, "\n") { format += "\n" } fmt.Fprintf(l.stdOut, format, v...) } func (l *logAdapter) Println(v ...any) { fmt.Fprintln(l.stdOut, v...) } func (l *logAdapter) Reset() { l.reset() } func (l *logAdapter) Warn() logg.LevelLogger { return l.warnl } func (l *logAdapter) Warnf(format string, v ...any) { l.warnl.Logf(format, v...) } func (l *logAdapter) WarnCommand(command string) logg.LevelLogger { return l.warnl.WithField(FieldNameCmd, command) } func (l *logAdapter) Warnln(v ...any) { l.warnl.Logf(l.sprint(v...)) } func (l *logAdapter) Error() logg.LevelLogger { return l.errorl } func (l *logAdapter) Errorf(format string, v ...any) { l.errorl.Logf(format, v...) } func (l *logAdapter) Errorln(v ...any) { l.errorl.Logf(l.sprint(v...)) } func (l *logAdapter) Errors() string { return l.errors.String() } func (l *logAdapter) Erroridf(id, format string, v ...any) { id = strings.ToLower(id) format += l.idfInfoStatement("error", id, format) l.errorl.WithField(FieldNameStatementID, id).Logf(format, v...) } func (l *logAdapter) Warnidf(id, format string, v ...any) { id = strings.ToLower(id) format += l.idfInfoStatement("warning", id, format) l.warnl.WithField(FieldNameStatementID, id).Logf(format, v...) } func (l *logAdapter) idfInfoStatement(what, id, format string) string { return fmt.Sprintf("\nYou can suppress this %s by adding the following to your site configuration:\nignoreLogs = ['%s']", what, id) } func (l *logAdapter) Trace(s logg.StringFunc) { l.tracel.Log(s) } func (l *logAdapter) sprint(v ...any) string { return strings.TrimRight(fmt.Sprintln(v...), "\n") } func (l *logAdapter) Deprecatef(fail bool, format string, v ...any) { format = "DEPRECATED: " + format if fail { l.errorl.Logf(format, v...) } else { l.warnl.Logf(format, v...) } } type logWriter struct { l logg.LevelLogger } func (w logWriter) Write(p []byte) (n int, err error) { w.l.Log(logg.String(string(p))) return len(p), nil } func TimeTrackf(l logg.LevelLogger, start time.Time, fields logg.Fields, format string, a ...any) { elapsed := time.Since(start) if fields != nil { l = l.WithFields(fields) } l.WithField("duration", elapsed).Logf(format, a...) } func TimeTrackfn(fn func() (logg.LevelLogger, error)) error { start := time.Now() l, err := fn() elapsed := time.Since(start) l.WithField("duration", elapsed).Logf("") return err } gohugoio-hugo-6abdaca/common/loggers/logger_test.go000066400000000000000000000066321507671574500227440ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package loggers_test import ( "io" "strings" "testing" "github.com/bep/logg" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/loggers" ) func TestLogDistinct(t *testing.T) { c := qt.New(t) opts := loggers.Options{ DistinctLevel: logg.LevelWarn, StoreErrors: true, StdOut: io.Discard, StdErr: io.Discard, } l := loggers.New(opts) for range 10 { l.Errorln("error 1") l.Errorln("error 2") l.Warnln("warn 1") } c.Assert(strings.Count(l.Errors(), "error 1"), qt.Equals, 1) c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 2) c.Assert(l.LoggCount(logg.LevelWarn), qt.Equals, 1) } func TestHookLast(t *testing.T) { c := qt.New(t) opts := loggers.Options{ HandlerPost: func(e *logg.Entry) error { panic(e.Message) }, StdOut: io.Discard, StdErr: io.Discard, } l := loggers.New(opts) c.Assert(func() { l.Warnln("warn 1") }, qt.PanicMatches, "warn 1") } func TestOptionStoreErrors(t *testing.T) { c := qt.New(t) var sb strings.Builder opts := loggers.Options{ StoreErrors: true, StdErr: &sb, StdOut: &sb, } l := loggers.New(opts) l.Errorln("error 1") l.Errorln("error 2") errorsStr := l.Errors() c.Assert(errorsStr, qt.Contains, "error 1") c.Assert(errorsStr, qt.Not(qt.Contains), "ERROR") c.Assert(sb.String(), qt.Contains, "error 1") c.Assert(sb.String(), qt.Contains, "ERROR") } func TestLogCount(t *testing.T) { c := qt.New(t) opts := loggers.Options{ StoreErrors: true, } l := loggers.New(opts) l.Errorln("error 1") l.Errorln("error 2") l.Warnln("warn 1") c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 2) c.Assert(l.LoggCount(logg.LevelWarn), qt.Equals, 1) c.Assert(l.LoggCount(logg.LevelInfo), qt.Equals, 0) } func TestSuppressStatements(t *testing.T) { c := qt.New(t) opts := loggers.Options{ StoreErrors: true, SuppressStatements: map[string]bool{ "error-1": true, }, } l := loggers.New(opts) l.Error().WithField(loggers.FieldNameStatementID, "error-1").Logf("error 1") l.Errorln("error 2") errorsStr := l.Errors() c.Assert(errorsStr, qt.Not(qt.Contains), "error 1") c.Assert(errorsStr, qt.Contains, "error 2") c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 1) } func TestReset(t *testing.T) { c := qt.New(t) opts := loggers.Options{ StoreErrors: true, DistinctLevel: logg.LevelWarn, StdOut: io.Discard, StdErr: io.Discard, } l := loggers.New(opts) for range 3 { l.Errorln("error 1") l.Errorln("error 2") l.Errorln("error 1") c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 2) l.Reset() errorsStr := l.Errors() c.Assert(errorsStr, qt.Equals, "") c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 0) } } gohugoio-hugo-6abdaca/common/loggers/loggerglobal.go000066400000000000000000000027741507671574500230710ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package loggers import ( "sync" "github.com/bep/logg" ) // SetGlobalLogger sets the global logger. // This is used in a few places in Hugo, e.g. deprecated functions. func SetGlobalLogger(logger Logger) { logMu.Lock() defer logMu.Unlock() log = logger } func initGlobalLogger(level logg.Level, panicOnWarnings bool) { logMu.Lock() defer logMu.Unlock() var logHookLast func(e *logg.Entry) error if panicOnWarnings { logHookLast = PanicOnWarningHook } log = New( Options{ Level: level, DistinctLevel: logg.LevelInfo, HandlerPost: logHookLast, }, ) } var logMu sync.Mutex func Log() Logger { logMu.Lock() defer logMu.Unlock() return log } // The global logger. var log Logger func init() { initGlobalLogger(logg.LevelWarn, false) } gohugoio-hugo-6abdaca/common/maps/000077500000000000000000000000001507671574500173665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/maps/cache.go000066400000000000000000000114021507671574500207560ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "sync" ) // Cache is a simple thread safe cache backed by a map. type Cache[K comparable, T any] struct { m map[K]T opts CacheOptions hasBeenInitialized bool sync.RWMutex } // CacheOptions are the options for the Cache. type CacheOptions struct { // If set, the cache will not grow beyond this size. Size uint64 } var defaultCacheOptions = CacheOptions{} // NewCache creates a new Cache with default options. func NewCache[K comparable, T any]() *Cache[K, T] { return &Cache[K, T]{m: make(map[K]T), opts: defaultCacheOptions} } // NewCacheWithOptions creates a new Cache with the given options. func NewCacheWithOptions[K comparable, T any](opts CacheOptions) *Cache[K, T] { return &Cache[K, T]{m: make(map[K]T), opts: opts} } // Delete deletes the given key from the cache. // If c is nil, this method is a no-op. func (c *Cache[K, T]) Get(key K) (T, bool) { if c == nil { var zero T return zero, false } c.RLock() v, found := c.get(key) c.RUnlock() return v, found } func (c *Cache[K, T]) get(key K) (T, bool) { v, found := c.m[key] return v, found } // GetOrCreate gets the value for the given key if it exists, or creates it if not. func (c *Cache[K, T]) GetOrCreate(key K, create func() (T, error)) (T, error) { c.RLock() v, found := c.m[key] c.RUnlock() if found { return v, nil } c.Lock() defer c.Unlock() v, found = c.m[key] if found { return v, nil } v, err := create() if err != nil { return v, err } c.clearIfNeeded() c.m[key] = v return v, nil } // Contains returns whether the given key exists in the cache. func (c *Cache[K, T]) Contains(key K) bool { c.RLock() _, found := c.m[key] c.RUnlock() return found } // InitAndGet initializes the cache if not already done and returns the value for the given key. // The init state will be reset on Reset or Drain. func (c *Cache[K, T]) InitAndGet(key K, init func(get func(key K) (T, bool), set func(key K, value T)) error) (T, error) { var v T c.RLock() if !c.hasBeenInitialized { c.RUnlock() if err := func() error { c.Lock() defer c.Unlock() // Double check in case another goroutine has initialized it in the meantime. if !c.hasBeenInitialized { err := init(c.get, c.set) if err != nil { return err } c.hasBeenInitialized = true } return nil }(); err != nil { return v, err } // Reacquire the read lock. c.RLock() } v = c.m[key] c.RUnlock() return v, nil } // Set sets the given key to the given value. func (c *Cache[K, T]) Set(key K, value T) { c.Lock() c.set(key, value) c.Unlock() } // SetIfAbsent sets the given key to the given value if the key does not already exist in the cache. func (c *Cache[K, T]) SetIfAbsent(key K, value T) { c.RLock() if _, found := c.get(key); !found { c.RUnlock() c.Set(key, value) } else { c.RUnlock() } } func (c *Cache[K, T]) clearIfNeeded() { if c.opts.Size > 0 && uint64(len(c.m)) >= c.opts.Size { // clear the map clear(c.m) } } func (c *Cache[K, T]) set(key K, value T) { c.clearIfNeeded() c.m[key] = value } // ForEeach calls the given function for each key/value pair in the cache. // If the function returns false, the iteration stops. func (c *Cache[K, T]) ForEeach(f func(K, T) bool) { c.RLock() defer c.RUnlock() for k, v := range c.m { if !f(k, v) { return } } } func (c *Cache[K, T]) Drain() map[K]T { c.Lock() m := c.m c.m = make(map[K]T) c.hasBeenInitialized = false c.Unlock() return m } func (c *Cache[K, T]) Len() int { c.RLock() defer c.RUnlock() return len(c.m) } func (c *Cache[K, T]) Reset() { c.Lock() clear(c.m) c.hasBeenInitialized = false c.Unlock() } // SliceCache is a simple thread safe cache backed by a map. type SliceCache[T any] struct { m map[string][]T sync.RWMutex } func NewSliceCache[T any]() *SliceCache[T] { return &SliceCache[T]{m: make(map[string][]T)} } func (c *SliceCache[T]) Get(key string) ([]T, bool) { c.RLock() v, found := c.m[key] c.RUnlock() return v, found } func (c *SliceCache[T]) Append(key string, values ...T) { c.Lock() c.m[key] = append(c.m[key], values...) c.Unlock() } func (c *SliceCache[T]) Reset() { c.Lock() c.m = make(map[string][]T) c.Unlock() } gohugoio-hugo-6abdaca/common/maps/cache_test.go000066400000000000000000000026601507671574500220230ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "testing" qt "github.com/frankban/quicktest" ) func TestCacheSize(t *testing.T) { c := qt.New(t) cache := NewCacheWithOptions[string, string](CacheOptions{Size: 10}) for i := 0; i < 30; i++ { cache.Set(string(rune('a'+i)), "value") } c.Assert(len(cache.m), qt.Equals, 10) for i := 20; i < 50; i++ { cache.GetOrCreate(string(rune('a'+i)), func() (string, error) { return "value", nil }) } c.Assert(len(cache.m), qt.Equals, 10) for i := 100; i < 200; i++ { cache.SetIfAbsent(string(rune('a'+i)), "value") } c.Assert(len(cache.m), qt.Equals, 10) cache.InitAndGet("foo", func( get func(key string) (string, bool), set func(key string, value string), ) error { for i := 50; i < 100; i++ { set(string(rune('a'+i)), "value") } return nil }) c.Assert(len(cache.m), qt.Equals, 10) } gohugoio-hugo-6abdaca/common/maps/maps.go000066400000000000000000000127461507671574500206670ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "fmt" "strings" "github.com/gohugoio/hugo/common/types" "github.com/gobwas/glob" "github.com/spf13/cast" ) // ToStringMapE converts in to map[string]interface{}. func ToStringMapE(in any) (map[string]any, error) { switch vv := in.(type) { case Params: return vv, nil case map[string]string: m := map[string]any{} for k, v := range vv { m[k] = v } return m, nil default: return cast.ToStringMapE(in) } } // ToParamsAndPrepare converts in to Params and prepares it for use. // If in is nil, an empty map is returned. // See PrepareParams. func ToParamsAndPrepare(in any) (Params, error) { if types.IsNil(in) { return Params{}, nil } m, err := ToStringMapE(in) if err != nil { return nil, err } PrepareParams(m) return m, nil } // MustToParamsAndPrepare calls ToParamsAndPrepare and panics if it fails. func MustToParamsAndPrepare(in any) Params { p, err := ToParamsAndPrepare(in) if err != nil { panic(fmt.Sprintf("cannot convert %T to maps.Params: %s", in, err)) } return p } // ToStringMap converts in to map[string]interface{}. func ToStringMap(in any) map[string]any { m, _ := ToStringMapE(in) return m } // ToStringMapStringE converts in to map[string]string. func ToStringMapStringE(in any) (map[string]string, error) { m, err := ToStringMapE(in) if err != nil { return nil, err } return cast.ToStringMapStringE(m) } // ToStringMapString converts in to map[string]string. func ToStringMapString(in any) map[string]string { m, _ := ToStringMapStringE(in) return m } // ToStringMapBool converts in to bool. func ToStringMapBool(in any) map[string]bool { m, _ := ToStringMapE(in) return cast.ToStringMapBool(m) } // ToSliceStringMap converts in to []map[string]interface{}. func ToSliceStringMap(in any) ([]map[string]any, error) { switch v := in.(type) { case []map[string]any: return v, nil case Params: return []map[string]any{v}, nil case []any: var s []map[string]any for _, entry := range v { if vv, ok := entry.(map[string]any); ok { s = append(s, vv) } } return s, nil default: return nil, fmt.Errorf("unable to cast %#v of type %T to []map[string]interface{}", in, in) } } // LookupEqualFold finds key in m with case insensitive equality checks. func LookupEqualFold[T any | string](m map[string]T, key string) (T, string, bool) { if v, found := m[key]; found { return v, key, true } for k, v := range m { if strings.EqualFold(k, key) { return v, k, true } } var s T return s, "", false } // MergeShallow merges src into dst, but only if the key does not already exist in dst. // The keys are compared case insensitively. func MergeShallow(dst, src map[string]any) { for k, v := range src { found := false for dk := range dst { if strings.EqualFold(dk, k) { found = true break } } if !found { dst[k] = v } } } type keyRename struct { pattern glob.Glob newKey string } // KeyRenamer supports renaming of keys in a map. type KeyRenamer struct { renames []keyRename } // NewKeyRenamer creates a new KeyRenamer given a list of pattern and new key // value pairs. func NewKeyRenamer(patternKeys ...string) (KeyRenamer, error) { var renames []keyRename for i := 0; i < len(patternKeys); i += 2 { g, err := glob.Compile(strings.ToLower(patternKeys[i]), '/') if err != nil { return KeyRenamer{}, err } renames = append(renames, keyRename{pattern: g, newKey: patternKeys[i+1]}) } return KeyRenamer{renames: renames}, nil } func (r KeyRenamer) getNewKey(keyPath string) string { for _, matcher := range r.renames { if matcher.pattern.Match(keyPath) { return matcher.newKey } } return "" } // Rename renames the keys in the given map according // to the patterns in the current KeyRenamer. func (r KeyRenamer) Rename(m map[string]any) { r.renamePath("", m) } func (KeyRenamer) keyPath(k1, k2 string) string { k1, k2 = strings.ToLower(k1), strings.ToLower(k2) if k1 == "" { return k2 } return k1 + "/" + k2 } func (r KeyRenamer) renamePath(parentKeyPath string, m map[string]any) { for k, v := range m { keyPath := r.keyPath(parentKeyPath, k) switch vv := v.(type) { case map[any]any: r.renamePath(keyPath, cast.ToStringMap(vv)) case map[string]any: r.renamePath(keyPath, vv) } newKey := r.getNewKey(keyPath) if newKey != "" { delete(m, k) m[newKey] = v } } } // ConvertFloat64WithNoDecimalsToInt converts float64 values with no decimals to int recursively. func ConvertFloat64WithNoDecimalsToInt(m map[string]any) { for k, v := range m { switch vv := v.(type) { case float64: if v == float64(int64(vv)) { m[k] = int64(vv) } case map[string]any: ConvertFloat64WithNoDecimalsToInt(vv) case []any: for i, vvv := range vv { switch vvvv := vvv.(type) { case float64: if vvv == float64(int64(vvvv)) { vv[i] = int64(vvvv) } case map[string]any: ConvertFloat64WithNoDecimalsToInt(vvvv) } } } } } gohugoio-hugo-6abdaca/common/maps/maps_test.go000066400000000000000000000074551507671574500217270ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "fmt" "reflect" "testing" qt "github.com/frankban/quicktest" ) func TestPrepareParams(t *testing.T) { tests := []struct { input Params expected Params }{ { map[string]any{ "abC": 32, }, Params{ "abc": 32, }, }, { map[string]any{ "abC": 32, "deF": map[any]any{ 23: "A value", 24: map[string]any{ "AbCDe": "A value", "eFgHi": "Another value", }, }, "gHi": map[string]any{ "J": 25, }, "jKl": map[string]string{ "M": "26", }, }, Params{ "abc": 32, "def": Params{ "23": "A value", "24": Params{ "abcde": "A value", "efghi": "Another value", }, }, "ghi": Params{ "j": 25, }, "jkl": Params{ "m": "26", }, }, }, } for i, test := range tests { t.Run(fmt.Sprint(i), func(t *testing.T) { // PrepareParams modifies input. prepareClone := PrepareParamsClone(test.input) PrepareParams(test.input) if !reflect.DeepEqual(test.expected, test.input) { t.Errorf("[%d] Expected\n%#v, got\n%#v\n", i, test.expected, test.input) } if !reflect.DeepEqual(test.expected, prepareClone) { t.Errorf("[%d] Expected\n%#v, got\n%#v\n", i, test.expected, prepareClone) } }) } } func TestToSliceStringMap(t *testing.T) { c := qt.New(t) tests := []struct { input any expected []map[string]any }{ { input: []map[string]any{ {"abc": 123}, }, expected: []map[string]any{ {"abc": 123}, }, }, { input: []any{ map[string]any{ "def": 456, }, }, expected: []map[string]any{ {"def": 456}, }, }, } for _, test := range tests { v, err := ToSliceStringMap(test.input) c.Assert(err, qt.IsNil) c.Assert(v, qt.DeepEquals, test.expected) } } func TestToParamsAndPrepare(t *testing.T) { c := qt.New(t) _, err := ToParamsAndPrepare(map[string]any{"A": "av"}) c.Assert(err, qt.IsNil) params, err := ToParamsAndPrepare(nil) c.Assert(err, qt.IsNil) c.Assert(params, qt.DeepEquals, Params{}) } func TestRenameKeys(t *testing.T) { c := qt.New(t) m := map[string]any{ "a": 32, "ren1": "m1", "ren2": "m1_2", "sub": map[string]any{ "subsub": map[string]any{ "REN1": "m2", "ren2": "m2_2", }, }, "no": map[string]any{ "ren1": "m2", "ren2": "m2_2", }, } expected := map[string]any{ "a": 32, "new1": "m1", "new2": "m1_2", "sub": map[string]any{ "subsub": map[string]any{ "new1": "m2", "ren2": "m2_2", }, }, "no": map[string]any{ "ren1": "m2", "ren2": "m2_2", }, } renamer, err := NewKeyRenamer( "{ren1,sub/*/ren1}", "new1", "{Ren2,sub/ren2}", "new2", ) c.Assert(err, qt.IsNil) renamer.Rename(m) if !reflect.DeepEqual(expected, m) { t.Errorf("Expected\n%#v, got\n%#v\n", expected, m) } } func TestLookupEqualFold(t *testing.T) { c := qt.New(t) m1 := map[string]any{ "a": "av", "B": "bv", } v, k, found := LookupEqualFold(m1, "b") c.Assert(found, qt.IsTrue) c.Assert(v, qt.Equals, "bv") c.Assert(k, qt.Equals, "B") m2 := map[string]string{ "a": "av", "B": "bv", } v, k, found = LookupEqualFold(m2, "b") c.Assert(found, qt.IsTrue) c.Assert(k, qt.Equals, "B") c.Assert(v, qt.Equals, "bv") } gohugoio-hugo-6abdaca/common/maps/ordered.go000066400000000000000000000064501507671574500213460ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "slices" "github.com/gohugoio/hugo/common/hashing" ) // Ordered is a map that can be iterated in the order of insertion. // Note that insertion order is not affected if a key is re-inserted into the map. // In a nil map, all operations are no-ops. // This is not thread safe. type Ordered[K comparable, T any] struct { // The keys in the order they were added. keys []K // The values. values map[K]T } // NewOrdered creates a new Ordered map. func NewOrdered[K comparable, T any]() *Ordered[K, T] { return &Ordered[K, T]{values: make(map[K]T)} } // Set sets the value for the given key. // Note that insertion order is not affected if a key is re-inserted into the map. func (m *Ordered[K, T]) Set(key K, value T) { if m == nil { return } // Check if key already exists. if _, found := m.values[key]; !found { m.keys = append(m.keys, key) } m.values[key] = value } // Get gets the value for the given key. func (m *Ordered[K, T]) Get(key K) (T, bool) { if m == nil { var v T return v, false } value, found := m.values[key] return value, found } // Has returns whether the given key exists in the map. func (m *Ordered[K, T]) Has(key K) bool { if m == nil { return false } _, found := m.values[key] return found } // Delete deletes the value for the given key. func (m *Ordered[K, T]) Delete(key K) { if m == nil { return } delete(m.values, key) for i, k := range m.keys { if k == key { m.keys = slices.Delete(m.keys, i, i+1) break } } } // Clone creates a shallow copy of the map. func (m *Ordered[K, T]) Clone() *Ordered[K, T] { if m == nil { return nil } clone := NewOrdered[K, T]() for _, k := range m.keys { clone.Set(k, m.values[k]) } return clone } // Keys returns the keys in the order they were added. func (m *Ordered[K, T]) Keys() []K { if m == nil { return nil } return m.keys } // Values returns the values in the order they were added. func (m *Ordered[K, T]) Values() []T { if m == nil { return nil } var values []T for _, k := range m.keys { values = append(values, m.values[k]) } return values } // Len returns the number of items in the map. func (m *Ordered[K, T]) Len() int { if m == nil { return 0 } return len(m.keys) } // Range calls f sequentially for each key and value present in the map. // If f returns false, range stops the iteration. // TODO(bep) replace with iter.Seq2 when we bump go Go 1.24. func (m *Ordered[K, T]) Range(f func(key K, value T) bool) { if m == nil { return } for _, k := range m.keys { if !f(k, m.values[k]) { return } } } // Hash calculates a hash from the values. func (m *Ordered[K, T]) Hash() (uint64, error) { if m == nil { return 0, nil } return hashing.Hash(m.values) } gohugoio-hugo-6abdaca/common/maps/ordered_test.go000066400000000000000000000043051507671574500224020ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "testing" qt "github.com/frankban/quicktest" ) func TestOrdered(t *testing.T) { c := qt.New(t) m := NewOrdered[string, int]() m.Set("a", 1) m.Set("b", 2) m.Set("c", 3) c.Assert(m.Keys(), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(m.Values(), qt.DeepEquals, []int{1, 2, 3}) v, found := m.Get("b") c.Assert(found, qt.Equals, true) c.Assert(v, qt.Equals, 2) m.Set("b", 22) c.Assert(m.Keys(), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(m.Values(), qt.DeepEquals, []int{1, 22, 3}) m.Delete("b") c.Assert(m.Keys(), qt.DeepEquals, []string{"a", "c"}) c.Assert(m.Values(), qt.DeepEquals, []int{1, 3}) } func TestOrderedHash(t *testing.T) { c := qt.New(t) m := NewOrdered[string, int]() m.Set("a", 1) m.Set("b", 2) m.Set("c", 3) h1, err := m.Hash() c.Assert(err, qt.IsNil) m.Set("d", 4) h2, err := m.Hash() c.Assert(err, qt.IsNil) c.Assert(h1, qt.Not(qt.Equals), h2) m = NewOrdered[string, int]() m.Set("b", 2) m.Set("a", 1) m.Set("c", 3) h3, err := m.Hash() c.Assert(err, qt.IsNil) // Order does not matter. c.Assert(h1, qt.Equals, h3) } func TestOrderedNil(t *testing.T) { c := qt.New(t) var m *Ordered[string, int] m.Set("a", 1) c.Assert(m.Keys(), qt.IsNil) c.Assert(m.Values(), qt.IsNil) v, found := m.Get("a") c.Assert(found, qt.Equals, false) c.Assert(v, qt.Equals, 0) m.Delete("a") var b bool m.Range(func(k string, v int) bool { b = true return true }) c.Assert(b, qt.Equals, false) c.Assert(m.Len(), qt.Equals, 0) c.Assert(m.Clone(), qt.IsNil) h, err := m.Hash() c.Assert(err, qt.IsNil) c.Assert(h, qt.Equals, uint64(0)) } gohugoio-hugo-6abdaca/common/maps/params.go000066400000000000000000000230531507671574500212030ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "errors" "fmt" "strings" "github.com/spf13/cast" ) // Params is a map where all keys are lower case. type Params map[string]any // KeyParams is an utility struct for the WalkParams method. type KeyParams struct { Key string Params Params } // GetNested does a lower case and nested search in this map. // It will return nil if none found. // Make all of these methods internal somehow. func (p Params) GetNested(indices ...string) any { v, _, _ := getNested(p, indices) return v } // SetParams overwrites values in dst with values in src for common or new keys. // This is done recursively. func SetParams(dst, src Params) { setParams(dst, src, 0) } func setParams(dst, src Params, depth int) { const maxDepth = 1000 if depth > maxDepth { panic(errors.New("max depth exceeded")) } for k, v := range src { vv, found := dst[k] if !found { dst[k] = v } else { switch vvv := vv.(type) { case Params: if pv, ok := v.(Params); ok { setParams(vvv, pv, depth+1) } else { dst[k] = v } default: dst[k] = v } } } } // IsZero returns true if p is considered empty. func (p Params) IsZero() bool { if len(p) == 0 { return true } if len(p) > 1 { return false } for k := range p { return k == MergeStrategyKey } return false } // MergeParamsWithStrategy transfers values from src to dst for new keys using the merge strategy given. // This is done recursively. func MergeParamsWithStrategy(strategy string, dst, src Params) { dst.merge(ParamsMergeStrategy(strategy), src) } // MergeParams transfers values from src to dst for new keys using the merge encoded in dst. // This is done recursively. func MergeParams(dst, src Params) { ms, _ := dst.GetMergeStrategy() dst.merge(ms, src) } func (p Params) merge(ps ParamsMergeStrategy, pp Params) { ns, found := p.GetMergeStrategy() ms := ns if !found && ps != "" { ms = ps } noUpdate := ms == ParamsMergeStrategyNone noUpdate = noUpdate || (ps != "" && ps == ParamsMergeStrategyShallow) for k, v := range pp { if k == MergeStrategyKey { continue } vv, found := p[k] if found { // Key matches, if both sides are Params, we try to merge. if vvv, ok := vv.(Params); ok { if pv, ok := v.(Params); ok { vvv.merge(ms, pv) } } } else if !noUpdate { p[k] = v } } } // For internal use. func (p Params) GetMergeStrategy() (ParamsMergeStrategy, bool) { if v, found := p[MergeStrategyKey]; found { if s, ok := v.(ParamsMergeStrategy); ok { return s, true } } return ParamsMergeStrategyShallow, false } // For internal use. func (p Params) DeleteMergeStrategy() bool { if _, found := p[MergeStrategyKey]; found { delete(p, MergeStrategyKey) return true } return false } // For internal use. func (p Params) SetMergeStrategy(s ParamsMergeStrategy) { switch s { case ParamsMergeStrategyDeep, ParamsMergeStrategyNone, ParamsMergeStrategyShallow: default: panic(fmt.Sprintf("invalid merge strategy %q", s)) } p[MergeStrategyKey] = s } func getNested(m map[string]any, indices []string) (any, string, map[string]any) { if len(indices) == 0 { return nil, "", nil } first := indices[0] v, found := m[strings.ToLower(cast.ToString(first))] if !found { if len(indices) == 1 { return nil, first, m } return nil, "", nil } if len(indices) == 1 { return v, first, m } switch m2 := v.(type) { case Params: return getNested(m2, indices[1:]) case map[string]any: return getNested(m2, indices[1:]) default: return nil, "", nil } } // GetNestedParam gets the first match of the keyStr in the candidates given. // It will first try the exact match and then try to find it as a nested map value, // using the given separator, e.g. "mymap.name". // It assumes that all the maps given have lower cased keys. func GetNestedParam(keyStr, separator string, candidates ...Params) (any, error) { keyStr = strings.ToLower(keyStr) // Try exact match first for _, m := range candidates { if v, ok := m[keyStr]; ok { return v, nil } } keySegments := strings.Split(keyStr, separator) for _, m := range candidates { if v := m.GetNested(keySegments...); v != nil { return v, nil } } return nil, nil } func GetNestedParamFn(keyStr, separator string, lookupFn func(key string) any) (any, string, map[string]any, error) { keySegments := strings.Split(keyStr, separator) if len(keySegments) == 0 { return nil, "", nil, nil } first := lookupFn(keySegments[0]) if first == nil { return nil, "", nil, nil } if len(keySegments) == 1 { return first, keySegments[0], nil, nil } switch m := first.(type) { case map[string]any: v, key, owner := getNested(m, keySegments[1:]) return v, key, owner, nil case Params: v, key, owner := getNested(m, keySegments[1:]) return v, key, owner, nil } return nil, "", nil, nil } // ParamsMergeStrategy tells what strategy to use in Params.Merge. type ParamsMergeStrategy string const ( // Do not merge. ParamsMergeStrategyNone ParamsMergeStrategy = "none" // Only add new keys. ParamsMergeStrategyShallow ParamsMergeStrategy = "shallow" // Add new keys, merge existing. ParamsMergeStrategyDeep ParamsMergeStrategy = "deep" MergeStrategyKey = "_merge" ) // CleanConfigStringMapString removes any processing instructions from m, // m will never be modified. func CleanConfigStringMapString(m map[string]string) map[string]string { if len(m) == 0 { return m } if _, found := m[MergeStrategyKey]; !found { return m } // Create a new map and copy all the keys except the merge strategy key. m2 := make(map[string]string, len(m)-1) for k, v := range m { if k != MergeStrategyKey { m2[k] = v } } return m2 } // CleanConfigStringMap is the same as CleanConfigStringMapString but for // map[string]any. func CleanConfigStringMap(m map[string]any) map[string]any { return doCleanConfigStringMap(m, 0) } func doCleanConfigStringMap(m map[string]any, depth int) map[string]any { if len(m) == 0 { return m } const maxDepth = 1000 if depth > maxDepth { panic(errors.New("max depth exceeded")) } if _, found := m[MergeStrategyKey]; !found { return m } // Create a new map and copy all the keys except the merge strategy key. m2 := make(map[string]any, len(m)-1) for k, v := range m { if k != MergeStrategyKey { m2[k] = v } switch v2 := v.(type) { case map[string]any: m2[k] = doCleanConfigStringMap(v2, depth+1) case Params: var p Params = doCleanConfigStringMap(v2, depth+1) m2[k] = p case map[string]string: m2[k] = CleanConfigStringMapString(v2) } } return m2 } func toMergeStrategy(v any) ParamsMergeStrategy { s := ParamsMergeStrategy(cast.ToString(v)) switch s { case ParamsMergeStrategyDeep, ParamsMergeStrategyNone, ParamsMergeStrategyShallow: return s default: return ParamsMergeStrategyDeep } } // PrepareParams // * makes all the keys in the given map lower cased and will do so recursively. // * This will modify the map given. // * Any nested map[interface{}]interface{}, map[string]interface{},map[string]string will be converted to Params. // * Any _merge value will be converted to proper type and value. func PrepareParams(m Params) { for k, v := range m { var retyped bool lKey := strings.ToLower(k) if lKey == MergeStrategyKey { v = toMergeStrategy(v) retyped = true } else { switch vv := v.(type) { case map[any]any: var p Params = cast.ToStringMap(v) v = p PrepareParams(p) retyped = true case map[string]any: var p Params = v.(map[string]any) v = p PrepareParams(p) retyped = true case map[string]string: p := make(Params) for k, v := range vv { p[k] = v } v = p PrepareParams(p) retyped = true } } if retyped || k != lKey { delete(m, k) m[lKey] = v } } } // CloneParamsDeep does a deep clone of the given Params, // meaning that any nested Params will be cloned as well. func CloneParamsDeep(m Params) Params { return cloneParamsDeep(m, 0) } func cloneParamsDeep(m Params, depth int) Params { const maxDepth = 1000 if depth > maxDepth { panic(errors.New("max depth exceeded")) } m2 := make(Params) for k, v := range m { switch vv := v.(type) { case Params: m2[k] = cloneParamsDeep(vv, depth+1) default: m2[k] = v } } return m2 } // PrepareParamsClone is like PrepareParams, but it does not modify the input. func PrepareParamsClone(m Params) Params { m2 := make(Params) for k, v := range m { var retyped bool lKey := strings.ToLower(k) if lKey == MergeStrategyKey { v = toMergeStrategy(v) retyped = true } else { switch vv := v.(type) { case map[any]any: var p Params = cast.ToStringMap(v) v = PrepareParamsClone(p) retyped = true case map[string]any: var p Params = v.(map[string]any) v = PrepareParamsClone(p) retyped = true case map[string]string: p := make(Params) for k, v := range vv { p[k] = v } v = p PrepareParams(p) retyped = true } } if retyped || k != lKey { m2[lKey] = v } else { m2[k] = v } } return m2 } gohugoio-hugo-6abdaca/common/maps/params_test.go000066400000000000000000000077011507671574500222440ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "testing" qt "github.com/frankban/quicktest" ) func TestGetNestedParam(t *testing.T) { m := map[string]any{ "string": "value", "first": 1, "with_underscore": 2, "nested": map[string]any{ "color": "blue", "nestednested": map[string]any{ "color": "green", }, }, } c := qt.New(t) must := func(keyStr, separator string, candidates ...Params) any { v, err := GetNestedParam(keyStr, separator, candidates...) c.Assert(err, qt.IsNil) return v } c.Assert(must("first", "_", m), qt.Equals, 1) c.Assert(must("First", "_", m), qt.Equals, 1) c.Assert(must("with_underscore", "_", m), qt.Equals, 2) c.Assert(must("nested_color", "_", m), qt.Equals, "blue") c.Assert(must("nested.nestednested.color", ".", m), qt.Equals, "green") c.Assert(must("string.name", ".", m), qt.IsNil) c.Assert(must("nested.foo", ".", m), qt.IsNil) } // https://github.com/gohugoio/hugo/issues/7903 func TestGetNestedParamFnNestedNewKey(t *testing.T) { c := qt.New(t) nested := map[string]any{ "color": "blue", } m := map[string]any{ "nested": nested, } existing, nestedKey, owner, err := GetNestedParamFn("nested.new", ".", func(key string) any { return m[key] }) c.Assert(err, qt.IsNil) c.Assert(existing, qt.IsNil) c.Assert(nestedKey, qt.Equals, "new") c.Assert(owner, qt.DeepEquals, nested) } func TestParamsSetAndMerge(t *testing.T) { c := qt.New(t) createParamsPair := func() (Params, Params) { p1 := Params{"a": "av", "c": "cv", "nested": Params{"al2": "al2v", "cl2": "cl2v"}} p2 := Params{"b": "bv", "a": "abv", "nested": Params{"bl2": "bl2v", "al2": "al2bv"}, MergeStrategyKey: ParamsMergeStrategyDeep} return p1, p2 } p1, p2 := createParamsPair() SetParams(p1, p2) c.Assert(p1, qt.DeepEquals, Params{ "a": "abv", "c": "cv", "nested": Params{ "al2": "al2bv", "cl2": "cl2v", "bl2": "bl2v", }, "b": "bv", MergeStrategyKey: ParamsMergeStrategyDeep, }) p1, p2 = createParamsPair() MergeParamsWithStrategy("", p1, p2) // Default is to do a shallow merge. c.Assert(p1, qt.DeepEquals, Params{ "c": "cv", "nested": Params{ "al2": "al2v", "cl2": "cl2v", }, "b": "bv", "a": "av", }) p1, p2 = createParamsPair() p1.SetMergeStrategy(ParamsMergeStrategyNone) MergeParamsWithStrategy("", p1, p2) p1.DeleteMergeStrategy() c.Assert(p1, qt.DeepEquals, Params{ "a": "av", "c": "cv", "nested": Params{ "al2": "al2v", "cl2": "cl2v", }, }) p1, p2 = createParamsPair() p1.SetMergeStrategy(ParamsMergeStrategyShallow) MergeParamsWithStrategy("", p1, p2) p1.DeleteMergeStrategy() c.Assert(p1, qt.DeepEquals, Params{ "a": "av", "c": "cv", "nested": Params{ "al2": "al2v", "cl2": "cl2v", }, "b": "bv", }) p1, p2 = createParamsPair() p1.SetMergeStrategy(ParamsMergeStrategyDeep) MergeParamsWithStrategy("", p1, p2) p1.DeleteMergeStrategy() c.Assert(p1, qt.DeepEquals, Params{ "nested": Params{ "al2": "al2v", "cl2": "cl2v", "bl2": "bl2v", }, "b": "bv", "a": "av", "c": "cv", }) } func TestParamsIsZero(t *testing.T) { c := qt.New(t) var nilParams Params c.Assert(Params{}.IsZero(), qt.IsTrue) c.Assert(nilParams.IsZero(), qt.IsTrue) c.Assert(Params{"foo": "bar"}.IsZero(), qt.IsFalse) c.Assert(Params{"_merge": "foo", "foo": "bar"}.IsZero(), qt.IsFalse) c.Assert(Params{"_merge": "foo"}.IsZero(), qt.IsTrue) } gohugoio-hugo-6abdaca/common/maps/scratch.go000066400000000000000000000101001507671574500213340ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "reflect" "sort" "sync" "github.com/gohugoio/hugo/common/collections" "github.com/gohugoio/hugo/common/math" ) type StoreProvider interface { // Store returns a Scratch that can be used to store temporary state. // Store is not reset on server rebuilds. Store() *Scratch } // Scratch is a writable context used for stateful build operations type Scratch struct { values map[string]any mu sync.RWMutex } // Add will, for single values, add (using the + operator) the addend to the existing addend (if found). // Supports numeric values and strings. // // If the first add for a key is an array or slice, then the next value(s) will be appended. func (c *Scratch) Add(key string, newAddend any) (string, error) { var newVal any c.mu.RLock() existingAddend, found := c.values[key] c.mu.RUnlock() if found { var err error addendV := reflect.TypeOf(existingAddend) if addendV.Kind() == reflect.Slice || addendV.Kind() == reflect.Array { newVal, err = collections.Append(existingAddend, newAddend) if err != nil { return "", err } } else { newVal, err = math.DoArithmetic(existingAddend, newAddend, '+') if err != nil { return "", err } } } else { newVal = newAddend } c.mu.Lock() c.values[key] = newVal c.mu.Unlock() return "", nil // have to return something to make it work with the Go templates } // Set stores a value with the given key in the Node context. // This value can later be retrieved with Get. func (c *Scratch) Set(key string, value any) string { c.mu.Lock() c.values[key] = value c.mu.Unlock() return "" } // Delete deletes the given key. func (c *Scratch) Delete(key string) string { c.mu.Lock() delete(c.values, key) c.mu.Unlock() return "" } // Get returns a value previously set by Add or Set. func (c *Scratch) Get(key string) any { c.mu.RLock() val := c.values[key] c.mu.RUnlock() return val } // Values returns the raw backing map. Note that you should just use // this method on the locally scoped Scratch instances you obtain via newScratch, not // .Page.Scratch etc., as that will lead to concurrency issues. func (c *Scratch) Values() map[string]any { c.mu.RLock() defer c.mu.RUnlock() return c.values } // SetInMap stores a value to a map with the given key in the Node context. // This map can later be retrieved with GetSortedMapValues. func (c *Scratch) SetInMap(key string, mapKey string, value any) string { c.mu.Lock() _, found := c.values[key] if !found { c.values[key] = make(map[string]any) } c.values[key].(map[string]any)[mapKey] = value c.mu.Unlock() return "" } // DeleteInMap deletes a value to a map with the given key in the Node context. func (c *Scratch) DeleteInMap(key string, mapKey string) string { c.mu.Lock() _, found := c.values[key] if found { delete(c.values[key].(map[string]any), mapKey) } c.mu.Unlock() return "" } // GetSortedMapValues returns a sorted map previously filled with SetInMap. func (c *Scratch) GetSortedMapValues(key string) any { c.mu.RLock() if c.values[key] == nil { c.mu.RUnlock() return nil } unsortedMap := c.values[key].(map[string]any) c.mu.RUnlock() var keys []string for mapKey := range unsortedMap { keys = append(keys, mapKey) } sort.Strings(keys) sortedArray := make([]any, len(unsortedMap)) for i, mapKey := range keys { sortedArray[i] = unsortedMap[mapKey] } return sortedArray } // NewScratch returns a new instance of Scratch. func NewScratch() *Scratch { return &Scratch{values: make(map[string]any)} } gohugoio-hugo-6abdaca/common/maps/scratch_test.go000066400000000000000000000122261507671574500224060ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package maps import ( "reflect" "sync" "testing" qt "github.com/frankban/quicktest" ) func TestScratchAdd(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Add("int1", 10) scratch.Add("int1", 20) scratch.Add("int2", 20) c.Assert(scratch.Get("int1"), qt.Equals, int64(30)) c.Assert(scratch.Get("int2"), qt.Equals, 20) scratch.Add("float1", float64(10.5)) scratch.Add("float1", float64(20.1)) c.Assert(scratch.Get("float1"), qt.Equals, float64(30.6)) scratch.Add("string1", "Hello ") scratch.Add("string1", "big ") scratch.Add("string1", "World!") c.Assert(scratch.Get("string1"), qt.Equals, "Hello big World!") scratch.Add("scratch", scratch) _, err := scratch.Add("scratch", scratch) m := scratch.Values() c.Assert(m, qt.HasLen, 5) if err == nil { t.Errorf("Expected error from invalid arithmetic") } } func TestScratchAddSlice(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() _, err := scratch.Add("intSlice", []int{1, 2}) c.Assert(err, qt.IsNil) _, err = scratch.Add("intSlice", 3) c.Assert(err, qt.IsNil) sl := scratch.Get("intSlice") expected := []int{1, 2, 3} if !reflect.DeepEqual(expected, sl) { t.Errorf("Slice difference, go %q expected %q", sl, expected) } _, err = scratch.Add("intSlice", []int{4, 5}) c.Assert(err, qt.IsNil) sl = scratch.Get("intSlice") expected = []int{1, 2, 3, 4, 5} if !reflect.DeepEqual(expected, sl) { t.Errorf("Slice difference, go %q expected %q", sl, expected) } } // https://github.com/gohugoio/hugo/issues/5275 func TestScratchAddTypedSliceToInterfaceSlice(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Set("slice", []any{}) _, err := scratch.Add("slice", []int{1, 2}) c.Assert(err, qt.IsNil) c.Assert(scratch.Get("slice"), qt.DeepEquals, []int{1, 2}) } // https://github.com/gohugoio/hugo/issues/5361 func TestScratchAddDifferentTypedSliceToInterfaceSlice(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Set("slice", []string{"foo"}) _, err := scratch.Add("slice", []int{1, 2}) c.Assert(err, qt.IsNil) c.Assert(scratch.Get("slice"), qt.DeepEquals, []any{"foo", 1, 2}) } func TestScratchSet(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Set("key", "val") c.Assert(scratch.Get("key"), qt.Equals, "val") } func TestScratchDelete(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Set("key", "val") scratch.Delete("key") scratch.Add("key", "Lucy Parsons") c.Assert(scratch.Get("key"), qt.Equals, "Lucy Parsons") } // Issue #2005 func TestScratchInParallel(t *testing.T) { var wg sync.WaitGroup scratch := NewScratch() key := "counter" scratch.Set(key, int64(1)) for i := 1; i <= 10; i++ { wg.Add(1) go func(j int) { for k := range 10 { newVal := int64(k + j) _, err := scratch.Add(key, newVal) if err != nil { t.Errorf("Got err %s", err) } scratch.Set(key, newVal) val := scratch.Get(key) if counter, ok := val.(int64); ok { if counter < 1 { t.Errorf("Got %d", counter) } } else { t.Errorf("Got %T", val) } } wg.Done() }(i) } wg.Wait() } func TestScratchGet(t *testing.T) { t.Parallel() scratch := NewScratch() nothing := scratch.Get("nothing") if nothing != nil { t.Errorf("Should not return anything, but got %v", nothing) } } func TestScratchSetInMap(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.SetInMap("key", "lux", "Lux") scratch.SetInMap("key", "abc", "Abc") scratch.SetInMap("key", "zyx", "Zyx") scratch.SetInMap("key", "abc", "Abc (updated)") scratch.SetInMap("key", "def", "Def") c.Assert(scratch.GetSortedMapValues("key"), qt.DeepEquals, any([]any{"Abc (updated)", "Def", "Lux", "Zyx"})) } func TestScratchDeleteInMap(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.SetInMap("key", "lux", "Lux") scratch.SetInMap("key", "abc", "Abc") scratch.SetInMap("key", "zyx", "Zyx") scratch.DeleteInMap("key", "abc") scratch.SetInMap("key", "def", "Def") scratch.DeleteInMap("key", "lmn") // Do nothing c.Assert(scratch.GetSortedMapValues("key"), qt.DeepEquals, any([]any{"Def", "Lux", "Zyx"})) } func TestScratchGetSortedMapValues(t *testing.T) { t.Parallel() scratch := NewScratch() nothing := scratch.GetSortedMapValues("nothing") if nothing != nil { t.Errorf("Should not return anything, but got %v", nothing) } } func BenchmarkScratchGet(b *testing.B) { scratch := NewScratch() scratch.Add("A", 1) b.ResetTimer() for i := 0; i < b.N; i++ { scratch.Get("A") } } gohugoio-hugo-6abdaca/common/math/000077500000000000000000000000001507671574500173575ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/math/math.go000066400000000000000000000072261507671574500206460ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package math import ( "errors" "reflect" ) // DoArithmetic performs arithmetic operations (+,-,*,/) using reflection to // determine the type of the two terms. func DoArithmetic(a, b any, op rune) (any, error) { av := reflect.ValueOf(a) bv := reflect.ValueOf(b) var ai, bi int64 var af, bf float64 var au, bu uint64 var isInt, isFloat, isUint bool switch av.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: ai = av.Int() switch bv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: isInt = true bi = bv.Int() case reflect.Float32, reflect.Float64: isFloat = true af = float64(ai) // may overflow bf = bv.Float() case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: bu = bv.Uint() if ai >= 0 { isUint = true au = uint64(ai) } else { isInt = true bi = int64(bu) // may overflow } default: return nil, errors.New("can't apply the operator to the values") } case reflect.Float32, reflect.Float64: isFloat = true af = av.Float() switch bv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: bf = float64(bv.Int()) // may overflow case reflect.Float32, reflect.Float64: bf = bv.Float() case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: bf = float64(bv.Uint()) // may overflow default: return nil, errors.New("can't apply the operator to the values") } case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: au = av.Uint() switch bv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: bi = bv.Int() if bi >= 0 { isUint = true bu = uint64(bi) } else { isInt = true ai = int64(au) // may overflow } case reflect.Float32, reflect.Float64: isFloat = true af = float64(au) // may overflow bf = bv.Float() case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: isUint = true bu = bv.Uint() default: return nil, errors.New("can't apply the operator to the values") } case reflect.String: as := av.String() if bv.Kind() == reflect.String && op == '+' { bs := bv.String() return as + bs, nil } return nil, errors.New("can't apply the operator to the values") default: return nil, errors.New("can't apply the operator to the values") } switch op { case '+': if isInt { return ai + bi, nil } else if isFloat { return af + bf, nil } return au + bu, nil case '-': if isInt { return ai - bi, nil } else if isFloat { return af - bf, nil } return au - bu, nil case '*': if isInt { return ai * bi, nil } else if isFloat { return af * bf, nil } return au * bu, nil case '/': if isInt && bi != 0 { return ai / bi, nil } else if isFloat && bf != 0 { return af / bf, nil } else if isUint && bu != 0 { return au / bu, nil } return nil, errors.New("can't divide the value by 0") default: return nil, errors.New("there is no such an operation") } } gohugoio-hugo-6abdaca/common/math/math_test.go000066400000000000000000000061751507671574500217070ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package math import ( "testing" qt "github.com/frankban/quicktest" ) func TestDoArithmetic(t *testing.T) { t.Parallel() c := qt.New(t) for _, test := range []struct { a any b any op rune expect any }{ {3, 2, '+', int64(5)}, {0, 0, '+', int64(0)}, {3, 2, '-', int64(1)}, {3, 2, '*', int64(6)}, {3, 2, '/', int64(1)}, {3.0, 2, '+', float64(5)}, {0.0, 0, '+', float64(0.0)}, {3.0, 2, '-', float64(1)}, {3.0, 2, '*', float64(6)}, {3.0, 2, '/', float64(1.5)}, {3, 2.0, '+', float64(5)}, {3, 2.0, '-', float64(1)}, {3, 2.0, '*', float64(6)}, {3, 2.0, '/', float64(1.5)}, {3.0, 2.0, '+', float64(5)}, {0.0, 0.0, '+', float64(0.0)}, {3.0, 2.0, '-', float64(1)}, {3.0, 2.0, '*', float64(6)}, {3.0, 2.0, '/', float64(1.5)}, {uint(3), uint(2), '+', uint64(5)}, {uint(0), uint(0), '+', uint64(0)}, {uint(3), uint(2), '-', uint64(1)}, {uint(3), uint(2), '*', uint64(6)}, {uint(3), uint(2), '/', uint64(1)}, {uint(3), 2, '+', uint64(5)}, {uint(0), 0, '+', uint64(0)}, {uint(3), 2, '-', uint64(1)}, {uint(3), 2, '*', uint64(6)}, {uint(3), 2, '/', uint64(1)}, {3, uint(2), '+', uint64(5)}, {0, uint(0), '+', uint64(0)}, {3, uint(2), '-', uint64(1)}, {3, uint(2), '*', uint64(6)}, {3, uint(2), '/', uint64(1)}, {uint(3), -2, '+', int64(1)}, {uint(3), -2, '-', int64(5)}, {uint(3), -2, '*', int64(-6)}, {uint(3), -2, '/', int64(-1)}, {-3, uint(2), '+', int64(-1)}, {-3, uint(2), '-', int64(-5)}, {-3, uint(2), '*', int64(-6)}, {-3, uint(2), '/', int64(-1)}, {uint(3), 2.0, '+', float64(5)}, {uint(0), 0.0, '+', float64(0)}, {uint(3), 2.0, '-', float64(1)}, {uint(3), 2.0, '*', float64(6)}, {uint(3), 2.0, '/', float64(1.5)}, {3.0, uint(2), '+', float64(5)}, {0.0, uint(0), '+', float64(0)}, {3.0, uint(2), '-', float64(1)}, {3.0, uint(2), '*', float64(6)}, {3.0, uint(2), '/', float64(1.5)}, {"foo", "bar", '+', "foobar"}, {3, 0, '/', false}, {3.0, 0, '/', false}, {3, 0.0, '/', false}, {uint(3), uint(0), '/', false}, {3, uint(0), '/', false}, {-3, uint(0), '/', false}, {uint(3), 0, '/', false}, {3.0, uint(0), '/', false}, {uint(3), 0.0, '/', false}, {3, "foo", '+', false}, {3.0, "foo", '+', false}, {uint(3), "foo", '+', false}, {"foo", 3, '+', false}, {"foo", "bar", '-', false}, {3, 2, '%', false}, } { result, err := DoArithmetic(test.a, test.b, test.op) if b, ok := test.expect.(bool); ok && !b { c.Assert(err, qt.Not(qt.IsNil)) continue } c.Assert(err, qt.IsNil) c.Assert(test.expect, qt.Equals, result) } } gohugoio-hugo-6abdaca/common/para/000077500000000000000000000000001507671574500173515ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/para/para.go000066400000000000000000000034431507671574500206270ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package para implements parallel execution helpers. package para import ( "context" "golang.org/x/sync/errgroup" ) // Workers configures a task executor with the most number of tasks to be executed in parallel. type Workers struct { sem chan struct{} } // Runner wraps the lifecycle methods of a new task set. // // Run will block until a worker is available or the context is cancelled, // and then run the given func in a new goroutine. // Wait will wait for all the running goroutines to finish. type Runner interface { Run(func() error) Wait() error } type errGroupRunner struct { *errgroup.Group w *Workers ctx context.Context } func (g *errGroupRunner) Run(fn func() error) { select { case g.w.sem <- struct{}{}: case <-g.ctx.Done(): return } g.Go(func() error { err := fn() <-g.w.sem return err }) } // New creates a new Workers with the given number of workers. func New(numWorkers int) *Workers { return &Workers{ sem: make(chan struct{}, numWorkers), } } // Start starts a new Runner. func (w *Workers) Start(ctx context.Context) (Runner, context.Context) { g, ctx := errgroup.WithContext(ctx) return &errGroupRunner{ Group: g, ctx: ctx, w: w, }, ctx } gohugoio-hugo-6abdaca/common/para/para_test.go000066400000000000000000000041011507671574500216560ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package para import ( "context" "runtime" "sort" "sync" "sync/atomic" "testing" "time" "github.com/gohugoio/hugo/htesting" qt "github.com/frankban/quicktest" ) func TestPara(t *testing.T) { if runtime.NumCPU() < 4 { t.Skipf("skip para test, CPU count is %d", runtime.NumCPU()) } // TODO(bep) if htesting.IsCI() { t.Skip("skip para test when running on CI") } c := qt.New(t) c.Run("Order", func(c *qt.C) { n := 500 ints := make([]int, n) for i := range n { ints[i] = i } p := New(4) r, _ := p.Start(context.Background()) var result []int var mu sync.Mutex for i := range n { i := i r.Run(func() error { mu.Lock() defer mu.Unlock() result = append(result, i) return nil }) } c.Assert(r.Wait(), qt.IsNil) c.Assert(result, qt.HasLen, len(ints)) c.Assert(sort.IntsAreSorted(result), qt.Equals, false, qt.Commentf("Para does not seem to be parallel")) sort.Ints(result) c.Assert(result, qt.DeepEquals, ints) }) c.Run("Time", func(c *qt.C) { const n = 100 p := New(5) r, _ := p.Start(context.Background()) start := time.Now() var counter int64 for range n { r.Run(func() error { atomic.AddInt64(&counter, 1) time.Sleep(1 * time.Millisecond) return nil }) } c.Assert(r.Wait(), qt.IsNil) c.Assert(counter, qt.Equals, int64(n)) since := time.Since(start) limit := n / 2 * time.Millisecond c.Assert(since < limit, qt.Equals, true, qt.Commentf("%s >= %s", since, limit)) }) } gohugoio-hugo-6abdaca/common/paths/000077500000000000000000000000001507671574500175455ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/paths/path.go000066400000000000000000000275311507671574500210400ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package paths import ( "errors" "fmt" "net/url" "path" "path/filepath" "strings" "unicode" ) // FilePathSeparator as defined by os.Separator. const ( FilePathSeparator = string(filepath.Separator) slash = "/" ) // filepathPathBridge is a bridge for common functionality in filepath vs path type filepathPathBridge interface { Base(in string) string Clean(in string) string Dir(in string) string Ext(in string) string Join(elem ...string) string Separator() string } type filepathBridge struct{} func (filepathBridge) Base(in string) string { return filepath.Base(in) } func (filepathBridge) Clean(in string) string { return filepath.Clean(in) } func (filepathBridge) Dir(in string) string { return filepath.Dir(in) } func (filepathBridge) Ext(in string) string { return filepath.Ext(in) } func (filepathBridge) Join(elem ...string) string { return filepath.Join(elem...) } func (filepathBridge) Separator() string { return FilePathSeparator } var fpb filepathBridge // AbsPathify creates an absolute path if given a working dir and a relative path. // If already absolute, the path is just cleaned. func AbsPathify(workingDir, inPath string) string { if filepath.IsAbs(inPath) { return filepath.Clean(inPath) } return filepath.Join(workingDir, inPath) } // AddTrailingSlash adds a trailing Unix styled slash (/) if not already // there. func AddTrailingSlash(path string) string { if !strings.HasSuffix(path, "/") { path += "/" } return path } // AddLeadingSlash adds a leading Unix styled slash (/) if not already // there. func AddLeadingSlash(path string) string { if !strings.HasPrefix(path, "/") { path = "/" + path } return path } // AddTrailingAndLeadingSlash adds a leading and trailing Unix styled slash (/) if not already // there. func AddLeadingAndTrailingSlash(path string) string { return AddTrailingSlash(AddLeadingSlash(path)) } // MakeTitle converts the path given to a suitable title, trimming whitespace // and replacing hyphens with whitespace. func MakeTitle(inpath string) string { return strings.Replace(strings.TrimSpace(inpath), "-", " ", -1) } // ReplaceExtension takes a path and an extension, strips the old extension // and returns the path with the new extension. func ReplaceExtension(path string, newExt string) string { f, _ := fileAndExt(path, fpb) return f + "." + newExt } func makePathRelative(inPath string, possibleDirectories ...string) (string, error) { for _, currentPath := range possibleDirectories { if strings.HasPrefix(inPath, currentPath) { return strings.TrimPrefix(inPath, currentPath), nil } } return inPath, errors.New("can't extract relative path, unknown prefix") } // ExtNoDelimiter takes a path and returns the extension, excluding the delimiter, i.e. "md". func ExtNoDelimiter(in string) string { return strings.TrimPrefix(Ext(in), ".") } // Ext takes a path and returns the extension, including the delimiter, i.e. ".md". func Ext(in string) string { _, ext := fileAndExt(in, fpb) return ext } // PathAndExt is the same as FileAndExt, but it uses the path package. func PathAndExt(in string) (string, string) { return fileAndExt(in, pb) } // FileAndExt takes a path and returns the file and extension separated, // the extension including the delimiter, i.e. ".md". func FileAndExt(in string) (string, string) { return fileAndExt(in, fpb) } // FileAndExtNoDelimiter takes a path and returns the file and extension separated, // the extension excluding the delimiter, e.g "md". func FileAndExtNoDelimiter(in string) (string, string) { file, ext := fileAndExt(in, fpb) return file, strings.TrimPrefix(ext, ".") } // Filename takes a file path, strips out the extension, // and returns the name of the file. func Filename(in string) (name string) { name, _ = fileAndExt(in, fpb) return } // FileAndExt returns the filename and any extension of a file path as // two separate strings. // // If the path, in, contains a directory name ending in a slash, // then both name and ext will be empty strings. // // If the path, in, is either the current directory, the parent // directory or the root directory, or an empty string, // then both name and ext will be empty strings. // // If the path, in, represents the path of a file without an extension, // then name will be the name of the file and ext will be an empty string. // // If the path, in, represents a filename with an extension, // then name will be the filename minus any extension - including the dot // and ext will contain the extension - minus the dot. func fileAndExt(in string, b filepathPathBridge) (name string, ext string) { ext = b.Ext(in) base := b.Base(in) return extractFilename(in, ext, base, b.Separator()), ext } func extractFilename(in, ext, base, pathSeparator string) (name string) { // No file name cases. These are defined as: // 1. any "in" path that ends in a pathSeparator // 2. any "base" consisting of just an pathSeparator // 3. any "base" consisting of just an empty string // 4. any "base" consisting of just the current directory i.e. "." // 5. any "base" consisting of just the parent directory i.e. ".." if (strings.LastIndex(in, pathSeparator) == len(in)-1) || base == "" || base == "." || base == ".." || base == pathSeparator { name = "" // there is NO filename } else if ext != "" { // there was an Extension // return the filename minus the extension (and the ".") name = base[:strings.LastIndex(base, ".")] } else { // no extension case so just return base, which will // be the filename name = base } return } // GetRelativePath returns the relative path of a given path. func GetRelativePath(path, base string) (final string, err error) { if filepath.IsAbs(path) && base == "" { return "", errors.New("source: missing base directory") } name := filepath.Clean(path) base = filepath.Clean(base) name, err = filepath.Rel(base, name) if err != nil { return "", err } if strings.HasSuffix(filepath.FromSlash(path), FilePathSeparator) && !strings.HasSuffix(name, FilePathSeparator) { name += FilePathSeparator } return name, nil } func prettifyPath(in string, b filepathPathBridge) string { if filepath.Ext(in) == "" { // /section/name/ -> /section/name/index.html if len(in) < 2 { return b.Separator() } return b.Join(in, "index.html") } name, ext := fileAndExt(in, b) if name == "index" { // /section/name/index.html -> /section/name/index.html return b.Clean(in) } // /section/name.html -> /section/name/index.html return b.Join(b.Dir(in), name, "index"+ext) } // CommonDirPath returns the common directory of the given paths. func CommonDirPath(path1, path2 string) string { if path1 == "" || path2 == "" { return "" } hadLeadingSlash := strings.HasPrefix(path1, "/") || strings.HasPrefix(path2, "/") path1 = TrimLeading(path1) path2 = TrimLeading(path2) p1 := strings.Split(path1, "/") p2 := strings.Split(path2, "/") var common []string for i := 0; i < len(p1) && i < len(p2); i++ { if p1[i] == p2[i] { common = append(common, p1[i]) } else { break } } s := strings.Join(common, "/") if hadLeadingSlash && s != "" { s = "/" + s } return s } // Sanitize sanitizes string to be used in Hugo's file paths and URLs, allowing only // a predefined set of special Unicode characters. // // Spaces will be replaced with a single hyphen. // // This function is the core function used to normalize paths in Hugo. // // Note that this is the first common step for URL/path sanitation, // the final URL/path may end up looking differently if the user has stricter rules defined (e.g. removePathAccents=true). func Sanitize(s string) string { var willChange bool for i, r := range s { willChange = !isAllowedPathCharacter(s, i, r) if willChange { break } } if !willChange { // Prevent allocation when nothing changes. return s } target := make([]rune, 0, len(s)) var ( prependHyphen bool wasHyphen bool ) for i, r := range s { isAllowed := isAllowedPathCharacter(s, i, r) if isAllowed { // track explicit hyphen in input; no need to add a new hyphen if // we just saw one. wasHyphen = r == '-' if prependHyphen { // if currently have a hyphen, don't prepend an extra one if !wasHyphen { target = append(target, '-') } prependHyphen = false } target = append(target, r) } else if len(target) > 0 && !wasHyphen && unicode.IsSpace(r) { prependHyphen = true } } return string(target) } func isAllowedPathCharacter(s string, i int, r rune) bool { if r == ' ' { return false } // Check for the most likely first (faster). isAllowed := unicode.IsLetter(r) || unicode.IsDigit(r) isAllowed = isAllowed || r == '.' || r == '/' || r == '\\' || r == '_' || r == '#' || r == '+' || r == '~' || r == '-' || r == '@' isAllowed = isAllowed || unicode.IsMark(r) isAllowed = isAllowed || (r == '%' && i+2 < len(s) && ishex(s[i+1]) && ishex(s[i+2])) return isAllowed } // From https://golang.org/src/net/url/url.go func ishex(c byte) bool { switch { case '0' <= c && c <= '9': return true case 'a' <= c && c <= 'f': return true case 'A' <= c && c <= 'F': return true } return false } var slashFunc = func(r rune) bool { return r == '/' } // Dir behaves like path.Dir without the path.Clean step. // // The returned path ends in a slash only if it is the root "/". func Dir(s string) string { dir, _ := path.Split(s) if len(dir) > 1 && dir[len(dir)-1] == '/' { return dir[:len(dir)-1] } return dir } // FieldsSlash cuts s into fields separated with '/'. func FieldsSlash(s string) []string { f := strings.FieldsFunc(s, slashFunc) return f } // DirFile holds the result from path.Split. type DirFile struct { Dir string File string } // Used in test. func (df DirFile) String() string { return fmt.Sprintf("%s|%s", df.Dir, df.File) } // PathEscape escapes unicode letters in pth. // Use URLEscape to escape full URLs including scheme, query etc. // This is slightly faster for the common case. // Note, there is a url.PathEscape function, but that also // escapes /. func PathEscape(pth string) string { u, err := url.Parse(pth) if err != nil { panic(err) } return u.EscapedPath() } // ToSlashTrimLeading is just a filepath.ToSlash with an added / prefix trimmer. func ToSlashTrimLeading(s string) string { return TrimLeading(filepath.ToSlash(s)) } // TrimLeading trims the leading slash from the given string. func TrimLeading(s string) string { return strings.TrimPrefix(s, "/") } // ToSlashTrimTrailing is just a filepath.ToSlash with an added / suffix trimmer. func ToSlashTrimTrailing(s string) string { return TrimTrailing(filepath.ToSlash(s)) } // TrimTrailing trims the trailing slash from the given string. func TrimTrailing(s string) string { return strings.TrimSuffix(s, "/") } // ToSlashTrim trims any leading and trailing slashes from the given string and converts it to a forward slash separated path. func ToSlashTrim(s string) string { return strings.Trim(filepath.ToSlash(s), "/") } // ToSlashPreserveLeading converts the path given to a forward slash separated path // and preserves the leading slash if present trimming any trailing slash. func ToSlashPreserveLeading(s string) string { return "/" + strings.Trim(filepath.ToSlash(s), "/") } // IsSameFilePath checks if s1 and s2 are the same file path. func IsSameFilePath(s1, s2 string) bool { return path.Clean(ToSlashTrim(s1)) == path.Clean(ToSlashTrim(s2)) } gohugoio-hugo-6abdaca/common/paths/path_test.go000066400000000000000000000216721507671574500220770ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package paths import ( "path/filepath" "testing" qt "github.com/frankban/quicktest" ) func TestGetRelativePath(t *testing.T) { tests := []struct { path string base string expect any }{ {filepath.FromSlash("/a/b"), filepath.FromSlash("/a"), filepath.FromSlash("b")}, {filepath.FromSlash("/a/b/c/"), filepath.FromSlash("/a"), filepath.FromSlash("b/c/")}, {filepath.FromSlash("/c"), filepath.FromSlash("/a/b"), filepath.FromSlash("../../c")}, {filepath.FromSlash("/c"), "", false}, } for i, this := range tests { // ultimately a fancy wrapper around filepath.Rel result, err := GetRelativePath(this.path, this.base) if b, ok := this.expect.(bool); ok && !b { if err == nil { t.Errorf("[%d] GetRelativePath didn't return an expected error", i) } } else { if err != nil { t.Errorf("[%d] GetRelativePath failed: %s", i, err) continue } if result != this.expect { t.Errorf("[%d] GetRelativePath got %v but expected %v", i, result, this.expect) } } } } func TestMakePathRelative(t *testing.T) { type test struct { inPath, path1, path2, output string } data := []test{ {"/abc/bcd/ab.css", "/abc/bcd", "/bbc/bcd", "/ab.css"}, {"/abc/bcd/ab.css", "/abcd/bcd", "/abc/bcd", "/ab.css"}, } for i, d := range data { output, _ := makePathRelative(d.inPath, d.path1, d.path2) if d.output != output { t.Errorf("Test #%d failed. Expected %q got %q", i, d.output, output) } } _, error := makePathRelative("a/b/c.ss", "/a/c", "/d/c", "/e/f") if error == nil { t.Errorf("Test failed, expected error") } } func TestMakeTitle(t *testing.T) { type test struct { input, expected string } data := []test{ {"Make-Title", "Make Title"}, {"MakeTitle", "MakeTitle"}, {"make_title", "make_title"}, } for i, d := range data { output := MakeTitle(d.input) if d.expected != output { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output) } } } // Replace Extension is probably poorly named, but the intent of the // function is to accept a path and return only the file name with a // new extension. It's intentionally designed to strip out the path // and only provide the name. We should probably rename the function to // be more explicit at some point. func TestReplaceExtension(t *testing.T) { type test struct { input, newext, expected string } data := []test{ // These work according to the above definition {"/some/random/path/file.xml", "html", "file.html"}, {"/banana.html", "xml", "banana.xml"}, {"./banana.html", "xml", "banana.xml"}, {"banana/pie/index.html", "xml", "index.xml"}, {"../pies/fish/index.html", "xml", "index.xml"}, // but these all fail {"filename-without-an-ext", "ext", "filename-without-an-ext.ext"}, {"/filename-without-an-ext", "ext", "filename-without-an-ext.ext"}, {"/directory/mydir/", "ext", ".ext"}, {"mydir/", "ext", ".ext"}, } for i, d := range data { output := ReplaceExtension(filepath.FromSlash(d.input), d.newext) if d.expected != output { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output) } } } func TestExtNoDelimiter(t *testing.T) { c := qt.New(t) c.Assert(ExtNoDelimiter(filepath.FromSlash("/my/data.json")), qt.Equals, "json") } func TestFilename(t *testing.T) { type test struct { input, expected string } data := []test{ {"index.html", "index"}, {"./index.html", "index"}, {"/index.html", "index"}, {"index", "index"}, {"/tmp/index.html", "index"}, {"./filename-no-ext", "filename-no-ext"}, {"/filename-no-ext", "filename-no-ext"}, {"filename-no-ext", "filename-no-ext"}, {"directory/", ""}, // no filename case?? {"directory/.hidden.ext", ".hidden"}, {"./directory/../~/banana/gold.fish", "gold"}, {"../directory/banana.man", "banana"}, {"~/mydir/filename.ext", "filename"}, {"./directory//tmp/filename.ext", "filename"}, } for i, d := range data { output := Filename(filepath.FromSlash(d.input)) if d.expected != output { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output) } } } func TestFileAndExt(t *testing.T) { type test struct { input, expectedFile, expectedExt string } data := []test{ {"index.html", "index", ".html"}, {"./index.html", "index", ".html"}, {"/index.html", "index", ".html"}, {"index", "index", ""}, {"/tmp/index.html", "index", ".html"}, {"./filename-no-ext", "filename-no-ext", ""}, {"/filename-no-ext", "filename-no-ext", ""}, {"filename-no-ext", "filename-no-ext", ""}, {"directory/", "", ""}, // no filename case?? {"directory/.hidden.ext", ".hidden", ".ext"}, {"./directory/../~/banana/gold.fish", "gold", ".fish"}, {"../directory/banana.man", "banana", ".man"}, {"~/mydir/filename.ext", "filename", ".ext"}, {"./directory//tmp/filename.ext", "filename", ".ext"}, } for i, d := range data { file, ext := fileAndExt(filepath.FromSlash(d.input), fpb) if d.expectedFile != file { t.Errorf("Test %d failed. Expected filename %q got %q.", i, d.expectedFile, file) } if d.expectedExt != ext { t.Errorf("Test %d failed. Expected extension %q got %q.", i, d.expectedExt, ext) } } } func TestSanitize(t *testing.T) { c := qt.New(t) tests := []struct { input string expected string }{ {" Foo bar ", "Foo-bar"}, {"Foo.Bar/foo_Bar-Foo", "Foo.Bar/foo_Bar-Foo"}, {"fOO,bar:foobAR", "fOObarfoobAR"}, {"FOo/BaR.html", "FOo/BaR.html"}, {"FOo/Ba---R.html", "FOo/Ba---R.html"}, /// See #10104 {"FOo/Ba R.html", "FOo/Ba-R.html"}, {"трям/трям", "трям/трям"}, {"은행", "은행"}, {"Банковский кассир", "Банковский-кассир"}, // Issue #1488 {"संस्कृत", "संस्कृत"}, {"a%C3%B1ame", "a%C3%B1ame"}, // Issue #1292 {"this+is+a+test", "this+is+a+test"}, // Issue #1290 {"~foo", "~foo"}, // Issue #2177 } for _, test := range tests { c.Assert(Sanitize(test.input), qt.Equals, test.expected) } } func BenchmarkSanitize(b *testing.B) { const ( allAlowedPath = "foo/bar" spacePath = "foo bar" ) // This should not allocate any memory. b.Run("All allowed", func(b *testing.B) { for i := 0; i < b.N; i++ { got := Sanitize(allAlowedPath) if got != allAlowedPath { b.Fatal(got) } } }) // This will allocate some memory. b.Run("Spaces", func(b *testing.B) { for i := 0; i < b.N; i++ { got := Sanitize(spacePath) if got != "foo-bar" { b.Fatal(got) } } }) } func TestDir(t *testing.T) { c := qt.New(t) c.Assert(Dir("/a/b/c/d"), qt.Equals, "/a/b/c") c.Assert(Dir("/a"), qt.Equals, "/") c.Assert(Dir("/"), qt.Equals, "/") c.Assert(Dir(""), qt.Equals, "") } func TestFieldsSlash(t *testing.T) { c := qt.New(t) c.Assert(FieldsSlash("a/b/c"), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(FieldsSlash("/a/b/c"), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(FieldsSlash("/a/b/c/"), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(FieldsSlash("a/b/c/"), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(FieldsSlash("/"), qt.DeepEquals, []string{}) c.Assert(FieldsSlash(""), qt.DeepEquals, []string{}) } func TestCommonDirPath(t *testing.T) { c := qt.New(t) for _, this := range []struct { a, b, expected string }{ {"/a/b/c", "/a/b/d", "/a/b"}, {"/a/b/c", "a/b/d", "/a/b"}, {"a/b/c", "/a/b/d", "/a/b"}, {"a/b/c", "a/b/d", "a/b"}, {"/a/b/c", "/a/b/c", "/a/b/c"}, {"/a/b/c", "/a/b/c/d", "/a/b/c"}, {"/a/b/c", "/a/b", "/a/b"}, {"/a/b/c", "/a", "/a"}, {"/a/b/c", "/d/e/f", ""}, } { c.Assert(CommonDirPath(this.a, this.b), qt.Equals, this.expected, qt.Commentf("a: %s b: %s", this.a, this.b)) } } func TestIsSameFilePath(t *testing.T) { c := qt.New(t) for _, this := range []struct { a, b string expected bool }{ {"/a/b/c", "/a/b/c", true}, {"/a/b/c", "/a/b/c/", true}, {"/a/b/c", "/a/b/d", false}, {"/a/b/c", "/a/b", false}, {"/a/b/c", "/a/b/c/d", false}, {"/a/b/c", "/a/b/cd", false}, {"/a/b/c", "/a/b/cc", false}, {"/a/b/c", "/a/b/c/", true}, {"/a/b/c", "/a/b/c//", true}, {"/a/b/c", "/a/b/c/.", true}, {"/a/b/c", "/a/b/c/./", true}, {"/a/b/c", "/a/b/c/./.", true}, {"/a/b/c", "/a/b/c/././", true}, {"/a/b/c", "/a/b/c/././.", true}, {"/a/b/c", "/a/b/c/./././", true}, {"/a/b/c", "/a/b/c/./././.", true}, {"/a/b/c", "/a/b/c/././././", true}, } { c.Assert(IsSameFilePath(filepath.FromSlash(this.a), filepath.FromSlash(this.b)), qt.Equals, this.expected, qt.Commentf("a: %s b: %s", this.a, this.b)) } } gohugoio-hugo-6abdaca/common/paths/pathparser.go000066400000000000000000000442601507671574500222530ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package paths import ( "path" "path/filepath" "runtime" "strings" "sync" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/hugofs/files" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources/kinds" ) const ( identifierBaseof = "baseof" ) // PathParser parses a path into a Path. type PathParser struct { // Maps the language code to its index in the languages/sites slice. LanguageIndex map[string]int // Reports whether the given language is disabled. IsLangDisabled func(string) bool // IsOutputFormat reports whether the given name is a valid output format. // The second argument is optional. IsOutputFormat func(name, ext string) bool // Reports whether the given ext is a content file. IsContentExt func(string) bool } // NormalizePathString returns a normalized path string using the very basic Hugo rules. func NormalizePathStringBasic(s string) string { // All lower case. s = strings.ToLower(s) // Replace spaces with hyphens. s = strings.ReplaceAll(s, " ", "-") return s } // ParseIdentity parses component c with path s into a StringIdentity. func (pp *PathParser) ParseIdentity(c, s string) identity.StringIdentity { p := pp.parsePooled(c, s) defer putPath(p) return identity.StringIdentity(p.IdentifierBase()) } // ParseBaseAndBaseNameNoIdentifier parses component c with path s into a base and a base name without any identifier. func (pp *PathParser) ParseBaseAndBaseNameNoIdentifier(c, s string) (string, string) { p := pp.parsePooled(c, s) defer putPath(p) return p.Base(), p.BaseNameNoIdentifier() } func (pp *PathParser) parsePooled(c, s string) *Path { s = NormalizePathStringBasic(s) p := getPath() p.component = c p, err := pp.doParse(c, s, p) if err != nil { panic(err) } return p } // Parse parses component c with path s into Path using Hugo's content path rules. func (pp *PathParser) Parse(c, s string) *Path { p, err := pp.parse(c, s) if err != nil { panic(err) } return p } func (pp *PathParser) newPath(component string) *Path { p := &Path{} p.reset() p.component = component return p } func (pp *PathParser) parse(component, s string) (*Path, error) { ss := NormalizePathStringBasic(s) p, err := pp.doParse(component, ss, pp.newPath(component)) if err != nil { return nil, err } if s != ss { var err error // Preserve the original case for titles etc. p.unnormalized, err = pp.doParse(component, s, pp.newPath(component)) if err != nil { return nil, err } } else { p.unnormalized = p } return p, nil } func (pp *PathParser) parseIdentifier(component, s string, p *Path, i, lastDot, numDots int, isLast bool) { if p.posContainerHigh != -1 { return } mayHaveLang := numDots > 1 && p.posIdentifierLanguage == -1 && pp.LanguageIndex != nil mayHaveLang = mayHaveLang && (component == files.ComponentFolderContent || component == files.ComponentFolderLayouts) mayHaveOutputFormat := component == files.ComponentFolderLayouts mayHaveKind := p.posIdentifierKind == -1 && mayHaveOutputFormat var mayHaveLayout bool if p.pathType == TypeShortcode { mayHaveLayout = !isLast && component == files.ComponentFolderLayouts } else { mayHaveLayout = component == files.ComponentFolderLayouts } var found bool var high int if len(p.identifiersKnown) > 0 { high = lastDot } else { high = len(p.s) } id := types.LowHigh[string]{Low: i + 1, High: high} sid := p.s[id.Low:id.High] if len(p.identifiersKnown) == 0 { // The first is always the extension. p.identifiersKnown = append(p.identifiersKnown, id) found = true // May also be the output format. if mayHaveOutputFormat && pp.IsOutputFormat(sid, "") { p.posIdentifierOutputFormat = 0 } } else { var langFound bool if mayHaveLang { var disabled bool _, langFound = pp.LanguageIndex[sid] if !langFound { disabled = pp.IsLangDisabled != nil && pp.IsLangDisabled(sid) if disabled { p.disabled = true langFound = true } } found = langFound if langFound { p.identifiersKnown = append(p.identifiersKnown, id) p.posIdentifierLanguage = len(p.identifiersKnown) - 1 } } if !found && mayHaveOutputFormat { // At this point we may already have resolved an output format, // but we need to keep looking for a more specific one, e.g. amp before html. // Use both name and extension to prevent // false positives on the form css.html. if pp.IsOutputFormat(sid, p.Ext()) { found = true p.identifiersKnown = append(p.identifiersKnown, id) p.posIdentifierOutputFormat = len(p.identifiersKnown) - 1 } } if !found && mayHaveKind { if kinds.GetKindMain(sid) != "" { found = true p.identifiersKnown = append(p.identifiersKnown, id) p.posIdentifierKind = len(p.identifiersKnown) - 1 } } if !found && sid == identifierBaseof { found = true p.identifiersKnown = append(p.identifiersKnown, id) p.posIdentifierBaseof = len(p.identifiersKnown) - 1 } if !found && mayHaveLayout { p.identifiersKnown = append(p.identifiersKnown, id) p.posIdentifierLayout = len(p.identifiersKnown) - 1 found = true } if !found { p.identifiersUnknown = append(p.identifiersUnknown, id) } } } func (pp *PathParser) doParse(component, s string, p *Path) (*Path, error) { if runtime.GOOS == "windows" { s = path.Clean(filepath.ToSlash(s)) if s == "." { s = "" } } if s == "" { s = "/" } // Leading slash, no trailing slash. if !strings.HasPrefix(s, "/") { s = "/" + s } if s != "/" && s[len(s)-1] == '/' { s = s[:len(s)-1] } p.s = s slashCount := 0 lastDot := 0 lastSlashIdx := strings.LastIndex(s, "/") numDots := strings.Count(s[lastSlashIdx+1:], ".") if strings.Contains(s, "/_shortcodes/") { p.pathType = TypeShortcode } for i := len(s) - 1; i >= 0; i-- { c := s[i] switch c { case '.': pp.parseIdentifier(component, s, p, i, lastDot, numDots, false) lastDot = i case '/': slashCount++ if p.posContainerHigh == -1 { if lastDot > 0 { pp.parseIdentifier(component, s, p, i, lastDot, numDots, true) } p.posContainerHigh = i + 1 } else if p.posContainerLow == -1 { p.posContainerLow = i + 1 } if i > 0 { p.posSectionHigh = i } } } if len(p.identifiersKnown) > 0 { isContentComponent := p.component == files.ComponentFolderContent || p.component == files.ComponentFolderArchetypes isContent := isContentComponent && pp.IsContentExt(p.Ext()) id := p.identifiersKnown[len(p.identifiersKnown)-1] if id.Low > p.posContainerHigh { b := p.s[p.posContainerHigh : id.Low-1] if isContent { switch b { case "index": p.pathType = TypeLeaf case "_index": p.pathType = TypeBranch default: p.pathType = TypeContentSingle } if slashCount == 2 && p.IsLeafBundle() { p.posSectionHigh = 0 } } else if b == files.NameContentData && files.IsContentDataExt(p.Ext()) { p.pathType = TypeContentData } } } if p.pathType < TypeMarkup && component == files.ComponentFolderLayouts { if p.posIdentifierBaseof != -1 { p.pathType = TypeBaseof } else { pth := p.Path() if strings.Contains(pth, "/_shortcodes/") { p.pathType = TypeShortcode } else if strings.Contains(pth, "/_markup/") { p.pathType = TypeMarkup } else if strings.HasPrefix(pth, "/_partials/") { p.pathType = TypePartial } } } if p.pathType == TypeShortcode && p.posIdentifierLayout != -1 { id := p.identifiersKnown[p.posIdentifierLayout] if id.Low == p.posContainerHigh { // First identifier is shortcode name. p.posIdentifierLayout = -1 } } return p, nil } func ModifyPathBundleTypeResource(p *Path) { if p.IsContent() { p.pathType = TypeContentResource } else { p.pathType = TypeFile } } //go:generate stringer -type Type type Type int const ( // A generic resource, e.g. a JSON file. TypeFile Type = iota // All below are content files. // A resource of a content type with front matter. TypeContentResource // E.g. /blog/my-post.md TypeContentSingle // All below are bundled content files. // Leaf bundles, e.g. /blog/my-post/index.md TypeLeaf // Branch bundles, e.g. /blog/_index.md TypeBranch // Content data file, _content.gotmpl. TypeContentData // Layout types. TypeMarkup TypeShortcode TypePartial TypeBaseof ) type Path struct { // Note: Any additions to this struct should also be added to the pathPool. s string posContainerLow int posContainerHigh int posSectionHigh int component string pathType Type identifiersKnown []types.LowHigh[string] identifiersUnknown []types.LowHigh[string] posIdentifierLanguage int posIdentifierOutputFormat int posIdentifierKind int posIdentifierLayout int posIdentifierBaseof int disabled bool trimLeadingSlash bool unnormalized *Path } var pathPool = &sync.Pool{ New: func() any { p := &Path{} p.reset() return p }, } func getPath() *Path { return pathPool.Get().(*Path) } func putPath(p *Path) { p.reset() pathPool.Put(p) } func (p *Path) reset() { p.s = "" p.posContainerLow = -1 p.posContainerHigh = -1 p.posSectionHigh = -1 p.component = "" p.pathType = 0 p.identifiersKnown = p.identifiersKnown[:0] p.posIdentifierLanguage = -1 p.posIdentifierOutputFormat = -1 p.posIdentifierKind = -1 p.posIdentifierLayout = -1 p.posIdentifierBaseof = -1 p.disabled = false p.trimLeadingSlash = false p.unnormalized = nil } // TrimLeadingSlash returns a copy of the Path with the leading slash removed. func (p Path) TrimLeadingSlash() *Path { p.trimLeadingSlash = true return &p } func (p *Path) norm(s string) string { if p.trimLeadingSlash { s = strings.TrimPrefix(s, "/") } return s } // IdentifierBase satisfies identity.Identity. func (p *Path) IdentifierBase() string { if p.Component() == files.ComponentFolderLayouts { return p.Path() } return p.Base() } // Component returns the component for this path (e.g. "content"). func (p *Path) Component() string { return p.component } // Container returns the base name of the container directory for this path. func (p *Path) Container() string { if p.posContainerLow == -1 { return "" } return p.norm(p.s[p.posContainerLow : p.posContainerHigh-1]) } func (p *Path) String() string { if p == nil { return "" } return p.Path() } // ContainerDir returns the container directory for this path. // For content bundles this will be the parent directory. func (p *Path) ContainerDir() string { if p.posContainerLow == -1 || !p.IsBundle() { return p.Dir() } return p.norm(p.s[:p.posContainerLow-1]) } // Section returns the first path element (section). func (p *Path) Section() string { if p.posSectionHigh <= 0 { return "" } return p.norm(p.s[1:p.posSectionHigh]) } // IsContent returns true if the path is a content file (e.g. mypost.md). // Note that this will also return true for content files in a bundle. func (p *Path) IsContent() bool { return p.Type() >= TypeContentResource && p.Type() <= TypeContentData } // isContentPage returns true if the path is a content file (e.g. mypost.md), // but nof if inside a leaf bundle. func (p *Path) isContentPage() bool { return p.Type() >= TypeContentSingle && p.Type() <= TypeContentData } // Name returns the last element of path. func (p *Path) Name() string { if p.posContainerHigh > 0 { return p.s[p.posContainerHigh:] } return p.s } // Name returns the last element of path without any extension. func (p *Path) NameNoExt() string { if i := p.identifierIndex(0); i != -1 { return p.s[p.posContainerHigh : p.identifiersKnown[i].Low-1] } return p.s[p.posContainerHigh:] } // Name returns the last element of path without any language identifier. func (p *Path) NameNoLang() string { i := p.identifierIndex(p.posIdentifierLanguage) if i == -1 { return p.Name() } return p.s[p.posContainerHigh:p.identifiersKnown[i].Low-1] + p.s[p.identifiersKnown[i].High:] } // BaseNameNoIdentifier returns the logical base name for a resource without any identifier (e.g. no extension). // For bundles this will be the containing directory's name, e.g. "blog". func (p *Path) BaseNameNoIdentifier() string { if p.IsBundle() { return p.Container() } return p.NameNoIdentifier() } // NameNoIdentifier returns the last element of path without any identifier (e.g. no extension). func (p *Path) NameNoIdentifier() string { lowHigh := p.nameLowHigh() return p.s[lowHigh.Low:lowHigh.High] } func (p *Path) nameLowHigh() types.LowHigh[string] { if len(p.identifiersKnown) > 0 { lastID := p.identifiersKnown[len(p.identifiersKnown)-1] if p.posContainerHigh == lastID.Low { // The last identifier is the name. return lastID } return types.LowHigh[string]{ Low: p.posContainerHigh, High: p.identifiersKnown[len(p.identifiersKnown)-1].Low - 1, } } return types.LowHigh[string]{ Low: p.posContainerHigh, High: len(p.s), } } // Dir returns all but the last element of path, typically the path's directory. func (p *Path) Dir() (d string) { if p.posContainerHigh > 0 { d = p.s[:p.posContainerHigh-1] } if d == "" { d = "/" } d = p.norm(d) return } // Path returns the full path. func (p *Path) Path() (d string) { return p.norm(p.s) } // PathNoLeadingSlash returns the full path without the leading slash. func (p *Path) PathNoLeadingSlash() string { return p.Path()[1:] } // Unnormalized returns the Path with the original case preserved. func (p *Path) Unnormalized() *Path { return p.unnormalized } // PathNoLang returns the Path but with any language identifier removed. func (p *Path) PathNoLang() string { return p.base(true, false) } // PathNoIdentifier returns the Path but with any identifier (ext, lang) removed. func (p *Path) PathNoIdentifier() string { return p.base(false, false) } // PathBeforeLangAndOutputFormatAndExt returns the path up to the first identifier that is not a language or output format. func (p *Path) PathBeforeLangAndOutputFormatAndExt() string { if len(p.identifiersKnown) == 0 { return p.norm(p.s) } i := p.identifierIndex(0) if j := p.posIdentifierOutputFormat; i == -1 || (j != -1 && j < i) { i = j } if j := p.posIdentifierLanguage; i == -1 || (j != -1 && j < i) { i = j } if i == -1 { return p.norm(p.s) } id := p.identifiersKnown[i] return p.norm(p.s[:id.Low-1]) } // PathRel returns the path relative to the given owner. func (p *Path) PathRel(owner *Path) string { ob := owner.Base() if !strings.HasSuffix(ob, "/") { ob += "/" } return strings.TrimPrefix(p.Path(), ob) } // BaseRel returns the base path relative to the given owner. func (p *Path) BaseRel(owner *Path) string { ob := owner.Base() if ob == "/" { ob = "" } return p.Base()[len(ob)+1:] } // For content files, Base returns the path without any identifiers (extension, language code etc.). // Any 'index' as the last path element is ignored. // // For other files (Resources), any extension is kept. func (p *Path) Base() string { return p.base(!p.isContentPage(), p.IsBundle()) } // Used in template lookups. // For pages with Type set, we treat that as the section. func (p *Path) BaseReTyped(typ string) (d string) { base := p.Base() if typ == "" || p.Section() == typ { return base } d = "/" + typ if p.posSectionHigh != -1 { d += base[p.posSectionHigh:] } d = p.norm(d) return } // BaseNoLeadingSlash returns the base path without the leading slash. func (p *Path) BaseNoLeadingSlash() string { return p.Base()[1:] } func (p *Path) base(preserveExt, isBundle bool) string { if len(p.identifiersKnown) == 0 { return p.norm(p.s) } if preserveExt && len(p.identifiersKnown) == 1 { // Preserve extension. return p.norm(p.s) } var high int if isBundle { high = p.posContainerHigh - 1 } else { high = p.nameLowHigh().High } if high == 0 { high++ } if !preserveExt { return p.norm(p.s[:high]) } // For txt files etc. we want to preserve the extension. id := p.identifiersKnown[0] return p.norm(p.s[:high] + p.s[id.Low-1:id.High]) } func (p *Path) Ext() string { return p.identifierAsString(0) } func (p *Path) OutputFormat() string { return p.identifierAsString(p.posIdentifierOutputFormat) } func (p *Path) Kind() string { return p.identifierAsString(p.posIdentifierKind) } func (p *Path) Layout() string { return p.identifierAsString(p.posIdentifierLayout) } func (p *Path) Lang() string { return p.identifierAsString(p.posIdentifierLanguage) } func (p *Path) Identifier(i int) string { return p.identifierAsString(i) } func (p *Path) Disabled() bool { return p.disabled } func (p *Path) Identifiers() []string { ids := make([]string, len(p.identifiersKnown)) for i, id := range p.identifiersKnown { ids[i] = p.s[id.Low:id.High] } return ids } func (p *Path) IdentifiersUnknown() []string { ids := make([]string, len(p.identifiersUnknown)) for i, id := range p.identifiersUnknown { ids[i] = p.s[id.Low:id.High] } return ids } func (p *Path) Type() Type { return p.pathType } func (p *Path) IsBundle() bool { return p.pathType >= TypeLeaf && p.pathType <= TypeContentData } func (p *Path) IsBranchBundle() bool { return p.pathType == TypeBranch } func (p *Path) IsLeafBundle() bool { return p.pathType == TypeLeaf } func (p *Path) IsContentData() bool { return p.pathType == TypeContentData } func (p Path) ForType(t Type) *Path { p.pathType = t return &p } func (p *Path) identifierAsString(i int) string { i = p.identifierIndex(i) if i == -1 { return "" } id := p.identifiersKnown[i] return p.s[id.Low:id.High] } func (p *Path) identifierIndex(i int) int { if i < 0 || i >= len(p.identifiersKnown) { return -1 } return i } // HasExt returns true if the Unix styled path has an extension. func HasExt(p string) bool { for i := len(p) - 1; i >= 0; i-- { if p[i] == '.' { return true } if p[i] == '/' { return false } } return false } gohugoio-hugo-6abdaca/common/paths/pathparser_test.go000066400000000000000000000427201507671574500233110ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package paths import ( "path/filepath" "testing" "github.com/gohugoio/hugo/hugofs/files" "github.com/gohugoio/hugo/resources/kinds" qt "github.com/frankban/quicktest" ) var testParser = &PathParser{ LanguageIndex: map[string]int{ "no": 0, "en": 1, "fr": 2, }, IsContentExt: func(ext string) bool { return ext == "md" }, IsOutputFormat: func(name, ext string) bool { switch name { case "html", "amp", "csv", "rss": return true } return false }, } func TestParse(t *testing.T) { c := qt.New(t) tests := []struct { name string path string assert func(c *qt.C, p *Path) }{ { "Basic text file", "/a/b.txt", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b.txt") c.Assert(p.Base(), qt.Equals, "/a/b.txt") c.Assert(p.Container(), qt.Equals, "a") c.Assert(p.Dir(), qt.Equals, "/a") c.Assert(p.Ext(), qt.Equals, "txt") c.Assert(p.IsContent(), qt.IsFalse) }, }, { "Basic text file, upper case", "/A/B.txt", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b.txt") c.Assert(p.NameNoExt(), qt.Equals, "b") c.Assert(p.NameNoIdentifier(), qt.Equals, "b") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "b") c.Assert(p.Base(), qt.Equals, "/a/b.txt") c.Assert(p.Ext(), qt.Equals, "txt") }, }, { "Basic text file, 1 space in dir", "/a b/c.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a-b/c.txt") }, }, { "Basic text file, 2 spaces in dir", "/a b/c.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a--b/c.txt") }, }, { "Basic text file, 1 space in filename", "/a/b c.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b-c.txt") }, }, { "Basic text file, 2 spaces in filename", "/a/b c.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b--c.txt") }, }, { "Basic text file, mixed case and spaces, unnormalized", "/a/Foo BAR.txt", func(c *qt.C, p *Path) { pp := p.Unnormalized() c.Assert(pp, qt.IsNotNil) c.Assert(pp.BaseNameNoIdentifier(), qt.Equals, "Foo BAR") }, }, { "Basic Markdown file", "/a/b/c.md", func(c *qt.C, p *Path) { c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Type(), qt.Equals, TypeContentSingle) c.Assert(p.IsContent(), qt.IsTrue) c.Assert(p.IsLeafBundle(), qt.IsFalse) c.Assert(p.Name(), qt.Equals, "c.md") c.Assert(p.Base(), qt.Equals, "/a/b/c") c.Assert(p.BaseReTyped("foo"), qt.Equals, "/foo/b/c") c.Assert(p.Section(), qt.Equals, "a") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "c") c.Assert(p.Path(), qt.Equals, "/a/b/c.md") c.Assert(p.Dir(), qt.Equals, "/a/b") c.Assert(p.Container(), qt.Equals, "b") c.Assert(p.ContainerDir(), qt.Equals, "/a/b") }, }, { "Content resource", "/a/b.md", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b.md") c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.BaseNoLeadingSlash(), qt.Equals, "a/b") c.Assert(p.Section(), qt.Equals, "a") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "b") // Reclassify it as a content resource. ModifyPathBundleTypeResource(p) c.Assert(p.Type(), qt.Equals, TypeContentResource) c.Assert(p.IsContent(), qt.IsTrue) c.Assert(p.Name(), qt.Equals, "b.md") c.Assert(p.Base(), qt.Equals, "/a/b.md") }, }, { "No ext", "/a/b", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b") c.Assert(p.NameNoExt(), qt.Equals, "b") c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.Ext(), qt.Equals, "") }, }, { "No ext, trailing slash", "/a/b/", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b") c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.Ext(), qt.Equals, "") }, }, { "Identifiers", "/a/b.a.b.no.txt", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b.a.b.no.txt") c.Assert(p.NameNoIdentifier(), qt.Equals, "b.a.b") c.Assert(p.NameNoLang(), qt.Equals, "b.a.b.txt") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"txt", "no"}) c.Assert(p.IdentifiersUnknown(), qt.DeepEquals, []string{"b", "a", "b"}) c.Assert(p.Base(), qt.Equals, "/a/b.a.b.txt") c.Assert(p.BaseNoLeadingSlash(), qt.Equals, "a/b.a.b.txt") c.Assert(p.Path(), qt.Equals, "/a/b.a.b.no.txt") c.Assert(p.PathNoLang(), qt.Equals, "/a/b.a.b.txt") c.Assert(p.Ext(), qt.Equals, "txt") c.Assert(p.PathNoIdentifier(), qt.Equals, "/a/b.a.b") }, }, { "Home branch cundle", "/_index.md", func(c *qt.C, p *Path) { c.Assert(p.Identifiers(), qt.DeepEquals, []string{"md"}) c.Assert(p.IsBranchBundle(), qt.IsTrue) c.Assert(p.IsBundle(), qt.IsTrue) c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.BaseReTyped("foo"), qt.Equals, "/foo") c.Assert(p.Path(), qt.Equals, "/_index.md") c.Assert(p.Container(), qt.Equals, "") c.Assert(p.ContainerDir(), qt.Equals, "/") }, }, { "Index content file in root", "/a/index.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a") c.Assert(p.BaseReTyped("foo"), qt.Equals, "/foo/a") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "a") c.Assert(p.Container(), qt.Equals, "a") c.Assert(p.Container(), qt.Equals, "a") c.Assert(p.ContainerDir(), qt.Equals, "") c.Assert(p.Dir(), qt.Equals, "/a") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.IdentifiersUnknown(), qt.DeepEquals, []string{"index"}) c.Assert(p.Identifiers(), qt.DeepEquals, []string{"md"}) c.Assert(p.IsBranchBundle(), qt.IsFalse) c.Assert(p.IsBundle(), qt.IsTrue) c.Assert(p.IsLeafBundle(), qt.IsTrue) c.Assert(p.Lang(), qt.Equals, "") c.Assert(p.NameNoExt(), qt.Equals, "index") c.Assert(p.NameNoIdentifier(), qt.Equals, "index") c.Assert(p.NameNoLang(), qt.Equals, "index.md") c.Assert(p.Section(), qt.Equals, "") }, }, { "Index content file with lang", "/a/b/index.no.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "b") c.Assert(p.BaseReTyped("foo"), qt.Equals, "/foo/b") c.Assert(p.Container(), qt.Equals, "b") c.Assert(p.ContainerDir(), qt.Equals, "/a") c.Assert(p.Dir(), qt.Equals, "/a/b") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"md", "no"}) c.Assert(p.IsBranchBundle(), qt.IsFalse) c.Assert(p.IsBundle(), qt.IsTrue) c.Assert(p.IsLeafBundle(), qt.IsTrue) c.Assert(p.Lang(), qt.Equals, "no") c.Assert(p.NameNoExt(), qt.Equals, "index.no") c.Assert(p.NameNoIdentifier(), qt.Equals, "index") c.Assert(p.NameNoLang(), qt.Equals, "index.md") c.Assert(p.Path(), qt.Equals, "/a/b/index.no.md") c.Assert(p.PathNoLang(), qt.Equals, "/a/b/index.md") c.Assert(p.Section(), qt.Equals, "a") }, }, { "Index branch content file", "/a/b/_index.no.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "b") c.Assert(p.Container(), qt.Equals, "b") c.Assert(p.ContainerDir(), qt.Equals, "/a") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"md", "no"}) c.Assert(p.IsBranchBundle(), qt.IsTrue) c.Assert(p.IsBundle(), qt.IsTrue) c.Assert(p.IsLeafBundle(), qt.IsFalse) c.Assert(p.NameNoExt(), qt.Equals, "_index.no") c.Assert(p.NameNoLang(), qt.Equals, "_index.md") }, }, { "Index root no slash", "_index.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Name(), qt.Equals, "_index.md") }, }, { "Index root", "/_index.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Name(), qt.Equals, "_index.md") }, }, { "Index first", "/a/_index.md", func(c *qt.C, p *Path) { c.Assert(p.Section(), qt.Equals, "a") }, }, { "Index text file", "/a/b/index.no.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b/index.txt") c.Assert(p.Ext(), qt.Equals, "txt") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"txt", "no"}) c.Assert(p.IsLeafBundle(), qt.IsFalse) c.Assert(p.PathNoIdentifier(), qt.Equals, "/a/b/index") }, }, { "Empty", "", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Ext(), qt.Equals, "") c.Assert(p.Name(), qt.Equals, "") c.Assert(p.Path(), qt.Equals, "/") }, }, { "Slash", "/", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Ext(), qt.Equals, "") c.Assert(p.Name(), qt.Equals, "") }, }, { "Trim Leading Slash bundle", "foo/bar/index.no.md", func(c *qt.C, p *Path) { c.Assert(p.Path(), qt.Equals, "/foo/bar/index.no.md") pp := p.TrimLeadingSlash() c.Assert(pp.Path(), qt.Equals, "foo/bar/index.no.md") c.Assert(pp.PathNoLang(), qt.Equals, "foo/bar/index.md") c.Assert(pp.Base(), qt.Equals, "foo/bar") c.Assert(pp.Dir(), qt.Equals, "foo/bar") c.Assert(pp.ContainerDir(), qt.Equals, "foo") c.Assert(pp.Container(), qt.Equals, "bar") c.Assert(pp.BaseNameNoIdentifier(), qt.Equals, "bar") }, }, { "Trim Leading Slash file", "foo/bar.txt", func(c *qt.C, p *Path) { c.Assert(p.Path(), qt.Equals, "/foo/bar.txt") pp := p.TrimLeadingSlash() c.Assert(pp.Path(), qt.Equals, "foo/bar.txt") c.Assert(pp.PathNoLang(), qt.Equals, "foo/bar.txt") c.Assert(pp.Base(), qt.Equals, "foo/bar.txt") c.Assert(pp.Dir(), qt.Equals, "foo") c.Assert(pp.ContainerDir(), qt.Equals, "foo") c.Assert(pp.Container(), qt.Equals, "foo") c.Assert(pp.BaseNameNoIdentifier(), qt.Equals, "bar") }, }, { "File separator", filepath.FromSlash("/a/b/c.txt"), func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b/c.txt") c.Assert(p.Ext(), qt.Equals, "txt") c.Assert(p.Name(), qt.Equals, "c.txt") c.Assert(p.Path(), qt.Equals, "/a/b/c.txt") }, }, { "Content data file gotmpl", "/a/b/_content.gotmpl", func(c *qt.C, p *Path) { c.Assert(p.Path(), qt.Equals, "/a/b/_content.gotmpl") c.Assert(p.Ext(), qt.Equals, "gotmpl") c.Assert(p.IsContentData(), qt.IsTrue) }, }, { "Content data file yaml", "/a/b/_content.yaml", func(c *qt.C, p *Path) { c.Assert(p.IsContentData(), qt.IsFalse) }, }, } for _, test := range tests { c.Run(test.name, func(c *qt.C) { if test.name != "Home branch cundle" { // return } test.assert(c, testParser.Parse(files.ComponentFolderContent, test.path)) }) } } func TestParseLayouts(t *testing.T) { c := qt.New(t) tests := []struct { name string path string assert func(c *qt.C, p *Path) }{ { "Basic", "/list.html", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/list.html") c.Assert(p.OutputFormat(), qt.Equals, "html") }, }, { "Lang", "/list.no.html", func(c *qt.C, p *Path) { c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "no", "list"}) c.Assert(p.IdentifiersUnknown(), qt.DeepEquals, []string{}) c.Assert(p.Base(), qt.Equals, "/list.html") c.Assert(p.Lang(), qt.Equals, "no") }, }, { "Kind", "/section.no.html", func(c *qt.C, p *Path) { c.Assert(p.Kind(), qt.Equals, kinds.KindSection) c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "no", "section"}) c.Assert(p.IdentifiersUnknown(), qt.DeepEquals, []string{}) c.Assert(p.Base(), qt.Equals, "/section.html") c.Assert(p.Lang(), qt.Equals, "no") }, }, { "Layout", "/list.section.no.html", func(c *qt.C, p *Path) { c.Assert(p.Layout(), qt.Equals, "list") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "no", "section", "list"}) c.Assert(p.IdentifiersUnknown(), qt.DeepEquals, []string{}) c.Assert(p.Base(), qt.Equals, "/list.html") c.Assert(p.Lang(), qt.Equals, "no") }, }, { "Layout multiple", "/mylayout.list.section.no.html", func(c *qt.C, p *Path) { c.Assert(p.Layout(), qt.Equals, "mylayout") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "no", "section", "list", "mylayout"}) c.Assert(p.IdentifiersUnknown(), qt.DeepEquals, []string{}) c.Assert(p.Base(), qt.Equals, "/mylayout.html") c.Assert(p.Lang(), qt.Equals, "no") }, }, { "Layout shortcode", "/_shortcodes/myshort.list.no.html", func(c *qt.C, p *Path) { c.Assert(p.Layout(), qt.Equals, "list") }, }, { "Layout baseof", "/baseof.list.no.html", func(c *qt.C, p *Path) { c.Assert(p.Layout(), qt.Equals, "list") }, }, { "Lang and output format", "/list.no.amp.not.html", func(c *qt.C, p *Path) { c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "not", "amp", "no", "list"}) c.Assert(p.OutputFormat(), qt.Equals, "amp") c.Assert(p.Ext(), qt.Equals, "html") c.Assert(p.Lang(), qt.Equals, "no") c.Assert(p.Base(), qt.Equals, "/list.html") }, }, { "Term", "/term.html", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/term.html") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "term"}) c.Assert(p.PathNoIdentifier(), qt.Equals, "/term") c.Assert(p.PathBeforeLangAndOutputFormatAndExt(), qt.Equals, "/term") c.Assert(p.Lang(), qt.Equals, "") c.Assert(p.Kind(), qt.Equals, "term") c.Assert(p.OutputFormat(), qt.Equals, "html") }, }, { "Shortcode with layout", "/_shortcodes/myshortcode.list.html", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/_shortcodes/myshortcode.html") c.Assert(p.Type(), qt.Equals, TypeShortcode) c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "list"}) c.Assert(p.Layout(), qt.Equals, "list") c.Assert(p.PathNoIdentifier(), qt.Equals, "/_shortcodes/myshortcode") c.Assert(p.PathBeforeLangAndOutputFormatAndExt(), qt.Equals, "/_shortcodes/myshortcode.list") c.Assert(p.Lang(), qt.Equals, "") c.Assert(p.Kind(), qt.Equals, "") c.Assert(p.OutputFormat(), qt.Equals, "html") }, }, { "Sub dir", "/pages/home.html", func(c *qt.C, p *Path) { c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "home"}) c.Assert(p.Lang(), qt.Equals, "") c.Assert(p.Kind(), qt.Equals, "home") c.Assert(p.OutputFormat(), qt.Equals, "html") c.Assert(p.Dir(), qt.Equals, "/pages") }, }, { "Baseof", "/pages/baseof.list.section.fr.amp.html", func(c *qt.C, p *Path) { c.Assert(p.Identifiers(), qt.DeepEquals, []string{"html", "amp", "fr", "section", "list", "baseof"}) c.Assert(p.IdentifiersUnknown(), qt.DeepEquals, []string{}) c.Assert(p.Kind(), qt.Equals, kinds.KindSection) c.Assert(p.Lang(), qt.Equals, "fr") c.Assert(p.OutputFormat(), qt.Equals, "amp") c.Assert(p.Dir(), qt.Equals, "/pages") c.Assert(p.NameNoIdentifier(), qt.Equals, "baseof") c.Assert(p.Type(), qt.Equals, TypeBaseof) c.Assert(p.IdentifierBase(), qt.Equals, "/pages/baseof.list.section.fr.amp.html") }, }, { "Markup", "/_markup/render-link.html", func(c *qt.C, p *Path) { c.Assert(p.Type(), qt.Equals, TypeMarkup) }, }, { "Markup nested", "/foo/_markup/render-link.html", func(c *qt.C, p *Path) { c.Assert(p.Type(), qt.Equals, TypeMarkup) }, }, { "Shortcode", "/_shortcodes/myshortcode.html", func(c *qt.C, p *Path) { c.Assert(p.Type(), qt.Equals, TypeShortcode) }, }, { "Shortcode nested", "/foo/_shortcodes/myshortcode.html", func(c *qt.C, p *Path) { c.Assert(p.Type(), qt.Equals, TypeShortcode) }, }, { "Shortcode nested sub", "/foo/_shortcodes/foo/myshortcode.html", func(c *qt.C, p *Path) { c.Assert(p.Type(), qt.Equals, TypeShortcode) }, }, { "Partials", "/_partials/foo.bar", func(c *qt.C, p *Path) { c.Assert(p.Type(), qt.Equals, TypePartial) }, }, { "Shortcode lang in root", "/_shortcodes/no.html", func(c *qt.C, p *Path) { c.Assert(p.Type(), qt.Equals, TypeShortcode) c.Assert(p.Lang(), qt.Equals, "") c.Assert(p.NameNoIdentifier(), qt.Equals, "no") }, }, { "Shortcode lang layout", "/_shortcodes/myshortcode.no.html", func(c *qt.C, p *Path) { c.Assert(p.Type(), qt.Equals, TypeShortcode) c.Assert(p.Lang(), qt.Equals, "no") c.Assert(p.Layout(), qt.Equals, "") c.Assert(p.NameNoIdentifier(), qt.Equals, "myshortcode") }, }, } for _, test := range tests { c.Run(test.name, func(c *qt.C) { if test.name != "Shortcode lang layout" { // return } test.assert(c, testParser.Parse(files.ComponentFolderLayouts, test.path)) }) } } func TestHasExt(t *testing.T) { c := qt.New(t) c.Assert(HasExt("/a/b/c.txt"), qt.IsTrue) c.Assert(HasExt("/a/b.c/d.txt"), qt.IsTrue) c.Assert(HasExt("/a/b/c"), qt.IsFalse) c.Assert(HasExt("/a/b.c/d"), qt.IsFalse) } func BenchmarkParseIdentity(b *testing.B) { for i := 0; i < b.N; i++ { testParser.ParseIdentity(files.ComponentFolderAssets, "/a/b.css") } } gohugoio-hugo-6abdaca/common/paths/paths_integration_test.go000066400000000000000000000055311507671574500246610ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package paths_test import ( "testing" "github.com/gohugoio/hugo/hugolib" ) func TestRemovePathAccents(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term"] defaultContentLanguage = "en" defaultContentLanguageInSubdir = true [languages] [languages.en] weight = 1 [languages.fr] weight = 2 removePathAccents = true -- content/διακριτικός.md -- -- content/διακριτικός.fr.md -- -- layouts/_default/single.html -- {{ .Language.Lang }}|Single. -- layouts/_default/list.html -- List ` b := hugolib.Test(t, files) b.AssertFileContent("public/en/διακριτικός/index.html", "en|Single") b.AssertFileContent("public/fr/διακριτικος/index.html", "fr|Single") } func TestDisablePathToLower(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term"] defaultContentLanguage = "en" defaultContentLanguageInSubdir = true [languages] [languages.en] weight = 1 [languages.fr] weight = 2 disablePathToLower = true -- content/MySection/MyPage.md -- -- content/MySection/MyPage.fr.md -- -- content/MySection/MyBundle/index.md -- -- content/MySection/MyBundle/index.fr.md -- -- layouts/_default/single.html -- {{ .Language.Lang }}|Single. -- layouts/_default/list.html -- {{ .Language.Lang }}|List. ` b := hugolib.Test(t, files) b.AssertFileContent("public/en/mysection/index.html", "en|List") b.AssertFileContent("public/en/mysection/mypage/index.html", "en|Single") b.AssertFileContent("public/fr/MySection/index.html", "fr|List") b.AssertFileContent("public/fr/MySection/MyPage/index.html", "fr|Single") b.AssertFileContent("public/en/mysection/mybundle/index.html", "en|Single") b.AssertFileContent("public/fr/MySection/MyBundle/index.html", "fr|Single") } func TestIssue13596(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['home','rss','section','sitemap','taxonomy','term'] -- content/p1/index.md -- --- title: p1 --- -- content/p1/a.1.txt -- -- content/p1/a.2.txt -- -- layouts/all.html -- {{ range .Resources.Match "*" }}{{ .Name }}|{{ end }} ` b := hugolib.Test(t, files) b.AssertFileContent("public/p1/index.html", "a.1.txt|a.2.txt|") b.AssertFileExists("public/p1/a.1.txt", true) b.AssertFileExists("public/p1/a.2.txt", true) // fails } gohugoio-hugo-6abdaca/common/paths/type_string.go000066400000000000000000000016221507671574500224440ustar00rootroot00000000000000// Code generated by "stringer -type Type"; DO NOT EDIT. package paths import "strconv" func _() { // An "invalid array index" compiler error signifies that the constant values have changed. // Re-run the stringer command to generate them again. var x [1]struct{} _ = x[TypeFile-0] _ = x[TypeContentResource-1] _ = x[TypeContentSingle-2] _ = x[TypeLeaf-3] _ = x[TypeBranch-4] _ = x[TypeContentData-5] _ = x[TypeMarkup-6] _ = x[TypeShortcode-7] _ = x[TypePartial-8] _ = x[TypeBaseof-9] } const _Type_name = "TypeFileTypeContentResourceTypeContentSingleTypeLeafTypeBranchTypeContentDataTypeMarkupTypeShortcodeTypePartialTypeBaseof" var _Type_index = [...]uint8{0, 8, 27, 44, 52, 62, 77, 87, 100, 111, 121} func (i Type) String() string { if i < 0 || i >= Type(len(_Type_index)-1) { return "Type(" + strconv.FormatInt(int64(i), 10) + ")" } return _Type_name[_Type_index[i]:_Type_index[i+1]] } gohugoio-hugo-6abdaca/common/paths/url.go000066400000000000000000000146431507671574500207060ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package paths import ( "fmt" "net/url" "path" "path/filepath" "runtime" "strings" ) type pathBridge struct{} func (pathBridge) Base(in string) string { return path.Base(in) } func (pathBridge) Clean(in string) string { return path.Clean(in) } func (pathBridge) Dir(in string) string { return path.Dir(in) } func (pathBridge) Ext(in string) string { return path.Ext(in) } func (pathBridge) Join(elem ...string) string { return path.Join(elem...) } func (pathBridge) Separator() string { return "/" } var pb pathBridge // MakePermalink combines base URL with content path to create full URL paths. // Example // // base: http://spf13.com/ // path: post/how-i-blog // result: http://spf13.com/post/how-i-blog func MakePermalink(host, plink string) *url.URL { base, err := url.Parse(host) if err != nil { panic(err) } p, err := url.Parse(plink) if err != nil { panic(err) } if p.Host != "" { panic(fmt.Errorf("can't make permalink from absolute link %q", plink)) } base.Path = path.Join(base.Path, p.Path) base.Fragment = p.Fragment base.RawQuery = p.RawQuery // path.Join will strip off the last /, so put it back if it was there. hadTrailingSlash := (plink == "" && strings.HasSuffix(host, "/")) || strings.HasSuffix(p.Path, "/") if hadTrailingSlash && !strings.HasSuffix(base.Path, "/") { base.Path = base.Path + "/" } return base } // AddContextRoot adds the context root to an URL if it's not already set. // For relative URL entries on sites with a base url with a context root set (i.e. http://example.com/mysite), // relative URLs must not include the context root if canonifyURLs is enabled. But if it's disabled, it must be set. func AddContextRoot(baseURL, relativePath string) string { url, err := url.Parse(baseURL) if err != nil { panic(err) } newPath := path.Join(url.Path, relativePath) // path strips trailing slash, ignore root path. if newPath != "/" && strings.HasSuffix(relativePath, "/") { newPath += "/" } return newPath } // URLizeAn // PrettifyURL takes a URL string and returns a semantic, clean URL. func PrettifyURL(in string) string { x := PrettifyURLPath(in) if path.Base(x) == "index.html" { return path.Dir(x) } if in == "" { return "/" } return x } // PrettifyURLPath takes a URL path to a content and converts it // to enable pretty URLs. // // /section/name.html becomes /section/name/index.html // /section/name/ becomes /section/name/index.html // /section/name/index.html becomes /section/name/index.html func PrettifyURLPath(in string) string { return prettifyPath(in, pb) } // Uglify does the opposite of PrettifyURLPath(). // // /section/name/index.html becomes /section/name.html // /section/name/ becomes /section/name.html // /section/name.html becomes /section/name.html func Uglify(in string) string { if path.Ext(in) == "" { if len(in) < 2 { return "/" } // /section/name/ -> /section/name.html return path.Clean(in) + ".html" } name, ext := fileAndExt(in, pb) if name == "index" { // /section/name/index.html -> /section/name.html d := path.Dir(in) if len(d) > 1 { return d + ext } return in } // /.xml -> /index.xml if name == "" { return path.Dir(in) + "index" + ext } // /section/name.html -> /section/name.html return path.Clean(in) } // URLEscape escapes unicode letters. func URLEscape(uri string) string { // escape unicode letters u, err := url.Parse(uri) if err != nil { panic(err) } return u.String() } // TrimExt trims the extension from a path.. func TrimExt(in string) string { return strings.TrimSuffix(in, path.Ext(in)) } // From https://github.com/golang/go/blob/e0c76d95abfc1621259864adb3d101cf6f1f90fc/src/cmd/go/internal/web/url.go#L45 func UrlFromFilename(filename string) (*url.URL, error) { if !filepath.IsAbs(filename) { return nil, fmt.Errorf("filepath must be absolute") } // If filename has a Windows volume name, convert the volume to a host and prefix // per https://blogs.msdn.microsoft.com/ie/2006/12/06/file-uris-in-windows/. if vol := filepath.VolumeName(filename); vol != "" { if strings.HasPrefix(vol, `\\`) { filename = filepath.ToSlash(filename[2:]) i := strings.IndexByte(filename, '/') if i < 0 { // A degenerate case. // \\host.example.com (without a share name) // becomes // file://host.example.com/ return &url.URL{ Scheme: "file", Host: filename, Path: "/", }, nil } // \\host.example.com\Share\path\to\file // becomes // file://host.example.com/Share/path/to/file return &url.URL{ Scheme: "file", Host: filename[:i], Path: filepath.ToSlash(filename[i:]), }, nil } // C:\path\to\file // becomes // file:///C:/path/to/file return &url.URL{ Scheme: "file", Path: "/" + filepath.ToSlash(filename), }, nil } // /path/to/file // becomes // file:///path/to/file return &url.URL{ Scheme: "file", Path: filepath.ToSlash(filename), }, nil } // UrlStringToFilename converts the URL s to a filename. // If ParseRequestURI fails, the input is just converted to OS specific slashes and returned. func UrlStringToFilename(s string) (string, bool) { u, err := url.ParseRequestURI(s) if err != nil { return filepath.FromSlash(s), false } p := u.Path if p == "" { p, _ = url.QueryUnescape(u.Opaque) return filepath.FromSlash(p), false } if runtime.GOOS != "windows" { return p, true } if len(p) == 0 || p[0] != '/' { return filepath.FromSlash(p), false } p = filepath.FromSlash(p) if len(u.Host) == 1 { // file://c/Users/... return strings.ToUpper(u.Host) + ":" + p, true } if u.Host != "" && u.Host != "localhost" { if filepath.VolumeName(u.Host) != "" { return "", false } return `\\` + u.Host + p, true } if vol := filepath.VolumeName(p[1:]); vol == "" || strings.HasPrefix(vol, `\\`) { return "", false } return p[1:], true } gohugoio-hugo-6abdaca/common/paths/url_test.go000066400000000000000000000076231507671574500217450ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package paths import ( "testing" qt "github.com/frankban/quicktest" ) func TestMakePermalink(t *testing.T) { type test struct { host, link, output string } data := []test{ {"http://abc.com/foo", "post/bar", "http://abc.com/foo/post/bar"}, {"http://abc.com/foo/", "post/bar", "http://abc.com/foo/post/bar"}, {"http://abc.com", "post/bar", "http://abc.com/post/bar"}, {"http://abc.com", "bar", "http://abc.com/bar"}, {"http://abc.com/foo/bar", "post/bar", "http://abc.com/foo/bar/post/bar"}, {"http://abc.com/foo/bar", "post/bar/", "http://abc.com/foo/bar/post/bar/"}, {"http://abc.com/foo", "post/bar?a=b#c", "http://abc.com/foo/post/bar?a=b#c"}, } for i, d := range data { output := MakePermalink(d.host, d.link).String() if d.output != output { t.Errorf("Test #%d failed. Expected %q got %q", i, d.output, output) } } } func TestAddContextRoot(t *testing.T) { tests := []struct { baseURL string url string expected string }{ {"http://example.com/sub/", "/foo", "/sub/foo"}, {"http://example.com/sub/", "/foo/index.html", "/sub/foo/index.html"}, {"http://example.com/sub1/sub2", "/foo", "/sub1/sub2/foo"}, {"http://example.com", "/foo", "/foo"}, // cannot guess that the context root is already added int the example below {"http://example.com/sub/", "/sub/foo", "/sub/sub/foo"}, {"http://example.com/тря", "/трям/", "/тря/трям/"}, {"http://example.com", "/", "/"}, {"http://example.com/bar", "//", "/bar/"}, } for _, test := range tests { output := AddContextRoot(test.baseURL, test.url) if output != test.expected { t.Errorf("Expected %#v, got %#v\n", test.expected, output) } } } func TestPretty(t *testing.T) { c := qt.New(t) c.Assert("/section/name/index.html", qt.Equals, PrettifyURLPath("/section/name.html")) c.Assert("/section/sub/name/index.html", qt.Equals, PrettifyURLPath("/section/sub/name.html")) c.Assert("/section/name/index.html", qt.Equals, PrettifyURLPath("/section/name/")) c.Assert("/section/name/index.html", qt.Equals, PrettifyURLPath("/section/name/index.html")) c.Assert("/index.html", qt.Equals, PrettifyURLPath("/index.html")) c.Assert("/name/index.xml", qt.Equals, PrettifyURLPath("/name.xml")) c.Assert("/", qt.Equals, PrettifyURLPath("/")) c.Assert("/", qt.Equals, PrettifyURLPath("")) c.Assert("/section/name", qt.Equals, PrettifyURL("/section/name.html")) c.Assert("/section/sub/name", qt.Equals, PrettifyURL("/section/sub/name.html")) c.Assert("/section/name", qt.Equals, PrettifyURL("/section/name/")) c.Assert("/section/name", qt.Equals, PrettifyURL("/section/name/index.html")) c.Assert("/", qt.Equals, PrettifyURL("/index.html")) c.Assert("/name/index.xml", qt.Equals, PrettifyURL("/name.xml")) c.Assert("/", qt.Equals, PrettifyURL("/")) c.Assert("/", qt.Equals, PrettifyURL("")) } func TestUgly(t *testing.T) { c := qt.New(t) c.Assert("/section/name.html", qt.Equals, Uglify("/section/name.html")) c.Assert("/section/sub/name.html", qt.Equals, Uglify("/section/sub/name.html")) c.Assert("/section/name.html", qt.Equals, Uglify("/section/name/")) c.Assert("/section/name.html", qt.Equals, Uglify("/section/name/index.html")) c.Assert("/index.html", qt.Equals, Uglify("/index.html")) c.Assert("/name.xml", qt.Equals, Uglify("/name.xml")) c.Assert("/", qt.Equals, Uglify("/")) c.Assert("/", qt.Equals, Uglify("")) } gohugoio-hugo-6abdaca/common/predicate/000077500000000000000000000000001507671574500203665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/predicate/predicate.go000066400000000000000000000037201507671574500226570ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package predicate // P is a predicate function that tests whether a value of type T satisfies some condition. type P[T any] func(T) bool // And returns a predicate that is a short-circuiting logical AND of this and the given predicates. func (p P[T]) And(ps ...P[T]) P[T] { return func(v T) bool { for _, pp := range ps { if !pp(v) { return false } } if p == nil { return true } return p(v) } } // Or returns a predicate that is a short-circuiting logical OR of this and the given predicates. func (p P[T]) Or(ps ...P[T]) P[T] { return func(v T) bool { for _, pp := range ps { if pp(v) { return true } } if p == nil { return false } return p(v) } } // Negate returns a predicate that is a logical negation of this predicate. func (p P[T]) Negate() P[T] { return func(v T) bool { return !p(v) } } // Filter returns a new slice holding only the elements of s that satisfy p. // Filter modifies the contents of the slice s and returns the modified slice, which may have a smaller length. func (p P[T]) Filter(s []T) []T { var n int for _, v := range s { if p(v) { s[n] = v n++ } } return s[:n] } // FilterCopy returns a new slice holding only the elements of s that satisfy p. func (p P[T]) FilterCopy(s []T) []T { var result []T for _, v := range s { if p(v) { result = append(result, v) } } return result } gohugoio-hugo-6abdaca/common/predicate/predicate_test.go000066400000000000000000000035641507671574500237240ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package predicate_test import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/predicate" ) func TestAdd(t *testing.T) { c := qt.New(t) var p predicate.P[int] = intP1 c.Assert(p(1), qt.IsTrue) c.Assert(p(2), qt.IsFalse) neg := p.Negate() c.Assert(neg(1), qt.IsFalse) c.Assert(neg(2), qt.IsTrue) and := p.And(intP2) c.Assert(and(1), qt.IsFalse) c.Assert(and(2), qt.IsFalse) c.Assert(and(10), qt.IsTrue) or := p.Or(intP2) c.Assert(or(1), qt.IsTrue) c.Assert(or(2), qt.IsTrue) c.Assert(or(10), qt.IsTrue) c.Assert(or(11), qt.IsFalse) } func TestFilter(t *testing.T) { c := qt.New(t) var p predicate.P[int] = intP1 p = p.Or(intP2) ints := []int{1, 2, 3, 4, 1, 6, 7, 8, 2} c.Assert(p.Filter(ints), qt.DeepEquals, []int{1, 2, 1, 2}) c.Assert(ints, qt.DeepEquals, []int{1, 2, 1, 2, 1, 6, 7, 8, 2}) } func TestFilterCopy(t *testing.T) { c := qt.New(t) var p predicate.P[int] = intP1 p = p.Or(intP2) ints := []int{1, 2, 3, 4, 1, 6, 7, 8, 2} c.Assert(p.FilterCopy(ints), qt.DeepEquals, []int{1, 2, 1, 2}) c.Assert(ints, qt.DeepEquals, []int{1, 2, 3, 4, 1, 6, 7, 8, 2}) } var intP1 = func(i int) bool { if i == 10 { return true } return i == 1 } var intP2 = func(i int) bool { if i == 10 { return true } return i == 2 } gohugoio-hugo-6abdaca/common/rungroup/000077500000000000000000000000001507671574500203075ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/rungroup/rungroup.go000066400000000000000000000040011507671574500225120ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package rungroup import ( "context" "golang.org/x/sync/errgroup" ) // Group is a group of workers that can be used to enqueue work and wait for // them to finish. type Group[T any] interface { Enqueue(T) error Wait() error } type runGroup[T any] struct { ctx context.Context g *errgroup.Group ch chan T } // Config is the configuration for a new Group. type Config[T any] struct { NumWorkers int Handle func(context.Context, T) error } // Run creates a new Group with the given configuration. func Run[T any](ctx context.Context, cfg Config[T]) Group[T] { if cfg.NumWorkers <= 0 { cfg.NumWorkers = 1 } if cfg.Handle == nil { panic("Handle must be set") } g, ctx := errgroup.WithContext(ctx) // Buffered for performance. ch := make(chan T, cfg.NumWorkers) for range cfg.NumWorkers { g.Go(func() error { for { select { case <-ctx.Done(): return nil case v, ok := <-ch: if !ok { return nil } if err := cfg.Handle(ctx, v); err != nil { return err } } } }) } return &runGroup[T]{ ctx: ctx, g: g, ch: ch, } } // Enqueue enqueues a new item to be handled by the workers. func (r *runGroup[T]) Enqueue(t T) error { select { case <-r.ctx.Done(): return nil case r.ch <- t: } return nil } // Wait waits for all workers to finish and returns the first error. func (r *runGroup[T]) Wait() error { close(r.ch) return r.g.Wait() } gohugoio-hugo-6abdaca/common/rungroup/rungroup_test.go000066400000000000000000000020251507671574500235550ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package rungroup import ( "context" "testing" qt "github.com/frankban/quicktest" ) func TestNew(t *testing.T) { c := qt.New(t) var result int adder := func(ctx context.Context, i int) error { result += i return nil } g := Run[int]( context.Background(), Config[int]{ Handle: adder, }, ) c.Assert(g, qt.IsNotNil) g.Enqueue(32) g.Enqueue(33) c.Assert(g.Wait(), qt.IsNil) c.Assert(result, qt.Equals, 65) } gohugoio-hugo-6abdaca/common/tasks/000077500000000000000000000000001507671574500175535ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/tasks/tasks.go000066400000000000000000000061351507671574500212340ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package tasks import ( "sync" "time" ) // RunEvery runs a function at intervals defined by the function itself. // Functions can be added and removed while running. type RunEvery struct { // Any error returned from the function will be passed to this function. HandleError func(string, error) // If set, the function will be run immediately. RunImmediately bool // The named functions to run. funcs map[string]*Func mu sync.Mutex started bool closed bool quit chan struct{} } type Func struct { // The shortest interval between each run. IntervalLow time.Duration // The longest interval between each run. IntervalHigh time.Duration // The function to run. F func(interval time.Duration) (time.Duration, error) interval time.Duration last time.Time } func (r *RunEvery) Start() error { if r.started { return nil } r.started = true r.quit = make(chan struct{}) go func() { if r.RunImmediately { r.run() } ticker := time.NewTicker(500 * time.Millisecond) defer ticker.Stop() for { select { case <-r.quit: return case <-ticker.C: r.run() } } }() return nil } // Close stops the RunEvery from running. func (r *RunEvery) Close() error { if r.closed { return nil } r.closed = true if r.quit != nil { close(r.quit) } return nil } // Add adds a function to the RunEvery. func (r *RunEvery) Add(name string, f Func) { r.mu.Lock() defer r.mu.Unlock() if r.funcs == nil { r.funcs = make(map[string]*Func) } if f.IntervalLow == 0 { f.IntervalLow = 500 * time.Millisecond } if f.IntervalHigh <= f.IntervalLow { f.IntervalHigh = 20 * time.Second } start := max(f.IntervalHigh/3, f.IntervalLow) f.interval = start f.last = time.Now() r.funcs[name] = &f } // Remove removes a function from the RunEvery. func (r *RunEvery) Remove(name string) { r.mu.Lock() defer r.mu.Unlock() delete(r.funcs, name) } // Has returns whether the RunEvery has a function with the given name. func (r *RunEvery) Has(name string) bool { r.mu.Lock() defer r.mu.Unlock() _, found := r.funcs[name] return found } func (r *RunEvery) run() { r.mu.Lock() defer r.mu.Unlock() for name, f := range r.funcs { if time.Now().Before(f.last.Add(f.interval)) { continue } f.last = time.Now() interval, err := f.F(f.interval) if err != nil && r.HandleError != nil { r.HandleError(name, err) } if interval < f.IntervalLow { interval = f.IntervalLow } if interval > f.IntervalHigh { interval = f.IntervalHigh } f.interval = interval } } gohugoio-hugo-6abdaca/common/terminal/000077500000000000000000000000001507671574500202415ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/terminal/colors.go000066400000000000000000000046651507671574500221040ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package terminal contains helper for the terminal, such as coloring output. package terminal import ( "fmt" "io" "os" "strings" isatty "github.com/mattn/go-isatty" ) const ( errorColor = "\033[1;31m%s\033[0m" warningColor = "\033[0;33m%s\033[0m" noticeColor = "\033[1;36m%s\033[0m" ) // PrintANSIColors returns false if NO_COLOR env variable is set, // else IsTerminal(f). func PrintANSIColors(f *os.File) bool { if os.Getenv("NO_COLOR") != "" { return false } return IsTerminal(f) } // IsTerminal return true if the file descriptor is terminal and the TERM // environment variable isn't a dumb one. func IsTerminal(f *os.File) bool { fd := f.Fd() return os.Getenv("TERM") != "dumb" && (isatty.IsTerminal(fd) || isatty.IsCygwinTerminal(fd)) } // Notice colorizes the string in a noticeable color. func Notice(s string) string { return colorize(s, noticeColor) } // Error colorizes the string in a colour that grabs attention. func Error(s string) string { return colorize(s, errorColor) } // Warning colorizes the string in a colour that warns. func Warning(s string) string { return colorize(s, warningColor) } // colorize s in color. func colorize(s, color string) string { s = fmt.Sprintf(color, doublePercent(s)) return singlePercent(s) } func doublePercent(str string) string { return strings.Replace(str, "%", "%%", -1) } func singlePercent(str string) string { return strings.Replace(str, "%%", "%", -1) } type ProgressState int const ( ProgressHidden ProgressState = iota ProgressNormal ProgressError ProgressIntermediate ProgressWarning ) // ReportProgress writes OSC 9;4 sequence to w. func ReportProgress(w io.Writer, state ProgressState, progress float64) { if progress < 0 { progress = 0.0 } if progress > 1 { progress = 1.0 } pi := int(progress * 100) fmt.Fprintf(w, "\033]9;4;%d;%d\007", state, pi) } gohugoio-hugo-6abdaca/common/text/000077500000000000000000000000001507671574500174125ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/text/position.go000066400000000000000000000052011507671574500216030ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package text import ( "fmt" "os" "strings" "github.com/gohugoio/hugo/common/terminal" ) // Positioner represents a thing that knows its position in a text file or stream, // typically an error. type Positioner interface { // Position returns the current position. // Useful in error logging, e.g. {{ errorf "error in code block: %s" .Position }}. Position() Position } // Position holds a source position in a text file or stream. type Position struct { Filename string // filename, if any Offset int // byte offset, starting at 0. It's set to -1 if not provided. LineNumber int // line number, starting at 1 ColumnNumber int // column number, starting at 1 (character count per line) } func (pos Position) String() string { if pos.Filename == "" { pos.Filename = "" } return positionStringFormatfunc(pos) } // IsValid returns true if line number is > 0. func (pos Position) IsValid() bool { return pos.LineNumber > 0 } var positionStringFormatfunc func(p Position) string func createPositionStringFormatter(formatStr string) func(p Position) string { if formatStr == "" { formatStr = "\":file::line::col\"" } identifiers := []string{":file", ":line", ":col"} var identifiersFound []string for i := range formatStr { for _, id := range identifiers { if strings.HasPrefix(formatStr[i:], id) { identifiersFound = append(identifiersFound, id) } } } replacer := strings.NewReplacer(":file", "%s", ":line", "%d", ":col", "%d") format := replacer.Replace(formatStr) f := func(pos Position) string { args := make([]any, len(identifiersFound)) for i, id := range identifiersFound { switch id { case ":file": args[i] = pos.Filename case ":line": args[i] = pos.LineNumber case ":col": args[i] = pos.ColumnNumber } } msg := fmt.Sprintf(format, args...) if terminal.PrintANSIColors(os.Stdout) { return terminal.Notice(msg) } return msg } return f } func init() { positionStringFormatfunc = createPositionStringFormatter(os.Getenv("HUGO_FILE_LOG_FORMAT")) } gohugoio-hugo-6abdaca/common/text/position_test.go000066400000000000000000000023621507671574500226470ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package text import ( "testing" qt "github.com/frankban/quicktest" ) func TestPositionStringFormatter(t *testing.T) { c := qt.New(t) pos := Position{Filename: "/my/file.txt", LineNumber: 12, ColumnNumber: 13, Offset: 14} c.Assert(createPositionStringFormatter(":file|:col|:line")(pos), qt.Equals, "/my/file.txt|13|12") c.Assert(createPositionStringFormatter(":col|:file|:line")(pos), qt.Equals, "13|/my/file.txt|12") c.Assert(createPositionStringFormatter("好::col")(pos), qt.Equals, "好:13") c.Assert(createPositionStringFormatter("")(pos), qt.Equals, "\"/my/file.txt:12:13\"") c.Assert(pos.String(), qt.Equals, "\"/my/file.txt:12:13\"") } gohugoio-hugo-6abdaca/common/text/transform.go000066400000000000000000000037171507671574500217640ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package text import ( "strings" "sync" "unicode" "golang.org/x/text/runes" "golang.org/x/text/transform" "golang.org/x/text/unicode/norm" ) var accentTransformerPool = &sync.Pool{ New: func() any { return transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC) }, } // RemoveAccents removes all accents from b. func RemoveAccents(b []byte) []byte { t := accentTransformerPool.Get().(transform.Transformer) b, _, _ = transform.Bytes(t, b) t.Reset() accentTransformerPool.Put(t) return b } // RemoveAccentsString removes all accents from s. func RemoveAccentsString(s string) string { t := accentTransformerPool.Get().(transform.Transformer) s, _, _ = transform.String(t, s) t.Reset() accentTransformerPool.Put(t) return s } // Chomp removes trailing newline characters from s. func Chomp(s string) string { return strings.TrimRightFunc(s, func(r rune) bool { return r == '\n' || r == '\r' }) } // Puts adds a trailing \n none found. func Puts(s string) string { if s == "" || s[len(s)-1] == '\n' { return s } return s + "\n" } // VisitLinesAfter calls the given function for each line, including newlines, in the given string. func VisitLinesAfter(s string, fn func(line string)) { high := strings.IndexRune(s, '\n') for high != -1 { fn(s[:high+1]) s = s[high+1:] high = strings.IndexRune(s, '\n') } if s != "" { fn(s) } } gohugoio-hugo-6abdaca/common/text/transform_test.go000066400000000000000000000033101507671574500230100ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package text import ( "testing" qt "github.com/frankban/quicktest" ) func TestRemoveAccents(t *testing.T) { c := qt.New(t) c.Assert(string(RemoveAccents([]byte("Resumé"))), qt.Equals, "Resume") c.Assert(string(RemoveAccents([]byte("Hugo Rocks!"))), qt.Equals, "Hugo Rocks!") c.Assert(string(RemoveAccentsString("Resumé")), qt.Equals, "Resume") } func TestChomp(t *testing.T) { c := qt.New(t) c.Assert(Chomp("\nA\n"), qt.Equals, "\nA") c.Assert(Chomp("A\r\n"), qt.Equals, "A") } func TestPuts(t *testing.T) { c := qt.New(t) c.Assert(Puts("A"), qt.Equals, "A\n") c.Assert(Puts("\nA\n"), qt.Equals, "\nA\n") c.Assert(Puts(""), qt.Equals, "") } func TestVisitLinesAfter(t *testing.T) { const lines = `line 1 line 2 line 3` var collected []string VisitLinesAfter(lines, func(s string) { collected = append(collected, s) }) c := qt.New(t) c.Assert(collected, qt.DeepEquals, []string{"line 1\n", "line 2\n", "\n", "line 3"}) } func BenchmarkVisitLinesAfter(b *testing.B) { const lines = `line 1 line 2 line 3` for i := 0; i < b.N; i++ { VisitLinesAfter(lines, func(s string) { }) } } gohugoio-hugo-6abdaca/common/types/000077500000000000000000000000001507671574500175725ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/types/closer.go000066400000000000000000000022331507671574500214100ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import "sync" type Closer interface { Close() error } // CloserFunc is a convenience type to create a Closer from a function. type CloserFunc func() error func (f CloserFunc) Close() error { return f() } type CloseAdder interface { Add(Closer) } type Closers struct { mu sync.Mutex cs []Closer } func (cs *Closers) Add(c Closer) { cs.mu.Lock() defer cs.mu.Unlock() cs.cs = append(cs.cs, c) } func (cs *Closers) Close() error { cs.mu.Lock() defer cs.mu.Unlock() for _, c := range cs.cs { c.Close() } cs.cs = cs.cs[:0] return nil } gohugoio-hugo-6abdaca/common/types/convert.go000066400000000000000000000061311507671574500216020ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import ( "encoding/json" "fmt" "html/template" "reflect" "time" "github.com/spf13/cast" ) // ToDuration converts v to time.Duration. // See ToDurationE if you need to handle errors. func ToDuration(v any) time.Duration { d, _ := ToDurationE(v) return d } // ToDurationE converts v to time.Duration. func ToDurationE(v any) (time.Duration, error) { if n := cast.ToInt(v); n > 0 { return time.Duration(n) * time.Millisecond, nil } d, err := time.ParseDuration(cast.ToString(v)) if err != nil { return 0, fmt.Errorf("cannot convert %v to time.Duration", v) } return d, nil } // ToStringSlicePreserveString is the same as ToStringSlicePreserveStringE, // but it never fails. func ToStringSlicePreserveString(v any) []string { vv, _ := ToStringSlicePreserveStringE(v) return vv } // ToStringSlicePreserveStringE converts v to a string slice. // If v is a string, it will be wrapped in a string slice. func ToStringSlicePreserveStringE(v any) ([]string, error) { if v == nil { return nil, nil } if sds, ok := v.(string); ok { return []string{sds}, nil } result, err := cast.ToStringSliceE(v) if err == nil { return result, nil } // Probably []int or similar. Fall back to reflect. vv := reflect.ValueOf(v) switch vv.Kind() { case reflect.Slice, reflect.Array: result = make([]string, vv.Len()) for i := range vv.Len() { s, err := cast.ToStringE(vv.Index(i).Interface()) if err != nil { return nil, err } result[i] = s } return result, nil default: return nil, fmt.Errorf("failed to convert %T to a string slice", v) } } // TypeToString converts v to a string if it's a valid string type. // Note that this will not try to convert numeric values etc., // use ToString for that. func TypeToString(v any) (string, bool) { switch s := v.(type) { case string: return s, true case template.HTML: return string(s), true case template.CSS: return string(s), true case template.HTMLAttr: return string(s), true case template.JS: return string(s), true case template.JSStr: return string(s), true case template.URL: return string(s), true case template.Srcset: return string(s), true } return "", false } // ToString converts v to a string. func ToString(v any) string { s, _ := ToStringE(v) return s } // ToStringE converts v to a string. func ToStringE(v any) (string, error) { if s, ok := TypeToString(v); ok { return s, nil } switch s := v.(type) { case json.RawMessage: return string(s), nil default: return cast.ToStringE(v) } } gohugoio-hugo-6abdaca/common/types/convert_test.go000066400000000000000000000031711507671574500226420ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import ( "encoding/json" "testing" "time" qt "github.com/frankban/quicktest" ) func TestToStringSlicePreserveString(t *testing.T) { c := qt.New(t) c.Assert(ToStringSlicePreserveString("Hugo"), qt.DeepEquals, []string{"Hugo"}) c.Assert(ToStringSlicePreserveString(qt.Commentf("Hugo")), qt.DeepEquals, []string{"Hugo"}) c.Assert(ToStringSlicePreserveString([]any{"A", "B"}), qt.DeepEquals, []string{"A", "B"}) c.Assert(ToStringSlicePreserveString([]int{1, 3}), qt.DeepEquals, []string{"1", "3"}) c.Assert(ToStringSlicePreserveString(nil), qt.IsNil) } func TestToString(t *testing.T) { c := qt.New(t) c.Assert(ToString([]byte("Hugo")), qt.Equals, "Hugo") c.Assert(ToString(json.RawMessage("Hugo")), qt.Equals, "Hugo") } func TestToDuration(t *testing.T) { c := qt.New(t) c.Assert(ToDuration("200ms"), qt.Equals, 200*time.Millisecond) c.Assert(ToDuration("200"), qt.Equals, 200*time.Millisecond) c.Assert(ToDuration("4m"), qt.Equals, 4*time.Minute) c.Assert(ToDuration("asdfadf"), qt.Equals, time.Duration(0)) } gohugoio-hugo-6abdaca/common/types/css/000077500000000000000000000000001507671574500203625ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/types/css/csstypes.go000066400000000000000000000014451507671574500225720ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package css // QuotedString is a string that needs to be quoted in CSS. type QuotedString string // UnquotedString is a string that does not need to be quoted in CSS. type UnquotedString string gohugoio-hugo-6abdaca/common/types/evictingqueue.go000066400000000000000000000052261507671574500230030ustar00rootroot00000000000000// Copyright 2017-present The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package types contains types shared between packages in Hugo. package types import ( "slices" "sync" ) // EvictingQueue is a queue which automatically evicts elements from the head of // the queue when attempting to add new elements onto the queue and it is full. // This queue orders elements LIFO (last-in-first-out). It throws away duplicates. type EvictingQueue[T comparable] struct { size int vals []T set map[T]bool mu sync.Mutex zero T } // NewEvictingQueue creates a new queue with the given size. func NewEvictingQueue[T comparable](size int) *EvictingQueue[T] { return &EvictingQueue[T]{size: size, set: make(map[T]bool)} } // Add adds a new string to the tail of the queue if it's not already there. func (q *EvictingQueue[T]) Add(v T) *EvictingQueue[T] { q.mu.Lock() if q.set[v] { q.mu.Unlock() return q } if len(q.set) == q.size { // Full delete(q.set, q.vals[0]) q.vals = slices.Delete(q.vals, 0, 1) } q.set[v] = true q.vals = append(q.vals, v) q.mu.Unlock() return q } func (q *EvictingQueue[T]) Len() int { if q == nil { return 0 } q.mu.Lock() defer q.mu.Unlock() return len(q.vals) } // Contains returns whether the queue contains v. func (q *EvictingQueue[T]) Contains(v T) bool { if q == nil { return false } q.mu.Lock() defer q.mu.Unlock() return q.set[v] } // Peek looks at the last element added to the queue. func (q *EvictingQueue[T]) Peek() T { q.mu.Lock() l := len(q.vals) if l == 0 { q.mu.Unlock() return q.zero } elem := q.vals[l-1] q.mu.Unlock() return elem } // PeekAll looks at all the elements in the queue, with the newest first. func (q *EvictingQueue[T]) PeekAll() []T { if q == nil { return nil } q.mu.Lock() vals := make([]T, len(q.vals)) copy(vals, q.vals) q.mu.Unlock() for i, j := 0, len(vals)-1; i < j; i, j = i+1, j-1 { vals[i], vals[j] = vals[j], vals[i] } return vals } // PeekAllSet returns PeekAll as a set. func (q *EvictingQueue[T]) PeekAllSet() map[T]bool { all := q.PeekAll() set := make(map[T]bool) for _, v := range all { set[v] = true } return set } gohugoio-hugo-6abdaca/common/types/evictingqueue_test.go000066400000000000000000000035141507671574500240400ustar00rootroot00000000000000// Copyright 2017-present The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import ( "sync" "testing" qt "github.com/frankban/quicktest" ) func TestEvictingStringQueue(t *testing.T) { c := qt.New(t) queue := NewEvictingQueue[string](3) c.Assert(queue.Peek(), qt.Equals, "") queue.Add("a") queue.Add("b") queue.Add("a") c.Assert(queue.Peek(), qt.Equals, "b") queue.Add("b") c.Assert(queue.Peek(), qt.Equals, "b") queue.Add("a") queue.Add("b") c.Assert(queue.Contains("a"), qt.Equals, true) c.Assert(queue.Contains("foo"), qt.Equals, false) c.Assert(queue.PeekAll(), qt.DeepEquals, []string{"b", "a"}) c.Assert(queue.Peek(), qt.Equals, "b") queue.Add("c") queue.Add("d") // Overflowed, a should now be removed. c.Assert(queue.PeekAll(), qt.DeepEquals, []string{"d", "c", "b"}) c.Assert(len(queue.PeekAllSet()), qt.Equals, 3) c.Assert(queue.PeekAllSet()["c"], qt.Equals, true) } func TestEvictingStringQueueConcurrent(t *testing.T) { var wg sync.WaitGroup val := "someval" queue := NewEvictingQueue[string](3) for range 100 { wg.Add(1) go func() { defer wg.Done() queue.Add(val) v := queue.Peek() if v != val { t.Error("wrong val") } vals := queue.PeekAll() if len(vals) != 1 || vals[0] != val { t.Error("wrong val") } }() } wg.Wait() } gohugoio-hugo-6abdaca/common/types/hstring/000077500000000000000000000000001507671574500212505ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/types/hstring/stringtypes.go000066400000000000000000000024231507671574500241730ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hstring import ( "html/template" "github.com/gohugoio/hugo/common/types" ) var _ types.PrintableValueProvider = HTML("") // HTML is a string that represents rendered HTML. // When printed in templates it will be rendered as template.HTML and considered safe so no need to pipe it into `safeHTML`. // This type was introduced as a wasy to prevent a common case of inifinite recursion in the template rendering // when the `linkify` option is enabled with a common (wrong) construct like `{{ .Text | .Page.RenderString }}` in a hook template. type HTML string func (s HTML) String() string { return string(s) } func (s HTML) PrintableValue() any { return template.HTML(s) } gohugoio-hugo-6abdaca/common/types/hstring/stringtypes_test.go000066400000000000000000000017271507671574500252400ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hstring import ( "html/template" "testing" qt "github.com/frankban/quicktest" "github.com/spf13/cast" ) func TestRenderedString(t *testing.T) { c := qt.New(t) // Validate that it will behave like a string in Hugo settings. c.Assert(cast.ToString(HTML("Hugo")), qt.Equals, "Hugo") c.Assert(template.HTML(HTML("Hugo")), qt.Equals, template.HTML("Hugo")) } gohugoio-hugo-6abdaca/common/types/types.go000066400000000000000000000064021507671574500212670ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package types contains types shared between packages in Hugo. package types import ( "fmt" "reflect" "sync/atomic" "github.com/spf13/cast" ) // RLocker represents the read locks in sync.RWMutex. type RLocker interface { RLock() RUnlock() } type Locker interface { Lock() Unlock() } type RWLocker interface { RLocker Locker } // KeyValue is a interface{} tuple. type KeyValue struct { Key any Value any } // KeyValueStr is a string tuple. type KeyValueStr struct { Key string Value string } // KeyValues holds an key and a slice of values. type KeyValues struct { Key any Values []any } // KeyString returns the key as a string, an empty string if conversion fails. func (k KeyValues) KeyString() string { return cast.ToString(k.Key) } func (k KeyValues) String() string { return fmt.Sprintf("%v: %v", k.Key, k.Values) } // NewKeyValuesStrings takes a given key and slice of values and returns a new // KeyValues struct. func NewKeyValuesStrings(key string, values ...string) KeyValues { iv := make([]any, len(values)) for i := range values { iv[i] = values[i] } return KeyValues{Key: key, Values: iv} } // Zeroer, as implemented by time.Time, will be used by the truth template // funcs in Hugo (if, with, not, and, or). type Zeroer interface { IsZero() bool } // IsNil reports whether v is nil. func IsNil(v any) bool { if v == nil { return true } value := reflect.ValueOf(v) switch value.Kind() { case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: return value.IsNil() } return false } // DevMarker is a marker interface for types that should only be used during // development. type DevMarker interface { DevOnly() } // Unwrapper is implemented by types that can unwrap themselves. type Unwrapper interface { // Unwrapv is for internal use only. // It got its slightly odd name to prevent collisions with user types. Unwrapv() any } // Unwrap returns the underlying value of v if it implements Unwrapper, otherwise v is returned. func Unwrapv(v any) any { if u, ok := v.(Unwrapper); ok { return u.Unwrapv() } return v } // LowHigh represents a byte or slice boundary. type LowHigh[S ~[]byte | string] struct { Low int High int } func (l LowHigh[S]) IsZero() bool { return l.Low < 0 || (l.Low == 0 && l.High == 0) } func (l LowHigh[S]) Value(source S) S { return source[l.Low:l.High] } // This is only used for debugging purposes. var InvocationCounter atomic.Int64 // NewTrue returns a pointer to b. func NewBool(b bool) *bool { return &b } // PrintableValueProvider is implemented by types that can provide a printable value. type PrintableValueProvider interface { PrintableValue() any } gohugoio-hugo-6abdaca/common/types/types_test.go000066400000000000000000000023761507671574500223340ustar00rootroot00000000000000// Copyright 2017-present The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package types import ( "testing" qt "github.com/frankban/quicktest" ) func TestKeyValues(t *testing.T) { c := qt.New(t) kv := NewKeyValuesStrings("key", "a1", "a2") c.Assert(kv.KeyString(), qt.Equals, "key") c.Assert(kv.Values, qt.DeepEquals, []any{"a1", "a2"}) } func TestLowHigh(t *testing.T) { c := qt.New(t) lh := LowHigh[string]{ Low: 2, High: 10, } s := "abcdefghijklmnopqrstuvwxyz" c.Assert(lh.IsZero(), qt.IsFalse) c.Assert(lh.Value(s), qt.Equals, "cdefghij") lhb := LowHigh[[]byte]{ Low: 2, High: 10, } sb := []byte(s) c.Assert(lhb.IsZero(), qt.IsFalse) c.Assert(lhb.Value(sb), qt.DeepEquals, []byte("cdefghij")) } gohugoio-hugo-6abdaca/common/urls/000077500000000000000000000000001507671574500174135ustar00rootroot00000000000000gohugoio-hugo-6abdaca/common/urls/baseURL.go000066400000000000000000000060041507671574500212370ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package urls import ( "fmt" "net/url" "strconv" "strings" ) // A BaseURL in Hugo is normally on the form scheme://path, but the // form scheme: is also valid (mailto:hugo@rules.com). type BaseURL struct { url *url.URL WithPath string WithPathNoTrailingSlash string WithoutPath string BasePath string BasePathNoTrailingSlash string } func (b BaseURL) String() string { return b.WithPath } func (b BaseURL) Path() string { return b.url.Path } func (b BaseURL) Port() int { p, _ := strconv.Atoi(b.url.Port()) return p } // HostURL returns the URL to the host root without any path elements. func (b BaseURL) HostURL() string { return strings.TrimSuffix(b.String(), b.Path()) } // WithProtocol returns the BaseURL prefixed with the given protocol. // The Protocol is normally of the form "scheme://", i.e. "webcal://". func (b BaseURL) WithProtocol(protocol string) (BaseURL, error) { u := b.URL() scheme := protocol isFullProtocol := strings.HasSuffix(scheme, "://") isOpaqueProtocol := strings.HasSuffix(scheme, ":") if isFullProtocol { scheme = strings.TrimSuffix(scheme, "://") } else if isOpaqueProtocol { scheme = strings.TrimSuffix(scheme, ":") } u.Scheme = scheme if isFullProtocol && u.Opaque != "" { u.Opaque = "//" + u.Opaque } else if isOpaqueProtocol && u.Opaque == "" { return BaseURL{}, fmt.Errorf("cannot determine BaseURL for protocol %q", protocol) } return newBaseURLFromURL(u) } func (b BaseURL) WithPort(port int) (BaseURL, error) { u := b.URL() u.Host = u.Hostname() + ":" + strconv.Itoa(port) return newBaseURLFromURL(u) } // URL returns a copy of the internal URL. // The copy can be safely used and modified. func (b BaseURL) URL() *url.URL { c := *b.url return &c } func NewBaseURLFromString(b string) (BaseURL, error) { u, err := url.Parse(b) if err != nil { return BaseURL{}, err } return newBaseURLFromURL(u) } func newBaseURLFromURL(u *url.URL) (BaseURL, error) { // A baseURL should always have a trailing slash, see #11669. if !strings.HasSuffix(u.Path, "/") { u.Path += "/" } baseURL := BaseURL{url: u, WithPath: u.String(), WithPathNoTrailingSlash: strings.TrimSuffix(u.String(), "/")} baseURLNoPath := baseURL.URL() baseURLNoPath.Path = "" baseURL.WithoutPath = baseURLNoPath.String() baseURL.BasePath = u.Path baseURL.BasePathNoTrailingSlash = strings.TrimSuffix(u.Path, "/") return baseURL, nil } gohugoio-hugo-6abdaca/common/urls/baseURL_test.go000066400000000000000000000052011507671574500222740ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package urls import ( "testing" qt "github.com/frankban/quicktest" ) func TestBaseURL(t *testing.T) { c := qt.New(t) b, err := NewBaseURLFromString("http://example.com/") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "http://example.com/") b, err = NewBaseURLFromString("http://example.com") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "http://example.com/") c.Assert(b.WithPathNoTrailingSlash, qt.Equals, "http://example.com") c.Assert(b.BasePath, qt.Equals, "/") p, err := b.WithProtocol("webcal://") c.Assert(err, qt.IsNil) c.Assert(p.String(), qt.Equals, "webcal://example.com/") p, err = b.WithProtocol("webcal") c.Assert(err, qt.IsNil) c.Assert(p.String(), qt.Equals, "webcal://example.com/") _, err = b.WithProtocol("mailto:") c.Assert(err, qt.Not(qt.IsNil)) b, err = NewBaseURLFromString("mailto:hugo@rules.com") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "mailto:hugo@rules.com") // These are pretty constructed p, err = b.WithProtocol("webcal") c.Assert(err, qt.IsNil) c.Assert(p.String(), qt.Equals, "webcal:hugo@rules.com") p, err = b.WithProtocol("webcal://") c.Assert(err, qt.IsNil) c.Assert(p.String(), qt.Equals, "webcal://hugo@rules.com") // Test with "non-URLs". Some people will try to use these as a way to get // relative URLs working etc. b, err = NewBaseURLFromString("/") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "/") b, err = NewBaseURLFromString("") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "/") // BaseURL with sub path b, err = NewBaseURLFromString("http://example.com/sub") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "http://example.com/sub/") c.Assert(b.WithPathNoTrailingSlash, qt.Equals, "http://example.com/sub") c.Assert(b.BasePath, qt.Equals, "/sub/") c.Assert(b.BasePathNoTrailingSlash, qt.Equals, "/sub") b, err = NewBaseURLFromString("http://example.com/sub/") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "http://example.com/sub/") c.Assert(b.HostURL(), qt.Equals, "http://example.com") } gohugoio-hugo-6abdaca/common/urls/ref.go000066400000000000000000000016031507671574500205160ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package urls // RefLinker is implemented by those who support reference linking. // args must contain a path, but can also point to the target // language or output format. type RefLinker interface { Ref(args map[string]any) (string, error) RelRef(args map[string]any) (string, error) } gohugoio-hugo-6abdaca/compare/000077500000000000000000000000001507671574500165645ustar00rootroot00000000000000gohugoio-hugo-6abdaca/compare/compare.go000066400000000000000000000036301507671574500205430ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package compare // Eqer can be used to determine if this value is equal to the other. // The semantics of equals is that the two value are interchangeable // in the Hugo templates. type Eqer interface { // Eq returns whether this value is equal to the other. // This is for internal use. Eq(other any) bool } // ProbablyEqer is an equal check that may return false positives, but never // a false negative. type ProbablyEqer interface { // For internal use. ProbablyEq(other any) bool } // Comparer can be used to compare two values. // This will be used when using the le, ge etc. operators in the templates. // Compare returns -1 if the given version is less than, 0 if equal and 1 if greater than // the running version. type Comparer interface { Compare(other any) int } // Eq returns whether v1 is equal to v2. // It will use the Eqer interface if implemented, which // defines equals when two value are interchangeable // in the Hugo templates. func Eq(v1, v2 any) bool { if v1 == nil || v2 == nil { return v1 == v2 } if eqer, ok := v1.(Eqer); ok { return eqer.Eq(v2) } return v1 == v2 } // ProbablyEq returns whether v1 is probably equal to v2. func ProbablyEq(v1, v2 any) bool { if Eq(v1, v2) { return true } if peqer, ok := v1.(ProbablyEqer); ok { return peqer.ProbablyEq(v2) } return false } gohugoio-hugo-6abdaca/compare/compare_strings.go000066400000000000000000000042371507671574500223200ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package compare import ( "strings" "unicode" "unicode/utf8" ) // Strings returns an integer comparing two strings lexicographically. func Strings(s, t string) int { c := compareFold(s, t) if c == 0 { // "B" and "b" would be the same so we need a tiebreaker. return strings.Compare(s, t) } return c } // This function is derived from strings.EqualFold in Go's stdlib. // https://github.com/golang/go/blob/ad4a58e31501bce5de2aad90a620eaecdc1eecb8/src/strings/strings.go#L893 func compareFold(s, t string) int { for s != "" && t != "" { var sr, tr rune if s[0] < utf8.RuneSelf { sr, s = rune(s[0]), s[1:] } else { r, size := utf8.DecodeRuneInString(s) sr, s = r, s[size:] } if t[0] < utf8.RuneSelf { tr, t = rune(t[0]), t[1:] } else { r, size := utf8.DecodeRuneInString(t) tr, t = r, t[size:] } if tr == sr { continue } c := 1 if tr < sr { tr, sr = sr, tr c = -c } // ASCII only. if tr < utf8.RuneSelf { if sr >= 'A' && sr <= 'Z' { if tr <= 'Z' { // Same case. return -c } diff := tr - (sr + 'a' - 'A') if diff == 0 { continue } if diff < 0 { return c } if diff > 0 { return -c } } } // Unicode. r := unicode.SimpleFold(sr) for r != sr && r < tr { r = unicode.SimpleFold(r) } if r == tr { continue } return -c } if s == "" && t == "" { return 0 } if s == "" { return -1 } return 1 } // LessStrings returns whether s is less than t lexicographically. func LessStrings(s, t string) bool { return Strings(s, t) < 0 } gohugoio-hugo-6abdaca/compare/compare_strings_test.go000066400000000000000000000037171507671574500233610ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package compare import ( "sort" "strings" "testing" qt "github.com/frankban/quicktest" ) func TestCompare(t *testing.T) { c := qt.New(t) for _, test := range []struct { a string b string }{ {"a", "a"}, {"A", "a"}, {"Ab", "Ac"}, {"az", "Za"}, {"C", "D"}, {"B", "a"}, {"C", ""}, {"", ""}, {"αβδC", "ΑΒΔD"}, {"αβδC", "ΑΒΔ"}, {"αβδ", "ΑΒΔD"}, {"αβδ", "ΑΒΔ"}, {"β", "δ"}, {"好", strings.ToLower("好")}, } { expect := strings.Compare(strings.ToLower(test.a), strings.ToLower(test.b)) got := compareFold(test.a, test.b) c.Assert(got, qt.Equals, expect) } } func TestLexicographicSort(t *testing.T) { c := qt.New(t) s := []string{"b", "Bz", "ba", "A", "Ba", "ba"} sort.Slice(s, func(i, j int) bool { return LessStrings(s[i], s[j]) }) c.Assert(s, qt.DeepEquals, []string{"A", "b", "Ba", "ba", "ba", "Bz"}) } func BenchmarkStringSort(b *testing.B) { prototype := []string{"b", "Bz", "zz", "ba", "αβδ αβδ αβδ", "A", "Ba", "ba", "nnnnasdfnnn", "AAgæåz", "αβδC"} b.Run("LessStrings", func(b *testing.B) { ss := make([][]string, b.N) for i := 0; i < b.N; i++ { ss[i] = make([]string, len(prototype)) copy(ss[i], prototype) } b.ResetTimer() for i := 0; i < b.N; i++ { sss := ss[i] sort.Slice(sss, func(i, j int) bool { return LessStrings(sss[i], sss[j]) }) } }) } gohugoio-hugo-6abdaca/config/000077500000000000000000000000001507671574500164035ustar00rootroot00000000000000gohugoio-hugo-6abdaca/config/allconfig/000077500000000000000000000000001507671574500203415ustar00rootroot00000000000000gohugoio-hugo-6abdaca/config/allconfig/allconfig.go000066400000000000000000001124071507671574500226330ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package allconfig contains the full configuration for Hugo. // { "name": "Configuration", "description": "This section holds all configuration options in Hugo." } package allconfig import ( "errors" "fmt" "reflect" "regexp" "slices" "sort" "strconv" "strings" "sync" "time" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/cache/httpcache" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/urls" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/privacy" "github.com/gohugoio/hugo/config/security" "github.com/gohugoio/hugo/config/services" "github.com/gohugoio/hugo/deploy/deployconfig" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugolib/segments" "github.com/gohugoio/hugo/langs" gc "github.com/gohugoio/hugo/markup/goldmark/goldmark_config" "github.com/gohugoio/hugo/markup/markup_config" "github.com/gohugoio/hugo/media" "github.com/gohugoio/hugo/minifiers" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/navigation" "github.com/gohugoio/hugo/output" "github.com/gohugoio/hugo/related" "github.com/gohugoio/hugo/resources/images" "github.com/gohugoio/hugo/resources/kinds" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/page/pagemeta" "github.com/spf13/afero" ) // InternalConfig is the internal configuration for Hugo, not read from any user provided config file. type InternalConfig struct { // Server mode? Running bool Quiet bool Verbose bool Clock string Watch bool FastRenderMode bool LiveReloadPort int } // All non-params config keys for language. var configLanguageKeys map[string]bool func init() { skip := map[string]bool{ "internal": true, "c": true, "rootconfig": true, } configLanguageKeys = make(map[string]bool) addKeys := func(v reflect.Value) { for i := range v.NumField() { name := strings.ToLower(v.Type().Field(i).Name) if skip[name] { continue } configLanguageKeys[name] = true } } addKeys(reflect.ValueOf(Config{})) addKeys(reflect.ValueOf(RootConfig{})) addKeys(reflect.ValueOf(config.CommonDirs{})) addKeys(reflect.ValueOf(langs.LanguageConfig{})) } type Config struct { // For internal use only. Internal InternalConfig `mapstructure:"-" json:"-"` // For internal use only. C *ConfigCompiled `mapstructure:"-" json:"-"` RootConfig // Author information. // Deprecated: Use taxonomies instead. Author map[string]any // Social links. // Deprecated: Use .Site.Params instead. Social map[string]string // The build configuration section contains build-related configuration options. // {"identifiers": ["build"] } Build config.BuildConfig `mapstructure:"-"` // The caches configuration section contains cache-related configuration options. // {"identifiers": ["caches"] } Caches filecache.Configs `mapstructure:"-"` // The httpcache configuration section contains HTTP-cache-related configuration options. // {"identifiers": ["httpcache"] } HTTPCache httpcache.Config `mapstructure:"-"` // The markup configuration section contains markup-related configuration options. // {"identifiers": ["markup"] } Markup markup_config.Config `mapstructure:"-"` // ContentTypes are the media types that's considered content in Hugo. ContentTypes *config.ConfigNamespace[map[string]media.ContentTypeConfig, media.ContentTypes] `mapstructure:"-"` // The mediatypes configuration section maps the MIME type (a string) to a configuration object for that type. // {"identifiers": ["mediatypes"], "refs": ["types:media:type"] } MediaTypes *config.ConfigNamespace[map[string]media.MediaTypeConfig, media.Types] `mapstructure:"-"` Imaging *config.ConfigNamespace[images.ImagingConfig, images.ImagingConfigInternal] `mapstructure:"-"` // The outputformats configuration sections maps a format name (a string) to a configuration object for that format. OutputFormats *config.ConfigNamespace[map[string]output.OutputFormatConfig, output.Formats] `mapstructure:"-"` // The outputs configuration section maps a Page Kind (a string) to a slice of output formats. // This can be overridden in the front matter. Outputs map[string][]string `mapstructure:"-"` // The cascade configuration section contains the top level front matter cascade configuration options, // a slice of page matcher and params to apply to those pages. Cascade *config.ConfigNamespace[[]page.PageMatcherParamsConfig, *maps.Ordered[page.PageMatcher, page.PageMatcherParamsConfig]] `mapstructure:"-"` // The segments defines segments for the site. Used for partial/segmented builds. Segments *config.ConfigNamespace[map[string]segments.SegmentConfig, segments.Segments] `mapstructure:"-"` // Menu configuration. // {"refs": ["config:languages:menus"] } Menus *config.ConfigNamespace[map[string]navigation.MenuConfig, navigation.Menus] `mapstructure:"-"` // The deployment configuration section contains for hugo deployconfig. Deployment deployconfig.DeployConfig `mapstructure:"-"` // Module configuration. Module modules.Config `mapstructure:"-"` // Front matter configuration. Frontmatter pagemeta.FrontmatterConfig `mapstructure:"-"` // Minification configuration. Minify minifiers.MinifyConfig `mapstructure:"-"` // Permalink configuration. Permalinks map[string]map[string]string `mapstructure:"-"` // Taxonomy configuration. Taxonomies map[string]string `mapstructure:"-"` // Sitemap configuration. Sitemap config.SitemapConfig `mapstructure:"-"` // Related content configuration. Related related.Config `mapstructure:"-"` // Server configuration. Server config.Server `mapstructure:"-"` // Pagination configuration. Pagination config.Pagination `mapstructure:"-"` // Page configuration. Page config.PageConfig `mapstructure:"-"` // Privacy configuration. Privacy privacy.Config `mapstructure:"-"` // Security configuration. Security security.Config `mapstructure:"-"` // Services configuration. Services services.Config `mapstructure:"-"` // User provided parameters. // {"refs": ["config:languages:params"] } Params maps.Params `mapstructure:"-"` // The languages configuration sections maps a language code (a string) to a configuration object for that language. Languages map[string]langs.LanguageConfig `mapstructure:"-"` // UglyURLs configuration. Either a boolean or a sections map. UglyURLs any `mapstructure:"-"` } type configCompiler interface { CompileConfig(logger loggers.Logger) error } func (c Config) cloneForLang() *Config { x := c x.C = nil copyStringSlice := func(in []string) []string { if in == nil { return nil } out := make([]string, len(in)) copy(out, in) return out } // Copy all the slices to avoid sharing. x.DisableKinds = copyStringSlice(x.DisableKinds) x.DisableLanguages = copyStringSlice(x.DisableLanguages) x.MainSections = copyStringSlice(x.MainSections) x.IgnoreLogs = copyStringSlice(x.IgnoreLogs) x.IgnoreFiles = copyStringSlice(x.IgnoreFiles) x.Theme = copyStringSlice(x.Theme) // Collapse all static dirs to one. x.StaticDir = x.staticDirs() // These will go away soon ... x.StaticDir0 = nil x.StaticDir1 = nil x.StaticDir2 = nil x.StaticDir3 = nil x.StaticDir4 = nil x.StaticDir5 = nil x.StaticDir6 = nil x.StaticDir7 = nil x.StaticDir8 = nil x.StaticDir9 = nil x.StaticDir10 = nil return &x } func (c *Config) CompileConfig(logger loggers.Logger) error { var transientErr error s := c.Timeout if _, err := strconv.Atoi(s); err == nil { // A number, assume seconds. s = s + "s" } timeout, err := time.ParseDuration(s) if err != nil { return fmt.Errorf("failed to parse timeout: %s", err) } disabledKinds := make(map[string]bool) for _, kind := range c.DisableKinds { kind = strings.ToLower(kind) if newKind := kinds.IsDeprecatedAndReplacedWith(kind); newKind != "" { logger.Deprecatef(false, "Kind %q used in disableKinds is deprecated, use %q instead.", kind, newKind) // Legacy config. kind = newKind } if kinds.GetKindAny(kind) == "" { logger.Warnf("Unknown kind %q in disableKinds configuration.", kind) continue } disabledKinds[kind] = true } kindOutputFormats := make(map[string]output.Formats) isRssDisabled := disabledKinds["rss"] outputFormats := c.OutputFormats.Config for kind, formats := range c.Outputs { if newKind := kinds.IsDeprecatedAndReplacedWith(kind); newKind != "" { logger.Deprecatef(false, "Kind %q used in outputs configuration is deprecated, use %q instead.", kind, newKind) kind = newKind } if disabledKinds[kind] { continue } if kinds.GetKindAny(kind) == "" { logger.Warnf("Unknown kind %q in outputs configuration.", kind) continue } for _, format := range formats { if isRssDisabled && format == "rss" { // Legacy config. continue } f, found := outputFormats.GetByName(format) if !found { transientErr = fmt.Errorf("unknown output format %q for kind %q", format, kind) continue } kindOutputFormats[kind] = append(kindOutputFormats[kind], f) } } defaultOutputFormat := outputFormats[0] c.DefaultOutputFormat = strings.ToLower(c.DefaultOutputFormat) if c.DefaultOutputFormat != "" { f, found := outputFormats.GetByName(c.DefaultOutputFormat) if !found { return fmt.Errorf("unknown default output format %q", c.DefaultOutputFormat) } defaultOutputFormat = f } else { c.DefaultOutputFormat = defaultOutputFormat.Name } disabledLangs := make(map[string]bool) for _, lang := range c.DisableLanguages { disabledLangs[lang] = true } for lang, language := range c.Languages { if !language.Disabled && disabledLangs[lang] { language.Disabled = true c.Languages[lang] = language } if language.Disabled { disabledLangs[lang] = true if lang == c.DefaultContentLanguage { return fmt.Errorf("cannot disable default content language %q", lang) } } } for i, s := range c.IgnoreLogs { c.IgnoreLogs[i] = strings.ToLower(s) } ignoredLogIDs := make(map[string]bool) for _, err := range c.IgnoreLogs { ignoredLogIDs[err] = true } baseURL, err := urls.NewBaseURLFromString(c.BaseURL) if err != nil { return err } isUglyURL := func(section string) bool { switch v := c.UglyURLs.(type) { case bool: return v case map[string]bool: return v[section] default: return false } } ignoreFile := func(s string) bool { return false } if len(c.IgnoreFiles) > 0 { regexps := make([]*regexp.Regexp, len(c.IgnoreFiles)) for i, pattern := range c.IgnoreFiles { var err error regexps[i], err = regexp.Compile(pattern) if err != nil { return fmt.Errorf("failed to compile ignoreFiles pattern %q: %s", pattern, err) } } ignoreFile = func(s string) bool { for _, r := range regexps { if r.MatchString(s) { return true } } return false } } var clock time.Time if c.Internal.Clock != "" { var err error clock, err = time.Parse(time.RFC3339, c.Internal.Clock) if err != nil { return fmt.Errorf("failed to parse clock: %s", err) } } httpCache, err := c.HTTPCache.Compile() if err != nil { return err } // Legacy paginate values. if c.Paginate != 0 { hugo.DeprecateWithLogger("site config key paginate", "Use pagination.pagerSize instead.", "v0.128.0", logger.Logger()) c.Pagination.PagerSize = c.Paginate } if c.PaginatePath != "" { hugo.DeprecateWithLogger("site config key paginatePath", "Use pagination.path instead.", "v0.128.0", logger.Logger()) c.Pagination.Path = c.PaginatePath } // Legacy privacy values. if c.Privacy.Twitter.Disable { hugo.DeprecateWithLogger("site config key privacy.twitter.disable", "Use privacy.x.disable instead.", "v0.141.0", logger.Logger()) c.Privacy.X.Disable = c.Privacy.Twitter.Disable } if c.Privacy.Twitter.EnableDNT { hugo.DeprecateWithLogger("site config key privacy.twitter.enableDNT", "Use privacy.x.enableDNT instead.", "v0.141.0", logger.Logger()) c.Privacy.X.EnableDNT = c.Privacy.Twitter.EnableDNT } if c.Privacy.Twitter.Simple { hugo.DeprecateWithLogger("site config key privacy.twitter.simple", "Use privacy.x.simple instead.", "v0.141.0", logger.Logger()) c.Privacy.X.Simple = c.Privacy.Twitter.Simple } // Legacy services values. if c.Services.Twitter.DisableInlineCSS { hugo.DeprecateWithLogger("site config key services.twitter.disableInlineCSS", "Use services.x.disableInlineCSS instead.", "v0.141.0", logger.Logger()) c.Services.X.DisableInlineCSS = c.Services.Twitter.DisableInlineCSS } // Legacy permalink tokens vs := fmt.Sprintf("%v", c.Permalinks) if strings.Contains(vs, ":filename") { hugo.DeprecateWithLogger("the \":filename\" permalink token", "Use \":contentbasename\" instead.", "0.144.0", logger.Logger()) } if strings.Contains(vs, ":slugorfilename") { hugo.DeprecateWithLogger("the \":slugorfilename\" permalink token", "Use \":slugorcontentbasename\" instead.", "0.144.0", logger.Logger()) } // Legacy render hook values. alternativeDetails := fmt.Sprintf( "Set to %q if previous value was false, or set to %q if previous value was true.", gc.RenderHookUseEmbeddedNever, gc.RenderHookUseEmbeddedFallback, ) if c.Markup.Goldmark.RenderHooks.Image.EnableDefault != nil { alternative := "Use markup.goldmark.renderHooks.image.useEmbedded instead." + " " + alternativeDetails hugo.DeprecateWithLogger("site config key markup.goldmark.renderHooks.image.enableDefault", alternative, "0.148.0", logger.Logger()) if *c.Markup.Goldmark.RenderHooks.Image.EnableDefault { c.Markup.Goldmark.RenderHooks.Image.UseEmbedded = gc.RenderHookUseEmbeddedFallback } else { c.Markup.Goldmark.RenderHooks.Image.UseEmbedded = gc.RenderHookUseEmbeddedNever } } if c.Markup.Goldmark.RenderHooks.Link.EnableDefault != nil { alternative := "Use markup.goldmark.renderHooks.link.useEmbedded instead." + " " + alternativeDetails hugo.DeprecateWithLogger("site config key markup.goldmark.renderHooks.link.enableDefault", alternative, "0.148.0", logger.Logger()) if *c.Markup.Goldmark.RenderHooks.Link.EnableDefault { c.Markup.Goldmark.RenderHooks.Link.UseEmbedded = gc.RenderHookUseEmbeddedFallback } else { c.Markup.Goldmark.RenderHooks.Link.UseEmbedded = gc.RenderHookUseEmbeddedNever } } // Validate render hook configuration. renderHookUseEmbeddedModes := []string{ gc.RenderHookUseEmbeddedAlways, gc.RenderHookUseEmbeddedAuto, gc.RenderHookUseEmbeddedFallback, gc.RenderHookUseEmbeddedNever, } if !slices.Contains(renderHookUseEmbeddedModes, c.Markup.Goldmark.RenderHooks.Image.UseEmbedded) { return fmt.Errorf("site config markup.goldmark.renderHooks.image must be one of %s", helpers.StringSliceToList(renderHookUseEmbeddedModes, "or")) } if !slices.Contains(renderHookUseEmbeddedModes, c.Markup.Goldmark.RenderHooks.Link.UseEmbedded) { return fmt.Errorf("site config markup.goldmark.renderHooks.link must be one of %s", helpers.StringSliceToList(renderHookUseEmbeddedModes, "or")) } c.C = &ConfigCompiled{ Timeout: timeout, BaseURL: baseURL, BaseURLLiveReload: baseURL, DisabledKinds: disabledKinds, DisabledLanguages: disabledLangs, IgnoredLogs: ignoredLogIDs, KindOutputFormats: kindOutputFormats, DefaultOutputFormat: defaultOutputFormat, CreateTitle: helpers.GetTitleFunc(c.TitleCaseStyle), IsUglyURLSection: isUglyURL, IgnoreFile: ignoreFile, SegmentFilter: c.Segments.Config.Get(func(s string) { logger.Warnf("Render segment %q not found in configuration", s) }, c.RootConfig.RenderSegments...), MainSections: c.MainSections, Clock: clock, HTTPCache: httpCache, transientErr: transientErr, } for _, s := range allDecoderSetups { if getCompiler := s.getCompiler; getCompiler != nil { if err := getCompiler(c).CompileConfig(logger); err != nil { return err } } } return nil } func (c *Config) IsKindEnabled(kind string) bool { return !c.C.DisabledKinds[kind] } func (c *Config) IsLangDisabled(lang string) bool { return c.C.DisabledLanguages[lang] } // ConfigCompiled holds values and functions that are derived from the config. type ConfigCompiled struct { Timeout time.Duration BaseURL urls.BaseURL BaseURLLiveReload urls.BaseURL ServerInterface string KindOutputFormats map[string]output.Formats DefaultOutputFormat output.Format DisabledKinds map[string]bool DisabledLanguages map[string]bool IgnoredLogs map[string]bool CreateTitle func(s string) string IsUglyURLSection func(section string) bool IgnoreFile func(filename string) bool SegmentFilter segments.SegmentFilter MainSections []string Clock time.Time HTTPCache httpcache.ConfigCompiled // This is set to the last transient error found during config compilation. // With themes/modules we compute the configuration in multiple passes, and // errors with missing output format definitions may resolve itself. transientErr error mu sync.Mutex } // This may be set after the config is compiled. func (c *ConfigCompiled) SetMainSections(sections []string) { c.mu.Lock() defer c.mu.Unlock() c.MainSections = sections } // IsMainSectionsSet returns whether the main sections have been set. func (c *ConfigCompiled) IsMainSectionsSet() bool { c.mu.Lock() defer c.mu.Unlock() return c.MainSections != nil } // This is set after the config is compiled by the server command. func (c *ConfigCompiled) SetServerInfo(baseURL, baseURLLiveReload urls.BaseURL, serverInterface string) { c.BaseURL = baseURL c.BaseURLLiveReload = baseURLLiveReload c.ServerInterface = serverInterface } // RootConfig holds all the top-level configuration options in Hugo type RootConfig struct { // The base URL of the site. // Note that the default value is empty, but Hugo requires a valid URL (e.g. "https://example.com/") to work properly. // {"identifiers": ["URL"] } BaseURL string // Whether to build content marked as draft.X // {"identifiers": ["draft"] } BuildDrafts bool // Whether to build content with expiryDate in the past. // {"identifiers": ["expiryDate"] } BuildExpired bool // Whether to build content with publishDate in the future. // {"identifiers": ["publishDate"] } BuildFuture bool // Copyright information. Copyright string // The language to apply to content without any language indicator. DefaultContentLanguage string // By default, we put the default content language in the root and the others below their language ID, e.g. /no/. // Set this to true to put all languages below their language ID. DefaultContentLanguageInSubdir bool // The default output format to use for the site. // If not set, we will use the first output format. DefaultOutputFormat string // Disable generation of redirect to the default language when DefaultContentLanguageInSubdir is enabled. DisableDefaultLanguageRedirect bool // Disable creation of alias redirect pages. DisableAliases bool // Disable lower casing of path segments. DisablePathToLower bool // Disable page kinds from build. DisableKinds []string // A list of languages to disable. DisableLanguages []string // The named segments to render. // This needs to match the name of the segment in the segments configuration. RenderSegments []string // Disable the injection of the Hugo generator tag on the home page. DisableHugoGeneratorInject bool // Disable live reloading in server mode. DisableLiveReload bool // Enable replacement in Pages' Content of Emoji shortcodes with their equivalent Unicode characters. // {"identifiers": ["Content", "Unicode"] } EnableEmoji bool // THe main section(s) of the site. // If not set, Hugo will try to guess this from the content. MainSections []string // Enable robots.txt generation. EnableRobotsTXT bool // When enabled, Hugo will apply Git version information to each Page if possible, which // can be used to keep lastUpdated in synch and to print version information. // {"identifiers": ["Page"] } EnableGitInfo bool // Enable to track, calculate and print metrics. TemplateMetrics bool // Enable to track, print and calculate metric hints. TemplateMetricsHints bool // Enable to disable the build lock file. NoBuildLock bool // A list of log IDs to ignore. IgnoreLogs []string // A list of regexps that match paths to ignore. // Deprecated: Use the settings on module imports. IgnoreFiles []string // Ignore cache. IgnoreCache bool // Enable to print greppable placeholders (on the form "[i18n] TRANSLATIONID") for missing translation strings. EnableMissingTranslationPlaceholders bool // Enable to panic on warning log entries. This may make it easier to detect the source. PanicOnWarning bool // The configured environment. Default is "development" for server and "production" for build. Environment string // The default language code. LanguageCode string // Enable if the site content has CJK language (Chinese, Japanese, or Korean). This affects how Hugo counts words. HasCJKLanguage bool // The default number of pages per page when paginating. // Deprecated: Use the Pagination struct. Paginate int // The path to use when creating pagination URLs, e.g. "page" in /page/2/. // Deprecated: Use the Pagination struct. PaginatePath string // Whether to pluralize default list titles. // Note that this currently only works for English, but you can provide your own title in the content file's front matter. PluralizeListTitles bool // Whether to capitalize automatic page titles, applicable to section, taxonomy, and term pages. CapitalizeListTitles bool // Make all relative URLs absolute using the baseURL. // {"identifiers": ["baseURL"] } CanonifyURLs bool // Enable this to make all relative URLs relative to content root. Note that this does not affect absolute URLs. RelativeURLs bool // Removes non-spacing marks from composite characters in content paths. RemovePathAccents bool // Whether to track and print unused templates during the build. PrintUnusedTemplates bool // Enable to print warnings for missing translation strings. PrintI18nWarnings bool // ENable to print warnings for multiple files published to the same destination. PrintPathWarnings bool // URL to be used as a placeholder when a page reference cannot be found in ref or relref. Is used as-is. RefLinksNotFoundURL string // When using ref or relref to resolve page links and a link cannot be resolved, it will be logged with this log level. // Valid values are ERROR (default) or WARNING. Any ERROR will fail the build (exit -1). RefLinksErrorLevel string // This will create a menu with all the sections as menu items and all the sections’ pages as “shadow-members”. SectionPagesMenu string // The length of text in words to show in a .Summary. SummaryLength int // The site title. Title string // The theme(s) to use. // See Modules for more a more flexible way to load themes. Theme []string // Timeout for generating page contents, specified as a duration or in seconds. Timeout string // The time zone (or location), e.g. Europe/Oslo, used to parse front matter dates without such information and in the time function. TimeZone string // Set titleCaseStyle to specify the title style used by the title template function and the automatic section titles in Hugo. // It defaults to AP Stylebook for title casing, but you can also set it to Chicago or Go (every word starts with a capital letter). TitleCaseStyle string // The editor used for opening up new content. NewContentEditor string // Don't sync modification time of files for the static mounts. NoTimes bool // Don't sync modification time of files for the static mounts. NoChmod bool // Clean the destination folder before a new build. // This currently only handles static files. CleanDestinationDir bool // A Glob pattern of module paths to ignore in the _vendor folder. IgnoreVendorPaths string config.CommonDirs `mapstructure:",squash"` // The odd constructs below are kept for backwards compatibility. // Deprecated: Use module mount config instead. StaticDir []string // Deprecated: Use module mount config instead. StaticDir0 []string // Deprecated: Use module mount config instead. StaticDir1 []string // Deprecated: Use module mount config instead. StaticDir2 []string // Deprecated: Use module mount config instead. StaticDir3 []string // Deprecated: Use module mount config instead. StaticDir4 []string // Deprecated: Use module mount config instead. StaticDir5 []string // Deprecated: Use module mount config instead. StaticDir6 []string // Deprecated: Use module mount config instead. StaticDir7 []string // Deprecated: Use module mount config instead. StaticDir8 []string // Deprecated: Use module mount config instead. StaticDir9 []string // Deprecated: Use module mount config instead. StaticDir10 []string } func (c RootConfig) staticDirs() []string { var dirs []string dirs = append(dirs, c.StaticDir...) dirs = append(dirs, c.StaticDir0...) dirs = append(dirs, c.StaticDir1...) dirs = append(dirs, c.StaticDir2...) dirs = append(dirs, c.StaticDir3...) dirs = append(dirs, c.StaticDir4...) dirs = append(dirs, c.StaticDir5...) dirs = append(dirs, c.StaticDir6...) dirs = append(dirs, c.StaticDir7...) dirs = append(dirs, c.StaticDir8...) dirs = append(dirs, c.StaticDir9...) dirs = append(dirs, c.StaticDir10...) return helpers.UniqueStringsReuse(dirs) } type Configs struct { Base *Config LoadingInfo config.LoadConfigResult LanguageConfigMap map[string]*Config LanguageConfigSlice []*Config IsMultihost bool Modules modules.Modules ModulesClient *modules.Client // All below is set in Init. Languages langs.Languages LanguagesDefaultFirst langs.Languages ContentPathParser *paths.PathParser configLangs []config.AllProvider } func (c *Configs) Validate(logger loggers.Logger) error { c.Base.Cascade.Config.Range(func(p page.PageMatcher, cfg page.PageMatcherParamsConfig) bool { page.CheckCascadePattern(logger, p) return true }) return nil } // transientErr returns the last transient error found during config compilation. func (c *Configs) transientErr() error { for _, l := range c.LanguageConfigMap { if l.C.transientErr != nil { return l.C.transientErr } } return nil } func (c *Configs) IsZero() bool { // A config always has at least one language. return c == nil || len(c.Languages) == 0 } func (c *Configs) Init() error { var languages langs.Languages var langKeys []string var hasEn bool const en = "en" for k := range c.LanguageConfigMap { langKeys = append(langKeys, k) if k == en { hasEn = true } } // Sort the LanguageConfigSlice by language weight (if set) or lang. sort.Slice(langKeys, func(i, j int) bool { ki := langKeys[i] kj := langKeys[j] lki := c.LanguageConfigMap[ki] lkj := c.LanguageConfigMap[kj] li := lki.Languages[ki] lj := lkj.Languages[kj] if li.Weight != lj.Weight { return li.Weight < lj.Weight } return ki < kj }) // See issue #13646. defaultConfigLanguageFallback := en if !hasEn { // Pick the first one. defaultConfigLanguageFallback = langKeys[0] } if c.Base.DefaultContentLanguage == "" { c.Base.DefaultContentLanguage = defaultConfigLanguageFallback } for _, k := range langKeys { v := c.LanguageConfigMap[k] if v.DefaultContentLanguage == "" { v.DefaultContentLanguage = defaultConfigLanguageFallback } c.LanguageConfigSlice = append(c.LanguageConfigSlice, v) languageConf := v.Languages[k] language, err := langs.NewLanguage(k, c.Base.DefaultContentLanguage, v.TimeZone, languageConf) if err != nil { return err } languages = append(languages, language) } // Filter out disabled languages. var n int for _, l := range languages { if !l.Disabled { languages[n] = l n++ } } languages = languages[:n] var languagesDefaultFirst langs.Languages for _, l := range languages { if l.Lang == c.Base.DefaultContentLanguage { languagesDefaultFirst = append(languagesDefaultFirst, l) } } for _, l := range languages { if l.Lang != c.Base.DefaultContentLanguage { languagesDefaultFirst = append(languagesDefaultFirst, l) } } c.Languages = languages c.LanguagesDefaultFirst = languagesDefaultFirst c.ContentPathParser = &paths.PathParser{ LanguageIndex: languagesDefaultFirst.AsIndexSet(), IsLangDisabled: c.Base.IsLangDisabled, IsContentExt: c.Base.ContentTypes.Config.IsContentSuffix, IsOutputFormat: func(name, ext string) bool { if name == "" { return false } if of, ok := c.Base.OutputFormats.Config.GetByName(name); ok { if ext != "" && !of.MediaType.HasSuffix(ext) { return false } return true } return false }, } c.configLangs = make([]config.AllProvider, len(c.Languages)) for i, l := range c.LanguagesDefaultFirst { c.configLangs[i] = ConfigLanguage{ m: c, config: c.LanguageConfigMap[l.Lang], baseConfig: c.LoadingInfo.BaseConfig, language: l, } } if len(c.Modules) == 0 { return errors.New("no modules loaded (need at least the main module)") } // Apply default project mounts. if err := modules.ApplyProjectConfigDefaults(c.Modules[0], c.configLangs...); err != nil { return err } // We should consolidate this, but to get a full view of the mounts in e.g. "hugo config" we need to // transfer any default mounts added above to the config used to print the config. for _, m := range c.Modules[0].Mounts() { var found bool for _, cm := range c.Base.Module.Mounts { if cm.Source == m.Source && cm.Target == m.Target && cm.Lang == m.Lang { found = true break } } if !found { c.Base.Module.Mounts = append(c.Base.Module.Mounts, m) } } // Transfer the changed mounts to the language versions (all share the same mount set, but can be displayed in different languages). for _, l := range c.LanguageConfigSlice { l.Module.Mounts = c.Base.Module.Mounts } return nil } func (c Configs) ConfigLangs() []config.AllProvider { return c.configLangs } func (c Configs) GetFirstLanguageConfig() config.AllProvider { return c.configLangs[0] } func (c Configs) GetByLang(lang string) config.AllProvider { for _, l := range c.configLangs { if l.Language().Lang == lang { return l } } return nil } func newDefaultConfig() *Config { return &Config{ Taxonomies: map[string]string{"tag": "tags", "category": "categories"}, Sitemap: config.SitemapConfig{Priority: -1, Filename: "sitemap.xml"}, RootConfig: RootConfig{ Environment: hugo.EnvironmentProduction, TitleCaseStyle: "AP", PluralizeListTitles: true, CapitalizeListTitles: true, StaticDir: []string{"static"}, SummaryLength: 70, Timeout: "60s", CommonDirs: config.CommonDirs{ ArcheTypeDir: "archetypes", ContentDir: "content", ResourceDir: "resources", PublishDir: "public", ThemesDir: "themes", AssetDir: "assets", LayoutDir: "layouts", I18nDir: "i18n", DataDir: "data", }, }, } } // fromLoadConfigResult creates a new Config from res. func fromLoadConfigResult(fs afero.Fs, logger loggers.Logger, res config.LoadConfigResult) (*Configs, error) { if !res.Cfg.IsSet("languages") { // We need at least one lang := res.Cfg.GetString("defaultContentLanguage") if lang == "" { lang = "en" } res.Cfg.Set("languages", maps.Params{lang: maps.Params{}}) } bcfg := res.BaseConfig cfg := res.Cfg all := newDefaultConfig() err := decodeConfigFromParams(fs, logger, bcfg, cfg, all, nil) if err != nil { return nil, err } langConfigMap := make(map[string]*Config) languagesConfig := cfg.GetStringMap("languages") var isMultihost bool if err := all.CompileConfig(logger); err != nil { return nil, err } for k, v := range languagesConfig { mergedConfig := config.New() var differentRootKeys []string switch x := v.(type) { case nil: case maps.Params: _, found := x["params"] if !found { x["params"] = maps.Params{ maps.MergeStrategyKey: maps.ParamsMergeStrategyDeep, } } for kk, vv := range x { if kk == "_merge" { continue } if kk == "baseurl" { // baseURL configure don the language level is a multihost setup. isMultihost = true } if p, ok := vv.(maps.Params); ok { // With the introduction of YAML anchor and alias support, language config entries // may be contain shared references. // This also break potential cycles. vv = maps.CloneParamsDeep(p) } mergedConfig.Set(kk, vv) rootv := cfg.Get(kk) if rootv != nil && cfg.IsSet(kk) { // This overrides a root key and potentially needs a merge. if !reflect.DeepEqual(rootv, vv) { switch vvv := vv.(type) { case maps.Params: differentRootKeys = append(differentRootKeys, kk) // Use the language value as base. // Note that this is already cloned above. mergedConfigEntry := vvv // Merge in the root value. maps.MergeParams(mergedConfigEntry, rootv.(maps.Params)) mergedConfig.Set(kk, mergedConfigEntry) default: // Apply new values to the root. differentRootKeys = append(differentRootKeys, "") } } } else { switch vv.(type) { case maps.Params: differentRootKeys = append(differentRootKeys, kk) default: // Apply new values to the root. differentRootKeys = append(differentRootKeys, "") } } } differentRootKeys = helpers.UniqueStringsSorted(differentRootKeys) if len(differentRootKeys) == 0 { langConfigMap[k] = all continue } // Create a copy of the complete config and replace the root keys with the language specific ones. clone := all.cloneForLang() if err := decodeConfigFromParams(fs, logger, bcfg, mergedConfig, clone, differentRootKeys); err != nil { return nil, fmt.Errorf("failed to decode config for language %q: %w", k, err) } if err := clone.CompileConfig(logger); err != nil { return nil, err } // Adjust Goldmark config defaults for multilingual, single-host sites. if len(languagesConfig) > 1 && !isMultihost && !clone.Markup.Goldmark.DuplicateResourceFiles { if clone.Markup.Goldmark.RenderHooks.Image.UseEmbedded == gc.RenderHookUseEmbeddedAuto { clone.Markup.Goldmark.RenderHooks.Image.UseEmbedded = gc.RenderHookUseEmbeddedFallback } if clone.Markup.Goldmark.RenderHooks.Link.UseEmbedded == gc.RenderHookUseEmbeddedAuto { clone.Markup.Goldmark.RenderHooks.Link.UseEmbedded = gc.RenderHookUseEmbeddedFallback } } langConfigMap[k] = clone case maps.ParamsMergeStrategy: default: panic(fmt.Sprintf("unknown type in languages config: %T", v)) } } bcfg.PublishDir = all.PublishDir res.BaseConfig = bcfg all.CommonDirs.CacheDir = bcfg.CacheDir for _, l := range langConfigMap { l.CommonDirs.CacheDir = bcfg.CacheDir } cm := &Configs{ Base: all, LanguageConfigMap: langConfigMap, LoadingInfo: res, IsMultihost: isMultihost, } return cm, nil } func decodeConfigFromParams(fs afero.Fs, logger loggers.Logger, bcfg config.BaseConfig, p config.Provider, target *Config, keys []string) error { var decoderSetups []decodeWeight if len(keys) == 0 { for _, v := range allDecoderSetups { decoderSetups = append(decoderSetups, v) } } else { for _, key := range keys { if v, found := allDecoderSetups[key]; found { decoderSetups = append(decoderSetups, v) } else { logger.Warnf("Skip unknown config key %q", key) } } } // Sort them to get the dependency order right. sort.Slice(decoderSetups, func(i, j int) bool { ki, kj := decoderSetups[i], decoderSetups[j] if ki.weight == kj.weight { return ki.key < kj.key } return ki.weight < kj.weight }) for _, v := range decoderSetups { p := decodeConfig{p: p, c: target, fs: fs, bcfg: bcfg} if err := v.decode(v, p); err != nil { return fmt.Errorf("failed to decode %q: %w", v.key, err) } } return nil } func createDefaultOutputFormats(allFormats output.Formats) map[string][]string { if len(allFormats) == 0 { panic("no output formats") } rssOut, rssFound := allFormats.GetByName(output.RSSFormat.Name) htmlOut, _ := allFormats.GetByName(output.HTMLFormat.Name) defaultListTypes := []string{htmlOut.Name} if rssFound { defaultListTypes = append(defaultListTypes, rssOut.Name) } m := map[string][]string{ kinds.KindPage: {htmlOut.Name}, kinds.KindHome: defaultListTypes, kinds.KindSection: defaultListTypes, kinds.KindTerm: defaultListTypes, kinds.KindTaxonomy: defaultListTypes, } // May be disabled if rssFound { m["rss"] = []string{rssOut.Name} } return m } gohugoio-hugo-6abdaca/config/allconfig/allconfig_integration_test.go000066400000000000000000000214621507671574500262750ustar00rootroot00000000000000package allconfig_test import ( "path/filepath" "strings" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/hugolib" gc "github.com/gohugoio/hugo/markup/goldmark/goldmark_config" "github.com/gohugoio/hugo/media" ) func TestDirsMount(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" disableKinds = ["taxonomy", "term"] [languages] [languages.en] weight = 1 [languages.sv] weight = 2 [[module.mounts]] source = 'content/en' target = 'content' lang = 'en' [[module.mounts]] source = 'content/sv' target = 'content' lang = 'sv' -- content/en/p1.md -- --- title: "p1" --- -- content/sv/p1.md -- --- title: "p1" --- -- layouts/_default/single.html -- Title: {{ .Title }} ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{T: t, TxtarString: files}, ).Build() // b.AssertFileContent("public/p1/index.html", "Title: p1") sites := b.H.Sites b.Assert(len(sites), qt.Equals, 2) configs := b.H.Configs mods := configs.Modules b.Assert(len(mods), qt.Equals, 1) mod := mods[0] b.Assert(mod.Mounts(), qt.HasLen, 8) enConcp := sites[0].Conf enConf := enConcp.GetConfig().(*allconfig.Config) b.Assert(enConcp.BaseURL().String(), qt.Equals, "https://example.com/") modConf := enConf.Module b.Assert(modConf.Mounts, qt.HasLen, 8) b.Assert(modConf.Mounts[0].Source, qt.Equals, filepath.FromSlash("content/en")) b.Assert(modConf.Mounts[0].Target, qt.Equals, "content") b.Assert(modConf.Mounts[0].Lang, qt.Equals, "en") b.Assert(modConf.Mounts[1].Source, qt.Equals, filepath.FromSlash("content/sv")) b.Assert(modConf.Mounts[1].Target, qt.Equals, "content") b.Assert(modConf.Mounts[1].Lang, qt.Equals, "sv") } func TestConfigAliases(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" logI18nWarnings = true logPathWarnings = true ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{T: t, TxtarString: files}, ).Build() conf := b.H.Configs.Base b.Assert(conf.PrintI18nWarnings, qt.Equals, true) b.Assert(conf.PrintPathWarnings, qt.Equals, true) } func TestRedefineContentTypes(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" [mediaTypes] [mediaTypes."text/html"] suffixes = ["html", "xhtml"] ` b := hugolib.Test(t, files) conf := b.H.Configs.Base contentTypes := conf.ContentTypes.Config b.Assert(contentTypes.HTML.Suffixes(), qt.DeepEquals, []string{"html", "xhtml"}) b.Assert(contentTypes.Markdown.Suffixes(), qt.DeepEquals, []string{"md", "mdown", "markdown"}) } func TestPaginationConfig(t *testing.T) { files := ` -- hugo.toml -- [languages.en] weight = 1 [languages.en.pagination] pagerSize = 20 [languages.de] weight = 2 [languages.de.pagination] path = "page-de" ` b := hugolib.Test(t, files) confEn := b.H.Sites[0].Conf.Pagination() confDe := b.H.Sites[1].Conf.Pagination() b.Assert(confEn.Path, qt.Equals, "page") b.Assert(confEn.PagerSize, qt.Equals, 20) b.Assert(confDe.Path, qt.Equals, "page-de") b.Assert(confDe.PagerSize, qt.Equals, 10) } func TestPaginationConfigDisableAliases(t *testing.T) { files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term"] [pagination] disableAliases = true pagerSize = 2 -- layouts/_default/list.html -- {{ $paginator := .Paginate site.RegularPages }} {{ template "_internal/pagination.html" . }} {{ range $paginator.Pages }} {{ .Title }} {{ end }} -- content/p1.md -- --- title: "p1" --- -- content/p2.md -- --- title: "p2" --- -- content/p3.md -- --- title: "p3" --- ` b := hugolib.Test(t, files) b.AssertFileExists("public/page/1/index.html", false) b.AssertFileContent("public/page/2/index.html", "pagination-default") } func TestMapUglyURLs(t *testing.T) { files := ` -- hugo.toml -- [uglyurls] posts = true ` b := hugolib.Test(t, files) c := b.H.Configs.Base b.Assert(c.C.IsUglyURLSection("posts"), qt.IsTrue) b.Assert(c.C.IsUglyURLSection("blog"), qt.IsFalse) } // Issue 13199 func TestInvalidOutputFormat(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['page','rss','section','sitemap','taxonomy','term'] [outputs] home = ['html','foo'] -- layouts/index.html -- x ` b, err := hugolib.TestE(t, files) b.Assert(err, qt.IsNotNil) b.Assert(err.Error(), qt.Contains, `failed to create config: unknown output format "foo" for kind "home"`) } // Issue 13201 func TestLanguageConfigSlice(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['page','rss','section','sitemap','taxonomy','term'] [languages.en] title = 'TITLE_EN' weight = 2 [languages.de] title = 'TITLE_DE' weight = 1 [languages.fr] title = 'TITLE_FR' weight = 3 ` b := hugolib.Test(t, files) b.Assert(b.H.Configs.LanguageConfigSlice[0].Title, qt.Equals, `TITLE_DE`) } func TestContentTypesDefault(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" ` b := hugolib.Test(t, files) ct := b.H.Configs.Base.ContentTypes c := ct.Config s := ct.SourceStructure.(map[string]media.ContentTypeConfig) b.Assert(c.IsContentFile("foo.md"), qt.Equals, true) b.Assert(len(s), qt.Equals, 6) } func TestMergeDeep(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- baseURL = "https://example.com" theme = ["theme1", "theme2"] _merge = "deep" -- themes/theme1/hugo.toml -- [sitemap] filename = 'mysitemap.xml' [services] [services.googleAnalytics] id = 'foo bar' [taxonomies] foo = 'bars' -- themes/theme2/config/_default/hugo.toml -- [taxonomies] bar = 'baz' -- layouts/home.html -- GA ID: {{ site.Config.Services.GoogleAnalytics.ID }}. ` b := hugolib.Test(t, files) conf := b.H.Configs base := conf.Base b.Assert(base.Environment, qt.Equals, hugo.EnvironmentProduction) b.Assert(base.BaseURL, qt.Equals, "https://example.com") b.Assert(base.Sitemap.Filename, qt.Equals, "mysitemap.xml") b.Assert(base.Taxonomies, qt.DeepEquals, map[string]string{"bar": "baz", "foo": "bars"}) b.AssertFileContent("public/index.html", "GA ID: foo bar.") } func TestMergeDeepBuildStats(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- baseURL = "https://example.com" title = "Theme 1" _merge = "deep" [module] [module.hugoVersion] [[module.imports]] path = "theme1" -- themes/theme1/hugo.toml -- [build] [build.buildStats] disableIDs = true enable = true -- layouts/home.html -- Home. ` b := hugolib.Test(t, files, hugolib.TestOptOsFs()) conf := b.H.Configs base := conf.Base b.Assert(base.Title, qt.Equals, "Theme 1") b.Assert(len(base.Module.Imports), qt.Equals, 1) b.Assert(base.Build.BuildStats.Enable, qt.Equals, true) b.AssertFileExists("/hugo_stats.json", true) } func TestMergeDeepBuildStatsTheme(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- baseURL = "https://example.com" _merge = "deep" theme = ["theme1"] -- themes/theme1/hugo.toml -- title = "Theme 1" [build] [build.buildStats] disableIDs = true enable = true -- layouts/home.html -- Home. ` b := hugolib.Test(t, files, hugolib.TestOptOsFs()) conf := b.H.Configs base := conf.Base b.Assert(base.Title, qt.Equals, "Theme 1") b.Assert(len(base.Module.Imports), qt.Equals, 1) b.Assert(base.Build.BuildStats.Enable, qt.Equals, true) b.AssertFileExists("/hugo_stats.json", true) } func TestDefaultConfigLanguageBlankWhenNoEnglishExists(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- baseURL = "https://example.com" [languages] [languages.nn] weight = 20 [languages.sv] weight = 10 [languages.sv.taxonomies] tag = "taggar" -- layouts/all.html -- All. ` b := hugolib.Test(t, files) b.Assert(b.H.Conf.DefaultContentLanguage(), qt.Equals, "sv") } func TestDefaultConfigEnvDisableLanguagesIssue13707(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableLanguages = [] [languages] [languages.en] weight = 1 [languages.nn] weight = 2 [languages.sv] weight = 3 ` b := hugolib.Test(t, files, hugolib.TestOptWithConfig(func(conf *hugolib.IntegrationTestConfig) { conf.Environ = []string{`HUGO_DISABLELANGUAGES=sv nn`} })) b.Assert(len(b.H.Sites), qt.Equals, 1) } // Issue 13535 // We changed enablement of the embedded link and image render hooks from // booleans to enums in v0.148.0. func TestLegacyEmbeddedRenderHookEnablement(t *testing.T) { files := ` -- hugo.toml -- [markup.goldmark.renderHooks.image] #KEY_VALUE [markup.goldmark.renderHooks.link] #KEY_VALUE ` f := strings.ReplaceAll(files, "#KEY_VALUE", "enableDefault = false") b := hugolib.Test(t, f) c := b.H.Configs.Base.Markup.Goldmark.RenderHooks b.Assert(c.Link.UseEmbedded, qt.Equals, gc.RenderHookUseEmbeddedNever) b.Assert(c.Image.UseEmbedded, qt.Equals, gc.RenderHookUseEmbeddedNever) f = strings.ReplaceAll(files, "#KEY_VALUE", "enableDefault = true") b = hugolib.Test(t, f) c = b.H.Configs.Base.Markup.Goldmark.RenderHooks b.Assert(c.Link.UseEmbedded, qt.Equals, gc.RenderHookUseEmbeddedFallback) b.Assert(c.Image.UseEmbedded, qt.Equals, gc.RenderHookUseEmbeddedFallback) } gohugoio-hugo-6abdaca/config/allconfig/alldecoders.go000066400000000000000000000276751507671574500231720ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package allconfig import ( "fmt" "strings" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/cache/httpcache" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/privacy" "github.com/gohugoio/hugo/config/security" "github.com/gohugoio/hugo/config/services" "github.com/gohugoio/hugo/deploy/deployconfig" "github.com/gohugoio/hugo/hugolib/segments" "github.com/gohugoio/hugo/langs" "github.com/gohugoio/hugo/markup/markup_config" "github.com/gohugoio/hugo/media" "github.com/gohugoio/hugo/minifiers" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/navigation" "github.com/gohugoio/hugo/output" "github.com/gohugoio/hugo/related" "github.com/gohugoio/hugo/resources/images" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/page/pagemeta" "github.com/mitchellh/mapstructure" "github.com/spf13/afero" "github.com/spf13/cast" ) type decodeConfig struct { p config.Provider c *Config fs afero.Fs bcfg config.BaseConfig } type decodeWeight struct { key string decode func(decodeWeight, decodeConfig) error getCompiler func(c *Config) configCompiler weight int internalOrDeprecated bool // Hide it from the docs. } var allDecoderSetups = map[string]decodeWeight{ "": { key: "", weight: -100, // Always first. decode: func(d decodeWeight, p decodeConfig) error { if err := mapstructure.WeakDecode(p.p.Get(""), &p.c.RootConfig); err != nil { return err } // This need to match with Lang which is always lower case. p.c.RootConfig.DefaultContentLanguage = strings.ToLower(p.c.RootConfig.DefaultContentLanguage) return nil }, }, "imaging": { key: "imaging", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Imaging, err = images.DecodeConfig(p.p.GetStringMap(d.key)) return err }, }, "caches": { key: "caches", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Caches, err = filecache.DecodeConfig(p.fs, p.bcfg, p.p.GetStringMap(d.key)) if p.c.IgnoreCache { // Set MaxAge in all caches to 0. for k, cache := range p.c.Caches { cache.MaxAge = 0 p.c.Caches[k] = cache } } return err }, }, "httpcache": { key: "httpcache", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.HTTPCache, err = httpcache.DecodeConfig(p.bcfg, p.p.GetStringMap(d.key)) if p.c.IgnoreCache { p.c.HTTPCache.Cache.For.Excludes = []string{"**"} p.c.HTTPCache.Cache.For.Includes = []string{} } return err }, }, "build": { key: "build", decode: func(d decodeWeight, p decodeConfig) error { p.c.Build = config.DecodeBuildConfig(p.p) return nil }, getCompiler: func(c *Config) configCompiler { return &c.Build }, }, "frontmatter": { key: "frontmatter", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Frontmatter, err = pagemeta.DecodeFrontMatterConfig(p.p) return err }, }, "markup": { key: "markup", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Markup, err = markup_config.Decode(p.p) return err }, }, "segments": { key: "segments", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Segments, err = segments.DecodeSegments(p.p.GetStringMap(d.key)) return err }, }, "server": { key: "server", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Server, err = config.DecodeServer(p.p) return err }, getCompiler: func(c *Config) configCompiler { return &c.Server }, }, "minify": { key: "minify", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Minify, err = minifiers.DecodeConfig(p.p.Get(d.key)) return err }, }, "contenttypes": { key: "contenttypes", weight: 100, // This needs to be decoded after media types. decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.ContentTypes, err = media.DecodeContentTypes(p.p.GetStringMap(d.key), p.c.MediaTypes.Config) return err }, }, "mediatypes": { key: "mediatypes", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.MediaTypes, err = media.DecodeTypes(p.p.GetStringMap(d.key)) return err }, }, "outputs": { key: "outputs", decode: func(d decodeWeight, p decodeConfig) error { defaults := createDefaultOutputFormats(p.c.OutputFormats.Config) m := maps.CleanConfigStringMap(p.p.GetStringMap("outputs")) p.c.Outputs = make(map[string][]string) for k, v := range m { s := types.ToStringSlicePreserveString(v) for i, v := range s { s[i] = strings.ToLower(v) } p.c.Outputs[k] = s } // Apply defaults. for k, v := range defaults { if _, found := p.c.Outputs[k]; !found { p.c.Outputs[k] = v } } return nil }, }, "outputformats": { key: "outputformats", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.OutputFormats, err = output.DecodeConfig(p.c.MediaTypes.Config, p.p.Get(d.key)) return err }, }, "params": { key: "params", decode: func(d decodeWeight, p decodeConfig) error { p.c.Params = maps.CleanConfigStringMap(p.p.GetStringMap("params")) if p.c.Params == nil { p.c.Params = make(map[string]any) } // Before Hugo 0.112.0 this was configured via site Params. if mainSections, found := p.c.Params["mainsections"]; found { p.c.MainSections = types.ToStringSlicePreserveString(mainSections) if p.c.MainSections == nil { p.c.MainSections = []string{} } } return nil }, }, "module": { key: "module", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Module, err = modules.DecodeConfig(p.p) return err }, }, "permalinks": { key: "permalinks", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Permalinks, err = page.DecodePermalinksConfig(p.p.GetStringMap(d.key)) return err }, }, "sitemap": { key: "sitemap", decode: func(d decodeWeight, p decodeConfig) error { var err error if p.p.IsSet(d.key) { p.c.Sitemap, err = config.DecodeSitemap(p.c.Sitemap, p.p.GetStringMap(d.key)) } return err }, }, "taxonomies": { key: "taxonomies", decode: func(d decodeWeight, p decodeConfig) error { if p.p.IsSet(d.key) { p.c.Taxonomies = maps.CleanConfigStringMapString(p.p.GetStringMapString(d.key)) } return nil }, }, "related": { key: "related", weight: 100, // This needs to be decoded after taxonomies. decode: func(d decodeWeight, p decodeConfig) error { if p.p.IsSet(d.key) { var err error p.c.Related, err = related.DecodeConfig(p.p.GetParams(d.key)) if err != nil { return fmt.Errorf("failed to decode related config: %w", err) } } else { p.c.Related = related.DefaultConfig if _, found := p.c.Taxonomies["tag"]; found { p.c.Related.Add(related.IndexConfig{Name: "tags", Weight: 80, Type: related.TypeBasic}) } } return nil }, }, "languages": { key: "languages", decode: func(d decodeWeight, p decodeConfig) error { var err error m := p.p.GetStringMap(d.key) if len(m) == 1 { // In v0.112.4 we moved this to the language config, but it's very commmon for mono language sites to have this at the top level. var first maps.Params var ok bool for _, v := range m { first, ok = v.(maps.Params) if ok { break } } if first != nil { if _, found := first["languagecode"]; !found { first["languagecode"] = p.p.GetString("languagecode") } } } p.c.Languages, err = langs.DecodeConfig(m) if err != nil { return err } // Validate defaultContentLanguage. if p.c.DefaultContentLanguage != "" { var found bool for lang := range p.c.Languages { if lang == p.c.DefaultContentLanguage { found = true break } } if !found { return fmt.Errorf("config value %q for defaultContentLanguage does not match any language definition", p.c.DefaultContentLanguage) } } return nil }, }, "cascade": { key: "cascade", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Cascade, err = page.DecodeCascadeConfig(nil, true, p.p.Get(d.key)) return err }, }, "menus": { key: "menus", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Menus, err = navigation.DecodeConfig(p.p.Get(d.key)) return err }, }, "page": { key: "page", decode: func(d decodeWeight, p decodeConfig) error { p.c.Page = config.PageConfig{ NextPrevSortOrder: "desc", NextPrevInSectionSortOrder: "desc", } if p.p.IsSet(d.key) { if err := mapstructure.WeakDecode(p.p.Get(d.key), &p.c.Page); err != nil { return err } } return nil }, getCompiler: func(c *Config) configCompiler { return &c.Page }, }, "pagination": { key: "pagination", decode: func(d decodeWeight, p decodeConfig) error { p.c.Pagination = config.Pagination{ PagerSize: 10, Path: "page", } if p.p.IsSet(d.key) { if err := mapstructure.WeakDecode(p.p.Get(d.key), &p.c.Pagination); err != nil { return err } } return nil }, }, "privacy": { key: "privacy", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Privacy, err = privacy.DecodeConfig(p.p) return err }, }, "security": { key: "security", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Security, err = security.DecodeConfig(p.p) return err }, }, "services": { key: "services", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Services, err = services.DecodeConfig(p.p) return err }, }, "deployment": { key: "deployment", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Deployment, err = deployconfig.DecodeConfig(p.p) return err }, }, "author": { key: "author", decode: func(d decodeWeight, p decodeConfig) error { p.c.Author = maps.CleanConfigStringMap(p.p.GetStringMap(d.key)) return nil }, internalOrDeprecated: true, }, "social": { key: "social", decode: func(d decodeWeight, p decodeConfig) error { p.c.Social = maps.CleanConfigStringMapString(p.p.GetStringMapString(d.key)) return nil }, internalOrDeprecated: true, }, "uglyurls": { key: "uglyurls", decode: func(d decodeWeight, p decodeConfig) error { v := p.p.Get(d.key) switch vv := v.(type) { case bool: p.c.UglyURLs = vv case string: p.c.UglyURLs = vv == "true" case maps.Params: p.c.UglyURLs = cast.ToStringMapBool(maps.CleanConfigStringMap(vv)) default: p.c.UglyURLs = cast.ToStringMapBool(v) } return nil }, internalOrDeprecated: true, }, "internal": { key: "internal", decode: func(d decodeWeight, p decodeConfig) error { return mapstructure.WeakDecode(p.p.GetStringMap(d.key), &p.c.Internal) }, internalOrDeprecated: true, }, } func init() { for k, v := range allDecoderSetups { // Verify that k and v.key is all lower case. if k != strings.ToLower(k) { panic(fmt.Sprintf("key %q is not lower case", k)) } if v.key != strings.ToLower(v.key) { panic(fmt.Sprintf("key %q is not lower case", v.key)) } if k != v.key { panic(fmt.Sprintf("key %q is not the same as the map key %q", k, v.key)) } } } gohugoio-hugo-6abdaca/config/allconfig/configlanguage.go000066400000000000000000000140231507671574500236410ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package allconfig import ( "time" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/urls" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/langs" ) type ConfigLanguage struct { config *Config baseConfig config.BaseConfig m *Configs language *langs.Language } func (c ConfigLanguage) Language() *langs.Language { return c.language } func (c ConfigLanguage) Languages() langs.Languages { return c.m.Languages } func (c ConfigLanguage) LanguagesDefaultFirst() langs.Languages { return c.m.LanguagesDefaultFirst } func (c ConfigLanguage) PathParser() *paths.PathParser { return c.m.ContentPathParser } func (c ConfigLanguage) LanguagePrefix() string { if c.DefaultContentLanguageInSubdir() && c.DefaultContentLanguage() == c.Language().Lang { return c.Language().Lang } if !c.IsMultilingual() || c.DefaultContentLanguage() == c.Language().Lang { return "" } return c.Language().Lang } func (c ConfigLanguage) BaseURL() urls.BaseURL { return c.config.C.BaseURL } func (c ConfigLanguage) BaseURLLiveReload() urls.BaseURL { return c.config.C.BaseURLLiveReload } func (c ConfigLanguage) Environment() string { return c.config.Environment } func (c ConfigLanguage) IsMultihost() bool { if len(c.m.Languages)-len(c.config.C.DisabledLanguages) <= 1 { return false } return c.m.IsMultihost } func (c ConfigLanguage) FastRenderMode() bool { return c.config.Internal.FastRenderMode } func (c ConfigLanguage) IsMultilingual() bool { return len(c.m.Languages) > 1 } func (c ConfigLanguage) TemplateMetrics() bool { return c.config.TemplateMetrics } func (c ConfigLanguage) TemplateMetricsHints() bool { return c.config.TemplateMetricsHints } func (c ConfigLanguage) IsLangDisabled(lang string) bool { return c.config.C.DisabledLanguages[lang] } func (c ConfigLanguage) IgnoredLogs() map[string]bool { return c.config.C.IgnoredLogs } func (c ConfigLanguage) NoBuildLock() bool { return c.config.NoBuildLock } func (c ConfigLanguage) NewContentEditor() string { return c.config.NewContentEditor } func (c ConfigLanguage) Timeout() time.Duration { return c.config.C.Timeout } func (c ConfigLanguage) BaseConfig() config.BaseConfig { return c.baseConfig } func (c ConfigLanguage) Dirs() config.CommonDirs { return c.config.CommonDirs } func (c ConfigLanguage) DirsBase() config.CommonDirs { return c.m.Base.CommonDirs } func (c ConfigLanguage) WorkingDir() string { return c.m.Base.WorkingDir } func (c ConfigLanguage) Quiet() bool { return c.m.Base.Internal.Quiet } func (c ConfigLanguage) Watching() bool { return c.m.Base.Internal.Watch } func (c ConfigLanguage) NewIdentityManager(name string, opts ...identity.ManagerOption) identity.Manager { if !c.Watching() { return identity.NopManager } return identity.NewManager(name, opts...) } func (c ConfigLanguage) ContentTypes() config.ContentTypesProvider { return c.config.ContentTypes.Config } // GetConfigSection is mostly used in tests. The switch statement isn't complete, but what's in use. func (c ConfigLanguage) GetConfigSection(s string) any { switch s { case "security": return c.config.Security case "build": return c.config.Build case "frontmatter": return c.config.Frontmatter case "caches": return c.config.Caches case "markup": return c.config.Markup case "mediaTypes": return c.config.MediaTypes.Config case "outputFormats": return c.config.OutputFormats.Config case "permalinks": return c.config.Permalinks case "minify": return c.config.Minify case "allModules": return c.m.Modules case "deployment": return c.config.Deployment case "httpCacheCompiled": return c.config.C.HTTPCache default: panic("not implemented: " + s) } } func (c ConfigLanguage) GetConfig() any { return c.config } func (c ConfigLanguage) CanonifyURLs() bool { return c.config.CanonifyURLs } func (c ConfigLanguage) IsUglyURLs(section string) bool { return c.config.C.IsUglyURLSection(section) } func (c ConfigLanguage) IgnoreFile(s string) bool { return c.config.C.IgnoreFile(s) } func (c ConfigLanguage) DisablePathToLower() bool { return c.config.DisablePathToLower } func (c ConfigLanguage) RemovePathAccents() bool { return c.config.RemovePathAccents } func (c ConfigLanguage) DefaultContentLanguage() string { return c.config.DefaultContentLanguage } func (c ConfigLanguage) DefaultContentLanguageInSubdir() bool { return c.config.DefaultContentLanguageInSubdir } func (c ConfigLanguage) SummaryLength() int { return c.config.SummaryLength } func (c ConfigLanguage) BuildExpired() bool { return c.config.BuildExpired } func (c ConfigLanguage) BuildFuture() bool { return c.config.BuildFuture } func (c ConfigLanguage) BuildDrafts() bool { return c.config.BuildDrafts } func (c ConfigLanguage) Running() bool { return c.config.Internal.Running } func (c ConfigLanguage) PrintUnusedTemplates() bool { return c.config.PrintUnusedTemplates } func (c ConfigLanguage) EnableMissingTranslationPlaceholders() bool { return c.config.EnableMissingTranslationPlaceholders } func (c ConfigLanguage) PrintI18nWarnings() bool { return c.config.PrintI18nWarnings } func (c ConfigLanguage) CreateTitle(s string) string { return c.config.C.CreateTitle(s) } func (c ConfigLanguage) Pagination() config.Pagination { return c.config.Pagination } func (c ConfigLanguage) StaticDirs() []string { return c.config.staticDirs() } func (c ConfigLanguage) EnableEmoji() bool { return c.config.EnableEmoji } gohugoio-hugo-6abdaca/config/allconfig/docshelper.go000066400000000000000000000026211507671574500230210ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package allconfig import ( "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/docshelper" ) // This is is just some helpers used to create some JSON used in the Hugo docs. func init() { docsProvider := func() docshelper.DocProvider { cfg := config.New() for configRoot, v := range allDecoderSetups { if v.internalOrDeprecated { continue } cfg.Set(configRoot, make(maps.Params)) } lang := maps.Params{ "en": maps.Params{ "menus": maps.Params{}, "params": maps.Params{}, }, } cfg.Set("languages", lang) cfg.SetDefaultMergeStrategy() configHelpers := map[string]any{ "mergeStrategy": cfg.Get(""), } return docshelper.DocProvider{"config_helpers": configHelpers} } docshelper.AddDocProviderFunc(docsProvider) } gohugoio-hugo-6abdaca/config/allconfig/load.go000066400000000000000000000353241507671574500216160ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package allconfig contains the full configuration for Hugo. package allconfig import ( "errors" "fmt" "os" "path/filepath" "runtime/debug" "strings" "github.com/gobwas/glob" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" hglob "github.com/gohugoio/hugo/hugofs/glob" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/afero" ) //lint:ignore ST1005 end user message. var ErrNoConfigFile = errors.New("Unable to locate config file or config directory. Perhaps you need to create a new site.\n Run `hugo help new` for details.\n") func LoadConfig(d ConfigSourceDescriptor) (configs *Configs, err error) { defer func() { if r := recover(); r != nil { err = fmt.Errorf("failed to load config: %v", r) debug.PrintStack() } }() if len(d.Environ) == 0 && !hugo.IsRunningAsTest() { d.Environ = os.Environ() } if d.Logger == nil { d.Logger = loggers.NewDefault() } l := &configLoader{ConfigSourceDescriptor: d, cfg: config.New()} // Make sure we always do this, even in error situations, // as we have commands (e.g. "hugo mod init") that will // use a partial configuration to do its job. defer l.deleteMergeStrategies() res, _, err := l.loadConfigMain(d) if err != nil { return nil, fmt.Errorf("failed to load config: %w", err) } configs, err = fromLoadConfigResult(d.Fs, d.Logger, res) if err != nil { return nil, fmt.Errorf("failed to create config from result: %w", err) } moduleConfig, modulesClient, err := l.loadModules(configs, d.IgnoreModuleDoesNotExist) if err != nil { return nil, fmt.Errorf("failed to load modules: %w", err) } if len(l.ModulesConfigFiles) > 0 { // Config merged in from modules. // Re-read the config. configs, err = fromLoadConfigResult(d.Fs, d.Logger, res) if err != nil { return nil, fmt.Errorf("failed to create config from modules config: %w", err) } if err := configs.transientErr(); err != nil { return nil, fmt.Errorf("failed to create config from modules config: %w", err) } configs.LoadingInfo.ConfigFiles = append(configs.LoadingInfo.ConfigFiles, l.ModulesConfigFiles...) } else if err := configs.transientErr(); err != nil { return nil, fmt.Errorf("failed to create config: %w", err) } configs.Modules = moduleConfig.AllModules configs.ModulesClient = modulesClient if err := configs.Init(); err != nil { return nil, fmt.Errorf("failed to init config: %w", err) } loggers.SetGlobalLogger(d.Logger) return } // ConfigSourceDescriptor describes where to find the config (e.g. config.toml etc.). type ConfigSourceDescriptor struct { Fs afero.Fs Logger loggers.Logger // Config received from the command line. // These will override any config file settings. Flags config.Provider // Path to the config file to use, e.g. /my/project/config.toml Filename string // The (optional) directory for additional configuration files. ConfigDir string // production, development Environment string // Defaults to os.Environ if not set. Environ []string // If set, this will be used to ignore the module does not exist error. IgnoreModuleDoesNotExist bool } func (d ConfigSourceDescriptor) configFilenames() []string { if d.Filename == "" { return nil } return strings.Split(d.Filename, ",") } type configLoader struct { cfg config.Provider BaseConfig config.BaseConfig ConfigSourceDescriptor // collected ModulesConfig modules.ModulesConfig ModulesConfigFiles []string } // Handle some legacy values. func (l configLoader) applyConfigAliases() error { aliases := []types.KeyValueStr{ {Key: "indexes", Value: "taxonomies"}, {Key: "logI18nWarnings", Value: "printI18nWarnings"}, {Key: "logPathWarnings", Value: "printPathWarnings"}, {Key: "ignoreErrors", Value: "ignoreLogs"}, } for _, alias := range aliases { if l.cfg.IsSet(alias.Key) { vv := l.cfg.Get(alias.Key) l.cfg.Set(alias.Value, vv) } } return nil } func (l configLoader) applyDefaultConfig() error { defaultSettings := maps.Params{ // These dirs are used early/before we build the config struct. "themesDir": "themes", "configDir": "config", } l.cfg.SetDefaults(defaultSettings) return nil } func (l configLoader) normalizeCfg(cfg config.Provider) error { if b, ok := cfg.Get("minifyOutput").(bool); ok { hugo.Deprecate("site config minifyOutput", "Use minify.minifyOutput instead.", "v0.150.0") if b { cfg.Set("minify.minifyOutput", true) } } else if b, ok := cfg.Get("minify").(bool); ok { hugo.Deprecate("site config minify", "Use minify.minifyOutput instead.", "v0.150.0") if b { cfg.Set("minify", maps.Params{"minifyOutput": true}) } } return nil } func (l configLoader) cleanExternalConfig(cfg config.Provider) error { if cfg.IsSet("internal") { cfg.Set("internal", nil) } return nil } func (l configLoader) applyFlagsOverrides(cfg config.Provider) error { for _, k := range cfg.Keys() { l.cfg.Set(k, cfg.Get(k)) } return nil } func (l configLoader) applyOsEnvOverrides(environ []string) error { if len(environ) == 0 { return nil } const delim = "__env__delim" // Extract all that start with the HUGO prefix. // The delimiter is the following rune, usually "_". const hugoEnvPrefix = "HUGO" var hugoEnv []types.KeyValueStr for _, v := range environ { key, val := config.SplitEnvVar(v) if strings.HasPrefix(key, hugoEnvPrefix) { delimiterAndKey := strings.TrimPrefix(key, hugoEnvPrefix) if len(delimiterAndKey) < 2 { continue } // Allow delimiters to be case sensitive. // It turns out there isn't that many allowed special // chars in environment variables when used in Bash and similar, // so variables on the form HUGOxPARAMSxFOO=bar is one option. key := strings.ReplaceAll(delimiterAndKey[1:], delimiterAndKey[:1], delim) key = strings.ToLower(key) hugoEnv = append(hugoEnv, types.KeyValueStr{ Key: key, Value: val, }) } } for _, env := range hugoEnv { existing, nestedKey, owner, err := maps.GetNestedParamFn(env.Key, delim, l.cfg.Get) if err != nil { return err } if existing != nil { val, err := metadecoders.Default.UnmarshalStringTo(env.Value, existing) if err == nil { val = l.envValToVal(env.Key, val) if owner != nil { owner[nestedKey] = val } else { l.cfg.Set(env.Key, val) } continue } } if owner != nil && nestedKey != "" { owner[nestedKey] = env.Value } else { var val any key := strings.ReplaceAll(env.Key, delim, ".") _, ok := allDecoderSetups[key] if ok { // A map. if v, err := metadecoders.Default.UnmarshalStringTo(env.Value, map[string]any{}); err == nil { val = v } } if val == nil { // A string. val = l.envStringToVal(key, env.Value) } l.cfg.Set(key, val) } } return nil } func (l *configLoader) envValToVal(k string, v any) any { switch v := v.(type) { case string: return l.envStringToVal(k, v) default: return v } } func (l *configLoader) envStringToVal(k, v string) any { switch k { case "disablekinds", "disablelanguages", "ignorefiles", "ignorelogs": v = strings.TrimSpace(v) if strings.HasPrefix(v, "[") && strings.HasSuffix(v, "]") { if parsed, err := metadecoders.Default.UnmarshalStringTo(v, []any{}); err == nil { return parsed } } if strings.Contains(v, ",") { return strings.Split(v, ",") } else { return strings.Fields(v) } default: return v } } func (l *configLoader) loadConfigMain(d ConfigSourceDescriptor) (config.LoadConfigResult, modules.ModulesConfig, error) { var res config.LoadConfigResult if d.Flags != nil { if err := l.normalizeCfg(d.Flags); err != nil { return res, l.ModulesConfig, err } } if d.Fs == nil { return res, l.ModulesConfig, errors.New("no filesystem provided") } if d.Flags != nil { if err := l.applyFlagsOverrides(d.Flags); err != nil { return res, l.ModulesConfig, err } workingDir := filepath.Clean(l.cfg.GetString("workingDir")) l.BaseConfig = config.BaseConfig{ WorkingDir: workingDir, ThemesDir: paths.AbsPathify(workingDir, l.cfg.GetString("themesDir")), } } names := d.configFilenames() if names != nil { for _, name := range names { var filename string filename, err := l.loadConfig(name) if err == nil { res.ConfigFiles = append(res.ConfigFiles, filename) } else if err != ErrNoConfigFile { return res, l.ModulesConfig, l.wrapFileError(err, filename) } } } else { for _, name := range config.DefaultConfigNames { var filename string filename, err := l.loadConfig(name) if err == nil { res.ConfigFiles = append(res.ConfigFiles, filename) break } else if err != ErrNoConfigFile { return res, l.ModulesConfig, l.wrapFileError(err, filename) } } } if d.ConfigDir != "" { absConfigDir := paths.AbsPathify(l.BaseConfig.WorkingDir, d.ConfigDir) dcfg, dirnames, err := config.LoadConfigFromDir(l.Fs, absConfigDir, l.Environment) if err == nil { if len(dirnames) > 0 { if err := l.normalizeCfg(dcfg); err != nil { return res, l.ModulesConfig, err } if err := l.cleanExternalConfig(dcfg); err != nil { return res, l.ModulesConfig, err } l.cfg.Set("", dcfg.Get("")) res.ConfigFiles = append(res.ConfigFiles, dirnames...) } } else if err != ErrNoConfigFile { if len(dirnames) > 0 { return res, l.ModulesConfig, l.wrapFileError(err, dirnames[0]) } return res, l.ModulesConfig, err } } res.Cfg = l.cfg if err := l.applyDefaultConfig(); err != nil { return res, l.ModulesConfig, err } // Some settings are used before we're done collecting all settings, // so apply OS environment both before and after. if err := l.applyOsEnvOverrides(d.Environ); err != nil { return res, l.ModulesConfig, err } workingDir := filepath.Clean(l.cfg.GetString("workingDir")) l.BaseConfig = config.BaseConfig{ WorkingDir: workingDir, CacheDir: l.cfg.GetString("cacheDir"), ThemesDir: paths.AbsPathify(workingDir, l.cfg.GetString("themesDir")), } var err error l.BaseConfig.CacheDir, err = helpers.GetCacheDir(l.Fs, l.BaseConfig.CacheDir) if err != nil { return res, l.ModulesConfig, err } res.BaseConfig = l.BaseConfig l.cfg.SetDefaultMergeStrategy() res.ConfigFiles = append(res.ConfigFiles, l.ModulesConfigFiles...) if d.Flags != nil { if err := l.applyFlagsOverrides(d.Flags); err != nil { return res, l.ModulesConfig, err } } if err := l.applyOsEnvOverrides(d.Environ); err != nil { return res, l.ModulesConfig, err } if err = l.applyConfigAliases(); err != nil { return res, l.ModulesConfig, err } return res, l.ModulesConfig, err } func (l *configLoader) loadModules(configs *Configs, ignoreModuleDoesNotExist bool) (modules.ModulesConfig, *modules.Client, error) { bcfg := configs.LoadingInfo.BaseConfig conf := configs.Base workingDir := bcfg.WorkingDir themesDir := bcfg.ThemesDir publishDir := bcfg.PublishDir cfg := configs.LoadingInfo.Cfg var ignoreVendor glob.Glob if s := conf.IgnoreVendorPaths; s != "" { ignoreVendor, _ = hglob.GetGlob(hglob.NormalizePath(s)) } ex := hexec.New(conf.Security, workingDir, l.Logger) hook := func(m *modules.ModulesConfig) error { for _, tc := range m.AllModules { if len(tc.ConfigFilenames()) > 0 { if tc.Watch() { l.ModulesConfigFiles = append(l.ModulesConfigFiles, tc.ConfigFilenames()...) } // Merge in the theme config using the configured // merge strategy. cfg.Merge("", tc.Cfg().Get("")) } } return nil } modulesClient := modules.NewClient(modules.ClientConfig{ Fs: l.Fs, Logger: l.Logger, Exec: ex, HookBeforeFinalize: hook, WorkingDir: workingDir, ThemesDir: themesDir, PublishDir: publishDir, Environment: l.Environment, CacheDir: conf.Caches.CacheDirModules(), ModuleConfig: conf.Module, IgnoreVendor: ignoreVendor, IgnoreModuleDoesNotExist: ignoreModuleDoesNotExist, }) moduleConfig, err := modulesClient.Collect() // We want to watch these for changes and trigger rebuild on version // changes etc. if moduleConfig.GoModulesFilename != "" { l.ModulesConfigFiles = append(l.ModulesConfigFiles, moduleConfig.GoModulesFilename) } if moduleConfig.GoWorkspaceFilename != "" { l.ModulesConfigFiles = append(l.ModulesConfigFiles, moduleConfig.GoWorkspaceFilename) } return moduleConfig, modulesClient, err } func (l configLoader) loadConfig(configName string) (string, error) { baseDir := l.BaseConfig.WorkingDir var baseFilename string if filepath.IsAbs(configName) { baseFilename = configName } else { baseFilename = filepath.Join(baseDir, configName) } var filename string if paths.ExtNoDelimiter(configName) != "" { exists, _ := helpers.Exists(baseFilename, l.Fs) if exists { filename = baseFilename } } else { for _, ext := range config.ValidConfigFileExtensions { filenameToCheck := baseFilename + "." + ext exists, _ := helpers.Exists(filenameToCheck, l.Fs) if exists { filename = filenameToCheck break } } } if filename == "" { return "", ErrNoConfigFile } m, err := config.FromFileToMap(l.Fs, filename) if err != nil { return filename, err } // Set overwrites keys of the same name, recursively. l.cfg.Set("", m) if err := l.normalizeCfg(l.cfg); err != nil { return filename, err } if err := l.cleanExternalConfig(l.cfg); err != nil { return filename, err } return filename, nil } func (l configLoader) deleteMergeStrategies() (err error) { l.cfg.WalkParams(func(params ...maps.KeyParams) bool { params[len(params)-1].Params.DeleteMergeStrategy() return false }) return } func (l configLoader) wrapFileError(err error, filename string) error { fe := herrors.UnwrapFileError(err) if fe != nil { pos := fe.Position() pos.Filename = filename fe.UpdatePosition(pos) return err } return herrors.NewFileErrorFromFile(err, filename, l.Fs, nil) } gohugoio-hugo-6abdaca/config/allconfig/load_test.go000066400000000000000000000021331507671574500226450ustar00rootroot00000000000000package allconfig import ( "os" "path/filepath" "testing" "github.com/spf13/afero" ) func BenchmarkLoad(b *testing.B) { tempDir := b.TempDir() configFilename := filepath.Join(tempDir, "hugo.toml") config := ` baseURL = "https://example.com" defaultContentLanguage = 'en' [module] [[module.mounts]] source = 'content/en' target = 'content/en' lang = 'en' [[module.mounts]] source = 'content/nn' target = 'content/nn' lang = 'nn' [[module.mounts]] source = 'content/no' target = 'content/no' lang = 'no' [[module.mounts]] source = 'content/sv' target = 'content/sv' lang = 'sv' [[module.mounts]] source = 'layouts' target = 'layouts' [languages] [languages.en] title = "English" weight = 1 [languages.nn] title = "Nynorsk" weight = 2 [languages.no] title = "Norsk" weight = 3 [languages.sv] title = "Svenska" weight = 4 ` if err := os.WriteFile(configFilename, []byte(config), 0o666); err != nil { b.Fatal(err) } d := ConfigSourceDescriptor{ Fs: afero.NewOsFs(), Filename: configFilename, } for i := 0; i < b.N; i++ { _, err := LoadConfig(d) if err != nil { b.Fatal(err) } } } gohugoio-hugo-6abdaca/config/commonConfig.go000066400000000000000000000303451507671574500213550ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "fmt" "net/http" "regexp" "slices" "sort" "strings" "github.com/bep/logg" "github.com/gobwas/glob" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/herrors" "github.com/mitchellh/mapstructure" "github.com/spf13/cast" ) type BaseConfig struct { WorkingDir string CacheDir string ThemesDir string PublishDir string } type CommonDirs struct { // The directory where Hugo will look for themes. ThemesDir string // Where to put the generated files. PublishDir string // The directory to put the generated resources files. This directory should in most situations be considered temporary // and not be committed to version control. But there may be cached content in here that you want to keep, // e.g. resources/_gen/images for performance reasons or CSS built from SASS when your CI server doesn't have the full setup. ResourceDir string // The project root directory. WorkingDir string // The root directory for all cache files. CacheDir string // The content source directory. // Deprecated: Use module mounts. ContentDir string // Deprecated: Use module mounts. // The data source directory. DataDir string // Deprecated: Use module mounts. // The layout source directory. LayoutDir string // Deprecated: Use module mounts. // The i18n source directory. I18nDir string // Deprecated: Use module mounts. // The archetypes source directory. ArcheTypeDir string // Deprecated: Use module mounts. // The assets source directory. AssetDir string } type LoadConfigResult struct { Cfg Provider ConfigFiles []string BaseConfig BaseConfig } var defaultBuild = BuildConfig{ UseResourceCacheWhen: "fallback", BuildStats: BuildStats{}, CacheBusters: []CacheBuster{ { Source: `(postcss|tailwind)\.config\.js`, Target: cssTargetCachebusterRe, }, }, } // BuildConfig holds some build related configuration. type BuildConfig struct { // When to use the resource file cache. // One of never, fallback, always. Default is fallback UseResourceCacheWhen string // When enabled, will collect and write a hugo_stats.json with some build // related aggregated data (e.g. CSS class names). // Note that this was a bool <= v0.115.0. BuildStats BuildStats // Can be used to toggle off writing of the IntelliSense /assets/jsconfig.js // file. NoJSConfigInAssets bool // Can used to control how the resource cache gets evicted on rebuilds. CacheBusters []CacheBuster } // BuildStats configures if and what to write to the hugo_stats.json file. type BuildStats struct { Enable bool DisableTags bool DisableClasses bool DisableIDs bool } func (w BuildStats) Enabled() bool { if !w.Enable { return false } return !w.DisableTags || !w.DisableClasses || !w.DisableIDs } func (b BuildConfig) clone() BuildConfig { b.CacheBusters = slices.Clone(b.CacheBusters) return b } func (b BuildConfig) UseResourceCache(err error) bool { if b.UseResourceCacheWhen == "never" { return false } if b.UseResourceCacheWhen == "fallback" { return herrors.IsFeatureNotAvailableError(err) } return true } // MatchCacheBuster returns the cache buster for the given path p, nil if none. func (s BuildConfig) MatchCacheBuster(logger loggers.Logger, p string) (func(string) bool, error) { var matchers []func(string) bool for _, cb := range s.CacheBusters { if matcher := cb.compiledSource(p); matcher != nil { matchers = append(matchers, matcher) } } if len(matchers) > 0 { return (func(cacheKey string) bool { for _, m := range matchers { if m(cacheKey) { return true } } return false }), nil } return nil, nil } func (b *BuildConfig) CompileConfig(logger loggers.Logger) error { for i, cb := range b.CacheBusters { if err := cb.CompileConfig(logger); err != nil { return fmt.Errorf("failed to compile cache buster %q: %w", cb.Source, err) } b.CacheBusters[i] = cb } return nil } func DecodeBuildConfig(cfg Provider) BuildConfig { m := cfg.GetStringMap("build") b := defaultBuild.clone() if m == nil { return b } // writeStats was a bool <= v0.115.0. if writeStats, ok := m["writestats"]; ok { if bb, ok := writeStats.(bool); ok { m["buildstats"] = BuildStats{Enable: bb} } } err := mapstructure.WeakDecode(m, &b) if err != nil { return b } b.UseResourceCacheWhen = strings.ToLower(b.UseResourceCacheWhen) when := b.UseResourceCacheWhen if when != "never" && when != "always" && when != "fallback" { b.UseResourceCacheWhen = "fallback" } return b } // SitemapConfig configures the sitemap to be generated. type SitemapConfig struct { // The page change frequency. ChangeFreq string // The priority of the page. Priority float64 // The sitemap filename. Filename string // Whether to disable page inclusion. Disable bool } func DecodeSitemap(prototype SitemapConfig, input map[string]any) (SitemapConfig, error) { err := mapstructure.WeakDecode(input, &prototype) return prototype, err } // Config for the dev server. type Server struct { Headers []Headers Redirects []Redirect compiledHeaders []glob.Glob compiledRedirects []redirect } type redirect struct { from glob.Glob fromRe *regexp.Regexp headers map[string]glob.Glob } func (r redirect) matchHeader(header http.Header) bool { for k, v := range r.headers { if !v.Match(header.Get(k)) { return false } } return true } func (s *Server) CompileConfig(logger loggers.Logger) error { if s.compiledHeaders != nil { return nil } for _, h := range s.Headers { g, err := glob.Compile(h.For) if err != nil { return fmt.Errorf("failed to compile Headers glob %q: %w", h.For, err) } s.compiledHeaders = append(s.compiledHeaders, g) } for _, r := range s.Redirects { if r.From == "" && r.FromRe == "" { return fmt.Errorf("redirects must have either From or FromRe set") } rd := redirect{ headers: make(map[string]glob.Glob), } if r.From != "" { g, err := glob.Compile(r.From) if err != nil { return fmt.Errorf("failed to compile Redirect glob %q: %w", r.From, err) } rd.from = g } if r.FromRe != "" { re, err := regexp.Compile(r.FromRe) if err != nil { return fmt.Errorf("failed to compile Redirect regexp %q: %w", r.FromRe, err) } rd.fromRe = re } for k, v := range r.FromHeaders { g, err := glob.Compile(v) if err != nil { return fmt.Errorf("failed to compile Redirect header glob %q: %w", v, err) } rd.headers[k] = g } s.compiledRedirects = append(s.compiledRedirects, rd) } return nil } func (s *Server) MatchHeaders(pattern string) []types.KeyValueStr { if s.compiledHeaders == nil { return nil } var matches []types.KeyValueStr for i, g := range s.compiledHeaders { if g.Match(pattern) { h := s.Headers[i] for k, v := range h.Values { matches = append(matches, types.KeyValueStr{Key: k, Value: cast.ToString(v)}) } } } sort.Slice(matches, func(i, j int) bool { return matches[i].Key < matches[j].Key }) return matches } func (s *Server) MatchRedirect(pattern string, header http.Header) Redirect { if s.compiledRedirects == nil { return Redirect{} } pattern = strings.TrimSuffix(pattern, "index.html") for i, r := range s.compiledRedirects { redir := s.Redirects[i] var found bool if r.from != nil { if r.from.Match(pattern) { found = header == nil || r.matchHeader(header) // We need to do regexp group replacements if needed. } } if r.fromRe != nil { m := r.fromRe.FindStringSubmatch(pattern) if m != nil { if !found { found = header == nil || r.matchHeader(header) } if found { // Replace $1, $2 etc. in To. for i, g := range m[1:] { redir.To = strings.ReplaceAll(redir.To, fmt.Sprintf("$%d", i+1), g) } } } } if found { return redir } } return Redirect{} } type Headers struct { For string Values map[string]any } type Redirect struct { // From is the Glob pattern to match. // One of From or FromRe must be set. From string // FromRe is the regexp to match. // This regexp can contain group matches (e.g. $1) that can be used in the To field. // One of From or FromRe must be set. FromRe string // To is the target URL. To string // Headers to match for the redirect. // This maps the HTTP header name to a Glob pattern with values to match. // If the map is empty, the redirect will always be triggered. FromHeaders map[string]string // HTTP status code to use for the redirect. // A status code of 200 will trigger a URL rewrite. Status int // Forcode redirect, even if original request path exists. Force bool } // CacheBuster configures cache busting for assets. type CacheBuster struct { // Trigger for files matching this regexp. Source string // Cache bust targets matching this regexp. // This regexp can contain group matches (e.g. $1) from the source regexp. Target string compiledSource func(string) func(string) bool } func (c *CacheBuster) CompileConfig(logger loggers.Logger) error { if c.compiledSource != nil { return nil } source := c.Source sourceRe, err := regexp.Compile(source) if err != nil { return fmt.Errorf("failed to compile cache buster source %q: %w", c.Source, err) } target := c.Target var compileErr error debugl := logger.Logger().WithLevel(logg.LevelDebug).WithField(loggers.FieldNameCmd, "cachebuster") c.compiledSource = func(s string) func(string) bool { m := sourceRe.FindStringSubmatch(s) matchString := "no match" match := m != nil if match { matchString = "match!" } debugl.Logf("Matching %q with source %q: %s", s, source, matchString) if !match { return nil } groups := m[1:] currentTarget := target // Replace $1, $2 etc. in target. for i, g := range groups { currentTarget = strings.ReplaceAll(target, fmt.Sprintf("$%d", i+1), g) } targetRe, err := regexp.Compile(currentTarget) if err != nil { compileErr = fmt.Errorf("failed to compile cache buster target %q: %w", currentTarget, err) return nil } return func(ss string) bool { match = targetRe.MatchString(ss) matchString := "no match" if match { matchString = "match!" } logger.Debugf("Matching %q with target %q: %s", ss, currentTarget, matchString) return match } } return compileErr } func (r Redirect) IsZero() bool { return r.From == "" && r.FromRe == "" } const ( // Keep this a little coarse grained, some false positives are OK. cssTargetCachebusterRe = `(css|styles|scss|sass)` ) func DecodeServer(cfg Provider) (Server, error) { s := &Server{} _ = mapstructure.WeakDecode(cfg.GetStringMap("server"), s) for i, redir := range s.Redirects { redir.To = strings.TrimSuffix(redir.To, "index.html") s.Redirects[i] = redir } if len(s.Redirects) == 0 { // Set up a default redirect for 404s. s.Redirects = []Redirect{ { From: "/**", To: "/404.html", Status: 404, }, } } return *s, nil } // Pagination configures the pagination behavior. type Pagination struct { // Default number of elements per pager in pagination. PagerSize int // The path element used during pagination. Path string // Whether to disable generation of alias for the first pagination page. DisableAliases bool } // PageConfig configures the behavior of pages. type PageConfig struct { // Sort order for Page.Next and Page.Prev. Default "desc" (the default page sort order in Hugo). NextPrevSortOrder string // Sort order for Page.NextInSection and Page.PrevInSection. Default "desc". NextPrevInSectionSortOrder string } func (c *PageConfig) CompileConfig(loggers.Logger) error { c.NextPrevInSectionSortOrder = strings.ToLower(c.NextPrevInSectionSortOrder) c.NextPrevSortOrder = strings.ToLower(c.NextPrevSortOrder) return nil } gohugoio-hugo-6abdaca/config/commonConfig_test.go000066400000000000000000000112421507671574500224070ustar00rootroot00000000000000// Copyright 2020 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "errors" "testing" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/types" qt "github.com/frankban/quicktest" ) func TestBuild(t *testing.T) { c := qt.New(t) v := New() v.Set("build", map[string]any{ "useResourceCacheWhen": "always", }) b := DecodeBuildConfig(v) c.Assert(b.UseResourceCacheWhen, qt.Equals, "always") v.Set("build", map[string]any{ "useResourceCacheWhen": "foo", }) b = DecodeBuildConfig(v) c.Assert(b.UseResourceCacheWhen, qt.Equals, "fallback") c.Assert(b.UseResourceCache(herrors.ErrFeatureNotAvailable), qt.Equals, true) c.Assert(b.UseResourceCache(errors.New("err")), qt.Equals, false) b.UseResourceCacheWhen = "always" c.Assert(b.UseResourceCache(herrors.ErrFeatureNotAvailable), qt.Equals, true) c.Assert(b.UseResourceCache(errors.New("err")), qt.Equals, true) c.Assert(b.UseResourceCache(nil), qt.Equals, true) b.UseResourceCacheWhen = "never" c.Assert(b.UseResourceCache(herrors.ErrFeatureNotAvailable), qt.Equals, false) c.Assert(b.UseResourceCache(errors.New("err")), qt.Equals, false) c.Assert(b.UseResourceCache(nil), qt.Equals, false) } func TestServer(t *testing.T) { c := qt.New(t) cfg, err := FromConfigString(`[[server.headers]] for = "/*.jpg" [server.headers.values] X-Frame-Options = "DENY" X-XSS-Protection = "1; mode=block" X-Content-Type-Options = "nosniff" [[server.redirects]] from = "/foo/**" to = "/baz/index.html" status = 200 [[server.redirects]] from = "/loop/**" to = "/loop/foo/" status = 200 [[server.redirects]] from = "/b/**" fromRe = "/b/(.*)/" to = "/baz/$1/" status = 200 [[server.redirects]] fromRe = "/c/(.*)/" to = "/boo/$1/" status = 200 [[server.redirects]] fromRe = "/d/(.*)/" to = "/boo/$1/" status = 200 [[server.redirects]] from = "/google/**" to = "https://google.com/" status = 301 `, "toml") c.Assert(err, qt.IsNil) s, err := DecodeServer(cfg) c.Assert(err, qt.IsNil) c.Assert(s.CompileConfig(loggers.NewDefault()), qt.IsNil) c.Assert(s.MatchHeaders("/foo.jpg"), qt.DeepEquals, []types.KeyValueStr{ {Key: "X-Content-Type-Options", Value: "nosniff"}, {Key: "X-Frame-Options", Value: "DENY"}, {Key: "X-XSS-Protection", Value: "1; mode=block"}, }) c.Assert(s.MatchRedirect("/foo/bar/baz", nil), qt.DeepEquals, Redirect{ From: "/foo/**", To: "/baz/", Status: 200, }) c.Assert(s.MatchRedirect("/foo/bar/", nil), qt.DeepEquals, Redirect{ From: "/foo/**", To: "/baz/", Status: 200, }) c.Assert(s.MatchRedirect("/b/c/", nil), qt.DeepEquals, Redirect{ From: "/b/**", FromRe: "/b/(.*)/", To: "/baz/c/", Status: 200, }) c.Assert(s.MatchRedirect("/c/d/", nil).To, qt.Equals, "/boo/d/") c.Assert(s.MatchRedirect("/c/d/e/", nil).To, qt.Equals, "/boo/d/e/") c.Assert(s.MatchRedirect("/someother", nil), qt.DeepEquals, Redirect{}) c.Assert(s.MatchRedirect("/google/foo", nil), qt.DeepEquals, Redirect{ From: "/google/**", To: "https://google.com/", Status: 301, }) } func TestBuildConfigCacheBusters(t *testing.T) { c := qt.New(t) cfg := New() conf := DecodeBuildConfig(cfg) l := loggers.NewDefault() c.Assert(conf.CompileConfig(l), qt.IsNil) m, _ := conf.MatchCacheBuster(l, "tailwind.config.js") c.Assert(m, qt.IsNotNil) c.Assert(m("css"), qt.IsTrue) c.Assert(m("js"), qt.IsFalse) m, _ = conf.MatchCacheBuster(l, "foo.bar") c.Assert(m, qt.IsNil) } func TestBuildConfigCacheBusterstTailwindSetup(t *testing.T) { c := qt.New(t) cfg := New() cfg.Set("build", map[string]any{ "cacheBusters": []map[string]string{ { "source": "assets/watching/hugo_stats\\.json", "target": "css", }, { "source": "(postcss|tailwind)\\.config\\.js", "target": "css", }, { "source": "assets/.*\\.(js|ts|jsx|tsx)", "target": "js", }, { "source": "assets/.*\\.(.*)$", "target": "$1", }, }, }) conf := DecodeBuildConfig(cfg) l := loggers.NewDefault() c.Assert(conf.CompileConfig(l), qt.IsNil) m, err := conf.MatchCacheBuster(l, "assets/watching/hugo_stats.json") c.Assert(err, qt.IsNil) c.Assert(m("css"), qt.IsTrue) } gohugoio-hugo-6abdaca/config/configLoader.go000066400000000000000000000134271507671574500213350ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "fmt" "os" "path/filepath" "strings" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/afero" ) var ( // See issue #8979 for context. // Hugo has always used config.toml etc. as the default config file name. // But hugo.toml is a more descriptive name, but we need to check for both. DefaultConfigNames = []string{"hugo", "config"} DefaultConfigNamesSet = make(map[string]bool) ValidConfigFileExtensions = []string{"toml", "yaml", "yml", "json"} validConfigFileExtensionsMap map[string]bool = make(map[string]bool) ) func init() { for _, name := range DefaultConfigNames { DefaultConfigNamesSet[name] = true } for _, ext := range ValidConfigFileExtensions { validConfigFileExtensionsMap[ext] = true } } // IsValidConfigFilename returns whether filename is one of the supported // config formats in Hugo. func IsValidConfigFilename(filename string) bool { ext := strings.ToLower(strings.TrimPrefix(filepath.Ext(filename), ".")) return validConfigFileExtensionsMap[ext] } func FromTOMLConfigString(config string) Provider { cfg, err := FromConfigString(config, "toml") if err != nil { panic(err) } return cfg } // FromConfigString creates a config from the given YAML, JSON or TOML config. This is useful in tests. func FromConfigString(config, configType string) (Provider, error) { m, err := readConfig(metadecoders.FormatFromString(configType), []byte(config)) if err != nil { return nil, err } return NewFrom(m), nil } // FromFile loads the configuration from the given filename. func FromFile(fs afero.Fs, filename string) (Provider, error) { m, err := loadConfigFromFile(fs, filename) if err != nil { fe := herrors.UnwrapFileError(err) if fe != nil { pos := fe.Position() pos.Filename = filename fe.UpdatePosition(pos) return nil, err } return nil, herrors.NewFileErrorFromFile(err, filename, fs, nil) } return NewFrom(m), nil } // FromFileToMap is the same as FromFile, but it returns the config values // as a simple map. func FromFileToMap(fs afero.Fs, filename string) (map[string]any, error) { return loadConfigFromFile(fs, filename) } func readConfig(format metadecoders.Format, data []byte) (map[string]any, error) { m, err := metadecoders.Default.UnmarshalToMap(data, format) if err != nil { return nil, err } RenameKeys(m) return m, nil } func loadConfigFromFile(fs afero.Fs, filename string) (map[string]any, error) { m, err := metadecoders.Default.UnmarshalFileToMap(fs, filename) if err != nil { return nil, err } RenameKeys(m) return m, nil } func LoadConfigFromDir(sourceFs afero.Fs, configDir, environment string) (Provider, []string, error) { defaultConfigDir := filepath.Join(configDir, "_default") environmentConfigDir := filepath.Join(configDir, environment) cfg := New() var configDirs []string // Merge from least to most specific. for _, dir := range []string{defaultConfigDir, environmentConfigDir} { if _, err := sourceFs.Stat(dir); err == nil { configDirs = append(configDirs, dir) } } if len(configDirs) == 0 { return nil, nil, nil } // Keep track of these so we can watch them for changes. var dirnames []string for _, configDir := range configDirs { err := afero.Walk(sourceFs, configDir, func(path string, fi os.FileInfo, err error) error { if fi == nil || err != nil { return nil } if fi.IsDir() { dirnames = append(dirnames, path) return nil } if !IsValidConfigFilename(path) { return nil } name := paths.Filename(filepath.Base(path)) item, err := metadecoders.Default.UnmarshalFileToMap(sourceFs, path) if err != nil { // This will be used in error reporting, use the most specific value. dirnames = []string{path} return fmt.Errorf("failed to unmarshal config for path %q: %w", path, err) } var keyPath []string if !DefaultConfigNamesSet[name] { // Can be params.jp, menus.en etc. name, lang := paths.FileAndExtNoDelimiter(name) keyPath = []string{name} if lang != "" { keyPath = []string{"languages", lang} switch name { case "menu", "menus": keyPath = append(keyPath, "menus") case "params": keyPath = append(keyPath, "params") } } } root := item if len(keyPath) > 0 { root = make(map[string]any) m := root for i, key := range keyPath { if i >= len(keyPath)-1 { m[key] = item } else { nm := make(map[string]any) m[key] = nm m = nm } } } // Migrate menu => menus etc. RenameKeys(root) // Set will overwrite keys with the same name, recursively. cfg.Set("", root) return nil }) if err != nil { return nil, dirnames, err } } return cfg, dirnames, nil } var keyAliases maps.KeyRenamer func init() { var err error keyAliases, err = maps.NewKeyRenamer( // Before 0.53 we used singular for "menu". "{menu,languages/*/menu}", "menus", ) if err != nil { panic(err) } } // RenameKeys renames config keys in m recursively according to a global Hugo // alias definition. func RenameKeys(m map[string]any) { keyAliases.Rename(m) } gohugoio-hugo-6abdaca/config/configLoader_test.go000066400000000000000000000024251507671574500223700ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "regexp" "strings" "testing" qt "github.com/frankban/quicktest" ) func TestIsValidConfigFileName(t *testing.T) { c := qt.New(t) for _, ext := range ValidConfigFileExtensions { filename := "config." + ext c.Assert(IsValidConfigFilename(filename), qt.Equals, true) c.Assert(IsValidConfigFilename(strings.ToUpper(filename)), qt.Equals, true) } c.Assert(IsValidConfigFilename(""), qt.Equals, false) c.Assert(IsValidConfigFilename("config.toml.swp"), qt.Equals, false) } func TestFromTOMLConfigString(t *testing.T) { c := qt.New(t) c.Assert( func() { FromTOMLConfigString("cfg") }, qt.PanicMatches, regexp.MustCompile("_stream.toml:.*"), ) } gohugoio-hugo-6abdaca/config/configProvider.go000066400000000000000000000066601507671574500217220ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "time" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/urls" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/langs" ) // AllProvider is a sub set of all config settings. type AllProvider interface { Language() *langs.Language Languages() langs.Languages LanguagesDefaultFirst() langs.Languages LanguagePrefix() string BaseURL() urls.BaseURL BaseURLLiveReload() urls.BaseURL PathParser() *paths.PathParser Environment() string IsMultihost() bool IsMultilingual() bool NoBuildLock() bool BaseConfig() BaseConfig Dirs() CommonDirs Quiet() bool DirsBase() CommonDirs ContentTypes() ContentTypesProvider GetConfigSection(string) any GetConfig() any CanonifyURLs() bool DisablePathToLower() bool RemovePathAccents() bool IsUglyURLs(section string) bool DefaultContentLanguage() string DefaultContentLanguageInSubdir() bool IsLangDisabled(string) bool SummaryLength() int Pagination() Pagination BuildExpired() bool BuildFuture() bool BuildDrafts() bool Running() bool Watching() bool NewIdentityManager(name string, opts ...identity.ManagerOption) identity.Manager FastRenderMode() bool PrintUnusedTemplates() bool EnableMissingTranslationPlaceholders() bool TemplateMetrics() bool TemplateMetricsHints() bool PrintI18nWarnings() bool CreateTitle(s string) string IgnoreFile(s string) bool NewContentEditor() string Timeout() time.Duration StaticDirs() []string IgnoredLogs() map[string]bool WorkingDir() string EnableEmoji() bool } // We cannot import the media package as that would create a circular dependency. // This interface defines a subset of what media.ContentTypes provides. type ContentTypesProvider interface { IsContentSuffix(suffix string) bool IsContentFile(filename string) bool IsIndexContentFile(filename string) bool IsHTMLSuffix(suffix string) bool } // Provider provides the configuration settings for Hugo. type Provider interface { GetString(key string) string GetInt(key string) int GetBool(key string) bool GetParams(key string) maps.Params GetStringMap(key string) map[string]any GetStringMapString(key string) map[string]string GetStringSlice(key string) []string Get(key string) any Set(key string, value any) Keys() []string Merge(key string, value any) SetDefaults(params maps.Params) SetDefaultMergeStrategy() WalkParams(walkFn func(params ...maps.KeyParams) bool) IsSet(key string) bool } // GetStringSlicePreserveString returns a string slice from the given config and key. // It differs from the GetStringSlice method in that if the config value is a string, // we do not attempt to split it into fields. func GetStringSlicePreserveString(cfg Provider, key string) []string { sd := cfg.Get(key) return types.ToStringSlicePreserveString(sd) } gohugoio-hugo-6abdaca/config/configProvider_test.go000066400000000000000000000021161507671574500227510ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "testing" qt "github.com/frankban/quicktest" ) func TestGetStringSlicePreserveString(t *testing.T) { c := qt.New(t) cfg := New() s := "This is a string" sSlice := []string{"This", "is", "a", "slice"} cfg.Set("s1", s) cfg.Set("s2", sSlice) c.Assert(GetStringSlicePreserveString(cfg, "s1"), qt.DeepEquals, []string{s}) c.Assert(GetStringSlicePreserveString(cfg, "s2"), qt.DeepEquals, sSlice) c.Assert(GetStringSlicePreserveString(cfg, "s3"), qt.IsNil) } gohugoio-hugo-6abdaca/config/defaultConfigProvider.go000066400000000000000000000204271507671574500232240ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "errors" "fmt" "slices" "strings" "sync" xmaps "maps" "github.com/spf13/cast" "github.com/gohugoio/hugo/common/maps" ) // New creates a Provider backed by an empty maps.Params. func New() Provider { return &defaultConfigProvider{ root: make(maps.Params), } } // NewFrom creates a Provider backed by params. func NewFrom(params maps.Params) Provider { maps.PrepareParams(params) return &defaultConfigProvider{ root: params, } } // defaultConfigProvider is a Provider backed by a map where all keys are lower case. // All methods are thread safe. type defaultConfigProvider struct { mu sync.RWMutex root maps.Params keyCache sync.Map } func (c *defaultConfigProvider) Get(k string) any { if k == "" { return c.root } c.mu.RLock() key, m := c.getNestedKeyAndMap(strings.ToLower(k), false) if m == nil { c.mu.RUnlock() return nil } v := m[key] c.mu.RUnlock() return v } func (c *defaultConfigProvider) GetBool(k string) bool { v := c.Get(k) return cast.ToBool(v) } func (c *defaultConfigProvider) GetInt(k string) int { v := c.Get(k) return cast.ToInt(v) } func (c *defaultConfigProvider) IsSet(k string) bool { var found bool c.mu.RLock() key, m := c.getNestedKeyAndMap(strings.ToLower(k), false) if m != nil { _, found = m[key] } c.mu.RUnlock() return found } func (c *defaultConfigProvider) GetString(k string) string { v := c.Get(k) return cast.ToString(v) } func (c *defaultConfigProvider) GetParams(k string) maps.Params { v := c.Get(k) if v == nil { return nil } return v.(maps.Params) } func (c *defaultConfigProvider) GetStringMap(k string) map[string]any { v := c.Get(k) return maps.ToStringMap(v) } func (c *defaultConfigProvider) GetStringMapString(k string) map[string]string { v := c.Get(k) return maps.ToStringMapString(v) } func (c *defaultConfigProvider) GetStringSlice(k string) []string { v := c.Get(k) return cast.ToStringSlice(v) } func (c *defaultConfigProvider) Set(k string, v any) { c.mu.Lock() defer c.mu.Unlock() k = strings.ToLower(k) if k == "" { if p, err := maps.ToParamsAndPrepare(v); err == nil { // Set the values directly in root. maps.SetParams(c.root, p) } else { c.root[k] = v } return } switch vv := v.(type) { case map[string]any, map[any]any, map[string]string: p := maps.MustToParamsAndPrepare(vv) v = p } key, m := c.getNestedKeyAndMap(k, true) if m == nil { return } if existing, found := m[key]; found { if p1, ok := existing.(maps.Params); ok { if p2, ok := v.(maps.Params); ok { maps.SetParams(p1, p2) return } } } m[key] = v } // SetDefaults will set values from params if not already set. func (c *defaultConfigProvider) SetDefaults(params maps.Params) { maps.PrepareParams(params) for k, v := range params { if _, found := c.root[k]; !found { c.root[k] = v } } } func (c *defaultConfigProvider) Merge(k string, v any) { c.mu.Lock() defer c.mu.Unlock() k = strings.ToLower(k) if k == "" { rs, f := c.root.GetMergeStrategy() if f && rs == maps.ParamsMergeStrategyNone { // The user has set a "no merge" strategy on this, // nothing more to do. return } if p, err := maps.ToParamsAndPrepare(v); err == nil { // As there may be keys in p not in root, we need to handle // those as a special case. var keysToDelete []string for kk, vv := range p { if pp, ok := vv.(maps.Params); ok { if pppi, ok := c.root[kk]; ok { ppp := pppi.(maps.Params) maps.MergeParamsWithStrategy("", ppp, pp) } else { // We need to use the default merge strategy for // this key. np := make(maps.Params) strategy := c.determineMergeStrategy(maps.KeyParams{Key: "", Params: c.root}, maps.KeyParams{Key: kk, Params: np}) np.SetMergeStrategy(strategy) maps.MergeParamsWithStrategy("", np, pp) c.root[kk] = np if np.IsZero() { // Just keep it until merge is done. keysToDelete = append(keysToDelete, kk) } } } } // Merge the rest. maps.MergeParams(c.root, p) for _, k := range keysToDelete { delete(c.root, k) } } else { panic(fmt.Sprintf("unsupported type %T received in Merge", v)) } return } switch vv := v.(type) { case map[string]any, map[any]any, map[string]string: p := maps.MustToParamsAndPrepare(vv) v = p } key, m := c.getNestedKeyAndMap(k, true) if m == nil { return } if existing, found := m[key]; found { if p1, ok := existing.(maps.Params); ok { if p2, ok := v.(maps.Params); ok { maps.MergeParamsWithStrategy("", p1, p2) } } } else { m[key] = v } } func (c *defaultConfigProvider) Keys() []string { c.mu.RLock() defer c.mu.RUnlock() return slices.Collect(xmaps.Keys(c.root)) } func (c *defaultConfigProvider) WalkParams(walkFn func(params ...maps.KeyParams) bool) { maxDepth := 1000 var walk func(depth int, params ...maps.KeyParams) walk = func(depth int, params ...maps.KeyParams) { if depth > maxDepth { panic(errors.New("max depth exceeded")) } if walkFn(params...) { return } p1 := params[len(params)-1] i := len(params) for k, v := range p1.Params { if p2, ok := v.(maps.Params); ok { paramsplus1 := make([]maps.KeyParams, i+1) copy(paramsplus1, params) paramsplus1[i] = maps.KeyParams{Key: k, Params: p2} walk(depth+1, paramsplus1...) } } } walk(0, maps.KeyParams{Key: "", Params: c.root}) } func (c *defaultConfigProvider) determineMergeStrategy(params ...maps.KeyParams) maps.ParamsMergeStrategy { if len(params) == 0 { return maps.ParamsMergeStrategyNone } var ( strategy maps.ParamsMergeStrategy prevIsRoot bool curr = params[len(params)-1] ) if len(params) > 1 { prev := params[len(params)-2] prevIsRoot = prev.Key == "" // Inherit from parent (but not from the root unless it's set by user). s, found := prev.Params.GetMergeStrategy() if !prevIsRoot && !found { panic("invalid state, merge strategy not set on parent") } if found || !prevIsRoot { strategy = s } } switch curr.Key { case "": // Don't set a merge strategy on the root unless set by user. // This will be handled as a special case. case "params": strategy = maps.ParamsMergeStrategyDeep case "outputformats", "mediatypes": if prevIsRoot { strategy = maps.ParamsMergeStrategyShallow } case "menus": isMenuKey := prevIsRoot if !isMenuKey { // Can also be set below languages. // root > languages > en > menus if len(params) == 4 && params[1].Key == "languages" { isMenuKey = true } } if isMenuKey { strategy = maps.ParamsMergeStrategyShallow } default: if strategy == "" { strategy = maps.ParamsMergeStrategyNone } } return strategy } func (c *defaultConfigProvider) SetDefaultMergeStrategy() { c.WalkParams(func(params ...maps.KeyParams) bool { if len(params) == 0 { return false } p := params[len(params)-1].Params var found bool if _, found = p.GetMergeStrategy(); found { // Set by user. return false } strategy := c.determineMergeStrategy(params...) if strategy != "" { p.SetMergeStrategy(strategy) } return false }) } func (c *defaultConfigProvider) getNestedKeyAndMap(key string, create bool) (string, maps.Params) { var parts []string v, ok := c.keyCache.Load(key) if ok { parts = v.([]string) } else { parts = strings.Split(key, ".") c.keyCache.Store(key, parts) } current := c.root for i := range len(parts) - 1 { next, found := current[parts[i]] if !found { if create { next = make(maps.Params) current[parts[i]] = next } else { return "", nil } } var ok bool current, ok = next.(maps.Params) if !ok { // E.g. a string, not a map that we can store values in. return "", nil } } return parts[len(parts)-1], current } gohugoio-hugo-6abdaca/config/defaultConfigProvider_test.go000066400000000000000000000204631507671574500242630ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "context" "errors" "fmt" "slices" "strconv" "strings" "testing" "github.com/gohugoio/hugo/common/para" "github.com/gohugoio/hugo/common/maps" qt "github.com/frankban/quicktest" ) func TestDefaultConfigProvider(t *testing.T) { c := qt.New(t) c.Run("Set and get", func(c *qt.C) { cfg := New() var k string var v any k, v = "foo", "bar" cfg.Set(k, v) c.Assert(cfg.Get(k), qt.Equals, v) c.Assert(cfg.Get(strings.ToUpper(k)), qt.Equals, v) c.Assert(cfg.GetString(k), qt.Equals, v) k, v = "foo", 42 cfg.Set(k, v) c.Assert(cfg.Get(k), qt.Equals, v) c.Assert(cfg.GetInt(k), qt.Equals, v) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "foo": 42, }) }) c.Run("Set and get map", func(c *qt.C) { cfg := New() cfg.Set("foo", map[string]any{ "bar": "baz", }) c.Assert(cfg.Get("foo"), qt.DeepEquals, maps.Params{ "bar": "baz", }) c.Assert(cfg.GetStringMap("foo"), qt.DeepEquals, map[string]any{"bar": string("baz")}) c.Assert(cfg.GetStringMapString("foo"), qt.DeepEquals, map[string]string{"bar": string("baz")}) }) c.Run("Set and get nested", func(c *qt.C) { cfg := New() cfg.Set("a", map[string]any{ "B": "bv", }) cfg.Set("a.c", "cv") c.Assert(cfg.Get("a"), qt.DeepEquals, maps.Params{ "b": "bv", "c": "cv", }) c.Assert(cfg.Get("a.c"), qt.Equals, "cv") cfg.Set("b.a", "av") c.Assert(cfg.Get("b"), qt.DeepEquals, maps.Params{ "a": "av", }) cfg.Set("b", map[string]any{ "b": "bv", }) c.Assert(cfg.Get("b"), qt.DeepEquals, maps.Params{ "a": "av", "b": "bv", }) cfg = New() cfg.Set("a", "av") cfg.Set("", map[string]any{ "a": "av2", "b": "bv2", }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": "av2", "b": "bv2", }) cfg = New() cfg.Set("a", "av") cfg.Set("", map[string]any{ "b": "bv2", }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": "av", "b": "bv2", }) cfg = New() cfg.Set("", map[string]any{ "foo": map[string]any{ "a": "av", }, }) cfg.Set("", map[string]any{ "foo": map[string]any{ "b": "bv2", }, }) c.Assert(cfg.Get("foo"), qt.DeepEquals, maps.Params{ "a": "av", "b": "bv2", }) }) c.Run("Merge default strategy", func(c *qt.C) { cfg := New() cfg.Set("a", map[string]any{ "B": "bv", }) cfg.Merge("a", map[string]any{ "B": "bv2", "c": "cv2", }) c.Assert(cfg.Get("a"), qt.DeepEquals, maps.Params{ "b": "bv", "c": "cv2", }) cfg = New() cfg.Set("a", "av") cfg.Merge("", map[string]any{ "a": "av2", "b": "bv2", }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": "av", }) }) c.Run("Merge shallow", func(c *qt.C) { cfg := New() cfg.Set("a", map[string]any{ "_merge": "shallow", "B": "bv", "c": map[string]any{ "b": "bv", }, }) cfg.Merge("a", map[string]any{ "c": map[string]any{ "d": "dv2", }, "e": "ev2", }) c.Assert(cfg.Get("a"), qt.DeepEquals, maps.Params{ "e": "ev2", "_merge": maps.ParamsMergeStrategyShallow, "b": "bv", "c": maps.Params{ "b": "bv", }, }) }) // Issue #8679 c.Run("Merge typed maps", func(c *qt.C) { for _, left := range []any{ map[string]string{ "c": "cv1", }, map[string]any{ "c": "cv1", }, map[any]any{ "c": "cv1", }, } { cfg := New() cfg.Set("", map[string]any{ "b": left, }) cfg.Merge("", maps.Params{ "b": maps.Params{ "c": "cv2", "d": "dv2", }, }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "b": maps.Params{ "c": "cv1", "d": "dv2", }, }) } for _, left := range []any{ map[string]string{ "b": "bv1", }, map[string]any{ "b": "bv1", }, map[any]any{ "b": "bv1", }, } { for _, right := range []any{ map[string]string{ "b": "bv2", "c": "cv2", }, map[string]any{ "b": "bv2", "c": "cv2", }, map[any]any{ "b": "bv2", "c": "cv2", }, } { cfg := New() cfg.Set("a", left) cfg.Merge("a", right) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": maps.Params{ "b": "bv1", "c": "cv2", }, }) } } }) // Issue #8701 c.Run("Prevent _merge only maps", func(c *qt.C) { cfg := New() cfg.Set("", map[string]any{ "B": "bv", }) cfg.Merge("", map[string]any{ "c": map[string]any{ "_merge": "shallow", "d": "dv2", }, }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "b": "bv", }) }) c.Run("IsSet", func(c *qt.C) { cfg := New() cfg.Set("a", map[string]any{ "B": "bv", }) c.Assert(cfg.IsSet("A"), qt.IsTrue) c.Assert(cfg.IsSet("a.b"), qt.IsTrue) c.Assert(cfg.IsSet("z"), qt.IsFalse) }) c.Run("Para", func(c *qt.C) { cfg := New() p := para.New(4) r, _ := p.Start(context.Background()) setAndGet := func(k string, v int) error { vs := strconv.Itoa(v) cfg.Set(k, v) err := errors.New("get failed") if cfg.Get(k) != v { return err } if cfg.GetInt(k) != v { return err } if cfg.GetString(k) != vs { return err } if !cfg.IsSet(k) { return err } return nil } for i := range 20 { i := i r.Run(func() error { const v = 42 k := fmt.Sprintf("k%d", i) if err := setAndGet(k, v); err != nil { return err } m := maps.Params{ "new": 42, } cfg.Merge("", m) return nil }) } c.Assert(r.Wait(), qt.IsNil) }) c.Run("GetBool", func(c *qt.C) { cfg := New() var k string var v bool k, v = "foo", true cfg.Set(k, v) c.Assert(cfg.Get(k), qt.Equals, v) c.Assert(cfg.GetBool(k), qt.Equals, v) }) c.Run("GetParams", func(c *qt.C) { cfg := New() k := "foo" cfg.Set(k, maps.Params{k: true}) c.Assert(cfg.GetParams(k), qt.DeepEquals, maps.Params{ k: true, }) c.Assert(cfg.GetParams("bar"), qt.IsNil) }) c.Run("Keys", func(c *qt.C) { cfg := New() k := "foo" k2 := "bar" cfg.Set(k, maps.Params{k: struct{}{}}) cfg.Set(k2, maps.Params{k2: struct{}{}}) c.Assert(len(cfg.Keys()), qt.Equals, 2) got := cfg.Keys() slices.Sort(got) want := []string{k, k2} slices.Sort(want) c.Assert(got, qt.DeepEquals, want) }) c.Run("WalkParams", func(c *qt.C) { cfg := New() cfg.Set("x", maps.Params{}) cfg.Set("y", maps.Params{}) var got []string cfg.WalkParams(func(params ...maps.KeyParams) bool { got = append(got, params[len(params)-1].Key) return false }) want := []string{"", "x", "y"} slices.Sort(got) slices.Sort(want) c.Assert(got, qt.DeepEquals, want) cfg = New() cfg.WalkParams(func(params ...maps.KeyParams) bool { return true }) got = []string{""} want = []string{""} c.Assert(got, qt.DeepEquals, want) }) c.Run("SetDefaults", func(c *qt.C) { cfg := New() cfg.SetDefaults(maps.Params{ "foo": "bar", "bar": "baz", }) c.Assert(cfg.Get("foo"), qt.Equals, "bar") c.Assert(cfg.Get("bar"), qt.Equals, "baz") }) } func BenchmarkDefaultConfigProvider(b *testing.B) { type cfger interface { Get(key string) any Set(key string, value any) IsSet(key string) bool } newMap := func() map[string]any { return map[string]any{ "a": map[string]any{ "b": map[string]any{ "c": 32, "d": 43, }, }, "b": 62, } } runMethods := func(b *testing.B, cfg cfger) { m := newMap() cfg.Set("mymap", m) cfg.Set("num", 32) if !(cfg.IsSet("mymap") && cfg.IsSet("mymap.a") && cfg.IsSet("mymap.a.b") && cfg.IsSet("mymap.a.b.c")) { b.Fatal("IsSet failed") } if cfg.Get("num") != 32 { b.Fatal("Get failed") } if cfg.Get("mymap.a.b.c") != 32 { b.Fatal("Get failed") } } b.Run("Custom", func(b *testing.B) { cfg := New() for i := 0; i < b.N; i++ { runMethods(b, cfg) } }) } gohugoio-hugo-6abdaca/config/env.go000066400000000000000000000052611507671574500175260ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "os" "runtime" "strconv" "strings" "github.com/pbnjay/memory" ) const ( gigabyte = 1 << 30 ) // GetNumWorkerMultiplier returns the base value used to calculate the number // of workers to use for Hugo's parallel execution. // It returns the value in HUGO_NUMWORKERMULTIPLIER OS env variable if set to a // positive integer, else the number of logical CPUs. func GetNumWorkerMultiplier() int { if gmp := os.Getenv("HUGO_NUMWORKERMULTIPLIER"); gmp != "" { if p, err := strconv.Atoi(gmp); err == nil && p > 0 { return p } } return runtime.NumCPU() } // GetMemoryLimit returns the upper memory limit in bytes for Hugo's in-memory caches. // Note that this does not represent "all of the memory" that Hugo will use, // so it needs to be set to a lower number than the available system memory. // It will read from the HUGO_MEMORYLIMIT (in Gigabytes) environment variable. // If that is not set, it will set aside a quarter of the total system memory. func GetMemoryLimit() uint64 { if mem := os.Getenv("HUGO_MEMORYLIMIT"); mem != "" { if v := stringToGibabyte(mem); v > 0 { return v } } // There is a FreeMemory function, but as the kernel in most situations // will take whatever memory that is left and use for caching etc., // that value is not something that we can use. m := memory.TotalMemory() if m != 0 { return uint64(m / 4) } return 2 * gigabyte } func stringToGibabyte(f string) uint64 { if v, err := strconv.ParseFloat(f, 32); err == nil && v > 0 { return uint64(v * gigabyte) } return 0 } // SetEnvVars sets vars on the form key=value in the oldVars slice. func SetEnvVars(oldVars *[]string, keyValues ...string) { for i := 0; i < len(keyValues); i += 2 { setEnvVar(oldVars, keyValues[i], keyValues[i+1]) } } func SplitEnvVar(v string) (string, string) { name, value, _ := strings.Cut(v, "=") return name, value } func setEnvVar(vars *[]string, key, value string) { for i := range *vars { if strings.HasPrefix((*vars)[i], key+"=") { (*vars)[i] = key + "=" + value return } } // New var. *vars = append(*vars, key+"="+value) } gohugoio-hugo-6abdaca/config/env_test.go000066400000000000000000000020431507671574500205600ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "testing" qt "github.com/frankban/quicktest" ) func TestSetEnvVars(t *testing.T) { t.Parallel() c := qt.New(t) vars := []string{"FOO=bar", "HUGO=cool", "BAR=foo"} SetEnvVars(&vars, "HUGO", "rocking!", "NEW", "bar") c.Assert(vars, qt.DeepEquals, []string{"FOO=bar", "HUGO=rocking!", "BAR=foo", "NEW=bar"}) key, val := SplitEnvVar("HUGO=rocks") c.Assert(key, qt.Equals, "HUGO") c.Assert(val, qt.Equals, "rocks") } gohugoio-hugo-6abdaca/config/namespace.go000066400000000000000000000044651507671574500206770ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "encoding/json" "github.com/gohugoio/hugo/common/hashing" ) func DecodeNamespace[S, C any](configSource any, buildConfig func(any) (C, any, error)) (*ConfigNamespace[S, C], error) { // Calculate the hash of the input (not including any defaults applied later). // This allows us to introduce new config options without breaking the hash. h := hashing.HashStringHex(configSource) // Build the config c, ext, err := buildConfig(configSource) if err != nil { return nil, err } if ext == nil { ext = configSource } if ext == nil { panic("ext is nil") } ns := &ConfigNamespace[S, C]{ SourceStructure: ext, SourceHash: h, Config: c, } return ns, nil } // ConfigNamespace holds a Hugo configuration namespace. // The construct looks a little odd, but it's built to make the configuration elements // both self-documenting and contained in a common structure. type ConfigNamespace[S, C any] struct { // SourceStructure represents the source configuration with any defaults applied. // This is used for documentation and printing of the configuration setup to the user. SourceStructure any // SourceHash is a hash of the source configuration before any defaults gets applied. SourceHash string // Config is the final configuration as used by Hugo. Config C } // MarshalJSON marshals the source structure. func (ns *ConfigNamespace[S, C]) MarshalJSON() ([]byte, error) { return json.Marshal(ns.SourceStructure) } // Signature returns the signature of the source structure. // Note that this is for documentation purposes only and SourceStructure may not always be cast to S (it's usually just a map). func (ns *ConfigNamespace[S, C]) Signature() S { var s S return s } gohugoio-hugo-6abdaca/config/namespace_test.go000066400000000000000000000032171507671574500217300ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package config import ( "strings" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/maps" "github.com/mitchellh/mapstructure" ) func TestNamespace(t *testing.T) { c := qt.New(t) c.Assert(true, qt.Equals, true) // ns, err := config.DecodeNamespace[map[string]DocsMediaTypeConfig](in, defaultMediaTypesConfig, buildConfig) ns, err := DecodeNamespace[[]*tstNsExt]( map[string]any{"foo": "bar"}, func(v any) (*tstNsExt, any, error) { t := &tstNsExt{} m, err := maps.ToStringMapE(v) if err != nil { return nil, nil, err } return t, nil, mapstructure.WeakDecode(m, t) }, ) c.Assert(err, qt.IsNil) c.Assert(ns, qt.Not(qt.IsNil)) c.Assert(ns.SourceStructure, qt.DeepEquals, map[string]any{"foo": "bar"}) c.Assert(ns.SourceHash, qt.Equals, "1420f6c7782f7459") c.Assert(ns.Config, qt.DeepEquals, &tstNsExt{Foo: "bar"}) c.Assert(ns.Signature(), qt.DeepEquals, []*tstNsExt(nil)) } type ( tstNsExt struct { Foo string } ) func (t *tstNsExt) Init() error { t.Foo = strings.ToUpper(t.Foo) return nil } gohugoio-hugo-6abdaca/config/privacy/000077500000000000000000000000001507671574500200605ustar00rootroot00000000000000gohugoio-hugo-6abdaca/config/privacy/privacyConfig.go000066400000000000000000000075171507671574500232240ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package privacy import ( "github.com/gohugoio/hugo/config" "github.com/mitchellh/mapstructure" ) const privacyConfigKey = "privacy" // Service is the common values for a service in a policy definition. type Service struct { Disable bool } // Config is a privacy configuration for all the relevant services in Hugo. type Config struct { Disqus Disqus GoogleAnalytics GoogleAnalytics Instagram Instagram Twitter Twitter // deprecated in favor of X in v0.141.0 Vimeo Vimeo YouTube YouTube X X } // Disqus holds the privacy configuration settings related to the Disqus template. type Disqus struct { Service `mapstructure:",squash"` } // GoogleAnalytics holds the privacy configuration settings related to the Google Analytics template. type GoogleAnalytics struct { Service `mapstructure:",squash"` // Enabling this will make the GA templates respect the // "Do Not Track" HTTP header. See https://www.paulfurley.com/google-analytics-dnt/. RespectDoNotTrack bool } // Instagram holds the privacy configuration settings related to the Instagram shortcode. type Instagram struct { Service `mapstructure:",squash"` // If simple mode is enabled, a static and no-JS version of the Instagram // image card will be built. Simple bool } // Twitter holds the privacy configuration settings related to the Twitter shortcode. // Deprecated in favor of X in v0.141.0. type Twitter struct { Service `mapstructure:",squash"` // When set to true, the Tweet and its embedded page on your site are not used // for purposes that include personalized suggestions and personalized ads. EnableDNT bool // If simple mode is enabled, a static and no-JS version of the Tweet will be built. Simple bool } // Vimeo holds the privacy configuration settings related to the Vimeo shortcode. type Vimeo struct { Service `mapstructure:",squash"` // When set to true, the Vimeo player will be blocked from tracking any session data, // including all cookies and stats. EnableDNT bool // If simple mode is enabled, only a thumbnail is fetched from i.vimeocdn.com and // shown with a play button overlaid. If a user clicks the button, he/she will // be taken to the video page on vimeo.com in a new browser tab. Simple bool } // YouTube holds the privacy configuration settings related to the YouTube shortcode. type YouTube struct { Service `mapstructure:",squash"` // When you turn on privacy-enhanced mode, // YouTube won’t store information about visitors on your website // unless the user plays the embedded video. PrivacyEnhanced bool } // X holds the privacy configuration settings related to the X shortcode. type X struct { Service `mapstructure:",squash"` // When set to true, the X post and its embedded page on your site are not // used for purposes that include personalized suggestions and personalized // ads. EnableDNT bool // If simple mode is enabled, a static and no-JS version of the X post will // be built. Simple bool } // DecodeConfig creates a privacy Config from a given Hugo configuration. func DecodeConfig(cfg config.Provider) (pc Config, err error) { if !cfg.IsSet(privacyConfigKey) { return } m := cfg.GetStringMap(privacyConfigKey) err = mapstructure.WeakDecode(m, &pc) return } gohugoio-hugo-6abdaca/config/privacy/privacyConfig_test.go000066400000000000000000000044101507671574500242500ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package privacy import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestDecodeConfigFromTOML(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [privacy] [privacy.disqus] disable = true [privacy.googleAnalytics] disable = true respectDoNotTrack = true [privacy.instagram] disable = true simple = true [privacy.x] disable = true enableDNT = true simple = true [privacy.vimeo] disable = true enableDNT = true simple = true [privacy.youtube] disable = true privacyEnhanced = true simple = true ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) got := []bool{ pc.Disqus.Disable, pc.GoogleAnalytics.Disable, pc.GoogleAnalytics.RespectDoNotTrack, pc.Instagram.Disable, pc.Instagram.Simple, pc.Vimeo.Disable, pc.Vimeo.EnableDNT, pc.Vimeo.Simple, pc.YouTube.PrivacyEnhanced, pc.YouTube.Disable, pc.X.Disable, pc.X.EnableDNT, pc.X.Simple, } c.Assert(got, qt.All(qt.Equals), true) } func TestDecodeConfigFromTOMLCaseInsensitive(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [Privacy] [Privacy.YouTube] PrivacyENhanced = true ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.YouTube.PrivacyEnhanced, qt.Equals, true) } func TestDecodeConfigDefault(t *testing.T) { c := qt.New(t) pc, err := DecodeConfig(config.New()) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.YouTube.PrivacyEnhanced, qt.Equals, false) } gohugoio-hugo-6abdaca/config/security/000077500000000000000000000000001507671574500202525ustar00rootroot00000000000000gohugoio-hugo-6abdaca/config/security/securityConfig.go000066400000000000000000000135721507671574500236060ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package security import ( "bytes" "encoding/json" "errors" "fmt" "reflect" "strings" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/mitchellh/mapstructure" ) const securityConfigKey = "security" // DefaultConfig holds the default security policy. var DefaultConfig = Config{ Exec: Exec{ Allow: MustNewWhitelist( "^(dart-)?sass(-embedded)?$", // sass, dart-sass, dart-sass-embedded. "^go$", // for Go Modules "^git$", // For Git info "^npx$", // used by all Node tools (Babel, PostCSS). "^postcss$", "^tailwindcss$", ), // These have been tested to work with Hugo's external programs // on Windows, Linux and MacOS. OsEnv: MustNewWhitelist(`(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE|PROGRAMDATA)$`), }, Funcs: Funcs{ Getenv: MustNewWhitelist("^HUGO_", "^CI$"), }, HTTP: HTTP{ URLs: MustNewWhitelist(".*"), Methods: MustNewWhitelist("(?i)GET|POST"), }, } // Config is the top level security config. // {"name": "security", "description": "This section holds the top level security config.", "newIn": "0.91.0" } type Config struct { // Restricts access to os.Exec.... // { "newIn": "0.91.0" } Exec Exec `json:"exec"` // Restricts access to certain template funcs. Funcs Funcs `json:"funcs"` // Restricts access to resources.GetRemote, getJSON, getCSV. HTTP HTTP `json:"http"` // Allow inline shortcodes EnableInlineShortcodes bool `json:"enableInlineShortcodes"` } // Exec holds os/exec policies. type Exec struct { Allow Whitelist `json:"allow"` OsEnv Whitelist `json:"osEnv"` } // Funcs holds template funcs policies. type Funcs struct { // OS env keys allowed to query in os.Getenv. Getenv Whitelist `json:"getenv"` } type HTTP struct { // URLs to allow in remote HTTP (resources.Get, getJSON, getCSV). URLs Whitelist `json:"urls"` // HTTP methods to allow. Methods Whitelist `json:"methods"` // Media types where the Content-Type in the response is used instead of resolving from the file content. MediaTypes Whitelist `json:"mediaTypes"` } // ToTOML converts c to TOML with [security] as the root. func (c Config) ToTOML() string { sec := c.ToSecurityMap() var b bytes.Buffer if err := parser.InterfaceToConfig(sec, metadecoders.TOML, &b); err != nil { panic(err) } return strings.TrimSpace(b.String()) } func (c Config) CheckAllowedExec(name string) error { if !c.Exec.Allow.Accept(name) { return &AccessDeniedError{ name: name, path: "security.exec.allow", policies: c.ToTOML(), } } return nil } func (c Config) CheckAllowedGetEnv(name string) error { if !c.Funcs.Getenv.Accept(name) { return &AccessDeniedError{ name: name, path: "security.funcs.getenv", policies: c.ToTOML(), } } return nil } func (c Config) CheckAllowedHTTPURL(url string) error { if !c.HTTP.URLs.Accept(url) { return &AccessDeniedError{ name: url, path: "security.http.urls", policies: c.ToTOML(), } } return nil } func (c Config) CheckAllowedHTTPMethod(method string) error { if !c.HTTP.Methods.Accept(method) { return &AccessDeniedError{ name: method, path: "security.http.method", policies: c.ToTOML(), } } return nil } // ToSecurityMap converts c to a map with 'security' as the root key. func (c Config) ToSecurityMap() map[string]any { // Take it to JSON and back to get proper casing etc. asJson, err := json.Marshal(c) herrors.Must(err) m := make(map[string]any) herrors.Must(json.Unmarshal(asJson, &m)) // Add the root sec := map[string]any{ "security": m, } return sec } // DecodeConfig creates a privacy Config from a given Hugo configuration. func DecodeConfig(cfg config.Provider) (Config, error) { sc := DefaultConfig if cfg.IsSet(securityConfigKey) { m := cfg.GetStringMap(securityConfigKey) dec, err := mapstructure.NewDecoder( &mapstructure.DecoderConfig{ WeaklyTypedInput: true, Result: &sc, DecodeHook: stringSliceToWhitelistHook(), }, ) if err != nil { return sc, err } if err = dec.Decode(m); err != nil { return sc, err } } if !sc.EnableInlineShortcodes { // Legacy sc.EnableInlineShortcodes = cfg.GetBool("enableInlineShortcodes") } return sc, nil } func stringSliceToWhitelistHook() mapstructure.DecodeHookFuncType { return func( f reflect.Type, t reflect.Type, data any, ) (any, error) { if t != reflect.TypeOf(Whitelist{}) { return data, nil } wl := types.ToStringSlicePreserveString(data) return NewWhitelist(wl...) } } // AccessDeniedError represents a security policy conflict. type AccessDeniedError struct { path string name string policies string } func (e *AccessDeniedError) Error() string { return fmt.Sprintf("access denied: %q is not whitelisted in policy %q; the current security configuration is:\n\n%s\n\n", e.name, e.path, e.policies) } // IsAccessDenied reports whether err is an AccessDeniedError func IsAccessDenied(err error) bool { var notFoundErr *AccessDeniedError return errors.As(err, ¬FoundErr) } gohugoio-hugo-6abdaca/config/security/securityConfig_test.go000066400000000000000000000107301507671574500246360ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package security import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestDecodeConfigFromTOML(t *testing.T) { c := qt.New(t) c.Run("Slice whitelist", func(c *qt.C) { c.Parallel() tomlConfig := ` someOtherValue = "bar" [security] enableInlineShortcodes=true [security.exec] allow=["a", "b"] osEnv=["a", "b", "c"] [security.funcs] getEnv=["a", "b"] ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.EnableInlineShortcodes, qt.IsTrue) c.Assert(pc.Exec.Allow.Accept("a"), qt.IsTrue) c.Assert(pc.Exec.Allow.Accept("d"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("a"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("e"), qt.IsFalse) c.Assert(pc.Funcs.Getenv.Accept("a"), qt.IsTrue) c.Assert(pc.Funcs.Getenv.Accept("c"), qt.IsFalse) }) c.Run("String whitelist", func(c *qt.C) { c.Parallel() tomlConfig := ` someOtherValue = "bar" [security] [security.exec] allow="a" osEnv="b" ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.Exec.Allow.Accept("a"), qt.IsTrue) c.Assert(pc.Exec.Allow.Accept("d"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("b"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("e"), qt.IsFalse) }) c.Run("Default exec.osEnv", func(c *qt.C) { c.Parallel() tomlConfig := ` someOtherValue = "bar" [security] [security.exec] allow="a" ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.Exec.Allow.Accept("a"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("PATH"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("e"), qt.IsFalse) }) c.Run("Enable inline shortcodes, legacy", func(c *qt.C) { c.Parallel() tomlConfig := ` someOtherValue = "bar" enableInlineShortcodes=true [security] [security.exec] allow="a" osEnv="b" ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc.EnableInlineShortcodes, qt.IsTrue) }) } func TestToTOML(t *testing.T) { c := qt.New(t) got := DefaultConfig.ToTOML() c.Assert(got, qt.Equals, "[security]\n enableInlineShortcodes = false\n\n [security.exec]\n allow = ['^(dart-)?sass(-embedded)?$', '^go$', '^git$', '^npx$', '^postcss$', '^tailwindcss$']\n osEnv = ['(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE|PROGRAMDATA)$']\n\n [security.funcs]\n getenv = ['^HUGO_', '^CI$']\n\n [security.http]\n methods = ['(?i)GET|POST']\n urls = ['.*']", ) } func TestDecodeConfigDefault(t *testing.T) { t.Parallel() c := qt.New(t) pc, err := DecodeConfig(config.New()) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.Exec.Allow.Accept("a"), qt.IsFalse) c.Assert(pc.Exec.Allow.Accept("npx"), qt.IsTrue) c.Assert(pc.Exec.Allow.Accept("Npx"), qt.IsFalse) c.Assert(pc.HTTP.URLs.Accept("https://example.org"), qt.IsTrue) c.Assert(pc.HTTP.Methods.Accept("POST"), qt.IsTrue) c.Assert(pc.HTTP.Methods.Accept("GET"), qt.IsTrue) c.Assert(pc.HTTP.Methods.Accept("get"), qt.IsTrue) c.Assert(pc.HTTP.Methods.Accept("DELETE"), qt.IsFalse) c.Assert(pc.HTTP.MediaTypes.Accept("application/msword"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("PATH"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("GOROOT"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("HOME"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("SSH_AUTH_SOCK"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("a"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("e"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("MYSECRET"), qt.IsFalse) } gohugoio-hugo-6abdaca/config/security/whitelist.go000066400000000000000000000051641507671574500226230ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package security import ( "encoding/json" "fmt" "regexp" "strings" ) const ( acceptNoneKeyword = "none" ) // Whitelist holds a whitelist. type Whitelist struct { acceptNone bool patterns []*regexp.Regexp // Store this for debugging/error reporting patternsStrings []string } // MarshalJSON is for internal use only. func (w Whitelist) MarshalJSON() ([]byte, error) { if w.acceptNone { return json.Marshal(acceptNoneKeyword) } return json.Marshal(w.patternsStrings) } // NewWhitelist creates a new Whitelist from zero or more patterns. // An empty patterns list or a pattern with the value 'none' will create // a whitelist that will Accept none. func NewWhitelist(patterns ...string) (Whitelist, error) { if len(patterns) == 0 { return Whitelist{acceptNone: true}, nil } var acceptSome bool var patternsStrings []string for _, p := range patterns { if p == acceptNoneKeyword { acceptSome = false break } if ps := strings.TrimSpace(p); ps != "" { acceptSome = true patternsStrings = append(patternsStrings, ps) } } if !acceptSome { return Whitelist{ acceptNone: true, }, nil } var patternsr []*regexp.Regexp for i := range patterns { p := strings.TrimSpace(patterns[i]) if p == "" { continue } re, err := regexp.Compile(p) if err != nil { return Whitelist{}, fmt.Errorf("failed to compile whitelist pattern %q: %w", p, err) } patternsr = append(patternsr, re) } return Whitelist{patterns: patternsr, patternsStrings: patternsStrings}, nil } // MustNewWhitelist creates a new Whitelist from zero or more patterns and panics on error. func MustNewWhitelist(patterns ...string) Whitelist { w, err := NewWhitelist(patterns...) if err != nil { panic(err) } return w } // Accept reports whether name is whitelisted. func (w Whitelist) Accept(name string) bool { if w.acceptNone { return false } for _, p := range w.patterns { if p.MatchString(name) { return true } } return false } func (w Whitelist) String() string { return fmt.Sprint(w.patternsStrings) } gohugoio-hugo-6abdaca/config/security/whitelist_test.go000066400000000000000000000026441507671574500236620ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package security import ( "testing" qt "github.com/frankban/quicktest" ) func TestWhitelist(t *testing.T) { t.Parallel() c := qt.New(t) c.Run("none", func(c *qt.C) { c.Assert(MustNewWhitelist("none", "foo").Accept("foo"), qt.IsFalse) c.Assert(MustNewWhitelist().Accept("foo"), qt.IsFalse) c.Assert(MustNewWhitelist("").Accept("foo"), qt.IsFalse) c.Assert(MustNewWhitelist(" ", " ").Accept("foo"), qt.IsFalse) c.Assert(Whitelist{}.Accept("foo"), qt.IsFalse) }) c.Run("One", func(c *qt.C) { w := MustNewWhitelist("^foo.*") c.Assert(w.Accept("foo"), qt.IsTrue) c.Assert(w.Accept("mfoo"), qt.IsFalse) }) c.Run("Multiple", func(c *qt.C) { w := MustNewWhitelist("^foo.*", "^bar.*") c.Assert(w.Accept("foo"), qt.IsTrue) c.Assert(w.Accept("bar"), qt.IsTrue) c.Assert(w.Accept("mbar"), qt.IsFalse) }) } gohugoio-hugo-6abdaca/config/services/000077500000000000000000000000001507671574500202265ustar00rootroot00000000000000gohugoio-hugo-6abdaca/config/services/servicesConfig.go000066400000000000000000000067161507671574500235400ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package services import ( "github.com/gohugoio/hugo/config" "github.com/mitchellh/mapstructure" ) const ( servicesConfigKey = "services" disqusShortnameKey = "disqusshortname" googleAnalyticsKey = "googleanalytics" rssLimitKey = "rssLimit" ) // Config is a privacy configuration for all the relevant services in Hugo. type Config struct { Disqus Disqus GoogleAnalytics GoogleAnalytics Instagram Instagram Twitter Twitter // deprecated in favor of X in v0.141.0 X X RSS RSS } // Disqus holds the functional configuration settings related to the Disqus template. type Disqus struct { // A Shortname is the unique identifier assigned to a Disqus site. Shortname string } // GoogleAnalytics holds the functional configuration settings related to the Google Analytics template. type GoogleAnalytics struct { // The GA tracking ID. ID string } // Instagram holds the functional configuration settings related to the Instagram shortcodes. type Instagram struct { // The Simple variant of the Instagram is decorated with Bootstrap 4 card classes. // This means that if you use Bootstrap 4 or want to provide your own CSS, you want // to disable the inline CSS provided by Hugo. DisableInlineCSS bool // App or Client Access Token. // If you are using a Client Access Token, remember that you must combine it with your App ID // using a pipe symbol (|) otherwise the request will fail. AccessToken string } // Twitter holds the functional configuration settings related to the Twitter shortcodes. // Deprecated in favor of X in v0.141.0. type Twitter struct { // The Simple variant of Twitter is decorated with a basic set of inline styles. // This means that if you want to provide your own CSS, you want // to disable the inline CSS provided by Hugo. DisableInlineCSS bool } // X holds the functional configuration settings related to the X shortcodes. type X struct { // The Simple variant of X is decorated with a basic set of inline styles. // This means that if you want to provide your own CSS, you want // to disable the inline CSS provided by Hugo. DisableInlineCSS bool } // RSS holds the functional configuration settings related to the RSS feeds. type RSS struct { // Limit the number of pages. Limit int } // DecodeConfig creates a services Config from a given Hugo configuration. func DecodeConfig(cfg config.Provider) (c Config, err error) { m := cfg.GetStringMap(servicesConfigKey) err = mapstructure.WeakDecode(m, &c) // Keep backwards compatibility. if c.GoogleAnalytics.ID == "" { // Try the global config c.GoogleAnalytics.ID = cfg.GetString(googleAnalyticsKey) } if c.Disqus.Shortname == "" { c.Disqus.Shortname = cfg.GetString(disqusShortnameKey) } if c.RSS.Limit == 0 { c.RSS.Limit = cfg.GetInt(rssLimitKey) if c.RSS.Limit == 0 { c.RSS.Limit = -1 } } return } gohugoio-hugo-6abdaca/config/services/servicesConfig_test.go000066400000000000000000000034401507671574500245660ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package services import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestDecodeConfigFromTOML(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [services] [services.disqus] shortname = "DS" [services.googleAnalytics] id = "ga_id" [services.instagram] disableInlineCSS = true [services.twitter] disableInlineCSS = true [services.x] disableInlineCSS = true ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) config, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(config, qt.Not(qt.IsNil)) c.Assert(config.Disqus.Shortname, qt.Equals, "DS") c.Assert(config.GoogleAnalytics.ID, qt.Equals, "ga_id") c.Assert(config.Instagram.DisableInlineCSS, qt.Equals, true) } // Support old root-level GA settings etc. func TestUseSettingsFromRootIfSet(t *testing.T) { c := qt.New(t) cfg := config.New() cfg.Set("disqusShortname", "root_short") cfg.Set("googleAnalytics", "ga_root") config, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(config, qt.Not(qt.IsNil)) c.Assert(config.Disqus.Shortname, qt.Equals, "root_short") c.Assert(config.GoogleAnalytics.ID, qt.Equals, "ga_root") } gohugoio-hugo-6abdaca/config/testconfig/000077500000000000000000000000001507671574500205505ustar00rootroot00000000000000gohugoio-hugo-6abdaca/config/testconfig/testconfig.go000066400000000000000000000043451507671574500232520ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // This package should only be used for testing. package testconfig import ( _ "unsafe" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/hugofs" toml "github.com/pelletier/go-toml/v2" "github.com/spf13/afero" ) func GetTestConfigs(fs afero.Fs, cfg config.Provider) *allconfig.Configs { if fs == nil { fs = afero.NewMemMapFs() } if cfg == nil { cfg = config.New() } // Make sure that the workingDir exists. workingDir := cfg.GetString("workingDir") if workingDir != "" { if err := fs.MkdirAll(workingDir, 0o777); err != nil { panic(err) } } configs, err := allconfig.LoadConfig(allconfig.ConfigSourceDescriptor{Fs: fs, Flags: cfg, Environ: []string{"EMPTY_TEST_ENVIRONMENT"}}) if err != nil { panic(err) } return configs } func GetTestConfig(fs afero.Fs, cfg config.Provider) config.AllProvider { return GetTestConfigs(fs, cfg).GetFirstLanguageConfig() } func GetTestDeps(fs afero.Fs, cfg config.Provider, beforeInit ...func(*deps.Deps)) *deps.Deps { if fs == nil { fs = afero.NewMemMapFs() } conf := GetTestConfig(fs, cfg) d := &deps.Deps{ Conf: conf, Fs: hugofs.NewFrom(fs, conf.BaseConfig()), } for _, f := range beforeInit { f(d) } if err := d.Init(); err != nil { panic(err) } return d } func GetTestConfigSectionFromStruct(section string, v any) config.AllProvider { data, err := toml.Marshal(v) if err != nil { panic(err) } p := maps.Params{ section: config.FromTOMLConfigString(string(data)).Get(""), } cfg := config.NewFrom(p) return GetTestConfig(nil, cfg) } gohugoio-hugo-6abdaca/create/000077500000000000000000000000001507671574500164015ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/content.go000066400000000000000000000235241507671574500204100ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package create provides functions to create new content. package create import ( "bytes" "errors" "fmt" "io" "os" "path/filepath" "strings" "github.com/gohugoio/hugo/hugofs/glob" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/hstrings" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugolib" "github.com/spf13/afero" ) const ( // DefaultArchetypeTemplateTemplate is the template used in 'hugo new site' // and the template we use as a fall back. DefaultArchetypeTemplateTemplate = `--- title: "{{ replace .File.ContentBaseName "-" " " | title }}" date: {{ .Date }} draft: true --- ` ) // NewContent creates a new content file in h (or a full bundle if the archetype is a directory) // in targetPath. func NewContent(h *hugolib.HugoSites, kind, targetPath string, force bool) error { if _, err := h.BaseFs.Content.Fs.Stat(""); err != nil { return errors.New("no existing content directory configured for this project") } cf := hugolib.NewContentFactory(h) if kind == "" { var err error kind, err = cf.SectionFromFilename(targetPath) if err != nil { return err } } b := &contentBuilder{ archeTypeFs: h.PathSpec.BaseFs.Archetypes.Fs, sourceFs: h.PathSpec.Fs.Source, ps: h.PathSpec, h: h, cf: cf, kind: kind, targetPath: targetPath, force: force, } ext := paths.Ext(targetPath) b.setArcheTypeFilenameToUse(ext) withBuildLock := func() (string, error) { if !h.Configs.Base.NoBuildLock { unlock, err := h.BaseFs.LockBuild() if err != nil { return "", fmt.Errorf("failed to acquire a build lock: %s", err) } defer unlock() } if b.isDir { return "", b.buildDir() } if ext == "" { return "", fmt.Errorf("failed to resolve %q to an archetype template", targetPath) } if !h.Conf.ContentTypes().IsContentFile(b.targetPath) { return "", fmt.Errorf("target path %q is not a known content format", b.targetPath) } return b.buildFile() } filename, err := withBuildLock() if err != nil { return err } if filename != "" { return b.openInEditorIfConfigured(filename) } return nil } type contentBuilder struct { archeTypeFs afero.Fs sourceFs afero.Fs ps *helpers.PathSpec h *hugolib.HugoSites cf hugolib.ContentFactory // Builder state archetypeFi hugofs.FileMetaInfo targetPath string kind string isDir bool dirMap archetypeMap force bool } func (b *contentBuilder) buildDir() error { // Split the dir into content files and the rest. if err := b.mapArcheTypeDir(); err != nil { return err } var contentTargetFilenames []string var baseDir string for _, fi := range b.dirMap.contentFiles { targetFilename := filepath.Join(b.targetPath, strings.TrimPrefix(fi.Meta().PathInfo.Path(), b.archetypeFi.Meta().PathInfo.Path())) // ===> post/my-post/pages/bio.md abs, err := b.cf.CreateContentPlaceHolder(targetFilename, b.force) if err != nil { return err } if baseDir == "" { baseDir = strings.TrimSuffix(abs, targetFilename) } contentTargetFilenames = append(contentTargetFilenames, abs) } var contentInclusionFilter *glob.FilenameFilter if !b.dirMap.siteUsed { // We don't need to build everything. contentInclusionFilter = glob.NewFilenameFilterForInclusionFunc(func(filename string) bool { filename = strings.TrimPrefix(filename, string(os.PathSeparator)) for _, cn := range contentTargetFilenames { if strings.Contains(cn, filename) { return true } } return false }) } if err := b.h.Build(hugolib.BuildCfg{NoBuildLock: true, SkipRender: true, ContentInclusionFilter: contentInclusionFilter}); err != nil { return err } for i, filename := range contentTargetFilenames { if err := b.applyArcheType(filename, b.dirMap.contentFiles[i]); err != nil { return err } } // Copy the rest as is. for _, fi := range b.dirMap.otherFiles { meta := fi.Meta() in, err := meta.Open() if err != nil { return fmt.Errorf("failed to open non-content file: %w", err) } targetFilename := filepath.Join(baseDir, b.targetPath, strings.TrimPrefix(fi.Meta().Filename, b.archetypeFi.Meta().Filename)) targetDir := filepath.Dir(targetFilename) if err := b.sourceFs.MkdirAll(targetDir, 0o777); err != nil && !os.IsExist(err) { return fmt.Errorf("failed to create target directory for %q: %w", targetDir, err) } out, err := b.sourceFs.Create(targetFilename) if err != nil { return err } _, err = io.Copy(out, in) if err != nil { return err } in.Close() out.Close() } b.h.Log.Printf("Content dir %q created", filepath.Join(baseDir, b.targetPath)) return nil } func (b *contentBuilder) buildFile() (string, error) { contentPlaceholderAbsFilename, err := b.cf.CreateContentPlaceHolder(b.targetPath, b.force) if err != nil { return "", err } usesSite, err := b.usesSiteVar(b.archetypeFi) if err != nil { return "", err } var contentInclusionFilter *glob.FilenameFilter if !usesSite { // We don't need to build everything. contentInclusionFilter = glob.NewFilenameFilterForInclusionFunc(func(filename string) bool { filename = strings.TrimPrefix(filename, string(os.PathSeparator)) return strings.Contains(contentPlaceholderAbsFilename, filename) }) } if err := b.h.Build(hugolib.BuildCfg{NoBuildLock: true, SkipRender: true, ContentInclusionFilter: contentInclusionFilter}); err != nil { return "", err } if err := b.applyArcheType(contentPlaceholderAbsFilename, b.archetypeFi); err != nil { return "", err } b.h.Log.Printf("Content %q created", contentPlaceholderAbsFilename) return contentPlaceholderAbsFilename, nil } func (b *contentBuilder) setArcheTypeFilenameToUse(ext string) { var pathsToCheck []string if b.kind != "" { pathsToCheck = append(pathsToCheck, b.kind+ext) } pathsToCheck = append(pathsToCheck, "default"+ext) for _, p := range pathsToCheck { fi, err := b.archeTypeFs.Stat(p) if err == nil { b.archetypeFi = fi.(hugofs.FileMetaInfo) b.isDir = fi.IsDir() return } } } func (b *contentBuilder) applyArcheType(contentFilename string, archetypeFi hugofs.FileMetaInfo) error { p := b.h.GetContentPage(contentFilename) if p == nil { panic(fmt.Sprintf("[BUG] no Page found for %q", contentFilename)) } f, err := b.sourceFs.Create(contentFilename) if err != nil { return err } defer f.Close() if archetypeFi == nil { return b.cf.ApplyArchetypeTemplate(f, p, b.kind, DefaultArchetypeTemplateTemplate) } return b.cf.ApplyArchetypeFi(f, p, b.kind, archetypeFi) } func (b *contentBuilder) mapArcheTypeDir() error { var m archetypeMap seen := map[hstrings.Strings2]bool{} walkFn := func(path string, fim hugofs.FileMetaInfo) error { if fim.IsDir() { return nil } pi := fim.Meta().PathInfo if pi.IsContent() { pathLang := hstrings.Strings2{pi.PathBeforeLangAndOutputFormatAndExt(), fim.Meta().Lang} if seen[pathLang] { // Duplicate content file, e.g. page.md and page.html. // In the regular build, we will filter out the duplicates, but // for archetype folders these are ambiguous and we need to // fail. return fmt.Errorf("duplicate content file found in archetype folder: %q; having both e.g. %s.md and %s.html is ambigous", path, pi.BaseNameNoIdentifier(), pi.BaseNameNoIdentifier()) } seen[pathLang] = true m.contentFiles = append(m.contentFiles, fim) if !m.siteUsed { var err error m.siteUsed, err = b.usesSiteVar(fim) if err != nil { return err } } return nil } m.otherFiles = append(m.otherFiles, fim) return nil } walkCfg := hugofs.WalkwayConfig{ WalkFn: walkFn, Fs: b.archeTypeFs, Root: filepath.FromSlash(b.archetypeFi.Meta().PathInfo.Path()), } w := hugofs.NewWalkway(walkCfg) if err := w.Walk(); err != nil { return fmt.Errorf("failed to walk archetype dir %q: %w", b.archetypeFi.Meta().Filename, err) } b.dirMap = m return nil } func (b *contentBuilder) openInEditorIfConfigured(filename string) error { editor := b.h.Conf.NewContentEditor() if editor == "" { return nil } editorExec := strings.Fields(editor)[0] editorFlags := strings.Fields(editor)[1:] var args []any for _, editorFlag := range editorFlags { args = append(args, editorFlag) } args = append( args, filename, hexec.WithStdin(os.Stdin), hexec.WithStderr(os.Stderr), hexec.WithStdout(os.Stdout), ) b.h.Log.Printf("Editing %q with %q ...\n", filename, editorExec) cmd, err := b.h.Deps.ExecHelper.New(editorExec, args...) if err != nil { return err } return cmd.Run() } func (b *contentBuilder) usesSiteVar(fi hugofs.FileMetaInfo) (bool, error) { if fi == nil { return false, nil } f, err := fi.Meta().Open() if err != nil { return false, err } defer f.Close() bb, err := io.ReadAll(f) if err != nil { return false, fmt.Errorf("failed to read archetype file: %w", err) } return bytes.Contains(bb, []byte(".Site")) || bytes.Contains(bb, []byte("site.")), nil } type archetypeMap struct { // These needs to be parsed and executed as Go templates. contentFiles []hugofs.FileMetaInfo // These are just copied to destination. otherFiles []hugofs.FileMetaInfo // If the templates needs a fully built site. This can potentially be // expensive, so only do when needed. siteUsed bool } gohugoio-hugo-6abdaca/create/content_test.go000066400000000000000000000242421507671574500214450ustar00rootroot00000000000000// Copyright 2016 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package create_test import ( "fmt" "os" "path/filepath" "strings" "testing" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/config/testconfig" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/hugofs" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/create" "github.com/gohugoio/hugo/helpers" "github.com/spf13/afero" ) // TODO(bep) clean this up. Export the test site builder in Hugolib or something. func TestNewContentFromFile(t *testing.T) { cases := []struct { name string kind string path string expected any }{ {"Post", "post", "post/sample-1.md", []string{`title = "Post Arch title"`, `test = "test1"`, "date = \"2015-01-12T19:20:04-07:00\""}}, {"Post org-mode", "post", "post/org-1.org", []string{`#+title: ORG-1`}}, {"Post, unknown content filetype", "post", "post/sample-1.pdoc", false}, {"Empty date", "emptydate", "post/sample-ed.md", []string{`title = "Empty Date Arch title"`, `test = "test1"`}}, {"Archetype file not found", "stump", "stump/sample-2.md", []string{`title: "Sample 2"`}}, // no archetype file {"No archetype", "", "sample-3.md", []string{`title: "Sample 3"`}}, // no archetype {"Empty archetype", "product", "product/sample-4.md", []string{`title = "SAMPLE-4"`}}, // empty archetype front matter {"Filenames", "filenames", "content/mypage/index.md", []string{"title = \"INDEX\"\n+++\n\n\nContentBaseName: mypage"}}, {"Branch Name", "name", "content/tags/tag-a/_index.md", []string{"+++\ntitle = 'Tag A'\n+++"}}, {"Lang 1", "lang", "post/lang-1.md", []string{`Site Lang: en|Name: Lang 1|i18n: Hugo Rocks!`}}, {"Lang 2", "lang", "post/lang-2.en.md", []string{`Site Lang: en|Name: Lang 2|i18n: Hugo Rocks!`}}, {"Lang nn file", "lang", "content/post/lang-3.nn.md", []string{`Site Lang: nn|Name: Lang 3|i18n: Hugo Rokkar!`}}, {"Lang nn dir", "lang", "content_nn/post/lang-4.md", []string{`Site Lang: nn|Name: Lang 4|i18n: Hugo Rokkar!`}}, {"Lang en in nn dir", "lang", "content_nn/post/lang-5.en.md", []string{`Site Lang: en|Name: Lang 5|i18n: Hugo Rocks!`}}, {"Lang en default", "lang", "post/my-bundle/index.md", []string{`Site Lang: en|Name: My Bundle|i18n: Hugo Rocks!`}}, {"Lang en file", "lang", "post/my-bundle/index.en.md", []string{`Site Lang: en|Name: My Bundle|i18n: Hugo Rocks!`}}, {"Lang nn bundle", "lang", "content/post/my-bundle/index.nn.md", []string{`Site Lang: nn|Name: My Bundle|i18n: Hugo Rokkar!`}}, {"Site", "site", "content/mypage/index.md", []string{"RegularPages .Site: 10", "RegularPages site: 10"}}, {"Shortcodes", "shortcodes", "shortcodes/go.md", []string{ `title = "GO"`, "{{< myshortcode >}}", "{{% myshortcode %}}", "{{}}\n{{%/* comment */%}}", }}, // shortcodes } c := qt.New(t) for i, cas := range cases { cas := cas c.Run(cas.name, func(c *qt.C) { c.Parallel() mm := afero.NewMemMapFs() c.Assert(initFs(mm), qt.IsNil) cfg, fs := newTestCfg(c, mm) conf := testconfig.GetTestConfigs(fs.Source, cfg) h, err := hugolib.NewHugoSites(deps.DepsCfg{Configs: conf, Fs: fs}) c.Assert(err, qt.IsNil) err = create.NewContent(h, cas.kind, cas.path, false) if b, ok := cas.expected.(bool); ok && !b { if !b { c.Assert(err, qt.Not(qt.IsNil)) } return } c.Assert(err, qt.IsNil) fname := filepath.FromSlash(cas.path) if !strings.HasPrefix(fname, "content") { fname = filepath.Join("content", fname) } content := readFileFromFs(c, fs.Source, fname) for _, v := range cas.expected.([]string) { found := strings.Contains(content, v) if !found { c.Fatalf("[%d] %q missing from output:\n%q", i, v, content) } } }) } } func TestNewContentFromDirSiteFunction(t *testing.T) { mm := afero.NewMemMapFs() c := qt.New(t) archetypeDir := filepath.Join("archetypes", "my-bundle") defaultArchetypeDir := filepath.Join("archetypes", "default") c.Assert(mm.MkdirAll(archetypeDir, 0o755), qt.IsNil) c.Assert(mm.MkdirAll(defaultArchetypeDir, 0o755), qt.IsNil) contentFile := ` File: %s site RegularPages: {{ len site.RegularPages }} ` c.Assert(afero.WriteFile(mm, filepath.Join(archetypeDir, "index.md"), fmt.Appendf(nil, contentFile, "index.md"), 0o755), qt.IsNil) c.Assert(afero.WriteFile(mm, filepath.Join(defaultArchetypeDir, "index.md"), []byte("default archetype index.md"), 0o755), qt.IsNil) c.Assert(initFs(mm), qt.IsNil) cfg, fs := newTestCfg(c, mm) conf := testconfig.GetTestConfigs(fs.Source, cfg) h, err := hugolib.NewHugoSites(deps.DepsCfg{Configs: conf, Fs: fs}) c.Assert(err, qt.IsNil) c.Assert(len(h.Sites), qt.Equals, 2) c.Assert(create.NewContent(h, "my-bundle", "post/my-post", false), qt.IsNil) cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/index.md")), `site RegularPages: 10`) // Default bundle archetype c.Assert(create.NewContent(h, "", "post/my-post2", false), qt.IsNil) cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post2/index.md")), `default archetype index.md`) // Regular file with bundle kind. c.Assert(create.NewContent(h, "my-bundle", "post/foo.md", false), qt.IsNil) cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/foo.md")), `draft: true`) // Regular files should fall back to the default archetype (we have no regular file archetype). c.Assert(create.NewContent(h, "my-bundle", "mypage.md", false), qt.IsNil) cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "mypage.md")), `draft: true`) } func initFs(fs afero.Fs) error { perm := os.FileMode(0o755) var err error // create directories dirs := []string{ "archetypes", "content", filepath.Join("themes", "sample", "archetypes"), } for _, dir := range dirs { err = fs.Mkdir(dir, perm) if err != nil && !os.IsExist(err) { return err } } // create some dummy content for i := 1; i <= 10; i++ { filename := filepath.Join("content", fmt.Sprintf("page%d.md", i)) afero.WriteFile(fs, filename, []byte(`--- title: Test --- `), 0o666) } // create archetype files for _, v := range []struct { path string content string }{ { path: filepath.Join("archetypes", "post.md"), content: "+++\ndate = \"2015-01-12T19:20:04-07:00\"\ntitle = \"Post Arch title\"\ntest = \"test1\"\n+++\n", }, { path: filepath.Join("archetypes", "post.org"), content: "#+title: {{ .BaseFileName | upper }}", }, { path: filepath.Join("archetypes", "name.md"), content: `+++ title = '{{ replace .Name "-" " " | title }}' +++`, }, { path: filepath.Join("archetypes", "product.md"), content: `+++ title = "{{ .BaseFileName | upper }}" +++`, }, { path: filepath.Join("archetypes", "filenames.md"), content: `... title = "{{ .BaseFileName | upper }}" +++ ContentBaseName: {{ .File.ContentBaseName }} `, }, { path: filepath.Join("archetypes", "site.md"), content: `... title = "{{ .BaseFileName | upper }}" +++ Len RegularPages .Site: {{ len .Site.RegularPages }} Len RegularPages site: {{ len site.RegularPages }} `, }, { path: filepath.Join("archetypes", "emptydate.md"), content: "+++\ndate =\"\"\ntitle = \"Empty Date Arch title\"\ntest = \"test1\"\n+++\n", }, { path: filepath.Join("archetypes", "lang.md"), content: `Site Lang: {{ site.Language.Lang }}|Name: {{ replace .Name "-" " " | title }}|i18n: {{ T "hugo" }}`, }, // #3623x { path: filepath.Join("archetypes", "shortcodes.md"), content: `+++ title = "{{ .BaseFileName | upper }}" +++ {{< myshortcode >}} Some text. {{% myshortcode %}} {{}} {{%/* comment */%}} `, }, } { f, err := fs.Create(v.path) if err != nil { return err } defer f.Close() _, err = f.Write([]byte(v.content)) if err != nil { return err } } return nil } func cContains(c *qt.C, v any, matches ...string) { for _, m := range matches { c.Assert(v, qt.Contains, m) } } // TODO(bep) extract common testing package with this and some others func readFileFromFs(t testing.TB, fs afero.Fs, filename string) string { t.Helper() filename = filepath.FromSlash(filename) b, err := afero.ReadFile(fs, filename) if err != nil { // Print some debug info root := strings.Split(filename, helpers.FilePathSeparator)[0] afero.Walk(fs, root, func(path string, info os.FileInfo, err error) error { if info != nil && !info.IsDir() { fmt.Println(" ", path) } return nil }) t.Fatalf("Failed to read file: %s", err) } return string(b) } func newTestCfg(c *qt.C, mm afero.Fs) (config.Provider, *hugofs.Fs) { cfg := ` theme = "mytheme" [languages] [languages.en] weight = 1 languageName = "English" [languages.nn] weight = 2 languageName = "Nynorsk" [module] [[module.mounts]] source = 'archetypes' target = 'archetypes' [[module.mounts]] source = 'content' target = 'content' lang = 'en' [[module.mounts]] source = 'content_nn' target = 'content' lang = 'nn' ` if mm == nil { mm = afero.NewMemMapFs() } mm.MkdirAll(filepath.FromSlash("content_nn"), 0o777) mm.MkdirAll(filepath.FromSlash("themes/mytheme"), 0o777) c.Assert(afero.WriteFile(mm, filepath.Join("i18n", "en.toml"), []byte(`[hugo] other = "Hugo Rocks!"`), 0o755), qt.IsNil) c.Assert(afero.WriteFile(mm, filepath.Join("i18n", "nn.toml"), []byte(`[hugo] other = "Hugo Rokkar!"`), 0o755), qt.IsNil) c.Assert(afero.WriteFile(mm, "config.toml", []byte(cfg), 0o755), qt.IsNil) res, err := allconfig.LoadConfig(allconfig.ConfigSourceDescriptor{Fs: mm, Filename: "config.toml"}) c.Assert(err, qt.IsNil) return res.LoadingInfo.Cfg, hugofs.NewFrom(mm, res.LoadingInfo.BaseConfig) } gohugoio-hugo-6abdaca/create/skeletons/000077500000000000000000000000001507671574500204105ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/000077500000000000000000000000001507671574500213545ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/assets/000077500000000000000000000000001507671574500226565ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/assets/.gitkeep000066400000000000000000000000001507671574500242750ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/content/000077500000000000000000000000001507671574500230265ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/content/.gitkeep000066400000000000000000000000001507671574500244450ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/data/000077500000000000000000000000001507671574500222655ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/data/.gitkeep000066400000000000000000000000001507671574500237040ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/i18n/000077500000000000000000000000001507671574500221335ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/i18n/.gitkeep000066400000000000000000000000001507671574500235520ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/layouts/000077500000000000000000000000001507671574500230545ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/layouts/.gitkeep000066400000000000000000000000001507671574500244730ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/static/000077500000000000000000000000001507671574500226435ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/static/.gitkeep000066400000000000000000000000001507671574500242620ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/themes/000077500000000000000000000000001507671574500226415ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/site/themes/.gitkeep000066400000000000000000000000001507671574500242600ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/skeletons.go000066400000000000000000000115421507671574500227510ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package skeletons import ( "bytes" "embed" "errors" "io/fs" "path/filepath" "strings" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/afero" ) //go:embed all:site/* var siteFs embed.FS //go:embed all:theme/* var themeFs embed.FS // CreateTheme creates a theme skeleton. func CreateTheme(createpath string, sourceFs afero.Fs, format string) error { if exists, _ := helpers.Exists(createpath, sourceFs); exists { return errors.New(createpath + " already exists") } format = strings.ToLower(format) siteConfig := map[string]any{ "baseURL": "https://example.org/", "languageCode": "en-US", "title": "My New Hugo Site", "menus": map[string]any{ "main": []any{ map[string]any{ "name": "Home", "pageRef": "/", "weight": 10, }, map[string]any{ "name": "Posts", "pageRef": "/posts", "weight": 20, }, map[string]any{ "name": "Tags", "pageRef": "/tags", "weight": 30, }, }, }, "module": map[string]any{ "hugoVersion": map[string]any{ "extended": false, "min": "0.146.0", }, }, } err := createSiteConfig(sourceFs, createpath, siteConfig, format) if err != nil { return err } defaultArchetype := map[string]any{ "title": "{{ replace .File.ContentBaseName \"-\" \" \" | title }}", "date": "{{ .Date }}", "draft": true, } err = createDefaultArchetype(sourceFs, createpath, defaultArchetype, format) if err != nil { return err } return copyFiles(createpath, sourceFs, themeFs) } // CreateSite creates a site skeleton. func CreateSite(createpath string, sourceFs afero.Fs, force bool, format string) error { format = strings.ToLower(format) if exists, _ := helpers.Exists(createpath, sourceFs); exists { if isDir, _ := helpers.IsDir(createpath, sourceFs); !isDir { return errors.New(createpath + " already exists but not a directory") } isEmpty, _ := helpers.IsEmpty(createpath, sourceFs) switch { case !isEmpty && !force: return errors.New(createpath + " already exists and is not empty. See --force.") case !isEmpty && force: var all []string fs.WalkDir(siteFs, ".", func(path string, d fs.DirEntry, err error) error { if d.IsDir() && path != "." { all = append(all, path) } return nil }) all = append(all, filepath.Join(createpath, "hugo."+format)) for _, path := range all { if exists, _ := helpers.Exists(path, sourceFs); exists { return errors.New(path + " already exists") } } } } siteConfig := map[string]any{ "baseURL": "https://example.org/", "title": "My New Hugo Site", "languageCode": "en-us", } err := createSiteConfig(sourceFs, createpath, siteConfig, format) if err != nil { return err } defaultArchetype := map[string]any{ "title": "{{ replace .File.ContentBaseName \"-\" \" \" | title }}", "date": "{{ .Date }}", "draft": true, } err = createDefaultArchetype(sourceFs, createpath, defaultArchetype, format) if err != nil { return err } return copyFiles(createpath, sourceFs, siteFs) } func copyFiles(createpath string, sourceFs afero.Fs, skeleton embed.FS) error { return fs.WalkDir(skeleton, ".", func(path string, d fs.DirEntry, err error) error { _, slug, _ := strings.Cut(path, "/") if d.IsDir() { return sourceFs.MkdirAll(filepath.Join(createpath, slug), 0o777) } else { if filepath.Base(path) != ".gitkeep" { data, _ := fs.ReadFile(skeleton, path) return helpers.WriteToDisk(filepath.Join(createpath, slug), bytes.NewReader(data), sourceFs) } return nil } }) } func createSiteConfig(fs afero.Fs, createpath string, in map[string]any, format string) (err error) { var buf bytes.Buffer err = parser.InterfaceToConfig(in, metadecoders.FormatFromString(format), &buf) if err != nil { return err } return helpers.WriteToDisk(filepath.Join(createpath, "hugo."+format), &buf, fs) } func createDefaultArchetype(fs afero.Fs, createpath string, in map[string]any, format string) (err error) { var buf bytes.Buffer err = parser.InterfaceToFrontMatter(in, metadecoders.FormatFromString(format), &buf) if err != nil { return err } return helpers.WriteToDisk(filepath.Join(createpath, "archetypes", "default.md"), &buf, fs) } gohugoio-hugo-6abdaca/create/skeletons/theme/000077500000000000000000000000001507671574500215125ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/assets/000077500000000000000000000000001507671574500230145ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/assets/css/000077500000000000000000000000001507671574500236045ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/assets/css/main.css000066400000000000000000000004341507671574500252430ustar00rootroot00000000000000body { color: #222; font-family: sans-serif; line-height: 1.5; margin: 1rem; max-width: 768px; } header { border-bottom: 1px solid #222; margin-bottom: 1rem; } footer { border-top: 1px solid #222; margin-top: 1rem; } a { color: #00e; text-decoration: none; } gohugoio-hugo-6abdaca/create/skeletons/theme/assets/js/000077500000000000000000000000001507671574500234305ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/assets/js/main.js000066400000000000000000000000611507671574500247070ustar00rootroot00000000000000console.log('This site was generated by Hugo.'); gohugoio-hugo-6abdaca/create/skeletons/theme/content/000077500000000000000000000000001507671574500231645ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/content/_index.md000066400000000000000000000004271507671574500247570ustar00rootroot00000000000000+++ title = 'Home' date = 2023-01-01T08:00:00-07:00 draft = false +++ Laborum voluptate pariatur ex culpa magna nostrud est incididunt fugiat pariatur do dolor ipsum enim. Consequat tempor do dolor eu. Non id id anim anim excepteur excepteur pariatur nostrud qui irure ullamco. gohugoio-hugo-6abdaca/create/skeletons/theme/content/posts/000077500000000000000000000000001507671574500243345ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/content/posts/_index.md000066400000000000000000000005571507671574500261330ustar00rootroot00000000000000+++ title = 'Posts' date = 2023-01-01T08:30:00-07:00 draft = false +++ Tempor est exercitation ad qui pariatur quis adipisicing aliquip nisi ea consequat ipsum occaecat. Nostrud consequat ullamco laboris fugiat esse esse adipisicing velit laborum ipsum incididunt ut enim. Dolor pariatur nulla quis fugiat dolore excepteur. Aliquip ad quis aliqua enim do consequat. gohugoio-hugo-6abdaca/create/skeletons/theme/content/posts/post-1.md000066400000000000000000000014541507671574500260050ustar00rootroot00000000000000+++ title = 'Post 1' date = 2023-01-15T09:00:00-07:00 draft = false tags = ['red'] +++ Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do. Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem. Occaecat nulla excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint labore consequat do. gohugoio-hugo-6abdaca/create/skeletons/theme/content/posts/post-2.md000066400000000000000000000016541507671574500260100ustar00rootroot00000000000000+++ title = 'Post 2' date = 2023-02-15T10:00:00-07:00 draft = false tags = ['red','green'] +++ Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia. Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud. gohugoio-hugo-6abdaca/create/skeletons/theme/content/posts/post-3/000077500000000000000000000000001507671574500254615ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/content/posts/post-3/bryce-canyon.jpg000066400000000000000000000454301507671574500305620ustar00rootroot00000000000000JFIFC     #!)!$%'('+.+&.#&'&C   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,A!1AQa"q2#BRb$CSr34D'!1A"Qa2Rq ?܉] }S@ ր}=\z+Zz;8hPҀ$ϵ 86( !z44@vM'>v=v;cPl43@ m#ހ:)4>Qp8@H 8Pi@ (Q@ Pm}`vzL{cހ/v@|Q@}h@ iP|<@ ohS@ X {QbXEH4Ҁǵ.hp@ 7Ju'f&qh@!cL޴czҠý0jA!i@ =?@ ZP{_($y&vAh;?h8'O?X ٿX؟`„8BcLdzP!?8 az@b}n迭2~P tQpݱE>' (P=~j2O;LЂ{z,(xڿQaGg&>>XQ7 *‡Z(K@/T;bPwTv)&@POPR>s eI6O/Ov#zhTނE@A>FF#vo4@ |23Q`{iQnmAIz,iw~2`.nH@⁊7)BE3.K[fLe21OLpY8 jaӊ+?WMe 6$دnC[Zfn~#-! 8_?Η]VI!,<nߎCM!r 9rn쏸4mGtvlsϿ4X#C`3ԋhc/i"Иh4g8Rj6AеAs瘲F,p'4|#5yrjQ7ҊPh9o)e9#49 d!e%gf@m)Sz֢*ݔyp֫g~`XO/\pq=du9In< F :z45Ωm'Ye<؟+hu@y0}8G3O LŇi4N$~*w.~8f*i<ŠVCƝmfoa4Ri}I[3r#˲[䶵~ƋcI DPl4(["/5k(NŨp'3S/Җ9>M`AY*̹?lmנ9<$sL ~ACLCNߚ,s$Lgl{ r7ff"_ޥʊ3a i-pJ&GQVg?'\l!q՘ GZxr CZMgI`\q%ƥq,%ȈBW$(\jWcIEpNG8FS ++H/q%X?^93Q"x\GbUhyrzp+]h_wLq. vpA##nqeH]˹A3 |ӌ?S%"4F`NI?z6NWJCǷQY4\ea m ؅ۮD|bkpC}RYn%t@iXe(Φ95VT ?੊E*D'ϓdRO5 S;o)kSϛ3VL\z3HޤS[hūD0|__Tk?XO{)'c߽DQh&Z:t{moBnj.}G{1>ava1Q/Vt̩;9qڭ9.JTu.A<M_?Vk<~!Ҭ % rHJVD$RJ$Ĉ_+rz*췏M*pr`e@9=Y#Xn2Yr@f{Դq}`~v=W8^p=q-M-KW.m SmP{qIR\ 5G0>n$jFk9Vw"R$*Z/56 bK*I[k=Sh_γP#Ү۳)R!/Vr'R0w`eIK +tŤRb2Ϡ#ۋVFaowV\rȻvɲغ߷N;V~h?9f;E{'CR,bΊbq\{14kQ.Vmnq[& ໜ"ȿJX5jE~^R'H$-˻t.1.S=~JX:^ZCM1#`BłIv#ޛ+4dzoe}%e.P gGply3 xcGiTۢYyW<u 1DK?FѮe8Si0Ջ;eӌR™$-aqpʑ,2G$u$=}5T7G7x#a:BC*O QF,~{$Zqmh-T3 ^k5).{K4vDOK&bAF@MVY^x}vĶ[R&G[p2S9X&яysG;)x;cႂC/Q;PОit(M,_VbFYI;dpybG3lVFgoټb@ )=_ 7[k!5]pQ(ƋIYUYJ_n<'TgCsjRC.b@G"y?NmZu-mVyU sF A^CTZ`,^/ø d =tdqRC&y 猜Ot|J+{lf8mRibCy;#XQe}.HRci)5ikAW$W` h۹[G;O'+p'. []$QM3y 7ɹUc&y:bk 5ԉ7NzG[c0YcfY|+1 g3JRQf\ibVq'q ƒֺ"TsI);C^+`~c{];0?ڕ%iNA1Eu8h*w7KqWe? Dc W>Om5įtΗ"V ,i2K#tZbuedñ`K#q&&G,yRqrtubzf=˲GQiGb]wFHRr\\a*KG{pMH rT`ye觎^ wV2,{ fU#=W#M-*IwMqv5#-.J!W "@?0ҋI ,Ţ?d^I%RSF>?j}z$Y G(&W*Ӯ{<|\dn5ē`be'X|r: ( ="Tb(w> +O[$֐IWk`-.O ɛ' +[}M?MĖ+jls2O*qլX̋(VX%p3>]!i2QSK!9pb$cs7cד֞1'.[3ZAN#Ç#ѱe]2Nq4.(,!-`iT8:V3QEIi,ȿʞ?W#NsUJ>(^Ƶ*yq+ 0=8䏷_jKum2\Ob<$9 If6 䶲tu:ArES JO!.9e,&ՉQ+.7ryKb RKЫiV0TpqyZB.bė0Wqm0faʫ n=qS%k k;dsֲٚ(ATe2C6n '5&Ytq 托12uIH2NybcN(}$z{ #ˤ;6z^JxZr>Y ?!0sຍ׆gl85NpNQVtDq9(j( ,Oj'fE O''bi7Ps- 1FvFpOA9JI-^Tc2ڮu#,1ԷnÊC! [SiֶX\hǯ/=9єfF Y@8;TEZâ=")9 uݸ}ա@a>42!K!%מ`P݀$w:Ŷc+q'i ny63=Jj(piV h\q,cg,u-u't'uq p) pˍçQO/p93vw6*lѵ+H8.m (s4sK#Ѿݎȉ^L@z|OkGI$( 49.$(=N2zI\ uA躆0yk来 1~lT Ob]fy 0gtv`d-{ޯoD߲imX*8w1ZJ.a5re擭<IAAlװbCJ:啠2U0IYp `0+4WJ^4^-dcrI $Ay#i'F<[-6Bn-R69̏ HP`qңYCR?@.IEĻyIE۝sN8"yTz,h4AnGǴJ$;@^qly >mtX0.-b!)M!vYt9p]\_omh;*zq\:47W;ɼD cm>ϖ_~ qȺk|=v7ydr^D. 8`MR(P sT#X{6E*,0ړb4b;vJ8RElSI@|A9 d#T$ʕ{O 'j[*1KT]n#Qt7 \E]it.=O_OYXbr[9ɩz*@^< &0|D@矩XUʎ8hL`Idh aJ`K ՙ'vH.Uxgi)UIO;ڕVɚxX+yg x$7=il:#iPOu%Å AQ'{ti ckֆ 㩬>ett,\Iwa{)@]ӀAn표8V*\ہZ>;3cL8d%-$ܯ9E%HYOV,)K, tUuj%.!àخB0FQ:<$goE H9Ax+E,Y#l3I9 WCfo_)ck~ 3agҺg7Y3[=1KX u*Oku ~#)鲢DEФ\anRsכ7=lX-@8ZP7[ xd3],ڮO1 ѤX:Mgy;@ms@3ArKK=&Kwg$:tN\IĤlt9jGy18lwVsn .-6GL,>@A^tثI<)_f_K+xa\F]VveM$O+>fC0mbI+ īyFaJ ǥvʌ3ϗ8>x,fKjOqn @'VQcY]L[/,fn{kǞGZކ8&B<%H+%mZS ?jfTg5%4mU;rGQ&-)"4P~h#h.^?'XcJ2! .v67`"gK9XhϹ9ƕF`03ӌRE T$Td5J0MZ\7Y\KkuPb2?b {x%Wc 9H>P*cȐJF r[} !fuŐsۙACL珱3M;eS \”* m $in46v,\\yqPe002?Ns58!T=abKjckfʅq##*䑓p3U3qe}0iA&S(x%\;pX= =$MLj.6*FL ORG LE+eGXe8y;cyS& ۴s!8a@}+ LߕRr.#&S$=+:"YO,hO 2IjF_CjV*m#_͉dYI1d3"s*0xI 4,RH: d0VUCw dR1yF9#3Yf9s^a~ծQe-xIHU'?HlRڲ(UXdq7_yy7:~_ilrK-mۈgSЍXTѿ»?cvgEH[̸ ss+e/+ 7Qw I`tx7ߢ.q&w6쓜zq_>C1P U WF~[SNL^&o1wz>ݏwE[ƃdYrU?jXԝc.D3ړh#E41;zD[#kf+S[ppc<7LAa GGb18(hL@{Md^ٲlKs=(lֱ2p@h =6SQ߽kD`7!úV dNM#Z-6;k7<둁~*;Ś ˽Gza tCa%l5Hgm $r55m;CԚ@2 IT]?dT$Ql?1 6w,xTA-Uh<^D2Gb=sJvf_p ]V0; ~\tֽU<[iZW(f#6FOTKE.nfY! .{ J]ЄHBҸL)ft+4֗:FW摾DVt gҮXKC,$-5? [ZEnԔjf)%CC\Qfp*c8,W?& 6.=aeMNFjK9T=Ma:tk4˽,qYJM$Gon-$l*7NHOgE!M$})%v,2=󚔆%UD` %`~GֵU\)# chrxU yYd;V-Yv=b!w|i#5h@a2@Ԩ=Df@nEgFUid9ȭq.e/$#FFMLxҚHm-f2y:k&uEtwoi kk )/F70Xai%NF~Tn6鳪t8RIhHa$g$dFO\`cY5Bpn7E(wdTq,)*Bwn=2T c+i4M6)XNgK;^8x6ڬwG'Gem1q[!h!m .NsYGT56^ʓm#dxaN8oJ錿w)ދ{F qBsXJfоC>/% Udm;T;W3r]kP ||sEcw 2s~+gBy)R&-i B;mNrG_Z&)iz$elVƿPF(6П|6Q| ZW̎b(8'O3d }B,!}Us\~5D]44RУ'~#}5i18 g)*X[k ͱWp{Y7Sbk7]L hr-F:riJ1Xvf]PɴG92=KH@ c#ziH>5EGr#(1DJŅM sȢ0v9#I%6\/3++]챹gU.PI&)NIY5is +}^/s\#BGz>}#@H}/2JsRkՆ(R<ݲĞID  RGA\^G,uL`AG hdibCyDqڶƤeORzT:ޤ)tԞ۱~j㨻a/*RT_ D 49ekT@YP  z&-б7Lwj̣}nOjshsO @yfi$XmA\\mB0 v)%ȁ㑃s {Q%Aa-…y*M9t)%c :2X$g1|M{S#ivc!J'faqog#r3ǶsMW+*/ccV547wq2hT)8Q<>$:bKrHcKT]:LVv9#hIE.*EI\}8c'nIA]Y+E/ Vbȑ#Z:tR t$YY {saFHH.9_X%c `*՚ xvF7=ʪ9x4iIN#v}nO2 }1^u8`Oqrm*2*"MCGv Y葉r}*|QbG5d]܈$".$s}s*ƕs=ZK.XvsTzdg=.FK4@:vi'>$'*U,>L]s K q6넩Ki*)6ye5B J3 S~QȨT4y I b etbDisj2vZjFP4~P (mI5՛FX2Mo:fnG\wn_DUI=慵KۻrKEцCJ. 7К7a4s8wtݏ_SJ%6"j{59C;Is"5U䕊a@lG~3 {McŦH!._9'̉@՛FX8ƩdҠUB9I0;"jqߥZ\2}6-MCnI*fFzP1$sI#empjt16c. xDefRpAHC|V) e+GJB|L|}xbg9TmZ]ie%;g8WMo5G"w7<I.|?\`niv-ߟ_޺xϣ>xogxmث -B7^Ɇb@q>Z˩[[]ݤw}Oޥ!6aslTnF?/ڢdK+>+9$Er y90oDcf$`xGZ]TÜQb" 0H+~qPTDcge4&ڬt#ȠM׎ D:UQ eg۸9֚}A(1#-LaPZ1q@řLlP1R+zuX{ `ˑJI q>W>\qN1!."$Yq^('<I8c;+&6˓4&W fF1Tg\xK,Y2m?)]N1ש )}2~lFҢ\dRRnofd'z{JcHEh'=;vIE]멺6Ķޘ{ c51*|yj:χ䲳'ϒD*u&Jqi39_\х䷶QCpa3%rLю}ja.RHkDtw BA^vq+)J>!2:dּQc GZ@r)G\+2p׊ҼTyK-ΈzrG; ^.#Flvuc,VFzH"a@3JK}\ٴ-e&eGʞzQtϟ+o/QF~S>ǜc#mO,SV*AƋNoo\B8}3OwT5vcޠZ %[\nFC8<:65'z,. 6,Z\WvxrYD'9'ߊrKx3x n9m.AK˞p>٭bՙKd3gyWtaYK#sCp5P/չ s\"d f'I$g <$hƉ3w- Ll qJDǜȫHM$8Z%2sp\u †ے)$1)z|yC#˞3DHHY7VE`zqfx9O>Ŗ}v\mEiIݔCG5Ncz6i$Q{(Tp>z1̥+VI͍wc8;vRy4Vm s{Oּ[}Yr֤ߋ/EKhRoRX>EyFz'4LPEiuNNIktg>ӌZ.9crkяG33z֭6{(K-S9'͑YZA^%:{Ɠ#&(ROGޣ&^% t>̻6rtf_ L+0$d?CK}M5#Grg8?lfFY_M_)ʤPbyHފվZgDB N=ڝzԖW8,qvW΢hU/GT "ܙ'`搈[敌Qp28>D.!HvWnMޮ&6E Hig( ܢpp8UXO*+7ESN:|DĤɧ`)9Mr"Gе-RHCJ$3Et!义#hLҵ1H6G麤C4jN~PӠ(!GHBm}1Ȫ.iVqy(Q1Ϡ97Hj'uA4:t^Tj/"5sПaּ= ~4!́lg˸:gL!v}sTBYmȋǎ=Yd˲ԨƌuqZF^!8''=L}':Fql.b0@I.ԕ:7ӭVʀO^+\H苴Y*mbP1]'uǥsfn8aӚ&.!-2+y{RLJ>J-TeB)y'PXz L9iMƕl-ϠJTv=sl0IEHYσhjǼdSXgHV/ɰ>\uM8A'QlM!FPqyF-[4zWL$k9r92yc>4kIƣ>/s^/vO.s:6 ʑmǥu8ÕIf+^(շ%Ȁ:OW}x"7J@1޼*So-N3 9sJ6lI{=HO#O HX d3$#¤yrv톐! /,p[AWDYҼY 3t,wR#gbdS{L]L&hZ/%d ՈzlK0{‡u0Wpǖ@=~ Kec8X [D 3R-$ $) s©?5.6ohAwdu8p-6J.GLb07dٵ.eisqkRYEdIos 7 n`A 泜Z|Ax-XV{QͲ@OR;'4F?` R% nl",Ą;G-o,6 =s[(4sTiTِ3q7\̸̎"$l5j^yߠ BLI$GQTF?]Id[/ҝ")g;3ʰ4R w| +ny*Fh\!nh HcڊҪ9 ~aV:0H=)PZ4T1*(%@""$V@<q"Z#8k:fO1]DZl"YGk jCp4-9sVX='XCbhm'܏޹<E;-wڲ$+,? $$~Ij痑bNxEe|u)H# ==Fup{[ Fj {ÔvXn{ ֌-WSԠ6q,BYe d_CGQ_x]KYHr [0Ψ@U'ҥiubG ET(rBy?RI2Y=Hƒ<kG' ,)B A}5R{>#=L֐{X>fPH 03z8ǣy%.Yf(EKs#9=j&<6Sc Q&wwv \[\?#s$z*^KjF#? q5i{1MF.]^hRdNrpZqiIbb/?ouŞL2O,bVb(GQBO9Er`ɛTom|K( ݻrӷ=yg i rhSjq%юWV ke'9c凳EA05HNp˙W8F8J^Jjq,ía_J{9`gc)۱C} ,6kVU#Sp>T Vpz R'umrG<=I[b,LƮE^; q@1K<>9j,9>HS\O_0wd瞟;3mS5>3xOy1PS>ƺI7[9|%=^<)Vo./a{԰T<8ub <_S񖷡]Z\Y%J+5ɖMg˫yW-$rkPwgMW y1C/#kr{Copyright {{ now.Year }}. All rights reserved.

gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/_partials/head.html000066400000000000000000000004011507671574500267520ustar00rootroot00000000000000 {{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }} {{ partialCached "head/css.html" . }} {{ partialCached "head/js.html" . }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/_partials/head/000077500000000000000000000000001507671574500260715ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/_partials/head/css.html000066400000000000000000000005201507671574500275440ustar00rootroot00000000000000{{- with resources.Get "css/main.css" }} {{- if hugo.IsDevelopment }} {{- else }} {{- with . | minify | fingerprint }} {{- end }} {{- end }} {{- end }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/_partials/head/js.html000066400000000000000000000010101507671574500273630ustar00rootroot00000000000000{{- with resources.Get "js/main.js" }} {{- $opts := dict "minify" (not hugo.IsDevelopment) "sourceMap" (cond hugo.IsDevelopment "external" "") "targetPath" "js/main.js" }} {{- with . | js.Build $opts }} {{- if hugo.IsDevelopment }} {{- else }} {{- with . | fingerprint }} {{- end }} {{- end }} {{- end }} {{- end }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/_partials/header.html000066400000000000000000000001241507671574500273030ustar00rootroot00000000000000

{{ site.Title }}

{{ partial "menu.html" (dict "menuID" "main" "page" .) }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/_partials/menu.html000066400000000000000000000025001507671574500270170ustar00rootroot00000000000000{{- /* Renders a menu for the given menu ID. @context {page} page The current page. @context {string} menuID The menu ID. @example: {{ partial "menu.html" (dict "menuID" "main" "page" .) }} */}} {{- $page := .page }} {{- $menuID := .menuID }} {{- with index site.Menus $menuID }} {{- end }} {{- define "_partials/inline/menu/walk.html" }} {{- $page := .page }} {{- range .menuEntries }} {{- $attrs := dict "href" .URL }} {{- if $page.IsMenuCurrent .Menu . }} {{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }} {{- else if $page.HasMenuCurrent .Menu .}} {{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }} {{- end }} {{- $name := .Name }} {{- with .Identifier }} {{- with T . }} {{- $name = . }} {{- end }} {{- end }}
  • {{ $name }} {{- with .Children }}
      {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
    {{- end }}
  • {{- end }} {{- end }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/_partials/terms.html000066400000000000000000000010521507671574500272060ustar00rootroot00000000000000{{- /* For a given taxonomy, renders a list of terms assigned to the page. @context {page} page The current page. @context {string} taxonomy The taxonomy. @example: {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} */}} {{- $page := .page }} {{- $taxonomy := .taxonomy }} {{- with $page.GetTerms $taxonomy }} {{- $label := (index . 0).Parent.LinkTitle }}
    {{ $label }}:
    {{- end }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/baseof.html000066400000000000000000000005371507671574500253440ustar00rootroot00000000000000 {{ partial "head.html" . }}
    {{ partial "header.html" . }}
    {{ block "main" . }}{{ end }}
    {{ partial "footer.html" . }}
    gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/home.html000066400000000000000000000003171507671574500250310ustar00rootroot00000000000000{{ define "main" }} {{ .Content }} {{ range site.RegularPages }}

    {{ .LinkTitle }}

    {{ .Summary }}
    {{ end }} {{ end }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/page.html000066400000000000000000000005051507671574500250140ustar00rootroot00000000000000{{ define "main" }}

    {{ .Title }}

    {{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }} {{ $dateHuman := .Date | time.Format ":date_long" }} {{ .Content }} {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} {{ end }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/section.html000066400000000000000000000003341507671574500255440ustar00rootroot00000000000000{{ define "main" }}

    {{ .Title }}

    {{ .Content }} {{ range .Pages }}

    {{ .LinkTitle }}

    {{ .Summary }}
    {{ end }} {{ end }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/taxonomy.html000066400000000000000000000002501507671574500257530ustar00rootroot00000000000000{{ define "main" }}

    {{ .Title }}

    {{ .Content }} {{ range .Pages }}

    {{ .LinkTitle }}

    {{ end }} {{ end }} gohugoio-hugo-6abdaca/create/skeletons/theme/layouts/term.html000066400000000000000000000002501507671574500250440ustar00rootroot00000000000000{{ define "main" }}

    {{ .Title }}

    {{ .Content }} {{ range .Pages }}

    {{ .LinkTitle }}

    {{ end }} {{ end }} gohugoio-hugo-6abdaca/create/skeletons/theme/static/000077500000000000000000000000001507671574500230015ustar00rootroot00000000000000gohugoio-hugo-6abdaca/create/skeletons/theme/static/favicon.ico000066400000000000000000000360561507671574500251340ustar00rootroot00000000000000 h6  (00 h&(  QQQ/SSSUUUTTTTTTUUUSSSQQQ/999 SSSUUUUUUUUUUUUUUUUUUUUUUUUSSS@@@@@@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTT@@@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSUUU0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPPP0SSSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSQQQ/UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQQQ/SSSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSS@@@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@@@999 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@@@QQQ/SSSUUUTTTTTTUUUSSSQQQ/( @ NNN TTTXTTTTTTUUUUUUUUUUUUTTTTTTTTTXNNN UUU$TTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUU$UUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU NNN$TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTPPP#UUU0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU0PPP#TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTPPP#UUU UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSUUU$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSIIITTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTIIITTTXUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTXTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTXUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTXIIITTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTIIITTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU$TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU PPP#TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTPPP#UUU0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0NNN$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPPP#UUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU UUU$TTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUU$IIITTTXTTTTTTUUUTTTTTTUUUTTTTTTTTTXIII(0` UUUSSS%SSSJSSSTTTTTTTTTTTTUUUTTTTTTUUUSSSRRRNQQQ&UUUUUUQQQ/SSSqTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUTTTTTTtRRR2UUUNNNUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUURRRQQQSSSrUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSxQQQQQQ9TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTQQQ?QQQeTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTSSSl333SSSqTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSq@@@SSSiTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTSSSqRRRdTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSlQQQ?TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTQQQ?DDDTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTQQQTTTmTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTQQQwOOOTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTRRRUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUURRR2TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTRRR2SSSuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTSSSuUUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUURRRUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQQQ&QQQ?TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTSSSMTTT}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTT}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTQQQ 0; n-- { sem <- struct{}{} } } if d.cfg.MaxDeletes != -1 && len(deletes) > d.cfg.MaxDeletes { d.logger.Warnf("Skipping %d deletes because it is more than --maxDeletes (%d). If this is expected, set --maxDeletes to a larger number, or -1 to disable this check.\n", len(deletes), d.cfg.MaxDeletes) d.summary.NumDeletes = 0 } else { // Apply deletes in parallel. sort.Slice(deletes, func(i, j int) bool { return deletes[i] < deletes[j] }) sem := make(chan struct{}, nParallel) for _, del := range deletes { if d.cfg.DryRun { if !d.quiet { d.logger.Printf("[DRY RUN] Would delete %s\n", del) } continue } sem <- struct{}{} go func(del string) { d.logger.Infof("Deleting %s...\n", del) if err := bucket.Delete(ctx, del); err != nil { if gcerrors.Code(err) == gcerrors.NotFound { d.logger.Warnf("Failed to delete %q because it wasn't found: %v", del, err) } else { errMu.Lock() defer errMu.Unlock() errs = append(errs, err) } } <-sem }(del) } // Wait for all deletes to finish. for n := nParallel; n > 0; n-- { sem <- struct{}{} } } if len(errs) > 0 { if !d.quiet { d.logger.Printf("Encountered %d errors.\n", len(errs)) } return errs[0] } if !d.quiet { d.logger.Println("Success!") } if d.cfg.InvalidateCDN { if d.target.CloudFrontDistributionID != "" { if d.cfg.DryRun { if !d.quiet { d.logger.Printf("[DRY RUN] Would invalidate CloudFront CDN with ID %s\n", d.target.CloudFrontDistributionID) } } else { d.logger.Println("Invalidating CloudFront CDN...") if err := InvalidateCloudFront(ctx, d.target); err != nil { d.logger.Printf("Failed to invalidate CloudFront CDN: %v\n", err) return err } } } if d.target.GoogleCloudCDNOrigin != "" { if d.cfg.DryRun { if !d.quiet { d.logger.Printf("[DRY RUN] Would invalidate Google Cloud CDN with origin %s\n", d.target.GoogleCloudCDNOrigin) } } else { d.logger.Println("Invalidating Google Cloud CDN...") if err := InvalidateGoogleCloudCDN(ctx, d.target.GoogleCloudCDNOrigin); err != nil { d.logger.Printf("Failed to invalidate Google Cloud CDN: %v\n", err) return err } } } d.logger.Println("Success!") } return nil } // summarizeChanges creates a text description of the proposed changes. func summarizeChanges(uploads []*fileToUpload, deletes []string) string { uploadSize := int64(0) for _, u := range uploads { uploadSize += u.Local.UploadSize } return fmt.Sprintf("Identified %d file(s) to upload, totaling %s, and %d file(s) to delete.", len(uploads), humanize.Bytes(uint64(uploadSize)), len(deletes)) } // doSingleUpload executes a single file upload. func (d *Deployer) doSingleUpload(ctx context.Context, bucket *blob.Bucket, upload *fileToUpload) error { d.logger.Infof("Uploading %v...\n", upload) opts := &blob.WriterOptions{ CacheControl: upload.Local.CacheControl(), ContentEncoding: upload.Local.ContentEncoding(), ContentType: upload.Local.ContentType(), Metadata: map[string]string{metaMD5Hash: hex.EncodeToString(upload.Local.MD5())}, } w, err := bucket.NewWriter(ctx, upload.Local.SlashPath, opts) if err != nil { return err } r, err := upload.Local.Reader() if err != nil { return err } defer r.Close() _, err = io.Copy(w, r) if err != nil { return err } if err := w.Close(); err != nil { return err } return nil } // localFile represents a local file from the source. Use newLocalFile to // construct one. type localFile struct { // NativePath is the native path to the file (using file.Separator). NativePath string // SlashPath is NativePath converted to use /. SlashPath string // UploadSize is the size of the content to be uploaded. It may not // be the same as the local file size if the content will be // gzipped before upload. UploadSize int64 fs afero.Fs matcher *deployconfig.Matcher md5 []byte // cache gzipped bytes.Buffer // cached of gzipped contents if gzipping mediaTypes media.Types } // newLocalFile initializes a *localFile. func newLocalFile(fs afero.Fs, nativePath, slashpath string, m *deployconfig.Matcher, mt media.Types) (*localFile, error) { f, err := fs.Open(nativePath) if err != nil { return nil, err } defer f.Close() lf := &localFile{ NativePath: nativePath, SlashPath: slashpath, fs: fs, matcher: m, mediaTypes: mt, } if m != nil && m.Gzip { // We're going to gzip the content. Do it once now, and cache the result // in gzipped. The UploadSize is the size of the gzipped content. gz := gzip.NewWriter(&lf.gzipped) if _, err := io.Copy(gz, f); err != nil { return nil, err } if err := gz.Close(); err != nil { return nil, err } lf.UploadSize = int64(lf.gzipped.Len()) } else { // Raw content. Just get the UploadSize. info, err := f.Stat() if err != nil { return nil, err } lf.UploadSize = info.Size() } return lf, nil } // Reader returns an io.ReadCloser for reading the content to be uploaded. // The caller must call Close on the returned ReaderCloser. // The reader content may not be the same as the local file content due to // gzipping. func (lf *localFile) Reader() (io.ReadCloser, error) { if lf.matcher != nil && lf.matcher.Gzip { // We've got the gzipped contents cached in gzipped. // Note: we can't use lf.gzipped directly as a Reader, since we it discards // data after it is read, and we may read it more than once. return io.NopCloser(bytes.NewReader(lf.gzipped.Bytes())), nil } // Not expected to fail since we did it successfully earlier in newLocalFile, // but could happen due to changes in the underlying filesystem. return lf.fs.Open(lf.NativePath) } // CacheControl returns the Cache-Control header to use for lf, based on the // first matching matcher (if any). func (lf *localFile) CacheControl() string { if lf.matcher == nil { return "" } return lf.matcher.CacheControl } // ContentEncoding returns the Content-Encoding header to use for lf, based // on the matcher's Content-Encoding and Gzip fields. func (lf *localFile) ContentEncoding() string { if lf.matcher == nil { return "" } if lf.matcher.Gzip { return "gzip" } return lf.matcher.ContentEncoding } // ContentType returns the Content-Type header to use for lf. // It first checks if there's a Content-Type header configured via a matching // matcher; if not, it tries to generate one based on the filename extension. // If this fails, the Content-Type will be the empty string. In this case, Go // Cloud will automatically try to infer a Content-Type based on the file // content. func (lf *localFile) ContentType() string { if lf.matcher != nil && lf.matcher.ContentType != "" { return lf.matcher.ContentType } ext := filepath.Ext(lf.NativePath) if mimeType, _, found := lf.mediaTypes.GetFirstBySuffix(strings.TrimPrefix(ext, ".")); found { return mimeType.Type } return mime.TypeByExtension(ext) } // Force returns true if the file should be forced to re-upload based on the // matching matcher. func (lf *localFile) Force() bool { return lf.matcher != nil && lf.matcher.Force } // MD5 returns an MD5 hash of the content to be uploaded. func (lf *localFile) MD5() []byte { if len(lf.md5) > 0 { return lf.md5 } h := md5.New() r, err := lf.Reader() if err != nil { return nil } defer r.Close() if _, err := io.Copy(h, r); err != nil { return nil } lf.md5 = h.Sum(nil) return lf.md5 } // knownHiddenDirectory checks if the specified name is a well known // hidden directory. func knownHiddenDirectory(name string) bool { knownDirectories := []string{ ".well-known", } for _, dir := range knownDirectories { if name == dir { return true } } return false } // walkLocal walks the source directory and returns a flat list of files, // using localFile.SlashPath as the map keys. func (d *Deployer) walkLocal(fs afero.Fs, matchers []*deployconfig.Matcher, include, exclude glob.Glob, mediaTypes media.Types, mappath func(string) string) (map[string]*localFile, error) { retval := make(map[string]*localFile) var mu sync.Mutex workers := para.New(d.cfg.Workers) g, _ := workers.Start(context.Background()) err := afero.Walk(fs, "", func(path string, info os.FileInfo, err error) error { if err != nil { return err } if info.IsDir() { // Skip hidden directories. if path != "" && strings.HasPrefix(info.Name(), ".") { // Except for specific hidden directories if !knownHiddenDirectory(info.Name()) { return filepath.SkipDir } } return nil } // .DS_Store is an internal MacOS attribute file; skip it. if info.Name() == ".DS_Store" { return nil } // Process each file in a worker g.Run(func() error { // When a file system is HFS+, its filepath is in NFD form. if runtime.GOOS == "darwin" { path = norm.NFC.String(path) } // Check include/exclude matchers. slashpath := filepath.ToSlash(path) if include != nil && !include.Match(slashpath) { d.logger.Infof(" dropping %q due to include\n", slashpath) return nil } if exclude != nil && exclude.Match(slashpath) { d.logger.Infof(" dropping %q due to exclude\n", slashpath) return nil } // Find the first matching matcher (if any). var m *deployconfig.Matcher for _, cur := range matchers { if cur.Matches(slashpath) { m = cur break } } // Apply any additional modifications to the local path, to map it to // the remote path. if mappath != nil { slashpath = mappath(slashpath) } lf, err := newLocalFile(fs, path, slashpath, m, mediaTypes) if err != nil { return err } mu.Lock() retval[lf.SlashPath] = lf mu.Unlock() return nil }) return nil }) if err != nil { return nil, err } if err := g.Wait(); err != nil { return nil, err } return retval, nil } // stripIndexHTML remaps keys matching "/index.html" to "/". func stripIndexHTML(slashpath string) string { const suffix = "/index.html" if strings.HasSuffix(slashpath, suffix) { return slashpath[:len(slashpath)-len(suffix)+1] } return slashpath } // walkRemote walks the target bucket and returns a flat list. func (d *Deployer) walkRemote(ctx context.Context, bucket *blob.Bucket, include, exclude glob.Glob) (map[string]*blob.ListObject, error) { retval := map[string]*blob.ListObject{} iter := bucket.List(nil) for { obj, err := iter.Next(ctx) if err == io.EOF { break } if err != nil { return nil, err } // Check include/exclude matchers. if include != nil && !include.Match(obj.Key) { d.logger.Infof(" remote dropping %q due to include\n", obj.Key) continue } if exclude != nil && exclude.Match(obj.Key) { d.logger.Infof(" remote dropping %q due to exclude\n", obj.Key) continue } // If the remote didn't give us an MD5, use remote attributes MD5, if that doesn't exist compute one. // This can happen for some providers (e.g., fileblob, which uses the // local filesystem), but not for the most common Cloud providers // (S3, GCS, Azure). Although, it can happen for S3 if the blob was uploaded // via a multi-part upload. // Although it's unfortunate to have to read the file, it's likely better // than assuming a delta and re-uploading it. if len(obj.MD5) == 0 { var attrMD5 []byte attrs, err := bucket.Attributes(ctx, obj.Key) if err == nil { md5String, exists := attrs.Metadata[metaMD5Hash] if exists { attrMD5, _ = hex.DecodeString(md5String) } } if len(attrMD5) == 0 { r, err := bucket.NewReader(ctx, obj.Key, nil) if err == nil { h := md5.New() if _, err := io.Copy(h, r); err == nil { obj.MD5 = h.Sum(nil) } r.Close() } } else { obj.MD5 = attrMD5 } } retval[obj.Key] = obj } return retval, nil } // uploadReason is an enum of reasons why a file must be uploaded. type uploadReason string const ( reasonUnknown uploadReason = "unknown" reasonNotFound uploadReason = "not found at target" reasonForce uploadReason = "--force" reasonSize uploadReason = "size differs" reasonMD5Differs uploadReason = "md5 differs" reasonMD5Missing uploadReason = "remote md5 missing" ) // fileToUpload represents a single local file that should be uploaded to // the target. type fileToUpload struct { Local *localFile Reason uploadReason } func (u *fileToUpload) String() string { details := []string{humanize.Bytes(uint64(u.Local.UploadSize))} if s := u.Local.CacheControl(); s != "" { details = append(details, fmt.Sprintf("Cache-Control: %q", s)) } if s := u.Local.ContentEncoding(); s != "" { details = append(details, fmt.Sprintf("Content-Encoding: %q", s)) } if s := u.Local.ContentType(); s != "" { details = append(details, fmt.Sprintf("Content-Type: %q", s)) } return fmt.Sprintf("%s (%s): %v", u.Local.SlashPath, strings.Join(details, ", "), u.Reason) } // findDiffs diffs localFiles vs remoteFiles to see what changes should be // applied to the remote target. It returns a slice of *fileToUpload and a // slice of paths for files to delete. func (d *Deployer) findDiffs(localFiles map[string]*localFile, remoteFiles map[string]*blob.ListObject, force bool) ([]*fileToUpload, []string) { var uploads []*fileToUpload var deletes []string found := map[string]bool{} for path, lf := range localFiles { upload := false reason := reasonUnknown if remoteFile, ok := remoteFiles[path]; ok { // The file exists in remote. Let's see if we need to upload it anyway. // TODO: We don't register a diff if the metadata (e.g., Content-Type // header) has changed. This would be difficult/expensive to detect; some // providers return metadata along with their "List" result, but others // (notably AWS S3) do not, so gocloud.dev's blob.Bucket doesn't expose // it in the list result. It would require a separate request per blob // to fetch. At least for now, we work around this by documenting it and // providing a "force" flag (to re-upload everything) and a "force" bool // per matcher (to re-upload all files in a matcher whose headers may have // changed). // Idea: extract a sample set of 1 file per extension + 1 file per matcher // and check those files? if force { upload = true reason = reasonForce } else if lf.Force() { upload = true reason = reasonForce } else if lf.UploadSize != remoteFile.Size { upload = true reason = reasonSize } else if len(remoteFile.MD5) == 0 { // This shouldn't happen unless the remote didn't give us an MD5 hash // from List, AND we failed to compute one by reading the remote file. // Default to considering the files different. upload = true reason = reasonMD5Missing } else if !bytes.Equal(lf.MD5(), remoteFile.MD5) { upload = true reason = reasonMD5Differs } found[path] = true } else { // The file doesn't exist in remote. upload = true reason = reasonNotFound } if upload { d.logger.Debugf("%s needs to be uploaded: %v\n", path, reason) uploads = append(uploads, &fileToUpload{lf, reason}) } else { d.logger.Debugf("%s exists at target and does not need to be uploaded", path) } } // Remote files that weren't found locally should be deleted. for path := range remoteFiles { if !found[path] { deletes = append(deletes, path) } } return uploads, deletes } // applyOrdering returns an ordered slice of slices of uploads. // // The returned slice will have length len(ordering)+1. // // The subslice at index i, for i = 0 ... len(ordering)-1, will have all of the // uploads whose Local.SlashPath matched the regex at ordering[i] (but not any // previous ordering regex). // The subslice at index len(ordering) will have the remaining uploads that // didn't match any ordering regex. // // The subslices are sorted by Local.SlashPath. func applyOrdering(ordering []*regexp.Regexp, uploads []*fileToUpload) [][]*fileToUpload { // Sort the whole slice by Local.SlashPath first. sort.Slice(uploads, func(i, j int) bool { return uploads[i].Local.SlashPath < uploads[j].Local.SlashPath }) retval := make([][]*fileToUpload, len(ordering)+1) for _, u := range uploads { matched := false for i, re := range ordering { if re.MatchString(u.Local.SlashPath) { retval[i] = append(retval[i], u) matched = true break } } if !matched { retval[len(ordering)] = append(retval[len(ordering)], u) } } return retval } gohugoio-hugo-6abdaca/deploy/deploy_azure.go000066400000000000000000000013371507671574500214670ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build !solaris && withdeploy package deploy import ( _ "gocloud.dev/blob" _ "gocloud.dev/blob/azureblob" // import ) gohugoio-hugo-6abdaca/deploy/deploy_test.go000066400000000000000000000773411507671574500213300ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build withdeploy package deploy import ( "bytes" "compress/gzip" "context" "crypto/md5" "fmt" "io" "os" "path" "path/filepath" "regexp" "sort" "testing" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/deploy/deployconfig" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/media" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/spf13/afero" "gocloud.dev/blob" "gocloud.dev/blob/fileblob" "gocloud.dev/blob/memblob" ) func TestFindDiffs(t *testing.T) { hash1 := []byte("hash 1") hash2 := []byte("hash 2") makeLocal := func(path string, size int64, hash []byte) *localFile { return &localFile{NativePath: path, SlashPath: filepath.ToSlash(path), UploadSize: size, md5: hash} } makeRemote := func(path string, size int64, hash []byte) *blob.ListObject { return &blob.ListObject{Key: path, Size: size, MD5: hash} } tests := []struct { Description string Local []*localFile Remote []*blob.ListObject Force bool WantUpdates []*fileToUpload WantDeletes []string }{ { Description: "empty -> no diffs", }, { Description: "local == remote -> no diffs", Local: []*localFile{ makeLocal("aaa", 1, hash1), makeLocal("bbb", 2, hash1), makeLocal("ccc", 3, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), makeRemote("bbb", 2, hash1), makeRemote("ccc", 3, hash2), }, }, { Description: "local w/ separators == remote -> no diffs", Local: []*localFile{ makeLocal(filepath.Join("aaa", "aaa"), 1, hash1), makeLocal(filepath.Join("bbb", "bbb"), 2, hash1), makeLocal(filepath.Join("ccc", "ccc"), 3, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa/aaa", 1, hash1), makeRemote("bbb/bbb", 2, hash1), makeRemote("ccc/ccc", 3, hash2), }, }, { Description: "local == remote with force flag true -> diffs", Local: []*localFile{ makeLocal("aaa", 1, hash1), makeLocal("bbb", 2, hash1), makeLocal("ccc", 3, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), makeRemote("bbb", 2, hash1), makeRemote("ccc", 3, hash2), }, Force: true, WantUpdates: []*fileToUpload{ {makeLocal("aaa", 1, nil), reasonForce}, {makeLocal("bbb", 2, nil), reasonForce}, {makeLocal("ccc", 3, nil), reasonForce}, }, }, { Description: "local == remote with route.Force true -> diffs", Local: []*localFile{ {NativePath: "aaa", SlashPath: "aaa", UploadSize: 1, matcher: &deployconfig.Matcher{Force: true}, md5: hash1}, makeLocal("bbb", 2, hash1), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), makeRemote("bbb", 2, hash1), }, WantUpdates: []*fileToUpload{ {makeLocal("aaa", 1, nil), reasonForce}, }, }, { Description: "extra local file -> upload", Local: []*localFile{ makeLocal("aaa", 1, hash1), makeLocal("bbb", 2, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), }, WantUpdates: []*fileToUpload{ {makeLocal("bbb", 2, nil), reasonNotFound}, }, }, { Description: "extra remote file -> delete", Local: []*localFile{ makeLocal("aaa", 1, hash1), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), makeRemote("bbb", 2, hash2), }, WantDeletes: []string{"bbb"}, }, { Description: "diffs in size or md5 -> upload", Local: []*localFile{ makeLocal("aaa", 1, hash1), makeLocal("bbb", 2, hash1), makeLocal("ccc", 1, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, nil), makeRemote("bbb", 1, hash1), makeRemote("ccc", 1, hash1), }, WantUpdates: []*fileToUpload{ {makeLocal("aaa", 1, nil), reasonMD5Missing}, {makeLocal("bbb", 2, nil), reasonSize}, {makeLocal("ccc", 1, nil), reasonMD5Differs}, }, }, { Description: "mix of updates and deletes", Local: []*localFile{ makeLocal("same", 1, hash1), makeLocal("updated", 2, hash1), makeLocal("updated2", 1, hash2), makeLocal("new", 1, hash1), makeLocal("new2", 2, hash2), }, Remote: []*blob.ListObject{ makeRemote("same", 1, hash1), makeRemote("updated", 1, hash1), makeRemote("updated2", 1, hash1), makeRemote("stale", 1, hash1), makeRemote("stale2", 1, hash1), }, WantUpdates: []*fileToUpload{ {makeLocal("new", 1, nil), reasonNotFound}, {makeLocal("new2", 2, nil), reasonNotFound}, {makeLocal("updated", 2, nil), reasonSize}, {makeLocal("updated2", 1, nil), reasonMD5Differs}, }, WantDeletes: []string{"stale", "stale2"}, }, } for _, tc := range tests { t.Run(tc.Description, func(t *testing.T) { local := map[string]*localFile{} for _, l := range tc.Local { local[l.SlashPath] = l } remote := map[string]*blob.ListObject{} for _, r := range tc.Remote { remote[r.Key] = r } d := newDeployer() gotUpdates, gotDeletes := d.findDiffs(local, remote, tc.Force) gotUpdates = applyOrdering(nil, gotUpdates)[0] sort.Slice(gotDeletes, func(i, j int) bool { return gotDeletes[i] < gotDeletes[j] }) if diff := cmp.Diff(gotUpdates, tc.WantUpdates, cmpopts.IgnoreUnexported(localFile{})); diff != "" { t.Errorf("updates differ:\n%s", diff) } if diff := cmp.Diff(gotDeletes, tc.WantDeletes); diff != "" { t.Errorf("deletes differ:\n%s", diff) } }) } } func TestWalkLocal(t *testing.T) { tests := map[string]struct { Given []string Expect []string MapPath func(string) string }{ "Empty": { Given: []string{}, Expect: []string{}, }, "Normal": { Given: []string{"file.txt", "normal_dir/file.txt"}, Expect: []string{"file.txt", "normal_dir/file.txt"}, }, "Hidden": { Given: []string{"file.txt", ".hidden_dir/file.txt", "normal_dir/file.txt"}, Expect: []string{"file.txt", "normal_dir/file.txt"}, }, "Well Known": { Given: []string{"file.txt", ".hidden_dir/file.txt", ".well-known/file.txt"}, Expect: []string{"file.txt", ".well-known/file.txt"}, }, "StripIndexHTML": { Given: []string{"index.html", "file.txt", "dir/index.html", "dir/file.txt"}, Expect: []string{"index.html", "file.txt", "dir/", "dir/file.txt"}, MapPath: stripIndexHTML, }, } for desc, tc := range tests { t.Run(desc, func(t *testing.T) { fs := afero.NewMemMapFs() for _, name := range tc.Given { dir, _ := path.Split(name) if dir != "" { if err := fs.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } } if fd, err := fs.Create(name); err != nil { t.Fatal(err) } else { fd.Close() } } d := newDeployer() if got, err := d.walkLocal(fs, nil, nil, nil, media.DefaultTypes, tc.MapPath); err != nil { t.Fatal(err) } else { expect := map[string]any{} for _, path := range tc.Expect { if _, ok := got[path]; !ok { t.Errorf("expected %q in results, but was not found", path) } expect[path] = nil } for path := range got { if _, ok := expect[path]; !ok { t.Errorf("got %q in results unexpectedly", path) } } } }) } } func TestStripIndexHTML(t *testing.T) { tests := map[string]struct { Input string Output string }{ "Unmapped": {Input: "normal_file.txt", Output: "normal_file.txt"}, "Stripped": {Input: "directory/index.html", Output: "directory/"}, "NoSlash": {Input: "prefix_index.html", Output: "prefix_index.html"}, "Root": {Input: "index.html", Output: "index.html"}, } for desc, tc := range tests { t.Run(desc, func(t *testing.T) { got := stripIndexHTML(tc.Input) if got != tc.Output { t.Errorf("got %q, expect %q", got, tc.Output) } }) } } func TestStripIndexHTMLMatcher(t *testing.T) { // StripIndexHTML should not affect matchers. fs := afero.NewMemMapFs() if err := fs.Mkdir("dir", 0o755); err != nil { t.Fatal(err) } for _, name := range []string{"index.html", "dir/index.html", "file.txt"} { if fd, err := fs.Create(name); err != nil { t.Fatal(err) } else { fd.Close() } } d := newDeployer() const pattern = `\.html$` matcher := &deployconfig.Matcher{Pattern: pattern, Gzip: true, Re: regexp.MustCompile(pattern)} if got, err := d.walkLocal(fs, []*deployconfig.Matcher{matcher}, nil, nil, media.DefaultTypes, stripIndexHTML); err != nil { t.Fatal(err) } else { for _, name := range []string{"index.html", "dir/"} { lf := got[name] if lf == nil { t.Errorf("missing file %q", name) } else if lf.matcher == nil { t.Errorf("file %q has nil matcher, expect %q", name, pattern) } } const name = "file.txt" lf := got[name] if lf == nil { t.Errorf("missing file %q", name) } else if lf.matcher != nil { t.Errorf("file %q has matcher %q, expect nil", name, lf.matcher.Pattern) } } } func TestLocalFile(t *testing.T) { const ( content = "hello world!" ) contentBytes := []byte(content) contentLen := int64(len(contentBytes)) contentMD5 := md5.Sum(contentBytes) var buf bytes.Buffer gz := gzip.NewWriter(&buf) if _, err := gz.Write(contentBytes); err != nil { t.Fatal(err) } gz.Close() gzBytes := buf.Bytes() gzLen := int64(len(gzBytes)) gzMD5 := md5.Sum(gzBytes) tests := []struct { Description string Path string Matcher *deployconfig.Matcher MediaTypesConfig map[string]any WantContent []byte WantSize int64 WantMD5 []byte WantContentType string // empty string is always OK, since content type detection is OS-specific WantCacheControl string WantContentEncoding string }{ { Description: "file with no suffix", Path: "foo", WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], }, { Description: "file with .txt suffix", Path: "foo.txt", WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], }, { Description: "CacheControl from matcher", Path: "foo.txt", Matcher: &deployconfig.Matcher{CacheControl: "max-age=630720000"}, WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], WantCacheControl: "max-age=630720000", }, { Description: "ContentEncoding from matcher", Path: "foo.txt", Matcher: &deployconfig.Matcher{ContentEncoding: "foobar"}, WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], WantContentEncoding: "foobar", }, { Description: "ContentType from matcher", Path: "foo.txt", Matcher: &deployconfig.Matcher{ContentType: "foo/bar"}, WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], WantContentType: "foo/bar", }, { Description: "gzipped content", Path: "foo.txt", Matcher: &deployconfig.Matcher{Gzip: true}, WantContent: gzBytes, WantSize: gzLen, WantMD5: gzMD5[:], WantContentEncoding: "gzip", }, { Description: "Custom MediaType", Path: "foo.hugo", MediaTypesConfig: map[string]any{ "hugo/custom": map[string]any{ "suffixes": []string{"hugo"}, }, }, WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], WantContentType: "hugo/custom", }, } for _, tc := range tests { t.Run(tc.Description, func(t *testing.T) { fs := new(afero.MemMapFs) if err := afero.WriteFile(fs, tc.Path, []byte(content), os.ModePerm); err != nil { t.Fatal(err) } mediaTypes := media.DefaultTypes if len(tc.MediaTypesConfig) > 0 { mt, err := media.DecodeTypes(tc.MediaTypesConfig) if err != nil { t.Fatal(err) } mediaTypes = mt.Config } lf, err := newLocalFile(fs, tc.Path, filepath.ToSlash(tc.Path), tc.Matcher, mediaTypes) if err != nil { t.Fatal(err) } if got := lf.UploadSize; got != tc.WantSize { t.Errorf("got size %d want %d", got, tc.WantSize) } if got := lf.MD5(); !bytes.Equal(got, tc.WantMD5) { t.Errorf("got MD5 %x want %x", got, tc.WantMD5) } if got := lf.CacheControl(); got != tc.WantCacheControl { t.Errorf("got CacheControl %q want %q", got, tc.WantCacheControl) } if got := lf.ContentEncoding(); got != tc.WantContentEncoding { t.Errorf("got ContentEncoding %q want %q", got, tc.WantContentEncoding) } if tc.WantContentType != "" { if got := lf.ContentType(); got != tc.WantContentType { t.Errorf("got ContentType %q want %q", got, tc.WantContentType) } } // Verify the reader last to ensure the previous operations don't // interfere with it. r, err := lf.Reader() if err != nil { t.Fatal(err) } gotContent, err := io.ReadAll(r) if err != nil { t.Fatal(err) } if !bytes.Equal(gotContent, tc.WantContent) { t.Errorf("got content %q want %q", string(gotContent), string(tc.WantContent)) } r.Close() // Verify we can read again. r, err = lf.Reader() if err != nil { t.Fatal(err) } gotContent, err = io.ReadAll(r) if err != nil { t.Fatal(err) } r.Close() if !bytes.Equal(gotContent, tc.WantContent) { t.Errorf("got content %q want %q", string(gotContent), string(tc.WantContent)) } }) } } func TestOrdering(t *testing.T) { tests := []struct { Description string Uploads []string Ordering []*regexp.Regexp Want [][]string }{ { Description: "empty", Want: [][]string{nil}, }, { Description: "no ordering", Uploads: []string{"c", "b", "a", "d"}, Want: [][]string{{"a", "b", "c", "d"}}, }, { Description: "one ordering", Uploads: []string{"db", "c", "b", "a", "da"}, Ordering: []*regexp.Regexp{regexp.MustCompile("^d")}, Want: [][]string{{"da", "db"}, {"a", "b", "c"}}, }, { Description: "two orderings", Uploads: []string{"db", "c", "b", "a", "da"}, Ordering: []*regexp.Regexp{ regexp.MustCompile("^d"), regexp.MustCompile("^b"), }, Want: [][]string{{"da", "db"}, {"b"}, {"a", "c"}}, }, } for _, tc := range tests { t.Run(tc.Description, func(t *testing.T) { uploads := make([]*fileToUpload, len(tc.Uploads)) for i, u := range tc.Uploads { uploads[i] = &fileToUpload{Local: &localFile{SlashPath: u}} } gotUploads := applyOrdering(tc.Ordering, uploads) var got [][]string for _, subslice := range gotUploads { var gotsubslice []string for _, u := range subslice { gotsubslice = append(gotsubslice, u.Local.SlashPath) } got = append(got, gotsubslice) } if diff := cmp.Diff(got, tc.Want); diff != "" { t.Error(diff) } }) } } type fileData struct { Name string // name of the file Contents string // contents of the file } // initLocalFs initializes fs with some test files. func initLocalFs(ctx context.Context, fs afero.Fs) ([]*fileData, error) { // The initial local filesystem. local := []*fileData{ {"aaa", "aaa"}, {"bbb", "bbb"}, {"subdir/aaa", "subdir-aaa"}, {"subdir/nested/aaa", "subdir-nested-aaa"}, {"subdir2/bbb", "subdir2-bbb"}, } if err := writeFiles(fs, local); err != nil { return nil, err } return local, nil } // fsTest represents an (afero.FS, Go CDK blob.Bucket) against which end-to-end // tests can be run. type fsTest struct { name string fs afero.Fs bucket *blob.Bucket } // initFsTests initializes a pair of tests for end-to-end test: // 1. An in-memory afero.Fs paired with an in-memory Go CDK bucket. // 2. A filesystem-based afero.Fs paired with an filesystem-based Go CDK bucket. // It returns the pair of tests and a cleanup function. func initFsTests(t *testing.T) []*fsTest { t.Helper() tmpfsdir := t.TempDir() tmpbucketdir := t.TempDir() memfs := afero.NewMemMapFs() membucket := memblob.OpenBucket(nil) t.Cleanup(func() { membucket.Close() }) filefs := hugofs.NewBasePathFs(afero.NewOsFs(), tmpfsdir) filebucket, err := fileblob.OpenBucket(tmpbucketdir, nil) if err != nil { t.Fatal(err) } t.Cleanup(func() { filebucket.Close() }) tests := []*fsTest{ {"mem", memfs, membucket}, {"file", filefs, filebucket}, } return tests } // TestEndToEndSync verifies that basic adds, updates, and deletes are working // correctly. func TestEndToEndSync(t *testing.T) { ctx := context.Background() tests := initFsTests(t) for _, test := range tests { t.Run(test.name, func(t *testing.T) { local, err := initLocalFs(ctx, test.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: test.fs, bucket: test.bucket, mediaTypes: media.DefaultTypes, cfg: deployconfig.DeployConfig{Workers: 2, MaxDeletes: -1}, } // Initial deployment should sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("initial deploy: failed: %v", err) } wantSummary := deploySummary{NumLocal: 5, NumRemote: 0, NumUploads: 5, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("initial deploy: got %v, want %v", deployer.summary, wantSummary) } if diff, err := verifyRemote(ctx, deployer.bucket, local); err != nil { t.Errorf("initial deploy: failed to verify remote: %v", err) } else if diff != "" { t.Errorf("initial deploy: remote snapshot doesn't match expected:\n%v", diff) } // A repeat deployment shouldn't change anything. if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy: got %v, want %v", deployer.summary, wantSummary) } // Make some changes to the local filesystem: // 1. Modify file [0]. // 2. Delete file [1]. // 3. Add a new file (sorted last). updatefd := local[0] updatefd.Contents = "new contents" deletefd := local[1] local = append(local[:1], local[2:]...) // removing deleted [1] newfd := &fileData{"zzz", "zzz"} local = append(local, newfd) if err := writeFiles(test.fs, []*fileData{updatefd, newfd}); err != nil { t.Fatal(err) } if err := test.fs.Remove(deletefd.Name); err != nil { t.Fatal(err) } // A deployment should apply those 3 changes. if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy after changes: failed: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 2, NumDeletes: 1} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy after changes: got %v, want %v", deployer.summary, wantSummary) } if diff, err := verifyRemote(ctx, deployer.bucket, local); err != nil { t.Errorf("deploy after changes: failed to verify remote: %v", err) } else if diff != "" { t.Errorf("deploy after changes: remote snapshot doesn't match expected:\n%v", diff) } // Again, a repeat deployment shouldn't change anything. if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy: got %v, want %v", deployer.summary, wantSummary) } }) } } // TestMaxDeletes verifies that the "maxDeletes" flag is working correctly. func TestMaxDeletes(t *testing.T) { ctx := context.Background() tests := initFsTests(t) for _, test := range tests { t.Run(test.name, func(t *testing.T) { local, err := initLocalFs(ctx, test.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: test.fs, bucket: test.bucket, mediaTypes: media.DefaultTypes, cfg: deployconfig.DeployConfig{Workers: 2, MaxDeletes: -1}, } // Sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("initial deploy: failed: %v", err) } wantSummary := deploySummary{NumLocal: 5, NumRemote: 0, NumUploads: 5, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("initial deploy: got %v, want %v", deployer.summary, wantSummary) } // Delete two files, [1] and [2]. if err := test.fs.Remove(local[1].Name); err != nil { t.Fatal(err) } if err := test.fs.Remove(local[2].Name); err != nil { t.Fatal(err) } // A deployment with maxDeletes=0 shouldn't change anything. deployer.cfg.MaxDeletes = 0 if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy failed: %v", err) } wantSummary = deploySummary{NumLocal: 3, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy: got %v, want %v", deployer.summary, wantSummary) } // A deployment with maxDeletes=1 shouldn't change anything either. deployer.cfg.MaxDeletes = 1 if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy failed: %v", err) } wantSummary = deploySummary{NumLocal: 3, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy: got %v, want %v", deployer.summary, wantSummary) } // A deployment with maxDeletes=2 should make the changes. deployer.cfg.MaxDeletes = 2 if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy failed: %v", err) } wantSummary = deploySummary{NumLocal: 3, NumRemote: 5, NumUploads: 0, NumDeletes: 2} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy: got %v, want %v", deployer.summary, wantSummary) } // Delete two more files, [0] and [3]. if err := test.fs.Remove(local[0].Name); err != nil { t.Fatal(err) } if err := test.fs.Remove(local[3].Name); err != nil { t.Fatal(err) } // A deployment with maxDeletes=-1 should make the changes. deployer.cfg.MaxDeletes = -1 if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy failed: %v", err) } wantSummary = deploySummary{NumLocal: 1, NumRemote: 3, NumUploads: 0, NumDeletes: 2} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy: got %v, want %v", deployer.summary, wantSummary) } }) } } // TestIncludeExclude verifies that the include/exclude options for targets work. func TestIncludeExclude(t *testing.T) { ctx := context.Background() tests := []struct { Include string Exclude string Want deploySummary }{ { Want: deploySummary{NumLocal: 5, NumUploads: 5}, }, { Include: "**aaa", Want: deploySummary{NumLocal: 3, NumUploads: 3}, }, { Include: "**bbb", Want: deploySummary{NumLocal: 2, NumUploads: 2}, }, { Include: "aaa", Want: deploySummary{NumLocal: 1, NumUploads: 1}, }, { Exclude: "**aaa", Want: deploySummary{NumLocal: 2, NumUploads: 2}, }, { Exclude: "**bbb", Want: deploySummary{NumLocal: 3, NumUploads: 3}, }, { Exclude: "aaa", Want: deploySummary{NumLocal: 4, NumUploads: 4}, }, { Include: "**aaa", Exclude: "**nested**", Want: deploySummary{NumLocal: 2, NumUploads: 2}, }, } for _, test := range tests { t.Run(fmt.Sprintf("include %q exclude %q", test.Include, test.Exclude), func(t *testing.T) { fsTests := initFsTests(t) fsTest := fsTests[1] // just do file-based test _, err := initLocalFs(ctx, fsTest.fs) if err != nil { t.Fatal(err) } tgt := &deployconfig.Target{ Include: test.Include, Exclude: test.Exclude, } if err := tgt.ParseIncludeExclude(); err != nil { t.Error(err) } deployer := &Deployer{ localFs: fsTest.fs, cfg: deployconfig.DeployConfig{Workers: 2, MaxDeletes: -1}, bucket: fsTest.bucket, target: tgt, mediaTypes: media.DefaultTypes, } // Sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy: failed: %v", err) } if !cmp.Equal(deployer.summary, test.Want) { t.Errorf("deploy: got %v, want %v", deployer.summary, test.Want) } }) } } // TestIncludeExcludeRemoteDelete verifies deleted local files that don't match include/exclude patterns // are not deleted on the remote. func TestIncludeExcludeRemoteDelete(t *testing.T) { ctx := context.Background() tests := []struct { Include string Exclude string Want deploySummary }{ { Want: deploySummary{NumLocal: 3, NumRemote: 5, NumUploads: 0, NumDeletes: 2}, }, { Include: "**aaa", Want: deploySummary{NumLocal: 2, NumRemote: 3, NumUploads: 0, NumDeletes: 1}, }, { Include: "subdir/**", Want: deploySummary{NumLocal: 1, NumRemote: 2, NumUploads: 0, NumDeletes: 1}, }, { Exclude: "**bbb", Want: deploySummary{NumLocal: 2, NumRemote: 3, NumUploads: 0, NumDeletes: 1}, }, { Exclude: "bbb", Want: deploySummary{NumLocal: 3, NumRemote: 4, NumUploads: 0, NumDeletes: 1}, }, } for _, test := range tests { t.Run(fmt.Sprintf("include %q exclude %q", test.Include, test.Exclude), func(t *testing.T) { fsTests := initFsTests(t) fsTest := fsTests[1] // just do file-based test local, err := initLocalFs(ctx, fsTest.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: fsTest.fs, cfg: deployconfig.DeployConfig{Workers: 2, MaxDeletes: -1}, bucket: fsTest.bucket, mediaTypes: media.DefaultTypes, } // Initial sync to get the files on the remote if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy: failed: %v", err) } // Delete two files, [1] and [2]. if err := fsTest.fs.Remove(local[1].Name); err != nil { t.Fatal(err) } if err := fsTest.fs.Remove(local[2].Name); err != nil { t.Fatal(err) } // Second sync tgt := &deployconfig.Target{ Include: test.Include, Exclude: test.Exclude, } if err := tgt.ParseIncludeExclude(); err != nil { t.Error(err) } deployer.target = tgt if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy: failed: %v", err) } if !cmp.Equal(deployer.summary, test.Want) { t.Errorf("deploy: got %v, want %v", deployer.summary, test.Want) } }) } } // TestCompression verifies that gzip compression works correctly. // In particular, MD5 hashes must be of the compressed content. func TestCompression(t *testing.T) { ctx := context.Background() tests := initFsTests(t) for _, test := range tests { t.Run(test.name, func(t *testing.T) { local, err := initLocalFs(ctx, test.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: test.fs, bucket: test.bucket, cfg: deployconfig.DeployConfig{Workers: 2, MaxDeletes: -1, Matchers: []*deployconfig.Matcher{{Pattern: ".*", Gzip: true, Re: regexp.MustCompile(".*")}}}, mediaTypes: media.DefaultTypes, } // Initial deployment should sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("initial deploy: failed: %v", err) } wantSummary := deploySummary{NumLocal: 5, NumRemote: 0, NumUploads: 5, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("initial deploy: got %v, want %v", deployer.summary, wantSummary) } // A repeat deployment shouldn't change anything. if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy: got %v, want %v", deployer.summary, wantSummary) } // Make an update to the local filesystem, on [1]. updatefd := local[1] updatefd.Contents = "new contents" if err := writeFiles(test.fs, []*fileData{updatefd}); err != nil { t.Fatal(err) } // A deployment should apply the changes. if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy after changes: failed: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 1, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy after changes: got %v, want %v", deployer.summary, wantSummary) } }) } } // TestMatching verifies that matchers match correctly, and that the Force // attribute for matcher works. func TestMatching(t *testing.T) { ctx := context.Background() tests := initFsTests(t) for _, test := range tests { t.Run(test.name, func(t *testing.T) { _, err := initLocalFs(ctx, test.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: test.fs, bucket: test.bucket, cfg: deployconfig.DeployConfig{Workers: 2, MaxDeletes: -1, Matchers: []*deployconfig.Matcher{{Pattern: "^subdir/aaa$", Force: true, Re: regexp.MustCompile("^subdir/aaa$")}}}, mediaTypes: media.DefaultTypes, } // Initial deployment to sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("initial deploy: failed: %v", err) } wantSummary := deploySummary{NumLocal: 5, NumRemote: 0, NumUploads: 5, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("initial deploy: got %v, want %v", deployer.summary, wantSummary) } // A repeat deployment should upload a single file, the one that matched the Force matcher. // Note that matching happens based on the ToSlash form, so this matches // even on Windows. if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy with single force matcher: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 1, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy with single force matcher: got %v, want %v", deployer.summary, wantSummary) } // Repeat with a matcher that should now match 3 files. deployer.cfg.Matchers = []*deployconfig.Matcher{{Pattern: "aaa", Force: true, Re: regexp.MustCompile("aaa")}} if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy with triple force matcher: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 3, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy with triple force matcher: got %v, want %v", deployer.summary, wantSummary) } }) } } // writeFiles writes the files in fds to fd. func writeFiles(fs afero.Fs, fds []*fileData) error { for _, fd := range fds { dir := path.Dir(fd.Name) if dir != "." { err := fs.MkdirAll(dir, os.ModePerm) if err != nil { return err } } f, err := fs.Create(fd.Name) if err != nil { return err } defer f.Close() _, err = f.WriteString(fd.Contents) if err != nil { return err } } return nil } // verifyRemote that the current contents of bucket matches local. // It returns an empty string if the contents matched, and a non-empty string // capturing the diff if they didn't. func verifyRemote(ctx context.Context, bucket *blob.Bucket, local []*fileData) (string, error) { var cur []*fileData iter := bucket.List(nil) for { obj, err := iter.Next(ctx) if err == io.EOF { break } if err != nil { return "", err } contents, err := bucket.ReadAll(ctx, obj.Key) if err != nil { return "", err } cur = append(cur, &fileData{obj.Key, string(contents)}) } if cmp.Equal(cur, local) { return "", nil } diff := "got: \n" for _, f := range cur { diff += fmt.Sprintf(" %s: %s\n", f.Name, f.Contents) } diff += "want: \n" for _, f := range local { diff += fmt.Sprintf(" %s: %s\n", f.Name, f.Contents) } return diff, nil } func newDeployer() *Deployer { return &Deployer{ logger: loggers.NewDefault(), cfg: deployconfig.DeployConfig{Workers: 2}, } } gohugoio-hugo-6abdaca/deploy/deployconfig/000077500000000000000000000000001507671574500211145ustar00rootroot00000000000000gohugoio-hugo-6abdaca/deploy/deployconfig/deployConfig.go000066400000000000000000000121171507671574500240670ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package deployconfig import ( "errors" "fmt" "regexp" "github.com/gobwas/glob" "github.com/gohugoio/hugo/config" hglob "github.com/gohugoio/hugo/hugofs/glob" "github.com/mitchellh/mapstructure" ) const DeploymentConfigKey = "deployment" // DeployConfig is the complete configuration for deployment. type DeployConfig struct { Targets []*Target Matchers []*Matcher Order []string // Usually set via flags. // Target deployment Name; defaults to the first one. Target string // Show a confirm prompt before deploying. Confirm bool // DryRun will try the deployment without any remote changes. DryRun bool // Force will re-upload all files. Force bool // Invalidate the CDN cache listed in the deployment target. InvalidateCDN bool // MaxDeletes is the maximum number of files to delete. MaxDeletes int // Number of concurrent workers to use when uploading files. Workers int Ordering []*regexp.Regexp `json:"-"` // compiled Order } type Target struct { Name string URL string CloudFrontDistributionID string // GoogleCloudCDNOrigin specifies the Google Cloud project and CDN origin to // invalidate when deploying this target. It is specified as /. GoogleCloudCDNOrigin string // Optional patterns of files to include/exclude for this target. // Parsed using github.com/gobwas/glob. Include string Exclude string // Parsed versions of Include/Exclude. IncludeGlob glob.Glob `json:"-"` ExcludeGlob glob.Glob `json:"-"` // If true, any local path matching /index.html will be mapped to the // remote path /. This does not affect the top-level index.html file, // since that would result in an empty path. StripIndexHTML bool } func (tgt *Target) ParseIncludeExclude() error { var err error if tgt.Include != "" { tgt.IncludeGlob, err = hglob.GetGlob(tgt.Include) if err != nil { return fmt.Errorf("invalid deployment.target.include %q: %v", tgt.Include, err) } } if tgt.Exclude != "" { tgt.ExcludeGlob, err = hglob.GetGlob(tgt.Exclude) if err != nil { return fmt.Errorf("invalid deployment.target.exclude %q: %v", tgt.Exclude, err) } } return nil } // Matcher represents configuration to be applied to files whose paths match // a specified pattern. type Matcher struct { // Pattern is the string pattern to match against paths. // Matching is done against paths converted to use / as the path separator. Pattern string // CacheControl specifies caching attributes to use when serving the blob. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control CacheControl string // ContentEncoding specifies the encoding used for the blob's content, if any. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding ContentEncoding string // ContentType specifies the MIME type of the blob being written. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type ContentType string // Gzip determines whether the file should be gzipped before upload. // If so, the ContentEncoding field will automatically be set to "gzip". Gzip bool // Force indicates that matching files should be re-uploaded. Useful when // other route-determined metadata (e.g., ContentType) has changed. Force bool // Re is Pattern compiled. Re *regexp.Regexp `json:"-"` } func (m *Matcher) Matches(path string) bool { return m.Re.MatchString(path) } var DefaultConfig = DeployConfig{ Workers: 10, InvalidateCDN: true, MaxDeletes: 256, } // DecodeConfig creates a config from a given Hugo configuration. func DecodeConfig(cfg config.Provider) (DeployConfig, error) { dcfg := DefaultConfig if !cfg.IsSet(DeploymentConfigKey) { return dcfg, nil } if err := mapstructure.WeakDecode(cfg.GetStringMap(DeploymentConfigKey), &dcfg); err != nil { return dcfg, err } if dcfg.Workers <= 0 { dcfg.Workers = 10 } for _, tgt := range dcfg.Targets { if *tgt == (Target{}) { return dcfg, errors.New("empty deployment target") } if err := tgt.ParseIncludeExclude(); err != nil { return dcfg, err } } var err error for _, m := range dcfg.Matchers { if *m == (Matcher{}) { return dcfg, errors.New("empty deployment matcher") } m.Re, err = regexp.Compile(m.Pattern) if err != nil { return dcfg, fmt.Errorf("invalid deployment.matchers.pattern: %v", err) } } for _, o := range dcfg.Order { re, err := regexp.Compile(o) if err != nil { return dcfg, fmt.Errorf("invalid deployment.orderings.pattern: %v", err) } dcfg.Ordering = append(dcfg.Ordering, re) } return dcfg, nil } gohugoio-hugo-6abdaca/deploy/deployconfig/deployConfig_test.go000066400000000000000000000110561507671574500251270ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build withdeploy package deployconfig import ( "fmt" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestDecodeConfigFromTOML(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [deployment] order = ["o1", "o2"] # All lowercase. [[deployment.targets]] name = "name0" url = "url0" cloudfrontdistributionid = "cdn0" include = "*.html" # All uppercase. [[deployment.targets]] NAME = "name1" URL = "url1" CLOUDFRONTDISTRIBUTIONID = "cdn1" INCLUDE = "*.jpg" # Camelcase. [[deployment.targets]] name = "name2" url = "url2" cloudFrontDistributionID = "cdn2" exclude = "*.png" # All lowercase. [[deployment.matchers]] pattern = "^pattern0$" cachecontrol = "cachecontrol0" contentencoding = "contentencoding0" contenttype = "contenttype0" # All uppercase. [[deployment.matchers]] PATTERN = "^pattern1$" CACHECONTROL = "cachecontrol1" CONTENTENCODING = "contentencoding1" CONTENTTYPE = "contenttype1" GZIP = true FORCE = true # Camelcase. [[deployment.matchers]] pattern = "^pattern2$" cacheControl = "cachecontrol2" contentEncoding = "contentencoding2" contentType = "contenttype2" gzip = true force = true ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) dcfg, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) // Order. c.Assert(len(dcfg.Order), qt.Equals, 2) c.Assert(dcfg.Order[0], qt.Equals, "o1") c.Assert(dcfg.Order[1], qt.Equals, "o2") c.Assert(len(dcfg.Ordering), qt.Equals, 2) // Targets. c.Assert(len(dcfg.Targets), qt.Equals, 3) wantInclude := []string{"*.html", "*.jpg", ""} wantExclude := []string{"", "", "*.png"} for i := 0; i < 3; i++ { tgt := dcfg.Targets[i] c.Assert(tgt.Name, qt.Equals, fmt.Sprintf("name%d", i)) c.Assert(tgt.URL, qt.Equals, fmt.Sprintf("url%d", i)) c.Assert(tgt.CloudFrontDistributionID, qt.Equals, fmt.Sprintf("cdn%d", i)) c.Assert(tgt.Include, qt.Equals, wantInclude[i]) if wantInclude[i] != "" { c.Assert(tgt.IncludeGlob, qt.Not(qt.IsNil)) } c.Assert(tgt.Exclude, qt.Equals, wantExclude[i]) if wantExclude[i] != "" { c.Assert(tgt.ExcludeGlob, qt.Not(qt.IsNil)) } } // Matchers. c.Assert(len(dcfg.Matchers), qt.Equals, 3) for i := 0; i < 3; i++ { m := dcfg.Matchers[i] c.Assert(m.Pattern, qt.Equals, fmt.Sprintf("^pattern%d$", i)) c.Assert(m.Re, qt.Not(qt.IsNil)) c.Assert(m.CacheControl, qt.Equals, fmt.Sprintf("cachecontrol%d", i)) c.Assert(m.ContentEncoding, qt.Equals, fmt.Sprintf("contentencoding%d", i)) c.Assert(m.ContentType, qt.Equals, fmt.Sprintf("contenttype%d", i)) c.Assert(m.Gzip, qt.Equals, i != 0) c.Assert(m.Force, qt.Equals, i != 0) } } func TestInvalidOrderingPattern(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [deployment] order = ["["] # invalid regular expression ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) _, err = DecodeConfig(cfg) c.Assert(err, qt.Not(qt.IsNil)) } func TestInvalidMatcherPattern(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [deployment] [[deployment.matchers]] Pattern = "[" # invalid regular expression ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) _, err = DecodeConfig(cfg) c.Assert(err, qt.Not(qt.IsNil)) } func TestDecodeConfigDefault(t *testing.T) { c := qt.New(t) dcfg, err := DecodeConfig(config.New()) c.Assert(err, qt.IsNil) c.Assert(len(dcfg.Targets), qt.Equals, 0) c.Assert(len(dcfg.Matchers), qt.Equals, 0) } func TestEmptyTarget(t *testing.T) { c := qt.New(t) tomlConfig := ` [deployment] [[deployment.targets]] ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) _, err = DecodeConfig(cfg) c.Assert(err, qt.Not(qt.IsNil)) } func TestEmptyMatcher(t *testing.T) { c := qt.New(t) tomlConfig := ` [deployment] [[deployment.matchers]] ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) _, err = DecodeConfig(cfg) c.Assert(err, qt.Not(qt.IsNil)) } gohugoio-hugo-6abdaca/deploy/google.go000066400000000000000000000022761507671574500202440ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build withdeploy package deploy import ( "context" "fmt" "strings" "google.golang.org/api/compute/v1" ) // Invalidate all of the content in a Google Cloud CDN distribution. func InvalidateGoogleCloudCDN(ctx context.Context, origin string) error { parts := strings.Split(origin, "/") if len(parts) != 2 { return fmt.Errorf("origin must be /") } service, err := compute.NewService(ctx) if err != nil { return err } rule := &compute.CacheInvalidationRule{Path: "/*"} _, err = service.UrlMaps.InvalidateCache(parts[0], parts[1], rule).Context(ctx).Do() return err } gohugoio-hugo-6abdaca/deps/000077500000000000000000000000001507671574500160715ustar00rootroot00000000000000gohugoio-hugo-6abdaca/deps/deps.go000066400000000000000000000275451507671574500173700ustar00rootroot00000000000000package deps import ( "context" "fmt" "io" "os" "path/filepath" "sort" "strings" "sync" "sync/atomic" "github.com/bep/logg" "github.com/gohugoio/hugo/cache/dynacache" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/config/security" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/internal/js" "github.com/gohugoio/hugo/internal/warpc" "github.com/gohugoio/hugo/media" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/postpub" "github.com/gohugoio/hugo/tpl/tplimpl" "github.com/gohugoio/hugo/metrics" "github.com/gohugoio/hugo/resources" "github.com/gohugoio/hugo/source" "github.com/gohugoio/hugo/tpl" "github.com/spf13/afero" ) // Deps holds dependencies used by many. // There will be normally only one instance of deps in play // at a given time, i.e. one per Site built. type Deps struct { // The logger to use. Log loggers.Logger `json:"-"` ExecHelper *hexec.Exec // The file systems to use. Fs *hugofs.Fs `json:"-"` // The PathSpec to use *helpers.PathSpec `json:"-"` // The ContentSpec to use *helpers.ContentSpec `json:"-"` // The SourceSpec to use SourceSpec *source.SourceSpec `json:"-"` // The Resource Spec to use ResourceSpec *resources.Spec // The configuration to use Conf config.AllProvider `json:"-"` // The memory cache to use. MemCache *dynacache.Cache // The translation func to use Translate func(ctx context.Context, translationID string, templateData any) string `json:"-"` // The site building. Site page.Site TemplateStore *tplimpl.TemplateStore // Used in tests OverloadedTemplateFuncs map[string]any TranslationProvider ResourceProvider Metrics metrics.Provider // BuildStartListeners will be notified before a build starts. BuildStartListeners *Listeners[any] // BuildEndListeners will be notified after a build finishes. BuildEndListeners *Listeners[any] // OnChangeListeners will be notified when something changes. OnChangeListeners *Listeners[identity.Identity] // Resources that gets closed when the build is done or the server shuts down. BuildClosers *types.Closers // This is common/global for all sites. BuildState *BuildState // Misc counters. Counters *Counters // Holds RPC dispatchers for Katex etc. // TODO(bep) rethink this re. a plugin setup, but this will have to do for now. WasmDispatchers *warpc.Dispatchers // The JS batcher client. JSBatcherClient js.BatcherClient isClosed bool *globalErrHandler } func (d Deps) Clone(s page.Site, conf config.AllProvider) (*Deps, error) { d.Conf = conf d.Site = s d.ExecHelper = nil d.ContentSpec = nil if err := d.Init(); err != nil { return nil, err } return &d, nil } func (d *Deps) GetTemplateStore() *tplimpl.TemplateStore { return d.TemplateStore } func (d *Deps) Init() error { if d.Conf == nil { panic("conf is nil") } if d.Fs == nil { // For tests. d.Fs = hugofs.NewFrom(afero.NewMemMapFs(), d.Conf.BaseConfig()) } if d.Log == nil { d.Log = loggers.NewDefault() } if d.globalErrHandler == nil { d.globalErrHandler = &globalErrHandler{ logger: d.Log, } } if d.BuildState == nil { d.BuildState = &BuildState{} } if d.Counters == nil { d.Counters = &Counters{} } if d.BuildState.DeferredExecutions == nil { if d.BuildState.DeferredExecutionsGroupedByRenderingContext == nil { d.BuildState.DeferredExecutionsGroupedByRenderingContext = make(map[tpl.RenderingContext]*DeferredExecutions) } d.BuildState.DeferredExecutions = &DeferredExecutions{ Executions: maps.NewCache[string, *tpl.DeferredExecution](), FilenamesWithPostPrefix: maps.NewCache[string, bool](), } } if d.BuildStartListeners == nil { d.BuildStartListeners = &Listeners[any]{} } if d.BuildEndListeners == nil { d.BuildEndListeners = &Listeners[any]{} } if d.BuildClosers == nil { d.BuildClosers = &types.Closers{} } if d.OnChangeListeners == nil { d.OnChangeListeners = &Listeners[identity.Identity]{} } if d.Metrics == nil && d.Conf.TemplateMetrics() { d.Metrics = metrics.NewProvider(d.Conf.TemplateMetricsHints()) } if d.ExecHelper == nil { d.ExecHelper = hexec.New(d.Conf.GetConfigSection("security").(security.Config), d.Conf.WorkingDir(), d.Log) } if d.MemCache == nil { d.MemCache = dynacache.New(dynacache.Options{Watching: d.Conf.Watching(), Log: d.Log}) } if d.PathSpec == nil { hashBytesReceiverFunc := func(name string, match []byte) { s := string(match) switch s { case postpub.PostProcessPrefix: d.BuildState.AddFilenameWithPostPrefix(name) case tpl.HugoDeferredTemplatePrefix: d.BuildState.DeferredExecutions.FilenamesWithPostPrefix.Set(name, true) } } // Skip binary files. mediaTypes := d.Conf.GetConfigSection("mediaTypes").(media.Types) hashBytesShouldCheck := func(name string) bool { ext := strings.TrimPrefix(filepath.Ext(name), ".") return mediaTypes.IsTextSuffix(ext) } d.Fs.PublishDir = hugofs.NewHasBytesReceiver( d.Fs.PublishDir, hashBytesShouldCheck, hashBytesReceiverFunc, []byte(tpl.HugoDeferredTemplatePrefix), []byte(postpub.PostProcessPrefix)) pathSpec, err := helpers.NewPathSpec(d.Fs, d.Conf, d.Log) if err != nil { return err } d.PathSpec = pathSpec } else { var err error d.PathSpec, err = helpers.NewPathSpecWithBaseBaseFsProvided(d.Fs, d.Conf, d.Log, d.PathSpec.BaseFs) if err != nil { return err } } if d.ContentSpec == nil { contentSpec, err := helpers.NewContentSpec(d.Conf, d.Log, d.Content.Fs, d.ExecHelper) if err != nil { return err } d.ContentSpec = contentSpec } if d.SourceSpec == nil { d.SourceSpec = source.NewSourceSpec(d.PathSpec, nil, d.Fs.Source) } var common *resources.SpecCommon if d.ResourceSpec != nil { common = d.ResourceSpec.SpecCommon } fileCaches, err := filecache.NewCaches(d.PathSpec) if err != nil { return fmt.Errorf("failed to create file caches from configuration: %w", err) } resourceSpec, err := resources.NewSpec(d.PathSpec, common, fileCaches, d.MemCache, d.BuildState, d.Log, d, d.ExecHelper, d.BuildClosers, d.BuildState) if err != nil { return fmt.Errorf("failed to create resource spec: %w", err) } d.ResourceSpec = resourceSpec return nil } // TODO(bep) rework this to get it in line with how we manage templates. func (d *Deps) Compile(prototype *Deps) error { var err error if prototype == nil { if err = d.TranslationProvider.NewResource(d); err != nil { return err } return nil } if err = d.TranslationProvider.CloneResource(d, prototype); err != nil { return err } return nil } // MkdirTemp returns a temporary directory path that will be cleaned up on exit. func (d Deps) MkdirTemp(pattern string) (string, error) { filename, err := os.MkdirTemp("", pattern) if err != nil { return "", err } d.BuildClosers.Add( types.CloserFunc( func() error { return os.RemoveAll(filename) }, ), ) return filename, nil } type globalErrHandler struct { logger loggers.Logger // Channel for some "hard to get to" build errors buildErrors chan error // Used to signal that the build is done. quit chan struct{} } // SendError sends the error on a channel to be handled later. // This can be used in situations where returning and aborting the current // operation isn't practical. func (e *globalErrHandler) SendError(err error) { if e.buildErrors != nil { select { case <-e.quit: case e.buildErrors <- err: default: } return } e.logger.Errorln(err) } func (e *globalErrHandler) StartErrorCollector() chan error { e.quit = make(chan struct{}) e.buildErrors = make(chan error, 10) return e.buildErrors } func (e *globalErrHandler) StopErrorCollector() { if e.buildErrors != nil { close(e.quit) close(e.buildErrors) } } // Listeners represents an event listener. type Listeners[T any] struct { sync.Mutex // A list of funcs to be notified about an event. // If the return value is true, the listener will be removed. listeners []func(...T) bool } // Add adds a function to a Listeners instance. func (b *Listeners[T]) Add(f func(...T) bool) { if b == nil { return } b.Lock() defer b.Unlock() b.listeners = append(b.listeners, f) } // Notify executes all listener functions. func (b *Listeners[T]) Notify(vs ...T) { b.Lock() defer b.Unlock() temp := b.listeners[:0] for _, notify := range b.listeners { if !notify(vs...) { temp = append(temp, notify) } } b.listeners = temp } // ResourceProvider is used to create and refresh, and clone resources needed. type ResourceProvider interface { NewResource(dst *Deps) error CloneResource(dst, src *Deps) error } func (d *Deps) Close() error { if d.isClosed { return nil } d.isClosed = true if d.MemCache != nil { d.MemCache.Stop() } if d.WasmDispatchers != nil { d.WasmDispatchers.Close() } return d.BuildClosers.Close() } // DepsCfg contains configuration options that can be used to configure Hugo // on a global level, i.e. logging etc. // Nil values will be given default values. type DepsCfg struct { // The logger to use. Only set in some tests. // TODO(bep) get rid of this. TestLogger loggers.Logger // The logging level to use. LogLevel logg.Level // Logging output. StdErr io.Writer // The console output. StdOut io.Writer // The file systems to use Fs *hugofs.Fs // The Site in use Site page.Site Configs *allconfig.Configs // Template handling. TemplateProvider ResourceProvider // i18n handling. TranslationProvider ResourceProvider // ChangesFromBuild for changes passed back to the server/watch process. ChangesFromBuild chan []identity.Identity } // BuildState are state used during a build. type BuildState struct { counter uint64 mu sync.Mutex // protects state below. OnSignalRebuild func(ids ...identity.Identity) // A set of filenames in /public that // contains a post-processing prefix. filenamesWithPostPrefix map[string]bool DeferredExecutions *DeferredExecutions // Deferred executions grouped by rendering context. DeferredExecutionsGroupedByRenderingContext map[tpl.RenderingContext]*DeferredExecutions } // Misc counters. type Counters struct { // Counter for the math.Counter function. MathCounter atomic.Uint64 } type DeferredExecutions struct { // A set of filenames in /public that // contains a post-processing prefix. FilenamesWithPostPrefix *maps.Cache[string, bool] // Maps a placeholder to a deferred execution. Executions *maps.Cache[string, *tpl.DeferredExecution] } var _ identity.SignalRebuilder = (*BuildState)(nil) // StartStageRender will be called before a stage is rendered. func (b *BuildState) StartStageRender(stage tpl.RenderingContext) { } // StopStageRender will be called after a stage is rendered. func (b *BuildState) StopStageRender(stage tpl.RenderingContext) { b.DeferredExecutionsGroupedByRenderingContext[stage] = b.DeferredExecutions b.DeferredExecutions = &DeferredExecutions{ Executions: maps.NewCache[string, *tpl.DeferredExecution](), FilenamesWithPostPrefix: maps.NewCache[string, bool](), } } func (b *BuildState) SignalRebuild(ids ...identity.Identity) { b.OnSignalRebuild(ids...) } func (b *BuildState) AddFilenameWithPostPrefix(filename string) { b.mu.Lock() defer b.mu.Unlock() if b.filenamesWithPostPrefix == nil { b.filenamesWithPostPrefix = make(map[string]bool) } b.filenamesWithPostPrefix[filename] = true } func (b *BuildState) GetFilenamesWithPostPrefix() []string { b.mu.Lock() defer b.mu.Unlock() var filenames []string for filename := range b.filenamesWithPostPrefix { filenames = append(filenames, filename) } sort.Strings(filenames) return filenames } func (b *BuildState) Incr() int { return int(atomic.AddUint64(&b.counter, uint64(1))) } gohugoio-hugo-6abdaca/deps/deps_test.go000066400000000000000000000015441507671574500204160ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package deps_test import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/deps" ) func TestBuildFlags(t *testing.T) { c := qt.New(t) var bf deps.BuildState bf.Incr() bf.Incr() bf.Incr() c.Assert(bf.Incr(), qt.Equals, 4) } gohugoio-hugo-6abdaca/docs/000077500000000000000000000000001507671574500160665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/.codespellrc000066400000000000000000000006051507671574500203670ustar00rootroot00000000000000# Config file for codespell. # https://github.com/codespell-project/codespell#using-a-config-file [codespell] # Comma separated list of dirs to be skipped. skip = *.ai,chroma.css,chroma_dark.css,.cspell.json # Comma separated list of words to be ignored. Words must be lowercased. ignore-words-list = abl,edn,januar,te,trys,ue,womens # Check file names as well. check-filenames = true gohugoio-hugo-6abdaca/docs/.cspell.json000066400000000000000000000101561507671574500203240ustar00rootroot00000000000000{ "version": "0.2", "allowCompoundWords": true, "overrides": [ { "filename": "**/*", "enabled": false }, { "filename": "**/*.md", "enabled": true } ], "flagWords": [ "alot", "hte", "langauge", "reccommend", "seperate", "teh" ], "ignorePaths": [ "**/emojis.md", "**/commands/*", "**/showcase/*", "**/tools/*" ], "ignoreRegExpList": [ "# cspell: ignore fenced code blocks", "^(\\s*`{3,}).*[\\s\\S]*?^\\1$", "# cspell: ignore words joined with dot", "\\w+\\.\\w+", "# cspell: ignore strings within backticks", "`.+`", "# cspell: ignore strings within double quotes", "\".+\"", "# cspell: ignore strings within brackets", "\\[.+\\]", "# cspell: ignore strings within parentheses", "\\(.+\\)", "# cspell: ignore words that begin with a slash", "/\\w+", "# cspell: ignore everything within action delimiters", "\\{\\{.+\\}\\}", "# cspell: ignore everything after a right arrow", "\\s+→\\s+.+" ], "language": "en", "words": [ "composability", "configurators", "defang", "deindent", "downscale", "downscaling", "exif", "geolocalized", "grayscale", "marshal", "marshaling", "multihost", "multiplatfom", "performantly", "preconfigured", "prerendering", "redirection", "redirections", "subexpression", "suppressible", "synchronisation", "templating", "transpile", "unmarshal", "unmarshaled", "unmarshaling", "unmarshals", "# ----------------------------------------------------------------------", "# cspell: ignore hugo terminology", "# ----------------------------------------------------------------------", "alignx", "aligny", "attrlink", "canonify", "codeowners", "dynacache", "eturl", "getenv", "gohugo", "gohugoio", "keyvals", "leftdelim", "linkify", "numworkermultiplier", "rightdelim", "shortcode", "stringifier", "struct", "toclevels", "unmarshal", "unpublishdate", "zgotmplz", "# ----------------------------------------------------------------------", "# cspell: ignore foreign language words", "# ----------------------------------------------------------------------", "bezpieczeństwo", "blatt", "buch", "descripción", "dokumentation", "erklärungen", "español", "français", "libros", "mercredi", "miesiąc", "miesiąc", "miesiąca", "miesiące", "miesięcy", "misérables", "mittwoch", "muchos", "novembre", "otro", "pocos", "produkte", "projekt", "prywatność", "referenz", "régime", "# ----------------------------------------------------------------------", "# cspell: ignore names", "# ----------------------------------------------------------------------", "Atishay", "Cosette", "Eliott", "Furet", "Gregor", "Jaco", "Lanczos", "Ninke", "Noll", "Pastorius", "Samsa", "Stucki", "Thénardier", "WASI", "# ----------------------------------------------------------------------", "# cspell: ignore operating systems and software packages", "# ----------------------------------------------------------------------", "asciidoctor", "brotli", "cifs", "corejs", "disqus", "docutils", "dpkg", "doas", "eopkg", "forgejo", "gitee", "goldmark", "katex", "kubuntu", "lubuntu", "mathjax", "nosql", "pandoc", "pkgin", "rclone", "xubuntu", "# ----------------------------------------------------------------------", "# cspell: ignore miscellaneous", "# ----------------------------------------------------------------------", "achristie", "ccpa", "cpra", "ddmaurier", "dring", "fleqn", "inor", "jausten", "jdoe", "jsmith", "leqno", "milli", "monokai", "mysanityprojectid", "rgba", "rsmith", "tdewolff", "tjones", "vcard", "wcag", "xfeff" ] } gohugoio-hugo-6abdaca/docs/.editorconfig000066400000000000000000000004131507671574500205410ustar00rootroot00000000000000# https://editorconfig.org root = true [*] charset = utf-8 end_of_line = lf indent_size = 2 indent_style = space trim_trailing_whitespace = true [*.go] indent_size = 8 indent_style = tab [*.js] insert_final_newline = true [*.md] trim_trailing_whitespace = false gohugoio-hugo-6abdaca/docs/.github/000077500000000000000000000000001507671574500174265ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/.github/ISSUE_TEMPLATE/000077500000000000000000000000001507671574500216115ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/.github/ISSUE_TEMPLATE/config.yml000066400000000000000000000000341507671574500235760ustar00rootroot00000000000000blank_issues_enabled: false gohugoio-hugo-6abdaca/docs/.github/ISSUE_TEMPLATE/default.md000066400000000000000000000001311507671574500235520ustar00rootroot00000000000000--- name: Default about: This is the default issue template. labels: - NeedsTriage --- gohugoio-hugo-6abdaca/docs/.github/SUPPORT.md000066400000000000000000000003121507671574500211200ustar00rootroot00000000000000### Asking support questions We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions. Please don't use the GitHub issue tracker to ask questions. gohugoio-hugo-6abdaca/docs/.github/workflows/000077500000000000000000000000001507671574500214635ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/.github/workflows/codeql-analysis.yml000066400000000000000000000007571507671574500253070ustar00rootroot00000000000000name: "CodeQL" on: schedule: - cron: "0 0 1 * *" jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write steps: - name: Checkout repository uses: actions/checkout@v5 - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: "javascript" - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 gohugoio-hugo-6abdaca/docs/.github/workflows/markdownlint.yml000066400000000000000000000005641507671574500247240ustar00rootroot00000000000000name: Lint markdown on: workflow_dispatch: pull_request: jobs: lint: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v5 - name: Run Markdown linter uses: DavidAnson/markdownlint-cli2-action@v20 with: globs: # set to null to override default of *.{md,markdown} continue-on-error: false gohugoio-hugo-6abdaca/docs/.github/workflows/spellcheck.yml000066400000000000000000000011071507671574500243220ustar00rootroot00000000000000name: "Check spelling" on: push: pull_request: branches-ignore: - "dependabot/**" permissions: contents: read jobs: spellcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: streetsidesoftware/cspell-action@v7 with: incremental_files_only: true strict: true # cspell uses the .cspell.json configuration file - uses: codespell-project/actions-codespell@v2 with: check_filenames: true check_hidden: true # codespell uses the .codespellrc file gohugoio-hugo-6abdaca/docs/.github/workflows/stale.yml000066400000000000000000000020061507671574500233140ustar00rootroot00000000000000name: Close stale issues and pull requests on: workflow_dispatch: schedule: - cron: "30 1 * * *" permissions: contents: read jobs: stale: permissions: contents: read issues: write pull-requests: write runs-on: ubuntu-latest steps: - uses: actions/stale@v9 with: days-before-stale: 90 # default is 60 days-before-close: 14 # default is 7 exempt-all-assignees: true exempt-draft-pr: true exempt-issue-labels: Keep, InProgress, NeedsTriage exempt-pr-labels: Keep operations-per-run: 100 stale-issue-message: > This issue has been marked as stale because there hasn't been any recent activity. It will be closed soon if there are no further updates. stale-pr-message: > This pull request has been marked as stale because there hasn't been any recent activity. It will be closed soon if there are no further updates. gohugoio-hugo-6abdaca/docs/.gitignore000066400000000000000000000002101507671574500200470ustar00rootroot00000000000000.DS_Store .hugo_build.lock /.idea /.vscode /dist /public /resources hugo_stats.json node_modules/ nohup.out package-lock.json trace.out gohugoio-hugo-6abdaca/docs/.markdownlint-cli2.yaml000066400000000000000000000030221507671574500223650ustar00rootroot00000000000000# Glob patterns to include globs: - "content/**/*.md" # Glob patterns to exclude ignores: - "content/**/commands/**" - "content/en/about/license.md" - "content/LICENSE.md" # Markdownlint rules and configuration # https://github.com/DavidAnson/markdownlint?tab=readme-ov-file#rules--aliases config: MD001: true # MD002 deprecated MD003: style: atx MD004: style: dash MD005: true # MD006 deprecated MD007: false # if enabled, throws errors when definition descriptions contain list items # MD008 deprecated MD009: true MD010: true MD011: true MD012: true MD013: false MD014: true # MD015 deprecated # MD016 deprecated # MD017 deprecated MD018: true MD019: true MD020: true MD021: true MD022: true MD023: true MD024: true MD025: true MD026: true MD027: true MD028: false MD029: style: one MD030: true MD031: true MD032: true MD033: true MD034: false MD035: style: --- MD036: true MD037: true MD038: true MD039: true MD040: true MD041: false MD042: true MD043: false MD044: false MD045: true MD046: false MD047: true MD048: style: backtick MD049: style: underscore MD050: style: asterisk MD051: false MD052: true MD053: true MD054: autolink: true collapsed: true full: true inline: true shortcut: true url_inline: true MD055: style: consistent MD056: true # MD057 deprecated MD058: true MD059: prohibited_texts: - click here - here - link - more gohugoio-hugo-6abdaca/docs/.prettierignore000066400000000000000000000007261507671574500211360ustar00rootroot00000000000000# Ignore all SVG icons. **/icons.html # These are whitespace sensitive. layouts/_markup/render-code* layouts/_markup/render-table* layouts/_shortcodes/glossary-term.html layouts/_shortcodes/glossary.html layouts/_shortcodes/highlighting-styles.html layouts/_shortcodes/list-pages-in-section.html layouts/_shortcodes/quick-reference.html # No root node. layouts/_partials/layouts/head/head.html # Auto generated. assets/css/components/chroma*.css assets/jsconfig.json gohugoio-hugo-6abdaca/docs/.prettierrc000066400000000000000000000007001507671574500202470ustar00rootroot00000000000000{ "plugins": [ "prettier-plugin-go-template", "@awmottaz/prettier-plugin-void-html" ], "overrides": [ { "files": ["*.html"], "options": { "parser": "go-template", "goTemplateBracketSpacing": true, "bracketSameLine": true } }, { "files": ["*.js", "*.ts"], "options": { "useTabs": true, "printWidth": 120, "singleQuote": true } } ] } gohugoio-hugo-6abdaca/docs/.textlintignore000066400000000000000000000000421507671574500211420ustar00rootroot00000000000000**/news/** **/showcase/** **/zh/**gohugoio-hugo-6abdaca/docs/.vscode/000077500000000000000000000000001507671574500174275ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/.vscode/extensions.json000066400000000000000000000002221507671574500225150ustar00rootroot00000000000000{ "recommendations": [ "DavidAnson.vscode-markdownlint", "EditorConfig.EditorConfig", "streetsidesoftware.code-spell-checker" ] } gohugoio-hugo-6abdaca/docs/LICENSE.md000066400000000000000000000003731507671574500174750ustar00rootroot00000000000000See [content/LICENSE.md](content/LICENSE.md) for the license of the content of this repository. The theme (layouts, CSS, JavaScript etc.) of this repository has no open source license. It is custom made for the Hugo sites and is not meant for reuse. gohugoio-hugo-6abdaca/docs/README.md000066400000000000000000000021131507671574500173420ustar00rootroot00000000000000Hugo A fast and flexible static site generator built with love by [bep], [spf13], and [friends] in [Go]. --- [![Netlify Status](https://api.netlify.com/api/v1/badges/e0dbbfc7-34f1-4393-a679-c16e80162705/deploy-status)](https://app.netlify.com/sites/gohugoio/deploys) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://gohugo.io/contribute/documentation/) This is the repository for the [Hugo](https://github.com/gohugoio/hugo) documentation site. Please see the [contributing] section for guidelines, examples, and process. [bep]: https://github.com/bep [spf13]: https://github.com/spf13 [friends]: https://github.com/gohugoio/hugo/graphs/contributors [go]: https://go.dev/ [contributing]: https://gohugo.io/contribute/documentation # Install ```sh npm i hugo server ``` **Note:** We're working on removing the need to run `npm i` for local development. Stay tuned. gohugoio-hugo-6abdaca/docs/archetypes/000077500000000000000000000000001507671574500202355ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/archetypes/default.md000066400000000000000000000001711507671574500222020ustar00rootroot00000000000000--- title: {{ replace .File.ContentBaseName "-" " " | strings.FirstUpper }} description: categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/archetypes/functions.md000066400000000000000000000003001507671574500225600ustar00rootroot00000000000000--- title: {{ replace .File.ContentBaseName "-" " " | title }} description: categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [] --- gohugoio-hugo-6abdaca/docs/archetypes/glossary.md000066400000000000000000000022701507671574500224230ustar00rootroot00000000000000--- title: {{ replace .File.ContentBaseName "-" " " }} params: reference: --- gohugoio-hugo-6abdaca/docs/archetypes/methods.md000066400000000000000000000002601507671574500222200ustar00rootroot00000000000000--- title: {{ replace .File.ContentBaseName "-" " " | title }} description: categories: [] keywords: [] params: functions_and_methods: returnType: signatures: [] --- gohugoio-hugo-6abdaca/docs/archetypes/news.md000066400000000000000000000002221507671574500215270ustar00rootroot00000000000000--- title: {{ replace .File.ContentBaseName "-" " " | strings.FirstUpper }} description: categories: [] keywords: [] publishDate: {{ .Date }} --- gohugoio-hugo-6abdaca/docs/assets/000077500000000000000000000000001507671574500173705ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/css/000077500000000000000000000000001507671574500201605ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/css/components/000077500000000000000000000000001507671574500223455ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/css/components/all.css000066400000000000000000000003221507671574500236240ustar00rootroot00000000000000/* The order of these does not matter. */ @import "./content.css"; @import "./fonts.css"; @import "./helpers.css"; @import "./shortcodes.css"; @import "./tableofcontents.css"; @import "./view-transitions.css"; gohugoio-hugo-6abdaca/docs/assets/css/components/chroma.css000066400000000000000000000113051507671574500243300ustar00rootroot00000000000000/* Background */ .bg { background-color: var(--color-light); } /* PreWrapper */ .chroma { background-color: var(--color-light); } /* Other */ .chroma .x { } /* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 } /* CodeLine */ .chroma .cl { } /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } /* LineHighlight */ .chroma .hl { background-color: #ffffcc } /* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } /* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } /* Line */ .chroma .line { display: flex; } /* Keyword */ .chroma .k { font-weight: bold } /* KeywordConstant */ .chroma .kc { font-weight: bold } /* KeywordDeclaration */ .chroma .kd { font-weight: bold } /* KeywordNamespace */ .chroma .kn { font-weight: bold } /* KeywordPseudo */ .chroma .kp { font-weight: bold } /* KeywordReserved */ .chroma .kr { font-weight: bold } /* KeywordType */ .chroma .kt { color: #445588; font-weight: bold } /* Name */ .chroma .n { } /* NameAttribute */ .chroma .na { color: #008080 } /* NameBuiltin */ .chroma .nb { color: #999999 } /* NameBuiltinPseudo */ .chroma .bp { } /* NameClass */ .chroma .nc { color: #445588; font-weight: bold } /* NameConstant */ .chroma .no { color: #008080 } /* NameDecorator */ .chroma .nd { } /* NameEntity */ .chroma .ni { color: #800080 } /* NameException */ .chroma .ne { color: #990000; font-weight: bold } /* NameFunction */ .chroma .nf { color: #990000; font-weight: bold } /* NameFunctionMagic */ .chroma .fm { } /* NameLabel */ .chroma .nl { } /* NameNamespace */ .chroma .nn { color: #555555 } /* NameOther */ .chroma .nx { } /* NameProperty */ .chroma .py { } /* NameTag */ .chroma .nt { color: #000080 } /* NameVariable */ .chroma .nv { color: #008080 } /* NameVariableClass */ .chroma .vc { } /* NameVariableGlobal */ .chroma .vg { } /* NameVariableInstance */ .chroma .vi { } /* NameVariableMagic */ .chroma .vm { } /* Literal */ .chroma .l { } /* LiteralDate */ .chroma .ld { } /* LiteralString */ .chroma .s { color: #bb8844 } /* LiteralStringAffix */ .chroma .sa { color: #bb8844 } /* LiteralStringBacktick */ .chroma .sb { color: #bb8844 } /* LiteralStringChar */ .chroma .sc { color: #bb8844 } /* LiteralStringDelimiter */ .chroma .dl { color: #bb8844 } /* LiteralStringDoc */ .chroma .sd { color: #bb8844 } /* LiteralStringDouble */ .chroma .s2 { color: #bb8844 } /* LiteralStringEscape */ .chroma .se { color: #bb8844 } /* LiteralStringHeredoc */ .chroma .sh { color: #bb8844 } /* LiteralStringInterpol */ .chroma .si { color: #bb8844 } /* LiteralStringOther */ .chroma .sx { color: #bb8844 } /* LiteralStringRegex */ .chroma .sr { color: #808000 } /* LiteralStringSingle */ .chroma .s1 { color: #bb8844 } /* LiteralStringSymbol */ .chroma .ss { color: #bb8844 } /* LiteralNumber */ .chroma .m { color: #009999 } /* LiteralNumberBin */ .chroma .mb { color: #009999 } /* LiteralNumberFloat */ .chroma .mf { color: #009999 } /* LiteralNumberHex */ .chroma .mh { color: #009999 } /* LiteralNumberInteger */ .chroma .mi { color: #009999 } /* LiteralNumberIntegerLong */ .chroma .il { color: #009999 } /* LiteralNumberOct */ .chroma .mo { color: #009999 } /* Operator */ .chroma .o { font-weight: bold } /* OperatorWord */ .chroma .ow { font-weight: bold } /* Punctuation */ .chroma .p { } /* Comment */ .chroma .c { color: #999988; font-style: italic } /* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic } /* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic } /* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic } /* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic } /* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold } /* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold } /* Generic */ .chroma .g { } /* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd } /* GenericEmph */ .chroma .ge { font-style: italic } /* GenericError */ .chroma .gr { color: #aa0000 } /* GenericHeading */ .chroma .gh { color: #999999 } /* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd } /* GenericOutput */ .chroma .go { color: #888888 } /* GenericPrompt */ .chroma .gp { color: #555555 } /* GenericStrong */ .chroma .gs { font-weight: bold } /* GenericSubheading */ .chroma .gu { color: #aaaaaa } /* GenericTraceback */ .chroma .gt { color: #aa0000 } /* GenericUnderline */ .chroma .gl { text-decoration: underline } /* TextWhitespace */ .chroma .w { color: #bbbbbb } gohugoio-hugo-6abdaca/docs/assets/css/components/chroma_dark.css000066400000000000000000000115301507671574500253310ustar00rootroot00000000000000/* Background */.dark .bg { background-color: var(--color-dark); } /* PreWrapper */ .dark .chroma { background-color: var(--color-dark); } /* Other */ .dark .chroma .x { } /* Error */ .dark .chroma .err { color: #ef6155 } /* CodeLine */ .dark .chroma .cl { } /* LineTableTD */ .dark .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } /* LineTable */ .dark .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } /* LineHighlight */ .dark .chroma .hl { background-color: rgb(0,19,28) } /* LineNumbersTable */ .dark .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } /* LineNumbers */ .dark .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } /* Line */ .dark .chroma .line { display: flex; } /* Keyword */ .dark .chroma .k { color: #815ba4 } /* KeywordConstant */ .dark .chroma .kc { color: #815ba4 } /* KeywordDeclaration */ .dark .chroma .kd { color: #815ba4 } /* KeywordNamespace */ .dark .chroma .kn { color: #5bc4bf } /* KeywordPseudo */ .dark .chroma .kp { color: #815ba4 } /* KeywordReserved */ .dark .chroma .kr { color: #815ba4 } /* KeywordType */ .dark .chroma .kt { color: #fec418 } /* Name */ .dark .chroma .n { } /* NameAttribute */ .dark .chroma .na { color: #06b6ef } /* NameBuiltin */ .dark .chroma .nb { } /* NameBuiltinPseudo */ .dark .chroma .bp { } /* NameClass */ .dark .chroma .nc { color: #fec418 } /* NameConstant */ .dark .chroma .no { color: #ef6155 } /* NameDecorator */ .dark .chroma .nd { color: #5bc4bf } /* NameEntity */ .dark .chroma .ni { } /* NameException */ .dark .chroma .ne { color: #ef6155 } /* NameFunction */ .dark .chroma .nf { color: #06b6ef } /* NameFunctionMagic */ .dark .chroma .fm { } /* NameLabel */ .dark .chroma .nl { } /* NameNamespace */ .dark .chroma .nn { color: #fec418 } /* NameOther */ .dark .chroma .nx { color: #06b6ef } /* NameProperty */ .dark .chroma .py { } /* NameTag */ .dark .chroma .nt { color: #5bc4bf } /* NameVariable */ .dark .chroma .nv { color: #ef6155 } /* NameVariableClass */ .dark .chroma .vc { } /* NameVariableGlobal */ .dark .chroma .vg { } /* NameVariableInstance */ .dark .chroma .vi { } /* NameVariableMagic */ .dark .chroma .vm { } /* Literal */ .dark .chroma .l { color: #f99b15 } /* LiteralDate */ .dark .chroma .ld { color: #48b685 } /* LiteralString */ .dark .chroma .s { color: #48b685 } /* LiteralStringAffix */ .dark .chroma .sa { color: #48b685 } /* LiteralStringBacktick */ .dark .chroma .sb { color: #48b685 } /* LiteralStringChar */ .dark .chroma .sc { } /* LiteralStringDelimiter */ .dark .chroma .dl { color: #48b685 } /* LiteralStringDoc */ .dark .chroma .sd { color: #776e71 } /* LiteralStringDouble */ .dark .chroma .s2 { color: #48b685 } /* LiteralStringEscape */ .dark .chroma .se { color: #f99b15 } /* LiteralStringHeredoc */ .dark .chroma .sh { color: #48b685 } /* LiteralStringInterpol */ .dark .chroma .si { color: #f99b15 } /* LiteralStringOther */ .dark .chroma .sx { color: #48b685 } /* LiteralStringRegex */ .dark .chroma .sr { color: #48b685 } /* LiteralStringSingle */ .dark .chroma .s1 { color: #48b685 } /* LiteralStringSymbol */ .dark .chroma .ss { color: #48b685 } /* LiteralNumber */ .dark .chroma .m { color: #f99b15 } /* LiteralNumberBin */ .dark .chroma .mb { color: #f99b15 } /* LiteralNumberFloat */ .dark .chroma .mf { color: #f99b15 } /* LiteralNumberHex */ .dark .chroma .mh { color: #f99b15 } /* LiteralNumberInteger */ .dark .chroma .mi { color: #f99b15 } /* LiteralNumberIntegerLong */ .dark .chroma .il { color: #f99b15 } /* LiteralNumberOct */ .dark .chroma .mo { color: #f99b15 } /* Operator */ .dark .chroma .o { color: #5bc4bf } /* OperatorWord */ .dark .chroma .ow { color: #5bc4bf } /* Punctuation */ .dark .chroma .p { } /* Comment */ .dark .chroma .c { color: #776e71 } /* CommentHashbang */ .dark .chroma .ch { color: #776e71 } /* CommentMultiline */ .dark .chroma .cm { color: #776e71 } /* CommentSingle */ .dark .chroma .c1 { color: #776e71 } /* CommentSpecial */ .dark .chroma .cs { color: #776e71 } /* CommentPreproc */ .dark .chroma .cp { color: #776e71 } /* CommentPreprocFile */ .dark .chroma .cpf { color: #776e71 } /* Generic */ .dark .chroma .g { } /* GenericDeleted */ .dark .chroma .gd { color: #ef6155 } /* GenericEmph */ .dark .chroma .ge { font-style: italic } /* GenericError */ .dark .chroma .gr { } /* GenericHeading */ .dark .chroma .gh { font-weight: bold } /* GenericInserted */ .dark .chroma .gi { color: #48b685 } /* GenericOutput */ .dark .chroma .go { } /* GenericPrompt */ .dark .chroma .gp { color: #776e71; font-weight: bold } /* GenericStrong */ .dark .chroma .gs { font-weight: bold } /* GenericSubheading */ .dark .chroma .gu { color: #5bc4bf; font-weight: bold } /* GenericTraceback */ .dark .chroma .gt { } /* GenericUnderline */ .dark .chroma .gl { } /* TextWhitespace */ .dark .chroma .w { } gohugoio-hugo-6abdaca/docs/assets/css/components/content.css000066400000000000000000000041211507671574500245270ustar00rootroot00000000000000@import "./chroma_dark.css"; @import "./chroma.css"; @import "./highlight.css"; /* Some contrast ratio fixes as reported by Google Page Speed. */ .chroma .c1 { @apply text-gray-500; } .dark .chroma .c1 { @apply text-gray-400; } .highlight code { @apply text-sm/6; } .content { @apply prose prose-sm sm:prose-base prose-stone max-w-none dark:prose-invert dark:text-slate-200; /* headings */ @apply prose-headings:font-semibold; /* lead */ @apply prose-lead:text-slate-500 prose-lead:text-xl prose-lead:mt-2 sm:prose-lead:mt-4 prose-lead:leading-relaxed dark:prose-lead:text-slate-400; /* links */ @apply prose-a:text-primary dark:prose-a:text-blue-500 prose-a:hover:text-blue-500 dark:prose-a:hover:text-blue-400 prose-a:underline; @apply prose-a:prose-code:underline prose-a:prose-code:hover:text-blue-500 prose-a:prose-code:hover:underline; /* pre */ @apply prose-pre:text-gray-800 prose-pre:border-1 prose-pre:border-gray-100 prose-pre:bg-light dark:prose-pre:bg-dark dark:prose-pre:ring-1 dark:prose-pre:ring-slate-300/10; /* code */ @apply prose-code:px-0.5 prose-code:text-gray-500 prose-code:dark:text-gray-300 border-none; @apply prose-code:before:hidden prose-code:after:hidden prose-code:font-mono; @apply prose-table:prose-th:prose-code:text-white; /* tables */ @apply prose-table:w-auto prose-table:border-2 prose-table:border-gray-100 prose-table:dark:border-gray-800 prose-table:prose-th:font-bold prose-table:prose-th:bg-blue-500 dark:prose-table:prose-th:bg-blue-500/50 prose-table:prose-th:p-2 prose-table:prose-td:p-2 prose-table:prose-th:text-white; /* hr */ @apply dark:prose-hr:border-slate-800; /* ol */ @apply prose-ol:marker:prose dark:prose-ol:marker:text-gray-300; /* ul */ @apply prose-ul:marker:text-gray-500 dark:prose-ul:marker:text-gray-300; } /* This will not match highlighting inside e.g. the code-toggle shortcode. */ /* For more fine grained control of this, see components/shortcodes.css. */ .content > .highlight, .content dd > .highlight, .content li > .highlight { @apply border-1 border-gray-200 dark:border-slate-600 mt-6 mb-8; } gohugoio-hugo-6abdaca/docs/assets/css/components/fonts.css000066400000000000000000000005541507671574500242140ustar00rootroot00000000000000@font-face { font-family: "Mulish"; font-style: normal; src: url("../fonts/Mulish-VariableFont_wght.ttf") format("truetype"); font-weight: 1 999; font-display: swap; } @font-face { font-family: "Mulish"; font-style: italic; src: url("../fonts/Mulish-Italic-VariableFont_wght.ttf") format("truetype"); font-weight: 1 999; font-display: swap; } gohugoio-hugo-6abdaca/docs/assets/css/components/helpers.css000066400000000000000000000007071507671574500245250ustar00rootroot00000000000000/* Helper class to limit a text block to two lines. */ .two-lines-ellipsis { display: block; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; } /* Helper class to limit a text block to three lines. */ .three-lines-ellipsis { display: block; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; } gohugoio-hugo-6abdaca/docs/assets/css/components/highlight.css000066400000000000000000000003301507671574500250220ustar00rootroot00000000000000.highlight { @apply bg-light dark:bg-dark rounded-none; } .highlight pre { @apply m-0 p-3 w-full h-full overflow-x-auto dark:border-black rounded-none; } .highlight pre code { @apply m-0 p-0 w-full h-full; } gohugoio-hugo-6abdaca/docs/assets/css/components/shortcodes.css000066400000000000000000000000471507671574500252350ustar00rootroot00000000000000.shortcode-code { .highlight { } } gohugoio-hugo-6abdaca/docs/assets/css/components/tableofcontents.css000066400000000000000000000003051507671574500262470ustar00rootroot00000000000000.tableofcontents { ul { @apply list-none; li { @apply mb-2; a { @apply text-primary; &:hover { @apply text-primary/60; } } } } } gohugoio-hugo-6abdaca/docs/assets/css/components/view-transitions.css000066400000000000000000000005331507671574500264050ustar00rootroot00000000000000/* Global slight fade */ ::view-transition-old(root), ::view-transition-new(root) { animation-duration: 200ms; } ::view-transition-old(qr), ::view-transition-new(qr) { animation-duration: 800ms; animation-delay: 250ms; } .view-transition-qr { view-transition-name: qr; } /* Turbo styles */ .turbo-progress-bar { visibility: hidden; } gohugoio-hugo-6abdaca/docs/assets/css/styles.css000066400000000000000000000063151507671574500222220ustar00rootroot00000000000000@import "tailwindcss"; @plugin "@tailwindcss/typography"; @variant dark (&:where(.dark, .dark *)); @import "components/all.css"; /* TailwindCSS ignores files in .gitignore, so make it explicit. */ @source "hugo_stats.json"; @theme { /* Breakpoints. */ --breakpoint-sm: 40rem; --breakpoint-md: 48rem; --breakpoint-lg: 68rem; /* Default 64rem; */ --breakpoint-xl: 80rem; --breakpoint-2xl: 96rem; /* Colors. */ --color-primary: var(--color-blue-600); --color-dark: #000; --color-light: var(--color-gray-50); --color-accent: var(--color-orange-500); --color-accent-light: var(--color-pink-500); --color-accent-dark: var(--color-green-500); /* https://www.tints.dev/blue/0594CB */ --color-blue-50: #e1f6fe; --color-blue-100: #c3edfe; --color-blue-200: #88dbfc; --color-blue-300: #4cc9fb; --color-blue-400: #15b9f9; --color-blue-500: #0594cb; --color-blue-600: #0477a4; --color-blue-700: #035677; --color-blue-800: #023a50; --color-blue-900: #011d28; --color-blue-950: #000e14; /* https://www.tints.dev/orange/EBB951 */ --color-orange-50: #fdf8ed; --color-orange-100: #fbf1da; --color-orange-200: #f7e4ba; --color-orange-300: #f3d596; --color-orange-400: #efc976; --color-orange-500: #ebb951; --color-orange-600: #e5a51a; --color-orange-700: #a97a13; --color-orange-800: #72520d; --color-orange-900: #372806; --color-orange-950: #1b1403; /* https://www.tints.dev/pink/FF4088 */ --color-pink-50: #ffebf2; --color-pink-100: #ffdbe9; --color-pink-200: #ffb3d0; --color-pink-300: #ff8fba; --color-pink-400: #ff66a1; --color-pink-500: #ff4088; --color-pink-600: #ff0062; --color-pink-700: #c2004a; --color-pink-800: #800031; --color-pink-900: #420019; --color-pink-950: #1f000c; /* https://www.tints.dev/green/33BA91 */ --color-green-50: #ebfaf5; --color-green-100: #d3f3e9; --color-green-200: #abe8d6; --color-green-300: #7fdcc0; --color-green-400: #53d0aa; --color-green-500: #33ba91; --color-green-600: #299474; --color-green-700: #1f7058; --color-green-800: #154c3b; --color-green-900: #0a241c; --color-green-950: #051410; /* Fonts. */ --font-sans: "Mulish", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } html { scroll-padding-top: 100px; } body { @apply antialiased font-sans text-black dark:text-gray-100; } .p-safe-area-x { padding-left: env(safe-area-inset-left); padding-right: env(safe-area-inset-right); } .p-safe-area-y { padding-top: env(safe-area-inset-top); padding-bottom: env(safe-area-inset-bottom); } .px-main { padding-left: max(env(safe-area-inset-left), 1rem); padding-right: max(env(safe-area-inset-right), 1rem); } @media screen(md) { .px-main { padding-left: max(env(safe-area-inset-left), 2rem); padding-right: max(env(safe-area-inset-right), 2rem); } } @media screen(lg) { .px-main { padding-left: max(env(safe-area-inset-left), 3rem); padding-right: max(env(safe-area-inset-right), 3rem); } } /* Algolia DocSearch */ .algolia-docsearch-suggestion--highlight { color: var(--color-primary); } /* Footnotes */ .footnote-backref, .footnote-ref { text-decoration: none; padding-left: .0625em; } gohugoio-hugo-6abdaca/docs/assets/images/000077500000000000000000000000001507671574500206355ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/images/examples/000077500000000000000000000000001507671574500224535ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/images/examples/landscape-exif-orientation-5.jpg000066400000000000000000001133571507671574500305450ustar00rootroot00000000000000JFIFHHbExifMM*JR(HHC    ! #'2*#%/%+;,/35888!*=A<6A2785C 5$$55555555555555555555555555555555555555555555555555X"J!1A"Qaq2#BR3$brCS%45TUd(!1A"2BQaq3R ?GAI淍h.Z͏R]C#F +_K<~<к^]4Fvjq$y+y[:$=s}Yq5_K*z,vkᢸ"E46Ofش-_/^5"궷%PWP3XeُѵF)A-3RZCojQH#sw]Knc ؎YF7NBJ0cV9T9N8WR}뫷~hJ!S߸VxwD 7kOtHudӱv?ǀKbgOzA)+Ԇ:[ 9-:' n+HB(@=G+kxYAFF{wcoS=6`+L#WQSfHk$B̊VY ;\6,7;*,fQ2=j{7= 53em1ܟZ|G BRBu)?}~xjbb i7EݎO  έi"ag~TـqWV‘wPɚ纫1+yN=j7Pbd݀?-73kGa]YXmjgIvwz0a΃:Єj:B{uS K00iŐ&@pjwQaqiB 0jI 'w`Yvޞu qSFb{ӲѠr8/&;V镗J=ulmnd_<`m"te̥9 VKΧo! l8) }1>:Qѩ;VRfEՀ9ܱ?ZI*";5 8U ӝa ]89;GϽs}!$3dѥ‰XVP#ͰC4 @n&VUnʼn'>] )U# zoU!p&[J E(#,3zPBc I۸x7Hl!sո9u (2wpYW *.q9-@7sI=]ܩ'5Bl~+HY /8a<, 덈ILj9cK5E' 4<,Ik*kbHrF_Rrl6&K+v^#0kuP.{[PFWg~ S5߅{y64`zSQMƦ'q3*jgR?e6*jɑQC):F 4]1(JBPj*sW&K -NXWI :_֫蟳?QUZjBۜ!ԫd&d8. OjHhz8 50hfA5☰د ENnbk>U,֠b>U3(|<ٸdlxzk#X~L׋>K-$Lc:q&_?⻌)FL9!\L0Wk؋)fi]:͟¹ίEh2.vߊj[Ҡg"NJ?s\{)*Njk9N|[?"j-򨿐 *lJC$Zxٗp/ fy|V{u T*D$AV$+$XoL =S?E|  9t(LJ?:$NK9X'{'?:qId,>şD1פlJUv\OVh :$3:zPdV Y.Ac? k\88HRN`6rK +5g2< ٮ$F}N?1:گa$\+(ɨ:F9t0ǀN?uw)57,vH9~ޑ`x ,Hգ'GjA QSn+>5olWIfX-0Ď湨F9`*Zl | !B.3p'*umP-i>3 Ht0ޛԘZ}!ʦ[$RQu\'Yګ)I#.g_6pFQN}Ҹ$ 9>Sʅs+(ie5o*CTWO?cSrum g+EC `UyvףA2/*c+y AtW`v t,=?:Ϟ52Ƃ^? H.d4_h*XbhLdPca;9ޤjARv`uz e*ڏJT PՌLa&*c֖`ca4`>!-jF]2.IPƲO;j\ʭ|Vd}Lnb4cnu })Z ,8,j_u%.IV.E` bx ^#Fv3+'\Cl\o]9mٿ#N/ƃ_ŕ\d}i>6o,٭r/A\Os#$k/, >q# Ӡ|$߱k)tA%#񮫫/ :rnJκ'RwRg՝p5#jʠxj1S]uN s:5s}U nablxNzRpkQqΙ+,=Qt8Wqkp"I?޸N#zlϘFږ=PcSc+ho J~n |Q|_K-[ć Jɇre0yuiS_&}kԢM#bN٨9ILdPCN͒N@8'F n&wXԀ=su+#N(UE3|%Bmh[i1BPJ>Q $2AE.*is4Bc<\{FxѼBG?62$ |T|E|.tMx5rAE"a0'*ݢ 'QO2-&󵴐|iԡFV:tK!ߥgΕ&>Z:]$0ӌf9T,=*Q&&'NQF`})i6DcbAكdj Dm$}YZMJH9lmKY\ K{Qe_@=9sMuچbĝ zM(dp:9A0TT[˂N&uA#lcq@!#A`vzYKU8R0tq5`mO[n7I$fnXʸ(\kf rt93AHf):C_sKu:_1 ܮHO7~J}§\nH"R11ݯ88`qӲS2 akt Ie=ȥOsz~6]ƒOzVYZE[Q iG>G-@N_KNcVxcڢ)"@O{,pv?Z:igsErAh4_ jgbA1\ *`4hX(NVUt$ojH$dy m;ר0jkHʑ)A},}+R29nkS5h7^{L)ڜ;cs phyE?ȩ=(;kB-sOajHh#MU98cS: J`;Swc0ޔx4/Nmޠ6||ջzTWݍ_[7dk=a|KIB_(<:kHdnW ILAǸ5ztßzf9z9g%@·#e$JA"YP! 0}Nb:OV:Ҿ.d OcUOɑQE(E[ QkyGWqeFG;=]q44xQa+ +-z *p<4GGp<8 `qL'ֽU@ڑ߷;qD9,*? d5q.?Z2OE6Fk[ql1%uM2K1?6ZFX vf6Qc) ul,9ʎ߉i#\ c5dH_zS -k{5.ޘ4tDC>:QbL86qʆTj--C^ƴiُ I=]^O&>3H~<]%*_ȁn 1D%n#2^#|:β2Q@ON?#*Ĭ{o;8Fa]ҚKwmt O`-_\fxƤImקZigOu\f:G΄[%9$UK.!4$Y@9gR$w.bȑGNxbQ>gr[0&),pߵjrrr7ްˆl|`,H9 4|q#RI_6 tcҋy;V|ѯ|N'`k$LH++{rJ?Dp5q<^eS5}R-Vs4Aψ26IJpk7>rDs*`5^)N}*{DPp m׮HTlڥ$Q`{ABB(mȠƢmjE3ll @1sNC[=Q(gz#B6YENf4-(i5:3.jT1&*1I><8*o<6}#yc)+j2"|Fv}<`oKH|{co ?@n WNdU d=_"]d_W½*`8ޢ&jUF*NGn;T>s5[Vgd/,hȸB+(rVMEvܓ+[X&tU03FE Ω6Q^|ͰZ>w*ue۵f~+ۮeTpi˭/"(Ԡ{?J4PXJyɖh81Gٜ~ *p9:&tkFSMQA[4̦22O~@*_ˆmR\4֘C,8\ Ys?cu$bHN3] ڤ )2l v1r.O_ruKXH\nsܚ#$sBV,m>c|~TѲH\+0 =urf7i4m>S*g@& U^H3g; )3_a. _@*xdǛ|c&m I$GM"Ȭ8N5J!]>P|L+DұQɤ`e{ ([* ۏΕAAv;X:P0ouQ.@'>6@YLw CV%*`;\JI:վԵ֡r C{oJPIgUEmL"ycpT$sƆ$;#Cg>gu^X<<<\[1*vVwsm%/s&ub=Hf]S}k( N:dR2*irFkX[Y#Υ%770i_%y$U!gIMcE1 %!#R53iض_|ם0w&y6Ո;Zmf|w}kÏPC"AAB^|N 5^nH83|$pܑ=!n!Ty7r̳\fXO54P }tpڀz?,vt5H+dP,2OLrQűבrlX882(?_j 'mwW|6##9Vgb6I68ݲ ہ^!J2[9gJϨkS[sZ<` XՅ0r)T;b[me<v >jD36aR7sO央;Wl{^̿{z㊹f*~*L.qk QvLP'4[>4$Lv"f"O|ӗG)զ&it#m4m3ի>"g鍃*''MPU^4W|Oe[G|V(wl*h$ |߉ߩukawƷ`{|8'&>H$OӫM"F-ЕROsFk仕cNHr9 xP$kĀr~УY^W!ƅҷG$rN9GqHQ>jmAOqe =>+'@injpN!55 u=\Y} UձT]J2fPS'ډuҥ̷PDjwo1 Zv#Li^(5$iދ"IATE)k{+O9 0u}~ҹ:dʈkxXaӜ`G99Qgoִ x=@n@Y*Yzg q6$KZ4Kd<{bFZ`rz\ {xذ㜒}(=tC1$lvVT[萭P 01 QvBL,+6Hђ'z:&g+ 4on:FS >P}gXbfq?mk8^f N4ëEIlD۲$(l֚ħ9IήR\M0LX: rzR˕T<OmJɍl!Ʃ:4F~,ֲ q=?JOeTDET!Q֨ҟg'O|mbϧ l.n]_*޿+}HϘa^h\*H{p 3eC#J}*IxPKy9U; !H 9j-s 1}_(4J0в$`?,N8QXc᳐<RG p3i9\W!Rq]tV^߼;4j =XƮ8SOL[@2F{msW:~& `v]n2G"lcv`6omw,2K&#M1M%{z* 9 F7ąmwTH]!hb);n$5 7RfDvW3caˆA>@G49CǓ8$(" QYtf"Q]ǹJ`Ԭ)##Nx'bHٍ(V%H줙 h27?3K]d֭` s\VG,my!cV = .!Wr_u+X e駆&8(ңOzh}t|>$nF)wȱ 3#dG!soZP KXN@< FABH܏s)w ;UץȟLaĝct)R0ZEkJ"#XKBհ8zqkZ~L:#T'$aZ6π7Y;۽oS$j˄Mnو75q[j0j`csD hs"]GGҒXf9[0*{ Ű`t{V,J*0bN~TT#G#zڑqǧzCQ:l'inZI\FKc|~ol6ܞbeٹ||Poѵș$c#$Ce)D {҅q878sU-+ "S+"rUɯ:1ih1rkԻ$ҍY Qg dsx׀WyF{WVkP8A昷aE(8K&]#e fl74;W|hwKB12*^aG18 KwL* JEV pxtzaⴉq`}6"_P#$|©]$5&JjD6I 1Yiޓ tOoZjHkrz0[ms)jzzy>a/˔*~k,@)8:7k[hZ?w/w7ӭ 'ҾCq'c5Y~XXp_'fI?tF8 ?vנ\JY|w 9-a@aLqެ9~Qca.2QfKK?,K*$#- ʏp? Ic'V/Յ ͺH{ j6I5__xs2  1ɤ:n:u\,H0Fj=c$9UAC= >)b W$='PRL nJ mj1F 0@iHbLxx'Jviq Źr#BF3nn+Abmi,% .ˑ4&α>IǎۊK+ԺVÞ}Fp:?((>!^DUO7p^ <)30 +0}*e ŕ[|QQHn;ԝH$M=dKmYsf+i(v۵ hXpAsY oUl~XK3  CkD F~U+<[O,1R.>p)qws~hՓr^Fc_aoֹnq. 輜Qюɜ{{(-rh]<;XfLGAS z~F!v{u#c_ 8JH.RDzLA FRpN6\N7'j2+B PHPr}}16BfwQI1NI:[IϮ[>aoN~gdbjX'NS9ՠpscѝ@;Y?ӺUP5ŗLHwRGliofi/Ty-dz=ŏI5}> 6rA=?a Z]fA:Z-S91۶~cimc=nrO$֭_NI]T|Kwvdh:t@bHČ6r~@QݠRFQlOPN.\Zm&(ps=)8u#ѭnm~ ^m{lY(Y'I +Ix\I$mOҽF$l zDϨVݫZWynkWn .PұN؀)LKgބeo5xV>Ml;U= 1&ڰB'e|تR/uY9#*F*L‘Pڨ鏉y4u(2[[QCg)zu7;rIl)kf qq.A1#wPU`z =}GlsG%{Ư߼]OW_Fd;rDW[_=8F5[ =+'0i"Am`Fm]HtZ͏|٥e (Myg18.$I\1.G:DiuHIltLb`ʸ;>c?z7DY%mj,.$IQz, 9팜S^L(zC'?L) ! K>/:ZdB2AWOMQ gS7rqr+Iy%@ln07uR_D [ա^ޙ"mZ,H]Ҋbf}}JbM2Y~#)Ǧh;FBkVFԴ[ ƈWNr'}(qI/))Pܢ+0;=o/n~qdcGp{ʨ^ wqܳevԕ{zGJ>nemYr\#n|سKjiYWHe:ؒqTHS1}q!8>]+]c A*;H֡MY.?G-Z8 g1QsI[&#ld B9=OF46V{O[Cp,m1*#Wv8'_If%&N޲X8x, 9Ɠ*ZXf ܞ5)f*>٪vqA_K f flm @&]ƽPT`|^`S:I@_ 4T ݕ7٢՟ڔix&-^0w1ڐ̢(H{ 7XY&%EaQ:ҁqp9WJἊU*@_XԮ3# vݿRic =&IU@E*}h.J*gr"YyU8 F19<@ػ`{פc( ǔdy{ N$xPcޘBlFzK {2WQQpTl x_;µ#--\]E5[*uG~1CR..Tw!cZ:Gt_3M by'n>,6%K/1_Jğ|Cr$w"i} U|לlbè_Gwc4Qo2z ZsΡi-pDFǂ=1>^GLyuAnZ@OӑA럵?X(q$ |~fH5=&=•f`\d$@ 9FfbYIP@<Ylny!{f[f6M6|k[ug_S4 j~CrԲj*I{0}m-qLLZ^ԁj]jE]ެvzpլDgz~!94ɋ+R 3THn*2t.&RVAL&NHXs9g-&f\'Wi :ⵘ擲)4įm>Ձƙ \Ɇ/+N{Q0!*IO"̻\?MB)$_H:2:a7 +֘hk$iOֺ xf"k=l7uBR €Okw! ujڮuk]rsJK!cܨ(qy=(c-G)hne"j砸{wLĪՋstv4;w5&4ac`W!WC\ V%7F٧:u6[-ԳZ;)\LJ7GSv%d`2|ͶW'NjzݟNH 8fW}ruJˈ><:wFkMap}}H<eQaE݈o i;g>goj[dUsַ7_ؙ_IA%u,C*Ă_L; 2]ѳ^^ة$gzgL\rD.@=tK*F1u ]1Dl|gsډ |fдh- AEi5iP.F֯ 'bë'BZy$ [r@ܓVI?lG`= tY>&Jo|nq$7pm:6@Qst޷yM&| SAZسuuB =@M}(nʓԥXr9ѷ;׭WVQ^hnXxlNϹ}j9xY]P-bqGyՏJn4E+)+LLz}3TzejL\qi+-)#ֹ>1 Xre;T=¬ q?0Aiݗp*B;XD6# GГS幂^vcpXCsI~a5!T Q=g\zfTF$8UK˘ᐦ@U;O&Mp 6ޖChT ђ3[R6#FNQcFfxk}9 ut&m[_R}H&,6NӮB?.I%D.scg}!# Vx#<»#c\֝> ũ\T-tE"y ʀs)V0ˉU%&Wצ^OU s^_otyf1weEsleK}uh"ˤzIEfӀFv!Y8]"zgYdxp1X͢-{t\)teSL{3F;J |-7_kIHQ Xؐv>:c*)"#j坰O:G+'[;Txl,8;{Wz?ZtGH+u0ǃA|{x! &]gjuؒF> A޹(b˱wVi2L䍕ҁ1ƒx񡣹YPckYJDI#RF%IJn>H4A cK: Ņ9{Kt2\3JB\1A1iT,2AD񋲪oe(PAn%@ 3B)cA]S;MPccմp-&(9V LBQ:\1?qrMA{S PaEsq#<פ[; eA ,|ڵF4(#?nl4KhRrz`t m cNʈ7ɧ9+Xx[3qNX.故+RIƐ8ZWJJwt2c:YrjЗY 6$Ju/5: d+~FXf1#ѡliZ+u>\wC1)΁ERx9F՘$$6&zWǭJty[W"zxmĸ|)Dnu:p/2xں.qzg=姆Á|`7~u/[$],Rh/&^F,4u탎txVs6kɭzCDsІbͳ[naҕލu AQ=G<?&ȎᎨ?xW$ky%bH,IIp!$#WYA]4$˪'bJO!݈rOʫ_Ӧny* 6?|Kq?ލz{*v*$)̒ݽ=RLNJmAڨqM8Sn5r)v`"7E 60d$ wz~<?ZlbO(6{kv_֖&(Ea!u4MQ9{êcKL}>[…zִ`:S^Ҧg;²3 +_HƬsU>%s(1[+~TiQp|2d 8T}7ŹąܻqJTqfG[+s+)!zxo١>hC7qPHVl5̦YepIe]+s)"+` & c&mdn-ȞS>]%ّdIer+g?:|EÛg*֢F9waI}OΪ%k7P+Rx;*?Fߵn "UɊIarWY@`^?ץ۫v||yHP It!t 1;wfdP\>;EyTp@Q2I…F9ޏ\]ua<3b0 1LxWÎ5|nq.&7} M;TiC [3Z)DsυK1;*uE[u 0Ͼ3ژh`0 w?Lsby=E,G'ѣ5њ7UJ޸uD(1ҭHSiwP~E&L#(w*J6}⅏B( ֬/F\bCh䍎!OUf7h/0(%`(zç]uk[s(R#:F?k?ýNY-3xV>bW;LW=n}КkYi%N2?!WIƝJG=Bm~n o/؏=+ =a@]ms_.?p?d|Q_>z}s [uk>KNH X-CƐNnmSHYWk>eY ݥG@ܕc\|m1KhfiRp=5X5aw>kF(3Ca^0XFuhQ:lMVEi (;YOZ3X(4Ζ; {%j2㜒TƔqc8V'e+jYBZF5 %jI˦'OMޗuKH5M( T1ǭ9kvB:aom6#a@]'52y Pg|:[B҂7θd`14u>6{g|Wt0 ;*D|Ǯh7&``'ӱڍ!75xқ(>i$)L(!9ǔ {RzNͺy&N)n!PK6'ӚAh,ԇHqJ+_4''W1t˒ + tM1jb<͜HǦߥKP.j3q r]@>V0xز[Xc=p4QK" :<:T6wtA-VvO rB-˞p=koztq%džH ZCZ&;K 1Znsg7}VhxF?xw`^4'=vҏOc??ֻo+ay7J}1IvO_mX{;KaI]%qz xd#H,335Z:v}K⿂cg",2Gf#Y\ oMS㮧.JI5پ>G:T8kb|"bBd|i"}'t?:dO2XΕU^<(It"&ʆA9⾣*w3$vy-Μ <⏈$4q3cPg r탌Mh=u9QcL)wv&:Ou2tQޝc됕Oa^YF΄4` o5MfK+ y@amGE1+Ÿ,wÖVd}I5ǣKmR687Vz?~=A?*S20deXdM/مX,w➂uҠm\mvc޹]Ǒ>e`6=8,9:@ \bBؙ*2!>lWD3^;Pcڌ⺴Þ$dyVwVN:nnnw+S j; K&qYAWwZ;_ʧ*.ؐH&=TkS)]b\J9;y B=7$pFˬgRU9Rȷ5 5fZt[ LwUDsU.*'#0g*(Be\`'4 2 [LlRV6@R t#Ou_cW-Oʓ&$xw&G#kI'&Ey>(g4k%X *}kb X Ly&n4 bV2/d':B;&m0Xmlr[[Wc`Q6ڷQ43[qPu\cP5B KdTlT:eGK |)`e]O*øȬqOD1CTBm@aKkCc*E~)}Q^R\7ߚEϩΓ^_zwIV?|9`Op~$ K"^0Vt?&+CiIuK'W?9knI#r,ɽSt-֞yTkd 4LBt8E>{ש[;f۵ D"JЉaXVaBǿ;6)hFN)$*ML%\aӃt F <ڏMq߸U(,[b1縲[[Sq&Kf>lzzЯfvf$#RNdOo5i־%" 8h/'rO\\E1|crN|6&u/Xܑk3țcqPj,9%뿶jdb#uf]4䟽!5Ӑ5g$sBΣ=]e{l6GyV|ܝVnm#)AQP  HԬ)hӼk˸Fvbn$8uYmP:5)&!߀;Wa xDDv|Z4 spNJNI+[G縖DH5Yv}ITDa<9d/9W]$TO+JD2wc9/#FU@ ;)> c%~CJHPr*UFojta`饉ƏJnY Ldg` ~ArI؜2F!4;E2 UtإXޛgc#AS<6ۗوR-ҍ}}!wǡ@cڸt2)Y D~=h5<s~5*ds33+1*J*a1dTUVV qEp.TQ\M:2O p)Ym\Պ )vw4lGmGF< ֚T!$c#mdN<&5ƙ x h/hGc{zPcm)SQx@g|Sq! (<5׊eTN!VR*ǵ2BOx'P8#Ի[#|֎AbF ۽sqƨ2}E8۽b(ۂj184Y6zܶ6W:wOԠc޺+k8i&&1rϧSIĆ9B49g qpIo痥uG_կrI:Om󜊆g/5-&)O!]ėL/E(i ⋤z7D?W,?/,{`UNtK5ԶֶƱvUv-~T(ڶʓ% ڽYm רgdzAc]lZlVL'oN3杀oSH1OAq)ȸHCd*Jڨm΂F"A`fL%MrZAsSg_7XRF gYTt&A]7N*ZL>%lp8Նy/ҬOn 㿵gŲJoj<c.֤e}J۸5+R D2AȦl Ҏ Oa\oX^$2J cwfQ 5FHucoZyҤW!&kW!5Փ)E眶MyX |2Ab}9N4# x$D$+JcO+*i\y]m<)/ g}M 7`3i;{Ah`qnOӵ#$T p{`᳚xsI(џ  >2bk6p䡟IPOx&|5ty_tmz{ĵHCIoIjמ dXS.R.F{}HJb!jrrDq 2j¨mzzhƉaqdmϥ&"^˟DT$˿>kJ@14G]['Q=݁` 2d}#Ybueo Fl?:N솵1gP;ʘJ6Wc31T ^)9˅ QzNy3[\>Zr?> B7)xBY 3Dgw]]k} Š~c,cP8&)cq ]nuyLo(oڰeu*01F@AeXK,`2{V`w-ЄLsFq:J.Fck`^5Ub2wc#JpeUp0TE 4' ɡDqAlO4u>QiЌn#4Œ䏭O14-A\ұ)RGcHMU+YZiy/,p2{nt|ִ<:OP:nMGqK5բ[75Ѓ1zިzTR ⛋xaLĻy:hҊW`)Q\S_1LviĒlѲ\05XF5lQW l\䉩Mws. '| Pp/$}v e5ۏTI`djE)rX [CnѦ+ĩ49 K":LIy!TrA^,LgFtF];jI;ID 9\jc Y!}9p+96 H&XJ8X]3oP/nn. [) v)vӤNNyAsډy1ίsG5KB (s_AEgw` $lɡHչq!}҈68hL<<'-SKa-X 5R#x>Plк2~ P܅!FQk( $*)6l qũuI>niܜrw 2D!N[kv O#~65JGm $d@  0$N<%4Ę`cEL[#Ng6/sQ7'2v=l}i*bM<)Bj]qg:ޝS #85Dɴ5ڛ|Fj@tޙ'PڰНNՉ҆KUaN6-N+%$E=+P E-sMҢutJخj䬱gܙ$rNjxSl|$O Ҧ.04rsI\ >uEdzwJcfS2E6nPG'^W[[ĝ!C$d`cP=yɮ:A1_aFlՁK PLdo(vO:+\ۂb1hmk- #*u{ -W}9--m54ao)Œ34.. RdlLd @ Цd NaF1޴d&w7n?/SJ= X&bO(]EAo~#x"0E r57M!mnn!vCjZGVX,1ˆ畲cӸ\mҶΤLb% "6yHg%qW:gHO \9$D'zu#3,Z]Z>RA$g%={m`,{N5iYeQS0lZ5ߟ^TږkNJƎVX~h 9dB(}#Xmz8&ԏ"33g$ dQz@8{Pce-+D3gg6U-X#YpWoBK l;m>i@zPlYbcV-3JF)0$0#r`(0 M`hBPqq5{iH @7֥u;%FQAzP(8N0M/ ԡS|'ҔHFv[21;ƞ:Qv (#8f:iq'9Ռ=j͵Ȟr d0n4C9oz$y0Nֱ sZ"4q)RdZ I!C`i8SC5ZwVQ)U82+Δ>D#cҝLF*I,Qϭ?@-ɪ9=٧"oҐ &jb|&sGP=iX4}[lqN7OXշ5sN-+E52E!(PdWKfQ\O8 WIdv9Rviڇ⍍+4 OKK4>u'PUIW ߰Dڴ@{I[-qW:f<5tbId$׫I~?zGb3KZ6.\PTDXy^3Raӆ⥓q!ƘܭvVj`)PQk%p)X&Z;m>T9EjX;ѠXkeqo)BHTx3S~ͭn*YѴ庌krE@pثa+^ԢFT/@q"޹O:Y8Sl$v`6^oY qtD]ZӬFeU|+tגmJRq'Q{r)3T%ͺk·U,J&7%FV,FF*W"{ko ?ҊiIӌgbkXW&g H#|jL f8啈\^yl@BҝE\q3[+{$?P;x5D1&H ;҆/kj4$zsT:hʶ~RXZXtV:diotp)i/y-ՏZL#m:w[+ szcs&ܖo)I5*5vV9<ĺ\ՙvufQEXy+C{RO,>,ڼr&$XAΠr*V{8ـ,<~)Q ¸Da(r;v =ڶ[I*J9d/ d8w55!Pg}kĴ Pz40ːv#;g癠Gb9NNe/8}K\p=N3TdOdhG6 H{-u:@PlAK] g/O[{}%H,jRKfP@KdLb0+uo;&1$ &spt \y(h #$=ea_ lgʱZ ,M+[(yVCuc]/h[ 3om&$'jC'$ (`Ũo*c=~0~7`L7n"`nr1ڍ .AaJI:ƶtN2ADFi;б'4϶({V&UP3QCT*猚oi+ ~T!w4X)n<jmwZ6)2v`v8KkxU;~xb9;VWpA1tS TG7lYg"ҕF/'z;]2Jp sbH#?[J:ƲG53ez!_ D}7WyoI΅|zv5-gsKɽ0+b"ނyMQa!9a`qP85jG' ,֘wE9ެRѭIeq@|<榞hEVGҖtIxd3ByS"LTfY rqTo+=ׇL`kfl jzv5xƈ7f 94 FIJR6}*~q1\zE|gu,8ң"WXRD) 3ڔidD-!GAFiK[w@%[y30.Vi ª25!\hp?J%ıF=I5'<U-!;c)E,A>cΥv=zm$I I',Oޠi昵Yfc ?Z#K Qit`wa u'XkUI~1Os27.i{j2ƌoJ $(;Q,H.'#cR@'LZ$F>aۚq8Qϔ g Ʋ]oǝ>晸H-)U .rvrEFVH'O?QDYyW>Tz0CiJnoz- a8(53}RKP|[a8Uң\O4uGjƠ: <ɒC2HrW+He[fg#Te;I9r]{`#fY=b),"Qi6FWx4Dr2Y4aTqލ"IDѹFdS@6UtfE$iAvⴳGK 1`Vb큶jtsrHIr@ tFyIa-ðiρ9X߱<x,x* DĎ6Xg@jݯE "|P>L}Wr WCc_7wSէh9[FϚF|ئ`DoǢxhnQ|}7#ĊĜϠ㾤^Axs=p?:nzdH<V,mĪ<O1',;"bGXm>b_ůr,|OcS ,H]fӜփ9!dk''ǕG՛x1/D@9 ?Eh336rFiL.qrI,6vu P95nWdH31.m]ſ26ƜU/`NJy)] qTnIF޾ku8%j=&jPRg~yޯtC0G} eK8@: )6"1ڋ{zl*) Q*Fڅ0(xnjkcGE/j!<Yw;ǏkuC]GXojuݩVcRE`mc4ˀޜ')ZV5Gj:iHCMrjt [`rb3ɹ(9iHEFѩ ` =pK."F'}Ay4稵Qf)$ڤhA2{XmKxQEM]3}o& -'YLSH;nwl d#X4Y4ᴼy#eT&8U8z5GPLH ?f^ B 㿧:S[̱E&D=Pa k5y$u9T# #08L9C~hRBJE8cqB$yvMM☞ ` 'qDդ'llG =ܬ2L |Ȯ8Ԙt6VsFm q I:Ha#[@%cڸ[(.@2؞j.nvUP)>^{s=azs?smљ%d!XP*i[M$,EQ#HF˜q,4t1bhㅙuq_ l ]01>{ R8~Xz 9P0q֕4u7DŽu&hB$)cG׽ow,LƏաca3J$0]*ݺ 8!PGYE4I~5"4 0UsH|Y)k+E4O #eg֯tn(cm#Q#&1ITqGکĬA>)cpG*#Fk?X.v#a=Vj4FUXG#V u Y$Ir]*rpz* C V qu!\Vj\Y[$coji[b@0+Q@2v Ba3-״E#٥5@ǁD[Bk}D׆iճz"ڨQ&4ڷ һ4"{QR֙(`D(LVzl:El4OC}St3]LCx}ޱsYGx<\gl&EkҾ%{]73֦Mڍ a gh.tlIrT@RZ(rwjd2J^L&ReQXVM~a6D٪}Ul$T[aK=!Š'l%(2ycMF1Mz?μxSZz+@'mk{tf*+2W79PEr;2JW*W]MG1WOӿfZbS'\>j#!>UQκ.n7!:Ŏd c&AgmjDTXs揟&2+(Rr6nMx#v<We&ftKar)t”2Y'YAކtV=SxX^hncC+au l$rk_Zb5iW=(h& k=:(4E8q[kak:fRVCf͵jc9<$Ӥ+bIsRo&0j9qHșu"vs7LA52YuIбF>rkԴ^U#Aj;PVIj]0PfFNji2p|}.ڜQ!n.iv̕Hкu!*`Rcjp{KDkBd“TM'rJ$&kxc9ǭnˇ]L?t: ez"j6ChZ# i;.vߚ㷎h%S+,Zc,P9MmypY:5 eo) O4b{}+ɜݳՄU#%P`xXO3V:\BZ*9IpL2JdicN|v?=2$g[b}w*NƤ:2#6'P-{pmze .. Ըz 8#<%aRaXIIfu44N$fkybn;|OnZX*s(^CRFjߡ^H^b%Ou·,S__L`(Mu((?5o(_M~ jRB8J85,$A1qMty3US&T1Xb?O[l_Gm.U.Cco9sϾ+Z[yE'*VE)3}74.vEuVĪc/4l(-94\@Wƣ+f bcI5)9C%z0ֶ] ,ku+ ,&Z" V83s(l:E{URfbk]dP,pΣhn<;ׂxÛ [5ȏ<4f kB}h-XXxG6"xUu sYw ^]gPV|!G+^ ]abQW 8V0hqX(6cuhh+]XEx%mޘqÚп5n¶j5(ER$-/CgjN$+a5gz9ZsY2Uz:z5G#Q8! wީuμv7ONƍwPzDZ?gohugoio-hugo-6abdaca/docs/assets/images/examples/mask.png000066400000000000000000004141031507671574500241170ustar00rootroot00000000000000PNG  IHDR,RUsBIT|d pHYs  ZtEXtSoftwareAdobe Fireworks CS5q6tEXtCreation Time01/15/25H[ prVWx[ pTdI&_c~&$$A yh BK!N!K_c@Ѡ EM- 3mqU ,;m!qD{߻gCBoO=Yv9o;/_ʕ+Ǐ߲eK{{̙3N2~z)vyE<wz-89ğGo}hZ}Į5XnD6z-\c|OA]a:MC3o zA6Zx3$k?2{޷:Md| ͓c^ >llv"VI]O|X`xѾ0R+x ' az|WA}ap4='},lhd|o-u:7#]cOgNNVF@Cq6YMkd kPhS!;`;rlIp)QZSsb jj1s=E+3 jg >'kIQ &M/]jx~MB=R8g$=6$EZNr ɝiT w7@# >g'-t(3_+)RͿ4.ʈ|,mًO5ݮ_?.h$Zw}(O;)jaqf| MnAq7aN? M5_1{oB+:*QsabH*wذc7V//: -P_eRW~5<F9h?l 3 ~2Zs *~ "S;w= _D3Og❻xYk87 x2BoX}/GMOALm|ohqcUÁ/RLeϿ?tοaM{h1oF~!_:lH.]JBIup;AOU4 m QR˿pc᳹Hqa2-`m5Tx?) >|W\{?T=qNo7֜}?LF$DO } 05(dm2>˿:cBC xE+nPq8LAC'I{h sF߼M=+9^& ;^"Ŀu6W_՞#!(M(L侫^_sE;X D/ 8F=њˍ(Cx>e@x.ʧuFbwɀr;8׃\4/}/7OރvU46Ζ`cлFvq&i"$-v^`kCFy i5 ^;~ ;^D29!Ip8!D+c!lX@oSIP,icD OXcx$qqG=fA8 .>@.!> pЙJIIMMIq%;!A#bx.1ɕ9-+;;kZfz+)w` kHI)iٹnwaAuS`B\~ai9yҲҒ"w~Nf+Q͊GpNWzV{zY即f̮l;/;#ɡ1(jD=.SPTVU]멟0ꪲq]HHteT̪ol^e9*J sј=n’ƻ.kXuƺœ G0`xJcՏ>ڵjeG[KShLvZvMAS2*jꛗwv߰a}oOWg5yR=KJqͪkZu}w>зU+4*QN: H\yӫj[ٲgp;|e`ÚU-sfNϟB0tˑLvUֽx#YmA}u;; %x'%U6.ZeGN:swOuu,n,.=sCA~in]ӷ/Νs+}=o$?i0Ĕi.[;0xٯͅ??qxp`#20 RUX6{ޢ—[;Zܝ*Y"Jj 96t+WFܽ᱇Tg3vISHmkBF)39mkTSx}wF>63#};dp%G%M(CP$bee<߷FHװ64W_WUW'?wo/^O.F4RP8cwa/\+VrGGǓpa m㧎k9v4/^.:F͢;BNjZjQԂ?afڞ6y4Mt}h5wnraGx9P]*y|wDߺCVLE_`@;ҷSA N c79ac>[G3?32340YaaUYAf\#$\Bz1B{e1DǸ[IYSdh=cc\]hX}DZJ0,C۝e3|R|\;2c&Cd !!dGW&Uσ` ;cx#럠o2=Lit84e2(iiv{ o>s@wRJ?hJ4x5ʴo趺%dW[K51]yntnߒA dW U;Kv@TҭC3j\S8!"NTwT^⎺j)ujftnWnwP=c JtڒIFG]f1oeus( h 'iSMϕe1A}[ 2cfcnh:>Hͷ #g(FN'*sl52DlkC0\ԁƌsm|2N|0rV1դh:r`y :a5yej 3U|kF.Š*tBNIE,SVbhXWfP8ƌj0V|Kb$.CP$-.6CFg8%8::txÑײd{R`YO)'A%ŕVK8POoh>,G6,W>u7pUHN"lAX1\Us%J} M/ۊ!&Џ/=Rqn`\o00\c^ICΠ4:FgyT!>S_}\o~r֢#^ox:Q`rLg0 &_iݤ rBN\b1 g^eAW:pˠr#Q 4!bV#-"iCM9CVIF;Ů:TGcMQBJ|Iwgi>$J$w^χ3ιWȒ t,1 ַ329Vn[f]&'7 &Kr-+$Bm9ҨdaqL>Fj1ƒ‰K1|#Fᑝs| b$dj&&50ڌLjeW ؀cP!L1Ic:(Dn#[JK!yׂX>aaOE%!PT"M8L>f_k`2*?oǑ#ˬȷ۲+38FB˙u cT[i⡽Зr84C~2O8܏s#e6E Po̩GPIa+#ȗ%eW>~5l P}{ -43\:qݮta[_ttM;CnK,001~[#+A*8I鵲$ӟπnPg:,h'_ȢIAiBZFۋjbC&ZӒJ$9dbbc|u6HJZjFSEŜ%}}JK5gD=׃Sr1Z_* *W69CR[w_^ 1) kc3 [Y z4j*V,a\ dŻouЄ±IrwRuZ)MR=խkjQϗPJ|n3 1װ^gEx.R`[kT9*yѥ(0Q!HsZs= ԟfWHokWYGSť&N@PE(Zt#6Fi7 C2s(GL9T[z$ 3\` B8`P4{֪sFYWZ!;Qt^݋x}K>N3gW='O3JkZ(_H<+OX4x oTg^˖Fv`% ; *ӷ}bn% \sR ;nv+TC)7PS84bqlm ˭z$?+K$uiWD ):30EZ/.Ci Rg"1`Ů1rWz+ BڊtJbCL1&dS֥&5)}jM2Y8[3ש)1<@O{ǰ}8— 2/YI2!ew _X|'袌qmt 9yJYM|Ոo=@<4FQ~4y: g ݸ_8ig'LMc%Vh7\g2A\mt%`zy:kQa4]ASM1byդ09ڈ ƩA ̈́n,E'^5Lhn# 퀿w"IU|iDa"4"]AH41 B\}P޻& ډB9l'Gd>9fLtFtkxP<7% &9ڼ(;؎L;/9C&0ӰDZ6͵'=1/G>~j4x˾v73߬7;mpHAU9Z ?-8+-dEtQciQۉe?t#{_ؐ[$w/CWҍ)&^Q^ })2e!!p8{#).otψ?bEx,!,}nr8px Q2$'@b7> ̹R><~nF Hs&6B@o8bn/'`,S8~Ix^q<̷gH*W@ ie:Pd'-K)JyG,;2k ?_4=Ss7B7Xq۸]ږH=8=#\!}#h' cޕG9]?ʠuBo;Zu4-7W Gtsf> 8"  Hk?Z3=Z7#Tgɟ:ꢟV޺0ߢSMљ鵚AF~QJ/[;ofg>hS' r5zvfw}bXے>KwBٗ;ҝHOu5tQ}gfVg@:>2x 5ٺKFvv֟y`.-a-yLd5ֳܰӰs_;LZ\V%v6n8ٿ6VuV CU nzha诂w64x G7m7pWŠ=uؒvn5 0!V`vϙwIv>v6̻.vt] ;7w ;7\ەypvM] gq}f5 0ty0tU>2nɼka2̻n2n8}w C7 d5 0k8d+Rnh^M8h6͠pV9Zђbf\mޅ9H8 Pzfmm{Ƶ-yLFh/͘nоڒ=店vkF=1{4.;FY]nZR\)N[Y_-ZpK0ڬ-h膣 22ca6=άj޼V|zpf gC}alo\]b>d<8|\5{F-k?_N=C4_zo@'^l{uđvN#M,'c!Gw3;uBznƪ Y1*?~f6c%6N{W"德L& Pz(9.%qdh,Ͳ | 8᱗3ӽoko6s{Ӡh!G.[n8Z89ѢO/p׫ầU֭ndSMdg)ift@6F\Eq@rF;$Mp hCׄ˜F4RgҕV՝בQ#댜T?+P5Eȕ%߯*{-׿+3 ;?(fˍ?K1K K7,ݰt_T"{EWguگa=iAi@BbѤވ#-ާ$yv>6ϡ{By\;>yIs?D82lm/g7rc8{hO$?kW>^wݻIw'׀f1_}=jԟ&)ً6ߖb+6+(uտ&fD>*k~(U#cy=ݸ]|zfPpHt-ءQ6ozSʸث>{ɑ ZE'9Sbm!m?Z?&rš~&>~41sUYWX=[eB5 Ý&a↉o_pqKoޒ<\'kTԍGBꐷԢ$c%o g$:Zz%,RM<։{G"jaIo !N\rbe] )lxC:LdY ߕΛ Z3l?rOs>06d|uK7'XKsXu2`,O&>IsBvy+6++}![^e6#(ORcqm[h{wIFe]H rhSTECf$򈰟SV2"WqMFcobE[Ug"{wNg䳆5ʜɂiSLnt\D+xR~zt_s?Yt{E/o_٧ه7_QM{OmqlУ%šQ f=9\̡-;z7\PQݟ,j xBŠKuc2|?K. NTkr ]Slό˅y0N WSlSqhG4H0fq_'oǑ0%;/)th" Hh zGTxԲѰ'I_6c_X1X:>/7KG)6⾡wEC$N𴃞soCMH&PDHHPIŀ^P'cE.> h}N!+ VR8@ή4yiQypz}ꕓ/X\Q{Nuz]Һ^w[f1L…MFlc|tFԻ ShiOɉi> {0$FCV`<ͤT ^*FMZ7NcM1xRGC&W +˟qtn{/p)>َWpHxTGH xϸ`/Y(O%ŷ:86C:QtxـR;+3fzs;S uѱC#c>ۮ V c}B2I!51>+*EZNs{}tғ![$QL+Jf=/̈] r8 s :γ`n`s 栀yf,: YDHm|Q 5 UXn'AgM1A-WRjl2=3 FCiNP-AP;T)G3[/^ jR`Ve7t[mn ID2+\ӭ K˘ƮCg :7`oɠˆKsE٪) 1t+ Z,-"NȦ)׭AT͌wgrmVӖTL2:2<5yx.c#G1^,}>[Izqts%xӬBL"vP_Y3عzπġ>#dS #g(FN'*sl52DlkC0\ԁƌsm|2N|0rV1դh:r`y :a5yej 3]QCܩouEX1Q#.R)ej1Z ʌqcJ]ǘQ ֊cIe(vdPEf(2S GGGat8\Z\ZvlO L0:)hӋ+ie5Yԙq:C}X9N4lY}oԑʝ^E؂pbJcs_"NpP_,N֭{l.0\c^ICΠ4:FgyT!>S_}\o~r֢#SPn G Fla09 &3|?kdQ(_{<4_c:μdtkw9YA25Fʱ;+TءHaKHzƐe~SΐUvFŪqNbbEoGbԺ}`ҝYڮO"IhR$ɝas'q4 qL- ]&'7 &Kr-+$Bm9ҨdaqL>Fj1ƒ‰K1|35b'JFۋjbC&ZӒJ$9dbbc|u6HJZjFSEŜ%}}JK5gD=׃Sr1Z_* *W69CR[w_Ntp.U0le1k@RҨaSX5B ir5ҢA &IKi4IWoXM汯"M#^lb̾vܾƍXp$ zTT% DvƹWǻ. CU2Z*LWtxtÓ::-)"D̑w7E̙Kbo7UΪO|[,,|폡Ѻ6P))s uWg+ ֱ%fN']E2 L1גfWHokWYGSť&N@PE(Zt#6Fi7 @RĔLG2cƘ(dc {CNak:`T}U?)P˼#a:Meнܷ4zp}գ|&5)}jM2Y8[3ש)1<-/%/@‹!/YI2!65< _X|'袌qm;/ϺJKYM|Ոo=w_ i,*U uV7]Aq 4pN<K&@ nFl'3u+Yr M/Rl! &5IiFdn7N<"_Mhm&v#56`k"?/ؿ\&4 B{…vE;^~yŤqj"0v ҇\]І !>(]M\WЈkqN!Z#?YMt3&Y#5F_4:pyK_Mhs&y#5|Q2w;>v^rl5LaacmwI"ohjO 푏/9Z# =ƲoofYovۄ hs@4Hy[ζTbVU'GimLGm'>:C9[<ЍS|aCnU^]I7^zEy-wAvXGM2MB8=ؑϔx7gğKi1N "vtt}j >sW7gw8=߉dmU:meHeO6n|s|y8<ӄ{. <(UoBO+Lծ%^" ǖ VՌdsuWGP=ĵZ\Tqxb[:N^@mͿg}xAw5Bn@>C4iɗux 1Ua[۾%cGN4%VԵlԙZSV+g5 nUU߳6|Qpz9bwSFNT)֫3OSb vce7u˕y;]pkp~vɩܢJ,ߒއ9h̵vr2;tl4CucO}NnWGr[+ 7.?!+vL9jsuˉ|zC}(բTҿW#qӵ/;&WnŊo_?n#םjŞIkə_xZkʻ(':ݦ-g~u~_¾649T oo${IHLqOjAҙ~3OjGuO+o݋XOWo)Z͏P#??73d )ȓW֛6+듔Dg:ޖtY Ľ̾$?GɐtD2.sO0R*?&Oz e*O]([k_G3̥%ּ?Q]w8;J[ Co=C[ C7 U0n5膣톣*8Z8ƴv~vvvn`g=uؒvn5 0Ws1V4 g7m6pWªNqv Co=C C7 s]Ңf&a篃3a膡̻.cͼk8&膣86yװsM] ;WqG] C7w C7 ]ەypvM] gW#a膡̻~ \R}%~"c]36֢{07a"k/v|7sl]nԤ%O,@‘X)}Fk래ѵZ֒b?ۡkt -.SҶ\.[q}ØSӸAR-kT.-jI.[tsyƦ;mQ#g~ h/g6O;j͆8ˌ<=:۔߶Y,mѲ'L<-d4pĀ]Ő|Chc`\?_4ޮ3ZxUƐFE;gCnJ6D'bUMQ{Kܒ4ܳ|̒{͗u F=[=jx>֛h8+f!q*G,}bp.^(*<~QomN'gwE+?uW~Z 6و>:zgbӹ"(b=(Y!g.Aκ!$ N_}ںHt%ޏu8,.=W}㰽I6!,~MUolWp&Js^%h,~sF86T99Gp[/J4Ҿoӫ66g{L %?Rnްbl9w^'*aQ J4Q&*D%>*-c>~ν{qn ~yy;q5|=WPOsCsYCjKe}sXvĦ"{C?d!ͫ$:=1;_] 8)xG|'Ԧ2Tw^wvD>%5xl_ގu,s=̭IJqɅpEcO3✚?H)a&|xyIi4J-]BC4P抢}R _w%wNKx_]!,5a5 #' em-a\lҵ]]rHw 3Ilbz~M>Y9ʑoY-f|A[ _5\4WaoőUFc\7%.@hLєx #bhoBCuByfU?yTW>^ݻw'n#0/y,?UR8woI b ,"ݡ^["ot$ yO+ ؑ8y,x&y&/y)H++bm'Ǽ@4L}y#u_O37#l@5Ȕg^XA:[cFl6i?&\_]z*մ[Gg 65g]f sb\p۪e:~3ASyN[z۟K )٩ 09y^%u}.+: -:]Rxߛׅ)f#o|m9\Gҫb69NmSgKљeޢ"0ɾۤGw+h+ѷl7+><"BY˽skFV?М%=ojjni}!nT>ޅD 6YH#~Nhlj`D5;nN$ JLCp]EzExN}HB>Ym[:Ϫ3ہ#kʶZ6xqC$SpC3Wu׶iXzo $o +b3XyfUmм$8q{X-$j.o<"v >Uٱ#V\`M.7 v@Y,>:~Y2:re^L)&E;!bp;.F77c1ғ:|!!h¿F?Çѷ>l4 Cҗ~p3V1:!z;ocg# <ÜУoGR +JJΏ.T?L,.t\@NO|@wYaB (Xlj>tv-Kʃ֛S~ĈzsO'7`.hr6bc{7ABNNthtxFO '$X?ib'C} aaNSH)%G cb0&uK&>3-@W?mL|@Wc/%!lzr Ӌc}olppxـ"$za[.VnW>v=,;b{j 1SpAmã㿗 QTCv| )_d,5Jt/g~F%sbG_b3# <-mkBSx]N0Æ WM- 2*5X|DZ=fLc(F? hҶ BLrGpodgd/e>f 9]WA\\Lf[xilϣTs1H QlHاEt(SAZ_Y X mkBTWx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 % 7mkBT,x$Wk@$4@p ,C$@.;33RjwyS=ӳɐPsww}:ٻwormBe7?wϜ?vis{sr {n}9o ~A@*6+n!vDz?@s);%`.gϷ9Y<k񹜋q<= t@>[yӾfOyEo\{5^כVl6w|~9iyZWͣyF9yA{]^;>ߜ:uj^=^Hknj5W.w܇k uiiժT*T*+gzy_4O<1ݩyYZZq?s{f?:޴{=QIs۳gώ[]z7EZ܃IZy777fggwgռ.MZO'‚+y~5ݮD {|GsB={w###nhhhcrAe;xvm]VUbeekڞy?55DPpnpp޽g>ow{7þnkz9a=^KwwN']>00v%}$z?'gV Hs{5ڮudbbB'H?ӟ~ſկ6̓͗~w;:9gGww^Nz tޥj'ccctO=?uy/~?iuW.l_/^?oNz[Ղꜹ/-\ץ{CݥP{&hs9׿Cw,~j>s6ѽN>vn}"i/'}G]%ϙz7/uO~Kk_Z/yd굎mV?uSYz:X[[Kn=^K/ tǻG{7򕯸/~s'?l=o7YNql~ߞ W]շz]w붗 sm]WM?zgO} =IkQ3t_җ?ywgN;}u7̱>${lʕnqE{}>#^JݾuӷWMd{yXι^uu]=^>kκh/YgIݓ|;^wg?YO}>!'~޶eץp}v[."̝a{!NZݭg.ZӅzZުuuV\ =>'3Qw'wx;׼5~ٜ+=k3sm?PKx[S߽X]{8eu}tZ6_u]=]׽^sj=׿PuSO=S{w][MozC/ym=+ٜȞK5119% gذ/E6w]-');Mux<Ws݋ߵks׽[?:_MXz|rZG>vj=QW{<':c:}I6!r#~$?NRbY88;=a$Aļ'W;]'._ҬƛiPoչvF}}VZ]]nz|}>1| Z?餓T^NH^TxF'?}Gڽa}XŜc;62kdQuƖCA~!agfsh-o k\:Ks^=չlϩLJ{x}WԺkK &a'|+| t=~q<}ENyGc;2RnxS,_zrg6d_McNp=s5Bm==9l5]=^Ks9uWK^wu紮KX׽^sպzj\4{g?Ӟ4g?GFyC>.b6D_GRbq.جG9kжtKnʫ0X5ݛ-iMN](&VwZ:n9[ץ~^̺{)|ntWH^җZ?cj=yS>h?=яLJvX=(}۾׽3wSO!r" !.Mڲ:֘kX( 8<82XzF1 Nsr<jB۞IoۻMsad;MwպtW=}|5{kɋ_OzB'Gu?p'ćzhvws/7J󢭜`} v "rq+84|Y^Zt\V{-io~C!ݩs<Cczkk6Ksݓ]o}[~]~jNK^OS;z<{N'S=qwkt;1nַnm1),'R&.ަqZLmxzK;Mi Ήv yɵrTأ)|鸓V XiS;go'mzޗSZZUuj]km^kuu]=>1yLB'zB'vw.1Ƿ{t[2MoğVa9D 6Mb >N|P缝X_. bot;״\Jss^}V+$=߱j!ߖ݃cCͩss^9j5}ֹ/:uۙgsv=紮ֵoL^&zի;֟$O|}K=a^?wD17ͣfэo| np&4]k , uA NL4a=630 b[%5[4X(j Xo wrRX{_+m(kƿ68D!>1Z{;Νj)|UY5{hlnun]ok]k]{g=Yu\Z7jk~;ɡzMnrF7Qwus:>ՠ_U+5᳇8T bSD-ryq8 =2T-*B퐾&[֕B9Z}g=Ulc&h0&o ZBc656~-x\MQq5cJs{j7Ǻk/7w[k]Oɓ$(_^s:=a]O$uwVr-=Q ox׿~|^7]׌qkB*_ેVA|J.KS["veASR։ľ-:YrN9s|OEϬe,z5k?h@[>6-buк-ώ7kyLǬj=:g-437ݗ3ٿg/ oxÆU\'\%Ox6Ժ;{x_=7C,qYgBF6Q{سGbzֱ'b=w:?ocMw5i/']^Nu6uלHsj=AujQ;j]zUzU]Wt+2v-KyLR$K,Ee%b 䌎v˰Ə_3Wsص,_SN:[–dzZJ]+_*ojYֱuo4MtnR-tnGo_ku~QG׳6guFu{\]sݖ<u[֥9= 4OS^wպ4ֽhyx WBt_~޵H?[`!&dĪHUU߫r zf7Z78?&{ZYۧrJ~C_Xc=CXW[X |c{5ߗku4wh߹V\BO 'w^αZwԺCwzG@r\t^Vg"9(!6E`Na͐'=?&0C܌b?X}6G.Y4c )8.*˂rr].sn9,k,KҟW`]:ueeoZR54lhݤ7ѹbBI'Ԧp }=B?s}X}G:8wG8rz4ך.͹Vwٿ[{UI.u{~\sK_z|r{اNr~L"VֺIjc=Q b!֓zcb?B:y5m`YYas{yhj E$s\f{?Va_N?54^ǿ~зe4.ӷ \E*=ʚ]:4кAm7кMnR헼%-n>S5scp>4ުsuO:Ls܅[9CTs]yqyѥ.u)%/y)M\N b1Nޏ1b5Q u1*X+Ǩqri M<5}O$S|Y̡[LxSOg>y., >[ůU]cN-%?qOs*vk_gnP nPۍc=B6GHZسĺ{衇zunfBmg4W7ͩ^{Tsh.K\/~ ryj ecġ@_%g1#Qb4̾fx;1L,GRɗab=@G`8ֹ!<䓇exQ#Px ͌ O980~3X-2=9/_h+5W5_ѹeU\k\\թuQG-nQ-sUu\bo1}==;1ky:zzM}zֹmSܡKuw{y1w.V Y1r^ &>i!rE !gnb-󠬎ɣA SC䓇ak#<+(S9'R)w:eRs9Ǽh9c,2,2Pk51XGXs=]:Z٫5eMnuk[vD?lQzEǾ}CKoz{R;4h_5i1|!LJ!z13HL Ab5HM/>Gǰxݬe!a@xP%_;^Q^Îq'87OǚN|4v;C2"v-<^.0%X·eXjxU:}%ެB=W^C:A]7ѺI]7-nhF6Z3oԷݓ-ަN5B/rcMrx FYFw&$&A$XޭS}ֹH;"}h<"9\9bXx&FSqRvBXh`(Ϧb}a,A" |<.r/h"2UkO3ujeOc k-ġN<i l6ж{j{ko바}zvwyC + K-⯇y Q)gR;G,=?Y(%"I,'Ke>S+5xy+1ϲܫ?jSֱ|o l b#iO;f7y^MR,}jC)3R:kB"K),dXz,`!ȧPh K˂V2,16֡$rJ9TW5u.c4~6hMYJ}d5cNҺG]ن!5aTQ$F+kBy*7ki^ur)kz]ctYSJ+20ƢR{zJC0G h6[Dq1Mvzw:]t7|ϨgʕJ`+iޔ:ʟ4*cQ 36sb^F;:6 bMzi]sC>u7"> h͕֓ C[.2CGB!ބ-/}j717-hMe3,yضҜqx^cn]d5iv^躟zw߰F[vPNy[w"sϭ8Wͳ~$g͡gdtO{iK_y+=K26+i6~[v~^/6;>4?a4.ts~doq7o}v糕>Cݛ9I2VF;mkBTbxwtTeφJQAP(ME\6T@,(EP(J0H iZ B&2LٳoϚDdzg־ysϟ?[.;wMTǣv;TU*%N3bd^w"''pZZN5>>~c߲eK+fO駟~>|~7xcjǎjjVÆ թS'Zjʕ+qnțo?D*._W,IBsfszii럙y(%%eɓ'7GGG9p;v, 2{qOyMk۶-Zׯ_Q͚5=kޭw}o G^uRZԳgjݗwbeF5՚6O/))gggKOOߟ3!!acTTԟ{ [nݺ9͛5yiF:xi}ֽ{[q֭GYI7w}n-[n9qM7]u基f?.%zop8Lv]O>ٟDcQr׮]!7oYlٜ~ѫW-[ۨQfի=ܳ[>Wϟ޻m| Fͦ7L&)t?Qga`og}ѣgY٣G9M6]ؠAjߋf ܧ %aoK{?gddD:uT8o߾U7n\rET?<{ȑf:u_SO-y|Cx0ù"??Iο̝{)}-t?YPPc'0#O8oغuիW/8r1dȐ9N0wߜvo֬Yvw3VT(DS`q?[fW- 7o6ͤ 좢 澎w̙ct?"&&fסC˗/_FC&MpĈ O>s;w<[O[ݷ? }wuW$}fٍ繀~k_}+F|rssSq|Qt?7o-t?oKǏ7߼/[ɛ>F۸t? ¿a .KZvslCOa:}tl\\\߿϶m˜-Zv֬Y6lCvI&۸vhv&¿a?[޷5{/3%f?%z  }j}Ç0w31ϙ3gݔ)SV;vg}w]+С -vVRe?0ݏf'}_(_fWqWL|;[}_;?{/';[/ȑ#ٳӦM͛aԩ5t7޽{bnӦZ3{O;AO> |,knVfj{qH ^;? z~ڼy> 7M81z_^_׼y5Bw}t?'2Swo[ Vb%{2Ӣu>w1k׮ݿx=3g[1c6qmB_/n͍7ZNVZ oct?'d_6 |/Ϝhak:.]snϷ3㳘i'ҥK#~='O9a„Cneoҭ['xb'GH~:_DI_n<=`/.8v-z#o"n\zOc>~ݺuK,9^zO?݁}XPPP7_X-vr?c~(~47J*%aJǿgo$_etM{O.%vyoƷ`o-dlze˖cDqE= ýN:lժn~87nHncX@~*Kfo&6_kpyfb/3]z'w]o}o/>tP.YS1O΋G'{}{?^GԮ]071~ '龎3ϡEk>{+q齇ރBd:}vn|kLL;pݻw>eٲeɼNM>=?ݻGm6?܏Qq~?͗LSf}!z͞|v=tÞw3l{wncכ&n;v֬Y|4fޟ;jԨ/(>}>}GZly:Zn5k֌f*W>g254{b}xn<fʍyYӹx۹pwDEEq"s4z7|;/{{ձcǣ[>?Q^hXz'20xe2sמkFb&eZ]¿ޟ߿[o+rEΏiڴit b SUT9ͽF~.ǿ5{ ,+<f{=0en<7l7n4Rv} gϞ;eʔ,ӹ 2$'={&t9f͚ű'}?O^{coksJ%8;7nUUeDyކyo;w~̙k΄  Oׯ_3ڴiؼyF%xU̽}FY/e/%&_~;^ϛͬwGFF*wy޹vZ;7Λ| ^?iҤcl zF0u]tI^ǭ{'uu`Ocgs~f_LKebxtnMWppVZ q`o5k&NX| 捗}zPPP*3?p`ZVTv~:}fObOMݍawҥK 8鼝=o駟Ǐ/ӳ  `ŝ}اa^~t v~,sy|fަٓw lڴCUn{woziƌ_~BMÆ +}WG;{sbga}&Ygaýgb_ٓRo߄|/ XB]x}'sI'Ovƍ1BM,eޗW߫Wnݺ y>'>싘}eۓ|˵^7Z<{ʬWN*3Nb鼍|)7p畼K:t(ľ|nZ^O })`O{{r9¿:tŽf_~o:omZZjen֬;ؠAR ؗ{7{RzoD[}g'y]]]ճgOWݝ:uroFmtڤI ̝g3bog[ȭoބkz{WbΗknx7Txɸ]tqstΞ1m{+5k4coD^7؛龅k6͞84 w5((HڵY/yg-tg]oS]oƷT^݌7{33ߌoނ{fOeJg9XUv›NE%Dtcoc6vyo­gfn2{fܷ/ewJ r姟~Ş輳nݺN潃ۙzȆ]oJ[m>{%o)w Uf̬wqۻ7ļwb`;vyoގoގgoށ{{ޓ|e s)Tee]p輓y{ށ{ށ{ީ/ {jzTvm/]Nv;qw0;>{ީ/]ȟywNf˸w;wj^R^/]/y_* q鼋υy/..1%%%^¾ݥ˕W/nUvBe:/c/y.]}.?{Ys' ?/wwY 22waޅ wy&{hQqW*}ܵȸ{g/"W**=WpW|2ޔWj)oO*?>w]]̽)`^?>wwwUs'j9w {y+w]{Zʻ.䏹oo4s[ ޔ{ʥөHs@7r'ͯj/+>/so4k7{ ;/gs;/s?qo.g%&?0?_^r u./ܯv{u^7ZGcr=_ /"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""Sڏ7-mkBTxwT4&E{,-آ`$( Hβevvwfvz;=dvY,=\}-xx>3|vO~OӾ?{.~߼hժU=ڶmi~ .ݥK7|{wc=6gky뭷&~8O>Yx^X`0X H$R㦒d0b*2NMe2b65J* %_~e}awwsu{lN:͎;yK߹޻;ÞzO^|ű={ԧOi /3f̲ &6m毾fE` bŊ5k6lHnڴ)y dkkksuuu0~ J Db,3P ogaOYhe_׽sެ[[~cyN})ܹsj 0[n?c{^zM۷C.1bO?tI*O5kVy/.]4$, TUUea ' ya@"(€H_|>o)_;ǺFА1`w}߃:2з]vos9/v:[oy'&I|a'O z<xgqx૯z_?㘇~x“O>yݧsz[6dȐ50.P5y: } F$ȂԪUk׮nܸ1K aNPb€v?(:$908J enȀx>=<``6muz.kvm6{O}g|gɁe\C=zt5 La 4gΜ>믓xA/@b@$ ^: ELе_;κOF-L u]>ȀAG} y駟х^8+q 7|Lx f}5|&`%}0_QH K,I @ AvM@AS@r X2`8sǴr!C!00Ftr`-2C}O__Jׯ&6lX-s>8qbpԩf8ar| 9:A/(@QɃrL{NX(`.k. LCS,?_j=p^{18ȁ?:>#'~ܿ/_ze0 6UtZ|C4A1HΞ=;% Y| GW^m2~z*NДs}VlwE4S1@#ƲcXOFGZj5<8m۶c``,90K.Sni|p. , ,}W@j>ȇa q| 9cƌ Y G//_@( H7Խ@9/3 7/f">&_ȀGѭ[uG>>m߾؎;N NbJynݺ{G3,}VkTLP> @?7:Ab ANP/+++M/^y`3RQq`GliGֵZz/f/Yh08#>cyp=`,SO=u"0 .J̀Ysa`13R*XW^.@]QF &_|E^!tScif ȃ¼y xAnX E(@8P> e KWۮͬ0-GߠEth.00N|A|~M&a 4<`_gy,r`9XLXL>* jw}@0 fg}ѣG ݯ_, ;tМ0@/ȍ3&?nܸ"P dB u/L t?Pw gK~~L {_Ev;`)7B0PɁ0 XK0 9 9 ,=cVV}kt* kn@# a+_ݠ4rxA / |'8( EzA~(~P@u j^9P@K7u~`ChIFB5N!{&`eɁ0XOXɁ0|_a`9p]`Uǎ/ 0,u] !@瞋@Nٳg/7ˌ4hP/y ̋&~:hF*P.#pe}390:p@%96Z` VZ73V0POx ?ȃ$ȃt^xA y8 pPݠH.\1cɁ>+((gNM'4 z'a8ȱr$T&!gAj`؄l #xk``59X ``3A%>Pz04v-}O?'A^̛o}뭷rxA^ pP"~PL$' H&/. =^@O,wTg,ww{-γyr{: Tf|` ls=u0C]a`=]`)3Ψd&袋ju0p76q| ?)J/ 0d 9zAwyfQL$D$'J?P~fFŁ>7 '}D >-nm?*@}b h1zLlƃ>x l<#6ifI'TA|gV\dAW\^3  :A'H^x!C/2#</T6l;v5+H7?{@t쳣tA͐=bZ8P^z0` -ȁ:p0P M0>騣86dAYgUs ꫯ][o5D's=1 cO>d<@/0x7">}& E:b@p0yH7P:l(e ehT_Yhj?Ρ`ML<` z%j w}޻>*郕@%>P}'V@-Y:uKAza0BĘw_ K&^~s3BnP dpP#H. > H7PQa\.O jvTsr{:'l76sP ŀvy0fx@# x-0 `o*! <Țc9nc6l8stFzaB\sMnq qw<@!E&dȄ,sbN8@/ Atd@aA@?P,ȼp`E\?Pg/sG}?cY4woNYܺ` X{( ` >`,pÀ \dA- `p ŭ t/yH:wW]uU<q8HA&xA~fɄ , tPȅ\n`qP>弹tDCP}Q zOc)Ϣ흱}roYo[ȀA )@ 0?saYP\7>0\osi5 ̇A DD^{mn M&dY2A8 ݻw/ JErȬ`r @82d QDjfY=$aAw3,Dp_-8>~Z0P 4B>H€,h`g6oݺu 4mzaCt (A /q2!I/0 ŌfxLy^{ lP ܨ4 zA/ f$^~{ /H3 Y '^@G/ɀ=Q2AqPr@Gm#A :xA:,lq_]egSoڄ٠TW37%?o %X@b D` a @h }{o}2a#G'tRSN AA/ѵkW?0 n?#~?/ /~ ‚ּ̍P  '@?3~PFŁt",ȽD #Ȼ<,ly= T&PG2Y[q/Q@00 xA#yxA9?^ ^"ڵ O?=vg/8I?4R̊@n;3ݺuArp?xgL?`V0@xBϞ=͹?0񃂜1rT LMOZ.ȝuaA1A^8+( ^BŁbA);.YyQ)L -Y8h* R0 -"AN"xA{W^ Z C~x/i&ʜ xA!N&/xAn R7xcL 2BT? ^y?:H.l~#ycp P>R^&N:5YfɆ<킼_C^2M@L xA/@<A^0D0z 183+&I8HAL0. ip%L?H.0/`A ouż ׯtΤy=^O(DaA8{nOA|0 9!', ‚%=!/: AB%L *+;m]yA/P( D#p p(%dB9!q8Hp8H%L& 9@rA8Q͍ BG枢]`!'`J8P,([G#GBcbBuqPb5^ŁI8H@bA b{(1a btؑG$dǎtDhAJ8B~f^O2wuW{?sIzu {IYXArr,.w҄j2p!xBp`e)}# EQruDGliOya^1`rg,0 @8HA8~pcVA?An`^L ɬ`AJ ܘ#d #X]1 CxGdfZ䃜9f r/fuIXB>2xBh@6 iXHÂiK xBHϜ93# BA8 =+@{(ƒ-AAxPyPP<. &~9LXQҊH p$~8$ ֭['~$~sR~ꢋ.29 dpx뭷'p@Wҏ?+f3x/g`A8HA'd i IaAfHX0$'$Ȉ1A_HXgO :C\΢Rf{=\ ,`!'!ax7QazC&"dE&%'0 V HE&` Kʷ ؞_ 8H8jdx{"L )}~0r"/$d΋C\Ο`!<+SUU:dCBo!C <!@gX2[{ '3!7 Ch,0LD(}R1AQ1E "&3]U/h,LOp@6(2' )zɂtFahA)ސL1& K^xaCƒ.Y/HKz`&<0>!>fÆ ÃD#6 a#~!s[C9t4O[ ,ʱg }A {L !qwc=V baKx 7ѣGo5f&BOPAx0'AfJ_H!tH!(LD`"GLa"HnN=T?s„2cx7C=>QODL .:D-f-3 &j)O>[BGuʺ=zO7\AD.ɑ<.`b{A,MAsoAx}&0#r&QD&B&0xJ{zxct"pD-W`u3\tjKO 7^QKv0&?jpꫵ]7ݢY(A`2`$30'LB(xD&"(Lv`"H ik"}gh ;Ȏz| 7^KȎZ. a70a>QͼQ#Ҁoj5xF ]%~.flT3V?aC÷ _.D \\p̠50Q%+t"\+QCxFxݢ,bo/U%!kfa _н6Ss-ޣڇ,&|*iI+:1|"O}0< L#>&Aup!cx.jLԈ8 %rd,[T9 ">`9>*G`|a ogK`PڋF $gI|"ac (*`B8"O/L x5E~Q'dH-^ႋ2EԈ a!okᢚ,6I|Tf|\d&o`k,D&JxP.km;NpnxE"Ņ܋+p/<E pg a6jC\K|.ExGF`Donl-{:3l;䎓bsҘ{o;( r'V0aޓ 6݄6`6`6&"&%S"rEqHqXXqi ,w{Nꎋa1Tw".r'VF[($\\OEt ņa>7`D #udȍ�cb wW" z1ҹh ?#wX?E-fBcc:J V?Y:ſFsޡHola`aCy_yw8LX,€Mwaa`?S l+h<|ƯM]bN~#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9ry/Z=QmkBTx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$jwymkBT6x횉m0]HI!)$FR?6c>>~sm+vuՑνYu8uN?WP>1JsWiV_uKEϸ/rˆ_gKW]ױEYcl,[TYHT}xL#}A GV7^}>iҞ-i;}LJX&TP3T#ߨgJl e'=?͘ona|7>?ǐU%;/mN/IfQփz{G}?v✽3X~j{zTAO^ʰ>?sy|G)P)ܸ-/BsMu;_~?w.t =?A{ys8-:P?C~^v+<z~/e4 ^;?wtϿsJ:x;(_m/x:z!Ͽft^{yQ/Qpҁ4oG׿UA:Pj]/Ё@Kߎo34LhycoGKC@zA'ugٿo/(?dB{4#}饗ݻwg4V/imuU?W_}U+HHݺuc4& ^ :t#ٳ:B  CNu]?/};H+իG2 <`5О<'ItH "y$ݛҁ "1:{W};$joGw^]7*֮]Ky .Y Ҁy]?/};+++Ȉ@wߑ((>sFK.ٳgI EȂV Ջ|4 FH Ѐ4t@-OҁZcnn666V۷Oߓ(6oLy 裏d i#m 4`hhHh߿34 HFҀ=v@'ySvvvj#G۷+eRB| ;w.i@ Ifh4,hBhFbN`}U/7jTǏ'/P0o _^^($ЀPm FH- ?OEpssc4p %: B|@N@/|駤… Eӧ7 FtFhO>M=zh|嗛?sh@Kߎ: 4>*gggz @ P lDW_}%/ ,_\h& X 0w VM@3r@Bv4@;kԗ/_f4@>p@eoo\RNih=zt=4P I4ЖiG Q_rE@^:yӀܹS7HbYЌ,h3gN#4Ѐ,h @=6AF3)?th"##57n0t[uY i@ H 6 @ԩSQF  j:l!9Ј.i @kDhҁ:44h@CPꪄ(HrC)4 ٱc믿&h>P?k֬wyn„ Zh4>X.P. 4Mȁfh@ H^zՀth߿ILLĨܹhF%|@6|@O?D֭k-[V gϞ-|k !C]9@' ˟<Ӏ ZXW TK. @Bx@f}\<->ly&99Yh֭[ׯЀP@ P,:tH hk ŋ ͛'>}z@4P5|AU TC5ȁZ:zohk<@j]?/};--٤ @/`4m (9z] Ƞ 4 B4޽qM6 ׬Y#.YdI r}r#F&8p`%r 9PZX;<@KNKIIIKaaaK^^&33StN*@qE>@" D؆4B؅va5` *}ɓ' #UZ:9M(X yih)--m)**k<`5 W( 2M W 6A`ҥKˑeӦM+8qb)6aa)`9@9z@yPߚZUUU-Mqq^hy# (#""rd> EAbt¦G6>|XwN]X>X /Z9P=PMX( Tjo`=@/w<@@Д1(((РpPǓ؇7oRVh@dmm-&*7o\gX9P.X(B,B,zJrx@< ki倮PRSSh5@>@PFGG+rYpp… sΉ\]]VVVo-G^]r9P.X0rBt"x@ <PԠւ=7%t46629 0>5!i@.P2h@,Fggg!]ȁR@닱 ȁx@>< ]Pl``P (X vAD-- L@|@ P TJh@ %bf__Fz@-4PcbbR?ܹx˖-ȁ@sy|x@<P-P*x4]?/};-@SSV *i@ ȑwJo߾-qF@#6A9PmiiYqСR@m V_xq6< ]0{̘1̃ѣP @r! `GTJh@ $bhի  ȁZj[[J bl"@`|Lx@֌3&Mׯ_~Ϟ= _uğ<y_.3(4uuuJ5|@ (%|@> .Ĉ ~~~@56a%r@@ƍ3?裇sɘ2eJرc3 r{-P (!M &h&h^^^UO.?yd 6aQ={nݚnݺtTTԉ'13훃 GsP 5PNh}@>,,,T ؅14Јb  h9P=ڱcGMR?4Yf5*uذa @A ʐOP )@A!6&,(raÆDE%͜93J$fd @ x_Vs5t[5`APVWW+9 #)))Ѐ֭[@!@cѣGwޝe˖5k/[,nܹq؂!_yG,2x@th4p@0M Ѐ> &aH!r{P'}}lDl/2pl8xDdd@*2  _w @p4"@I9 %@hꓒaaa)$x=8x@ԧ~2RXxݵkAܝ?wy1c "*_8lPZ$"h P=P x@1<ڵkL#GEڵ+ GFL4)=x>}$!2?]?/};-m4i]@P655)rh@^^^=@ @{ n޼p5ĉfffw Gdɒ۳gCaD:4 ߣGdOCD (w.Nl0_M]P H***h@ *Yi/^kii-xo ]~}(2{wpkܸqÇ1 ȀȀ thi@O)M@CQQQPPP==.x ...wmllŒol޼2 cL0! ;  ;0S?~^v4ts1F*@rt)<@hFh(//+,,A`"""b=<<޶x}֭WW^}?2k֬7n4N߾}"ґ<?-GT(82䀸V 4d@54P.XȸsN*@"z@ `SU+;w B!.\=ztv`h~" bv`&ϿSOJ?<@ЀhԡTY~~~12 /999r˗/G<~`Ȁd@… NzeW o062  ]?/};ր֟0 񯫫k+++9OK zj_82}iO?m6?ѢE؁.\8p`h޽ bx1 p:Ӂ0 h@ 0肍!`5< egg ޽-yҥ[^^^!VVV~֭;tR9s#.9C? K|0; x; ;رc:矟^lٳL4sĈ>Wot-82؀zE(2? QΝ;nܸq9t@wwAtY|ܹsݱa}^600 e< 9K!d@10RE'%%݊&'O<gM69X4曞C ߿w {tEFh@\𯩩ɯ,..N%Q7/yyzzurrrrNM:1c6<:E(6,c^UUU'ccAp˗/: _ 6w~?%9 i?OX,:`:@~eee:@2v@LNNNxJJJ:H`ot@wtSom6{O4~x70`_޽ayyV9?#N=WσtXpA׮];o>;vXfݒ%KN;L0e"_f}|y]οm>w%@k@ӰS_C mGve~+W?>qD#GϾ}z/u]KĞ?hWQ#PH Oht@+#ݯ\ipjΝ֛6m^j՜9sۿ΃t, `4_RR~ohodƍɓGt_}Uok??_] jϞ= ?o޼#Gv444}ѣgeիWZp!6Æ g?~<q컟lsrrq}O߽{ZYY߿h&} رcb ) %Zwrreee|iii4p';|={qќ9sLNjEw~uo7zS ?0lsqqq#""]fmdjnn~xF7n$s5AϞ[л{cg&|uq>|8~?~Qg?~~Yn{"##v~֧NOMMom=z㯿:u?;<7Bw  gggz!!!v.\F3G7A7C;j*[N2D;?f?yMgy-a7?}~p~3&&9w_OOO+GGGkG4_l̙3w~Aٓ‹/xowg~A)2v3}wzSGEE3gZ8povZŋ[Θ1f„ v :;<7S{OMMMg]IOO߸qٹ駟,+O>(q7~{?t>87#d*mkBTx}+(H,"H$"#X$,QԈZs>U{ ..T}6ڳ-F`p]k߅~b  О$wݓٱ|sCoA+q3lOx@(0a+? T,_7s\Ϙ^Bl1)C+k(FyN"8dPC_9>O0&l4Im+nwGrŰ)/tihf ѸX>E)<,6s45zb?J\<OM%O#(76:= ӋYAƒH Ls6MXBcX&ǘJte. 3.je(??Lj=%wZizFTx$kP8Em jAOހ>~؆B9 ֤8UKCvjbL Cy ;mj P. DkwUE€3ܨ8xUJs\ɟ+;}sFQ(KIXݛƨ 1 +KdX];Jģcx$D׷X`i @l̏rnm$^9΄zBGϞQ=nfkDe; <a>,⢞jk0B[p($Ǡp4 nq`XƓ vϵ.xHnorJ5Hu뇗 f a[Z:>36[g RL؍?( &w.7C#~B{] UW 71jk~ecGrD.=K@WDZM0倐0\xvqNZ ># BE )&yA}t?B Ym(WIpɱ |2+\2 )l8tl@Z.Be񅋍RSƃm>dIl'N adĢG3%#)?$s _5=YBR#-k"qGP-e"f%֩-ϓ378M9ϊ,_*n;HEBƱcl~ ˝[/sagIE2,z1t:kLș壋G){7ond{@rP>kwk׽ #kXfyEAB9uM4P=_lgW؇N#_nGpp ,ZUu6ȓVӰ0EK7*|]{75F\ԶzQz! uH>upT٣o3P)[^6` -d&*=%fY<^ط`_6|h3ء>2 Pq7ώ ,NsjF=B` 큳CiU)R鐏@LҮǧmb<2FHRqùFXi䎲OmGA}:*u f:@ʫRH.66jcGOpO- 6HKJU:Jǃv,3DZEƮqq7p?ȌK%ȧ$;?Qr6pP7`a^=R_)m>D3#£ _' Iɭu͋C-Rne㯄ssL<ȭ/R)|Lt_1Lk=rr 4/gEr~PnB[\g[{gYvRW' {Fem1{ wL;7&$xc0 n&u@5sCCձm8Heft x{q(aтa?Q%l4ςxmWI׆GC1kQ3iJh,KRO`ʲ4)%b6B8\pe;u)ko)#WSncRx{[sXv195_0Kՙ7>Tp5ٴl3S"؝LX睫[5m Q="u}pϘ*xbՉ#iM+@Z! Ϯ~jYݬ$?5mtu] %@݅:4h8ۃtu3; ΑO1A/r R*5i&j#Y2:$Z(ad@>'z L뇶6Z8|`6"X1_z' F-я?X^ A:?1;h/KVB' vOnFS ƤQ{=kh7MwXQp\v͓O/. N3HKRlK"q^Wh1wt h@3e6N|I;y?8t[[! $,ήLe"z%IކAkRl!3u8ځy?_W)AbCO!rza5Sn֗#<43y6"R߃CQ&>[# BHǽ{vekOTlq(UH͵h ݔ8,@tՂL{p/*L"d_y k,4 G̖bD>,.ok"D;|7[.DCA#ilϟI֬Dq]+eE _-- ڰc^Lq1~CCC9gNH8BkhJ#Z-`VoMa 9r$պZ-hkh ?C$ ^tď9d(8P݅]ڶw[wl;dn׆oKd Hބ(DInI M_(5)6H/Y1 QRk,nXHʉ?>df&6^EJmt{CCc`0ʅv5x<\9Yc}106"״!֏9dl:' 1H"z'7QqɌ#KR./CVgQȬ\ `?d1yuM6Ƶ8ZX]8^pwQE &1frRKi$GݜЕh3'{;;~FK37ku<pdʎ+C RMzƏ7)nҀ lEGyl:̑IoBS%|ЕsTulebA}Aʹ10A{KʘӺtjdLI=r PRg_LbR Şl?␔)![Fo wi&k^CV(t@pW2{hxHGRn͉eCbxԉ6GQd27\ثdS=\Ff*0ۣOP5(rZߙxQZ>~GAeN-jY7Ҿn;n?ӹ"Px}/NW:݊&׾:x" ꭥу;R펔 c䛅љElmG§a= h¨BG_uYnZ쫭FYs U"zM&:Gnu.DX5Xn;}ԫ%XO?~2&Frjj8 yA*W I9/ub)Zl: s 85J>~iI3Yԕ;:#hELם[ROd^GA˩f~Y!En0~/A Km>^WYq"<цF*c:xw|͞w%ehRgd9̕v3v Dgh>>?3hYDkgC(ʹƒԕSԜ| 2Q94(?OGQ34 fccPopTYaW(>@tX4`LGٞpɄaŰl\[9c26U M6f,'C4i?W~psϠ?kAKrŵk@I|>^xs?\`,D̒5W^w DMXf_8<%|8_왉pP1Wlm߃f?4:́_Ԕv M;k:p_sj؎qw]$F}y ,b'N=o0, ~M YR46+!}@~ujctCP.Y(x׎z?70WXFܣo3z0c8RGg0 TU򄽻w"/4֏CQ`[{Ocn]+{{ N!33+5]qpj' r9FDȬ)~: 9Gmx2-?sraG"yvUpa;Ră A\& ?#n 0eed~oq嶭!!DzP^H)>oȑ.ļԶ=Hy7S-M ?8ycߧq|#5"2Б lm#UeΤVbM͘jAc7Z ]> 4gb s 2WRsKg6 's8qzTT[R[w)I95xWj #!nN+zPڔ KgTE,?{^RDݥ=Ru^zîc&D'i74SJߔ&HUG[crͦ<׿~4}څh;lpAZ%XZ;tQ?yk1+Ƴu6[ Dc4Ɯ*dB#!}e>samhG3c^8u9󼵕⸈߂UyB;f "Yi=D =4&|C3g]~WgjhSIXU"1A5Fr4{AljwTt6</N \Rta| i>T.Wo>>xϯY{緷m,J{gg}v~)]s!?wXGFl!7U|Cnfﳅ:.@mq%臔Ru?.:aBֺE#Gg'yXDuSWNJD)21ѵVagWPqȒ s?¶@g")s\T{f3go^w:^"{d#!φt},nyWFKv„X4|VB~,˘_&fjp/WԍwaO H 3I`u1ͤ+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_Wݚw)*mkBT x+UgPņ("(R+(HQQ (ED KvٖlIuI6w^>9g&ə~$)%m\տDt)׌xJ8Si[[Y{PѡKeUQy#9M)я~t}cc鱏}$UqN 88|hԎrއFm >*x`Ĵ#1Ԏ"̌#?LohJf|m !dj'ar̓;GdmP^rrj#k=qO? OP;E;)=O ZRIOzSk~^5(aN qnn=hkXA N! nѐD )bgs! X6L;Y@)/8Y@[jqў0'?yRzS:=iӟg<jg>F1I>J;a#՗A4m Y9|~SKp'R/ #6#H!/|1j0yGSv2A[aC#T+'NY0g=k~vMHys&ZzW`qlZ4JT _40ҠĹ5}}\[mZ>G{~{$6z´bd>%c> 685J6&%XL kշbAYtfܞ ;j1@L/zы&^L_/~[c|x+|he/{nChj_W>{8暖xt1N;$8iGj; N: un'm3ҋyH1|0HMTI!GkiX yКXkhh$j+ D)F`+rGd8=,L0WʿOH{5ykvv\{L׽·F%GhGxmk_!Q/׿=zw.ߥuw0Wc4jv F;P;IjW:P'l;Ĉ>zCðL}6|1o5\Hp1eyfuZtAo49O5luo~Ԧ16igVm=h-6'm0m F:`i 6pe{GlH/|Gj7acX 0j31Wo{&RA^G=\kttARv߁O;^B ?3VC5 եQ:U9j{h|te|팯 nԦ|g'$|k lÈÒuJ37xHG' C\F퇋~b^H#01>CI>7~v ԧ>5,!4@:}{l;czK7ꄛnqmA/[M-؂C: KxH'tbv-҉wFjTզxFk`bAxcȯ3< LCX%xXaJG xdrj:ļ[R"n V&ab&01/>K0p C,S01Aw`ǘ,nFbC9=I2}p{`腏rOlt]G|tÇ V}gF0ҏW jͫ/u0k|B#c0aD;8/~:+>e^G/K0".Bl l?A^Kljըу_O=O郇jA|bbNuH[Ir$030 A!sC`a2Y8,$aOHB`8ȋd80,d,eNq91Y=G<2({ 7d$o/~7ߜҿկ2jo}KKЏ~q1RעG$h"՗V藿7G?fni18fbR{^(惏QQq1 #hwg1.$6'p1Tڴ:<2C05.(Gm#ƨ7}0Ny#GLL40syaeXXvB"n |! )8H iXHBAp`Pg˼DLqzy'6RNo~~g;;3^mCF4)[?O (i#\s-qehϞg gsD2#N$4 ꇏq23;cvTa{&#xƐj+!_/F`bXk\e}2G8c1Aޘ&arFΘf`!7s5!aoXEXX&O,! QrD^H I)/A~> ǘrbP]yd 1qx}ѓ01 xִ6 A<s0O=EXXe|!zsf 1cOHKʃZ^+%mVV\[ʨe f)$G1rQEpRVܷ%XY!x!j+D|2kAj <! #gQgCBCHhEr"EXX:'ej0"b XBOR/D( '$uBܐ$! ijjEqP} Ϛ%œV窘 1⪘}>_yll<>>nyx͒/ERatt׶D?gY8/Ya,iqڷbI{H6W˰ 3<vO.* q!5i&B<'AkEa&B%AcK%֡KDM|i-²^a! aXB+bԏrDe#?ĩbxB:! $ '$ IrpXq5 W ^a>1O[uLMMY.sl}\}\>5qȹ/<0,c2ϒ`ܖQJlĹ\m`>* D$ a FX!H[T vk# ڂZ[yƞ2dĆH $^(&,6 bB$GTP|ªE^ % = %8y"/h5AHLBRRp )8HQ+YC iPqv_*J m%)&m񡖹0WE!5 y#M О> k䆌'iXH?p駟f=&74k '9ꨣ2jkHq8 /4Ab byjjgw̜D"uF+X*sVmYo|S%Pq[v[e3mN-c.L.P߰Pn)W,uQu,3,ubc{챇r3V9y_ai%ⵍxHL$(LVeݯkm֒\c(1.EΫ/sj` *p3` 7(#u ސֲh|a kgcBN{-<prp<5B69 ԊYGqD {!d:,^ 23ԈٽkyJqfR؜#f(NRjLd2o#%e23Lv,6 +yi~ba0aKQpxG ܢ:DOjPS`Q`)BO( Eꅂd'= uB W^ye:@n(B3ȟzyb wsp6Y8P#f Yj|M\qdηqȼ&mf+n]=bE8XG;8Z\Q^b%ÅGu]5!ipP/"Pf_Oetwn8‵C pPpP< O}P /  yrB#̳Vȑr|pz17qT̜wΎoU\*srӯKξ9v0VYY?̱F)'jR%/T‚^O8b@{^@{bAJ %8*%r 25B?8 7k$?>(]|ŋ.ų:@X xAuc/ȓ;,b|n%SgqP2kX{^HaAmQ~͵N^(bLn8oJZQ~P"/ࠄ⊒8s-AucQV(c9z6nzE^W*mَqUA80yn+zeLXpPaX&'/g]6('tRx[^17sZϫZTܼTrli=(OxSg8k_zű680{ZKkIbAhU h?V߳h_^PX{X8(^y eo2W_]6( X+T eiV:SqsgxsTRF޿lj>qzCU65axs e̾@pbA^nABY~ 2AP6L]P|1,ՊjZ-^1oF__Ljj S75U N>aAAyAN Y}7OhqpwW rBLX/LN X/V<2k2^PG=8VgF__u[WR¬QO ֞˺a"T9}'+)/&C~@X@^`qpת.rϯVԼxjshLc~5ڪ7=3hňj^{bV' ݆nGaڠ:qp7Zફ*_veK.|.X'soxqQ/9õra02{p@~`w2`u 9aE׋jՇ n馪(\zZ#;WZyY.5,xŁsɂM^r6G5jSNhp-X^uq㳳6|whXpj?8ÁY7 kFq@m{nՇ䃒믗b8US:pJ|OgWN``jkY/.``[y oY8ypzs?N~`805 䤼Z+ L}+UuF.hzz{ εn0`~!Lh vNP(~5_yh5Ln0YHf@&'1X hhᮻjܗłҹ\'k8kDb +jj>6lt6` Y6PNPm` āVu={K9601yA =>rA﹥mUo]Y+:Y'|0`Ն;זƁax[Lyg$.l=jgm\#CfȽg$}o-s/&0 ;ςZhjw$@4>ZX=D&'(4{-m^5:0%5h[83psKǀWmh0oK+g.pd@oKÀ7Κcmisݲ{feM4{-m5{l-m8kfπf"7{\-5V{ rRshxZj.KK<=@.J5{l-57-r-oDzٚmy{j>W{}{UQQ17#+//=toX|VF𺚼w=ovL7YZkw-sQqߛzl<8߻ֹ͎{z}v#hv63F8fo_kN6Cu{qP8n]fž<ׇ{טƾy7OjFyW{=wksEG[1&jy\cڳRo~Zzr}Z.cWFm3rj 4*7n\4Z3 6b߈'7y{<^|lZ-u=#k} *:ڵ\'6k9c+=b|}-ub}{jL:fwMhxqߋ3< 5)+α(aG8ks ct1V5"a-g?/#_+"|ky-o孷޲";cyw^+yegQ7+-!5gifnfn <ě~X4$.\l_.< JH=W H` kA(GgpFaLv+%iZewxZX`Xrx8[lO?~_|񅦯ZdnYftZk׮morDUg?7fOTcZ12 ֑F:B 1\Wa0 :pF _a |DpƗ( (0F_G"5~̶|i h|,*/֨Q gQtzb6l7cl&M6mX s[ݜJdmf.#M@aXBEpxBa]!ju֡pa(&cQp&,H8G%=LHa g(a---&-x:JXիWWԩSnݘ 7QF7q\E[o۶m\vڷo/g`n+nU1Tu y ՙ(EA0ۚ` x;H XB*ӚƌupX:0q8^(OGYɜҳ;Qx: Q0|x:ʀQF3fL39qI&eN:5sڴiYӧOϜ5kVU^V3ujgA9 Hxt~:w_p0/D0~0?Ex<0:  `2<o: u,_Gk#(8[DJ=jXkwbĈx&~?~|&qɓt93g̙1cFsΝ; .Y$wŊmyJfzey{y+FJpG0 }s~>>0%ۅ/υ/}a s-0A;!x(Caʮ#ٷpaŮeu4:1x;Fg@ |k|T8o7٭<5:Og;90Ɗ3ʃu޲e/_bŊ+W^`ݺuFF s%V (2p/}`{a.7ܽ wo~| >!}`,xyaoGHXkx¼ oh-cXٱpZZ| T8otc~;VXK~g)g|7o< .ԴtRa|yժU:낍7n޼x˖-E۶m+FldoylV?RNgfn { ^pܽ7wo{os݇@< <L< o"v-_G9~&cvq&}JV\f2I' =39yْ߳g|-uE4ư.o5kDEk׮-\~}ц  a]dgg8m߾xΝ%w.ٻwٛρ-.w7Jqmgә1Gp=;~ww{ܽw/ so{̽/}?>A`Z;XCw8ގw0'˭hcu|ȑ#=Zr1˖ٰv= ׍/}`~Cwop]Epwc{<`)x 'ܽ`os_a(3%HV@Bx oPu!\{xǎ%p.Υ(p.EeǏ/=qDɓ'KO:UJO>]zYg\02k5/ E^"{=;ܯyWyWJsnx]3=`soz ߀Ot saF3#aզM+ci1 X'$8ZWgs2paK牷txZ"|[xoڴ7%Ktsץ^8;88ùgΜ)uc/^XT~%[]v[lp7g ̽H#w]zW_u~_'\]rtw/rof^/.σ`B<\(淕MǑwY$E/_W\\R~xW&3s5j7w:G%ҹyw E ܯwBwakwWׅxO?ԛ|s:/^d{0CaAgDQ0œsL/W庙o]K>v> oqf"m20t3CibN1˔kZp׮]宮˽===ϓGsU\Sw]a~ *Y W3w&ޙw׹W_u+sݕweWw;pw?z?Dg w^n"[yr:ZxV~V_ k///ow@@@yPPPypppyHHHyxxxkdmYo6o3둷iܑ_3읙x /݉w%zzer;\߮\ N c3Q]ϓ`Džy:.3s9-K9Y^q=E$8N^-9.=MXùTxZ:HVolƍ2۷ ޚ"##ˣ-|㊹elxUpGp&U_~Nw"/"/ p/2ݙ._ǻ݃=݋>K1Ӄp0'<9Bsv xg;\w⍷5Bo:r"jZ:X+Ίnc+_O߂-8kF5EGG߲ZbbbnyW6׍imx[!ܑ] {g<Nw_y<Ȝ?ǜ?OsENxމ>>uu'}>u=ܧO0Eo{aL<Ag,<uSZsvExTOSukx\_7vrk4sa-=<<*pgfW۷n5y+֢Xa~+!!Vbbk-t_gs{ wבx]%;"<gY<?9z#pDJFsy^p~x=<.Hn1{ԩS`Sϟ0ςysyw^(z~ݴ"ϥIܖZscOYu4=opךۼ-R+$̓n%''kJIIyWuƼÛS!t$y؟Y<ϟ۟i<?μ+wzG<9>k AaGQxL'=.^&<0φy.;Y>diT.&^w{j o#sz/x-~ k[|md-VŒ$2og0ϳn nExH\lœ\׮w_;K]y{[x9+_9.b.>Wۦfkkb-|rrr4湹)??o{i7pwSG]@p?`o{{Q|:JGxGcx8?ON;ǖ-[^ :;7pLJ= V2>-'4g0P0/%$Wy*ӍNW\y͍oqc st,R6[yoH 缼/ "\_S^&2ۘ׍8k5U+ƾz6sGrk[Ixj?7wj6vxcܯ wG=쏋 y?쳃իW?NgΟg:tp~w_!]G1n8o G0-d| ^O{]a | ^H0/!Ky o񶒺Xo*ӅscwbUm[yZ1V@%%%j3r7rnfH<C4'O8:`s#g`;DM:ur]]!]z8oK ZlY(ܣ5\>7ix=d{̋J`^ Rx=p=++16_o3̘Ǝ.RY.犻[IVm-b_gcjS%/ 0?/ܑpw@'`Tߏ~/>3{{x{=/{0(I<_~K#GF`a%uappO{ z̳`^"XüY^2tǵ\v1oӵUMjW\qͳnf(m*--5ʜ*/H< w{t GA~/!w!w~~n(ޡO> p=iWzsz|A|8~=>Sឆ3rp% p" w|.ToSϓTtmot嶝̘~nxt+㮩̖+pGwqG0:}߅v~oco>h~~g:uv5iyn~2/L2 Y=z?>.-'< 0y^ R<^2m~nT17fj+ުU+=\Xˣbn˄]E?PyyRŵzCWܝt,::h2}'=[omۘ۾m5kFoxPϞ=yaÆ9yg<mҥp!nA=( 7ខ׳a<σy̋b:{pwzm\W{q~+FFmdmk=n;qWR]3^z;'ʼ&odoz6~ yv6vv]!1ށΑ]2ލޛw^]ؓpI˄{6̅{^P >/%ۅ{z݃k/s<^ut]lgLzU62{oUatϟSY/ $?4ϣh췑[`_Ozد'7~#~yoרQZA^w}( ؟;ygۦMpc='=tLuL/y^/e" k nVEͽM17_wqO3n*Us^ r@~3ڄ׳k/jد%|'Doi۶VfNf#F!W]'ޟ{} '=t;b:\ e.zCw[r]VV7l lf?k?>yGx~?ڃv};ڌ6Z|߯"WV+`>5`о}ݺuݰ?^wx֬Y'xlŒw߽{ :}}>V{<. g=l/br۸Kύ_l=wqc{kmk/ݲj !'?.~pC:د"W߯r2)_׿u F+y[lGv Nox'{z:y.tp=>NϤe=lg»W&܅ƽ|2f1ϫknRwS^r=^<H]m=kհ_te_O/B|y^z+Zfz:FzVv0ρm.˻0罎?w0[bpO{E慨Rya^n9r񻑷w3sW6>7y~Yo`/RyLA;ߌ6~-W~9 K"f_/sz_~%Wk[{ J{6=GE.y ^J!;Jm=_jrWRmCzF+`-y_~鰟NOgǛ t9_Я_E+WϜ9s#췮^z?쏑t+tY=ٞl/{1K`^RN׿غfsW\O]imB*/E{? 34r*3 3}o ~GS2g~~_A毥ofb?N#Ϝ9s_g{žaK{ 3 <<_"T ^r^^Y_7_WV{ZU>宴SgAKσLπd4??7?̟_N4v}ųg^dɒuׯJaߟb_ev:ޟ9*?H{2o=xP؋-*y{9Em^׻eܕ_VŰ_f~I8r?=43|0>PNI-Zخ]a`Μ9-[vÆ v޽رc'`9{f| d>J˂{6.baꚛw4υ?n>shYh:? MX؏~GG~s=7矏QƍkӦDI F/^Fgf);{>a>b$9=^l/xTDƗʞ'7~~7}k0?zm:yp}"C !᯿~H(1~\ѣO:u~uV270yF=)pO=!^Px_`^J2-@h"?`?_|!!uΞ7k׮8L2?o߾w=碌U|`=|' `^J½LzMLUY}Zأ8 |2Gƌ3vk׮K[N[Oo%8y kxx/>q= O0gu^sv 1Zh H~'|+cWzAM4ؾ}!}'G͟?Xnq Ivszgv;/}yf{J}s/ye-{nv #1?x饗z꫾~[߭[Æ ?7vŊm6~ɉ'\pa ]oy W{Wf7z } E:Raa]nfm:}x#`{={xoQV^z}:w}o ͘1{ބ͛7ςx'^ח_~}n5IիrӇ,Yd$;f,f3gάo:aI|ޕa x $s¾ߗ*V%wBpG}]xo|]4hнm۶{sРA{.\8t#w1S~-;~/0O`ʬ%DDܥK}]I&eЭ[MqrrZ涎~{@@2އ}$c0Q./$`_j=]HB}ߝu|vN=waeOc揇̋/e[Ύ100p;Q):z'CaQ3|./ٗ*c7?EaWz_Gv6{>6ui׼yeΝۇ]oݻGO`ǟΞ7o/?Ϥ8{O:~#y10Op{ ^ 뒲Qnx }ԝO?t7|է~n׮]޽{9rdw_re/;;GEwҥYjfb9w_ o=[ tpχ{K`\þӟZ|hݽ{VӦMʮ}ӦM?>ܟg㯧Qr߁Y ϻᰏ{J{ʅ}\JߣfNoCoZO>Eڵ[nZط1bD[tnG8y/mQ9|LbQp!}:3a `}?$;vV?Mz뭦_|E ~s:0aBEuۇ7KߟBߛC[NۂU{[>ܳ=*T?K>{_kzGys=׈QZ773fLYf[nݷrرr,?7_m?SuP[ឈRa.s=bTWߊ߂Gm/R~ӹsFxٔ)S-X ԩS]]]̀د;}}2z?ϯ.oooo7hٲenݺ}CopfVjsΎݮ\{O g-믧b?L柣9{o(f}<~et%6/E߂ݿ ?c2߿c:_c:3v|^W^GNX,s6v?CV'TM P:%ݯ!ݿ>o]f͚u:vXwȐ!̜91~-[e1=ddd#c ~O륡Ld~3{=%=ꫯzw6h@!͛7Ş={ڒ>x G*_W~ Sx߉./%zȘ[37^z[iӦ5N8ŋY9oKwrqqþ7?7-%%e>o-?{|)a 8V ^?~ij&v:t}QVZ޽{]v۶mkuĉvϟه}ob_~;s0O}0P_+U}#XW^פիW}7\bEݻw}3hg~ޯ>^L#{Z 6ѣGcƌ ?ޘյ= ytd'ػb +{{#ogy6۬Y\cǚ?{t~?Eoe? {wl/_{W5~:M47qD} +Nlliii" WC+ y{Wg7o\ٲe ¿C@@@O2`TzzT:BJ eee.Q8$s xZ__Qk;w/~:&/gl#ykO7`׫]v}yg ۛkF:_A8 %rh$7z{ÿ㩧j֩SG^U k܏wd_gi 7r9?Iݗ?$_^MݺuwСȑ#Θ1㛍76;rHkv=8(##cOu( 4#d|FuM߄aZiӦN:ڵk[}O0A^+ؕgPPPs =P{?ȀS\od!?W/s??ϮVMf-Zhx̘1M-[b֭u=<<<VW0rqs.3uƟ2{=%of߼I&;ۦt-j̀̀^d7naLZsoNNo}?e,s{-?ÿkO>i٠AfM|̙m7o܁(?՛ :zXXzjzg<9p#HAFgM}tv/Bۏ?U5tҥw}jҤIV\a׮]];ŋCȀQdt2`bY.9p9`uFP}'ɜlA>g}%;wxG;/ꫯZڌ7%K:n۶Џ8 E8 X]`]$g<9!dz{> (DŜR}?O/z<#]{N~vN-[l h3lذsnݺd@{{a.\>]`~ppꨨ-{Urg@A%N |ɒ@/fOw{zp~6 d@?ߑؙ؅؁q'Oܕ=]?2`=p4OOvt=́iiiW322AH@O7yϧyOP?x_ߪ _~eyܦM؍Ћ }aǏ|vڵd*6>st@ \3p{~|@M2>>j>?n5kڢE.tn#F9gΜ˗/n˖-#92 qE[="##cbbΒW <9̂pfA49DH dW_||4^U{'{{=woذaN:6mZŋ[z{NtppAX.ێ 8nXq.'&&zr9a+ 9=_Ga=n;`?kիbaab|%F LL;sRz77-QY΀S\\g>ne$^~/b@zom7A/K{}߱UVoy޽{O:uмyoܸq0k2aDq|䀅3 9,({>k3Pn<US>kz~xģ>:^}5mt@׮] 0`{0ZjՄ[N{?}+WlCce\ xp B^:d`?] O7gX~6q|5KXzG?3_z΀/b 3۶m15jG Lܰa}-(8t)<<܍3N#.Џ@ngH_!+;>>JE5H:0:zkN:7o>gϞ#>r„ ȀIYdf^a)΀]:]  Xȁ8@3ET3CE"~>{<O^{m~8FÛ4i20jРAG9aƌ-Z4 X{[G邧Nd@g 2^nH $s2r@~'?9 z*S{7=8->H0Hx}GvaL߾}ǐ,X0 XD>pSt>>>>t ΀/>H#2 rɁ|rPMכKW1 lrL<z7gYv1ZKL8pq͘9ssj׮]vd^2"]ຯ @9,$rȀL$y,  Ɂ"ϣ h9WL0駟 /=0Fc&tq Tz,2`Xb^gΜqpՅ r+9(`'1 rrTr3Pn86]Y' j33SzItIoxfXfx{6m&wm:0gر زcǎ=p.p^^^tߛ3J̠f3 r9rbr@;s g\Di>>Zy1;Lvt)d̀IZl9SN3s &NbΜ9V\uӦM{肇>`JxՃ>N )%YMq9̂b@[Y;m~k~&ztytYt>t:_}{4fƍj׮ݜ.]gXJ,6mڅ n[~>;Ξ={1twwZɜt@9KgJpJɁ2u$3ٜws?YP`ef3⋳Ȁj3`6=`NV 4i2`r0ug!׮]`'#ȁ4r Nȣr%AY:g@[k톽d_Wk࿂`E {/\:|fի/nРf͚-%Vku„ gϞ.x3p9p>v]19>NL@0?22b1(5r-:-9 <3`>wуs[ y2iTXtXML:com.adobe.xmp Adobe Fireworks CS5 11.0.1.7 Windows 2025-01-16T00:41:33Z 2025-01-16T01:01:34Z image/png IJ IDATxv:u}{.$4y^d$; ȲhT68h?&IǘL&o{< {gkTv F=zP(ghXdBV´|Hvn/666T-8d+50Cwm7Z6Zw}ݾչ]jLe.Q(3m_kַOQXuYP͗q uhX`P4}ˆm3Lʇ@\2u8m81NK=;/lΖ{.XW-nPE5P\>N;e`R)-'Lp >X֦!.)3ZF` { qjs\[[5׊2ԗC L|tj*hz+.)mVb.e %0^rylV|6?'VfŹu j6+XK@uZu\Zt:K bjн)BW̴ <ɷeGHe@qept N)!eCqOh` T_Lʴ-n6#t:MNfؗ`*"s0h |+m?LnfmjRh]'ܣۏV *-WkU+n_MkTVmмڎ((WGT VSf^?X}0iek'**Y YlKL-ɨOu1:r8h~ߩe}?:3bF߾M?/uYپ!}՞X-05DJZ\Ml6Kt:٬q|^s<c>wTrb]2s,CMq|||ue[UYޡi[M"ˠh(\O qsy̥F4j(ZVFX +.R_2:QF=h BRDjGr @6LgnWC@A:~K֫΁Lq^઴M{fx=*s22׊z֗AwVja :|>?kO8"QНnԔzcT<_T&m N*Be/ez?=jȗe`",ᒭ AwсܭIʵ;L\j)-'ͤ _h4ƎK~۝3NS QM~--o56StܟΛ,^-E2vX)WJ,)(g /|;wXb(P):y>t;TlpsٲnTe W<{H8X'Nf/ˢ"NJMJ0#ly ax-sToxsS=Q9ҐNJ uFrW*sY6H0q2mmˏ[Iq}k`je}nqs-"2wp!}"Nb(P9=:RLEfSK3*q8:xJ7Tڎ^jc'zwTJLJH"N<ʪn֩Ah$"YVr0Brj#Pp}7h}K`]kWK+w|^Eն' ]0!2UGHVN} Ց"oϣsGT+#w#ucmRD7FrCsrrB@uҡTWY'%~1:0"j]8LU:eZXE'2Q9cRTYКJ:r| cTǕ2WV1FtUGy> tͫyV s=Sr2uʫs[eZ}{4Ou򌃹rxՠ)/^Umw@v|yMU'hmhY,Gb;\wv Wa޹DtjuCk&lCPe9LT&kvYmxvBj]<e_jLb\)/U Z-X hu` q4ݧZ0"|^ m 4x=詬3qRV%aؖFǵ/S"ܽl:P[He .ڲ!O``,TU!#E$$VbOǴ8x r,XϏEÞ5s 3;ST?C}Խ/WY%LTꔳ,uJ~;f]'\9WBeՖʾu@l꯹!.WCKUUD7qh]**!*4sZ,\.6* /N,1+~: .?SBznmΫTݜa=*D@w߲ش\yK9W1!-<&u(q^+,Wi6,OWPߵkATNO02W^ʃ\eڧbQ>R(Gj2/?KP^d2IS!6M,1 l:?"v]fneZ0v%iXƕR6n!ip?Cljoz!cGEqT#r^t8#fT'Ȕ{ڧ+fǨ-@@4aŠ\>3AxPpcvu ‰9L,Wv#NۯW2X殣oL}4Φs)-ի4EQ1'.n+g 岬S6MQO-ݳRldlVT|>/un6PǩoGW[=SՂ{XZ4TQPIq EDNtNգ"2^ʪkR\n@DL~SŹ2oǮrF2vRWz>X@ JLVJICLju,[,{),L*TW>ؼ0? OV#\ GApJpYe^j*sTʊʍf`rA v ,Sl X,u2۠HV *S_?ueYD_V՘o/x21N.u^)*+%v8 7N;P&ZJiXfLA_z&RxOʅ{UWK]ܵvw`{1*jU֭V&Ic֯VN,UUDt ma7u5:\)B.S~b/3hZVVVF`a׵\@E>"j*\FR4㣨%J/  ZɤRl iPmLʏFus=]CEq#*+?-ˢ8^AƧTnĚr)L)e#OUD_ew~n:6־ 5:2a#^.V&ׇȔs{;xn,jX5&8Q+A!%Ezt/&O`y1]ZqDr{]_~H TTU0\+j1` wԘN+6B&s\dL\{+G@>;3qs>6ɤVDA|WG;xyN>Оq ZtWi TZLI\yy)_^^ c]5Lʂ "T>Sdn^_5{پkw=;JȖ1אn g~t\T>Ktxigv>-|SYwIk 2e寀bV^ķ Ղ `e'*3]WUkN",Ưλ"ʖ2oNW=C \>}tk;.~T*]Hŭ 4Iy*)WHbCR@9!di{պtb"T+%UC>BG.S:5h2J׷sveҗ\\'pՔeR0 KmE_vVW/>lA2A& tCsܮ%tA7Pn!nT+>LeX}ujp*ůş!iѾe;-3R\|w^1eyH?|GY + QvwylD U[.k֑*0eLq+.f@u:WʉʋQLMImHUshRA@N+.+me[y=ncVp=۶U5jjv=yڀL2G懈(В,nž}P OIeeY"fGuq 4v04ʳ~?)%,[uT|u<&^xUv̾nO fenǚn^[rn&uՎbQ`T .S-Gh)·CU2㱸~bZ@l/j_.DW{:WXTY|!`Jc>$tO[軰!I#F{&̘Jx0}z\H IDATZu^9azz.R`5,=UpHx!m+_=R]k[}nu1Y|FF坟#sRf\Fܷmq;,NJhdsD"H}(C+PlMF{&A+Bl_> w*,įCl6Nn&2z^K#4Qɤ|ゃ-s59v#zo>z̕D-{+ΥyŲԿ_^^:!)8/ x;˪o'֔Lʒ*1,>tD/nh?@ (`pN&;%`NFkoyG|$}7"b_GHccX&SqFx6Z-y9Kq}ED\Hm 6d(T-͡5Bq:>Qi8V{`twaXy 6l+.)(@k8Z f}/qEwTU@pK,;9#J;HwѴWoiTZ!u*xodz=3ѐ "L5iYDt Z۪1,H;cHK9j4J~27Q/F pT.L6˃k'jzəŹsy9cY3 ,`ήZm̯ʼ4yjB teDE1-HK6?7vL6C:zmw?9$j}\y&cZU1=q̗bkU0%74]fjʪ#tK24f7(_g]LNZj܇*Y9ő:LH+iw7܏hJ"e>\{0?!Nokh^z=]Ϳ&m]}^kVM`USSه!0YU"htk {š%.n񶯰:8ůȈNP|zZe"I.xubXo OI4P6Tf5\Z3<j^O68""e{;E``9dװ5jo೎oXP}k=Ōbp\18{;?D٩ >jvnيSTSc_Z}vxʽbq-B` So}APCR`Tcچ,иZ$nS[jM{}YaeKǸ+rE'IbVLwȀ䮦*eG{v+V;2dѝal)3 ,}?`s0"N:CAv}cP]_1;51[[X.W-Ww_mkJKZby؆#z;~_vB0v%%).%PetI\.מZ\vdi hFQPeEtGm grXx=$hQMQekkS^dj.Qqf@;axuSY1@]764ؕ@790OQe Fhv Vj忛 {G Z\JޗmM oͲЙO<,xh林|, xǷrTIZn*U*Y\-WZ9UzUZ8cY޽-Y,N+>EDgۻ,FX VY\ZYK#Z__t&gqʶ EMYBX' \ҨDrԶ7ГZE\KTVmg& :;CH{kcי1&ߡ]|񑺒Nf= ˯Gql6N3}1.}{||vЃ5XeIlS P#Fhc(d._kP)fuM6LlS'\F"YLݸRDfbQoXVb6v-8}U?`pY(7hg>W6{@>.̻b@xO BBV 4RXtn2R1ŁU}th-fmxY(4HFUD&P9+S1Z<ߕncݖ mيgmd)[ L/ _0QQB%s-1M0'vǔ hn gî_@g5)4N;ai 88=2ql_n̻mTl`$5%q/1\k&\k. ٮuߨ=]'8Ǹ#j}9cqejE;K8ǑB5Hl61cd2v[ბu%#?M8g1xNGb?乕bW5Q\|>/ kl6rYd|>/zmǔ6uԒ*8ffb*2_>ϰ?0LzS&lX"8<1@a1Dh?ib(#§Tv[bY ӏ.b연N?.+Bs72;7pÎ6,׊gLctt=UPM%tX)@΃ȟFyqiɿh:XQH7( r4U磉4FzfUGb*.*Z~i jbHֈ|^ʘcWIf1VULSLL&%8dpoWUZ)kͲ=nD R8hffS1Q˭+u y N]5ʇ1E0}8hXv6\.V fot![7]_`|o-sp~f:BHpWWLiblL έ*dr,ĕI looo^v8ť_[${(UancdYOpFkۣ_sUiuJ9Xnx/˸:bdU0;urŅkVU'h1A o'͙*So)6|v]+l?>O%$@{{{$n25_IeWYDl sTPG**" Dp|k>-bF~1iX߮|$ԟ?-ϟ?%,&Έ81󮬼.ƒB}์.yAkyMWx8k_1vJ5ϟ?n;В{2 sЃ.2VKN*ѽr@3Fqf"3וaUSCjj-,3k>Ծ*/-0SOVoooe^z/jJ.kfN,+{CzLg!eʥRg_m2 i}O.uw0]v[gY+Gt,cP+,vFIҷ,Aw>CmnU`2':51N\& fJQ9WTܷ ; ijpQF{NkJO_O0-Aq(zS`EέyZYBm)BFUw<R5wp8=_Jj:e ZjsWէ:ϔd \5=(ɡ*C)@ Gh-ߎ4G wuv K4IY<,g/!Z 'W6Y"kmò:.nWge)V}urWU-ǜ?UG(H-qߊ_C7ɣ|ۨڠWvŬ|8)Tq^6Tušu_d'q N/SDgncVKoPCk~giTO,:G5t%w-['ԁŶ+ЭYKwؙQTTjR,rCVξŢ}׉?>>bZqɯ`bT l|hǡ2TtT~|<%8]֍VeٵsU|*Rt0yV%}n=)+?m5>-v>hn^N*v^xV,}_k{=*DӾM2uTG/09Zg*3dyߺѮn^Ĩ{Y R9[?`ʯ%Юѿ?@:cWZ{!)8l 3kTR H8 F PLU]n9`0Zk{IDAT*`e IFh]~^,ѪL˩EvaY`ТBL&%UB/ dq|3DѕU:*5Mg5NP^ǐk/UCfպ< MV>}y*^__cXE-F-v"[i>tu|4yǜ2d.UǮRRԓV~!)$Jӷ \."T7y2򸕫#ƺŎŇBXNӅՔ׽vO Yulv 2zZ}{ި]$GX1;=q*JvW@~h<^We1ڏӥv5dw(2 Kn*%}KUQt3T[@"FFP:~HeZYG[L'dAk+̅N)rur8rڕBL]6Rf"<!h3e)̆]LR_GMiQ.+]HJ2- e`7e&jWB%F S- ,T'\3[èlz}Ub;#uőX7$c˖,fs8~xG`]?hz]?.g_q P*"bq.Ut#?P2t7` KW yկr岴Cb+"JnЊ s2`DeZRS8qBp:j9 ?^?("Ry㱸i,IG _¿1Nt5\C5|X90&0R.nayu^Ns긄+*]G8X+ZRaܯב뫵MzF':wSgY]yܿ(xTXVk/,V_,.ˀQخ`*,`15C(qvnOp[?i->틪T1.?<ڎ\VV.{ulehŭr|@"syyUeq$rXuheߵ^T9g㮠z>J1Tb>Xmhw/]2W^AoWTG"#WK,"  GT[(BˁZYYgigަڽR[=`dv )dP9e1l@=Az4 CxzV_nb\\}9yL#\Aq0v2@g`ǽxn @8*q2vt("J])5͊ee.dԖovLvVW* Lt̕И!w<;ҾƖr(ejʉ躂;ΙCyg`e>u?5`eް&rsoW\R TϔNM b^g-vPDDgi܎n?S:zs00$`"2WPtT?!9Va%\2.剠&a9 25Xo!*ӏVuˁqI\G^t<߁sPf@0j]Ou>.ӼΛT6{q%Wlz)'_Ê"v]G5q*KWU S V7m2Xe Y k]PV7^X;xuLT["<=N0:Go1%5UsGPƍ"tT.SF𨢤&խv[HE6&庹GȹbYƿ8h Px[5/jUE{`2xTbIV1`^UF(0 u^Rp܏}`A%С"\\ ]CUWs2Pw{PPX\~ 7pT-#˶U.3":0n%C"p8WK#T7G,{hT:8)O 6N;P" WZY!L~s}QA*Aetnx7ϱWJ}_PLqpMX室YStH_Kpa# "lMSBC˰ ZFpNƖ蒲l"D>P-"],iCܺ Ry~e_aO,._K2"Vs!\Nƒm)=*j3:q*'sS pn٬yE%86 q(0HnYaՖ>9]Z\ݧj@򯰧mj}g[e|Tg?]s檍͞M̦p!"y{n;fږb]0a@48G'5hJ!TSjD\ך[#Ek>S\;OBGt*;SYݙ$4 */8eʁ>.3f`*|D]L1 E\ߵeC懮JqʬOmr'54r:27mG۸sTGOw )@uL@Tt+ `3!0~[\kO[ 5dW,>*7Te ˶aq\Qurҍ9=S{`,Se&:ʋm}:p)Z50|5 Ԗ}7PF`Ps+|]2!9|TE/X/cQ&^Dn|4.Sr>mBSM>=d2F``Rվ[joWۆ"@ӷwїUae }55Xwl֝lȲ>6T X|ֱpau2jK_ ]-y;+ݢZ0 B R-( ]_kӪ`ʌK:zІ9t1tK}W Rms ne[e,[睊p5tetp3cIA%U@@u{jк5Rǥ~glZT޷Gg }|똟F`="a}3̀r3vMZ lS{hwOOXUD=Ֆ2cX>Y hfb-PF`6hc˲GmѾWZMIENDB`gohugoio-hugo-6abdaca/docs/assets/images/examples/zion-national-park.jpg000066400000000000000000001270111507671574500266740ustar00rootroot00000000000000C     %$$$%((((((((((C ""$! !$#$"""$#&&$$&&(((((((((((((((XD!1"AQ2aq#BR3Cbr$4%Sc(!1A"Qa2Bq# ?6Aa[P74oJn)Pi)zZ1uk%(=S ޙ.FaEK4ހ:  樀aA)I%=TIVZATS=B#J@ PJJh3P&qi4|@9XzțYkҲ)zEQ9bFLeih E:ި9Ҟ)2ژE'- h H.rj#Fk2闧0Ex;Qׅ|+L1OGWm!A~䍗J''c\6(6 mOSZR kyJu m:><ĕ"#}mQ&a+ kk5+YuE#vԌAk^#M 6lu#js2- hG:%R1:^f&^(L(MJހzu4PȢ&25> &(eϮW:h,{x WҀYΕq4`G0Җb#Ӏ&M꒎50տ=N-bJXoZDTėzzTPjL!\E&^AbJFuA@M 8"  -Ґ P>(Jax֐2=uJH㯵ezkoHS6lbITMDkl5q2~apDhKs{gާݣKp8r{(P:w=yEe@U͓"%bf]EW9i*-6X2caO\ϊ/~\OD gҥBR3:Rkt9[Z@KaJt@Q@TP ޑGPPצ@7%cAj/@T fP/L^Qpja&^0dZQWYͨZγ ɭY N[KkoN[z5 (T%"$4̦ƀi #sAIUnȋI^BzU`RkRj--,Ț6) tm@FzAuBR5ZEfmH2O€>iB{|k*S|.*5jښA9E0qڵ"8 B݋nW|l~"cгJe˶ 9RaПo 51ˆ9^6!qp)b xrkh)JOw~UCC (T  v8D4$bBz YtրssP0qH#0ڀ@VMh`jhHH,ZZ kUbW &&-AD k6VJ3EZD?ޙF 6ՇM5L8sL$64eO7.R"ҏ55V\ij}/sO!֦ӂmԩbFMh%cDZ9갔T(ր4)A%7! 74LծFuN"))Q;a&K`3[}: /ou|'rxz k/[^wLa?*BzZsJ$'ؖ.lCYF}۪(wu&G&! _*zjp8y/4,mvToapNb6)LIQQj48R\V ڂ{,Hdoj,XIӤn⑬ #mHԐ@)0&&4]m@g氪#im0@YnF: h(9TEZB4 Re]**26ԩ 2 8U`j&\[kzi >j`δ7;T)q*AF䕽T"rɥ\E旗JӘH+FbpF>j@s.@х<-sV1U$TJ$ސM֘uRX^S|7@|ߙ_\?ҏK4Ph.yAlIjwџ BZfU2$b)o]6,ME>|8wxׯi^f*^"[Pԋ?_M'hlq+:qv—+3  #} uֺxh"ln8`w=ZX> mlzd6~6Oo?5eu;(=1o}O4Y9T_5[#D4nN)ILii@-..-@-] NCF  bHa$)"h((ڀ5j++Ulz1liQL MހJRG򫉠qUuA6,dfH͔dY m]j*oRe'< x5r^Kfޮ"4HJK-&8ԘftH2NkS j S% ֘T'PN&Hj)[}s˜ֽ{/|_/߾gc d_cK[{׭oeI_'KfkQan>>yhS:o?M6[CQ`mj_x.7-zYΪ\1'c~! #EN.+//q~އc`̂Y6s)μ2\ |UF,8I3UܨZx%Eç yʺGJ=$Ϩ@Εr_oýP{\t YZ?a4i!LmH"C*h%(7ޙD d VCV .PV/Ơ;( 3P JI*ƨR1sHc@W02P@4GM(%CU)j+YE1TJ]vE j=,6J'BC aix_Jw4 Uazd6[NZC¤}jzDjxڙ/LjdN@uH:Cg ]θ~_͞~/¾_"UIrr ;lt|'w'ǏK~ ƝZߥezi#}$K?^ 3C ,.M'>c4]=z̿V08bOnjo- DȠ}=IK=V 0/ە%CAojFlhr /aob@+;IUr&<@Q`~5gтyK0ߗgB!'{uBOōܨX*0I$zFH)n+S G4٩¢*.*Lr.)Hƨs[12z(5I jd$mARJ@k qkTAJU$KmoU!h2n4bMլghzR.ZҹK 'KZ rEQ#4᙮b˥ҭ-m'sWФiĨ }(4E2Eڀh&uSHCE 3&y}^?_$\;:ٯv9_qWxD߱ߘڦi1rQ|m_诟㡖Fž`f+Rک&NC{_AHX/1Sf#_ej3XN3 ɷZ `T"|ۻ36 j}`.ZӠHkQ!GL߉Z{ nNVpv ]lٽ]~f #ϗnR2@{g/j'2mEJe31m!r04l.EekP@J.imւV1ZY# i(!8cPiL2Q^`ƀ-h!o0 ڂG;`ޫƪDZshQhXҪDڜ; iJÔOe+iANQqLQ4$*ٗ6Wfڭ'JdJzPN:Z 4jA6|~F㴑̫l ־?}WОyċk Kq9K[ 6 2uԗ_||z`͌u[~uT_Qֺ~r0Ah֣彉ŀE-tRm^Z<*ѳ.(mݥ '!F9&`Ѯstᘏ >Vqv\ڷK ~4=.X"2 w梙^P$-v*wi#ET/Si"%m>ٓmF uxD֩*.)C@Hbh(j US@C' 6'laՏ_ZÜm釋Xρ?8hUz{ګW p|Yft;iڶCWO-|<3{#N$o >#ʯ #p co\'qN{*touS[P-@./aLʌZKMTJ˖ 4Z0%O U0-LՎV1%V`g8Ime4A/Ƈ77Z֎%$%$l"TlI1/ 1@xQǢ.ÿ׆'{H2tU]0q@ sմf,<_]tn4 sg-V)Z='OC+\~X|A>,Gwmc7JɯL*r L˥7NDVX3n*M&٫IP] i,h ]hmv,QR105E#$-k.m jFSjj03ަJ2bO}*/+O=Pij^k0hM=iaYe֮DZբTH֠j@uڀR #uO8*!2Pʿ?A ~1cc񬼟'ZqXq%3);f ׷]ϧg3/YxFl7|^䴸biO 8d8 dž>PkiΏ4K1Y;[NR1:ȦKVs*"-fMk>SKxQ  _޶ʱ8IK 2/ }[VėqEl._K2a_q`}zvQLŚTsvHUjF]XM7[l0ggpT8cT_7Ң=_K^IF50*H##`h|kf'( _em9t8f4v7 ݈:|gzk2yDkzz>,6 ]<_zUZ,x\as[[K7[8β~!֮D\X7\Afj`̗-!?ґͮkzzG=Ԍ[tnՎv捎mNGOZ4cR_;?I70Y-Wm=oOSyzϣ> ?Es԰ߑXP}>=80;L[2_ozd2)w%EgK+Hh uhI] <-(\M\;:徵r:eR)rު6PiaDFf6Ce{Q,–-*iu"E֠;K/h~֣Z#\AҽÜҸ' Jϯ?sC>O4B.(1޳s+^~/V'8K,:]%Q|\VO?#_ڱ>bhf<@@ ؒڸW:WGUF+"IJ7o|'|yq(b1C3]jJ_UicFHA)ݲ;^tֱ6϶l~ b37Zʽuogfl~.sZK<,f@?5mu$ZaJxE =ރ=>ї[> Jسʹ4ۘ˦>73IO&Q bzּbq\Q \ n' YPd%U7AXƔ8>o }*V\wdWܟjxL Y;'`o[mY6c,!DolEM4xHp59N[oR0P/}-x0JiRb([J@AҀF_xTV{h[`SX5痃b IhFQR9ESbՏ—4frى9E6֟c-]7 V6,0gRy_nn_aī!;^F2}H#V&mqA$#mIEYr"Q$D&U ُO Q-oΜF^Ra45E1,Y[WN,ک86 Ǎ`SNCyͿPhяsT9la<7Ri;?kPQ$ΛȝwF&F v{уBij Zr.45g& Z3z!HPj-@u&5HH$ N%g/' ;+o-.+|lq2Y[SYߛ|DK$L 7mO/~?[g )lT_?WW;@[0`n;J~A8f2WC#u9ͧW,2L.}9aS|=,q["@Q:*-\aq!B\#Xr+=^ a|N% Z{\\}ihGHqb@O^ƑWʬRvXKaqi٭a0 =coo,}g4O6k؟MAL<3au**ٔX{4xb>̳97qWcG>asa}Ӹ+ø hHI5r"Ћk~XpoO ^02z8Ij-C: xVliV,_Җ ЭO]ȩŨ*b1u r_+C__[lK/ 4Z߲4?yI7n>T]/x툊ZWApF#ZRěcE'KA?DpŤC#: 7Ss>W]oǜb#呗)>c~zW- C}^zFFteHotbq[AA*%ʶ6Zr].9{ W#DeR%L[T$ JU34Xc e*eK JdG71˙}F[Qm㌏36E'}HbGtiUƒdv|/*ET\d3ַΔP8[ٖkEQQd;(Ee.LH Y^swcTUT qͽm+;ºI*fEԘ2٭w 1DFDKad;C+$Q3˦lkj> ͇ Vb-:të3G1i,B0EoȖ%8R٤èt#\z tR0'NMxb+t guhV ;KRv2OxVPDrԁXuۧS킄Haŕw-Y%>XZEjpMKg7ͩ[xh33o]NuY܀[N&Н~B?$w{L3Tk0'*TsK{*uXgIC 0Z1 -mL4s+\e7R d~DbչuC _}@Q+* Ήro .+I$ulI7t:cY{pLN# ;bxMŹۥO/ο|谘,K?VDUc b2Vy/|_(][L8*r 6k~uG8lLaw\گsYr=> U^i(l:I'&46PxÚ;)4.vɃt[:ݳZ4E9u9|lLn[+8i6U-_ x K{]mmM0~gu[X ֢5*UJB!HW'"JAE+]Qo]:gZn@OõN ōVk [FdդCZ-,ǕI~`A?Xxf Ԛ'UWbCH.I֦gdGoΊd"y:WѼEcl′ }(R/_Jr]'-d[W};||-,:<}ٜgVf2u,a:YY>;vq1'-?@kc#EhbAkKQK{X5?TE ΆU$Y74œGv>pHsJy-g)*EAn:R23֑ӟW/Js_S>9xn~Ҁ`5+~ւEh0/0`kaЍLPXK0muBM)*cĕ~/4:X^ Vt` UkI O 8ڮ|z׻Ypna$A܏=GƵ1|cRxSħK0xo!IŰ\QX>Wχx7LQ$0щ:[)\]κ||ny/TL>D{sӛ["|S+4.`.tNIG'FS?Kތ=+A"NQo7-0!E$ '+O m{ *=b׃_D^6BGuSUXFTI? ,dR$-쪚9r}^i%VYrr~t WĮlմ4D`XIå TV% 4/<&L\A;Fۄ!=ZĆAU݇uUei0miO$.cw G$TUƴ]iY3MV>n*T$۹5kѤA3T $ l jJ7-<8oE ͸i+jɈWʸPuKQZm X[֦cxk7eeݏkjsJ|4KszT㰱Ywfh$I.FڭLc/<-RGԡdlS}:^}2V-Ao=>uzi!if36zSɧb1x")TY#IL_a"oƒx2_$!r2.Sm[s)ΞpxqXS1nÉ>M>j'Z֠#5 ψ&:ESb)3j{\OT9af:N )020#߮Pti#;X'&EB2o.LJT4nNPZNw7"v"%TmTs)61-*2̶!V_V3fpSj sBޑrz c52롷kA9,5f)E|eC {@LA6P bculo}hTeRlO󨵡Np>ҟ=#H}X©~5?xĢx7̍h]w`,e;e5y|L৅xq'~or6h<&nS!؝ƼMa/Zf)xx'6p-eIͶd;-@/.3yKL !va;Qj c_PfET,A2B@wi7%QORWl74>ٹx5 ̯J#\yF+}[ ­}/}46RFi@2!raLLrn6E [2xf"n#B jߕcTXs23u*C833˫$gR`0_Fd+!ӃRTlO7ԇL3,b|ާυ8B6n!ɶS\K!|$2kԿˬJcO )9 iYs,z-ҳ+u&$eUPSX7D=}>U7o"8}?#[.rU4` F2̺}i p' 51]7-Ǡi^-зfq1)asNxvat.%tPQԝ:Qi 4,3Fb#Jĭ})GcG?2 gbKWG78 2D2|tÁ 7'`N> xKi#=QY:0LJ [[h VTtcR(L7 W*}Ek*,lkiȚM)a66դh؋Ea}/jߖTbf<-.֐x{$wIF[RUsb {S I#1% G@\ ӇYL{Tѐft&TW[RP6 P93Q}?@9\sM8s)Ч&ru+AQXaiz"(x_V:4 oЃYۆL~ ɥ18-wC`A$ X/ļEV+w|K,N)&[s[5jzo ǘvfkf2hLan4 IXcO}g71lnNbc,["ɕbN4mzʴ~ }vJE밣aBrl$q2p搿[ilLX.V U%U{ߧaTbc﹵#+1@X^'x[ppfߗLcg1^JWo 8Y..V֫PXS(DhdarNܥE4 DŽ56qsLyZBM?ʙdcr#@n!yS'ipu*aM2!SWH$"\-/7a#¾!qt;5<"d?; 'XO17J)*X[fcm* JRVH62"7#/qAhjCY#14۵RKJNmjS`/ (`muZ H|vI$… 0k?Sj3h%z ?o.4Lj}y+._|M1:P0xQ$,]}R:˪;LDAS px,uVV<.ֵuq,ēT!#w*6R<Qgo$"B>J ^ݿZd~|$;/mzpbHA{jUBZkN[oJ eHƞԋUˇk*Ԧ{vU#=Kj ٛ[ojE"9|aG\ ai2IX\SږvX.[{@ȍpt>Ɩ}3E'NlAp#*J`JZ!ZRI;"uH,?!n5_ac0_1y}΍{A22ah-)77V73||?x' 0evW{ݒ}xO>OaW,,y]N 0 ՀU8Lb7N85trܩOYXN.bgXNoLp#nS2مĭVcQ,ӭ^ҼW7¦iy<3<id/ooɩ:Sb>iJBNesir[ c<>"p7ƭS,TrAisbQœlIzd|?MbE-ҘQ,@la#jZ3 rH Jx<Rgx:R}(kXT^|93^g0CuW<Ǟ 5)R6g krmZdZea&͂I6:^Ғl9Hb$pmM GbdK\+?,hĝGQϵg̈́L3ў d+{Ʒͦf`H! . S0&f%%f[[UJ ljaD AhņP]NK^/χD\8;th[ &< THd3taaK \Lb3P9kYoQ K$RYW(u1h5Yi=iRjG6QzԐ :MȾ$FlC4ȞÄf%LIv}u>Q2TX807S+t\0d$ƝB3;_cE7Wc\N(.Ҫ131d+luysaqtiGmGI ~AfN^j{Ԙ2xlp!yY"37}tڪT\@;M=i"ue`?ҵϣ`k۠4ydQ4&Q# -{@F!Hh,ţ NbA.T( .ޢpR `-ڢrOQ6cQ@$c;w\8 ù@6M:kA`ak<(FmM:|L AP_ْkTE2+ uހSXK)=m(}>2|.HXA}m~s-] 夨Cp֔yeb!$j.ul:iDa]oSĆjx'I&ω-W tfa|t`{i 8b'7Vjz2$_b;_Rx˸ʀf y;ᰱqr39kF˚I-b4Af-o cSy"#)U˶oOp<)V,wX _J2xWI&)pIe T.'x+l$+-a<p;'؉`3! I[iE#[OX/vz )x'EPBɕŬO94|Q0E)r-l t:R  6?Z!ٱBCʼ_~\BF-T nù.t,xʈ.J}t|FT$sX/TէˍhwisJSx)(:f9_T )w~H`C+X"p1nݵ&"C㘜&#,G5%eAR}/Fn9F3>P;DGqBTp*[ 1>N(eLnՠ%2RʛZ^3xr͕"][Z_5l4VFAAk[ӭd:G ݘ?_K 4cL+}jppű1J9ek 5Ui46Xو#;nk'M#$k;ƁfQnQLp<'4{vҷ䞿a V[-}497Av56?R7ҏLL> ﯙF/>6f`I:uA,!bs5z7VFse_b$ {ZpE)!VB3\G[|LB V!Ŵ)cGcÜ4X0nw9gBI FΫ \2ieyӭF$30(]kiZxҏǕ0˚پ{4ʣQWV"<,Hdu ܿmjJPll|w/@jZz|OF yJ=F d@`9^ko§LKob"\kd *5})SAc1hp(3Y29zb),>*+4X4emZFTi'|lb,H(uRWaG48<\qKe8c=jz>0F >K[.tj`oW1 cj&E8> 듆/{m}ZcHK Ab7ɎE. !6iU >"g Oإnv>\k#=nyEsynQ1"RBք^"pX/ᐇDi-a>|T;ɫg T2\'ѼKbψbɐEa b)kprϹ:KmfRņ]Ikڃ<39yYr/ٵ|LDG6,0fcOt}X˟7VܱXxf5eX%^GU:_V:> I\$/O\‹n) 0EʶbU^^SP D+Xj))fVua֦b ͛\^ 9e&篥4m刳/MJ砠6L]Z%4tH w[])،6Fq(c*)<oxkI֍ +,~4EͶV*j !egҜo\ĩ,@4T鰿(1g \ A:tobHsF9w\-M Ef^P2=~ta+JnL2d"AjnFx= >MČqzO,ܩ Xn-moS"<|dܽ,ä{r©܏oS.~9eI^M;٦}}:Nr3G0k]J ؓMV,Q.UI61n a swȷޠcJF|r`aHXӗ.wАJqr,3n=/S.#3D".U^S\H$1^'1}>u*/GG' H^r3~^m \'dkJT;'xB0k݀acsvH#޾|xdr!harYVKktv2K]yըRᕛ癔V.|({-kjmx/yNv2hZf7Rk~'C qR倽z˙ 3l:ЌpP&FD/{[ڔP;᪘)S ϙ?ҳN&~EZUCoO ʑ&8fooe9uKQT= |kT/*1n|r7ƏJ^'2ɢ(In^1Hy7=u:-u@ fpFokoJUx9@kb/*1+&6u?fSN$jҚU1h}VWR ̈gzb},X ҧ@ݏ@O*ujC_n5Asޑ Q{z&)?jJFcT`k۽P3".U$\[󸪝"@+QHЋ_5h I@e[q[S> %s~d!J7df6@3G|C:[.>td9ƒ߅a.;|>h͖׶ڣaL1;9[f]}yQPtm}.ZzL%]9Stč;R1FH4C|@(b UވXX3 Hْ{f_$E*صQ(Q8p8z-DrZ6[h RI'R;.N6T*DFiq4 KroHE]CJۯCO GzD (C6'],~M_qL6-84# T2}mi0 .1M?*iWpF:_.6_ʍ< M0"ؒE1ceϮ FZ7|;_$tʬʼl>^RXq XGT& D/ځa}Oe_-OiJ l4 &cȶaG@đf iʖ'\8q- ݭs[x4:?+ F>`|Z;͎qjmr/e/sq?9s݀N "b^SID+7=Ŕ0#M* <؂2ǕMT闣xx4DL.dbEGVq$UUC`Ԋ^2fO 8S蹪珬xG:]>AcO_fֽL1q3WrMڱ;3fpReX*}v*t#Jx#p'//SOBu'[>"vc3v$;J $MT/rlUޙb.vJVNiRY:bXaJ?ږ+Y̲ΰStӁ˯_j"+|w$*뙀'ҢQ,jU G{H˫h)8RPPĕZåh%"_.u28hʎQ}}EB=ץN@ZAR˰[#j mn#/5ӥ2=g:jibS]6v)SL5 0;SaIlY(7\e@2~A}m閭"1$wvr64eግk6wڳs47y=LG* \ϙb?JD1(C3Q@KCwa( A+ITb򕑍{Q.șEeR~6ZO٣$ېr7Al8ij3 ?⹹>@8 ǖ̱rF}m . #6f79]PՅ{21^"\Al6`efC1^դ6 ;a%©WM{Ԙ+|.HHb2k\z}u֑0 Ϟ8^H0#oiF,Z,l,ŀ9 ߥ21ʋrcsv 1˨˩YPLj/osֿ\,q*[Go7?2`x9)R\eoZ;UR2|k6SHՂTikil+jeTE9|gl*tFe-Q %ae (m p0C MU<&oˏ0'1]; y /JL;hYM-;?( |<8_2Du;E~Dⱑ ,EcSB_RbmJ]{G+^%uapbnʤ36Q94iWIlm9l.>TP ጹT4Ja g-jA,\٤$qOR>Hܤ|D<&"sL{DQlM䍆fj h 3)f=,8a1³EuSb4LCfǥ=_B#*A}\o3ں+HpZTT\&4^I`LN*ep^C*RX"2Frb?P,AzC]T͕YQsp+/!X%ekQ ޲OD/n\Æqs}=+NYט|Q|2gU5Ubo TAޗ(rYO*2ZeEwf6h C';@L F?9>:^11.*B{ub2GƒY-TNjګOI??ILP~2/}IzG[^?H6I=+ ]H\(>xjEY&"1ا)D#fIjtڨcػ ,@݈v"O*TFyM[5]mIJq@^d{H9?ʙ/A`ƍFX~[ZoN8{X"{քb7@ otzGRD6& r1(߽/~}3F*nroM0\;C[2n$S*FYnw*~L.A ̧u'L\Ndcaѷi% OZMJJMbZq/h{w֜%&Kaפ BRUux\Zq:o V87=*jr@^BvMN;eG-\ZA|Vvw߽Op{|JP/7ۚ3EA@M[ҡ\lRF¨QB{J*<1>iؓ&^ T#eQ/"M abp/fWy_5TBYm$7?߅jeW]L:EA#^ZFÕOz?tsQoʑY^\b2 2@e [3v+4 aRUHDWm4`'nSQ+r237'|N0۝{.B'ޚpJs3\jjT*7?J3\2OzxZɠu#5c@V},=PT 5#C'P L>%\FSd~f^]?HhvŪfVm"3&"8L̀ Io_^Iq eo 8؅eWшE#,s5ڕ}3+mKu[򭣿0oS9 b=jZVh/br egbV(9]G"5WĪVcޜ:DKNsE!fT1Cly[A x; x|3$i#C>otւhЛrMc\\FI:Gʀ 4%dwL6~i:^1ЬMR-joqCd׽~9Qm>B侚L8L3oץk㪑G |u\*Bq~.!}Nf-&f2EQ#܄7U; ڬ+ψD-aPkei)W?*R6mkUTZf _b5 u@yd;z=˟12I@GlO}lz UIFьoȥ}t4a/3<^*Jx%"=|MT*ȉعjS%Zmck5u'Kvbfw(f|H ׶ڑRbߚLlyM!10>RYSM%5/wv?Υ]N悕̶[J8x#1V L*I.vL* L2BScW('!xLŬzR %r`N<0&7"ێԨ$ś)czʺ!׾v2ݘdLةBR=o*}ΞҘѭ6PDڀqb0-A+$C1KA }t P{hB$͜\醇Z<M+X,ڪtz8NPD־ I^|f* * Ss Zq;R7`t( cӔ$ٴābzR4څ J^('F/-O8I۷C)cFôLJv| /kD{[k#aógP.߇8ߤX W[ YF:鱭yj/2c<"3p.++5nI}u{SՕ@[a@'h@ctH A.6Hu巵3`x"lf'㌐"ܣ`uTyh(|v5wUa)@f[B5VI%mG*yCm?: !|\ 3w7<(1𸖒"e{ oJ0<% ֐l?Fn 2R<7 egDvb2&Os~t^$ܳ[. 8c,Ukx͋`FkZ…C1ğJUMm 3 Pjn%lpn :^M-B59Y3/UDmLw x,tH%S=NVNPDI$d hA֑97m#sSП)R~Vޅ*LS17v„8$qMP2*VnSI+eERM/*km:liq9Q[Fzζ2W_ԩSAD4=)EI-=@Uu`'P8݈9Mhb|˜|v+xoo#_" HAY}~ZPK3cu`>F{T8 tMcDʪ[T2^X}m6R xwfm4+`mGE}[ [`n4K&kAǘ֒@bzڂ T9wsncm41X"^}1TIqηXIsk :G1BxjIuA1ge[:RY2`Wr CtմYY}llq]UPU{?pqݸ` mbmWG !Z.`/#N`y؜762IɗoK췈cy5t^MaeD9CTɘg#.f$yrrW76|dVv8dPq[26]ηM;5=j* S 7zZG|͂jIP?ҩ)Lj?zC ;mKw7? %3m~Nhђ]A'CH;=ب;B7$T06R7I`w!IF:tAd6A#LwfPIȧEIp˅]uסK>XƊ-M+ m{  +/nSIM%JRW2n@9;Еv2lIPũv9g d&Nue?ʌ#x90rҦ:lD.i]#D* QN1_~TYLmB&+OBe#bI4Fۃ@Q ۽ 1X!ԂΒKG`=*@Ƞ^cfC,a"SpJM # ~BX,Ԍa-OJdk Bob/"N%ӔGH ,IS4qUI%]jM8I9')VM/Dm@11l=?!X $4_hIU#4QsQqՁĬ3LJ乲7^' Qpb{)v'@V F$ߘE0Exq7\u5XNqPe{n)> . IĀ5}&50ȁP|Rv2!>y^NVʆq/}Et?BqlP`0\nq==W2%jhTf dmۆk `9 3@ {[xgد'$MV>/h3boc@%8&#j&g9bb zjRb5!n F)Np3#U"k_)uQQ7.;)1H fFm+p#9PF}}M2>]rKː~cKA3ӥ 6"9Ut1n뭨ш rIh#.@ER(d6cś*0\j @Lo%Z:ޓHz0ϳmTPɟ.(DUt7zGbp-@6JrH% )$:ZX]zU ^Tڃv#@Ԛ6'K005zZVUS %To:2qLyKX En(%ʼnGUM~#hDɘ8:uHj.+47.V۵j:<s6gk߽Jce6)mVtgd'WF6uˆz>(e +2};ӰjMƑ70e*4'q X9(VVFL.(ovQ(y9տ7QdBUnvI~[IaPRXo\{H*fY0#T6aտ]1˱-F~\tͷM\OiM J j{D+2)G%d )æ2Fl'֤onf]TVgcW ٤^5֣ElD7Eh=VƦO1c55 d&6~.Tґ*hQeӊNeKڒx6$tWpc^Cڝ(|bz-D#"7/zd}B iqR8kFkm{_h7 |+HΉ6֮ͨ"ɓftւ`u@"s()xv JVkoJËJN+GŔ)oKiR,XĈ!X&[MMx;H{@'Z'R.>srv˦rˎlhK MGT'*6k ^ āD %*}zi`itZxb o߽aa^u~т\>KAX9?e21,7ʫ78p\X_AҫP˥(==ѩ0323mX'\Fltڣ29ZBNVҪ&(c'sSؚۭM=H^a]7,2K7 oФq=oH݉p4&}Oj$.ǁIGRo^CA/{&6@TF7ĪHQ#)d6.F8t4ʶ5+4ֳJmRRbkR ʂҜMef'܋kּ}#" >"X +emi}D_3$_sWdxtm)C&[Q4Bo7OJXUfKϕ}#=jdQQgUP2i-8R0("9MH|E˨>iarK7I Y6ޙkkr!f\09QҸ9ۥCZ] Y3\tంx T6*c%JٵJ@%^Bx OSNn:,d@[ˮ>3KcK }v=VK!S`O}kV!Lmҙ8f+bbIJFzmq* Yw[AaaHŊiFv̾5PCRAE8*\sO_֏RYcSmOpN m>*RU*]-kҲpA+)g\=dyڐFʠW0xʡ8,fݶ6VY ^q~a8*zI}[iD>4 ƒXb{i{[OʕO\9X(i[RsGKkQ$ml6&؉|KoC])bap"7CX3,<<Ӑ1c&Q/ALF{] #揈3!,u,3xbJ,>HUؑnGqWWpClAQ4 14I?*:Vfc?XƑ$Hoǯ6U|O#Ȼϭ93ɯ wls^Ç9kzup\^!\@M #NޚE[CAN!-k_jJ=<1~VU+I}JrH4dlmzSaI, fPF6yLyjJsEm:ӅБKH@e~Sp.@9 ~֚G kf9} A?h("H./s=߇hb1hRD3/Kj ̍.cE@t qhQ16B 6`.MW#ȈY:z#K=V$zTF揕ogZHrܑcAUa nF0=H+om* 1FT#R渶k[߭ ))Q3T|3FŭST(#.N&$m{^:i~|qRxzԌcE ׸ץl15 kHVy>*cZ. {\-ʛ_P<2X =R><@DMRX:]vnΟFļxpn%E[dӿq7%<2Mk95kTV8 3 sqoDx*aSa;db}0X$!8r7$s&mamᱲUd.HJ8\"H#X-8E5 ےnxA7$e T7KR $ȷ#2ڜKD/̦ڶYB vM,O" Wq^3nۋ[TN8\񼁬zi9s؞ ; : SVd}kp\}./QYfHK؃bKXUwjzY LEZF ,sF'͟T+|ܺڃj`e[B9h6Ԩ)ncpv:wH7&Hʢ1_CnItK}65M9b&UU,DbM׶1^^$Suӭ wR {۷ƀk}ڒ҂:>@-SW( >~c|ޝLWC=ԨG \EpA: ,AZq(뗜zub_-o {^A{jϦ $LzJC r Pr7Fk{K |S4r2QQVl0cKkJ ȕ!ZZNDc:(rs6^p9Oʂ=pŗv,+.ͯ jz ҭ.eCPשS^w cH*徴 aC mMMHEl7&BI˔T7>N[qu_@wUxO֜7$6򎗣iFg[#֪{2)pSu#*f3\koWڡF j ^4hqzi A;Aj8a, h/߭M:%KtK޻U>p5 YXY v׽V1qKysH?ajZR($[=,|F,qMκ{ 43I]gj1⮶Z/"tG%kʤV] S1/s#TwtllZԭ>bZ|dURa).sqHh23Xˆf>&T ō ]k8k~Jsg FVⅱ{\|NO0 3jO.~<`x~"D-fڎS! a"~m+--;s8ɸzP3aI,56JRғw`]ϳzK"X)V\VdJ .'đ$0"i,< mҌ ?ɉ,DmPl{UbZa<[1&ޤ49ф3C:sI/Hp=7v#c ˚Wly Fh5^#Bbd hT`c"d_Vۦ#c<Ahg#;Tt`\8ܦaHS[õ~`>56qF0%셴K0:~/ڋȞGfDm"޽)aSezbdgϐ 0%ú/;;pۓ 6֪ei n-gR::˔-,WZ8Vs*~{^+|EԼI"iE 6($y }*jW4-;XhU J XrMta>qIiԃ"geҚK-vސh bMkX#ɷ_ZRIJ8_A֪DuK6AaYM|TTH˜"H* f6ppK/]6硥HP-]<-Vo&zޜ7 0$ʚ`Ḓ=_ޥAbkO6^TM(ɑi_ $Vp9cEi( 1O1O=620NMv*N,[5oҔ:vkkA/ 3j RFrM|(Rz xw/^PPŸYioIZ DMtM58s;G_m}~&ð|DTaX sKzԄu/?@UAÈr}4Z:fNvA֑N  x0쨧|A033ewK#]6v<}9-Ϳ{Sdu6hT޺S-PeS(^Zs= 4L|f3hI˫QW *XSc lseRW8*ǕI\/CV|Lȭ ,8 Y ċ)_ڜɦ. \tNUę% 'LjZs~fL5Y+ 5>߈}b)Zc vP=iCgc^!QrcM.l.zԘX7/Z/9]H|-J,,<\ ϝn7pxrCۛsTwOl| 5^  iQuzrةn{j"8a7(8b6ݽzx⌑|U7[iIL̍E4G@*Q52K$sq-`v1M7,3R~i!S˶f{PJ͊`b,nLILC9 Q2tԛw"<}O]z J"N1a@9l `RSYרId =y ҮڒwM!1ҙ,ڐTEknԀC҃VG+'_IRObslhT[>c ''[T_HS c>e7!i͈~xK[2AevaH䰹UK܃o,?e8ѱRl}: c¢oEb>ڀ.uZ"ujI yS5u NcH՗5=AA)#| &[ v|h *!1;?tt^őľ-Li@ܻ j3_-}U&ڮ\12w4:|$6%6]2kց:\Xj dS hZԁ<> _-}ojTs9r[h(5 +)c]m9&%-Oʬ {4pvɤz=ψï Pw'ZXv Ύ|٬HHE%RB|^S®#O(D+r+zxHp/k44ጫs\η09ѭqrYyzo643 )aY A3ehδLL` %$Z1pdBn`]jSi*n4N7GkN[v|'$z7E R9<; &XvxmS3"O#R=5,V+?8f4ozFXeYU%& Akk~R,h8yzXoP {moJ<']CbMTETaf΅ϘtKx~?a55]okѡozdmm@VMwPe koj !҂H\_Wa7j.(X+$,\iHjcL#M@:R'+_ݨQ*AKM!7i֑[+ޑ-*q.m@$ሯfօBDPJĵ؀toJQZF~)'hقvЍ>ϗ(?zyԆ[^㿿&F<A2*ނ٭ [FQ@˜'7(3l(3h)jֿn̑*c`5 X7< ؖ\@9^ZK!-7ܽ#_q@6;}ѷoJ@Gb93jF*PcV3bUr4a tKLՔrnN[|4i!#P4iAXxWkz dkw6oԊA#h@HSr% fa!gE/H$;(%C͡9urUG[Fq^$U|; b?>#> GH{z4GX"&EvNCQ?]b88 aXzޮ vLnQ\e*5'$mc CSAdٲVS$n#P7>ӽmr&1y]"̰f̹sW>8<R _LQXul)QqiJ1q+Hfi T$*yEU R3hbzZN#,kZZi8 enϊyѡI,1X%+X9k-\y- b׶Z'҂Av\[~TDKր/չ0^ޅ`Nv^U~t2fY7j6W4 [ *wh9 az֑ 2eS{\۠%|$ͥj XP :k bf7Zi?P_ZJC ~}TN}VR3\t _cHE#saA ܂sKoqAvC\iڙ忔k -M8b;LU3l@/.5CH,\O# B@Ai b> W.]żԽs.FR[]f Î<'-hck_҈E:4/sʟ֨ ava`il@)Um٭-MTU `*ذ;]uGx*)apb-ԓ!t>f6_$G-{ՙ?jf$ wJcϵ?gy=^lsp\(͗VQ K jT~V"0M[N2O,|vcR %vںaxrr~\6F?4ԃ@gÛO1:$m@IO](-^Ł!P0 U>鹠K:I}kA x㵯A89kE^C2zҐ ]M&E"jJoZ$,9@qdÕ7RA49:X(02N}z + qB,J}AhZlck=mp#wRfM{]F O )2Gڂ*JH-t#J;&/.ri}\mAS7Z$g ):ܑ)K)#ޑBe 1+馀4?:ey2Bx&N220{RDtlmoCEO,F֘ dEJGwyk@LYs.{l݇#tA`w4)Dxwq0fMrMF75#@^;>`كm&/fŞ iA0aIGO6ÊI HmEiR_#>c "ݘ : -N->  6Tߵ-3<#M I@E:F>p*0y?/DKI. LR,y>ows|F6ɠnJgE3nFA[ho"<`67A< %geUB[R[ Ҩc)*^4S"Yd5U),meI #r:v[Y-햩6y .IZx $D4>Y2Kfm/kUFȰβJcVÓBǐr a Dto6SR[&{Z0' ZƂY2~Ch]h%iPޚ|(<_`/a@3tAE#Y%/ʇ(qfbրp#dfAx"˯ڟ҃VXubӌ2+t>aHŅ‹j6{*jAaD_Q}M #-uka!Ys_ZZ"IH}h5D0bAL[P\g}:#P[e[&ofDH\H˅a=QIDQ[FDip3Y?vb1;kޔjA s&GؚZ0a-\C_ѥO).rmn"tof<i\̪bz 4auw mmoS0QpoҰG146NP9_)a*H;[OΜf&>zu_do/aO S74@2ف74$CwCŗO:Sa6Va)|CFaX`.Nr$Ҏ9AkZmsRﲂOCh8rd@oRgGt\F4fʃzQkH_f9);)hi)a5;3rmH+Ír/Aii0xx07=nJO Ѥ(d+ZƮRQt>[H,ʜ7c{_Kތ492r!|bpUlz\z HLrL[H.m:\gVnӔ_0V_2qr:p~ l*ԩL +LB2uH(\́w[5&7F_Qi:Bцk/'y)`Gz@Sckހnd8E;6{u55!?8w9Yu_z^hc1K٥ޗ0t8#nָws"m}M͏Ō>#=i?OF0bڰ1LNCi.WsK6݈2`d DXq'EU#sM;S2a#b5҂4gI4kͭ[)L "Ö1,ӵ8CH+1 c=0i0b֦ek|(`}(ܴCJagg0<}/PCzgLJvZ (maL8*Nh qT{؝$^YFI2sA#+FI1[X;P4[j2zFZH_;aLBJ- lC{yGR2@ZL(ݴH9.loKm@2NTHhK4W~f@Ub^eyuK҂UH#0k1fr ϭOPF1XǨP3ay<0W\FƧAkNp߅9gH2?wo  =m֞PӛSnc@^|~M9Fj!sHRm=j&xZ :oUI04d]u _0(,O")&LY:a-Xcz0LΗlL ~}@6M-q܌dc0=UG٬T}j*gW@8OɞМ yi1 3yUiS-O]hщDǗRi8Ju[a]yLpa>ñ+W8!uh1f,٘[SXV3;0IiEP_ɣ&2"Ār\ݛoSzT)C 9z^x>/1QC̻;zK ^yWG= .XՌjwJEU{p~BZ.*W,N]bEwҳŗHȅGjjˊ)-|a,?cc<)-5 `( T0eMREsXAF\ B_.e؆qS+HTJE0jb8,9 6{f]*L]T_LT_Pw*44e x.l/Oz@Ũ wU (fgohugoio-hugo-6abdaca/docs/assets/images/hugo-github-screenshot.png000066400000000000000000007336311507671574500257550ustar00rootroot00000000000000PNG  IHDR֪xgAMA a IiCCPsRGB IEC61966-2.1HSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/-G8 cHRMz&u0`:pQ<PLTE MOTNV!]+dQWcU[gXZ^gimacg4l?tK~[Y_jr㋰"'#&+),1/2758=rw}HP\NVb<@FgmvAJVRZeU]hEHLSVZ\_c۷ "KT_YakW_i\dn`hrDNYPYcls{w}S]g屵WajAG&g+8=AG={ADIAEVZrvʲ1z5>BAECGAECGCGFJJNAxDNR_bWZgjCECEEGAtRNSS% pHYs.#.#x?vIDATx{\Tu?0如̄MJ)wKL2ֶVB娘]4ܽ 3㜹(לHDڂ"m~Qh^'"=HEWUT f5%`ZSM&h+)jXPkJ@ej0quEc'MD h~-:q>U/V^578DJp|Ǘ C\3P} 午*6*Rw*^}Qr"--+T]DixQhaXSKFSn!1(5W7XX㢨7(P%Pꜹq$<܋ YTpyTQ[DA[JMbtJ[XOFt{h*^D!Q4/*?/U""i,H)5s@-4+KyADD@-2eZQGoWCUQHhh^^'"*B~g((FjPk2R ?7NFҦ++ZH5QDFEU<l5c;X,mRLl*ZoQ8芩U*zDx 8JBRjqXC Ul {1UTEJf*N7w'ع05Riq+FOGxDJjj Dz"U*PZ K|2 G( eth`pN ƋhPņ"UEwp "mQh "H=Ez9&S"RA)8+StGBϐ`4]UJUl6^i"ZH./GTܕ̓ wm-HJFjp촦S4Rc󡊭@c7Hubتf]*?C H./9~TEW1UTEUTū*RXSY% p.Zǿ!ǫC***^ r|wb  *`fP,-bh~1劈PEU\ג{P *M+X (k) lL&Ä|`d$\%1ږr"T9E\Kb~3'B/:&j;Q:&@n\h):F]>38Wǹx7~(DYxDDp]H)*wu;N+!J2W'ZH/Qt[WGt-x1",*i `+xXypJ6b`YOl"bki~7hRŖMxIsZƒXNȑ"R;R*bPL勆/f1"UkH*:E˥ˢ w?9;jHtMT4qJ JXdt~HH/ _hlxq"m^(⥈IbSWenHJH9$PjPH;,Y*zEDz,UlYxDǍ$W46ILWEO ,you[e=Bbk( -'f]DQ[B.FזHUʈ ,/)e6(EUTEU<}QEUtR|c\"5^q]1P*^Iѭ*^X9D*hQEh5$PccbW**A)5P] T>9BJ-J(@VD1mys"uiTQS/W\/"mu"*;HFtJFeA TLW>Oi֐THYUR< {"H /[k7hTk_TB}x"*B1P1K9"!EE#ե~H݊MZVS ye)]&?_GTQoD^ѱ~DUTe@An,WH3Y-ѱ&x?So!Mi稊WG򇤊פ$U:er*_|H)R4 T$/>iNJp~E9(DZkU隉F4QH2Njk]*YL"DQxRDں&*ot"TȢYYZR2zuJEuQ# d~SE4C](PELYwIbgjBNDNGWO)u>zEo9 ==-GhlYJD-[4\(\]1KU"EH)1t (O=9j.K /o:*.|#URE>U"*;bNur(Rq~\5bc9K>nԨKz$}[~ؑO zqQe6._z^_(=miSs\k*.Q:&T뉠TtNPJs2L׵+uKRC鑐0BxnX.6#&wkGQ~H Iӻ嘮h虣X?ǴO=1 O=1my%aC:?ՃώwE:k;h*((M/J)Տ7cc=zbk}Y"UFE~H/(xM 7H<VhǪR~* 3POYX -L4Ay؝!0{%@<k!8tݥ`u|ci 9zr\Q5_sn?*w܆ ٫?P>-bʒUIu6v4.63e`VE^\=0t,-&׉tEkbnfU$cgkׂ*mZo+|)J1az]"ξEۢͶ=hUwbgtl綈!\9LԜ_]CÏ=>j>\{55B٩3{c++o`QdoS|os *mX=T;sqg/׵@Qi׆ș-Lבu&|d8W>X IV.6[)X=LKx'"oU0  h{e+i\=oo|har!˱p++ƦX{{-ṽk{;>O7Ovw @3 ?h1^j3s0=z/En=oNQnj}Eӵ"CDs3.ED4hMtRHLو̀C:.@;vm535S770:&S:ZxΧ{Z_z~ϒmǟ8ylRi7jlCLBO7?ui3}DWhe k`e/?]֍-ңM}M۳9J§s~)<oSti31?r]owr`Z#1pg_p"rf%:ϥպ~kPDb.Q좫*bˉXXfL@Q<|5{w R l"H$Q& -靻->-jl)cWq}"b.0>wn}nN}V$W,̎EEh# m>@޿'c:Jwm=ܖ59Ch˾/oێ);W۟Bg\b]}}͊8X4/BU59X FR=QDJɢA?01)S_"dS8L$c@|rS 4zȴi$?C [2E#vhcT9 f`rrdnCc_$I< 6p7nI7)s$b^5eֽ?;4>fL"/m`rn<[5[~M!$L$m$5Hz3M==5oLRGb9^^s}ooZ䳢ͯH>IN^]ܲ&dͦ#S߅cG7{WطXv{Lݟ>x}z >Eauܸ[VޡzRYr8T.J{X "JMWJ+/WzhblA+#R(bunEػRN)FJE2f4)O z2)OM jq\(@TΖI%“#ۓ4HƄO¤E5QolMCȤ/q2AU$s@r̸**'R$MLL Jdj|P]lG}@yLrL܇"cSH 7qBIHE@}}݉(6& SM -/By֤;ܮFR~S-C^Ĕ{hBC4ß2S_":J*O/II753R#ƏOG$OݢkҨ<-C,B1M?(y̠J=Y2 "B-T}hLBI~1])/?`٢B_UUmcwE2bqȖN趆L|qd'MBā1c:.PDe !.%z}1}GlRd@|RoB噘N7.f̽t2_xk@|$]F,wؘQ\UUZ?<{k5Qs5A+ t P j4P*[ ,ReGO~rT ypԐ)O !O? SI+Oܫ}QoP0&~ܖ-$:q4BҨA#"cS54jB2߃PGG~!дMI^&7[H7Pjreϓc~Ĵ'$h&<4򩔀i/>C/4!ON":D=zZҀ~1c㻭!dИы>xwQ9ryt>մ6v; 87{}sk>5tZ7Ts[ĐCM˥{>غ륣ZM|UX^4!텘9Cᖾ!ZrgoG4mgF =?-w^sSWQkgT~;=[v*.@n+ ~/mlImv y'`Fq]k5Z?_v~~Ύ}7{jw zW{Ђ莅mQH4VkpiUQ4Ut]PTTE%Aau A&m c7[ ZXg]! !Cf@^6W;S\ `fkυ@Lyvtى ~V8\~l8ȱ6|wCK7gڔ\X\ X7¤ r|mRkZ倞mm{+Ӓ™"Dv;)߻hRR5u٫[?Rm;8(EE8` 1Y[ >`ةs Hm/~XR W;iw@CY{fWhǚX3 UUYEmhu/Ǫ /c?RD9;,LiF):2xL4JrG44>fLW^9krD[;?FC4Õkꫂ^|[1}njRYY?:OONyEO8ièH)'T713-T"7b9 #RF=xĈi9w1-#R3ɓNL̘ R*n?g34H"㓟%4b1~PRLL|4g,=C/}dQtSX4EB+)(DCmg)y]'Pj(.:ܧh(0LE Yi4b⇑EIn!J|--~UJ+Ht+wՏލ<,IHW!:=!ܚg'+=ý.g\}}n%T%D*zĸ\킭$ߑ,PiV r2AVY4ʴ x) !tCʄ- _Xw?4?i?u,tNfN!#guy4%OX|ӿk quL}9n/3RPG~O|n}BO.Cԭh4! 3zO{d xRi}`TxynSoLѻ#_7hN|XPxX@igjPDEkU%z~?T%Se%]v/;nJɓIs*بo[$I~ɐ/p N~[yG'Vf{0;ŠN\{iea[rۼ,?~%ߎNfKVJgGgQVvWW,6~}:ta_}iI{ #g>n a¢3 ;h;%A> 4Fj lػOgӢ^ Dj3kmJxסxaz7A XZ({0hZX:QNlNK(<\MVǻ*i{*6ON_J 0|exˑ&TUY; zo;]Ej&~«x[ԏymu?[̡#nVS75ܼB|f㯋װToT D_V ~$·8ĵ۱b`svQ/L/3)yr^d}}"UԶXtѪ&k/^D󈦦i"RhT]9!XQKnN##bÑ"RͰ1J ƭdg O3H'bF#RCGӃ@06&HفcoR"MPQm~FE2_2ŇG>=~Κ%~|4&<~̘1 )5% }nj :i+oTX*!& w/, L"FH5)x4]$Sܸg!x$&<ɑ)DȢ^4^knM6Ulr;*6Hp1XJ (؄{ϳL<=Mni: /([&L!dmʄgMR[i4BG4iUKGOaQ*~czJ &.PfgsH/ʧ_{:TO!]I(7}8B4d~ؘHu$,eܠn NSJEcҸg}q! IYB lPj FL41C[2E_Ń',"Rn =5:N Sc'p(v)ƍK*#} PE\gy|=R^fBdC#rQin1"SQϑY dH) (:(>thB{Bhȃ8!}3!DE'bEO 6'ҩ+B丵B#N'LffS^$3T͑t=qUUDK(40p?K)B)Gt%SJR1mЁ !_1pLtQO8B4i,GZ)}} Bx9xBU"U''"7}򩧟z)?O=O=SO= g_R*xy^C?hXvK3?xrE%KT IsQ8w9LAy&i-}.iC11TlTɈ-XfDR̘ț eպE-)i+v"8.Xr[=ǽ5)_z(Ś**7g5:BB)qnjINH1He^5"ONLbsL&&?Pw쵾󉮘*bK"TR/P*P#(yYFl٢hh4F|ffK*yFz1`4y/Tnpy0^()5P*T/cIO?4y)ċq˦g"|Lxxx|WNMULUŋA`Jy+I(5Tjb)`H%EoNIBC5-G=Y2GREz9Rz<3-k젉H/-,Z.C4^HfϓxԋHhpWEY5"Y|"O8q rHWNѱBTH-ZPpQbqnU㩡+ҋQ>B\HczWUi|qQi9-- ];"mb'Z.En(zhJ4y=n yaފL"<܌bxeDK/z󉰪*^;"gFJ`zI ձΐ|9dr^yZl\nHb 7UT]9O1RJBApT~&@ yTdLPDŽ~؛*^H(^"UAĬ*z΋ UlqlYfuJ^ɜnp^A*{GT]"~EQ/M&] ,k"u<Jw|+$8?DAUQUQ[E06--#e@=DTsQEU`Eן*^JH R7Pz!fQ#ul-bYhF!w1eEڨEH WN*^Zh"(4KܦV%3,JtRŋ/TѫHhPQŦ :9ߟ%/ޒNCTD9FJ,@,ZHo(QE*^i1REA"RJ T9}D) j!*m eQ:B|A[^%6 EeDzAVM{ oY(T~W:+'Kp݊TE*^e| e| XB-D-B )WMo$9 !_[UCFc<(U+.zEw*6識*^Hp|7xvŠ}#R4RAtSEUtZFR),JqJ 7( k (,&C _J[ _K"ui EEz|"u]_}TQ[L"HU jM`6u @ bXS*+W#Ǽ(j{>n"ZPDh׉pxű%RyR*y7(!ނk {HUzUH=EbW^4H@)5fQðK,J>PBb:5dQI W7XX㢨7(P%P꾹pۤgyL/ *n=v*H[ RǷ:BmHEU4 C7hTk_T~_xEDPj0Pe)2&P Rm)*PL(Tj8vw Y9䥘PEU\ߢp>Sū&RU xAp e(+J]Db.RUl"ѱoOsSae;ekmV*6HUʉ xDQREA "5, /7PlHH5(!`YFGA>+tjJ)/AEbEC ŋTF*^Mh$6*6&^D Q~ֶE\+1:%Ŧ:,N,*^ Ѣ&kB4Mp}ƦԫSs,'z Q#TJlXL[Zf+"z)vРeBbXwK!x%D׏-+ZTQUFEqf@EQPN$:x[or!ZwITQUQUBrJ"<`yXE]E]ԥ/@w/ Gw:~w:~Ǯ;vݱw#h#|KcACCAuǏ7Q<~$EUQUʋb-!ޡ&kPq~yF&M䨋K/8(k}ǃx!rk$.UUlF/rMyUl  cD8ǹLj8Lo0b7T"Ca80 <`/ACc!UDחHZVDSE4Y$"S h~QRE0&@/1y"+!-Pt/WMx`7(/0q x038080Fxq`p0c8DOXSE- U"ǮgM5HψD SƁ#9Bqv9' fׂHn\ܸ"ikEdM"c$D9H 8 DUQUQo {DwC1Iޞx /WITQUQUhpL+k~yB$qn1ns `LqHV'K1n!8J*:+ ܨǠ"aEgxe·i/a9BrQrSE".b"V*3Fx*##a0%%H <@1"_*"kϮ c׆ȑ/ךibsADlw$D BvN&N[ȹS++6D"""/W |E"TSc!8pq'!p|1'瞃*^Qp"axQ¢"aEZ}'L~#@x+g08xB$!Hrw˜%@T]_dMIˊrFdx!bKīpWt0cϖA"'x[Gg:B"G5HZTZTnLPEU"xo"!v&rֵȻr*ވ"7h1U"O@$@-0o319xk g\1F[u{Uȑ7ĝ8܎c vfq|hWKdxE~=6\1Rvdc016 hmU"WNDQPM_=x;xI& p53b-(7L __ߌ~-IsƜ!t>Ο 3y['Oa;J8&0)fT}jOjjj@^Oo HCT}~kj@j@Y'5555 UOC ĀS'~K_?{k8Bh!/O\g-OWA8 5s c皂C<pgtDP* `pǔU|a R:K "(5*V"L+x9:jrQBu:QBuP14TubN ՅB]!C!Q%G6{DCx#&&u/Iwi#m(͡:]hhN u4vlr93ק]fP分2or^N4O;zEx( M1YirQ"D65hac#ܽg4OG19w0c1 mĺ&3bLf̱&9Lvoಥo$Y̗#L]M&VRM#ͦWh oyI-zT+m0&a+&srսԶpe8X|1J/˩UYֵMoՆ^yhxܳaj$&zޙm,x;$w0_\}ě׍5xĺB@J1AbAPM绊q(o MknrDbMMAc0}c䗦a P4Q8I!nV]+X7XFnLwUvd(~TW7KWԑ%昳5 W*/1`x9gas"QyvcŌ%%0X>vZ>ZF:CrlyB1C)9t)&%8wo'Ihv47LJHF2jℑ#z&Ӆr9RsFr`3:y165/"G/ "D!1BiG6]x<.qTdJ;L^r4׺xD{ k5XHf&DC8 q"yKoEݦ9r;z GE-[OC/h|~VeZlq=ι cF9L)7?Wo GZ n9q=8zCkxsZ:ڑzq= XqsЎ=g[{m}eHiȜe|pZ`AD܂8bqq }3#GCXqN#ukU\F;/Alӽqq iB;1G>և4!G<9R! nكDs492MM)ՇϓcS9Dj\ӳ[;_xsAQfᐣQ~mjYH]̡uNkؤq jAOl$VJRRZ^_DvF|]nQ[_# #t#ȿfՅG,=_՘AЯYOzX{e(:+g!R8C5P'ocvt娈9>#q0N }O%¢߹s~ 5c[5}F.IASM(~7Hm{Zѱ}|#~c]}o֎usdvמeЅj*)+PLh{֞_9r}>;\1Ǒ_o$ǺZ#]# 3 "&N%yp!\km"؎m;*i@gQ@.azscS{MpL;fs:7 }.ȡX`kM=酕T [6oI1 QpܶSm,`uu>Ύoi==3,8v@P<)9Y3# zq֬{RL rsp?cZ+LF51~ǎ??FLh0~C3G~{^?+ 9#}K3xf8^Hqzym@&h]־A; OW4䨑ʂx#ZE,e ڸk.' &G;vdD`zjvNEXbNr 09*Nkc @8j V/ ҝ3s]9Y&=2p_|-RtEx+` #Iخ]ڵq׮$K^^vGS_woGzvZ6I3;ag񘓝3aroG[MSZ+mkD8N%ʩ)rpg1:Q9[ nMvFJmK7e.+eBi<㿶q{azdM}+Y}fth3Q#lוE2Sa"H1V Ek5yQEt\rϖq_w1EZl*-mSanگBΜ/ifZJ(f`UV\s7=rq^oU\ hۯ8SMc6 9H.F"(@ڢ~-eⓙU?vbX\X-E߆}l< IC?wѵY'aL9+1l{&(; H{{jiZۺGY8EXi߉#5ؐWwE#ԮO]L:|"Exo܂'Ɲh7ȵg}V5a<, .Iwr8:fa.cn K9Gmǖ#a:eIYo#CONX/G (. X+ןe `S\XZk_<+[R4 o_*ЦպT"%}lEfTs?{p5b߹~A]q$وvʒV}wn7H\7iQ\npmGDح}2@6JҀCǦێ]=1Lbi%@G^tH:pRS")K^̩Fz#0ahTZ˜$RIǂuQ%œ'1UF4*.8l>igrV5V K@iGvyv~qgl@) V^]M'.0G@ %(Z}{[^kӆF0 c~D')@+ ˤ?WԦ]`}QDT5Sşkb"!A[?ǍM+\+74Gx؉dx;1w\3L n %ӯz,)ts>[H𴐓J:7!~Qv l G7i@Wn튻=>B`{ĞJ"#h}*XY-'cB>3_q[RξU\yT92gkwAHa^;[hc# @S۷'ubKѧ3NqSI¿EYOl֐ݷ3coU`ދ^|~ tٻrb`>g0oǟNn[gS'.G|6Z^^Q0;`5'mor@X1{R܁ݢȑ0N?>PֵC *֜hƷ TwKFID Kg>_;:Q͔2Nۏj'JJoIڶf\^U5Rc)Mu{'0uj'#3[K|-O:s:nF2P=ͯv,93 KEl=Ak'lOIVmRJ>yN5RVU^L;DNv!7'a8inN6&Yp*;QХovv|WhPL1gȠZi%:`+d6qW[ OKN 6ifg&=V߿'\c4,4AٿN3_4{{<#mrDAt޶c^VᾮQ{{Q'3P`1ϝtkGǤb,ǩ ccv-0W1z#YOkj%"50AV7lɱUOݤiO&D^kP(Lk_}ݯoc,$d0l׮QD"?00peڿ~ҿ4of} fl5kFբ^lۂUz-ʨ`2alenu@Ǵ: )[-e8Ɓ@|u7L/rD4~[O@ n]nx/c[ g0>A3'՚Yc[D>ZH5酪tDl-2uwvxCڶa,r#?1ڸ1ow_?3NX]wxEWX@ DlXqv[X-̀<}N#&(mmÞ9Umе=UqL}Vﺶ-zδNd~~_kLXZհ=,z0մ:#%Ewѭwkrhz?II%+ 1$vF e]~ɒ]twܐmtV\UUEWd.@EAD79mN@7K52?LAn%kv$c/A.-zy gM:1*\Ssn~n{!+ShMbmg~O]3x9l}G0a1-\؛ЙL۸+vڼ @=D;"WD.#+ 񎥚M8d{_ؘe$hMqqm!,Sd̘c?:irֵn7E-q77ڎ!"PGxpAǁ#3#@·ȼl  36)}nkVA#FGU>Ao盂CFh 4z ݿct$ =Fٌ@?!@sO`v/AvtNxE;xc *mc r %e59BAn9n "_z ;fJ9*.՞as( ((9H2_:簥V a&D[= dҔmԡ|w[@~ xcko4~s*;}A\b1^۱㎆=^kYۡqdM1N C5<>zcOD0:/g~UHIXꁚ7a城(IYP&\yS3Yx$#H\^`Ύr!ܠ3<^z_eoZ?/xwE~,_Wx c3?pu ¬%%c|kY=t%9`%7~`R{K?Xr֯:㏧J‹@hsJ{1;TR?$d㷎 maFZ(T}?\\>NII {S>ImUՙrYי5Awի}^}; &aE&r!&I!Ai\ k $He:nF'0W\y Xal62WrRz"zMDg_}#XF/8s\U@vNvR IveQ#Ka滸[ŗ?cc_ jCN4*r!ںK3 tk[n\܉ot:\iG;ķWwZ H wj("a֛}{׮}@V.o1KH@3rt zDA:噵y4l/IuSWE)\ { ;G>f,u?I8D1zf#gCv;>GK9_|o.GNvRRNAѻ? ޝ,szlCXݺ.fwkcnr܆)?A8$Wm\2N7W>Rn")KvB$I")w qcM$EV`X ޛ~[K3{NGA:ұ']=lC"KC:0j!ˏB|MCգ4e?Znb02vncVek3__$*>OIR׸EG&N 'n{Y~Ě¯7so, o3aᳶsQkSR[^juXz OU 7iSҿ)$r탡`TC}~vKxs{[MgM!k ߻ "V)?RwSz/*>A ?KC=j 3|_ ഌĕ#*pX1ui]_sHxCFܼl |o:6d߿ˢ/.#^OB*8C9ҜsSar U9(^Yn'mߔ_7N(o8yli{6m).ʷ-y֊cêmjkwVď 3$Qv߈.T4=@R6 ۱7Obe$|=`v:1?~dtNX^@Q G=rZ#7;_?kvK{.TH܂oNziG-(#c0d}6U9[cM`3}Sױ+,qtuE+gE#p7'8clwhk[! /q*$o pc;_aFgZ@R6 `lg{7nv|DA*k!lIpu3Y}M+_=VuZm.*~x?YdQ{ {;J@BS/> '!`(2Л{ܹΝ;wyXS ݪL:P5~? Y7`Ye<!*9*C_괮}ad7Ѯ9/Pț'NHegc1P&Ly4dGXQ%E~eSRʉ6ɣR= ++1wqEw =V {bPj=ݦH6d}D$8e`=zqeqhXocɭnp&=al>XO;G)r YGt:ݦO, /iӼp ;ҒNr "h>TLs[ GW$_M+ I2:]>#*ڈ~5H&y8(Li6CQ^Nz>%vt́kă^b ѺL{>ܸ#UL(=Sz3,j[T\РB7/?{Ac7-fj6@ڬN5jY}wGȿ#pBr"߸H4Ӱ6{DvY .//*lwq?#}GM3{wU폝Ow ,~ׯ(D$ `㦥zk ^ b-"2"k\Tq$*^<3" &FwY3F"X۷־N.}!xo#8V=YRSa-ϐoC7 ShsK鑟~w̼#v:}ݸw_W}/wpvaq16XDgΜu]"4G:'*j@ jVԽTGM'<==Ņ! 20`!01e\>IMj̸=9#`6:'1;: x|㓂Wމ>cvY68-o<[ZU˵ é۫wt+݅ߒs ke](S%#;'/;*fB+0);C5bIнօ`1ưXݡCG|r9= Z$>D!{;)GE`z&)q윂4SO1!"ɾ; ]jt}nLJ9iAA-GQkgJ}}|}ឣKl܎c`v =Nˇ& jѣg25]K`k_e:QcǖZۂ tqþ%d9Kgu) =dRXqlς$=hߥ抛v9IRl)O2+0Qkxz9n996bgCWAbĜc wQtcyf'# Fg$sZHAKg?t@, k ;lk+uuZX+\Bݷwq} 38ta~kLEy)UUSO} P=?3.@KҟjJbs(X@fN؉wc'582Ț9*)eQH之n{tqiF,`w+8d@h_5|oOtpί#hPQZءl+1$7,%çʰ Ԁt[_krлt7R _P#{+Q"9= @?tЭ=g:F_W{!av~EBbt4Y i?v@פrs 8.S;cu (}!b5R~TwuvgTfɓ'O>3#+Ԁ"B;; _f`TGp!V|&*$FDžwϓz?Du}ja_I {K[lFb{DG>6Q rȻjm?c꬧?3G8Վrnܫ(z=}6G͢%;U6`OOd =d D$N*.PFO2_ܱh_>,G5Ew Dd1.C1t*[G@eꔞq vDZPn2mPn3zڪZ姢E~JmT՝#38^eDΫA9 c/ +fd=vJëNvBڐLzޱLfU}Ϣ(bz `fts,:D_l6>п*E7@[ސ}*;E߶_s:sfӃ׆w5z~`hO-I@fRO;oف@muVۿL3youTSn<Cas? v7mc*ۄY[Qa&L Sx (jfd-1!8 Ipv<ZB?Qb`/~ޜ0re`SV61);';[}"3ќ62 7)qc؏~=N'1`LW_"I+W{{h5;rCn {=լs`ɵv?[~.d3@_,^ 9rJ2 +?-0+c۷-ئt]`@" -HveFApĤlxqF.X<+$po68َ~Q2[G@FPr/oJ ٴO'$A;iX" LdQg\bv*=jmVA!5v4թL^qBk& v0#L]'qrV;{r110&rpz2հ.1qu+`~}~/yfk r GIFI[j8nt`&^] `v0_=?XS0w!qJKy7SuY9dB1@x`CtX&&uc~, 7,vl\߷q$cŶ?g._gfBD+AQ0q7y? Q)#8pD7\Y)sC,{(d32##,WU3&MNBv$IӕIڪNwHs8 ;yX=yV&%|8P9H$HBvH]>&+lǷw94SLu#j1p$߉ I r\^ϴK{59N|jh&,"<&f(veJ:?vZQى82*GLTb1ޔP"oy XA(0,FT&$4"a Z6m#ݶÑLZ/OxyBx9FQ'~YofSD=Kg3Gf5JCz 7HqրnVdHJ2aIˆi2RI9 a!p=3(9ڕtXIpc&Z|GDuULl(z䖞 tV[oȮvϖz{-RJiϖ_™F1h{uŚUO]5&ui '#Iǁ1_vQqvN[~CC#fDM?,/8vz6U6@w O[»nϰQ5t)7aCYȑ|*;^غUƖbؿ*)=0j[֫) V0;[>`v6gl0l DL)(bDZwWcti06:Un= ѽr#L vĽfvjSt)q۱sϺحL˪Dw/iv2ݹrC }%Ss 6:Kݔo- Kh}EqNBNA|G*T'};vݚm,90wڑR#>)^5EF!|ٽO$N)xF6q&Y+\0laf!0*^;Nv>Ṱ=$9l¿{cV-TѾ6lXߌnB2aàڎ>V;z^-/z|p:#M<^5>zS7PaޮB%"];!z'3Q[}o=}mnwu}.qEfx卑TжKBr;ªT=T/14ܠ֮bkvxva1GR6\C´lp #4# 0V>&:['8x)?🶑*[p ?TqoVv])5~B6R%bo3!X}(:Un9bH[5I]:&C3gm/K1ל|.YǗZ+^y%tYgUl# (sY#aJ5f` CoI!}GPt 1;{讅2-كY,t:E" JcpoL{1Ja+nC}6+ܱg%:crrfg1D2:vfoPW5 mֱ+`E,jyDib7, 50yu[g1H}c"fh*0?5dL7 S'~pמ?yTh׳}ّUV6bf%nvl v:$oc֥sZ/xv5=c(&:{T /<I:Qۃh߶xWZ*;3Z4hРA]UQHiDݨg `9,q7zʔJW9E X0ނhJϚ<@N#bcdK47~gUwOM˯mݼ'l/ 9m߽wl_jbeM]2j7㹍"w} ge/f״7iJ[}_Tf1E+s/?qݺg[?v{)qS>c8K7{?m vKMǘe2u 6w|hIR8&dϊ/L-bq^qj()ΗB)i&q0y' QJܸ"Lo]Z$޶)fǿxMgn}o cSfyXiJV;hΕ mM57feloNK~2zwq|$"͒8Վ$ҷ93ˋT  Ԉ+Mcf g@ TX#M*Ѻz=5q hWN䣤yጪX>nܸqݳ06|fB ƍXXǽ=DQtZl][hOm]ml |yKnj~x׹g-rjCZ}[}A D &G,?t;nz`I;v;1(|rɄ0`,CGænz37wc&Lڲ6࿖Um\dadrw(p=caEi_0;v:f=F:uVnf-ml6?xꭟ 摝g ۙ~¦o~޶Oͮg=NecNŠ|:vqH^;H4KKc@ 18_fygrXĠ}ַMC8oL̟bm%򕟼yOzt W8_~Dţ{gg VjK.(_5s>5SG/@înI?]o\ 4BVOdՙ맮[KVsR0j):5@ n?e ırq\O8( ||LAmln#Nֲb)93k?5m<ݘo66*^33v&O>ŋnK_~{IºeF_uIOvnV6^%'rŒfKzqUt8' [}v>*17uoYدՏ93]K)'V-#oQj`hxhu@bb[hj[wTԯߴoַD=0-/zv 8yLP F<puO'}#;On W.n)LZycH,nwfkU7\y5n"%>. LtS9p CMK8moXqO*͹c\P꿾bI 1?j`ItfN:?v< ̅mS6oYg FǤ=Ϭ絁ns^4m-Lyc.[?WX޽/7W瘎iۛƿyײ><w:| +YNXy_X䋓p Χ9iԣq Lvƽ2kSW'/}Yo^ D̴$^`avNjՎV '^{Q_?=9jvC.==kmSY%^_cVq=cI+.7m87tIDF&Nz1wLƕ(MyY̬UX5ErƯ>PbՆ/wVno5@{~bqq Lɬ9#1XU37fg?c32bW ̾a\kUB:G|JJa}p3|H-Z}rt׿ϝ=-MjyW/ ?kwS2t}y'v[羉\OS˗:v3:))h#[ 8*;w|LnyڗX;Q%S?t~%8qY,XĬU#`n"fǟZ1!0u='qvY'm~--x"v]їD=;)¯߶u?=lxop V왽r֪EjuSc?fS[WmƹϯZmk~қW.Zl~-k~?m\LJ^C1%aqVܗ;X_+] `L2x31t4%J*Ms+ܴeh6vƈi7OxMy=)ʹ蝏G?8Ryu$vݣ:Qvͭݓnv~yC>v[c& ?O>(yy.޺4Jϖ~uS'k0nk5vkQ[PjhnǑWV 2YZIG&>~c;?%lnĮ>w]DAݎfZSw?NLvRw Г݉˂ MSUw? W1젖ŴM[9kՂZvPy[jឩN}˺"WM=8ͭ)lVw[ Q(P|f =ztn|G9ׅXw%皘'H- 7ijcinoKJm`=SgswP۲WX>jw,c6_zou> ,4kYNG{g&_H,߼m8Ʊ8DVMJf쇸CzgUO Yo7{JH,g K9ڗ$}.a ]lS=9O[~C}pwYvU>N=*)sYAQU7M+s% ǔG$0xu4_~;Y}{ w%^rf0NSC?#Lt2Ѱ-CؘO7mѶ3`jO6G )J$XќֻS{GDνQDGnhMN!:_/wٱ#||Qّ E#tRe[K__#ژya%)f'nLJ[$XQ$2{ Eq/ LskMjjퟛ|Ďsw_5 Xa"m)[=?rcj#si}$EOR$nޝJ<^<R;,aH}{i0~"f).u͓k`eSf/^lY.=Zk/^ljo/ύ];{JFЮ_LƑb)muu>OϜI&\U`R!ggMҏ;Ebb Rg<,Z(%x`~zY ImL|%ɕuZ$U_o[fA׬ݷe˖-~~˦7 jdڞMˋ>xT3}c qLc"kRVْߜĝgunsBtK˳iܿ\!{BbsEV}Cn0?m#}[K-(q6ϭm^wus0v/k[m̮ªY{Njk\am,Fs6N]F6jXuw`qan'+XqbKCK2D-jD(Y;5֍9sgH4ʢyg>z|֍FѺh40F _ |s477V $;"H+3vA_O\2o^;Z]ӧ_7OnӫW_wKշ2}uӧ_WM4zzu߯>}z-L>}몧_7}7[O4c76"FlĊYVg߾?~3 AqLz-ӧOnu8N~8r}>zw/"D"bX1rڅ?^_|#k>s'UFdѬ[>33e1 q̍ߟqqD}}|W^0>>߾VzCl#16ҷ0c%'KΌ1k6lDHM g3oNѺhtaOe3/9!F }Fh4zå_Xht$5wHDL猯_FD""=[]}`U_7}MuӧO/jӧWOfMl҃u5/5|cijD"b~V/?|5%ġ7!֥3חFq䤯=P; 1Ftݝ?H$LU+"7\sę?VFE7 S_=ąW|3`>|嵯/Za,)^rfL3sXۧ/ N-,{r%g楁Ҟ!=$.빋Sd1|3tT'n*mMe6UV&uSՃJ앳43}uIu].~[o~q;񥪱_}ac7pOIhd%ű=NKx}׸핞k?[F4qׯOz/n3Z?Y+RWX_^I9q\7|\ye Nz;: /U\g$ l?p Ě!\{/Y0tKɭ+Eh!6s/꧟ƠZy OLO}e-"CNe`( 1cCML.n\ژί;eֱn,͚ͺY^7uu]4k6ڧz|YV͒U@#SWN'~#.3y⎉MjƲxP>RJ|-ߙY͞=3`6e1y钟ٟKÎ"`Dk/Q}ԘU[>uo󣿻0ı؜o-r8u|=@>>2s|L$xd/hĢ-^)3cY ;¢/t_S}XhPy~?lJ_nKvE>~>wd})=?q֪>*c?< J/^>Ter5 s?01usw[qX/%S7UruS}@7ݓݿmpGn䵯=Uq*Ĕ[*} wq<4K'|#sI1*;g76}?>Sw^+g_ѯz3̆hM_H<,e 1_4Vd+ڛͤP&,(z˺4e/O.ց㠅U|w`DBu7jKX5uu+gˬ٫b `oWUSYоr62{‚ XVмKxU}_ aX˨T9N_>bq|fɕIY_Ū[1kK5|lInܱ#fOXD0HX*'?1}ƾSl!uޞBzb뼙QG4)xRvk_G "|vqy+hMYH=sX!Hhȇc?KH>|%퓧(h#ƆDz qλF}Uu|UWYYhlX7EUPu,R6M׬f8!;ELE[}H>ӿ{_[Y,f0Xm!K|˿& ?6sJ-E9DG6s=*|֫8x{_z7'&U Y"/gTidyǃϞCqEV-BPSXh /93/ =!E C h4x/EG{AGz,!ƿ}mDZbMD+?X )v?~O1cFߟ1I3_?3fLO~3gLR}Q~8:f+&I2֊Xyʿj8Gqa4~$~03z8=q秣 W?J}=/D|Ŋ1"b.JZ=4qԏp5z80<1x cM}|)v~nO%+Yfͬt0G 1%$:SާӱyKGv0Isd:qY^J?b#Faorq/]:1j16/|޴59Sל\Cu|g s3pDӇc6*l_ _}!8NLݹ|:W}k\Ù̅/ciMg&_W#/W{iNQQ3?vűpDW~~!Ax|z!A}=b:+WV/\OJw{fPѰg'%DwB+p'z6@Ks(WWG76yX1 ^20!͇Rz;ukw]Yk/cQkUwwًr{\M%ZwbϓQd8;q?\`؋/߿?@U/{LLSG_yJl~G( cԡ=C̏qw_wH_>gV{0F1~gL =3sU#*h"F=dbđWD\8~CqVc+q[]1Z{e| ^qa"X(/7SD3c#׬L9BDGu h4h߇2uuu裏F}4zj,0== ~v˖#6b8V|] ꎐN}hy?1ڈcE? !q#ڃ Yc7bD~<6fZ}!XXHbhnxs9ą ~q">b})LD3cXc6Ȁh*"/ ]`yW>yKG\r)XM-eN-et _y 3ĭdQ#=grؼ;[ fGQݳN>ǾR+<3x(NKG*>'nz#JZ|#ԗ< n08V?6n{9x '= `碗il%q +8bY%0gA2̄uJhXTPCX/hEH0"È=g5 lf"ll' 731lfMQ@da NպgLQiQ_QK>'~̎&MOq=Dl },5;H"\#XQ{ ܠsflt"cNTTɠu&8Ş/eX&߸fsѨ *jęb}c0XEկ`JDqFM7N~_5I_݈C"NB< 7`}<Ɖ~ ]\~_Պuu}D(&p>$Zu!"*h14=އ*ġ!1OZb)QAs&mzD`\x:(FQ1Dwzh %A%цH? !>3Pa'+qZx=i܇huZkY6Т䵢Pz̎!"ڟ>R ) df$BDA@,̄0ch["CĪT VE{$bϚP=~X$|_!z"KjX=&F Z(X 1S"#_z;'@q*M F!'a!" @D[>ѕIBKQDbT(+"jQ@1bԂ'*[ HW! qKD1Q\xHc̢+ T\Xq%b %"j8DoV!a"zl>"R6S&Q*D8(NĚUoO`#Q@Q TG q8R!HD%j؇hQ8(VDQ+J#%5^R͡BP!VG(R1~aS"xA4QgV!V#FԬB!JDwB"1Q+>D_ gT:`J#ĔHK*#FUB7#'Z1Q&L hXLTZU_9(pB/T! 1BDq?oTP ~u/od8PE_+IfJB<00 jx`(F* ]cTUU?k2:%*bH**Tbx,Yxhŏ?E⍨/5r(bX!DS! #kEd)Ĕh.fY?b^+ġ +c~>j#δQ8vV!W,5 \li1⁈~D&j*!;^цe%0a߯êq}ԣ3g =fB< Bq @qX GBX1*j)Jz$V+pC,.$> ѕOrFWTG5;D_ Hk`ըQU#Q#Q3E[9 D% q舆 qȈzLch}O8QQY 9%A1DD X&D B<Ɖr0E+ľD_[gրqVhw`*W-HDWIW!nbO!Z((`u*j-J^+ EǬB%ߘL|Mx`9nTG 6_w᭽@hy,[ ۿV}͆%R!D'8(Z!!Z)V*F'RX(!ŏè/1HxEWhİ\M8814+-DV։qVq)D81(V V@T`!bdȉCBT3D-CN4˰$!Ԇ7 h%t4 k!%1Ba$ q2D3D=,D;|>膏(KATQ9*vQVUK JQ3609y 5GիG\zիG^=rnnFvw^=K#Www^=ruwBB<đpGV"F!v[+b#"PVĈX16"VH0e`;yD^8N)V(ޣ $Uţ bhV!}J6? `l৏[w%UD?3_f("Jjb߆+ B<NXw+,k\1J&Wj>fXsrgԨ3#uu^Bqgq֩gnTPg$B>"X AX`x k)jWf*ch*!#R>Q% ' 1 $ E8 ' 8qj'jp wG!)XGyb:묚rmfJ}͎Q迲A R&J8D+'ZT"Z3*TD+1($2|D5CO4<3Q/+;QF1jbMV |``hDQGWKfe!aȉF%W!a <bh}!0a&x-諩/?䇲"jx1;.Z! 97+DQ1MLPED1X#XԀ5jU1u L4⁈> /Q%R6QLD*ezu@E0FW!SAԉ?X{! `_:N"8&jx Ot0K>"ȀDE#a L[qQ 7ZD`Tm?DxYX!D#F1 ~wN8pbFbq[!!2D'Z!VG#ћC p-~s'  |S9P_L;Q* $R!2gƒ1^l )=R_2{dP!VbX!BgE|u1Kŋq!{\(y303D9VHD3DHDCX!LcX`%Qa_wB0~5[G(LdKtp]*!cC4-(8_QOPPqbTe/Π^¨QA 0 =r~ B<ڈء'R!%aeOê D.}HqfqK4HDW!VG%Q bV$Z2EMqŠPI %HX!?D+'ZQ oQ-+[# ^f~|TQI4:D=n^+hh؇J6ʼnj(}^sU%DL@&↍?XDJV@I>CU,(N?!Dq~4mQ%¯ b @rꆚ1BB")(ZQBCŪXŨ/8HuF%cD !D= D2Y9D诵X?:f1`Tu@bTpX5PQKVZXŀqb` V$Z*ģh)(CN>JİށR!!Z ƈ""Q8#T0&0(ƈ*bԿ[Dq+QLx#6`E @İp?E898Q/)U jN϶B_)ZT! @ B|`ą}F-0(q=R`Q|wQ,:H8DeE+Mj!9^"Ɓ 5>qhϬBG"JԬBi:@UZV4RYKĔI|Mx`9nTG**?\uU ~. UK =%5QG )8F Z(X v~ ΂G &NwJXkUICNBE⁈|+HؗvD:A8Ǡq}k'cqF۴Vs,n?[=vj0},qѿh'*}'JCܚ;qxN?<^G>oNo['  W܂qWO(8>:qziןӔW١Ϲ \~xqHDL"Z!۝<RiIЧ ,ȷ+hTm lڀC=y; Rqϻ/h|^U15.8ߕMfe\bĠ\[u jT-(E=)R!V~|B|M(6M\_m}H?>FDGFd\l5Ru*Q>qv"B<4'*CN9^ެ?QF ?ſd ҸIe?/oQu(`X蘿[]_\5bWtRFy0ryKaWFů닰t`我{ť׼t1roWG]:/~  krxvK^Qtag8I ;`gY0^fg QvuCgΚ4D .yƸu LQpUbxD 媫s\uT\uwb{ᩙ[չ\q\5݉Ol*u%Gno%GuwbSg|l ēvlatz8 /2aŃeV#w|:F>fĦ _L--3Y1TX?{߳i/#@L9eY4 ]bTmT@@2Bf ٞ@C!  L,\]7h&n,)$@H!n3дd&n3 #1DjLfdqF7?\Q j 3HEcZ!VG(bu*j%bQ‘5b:/f ysfەh|aܒxϿdУe-aR:<=FU㌃?lJ$A6Hg$lQ%3l234lvRj :(f0UM"JԬBy}VY$R3I'G $f6y#A>b-gE|p 91v@bݎF34tfi)E;!^#3MY2m84ed;wl @2h'-+伔2.Y K]Dz/CB|uu@DG7@Dɭ ]Y?=uWLYkKd?[<t):Di_92K$ضf$xH}$DL>Y;=V?=}nb1Od.+<8>98A":pH_&0"=;○+\xN K/<繿 Na}ˁг? -#bwfZ:R@kWKbMi5t2[4 H{'C Ȑ=N@{.[Kd#tP3NAohO> B|e`"tYB H4^pצb37E)RQ~wZN~qѣ5zoռV~Q>DD_!\Ο.+vAp$R1`lKr{p@/_1>:Y# H8 qfCd6o4,^b}$^:Xbu9DH\i#C!R!wD?|2 D4N EHCx$X5HF n3f*.o?? M<<)@giMjz~?@sk,F<﷛ 5,ĥ$*?mggxh"ЗH?jNHq/XRC4<%F>p/KZКyf->[ PK$'Czmd2[&"ճH8xq(@0z7+plwDoևW 6L{􉣽k3=]4uڌPeZv};MF \5[Fo,kcF#>F$=4CDt|5 =+$+{#վ'/ܼQ{ҸQlXybR51ݐ]Y#h"_{~p*+MN6K~G>?z5\>U'>Ɨ3O-On2wq^IR"+攸KzcxJaWKf/m]ӳS;^l`ۋҀf\uĈV;$ՙ=Bw!D?f?>b=R ;wj\Yك n}aw?%U{>>gWcvB<ꉬk03/%Hפk~Voku8Xh8a@ .,U欀gt! )i%“'&Bg礁d K|OяGC;aɯ?6ΕmZ۹sS o;{|CdwHj MǢ|46M_gT"d3Id0P@x{ @@},͚IE=zmwd%vܨ f D2/ho]ycS|؈*6cv">x_4(@@8$D-(eqćt)썭8>f0E bT0bA_s,P?Iw+-1Z #' ? Odj"Loy|EJ׏cOLJWp6‰n[ IӒN>ZY0yҺuzqҟ3<ٕؗk!tL>V~q2ġ@2ij$ ]}uwjd@7p~zĻG:mƤS'¨dH2뉃!['1 q`"( Vuψ &JSb>!ï(CA1eB<L!~ ]#\|:$},8>fQ#;#kPQ:1ΪjD\$։1VHqnQĘWK1fhyuj&ܗO_}97A/3?,g&+fqFssWm5# F31ȊfgWT3̥el؀6_P$.i{i3_C`_c)q"߇q&)@GqVvv$qbMUk&CIIF!Nx}e􏦩?:֝OH@gWUfbcb6]2'pjܮ&-0;zhD=7T2`ZQh a&6Dɉ;]l{, &սk-cub(p  jO=FK DJ!Ox+PlyN"Ms|[^OҏH-Xl1yhh!Kd `-'ZCZ8I--l//M!>D=vKǿt_A%cNH:uv8sF>;zZ1J OP L5,dqG=j{yuddeF<>Nd{u@66t6ڱ?}!#Ʃ}u"i߯}d=ĝZ]fX"%@]?bpH ^CQ¢"!'a!18 DKr/}h\d{0ic_WK4CHYD_=~%b4 puKgzĨM:g&_2{7.Vxe:^!ܜZ[.o!nKYD)xduA[ ?ǩm0/s$@g붐x='M9Q޴{?[EI{w. FbZM/Hm: A>b-߽q"N'O($u%NS2M"{X^n#G%GiszLb}|}S`#TO8޹'R{ǩ;wq0ud#ڤH+k :)GC cXG%x>{Q[n@L#k:wǷS+e-ipX߱ Q:SQ[")%jQhnx%胫o~[[e˿K> @"# J#ԳIHO6,Bt{[Td< 27B,+D x<'I,Yr c55&W$>"kLmzuu"܈SO Ikk^ZyʹF ISA}l@2'1%^>tj-;{m݆ ڦ?{?  >a@:cm `XmS 7E԰A3`|oDgx'R6'j;A'K /l"2[[|8>%Q$P &$M@1( %#ByϝȆS/B8$^"ONGcs[b.SAnӤsӖq:9g6E6O {;9"R( qm3.;Asf`Ҧ_~v : U:k̙]W( /G}|v(~NMB2SO&ͬ'8HAk&a$q$ع[bd2'e3Y2Sn[e&TgN;5h2"Y΍|xB#~Cɽ<}]o,TlǺl# I d{}߱d&^z[fpW~m1aq` ^&N(5eLx[Ϝk!s[eچ䷾P:4ýcHx:q ο5 Y ^3U;7-{u`0Ί+`D#"Cꟳb0~ :?R"A滶ZWV0{uL脰;8_?LmkU7QCXXSGhpxAAgDq 2О bcmmM#Y:qG$ïVk#SYva9{o;膉GzQ7χSe ~ij> 0l(Ny~%EX8fxcFQ,}fqK(!jiqo}IؚGh`5c8TF8/8 ^%_ljM}|kn"_)!> ~UP)x |NO=/S&f._tD6>~|/&cGg-̏pfo7ǒ6=?GML!25Ct#:}jn96fZ1NZd6,Lj쮱|T",xh'&l)/QdNIG<[@ ;!1.A J^ٴgo/Tuٖ=ѝ{&f!}]28u^uv};ƾcǍ};n $3LgtZ(=!LȆgw^_xr iֶ364eit:Q>I-#S#^m>䃱bP!3QwbII_xnXjGhԉ 瞢uOp(XUTg)%3IoxnAy붛{??wyK|ጩ#ªT8qcer7یu}+m|y#`r>sØD" np(ei=~4ɣgװqڷ{hNBjǑT&F'|>ܗl?Ùkqj MHf!ۙ# Yj൰5=/:lMuUjLc].!qYjv /۲9F5v&,PU5&ok5j#d@mc{|o} luGdPg:@҄g:lq8{? )roDSjׁƦ4"㯒۶N)[4- R|4of~0C %a'fJ]/`0ǽ 瀣K4N-ᠼ\ .jPV@\Ԫb՘0;" uAm$Ls O|r}dHŘ9f0G?Ⱦ: dB5O^{:d d [{vO>N^HS!WJ٪&Tw/&Tl6KŸxxͨȮ`/OL2О-1Sݵ)CmSw.1,D2{`Dow&_J5n͆u/tBXƸoӨީ @'v~}3`}ƈ%peqK9 DC;~Z&8>^?q9?7 P.@!;sq^R:Dг(`vҗ(0oz6-E3͆ܿ\r%=DOkP H) ?{=&BKj'@zha9=WӞISt-]8e~ Rsij{[?K1bu  HX% d3ql]xBS6,h l)O. d?#TJ$t %ڱ/9~ hN;yƌS^./8Y"R:1 ж'/8B?%R,4Ej 3Nq7Fe^i[^ tf p> /MkduQb'F3`} T5HDW!CORbjh~;B& q})"я~`f3K/D6FLiD7i[9os<4tyHMaMϝ\#Kђx)^KGvjBCl%'K2ŽLU[LF)h!gޝ5Y`x:txdai}I.ţ 5T~n'f$l;#ѿdQ{8Ɇlڃ*hZ|#L_{ԉLz~=7|nbq*AYCinVϖ(gx"bz@"2D%w ,hRا?cek?v+M5w>J>EXҨlO@Ȍ-,xq/}3G5sjkkjkkHT:M"5SE{[Sj.dc/M>c>&̎V#>d#A=xx2| jw=LtP:wfNĆPO2ۮq+9ԓkv`♸@}*:2c BDd_Ef5$4APJ|d$+dBgO =|NA|4"q`"&e_h!6>Z&\O(8 !I?3xMj=n纍7]8D$Du5N1Tpb,jĨjV9!Ax `/t{g*}ip:!/ҍ*vVGs eY4=,z7/;;&B6FOWCϘ;gܕ??|URZHkMw`wù8-{Z7\Y:zg!`=,d㹎G,Y8V׌ ۳ v2KAcBunwi%x.7RLؕ/>߮H6$dgz|LnBhl}Hdzo)¤:ўV2왛93Aθ_~ӢN=I2Y֊u |}'3|kT9TCBrADCu:(&p /ķUGjܟv=~ġu1ws')Ή`_.QsZHۄs)P^"/O5š9?q /d6f>M8q$8m9 s2x@q`W!HD9DnqK8>Ҹdצ-'Uڳ5uXZ>15 j]`&&׽4n۽ңDNd*}R+n}7 ϛ<_o𧟷25~}pD/6wo3f"PA{唎c:x`g._)cO;.Zw_qY@>C1 Jzh+ddfld&Wo91v'W{vE"sBx{xҐ(3 UI5zU׮*U4!6bLD{ *:jH)0ݵtg ٌ>Y׽7 @6' x< IF YQݽy\'{oao8gc4 .'~zk*'>O,z1N { Nh?ؒ{^H"G-/Q'_VOtևoѷfGVہҙ-8@s/2Ts\x~zoҟzYG_"+{xc7nmmvӯ}+M\e*$hĚ)˿?9V$'O|y UwiO=c_wU&韾񡢘N '-XZ #Z/` vvRW@ijq @ d{w13WВV=/X7z:f6lY†'/IpQ][qe͟/N LXxn{JW@&=Ι7f#b]x~zK&]B*/9-R;Ň6& CIFHkVK%E0PHb)Zx\l^"L/\ E O] _}Ln$ȷO}I^ZN3 sl~Œ "_$Dޒ;wi7˟ZO`򶕟}9 t$ZŁ1KcXG"(s(3 q-dہl55AQϐg } d &Ϙ7fx5MWxyψ}Z3OlێkҔग़"1L{fP3׀/dhi`Wip#y+AL7}?׸=Uke]ܱ'(oT5lO$Ͳ;W>gxC3S!UD=)U :X?enrDr HC#MW ,`0$)j/Z t_@[uo/t;ǀˮB_}b3M/tr`vk&ؠ5]u'NDs䓿) }׶|yN{=S{refq[R'"֑'tp=>>|3ub–-di:#q %r:ĥܑ v߭vFqOg0OGG1.GBۮ2"VfΩ{v~ $ʯz#d @g[<J^?^겲/M7ׅo66ٗ`s g6n>clͼ53'NI$ߟeIj@74Ml9%}gnܰ92'IK)P*ģhJ+FV:~GPn~U=g֝tɫվ[( Dſɪ* **⌳460}$~ɟ 45' 5!r[w#go F*JFsk[p⛻I\[='nȹ1?yz\\4 ޿ey-uO.Q{^1{ON6%#͔vFS곺s4_1JbhbD ID.7xWmtqB"SjGQH~|$)u`Vddk.jᔝ&4=֮Nmr&fbD/~Z3@v>`̈́?ߵ/^T/ga¤$8KECB|%İ9)YĵmwMK7=猋?Z|n[]ӱgtJ+ML$T\];IlS[]!$PԈgۓdk )4'!]bګ$'tהNG딈Y%`Wdlծx6W%L_bGBD.=e+gA(DГQEqt7QaKO~m O\b7sn`L7wSc43S!upOr:9%gDPx$"60.W~c/րUn9%fy~mB{sC,n BSw^scbhNd?bJ̖WJ>#6P"HxK2 : ܞgP>;%RX)%!پĸbLj}FftN|! k֕#Bv@Ro}{J)$.0lE ;rըtO7COy_!?q joȶķ( _-`p ~X1!izbi*ͤ J~e>)/;sf ! BH"K+\jŷ]me2}+ZXkkk}]jXvBز!s~;I,J-<93::kBW"i!B\",["3LvCdq̬W'#F1z|n>hD2|И 8 >,Rܐ |eAm4Zܐ lEijZ7E.FC7b躺#{NB{W{lzV]1(8$ee#,9D<~zvV`_3oG~zo~@>:/ %[>D#qXQiC98ăKg"S(ZxHD[NJtL3qXXd&[Ūax,&GŽP!q"Ǟ]nn!"I1 `wFR: @{D |D(, Q+j!47?-DPlb'9ZQrjj!HZ6@zKQ:>ҝ9^Uj [h"(ޮ(ĉҢf.f(v Ѳ~`> q?DZ"%C@G"Ҷۚi7 (vQzM{qي>>֮BaJhV7_7bB Y' '0¡0xn" ݷ bƏfֶ*32> E3nxvQ؀7^eYuYFK4!&lj  }^{x#Gnw_k}O*+"wDa/63PxH_QʈeKgv(Xe@̴jUxѐ H i6@̺jwܾwo R>رx Y_ѓR <)48P5ԥǭ1yL c73z2* >=8$bMCE0^G" 6b}<4D5&bAmn eL:ڀuc,œ0m>ù'$)+p)l[iÐ m:={&+)@J"Lt#x`%HSNדh#t6@4 do'2(&>I^{4;D %ս=heR! A'Q>fǬY3j$xH"bAP6GeIAܯy kQF2Kˣ '&3ŧ\]Օ8V +:QZA(LiohUg$ $ku'X MAclnsIivGf4 .~x^JC IJe̫㧍t41}jܝ0(wбZ "- i5JN5jme#/PrW^~i&J HE(# l2 Kdq&!*^ F{R(3ťP F]^mjCed,(GFegD}-dAdeƆj29-ddh}>[Pq !ս=Z,"q>~2D9D #GD[D(-J Q*(q*I!"(Wšil*;6b6P-]Ou!:nieO-3ۼu-pKe^ H'?1c6tGWhN ٵ9;3hhCNw*+e$ 3ى;rzHA!fF:RSPk>6QGN4rnDF;4@IIy=9Ľ>\Db4q;huﮱjhaĝdֳxJ6Yygun"d}qW:ٵ:mSlbgV{Eqɳk{kvNC;U44ĴO1-{J%}>Ep@)CBt^m] T鱕_4[GęuJ$kwtY$(- O`ZIgN"a .GBP%}iwY;wEɮͪso^ 4EnO؛[Ѱ7Oџxz*ҫC)T>bCT[_LJDP(X JoS?- %Qhs%T"|{HOvb0[ R$`,ӵ"0i9_T`p}jrj&#M44fdi9F!dd ǰlX|ddd@ D[rR[LmJ{CJ} QZ"=Ͱ㍱&tJE =EIݾP#{6X&u[%L 2nkfhjkvkm #6e_Z@ˤO1!x) Ľ?Qy?2hDv(1Jof8(] mJtgF|xK*0R ,tCqK ŋF)}+ 8QIR-hd7dڱfg:AƌlȠ!6&6f ڬ j3 Hcqv"a%6snt/jϡ$C@tZb뺏x1,hk #JAc5 bJu@[,_= DE" M P\zo-"3v2¼L8Pb$f0칲X-h,jZ: /xLmZ|dhFE(͠vQG-M4@l聘}>>5nOE9DG(C׺M^Ge8EW3KbvKrj)eVמ%GL$GXQU2n`!6&0w3k_)x}O"I̤oO  Yq+eȬw_xK`z恻F"f@ gЃ\9~v{(uK;=8 K$lhF tWnd4dK'51+GM?5zcRU~zS{9DDlqXA$u4[@>`E+)}bJA)H6&aD I'+"ik=/b2bGč\<Z D‘(MJ+=Di|lbN_pu|Tǵvh/Ѐ(ЀAIٰӉ:#ZטM硩i ML0z]{Hoh%r؅( aPY󢑤ZUjw+W *&/=K$i,LCvCmO]іNr[{>5<Ԝ&?X%O]ISN}8 [se,-x4&δ62W˛41.524loDrbs%ձ&E\Q ][_}4]DY߳{{1mԹ) ev AGtbu๺ 6 / ~u+얮?rÁCJ|ُ`Aev Gnw!aHm![K*181=V#n[w)e* k>~z>~n^/8 "a 8)r\EY_ԾqpUͶcHaUUPHU!U81ɩ*ʕ($1NU!jb230AWdb#VtDq0z@cWl]T+6h]ѭrm 'f}MT>=ioxS*;-JI4Z`[]r22vkhm ڒ3hȐ4dH}f}a5PƮ~ے322wuzkNB$!eto[lf^>azžs]:?꽗u7ɑ.f{>b ww{hukͺJ̔ƀ%Z 6kIג~->V K#kaeZs|;~6ג#cp?_Zr39g|mI5N<ֱNB=*l''wdwu$ggut$rGGvrvGGvGGrrGvGG[[̶WJv쎎쎎##gb'Z:KoY%!#tV=U3B>b(!A;b5 w/Ve V} V;g  Tх9"ʣw>^-k`֞Yh#bVg֍eQ@[֏7,"4$m<UnH|B@DD@/tS6&muQ mіtJT.;Q[DCEkWe3#~prUDe;8(46 6=cAG@;=(&^Gt0OQb=cmU*XmQXXeAYk-J\3O2*Kl"}#B}#A_"'ūނxPX9 x`ݕƬ+ffJ,DGD=D{]D}Z#X뾰ʊq5;)Ɠ k 1>g(3F4(.pQKZ@[ XjG6`Xؘj13!&DT/(UqDu#~rZnUV+h+6.!e XVe|"(`A"~*~:J>DT #ǣc1vi{HNl+ Ƃ ͂#B➅7=D9$D>[DGQhzIؕj"Zbk-X,-֊XeoiTjbDXWZz$#"}ăHD%Q>~G, *X_UF\լ{F$z"> f}L~:9"k"D#v'hĂcDr}%(K,`c(#~rQ#{"%>b\EY#nŢLLB)w2VUO}CJG<D}cf'O莮u'j{V v^QXmbX-b,+!Eum;GL '] G}#AZP +F 3:,(-$ ZP6&i+֝|J-Q::G#N"'HlI ]؋&}G#s%죍W>'j {wV[-B hY3skmi$_#=D QzK4G-?9D;_"֊;*w'WC\i5zI3EG#R hwΡV)FY+ n'֝6 od5JO Q} ^9xh#A'*-QsD##IGBدu/o41bA`In |(`@QR>b"Qk n˜ژ tXF`G<ډtb}t<"%9"G1E,^A1/. IL4#6"GbSAT}2Q|ĐDD%hR7>⾈]Dx0޼>⧞>."mnڂw9⒊OU D#B\G+^m3Bs Q{JZ@y~{hi=6>pf{mqDu%zM>b( *CDm z[Q֛IFa⒲"Z܅q^MDeV?D'rG` _ػXݛhG#@Lx{HZ@[e*âׇ(bD;JHd* 1ʳ}ăF "L?t_1W7ݳ1 7+*rn)ܫcz=xJ㚮S]Vܫ5^1fG.dl7 '"3HO0c@z3<)}@zftJ1EWIG'13O|qtەQD|""ʧD](-Jv뗎]>s?nr~(9r>Iڧ;Q41݈ȑs\3B=;\$]|TGbOB̽kz02s_+Qbv!A؝LQ_بɽȃ~L2(,Q~Q>QG5S{kQZ|D+%JO|ZR}/.Ś#]tE]tѼWD|rה(9pDOi(ʗ`օ(KuD6`%JIE]<_dDyK:R|D39@ %KDs.?s2g̖nDA؝?3/~?j?,"({p%7O/؈OqրW259|ʧvʕ\]gNz\u#+1ʧhIU"\.Dq_wJʔ(^_R2nYz/>mQ;QɓةާLKSҕ(rCq9;QzGQՑ%JDP(y*p3T/* y8mI>!rWȴ*BH|$'r0V"]!#bD$.hP&ޒ(k5jQ1bQָk5F+ӸyEA4Fh4]R c-ȁq"ʱƺ~шupLW"-0A,] L`X c,{'6Vl)kf({񚂂轏/QU5?JN>}<`b0qt%T魏`z#Dg0@f7$"y&H{#O| ZQh뮇dbU52Xč.,81.,_XN<զv!ջ+7UK6'bwm+dG`3W vWϘtJ =62eKM8e&Xd ?r#`Hw>v#G+r]D&@x؇%=BG >b/Ck#Λu//_j~D:Wűv\ *@0t No$=W {#O>ILqmcW">gKM8becfq"ړZ)ʼnGz#%JD|DBďP{#DL!;)@8PNY$W"XޅxkG'fbQ G:`[:&ZkJV.{ urrT 8{=t!8dh@Z2JVKݧ˸+Sv.D$SFI$'S]^pdMFbҀ(X>S'=]2˕,+VxĉIDYV=ң==gN IVHf=۸ˬ/>=XO p{422 lb0ܴ)܅QbF2*kA FK6jQFmZcsi#1?jl' *lsg{ohcI)3,!;T (hױg&jS~;dtѮ16޺{U{50Fm܎ I!-Za=Ku{VtvT%x7X~斗v{lw-+ʌδQ/ݫoDZc*g\}N^-煐>LmP;N?atOÜ7k䶵ˬk%6Hݣ ˖dI?ݭ[d_6S'kuʲ3ꚯbΖuSy۔ټ.bj @ovM}{22-"yUFS~EnbNSkΘXCeD'޶*S[; ~hG;cenYK;kO*ڃՎvb#* 00DI{!@) R@a=r0!`G CH,hb.+&V2hbc1Amn(׷VTͯ5_'#ܼ༶;m$]y'X2 ۞_~vsWtL_n5k˖fkV21\SC-+ `.ʭȳ55ѤoHpu+TeȠ[jV$955Wb60cSʼryvy`YYSф^(ɩ1y mg_O255N֮ں #k1I,6佻Y(Z'mykS^0bk+kV:g}JcW;5[2ٯ%Ԭt%`*^X,Y:W=UyO)YB}v5hw&?aAhonA4emyUPؑT̠L֠[/15#An'VEzQ{8N 'P$ 2!N M<)qgHo| nF)#Xw_bݻ+Qฒ2@[#ĭt%5~߰%^P|sٖ?$=qa^,J9|:pEʉ7H&:^/LQ7wҙ]W(gL{ ##5`!yf_4Lܼ}1&x%*caUaѰ'WNܜ6ܗ&1( DS􎉓JVmmX|Յ[^c|43լ6\VU\g[>M'iꗮSw?BGNzB6;o\d[D=,Mܳ"kbOWM,6 v;@֔d~݉u; ' #(iNU)y s`B:_IZL<(볖+ۜUUiM2q[arlK]R-Lp bIC g gl.x\D_KUVh(ÆQ{,X/Vc G/Q!IR/:"RB0RE54o9?as25E 4oҏ~&ښ5ߟ5^Lo"Gϫ]Z{+Q57-(+w^Sh3oIv#P̯Sy7ig㶌`s_{nSlMu!CMaqe/3@ߤ YCX*mQѪC ay㖭YZՖRl#@u~y~b3$ _0,GxDAowjlͲ XKA=j_{PJ4+oh'* p&L @=d, @h \̦pB*ucyGXW.UP rHtnDn(oi+e3 ;<8i q3ʵ-Ĉd:J7 #+2Oا3֒ck*f\?% p)̸:}t]l}?}7aNXHcHJ;f$?54c>cF|a &9^GSm֙Ϗx5 2+r,(’, htA_'m_)tˇ*ޘ7fT@%hfVi֛*=kA&MOdna閪@ Kmӣ, ~wYix-ܡI53=ئg_ 7d-mYskU?v[Ft=wk/c#*3%@G]KdL߿d?Qg~,QF3 ]LU'h"QEDO(O)o#O('0n)\꭛򒫮p?n%w5M();s_S9JD?~.WDU4E](%q71>Fq}L~kDn?~룔d(aW,Q)Ǎ~;;j`UW̙8nM"ZtS4OW'O.|"g_uy WW'_5I 65+({})71%WҢ3sS>a.KJi?z%b&_%#Hٙ7"W49zZ/i9i@M|vʪju[Ʈ,rƠe{Nq,iiMMNJśjm8~7 oCӿ(*5yvg xc;k>6׉$\V|L='jPjO1?xzJ SK~e Bҋ=JQǶ}\ؔ_BL}Ke)+tÛX$ EAY ^k~K ݻJg(+37<=2읭^Y#!/̌^Ez]{^BAA ,nr(όxšB0r#v%zIc#b2Ơ#bJkb7]8"cРű 5ycBW555555i}JD8~eNjېeE*wl 91FD,YEp=q^]ĉx>^蘏gF ^jo(x>(b \_5u--U.H~׌qmolRMN%ߗʝ_ƐQ ]X> G=d~~{/RK VAv3iϮ[fj౩eB,5A 'Z TS/k ++7Gh3)z8BV Ή+"=zS{@ P2}D%(wB9a ŗ1e^D$&M \FLZ]F}+1|G;Ģb6۩rW@ʂjYX5kTBħ}>’~/7_[SAEMh!8k#H \g \7z,@:}AZu҂mGk?PĘ>kWҚ-}!>kZӮw}+EϧOtN ?;yP޻,tX>),mxp.mXk+k qh:kQ@O .^EK& Α;&oL rs%TY[Y4c^ Q }LbbeݽЛb9ʈg"0%.LJu]yXwf9qґ#v?Il>׈6 Jmc/Q!beXYVH;vعcG0cG&^}q52-yY^ l±xgm:-COf>66wƦ6?iڮN y'd/8B87͜~[NpW%v_6(n^`N 11MǵV=`F:10yM/MluD O 0#IQ F!-jJQAQ ipܕB; WRG}G=ʕm)渟%MȻ9Hɘ#oԻK=w: s}oD2'_MQ1E[mLoB;&eje9s*+Wk7+,QEo?zg6gR`* P|Q4~._y|yoJYPG U¿X+mg~(c5׿Z5ozBzVp`b%3ݰE%WK-SfO2]˺FҰmBM۝ό4 "ƪAڣzY{hHB$|JGrl@!PaF"P)#0e?ܡI@"?ký$t_DA"(̢1Bq-wUA{dVg>Z omxYcml}(Ǿls6Bp]!9X*O?_幏U`1ժ]|ttΎ=+q  ڻIcI89 6aydAzrB&X`+=GL<3Z0`'wXY[c=˵ yy nɼmRcLkAk0vzKL0̝riΐ pg6EzSXfW^B[AhY _/=ӭ|losS[60@7K=׵'.%DT= *`Z9pc3ІuS̺0.I݈SzI"e}@<f0"(E[%֕(qJ):k_ ܢ1$ 2[(X ~[xCGgg8\4:P-#mne[M 8An[uym@{î0a0rb3Qs;ׄIǞ%f-'^UpZ0C1dIՀ%Os* @Zg"|뒰0Am؊H6RUQQ}v___xc&EY^XLΒ9HDT#@xR(D4( p'ym2.%s0bZ+( D,;z=DQݎbAAĺx#EXXJc ʶTM:6 !R3gM<`[*k0ݩpoOZ P=kꀎV wdbp^ufG*y+#u״8~6er*WcmJ[,mntBܕ6z-u1,ݲvD˶šh |5( 1m]T _L=W"}pf>XT,iBi:wnmrGtlo*#&Ɨuu]M]CWvS.Z,@d >QE ?wxm^n| (ebwϟ dWl*Yg*ڭn/ Rͭ@5NܔV̦'xf;Ļs|c_m-d;f3v^9vM#c>}$ _z*rUXe:VleLi-'n_2o#hs~ؕE9۟F/9.Z^°uy;T$תԿicqʸqrbmA]ӛc?Fnǹ7K~Pfg. W?Z2ďJ֝B˯,X)jzVeb6ОX"Un8w@%iEҶP֍Wfn*X8W$UA8•y-[퉧z'lFTrG*#ܹ",4p+ W"RBnD8whc{%(wu%G܉J9*? 5+ $6Qc,1ij}M6ן hXV؊E'5nɎ(Zp}d.<ݟ| \u͋9"_~pf^ޤQ4P9~ҕUܼ>?Nf_Rұ#~ )Z}cW3:N+X弻YO~nt)T`֕Dw}pH,X*v1h>V.Kb;XD nϵ~̕BfI^AZc0؅c6}]5+H0e!=H6]e @ "Ik_jm}ڼ1 Q{U"=3EG"~@cCFY-U?=i`‚$˂oO.qԿGN֨HE""|JDk>)o- WsR,E-Ns sEH'OuQ *񉒯N(,k4ZiZ>g$)&O?xrn&Jbrɓ'Ox]r3ȿIDD 4>y7yI'Oy+Oj%M7 ?yr~g&C]0q\ɓϸUDDIYgsս6>"_Ș3#?qrL3&v [DD9o哦.w;[cbx$'2or>R 7^>9LֽJ瞺#_.>%|niΒ׉+ߚ?yr76gHZ -"ҫuB]D!НH( Ë);Caoz$Or%#ƈphf@05ܧCb X'{ =M[jKw8E/Yd" l];Ʒ=q]ɞe4&Xdu]/6D22ﭴ-˸{)NQ%}SݲX4',yuʼhspofmN_Qih֙T/+);@C~dl8;A/Ս.ٱ_8-%mWwi 82}@l=mo^>kLsw,cNM_|63,@ wOܫh:v:rn*h[<^~*chk:vp1kn; 1T"-fc~+X>4+"u~ր[&쯊(w}'Y2}DX-vWRMJ%HJKDtSĈI&QI׊Q"MMMM.'ʧDub>4ISSGQII[ORmiyv\= %O|iRJ!]+KuSJM&fHLrϩEiq{:_g> *qsX ƑnjjRQ4ĒQMM3UxYֽHBfמT$>bH+6eIx߽cR/|l#yb١&7wO|W][$oWz[Oz4K Ǝ+|}e> A.Dٓ(Dz1j_ד/cN;{W}DݣQA7F3A߿E5F:D3(j1E|*͘ i%0*{[O#QJ v7#A?^3~@c3e3@@O9pQ~c~OāG-ѿw0g,|nV Dw-F3}r#Hԟ5zKT}.Df1q{`Q6 9[л~X.n6kg2-X$>J)&ڧV:.ODixOXƽ9ۢxrOTG-Qz$%\Q4f{n'Rsݬ G"o[{f-ihJN3#{IG-Qz$&LbJ=yVLtnj'CN w1Ne@;U tl'sjGã.qWs‚K}01 hwGGA6"hqPJw/HtJ2hD9QsuCT!xBC㦹ޛiȌ" 0/' !x+a";$C >5 g|ADA.]'W ƈXWrXX0뀶Ο#8({ȉxNCPu''Όw.w]3㽭 )R,b.~t!σ쬫Ko|y|3KzM쭏PbE h/xq]>ƥX/ދc݇({MQgݫuVgD0>g%]i̙X'}~^gfgK+?o߼zWr-Ws/~2əuDAѿdft,Bh7˫xוDDkϦG#'^UqD9DGb`Ph1C G "P zyR-#vxX &[YsB4_ؘr 돽Mx uCVuNbi'B"݉`E,Z!&hW JYV@,hcP tJHoh%rؕou6Ȗ$ŹmQn .)70hԒHdo/2^vvL93fəp]ͯeYGGa",ZH5 :G]%7ETDTyG#ZHd@oaS~tׁ9k\?ֹg~I3zDoK/TvKq⬗G5/~_r<Ծѿg8WD%ݺH]C|JZ/XwrRZhUL|>rPUqD-i!zKT?6G~IAބ`_Ŀ]6[fs$N% Fq;Efygs܃O]||d7r͗2K'ݓ}g>˦̓EED$?Ȟη9LjrDDuq?'""*΋uwTR*ūʧ|JJ{3i*R:>7Cf}O QGt{=, @(ȬƒS&N.K+.Ti.YJׇ0#ofᴅn!NBOTtل~ApqN)4rJw?_ bzw`+y3rDȸq`s pTI kKv\|coǯ.'ֆػ7ա9+:ML14lu+v}{WzF>++q?&a$&0b5C; %'}}{0f'xJt {N _Y BjѨ%!7nTҿVaMUm}Sv~cf}?Nz7q/wXYwbzKfYɊSQ2K/3wusK Lj9~k Y5x\%bN\|GeD'ߔl>mلU.i؛xvk~}}o'mmgEL{s@lvJN$GIG#(~]S3yl~؏νnҊ8-%;v[c;wS^~}I2Ҳ򌺧|̗rdIOvW F>9ܿ @ {EngS*qޗM__bnw/o dWk+԰*f֛ɖjJ?J_sbEX*s \ZYNU1+scqڂ3cT8hWQ`[/&ELg7mҡ%*Gl>btk&(ԷFGѶgf<c!v0@YĆm0()h{؎E5/}fcW;=l|_.h]p-wΜ@; dp==4 AiouZnnw^ʖ;v:5f͜tx˨QiiiiiNԩR~# TX[NG\T? IV \Fh;tz^PM6avAMh:@z4HxolX8{O=RcגB!h@D9ʓHX\MlŤIDG%#Q^{9d>)~Meh6u.[{{JePU_T?I ksSz羡Wim]oK!A('RB&ؔR61M! bw\ӣsCd2)n-HF t2LMMMkOʓB>ݶl3{Ns/𕓊:8W?_ȢEF *# #ydтBf ]5wkv|od$]3;77 NL5t[dCOFc@[∲JFY%"Gb$JM9jG"P.+ DH,R 7ӸEgovΦ'>!vh kxp]'Iaq mޕQM s) 01 BZ֏UGnоc0佲;2N)=`٤2IŻ CCY:ij4/-G.ۼ((w :~eEĈMrf^ }|0$2~#P-EK9?N)o"ʆo"ᰟ_I(T&|guFC9CWdZ~9CW$ݰs_˿R1}įxŒǯ\-{С=锞[%S:)@EbqR1kxk݆v 5(Q:ch_?DA'#LF\7Okfݗ ~5#-x= Y.sju텍h;nptv/Uwe-j DwR򧩻Ѭ*G~٧N|.DGO)D_h-˒Iv}Gc;LWO6ٺ:xV߯${۾%&S<\2SS s[:]/)E_ZiKu[6&^ʪ{>Z!c֚=ܨ8ݵr׌=&5}U#9 1:;|eWQT͞š_uߟYO掹]̽b*70w.n/9+,R_=d'lH1'h~ếNLu+g[6r)<~]SY2{d߈2%I>(8ʈ4W$%HQ{%{5>vwdDcxDńP&P/PY}Y)okY][7\pJ@ 'T-0B>8wMnmU@!6BA(2 "p_֯BŹO-;[4Dί78[s nBvˀ -߿tt Ѹ9ru꺶 eO||N}r9-?榘U>}Ϳr م8bk!n'kywACo)wi{.yiNIn]|jڲk[{.'xk-R5IL͟x^[ GJ?w~pn&.|s,)9W1͔]>7ucss m:9;Qj(ngGZgSd5a]ÆH^֛+'.Imi9'3o{^=Bb gذaM>[#-K~?nMoS2w!Ves%MjWe4^]]}yO b%3%04]A&|ia^J['኷u|j`OlMEg?c7PXYfiږU,==oKM̍1|Ӧ itܴezTw \V]jwXp08VʽX__+ *Ģ@D!G6st#~q?% M酏*ǗfDRO7>-9D%#QA@X\ a2~1ʚ]9T~t=O5MKw&s%N; \>v[zpt֮u}wS .}+O]ꁟI lٟCMNs?~'rveƢ? u n+y$=?^3?)@ͣ'޲㻇YSIy"7+zSպK&fmaׇl,>{߅z(BXذ>tѠ[+G,~8s\;[p.D|Ϥl5}̇Wlv8Vw$q^;&N>t/_Y*u=iʓ}INڌX;UKn[ ,(?gg wpk4KrzG셏r`>1"}#AGU0p&<!",™{-[d5~%M[`!P:; ٯ 96_60GC(kw:l=龬?/0ɸ!soPtvyg޴ 00wG"N^x-ܳy =m [#roВc|g (4usiE~ӫv1#뽱67'To?nsG) D#v%*!TOL3r1 @=IVQ%ܴi p2e3t;t_mZwL;Lyҁ:9?|  ~+?*2YbSxuՌ(S(%P_/Ϟ?@mm|m-ٺk_|O4YM۲Ƌ=v ϔ^ۏ.⛣mKض;MjܮK1fS?΁s?#.rB֮?_;ȗjw)LJc><8@=wih"&u97Orj C؍ /79iQ-JIHuIdX$֞dc(qw&a,=b֓'>94ڮX.&`@<'QS< @Gw) M/n M0oMK#S2IeӦ( 4%J0;J/Z Xk PAdoVb8g:/v=})eit[Y|s1@@ee0-_)C @|u Νk΅N]KnƩ? N:ty0U6_v! O+vEsJFouhJ[n6%@_(?aJbRG|&`+,f SZ0dͯ42e/Qѧڬ_ @(w.J_MopG+[W1/:wƶ -Gn\Ʈu}~} Bq` J-p<`@42no~mpzrDV45'JTCdPAxF8*+FZˆXQ%hW5:XEYO9A2ҕ(k]F[Ͻ +bG<Kʚx6hg?NXI썏@|tzKSAT}mDEEh^8Pz"P_dB]8ͬB<[!B$/cwm޳wu#֍͘B~+_5ep̃R0lUO`؇+" @ o 0%34|TLKdSsۼ2xZw|gjeK 7?smiwNiL [0Ѳ*2uO%R PYG"K_KYд;>~oEɂ^>*[ } MS'P1xHťw> S4*^^Fv5G[2ߪ.c{Q7N=nUM %% [y 屹CM'!87~^m?_Yo^AJTAdmc'Jd*hĺ݄ޒZF$Ƃ hcXJ8sV~\g&YQb(Dp X qbGNGkJ5b;G$pt4`p,Qb1%c'1Dmor Kp7̤Jw9Ͼm6筡yCBIչ-d2[)c;- ,b)a}9'?6Ə~U5󼹨X*$֞3΃FYpE%L@w/ODcty1"Z9R:wCD+={y] cH7$ϛdHk#"=g~2Dcʼy̋Ɖ(N6 SI${"%>bsEG-d6wh-XHk%`EOq3 t@;ȟ7(J+ TŽut : "9~eAɜ+vKݹ;ॴQgx:-r^;sGmټ%_Q OD_:ܫ(5kO?>e2_{x^{n_]|+I9on}݌H]>7krR|nke6cY_gDޯKف>>ٵUƨܱP+ Z7W#j!`Eۍa(-oZ͊@Z+%5ٷY>8:? eQ:}uܢ'o{Dmoe H?VfDuưǿܒ]%kG?2Ƥ Fekֽ}Xgݣ6D}=y?֭muI/6vc3|aK]RSE+n.54|gۯ_.hj2Mugy܎-"Q2"21 ܩxV[e 7%̖(,'7v5`V۸v* ڋs~o#/ZG7oXQĵ+ܽsZ^{lCچ_[~Ͳo}G[W]s(3WEZ{K4wm^z] pɫC;e,sf=kj |V4zl?XA۰-v~IͼQ*KXvbI(%2VE(nv1'QKt#lUbP p}7G\"[꘿EW.`a5|9~H19gk;+;޷M sȴOf{ٖ>o~Bv;",ԇn+i=!sg苃;w6s9u˗;)`]E-Q>ھy;wΩ͓,=YW5'ZT z9;dq-Dty$]- ؉PSFGx54=V8 \;ʆlx8FSpmWޠsVRzn7L_?Y۸BOm[з_ ,Xц֜_>zdLn[x o?V֗\{mIJ v{ n>ȃPm&.i^eUekn5]ymooS%jh `qĠV1^ٓ:ƠP(dR_o֍c -朓CFflQXPkj+1(mRv77Ε;^T-Fa($ev|$;Uo h#ofZ2X (*S&c܇`Hu2]T7e'%hHm\E)'sOq6y96\ӿ1bu˰:M磈6hc@ĊűF~"&rD@aE8O'0|R`GP8}d4{!)]θ]kPXQG :~zOm/m4ky[r;9^oRߗb~e~7"@f} :Be֪WP}Ljk᧭zYJʉ65ǷAXeAl Sx[^:oWc^߹C5'd¦H~u`ewNSy鯡p@sːIp]gAeP8!d4U?R7<⤤Uk(3V)-?ҿS*o[::u)Zr>"`,LS'_XGKSnU_xKlв2o_ulO/EnB}MNVTvB%aqHZj|fnN']R n:m*q:b@k5ڱJ⃓ M%NՖ˟PC&7bmJ1r4ۥĈ J^Z?RKI y7U|dKMgڍ?θ[8طO-YvbcP~4X6G/2R3)y1oJ&-]+Gn\U,wL\zFsbc \tFXĥg~g8h>CV{="yjV/-7\;""G+Ѫ "&#Dd 0;9ݻw޽uZ^keRxJ[N/{il-iC`5I\{J#8(ii;ft6~nI{aLM[yog̯ vw~w{V;ķk4>l_ҠVF z";sꂪ:?膜,zG-of ݐ$"}/Q!VZB"n>J·'f-eD?;{TuKzD_2#b@lώO.pDݍ3`=K;>:i%_n2+2iNCí(VO#L`tSǟ inL5fuKuw=a8"(>X`QA[bj7]s"of[Aw*WZ@>;j⊔j[U٩Gyg:rtpɓ~,wUBWUrJ ũKn&oFLc_K,Zjz])53k]f$r$%#1piZ >/b}cKIY}ohn֌Od4zfY]mfiDZ}a4wY?WA4%0G@]Ȧun>xĞ%O>!X DK,3wκAvp{McϘs;@o@>_=Ȋu2_U}|_f;WwC&1G:3$a&Wj8(?kw'H;kwsB6,vTniOg­O[27>/#ČG% !4'8":OH/i}i]_3 }Wc{ޯ+#@O_2/&4vroKq~ + Ē锈 oWFvn XōʈEIpf//|}-nM[$s~1gi푫opjt)#v#-o_-$8svǻW-Q]);i=ԥˑ04~?V[B#YO#sV_XXEKO|j -ҰpEĎxA6 \_5񿞙HeXo>.FfֿdX Il|̬}䣲eNG߿[Bq'+.c+r > x Bxܚ;wm`aoY>{~{ kOKo_pjʭ>F0|s ߔ,Yx!+>tϒnJ#7xtq䉩5g7G&zmǶ~#S]pk{|fZ Eߟ{E;V;՜6wqU9s5h˖lllI’@b !MB@ۄ-PڷE- hBRlo!iL!,Y K6K#I>5ϛ;cvoqmus-^~=]5}oql=7h]o<Ǖg/6G>+72Z+7ֻz\}gڎۢo||;V~~Zen l]&Zzyz7V7GՃ\eu-oG#,Թk2 1PAl FZ1V+΄~+[{5ooJ[Fxq{Hp2V-ZlY4Raiظi܋Kkr9uoQh6=̣2*!uj{|G"jx˦} _M<|ړ(ڮVi A{ywj߄?-SvD-*ƪ)JI#hnUkϧ{[ W_"-o^q~%-;n,-b-h>{k*vp~e*Dr@KM@$~ {Q3R>™rԮZEYh^tqk撍]98xcK1޲ ~v[Ziq[hnievc|G4^0;-gGK*#^q~ec_K" }}׵~c$^*h^T 5w7 ˖iV3н2c.D2iUcłK/G(#@qݴ4wQe)_d}Pؒa˖JGyr:B@ihaZ>-{ys6RCO GΜ7ƍ]hjo\re\ve?*qlőL֚. P\*\6&g=sιs>w~G鹠lC%Ksߴx>OGoj,Z9-=7b}'DThsOklo\;AV }9O1)dlBui/ޏ^qL=RD=K(FVh٬ڳ?*eVPjV-p`Es >ځc3/09hj/vA+[oe&sj(oY˯r'\9b[4|ן jDgBu{EEQk63zA1Gꉊr2=h-6/jaQ z0.uSMMD7~V0#/K/׍3ff̲b3TUxwę o`c8#`^3ָ~œ^]@sHH̊EX+!fŎZ[c9Gs=h#K/ڢE="NxwT|˸nwзPvX܊垦Ȏ8Yo~$^gɵu]#R?4c7ǵu˖c\=E[02Z6E猻$CwV'<{qO65?_yaӾE>cӜ'˼i՟~G9mu'\?IyxL ۩<[j}=qwRPs+gCbL4?sA҆=5z?}-gT+WVɆ0jƅZ'Q4Z~0pZ *@-C+XQy>+.Z~>@s7VTϯ( bˍ\:bw(&޸W|@^H9f$0_坏m .694wlנɛO>Imz#%UIM&ɤ$Uk9c3_Bɤ^uZRQ4qeT.cMob#VBE8nD(%qDSP$Aoq_̾< +d4体[RLj+%qyx1qͷHĬ#֊1ɾbX+bCם6ΖXXEOM"C _HS_fS㗞zPbƈSO}EayM231+]KrH})ND9S;'%bxy]pDNS`Ḑ8oQǞK͟b|F]/y.iyM>wX+欦>|+\q\tߊXc.n:ňr LF""&/T/fja[e՜PKj*uʳ45JVŏ$ϚpNlɊ/j!;!uHt_f3PJJgO>( z}[_2r\eG+na;lI~ە}bhEaCU Wi=rΖ+Om\ S?j{oY |W'2؍8nwv DCGf8Nw*{H19@W͛ۊrҙ\fM, uQJѬ# mpV]9BpV3@45U4LvLbsI<(:ɞbP ?-L`=B6s6/|t'A;簥]׼ }2s1]O}0n9ypAu_pYD4k!0?,K6X8}h+1owp޴$V^pWm< 'oX$Ī9m35L'6n85Yjoow<:w;.>i-?7I:ɖ-\毆kߩݞ1|yQ[7* x *ȅxr+aH+vc)b#bkfoAj=wsVQe3"=[a;OFu ?к /L8}-=!M4(Wf=}׿\j !o"w I zWUM=c|Z3&Ǟݜ0J/8{ܟaOymhݺ wĬnj># >ǍcŊp}4Z+Z# :lcD .[#FX17} ,.@H̆l6+$ڃZ$/iACCvDaUAC|6mK˃\)?"sQ܏bKlL$&bHX#"bŊC1Ḧ^kŘ2+CbLa+JLok[&F#~bX+ ?=uu2.^+FQ ?bz{H1tGR"Y䅤7mFnSۛ[^X1VbVF1?4H1VLj6A(+-nļόs_fDGqN;؋wJ$uK,hwc*cvwSTx D)(݈6}CApv} ; h ^bbh3јXc4dH-=>42]k{LKbIH5m-gA0~3_A2-۳&wmbAE?ie1,NEry|׻yS\zĉx)8V$V&As,:_$Wc˃ dCqrJ$+}O뗍c)ҏZ(eCm7ĉW|smj:w}-6GS$JIt`Ip :NA2X$ XuߒȓK X KW <$ dI\%}{LLjI̊5FlLBcbƢ1&WL>R@yZяuѵ'>]I8" XL. `Irt&?Tny `I\9&$drI, )HQ()71Bov11!GĬXP4H̏2lȯ";-ýLrXQ&A4N4V"AAp_ҏY^{_} >,oȾِ=oXd}S|DLKthv +AFXLLRI1 kjXLj$(4[L|ΘPfӒM}̞QhlDf6.R#hFs(jUBSGĕ=տ{QpQp}u]@nڨh}Eo$"N5jE[l ],`S):P]IܓH"/a+JAd?d \qdlW]yVTFaWB{w'*8"WGCAQ!4! j!fφ$330)%d{uILz^ApUC$UA2%> ޗVV |f/XbElߡoZX?Iﱶ6٢ĉ$N1wSC2nJ܍ H6w%mKa,(ޞjbg^VXhHltm(htQMb$/` * +ZhZ8줯+AIWLU3~R0 YgB'!YH abtE[ŊaI,S@!w\;[ߕ+;ߠ^LjA'-#')kHBf:٘FD_*V(ŊR']$4ߣΛ}` $Q%K%CUV v),  %u_.]c"bcbEbB@(}oLhc%@$ !/Aԭl *C+G{\łકA$ĽIGܳW[)M_X)XlDx-GQ&^%qL1 [} +ʟ;/ A\\ AŕY +197.FؘYcbb$/kFt(211^b.Jb$Ni Ơ 44,+%˳ ,oȍYu_ {'6CCv>FĈ1bl4D!pb$Čك\w2[-8V Xq@-r`l T~r`Lђ/"* /w ` U Dž,j,!F͸PI<ElId-wp%vU~,]͹(D@ Wڒ8Vl.RdŁ)!9p#Bqs"kvi(9`J80 :uΉcăFhQJdhu>c_9GPCTlJdQ>1N&8Alc1C?+%$F,P̆b2 4Qj2VOW*/a>%0sł M?!"FۧwC%$Ľ[hdACtmtm+$%A y{./&Z YBZ+Ə/"ZE1c>RhKbI!/cC}A׺<<^`U҇v/.'})W-ُb_;w?eHVbb*gD0|,7.@Lo L=lE)B|⅊*򊊭_^QQsy_W|&UQqyE רjE+.B/`T\~`?Ub+.iE/TYmw#֨j+n<15ɢN4TAVCPU!VCBh%FŌjU@)VE)RWPz^Zs%`3Q0>bCĄ<'>f 1!l(&:"H-{b%q2Ҿȗug(hhXTp0ΩEh1 QdDW.CM%qE(qAn(d]^8F=] D!Ѹx3a%8QΨCPFCzѪ¨7Fs-;8D.JDmh^@,u0.{zJ^ FEAQU#N0⠐%@F@E-FQj`EQP,1* SF+ʄLȁU1ERLj1Q"BjTD F"Q5JƩQT%qEXQ!B"jb$'*FPp"&4.4h$*Nr8b(L+bXPlt-ΡD\PQ!!GRƔIuJ_.{ ؄cI`QJĉRPBnP=(hȷ5&/B%1WxnwcMl#XS~X Eu 1~0jQD#%qEEQWNwMIi:@UԆ X 劕QSH.E}m3FmE>ǧ1].{Ǔ]?ty=xPĩ#ZUE~^xAũ`U4>T?F)#A0RE&^bEщu9}웨m]}]563aKo0}Ķ/fdZR ʼnx~@8qN!?N2𹡆8΍+Q'\]wHN|PV 䗏;S|?ދD EK}x)RNJ"FQ:DlqaQeotESnlBbXI'o1>kyzMtL?0E\I܃WcEPBUć|L,QB!bG^/8S Wv%*ȨHNdvZHl#7ẆGD9R0G^5N-\D8)ZZY8^BD QFw&D1{5 8#X::* v%1OD^{#K'*|i[5"\HY?l|BBԣŀ:GĘ5<7j86hz oCNxbE-cE1UVU1_Q8uD6bQl(?Ɗ&:>Eq#Fgg"j&:]كYuku "&!4dAq3'&F:N: VU}S_xVak/ 9o+0^Qrbb@r~ҿ6f/PvܷƮ<Pۆ]-5n_[fX1R'Y~RS?m Ά%8jC_V 5w(7܏B'QDfJ"kŊc!qwFE"fory\tU1bBqͭxKk~5/yp"/8%`6X zb#e]ka3afYAT_~{&/GXf#pLmk+;-u1-sXJ$/bô yq8߭oQleCM$"D5XbnEȉRl/vnz9F+bڋpa;崧O8xZ+m1Z@ {clǓ=ZF 8ٺ~5F?5RoU%B|ʰWb NZە2ace'ƈ%<1͑VZYZk]T{E̡(h6(m;)?M0NCr,7 ơ bҒE~P CKNmWlD3ȏ0.݈ .uȧvB{[7Ɇ՟{qsP[_guj~f]7)}$߉^UO51馶vtS޹C*U h5!hMFMj@=b9XD[q}s&#~`&5΁!&(b`~muVu}}QbT{erga3Mwp.5\(s:?+ypuO)$tk}m;^9won.v3=?xE wagm,[3p$,$ ]g3~9@?Mj>XC2'q9bZkG$NV[XP qh,:wÜOUk}s\|pI $Rͽo;F)!M㏆{WQ!<,w1F@ 0<~F_O9@w3APX%rʳ]uMJӺq9bکĒPb*Z1 Dk}7E]B $ u0r"Fdl1VZq&5F͊Q1Q$4Ntע9Dv/f_j?YіjږAhBAC+ F ȵL8eL8cQw#ћ ZRkh _59z~vi((|8ō)BVR|Eyj^SpѯU< ]MP{#  }ܑŲt#֡h`ǎ@v2hl N7-ΐkm#iâ:+Q(FPWEx ʍ|w:/A ?lcb:VFum?\pCJ[^m_UX1e6Ķ$r:!4QEPn"XTBu1^r :ԇ| SQE^C*`kg۾p_uds^pԭ]@{ŷqh=ٵq fXde]2[ᬵ b7(?r[Cژ]j)z9}p.8V6` cqT9W[ŋO2cQ: adDura,lr : QZq9bFdk^Ƣ+cDH6lSSSC*s!/yu2\84dMlwɚQyvpf~ 6̌Nwz4erqCAĄ!BBP @{"&wGI-vȊ+cGM͎_.;!f^4CHYSUkB1܉ ͫ| lSh8n$L,g3lc7uw>-eOm:u*xZc+򛓻GjX(PHY@*at1FanA UI1EB3"q ٥W݈F?3=rŭ=%(Q[ X[a|?5m]Ńÿ>凇g^X>`p<ߴ^zW~;dk/7 r%T'HT ,D 3ZԈF!Y1z5ф4U+~炞V~бH~r76PՌςR3@y87_uemUlQtHW絣-:k3>Gus\jYScؖ؜7#]#b^X0,#!ɝ/udEG?r%@!|aѺ)eD.n-ZF|``j_!"z7X`g-9pbac!<C[|p۴ӟp!?VXl>^|1-bjg!fm{pq[9/h#%oRW Cq:!2#!6DP.W̄}5IӶ.4Yװ9߇|`ζ/<Ӷ<1Wo6c} W@ϠI=c._so{zߨ~';Ʋ^̞s ԄE.5<<oy%ݸ'PDw^A7Q"M./&kvQqxt/3޸ERJ | eDPd?ah3Fk3<3m34!&h0b8c͕XNfʀ fڰه.vT(JI8|GeN5~xjc; 4T5^ `m˭o*!<;p_pmCȩ 'ʴ-82?abo陼.~q۾)U0F [ !4ds .?t0.E_LOsX]~*pŅ}vg#Nc&mH6 ` fVy3~?w3ZiO2!,;) pΌ}ͼWް/ѿrKƶDŽ]㨘qu)7 obCwEq6? V89J όS!2P݋\J@ZL7ʊuF E^P`;zuKvAZ;!^_ |yz3p w`t]K1LO$7܅ _=W_OIs3BȎpoy#Alh NQ>F9:pK1˜bSM4%oZ:Ց-/p :lYv_=)W0go!-5g^Q2iC[ZZ L]渇-Ss"obp!eu~? ĬGq(3[=~:8'NȲ' 5>@MjW ?u=i[ƀ8SHhq&QOPh[ozH_Zmpu}@1+3pĎ9;f7nĆWl=y)@قtaeZv=Cy=ۏ'!g!:bˌ=-KhkI6l; fS#'<5u#DV^qm'H(JGU'0M 9pK?+i֓LڃH !( %gl>}_31X]_^ }cOCi)Cvbx}_6Su_. CM]CݣNЅT)5T8D9|CC `9dlԿi}K ? CNOߨLmJ2WϨuLC] _-t5{DrD9]ǹRkbͧwAǖ: }Zƽ|T]miЦ?&ǽikSRO8)HA1.5ف^ݑ{(&/iG޸oCSUw3 ">Ǵ+M,>iM8ŪCO$j !Q껌BSJ)R'o"|tY]߱^`z'//7Rm;%WK|yYj{:_ߠiR,|]^'lv D.s[j\KmBH .c8*=1Cud E ]V ԚLJvcqԇHX݇ioTA~t]MZpF׵-QS:-| b^?i)vn{Phjת'D0*;ּZ[_ZU]Mv3'Ht+XU}?R߯~Dđ+h)#2Qg:7 O,:{W݆ ҃'5I/Ahnk1.Ss{ǔZ`y]SBh\g?s _BB9~/ZKpqTT}ʙ\.,(RL(p;F3F~rbgE=%qh$꩹|Yo~1h8lwzkjϷ||pT#NEW0#*n|5vM,;`;/"V +b 59* E9: bQ*!,rk0yĚu>Pwt ٩5Oٱ 8c>=# w9vkj72GOc_>|[?Ez_>oGC)6G)ngEW(%q( EńVq0vl8D!EJ>~ mVOlhІ&Ĩ'&sQ[quH+V'r`E)(Z1+FX] aURDK%qE1SQ<쁩EKl=nE9lE'D+܆6Ǫ(`8\mtfo|}8ɢNIMx=hQKD-B6o%7Ivp;ZFC%1(h]˶$CGbK?r  E,j+fhF ~S4/)Rݏb)΢qR'LqINFM(pΩEpFTYD/ ՈCw"uE-Vdp%S=ǝPX"%qNUP}b:3NGCcQF+r"H(O%$xѢ aETw"ƍ 1n 8Qċ'jcEas,S[tŊؒ8颀bF;aT*Xhlh(+bE:EXQ'<ǢEpHq%q" Jbh%:@|_}lLLըQ)ˆ?JIԒxȋ_.{`TEב#jIܣ9j\E1&JP.u1X#D5jU1u1N),'I~DJbE+R(ċz؊ZP4N" N~(<!DPCԩoA 8X*S;ǝD)^t%$Q(b(.iZ$ILX.DhTb%qŨTn%LKTYJK6@UĈQEՏD?{)a*'L%qȄ&)'+{)cI\+F8٢f 7οkET!`ucB(bJItQ]P9)Bc Q葨 ńeCƩQGb;LHIZ"щpVJD-('!V54@ $74"4їGC($2"xO1Nx{%R(+jIܣ 6V2F=j?)?٘8=7wFv0)R\MQԯv=0er_w/xr؊Q@qX6QQH6 .2j?/VsŤH/j(+{`(%qJ؉9|E)(f'[(W~`tqѐ֝BƋ"h&AXO1{Tα$NQ =EUY5'eT?oP\HBZ@$b9QJbI<X`(E,L4{D!"A>%qʈ&hQ.EXqs?p~5.B =\E p̒q VC#ŹF;&Th.dՕqbXH)Vd?~9lE$1CU,(N}>yԇDq7ǟ6X;iCIQMȮův7ȑx D)^-N-cDku(V*F3ه:E!:FNEJE?O`䨓 )=QbD-.:@,!aUk:0VLFC9"S292 +V ͡&ڒ8eQġbT0BUSPF-Xq"~`B"zpZ"SjwL@-2)"怉Zm%qעÊFqȪU1*W Z(Zj4s|]XQ&\dRDRMgQJ?CDUDogCћяJ)Ȣyec#q Fĩ`$(ƈW#" ѡ*#LQ9Q1Z%qOb481vynˆ/wފ>3.\PI< .~F;'Ԇ:ͅ`gBgCQV3+-bF 'A]!Qk]UqG̿aol 1 ċJbIfs4&)/ƌSoCl qVF6TjF}>†`$/ϿΆ]mgc ݕN9{Gо qW_nb:t?2ʃ\MaLGL_\:_RP?}ۺƮ`fG7]l3S] ;}EU%\Hhsb'Y/Vۏ˦]zE{א4$ZΤ4*e1O䯪.{#{}W s!cSU |2*նɾTeǟo쬐}]jҹ׻LˌE_B3N ΨF? "ΨTZD-ujQI xiDFL|~|0DGORcO9"ߌ d~THG;+wvwȸ( /b-s5^G22ѱfuW Z]_~&}D:Qs;m3yuE#$A +!+&2*cE&\ rۣBcH !qzb"I$@8\c#z@##3=2M8i cIBFQ{FoS˄W|Nz^(;0Ua8edn&bJ׶寏"]br͌X)$duapVw aCCLNRK1{Ӿ*;jā D:@b]ߟ)3>Y >Ev2U }r_{Vn@&zw>3  !~`@Dń@6&/,WlrE\IZbsGKGņ2dL*׽;m*yo̺w㗎@J$wn)W9D-jмbĝrL8m!,޺ 63Bў?'9. |̒Wllh\;qL^L1Q\ G_s?~p1ƈc{eƅr̮Z_ =(}Xj"]Y^;EKvRx8bH.d;H|Ȩd/גI4$I~}'T4DW,"{l:4!;KjȽjC(;q">cD 'Ŋ-S8;qs[#wGm_Zd?Vm>fsmfjѦ6N4PԈD{}qb181>U0P1ڏǐV^sw Ⱦ߻b'W&Dvj;d2r,${+vR_s8'l¢!3!8?k t8CW((jI6Gݞ#q(Ƕ~g$娕0fK'd}pcQ*7B̔sQl ɺܸ!L"vXI+fEѺm d#/tSh'xg; EQ+/[ܸbO2f΀Sl({ќXbJ+ ΉEY!Diq$)V4EŊLv)_aD+ HFWg@"ʤ1IdT& q@y9"uS$C# Lr9^5Eb(ʎEcZx<[19ƭfמ{K!1391N&ǡM[eOkxv5.z(|;BZh*;5wn]:ZcDv_Y^8 Wq P4it 5/G}ջQ(+r׿rLB߿]Ht/&|r`ފwcZns{[8ޯߛ+W8V\%85AAXUB' P585""8UЩ$Qx"8MgDv?Jg: M:ܱYG FEGsw)`0Ϭ.(VWeX3!H̰-?@uuu@Ŋ{\bzz^_kObЅc;X᥵kâz9f*N̞pq̔hpjZ8&5}HQ8!ըfCE-B(rע :H/H!N"EH'^IC$d!2탻3Yj[U;;ѽ<#OQW yOj% -VRN[qpA^IqNs4VJ!qCUIBD&A|9JZHq),XGD QFbBg\gքZg$N(ߗU5Mt ILȥ0v=dbՆu/vyysui:2r쫪0?$ܰn갮@q8}_b@_NG[ffLb*{bJxKs]rrڞp=l3SXa5gC*V%!g8B EŨԆ=o-cDq.":D5cRMDznq{M|l2刣KU%e^!3 nJ'߲'vӟ_XUgD:n6 .[s$ģD^cv@@fSC Yf;3: i5UUe+ d**oƸf$7īT:NVcYPםm}y9frBLM-0RxuA Pe.͠"jUL~DDڡH:gzҳ=z!L6Лthn9n{T; fPܞp4㞷)*Ё~aR)T 8/8+?ŋX'`t LNᡎҺWIȼ g%&N`g1'&w<ԑZZ@WGm{$CI?W!-kzrC8ﻗ:^d^PGy@$¼kR˘Cg_%^tM#_H;kWtlYjUvVacGHWoy.n2Liz[Gndcl=JG2wqR]uN dfHVM8^޺xGxWp}{ze?=CmNt~wKyx *C*qk^x RPW5vLiQ0B7l0*f\4(lX@4  qQnb;KwH&+2q2 nQ$s?jV)`jGݣyxwX1CL*=qj$0^sP|νUoO5# ?nFzRqnV'&#ۘsCFjk={>ڸaU1϶j<'"Mf=ԓK,x(]}Uu7dfubnunmC"eym_tw ܻF]wA>;sTEQq;rwo^&W>lcZjabb'.m!Ʃ?r{ĥmdf+ѥx.ns-3eP "ehlГ*kM诟te=5Qw&yܓsd~CLњE(o/n G&zSHaxQp81g:_/G;C\h(())^9;o#Pa'1~Ю q/u()wG<:LCʾl_Si<6o}~6LmӔ̨zW'"9vd:,& aG#\ETS޽1_mQ=sn Sۭ.U7J׮̢sv ; ̽7Z/&xC oU}~ln/ ]¬E__zn+쉎Žԓ*@l|=>&9kUExҍڎپMD{gM_d r!_X(UIe_:Q/²O;2֨Z',ո5q+$h Ɓ?,+8jCX EL4bGCHIgk% $ڇ^Ɔ6c`h ;H@9bdsӐ!SVI5Tʌ&kfS`WLolnhn|V]g57a LCcCJڟ\33OT~5I5ݔbۓ&pόY t6*fu765Z"{/v745h+"d׽)MM i4]LgOGuSP/5PutvMoh\`W3=aiVmWmSS61 c9biqIu_l8ek csԷwhJ;ʌƔ1?< _[hr՟/#m2.8)LGkjVcʘ~QSG%vj;4rugd2ӍyCE\j5\f.TJ#D0Ï"c6+65Zu65/CDFBl¢L5 mez7"Xg|n&&}][[A(3?l7uh B\Џ|踮^L7K%L^Wu~[Chr'u^^46]ڕ(~O|ۇWH͇l^ajs_XQfzqN]|P [x7?=]w@QVq~bD.*z݀6~^A>UΑ'ާ2i{6CQv]~,t}/-dq?]LؖIgag^}COtuٚme;[Zf{+< " ځ:8/:?WA(Lܡl2tQw껇j|Do>loXԊQ'8A| FZ1V+΄^wǯ#ƪ:DQ3`"5@L$\su!;nxUKЄbL."2Ƌ/]W~ѵYQ_8>݈\D8Q# !БI/[ggE/ذҔhVAi$#i!Nb"!Cf4K9C=\oO?fT?N]Rz+WvmQgU_mS?dlFj難zxڛ1]quj~t'a'ߐmNѵU+M}¬ltB-h/j꟞{Jq~`Z@dg?疋 &-!ҙ)2~z<>D>2(8I}mQ3|@]+X4:l̠+4_z޹oD-3F,ԯ=-ߠyCgY5N'E. kۻlt>AԞ)bZԈЄ{^1F-*mFȨVM]<`n}4{'P(*k8%&ߓ dLбdxozSf'oĒ8zkPǺ$#NNjθ$-wy[gH_>0R8:TH3WmP蛟z0@ؖJCWt\7":j.ŠfvAT; {+Z&: JiLJ:>2mho ?|.3R #z1Uw{뒡/-3''t@SǍH7L5P~/әIu-,S3v4Srwf GEdmƯSXW߶y͠6D mZuP!MprF&BO_fl !6ܓhC51"}ozha&DוckzΆ g[5O]1Y73藅㾈W?djiiNJ>8kB`~iX݉ژ(_.O3"Ѝeǽ@Gԥ.tBxT, ˇ81ս5x- N\fC\zfхFoJz#Ci)k;}m͋nQO0 V͋1*~{tZ.s|HСD|àqPi|%DGs^<ᛪ]@DgxKt:4;$x4ݐm:Rate!:rC<ΆsҠObft!еuv9\\ˌ?3ZI}R sf7jR!H8i*a$3X@A譈5A6]l3S[455ƶ $ EX̓!BB c3Xʆ$D/JV4ЇD4e۟'|~Ack\l0W'?SRbVrn㻭3A9xV[_=e^3!bi֡!h&|w#{/^١@:"]-O@jѐ z$`-%W$1NL$2SMg{eZ y>> rC)2I[_O ϙU_oڷx\?r7яZT}5l&賕PI*ф uuuuuu•R y-R_eDC ;o D3)&2tT ȡCmz}{+@"Hh)U`L﹧6j׏̵L;ɶLAٖ`l d vk7M@0aLaGk?LbMf\,^¾DUT qN;C8}+ާC7>',g5!ȼ6p-OR(=f>iW-5Uo8w AV %^~Ս=>UW]_3쫠LDT@%wD7#b|DFDA(3, 3[V^u{~W3=3=tcW::s{.%~?x|f<¿A*/ˮc-~%_u7ߐki_c^xg<ecZ˶_YX D9|tOa ~5gkQ5VYscڔL]H5Ry \'aJ)Sr \i}!Q|dX7~[ܲWHJ@va4b]4}6,VtW|s r~/nQ!{.2W}W$Q|[ ~l)2#Ң}wX^Ψ@if7J57uW+~oIG=[WxnW߸>=+Jc_IR3j#j&`e2KR(N1W"_/'E\agQXfjd9q*""Js-mC害ּDJ<;Ζ!0z2lKfPtG 4I+ۮh59^\G}/{mYW\/]7wh#&x`jos7׽[W|z(e`qr R:7őd?~c[Sɖn=C=2wM/NiiatMJԢV8}r|]xtJ,|՗75mv6'1M,G*QDA{:\"[4o?i4t#&+-c%_w;tYCھ~oν~Fmk?mv߸[-;ۨė ONM"BkKY)q@ş> ώ;rϚq)`_uXJByQ -m-.N{DPS@P1ST4>G6YS5NAKg~b۰6B6~Y f.ݙ7Ev%EUTqO7o$ԛ{w6Y(07?0=HZ}[ Q]ZFy?ol\׵ S4.D^\ccsSca[cL˦n]35%P=0@SqJzMqY4?ve^bdk۰w~2`le~%MIB.@4ŭ]gmڻg0׍A5a'HRҖvxI&CĮڌ ~dPs3cŬ39t<Ίp9X=Q kWg ;0ܩ+:4-+~Q뵱ZN MB[[c[h={m{G ckZ/iE{S{=}tjp˽Ԩ11}t3r3F0Hqeaw}$0}ҩ4=x tdڞk3+eX WYݢN/znv]ݴl+dc\2ǷLۘjXq^TNI;v5Yth^MCi'#g]k_єzIMAH*TTNL7;>L0~X9[NyJJLA*E x"NVRnʙr4<;L$5C旔Ftӣ&x&Wϝ,Q[񴳇ƛ2Ù숴mۚ^09!g3r[oMAJ*S W/opQ3&2HZhmMПʘ&_6:rn?j$齣Q/mu,_)O4Y&nW>=!T!f7kkʟx=g MpW˱5 B7ؕȚŏM#xguasDJC3FG_)gp53]P}l-J˝t|CR[&-S?x} zvo=ͶiãMu3DDbծ b!J +/M>޳O};{%o(5yǍ5Tw9Qϖ=ve]-Ə3?#`^lܜW)JW{n(ޛZYq )&IxlDy`bsl[._q1-^7OEiw^L^JB4\d=^l#ֈjZ%O|5ێ;㾜fmV~b1psEMa;i./nKso.ɟ~1Eűbxc_wW.UTͿGn]b[O^SRX6xhkkj\}o2d`ܽ񯴈|:]h[OM >AX:j~oMRK|~cx/Q*{i{شO4w/ʧ G{?~yǟE }<~'R?({yۆM}35v*U/ܫ> {-M-/ix tOlv"24nͳiu}d @W=E`ϯ%>yOmʹ@)b7'6y+E4rv% T(eqW| ]}5?V-~4zem|N?FQe"?j>h:J|eJkWeBSvWOsSCL] w+kxRd(cmbKܩ̲Sظ rۃJN, ev9SNٜ}/u]|{i!L; 0U垳~ݰWdWrN o،T֍VőK!*5D51^,*n.Xoƪ*bIe^PC5Lͧ^mҽ[?8^{axӚAi\Ha.L'yqE1f Qw5 (i E~1g-Z35^+X.zcILJe saԍ-:!ah޹GF|U|#-fzX #3(i'sdzޙ{ ^lD%Q{ջ&. p7ob t?D?}Qob ?]D x1_H} XDPѪ־Bь/jȼrw@hMlETxq xQG1nUXflzZ4/MO/s:U"@\ R` FNjX[tak=ocQُ0׈g@~Fކ䅟.zĴ ]z=N^_kdmR,y'B"r>lW%F!Bql0 9( AP` B'*> X(   b R(! be8X|rN-ddw|߾}H-$$*T>+ ~HBQ>ag`P(->a84V(>!~S~( cQ!aX(̮ 38 Bc!1P(" BXLA!x3(5S)q6 EBWE0,E҅~vy͝3* vDd3xEg#k𧊘n6L AN|e>{ngw ϻѤ)Fdz yCќu@ǖ؂}Vs|aEYoyܠ`/`tEӝE@LWH޽^ox[q˹=b`$c'qwYvDcEbSC*E#E֨j^Oa~0٧~70MqrPA ]ϫ{#+ \9o_{Sxmwnoo~O痪鏎f ,(VR O%K9ӯ,+ܼz7nAaѹv !e`O".`вYfxKLCPD/)Ø̶qAo^Df6:Ctqr^FacEbOVjib>Ƞ ,>gcF9h%L5]]"2v} Kg˼P>=V0UIacm q,VE|O޹lEr<9puidlh sC~Tc|lO #e EH2pG^n7_uɥ?EMF{.!tm.?&6K? e$!bp]^CXAb&=ꑩ5NךXl[ԕcIHo;kؿ8́Uᖣ P( !G~%;,y6lrj2[AI5Ibb㇚k$k@!DR&9cOlX|[.Yh}pcG@1:"\e9bc.z艷WH+[dqk~694xUPuDu 1O%!zBC!2M_kND񮿤Jd)ۿpCFh%A?+7?v^Fho &wگt/ [;OpF k;r4X8>)3vEn)X$[ w;@>H~=D-y5ĪZAJPUmDMX-[ Gx6gϟfκJ kfqP=i8hE=C}rH}ݎƣ"em<>y@q*嫛oxߺsܕ( X91pcl<jxdž*m_dM l8*Kh*+.> 1验V/;t'3e@ےb'L,zNDMxöT! 1h4VlrA SjEH∱R*!S!v3Q],vDxyӑNwΆQfieStəCÕhkx?FϨU_ym5Ax-k ܁!ž{ID97~5U8D17Vt1ݪCC/PaDr|~qMX;f2LDkf٘ƾG< ?bP(᡽BݕxkUe& WlѬ]^>8ݛqB=CD,l"NWwx?pn1|;yͅO}"k/؊٘ iQPMp[WEQD3!*"XyGG03Fªjӆ Y3GF_]QcW=x6j<ƣ/sxv} 7bˆS|dc6Nk.z7Į{"Tʾ LfRm4݃/{ j9}W'Ns1|p݅`cx鮾w)sel9-5utbp.@XEze+7m+[ ?K QVP/&)Ku+촍E'K我3v7Ub Wui rFF|#[?|jըX>2iac#@u/w]LA;kbȘbU5Q9{ld`6t$竟q q(f'cNX:Ot6Ɉam@.wm=!f/H6W3T 5-tij''zcGo<:mh׎(O-Q$ֿ85lPZAgY0;7iqI KQ2,-k.+Ť_8+薸} 'o9aZ^UXY}i}X/6\rx )G~HFA[LPL9W=4'x0M $##(GG%* $Wec)>Tm+4у<.?'q^^OH/f#ƂC~6]}$̞^|tu؝cbʥKS=011Gv;?/WOv,ZGL=^ܶbd|TK701FQ 5}`&',Z,RD]yŰn?غ])w Yo3354GESwܺSR\NM5?;_؎1|ןeR}@hYWrX%K\ܞMy%܏Yab`rMc.oז{U.=KJRkYmS=oTkUqBtK=%N<&tDu眨GALxDknڲ+}˷Gjʑ"; ZcxxxWO5m1kntDx-wU<~nIܿN )߯}gl)t%NFٮ Q3Fщªh!QTq6DH\P5/[Q_ZɎRHj>_yt:2gA_<2xilQ$L省$-_}7D͸*0cZ5.kQmk^q}<#NǛ>)rN$V/^ZA}v_+}igUDkؚ_pfy=M%|Oۦaglxkc,ƺ#ZLjJbcG36&%~띟Q,/?~X^m.=K~SqޥQq庂Ok֗G+A5M~C] |/KuóZ!jĢ`~xv}AM2i!bŨ+GL"3!Q{g2{mbkekV >af38:6^|_p-z&wOp\ LtorQ_}&Q?A}.1'BnYAgMmΫfPr_G'9Gh{-a?/ 3GeȡW+ړAD8"VO>4ŭwF}Ul8JK"I^|~1O\17UMK(&5*V]!5vȈ QO}/\t益GB#ת ‘h݀[US`}E0N$Fgˑx fce\Dc|(\^Ͷq6㼶6>\'`T<$g>y`੊*2SkDgDTEk Fڼ ;^s57sDDyumԣpԉFK4vx"OY V"{{5|u},6E{XT/XӖ`x͉EL,a"E,YĀ/v \2Ͽfa[eƱ qF0igDy|Ԏf?cb-]lwl^lSIH}d7ý{6UA THNBMHD$<&BBlr5e(KP$M D{t0OM<>sy1ƀEkCY5u"̴xVbZ,Ds,-"rDb' j@& AM2JJV 85& HD6QtDfDK-G3W9}_R &M%2/bД-}ko(XI@Db2q P8"g1*F= xVAu<]yEDTJʼ~;9d,j`\)ϺZUOZVebM^̨Og0y=D}ّu OQk S' STR0ETbtF-QEcWyX[vrO+;+:Ko뎜qO**AHTSԞb_9|bS[+&Sj"rSe2u$u]4g"Q"|ǭp7a&Ƹ66Df@'&GF|Ecn66wa}P!SZahV\?nxIKP?{ 5o"QILdO7{f&Cmx>5^F -`bcxƃح8Dx`pj&;Ds`5Z%"wf@ίEnߩU>17Q\bTrr7rl{} b'g<ɞD&V4 TybOc#$kskcϸ?Miv1/|<ęBL0$,GGcr'o5X pjWT96zݽrCه YX+g,1%[^=k,;ϺOuFdIDnR*i-hώU'uS1D>)u3xD1t7&6ND HQ.Ϩ(☃!N? 4Ae0QRTJ+EqG_m9K#]TWKD9Y%nYUTݮ̈sK\T7~n܏X7~\no~?F7~hll%aČV[kd8vONݭVF_Ҥdx$)pxܷa< c<# WEx6IP#I8~D%$^>}A@D |ߍȉ]}K t%'CEܱ}m=[oimh_iyxåCژA0t9jbi)"c#GR\y9b0x7KdNb c5c0&"h&D'ZGhI9b&ȇ#2AmƎUX6vCPh^fh!] qs1lw5 teB"ZWݎ\gb1Z#ɡ44!Z҃L`:W+ml||SWmp_N~,*- U+ |P6F2D-H"oE 6;SSX>mғߵ"-V*+m=~S6%8Mll3A4YW4Tpl9"o+/G`JOhy;\d?7>4xd:KsS u~X4-SGm{M&uG!RPب+**^,gcJV7 jj<Q~|Uy|TWޔmZ$&F}*];rV[r= !J7ޛmZ92ޓvGnӊ]vo,Tr!+dVa&CE{o>wh>9?0aA\:6sX*@~>xOn17,aa!4MgW|0 +#@_'=~PZ Jև\|n޴J1oI`GW'e&5ĺ^v=o֧|F 0M}AXmo:^s>6WȇN"/tvT>H੪[@܏(ϑ?~Wpo7\~ ;`ٲW8|ޱ=#'ս@LbbAgwQإܸngoT[޺Q]൓uOc"s)+W8-M}mEgxפJݪs%|s"ޒ+泾?eE?0"?ުC#˾cbR޾#Hq'Mr,[{7'-~2A`rlw$sV.*~ӆ]Aޏ~~|RUoEˏ}[l BT?4<]Wj.[oS|[N-F2Is.ڳWOJtvLg~l7wL*R{hd97Jm%(ѹCXߟ;1{SNtxsG+4ĵؒāUĢA=5~DkwT{##qđS#+㩑Dz~Hwtt7qw{#+wSQvj$ѩsFg _."nXQg[,ءӄ(*AJEh=6P/Lɞ\\[{K6v=_{t41>}֭s\.?;^[/}TKő_E]7R&GLn=VX̬mlxa[3A跮yo}زmwm.fS,O;OhJBe*&\,7_7^({_oݣxa^OtjPRW*apۄzƪ1NJJ(EV_Ld>V,&|)þypBg/MÝ{_4j}w41doRTgՏ &&üXGbfkO41^յXYybib07^?~Gx8Qʲ[Wn{^:ƪkFTQܶLQ7z] Sa@ƎLmxt 9V}M$X-qA7vO?b_ĂHGy82dh;$ز zRC:pɍbSÛWoL޷)bw'T!sK{xǠy~HO#v䁍ǏOiRB˷{c##7tT<⩺ tm=/mnrHX\а\2{/7HSH?U{ǠH{TA6^==et`?j9 n> 7^:DdhKDՍw bA6YqE/{qeaPVT/VچRaoiC>*hچzۼTeXoH׭MOeX6&i(.D,G=jcaXKLk'ܨL@|:r3Pcbܐ+j;̨B!B~{c9A0VCJ,=<8x@IM1#綦+ù6t}}puih nd6dl13nf!$_-a,0"6{е1t3roIޞoˣY-ѐaM~cy },1m8c{G*`}rאtwpMY6}pMuΨU7ŸYSǩ%D-kwKjpKi\EFLZD@|*$^%&-H"1(F~Tbȸ(" &6ZyxRMvK#6wZ;ћv/B *FuUB{OelXnݭ#7@ߞhI|@YRa/~[Vvl|}RyI8 t|2%rV[T&======zq2eLmG~Je,1/h1xd/-~@@sNXO%v]EVpefRՃyi?uu{m#؞K76v&n}eǑovK*Ji zn{ic@clb}æx>6V΋#*pFc%2'1gŚƪQ5AEQbD\FUAG,UU5(sEGH<_I$.10OF38d=?ݫ)Edl6џ椭(tmT `mC_9^ b4<:Qai=4gTO k8"C.Һ2H~C0JDzG5<&zvD̓CLyXATT XQ5xqYɺkDQ{Ğf,"&I}CŸSHDAOH` I;A ?B[Rgȏwo;&E@6!V\M6Y24ۋ#bG!"3$ƓꈺLi%`Ym9uӫDM4/ޘqjGr!P됒V@(AGV]?/! 4ǔdjeyw Bv+ȟ:~dǫPG6Ra}wZ; 02~$g}Hj[xY`JJ@ AѽoAOdbpxktǧh,"֪Uu'dZQ8؉0j$VkZ%XcQ$l" yHH($ H d\?IjWIW\CC}!$Y)g#&PRZi3}¼q&z8J{M4:1UݚbLb1n։Y a?QUI!@= ڳƒfQrOېAsm#yC- KQ}20Le(*Sve6vǝ޽ÎЮsKnaqZfXNȚ=OR:'1Q|dU초uAxԨGh=#* ѽoT5wCݴEG>ˆUtQix#ƸNt:ƻɞBe4Hz,#3NZe/2`2/4m7Yi?,k.5"جWy˳r׳UuݫǚIWҕ>]]hi,vZ#ٳN nK@ ?4ܟƂQU,L_`0 bwJW_kv܊6j2Gtdat4hG>;ׁiK~W̿l쬂||{T$K2`oǯ|i'lP+w.S&x֨Q'2(V$9DeDy\h#;s_W_veU}:c J%<5ާ"XwYd~^A5%SO0͵ ˖SD<,@{e\֜?#C[NɖVi;>T/%A)GJS//cx:eː>ѳRWHoȖɌ. @.?L9OL{;N4Ri=ظ4;a9壧>$m]q@rCJǰBZ-Ey0\u_t{WECLدP:S1߿s>H:+lT$3 'xED3'ѨX7[7^j%v5[pl3QD'1?QE" K0LBS% yn7 ޽Ǎ w ٳ{dž-9m{ٶ\[~3zCw?m(3)tb{Zt`#gQ2g'@m߽m }hrgCTY{FJZڽmw^>8j߼ٳWXȻ\i4,Ch{G~#m//lq6vٓG6-"tIl0!,`eG ɢ lY*ھdFvWJ9"* l}dO^ruͶr.0IG;1O1chAEc Qت5vE1FXԪ"5jV")!O&BÓOXv }B?[&[}1k-n|V1V,vE먎$}Tv!qF  D9KZ{״CǚC:x61U8G?xjxƓv~{}y?bMDΩYwVci[dSW )<~wi>!n\HecpTZenɝ9Y~Pc◑^޳1mߺ7q$ ;ܖׯ]0!PLtv㉑?~yq}6aacX#VLr(WAh*򬺜65jԧ9 >.,DѝwnEaiV断=ҙ[|x ѻG.߹i[Yڐ)Gl'3D߃t斯|Kw4)gy"vKi2ewJWKY& ijօH֖% 4]d+S]~56B)KH@ؔOט^~\G#ҏ)KWACGҒIa#mU> =x|,xqF9yVًnUM0ՕUb'-u-:ƈ`UG@g] grK}D EӲ_K\Cx0|mLDS[u3Zun#mi&T\<\G ߼]Mʫ.:wE,}ܸ41 #QC j<ԍ8e`xh2/Ĉ'Ʃ-g̗hMT/N$WpDyh&ݪHw4D°[ "#VD,b͓!ƄHqdv41=1K>4׻޸  ^HvijG9T<.&mn] ՛Lس.-~"<˧Culjbw?4&&j/DH| >"bߏPD׀}F| *OD.o##jw;u|X!mԠㆻuJ$L=tr2wq~%xB T%&&8DROx94>ET!QuPG"\DC2zXA%"n6M!Vy%EDX &'|df?h[0;>zA(ai5f]ӗ_zwr.btm<\" V!u]k= Ĺ`"VuFqFlU* FE=S.Fês,""CFDeV)GVck{9x`AwD",H b,(d-yDM7#zzY 1>|YT Z}w[ك J>w;eA~Zс1FD p{Jsߣu-G5\D#OGncc1` D3)V$ό:D" 1#R=UR *pLxiN9ZzNg*92n%]s"P\ 5IkUm,OQ"Q ώI!.ӄ퉞 iVꚧLܪ"nʼn(x񈉟Ocݰ̱mhDIPEI@DKY2un@<6.=nNdե$&CyxaHt@+;h!21zp=)*^,j(8bUskn[&N͌h?@<$_|{[p଑Rמ-xDؗWmC&¾6*D63z?yy '52uͼ#γ8"Xb!J:f .%,iUTs'GDeѩ1ML^糉5}^ۘ~捙63T}aK]c;Sc3okZ4< Zfh>5TQ'>c;[$ s'%SU@TT5FuQ桉hXUᝏuL};O7~/.oxW+2Ϳu ~{oه>5y{%ɭ}F&LL]R }}/kKzv5םٷTX6~x*A!AoaVEaN &BPI4 ֨A5>ϯgGuO Q_,܋ym1k]vrY_ok0S7ëKfع,{=RccצΩ~:KZyM[%=+/X.9h;Ng^wK~ jLM?Ue#pw٢#?J' OլO1ShC̮kG<ا3SA+B''e&"OT<"FEs⡈vw_(ײh.? o+d=~`cfOɽ0-{乽kJϹSZ7ٍBb#GCtB_U9Ӛ l<}\ME={4ϡH:O9>ӕI* H*)R"EEHAʉ~)DDTyʉ"Q&s߳Y5#*hyES;x]?aDb-RO1jlF}ͨXQϭ(U<5ɴ @<4zb.9h3A席-_ks&^|4}- ݛ~ ]̩^']On~,m۵=[lym^ݩ]֬o$`r.ɶM`͊%~(^L_w^Oъ@T*S(z(x**؟(5EW晜:jD9ֈ}U#&Jc臇"\q~B%2'Q $*hj9Dөj<Tުj 53O"bb6'ik3w._xk@?Q-  m+i^[~t^={׽ulZ؋~sF\5MΎ\:wgt_xNxc5c36k^wU3^c5%KM3}OÀ*ej UꗿZDI!7'MLBęCMRYO@ kK4;'| jK4no\/k0|KJSwdY hC%!~u/zDz{V>trWE#v6zͅ\Q㵝׎ % q僈$QD0#‰ PU+O7Q(M êD6̓( D#Acb5AP!̈%1 ։,HS0ָ]W~- _ \:"]9L~?vE|r3;5[Gk{,tk_sVNҲ{܏ݟ+>N,(?kxׯL_{^T |URD)Z+aRq#TJET (5NUDT%V'Xy+~,aRp|Q M4EP+$A,ؘd\>v" KO/al2X1Q&Dy B/UM۱t4``(m#y/9u:iyoklg` oKl/_ XC;՝^s{m6+&+@wVg<D ~S  !_Kdx8Ĩe?D%D`=DcbQMј؊bb'RQb(bbꖽ-Ҕ uS<P( ;yZ1U+E{J{3r36G 75/^FvQnnt.l<ע\3&F!?"$ "+ȇ2$ ?(xQ'r'r3"'#eN'\#Q`QmxU3*'RD,Iw\}dC{sk~f,tWc [.>pڡL.~!nes0?fy%ktQZkvݺeLMl|Cp3d0U>=i/G`ҫ~HI_7㵘yW&)*~ SA THU*Z)H`RRT*T T%O$1uԉcDOZ>S9hEG(XX-n=źg{kO*Bck!2yX] >l߾{_SCӵ5<{|y_WpUtUnLbK?*="=? 3yߊB,F&v(_w^|GUw9daG I>bV$*gQ央#|OqOg,Q$P &$ݠMA)TE.`lI2 ׈,/{պIc{YKTٽ=X;}/bc8!!+zU}i]1C,X_#v"命ۭ9Qf|jQ'= >"%D"'ړO#WR׳#|߆q^ >DXOX$'knq+m0D I쾍I4\"f~D޵~r#MtiGucޟpZZ\ߖz-n4gػb.?`by+r^U޵qC#r` fY|2!y RΈ\TI'j!t%$|o{Y0f= ģNLaq4+VŞNMӨXDbxcS#{}`zH5Afkn߳xP=nr?%˷.]+.~0Rn,^?k(_\ Bҏrgii [ B tj5"O1z\5cTሉIƁی,<1aJ%b(YQ,'4a'h|UQ@ƎDnbU@m視>HΛO$Q5|5P^?kW֫aT챩 *JBV 35KD=>pZmbon{jE:45&88[P3Q:rkݷBumZ5у@|"#.ѕ g/#m&b;.AXh߽lz{P|<6~ibo:]~'.k)?pn*ĉԉɇ($j5" *:Q"eCYD /L#3 10cӈ™IuܻYDqh4 4}rӓ[]v^^sZymKt#M "D>9m3vXB@FaeD>9hm2 6hғί5vd v8!=~scgڇ AM- ~b5vT!]icp5aSQ mrAHS@ZG A0auS<_N@WƎKA0H[)2+>~bؔCOLYz-tg.3"uRAro]W4X:Ѱ@%zxV\wų`DOPn'*xV<Qu,"{DSKĨ1f Qt(sوQ'OYo_;i&Qq+xn{u$P(Nŭ DJo_ȍ+Z(=Wr͏ƍo"AwŨZ;>$JESC';Vt"&8RHJh4dF2=r'vԕ"ZoU mqWv?V/4Z?'-NZLI7̗ǬԽy`N~orwյ|{ڑVCO *Pֿ@~UY)HC9iijEdۆ®S|H]}?}J_?2O*(ѩ=5D!@Gl-k!Ll(xĢiGlɍG(*#mkvwn~|Ȉe#ߧp 2*_z.n|6RAeLȈNc~~xA5$mKmey0m2/ҐY^XNSW(&uN[?lSSY\5$R~+}ڊD|xҐ$ka:jaRmCLmeY7>Kz0Y[(LK*%(议*/xKE*I31p{_Ƣ9[;MҒx2ؐy;MؐOdQqVxnH eNt/TUU0=\naRghDp1"g&#yq_;DW@|8M.0Πmvp Q1Q͋E}kxkff#s' '$u?i7UW ݾ_RZS{7s櫘Χ>mc'R[Mik^sE.[^ ɴdKJK)e,Z{=t}=}S-V/t'\M-uoXV#-ZuwvJgg/4~xw?D5R{ډ%꡻zǿtQ 4}v|}e*_k{3#*YJB)s#Ztp}z6Ч_ u>#w6wy*c뺵e'VT;vwW/,n @2\adsN) `ubf,dNtj̾$r ,(9E$DFD>⊦-ukͩ^rQ'UnQ:^4t)eŇ; /ܔyg ZŕA^}ӥ]~~Qӟї u龜 VyK/8S|I0ѼMc;zZ=}kGAT(<jTiqA//uQ4Y$ڷz-ƽ nm}tڷTw_wг2Q2m=見޹C:(Zii17ݢ?2xb\!'3LPg'ecfs{ ڜE9lERpfބ6gC(c!uxœ&{Y2!"zQdzQtDg`&f&;ΚyQ"3@/oKբ^hMպA8]=+{^j Q 653nRm<2hӚGU*.0(H?;Ya0^^{Ku7apYS]8i7ǓwrW=a0rZ?\RH✯qU=]ێa)jbjѱ d4M2':h柳Y'`r\E/c& th=C3x !ު7>;ಡD9|ELnu?[f"i`VIAxxw]IGZQC.P "Bb'؆pǫTPB҂OfΖUf@VYnFT{TfoFa26=6E >,H>&*ttug۱ٯEЇ Z::TTA,LJE(i-cMN;twM;~~b>՞^Rtyhm+@g fp, iQM %>[d\˓㻃Yz(hTbAE:aOVqxQjY[uFِ!j^$:Qt>W;΂l)D2Fh&!L$'Lt R𗟆X]JC8Q!]v5c"}DH,|a,\AzvDnpK }qEB\GV@:*&)C @uCDw../UZ|G;0_}?,*Xi kܐN,(2XB$1$$$Ll3@u 1fTS'i8gle qFC:J_QHO晋PחHIm2GI$Ijbs}tA/{Q;ćR ݾe {IEv[N=>2즲й.6h7*P{T;>+zAj7tHM<; #UGTD|l]?4!E}cV*@碽~0UT0/^J^%xu/ {twТΑAJ|g7i:JbK3m6= ^F PJǡdQ_<IG=ŘxS$|ey%Ç 0^lDM%j^|wT$IIljC:+/*EFO/TdGe3j“:e.%E]OΛt=k)O8PVI2~ #R\/ByE/R]uUwIM4 tdRFiT%SR52JR+}8" ׈#U T2!q%tUl[0ddh~ ayӉkH2[E:b̩mwnu 5:K˷dAJK:t/)!8 p|3<rzk NDh`b#cGr""rpuק!t!TFzO%H Bs]>)yw/R,D*pamӽF_㖿Z;E:wcCJn-t.]u珏;A HK]\)mo~x]w8EeE?oŖ4q?;F~<'s?`Qأͨ`I'=|xGqfo9l=vR^:qB 9xlBUbƁ:^8Q$W.s?eFCx* @vN4-Ýg?Z}%_95S3D$thxH 5}`nM15K?YVU&+1Bϩ5Gxe]'jڰEpeB% 6m%-PZ~/ Sk7MnuOAeVBB"9BJ2q7>PiP VℤVоyEcgx̓:9(+zּ-4is' KZm,MQNNj5R1()kZ&c|N[؇7/cQ(jS:J U!o8E*$H6@yǓ/w_LAd:"%8ٷ]ԘDLQGHtS.)r.m=ѳfq{ ">/A E+*FŨ"jX5^0ŀ9yq:BLx~ol㋖|4'΋Q!Ol>pٮ]BÝ̄P66ʋ ݏ=ͫN9 M}7v*Mw>&Uu[43kbZ'3z&mƳ=(ZixiB Z]y5c VY(Gq`uoD:]8*$ Bh,iU4 B/(P<Ȑ D2#!4 ͢8^ZZj{ebPgSr,f 3E1J1N\1ML7`N],/NX^ކc4I<=a*dz,_Ǣb?9m"{=$8㱈`,ƈ+`}TBѱGCZ*?C A:th3$H't N'HGI *t~‡wVǼExa0;V5#x/a (갨ţ ޻+OD$W̺I$Qr?VQ$@#$KPG $:ÑyyqbPէ`[_(`]t+Lt%MOQ#xW aF\]BE4/A ]1t쥈3;|c`:O vFcE$w =2rzp9Ѽ8QGkuBbF!DYԼ/)\=.NSlQ<KdLHƈd2UqȐN HdIұL,2Ȑ!\,g bh[OhP֣̺8EQl_|v$uᕡw,f<tbhBxދp_ 5DNTgxV;ݞX.bghx毺aRszž:/Q_feJQG_1E1v0x?\ΞHk(O p9 ?khWqbWLSDWoeA-sU4:b } ͋E+l_2jV¯|TBdK׫(fZq`Qg?]EDp'mt[VDୂ3փZ Sī !#A V-(8B'8Q_KHQ[x DSF@>^8`E@@ (*NJ!3!EU}UdE?_hr}^ܓ(D (bzFͫ 6 փ5HyE%tЅyjg[@l28p슯!G>WQg]4D9NbXQ* a#+(FxW {ZJD חz0Rm}"b#/N/bECgTEKJP-(T!bGd`Q<$ȁ!Q΢XEơ~Fb7q(f,x#X@^Q#^E {+ LV^uEUُWz WO15/I$g1h#>LHƇylHTԢVِ%MK8bhDQXTZ'fs̋̾(p1S"h<CLew$t0D*N[,/ъx0 VlLQ!d/?V'E18/8Ɓ=](5/<ȋ<*sb(XoQypDBx%c?~&"D?E{S6wQb^*WE!06IyQXT`qWE͋(pR"*& Q7uC'EõP̠֨DBx DݟWz Ws_DѼ8{CDDm;V &PAFTLaaJkP/)\A~ɋ{#QE;hU 7:*U+bnAzŋ*},SXT<Ǽ8Q (yqDF WQ!\GEp\*"Ѽ"jQa*~%-s0'&/E9ȒD$!< j&,MT,/Nw/? L:εK֪* **⍷nuNBx?ϘBoi^4pu;gmhN)Z4z 9Fo3+սxcs"t\4.8CֻM)⋥=SdދR,[B6[qZF|YWή89ŃD>yqHc0փa@hLJXgDE&(X9k?gko((…TnS~3O):%G5XN?gY\}V-ܱeNz4ps椷uEwcwmvferT7c!ލx0ZDgO9EM8}N@,98oT"qPz!"r^qtzMuQ}eKno2qpaGW')Dcstoj0.o9bD h K<6Dnb{qu9r;5,legAԧN*̂W[fM_ȡ"'r Ef]C[ĉ aDށC NńTwxaH5z.;LՍ?S:s՘YyRi?^ԕA$Z|@KsSÏz.=D9Dk}eȐɲD16{:,găHюցF.=ۋde9z]Z>x omi΢psߢ{'.-[f23sjP4VtN@R6\TP롨㭷aoBO8[LكMO۩2"j=xGU:χ35|bA~h*1}}Q殁C;GqOeԺhy$\j{-o;_@%ɑο8ֻ#F#ѥRpރ0X*-av扡ɫg:=~lwNkR B{NLdX"fZsԢ&9݉;CG4H^x ;ցXAohU__/z>w7mV8.qJ?0A $ϵbh]˾' m"ucfQ 1uS A gt*[Vv=DZS7КN?Ȫ{N (Q9tkSo}Ņyg_ Ӫθف9>眮DGs;zqwv]a:}sWVq7TrɋHb=8Yއu=/S]ƳE%OzáY+?>VC0vRZQz=F\+ѿyq)~U*VZ2XϣCKIabU[-zulQC'[{#U Wn˞_zuCE/;tݫj(b(,ݖ9᜸oǨtWcBŲ6&YDl'sXo54<9.^W8盇i{S*U|iKE/f8]􇷮[womqjm/4=Mp Za&X뷵 ?ǟ(76GYqA W3Uww#N,>EsjbT,Qފή~jfue~eWzͭ+vYzַ5q"Bh 74k/ݨ}m)B:oM54 # 7nԱXErop9H1q{VzϽ6T^[V&5z2\,T񈈧*PU+bj=S87$?^L6OQz1&[hN UF"^'sn-$+Eޭ-Rsʓw,^?OcWǷ 74/~烛4.2i {R-pLy#ayt,K ^K?cK jK}lF¬k 0Uww'Ns*ꬋf8}.<9T-k{sn$AOvD6q|#k<Լr[k,_+W:A-Vw"x_{߿+pdN+8DqÝ@e{uy7x"H_rtɁG/1#8/7Pu B%(2# :I$>!(.z:݈uKAdyU*x ǃ#QxǎEE抎\{{;m1o.h,}o־DoGۋOjɅ61^bc߷qc2Q9_ʖu{Z ך+nicH̺D.GDD9N)Zae,X^~+iyCZ?rSemꈛ{t݃CUԀ ~D[?(ra]**FY2Ϡ*bKJ\\2\[R=pUjg/k~>bih~ ad;WwC_edįx)O_k.)\mq7n,V$WQs5W8RsZ[oi}nk[%q,5g8 oL`1kzʎފBC#+%,.|{ TP 9#s>|;[Y %xo𒓬]feayexμc:r`Wκ'N V<@JwHzj3 *~ U?X%\:vܞk Ll.J^ܓH΢Y\E9lERA@+ƁǺ@4h>I0Pԋg^anGw&XDo~`Px~#y5Du‹H40 KK!j}/x_kPp⁇غK ߙ%&@| `]7L7<P묧zp߬(PE4[C 95ѬeG}pH5_D/ +o/[\"{R-Dv/G[^{=XWE/0/˳t9Q" ? +g=Yݾl(=R_~քQZz̋"a+Kۗ`[CMs[M'7`¸wxy*vD[@yfk ȬT-8@[(q&]L\ M6vlNkc8UU c^oY Y_|&yg 9>V^a + նǮ#+v[^Km*W ~ Ͻ w@#kc1wݸ˪u2c9VҒJ q,fJZ{u [0}ڝVVNq7oI G4|kIW?4+R}? ] ԀR-śTjac0`M|u!aZ4F,j-rDf`0F֌s?e("5⭋aU꭛PQV0x@;2шGEm ,{rTA|1'D-sy 9*&?^Ph[&-Qdѐ#pˈ2{x!?B)[5d,G+̍5!'J'5D<e:^ݯ݈,j9lE#n`^8ɵmKgkO 7?~ ?? UGfI͔o= ˾,^h?*} /6\3,<8nۘj!TjժUU-?|U#~Go0ޅ5F́9W62D*wm9mIP?_OYqƋ/j퍓 "^T@T%[k4?=+׾dCR 8?_{mK}.*NAExq1; C`&`_b_0|V8Q0|׳} r{ܫɲM֬jfW nZsN5Sd3L‘f2ՙS]}.(ՂKv\pt@a~@`ŗnRZץl{ߊqmu똆(zgG}Ba} Ϸ7np [qTj cиuEsGgKml۫otPr(cʾ59^-#q5c B|}egDzMux{Ft@${!;>H5ʸz$Y?-_3hgмUjhswx/ _FuhI&rdw6 >O|Ļ?quLQ-33,VQ$믖:ʘ j+pHI@YY5Գ1[ңm1 s?7bPcp|kcKOs4^~{ ыA)XpTu턥n҂Xq5`=ؒdQK+nmuw+~py7_uu>CQI^lTywe]$z3QLucrcx319G@EލXzvH2q/O܋qEӎ;}>h]Kc8DZHigP/Z!G@w۶am]V󑫮oX>)іKV;c::Z=[)]?nk֔YSZZ%LV.-33Qs}^ܣ/ꬋrH1m+ܹWOgEhEtmKl]>s(FUDAD㯿jl^`Gc;~?1mG7_r-Kh̎EףވF*'z;~O6и95x(*p̣U~`#/>j5 _Qm3m+|eɩNX s(j< Pla>\lR?{ڥ؊#ՎljK㗮?j>3{K[k3Wȼ spK Hoese#$6hT/]My,.YkA7,~gF(OKIVÞ֣2~QnR p[W*]ݜLwuHrZFAE֑(C[k^Q2}#ꔢ] <97pʉ_/<易}6 "W?Y;cQ=Aq**>PV]WozsLcz,t4 |ߵ dҖb*Qw F{} AZ:ǻs9NBu $꼠ީ׉2ܵQQvwZKF̳[70,?_8j-?&+p{?Wo<򇈱 QmZYdeﺇz̈́vNV~vm9LӚ.SQ;Y~lCeq+}VDTOXWk!hy [+:kc V-fYnw|ݔ.zb|ok}iZf=:n- `4;VX닋ߐcح 㤖1ɔֹ 8[Y+'SV l\ZPJ]߈GO0zTߕe`˛ J ҵָ>':QZd9*`m]A<YX{At)aO>I8ڍQ%^ArQ!vM׈q_z.?z|w!nkIc'昱oVXSO-S~u|OF [Y W5,WͶέ֯_1ˋ(zD]=? 1 םc;iErY4xѩMNoDqjVMgu)lSĩWVt#@XK& EuWn\ûdCi;=̄Z/?7ܭ3'sXK3%ߚ^|oYI `L4v%jog9,\뼘gS }FcLԃfaca:gb1'Vqa}nLN֌1618$1 921G`WIx aY8L/fsV֮"Ǭh."k>~2rM7\'d[&ÓS1QW'[,vq4"ғwVX3kl>/ΪhsuJ0Ϊ:<>hvA]PL0a/2Y 7WN fzr=(@c,{_wŘ)D^L)@YduW7d{6̻mRȮ91IԜ#?5CkJ6G^OEC[@i3:N'XEϦl螂\Z&ZOc^RԜE=lE?fUu(F+7t,xcSƌa,̮s-eU7"WM -L+pG^򥩋 ܮ-q4feBJBds Gkj&~0rhcèŘ w﫨qX'=*"*U#l,b+bhZcp3v0j3QDQ''*aV ! M% (@$GQg FEg,^<%+8#kCW3Eis.Eyj{?xntd[9z n"澆g4!e |U˷(O~߯zx{Ey/*\*$6_RCA 7QyC#<>û0lh*Q! jJysbdbX>-aqikRsc>5W:ZZkTUeS݀5i?f{>ҎWMkU)?z["CZ48"`\? +FƎ !DD !HD3x0 "aRΐ#bt,ey P~KVd.pɲ5Qۑ=r_zy@Z+[O~;]67oCV7oKҭ?b3В|8״e\ED{؊L-^`dlX>:N{bbDBV}^It.\E8@$g0.I,}[~ӧ/Š3j8#fd7<]i|ٳs`i}ne*8rM3_ ͏+}=2-s*} '10yz@uB ᪟u/kGPIxO^Ug_\E-FOJ|"P;.ct>̿xtgN7pr\@)jY ҶG{@up4AtKG }5ضb๳2)DErEs픢=4S 3B$D!1(yaɊᧉjpHUSoπ \r^۰+:z94t Na`s" fʕ+Sgy=Jn1HQ8Yi_-&tԫ:2Bu`X7iVJEbX&[209%oh4[kzcM\ [9 `]DW4}`uTkP>^J4q~j+{[s]zD\3pUP/C78:a ^㜆 F&cJQחS=0SX"4>u~w$6\Qwmwd2xܚ3E;v7I?`l%`h%|BWqdx(O&mu=#'E$ꔢ ߣ,A"b1^bR">|&=[/L)j^ܣhm@_fLl?wjM:ͧ>#8oqGm;Ss^Yc|: |I=!jg[_GLύlkc^qzף͹e'"N$wQseJ1U ""gTUܒ/MPFD4Ag* Ž]"r4x"{͘.c8s^X]a{ݣmgXEz/EE_~QąFR869?Kp9qCRִ" 1fL+:9`5GR4SmjwxEĩFekWYow^ADѼEPW$eWaP!|i`" 77S[sRnxa#pPY37l @+8љ;"QKz罷ksYz&-/Ef_V)(E;@1(`&4Eɋ@)µ;E~w<}E 'ww*z3~^-ckBV>vq[mWw}4,\PW>ryzܥA_sż7Q6Qs``QI1jQSF,FsE8:S񔁢ƥ?78v]]]N]G,jg̉ti}eɹ?ЏX=7m똏\pSpvfsZ0X_0]V\U=w_ dͬL^IsDs C4) TyV0E! ]DgSt~W39qGIKhҗC3wnhhˎ0<=EG:_|>ӗSz~ ^_xl9бeNޮg;H K;exL2y-.aף9TD[)E#b< E"BbcC(:xh_2\E^Wݟ"wP>c/<2}H ȊG+l>22+i ?eS ޗ$%'K Ԏ"?dYw_ۅ`Qv(X֎Ҳ%znu=ZfeŃG$ۀ(H4NM@#BXj3Df"(.8QQwOMc^ٹ_塦PtvnommFX6b>Zukr__ygAayG^-YeWWg~;A[Xͫ/z{FTcaC: ,m(j^ l c`Q͆yqDq1,c?}Ͼ)sw Bc5g}^$ ()a&*{PȆďO@̄Юbyq(+gA<ZŃFDW1Y41j0DQ5]R1jDaB0^c1"FEE+e 8{Y)F'URBgQsm΢9UdER4VKt@E&h0,yGDg".Sx'!#+EUP5WJa,"*juO 9y/)\}a#ؗ_^ƹDaXWvx;vڷѼ8X]$,~|s$ ~S"qbyu$6s,Z@u8UgG  'uThǓ_ʬVL>qzK>8#q3݉2ez㳚?6:'MѼhp V…WlDd 'Lx]Eɋ{u[z Wc[OH  !elRPE4!D})}Q[1r>ʼnDը(V1 FcD<URy*VXTzvqWQ8\Ia*ц[ޭXz뭷x4BZoUNTh^("/=`Vԯ=kɑ)V$/3h0 6 Q8\!^|T,sa1cDf_DsuO+쥨)&\E$j=f* ƣ3zj€IAlBk4̖ZՊy<ζȁezq`Q_C}κhxr5/h *U:U0#+(FxpMa*=4D^_"SJHQtE9`.F8S^cEQjQTB/!b*CXSE"NDr÷Dɋ;bQp^jzQpơqZo /<"Q q?$HI`QQ/E|6\CjB7 htq6įփ<$=X.ϋZ48ŠAx“JpQ0Dp1]>\!/NuEU)LDrɋZx0>L#ipogCާ1>t`T-F:h$/΢h4GQ~IE4/9\ETYky CLe$ft0D*N[,/ъx0 VZQ%t`F]z40E18/8Ɓ=](5/<GF)91`XD(<8bc!D?\E^Wݟ"̓=)Dy1/BE j>w0ކ !B"&g^ ]=Yf;ǜEuH倊Ib5# SE@@:񣘈xQt Ŭ/A)FȞPkUq=,2Bԝ?Q5('Ơ0Pz4 gm"XT!gwm"1Qf"\rH"9"zDcIhRa;JY#^E~|T0;fCal)DE8p"jQ*2hETLd (&o& EõP̠֨DBx DݟWz Ws_DѼ8{CDDm;V &PAFTLaaՌÆ"+j_te=y"CS=ბyq┟kԨHIUDWX s b FTUU,^T^$/cռF:j}(؁%/Ξh"h 0@Q^6eN%xXW"ᶇZʢɋQcd3 !F!X*q[z,Q́ƋMɋ{b{уP k[XѼEDxA"gԇBXH x56| ]Dɋ{Y\EEx͢`ݏk͑kDVdJpᾂp'kQXh,&('lر$O%j^ܣhQ {Q%SlMϱ]uw^k),zUx `Q)$93 |`uKXu'| Z/λnϵ6:.ROۺvYcN?¹zEW6ϹVgeQ=Ek% eE\trJ($"Ⱒ`=ŌxG8ˢ9rJOjf.Hoy5=|Zu{c9'w?!Uޣgd:ggz^seL$%u~"7-~g[E%348RS2pIߢh^(ZQAb&!+>##jF_F*bPŪQ+cŀDɋ+rr3ƹT0RFmmr& /_MoI^QK$֟;0UsqZWfPnX[~hҾԳ4D[Sz|w[ދ2O R4omQ+X !'F4րZQpPX^ Lĕ7TfQ4(ӊ{!rL:sv SsJ$a5Gͽ\r{9bM6v| !.J6k:xL1|6q(eH^<"SVT,OOުN^ . 'b͂̑_ΞEU\s܍ Vz_]z%*=*틧Qnė>qra# 5K䄾SaĨhvӱ6U0qq6~7n~6O 1=/79rW"Bnb>/ :c 0!Ć wEQCH@1J^",/{+h1sߋZ.8J|wwcs{GZʍZ8c/NuvO00+1zxcXu/'5Gلhyϑ~i~˿ ^7%kNYkUНs̡7ǶWyq_ɾxxG/BHމp2"k=UCD(gE S:cy+d/rI)GZ8p&eY$]v={'$oi^yAal uu{ZqW;a \[V_x_O FPϦ*>! ƶSk= 薧6yꘫQ[:LG_zj`i&1"NoyGUe{kk35n)[fʶVub=Pa ?pXQ :Gĸp%UʎqQE 'D͊1d4Z4a9a`1sqV›ؽ)G:6D6l:mb(^;2W߰x"cnWp۫퉡>}F@DrNH$VnaZnxȗŲ-oInoE7 5\-;** ?Vj"1ho:+yz};\\&HQUն&Nm=n=^zqL$WEN2hOF\xUxkm5΅>/1Bmt C+_S'"-kD"kFbZBq? !GUFnƕ=hruTW+sln}\jķ*x5eHiWmi؅Ϥʪ~{ǎ6e~:)\^y~]0'QFV[ǎztUCԶJja ZtQ+T4uŰ{1:򌲓/ҭe,N$Cϛ 9m2ؿGc˪5|j~psܛaed[O-"9.gQsuJ1z jش|: i=ܭs,?&}Y{W]+6l|9icfڣ{p]zѿ􋞢R pя Q7^Yt>/~#4_+:{1p9k}ܲ5H.z:NsW6 -/LtwϯK?˛݃gs?_X8x@UY&3aϋc'" x%*ޅE>u|DwShNSVUm PtYy+nq> 84SoytZ7,L#\xcWd j7R8 'Kew/ǫķ_U,*lon8g'X[m(-: .$@2 3ekͩskuk9Y}O5Y>#jx'l͸Zxv^SW֚^/ 9O_p!y*C)>{s(hI{=≆!27iǼxhV}&3"V Y1h,ފF7hXq蔢9|E>9ʊ%#e<-2?kѤd}D抓R >ؽHZu ]RgooD2F|SDnf̷V/uȴ9µ̸׵+, 2f)Nj;c5,4Y慥^D_ǪmBz^ dʖf0͍`Y n@60xvt+o}3 K{[*ȶ c-mq{B$/4 }8<΋`zQyB̪bC3Uu5m ArXc7&51z4#ZY50?o KPkp? e{;] 2G 9jN;ٷ]tu+_"I[[ZgzS4:K.xY7XMgaϺ%vL hUIXmx<#++a_Ėapk'bzZ3i&3ox<.^}J A+ |kaY熻{1}x<^hc-{zBǼx104aj^T ՆMUTqCTA(b*pӐ)P4 %0DqQ[ඇ)]#բkY @pi eZ1v9rEr'{595n//ob]ױ`c'h,xhz^Nx(Vp,/lܔGJTT(0C璮*PiY^R#NE/Mo/[؊R乽V?U֣/\Gc=pv8 u6E03s#F>{n[f';*͋ZnSA1zx1.Z`X5.\cbO)Sa+P,Gql1WX݋L}Y4!5W[y:|Xsòv{ru|Er䎳nrrk}*[aG}q? pw=R1FCKI.ӊfొ@q[ϸ0_A'5l9|Tf&a%y#uoŬ[zFbI-+O\SS)k+:|{N'V^X_-w38uuOg7up3Bݘl`m{8C*O̮ϋEcs{3g "ޡ jT1bِF)E͋{]/_yxݢ/ bT~>;!vĶ̝;ᶵ=}xx{K_;srʑ+`BB^zF+*g 7pu\\*GbӋl~G?zRG04=݆;*t`&\W_ʮۖ v9}t,bXڰoZƣjt;J˷:gg\ioPPEW_TNY2u8ytb ឴n Sğx膱AszztmLuE9EHtkP)qfN!C*8N|#hDf">ees-#ڶq>Fw3Pځ@2ڹll%bα$˽!(G3m1)GAPkS?ᗿxe)`U ~KL+Phh{[|i]ۊl/4m?"+҈ehvnǮ 1XOm_p_]\Sy r5ٖa\}*2"N)E'WA;Q a:%{"GǻYT7/9˯=tgo+s I"m)+\p77Ī[vm?{wXu@$`O8N؎c<16:ik<$} }K8mMdcǎ1LBHJh{j .BB 1ks>hCx0^ F+[rv9~]EyY޸í3Xgnh`%3}L^qK*z?qVH̡?w܃~朖i/˖)x]yyXN?; %X@j=o` e\/uKŬ]=_u;/~zZ_bˁ%dfN e,؊~Dl018tH^㩠x:/LCG['slkocAlnw<2̅cnd1P\ՖejӋntϳdt} qU3~U$cvWnZ|o=Yyw v,y>Y\Ugp/mz)vu$Be7>_5m\x`^fkޱk)rk災%Ө{W-/zzކ㚋Zk^WS_r<}E߃|vX ,,jھidr]7ӭG05qb`J;DuB"` qAuBN@%+q1}侲d7'j*|/v7r@$|E[TԮ|yp婲NX\Cf9> (G[u\N[!U,r׶YŜºI@kms~!|uWmr$+/-rvzжNyw{>L_N"V }]ҚO@/7o\=J^{JǕYZ\\kr^iMOV"жծ@g[+q{:{vmWQ3y|qt[QX8ڢF,ήjqVn1T,0s{`q>s@ @e)O)(l~t{7[j:A⯨ν_9+rI7n (89ޖ&9e}/~}g[YZy/Z  i;s"-zcN}%@l;ΟwޘU?뮛(qҖ`gwޙwkzC9;ƗWw*4NuW6u]ul?ЯjJ[nE~/瑘cٟ@vAU$%ܔ~eH#߹K"=Aϸ;B?q姾s]p[!V=r㨊\HV/<(KG$"85@Ҍ:DDN_1HbFHs[fM[?1Iu&kFCe9v႖g vCq,im_!m2TwO&fr cXaTL|9k)yگ c9r5?suzΑd_DH&!׌9& &~.Ǥ꘣DLy7qȪ1+b8Hr4X2ZނƆ7T&@74Nc xoRF"|bYu 7yn\T*)'.u^qo_mkꋥnU+0z9kRU~Q &c2-sUG'WA~} g9p c|rP" ~0_3 ˠj\8RI1G8Ef=Y9Db5s(bɹ.Knlgf!!ffKBY1LFC\z9>vU<WО?O4nߺ}}_~_{8*yEοc g?dKї#6T}!Ug&^xnq{h9#Ǭ82bQˊ(w?jQ$ ztQȊ%>_?tލʂ7^}7?ݘf@9>^St1T̀װ_=!LV?7djjIɊ(E0@>܇Vu<'` % ǶC}:ؽel׌dŬ8EL hu p!jħC$dⷁ! A5*tG'(aVFՇ;R?kgQ(b܌3(jȠLib駹3o1#x3\LEl{ͯ؛cka(:"Hb8@t h/ Hn`1$F&x0!ӆOdDTphw/2lžowGV<Ɋc!HXfXV :+p&P55#@OQ`m?9U FT<mD Ex1ihYqbq Μ3¼ p$74s"h)yfĈ9x 92 bTT]Vuщ jon6CMPCqb&Dʼn8 "hn`0;9DN-)~e_ Nm,E32FVZAE'&j&)./4d0g $B7hYi]!'v$:2eEFEdD8V'Q1gFD,xDPf&q %Qjb`'^o 3 YqxXDN@D1+(3e(VN \8 !9=b1d`ά/HBf`.*c⨊vB_ٗ_YqEC1dőePQ]ph(UұPVlD8,o8s<ϊY}j(PB 9C5j8j9DTɊ#(e(GvxYTEOWL#<@C_!bbYVv9Dq3'Ĝ3W3'+ D0\1i(gQN[8A!CʊW3eA0 $T ?D}8n{ XD131gAlD XV<4cˊ}H)qs1D=>:t(ChyT`yw l(tUԐrl:sjR׃N2-'go91r<*153blh7C1GUC}y s!+mET) D|b߹L9P*z0ƟÉKM[lUݗ֜x/._| TFfibrXG%ffX$c8ڢTe- :x_%Cfb&0gHlZbUjVQիn.K~DѪ;5Q6mZ \`;ϟڸikmjuIE;cARu%F|j ݣinKԵXnUBZL>*ɛ& g$ِݯ!b7vdj]#/":h oCU9 gIb1dő}b8mqv"--, qr䑚֩uu g m?,truųy(MI{Ѽgx|ngX B^&77%UK^dVM΅H *0zG'j&-{=V=.?Os'i舯K1""X w4 !~-ZAᓱ/B'eK.o1JԾ'qm?g9 )+hsrKWUBQΣ/m{_h(;_X*OWly"yⱛ if &?wVvlX5nY А~>p~۠hKசQJښ:fuV< Dp!v!L<EA \p8xf!qp4"R;"7"k[xhp^"k*Z䮙g|(֭c{]C~_$wy_=H [}q(8kӘs4hJs;ĪoUY9ͻί-|Ѧ&ܜ?o'ρKl=kKϞ ?exxwWkef,uOQ-C, ,PԂz'(jΜ3IP/!T'QFԓ@$sQ3xFAe z ]VJf^>88cs}Ks/E&HKѦ=LO".\08G gwv(0kRb6O֊}O7Vw]ͥB<6ANnWu{:Rd/vN<ﳷ& 9{-x:驢1RBJI6l%_hҾkQg0? ]bG+׷]_}wONo?&zSƵGʽ>o2F7W,5pu}ʊ!+5 ⑸W'.'MnԂ/_~دh~_#J|%2|/|&M /Gx$w'R5P|2 4VcoGu_YTI0+iȈGt6"c'"9E`/ǛLp x) p8ڢ;1EYhv ն]L5lUp^W.K}}]m9[!oSy^z3gFD FĹ^hZ Ńt%T<5D|he݁b{Q; sV J0_RA33+iȈ1T'Pt*AB"P< 7oxTCN@%+OLQhE.5Q_x.5o`X* lmu{F(.L >B;؋9UUS_q FysXQwFCrUGabiު.O+| W+.; 2^ק(Ƞjz6⣀EC#0XsQbI/AϊGqc0vO?Zc.F=+V|{4aqs} gMݾ>;a n|?rug fQ @zT2 +*N_J婷2WL+n`{6Q ǹqkx1T&+fl>Α[3>D;mE 9 &ă3<CL$9;-WCG,8@3C"8.a..~Gw>l_ +.J{*mƶuf;b޸Ͼ\^I<~[їZXxoBMK+7|ibb&?s骁]Z _Z/쫴 uǹN״Zq^쿯ei3[3Gz]+ >uCMqJғ/"!BC&6( J?mD c@#_$UӞ[`Fqy0_46FݢՅ9(-qy8&]U9wL"8FGNW5)vN}vT@Tԟk=/p Y xuo=S>g!pR[o[A#٬/fk[nW@..pPQMR+\p)%{ׁ/ bT=gRh3Em~ڊ1\%=bUZ=@f);m鬕mAK)ڗ+1 W?_N :kLHdE9} hd8J IQ7H(+"2daHPI=T~LrZs%" fM+I#V=˳w.w'h&/tf-a8`⾿y t]rKxK .{"Ͼ|+uˢiy1(dpMK+^]_:;;;U/eK3Y3ر'e{?D7M|\(/,=Σ_دf( O2pLd wWq}E}E׽rYIkVhﯦҦmbfɏpnZidz{7ؤofުIOT}kNrx2NpL#Xz @2!0"45y2x_wÊዕ-'mWRRR07/OHIħ$b}@ߚHfiZq5$Hnoo]b Y_I%wޑײ\3-(2Ų@Q g^ԣA$h@ zCz if}! BYqlEqc̰z_/u݉P5zWBxsNE79xLwͻc$ XuOh1iGQ̱x!uy!b8!D *J89D؉~D9bz+:;UF1CPر;g9Mt8B&9jȰ31]Ȋ-*,$%x0ǐ/み`H2`e X 0αOD,+KA xۈЀ8tT,NyCa K7wUwki)`bcsǘ0Dȭ9խοM7V2ȅmmpQF<Èp7}80ɊYuv$'Pg"?R:+ .ޓV'>mSCDD^~U9<|1cx9^s37o-dNLstxQfdőP1gőGr{̊( ^cs4 YuŃQ)oM.Ku>tAb yORZHvI/Ѓsd<:]iu8xp7}U{2zhqrXxD1dFT CO{Q4#`0yG|{0p=ypA^E+RV|$0<\pNZ􍂢|R|eIEN" & 1D9=@_ܢ8{OIQelp^>%wrAW!9O)+KwɪgrtCW <<#s92-+fœH>f=d>8i gfޖ e/nqzG <>L]SwBlp~޵yP<:<<:wƣh/MAgc'7OG5`V_c‹YLP'ocVX&oc֖ Or`UFP5Ϋx15~#Bщgg  ݷe`V[=ټ-37]u?<>`y٘w]Py-37u Y']ΫxʗUgw{Wz?1}AՏ$s (mcV<Ń -⨋3²=,0G*ß5\ nsex M99u}[.kgtL%߼Zʧ?#|sUA*{/hБsT巠abޚ* 9ս9b;u[50ir'/RiOgcINNoA'vO福猍j3j~b;~U+LAB%S16SSh]4忿1^RD-()zZr넞Iv}v|g\ˋp+. g 9dB]'7朵W/_kbC3БSZ]o|[๼:r:mוkOaE_T}xT"!+AdDBV/ 4T~S̉QyIyZ[VF)Pʋ;iX;.; yݩIy*w_O/XXsvE[­ōm OmUSQ ƭMSN˳y«o~k@1'Teފ͵xlTRT_„>Ր; [}GW:C̉I;J:TLMx^4 4"+DMo,=oUHݻm//>i-,{VM),ll*lo}{ʶ8u[Qӗw;JVCJ.zaΟΫ)*6u\s[,"WjG:LWrk2CV-䂥Q `A-@'P=m笛Yu:gW>< ?׫v׮?NTN̳ܶYgLKw+} o濷ؽo0YXچ-,.Z[xvecgU .\մtKZuhj?M  h \|b/ﺷw=yVM`]l{cbINdן.η6Wwyg-t V:JJq׵~ mBn[ n%] ܷ$dAL Zc %Өx0hPt 5p kWnMү>jƶ"~9߆{;5i-_rxRx,Oэs !XEcicc%Խ"xp'*x\0 5L/RQ3#@?Go7  B8X}fd5?Xޅo#s$ ՗ݷ_^3nPgu8[;R^ז&ݻǭOUo^_o_-pS峿̟:A&͂8P$ D=l@Ղ CL󸐙Ǩh"׌kD0 Tn &99{?8Gх[IO16DGYԸ[5C*iݏ;Z7?\ orW2;`oԿ_A0{ BX).':ͭ^;2w7%uB+zճYgU1h 5,Ϋ6O9oe4]{v/MP3 XEq@gqj`.$G( S䁟O\?y|$`t<.ސz9ox+vH'[{~K9.^+3 n.3X> ̜`4N%XmU31+"Yq,D7Dؒ ߴӸT}sp9gw緾1^ǽ'Ff8?.oR#ĉS-MSe[{Y!?}T ?8»c!x_]ZZ'̩%ջ*0uoL͜g&UuTL/Ɛ  U 5-WmN>_D+hA--M3;d𓧻qW7tm-7n7m&>|z[ @mS :_2ˎ\5_$jV{⻤Kޑx=}3n՝/y&Q*^_0sܹsݵ%SQYkxkϬ5l}{ϴydcd,yIlf4d"x5BP@qL&bTdX0z{d-8lnXk֋ݝ;=%_u ο⥘w(nbq:mTyή}_Vyyn53šK9U?:j˴È:|xhsH>w+G9drPY[g4[LLu nfo"}̾,bjs `SQ#sʛӿ׽~Bm<K̲'c"Of~r]8LrU 7n]^tǸz4>Dž!yMUn"y7;e"qH`"|bP@іP<~JWvKԎ5&}oZSIoU돂&>Wm%T#0ݘJjnVC]XVyy=DQ$+/°U[P~0vVڊBN WqoKϯnI>G &.oEQLzTLd`(Q!R;4Y}o }=\1X*rRԢ)v:|g,{߭l徯?Iunމ"Iah%|[ZT< &g|pWZXuͶP0q/ vOkvʦ?lcN׍ՍU}jϛg B%yl:k^}Ѯm 5545W~M|nOj4=L6mUi,R/0ouW43ݕY (pUseWɄO|>q{w7t;ſ8i-gut;p{hrpf [Ѹ Z'NSQ 9uܦ)y3 4w~{CTX47-+*gTvTmms*6^09-MgKDgkWT5ġF"85-U3߿(9jJ:&W4笥-/\3L8?4nPM[^Oȟ [}vˮ U=6/xbskgE(}VglW׻vsW 1G CVVbUFrsQ8]ž=D7 *23kKK+}ڼƞ/K]`64+ ؜=+(,zJlO5N^no_d5+yeg۩e]kϲq3R oDZμ=9HARt7 }S6Z~댭v՗|^m:ﲊO΂SmwIrLqM6B.9SoL􉢵3fu8V()m]+bؾ]-/{7GR֠Jck/u*[Wsva}Q̊݃&92d}/WʹŃ#rڊd*QɊD?Xw+/=?e]ϻŀ3uw7⢒~gѿ{K.JIû.3]0X|S^<|$׿z)m{AL g蒞1i۔%:pl'~1%k}gҭp JLB#.ѯY}}ϔˍ//r񚋗X^UPàg/]Āa/^_ۺ(Ǘne/ _x¾!~f꧆Qaa.GzcYDȢ€$` لtyD' ~zLC7׼h];nEX88Z"!CWhV݉c KΚus3ߚs]I ]u䎺È\oGq1d*ڈz.+DIAvb5+NDO NIA&`|~BSʥ]nW4\L$ 1cES #rhiQ}`+Ӟ)$8 [3ͫ{]ז!뚡sE È\ըFZdTDtD\L>Yqh#)8D*!$8o*qP~`Pw>ou빶idđqLE7b|?'9Jѽ'uBsFȑKXT}\D(#.2*"c'hrڊ2ā!"^_"Ugj|j !W>_:xCܰh?]T$E'GVp8UN9tHx$1`HcnLG!\>,$o լR)qsqfC6LN!s*ols+^Cȅ7^Ա׀L-~:}k1uƢc\r<=x :bfPd R\<Mvl(ˑEe}HRflb& UVWdx 09ETt:T<>Qs x;zLq޻{K8sbޥCPѬ8@čh'e.6<mY4qq0M1"awW,o\l%,})Wqs:YW?ްOS~|M=gq7b`˷PXIKB"'h6v" L! T-=BM[Pn̽x<u|wrזJ?̶{8qzfӺ XR>%yO߼KI^Pǀo,UTטb@*?fTyOBsb9ACPOҵfP ˃J_3C Ih0Ѳ/p}mym_[J.}'+RXA]]߲o"4t$z_|㾛fs%(`Oow0刍ɊYEœB x 8u |b(6s5SAEˊG-}1(U)t/,3!E({_C]~oMmڞ1I6]7n]xuOՔ s:i>1g81v^O,qP /OaHQ2Ɋc!:LÐjxQ1`b` FdG4bjF^Pd0D/i7~)#kwgwe鴋Jj\qKD=,m 3<ɅQwM(;mbQQt5h f|dު/}9!24M3ŲD !F@0O G;C@֫`I-ڈ6 -> St"Z(N rM//.nUcr6Yac^.=xU e%::.^*1&r̪> QO5e.8<1= !̒00"rj`O_/_5zgD䝞Eu\qUfnW?|ƺqNaَzh+ɻuQ0gjZ0wJ7n/G#As˨32%d#63+WK; @Hŋ3|Bl/J Z"P.1,i:)Y\* qݧK +li)?1χ3EUA_NŤϝTΨ;(jѐ9H9f\XqA3 Em01jdg%/UA-TAgmU-TVVQ[UIڪ쥪/ "RcQj6" %=ע3%A:z *nlj1V, gxeho@v,_zU-Eh@= M :sjo3ck8)pW,ؘou9&waE}9 #G]i'j"!+Kyy+WV̫NUo[:oeTʼT^jʼyVV'Ry+S+W!b,LļQW%VX=ؐIhNj:D=A%/!8I@pʵU@% -bX iov _nggiYOgwL pѬI Qi="N_>}&5x?17GD>D2}ƢeቒsϾc|=^St󀳠fɡ5$1 Co(0"8O'ƹ4.^'7zH p4<3!sԐ>̫> YqE@j"vQI3 CHp~QɊ#(3 Q\FFL^1ưDeL\1YYq"r`H<8=G 1DLbPͲ$>^StljcF5S7tׇWďt'8dxE'HigΜ%G. 1  Y_d/gm9*&~"Wvly(!O9Ѳ#(⏈}xދ=C?DzhhD29Dw&$%yGtQz'IDԐ@;b[u=CE2-+ТUdPщģ{T 1 GakGysbDɊc!/w'xEˊ#'$"2fb$:Q4T̀`.h쒎f8I#vjdQcN9xd1~02-+YtNMLD%~`f(!'u/& 3' G3P dQÉ)U1+c%+`wC|*CLO1xR%_81OS1v˜9ffSYi2θܓ,"95:YV<8`^`b~q01/0+"T1s ސ@Sį%+QThz%G2CVU $DOQ8mչ+8QrQ2jb,ѲpE3\ Μ3 }!1sATIC8!1('~pKI&I*o:fJ{\ľVsh! ?kt9OL~!LxQ7?Eaq[_Rz(^E%Ņ@F&G^5EwlcV<Őˊ..ղhm=3P5>X os=q ~dHAM XÛ$sł XtZzu ЖA"#*=S$`QcV >y^{bCW}pUǂbXQ/x蚑CVAe,؊~Dl0QDâ =H,|PS9w,l翜ϟ”Gqx5sF筟^]~'}'}_|}jޣ)|90 ږ^`b{|{]Oj|sR=m'_`dyO)|s:θ?eu)JˠꇷlILyk&NI8 |0wgJ5  SiAS׶wvѪm-fnH/{_xIl#*Eb(H0(4~@5)$qa@#sN7=qj4izDPJAO&K9kܳJrVov?;}7s+rJ寬4+V_No|cҼ]]Ͼg+nwYʞ^VgL/WS]6/wE_ՒQՔ/>]љ=;oޜVg.vdq-=%_"Yq,D`bz>3^%I/TK&sԔiwgWA>>0v*PI~"^ԋzC$*@,00 CҢOċ Hk6o1cۚ𙆔k~mm `/+`RIJ_s \%z; p`L(ɏVMˑN6tX&U?zY4F!ِې ׯkBm5sWffwqsiQm16j3@&8sys7- nڽuF~}tbwc D8׺i_&,Q?|,~3먿[sL.RuxtW͋Zd[KZ4L.Ur;h3tȖ85sqzP7ʯ|Ky)HbU Vك|@[ji =9眛>y?Yaĝǒh]"`ՠIx6:E2 mmyw'usGQ<?>?/9f\5eVw)nZh:/}_u`"^­i<\jcvAWT0_iWǹm՛+i3dGdDiWms5ӹcaAk"?xк m +^ Lr GI'i+jLTiC巿 1̂eM篟 o^?{:XT?x+yQhq_ẙȤmƅO;+ @Ϊq,j<%S?WNS0;6:_jvOr18kЪ]}UNIgဗzB .Zqn1pk~z-!=qF/(eҡHaihdJ'|zCf1}<3cHf!@lEt x153a9}EDQ3*fL\ s +vNj+ ߸7ߧﻁ\LawSZv' wo8JYӟA$bϡz8|NnQ)+}?<3ZX<7wXfN5OP^0 {ֺ{Ψ^C믬|m@[⎆.R8XʗmoP5T ~{={סŏʆ8/_)Pů9|_5w׾ N96a,N=Q,ޥeur▐{ '}˛w^qw{^{ʊOiLW2c+}?TM\2{yTMYwp![aAcFkf)N1Xtg̚9 .#PHM>z K귢oszz0/ V]XU6Y|wfW\_KftV\ tՕ=30ʵ;hDŽO g0iګq{R Nx=_}%xk˾3;r9',0a^as[SfήݱU's]SnይS &_;9y遪zp7PؼTx '_:{-<{󃨑{y_e&߼z׻~ʇ'fVM{ -kZU7bW{wWW?oϹ1Ӷjp/5fOCKVLWo_N(_74?v\R[>hMΦ.+|_U/P];kF\8S[ΤzceķxgycMݭpyѬ|6K d58'}b>|ּi^DqO9uӢJX yDDN_4CK߭+r|s68sSYٝb kQ|^陨سgɥ3AHrdqR1[3u7@I[kQ\S8)~׶ u׫&PQJ*RT[@{e}EUHDʷn53M^_ySΦTEmɸ )ܮ*ZzVo2p}ɦW\z/3}^v</+f׆kmo-{s53(G!FAtȠb2#ɐLr>sG{go6w/VMԃ^< W Vyd2szE $@1Xoȅ]$SWݖρ_R @zvTo6#蕚iʋfv|S{ELI=p7/Ńp ws7T};jGH$/ÞNY=L5F\[V?NGw"9Ե_ ʬ}V+WwM8 wMʞ?- V}ޮmt1> 1w֢4vVVlZ,槼o%7+~{[t-x h`e}=Uq{36M)n~o&^75o]ouQqQT5qՓ0cC}`sziՔW^DKo=CǸ#nѱ5+s†Fdaw,e龭Scd.0Osrmg-Kc ;1#^yO Y:ΧE5ļ0DRu?d5oݳbYbSvwA` -VܚS`D=J|o45O狿,X3[8ҽ5ؽw۷֒[ntG3[32(e&+AE_E\PmCu;@Pi@{{sR ~f+Dg `G!mK+O/>qXU*rx9(E55S*JV2gi490s^-?+բz÷o+3$o6Vxb:tՏQWlHK8dɒ%Kܒ%noP"% P&.:".-wcR*&]V3}WXr fJlµF4!]e=\UVԶɦ0ߗ\<2'0 x^>!Eg.ܬڋaX7|OG9f=ʑ\ m9xBғ0c7- :m{0nl^\%q!vVH љsBw䤤7$[DJڻr]Tx+!䗶ڃ/2? S F̳&wݼ<:w-$   I_u׷]uc{kn_vl6h) 9;X7uhkM;;$SoԠ-&9~VTcU oj7QaM]qAo*9_A7vnm,{|β5k֬iagc\AG#\f͚5W@%7tK<z7Tۣ±Ǒ}zQPeuWծ.ޜ "ǯ95lt.]T !h]bť+^ vaMY\iS!>B4 1b0G87"HTˈONm=kE׊+T^W~PSUy)h[಩A+h 5T_l%H&GnYrVuc˥mnޱ `Ϫ_SSïarqɥ;vn-6Gxt7=WscG3ϟi{#`Pʁn{G3Ϊƅ;;w7o\uՀ5_ή8:m> 'A(}"%[zyys7f,.(=_#AUƒ_~en)6-J#4հ7+旛Z5l[K=&?Cn#$^LZQ<[ x^fF:rw?r7XϮ*W.8+a03P(QřWCD@*}F5q/\rܷ+b /W.5 7C7oL*jX58>aR%B @f l{wd"fe֪y hq=b@q|\w;bUVk+l&9C5ٶK=hGHM-Z^Jb `λhRѽ?vMf,;м6NF&,9J^B_(~!kSNR Ov iMא_bsl\:O7./ؼ;3p7aCMɓ!M`\_1W `=eƁ>+x@BcG!xUQ9cǗTmyG=p&I] ,Mj8$Ե3;L?`V5( <]mjJm'߹MzDZө/|7̝Xs;X ػclLZ1d n4޹2X2FܳhHJe0b}shl$ڰŤe8R 7dj^6o{B~؀f`~]eﯜZeF&~d_ ^k鈪5|tbūm8늪3t- 4l,UMs$gg \_[k w>ohm舿Z)BDXohEM 1޽",?nYjQ? 3phze71D]U׺Q+|>ܱ<0Y o^ɩ_QIcksQSGk\9*q'-`S5s- o©BGcn=V+C͊HzkͼֶivS3].ນn,  c^/n&{??캰l=o-l"Y!~ K~q}WwgVǿ6Wf|3o?v^zMSCʖɲ`CL^boX17I I&6/Λ  F  3FG-hIvLɈx#Hg1Dac՚7no{ ,}i,mzڗ</vo۶U*رsgK[:B͞iIh/hx=,hؼsH@:TUb, \֚m V5fJIv> ܌~ұnsuYSGh1wG/ѥӇ:Omآp'E;2./gH-{:=/aJMSm[&c)# 0SC0oayUSc^7#3Sg!,UI+JZ=%5̑k9aZ׾dKWWWWWUWWU_WUW/,?xL3ҹSe6UQ-\]PQ]ϓ_{'p_f/"xeͲzlo&v3ڀ4Ԩi9oh˄P ^,/KL\n*O҉-i㈥:uC_xM>ycjfߩ_u5'PwwMAo/ 5h(p#bpJeo߶՛W{ۋF@hjw/T o/>U >基gùw"S~~W K1S]%ZDW>\x%Ig_폻j21!:G,U[ȹxx28$##ĝ{~q/c?Nc!jk\΋UdN3&hB&$/9 hbbyqD(W*ţw[ޥ_ěij?]o]?i՜;4{SL/JF"n[Kb,s)@ĉ (5 "CDĜ.,D%H^̝R6"Np8N0* M]kE\Η֩[>Q'֒8EK+ԢҊ\: Ӊ~/'$o3Uz8" ffŁ"9/!xtseplQ2"RszDZ"E"&Zpe;t2@ )Ѭx$/NJ1OX}"Xs.byq|Y9HrwID|߿'LBbq#HȋKLv:yqR!3&{GIXrK(%XL;c61-1xDF&I*rd8ӆ*_R1&$2 ee:(ukM(c%*"^LA{(Cį"p14%}E?Ƣ)EI/Vq-2"yqvq);3UKBɅ k8F ,&L^QR^$FSµ=Ǽ8ND"6E qj̙| UC<7P6/mo|8:œC Ztb(-b8; Œ'5zX#EI/fsGjmҊ1Bt# L-ިtK|'.nP@\r1$b"S*/bK19-*F[I+B61y B<0&\pLQs9SsTD-/܋jc&ꠢ}iT<KQ'H^1EwËE$&>IX'oS ({K+s1 *h㉉V yq(ҋ5C j.^%!pj83oU -˵XXE\+\[r^ iE˹dԢN81K h,NT_iq'A &qO Dlb\")~)sCuJ0CrBwx3@3[yO܋VEK \8šDR萼8r%dIsW!J#4 Ԃd^b ly1/)"UD]]]]뺺 2)[5 6 nP^̝n>AoL@ ,✧(uҊ&HVQ4,x9⍋7.`#7.7ڸxcohb,΋w?[{@4HBHj "0b'(?|_rHy=lV%"!"yb$ŜdN6ܼq5/eիo.x1A i "L4bzCC@l"\TҊT43я =̻ʭގG9 7=pB_8~bbRDRq(r;w֯ݫX+e%.=z,tw"rPy;/t2d6ɦLؖɋSt`@M >yg-KpK,ϋ^^{B J )r,97mZ;ܴii_qwաG;|W]釧^vn2Gcz$-3qDҋ#y7Ӥ g 5xGPzC/dU ū` !yq܈b(ve8"?_^阺k/4cHŽUUVUU6h}n { BaɔU8vޔW笗<\uްgaZŔ\t5CGSbR,hyqxCQY~sA48s4>DTC2fe\}E-Ux`OKc;_sj.>Wn\d)Սefѳf⢺GmNRo\5`oǾy"m:dLmk•9Ѩ[jmsҭGSK2HWDtGZ,bs%5 f>L)@/Ty6AD؉.Lhk7 C \&\jw^/5+.;06thTl/vc ,+igʿ ﶊ7GZΨw#k(ޱLѻ:_UhX|\ XA0#GUօWPٌn= n-m^r/1-D͜Q`'s!R=;IsfN SCc셼8<1Ll/\WW⬲ eW򢮢u_~P1^zgvW~ٕfq/-+x$Gaq7uV=lf _\0g~9ޱ+;:[grê3q;A0_[1f*[=5r2-NdgwŢ.7Z; l  !R4o_EQXy͜F(s3<9"^49Kpm;n/k2%ڊ-Ϭ|N__<*]{vسʚ k g|oʞ򶢽޽#zuˌ)6r/ʤd8GIр86ؙ(Kgq 3$m\IĔ)N\[ϗwmO>P"t6EO- )CF-ٞ8s{a2W'5PdSORfOYii֣zR!y1(YE'I')"$I+rRn4Eap˿sf_*W޲tֽ0Uyn+?=L/G>VtS:.Y5qKwlc 5ZRM7fO׬GWey tyLOhZƥo3"f$dg!ܒʄ8M-&>/,{QxƊSLq]k;R\Uv5Ԍ7X=*lonhrI\FYY;yb;~W-/ͽU3vYٴ9"-S /D;tq{nivM̻L8qyqE ﯢo S 8̙L_(UI+JZbf'"7I\"Rs"kiQ4JfqoyC57xn"tkURk5/ڠ|>stKf/sAC GhѸɁ_F\JEmyhrU1GH&2̞-8Jr -~ܝZJhܯs_4y 8jjEy4)j-e&(%MѲb:bo"@B$T0 0|VKq)Er pEZ_\o[~;E|W+]X3ozeQ[si/*γ*W-?KֿZ;xTߔL`.R6O)nں]?2}Tz7ۨnڇ̠lӟjh+&C3Os2'ZZK^iAl3Jj_;q6. {}Ō8b[g1xlQr8)ϖo^д{Ӄ>3tBW#rB- 6Pj;)ƶ;uN!(>Xj]NP]u}![L<-jZyЅC{vڶ%O]1uߒSMwf>ΩޜuS/ΝY'Gm=1΋)DGVQ! BP;W₩b1 G^d0IiA 10d #s6Zo4R[2lʬDWmm]rK??*ik1L St,UJ.uŘ_^~_drde~ZeV}Kvurʲ%;Z:fʋc,?*܂[bZK({ |q]^Q<}Μo5%sci|bִOy)qUՎDsO^4DJfvMCS⼥w,q!/ga]QoJwy˽s$tuo1)ikrLnbހ@b11qfGbKBy1SLF@\d]Ս f vU5BgNJv!W|&~y1 ~FqKgꬑGB8 ek6lРUȑUx1nՠ/w5'!cqd#s - Q-s\bUˋ#(JW ^'^Q^ q^D2lL^QG@dvj[k7QplꌫkK[涶.%|f.l\);`MCtPܷ]O.mmZZ-|ifx%m|~K5  WLG(X*0a"BdBE{) >('6TQ|> !̈́s)REO=1g6-wvu\ooj=|FѱdCi-@^ܧwElۥOcu~YM-CY@Bwl(J^<90E'&8Аyۉ!5K$1idO^qџ<m%[Ʒ-~5:h;߲gWg?D^{ǔ-|`IE׮?mׁ1[_;}>/4Cb1s?ZgDz p5SzFZ?3񕰢8(7qHo8"6YEt,E͋E5'^|&!3> {!@]xh |/ _*CҷCMMMMJݼjُU=;h rAsZ*zpZXaҊ-()E*: g 5QSC-H@URcsȊ-cT! /[lٙϕt,Z{\^z= u}_bQgk9ZCzg# bR,hyqb= 49g/y@M[Y1E&Hf殮iKԕ3**[pɯ0Pzmj-|ٗ.nmܸqƍ]XzdXq h0ZCz8ZŐVz./XQ ALG<Č#! M?!'gCEM}p瞯T-sa?@F(U0j=8((ahX>H^J Yh|gzAĜ9o10%eBgE Q3#h./%:K-&s}B5 X,5>rr^뼘k1}Ed5^${cA8fBx$b )<+{E 1v\VrUsIsi )ϗ /݋ /ěc^miU_dkV{k^Y(7ї1āONQA5A 86J !9PgxD"##,m_ל-4Ug_o;Dq8?q){Zwڂڊڳ;sf1u4O[ck=qD"c)I+U h !8̱C%84 9v!TFZI+2!Dg/=t+?PZ=jn싃nzNuK|L Uo<g-M5>qnUOG+v-/]P*}9s^*Qc\']^?hf+8`p~!05 B$ŁF@_JGk@'O8'Yʳ>ӈmbxxՈQKի|x`rˋc+8 qL &\pLQs9SsސCbɽ6f*ڗ~NɑuҊ1Y؉@3 &Ozy<BR,qjo(/F܋XZaP80EOLԴbȋC^8DhPpwd85eqVsbqOТ\ZŎµ'( ZbD˹dԢN818/;534  ,1Ps$$i!M Kd4/en_Jzp֗#Z[ZǃC8Hh䋑-N 8^/&!3ki1̡ZIlűc|)}y˙5bais$쏒eDj9l+oseFFdx`L%ƫę9SC8`49`J/xq#(,+\+E贲):Q71>B}/:_{r_k]x]|9-s҉^$щ# 1$CG 1D͉xjyqs19Bµ6Lnyn锶3u5U&v)PfTwXtpgW3'PkHj-6ָUt#6Zxc1K#8Ң P@sJT ! `JgQO@ $!/-e4E"iEf5OW.ytyڲv(;65?A5{mj6ku`:[]U價-q9]k}8NjHj8ҢT?4h2$ح ɜbgjī sETɋ9RFQ+\kDM)Ç]Q+Jiyu_yۑ9)mgO{*wWQ%SI9C/5*~ԗ#M ,-v=N$Qs/NV&*(3 %RBCǙ'!Đs)bMڸgXχk}.=sP9^掎/}"W})PF Řqk&ǥtEZZv/{f5oAhK1LZa$$&QIENDB`gohugoio-hugo-6abdaca/docs/assets/images/logos/000077500000000000000000000000001507671574500217605ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/images/logos/logo-128x128.png000066400000000000000000000112271507671574500243640ustar00rootroot00000000000000PNG  IHDR>agAMA a cHRMz&u0`:pQ<bKGD pHYs  ~tIME 8^IDATxk,gY}egg^I$ D &QI2H D4(J``U,>YJHD@D ABIrI8ge_?<ݻ}v{zfgvnJUj}yܻ[cL&.y: < |/4p V mk׀9E/? \d,Am'5Dv1Ug.i cgƂKۀGW[4P!H/n^ t+_@$OvR" ~Et|0rpoW": Ưx]0t]e;Ja;8~rhDaF- |[5 C#)d :ISHͦbsa}ac˦iɺ#:\姁]ܰkUQMC]"ڬ,,;2g")=*$jrˁ dxe Ϛsm*XtX*[]gCI/77xO3&Ʉ{{;[QTj6K&-ǕP p)` CGW ;{5\FGFajsjh "܏ 4CC߮? Ob)촱;mrrƎ*_w1di S|x%SihN,LIw(چR{-p8o 0Pב6h?J)4M#?s|6A!}\X]XXlDv 6M,B߮_ވ'x;-Y(6I1mO; skV'MxM69\姐 mUh O( gLuV|5nlIX(m\F\=8rkpd?_PFKxft;ir٢m F .M/t. /+ϘGu h)V+ic6#s$(]HH>p@C.AtN|/r@[ے-me5oN?vEMI`rl4RKMj| )1-T>gYDi7O W55rGi| >l@o3rg 6C^NˈaN8|ڸ|!¿VHphivw}20c2W`N?"m\AT?*Y*sKezi_GJ}`ib[iL r`gfM. E`t1|P2'D Ip+SQut@=S\ੋɽ,#^rg" Ɋy)$V -J;L|Rx͔IZL23V y/B(X,:f:'{ʏw}~r^,n(!CZB+u㳉=+h94[Ӵ  D |2oaJg&jbA&.Ѣ =D2Syၟy @;\\tRf7,r'_#)Fs1TR '׎Oa7mQG:a,`ߔhuC "Iq Mcc8& toũX^}Ta*0cXiw/t]Ƭ:^ȥmVkJ .]E !_1x68 #nv`&DPmTaKc;<l ַ08Bllٮ.Z+ lm;&SۍFR[Lo߃yꇆl,6ہqࡰGcQk^,+FS\p8אM@LW&֎rŒ/׸uR)7 'CB#cJբ\]URV$pcE0i&U<@Qhɕ&h׀ 5PD- !k4viPd?Pv8O4  8I$OW@0 LYY,y ;{l6ٟS p,i_ohѮ3@RXYi4/^-BF" ]( K&L)qպrb}ٕi>6%|ٺ$Hoޅ|05MϘk0APJ\nN$Ń{nARʇ. Xf@&3?c2[0 q8[X]hZo_~6% t%~p=nd nq~buMWU.ޏdg\pˀw 5y |Ee]|};8 %pS(á%!x!'٤qh2_4INH|(R "{M:=D>kP^q 0P*xlm;,WkDU7; CE#E7C3})>nGrUmvrGx) w)+wF)oPJ0G+k˾BhQTO>a|]" մy5n|Й+MR e1na_!gnY! | KVn/wqB Q<ݺ XJ07>>PJQrXXT;* E;V#|1fFz vʚF!+Da|sBtZw G.LyHIz`*lG(LfL2|i)uWyҺ]UG⃫1R id¾BNu]| 9K(-ax-ͺ4lYl;wCrs=*CL}e[_Bo;OgݶT⃽BEfuRȱ} aH<2akT}sUi!!$XQ"r"<6Ii;|c\ivZy3O0 <98d37RqX.7uVY`= -<⃧#E_fKvDpƶJŢy!~ 9;îxCOqCƗ"m@ N!k$MmO#|}ۡVr: 0Ba12B%fD@Q i$G)l 9()~^}G o"-B叨s'g(Ixp?XW}:&h=4<^XZG,DfsXX++ғR9xcC>"^L#] Mր gˌ)s~)._Gڱ??_ov~?*w%tEXtdate:create2023-10-11T20:53:29+00:00;d%tEXtdate:modify2023-10-11T20:52:53+00:00ԾtEXtSoftwareAdobe Fireworks CS5q6IENDB`gohugoio-hugo-6abdaca/docs/assets/images/logos/logo-256x256.png000066400000000000000000000211661507671574500243730ustar00rootroot00000000000000PNG  IHDR\rfgAMA a cHRMz&u0`:pQ<bKGD pHYs  ~tIME 8<!=IDATxy,gy^ٷ{ϕ eb,b,1ALR$$$%DPD0Ɓނ H{92_x{tՙަ{}(]4}|ﯿ]-wx𿋀0LV#@ X yd+~3+oC0؇v-a{oFDb0X-` x6"?AMR>xWyS1(?*%"0T%v_> 9_ qX|l_x=+-=@[<A77"=;wcFJ @l% @uD|BP\T Bd&ב}x/𗨣G~ p}_) >~BP,TH,+~W l @_~Ic@}ee$/"EÆ}E 'ߌeq-cN7x˲m'1c7"C=z, *9KY*R~Q, ׁffnٸ\^< m==wf ~XD WT2$0|x.K45|׵k:L،;k}t5:asg}Ocw!ǂ;ѴPȀv<$i_'4ʡԘ̸pƶT~1 .;{ iB# f @~y?vB#t1S~Fv;>Kk]V=v~o2< ?Y3&2wisތĈmk4v|[VֻxLw>ҌfdW6LDbSkz ^96rlҥ榳? Z|߰sjƶ,H_TC D4c[L:qiykXYoX@"|v)ooDnAHtq'+o{mU5v'S0 |%cA E`HWw!:MZs-f'\OԇB|c_XXA7!Y[*(*UH ˑ  ߶,GlNLλލau掟`ShҞ)?'HSҾNh(!) qɿT)t:5|†A†a#Se?7Ab!Nw9c'k4gvv}Z^aÿG†BzIu:'ӐR!a|aLĴh|acK†ه w/#vUNXDH3η#S dIZ/ vYhu>l܁D GÆgd@ZDb"1#w1if1bya~ذ^G>NӨ; HΛ"Ԉ6nM՘wpz&] 6txȱPew:f/EZp_C8;.sŏgΡfvaM!vZu{r)7.a35 l}FBCHGT|IVcw iѕ*ј){aÎy~$lI`6R_d w%?< 196V72 <Ԍ-ț6kD# O PL?O"J7n 1e82pȀLqRS~^w#Z 3L+~ ގ ?032`ĻY3N۶q8oeNÆ -F݈<$Jp5T~ j3hLYvw+ϜCa-Qǂ-$o&$`†T#8_\K1q7ˍ@ 2`ycK6 6Ĥk7ֿ@8džNbέrfÆk mIx2ĤaҮHLKh3fJqasg屖}7=&p"PʕH΋Ȳ!†[w#ZEBj5jfC4f354_CLW=b!63QYʑ#|W8` l,tX>lEzQ~mGq>1_$~،sذKˡ!&k[2(!&_D_CL #NH$fA{65UbR,从l:̸tpªG;wbRq=?_jyber42`SOCL"3 5ĤKP3W#sڀ _pJb!݈rbL9; 2ĤK>R|]ȀMmƩB8dic1!&!Çsذ$R'5$/? ؜spɧٓl•|܋ ?EÆ}Y-@eWs-f&\4C݈jl_~)?=Z=Dr4{5 lj3NW!&;1?ن*"\k3N%M° 1hw2A>GL"R:,L1}mƩ †ZA0;A* ߅ :ADG71# 3%50Ja{ dn=H#ot cY74&T|,Ge1a(&k<32yna70lxЍ(HLE ӕ{%H\{f\0Nã-iOۆ'axZ`~]s aÌ} TDB}/@8k5`1w_|eS!p\{)~; WJns\QG?G4} %3x*$ɗ֌3?g0ހf:wǑ6#uIs(e110ҴQna {RڻLVWm.=Y9+}ב0_P1& +7N r +qGZ?[ғu+VXRhvr {Kb"ӎ׉l7=n\plQ-QJ Ku1Ǘ;a;}HAQ*i)< w&F.=#;ID;(}:n ǑXNZ rCz&417tz6nb!*'ո!Gguifl^?>1jRH`f•[A aZT,r#/Gu|1>p2h qdkȨĤii3Ho lns\-Qb9Ž8\xF͵.^Iw-r/1T*JvSc԰"2ࢤvezg\Iq5~ؤ䈬"p9S,/ -gܔ+ >S@pp3R!$1(Qu"8lbn:rPR1F63wGIc0L陱Ԙnf&ځ9<7-!W"}so\iE KE! hV\?@l\:biL_Q,b*ʮ7~{;z@X19tU3Ҵi ŲKyT1ïlyE$  eh5҈v2X%n$TG6EXC6v AXq^w8pC0CEE98QXbI5ǢEyR@ID艡u0[Q},ˊzyIN)?C5+9GQ*ALX`+IL%FBͱG#NP¬$0IO$E) I ֫\+JqPwTE0*RaT¨(JQP (F@Q* TE0*RaT¨(JQP (F@Q* TE0*RaT¸I`41~߈r.TL_ ?~ F ^~߅2@Q* TE0*RaT¨(JQP (F@Q* TE0*RaT¨(JQP (F@Q* TE0*RaT¨(JQP (F@Q*N*2@ds {6|.xd4@݅+(gAx]aP >wc[X`lmstjlU)&*RaT¨(JQP (F@Q* TE0*RaT¨(JQP (F@Q* TE0*RaT¨(JQP (F@Q* TE0*RaT¨(JQP (F@Q* TE0*RaWA|$ t{ጡ#*J90n,X8L"-sز, (Y0L<x{z`A@ ^WvN$=`;(xlK ; I* = (n;mIJÐNzP3;P(v ,.x&^?n%ׅXv < m.@Gòac@Ec O x?z8lt(`u7~`= zPccڦx r _efWXӎe 7\;_vzV(%Z7MriT&ai]RE,_^El%4Qz[첮lvYX!NJdu V:t`e x3< I ajUz@(x[> je1o_R{N` =ĠS+ֶ( 0cXZr{ҸQ ,gxtvTHE)66nlQ  $4xdGB2`.,x !/$| Vg?*ЩNLjC[~Nn?60~H+[vbhmtyhnT4: KNoزd0)CR"݁$(́x|6]}kT/cǗ:|mZ~!w^Zo7U~ز,LP2 ֘wp|XބN71nY1ֶi[q Rٷ{%4SlnJwϽ9É͆ݟ1Ps` Mn `|XI&]ⶻ˂6lCf?#$}.|W<ַ >HͿ t|CF@fH]4lOLjVB`L!3ӧ q܌1lZ+ნRtE'_ v>,vhmvrX`YU<|nhoqޔO&}'>˲N &-;~){F9MwzCS7xҬGʀ|[;> -}lI9hLZ ML l,y,yyVm#l7~Ir"x={4?lXL:M4mzЕa糲& ;v )>>2t\#rӾF(C5 c.!(G$̧sx$8]"`#Kk-OLn?Θȳⱖn"٘GzoA{d\6X 5Gl(#Sy[ o=]| C!FHB!p1S.# ;_Rp`giҚwZiF @УxE!Qsi_G4@^p862u + ۻ&s#R&vLfB0b`$DuS5\0BI3%:llgCHC #qۀ%fE`VaDUՍLyB֐"{z?\cyȑ dj4vi  $,ui$`_E5B/H-37$z(Q@cfveva2"<9K"O{$)wRH* C4lOLL rƿz-9\feG/oA 8i_+qv)屶K""I$}~ŗ[7OZѲq);V@yV=VsMI-ᇔv)G  ^ L}hqcؤlڒ)'uYZ%܍֡sQ5A)x{F׉%GRv<98z,ȅ.-I2P|&$ej?p&,m֮8Z$EzPD z43$z*gkK_v${my7#[j!N#Ն?$PO:'-Y y gKν9Oe(( 7 W@ےơsfy$F yRyאބ'V-YжdgP"41(i"OR*&!!UoG3F mKv6DUy|'$K0Qۀ#REے Ls~AP3ڒ+}_)1$|<C DOCD d9&܌LDP0jK{]M)<*%x "גAqJ? 9DyJ @ N-Y&1y(໨ iKv9xKЯ@wTݙ=QEٙogvvwV? ~VW ~WjwZ^rVj~f+\B]#u^X͕r)|.{sU^CuW_XQSmW =S O,g-OmC9]K•? \@)]tG[ˎk3h}u6>\< H1ڇ'pOYxG2oC6\z\N܅+(:csd料p|Zw4?by<g̷p Lfn~zC[&oNC|?] hk_u[ ҿ۲vhЁ=rq$;͛eM)3S<ZKDeUT.MPyDT+zfմB9t'z#$1 dаph%ڇv7xGD HmϾNFei=DjiQ> 5e+çBe1H-;3N5mij[2Mw SsYȾd'_^>kDGj~ZT7K'BZB{l g&»~k[BEƚs e@n=LA5Ш9j޳=]~ jjYc@=~X#d=D:Z5#Q C&5̼ޘ9\=[& 1mqQOg̜n,%Ǟõ!*Wk39[[J/G%g=5M6@7}3Y BoZZB1lʁǕ/+P;jaXB}0P &>@BDZ'شA_M&?_1!(3^y1sCZҺ{rDl(׫9H읤B~7*PBy?,w1pIa_zdC܊x1&?xv|ۧo#[1@O }B̀Z5c(y"!~ytTX : x7*[#_vN_xǨK.4CG|{e2hGE\'Q?Y_^Ոay:v v??6/O?wi[?s-}{TCM="? R|aA)eIJ/ɘIOR 4R?S“6Lq-ϑ?t&|]Ӌl??mu=?wi '/wy=ٹ./ߌ^d$ezW}so=ۭoS?ֵȟ:~ Y D~ -&-<_?ؾ%!OX=E5~dwΚ̻!Į׋3uW'I2gO$y_;׎V@1@_o6!H[#`{>΁=/2?ɟ? QY_&-_4Nʟ2S?<9Oj''f+4R_u<_Yo|{~y7  .N|fjПlLuo[\} Mײ=yOAk;<[tBl  BJ[̋ti`Xr{A:j܃/l&h 6r`v~%b_]GC> #"!tױڵH2ӡRPCt6|6V="&F Ǿ5DfCUs`۩b/@2s`PzM$(`7M>{P$J?;K<6pAy/㠁~U<}S@a%ĽǞhz3|FUCX">"#~ݑfW^/,Tu֠䄲ȱ'Z>#}dΕ5xt9qG>/@ tCa_b֣W^&ܟ2(>{g+?zHjg20܃tIqɦ( i { cc'c{y{!+m$8?|.LKΊpwpZ:g߸qsc79}_}f顦3ӚONӉ=~ = 7qћ|Y__Z|+CvZx}N +K-/ą2:i'-oɜy93{4V.")Jha- [v˲VB@0 ߽ݥ{׋cb #bϓc:wfQ?XKV8 0à  {v' GGG׋w'ږ6|6;غކ'pyG opBxS yl;aopC(Iz{@Ev~o7 4ѷᘊ],7a'UrNJ]l JŢZT a 2U!h Bil+bff9f%A{Ǯy!66f^SeVFǰ<ct<O'tG@-uy9:vr>\FP-PI0Ƅ@SҴ"4%M; VK;#.+?^h> 0m [`liUbiz^~v#8N)k_::cmtʰZ+Yfyf޵f?bs JBoF[ spcS]c A3htΠKB4&:G.bgs*i]/'k8=Vɩ:FNFBCa9%zD(/QPGjk4pa09 &16i,|~BX8X9Xe3R:v}.lEo2LB6 PQC7O@ Tb .Ҝ2`r`>`AR un`J؞1"5Ea ^rvcv!^-;3kz4om% k3~\ t|cvu?Lda(SO~A˘V]Y)lAgL%DTgEĆO:2 Z<"nWEVWptJ $F#ސ;^6>*392VK]49&!%C`P@oH֏#  rbcWh$f߬{ gmKwf dd5>mH$MahuZd*JwV |7 X8hh9<捅]W∵n@QBoy|@ƿtKVwEYJZIdQ8VQ_a_J/.d9oP$uf4:ӵk"Kq5#*rHpn_3T߭wd@_τ5̐{C`Dolr 飞IfN29 μLtpD4cwIS q٥q/)d1L͸%6ؒu|>jslqc,6fцp!GcnucᐻQ%n8h_Pl8]sܿ^fIY14b*-njA8|P̐nq0`):_V&,Ւw$8=%;hڤ̄.It}!v2.>(NJXaEV N|)#ᘦXt\OB;ib%h G*-* Gmu뢛-U=ZR\+EfsBȒ2T*Y1eV> ~9 Xl,v(2δ}O幸I8sBmXlJ*1_ 7mY" Ueb Q|qY:5 U9NyZ*L(rsM)^r^-W̗۟t.5|Q ǴfNT%^i|$qz Fv4|Wug"!ձVGo)QWq#Kי%1HE%-nRdZ Gd1%:u+3& JJCGݗ u6cEэXhOv#[BZڠY\29+mϪfG50ϧ N8= ۧifqzYT'#/I?mɆߕ_n9P)a 3{ Mʣ$N$=:GD<\_z\:\8'23X}RՉiWKBeeqD2DBB3_w_!3&Zk/CNa)Sc^>{"WJ>j?ҥYtb"0)nPL{W]Tc, ;Wڭ2|RY!'&G!{ w(t鵑NԢ #nhgXMy@MCl4>>"Ir o% 2Xz?9tө1?P^J9O}YfenG1DWVqhZgو ޲z1L @rrwB/ ==2m2L {NٱVck_!Ԥ䑳#d&AǏ^@1NU} 6to|WLsn~#|ːbEa!౗xL_>F[C S{EקI>tŷ 9YJ'>jWC|גGRsVz`F5 ꗘHDg.$8vVpm&@ = RJ6g9+qJkdkH6v߈{{1Gx>>ROt3&Y#, 8XxYzB3((xcg 0` R ێiMI ߊLْi1#p`Yovۄ `uiB[?YcZظlRQ>5V>עBT%Z8?pN ,!Sܖnz^ v+ ^sE=515OS-UMM2;1iad7u#}ؐ[$Kk- ^tM,DVX(NOSgjM<8_9~XttԆ;[ֆ\cK=yhfm/lys]+wwD/fx!{} i+ m ɥ:do:іo ̃ԟe&ܲTFV$f n^'߶&x g(Ccw _aNL6^ sRt:Qа3@^.Ԑ[T߲^kU>r VWu矰wǯ|)3k/?G:ݮۤi MG[]3{p ; Gt8tfpR=ZrE3\ey\[bH `]ior|Hxw%zQk\:;~.ٖۨHORK3/Y*ww+%ڤ[`mzGP?ղؼxÖ'νf9W<˖RU)ԯͣVZR{pv4Vs+z}ߚ1U߀;RͱiE E{ b=#. W5aA~|md x/FGixL7'k&nعa;N ;ggd#kiLc?pvw͆*8{+?Q[] C7 }0t_C'ꆡ m4 0W8CBz "Ȇm7pW‹Npt Cyn߈Ҿwq6F_<;73vy3vnعyװsE|f5pv3솳86g5 0t3a膡0m̼kaf] C1μk8f] Goc] C73n뒞?\cgѢTj6|fΚXd[RFt?H\<,,YtNٛHcHO1RϮ}ڒ=溗17z_nuScn5D7 I4,_LcSFoTVh|)t;q m5 0tkahC CWa'C~m*st,yO0=͓751\Q7c=[5֝B.Xצ>"XF>0|@3gp~ujܬO'$=G _Eo|}mV:/%RkűXsudgot@LPJBvoJқE}C66 )#mF[&2[jhvJ 6gʯ&:# C ίU3M+J(Ӵ 혁_I`Ǵڛ iZj5r@K@{Ƞij! G?{s6Z/#wrM6UR@tA6F s9&gІ,  wTUte b-a>nT#T5W:H~ԙE0Ϛ)>~M}ES\ԹX,̇3_kW69)<%Ś7\cK)1λVnjfMdemF=WTAEn_|mR+)k\v~us;A߷v?(o66A]*> v4>H4><6]sid+ƣIʴde(Q0ey/O+ҘO6\΍ƯJWҾ8mF߾@cc>%;_Aӿq3U;fg&LgQLq̸ٚL66'}sƈ)9a2oo<;DO!ƏiF2mG7M@YX4htowC8J́c]P:I߈7##ZD/xAioSvԜ?^U'}^Y"wˍ͊WռJ4O$;_1ob7_pq!7׼%y֒6j-YgX;qy}VVo!N8aA&+v{5dmbcMF5;`9w`x/'/p?Ѓ!sϏ1|@*7<hɱ}?VHE T@9A} Wgr ^;y]q ,A;s=Һ~ovzq4 ''N'м3P;<2;`I`#VM{UOåI]@l͗fpH ?BJ[{GXW>?g~N L}:mR5j<<ޏvi3+؊.[lԛ ͺs'ݝ[Scmbk-= Vg*u&[ZSGl;\lwfzt\v;-ĶE Lv >4{zz…oV ʗdXTġ29Vt꒥8u'A=}>>f(vuLǞ,L/q8asqc6puK T>&=}E@4 ac|DZ6lt%6F/0l,2:<0x:;V=|o2HnLhN^ 4%M+BS4o l;2 }i#DQƈ*FvK{K#o-f<3Q^F)k_:NV`%+` 6O2جػGl!AB =10Ѻ roX:Fg A3h

    YPgs*iB_,NqzĉSunrJ"DPL_TO(/i4`rLc0m.(KZU&c`S"lxKbDm2B6Cf,C">| W`G E܌#ehJK4JsZ _jn:ΥxfLϢYB,Sz-$2Ǩ K+/饿Vť, ΌFgvcMdI}X9N&|DCi"M<>H]nC/%z&$le{Eb/K$ 8L5NQO$3'TduލW* %Dfs+2Ce!]_1EKYgt5To1G3@W!BÙInΞȜfsUqNsbz4f'.+)d1L͸%6ؒu|>jslqc,6fцp!Gcnup:slŏj7geÑL2Oʊq%)ViqV c2f|Lvu܎hύ!mK~rz5a%?g 'I(!G{&e&vI8 1[1t+ т +rbpNq 4ŢҴ|Ix+Gg8RiQI8nc{\݌oa֚Z)⎨0BDQVɊa({ Oo$p5 jxkn!D%W# 1yeȑ/7VqP+ӏ<\%6Ƨ :Hhc\.x7;kDXȿ9V;JYiqdUc̭{7ɀRa')LK/)g{^LC='؆6pЖΜ%αPUfa*o0 $xu*\k@rj1TQT-$RF)$)Z/)-?N]ji͜*'JHyI@xi^K[Ph8\[iu*Xu7pyP+_LNTZT~&E:{?;P󜺃 ANQ[N%%!?dKtD,T'wj= j +9XnvQ|{_O?_o9Kf(Sl,r$&'~W~BIȇ)x8574)T8s9!"r}s}s`RVJV'Ba7_- y>< Ao;|I}Y[U5Z|Jgv {OٽRPq.z }1)^[HJ (+_ .QNw-n9dh<58 kPPCǥKt UDg/wCkG?k{mnbCا0HSxˤ(!ЏWqϡNU2y˂(7,Cp;ްׁ+䉮2~F(gϲe/8 %ãνj Xh &%$5 EϠ=~wSWyb7.a{_}zC[!౗xL_>F[C S{EקI>;+JK'>jWC|0B|JuYs c샨_b"g$YzF+LI=S}YsV\h$[C Ocg9IaRs ~bzbYzBk3 !!xYzB0u#.=^yŤ:lDe"6"!H{481*D.>('.oUC\[QP=J#r<'ݬ ?.[xYzB3((xcg 0` R ێ _> [i#?[r^# =r`$7+N}0SR>Mh'8kLKW^8uR*JWקfRQ)ϵ(7U$}yHe,]B\-#.4{FhL&oӔ:*wKDSt̎8jLmc>jGs;o-q}Hl;76R˺uåW/6Y ] ,m'Ω3F/?J,::~JjÝn-k W%<P|4tԀZ S<@Y9Ʈ ԇ;;Zge ȂY>w?3t$Զ[RXCOg_7h7ZilϲNnY*#\ U[drÀ 3Lro 7zl_PGKYh&K,rkKi+MΙ DY?v1r-~x.U;̋e,zV%y4&G6$j޵z3;y]dҹ,'|R*e?@ͣVZgs{r[i}Pԛn;֤oK~1HtAqh!t@Уg%᪶&%GixL7'k&nعa;N ;ggd#kiLc?pvw͆*8{+?Q[] C7 }0t_C'ꆡ m4 0W8CBz "Ȇm7pW‹Npt Cyn߈Ҿwq6F_<;73vy3vnعyװsE|f5pv3솳86g5 0t3a膡0m̼kaf] C1μk8f] Goc] C73n뒞?\cgѢTj6|fΚXd[RFt?H\<,,YtNٛHcHO1RϮ}ڒ=溗17z_nuScn5D7 I4,_LcSFoTVh|)t;q m5 0tkahC CWa'C~m*st,yO0=͓751\Q7c=[5֝B.Xצ>"XF>0|@3gp~ujܬO'$=G _Eo|}mV:/%RkűXsudgot@LPJBvoJқE}C66 )#mF[&2[jhvJ 6gʯ&:# C ίU3M+J(Ӵ 혁_I`Ǵڛ iZj5r@K@{Ƞij! G?{s6Z/#wrM6UR@tA6F s9&gІ,  wTUte b-a>nT#T5W:H~ԙE0Ϛ)>~M}ES\ԹX,̇3_kW69)<%Ś7\cK)1λVnjfMdemF=WTAEn_|mR+)k\v~us;A߷v?(o66A]*> v4>H4><6]sid+ƣIʴde(Q0ey/O+ҘO6\΍ƯJWҾ8mF߾@cc>%;_Aӿq3U;fg&LgQLq̸ٚL66'}sƈ)9a2oo<;DO!ƏiF2mG7M@YX4htowC8J́c]P:I߈7##ZD/xAioSvԜ?^U'}^Y"wˍ͊WռJ4O$;_1ob7_pq!7׼%y֒6j-YgX;qy}VVo!Nnp6s8sM^,,]#~x?\<ǃr}أ!zwpߑ{ŀG.Ie{}䥋ߎ\v0!:0"N%Mχt12XH%p-<9b XaB (x>RD~^K{'}{gtNGZ.}_/`䄓=S w|2{ nGGft1 ltx 7vG[?o9aiך:bۙb3ӣztN3Fxm'noy'.r` 0̕`=r/I'/um+1ىLgupNd8uO];4mkBSx]N0Æ WM- 2*5X|DZ=fLc(F? hҶ BLrGpodgd/e>f 9]WA\\Lf[xilϣTs1H QlHاEt(SAZ_Y X#mkBTDHxMjQF]BfFA"%ğhfYBϜ AAp BYԅB~}_w>8Äw^uSB96"^ϱ)ǿzH?~TW֟n>?zYǿ |w׎^.o|~TzșE u?9̿ "} b2Ŀ1 7>ߢuMn>`ll?`lڿgtIAޤoY2 OгdA^lp&䁇n7 A+0VnP{̠`l3hett̠=s3h{;K3hiY KfY޾R Z/f{;K3h[g3h+ ܝS]/_L7mt=R}wY JAN_o9w3hѻ *u3o_4M܂ﺪW @:ז|u[v];pو7Y{:άKL]D r>-*h7/ )thi߭|[-*h7XtΠ=g-C6kߢyNR{"=/k 2i ;x_;.茘evҵ}caZ̩q߸'&Z1Vc=Ou]Cs$ө#mkBTDxOjQ " "rLbs#: Dp! .q~i2dW|@{]ߛ*V<_02qg>7 Gb0X,OG vE6uan}]/&$zl 5˞w#yɂ:T k wGrKX}{gE_Sռ9xsk{;_^Uyz<^}s.ݏ/~]}OuV׮ۢN& vwu|_jjˇCCnmU-|7Y -BzU/ڻ=HgBzLY.jTg9`]~i/+nW^4_Y;͐q-wHgtof,g5?Aή kM=j}>9wskקa_e,sӤe\ss,Oӵ\wenzdm4"րu>K#R,H[4"o҈ǿu>K#R,H[, YO mkBTWx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 %mkBT^nx;JA@Yـ 0"Kp)m_K03u Ƃ``$ 3 Ixl^.n[zYl4?Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;ϮAx?JZ||Os+~?&E_"ie?LH\?&O"*?R[qzz?.DždH9LiZ5k6=ps@){.㟲_.=@}`~s@S΁S23Y +vh6]P tHo07o\J;qׁTf<ۗvD~7[ kmkBTkxMjQF " D Kz&e =s2 8PTUկy7oWw;[[WIHϕ2cV:=aZ~S<?y滓50-zǿ}&.?$ҟSσ.߬N񯛡] ]~=Rݻg )<Ѷw%+]:w%c_'Z<ӓzsRE>|"L-0ޥh_=(~;*sg.E^aՊ.n>^\~Xy{iqXgrkS6 xowvtqYuw]~H}D ݗ[C]p`Y{{ӡew6asOӿƄ.y]M./{'jV;T.DqޥH{nUkٻiUl=/-wgqRKܜ#xfvޥHwOxW3W-7^ƺwyM(*o= vymMOw%xw;RwE[oƽ.ߜ๝NFxң]i]Kߖ%.=ByɤKW{xҋ#v5}ǓwO]=Lu=n^YkL|m~3^ZsiO_.Gp&?}$ՌhmkBTnxKPEAkHB2BIh@ɋ ӷ1uiy~vlǿ=o{ǿWoo?*{-ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;?:RmkBTuxAjA "" 9GrMQw!;aA .Ap!8t믪ﮯ~]~^8ͯͅ{Ϛf5v_5zƿuٝ?π59r3`p3`_/>? /ַOks۝r}~_\+}ҝrܿ޹ULz|s_*&=ǫ͟M=֝uW}^A\r8}twBLη;ˍ'5ϩR/" ̝Ro0=g*N7HhV ~p|9ňoU`BQ &D/9nZK{]U^Ί}3zb%W \xo0vN{G}™;{WbΌΙ  T9s;jzyo}YuU3hW^ܝYDe84> 4wgoAu}*4w}WЖ7p:Dٝ:8sQ4wоܝYD80'IA^;T[jU{hp,ϠswBA4wFcмё;ٝ͘zΠ?U3wuzzs4ZL̝WD-̠׸Σ-I3h5-Mm{=KUKo^ҕ>^Zz^8^4^רvϠg*rAs6^e>ݽS { As;q̠s}Xm}}?5/ z}?. ^MΙ׎t9gv_3:^;N:7p_u͠ Y5&oq}-!4 5 c "wmkBTxABAPkHB28a(ТJ;/31K__]5^bmkBTx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$jwsmkBTx휽ATAQD004 t] GĤ@P0@P[lϭ:U_^]_Afkaaa/9E{peƻu/]\ʿoiwfj:0y6eO0)e-3l=h_xKH,K Nl'<¿ 싹%juEE|l5 ڿ / :eoɱv<*/ {vN¾ϩ,FR9Aӂ}qZ4ݣߟMx6~Z~{ڛ6=aS>_xX>ajJrpcxڛ6=aU~\}blxYZxo6==dMŁ_, =/,* ?틖Eg}QݿhQݾᬹ=R__0-UI_roɥARr6td_,,/4p'-9wh_\|"*ھ.ڛ69E>=ʩ/o}ѷݣ*`pca__0S={C'{jO;h_Bw o-p_0=ݣE9}ѷU_/o-"|sݣM}>a/{\qV>9/ UmIX9- koUY*V"zKGB}=o( z,RR_DϕeJx#s\ߪE|x%*yL}=VD_D39JʾVTwIV}d"pbUAf_D [7̹{;aj_D2z$CߪI1/HV=6Uwc"EX{! wn<UI }Cпo7 K7W2_mkBTxOJA9@$ b Bx3?#:BD! AA\:=_U]zmtan;_m^uSϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?]ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?]ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?wQ+d_'OwS?_Fj )W?W{QMv+5su> |7_s<;⟫нgR?O7Eڷw66+ )xSS𹯴?G6"+[C9*_䟣Yؽ|{q\ÿ~|q 7ڣ]Ҿ__׿ys_t<գy/*|m=׫*F{y>NOw~?%dy}ymkBT6x횉m0]HI!)$FR?6c>>~sm+vuՑνYu8uN?WP>1JsWiV_uKEϸ/rˆ_gKW]ױEYcl,[TYHT}xL#}A GV7^}>iҞ-i;}LJX&TP3T#ߨgJl e'=?͘ona|7>?ǐU%;/mN/IfQփz{G}?v✽3X~j{zTAO^ʰ>?sy|G)Pׇ/#}xɿ^wF+]ɟ;BS <+ z XW z_o Ɵ?'L׋?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?|Wϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ?ϟ+ϟ?~gBUJ*mkBTx}+(H,"H$"#X$,QԈZs>U{ ..T}6ڳ-F`p]k߅~b  О$wݓٱ|sCoA+q3lOx@(0a+? T,_7s\Ϙ^Bl1)C+k(FyN"8dPC_9>O0&l4Im+nwGrŰ)/tihf ѸX>E)<,6s45zb?J\<OM%O#(76:= ӋYAƒH Ls6MXBcX&ǘJte. 3.je(??Lj=%wZizFTx$kP8Em jAOހ>~؆B9 ֤8UKCvjbL Cy ;mj P. DkwUE€3ܨ8xUJs\ɟ+;}sFQ(KIXݛƨ 1 +KdX];Jģcx$D׷X`i @l̏rnm$^9΄zBGϞQ=nfkDe; <a>,⢞jk0B[p($Ǡp4 nq`XƓ vϵ.xHnorJ5Hu뇗 f a[Z:>36[g RL؍?( &w.7C#~B{] UW 71jk~ecGrD.=K@WDZM0倐0\xvqNZ ># BE )&yA}t?B Ym(WIpɱ |2+\2 )l8tl@Z.Be񅋍RSƃm>dIl'N adĢG3%#)?$s _5=YBR#-k"qGP-e"f%֩-ϓ378M9ϊ,_*n;HEBƱcl~ ˝[/sagIE2,z1t:kLș壋G){7ond{@rP>kwk׽ #kXfyEAB9uM4P=_lgW؇N#_nGpp ,ZUu6ȓVӰ0EK7*|]{75F\ԶzQz! uH>upT٣o3P)[^6` -d&*=%fY<^ط`_6|h3ء>2 Pq7ώ ,NsjF=B` 큳CiU)R鐏@LҮǧmb<2FHRqùFXi䎲OmGA}:*u f:@ʫRH.66jcGOpO- 6HKJU:Jǃv,3DZEƮqq7p?ȌK%ȧ$;?Qr6pP7`a^=R_)m>D3#£ _' Iɭu͋C-Rne㯄ssL<ȭ/R)|Lt_1Lk=rr 4/gEr~PnB[\g[{gYvRW' {Fem1{ wL;7&$xc0 n&u@5sCCձm8Heft x{q(aтa?Q%l4ςxmWI׆GC1kQ3iJh,KRO`ʲ4)%b6B8\pe;u)ko)#WSncRx{[sXv195_0Kՙ7>Tp5ٴl3S"؝LX睫[5m Q="u}pϘ*xbՉ#iM+@Z! Ϯ~jYݬ$?5mtu] %@݅:4h8ۃtu3; ΑO1A/r R*5i&j#Y2:$Z(ad@>'z L뇶6Z8|`6"X1_z' F-я?X^ A:?1;h/KVB' vOnFS ƤQ{=kh7MwXQp\v͓O/. N3HKRlK"q^Wh1wt h@3e6N|I;y?8t[[! $,ήLe"z%IކAkRl!3u8ځy?_W)AbCO!rza5Sn֗#<43y6"R߃CQ&>[# BHǽ{vekOTlq(UH͵h ݔ8,@tՂL{p/*L"d_y k,4 G̖bD>,.ok"D;|7[.DCA#ilϟI֬Dq]+eE _-- ڰc^Lq1~CCC9gNH8BkhJ#Z-`VoMa 9r$պZ-hkh ?C$ ^tď9d(8P݅]ڶw[wl;dn׆oKd Hބ(DInI M_(5)6H/Y1 QRk,nXHʉ?>df&6^EJmt{CCc`0ʅv5x<\9Yc}106"״!֏9dl:' 1H"z'7QqɌ#KR./CVgQȬ\ `?d1yuM6Ƶ8ZX]8^pwQE &1frRKi$GݜЕh3'{;;~FK37ku<pdʎ+C RMzƏ7)nҀ lEGyl:̑IoBS%|ЕsTulebA}Aʹ10A{KʘӺtjdLI=r PRg_LbR Şl?␔)![Fo wi&k^CV(t@pW2{hxHGRn͉eCbxԉ6GQd27\ثdS=\Ff*0ۣOP5(rZߙxQZ>~GAeN-jY7Ҿn;n?ӹ"Px}/NW:݊&׾:x" ꭥу;R펔 c䛅љElmG§a= h¨BG_uYnZ쫭FYs U"zM&:Gnu.DX5Xn;}ԫ%XO?~2&Frjj8 yA*W I9/ub)Zl: s 85J>~iI3Yԕ;:#hELם[ROd^GA˩f~Y!En0~/A Km>^WYq"<цF*c:xw|͞w%ehRgd9̕v3v Dgh>>?3hYDkgC(ʹƒԕSԜ| 2Q94(?OGQ34 fccPopTYaW(>@tX4`LGٞpɄaŰl\[9c26U M6f,'C4i?W~psϠ?kAKrŵk@I|>^xs?\`,D̒5W^w DMXf_8<%|8_왉pP1Wlm߃f?4:́_Ԕv M;k:p_sj؎qw]$F}y ,b'N=o0, ~M YR46+!}@~ujctCP.Y(x׎z?70WXFܣo3z0c8RGg0 TU򄽻w"/4֏CQ`[{Ocn]+{{ N!33+5]qpj' r9FDȬ)~: 9Gmx2-?sraG"yvUpa;Ră A\& ?#n 0eed~oq嶭!!DzP^H)>oȑ.ļԶ=Hy7S-M ?8ycߧq|#5"2Б lm#UeΤVbM͘jAc7Z ]> 4gb s 2WRsKg6 's8qzTT[R[w)I95xWj #!nN+zPڔ KgTE,?{^RDݥ=Ru^zîc&D'i74SJߔ&HUG[crͦ<׿~4}څh;lpAZ%XZ;tQ?yk1+Ƴu6[ Dc4Ɯ*dB#!}e>samhG3c^8u9󼵕⸈߂UyB;f "Yi=D =4&|C3g]~WgjhSIXU"1A5Fr4{AljwTt6</N \Rta| i>T.Wo>>xϯY{緷m,J{gg}v~)]s!?wXGFl!7U|Cnfﳅ:.@mq%臔Ru?.:aBֺE#Gg'yXDuSWNJD)21ѵVagWPqȒ s?¶@g")s\T{f3go^w:^"{d#!φt},nyWFKv„X4|VB~,˘_&fjp/WԍwaO H 3I`u1ͤ+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_W|+_Wݚw) mkBTxOjAG "" r<w9!GZ\ BPBm(&3[){cÎiяm?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m?m3xy!3iZvθ37y8\Pel ڿ^;|(2) |h'ܟI/Τ>IeS|}q65?bOl0bO-/_/>_f^3'Tw_ E;jY>c >c/Q 3~1gJeb >SuATˠ$Lݿ[T, G}vYAk Gp n]zL;F7[/[ϛ7іQk g0n~i>]{ڼ:W:X{AӼ\垰һa_mzY7>/7մ't WmYO9|/('ƿ68: /.u/{‡+g}߿/ NYOUe>_/jҿ ο_`_D|{,?4#̤|G[mkBTxAPBAkQRz YrιeK?gۖ϶-_m[?۶DmlOٶ%mK?gۖ϶-_m[?۶DmlOٶ%mK?gۖ϶-_m[?۶DmlOٶ%mK?gۖ϶-_m[?۶DmlOٶ%mK?gۖ϶-_m[?۶DmlOٶ%mK?gۖ϶-_m[xџmkBT)xOjAqNAݸQDQ<'Ш1aBd6 bPL3{U}NU$)Mc3znϥ}K)>sDo植7󭗴f|x>^?'m6_ng^{ՙOo҇ka7}ǃ v9k(ߞ^;_vf1|hNWlwѬ'm?7\ ?cH{$7)5_? [Es _z?~>s|>gfLQ {~W|jI&*7]\o|J? S߫psm STR.w|D?+}7'VM|"_MD_tۧ>[Tʿtn;>SWyӷ>cO7} 3~7g66666666666666666666666666666666666666666666666666666666666666666666666666666663IxƇgmkBT5xA @AkHB2x_r蚤 Ll,'Z_ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ߎ;ލ{ǿ=o{ǿ=o{ǿ=o{ǿ=o{ǿ=2 Q͇mkBTFxOjQF,!3!* ("d .%d&w9u  AF 6mwn9 gzjgg߻7gs[ao{iw '?Hۏi;ig9ŶW8ն^?]|?zγ vѵ^k uùfߟIǞ\~ٜwߏ_K}ZH؏Yͱ#~~#ZϿ.~wml6q7>B_~<˟o_|οtG+{7Bi]3n齿=Kx=fǕ]uߧ'7?yAkޯ>l~σg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;Nvӟg?;-;jג*mkBTjxKAE]3ADDAz .% \B9rr$@Pp AAifS̊΅33ەu;h<}љxߛomo?@Q|x_3@~>_yн>׹w? ۵G۳wL7y ޤ{c77zǿ._𯟡?\8ÿnΧ/WoB[gj^VMh>|b~lnBKes=|o_.9߿-IΕu?= t)h_%7G S~t԰87[\9G{.=WKƃ=kys|ĽynJoW=;M׸,i{nnJwoֿƧMWxSS<#]~djoLW4.SƦ7&~c?M{^&k}P۔MhĽ߈F}w 8'bk]9OwNj MWz H7I$v|$v|Dv|MhvIp+Wm瓭;^3Zn;x]Mh;wm&4ݳߨΨwM[q:~*7ciS4ǣ{㎌GSlZm7'Ҿb1;2io1>B}mh+.:ؑvMHI#wƱ䈴uZm3ҾWD@HkwHx;2[~SZrxg)7/{ojH/wd<1;p~SoBԟmێFW|o;~Aǫ~Cp !B!B:/so2iTXtXML:com.adobe.xmp Adobe Fireworks CS5 11.0.1.7 Windows 2023-07-04T15:46:32Z 2023-07-04T15:46:54Z image/png tz IDATxR\ٙ'$Ig([>@a##s-{dT ]xt%8Z ;H2 N$ET?kT2l㡥Rc#IKZ__S$!i;[KFK ?K6v){Z|)$m-5W7 >im^ 6%Mpw R(K7/%^Y hX^  /r+$rz1<Kc^JRs.#+Izή>zZ{B=ſ8okC@^==&^7!"G`PwBCY}Sf5eMI_r,3e3)sse {yO76 ""z,l^p|vKeAa{!M"uCI/Xaxo'!L 6O"uMeA`B!DOhL> (%-QcA P.K4ِ>6F%UuU+wzjvuzYZSKwmp(@~qϺ&lHDJIIRSZ]}[°6ӟ$%M(X@^rรsNƟoHCYu B{K451ɱR~oۡ lAFn($)aMM _y~VWo޶upd \S^䷮@*{eMO$V^[G綗RCem/a#אq/+"a/_{i#А%mpzZ[TR qްfA/;nu< `pSYhX^C> :0sm7t+m"=k /IJ*aK1iw7oxJ @rO%Zx0vu{z,I 7-#z(KZxXX5:8hy 6[" j]33]T2?>Pҋ3 _R^&b苇#^ ih zZ{v`Ĺѽ>8nu>A|Ѡpse^ߟ \{mK)m(FO?n"-eA`B){&ͦrק Ptq=v6{Cg >]jABgh6-GqqOZ']4m|\ݲEBK˚eGY@ F/vqİRz}xRs`N~q=NL 6+$?/ʂ@BP<~8s7VP Iϩ N 6u:wPVay(N/YW =\:BO?BspN, eAcOu=6Xa=Eu# 6$}I۠_*J|sqvLA`EH=Rvq=sm7k6<ʋ$=BW}~mcBOӏ✶{z,ԶC=k ȏ~ m0ɷ_ޫi=0,X}Kg$_SE~ÖvO{mY@۠e*_S@,<aV6,4,#J~`hDM\33]aXݽPYĂ['-eA`BBGe/ VW߾> mp!FB~AbO\:B mRs텄O $)Bujwb}h, bOlJu X\Y}mw@tqO\l=m~ g]A9mPҋ3 "5IO,/;mX  '^o'II Bpল аrI)#K6Ly~=\:j\KeF;y|OO?We4$`|sq6xl'A@|7vg:8XK3'{;nub:_~1#E}SOkqS^o:23]/e\İnB7 Ac{3^Mp I]yƫ^H/*< o/yۋ,IJZx8ϱwU)/GOci/xclr,OF55Ͷxar,Uv~Wu͗z@uj%I ֟/LTVWr6ϻLEu4Ze/ݖ:_̍Z־O*?G751_~1ùg:U4:6Q7 _#Zx8b{Av>c՗y o>$InC<%ЋX^_V8Gݿ:t$lA@l_ΩTGgwu6??88cLE>Ѭxٚgqoox~k{9fso/mv{"m3e# ?:j\_zX_`Ep֜oxv\I R)?\gj M~f>v@>oƳg˶χLY[ŷǽN8m+@\֎i[ɱ K/ݟVl.ko=IRb"$%[ vȼΥe bSVv8da;R.1`koX8.?~EN|.J(|d9? p%pYXy7<2>>drs^MY?C&ӭZ]6ɱ'ƫF_&v hB@Gƪ?M?P`G|V)L̛|X? g9F4:~0Λ|X`::ĭk1-ɇdJ;,koEm:V1Ylt˃updlhlBKN&L=Y7ROkv@֎͛|d d.b(rE@Xe@{vM=q@|#!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!kkb{p+!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!kߤwW_iq*/vl"^OGD@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@ݞ%<Ӯ|d/4L=ub/ ȥꖱjs@&#(a3+xP `$9@q 7Jth@ (v 782 30>(Nv9;mR;Fchqcqu,5W7M>_P3\7f}g aAd??mSZkaa20vW?:75>`,x‡bG Z']tp1U( bax/r!l|Xm8ml| Z;F힎[ |K{2NO{G-5WJtN1 @td_r'?ݣbw[+¿Ћ\ ƓݽCߗ9 Y.յ5 _r$~g@gm}!. }/%mN7lNș\=mZ@DZ']GN|KNFNosȩWE6L?>IwTYx؛綯aᗹ6l=(BtpюIڴ=2@>`Ƴ;? N%i.s.kYONΩMWZ.r2&%9pN#G^_ gXg6+EwɯK)!#oޞәHIN}p_ӷ\*>g}NSe?HkycO]!h}zR?ĵͥE|@dᎀ:}ZN}̡.ȋs9DWߊ˅y@gQ|\~uӶ]ؗKUgSMȭȁOo]ioJfTICa)X#JwjwZ^|dN3>.HR=I'IJK˚iݽ[=-b7ՊG-)ͦeUG};a{:X / R}wD߾>s tp*[<.<諧' Htްfʶ9nuS;iܐU%ͦ#Kl/;m/~*+*JzZW}pD2ﲁ%}Oo4|^6 I6/鏒>/> IRTYڌU{x_A=-*MUCِ\ȗ?|  'Kf~ cA>WiH3@A|p ѹN_sS[ʾ #(8yxW\:B}'nuҵ"m(ot,`>\49h6><sB. $ifiw7o(Py$A6`C9ߦ TOk+ ,`D3e qG;3|ȡW%B5512  ٔRsay g+kpW PY߆\F0(/\Wu}rI3 @%K}E #)M˪RsѦӷ,ɇKbMM k.e0 tO_C9u\ K`Yfʶ.݀5T e&K`I|V$=w*v>S|$饲s1 H\; "A>RV9U[$)ifhB:j u|КKZxXa0W!x֞IJ|k1okX^Jtݽv+Bam cDYݕ::t!vg:8A>wE\~,K4R ^A_zZWJ73]a7oϵIDAT=+@`ˢ>->gKًBl#*XS`D3e`O\Pl{-Et  y}ǖR BHLS|@@"tB|@TOM k.e0p|p ry}l/Ĭο׶Av] ]}+\)4hr,8*@=M˪Ri~ )>|p|T3SeݿG dnO-/PrI + [ ]pmL^;<^MC_"9`p#y}v6H}\vjw/s~Bڢ R E}\ Kg$`|0(مkK4R;)K !0y.s0aL pXeX0r0'A>^ _;,+160PmhSÚ.S;o3V`D^&0)6$-Z^J*f1 >`M WL{N=} `M\; A>pօ|p~i\MM8#XW`mrI&K!i({oZ^ZX ٴ(:mY~ N>GV ഐv8 BW%-<6!wx֞)kǫxȵ>` q ;y}v6H}{zZ[TY^JpK|6USG}A>A0V8ɱD)&nuҵAhA>`}tkA> A /+kA>xA˯^V`!ͥ#A>>rpNA>$=B>zdN^&iR U)43M}0GV^ƫf|?gn]XMM kfu}@|.5Wl/~" >`fl{)F14pA^+fM%2P YYj>|@=M˪U Gj2514kR9B y}+^C)$)iz"QzNo}7 Bn֞)R6ZxjbعbIWoޞoP-k a)QɱZht]~߆ ڢ R&IJih:4vO;:nuBK eXYK> :ZHyH)ҵivON=_G!@!DutHC}`bB .+se/ 0 y'1"_;ΖC ppkA>0(k XIZ݆u7B,ı6 xXv>`Zp- e/pcBÞcCUOkcaE,+9 Au1Vxb"APb"D<kokSً:+P"|LC/~= Pؔ~@b'R탇ʪ_P\D ߳\T==j.m^K7Gx=$-濙P_@%]=f 3 _[WcL?(qIENDB`gohugoio-hugo-6abdaca/docs/assets/images/logos/logo-64x64.png000066400000000000000000000047451507671574500242310ustar00rootroot00000000000000PNG  IHDR@@iqgAMA a cHRMz&u0`:pQ<bKGD pHYs  ~tIME 9H\5IDATxk$WV{zzzfgv2ƬD?DD1Wؠb$*Q |E" !1hb4d11yuL-UI y |1L>Ę%mCi<J/@t6Ow%LOģMكMڼT671uý:k U3~ Ʌd|q.UrRXq `HGo訕g VW=Ll[r֠Bҽw|.Ǫ;bak->MEe,d0*`n>fdQKp9(W{G|,&:U1+gL06 \lr_ ܁Qɉ(m5*{GtMY*d_;Szg_5a,iLr~_!b E$fɭZ=` x"2#'13j &mhxk1 ?^a3,4@{Iǁ,\"&E,թ  }T2}p%-W<QRPpRQ{; cl|nZI-sZ|8l[x=&x)Lʴ~}&|Vw6tf/%/kR']E xaaK+ yAT@ V0$ ( PxXv"PȊgspv|cJR/->a]ed-& a561ǀ@(N@4)XLDH&d0?K+kmp <|fW} ,#HF6S9Xd6yKʪist~LĆ0OqtPXwk*}ށ]t|i%> @UXۜoFUQ(Yh+dj}GV{P1FL|x%$ؖQjMQN̓G08_usLCZl'0L /?2bTC0L pp n W]7|Ԙ7O6öxT-jVe9$lxi+'{*ӿ I5i 44ƶj(X-;,X,8A!O/Dr3|8pla3:;&Rs7$W &24<,U;'A)Hp.% 5yVC(JIRӰA f$np{lpҙ73I*) S2+CPZ)Ȧʽg5:\cx F5ԬF u EknYGW&oAib 31 :G';A87z|Δ di$dt fNZ;LKC׎,ћ;0v{3H˷͉|Qiqy|ۈ)Sk&')0 #`A5b$D1"FB@0?EڇBcė gfےpoKp>@kW%@bm^!q#! b$D1"FB@Ĉo((U tMnŗbn,~g3 J \wv>#X<tvƳPM(K@f}(ӳM"BB@H #! b$D1"FB@# Q0yméW7OjбaҲ*!-J*?s #(]8qp؎b\Їa<{?Zu pm^Q5P•#bC Z(mM~оPm2hcnҪJ)y °pxYv|x悾@Ia=e+?\zș=3_f57?`լfMXYyfFp)b5k'W) -{gPI[p;4Mp E QN!<},dTmn;5W+P5Wphf~F6NC>4 G";heҢ79ڎfH3no\)($26濦O渰b3_QZ܏EQM4_&B]5q6o2:BL\3G)nBʟB]Ќ{#*6ɛGr(% +-;4ir/m؊rn p|MLLd1QI*:.?E*4#[`̸Ĩ+Xl+^(Z̷TEro*}. $EISldt#]7" 뼃D9_t:5)=H_= 4d04ObeMRSz!}K"aEz/ȫA69r,Zr/ oCk]7]"LDgZIVlFg&/m?eCeH7}U?( !'254M#ՙHێNJDjqfΓH4fCjc=Gܯ>b ^`O߁L>Ev[?rͥAې%۴LR`>)11fͤn"|?8gמ}_u=Ip>VWu# a/:dqxɒ .Mލe{vTA e 0݂<IcTC1~d>'mXv;H=e8:{i t p v&xc&#[y[H}z!Ҕ%" E^7 H;NtmEX)۔NDP݊D9=;<(] :)oM{x Cıo~r}i'}HEló w-]o (q$!pe:bGlzܗ u*k Pw!lnKlq&R}@<4|8H _,44ԣ%tEXtdate:create2023-10-11T20:53:29+00:00;d%tEXtdate:modify2023-10-11T20:52:53+00:00ԾtEXtSoftwareAdobe Fireworks CS5q6IENDB`gohugoio-hugo-6abdaca/docs/assets/images/sponsors/000077500000000000000000000000001507671574500225235ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/images/sponsors/Route4MeLogoBlueOnWhite.svg000066400000000000000000000225121507671574500276410ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/bep-consulting.svg000066400000000000000000000224601507671574500262010ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/butter-dark.svg000066400000000000000000000075041507671574500254760ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/images/sponsors/butter-light.svg000066400000000000000000000075011507671574500256610ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/images/sponsors/cloudcannon-blue.svg000066400000000000000000000314221507671574500264760ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/cloudcannon-white.svg000066400000000000000000000314141507671574500266700ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/esolia-logo.svg000066400000000000000000000141121507671574500254550ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/goland.svg000066400000000000000000000222311507671574500245100ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/graitykit-dark.svg000066400000000000000000000110551507671574500261740ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/linode-logo.svg000066400000000000000000000053111507671574500254540ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/linode-logo_standard_light_medium.png000066400000000000000000000273041507671574500320560ustar00rootroot00000000000000PNG  IHDR>jvPLTE)";&%! =$!8&?"BB  HZ   Wf/] D<%!!"HcX}cENI>"B RdX'!!7'MZR#.$ CF'""0%  "4&?!=#!A"3& C!:' !+""-#:' sG{AtRNS@ p`0P=X@0 `pPа[q.iγV΀!38r*̀Uj>`MQfcoXOg&区6r4V5 6&FM0vNg{r5۳g~}{5 șP<3ֵr 4E_%,ȇ̀0 4/|?x͟'Af/m< /4 XA}!E_ t/E_pE_pL| 6몺F;S T_g& TY9O3 0+M?W[FpzדUzJZ߾G^4:i#zz%LKSz:O1 IdzmǵHl̘Tn#XV/& *^u/FZ:ª:g ڙ.:,{-Ovjj埛&qF*0_ &UU5<A&@?W* ),F0 1p+O1?DƌC7qܕ?p*FNkN*0~ - F08c#_G+-X p4 .::{O˿AK*mχ&@H˿F/ uzo tϴ8_eGz',%@v%]k{l D,~hOt/ PG&4UÀ #<3 P?"6$rP7 ?;H΄ 80uU3UzRl S/<_ p4@II~@ 0jRp?4^dg]8@)M2U3* q`h3Gt?FL u8À\ Pq` q~6hkOY yuUq `S,~UUD,hDUq`S,~:ȏϛ7~ߒ-޺]MͥekKV~}Ȳ[H'_w nH,XZUuxP&@~nߏ [_8eFW?wOo.Qܱ q= Asj 8lU)o҂?\A=&ɐ$e{ViѤ a- &n[y *4=.H%  lxL|R  V9kY0 pvp.HhJ`S h@(@MI `ƤH8QHI{ Pi/`@$w4v @ܱi@$WHH˂I{% 0k('$ 0oE h@8P"CH]р=\ k]8 ` HNU|@pSǁ}$Ha/|_J&z;=B, r9y8GB4p^d܀8ߔ m}f*g<&Mn6Iӱ_W/ H&޵KL( 2L(7#jz,m WSAټXIk0cX0~_K|ÅHqP`g \dǁ?QD C} $ ~arZ~Mݨ3njv.7 `. X(qФf Jç_@f҂ piK(Mos&-9ib?'<`Yx0 m,'o'Uٮh;Tiހ^cHj䣩IPAZvldmݩJ*$̐I\4lN @ XPǁ'e}*"-N:"nY֕ ]ٰg:(f3@cDǁݴI4ֱrX$?2q~j$v}J[5A2qZ_ pevr%HN`>Y 5 ſ~V+AP ؼ`xt'5$H^Nw>9<6 ~i1`V$،|8^*m`Gו 5>Tj=>O{6>>~+hR?9$; P]]u/CBEHΠ13,wMhUy2'HI1痧s )@Nwl/|<O~n?ir0}z%P^tlbv܃JҎuF:iFL8N(>2:V^,@CgpG[*6ߡXEspI$Hΰ@f`\0Dc)NdnƤTFP_a ^ ʁ(j ^0Y[2ٔ8 2&7N0gwPaPbD16'|kP}#SP 'F %ST⛨͎PYPxcgP~0Is tijQ($LQET:c@0@0(bOe, x0` N( K88@:Wd g'읾@txp~ki' MP]~ RApe* ˁ+A.@=%8i*è@u3-χ*:Oi`$h V`" @D&cv,K*O{<%8`m Jb#7p͟9$_2?ib֡ 3Aiě@< jO E i=eb0,1 "C eƤ9$@/j;݃XH3(OU8@@9$@@O;AW'nT֕g $GpJ`_T_r QU`!OB ~ y@L̥yu=G85,OJ-5m tG.dٲ=<G@a~}Dv[%Z5׭uru,@LJ]yۓV#202b3TI%?Ю &?8p9 o87nI&")1B qޑF9|hQ%lz^XlhL|{ G -^O|6OxGќ„ 05Ga'!m ''-;@%S}|CY$K^xԀ9ה,@qRC7려 L Y?`53_iG^"G_v!k}& F*Zp66N~7O+%@E=5W4'Y#G.iթH%&}B x0BQ*@yž }'o"/)V*65.)SN'R  ˦8}-+/ݱmn§4PW9 GSC^wGGo*asV|M=Q?u/ʔa3Lls . nĽBai- 1ʎ4p`O7P \#q/[P @`}Lai 핞 -^UhAy#(g J' `(*ʞ YKQ4mpCX1+T\-#Wf @z P\4@IucLof$_JIDk罿~f|IL TP|.U<(fb+/+ͽ_OҀ'7ږShF`h,T $J ?j2;J@ YʸV`ԒӱHqBJK0?7#E`Zxpe_P Bٱ*Q^@ڡOiyzX} /9 t@ O*7[ @ c'~k@5MҀw b F*6Rv*= T54g{b<vRC@ bl,j .Y'@@4@䷀0 ( ^_ L!@>~w`a{&%=*:&@C) V7pFidta!?)L \Diu`hjP?2pi"@!gmv < Ow4pLC@Xc@g4`q.HN<4GK~ 5JqBӀoGmpC`+@2zE$싻 >  @e-.S׋&RS06=h'et~WYMO`[j ;[jz'=jOn!Gjy$ ϡq\eF4vmpClr`+p|EP@T:{ǎ/q7q+w{fKiwey5 `upذIaZ\; @F-@p3)a).D%AKu @s ׈b{4B*A8; [ gd} B+(\ e=|X0nnṋ`ƐR%BtVkRS=˕O_/F`KV~ 1{DQ(7' t^|@@-@Z\rhHxG@C []e@I ۃ8 DLp t]PC#S5gIƅ/ P-aSkk& 580S/&@—6&j8g!L-1) TBaC}#Yͅpɮa5*#V VtO! s$Xhmf#T%@Ko@ 0~|`hj)G1a@|X0nr lh%7z$0R( po1tX# pÉ0>,7`u"$_@zMYTOIdq _ٱm4enB<EHfm_ 4@ & ih }Ay%0\ &@NYA{6h5)d~,ƘxA0٘2;%@TҤ0 7GV2 6s Z9u[#8ZP3j_w +o4 e&Bgz)u$@ʌ# LMZˁi>`rppKb vYO@idmf!cmVr`5k Offz ;"W\oa0li8Td*. X.A^HܪBP x@|0H@$J ټZ9HpR^+rC[E@ǝmpU+guUS2'èKYB|9pgR[k}JXkF{'B1NWA*8sͅ>v6) J Tڦ>Oe- GyY {D|!Q] = R+-kSM\"nb\xO+oY`$R\}XM?crʺ82diWI@ Zfzf0Oad.ӿ/u S tdfX{GaVdb ƀھ@hOZ-@3|Y+ VƀQ@X^aD\SeVogwfoY Wro@9OHg~]_fXke{ [Ӛ.?G]ʲWBoao+҅)ϑ)B/e!]N,w-QN",@im'P4G@FOT&gi3vxFcN/J!e*c+\T4ʁG)<-PнHXIh6 ƫ.kajZ:l'w/kǃ+LJ\_D}@J1v iϹoLT\$g FVp@J=]\h @C? %mNS.k#q}۠ ͫΠQ^dD%`n :W[Oo~Jʁ|hQq`c[ ԍL @ 30Cϊ.ۃkbPy GIU ̍#/uF_?Q@ H,ԅ4zN<NtwX#E*BRQ 20O*h ˁ IxO'D[jwr,=K:9xuhPr@zT] F%+NK`.X\ Heiy4?Nc)csG#`ʁ ii`Z"?udU;LE.?(*nh9nx7!rKv+dIWG~B{#?<<7Kcw$ɆSqo_Ro ~疫#ʁ1 pwomgƇЉ, Crٛ6/Ń:#Δԑ-Kv8N 5EXKd@.}~A,f\L>;5D' qD QfN1>Ԧ㠀XvuZ HxxfDA:Xt7;;<_ QKz[y[ۓ'wOyƘq`'mc˘ pBB {h\Ę' @Q-!xW$  kHZm]@ ?zajhby '[cN)sdI?}>O O 꿟PT `M 1&}`^o)F0`h%sI2I?6 bPտDD _R` x1Y'hOa]<}&@䕱)% ""4}T'b'N^ٺ`[K)PN&3낿'ZiN&ns}_Uu;mD$>1,ʝ,@w/`Yk1%@ujW:ςRUz 0VSIl5FNh/D+TO֎]zR`|'@{"sxpSX Ц J uK x7/$7.@ u# Ϋ* K6],<4$@%WO{ 0 `Ңxfn K>Z(fNC@{4jOT% 0^\)'@;J $hLmhfn 'Ӝ٨pa {Z _,x?4hǁEKǁ{L7<8, @YtۗI<&Lw_0oGL@M\!\08 բ$ X" ` `Ա&Ţ% .\P"&TQ&h @*R\-pP$ /3bT<ʌIENDB`gohugoio-hugo-6abdaca/docs/assets/images/sponsors/logo-pinme.svg000066400000000000000000000214501507671574500253140ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/your-company-dark.svg000066400000000000000000000177231507671574500266370ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/images/sponsors/your-company.svg000066400000000000000000000177321507671574500257200ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/assets/js/000077500000000000000000000000001507671574500200045ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/000077500000000000000000000000001507671574500216115ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/data/000077500000000000000000000000001507671574500225225ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/data/explorer.js000066400000000000000000000062451507671574500247270ustar00rootroot00000000000000var debug = 0 ? console.log.bind(console, '[explorer]') : function () {}; // This is currently not used, but kept in case I change my mind. export const explorer = (Alpine) => ({ uiState: { containerScrollTop: -1, lastActiveRef: '', }, treeState: { // The href of the current page. currentNode: '', // The state of each node in the tree. nodes: {}, // We currently only list the sections, not regular pages, in the side bar. // This strikes me as the right balance. The pages gets listed on the section pages. // This array is sorted by length, so we can find the longest prefix of the current page // without having to iterate over all the keys. nodeRefsByLength: [], }, async init() { let keys = Reflect.ownKeys(this.$refs); for (let key of keys) { let n = { open: false, active: false, }; this.treeState.nodes[key] = n; this.treeState.nodeRefsByLength.push(key); } this.treeState.nodeRefsByLength.sort((a, b) => b.length - a.length); this.setCurrentActive(); }, longestPrefix(ref) { let longestPrefix = ''; for (let key of this.treeState.nodeRefsByLength) { if (ref.startsWith(key)) { longestPrefix = key; break; } } return longestPrefix; }, setCurrentActive() { let ref = this.longestPrefix(window.location.pathname); let activeChanged = this.uiState.lastActiveRef !== ref; debug('setCurrentActive', this.uiState.lastActiveRef, window.location.pathname, '=>', ref, activeChanged); this.uiState.lastActiveRef = ref; if (this.uiState.containerScrollTop === -1 && activeChanged) { // Navigation outside of the explorer menu. let el = document.querySelector(`[x-ref="${ref}"]`); if (el) { this.$nextTick(() => { debug('scrolling to', ref); el.scrollIntoView({ behavior: 'smooth', block: 'center' }); }); } } this.treeState.currentNode = ref; for (let key in this.treeState.nodes) { let n = this.treeState.nodes[key]; n.active = false; n.open = ref == key || ref.startsWith(key); if (n.open) { debug('open', key); } } let n = this.treeState.nodes[this.longestPrefix(ref)]; if (n) { n.active = true; } }, getScrollingContainer() { return document.getElementById('leftsidebar'); }, onLoad() { debug('onLoad', this.uiState.containerScrollTop); if (this.uiState.containerScrollTop >= 0) { debug('onLoad: scrolling to', this.uiState.containerScrollTop); this.getScrollingContainer().scrollTo(0, this.uiState.containerScrollTop); } this.uiState.containerScrollTop = -1; }, onBeforeRender() { debug('onBeforeRender', this.uiState.containerScrollTop); this.setCurrentActive(); }, toggleNode(ref) { this.uiState.containerScrollTop = this.getScrollingContainer().scrollTop; this.uiState.lastActiveRef = ''; debug('toggleNode', ref, this.uiState.containerScrollTop); let node = this.treeState.nodes[ref]; if (!node) { debug('node not found', ref); return; } let wasOpen = node.open; }, isCurrent(ref) { let n = this.treeState.nodes[ref]; return n && n.active; }, isOpen(ref) { let node = this.treeState.nodes[ref]; if (!node) return false; if (node.open) { debug('isOpen', ref); } return node.open; }, }); gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/data/index.js000066400000000000000000000001131507671574500241620ustar00rootroot00000000000000export * from './navbar'; export * from './search'; export * from './toc'; gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/data/navbar.js000066400000000000000000000015201507671574500243270ustar00rootroot00000000000000export const navbar = (Alpine) => ({ init: function () { Alpine.bind(this.$root, this.root); return this.$nextTick(() => { let contentEl = document.querySelector('.content:not(.content--ready)'); if (contentEl) { contentEl.classList.add('content--ready'); let anchorTemplate = document.getElementById('anchor-heading'); if (anchorTemplate) { let els = contentEl.querySelectorAll('h2[id], h3[id], h4[id], h5[id], h6[id], dt[id]'); for (let i = 0; i < els.length; i++) { let el = els[i]; el.classList.add('group'); let a = anchorTemplate.content.cloneNode(true).firstElementChild; a.href = '#' + el.id; el.appendChild(a); } } } }); }, root: { ['@scroll.window.debounce.10ms'](event) { this.$store.nav.scroll.atTop = window.scrollY < 40 ? true : false; }, }, }); gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/data/search.js000066400000000000000000000047221507671574500243320ustar00rootroot00000000000000import { LRUCache } from '../../helpers'; const designMode = false; const groupByLvl0 = (array) => { if (!array) return []; return array.reduce((result, currentValue) => { (result[currentValue.hierarchy.lvl0] = result[currentValue.hierarchy.lvl0] || []).push(currentValue); return result; }, {}); }; const applyHelperFuncs = (array) => { if (!array) return []; return array.map((item) => { item.getHeadingHTML = function () { let lvl2 = this._highlightResult.hierarchy.lvl2; let lvl3 = this._highlightResult.hierarchy.lvl3; if (!lvl3) { if (lvl2) { return lvl2.value; } return ''; } if (!lvl2) { return lvl3.value; } return `${lvl2.value}  >  ${lvl3.value}`; }; return item; }); }; export const search = (Alpine, cfg) => ({ query: designMode ? 'apac' : '', open: designMode, result: {}, cache: new LRUCache(10), // Small cache, avoids network requests on e.g. backspace. init() { Alpine.bind(this.$root, this.root); this.checkOpen(); return this.$nextTick(() => { this.$watch('query', () => { this.search(); }); }); }, toggleOpen: function () { this.open = !this.open; this.checkOpen(); }, checkOpen: function () { if (!this.open) { return; } this.search(); this.$nextTick(() => { this.$refs.input.focus(); }); }, search: function () { if (!this.query) { this.result = {}; return; } // Check cache first. const cached = this.cache.get(this.query); if (cached) { this.result = cached; return; } var queries = { requests: [ { indexName: cfg.index, params: `query=${encodeURIComponent(this.query)}`, attributesToHighlight: ['hierarchy', 'content'], attributesToRetrieve: ['hierarchy', 'url', 'content'], }, ], }; const host = `https://${cfg.app_id}-dsn.algolia.net`; const url = `${host}/1/indexes/*/queries`; fetch(url, { method: 'POST', headers: { 'X-Algolia-Application-Id': cfg.app_id, 'X-Algolia-API-Key': cfg.api_key, }, body: JSON.stringify(queries), }) .then((response) => response.json()) .then((data) => { this.result = groupByLvl0(applyHelperFuncs(data.results[0].hits)); this.cache.put(this.query, this.result); }); }, root: { ['@click']() { if (!this.open) { this.toggleOpen(); } }, ['@search-toggle.window']() { this.toggleOpen(); }, ['@keydown.slash.window.prevent']() { this.toggleOpen(); }, }, }); gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/data/toc.js000066400000000000000000000033501507671574500236460ustar00rootroot00000000000000var debug = 0 ? console.log.bind(console, '[toc]') : function () {}; export const toc = (Alpine) => ({ contentScrollSpy: null, activeHeading: '', justClicked: false, setActive(id) { debug('setActive', id); this.activeHeading = id; // Prevent the intersection observer from changing the active heading right away. this.justClicked = true; setTimeout(() => { this.justClicked = false; }, 200); }, init() { this.$watch('$store.nav.scroll.atTop', (value) => { if (!value) return; this.activeHeading = ''; this.$root.scrollTop = 0; }); return this.$nextTick(() => { let contentEl = document.getElementById('article'); if (contentEl) { const handleIntersect = (entries) => { if (this.justClicked) { return; } for (let entry of entries) { if (entry.isIntersecting) { let id = entry.target.id; this.activeHeading = id; let liEl = this.$refs[id]; if (liEl) { // If liEl is not in the viewport, scroll it into view. let bounding = liEl.getBoundingClientRect(); if (bounding.top < 0 || bounding.bottom > window.innerHeight) { this.$root.scrollTop = liEl.offsetTop - 100; } } debug('intersecting', id); break; } } }; let opts = { rootMargin: '0px 0px -75%', threshold: 0.75, }; this.contentScrollSpy = new IntersectionObserver(handleIntersect, opts); // Observe all headings. let headings = contentEl.querySelectorAll('h2, h3, h4, h5, h6'); for (let heading of headings) { this.contentScrollSpy.observe(heading); } } }); }, destroy() { if (this.contentScrollSpy) { debug('disconnecting'); this.contentScrollSpy.disconnect(); } }, }); gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/magics/000077500000000000000000000000001507671574500230545ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/magics/helpers.js000066400000000000000000000013501507671574500250530ustar00rootroot00000000000000'use strict'; export function registerMagics(Alpine) { Alpine.magic('copy', (currentEl) => { return function (el) { if (!el) { el = currentEl; } // Select the element to copy. let range = document.createRange(); range.selectNode(el); window.getSelection().removeAllRanges(); window.getSelection().addRange(range); // Remove the selection after some time. setTimeout(() => { window.getSelection().removeAllRanges(); }, 500); // Trim whitespace. let text = el.textContent.trim(); navigator.clipboard.writeText(text); }; }); Alpine.magic('isScrollX', (currentEl) => { return function (el) { if (!el) { el = currentEl; } return el.clientWidth < el.scrollWidth; }; }); } gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/magics/index.js000066400000000000000000000000331507671574500245150ustar00rootroot00000000000000export * from './helpers'; gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/stores/000077500000000000000000000000001507671574500231305ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/stores/index.js000066400000000000000000000000321507671574500245700ustar00rootroot00000000000000export * from './nav.js'; gohugoio-hugo-6abdaca/docs/assets/js/alpinejs/stores/nav.js000066400000000000000000000045251507671574500242600ustar00rootroot00000000000000var debug = 1 ? console.log.bind(console, '[navStore]') : function () {}; var ColorScheme = { System: 1, Light: 2, Dark: 3, }; const localStorageUserSettingsKey = 'hugoDocsUserSettings'; export const navStore = (Alpine) => ({ init() { // There is no $watch available in Alpine stores, // but this has the same effect. this.userSettings.onColorSchemeChanged = Alpine.effect(() => { if (this.userSettings.settings.colorScheme) { this.userSettings.isDark = isDark(this.userSettings.settings.colorScheme); toggleDarkMode(this.userSettings.isDark); } }); // Also react to changes in system settings. window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { this.userSettings.setColorScheme(ColorScheme.System); }); }, destroy() {}, scroll: { atTop: true, }, userSettings: { // settings gets persisted between page navigations. settings: Alpine.$persist({ // light, dark or system mode. // If not set, we use the OS setting. colorScheme: ColorScheme.System, // Used to show the most relevant tab in config listings etc. configFileType: 'toml', }).as(localStorageUserSettingsKey), isDark: false, setColorScheme(colorScheme) { this.settings.colorScheme = colorScheme; this.isDark = isDark(colorScheme); }, toggleColorScheme() { let next = this.settings.colorScheme + 1; if (next > ColorScheme.Dark) { next = ColorScheme.System; } this.setColorScheme(next); }, colorScheme() { return this.settings.colorScheme ? this.settings.colorScheme : ColorScheme.System; }, }, }); function isMediaDark() { return window.matchMedia('(prefers-color-scheme: dark)').matches; } function isDark(colorScheme) { if (!colorScheme || colorScheme == ColorScheme.System) { return isMediaDark(); } return colorScheme == ColorScheme.Dark; } export function initColorScheme() { // The AlpineJS store has not have been initialized yet, so access the // localStorage directly. let settingsJSON = localStorage[localStorageUserSettingsKey]; if (settingsJSON) { let settings = JSON.parse(settingsJSON); toggleDarkMode(isDark(settings.colorScheme)); return; } toggleDarkMode(isDark(null)); } const toggleDarkMode = function (dark) { if (dark) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } }; gohugoio-hugo-6abdaca/docs/assets/js/body-start.js000066400000000000000000000002671507671574500224370ustar00rootroot00000000000000import { initColorScheme } from './alpinejs/stores/index'; (function () { // This allows us to initialize the color scheme before AlpineJS etc. is loaded. initColorScheme(); })(); gohugoio-hugo-6abdaca/docs/assets/js/head-early.js000066400000000000000000000007331507671574500223600ustar00rootroot00000000000000import { scrollToActive } from 'js/helpers/index'; (function () { // Now we know that the browser has JS enabled. document.documentElement.classList.remove('no-js'); // Add os-macos class to body if user is using macOS. if (navigator.userAgent.indexOf('Mac') > -1) { document.documentElement.classList.add('os-macos'); } // Wait for the DOM to be ready. document.addEventListener('DOMContentLoaded', function () { scrollToActive('DOMContentLoaded'); }); })(); gohugoio-hugo-6abdaca/docs/assets/js/helpers/000077500000000000000000000000001507671574500214465ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/js/helpers/bridgeTurboAndAlpine.js000066400000000000000000000040301507671574500260250ustar00rootroot00000000000000export function bridgeTurboAndAlpine(Alpine) { document.addEventListener('turbo:before-render', (event) => { event.detail.newBody.querySelectorAll('[data-alpine-generated]').forEach((el) => { if (el.hasAttribute('data-alpine-generated')) { el.removeAttribute('data-alpine-generated'); el.remove(); } }); }); document.addEventListener('turbo:render', () => { if (document.documentElement.hasAttribute('data-turbo-preview')) { return; } document.querySelectorAll('[data-alpine-ignored]').forEach((el) => { el.removeAttribute('x-ignore'); el.removeAttribute('data-alpine-ignored'); }); document.body.querySelectorAll('[x-data]').forEach((el) => { if (el.hasAttribute('data-turbo-permanent')) { return; } Alpine.initTree(el); }); Alpine.startObservingMutations(); }); // Cleanup Alpine state on navigation. document.addEventListener('turbo:before-cache', () => { // This will be restarted in turbo:render. Alpine.stopObservingMutations(); document.body.querySelectorAll('[data-turbo-permanent]').forEach((el) => { if (!el.hasAttribute('x-ignore')) { el.setAttribute('x-ignore', true); el.setAttribute('data-alpine-ignored', true); } }); document.body.querySelectorAll('[x-for],[x-if],[x-teleport]').forEach((el) => { if (el.hasAttribute('x-for') && el._x_lookup) { Object.values(el._x_lookup).forEach((el) => el.setAttribute('data-alpine-generated', true)); } if (el.hasAttribute('x-if') && el._x_currentIfEl) { el._x_currentIfEl.setAttribute('data-alpine-generated', true); } if (el.hasAttribute('x-teleport') && el._x_teleport) { el._x_teleport.setAttribute('data-alpine-generated', true); } }); document.body.querySelectorAll('[x-data]').forEach((el) => { if (!el.hasAttribute('data-turbo-permanent')) { Alpine.destroyTree(el); // Turbo leaks DOM elements via their data-turbo-permanent handling. // That needs to be fixed upstream, but until then. let clone = el.cloneNode(true); el.replaceWith(clone); } }); }); } gohugoio-hugo-6abdaca/docs/assets/js/helpers/helpers.js000066400000000000000000000010141507671574500234420ustar00rootroot00000000000000export const scrollToActive = (when) => { let els = document.querySelectorAll('.scroll-active'); if (!els.length) { return; } els.forEach((el) => { // Find scrolling container. let container = el.closest('[data-turbo-preserve-scroll-container]'); if (container) { // Avoid scrolling if el is already in view. if (el.offsetTop >= container.scrollTop && el.offsetTop <= container.scrollTop + container.clientHeight) { return; } container.scrollTop = el.offsetTop - container.offsetTop; } }); }; gohugoio-hugo-6abdaca/docs/assets/js/helpers/index.js000066400000000000000000000001371507671574500231140ustar00rootroot00000000000000export * from './bridgeTurboAndAlpine'; export * from './helpers'; export * from './lrucache'; gohugoio-hugo-6abdaca/docs/assets/js/helpers/lrucache.js000066400000000000000000000006031507671574500235710ustar00rootroot00000000000000// A simple LRU cache implementation backed by a map. export class LRUCache { constructor(maxSize) { this.maxSize = maxSize; this.cache = new Map(); } get(key) { return this.cache.get(key); } put(key, value) { if (this.cache.size >= this.maxSize) { const firstKey = this.cache.keys().next().value; this.cache.delete(firstKey); } this.cache.set(key, value); } } gohugoio-hugo-6abdaca/docs/assets/js/main.js000066400000000000000000000050101507671574500212620ustar00rootroot00000000000000import Alpine from 'alpinejs'; import { registerMagics } from './alpinejs/magics/index'; import { navbar, search, toc } from './alpinejs/data/index'; import { navStore, initColorScheme } from './alpinejs/stores/index'; import { bridgeTurboAndAlpine } from './helpers/index'; import persist from '@alpinejs/persist'; import focus from '@alpinejs/focus'; var debug = 0 ? console.log.bind(console, '[index]') : function () {}; // Turbolinks init. (function () { document.addEventListener('turbo:render', function (e) { // This is also called right after the body start. This is added to prevent flicker on navigation. initColorScheme(); }); })(); // Set up and start Alpine. (function () { // Register AlpineJS plugins. { Alpine.plugin(focus); Alpine.plugin(persist); } // Register AlpineJS magics and directives. { // Handles copy to clipboard etc. registerMagics(Alpine); } // Register AlpineJS controllers. { // Register AlpineJS data controllers. let searchConfig = { index: 'hugodocs', app_id: 'D1BPLZHGYQ', api_key: '6df94e1e5d55d258c56f60d974d10314', }; Alpine.data('navbar', () => navbar(Alpine)); Alpine.data('search', () => search(Alpine, searchConfig)); Alpine.data('toc', () => toc(Alpine)); } // Register AlpineJS stores. { Alpine.store('nav', navStore(Alpine)); } // Start AlpineJS. Alpine.start(); // Start the Turbo-Alpine bridge. bridgeTurboAndAlpine(Alpine); { let containerScrollTops = {}; // To preserve scroll position in scrolling elements on navigation add data-turbo-preserve-scroll-container="somename" to the scrolling container. addEventListener('turbo:click', () => { document.querySelectorAll('[data-turbo-preserve-scroll-container]').forEach((el2) => { containerScrollTops[el2.dataset.turboPreserveScrollContainer] = el2.scrollTop; }); }); addEventListener('turbo:render', () => { document.querySelectorAll('[data-turbo-preserve-scroll-container]').forEach((ele) => { const containerScrollTop = containerScrollTops[ele.dataset.turboPreserveScrollContainer]; if (containerScrollTop) { ele.scrollTop = containerScrollTop; } else { let els = ele.querySelectorAll('.scroll-active'); if (els.length) { els.forEach((el) => { // Avoid scrolling if el is already in view. if (el.offsetTop >= ele.scrollTop && el.offsetTop <= ele.scrollTop + ele.clientHeight) { return; } ele.scrollTop = el.offsetTop - ele.offsetTop; }); } } }); containerScrollTops = {}; }); } })(); gohugoio-hugo-6abdaca/docs/assets/js/turbo.js000066400000000000000000000000521507671574500214720ustar00rootroot00000000000000import * as Turbo from '@hotwired/turbo'; gohugoio-hugo-6abdaca/docs/assets/jsconfig.json000066400000000000000000000001261507671574500220640ustar00rootroot00000000000000{ "compilerOptions": { "baseUrl": ".", "paths": { "*": [ "*" ] } } }gohugoio-hugo-6abdaca/docs/assets/opengraph/000077500000000000000000000000001507671574500213535ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/assets/opengraph/gohugoio-card-base-1.png000066400000000000000000007323321507671574500256700ustar00rootroot00000000000000PNG  IHDR84 pHYs.#.#x?vIDATx[帪ȊOcjC#3Uu-K`@F?ok F_> gp"1WΉNFQ.+1U餪WUu3@s} ^Tu@LȁapfǦ$t>P-Y G#>Sh4)gϝt3CRQ8 /gDh3k}fP 0:Ui%*?aƕT95QCJnY3EjUBF>T4flk~Eu}R>׈74a5/L^ FKCI_cti9h^HFesBx35JU^U7(Dc>B,%uF⚂,Teet<[XRYB >%JZ' hMTM4٢6DXi!t-]SV0-vly#3$^n"s3{WؿdVQ<KO^|~?c9t@[J> e@tA4mdGs[B3<&:Mxnh.=&B %>-Q>8m1ZG#(79!ŽdZE ew'Ч^99eT9TV%G(]쳱1_=R/j3E+hb"#5O?kiC$Pi X2h·:X75)60vW=R۷JӧC10JdX{k l>a;p!0؎ (Øs M *KؠBY҃vKm4ns֖A ][32D"/TcE||xg޴.&ax7)-n}=*BϿx<5<`s5~b5Yα*8wo7?E`e/Mmiu.؁m|`pN!1I_!Z30(BE6('`*kH V^.:l͐fHC:z~tS1ӱBD SP;$o (=zf4>m@/6-krU+F-b W"CXI-݊kt4˱j?`)D8> q.E8TFQ1+\ -ݨbniu QrO$E.KWv,0UKbU] %D:\\Es[܍,].!\@౞@XkzbbKC % 5j |Rj5jH.HN$>skhѲkNr0Zo]Ƿ77J p+%գf(}Z&-m!A+Kĉ fPg,T_$taؤ8!C=/b !(7%= ),xt*J!hM>ħ詛+ D.͠Ϝc# ϸ[0*aJ߽(Y)JFU׍-+JWU}&=/u˹Sx̑+Z8zZʚnʐadr82nqگL%lN$\.$IaVd)y,;%%Q tF -P)*1X{Yłf~;9-($K* _>SUHࠉB8d>! Y$rׁ̟7SVƷGJ7 )qfliÊ^,;&f'?홈f=NɠHbIIe\7pFY-SyuFg*A R]Pr=VmQ G lf6wfXYhLD_QmOwn0TyeΉ$`96EҍHIE)q? X p9MyG9 W6WAKi1:<6$mG9nG 7iJ{P~0r>@ bKsg1H{kpuե䉕Iq~qje')GlVX3LmUx[~9y_&q 9aN=t*=M@IV({PlRӿ{&!H8Y.&R{:"s& 9de-031tvQ˜kB`P^g vwLR+ EsR0Q|aum) W"4 ڻ4L BĈ̹n<3D~6m3| cC$k1f<G1t~KD-(Qw+sb,l$ Fj6K; 4nLKӴnhC () es) /TR$(`]9~(z Y!wYBdLՙ4"cK:LͥH, QV8K'O6|.MoxWQ1W'}[}ÚQF/]-?} S@_@ 'Pv=(zɗ[G@l,2.u #?L]b@^,n9Tb\w >(y9JOA2CC`n*DM T G0f!ʺyU'(FՇ&s\>xEKbl_[XoB$ HA#tR?~ł5!fG@Rx|w՛#X8EUL5ihOWKEc,S?9T7sjOCiw{J{6B!A ]N Jrv7_6aA {J{p$!.>7,KpmZYzg5夹zԢNbx{\vo/B_;?xGoot7@%>F i+``NGqV0V=A=v>:8޸:1ii>`A| 7'sT4΀ծYT;* gIĵωz킹-yNpj&cgw!L|4(ytN:ntz{ps#͟E*65Ҩ+PT<fn>77; R|P;m_"3cTHY2K.0`E ;d0q2k^%cΨdRwyՃc_>g:g_(S>?7#? .IHSa'm@'=3*m$ž 6@kD3wU 7ㅸ( jUȕTCT>AQĘ |'>~pYe}ޒd>%Rt^]m17e˰:LIo<&?'x?S+&[kBŪ|}"Hq'9yZ.\ZƯ"w(J2w ٹ|Udɡ}5-VH_Yd߆DnEx硰 X$S(,-o>^+(8}Bw{q"cr@9R=Xs*@ķP&T=`Rl7ϙ>-̧\8k:R%OUA87cFąv(GS 8=iA%,Lj_Uh[FѰȁEg6Ў!6v|rՅh`İ O;7wӓJi aR>F*廞~1QVpmvKoܾ!@\ؘzI嬰͛<@}hW]!ct|ҰhՆPezA"+R;moj6>1J}'sj~xbWe1~N˰u u pp4! :=.z8 u=e zdvOAr=n.g'˻b<$A LVS*m9@cf\lǨ)yi|DVP6#dΣʱpx7<lrwRh}e4}s пLE56Tq/..# %I*uf ;'d'|i Mt'u?A(_[|U^v λM6|r)\j~JO?s1q+Kc $xÞH,7:Mt6M3xU/Hȷq4&߹|tg[B:.V9m#>&G9&I[ץ*l^Frn ;WV;^[=ǓOʭ?g r]d%E'HXN o\.0+IK( D)jU!=T1WOv܋T|p c8SW E1 NXpԩ ]~P(l,ctc+Ͼ} pYO"RlxD;y%cC9n1wrɬ:hpF ;Q_[i^RQP4;U-Z"1j`9?s(g$灶SQ1з ̣ 1m";!Mp*>< 'ф"pՓeAF+a;j) -ETc@. Y_2Gz-, I2 8<4OOo&#p=ą?ގnT:C(99{{ LF(>_0.!/.EJW8Y=8\-D A:)YF# 3 B6$\'u~˅Wg(- z`[:'%fR"J;.U=HX_|)/*;`qkuz6g3nqYaVj;#a,cdO2jՆQYǥ&cۅ.ƯcMG,5K\'6}P:Exafπ4d\LDRnAYi{ˣLyQNQG+ޡ*kҚ2OpEiqm34:hLJYhACnlU70*G]sI֍ o?7`pprBFB>$uv VKGH_ΆXr<& 1S _﮲Cĥޗ.b5uv)[?rO DzUvmcrګ Ea=?*i4Mw:Z.O7.\. h36a yqV{KJ[w+n"Z%<:#QM\2¼x샎|YѰ896il.#cWYTS3< ۄz}E2FjAҲ2t cb]({t @iC "2#kR\ ݲ ;Hl~u~\"JfYJF3RxH+A?bԤ(n̖(cqSΪ-af2(Z Gh7d}щ $UsZ$t6^ˌWGQn+Ɗuob;8M|KmEs vǝ F9{g#'$ǎ/ξ8TEફbz4QmGD9 ?:i~s!$'T]r~h)⁕WMi[^EF^"Q2XCQ޾5ڞ%S|47 Z>p:N0CNN~g;'d$~j\!$3W"+]sD^)ofK˘F==V?܅A6HG;"]".au<0iEU4:Ld8ڄɾ4xkԛ,t!tgc# g~"M8nyQj۝=GKw8;*+ca2e*璂9r-u(a6ip%ɨLUP:\CgFhrKF{2җ_T ^w`Lc^@ǢÁiĦ:crNv| &#ɚ]-2Q6G#Q!v\ʂ+(媣s'BiQ%;UBP%c?s5NeH/gGԼGA o϶\u v'slcmpv~qILC[\1|Q!-ШhW 7'_iN9 !J^1K[˽iEOaiMe$:׽@/3j->o;N_<nlTrX h9r bФX?͂y0=tq,%f З?͂P.*l9K=S1ι&kWQH<+ ׿#U1<$Y&0lɮI طW nw,8EBx4?<=H:{6'E-UҮgPA"(xئ{>[c Ɉm̙U Dg(Fi+eY|{mhmY.G!Ц8i"ؼ$#g K1Wb^޲l!.pJAb!gƑy)Z4j_ߗYw4KFՇC_P= 1ch⡙jKH%η'~>E)=|h%<`hL>ܦ¢vjnoR92pbA#xMw(J>1԰=T,%nIuJCk 硎jx!懴\:LDeY djyakmL8'לyQNV8vv9O s'q,Tɻ޼w^$6쳛G/SQ$t7v dp6VBv0dw6׎_ (~S_cUT>Xa+5,Ev?9y^?wy=V.V9lQ(Ƙ80 I״%g~-S[0F[5qj<} vl_N EFq$ؑ6#ʹ$'8nϼ&8,9 Fbݡ*+!nMp8v;y9NEf*/j ^[%̬1[VQTF;TdL–Ā+|]!qsgi5UOS-U ;Gi1M9dz5Os&p.12B, BꏫE@jU3j[MZ kOA:,際)% [n W] J1HI{rR:"#oϫRPtAy=njid$Ѣ7bQgu:YJ^|wn>?;%#O\_Md]sy݋\v<&#vׁdv0Kv忻?*.x N J Qh૜vYL'K2 YLѓ)<&$/`p1*6M17* ͟?oZ2߈=" 5.N52Ok׏:Y4^wxbőГ)iۑEƎs$znOFX=]~Ș?'<%0ҷ)y[! sf5[tqj>ՊR]WX_ۥ$u4ᙣfve( >Y2A@:a3C]ty$d|4W%AE3~+ͦ!Rw5I WX]>WLg /ڲ<{ ˑ+\(_4`~^^N:/_Ǔ|w_8piI(Z6N:`Swdl[MFi2xG1x> # ä v{DX :I)ywMvOBN"6IirZӆs3BE/%,:?֟nkr'Os0/ǭpº<0 d$GväP\F2Ftܗ\>1cOvhƧ.E/39=_}5ذ]-I)E) LNU&)b_L*?L`#F7jgDCbRGy8*mF'b}PT!΅>] 9ȃ H*9ׇ.O bi !!#O,v2200횡I`iIFbt̲\3"A[Mxz>Cڷ6bԌQk wp-$1"J 6K{v̂%NVE`*gn؛%lǠjoqEDSp©P:KmYѫ}C2a3Ev. XMFkד 5năTݫY G_꿪>!*9?ľST wjJN-I?֜8{#gչ9i*J$~òsHVenE5{o s46Ɩ*Z w&8=BA!cɢea[{= <8 Ϊo QXKxۑ,qh09W](-̳SvLh :ķJi9a4u"I.IV_;'7UĿ ᑞ9Ep G^2Ey]dyubdr׶;p`F-ss=O(pɓjflNr96y wY-O%uUGnUԮKU˾]Л+\̀I tM+cޘɌF+[e/K\; iڱ F~}Gq"Dq>5LR&'A Z(}RTbIY^AS$e,Kw]Х@*l/lb O4RC*'J_s;-[T:^4TNbsUUmb(:P֔w1Y7OSɎ6ISvP>YqY hiF _\OzrUU956S'3v&4#^E&,؉awgGzlZ,Q f^5ĵX,ѣ?W^[&[X#d~.Y) % +* ޸\&\Td5+u˳dn P ²:m,i@&_2lOLkZzh@qZ42\ Bqϡ5qUŷB_$DR0Uhz2s2a:t8Wn&V, Fq" \9hFj>( h%X `7fDrVs7iocohM77n(0"$l*sಚED;Of0YH؞D@ҐJ܊DN22#T7%|' w|"N9k)cMN;t=+ UpZ;GiRN Dk08k'li`7,ģT,Uk" cgW )Q:@lIj '`qnAyzc(9xʽcQVJ@ZDZTQOvq*;` 1Fz0|0^8jJV!RxsBP<^cEQV ;f\Q\m`ɝB:R ӎp^HQM@ ߀qqo";]GEYûR,~fV9RRGuUTf; ,_m݊:ҡUEO+y☴e$8A^iCMG$I W'D>׮kMU,6'hi^6ny*cJA{Rha4<؞UaD\p +*dӒlzU+w@.VtP8sY-V};oX#.`vde;z_13[fzI{e<ӵt l^^]L |?3u?=:c}!6"f D!`ԺWy4R^×=DG]㎰@#8pԶ]8~W?*:܁|,c(2ER:dp'@n h\.%q`VE+x3B3[kF ڞA[V*#hrힽEџ|C7^^[bGt׹_n9uUX.bXs|gfPE79逩RSaZV!܇-jZFgL ;ҝb4 أ$j, ,0P&-"#]z"P?s+a">6V*q]a~2ٮ:b-pHz4Bccgc8=(΂dߋѣ\mioGt %]NNy(2ɑ_JÈg$KT=y3&,7)vTs+QumI|:֥IAMy[|KShFeZ+ܫ;:9e-`C& H 1&Kx^vzh4 ZeR_[gD0|C#u,֧jE4_o!`;k2\X6>yU4(gX<~ |)|/OIo],좲u[0Y ٜPH*[ 3k, Q0 aiE_t^ϝc.a#"O1՛@V=#_1Iㄦs.gp[`bE(j&UbZG9lI!iAwh՛Xuui$ٻzKZ鞖>/"O*2yͯx>zCruJ?`MDN.x{@bwaGtDFIb `W4p<vmƤƐi+ ɟ_@o}Bzy7bW4ғRrm>K,zfgK\ΘA6v'rG>KD>Έ=gʃ4eHt@yhBzg埛ι~UZ Jwο/HpդߒHQrj3^ dbJ3>I>2~P'r\(O'zk]TƱjh 1Al$bN1cR+xtM2N8 MA `^RОO}`96$'0uBі$%[ NV0 F:%ne^[rBS>5lzJu<5(LÅy{ٽĈO , w<Jvz[Ƿdi?sSꭿz_CZUUS/"@KD g Nά'G׶gxsޠ8RzFVxnxKhѪrwɕ>²"&3\;BD٬ea3u_G9[6+DzX"=̒\iۋ0P:esVA(HэZ~X8$ϘirO0|Y΅dtg'M<ׁem|G "W2gcЛg"=bYndZc2-b5?Cu(Z,1,neٽ(:0ZX QdHic-Ap&̞OanOJ 305WD,aEf],kuĂ7I8U:.`R ^"GL)[& W;}fz_OT?q}uu ݧqm;3^dםİb= rZy=t3+A;I`@9K>ػ 5ífK'iWnEǼxZ%DJ_~ 3JPKظ٨vмZb =c!GY\7ڒbiԞ뤗+EGPj &;\^E} ?B1%wcb w S8]a{6V#XJ]чS8Ly#G3 =Ym_:qAz2zj%𱀩xG='j5J1BRT )Lz^W {cZ^93H:GݒCC5],qNnOx-^ ug qeȣnQ[|[$Cܕ[6$Ů1AI.:y3IOF:yWQ>>g=lI?"I|~]d3!<3mGC+MOM`zi3peW.`f0f"'L+7W3 ǂb)(Q+oM'n29j%9G9s3uq1N9_pY_Qv/ڳf۰H^x1hjnc# ҭt*mS9:Si$(VRFNET+92xw_ ȔՒk#ZK޶Qȡi j. NhsҨ:0yƺIPro,k~Nc@-_UCq=>/Τn g9_z6 ˿Wx*/|-Fq(n(b*uĞn3JH``|GM*;ӯ+#kkwd@9CN20Z~DL]z&0symIrQLC䣒<lbYęt0s[o| BT/06r:\W0^y@> 8\L$Stl=>܇Z{*}噖MRhw4,ĮgACN.'v㝅)urܫũ @a)ưg6~#B%*?$QTX4YsMX-PV>Ih=;ynQG/.qbve<&eC@xh}Fy&B5/'/#:ݲn0Umֆ m5'ጦhW1r=ك2h[5)a3rS5!l9I6iV·]7/Pvw./ zlNRˈ'9)!h*tkzs# uѥr9@q8v%%|qǎR0D͸݋J\WE x-T(ߪ,Z@LzmK_,`9:KvlISjs5gF+eoUpX"3kMɜkVyү_Zʅ҇bkv:EK,뗝aOk1'd/Sʔ¡wdP1v1!dKb$d'bYg!3䑗r>-!C Tioȧ5/2zkys^~. Dv[s3}w7]?Og=f#oF-Y[#A8J̵=µDʹIkm<"ۯ며vݒZr*v͟]fǜ2Bf\O1JX6/(!!}O(@ԝ9&M)*I~Qj6[2ʖ“Tٮ]/=VU|YU˻cfw.ZSr)7rqwd7.dDf=˲͟*@-R\ۣ͸ڣ i97y "jjuRRIb![&!Wz]S Y $qiŒFs*h\P`MA{l [fv'iʹvÕBD8@ Ф.)^ T EyGc+S'׎[!Ja!X<ڑ%9v{i6\Oq՝_X_Hȣ<(><ٹn@RM[;|Zڗo\I ǤZn{C{ekoV`G(}drzDAv8? * :ֆp] a]ҏcN"MA4|NifvS( w˥6?%Pbw^Ҟ`n"ǰoy_v-sw'=JpL,=njVGFDpez}P%ajvzRѱi9wY.2s_X9vהB.Ζt̫rgDSBUk*4Sm>f9ߥƽxx9.FGmX|&3z=Ot=$B&}y[ 尚gM1EIouoW{FGWsg;\}XVG4sTU SM[uAZ%bLC6 t)+nʊHx& qǎI!tzIO_% qqʊ#[LFV΋ %A])&`ͽgLuFJ 'tN5a×G*OKdٰTf0ڽO(a7`ڳ ZCvym 1y1_&B-M~|u/=."W bDe[(DXtAOR~cMJL]-_= `Tcbޭ C({T]fZ$e/.ƶڬmHB437#[R`26dz*PSqo 0"oxJ5'a{'~̦󆞾py!:XvUe(brJ# vG_ q2N>A t<}E -ho@͒>!~T[ۻTAUN3iWңŊ1v a\fPTÒEd f "ΌD#6 o(i؄* C9՜Q{U$Ww޷ϽLI 0;+pRhYBI7G =cp/qiICѧ|I姎"祫O;FL ')˱|8 Z| `;yϠ7IG{ǻdȇPژB!c0Q^ۡHz#<ftC&"p ϒSgQ@m-acrc9/1 1,@g:\sCʚᄁjnns2i͹YكEo*(ij㲮@WFU=yrd۝_1DJ40PUF9 uK%Jp2SdL­3y@q|D8CjbJLX5'|{v $Fw$D8nAY󧣔WWct ;S{ck}{3; yWZe$Xc=qb7&VNGj.,om]hG+kuC;y(jӗVb/^6 39ۖzk>l SUw:d>ҿ~>}~c_/vY+'y\8N5PDg .k.: ],ess[KZFtq;4~/cOJN :2وϙG9[#PBzv*Dn>?Ү +tQL"yI1 0Abrh88>.v$<.dt*^~6('p 5K|9.:;醝G>A2 $˃aB*J.:cO8Rea6\[vK=;ճn_sT@փ}SRjlՃ\)>̿&᧏P)YyĨ5cт} ӟJ!!aCL6U=Ho;"a@Bs%Hb!'rAL Z]S1g:ک_ )ti+rI}xViɐ_*LpEN\Hhɓ5XgKb l$;'>t:$zgk4.7LeVd+#0vÌ_1 ڣLceQ`h@P42OG4큜"р; x1&B[Pa31g"f7VNf'xI:Rlf1kCG=_neLJ  ۟Ј(d's6hD(Wos ^_bXbϸ-)߬˷1j86Si666U ٧-}2 H7yY=+$Tp5k#R)4}9+tQ{L7t]X 5S:#45 eLQ\ Fh n24*݂&ǻ.qM>>v;r3+~'9xzPRJ1gBY 2IwrRPeҿa&izD{J;*DzBq7QpِfkĮA*e@)2adCH^RH0HiBJ![q=H@l b#k)tӜ|v@m p2Wzlαmg2E[,4!W1c-f@V~:uD\Zע^:=nsĪ<W+r3`Z~!]uU8Ў;~BbwnB)^4T/؆PɊE4{t]j38??4? jzẼ< Jb01pz pSؔB) kf~{@)1M˜ _K" []VgE%. SBMmrG,p)~ap@ &չ Ж„[pzTYm[&ӽ.Pu;P,sgK9U;.ւ}R$+HͲp&7Ud.3c]#:d@V~IT}R̷:cnxCE~ao u),Җ>5R완 3 Rc[X&sMՖYè>$b1JhSGcfg_ڙEQpk)3s(P>g7 {pY#IIo8v+1liW#".M6`VSiHkZG 34lL,8踄n[ձ/kXø5L,ԝMZwКH5jSNRɹs6 *)ybpvG)|mbnxhҝ愤hjv>Ij<5Ϣ7uбHCV#8VatEﴋecˆȲR`2xs`3 0\M1qs?LO[ {OխnM)!)Zv\7B=Qof٩=6QV{hUU&Ϻ9|FFP=IE^@U\4|BK(܎=r۠kBd\MR;wm@ 1rCӹ笚ͮ]Ӛ(՛9A0[yc%A|wF.[7 a*uů/3'QLHt&V*춄3دP[ɮ# RkzIrzd@Z6ontˠ}8T~ 7BE]cYqE .EK8YVN2NOm X-ɶh֧@|hK䯵B`p GEd^]3-k]BY0Lu12DJAaȋX>f?l Ù}&vۤ41AWnڡEF'ĦKq+LD#A#<gݿ\%$%<-_g+ Z cSV,>ꕀ..c#%!}K5$;HfwCJLrOw|::_nn]Y:l(\Uuo+(P gp %@"Ey3"kӺp²B.da ½)YaaGN5qT3dU2 Po#j 6("&h_W1̪. FAO'sWvi[)\o(K͡6G>_`RǺcSp|: ?~|RU k@#\̔m^|LӠ:+MփAH9ɫSFT7,w.' ׈kc00K7ĠiBʶFT$6-0UeoDtC+qL7$ᣠIYv.ДPz Fh TWQv3q7L͋-pk϶jOM6BGE j 0h9U|wbx@¶`W1%42$(p }E?VOi-(eͼР[K̛ju\\j[9Le^t38Lpc^ԙRT -)8=cU0X8BmpPώ+ccy/o#gݨVhBN}'Dl< {aOCvA`O.zl =U) @;* ﱺL.vQwx7KXA^uzX=H=ɒ.k} %$;8+ᦃ.ѥUmlւH!Ț(a7UCoSl;0TG+<װ(a(/%2F>L^yݢC] N>3,Xx嚆37oJ\+tB>nK8VdRy&Sk3li_';&YI1py*CKemt?3tL9 UUYuڟ)dNZ~AT!r~48F@bEfQF%LW\:JY5'@CoNUrPMw >V:jHgɩX !XeRYPʫp Cb<|7Fܶn\1 &q\Y^s0=(_T;}%4BҜ~s k ]e,9w?JPA'y]CN^wU4TqLC9 3-`tuYή aVzltfP .)OkMW(e "S$}݀$3LUErqydu]˱~I4Hȸ&0/D(v7o 5bMS/uu|H8l^|0o,cCŇTP 41FJb"zە9"Z\hқWH 5Au-L19ի3 h"ԡƄ#*aj*_խ4,ٕXZpn\<9'ǵ5 /9 GsqoQk[1;m326'I׍YjS~r=$\>i ƃlqwGprӉĜwMCA3ŋO~+ 3x4KYU7n7 /pC;#(1F;};NK_C_nHzjʙFM dA_.HƮfa!|V=مRVJ'3 @\¥EwH?lu*SG]ܮg[aB4]_w=Hj-hxP.~v`$DRňRR6C*|mt:>>d:T?UyZz tl+4#XiSEsmBUS8Ң}. NO4PPy'M1~dL%(ҡ"84Hubܥt9n# {oVt(01Uf9d~C¿jl !!=mpu7I' ^uE3Έȣ]Te6|ʄF'2oP,G1jBH|8:phLrku|~5;-b'_3,"puxlpIJhO$ɬчsd^%#%4N ,cU1 VԊco;_S !(D3&pȓq@:ޜX=f~$#Wu-$|*'? }K:~7no\|M+>3y~mx|o>߷.|ak"RCW\w17lvX6'>}8::Mz:'᮹%DʁMRp:uz{{zn(697(MmPx)Kh]_o= K _R({[լFxmK-^[^I~:߳&T}L: o {yO3o,dBUi-;`Z[mqM/TELJ+K;bvJT2UE{Hs|erjz`> zB9KzvCfL(^@,9`+nZ;,&8>~◬@0ѓ؝qQ!x`)ɥ<f,$:9xynU8CJuf,'W&UGhǘM̌Gd,=9)6^DKd: 0`xyg 5hs!@ #}G9`ԌP0H]+ٱn3$4vlSQԘvQVB``ʠrxXlW$Dӳ-ͽ 3)246 e2E ֖T`.B5!Ix Fҁ7ǎd玿<^XȲ^rDevn8_83RQr=U,r&Qe@ =ɿMİ(arYV v-i$e< giTYwBYw1^f}Kxz:[܍<Ӫ:OEʘs &U\?n{2QSF~ FwO#_8~R;U{^hoGcUԂ۩v$ar:NrGY<·b϶r@sXyifQq -#m*!,E/}| ?$0k'[NmEA RVq):]c놸"0kHLYGke N`ˉ~e;#એҴHRB0yӭ3`o.\p#0PKM@>re9[+yzVo=9̢ʿZ\| JAR) -w' #^^ύMn^G[.'A MˍoPX4 79 [ۖfykږ}h𦆉lU鸒M4L[!(5-0KF핏.CB$T.Ĉ2Cݍ9gpa//\vW K)'EIpʭ }xck`o4%|~I ~4)BKϵ}d~G{WUj-h`keMaCyu|oFCX (1Yd)uCFgS̫}_ad1q4 2{KNpk|'SЙRz[Kvq(|%ż̀ӍǓC_e8:Y)`آSXi,!n /$[N7W~j%/r#F7W#tcV0hu;VAzA39ulqv` )1L1;0R gݵB);Wwz:Qv^sBOOUVeZhUDSЙʼn"$ t熇$L-ɰf d'yVH˯FtZ<]wZڡჃCp 쉌S*]s BP~s`< ?|&uy^~hHOOmA ' +hW4goW&G+ w͞c^(mA{B.L!mZё;g`Q׉NJ( q@N') ؑ#fXCN >@gU^+Uu*ple@XQ{IQGYQzUg=,ctu]*γTߵDH6cS'p(CR@\L2j#t HOΊ!XY"\yP[@53+$v6^ۓDҌZW4sEi6:޳#n &([{-n[>D%$T ?ck |!HE۸u,yiS/|p̛l^`/mɄ>EfWY`-6KL6v֏TꪛkϋMCW;O>A"82=,Qx7d"1ތ=z5㡍}2FYW@'÷.! zI=]RX{nҗ ɌKo15^Cqy]JasX{`6'Or:u<ث~#)kS.Gϵ2jmg 4S7Kmh΅Rog!lF~Xܷ&5R=e`22'knX3 k;nO;4'$\T13tRr #BX-cN}EW?œRO VϚ$ ?g ng1Z-S9:yp6cpa-SsiUUhoZ{8ITáOW͹Yݒ:7]-S1vhu*UBۍƤǹVZNI>I%L:ִ9_.fdYŸ'Jʂ>%vpH~]D̏IMU1]xxJU/:b 12y֌ҥ!U}{i!(y񅁜+;Uդw2#@F K=̿!a8yfy%6, ^?S~v TXn|p{5:ӡU6'\V^MۃĥoB/!ԈڍQ}pΌ>')ێ?H7j[,Wy0ZyMfpKuN58z9bHڹڼ>1>~Fs d'Q76[/@_dhPUʫ8Bзhez!(4F`3)W1ӼCFN!xwX WQDX,IWRz0 c ܅GWwx cŪCQ7,tBxQ>Ƥ '_c;S #籠s7aFF3G`GnˬB\p.o)ؕTMPP۬"l[y 4e=ì绥F-ůs~G!** &C~7( Hbs(Z{  gBs,@jDDZ!=Вt;mQ~ڂ^M5b{/v5rAv?o!d}_[:츀Bӥ~02?q|is"J?w,f iF5:"򰵓꧔Cj4RDLPOIs[eœưpM3R4t@WǷ0^TMbpuި ">ȈwC̡l`AJeEﵛdt VrasU|vDezzች D];Ob/O}%1)p]%2wq~c{.8k"l,F9uF@Mkk9+'ȡCe;#[!~TGxzb_$` ;pKit+\qTFORۢ)+V#'QHuݙжŤ&#&ҳg3f!H dJyM7E Җk9l4=I]>z~5xi/0?m~^:ӪEsnbG:sɞf A2IZrfC }>7nH,jgp$tbnaSOe%&3zSŘ8`!נ9hKƟ"Yg.p1Ognq?1_y$Z.3]?a4xb Bu mhxFePEP@}MLиSƾnjՕ Κ}]:v%`Bk1dUo+TOd9H AXb8}L98`[m]1QIRTk}PSʰs-Wr 9#N+Bfc\\ɇ@ 9c@P\|oML"Q?S#ú!=OHg1GFth2~ɂRb`Lwt("Ʀ|c\S=sm5cFl65P('3-0g@cZFF`wdtl[R#r=ō$£.W4tJ cOMy4h\TLvbdpQڮ m>ƀ$;H_yq[vGͬ+(W¥0&+>>KMo}BuFhM ׎/A!A!rg($)vuInkFϦD*NX}!f#w+\:RƖvR xx[+Oc4P#Z#6RL44K:Ult*`,keϼP'$92N*@+`*u?ayd$3Agdv15yY{̍fdg?$[џUDrݨ)su|:RrQk3}ᤙ,JTwFXXpٵwuߚxsB5%/vܫi*.YZCuu鵷!PGGD+J/<`67.Uk\nl3,Cw`83M#"L\Ll:'X)ܾw{Ț ʿ/L49E; C79 8B:ZgaUoQ[ݸ`W<~ [:g3b <pn{˻v1ӽen\o'9%8gvpFmZTWKnC`khFHekp˜q #5c7b<&T\\yG#QI [/(!PV;(UUz~]}t{}2csO׎(ԖHV_gy4Tn1'RDcϳ:n1;&͚wG3J]P |S76TE]|)pp#/׷6x(J]ޒ} =-j\r 4G]4#a3XOSg4,k{zzv 呍`,IPϤ&pPoRݱoO `4wx%YT舣w`wy=ȭ Ьat rXlfb"msa睩/c+=jN#Ӟ[}D.rh]+OыpiczG?UI 녬j#Dt(6~YzXׇsZv}:>WqWvPKbqygwY틘`IC.O>暖RO2.qztIޞUz`leE~͇mN>UBHvb=t#IӮ UQ< $%dB,TѼaXs]CSKA<Ascn}B8}UǞíl*DN5q4k ܔáЦoD)uH03đ9bIj4E؆@=Fًdjtbbζ)eH7iO~\idzn礨? wͭzv@&gd!aOB (!MW[݁nz2Qi+`6v5czJ:,!.ed "wgU2!& //8% A{Bn Cܥr?k.i J&Z]#'僑A 9>UuuT'Ɂী2){αlΩIe ؀,fw2=@G,AٸPrL#rN}ס$o},q>0Gt&`8Ijn 3QTmjjBdEFǔ8`G?[GKo̬DUxL#϶Zds|V)`x]/3P,+K8`hzdnԫϐLLﺌ*=>DEi^Ǽj016l-3}&)Vpl{#VMf:}ֱI([CL;-ڴ{4c|y!X57Xw$OaW?W/mϩUұ^pY~'?s+)~RG7j$*h}PtGmhY2.4&01S:<U(U kQ3S)A*RiqrΡQ@0Gbxœ'Lq.ĝ"Kz?7\[0 Cù`wxA|w#ulnĢçn`OV5-2B$QA>v%ۉjw30Pv2LIߣ@W*ɫQXǶuICK{$L]IarS }̮1CL씓oyt+zJO&pu&1ev6.*֊W9Bź! ~E oKŽVO?Me=H]>_T־ ڞ2NB<V#a5Mj#M=ٻ z >A9\V; !cM/=MR{QeOhxo>8Ouڟ|/'ָr+;(X5~YI5:mqUXÀǍ*5cJɽavK6g236#'lDێ^3줯L##'mW x/=ڝJ$ fC^cFM2kS5vZ8o"gX{fsb/Fazy aQ83 3޼P fiQ&f?=:/Z/L* )YXg =ku%8c܏HUaqpG*3qfշUoʄN֤ a[ MLkO@T= ۑ $jN<ۚ>T%jMkQ@hLbD]L7DqYJ#$\Z)"a4r8,zegKiprTJ=]yM}owKD\’dhfQw%ZɁ :2FXϑ~şW ^{SSU}sor:RFiRR2}0(Η!xy$.#dǒOwAj}MtW!f~/ioU7Q-@Ѭ]\ڡǻ߾"K$ȣ>;%9v<RtֺZTb1cÊ//CVR@-ƔO3EzEO,h1LgUGhGEx5tiVmBs 坽? #^0'Ҏjt0/E1ޣHŤKpL}L.P`a&Kg]?b^l V걚!xㆧzFlCV50|UŊrlx~L$kbv|뜎9OEFvA#v{!;F;zkq5>.'1wF!6KJ4|rCDc+Uarp<~L-- kiʡv)\8+?l]+^@76Þ ֌:mG@8i_/\8,0N7[眜!q#]v`pͩץ$ZEPU(n5ctJJz` 7g%W!f'gT͑U9U– b6ki]~ g /=gzyMcv5ޖ^a)0* كvTpϾM $gZCQ@j2 $uĽbΔyESYS_\WIX{ M1rWg0 Bnԁ#D0Wo;{Jc%%w5Xt .U'~$=.%1ww7ץG.!Ka`qjoJjts͐Zk`?tL/M9׿u{>zOӕAU>o `dEm=Gcң1rٺ(vn,S6yVrZ Xdn!~"ҏ) nả7$6'ū+0D9a0j4lD6_]ݭ'&Ү D4vГLk_fa=UqXs(5h.-ڷt &-B}5#KrԚm £(fȲ|uF6Zػn^DUtYF2yb_5LJ;qMRZ.J+9 XYc>#uv3d!;To-Ď1]2yCft3 ypmMG x `zfk]UzDE/4`'kapN#qmJpF'L9JE xȁ'<>ێ]ʷvI8B~zh=‡{@T;^?iCqmva30`$!*IdvX2$R ed}qn ;uCyh7lΕgrz@bvXg\իjzS&c\CJ`.KgKƠ厩WP,A(8\*`yރriQ}u8RuЩ0v *saW? mCT52 l{AO36-|xsT}g@P+[3 hXTCW8q.(+ڀr|Ng4<^_VЄoot;yf½m|WMq#pkD Q@2%Ι [$뙧츴Ϝu*/rtqu4ʃWLOMJp0[ɇ 9@3֥v,}p`0ұ|"O!Oj>}U\zgP ; Sߣե+=IoɊpC˨1jC1B<)#iG]l']G+.p$3YsPڎ5L;-g-9)`Ec k0^uvyCBp&rٲo sLA ca`= {XIjQ" a^O5=6!;%b%%a/~&M:yP$Z!J?Q$bD] 9lsI^Pˑ4=9R|󼯩)~іP0=@)6h̷du:E^aI;+̫[VxKdk׿9J[@k 9%Wf(.ۯTcy OTs_{|hԡ0OuT^k:"GPQ\'E~ut%v.[8Y+L) QИ{Zqg*aתs "jDK[6\-P*ey I)<>?#p=i;)4mbB&R&o,y5엢#z0Ek\o,k~d(D0}zM ?bEcaatQU\!ۍFҺ:%>Gq[3bd36!ͣ ?D[7;wbd(.DDuhۨ%x|b#w}@}&W09ej2e\v1%x29r$]`eBo9""9/@PvMYM3 J˵ Yӎo/3A A#L-S/%C\^C҈+=3ky IZ_EMTqO/Z2z0S̒4ap⋝1%92a2&|weʃ8؀3J2)N?qL23;}ecf( at ֶzrwOD H_X %l0!B$Jbb.$[|ͮVD#\n=|}$B-Ow%ݛOcOo ce櫈T\N2y)>bݳ?X6vPU`"9ZE1'ywVw9GUͅiH}ZȱMLOIZ$"C\K΍/y NfOYr?e};FOv7(N9\+{tFwds|nz Ѩ(na P<]/7>Vs3B/vDc3AujOgzYy  ?*ì 3[,e@ oQaڕ,d9@>ItH>jӍ֤Oa)H2.,ʛZUSTĚa<)?@ 96i%W EEMT%Ud&( kRYatR-iQ@A»'<{-6{}^/gI+ K_m4g_O*zs(No;\ҬOTۿ{+ݍlTif1B2qAЀg_OOY^oەCe7dWdrH86 q N->?}IipG6#?.N x57feMVTKO3>.|NnE~% X9͘! ܞjrQ9.,ii K,^rk|1=u3 h .iY9(2'ICב!h1(\8 lzը2c4оBt9 dF,V @=yrM[q|eˠ8.TkMND>]k-f3P~I#A5?_p;g , v*k2ͯyWTŇtWE kR_9=u8.uB{iS*UO4D;P?z\_W9y{͌QiY3/O`~'4lQ5 zۄnEj6qߛnUWHZ5#dVvˈMc8ɢC3f}G\yir)(2A{b35qU#6Zĸ\儇 (#t,< bZ3y (K)ga߂T[K"(̢^uJ |h1ӏ$nls|6|o?^g~X١@t*rPEȝ8έ_fYU!жb!u+[_጗4ҭ-'\  v0Olk< >=pWɶ>AqB4c, Ѝ(οY>ָAi7d r :Ah8'~H3R k6%ȥ鈱(cX,r"U6 a sOdMAry쮥Y;;;*J%"{y"bJ4X _K٣3Ëɧu%]XPj\?ZeB 3Q겻[\>u`C~is~{[Z”Q!EϜ.Tmvuaús_" Na,HI8[!|ǥv,5|gGRҠ{2],2=FvŴ9lٽ(ZV~##wPBb K)S{STߗJZ˟`:5p$(*T|m@Rfh&9:ID>Jg# ] i8&eǓZ.&[ox !8CjR#U = k3ssF6Dz¥e@^[eǨ}.GȬ7>J!ra%]H H^R7ǼρXd$ysK dOQ&uԷ{gD`Dq$a4/43批u^( Lh~ݣ/i;%ϼMa"_bǻcJV*Zi?Zsj} q8Gl!O7/ 8麓ꚐLɰ zh 1A"U]BD0fЇȏ[ QJ[co_tD9Y<w \ZUYnJɓŀQ0DJOY'*-9jL%bzJ78o/\ ,JͥݦuK*dS{^C9{ZrdaZF2lE6"fcߙ-\Pbpgg .M[L6LsR U҇j'sCrՏ]OxydaUJ0=/Ն!;× L^Y}xnbZ 13BQFlxbp10P6$Nd lU'nUᾂWYn):tNZYFZ'}|g%tn7"K`mbe Wu|ܒ]ܛƌt:XC%E VTOLV铻 :_i0**85yX&۸WOB;*Q*Y/җb^*xisc $eJ;>3ƒ7 jqF8bV/tA0Rrqhڲr)}葌D4oo}/k\?rꐦS\c<[T.d3S 2sq"ȼ<1l${|ԝ>@ ԁhや%6'cf6C1c0y-{Oi6R 3f—ԃq.nj^ _zh8Zsv,r:nK7fsuGb6$"ƘaԼ7ɸufw4oG b3" ̈́0l@}y=>_oG~dgy~]_{75JdHBtI/vh$BN',$}ܵyJ:pt-~9~t}šTH8˜ڒz(sը?嬶]y9Eg=tɈR|"<3A=(qP-R13y5&ϘѠbn85}FQv4+9] 7~jY#ҷje=)deInj3~?*>l]u4Aq8rK"Ug<;9MU _ ᝑ3{FK>7z;Z$69FM<3 фي)ljwo}^$UU?.'.ΡS=n F*t͖a9EB&X+d|.uniJ`zџMw_y7{ RB~F^f̒mv;zUu tFDXCUj\^^z,!\W@J3׸َW\%BDȏe0,=y@E&ڿV,CDʽ^y %J}%qd¦%D ^^qRrR3%Qa[';I+ T@At,:NDBHmʩSN %fuNb`ھ;"rއ1g܌+]'Z:zpy=Nqǁl0Sոݢ&'(-iWQ=VɉIw6 0N̩> BYQ񓔨C סA Bp:KED3z]9Wl1#_.EWajwYwoaxSJR@} ?owg_3'/ ؟lhQ,w'RPD&`kqKmWX67FRL(O - ؏hמpƋaDCEE2TG Rd')wH4]VZkfŚEJ3FuEkP;׈3t1ÚBTӖMbR۲eOSU*+ŠB"S7Xl^'֝]$KEHR3HRYck˘rIP bhU1'Wov`*e'r,roPl!j9Ofx{"&tIW`iΦT6Er43b8j ľ"I )g]h[bI'6/&G4iHU|~HU (T g>^EZ?v4wg:ʤM:dzOFͤüzK[8AmJt&[x;WהefjͪK 8 oL\Z7x 6 Ha,br5"e-}{(tnK阤(LAstkc$PΠ5>LYZ<:ayc]}60Mv(Jތ&ͮ9.6{~4dt')5DS wB`!xeﳜ5fU.v XKjPZwġfdkDZHDBp76wTIrc]7&#ê \ݵt&{M`гKLL3"^x!K5#9Ob 5g|riEfÍ9=Je'KbC<{gdqI#9R%zW'uwȿ~|Ƿz2yC=k;‚ @ 4:[!beaܐ2C;eP',[k-(9'm8 :gD3!h>3Js~chn$J;rga2>mfv{ְ.pU//Usc;%6*4gIѳV)Ye>f'(Qؔ @%g^cQ, &.BAzhLq85*K PwQDϤƗS?,7HE`ex(йnX,w3I[C)* @̰W5TPxbs/GUl7tY_ok i.PiNSR\5HoAw\1 KfYNN}r˖W]#>LjŮ-f=:K$&h5bKJYGClbFѽDl»GRR"tv;gHtavsvHavck]}9kYiL;I'ObjK:kvODNDH2aX_c2.tģvfz m@0lm +Y^K%eO,[ǓT'zOU dhѡ1|}u>i& tS [0:n7YČBcjD8cdL4rv+ O(>0FV-AjR~A*d ;M%Hz5[݉͋9߳1%}J\N:STlj`wPXIÂF"U(چv_U;A)eDBp-z#)vM/(XטҢT+?Ole' BP@Z Ϛ!v1qһ{V>NXkT#Y8ѸfR Ed'd'1/S>zU\Zohҷ(4Z[=՜k*CR7V:?|='2 "ouD(Gy9׹W//r㲓D& Oz{.Ƭ6"CVΣ_*3DY=?&I|xQMn=áDrggKB~7vJNԒpJ)շFIp2=46P$oﲟ9MHlrۙTT-U׭4}/[#R0=uha} ooK=G=÷82i$NE;ƈ 5bZM$s2}(YX2v>3)AU_0%5jv#kmrsfSZcb)\T(VB~%(8u\|DvF!J Y߆riw3dC]3l4ڒ6 7@Wj"qZ4a`/Npn%ƵDH]ymH"X&)$6{8և\x){໫R*b#j e*B܋z3 gy+m&}n16_Zh` TNwGRePB,&|'T<`Z OvGBí^cuu`QFOΠA-|>]0hmJǁH"򷔭.1E/'#Y rWR)nRzO$!tAþفZyw G b9Lm>l~8Cpൣp7+539!v WPs CټEB ^.PNJDU+6N{m$CMwUci@_4 }ُrː+8I}aV+yO{DsB g.*^yr2'Ki3> C.\NQn& p_Yt}5]Vd[C}5ENA _uHW?׾r?~|sߋe'`eZf-e'+yyp4J0mùž ٮnцsa]q!@y2hw`]t.gxڤqD?K5^5=L/V%lzg$ٳzj%S”yJ;ӂqc!$ϔ':%UWbO^-Xmrd6rÐHr N<{tMf+KYܫ6Ju&G"RCjz?7ڧoE!@|8Ud|c@M)&1TK[0GMECuL0?DZzoƳ M4&]!l) z'[4gu`15RE{.KyK.I&ɩ1yU 2o[G\Y]OOV-K@a@4R:mF E&? {^a>ߏ33/$ӽIޓkxgńEǟ9_ .XyӻDWªh\ܥ'vš.;e  Nuk?JLg z&; Bnr=Q;LvZcrOI%(ӓ&r3b3T[ ؑ2NK^9Rqx l"rivqX(Oª'Fb甀rsnxkg}3֨fr5y KۣSw9>q`3+R=Xql.Dl:PP Ը]G>W70>(wߡGQ 3M&K~xgv/bO1wYR9ɃQ=*-Hif)f|ON"ZH҈P[RUm?rrgZYg.R qNn7 ^9`-~>޾cPizUsF_;o7Y";x!T#jz8Nxһ @; uƻƍsۻb"g6!1{DҔ{>? 9N$dc2Ue Rgl`%m 6T@3D,SW[q|{E*_8EARYT~og?"M\ģ(>1OYwCߣYڃYʛ+QȊRrf{G" Q8b!l!CDE&SGy! cY01yb khD\L̞͐`#Mb;436sC}0~Kf6Uͭ'DS?=@B,Մ:fSQV505d;N-k$< <,`Apo{Ds+r{ Gdǧq|$jyIg1(N^N~IE!kЛ yxwZh.WM10\.vq.BCw|P;(#6<C`]y>1Zhځ`$Ш CyGg=O8>m!y`E(XeR4/=қ\n:mo}H`K:MSwraLFЅZ-qUKF8ǖT eľF.mA1A s~XE%V]ΜJl+( TֳLy$Ziq^X_Xbro[U' ݲ:+F8k{Nj\ä*ԬUbq! Dh#ZTdX0fOԡ*WPECBTyIx^w3JWD=@2ʈ4[qo*FYh9$Ѭ\4⮚+btD17BsuV#a8XÒ&oL_VΦ3g"zHՂ,dmw1gb|B=%-_3Oq|!?EO_nKeՖ^/67yB3EowVB, ~݇@s2#,EX3,LM0xFJDh-m&Kwܐ fK7buL1t_ JG#ݖfhĨQ dɎ.0ҬM䣡F%R\-Tj3W{(d`=3tӳ|M9ȃ\no!dZG^? t6YsֻwUKm68P#QMp"rZ+@4$ݐirUڬ˯,\L)sh bU`%i!Z@ LcHI hzn`HѰ\_=>{1 znL(zy:0.R08ϑp&Ij>Q:zѿM7d֨Ѯtzz%x ,5j KtX87/- VN;LiL!_D m;|wd1\Ͱp{#Orh{hߌ2=:'4kEZ|ɑz3{ u]Ӎ !2rn_>lїgm6'{͂ j;%sngj#rx#w*PH=sP.E_&1A0.IҥY&h wN|G%;I5)Z{o2@c/ u[Ç>K^*$ь5*Je!3F,hvrh[jHCjYG~YTU>_82JK 7w/e ȑ'Y+RIv]1kJ` (xƆ=35%&=YV:|PSƽ.Th-8 _&x*ř_$$^,z.R<*4 ,cZ=)(} \WZ4MgT*ހ=_dbFBVwofNש/bVK^_;> =}p$fߓ{@ |vkg8#)Aaɤ(e0?x0[>:>c'(a0-R00:}izIJ`:OPXvV?pޅtXJf V=䶃NcK? obBaLIî8C7 i;vi+TD|Mb! k<-[;m[c:U) 1[ kt3;!ڪ:pBJ R`:ЯOlmKy0\-TM%偤Im6+&U'YO"dz:(.$-N$Ӡ3U+MS!ip:/B>2g%p849M{L@1WDpFp!Ys"g'akafi,A w=nƇsյHPC&ͨl U5w>j}-g@]91eS` ZbޔPנ8yweDIIYg>Wm)FǾI_eaE5/ri{xs/qQowLMsH%U!+~0rd\Mj!@kj8,R7tU@6Ѿ 3ݻ,A/՝>D"]rV' 6F%;xdV7y(nX(4Ӛ2X36P"ڮ>O 5.=fJ Q6Jf(p]{jynoJɯ./ee#]FE]ݺ:%x+LnÅJ/-(+9V}_njWo7vrBYsJLNiuCƠu_UIMN1uG4WF0su$.7A>T(\ ΒNVQ_ld\;*WNqs'{.hH)-1W'gLKnor;xF~P?;NGX]+?/1d~{ q<'ALO*A~ _!eW bYA8ݜAV5"cm9"baN@d'8Bm7Y3;z=n vq;We0*h,Cx*d9BL4#E Il-qt"j{D@:h`<^g?Jy52IKk{`l%R-@'Ojܥ" Me CY5r{;w'U2]S2*XZJ158ݢK Z"c VյsHv-9QSäC:O%)^1\M0ڢ,w~+B(&h .:y.$1GKk ADzLDDhKE"C)$^M/| }UCfGO)MP%"bH8Essg:j8]PBkpF쮝%[e`\Pi7pa+g]‘4Tj"*.'Sv pBF2ad[L[]/EhTcsw'4 GurݺelxN"n@yc- Ӥao:C_ػC<bDQ%pJ0'9) |FbgeQXV׹ЮVגGfq5~ZCpȁS=ѩv`k7ϔ9[SD&\zN& =[7i:Dڿ0%,Z"svx`.aO'I;42&WMn%Ii01FP3JjS4aIW7+wM]#Hk -bgv KJK${5ŕ@+ K)\_S\Q8T޽`9[&s¨u[.b~nUznXe]94g֐ zprݑBFu3(eH>9J j̟%!h\fC=ʂVBᶼ$lE-m$+Mޙ]|~ͪF)0Z/P9ڝߴ5T+ǷY=> q v[AO'0Tm9fI@o '5tbV$|.@rzEaDEgawVÍ [*ì9- ѕw:aO`hYs:\q>я2D,6TFC,өkonH Ǧ'8^rHm\n\F4+Ku*:GJ9] z75:Bo+5,M,r}Y*+&K=1۰ Tm+ծ:5J" `gHwv.FpcgKa)uTFgWL7` ZVLː.OΗ(ٛ>wjoR/э0BE+EN L)Uq:Y3T)x=|zd>0Ƿ?T,/34wh`sڧƍJ\A"^uaŸ:S=MR"$B"/\o=&>`(a7-q%MIKtR"< PSU6Y:fg0~Ft1]I~"{m1''od4 s=@߉4SýyN\{JΜi^I ULӦaz[)(jл2{Xrw!*X-Z?'2ڧOt%J=0C\H_[CKJX1nTShI5HaR*\/h"&gSȥp&KfO#˛SHA#)]X S;rvz^vQ8_k)C=SG")4wo[&3! w0+xK(."OwuyjR9TY`_CVx_]PYߗA)I^֯I%vƘ&W;$nFWC?bXMģ<$t߼~6iyxp H2Lh;c)T[Llz<\7JពVLOJ73arF=FsGD3mS1<4afPu-%M`]B!NlD<=DL3oSQ6C3B~Zd>ȒL 8sа xR&TwHÂ"ca~@ ; Cݡ 陔 ʼnI$)UiZ6VF-G:ЕLk{d?yu)T$tXS`[F 'vncQmPd1Uy{V|FLJ3}NKX=Rv~0Db.yM4I1!JQt2uD3MuBAm\OH$abjdd4Kf?5 p3D&FEO64Y|/H=-2#N/\} ?t&K mfFܣ~裡@Oc Fn_=~L!$I틌\l{?ԃ<{1{ǫd71›@ezӲ3VUe_UeGrݵ{XuDkRQ6WT5AFt#D2#UUT0WO:|`n/Ȧ&"#}yC/][6"n_Uo)(yɫ qz("RYEs@yd:]h 82>(\DOgk 薞ju#^]_KZAhNJ .ȊQ9U ɊzPg)๺mGޅL"gJ,W^`b`cdj7O6yq Kv0ٷ^6 }L q<R+cC'|7yɏ_+Pʱؠi{*6O+ciڧ浩LUc1& `PILp APO'1bbzF@)#ءdaeSx|C9*\"TDi^@a kqraVhVzyxӔVlHi{$Z"*c6]/j($X^Q-Տ&8g8E:2ғvGѡG)9 M< 0+|Zt=5׷u([Y紗C^:A:9EÒr8jZ,Q[nu5;dx Kq8gtɜ0VDdS~>0* uYy!ՐwľrIO?nw0%Ng/J|Di7h}@ %L`Ε8 hUk'6|3xgI&ʭ|9{Ma}F-jr22~V9qq"J;7ZF;H$DǓ#&p$At69Kɛ>XrXSW.!i∈"? !O=oMj ߷hkN +5U +eXlպ5B}oP(%B|fQřWEP 9<|%ب΋ԔM4q懎xoo9?K@@! 6BwB4!<*$Iߒn8[[ΥNv Ԗ>c.3:V [˷m1=2f,,"㋼f鉒rGd4lFq<3ǭa &fҙ2ꢸ2)/ާrtr=舞 ~NPIΤtbG5c9bWlgN+diW__H< *%#EIEL)A?NJ˴ߤ$|{0^u܁  1lccQZ"- 5HTf:(c(# ?eu878gbhԑa:?l{fV[gmjwʓ D nXHhBXm.\iyXV*.AmE3z9Ngɯ2ǿ2{ݏOqyt@F`5j;nV6oNu ŨurUShtfT)4(zJ"madˉJrN4[bjemUՈv!`ܕ7?C|~(] 4w-֥!5)J"2y8FV$q{3)!g)}g݊1PKۜjt~Um*bIC]Vΐ1 Ӎ3M5t,?*.H b:=_yV3Z,]w䤻h;v);_Qj[MFZ 58PtӊBAv\C+<yɶ P$Q5cްYW) dtm2tЂWBNʉK{tdj؛NՋlS֞BCow(s TLo\BH^/vVvGϓx F?p|R8;y P"'Ri ex)aUɗY(|!M+Sq餃`GhUB(bV6\p~zdmgZZWkѐܚ^v3]4^JqB!LS`]3dxBJWWV TD]ŝLOָn-|Vщ8bЋwTKR&bMUPzT!]-=EYQ4ql|2u0 c:"jˉJ"G5IU9C7B*̺USє%V]!#ȱQ cNaݲ#b -pA'%Ӓ6eH>t6:NG xjS~ŕ]5Y!Qj:Yٗ !@Fl1P3pYC&>ٿ L?z''xmAEl Lb}n\>+`$A'* Z5Nqx-v ԻE#u"s'SwT"uSf5>Yu*8۫YKnZR%\͟q`AE||'fd=CCjm7N^6w+4{^>J_8=h\/<2h]gu`h 5eUy'O$cGD^<~A ơ󵄶#ٞav'e#6:p9/i~E9V9q[8,d";GuǣXn yu2]ZsZa̙ؓl*+IńNŵDrλb~L[lR -e-UjjTQV5j̯&=2#Dw0WlpAqXB4>l xѠ׎zIj OI.uyM%ЫFfR?4|Sqz9wa֮QlmiÄy'YRUb,rf7A)y#k):l  q*(ۡnWzӀ@}|gpĈ5jEz, +h`fj% 6o|@OG &scz?+Gr'HVEDX#dw y'8r]Tx?n `nWOeҞj\Ρ.>P zG6hӀvd7I#?-LGp.CHaOKg`fTFJcm):S5J#8M>mk/ͥn"-QqB Qsdʷ[R[9>Bmj́ z-v'ax!g?R %/,rDg69V[vz}Tޗ>z5yb麹-jpwX8pY*wbUs_ɖ#05V07EΟҹ 3=ʊjܾ3n<ꪇ0T!-4CL{3ۍI\PAalS蒎w4 ri:ig)rX>BK,<^j=/b;Gޘ8𱣤> As{9 +b̦S: 'c$WF$7 Eԡs6#$j;BK;5Y$0 ohb Ni!ְE6Ty64;hmAMRq%N31ӵ|eogx*6o:  G 1F0qL ֑m3R0хR{-4diiy?^Etu[K`陛!G])9je_v -dnqbMpCwІZ4Оqw&kF}?w*t*vGmEx~⸩ j=< 2iZO$ET,[Y\* GoYQԫMf_~6C,ʞ LQniKTGr̭k[ .w$Ɣѿvyj*Dh a{K*;R})-xMVξbs%c%(iNz▅m|3 !.SuWfo6+ؑa1"i3nƯds O*m~gkuqnKt MeIvvNX&iTfmG;?in3b`DBGx kxqD^3C^rNH=K'ti֚vniAOqQ욵Ÿ~ efn[.!gStߓAp} 2L ?3d4yyMi1OrϨ:"s+s._dVP *ێWi`Ir^k-'gYѬ&0v*-qziLҤĖ|69X'ݶ~,{?(>iJҥ&Te4HRU, T`CScLb1VQrE.fׇ-a SI|>*3MH~3"z<7%]v/ +:!7o>s};S˴ eD]@T`|;[zf/,'7Pe̘tpʴ Ր5zmL; OՒFr6Y@hdwj>Εn0:0T wHqAkbz`C1(}9(a ȈM9]{QN6؝Sp3YK9AxvIq3sx@noh E-1"a ?CcwR!K6GPk=Vϋ\k(OҮrM.׃#vRek:K'Q8lpbRlЫ(8=cE;Jd%b)LPO)"HYlO`v>(q:3|iQ^ћy`5o@8Ύ<&fslϒ^P"s5 a/"dj5P5:XtMtd쬐/\nh/ΒNJÑ_kܱ`u_Ǚ8lC!g Ό"cRR3pnň,L-ʐ[p(ŚEW8 ?-5v 8Lx -"9yz*~d}%V#'0DnDgv hS.j@^2;3FҞʅo8_h%:zGN} 8z\UW{/ϿqC|MLab )'q;/{>ͣSl t-jȢM ;NE@.Œǭp!]_6ʈGNdc*Ak2LŠ.L(hsV#K}qyԍM̫nb'<J"^='1 +{F|6?Ƀ5*N3v%`񣓚/\t kV_=? 9 nz@3“"~׍y з@Anz~ aX<ɘ.(!*V]Uo#/8%5 DOрF!Ȑf#%Yƀ4u70_3t⤒T-g3L lΊ}RpvA4):*(i0yRAY^.Rqf\",VgBr,; 0AVcVG˶Di K􈬦Ô2gH7HNtdW%dNtţ5bL^΃y|_r$ph,d {>4)N~6Z7gQ9a p \H}q<$lw}M8_rOW+#o3ʴ ]c]]$>e\=\R`'?Ubվi-.Y^O.t9^Z\ñ_ F_?u{d%]ᥫ>3y S6v'E}@;Pz'ܔ#O#O es8:!izc,!VmF^{b@'ōj-/;;Ncf{Eekī&G`шz$[$lQpxϱZ(Dѓ[q'Ƞ 70'N]T*v$s!Q= { qi8qk `gX=j<sm.9Fmǃ[Rekr&K'0 ZÄhQ}yk1>R ZqlipÎ%5 3<#F86r31+%*gܮvG TrE)1UQ!Dm%%emV5|~u9[8Q@<:Vgc"J-~UȻ.!qKLУKsBk+6y?}fvgdfXP/G8?8 5iVo%CK@=.Uo.nfх3t<{y+]2T;LN) L;:R򦪪>ept<%Ŗ͞L[V 5[:9M0jkkAbIP8XGA]}u\ ,:B!-dJmtN(BOSɩQM:msePA c*59( BC& Sg 4@98cMd9{w$\$9O Jޕӡ Rf1DL/Rsg@ШYXp,,!rR&G[* 8#{ɆzPX!< Ȓwu4Ut{aMI'goQ?sV̥9":6K{;D bSB0=E9d9⤤%%F#ŷhL~lbP yrj6?u‹`Y1q6bV=26ó`N63py(aba]!׸]yAw+\*Kf?a z Jh ;L;hg,/0ΡN4K( b/@k0Sj6HFX(HgZ2P% ӮdN"㬠 t$ގ* $Z?b # K&4#=rIEr!ۑ4 OB#\32v蜆sqk@ʞjf涀5R8="]w:fbKM\6F@!TJRl^|{$j -v{9S(ɩE4 7\Hn vf}dd߸α-pZ9שosCщL*4V:wu1Qu1m(Hkس A*P#*'M$P}]?u2i,'E2a5~GX 2dg8fmGAAbVl8` ?t]c0yE1ai ZjͶAAu-::BeZmR\:ڧr|zq#"ݫ߈HkB،-[wvbOH+valA u5,Ƅsb Ӌ8@ޒ_LyR-i=JoFOBӋAci}M12&Y,ڭ'QQZ3eIץ&q8d19ְCtU Wa򮓸70ug<%NgA5_/kMbD|dzcգq܏%z=ztnk;yU*BR3V}V}槏b:~Zݸb٭NGTEΌ`%iu~K%vJ 7R޷):RkV@)%)!vGgPg5&c~Nt{[(35KxO~{, Pzx wETXm:00:>,Y+m, }H5K fRNCG= dl9-kLŌaeC8ONx)h:+}9nt]fQ 0( ֒_hkȉ 9Ь90<0VH'h.(} /gar 3xj1h۹!~z`{oLH>t)D}k*gSi]6Ǜ =PUiшpy5 J>"od F-τpgkCE93#7ev wgh)%b?V_^xվu;58wJ$t;q.#zʦО/h2Fw:'N5:w$)7M=-eCOg*iBȝD5D/ހ,6!zvzVVG>@+ rTa'![%13Fl~Y|)1>++5bx W4"݂%0w%myUo̘E,;Aw-%1X,w_9mޞxQrl}M#1tc|*+%坒Ks_w-b^Lһ8;8 aA9)FAe9ph6[XQUd[,^yA#[,3\c i}!̓>Y" tSÆ_Zr-Qp:<5C!\~>RWGa{5HyQ[1Ce' a|!:O}y6!< +Lx*Hδ55d 4-!8]!mhPJ9P'7&=vfRŖvX64#Jo:OEc4(^;5&Jk{-^5ɓdoit)kb^-Yٰ})-0n9og 9,OO"m7``˜қ\l|zo={$`]a^0<L}BKRI`{S^DA8!<;krWrKw[/L{?:Єw%60!9d &sO܃5CwTgrSm0N64^4DJkl)x>5YF{bMs{~ꇕbIR4΂]\4'_s&N)}җhW$;@pEڕoa25;}bЩuY@w)+f$fah0l oK~9O~.O }%a>Ɖ}b;@Tԍ_b9Tc|<6`zgJ#3Tвy&.@u- gcW"0z$78$艓tEg\9zؕw3AӒ $e Ytm-<'Pp,xVbZټYO,t:p):Y$)J?G^E:I)Sμy ] m Rr: PyQOW !,,XNj^;[lݕ&%-1ךDWj]ZeW2qpm~8#x]m-U]dRѽh)z@Zg%/&YLH(Q~r8SU{SX/oyg,1z[Uq\y c2捅uԛ0MezYV0#.1 F!$(GNҐ">=ߗ1HwZ)w5; d*O,gy0~Au2_p2#5+t5"ewg<<Ŕd }[ ',zA)V &-:Ýg9/'d݅*\&>:v,\HZ\L!rc^Puǖ`9f1aŶ$ R+![K6{ǾK/Fށ$%vfoq^DD'G9h_$of }_u_ty)tMcNn{Nܣ@#rSheo5"c frc), hQWb ڌ@5&H?)RXmڗ szP ˡx ,cN@f`fSSmEZjV;q45xLw4{KY-aX uhHr˘4V)I9=-yRp@ M?nB/ӲrT"QB@pxrg*Cw=b)5/ϸa3CƥrOR%W'G/JE2eCploϠPr>D(C>HN^V̪VHrZ+|lM.NXb#j}o-އd^,f\m]3om߃o}¬žWm'ް&%ݩا |~*9~v2 癑,bє "HhfPxo eS|Dw[gw ዕJ(T ȱ|/ >yB UZBP~ڊ;,UG6+}`*UY\HNp6v$0|Ƹ6;Tz{ˋd'Y!1Ѿ)gT0WNSj4#}19EAEn.=#)8һh]+~\?'t2l8vG1,)0h"س١͟Ƿ2-1O;8a>9KBx4,ҪQ(">؃9 |ieK?C.'F /x[Kz:Xj{=!E+;O9 |i*ExUbe^_%C弯K1h$|0_]|2O?AwA@|Y/׈]R`d(M hhRM=i#ST-Q iZDIc X)-)Jł;=Y2UL$ U% .⹞!1643DJBŏI/fpAv%`$L2IWy^v341O\2' q>nG! OX4PaX\ggDh ]%S.z y\=זI!B4y$i)m5n Nz^g@DBhǏsSʁ#q~ Q*]ymSQc"='&3; ;c4c$M$}Nd9hs}QLhe+PdwN]ǗP j) YaP?s.T|]N웗b";*7P;)|!/ Imrs&vsns2f^6p`U TLrHlݝRbR -ғf' `k=QTx9itBRǛ ԥ*Xh@ת,kgńN#&ߤMĽƭSR8ˬP2 =iVƤw[H/M{}bmB:N(=_C\_d3s7Y "Lsfi y@Tv$`&Ϧ1LW񑢣TO.B|pզp8æq͝#LH4KWNԌz1"7 hX5u}>!5P1B9:'O GXLtBuG)".veqCرEf!@@5&Y3}3T,<1wHi?pR*fI Z T[6Q2p I2|qyj_WȽ3{ȍtl }{Qʚ͔_׺7>))LvO QBǿ2WBcw˗w91x.QA8 v>}PZڢt ,۴ܞ΁ʫG&z`Yx,{5#Owчg׺-K2#u?`x^;Un V[#=$@,?AzHX>xm`9e R~FVXPTF=2]sݹJP)+G)ܬ@j͵絪"gQw"qW(jޖFYyn(<' v&RFiԋ0jc+}}hw:]o7$z##7經vY!S׾fIBtk^#uJ.xۙ^j alMTQ7HYFX%ES^o{S=rS}2X/slUWj?<=l/|). *f!'emQ2#A)}|ey-_q jpUFu N T>ײ{9(q|ve'4XF[a-뎮 %_j"5B^D.GesA={˶r(̧;?e̟8 BA0Ā#&OzKOY`N T퐗o+}Q磌.>4$UE FDst$Pa/w""7[Y.ӚAW֭/AgV m_8LuXhj?wbxu؞&sJ% Zlf5W# uNXRb>O[KbC`E.jIlN|P-΍i=ӣ/V"l!1}BvSVto}./N%☡ȉ2篻K{a9}]+бKrtQb'Gaңr`Ul︩8wBc1i"],]܀A-tiBw&cgAKG+SiҲ@}~}U¼3Oz<<֙E $(kGN ,(gAI?%VmzZFnf gѰX9ZV32-& =Y)?o'ZN~~nOK\U*7X >Wrt:/|-OS"JtU[OA *g2 9iKfwL_c%fDFGRQK7Нrm̔ĞS A--(CMPCS9*> PFSMTB3"M3wg]3ϭ-Ԙ=1~S ҌycAֵMTs5+gFg=|LFaA"&+j#JQFMg|x:U" D\haݖIU |R[D'N `HhC[pkCK`La3Xݺ'2cuy%1Zޮ,PC4ٓTE g>1~M tq^;gvڽ䥣Xxn@щ}]~&o6xxoCQg.po8FoJr|T&ekQ.t~PrLZɡN~3pvSG1KCyEi '6 ycKյ9[ȏD_-ij KJ0)ko2K)]_0 3|XZuo5!{:PFBTUT@^A %2=cTQ.8]e0AK^zX򩫢_Ze'x@I[t%(wVS<ۄTnroiƩ$~ ]%̈́nz/R2276TU󃡲fBC̴d.IUxb~MlY%#vd] &2RqTU,-- #wrf]v5~D˾8>BIݟuspnPQMU2\rbz'Z, ǞD.Zݩp\wF}~eK_h0R_<']!gM_Tgv4$I|7G?8Џ)*?/=?3?~KW=7yfI? K-EZ.{0D)a;i 9 ^zB7y_q~-~9q)㴚)m/Pp:YH\,LWlMr#{7*^d3 59t]Դ3SkRf  #ywHs:9 PYfXu*<Ù՚bqwp)h @yN5#Zm'?`hRc{,7p*+2Wˎ |Ek_I*qEP?͏ABVC\ E?#,ܟW?gz) x@yz@,,]^x* XAf(U,5d7mVγȽf}D]$6޻>1:/:Nytݚ(?;Y|L|[?x{[<='=>RFQ$ Oj; 9o.1/f6Ep0A0OI H63/1n>v93W,\Dz,^{{{O4Bѣ(P5nj(xE]A=9XuRjل}LIģ!,c^]Cs>7+Ǒ3{w/I1rvMP)=q-xuiX.?GK2ScᏯ8g&}%>U]p8tM/Fs'mie371p`VZ?eB:Tkkة`ǩ!OJ7y1/LH|]Xc-:3u¥іXnbļ'1֥[b& y (s#΋evZ?F?- TBxdC^&"0k-Z yVԪ42[ NO] E NEe䥾 %!Ϝ0BP+7̩fpm(/xh]oE/##YmMЎR+:u`7n}  Eͅ|i Ibs .}=!f>/m y6/}d=VW;zSI'{Foe=3Mw\U<<4s;PBbZ*@#OxAFMl "*-06]rVW Lk@+3NAdz䈃hh=vn3*.Ȇ*E:5O̞rG`]ՆvD z5|z"ytJ =:ä[c\` Ŝ{)rK}B7̍2̚١PE4혖!v洧 ^F (tJH#jwULN{޲P>r^, xBnՑu cmE0 ry_J`#*>&H75MAZs3D&tgqLbBU^XԚp X;/nA'=Xi_'7՟yOe{MոJ]ba 11.dItD,Qso+T‡џ^y@?1ji`@a&cJA 3v)n PTu3,X ߷n:E䪃6ͽjO,Q &HGʈ< i L+Z81'D۞04%?4Nz;|Rf Zл ^+t{eUӕN5vQ m(/ )54-wSi,W}6hdSM9hd ]?((MBSZRXlyb(_"ydK `(R8ߢeD>+IVW%;g㨴PF8?f ƈ2sOŰ:drZlt$e~>|3:EtI}o??doZJփ2:IJβ2nAXK͇'g{9)3%70={w}n{Z*us& Op'XC1ι`|<aMPF#63twhkӂD5=2 zyTdc(` G L-: > &7*N!&^һA zVTkg Sgta䛖;{r(R8&*J!tzзfV:_GáCsL݀21[l1yD /矑JTѓuܱԂ8AF|0y/ѼHWZUW,wIݯi*فE*#(AM r V~2.GvQd'xjx<-9=Y0S-^&=ufevaQuB@nN@[ʝ3m׈YʏQrcRPљ Zr&Czeiw_DeNXia(SsӡmpjeYh͙/C:R,`a|wPe0DzGSs{ L+ç~U\udHmO ۱2٫xr- o,HשK9Xζԣl!lbwec(weM-z9FTAլI̥H?۱g'Opi`dԢcyW&aQ480O{qhls`~z:<)윘R<0Y {AΫ_`Пe({PUM'HJ3*jo *o7k?k]K[>6H/;U_7mgMz7V ntzLO!xq(2'RULJ>EAo8$!m,bTD=x֣ hG X Qs)O4.{V?̾ia< O#qjSddNZJMBH Ԏ O,yUΐk*(4OMafeub ?aJrRX IhV1vҋfNX/Ud74s\x˿sA8t(X[R4yRWVǔ' T-ED[ ¯^oGQ x~>;6wr+qӾΧ0Ǘv\?.ɥ]' LփZwXwP6׾Nu7_ٔlSo7x \Ot0QAx27%D*bԺL3~"jvKIS"\5100ˌn F4aRBh{qݘz3ݤ>w:.MG:}\;`&<ܚ-:@.HBvMRl9Dgn@M!=.'MOך]sU[@QʿSydDTŗh2[^ޱ4fK#s(Qff% QF czI~1R<iEk2Q/1lj6Ha4Ks]RH 3(j=yGeNs;6mwr J \Rk5=W,xgc2dM/-oW [<~.G)3CT/G_ؕ{H\ CgurG;>OOH+XY-D:-B8=mnڮ3c;ZV{ezus?5cך|Nz4W vOy^T1m}LFU>&*zqc#fvgy,6RMK6T7,%tmϞ;qu5KKbεXYeૣe/AM iJv}^&Dhq9kK4[GBRMTdzTpW5ʿMK2_]]ƲW"b95ѲsF_?Fjڗ0o-,i?ǍGefOg }EzRsY2n : T)VlKV.fO z`Bគ E.<T9ֵʙKE.ڇb,){iX _^Y1Sy1\0*ǣ\!?] "Fj,wVpBas w>=HޒQxRti4^ՈT:5ӊg0.[ h=b]v JcoJqNU囓ӧ65.e@v oƭׇ뒰AFc \LWj~! Y?tty!H#))!zҫqӰL:S82{Uwņ`9/x姎_ϯ"祫O}#E/c j8n0䡔\^Ym\o9]NN|wsQ'uFS_γ0^+]' bl$|NDӡh:]8 z#dcz#`Ti{8=  ŲUb1]%(QJ{aʙ#q! sF\`:'J!gKIh4r`pR Fu~綒NX3D*|hw)R9זV$\3!^Jߨ8  RriJlZxms(#8Fn>lVkjBknN!.K Dm,bm|_I`H=!u)j?17Ep onQzET^f_ZY<씘bУXXWN5SD]\-CN"? Fߤǯ~wswvY~|&F Uܝ5f֝oZXkRQýl2;o/Uo5f) 7 ;˰Օ^_^ʸ\;Ȓ_Dj 䶊K]rz*+f! vΒI*/)pgb6 APYBx8O"G1{nm'{,GsAA7Nuq'PB~cǚ [6iO-F׀ ρ iㇵ0#;?"Jc-{{b#:T̶ux|^ (v\C誵c;z6K9L6ul}̕K"s-37θ{H.IjJyfg-O , ZRZƴ 4ۋ!5De)JbuSQBy r6ehF6q{Y7`408@Lf+PX'g䧏fl[ 3y9j0D0eH .8^4SOpPra۹|Ɗ :n=z'Kc:o]&1̈́6ѤUT_XsP 3&yB0NxHHэUZ}aB4y92U)="FR,V2b= ulBHH'7 ,ڎꚸkD>87̞٥yZ)%aIV5m| ͯK3wxDo%C9y xI!'>?.`ϸI2q.^y<5ŽuFAl?z|-O{Ϙ |!^s4ؙ#a~G[cf<;d\bvTҚ?3HԮLF/0[+qb"ud"IJ*{"K&N c0וg}bڣ3(Pb/ kkncJ SZ*Qsɶo5%8i$*#U inNM4i`f8xIpfV"/RkI䥥kvS#c 04fʎ콱G$U\@HF=hlōޑG%E;łu6ㄜK`)܂lij2J`i6@u) kԻňUV\( "7.P] X7f65<jRh;m<̄7UJt\$爩зDP5nm6}rӮjI8f e9#kP^)Ģ/Y/=&?{ja5AzT*c5+͏Ca9([sm?޸F>5]E5v7.Yy;&N.IK˿=R2pM'g)k1DQUU U;X94ӫ4IΧߞM4XQ raXMłեj^cҘ=/;bI21 #AmH9)&UqĢq5 x%55tӞYey?:hsGyu&<л]&w7&P07@S90$n9͘z?@1ڱ*F9^Q5kOW{_\] BV kBZftrܘ8_[۰aKkH=8;\o]l&/mC`o iۓ/!ǏGJEɢX!`q`V# l7jFK|j>,g蠺`jDKӛMjy?KP#H' z FXtu2~_b$xd(]Ax~%+;_PfSKT_&qzSvoB"G-b# aI7 qpp⁝us<'-eW8vmoA#ρ{|}cRRGIf2[zr.zy2"E-߃ފQ[T gxQ{7Чz_P\1+QXoD)=}^j;4yRqIS) ,ʳֽ)h07\ ͖xTK9_ P)+Ev4dا0&[t'F'U"_ nv*lG쪩VVYCOsw"R#v49 Q,B$XxRCN'IO]ϩJqNܥPllE-}ZR!wz7$rZqF@{]:+lo S4#DSWl]]dz S<Dq ھuKNjx(A2-@7kkni0Vy3qS1*cR ᏦV[84v'G'/fyc?Tjvdr1>oF˗A@F.2󾦨)!:V >펍v1LVW3E*2+%̀=':D18P1[YM™ 4Om#-aJbٿ!j6.e֓=r*kp*`3vhvP:(np4cMŎFs*y2nUC;|eX_ (9 4|z;u>y䙮oz^hO98_Kcivv/@iKOt~ $?(/ DOs"O=S3#&#"Eiׇ]H~B-Ł$CɐԦI,L w.$WX0+I\F4qlK᤽q~9'HP`[ѕD 'l>!(k$a^lvvL|%Ij[7j4TCTbUT}>w ׎o+$0͐u Hz. AjGsE$Nӡ(LPb&M%}v8I)F4W<= :oF^c!qvŤXp go 1QӰ)a'fCS g I>nc )?S0UFrjs[Gɟ{ͷ~<"n0Zh W 8?j99'M+tOu`աv,DbMXrmD6yeoG^ [u"le2EPyz0~s uh\Kq)F$ػBPҖiH_F_LYn<So#NaQH\ϸ: GXj&WU4Z`FUA/ߐZk3xN:1LXSdX+:[8>Kg(*LsU~kqеđϩ1s!S7yܲ+Qz$dd'osяߓKz/,ڣ~խznfk.UsVU1 hˮLJCbuqn۹$=zMe哅psc^Ʃ47 \/do~*_̯Mn~oGvF}#JRfIz=_~[Dv~BwGRxHC'12h.W33D&-<)]UYe, SPȸ Mdtvw< Io#;n4)OO~:ƚT]IJYVsy1,;7:5NaJF~^53HBiӚȢi=`6i/2N"e5?2BYAym.*&ɹS";IltBx>҈)]hiZGiRN;M>e+qً"ٯ]&,I?"q)3jf~ *=YQտ6o7uǫ+G[¾eiU$Rp#'>n }ů9tF17sdheV<+%ErlU-1S+krcW'`Gr6-c;lMTt$2ۡw< ЛB@XUZ9O Yd&9Sa1' B;ڈ݋|6ND*/ČqVNrޥU= > LؑrO'HA%J(-7fVq<=]Z+k]N)Y@"ꏩV`V+F{~c4F85w"‚0%뫷`䲅%[Q;㈼^\G@iT@8bjZ& 55[Qz9voKůKo ^ևϏ3Bgq5+GX/ܳU%A\nÑ\YF#:991 ^BWq <+ !Ɉ-yM0v3$ 7e'jd[vo/!Иyo!7m 3s?~tO ~{/ډT}? u id\ve=j4\4NJ*Q ⌓EXċraj6009g&H3(p?bqv1P (,S_ov lT#݅pv| `A׮̪e%ƄhMefFϊ.v&ú+RGr\&W"ll-Av h)ehY_84 eb&lTŁGC~Zane}%xm<co^KNj]bX((6ڗq"Bbu (8MZ#^&F{$G^vxr:X/ݘ(SwK!u \9'Tr޽}.}2U|\=7,$u:燰fW-ocZ[V_>4J`!?|7uCsb}x1{ˆJէ׋d@tUh;ߓtxtn^PF wՎxqVAys?~$>7s6K&GGbG[vR9dk)EF8)/o^%^UȉpZ1˘n;rnd_bKਈbqy𯚙#a;hHSΆ=᳔xkTN&b[Z*򢔫UcLX4L̵)RN=K0t5UNCh4OERnN6fi R L+a>8qDx\(!}巸txr;]C=O-2+J3w/D/4y 5#rsMчp7TEtgc^=F*(}/מ(^TEWXb;:>3D 0M) &&>}:^cSE:x bS{1X /zs\X;hZ321.A0f j1F'YI^ݜ ;tN!zO_ʡjqGhdC`< V3GK%2%)cv dQ[? v&Ms !Q~KZ+j+MVC&Z@#޿})-ge2剚2   UŔsӷ-ʼ*~Ca!uoS_9gUPw_r d ouUe̶ fOb*yӈA/X`lFgIs2!,(撺;ͷE4^V@+i{o+fu?©Ix%2&zOOޟ߱GB}ޟ;Z0YS1b"xfu\}c,?lBCK3? f=e̮ hrm#N'Z5W\uS%+.Acˍ\S}$W6qx@ ^ E(I>2f s)S:gL*G+ۜE bVxb5IH`yF*f21ڒ[5*ᓦ mL*88]b`4.Vw|n5gלA5"* W]FL$ά)Qd$ܬC%q)#@hlx<=?y77?HIZc!ް<, 9wx20= aZM 'O;m)Rj4;~1#kLuѠ,} ˳=y1uz-Kb 6lܴY[.vw?)4ZMm?(uY@L"W} ͺ/+(^_auUv[xCq񴁯qڻ.S G2A3EBDrZ61p ,\IuNH8 J`w"("=HψKy<ֺ$cGLHVF5+,Nej1 BD!c-u V:@VM|C)c g HΒ ׮Q'QQ嚫J+ףH^{ĚI.ڞ4 {q:Ǐw>! `?pM,P#8WZ٪Bϧ+eڢwH,m"bb)mgtHWI>_N.tR?<@#\G PVU//{1Y2ht(/ȖPL j(/&yLbo _T-$ߝSKIՌnbڻץ>u2h|&Id?ؿW+6kO}\:|pș`@Ɓؑ>ƍn(g<rM!R]ӻ>K꣸pEbJwhpKbtp|C !NP%t ʀu ::ǾKe H[̏FŔh h }6^|N^ΎJYJrZ5'i R|D?P O|4[["kZ2plNEFb: #!ճ, } aDUfjźrº]QQ2;ǹ%UuwXl*A+q]_r,;T!c\GA+(Z H,F,cmqH0"^ȁVB@ZpƶpZړuKWczOkL~m QïEXo_}WBaPjxs9RkěwSO+ݐ2?>+&Ota5:hAm0&q4a -ՒS)=gR+G /5նાD'B >!h+ GO.WSE ,4qr`I /Pgl!alP"QD*o+`DԒ.Pg>aSЗ|Mp&/|S lZ>ꃕġ|rn'%N\b#us92D2v['xG(p$^g5mcFyǡ=zeKe=t#P3H7ur2`VnK $~IQ&DxGY7`1;\ 0R/GOf3 Sd!yaVYOe Ž\ Z*(1"9V | t$Nz+ܧ*og/,lnNAVHK䍚oO5 K_:_ZRsV(7^F5?GM~fc?w,?ӊ%ϐ~Rkل㪵mRStQ}3'5}b'g{jبwf6o.#%t]`UÒ_d't@]GM߭YƎq 8l)<2m)~7G dpSn!y)݊TepyƇEJF1&= !RZZ$)ñlQzQ"s#odA=X?+&#?k`D+,M*jiS S >sw4A^ZIpmD8\:X-Z%;F۴<ݩz2`=ZOf;1B$Y!* úL kY+//0C$N qbRP3hF$aOE$-rIXήn!u2['x6A/ïxr~b:|ͮ>s@`?kO^j(!-5 PQM++QJTFQ! 8~1"n\& 팊w6*+TCӞ Gײb08r $ڢ<_ (zbC?HR )4Uqz(<.EF.[Dl#]8ڈ>*6p Ku|OV*\RRб3`Y3ܛ9_`qq"]kzBA2#"2#_,ҍظj;z&EQvI".ڐ4#eoj F2965@,t`A۠\%)ޒ/GKt5=5}z ^+W.uQzaI/ɠXDT=*&A,-l 5%yuryXϾ.-r8Tդ]ꓛI AGEͳa!\LL4@$7&5zX!XGر_tKçW, _>8*S>"ْAHuG9d0U [ۛRAؙ73JOIfZJ5))I*Vwy]N-9M3.f":?Uzᄋ g8벯]zMK;f@.4FDA=+ EC܃^Pժ\lIDd2+[髐@sSKYLEhpi $@82- 2U >1}XS67\}p_3f^ɣTܛ"zp3K;*>ס >?tY>+MjfOVt/~j=7}ӿ}=(xKw>1T;Saz~H 4=S s)maa;K,IX<7a)uUI<‚ɧ7^n&@QYqH8ͤTM*Ȟa3Q6d"z~(ӟ)QUJTnf2Roc/Ι9Μjrj7,HiGcҶF A\@l3LU>1*ad_[N?-_Eb[R*˶RpROR/[THvnᮨi5g^`gMh7VW0Y{ SQsm9J^Yq &[O_)(}v>S7W q~[ȟMw~ZR {/8>_r ǟ\P3e+brIk=Z6 ğbSBfUUzw mP~1jQaLlSC4]7x9mle>0f*ˌ% 0L{*ekZ1oHi'KrET]1@edi/tL??}CeM$.8Xfҷ+"Df=}7@͝_KU>ŒjP$ @Π熎78y؅|cE,5̒vUY6IZI|qHDE(-IH{ϼrR0 @\10%kԼqQY(5łâ2nX5hzf=sƑ!19}(Pkoؿ &mqO^çS}|j4<(Ӕ 2;yyp ݀-pf8n|z{NTݴlgf𜺞'jȞm}+jEԤa:!\XMÏ|[H27G0"*fgj 3JjPtiΠ [)F&_F8Qޡ06lVڔ[JAS+pӁ\Q 2:֭^Bмr?c6qƾ bV':´`q$YL6_ )gtь? a0@yjdlZ%E[ \r uL~y x990 : .+UsҚ.rְnl9btx*5(;9BִclMM$A5&$0F$pS&(R%%4&]0Qm@h Vr,^hɃEj 7vi,2ʆu,zaL#2l8k'dΖ5{yַfJ^9FxȱH[p$`y/3G6/8%ť.q4ŴkT'##A"}/炁k+Cf7X8+9E=-3$KJmUܢ1]+Дpx$,.*"TK1d)0OT$^Ɋ]#C>osmYRQYu=̯oʅ}fi!OCa(-bSPΠI@f%Qn2.$on %Rsn8E$)ģrTy-LԜE%AH%# #Ln9"B@}m{(9IcMN[4`l15i}aiC Boh74&-$GXZoKtm63wݨ$'|0I V&/6 7nVZUK_fhȧ%l [,|PM%J0xc:Nd""Is+E@W;`}'&5Orh7:qqe㷤/M5OE|/0}/2P4΍ob㹪@au]ƮsS[nn9n`"SC3Tlm yȋ>`άV *Ѥ(x~8#{[x{h-B{!J #x]2a<[*k5Q&Ȯ<=-ji4ru ٜM=q@^o{;0)FL7 b9Y?ﲪAZs=ĂȌlq-p0XdJy^*w$& -WcvَK65_ hZ$?T\=4m=߻!ʓAV^vv7pvYQ%`26B%7ȠJR:65-6Ժ60f(X:uNҵNlf\PL)tzL3xuooxk+I7B q3tc|S6W>Pǟ %A&~o Vi>NŊ΅#_Tgz=/Q'1_)cXTvJ@3'wo:"SOuydvjs"\a5zuЗ1Ib;$l6VQƴ`zGŔ&"/s)5ij#Z!r>$/ `zST)dKR{yXK?qqwwG5ΎXhBS2!r Uc?tY4,D2F+pcK17jcЦN$ae]KWmۤ@aU.RЪ Z"ibCM `"5[ќlr`yn~ N9&ZD8 EnDu ~B$9Ŝ=p{8cuhʚnKoDۺ9Cm];y b󯬽-'Yq L,n$eg!; `v/ɺә|,x(K xvkN4R_n_-6@} :,.i={ X!ƺ2\MgB0%oGXEi ̲t6B\e&26YDl낐6.e<.ؿƳ'l:zS2U=C4y*K#|0ePiдɚ ;?ɤPǗ C-2+UZq[< Jmۓ2;sf)m6hEeyjtʝs#IK菈x~oGB RS;< ) q }DT|[>Pȗ,hRST7*d $K#R6O]q JZ$q̪0unI ;>LbjM{$9 uoYh.0q+ ) ;1N`tc̷=NmM c 6S'2^GخP6 "fG1C@v."}`rɪ3ѳɍh;@Y58O99OP,:W'`LQe;$M2^ r3YڽWػZ`Hˀt4d d\]S͢(ed ,΃2g#: ;mu՞])] $M#x,%@<^ꎩ])ަ'(p0mbrx7TtA=S X 0=JDy<ׇ8>~e;+Y}dZK}urm!)& '=5w۰uT119#,vYXQxNq"_]۶4Mn0q`f4eMX\aR9Uw]͂&Bw7b[Rٍn(sRA !JgRx2/VԮ//&+k4RgD"t ?)$"22ݮRӢ ^sX3ѡ|/H `PjF&dPr=d*X~AזH1XV߅!"'Q4-\b<~Yb?@2T`璡UhCg(z=uoGW?gP.fm㔬/첁44F0AǑ6e[ &z$1/ݎz]&H%8%@ JwvA *}]T$ waʿ1H\݈2F0{i+FgvtzRCM:o\YS(rOsڪjTV`5` J H2B$( ܨ`$w ܥm Ђ3iQ%]GX'w$ћRymP`T[@$>dZ1E}}%"rRJ]Bߢd#P*Q'֚aFasT--eC{CT́Rn!v`즽`:>}DN1t3 8~ǁXIkY45 Dzd. 3=USl'AL ڷf14rp~͇cM9j}%<qY㘐YaѺ2v[4 ÙO 2s& LblDb3"d,2f^ns,>6.713|0/=~X1pl0Pʀp 2pA$"hՎ}@(&hR‘]D0n}%c #ϓR# 5Mx:VՋ$e{s`;$g$kv =B)6l8ӱ3/fʌV6>7NN3Y/A v<: |cLp?c:DpH<2c$~ߦ sGh@(ڔ&1l+]BSa1'KӲ'N3Z3gEs >NLGB%܊u4y`:o(&AS15rUei-.hS%zCͮ L:>WFMVeH.40άVen p##f0az+fv!9md%XHѽYʞ/.X"l|B4ƿ*rD$AtlNHj|KarjmEyդMNX5>Ѵͱ԰H\FB&9M>g[I_fC%z"V{lIٱh0 js'թR3p1eվ~FڈW;`+!12h?Rt1l-P.l [D0Sb􆣙ylS EsmQۋǣ"~oӿc{Ԇo4A-,?(~рXGZkCRM&S*hvk ~4w*4_t8og`j=)qKtKybie3vmb AyX߄Smzg_ Ts5Vvk&ZN0Kt=,&㩩tQ `b;<6`G%J p#@6͠7%66Tխ$FBvfpqgS\!f,Y|]"j[Glǒj?+vF!m$Xb'\E.BT ,ziC!&WDv4HR,eR>v8"+u Qz:wu6E 5 Nm,,){eʩmJtL끏_(AEٙsR׼%`k0ٺ4q6J ];N(=ͺNE.>>bԢ{M] {rhLbgj`J"ĵ`#kBIhzc*m"j_+saVw?;6. MNB7'چr A? | B^[8I"s~ LQE:B-X:+v {٣|ҘRˌle%E˭V*V/2V2SQ5ysiva2 _4ctDw}44ģ1vz cf%`F#Huq}$'#2Oӻx3Rm#GO}uxm%9t!A}ESN e6D1@ C<߲ˏqLt'kF+ED^*ͦ\Ez:Zu =u SL`'DQ.l:; nD聡ANGqij:_7  A2w<xemӸdoQ"譈D.LMx}1Z?G;aCJj"35iU3sqG `n)pz4{4p#IF+ [Ky5/7vMF\ pe-%D*AuYmXiF i&nV"|f?#]LBF8Ylj,a(IyƘ7r^-mȦd /ELT=;JsniT5/^qܟ' ?iӍ^yml. hNhj #}OGLkNcD%k[BmfAj1`ٷ3c1Hp1V[/NZ=CKĜ'%$h:Go"'t{R#"]Zm7sv̓s<`;oUkocK^|< /zv/`E8~;^7*Ӡ8,^R͢D>PWj2Bb$&fr46)s3\brt=ơGU/FeYvV"kDݻ5sdv7F5X`Z; MI¸۔8Ph=sU̪I*A&?ɜS4=lg'*eB‘K%t kF X0F0Nh,xW @( +d"J Uv"ˏ>^_H@ +ȗ-I6RuRc/p'MLoϰ:vӢ_lqggK}+W$cKnLZɝ^`ɮhϰU/ 3k,a;,"aNf<hI@9~ =AԦ.adF<0,&vi(:BAy: a6Et+q$C<<Ʉrq@Q2vť8**XYabܟg! .#sEg% *x:AgРw<2b[l1[ MkA@ǯ؋pD͊egUˆ{u*<7'F?2-Wq iM#.:HQ.@w"B] l\ p)W<:A/dɪbpd" e"$Mkja3]0T9"xb/cbQN%P&Y[㈹4Bf=EH&M\S?ҩ }͟q .),jWZA,gx29m`a, AT/)Tv |j\vk&7  jH>Nr 1I((Ly15a7~=xl5#RϧuL?L:>ZYT^(9%z/pg?-pc!9+f\ .Rv pYR\jIV!wǸqB3k+"VJ7?Rx4ԫ±#0GGhҢ=6ƛifIֱnPٳږh6ebBЅb0Ԟ;'DƉ)— meZ [kcbzolN1M< WУ 64~/DRP^MQp81h<>+(9ďԖS&D~ɴ)L.fyv u'\D'?- `q!-`GX-4w*j(kF$ƫQ,l9͔32 i+;>$ywHrG2ܜ S PR* P}WSL+I˛I" B P(9XR\S;z#b;ݜ#K} d0o}@X;a߇%s1Fy w6x=~ߋNHsv:BnyEh;%*fE!wi%J -Ab trbѦp~u*@+߆.YOll"J_k &Z!O.s'lz*֮ i{s.qer/C5F[ݦblf@ ^ VYfӳ&:Ф[?]L+aM(\bx 4T.ޥMZ$dL=@ԬJ:[ت*^l!uC h0zy2bq[chɔ9M (t3;O6~7>tpn56l K|3:G!l" E VV"FӦk(R{Im|I aça+Cܥu`qӮg<@ܞ{7f<ÁvA>A=}T|leF6`7lLo߯_- pK(Ah)1he*s \xH}ZdztJ7X*H(N6}Ǔ:FFi7pK%減_J4,XW iDeA1ͲnC(~]WmPbSJ~4F^X 0?v&䪮mvtIV%n+iW6-͇H%cftcDX\u8*dl%D[Np tx_m'z3+ ТZ`wBD?^>YȦuS4tZq Z?[Q4vcTJ !d[{[wј8E֐a,OoM2+ C0iT>C'Sq&C0T9P8ic+; y|;F?_N*oeXI 16bzڱ"׫>5^j”8|*,rWi~u=!&:[*ziz`O{J~bnR=Dɠ9y´|tמG PO1xJpZY ;i*)q{dzBpP*] ,%e:Fn:~X|Ҽ3tHXCFmBfw Sގ,\,Y/? I[+HrȺ1"a0 .z}MoMX jm\c[d3$d317p/-ڶ\˦DU7zZ!ZPn ثR2h7$ǁقP1RׄyZ+24jofqb*zWf{h&LXDֺi_$$Ycr[D2E m&gNtP~|m-$r9Xlvjɳ8D==*sC 37@ou=>?O'. oGj4+_ݗq;*5]aq;>qyPs'v!e!# {oV31D}K4r&jyY{6Ĩ "EpUG򋅝1ob 9+KcSjJ!l}찱1H4f*f"/!\2wwtb;nIJS2u]7ai2)D `/Xrխ9DY uړrL`v]jǕ1UL *܎iK3"OUx5`U-|VgGԱwQ?t A3Ɣt$H趶:}/EnR0 e<([Cc>Y٤<͆)YA5S9HE#̛B0\e׷eZcsԏpOud[]vO䓬/0x8ݻ+&

      c;,vZI&Yw0hKwOvkxj2{{ Ӫ&fڦ7:$gx"9ۖDސ\LƊM<9tNQw"Tsl x*^;ёʢ$w%Bt%HppiFa \zwlK84²* הLnR2έelJEB%m2 @B7!aZh _6, 8̼2&mR^hKH aΓ~I`f}1f롘+|{|΂H 5R\' wVWyKcrKwz9V1lw (oQfVl])-nfRA˜"τ}$M@Bp)-x ;L!a BԷ[+xp`B cgITz5-ˮ;@usl?7.pXĻ'McMiJSc_k -2L '9PK;7Ïmpt ᆪ=oW9o`km<>=vK\U_thhٕ$IՇ[Ƹ4w9 ܩٸ-q"d8N)< ͺex.C|LU%ټEqja"e1`c28[Tw7d2Cf: H_DT@.RJ(0j5:"Mf-LfBgEUAS^>c|$clpKo#VСc'N#[g-ө8oQy$X.BJH$3:L` 9)8ްϧ*Ftn KBIjo!oᮆVC[x-7դW3F,NNk C>]n225_q9aLJ&&$19i<%9eX2|+qN+DJ ƂEt&H=CfB&N00 uB!ʤ6N47O'筭`l+l6TyG[?nh*h#)r؆ms>V؟tr ̀nd1-9vJ# !ݵM26cǩi7thD0\{4s;D :.1gH s5ȑO]"{=MWp̛QܞV,ofw}%XˈрG(+\D`21I"0(<8! "gt*U&]r[iO*Loǔw[P[+]:\~( BձIB|f͐pH]3bcsD&0_)DԮ̵w g z*TkB%'w-I(@;f 21p+^rx>{ځ<i::,+iT=H5qy! N\Ur˜`)f; 76qu ]Hj]X̏i?@`TL$(ڊHP,G[ѣkN|x6EiMVb؆]DZ(UW_aكv;I.n 7dd`dgs"o71&05ho joΙ5/doO O|qbC;TS7.u͝m6dϩD`ct_"Կ>ܮC-:oنP77uf[[%= JtMb4J ZH%z^u.wΥ`!G dn@qRXVb3B.-"bx҉^1TR7V̜ !.N+q"Nvf ~9JE ,cL:e/ $f=VQHօ0` W餸 n\3T ncjŴgS8w~0T 2QձZ G!-/L*sV !jUz3薤˸;(u'9F~*ʐ4"-Cs(Xd!_7۰ƘQq#`umx( 0Hz4IHǯ?!89L}I7M,KAƁPF9pPs ߍ_` lȶeɉA-=c/sUk74{܍+RUTsMLt} /"{6Ѐ" sL!KͿtϏ⊄HpζoT ˓>*EQ5p ;>8fY$69&6c!+z#n ]F:׊̀zV`˫]gEw@mM~,.bN!MvP`dI'OݒqChu E=`J & x?ZAAsx {cOQ(dW \[@ÖKr<37G@hA`-#}MeLi o., !(nzN[fIw*RWoC16f6Y# *Pi"Z5 V{3zB Ȣzd@W0g|@%n$N,椺b*T67j2%S3}}bF|ρ>2/%/āR#50T#%VSA'Ob{QtuUS2Iu\I)|#uIJ]=3ۣ #Y]7 < QEڣ4%wFq?5e-<+F@/ ŚjPƑy?OalfF M9E}= #bL*y 8n7%'i,|RŐ gTsVjₔ]^S 8!+#X̀SM !n8`OLR'%ϰ_uM`ny9u:me<݅#(H/̇;F_TCF2U 2'mI2@f FIqfo )+]rW[ k$#{=.L< }d8Sx%}CDKkl=˃lfgŅP\+C KvLC_u.s iQ 37n4(6dhA{ jcpQy~8fP'7L 5`t!+{14}#h5RB4#Dd[Jd-~U Zx)X091M;;7jb :axU؎[`Cawz N"ʤk)-'vX-}*I:]6s1bVjfc1 ysx BJ~+AU v~0;^l!<666G?D`$`&i /`}b4P1:{PF0IoX1p`!a|4prUlt:/Y6RĄqq4RrN{Fi{<*cf,( rɅl]4=b-We20( Qt=)`IT`Yw7LdvCHt#4X2+a޿%zE~RQ=GD!V&KehQ>H߮(c~C(#[AsbpMkr&iQ6 ¨>$QʟYDpW+,cQ-bFr~ 7U$^U&b3 |CQJτ,E%F[p26č^A4 Mzl +CX_Gx{zIښX,LdH [32y3eL  y,n%=U5XLNt`[gMdӂ 5U5Aqtqcf"O9Ye3֞xu 1+/PֳcsvS-S~1EH$G? -ax^i%2B>[ "vQmz$2b@ZP(g~2)@x1P"eX0Qd7RGKqbi-UF/}ײs:̿ȯ^p.ssG4yM[쒪9˳ ښ_#GRݸU[xF,ZRZ6%@lāvU.fHҍ4E@RJT: e`sdFͣù99)ݵџi1 5!ɼ{nP DFS'AМǒC PZ%#Ҝ6si  al5Vx^~_j*.PY]^-w@o Bv#Fk\;*IC) 71&:Bу O(!spB%ӯ UDDmD9y֚9/eǁH@d8bw ~ q4&(o_=#ІqໃxA]C߿;_ƫ+׼R|L -U ,1FW}WGpsiiDwe)Fܒ@:F2+C->],߰LGɈ 544ã v ۭ#knXU#'%`{YońRw?Múf70ץ,&#ǢKֆASmw`v(&d-V\QI".91(P9Y3ɣ1XU'K&10^[!ZBej=] ci4\xt(I5sa:X, .c C $D˭ ]F(n˶r~ҦhAjd j?m Vc ]"?^V4IKBy$=\ȧs<~k0ie#:/K7y9sl;y-vx@?]CqqBO>zzli:P-gR2Hfj2 D5U]@p+͉w.ɘ`q{Qʚ1F8f{0=8 (w!ƭ5Sms0Bk(BLظzֈ$iB맦\!rH# p tZ!Hx>[cQ=F@`$ЙB@EZMVv!. aR**[L24)b3HǷش`2((| T)XwG o ɳ K+32ۛI}SZ4M\bGB[Ei,m"-6# Kʺo]l ֲ7|P4; XqG6ρ8vu%j= ZVsMs:`MN)0f1X-+"+@0xG]85r)Q;aby5gU3X9<"uE __ͩ.a1CEtӠ/7BMZtzCv]hٳ|\BC>k7Xa|hzUk$ +A|0^ 6,͔J2-ҋ021s<$K9DZ AӢZK~TW!)j.9MrKiy(d7F/mhJ*ˠl*)Y.*PMCI0od: [r7 Xgy9.uLM#vf$U4hnm;F[/onPJrNGC ŜEஏm;7#^.ӟRݎh ^ӌŵrPw;o6ID @|OYE7jmn8\/ F!puӔgTSM ]60RWoN(z;֬ŔL5HN>BXiǂih{W79{GݹLK=NSow~` ]$$<)bR,E ^6>[n;x+](9g +A@$ZPrZ0 RQ?A%~t7 P}De/)D"΅mJ>S6Ad/$\J34v$ g0TQmԕc`x0EtbQ $AHZ`5(e4"䠆669H-թDaS?_6ЄfwM$d# PԜˮ;ĂJLu6 j٥aBqڻ IGs<߷ܢFVp +͈'-XfRb5ʿ-hrk.؛7Q}T]:Ί;/\uaREUPffstb#QNN,wfî-ƭKissWKH70KO)]lt6nH'uY:mfX4 kH+ѼS\SZr{:3!B @PŒM C(MyJ߹M'dзk>Gͯ^f^lm k.);B#`IqZL }|i yl[d+H9+VZq%M o;%a< U,BmATu=,A1RT4iA;eĒA%Ip_;Ucg8ssGs} n5>Hl!`~8{0ְ:lx1Gl =rc>^<'<󖋙$^M? w߶KG;r5$ dкk4{v@hEyk<,.ȌCӺLj{ڃ&DtXYG;WkY+FK`Hy%nЛz],s" y9P_R᧏cN=0] q',ƒf7 ^aieJWx' xgh6+h.gZ7su@e`Gt2,-F)+-+eSXv\4vp jS(*5hF4ODD2׎FD%zV+zԛ@4睦9.\;fEkl, bl \xLreo/%@,!.QTiwdXǘKWfYtכ\Lw3s #y׹>\[,f H-)p#&5PΤ69>Ҝw{AXE%}6{A`%}Za7QʤNCr)|k63M/ w-!Akb,tC0!.소#)̔FxHҟKН;U%ëFJ`\[t1d:X)#@QᇍKoC:J@Jᶃ g߼0W걻3bd&_ʉ>Ƀ_unȑ,7C`W)؏IpLDe:L;@N$4-6tgvlv. yv:sZ$C!`ԝgzU +ui <Ԙgl&k\b -p ctKNc!` t8{IN3"Zp569I<&eh'APq|Y?!cJ3MQirӀsƗQF(M]Vo}Xo穰xQ4^:6άEmlՌGYmSZ(5ATalO%I"L1T)é`-VœG Cv(Mii߰$`RM mɹυA&96EVЅ 6gl&zWּuv}jI=Xk4 X(٧JM-dR眚'^nm:Br3-;%юHz=dƝxG~c_qC;/#:YhRwO x,>T_"|b*$p\3*P͈u9$ ``8Sr (&_ު]0VHeܴYp͖);3Fʵh7+W_@ R@$HD%2 U3aKi!OpC"Ll d hj 92V y|MBm0/"٦d U6̨sdomma>Ei<'I+.7SqOCNcF:Ѭ\N<8j]URZ`lOɶ³f٠dluXCV2Np$ݜH4 !H!F\OݮZ>[a!_rohhD"Wa(([uӣ&h+jU@A+;" ludr3H QD>)쁈dqe,xZjpϘP91Qu_ZyR",3; 8u D. 7YډCŀGjaӻJ{x{k2.]c1 =,)豾}t)ჽ XND?NXW HsɑWAfX.rQ\c{a+v#Is'ME7h LHGHz)Ry"/TM,蔢 "le0ݣv#{+~n`%?^zBTun]N$kg8IxϡXs *DލBYShi8jo.H#Aˉ}A"E$2C2&&5TU޶~,c0e 4TVIL&֝7틬5CaO0hqdt*xap3eU]?&]ӡx3M(B*_X'>-Sm >`ZaDL[O+~dh[HCUT o\;F;hHɘvq0Ώ-= 9 K6"{ 644Alj"?H;c[xX#$$xjg")/'L)R+=95>lEOz|jo{lW~e4FW72MjU0U%Q؃>#XT'}NԗjM8+p 蘰nMWqF^JpE{6lvj̺zq=ΥcJ$_gUh2-$Ef~$J-E|A|So Sn=." ދPXIb] L> / R݀l* $ndm"k:0EluL mb8n$#! D04BI8 Ra2v{ )Kb klGLf?+솩 m*Tu09Ȕ& MKxD`P1dryz\&oQ*2){m aT3J3!P0u`E fW•%d9d=dnFHLBEʘ]uy 8fFĕ(J6I +٤p&iUKaQEvxߓsAI67Ήp`^r.[Ĭa޲f9.(br 3c9hc2 S"T$15T֕]UvluWMDo)d { JI{(4Mf0OH_qW\ ]BJD&}kl+ƚ#̺# hW\a"In[ܼXn1V Ýg m>4e;P#ʵoa,`75$# ŕ.*#Bh5 U Z)(thbi5t <9o+9Љza&v_4IG[eEkT 3\g|0OZXmy P2FEӬX|Ghd7I&3;j>&0 L5= sWɯg]HLみ]Y6S{YїϰhߩĠixa(s[SH [ #V]k;f;#vhaNьO+lqGvU7HQz?_]gWHv1K8;Vۡk& d+K"O`M(y6.l_HvFjWG#S!,a#8h0@-^q(uH5{0y%qV%~zhDdƔ3U"׊y( iҒf#5LDI ۠ljL-X>5&(u!]MA#?DnF`F&Z)@՟Q?HPgn%?qFѯWݫAD\6X>O 6=VrA> ͽUŢ=z(vhCf/a˚{ٽo-ݖ, _:\\z焧fiI+#Nb:Or6.J5̐M>T%xb"uA;;e&+_rKS:!kR)ȎnT2i;mF&1UÿFEPIkiLu)\Bq܎y^sLl [AmزƼGA@9@Os/Zx=aE|n1~e|ow| L{k$øK 92"([،zSI :6|%FxD_tBR@\hvVSk8U#T6jP ׊R"¢`E6*CM x#$'z9Z4*X(!b3f,*";/0 Wo*k6jkYPt$KqOVf/] &3eVD1GxQ4e抁ALU꼋 )["SXMIe2.Gd6td0u7&f+TyHi |4k qMhcí0=l ( gF[,d z ٓ^3/Dtc9lXbw`_\ŌFB,`e&9oo?$y4v,8fڭ1`? L[c8 'cZQ'gs ]8"5I7!yL6sm>O$8d;-9P4..vOmNRs~g"n#ǛKq:P0ՌPUKFڑf_&M4i6 $}OLŘzu^Q S**ЈYa޶&g.^I mF"eYV@ysmfu4ڍ d%E䒺Yc,Xhӧ%":+$_WE .]`&νHY AZu]{(0͎f \B6x[":C eS|lȃ/9 )ݍma0hAPX0s};i tP-JoGg4 XdMl!Rb1/Mȅ魀3M,.A(0ȁݬު &Zځ4nIICVіz6@ۓu&`qXxW$RfЉr9 ۈO83bΥaxi99q91zg.}%Agqy 界Bʼn1w͵Ɣyuʒ\vwgXߘy]q]ah&HTR:ݘUid*0{oZFpmv.@AgIVgH8+ ˈt(\QVa\;L|Pƌ]ஊ`f%lf@'-:Ȫr$Qw DΰsHdZ%tM5$̸¶ApݖYy˩í$Vn<]`+d.[*&F \◢7n$L < VTu3qM.] YrGĝyA(;Ԙ&"3dBZb:kHrs!U{|6'dué( ;e০`zE^)El^q/q7"JsA(d-YasHѦgo[A8ga:xkR 6-[grt-tH͠%6pcG]8 2c!h8phaƘ>vd `ꅾX$Ѐ2\Opu9 IzM'S<ϗm`l޶( g/W`1bO.Ϳ{5Rr66/: ;Zbck2gtݓiw΢Q$-cb| X 7WpgBnp^4A=jBvMAf{l?/& $zWӡ4 LX/vL> Yӆ OdYFxO7miL wȸ+#M? u]$^ Cwʀ1oVglu ɫ!8(lDsx"ś:z؜ﶩh@ZtJzeZ/2X좙0V!/ ,D Uwl.h"NkFґ  .!s +DxeP"!ZOPWA?׉ Ţ6Ss&հIl:q.4[T7i{0ovmF'O%Gs<]$? 4E`n0[maS`J;T%qeNVQjEdjmz8yؐ|I2*aؑ4k"-rfNyawEo歷Kst3P1' 96 og#]`z`0T/9d(<K~{ BⅩqG1ucD+fa@a o9zU'6fQQK+ù' :sesjݣ06_{ ǁB44g`nO0RAm;Щ d^c)@3 -z(^2+WI3:0I+-B %x$ lZ1 |V'`ch/M:@(qzA({(CQΰϯ A&U 0+Ҋ7\խ} eAT>3B5曹 ;?8P~0W)0&yW6:;xD% t¼MNCQ'|H}O~F> ҰQDt<$(G)$6~Zl#T1n3Tu#cB?U7tD=]l+*N>r.Cص$ /">&Vn xǚ{2q CрH魭acܚ}.QOKmM4A`C.llS9:NV5Bky3͂Mf-~].go1 L4x#IY͙7A29R#cu+¯uxzfD =h[95*Zp3Sexg|ejpY Ne;1/82EӨkGf$|vgb\VctQO"K)e 吖ȸBy5 /ݕ>ԋ9a.rnfyAf\ZDȰ:0CSxі;-dp2voxl26l(H$fE=`9Ne_BgYFREo=,7{Iw6FD#v?DTdUF]]} Xݹt)1U&-",](`ŸڤZe=T`27Bnh}cCvJTaǐtQl u0cfCIMofJgweS(af1RqAMo(:"Q?Ӥ) 5a%")!DO??Jޜ|Ę&z|p" +^6Ԧ`QgT]bc-"͚cƜ17RF{Xhurxza#)-x~\|j}ֳ|SM[},ؙDxqLs}} 6| ^RӲJ90de3c(?l5D `(Y;. nuaڃ>+?sڃHUKp"RwCxKд.<~^e !nbA;x\b+CcQu+:5HJo[BIIw²$1KR=2#F ԕʵ3ѷ-5kUeޫ|IPm${ '~ƣJ'RSeQ1ʑzD`6a+R FnhʻE*Px^4yyUYQ S< O@Q:m8Ο2onr:&[dd]W=fr/( LS2O2j'@a~oJ#TN궘YU0:=7@iuadC)jvګc^Ο NާDx8彺F d74Ś =!ǻa}<\>tS$oF ÷?6}3#BjWlhd]mV[2}5o{8j&Xv$Cq4 :nYB>0ThK^% @YjW'ˢې҈(#p+Q/_eɰnDNudnmy;|zݢ -f}d`Wk[s=Bu}K+n`?R6y#e2ݝ73^J< YwF,pGl?c(vLPSr9lXLg6%)_$_׼Q%jԸABTZ0RD&SIb[ZPvX>7yU֫R^3#f"* e|:! *s ĶZ!6'?hKrAl$qwRÊN>Fɩ}k4 s3H9ё9ً)cӉ\sA[,MyJ  FN0A :Q sȩv/̇.~gosG>Z# } ]2.eͷAo4\V CoBf @GKtZ&ia="cyg$Hw.y=5y&jg CEuv"cqZϬ@2N8GC@H^M!rK3W#_5o05gB"1MHEs8n]E`L pZX_G*WŊ;QOb@?d%ɮ65.K- c^K^ n[X*EoD< Z.TIyMfA92KqzS Ӧ _ǥi],}'圉 O}#fSmhtbb?.Tt! 2A&*^%') `$`14*d,!=X,y*ŗ f8jgmJp@k4AEfaWzrkMjlOaa5cLXv щzlLw)$FID~@B=L)+N8ں/Mw\Ak#MȢxgxhUZ3ni [234F8 ]s#Xܯmq `հwĦK͵C+D5iw %""n7Jm`FŸ5.20Н0q+$7m`pz#HV\.vLEd/o3ɷ[- a_$^lS'iR-)Fdݡ|c>GqRHK[3N:eX~N"ت6e.Z )cu:ŚD0b} e]ћY)dM;&M$!ej ;sM%*2dRY0#6N+d㡏լt ŒdSQhwhik'` _f;\{e}^ka[Ͷ06/)-o @ݟl `lMlsQ^5 j? nf6ߑz!C;&gCߜd:`#n%ELIfnAS?EN0LDtF6}lHvP<*;V/ByU@!t0Г Jۀ+ؖ3[ |W21(rXJ7o Q~@J9>b :~?Q ]0 o#*3#a]_ʉ Df 9:FS^w/ȓ$x r\)?Ԝ`6jHțm7\pzmeAE^,`IOBȅd˱Z# nrϿ+z@SzW'¹JӘCj[{ݹdyK`q&Q#7Lfj GPa(Kr캨[gyU&GRx&%A:AYE!*!K %lè-?LJy ` #7\5,s #`yn 2g,8~RI:i8,9~nbHq (v~1[F|֐:i o#|OFycLA72F~`AR `sCqe4A"ݽjk: vUd1uIQqG&ܰE}T"VAvCt]\o7Lˤ.BbI&o]eTѸK{]]ȧҗu*nmoZ<07FC"Rͥ\2Q%XSSbBPh^cq@ŀ'5:]S1p)`ҬeyiKڪHT%f=`7KT6!> i!*ˬ)x|:VW;aAX]j6E(?/lڍuq% FG"_`sS`d4g uoV:)p^&I/ʍ8 /M gWc l0# STƬ5d`)Qi7ܑ$6~*fzA;:i3ue5(`ڧe2h,5ь>,ݥ|P$Лo}ƒGK"v;kY7J"@0_B%B fDobQ+L1Đ+y(`xQOmϑk2%kn(]fn9ݲZ$onQ }#X,.:{Ւ9( e'tx׊W/tODS&^A j8lmfLQ->[kLZZq)ox {3`La{zfPEc!? teFTU3+"n&PWAe3:bIÀSI ]Vh,p@)N0̩D`A4AʋQW |-םuF4-W]Ę4̭}}.g_ Hmf{p`LK'a9Dc #o =mӄA=ϑcR/uc)>2m&B٘TVi6wC}5y{n<1ES sQv$0^h5A[qG0m˘$6KJZ[Xt§zFԽv d)|d݃ mOQYvgSڵ7O1+cELBAHMs6g:3&D̕/1x)kX4:`(JBI7[0z <=]f}ܬ(HjL SM{}>Z7\pMiY֭ҼN: 170]ڣ*k$ϩ =vWo/}X \w{ؖZ+)$/0- 8QjgL:7N[spoDô2SMvg6wAb"Ҫˏ_1[;h |ŝdސ{*@E&Q4D  +߀YHl"Ti847]ӚJRᄁUue/kd2ДT̤L'5iV,k@y^:,W[`@aaH,"s>B*5Omٶ+V^:Ns]U+4wSnȒGˮr al{ T6kV 2A)wq/㺔!T8lT\f.3G@9n]` حد4TKAUN{Q'| ؞:`1a C+>oa%sxiҋh=~@'~W07|۪/;7%ߏAKֆ,.WG=7Pb}Ns)mݎ0M&0%E7OedGEkuéىW0DGx&PU̪;,&i V2jͥnpSS7}3[ 'EEoPJܞ6S~Z2ܓiR"EVpt[>'64wv|.B4}w螗G"Pڗ9+ ~ =4Hhճ9SpO 7%rg'"` qkXܾ7_'wG#ғµx9ٲSmD=i#&<(eR6 0+ $JQwF+JI6:.zu*tX 3ט\ud:!x-HYq\ 'LYT6pw9Al8n}q|OY)Z0'QLYG<Ӥ+ O]*li0aTL U*QO 26غEn9/IQj5^e\K@],>*4Bׂw<3daB6fx4 ErtW+jgqfVqGK cYʩ Q{9J+yVfXl?[IfaOOǴ·{:n9@GW>lLWGz$V^eW%1]$huV}uUԣS &JmQ sUP9I&!il*Iݰ~E'Hbde/Ux(8fI675|!65PCY-'.A%3Z$m CѦYg'GKL%fT|F$as&SIXJǡ cmD#ĹBSKɳ'"1B |2x;ECгŽ6fJ3<lAi%2;^ u̠ 48nUsU?3('A`Q¨xD_-u}l_Us+Lm;y;먗i-;p=7a-; cswK2b?98rqVpjXf(Vv&(GiV涺@Ҍ|!ʧjښF[`^)9 53 7IҜXPOeRGGc5>,9aKDW1Zlrw ;F[ҙ-6s]X|2{utUEGϴg|wD~l@Y\K˛WM07>[KQ4B!X9U9 г7asbnúrEm,6r,X*Py2HA GƠ /FHsEiVyА tHIKZ O' ÜiY@)+pOal}'iTۆģ?޷yN`p5s=4Q*hU"qȎ1 5/<>(#Ҿ\90C749)Px ]Ύ=t/'$kgC8UB1,hh[7JlӒ,E?0D6FLȅ&0 ˴L$AT]jkA:ގh3ƪUӷeӋ0C>v7Ya5]_N ƅ{"{%i #T|_/ 4ܬqI4E ^륲ˡMβZ7Ḟ@sS+z{-b:r0<@OҎ*q"6;+W2 C]UD}aN}NnHfyOţ%PD(KWMuM &fm؃8]ȿGIZЫ=+WrCCawt)iw+(E.6xZhrp ޡ_iO%O6_`fe݄5&j.KK7b%xS1^dr+jE~ B/ex8cH+E$9lhaUh- 3yB%,چ[G72k$ 7y0 r,^m,7fnq*zj: ѦtyZJM0zJÆ f9+cBacX?Cu~c{c6yZ Ygɯb}>ffAyG]K2ߴ%۔P_+ Z=uTΥa10W `_Q UXj*ѴL/ȯH(CᗋՐ1cdRoIv/.Lh!Xŧ<*| c`r;]%(zNϊ+4I- ^F+wT"ŚBwսBm\kȓ#!kS@؎Jq!* 4k$b},CbT JrYE#iAPÕLuٰFja锭'JAK|hU@x@^]!C@} vt]4>ܜ̽'')Ǎ)>T]ᒪ= \h{ |Eb|h*7a r$bx$8^.6L1Ps2Wwf;pz>Y L?[F&RۘDONuJ73- t|7c [6[׷ Fo?^>_sv t=KEMi;@S C׵9)[XN-f*v`"D-4ȯYk3XpdD/^ŜlUF(-A^gǻK>\#l֟ B/Ҿn) V.fyΓXY/daKD2m@TB[a^2Mx̛Ti^'k.QD$ Lw C*ӎ  ,jP0B(* {U#+ "Yބ% eAJ,, !l^̣[W8a.^6SY6 2LVGn]R?GU}Maū@+Z-Xq={BE* nFEK t&l`hKhT9ua2`{0:W%s>o&o;k-.+,2G86wa)Ca 7\&T35{ )вE~BtXz8;U ? 0l`҄VttK]!VdOQfլ'%/6 U@\@ ֘0/HJQmך珔W+-hf}p0?oSV5y N⡙| l)ݩxq(=]"J4r-q%;Z#3"l۬[ ]Hu ÔEj@!*Vd^lKI"1z;K)ђ1-q-S"EжhJ)fLd4xTwv]Z%R+u}{/^믾vYS@+liަ {%8,"ʈ 9Qk3|A*Yy1 mTy\v:kG:/cٛ1jÞ#na+bJ}h+b9vSD[K'I7ԦwC|+(\Fyd'\\m0nOXlmgCsgŷ(ӟV> ڏlS \|[u15GF}D72ru,{a~=HҾvCD(po2P[ 'C h >ؠ?Ji%B=aECpq«]tP mE F[Ri giBWUzV<5y:3Z&/|Gܴ DN's󼳵7 #+%#'4ג Bu[:.;UDw\] DIx޻k  'EX )^|+ZqK3BIDyV.CMJ a`ol X+U"R(Jn[2cS(BtNu&(<(WފUi1B_oa8NMH΀xCaסx vˉIV Y+pO}u}脪nM=]qoXhO6B63|w%Ա2ċ,2ԭ w4MFFG|AO,׈O.qh4&xH=;tG$jN)75N&ح3 ;^H#Ee;A:Z'@/NWNWH"QF-(KSv sz;ņ̷nFS $l0-+>Jvn\ftD2"⾷$L2= D젏1C}u"HB ^-"eoDEg4#0NS**2G,uWhե蛤P;zôxҟ߲Ե5)\LFZqYg,eKlKg]4V@yFMG_E@LwA# Ax^fR\etM _{Xg0lLf夹ʾ he(s2h@M,/3hjq 6_=rGIN鼣Ov3Z[ B&22'K3Ly`d$˻ےiO5Ӽ tG##m6^=q3G鼶LL $LptB8pL)Ya5_=IN$PMf4T,H<(xg4 UuʮcόZӌ4y…6.W;aunx lLͶ#R%" (:W~dVSaZM|gm9q%l;f?5\iE^@Sb~VD+"`r4x&]D% ѻbdqս[|WVnʴRC-(=rQXgSCL[#5DU-Ne%-ت\;z):,YFK030Q_qpйhc)`PvRxyl,bЂn i*gh,U>#в% NdlrWxD욻(]7N . jM7߲/A*F9G3s=b^S>+$c8h/4:?G8)`L[0p57 ՌZP:8=j݊ɛ4YYsr{'מ~\L"'n`D&^EF5Rٯ"Pupb 2=Ur;5T%0(͗YUo+kyH~䳲-_O 3yd.ı"{E/편>~Y ǝ"U+B2n2ʕPgCXZ rj҈C@׬ nEYZ+'vk92QI=K²a#%r"󠽕tfbMZ(M`dۮ -hTX7 -KFci,̰t$l,'K 1cS+g"t %GغXĘikHj;1DHwɌZ0}C=;Nǀ$}lPOdıpyЪԝy19 φډ5١ dccɬsIyR>EE}iQv9rw-HݽZ2*i F9΂4Yo#\[F F~vEN8:]OnJfMc@)bEؠ!S NM{TyQAi]-c5bM]#Y]٘g\s[M)j][xתI_>N/t1y>h֊m.s\ocm/}Z9^P?w`P)۞4{ uVgFW $PUcFEK܍^T v[B[~Og./TrsQcJ`b*M"Dф.({ɰ? jHJ]PpBAbs_dNRbASrڤx>:u&gP5!R璙~};/85_7q0e0}:-50}㯛 GdsJkov ]O]^l39OA8qZ = ;9s.Q{y/ih.+-j3I/G AAьmzYcl "AAƱ!Lчqlq8Шcv>'p2z9F_#.h=zkx":P1scO~ 8,!ߪgfA!9c^ћʪn-gt-I>ĖyRY.,X舝k%%CB&JfafiFUb#XDFE2ZqQ4p *0նۃ{8SEg!U|'u, &߉JsX=ǹ#+1L)F'A{,rL[m?aǣ &8m@v̾ x1 va˘('6jI? r\05I2)&?#w|X_xK'k&}#$vwϷ1\,yG$zx]" 2Z)Xl?=^0^=h*Ze89-܂q4lMXnnڤ'DEc A*ycd Gͺm3*-!K kx)j>bnl`䚣voсu0RQѦrs{\(-Z|WDfF\m`Fq[m`ԥ?חS׵x6 ,kE!u}J""!:VAL6ݑXj& "4/ɿkT\"Z:7V=m,eL2WfY.NqmL,PRus,lUiS +va*"ri zKf9Kb841_TB(C-<4STdudBV\\2Q3k$Ot{=yOyX햺/^e'~q8aէۈaqt'ʚ`InGHA99^u~6oc y}Py>l(סZy'i=|G8/poR/Ee.Y1Tb*N!'nž5/:!PnJIo6Aa: Ap3\~JGBjeʚɨ}T3$ k~h"mˑ~|S;͘evU7L 8l!e@wի"@/f?kJE\>7`XKL1aX{~-C& E*V6ti~IYSI4Pr%da$YrH%S%]o4m8ȧCMӭni #m\FIewJ!9( cլZi %Phr7M_ka"DO.R;\zq^((N򅾓O󮍸`lܷݞdy&.I[-[\ GRM&f :ηMjD:%YinɎJ@7 mpo w"y}Ya[s#!ucɤ͟~:oݟ~0`(ZYWnaܖOԔΚߥvȸUd9]iPƕGw_Go+~gY_~v BbOP}$$)%?/u S8-FFC-dwO>?"^e}7 |2 z0f󳅮&`>K=tZ;3U`l2XB9st[8]tBI8;xlN?4ȱZT]uiFXTI*IxۺʵMkY{Dwh:Ni+GKŔe_+Pղ9* __w'kOo~~qro?gW7o`\#e?3>.`4tƫD`cJp) &3ׯ~'/㛼|SuGWhmzd,TִUZ_CUP' t<+tHYѯ^?_|⫪7qgI|7?ﲾR t4Tg`.K*=,`鉴t).zVD\?{_o:YTo~O~?ƛ7M $3Vr ̸e62Vr}|,_*+?T Bh+W 714TD.G('Imyԃ nJ*++|d4)vЧu"FAy'+Ճ!Õ?""t~A_{ bUƁjBTuRReεjҚy' 6,'`C8-Ls ^:\hD zJlTC!ZVX`q\WX?k_G?zSuE]Q ȼ?\$vWFb3 ~1|3%Ń҈P!|Fxl݂JFKWΠ1hoqgGw{?>Oܟzv})^u|U~u~>o`Ӥ%4 V S2zMh;Q1x}g?}[WqwbG_3*;?~7_o޼5y"|f8m xZZWz7v}qU.Ymz{'}' _EVNoc?O"‹Cg'oW?}}?z+x{z{_͛?O2vsTW m_zdT^lhFRcQS_N^7N2Ⲡ3"Xr$v0WMmP!` ^@qkEE⪀_reՐn@)j-cc,"- .}a(y=R_%MXS@LJ + {U9Y J\>-FFZ_p"NEX6]#'.w A{bw! L=z9v+^&K|@G775 } L7't<`@gpf>e_]_}_|teֿ~>jGc퇛'qlp2⒠[!:F#TD~G>w̷w* oFE֝yWu՛?㟧ƧwA .)-fpQ]LgՕ?W?_}*߾ 9|qU^wz7o??_~^^~՝9NDN`& +>!:K~oF^Wo_}W~ѫ7^}s]뾯o~_˯>{g?WNXM3;[;#9BnLTQV+_FPqOLX4FaSAi;i8 T9AnXI`)Y< 'O옃F[@HALc}.jyL3ZMd?#}:`+b BtR/X(gPgGͩ_V3lm;m:f:=b(q ; #1+Lpb"OQˋ<|W =ޕ[{h:A17J?ysX _H) HjA_j~`E ҭ=D[DM#!+GOٛoO?y[z8UoU~G^"k-G>mƵ_H!ÊIٺo7~eq_W]WE>}W6#̺ʪ~{E֧W_|kX&T뵣%e=UB0t 핂&JxO?x޾뺯XT]pyWV^u!Wo՛>yX]GZښ{-nXT{J˪?O쓏/>yѫ7^}u}sE ^u7o^yWo>O|{E9Wþ;`60Eue"9pq58Fi˸jRza͓3zZ@:3:(vs;#`k_n(hR`ORڤM,ЮhKEss ]hkQq:NN%:ΟAY^g szx9c:^'N!0<\ t8'}"AߝyXw# [K1}#zJߝ/?l0Z/BwҚbad bċ6o'?y?Oܟ޼o7z}߯*a7|*7ͫ/>~eӏ) IDs kDX/Wf0i?䫸WWEV^w3#tnr wܕW}}Ro~/zYAm}Xź.Xd'5ڵ {Zbz/.B?}_}z^u_weݯ"/7o_ggG_~W7uz^=ޯ޾}曏~W_ן~է_~ٿ(wSI lWxqg"dٵFь+#Tqpע ]b8^= ɻ.{)Q9]<TYJ+-MJ5Aq%o^2e>AXJ, I0ɠ±I8W{3@aik<$;*ZG]hfal0-ҦgexPs)G1Z{4nS1H~o7oiΩE(W r"'q-)t-˯_|W~ŧ}_~ǯ~DYq{Zy.I#[ʬ+k뮪h0#q4fF:Rw s #=8@03F Z*kˬʗ|{%"w37WUHQnfnn ssU3uv=]gVN{//_|[@|'#؅+A?8M^A(Θ1ے:E@ y!T*s23D𡅄$gTG@Xe*.l7chv} FQ@Y˜ b֑$}{G[oyOzn:_1Sӭzkw:٩i'h}r֞k+jܢqZTSg~翰^{-.I ɜ#0B[gz}u]-[qr_**BX yt^ ~X<|}3~u8`CfCKNjm1n7S7 7/_S_"Q&0<55jǕe1y0e~=}|uJ̜$%tcY#V`P)3*xlObڬۦi++癹[m*]մk!jMr=||բ&A'';4|ܶ a<;lD vrq|8$4[$S84$\5_iMSZK6HńK. >+UT?3gϭ3`(:PM6HMA|, d.hFb:ioFN[9'$X0tZ.%fâZ4lZEU1PwagS%?Lpr\;O0TiQ@6,C\^`["PtJ2,CXVP q|0inL%X()JC@:%<0ېQ-zАڱ#i= aY ~GK&6[:|7򭭞wzl|\\:nUgۻgk:?&y׏W%5+Z6t25m{z묮:HZ 7"fOz9%6y p*TծAR I`0üAS9 lٍ~{GL q:ɿmzw6M=Ajh+[( rLo[T>c&fɭ0g )ÃVo[ Ͻ% CջCn{\0k|(N֐YIL iΛYB\j+S{=ڙݞMVr6YNUӴMWU_UGWGO.\K!avuiޓ﫞ì]7lZ#_W^f{р0NN) m! *!XL:HTH4y$8P PWnZ),tږPLJUZbI r4D AX눀)(9%FFjT[-I狱+ NLE! t#q.\pY QBJ+ 8f]J]kJ26P>ډ-k65m5Z,S Y7P#Rer-pjX9<ؠL4('[q zĤ>+;~ck~{vtMnˁtpgUM-&nѸs>||`&^ b2 %VΗgb>B"[d힩⪊Q!fYY 璄#lX™{"γ պ 4UGHba=qoX!.)1[gK QGؿك0TlW{5/*Px։htur7m;Yz\roʋ|Y`ШNÖN%G.S<a+Q8d R J5nw**N % V'MY!*րèKz++ Df$K"DrvYrBD`Q  52Đ lE|i8)(CFtJrE$PS=9ɬ}sOb[ԁiPYWd#BxM H[CarFk+ؒaE+ZM# yDQ&1 "P(w2t g3-qL!U)} *{9g˩ ȕ"U@@`A {M~:ȵ3~ooznz<}avc[gE=o_]\{e_Q飼ܪuMN&q>3a{cbŔ*' ]c*bٚa y&+&v+Lx"&¤lڙ*NW=kx-^rYL'ITmUw5UcedC7jW`WC}k$گg˳/_z-Ƿ̡SbR} h7TftH (l=[M#G8nOqDx())phKOtL/PPXڙHX):)܀| ہAA)hǻԉ{Rjc a(*̀`JX .FC,}\:f ,fI^XblU4SB ԦiYaFf WFPحvhm)mNtzFk(Jfp7JpOE=SRh(C[yW2ѥPHJ& e^w1&!:GϦ̦Oo or8֪~iuk1y<~fœ %7\ϱL␣o^:Iǵ:GkºeS-ZLbR]zOk*֊h:1-b=WK^몙oh\U)Pn+Lj{1⢧ UeKދuY{va'+l}xވZY7䳙:Z)u~vf}kȼ|H>hV_WSfNsc\'}Eh[Y_om+=wb,%PzPIy2Š=|~g1=t9,z=mMչ\*W-o?>`:W`st=y:_j&l/Wv=y/]]3@..L%a`V5填(MJOp^˃¤S1zb`^Љ( J#H)"F:b`&˒i" b!%tBƨ6 Wbp /e2; YлB댭&y̲]ecv0F3(CR860lct5pn0_]Pr  K ]1QSoXERJ,Z9+ԋSn͈&5`S9!dXlSfa!N Crç J\ qXA3.nEQFeG*<]țhȤ*1mWo  8+EÕƔP|Rig[>s{z^aIgL{pT}UnbS`Ή g!DiٸEEN7||R~14B93<*h@0` GXF]"t5=[ɳ׵v^aJ|^$vw'{ͭ|m>9ĦfwVUK,&je(Q0OxŸN:x&v2:Oʣn}ݹ'nm߾Hf@2D *6/Sg>h:YmUJդY7UWU]|Uy-Wԋ24TEtޛUw}G뮫nҶu;[.l_=x/Ÿ2L@Cx" M.NKa^@cwI|R(6Q2GK27 Yb~^*qLE++%&"#$/%S~>>8w@q Q FBN0p!u g Ei(aIױ df :%]OrQ݀Vk)Op3m8 ^h8YzGEqnA<6CNģۋ!ZSMmʸCcbƑɅ$!#І%aІ:G9PSxgj(7rdN7i%#k>iz:ב0:MJ;E!)Ќ&MUaj>'M]SoZZzɍ5zG}e )Դpu~o;tE׋(RiH#ݭY!{G m]H0k0kgGf bS,ؑǢDR{1(kzyx ^}U,3!N'ǵ хH\#|(+'8ٻYКj[HQ+ XFYw.X?ۋXQ26KiXl- j+Q0rJUbXlx.;0vFyp9zSafW)&2zsοvŴ٪??3KVT : )Qdv"+'_9\W[;Î LcKGW|q67LE۞MJv%sM=ebP+F\k܃OUpȾS>ni1^ hJtub#*G;L;R }dۦX¹ܴj|m CH] :mѷ{ QhT|DGv׼Lsٯqmefu~>x> j6]nMI|[]Cs[-Y?~Fsǒ4B2Q|2WK1캮InlWz=;<?W[7@8"Y^Ĩ@oP+M 3"\'2ȏ,/.$b/>J+*-,jKMHLgsK2 %vhX"A&'Fb)B08%QK¨gz1^-;P$E  V@NJi<0;p^,tSBoy(k֎H M¹&ü!p QIF2(9< S2u:#ԃ1O-s C: rXbV=WH 7uBV@ ܦ;]ӲEǮ |?܇?}nH]7!=l9}UE )⊑tA~$we ʵk^ݮ5:GmEV -dB'[+8/w-^Kc%šsvU}] O.| O@]c>23j2+2sQN 41B.hH35l$KyV#J 0\ˇO:;t#QCDŽ[>xWH9L<]O% QvQ(1lY2ePٿbMm'#$eT^9nǛ!~A*v>4uZ5uX.gޭjn(zUF`3D+rQRQM?X!6F<*OUsuG'{z?ʓrurxۯqf`kܚ̧d5}Czh{<|[@1<~Q3{/Wp,YgRľrbt{훮k֫ٺVrk}G.a~T%QnB"$$+)~ (~QƘDɨN+-O҈f"J((nk1"jړA4)eyRK2رIf LXBI6`U辧(&ktoŠ j>re2QW7jF!?ˠewN՛ sObas;1\VnK.2m4vqhzq>t}G(0";7kͣL!pX>YthCJb,s!g9zsk ۾p_밿wW7o~\Jp#:^^:;>$޾vr僓kv+ mvw3C5^:~ =Yv~k;;:vpѱ{hwOfڞً}:+3u ER=qaj; Wi̻緶8h]UU읧sf{G/~`XW;X:njyWl21kTI pюre!Wz' iªE p{*TD}݃YqD@L[7pWWl5vԥ y>{;?rb+}OzW_}7qzf;ᴺڕ;v ]CqZ 폜_ٞmޙlMf5;繣͇VD{k·79j1rQfKgk.=iiN]>zsۈ_|׻v?.G#F lH5)I5Gc0d{l8GE!NQ."q鴲EX4 M30u$"uaDR!*3,XjD$mߎFN-n(+,䏫bH0PoY4DB MbS( J+.Zpf&! mw7p+n!O{w8+\>BjS pF_QECz>A\\_nw~sճkW;sN];߇{j*YL˙搣8'ΡLF^_{#n@h؃:ཿq뵏\G:Ȥ}eA\Wa˰vB-*yyƬqmO|.Pf E-Zɨ+zpwR=[ѕp%'AM͋5d*8`\Z?wZ/QAۓ7]ÝsakZݻU+0C%i[f|G{kf#SW?3G?7Ϋ񳗿|دUc= $=;;39frLA+{ B1q;d{v2CL*)nj55?Z? -9jv'>s~~Eנyוk޿Qd餹67B0[S83>m>]3~?Q w۞:7sOݳW0҃LvgX|&xyr=1Upw7zqZoWWqZm.L^rww}="y7GMg#//]eꊜxQyv^ǫcvrwZwmo`x+[d>]̚դ^Wu_w?rpmO֓n,jv&@s/ɋꙚd5H:;?[o8cv}_w]ÿt]G0b#`x_erq|JeDq9^79 yJ1(*ŧ$VgZ\<հqԦ{}[ԁhшEM=ugS3M@wciIj& N ,44mULdPBD…̉uɜP" Ԅ$URB}@"ш(39ȡ.2QʛKnƜsF5۴UqB!alD)X\Ou沌`'JQF5r˫]K)A$j^s~3_Mx$ј膰(t|ˇ[05MzB3CbD49ڮhٙ @yώD:$mgw~yƽWen֣[5=v[[ĵ& ݞY}b*w>J nJMNیRCܬW+=$>Or{z1 dR_||ž[IIZBt{ۿxG3Ol}7qeە{hnc]Z<:# =vI˕ͺ۪k']pL ~I;O?%WOY]Yr,I/Ȍ\+ھ'[G\w5AI=VjoxuYP xp1$i.MG1h=mMh^ ":`If+HՎ+v\\Hd nlS)4!nsӐgGqYFuN xC0UơTB\(,7!dώ3ϓpO8_OLue5SOrWĪ∄},bOzLZ2v.j0ÃYK4p%UP-4\ t2oeI0hݏ?гUOd[ ظܹj2!qX춰WDžLUm"܁O<=֑h8&>̗>*oxу; աSC؎|b3}ٺ4^7U[r}EɭE}j[/oo1܉tQ/G\Q_ۺZ5jR/ϟ}% R3@)@RÆa\CSp1Ɣ=a?/e4i,dq=Q0CIJbALŢfAVr񞡸Mt,MJ Ŕ4Dasp@) ,;/] x۷DhHgCl(RY@2: j*6[M~QZ Ҵ %8aȅve5lk\V.=&# gT,pDj:t4݌¼˭z1Y(t1YHi%+|#j #]hnY/ۧ@saƧ$jОpԘ4Gr0MZ?\1v'{$W |#uED# i$GsWMaģ~GQ1W'O=&f !r]]\.~;ڬmЦ;[S;.|e}6X L45Qc;ǎpzpHkI%xkn`]:jH;G S{>Siz0/N/j̏{NEU>W=y;;s"}I6UWW}#vJ0$;ޱfOw'f7\Q׷˛W\_m]{Fxt34Y@E%Xƒլcč8Bp#,#HBS3VEO-t_QXIMDŷ8(g%!fO,DVAlQ#JB@l¤og^eooi35AХxf=51{@f[7YS [XT<ٖ9o+ O䷌zd0M GmyeRfixP,-؁inNdN5WX8#4PF<}̎TEBB)0x,20kx- yP&'4k3=2}h8֐CV'TV`s aMUU51|r$k+oShXu&Ό:NiC20sngޭGaMQ{c̒!X{D5~ *R"voR:RI(.&`NvEqXů}ܼI1UtaV9gf73?[}cN@sSW7|`h;0~xk"@#Cz*nE࠹:֘tyUƓ87q $Ovh ŋi;yyUH P&0$e+YGC/dvB֌d^#˪uIL^!Ĩ)`6Nħ,nzʱj ñE"_wC $ՕineZc U$lbLf5; I%L(kYmd ^:34Z̆X̀4M ]uƵTeY% &VYIyhwFrFn"y dMKShw[ lț*s?PSpS[.+w?_كEm#sb8 2s|++vs٨d%Yt@+M)kc2O4?;9JN!BRx +XS%R@@re)b q: Cp7P1T:S-%ʊyIǁ+LU":.o#}|//~7^;S"q;?r;>{J%:_zgǥ+CBkw@P^nbث{')]["LMfw=?^ vϯ7_% Uj{?2{irJf[Wi 4w]## $ea0x"pk27)'$MPi̞ūQ@<"xf~U"HU,(5nK-("Ed"`IwbI)LՁlQв L"2 Iw0ihQ&d!Jr{3;J|x#HuETL{ȅ"uPgU^ZqQ5Q1d 9c|a㗰HAaN vTp qVI>Z dRktr"-%"5-kLTG;B%@EgAVʇSY7i5} zxkCf jR5ڂڔZw3X*cTZHT)1ۓ-a,^0fBԊ|3U6m關X8zlaUq840gS+DxuR9{1R2\~9KzyJav=ڭ+g#h"ԸjqB8̕#8BYѩI;ř|fD"\3Sz߯|)啓-r_Wi}壋?~h1 TMҰ O]Նo[33)Nw O2ͫH* -G,Ec&{Xs lP 0Xj(Ц[>أ)3A]L) ]>65SLd)M$!A;MʩL\eK: Fe/]he34JW :X'h^E#B݌Ý| fIXf9*"mr6QA ޺ty\ `hi7<$΍k@$%FY=bjZn!Y8v*?h̸C4g+@^a4u@f7ʡIMxJJASM`L'=Ъ턤.JJjs.ӭ0FЏ'T<'3SfrQ!o{u??IUMQ@;U/| GGkǗݪ!G͙q:P>D\% ߟ'8zC_6>2{wlbGo}-_/]׀*O*To׏n?gj_4~ƹF,++L>eF6J/ Eqptv#dӹƨ0GMH/Ї*$abjL,)+zB#پNoE7vFXHݤfx,OOK[fNyGB8Q4;D{ ֲKэj 7?؏-i"3i%وJE{..gQيdଭt+Gl1 6 Ȃ<Yml^P~v6R[!Ka sKsQy1["L$̆YK$zDjI(4.V %+%Ӵ$F*mRS0dfam̌JSb(/V⇫ŻP6BhToi\2I6܈5nȵ uc'Z!,=.ըuE߶=^xbS?^}v⪭qƽQ ƹz/^)jo>E7TjH7 %J&(@`OK''S|g [M,b$\7u/~OG/o#ͽ~5UzDB2(XPܮ,8 THԃEI.`TKȐEi\ eB$Iz$V1K2 IJT"62W J2d6.\kM}EHvY.,h#.I@iG(Xg#j mElD\ԀЇc WSRH75 E-vzsdKB#I3%G Ɉ1x!4srQh`CN$H d]l+=E4>z^P2a9C7wVpn*) ^Қ3!tlJ$0&@D([mzn鰌/`|=>&Xgo?+_ݯgn=۩'/Nx?[)KP!m њɗד֜}fY&B=z&fR>>憺iI<1uK=%#MX !~j%w JDEDzaޖնGf=l|F8A6y(UלHYDc+84XufTԌ>P ZLxӢ HVp^ð6`/}obpV-MLMȄLHQ{&fz8%iQ Csa]}Ǧu##ף]tc3+*d2V] n$όm.R-R}}G" ;Rh[pvZU܎gV0w" SBn!Vy#gD_ʯ_ٮ g"]CVռp|?K Qh\WJF֣ҰrPVA>Ût_{"3SM$TSɗ|Ы+(V-04-aFOhY[c,!)[)7iPg)_)rbQs#SHd,Z9u>w8}hT63@ XFXD, A(Bg=s{p2&Dl%b$*e)cC;ME:@)MMH1H3hFAQC3TȎ6y2*d{1Sgm{Q}W_x~*єcHNFn=jrph.R[G( 9 ۣƳN oiN\@q1{rwQ313>WվnDވ>& (Q(&U)s%E(1qDyueJ:Q>2 QT8azuņ2fPZMGpZ|(f^H Ix]TuL_R6ݕՋBD#X]}-_Z E̿[,9N^tD"i{fT(޲`csV KgTCÔG`uEKK7٨ZA-o֎2eAG\_= ض4Ž7[jU!C=2:R d$ tWeBV_9΋޴B%;i ېǜoNo:Coܽ6> ) Nqhp,fC#Z2P;L7VpDzgFܜZ;HF&GIÃ\˾cu;n'"1~t1;?8yr(5o\#ZN"H@M-EB&a F 3/ krܒ.G e._L$sEEh/IwǦaC7߯e8E1&?u'Ꙋm]QaY"U4cXI20uSLIFX[GܸMMD3fE ,ic`)B/]]EdFS }PQdV& dF|P!1S1R>}{ *N\ izҐ4ñ6pz$rv"x3|TdC?huM%HL[شuvHLLݩ-͉5 e瀋zN <ey7}d(X1_Ξp!'Kad@8b-؁o),ާG-hІK[cuO3aȄxT/2>\jqSɯ 0;F -USq Rת֒IR䓔Н}MۋЉxhU|򐰄 JHaZ߳t']TɝO 43B+h%H'fBʼnr*ՒidJ$R`Y$'G^Ln#I K<~}k#]O}ycs2&AY *<ȗa[ DO~!|>}eiDM7H6 v Z%S⌀۬#7$fi6CpQ fFdˊHoXqH%sIUO+QkQ$i%7/ePK8Ѿ@f=b"=j+sBkGˆU4ãBOeܤ{FV^֒6%F˨I&MHN:O#3P{]r&Zۖ 3<ʚKÐo1`&RUhPX!aYT-EF{}XhL1R')$:#&%N?3Kl 7c& Q}:)Գ81Dh{)ufe@ܸ;W,wHT]gQ:?}ҬaD{}%S w@EJSic8c@cvɫ(H6@1R?v(1kb>Rd;,K˼>2Sy0I 2LK3^5Rc0Uf6/mVND4<+V7b A7qB:LJU$\y #if fEK)&Ƕ[S'.!:EI.U*!]ظ`QuOk!IA0t([h"*(D'R 1TgL6Y"lsYD$40c^Ƃ. pyVų;lMW,y%D\tj9X`gFJkt $֭u<A!y47Ԓl VM3%3詢]{q]2h50Juޱo֚6$G4oW8!dD t4uV3ͣRهvk=;&K>PՕd3PKHg>?Rsm}ҩ61Lz"uhI0V:q6/+&I#x5Rhྚ*۰I*o0h]2@ 0_ٯnc`m[N[ETS2#%WCyK3#@ʻ 턹vLҒSh7F:{,CQbD㌠b@t |f<QÕ)jCI]cvF3)2tZ$j"Hʚ #M+MݩF7I1Lkg p\aj')a 9ՠ򴭨IIH*$&eY<0|s{21)nvDX0lR3AK;mhfʟeidf*9PExEFhQII`heNOi@/X7Gdi3דUg ayS:}2h7ВJɻIW2`&Ĕ9)L1遚eJIy 0{WFQt 00] OfBe5tyu>A}Ep1?{#tg2w^{xgUX e]()Nobg*fS5GgSFhgjK!Ъ T%2u2'jNJ@S5Q[G)>FD¯F"؈ȃ2ڊ%A9tۑ5eF!m`(QR0{<[a؊n࠰(>PK*1̩XӏSD*Ci @Mdf;Ny8XHSJ2ff",I>)uj*}n ,uI&A-b1n)2FfiNʯhBJ?#-y`v('Z+؆,g}& #!r[*=4N-n|~eA/Ʉ(fL;o88&-# t ,q-iX ۵$钃SpRGb0aX(;a;Nd\>Vlbma<)eI9ژ#%-S^36H8..u.`՟~2Rf 0fZ]d2-E2MP1ռ+pJpȲG2ebdbZTˏY ӑԏj%u0vW)85ة{3{V gc8:bpr& <΃vE3n峪SQua$GTȊmg1o~n hH#YWb@ Qox[)Y'XڿeS ьnaFws_HSub3HzĹvLFc Ղ 1LZ6dԺ*UR9ޝ3W {bMG1. fԳ 'ƍyj g2 L':[gbXz]JkÑL/𛪖W,8M~u?[:z$bIJ%,; LJLC*d&}؆Qd}|84.Ś`Fgiw[bHn'嗑&Х\kI2hzGvDÏ,A΅M9Hfre*Fhp`WRVf\XIf*q؉,`=HmR8`QHΈ D.dgEobL"Cf-;N$6*KD16.*pVF\2@\-/[y'1tD&)?bT,_8Y5JX$kYOv3S ,nmRMJ"2I- ivQuTTي"y$ZKsB/h?7jL|3ū>no@%m58V>R#q2gY,qT>mt[AмD^(opMxS>~*N*qR-_YqyVyx/6}oVk3Lίn_FT>>̢csU;xd/ibEl JɷIM&LlxdJ7dR *u"ҩܟCai>zڎ*J&X:vԨ3"OKl;g9&" %WL3ӃdUMDeIb#dWؑ {KM'[7)yHH/*n_z}EKZLrϹN':*Lj k| gd$Dsfꃉ'ƪnIV%/X))#C[`DSkVtܚ_db[bFɔ BS0B12#jc 87GIq#k߉J⳯aN厁MǕձLBQc~D`./.RR=]`24^[2H*Z'>nǷ."iV+vhKafT2%iʧZTP煉EVLJ #pkfq%-a-<)͹TlGXQ8(vÕב=EgH8g nn-3.FFLA t#H281>iP: Ml' ({]Ki0t%>WT9߅i xW2&LHyG N#l34:8JʼnTY3^_fyssk63؜iޑna2+ P Åd ਮܛn_gɿwNYߝzgſ¯(f|gȷ;]^_T^:l@Kڈ2)Ho`oo 9DZ >:.M0TVWkE:) sQS _x].56 ?sb0ʙt0Izf󌳴Y%Ml*45g.lH.9bEq14Um51C#]Ѽ 7sq%MWSO i̗p.s6CsG9}ol=,q(dC)`!v3'k Ւ̯bGTaŤc0Ü_<3DUQ`0([j fV͘ڜ1 ?qg'QJ fNCUy.# `( 6]ġHuyz};DΛ !Ir̪|-X`Z&";bMl< 3K w ɜyC,b*`Mpe'Gl),~d'2t*us:~htA"ԃur|wk-F]m?avk/ g+AHgP91UDo^8o|Wo|ʖ7}qŭ P#Ů $:a(fy[ʂ@V`ą]|ۃQz>c[X}tYTRAo1;jox_Uܴec9B ibLjv'׾d 3)/eH~&A!Is i"DOfzꉫ&U5>U+ݲ"gm#S1X},gFm>6/Tl{v?PkWo3r52>ΚBri&XxS5\4fizXE,xCYSsDi jSQ\" H ?hh_yGY~"g *COrdrX2%R1Q1HU$nXzN E$ d=mORLZJGh1yJl*eԈ$ ¥vKj( ntebXʒAǪ`##7b2>XR:x:xJf쇆ZS/CC,qF"iNbX0† yuN*!40J гq;Il3E$c(XcX&5; %w>Pxp1D'7~8;CEYҘdTΕ%/8ioO&BJ>wx.n=l}yls ݭW?[zSͿxņ*1uVʲ iZ07HW#fo~*srv)/g٣hW?~Ԑ F !DSl#"IDJ; d!$&y4.x4 _4&X͂dXl"+YNQC2(%:Ŏ"nlUQ3ޱHxlAnf1/*e+7#{b[,|њ<IrNhY^R;JkQh( ]VdCݔ 4k x`2<&cWy΁&{lfyx\FT̢M GMy27 o`~fMG:~Dxj94] )h\1.powܷ%$7N:P%10o%QqZSC蚢Z˟xSmwĹb rg߿n_Ka_};XsQ_PdɁ\ef7(7io<^&ªw?S;L FcE~ _on/}qfD$.؅ٓ=[Mfj"yKEhJ(sL d^RU1A<}`q%jX9b&DҖ2ca(LHa S)7Blуyo|V-e" 59mSU6H)26& 0ʌ Ј ,ˋ Gj?"3Ⱥ\aIN33.EWX*$}+!NӖ9\ Ë%S+hnix(˂mn"bEzq\jM1#6Nayn!oVNc_A\*Uẓ:ٳ2Q s?w$Ɏp%4iT&im :e F<cSk}Jw^~zog̏Y#Vr}};ކ@p@dpSa1OxQ"{}{n1dO?x?2'|F(vfdw\`rY໓/PYc ߐf| ^+H*R. @*)͞z蘤\~wT\Tݸȱ[57SZj=Y<'v?gs</;k_Q={w=oR_\:Kph8UG>Nz39nIb!Łt(.!33JD sS16Y )#36_T!ۙCMҡq,Kf.jx+@Ҍ"XS/}U'HҞ"a1'_DeM@7TL6\UP/͋Qd %0NI9Mn!G ҚkA$9YF=F(u @s]$!.+9;>6j3˃@3Fmt>uh^ˉA_A͘^R#|t5dXBGhЖ ?5ʩ! E9n)+bMNbxZ ըNo8E5)7| Ww% 2\&>zny{=ۙ"NEt{|:0tvzNu ƻҐOn-4@qz+d(X-{4UED5K{F }:ɫ'DE?j̪h63y4!ZR"v}6چ[$A ЍhN!urwNH{S^/ٷToQ[m=Ty·W;R WG_~u9Dŭ3sS57|_cM xk.LdܢpIEЃ"PҗlC-dFY3G!,R떖wB$@$}2N@WrJ&X,uGd؄ra% vgfxZf,>`i1E8xfKej}'hi_LE Ι-Ecr Oz,ىylS Rkd Eac !9(b/GVABйVHFG%"CMS:$\2y%n`%y6!+^h5ͦGl8D95S%fp6"7 0%2ulsdR}Ğ+{>ػ'`bbLdLt >Kt$bAY:I"e]8zJ̬ :TJror4I_iүyN"95x`禎Z^"VkldxF1}\Ŏ/i;auSAWʯ߳oNw~~].}YU\׌_oUM˘@%mE<ԑĺi$ De` jm*@R"6pe%2EΨպl['#sfafSJ$dd` Y$a1gq/iFY=!UE>Դތ#ԫ°v`$}(ѤqFذtNemN(L<26#*:'穢[˭3s}@dTX#0$" ے@zґ<1*OU'zfv붫>Q䉦{W}{d7GRzOg~rΠoD7&`=|G]׽P\R)& IhRDY:f҃\nx]Lj3JR .%L e_f2W 1(YQbfpZ4nh2mo$b\g cG'J"٘ݐQVHVZGxB& MV'VEcU5ftQ$$ OZ4yQӄUM,Tʐ l KsE.׶^0Ń2@ F➂A;\!:PG|*QS+5WF\waAӋNQNs ʎ CR!Q,h oZ< X¥߼ol6<MOe57M+][QȓݾRU( ~+ƭ!qPk6 OtZP*QR+/ rVq3mp8}ʝKۡ]_=\L?K_~aR0ucSr/w-G l+I}hED˿gM߬g~ ?9$lsX_>8PzT*O'.QKL7nUN6mt}{Ǟ*CJƮ_>qƿ2 /~?]VSM/G;U];iIշ/t4.d;#dP0 1$|RHsyf{n,k`! :htX:?d.D6cƆʪ~VUDe;=`^8T-}MKY#"/.dDe&<94Pw귕N)N5%) Jbj.Hh]Lx$Yڄ:h#pi±sükf?JQ歷]jd $]3k.<}c\u`jGS'_+~} `}'Vo4(j;;UMvҮ}79Y~v zc[; Er-d<BX@ b)0>7(rk}cA1"!YC2A&e"ߒ 8H[b`bq?nuz$N_|O|5o:FMi{!}})룶bK:OtO=2={u|YD#B 2j 5_=?|w;v+?.yT\9,zq>"SGmF^ ?K\Й6K8e-0d=~ng~aʳ<۟\x|ng=M,bsWUb :m~S4d Q/Sr}o~t墣u H N&?ͮSFWN9jSʻ:q1T7RyMs ?]η߅6㗏.CԔ)xM|mr}؉7+3 Rznjzw_ǯQULU\1Klyv}߄jk]$TQ& X4aиED!&(KĔ9'b a5> N,JbB+zȏiR&l/aRSTU8J Ln%-+}xqȦ(d Ǫ89_w9-khxkwTKO۶CZ2pG1U1 arTOP#bM΃܏>y揼=ݜX3>qo~7; 2ZwX Cc_+﫾fVqp9PhggraߠoW+x0yUSWg'T%}طo}n2??k5zvv2{mq虏vyeuܳo\U @0k'bՇ`1\*ɚW8wr%!`=HD O=rK۳t1.'ͺꪪs;,Y=N:c35nv`_s 7!+Wf_ich]_wdV[rut#^s`HhD.M"G!l)Mgϑ -h4T*"|D H"$w> Q I HERDAkdn= kPZkr)@~LJMOJxQ.8L@ p c%3CRͮs26!4aJ/Rr+D5IaGu4"2,&D! bM~zq󧡐 ScoB]&6lP& ]bCy\4=~771{J;'JY|z0*Eo9ҼAgNQQ#~z[Ų#`Zhyzͭ` Y602⚃|󕣧=~Gg깪ݙw=3u}R[bqfըpE̔Chb9ZrptcBM CW[6tĝ&_{~mo8b?'_Y;&cW1(/63;Yi#D!S.ftݿm¼TDD^Z\>7 ITx5}]X;}k5ڞu66ރ7v7WCN܅jvaՇ3$ŞgO"8r59=n]hsD.efb8&br*f͓=}xaN0[·t5&iNuUU_<~yzd?&s/$# ""GT rTn=}qkjlܾ|=/sxgĚ+ )&8jgxcLS,'rQXHCDUdxLC1%Vë.&AwL> dJF}3&՞ ~Wk|V۽^O[_0\hl:ޙw\*1KrZ"$&ӭ`B|f9׮޾Qv}ιºrO%Ѽ~}?vzʻN2uwhvsG}ofL*19޴Xt {aQW{,[Ww{}ɩ/ńV^h}fr|R}ocՇ=;ڟ jVϐHAډl-+:} DL.̇s懺n+-|)IEL x{d:YmrҬ'u[Wm]fx^߻:xoϓǩxW \֓g{/ yOs05?[|:x+W%hM<{X|C đՏQ151@CJ."6U$)@Ϥ4hl@Tv(]; %;,"! ꠈ;6Oy&*;&5֤Jtbt2;fx>].y) $!| wٙp6N JI*Lzb`TF0(ûfJNKv&h˂4[nflY%eEBЩi.:wC T90!.L3㴴Q<Fu iyBԓ2|vTsp(@6ч|o=m<_u[-OZ?\u\{޻?snFb$Y\A9Hܙn|<"v*jkZVlh1q'ċ W;LF-` uD`vg+j+1'1EP¤ƬA*LO1#ӲjM}Vx+fu}ۯVGI<+mGa"l3|;5;ᕅ@W% dQ|O06;JUtwWfcr8i?}O~glMjڬk9_hySgzF ~+c1ۿXϏ]߻V&mtr=_gjz+~K["F>AO2bqF> K)&Pօxu j GL6s4@y1J(HGSc''!V |+TInL~<+BCU%AHdUA6A2wBH( ]B$j!%Sb jOdrm#914 3)?YM,gJT1z)qIuwTC /Hsvry E`؄`8G:8xp}CS?ډq jtZ(0Gy/Qb O@a")=@k#P2U8 =VOwbl~ygQ1S+?7ߛ>}"%Gs嵗oW+&j+kТv'[o>5q =1ąּX:0wvL,ô?:TBǔ4\S׋XyO`p+gs ?^oa-B]&;U/ܤoŅ:qbQ7–;8M•+# +, n;>,qq=;y{z=--oOv\vm mKZ<&!A(I󛳆'\NVr,'մY׮z#WړHT o:;檚\y}#Njۦ'm;]f[Nί Y-OAL*wu @׿8v`6@'S勴LF#(D<#]_N%4zT2T` /H4pDڪ*!LNZG/|$uiY`$o:&$ &)!G $ȤI ̰Жe<1;"(LQ9 љZ Ph)EBM_>?i=ٺvh]fRyd܃Y;fK!Pk.yW;*[Whhٸ-G{͋Ϝӫ6ØHY56]<v+~zmv.,laaS 7*LVh ;Śֽ ʲdw޻OjѦ2j5=T@x*ΪiPoU{+[j++乊449[n+OJ$n4; ^t+PrT;ԝ;n:DwJnx˗PA*'Ԗ cӾonN't1.ͺMV"M$}G@ĐI5sdt=u]}uu7m;[flV7կ~w !&9ι$d%\'r&4:GY B=qN4a&w rr`f~{#|vkNr2YMUS뺯\gWn/$H`qWg{_&{2궝t>՗~. L6bz#YZ*B_@*E ĥ#<"V&Pq(#AE$Bk3EZh3t=HO_k~Y2/OUd@8PV†~DhoM,P$S栥."%ђ Pa:d$"H%Fiff/d, o m ώ DQ(-̓ʆS))ȶAk1 hco1B"`!f0?^q`/Y?QIL%10V퐀= hG{a[w/GY=S&})Y%, 2/mrqc^;VWqv-h(VMh踦KgØM~o^|틇w/׺ݯZH7?Ͽiaw/~~8qwOw^{׏o_}_|}?~J~t|xqY̫oxg2?}K/.[%y{^o UO@E$,MBʐu₏h2S"IPJTn2U9AO75=ThK6[1,LJ85.ˀr#HJ;(4iX,f4صc)8(" Sßoffrv.-6~FGt3I5v/XX+W"$ux[ewpgw {ٻ'L@8V8w_g~;1G=93gҲeY2$ O;hg55yw"+fn˗K*8"~z'{:2@YU_}|۸D$)n~Vc%5xu5m闿|7O_x/_}uw[vwwӧ_|KǻoOzm/^~rw]ᷧ#n/_{|wo^{|RҊk@uBSVW(!;] ۲-J~V.3lm.НNI9EY[p$DK4O>-> GQ2KHvd*(ҁ9:AN<5r6lu.$M-5z7 BmiA{-ڋ~?.ntw䉤2s,^0;̢z :}cowOo}e#ejƴ\j#2M3n2Kr`9ey E,Y06Cl͑VaRxeHdң3I%NiL &u-GS733c_Unm8`YJ ֣>0lCx6;o'W~tVl^1-6 q{gg簻$A\s`{}lz4qg8a_ByQ*?`qI%aWCOjZߴ#zE,ZD0*G|2w;'1W{o}};^?7;.8'vۇJ~vo~">Ҙ*F2cEcz,}^ʻ8Tш$htPq<&J ؐ {;~w?~ˇ>ܿx_Oip?YdȺQ?{o޼~go_oЬ6(YV!׫J7];*&>*q_yEzTa+Eͽ0{- fyC rvpXA;X< Y`µZŐIHz&t#D׸Ζނ뗡C{uLq' h"m-S9]cΟ#sx=eq!L{~Tà[y#n͞ƙ[c K߉Π=/4g4n3oyT1.c({2NkgT sx)3#`*[7;޿^}x/n;lV{܏{{>/֧s?~ŗ|Њ`[6 Y k~ r`eǗ_?0zh0+Y,Vu}v駷p]2:ql@I'O@Kl0o|u;PveG<_p9p[wpo& FƆ/(kjeh7{/?>?.|%B$L~:˷:Wo߾ˏo}/XWGOJwd.B*ڽT{AA*W\$ъ6r}r7ouҸյڄ6c!-Z$ #HeUqł%j`l֭Zً#doa\i Uk)D=@x1VYHxXDa`x3cQFok#Lu~ef[5ΗN}j(=Id}. :>[*~`^d6ހ<`[{pk0WL; ctI'L/ѡ fFme~?91Lsre[-Z_Îk .MC:mnr2l<ꥉnfxw?}O~/n/vb ;?=woV|ǯwsg@RE&`2eh?qл^|G#~koȄCw8/ݗ|ApkqގrvonIb@֐%C6+ \0s53{;w?|?nwg<τh1qGEfg<儧kc4#f8VGEm#jjyϛ}/߾|܏u`Ӌwo^}O/Gկ$WwY 1cr:rT-EjAOwPe a#|Ubne8[aamuI˸1v8d," ī 6+#SfdN;e >$6'Tc׻"52aD@ܩr#f{ݑE#0Ѵ%krup)SF&h :e,/L{Emynyvzd9D(Ddi _!e A=S  Lg  ;`S=5;W$:s8/ffs.I?޻r4kQ/˃;#8$!5K(Y(8 M0qO??WfGx͋ۛeo}6+h' ^WBe0$t$#Գ^{XuxZ G,eǺŊ/+w>Cc = *!/w +ƌeSi}PEECk+2_/}۽vwr;ۺS|x?|wJ,@%F|\D߈|# j#|Uwڗo^xûtW۱nǧǗ_>}?'g|A*)1!Ėg99XRwyp{՚WG-ry'%j. ٚ"wUG O|oIhu;&_$h!Ϥk9WQBbBm`-XTs shtP/* nKF~bk+Dg?糟 ښi4fop^+{ۿ7!D19n'^\Bmϐ^r,{yvsl/~nW_6dgM3f?ײѾ V)L3z>{EY@VE;vՌWg}fOo/򃟼{i7?j+m㽿]'˗9-%/ES/fT +fR;(0tٛwYO^~f*\ӧߎuįߺ?~OoѷsflnQ#SqB{|nHUwUЊVS<`ul>wZd9EEO0M% ?_(< p&Ivy?$ |>saNM6CޤbhkuN%!A8KCR EUmQ #jt0&FLF66izޞ9st3C {s'E绗Clisڿn#tnGȦN. Ad@ʥv$ Xůw{sq̏/߸O<>>RXdetnD}@wNAL#mWϚu?MfT֕ےWzɏX2,n {[O_|oj9I0bA%ĩ6W:%d{D!)6 jdf}{_7n* wݻ7;ŗX"YŽ>ƾ×{\N8uʗ>!<93#Y 3*CmN'.9uf + ۳ ع8|9]NgFBgѲ>0Y.Ӥ8ewCzriz}1{{|Ow/bstlwVʳs*!YG'I*BDn>z;#^=XxԸ@=KIh/qCTBeDe|/>{w>w??q (X(Wq[eb喭]rYQ@O0ی)%'I< :vkđ`@Q͊>TZ k-y6C|ٔ7;%0C"u@9U dN'JZzLĴHjax@Isy 2wDʹ4gذ0ڴ9Lps%+ FW!vQ-A{h-`Sk jmsq9si>0eNy a'>0Ljkf;{AmyzY8huͨ1m}gϗ_|0j;y} 34UG接qIS2u<<ײ=bN5<0ᗇT_|g3Oě~>Jjt f,Aj Ͻ&H]i@AmSOO nƬkϧ9st.:NdV)(:> K%0s] πeq7xv UДQҪeWR4RO 3Ae5T}hq>ir&7ZOyJ fʆ[Dzձ)\;3 ^iTmLGQ[.Y%xs|& u͊&+m44}n͆P(m(u|K-o}݊,Unܪ|mMTMB${ey/d'I&VݸIYZUI3&-ΟtŅRbm-ݻRPBչvEBis~|,~\=0zzl4?=rfk"o#'fk֧%u.3'{6^(%7*`vEyv ?TP臙""[^;"4-3LnW3mur6/2:,; YZ Ȝ(kra[y&C".!+%Ĭp:i=MY2EuH=Q;"K<{󎮸n!apHpfQI),kBRD<1(=sd])D!ܨ!2[MG*Z֨[Xh4Dq) s;#!Q'5㺋 ^!zU2"0iKwRPh&rH&|򊎁<8huױag?0wxa[G/A{Llr@D8<‰d!DL88Bd [3)obdti@6 ̖P ,7= ?AYDHU]{jBTY8Ga!+ :JF8j\|Jz*CN&}%}5PxfeP&==eK2Z@㲽^g4eh[ɾ35~@<@dHS]jT=Ezǔ!V 5 Oy:>01 t ڬzD \je)@ ]G! ]y;7JS b׿c 8 u&kv鄎@Vje }g8}GMipŒ8VǀM:6s @@Ja M_05UsmrYb8z)~=lj:V44Z*d~O=Ҟ˷Aϋ!Hqj ;=lXϥ`` HG-=^J.pc}ag6)/|8m#h `2|`X8Xk_Z[H{ĐTqSͼT*Zgˤtu)†1,]J)?5*Σ@Yhɼ 6ҷi ȒDk;4py(h{#lrE ߇ +_i' .L$5=\џVl]HbaC{ӏv#j(Q6.ZD.oxeYݗ6: ڷrkch)o4M.(pj q~_g)F/sA)Pp5ǀI,-ZW3h9"A#HCI ZcGQL0XA͟*㋉Wt'yEzmƣmBЛITi7Yp~|ָ;fPf,3y'7i``򢫝+, EchtB2uVr$[@ërE/68e/n+|KP\QyE[ WPLCk\wǚQ]0=IBۙU[WGAqwtDmzT}fWСB?f<6$44!-ʝQY0ttbOT/wz1#Z}&PVŶc> A=*a a.0u<ׁcY'DnW`.LftC 0~ fw;U;ط(|F S o]bنHaϭV"lsljI,dU1| *ʯ|R^∐z-%I 0]8oa#]#o-`۠*!OtAl%%7 Rļpv /vj\`ʉ½& nsX}UYnG r绔;>03ʐZi4;g8;;^/)<<>Gt?AEי!38Mn[/,UaXsHKԹF,$r>mT `z%B(SC 4 0,4.U` `lgt"`G%i %H2mM5T5(p$<&j A3L|$`_XV7JG؝DƦ/,%lh/1+Q(&~Ry=Ls`=[NH3l 'W$0JQ稁ynֶ4pE'&3}̌Qm2evQE_ivY1ꍢHӔ`L֝@RR}.l=lgKaYP,elovh$DAߵ+Զ[l5.qmd`t) _H.-zƹ>_6o\P4$]xZ? _p!E# ,3չ܎VfW4̵ő.&C>]endtڣ` Z|ȻA&y |Tʱb b3YVPD# @~/oZ܁ȬV_:"#wjf" g`c5u|`b×ُ2"B ՝tM$u o+všwJ9𴆐mis<p&<֊ uyץ$'`2.zL*yFXB(5*if,E7q%k8RPJO 5ތ<%N|YOdn@|ji'&@l6ԑ)6$i/uv: Jh^n9=x?fqȱ\Xe&Up-]Oz7,u0&J\JI1ۄJ1V]9c>6I%K(prm2whU/ }^ܸ|n=? Hcl7[ ߇q;,lvqgS%oܵE^Hj*UlyWUv$ ⨌rZmOuq8〣 I-X[( FdngVp"(7pf9"NKV G G<9@G̘sEVIqJ0.LS8BNtjŝ":A0ҿ R4tpěByEFcQ~o$3 ,[ V;EVsLB|2%B,(L+Rt3 L.pE}d"+H؎YD,."T->LflN[`FMVyv֛$dMES ׿Ǡl0 /uHXeƽa$]h2@b9IoPtB(:޵im:A?h]d4>Tpoծ@%|x d<0z-r|PtJ)."h&UfZ8Hg^5;)h> !T#Uك3>}N/@=iA뜙U[,T\4KjIP 7k%TGbqOB$;.fOns(N<-hͱ%pF=qÑ1d :ge;E0Zf0(Fz861tl*kaw8fnBrš;rV+gQ#][|g#Y+0@H:.UF7b$<X4 ỏVxK Y.K)TNܼJ.Yn0 lB4(P;3G$)ѶqE8!2>6<k):C{ M0PӠؘ_`{ mL^j=\t])(?rfGtΰ_Ȝ#shWD ~-;}׋['|ViϺ4p(:DCxG&Ë bAkKD)#~J#Ol"(^DtMU:+x _f 0l '΍(ll@bD^B{?f+Rp`5tƻ}K3=w|~䨢 'QAIMQh\MsU8.hӚ(WL(qվ[yM; *lP&kqILFVr>X^p#c]Ƴ@NX8B;i\Ae %X. ^rT5L.5%?]y& 1QI܊~@哰h"%%pDx?'uJ- 9z#;*Zn=(^Sh9:83ETWi}nA2dX˕IzQB$zŖXt.^kpy*~p&ф@"0`'2%]Q3m/mNaLĉ0Q!Ɇ(Ј&ӭ"xhn Z05͉AhӰqS PEQa."XxM!r`W(Dil=l' _yn&, ]>}`]B{$ң/&5q'my_Ri;k9Yn5jUw 9y`K>ک = "ZYUw=EU Kc -/3I0 9bBZ)VN;jv \AnB!cV-Q /+0L n\e`xb s/WVʢ-t QzyuƭhhY +&7+J|;%R kf;Ҙ\DDZ(?kSȜ!qn0;=(@8׸"61LXb!FţN7#I"ԸxY[fL7Yc-d>+ 2L},r3~-e.5_Wqb/f#*Bv3#j Rm R%LvJ$][u5C*wJPvCB7ʔy_(**IZSMY 5“-[Y «k- n9QgsX>Ȉ;ANbP4#1XC3tcq* ?wÀQLy4΍NiNt{|"rf^ 7_A0jWPplS>X(s-c|3Ne&1U ?jH`fØ+u괗}2H\h: ~)j5!_pVmӝI/lhEF|wM³r&IA5*b "P?Ŭ'߮8R$Ijr.sW=Sa ,9YɮsúpNUǍe Hdg s۪'_iځ%f0TUV&8%ƎJ0óh``3z=BMَ w(wŝсA)P0L?G09MF$jq1lZkt)aLփTy>d 5`"I3z}u0gQ" @b2Řdh#KU|?d,0sؙ5[ϡI2мTY_XfTHu%om;VnqRmi:H .s53^gĄ׿^--zQJ[P E[4*ԦȠ0AJ36@ de+錜fc ^y\S[QHaxo9Gr7V'hʂ,BLJJz`'9"7qpo:8%`_3_V_q]yat"P#%ǝn !D-R͋8<@B'_B#߅ [@majn j%Œ ?٪ iK7[A+/aBD2 kC -M#Kk"XbYǎ ]CIDvV,BUƲFZQ l.2G 9mtx~jw{Wᯂ[N;\[ qgηOy3K3,U ߛcf r![6Qt @:PG!, a,3n:Èbd H|>\0'- a6̍6#.LrV _΢wl3)!6-z9pR!֌MZ *|5CSƚŰW,IT@>qǙEgg%l(Jڼ&e_)8DǔLMmO3gI>۠j[I>UQg@?{pVɥdSW|<~ ad#v,vK)WϹ@ySyU6(i[1j͏'Z ĠuoyD,+rEakk+wf0 āfZm/[GnF E\ ?mB?0(DЁʘь ^NgK<g(iVj!MƊr9ԑk!1enV}Ni,+ <š҅>VaR5HH o GiIeQ2R)b[ꁔ!uc^ h,/ir`4 $n*01Aχw4ӨE/6RG3J%Œoಁ(J +" $BiJi)sdeXٕ׊-"FQ2Eh|pyd)Bmel$:;;݊RIgc05U&@@_o;[k:aFH4fBVEؤeXixo aKMPwo 0+<N䄅ֶiGIDȭԧ~F~E."! ԫ4!KzOs1mݢ/4~V"Ūs=dv5eڊ"eFbu8d\z"s.a%6ͺveHjJƄ v.I5LW$I ¹UPנwm/3]kQ :#ޢ}8C Φaʌ$>HGQȼi ̺B:㹻A'YRM&Ơzx:?=?g; 40l̑XI kT%AO^WiH"28"y` _cO,fkC􅳨֞%YLGآ\鎊ײwJXl01du45w(Hx0[vu@dy(T{A;0/"\Lb7c hLb's事**ҷzy'oS>I+fT۶Á]e] MF;x*2D0\v$ʷ%S%{0>UM 8%\D']Ūjk9)KnaDU$"l UWR>cC3!P9hzQiV-3:FFŔMkm6F | )mG| i[GljR; ݴ IC04Y*.&L ^f^; }VuvQ شn(َQ?O9O2د?7:Zs'Y㺈ОCrEy]Z^|7/|"\ۅ e3-?:e4;afhli[ 23#"忄5fd Cw :^hҞJbڤ*Yð#c53Ihmb<_ jbhi,,omjt@ 0[=D4-DK/6rgL1\`|wwj5=̛07`b)¥]dLeH 1Y)W9a*ZiERd]3:a IH W͌o*cG@qO"Bb ~7Wrs$yc%8yZ]iX} hO&pX{daꅄýE&EtW"eD@1ijd"gj+NVDBL+Ҭ| WyXa@-4k;*Mk[к@  "@((`~4Z;f*U8]aS֦' Fp7ްF>:CMBGHH.e#]ػF4D?m%`,@*:%) { ׁ]Q@$^>1:)ۤqYeϷ78oVmɑ#VJ)IeY@fwX$A5ɿ0YS2z÷ h1PG:LNsאUNQ +@\E݉yx Y4n㠶#݂d8ݡfsxp'F,"[Z07)~$VD%~:Dt%i"j!SC%YY),t8`]S&ynRⱬ,+(K>6[K"ѦqG9iEҸ]PShTk-WH!* =rLC"H0SiS߂1܋*>(<b  `WF{[$D|{VTi4 b(šR hLJi'vg ieBظ3>6 ,T㳙^тǫx1 5P6N෮`EOQ@ CI1m;Ζ08l:`h°KtަT~\쿱Aa)-9{elvL9⾞a"Fl]O7m"%zo`:Ert޷]eq$̺Uu/$ _ N͖)MDE'|cB2#O4k2ǝ]2kcG` #hꅿ#S/]aQ ҎotE"?? j.þ$=o]{I-iBbJuaAh-}ox6O`QJ*& ^"aL k1HLv{B=k0zaW<ƣЅb{^u"MfF"G\,D ~@7ATUF)P!@zX6GC]|^ "<͌oú"3ҫÊ=M䢃" PUrE#+H_Z̑$@˺V[XS$ "w~ç9(.> 5B(#cjj0f S\Isk!u0e؝QP㜻H+ (To$1 *_\}^ l['q{gXkLu3eErUkgD?"T۠(m\`ҷ9bشEz!Oxd8Xʚ5  tʎѲ:B& SN|BWj]~=gߙʘc5PHX)I"W1z| ~+0xSe6!qyDTpk6H-ON5@^QdHYzDkp նy_x1Z(עqaDnT:76];-n-3G>uŤ_У]1cd<egz\IGs{Is!ggWql/{,f^WJUs*W{skQh@*$Z|:ʱ: uؚՀ5 3FLWr"iμ=#8n{h ,0""-F yIjEbzs({G}XQ#+RH] BZܽ[sKC\d&K8XҷDx3s9ڱ ~0A e(c{~&!1Q^Sܢ2NfX)f0`DH[BO KqQgN 25jڍ65E>+3tv&(gTm9ރ\yOh%d|6%HARKˆlԨ vz`#"E鄲%(l-0(.ȻySzOQ>i3XN '.W~(pܘ<"hm="F qCTZ99"(|AN%b6吩i5NཧHV;a䌱s/qiW@ B;PWC!Z1ag!ĔI]O)lѺEC'vهQ/K*qZVb(]K,Pz9 WxE^">!5Fo8]D"1㡣J'O/M7,oh 4q5rq# 2閂!qO(>}v1P]qggĔj(ƕIɸK7 5_z0zҐo}!mk깄4LR>f^Gr=Ο:-_U, IUHlTƨx3bk~M(îTq6If^|0/aY44W[ Du:7L_i&ҶS!T^9JHldXMXlCfH7F9st ,`Cݓq'(Z].fh ecMpgp~q ` `zGj=:Bϐ5cfV?v}OLѱ $> I@|؋|Դ;:dݘFUA"lj 6d C^ey\a%iiVm323K6@!9[Z1G8=iЙDلE@h8_.͢a丧dd :A/<*P t~o(+/7oW/#[D$>:> qBm$F-6{s2ۉRv{=g)t`t !wz8o+ `;SѻoP657f3[>1GbB(Enǯ 33^iݬAtP7$ym g]Bd$3ၬ+=z`5Ɓr!(^A\;ͺяeh&8 iv}DZ\[x%dMG֓Gn *k2nж-8xMPł j@W"9Nr .4ePM4YYŐ.?H+݋^\0p'gX&D{Suu1;b!1\X,`(iu7Y)J2&y6 .hxNM`X9tI(ob֓\4ϝE裮zvޏPD6H[.v%d@eF6)*Egl* Ufai>yN٩_nՃs+cc[Zq<}C D.P]5vmdRӠ*sFG)Gi0|g;b0`Ta\Ϩ*6e s4=קEEXP ˫QrƋK+S9Y_zY7 Pn6N'|Ja`AOO@KVznf#e|*ivTN65>4 ipu}2xB+}DbuW%RR&bCW W(S8To &`bu2Ѱ#d[ NafF ,+m#Ik̡-ޚV2}sguGj%^ihŤt %$~;Lwc*WUYCp).X$VʛPPaLvYPɘS- KV4`:5LH2}1OY(P\5  7m$indxʳ"7)[A)@Ҩtn; @b]BI:VFF1i,8҅N:LiZTT.LncI0`b cوω*GIav`֗Q{N"dۀI]cD$fn_~z$%"~}pJ!h &M ( sJ3Mfv#lS*gmlMD+ZF Bsy׭'JfGcg50 h7erQ7U^=o|top_܎B6g 5 /EzG.nDAPԹ@ f' &Y!^_۪ThUQa ,nX>2PBTI5Sk,Lp?D qG8-501BJɐwsHPbj7OAHHU=:g܍S캗ĠN/KVhYmeĹlytLVBfySMskb*Z㴸6 8khآ&0hhɿzUWs2 id͆Ú,}0:êل]θHQ݁͢pФDK+2]IaŮA0Isxպu,-jĕbή>wzq 4g yP~6I! jPA x! <41Fˡ ٭bf4޵֒~`4w7a}+m29im>WF]RJF1~^Sf=z6 ,lZ++&8D㼙Q7Ɂ *V t4E=$~;p]iN+4 [PS 5 #ŷZG8O*゘UOg̪]UWy'u FVۣ*.D1_rߧ'0-rNL. 9+PSi((w: Y<2yNQ&ln!V¸9e{V^c,h!Ew2n)I1aNWyM  ,@5O}H1)XhXKcE'lUv a%-`ǍECi=00193B&UDGl lf4˭Mml+3#"@գL ge[JIZ! M1[f1r [fGv `1g"6"chW@"~⋊ho&îW?‹~nj6y70.`%5b~Tr-:V/-7:%ǥ y0!ԎڋG΍:!g-VWrQQf!0 ȕ˺5Ù`08M!IU qD'$ P%H9Nf p"FcūoV+0췀2f^gq½ߢ,g> Y G L¨EyBv[y+δ8-ڷgrRyr%i$M, 2AP IRp+ahӶ{_;9oA-q?)E(8A,tHwr7G36Z# OQrm ub^QfHdYN4)3%Gul wsj9%6g~zdGs(`4@ ׷CsO8iW1/*.tw~3(FK8]93:;t @JXiNIaiR_ #v WՌ-DĤf \ȒۜY2 SAn9cQ@@OH ]VUh G-'rn2$\d> #{fX Y]&JQ=RH,QyN ڨUr2@)(bWd\Qz\F'NY %L ׎,VhhZk CKM[lA#’v`(|ZN$)C+v%=lz]&ud*pزR_NN'7񙦟'5OÒ݃A !O=4WKS? ^\:,yØ7/+pIS㆟s yf}:@(Rjq>]Ytqw׶"Y''~M;{aG NFK5*R6ampb'0nKg26e}Nt1 [}T*6Jjش۸>@S״h ̅ _ld [ĆpRk^Iyʷ$?ᮌU="+渕_60g'RZa?*: }`j2RfKRw:u0av i:|2vHl-&J(+m_}.u!J7TӏDhiʯj(8i7p"Ђ(ՆtapnY0Tb0C+*8c|FRN)̦̾k^ʂC@`LS< a*McteQe3Zm9wpV}gnG22Μ;#eH`}. vhFgk"gjmp9\"|}h+U:[ftm$_29d;Ǚ7:p^]X+*Ϯ!hPq[ fpA(Z$wrXC?ϰg۪dZ:TLJ;3!rDM:)ث svi JmEC1O_11~_Nr 6CrPe1*{0A `V=IZZd[*.qYҚ)yyMM"s=s5+-=סi儂Fa]AU1;-0;ɆxX ƤqxEYy*b PioBg4g7:-) e''`b"ha@ uHFnV#P+\DS[126)oWat>^M՚6wfCUuC^mUhX 5hU!e܏NBn(QFo6ǻu+CAY^TWݞˑlqy 瀉ji:BtDQv3ŷ2qU+0JEJ046s9eTh+8W6Q*o [M`xtX%Z\+\a hhtFG0[6)YMHBK(c8Yr0*#%3j4 5/Nю#=D)(91-}(H#vX9ْε ʋn8 SnyN |kT$Mm@ MK{-gjH&}psiʦK/n"ѷ-.w!{>{q%6K?Z)t,ڕjË́fg$ǐ%vT I+~@3#}P;7j0Ϣ_N0* JQ BRof9Sh&%36l1:3JG L=Fe4zÆ,g'ǵ)NaL c$S5/gV &s|$aAh?Z G_Ƭ9j@GdzKbDb,gUtMaHq"W~"gBOü ͽ&ϑF-e :M٦U()IH#@|j})k Z2< Wʖ$v-[dDFI_7+?4%*9^ Pa9e\"bP om D4lKYa.iRƞcܖ$A"˛"`[;e8 u 2'\B95rkZ}^1OhE%: #2n6g/ɍpNfޚLSރ f$uqJ3]c61_jpV`x)$f$) 8KPg4yw KQ/yyKn3!.CEy։ƃ0THc}3Z4tP6mkZÕtoG8ʀ1|5Vp}\(+hjW0CZ nkF)H,~Y06Zn+p2Q$; PPjy4ҍ d;6]rܼ a1!=-tFffufG>:GµJ wk@p͡4S7/86Vhڴs9.PW KLTIaUk1':͐x 囶$nN D1S2Db:VQ$U$v6w]j>SVe&V]C,oG-N)&hmGi$ZA΄1uLrZ'3aKN px4"1jm䊝z}m77c (9#5}V?".[g$  (v&[󉄣7EP >G+vM0Ri,31/{ӳo`:^2z#n$H[.';NB2|'_>3diX;/߇HW`Kmԛ?'&PZE4ƫ1nXL։y,$푾"-3wc:? JarF36dwwJLdlpU'hYI]^[?Spi.{ۙTbh0%Ğ0jG^_^[t7[+lbIR@ 9ĘV 7FVq0+âxJMT@6dOJЖيu,GQ$@(BA7;rȰNsW_"95EEڽ MLoxs (śtMնL?k E`䢮6h5tT ndOgT$zh<Ė'"k @ŋkq(~Nm"H>w^W\yn7"R,LU=߲g+>hcϕ-NkPnv?c3,2pt>.tp 76 ,+ KV!*!g/>]Cϡ7G!G}Xc5Իߕ~> !KЛk 8(_&ii\u1O)XQ1+dt2dp`iA U϶"@Pu9U x+vYeu.)iho] Tg& g ~I`A3 t遐̍5.IG2.in/}7C*m H]8,^e.m]j !>pS!"z޾*(&:x.~d|Y*;l7(I.V5S{9s^ rHJ`eTfO&SZq~1tP1!XX_@!1*@JiZ+N04T5gBp\MFoLsk}Q | NR֑tаg0Њ =IbTu)s`w48>Ju?BφEm0na԰n?:W,?HYt$`Y1G٭U CLÔWB'hxb= w 3Rk\׍UtИ+;65^Us Gk,Ssð_gDQ ȮrF3M3LgȨ'+6.)w~ hxn(MG @d6}AcC}ű ' 2W!~W;\D]Dl2hqd%MQ,7:Aۓ++^M¥9A)= ,,<% VQplT]lg{[&LLCL0@vdP-Ɔ ^XlHQxc3r Tt֌D>[)Oˆ(EkIsxlHS&Ɏ֥EϤu(*[v0HnO"z$2e@\蟭=*%n+) < X`3?Ca5E;}K (TT}*vJVпڹ1քf -$+tٿI)3M۟X3:bm@NJ^ ZXTl`|U= eލw=XIT)^$5wGк;͢Kv''` dSDa:rRr .R !ZCȞh~:UMIìߠV99FMf{*+fլ|k[:6* B7 ~i-4ۤXW|gf˹09P*ii AִqX4PD2cR<,Bک8瀇[T /TQ/}(;2+ 4FFnbvfZU)$X `B(!Ƿ/1~ƀA[*G,[+6ҕM7 ۽͔&͓'6HF秄66މ#D} Ż['(7[t*zė͛\m+<+*g{^*_tEօha!,dWTB1j^ax2-Xe^Ej(W׊$${X%Ft1W_gP -K';7^xa yՂfYz@hTGt3xwdU9;iZf:Kfn`$Ÿ[X YG]k&()$$%%#Z"+s#"#5463!25#'32654&##532654&##,(vwetH?KQv51154114D',49dgbT>X ZF]k'''&$%%#.E"&&546632&&#"3267s[[sIx)7.M1ZaaZ1M.7)x ZnnZ'$!ibci!$'.& .& .:& .:& '.& .& A s!2#'32654&##A}YY}cWmiimWUnmVdghcAP&''?&'A&'&'A &'s#"#5463!2#'32654&##,(uu,ɹcXmiimXD',49dgdghcAQ&'A&'' "A; s!!!!!A1IA?&0SA;&0SA;&0SA:;&0SA:;&0'SSA;&0SA&0SA ;&0'SSAV&0SAd&0SA;&0 S4;&0SA;&0SA;&0SA ;&0SA;&0SA;&0SA;&0SA;}&0SA;&0SA;&0SA:O&0AD&0SA0 s!!!!A.!E"&&546632.#"32675#5!{W_}Mw+979%hg^fI&!)9 ZlpZ$" kgfh B.&I.&I.&I.&I.&I.}&IA s3!3#!A?Bs#5353!533##!!5!ePPPPKKKK WA)&PA&PA &PAs3A?AE&Ue;A&Ud&Ud&U~$&UO&UO&UA&UA &U&U'&Ud&UU}&U/:&U&UEPW"&'532653f6& -#/f28~Tp6E&eA s3335##Ai.Ii>A&gfA(s3!A.ؙAE&iejA(&iA(&i[A(&i?A(&i82(A (&i?A.&iVBAQ(&i?(&iD1s3#3#3#3D!桧+h.?PPD 1&sA s3#3#3AeE?EAEM&ueA&uA&uA&uA&uA &uA?E'766553#3#3 6! #e+eX}@CEE\J\/A&uVAQ&uA&u.S46632#"&&732654&#".VmnWWnmWPRRRRRRPanZZnm[[mcooccnm.&.&.&.&. &'.&.&.& .&.&.&.&. &.&.&.=&.&'. =&'.&'.&'.&'.&.&.}&.&.&.:&. 'S46632#"&&732654&#"'7777.VmnWWnmWPRRRRRRPJItJ;JsJ;anZZnm[[mcooccnmoDJJDI.&.&.&.&.&. (a!!!!!"&&546632&&#"3267'>iRQj'TE1RPPR1F4: [mnZ!#mdco  A s!2##32654&##AZz||z/../wfex)&&*A s332##32654&##Axx-00-lwfex(*&&).?$E.'746632#"&&732654&#"M#E:[2fVmnWWnmWPRRRRRRP9J'A3UnZZnm[[mcooccnmAs!2#732#'&&##32654&##AMzE"&5332653z@DD@ jMOOMk>&z>&z>&z>&z>&z> &z>&z>&z>/=&C>/&'C> /=&'C>/&'C>/&'C>/&'C>&z>&z>}&z>&z>:&>&z>&z>&za3#3,7?]a3#3#3#3 .,?5]&6]&6]&6]&6c3#35#3,׶;.ؽ;SySs s3#37%ճ$%Qf*f&H&H&H&H &I&Hs3#76632&&#"7%ճ$o%eH0 -%he75ze&H}&H&H/S s5!5!5!/eu3)3/S&A/S&A/S&A/ S&AAE&U''e;1 T#W"&&546632#73#'352654&#"Bd99dB;_  _-88--87 ?xRSw?8-Z"F"V,5?FF??FF? T&= T&= T(&= T&'9= T(&= T:&= T:&= T&= T&= (&= T&'9= T(&= T,&= T:&= T&= T&= T&= T&9 T&= T&= T&= T&= :r&* T&&= T3&= T&=>GW"&&546633#"3266554&#"'6632#6632!534&#"3267#"&'3=X.4zh14*6#!*),*M,.(v=Ec'&V8j{,%,0=@'J .&h8Wuf /M+7CT *z$v(,+)z%T87@D JCt?<:A>& 7d E"&'3#3#6632'2654&#":_ ]9Be99ez,99,-88 8.[,5@xRSv?>FF@?FF?7d ,E"&'3#4632&&#"#6632'2654&#";_ vu,  %& ]:Ae99ez,99,-88 8.[ew,*f,5?wSRx??FF??FF? E"&&546632&&#"32678T~FF~T4d2=7==7>2 c @wSSv?yB@@Cy &, &, :&, :&',, &, &, L E"&&546632#3#53'2654&#"Af:9gA:^ _,99,-99 ?xRSw?5,: [.8?FF??FF? R'3E"&&546632#4&''7&&'7'77'2654&#"0QzE@rJBX"=7"F&Q1}#d3@EW/320.45 ;iDCf:5=>s,]IIm0$9H..rw8\I6,.44..4 &m (W"&&546632#5#53533##53'2654&#"Ae99dB9\ VV ]+88+,99 >zX-6;>?9:>>; L&C !-E"&&546632#546632&&#"#53'2654&#"Af99fA:] 5hN.  , ^,88,-88 ?xRSw?5,n@a6%1[.8?FF??FF? QL&C z&'   E"&546632!534&#"3267C@tNMg4+'-/B>(G .&d |MxCCuM&T97CCC>t  &"  &"  &" : &'+"  &" z(&"  &'+" %(&" 3,&"  :&"  &"  &"  &"  &+  &"  &"  &"  &"  0&"  0&" : &  &"  E"&55!#7326554&#"'6632nzU,'-.BF"C!&&f>T|C@t r2T88?7J?y@wRNwDs#5354632&&#"'3#b_2no8$%zy.Eih  - U$0E"&'7326553#"&&546632'732654&#"0Ls.@E@> ^9De99eD;Z .66./66~ ;6Y,5=rNNr=4+R"F"q>;<==<;> U&8F U&8F U&8F U&8F U&8F U&8F !3?E"&'7327#5366553#"&&54663273'3#72654&#"/Ls/ BF` ^9Ce99eC8^ EOl.66./55> F  *28jHHj82*T"F"  F]a523553347;s3#6632#4&#"7\;YX!!+313jl).(6,;s#53533##6632#4&#"7VV\;ZW!!+3(z>>z03im.'4+7);&@:7;&@;7;&@;7 ;&@:3s3537D7s377d&GD&GJ&G&GB&GB0&G7&G3 &F&G&GD&G9&G!:&G' c&GW"&'532653530'cT !+il%W"&'5326531(c !+ilJ&W7p s33735#'#7׮O=7p&Y,7p&Y)7p s33735#'#7׮=7s37 7|&]7w&] 7&]7&]87 &]7 &]V Q9&]a&]/h's4&'3#6632#6632#4&#"#4&#"7 V:8O_;WV'+'+r"F"X.5594:io)/'81)/'81/ h&f/;s4&'3#6632#4&#"7 \:YY" *4r"F"X03io'1'7-/;&h9$&hR/;&h9/;&h9/;&h9/ ;&h9/;#s4&'3#6632#"&'532654&#"7 \:YYeo/)"+4r"F"X03ioim "+,1'7-/[&hVo/Q;&h9/;&h9 IE"&&546632'2654&#"5U|DD|UT|DD|T,44,-44 @wRSv@@wRQx@?FF??FF? I&s5 I&s5 I&s5 (&s5 I&s'55 I(&s5 I,&s5 I:&s5 I&s5 I&s5 I&&s5 I&&s5 I&s5 I&s5 I&s5 ]x&sq ]&s'q$ ]x&s'q4 ]&s'q$ ]&s'q$ ]&s'q $ I&s5 I&s5 I&s5 I0&s5 I0&s5 :I&sn I:E"&&546632'2654&#"'5U|DD|UT|DD|U:88:988JNVO @wRSv@@wRQx@E@@EDA@E/H/ I&6 I&s5 I0&s5 I'&s5 I&&s5 /;E"&&546632#6632!534&#"3267#"&'3'2654&#"2S|CC|SHc!""]Ai|+%..CA&C /A>Vu##"dE-45,-45 AxRRv?1102y&T87BDL?t 7346@FE??EF@/(d#W4&'3#6632#"&'32654&#"7 `;Bd99dB:^ c.77.-88J"F"Z-8?wSRx?5,Q?FF??FF?7(d W3#6632#"&'32654&#"7 _;Be99cC:^ c.77.-88-8?wSRx?5,Q?FF??FF? (T#E3#"&&546632#732654&#" _9Bd99dB;_ -88--87.,5?xRSw?8-Z"F"Q?FF??FF?/s4&'3#>32&&#"7 ,B- )4q#F"9J$ 54&#"7Mr@F[Mp<9gE.E7(&F*"#&]Q.70(>A“.X?8b% 5Q=8T- t-* '$+EJ$E"&55#53573#3267;lm__||(+ gix*, && >:&&]& &Q&42W"&5332653#53a]!"&1R km/('7-[1542&442&442&442&442&442&44 2&442&442&44x&4&'44 x&'44&'44&'44&' 442&442&442&442'&44:J&42&&442&4421&4@s3#3ݻ$Rs3#3#3#3ӵ~|q}|ѕDNNY&&&&Vc3#735#'3#~@ҋ@,MPҳ@W'>773#39*0A* ޼!=GS $:CQ=N.@&@&@&@&@&@&W'>773#76632&&#"9*0A* ޼!U]V1  ,=GS $:C=I%=N.@&@&@&. s5!5!5!. /s/)s-.&.&.&. &A+E"&'732654&##532654&#"#46325,R+2/)/;@M=1454Ms!!AA>&!A>gs!53!A_ Q7W36655!3#5!!# I-+$ga%;6ů;C|A;0A;&0VA;&0VI%c6673'3333'#'&&####""_IHȻCDII_"]8000/9^EK 0R-0 KE)##)Z*E"&'732654&##532654&#"'66325.Z55(nAGD36538=8k(50TI?JQB )$ ()#" # (#)lU?W ZG>_5A s3#3#3AcA?AA&{A&AR, E7#5!%3#3#3"&&'73267&;PmcAZ3S>45>QnĮA?A(D*/(,*EQAs333'#'&&##A\IJ_"\9/H-0 KE)#A&h W'>55!##f\+=&$!=X@WxP?-t[rRD1sAP.As!#!A?-A. q s73#3"3c?&\.'3E5#"&&5463353'32##7'#"33'326654&##7+nU++Un+#%BW)F*%$&*E)VB&$oEciicEoPZ;K$$K;ZP/a5#"&55332673K&GI= TI 1?AQ2 E5!3!33g-A s33333A߳--?AQE5!333333]߳g--AQ E5#3!3#7-?A s332#'32654&##Avv7117oghp'('% : s#5!32#'32654&##vv7007-ohgp''(&A s332#'32654&##3Avvx7117x߷ohgp''(&? w!W'>55!32#!#%32654&##f\+=& vv!=X-7117@WxPoghp-t[rR'('&Axs3!332#!!%32654&##Avvӗ7007ohgp''(&(v. E"&&546632&&#"'!!73267v[[vI)7-[1Vg,S.hV1[-7) ZnnZ+$"YU.-_[!$+  E"&'73267!5!&&#"'6632I)6.Z2Wh.S,dR2[46.Hs[[ +$![_-.UY#$+ZnnZAUO&UEPe Ss#5!#6632#54&#"eJ%LE:, TI A*"E"&&'##33>32'2654&#"^]no^]lYYkOYYONXX HYXEZnnZpddooddps76633"&5463!##"35#"rC+,|{[6& ~|q*)vfht?VW Ac$E"&'7326554&#"##5!#6632_&D*/5WL9eI&Bt <5OTI , MSu=s#53533#32#'32654&##uu7007GGMohgp''(&I%c>33!'32#'&&####"37!5Kd>F>dL^44..44_a2F$'D'$F2&&&&&&.N:a3#>3"$7:G`A5>,M=R1?8Yq s#53!!3#t__,AA"E"&'5326554&#"#!!6632 :*.6WL;K&Ar<6NTI  LSv=Rw+E5#53%6673'3333'#'&&####"="_IHȻCDII_"]8000/9^ĮEK 0R-0 KE)##)RZ.W3'"&'732654&##532654&#"'66325XZ55(nAGD36538=8k(50TI?JQB)$ ()#" # (#)lU?W ZG>_5ARE5#53%333'#'&&##j=9\IJ_"\9/HĮ-0 KE)#A-s335333'#'&&##7#5#A1cII`"^90c1堠0 KE)& 's#53533#33'#'&&##rr{(/*Q#]90GwHHw\%@5 @E)# sS5!333'#'&&## \HI_#]:/H--0 KE)#ARBE5#5!%3!3#!t䮮Į?A s3!!##!AAR0 E5#5!%!#!u㮮Į?-.;E"&&546632&&#"326654&#"3267#".546632qXYr   Z_adN_,"#+_N$I&)#`:Nh;8gDEe9=l WmuXrlsu(TD/440DU&z3[wDEe88eEDxZ3.RE3'"&&546632&&#"3267VHs[[sIx)7.M1ZaaZ1M.7)xZnnZ'$!ibci!$' Qq E5##5!#3bee,c& JRE5#53%3#35#3[=,׶;.ؽ;ĮSySs QE5!#5!#!33*,g-g-/RE5#5!%5#"&55332673fuK&GI=Į TI 1?/a57#5&&55353'26737d6;d"> EP 1?As36632#54&#"AK%HI< TI ARE5#5!%36632#54&#"yt*K%HI<Į TI &0E"&'#"&55333>32!732667"'!4&&p">nl Z`yJ)ap)D?"<%WfUHX)-E +mc42(!,iS_p8Cfi#Ebd2FJ`0:&8AUI&AA!E"&'5326554&###333' :*.6XNmr&uAr<555!##7;Pm\+=&$!=Xě@WxP?-t[rRAEE"&'532655!#3!36% -#乹/f27~Tp6ARJE7#5!%3!3#!D W5#5!%!!tĮA&DqW'7665##53!!3#3Y ?0/w__fnwt",jhkCE'6654&''3#3#35)&y;,׶;ٮ)!)SyS6S%M_& ['e+E"&&5467&&546632&&#"33#"3267JeBQK@IA~ZU/5'k8=82563CGBn(55 5_>GZ W?9W1)#( # "#)( $) EE"&'53265#'>55!6% -%!=X8\+=&$.g18t[rR@WxP~Tp6.?]s#53533#32#'32654&##uu7337GGMohgp''(&A!s!27'##3267'7'654##A[z{EA2MD -/JB2p{zmMlG4d E0];ZEW"&'532653!3#!6& -$.g27?Tp6 R4E5#5!%'>55!##u2\+=&$!=Xě@WxP?-t[rRA&UA0HRZ%.R.:Z&<.:& )] )S'E"&554677#>32'2654&#"E./? 2Q7=a9DyW/45//55 U#( 2F+D,G):lKOs?;<;<<:<<<?!s!25#'32654&##532654&##<.hZ?3E@ic|"##"|p pG=/@ C5CMgg<s!#<<&k<js!53#<n~W36655!3#5!35#?VDx*nU64h) )& +)& +'c7>73353373'#'.###5#" m$.!))~ -%mN &' O)99)̓)E"&'732654&##532654&#"'66325 H~-+%k642 # +84V%**Mlx=5AD oujKE-A A9HS<B s3#3#3<#$HH<B&t;<B&t?<~ E7#5!%3#3#3"&&'73267-GY#$q55!##@2* °r0a/E.v;bR<s33#3#'3<P4<F s3353#5#<)Rs <Cs!##<v8(m )  s#5!#sI I& )(h%1=E3#"&&546632#3#6632#"&'32654&#"!2654&#"p K29Y22Y93L K3:Y22Y:2K "*+"#*+f#*+"#)))-/AxPRw@0+4+0@wRPxA/-NAHH@AGHAAHGA@HHA_ (%a5#"&553326753y3uu*3 qo}5/<~ E5!3333EVv<: s33333<vv<~E5!333333BUvv<~C W5#333#v</ s332#'32654&##55!32#!#%32654&##@2* nil4`Ar0aQ')((Q/E.WU6R-v;bRu"!"<s335332#!5#%32654&##$K/"n @wSSv?l3'r >;l !W"&'73267#53.#"'6632K%;*%I/%n9XGH l;> r'3l?vSSx?<F K&G V DA <Q E"&'##336632'2654&#"554&#"##53533##6632i8(*!!+2WW\:ZX'_ /&.'4+(z>>z.4in=aH s#53533#32#'32654&##y^kl]yV%''%VppIQPPRd !'c7>33'!'32#'.###5#"37!5 l2E34 !54D3lM () N׹,5335+~ ~ 00)Rhs3#7>3&ݺ$R:]I199@"+ s5#535!#3#[WW싋x[x554&#"#!##6632n9(+*-6_@[Z'^ /&*/)6,ax28jn173353373'#'.###5#" )Qm$.!))~ -%mN &' O)99)̓~-W53'"&'732654&##532654&#"'66325ՉQH~-+%k642 # +84V%**Mlx=5ADwoujKE-A A9HS<~E5#53%3373'#'.##*4~ -& nN 29)̓<s3353373'#'.##7#5#<.d ~!.%mO  d.mm9)̓yqs#53533#373'#'.##AWW7u'!mN 0(z>>z8( s#5!373'#'.##=4~ -%mN 1s9)̓<~E5#53%3353#5#e<  s335!##5#<vư<~ E5#53%!##ev)6E"&546632&&#"32654&#"3267#".54632eG~U) 8DUQ\R"L?'MCZ@sX4gSTf3[w ~Ru?vIBJO6=##*3w%BV0M\\M1VA%)~W53'"&&546632&&#"32679T~FF~T4d2=7==7>2 cw@wSSv?yB@@Cy ~ E5#53%#5!#fs(F W53#3й#T&/FW5#533#353#ćѹ#҇ѓy!T%y~E5#53%3#735#'3*P~@~ҋ@,MPҳ ~ E5!#5!#333xrVsv(~|E5#53%5#"&553326753e3uu*3 qo}5/([a57#5"&55353'26753*d0."d( ttql4+@D@ @~E5#53%3#6632#4&#"e\;YX!!+313jl).(6,$.E"&7#"&55333>32!73267"'34&ۊ XHBqKMg4:F(F!.&dX)+ |$II!!!Ho>CuM&(K@t:,!97:&.@] &r554&###3373'2j8(*62?4~Qs~'^ /&71Jvj=`H~E7#5!%'>55!##,FY2* °r0aq/E.v;bR)RE"&&546632'2654&#"'5!>U|DD|UT|DD|U9999988hD @wRSv@@wRQx@E@@EDA@EOmm)R&> &H&H&H&(%&(<~ W5#53%!#e삂<&DW'7665#5#535!#3#3P G hWW싋TeYu$qوQqT:hlCNE'6654&''3#3#735O/&`;~<~ /hy"|,MN!1+-E,_&  ")E"&5467&&54632&&#"33#"3267 {E@4=pC{++#W37-" 146l$++ SH9@ @.EKluo??E'7665#'>55!* 3!r0aL2* +eW} s;bR /E. I\/)(]  8(l/W4&'3#66327'#"&'3"367'7654&@ `;Bd8704=<!,:^ b,88,E55!##e2* °r0aq/E.v;bR@G < s!#3#<\y~)~:&s&:&1  s535! le\e]++0LGW55!!55!0RT4S%[%'$s53&&54663253!56654&#"'vg[mMc8gvE;`NWW7#5!#'.55##agV)( 4DW0MN}r<$#5U\\w?w*.>"E"&&'732654&#"#!!#6632'/^P8,`1396.":r)N/Df9D} ",((.9fDHm;$@.E"&546632&&#"#>32'26654&&#"HOf:q+9$R)KM 0I,;\7?nR(((( uX$$]]4+= ;hBHn?,++,'2s!5!6O `8?%1E"&5467&&546325'2654&#"2654&#",ZE>NvwL=EV67765885+//++// l`Lc _DZggZE`  cJ`l)'((((')+)##))##)4.W"&'7326553#"&&54663226654&&#";p,9$R)LL 1H-9^6>oGM:'''' &#]]4*> ;iAHn?tX,,,,AE"&&546632'26654&&#",R}EE}RS}EE}R++ ++ CxNOwCCwONxC ;*+: :+*; ?+ s53535733?FϸfX,&s5>54&#"'66325!Ci}8-&*_)00Fp}It3L>}#UOUy-A1,E"&&'732654&##532654&#"'663251`S6.f/4786wi253.*]'0/FKp=F;EQD{"~"!)&'(*%#&}#,U<;V \E>[1LB E5!533#535DIVVo7.A7"E"&&'732654&#"#!!#6632'/^Q5-c*395-9n#N*>d:Cz"~"!1,./2bIGh9!A.E"&546632&&#"#>32'26654&&#"CNf;r-8%U(NO 2I+>_6>qP**)) uX$$ca0&8:c@Gn?.--.+L-W!5!6RʴP*B%1E"&5467&&546325'2654&#"2654&#",YE>MxxK=EV8<<88<<8.22.-33 l`Kb _C[fgZC`  bJ`l*)*))*)*,,$%**%$,A7.W"&'7326553#"&&54663226654&&#":r-8%V'NO 2I+>_6>qKN=))**%#`U.&89e?Go>mVx.--. p$i!e k w n p h r o p W"&54632'2654&#"S__ST^^Tolllllloe7??55??7$i s53535733$e7dTqF@q!es576654#"'663253's.5L/KV!&Ken $ iD:!>"D qk)W"&'732654&##532654&#"'663253S B%[M>R2LW9+4;ae b e=5(9719C w s5#533#'535Ļt55y j?\ d?n W"&'732654&#"#!##66324IB# ' >-(&>&cg  eH ;+GM p&W"&54632&&#"#6632'2654&#"[azc";8,3 ;";J[Nl`mxb -2E8CQZhs#5! UY#qi r%1W"&5467&&546325'2654&#"72654&#"Qb5-&1]KM[0%,6bS""""D:'8 5%5??5%5 8':D[ o'W"&'7326553#"&54632'2654&#"(>8+3 ;";J[L[a6`$b -2E8CPmfEc6 p$i!e k  w n  p h r o p$i!e k  w n  p h r oLG#3  $''% `$''% ,' '% ,+s53++e W'665#53C'!&-5&D'+s?g+S5353+F+e W'665#5353C'!(-5&D'+s?g+')') )w353R78-LW3537k8ʹ><!w54676654&#"5663253&$#'P#%e.?d:+1#6*E%'!J=">4#3 <!W"&&54667667733267#5?d:*$1!i&%"'P$$fD%M; 73$2)*E%',pw53,RYe"&&546632 1T2/S51R31SY/R2.R3/P41R0KS'7'7'37'_V&} x }%WaHKGg!r32riGr.*s7#537#53733733#3##7#37#D5I&Xms^r4J%Yn s ]3]$\jjjj {W#3r ?4{W3 ?4;S53;bMW.5466736@@65115HQRHwllwL/W#6654&'352256@@wllwHRQ#L'E"&554&''5766554633#"#5233 EJ"33"JE9//9MD'"!(EL :#"8!L'W5326554663"&&554&##532#:00:EJ!33!JE!9#"9!LE'""(DMaL{W!#3akkuL.W53#5!kko=Yw5!=Gϊ=Y?Gu5!eeGu5!ee=Gw5!=eeGu5!ee=Y?W5!eee,e W'665#53B%#'.5%D(+s?h,e&GG+y&KK,p&LL+y S5467'3+.7D'"'yr?h85'C(,,p S'665#53B&"'-p5&D'+s?gT&OOT&PPT+w'73TT.w#7'3T &RR S3K+*3a3DwwGuua`s3vvGwwa`$<4'E5.5466753'&&#"32677"TzBBzT"#G<:!E%JJJJ%E!:fE '"yA13Dx$#$<46W&&5466773'673'&&#"3267#"'7#7&&'7(@ %(6eE&n!9"n*):"F%IIPB%F":#r=+ n% 0+s*.}LX^ f]e_ $( >#3W'7&&5467'766327'#"&'726654&&'&VZ/.Z?0OBB O#,,$#-- BvMLq@,3gRRgU2.gg:CD;;DC:H5E"&&'#53&47#53>32&&#"'3#7'3#73267JyQf`an QyJ8i 6 > )??) > 6 i 54&#"'6632'3#7'3!732671iw W/OA0 "#L$13Bad P!O 0**)S93~ RG2b Ob  |!$HE5bR b"~'"]s#5333353#5##N88-g-$g &'K,s56655#535#53546632&&#"'3#3#5!'!"CCCX9uZ@p):)C#3-Lx  b8f..Fj;#-+!a=b$6Fs5575575377326553#v@@@@5kn#k$?$l$TkU?TkT";Gea@!s54>753'#54&&'7#6X@@W6# j "HjD  DjHLf: ) :fLCs5#535#5353#33#3##3aKKKKLLLLb>bDb>bDB s#53532'3#7##326654&&##aKKAd; ]];c@  g9fE"g#Ch9M6338C*s#535#53532'3#7'3#7##326654&&##aKKKKFm$xM  Nw!kG  Kc=btE?b )c>FM6338P!s5#535#5332##3#32654&##aKKKKPm88lOD.0550.b>b47^b)0/)W+a'.##53267!5!&&##5!#7'3#7#532y47I 670 libb>bus5#535#533#7353#3#Бtė%uc=b<b=chw53и0* W#35353əa -YW#3 -7(! w5#53533#|(vv7!Zw5!7vvB4 w'7'77'TTSS4TUUT7!! w5!53537}}}vv~~~~7!S5!5!7Hvvvv7!>W'7#537#5373#3#m#m#6n#x".SvRv-SvRv8!!w5%%58CW7!!e%5%5!BW7!! w5%%55!7.||U{{ww7!! e%5%55!!/ꈊ{{U|ww7! w5#53533#5!|Ꙃxxww8c!/A"&'&&#"'6632327"&'&&#"'66323272%!),VM05#!( -XO02%!),VM05#!( -XO+::2?9;1> ::2?9;1>7!xe"&'&&#"'66323272%!),WM05#!( -XO ::2?9;1>7!e5!5!w*.tw3#3*VDT&1W'7&&54>327#"&''&&#"26654&'P8P-7-Pl@)M"Q7Q(0.Qk=%G!3:\7!7]8,%f&m@8fP.g*g&g=:fN,j9 4X8*IQ2Y9&C d?#/w"&546326632#"&''267&&#"32654&#"GUSI@@ISUG@@( (( (d`XVb,,bVX`,,e)++'0##00##0'++)iAW"&'532654632&&#"2 (dg1 *c 'at'atD%s53&&54663253#56654&&#"TK?yWXx?JU%++%#+b^ON_b+#*GDR$%QDG*H s535!؉tMt|++7L!W!##7꣣u0LGLU W#53#3΁U_ٴ>V.E$W332653#5##"&'1. %/6" $$4+Z149*E"&&546632#.##56632'2654&&#"Ls@:fB;K9lM + S]1D~P'0'&00 =lGDj<,0Hj9?r[hP?5 .:13='3a#3"&54632'2654&#""&54632'2654&#"_ZdeYYddY*YdeXZccZ\wbcsv`bwl1<<.,>>/lwbcsv`bwl1<<.-=>/F '3?KE"&54632'2654&#"3"&54632'2654&#""&54632'2654&#"ZcdYYddYZdZdeYYddY*YdeXZccZ wbcsv`bwl1<<.-=>/a?wbcsv`bwl1<<.,>>/lwbcsv`bwl1<<.-=>/+8. W3'꿿B!!GGS w7'373''3537'35#3'#GJMGA"#-.?W@@WVV.YCQE".54>32#"&'7#"&546632#73326654&&#"326726654&#"bw@B{j{d2Z<>K -\;T[6`>5B}'(F`kUQdEs//.o/ # /%>r_hx@\tU~EA=NMiYIqA35] -S5[{?VmeO""X&+K%F/&)$@+--,:HE&&'#"&&54677&&5466327#6673'%267'"6654&.[)$1yCSzBPA$')8dDYkB1$2,B&[&=J#9@" '51! 1!)03[=D_#""R,6R.[M(F: )b5Q:%! & !'&," ."L^E"&&54663!##Eh:;iF[{i9gEFf8AG:OE"&'732654&''.5467&&546632&&#"7654&''&&'7I|).AI *. /=67 >sOFq$,%a*). /=58>s#& &$& % t@4?%6T.9$&6T.<";V.*9 *9,-AE".54>32'"&54632&&#"32672>54.#"Nc77cNMb77b6h{{h(R(0+33+0(R?@lP++Pl@AlP++Pl 7cMMb77bMMc7tddsf7016gT-Rm@@mQ--Qm@@mR-,'=FE".54>32'2>54.#"'32#72#'&&##7'32654&##Nc77cNMb77bM@lP++Pl@AlP++PlgIPMD"#* *00 7cMMb77bMMc7@-Rm@@mQ--Qm@@mR-YJ6:> #5dw S#5!#33#73#53#'3}lxm|{]@\%[喖iS"&&546632'2654&#"0K,,L/0L++L0&&&&+J./H+*I//J*[**** S3K+*3 &RR?KW3?w?KS33?sOO` w#53533#ycceeDpppp8*E"&55'754663232676676654#"TR`K5j0T6FI=K!"-Z:! ]Q8=:[8U0GF=rLc")f" E$.bw5#535#53533#3#yggggffffpoiqmmqiop2L 2E".54>32!"32673!2554'.#"_f56g]s['}(|NU{3G'Yu "XX#:5 8b~FFg=BoD01:1/>o ))*5 Ad +s3#3#3%5!'"&&546632'2654&#"Ae081M--M11M,,M2E?Eii'F/0E%%E0/F'T$$$$#%$$j1 S'665#53<$v1)&L-I0N S5467'3%<$v0L.H)( &RRR]S5!RQ]aa'-3S'3e- % S"&5463"30@@0%@/.AC%k S5265440AA%BCA./@-S73e-/S53jQ/S53jQ S"&5463"30@@0@//?Ak S5265440AABA?//@NFS53!53FN-0 C735335349r:yyiiiiN3& C5!53353R:aaiiiiGPC53PGW3&C5!53Raaii--9C'39e--C739e-k-SC73'539nΕ-ͽiiy-S73!73',^,^-jQ53jG-C73#'ookNN-qqG-C'373JokNNko-qqG-S C'373'53JokNNko-EEiiL)Q"&&'732675Q-_,%&+_.Q)1Y; 3663 ;Y1y!&Q"&&546632'2654&#"&=$$=&'<$$<' !!!"<$%;##;%%;"I   3Q"&&54663273'2654&#"#:"":#:} "9$ !! 7##7 5n#7 @!!-AC'6632327#"&'&&#"RK8(1 RL7(APU ;OV C)'!C'66323267#"&'&&#"'53353sJC2% JC2) D:)9: :: iiiiC)0C'66323267#"&'&&#"773sJC2% JC2) :9r)9: :: }yyC)&C5!'66323267#"&'&&#"RJC2% JC2) aa9: :: W]C5!R]aaN3& C5!%53353R:3aaiiiiW10C5!''3Rr91aayyW10C5!'73R9r1aayy-~C54>54&#"'66323@&8>- D '$ -S'3!'3,^,^,-L)C'>32&&#"U_-Q55Q._+&%,)553kk%!9A *)0(C, PG53PN3W53!53͕T S'665#53=$v('}K.J:}G"&'732654#"'73'6632!>'$  U )  /4G F VM($*1b:H0G"&54673267?F=10 ,<3.H0 P L) U"&'73267Pc_,%&+_cVG $$ GVWQG5!Raa"C5!yy/g'%B`Buvz2G'8NVOE/H/HFGJ'-3-s-A-A-F)s!&'AQ]:w\:B0C'66323267#"&'&&#"QL9(QL9) OV PU p=S'3266553#% %%@(pU*)0(H-NS53!53N C735335349r:yyjjjjN C5!53353R:aaiiii PC53P WC5!53Raaii=C'3=vC73=vkC5373=viiyC73373UHeQ539C73#'~~wPPVV9C'373I~wPPw~VVG$ C'373'53JokNNkoFFii9 Q"&'73267Vl_5--8_k]O '..' O]yQ"&&546632'2654&#"&=$$=&'<$$<' !!"<%%;"";&$<"I! ! Q"&&54663273'2654&#"#:"":#:} "9$ !! 8"#7 5o"8 A!  C'66323267#"&'&&#"QS?1 $  QT?1"!OV PU C!S"&'&&#"'66323267%53353D( JC2$ JCؕ: 9: 9:iiiiCC73"&'&&#"'6632326749r( JC2$ JCyy 9: 9:CC5!"&'&&#"'66323267Re( JC2$ JCaa 9: 9:H}C5!paaN C5!%53353R:aaiiiiWC'35!4r9RyyaaWC5!'73R9raayy~C54>54&#"'63232O6=  C# S'3!'3$Ue9 C'6632&&#"h_lVWk_8--5 O]]O (--T C5467'3U$=$vK.J((~p= S'5266553kk%!9pB*)0(C,#C5!#:g'ABvv g'7777bJsJ;JsJ;4DJJDIvC5!bbA^C53^A/AC'6632327#"&'&&#"QC2! - QD2! ,APU  ;OV jQ53jR2g5![ff;'S"&&'7326745>Qn(D*/(,*EQD)0 Q"&'73267'73PeO 3//3 Of9r)UH #''# HUyyD)0 Q"&'73267''3PeO 3//3 Of~r9)UH #''# HUyyD)B %Q"&'73267'4>54&#"'6632PeO 3//3 Of}   3'/3)UH #''# HU : C)B 'Q"&'73267''66323267#"&'&&#"HfO 4--4 OeJC2% JD2)  )?66?:: 9: G-X0 C73#'773ookNNR|-MMmG-0 C73#'7'3ookNN|Q-MMmG-4C73#'74>54&#"'6632ookNN    3'/4-MMm: C-B C73#'''66323267#"&'&&#"oohQQ"JC2% JD2)  -88:: 9: D Q"&'73267'73PeO 3//3 Of9rVH#''#HVzzD Q"&'73267''3PeO 3//3 Of~r9VH#''#HVzzD %Q"&'73267'4>54&#"'6632PeO 3//3 Of}   3'/3VH#''#HV ; C 'Q"&'73267''66323267#"&'&&#"HfO 4--4 OeJC2% JD2)  @66@9; 9: GX C73#'773ookNNR|NNnG C73#'7'3ookNN|QNNnGC73#'74>54&#"'6632ookNN    3'/4NNn; C C73#'''66323267#"&'&&#"oohQQ"JC2% JD2)  999; 9: "RN".:FVbnz&2>JVb<HT`p|.DP\ht $0<HT`t+7CO[gs,8Uap|)5AMYe )5AMYeq}  ! - 9 y  3 n 2 > J V b n z ! 2 > J V b n z   $ 4 D T ` l x  :T`lx %1Ez*6BNZfr~'YD%1Ar~ ".:FR^jv".:FR^j'3?Q]iu +GSlx BNs>JVbn~"2BR^jv ]!-9EQ]iu 0t %1=IUamy)5Hgs    R ^ j v !!@!L!X!d!!!!!"""$"I"Q"]"i"""###N#s##########$$K$S$s$$$$$%%=%o%%%& &&&'&K&&&' 'G'O'o''((F(t((())4)P))))**+*G*p***+-+9+A+M++++,,C,O,[,c,o,w,,,,,,,--*-6-B-N-Z-f-----.-.\.d.l...//#/+/3/;/G/S/[/////00 0,080s000011:1F1c1~11111111292A2`2w222233+3]333344 444M4{4455565L5y556+6X666667E7v777788.8Z8b8888899C9e9999999::::):W:c:o:{:::::::; ;;=;m;y;;;;;#>@>u>>??X???@@#@X@@@ADTDfDDDDDE"E.EJEhEEEEEEF.FeFvFFFFFFFFFFGG GG0GGGSG_GoG~GGGGGGGGGGGGGH0HHI!I`IIIJ;JJJKKJKpKKL LJL{LLLM MM1M>MRM^MwMMMMMNNN7NNNNOO`OOOOOP P0PnPQ)QCQmQRLRiRS:SSSSTTT)T>TTTU(U?UVUbUoU|UUUUUUUV VV3VKVWViVvVVVVVVVW W7WhWWWX(X5XMX`XsXXXXXYYY/Y\YYYYYYYYYYYZZ ZZZ(Z1Z:ZCZnZZZZZZZ[[[*[6[G[X[o[[[\\G\y\\\\\]]/]J]a]y]]]]]]]^^$^A^b^^^__,_\___` `L`d`|```^ E_<H\I{ Aw....... AlA  A  A A#A[A[A[A[A[A[A[A[A[A[A[A[A[4[A[A[A[A[A[A[A[A[A[A[AGA.......AWAAA;AA;A;;;~;;;A;A;;';;;/;AABAABABABABABAbABABtDtDAAAAAAAAAAA$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$..AA$.AAAAAAAA(((((((((((A.~ ~ ~ ~ ~ ~ ~ >>>>>>>>>>>>>>>>>>>>>>>kkkkko/o/o/o/o/A                           ]]77        r       ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (        o7oo7o7o7o7 3 7 7      7 3     !    T7T7T7T7 7 7 7 7 7 7?7  //o/o/$o/o/o/o/o//o/o/i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i  /7 ////"//7j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4/6.......c........A@7A@3fvAAPAPAPAM [A[A[ADxAAA"AAA tDA$. AA.~ ./IA\AA AAU A A(. ;A; XA E$.7A_x A)A)o EAABA..~  //AA;ADA5 A5A/D[A..DxxAA$.$.$. /PAAx $.kAF ;AGAx.x.)|)\<<<<:):):),~<~<~<<a<a<{<<{)<8) @@)Gb(<v<<<G< K<< !4)12<22z<S~ {)h h<,<<d <<< )) == b((@@2@h<<<(<))n%:):(:(,)~<~<{){){)1<<<b(<K< GG,{) 8|2@<,),& q0@'j4XX[X"XXX.X$X'XXXX?X,XXX.X!X+XX| |$|!|| || || | | |$|!|| || || | | |$|!|| || || | | |$|!|| || || | L$$++++0+<,RX.``/;b#a==X==,,+,+,11CC  XXXe!!!X$XGX$XXX XXX XX&XX'X6XXXXXXX&XXXXXX0XYX7X7XBX7X7X7X8X7X7X7X7X8X7X7X*XXXiXXX7q0XQ.XbX+.[/,/,  0?0?u^8u~2A~j R' NNNW-kyGGGLy-CCCWNWW LNbLW"/zH'sAAFs'Q\NNNWky99G9yCCCHNWW9/R;-DDDCGGGCDDDCGGGC,EXKX^,,P KNONE))    /9~2~(-37SWY $(.158#:C_cku)/ !%+/7;IS[io{     " & 0 3 : D R p y !!!"!&!.""""""""+"H"`"e%' 0:4&*07SWY#&.157$;Dbjr$.  $*.6:BLZ^lx      & 0 2 9 D R p t !!!"!&!.""""""""+"H"`"d%'!O+$ PB=+(?5cl%}zew~ck_<k PRTVhlp*`bdjNTZdfhntvxz|~~~X.Q5aR9:4y*?)6+,}0 '0HIPUegisu=7>F78@FVY]fhs;<Y/^q`uM@2N'&(1 #@16=_WY[){   . $+PHJLrtv}|!%&"*+C12!>,F43"L;J9N=M<SDQAdUbSXIcT]GVfXh[\k^m`l_narewiylxkj|ou(/jpcv}p ?K:Z  <*B0ZKaR|4~     hijknorstuxpqlyv !w^_m"#$%&'()*+-./012345689:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\],7`a$,.E3D25#O>TERB\Mobqdtgzm{n~q  ?-A/G57%9':(;)8&`Q^Owyz{xUWZV[CABDKLGIJH3eibchsnfg]rpjkozv    .    ( ( 2@ 2@  r 4              Copyright 2016 The Mulish Project Authors (https://github.com/googlefonts/mulish)Mulish BlackRegular3.603;NONE;Mulish-BlackVersion 3.603Mulish-BlackVernon Adamshttp://www.sansoxygen.comThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://scripts.sil.org/OFLMulishBlackMulishRomanWeightItalicRoman,"$     bc%&d' !(e"#$%&'()*+,-./01234)*56789+:;<=,>?@ABCDEFG-H.I/JKLMNOPQ0R1STUVWXYZ[f2\]^_`abgcdefghijklmnopqrstuv345wxyz{|}6~78h9:;<=DikljnmEFoGHprsqIJKLtvwuMNOPQ   xRy { |z !"#}$%&STU'()*+,-V./012345W6789:;<X~=>?@ABCDEFGHIJKLMNOYZPQRS[\TUVWXYZ[]\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ? ^`>@B  !aA# _C      !"#$%&'()*+Abreveuni1EAEuni1EB6uni1EB0uni1EB2uni1EB4uni01CDuni1EA4uni1EACuni1EA6uni1EA8uni1EAAuni0200uni0226uni1EA0uni1EA2uni0202AmacronAogonek AringacuteAEacuteuni0181uni1E08 Ccircumflex Cdotaccentuni01C4DcaronDcroatuni1E0Cuni018Auni1E0Euni01C5EbreveEcaronuni0228uni1E1Cuni1EBEuni1EC6uni1EC0uni1EC2uni1EC4uni0204 Edotaccentuni1EB8uni1EBAuni0206Emacronuni1E16uni1E14Eogonekuni1EBCGcaron Gcircumflexuni0122 Gdotaccentuni1E20Hbaruni1E2A Hcircumflexuni1E24IJIbreveuni0208uni1E2Euni1ECAuni1EC8uni020AImacronIogonekItilde Jcircumflexuni0136uni01C7LacuteLcaronuni013BLdotuni1E36uni01C8uni1E3Auni1E42uni01CANacuteNcaronuni0145uni1E44uni1E46Enguni01CBuni1E48Obreveuni1ED0uni1ED8uni1ED2uni1ED4uni1ED6uni020Cuni022Auni0230uni1ECCuni1ECEOhornuni1EDAuni1EE2uni1EDCuni1EDEuni1EE0 Ohungarumlautuni020EOmacronuni1E52uni1E50uni01EA Oslashacuteuni1E4Cuni1E4Euni022CRacuteRcaronuni0156uni0210uni1E5Auni0212uni1E5ESacuteuni1E64uni1E66 Scircumflexuni0218uni1E60uni1E62uni1E68uni1E9Euni018FTbarTcaronuni0162uni021Auni1E6Cuni1E6EUbreveuni0214uni1EE4uni1EE6Uhornuni1EE8uni1EF0uni1EEAuni1EECuni1EEE Uhungarumlautuni0216Umacronuni1E7AUogonekUringUtildeuni1E78Wacute Wcircumflex WdieresisWgrave Ycircumflexuni1E8Euni1EF4Ygraveuni01B3uni1EF6uni0232uni1EF8Zacute Zdotaccentuni1E92Iacute_J.loclNLDabreveuni1EAFuni1EB7uni1EB1uni1EB3uni1EB5uni01CEuni1EA5uni1EADuni1EA7uni1EA9uni1EABuni0201uni0227uni1EA1uni1EA3uni0203amacronaogonek aringacuteaeacuteuni0253uni1E09 ccircumflex cdotaccentdcaronuni1E0Duni0257uni1E0Funi01C6ebreveecaronuni1E1Duni1EBFuni1EC7uni1EC1uni1EC3uni1EC5uni0205 edotaccentuni1EB9uni1EBBuni0207emacronuni1E17uni1E15eogonekuni1EBDuni0259gcaron gcircumflexuni0123 gdotaccentuni1E21uni01E5hbaruni1E2Buni021F hcircumflexuni1E25ibreveuni0209uni1E2F i.loclTRKuni1ECBuni1EC9uni020Bimacroniogonekitildeuni0237 jcircumflexuni01E9uni0137 kgreenlandiclacutelcaronuni013Cldotuni1E37uni01C9uni1E3Buni1E43nacute napostrophencaronuni0146uni1E45uni1E47enguni01CCuni1E49obreveuni1ED1uni1ED9uni1ED3uni1ED5uni1ED7uni020Duni022Buni0231uni1ECDuni1ECFohornuni1EDBuni1EE3uni1EDDuni1EDFuni1EE1 ohungarumlautuni020Fomacronuni1E53uni1E51uni01EB oslashacuteuni1E4Duni1E4Funi022Dracutercaronuni0157uni0211uni1E5Buni0213uni1E5Fsacuteuni1E65uni1E67 scircumflexuni0219uni1E61uni1E63uni1E69tbartcaronuni0163uni021Buni1E97uni1E6Duni1E6Fubreveuni01D4uni0215uni1EE5uni1EE7uhornuni1EE9uni1EF1uni1EEBuni1EEDuni1EEF uhungarumlautuni0217umacronuni1E7Buogonekuringutildeuni1E79wacute wcircumflex wdieresiswgrave ycircumflexuni1E8Funi1EF5ygraveuni01B4uni1EF7uni0233uni1EF9zacute zdotaccentuni1E93germandbls.caltiacute_j.loclNLD I_J.loclNLD i_j.loclNLDuni0410uni0411uni0412uni0413uni0403uni0490uni0414uni0415uni0400uni0401uni0416uni0417uni0418uni0419uni040Duni048Auni041Auni040Cuni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni040Euni0424uni0425uni0427uni0426uni0428uni0429uni040Funi042Cuni042Auni042Buni0409uni040Auni0405uni0404uni042Duni0406uni0407uni0408uni040Buni042Euni042Funi0402uni0462uni046Auni0472uni0474uni0492uni0494uni0496uni0498uni049Auni049Cuni049Euni04A0uni04A2uni04A4uni0524uni04A8uni04AAuni04ACuni04AEuni04B0uni04B2uni04B4uni04B6uni04B8uni04BAuni0526uni04BCuni04BEuni04C0uni04C1uni04C3uni04C5uni04C7uni04C9uni04CBuni04CDuni04D0uni04D2uni04D4uni04D6uni04D8uni04DAuni04DCuni04DEuni04E0uni04E2uni04E4uni04E6uni04E8uni04EAuni04ECuni04EEuni04F0uni04F2uni04F4uni04F6uni04F8uni04FAuni04FCuni04FEuni0510uni0512uni051Auni051Cuni048Cuni048Euni0528uni052Euni0406.loclBSHuni0492.loclBSHuni0498.loclBSHuni04AA.loclBSHuni0498.loclCHUuni04AA.loclCHUuni0430uni0431uni0432uni0433uni0453uni0491uni0434uni0435uni0450uni0451uni0436uni0437uni0438uni0439uni045Duni048Buni043Auni045Cuni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni045Euni0444uni0445uni0447uni0446uni0448uni0449uni045Funi044Cuni044Auni044Buni0459uni045Auni0455uni0454uni044Duni0456uni0457uni0458uni045Buni044Euni044Funi0452uni0463uni046Buni0473uni0475uni0493uni0495uni0497uni0499uni049Buni049Duni049Funi04A1uni04A3uni04A5uni0525uni04A9uni04ABuni04ADuni04AFuni04B1uni04B3uni04B5uni04B7uni04B9uni04BBuni0527uni04BDuni04BFuni04CFuni04C2uni04C4uni04C6uni04C8uni04CAuni04CCuni04CEuni04D1uni04D3uni04D5uni04D7uni04D9uni04DBuni04DDuni04DFuni04E1uni04E3uni04E5uni04E7uni04E9uni04EBuni04EDuni04EFuni04F1uni04F3uni04F5uni04F7uni04F9uni04FBuni04FDuni04FFuni0511uni0513uni051Buni051Duni048Duni048Funi0529uni052Funi0456.loclBSHuni0493.loclBSHuni0499.loclBSHuni04AB.loclBSHuni0499.loclCHUuni04AB.loclCHUuni0394Sigmauni03A9uni03BC zero.tosfone.tosftwo.tosf three.tosf four.tosf five.tosfsix.tosf seven.tosf eight.tosf nine.tosfuni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089 zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numruni2070uni00B9uni00B2uni00B3uni2074uni2075uni2076uni2077uni2078uni2079periodcentered.loclCATuni00AD figuredashuni2015uni2010uni27E8uni27E9uni2007uni200Auni2008uni00A0uni2009uni200BCRuni20B5 colonmonetarydongEurouni20B2uni20B4uni20ADlirauni20BAuni20BCuni20A6pesetauni20B1uni20BDuni20B9uni20B8uni20AEuni20A9uni2219uni2052uni2215emptysetuni2126uni2206uni00B5uniF8FFminuteseconduni2113 estimateduni2116uni02BCuni02BBuni02BAuni02C9uni02CBuni02B9uni02BFuni02BEuni02CAuni02CCuni02C8 uni02BF.case uni02BE.caseuni0308 uni03080301 uni03080304uni0307 uni03070304 gravecomb acutecomb uni03010307uni030B uni030C.altuni0302uni030C uni030C0307uni0306uni030A uni030A0301 tildecomb uni03030308tildecomb_acutecomb uni03030304uni0304 uni03040308 uni03040300 uni03040301 hookabovecombuni030Funi0311uni0312uni031B dotbelowcombuni0324uni0326uni0327uni0328uni032Euni0331uni0335uni0337uni0338tildecomb.case.Ouni031B.O.case uni0308.caseuni03080301.caseuni03080304.case uni0307.caseuni03070304.casegravecomb.caseacutecomb.caseuni03010307.case uni030B.caseuni030C.alt.case uni0302.case uni030C.caseuni030C0307.case uni0306.case uni030A.caseuni030A0301.casetildecomb.caseuni03030308.casetildecomb_acutecomb.caseuni03030304.case uni0304.caseuni03040308.caseuni03040300.caseuni03040301.casehookabovecomb.case uni030F.case uni0311.case uni0312.case uni031B.case uni0335.case uni0337.case uni0338.case uni0335.cy uni0307.i tildecomb.o uni030C.alt.t uni0335.t brevecombcybrevecombcy.case uni03060301 uni03060300 uni03060309 uni03060303 uni03020301 uni03020300 uni03020309 uni03020303uni03060301.caseuni03060300.caseuni03060309.caseuni03060303.caseuni03020301.caseuni03020300.caseuni03020309.caseuni03020303.caseuni0000D ,.PR57>@@Bnp    $&)*,,..02446;==?IKVYY\]ahklo  o  $ 6 .XDFLTcyrllatnkernmarkmkmk" S{}~ _&&&&&&&&&& 0 0 0 0,,2 0<^ B 0 L 0  0 0 0 0 0 0 0 0 0  " " " " " " " " " " " " " " " " " 0 0 : : : : : : : @ F z z z T Z d d d z z z_Ql%'7FHIJKLMNOPQRSTUVWX]^`abcdep"+UW%)*-019;=FGH(-(VWQ37777777>>>>>>0Q30'A@-+!!@!A!B!C!D!E!F!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!X!Y!Z![!]!^!_!`!a!b!c!d!e!!!!0:><>>>,!!@!A!B!C!D!E!F!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!X!Y!Z![!]!^!_!`!a!b!c!d!e!!!!04:4<4>40!!@!A!B!C!D!E!F!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!X!Y!Z![!]!^!_!`!a!b!c!d!e!!!!042:$<$>$IJKL0@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde0!4: < > IJKL0  @ A B C D E F H I J K L M N O P Q R S T U X Y Z [ ] ^ _ ` a b c d e    04+:8<8>8I0J0K0L00@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde04::7<7>7I2J2K2L2'@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde'@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde*@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde:<>0@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde04<:.<.>.I J K L 0@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde04*:4<4>4I2J2K2L20@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde04<:H<H>HI2J2K2L20!!@!A!B!C!D!E!F!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!X!Y!Z![!]!^!_!`!a!b!c!d!e!!!!0:42:#<#>#IJKLNQ:<> 7,NQ44444444,,0404: < > 04:<>:<>'@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde7.%(...................%(NQ% VdW]TVCW)d73V!W!9;2ABaL !   )   1 &,B,2   {(k) $'  P2 z  (2   ~   (&$  $<  ( 2   & > &* .EHXf@(        &(& (1 & $(0  # !4BB&D   ,* *(    &2 ( & 2  *   $  (      826F82< (&(U<( (((  (( 22?UT?SnO[     *7A UWoSq|l~x EGG#Y\$__(fo)q3      #%%',.13469;=??AJMSUUWZ\_aacqswz ./2367?FQp$q)46799;=?R 9 &(((// 0GHHFIOPUWdef%gh:iijj%koqrsuvv%w|~GH_ & 'I(%  <V 56677P8?@EGGY\1__<foqrsRQ* `  %?6["! ." ZAB/  7    ++XY44+  !!D""!##4%%"')** ++!,, ..//B01E34 66477 89;<== ?? AA BC6DE.FGHHIJ"MPQS/UU!WW!XY7ZZ\\]]D^^+__Aaa cc]dd"eeff"gghh0ii jj#kmnnoq$ss#tvwwz|}} ~~ ,C8--\, 0 - # ,C0$0$ # 8,^- #,#,W$ )*)+,;--)..N//O00S11T2344K66U77L995;;5<<==5?EFH)IL3MM=NN>OO=PP>QR2J@M2@ 1 &',--1.HIOPUWdef+gqs  6""  "677*8?@FGGHUVW/X[\\]efikrs K !*0%E    &  C 2DF  !!4%%))-. //01522&3345==@@BD%FG IJMO PP2QSTTXY&[[\\ ]]4aaddee ffgg hh'iiGjmnnHoq sstyzz{|}} ~ ( J 3I  (  '  3 (   B%%=)*+,,--..;//<00>11?2344866@779::);;<<)>>)?EFHIL$MM-NN.OO-PP.QR#7A:# .8 & / EB ,.P+RuNw|r~x57>*@@2Bn3q`    $&)*..02448;?IKV YY\]bhkl"oy$}}/024678<=@ABCDJKS_`bcghjmU****************************(X(X(X(X(X(X(XV\b****************************hnt****************UgLfao2!!<!!<!!2!!<6!2!!2!!2!!<!!<!!2!!<6!2!!2!!2!!<!!<!!<!!26!<!!<!!<!!<!!2!!<!!2!!<!!"" B" !2!8"@H@H@"@H@H@H@ZTffZTfNTfZTfZ`fZ`ff!\""r""r""r""!\""r""r""!\""rl"!\""!\""!\""r""r""r""!\l"r""r""r""r""!\""!\"""""r""""xx~!!!!!!!&V&\"""&\""&\""&\""&\""&\"&V&\""&\"&V""&\""&\""&\""&\"&V&\""&\"!!!&V">""">&V">&V"D&V">&V"D"&V"D&V">!!P\\P\PPP\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""L""""R""""L""""R""""R""""R"""""""""""""""""""""""""""""""""""""""""""""""""""""""""!\!b"""""  & & &"!z!D!z"!z!D!z"!z"!z!D!z",!D!z",!D,2".!h>!n!h>!n8>!n!h>!n!hD!n!hD!n!hD!nntzhtzhtzhtzhtzhtzntJhtzhtzPtb\tbPtV\tb\tb\tbhtzhtzhtzntzntzhtzhtzntz"""""""!!!!!!!!!!!####"                        X"^"^  $>:@4:@4:@4:@4:@4:@$>:@4"@$>:@$>:@$>:@4:@4:@4:@$>"@4:@4:@(:@4:@$>:@$>:@.:@4:@&4&:FLLLLLL^dXpv^djpvRdXpvRdXpv^djpv&x&~!,&x x!, x!, x!, x!, x!, x!,&x x!, x!,&x|!, x!, x!, x!, x!, x!, x!,&x x x x x x  x   x     $t 0$z 6 < * 0$z 6 < * 0$z 6 < * 0$z 6 <$t 0$z 6 < * 0  6 <$t 0$z 6 <$t 0$z 6 <$t 0$z 6 < * 0$z 6 < * 0$z 6 <$t 0$z 6 <$t 0$z 6 <$t 0  6 < * 0$z 6 < * 0$z 6 < 0# 6 <  0# 6 < 0 6 <  0# 6 <  0# 6 <  0# 6 < * 0$z 6 <  0$z 6 < * 0$z 6 <$t 0$z 6 <$t 0$z 6 < 0$z 6 <  < $ < * 0$z 6 <$t 0$z 6 <$t 0$z 6 <$t 0$z 6 < B H N T Z# ` f ~ x l x l x ~ l x ~ r x ~ #$ #$ #$ #$ #$ # # # # # # # # # # # # # # # # # # # # # # $ $ !!!!!!!!! !!!!!!!!!! !!!!!!!! !&!,!!!!2!8"p"v!>"v"""!D""!D""!""!J!J"@!J!!!P!!!!!V""""!\!b""!h!n!!""!"j!t"!z!!!"^&V&\""&\"!!"L""""!""!!!!!!""!!!!!!""!"j!!&V&\"!!!!"j!!!!!!!"" """"""."("."4":""@"@"F"""""L"""""R"""""X"^"d"d"d"d"j"p"v"|""""""""""&\"""""""""""$J###$,$2"$2###"##"###$$""#"#H#N"#N####$##$t$z# ## #$>$D#$&###$#*$b#0$n#6$h$n#<#B#$#$$#H#N$t$z#T$>$D#$&#Z#`#f#l#Z#`#f#l#r#r#x#~$h###$&$J################$##$###$#$$$$$$$$$$$ $&$,$2$8$>$D$J$P$V$\$b$h$n$$$t$z$$$$$$$$$$$$Va aaaVfSVSaVaaVVafffVVVVVann^_lamlmVPV?a??VzVVazazCz||6a[IVHaAaAAV===*5K,,,CCVml;+V"*"+FF;{:;:VY:V,{,)V)){ wV99V995V$$5665qn588B<DVV&>V4V444VVee!aVahaST??fPBhva aHIJ,":aa  VSa"a4aaaaBaCaa;'!fa[[ka66a<74<+?LAA L)C YC.w(EB3>+4?z>w>>>((""EM5522a :Dv !* <L*L $$ 11   *J V  .n $ 6F                          ,,,,,,,,,,,,,,,,,,,,,,,,,,,&&&&&&&&,,,,,,,,>>>>>>>>>>>>>>>DDDDDDDDDDDDDDDa xDFLTcyrllatnlBSH CHU 2 : AZE CAT ZCRT KAZ MOL |NLD ROM TAT TRK      aaltzcaltcaseccmpccmpdnomfracligaloclloclloclloclloclloclnumronumordnsinfsubssups"   !    %LhB**&P, ,:xx* < <CNbc     8%  FFss  ""   2266%8;"(.4:FR^jvdfeg      !"#$%. n&>,FV gj\+GW  FFVV  #22N  "4>HR\v  0Rt     F6",eeVVUWFH<]]ii2bcde"%.fg%.*26( "B%* $lsss)u X)   ! F]7n: g#$8$wghtitalgohugoio-hugo-6abdaca/docs/content/000077500000000000000000000000001507671574500175405ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/LICENSE.md000066400000000000000000000260741507671574500211550ustar00rootroot00000000000000Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. gohugoio-hugo-6abdaca/docs/content/en/000077500000000000000000000000001507671574500201425ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/000077500000000000000000000000001507671574500215715ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/_index.md000066400000000000000000000004741507671574500233660ustar00rootroot00000000000000--- cascade: build: list: never publishResources: false render: never --- gohugoio-hugo-6abdaca/docs/content/en/_common/content-format-table.md000066400000000000000000000006641507671574500261460ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Content format|Media type|Identifier|File extensions :--|:--|:--|:-- Markdown|`text/markdown`|`markdown`|`markdown`,`md`, `mdown` HTML|`text/html`|`html`|`htm`, `html` Emacs Org Mode|`text/org`|`org`|`org` AsciiDoc|`text/asciidoc`|`asciidoc`|`ad`, `adoc`, `asciidoc` Pandoc|`text/pandoc`|`pandoc`|`pandoc`, `pdc` reStructuredText|`text/rst`|`rst`|`rst` gohugoio-hugo-6abdaca/docs/content/en/_common/filter-sort-group.md000066400000000000000000000004031507671574500255140ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- > [!note] > The [page collections quick reference guide] describes methods and functions to filter, sort, and group page collections. [page collections quick reference guide]: /quick-reference/page-collections/ gohugoio-hugo-6abdaca/docs/content/en/_common/functions/000077500000000000000000000000001507671574500236015ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/functions/fmt/000077500000000000000000000000001507671574500243675ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/functions/fmt/format-string.md000066400000000000000000000002611507671574500275040ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- The documentation for Go's [fmt] package describes the structure and content of the format string. [fmt]: https://pkg.go.dev/fmt gohugoio-hugo-6abdaca/docs/content/en/_common/functions/go-html-template-package.md000066400000000000000000000011561507671574500306770ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Hugo uses Go's [text/template] and [html/template] packages. The text/template package implements data-driven templates for generating textual output, while the html/template package implements data-driven templates for generating HTML output safe against code injection. By default, Hugo uses the html/template package when rendering HTML files. To generate HTML output that is safe against code injection, the html/template package escapes strings in certain contexts. [text/template]: https://pkg.go.dev/text/template [html/template]: https://pkg.go.dev/html/template gohugoio-hugo-6abdaca/docs/content/en/_common/functions/go-template/000077500000000000000000000000001507671574500260175ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/functions/go-template/text-template.md000066400000000000000000000002371507671574500311400ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- See Go's [text/template] documentation for more information. [text/template]: https://pkg.go.dev/text/template gohugoio-hugo-6abdaca/docs/content/en/_common/functions/images/000077500000000000000000000000001507671574500250465ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/functions/images/apply-image-filter.md000066400000000000000000000012741507671574500310640ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Apply the filter using the [`images.Filter`] function: [`images.Filter`]: /functions/images/filter/ ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with . | images.Filter $filter }} {{ end }} {{ end }} ``` You can also apply the filter using the [`Filter`] method on a `Resource` object: [`Filter`]: /methods/resource/filter/ ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Filter $filter }} {{ end }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/_common/functions/js/000077500000000000000000000000001507671574500242155ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/functions/js/options.md000066400000000000000000000113431507671574500262340ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- params : (`map` or `slice`) Params that can be imported as JSON in your JS files, e.g. ```go-html-template {{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api")) }} ``` And then in your JS file: ```js import * as params from '@params'; ``` Note that this is meant for small data sets, e.g., configuration settings. For larger data sets, please put/mount the files into `assets` and import them directly. minify : (`bool`) Whether to let `js.Build` handle the minification. loaders : {{< new-in 0.140.0 />}} : (`map`) Configuring a loader for a given file type lets you load that file type with an `import` statement or a `require` call. For example, configuring the `.png` file extension to use the data URL loader means importing a `.png` file gives you a data URL containing the contents of that image. Loaders available are `none`, `base64`, `binary`, `copy`, `css`, `dataurl`, `default`, `empty`, `file`, `global-css`, `js`, `json`, `jsx`, `local-css`, `text`, `ts`, `tsx`. See . inject : (`slice`) This option allows you to automatically replace a global variable with an import from another file. The path names must be relative to `assets`. See . shims : (`map`) This option allows swapping out a component with another. A common use case is to load dependencies like React from a CDN (with _shims_) when in production, but running with the full bundled `node_modules` dependency during development: ```go-html-template {{ $shims := dict "react" "js/shims/react.js" "react-dom" "js/shims/react-dom.js" }} {{ $js = $js | js.Build dict "shims" $shims }} ``` The _shim_ files may look like these: ```js // js/shims/react.js module.exports = window.React; ``` ```js // js/shims/react-dom.js module.exports = window.ReactDOM; ``` With the above, these imports should work in both scenarios: ```js import * as React from 'react'; import * as ReactDOM from 'react-dom/client'; ``` target : (`string`) The language target. One of: `es5`, `es2015`, `es2016`, `es2017`, `es2018`, `es2019`, `es2020`, `es2021`, `es2022`, `es2023`, `es2024`, or `esnext`. Default is `esnext`. platform : {{< new-in 0.140.0 />}} : (`string`) One of `browser`, `node`, `neutral`. Default is `browser`. See . externals : (`slice`) External dependencies. Use this to trim dependencies you know will never be executed. See . defines : (`map`) This option allows you to define a set of string replacements to be performed when building. It must be a map where each key will be replaced by its value. ```go-html-template {{ $defines := dict "process.env.NODE_ENV" `"development"` }} ``` drop : {{< new-in 0.144.0 />}} : (`string`) Edit your source code before building to drop certain constructs: One of `debugger` or `console`. : See sourceMap : (`string`) Whether to generate `inline`, `linked`, or `external` source maps from esbuild. Linked and external source maps will be written to the target with the output file name + ".map". When `linked` a `sourceMappingURL` will also be written to the output file. By default, source maps are not created. Note that the `linked` option was added in Hugo 0.140.0. sourcesContent : {{< new-in 0.140.0 />}} : (`bool`) Whether to include the content of the source files in the source map. By default, this is `true`. JSX : {{< new-in 0.124.0 />}} : (`string`) How to handle/transform JSX syntax. One of: `transform`, `preserve`, `automatic`. Default is `transform`. Notably, the `automatic` transform was introduced in React 17+ and will cause the necessary JSX helper functions to be imported automatically. See . JSXImportSource : {{< new-in 0.124.0 />}} : (`string`) Which library to use to automatically import its JSX helper functions from. This only works if `JSX` is set to `automatic`. The specified library needs to be installed through npm and expose certain exports. See . The combination of `JSX` and `JSXImportSource` is helpful if you want to use a non-React JSX library like Preact, e.g.: ```go-html-template {{ $js := resources.Get "js/main.jsx" | js.Build (dict "JSX" "automatic" "JSXImportSource" "preact") }} ``` With the above, you can use Preact components and JSX without having to manually import `h` and `Fragment` every time: ```jsx import { render } from 'preact'; const App = () => <>Hello world!; const container = document.getElementById('app'); if (container) render(, container); ``` gohugoio-hugo-6abdaca/docs/content/en/_common/functions/locales.md000066400000000000000000000004531507671574500255470ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- > [!note] > Localization of dates, currencies, numbers, and percentages is performed by the [gohugoio/locales] package. The language tag of the current site must match one of the listed locales. [gohugoio/locales]: https://github.com/gohugoio/locales gohugoio-hugo-6abdaca/docs/content/en/_common/functions/regular-expressions.md000066400000000000000000000012731507671574500301470ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes. Go's regular expression package implements the [RE2 syntax]. The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats]. Note that the RE2 `\C` escape sequence is not supported. [caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats [PCRE]: https://www.pcre.org/ [RE2 syntax]: https://github.com/google/re2/wiki/Syntax/ [string literal]: https://go.dev/ref/spec#String_literals gohugoio-hugo-6abdaca/docs/content/en/_common/functions/truthy-falsy.md000066400000000000000000000003421507671574500265750ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- The falsy values are `false`, `0`, any `nil` pointer or interface value, any array, slice, map, or string of length zero, and zero `time.Time` values. Everything else is truthy. gohugoio-hugo-6abdaca/docs/content/en/_common/functions/urls/000077500000000000000000000000001507671574500245665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/functions/urls/anchorize-vs-urlize.md000066400000000000000000000014211507671574500310260ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- The [`anchorize`] and [`urlize`] functions are similar: [`anchorize`]: /functions/urls/anchorize/ [`urlize`]: /functions/urls/urlize/ - Use the `anchorize` function to generate an HTML `id` attribute value - Use the `urlize` function to sanitize a string for usage in a URL For example: ```go-html-template {{ $s := "A B C" }} {{ $s | anchorize }} → a-b-c {{ $s | urlize }} → a-b-c {{ $s := "a b c" }} {{ $s | anchorize }} → a-b---c {{ $s | urlize }} → a-b-c {{ $s := "< a, b, & c >" }} {{ $s | anchorize }} → -a-b--c- {{ $s | urlize }} → a-b-c {{ $s := "main.go" }} {{ $s | anchorize }} → maingo {{ $s | urlize }} → main.go {{ $s := "Hugö" }} {{ $s | anchorize }} → hugö {{ $s | urlize }} → hug%C3%B6 ``` gohugoio-hugo-6abdaca/docs/content/en/_common/glob-patterns.md000066400000000000000000000013061507671574500246740ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Path|Pattern|Match :--|:--|:-- `images/foo/a.jpg`|`images/foo/*.jpg`|`true` `images/foo/a.jpg`|`images/foo/*.*`|`true` `images/foo/a.jpg`|`images/foo/*`|`true` `images/foo/a.jpg`|`images/*/*.jpg`|`true` `images/foo/a.jpg`|`images/*/*.*`|`true` `images/foo/a.jpg`|`images/*/*`|`true` `images/foo/a.jpg`|`*/*/*.jpg`|`true` `images/foo/a.jpg`|`*/*/*.*`|`true` `images/foo/a.jpg`|`*/*/*`|`true` `images/foo/a.jpg`|`**/*.jpg`|`true` `images/foo/a.jpg`|`**/*.*`|`true` `images/foo/a.jpg`|`**/*`|`true` `images/foo/a.jpg`|`**`|`true` `images/foo/a.jpg`|`*/*.jpg`|`false` `images/foo/a.jpg`|`*.jpg`|`false` `images/foo/a.jpg`|`*.*`|`false` `images/foo/a.jpg`|`*`|`false` gohugoio-hugo-6abdaca/docs/content/en/_common/gomodules-info.md000066400000000000000000000010241507671574500250370ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- > [!note] Hugo Modules are Go Modules > You need [Go] version 1.18 or later and [Git] to use Hugo Modules. For older sites hosted on Netlify, please ensure the `GO_VERSION` environment variable is set to `1.18` or higher. > > Go Modules resources: > > - [go.dev/wiki/Modules](https://go.dev/wiki/Modules) > - [blog.golang.org/using-go-modules](https://go.dev/blog/using-go-modules) [Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git [Go]: https://go.dev/doc/install gohugoio-hugo-6abdaca/docs/content/en/_common/installation/000077500000000000000000000000001507671574500242725ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/installation/01-editions.md000066400000000000000000000016761507671574500266620ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Hugo is available in three editions: standard, extended, and extended/deploy. While the standard edition provides core functionality, the extended and extended/deploy editions offer advanced features. Feature|extended edition|extended/deploy edition :--|:-:|:-: Encode to the WebP format when [processing images]. You can decode WebP images with any edition.|:heavy_check_mark:|:heavy_check_mark: [Transpile Sass to CSS] using the embedded LibSass transpiler. You can use the [Dart Sass] transpiler with any edition.|:heavy_check_mark:|:heavy_check_mark: Deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container. See [details].|:x:|:heavy_check_mark: [dart sass]: /functions/css/sass/#dart-sass [processing images]: /content-management/image-processing/ [transpile sass to css]: /functions/css/sass/ [details]: /host-and-deploy/deploy-with-hugo-deploy/ gohugoio-hugo-6abdaca/docs/content/en/_common/installation/02-prerequisites.md000066400000000000000000000024131507671574500277370ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- ## Prerequisites Although not required in all cases, [Git], [Go], and [Dart Sass] are commonly used when working with Hugo. Git is required to: - Build Hugo from source - Use the [Hugo Modules] feature - Install a theme as a Git submodule - Access [commit information] from a local Git repository - Host your site with services such as [CloudCannon], [Cloudflare Pages], [GitHub Pages], [GitLab Pages], and [Netlify] Go is required to: - Build Hugo from source - Use the Hugo Modules feature Dart Sass is required to transpile Sass to CSS when using the latest features of the Sass language. Please refer to the relevant documentation for installation instructions: - [Git][git install] - [Go][go install] - [Dart Sass][dart sass install] [cloudcannon]: https://cloudcannon.com/ [cloudflare pages]: https://pages.cloudflare.com/ [dart sass install]: /functions/css/sass/#dart-sass [dart sass]: https://sass-lang.com/dart-sass [git install]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git [git]: https://git-scm.com/ [github pages]: https://pages.github.com/ [gitlab pages]: https://docs.gitlab.com/ee/user/project/pages/ [go install]: https://go.dev/doc/install [go]: https://go.dev/ [netlify]: https://www.netlify.com/ gohugoio-hugo-6abdaca/docs/content/en/_common/installation/03-prebuilt-binaries.md000066400000000000000000000014231507671574500304540ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- ## Prebuilt binaries Prebuilt binaries are available for a variety of operating systems and architectures. Visit the [latest release] page, and scroll down to the Assets section. 1. Download the archive for the desired edition, operating system, and architecture 1. Extract the archive 1. Move the executable to the desired directory 1. Add this directory to the PATH environment variable 1. Verify that you have _execute_ permission on the file Please consult your operating system documentation if you need help setting file permissions or modifying your PATH environment variable. If you do not see a prebuilt binary for the desired edition, operating system, and architecture, install Hugo using one of the methods described below. gohugoio-hugo-6abdaca/docs/content/en/_common/installation/04-build-from-source.md000066400000000000000000000023541507671574500303770ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- ## Build from source To build the extended or extended/deploy edition from source you must: 1. Install [Git] 1. Install [Go] version 1.23.0 or later 1. Install a C compiler, either [GCC] or [Clang] 1. Update your `PATH` environment variable as described in the [Go documentation] > The install directory is controlled by the `GOPATH` and `GOBIN` environment variables. If `GOBIN` is set, binaries are installed to that directory. If `GOPATH` is set, binaries are installed to the bin subdirectory of the first directory in the `GOPATH` list. Otherwise, binaries are installed to the bin subdirectory of the default `GOPATH` (`$HOME/go` or `%USERPROFILE%\go`). To build the standard edition: ```sh go install github.com/gohugoio/hugo@latest ``` To build the extended edition: ```sh CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest ``` To build the extended/deploy edition: ```sh CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@latest ``` [Clang]: https://clang.llvm.org/ [GCC]: https://gcc.gnu.org/ [Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git [Go documentation]: https://go.dev/doc/code#Command [Go]: https://go.dev/doc/install gohugoio-hugo-6abdaca/docs/content/en/_common/installation/homebrew.md000066400000000000000000000003531507671574500264250ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- ### Homebrew [Homebrew] is a free and open-source package manager for macOS and Linux. To install the extended edition of Hugo: ```sh brew install hugo ``` [Homebrew]: https://brew.sh/ gohugoio-hugo-6abdaca/docs/content/en/_common/menu-entries/000077500000000000000000000000001507671574500242045ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/menu-entries/pre-and-post.md000066400000000000000000000013531507671574500270410ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- In this site configuration we enable rendering of [emoji shortcodes], and add emoji shortcodes before (pre) and after (post) each menu entry: {{< code-toggle file=hugo >}} enableEmoji = true [[menus.main]] name = 'About' pageRef = '/about' post = ':point_left:' pre = ':point_right:' weight = 10 [[menus.main]] name = 'Contact' pageRef = '/contact' post = ':arrow_left:' pre = ':arrow_right:' weight = 20 {{< /code-toggle >}} To render the menu: ```go-html-template ``` [emoji shortcodes]: /quick-reference/emojis/ gohugoio-hugo-6abdaca/docs/content/en/_common/menu-entry-properties.md000066400000000000000000000021721507671574500264120ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- identifier : (`string`) Required when two or more menu entries have the same `name`, or when localizing the `name` using translation tables. Must start with a letter, followed by letters, digits, or underscores. name : (`string`) The text to display when rendering the menu entry. params : (`map`) User-defined properties for the menu entry. parent : (`string`) The `identifier` of the parent menu entry. If `identifier` is not defined, use `name`. Required for child entries in a nested menu. post : (`string`) The HTML to append when rendering the menu entry. pre : (`string`) The HTML to prepend when rendering the menu entry. title : (`string`) The HTML `title` attribute of the rendered menu entry. weight : (`int`) A non-zero integer indicating the entry's position relative the root of the menu, or to its parent for a child entry. Lighter entries float to the top, while heavier entries sink to the bottom. gohugoio-hugo-6abdaca/docs/content/en/_common/methods/000077500000000000000000000000001507671574500232345ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/methods/page/000077500000000000000000000000001507671574500241505ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/methods/page/next-and-prev.md000066400000000000000000000032251507671574500271640ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Hugo determines the _next_ and _previous_ page by sorting the site's collection of regular pages according to this sorting hierarchy: Field|Precedence|Sort direction :--|:--|:-- [`weight`]|1|descending [`date`]|2|descending [`linkTitle`]|3|descending [`path`]|4|descending [`date`]: /methods/page/date/ [`weight`]: /methods/page/weight/ [`linkTitle`]: /methods/page/linktitle/ [`path`]: /methods/page/path/ The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior. For example, with this content structure: ```text content/ ├── pages/ │ ├── _index.md │ ├── page-1.md <-- front matter: weight = 10 │ ├── page-2.md <-- front matter: weight = 20 │ └── page-3.md <-- front matter: weight = 30 └── _index.md ``` And these templates: ```go-html-template {file="layouts/section.html"} {{ range .Pages.ByWeight }}

      {{ .LinkTitle }}

      {{ end }} ``` ```go-html-template {file="layouts/page.html"} {{ with .Prev }} Previous {{ end }} {{ with .Next }} Next {{ end }} ``` When you visit page-2: - The `Prev` method points to page-3 - The `Next` method points to page-1 To reverse the meaning of _next_ and _previous_ you can change the sort direction in your [site configuration], or use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility. [site configuration]: /configuration/page/ [`Next`]: /methods/pages/prev [`Prev`]: /methods/pages/prev gohugoio-hugo-6abdaca/docs/content/en/_common/methods/page/nextinsection-and-previnsection.md000066400000000000000000000040151507671574500330120ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Hugo determines the _next_ and _previous_ page by sorting the current section's regular pages according to this sorting hierarchy: Field|Precedence|Sort direction :--|:--|:-- [`weight`]|1|descending [`date`]|2|descending [`linkTitle`]|3|descending [`path`]|4|descending [`date`]: /methods/page/date/ [`weight`]: /methods/page/weight/ [`linkTitle`]: /methods/page/linktitle/ [`path`]: /methods/page/path/ The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior. For example, with this content structure: ```text content/ ├── pages/ │ ├── _index.md │ ├── page-1.md <-- front matter: weight = 10 │ ├── page-2.md <-- front matter: weight = 20 │ └── page-3.md <-- front matter: weight = 30 └── _index.md ``` And these templates: ```go-html-template {file="layouts/section.html"} {{ range .Pages.ByWeight }}

      {{ .LinkTitle }}

      {{ end }} ``` ```go-html-template {file="layouts/page.html"} {{ with .PrevInSection }} Previous {{ end }} {{ with .NextInSection }} Next {{ end }} ``` When you visit page-2: - The `PrevInSection` method points to page-3 - The `NextInSection` method points to page-1 To reverse the meaning of _next_ and _previous_ you can change the sort direction in your [site configuration], or use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility. [site configuration]: /configuration/page/ [`Next`]: /methods/pages/prev [`Prev`]: /methods/pages/prev ## Example Code defensively by checking for page existence: ```go-html-template {{ with .PrevInSection }} Previous {{ end }} {{ with .NextInSection }} Next {{ end }} ``` ## Alternative Use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility. gohugoio-hugo-6abdaca/docs/content/en/_common/methods/page/output-format-methods.md000066400000000000000000000014531507671574500307640ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- ### Get IDENTIFIER (`any`) Returns the `OutputFormat` object with the given identifier. ### MediaType (`media.Type`) Returns the media type of the output format. ### MediaType.MainType (`string`) Returns the main type of the output format's media type. ### MediaType.SubType (`string`) Returns the subtype of the current format's media type. ### Name (`string`) Returns the output identifier of the output format. ### Permalink (`string`) Returns the permalink of the page generated by the current output format. ### Rel (`string`) Returns the `rel` value of the output format, either the default or as defined in the site configuration. ### RelPermalink (`string`) Returns the relative permalink of the page generated by the current output format. gohugoio-hugo-6abdaca/docs/content/en/_common/methods/pages/000077500000000000000000000000001507671574500243335ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/methods/pages/group-sort-order.md000066400000000000000000000002261507671574500301070ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- For the optional sort order, specify either `asc` for ascending order, or `desc` for descending order. gohugoio-hugo-6abdaca/docs/content/en/_common/methods/pages/next-and-prev.md000066400000000000000000000034761507671574500273570ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Hugo determines the _next_ and _previous_ page by sorting the page collection according to this sorting hierarchy: Field|Precedence|Sort direction :--|:--|:-- [`weight`]|1|descending [`date`]|2|descending [`linkTitle`]|3|descending [`path`]|4|descending [`date`]: /methods/page/date/ [`weight`]: /methods/page/weight/ [`linkTitle`]: /methods/page/linktitle/ [`path`]: /methods/page/path/ The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior. For example, with this content structure: ```text content/ ├── pages/ │ ├── _index.md │ ├── page-1.md <-- front matter: weight = 10 │ ├── page-2.md <-- front matter: weight = 20 │ └── page-3.md <-- front matter: weight = 30 └── _index.md ``` And these templates: ```go-html-template {file="layouts/section.html"} {{ range .Pages.ByWeight }}

      {{ .LinkTitle }}

      {{ end }} ``` ```go-html-template {file="layouts/page.html"} {{ $pages := .CurrentSection.Pages.ByWeight }} {{ with $pages.Prev . }} Previous {{ end }} {{ with $pages.Next . }} Next {{ end }} ``` When you visit page-2: - The `Prev` method points to page-3 - The `Next` method points to page-1 To reverse the meaning of _next_ and _previous_ you can chain the [`Reverse`] method to the page collection definition: ```go-html-template {file="layouts/page.html"} {{ $pages := .CurrentSection.Pages.ByWeight.Reverse }} {{ with $pages.Prev . }} Previous {{ end }} {{ with $pages.Next . }} Next {{ end }} ``` [`Reverse`]: /methods/pages/reverse/ gohugoio-hugo-6abdaca/docs/content/en/_common/methods/resource/000077500000000000000000000000001507671574500250635ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/methods/resource/global-page-remote-resources.md000066400000000000000000000002261507671574500330600ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- > [!note] > Use this method with [global resources](g), [page resources](g), or [remote resources](g). gohugoio-hugo-6abdaca/docs/content/en/_common/methods/resource/processing-spec.md000066400000000000000000000044451507671574500305200ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- ## Process specification The process specification is a space-delimited, case-insensitive list of one or more of the following in any sequence: action : Applicable to the [`Process`](/methods/resource/process) method only. Specify zero or one of `crop`, `fill`, `fit`, or `resize`. If you specify an action you must also provide dimensions. dimensions : Provide width _or_ height when using the [`Resize`](/methods/resource/resize) method, else provide both width _and_ height. See [details](/content-management/image-processing/#dimensions). anchor : Use with the [`Crop`](/methods/resource/crop) and [`Fill`](/methods/resource/fill) methods. Specify zero or one of `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`. Default is `Smart`. See [details](/content-management/image-processing/#anchor). rotation : Typically specify zero or one of `r90`, `r180`, or `r270`. Also supports arbitrary rotation angles. See [details](/content-management/image-processing/#rotation). target format : Specify zero or one of `gif`, `jpeg`, `png`, `tiff`, or `webp`. See [details](/content-management/image-processing/#target-format). quality : Applicable to JPEG and WebP images. Optionally specify `qN` where `N` is an integer in the range [0, 100]. Default is `75`. See [details](/content-management/image-processing/#quality). hint : Applicable to WebP images and equivalent to the `-preset` flag for the [`cwebp`] encoder. Specify zero or one of `drawing`, `icon`, `photo`, `picture`, or `text`. Default is `photo`. See [details](/content-management/image-processing/#hint). [`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp background color : When converting a PNG or WebP with transparency to a format that does not support transparency, optionally specify a background color using a 3-digit or a 6-digit hexadecimal color code. Default is `#ffffff` (white). See [details](/content-management/image-processing/#background-color). resampling filter : Typically specify zero or one of `Box`, `Lanczos`, `CatmullRom`, `MitchellNetravali`, `Linear`, or `NearestNeighbor`. Other resampling filters are available. See [details](/content-management/image-processing/#resampling-filter). gohugoio-hugo-6abdaca/docs/content/en/_common/methods/taxonomy/000077500000000000000000000000001507671574500251125ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/methods/taxonomy/get-a-taxonomy-object.md000066400000000000000000000036561507671574500315630ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Before we can use a `Taxonomy` method, we need to capture a `Taxonomy` object. ## Capture a Taxonomy object Consider this site configuration: {{< code-toggle file=hugo >}} [taxonomies] genre = 'genres' author = 'authors' {{< /code-toggle >}} And this content structure: ```text content/ ├── books/ │ ├── and-then-there-were-none.md --> genres: suspense │ ├── death-on-the-nile.md --> genres: suspense │ └── jamaica-inn.md --> genres: suspense, romance │ └── pride-and-prejudice.md --> genres: romance └── _index.md ``` To capture the "genres" `Taxonomy` object from within any template, use the [`Taxonomies`] method on a `Site` object. ```go-html-template {{ $taxonomyObject := .Site.Taxonomies.genres }} ``` To capture the "genres" `Taxonomy` object when rendering its page with a _taxonomy_ template, use the [`Terms`] method on the page's [`Data`] object: ```go-html-template {file="layouts/taxonomy.html"} {{ $taxonomyObject := .Data.Terms }} ``` To inspect the data structure: ```go-html-template
      {{ debug.Dump $taxonomyObject }}
      ``` Although the [`Alphabetical`] and [`ByCount`] methods provide a better data structure for ranging through the taxonomy, you can render the weighted pages by term directly from the `Taxonomy` object: ```go-html-template {{ range $term, $weightedPages := $taxonomyObject }}

      {{ .Page.LinkTitle }}

      {{ end }} ``` In the example above, the first anchor element is a link to the term page. [`Alphabetical`]: /methods/taxonomy/alphabetical/ [`ByCount`]: /methods/taxonomy/bycount/ [`data`]: /methods/page/data/ [`terms`]: /methods/page/data/#in-a-taxonomy-template [`taxonomies`]: /methods/site/taxonomies/ gohugoio-hugo-6abdaca/docs/content/en/_common/methods/taxonomy/ordered-taxonomy-element-methods.md000066400000000000000000000016471507671574500340340ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- An ordered taxonomy is a slice, where each element is an object that contains the term and a slice of its weighted pages. Each element of the slice provides these methods: Count : (`int`) Returns the number of pages to which the term is assigned. Page : (`page.Page`) Returns the term's `Page` object, useful for linking to the term page. Pages : (`page.Pages`) Returns a `Pages` object containing the `Page` objects to which the term is assigned, sorted by [taxonomic weight](g). To sort or group, use any of the [methods] available to the `Pages` object. For example, sort by the last modification date. Term : (`string`) Returns the term name. WeightedPages : (`page.WeightedPages`) Returns a slice of weighted pages to which the term is assigned, sorted by taxonomic weight. The `Pages` method above is more flexible, allowing you to sort and group. [methods]: /methods/pages/ gohugoio-hugo-6abdaca/docs/content/en/_common/parsable-date-time-strings.md000066400000000000000000000006261507671574500272460ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Format|Time zone :--|:-- `2023-10-15T13:18:50-07:00`|`America/Los_Angeles` `2023-10-15T13:18:50-0700`|`America/Los_Angeles` `2023-10-15T13:18:50Z`|`Etc/UTC` `2023-10-15T13:18:50`|Default is `Etc/UTC` `2023-10-15`|Default is `Etc/UTC` `15 Oct 2023`|Default is `Etc/UTC` The last three examples are not fully qualified, and default to the `Etc/UTC` time zone. gohugoio-hugo-6abdaca/docs/content/en/_common/permalink-tokens.md000066400000000000000000000063411507671574500254020ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- `:year` : The 4-digit year as defined in the front matter `date` field. `:month` : The 2-digit month as defined in the front matter `date` field. `:monthname` : The name of the month as defined in the front matter `date` field. `:day` : The 2-digit day as defined in the front matter `date` field. `:weekday` : The 1-digit day of the week as defined in the front matter `date` field (Sunday = `0`). `:weekdayname` : The name of the day of the week as defined in the front matter `date` field. `:yearday` : The 1- to 3-digit day of the year as defined in the front matter `date` field. `:section` : The content's section. `:sectionslug` : The content's section using slugified section name. The slugified section name is the `slug` as defined in front matter, else the `title` as defined in front matter, else the automatic title. `:sections` : The content's sections hierarchy. You can use a selection of the sections using _slice syntax_: `:sections[1:]` includes all but the first, `:sections[:last]` includes all but the last, `:sections[last]` includes only the last, `:sections[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact. `:sectionslugs` : The content's sections hierarchy using slugified section names. The slugified section name is the `slug` as defined in front matter, else the `title` as defined in front matter, else the automatic title. You can use a selection of the sections using _slice syntax_: `:sectionslugs[1:]` includes all but the first, `:sectionslugs[:last]` includes all but the last, `:sectionslugs[last]` includes only the last, `:sectionslugs[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact. `:title` : The `title` as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file. `:slug` : The `slug` as defined in front matter, else the `title` as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file. `:filename` : The content's file name without extension, applicable to the `page` page kind. {{< deprecated-in v0.144.0 >}} The `:filename` token has been deprecated. Use `:contentbasename` instead. {{< /deprecated-in >}} `:slugorfilename` : The `slug` as defined in front matter, else the content's file name without extension, applicable to the `page` page kind. {{< deprecated-in v0.144.0 >}} The `:slugorfilename` token has been deprecated. Use `:slugorcontentbasename` instead. {{< /deprecated-in >}} `:contentbasename` : {{< new-in 0.144.0 />}} : The [content base name]. [content base name]: /methods/page/file/#contentbasename `:slugorcontentbasename` : {{< new-in 0.144.0 />}} : The `slug` as defined in front matter, else the [content base name]. For time-related values, you can also use the layout string components defined in Go's [time package]. For example: [time package]: https://pkg.go.dev/time#pkg-constants {{< code-toggle file=hugo >}} permalinks: posts: /:06/:1/:2/:title/ {{< /code-toggle >}} gohugoio-hugo-6abdaca/docs/content/en/_common/ref-and-relref-error-handling.md000066400000000000000000000005741507671574500276230ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved. {{< code-toggle file=hugo >}} refLinksErrorLevel = 'warning' refLinksNotFoundURL = '/some/other/url' {{< /code-toggle >}} gohugoio-hugo-6abdaca/docs/content/en/_common/ref-and-relref-options.md000066400000000000000000000006561507671574500264040ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- path : (`string`) The path to the target page. Paths without a leading slash (`/`) are resolved first relative to the current page, and then relative to the rest of the site. lang : (`string`) The language of the target page. Default is the current language. Optional. outputFormat : (`string`) The output format of the target page. Default is the current output format. Optional. gohugoio-hugo-6abdaca/docs/content/en/_common/render-hooks/000077500000000000000000000000001507671574500241715ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/_common/render-hooks/pageinner.md000066400000000000000000000034151507671574500264660ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- ## PageInner details {{< new-in 0.125.0 />}} The primary use case for `PageInner` is to resolve links and [page resources](g) relative to an included `Page`. For example, create an "include" shortcode to compose a page from multiple content files, while preserving a global context for footnotes and the table of contents: ```go-html-template {file="layouts/_shortcodes/include.html" copy=true} {{ with .Get 0 }} {{ with $.Page.GetPage . }} {{- .RenderShortcodes }} {{ else }} {{ errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }} {{ end }} {{ else }} {{ errorf "The %q shortcode requires a positional parameter indicating the logical path of the file to include. See %s" .Name .Position }} {{ end }} ``` Then call the shortcode in your Markdown: ```text {file="content/posts/post-1.md"} {{%/* include "/posts/post-2" */%}} ``` Any render hook triggered while rendering `/posts/post-2` will get: - `/posts/post-1` when calling `Page` - `/posts/post-2` when calling `PageInner` `PageInner` falls back to the value of `Page` if not relevant, and always returns a value. > [!note] > The `PageInner` method is only relevant for shortcodes that invoke the [`RenderShortcodes`] method, and you must call the shortcode using [Markdown notation]. As a practical example, Hugo's embedded link and image render hooks use the `PageInner` method to resolve markdown link and image destinations. See the source code for each: - [Embedded link render hook] - [Embedded image render hook] [`RenderShortcodes`]: /methods/page/rendershortcodes/ [Markdown notation]: /content-management/shortcodes/#notation [Embedded link render hook]: {{% eturl render-link %}} [Embedded image render hook]: {{% eturl render-image %}} gohugoio-hugo-6abdaca/docs/content/en/_common/scratch-pad-scope.md000066400000000000000000000011371507671574500254150ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- ## Scope The method or function used to create a scratch pad determines its scope. For example, use the `Store` method on a `Page` object to create a scratch pad scoped to the page. Scope|Method or function :--|:-- page|[`PAGE.Store`] site|[`SITE.Store`] global|[`hugo.Store`] local|[`collections.NewScratch`] shortcode|[`SHORTCODE.Store`] [`page.store`]: /methods/page/store [`site.store`]: /methods/site/store [`hugo.store`]: /functions/hugo/store [`collections.newscratch`]: functions/collections/newscratch [`shortcode.store`]: /methods/shortcode/store gohugoio-hugo-6abdaca/docs/content/en/_common/store-methods.md000066400000000000000000000037501507671574500247150ustar00rootroot00000000000000--- # Do not remove front matter. --- ## Methods ### Set Sets the value of the given key. ```go-html-template {{ .Store.Set "greeting" "Hello" }} ``` ### Get Gets the value of the given key. ```go-html-template {{ .Store.Set "greeting" "Hello" }} {{ .Store.Get "greeting" }} → Hello ``` ### Add Adds the given value to the existing value(s) of the given key. For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be appended to that list. ```go-html-template {{ .Store.Set "greeting" "Hello" }} {{ .Store.Add "greeting" "Welcome" }} {{ .Store.Get "greeting" }} → HelloWelcome ``` ```go-html-template {{ .Store.Set "total" 3 }} {{ .Store.Add "total" 7 }} {{ .Store.Get "total" }} → 10 ``` ```go-html-template {{ .Store.Set "greetings" (slice "Hello") }} {{ .Store.Add "greetings" (slice "Welcome" "Cheers") }} {{ .Store.Get "greetings" }} → [Hello Welcome Cheers] ``` ### SetInMap Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`. ```go-html-template {{ .Store.SetInMap "greetings" "english" "Hello" }} {{ .Store.SetInMap "greetings" "french" "Bonjour" }} {{ .Store.Get "greetings" }} → map[english:Hello french:Bonjour] ``` ### DeleteInMap Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`. ```go-html-template {{ .Store.SetInMap "greetings" "english" "Hello" }} {{ .Store.SetInMap "greetings" "french" "Bonjour" }} {{ .Store.DeleteInMap "greetings" "english" }} {{ .Store.Get "greetings" }} → map[french:Bonjour] ``` ### GetSortedMapValues Returns an array of values from `key` sorted by `mapKey`. ```go-html-template {{ .Store.SetInMap "greetings" "english" "Hello" }} {{ .Store.SetInMap "greetings" "french" "Bonjour" }} {{ .Store.GetSortedMapValues "greetings" }} → [Hello Bonjour] ``` ### Delete Removes the given key. ```go-html-template {{ .Store.Set "greeting" "Hello" }} {{ .Store.Delete "greeting" }} ``` gohugoio-hugo-6abdaca/docs/content/en/_common/syntax-highlighting-options.md000066400000000000000000000055771507671574500276130ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- anchorLineNos : (`bool`) Whether to render each line number as an HTML anchor element, setting the `id` attribute of the surrounding `span` element to the line number. Irrelevant if `lineNos` is `false`. Default is `false`. codeFences : (`bool`) Whether to highlight fenced code blocks. Default is `true`. guessSyntax : (`bool`) Whether to automatically detect the language if the `LANG` argument is blank or set to a language for which there is no corresponding [lexer](g). Falls back to a plain text lexer if unable to automatically detect the language. Default is `false`. > [!note] > The Chroma syntax highlighter includes lexers for approximately 250 languages, but only 5 of these have implemented automatic language detection. hl_Lines : (`string`) A space-delimited list of lines to emphasize within the highlighted code. To emphasize lines 2, 3, 4, and 7, set this value to `2-4 7`. This option is independent of the `lineNoStart` option. hl_inline : (`bool`) Whether to render the highlighted code without a wrapping container. Default is `false`. lineAnchors : (`string`) When rendering a line number as an HTML anchor element, prepend this value to the `id` attribute of the surrounding `span` element. This provides unique `id` attributes when a page contains two or more code blocks. Irrelevant if `lineNos` or `anchorLineNos` is `false`. lineNoStart : (`int`) The number to display at the beginning of the first line. Irrelevant if `lineNos` is `false`. Default is `1`. lineNos : (`any`) Controls line number display. Default is `false`. - `true`: Enable line numbers, controlled by `lineNumbersInTable`. - `false`: Disable line numbers. - `inline`: Enable inline line numbers (sets `lineNumbersInTable` to `false`). - `table`: Enable table-based line numbers (sets `lineNumbersInTable` to `true`). lineNumbersInTable : (`bool`) Whether to render the highlighted code in an HTML table with two cells. The left table cell contains the line numbers, while the right table cell contains the code. Irrelevant if `lineNos` is `false`. Default is `true`. noClasses : (`bool`) Whether to use inline CSS styles instead of an external CSS file. Default is `true`. To use an external CSS file, set this value to `false` and generate the CSS file from the command line: ```text hugo gen chromastyles --style=monokai > syntax.css ``` style : (`string`) The CSS styles to apply to the highlighted code. Case-sensitive. Default is `monokai`. See [syntax highlighting styles]. tabWidth : (`int`) Substitute this number of spaces for each tab character in your highlighted code. Irrelevant if `noClasses` is `false`. Default is `4`. wrapperClass : {{< new-in 0.140.2 />}} : (`string`) The class or classes to use for the outermost element of the highlighted code. Default is `highlight`. [syntax highlighting styles]: /quick-reference/syntax-highlighting-styles/ gohugoio-hugo-6abdaca/docs/content/en/_common/time-layout-string.md000066400000000000000000000024611507671574500256730ustar00rootroot00000000000000--- _comment: Do not remove front matter. --- Format a `time.Time` value based on [Go's reference time]: [Go's reference time]: https://pkg.go.dev/time#pkg-constants ```text Mon Jan 2 15:04:05 MST 2006 ``` Create a layout string using these components: Description|Valid components :--|:-- Year|`"2006" "06"` Month|`"Jan" "January" "01" "1"` Day of the week|`"Mon" "Monday"` Day of the month|`"2" "_2" "02"` Day of the year|`"__2" "002"` Hour|`"15" "3" "03"` Minute|`"4" "04"` Second|`"5" "05"` AM/PM mark|`"PM"` Time zone offsets|`"-0700" "-07:00" "-07" "-070000" "-07:00:00"` Replace the sign in the layout string with a Z to print Z instead of an offset for the UTC zone. Description|Valid components :--|:-- Time zone offsets|`"Z0700" "Z07:00" "Z07" "Z070000" "Z07:00:00"` ```go-html-template {{ $t := "2023-01-27T23:44:58-08:00" }} {{ $t = time.AsTime $t }} {{ $t = $t.Format "Jan 02, 2006 3:04 PM Z07:00" }} {{ $t }} → Jan 27, 2023 11:44 PM -08:00 ``` Strings such as `PST` and `CET` are not time zones. They are time zone _abbreviations_. Strings such as `-07:00` and `+01:00` are not time zones. They are time zone _offsets_. A time zone is a geographic area with the same local time. For example, the time zone abbreviated by `PST` and `PDT` (depending on Daylight Savings Time) is `America/Los_Angeles`. gohugoio-hugo-6abdaca/docs/content/en/_index.md000066400000000000000000000003441507671574500217330ustar00rootroot00000000000000--- title: The world's fastest framework for building websites description: Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again. --- gohugoio-hugo-6abdaca/docs/content/en/about/000077500000000000000000000000001507671574500212545ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/about/_index.md000066400000000000000000000003121507671574500230400ustar00rootroot00000000000000--- title: About Hugo linkTitle: About description: Learn about Hugo and its features, privacy protections, and security model. categories: [] keywords: [] weight: 10 aliases: [/about-hugo/,/docs/] --- gohugoio-hugo-6abdaca/docs/content/en/about/features.md000066400000000000000000000161451507671574500234230ustar00rootroot00000000000000--- title: Features description: Hugo's rich and powerful feature set provides the framework and tools to create static sites that build in seconds, often less. categories: [] keywords: [] weight: 20 --- ## Framework [Multiplatform] : Install Hugo's single executable on Linux, macOS, Windows, and more. [Multilingual] : Localize your project for each language and region, including translations, images, dates, currencies, numbers, percentages, and collation sequence. Hugo's multilingual framework supports single-host and multihost configurations. [Output formats] : Render each page of your site to one or more output formats, with granular control by page kind, section, and path. While HTML is the default output format, you can add JSON, RSS, CSV, and more. For example, create a REST API to access content. [Templates] : Create templates using variables, functions, and methods to transform your content, resources, and data into a published page. While HTML templates are the most common, you can create templates for any output format. [Themes] : Reduce development time and cost by using one of the hundreds of themes contributed by the Hugo community. Themes are available for corporate sites, documentation projects, image portfolios, landing pages, personal and professional blogs, resumes, CVs, and more. [Modules] : Reduce development time and cost by creating or importing packaged combinations of archetypes, assets, content, data, templates, translation tables, static files, or configuration settings. A module may serve as the basis for a new site, or to augment an existing site. [Privacy] : Configure your site to help comply with regional privacy regulations. [Security] : Hugo's security model is based on the premise that template and configuration authors are trusted, but content authors are not. This model enables generation of HTML output safe against code injection. Other protections prevent "shelling out" to arbitrary applications, limit access to specific environment variables, prevent connections to arbitrary remote data sources, and more. ## Content authoring [Content formats] : Create your content using Markdown, HTML, AsciiDoc, Emacs Org Mode, Pandoc, or reStructuredText. Markdown is the default content format, conforming to the [CommonMark] and [GitHub Flavored Markdown] specifications. [Markdown attributes] : Apply HTML attributes such as `class` and `id` to Markdown images and block elements including blockquotes, fenced code blocks, headings, horizontal rules, lists, paragraphs, and tables. [Markdown extensions] : Leverage the embedded Markdown extensions to create tables, definition lists, footnotes, task lists, inserted text, mark text, subscripts, superscripts, and more. [Markdown render hooks] : Override the conversion of Markdown to HTML when rendering blockquotes, fenced code blocks, headings, images, links, and tables. For example, render every standalone image as an HTML `figure` element. [Diagrams] : Use fenced code blocks and Markdown render hooks to include diagrams in your content. [Mathematics] : Include mathematical equations and expressions in Markdown using LaTeX markup. [Syntax highlighting] : Syntactically highlight code examples using Hugo's embedded syntax highlighter, enabled by default for fenced code blocks in Markdown. The syntax highlighter supports hundreds of code languages and dozens of styles. [Shortcodes] : Use Hugo's embedded shortcodes, or create your own, to insert complex content. For example, use shortcodes to include `audio` and `video` elements, render tables from local or remote data sources, insert snippets from other pages, and more. ## Content management [Content adapters] : Create content adapters to dynamically add content when building your site. For example, use a content adapter to create pages from a remote data source such as JSON, TOML, YAML, or XML. [Taxonomies] : Classify content to establish simple or complex logical relationships between pages. For example, create an authors taxonomy, and assign one or more authors to each page. Among other uses, the taxonomy system provides an inverted, weighted index to render a list of related pages, ordered by relevance. [Data] : Augment your content using local or remote data sources including CSV, JSON, TOML, YAML, and XML. For example, create a shortcode to render an HTML table from a remote CSV file. [Menus] : Provide rapid access to content via Hugo's menu system, configured automatically, globally, or on a page-by-page basis. The menu system is a key component of Hugo's multilingual architecture. [URL management] : Serve any page from any path via global configuration or on a page-by-page basis. ## Asset pipelines [Image processing] : Convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract EXIF data. [JavaScript bundling] : Transpile TypeScript and JSX to JavaScript, bundle, tree shake, minify, create source maps, and perform SRI hashing. [Sass processing] : Transpile Sass to CSS, bundle, tree shake, minify, create source maps, perform SRI hashing, and integrate with PostCSS. [Tailwind CSS processing] : Compile Tailwind CSS utility classes into standard CSS, bundle, tree shake, optimize, minify, perform SRI hashing, and integrate with PostCSS. ## Performance [Caching] : Reduce build time and cost by rendering a _partial_ template once then cache the result, either globally or within a given context. For example, cache the result of an asset pipeline to prevent reprocessing on every rendered page. [Segmentation] : Reduce build time and cost by partitioning your sites into segments. For example, render the home page and the "news section" every hour, and render the entire site once a week. [Minification] : Minify HTML, CSS, and JavaScript to reduce file size, bandwidth consumption, and loading times. [Multilingual]: /content-management/multilingual/ [Multiplatform]: /installation/ [Output formats]: /configuration/output-formats/ [Templates]: /templates/introduction/ [Themes]: https://themes.gohugo.io/ [Modules]: /hugo-modules/ [Privacy]: /configuration/privacy/ [Security]: /about/security/ [Content formats]: /content-management/formats/ [CommonMark]: https://spec.commonmark.org/current/ [GitHub Flavored Markdown]: https://github.github.com/gfm/ [Markdown attributes]: /content-management/markdown-attributes/ [Markdown extensions]: /configuration/markup/#extensions [Markdown render hooks]: /render-hooks/introduction/ [Diagrams]: /content-management/diagrams/ [Mathematics]: /content-management/mathematics/ [Syntax highlighting]: /content-management/syntax-highlighting/ [Shortcodes]: /content-management/shortcodes/ [Content adapters]: /content-management/content-adapters/ [Taxonomies]: /content-management/taxonomies/ [Data]: /content-management/data-sources/ [Menus]: /content-management/menus/ [URL management]: /content-management/urls/ [Image processing]: /content-management/image-processing/ [JavaScript bundling]: /functions/js/build/ [Sass processing]: /functions/css/Sass/ [Tailwind CSS processing]: /functions/css/tailwindcss/ [Caching]: /functions/partials/includecached/ [Segmentation]: /configuration/segments/ [Minification]: /configuration/minify/ gohugoio-hugo-6abdaca/docs/content/en/about/introduction.md000066400000000000000000000027551507671574500243300ustar00rootroot00000000000000--- title: Introduction description: Hugo is a static site generator written in Go, optimized for speed and designed for flexibility. categories: [] keywords: [] weight: 10 aliases: [/about/what-is-hugo/,/about/benefits/] --- Hugo is a [static site generator] written in [Go], optimized for speed and designed for flexibility. With its advanced templating system and fast asset pipelines, Hugo renders a complete site in seconds, often less. Due to its flexible framework, multilingual support, and powerful taxonomy system, Hugo is widely used to create: - Corporate, government, nonprofit, education, news, event, and project sites - Documentation sites - Image portfolios - Landing pages - Business, professional, and personal blogs - Resumes and CVs Use Hugo's embedded web server during development to instantly see changes to content, structure, behavior, and presentation. Then deploy the site to your host, or push changes to your Git provider for automated builds and deployment. And with [Hugo Modules], you can share content, assets, data, translations, themes, templates, and configuration with other projects via public or private Git repositories. Learn more about Hugo's [features], [privacy protections], and [security model]. [Go]: https://go.dev [Hugo Modules]: /hugo-modules/ [static site generator]: https://en.wikipedia.org/wiki/Static_site_generator [features]: /about/features/ [security model]: about/security/ [privacy protections]: /configuration/privacy {{< youtube 0RKpf3rK57I >}} gohugoio-hugo-6abdaca/docs/content/en/about/license.md000066400000000000000000000222771507671574500232320ustar00rootroot00000000000000--- title: License description: Hugo is released under the Apache 2.0 license. categories: [] keywords: [] weight: 40 --- ## Apache License _Version 2.0, January 2004_ __ ### Terms and Conditions for use, reproduction, and distribution #### 1. Definitions “License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. “Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. “Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means **(i)** the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the outstanding shares, or **(iii)** beneficial ownership of such entity. “You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License. “Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. “Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. “Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). “Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. “Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.” “Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. #### 2. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. #### 3. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. #### 4. Redistribution You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: * **(a)** You must give any other recipients of the Work or Derivative Works a copy of this License; and * **(b)** You must cause any modified files to carry prominent notices stating that You changed the files; and * **(c)** You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and * **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. #### 5. Submission of Contributions Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. #### 6. Trademarks This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. #### 7. Disclaimer of Warranty Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. #### 8. Limitation of Liability In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. #### 9. Accepting Warranty or Additional Liability While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. gohugoio-hugo-6abdaca/docs/content/en/about/security.md000066400000000000000000000114111507671574500234430ustar00rootroot00000000000000--- title: Security model linkTitle: Security description: A summary of Hugo's security model. categories: [] keywords: [] weight: 30 aliases: [/about/security-model/] --- ## Runtime security Hugo generates static websites, meaning the final output runs directly in the browser and interacts with any integrated APIs. However, during development and site building, the `hugo` executable itself is the runtime environment. Securing a runtime is a complex task. Hugo addresses this through a robust sandboxing approach and a strict security policy with default protections. Key features include: - Virtual file system: Hugo employs a virtual file system, limiting file access. Only the main project, not external components, can access files or directories outside the project root. - Read-Only access: User-defined components have read-only access to the file system, preventing unintended modifications. - Controlled external binaries: While Hugo utilizes external binaries for features like Asciidoctor support, these are strictly predefined with specific flags and are disabled by default. The [security policy] details these limitations. - No arbitrary commands: To mitigate risks, Hugo intentionally avoids implementing general functions that would allow users to execute arbitrary operating system commands. This combination of sandboxing and strict defaults effectively minimizes potential security vulnerabilities during the Hugo build process. [security policy]: /configuration/security/ ## Dependency security Hugo utilizes [Go Modules] to manage its dependencies, compiling as a static binary. Go Modules create a `go.sum` file, a critical security feature. This file acts as a database, storing the expected cryptographic checksums of all dependencies, including those required indirectly (transitive dependencies). [Hugo Modules], which extend Go Modules' functionality, also produce a `go.sum` file. To ensure dependency integrity, commit this `go.sum` file to your version control. If Hugo detects a checksum mismatch during the build process, it will fail, indicating a possible attempt to [tamper with your project's dependencies]. [Go Modules]: https://go.dev/wiki/Modules#modules [Hugo Modules]: /hugo-modules/ [tamper with your project's dependencies]: https://julienrenaux.fr/2019/12/20/github-actions-security-risk/ ## Web application security Hugo's security philosophy is rooted in established security standards, primarily aligning with the threats defined by [OWASP]. For HTML output, Hugo operates under a clear trust model. This model assumes that template and configuration authors, the developers, are trustworthy. However, the data supplied to these templates is inherently considered untrusted. This distinction is crucial for understanding how Hugo handles potential security risks. [OWASP]: https://en.wikipedia.org/wiki/OWASP To prevent unintended escaping of data that developers know is safe, Hugo provides [`safe`] functions, such as [`safeHTML`]. These functions allow developers to explicitly mark data as trusted, bypassing the default escaping mechanisms. This is essential for scenarios where data is generated or sourced from reliable sources. However, an exception exists: enabling [inline shortcodes]. By activating this feature, you are implicitly trusting the logic within the shortcodes and the data contained within your content files. [`safeHTML`]: /functions/safe/html/ [inline shortcodes]: /content-management/shortcodes/#inline It's vital to remember that Hugo is a static site generator. This architectural choice significantly reduces the attack surface by eliminating the complexities and vulnerabilities associated with dynamic user input. Unlike dynamic websites, Hugo generates static HTML files, minimizing the risk of real-time attacks. Regarding content, Hugo's default Markdown renderer is [configured to sanitize] potentially unsafe content. This default behavior ensures that potentially malicious code or scripts are removed or escaped. However, this setting can be reconfigured if you have a high degree of confidence in the safety of your content sources. [configured to sanitize]: /configuration/markup/#rendererunsafe In essence, Hugo prioritizes secure output by establishing a clear trust boundary between developers and data. By default, it errs on the side of caution, sanitizing potentially unsafe content and escaping data. Developers have the flexibility to adjust these defaults through [`safe`] functions and [configuration options], but they must do so with a clear understanding of the security implications. Hugo's static site generation model further strengthens its security posture by minimizing dynamic vulnerabilities. [`safe`]: /functions/safe [configuration options]: /configuration/security ## Configuration See [configure security](/configuration/security/). gohugoio-hugo-6abdaca/docs/content/en/commands/000077500000000000000000000000001507671574500217435ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/commands/_index.md000066400000000000000000000002431507671574500235320ustar00rootroot00000000000000--- title: Command line interface linkTitle: CLI description: Use the command line interface (CLI) to manage your site. categories: [] keywords: [] weight: 10 --- gohugoio-hugo-6abdaca/docs/content/en/commands/hugo.md000066400000000000000000000107171507671574500232350ustar00rootroot00000000000000--- title: "hugo" slug: hugo url: /commands/hugo/ --- ## hugo Build your site ### Synopsis hugo is the main command, used to build your Hugo site. Hugo is a Fast and Flexible Static Site Generator built with love by spf13 and friends in Go. Complete documentation is available at https://gohugo.io/. ``` hugo [flags] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ -D, --buildDrafts include content marked as draft -E, --buildExpired include expired content -F, --buildFuture include content with publishdate in the future --cacheDir string filesystem path to cache directory --cleanDestinationDir remove files from destination not found in static directories --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -c, --contentDir string filesystem path to content directory -d, --destination string filesystem path to write files to --disableKinds strings disable different kind of pages (home, RSS etc.) --enableGitInfo add Git revision, date, author, and CODEOWNERS info to the pages -e, --environment string build environment --forceSyncStatic copy all files when static is changed. --gc enable to run some cleanup tasks (remove unused cache files) after the build -h, --help help for hugo --ignoreCache ignores the cache directory --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern -l, --layoutDir string filesystem path to layout directory --logLevel string log level (debug|info|warn|error) --minify minify any supported output format (HTML, XML etc.) --noBuildLock don't create .hugo_build.lock file --noChmod don't sync permission mode of files --noTimes don't sync modification time of files --panicOnWarning panic on first WARNING log --poll string set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes --printI18nWarnings print missing translations --printMemoryUsage print memory usage to screen at intervals --printPathWarnings print warnings on duplicate target paths etc. --printUnusedTemplates print warnings on unused templates. --quiet build in quiet mode --renderSegments strings named segments to render (configured in the segments config) -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --templateMetrics display metrics about template executions --templateMetricsHints calculate some improvement hints when combined with --templateMetrics -t, --theme strings themes to use (located in /themes/THEMENAME/) --themesDir string filesystem path to themes directory --trace file write trace to file (not useful in general) -w, --watch watch filesystem for changes and recreate as needed ``` ### SEE ALSO * [hugo build](/commands/hugo_build/) - Build your site * [hugo completion](/commands/hugo_completion/) - Generate the autocompletion script for the specified shell * [hugo config](/commands/hugo_config/) - Display site configuration * [hugo convert](/commands/hugo_convert/) - Convert front matter to another format * [hugo deploy](/commands/hugo_deploy/) - Deploy your site to a cloud provider * [hugo env](/commands/hugo_env/) - Display version and environment info * [hugo gen](/commands/hugo_gen/) - Generate documentation and syntax highlighting styles * [hugo import](/commands/hugo_import/) - Import a site from another system * [hugo list](/commands/hugo_list/) - List content * [hugo mod](/commands/hugo_mod/) - Manage modules * [hugo new](/commands/hugo_new/) - Create new content * [hugo server](/commands/hugo_server/) - Start the embedded web server * [hugo version](/commands/hugo_version/) - Display version gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_build.md000066400000000000000000000071631507671574500244150ustar00rootroot00000000000000--- title: "hugo build" slug: hugo_build url: /commands/hugo_build/ --- ## hugo build Build your site ### Synopsis build is the main command, used to build your Hugo site. Hugo is a Fast and Flexible Static Site Generator built with love by spf13 and friends in Go. Complete documentation is available at https://gohugo.io/. ``` hugo build [flags] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ -D, --buildDrafts include content marked as draft -E, --buildExpired include expired content -F, --buildFuture include content with publishdate in the future --cacheDir string filesystem path to cache directory --cleanDestinationDir remove files from destination not found in static directories --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -c, --contentDir string filesystem path to content directory -d, --destination string filesystem path to write files to --disableKinds strings disable different kind of pages (home, RSS etc.) --enableGitInfo add Git revision, date, author, and CODEOWNERS info to the pages -e, --environment string build environment --forceSyncStatic copy all files when static is changed. --gc enable to run some cleanup tasks (remove unused cache files) after the build -h, --help help for build --ignoreCache ignores the cache directory --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern -l, --layoutDir string filesystem path to layout directory --logLevel string log level (debug|info|warn|error) --minify minify any supported output format (HTML, XML etc.) --noBuildLock don't create .hugo_build.lock file --noChmod don't sync permission mode of files --noTimes don't sync modification time of files --panicOnWarning panic on first WARNING log --poll string set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes --printI18nWarnings print missing translations --printMemoryUsage print memory usage to screen at intervals --printPathWarnings print warnings on duplicate target paths etc. --printUnusedTemplates print warnings on unused templates. --quiet build in quiet mode --renderSegments strings named segments to render (configured in the segments config) -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --templateMetrics display metrics about template executions --templateMetricsHints calculate some improvement hints when combined with --templateMetrics -t, --theme strings themes to use (located in /themes/THEMENAME/) --themesDir string filesystem path to themes directory --trace file write trace to file (not useful in general) -w, --watch watch filesystem for changes and recreate as needed ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_completion.md000066400000000000000000000034651507671574500254700ustar00rootroot00000000000000--- title: "hugo completion" slug: hugo_completion url: /commands/hugo_completion/ --- ## hugo completion Generate the autocompletion script for the specified shell ### Synopsis Generate the autocompletion script for hugo for the specified shell. See each sub-command's help for details on how to use the generated script. ### Options ``` -h, --help help for completion ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo completion bash](/commands/hugo_completion_bash/) - Generate the autocompletion script for bash * [hugo completion fish](/commands/hugo_completion_fish/) - Generate the autocompletion script for fish * [hugo completion powershell](/commands/hugo_completion_powershell/) - Generate the autocompletion script for powershell * [hugo completion zsh](/commands/hugo_completion_zsh/) - Generate the autocompletion script for zsh gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_completion_bash.md000066400000000000000000000036721507671574500264650ustar00rootroot00000000000000--- title: "hugo completion bash" slug: hugo_completion_bash url: /commands/hugo_completion_bash/ --- ## hugo completion bash Generate the autocompletion script for bash ### Synopsis Generate the autocompletion script for the bash shell. This script depends on the 'bash-completion' package. If it is not installed already, you can install it via your OS's package manager. To load completions in your current shell session: source <(hugo completion bash) To load completions for every new session, execute once: #### Linux: hugo completion bash > /etc/bash_completion.d/hugo #### macOS: hugo completion bash > $(brew --prefix)/etc/bash_completion.d/hugo You will need to start a new shell for this setup to take effect. ``` hugo completion bash ``` ### Options ``` -h, --help help for bash --no-descriptions disable completion descriptions ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo completion](/commands/hugo_completion/) - Generate the autocompletion script for the specified shell gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_completion_fish.md000066400000000000000000000033421507671574500264730ustar00rootroot00000000000000--- title: "hugo completion fish" slug: hugo_completion_fish url: /commands/hugo_completion_fish/ --- ## hugo completion fish Generate the autocompletion script for fish ### Synopsis Generate the autocompletion script for the fish shell. To load completions in your current shell session: hugo completion fish | source To load completions for every new session, execute once: hugo completion fish > ~/.config/fish/completions/hugo.fish You will need to start a new shell for this setup to take effect. ``` hugo completion fish [flags] ``` ### Options ``` -h, --help help for fish --no-descriptions disable completion descriptions ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo completion](/commands/hugo_completion/) - Generate the autocompletion script for the specified shell gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_completion_powershell.md000066400000000000000000000033271507671574500277310ustar00rootroot00000000000000--- title: "hugo completion powershell" slug: hugo_completion_powershell url: /commands/hugo_completion_powershell/ --- ## hugo completion powershell Generate the autocompletion script for powershell ### Synopsis Generate the autocompletion script for powershell. To load completions in your current shell session: hugo completion powershell | Out-String | Invoke-Expression To load completions for every new session, add the output of the above command to your powershell profile. ``` hugo completion powershell [flags] ``` ### Options ``` -h, --help help for powershell --no-descriptions disable completion descriptions ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo completion](/commands/hugo_completion/) - Generate the autocompletion script for the specified shell gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_completion_zsh.md000066400000000000000000000037371507671574500263560ustar00rootroot00000000000000--- title: "hugo completion zsh" slug: hugo_completion_zsh url: /commands/hugo_completion_zsh/ --- ## hugo completion zsh Generate the autocompletion script for zsh ### Synopsis Generate the autocompletion script for the zsh shell. If shell completion is not already enabled in your environment you will need to enable it. You can execute the following once: echo "autoload -U compinit; compinit" >> ~/.zshrc To load completions in your current shell session: source <(hugo completion zsh) To load completions for every new session, execute once: #### Linux: hugo completion zsh > "${fpath[1]}/_hugo" #### macOS: hugo completion zsh > $(brew --prefix)/share/zsh/site-functions/_hugo You will need to start a new shell for this setup to take effect. ``` hugo completion zsh [flags] ``` ### Options ``` -h, --help help for zsh --no-descriptions disable completion descriptions ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo completion](/commands/hugo_completion/) - Generate the autocompletion script for the specified shell gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_config.md000066400000000000000000000041231507671574500245540ustar00rootroot00000000000000--- title: "hugo config" slug: hugo_config url: /commands/hugo_config/ --- ## hugo config Display site configuration ### Synopsis Display site configuration, both default and custom settings. ``` hugo config [command] [flags] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory -c, --contentDir string filesystem path to content directory --format string preferred file format (toml, yaml or json) (default "toml") -h, --help help for config --lang string the language to display config for. Defaults to the first language defined. --printZero include config options with zero values (e.g. false, 0, "") in the output --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo config mounts](/commands/hugo_config_mounts/) - Print the configured file mounts gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_config_mounts.md000066400000000000000000000032661507671574500261700ustar00rootroot00000000000000--- title: "hugo config mounts" slug: hugo_config_mounts url: /commands/hugo_config_mounts/ --- ## hugo config mounts Print the configured file mounts ``` hugo config mounts [flags] [args] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory -c, --contentDir string filesystem path to content directory -h, --help help for mounts --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo config](/commands/hugo_config/) - Display site configuration gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_convert.md000066400000000000000000000033241507671574500247710ustar00rootroot00000000000000--- title: "hugo convert" slug: hugo_convert url: /commands/hugo_convert/ --- ## hugo convert Convert front matter to another format ### Synopsis Convert front matter to another format. See convert's subcommands toJSON, toTOML and toYAML for more information. ### Options ``` -h, --help help for convert -o, --output string filesystem path to write files to --unsafe enable less safe operations, please backup first ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo convert toJSON](/commands/hugo_convert_tojson/) - Convert front matter to JSON * [hugo convert toTOML](/commands/hugo_convert_totoml/) - Convert front matter to TOML * [hugo convert toYAML](/commands/hugo_convert_toyaml/) - Convert front matter to YAML gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_convert_toJSON.md000066400000000000000000000030461507671574500261660ustar00rootroot00000000000000--- title: "hugo convert toJSON" slug: hugo_convert_toJSON url: /commands/hugo_convert_tojson/ --- ## hugo convert toJSON Convert front matter to JSON ### Synopsis toJSON converts all front matter in the content directory to use JSON for the front matter. ``` hugo convert toJSON [flags] [args] ``` ### Options ``` -h, --help help for toJSON ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file -o, --output string filesystem path to write files to --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory --unsafe enable less safe operations, please backup first ``` ### SEE ALSO * [hugo convert](/commands/hugo_convert/) - Convert front matter to another format gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_convert_toTOML.md000066400000000000000000000030461507671574500261700ustar00rootroot00000000000000--- title: "hugo convert toTOML" slug: hugo_convert_toTOML url: /commands/hugo_convert_totoml/ --- ## hugo convert toTOML Convert front matter to TOML ### Synopsis toTOML converts all front matter in the content directory to use TOML for the front matter. ``` hugo convert toTOML [flags] [args] ``` ### Options ``` -h, --help help for toTOML ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file -o, --output string filesystem path to write files to --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory --unsafe enable less safe operations, please backup first ``` ### SEE ALSO * [hugo convert](/commands/hugo_convert/) - Convert front matter to another format gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_convert_toYAML.md000066400000000000000000000030461507671574500261570ustar00rootroot00000000000000--- title: "hugo convert toYAML" slug: hugo_convert_toYAML url: /commands/hugo_convert_toyaml/ --- ## hugo convert toYAML Convert front matter to YAML ### Synopsis toYAML converts all front matter in the content directory to use YAML for the front matter. ``` hugo convert toYAML [flags] [args] ``` ### Options ``` -h, --help help for toYAML ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file -o, --output string filesystem path to write files to --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory --unsafe enable less safe operations, please backup first ``` ### SEE ALSO * [hugo convert](/commands/hugo_convert/) - Convert front matter to another format gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_deploy.md000066400000000000000000000036261507671574500246120ustar00rootroot00000000000000--- title: "hugo deploy" slug: hugo_deploy url: /commands/hugo_deploy/ --- ## hugo deploy Deploy your site to a cloud provider ### Synopsis Deploy your site to a cloud provider See https://gohugo.io/hosting-and-deployment/hugo-deploy/ for detailed documentation. ``` hugo deploy [flags] [args] ``` ### Options ``` --confirm ask for confirmation before making changes to the target --dryRun dry run --force force upload of all files -h, --help help for deploy --invalidateCDN invalidate the CDN cache listed in the deployment target (default true) --maxDeletes int maximum # of files to delete, or -1 to disable (default 256) --target string target deployment from deployments section in config file; defaults to the first one --workers int number of workers to transfer files. defaults to 10 (default 10) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_env.md000066400000000000000000000024411507671574500241000ustar00rootroot00000000000000--- title: "hugo env" slug: hugo_env url: /commands/hugo_env/ --- ## hugo env Display version and environment info ### Synopsis Display version and environment info. This is useful in Hugo bug reports ``` hugo env [flags] [args] ``` ### Options ``` -h, --help help for env ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_gen.md000066400000000000000000000031721507671574500240630ustar00rootroot00000000000000--- title: "hugo gen" slug: hugo_gen url: /commands/hugo_gen/ --- ## hugo gen Generate documentation and syntax highlighting styles ### Synopsis Generate documentation for your project using Hugo's documentation engine, including syntax highlighting for various programming languages. ### Options ``` -h, --help help for gen ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo gen chromastyles](/commands/hugo_gen_chromastyles/) - Generate CSS stylesheet for the Chroma code highlighter * [hugo gen doc](/commands/hugo_gen_doc/) - Generate Markdown documentation for the Hugo CLI * [hugo gen man](/commands/hugo_gen_man/) - Generate man pages for the Hugo CLI gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_gen_chromastyles.md000066400000000000000000000042371507671574500266630ustar00rootroot00000000000000--- title: "hugo gen chromastyles" slug: hugo_gen_chromastyles url: /commands/hugo_gen_chromastyles/ --- ## hugo gen chromastyles Generate CSS stylesheet for the Chroma code highlighter ### Synopsis Generate CSS stylesheet for the Chroma code highlighter for a given style. This stylesheet is needed if markup.highlight.noClasses is disabled in config. See https://xyproto.github.io/splash/docs/all.html for a preview of the available styles ``` hugo gen chromastyles [flags] [args] ``` ### Options ``` -h, --help help for chromastyles --highlightStyle string foreground and background colors for highlighted lines, e.g. --highlightStyle "#fff000 bg:#000fff" --lineNumbersInlineStyle string foreground and background colors for inline line numbers, e.g. --lineNumbersInlineStyle "#fff000 bg:#000fff" --lineNumbersTableStyle string foreground and background colors for table line numbers, e.g. --lineNumbersTableStyle "#fff000 bg:#000fff" --style string highlighter style (see https://xyproto.github.io/splash/docs/) (default "friendly") ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo gen](/commands/hugo_gen/) - Generate documentation and syntax highlighting styles gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_gen_doc.md000066400000000000000000000032111507671574500247020ustar00rootroot00000000000000--- title: "hugo gen doc" slug: hugo_gen_doc url: /commands/hugo_gen_doc/ --- ## hugo gen doc Generate Markdown documentation for the Hugo CLI ### Synopsis Generate Markdown documentation for the Hugo CLI. This command is, mostly, used to create up-to-date documentation of Hugo's command-line interface for https://gohugo.io/. It creates one Markdown file per command with front matter suitable for rendering in Hugo. ``` hugo gen doc [flags] [args] ``` ### Options ``` --dir string the directory to write the doc. (default "/tmp/hugodoc/") -h, --help help for doc ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo gen](/commands/hugo_gen/) - Generate documentation and syntax highlighting styles gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_gen_man.md000066400000000000000000000030501507671574500247110ustar00rootroot00000000000000--- title: "hugo gen man" slug: hugo_gen_man url: /commands/hugo_gen_man/ --- ## hugo gen man Generate man pages for the Hugo CLI ### Synopsis This command automatically generates up-to-date man pages of Hugo's command-line interface. By default, it creates the man page files in the "man" directory under the current directory. ``` hugo gen man [flags] [args] ``` ### Options ``` --dir string the directory to write the man pages. (default "man/") -h, --help help for man ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo gen](/commands/hugo_gen/) - Generate documentation and syntax highlighting styles gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_import.md000066400000000000000000000026161507671574500246260ustar00rootroot00000000000000--- title: "hugo import" slug: hugo_import url: /commands/hugo_import/ --- ## hugo import Import a site from another system ### Synopsis Import a site from another system. Import requires a subcommand, e.g. `hugo import jekyll jekyll_root_path target_path`. ### Options ``` -h, --help help for import ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo import jekyll](/commands/hugo_import_jekyll/) - hugo import from Jekyll gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_import_jekyll.md000066400000000000000000000027311507671574500261760ustar00rootroot00000000000000--- title: "hugo import jekyll" slug: hugo_import_jekyll url: /commands/hugo_import_jekyll/ --- ## hugo import jekyll hugo import from Jekyll ### Synopsis hugo import from Jekyll. Import from Jekyll requires two paths, e.g. `hugo import jekyll jekyll_root_path target_path`. ``` hugo import jekyll [flags] [args] ``` ### Options ``` --force allow import into non-empty target directory -h, --help help for jekyll ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo import](/commands/hugo_import/) - Import a site from another system gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_list.md000066400000000000000000000031241507671574500242620ustar00rootroot00000000000000--- title: "hugo list" slug: hugo_list url: /commands/hugo_list/ --- ## hugo list List content ### Synopsis List content. List requires a subcommand, e.g. hugo list drafts ### Options ``` -h, --help help for list ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo list all](/commands/hugo_list_all/) - List all content * [hugo list drafts](/commands/hugo_list_drafts/) - List draft content * [hugo list expired](/commands/hugo_list_expired/) - List expired content * [hugo list future](/commands/hugo_list_future/) - List future content * [hugo list published](/commands/hugo_list_published/) - List published content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_list_all.md000066400000000000000000000024331507671574500251140ustar00rootroot00000000000000--- title: "hugo list all" slug: hugo_list_all url: /commands/hugo_list_all/ --- ## hugo list all List all content ### Synopsis List all content including draft, future, and expired. ``` hugo list all [flags] [args] ``` ### Options ``` -h, --help help for all ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo list](/commands/hugo_list/) - List content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_list_drafts.md000066400000000000000000000024141507671574500256260ustar00rootroot00000000000000--- title: "hugo list drafts" slug: hugo_list_drafts url: /commands/hugo_list_drafts/ --- ## hugo list drafts List draft content ### Synopsis List draft content. ``` hugo list drafts [flags] [args] ``` ### Options ``` -h, --help help for drafts ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo list](/commands/hugo_list/) - List content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_list_expired.md000066400000000000000000000024521507671574500260050ustar00rootroot00000000000000--- title: "hugo list expired" slug: hugo_list_expired url: /commands/hugo_list_expired/ --- ## hugo list expired List expired content ### Synopsis List content with a past expiration date. ``` hugo list expired [flags] [args] ``` ### Options ``` -h, --help help for expired ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo list](/commands/hugo_list/) - List content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_list_future.md000066400000000000000000000024461507671574500256620ustar00rootroot00000000000000--- title: "hugo list future" slug: hugo_list_future url: /commands/hugo_list_future/ --- ## hugo list future List future content ### Synopsis List content with a future publication date. ``` hugo list future [flags] [args] ``` ### Options ``` -h, --help help for future ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo list](/commands/hugo_list/) - List content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_list_published.md000066400000000000000000000025021507671574500263200ustar00rootroot00000000000000--- title: "hugo list published" slug: hugo_list_published url: /commands/hugo_list_published/ --- ## hugo list published List published content ### Synopsis List content that is not draft, future, or expired. ``` hugo list published [flags] [args] ``` ### Options ``` -h, --help help for published ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo list](/commands/hugo_list/) - List content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod.md000066400000000000000000000047231507671574500240740ustar00rootroot00000000000000--- title: "hugo mod" slug: hugo_mod url: /commands/hugo_mod/ --- ## hugo mod Manage modules ### Synopsis Various helpers to help manage the modules in your project's dependency graph. Most operations here requires a Go version installed on your system (>= Go 1.12) and the relevant VCS client (typically Git). This is not needed if you only operate on modules inside /themes or if you have vendored them via "hugo mod vendor". Note that Hugo will always start out by resolving the components defined in the site configuration, provided by a _vendor directory (if no --ignoreVendorPaths flag provided), Go Modules, or a folder inside the themes directory, in that order. See https://gohugo.io/hugo-modules/ for more information. ### Options ``` -h, --help help for mod ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo mod clean](/commands/hugo_mod_clean/) - Delete the Hugo Module cache for the current project * [hugo mod get](/commands/hugo_mod_get/) - Resolves dependencies in your current Hugo project * [hugo mod graph](/commands/hugo_mod_graph/) - Print a module dependency graph * [hugo mod init](/commands/hugo_mod_init/) - Initialize this project as a Hugo Module * [hugo mod npm](/commands/hugo_mod_npm/) - Various npm helpers * [hugo mod tidy](/commands/hugo_mod_tidy/) - Remove unused entries in go.mod and go.sum * [hugo mod vendor](/commands/hugo_mod_vendor/) - Vendor all module dependencies into the _vendor directory * [hugo mod verify](/commands/hugo_mod_verify/) - Verify dependencies gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_clean.md000066400000000000000000000036141507671574500252340ustar00rootroot00000000000000--- title: "hugo mod clean" slug: hugo_mod_clean url: /commands/hugo_mod_clean/ --- ## hugo mod clean Delete the Hugo Module cache for the current project ### Synopsis Delete the Hugo Module cache for the current project. ``` hugo mod clean [flags] [args] ``` ### Options ``` --all clean entire module cache -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory -c, --contentDir string filesystem path to content directory -h, --help help for clean --pattern string pattern matching module paths to clean (all if not set), e.g. "**hugo*" --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_get.md000066400000000000000000000042361507671574500247320ustar00rootroot00000000000000--- title: "hugo mod get" slug: hugo_mod_get url: /commands/hugo_mod_get/ --- ## hugo mod get Resolves dependencies in your current Hugo project ### Synopsis Resolves dependencies in your current Hugo project. Some examples: Install the latest version possible for a given module: hugo mod get github.com/gohugoio/testshortcodes Install a specific version: hugo mod get github.com/gohugoio/testshortcodes@v0.3.0 Install the latest versions of all direct module dependencies: hugo mod get hugo mod get ./... (recursive) Install the latest versions of all module dependencies (direct and indirect): hugo mod get -u hugo mod get -u ./... (recursive) Run "go help get" for more information. All flags available for "go get" is also relevant here. Note that Hugo will always start out by resolving the components defined in the site configuration, provided by a _vendor directory (if no --ignoreVendorPaths flag provided), Go Modules, or a folder inside the themes directory, in that order. See https://gohugo.io/hugo-modules/ for more information. ``` hugo mod get [flags] [args] ``` ### Options ``` -h, --help help for get ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_graph.md000066400000000000000000000036561507671574500252610ustar00rootroot00000000000000--- title: "hugo mod graph" slug: hugo_mod_graph url: /commands/hugo_mod_graph/ --- ## hugo mod graph Print a module dependency graph ### Synopsis Print a module dependency graph with information about module status (disabled, vendored). Note that for vendored modules, that is the version listed and not the one from go.mod. ``` hugo mod graph [flags] [args] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory --clean delete module cache for dependencies that fail verification -c, --contentDir string filesystem path to content directory -h, --help help for graph --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_init.md000066400000000000000000000037471507671574500251240ustar00rootroot00000000000000--- title: "hugo mod init" slug: hugo_mod_init url: /commands/hugo_mod_init/ --- ## hugo mod init Initialize this project as a Hugo Module ### Synopsis Initialize this project as a Hugo Module. It will try to guess the module path, but you may help by passing it as an argument, e.g: hugo mod init github.com/gohugoio/testshortcodes Note that Hugo Modules supports multi-module projects, so you can initialize a Hugo Module inside a subfolder on GitHub, as one example. ``` hugo mod init [flags] [args] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory -c, --contentDir string filesystem path to content directory -h, --help help for init --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_npm.md000066400000000000000000000026311507671574500247420ustar00rootroot00000000000000--- title: "hugo mod npm" slug: hugo_mod_npm url: /commands/hugo_mod_npm/ --- ## hugo mod npm Various npm helpers ### Synopsis Various npm (Node package manager) helpers. ``` hugo mod npm [command] [flags] ``` ### Options ``` -h, --help help for npm ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules * [hugo mod npm pack](/commands/hugo_mod_npm_pack/) - Experimental: Prepares and writes a composite package.json file for your project gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_npm_pack.md000066400000000000000000000044751507671574500257500ustar00rootroot00000000000000--- title: "hugo mod npm pack" slug: hugo_mod_npm_pack url: /commands/hugo_mod_npm_pack/ --- ## hugo mod npm pack Experimental: Prepares and writes a composite package.json file for your project ### Synopsis Prepares and writes a composite package.json file for your project. On first run it creates a "package.hugo.json" in the project root if not already there. This file will be used as a template file with the base dependency set. This set will be merged with all "package.hugo.json" files found in the dependency tree, picking the version closest to the project. This command is marked as 'Experimental'. We think it's a great idea, so it's not likely to be removed from Hugo, but we need to test this out in "real life" to get a feel of it, so this may/will change in future versions of Hugo. ``` hugo mod npm pack [flags] [args] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory -c, --contentDir string filesystem path to content directory -h, --help help for pack --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod npm](/commands/hugo_mod_npm/) - Various npm helpers gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_tidy.md000066400000000000000000000032231507671574500251170ustar00rootroot00000000000000--- title: "hugo mod tidy" slug: hugo_mod_tidy url: /commands/hugo_mod_tidy/ --- ## hugo mod tidy Remove unused entries in go.mod and go.sum ``` hugo mod tidy [flags] [args] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory -c, --contentDir string filesystem path to content directory -h, --help help for tidy --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_vendor.md000066400000000000000000000035101507671574500254420ustar00rootroot00000000000000--- title: "hugo mod vendor" slug: hugo_mod_vendor url: /commands/hugo_mod_vendor/ --- ## hugo mod vendor Vendor all module dependencies into the _vendor directory ### Synopsis Vendor all module dependencies into the _vendor directory. If a module is vendored, that is where Hugo will look for it's dependencies. ``` hugo mod vendor [flags] [args] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory -c, --contentDir string filesystem path to content directory -h, --help help for vendor --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_mod_verify.md000066400000000000000000000036231507671574500254560ustar00rootroot00000000000000--- title: "hugo mod verify" slug: hugo_mod_verify url: /commands/hugo_mod_verify/ --- ## hugo mod verify Verify dependencies ### Synopsis Verify checks that the dependencies of the current module, which are stored in a local downloaded source cache, have not been modified since being downloaded. ``` hugo mod verify [flags] [args] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory --clean delete module cache for dependencies that fail verification -c, --contentDir string filesystem path to content directory -h, --help help for verify --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_new.md000066400000000000000000000033051507671574500241010ustar00rootroot00000000000000--- title: "hugo new" slug: hugo_new url: /commands/hugo_new/ --- ## hugo new Create new content ### Synopsis Create a new content file and automatically set the date and title. It will guess which kind of file to create based on the path provided. You can also specify the kind with `-k KIND`. If archetypes are provided in your theme or site, they will be used. Ensure you run this within the root directory of your site. ### Options ``` -h, --help help for new ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo new content](/commands/hugo_new_content/) - Create new content * [hugo new site](/commands/hugo_new_site/) - Create a new site (skeleton) * [hugo new theme](/commands/hugo_new_theme/) - Create a new theme (skeleton) gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_new_content.md000066400000000000000000000042521507671574500256350ustar00rootroot00000000000000--- title: "hugo new content" slug: hugo_new_content url: /commands/hugo_new_content/ --- ## hugo new content Create new content ### Synopsis Create a new content file and automatically set the date and title. It will guess which kind of file to create based on the path provided. You can also specify the kind with `-k KIND`. If archetypes are provided in your theme or site, they will be used. Ensure you run this within the root directory of your site. ``` hugo new content [path] [flags] ``` ### Options ``` -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --cacheDir string filesystem path to cache directory -c, --contentDir string filesystem path to content directory --editor string edit new content with this editor, if provided -f, --force overwrite file if it already exists -h, --help help for content -k, --kind string content type to create --renderSegments strings named segments to render (configured in the segments config) -t, --theme strings themes to use (located in /themes/THEMENAME/) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo new](/commands/hugo_new/) - Create new content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_new_site.md000066400000000000000000000030661507671574500251310ustar00rootroot00000000000000--- title: "hugo new site" slug: hugo_new_site url: /commands/hugo_new_site/ --- ## hugo new site Create a new site (skeleton) ### Synopsis Create a new site in the provided directory. The new site will have the correct structure, but no content or theme yet. Use `hugo new [contentPath]` to create new content. ``` hugo new site [path] [flags] ``` ### Options ``` -f, --force init inside non-empty directory --format string preferred file format (toml, yaml or json) (default "toml") -h, --help help for site ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo new](/commands/hugo_new/) - Create new content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_new_theme.md000066400000000000000000000027421507671574500252670ustar00rootroot00000000000000--- title: "hugo new theme" slug: hugo_new_theme url: /commands/hugo_new_theme/ --- ## hugo new theme Create a new theme (skeleton) ### Synopsis Create a new theme (skeleton) called [name] in ./themes. New theme is a skeleton. Please add content to the touched files. Add your name to the copyright line in the license and adjust the theme.toml file according to your needs. ``` hugo new theme [name] [flags] ``` ### Options ``` -h, --help help for theme ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo new](/commands/hugo_new/) - Create new content gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_server.md000066400000000000000000000125251507671574500246220ustar00rootroot00000000000000--- title: "hugo server" slug: hugo_server url: /commands/hugo_server/ --- ## hugo server Start the embedded web server ### Synopsis Hugo provides its own webserver which builds and serves the site. While hugo server is high performance, it is a webserver with limited options. The `hugo server` command will by default write and serve files from disk, but you can render to memory by using the `--renderToMemory` flag. This can be faster in some cases, but it will consume more memory. By default hugo will also watch your files for any changes you make and automatically rebuild the site. It will then live reload any open browser pages and push the latest content to them. As most Hugo sites are built in a fraction of a second, you will be able to save and see your changes nearly instantly. ``` hugo server [command] [flags] ``` ### Options ``` --appendPort append port to baseURL (default true) -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ --bind string interface to which the server will bind (default "127.0.0.1") -D, --buildDrafts include content marked as draft -E, --buildExpired include expired content -F, --buildFuture include content with publishdate in the future --cacheDir string filesystem path to cache directory --cleanDestinationDir remove files from destination not found in static directories -c, --contentDir string filesystem path to content directory --disableBrowserError do not show build errors in the browser --disableFastRender enables full re-renders on changes --disableKinds strings disable different kind of pages (home, RSS etc.) --disableLiveReload watch without enabling live browser reload on rebuild --enableGitInfo add Git revision, date, author, and CODEOWNERS info to the pages --forceSyncStatic copy all files when static is changed. --gc enable to run some cleanup tasks (remove unused cache files) after the build -h, --help help for server --ignoreCache ignores the cache directory -l, --layoutDir string filesystem path to layout directory --liveReloadPort int port for live reloading (i.e. 443 in HTTPS proxy situations) (default -1) --minify minify any supported output format (HTML, XML etc.) -N, --navigateToChanged navigate to changed content file on live browser reload --noChmod don't sync permission mode of files --noHTTPCache prevent HTTP caching --noTimes don't sync modification time of files -O, --openBrowser open the site in a browser after server startup --panicOnWarning panic on first WARNING log --poll string set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes -p, --port int port on which the server will listen (default 1313) --pprof enable the pprof server (port 8080) --printI18nWarnings print missing translations --printMemoryUsage print memory usage to screen at intervals --printPathWarnings print warnings on duplicate target paths etc. --printUnusedTemplates print warnings on unused templates. --renderSegments strings named segments to render (configured in the segments config) --renderStaticToDisk serve static files from disk and dynamic files from memory --templateMetrics display metrics about template executions --templateMetricsHints calculate some improvement hints when combined with --templateMetrics -t, --theme strings themes to use (located in /themes/THEMENAME/) --tlsAuto generate and use locally-trusted certificates. --tlsCertFile string path to TLS certificate file --tlsKeyFile string path to TLS key file --trace file write trace to file (not useful in general) -w, --watch watch filesystem for changes and recreate as needed (default true) ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site * [hugo server trust](/commands/hugo_server_trust/) - Install the local CA in the system trust store gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_server_trust.md000066400000000000000000000025461507671574500260650ustar00rootroot00000000000000--- title: "hugo server trust" slug: hugo_server_trust url: /commands/hugo_server_trust/ --- ## hugo server trust Install the local CA in the system trust store ``` hugo server trust [flags] [args] ``` ### Options ``` -h, --help help for trust --uninstall Uninstall the local CA (but do not delete it). ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo server](/commands/hugo_server/) - Start the embedded web server gohugoio-hugo-6abdaca/docs/content/en/commands/hugo_version.md000066400000000000000000000024451507671574500250010ustar00rootroot00000000000000--- title: "hugo version" slug: hugo_version url: /commands/hugo_version/ --- ## hugo version Display version ### Synopsis Display version and environment info. This is useful in Hugo bug reports. ``` hugo version [flags] [args] ``` ### Options ``` -h, --help help for version ``` ### Options inherited from parent commands ``` --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -d, --destination string filesystem path to write files to -e, --environment string build environment --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --logLevel string log level (debug|info|warn|error) --noBuildLock don't create .hugo_build.lock file --quiet build in quiet mode -M, --renderToMemory render to memory (mostly useful when running the server) -s, --source string filesystem path to read files relative from --themesDir string filesystem path to themes directory ``` ### SEE ALSO * [hugo](/commands/hugo/) - Build your site gohugoio-hugo-6abdaca/docs/content/en/configuration/000077500000000000000000000000001507671574500230115ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/configuration/_index.md000066400000000000000000000001461507671574500246020ustar00rootroot00000000000000--- title: Configuration description: Configure your site. categories: [] keywords: [] weight: 10 --- gohugoio-hugo-6abdaca/docs/content/en/configuration/all.md000066400000000000000000000400321507671574500241020ustar00rootroot00000000000000--- title: All settings description: The complete list of Hugo configuration settings. categories: [] keywords: [] weight: 20 aliases: [/getting-started/configuration/] --- ## Settings archetypeDir : (`string`) The designated directory for [archetypes](g). Default is `archetypes`. {{% module-mounts-note %}} assetDir : (`string`) The designated directory for [global resources](g). Default is `assets`. {{% module-mounts-note %}} baseURL : (`string`) The absolute URL of your published site including the protocol, host, path, and a trailing slash. build : See [configure build](/configuration/build/). buildDrafts : (`bool`) Whether to include draft content when building a site. Default is `false`. buildExpired : (`bool`) Whether to include expired content when building a site. Default is `false`. buildFuture : (`bool`) Whether to include future content when building a site. Default is `false`. cacheDir : (`string`) The designated cache directory. See [details](#cache-directory). caches : See [configure file caches](/configuration/caches/). canonifyURLs : (`bool`) See [details](/content-management/urls/#canonical-urls) before enabling this feature. Default is `false`. capitalizeListTitles : {{< new-in 0.123.3 />}} : (`bool`) Whether to capitalize automatic list titles. Applicable to section, taxonomy, and term pages. Default is `true`. Use the [`titleCaseStyle`](#titlecasestyle) setting to configure capitalization rules. cascade : See [configure cascade](/configuration/cascade/). cleanDestinationDir : (`bool`) Whether to remove files from the site's destination directory that do not have corresponding files in the `static` directory during the build. Default is `false`. contentDir : (`string`) The designated directory for content files. Default is `content`. {{% module-mounts-note %}} copyright : (`string`) The copyright notice for a site, typically displayed in the footer. dataDir : (`string`) The designated directory for data files. Default is `data`. {{% module-mounts-note %}} defaultContentLanguage : (`string`) The project's default language key, conforming to the syntax described in [RFC 5646]. This value must match one of the defined language keys. Default is `en`. defaultContentLanguageInSubdir : (`bool`) Whether to publish the default language site to a subdirectory matching the `defaultContentLanguage`. Default is `false`. defaultOutputFormat : (`string`) The default output format for the site. If unspecified, the first available format in the defined order (by weight, then alphabetically) will be used. deployment : See [configure deployment](/configuration/deployment/). disableAliases : (`bool`) Whether to disable generation of alias redirects. Even if this option is enabled, the defined aliases will still be present on the page. This allows you to manage redirects separately, for example, by generating 301 redirects in an `.htaccess` file or a Netlify `_redirects` file using a custom output format. Default is `false`. disableDefaultLanguageRedirect : {{< new-in 0.140.0 />}} : (`bool`) Whether to disable generation of the alias redirect to the default language when `DefaultContentLanguageInSubdir` is `true`. Default is `false`. disableHugoGeneratorInject : (`bool`) Whether to disable injection of a `` tag into the home page. Default is `false`. disableKinds : (`[]string`) A slice of page [kinds](g) to disable during the build process, any of `404`, `home`, `page`, `robotstxt`, `rss`, `section`, `sitemap`, `taxonomy`, or `term`. disableLanguages : (`[]string`) A slice of language keys representing the languages to disable during the build process. Although this is functional, consider using the [`disabled`] key under each language instead. disableLiveReload : (`bool`) Whether to disable automatic live reloading of the browser window. Default is `false`. disablePathToLower : (`bool`) Whether to disable transformation of page URLs to lower case. enableEmoji : (`bool`) Whether to allow emoji in Markdown. Default is `false`. enableGitInfo : (`bool`) For sites under Git version control, whether to enable the [`GitInfo`] object for each page. With the [default front matter configuration], the `Lastmod` method on a `Page` object will return the Git author date. Default is `false`. enableMissingTranslationPlaceholders : (`bool`) Whether to show a placeholder instead of the default value or an empty string if a translation is missing. Default is `false`. enableRobotsTXT : (`bool`) Whether to enable generation of a `robots.txt` file. Default is `false`. environment : (`string`) The build environment. Default is `production` when running `hugo` and `development` when running `hugo server`. frontmatter : See [configure front matter](/configuration/front-matter/). hasCJKLanguage : (`bool`) Whether to automatically detect [CJK](g) languages in content. Affects the values returned by the [`WordCount`] and [`FuzzyWordCount`] methods. Default is `false`. HTTPCache : See [configure HTTP cache](/configuration/http-cache/). i18nDir : (`string`) The designated directory for translation tables. Default is `i18n`. {{% module-mounts-note %}} ignoreCache : (`bool`) Whether to ignore the cache directory. Default is `false`. ignoreFiles : (`[]string`) A slice of [regular expressions](g) used to exclude specific files from a build. These expressions are matched against the absolute file path and apply to files within the `content`, `data`, and `i18n` directories. For more advanced file exclusion options, see the section on [module mounts]. ignoreLogs : (`[]string`) A slice of message identifiers corresponding to warnings and errors you wish to suppress. See [`erroridf`] and [`warnidf`]. ignoreVendorPaths : (`string`) A [glob](g) pattern matching the module paths to exclude from the `_vendor` directory. imaging : See [configure imaging](/configuration/imaging/). languageCode : (`string`) The site's language tag, conforming to the syntax described in [RFC 5646]. This value does not affect translations or localization. Hugo uses this value to populate: - The `language` element in the [embedded RSS template] - The `lang` attribute of the `html` element in the [embedded alias template] - The `og:locale` `meta` element in the [embedded Open Graph template] When present in the root of the configuration, this value is ignored if one or more language keys exists. Please specify this value independently for each language key. languages : See [configure languages](/configuration/languages/). layoutDir : (`string`) The designated directory for templates. Default is `layouts`. {{% module-mounts-note %}} mainSections : (`string` or `[]string`) The main sections of a site. If set, the [`MainSections`] method on the `Site` object returns the given sections, otherwise it returns the section with the most pages. markup : See [configure markup](/configuration/markup/). mediaTypes : See [configure media types](/configuration/media-types/). menus : See [configure menus](/configuration/menus/). minify : See [configure minify](/configuration/minify/). module : See [configure modules](/configuration/module/). newContentEditor : (`string`) The editor to use when creating new content. noBuildLock : (`bool`) Whether to disable creation of the `.hugo_build.lock` file. Default is `false`. noChmod : (`bool`) Whether to disable synchronization of file permission modes. Default is `false`. noTimes : (`bool`) Whether to disable synchronization of file modification times. Default is `false`. outputFormats : See [configure output formats](/configuration/output-formats/). outputs : See [configure outputs](/configuration/outputs/). page : See [configure page](/configuration/page/). pagination : See [configure pagination](/configuration/pagination/). panicOnWarning : (`bool`) Whether to panic on the first WARNING. Default is `false`. params : See [configure params](/configuration/params/). permalinks : See [configure permalinks](/configuration/permalinks/). pluralizeListTitles : (`bool`) Whether to pluralize automatic list titles. Applicable to section pages. Default is `true`. printI18nWarnings : (`bool`) Whether to log WARNINGs for each missing translation. Default is `false`. printPathWarnings : (`bool`) Whether to log WARNINGs when Hugo publishes two or more files to the same path. Default is `false`. printUnusedTemplates : (`bool`) Whether to log WARNINGs for each unused template. Default is `false`. privacy : See [configure privacy](/configuration/privacy/). publishDir : (`string`) The designated directory for publishing the site. Default is `public`. refLinksErrorLevel : (`string`) The logging error level to use when the `ref` and `relref` functions, methods, and shortcodes are unable to resolve a reference to a page. Either `ERROR` or `WARNING`. Any `ERROR` will fail the build. Default is `ERROR`. refLinksNotFoundURL : (`string`) The URL to return when the `ref` and `relref` functions, methods, and shortcodes are unable to resolve a reference to a page. related : See [configure related content](/configuration/related-content/). relativeURLs : (`bool`) See [details](/content-management/urls/#relative-urls) before enabling this feature. Default is `false`. removePathAccents : (`bool`) Whether to remove [non-spacing marks](https://www.compart.com/en/unicode/category/Mn) from [composite characters](https://en.wikipedia.org/wiki/Precomposed_character) in content paths. Default is `false`. renderSegments : {{< new-in 0.124.0 />}} : (`[]string`) A slice of [segments](g) to render. If omitted, all segments are rendered. This option is typically set via a command-line flag, such as `hugo --renderSegments segment1,segment2`. The provided segment names must correspond to those defined in the [`segments`] configuration. resourceDir : (`string`) The designated directory for caching output from [asset pipelines](g). Default is `resources`. security : See [configure security](/configuration/security/). sectionPagesMenu : (`string`) When set, each top-level section will be added to the menu identified by the provided value. See [details](/content-management/menus/#define-automatically). segments : See [configure segments](/configuration/segments/). server : See [configure server](/configuration/server/). services : See [configure services](/configuration/services/). sitemap : See [configure sitemap](/configuration/sitemap/). staticDir : (`string`) The designated directory for static files. Default is `static`. {{% module-mounts-note %}} summaryLength : (`int`) Applicable to [automatic summaries], the minimum number of words returned by the [`Summary`] method on a `Page` object. The `Summary` method will return content truncated at the paragraph boundary closest to the specified `summaryLength`, but at least this minimum number of words. taxonomies : See [configure taxonomies](/configuration/taxonomies/). templateMetrics : (`bool`) Whether to print template execution metrics to the console. Default is `false`. See [details](/troubleshooting/performance/#template-metrics). templateMetricsHints : (`bool`) Whether to print template execution improvement hints to the console. Applicable when `templateMetrics` is `true`. Default is `false`. See [details](/troubleshooting/performance/#template-metrics). theme : (`string` or `[]string`) The [theme](g) to use. Multiple themes can be listed, with precedence given from left to right. See [details](/hugo-modules/theme-components/). themesDir : (`string`) The designated directory for themes. Default is `themes`. timeout : (`string`) The timeout for generating page content, either as a [duration] or in seconds. This timeout is used to prevent infinite recursion during content generation. You may need to increase this value if your pages take a long time to generate, for example, due to extensive image processing or reliance on remote content. Default is `60s`. timeZone : (`string`) The time zone used to parse dates without time zone offsets, including front matter date fields and values passed to the [`time.AsTime`] and [`time.Format`] template functions. The list of valid values may be system dependent, but should include `UTC`, `Local`, and any location in the [IANA Time Zone Database]. For example, `America/Los_Angeles` and `Europe/Oslo` are valid time zones. title : (`string`) The site title. titleCaseStyle : (`string`) The capitalization rules to follow when Hugo automatically generates a section title, or when using the [`strings.Title`] function. One of `ap`, `chicago`, `go`, `firstupper`, or `none`. Default is `ap`. See [details](#title-case-style). uglyurls : See [configure ugly URLs](/configuration/ugly-urls/). ## Cache directory Hugo's file cache directory is configurable via the [`cacheDir`] configuration option or the `HUGO_CACHEDIR` environment variable. If neither is set, Hugo will use, in order of preference: 1. If running on Netlify: `/opt/build/cache/hugo_cache/`. This means that if you run your builds on Netlify, all caches configured with `:cacheDir` will be saved and restored on the next build. For other [CI/CD](g) vendors, please read their documentation. For an CircleCI example, see [this configuration]. 1. In a `hugo_cache` directory below the OS user cache directory as defined by Go's [os.UserCacheDir] function. On Unix systems, per the [XDG base directory specification], this is `$XDG_CACHE_HOME` if non-empty, else `$HOME/.cache`. On MacOS, this is `$HOME/Library/Caches`. On Windows, this is`%LocalAppData%`. On Plan 9, this is `$home/lib/cache`. 1. In a `hugo_cache_$USER` directory below the OS temp dir. To determine the current `cacheDir`: ```sh hugo config | grep cachedir ``` ## Title case style Hugo's [`titleCaseStyle`] setting governs capitalization for automatically generated section titles and the [`strings.Title`] function. By default, it follows the capitalization rules published in the Associated Press Stylebook. Change this setting to use other capitalization rules. ap : Use the capitalization rules published in the [Associated Press Stylebook]. This is the default. chicago : Use the capitalization rules published in the [Chicago Manual of Style]. go : Capitalize the first letter of every word. firstupper : Capitalize the first letter of the first word. none : Disable transformation of automatic section titles, and disable the transformation performed by the `strings.Title` function. This is useful if you would prefer to manually capitalize section titles as needed, and to bypass opinionated theme usage of the `strings.Title` function. ## Localized settings Some configuration settings, such as menus and custom parameters, can be defined separately for each language. See [configure languages](/configuration/languages/#localized-settings). [`cacheDir`]: #cachedir [`disabled`]: /configuration/languages/#disabled [`erroridf`]: /functions/fmt/erroridf/ [`FuzzyWordCount`]: /methods/page/fuzzywordcount/ [`GitInfo`]: /methods/page/gitinfo/ [`MainSections`]: /methods/site/mainsections/ [`segments`]: /configuration/segments/ [`strings.Title`]: /functions/strings/title/ [`Summary`]: /methods/page/summary/ [`time.AsTime`]: /functions/time/astime/ [`time.Format`]: /functions/time/format/ [`titleCaseStyle`]: #titlecasestyle [`warnidf`]: /functions/fmt/warnidf/ [`WordCount`]: /methods/page/wordcount/ [Associated Press Stylebook]: https://www.apstylebook.com/ [automatic summaries]: /content-management/summaries/#automatic-summary [Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html [default front matter configuration]: /configuration/front-matter/ [duration]: https://pkg.go.dev/time#Duration [embedded alias template]: {{% eturl alias %}} [embedded Open Graph template]: {{% eturl opengraph %}} [embedded RSS template]: {{% eturl rss %}} [IANA Time Zone Database]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones [module mounts]: /configuration/module/#mounts [os.UserCacheDir]: https://pkg.go.dev/os#UserCacheDir [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1 [this configuration]: https://github.com/bep/hugo-sass-test/blob/6c3960a8f4b90e8938228688bc49bdcdd6b2d99e/.circleci/config.yml [XDG base directory specification]: https://specifications.freedesktop.org/basedir-spec/latest/ gohugoio-hugo-6abdaca/docs/content/en/configuration/build.md000066400000000000000000000073101507671574500244330ustar00rootroot00000000000000--- title: Configure build linkTitle: Build description: Configure global build options. categories: [] keywords: [] aliases: [/getting-started/configuration-build/] --- The `build` configuration section contains global build-related configuration options. {{< code-toggle config=build />}} buildStats : See the [build stats](#build-stats) section below. cachebusters : See the [cache busters](#cache-busters) section below. noJSConfigInAssets : (`bool`) Whether to disable writing a `jsconfig.json` in your `assets` directory with mapping of imports from running [js.Build](/hugo-pipes/js). This file is intended to help with intellisense/navigation inside code editors such as [VS Code](https://code.visualstudio.com/). Note that if you do not use `js.Build`, no file will be written. useResourceCacheWhen : (`string`) When to use the resource file cache, one of `never`, `fallback`, or `always`. Applicable when transpiling Sass to CSS. Default is `fallback`. ## Cache busters The `build.cachebusters` configuration option was added to support development using Tailwind 3.x's JIT compiler where a `build` configuration may look like this: {{< code-toggle file=hugo >}} [build] [build.buildStats] enable = true [[build.cachebusters]] source = "assets/watching/hugo_stats\\.json" target = "styles\\.css" [[build.cachebusters]] source = "(postcss|tailwind)\\.config\\.js" target = "css" [[build.cachebusters]] source = "assets/.*\\.(js|ts|jsx|tsx)" target = "js" [[build.cachebusters]] source = "assets/.*\\.(.*)$" target = "$1" {{< /code-toggle >}} When `buildStats` is enabled, Hugo writes a `hugo_stats.json` file on each build with HTML classes etc. that's used in the rendered output. Changes to this file will trigger a rebuild of the `styles.css` file. You also need to add `hugo_stats.json` to Hugo's server watcher. See [Hugo Starter Tailwind Basic](https://github.com/bep/hugo-starter-tailwind-basic) for a running example. source : (`string`) A [regular expression](g) matching file(s) relative to one of the virtual component directories in Hugo, typically `assets/...`. target : (`string`) A [regular expression](g) matching the keys in the resource cache that should be expired when `source` changes. You can use the matching regexp groups from `source` in the expression, e.g. `$1`. ## Build stats {{< code-toggle config=build.buildStats />}} enable : (`bool`) Whether to create a `hugo_stats.json` file in the root of your project. This file contains arrays of the `class` attributes, `id` attributes, and tags of every HTML element within your published site. Use this file as data source when [removing unused CSS] from your site. This process is also known as pruning, purging, or tree shaking. Default is `false`. [removing unused CSS]: /functions/resources/postprocess/ disableIDs : (`bool`) Whether to exclude `id` attributes. Default is `false`. disableTags : (`bool`) Whether to exclude element tags. Default is `false`. disableClasses : (`bool`) Whether to exclude `class` attributes. Default is `false`. > [!note] > Given that CSS purging is typically limited to production builds, place the `buildStats` object below [`config/production`]. > > Built for speed, there may be "false positive" detections (e.g., HTML elements that are not HTML elements) while parsing the published site. These "false positives" are infrequent and inconsequential. Due to the nature of partial server builds, new HTML entities are added while the server is running, but old values will not be removed until you restart the server or run a regular `hugo` build. [`config/production`]: /configuration/introduction/#configuration-directory gohugoio-hugo-6abdaca/docs/content/en/configuration/caches.md000066400000000000000000000022651507671574500245660ustar00rootroot00000000000000--- title: Configure file caches linkTitle: Caches description: Configure file caches. categories: [] keywords: [] --- This is the default configuration: {{< code-toggle config=caches />}} ## Keys dir : (`string`) The absolute file system path where the cached files will be stored. You can begin the path with the `:cacheDir` or `:resourceDir` token. These tokens will be replaced with the actual configured cache directory and resource directory paths, respectively. maxAge : (`string`) The [duration](g) a cached entry remains valid before being evicted. A value of `0` disables the cache. A value of `-1` means the cache entry never expires (the default). ## Tokens `:cacheDir` : (`string`) The designated cache directory. See [details](/configuration/all/#cachedir). `:project` : (`string`) The base directory name of the current Hugo project. By default, this ensures each project has isolated file caches, so running `hugo --gc` will only affect the current project's cache and not those of other Hugo projects on the same machine. `:resourceDir` : (`string`) The designated directory for caching output from [asset pipelines](g). See [details](/configuration/all/#resourcedir). gohugoio-hugo-6abdaca/docs/content/en/configuration/cascade.md000066400000000000000000000046051507671574500247230ustar00rootroot00000000000000--- title: Configure cascade linkTitle: Cascade description: Configure cascade. categories: [] keywords: [] --- You can configure your site to cascade front matter values to the home page and any of its descendants. However, this cascading will be prevented if the descendant already defines the field, or if a closer ancestor [node](g) has already cascaded a value for the same field through its front matter's `cascade` key. > [!note] > You can also configure cascading behavior within a page's front matter. See [details]. For example, to cascade a "color" parameter to the home page and all its descendants: {{< code-toggle file=hugo >}} title = 'Home' [cascade.params] color = 'red' {{< /code-toggle >}} ## Target The `target`[^1] keyword allows you to target specific pages or [environments](g). For example, to cascade a "color" parameter to pages within the "articles" section, including the "articles" section page itself: [^1]: The `_target` alias for `target` is deprecated and will be removed in a future release. {{< code-toggle file=hugo >}} [cascade.params] color = 'red' [cascade.target] path = '{/articles,/articles/**}' {{< /code-toggle >}} Use any combination of these keywords to target pages and/or environments: environment : (`string`) A [glob](g) pattern matching the build [environment](g). For example: `{staging,production}`. kind : (`string`) A [glob](g) pattern matching the [page kind](g). For example: `{taxonomy,term}`. lang : (`string`) A [glob](g) pattern matching the [page language]. For example: `{en,de}`. path : (`string`) A [glob](g) pattern matching the page's [logical path](g). For example: `{/books,/books/**}`. ## Array Define an array of cascade parameters to apply different values to different targets. For example: {{< code-toggle file=hugo >}} [[cascade]] [cascade.params] color = 'red' [cascade.target] path = '{/books/**}' kind = 'page' lang = '{en,de}' [[cascade]] [cascade.params] color = 'blue' [cascade.target] path = '{/films/**}' kind = 'page' environment = 'production' {{< /code-toggle >}} [details]: /content-management/front-matter/#cascade-1 [page language]: /methods/page/language/ gohugoio-hugo-6abdaca/docs/content/en/configuration/content-types.md000066400000000000000000000044531507671574500261550ustar00rootroot00000000000000--- title: Configure content types linkTitle: Content types description: Configure content types. categories: [] keywords: [] --- {{< new-in 0.144.0 />}} Hugo supports six [content formats](g): {{% include "/_common/content-format-table.md" %}} These can be used as either page content or [page resources](g). When used as page resources, their [resource type](g) is `page`. Consider this example of a [page bundle](g): ```text content/ └── example/ ├── index.md <-- content ├── a.adoc <-- resource (resource type: page) ├── b.html <-- resource (resource type: page) ├── c.md <-- resource (resource type: page) ├── d.org <-- resource (resource type: page) ├── e.pdc <-- resource (resource type: page) ├── f.rst <-- resource (resource type: page) ├── g.jpg <-- resource (resource type: image) └── h.png <-- resource (resource type: image) ``` The `index.md` file is the page's content, while the other files are page resources. Files `a` through `f` are of resource type `page`, while `g` and `h` are of resource type `image`. When you build a site, Hugo does not publish page resources having a resource type of `page`. For example, this is the result of building the site above: ```text public/ ├── example/ │ ├── g.jpg │ ├── h.png │ └── index.html └── index.html ``` The default behavior is appropriate in most cases. Given that page resources containing markup are typically intended for inclusion in the main content, publishing them independently is generally undesirable. The default behavior is determined by the `contentTypes` configuration: {{< code-toggle config=contentTypes />}} In this default configuration, page resources with those media types will have a resource type of `page`, and will not be automatically published. To change the resource type assignment from `page` to `text` for a given media type, remove the corresponding entry from the list. For example, to set the resource type of `text/html` files to `text`, thereby enabling automatic publication, remove the `text/html` entry: {{< code-toggle file=hugo >}} contentTypes: text/asciidoc: {} text/markdown: {} text/org: {} text/pandoc: {} text/rst: {} {{< /code-toggle >}} gohugoio-hugo-6abdaca/docs/content/en/configuration/deployment.md000066400000000000000000000126761507671574500255270ustar00rootroot00000000000000--- title: Configure deployment linkTitle: Deployment description: Configure deployments to Amazon S3, Azure Blob Storage, or Google Cloud Storage. categories: [] keywords: [] --- > [!note] > This configuration is only relevant when running `hugo deploy`. See [details](/host-and-deploy/deploy-with-hugo-deploy/). ## Top-level options These settings control the overall behavior of the deployment process. This is the default configuration: {{< code-toggle file=hugo config=deployment />}} confirm : (`bool`) Whether to prompt for confirmation before deploying. Default is `false`. dryRun : (`bool`) Whether to simulate the deployment without any remote changes. Default is `false`. force : (`bool`) Whether to re-upload all files. Default is `false`. invalidateCDN : (`bool`) Whether to invalidate the CDN cache listed in the deployment target. Default is `true`. maxDeletes : (`int`) The maximum number of files to delete, or `-1` to disable. Default is `256`. matchers : (`[]*Matcher`) A slice of [matchers](#matchers-1). order : (`[]string`) An ordered slice of [regular expressions](g) that determines upload priority (left to right). Files not matching any expression are uploaded last in an arbitrary order. target : (`string`) The target deployment [`name`](#name). Defaults to the first target. targets : (`[]*Target`) A slice of [targets](#targets-1). workers : (`int`) The number of concurrent workers to use when uploading files. Default is `10`. ## Targets A target represents a deployment target such as "staging" or "production". cloudFrontDistributionID : (`string`) The CloudFront Distribution ID, applicable if you are using the Amazon Web Services CloudFront CDN. Hugo will invalidate the CDN when deploying this target. exclude : (`string`) A [glob](g) pattern matching files to exclude when deploying to this target. Local files failing the include/exclude filters are not uploaded, and remote files failing these filters are not deleted. googleCloudCDNOrigin : (`string`) The Google Cloud project and CDN origin to invalidate when deploying this target, specified as `/`. include : (`string`) A [glob](g) pattern matching files to include when deploying to this target. Local files failing the include/exclude filters are not uploaded, and remote files failing these filters are not deleted. name : (`string`) An arbitrary name for this target. stripIndexHTML : (`bool`) Whether to map files named `
      /index.html` to `` on the remote (except for the root `index.html`). This is useful for key-value cloud storage (e.g., Amazon S3, Google Cloud Storage, Azure Blob Storage) to align canonical URLs with object keys. Default is `false`. url : (`string`) The [destination URL](#destination-urls) for deployment. ## Matchers A Matcher represents a configuration to be applied to files whose paths match the specified pattern. cacheControl : (`string`) The caching attributes to use when serving the blob. See [details][cacheControl]. contentEncoding : (`string`) The encoding used for the blob's content, if any. See [details][contentEncoding]. contentType : (`string`) The media type of the blob being written. See [details][contentType]. force : (`bool`) Whether matching files should be re-uploaded. Useful when other route-determined metadata (e.g., `contentType`) has changed. Default is `false`. gzip : (`bool`) Whether the file should be gzipped before upload. If so, the `ContentEncoding` field will automatically be set to `gzip`. Default is `false`. pattern : (`string`) A [regular expression](g) used to match paths. Paths are converted to use forward slashes (`/`) before matching. [cacheControl]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control [contentEncoding]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding [contentType]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type ## Destination URLs Service|URL example :--|:-- Amazon Simple Storage Service (S3)|`s3://my-bucket?region=us-west-1` Azure Blob Storage|`azblob://my-container` Google Cloud Storage (GCS)|`gs://my-bucket` With Google Cloud Storage you can target a subdirectory: ```text gs://my-bucket?prefix=a/subdirectory ``` You can also to deploy to storage servers compatible with Amazon S3 such as: - [Ceph] - [MinIO] - [SeaweedFS] [Ceph]: https://ceph.com/ [Minio]: https://www.minio.io/ [SeaweedFS]: https://github.com/chrislusf/seaweedfs For example, the `url` for a MinIO deployment target might resemble this: ```text s3://my-bucket?endpoint=https://my.minio.instance&awssdk=v2&use_path_style=true&disable_https=false ``` ## Example {{< code-toggle file=hugo >}} [deployment] order = ['.jpg$', '.gif$'] [[deployment.matchers]] cacheControl = 'max-age=31536000, no-transform, public' gzip = true pattern = '^.+\.(js|css|svg|ttf)$' [[deployment.matchers]] cacheControl = 'max-age=31536000, no-transform, public' gzip = false pattern = '^.+\.(png|jpg)$' [[deployment.matchers]] contentType = 'application/xml' gzip = true pattern = '^sitemap\.xml$' [[deployment.matchers]] gzip = true pattern = '^.+\.(html|xml|json)$' [[deployment.targets]] url = 's3://my_production_bucket?region=us-west-1' cloudFrontDistributionID = 'E1234567890ABCDEF0' exclude = '**.{heic,psd}' name = 'production' [[deployment.targets]] url = 's3://my_staging_bucket?region=us-west-1' exclude = '**.{heic,psd}' name = 'staging' {{< /code-toggle >}} gohugoio-hugo-6abdaca/docs/content/en/configuration/front-matter.md000066400000000000000000000066401507671574500257630ustar00rootroot00000000000000--- title: Configure front matter linkTitle: Front matter description: Configure front matter. categories: [] keywords: [] --- ## Dates There are four methods on a `Page` object that return a date. Method|Description :--|:-- [`Date`]|Returns the date of the given page. [`ExpiryDate`]|Returns the expiry date of the given page. [`Lastmod`]|Returns the last modification date of the given page. [`PublishDate`]|Returns the publish date of the given page. [`Date`]: /methods/page/date [`ExpiryDate`]: /methods/page/expirydate [`Lastmod`]: /methods/page/lastmod [`PublishDate`]: /methods/page/publishdate Hugo determines the values to return based on this configuration: {{< code-toggle config=frontmatter />}} The `ExpiryDate` method, for example, returns the `expirydate` value if it exists, otherwise it returns `unpublishdate`. You can also use custom date parameters: {{< code-toggle file=hugo >}} [frontmatter] date = ["myDate", "date"] {{< /code-toggle >}} In the example above, the `Date` method returns the `myDate` value if it exists, otherwise it returns `date`. To fall back to the default sequence of dates, use the `:default` token: {{< code-toggle file=hugo >}} [frontmatter] date = ["myDate", ":default"] {{< /code-toggle >}} In the example above, the `Date` method returns the `myDate` value if it exists, otherwise it returns the first valid date from `date`, `publishdate`, `pubdate`, `published`, `lastmod`, and `modified`. ## Aliases Some of the front matter fields have aliases. Front matter field|Aliases :--|:-- `expiryDate`|`unpublishdate` `lastmod`|`modified` `publishDate`|`pubdate`, `published` The default front matter configuration includes these aliases. ## Tokens Hugo provides the following [tokens](g) to help you configure your front matter: `:default` : The default ordered sequence of date fields. `:fileModTime` : The file's last modification timestamp. `:filename` : Extracts the date from the file name, provided the file name begins with a date in one of the following formats: - `YYYY-MM-DD` - `YYYY-MM-DD-HH-MM-SS` {{< new-in 0.148.0 />}} Within the `YYYY-MM-DD-HH-MM-SS` format, the date and time values may be separated by any character including a space (e.g., `2025-02-01T14-30-00`). Hugo resolves the extracted date to the [`timeZone`] defined in your site configuration, falling back to the system time zone. After extracting the date, Hugo uses the remaining part of the file name to generate the page's [`slug`], but only if you haven't already specified a slug in the page's front matter. For example, if you name your file `2025-02-01-article.md`, Hugo will set the date to `2025-02-01` and the slug to `article`. `:git` : The Git author date for the file's last revision. To enable access to the Git author date, set [`enableGitInfo`] to `true`, or use the `--enableGitInfo` flag when building your site. ## Example Consider this site configuration: {{< code-toggle file=hugo >}} [frontmatter] date = [':filename', ':default'] lastmod = ['lastmod', ':fileModTime'] {{< /code-toggle >}} To determine `date`, Hugo tries to extract the date from the file name, falling back to the default ordered sequence of date fields. To determine `lastmod`, Hugo looks for a `lastmod` field in front matter, falling back to the file's last modification timestamp. [`enableGitInfo`]: /configuration/all/#enablegitinfo [`slug`]: /content-management/front-matter/#slug [`timeZone`]: /configuration/all/#timezone gohugoio-hugo-6abdaca/docs/content/en/configuration/http-cache.md000066400000000000000000000075641507671574500253670ustar00rootroot00000000000000--- title: Configure the HTTP cache linkTitle: HTTP cache description: Configure the HTTP cache. categories: [] keywords: [] --- > [!note] > This configuration is only relevant when using the [`resources.GetRemote`] function. ## Layered caching Hugo employs a layered caching system. ```goat {.w-40} .-----------. | dynacache | '-----+-----' | v .----------. | HTTP cache | '-----+----' | v .----------. | file cache | '-----+----' ``` Dynacache : An in-memory cache employing a Least Recently Used (LRU) eviction policy. Entries are removed from the cache when changes occur, when they match [cache-busting] patterns, or under low-memory conditions. HTTP Cache : An HTTP cache for remote resources as specified in [RFC 9111]. Optimal performance is achieved when resources include appropriate HTTP cache headers. The HTTP cache utilizes the file cache for storage and retrieval of cached resources. File cache : See [configure file caches]. The HTTP cache involves two key aspects: determining which content to cache (the caching process itself) and defining the frequency with which to check for updates (the polling strategy). ## HTTP caching The HTTP cache behavior is defined for a configured set of resources. Stale resources will be refreshed from the file cache, even if their configured Time-To-Live (TTL) has not expired. If HTTP caching is disabled for a resource, Hugo will bypass the cache and access the file directly. The default configuration disables everything: {{< code-toggle file=hugo >}} [HTTPCache.cache.for] excludes = ['**'] includes = [] {{< /code-toggle >}} cache.for.excludes : (`string`) A list of [glob](g) patterns to exclude from caching. cache.for.includes : (`string`) A list of [glob](g) patterns to cache. ## HTTP polling Polling is used in watch mode (e.g., `hugo server`) to detect changes in remote resources. Polling can be enabled even if HTTP caching is disabled. Detected changes trigger a rebuild of pages using the affected resource. Polling can be disabled for specific resources, typically those known to be static. The default configuration disables everything: {{< code-toggle file=hugo >}} [[HTTPCache.polls]] disable = true high = '0s' low = '0s' [HTTPCache.polls.for] includes = ['**'] excludes = [] {{< /code-toggle >}} polls : A slice of polling configurations. polls.disable : (`bool`) Whether to disable polling for this configuration. polls.low : (`string`) The minimum polling interval expressed as a [duration](g). This is used after a recent change and gradually increases towards `polls.high`. polls.high : (`string`) The maximum polling interval expressed as a [duration](g). This is used when the resource is considered stable. polls.for.excludes : (`string`) A list of [glob](g) patterns to exclude from polling for this configuration. polls.for.includes : (`string`) A list of [glob](g) patterns to include in polling for this configuration. ## Behavior Polling and HTTP caching interact as follows: - With polling enabled, rebuilds are triggered only by actual changes, detected via `eTag` changes (Hugo generates an MD5 hash if the server doesn't provide one). - If polling is enabled but HTTP caching is disabled, the remote is checked for changes only after the file cache's TTL expires (e.g., a `maxAge` of `10h` with a `1s` polling interval is inefficient). - If both polling and HTTP caching are enabled, changes are checked for even before the file cache's TTL expires. Cached `eTag` and `last-modified` values are sent in `if-none-match` and `if-modified-since` headers, respectively, and a cached response is returned on HTTP [304]. [`resources.GetRemote`]: /functions/resources/getremote/ [304]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304 [cache-busting]: /configuration/build/#cache-busters [configure file caches]: /configuration/caches/ [RFC 9111]: https://datatracker.ietf.org/doc/html/rfc9111 gohugoio-hugo-6abdaca/docs/content/en/configuration/imaging.md000066400000000000000000000054241507671574500247530ustar00rootroot00000000000000--- title: Configure imaging linkTitle: Imaging description: Configure imaging. categories: [] keywords: [] --- ## Processing options These are the default settings for processing images: {{< code-toggle file=hugo >}} [imaging] anchor = 'Smart' bgColor = '#ffffff' hint = 'photo' quality = 75 resampleFilter = 'box' {{< /code-toggle >}} anchor : (`string`) When using the [`Crop`] or [`Fill`] method, the anchor determines the placement of the crop box. One of `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`. Default is `Smart`. bgColor : (`string`) The background color of the resulting image. Applicable when converting from a format that supports transparency to a format that does not support transparency, for example, when converting from PNG to JPEG. Expressed as an RGB [hexadecimal] value. Default is `#ffffff`. [hexadecimal]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color hint : (`string`) Applicable to WebP images, this option corresponds to a set of predefined encoding parameters. One of `drawing`, `icon`, `photo`, `picture`, or `text`. Default is `photo`. See [details](/content-management/image-processing/#hint). quality : (`int`) Applicable to JPEG and WebP images, this value determines the quality of the converted image. Higher values produce better quality images, while lower values produce smaller files. Set this value to a whole number between `1` and `100`, inclusive. Default is `75`. resampleFilter : (`string`) The resampling filter used when resizing an image. Default is `box`. See [details](/content-management/image-processing/#resampling-filter) ## EXIF data These are the default settings for extracting EXIF data from images: {{< code-toggle file=hugo >}} [imaging.exif] includeFields = "" excludeFields = "" disableDate = false disableLatLong = false {{< /code-toggle >}} disableDate : (`bool`) Whether to disable extraction of the image creation date/time. Default is `false`. disableLatLong : (`bool`) Whether to disable extraction of the GPS latitude and longitude. Default is `false`. excludeFields : (`string`) A [regular expression](g) matching the tags to exclude when extracting EXIF data. includeFields : (`string`) A [regular expression](g) matching the tags to include when extracting EXIF data. To include all available tags, set this value to `".*"`. > [!note] > To improve performance and decrease cache size, Hugo excludes the following tags: `ColorSpace`, `Contrast`, `Exif`, `Exposure[M|P|B]`, `Flash`, `GPS`, `JPEG`, `Metering`, `Resolution`, `Saturation`, `Sensing`, `Sharp`, and `WhiteBalance`. > > To control tag availability, change the `excludeFields` or `includeFields` settings as described above. [`Crop`]: /methods/resource/crop/ [`Fill`]: /methods/resource/fill/ gohugoio-hugo-6abdaca/docs/content/en/configuration/introduction.md000066400000000000000000000233131507671574500260560ustar00rootroot00000000000000--- title: Introduction description: Configure your site using files, directories, and environment variables. categories: [] keywords: [] weight: 10 --- ## Sensible defaults Hugo offers many configuration options, but its defaults are often sufficient. A new site requires only these settings: {{< code-toggle file=hugo >}} baseURL = 'https://example.org/' languageCode = 'en-us' title = 'My New Hugo Site' {{< /code-toggle >}} Only define settings that deviate from the defaults. A smaller configuration file is easier to read, understand, and debug. Keep your configuration concise. > [!note] > The best configuration file is a short configuration file. ## Configuration file Create a site configuration file in the root of your project directory, naming it `hugo.toml`, `hugo.yaml`, or `hugo.json`, with that order of precedence. ```text my-project/ └── hugo.toml ``` > [!note] > For versions v0.109.0 and earlier, the site configuration file was named `config`. While you can still use this name, it's recommended to switch to the newer naming convention, `hugo`. A simple example: {{< code-toggle file=hugo >}} baseURL = 'https://example.org/' languageCode = 'en-us' title = 'ABC Widgets, Inc.' [params] subtitle = 'The Best Widgets on Earth' [params.contact] email = 'info@example.org' phone = '+1 202-555-1212' {{< /code-toggle >}} To use a different configuration file when building your site, use the `--config` flag: ```sh hugo --config other.toml ``` Combine two or more configuration files, with left-to-right precedence: ```sh hugo --config a.toml,b.yaml,c.json ``` > [!note] > See the specifications for each file format: [TOML], [YAML], and [JSON]. ## Configuration directory Instead of a single site configuration file, split your configuration by [environment](g), root configuration key, and language. For example: ```text my-project/ └── config/ ├── _default/ │ ├── hugo.toml │ ├── menus.en.toml │ ├── menus.de.toml │ └── params.toml └── production/ └── params.toml ``` The root configuration keys are {{< root-configuration-keys >}}. > [!note] > You must define `cascade` tables in the root configuration file. You cannot define `cascade` tables in a dedicated file. See issue [#12899] for details. [#12899]: https://github.com/gohugoio/hugo/issues/12899 ### Omit the root key When splitting the configuration by root key, omit the root key in the component file. For example, these are equivalent: {{< code-toggle file=config/_default/hugo >}} [params] foo = 'bar' {{< /code-toggle >}} {{< code-toggle file=config/_default/params >}} foo = 'bar' {{< /code-toggle >}} ### Recursive parsing Hugo parses the `config` directory recursively, allowing you to organize the files into subdirectories. For example: ```text my-project/ └── config/ └── _default/ ├── navigation/ │ ├── menus.de.toml │ └── menus.en.toml └── hugo.toml ``` ### Example ```text my-project/ └── config/ ├── _default/ │ ├── hugo.toml │ ├── menus.en.toml │ ├── menus.de.toml │ └── params.toml ├── production/ │ ├── hugo.toml │ └── params.toml └── staging/ ├── hugo.toml └── params.toml ``` Considering the structure above, when running `hugo --environment staging`, Hugo will use every setting from `config/_default` and merge `staging`'s on top of those. Let's take an example to understand this better. Let's say you are using Google Analytics for your website. This requires you to specify a [Google tag ID] in your site configuration: {{< code-toggle file=hugo >}} [services.googleAnalytics] ID = 'G-XXXXXXXXX' {{< /code-toggle >}} Now consider the following scenario: 1. You don't want to load the analytics code when running `hugo server`. 1. You want to use different Google tag IDs for your production and staging environments. For example: - `G-PPPPPPPPP` for production - `G-SSSSSSSSS` for staging To satisfy these requirements, configure your site as follows: 1. `config/_default/hugo.toml` - Exclude the `services.googleAnalytics` section. This will prevent loading of the analytics code when you run `hugo server`. - By default, Hugo sets its `environment` to `development` when running `hugo server`. In the absence of a `config/development` directory, Hugo uses the `config/_default` directory. 1. `config/production/hugo.toml` - Include this section only: {{< code-toggle file=hugo >}} [services.googleAnalytics] ID = 'G-PPPPPPPPP' {{< /code-toggle >}} - You do not need to include other parameters in this file. Include only those parameters that are specific to your production environment. Hugo will merge these parameters with the default configuration. - By default, Hugo sets its `environment` to `production` when running `hugo`. The analytics code will use the `G-PPPPPPPPP` tag ID. 1. `config/staging/hugo.toml` - Include this section only: {{< code-toggle file=hugo >}} [services.googleAnalytics] ID = 'G-SSSSSSSSS' {{< /code-toggle >}} - You do not need to include other parameters in this file. Include only those parameters that are specific to your staging environment. Hugo will merge these parameters with the default configuration. - To build your staging site, run `hugo --environment staging`. The analytics code will use the `G-SSSSSSSSS` tag ID. ## Merge configuration settings Hugo merges configuration settings from themes and modules, prioritizing the project's own settings. Given this simplified project structure with two themes: ```text project/ ├── themes/ │ ├── theme-a/ │ │ └── hugo.toml │ └── theme-b/ │ └── hugo.toml └── hugo.toml ``` and this project-level configuration: {{< code-toggle file=hugo >}} baseURL = 'https://example.org/' languageCode = 'en-us' title = 'My New Hugo Site' theme = ['theme-a','theme-b'] {{< /code-toggle >}} Hugo merges settings in this order: 1. Project configuration (`hugo.toml` in the project root) 1. `theme-a` configuration 1. `theme-b` configuration The `_merge` setting within each top-level configuration key controls _which_ settings are merged and _how_ they are merged. The value for `_merge` can be one of: none : No merge. shallow : Only add values for new keys. deep : Add values for new keys, merge existing. Note that you don't need to be so verbose as in the default setup below; a `_merge` value higher up will be inherited if not set. {{< code-toggle file=hugo dataKey="config_helpers.mergeStrategy" skipHeader=true />}} ## Environment variables You can also configure settings using operating system environment variables: ```sh export HUGO_BASEURL=https://example.org/ export HUGO_ENABLEGITINFO=true export HUGO_ENVIRONMENT=staging hugo ``` The above sets the [`baseURL`], [`enableGitInfo`], and [`environment`] configuration options and then builds your site. > [!note] > An environment variable takes precedence over the values set in the configuration file. This means that if you set a configuration value with both an environment variable and in the configuration file, the value in the environment variable will be used. Environment variables simplify configuration for [CI/CD](g) deployments like GitHub Pages, GitLab Pages, and Netlify by allowing you to set values directly within their respective configuration and workflow files. > [!note] > Environment variable names must be prefixed with `HUGO_`. > > To set custom site parameters, prefix the name with `HUGO_PARAMS_`. For snake_case variable names, the standard `HUGO_` prefix won't work. Hugo infers the delimiter from the first character following `HUGO`. This allows for variations like `HUGOxPARAMSxAPI_KEY=abcdefgh` using any [permitted delimiter]. In addition to configuring standard settings, environment variables may be used to override default values for certain internal settings: DART_SASS_BINARY : (`string`) The absolute path to the Dart Sass executable. By default, Hugo searches for the executable in each of the paths in the `PATH` environment variable. HUGO_FILE_LOG_FORMAT : (`string`) A format string for the file path, line number, and column number displayed when reporting errors, or when calling the `Position` method from a shortcode or Markdown render hook. Valid tokens are `:file`, `:line`, and `:col`. Default is `:file::line::col`. HUGO_MEMORYLIMIT : {{< new-in 0.123.0 />}} : (`int`) The maximum amount of system memory, in gigabytes, that Hugo can use while rendering your site. Default is 25% of total system memory. Note that `HUGO_MEMORYLIMIT` is a "best effort" setting. Don't expect Hugo to build a million pages with only 1 GB of memory. You can get more information about how this behaves during the build by building with `hugo --logLevel info` and look for the `dynacache` label. HUGO_NUMWORKERMULTIPLIER : (`int`) The number of workers used in parallel processing. Default is the number of logical CPUs. ## Current configuration Display the complete site configuration with: ```sh hugo config ``` Display a specific configuration setting with: ```sh hugo config | grep [key] ``` Display the configured file mounts with: ```sh hugo config mounts ``` [`baseURL`]: /configuration/all#baseurl [`enableGitInfo`]: /configuration/all#enablegitinfo [`environment`]: /configuration/all#environment [Google tag ID]: https://support.google.com/tagmanager/answer/12326985?hl=en [JSON]: https://datatracker.ietf.org/doc/html/rfc7159 [permitted delimiter]: https://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap08.html [TOML]: https://toml.io/en/latest [YAML]: https://yaml.org/spec/ gohugoio-hugo-6abdaca/docs/content/en/configuration/languages.md000066400000000000000000000143341507671574500253060ustar00rootroot00000000000000--- title: Configure languages linkTitle: Languages description: Configure the languages in your multilingual site. categories: [] keywords: [] --- ## Base settings Configure the following base settings within the site's root configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' defaultContentLanguageInSubdir = false disableDefaultLanguageRedirect = false disableLanguages = [] {{< /code-toggle >}} defaultContentLanguage : (`string`) The project's default language key, conforming to the syntax described in [RFC 5646]. This value must match one of the defined [language keys](#language-keys). Default is `en`. defaultContentLanguageInSubdir : (`bool`) Whether to publish the default language site to a subdirectory matching the `defaultContentLanguage`. Default is `false`. disableDefaultLanguageRedirect : {{< new-in 0.140.0 />}} : (`bool`) Whether to disable generation of the alias redirect to the default language when `DefaultContentLanguageInSubdir` is `true`. Default is `false`. disableLanguages : (`[]string]`) A slice of language keys representing the languages to disable during the build process. Although this is functional, consider using the [`disabled`](#disabled) key under each language instead. ## Language settings Configure each language under the `languages` key: {{< code-toggle config=languages />}} In the above, `en` is the [language key](#language-keys). disabled : (`bool`) Whether to disable this language when building the site. Default is `false`. languageCode : (`string`) The language tag as described in [RFC 5646]. This value does not affect localization or URLs. Hugo uses this value to populate: - The `lang` attribute of the `html` element in the [embedded alias template] - The `language` element in the [embedded RSS template] - The `locale` property in the [embedded OpenGraph template] Access this value from a template using the [`Language.LanguageCode`] method on a `Site` or `Page` object. languageDirection : (`string`) The language direction, either left-to-right (`ltr`) or right-to-left (`rtl`). Use this value in your templates with the global [`dir`] HTML attribute. Access this value from a template using the [`Language.LanguageDirection`] method on a `Site` or `Page` object. languageName : (`string`) The language name, typically used when rendering a language switcher. Access this value from a template using the [`Language.LanguageName`] method on a `Site` or `Page` object. title : (`string`) The site title for this language. Access this value from a template using the [`Title`] method on a `Site` object. weight : (`int`) The language [weight](g). When set to a non-zero value, this is the primary sort criteria for this language. Access this value from a template using the [`Language.Weight`] method on a `Site` or `Page` object. ## Localized settings Some configuration settings can be defined separately for each language. For example: {{< code-toggle file=hugo >}} [languages.en] languageCode = 'en-US' languageName = 'English' weight = 1 title = 'Project Documentation' timeZone = 'America/New_York' [languages.en.pagination] path = 'page' [languages.en.params] subtitle = 'Reference, Tutorials, and Explanations' {{< /code-toggle >}} The following configuration keys can be defined separately for each language: {{< per-lang-config-keys >}} Any key not defined in a `languages` object will fall back to the global value in the root of the site configuration. ## Language keys Language keys must conform to the syntax described in [RFC 5646]. For example: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' [languages.de] weight = 1 [languages.en-US] weight = 2 [languages.pt-BR] weight = 3 {{< /code-toggle >}} Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7] are also supported. Omit the `art-x-` prefix from the language key. For example: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' [languages.en] weight = 1 [languages.hugolang] weight = 2 {{< /code-toggle >}} > [!note] > Private use subtags must not exceed 8 alphanumeric characters. ## Example {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = true disableDefaultLanguageRedirect = false [languages.de] contentDir = 'content/de' disabled = false languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.de.params] subtitle = 'Referenz, Tutorials und Erklärungen' [languages.en] contentDir = 'content/en' disabled = false languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' title = 'Project Documentation' weight = 2 [languages.en.params] subtitle = 'Reference, Tutorials, and Explanations' {{< /code-toggle >}} > [!note] > In the example above, omit `contentDir` if [translating by file name]. ## Multihost Hugo supports multiple languages in a multihost configuration. This means you can configure a `baseURL` per `language`. > [!note] > If you define a `baseURL` for one language, you must define a unique `baseURL` for all languages. For example: {{< code-toggle file=hugo >}} defaultContentLanguage = 'fr' [languages] [languages.en] baseURL = 'https://en.example.org/' languageName = 'English' title = 'In English' weight = 2 [languages.fr] baseURL = 'https://fr.example.org' languageName = 'Français' title = 'En Français' weight = 1 {{}} With the above, Hugo publishes two sites, each with their own root: ```text public ├── en └── fr ``` [`dir`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir [`Language.LanguageCode`]: /methods/site/language/#languagecode [`Language.LanguageDirection`]: /methods/site/language/#languagedirection [`Language.LanguageName`]: /methods/site/language/#languagename [`Language.Weight`]: /methods/site/language/#weight [`Title`]: /methods/site/title/ [embedded alias template]: {{% eturl alias %}} [embedded OpenGraph template]: {{% eturl opengraph %}} [embedded RSS template]: {{% eturl rss %}} [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1 [RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7 [translating by file name]: /content-management/multilingual/#translation-by-file-name gohugoio-hugo-6abdaca/docs/content/en/configuration/markup.md000066400000000000000000000373521507671574500246440ustar00rootroot00000000000000--- title: Configure markup linkTitle: Markup description: Configure markup. categories: [] keywords: [] aliases: [/getting-started/configuration-markup/] --- ## Default handler In its default configuration, Hugo uses [Goldmark] to render Markdown to HTML. {{< code-toggle file=hugo >}} [markup] defaultMarkdownHandler = 'goldmark' {{< /code-toggle >}} Files with ending with `.md`, `.mdown`, or `.markdown` are processed as Markdown, unless you've explicitly set a different format using the `markup` field in your front matter. To use a different renderer for Markdown files, specify one of `asciidocext`, `org`, `pandoc`, or `rst` in your site configuration. `defaultMarkdownHandler`|Renderer :--|:-- `asciidocext`|[AsciiDoc] `goldmark`|[Goldmark] `org`|[Emacs Org Mode] `pandoc`|[Pandoc] `rst`|[reStructuredText] To use AsciiDoc, Pandoc, or reStructuredText you must install the relevant renderer and update your [security policy]. > [!note] > Unless you need a unique capability provided by one of the alternative Markdown handlers, we strongly recommend that you use the default setting. Goldmark is fast, well maintained, conforms to the [CommonMark] specification, and is compatible with [GitHub Flavored Markdown] (GFM). ## Goldmark This is the default configuration for the Goldmark Markdown renderer: {{< code-toggle config=markup.goldmark />}} ### Extensions The extensions below, excluding Extras and Passthrough, are enabled by default. Extension|Documentation|Enabled :--|:--|:-: `cjk`|[Goldmark Extensions: CJK]|:heavy_check_mark: `definitionList`|[PHP Markdown Extra: Definition lists]|:heavy_check_mark: `extras`|[Hugo Goldmark Extensions: Extras]|  `footnote`|[PHP Markdown Extra: Footnotes]|:heavy_check_mark: `linkify`|[GitHub Flavored Markdown: Autolinks]|:heavy_check_mark: `passthrough`|[Hugo Goldmark Extensions: Passthrough]|  `strikethrough`|[GitHub Flavored Markdown: Strikethrough]|:heavy_check_mark: `table`|[GitHub Flavored Markdown: Tables]|:heavy_check_mark: `taskList`|[GitHub Flavored Markdown: Task list items]|:heavy_check_mark: `typographer`|[Goldmark Extensions: Typographer]|:heavy_check_mark: #### Extras {{< new-in 0.126.0 />}} Enable [deleted text], [inserted text], [mark text], [subscript], and [superscript] elements in Markdown. Element|Markdown|Rendered :--|:--|:-- Deleted text|`~~foo~~`|`foo` Inserted text|`++bar++`|`bar` Mark text|`==baz==`|`baz` Subscript|`H~2~O`|`H2O` Superscript|`1^st^`|`1st` To avoid a conflict[^1], if you enable the "subscript" feature of the Extras extension, you must disable the Strikethrough extension: [^1]: See [details](https://github.com/gohugoio/hugo-goldmark-extensions/commit/4d4fcd022fe45a9b51483df001c9e5f4e632d5a9). {{< code-toggle file=hugo >}} [markup.goldmark.extensions] strikethrough = false [markup.goldmark.extensions.extras.subscript] enable = true {{< /code-toggle >}} If you still need to show deleted text after disabling the Strikethrough extension, enable the "deleted text" feature of the Extras extension: {{< code-toggle file=hugo >}} [markup.goldmark.extensions] strikethrough = false [markup.goldmark.extensions.extras.delete] enable = true {{< /code-toggle >}} With this configuration, to format text as deleted, wrap it with double-tildes. #### Passthrough {{< new-in 0.122.0 />}} Enable the Passthrough extension to include mathematical equations and expressions in Markdown using LaTeX markup. See [mathematics in Markdown] for details. #### Typographer The Typographer extension replaces certain character combinations with HTML entities as specified below: Markdown|Replaced by|Description :--|:--|:-- `...`|`…`|horizontal ellipsis `'`|`’`|apostrophe `--`|`–`|en dash `---`|`—`|em dash `«`|`«`|left angle quote `“`|`“`|left double quote `‘`|`‘`|left single quote `»`|`»`|right angle quote `”`|`”`|right double quote `’`|`’`|right single quote ### Goldmark settings explained Most of the Goldmark settings above are self-explanatory, but some require explanation. duplicateResourceFiles : {{< new-in 0.123.0 />}} : (`bool`) Whether to duplicate shared page resources for each language on multilingual single-host sites. See [multilingual page resources] for details. Default is `false`. > [!note] > With multilingual single-host sites, setting this parameter to `false` will enable Hugo's [embedded link render hook] and [embedded image render hook]. This is the default configuration for multilingual single-host sites. parser.wrapStandAloneImageWithinParagraph : (`bool`) Whether to wrap image elements without adjacent content within a `p` element when rendered. This is the default Markdown behavior. Set to `false` when using an [image render hook] to render standalone images as `figure` elements. Default is `true`. parser.autoDefinitionTermID : {{< new-in 0.144.0 />}} : (`bool`) Whether to automatically add `id` attributes to description list terms (i.e., `dt` elements). When `true`, the `id` attribute of each `dt` element is accessible through the [`Fragments.Identifiers`] method on a `Page` object. parser.autoHeadingID : (`bool`) Whether to automatically add `id` attributes to headings (i.e., `h1`, `h2`, `h3`, `h4`, `h5`, and `h6` elements). parser.autoIDType : (`string`) The strategy used to automatically generate `id` attributes, one of `github`, `github-ascii` or `blackfriday`. Default is `github`. - `github`: Generate GitHub-compatible `id` attributes - `github-ascii`: Drop any non-ASCII characters after accent normalization - `blackfriday`: Generate `id` attributes compatible with the Blackfriday Markdown renderer This is also the strategy used by the [anchorize] template function. parser.attribute.block : (`bool`) Whether to enable [Markdown attributes] for block elements. Default is `false`. parser.attribute.title : (`bool`) Whether to enable [Markdown attributes] for headings. Default is `true`. renderHooks.image.enableDefault : {{< new-in 0.123.0 />}} : Deprecated in v0.148.0. Use `renderHooks.image.useEmbedded` instead. renderHooks.image.useEmbedded : {{< new-in 0.148.0 />}} : (`string`) When to use the [embedded image render hook]. One of `auto`, `never`, `always`, or `fallback`. Default is `auto`. - `auto`: Automatically use the embedded image render hook for multilingual single-host sites, specifically when the [duplication of shared page resources] feature is disabled. This is the default behavior for such sites. If custom image render hooks are defined by your project, modules, or themes, these will be used instead. - `never`: Never use the embedded image render hook. If custom image render hooks are defined by your project, modules, or themes, these will be used instead. - `always`: Always use the embedded image render hook, even if custom image render hooks are provided by your project, modules, or themes. In this case, the embedded hook takes precedence. - `fallback`: Use the embedded image render hook only if custom image render hooks are not provided by your project, modules, or themes. If custom image render hooks exist, these will be used instead. renderHooks.link.enableDefault : {{< new-in 0.123.0 />}} : Deprecated in v0.148.0. Use `renderHooks.link.useEmbedded` instead. renderHooks.link.useEmbedded : {{< new-in 0.148.0 />}} : (`string`) When to use the [embedded link render hook]. One of `auto`, `never`, `always`, or `fallback`. Default is `auto`. - `auto`: Automatically use the embedded link render hook for multilingual single-host sites, specifically when the [duplication of shared page resources] feature is disabled. This is the default behavior for such sites. If custom link render hooks are defined by your project, modules, or themes, these will be used instead. - `never`: Never use the embedded link render hook. If custom link render hooks are defined by your project, modules, or themes, these will be used instead. - `always`: Always use the embedded link render hook, even if custom link render hooks are provided by your project, modules, or themes. In this case, the embedded hook takes precedence. - `fallback`: Use the embedded link render hook only if custom link render hooks are not provided by your project, modules, or themes. If custom link render hooks exist, these will be used instead. renderer.hardWraps : (`bool`) Whether to replace newline characters within a paragraph with `br` elements. Default is `false`. renderer.unsafe : (`bool`) Whether to render raw HTML mixed within Markdown. This is unsafe unless the content is under your control. Default is `false`. ## AsciiDoc This is the default configuration for the AsciiDoc renderer: {{< code-toggle config=markup.asciidocExt />}} ### AsciiDoc settings explained attributes : (`map`) A map of key-value pairs, each a document attribute. See Asciidoctor's [attributes]. backend : (`string`) The backend output file format. Default is `html5`. extensions : (`string array`) An array of enabled extensions, one or more of `asciidoctor-html5s`, `asciidoctor-bibtex`, `asciidoctor-diagram`, `asciidoctor-interdoc-reftext`, `asciidoctor-katex`, `asciidoctor-latex`, `asciidoctor-mathematical`, or `asciidoctor-question`. > [!note] > To mitigate security risks, entries in the extension array may not contain forward slashes (`/`), backslashes (`\`), or periods. Due to this restriction, extensions must be in Ruby's `$LOAD_PATH`. failureLevel : (`string`) The minimum logging level that triggers a non-zero exit code (failure). Default is `fatal`. noHeaderOrFooter : (`bool`) Whether to output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. Default is `true`. preserveTOC : (`bool`) Whether to preserve the table of contents (TOC) rendered by Asciidoctor. By default, to make the TOC compatible with existing themes, Hugo removes the TOC rendered by Asciidoctor. To render the TOC, use the [`TableOfContents`] method on a `Page` object in your templates. Default is `false`. safeMode : (`string`) The safe mode level, one of `unsafe`, `safe`, `server`, or `secure`. Default is `unsafe`. sectionNumbers : (`bool`) Whether to number each section title. Default is `false`. trace : (`bool`) Whether to include backtrace information on errors. Default is `false`. verbose : (`bool`) Whether to verbosely print processing information and configuration file checks to stderr. Default is `false`. workingFolderCurrent : (`bool`) Whether to set the working directory to be the same as that of the AsciiDoc file being processed, allowing [includes] to work with relative paths. Set to `true` to render diagrams with the [asciidoctor-diagram] extension. Default is `false`. ### Configuration example {{< code-toggle file=hugo >}} [markup.asciidocExt] extensions = ["asciidoctor-html5s", "asciidoctor-diagram"] workingFolderCurrent = true [markup.asciidocExt.attributes] my-base-url = "https://example.com/" my-attribute-name = "my value" {{< /code-toggle >}} ### Syntax highlighting Follow the steps below to enable syntax highlighting. Step 1 : Set the `source-highlighter` attribute in your site configuration. For example: {{< code-toggle file=hugo >}} [markup.asciidocExt.attributes] source-highlighter = 'rouge' {{< /code-toggle >}} Step 2 : Generate the highlighter CSS. For example: ```text rougify style monokai.sublime > assets/css/syntax.css ``` Step 3 : In your base template add a link to the CSS file: ```go-html-template {file="layouts/baseof.html"} ... {{ with resources.Get "css/syntax.css" }} {{ end }} ... ``` Step 4 : Add the code to be highlighted to your markup: ```text [#hello,ruby] ---- require 'sinatra' get '/hi' do "Hello World!" end ---- ``` ### Troubleshooting Run `hugo --logLevel debug` to examine Hugo's call to the Asciidoctor executable: ```txt INFO 2019/12/22 09:08:48 Rendering book-as-pdf.adoc with C:\Ruby26-x64\bin\asciidoctor.bat using asciidoc args [--no-header-footer -r asciidoctor-html5s -b html5s -r asciidoctor-diagram --base-dir D:\prototypes\hugo_asciidoc_ddd\docs -a outdir=D:\prototypes\hugo_asciidoc_ddd\build -] ... ``` ## Highlight This is the default configuration. {{< code-toggle config=markup.highlight />}} {{% include "/_common/syntax-highlighting-options.md" %}} ## Table of contents This is the default configuration for the table of contents, applicable to Goldmark and Asciidoctor: {{< code-toggle config=markup.tableOfContents />}} startLevel : (`int`) Heading levels less than this value will be excluded from the table of contents. For example, to exclude `h1` elements from the table of contents, set this value to `2`. Default is `2`. endLevel : (`int`) Heading levels greater than this value will be excluded from the table of contents. For example, to exclude `h4`, `h5`, and `h6` elements from the table of contents, set this value to `3`. Default is `3`. ordered : (`bool`) Whether to generates an ordered list instead of an unordered list. Default is `false`. [`Fragments.Identifiers`]: /methods/page/fragments/#identifiers [`TableOfContents`]: /methods/page/tableofcontents/ [anchorize]: /functions/urls/anchorize [AsciiDoc]: https://asciidoc.org/ [asciidoctor-diagram]: https://asciidoctor.org/docs/asciidoctor-diagram/ [attributes]: https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#attributes-and-substitutions [CommonMark]: https://spec.commonmark.org/current/ [deleted text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles [Emacs Org Mode]: https://orgmode.org/ [embedded image render hook]: /render-hooks/images/#embedded [embedded link render hook]: /render-hooks/links/#embedded [GitHub Flavored Markdown: Autolinks]: https://github.github.com/gfm/#autolinks-extension- [GitHub Flavored Markdown: Strikethrough]: https://github.github.com/gfm/#strikethrough-extension- [GitHub Flavored Markdown: Tables]: https://github.github.com/gfm/#tables-extension- [GitHub Flavored Markdown: Task list items]: https://github.github.com/gfm/#task-list-items-extension- [GitHub Flavored Markdown]: https://github.github.com/gfm/ [Goldmark Extensions: CJK]: https://github.com/yuin/goldmark?tab=readme-ov-file#cjk-extension [Goldmark Extensions: Typographer]: https://github.com/yuin/goldmark?tab=readme-ov-file#typographer-extension [Goldmark]: https://github.com/yuin/goldmark/ [Hugo Goldmark Extensions: Extras]: https://github.com/gohugoio/hugo-goldmark-extensions?tab=readme-ov-file#extras-extension [Hugo Goldmark Extensions: Passthrough]: https://github.com/gohugoio/hugo-goldmark-extensions?tab=readme-ov-file#passthrough-extension [image render hook]: /render-hooks/images/ [includes]: https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#includes [inserted text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins [mark text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark [Markdown attributes]: /content-management/markdown-attributes/ [mathematics in Markdown]: content-management/mathematics/ [multilingual page resources]: /content-management/page-resources/#multilingual [Pandoc]: https://pandoc.org/ [PHP Markdown Extra: Definition lists]: https://michelf.ca/projects/php-markdown/extra/#def-list [PHP Markdown Extra: Footnotes]: https://michelf.ca/projects/php-markdown/extra/#footnotes [reStructuredText]: https://docutils.sourceforge.io/rst.html [security policy]: /configuration/security/ [subscript]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub [superscript]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup gohugoio-hugo-6abdaca/docs/content/en/configuration/media-types.md000066400000000000000000000054121507671574500255560ustar00rootroot00000000000000--- title: Configure media types linkTitle: Media types description: Configure media types. categories: [] keywords: [] --- {{% glossary-term "media type" %}} Configured media types serve multiple purposes in Hugo, including the definition of [output formats](g). This is the default media type configuration in tabular form: {{< datatable "config" "mediaTypes" "_key" "suffixes" >}} The `suffixes` column in the table above shows the suffixes associated with each media type. For example, Hugo associates `.html` and `.htm` files with the `text/html` media type. > [!note] > The first suffix is the primary suffix. Use the primary suffix when naming template files. For example, when creating a template for an RSS feed, use the `xml` suffix. ## Default configuration The following is the default configuration that matches the table above: {{< code-toggle file=hugo config=mediaTypes />}} delimiter : (`string`) The delimiter between the file name and the suffix. The delimiter, in conjunction with the suffix, forms the file extension. Default is `"."`. suffixes : (`[]string`) The suffixes associated with this media type. The first suffix is the primary suffix. ## Modify a media type You can modify any of the default media types. For example, to switch the primary suffix for `text/html` from `html` to `htm`: {{< code-toggle file=hugo >}} [mediaTypes.'text/html'] suffixes = ['htm','html'] {{< /code-toggle >}} If you alter a default media type, you must also explicitly redefine all output formats that utilize that media type. For example, to ensure the changes above affect the `html` output format, redefine the `html` output format: {{< code-toggle file=hugo >}} [outputFormats.html] mediaType = 'text/html' {{< /code-toggle >}} ## Create a media type You can create new media types as needed. For example, to create a media type for an Atom feed: {{< code-toggle file=hugo >}} [mediaTypes.'application/atom+xml'] suffixes = ['atom'] {{< /code-toggle >}} ## Media types without suffixes Occasionally, you may need to create a media type without a suffix or delimiter. For example, [Netlify] recognizes configuration files named `_redirects` and `_headers`, which Hugo can generate using custom [output formats](g). To support these custom output formats, register a custom media type with no suffix or delimiter: {{< code-toggle file=hugo >}} [mediaTypes."text/netlify"] delimiter = "" {{< /code-toggle >}} The custom output format definitions would look something like this: {{< code-toggle file=hugo >}} [outputFormats.redir] baseName = "_redirects" isPlainText = true mediatype = "text/netlify" [outputFormats.headers] baseName = "_headers" isPlainText = true mediatype = "text/netlify" notAlternative = true {{< /code-toggle >}} [Netlify]: https://www.netlify.com/ gohugoio-hugo-6abdaca/docs/content/en/configuration/menus.md000066400000000000000000000052401507671574500244630ustar00rootroot00000000000000--- title: Configure menus linkTitle: Menus description: Centrally define menu entries for one or more menus. categories: [] keywords: [] --- > [!note] > To understand Hugo's menu system, please refer to the [menus] page. There are three ways to define menu entries: 1. [Automatically] 1. [In front matter] 1. In site configuration This page covers the site configuration method. ## Example To define entries for a "main" menu: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Home' pageRef = '/' weight = 10 [[menus.main]] name = 'Products' pageRef = '/products' weight = 20 [[menus.main]] name = 'Services' pageRef = '/services' weight = 30 {{< /code-toggle >}} This creates a menu structure that you can access with [`Menus`] method on a `Site` object: ```go-html-template {{ range .Site.Menus.main }} ... {{ end }} ``` See [menu templates] for a detailed example. To define entries for a "footer" menu: {{< code-toggle file=hugo >}} [[menus.footer]] name = 'Terms' pageRef = '/terms' weight = 10 [[menus.footer]] name = 'Privacy' pageRef = '/privacy' weight = 20 {{< /code-toggle >}} Access this menu structure in the same way: ```go-html-template {{ range .Site.Menus.footer }} ... {{ end }} ``` ## Properties Menu entries usually include at least three properties: `name`, `weight`, and either `pageRef` or `url`. Use `pageRef` for internal page destinations and `url` for external destinations. These are the available menu entry properties: {{% include "/_common/menu-entry-properties.md" %}} pageRef : (`string`) The [logical path](g) of the target page. For example: page kind|pageRef :--|:-- home|`/` page|`/books/book-1` section|`/books` taxonomy|`/tags` term|`/tags/foo` url : (`string`) The destination URL. Use this for external destinations only. ## Nested menu This nested menu demonstrates some of the available properties: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Products' pageRef = '/products' weight = 10 [[menus.main]] name = 'Hardware' pageRef = '/products/hardware' parent = 'Products' weight = 1 [[menus.main]] name = 'Software' pageRef = '/products/software' parent = 'Products' weight = 2 [[menus.main]] name = 'Services' pageRef = '/services' weight = 20 [[menus.main]] name = 'Hugo' pre = '' url = 'https://gohugo.io/' weight = 30 [menus.main.params] rel = 'external' {{< /code-toggle >}} [`Menus`]: /methods/site/menus/ [Automatically]: /content-management/menus/#define-automatically [In front matter]: /content-management/menus/#define-in-front-matter [menu templates]: /templates/menu/ [menus]: /content-management/menus/ gohugoio-hugo-6abdaca/docs/content/en/configuration/minify.md000066400000000000000000000004411507671574500246250ustar00rootroot00000000000000--- title: Configure minify linkTitle: Minify description: Configure minify. categories: [] keywords: [] --- This is the default configuration: {{< code-toggle config=minify />}} See the [tdewolff/minify] project page for details. [tdewolff/minify]: https://github.com/tdewolff/minify gohugoio-hugo-6abdaca/docs/content/en/configuration/module.md000066400000000000000000000150031507671574500246170ustar00rootroot00000000000000--- title: Configure modules linkTitle: Modules description: Configure modules. categories: [] keywords: [] aliases: [/hugo-modules/configuration/] --- ## Top-level options This is the default configuration: {{< code-toggle file=hugo >}} [module] noProxy = 'none' noVendor = '' private = '*.*' proxy = 'direct' vendorClosest = false workspace = 'off' {{< /code-toggle >}} auth : {{< new-in 0.144.0 />}} : (`string`) Configures `GOAUTH` when running the Go command for module operations. This is a semicolon-separated list of authentication commands for go-import and HTTPS module mirror interactions. This is useful for private repositories. See `go help goauth` for more information. noProxy : (`string`) A comma-separated list of [glob](g) patterns matching paths that should not use the [configured proxy server](#proxy). noVendor : (`string`) A [glob](g) pattern matching module paths to skip when vendoring. private : (`string`) A comma-separated list of [glob](g) patterns matching paths that should be treated as private. proxy : (`string`) The proxy server to use to download remote modules. Default is `direct`, which means `git clone` and similar. replacements : (`string`) Primarily useful for local module development, a comma-separated list of mappings from module paths to directories. Paths may be absolute or relative to the [`themesDir`]. {{< code-toggle file=hugo >}} [module] replacements = 'github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path' {{< /code-toggle >}} vendorClosest : (`bool`) Whether to pick the vendored module closest to the module using it. The default behavior is to pick the first. Note that there can still be only one dependency of a given module path, so once it is in use it cannot be redefined. Default is `false`. workspace : (`string`) The Go workspace file to use, either as an absolute path or a path relative to the current working directory. Enabling this activates Go workspace mode and requires Go 1.18 or later. The default is `off`. You may also use environment variables to set any of the above. For example: ```sh export HUGO_MODULE_PROXY="https://proxy.example.org" export HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.." export HUGO_MODULE_WORKSPACE="/my/hugo.work" ``` {{% include "/_common/gomodules-info.md" %}} ## Hugo version You can specify a required Hugo version for your module in the `module` section. Users will then receive a warning if their Hugo version is incompatible. This is the default configuration: {{< code-toggle config=module.hugoVersion />}} You can omit any of the settings above. extended : (`bool`) Whether the extended edition of Hugo is required, satisfied by installing either the extended or extended/deploy edition. max : (`string`) The maximum Hugo version supported, for example `0.148.0`. min : (`string`) The minimum Hugo version supported, for example `0.102.0`. ## Imports {{< code-toggle file=hugo >}} [[module.imports]] disable = false ignoreConfig = false ignoreImports = false path = "github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v" [[module.imports]] path = "my-shortcodes" {{< /code-toggle >}} disable : (`bool`) Whether to disable the module but keep version information in the `go.*` files. Default is `false`. ignoreConfig : (`bool`) Whether to ignore module configuration files, for example, `hugo.toml`. This will also prevent loading of any transitive module dependencies. Default is `false`. ignoreImports : (`bool`) Whether to ignore module imports. Default is `false`. noMounts : (`bool`) Whether to disable directory mounting for this import. Default is `false`. noVendor : (`bool`) Whether to disable vendoring for this import. This setting is restricted to the main project. Default is `false`. path : (`string`) The module path, either a valid Go module path (e.g., `github.com/gohugoio/myShortcodes`) or the directory name if stored in the [`themesDir`]. {{% include "/_common/gomodules-info.md" %}} ## Mounts Before Hugo v0.56.0, custom component paths could only be configured by setting [`archetypeDir`], [`assetDir`], [`contentDir`], [`dataDir`], [`i18nDir`], [`layoutDi`], or [`staticDir`] in the site configuration. Module mounts offer greater flexibility than these legacy settings, but you cannot use both. [`archetypeDir`]: /configuration/all/ [`assetDir`]: /configuration/all/ [`contentDir`]: /configuration/all/ [`dataDir`]: /configuration/all/ [`i18nDir`]: /configuration/all/ [`layoutDi`]: /configuration/all/ [`staticDir`]: /configuration/all/ > [!note] > If you use module mounts do not use the legacy settings. ### Default mounts > [!note] > Adding a new mount to a target root will cause the existing default mount for that root to be ignored. If you still need the default mount, you must explicitly add it along with the new mount. The are the default mounts: {{< code-toggle config=module.mounts />}} source : (`string`) The source directory of the mount. For the main project, this can be either project-relative or absolute. For other modules it must be project-relative. target : (`string`) Where the mount will reside within Hugo's virtual file system. It must begin with one of Hugo's component directories: `archetypes`, `assets`, `content`, `data`, `i18n`, `layouts`, or `static`. For example, `content/blog`. disableWatch : {{< new-in 0.128.0 />}} : (`bool`) Whether to disable watching in watch mode for this mount. Default is `false`. lang : (`string`) The language code, e.g. "en". Relevant for `content` mounts, and `static` mounts when in multihost mode. includeFiles : (`string` or `[]string`) One or more [glob](g) patterns matching files or directories to include. If `excludeFiles` is not set, the files matching `includeFiles` will be the files mounted. The glob patterns are matched against file names relative to the source root. Use Unix-style forward slashes (`/`), even on Windows. A single forward slash (`/`) matches the mount root, and double asterisks (`**`) act as a recursive wildcard, matching all directories and files beneath a given point (e.g., `/posts/**.jpg`). The search is case-insensitive. excludeFiles : (`string` or `[]string`) One or more [glob](g) patterns matching files to exclude. ### Example {{< code-toggle file=hugo >}} [module] [[module.mounts]] source="content" target="content" excludeFiles="docs/*" [[module.mounts]] source="node_modules" target="assets" [[module.mounts]] source="assets" target="assets" {{< /code-toggle >}} [`themesDir`]: /configuration/all/#themesdir gohugoio-hugo-6abdaca/docs/content/en/configuration/output-formats.md000066400000000000000000000167541507671574500263610ustar00rootroot00000000000000--- title: Configure output formats linkTitle: Output formats description: Configure output formats. categories: [] keywords: [] --- {{% glossary-term "output format" %}} You can output a page in as many formats as you want. Define an infinite number of output formats, provided they each resolve to a unique file system path. This is the default output format configuration in tabular form: {{< datatable "config" "outputFormats" "_key" "mediaType" "weight" "baseName" "isHTML" "isPlainText" "noUgly" "notAlternative" "path" "permalinkable" "protocol" "rel" "root" "ugly" >}} ## Default configuration The following is the default configuration that matches the table above: {{< code-toggle config=outputFormats />}} baseName : (`string`) The base name of the published file. Default is `index`. isHTML : (`bool`) Whether to classify the output format as HTML. Hugo uses this value to determine when to create alias redirects and when to inject the LiveReload script. Default is `false`. isPlainText : (`bool`) Whether to parse templates for this output format with Go's [text/template][] package instead of the [html/template][] package. Default is `false`. mediaType : (`string`) The [media type](g) of the published file. This must match one of the [configured media types][]. notAlternative : (`bool`) Whether to exclude this output format from the values returned by the [`AlternativeOutputFormats`][] method on a `Page` object. Default is `false`. noUgly : (`bool`) Whether to disable ugly URLs for this output format when [`uglyURLs`][] are enabled in your site configuration. Default is `false`. path : (`string`) The first segment of the publication path for this output format. This path segment is relative to the root of your [`publishDir`][]. If omitted, Hugo will use the file's original content path for publishing. permalinkable : (`bool`) Whether to return the rendering output format rather than main output format when invoking the [`Permalink`][] and [`RelPermalink`][] methods on a `Page` object. See [details](#link-to-output-formats). Enabled by default for the `html` and `amp` output formats. Default is `false`. protocol : (`string`) The protocol (scheme) of the URL for this output format. For example, `https://` or `webcal://`. Default is the scheme of the [`baseURL`][] parameter in your site configuration, typically `https://`. rel : (`string`) If provided, you can assign this value to `rel` attributes in `link` elements when iterating over output formats in your templates. Default is `alternate`. root : (`bool`) Whether to publish files to the root of the publish directory. Default is `false`. ugly : (`bool`) Whether to enable uglyURLs for this output format when `uglyURLs` is `false` in your site configuration. Default is `false`. weight : (`int`) When set to a non-zero value, Hugo uses the `weight` as the first criteria when sorting output formats, falling back to the name of the output format. Lighter items float to the top, while heavier items sink to the bottom. Hugo renders output formats sequentially based on the sort order. Default is `0`, except for the `html` output format, which has a default weight of `10`. ## Modify an output format You can modify any of the default output formats. For example, to prioritize `json` rendering over `html` rendering, when both are generated, adjust the [`weight`](#weight): {{< code-toggle file=hugo >}} [outputFormats.json] weight = 1 [outputFormats.html] weight = 2 {{< /code-toggle >}} The example above shows that when you modify a default content format, you only need to define the properties that differ from their default values. ## Create an output format You can create new output formats as needed. For example, you may wish to create an output format to support Atom feeds. Step 1 : Output formats require a specified media type. Because Atom feeds use `application/atom+xml`, which is not one of the [default media types][], you must create it first. {{< code-toggle file=hugo >}} [mediaTypes.'application/atom+xml'] suffixes = ['atom'] {{< /code-toggle >}} See [configure media types][] for more information. Step 2 : Create a new output format: {{< code-toggle file=hugo >}} [outputFormats.atom] mediaType = 'application/atom+xml' noUgly = true {{< /code-toggle >}} Note that we use the default settings for all other output format properties. Step 3 : Specify the page [kinds](g) for which to render this output format: {{< code-toggle file=hugo >}} [outputs] home = ['html', 'rss', 'atom'] section = ['html', 'rss', 'atom'] taxonomy = ['html', 'rss', 'atom'] term = ['html', 'rss', 'atom'] {{< /code-toggle >}} See [configure outputs][] for more information. Step 4 : Create a template to render the output format. Since Atom feeds are lists, you need to create a list template. Consult the [template lookup order] to find the correct template path: ```text layouts/list.atom.atom ``` We leave writing the template code as an exercise for you. Aim for a result similar to the [embedded RSS template][]. ## List output formats To access output formats, each `Page` object provides two methods: [`OutputFormats`][] (for all formats, including the current one) and [`AlternativeOutputFormats`][]. Use `AlternativeOutputFormats` to create a link `rel` list within your site's `head` element, as shown below: ```go-html-template {{ range .AlternativeOutputFormats }} {{ end }} ``` ## Link to output formats By default, a `Page` object's [`Permalink`][] and [`RelPermalink`][] methods return the URL of the [primary output format](g), typically `html`. This behavior remains consistent regardless of the template used. For example, in `page.json.json`, you'll see: ```go-html-template {{ .RelPermalink }} → /that-page/ {{ with .OutputFormats.Get "json" }} {{ .RelPermalink }} → /that-page/index.json {{ end }} ``` To make these methods return the URL of the _current_ template's output format, you must set the [`permalinkable`][] setting to `true` for that format. With `permalinkable` set to true for `json` in the same `page.json.json` template: ```go-html-template {{ .RelPermalink }} → /that-page/index.json {{ with .OutputFormats.Get "html" }} {{ .RelPermalink }} → /that-page/ {{ end }} ``` ## Template lookup order Each output format requires a template conforming to the [template lookup order][]. For the highest specificity in the template lookup order, include the page kind, output format, and suffix in the file name: ```text [page kind].[output format].[suffix] ``` For example, for section pages: Output format|Template path :--|:-- `html`|`layouts/section.html.html` `json`|`layouts/section.json.json` `rss`|`layouts/section.rss.xml` [`AlternativeOutputFormats`]: /methods/page/alternativeoutputformats/ [`baseURL`]: /configuration/all/#baseurl [`OutputFormats`]: /methods/page/outputformats/ [`Permalink`]: /methods/page/permalink/ [`permalinkable`]: #permalinkable [`publishDir`]: /configuration/all/#publishdir [`RelPermalink`]: /methods/page/relpermalink/ [`uglyURLs`]: /configuration/ugly-urls/ [configure media types]: /configuration/media-types/ [configure outputs]: /configuration/outputs/ [configured media types]: /configuration/media-types/ [default media types]: /configuration/media-types/ [embedded RSS template]: <{{% eturl rss %}}> [html/template]: https://pkg.go.dev/html/template [template lookup order]: /templates/lookup-order/ [text/template]: https://pkg.go.dev/text/template gohugoio-hugo-6abdaca/docs/content/en/configuration/outputs.md000066400000000000000000000040101507671574500250510ustar00rootroot00000000000000--- title: Configure outputs linkTitle: Outputs description: Configure which output formats to render for each page kind. categories: [] keywords: [] --- {{% glossary-term "output format" %}} Learn more about creating and configuring output formats in the [configure output formats] section. ## Outputs per page kind The following default configuration determines the output formats generated for each page kind: {{< code-toggle config=outputs />}} To render the built-in `json` output format for the `home` page kind, assuming you've already created the necessary template, add the following to your configuration: {{< code-toggle file=hugo >}} [outputs] home = ['html','rss','json'] {{< /code-toggle >}} Notice in this example that we only specified the `home` page kind. You don't need to include entries for other page kinds unless you intend to modify their default output formats. > [!note] > The order of the output formats in the arrays above is important. The first element will be the _primary output format_ for that page kind, and in most cases that should be `html` as shown in the default configuration. > > The primary output format for a given page kind determines the value returned by the [`Permalink`] and [`RelPermalink`] methods on a `Page` object. > > See the [link to output formats] section for details. ## Outputs per page Add output formats to a page's rendering using the `outputs` field in its front matter. For example, to include `json` in the output formats rendered for a specific page: {{< code-toggle file=content/example.md fm=true >}} title = 'Example' outputs = ['json'] {{< /code-toggle >}} In its default configuration, Hugo will render both the `html` and `json` output formats for this page. The `outputs` field appends to, rather than replaces, the site's configured outputs. [`Permalink`]: /methods/page/permalink/ [`RelPermalink`]: /methods/page/relpermalink/ [configure output formats]: /configuration/output-formats/ [link to output formats]: configuration/output-formats/#link-to-output-formats gohugoio-hugo-6abdaca/docs/content/en/configuration/page.md000066400000000000000000000016321507671574500242510ustar00rootroot00000000000000--- title: Configure page linkTitle: Page description: Configure page behavior. categories: [] keywords: [] --- {{< new-in 0.133.0 />}} {{% glossary-term "default sort order" %}} Hugo uses the default sort order to determine the _next_ and _previous_ page relative to the current page when calling these methods on a `Page` object: - [`Next`](/methods/page/next/) and [`Prev`](/methods/page/prev/) - [`NextInSection`](/methods/page/nextinsection/) and [`PrevInSection`](/methods/page/previnsection/) This is based on this default site configuration: {{< code-toggle config=page />}} To reverse the meaning of _next_ and _previous_: {{< code-toggle file=hugo >}} [page] nextPrevInSectionSortOrder = 'asc' nextPrevSortOrder = 'asc' {{< /code-toggle >}} > [!note] > These settings do not apply to the [`Next`] or [`Prev`] methods on a `Pages` object. [`Next`]: /methods/pages/next [`Prev`]: /methods/pages/next gohugoio-hugo-6abdaca/docs/content/en/configuration/pagination.md000066400000000000000000000020001507671574500254540ustar00rootroot00000000000000--- title: Configure pagination linkTitle: Pagination description: Configure pagination. categories: [] keywords: [] --- This is the default configuration: {{< code-toggle config=pagination />}} disableAliases : (`bool`) Whether to disable alias generation for the first pager. Default is `false`. pagerSize : (`int`) The number of pages per pager. Default is `10`. path : (`string`) The segment of each pager URL indicating that the target page is a pager. Default is `page`. With multilingual sites you can define the pagination behavior for each language: {{< code-toggle file=hugo >}} [languages.en] contentDir = 'content/en' languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' weight = 1 [languages.en.pagination] disableAliases = true pagerSize = 10 path = 'page' [languages.de] contentDir = 'content/de' languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' weight = 2 [languages.de.pagination] disableAliases = true pagerSize = 20 path = 'blatt' {{< /code-toggle >}} gohugoio-hugo-6abdaca/docs/content/en/configuration/params.md000066400000000000000000000045011507671574500246160ustar00rootroot00000000000000--- title: Configure params linkTitle: Params description: Create custom site parameters. categories: [] keywords: [] --- Use the `params` key for custom parameters: {{< code-toggle file=hugo >}} baseURL = 'https://example.org/' title = 'Project Documentation' languageCode = 'en-US' [params] subtitle = 'Reference, Tutorials, and Explanations' [params.contact] email = 'info@example.org' phone = '+1 206-555-1212' {{< /code-toggle >}} Access the custom parameters from your templates using the [`Params`] method on a `Site` object: [`Params`]: /methods/site/params/ ```go-html-template {{ .Site.Params.subtitle }} → Reference, Tutorials, and Explanations {{ .Site.Params.contact.email }} → info@example.org ``` Key names should use camelCase or snake_case. While TOML, YAML, and JSON allow kebab-case keys, they are not valid [identifiers](g) and cannot be used when [chaining](g) identifiers. For example, you can do either of these: ```go-html-template {{ .Site.params.camelCase.foo }} {{ .Site.params.snake_case.foo }} ``` But you cannot do this: ```go-html-template {{ .Site.params.kebab-case.foo }} ``` ## Multilingual sites For multilingual sites, create a `params` key under each language: {{< code-toggle file=hugo >}} baseURL = 'https://example.org/' defaultContentLanguage = 'en' [languages.de] languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.de.params] subtitle = 'Referenz, Tutorials und Erklärungen' [languages.de.params.contact] email = 'info@de.example.org' phone = '+49 30 1234567' [languages.en] languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' title = 'Project Documentation' weight = 2 [languages.en.params] subtitle = 'Reference, Tutorials, and Explanations' [languages.en.params.contact] email = 'info@example.org' phone = '+1 206-555-1212' {{< /code-toggle >}} ## Namespacing To prevent naming conflicts, module and theme developers should namespace any custom parameters specific to their module or theme. {{< code-toggle file=hugo >}} [params.modules.myModule.colors] background = '#efefef' font = '#222222' {{< /code-toggle >}} To access the module/theme settings: ```go-html-template {{ $cfg := .Site.Params.module.mymodule }} {{ $cfg.colors.background }} → #efefef {{ $cfg.colors.font }} → #222222 ``` gohugoio-hugo-6abdaca/docs/content/en/configuration/permalinks.md000066400000000000000000000073321507671574500255050ustar00rootroot00000000000000--- title: Configure permalinks linkTitle: Permalinks description: Configure permalinks. categories: [] keywords: [] --- This is the default configuration: {{< code-toggle config=permalinks />}} Define a URL pattern for each top-level section. Each URL pattern can target a given language and/or page kind. > [!note] > The [`url`] front matter field overrides any matching permalink pattern. ## Monolingual example With this content structure: ```text content/ ├── posts/ │ ├── bash-in-slow-motion.md │ └── tls-in-a-nutshell.md ├── tutorials/ │ ├── git-for-beginners.md │ └── javascript-bundling-with-hugo.md └── _index.md ``` Render tutorials under "training", and render the posts under "articles" with a date-base hierarchy: {{< code-toggle file=hugo >}} [permalinks.page] posts = '/articles/:year/:month/:slug/' tutorials = '/training/:slug/' [permalinks.section] posts = '/articles/' tutorials = '/training/' {{< /code-toggle >}} The structure of the published site will be: ```text public/ ├── articles/ │ ├── 2023/ │ │ ├── 04/ │ │ │ └── bash-in-slow-motion/ │ │ │ └── index.html │ │ └── 06/ │ │ └── tls-in-a-nutshell/ │ │ └── index.html │ └── index.html ├── training/ │ ├── git-for-beginners/ │ │ └── index.html │ ├── javascript-bundling-with-hugo/ │ │ └── index.html │ └── index.html └── index.html ``` To create a date-based hierarchy for regular pages in the content root: {{< code-toggle file=hugo >}} [permalinks.page] "/" = "/:year/:month/:slug/" {{< /code-toggle >}} Use the same approach with taxonomy terms. For example, to omit the taxonomy segment of the URL: {{< code-toggle file=hugo >}} [permalinks.term] 'tags' = '/:slug/' {{< /code-toggle >}} ## Multilingual example Use the `permalinks` configuration as a component of your localization strategy. With this content structure: ```text content/ ├── en/ │ ├── books/ │ │ ├── les-miserables.md │ │ └── the-hunchback-of-notre-dame.md │ └── _index.md └── es/ ├── books/ │ ├── les-miserables.md │ └── the-hunchback-of-notre-dame.md └── _index.md ``` And this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' defaultContentLanguageInSubdir = true [languages.en] contentDir = 'content/en' languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' weight = 1 [languages.en.permalinks.page] books = "/books/:slug/" [languages.en.permalinks.section] books = "/books/" [languages.es] contentDir = 'content/es' languageCode = 'es-ES' languageDirection = 'ltr' languageName = 'Español' weight = 2 [languages.es.permalinks.page] books = "/libros/:slug/" [languages.es.permalinks.section] books = "/libros/" {{< /code-toggle >}} The structure of the published site will be: ```text public/ ├── en/ │ ├── books/ │ │ ├── les-miserables/ │ │ │ └── index.html │ │ ├── the-hunchback-of-notre-dame/ │ │ │ └── index.html │ │ └── index.html │ └── index.html ├── es/ │ ├── libros/ │ │ ├── les-miserables/ │ │ │ └── index.html │ │ ├── the-hunchback-of-notre-dame/ │ │ │ └── index.html │ │ └── index.html │ └── index.html └── index.html ``` ## Tokens Use these tokens when defining a URL pattern. {{% include "/_common/permalink-tokens.md" %}} [`url`]: /content-management/front-matter/#url gohugoio-hugo-6abdaca/docs/content/en/configuration/privacy.md000066400000000000000000000035441507671574500250160ustar00rootroot00000000000000--- title: Configure privacy linkTitle: Privacy description: Configure your site to help comply with regional privacy regulations. categories: [] keywords: [] aliases: [/about/privacy/] --- ## Responsibility Site authors are responsible for ensuring compliance with regional privacy regulations, including but not limited to: - GDPR (General Data Protection Regulation): Applies to individuals within the European Union and the European Economic Area. - CCPA (California Consumer Privacy Act): Applies to California residents. - CPRA (California Privacy Rights Act): Expands upon the CCPA with stronger consumer privacy protections. - Virginia Consumer Data Protection Act (CDPA): Applies to businesses that collect, process, or sell the personal data of Virginia residents. Hugo's privacy settings can assist in compliance efforts. ## Embedded templates Hugo provides [embedded templates](g) to simplify site and content creation. Some of these templates interact with external services. For example, the `youtube` shortcode connects with YouTube's servers to embed videos on your site. Some of these templates include settings to enhance privacy. ## Configuration > [!note] > These settings affect the behavior of some of Hugo's embedded templates. These settings may or may not affect the behavior of templates provided by third parties in their modules or themes. These are the default privacy settings for Hugo's embedded templates: {{< code-toggle config=privacy />}} See each template's documentation for a description of its privacy settings: - [Disqus partial](/templates/embedded/#privacy-disqus) - [Google Analytics partial](/templates/embedded/#privacy-google-analytics) - [Instagram shortcode](/shortcodes/instagram/#privacy) - [Vimeo shortcode](/shortcodes/vimeo/#privacy) - [X shortcode](/shortcodes/x/#privacy) - [YouTube shortcode](/shortcodes/youtube/#privacy) gohugoio-hugo-6abdaca/docs/content/en/configuration/related-content.md000066400000000000000000000103451507671574500264260ustar00rootroot00000000000000--- title: Configure related content linkTitle: Related content description: Configure related content. categories: [] keywords: [] --- > [!note] > To understand Hugo's related content identification, please refer to the [related content] page. Hugo provides a sensible default configuration for identifying related content, but you can customize it in your site configuration, either globally or per language. ## Default configuration This is the default configuration: {{< code-toggle config=related />}} > [!note] > Adding a `related` section to your site configuration requires you to provide a full configuration. You cannot override individual default values without specifying all related settings. ## Top-level options threshold : (`int`) A value between 0-100, inclusive. A lower value will return more, but maybe not so relevant, matches. includeNewer : (`bool`) Whether to include pages newer than the current page in the related content listing. This will mean that the output for older posts may change as new related content gets added. Default is `false`. toLower : (`bool`) Whether to transform keywords in both the indexes and the queries to lower case. This may give more accurate results at a slight performance penalty. Default is `false`. ## Per-index options name : (`string`) The index name. This value maps directly to a page parameter. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects. type : (`string`) One of `basic` or `fragments`. Default is `basic`. applyFilter : (`string`) Apply a `type` specific filter to the result of a search. This is currently only used for the `fragments` type. weight : (`int`) An integer weight that indicates how important this parameter is relative to the other parameters. It can be `0`, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best. Default is `0`. cardinalityThreshold : (`int`) If between 1 and 100, this is a percentage. All keywords that are used in more than this percentage of documents are removed. For example, setting this to `60` will remove all keywords that are used in more than 60% of the documents in the index. If `0`, no keyword is removed from the index. Default is `0`. pattern : (`string`) This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default. toLower : (`bool`) Whether to transform keywords in both the indexes and the queries to lower case. This may give more accurate results at a slight performance penalty. Default is `false`. ## Example Imagine we're building a book review site. Our main content will be book reviews, and we'll use genres and authors as taxonomies. When someone views a book review, we want to show a short list of related reviews based on shared authors and genres. Create the content: ```text content/ └── book-reviews/ ├── book-review-1.md ├── book-review-2.md ├── book-review-3.md ├── book-review-4.md └── book-review-5.md ``` Configure the taxonomies: {{< code-toggle file=hugo >}} [taxonomies] author = 'authors' genre = 'genres' {{< /code-toggle >}} Configure the related content identification: {{< code-toggle file=hugo >}} [related] includeNewer = true threshold = 80 toLower = true [[related.indices]] name = 'authors' weight = 2 [[related.indices]] name = 'genres' weight = 1 {{< /code-toggle >}} We've configured the `authors` index with a weight of `2` and the `genres` index with a weight of `1`. This means Hugo prioritizes shared `authors` as twice as significant as shared `genres`. Then render a list of 5 related reviews with a _partial_ template like this: ```go-html-template {file="layouts/_partials/related.html" copy=true} {{ with site.RegularPages.Related . | first 5 }}

      Related content:

      {{ end }} ``` [related content]: /content-management/related-content/ gohugoio-hugo-6abdaca/docs/content/en/configuration/security.md000066400000000000000000000042301507671574500252010ustar00rootroot00000000000000--- title: Configure security linkTitle: Security description: Configure security. categories: [] keywords: [] --- Hugo's built-in security policy, which restricts access to `os/exec`, remote communication, and similar operations, is configured via allowlists. By default, access is restricted. If a build attempts to use a feature not included in the allowlist, it will fail, providing a detailed message. This is the default security configuration: {{< code-toggle config=security />}} enableInlineShortcodes : (`bool`) Whether to enable [inline shortcodes]. Default is `false`. exec.allow : (`[]string`) A slice of [regular expressions](g) matching the names of external executables that Hugo is allowed to run. exec.osEnv : (`[]string`) A slice of [regular expressions](g) matching the names of operating system environment variables that Hugo is allowed to access. funcs.getenv : (`[]string`) A slice of [regular expressions](g) matching the names of operating system environment variables that Hugo is allowed to access with the [`os.Getenv`] function. http.methods : (`[]string`) A slice of [regular expressions](g) matching the HTTP methods that the [`resources.GetRemote`] function is allowed to use. http.mediaTypes : (`[]string`) Applicable to the `resources.GetRemote` function, a slice of [regular expressions](g) matching the `Content-Type` in HTTP responses that Hugo trusts, bypassing file content analysis for media type detection. http.urls : (`[]string`) A slice of [regular expressions](g) matching the URLs that the `resources.GetRemote` function is allowed to access. > [!note] > Setting an allowlist to the string `none` will completely disable the associated feature. You can also override the site configuration with environment variables. For example, to block `resources.GetRemote` from accessing any URL: ```txt export HUGO_SECURITY_HTTP_URLS=none ``` Learn more about [using environment variables] to configure your site. [`os.Getenv`]: /functions/os/getenv [`resources.GetRemote`]: /functions/resources/getremote [inline shortcodes]: /content-management/shortcodes/#inline [using environment variables]: /configuration/introduction/#environment-variables gohugoio-hugo-6abdaca/docs/content/en/configuration/segments.md000066400000000000000000000046601507671574500251660ustar00rootroot00000000000000--- title: Configure segments linkTitle: Segments description: Configure your site for segmented rendering. categories: [] keywords: [] --- {{< new-in 0.124.0 />}} > [!note] > The `segments` configuration applies only to segmented rendering. While it controls when content is rendered, it doesn't restrict access to Hugo's complete object graph (sites and pages), which remains fully available. Segmented rendering offers several advantages: - Faster builds: Process large sites more efficiently. - Rapid development: Render only a subset of your site for quicker iteration. - Scheduled rebuilds: Rebuild specific sections at different frequencies (e.g., home page and news hourly, full site weekly). - Targeted output: Generate specific output formats (like JSON for search indexes). ## Segment definition Each segment is defined by include and exclude filters: - Filters: Each segment has zero or more exclude filters and zero or more include filters. - Matchers: Each filter contains one or more field [glob](g) matchers. - Logic: Matchers within a filter use AND logic. Filters within a section (include or exclude) use OR logic. ## Filter fields Available fields for filtering: kind : (`string`) A [glob](g) pattern matching the [page kind](g). For example: `{taxonomy,term}`. lang : (`string`) A [glob](g) pattern matching the [page language]. For example: `{en,de}`. output : (`string`) A [glob](g) pattern matching the [output format](g) of the page. For example: `{html,json}`. path : (`string`) A [glob](g) pattern matching the page's [logical path](g). For example: `{/books,/books/**}`. ## Example Place broad filters, such as those for language or output format, in the excludes section. For example: {{< code-toggle file=hugo >}} [segments.segment1] [[segments.segment1.excludes]] lang = "n*" [[segments.segment1.excludes]] lang = "en" output = "rss" [[segments.segment1.includes]] kind = "{home,term,taxonomy}" [[segments.segment1.includes]] path = "{/docs,/docs/**}" {{< /code-toggle >}} ## Rendering segments Render specific segments using the [`renderSegments`] configuration or the `--renderSegments` flag: ```bash hugo --renderSegments segment1 ``` You can configure multiple segments and use a comma-separated list with `--renderSegments` to render them all. ```bash hugo --renderSegments segment1,segment2 ``` [`renderSegments`]: /configuration/all/#rendersegments [page language]: /methods/page/language/ gohugoio-hugo-6abdaca/docs/content/en/configuration/server.md000066400000000000000000000074221507671574500246460ustar00rootroot00000000000000--- title: Configure server linkTitle: Server description: Configure the development server. categories: [] keywords: [] --- These settings are exclusive to Hugo's development server, so a dedicated [configuration directory] for development, where the server is configured accordingly, is the recommended approach. [configuration directory]: /configuration/introduction/#configuration-directory ```text project/ └── config/ ├── _default/ │ └── hugo.toml └── development/ └── server.toml ``` ## Default settings The development server defaults to redirecting to `/404.html` for any requests to URLs that don't exist. See the [404 errors](#404-errors) section below for details. {{< code-toggle config=server />}} force : (`bool`) Whether to force a redirect even if there is existing content in the path. from : (`string`) A [glob](g) pattern matching the requested URL. Either `from` or `fromRE` must be set. If both `from` and `fromRe` are specified, the URL must match both patterns. fromHeaders : {{< new-in 0.144.0 />}} : (`map[string][string]`) Headers to match for the redirect. This maps the HTTP header name to a [glob](g) pattern with values to match. If the map is empty, the redirect will always be triggered. fromRe : {{< new-in 0.144.0 />}} : (`string`) A [regular expression](g) used to match the requested URL. Either `from` or `fromRE` must be set. If both `from` and `fromRe` are specified, the URL must match both patterns. Capture groups from the regular expression are accessible in the `to` field as `$1`, `$2`, and so on. status : (`string`) The HTTP status code to use for the redirect. A status code of 200 will trigger a URL rewrite. to : (`string`) The URL to forward the request to. ## Headers Include headers in every server response to facilitate testing, particularly for features like [Content Security Policies]. [Content Security Policies]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP {{< code-toggle file=config/development/server >}} [[headers]] for = "/**" [headers.values] X-Frame-Options = "DENY" X-XSS-Protection = "1; mode=block" X-Content-Type-Options = "nosniff" Referrer-Policy = "strict-origin-when-cross-origin" Content-Security-Policy = "script-src localhost:1313" {{< /code-toggle >}} ## Redirects You can define simple redirect rules. {{< code-toggle file=config/development/server >}} [[redirects]] from = "/myspa/**" to = "/myspa/" status = 200 force = false {{< /code-toggle >}} The `200` status code in this example triggers a URL rewrite, which is typically the desired behavior for [single-page applications]. [single-page applications]: https://en.wikipedia.org/wiki/Single-page_application ## 404 errors The development server defaults to redirecting to /404.html for any requests to URLs that don't exist. {{< code-toggle config=server />}} If you've already defined other redirects, you must explicitly add the 404 redirect. {{< code-toggle file=config/development/server >}} [[redirects]] force = false from = "/**" to = "/404.html" status = 404 {{< /code-toggle >}} For multilingual sites, ensure the default language 404 redirect is defined last: {{< code-toggle file=config/development/server >}} defaultContentLanguage = 'en' defaultContentLanguageInSubdir = false [[redirects]] from = '/fr/**' to = '/fr/404.html' status = 404 [[redirects]] # Default language must be last. from = '/**' to = '/404.html' status = 404 {{< /code-toggle >}} When the default language is served from a subdirectory: {{< code-toggle file=config/development/server >}} defaultContentLanguage = 'en' defaultContentLanguageInSubdir = true [[redirects]] from = '/fr/**' to = '/fr/404.html' status = 404 [[redirects]] # Default language must be last. from = '/**' to = '/en/404.html' status = 404 {{< /code-toggle >}} gohugoio-hugo-6abdaca/docs/content/en/configuration/services.md000066400000000000000000000041071507671574500251600ustar00rootroot00000000000000--- title: Configure services linkTitle: Services description: Configure embedded templates. categories: [] keywords: [] --- Hugo provides [embedded templates](g) to simplify site and content creation. Some of these templates are configurable. For example, the embedded Google Analytics template requires a Google tag ID. This is the default configuration: {{< code-toggle config=services />}} disqus.shortname : (`string`) The `shortname` used with the Disqus commenting system. See [details](/templates/embedded/#disqus). To access this value from a template: ```go-html-template {{ .Site.Config.Services.Disqus.Shortname }} ``` googleAnalytics.id : (`string`) The Google tag ID for Google Analytics 4 properties. See [details](/templates/embedded/#google-analytics). To access this value from a template: ```go-html-template {{ .Site.Config.Services.GoogleAnalytics.ID }} ``` instagram.accessToken : (`string`) Do not use. Deprecated in [v0.123.0]. The embedded `instagram` shortcode no longer uses this setting. instagram.disableInlineCSS : (`bool`) Do not use. Deprecated in [v0.123.0]. The embedded `instagram` shortcode no longer uses this setting. rss.limit : (`int`) The maximum number of items to include in an RSS feed. Set to `-1` for no limit. Default is `-1`. See [details](/templates/rss/). To access this value from a template: ```go-html-template {{ .Site.Config.Services.RSS.Limit }} ``` twitter.disableInlineCSS : (`bool`) Do not use. Deprecated in [v0.141.0]. Use the `x` shortcode instead. x.disableInlineCSS : (`bool`) Whether to disable the inline CSS rendered by the embedded `x` shortode. See [details](/shortcodes/x/#privacy). Default is `false`. To access this value from a template: ```go-html-template {{ .Site.Config.Services.X.DisableInlineCSS }} [v0.141.0]: https://github.com/gohugoio/hugo/releases/tag/v0.141.0 [v0.123.0]: https://github.com/gohugoio/hugo/releases/tag/v0.123.0 gohugoio-hugo-6abdaca/docs/content/en/configuration/sitemap.md000066400000000000000000000020611507671574500247740ustar00rootroot00000000000000--- title: Configure sitemap linkTitle: Sitemap description: Configure the sitemap. categories: [] keywords: [] --- These are the default sitemap configuration values. They apply to all pages unless overridden in front matter. {{< code-toggle config=sitemap />}} changefreq : (`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#changefreqdef). disable : {{< new-in 0.125.0 />}} : (`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page. filename : (`string`) The name of the generated file. Default is `sitemap.xml`. priority : (`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0. With the default value of `-1` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#prioritydef). gohugoio-hugo-6abdaca/docs/content/en/configuration/taxonomies.md000066400000000000000000000034601507671574500255240ustar00rootroot00000000000000--- title: Configure taxonomies linkTitle: Taxonomies description: Configure taxonomies. categories: [] keywords: [] --- The default configuration defines two [taxonomies](g), `categories` and `tags`. {{< code-toggle config=taxonomies />}} When creating a taxonomy: - Use the singular form for the key (e.g., `category`). - Use the plural form for the value (e.g., `categories`). Then use the value as the key in front matter: {{< code-toggle file=content/example.md fm=true >}} title: Example categories: - vegetarian - gluten-free tags: - appetizer - main course {{< /code-toggle >}} If you do not expect to assign more than one [term](g) from a given taxonomy to a content page, you may use the singular form for both key and value: {{< code-toggle file=hugo >}} taxonomies: author: author {{< /code-toggle >}} Then in front matter: {{< code-toggle file=content/example.md fm=true >}} title: Example author: - Robert Smith {{< /code-toggle >}} The example above illustrates that even with a single term, the value is still provided as an array. You must explicitly define the default taxonomies to maintain them when adding a new one: {{< code-toggle file=hugo >}} taxonomies: author: author category: categories tag: tags {{< /code-toggle >}} To disable the taxonomy system, use the [`disableKinds`] setting in the root of your site configuration to disable the `taxonomy` and `term` page [kinds](g). {{< code-toggle file=hugo >}} disableKinds = ['taxonomy','term'] {{< /code-toggle >}} [`disableKinds`]: /configuration/all/#disablekinds See the [taxonomies] section for more information. [taxonomies]: /content-management/taxonomies/ gohugoio-hugo-6abdaca/docs/content/en/configuration/ugly-urls.md000066400000000000000000000012561507671574500253020ustar00rootroot00000000000000--- title: Configure ugly URLs linkTitle: Ugly URLs description: Configure ugly URLs. categories: [] keywords: [] --- {{% glossary-term "ugly url" %}} For example: ```text https://example.org/section/article.html ``` In its default configuration, Hugo generates [pretty URLs](g). For example: ```text https://example.org/section/article/ ``` This is the default configuration: {{< code-toggle config=uglyURLs />}} To generate ugly URLs for the entire site: {{< code-toggle file=hugo >}} uglyURLs = true {{< /code-toggle >}} To generate ugly URLs for specific sections of your site: {{< code-toggle file=hugo >}} [uglyURLs] books = true films = false {{< /code-toggle >}} gohugoio-hugo-6abdaca/docs/content/en/content-management/000077500000000000000000000000001507671574500237265ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/content-management/_index.md000066400000000000000000000004071507671574500255170ustar00rootroot00000000000000--- title: Content management description: Hugo makes managing large static sites easy with support for archetypes, content types, menus, cross references, summaries, and more. categories: [] keywords: [] weight: 10 aliases: [/content/,/content/organization] --- gohugoio-hugo-6abdaca/docs/content/en/content-management/archetypes.md000066400000000000000000000131571507671574500264260ustar00rootroot00000000000000--- title: Archetypes description: An archetype is a template for new content. categories: [] keywords: [] aliases: [/content/archetypes/] --- ## Overview A content file consists of [front matter](g) and markup. The markup is typically Markdown, but Hugo also supports other [content formats](g). Front matter can be TOML, YAML, or JSON. The `hugo new content` command creates a new file in the `content` directory, using an archetype as a template. This is the default archetype: {{< code-toggle file=archetypes/default.md fm=true >}} title = '{{ replace .File.ContentBaseName `-` ` ` | title }}' date = '{{ .Date }}' draft = true {{< /code-toggle >}} When you create new content, Hugo evaluates the [template actions](g) within the archetype. For example: ```sh hugo new content posts/my-first-post.md ``` With the default archetype shown above, Hugo creates this content file: {{< code-toggle file=content/posts/my-first-post.md fm=true >}} title = 'My First Post' date = '2023-08-24T11:49:46-07:00' draft = true {{< /code-toggle >}} You can create an archetype for one or more [content types](g). For example, use one archetype for posts, and use the default archetype for everything else: ```text archetypes/ ├── default.md └── posts.md ``` ## Lookup order Hugo looks for archetypes in the `archetypes` directory in the root of your project, falling back to the `archetypes` directory in themes or installed modules. An archetype for a specific content type takes precedence over the default archetype. For example, with this command: ```sh hugo new content posts/my-first-post.md ``` The archetype lookup order is: 1. `archetypes/posts.md` 1. `archetypes/default.md` 1. `themes/my-theme/archetypes/posts.md` 1. `themes/my-theme/archetypes/default.md` If none of these exists, Hugo uses a built-in default archetype. ## Functions and context You can use any template [function](g) within an archetype. As shown above, the default archetype uses the [`replace`](/functions/strings/replace) function to replace hyphens with spaces when populating the title in front matter. Archetypes receive the following [context](g): Date : (`string`) The current date and time, formatted in compliance with RFC3339. File : (`hugolib.fileInfo`) Returns file information for the current page. See [details](/methods/page/file). Type : (`string`) The [content type](g) inferred from the top-level directory name, or as specified by the `--kind` flag passed to the `hugo new content` command. Site : (`page.Site`) The current site object. See [details](/methods/site/). ## Date format To insert date and time with a different format, use the [`time.Now`] function: [`time.Now`]: /functions/time/now/ {{< code-toggle file=archetypes/default.md fm=true >}} title = '{{ replace .File.ContentBaseName `-` ` ` | title }}' date = '{{ time.Now.Format "2006-01-02" }}' draft = true {{< /code-toggle >}} ## Include content Although typically used as a front matter template, you can also use an archetype to populate content. For example, in a documentation site you might have a section (content type) for functions. Every page within this section should follow the same format: a brief description, the function signature, examples, and notes. We can pre-populate the page to remind content authors of the standard format. ````text {file="archetypes/functions.md"} --- date: '{{ .Date }}' draft: true title: '{{ replace .File.ContentBaseName `-` ` ` | title }}' --- A brief description of what the function does, using simple present tense in the third person singular form. For example: `someFunction` returns the string `s` repeated `n` times. ## Signature ```text func someFunction(s string, n int) string ``` ## Examples One or more practical examples, each within a fenced code block. ## Notes Additional information to clarify as needed. ```` Although you can include [template actions](g) within the content body, remember that Hugo evaluates these once---at the time of content creation. In most cases, place template actions in a [template](g) where Hugo evaluates the actions every time you [build](g) the site. ## Leaf bundles You can also create archetypes for [leaf bundles](g). For example, in a photography site you might have a section (content type) for galleries. Each gallery is leaf bundle with content and images. Create an archetype for galleries: ```text archetypes/ ├── galleries/ │ ├── images/ │ │ └── .gitkeep │ └── index.md <-- same format as default.md └── default.md ``` Subdirectories within an archetype must contain at least one file. Without a file, Hugo will not create the subdirectory when you create new content. The name and size of the file are irrelevant. The example above includes a `.gitkeep` file, an empty file commonly used to preserve otherwise empty directories in a Git repository. To create a new gallery: ```sh hugo new galleries/bryce-canyon ``` This produces: ```text content/ ├── galleries/ │ └── bryce-canyon/ │ ├── images/ │ │ └── .gitkeep │ └── index.md └── _index.md ``` ## Specify archetype Use the `--kind` command line flag to specify an archetype when creating content. For example, let's say your site has two sections: articles and tutorials. Create an archetype for each content type: ```text archetypes/ ├── articles.md ├── default.md └── tutorials.md ``` To create an article using the articles archetype: ```sh hugo new content articles/something.md ``` To create an article using the tutorials archetype: ```sh hugo new content --kind tutorials articles/something.md ``` gohugoio-hugo-6abdaca/docs/content/en/content-management/build-options.md000066400000000000000000000206421507671574500270440ustar00rootroot00000000000000--- title: Build options description: Build options help define how Hugo must treat a given page when building the site. categories: [] keywords: [] aliases: [/content/build-options/] --- Build options are stored in a reserved front matter object named `build`[^1] with these defaults: [^1]: The `_build` alias for `build` is deprecated and will be removed in a future release. {{< code-toggle file=content/example/index.md fm=true >}} [build] list = 'always' publishResources = true render = 'always' {{< /code-toggle >}} list : When to include the page within page collections. Specify one of: - `always`: Include the page in _all_ page collections. For example, `site.RegularPages`, `.Pages`, etc. This is the default value. - `local`: Include the page in _local_ page collections. For example, `.RegularPages`, `.Pages`, etc. Use this option to create fully navigable but headless content sections. - `never`: Do not include the page in _any_ page collection. publishResources : Applicable to [page bundles], determines whether to publish the associated [page resources]. Specify one of: - `true`: Always publish resources. This is the default value. - `false`: Only publish a resource when invoking its [`Permalink`], [`RelPermalink`], or [`Publish`] method within a template. render : When to render the page. Specify one of: - `always`: Always render the page to disk. This is the default value. - `link`: Do not render the page to disk, but assign `Permalink` and `RelPermalink` values. - `never`: Never render the page to disk, and exclude it from all page collections. > [!note] > Any page, regardless of its build options, will always be available by using the [`.Page.GetPage`] or [`.Site.GetPage`] method. ## Example -- headless page Create a unpublished page whose content and resources can be included in other pages. ```text content/ ├── headless/ │ ├── a.jpg │ ├── b.jpg │ └── index.md <-- leaf bundle └── _index.md <-- home page ``` Set the build options in front matter: {{< code-toggle file=content/headless/index.md fm=true >}} title = 'Headless page' [build] list = 'never' publishResources = false render = 'never' {{< /code-toggle >}} To include the content and images on the home page: ```go-html-template {file="layouts/home.html"} {{ with .Site.GetPage "/headless" }} {{ .Content }} {{ range .Resources.ByType "image" }} {{ end }} {{ end }} ``` The published site will have this structure: ```text public/ ├── headless/ │ ├── a.jpg │ └── b.jpg └── index.html ``` In the example above, note that: 1. Hugo did not publish an HTML file for the page. 1. Despite setting `publishResources` to `false` in front matter, Hugo published the [page resources] because we invoked the [`RelPermalink`] method on each resource. This is the expected behavior. ## Example -- headless section Create a unpublished section whose content and resources can be included in other pages. ```text content/ ├── headless/ │ ├── note-1/ │ │ ├── a.jpg │ │ ├── b.jpg │ │ └── index.md <-- leaf bundle │ ├── note-2/ │ │ ├── c.jpg │ │ ├── d.jpg │ │ └── index.md <-- leaf bundle │ └── _index.md <-- branch bundle └── _index.md <-- home page ``` Set the build options in front matter, using the `cascade` keyword to "cascade" the values down to descendant pages. {{< code-toggle file=content/headless/_index.md fm=true >}} title = 'Headless section' [[cascade]] [cascade.build] list = 'local' publishResources = false render = 'never' {{< /code-toggle >}} In the front matter above, note that we have set `list` to `local` to include the descendant pages in local page collections. To include the content and images on the home page: ```go-html-template {file="layouts/home.html"} {{ with .Site.GetPage "/headless" }} {{ range .Pages }} {{ .Content }} {{ range .Resources.ByType "image" }} {{ end }} {{ end }} {{ end }} ``` The published site will have this structure: ```text public/ ├── headless/ │ ├── note-1/ │ │ ├── a.jpg │ │ └── b.jpg │ └── note-2/ │ ├── c.jpg │ └── d.jpg └── index.html ``` In the example above, note that: 1. Hugo did not publish an HTML file for the page. 1. Despite setting `publishResources` to `false` in front matter, Hugo correctly published the [page resources] because we invoked the [`RelPermalink`] method on each resource. This is the expected behavior. ## Example -- list without publishing Publish a section page without publishing the descendant pages. For example, to create a glossary: ```text content/ ├── glossary/ │ ├── _index.md │ ├── bar.md │ ├── baz.md │ └── foo.md └── _index.md ``` Set the build options in front matter, using the `cascade` keyword to "cascade" the values down to descendant pages. {{< code-toggle file=content/glossary/_index.md fm=true >}} title = 'Glossary' [build] render = 'always' [[cascade]] [cascade.build] list = 'local' publishResources = false render = 'never' {{< /code-toggle >}} To render the glossary: ```go-html-template {file="layouts/glossary/section.html"}
      {{ range .Pages }}
      {{ .Title }}
      {{ .Content }}
      {{ end }}
      ``` The published site will have this structure: ```text public/ ├── glossary/ │ └── index.html └── index.html ``` ## Example -- publish without listing Publish a section's descendant pages without publishing the section page itself. ```text content/ ├── books/ │ ├── _index.md │ ├── book-1.md │ └── book-2.md └── _index.md ``` Set the build options in front matter: {{< code-toggle file=content/books/_index.md fm=true >}} title = 'Books' [build] render = 'never' list = 'never' {{< /code-toggle >}} The published site will have this structure: ```text public/ ├── books/ │ ├── book-1/ │ │ └── index.html │ └── book-2/ │ └── index.html └── index.html ``` ## Example -- conditionally hide section Consider this example. A documentation site has a team of contributors with access to 20 custom shortcodes. Each shortcode takes several arguments, and requires documentation for the contributors to reference when using them. Instead of external documentation for the shortcodes, include an "internal" section that is hidden when building the production site. ```text content/ ├── internal/ │ ├── shortcodes/ │ │ ├── _index.md │ │ ├── shortcode-1.md │ │ └── shortcode-2.md │ └── _index.md ├── reference/ │ ├── _index.md │ ├── reference-1.md │ └── reference-2.md ├── tutorials/ │ ├── _index.md │ ├── tutorial-1.md │ └── tutorial-2.md └── _index.md ``` Set the build options in front matter, using the `cascade` keyword to "cascade" the values down to descendant pages, and use the `target` keyword to target the production environment. {{< code-toggle file=content/internal/_index.md >}} title = 'Internal' [[cascade]] [cascade.build] render = 'never' list = 'never' [cascade.target] environment = 'production' {{< /code-toggle >}} The production site will have this structure: ```text public/ ├── reference/ │ ├── reference-1/ │ │ └── index.html │ ├── reference-2/ │ │ └── index.html │ └── index.html ├── tutorials/ │ ├── tutorial-1/ │ │ └── index.html │ ├── tutorial-2/ │ │ └── index.html │ └── index.html └── index.html ``` [`.Page.GetPage`]: /methods/page/getpage/ [`.Site.GetPage`]: /methods/site/getpage/ [`Permalink`]: /methods/resource/permalink/ [`Publish`]: /methods/resource/publish/ [`RelPermalink`]: /methods/resource/relpermalink/ [page bundles]: /content-management/page-bundles/ [page resources]: /content-management/page-resources/ gohugoio-hugo-6abdaca/docs/content/en/content-management/comments.md000066400000000000000000000045441507671574500261040ustar00rootroot00000000000000--- title: Comments description: Hugo ships with an internal Disqus template, but this isn't the only commenting system that will work with your new Hugo website. categories: [] keywords: [] aliases: [/extras/comments/] --- Hugo ships with support for [Disqus](https://disqus.com/), a third-party service that provides comment and community capabilities to websites via JavaScript. Your theme may already support Disqus, but if not, it is easy to add to your templates via [Hugo's built-in Disqus partial][disquspartial]. ## Add Disqus Hugo comes with all the code you need to load Disqus into your templates. Before adding Disqus to your site, you'll need to [set up an account][disqussetup]. ### Configure Disqus Disqus comments require you set a single value in your [site's configuration file][configuration] like so: {{< code-toggle file=hugo >}} [services.disqus] shortname = 'your-disqus-shortname' {{}} For many websites, this is enough configuration. However, you also have the option to set the following in the [front matter] of a single content file: - `disqus_identifier` - `disqus_title` - `disqus_url` ### Render Hugo's built-in Disqus partial template Disqus has its own [internal template](/templates/embedded/#disqus) available, to render it add the following code where you want comments to appear: ```go-html-template {{ partial "disqus.html" . }} ``` ## Alternatives Commercial commenting systems: - [Emote](https://emote.com/) - [Graph Comment](https://graphcomment.com/) - [Hyvor Talk](https://talk.hyvor.com/) - [IntenseDebate](https://intensedebate.com/) - [ReplyBox](https://getreplybox.com/) Open-source commenting systems: - [Cactus Comments](https://cactus.chat/docs/integrations/hugo/) - [Comentario](https://gitlab.com/comentario/comentario/) - [Comma](https://github.com/Dieterbe/comma/) - [Commento](https://commento.io/) - [Discourse](https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963) - [Giscus](https://giscus.app/) - [Isso](https://isso-comments.de/) - [Remark42](https://remark42.com/) - [Staticman](https://staticman.net/) - [Talkyard](https://blog-comments.talkyard.io/) - [Utterances](https://utteranc.es/) [configuration]: /configuration/ [disquspartial]: /templates/embedded/#disqus [disqussetup]: https://disqus.com/profile/signup/ [front matter]: /content-management/front-matter/ gohugoio-hugo-6abdaca/docs/content/en/content-management/content-adapters.md000066400000000000000000000250451507671574500275310ustar00rootroot00000000000000--- title: Content adapters description: Create content adapters to dynamically add content when building your site. categories: [] keywords: [] --- {{< new-in 0.126.0 />}} ## Overview A content adapter is a template that dynamically creates pages when building a site. For example, use a content adapter to create pages from a remote data source such as JSON, TOML, YAML, or XML. Unlike templates that reside in the `layouts` directory, content adapters reside in the `content` directory, no more than one per directory per language. When a content adapter creates a page, the page's [logical path](g) will be relative to the content adapter. ```text content/ ├── articles/ │ ├── _index.md │ ├── article-1.md │ └── article-2.md ├── books/ │ ├── _content.gotmpl <-- content adapter │ └── _index.md └── films/ ├── _content.gotmpl <-- content adapter └── _index.md ``` Each content adapter is named `_content.gotmpl` and uses the same [syntax] as templates in the `layouts` directory. You can use any of the [template functions] within a content adapter, as well as the methods described below. ## Methods Use these methods within a content adapter. ### AddPage Adds a page to the site. ```go-html-template {file="content/books/_content.gotmpl"} {{ $content := dict "mediaType" "text/markdown" "value" "The _Hunchback of Notre Dame_ was written by Victor Hugo." }} {{ $page := dict "content" $content "kind" "page" "path" "the-hunchback-of-notre-dame" "title" "The Hunchback of Notre Dame" }} {{ .AddPage $page }} ``` ### AddResource Adds a page resource to the site. ```go-html-template {file="content/books/_content.gotmpl"} {{ with resources.Get "images/a.jpg" }} {{ $content := dict "mediaType" .MediaType.Type "value" . }} {{ $resource := dict "content" $content "path" "the-hunchback-of-notre-dame/cover.jpg" }} {{ $.AddResource $resource }} {{ end }} ``` Then retrieve the new page resource with something like: ```go-html-template {file="layouts/page.html"} {{ with .Resources.Get "cover.jpg" }} {{ end }} ``` ### Site Returns the `Site` to which the pages will be added. ```go-html-template {file="content/books/_content.gotmpl"} {{ .Site.Title }} ``` > [!note] > Note that the `Site` returned isn't fully built when invoked from the content adapters; if you try to call methods that depends on pages, e.g. `.Site.Pages`, you will get an error saying "this method cannot be called before the site is fully initialized". ### Store Returns a persistent "scratch pad" to store and manipulate data. The main use case for this is to transfer values between executions when [EnableAllLanguages](#enablealllanguages) is set. See [examples](/methods/page/store/). ```go-html-template {file="content/books/_content.gotmpl"} {{ .Store.Set "key" "value" }} {{ .Store.Get "key" }} ``` ### EnableAllLanguages By default, Hugo executes the content adapter for the language defined by the `_content.gotmpl` file. Use this method to activate the content adapter for all languages. ```go-html-template {file="content/books/_content.gotmpl"} {{ .EnableAllLanguages }} {{ $content := dict "mediaType" "text/markdown" "value" "The _Hunchback of Notre Dame_ was written by Victor Hugo." }} {{ $page := dict "content" $content "kind" "page" "path" "the-hunchback-of-notre-dame" "title" "The Hunchback of Notre Dame" }} {{ .AddPage $page }} ``` ## Page map Set any [front matter field] in the map passed to the [`AddPage`](#addpage) method, excluding `markup`. Instead of setting the `markup` field, specify the `content.mediaType` as described below. This table describes the fields most commonly passed to the `AddPage` method. Key|Description|Required :--|:--|:-: `content.mediaType`|The content [media type]. Default is `text/markdown`. See [content formats] for examples.|  `content.value`|The content value as a string.|  `dates.date`|The page creation date as a `time.Time` value.|  `dates.expiryDate`|The page expiry date as a `time.Time` value.|  `dates.lastmod`|The page last modification date as a `time.Time` value.|  `dates.publishDate`|The page publication date as a `time.Time` value.|  `params`|A map of page parameters.|  `path`|The page's [logical path](g) relative to the content adapter. Do not include a leading slash or file extension.|:heavy_check_mark: `title`|The page title.|  > [!note] > While `path` is the only required field, we recommend setting `title` as well. > > When setting the `path`, Hugo transforms the given string to a logical path. For example, setting `path` to `A B C` produces a logical path of `/section/a-b-c`. ## Resource map Construct the map passed to the [`AddResource`](#addresource) method using the fields below. Key|Description|Required :--|:--|:-: `content.mediaType`|The content [media type].|:heavy_check_mark: `content.value`|The content value as a string or resource.|:heavy_check_mark: `name`|The resource name.|  `params`|A map of resource parameters.|  `path`|The resources's [logical path](g) relative to the content adapter. Do not include a leading slash.|:heavy_check_mark: `title`|The resource title.|  > [!note] > When `content.value` is a string, Hugo generates a new resource with a publication path relative to the page. However, if `content.value` is already a resource, Hugo directly uses its value and publishes it relative to the site root. This latter method is more efficient. > > When setting the `path`, Hugo transforms the given string to a logical path. For example, setting `path` to `A B C/cover.jpg` produces a logical path of `/section/a-b-c/cover.jpg`. ## Example Create pages from remote data, where each page represents a book review. Step 1 : Create the content structure. ```text content/ └── books/ ├── _content.gotmpl <-- content adapter └── _index.md ``` Step 2 : Inspect the remote data to determine how to map key-value pairs to front matter fields.\ Step 3 : Create the content adapter. ```go-html-template {file="content/books/_content.gotmpl" copy=true} {{/* Get remote data. */}} {{ $data := dict }} {{ $url := "https://gohugo.io/shared/examples/data/books.json" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "Unable to get remote resource %s: %s" $url . }} {{ else with .Value }} {{ $data = . | transform.Unmarshal }} {{ else }} {{ errorf "Unable to get remote resource %s" $url }} {{ end }} {{ end }} {{/* Add pages and page resources. */}} {{ range $data }} {{/* Add page. */}} {{ $content := dict "mediaType" "text/markdown" "value" .summary }} {{ $dates := dict "date" (time.AsTime .date) }} {{ $params := dict "author" .author "isbn" .isbn "rating" .rating "tags" .tags }} {{ $page := dict "content" $content "dates" $dates "kind" "page" "params" $params "path" .title "title" .title }} {{ $.AddPage $page }} {{/* Add page resource. */}} {{ $item := . }} {{ with $url := $item.cover }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "Unable to get remote resource %s: %s" $url . }} {{ else with .Value }} {{ $content := dict "mediaType" .MediaType.Type "value" .Content }} {{ $params := dict "alt" $item.title }} {{ $resource := dict "content" $content "params" $params "path" (printf "%s/cover.%s" $item.title .MediaType.SubType) }} {{ $.AddResource $resource }} {{ else }} {{ errorf "Unable to get remote resource %s" $url }} {{ end }} {{ end }} {{ end }} {{ end }} ``` Step 4 : Create a _page_ template to render each book review. ```go-html-template {file="layouts/books/page.html" copy=true} {{ define "main" }}

      {{ .Title }}

      {{ with .Resources.GetMatch "cover.*" }} {{ .Params.alt }} {{ end }}

      Author: {{ .Params.author }}

      ISBN: {{ .Params.isbn }}
      Rating: {{ .Params.rating }}
      Review date: {{ .Date | time.Format ":date_long" }}

      {{ with .GetTerms "tags" }}

      Tags:

      {{ end }} {{ .Content }} {{ end }} ``` ## Multilingual sites With multilingual sites you can: 1. Create one content adapter for all languages using the [`EnableAllLanguages`](#enablealllanguages) method as described above. 1. Create content adapters unique to each language. See the examples below. ### Translations by file name With this site configuration: {{< code-toggle file=hugo >}} [languages.en] weight = 1 [languages.de] weight = 2 {{< /code-toggle >}} Include a language designator in the content adapter's file name. ```text content/ └── books/ ├── _content.de.gotmpl ├── _content.en.gotmpl ├── _index.de.md └── _index.en.md ``` ### Translations by content directory With this site configuration: {{< code-toggle file=hugo >}} [languages.en] contentDir = 'content/en' weight = 1 [languages.de] contentDir = 'content/de' weight = 2 {{< /code-toggle >}} Create a single content adapter in each directory: ```text content/ ├── de/ │ └── books/ │ ├── _content.gotmpl │ └── _index.md └── en/ └── books/ ├── _content.gotmpl └── _index.md ``` ## Page collisions Two or more pages collide when they have the same publication path. Due to concurrency, the content of the published page is indeterminate. Consider this example: ```text content/ └── books/ ├── _content.gotmpl <-- content adapter ├── _index.md └── the-hunchback-of-notre-dame.md ``` If the content adapter also creates `books/the-hunchback-of-notre-dame`, the content of the published page is indeterminate. You can not define the processing order. To detect page collisions, use the `--printPathWarnings` flag when building your site. [content formats]: /content-management/formats/#classification [front matter field]: /content-management/front-matter/#fields [media type]: https://en.wikipedia.org/wiki/Media_type [syntax]: /templates/introduction/ [template functions]: /functions/ gohugoio-hugo-6abdaca/docs/content/en/content-management/data-sources.md000066400000000000000000000073161507671574500266510ustar00rootroot00000000000000--- title: Data sources description: Use local and remote data sources to augment or create content. categories: [] keywords: [] aliases: [/extras/datafiles/,/extras/datadrivencontent/,/doc/datafiles/,/templates/data-templates/] --- Hugo can access and [unmarshal](g) local and remote data sources including CSV, JSON, TOML, YAML, and XML. Use this data to augment existing content or to create new content. A data source might be a file in the `data` directory, a [global resource](g), a [page resource](g), or a [remote resource](g). ## Data directory The `data` directory in the root of your project may contain one or more data files, in either a flat or nested tree. Hugo merges the data files to create a single data structure, accessible with the `Data` method on a `Site` object. Hugo also merges data directories from themes and modules into this single data structure, where the `data` directory in the root of your project takes precedence. > [!note] > Hugo reads the combined data structure into memory and keeps it there for the entire build. For data that is infrequently accessed, use global or page resources instead. Theme and module authors may wish to namespace their data files to prevent collisions. For example: ```text project/ └── data/ └── mytheme/ └── foo.json ``` > [!note] > Do not place CSV files in the `data` directory. Access CSV files as page, global, or remote resources. See the documentation for the [`Data`] method on a `Site` object for details and examples. ## Global resources Use the `resources.Get` and `transform.Unmarshal` functions to access data files that exist as global resources. See the [`transform.Unmarshal`](/functions/transform/unmarshal/#global-resource) documentation for details and examples. ## Page resources Use the `Resources.Get` method on a `Page` object combined with the `transform.Unmarshal` function to access data files that exist as page resources. See the [`transform.Unmarshal`](/functions/transform/unmarshal/#page-resource) documentation for details and examples. ## Remote resources Use the `resources.GetRemote` and `transform.Unmarshal` functions to access remote data. See the [`transform.Unmarshal`](/functions/transform/unmarshal/#remote-resource) documentation for details and examples. ## Augment existing content Use data sources to augment existing content. For example, create a shortcode to render an HTML table from a global CSV resource. ```csv {file="assets/pets.csv"} "name","type","breed","age" "Spot","dog","Collie","3" "Felix","cat","Malicious","7" ``` ```text {file="content/example.md"} {{}} ``` ```go-html-template {file="layouts/_shortcodes/csv-to-table.html"} {{ with $file := .Get 0 }} {{ with resources.Get $file }} {{ with . | transform.Unmarshal }} {{ range index . 0 }} {{ end }} {{ range after 1 . }} {{ range . }} {{ end }} {{ end }}
      {{ . }}
      {{ . }}
      {{ end }} {{ else }} {{ errorf "The %q shortcode was unable to find %s. See %s" $.Name $file $.Position }} {{ end }} {{ else }} {{ errorf "The %q shortcode requires one positional argument, the path to the CSV file relative to the assets directory. See %s" .Name .Position }} {{ end }} ``` Hugo renders this to: name|type|breed|age :--|:--|:--|:-- Spot|dog|Collie|3 Felix|cat|Malicious|7 ## Create new content Use [content adapters] to create new content. [`Data`]: /methods/site/data/ [content adapters]: /content-management/content-adapters/ gohugoio-hugo-6abdaca/docs/content/en/content-management/diagrams.md000066400000000000000000000337131507671574500260460ustar00rootroot00000000000000--- title: Diagrams description: Use fenced code blocks and Markdown render hooks to include diagrams in your content. categories: [] keywords: [] --- ## GoAT diagrams (ASCII) Hugo natively supports [GoAT] diagrams with an [embedded code block render hook]. This means that this code block: ````txt ```goat . . . .--- 1 .-- 1 / 1 / \ | | .---+ .-+ + / \ .---+---. .--+--. | '--- 2 | '-- 2 / \ 2 + + | | | | ---+ ---+ + / \ / \ .-+-. .-+-. .+. .+. | .--- 3 | .-- 3 \ / 3 / \ / \ | | | | | | | | '---+ '-+ + 1 2 3 4 1 2 3 4 1 2 3 4 '--- 4 '-- 4 \ 4 ``` ```` Will be rendered as: ```goat . . . .--- 1 .-- 1 / 1 / \ | | .---+ .-+ + / \ .---+---. .--+--. | '--- 2 | '-- 2 / \ 2 + + | | | | ---+ ---+ + / \ / \ .-+-. .-+-. .+. .+. | .--- 3 | .-- 3 \ / 3 / \ / \ | | | | | | | | '---+ '-+ + 1 2 3 4 1 2 3 4 1 2 3 4 '--- 4 '-- 4 \ 4 ``` ## Mermaid diagrams Hugo does not provide a built-in template for Mermaid diagrams. Create your own using a [code block render hook]: ```go-html-template {file="layouts/_markup/render-codeblock-mermaid.html" copy=true}
        {{ .Inner | htmlEscape | safeHTML }}
      
      {{ .Page.Store.Set "hasMermaid" true }} ``` Then include this snippet at the _bottom_ of your base template, before the closing `body` tag: ```go-html-template {file="layouts/baseof.html" copy=true} {{ if .Store.Get "hasMermaid" }} {{ end }} ``` With that you can use the `mermaid` language in Markdown code blocks: ````text {copy=true} ```mermaid sequenceDiagram participant Alice participant Bob Alice->>John: Hello John, how are you? loop Healthcheck John->>John: Fight against hypochondria end Note right of John: Rational thoughts
      prevail! John-->>Alice: Great! John->>Bob: How about you? Bob-->>John: Jolly good! ``` ```` ## Goat ASCII diagram examples ### Graphics ```goat . 0 3 P * Eye / ^ / *-------* +y \ +) \ / Reflection 1 /| 2 /| ^ \ \ \ v *-------* | | v0 \ v3 --------*-------- | |4 | |7 | *----\-----* | *-----|-* +-----> +x / v X \ .-.<-------- o |/ |/ / / o \ | / | Refraction / \ *-------* v / \ +-' / \ 5 6 +z v1 *------------------* v2 | o-----o v ``` ### Complex ```goat +-------------------+ ^ .---. | A Box |__.--.__ __.--> | .-. | | | | '--' v | * |<--- | | +-------------------+ '-' | | Round *---(-. | .-----------------. .-------. .----------. .-------. | | | | Mixed Rounded | | | / Diagonals \ | | | | | | | & Square Corners | '--. .--' / \ |---+---| '-)-' .--------. '--+------------+-' .--. | '-------+--------' | | | | / Search / | | | | '---. | '-------' | '-+------' |<---------->| | | | v Interior | ^ ' <---' '----' .-----------. ---. .--- v | .------------------. Diag line | .-------. +---. \ / . | | if (a > b) +---. .--->| | | | | Curved line \ / / \ | | obj->fcn() | \ / | '-------' |<--' + / \ | '------------------' '--' '--+--------' .--. .--. | .-. +Done?+-' .---+-----. | ^ |\ | | /| .--+ | | \ / | | | Join \|/ | | Curved | \| |/ | | \ | \ / | | +----> o --o-- '-' Vertical '--' '--' '-- '--' + .---. <--+---+-----' | /|\ | | 3 | v not:line 'quotes' .-' '---' .-. .---+--------. / A || B *bold* | ^ | | | Not a dot | <---+---<-- A dash--is not a line v | '-' '---------+--' / Nor/is this. --- ``` ### Process ```goat . .---------. / \ | START | / \ .-+-------+-. ___________ '----+----' .-------. A / \ B | |COMPLEX| | / \ .-. | | END |<-----+CHOICE +----->| | | +--->+ PREPARATION +--->| X | v '-------' \ / | |PROCESS| | \___________/ '-' .---------. \ / '-+---+---+-' / INPUT / \ / '-----+---' ' | ^ v | .-----------. .-----+-----. .-. | PROCESS +---------------->| PROCESS |<------+ X | '-----------' '-----------' '-' ``` ### File tree Created from ```goat {width=300 color="orange"} ───Linux─┬─Android ├─Debian─┬─Ubuntu─┬─Lubuntu │ │ ├─Kubuntu │ │ ├─Xubuntu │ │ └─Xubuntu │ └─Mint ├─Centos └─Fedora ``` ### Sequence diagram ```goat {class="w-40"} ┌─────┐ ┌───┐ │Alice│ │Bob│ └──┬──┘ └─┬─┘ │ │ │ Hello Bob! │ │───────────>│ │ │ │Hello Alice!│ │<───────────│ ┌──┴──┐ ┌─┴─┐ │Alice│ │Bob│ └─────┘ └───┘ ``` ### Flowchart ```goat _________________ ╱ ╲ ┌─────┐ ╱ DO YOU UNDERSTAND ╲____________________________________________________│GOOD!│ ╲ FLOW CHARTS? ╱yes └──┬──┘ ╲_________________╱ │ │no │ _________▽_________ ______________________ │ ╱ ╲ ╱ ╲ ┌────┐ │ ╱ OKAY, YOU SEE THE ╲________________╱ ... AND YOU CAN SEE ╲___│GOOD│ │ ╲ LINE LABELED 'YES'? ╱yes ╲ THE ONES LABELED 'NO'? ╱yes└──┬─┘ │ ╲___________________╱ ╲______________________╱ │ │ │no │no │ │ ________▽_________ _________▽__________ │ │ ╱ ╲ ┌───────────┐ ╱ ╲ │ │ ╱ BUT YOU SEE THE ╲___│WAIT, WHAT?│ ╱ BUT YOU JUST ╲___ │ │ ╲ ONES LABELED 'NO'? ╱yes└───────────┘ ╲ FOLLOWED THEM TWICE? ╱yes│ │ │ ╲__________________╱ ╲____________________╱ │ │ │ │no │no │ │ │ ┌───▽───┐ │ │ │ │ │LISTEN.│ └───────┬───────┘ │ │ └───┬───┘ ┌──────▽─────┐ │ │ ┌─────▽────┐ │(THAT WASN'T│ │ │ │I HATE YOU│ │A QUESTION) │ │ │ └──────────┘ └──────┬─────┘ │ │ ┌────▽───┐ │ │ │SCREW IT│ │ │ └────┬───┘ │ │ └─────┬─────┘ │ │ │ └─────┬─────┘ ┌───────▽──────┐ │LET'S GO DRING│ └───────┬──────┘ ┌─────────▽─────────┐ │HEY, I SHOULD TRY │ │INSTALLING FREEBSD!│ └───────────────────┘ ``` ### Table ```goat {class="w-80 dark-blue"} ┌────────────────────────────────────────────────┐ │ │ ├────────────────────────────────────────────────┤ │SYNTAX = { PRODUCTION } . │ ├────────────────────────────────────────────────┤ │PRODUCTION = IDENTIFIER "=" EXPRESSION "." . │ ├────────────────────────────────────────────────┤ │EXPRESSION = TERM { "|" TERM } . │ ├────────────────────────────────────────────────┤ │TERM = FACTOR { FACTOR } . │ ├────────────────────────────────────────────────┤ │FACTOR = IDENTIFIER │ ├────────────────────────────────────────────────┤ │ | LITERAL │ ├────────────────────────────────────────────────┤ │ | "[" EXPRESSION "]" │ ├────────────────────────────────────────────────┤ │ | "(" EXPRESSION ")" │ ├────────────────────────────────────────────────┤ │ | "{" EXPRESSION "}" . │ ├────────────────────────────────────────────────┤ │IDENTIFIER = letter { letter } . │ ├────────────────────────────────────────────────┤ │LITERAL = """" character { character } """" .│ └────────────────────────────────────────────────┘ ``` [code block render hook]: /render-hooks/code-blocks/ [embedded code block render hook]: {{% eturl render-codeblock-goat %}} [GoAT]: https://github.com/bep/goat gohugoio-hugo-6abdaca/docs/content/en/content-management/formats.md000066400000000000000000000117101507671574500257230ustar00rootroot00000000000000--- title: Content formats description: Create your content using Markdown, HTML, Emacs Org Mode, AsciiDoc, Pandoc, or reStructuredText. categories: [] keywords: [] aliases: [/content/markdown-extras/,/content/supported-formats/,/doc/supported-formats/] --- ## Introduction You may mix content formats throughout your site. For example: ```text content/ └── posts/ ├── post-1.md ├── post-2.adoc ├── post-3.org ├── post-4.pandoc ├── post-5.rst └── post-6.html ``` Regardless of content format, all content must have [front matter], preferably including both `title` and `date`. Hugo selects the content renderer based on the `markup` identifier in front matter, falling back to the file extension. See the [classification] table below for a list of markup identifiers and recognized file extensions. [classification]: #classification [front matter]: /content-management/front-matter/ ## Formats ### Markdown Create your content in [Markdown] preceded by front matter. Markdown is Hugo's default content format. Hugo natively renders Markdown to HTML using [Goldmark]. Goldmark is fast and conforms to the [CommonMark] and [GitHub Flavored Markdown] specifications. You can configure Goldmark in your [site configuration][configure goldmark]. Hugo provides custom Markdown features including: [Attributes] : Apply HTML attributes such as `class` and `id` to Markdown images and block elements including blockquotes, fenced code blocks, headings, horizontal rules, lists, paragraphs, and tables. [Extensions] : Leverage the embedded Markdown extensions to create tables, definition lists, footnotes, task lists, inserted text, mark text, subscripts, superscripts, and more. [Mathematics] : Include mathematical equations and expressions in Markdown using LaTeX markup. [Render hooks] : Override the conversion of Markdown to HTML when rendering fenced code blocks, headings, images, and links. For example, render every standalone image as an HTML `figure` element. [Attributes]: /content-management/markdown-attributes/ [CommonMark]: https://spec.commonmark.org/current/ [Extensions]: /configuration/markup/#extensions [GitHub Flavored Markdown]: https://github.github.com/gfm/ [Goldmark]: https://github.com/yuin/goldmark [Markdown]: https://daringfireball.net/projects/markdown/ [Mathematics]: /content-management/mathematics/ [Render hooks]: /render-hooks/introduction/ [configure goldmark]: /configuration/markup/#goldmark ### HTML Create your content in [HTML] preceded by front matter. The content is typically what you would place within an HTML document's `body` or `main` element. [HTML]: https://developer.mozilla.org/en-US/docs/Learn_web_development/Getting_started/Your_first_website/Creating_the_content ### Emacs Org Mode Create your content in the [Emacs Org Mode] format preceded by front matter. You can use Org Mode keywords for front matter. See [details]. [details]: /content-management/front-matter/#emacs-org-mode [Emacs Org Mode]: https://orgmode.org/ ### AsciiDoc Create your content in the [AsciiDoc] format preceded by front matter. Hugo renders AsciiDoc content to HTML using the Asciidoctor executable. You must install Asciidoctor and its dependencies (Ruby) to render the AsciiDoc content format. You can configure the AsciiDoc renderer in your [site configuration][configure asciidoc]. In its default configuration, Hugo passes these CLI flags when calling the Asciidoctor executable: ```text --no-header-footer ``` The CLI flags passed to the Asciidoctor executable depend on configuration. You may inspect the flags when building your site: ```text hugo --logLevel info ``` [AsciiDoc]: https://asciidoc.org/ [configure asciidoc]: /configuration/markup/#asciidoc ### Pandoc Create your content in the [Pandoc] format[^1] preceded by front matter. Hugo renders Pandoc content to HTML using the Pandoc executable. You must install Pandoc to render the Pandoc content format. [^1]: This is a derivation of the Markdown format as described by the CommonMark specification. Hugo passes these CLI flags when calling the Pandoc executable: ```text --mathjax ``` [Pandoc]: https://pandoc.org/MANUAL.html#pandocs-markdown ### reStructuredText Create your content in the [reStructuredText] format preceded by front matter. Hugo renders reStructuredText content to HTML using [Docutils], specifically rst2html. You must install Docutils and its dependencies (Python) to render the reStructuredText content format. Hugo passes these CLI flags when calling the rst2html executable: ```text --leave-comments --initial-header-level=2 ``` [Docutils]: https://docutils.sourceforge.io/ [reStructuredText]: https://docutils.sourceforge.io/rst.html ## Classification {{% include "/_common/content-format-table.md" %}} When converting content to HTML, Hugo uses: - Native renderers for Markdown, HTML, and Emacs Org mode - External renderers for AsciiDoc, Pandoc, and reStructuredText Native renderers are faster than external renderers. gohugoio-hugo-6abdaca/docs/content/en/content-management/front-matter.md000066400000000000000000000344131507671574500266770ustar00rootroot00000000000000--- title: Front matter description: Use front matter to add metadata to your content. categories: [] keywords: [] aliases: [/content/front-matter/] --- ## Overview The front matter at the top of each content file is metadata that: - Describes the content - Augments the content - Establishes relationships with other content - Controls the published structure of your site - Determines template selection Provide front matter using a serialization format, one of [JSON], [TOML], or [YAML]. Hugo determines the front matter format by examining the delimiters that separate the front matter from the page content. See examples of front matter delimiters by toggling between the serialization formats below. {{< code-toggle file=content/example.md fm=true >}} title = 'Example' date = 2024-02-02T04:14:54-08:00 draft = false weight = 10 [params] author = 'John Smith' {{< /code-toggle >}} Front matter fields may be [boolean](g), [integer](g), [float](g), [string](g), [arrays](g), or [maps](g). Note that the TOML format also supports unquoted date/time values. ## Fields The most common front matter fields are `date`, `draft`, `title`, and `weight`, but you can specify metadata using any of fields below. > [!note] > The field names below are reserved. For example, you cannot create a custom field named `type`. Create custom fields under the `params` key. See the [parameters] section for details. [parameters]: #parameters aliases : (`string array`) An array of one or more aliases, where each alias is a relative URL that will redirect the browser to the current location. Access these values from a template using the [`Aliases`] method on a `Page` object. See the [aliases] section for details. build : (`map`) A map of [build options]. cascade : (`map`) A map of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See the [cascade] section for details. date : (`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Date`] method on a `Page` object. description : (`string`) Conceptually different than the page `summary`, the description is typically rendered within a `meta` element within the `head` element of the published HTML file. Access this value from a template using the [`Description`] method on a `Page` object. draft : (`bool`) Whether to disable rendering unless you pass the `--buildDrafts` flag to the `hugo` command. Access this value from a template using the [`Draft`] method on a `Page` object. expiryDate : (`string`) The page expiration date. On or after the expiration date, the page will not be rendered unless you pass the `--buildExpired` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`ExpiryDate`] method on a `Page` object. headless : (`bool`) Applicable to [leaf bundles], whether to set the `render` and `list` [build options] to `never`, creating a headless bundle of [page resources]. isCJKLanguage : (`bool`) Whether the content language is in the [CJK](g) family. This value determines how Hugo calculates word count, and affects the values returned by the [`WordCount`], [`FuzzyWordCount`], [`ReadingTime`], and [`Summary`] methods on a `Page` object. keywords : (`string array`) An array of keywords, typically rendered within a `meta` element within the `head` element of the published HTML file, or used as a [taxonomy](g) to classify content. Access these values from a template using the [`Keywords`] method on a `Page` object. lastmod : (`string`) The date that the page was last modified. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Lastmod`] method on a `Page` object. layout : (`string`) Provide a template name to [target a specific template], overriding the default [template lookup order]. Set the value to the base file name of the template, excluding its extension. Access this value from a template using the [`Layout`] method on a `Page` object. linkTitle : (`string`) Typically a shorter version of the `title`. Access this value from a template using the [`LinkTitle`] method on a `Page` object. markup : (`string`) An identifier corresponding to one of the supported [content formats]. If not provided, Hugo determines the content renderer based on the file extension. menus : (`string`, `string array`, or `map`) If set, Hugo adds the page to the given menu or menus. See the [menus] page for details. modified : Alias to [lastmod](#lastmod). outputs : (`string array`) The [output formats] to render. See [configure outputs] for more information. params : {{< new-in 0.123.0 />}} : (`map`) A map of custom [page parameters]. pubdate : Alias to [publishDate](#publishdate). publishDate : (`string`) The page publication date. Before the publication date, the page will not be rendered unless you pass the `--buildFuture` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`PublishDate`] method on a `Page` object. published : Alias to [publishDate](#publishdate). resources : (`map array`) An array of maps to provide metadata for [page resources]. sitemap : (`map`) A map of sitemap options. See the [sitemap templates] page for details. Access these values from a template using the [`Sitemap`] method on a `Page` object. slug : (`string`) Overrides the last segment of the URL path. Not applicable to `home`, `section`, `taxonomy`, or `term` pages. See the [URL management] page for details. Access this value from a template using the [`Slug`] method on a `Page` object. summary : (`string`) Conceptually different than the page `description`, the summary either summarizes the content or serves as a teaser to encourage readers to visit the page. Access this value from a template using the [`Summary`] method on a `Page` object. title : (`string`) The page title. Access this value from a template using the [`Title`] method on a `Page` object. translationKey : (`string`) An arbitrary value used to relate two or more translations of the same page, useful when the translated pages do not share a common path. Access this value from a template using the [`TranslationKey`] method on a `Page` object. type : (`string`) The [content type](g), overriding the value derived from the top-level section in which the page resides. Access this value from a template using the [`Type`] method on a `Page` object. unpublishdate : Alias to [expirydate](#expirydate). url : (`string`) Overrides the entire URL path. Applicable to regular pages and section pages. See the [URL management] page for details. weight : (`int`) The page [weight](g), used to order the page within a [page collection](g). Access this value from a template using the [`Weight`] method on a `Page` object. ## Parameters {{< new-in 0.123.0 />}} Specify custom page parameters under the `params` key in front matter: {{< code-toggle file=content/example.md fm=true >}} title = 'Example' date = 2024-02-02T04:14:54-08:00 draft = false weight = 10 [params] author = 'John Smith' {{< /code-toggle >}} Access these values from a template using the [`Params`] or [`Param`] method on a `Page` object. Hugo provides [embedded templates] to optionally insert meta data within the `head` element of your rendered pages. These embedded templates expect the following front matter parameters: Parameter|Data type|Used by these embedded templates :--|:--|:-- `audio`|`[]string`|[`opengraph.html`] `images`|`[]string`|[`opengraph.html`], [`schema.html`], [`twitter_cards.html`] `videos`|`[]string`|[`opengraph.html`] The embedded templates will skip a parameter if not provided in front matter, but will throw an error if the data type is unexpected. ## Taxonomies Classify content by adding taxonomy terms to front matter. For example, with this site configuration: {{< code-toggle file=hugo >}} [taxonomies] tag = 'tags' genre = 'genres' {{< /code-toggle >}} Add taxonomy terms as shown below: {{< code-toggle file=content/example.md fm=true >}} title = 'Example' date = 2024-02-02T04:14:54-08:00 draft = false weight = 10 tags = ['red','blue'] genres = ['mystery','romance'] [params] author = 'John Smith' {{< /code-toggle >}} You can add taxonomy terms to the front matter of any these [page kinds](g): - `home` - `page` - `section` - `taxonomy` - `term` Access taxonomy terms from a template using the [`Params`] or [`GetTerms`] method on a `Page` object. For example: ```go-html-template {file="layouts/page.html"} {{ with .GetTerms "tags" }}

      Tags

      {{ end }} ``` [`GetTerms`]: /methods/page/getterms/ ## Cascade A [node](g) can cascade front matter values to its descendants. However, this cascading will be prevented if the descendant already defines the field, or if a closer ancestor node has already cascaded a value for that same field. For example, to cascade a "color" parameter from the home page to all its descendants: {{< code-toggle file=content/_index.md fm=true >}} title = 'Home' [cascade.params] color = 'red' {{< /code-toggle >}} ### Target The `target`[^1] keyword allows you to target specific pages or [environments](g). For example, to cascade a "color" parameter from the home page only to pages within the "articles" section, including the "articles" section page itself: [^1]: The `_target` alias for `target` is deprecated and will be removed in a future release. {{< code-toggle file=content/_index.md fm=true >}} title = 'Home' [cascade.params] color = 'red' [cascade.target] path = '{/articles,/articles/**}' {{< /code-toggle >}} Use any combination of these keywords to target pages and/or environments: environment : (`string`) A [glob](g) pattern matching the build [environment](g). For example: `{staging,production}`. kind : (`string`) A [glob](g) pattern matching the [page kind](g). For example: `{taxonomy,term}`. path : (`string`) A [glob](g) pattern matching the page's [logical path](g). For example: `{/books,/books/**}`. ### Array Define an array of cascade parameters to apply different values to different targets. For example: {{< code-toggle file=content/_index.md fm=true >}} title = 'Home' [[cascade]] [cascade.params] color = 'red' [cascade.target] path = '{/books/**}' kind = 'page' [[cascade]] [cascade.params] color = 'blue' [cascade.target] path = '{/films/**}' kind = 'page' {{< /code-toggle >}} > [!note] > For multilingual sites, defining cascade values in your site configuration is often more efficient. This avoids repeating the same cascade values on the home, section, taxonomy, or term page for each language. See [details](/configuration/cascade/). > > If you choose to define cascade values in front matter for a multilingual site, you must create a corresponding home, section, taxonomy, or term page for every language. ## Emacs Org Mode If your [content format] is [Emacs Org Mode], you may provide front matter using Org Mode keywords. For example: ```text {file="content/example.org"} #+TITLE: Example #+DATE: 2024-02-02T04:14:54-08:00 #+DRAFT: false #+AUTHOR: John Smith #+GENRES: mystery #+GENRES: romance #+TAGS: red #+TAGS: blue #+WEIGHT: 10 ``` Note that you can also specify array elements on a single line: ```text {file="content/example.org"} #+TAGS[]: red blue ``` [content format]: /content-management/formats/ [emacs org mode]: https://orgmode.org/ ## Dates When populating a date field, whether a [custom page parameter](#parameters) or one of the four predefined fields ([`date`](#date), [`expiryDate`](#expirydate), [`lastmod`](#lastmod), [`publishDate`](#publishdate)), use one of these parsable formats: {{% include "/_common/parsable-date-time-strings.md" %}} To override the default time zone, set the [`timeZone`](/configuration/all/#timezone) in your site configuration. The order of precedence for determining the time zone is: 1. The time zone offset in the date/time string 1. The time zone specified in your site configuration 1. The `Etc/UTC` time zone [`aliases`]: /methods/page/aliases/ [`date`]: /methods/page/date/ [`description`]: /methods/page/description/ [`draft`]: /methods/page/draft/ [`expirydate`]: /methods/page/expirydate/ [`fuzzywordcount`]: /methods/page/wordcount/ [`keywords`]: /methods/page/keywords/ [`lastmod`]: /methods/page/date/ [`layout`]: /methods/page/layout/ [`linktitle`]: /methods/page/linktitle/ [`opengraph.html`]: {{% eturl opengraph %}} [`Param`]: /methods/page/param/ [`Params`]: /methods/page/params/ [`publishdate`]: /methods/page/publishdate/ [`readingtime`]: /methods/page/readingtime/ [`schema.html`]: {{% eturl schema %}} [`sitemap`]: /methods/page/sitemap/ [`slug`]: /methods/page/slug/ [`Summary`]: /methods/page/summary/ [`title`]: /methods/page/title/ [`translationkey`]: /methods/page/translationkey/ [`twitter_cards.html`]: {{% eturl twitter_cards %}} [`type`]: /methods/page/type/ [`weight`]: /methods/page/weight/ [`wordcount`]: /methods/page/wordcount/ [aliases]: /content-management/urls/#aliases [build options]: /content-management/build-options/ [cascade]: #cascade-1 [configure outputs]: /configuration/outputs/#outputs-per-page [content formats]: /content-management/formats/#classification [embedded templates]: /templates/embedded/ [json]: https://www.json.org/ [leaf bundles]: /content-management/page-bundles/#leaf-bundles [menus]: /content-management/menus/#define-in-front-matter [output formats]: /configuration/output-formats/ [page parameters]: #parameters [page resources]: /content-management/page-resources/#metadata [sitemap templates]: /templates/sitemap/ [target a specific template]: /templates/lookup-order/#target-a-template [template lookup order]: /templates/lookup-order/ [toml]: https://toml.io/ [URL management]: /content-management/urls/#slug [yaml]: https://yaml.org/ gohugoio-hugo-6abdaca/docs/content/en/content-management/image-processing/000077500000000000000000000000001507671574500271625ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/content-management/image-processing/index.md000066400000000000000000000356511507671574500306250ustar00rootroot00000000000000--- title: Image processing description: Resize, crop, rotate, filter, and convert images. categories: [] keywords: [] --- ## Image resources To process an image you must access the file as a page resource, global resource, or remote resource. ### Page resource {{% glossary-term "page resource" %}} ```text content/ └── posts/ └── post-1/ <-- page bundle ├── index.md └── sunset.jpg <-- page resource ``` To access an image as a page resource: ```go-html-template {{ $image := .Resources.Get "sunset.jpg" }} ``` ### Global resource {{% glossary-term "global resource" %}} ```text assets/ └── images/ └── sunset.jpg <-- global resource ``` To access an image as a global resource: ```go-html-template {{ $image := resources.Get "images/sunset.jpg" }} ``` ### Remote resource {{% glossary-term "remote resource" %}} To access an image as a remote resource: ```go-html-template {{ $image := resources.GetRemote "https://gohugo.io/img/hugo-logo.png" }} ``` ## Image rendering Once you have accessed an image as a resource, render it in your templates using the `Permalink`, `RelPermalink`, `Width`, and `Height` properties. Example 1: Throws an error if the resource is not found. ```go-html-template {{ $image := .Resources.GetMatch "sunset.jpg" }} ``` Example 2: Skips image rendering if the resource is not found. ```go-html-template {{ $image := .Resources.GetMatch "sunset.jpg" }} {{ with $image }} {{ end }} ``` Example 3: A more concise way to skip image rendering if the resource is not found. ```go-html-template {{ with .Resources.GetMatch "sunset.jpg" }} {{ end }} ``` Example 4: Skips rendering if there's problem accessing a remote resource. ```go-html-template {{ $url := "https://gohugo.io/img/hugo-logo.png" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` ## Image processing methods The `image` resource implements the [`Process`], [`Resize`], [`Fit`], [`Fill`], [`Crop`], [`Filter`], [`Colors`] and [`Exif`] methods. > [!note] > Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the `Exif` method with the _original_ image to extract EXIF metadata from JPEG, PNG, TIFF, and WebP images. ### Process {{< new-in 0.119.0 />}} > [!note] > The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [Process filter](/functions/images/process). Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`]. See [Options](#image-processing-options) for available options. You can also use this method apply image processing that does not need any scaling, e.g. format conversions: ```go-html-template {{/* Convert the image from JPG to PNG. */}} {{ $png := $jpg.Process "png" }} ``` Some more examples: ```go-html-template {{/* Rotate the image 90 degrees counter-clockwise. */}} {{ $image := $image.Process "r90" }} {{/* Scaling actions. */}} {{ $image := $image.Process "resize 600x" }} {{ $image := $image.Process "crop 600x400" }} {{ $image := $image.Process "fit 600x400" }} {{ $image := $image.Process "fill 600x400" }} ``` ### Resize Resize an image to the given width and/or height. If you specify both width and height, the resulting image will be disproportionally scaled unless the original image has the same aspect ratio. ```go-html-template {{/* Resize to a width of 600px and preserve aspect ratio */}} {{ $image := $image.Resize "600x" }} {{/* Resize to a height of 400px and preserve aspect ratio */}} {{ $image := $image.Resize "x400" }} {{/* Resize to a width of 600px and a height of 400px */}} {{ $image := $image.Resize "600x400" }} ``` ### Fit Downscale an image to fit the given dimensions while maintaining aspect ratio. You must provide both width and height. ```go-html-template {{ $image := $image.Fit "600x400" }} ``` ### Fill Crop and resize an image to match the given dimensions. You must provide both width and height. Use the [`anchor`] option to change the crop box anchor point. ```go-html-template {{ $image := $image.Fill "600x400" }} ``` ### Crop Crop an image to match the given dimensions without resizing. You must provide both width and height. Use the [`anchor`] option to change the crop box anchor point. ```go-html-template {{ $image := $image.Crop "600x400" }} ``` ### Filter Apply one or more [filters] to an image. ```go-html-template {{ $image := $image.Filter (images.GaussianBlur 6) (images.Pixelate 8) }} ``` Write this in a more functional style using pipes. Hugo applies the filters in the order given. ```go-html-template {{ $image := $image | images.Filter (images.GaussianBlur 6) (images.Pixelate 8) }} ``` Sometimes it can be useful to create the filter chain once and then reuse it. ```go-html-template {{ $filters := slice (images.GaussianBlur 6) (images.Pixelate 8) }} {{ $image1 := $image1.Filter $filters }} {{ $image2 := $image2.Filter $filters }} ``` ### Colors `.Colors` returns a slice of hex strings with the dominant colors in the image using a simple histogram method. ```go-html-template {{ $colors := $image.Colors }} ``` This method is fast, but if you also scale down your images, it would be good for performance to extract the colors from the scaled down image. ### EXIF Provides an [EXIF] object containing image metadata. You may access EXIF data in JPEG, PNG, TIFF, and WebP images. To prevent errors when processing images without EXIF data, wrap the access in a [`with`] statement. ```go-html-template {{ with $image.Exif }} Date: {{ .Date }} Lat/Long: {{ .Lat }}/{{ .Long }} Tags: {{ range $k, $v := .Tags }} TAG: {{ $k }}: {{ $v }} {{ end }} {{ end }} ``` You may also access EXIF fields individually, using the [`lang.FormatNumber`] function to format the fields as needed. ```go-html-template {{ with $image.Exif }}
        {{ with .Date }}
      • Date: {{ .Format "January 02, 2006" }}
      • {{ end }} {{ with .Tags.ApertureValue }}
      • Aperture: {{ lang.FormatNumber 2 . }}
      • {{ end }} {{ with .Tags.BrightnessValue }}
      • Brightness: {{ lang.FormatNumber 2 . }}
      • {{ end }} {{ with .Tags.ExposureTime }}
      • Exposure Time: {{ . }}
      • {{ end }} {{ with .Tags.FNumber }}
      • F Number: {{ . }}
      • {{ end }} {{ with .Tags.FocalLength }}
      • Focal Length: {{ . }}
      • {{ end }} {{ with .Tags.ISOSpeedRatings }}
      • ISO Speed Ratings: {{ . }}
      • {{ end }} {{ with .Tags.LensModel }}
      • Lens Model: {{ . }}
      • {{ end }}
      {{ end }} ``` #### EXIF methods Date : (`time.Time`) Returns the image creation date/time. Format with the [`time.Format`]function. Lat : (`float64`) Returns the GPS latitude in degrees. Long : (`float64`) Returns the GPS longitude in degrees. Tags : (`exif.Tags`) Returns a collection of the available EXIF tags for this image. You may include or exclude specific tags from this collection in the [site configuration]. ## Image processing options The [`Resize`], [`Fit`], [`Fill`], and [`Crop`] methods accept a space-delimited, case-insensitive list of options. The order of the options within the list is irrelevant. ### Dimensions With the [`Resize`] method you must specify width, height, or both. The [`Fit`], [`Fill`], and [`Crop`] methods require both width and height. All dimensions are in pixels. ```go-html-template {{ $image := $image.Resize "600x" }} {{ $image := $image.Resize "x400" }} {{ $image := $image.Resize "600x400" }} {{ $image := $image.Fit "600x400" }} {{ $image := $image.Fill "600x400" }} {{ $image := $image.Crop "600x400" }} ``` ### Rotation Rotates an image counter-clockwise by the given angle. Hugo performs rotation _before_ scaling. For example, if the original image is 600x400 and you wish to rotate the image 90 degrees counter-clockwise while scaling it by 50%: ```go-html-template {{ $image = $image.Resize "200x r90" }} ``` In the example above, the width represents the desired width _after_ rotation. To rotate an image without scaling, use the dimensions of the original image: ```go-html-template {{ with .Resources.GetMatch "sunset.jpg" }} {{ with .Resize (printf "%dx%d r90" .Height .Width) }} {{ end }} {{ end }} ``` In the example above, on the second line, we have reversed width and height to reflect the desired dimensions _after_ rotation. ### Anchor When using the [`Crop`] or [`Fill`] method, the _anchor_ determines the placement of the crop box. You may specify `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`. The default value is `Smart`, which uses [Smartcrop] image analysis to determine the optimal placement of the crop box. You may override the default value in the [site configuration]. For example, if you have a 400x200 image with a bird in the upper left quadrant, you can create a 200x100 thumbnail containing the bird: ```go-html-template {{ $image.Crop "200x100 TopLeft" }} ``` If you apply [rotation](#rotation) when using the [`Crop`] or [`Fill`] method, specify the anchor relative to the rotated image. ### Target format By default, Hugo encodes the image in the source format. You may convert the image to another format by specifying `bmp`, `gif`, `jpeg`, `jpg`, `png`, `tif`, `tiff`, or `webp`. ```go-html-template {{ $image.Resize "600x webp" }} ``` To convert an image without scaling, use the dimensions of the original image: ```go-html-template {{ with .Resources.GetMatch "sunset.jpg" }} {{ with .Resize (printf "%dx%d webp" .Width .Height) }} {{ end }} {{ end }} ``` ### Quality Applicable to JPEG and WebP images, the `q` value determines the quality of the converted image. Higher values produce better quality images, while lower values produce smaller files. Set this value to a whole number between 1 and 100, inclusive. The default value is 75. You may override the default value in the [site configuration]. ```go-html-template {{ $image.Resize "600x webp q50" }} ``` ### Hint Applicable to WebP images, this option corresponds to a set of predefined encoding parameters, and is equivalent to the `-preset` flag for the [`cwebp`] encoder. Value|Example :--|:-- `drawing`|Hand or line drawing with high-contrast details `icon`|Small colorful image `photo`|Outdoor photograph with natural lighting `picture`|Indoor photograph such as a portrait `text`|Image that is primarily text The default value is `photo`. You may override the default value in the [site configuration]. ```go-html-template {{ $image.Resize "600x webp picture" }} ``` ### Background color When converting an image from a format that supports transparency (e.g., PNG) to a format that does _not_ support transparency (e.g., JPEG), you may specify the background color of the resulting image. Use either a 3-digit or 6-digit hexadecimal color code (e.g., `#00f` or `#0000ff`). The default value is `#ffffff` (white). You may override the default value in the [site configuration]. ```go-html-template {{ $image.Resize "600x jpg #b31280" }} ``` ### Resampling filter You may specify the resampling filter used when resizing an image. Commonly used resampling filters include: Filter|Description :--|:-- `Box`|Simple and fast averaging filter appropriate for downscaling `Lanczos`|High-quality resampling filter for photographic images yielding sharp results `CatmullRom`|Sharp cubic filter that is faster than the Lanczos filter while providing similar results `MitchellNetravali`|Cubic filter that produces smoother results with less ringing artifacts than CatmullRom `Linear`|Bilinear resampling filter, produces smooth output, faster than cubic filters `NearestNeighbor`|Fastest resampling filter, no antialiasing The default value is `Box`. You may override the default value in the [site configuration]. ```go-html-template {{ $image.Resize "600x400 Lanczos" }} ``` See [github.com/disintegration/imaging] for the complete list of resampling filters. If you wish to improve image quality at the expense of performance, you may wish to experiment with the alternative filters. ## Image processing examples _The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pedersen](https://bep.is) (Creative Commons Attribution-Share Alike 4.0 International license)_ {{< imgproc path="sunset.jpg" spec="resize 480x" alt="A sunset" />}} {{< imgproc path="sunset.jpg" spec="fill 120x150 left" alt="A sunset" />}} {{< imgproc path="sunset.jpg" spec="fill 120x150 right" alt="A sunset" />}} {{< imgproc path="sunset.jpg" spec="fit 120x120" alt="A sunset" />}} {{< imgproc path="sunset.jpg" spec="crop 240x240 center" alt="A sunset" />}} {{< imgproc path="sunset.jpg" spec="resize 360x q10" alt="A sunset" />}} ## Configuration See [configure imaging](/configuration/imaging). ## Smart cropping of images By default, Hugo uses the [Smartcrop] library when cropping images with the `Crop` or `Fill` methods. You can set the anchor point manually, but in most cases the `Smart` option will make a good choice. Examples using the sunset image from above: {{< imgproc path="sunset.jpg" spec="fill 200x200 smart" alt="A sunset" />}} {{< imgproc path="sunset.jpg" spec="crop 200x200 smart" alt="A sunset" />}} ## Image processing performance consideration Hugo caches processed images in the `resources` directory. If you include this directory in source control, Hugo will not have to regenerate the images in a [CI/CD](g) workflow (e.g., GitHub Pages, GitLab Pages, Netlify, etc.). This results in faster builds. If you change image processing methods or options, or if you rename or remove images, the `resources` directory will contain unused images. To remove the unused images, perform garbage collection with: ```sh hugo --gc ``` [`anchor`]: /content-management/image-processing#anchor [`Colors`]: #colors [`Crop`]: #crop [`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp [`Exif`]: #exif [`Fill`]: #fill [`Filter`]: #filter [`Fit`]: #fit [`lang.FormatNumber`]: /functions/lang/formatnumber/ [`Process`]: #process [`Resize`]: #resize [`time.Format`]: /functions/time/format/ [`with`]: /functions/go-template/with/ [EXIF]: https://en.wikipedia.org/wiki/Exif [filters]: /functions/images/filter/#image-filters [github.com/disintegration/imaging]: https://github.com/disintegration/imaging#image-resizing [site configuration]: /configuration/imaging/ [Smartcrop]: https://github.com/muesli/smartcrop#smartcrop gohugoio-hugo-6abdaca/docs/content/en/content-management/image-processing/sunset.jpg000066400000000000000000001034301507671574500312060ustar00rootroot00000000000000C   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((2"D!1aAQ"q2BR#b3r$c4DsCS-!1AQa"2bсB ?gh4u AѨAhh5 ACPh2FhH *F HdDCP! Zt5 hDCY(QK"A&INHz 5 j(mNE(4iEmj!Wi=Hv-;Jm@%;h[MJ==خm%Km6%J6'Km%Km6#;J6% m6%Km6#Kmhq6M6M- Zy6Mm-IEKm6BA8_hBKm6!K8hgAM@J hWimvhQ]р4 ( h4R AHF5(5!Ah)HR  R T  2AH:FHR  =MHt R#P AHt@M )FHH4:AH R)FQ(4>P *%5: DZe2';JQPm)AB{CFB{LUDE M(Oii]Q'mD6h-WiE m6һMvhضm#J6M6M@6im\A8[i@q6&vi}q ] AKm(GhK8R;@[h6q3m-Y Kh(Pq5q:ҴQ4hH4@ #$H2FHP#$P  ‚Z h $ C$(*C$B2C$d ! @-H4R AHdH2AJAR h C(RdH4j'A됤$j)F'4=z #m)* NC :5N';J$) Ohv[CF'FQD@ob}@Oi[Mm[Mm;LYDZ-V6A mһM3m(Gim(Gh6qob 8ij6"+^E* OhKPM+viFD&h һ@T6ҍ`R "4ZRA()"AH) R AHR C$ AH) z R( !! AHR KdZ C$Z C$h*A)HHHj(H)AY6Q N#$ FH!R2E(ɴ4>Ш=j{ME(@D}HQ5t``hh h'v mқM iMmQW(hmvhmvm[M]%Km6P#JP%Km3mvhT6Ķ8m-Ahľm[ig8qE@Am,"6h E4Y@J8PhWh('F)F?/CQ Dh  P  @H)!R  ! @R"R KR ! 2AHdT"T @% C$D JR! C$2@dH)*FHz % CP  :FѨD \ :5ђ &{LJ @&(Hm v5m(m6)@m+FQ@Oij[M[hlm{MhKm6#Km5`q-@m[h6-q,#<q#%8Ļ@%ǀ8ij@q!hȮ@viV@I%Z@I8Zn(Z*( ч~Q ђ FZj5 *2AI hHdR$2AHdTH)"R C$2C$  2@*C$2AHR RʐR H) h! jTCjRH) Ld]D C$ DCDDCHmR E5@*A &EA'Ao`'AQoR()iHShvpmP[C*'Jm6'WhvWi-B Xh} m6Ҫ&vim60 Sm-@8@~ػXq5p[g`m>@q/ A+yDW""$TZgm.>gqWx EQg\y[LR _@@R C$VKC$H H) RR! E! H1AHd ! Yhd2C$THdP!dR C$2A2C$$! DaH!TBJ CJ CE=DH*>C(% @%(DQJ2@"R)Fm(K)F$dPv %LFKvQ2mOiJD 5Q6KiۓmJ!Wi{-Q+ma]iZ2 lһ{hKm6#KlmCiڼmlAmqã`6'Chw\N8N+&q/i++qw8 _h{AWCB}@]ǰ{bL ~! H($p R @dR C$H$HdTHd!) $ R IR! H*#! htRP#$2^a)RR CJDdH !dCP ASQ AH!jH;@M Ht5=jH*%CQ2D (*%2@MDeBP&mD EJ(;J 2UP[MJ!UD>Oi+;@l-maQl KhvQ6Јf#vQ6а6CaK69awm Ha`p`Nv@q9@Ν϶qt8;'CDw\Ki\Eq:@;'C@qq{\0Hdd"!$2FHd 2@H) @Hd C$2C$2@*WdHdTH) AHdHe 2E*AQ z AQ 5 D)*AHj (! B*Ae+ ]P DZ.F D#(b؞MXEeh!l THB(Du CR D2lN aFQ&dvhQқCm2QTJhmA$Wi5DTC3mGiKm6#Kmg!KԲAI8Km@8/ Gmľ:h C6EwƎqA+`Co%@36v:EqϷK+V{h%AR; [iC$H$2AHdC$dH!$4PbH!$2\(t! C$HdH)FH) dQDH) 2C$2@*R:AQR2C( ]E!ADH*#$2@*^FQH;@MHuPR 4=zMHteC@M!GH4m CT}}H* &(MGG% (BQGeMD*?BBFQGe%eB{E-ض2eŔB@IGe!im;@[iy*Gi-;l-|6sl:6hꁳѰ@`m/@A. W9@t8W¸:p;=\~D3\Ew\N@qq&t864bHL! ($ AHdz R$4PR C$HHdH)} P!!! "#$2@-!*<Dt R$ ah)p:AH6DxTRA ,*FHdڂ2C$,MDe BmT|Ņe!HXEm(`XTJ(X^%D)}GH)=(AQ!KE5(Q EF4,Oj  (GX%CX`Qbj#(2=**>I Q2mq%Dm@"Q fq-E DXET| m6vo`8Dq]GiKm6Ј8Ļcm Hm @ Aߑy sB@>\N;:6KjqYzcQqǰ+.;N\@`>Vz! 2AH)! AHd$:FHx`$2At! :@*C1C$pH2AHdT/1Hd rH) RR!r2^$THd.LnFIt  = .FHdR$5 Oh }@Z CPh R/!#PFQa CaFKu ہ{ BFHuа!H GѶ6bq#GaTM"l*<DX5 Q E,KhvQ5 ڂWj6&(Omi]h=خm[zDm[Mm[Amm-@6 q\E< js҅K8+\qw\EŔq(q|%Eq\y:>>zDZw\Em1]bH) QH 2BHtA! C%@Hd*C$2C$!H(%#$2^ HX }_Q /Q C$,H) ! AK-AHdHT@R!!HdT C$2AJCE2AH;{ AHdQQRzp2TGKTEDHmQ C,(2bQ&5Q"IDex )4ETz`)-QE#*?(.AI )52FQ'JDYImvDYI((h!QR;CmA,6 YH6l3b!-P M8a}qR.":6Xq6e9\{e#zYNiC'KEq+Wt6t8\hYNw\N\Ie9Eq:DqRWmae>>F(գ$:FHhdHC@ dH 2FHd R \Rhc%)!X !h !Hd$ B2C$2_QjT!!aR! ]hdR  !!cP2"AKP"%dQH*=Z!*?r< ,GT{ Ȳh)H*=e/`,FQ:y leYIQ!)5!GHdeD*=(Ezr[(!QD)MDenHj,"vaZJ^FHZ&e -fM(QEQoab*!UD*"ĔCUBĶF6iZ2)-m6mvi EKmm) YHR. _h!Qq3mqvhX6qhqĻ"A\K8YHJ"qYH4+EEq,Eq.+ Ci`S1CE(t&Hd@Ht:]  S$:^HdMDDE!4P ) KcEh,dK) !dHXK(X KX.$%R ^c,AhS$e,dH)ֈk+(z ,*C%.QQToR M-.B62URi ,$;xQ6Q B"=KQR!}Q("y!e.(6"CF#(K(=QDd&FRQGԴacF?Bh*.Q*2%JvCє}Q,2bh*#(Z122e$4IDeU D2TJ4e%Jv 6MDe=Q&)(U&)(j*eðIThm6j#(QDhj7!Q&)c$QFQ64Q)tD)vY"AHuI)6DєR2TJm DٔDtْ(DAHlFQ 6dFQDdH)AHlR2E2Dقhz5 -! -ل4:AHl(RCfQJ5kRDلRCȸNE(O"6CjCƛ@h@hCƛ@hxuy$P M.SP ̪IG4e%hhB:C$MO`TkȪAQ\: .H t&$]&IE(ْ ?Q"2UFH)fJHdC. !!&H;Pj& R C%& ْ2AH) *CPR D !%HdfKAHd R f 5!Phd6`()6- A0 5 byh!ѨcQ| Fȸ-1< F5Ѩj5ʾ2PD򯌴+EyWF 'Q_SGI 網 &8AH)#$M.ZC$j&̂C#$,,5(2#!$Mț\2 mpaP.dO"¦'p!C 5ȸcȾ6[5Ⱦ3,fR3DB~AM1ԉe/RI֗鐌I+/dJ24Ut I ѕA4R&*ɦ2cFT~R\rM.TCpM1hʉ]ûeC_>ԍ)DDԐHhS &RK(").MdG0ۆ&crD,-&92O &i'~hM{Z\EkpXQOgPgʣϿស'̾de7-0JTd})?ǯhI~&>VޣI)>OH{_ 2iӕL)irfLE D)=ڻ?ۆ*XSDq4eDb&܉'L)5K,T̙4eDdų&M.NL)kL)mdk43ɬ),6MN[2dٓl[5k %ɶd,6bz `YF!wp_s>E%X=ŰZ'Y]ۑ!CfYϐ"y@5B01yTjhI1j!rbIj \&䇑<$ )!\L!FONLIH'&s161+'/VUHG!tfR3^#dQd3 D4gG rwd2SVYȟY;Kn^!юEG!+9Iz1ܤrY欽YrJ-,u0ܔx<՚YIJTVR's͎nG7%+Y: YƎSYw%Id^,5g2ߐ=% e)^'sYgO΀|Un,ʔD2ȽO=f2ȴVEn,kOCc,=g^,ԖSzp>7rZӷsE8[?щ<%g=KڹҜ1YcLG126ٚj{CSypw~Wc\Kc՜n=R&e:\hɨ6NRq~r},~=Z/ T<&ﴏjrJLw(?f!Ц2w9෶aS8VnY.>Sq,²RZӻze^WЖSq;.Ց >/pkr³we32v5Uܲd^/rZܦ2+/qTf8üY"[Yvn6A̺ qx+/rZڦk1%|S3+ü{㩙pu7M☞Mx~'po9|Cxguo7rчV_+!4aӼ}*fttn Υu#;fxɑRftˆt%"Nr k(QH("$$MQ#4% "R͢ӊrd6!9PӴA$NRD4JYqVR#r2ܛj%⼦D'rrܰqtSsK/q%zs1cw,3Q8CcȘ5%K95J?_?:*["Ǒz5_&BtO^N_#*|i?{t'Fg/UM,oאZOyy߫+MӸnky N**k| ϟk~8Z9RxkLΗ-|SN9${8K~}?:y(?H߰q{oAq5X>|9Kz|iy~NCɨC7]~vQ>g˫m_BLtV\pUǙ'fPYתfM>~i%6h3j'ô꾇8~e{?% ($#&)J||>V)6)692E5KY쿴}V9-9+\4&ϐ&H ]Sxi(jE.x6>dٟc?Q}11E>5/G4Ye|s|)Q^\MJI{}OƠ=~?W_:1{cKf'} gxïoc<ZZV~"?J]i>~童Λ̎W)tLx{/5{/?<ǎHiN)wtI C 3P\1S"TRDj4&WM:i6yznŨxy ongR4w`|pښ^=fZEzP?y?J80grׯ-7;8qw2&n)UUt?[+[^Ğ9)3kTgJ柫z}ISqRi~_#t2Xs|N?S~k1Ɏ9!O(IZjk.e>}{~m/0ey+%ߤYMI{-jAgr7'KMs0c'Q|q~kWK ֯Smn쥯}^-j<'&ßFh JukW[SZmCI7VPc-G:󤛞4R3=_SZMOV3grLJ)[m_p~kW/[K~w)fM`Ou} -S3%:oykc2VRJ-Z-M+J#{[2 joƫ1o.4r_zoukcZد_SÎ,ٟlgBOvX*iOa+Ml=PV?̾=˜13%Cn~KUЛ]J52ʭc_O֭t?}FZ2 iN/Q#6XV҃tcMG/_Q?̾9j1z,nV?Kq}'V?̆Z2?=Y4?27KSw&zOG]_Q㮇JSwnq*1Po'H^qCu~i貮%'O/U1>=_Luu:oR_]ZN롞?Ύy}OZWƭ_0\}Ǝ:~r:O,ƾn_Sq挚ZmL.䠌Ouaz\GÖ{wbr[S ZJm~r G~ԯ9pOapmrKJY'_K=- Tfg]x>GwN|KWaxqj&gNQNVt86{_\o;ӹtv(}}f3;$75|.5v?+ƲV֩%$꽫O>;K*&ge~?Syک'ck5)ԵyW8zoR]bz]?~QMvmV?G3ڌ_C,r#o~>qv?o.<5pꬱTu|:Fr8F*Y>/,m)%يI& Z)"I:͓UpmujT]N_(JAFSJiEZNըE)K # 񍨵մi71JIzoBU'ʛ])]EI8K$osbND%$u,rH8ש8㎛@G< PQn*iZz$NrI؉EJҿxq$"Ez3qJ|ytת%);\/V6גZǎo$o~}VjKrwJyy61nX/r_2u6@cdI흾-#U|&jA%^~g;_ !^GKro¥ '~TabFrKUR7WҴܞEEc%Nrh MmFU~R.4,1X6>ǂ\ybhoqݓ^a]ł:|z,]u:(b5͞LaOXTRJԽ'zwRC+rnMۻ#$۵d}ڙ[i cDx:|SlUŻ*1d-˯ b'H0.1eY˾KEQܿVRJ_<1qF=N#ʚiRFq]?YZOscUB&3%-^\ȣ$&'k1My?kk~#[U(s}8dsrW>8N2qkDqRO&',k.YCimȷExڌkL7r?V&"~ˮy>\Y'''RgM^a{ɕj'c%$<"MX sg*'qO'yrOyj&wgI[Y}S[IQMW3VKd,QnO^mFDFKRq_,TrQ&kd2a^c1Rv-"Q5?$ -VU.O'i}od䒆=NF߄7CeO짪 =?_jMOSĺQ=&9,xeT Jn۳pkuM& .<⊨_C#b'"]|(r1~2MS*'8v~WΨ5>}^i,>-FY\W Gk7qח10$q)WRkc_'^'eǬ.n|69\d]W<2|,5I|{5ߍ=W瓽UΏMӼ'IS|Q% Rm7v=ú)A\m4~G^$́5JM_ƨJ}|Nje k<]^όS}ߍaWJW2>cQgypiT|W^r916yc[t\ODZ9⟽k&ϙ85:BwKw?1/C7%8ڷҿIͼkaY#*9c*_T|=''}WPJQXoqpW,Zš95v翏MjTtyqF<{(^ ^g8XI},<51={}{SE(8icrQ{R9)S˧Oe&WGTj1j΍66NZy)*oڳ~c/KWPsɁ\5$G,Xg*_9',rduܓ^k,tXȖ^8JQUG:i{1/gXi?yfP}R_m\8q|jIK]ېN <5YrRŖ\O$SiEm.(\KI>8㔿Se?$"Fr9=jfKXK$]~=4OkE&%9 ry9,K2mk~&fϷEx4;J.kpW<(sfÝJ.$~K]N$'+jmtD6mk)os6<%@ eMds\z/H\tnI"PommnlTI(}Ưoj\RW}嚔Z@Kuv{x9tθIqΎidm?fqtVt(kk8:otAnKNܣJC"CF.-JK/ñ\]9ӓulE,9-rF,j>Ϡ|q^OPg£ԗ=znL $iw[z2-ŁM˩:#XwV LlSkq_eվI'ڊu\nX/zS_S ši%S-bJxPOIǙ()lj;y1YG&W\}OKAsԔ[t$wcŏ>Pr鮜u:k_WBb}fpQ\./Z8f8uve,pT,\Xb};ّ$FחbƷ85]BK k_0eģI>e%N,rӔq%;4#+W6#:y^IIfr%aҥQO?P&O^{ ع=ȯ7:ڔ_JcRa2ӂt,EFEFyW6ؾ,e*jҗ)WO>kÊciyG& 6}J FԲeښ]>\GlmH\]kM.|vǬWnٜ-;rI~e.>wW[0nr}/(l&Ҋ3։9]'&Ԛl]m>q5i.hGxMʢ=KpgE[qv"7֟cY5m.yӻ +SEsjӋMŞS[_QcvGr}x۬uj;Rn-;'q]: [eˤ⚎ۧ*5R\ۑ|v䔩33 p,eX[b97m"۩܊m ߨ@'&K I./ ס}4RIARra7bا5jMyw$$O->_ I?ҫeŤz[OźZur zKpَiW(i=>\2bX6RX?}ؼSmROug*+o(dاW{zwb i%wӡlŕIM/v+yGouqR\y$dX䶯uY7gAB9xm&YہyҖsE2җJ\q lQm'wNUO'UọNI0#~EcT9+dTd9(^g.9J)dw5k ]yYR]DӨmEtI)B?4,2q ӡK2xZk>]M*yydM|At)A6&>Sj*T.[Z9.)6m[חZ[qvy 3'qY15M>65O my=&$Q\P!Uڕ)mOXAE\OAKȋYAS~qM_6 dm>Eh,NQ'& ǣKnKNU*_X:obkS1oZqLh㮪bdwu͓nNrVd#ǣsdwЦ\| 3?({wdjsm_ՋJ"ĝwYi|JEwá%R9K^Q?OS.5.Rp% (E E Zٍf*?IZPȗOv\'Mᨓ{ hKUKOsPE6K4uO6\qQzRUlյ׮ٮ~jUu$GbP딧&W9.7yQo=?a,j8㑷?I9VX}Jx8-LK&;C#|5//8+iOǗ4[6GR%mYmL3qJfxڝNmLg<3ɎɒR?Joi jV1JA6SW 5Ӡ+sb):\?VjLqE/y:ؗJSj :NjߠUОj*Y8IW?4qMWbyq$[z\ ,ͮ/qAҮS"w7|0Gĝ6ү!,})I9UG (e7Ep_K"ݜs˯ \ly.KS]?<&覫@̗Ifݍ}HI֔]N>i݉,m#NrʞM;GDE"w}Spin]J;Kq%_m; ;9J JniliNbrJ|IeR~9*WqptQJ;Swv([ItSnR<ާn=U%$+yˑ"kpRZ# oޣ7.8>ZѓzrSJJ:KW'.<#pMq+~Ay0RMһ&; }]^RMn-ۻ| smE#I%Ȱ1JXi*&o4^>xR"dܐSjO,KлW)Ep`WI$K9q|svߡ9EB.B,M+$nݙӓx6ixǖzm|Zy[VH(BcOjgDcw$&g^u:>bNmء A[k!ג}5oo:՛I j 9$4dtȸLZ|r(4g$idBS^A^>%ǧ/՜;GޚKG'K"J"9*Fgf$K:c(%~Er=on2DבէȤِ;۴K,VHȼ]v8'EOkʊ^#ܝ+-V9m+b3rJ<˧\_ŕb_"Zm~9M_Iqj%q]=F)G rqKx"%}@vMMΕ`OEŒ)SmWmU>Nq>Gn.)-[uśm_k۵<-gtM7hOAt鱴Ԥy/Qpb_$Ԣ .W*bnN=WЬJG'4@jtlTK/u/;-(ܛΉ"m'%9w)Rtti^5q|ha$u% k9ovxeQƓv1r[& i[RɽCizh4"SJ׫:7m4\!^)][b>XHj#9j#Oޒnǂs|/ӏH|y O]B[W'dbA]yK _ZӦ{sJ̏nrJկ kATWQ'7Rŕ7RYɂyRK [V>hnUlZ,#s꛿IGsiI7ҕX<suԶ^kEM;t~ǿݑ[s괮ZitzNP KM.GN/1,Ity/& ~V11adP|0qE& j\Ԣ3DL0EAY@tc7$GT[qn2M:cHy%r]qw $x|NzuatdmHiNmݠi-7\ڶ5+"ODenߡW\n)>Uf7)Fm&n3%ZyJ+̾)cɒiף PإGj/PGq{ãH+x R_n8'U(Te *qQZQoSQSK2Uʟ /wg,=$f~Ac$/? \6M>G{]&<ɟ^hԫ$ю2i+m7(KRk*u5/&D,QƛwN)&5QVXG>U*yW)ͺ8b)?TM7ӅQOO\>ⶓNSKݵW,s ~[unB/)&|.x U2):մO,Uy\KVcT4ZJQIpbnW2~aG3^[Wu۩$I6 r$}l㩱Vy&cRr$gKKZK&p[n\d*qTTvAT+i@| lM\t3U0$;ߡ`=x pIW4+k_/&=(: FM}B5bX15ق.68_ǠiqR]n]J˙E(7pyW'QEq,ԥF69s+V JY-=L`N3v,JM+%brsqj^kru9'Y/`Ól饋1βoX= 3c&,Ro\x '?X$ƞ4vy&sIRs"^>G؆YMQ[$[6],,tMC+5)eKJ.2b\nYeĚ~6G.%Cc576-.Y7 / <V8kRIU_|#x*A^Jg_ˊ.wEEsZ^+L+@ONIGM]EMq݃}NzXΣ8 xX3k^jcd,X⼜[_QrK2R(4Dl'9'8#LPǏ#ƔIZm8Eɮ8Jm6U)[Ҽr#y-?x,ؗ?s 2k$9i)&PISF[NcS?GO%s5ߟ`[⸗?A9/t͹pܲ')(%nD.; &\S};: I| A%,M񦼜XAxJe6jq W|-J;*M8^)-,5tQ(J^|(ƷcM[c*?ʲ)NPUZkJ/7&6EU'XKuV4pFQ⊥vEcj9W(hg7rU84焒WTz%Ž$FO 8IHdMk8%rqT0zn\QAtDE7\}*u>&gEqr}efR_pohdRx҂JqI} rR|=1)UOxo2)FPtǻ#JK9|,clӓy3V:eQy84w3IRs܎/&T~bΞ}UI_85W`Ǫ\2Bq^IŚ4|ے8gK-62Gl~r,_4[ڒٹMiSk"%-ŋo6ֽRSߨ%RxbGд1pY3oMtrřh/438rʣrIGE>h'㌛Ms'QKd|ŦJ=iMNy:8 dq=j\QNcNKrk"-,mя-<#(J 4MDvK\8I{z8r:5}/#8NVSS/'RWUF[[_n J߭` r*0\u%&ʝՖbR3OI996v,f눱a-WygD\yF-ӵ(&|J9ܛIF8Ȝ_ PIuI.|F(5|_`U(4c[d. ߫LG%d%ձ:>:7eb[d1(-1OZ:rS{(MZ+q)JfΓ^uxRī#+R͏ =߳Z=$5ORJXW2?_y3ͩ)qT.rFmb?-bS_ez8A]jM%I5>y$O׏شTܸ.Nx86WǛ<"e0<'EYvſ݉c^m/œ;rlI]ԛ J+IJB~ݦp}KInI+☣~6Gܒ];V}T@凉^(NO!(㗃k4pŖq2ڎ\}9SY{QէǍI4щ9#NprKÂR9Te۫XvI%AR9b^'qd tlӌqJir;EBR*O<Tw5v5O%JG5C{6[JXtߚ ٥Q'˫Q&Lm:{kάY1AE#iR qOnj>WCs˭ic 9!:ɧ+]!,{2}#m 8Ț%2̧7JQwռOŠɏI}ۧϓ'BX8=%r{_0>7krY²"d6_`)R(Xi}@dR7QM}[MRj\m||pihܾE 'q㤉dˏ*rN1|nI%,Z\Yd'~RKYf疛.7ơmx-Ij8\EZ􄿱רmiEO7µ*#q6d^\Y0ǑϏ 乼J5[%%{rPQC[\Z+ea4LqW_r+d3VEwj Cx9y$yWq͋bIb_09cr9),ST8ԓsZHNTeK|$'?!7<-C\*r<-i<-Za̵1\n_6Trfrw*LnYdIW3pN-+|9!'pd#:dLϙ'I6םNqR}8⾦qRڥvM:j&:'oUn X$pFkk]/Z;TPƪi?NE*;CXvۤ oȃ$rfHU[o("}[t&꺏)T%26BꄶJ9渽M*Q6ɡ>)-nk.˶-bߙ Ǡ5 3XLa@aL`c c)8F1w䨛81Ww)?9s%} c2h͓#U1غKc)7'm.0 `=eㄺ/a#җw˖riܤf1ϋ\\Ҕݤ:1 c?$ܜq:2smɌQh?ڪ jÃȎ~KJ9=ԗ5).HGČe]7+9% PJ*N b,5y&{\嶟~0]Xn {x*'ۙ-sf0bE.= m)ʾ&1f3j4Z$1 MڈCݶ;s\1d/y1Cޜ#yr)q9/1 ^rc{'1hSlx"tc .Gcy'ᤪ7/ٰϚ1uRPOcH.*1I_=Ǐpz~F1 64.;&XfCC& I-S= yrdvc l#6.FNQ~Qסo&\#rƷswRLJƔS;xqi{Eͨq1IWrK˓'\rNrUNbTT9J*ErԤ?umWBgX^ c-=<<s9~qt1D~77,bǓ:|!Mry"F)F1ւ4Oq>F1R񚔔Jܟ?MhI7&1 R;WϙLOU4i]La *朷U&_Sri$8c>')(m~,iHX#Oj^G&_sR=od6YKǒY1.[O̫ $Z#Hl__1!Lb+|c 21c1Q`11gohugoio-hugo-6abdaca/docs/content/en/content-management/markdown-attributes.md000066400000000000000000000060001507671574500302520ustar00rootroot00000000000000--- title: Markdown attributes description: Use Markdown attributes to add HTML attributes when rendering Markdown to HTML. categories: [] keywords: [] --- ## Overview Hugo supports Markdown attributes on images and block elements including blockquotes, fenced code blocks, headings, horizontal rules, lists, paragraphs, and tables. For example: ```text This is a paragraph. {class="foo bar" id="baz"} ``` With `class` and `id` you can use shorthand notation: ```text This is a paragraph. {.foo .bar #baz} ``` Hugo renders both of these to: ```html

      This is a paragraph.

      ``` ## Block elements Update your site configuration to enable Markdown attributes for block-level elements. {{< code-toggle file=hugo >}} [markup.goldmark.parser.attribute] title = true # default is true block = true # default is false {{< /code-toggle >}} ## Standalone images By default, when the [Goldmark] Markdown renderer encounters a standalone image element (no other elements or text on the same line), it wraps the image element within a paragraph element per the [CommonMark specification]. [CommonMark specification]: https://spec.commonmark.org/current/ [Goldmark]: https://github.com/yuin/goldmark If you were to place an attribute list beneath an image element, Hugo would apply the attributes to the surrounding paragraph, not the image. To apply attributes to a standalone image element, you must disable the default wrapping behavior: {{< code-toggle file=hugo >}} [markup.goldmark.parser] wrapStandAloneImageWithinParagraph = false # default is true {{< /code-toggle >}} ## Usage You may add [global HTML attributes], or HTML attributes specific to the current element type. Consistent with its content security model, Hugo removes HTML event attributes such as `onclick` and `onmouseover`. [global HTML attributes]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes The attribute list consists of one or more key-value pairs, separated by spaces or commas, wrapped by braces. You must quote string values that contain spaces. Unlike HTML, boolean attributes must have both key and value. For example: ```text > This is a blockquote. {class="foo bar" hidden=hidden} ``` Hugo renders this to: ```html ``` In most cases, place the attribute list beneath the markup element. For headings and fenced code blocks, place the attribute list on the right. Element|Position of attribute list :--|:-- blockquote | bottom fenced code block | right heading | right horizontal rule | bottom image | bottom list | bottom paragraph | bottom table | bottom For example: ````text ## Section 1 {class=foo} ```bash {class=foo linenos=inline} declare a=1 echo "${a}" ``` This is a paragraph. {class=foo} ```` As shown above, the attribute list for fenced code blocks is not limited to HTML attributes. You can also configure syntax highlighting by passing one or more of [these options](/functions/transform/highlight/#options). gohugoio-hugo-6abdaca/docs/content/en/content-management/mathematics.md000066400000000000000000000211031507671574500265440ustar00rootroot00000000000000--- title: Mathematics in Markdown linkTitle: Mathematics description: Include mathematical equations and expressions in Markdown using LaTeX markup. categories: [] keywords: [] --- {{< new-in 0.122.0 />}} ## Overview Mathematical equations and expressions written in [LaTeX] are common in academic and scientific publications. Your browser typically renders this mathematical markup using an open-source JavaScript display engine such as [MathJax] or [KaTeX]. For example, with this LaTeX markup: ```text \[ \begin{aligned} KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\ JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2})) \end{aligned} \] ``` The MathJax display engine renders this: \[ \begin{aligned} KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\ JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2})) \end{aligned} \] Equations and expressions can be displayed inline with other text, or as standalone blocks. Block presentation is also known as "display" mode. Whether an equation or expression appears inline, or as a block, depends on the delimiters that surround the mathematical markup. Delimiters are defined in pairs, where each pair consists of an opening and closing delimiter. The opening and closing delimiters may be the same, or different. > [!note] > You can configure Hugo to render mathematical markup on the client side using the MathJax or KaTeX display engine, or you can render the markup with the [`transform.ToMath`] function while building your site. > > The first approach is described below. ## Setup Follow these instructions to include mathematical equations and expressions in your Markdown using LaTeX markup. Step 1 : Enable and configure the Goldmark [passthrough extension] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves. {{< code-toggle file=hugo copy=true >}} [markup.goldmark.extensions.passthrough] enable = true [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] inline = [['\(', '\)']] [params] math = true {{< /code-toggle >}} The configuration above enables mathematical rendering on every page unless you set the `math` parameter to `false` in front matter. To enable mathematical rendering as needed, set the `math` parameter to `false` in your site configuration, and set the `math` parameter to `true` in front matter. Use this parameter in your base template as shown in [Step 3](#step-3). > [!note] > The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration and JavaScript, you must double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting. > > See the [inline delimiters](#inline-delimiters) section for details. To disable passthrough of inline snippets, omit the `inline` key from the configuration: {{< code-toggle file=hugo >}} [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] {{< /code-toggle >}} You can define your own opening and closing delimiters, provided they match the delimiters that you set in [Step 2]. {{< code-toggle file=hugo >}} [markup.goldmark.extensions.passthrough.delimiters] block = [['@@', '@@']] inline = [['@', '@']] {{< /code-toggle >}} Step 2 : Create a _partial_ template to load MathJax or KaTeX. The example below loads MathJax, or you can use KaTeX as described in the [engines](#engines) section. ```go-html-template {file="layouts/_partials/math.html" copy=true} ``` The delimiters above must match the delimiters in your site configuration. Step 3 : Conditionally call the _partial_ template from the base template. ```go-html-template {file="layouts/baseof.html"} ... {{ if .Param "math" }} {{ partialCached "math.html" . }} {{ end }} ... ``` The example above loads the _partial_ template if you have set the `math` parameter in front matter to `true`. If you have not set the `math` parameter in front matter, the conditional statement falls back to the `math` parameter in your site configuration. Step 4 : If you set the `math` parameter to `false` in your site configuration, you must set the `math` parameter to `true` in front matter. For example: {{< code-toggle file=content/math-examples.md fm=true >}} title = 'Math examples' date = 2024-01-24T18:09:49-08:00 [params] math = true {{< /code-toggle >}} Step 5 : Include mathematical equations and expressions in Markdown using LaTeX markup. ```text {file="content/math-examples.md" copy=true} This is an inline \(a^*=x-b^*\) equation. These are block equations: \[a^*=x-b^*\] \[ a^*=x-b^* \] \[ a^*=x-b^* \] These are also block equations: $$a^*=x-b^*$$ $$ a^*=x-b^* $$ $$ a^*=x-b^* $$ ``` ## Inline delimiters The configuration, JavaScript, and examples above use the `\(...\)` delimiter pair for inline equations. The `$...$` delimiter pair is a common alternative, but using it may result in unintended formatting if you use the `$` symbol outside of math contexts. If you add the `$...$` delimiter pair to your configuration and JavaScript, you must double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting. For example: ```text I will give you \\$2 if you can solve $y = x^2$. ``` > [!note] > If you use the `$...$` delimiter pair for inline equations, and occasionally use the `$` symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437). ## Engines MathJax and KaTeX are open-source JavaScript display engines. Both engines are fast, but at the time of this writing MathJax v3.2.2 is slightly faster than KaTeX v0.16.11. > [!note] > If you use the `$...$` delimiter pair for inline equations, and occasionally use the `$` symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437). > >See the [inline delimiters](#inline-delimiters) section for details. To use KaTeX instead of MathJax, replace the _partial_ template from [Step 2] with this: ```go-html-template {file="layouts/_partials/math.html" copy=true} ``` The delimiters above must match the delimiters in your site configuration. ## Chemistry Both MathJax and KaTeX provide support for chemical equations. For example: ```text $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ ``` $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ As shown in [Step 2](#step-2) above, MathJax supports chemical equations without additional configuration. To add chemistry support to KaTeX, enable the mhchem extension as described in the KaTeX [documentation](https://katex.org/docs/libs). [`transform.ToMath`]: /functions/transform/tomath/ [KaTeX]: https://katex.org/ [LaTeX]: https://www.latex-project.org/ [MathJax]: https://www.mathjax.org/ [passthrough extension]: /configuration/markup/#passthrough gohugoio-hugo-6abdaca/docs/content/en/content-management/menus.md000066400000000000000000000053071507671574500254040ustar00rootroot00000000000000--- title: Menus description: Create menus by defining entries, localizing each entry, and rendering the resulting data structure. categories: [] keywords: [] aliases: [/extras/menus/] --- ## Overview To create a menu for your site: 1. Define the menu entries 1. [Localize](multilingual/#menus) each entry 1. Render the menu with a [template] Create multiple menus, either flat or nested. For example, create a main menu for the header, and a separate menu for the footer. There are three ways to define menu entries: 1. Automatically 1. In front matter 1. In site configuration > [!note] > Although you can use these methods in combination when defining a menu, the menu will be easier to conceptualize and maintain if you use one method throughout the site. ## Define automatically To automatically define a menu entry for each top-level [section](g) of your site, enable the section pages menu in your site configuration. {{< code-toggle file=hugo >}} sectionPagesMenu = "main" {{< /code-toggle >}} This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details. ## Define in front matter To add a page to the "main" menu: {{< code-toggle file=content/about.md fm=true >}} title = 'About' menus = 'main' {{< /code-toggle >}} Access the entry with `site.Menus.main` in your templates. See [menu templates] for details. To add a page to the "main" and "footer" menus: {{< code-toggle file=content/contact.md fm=true >}} title = 'Contact' menus = ['main','footer'] {{< /code-toggle >}} Access the entry with `site.Menus.main` and `site.Menus.footer` in your templates. See [menu templates] for details. > [!note] > The configuration key in the examples above is `menus`. The `menu` (singular) configuration key is an alias for `menus`. ### Properties Use these properties when defining menu entries in front matter: {{% include "/_common/menu-entry-properties.md" %}} ### Example This front matter menu entry demonstrates some of the available properties: {{< code-toggle file=content/products/software.md fm=true >}} title = 'Software' [menus.main] parent = 'Products' weight = 20 pre = '' [menus.main.params] class = 'center' {{< /code-toggle >}} Access the entry with `site.Menus.main` in your templates. See [menu templates] for details. ## Define in site configuration See [configure menus](/configuration/menus/). ## Localize Hugo provides two methods to localize your menu entries. See [multilingual]. ## Render See [menu templates]. [menu templates]: /templates/menu/ [multilingual]: /content-management/multilingual/#menus [template]: /templates/menu/ gohugoio-hugo-6abdaca/docs/content/en/content-management/multilingual.md000066400000000000000000000316571507671574500267720ustar00rootroot00000000000000--- title: Multilingual mode linkTitle: Multilingual description: Localize your project for each language and region, including translations, images, dates, currencies, numbers, percentages, and collation sequence. Hugo's multilingual framework supports single-host and multihost configurations. categories: [] keywords: [] aliases: [/content/multilingual/,/tutorials/create-a-multilingual-site/] --- ## Configuration See [configure languages](/configuration/languages/). ## Translate your content There are two ways to manage your content translations. Both ensure each page is assigned a language and is linked to its counterpart translations. ### Translation by file name Considering the following example: 1. `/content/about.en.md` 1. `/content/about.fr.md` The first file is assigned the English language and is linked to the second. The second file is assigned the French language and is linked to the first. Their language is assigned according to the language code added as a suffix to the file name. By having the same path and base file name, the content pieces are linked together as translated pages. > [!note] > If a file has no language code, it will be assigned the default language. ### Translation by content directory This system uses different content directories for each of the languages. Each language's `content` directory is set using the `contentDir` parameter. {{< code-toggle file=hugo >}} languages: en: weight: 10 languageName: "English" contentDir: "content/english" fr: weight: 20 languageName: "Français" contentDir: "content/french" {{< /code-toggle >}} The value of `contentDir` can be any valid path -- even absolute path references. The only restriction is that the content directories cannot overlap. Considering the following example in conjunction with the configuration above: 1. `/content/english/about.md` 1. `/content/french/about.md` The first file is assigned the English language and is linked to the second. The second file is assigned the French language and is linked to the first. Their language is assigned according to the `content` directory they are placed in. By having the same path and basename (relative to their language `content` directory), the content pieces are linked together as translated pages. ### Bypassing default linking Any pages sharing the same `translationKey` set in front matter will be linked as translated pages regardless of basename or location. Considering the following example: 1. `/content/about-us.en.md` 1. `/content/om.nn.md` 1. `/content/presentation/a-propos.fr.md` {{< code-toggle file=hugo >}} translationKey: "about" {{< /code-toggle >}} By setting the `translationKey` front matter parameter to `about` in all three pages, they will be linked as translated pages. ### Localizing permalinks Because paths and file names are used to handle linking, all translated pages will share the same URL (apart from the language subdirectory). To localize URLs: - For a regular page, set either [`slug`] or [`url`] in front matter - For a section page, set [`url`] in front matter For example, a French translation can have its own localized slug. {{< code-toggle file=content/about.fr.md fm=true >}} title: A Propos slug: "a-propos" {{< /code-toggle >}} At render, Hugo will build both `/about/` and `/fr/a-propos/` without affecting the translation link. ### Page bundles To avoid the burden of having to duplicate files, each Page Bundle inherits the resources of its linked translated pages' bundles except for the content files (Markdown files, HTML files etc.). Therefore, from within a template, the page will have access to the files from all linked pages' bundles. If, across the linked bundles, two or more files share the same basename, only one will be included and chosen as follows: - File from current language bundle, if present. - First file found across bundles by order of language `Weight`. > [!note] > Page Bundle resources follow the same language assignment logic as content files, both by file name (`image.jpg`, `image.fr.jpg`) and by directory (`english/about/header.jpg`, `french/about/header.jpg`). ## Reference translated content To create a list of links to translated content, use a template similar to the following: ```go-html-template {file="layouts/_partials/i18nlist.html"} {{ if .IsTranslated }}

      {{ i18n "translations" }}

      {{ end }} ``` The above can be put in a _partial_ template then included in any template. It will not print anything if there are no translations for a given page. The above also uses the [`i18n` function][i18func] described in the next section. ### List all available languages `.AllTranslations` on a `Page` can be used to list all translations, including the page itself. On the home page it can be used to build a language navigator: ```go-html-template {file="layouts/_partials/allLanguages.html"} ``` ## Translation of strings See the [`lang.Translate`] template function. ## Localization The following localization examples assume your site's primary language is English, with translations to French and German. {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' [languages] [languages.en] contentDir = 'content/en' languageName = 'English' weight = 1 [languages.fr] contentDir = 'content/fr' languageName = 'Français' weight = 2 [languages.de] contentDir = 'content/de' languageName = 'Deutsch' weight = 3 {{< /code-toggle >}} ### Dates With this front matter: {{< code-toggle file=hugo >}} date = 2021-11-03T12:34:56+01:00 {{< /code-toggle >}} And this template code: ```go-html-template {{ .Date | time.Format ":date_full" }} ``` The rendered page displays: Language|Value :--|:-- English|Wednesday, November 3, 2021 Français|mercredi 3 novembre 2021 Deutsch|Mittwoch, 3. November 2021 See [`time.Format`] for details. ### Currency With this template code: ```go-html-template {{ 512.5032 | lang.FormatCurrency 2 "USD" }} ``` The rendered page displays: Language|Value :--|:-- English|$512.50 Français|512,50 $US Deutsch|512,50 $ See [lang.FormatCurrency] and [lang.FormatAccounting] for details. ### Numbers With this template code: ```go-html-template {{ 512.5032 | lang.FormatNumber 2 }} ``` The rendered page displays: Language|Value :--|:-- English|512.50 Français|512,50 Deutsch|512,50 See [lang.FormatNumber] and [lang.FormatNumberCustom] for details. ### Percentages With this template code: ```go-html-template {{ 512.5032 | lang.FormatPercent 2 }} ``` The rendered page displays: Language|Value :--|:-- English|512.50% Français|512,50 % Deutsch|512,50 % See [lang.FormatPercent] for details. ## Menus Localization of menu entries depends on how you define them: - When you define menu entries [automatically] using the section pages menu, you must use translation tables to localize each entry. - When you define menu entries [in front matter], they are already localized based on the front matter itself. If the front matter values are insufficient, use translation tables to localize each entry. - When you define menu entries [in site configuration], you must create language-specific menu entries under each language key. If the names of the menu entries are insufficient, use translation tables to localize each entry. ### Create language-specific menu entries #### Method 1 -- Use a single configuration file For a simple menu with a small number of entries, use a single configuration file. For example: {{< code-toggle file=hugo >}} [languages.de] languageCode = 'de-DE' languageName = 'Deutsch' weight = 1 [[languages.de.menus.main]] name = 'Produkte' pageRef = '/products' weight = 10 [[languages.de.menus.main]] name = 'Leistungen' pageRef = '/services' weight = 20 [languages.en] languageCode = 'en-US' languageName = 'English' weight = 2 [[languages.en.menus.main]] name = 'Products' pageRef = '/products' weight = 10 [[languages.en.menus.main]] name = 'Services' pageRef = '/services' weight = 20 {{< /code-toggle >}} #### Method 2 -- Use a configuration directory With a more complex menu structure, create a [configuration directory] and split the menu entries into multiple files, one file per language. For example: ```text config/ └── _default/ ├── menus.de.toml ├── menus.en.toml └── hugo.toml ``` {{< code-toggle file=config/_default/menus.de >}} [[main]] name = 'Produkte' pageRef = '/products' weight = 10 [[main]] name = 'Leistungen' pageRef = '/services' weight = 20 {{< /code-toggle >}} {{< code-toggle file=config/_default/menus.en >}} [[main]] name = 'Products' pageRef = '/products' weight = 10 [[main]] name = 'Services' pageRef = '/services' weight = 20 {{< /code-toggle >}} ### Use translation tables When rendering the text that appears in menu each entry, the [example menu template] does this: ```go-html-template {{ or (T .Identifier) .Name | safeHTML }} ``` It queries the translation table for the current language using the menu entry's `identifier` and returns the translated string. If the translation table does not exist, or if the `identifier` key is not present in the translation table, it falls back to `name`. The `identifier` depends on how you define menu entries: - If you define the menu entry [automatically] using the section pages menu, the `identifier` is the page's `.Section`. - If you define the menu entry [in site configuration] or [in front matter], set the `identifier` property to the desired value. For example, if you define menu entries in site configuration: {{< code-toggle file=hugo >}} [[menus.main]] identifier = 'products' name = 'Products' pageRef = '/products' weight = 10 [[menus.main]] identifier = 'services' name = 'Services' pageRef = '/services' weight = 20 {{< / code-toggle >}} Create corresponding entries in the translation tables: {{< code-toggle file=i18n/de >}} products = 'Produkte' services = 'Leistungen' {{< / code-toggle >}} ## Missing translations If a string does not have a translation for the current language, Hugo will use the value from the default language. If no default value is set, an empty string will be shown. While translating a Hugo website, it can be handy to have a visual indicator of missing translations. The [`enableMissingTranslationPlaceholders` configuration option][config] will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation. > [!note] > Hugo will generate your website with these missing translation placeholders. It might not be suitable for production environments. For merging of content from other languages (i.e. missing content translations), see [lang.Merge]. To track down missing translation strings, run Hugo with the `--printI18nWarnings` flag: ```sh hugo --printI18nWarnings | grep i18n i18n|MISSING_TRANSLATION|en|wordCount ``` ## Multilingual themes support To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must meet the following criteria: - Come from the built-in `.Permalink` or `.RelPermalink` - Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}` If there is more than one language defined, the `LanguagePrefix` method will return `/en` (or whatever the current language is). If not enabled, it will be an empty string (and is therefore harmless for single-language Hugo websites). ## Generate multilingual content with `hugo new content` If you organize content with translations in the same directory: ```sh hugo new content post/test.en.md hugo new content post/test.de.md ``` If you organize content with translations in different directories: ```sh hugo new content content/en/post/test.md hugo new content content/de/post/test.md ``` [`absLangURL`]: /functions/urls/abslangurl/ [`lang.Translate`]: /functions/lang/translate [`relLangURL`]: /functions/urls/rellangurl/ [`slug`]: /content-management/urls/#slug [`time.Format`]: /functions/time/format/ [`url`]: /content-management/urls/#url [automatically]: /content-management/menus/#define-automatically [config]: /configuration/ [configuration directory]: /configuration/introduction/#configuration-directory [example menu template]: /templates/menu/#example [i18func]: /functions/lang/translate/ [in front matter]: /content-management/menus/#define-in-front-matter [in site configuration]: /content-management/menus/#define-in-site-configuration [lang.FormatAccounting]: /functions/lang/formataccounting/ [lang.FormatCurrency]: /functions/lang/formatcurrency/ [lang.FormatNumber]: /functions/lang/formatnumber/ [lang.FormatNumberCustom]: /functions/lang/formatnumbercustom/ [lang.FormatPercent]: /functions/lang/formatpercent/ [lang.Merge]: /functions/lang/merge/ gohugoio-hugo-6abdaca/docs/content/en/content-management/organization/000077500000000000000000000000001507671574500264325ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/content-management/organization/index.md000066400000000000000000000134571507671574500300750ustar00rootroot00000000000000--- title: Content organization linkTitle: Organization description: Hugo assumes that the same structure that works to organize your source content is used to organize the rendered site. categories: [] keywords: [] aliases: [/content/sections/] --- ## Page bundles Hugo `0.32` announced page-relative images and other resources packaged into `Page Bundles`. These terms are connected, and you also need to read about [Page Resources](/content-management/page-resources) and [Image Processing](/content-management/image-processing) to get the full picture. ```text content/ ├── blog/ │ ├── hugo-is-cool/ │ │ ├── images/ │ │ │ ├── funnier-cat.jpg │ │ │ └── funny-cat.jpg │ │ ├── cats-info.md │ │ └── index.md │ ├── posts/ │ │ ├── post1.md │ │ └── post2.md │ ├── 1-landscape.jpg │ ├── 2-sunset.jpg │ ├── _index.md │ ├── content-1.md │ └── content-2.md ├── 1-logo.png └── _index.md ``` The file tree above shows three bundles. Note that the home page bundle cannot contain other content pages, although other files (images etc.) are allowed. ## Organization of content source In Hugo, your content should be organized in a manner that reflects the rendered website. While Hugo supports content nested at any level, the top levels (i.e. `content/`) are special in Hugo and are considered the content type used to determine layouts etc. To read more about sections, including how to nest them, see [sections]. Without any additional configuration, the following will automatically work: ```txt . └── content └── about | └── index.md // <- https://example.org/about/ ├── posts | ├── firstpost.md // <- https://example.org/posts/firstpost/ | ├── happy | | └── ness.md // <- https://example.org/posts/happy/ness/ | └── secondpost.md // <- https://example.org/posts/secondpost/ └── quote ├── first.md // <- https://example.org/quote/first/ └── second.md // <- https://example.org/quote/second/ ``` ## Path breakdown in Hugo The following demonstrates the relationships between your content organization and the output URL structure for your Hugo website when it renders. These examples assume you are [using pretty URLs][pretty], which is the default behavior for Hugo. The examples also assume a key-value of `baseURL = "https://example.org/"` in your [site's configuration file][config]. ### Index pages: `_index.md` `_index.md` has a special role in Hugo. It allows you to add front matter and content to `home`, `section`, `taxonomy`, and `term` pages. > [!note] > Access the content and metadata within an `_index.md` file by invoking the `GetPage` method on a `Site` or `Page` object. You can create one `_index.md` for your home page and one in each of your content sections, taxonomies, and terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website: ```txt . url . ⊢--^-⊣ . path slug . ⊢--^-⊣⊢---^---⊣ . file path . ⊢------^------⊣ content/posts/_index.md ``` At build, this will output to the following destination with the associated values: ```txt url ("/posts/") ⊢-^-⊣ baseurl section ("posts") ⊢--------^---------⊣⊢-^-⊣ permalink ⊢----------^-------------⊣ https://example.org/posts/index.html ``` The [sections] can be nested as deeply as you want. The important thing to understand is that to make the section tree fully navigational, at least the lower-most section must include a content file. (i.e. `_index.md`). ### Single pages in sections Single content files in each of your sections will be rendered by a [page template]. Here is an example of a single `post` within `posts`: ```txt path ("posts/my-first-hugo-post.md") . ⊢-----------^------------⊣ . section slug . ⊢-^-⊣⊢--------^----------⊣ content/posts/my-first-hugo-post.md ``` When Hugo builds your site, the content will be output to the following destination: ```txt url ("/posts/my-first-hugo-post/") ⊢------------^----------⊣ baseurl section slug ⊢--------^--------⊣⊢-^--⊣⊢-------^---------⊣ permalink ⊢--------------------^---------------------⊣ https://example.org/posts/my-first-hugo-post/index.html ``` ## Paths explained The following concepts provide more insight into the relationship between your project's organization and the default Hugo behavior when building output for the website. ### `section` A default content type is determined by the section in which a content item is stored. `section` is determined by the location within the project's `content` directory. `section` cannot be specified or overridden in front matter. ### `slug` The `slug` is the last segment of the URL path, defined by the file name and optionally overridden by a `slug` value in front matter. See [URL Management](/content-management/urls/#slug) for details. ### `path` A content's `path` is determined by the section's path to the file. The file `path`: - Is based on the path to the content's location AND - Does not include the slug ### `url` The `url` is the entire URL path, defined by the file path and optionally overridden by a `url` value in front matter. See [URL Management](/content-management/urls/#slug) for details. [config]: /configuration/ [pretty]: /content-management/urls/#appearance [sections]: /content-management/sections/ [page template]: /templates/types/#page gohugoio-hugo-6abdaca/docs/content/en/content-management/page-bundles.md000066400000000000000000000144551507671574500266270ustar00rootroot00000000000000--- title: Page bundles description: Use page bundles to logically associate one or more resources with content. categories: [] keywords: [] --- ## Introduction A page bundle is a directory that encapsulates both content and associated resources. By way of example, this site has an "about" page and a "privacy" page: ```text content/ ├── about/ │ ├── index.md │ └── welcome.jpg └── privacy.md ``` The "about" page is a page bundle. It logically associates a resource with content by bundling them together. Resources within a page bundle are [page resources], accessible with the [`Resources`] method on the `Page` object. Page bundles are either _leaf bundles_ or _branch bundles_. leaf bundle : A _leaf bundle_ is a directory that contains an `index.md` file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants. branch bundle : A _branch bundle_ is a directory that contains an `_index.md` file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top-level directories with or without `_index.md` files are also branch bundles. This includes the home page. > [!note] > In the definitions above and the examples below, the extension of the index file depends on the [content format](g). For example, use `index.md` for Markdown content, `index.html` for HTML content, `index.adoc` for AsciiDoc content, etc. ## Comparison Page bundle characteristics vary by bundle type. | | Leaf bundle | Branch bundle | |---------------------|---------------------------------------------------------|---------------------------------------------------------| | Index file | `index.md` | `_index.md` | | Example | `content/about/index.md` | `content/posts/_index.md` | | [Page kinds](g) | `page` | `home`, `section`, `taxonomy`, or `term` | | Template types | [single] | [home], [section], [taxonomy], or [term] | | Descendant pages | None | Zero or more | | Resource location | Adjacent to the index file or in a nested subdirectory | Same as a leaf bundles, but excludes descendant bundles | | [Resource types](g) | `page`, `image`, `video`, etc. | all but `page` | Files with [resource type](g) `page` include content written in Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode. In a leaf bundle, excluding the index file, these files are only accessible as page resources. In a branch bundle, these files are only accessible as content pages. ## Leaf bundles A _leaf bundle_ is a directory that contains an `index.md` file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants. ```text content/ ├── about │ └── index.md ├── posts │ ├── my-post │ │ ├── content-1.md │ │ ├── content-2.md │ │ ├── image-1.jpg │ │ ├── image-2.png │ │ └── index.md │ └── my-other-post │ └── index.md └── another-section ├── foo.md └── not-a-leaf-bundle ├── bar.md └── another-leaf-bundle └── index.md ``` There are four leaf bundles in the example above: about : This leaf bundle does not contain any page resources. my-post : This leaf bundle contains an index file, two resources of [resource type](g) `page`, and two resources of resource type `image`. - content-1, content-2 These are resources of resource type `page`, accessible via the [`Resources`] method on the `Page` object. Hugo will not render these as individual pages. - image-1, image-2 These are resources of resource type `image`, accessible via the `Resources` method on the `Page` object my-other-post : This leaf bundle does not contain any page resources. another-leaf-bundle : This leaf bundle does not contain any page resources. > [!note] > Create leaf bundles at any depth within the `content` directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants. ## Branch bundles A _branch bundle_ is a directory that contains an `_index.md` file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top-level directories with or without `_index.md` files are also branch bundles. This includes the home page. ```text content/ ├── branch-bundle-1/ │ ├── _index.md │ ├── content-1.md │ ├── content-2.md │ ├── image-1.jpg │ └── image-2.png ├── branch-bundle-2/ │ ├── a-leaf-bundle/ │ │ └── index.md │ └── _index.md └── _index.md ``` There are three branch bundles in the example above: home page : This branch bundle contains an index file, two descendant branch bundles, and no resources. branch-bundle-1 : This branch bundle contains an index file, two resources of [resource type](g) `page`, and two resources of resource type `image`. branch-bundle-2 : This branch bundle contains an index file and a leaf bundle. > [!note] > Create branch bundles at any depth within the `content` directory. Branch bundles may have descendants. ## Headless bundles Use [build options] in front matter to create an unpublished leaf or branch bundle whose content and resources you can include in other pages. [`Resources`]: /methods/page/resources/ [build options]: /content-management/build-options/ [home]: /templates/types/#home [page resources]: /content-management/page-resources/ [section]: /templates/types/#section [single]: /templates/types/#single [taxonomy]: /templates/types/#taxonomy [term]: /templates/types/#term gohugoio-hugo-6abdaca/docs/content/en/content-management/page-resources.md000066400000000000000000000237311507671574500272020ustar00rootroot00000000000000--- title: Page resources description: Use page resources to logically associate assets with a page. categories: [] keywords: [] --- Page resources are only accessible from [page bundles](/content-management/page-bundles), those directories with `index.md` or `_index.md` files at their root. Page resources are only available to the page with which they are bundled. In this example, `first-post` is a page bundle with access to 10 page resources including audio, data, documents, images, and video. Although `second-post` is also a page bundle, it has no page resources and is unable to directly access the page resources associated with `first-post`. ```text content └── post ├── first-post │ ├── images │ │ ├── a.jpg │ │ ├── b.jpg │ │ └── c.jpg │ ├── index.md (root of page bundle) │ ├── latest.html │ ├── manual.json │ ├── notice.md │ ├── office.mp3 │ ├── pocket.mp4 │ ├── rating.pdf │ └── safety.txt └── second-post └── index.md (root of page bundle) ``` ## Examples Use any of these methods on a `Page` object to capture page resources: - [`Resources.ByType`] - [`Resources.Get`] - [`Resources.GetMatch`] - [`Resources.Match`] Once you have captured a resource, use any of the applicable [`Resource`] methods to return a value or perform an action. The following examples assume this content structure: ```text content/ └── example/ ├── data/ │ └── books.json <-- page resource ├── images/ │ ├── a.jpg <-- page resource │ └── b.jpg <-- page resource ├── snippets/ │ └── text.md <-- page resource └── index.md ``` Render a single image, and throw an error if the file does not exist: ```go-html-template {{ $path := "images/a.jpg" }} {{ with .Resources.Get $path }} {{ else }} {{ errorf "Unable to get page resource %q" $path }} {{ end }} ``` Render all images, resized to 300 px wide: ```go-html-template {{ range .Resources.ByType "image" }} {{ with .Resize "300x" }} {{ end }} {{ end }} ``` Render the markdown snippet: ```go-html-template {{ with .Resources.Get "snippets/text.md" }} {{ .Content }} {{ end }} ``` List the titles in the data file, and throw an error if the file does not exist. ```go-html-template {{ $path := "data/books.json" }} {{ with .Resources.Get $path }} {{ with . | transform.Unmarshal }}

      Books:

        {{ range . }}
      • {{ .title }}
      • {{ end }}
      {{ end }} {{ else }} {{ errorf "Unable to get page resource %q" $path }} {{ end }} ``` ## Metadata The page resources' metadata is managed from the corresponding page's front matter with an array/table parameter named `resources`. You can batch assign values using [wildcards](https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm). > [!note] > Resources of type `page` get `Title` etc. from their own front matter. name : (`string`) Sets the value returned in `Name`. > [!note] > The methods `Match`, `Get` and `GetMatch` use `Name` to match the resources. title : (`string`) Sets the value returned in `Title` params : (`map`) A map of custom key-value pairs. ### Resources metadata example {{< code-toggle file=content/example.md fm=true >}} title: Application date: 2018-01-25 resources: - src: images/sunset.jpg name: header - src: documents/photo_specs.pdf title: Photo Specifications params: icon: photo - src: documents/guide.pdf title: Instruction Guide - src: documents/checklist.pdf title: Document Checklist - src: documents/payment.docx title: Proof of Payment - src: "**.pdf" name: pdf-file-:counter params: icon: pdf - src: "**.docx" params: icon: word {{}} From the example above: - `sunset.jpg` will receive a new `Name` and can now be found with `.GetMatch "header"`. - `documents/photo_specs.pdf` will get the `photo` icon. - `documents/checklist.pdf`, `documents/guide.pdf` and `documents/payment.docx` will get `Title` as set by `title`. - Every `PDF` in the bundle except `documents/photo_specs.pdf` will get the `pdf` icon. - All `PDF` files will get a new `Name`. The `name` parameter contains a special placeholder [`:counter`](#the-counter-placeholder-in-name-and-title), so the `Name` will be `pdf-file-1`, `pdf-file-2`, `pdf-file-3`. - Every docx in the bundle will receive the `word` icon. > [!note] > The order matters; only the first set values of the `title`, `name` and `params` keys will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule. ### The `:counter` placeholder in `name` and `title` The `:counter` is a special placeholder recognized in `name` and `title` parameters `resources`. The counter starts at 1 the first time they are used in either `name` or `title`. For example, if a bundle has the resources `photo_specs.pdf`, `other_specs.pdf`, `guide.pdf` and `checklist.pdf`, and the front matter has specified the `resources` as: {{< code-toggle file=content/inspections/engine/index.md fm=true >}} title = 'Engine inspections' [[resources]] src = "*specs.pdf" title = "Specification #:counter" [[resources]] src = "**.pdf" name = "pdf-file-:counter" {{}} the `Name` and `Title` will be assigned to the resource files as follows: | Resource file | `Name` | `Title` | |-------------------|-------------------|-----------------------| | checklist.pdf | `"pdf-file-1.pdf` | `"checklist.pdf"` | | guide.pdf | `"pdf-file-2.pdf` | `"guide.pdf"` | | other\_specs.pdf | `"pdf-file-3.pdf` | `"Specification #1"` | | photo\_specs.pdf | `"pdf-file-4.pdf` | `"Specification #2"` | ## Multilingual {{< new-in 0.123.0 />}} By default, with a multilingual single-host site, Hugo does not duplicate shared page resources when building the site. > [!note] > This behavior is limited to Markdown content. Shared page resources for other [content formats] are copied into each language bundle. Consider this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = true [languages.de] languageCode = 'de-DE' languageName = 'Deutsch' weight = 1 [languages.en] languageCode = 'en-US' languageName = 'English' weight = 2 {{< /code-toggle >}} And this content: ```text content/ └── my-bundle/ ├── a.jpg <-- shared page resource ├── b.jpg <-- shared page resource ├── c.de.jpg ├── c.en.jpg ├── index.de.md └── index.en.md ``` With v0.122.0 and earlier, Hugo duplicated the shared page resources, creating copies for each language: ```text public/ ├── de/ │ ├── my-bundle/ │ │ ├── a.jpg <-- shared page resource │ │ ├── b.jpg <-- shared page resource │ │ ├── c.de.jpg │ │ └── index.html │ └── index.html ├── en/ │ ├── my-bundle/ │ │ ├── a.jpg <-- shared page resource (duplicate) │ │ ├── b.jpg <-- shared page resource (duplicate) │ │ ├── c.en.jpg │ │ └── index.html │ └── index.html └── index.html ``` With v0.123.0 and later, Hugo places the shared resources in the page bundle for the default content language: ```text public/ ├── de/ │ ├── my-bundle/ │ │ ├── a.jpg <-- shared page resource │ │ ├── b.jpg <-- shared page resource │ │ ├── c.de.jpg │ │ └── index.html │ └── index.html ├── en/ │ ├── my-bundle/ │ │ ├── c.en.jpg │ │ └── index.html │ └── index.html └── index.html ``` This approach reduces build times, storage requirements, bandwidth consumption, and deployment times, ultimately reducing cost. > [!important] > To resolve Markdown link and image destinations to the correct location, you must use link and image render hooks that capture the page resource with the [`Resources.Get`] method, and then invoke its [`RelPermalink`] method. > > In its default configuration, Hugo automatically uses the [embedded link render hook] and the [embedded image render hook] for multilingual single-host sites, specifically when the [duplication of shared page resources] feature is disabled. This is the default behavior for such sites. If custom link or image render hooks are defined by your project, modules, or themes, these will be used instead. > > You can also configure Hugo to `always` use the embedded link or image render hook, use it only as a `fallback`, or `never` use it. See [details](/configuration/markup/#renderhookslinkuseembedded). Although duplicating shared page resources is inefficient, you can enable this feature in your site configuration if desired: {{< code-toggle file=hugo >}} [markup.goldmark] duplicateResourceFiles = true {{< /code-toggle >}} [`RelPermalink`]: /methods/resource/relpermalink/ [`Resource`]: /methods/resource [`Resources.ByType`]: /methods/page/resources#bytype [`Resources.Get`]: /methods/page/resources/#get [`Resources.GetMatch`]: /methods/page/resources#getmatch [`Resources.Match`]: /methods/page/resources#match [content formats]: /content-management/formats/ [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles [embedded image render hook]: /render-hooks/images/#embedded [embedded link render hook]: /render-hooks/links/#embedded gohugoio-hugo-6abdaca/docs/content/en/content-management/related-content.md000066400000000000000000000071361507671574500273470ustar00rootroot00000000000000--- title: Related content description: List related content in "See Also" sections. categories: [] keywords: [] aliases: [/content/related/,/related/,/content-management/related/] --- Hugo uses a set of factors to identify a page's related content based on front matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo's default [related content configuration](/configuration/related-content/). ## List related content To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your template: ```go-html-template {file="layouts/_partials/related.html" copy=true} {{ with site.RegularPages.Related . | first 5 }}

      Related content:

      {{ end }} ``` The `Related` method takes one argument which may be a `Page` or an options map. The options map has these options: indices : (`slice`) The indices to search within. document : (`page`) The page for which to find related content. Required when specifying an options map. namedSlices : (`slice`) The keywords to search for, expressed as a slice of `KeyValues` using the [`keyVals`] function. fragments : (`slice`) A list of special keywords that is used for indices configured as type "fragments". This will match the [fragment](g) identifiers of the documents. A fictional example using all of the above options: ```go-html-template {{ $page := . }} {{ $opts := dict "indices" (slice "tags" "keywords") "document" $page "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date)) "fragments" (slice "heading-1" "heading-2") }} ``` > [!note] > We improved and simplified this feature in Hugo 0.111.0. Before this we had 3 different methods: `Related`, `RelatedTo` and `RelatedIndices`. Now we have only one method: `Related`. The old methods are still available but deprecated. Also see [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature. ## Index content headings Hugo can index the headings in your content and use this to find related content. You can enable this by adding a index of type `fragments` to your `related` configuration: {{< code-toggle file=hugo >}} [related] threshold = 20 includeNewer = true toLower = false [[related.indices]] name = "fragmentrefs" type = "fragments" applyFilter = true weight = 80 {{< /code-toggle >}} - The `name` maps to a optional front matter slice attribute that can be used to link from the page level down to the fragment/heading level. - If `applyFilter` is enabled, the `.HeadingsFiltered` on each page in the result will reflect the filtered headings. This is useful if you want to show the headings in the related content listing: ```go-html-template {{ $related := .Site.RegularPages.Related . | first 5 }} {{ with $related }}

      See Also

        {{ range $i, $p := . }}
      • {{ .LinkTitle }} {{ with .HeadingsFiltered }}
          {{ range . }} {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
        • {{ .Title }}
        • {{ end }}
        {{ end }}
      • {{ end }}
      {{ end }} ``` ## Configuration See [configure related content](/configuration/related-content/). [`keyVals`]: /functions/collections/keyvals/ gohugoio-hugo-6abdaca/docs/content/en/content-management/sections.md000066400000000000000000000114441507671574500261030ustar00rootroot00000000000000--- title: Sections description: Organize content into sections. categories: [] keywords: [] aliases: [/content/sections/] --- ## Overview {{% glossary-term "section" %}} ```text content/ ├── articles/ <-- section (top-level directory) │ ├── 2022/ │ │ ├── article-1/ │ │ │ ├── cover.jpg │ │ │ └── index.md │ │ └── article-2.md │ └── 2023/ │ ├── article-3.md │ └── article-4.md ├── products/ <-- section (top-level directory) │ ├── product-1/ <-- section (has _index.md file) │ │ ├── benefits/ <-- section (has _index.md file) │ │ │ ├── _index.md │ │ │ ├── benefit-1.md │ │ │ └── benefit-2.md │ │ ├── features/ <-- section (has _index.md file) │ │ │ ├── _index.md │ │ │ ├── feature-1.md │ │ │ └── feature-2.md │ │ └── _index.md │ └── product-2/ <-- section (has _index.md file) │ ├── benefits/ <-- section (has _index.md file) │ │ ├── _index.md │ │ ├── benefit-1.md │ │ └── benefit-2.md │ ├── features/ <-- section (has _index.md file) │ │ ├── _index.md │ │ ├── feature-1.md │ │ └── feature-2.md │ └── _index.md ├── _index.md └── about.md ``` The example above has two top-level sections: articles and products. None of the directories under articles are sections, while all of the directories under products are sections. A section within a section is a known as a nested section or subsection. ## Explanation Sections and non-sections behave differently.  |Sections|Non-sections :--|:-:|:-: Directory names become URL segments|:heavy_check_mark:|:heavy_check_mark: Have logical ancestors and descendants|:heavy_check_mark:|:x: Have list pages|:heavy_check_mark:|:x: With the file structure from the [example above](#overview): 1. The list page for the articles section includes all articles, regardless of directory structure; none of the subdirectories are sections. 1. The articles/2022 and articles/2023 directories do not have list pages; they are not sections. 1. The list page for the products section, by default, includes product-1 and product-2, but not their descendant pages. To include descendant pages, use the `RegularPagesRecursive` method instead of the `Pages` method in the _section_ template. 1. All directories in the products section have list pages; each directory is a section. ## Template selection Hugo has a defined [lookup order] to determine which template to use when rendering a page. The [lookup rules] consider the top-level section name; subsection names are not considered when selecting a template. With the file structure from the [example above](#overview): Content directory|Section template :--|:-- `content/products`|`layouts/products/section.html` `content/products/product-1`|`layouts/products/section.html` `content/products/product-1/benefits`|`layouts/products/section.html` Content directory|Page template :--|:-- `content/products`|`layouts/products/page.html` `content/products/product-1`|`layouts/products/page.html` `content/products/product-1/benefits`|`layouts/products/page.html` If you need to use a different template for a subsection, specify `type` and/or `layout` in front matter. ## Ancestors and descendants A section has one or more ancestors (including the home page), and zero or more descendants. With the file structure from the [example above](#overview): ```text content/products/product-1/benefits/benefit-1.md ``` The content file (benefit-1.md) has four ancestors: benefits, product-1, products, and the home page. This logical relationship allows us to use the `.Parent` and `.Ancestors` methods to traverse the site structure. For example, use the `.Ancestors` method to render breadcrumb navigation. ```go-html-template {file="layouts/_partials/breadcrumb.html"} ``` With this CSS: ```css .breadcrumb ol { padding-left: 0; } .breadcrumb li { display: inline; } .breadcrumb li:not(:last-child)::after { content: "»"; } ``` Hugo renders this, where each breadcrumb is a link to the corresponding page: ```text Home » Products » Product 1 » Benefits » Benefit 1 ``` [lookup order]: /templates/lookup-order/ [lookup rules]: /templates/lookup-order/#lookup-rules gohugoio-hugo-6abdaca/docs/content/en/content-management/shortcodes.md000066400000000000000000000166601507671574500264360ustar00rootroot00000000000000--- title: Shortcodes description: Use embedded, custom, or inline shortcodes to insert elements such as videos, images, and social media embeds into your content. categories: [] keywords: [] aliases: [/extras/shortcodes/] --- ## Introduction {{% glossary-term shortcode %}} There are three types of shortcodes: embedded, custom, and inline. ## Embedded Hugo's embedded shortcodes are pre-defined templates within the application. Refer to each shortcode's documentation for specific usage instructions and available arguments. {{% list-pages-in-section path=/shortcodes %}} ## Custom Create custom shortcodes to simplify and standardize content creation. For example, the following _shortcode_ template generates an audio player using a [global resource](g): ```go-html-template {file="layouts/_shortcodes/audio.html"} {{ with resources.Get (.Get "src") }} {{ end }} ``` Then call the shortcode from within markup: ```text {file="content/example.md"} {{}} ``` Learn more about creating shortcodes in the [shortcode templates] section. ## Inline An inline shortcode is a _shortcode_ template defined within content. Hugo's security model is based on the premise that template and configuration authors are trusted, but content authors are not. This model enables generation of HTML output safe against code injection. To conform with this security model, creating _shortcode_ templates within content is disabled by default. If you trust your content authors, you can enable this functionality in your site's configuration: {{< code-toggle file=hugo >}} [security] enableInlineShortcodes = true {{< /code-toggle >}} For more information see [configure security](/configuration/security). The following example demonstrates an inline shortcode, `date.inline`, that accepts a single positional argument: a date/time [layout string]. ```text {file="content/example.md"} Today is {{}} {{- now | time.Format (.Get 0) -}} {{}}. Today is {{}}. ``` In the example above, the inline shortcode is executed twice: once upon definition and again when subsequently called. Hugo renders this to: ```html

      Today is Jan 30, 2025.

      Today is Thursday, January 30, 2025

      ``` Inline shortcodes process their inner content within the same context as regular _shortcode_ templates, allowing you to use any available [shortcode method]. > [!note] > You cannot [nest](#nesting) inline shortcodes. Learn more about creating shortcodes in the [shortcode templates] section. ## Calling Shortcode calls involve three syntactical elements: tags, arguments, and notation. ### Tags Some shortcodes expect content between opening and closing tags. For example, the embedded [`details`] shortcode requires an opening and closing tag: ```text {{}} This is a **bold** word. {{}} ``` Some shortcodes do not accept content. For example, the embedded [`instagram`] shortcode requires a single _positional_ argument: ```text {{}} ``` Some shortcodes optionally accept content. For example, you can call the embedded [`qr`] shortcode with content: ```text {{}} https://gohugo.io {{}} ``` Or use the self-closing syntax with a trailing slash to pass the text as an argument: ```text {{}} ``` Refer to each shortcode's documentation for specific usage instructions and available arguments. ### Arguments Shortcode arguments can be either _named_ or _positional_. Named arguments are passed as case-sensitive key-value pairs, as seen in this example with the embedded [`figure`] shortcode. The `src` argument, for instance, is required. ```text {{}} ``` Positional arguments, on the other hand, are determined by their position. The embedded `instagram` shortcode, for example, expects the first argument to be the Instagram post ID. ```text {{}} ``` Shortcode arguments are space-delimited, and arguments with internal spaces must be quoted. ```text {{}} ``` Shortcodes accept [scalar](g) arguments, one of [string](g), [integer](g), [floating point](g), or [boolean](g). ```text {{}} ``` You can optionally use multiple lines when providing several arguments to a shortcode for better readability: ```text {{}} ``` Use a [raw string literal](g) if you need to pass a multiline string: ```text {{HTML
      , and a new line with a "quoted string".` */>}} ``` Shortcodes can accept named arguments, positional arguments, or both, but you must use either named or positional arguments exclusively within a single shortcode call; mixing them is not allowed. Refer to each shortcode's documentation for specific usage instructions and available arguments. ### Notation Shortcodes can be called using two different notations, distinguished by their tag delimiters. Notation|Example :--|:-- Markdown|`{{%/* foo */%}} ## Section 1 {{%/* /foo */%}}` Standard|`{{}} ## Section 2 {{}}` #### Markdown notation Hugo processes the shortcode before the page content is rendered by the Markdown renderer. This means, for instance, that Markdown headings inside a Markdown-notation shortcode will be included when invoking the [`TableOfContents`] method on the `Page` object. #### Standard notation With standard notation, Hugo processes the shortcode separately, merging the output into the page content after Markdown rendering. This means, for instance, that Markdown headings inside a standard-notation shortcode will be excluded when invoking the `TableOfContents` method on the `Page` object. By way of example, with this _shortcode_ template: ```go-html-template {file="layouts/_shortcodes/foo.html"} {{ .Inner }} ``` And this markdown: ```text {file="content/example.md"} {{%/* foo */%}} ## Section 1 {{%/* /foo */%}} {{}} ## Section 2 {{}} ``` Hugo renders this HTML: ```html

      Section 1

      ## Section 2 ``` In the above, "Section 1" will be included when invoking the `TableOfContents` method, while "Section 2" will not. The shortcode author determines which notation to use. Consult each shortcode's documentation for specific usage instructions and available arguments. ## Nesting Shortcodes (excluding [inline](#inline) shortcodes) can be nested, creating parent-child relationships. For example, a gallery shortcode might contain several image shortcodes: ```text {file="content/example.md"} {{}} {{}} {{}} {{}} {{}} ``` The [shortcode templates][nesting] section provides a detailed explanation and examples. [`details`]: /shortcodes/details [`figure`]: /shortcodes/figure [`instagram`]: /shortcodes/instagram [`qr`]: /shortcodes/qr [`TableOfContents`]: /methods/page/tableofcontents/ [layout string]: /functions/time/format/#layout-string [nesting]: /templates/shortcode/#nesting [shortcode method]: /templates/shortcode/#methods [shortcode templates]: /templates/shortcode/ gohugoio-hugo-6abdaca/docs/content/en/content-management/summaries.md000066400000000000000000000061601507671574500262600ustar00rootroot00000000000000--- title: Content summaries linkTitle: Summaries description: Create and render content summaries. categories: [] keywords: [] aliases: [/content/summaries/,/content-management/content-summaries/] --- You can define a summary manually, in front matter, or automatically. A manual summary takes precedence over a front matter summary, and a front matter summary takes precedence over an automatic summary. Review the [comparison table](#comparison) below to understand the characteristics of each summary type. ## Manual summary Use a `` divider to indicate the end of the summary. Hugo will not render the summary divider itself. ```text {file="content/example.md"} +++ title: 'Example' date: 2024-05-26T09:10:33-07:00 +++ This is the first paragraph. This is the second paragraph. ``` When using the Emacs Org Mode [content format], use a `# more` divider to indicate the end of the summary. [content format]: /content-management/formats/ ## Front matter summary Use front matter to define a summary independent of content. ```text {file="content/example.md"} +++ title: 'Example' date: 2024-05-26T09:10:33-07:00 summary: 'This summary is independent of the content.' +++ This is the first paragraph. This is the second paragraph. ``` ## Automatic summary If you do not define the summary manually or in front matter, Hugo automatically defines the summary based on the [`summaryLength`] in your site configuration. [`summaryLength`]: /configuration/all/#summarylength ```text {file="content/example.md"} +++ title: 'Example' date: 2024-05-26T09:10:33-07:00 +++ This is the first paragraph. This is the second paragraph. This is the third paragraph. ``` For example, with a `summaryLength` of 7, the automatic summary will be: ```html

      This is the first paragraph.

      This is the second paragraph.

      ``` ## Comparison Each summary type has different characteristics: Type|Precedence|Renders markdown|Renders shortcodes|Wraps single lines with `

      ` :--|:-:|:-:|:-:|:-: Manual|1|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: Front matter|2|:heavy_check_mark:|:x:|:x: Automatic|3|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: ## Rendering Render the summary in a template by calling the [`Summary`] method on a `Page` object. [`Summary`]: /methods/page/summary ```go-html-template {{ range site.RegularPages }}

      {{ .LinkTitle }}

      {{ .Summary }} {{ if .Truncated }} More ... {{ end }}
      {{ end }} ``` ## Alternative Instead of calling the `Summary` method on a `Page` object, use the [`strings.Truncate`] function for granular control of the summary length. For example: [`strings.Truncate`]: /functions/strings/truncate/ ```go-html-template {{ range site.RegularPages }}

      {{ .LinkTitle }}

      {{ .Content | strings.Truncate 42 }}
      {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/content-management/syntax-highlighting.md000066400000000000000000000043521507671574500302450ustar00rootroot00000000000000--- title: Syntax highlighting description: Add syntax highlighting to code examples. categories: [] keywords: [highlight] aliases: [/extras/highlighting/,/extras/highlight/,/tools/syntax-highlighting/] --- Hugo provides several methods to add syntax highlighting to code examples: - Use the [`transform.Highlight`] function within your templates - Use the [`highlight`] shortcode with any [content format](g) - Use fenced code blocks with the Markdown content format [`transform.Highlight`]: /functions/transform/highlight/ [`highlight`]: /shortcodes/highlight/ ## Fenced code blocks In its default configuration, Hugo highlights code examples within fenced code blocks, following this form: ````text {file="content/example.md"} ```LANG [OPTIONS] CODE ``` ```` CODE : The code to highlight. LANG : The language of the code to highlight. Choose from one of the [supported languages]. This value is case-insensitive. OPTIONS : One or more space-separated or comma-separated key-value pairs wrapped in braces. Set default values for each option in your [site configuration]. The key names are case-insensitive. [supported languages]: #languages [site configuration]: /configuration/markup/#highlight For example, with this Markdown: ````text {file="content/example.md"} ```go {linenos=inline hl_lines=[3,"6-8"] style=emacs} package main import "fmt" func main() { for i := 0; i < 3; i++ { fmt.Println("Value of i:", i) } } ``` ```` Hugo renders this: ```go {linenos=inline, hl_lines=[3, "6-8"], style=emacs} package main import "fmt" func main() { for i := 0; i < 3; i++ { fmt.Println("Value of i:", i) } } ``` ## Options {{% include "_common/syntax-highlighting-options.md" %}} ## Escaping When documenting shortcode usage, escape the tag delimiters: ````text {file="content/example.md"} ```text {linenos=inline} {{}} {{%/*/* shortcode-2 */*/%}} ``` ```` Hugo renders this to: ```text {linenos=inline} {{}} {{%/* shortcode-2 */%}} ``` ## Languages These are the supported languages. Use one of the identifiers, not the language name, when specifying a language for: - The [`transform.Highlight`] function - The [`highlight`] shortcode - Fenced code blocks {{< chroma-lexers >}} gohugoio-hugo-6abdaca/docs/content/en/content-management/taxonomies.md000066400000000000000000000140541507671574500264420ustar00rootroot00000000000000--- title: Taxonomies description: Hugo includes support for user-defined taxonomies. categories: [] keywords: [] aliases: [/taxonomies/overview/,/taxonomies/usage/,/indexes/overview/,/doc/indexes/,/extras/indexes] --- ## What is a taxonomy? Hugo includes support for user-defined groupings of content called **taxonomies**. Taxonomies are classifications of logical relationships between content. ### Definitions Taxonomy : A categorization that can be used to classify content Term : A key within the taxonomy Value : A piece of content assigned to a term ## Example taxonomy: movie website Let's assume you are making a website about movies. You may want to include the following taxonomies: - Actors - Directors - Studios - Genre - Year - Awards Then, in each of the movies, you would specify terms for each of these taxonomies (i.e., in the front matter of each of your movie content files). From these terms, Hugo would automatically create pages for each Actor, Director, Studio, Genre, Year, and Award, with each listing all of the Movies that matched that specific Actor, Director, Studio, Genre, Year, and Award. ### Movie taxonomy organization To continue with the example of a movie site, the following demonstrates content relationships from the perspective of the taxonomy: ```txt Actor <- Taxonomy Bruce Willis <- Term The Sixth Sense <- Value Unbreakable <- Value Moonrise Kingdom <- Value Samuel L. Jackson <- Term Unbreakable <- Value The Avengers <- Value xXx <- Value ``` From the perspective of the content, the relationships would appear differently, although the data and labels used are the same: ```txt Unbreakable <- Value Actors <- Taxonomy Bruce Willis <- Term Samuel L. Jackson <- Term Director <- Taxonomy M. Night Shyamalan <- Term ... Moonrise Kingdom <- Value Actors <- Taxonomy Bruce Willis <- Term Bill Murray <- Term Director <- Taxonomy Wes Anderson <- Term ... ``` ### Default destinations When taxonomies are used Hugo will automatically create both a page listing all the taxonomy's terms and individual pages with lists of content associated with each term. For example, a `categories` taxonomy declared in your configuration and used in your content front matter will create the following pages: - A single page at `example.com/categories/` that lists all the terms within the taxonomy - Individual taxonomy list pages (e.g., `/categories/development/`) for each of the terms that shows a listing of all pages marked as part of that taxonomy within any content file's front matter ## Configuration See [configure taxonomies](/configuration/taxonomies/). ## Assign terms to content To assign one or more terms to a page, create a front matter field using the plural name of the taxonomy, then add terms to the corresponding array. For example: {{< code-toggle file=content/example.md fm=true >}} title = 'Example' tags = ['Tag A','Tag B'] categories = ['Category A','Category B'] {{< /code-toggle >}} ## Order taxonomies A content file can assign weight for each of its associate taxonomies. Taxonomic weight can be used for sorting or ordering content in taxonomy templates and is declared in a content file's front matter. The convention for declaring taxonomic weight is `taxonomyname_weight`. The following show a piece of content that has a weight of 22, which can be used for ordering purposes when rendering the pages assigned to the "a", "b" and "c" values of the `tags` taxonomy. It has also been assigned the weight of 44 when rendering the "d" category page. ### Example: taxonomic `weight` {{< code-toggle file=hugo >}} title = "foo" tags = [ "a", "b", "c" ] tags_weight = 22 categories = ["d"] categories_weight = 44 {{}} By using taxonomic weight, the same piece of content can appear in different positions in different taxonomies. ## Metadata Display metadata about each term by creating a corresponding branch bundle in the `content` directory. For example, create an "authors" taxonomy: {{< code-toggle file=hugo >}} [taxonomies] author = 'authors' {{< /code-toggle >}} Then create content with one [branch bundle](g) for each term: ```text content/ └── authors/ ├── jsmith/ │ ├── _index.md │ └── portrait.jpg └── rjones/ ├── _index.md └── portrait.jpg ``` Then add front matter to each term page: {{< code-toggle file=content/authors/jsmith/_index.md fm=true >}} title = "John Smith" affiliation = "University of Chicago" {{< /code-toggle >}} Then create a _taxonomy_ template specific to the "authors" taxonomy: ```go-html-template {file="layouts/authors/taxonomy.html"} {{ define "main" }}

      {{ .Title }}

      {{ .Content }} {{ range .Data.Terms.Alphabetical }}

      {{ .Page.LinkTitle }}

      Affiliation: {{ .Page.Params.Affiliation }}

      {{ with .Page.Resources.Get "portrait.jpg" }} {{ with .Fill "100x100" }} portrait {{ end }} {{ end }} {{ end }} {{ end }} ``` In the example above we list each author including their affiliation and portrait. Or create a _term_ template specific to the "authors" taxonomy: ```go-html-template {file="layouts/authors/term.html"} {{ define "main" }}

      {{ .Title }}

      Affiliation: {{ .Params.affiliation }}

      {{ with .Resources.Get "portrait.jpg" }} {{ with .Fill "100x100" }} portrait {{ end }} {{ end }} {{ .Content }} {{ range .Pages }}

      {{ .LinkTitle }}

      {{ end }} {{ end }} ``` In the example above we display the author including their affiliation and portrait, then a list of associated content. gohugoio-hugo-6abdaca/docs/content/en/content-management/urls.md000066400000000000000000000207151507671574500252420ustar00rootroot00000000000000--- title: URL management description: Control the structure and appearance of URLs through front matter entries and settings in your site configuration. categories: [] keywords: [] aliases: [/extras/permalinks/,/extras/aliases/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/] --- ## Overview By default, when Hugo renders a page, the resulting URL matches the file path within the `content` directory. For example: ```text content/posts/post-1.md → https://example.org/posts/post-1/ ``` You can change the structure and appearance of URLs with front matter values and site configuration options. ## Front matter ### `slug` Set the `slug` in front matter to override the last segment of the path. This front matter field is not applicable to `home`, `section`, `taxonomy`, or `term` pages. {{< code-toggle file=content/posts/post-1.md fm=true >}} title = 'My First Post' slug = 'my-first-post' {{< /code-toggle >}} The resulting URL will be: ```text https://example.org/posts/my-first-post/ ``` ### `url` Set the `url` in front matter to override the entire path. Use this with either regular pages or section pages. > [!note] > Hugo does not sanitize the `url` front matter field, allowing you to generate: > > - File paths that contain characters reserved by the operating system. For example, file paths on Windows may not contain any of these [reserved characters]. Hugo throws an error if a file path includes a character reserved by the current operating system. > - URLs that contain disallowed characters. For example, the less than sign (`<`) is not allowed in a URL. If you set both `slug` and `url` in front matter, the `url` value takes precedence. #### Include a colon {{< new-in 0.136.0 />}} If you need to include a colon in the `url` front matter field, escape it with backslash characters. Use one backslash if you wrap the string within single quotes, or use two backslashes if you wrap the string within double quotes. With YAML front matter, use a single backslash if you omit quotation marks. For example, with this front matter: {{< code-toggle file=content/example.md fm=true >}} title: Example url: "my\\:example" {{< /code-toggle >}} The resulting URL will be: ```text https://example.org/my:example/ ``` As described above, this will fail on Windows because the colon (`:`) is a reserved character. #### File extensions With this front matter: {{< code-toggle file=content/posts/post-1.md fm=true >}} title = 'My First Article' url = 'articles/my-first-article' {{< /code-toggle >}} The resulting URL will be: ```text https://example.org/articles/my-first-article/ ``` If you include a file extension: {{< code-toggle file=content/posts/post-1.md fm=true >}} title = 'My First Article' url = 'articles/my-first-article.html' {{< /code-toggle >}} The resulting URL will be: ```text https://example.org/articles/my-first-article.html ``` #### Leading slashes With monolingual sites, `url` values with or without a leading slash are relative to the [`baseURL`]. With multilingual sites, `url` values with a leading slash are relative to the `baseURL`, and `url` values without a leading slash are relative to the `baseURL` plus the language prefix. Site type|Front matter `url`|Resulting URL :--|:--|:-- monolingual|`/about`|`https://example.org/about/` monolingual|`about`|`https://example.org/about/` multilingual|`/about`|`https://example.org/about/` multilingual|`about`|`https://example.org/de/about/` #### Permalinks tokens in front matter {{< new-in 0.131.0 />}} You can also use tokens when setting the `url` value. This is typically used in `cascade` sections: {{< code-toggle file=content/foo/bar/_index.md fm=true >}} title ="Bar" [[cascade]] url = "/:sections[last]/:slug" {{< /code-toggle >}} Use any of these tokens: {{% include "/_common/permalink-tokens.md" %}} ## Site configuration ### Permalinks See [configure permalinks](/configuration/permalinks). ### Appearance See [configure ugly URLs](/configuration/ugly-urls/). ### Post-processing Hugo provides two mutually exclusive configuration options to alter URLs _after_ it renders a page. #### Canonical URLs > [!caution] > This is a legacy configuration option, superseded by template functions and Markdown render hooks, and will likely be [removed in a future release]. {class="!mt-6"} If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then prepends the `baseURL` to create absolute URLs. ```html ``` This is an imperfect, brute force approach that can affect content as well as HTML attributes. As noted above, this is a legacy configuration option that will likely be removed in a future release. To enable: {{< code-toggle file=hugo >}} canonifyURLs = true {{< /code-toggle >}} #### Relative URLs > [!caution] > Do not enable this option unless you are creating a serverless site, navigable via the file system. {class="!mt-6"} If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then transforms the URL to be relative to the current page. For example, when rendering `content/posts/post-1`: ```html ``` This is an imperfect, brute force approach that can affect content as well as HTML attributes. As noted above, do not enable this option unless you are creating a serverless site. To enable: {{< code-toggle file=hugo >}} relativeURLs = true {{< /code-toggle >}} ## Aliases Create redirects from old URLs to new URLs with aliases: - An alias with a leading slash is relative to the `baseURL` - An alias without a leading slash is relative to the current directory ### Examples {#alias-examples} Change the file name of an existing page, and create an alias from the previous URL to the new URL: {{< code-toggle file=content/posts/new-file-name.md fm=true >}} aliases = ['/posts/previous-file-name'] {{< /code-toggle >}} Each of these directory-relative aliases is equivalent to the site-relative alias above: - `previous-file-name` - `./previous-file-name` - `../posts/previous-file-name` You can create more than one alias to the current page: {{< code-toggle file=content/posts/new-file-name.md fm=true >}} aliases = ['previous-file-name','original-file-name'] {{< /code-toggle >}} In a multilingual site, use a directory-relative alias, or include the language prefix with a site-relative alias: {{< code-toggle file=content/posts/new-file-name.de.md fm=true >}} aliases = ['/de/posts/previous-file-name'] {{< /code-toggle >}} ### How aliases work Using the first example above, Hugo generates the following site structure: ```text public/ ├── posts/ │ ├── new-file-name/ │ │ └── index.html │ ├── previous-file-name/ │ │ └── index.html │ └── index.html └── index.html ``` The alias from the previous URL to the new URL is a client-side redirect: ```html {file="posts/previous-file-name/index.html"} https://example.org/posts/new-file-name/ ``` Collectively, the elements in the `head` section: - Tell search engines that the new URL is canonical - Tell search engines not to index the previous URL - Tell the browser to redirect to the new URL Hugo renders alias files before rendering pages. A new page with the previous file name will overwrite the alias, as expected. ### Customize To override Hugo's embedded `alias` template, copy the [source code] to a file with the same name in the `layouts` directory. The template receives the following context: Permalink : The link to the page being aliased. Page : The Page data for the page being aliased. [`baseURL`]: /configuration/all/#baseurl [removed in a future release]: https://github.com/gohugoio/hugo/issues/4733 [reserved characters]: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions [source code]: {{% eturl alias %}} gohugoio-hugo-6abdaca/docs/content/en/contribute/000077500000000000000000000000001507671574500223205ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/contribute/_index.md000066400000000000000000000003701507671574500241100ustar00rootroot00000000000000--- title: Contribute to the Hugo project linkTitle: Contribute description: Contribute to development, documentation, and themes. categories: [] keywords: [] weight: 10 aliases: [/tutorials/how-to-contribute-to-hugo/,/community/contributing/] --- gohugoio-hugo-6abdaca/docs/content/en/contribute/development.md000066400000000000000000000117711507671574500251730ustar00rootroot00000000000000--- title: Development description: Contribute to the development of Hugo. categories: [] keywords: [] --- ## Introduction You can contribute to the Hugo project by: - Answering questions on the [forum] - Improving the [documentation] - Monitoring the [issue queue] - Creating or improving [themes] - Squashing [bugs] Please submit documentation issues and pull requests to the [documentation repository]. If you have an idea for an enhancement or new feature, create a new topic on the [forum] in the "Feature" category. This will help you to: - Determine if the capability already exists - Measure interest - Refine the concept If there is sufficient interest, [create a proposal]. Do not submit a pull request until the project lead accepts the proposal. For a complete guide to contributing to Hugo, see the [Contribution Guide]. ## Prerequisites To build the extended or extended/deploy edition from source you must: 1. Install [Git] 1. Install [Go] version 1.23.0 or later 1. Install a C compiler, either [GCC] or [Clang] 1. Update your `PATH` environment variable as described in the [Go documentation] > [!note] > See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows. ## GitHub workflow > [!note] > This section assumes that you have a working knowledge of Go, Git and GitHub, and are comfortable working on the command line. Use this workflow to create and submit pull requests. Step 1 : Fork the [project repository]. Step 2 : Clone your fork. Step 3 : Create a new branch with a descriptive name that includes the corresponding issue number. For a new feature: ```sh git checkout -b feat/implement-some-feature-99999 ``` For a bug fix: ```sh git checkout -b fix/fix-some-bug-99999 ``` Step 4 : Make changes. Step 5 : Compile and install. To compile and install the standard edition: ```text go install ``` To compile and install the extended edition: ```text CGO_ENABLED=1 go install -tags extended ``` To compile and install the extended/deploy edition: ```text CGO_ENABLED=1 go install -tags extended,withdeploy ``` Step 6 : Test your changes: ```text go test ./... ``` Step 7 : Commit your changes with a descriptive commit message: - Provide a summary on the first line, typically 50 characters or less, followed by a blank line. - Begin the summary with one of content, theme, config, all, or misc, followed by a colon, a space, and a brief description of the change beginning with a capital letter - Use imperative present tense - See the [commit message guidelines] for requirements - Optionally, provide a detailed description where each line is 72 characters or less, followed by a blank line. - Add one or more "Fixes" or "Closes" keywords, each on its own line, referencing the [issues] addressed by this change. For example: ```sh git commit -m "tpl/strings: Create wrap function The strings.Wrap function wraps a string into one or more lines, splitting the string after the given number of characters, but not splitting in the middle of a word. Fixes #99998 Closes #99999" ``` Step 8 : Push the new branch to your fork of the documentation repository. Step 9 : Visit the [project repository] and create a pull request (PR). Step 10 : A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR. ## Building from source You can build, install, and test Hugo at any point in its development history. The examples below build and install the extended edition of Hugo. To build and install the latest release: ```sh CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest ``` To build and install a specific release: ```sh CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.148.0 ``` To build and install at the latest commit on the master branch: ```sh CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@master ``` To build and install at a specific commit: ```sh CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@c0d9beb ``` [bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug [Clang]: https://clang.llvm.org/ [commit message guidelines]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#git-commit-message-guidelines [Contribution Guide]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md [create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md [documentation]: /documentation [documentation repository]: https://github.com/gohugoio/hugoDocs [forum]: https://discourse.gohugo.io [GCC]: https://gcc.gnu.org/ [Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git [Go]: https://go.dev/doc/install [Go documentation]: https://go.dev/doc/code#Command [issue queue]: https://github.com/gohugoio/hugo/issues [issues]: https://github.com/gohugoio/hugo/issues [project repository]: https://github.com/gohugoio/hugo/ [themes]: https://themes.gohugo.io/ gohugoio-hugo-6abdaca/docs/content/en/contribute/documentation.md000066400000000000000000000403431507671574500255170ustar00rootroot00000000000000--- title: Documentation description: Help us to improve the documentation by identifying issues and suggesting changes. categories: [] keywords: [] aliases: [/contribute/docs/] --- ## Introduction We welcome corrections and improvements to the documentation. The documentation lives in a separate repository from the main project. To contribute: - For corrections and improvements to existing documentation, submit issues and pull requests to the [documentation repository]. - For documentation of new features, include the documentation changes in your pull request to the [project repository]. ## Guidelines ### Style Follow Google's [developer documentation style guide]. ### Markdown Adhere to these Markdown conventions: - Use [ATX] headings (levels 2-4), not [setext] headings. - Use [fenced code blocks], not [indented code blocks]. - Use hyphens, not asterisks, for unordered [list items]. - Use [callouts](#callouts) instead of bold text for emphasis. - Do not mix [raw HTML] within Markdown. - Do not use bold text in place of a heading or description term (`dt`). - Remove consecutive blank lines. - Remove trailing spaces. ### Glossary [Glossary] terms are defined on individual pages, providing a central repository for definitions, though these pages are not directly linked from the site. Definitions must be complete sentences, with the first sentence defining the term. Italicize the first occurrence of the term and any referenced glossary terms for consistency. Link to glossary terms using this syntax: `[term](g)` Term lookups are case-insensitive, ignore formatting, and support singular and plural forms. For example, all of these variations will link to the same glossary term: ```text [global resource](g) [Global Resource](g) [Global Resources](g) [`Global Resources`](g) ``` Use the [glossary-term shortcode](#glossary-term) to insert a term definition: ```text {{%/* glossary-term "global resource" */%}} ``` ### Terminology Link to the [glossary] as needed and use terms consistently. Pay particular attention to: - "front matter" (two words, except when referring to the configuration key) - "home page" (two words) - "website" (one word) - "standalone" (one word, no hyphen) - "map" (instead of "dictionary") - "flag" (instead of "option" for command-line flags) - "client side" (noun), "client-side" (adjective) - "server side" (noun), "server-side" (adjective) - "Markdown" (capitalized) - "open-source" (hyphenated adjective) ### Template types When you refer to a template type, italicize it: ```text When creating a _taxonomy_ template, do this... ``` However, if the template type is also a link, do not italicize it to avoid distracting formatting: ```text When creating a [taxonomy] template, do this... ``` Do not italicize the template type in a title, heading, or front matter description. ### Titles and headings - Use sentence-style capitalization. - Avoid formatted strings. - Keep them concise. ### Page descriptions When writing the page `description` use imperative present tense when possible. For example: {{< code-toggle file=content/en/functions/data/_index.md" fm=true >}} title: Data functions linkTitle: data description: Use these functions to read local or remote data files. {{< /code-toggle >}} ### Writing style Use active voice and present tense wherever possible. No → With Hugo you can build a static site.\ Yes → Build a static site with Hugo. No → This will cause Hugo to generate HTML files in the `public` directory.\ Yes → Hugo generates HTML files in the `public` directory. Use second person instead of third person. No → Users should exercise caution when deleting files.\ Better → You must be cautious when deleting files.\ Best → Be cautious when deleting files. Minimize adverbs. No → Hugo is extremely fast.\ Yes → Hugo is fast. > [!note] > "It's an adverb, Sam. It's a lazy tool of a weak mind." (Outbreak, 1995). ### Function and method descriptions Start descriptions in the functions and methods sections with "Returns", or for boolean values, "Reports whether". ### File paths and names Enclose directory names, file names, and file paths in backticks, except when used in: - Page titles - Section headings (h1-h6) - Definition list terms - The `description` field in front matter ### Miscellaneous Other best practices: - Introduce lists with a sentence or phrase, not directly under a heading. - Avoid bold text; use [callouts](#callouts) for emphasis. - Do not put description terms (`dt`) in backticks unless syntactically necessary. - Do not use Hugo's `ref` or `relref` shortcodes. - Prioritize current best practices over multiple options or historical information. - Use short, focused code examples. - Use [basic english] where possible for a global audience. ## Front matter fields This site uses the front matter fields listed in the table below. Of the four required fields, only `title` and `description` require data. ```text title: The title description: The description categories: [] keywords: [] ``` This example demonstrates the minimum required front matter fields. If quotation marks are required, prefer single quotes to double quotes when possible. Field|Description|Required :--|:--|:-- `title`|The page title|:heavy_check_mark: `linkTitle`|A short version of the page title|  `description`|A complete sentence describing the page|:heavy_check_mark: `categories`|An array of terms in the categories taxonomy|:heavy_check_mark: [^1] `keywords`|An array of keywords used to identify related content|:heavy_check_mark: [^1] `publishDate`|Applicable to news items: the publication date|  `params.alt_title`|An alternate title: used in the "see also" panel if provided|  `params.functions_and_methods.aliases`|Applicable to function and method pages: an array of alias names|  `params.functions_and_methods.returnType`|Applicable to function and method pages: the data type returned|  `params.functions_and_methods.signatures`|Applicable to function and method pages: an array of signatures|  `params.hide_in_this_section`|Whether to hide the "in this section" panel|  `params.minversion`|Applicable to the quick start page: the minimum Hugo version required|  `params.permalink`|Reserved for use by the news content adapter|  `params.reference (used in glossary term)`|Applicable to glossary entries: a URL for additional information|  `params.searchable`|Whether to add the content of this page to the search index. The default value is cascaded down from the site configuration; `true` if the page kind is `page`, and `false` if the page kind is one of `home`, `section`, `taxonomy`, or `term`. Add this field to override the default value.|  `params.show_publish_date`|Whether to show the `publishDate` when rendering the page|  `weight`|The page weight|  `aliases`|Previous URLs used to access this page|  `expirydate`|The expiration date|  [^1]: The field is required, but its data is not. ## Related content When available, the "See also" sidebar displays related pages using Hugo's [related content] feature, based on front matter keywords. We ensure consistent keyword usage by validating them against `data/keywords.yaml` during the build process. If a keyword is not found, you'll be alerted and must either modify the keyword or update the data file. This validation process helps to refine the related content for better results. If the title in the "See also" sidebar is ambiguous or the same as another page, you can define an alternate title in the front matter: {{< code-toggle file=hugo >}} title = "Long descriptive title" linkTitle = "Short title" [params] alt_title = "Whatever you want" {{< /code-toggle >}} Use of the alternate title is limited to the "See also" sidebar. > [!note] > Think carefully before setting the `alt_title`. Use it only when absolutely necessary. ## Code examples With examples of template code: - Indent with two spaces. - Insert a space after an opening action delimiter. - Insert a space before a closing action delimiter. - Do not add white space removal syntax to action delimiters unless required. For example, inline elements like `img` and `a` require whitespace removal on both sides. ```go-html-template {{ if eq $foo $bar }} {{ fmt.Printf "%s is %s" $foo $bar }} {{ end }} ``` ### Fenced code blocks Always specify the language. When providing a Mardown example, set the code language to "text" to prevent erroneous lexing/highlighting of shortcode calls. ````text ```go-html-template {{ if eq $foo "bar" }} {{ print "foo is bar" }} {{ end }} ``` ```` To include a file name header and copy-to-clipboard button: ````text ```go-html-template {file="layouts/_partials/foo.html" copy=true} {{ if eq $foo "bar" }} {{ print "foo is bar" }} {{ end }} ``` ```` To wrap the code block within an initially-opened `details` element using a non-default summary: ````text ```go-html-template {details=true open=true summary="layouts/_partials/foo.html" copy=true} {{ if eq $foo "bar" }} {{ print "foo is bar" }} {{ end }} ``` ```` ### Shortcode calls Use this syntax : ````text ```text {{}} {{%/*/* foo */*/%}} ``` ```` ### Site configuration Use the [code-toggle shortcode](#code-toggle) to include site configuration examples: ```text {{}} baseURL = 'https://example.org/' languageCode = 'en-US' title = 'My Site' {{}} ``` ### Front matter Use the [code-toggle shortcode](#code-toggle) to include front matter examples: ```text {{}} title = 'My first post' date = 2023-11-09T12:56:07-08:00 draft = false {{}} ``` ## Callouts To visually emphasize important information, use callouts (admonitions). Callout types are case-insensitive. Effective March 8, 2025, we utilize only three of the five available types. - note (272 instances) - warning (2 instances) - caution (1 instance) Limiting the number of callout types helps us to use them consistently. ```text > [!note] > Useful information that users should know, even when skimming content. ``` > [!note] > Useful information that users should know, even when skimming content. ```text > [!warning] > Urgent info that needs immediate user attention to avoid problems. ``` > [!warning] > Urgent info that needs immediate user attention to avoid problems. ```text > [!caution] > Advises about risks or negative outcomes of certain actions. ``` > [!caution] > Advises about risks or negative outcomes of certain actions. ```text > [!tip] > Helpful advice for doing things better or more easily. ``` > [!tip] > Helpful advice for doing things better or more easily. ```text > [!important] > Key information users need to know to achieve their goal. ``` > [!important] > Key information users need to know to achieve their goal. ## Shortcodes These shortcodes are commonly used throughout the documentation. Other shortcodes are available for specialized use. ### code-toggle Use the `code-toggle` shortcode to display examples of site configuration, front matter, or data files. This shortcode takes these arguments: config : (`string`) The section of `site.Data.docs.config` to render. copy : (`bool`) Whether to display a copy-to-clipboard button. Default is `false`. datakey: : (`string`) The section of `site.Data.docs` to render. file : (`string`) The file name to display above the rendered code. Omit the file extension for site configuration examples. fm : (`bool`) Whether to render the code as front matter. Default is `false`. skipHeader : (`bool`) Whether to omit top-level key(s) when rendering a section of `site.Data.docs.config`. ```text {{}} baseURL = 'https://example.org/' languageCode = 'en-US' title = 'My Site' {{}} ``` ### deprecated-in Use the `deprecated-in` shortcode to indicate that a feature is deprecated: ```text {{}} Use [`hugo.IsServer`] instead. [`hugo.IsServer`]: /functions/hugo/isserver/ {{}} ``` ### eturl Use the embedded template URL (`eturl`) shortcode to insert an absolute URL to the source code for an embedded template. The shortcode takes a single argument, the base file name of the template (omit the file extension). ```text This is a link to the [embedded alias template]. [embedded alias template]: {{%/* eturl alias */%}} ``` ### glossary-term Use the `glossary-term` shortcode to insert the definition of the given glossary term. ```text {{%/* glossary-term scalar */%}} ``` ### include Use the `include` shortcode to include content from another page. ```text {{%/* include "_common/glob-patterns.md" */%}} ``` ### new-in Use the `new-in` shortcode to indicate a new feature: ```text {{}} ``` You can also include details: ```text {{}} This is a new feature. {{}} ``` ## New features Use the [new-in shortcode](#new-in) to indicate a new feature: ```text {{}} ``` The "new in" label will be hidden if the specified version is older than a predefined threshold, based on differences in major and minor versions. See [details](https://github.com/gohugoio/hugoDocs/blob/master/_vendor/github.com/gohugoio/gohugoioTheme/layouts/_shortcodes/new-in.html). ## Deprecated features Use the [deprecated-in shorcode](#deprecated-in) shortcode to indicate that a feature is deprecated: ```text {{}} Use [`hugo.IsServer`] instead. [`hugo.IsServer`]: /functions/hugo/isserver/ {{}} ``` When deprecating a function or method, add something like this to front matter: {{< code-toggle file=content/something/foo.md fm=true >}} expiryDate: 2027-02-17 # deprecated 2025-02-17 in v0.144.0 {{< /code-toggle >}} Set the `expiryDate` to two years from the date of deprecation, and add a brief front matter comment to explain the setting. ## GitHub workflow > [!note] > This section assumes that you have a working knowledge of Git and GitHub, and are comfortable working on the command line. Use this workflow to create and submit pull requests. Step 1 : Fork the [documentation repository]. Step 2 : Clone your fork. Step 3 : Create a new branch with a descriptive name that includes the corresponding issue number, if any: ```sh git checkout -b restructure-foo-page-99999 ``` Step 4 : Make changes. Step 5 : Build the site locally to preview your changes. Step 6 : Commit your changes with a descriptive commit message: - Provide a summary on the first line, typically 50 characters or less, followed by a blank line. - Begin the summary with one of `content`, `theme`, `config`, `all`, or `misc`, followed by a colon, a space, and a brief description of the change beginning with a capital letter - Use imperative present tense - Optionally, provide a detailed description where each line is 72 characters or less, followed by a blank line. - Optionally, add one or more "Fixes" or "Closes" keywords, each on its own line, referencing the [issues] addressed by this change. For example: ```text git commit -m "content: Restructure the taxonomy page This restructures the taxonomy page by splitting topics into logical sections, each with one or more examples. Fixes #9999 Closes #9998" ``` Step 7 : Push the new branch to your fork of the documentation repository. Step 8 : Visit the [documentation repository] and create a pull request (PR). Step 9 : A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR. [ATX]: https://spec.commonmark.org/current/#atx-headings [basic english]: https://simple.wikipedia.org/wiki/Basic_English [developer documentation style guide]: https://developers.google.com/style [documentation repository]: https://github.com/gohugoio/hugoDocs/ [fenced code blocks]: https://spec.commonmark.org/current/#fenced-code-blocks [glossary]: /quick-reference/glossary/ [indented code blocks]: https://spec.commonmark.org/current/#indented-code-blocks [issues]: https://github.com/gohugoio/hugoDocs/issues [list items]: https://spec.commonmark.org/current/#list-items [project repository]: https://github.com/gohugoio/hugo [raw HTML]: https://spec.commonmark.org/current/#raw-html [related content]: /content-management/related-content/ [setext]: https://spec.commonmark.org/current/#setext-heading gohugoio-hugo-6abdaca/docs/content/en/contribute/themes.md000066400000000000000000000014261507671574500241320ustar00rootroot00000000000000--- title: Themes description: If you've built a Hugo theme and want to contribute back to the Hugo Community, please share it with us. categories: [] keywords: [] aliases: [/contribute/theme/] --- Visit [themes.gohugo.io] to browse a collection of themes created by the Hugo community. To submit your theme: 1. Read the [submission guidelines] 1. Open a pull request in the [themes repository] Other useful theme directories: - [jamstack.club] - [jamstackthemes.dev] [jamstack.club]: https://jamstack.club/#ssg=hugo [jamstackthemes.dev]: https://jamstackthemes.dev/ssg/hugo [submission guidelines]: https://github.com/gohugoio/hugoThemesSiteBuilder/tree/main#readme [themes repository]: https://github.com/gohugoio/hugoThemesSiteBuilder [themes.gohugo.io]: https://themes.gohugo.io/ gohugoio-hugo-6abdaca/docs/content/en/documentation.md000066400000000000000000000012351507671574500233360ustar00rootroot00000000000000--- title: Hugo Documentation linkTitle: Docs description: Hugo is the world's fastest static website engine. It's written in Go (aka Golang) and developed by bep, spf13 and friends. layout: list params: searchable: false --- gohugoio-hugo-6abdaca/docs/content/en/featured.png000066400000000000000000002202311507671574500224470ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTE~( F G֞ ҙ ԛ Ж ܦ ؠ ͒ @ˏ  ٣ ީ { y+1 uptLDR#Yiza ¬F^wn>7~iӢ $@GxDLSɸ%'Zd:I69E˳1 %Σ¹-.O{Ɍ%/TpLҦC@ѫLϯ0KzNPl18,9::7͜"% Ú)pDZb\c,ǣpP(Ti&ê˩Ѹ-5@BٹA 'wt "rg]k?fX=~frZ{5{Htm{I٫ >vnl`ݳƉ߾cjyD.brƠֲ bZ@WyY*mÄ $>d&ǒ,v ơHDßȐ ا2Xx߿)sQNWȷu/kϱzvDs̚qcۮ5TTS;87ZMƢ=֖ IDATx{lն]j ;HM[ \(ƍE#+b6C 1J/m B( qՓ7?~99y6cY]n1(]t}9fd36|jkylkK-6Oڦh~j#1$cenl[m朙fXnillĦ{#=bQj \[RXYfCR8b8J,C0X,c2j gBRgpp``x?,E\AIc |% [5s 3`I ZaIa!44 GRʥ MY[m+:VO]tpUB 0h0:hpTBZ!80 p'7 >h4:h4BZ A"!lupB E &QBAPX"lcpe`8jKRCe9Z}D!\p"Fy!DG0ިGSf(a  gtƔuG)/b e :8 0&:J9J8JDNBH$K #C! ttT "%` | =%,o컭!BEB>e;(!8D p0 QJTAVZ)4" 2s!FV C:X&f&!!!:h2ތi ( Y$$iA+ޯa Jh2/0B5ΨEz!!:Jb^ƀX6\)|N ܨE qGiZf<-%>˸J($G 5Ajt8ҴBB2LnI*%tQ>"TbZ? aD5B'/c1t2m@8OH!B3*p"#cC%|:T ̈ФFg%ɼRg4 /NZg du5;,ODBQ󙐐$el}""~Z&G%% #lZ&Zgj~D8nQBPtd!duI<G P6R s3V Wf_"$5|SN$ N8JdeH̔Fygt:<:!A'G 2TVf T_x@XVo̭l~[%tCB[PJ軣l]:o2Owɍ2umATopHmD8Dر6Xs0iT+%[!YS:>57EeHVꗡ7:Sx (FìJ  uύR'+3ꅄSfG mh+RQAjY1!:kt h qF!ѻmubH8X+*!ײfzJHR†A/BxQ&5:Zn " kԨ[`naV'IDk*aع=u ,'eĨe;ڼVor׹}땡\떱{`T@HpDV-k&k%JH+\Zt ]57$" aʼnVoRS$\tn} C75ez4p6n;YIaZ&,3.̍: t0:nޭAEa:}y+mHobr˰[&앱ik* 5:"ڲ6+Pm//z\^f}?1ypލ&7328?1ay+7sDn|~S@cF&_ u:m,$5Nr0=O C~ 'Y>4ːԨ۰deՎޔ}-էv3c-]L{"YN`BBF 0"pFB4x5B?9RabF )7MߐՉad1FRp" oJdFi@8%HhUBpeN,ㅄavFvРA› 2Y08R=i^`4g-&fL8ZFF=kNFiqF ݀bn'nrV%#"FFˌ2[ꇅ!!vFe a4>"tr#b#* OY`]oqDzԶ2@+7MLdEI8fi3fLf~iwiNۨܶ=k^^:Գި~I ZoOe&:Y ͝sXX)›EEˌnuɎIJt'[&#XVftL!ezghCFSF;֨2S- ;ܩD`;GL˸!ixp̘pP&fLb9xLh|'HW깎5:i27b FѰYƙs(ʸjS 5=~b:”O8N`πi[Jxx|~3琺c"e[-[oMݎF}%2.Ãʌ݈pFL9Zp pm kR [2#0XLD쨏 :'˰kL›,󠿉LD8=~muu0G#C-ڔydjuGoi(75w괌wlDg#!3Z?DLY S-f&7Q`XHO !["TI]JL8>68 NK;PO0kب4'cСW#}nGG߻{&6[T{y[!BulYhf-y輠_-42kF^EX{,:Z 4 eر-m+{yGǦuz'/ÞH֖1iloOun 'e2efd gF kHBYy*B8 [!9#QNjt=}ϤF8kԎ5IV7:Czxzam0Sa`H2SپAAN(oU?~R0g?= ۰s'af^w/3P9ИfécAI aAoZ!)??2v{3w{?1'&uJgar#!?ZGN9#}FLBhbBfCcn#isF u=[!k J=}Ny ď8-ҰHmb#-3 n^NOL3? ͖5m ]y M䍺]#B8WDap^|ZL iZflNfeƥk$7NBH;k61Q4Oxe[d}+7iZ'F͏wL?PG2Z֜f?7+hNّ5^ Ӈe\&y E[mK1 Rw0b"<0qJhOx5BIe#BIU' OLNX{̏ 3- Dq›NS8=;p:-ΟnJF #9z Nс3x'[f?v;&Vo|w83݉?| w_4ROجaS6ˤO"BzDT0n lLaRzu\pA5͖qv12wNlb 6ˌKm$TEC`IF3(+/VM,9^ӨaF%dNq4%匎3ws!{uFYo{;lQţtӄpa̟]眅FyS:=?)ݦeh(?c-!0oHhK3ݼnpĚ}b?lIHO%2&Ѷe22\2^ύ2Ѽ ھmwLx:6-O"ɓnޙ>BFzO}Onyr}ü}NOSC`a4$Fh' OF3pǂca}e\̣ms-F`[#BrDLP0_V 9! -3"E(qa^8'L؆5u{r*+:%AL1LI[! 2zO'ǡŶOFٱэde_gDT{Fۓkވ5/3(;9-f MRO0MPp#`3V#6N1!'R|zPZ˔A-oQGwgmbZ(2(-d!̻U x:?L arF̼CAD8c-_"'B8=5c--3uT>7i%d2D ˽q[ ckfh (tJBzg75:"9gc‡S# 1=jvP [7QH8?Laka~6 Ѽ̘Xj4Fdv'&Ou8:1OJFU@H8><61s[bZ+7Cjt]P4ose.uQ}iѳDp̃$$"p'adG=-%GQZQ!5jf-oVwr:ւ2b[y2pǍ:T hJALSS=]L?fU7bL87Dщ# 'F0m3IROXsOI$e`okA vP(Ą6nx%G#B8,,vO =%\6eb3"dS۳F s&&rN66P8nX'ZN;@X%tH$eD#2cfaN9)<Ӄ|רSIG W#FNuw$h(/?~)L2!!>$ff{ټ#(/zFe̘='Fm=JM}lcSZ W&!0LLQʼnl\KGIo׽2˸<5n?b,3-cFfNAˍʈpp(B1\puJ mKwZk1[%'۞ g,[QaCEBrs-mYQAC &Z#4.H#BD(p#X\(浍N  m[SEJaM;2ʼnuڋ7_݀pTx4oX#MFcA̴щ #E~ ۱6KI sC:+ÜͻH\SA A NE%\-#*&\!ܭ>je&;ۖ{#n7P0gӜq3C|]kJ GbT(S3C#D@ F -m۴! ,E@=l/dY[uĄe Ø0r̼7QdFIj䀧9tEg22aP"DPjjq=&0D{D B%BYFaFMFDPY,)=l)lYC1hCj&$1j!Pe2LVAR7搜KeӱÜ" !P (]Q|.qCC~|PKF["h*rXbK2?淍>?sZ8u{bj뎦<%̈5`p\zo nP? 9E23*mB"="(\jkᄅo1SIӲC LqWÒw$n V8,E& AOTb8dTp{X{ 2t{}H8Ix3a苎w2c2A6}B NZ)B? .4ѻHMmS ZA_OB0水a^Pr׹(EXZ9)Gm&CȘU s2vDK[4TbUP.eB pM@)M2h6~N%0x0v9a d-'uB|0tj͌L<3n$Dܬ8f6Hfe,AkGΨporGU~TĄw2cmDt 1Òia f4BwܐŔ¥LvH},$ dޠm-O̴B8 r[֘dBc[$zJH (a;/S, _|İT$. G\!V^y r5 (/lneZLQq7DN]!Jh2n\>W[]]AB0n`),-!,AzIS!4R'GHX?4|F s;S9t6,2zvv^Z h> l#d6 [I?Dkmep.X_fu#[-kn  ۴)\Q^} IDAT*3(r/,lU,3 dipX0uUB<j?q?+|D8)zF=w QB^ԩlubPJj XOqi%HqB B›|SsLHI0,& n6J8rEGZ"a*"aJ3A#љ5)7*pH|\. c Ca&*DnEh--/鰊C0 AK[q9¿ҙM VaD v:t=~?X1tlҮќFIޝ=3CL~ ʸ!`YYp-&`(D-}R=ġ.X Ru`ZM ,g: @2!(`G {F'f^u{2?7Yƥ0r ad$owDC(FB:nK (2Ρ7*ޭʄPTSz'9$]Q :9$HbVwV չv)=vޜCgh0u Yk43-pDd#ܮd xlfal`Z" Q)vm(",wTڔvs@C5I!1|%6Dv8W"5:#[ P޶'άQf #zfLY&D;MyYtoǦnLM: NCDQ׷(mP([PH22*ǰX^lte0`wmq zEG|dOd;yp$p|&Ͷej/RXjt"w !W2E)>s-L33l@LfbY.o9h)Dmmط A`6l(LL#W466\vLx3::ZX<FآmO, ]r =(ӏ l]Fivs8)r,Hv:5:P%M5qGntm",[h, [ALkVp1 }-,q8~i1.bE RZ8l:1*lYf<>1neeئ!t"B &eILs'e⦍.r2BzYnl1wAPƄ*,ÂDʖ¨ 2AK"CaREtwEm歑O1$„n>j!Pa\R3RHzęj^5y k@1)znwF=Swxdz!`#ՆQmj&f2t0_rZUÕ %AO*]Awj %ö-UJVBDQjӲhۯƟ?vr2'aC™  J Zs.=xFwȘjwC Ҧ k-aYI0%W 1}I;Wǿ8gYMknGW1F(_F5oun{'NbGFs-LI߇&{F_]-P" *CR(cBG VZ J)z^++تÐ*R3x-L]wu잂I@!'.['l?/e˰MO~_ru).5Ws<6>Y$&e}x>Bk=(nYB,-y!HlS%An(kU7n7ƴI  k+YޥА8l(OK! tP`-(N^f{.pBKp_o Ǵ;Xs>32fČ!0~ϚwE>* J8 n݃nQ֦yaAR]\v0@sk9LC0݁?A>,o|2%otl.*nN @|fe 1| =Q!s3Ԃ;<}cJQF MqB؂;Zʰvw) AaqiP(OX4 Tno(+ª#Z8$І]-aawZa}1?ym6_okJ.U\?+b8fZ KAy sDPJ!*R _#AAR_(r%G(bsPо6:]PX<\rutB )MIݷ\rآ1!+e5Ma49a?2g_Mʠҳ d-a?HۿK"uP j ޔJGYIpF'*,@P/)>> )<:Ee)J83d9,)r叮Kih Q ׬!H~:xXkA0*,[ra B.e[_9 (өhIW @}+I/ÈP(cٚpEgΚ %r _T)%O2:"J$ăQ"II㨄 GY*~l\/Lvn/ tFWQ?9 7U 6W%^EUbL ;/-SXVB!dK} ,+iL $ʚ3 {9ŇJK!I ~gt pFJgc[!\dNP,R D)|]:"-R1r9<"<"upPBAcJA?SB( f `O(!\cє?Z;H!!eՊI CgԼk`acg"s3&4ʐ~)O  R@9"A$祟pPeBhQ JyIXӦI Q /)|JHAI£ M(-T鷰o~cepAx3Kl`pܖZ"U\% K2>IAAvFQ Q.|] G ACEA?;&*ZĬYd? \QDp̉*?'aH8I/I-D)T:(LRk @EGN9 (2] -~- XP9psAqUV^!Ji¾]vŘ =-g4R!k)2yo@a8wQoJ1 )>+P #7*ĐP4"`/C!hT<4$z6E7xAbfP۳R 5@[J HG<ިZ7ڷo_BPxQ `,䰙aJqh;v-v從 Wu3 aYJ 1Z(JW=fpY@uP '*{{^u*GrD"& xggEp Ay+tEéR BP*` %L׮PQHk/͠a}uƆo4G $a]t-sʾw"` hDx?!rxF0+/kH O)w옵C2H=דZQ߀{O)=]T!@"1z89v #BBm^ 21|K\*䷂90L̬ -:-ޜӕ w({+"R(lljj;iamJactAd22׮vtLp4Y`҄ݕk]|ў=˄PZ˄ BR“.D5H @q@ 3;X |Po`ȠG_(,q Q2&D @Ïx"x `HWB÷VhwTFo{ UFxi␞bQa_ A ;H;h۹.jOR shaj}YgJkAhePިưWm:ڙ{ *+W`w}}uuu}+ݞ{w7)ݺuYnI_TH{j޽T?yZD܁*wH)OPr/i@KSÀZS__;e$7Gb@x]#!N pxbe'|x""`BzK{d ih*9T entA%#=}HKPVTX%iEjk֞O{UfAk\:wN/0إck~^'edsH;cwyJ5ZI]3 DsCK@T KcO?Mk@D xO!pSO4XVzAQ2޿ i;B4$Z;P{r]: %|? *!@{"f)6$Ġ0bD H)E}7p1İ>3%Ioo{R=<PN)3vnR"hJK!^LngE}7! 6EZpIR*+5 ocw92( B &ʀMcܨGA +/?@~BEaB#x7H߬C'B!lLŃ]XSFl!vOy9ƛ^B>3#cL-i_|hc?@Tpۓoh)˺I@#*(<Aw i ߁ڋJߒ :QB ss+*B~ ~bDL؜.€{%Qjr(^/Me<84aܘ&\#+:saL@p\9*4>I%UKjPTr (1//up[ _ NpPJTj]WU !L1b>hě9UC_ c& !FC!LAe])EItY8Z| B؏&F&"딂a!])\ |% ? |1feP]lP4g  U·3:FeHbL BP cr?sC}b5Bx-i!̝>lf f7C3bJK:.ˡg D$5KፖU+IpE5} hJB QqFN5 $9R7J Fi'!lM2Y aU `AHT_khhȨ#{{vj)%D!SW aPB@r(S//\h ?)P@`'ڪlTph0VESerTH|T&fr)! hu粞AHa?ZkWp lci#V(,)NtWшlC  \ٳVS%]>^sJo D [;pǏ)օw` MO ^S TǼ2\\$f$2A~ݡGi菲Ok`†NahC؟7Z}6vO2hŔp:& fH@jR!a)k2P,ÅJ[/z6K _yFW'RWaE3P lAm2( RF #˘)cY!w Lr΀B`@XuB JWwaM ^;šv$$^\🨄MF//㷬P,덢?ePw¬ :]P@vJ"-s2xzh˽Z 0-ˋ_{XjZVLmONVcZL DDީˆgĕF:P : kJ+po*BX(wOLDU¡67#-Сԟ-G!Q& aF" (L~ܐhglA w dB#^g ^&(|/B4_}B D-L|.|)o|)܌ Ks{* 7:w.(QB/*DO ikCizEx(-Qh6-aCح?DD]B1:2r %dL| wG-Jp}MD^XMiwȟϿ< "o+Q`Pչ#;PPx *=QxF"QiS2]gt[ wPdy#5K7Rwnw !'1[ N"pG߇}k2uDb:H0J7oЌ0+(fGsBHcŠt^iRπHa-! sA7@ح?C 7&r8W.d=nj%DU$t$?W ³bmٰ!ᯧ|)NA>>R1$x̗z܍ }uHmT6˨j[ sC0$&|>gՓ0?l+]\> aY =,?GjΩ.(["1ިPj "C %? ktD((l|nQS2$Jy*(R Q%` #vՎJ-5"#9zÇRɉ6Bn a ݺ% $,i[F e$w>$PY^wT!aC<}Yդ6!UA0o3 Z及PKfQިb=RB phBݮ#y J ),c!Pb;&DPujaB nHT.JؔTBK:>KAbBwnQ]%\5ʼJ33ȡ38D{&xm2!ݓB0]%DSݚ TN%ZJ3\ws@@&!$2X kv/_\H@({@)DWD%p-UwC.M(ot*'5C0 5f-H<!-&<~>g 6 ºfC)~w) TK#:-}Ipl5_#^:`mZ/7*, fP0hP $" sG $ >0erÏ'F&w7 Bs!#QxC!r(SQ²!OCa "AI}ΥB!,!pne(\SIhvL==l%TZŽ2{.nл%P%f[}b%ZM~JYO a*1D}/)!Z,6BŠB华$cn Pja6U&0 JG?BCjQoo ;vb̂N@XЩPp !3?i7h-i  JO@P@aZϯ}y!BHQsq#Œ]Ql#/a! Lʮ/5䇰#s(gBڥVB3wsQkpGmtt05ׁ~d:C /*ׄnw BBÑr@Aٳ, ]-̂0C250蕉W _#=W_Ѓ#B{Y!$ jz !E)%[u8((hku |Si&5GʵȕA\¼JHaeqΊ+|_O>1!T^ c\Мx~'a@GZ = 4&3#MI%t5bBEJBV Uv4?yj1̎0iSz: !NPX5锂Q͂.n} 7)w\˯\͏3J0DV­@‚ѪdLJ)D1C[厲JXPB*hUr*}( a*`P7| vq RY&4C I+A sCXVKaS­MT>\R 7*%5fI*) !`*&t),˂_/J -sC dnL@xMj聘;3ᵀTZ@xJ#(9 eBh 2Nٔ ڀ,%jpkxL? B 7I%ܤA\F!apvFpGOeP!Q =VdC1*0G@; ao'j,% 22$ 4~T {GUy0Jh0(cƳT*%-Z; 64CC k 0;ZBaYt+G!L /%00QWJ7jvQf&i BB. ̭ 7!<4M@X &!\J( ܄黀5Z%r3.h>ysL u0Y"1.Sq.)H i; hfLxF59cšP ]ۓO> !A-%~*J8S:(RR ēMQ{8 ɑo^KC`X{vv4EsCX_VJA8&e-lLde#kg%PXB5WČo\>W[_]_{Ƣ5T UFphJYAK$GgAئ;[LAx-/z!j\7RܓW!憰wKf vU2%LM[sDAI/JjQ ]\MWyqܨ|JBoqFO'AEB@x.vL-k`&^ 錫TffCxIs.e(!I%,1 9!zE>g4PB_ k`*9Z!R(QH{/f~V^7 B8Ġs29v֫+LB Ijk%X2=z)wLS ~ɑJH5Hr)P[%DwTQ8jsԈJ9᎞f0AVI=P燄A;^IvܤTS(İ@SMWVU2aGB!R|ý&`d|g1<כL*;6t'/NfjEqEV!,X:1ffmJs uζvɱix44\Ko -aϟu\U. atG{)qPwu&5*bgÞ=v]L( Q.7]x6.*?10J6@@8Ђw'gp9`H{GG7y {Q \-+Iw J;( R VBXXj%#cBaSp߁kS )YP84ϴAa^[!*a](aA.B[VjT׮z2НM1a;u/*j!DGg/%@ev'V (ƄAa>("V./"$}NZ.%B(PX?r5T"(01*a!܃QP=եp7KPߊ<&! VX!l;:$l~e &$uBPRJVBa%#Bx 1BG>T)QF '>)˩(NZX3k2YE.= Q̬IAb5qG*7S&e].)5̥jv)Q/S.&0a:d)̐' +Lp ~h!YX:~n(a'%|P6֗Bɴ|#w/fB(]ѺwAh5*%k HRC L YB08W`imE>!yTB|wE2HƄJEJՀ|K s=` tc~%f,WK 1SR ?j2`RxF2 (s2QY)7*ܐ0aLGBRQ8_tHa.Ő3-@j7K\Ra6uPh|i`(TRXC"_?JTn` `%̣~:ڠG﫥09_O[C0bKڣGuI%D0/(qեPP%<[߁/*\ʣyQ+!,Qz`UE$$3<%4C gݍ P%fTv]* zpE z(@Qqc#:zQB\@폲J) (O^*EXlph1aVZT1%,B{2{7R 6AIaŽ]9OQaL%?3JXd~oQJb((4::J~^VF> )<"R rG2F>];9IvTff«- af';rg= Sq@p%!3:XWwf+VMk {dLxԞ(a~t6_f<3dÊ!m3 'tyh5J>wT">jˆp#^I!@u͜-r'p7\{HLr%#RegЌpeʄ(dPxR{gMa>+.hVI1[G2a`MX!4}k!̾/ ̴5Z2rC(JQ`,h˕bCXK!jTSf~Z;B(j /: F:.GA4 y jER Pj_ԃ)PPNCI (🨺`7r@Im5'M@(PBa!E;!jZ!͜z9ks~Vޭ?^h\Xu!/!B RQ) sQ ͍ƫu2e3YgEᵫuugp-XHjD, mƍ6* SR;,VwS4֯5Y ٠CBTBa,fo_dAHTJQ_,;PE%ܨL^LEamF$ia`h(73$4fCAІZߑJs\j6iq#풡 'MBONo7ʲ(GafzS|h&Љ ȐPD]"jq.X#C"T 3i+bF<.HȎ ]3:؏@3* d`(D[K3tMOR<& IDAT4j-xb`QPh0L+J!@&3 -o{Q)GŽ9R :w"Z?7j!AB{Diյe0Qט"h&{K !UA}L0"cG!*C t02>i}a'\qDoA4J[Qù?Ccp o4aJx/àKo޹ڐgeuCw#]-6&J6TmëռZ)Q ÏADPrxYeC7 kdA\{uS~kmm}}}퀦 j pEj}? B^o@ϩ'~xy[vO,SJŸs**Q8tsgpPhb(CQxJ?ژTU/;s!~N!rF'9=@ԯ!"Q⍁\FP Q PX𓤶$? m1l]c2gB~q x^ @h^è Wŗkx8!\V'[!v]%(?_|/Y٭6' |0(sdP??ۅJáˆ5y&Oe=wƦJ=jͭPf׳hph?Y=s/tcP௳2D#i _ !Q !OeG:ng0oӢ1â>FdptF惺!vI)={Byz?qHaFQ˟D΢10iCn!/z.1@Ώ(<|]RkJ CpBPB=B"Nj*g8!rHQ?~#k]%pS(C_tF+VХX4MqAzhިQ~^z**y`fOVdr~BHcrBeb?O%@|)|APbSΝrΏh! aYZjcÌȜnPۦGa\FeA/:i?n( MpӮ( R’PU[0t|ۮj0 ~y^žABC)BEDLR 3 vCc$8]&\{rȧzBe)!pq'\;}">KˡJ e9ٚ$7]R⋂µe%F=_6VJB)k]K 7Q)\jW18tJ Ê90YO' t)H Qhv!SAZ`i," 'Nx.PDڹXR1\ Ǩ).)5 ,qrIP zٺJ/Sa}B(n  CcϏOKkxl8 B;D;@ N V‡F-y1GrV VI-qQ0*\o Zo4H`d 0Ri\]B>>EK q?!^EmbQ dN-@Z oBm.aTuFrQj$f̜ pPF}MRJheY\@8%JT*(OAmnZPA%P 䰯¾$MWmaXQOuᣮ`)'12^ˋ2[ ЕQA@͎' +Q Wb)Sf\ѧJnf1<{AB%ȰBM WcP#2!b7A!iĬoͩ/l(ă/hў5 ?0ԯK|#Vo’6`p&пC P P UzKTkў9ZrUX "܅踢JcΨ`f~ya6=r_8HHm#02V}u _g}I0\a\r%Pr' >]')o%vPPK(eP[/!p("_.&dYYIT!"*%SsZE">:KKAP"=@$k%>|SZ- pmZo\rss*+iֵu; J rQG`33 7q=NZ0hBB5s ~X mrQ[aBW[ A0L+|vI!pF*!|sAA\#D'*|Q"PxJ|4c#P9 r:0%Q{F,- QKa[ )I*zշGLVM3}'$8yҪ!Rx̙r!~r)KqW:ڦDoJ w! yOH!{ *+TjT;@>S>U~#B4TA͠4R <@ 襗O"j9㘲RԈ*I ar(s.<~E-A!-8bAOo1C»׍`dWk\i+eP\C3F3J_|WH DAᎏ(:(n%Cmz? ߓj/%,T&Y"D%"hT(f|Sŵ%P,a@c epUJ3z=^p1 qʧSpطk.:!/07{A3#j!]ΩK.kDN95?&T̆=#(=xh;("g@ &U+!\v OK_TbMK6@prHQ#Y03J0oEG:P2(t7JR(SכCC \kB!D1\B`o ^l7gЂE$63 &21  vSʡtL{vCA?dv&z ҺsC<8;^@P Ae#}%BcCk@.G qiCĵL), [IM A )0>DàQ٦7*׀nFM1. (R %a\zuk4GwedCH\E>l8tjb/_ ѾhQ\c2.M=0yJ`8V.JOI`ʰPn3z&"7*_aW(o5"ppOkfK9* Cq J AઃĶm (g/Nr-iGr2rlaRȦFlH H4_F{wm^ݩɯkCiAeYT 2ZK^PK\7*,(g}a-~!(_+n  DpXV AA b=[zm1(qaP`I$sBv#.AAM7!l{b[!s}!t_}Ys)K׸{ZyEW>yxX  o B ;mJP>>e&RpI.AE? R R 1pCq!%l󻛑5*W!ÃU@[CgL#'e(h=-UFM4ia˦3K D܅۱cT_2ȤD}uwa?BjO$Y;ڱDS i5oO!/oT (!i1*(krpi ۤ}LWB&'Tv[ڶH5]Aa]Ac_%;S 6K1!h-:#;2B~ks=Ü(A/8X Z,PulJ$…O crDbXggr={O^#ZݻgYei'vG ⫭TjZ9)_::?4AE %!.6rQDQPZ^ 2)(! Q@> #Ey|I!!(^c AxMHJX]13 Bphˊ>@x|( C[ NV7ަG7dAyP~D`:]}?"*fHoigO&`Hs!Lz xUޚq(:s(;nR+o(p}z {RW,%!m)|Bx -]P(e'gya .a 8c@p8SB)% %7s5: U+ A&3`h$g2 dEx÷yT̨xd H4O}ѕ~UgΡ~Yf'ˠ/h&R6SYt`KLxۢvu.%i Ɣܡ84 GD)D%@I!J0"7EcKVB >i pE@ʊ ׍w Ap&͟?FpB@qC@#C uM; QZ@!.L+UD 0 7.JД/!VyQ;{mA6B2\a%EZ\^A82,|P||Fk}Z Qax $@pdPR T$6tO@Nw2gUaȴp&G xp4@T䩨S !7bpy(i}$G i׽2.ζ#e;; Zs`NB)tb)CA9!Hs7]H8et+e%ġP%u%KHyxi豔P<ҍx Æ URXZXsQjxzC= n0 S7 DA\& Gg2P%Sъ2GGב >odg/+g5v ,Teb/U&8 ^38Ϭ0Lb *HkCop^a‘a:HT.B'^K+ A xyiHRz hG!/CB!^2 3L3G B`pp:HEf°\`٠2J AQ ѐBPPE iL~pz:kg#s.,_ {WW0 }e]<%kOw\5B޵)_d j/ӎTS(0GIC&۟P GaA|# !4B(P8]*a5<"BO&qߙCQ? s2Fp"8T j;: _Ki! 6G"]nPf̕_$j{2(!L"/F&%p)/ ˢ"P< ;BTG r)9*1uaTabpi.cçv&5CVK%\D 667ܧa|)d _-19G9B8Y$̧\!  0(pԑF CC$kd#*7*Q~6vV5!MwkN^ս~FsF$h( Fa!RL(IBMBPC8H +gh !3`)!"óN<{xwcԙ'.0n0QE`j!pXG u&Qy#I@э*/ `PQzD?:uuͨyuRawm*{0fPb2x^N ̂EO > I# ^ct1W=/K?L*%;Pn IDAT0. jo[ CsFH;j0f^3G@/RB`PQaJ̈J:~w `(!,ke6Xyѐ$&ͲeԙsA A:S<:@H@$2 C{}V"Jp{ S&wQAK;<#,^`0}e ~^NOO\T" nׅ)\Ɠ%@!;v8B̏wB\ZIӣ )eN)a5NDP:Cup" Qg@dJ/%FщE;7|od>xY1MӨb#xlj׀ 2 N_K =ΗD+oaxBg\in[Bx0 7,!I!eJ 9ktAGcRs"Qh)!818ѡzRu;ב!1pX1j6Y 2)vt̋*%@#Gj;*@xdݣ *_ê-3ڣGa /sAv_ƈ0 KJ`l#NpJ\$: Ckxv(wW$bt$Ё3vUE6%A٠ AخK!XLj K!O6Juup^ Iw̎VnԋCLyQ8w!:HJhp,QLfPHRH^P Q ]3jeF܍AWЩM^wG:A;%& ?PKq aBb9҇a3]BV%xPPnƋB^fUWntVAa gQha1ٹ-edVq$Zi[~#M<cƉb0CMM9yј^;!A-M) :e Bc#;("3~ZvKoww9:0џ)7*h 9JEP % x-e680$4BH:88WĴBWtVp  M4 U4hIU:BUPO%^{1WƦ1c ^L.#BI]?I{o2)Q"7ޅ@FßTB  i% 1"d r;@ H:$$3vJJ\!Jeη;dרiY:`2A5z;54dA v6v;k1h8fBϠٳwu@OoصkUi"H#ѫc `PɠNոRÒɋ~fWF\O!/Mܥ]nrTsmF!$D! R wUJF l/AKB) dA@-k$Tz* R~$hBs+$K - = F}t knniiijj*)/ym2Q 8HZF&,"KtP  acF^~IRH" !Qa J2ATBĽZI ɒRP(Q\Չ vUzWB8P? pmC'"45&DRFkST!%Fc(QAyv:2_ ~ P 0EQr=tp %FtBx5QcыR_m*':nܞ4kކ;*53YfmG̭qv\N6WӁ#]p8/3~MP af}ԑ^Ņn]R!r? $\̨%N#ع .?si# k Z R!F eBܨQ Ͽ[:H naJj<+ޖΥQk&0Կm$3*U}HJѣ$K"~\&䭣 V=pہ LNr"mϖEDqvzrRU8_-HFɈ ØQ0:xP9ę&%$>Ar2kHN˘P2H1x R m0*HseR7UzsW!$dB=H28wupв*a߳W&"vJa¸](0l'^;,_Hr3f !( \7~ tzL&*twg\]{/a@nEAXD8EeP8=*!\GBHZu &5)AF\)d%B$pB9fm4JaPu{F~T"aB4kB~.q1l#E U %{@Ha)LP T(ԕ+^UNdfK|!Am| VWE8XHiQ<+Ϥut2%ldJ($nx 25ʲ2P@-t0* 5sapC!tKPtHH^k0nh֢xALvW%c͓bf,uLxd.C.%ܨx3 9~mQf(dZF{dbbBDBPJ!$Ѻ@v4Yyosk212dz9Z{sFRyhI-螵[r'v.X&df2a¢p}sEQpxyRh,2 kFJR+U:@hd, ./ɵ/Jy)_X@(53.Oxi=ʌ.#ld1!pB~b3˼ ͐5UN+ ~TOxJ+UtC7DܨK5d:2ROژ#=( `Sɹ?MBg'GcN W %O`F}mږ#]"} Oa#psan AcFC$i$ 1)\2/ʄP{ѱ>=hԾ{.Q .$D)c$ (pyv ]c⹙4Ѣ|ּnXF "IKwt1|iB"{R;*&\( b(ۗl%`[I|bVtB:1Eǃӑ=`#h"SH:HfTX 2\ ouca7[+ @=_FOvQMk&S2)߳0vP y‡6|8I«읈axҨ&U*@)#s%8fY U]*PPI E)|RNx_c42% P$BF: \R!iL܋G!3ADmՓ' 9ڂq(gdĝN^?lZ Cۓ&7qa:KRv4fNH)SS3y2ѠrhOV{t7+.'[Kz˓Ӱ_[QsmOvU KzщF )(\ȅpzvkABpmm%Ñ䜵Z3v^D0wi6"îDH%R$\Ob\Ja--2YaГ) )ZݾDN8n%oI/j(2zD\ /š^$-T0)JH!p1\ _ʌ;LcئF2U7^wB Iz 0X #\BR8>C{ 2HCfv,&9Q1 pư`-AW^Z`|VQS8 1dQrz5gvvP𽠉7#8bj {]; 2 /ɤk2i܇F`{'RlyTAGA bv)jAo-"(14$3 P'Vsg a%ed@6Wy%l֢Btb&ɠ\ *Ρk 2D c>@TCewKi':2#݂ #,iÿ1!E+C&S-H3K̻"j)r!(0Mn.woDPT7PoKΠQ=A3t̨=guiANDhe,3 ' ;ǓK 'Ց I s p(AAPCI ‹VRhzB%b6 1=iAz;KʋKp9=7 !]dzK&d. j\IJ<#Eq@3i)zAvp1/)=_mk{eL߸lc):&N^ƾSRB,UaB9c5-A %2Dk!9Ru]<^(mhU>&rxeg H %%ړFZJ;3XR>랹DЬZfAM[U>l|:8ZZj' pلr zA Z7g!A6bX~)*I GQ*P0G8fqW'ݸp\ĐBP(!`8dApvzl6 ƒ1/B :aP _K>ٕaŊZ^p 2HB(ӢRm{~[:#x}-+|s@|Cc9p -EhpBUz qӻ"HA!18^SKv1̡g`i}5C%jTCMb=$1 3/@A^W`_W8Q 3KBId&Ojٶ}edCK-r6##8$虡0J8΀j76mN+AJfZ: NZBHf ׋P"[UWJ+pDx_a~_Ν\CbzՖJ-Dh6P_P*O?0U S(d 0av1 5X~%v0%Py $\\rڕ9˵.3|p&[jHzat8+Q lX 9,>㝼PUS B'*>qZ ' V=p  1810\}A/VRE$=O#d0Pp=BBwq?+k?Æ9w%82ɽ\] -1lc 1aF3:SA\9ܾ_Ke }ep"PJA%5Gq˗%]."(A)f $I#ӑAAc|-D3g(|ҿ81\}~XTrE!8zj* A~t'u5:Fq(4=(C}$7z^liܞ,Dp=twwC#WÐf0&{!MzyfOоezlmdEB#LP< A%j`Erdo&$<6T>utJ 8=;Zao[? ތ%X ~cL1ȇ㜧%!pHO@\tu}{#_x˿ѹ!b(bzyF;׫p($[BJV6M7!A 2)D1R8.lirDɯoQWF1,L _,i24iP(Wk%& D.hP `$?<tg3:1t/ׁ Zxofj8Gz5 !KZj\ܨIbX۠Z A}B!=%571 ʠ=l 7 C^.r b ݲ}^ @EA N fd4A~`1[3AM !*b9D'xp8Bp-`?|r5 ;}bDphGg}dBkU#e#uP8ѷY0h0$0Hr)j <)SÄlF`i{|`BY"' IDATB{LI}}͛C= adol/9Rqxk1GyeFA;DAFS*53 RgJgJX:IE{6s>:$CPnA!dIcbFrHU55ZzzdD6C pHnV0d(f! dDA0{$Sa_Y\':t'N4o,6!aB\!pP|M 2(#ŒbɡF @z3籙Ǟsp//5>CX@0KZhR+DC8f~d=FZ ^Fr$ D000xadÂ)L¢GJ_K}=~`$FGbab1b?Yx}A +xd U((< W}BQB")"n=!(h 1vtLba$d0h1&+28m@&ƒ |E w *~x8?bpd{pi*-[x`!*B4Q hl6C(Ml3G`yeȈ*$r)!'UP +xJsRspEhl 7eI!P%# CJ3H Y\C 9QcD1o·АyR`_@ )$ƚm'{Dv) >aX _ø&R7< b5ߏ`QR,Ygd^iG­c2AABˉ R,,XR|nqDE H T+}M9!dD=Jӝqha`XhZ/1$W!A`'%]\rOZ0a DSmuNn/!MG!00NSPɐ8~lO`J 44IHE*l!"Hy }`1C(+kWjBwCdONϩ^MfJu .?ţdPhdSihAH J R 1XxL ~ۓAO*(%c^,U=j^0$t?bbnZbka(, KaAZ,JH =1LN.UPl*˴  AK`XQwx83S&9p>UNYB1X>=1Fp)[!E|@z1 D&`8Ma+zJ؉^IQ a t\PL` HaaZH(=+q6i_on۶upE&tx>o!(P(1 Fyٙz֢P7 bzClr 5 Y/BX_Ԩ:XDd " 2w|?U҉xW&Na6) D0M /@ayggi[ Pܦ(*p52ra 'jaY,Q 0B9PɠFA` ObC°v4HE zpBDyǜx>L-W*-D9M> !O`~2)yxehLP D_æ(&yܶ :M*a\NtJrv>& +24l

      '޳'DP(KIb D1Cm # :ˈCþjS9}q? Qq842If491UIZp$:H),LT-C ъfdt0܍Vh[Z=w.@A:HYU.Kd@N&Ix_ ܊ZN|n0A˔ڡP}F14'D/E v!!ʡx92}|q%5-q /kaCJ&$dD`,%Gez?\QLt }/g> ?Ds Dsp\SeÛٝs)na*JnMN4S0I7JOWao"4=je e@͛oiYs 0ݐvlR]ZxB\%P|V< 9 oUU% Vt!xѥDLX3 GU5Pм+pAWCP Qzn֕\OahİGGr3&"hTP[&{%K1Xڧ2uBS9x)La&)vBH<aPB*C*Jn0pvd WTc:?<)`H@\A )!%|!o =˜x_0Ա 9[oZ/^KQI0X8{njINHg+q'ʴNj`)ӷ?} %ZS7=҂C=w͟g8g"%U*2%'*D*4Ǟ{__ ;ќ29#}=1(&xߴE \0@M5NN`Цð'6D180 E2D~c 8ꄆ[B\͜[ã'аŜfrv 7eLn!(DPy*E U0ðDLzR1D1|9 LD WH4e!n>&']LA% ɜ[0pHM&|d0Փ  Q=Qěd:mtfFH#˿U {|7"K6uJX|P_(0m>nSBH %.JOE3vBKupTCIEp/+ RArM_aD{0QRmɱp AzT0vv`xoI?3p|G#lG괮u.Wܢ&'Ia0C0@aVGV PXft8Jɠ JIJ `D MdbCF1}II/A/jc*;ћe 9bM>LdhaXe 5Cx}#"CL3=91s8 }X"D/IАoEdV1k_:l>V\mpqxSB^j+Q⑙QKs>bG,i=^POH,-pVxjȠrZ JHϚRBDC@OZl*2̫࣌/273'j0gBݜw5kVmB2 b RKQM2y& _C˓ .NPhA8NiO>}N"bq2’&g.TSӉ9qCo0G3Q'AVUF-!AbD0]e6F Mu#[L X|u ɠDz =j9~.H!e}Z8Ҳ_#-Nem 6>&gZz{Veb޿ Ҕ#x+>F`Qb}÷:~At=x(^V b/𪈳- #‰ް ! J) (!c?k*GStI-\! {lYN4'=MAPGBY;7' Oi(o3c 1819f{{G[,vdKL!2'ХHDa| b fc( (lY"KCZneZ(YQLB(2 :gN_qAY316X[Rۍ j͠[P)%98ə.S2~:_7mb:SG*"ȷY<0s& ]X|zo}/7){5~I Qaď LbH$|%0,tPVF"fHV|nP"1FM% W.d 9QBx'g0]MT+4`Hj1gIB%,O*)\b͋-IA(?A eX8@񃁍,{EyGyp!#}eG!IaRj&'# ݻfo^bi JrT!W E$1bjo>k߳IpF!Z6j(.cAaGSB&<%`Ec{m= c((Tl|FfДO. RT!PJ"CPy"!4 JT!!)ae`?dH5 vJV}/ͱ|*CtHou: LeTCQs$By c=B_ăOy^G*YFPą#:] Ay _5mǻ~:/C$`Μ'<"RfF}Ț)7^]#@mE'@(FWBD(`|l!%0 ʊ #j) )A]cǁRAhP]3ghወ +3^_TJBKʌ" ;@QJ>cW+-pCf}!A4 ?Xt|_[ ýŀ BؒɒJ7 DH(jb` %+*QM_k(_2)|u7>.&#ʓ6%6 m%\(* 8G(R8Ԇ B2ZAQkAʑZE`H2E[`_k_z祯Q|i;64|u A~`p}85 ހtA% "JtJ3ڿ+p'fJүOCعB(aۇ_)Ё77kPQ_TnPeӐ@ H! {UDdwBpGzJW0fPX>}>>;gNkB*9Q./ ABɌ73ƍ҄P~wƄ%R@='"W w CFpLX@C1!oQRjFa#E`7Bw|T_EXRegS~. TB?&ls31v ZFCg>v,c3i$* B@(ڍNtk] _yg:!]%t;IŊB %GwV ׀eR !ISķHbFDŽWk71ƄSmZAa'My}CWGm()Z:Aa aSWJ8{\ PFĻ PxI& **Nh3hRĘP: TNb#;@j%=̕|(1ä\JjK&Lf- Q>FjRC,*:ې!~n ŃBK4—>v) h9:8gGYqw܅ ao:h1"a#4CVw̔E:fl\y~˝DWw{KOr9+3~QNXR[JaG2UHfc<$F(ABG !Ϗa=p n%O0{F٥\41c} Bgp~Krd~hC͠P#(GIٙN P)%(=!5, 5] ۊ'Jݑ*DK)m9ҭJ޺BhG(,#SKngBx̲;?pB5V-T`'L N(%Z Q냱^SY+~ 4J;2yHm=FzJy섻dfs8( ffU&[ Ob P?RJB`ජ:^)l> :R趯p2ڍ%GQ)JB1a_XS^BnI܉^CȆ %UΕ;fحR3yFAB !njkC4A‹Cx!E)Xkrr wԼשsS BK 31*Kur'%4rGPԢ*'6G6H#PAػ7 )ڍ&@P̢ČܚO;&DD5`h % vy ń:W,PfMZCG~T)0 -r ٵ9٫ֽu'*1vL>L\\:UՇ}˚lQx A7* ܌e&̋_'4 P)᫚6&!cQK7 tT}_7&׋nLaFʖhw^px8O# QL( 4\P@QU.Ca!s!) ){߉Q !KR-@Lq|sh]\n«|D%d *7`E +JS)#2Wœ5!#*! J0 &ݹoIeUB!_Mۨ|T@S*LB6:  {8O7۷3rB$?VT$)#=(y4B}2Ąn[c Z _Uy.\8;j8Y5嗁USBuTb&ᑌ=<Ω3A3@2Ztp㖴5o ̒9w3IW'd\iǕ_1,?33…xx.OBd/D? BdQ!/$*a]ꭴ5{*bR|8;+a+- 4ǷJH$nJTo fТ0~)BmIvNlEs̨9؏fwZ%P(.Z ^j&A&f,ei!d/j%)1\ aS"Т0B1786ZӔ0SvTݞ(sfi1 “`P HQ6?_6*d&ܰ=Ҽ,՞g!7Oaq-x]ݙ++NAö0LO?Nɐn5ntPs<5^HL*aEBnj/WBy, %=)ض{AK2bB6 + (R{B~Op p&~;3hC (ܦJ ,ͣE; r5Kvwb .?%G 7R IDAT4)pVAbӨղ&h2<3غ}B6_]Pqh+p3)WXEfS F"Bu"^jl~FӕvK 5U#oL0vʷF<@5-=PP(iPq(?<p E( w *d&݂ Ia A`DiGMTB5cPYSU CJOeG U*oK:UYoʗ !%j-Yn7$0p5}V{SBVOsv(ܧz /ieYJ(w*_ձ>pGKm/3ѫAaHA033_aB SPka2aa((+a(D3a5n-T['f<% odFw&1 PBlo&w.!Fss33 Q,P*Iڻgd@E Oa ʌ;]% 68,$lJD?z)!xQJ "%T ʜ 0BrbFfG+3Ąehߤ]PWJ rY.ضf2t'w;3;Q#.* 㐴׻P/l: }4'?>}yYC:PVfnuh|4?zVBP*Z8[ƄfJXf<V0]v%406֡DҲp:nt-lvk0Ǚ)o;|>33AXX1aSJ A^8(ѿŅ(dsh5b'Sn{eݕ*X뗬ԏ7: MfBW !J>ЫBZLy f"p>1&Š&㩻>J⽣|~.!CvTꥤs hɻGxS^h1\忬C!Sjx2eELdU B5f/ ՜hgx ;za0 )!dtJQYxĴLjh{;ъ:!^&LFҕ4SiBw:\$c7)L@XR_h_yY)ts3q)nDOh:`33dnjCfʎr+Lppʘj̖63\gCX؞B*QЇ۬ߧMuB̅_p[F,mrpF@BXcvcf& cKڃZ"853*Pх u~ Sڗ&%w,v4qkzoo.;F"YTh!(̥^Bp89*GL DuWPW4!MJxGQ-R(9/sZ}0GSAbL3$G[LJ _x 3*aEY?uJXʖh.aN t\2T0Զ$ܨg!VavI'6{ ).I9f4 EH SB)Nj4.\2iee ݅0%|V3 dp#c-i:ao73 {0:h{w@#q -njǛ6oR;f4Z |//Q)M;M1;juس ;C$ftdX߶ f'./R F̘֙u Oe0hG3Jˌ"!4J ͠bVLh]ϕ'plS`+ oמpw] %flfv̔jG!ax9,/?$?ԤZoQ8xgaI铼?WLRPJ /2iQHK+xd;ZֿڪkРDqb¼n>Op:_ɛ{Yh;! 78t>«7ލ>CmV U(^x0|I*E,;^Ϯ=׏ y^J#c~BoLh.zKM"H ;f=gvL5~yДbvC$h($ġ}5wCpzCb= \aoʆp`;񗒣IAaD m3 aPMpPRfmv^fGs9gtLU ܥFԘ0aeƎs~Ί'7$޶hj(:~уr>Zkv:DN||[`u\.<}EP[e VBW*!JhzGۖ$T/OuBO֑_+y3v;;Sb})nM^ro$7KqkҧDIW/~~G ̪/-\oat䠧2|3'!\Ln 2dbOT^&-=!OUvtlzx;LI̸R #(8v:SRwQ𞚄9{RϨI;mw๣;*eKD(lnȰv4<9TeңWYJ8q+!g9"i^Ƅo1!/„Z s*CEcfqSEmy2zGDNSebŒ`w^İ6- 3(1W Gր%2.;VZKR&fT>ƌ/ul aJKmR2F,-x+Զ +gy;܍.ޫ2k ~f1~f[x[RA7WpBV<&\%&,˲7͒J7JhRV0mXeKRf$)G+3҆Q(pV[yQEI|,A 0g[Tayao VJPMΞ-`?n uBH̬azhmqb¢ H{, l2,b^% Bx-ZLl)&5!Sph󇗄k5Z ly*kKt?Cʣh SBXo1-,0;*7Ϡ-n\AOpmV ?2!j%oقpqr>)CXm͸&Xצܠ=lՎ&r/!%$G.t!\,9\0M ҩn K3>(ySOs EGQš_?(Aowp_yT0 . HaӫeM+ S&'0ݍC]&Qʋ?zUfK ń!),JZ=T%|Sܘj &$tn6[QLḐA(a4۝1/_?sk8g|޽xܽGԿVӁ RB23@V(!\QcYe VhqZ }LW{ם cG%$+ MZF,QB͠~) Rkaljq6YhBy~44{%t_]W,0!#_ + 7(EUvff…cA)̜ˮ )1:x:!ѝ_ec)!eҜ}M?6p/2J8T'Wف1EEQ(vgz NUi|a%·TC}^<7JᏜV|m[3Ao3 !$ +! )f%[Đ?NYo+aQBGܥ@!,G߷'9v"nebur%gU-\/l)_GOue&4 r=))vT?<;!CJG0\W!4 Z>^Kw Lp}0ƣ -K PBdLəM_(eG/UG ܮ5$B2);JĘ\w:fuG3@Y =.jfRi?{ƌA}; "#*:u VQD@ |hAM[OԊ|X8|pkkk'qG_ta[?na܍& Q ˩.'i!{킰M\cJFNE aPLJ q+_B׏Ҟ^iG+**;^|7ʋL kx !`$ll/=TS!a?`LxS^YBoǂVOvBXZ-!o~x+E<$]k:JB9d7 {?T3XV(v5H%,'fcŠĶ5;C*İUEȡCpй3?>ȇeaـ,W{mg06&=*~]BߍJ â%M~^S3sX~|p!lX-7JeztOA!IB@.+ Dik)1aNr" a?]g7qlٳ_lyD5;gU't稭Db[ o:) 7F s/tO!pOЍf\PɑT?/fzXM iP3NQh!lyӣBBQJH w-]%fƒbǎ*%L,ZЛBE%JɎ.ZaFHsAZIh!TKB$6v Dž(#W=dm[j# ?2{xʆt7˜g:flJ [J;A@V1 B g)I *=ʥpFNhoƄ (*x|#_.Z*{ް()Jp~|A!*Ϛ9~-_?;/SX )!@H&h Xė8J7)xQ J7JpZw $A,94& #jHp}#( ඤ8Jq8j8ҏ.ѕk_U,)%L bPUe@hܨo(ցE)T w&/5CVDžP@8b#ҏrd©BT9j kyupe!iQKTA%B#ç¶BP a9RO䜜O  AB¥JG] ivB_]0?Z-!phJ {xUv{) $7ZC sj3SmCF+m"io ވ|nD)d*aeA{= !"$!\$a7CACFF .34kWj) P11"jG.1KK D5c!Uq~aͨ=s"ѥ0aLéT"~3Hᰇ܌ΘyY$0K0_{ŠOO$ a>!Sk 0B@QjԄ*L˔.DbP(SX~U Ąy "XBֽ! )Tydw2[(!QI?p*1+s!C*)T4,<&k O02x`n0(YhziK>KvLQLʈOeJeⅉbpB| * 0 eeD.b+W5`1d4J^9\ uPÔV/̾]tp|L Û16ܰm q)@!8R#nl{!P^LLoA $7Z8I+~ȑڍP5&UF CH _PaG!t0é.5٣@_Vk)D9\ 3}%)Q 4l8~ IDATT0 b(@ mkaB[7ojCn I#uZy[[dď>:ښ  7BO ȡ 9e0ݍ^Q*OX1eT(K&H-0a1a5DD)T Vi)N$'F`$Ωq>%MP:F# u*Kj0PQ-'e&>M`A(N0hX!EL+ &i90(+E VUM)vT +D QH3GJ4ӝ m=}3A!axhXcq-^"J/P PbfFQJkA _xsI!ǰ 1#ZQl~dT(%E V/&CnE ] N%z+o]33=|Jj5ko56i#8RtZhp෇NbxI^Z1+(/-hFihHXCHU-2$Bo1( b8jلe˘.%DC( a9+Mi,Za !8.ZuŰ_3PLt rf=La?/!28D 1Hg$OQjPAdp ġ{8bCCoZ&DPԃe B^}asGfh{0T ݷ,M6U uڥ1;:^&,2.\L ZF^10%?cuD0&5H!ibFݘvWw3ƺTARA  T# Ye~(W{ cNtϯ,f4F۩: a\ z= +/~b> X)pDK[͒ \F:(QBipyГ +Ѣ :e j}6CBh0\U'guY懦.d\#3608f5‘I|[2f͜M[|t.|q0 x}B+KP08WEy7PN-!1r_b/FC؄nA KL\ 'LpeIbv))!\a'ъ vXn.NA 0BDŽ+5 ! ,O&hz ٪ %j@M1&\S+9k<ç &=Wz%}'|@0x0ȉ80 a[w ;Aw- )G |j C NҞ25ہC'ZwƦK8"&%G]&Pń$R _X.P<'Z(CC/%cOз%|̗I-)nn\G`c#8Eڒ ׆Z˓21̹{zsl`FК1 k[Apc=i,@C(WCOY23fգdɽB "!;6r> >5AJ4Ci-}y(oYSnDWBFR !C02h +I |_#RTF@R~W#D7IA"P b89sj0)gn[341+3ths74t3z/1+Ka vRq⊕DKyd[dQ= _~'tYlǑ u.tQy#uBƠ&q!(а:Q#`p mEiZX -BgA:oԅJz^G2'` j `(ޔ~)CvOù)| K,1|Y<{^3w\EOyBڮS+ϒO%(}q-.ۦk$RL0ĨrAㄆ:T4NAKA=!)!'W-ZNmBpMZj3ek6ړ>Y ? u0`D}uuvY,1ekCq}7N1E0MiN-c E) zB8A~,v^4B#%%Gҏ"D J+Z=kjA){10D pFpAԓ/&#Z=3$sb8Јa6 ӂ F9AF;X^Ti,1B0`<,PvY-}pvD*w7t^z*BH~P{.r3pJ8Ra9! bST j' ÉA=4.GbdzepYk  7Bj|F[ Ttc0v=8?h'TwJ '2hY ,X;AGӅPfGVq31\6ޥhG5a עJ Z yfcj/AToA)H* 5 B- A% Vg(e@pSuw596nd96'`OyĞaeh+W|j_t/,qxRa0F;Blf;Q agw}PBG@مfuhشD7;ȁe&&5Tu4UOɇih>'a,&d4u.2) M i/޴`S!Zl ֳ>7o}/nM߽&xq(tT՝@u!WƐRR!r(C u>4X,588(_肍*4^% ݫڥa8'V3"yD18H]Ҡ1QTDihqhZ{<Ɉ+?)X -gb4`\EyB+M6aƄnI Xdj)1.WS.V/qr$ ^B=A7.nz}Wٽa8buP0Df{o쏕 [3.mBFL?=^H [nSi'!,D{W= La> J@[wl& 9&*rA}OgޤY=i2ۨ3=(,9ERхbBpQ]A*CPFp `DšFPT,2N ڄz8Bp8] jmQ `| k hqj%sh(&P".G"wIa'O>)(? xT3ULP= *GZa-#B ưŔ`!3Q{i=(GnK9O,2bO*apK CGq gʿaH5(T׃%BpХ3RVyA(ulA WWMR " !ؐ\ H)!P+Zv ZdBEń3Ad<ah@$GFXktdCCXL:TN% O}[t,Aq F$SAAܷ: } -×6P . ckQFbM8*|tn3QGnBj0tHϿt2QB{ pEeB!!H:rY' 0'X-#-1ߺ(dX J9"SB ShpARl0"Pbl z ` я!Csrb mm@b':X] 91374a$ $jn|j@ݞPm3׃.yUsHGCj^eD x%F~ gA2!B*\QqDx b0hpx4iQ}~MEd5xE( f)`8TC02ȳFh:$VC bpgƨ~|"`Wi| Q(2,|Px[!lB Ȅ_vx /cWlBBpc~n*歚PHM>R"8K HE  jUB].VW':{3J` E" XPmkЈ6[a^Z-#6#cKN3EWaЂbee@E'Vnwܙ~a4*0@'%}1!wf~Մ o* qc 5{~0A(dx]q@^7YD'&C D8a\YxDH* Wq [H27QA=yњpb@PB:r%֥˸/;$$}t+|%, B܆@nVbBOrx.XQ[y0.2SD ^ AAT|!ԲA7`p܉vD1B ?ʞBb aAb_kki(^(*g &!ol\}hFه. /ᾤ0^ !x AS L!8.\ [^q.P8dQ' ?\$޺":&U>]ZRNQ ҞZK;%v_(Jx%a9C1%k0z!ĉaMI {X!Q5G(2`HeB𚛒jVvҜI윛kSΡ/gm#1r9B  ˊAQ!b Dك-k!Aۂ oBpX#RtaP@DǖȆH=!.S%DLG`Q`СĘtl#~0.P>xμ ԟ Lt6&$ʠ^G Ń 1~,i95!bIh%KvI Ze9V&Ȅ{W˨۷EB ,B؋*B 3EhWz(=V>b24FZ,J0a永8AG1(&>Ox>Cܴs_ g{TZЭ 3,mԘaMxW-8fEB WڐSRV!`;,U:18KZFa2J2#HP-Kׄ-Fp1 B 2#rna]-ĄvawZ ȎF >M(s kP_y(>XKn@@M&bQQGmϜ(6E6#`a'L6wraGɃYM6 -WA M }@Wmn-ow<&0vT`w714 )84횐7Kpi"8xRFDvP <h0 sg46%Ch[Gf2 m۷2-ufNG CP!8ש0$B!ssApvA+!2xTx@! =gW& #IAEan\ HaA6!PHDiZŚB O &O-s`2~28mۘ3BlL(vdDؓhsvQa3UdB dvRF%ae%Gm ɨ*WtTLx hBĐ\&SZ!EobhT42ݖp+ƦǦDFxqfxt`J}MxWLfMB=0 nчݶݟ1GGڣmܗps ))젎IDATdT\;˝!uHۈADёaeYdB`o(WdBEkI(B JHa?2!% nor؎LV`]~ k 1dp 1ԛ@..^*fMчЭ#â⤈(ϱ.udO,4djۜ +ҟ cRLΌ{bm~fmpW@4g6DŽAY!"[|6 R9X QJE"*$n >-~(\쇅c$p7`XDp Xިs ). 94tRIw[`01-!(tN$= F !eBasTwf|%ڏmŃ| 4&;E!ܨaP?9e2"TUa28Z$ R>nPTV~tTOIXr=*<]hLjVy^f q8$18iAQH=(lD}Vu!rX ҅`X""1^IbDdB~`Lsߗq9g rT^xgP8̈ 1U&|s^fH ,H}k`PG^ #E91٦Uu)qYB8@?PTXmz2ܒEBBE. @+B .eBѠ` P8U N9c* }r %$HpwLdYG}810/s./=U)í0A&lgCk=)PLՕ1ho3%dBXRRJ p_R )FQ!,8* i5SH1 p:*MH2 E/q@aD0]6UJ51ZAw *.[NoZ~c빎}1 /PdP CxQc8, ͱQ!ːA $mmRZ"@ Gq Vh ɄբSdBrej&$ Gok ATA"H \Ca0hiE}l 㚮aw!>]E 1ӜEէ!szqJSypsSe2qSs~&W|o_W Cf(T( qB!}ӼPɄ2# 1,bYH(x[M)d DV L6 (1HD 後0!xU!׏F&'-P2d=2,XxP8k$ 6I K]kX2,%pK8ҕ> vE>Jgb )[o_Urۗח s|_aMH2 g=0S!8$ckY@0a+NA)ݎKQax))'X`@LxB9gu P]I\:U2ݖ)#) T`tXvՀN >L]]&1xiLJ@0AC>/g%4G$P>0abL2=i!OHo#6KNöNc66!$DXVhj 0mJE- Ԅ'ńA80 k؄:~Li)Ex 5x %z^~BM[v*7@p4 :eW2ySܗy3 ӗ9M_FA8G*hw8oz\.  2FVIk&PTf(o ^LhaX V:* PDHqsQ !b2JKTx\=ُ;dEPeD Ab276EzñzdL(a,vHfaq`_>9v`: FߗYs2k}_}T~!>(^JM(# Ɛ;37ٯwל2<@ 6.& ۃ&QTTs>B.G+ù!"xa62x['xTXtE8YÝQPD!R jlSzV!n bR%D`5[Qlɦ#̠DŽ̫oլ)ssg](a w(ČPB*ic:~oǐF5"FL=h0Gy](U@auOa63Ba-QK!y0“a%BC@o X3Y)3 BDFO4rMX___Q@ˍJVҕ'>S4ϒ`A*=r_i2R;e 32!e(P,s: ݰtj6 /X8jWh(X REHZP\FkU2 hlAY% @Ma0De"$ e{TANEuR Ha=!8)iÒ]w-vVϙC3OY]^^=E|29eLE䣟5jBk\"C}C ÎkN>ګY|u:w< 9l "CzMHr>J ń`)Ֆ5lTa1!5E2Mn:j7-PpJ14]1 0HKѮ k`ZOAG@ُ-R̉0r(l+$Jї_ d4LHr[ۣ߂sZ_.ZFez]]xEX$M'Hh"քet[QGk vF 9*@a W)r!{P׃ԕqz^׃H@Zne$ND^9L(19ք5ᶋU/{Zh:2/!Q) 1|P CmЬZ3ӝB^u$B5!Ai,!ذB PP#x2a1!e9ڴ A8,İF-2 uG+4H&zJE Cv0KrďRj0;99Ԡ~w2l@t4[weLF1x$sqrѠ Y5?A1 "(CAmBNH*"m'P#(]!i6;,IqH"pEM u*Z堪@Pz2@:TlPRܚ LƐC/ 2Eښ{h-/ss (gdB]RIȽ[<@oYfevO Ʉ$:2ar$ 5H!qh0$+ ! #B6\rA6<(,2XMx\yucB PLXLHi5BWKJ%B"qwJ#ܺ;Q-9# bK>Lc;Q~)* |S_o.&D3PEZzV/3 U rxu\HMY vfzB2a2!"5T "FVȄL(# di( OJF|<`㜋v.ZѲ25.=V* 'uLr!SYiJb{k$0a,X=Fems_$jcs:90:fhJC F?z3= FnI(&Tl OnsLxJLH"!7ZQmJB!(2HmDl"QlpM^eݢB#F;EM.J}Q$$  d:t1Gټ.r_&91}OGnO:ʍ6PdT6Cg$4:g1E:6^ L;xdǡ auUB6Z̓ 1CbI($A$"4eЅP`'㖄 C4T,Tu}7ӖHݩ%ϒY@(oO$B՗á5ؚ'%Z KP{L RM8zP<|95bwԞIܗ!Vqo(4*$ ʄBAF< FBa1mE(b:z!T"d*PX&LO6 R6*aɄHa%KDtRɗuF35ɟ%߰. nAxߗYüdEߩ6i aad:-5U2zHAф.ՠ9p^F уTR* KD !V.sX|VLkT2[ {\.@M(we؃.Q&<fЄ C"!(P '(8`[Ex8hB<,Ԥ{'\ !?i"ltKzgHzAp~ Ձ#?gS aA>}ᝈ ל<BmBBpgBA}Q~" 2 ;FX̠ BIF912v[_maT6 VǕ$fX(=fkT܍y(HD asVQ9FAΟ%D #y "|yBKƄVMfBpA 04%QY9QsB8XUeLxf0ބAj h"T KEHN'Nּ.كz$ek|bIF-܂`%pKxeUÂ|skl07'@k\mQ!yY= ֩I4٨au@ 3@kj Ohf@aM>~Pohp(4%~]JIܟ'=ub<#Ǟhxջ J0eUj $_|" 5G?E%AIG{;mjB=!I$օ $n6!"x*H`DEh"Zm0TrW&Ƅ쮌66F'\_I0psd/MGow&~0d_;&| {df&c!C7zL,ut|J壑*RhNny74?y2f %2n7ે L)џqAF#X ?QH p(`ݗƌPJGɂ;qc2 &T"$v,8CxDPeЃmj !]z)ty=OAT-p'9oP5;IENDB`gohugoio-hugo-6abdaca/docs/content/en/functions/000077500000000000000000000000001507671574500221525ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/_index.md000066400000000000000000000002721507671574500237430ustar00rootroot00000000000000--- title: Functions description: Use these functions within your templates and archetypes. categories: [] keywords: [] weight: 10 aliases: [/layout/functions/,/templates/functions] --- gohugoio-hugo-6abdaca/docs/content/en/functions/cast/000077500000000000000000000000001507671574500231045ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/cast/ToFloat.md000066400000000000000000000016211507671574500247760ustar00rootroot00000000000000--- title: cast.ToFloat description: Converts a value to a decimal floating-point number (base 10). categories: [] keywords: [] params: functions_and_methods: aliases: [float] returnType: float64 signatures: [cast.ToFloat INPUT] aliases: [/functions/float] --- With a decimal (base 10) input: ```go-html-template {{ float 11 }} → 11 (float64) {{ float "11" }} → 11 (float64) {{ float 11.1 }} → 11.1 (float64) {{ float "11.1" }} → 11.1 (float64) {{ float 11.9 }} → 11.9 (float64) {{ float "11.9" }} → 11.9 (float64) ``` With a binary (base 2) input: ```go-html-template {{ float 0b11 }} → 3 (float64) ``` With an octal (base 8) input (use either notation): ```go-html-template {{ float 011 }} → 9 (float64) {{ float "011" }} → 11 (float64) {{ float 0o11 }} → 9 (float64) ``` With a hexadecimal (base 16) input: ```go-html-template {{ float 0x11 }} → 17 (float64) ``` gohugoio-hugo-6abdaca/docs/content/en/functions/cast/ToInt.md000066400000000000000000000020001507671574500244530ustar00rootroot00000000000000--- title: cast.ToInt description: Converts a value to a decimal integer (base 10). keywords: [] params: functions_and_methods: aliases: [int] returnType: int signatures: [cast.ToInt INPUT] aliases: [/functions/int] --- With a decimal (base 10) input: ```go-html-template {{ int 11 }} → 11 (int) {{ int "11" }} → 11 (int) {{ int 11.1 }} → 11 (int) {{ int 11.9 }} → 11 (int) ``` With a binary (base 2) input: ```go-html-template {{ int 0b11 }} → 3 (int) {{ int "0b11" }} → 3 (int) ``` With an octal (base 8) input (use either notation): ```go-html-template {{ int 011 }} → 9 (int) {{ int "011" }} → 9 (int) {{ int 0o11 }} → 9 (int) {{ int "0o11" }} → 9 (int) ``` With a hexadecimal (base 16) input: ```go-html-template {{ int 0x11 }} → 17 (int) {{ int "0x11" }} → 17 (int) ``` > [!note] > Values with a leading zero are octal (base 8). When casting a string representation of a decimal (base 10) number, remove leading zeros: `{{ strings.TrimLeft "0" "0011" | int }} → 11` gohugoio-hugo-6abdaca/docs/content/en/functions/cast/ToString.md000066400000000000000000000017461507671574500252070ustar00rootroot00000000000000--- title: cast.ToString description: Converts a value to a string. categories: [] keywords: [] params: functions_and_methods: aliases: [string] returnType: string signatures: [cast.ToString INPUT] aliases: [/functions/string] --- With a decimal (base 10) input: ```go-html-template {{ string 11 }} → 11 (string) {{ string "11" }} → 11 (string) {{ string 11.1 }} → 11.1 (string) {{ string "11.1" }} → 11.1 (string) {{ string 11.9 }} → 11.9 (string) {{ string "11.9" }} → 11.9 (string) ``` With a binary (base 2) input: ```go-html-template {{ string 0b11 }} → 3 (string) {{ string "0b11" }} → 0b11 (string) ``` With an octal (base 8) input (use either notation): ```go-html-template {{ string 011 }} → 9 (string) {{ string "011" }} → 011 (string) {{ string 0o11 }} → 9 (string) {{ string "0o11" }} → 0o11 (string) ``` With a hexadecimal (base 16) input: ```go-html-template {{ string 0x11 }} → 17 (string) {{ string "0x11" }} → 0x11 (string) ``` gohugoio-hugo-6abdaca/docs/content/en/functions/cast/_index.md000066400000000000000000000002321507671574500246710ustar00rootroot00000000000000--- title: Cast functions linkTitle: cast description: Use these functions to cast a value from one data type to another. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/collections/000077500000000000000000000000001507671574500244705ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/collections/After.md000066400000000000000000000037171507671574500260630ustar00rootroot00000000000000--- title: collections.After description: Slices an array to the items after the Nth item. categories: [] keywords: [] params: functions_and_methods: aliases: [after] returnType: any signatures: [collections.After INDEX COLLECTION] aliases: [/functions/after] --- The following shows `after` being used in conjunction with the [`slice`]function: ```go-html-template {{ $data := slice "one" "two" "three" "four" }}

        {{ range after 2 $data }}
      • {{ . }}
      • {{ end }}
      ``` The template above is rendered to: ```html
      • three
      • four
      ``` ## Example of `after` with `first`: 2nd–4th most recent articles You can use `after` in combination with the [`first`] function and Hugo's [powerful sorting methods](/quick-reference/page-collections/#sort). Let's assume you have a `section` page at `example.com/articles`. You have 10 articles, but you want your template to show only two rows: 1. The top row is titled "Featured" and shows only the most recently published article (i.e. by `publishdate` in the content files' front matter). 1. The second row is titled "Recent Articles" and shows only the 2nd- to 4th-most recently published articles. ```go-html-template {file="layouts/section/articles.html"} {{ define "main" }}

      Recent Articles

      {{ range first 3 (after 1 .Pages.ByPublishDate.Reverse) }}

      {{ .Title }}

      {{ .Description }}

      {{ end }}
      {{ end }} ``` [`first`]: /functions/collections/first/ [`slice`]: /functions/collections/slice/ gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Append.md000066400000000000000000000044451507671574500262300ustar00rootroot00000000000000--- title: collections.Append description: Appends one or more elements to a slice and returns the resulting slice. categories: [] keywords: [] params: functions_and_methods: aliases: [append] returnType: any signatures: - collections.Append ELEMENT [ELEMENT...] COLLECTION - collections.Append COLLECTION1 COLLECTION2 aliases: [/functions/append] --- This function appends all elements, excluding the last, to the last element. This allows [pipe](g) constructs as shown below. Append a single element to a slice: ```go-html-template {{ $s := slice "a" "b" }} {{ $s }} → [a b] {{ $s = $s | append "c" }} {{ $s }} → [a b c] ``` Append two elements to a slice: ```go-html-template {{ $s := slice "a" "b" }} {{ $s }} → [a b] {{ $s = $s | append "c" "d" }} {{ $s }} → [a b c d] ``` Append two elements, as a slice, to a slice. This produces the same result as the previous example: ```go-html-template {{ $s := slice "a" "b" }} {{ $s }} → [a b] {{ $s = $s | append (slice "c" "d") }} {{ $s }} → [a b c d] ``` Start with an empty slice: ```go-html-template {{ $s := slice }} {{ $s }} → [] {{ $s = $s | append "a" }} {{ $s }} → [a] {{ $s = $s | append "b" "c" }} {{ $s }} → [a b c] {{ $s = $s | append (slice "d" "e") }} {{ $s }} → [a b c d e] ``` If you start with a slice of a slice: ```go-html-template {{ $s := slice (slice "a" "b") }} {{ $s }} → [[a b]] {{ $s = $s | append (slice "c" "d") }} {{ $s }} → [[a b] [c d]] ``` To create a slice of slices, starting with an empty slice: ```go-html-template {{ $s := slice }} {{ $s }} → [] {{ $s = $s | append (slice (slice "a" "b")) }} {{ $s }} → [[a b]] {{ $s = $s | append (slice "c" "d") }} {{ $s }} → [[a b] [c d]] ``` Although the elements in the examples above are strings, you can use the `append` function with any data type, including Pages. For example, on the home page of a corporate site, to display links to the two most recent press releases followed by links to the four most recent articles: ```go-html-template {{ $p := where site.RegularPages "Type" "press-releases" | first 2 }} {{ $p = $p | append (where site.RegularPages "Type" "articles" | first 4) }} {{ with $p }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Apply.md000066400000000000000000000015321507671574500261000ustar00rootroot00000000000000--- title: collections.Apply description: Returns a new collection with each element transformed by the given function. categories: [] keywords: [] params: functions_and_methods: aliases: [apply] returnType: '[]any' signatures: [collections.Apply COLLECTION FUNCTION PARAM...] aliases: [/functions/apply] --- The `apply` function takes three or more arguments, depending on the function being applied to the collection elements. The first argument is the collection itself, the second argument is the function name, and the remaining arguments are passed to the function, with the string `"."` representing the collection element. ```go-html-template {{ $s := slice "hello" "world" }} {{ $s = apply $s "strings.FirstUpper" "." }} {{ $s }} → [Hello World] {{ $s = apply $s "strings.Replace" "." "l" "_" }} {{ $s }} → [He__o Wor_d] ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Complement.md000066400000000000000000000040241507671574500271150ustar00rootroot00000000000000--- title: collections.Complement description: Returns the elements of the last collection that are not in any of the others. categories: [] keywords: [] params: functions_and_methods: aliases: [complement] returnType: any signatures: ['collections.Complement COLLECTION [COLLECTION...]'] aliases: [/functions/complement] --- To find the elements within `$c3` that do not exist in `$c1` or `$c2`: ```go-html-template {{ $c1 := slice 3 }} {{ $c2 := slice 4 5 }} {{ $c3 := slice 1 2 3 4 5 }} {{ complement $c1 $c2 $c3 }} → [1 2] ``` > [!note] > Make your code simpler to understand by using a [chained pipeline]: ```go-html-template {{ $c3 | complement $c1 $c2 }} → [1 2] ``` You can also use the `complement` function with page collections. Let's say your site has five content types: ```text content/ ├── blog/ ├── books/ ├── faqs/ ├── films/ └── songs/ ``` To list everything except blog articles (`blog`) and frequently asked questions (`faqs`): ```go-html-template {{ $blog := where site.RegularPages "Type" "blog" }} {{ $faqs := where site.RegularPages "Type" "faqs" }} {{ range site.RegularPages | complement $blog $faqs }} {{ .LinkTitle }} {{ end }} ``` > [!note] > Although the example above demonstrates the `complement` function, you could use the [`where`] function as well: ```go-html-template {{ range where site.RegularPages "Type" "not in" (slice "blog" "faqs") }} {{ .LinkTitle }} {{ end }} ``` In this example we use the `complement` function to remove [stop words] from a sentence: ```go-html-template {{ $text := "The quick brown fox jumps over the lazy dog" }} {{ $stopWords := slice "a" "an" "in" "over" "the" "under" }} {{ $filtered := split $text " " | complement $stopWords }} {{ delimit $filtered " " }} → The quick brown fox jumps lazy dog ``` [`where`]: /functions/collections/where/ [chained pipeline]: https://pkg.go.dev/text/template#hdr-Pipelines [stop words]: https://en.wikipedia.org/wiki/Stop_word gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Delimit.md000066400000000000000000000013431507671574500264020ustar00rootroot00000000000000--- title: collections.Delimit description: Loops through any array, slice, or map and returns a string of all the values separated by a delimiter. categories: [] keywords: [] params: functions_and_methods: aliases: [delimit] returnType: string signatures: ['collections.Delimit COLLECTION DELIMITER [LAST]'] aliases: [/functions/delimit] --- Delimit a slice: ```go-html-template {{ $s := slice "b" "a" "c" }} {{ delimit $s ", " }} → b, a, c {{ delimit $s ", " " and "}} → b, a and c ``` Delimit a map: > [!note] > The `delimit` function sorts maps by key, returning the values. ```go-html-template {{ $m := dict "b" 2 "a" 1 "c" 3 }} {{ delimit $m ", " }} → 1, 2, 3 {{ delimit $m ", " " and "}} → 1, 2 and 3 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Dictionary.md000066400000000000000000000015251507671574500271220ustar00rootroot00000000000000--- title: collections.Dictionary description: Returns a map composed of the given key-value pairs. categories: [] keywords: [] params: functions_and_methods: aliases: [dict] returnType: map[string]any signatures: ['collections.Dictionary [VALUE...]'] aliases: [/functions/dict] --- Specify the key-value pairs as individual arguments: ```go-html-template {{ $m := dict "a" 1 "b" 2 }} ``` The above produces this data structure: ```json { "a": 1, "b": 2 } ``` To create an empty map: ```go-html-template {{ $m := dict }} ``` Note that the `key` can be either a `string` or a `[]string`. The latter is useful to create a deeply nested structure, e.g.: ```go-html-template {{ $m := dict (slice "a" "b" "c") "value" }} ``` The above produces this data structure: ```json { "a": { "b": { "c": "value" } } } ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/First.md000066400000000000000000000012621507671574500261020ustar00rootroot00000000000000--- title: collections.First description: Returns the given collection, limited to the first N elements. categories: [] keywords: [] params: functions_and_methods: aliases: [first] returnType: any signatures: [collections.First N COLLECTION] aliases: [/functions/first] --- ```go-html-template {{ range first 5 .Pages }} {{ .Render "summary" }} {{ end }} ``` Set `N` to zero to return an empty collection. ```go-html-template {{ $emptyPageCollection := first 0 .Pages }} ``` Use `first` and [`where`] together. ```go-html-template {{ range where .Pages "Section" "articles" | first 5 }} {{ .Render "summary" }} {{ end }} ``` [`where`]: /functions/collections/where/ gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Group.md000066400000000000000000000016571507671574500261170ustar00rootroot00000000000000--- title: collections.Group description: Groups the given page collection by the given key. categories: [] keywords: [] params: functions_and_methods: aliases: [group] returnType: any signatures: [collections.Group KEY PAGES] aliases: [/functions/group] --- ```go-html-template {{ $new := .Site.RegularPages | first 10 | group "New" }} {{ $old := .Site.RegularPages | last 10 | group "Old" }} {{ $groups := slice $new $old }} {{ range $groups }}

      {{ .Key }}{{/* Prints "New", "Old" */}}

        {{ range .Pages }}
      • {{ .LinkTitle }}
        {{ .Date.Format "Mon, Jan 2, 2006" }}
      • {{ end }}
      {{ end }} ``` The page group you get from `group` is of the same type you get from the built-in [group methods](/quick-reference/page-collections/#group) in Hugo. The example above can be [paginated](/templates/pagination/). gohugoio-hugo-6abdaca/docs/content/en/functions/collections/In.md000066400000000000000000000011761507671574500253650ustar00rootroot00000000000000--- title: collections.In description: Reports whether the given value is a member of the given set. categories: [] keywords: [] params: functions_and_methods: aliases: [in] returnType: bool signatures: [collections.In SET VALUE] aliases: [/functions/in] --- The `SET` can be an [array](g), [slice](g), or [string](g). ```go-html-template {{ $s := slice "a" "b" "c" }} {{ in $s "b" }} → true ``` ```go-html-template {{ $s := slice 1 2 3 }} {{ in $s 2 }} → true ``` ```go-html-template {{ $s := slice 1.11 2.22 3.33 }} {{ in $s 2.22 }} → true ``` ```go-html-template {{ $s := "abc" }} {{ in $s "b" }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/IndexFunction.md000066400000000000000000000022551507671574500275730ustar00rootroot00000000000000--- title: collections.Index description: Returns the object, element, or value associated with the given key or keys. categories: [] keywords: [] params: functions_and_methods: aliases: [index] returnType: any signatures: [collections.Index COLLECTION KEY...] aliases: [/functions/index,/functions/index-function] --- Each indexed item must be a map or a slice: ```go-html-template {{ $s := slice "a" "b" "c" }} {{ index $s 0 }} → a {{ index $s 1 }} → b {{ $m := dict "a" 100 "b" 200 }} {{ index $m "b" }} → 200 ``` Use two or more keys to access a nested value: ```go-html-template {{ $m := dict "a" 100 "b" 200 "c" (slice 10 20 30) }} {{ index $m "c" 1 }} → 20 {{ $m := dict "a" 100 "b" 200 "c" (dict "d" 10 "e" 20) }} {{ index $m "c" "e" }} → 20 ``` You may also use a slice of keys to access a nested value: ```go-html-template {{ $m := dict "a" 100 "b" 200 "c" (dict "d" 10 "e" 20) }} {{ $s := slice "c" "e" }} {{ index $m $s }} → 20 ``` Use the `collections.Index` function to access a nested value when the key is variable. For example, these are equivalent: ```go-html-template {{ .Site.Params.foo }} {{ $k := "foo" }} {{ index .Site.Params $k }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Intersect.md000066400000000000000000000015711507671574500267560ustar00rootroot00000000000000--- title: collections.Intersect description: Returns the common elements of two arrays or slices, in the same order as the first array. categories: [] keywords: [] params: functions_and_methods: aliases: [intersect] returnType: any signatures: [collections.Intersect SET1 SET2] aliases: [/functions/intersect] --- A useful example is to use it as `AND` filters when combined with where: ```go-html-template {{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }} {{ $pages := $pages | union (where .Site.RegularPages "Params.pinned" true) }} {{ $pages := $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }} ``` The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page parameters. See [union](/functions/collections/union) for `OR`. gohugoio-hugo-6abdaca/docs/content/en/functions/collections/IsSet.md000066400000000000000000000021461507671574500260440ustar00rootroot00000000000000--- title: collections.IsSet description: Reports whether the key exists within the collection. categories: [] keywords: [] params: functions_and_methods: aliases: [isset] returnType: bool signatures: [collections.IsSet COLLECTION KEY] aliases: [/functions/isset] --- For example, consider this site configuration: {{< code-toggle file=hugo >}} [params] showHeroImage = false {{< /code-toggle >}} It the value of `showHeroImage` is `true`, we can detect that it exists using either `if` or `with`: ```go-html-template {{ if site.Params.showHeroImage }} {{ site.Params.showHeroImage }} → true {{ end }} {{ with site.Params.showHeroImage }} {{ . }} → true {{ end }} ``` But if the value of `showHeroImage` is `false`, we can't use either `if` or `with` to detect its existence. In this case, you must use the `isset` function: ```go-html-template {{ if isset site.Params "showheroimage" }}

      The showHeroImage parameter is set to {{ site.Params.showHeroImage }}.

      {{ end }} ``` > [!note] > When using the `isset` function you must reference the key using lower case. See the previous example. gohugoio-hugo-6abdaca/docs/content/en/functions/collections/KeyVals.md000066400000000000000000000014611507671574500263720ustar00rootroot00000000000000--- title: collections.KeyVals description: Returns a KeyVals struct. categories: [] keywords: [] params: functions_and_methods: aliases: [keyVals] returnType: types.KeyValues signatures: [collections.KeyVals KEY VALUE...] aliases: [/functions/keyvals] --- The primary application for this function is the definition of the `namedSlices` value in the options map passed to the [`Related`] method on the `Pages` object. [`Related`]: /methods/pages/related/ See [related content](/content-management/related-content/). ```go-html-template {{ $kv := keyVals "foo" "a" "b" "c" }} ``` The resulting data structure is: ```json { "Key": "foo", "Values": [ "a", "b", "c" ] } ``` To extract the key and values: ```go-html-template {{ $kv.Key }} → foo {{ $kv.Values }} → [a b c] ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Last.md000066400000000000000000000012521507671574500257150ustar00rootroot00000000000000--- title: collections.Last description: Returns the given collection, limited to the last N elements. categories: [] keywords: [] params: functions_and_methods: aliases: [last] returnType: any signatures: [collections.Last N COLLECTION] aliases: [/functions/last] --- ```go-html-template {{ range last 10 .Pages }} {{ .Render "summary" }} {{ end }} ``` Set `N` to zero to return an empty collection. ```go-html-template {{ $emptyPageCollection := last 0 .Pages }} ``` Use `last` and [`where`] together. [`where`]: /functions/collections/where/ ```go-html-template {{ range where .Pages "Section" "articles" | last 5 }} {{ .Render "summary" }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Merge.md000066400000000000000000000026341507671574500260560ustar00rootroot00000000000000--- title: collections.Merge description: Returns the result of merging two or more maps. categories: [] keywords: [] params: functions_and_methods: aliases: [merge] returnType: any signatures: [collections.Merge MAP MAP...] aliases: [/functions/merge] --- Returns the result of merging two or more maps from left to right. If a key already exists, `merge` updates its value. If a key is absent, `merge` inserts the value under the new key. Key handling is case-insensitive. The following examples use these map definitions: ```go-html-template {{ $m1 := dict "x" "foo" }} {{ $m2 := dict "x" "bar" "y" "wibble" }} {{ $m3 := dict "x" "baz" "y" "wobble" "z" (dict "a" "huey") }} ``` Example 1 ```go-html-template {{ $merged := merge $m1 $m2 $m3 }} {{ $merged.x }} → baz {{ $merged.y }} → wobble {{ $merged.z.a }} → huey ``` Example 2 ```go-html-template {{ $merged := merge $m3 $m2 $m1 }} {{ $merged.x }} → foo {{ $merged.y }} → wibble {{ $merged.z.a }} → huey ``` Example 3 ```go-html-template {{ $merged := merge $m2 $m3 $m1 }} {{ $merged.x }} → foo {{ $merged.y }} → wobble {{ $merged.z.a }} → huey ``` Example 4 ```go-html-template {{ $merged := merge $m1 $m3 $m2 }} {{ $merged.x }} → bar {{ $merged.y }} → wibble {{ $merged.z.a }} → huey ``` > [!note] > Regardless of depth, merging only applies to maps. For slices, use [append](/functions/collections/append). gohugoio-hugo-6abdaca/docs/content/en/functions/collections/NewScratch.md000066400000000000000000000055511507671574500270610ustar00rootroot00000000000000--- title: collections.NewScratch description: Returns a locally scoped "scratch pad" to store and manipulate data. categories: [] keywords: [] params: functions_and_methods: aliases: [newScratch] returnType: maps.Scratch signatures: [collections.NewScratch ] --- Use the `collections.NewScratch` function to create a locally scoped [scratch pad](g) to store and manipulate data. To create a scratch pad with a different [scope](g), refer to the [scope](#scope) section below. ## Methods ### Set Sets the value of the given key. ```go-html-template {{ $s := newScratch }} {{ $s.Set "greeting" "Hello" }} ``` ### Get Gets the value of the given key. ```go-html-template {{ $s := newScratch }} {{ $s.Set "greeting" "Hello" }} {{ $s.Get "greeting" }} → Hello ``` ### Add Adds the given value to existing value(s) of the given key. For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be appended to that list. ```go-html-template {{ $s := newScratch }} {{ $s.Set "greeting" "Hello" }} {{ $s.Add "greeting" "Welcome" }} {{ $s.Get "greeting" }} → HelloWelcome ``` ```go-html-template {{ $s := newScratch }} {{ $s.Set "total" 3 }} {{ $s.Add "total" 7 }} {{ $s.Get "total" }} → 10 ``` ```go-html-template {{ $s := newScratch }} {{ $s.Set "greetings" (slice "Hello") }} {{ $s.Add "greetings" (slice "Welcome" "Cheers") }} {{ $s.Get "greetings" }} → [Hello Welcome Cheers] ``` ### SetInMap Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`. ```go-html-template {{ $s := newScratch }} {{ $s.SetInMap "greetings" "english" "Hello" }} {{ $s.SetInMap "greetings" "french" "Bonjour" }} {{ $s.Get "greetings" }} → map[english:Hello french:Bonjour] ``` ### DeleteInMap Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`. ```go-html-template {{ $s := newScratch }} {{ $s.SetInMap "greetings" "english" "Hello" }} {{ $s.SetInMap "greetings" "french" "Bonjour" }} {{ $s.DeleteInMap "greetings" "english" }} {{ $s.Get "greetings" }} → map[french:Bonjour] ``` ### GetSortedMapValues Returns an array of values from `key` sorted by `mapKey`. ```go-html-template {{ $s := newScratch }} {{ $s.SetInMap "greetings" "english" "Hello" }} {{ $s.SetInMap "greetings" "french" "Bonjour" }} {{ $s.GetSortedMapValues "greetings" }} → [Hello Bonjour] ``` ### Delete Removes the given key. ```go-html-template {{ $s := newScratch }} {{ $s.Set "greeting" "Hello" }} {{ $s.Delete "greeting" }} ``` ### Values Returns the raw backing map. Do not use with `Store` methods on a `Page` object due to concurrency issues. ```go-html-template {{ $s := newScratch }} {{ $s.SetInMap "greetings" "english" "Hello" }} {{ $s.SetInMap "greetings" "french" "Bonjour" }} {{ $map := $s.Values }} ``` {{% include "_common/scratch-pad-scope.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Querify.md000066400000000000000000000022101507671574500264310ustar00rootroot00000000000000--- title: collections.Querify description: Returns a URL query string composed of the given key-value pairs, encoded and sorted by key. categories: [] keywords: [] params: functions_and_methods: aliases: [querify] returnType: string signatures: ['collections.Querify [VALUE...]'] aliases: [/functions/querify] --- Specify the key-value pairs as a map, a slice, or a sequence of scalar values. For example, the following are equivalent: ```go-html-template {{ collections.Querify (dict "a" 1 "b" 2) }} {{ collections.Querify (slice "a" 1 "b" 2) }} {{ collections.Querify "a" 1 "b" 2 }} ``` To append a query string to a URL: ```go-html-template {{ $qs := collections.Querify (dict "a" 1 "b" 2) }} {{ $href := printf "https://example.org?%s" $qs }} Link ``` Hugo renders this to: ```html Link ``` You can also pass in a map from your site configuration or front matter. For example: {{< code-toggle file=content/example.md fm=true >}} title = 'Example' [params.query] a = 1 b = 2 {{< /code-toggle >}} ```go-html-template {{ collections.Querify .Params.query }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Reverse.md000066400000000000000000000005351507671574500264300ustar00rootroot00000000000000--- title: collections.Reverse description: Reverses the order of a collection. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: any signatures: [collections.Reverse COLLECTION] aliases: [/functions/collections.reverse] --- ```go-html-template {{ slice 2 1 3 | collections.Reverse }} → [3 1 2] ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Seq.md000066400000000000000000000013421507671574500255420ustar00rootroot00000000000000--- title: collections.Seq description: Returns a slice of integers. categories: [] keywords: [] params: functions_and_methods: aliases: [seq] returnType: '[]int' signatures: - collections.Seq LAST - collections.Seq FIRST LAST - collections.Seq FIRST INCREMENT LAST aliases: [/functions/seq] --- ```go-html-template {{ seq 2 }} → [1 2] {{ seq 0 2 }} → [0 1 2] {{ seq -2 2 }} → [-2 -1 0 1 2] {{ seq -2 2 2 }} → [-2 0 2] ``` A contrived example of iterating over a sequence of integers: ```go-html-template {{ $product := 1 }} {{ range seq 4 }} {{ $product = mul $product . }} {{ end }} {{ $product }} → 24 ``` > [!note] > The slice created by the `seq` function is limited to 2000 elements. gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Shuffle.md000066400000000000000000000012551507671574500264110ustar00rootroot00000000000000--- title: collections.Shuffle description: Returns a random permutation of a given array or slice. categories: [] keywords: [] params: functions_and_methods: aliases: [shuffle] returnType: any signatures: [collections.Shuffle COLLECTION] aliases: [/functions/shuffle] --- ```go-html-template {{ collections.Shuffle (slice "a" "b" "c") }} → [b a c] ``` The result will vary from one build to the next. To render an unordered list of 5 random pages from a page collection: ```go-html-template

        {{ $p := site.RegularPages }} {{ range $p | collections.Shuffle | first 5 }}
      • {{ .LinkTitle }}
      • {{ end }}
      ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Slice.md000066400000000000000000000006411507671574500260520ustar00rootroot00000000000000--- title: collections.Slice description: Returns a slice composed of the given values. categories: [] keywords: [] params: functions_and_methods: aliases: [slice] returnType: any signatures: ['collections.Slice [VALUE...]'] aliases: [/functions/slice] --- ```go-html-template {{ $s := slice "a" "b" "c" }} {{ $s }} → [a b c] ``` To create an empty slice: ```go-html-template {{ $s := slice }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Sort.md000066400000000000000000000060201507671574500257370ustar00rootroot00000000000000--- title: collections.Sort description: Sorts slices, maps, and page collections. categories: [] keywords: [] params: functions_and_methods: aliases: [sort] returnType: any signatures: ['collections.Sort COLLECTION [KEY] [ORDER]'] aliases: [/functions/sort] --- The `KEY` is optional when sorting slices in ascending order, otherwise it is required. When sorting slices, use the literal `value` in place of the `KEY`. See examples below. The `ORDER` may be either `asc` (ascending) or `desc` (descending). The default sort order is ascending. ## Sort a slice The examples below assume this site configuration: {{< code-toggle file=hugo >}} [params] grades = ['b','a','c'] {{< /code-toggle >}} ### Ascending order {#slice-ascending-order} Sort slice elements in ascending order using either of these constructs: ```go-html-template {{ sort site.Params.grades }} → [a b c] {{ sort site.Params.grades "value" "asc" }} → [a b c] ``` In the examples above, `value` is the `KEY` representing the value of the slice element. ### Descending order {#slice-descending-order} Sort slice elements in descending order: ```go-html-template {{ sort site.Params.grades "value" "desc" }} → [c b a] ``` In the example above, `value` is the `KEY` representing the value of the slice element. ## Sort a map The examples below assume this site configuration: {{< code-toggle file=hugo >}} [params.authors.a] firstName = "Marius" lastName = "Pontmercy" [params.authors.b] firstName = "Victor" lastName = "Hugo" [params.authors.c] firstName = "Jean" lastName = "Valjean" {{< /code-toggle >}} > [!note] > When sorting maps, the `KEY` argument must be lowercase. ### Ascending order {#map-ascending-order} Sort map objects in ascending order using either of these constructs: ```go-html-template {{ range sort site.Params.authors "firstname" }} {{ .firstName }} {{ end }} {{ range sort site.Params.authors "firstname" "asc" }} {{ .firstName }} {{ end }} ``` These produce: ```text Jean Marius Victor ``` ### Descending order {#map-descending-order} Sort map objects in descending order: ```go-html-template {{ range sort site.Params.authors "firstname" "desc" }} {{ .firstName }} {{ end }} ``` This produces: ```text Victor Marius Jean ``` ### First level key removal Hugo removes the first level keys when sorting a map. Original map: ```json { "felix": { "breed": "malicious", "type": "cat" }, "spot": { "breed": "boxer", "type": "dog" } } ``` After sorting: ```json [ { "breed": "malicious", "type": "cat" }, { "breed": "boxer", "type": "dog" } ] ``` ## Sort a page collection > [!note] > Although you can use the `sort` function to sort a page collection, Hugo provides [sorting and grouping methods] as well. In this contrived example, sort the site's regular pages by `.Type` in descending order: ```go-html-template {{ range sort site.RegularPages "Type" "desc" }}

      {{ .LinkTitle }}

      {{ end }} ``` [sorting and grouping methods]: /methods/pages/ gohugoio-hugo-6abdaca/docs/content/en/functions/collections/SymDiff.md000066400000000000000000000007001507671574500263500ustar00rootroot00000000000000--- title: collections.SymDiff description: Returns the symmetric difference of two collections. categories: [] keywords: [] params: functions_and_methods: aliases: [symdiff] returnType: any signatures: [COLLECTION | collections.SymDiff COLLECTION] aliases: [/functions/symdiff] --- Example: ```go-html-template {{ slice 1 2 3 | symdiff (slice 3 4) }} → [1 2 4] ``` Also see . gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Union.md000066400000000000000000000024161507671574500261050ustar00rootroot00000000000000--- title: collections.Union description: Given two arrays or slices, returns a new array that contains the elements that belong to either or both arrays/slices. categories: [] keywords: [] params: functions_and_methods: aliases: [union] returnType: any signatures: [collections.Union SET1 SET2] aliases: [/functions/union] --- Given two arrays (or slices) A and B, this function will return a new array that contains the elements or objects that belong to either A or to B or to both. ```go-html-template {{ union (slice 1 2 3) (slice 3 4 5) }} → [1 2 3 4 5] {{ union (slice 1 2 3) nil }} → [1 2 3] {{ union nil (slice 1 2 3) }} → [1 2 3] {{ union nil nil }} → [] ``` ## OR filter in where query This is also very useful to use as `OR` filters when combined with where: ```go-html-template {{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }} {{ $pages = $pages | union (where .Site.RegularPages "Params.pinned" true) }} {{ $pages = $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }} ``` The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page parameters. See [intersect](/functions/collections/intersect) for `AND`. gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Uniq.md000066400000000000000000000005261507671574500257310ustar00rootroot00000000000000--- title: collections.Uniq description: Returns the given collection, removing duplicate elements. categories: [] keywords: [] params: functions_and_methods: aliases: [uniq] returnType: any signatures: [collections.Uniq COLLECTION] aliases: [/functions/uniq] --- ```go-html-template {{ slice 1 3 2 1 | uniq }} → [1 3 2] ``` gohugoio-hugo-6abdaca/docs/content/en/functions/collections/Where.md000066400000000000000000000304331507671574500260670ustar00rootroot00000000000000--- title: collections.Where description: Returns the given collection, removing elements that do not satisfy the comparison condition. categories: [] keywords: [] params: functions_and_methods: aliases: [where] returnType: any signatures: ['collections.Where COLLECTION KEY [OPERATOR] VALUE'] aliases: [/functions/where] --- The `where` function returns the given collection, removing elements that do not satisfy the comparison condition. The comparison condition is composed of the `KEY`, `OPERATOR`, and `VALUE` arguments: ```text collections.Where COLLECTION KEY [OPERATOR] VALUE -------------------- comparison condition ``` Hugo will test for equality if you do not provide an `OPERATOR` argument. For example: ```go-html-template {{ $pages := where .Site.RegularPages "Section" "books" }} {{ $books := where .Site.Data.books "genres" "suspense" }} ``` ## Arguments The where function takes three or four arguments. The `OPERATOR` argument is optional. COLLECTION : (`any`) A [page collection](g) or a [slice](g) of [maps](g). KEY : (`string`) The key of the page or map value to compare with `VALUE`. With page collections, commonly used comparison keys are `Section`, `Type`, and `Params`. To compare with a member of the page `Params` map, [chain](g) the subkey as shown below: ```go-html-template {{ $result := where .Site.RegularPages "Params.foo" "bar" }} ``` OPERATOR : (`string`) The logical comparison [operator](#operators). VALUE : (`any`) The value with which to compare. The values to compare must have comparable data types. For example: Comparison|Result :--|:-- `"123" "eq" "123"`|`true` `"123" "eq" 123`|`false` `false "eq" "false"`|`false` `false "eq" false`|`true` When one or both of the values to compare is a slice, use the `in`, `not in`, or `intersect` operators as described below. ## Operators Use any of the following logical operators: `=`, `==`, `eq` : (`bool`) Reports whether the given field value is equal to `VALUE`. `!=`, `<>`, `ne` : (`bool`) Reports whether the given field value is not equal to `VALUE`. `>=`, `ge` : (`bool`) Reports whether the given field value is greater than or equal to `VALUE`. `>`, `gt` : `true` Reports whether the given field value is greater than `VALUE`. `<=`, `le` : (`bool`) Reports whether the given field value is less than or equal to `VALUE`. `<`, `lt` : (`bool`) Reports whether the given field value is less than `VALUE`. `in` : (`bool`) Reports whether the given field value is a member of `VALUE`. Compare string to slice, or string to string. See [details](/functions/collections/in). `not in` : (`bool`) Reports whether the given field value is not a member of `VALUE`. Compare string to slice, or string to string. See [details](/functions/collections/in). `intersect` : (`bool`) Reports whether the given field value (a slice) contains one or more elements in common with `VALUE`. See [details](/functions/collections/intersect). `like` : (`bool`) Reports whether the given field value matches the [regular expression](g) specified in `VALUE`. Use the `like` operator to compare `string` values. The `like` operator returns `false` when comparing other data types to the regular expression. > [!note] > The examples below perform comparisons within a page collection, but the same comparisons are applicable to a slice of maps. ## String comparison Compare the value of the given field to a [`string`](g): ```go-html-template {{ $pages := where .Site.RegularPages "Section" "eq" "books" }} {{ $pages := where .Site.RegularPages "Section" "ne" "books" }} ``` ## Numeric comparison Compare the value of the given field to an [`int`](g) or [`float`](g): ```go-html-template {{ $books := where site.RegularPages "Section" "eq" "books" }} {{ $pages := where $books "Params.price" "eq" 42 }} {{ $pages := where $books "Params.price" "ne" 42.67 }} {{ $pages := where $books "Params.price" "ge" 42 }} {{ $pages := where $books "Params.price" "gt" 42.67 }} {{ $pages := where $books "Params.price" "le" 42 }} {{ $pages := where $books "Params.price" "lt" 42.67 }} ``` ## Boolean comparison Compare the value of the given field to a [`bool`](g): ```go-html-template {{ $books := where site.RegularPages "Section" "eq" "books" }} {{ $pages := where $books "Params.fiction" "eq" true }} {{ $pages := where $books "Params.fiction" "eq" false }} {{ $pages := where $books "Params.fiction" "ne" true }} {{ $pages := where $books "Params.fiction" "ne" false }} ``` ## Member comparison Compare a [`scalar`](g) to a [`slice`](g). For example, to return a collection of pages where the `color` page parameter is either "red" or "yellow": ```go-html-template {{ $fruit := where site.RegularPages "Section" "eq" "fruit" }} {{ $colors := slice "red" "yellow" }} {{ $pages := where $fruit "Params.color" "in" $colors }} ``` To return a collection of pages where the "color" page parameter is neither "red" nor "yellow": ```go-html-template {{ $fruit := where site.RegularPages "Section" "eq" "fruit" }} {{ $colors := slice "red" "yellow" }} {{ $pages := where $fruit "Params.color" "not in" $colors }} ``` ## Intersection comparison Compare a `slice` to a `slice`, returning collection elements with common values. This is frequently used when comparing taxonomy terms. For example, to return a collection of pages where any of the terms in the "genres" taxonomy are "suspense" or "romance": ```go-html-template {{ $books := where site.RegularPages "Section" "eq" "books" }} {{ $genres := slice "suspense" "romance" }} {{ $pages := where $books "Params.genres" "intersect" $genres }} ``` ## Regular expression comparison To return a collection of pages where the "author" page parameter begins with either "victor" or "Victor": ```go-html-template {{ $pages := where .Site.RegularPages "Params.author" "like" `(?i)^victor` }} ``` {{% include "/_common/functions/regular-expressions.md" %}} > [!note] > Use the `like` operator to compare string values. Comparing other data types will result in an empty collection. ## Date comparison ### Predefined dates There are four predefined front matter dates: [`date`], [`publishDate`], [`lastmod`], and [`expiryDate`]. Regardless of the front matter data format (TOML, YAML, or JSON) these are [`time.Time`] values, allowing precise comparisons. For example, to return a collection of pages that were created before the current year: ```go-html-template {{ $startOfYear := time.AsTime (printf "%d-01-01" now.Year) }} {{ $pages := where .Site.RegularPages "Date" "lt" $startOfYear }} ``` ### Custom dates With custom front matter dates, the comparison depends on the front matter data format (TOML, YAML, or JSON). > [!note] > Using TOML for pages with custom front matter dates enables precise date comparisons. With TOML, date values are first-class citizens. TOML has a date data type while JSON and YAML do not. If you quote a TOML date, it is a string. If you do not quote a TOML date value, it is [`time.Time`] value, enabling precise comparisons. In the TOML example below, note that the event date is not quoted. ```text {file="content/events/2024-user-conference.md"} +++ title = '2024 User Conference" eventDate = 2024-04-01 +++ ``` To return a collection of future events: ```go-html-template {{ $events := where .Site.RegularPages "Type" "events" }} {{ $futureEvents := where $events "Params.eventDate" "gt" now }} ``` When working with YAML or JSON, or quoted TOML values, custom dates are strings; you cannot compare them with `time.Time` values. String comparisons may be possible if the custom date layout is consistent from one page to the next. To be safe, filter the pages by ranging through the collection: ```go-html-template {{ $events := where .Site.RegularPages "Type" "events" }} {{ $futureEvents := slice }} {{ range $events }} {{ if gt (time.AsTime .Params.eventDate) now }} {{ $futureEvents = $futureEvents | append . }} {{ end }} {{ end }} ``` ## Nil comparison To return a collection of pages where the "color" parameter is present in front matter, compare to `nil`: ```go-html-template {{ $pages := where .Site.RegularPages "Params.color" "ne" nil }} ``` To return a collection of pages where the "color" parameter is not present in front matter, compare to `nil`: ```go-html-template {{ $pages := where .Site.RegularPages "Params.color" "eq" nil }} ``` In both examples above, note that `nil` is not quoted. ## Nested comparison These are equivalent: ```go-html-template {{ $pages := where .Site.RegularPages "Type" "tutorials" }} {{ $pages = where $pages "Params.level" "eq" "beginner" }} ``` ```go-html-template {{ $pages := where (where .Site.RegularPages "Type" "tutorials") "Params.level" "eq" "beginner" }} ``` ## Portable section comparison Useful for theme authors, avoid hardcoding section names by using the `where` function with the [`MainSections`] method on a `Site` object. ```go-html-template {{ $pages := where .Site.RegularPages "Section" "in" .Site.MainSections }} ``` With this construct, a theme author can instruct users to specify their main sections in the site configuration: {{< code-toggle file=hugo >}} mainSections = ['blog','galleries'] {{< /code-toggle >}} If `mainSections` is not defined in the site configuration, the `MainSections` method returns a slice with one element---the top-level section with the most pages. ## Boolean/undefined comparison Consider this site content: ```text content/ ├── posts/ │ ├── _index.md │ ├── post-1.md <-- front matter: exclude = false │ ├── post-2.md <-- front matter: exclude = true │ └── post-3.md <-- front matter: exclude not defined └── _index.md ``` The first two pages have an "exclude" field in front matter, but the last page does not. When testing for _equality_, the third page is _excluded_ from the result. When testing for _inequality_, the third page is _included_ in the result. ### Equality test This template: ```go-html-template
        {{ range where .Site.RegularPages "Params.exclude" "eq" false }}
      • {{ .LinkTitle }}
      • {{ end }}
      ``` Is rendered to: ```html ``` This template: ```go-html-template
        {{ range where .Site.RegularPages "Params.exclude" "eq" true }}
      • {{ .LinkTitle }}
      • {{ end }}
      ``` Is rendered to: ```html ``` ### Inequality test This template: ```go-html-template
        {{ range where .Site.RegularPages "Params.exclude" "ne" false }}
      • {{ .LinkTitle }}
      • {{ end }}
      ``` Is rendered to: ```html ``` This template: ```go-html-template
        {{ range where .Site.RegularPages "Params.exclude" "ne" true }}
      • {{ .LinkTitle }}
      • {{ end }}
      ``` Is rendered to: ```html ``` To exclude a page with an undefined field from a boolean _inequality_ test: 1. Create a collection using a boolean comparison 1. Create a collection using a nil comparison 1. Subtract the second collection from the first collection using the [`collections.Complement`] function. This template: ```go-html-template {{ $p1 := where .Site.RegularPages "Params.exclude" "ne" true }} {{ $p2 := where .Site.RegularPages "Params.exclude" "eq" nil }} ``` Is rendered to: ```html ``` This template: ```go-html-template {{ $p1 := where .Site.RegularPages "Params.exclude" "ne" false }} {{ $p2 := where .Site.RegularPages "Params.exclude" "eq" nil }} ``` Is rendered to: ```html ``` [`collections.Complement`]: /functions/collections/complement/ [`date`]: /methods/page/date/ [`lastmod`]: /methods/page/lastmod/ [`MainSections`]: /methods/site/mainsections/ [`time.Time`]: https://pkg.go.dev/time#Time gohugoio-hugo-6abdaca/docs/content/en/functions/collections/_index.md000066400000000000000000000002621507671574500262600ustar00rootroot00000000000000--- title: Collections functions linkTitle: collections description: Use these functions to work with arrays, slices, maps, and page collections. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/compare/000077500000000000000000000000001507671574500236005ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/compare/Conditional.md000066400000000000000000000017521507671574500263720ustar00rootroot00000000000000--- title: compare.Conditional description: Returns one of two arguments depending on the value of the control argument. categories: [] keywords: [] params: functions_and_methods: aliases: [cond] returnType: any signatures: [compare.Conditional CONTROL ARG1 ARG2] aliases: [/functions/cond] --- If CONTROL is truthy the function returns ARG1, otherwise it returns ARG2. ```go-html-template {{ $qty := 42 }} {{ cond (le $qty 3) "few" "many" }} → many ``` Unlike [ternary operators] in other languages, the `compare.Conditional` function does not perform [short-circuit evaluation]. It evaluates both ARG1 and ARG2 regardless of the CONTROL value. [short-circuit evaluation]: https://en.wikipedia.org/wiki/Short-circuit_evaluation [ternary operators]: https://en.wikipedia.org/wiki/Ternary_conditional_operator Due to the absence of short-circuit evaluation, these examples throw an error: ```go-html-template {{ cond true "true" (div 1 0) }} {{ cond false (div 1 0) "false" }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/compare/Default.md000066400000000000000000000026211507671574500255070ustar00rootroot00000000000000--- title: compare.Default description: Returns the second argument if set, else the first argument. keywords: [] params: functions_and_methods: aliases: [default] returnType: any signatures: [compare.Default DEFAULT INPUT] aliases: [/functions/default] --- The `default` function returns the second argument if set, else the first argument. > [!note] > When the second argument is the boolean `false` value, the `default` function returns `false`. All _other_ falsy values are considered unset. > > The falsy values are `false`, `0`, any `nil` pointer or interface value, any array, slice, map, or string of length zero, and zero `time.Time` values. > > Everything else is truthy. > > To set a default value based on truthiness, use the [`or`] operator instead. The `default` function returns the second argument if set: ```go-html-template {{ default 42 1 }} → 1 {{ default 42 "foo" }} → foo {{ default 42 (dict "k" "v") }} → map[k:v] {{ default 42 (slice "a" "b") }} → [a b] {{ default 42 true }} → true {{ default 42 false }} → false ``` The `default` function returns the first argument if the second argument is not set: ```go-html-template {{ default 42 0 }} → 42 {{ default 42 "" }} → 42 {{ default 42 dict }} → 42 {{ default 42 slice }} → 42 {{ default 42 }} → 42 ``` [`or`]: /functions/go-template/or/ gohugoio-hugo-6abdaca/docs/content/en/functions/compare/Eq.md000066400000000000000000000010511507671574500244640ustar00rootroot00000000000000--- title: compare.Eq description: Returns the boolean truth of arg1 == arg2 || arg1 == arg3. categories: [] keywords: [] params: functions_and_methods: aliases: [eq] returnType: bool signatures: ['compare.Eq ARG1 ARG2 [ARG...]'] aliases: [/functions/eq] --- ```go-html-template {{ eq 1 1 }} → true {{ eq 1 2 }} → false {{ eq 1 1 1 }} → true {{ eq 1 1 2 }} → true {{ eq 1 2 1 }} → true {{ eq 1 2 2 }} → false ``` You can also use the `compare.Eq` function to compare strings, boolean values, dates, slices, maps, and pages. gohugoio-hugo-6abdaca/docs/content/en/functions/compare/Ge.md000066400000000000000000000013451507671574500244600ustar00rootroot00000000000000--- title: compare.Ge description: Returns the boolean truth of arg1 >= arg2 && arg1 >= arg3. categories: [] keywords: [] params: functions_and_methods: aliases: [ge] returnType: bool signatures: ['compare.Ge ARG1 ARG2 [ARG...]'] aliases: [/functions/ge] --- ```go-html-template {{ ge 1 1 }} → true {{ ge 1 2 }} → false {{ ge 2 1 }} → true {{ ge 1 1 1 }} → true {{ ge 1 1 2 }} → false {{ ge 1 2 1 }} → false {{ ge 1 2 2 }} → false {{ ge 2 1 1 }} → true {{ ge 2 1 2 }} → true {{ ge 2 2 1 }} → true ``` Use the `compare.Ge` function to compare other data types as well: ```go-html-template {{ ge "ab" "a" }} → true {{ ge time.Now (time.AsTime "1964-12-30") }} → true {{ ge true false }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/compare/Gt.md000066400000000000000000000013471507671574500245010ustar00rootroot00000000000000--- title: compare.Gt description: Returns the boolean truth of arg1 > arg2 && arg1 > arg3. categories: [] keywords: [] params: functions_and_methods: aliases: [gt] returnType: bool signatures: ['compare.Gt ARG1 ARG2 [ARG...]'] aliases: [/functions/gt] --- ```go-html-template {{ gt 1 1 }} → false {{ gt 1 2 }} → false {{ gt 2 1 }} → true {{ gt 1 1 1 }} → false {{ gt 1 1 2 }} → false {{ gt 1 2 1 }} → false {{ gt 1 2 2 }} → false {{ gt 2 1 1 }} → true {{ gt 2 1 2 }} → false {{ gt 2 2 1 }} → false ``` Use the `compare.Gt` function to compare other data types as well: ```go-html-template {{ gt "ab" "a" }} → true {{ gt time.Now (time.AsTime "1964-12-30") }} → true {{ gt true false }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/compare/Le.md000066400000000000000000000013501507671574500244610ustar00rootroot00000000000000--- title: compare.Le description: Returns the boolean truth of arg1 <= arg2 && arg1 <= arg3. categories: [] keywords: [] params: functions_and_methods: aliases: [le] returnType: bool signatures: ['compare.Le ARG1 ARG2 [ARG...]'] aliases: [/functions/le] --- ```go-html-template {{ le 1 1 }} → true {{ le 1 2 }} → true {{ le 2 1 }} → false {{ le 1 1 1 }} → true {{ le 1 1 2 }} → true {{ le 1 2 1 }} → true {{ le 1 2 2 }} → true {{ le 2 1 1 }} → false {{ le 2 1 2 }} → false {{ le 2 2 1 }} → false ``` Use the `compare.Le` function to compare other data types as well: ```go-html-template {{ le "ab" "a" }} → false {{ le time.Now (time.AsTime "1964-12-30") }} → false {{ le true false }} → false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/compare/Lt.md000066400000000000000000000013521507671574500245020ustar00rootroot00000000000000--- title: compare.Lt description: Returns the boolean truth of arg1 < arg2 && arg1 < arg3. categories: [] keywords: [] params: functions_and_methods: aliases: [lt] returnType: bool signatures: ['compare.Lt ARG1 ARG2 [ARG...]'] aliases: [/functions/lt] --- ```go-html-template {{ lt 1 1 }} → false {{ lt 1 2 }} → true {{ lt 2 1 }} → false {{ lt 1 1 1 }} → false {{ lt 1 1 2 }} → false {{ lt 1 2 1 }} → false {{ lt 1 2 2 }} → true {{ lt 2 1 1 }} → false {{ lt 2 1 2 }} → false {{ lt 2 2 1 }} → false ``` Use the `compare.Lt` function to compare other data types as well: ```go-html-template {{ lt "ab" "a" }} → false {{ lt time.Now (time.AsTime "1964-12-30") }} → false {{ lt true false }} → false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/compare/Ne.md000066400000000000000000000010531507671574500244630ustar00rootroot00000000000000--- title: compare.Ne description: Returns the boolean truth of arg1 != arg2 && arg1 != arg3. categories: [] keywords: [] params: functions_and_methods: aliases: [ne] returnType: bool signatures: ['compare.Ne ARG1 ARG2 [ARG...]'] aliases: [/functions/ne] --- ```go-html-template {{ ne 1 1 }} → false {{ ne 1 2 }} → true {{ ne 1 1 1 }} → false {{ ne 1 1 2 }} → false {{ ne 1 2 1 }} → false {{ ne 1 2 2 }} → true ``` You can also use the `compare.Ne` function to compare strings, boolean values, dates, slices, maps, and pages. gohugoio-hugo-6abdaca/docs/content/en/functions/compare/_index.md000066400000000000000000000002201507671574500253620ustar00rootroot00000000000000--- title: Compare functions linkTitle: compare description: Use these functions to compare two or more values. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/crypto/000077500000000000000000000000001507671574500234725ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/crypto/FNV32a.md000066400000000000000000000006761507671574500247640ustar00rootroot00000000000000--- title: crypto.FNV32a description: Returns the 32-bit FNV (Fowler-Noll-Vo) non-cryptographic hash of the given string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: int signatures: [crypto.FNV32a STRING] expiryDate: 2026-07-31 # deprecated 2024-07-31 in v0.129.0 --- {{< deprecated-in 0.129.0 >}} Use [`hash.FNV32a`] instead. [`hash.FNV32a`]: /functions/hash/FNV32a/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/functions/crypto/HMAC.md000066400000000000000000000014761507671574500245340ustar00rootroot00000000000000--- title: crypto.HMAC description: Returns a cryptographic hash that uses a key to sign a message. categories: [] keywords: [] params: functions_and_methods: aliases: [hmac] returnType: string signatures: ['crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]'] aliases: [/functions/hmac] --- Set the `HASH_TYPE` argument to `md5`, `sha1`, `sha256`, or `sha512`. Set the optional `ENCODING` argument to either `hex` (default) or `binary`. ```go-html-template {{ hmac "sha256" "Secret key" "Secret message" }} 5cceb491f45f8b154e20f3b0a30ed3a6ff3027d373f85c78ffe8983180b03c84 {{ hmac "sha256" "Secret key" "Secret message" "hex" }} 5cceb491f45f8b154e20f3b0a30ed3a6ff3027d373f85c78ffe8983180b03c84 {{ hmac "sha256" "Secret key" "Secret message" "binary" | base64Encode }} XM60kfRfixVOIPOwow7Tpv8wJ9Nz+Fx4/+iYMYCwPIQ= ``` gohugoio-hugo-6abdaca/docs/content/en/functions/crypto/MD5.md000066400000000000000000000011101507671574500243720ustar00rootroot00000000000000--- title: crypto.MD5 description: Hashes the given input and returns its MD5 checksum encoded to a hexadecimal string. categories: [] keywords: [] params: functions_and_methods: aliases: [md5] returnType: string signatures: [crypto.MD5 INPUT] aliases: [/functions/md5] --- ```go-html-template {{ md5 "Hello world" }} → 3e25960a79dbc69b674cd4ec67a72c62 ``` This can be useful if you want to use [Gravatar](https://en.gravatar.com/) for generating a unique avatar: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/functions/crypto/SHA1.md000066400000000000000000000006231507671574500245110ustar00rootroot00000000000000--- title: crypto.SHA1 description: Hashes the given input and returns its SHA1 checksum encoded to a hexadecimal string. categories: [] keywords: [] params: functions_and_methods: aliases: [sha1] returnType: string signatures: [crypto.SHA1 INPUT] aliases: [/functions/sha,/functions/sha1] --- ```go-html-template {{ sha1 "Hello world" }} → 7b502c3a1f48c8609ae212cdfb639dee39673f5e ``` gohugoio-hugo-6abdaca/docs/content/en/functions/crypto/SHA256.md000066400000000000000000000006501507671574500246650ustar00rootroot00000000000000--- title: crypto.SHA256 description: Hashes the given input and returns its SHA256 checksum encoded to a hexadecimal string. categories: [] keywords: [] params: functions_and_methods: aliases: [sha256] returnType: string signatures: [crypto.SHA256 INPUT] aliases: [/functions/sha256] --- ```go-html-template {{ sha256 "Hello world" }} → 64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c ``` gohugoio-hugo-6abdaca/docs/content/en/functions/crypto/_index.md000066400000000000000000000002171507671574500252620ustar00rootroot00000000000000--- title: Crypto functions linkTitle: crypto description: Use these functions to create cryptographic hashes. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/css/000077500000000000000000000000001507671574500227425ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/css/PostCSS.md000066400000000000000000000075011507671574500245650ustar00rootroot00000000000000--- title: css.PostCSS description: Processes the given resource with PostCSS using any PostCSS plugin. categories: [] keywords: [] params: functions_and_methods: aliases: [postCSS] returnType: resource.Resource signatures: ['css.PostCSS [OPTIONS] RESOURCE'] --- {{< new-in 0.128.0 />}} ```go-html-template {{ with resources.Get "css/main.css" | postCSS }} {{ end }} ``` ## Setup Follow the steps below to transform CSS using any of the available [PostCSS plugins]. Step 1 : Install [Node.js]. Step 2 : Install the required Node.js packages in the root of your project. For example, to add vendor prefixes to your CSS rules: ```sh npm i -D postcss postcss-cli autoprefixer ``` Step 3 : Create a PostCSS configuration file in the root of your project. ```js {file="postcss.config.js"} module.exports = { plugins: [ require('autoprefixer') ] }; ``` > [!note] > If you are a Windows user, and the path to your project contains a space, you must place the PostCSS configuration within the package.json file. See [this example] and issue [#7333]. Step 4 : Place your CSS file within the `assets/css` directory. Step 5 : Process the resource with PostCSS: ```go-html-template {{ with resources.Get "css/main.css" | postCSS }} {{ end }} ``` ## Options The `css.PostCSS` method takes an optional map of options. config : (`string`) The directory that contains the PostCSS configuration file. Default is the root of the project directory. noMap : (`bool`) Whether to disable inline source maps. Default is `false`. inlineImports : (`bool`) Whether to enable inlining of import statements. It does so recursively, but will only import a file once. URL imports (e.g. `@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');`) and imports with media queries will be ignored. Note that this import routine does not care about the CSS spec, so you can have @import anywhere in the file. Hugo will look for imports relative to the module mount and will respect theme overrides. Default is `false`. skipInlineImportsNotFound : (`bool`) Whether to allow the build process to continue despite unresolved import statements, preserving the original import declarations. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set this option to `true`. Default is `false`." ```go-html-template {{ $opts := dict "config" "config-directory" "noMap" true }} {{ with resources.Get "css/main.css" | postCSS $opts }} {{ end }} ``` ## No configuration file To avoid using a PostCSS configuration file, you can specify a minimal configuration using the options map. use : (`string`) A space-delimited list of PostCSS plugins to use. parser : (`string`) A custom PostCSS parser. stringifier : (`string`) A custom PostCSS stringifier. syntax : (`string`) Custom postcss syntax. ```go-html-template {{ $opts := dict "use" "autoprefixer postcss-color-alpha" }} {{ with resources.Get "css/main.css" | postCSS $opts }} {{ end }} ``` ## Check environment The current Hugo environment name (set by `--environment` or in configuration or OS environment) is available in the Node context, which allows constructs like this: ```js const autoprefixer = require('autoprefixer'); module.exports = { plugins: [ process.env.HUGO_ENVIRONMENT !== 'development' ? autoprefixer : null ] } ``` [#7333]: https://github.com/gohugoio/hugo/issues/7333 [Node.js]: https://nodejs.org/en [PostCSS plugins]: https://postcss.org/docs/postcss-plugins [this example]: https://github.com/postcss/postcss-load-config#packagejson gohugoio-hugo-6abdaca/docs/content/en/functions/css/Sass.md000066400000000000000000000150011507671574500241720ustar00rootroot00000000000000--- title: css.Sass description: Transpiles Sass to CSS. categories: [] keywords: [] params: functions_and_methods: aliases: [toCSS] returnType: resource.Resource signatures: ['css.Sass [OPTIONS] RESOURCE'] --- {{< new-in 0.128.0 />}} Transpile Sass to CSS using the LibSass transpiler included in Hugo's extended and extended/deploy editions, or [install Dart Sass](#dart-sass) to use the latest features of the Sass language. Sass has two forms of syntax: [SCSS] and [indented]. Hugo supports both. [scss]: https://sass-lang.com/documentation/syntax#scss [indented]: https://sass-lang.com/documentation/syntax#the-indented-syntax ## Options enableSourceMap : (`bool`) Whether to generate a source map. Default is `false`. includePaths : (`slice`) A slice of paths, relative to the project root, that the transpiler will use when resolving `@use` and `@import` statements. outputStyle : (`string`) The output style of the resulting CSS. With LibSass, one of `nested` (default), `expanded`, `compact`, or `compressed`. With Dart Sass, either `expanded` (default) or `compressed`. precision : (`int`) The precision of floating point math. Applicable to LibSass. Default is `8`. silenceDeprecations : {{< new-in 0.139.0 />}} : (`slice`) A slice of deprecation IDs to silence. IDs are enclosed in brackets within Dart Sass warning messages (e.g., `import` in `WARN Dart Sass: DEPRECATED [import]`). Applicable to Dart Sass. Default is `false`. silenceDependencyDeprecations : {{< new-in 0.146.0 />}} : (`bool`) Whether to silence deprecation warnings from dependencies, where a dependency is considered any file transitively imported through a load path. This does not apply to `@warn` or `@debug` rules.Default is `false`. sourceMapIncludeSources : (`bool`) Whether to embed sources in the generated source map. Applicable to Dart Sass. Default is `false`. targetPath : (`string`) The publish path for the transformed resource, relative to the[`publishDir`]. If unset, the target path defaults to the asset's original path with a `.css` extension. transpiler : (`string`) The transpiler to use, either `libsass` or `dartsass`. Hugo's extended and extended/deploy editions include the LibSass transpiler. To use the Dart Sass transpiler, see the [installation instructions](#dart-sass). Default is `libsass`. vars : (`map`) A map of key-value pairs that will be available in the `hugo:vars` namespace. Useful for [initializing Sass variables from Hugo templates](https://discourse.gohugo.io/t/42053/). ```scss // LibSass @import "hugo:vars"; // Dart Sass @use "hugo:vars" as v; ``` ## Example ```go-html-template {copy=true} {{ with resources.Get "sass/main.scss" }} {{ $opts := dict "enableSourceMap" hugo.IsDevelopment "outputStyle" (cond hugo.IsDevelopment "expanded" "compressed") "targetPath" "css/main.css" "transpiler" "dartsass" "vars" site.Params.styles "includePaths" (slice "node_modules/bootstrap/scss") }} {{ with . | toCSS $opts }} {{ if hugo.IsDevelopment }} {{ else }} {{ with . | fingerprint }} {{ end }} {{ end }} {{ end }} {{ end }} ``` ## Dart Sass Hugo's extended and extended/deploy editions include [LibSass] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass]. Use the latest features of the Sass language by installing Dart Sass in your development and production environments. ### Installation overview Dart Sass is compatible with Hugo v0.114.0 and later. If you have been using Embedded Dart Sass[^1] with Hugo v0.113.0 and earlier, uninstall Embedded Dart Sass, then install Dart Sass. If you have installed both, Hugo will use Dart Sass. If you install Hugo as a [Snap package] there is no need to install Dart Sass. The Hugo Snap package includes Dart Sass. [^1]: In 2023, the Sass team deprecated Embedded Dart Sass in favor of Dart Sass. ### Installing in a development environment When you install Dart Sass somewhere in your PATH, Hugo will find it. OS|Package manager|Site|Installation :--|:--|:--|:-- Linux|Homebrew|[brew.sh]|`brew install sass/sass/sass` Linux|Snap|[snapcraft.io]|`sudo snap install dart-sass` macOS|Homebrew|[brew.sh]|`brew install sass/sass/sass` Windows|Chocolatey|[chocolatey.org]|`choco install sass` Windows|Scoop|[scoop.sh]|`scoop install sass` You may also install [prebuilt binaries] for Linux, macOS, and Windows. You must install the prebuilt binary outside of your project directory and ensure its path is included in your system's PATH environment variable. Run `hugo env` to list the active transpilers. > [!note] > If you build Hugo from source and run `mage test -v`, the test will fail if you install Dart Sass as a Snap package. This is due to the Snap package's strict confinement model. ### Installing in a production environment To use Dart Sass with Hugo on a CI/CD platform like GitHub Pages, GitLab Pages, or Netlify, you typically must modify your build workflow to install Dart Sass before the Hugo site build begins. This is because these platforms don't have Dart Sass pre-installed, and Hugo needs it to process your Sass files. There's one key exception where you can skip this step: you have committed your `resources` directory to your repository. This is only possible if: - You have not changed Hugo's default asset cache location. - You have not set [`useResourceCacheWhen`] to never in your sites configuration. By committing the `resources` directory, you're providing the pre-built CSS files directly to your CI/CD service, so it doesn't need to run the Sass compilation itself. For examples of how to install Dart Sass in a production environment, see the following workflow files: - [GitHub Pages] - [GitLab Pages] - [Netlify] [`publishDir`]: /configuration/all/#publishdir [`useResourceCacheWhen`]: /configuration/build/#useresourcecachewhen [brew.sh]: https://brew.sh/ [chocolatey.org]: https://community.chocolatey.org/packages/sass [dart sass]: https://sass-lang.com/dart-sass [GitHub Pages]: /host-and-deploy/host-on-github-pages/#step-7 [GitLab Pages]: /host-and-deploy/host-on-gitlab-pages/#configure-gitlab-cicd [libsass]: https://sass-lang.com/libsass [Netlify]: /host-and-deploy/host-on-netlify/#configuration-file [prebuilt binaries]: https://github.com/sass/dart-sass/releases/latest [scoop.sh]: https://scoop.sh/#/apps?q=sass [snap package]: /installation/linux/#snap [snapcraft.io]: https://snapcraft.io/dart-sass gohugoio-hugo-6abdaca/docs/content/en/functions/css/TailwindCSS.md000066400000000000000000000100641507671574500254110ustar00rootroot00000000000000--- title: css.TailwindCSS description: Processes the given resource with the Tailwind CSS CLI. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: ['css.TailwindCSS [OPTIONS] RESOURCE'] --- {{< new-in 0.128.0 />}} Use the `css.TailwindCSS` function to process your Tailwind CSS files. This function uses the Tailwind CSS CLI to: 1. Scan your templates for Tailwind CSS utility class usage. 1. Compile those utility classes into standard CSS. 1. Generate an optimized CSS output file. > [!note] > Use this function with Tailwind CSS v4.0 and later, which require a relatively [modern browser] to render correctly. [modern browser]: https://tailwindcss.com/docs/compatibility#browser-support ## Setup Step 1 : Install the Tailwind CSS CLI v4.0 or later: ```sh {copy=true} npm install --save-dev tailwindcss @tailwindcss/cli ``` The Tailwind CSS CLI is also available as a [standalone executable]. You must install it outside of your project directory and ensure its path is included in your system's `PATH` environment variable. [standalone executable]: https://github.com/tailwindlabs/tailwindcss/releases/latest Step 2 : Add this to your site configuration: {{< code-toggle file=hugo copy=true >}} [build] [build.buildStats] enable = true [[build.cachebusters]] source = 'assets/notwatching/hugo_stats\.json' target = 'css' [[build.cachebusters]] source = '(postcss|tailwind)\.config\.js' target = 'css' [module] [[module.mounts]] source = 'assets' target = 'assets' [[module.mounts]] disableWatch = true source = 'hugo_stats.json' target = 'assets/notwatching/hugo_stats.json' {{< /code-toggle >}} Step 3 : Create a CSS entry file: ```css {file="assets/css/main.css" copy=true} @import "tailwindcss"; @source "hugo_stats.json"; ``` Tailwind CSS respects `.gitignore` files. This means that if `hugo_stats.json` is listed in your `.gitignore` file, Tailwind CSS will ignore it. To make `hugo_stats.json` available to Tailwind CSS you must explicitly source it as shown in the example above. Step 4 : Create a _partial_ template to process the CSS with the Tailwind CSS CLI: ```go-html-template {file="layouts/_partials/css.html" copy=true} {{ with resources.Get "css/main.css" }} {{ $opts := dict "minify" (not hugo.IsDevelopment) }} {{ with . | css.TailwindCSS $opts }} {{ if hugo.IsDevelopment }} {{ else }} {{ with . | fingerprint }} {{ end }} {{ end }} {{ end }} {{ end }} ``` Step 5 : Call the _partial_ template from your base template, deferring template execution until after all sites and output formats have been rendered: ```go-html-template {file="layouts/baseof.html" copy=true} ... {{ with (templates.Defer (dict "key" "global")) }} {{ partial "css.html" . }} {{ end }} ... ``` ## Options minify : (`bool`) Whether to optimize and minify the output. Default is `false`. optimize : (`bool`) Whether to optimize the output without minifying. Default is `false`. disableInlineImports : {{< new-in 0.147.4 />}} : (`bool`) Whether to disable inlining of `@import` statements. Inlining is performed recursively, but currently once only per file. It is not possible to import the same file in different scopes (root, media query, etc.). Note that this import routine does not care about the CSS specification, so you can have `@import` statements anywhere in the file. Default is `false`. skipInlineImportsNotFound : (`bool`) Whether to allow the build process to continue despite unresolved import statements, preserving the original import declarations. It is important to note that the inline importer does not process URL-based imports or those with media queries, and these will remain unaltered even when this option is disabled. Default is `false`. gohugoio-hugo-6abdaca/docs/content/en/functions/css/_index.md000066400000000000000000000002121507671574500245250ustar00rootroot00000000000000--- title: CSS functions linkTitle: css description: Use these functions to work with CSS and Sass files. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/data/000077500000000000000000000000001507671574500230635ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/data/GetCSV.md000066400000000000000000000071521507671574500245050ustar00rootroot00000000000000--- title: data.GetCSV description: Returns an array of arrays from a local or remote CSV file, or an error if the file does not exist. categories: [] keywords: [] params: functions_and_methods: aliases: [getCSV] returnType: '[][]string' signatures: ['data.GetCSV SEPARATOR INPUT... [OPTIONS]'] expiryDate: 2026-02-19 # deprecated 2024-02-19 in v0.123.0 --- {{< deprecated-in 0.123.0 >}} Instead, use [`transform.Unmarshal`] with a [global resource](g), [page resource](g), or [remote resource](g). See the [remote data example]. [`transform.Unmarshal`]: /functions/transform/unmarshal/ [remote data example]: /functions/resources/getremote/#remote-data {{< /deprecated-in >}} Given the following directory structure: ```text my-project/ └── other-files/ └── pets.csv ``` Access the data with either of the following: ```go-html-template {{ $data := getCSV "," "other-files/pets.csv" }} {{ $data := getCSV "," "other-files/" "pets.csv" }} ``` > [!note] > When working with local data, the file path is relative to the working directory. > > You must not place CSV files in the project's `data` directory. Access remote data with either of the following: ```go-html-template {{ $data := getCSV "," "https://example.org/pets.csv" }} {{ $data := getCSV "," "https://example.org/" "pets.csv" }} ``` The resulting data structure is an array of arrays: ```json [ ["name","type","breed","age"], ["Spot","dog","Collie","3"], ["Felix","cat","Malicious","7"] ] ``` ## Options Add headers to the request by providing an options map: ```go-html-template {{ $opts := dict "Authorization" "Bearer abcd" }} {{ $data := getCSV "," "https://example.org/pets.csv" $opts }} ``` Add multiple headers using a slice: ```go-html-template {{ $opts := dict "X-List" (slice "a" "b" "c") }} {{ $data := getCSV "," "https://example.org/pets.csv" $opts }} ``` ## Global resource alternative Consider using the [`resources.Get`] function with [`transform.Unmarshal`] when accessing a global resource. ```text my-project/ └── assets/ └── data/ └── pets.csv ``` ```go-html-template {{ $data := dict }} {{ $p := "data/pets.csv" }} {{ with resources.Get $p }} {{ $opts := dict "delimiter" "," }} {{ $data = . | transform.Unmarshal $opts }} {{ else }} {{ errorf "Unable to get resource %q" $p }} {{ end }} ``` ## Page resource alternative Consider using the [`Resources.Get`][/methods/page/resources/] method with [`transform.Unmarshal`] when accessing a page resource. ```text my-project/ └── content/ └── posts/ └── my-pets/ ├── index.md └── pets.csv ``` ```go-html-template {{ $data := dict }} {{ $p := "pets.csv" }} {{ with .Resources.Get $p }} {{ $opts := dict "delimiter" "," }} {{ $data = . | transform.Unmarshal $opts }} {{ else }} {{ errorf "Unable to get resource %q" $p }} {{ end }} ``` ## Remote resource alternative Consider using the [`resources.GetRemote`] function with [`transform.Unmarshal`] when accessing a remote resource to improve error handling and cache control. ```go-html-template {{ $data := dict }} {{ $url := "https://example.org/pets.csv" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ $opts := dict "delimiter" "," }} {{ $data = . | transform.Unmarshal $opts }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` [`resources.GetRemote`]: /functions/resources/getremote/ [`transform.Unmarshal`]: /functions/transform/unmarshal/ gohugoio-hugo-6abdaca/docs/content/en/functions/data/GetJSON.md000066400000000000000000000070021507671574500246150ustar00rootroot00000000000000--- title: data.GetJSON description: Returns a JSON object from a local or remote JSON file, or an error if the file does not exist. categories: [] keywords: [] params: functions_and_methods: aliases: [getJSON] returnType: any signatures: ['data.GetJSON INPUT... [OPTIONS]'] expiryDate: 2026-02-19 # deprecated 2024-02-19 in v0.123.0 --- {{< deprecated-in 0.123.0 >}} Instead, use [`transform.Unmarshal`] with a [global resource](g), [page resource](g), or [remote resource](g). See the [remote data example]. [`transform.Unmarshal`]: /functions/transform/unmarshal/ [remote data example]: /functions/resources/getremote/#remote-data {{< /deprecated-in >}} Given the following directory structure: ```text my-project/ └── other-files/ └── books.json ``` Access the data with either of the following: ```go-html-template {{ $data := getJSON "other-files/books.json" }} {{ $data := getJSON "other-files/" "books.json" }} ``` > [!note] > When working with local data, the file path is relative to the working directory. Access remote data with either of the following: ```go-html-template {{ $data := getJSON "https://example.org/books.json" }} {{ $data := getJSON "https://example.org/" "books.json" }} ``` The resulting data structure is a JSON object: ```json [ { "author": "Victor Hugo", "rating": 5, "title": "Les Misérables" }, { "author": "Victor Hugo", "rating": 4, "title": "The Hunchback of Notre Dame" } ] ``` ## Options Add headers to the request by providing an options map: ```go-html-template {{ $opts := dict "Authorization" "Bearer abcd" }} {{ $data := getJSON "https://example.org/books.json" $opts }} ``` Add multiple headers using a slice: ```go-html-template {{ $opts := dict "X-List" (slice "a" "b" "c") }} {{ $data := getJSON "https://example.org/books.json" $opts }} ``` ## Global resource alternative Consider using the [`resources.Get`](/functions/resources/get/) function with [`transform.Unmarshal`] when accessing a global resource. ```text my-project/ └── assets/ └── data/ └── books.json ``` ```go-html-template {{ $data := dict }} {{ $p := "data/books.json" }} {{ with resources.Get $p }} {{ $data = . | transform.Unmarshal }} {{ else }} {{ errorf "Unable to get resource %q" $p }} {{ end }} ``` ## Page resource alternative Consider using the [`Resources.Get`][/methods/page/resources/] method with [`transform.Unmarshal`] when accessing a page resource. ```text my-project/ └── content/ └── posts/ └── reading-list/ ├── books.json └── index.md ``` ```go-html-template {{ $data := dict }} {{ $p := "books.json" }} {{ with .Resources.Get $p }} {{ $data = . | transform.Unmarshal }} {{ else }} {{ errorf "Unable to get resource %q" $p }} {{ end }} ``` ## Remote resource alternative Consider using the [`resources.GetRemote`] function with [`transform.Unmarshal`] when accessing a remote resource to improve error handling and cache control. ```go-html-template {{ $data := dict }} {{ $url := "https://example.org/books.json" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ $data = . | transform.Unmarshal }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` [`resources.GetRemote`]: /functions/resources/getremote/ [`transform.Unmarshal`]: /functions/transform/unmarshal/ gohugoio-hugo-6abdaca/docs/content/en/functions/data/_index.md000066400000000000000000000002171507671574500246530ustar00rootroot00000000000000--- title: Data functions linkTitle: data description: Use these functions to read local or remote data files. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/debug/000077500000000000000000000000001507671574500232405ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/debug/Dump.md000066400000000000000000000011071507671574500244660ustar00rootroot00000000000000--- title: debug.Dump description: Returns an object dump as a string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [debug.Dump VALUE] --- ```go-html-template
      {{ debug.Dump site.Data.books }}
      ``` ```json [ { "author": "Victor Hugo", "rating": 4, "title": "The Hunchback of Notre Dame" }, { "author": "Victor Hugo", "rating": 5, "title": "Les Misérables" } ] ``` > [!note] > Output from this function may change from one release to the next. Use for debugging only. gohugoio-hugo-6abdaca/docs/content/en/functions/debug/Timer.md000066400000000000000000000017631507671574500246510ustar00rootroot00000000000000--- title: debug.Timer description: Creates a named timer that reports elapsed time to the console. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: debug.Timer signatures: [debug.Timer NAME] --- {{< new-in 0.120.0 />}} Use the `debug.Timer` function to determine execution time for a block of code, useful for finding performance bottlenecks in templates. The timer starts when you instantiate it, and stops when you call its `Stop` method. ```go-html-template {{ $t := debug.Timer "TestSqrt" }} {{ range 2000 }} {{ $f := math.Sqrt . }} {{ end }} {{ $t.Stop }} ``` Use the `--logLevel info` command line flag when you build the site. ```sh hugo --logLevel info ``` The results are displayed in the console at the end of the build. You can have as many timers as you want and if you don't stop them, they will be stopped at the end of build. ```text INFO timer: name TestSqrt count 1002 duration 2.496017496s average 2.491035ms median 2.282291ms ``` gohugoio-hugo-6abdaca/docs/content/en/functions/debug/_index.md000066400000000000000000000002061507671574500250260ustar00rootroot00000000000000--- title: Debug functions linkTitle: debug description: Use these functions to debug your templates. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/diagrams/000077500000000000000000000000001507671574500237415ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/diagrams/Goat.md000066400000000000000000000057331507671574500251650ustar00rootroot00000000000000--- title: diagrams.Goat description: Returns an SVGDiagram object created from the given GoAT markup and options. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: diagrams.SVGDiagram signatures: [diagrams.Goat MARKUP] --- Useful in a [code block render hook], the `diagrams.Goat` function returns an SVGDiagram object created from the given [GoAT] markup. ## Methods The SVGDiagram object has the following methods: Inner : (`template.HTML`) Returns the SVG child elements without a wrapping `svg` element, allowing you to create your own wrapper. Wrapped : (`template.HTML`) Returns the SVG child elements wrapped in an `svg` element. Width : (`int`) Returns the width of the rendered diagram, in pixels. Height : (`int`) Returns the height of the rendered diagram, in pixels. ## GoAT Diagrams Hugo natively supports GoAT diagrams with an [embedded code block render hook]. This Markdown: ````text ```goat .---. .-. .-. .-. .---. | A +--->| 1 |<--->| 2 |<--->| 3 |<---+ B | '---' '-' '+' '+' '---' ``` ```` Is rendered to: ```html
      ...
      ``` Which appears in your browser as: ```goat {class="mw6-ns"} .---. .-. .-. .-. .---. | A +--->| 1 |<--->| 2 |<--->| 3 |<---+ B | '---' '-' '+' '+' '---' ``` To customize rendering, override Hugo's [embedded code block render hook] for GoAT diagrams. ## Code block render hook By way of example, let's create a code block render hook to render GoAT diagrams as `figure` elements with an optional caption. ```go-html-template {file="layouts/_markup/render-codeblock-goat.html"} {{ $caption := or .Attributes.caption "" }} {{ $class := or .Attributes.class "diagram" }} {{ $id := or .Attributes.id (printf "diagram-%d" (add 1 .Ordinal)) }}
      {{ with diagrams.Goat (trim .Inner "\n\r") }} {{ .Inner }} {{ end }}
      {{ $caption }}
      ``` This Markdown: ````text {file="content/example.md" } ```goat {class="foo" caption="Diagram 1: Example"} .---. .-. .-. .-. .---. | A +--->| 1 |<--->| 2 |<--->| 3 |<---+ B | '---' '-' '+' '+' '---' ``` ```` Is rendered to: ```html
      ...
      Diagram 1: Example
      ``` Use CSS to style the SVG as needed: ```css svg.foo { font-family: "Segoe UI","Noto Sans",Helvetica,Arial,sans-serif } ``` [code block render hook]: /render-hooks/code-blocks/ [embedded code block render hook]: {{% eturl render-codeblock-goat %}} [GoAT]: https://github.com/bep/goat gohugoio-hugo-6abdaca/docs/content/en/functions/diagrams/_index.md000066400000000000000000000002061507671574500255270ustar00rootroot00000000000000--- title: Diagram functions linkTitle: diagrams description: Use these functions to render diagrams. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/encoding/000077500000000000000000000000001507671574500237405ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/encoding/Base64Decode.md000066400000000000000000000020271507671574500264130ustar00rootroot00000000000000--- title: encoding.Base64Decode description: Returns the base64 decoding of the given content. categories: [] keywords: [] params: functions_and_methods: aliases: [base64Decode] returnType: string signatures: [encoding.Base64Decode INPUT] aliases: [/functions/base64Decode] --- ```go-html-template {{ "SHVnbw==" | base64Decode }} → Hugo ``` Use the `base64Decode` function to decode responses from APIs. For example, the result of this call to GitHub's API contains the base64-encoded representation of the repository's README file: ```text https://api.github.com/repos/gohugoio/hugo/readme ``` To retrieve and render the content: ```go-html-template {{ $url := "https://api.github.com/repos/gohugoio/hugo/readme" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ with . | transform.Unmarshal }} {{ .content | base64Decode | markdownify }} {{ end }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/encoding/Base64Encode.md000066400000000000000000000005721507671574500264300ustar00rootroot00000000000000--- title: encoding.Base64Encode description: Returns the base64 decoding of the given content. categories: [] keywords: [] params: functions_and_methods: aliases: [base64Encode] returnType: string signatures: [encoding.Base64Encode INPUT] aliases: [/functions/base64, /functions/base64Encode] --- ```go-html-template {{ "Hugo" | base64Encode }} → SHVnbw== ``` gohugoio-hugo-6abdaca/docs/content/en/functions/encoding/Jsonify.md000066400000000000000000000023121507671574500257010ustar00rootroot00000000000000--- title: encoding.Jsonify description: Encodes the given object to JSON. categories: [] keywords: [] params: functions_and_methods: aliases: [jsonify] returnType: template.HTML signatures: ['encoding.Jsonify [OPTIONS] INPUT'] aliases: [/functions/jsonify] --- To customize the printing of the JSON, pass an options map as the first argument. Supported options are "prefix" and "indent". Each JSON element in the output will begin on a new line beginning with _prefix_ followed by one or more copies of _indent_ according to the indentation nesting. ```go-html-template {{ dict "title" .Title "content" .Plain | jsonify }} {{ dict "title" .Title "content" .Plain | jsonify (dict "indent" " ") }} {{ dict "title" .Title "content" .Plain | jsonify (dict "prefix" " " "indent" " ") }} ``` ## Options indent : (`string`) Indentation to use. Default is "". prefix : (`string`) Indentation prefix. Default is "". noHTMLEscape : (`bool`) Whether to disable escaping of problematic HTML characters inside JSON quoted strings. The default behavior is to escape `&`, `<`, and `>` to `\u0026`, `\u003c`, and `\u003e` to avoid certain safety problems that can arise when embedding JSON in HTML. Default is `false`. gohugoio-hugo-6abdaca/docs/content/en/functions/encoding/_index.md000066400000000000000000000002161507671574500255270ustar00rootroot00000000000000--- title: Encoding functions linkTitle: encoding description: Use these functions to encode and decode data. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/000077500000000000000000000000001507671574500227405ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/Errorf.md000066400000000000000000000012101507671574500245130ustar00rootroot00000000000000--- title: fmt.Errorf description: Log an ERROR from a template. categories: [] keywords: [] params: functions_and_methods: aliases: [errorf] returnType: string signatures: ['fmt.Errorf FORMAT [INPUT]'] aliases: [/functions/errorf] --- {{% include "/_common/functions/fmt/format-string.md" %}} The `errorf` function evaluates the format string, then prints the result to the ERROR log and fails the build. ```go-html-template {{ errorf "The %q shortcode requires a src argument. See %s" .Name .Position }} ``` Use the [`erroridf`] function to allow optional suppression of specific errors. [`erroridf`]: /functions/fmt/erroridf/ gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/Erroridf.md000066400000000000000000000020321507671574500250330ustar00rootroot00000000000000--- title: fmt.Erroridf description: Log a suppressible ERROR from a template. categories: [] keywords: [] params: functions_and_methods: aliases: [erroridf] returnType: string signatures: ['fmt.Erroridf ID FORMAT [INPUT]'] aliases: [/functions/erroridf] --- {{% include "/_common/functions/fmt/format-string.md" %}} The `erroridf` function evaluates the format string, then prints the result to the ERROR log and fails the build. Unlike the [`errorf`] function, you may suppress errors logged by the `erroridf` function by adding the message ID to the `ignoreLogs` array in your site configuration. This template code: ```go-html-template {{ erroridf "error-42" "You should consider fixing this." }} ``` Produces this console log: ```text ERROR You should consider fixing this. You can suppress this error by adding the following to your site configuration: ignoreLogs = ['error-42'] ``` To suppress this message: {{< code-toggle file=hugo >}} ignoreLogs = ["error-42"] {{< /code-toggle >}} [`errorf`]: /functions/fmt/errorf/ gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/Print.md000066400000000000000000000006531507671574500243620ustar00rootroot00000000000000--- title: fmt.Print description: Prints the default representation of the given arguments using the standard `fmt.Print` function. categories: [] keywords: [] params: functions_and_methods: aliases: [print] returnType: string signatures: [fmt.Print INPUT] aliases: [/functions/print] --- ```go-html-template {{ print "foo" }} → foo {{ print "foo" "bar" }} → foobar {{ print (slice 1 2 3) }} → [1 2 3] ``` gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/Printf.md000066400000000000000000000014521507671574500245260ustar00rootroot00000000000000--- title: fmt.Printf description: Formats a string using the standard `fmt.Sprintf` function. categories: [] keywords: [] params: functions_and_methods: aliases: [printf] returnType: string signatures: ['fmt.Printf FORMAT [INPUT]'] aliases: [/functions/printf] --- {{% include "/_common/functions/fmt/format-string.md" %}} ```go-html-template {{ $var := "world" }} {{ printf "Hello %s." $var }} → Hello world. ``` ```go-html-template {{ $pi := 3.14159265 }} {{ printf "Pi is approximately %.2f." $pi }} → 3.14 ``` Use the `printf` function with the `safeHTMLAttr` function: ```go-html-template {{ $desc := "Eat at Joe's" }} ``` Hugo renders this to: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/Println.md000066400000000000000000000006071507671574500247130ustar00rootroot00000000000000--- title: fmt.Println description: Prints the default representation of the given argument using the standard `fmt.Print` function and enforces a line break. categories: [] keywords: [] params: functions_and_methods: aliases: [println] returnType: string signatures: [fmt.Println INPUT] aliases: [/functions/println] --- ```go-html-template {{ println "foo" }} → foo\n ``` gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/Warnf.md000066400000000000000000000020121507671574500243320ustar00rootroot00000000000000--- title: fmt.Warnf description: Log a WARNING from a template. categories: [] keywords: [] params: functions_and_methods: aliases: [warnf] returnType: string signatures: ['fmt.Warnf FORMAT [INPUT]'] aliases: [/functions/warnf] --- {{% include "/_common/functions/fmt/format-string.md" %}} The `warnf` function evaluates the format string, then prints the result to the WARNING log. Hugo prints each unique message once to avoid flooding the log with duplicate warnings. ```go-html-template {{ warnf "The %q shortcode was unable to find %s. See %s" .Name $file .Position }} ``` Use the [`warnidf`] function to allow optional suppression of specific warnings. To prevent suppression of duplicate messages when using `warnf` for debugging, make each message unique with the [`math.Counter`] function. For example: ```go-html-template {{ range site.RegularPages }} {{ .Section | warnf "%#[2]v [%[1]d]" math.Counter }} {{ end }} ``` [`math.Counter`]: /functions/math/counter/ [`warnidf`]: /functions/fmt/warnidf/ gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/Warnidf.md000066400000000000000000000020421507671574500246520ustar00rootroot00000000000000--- title: fmt.Warnidf description: Log a suppressible WARNING from a template. categories: [] keywords: [] params: functions_and_methods: aliases: [warnidf] returnType: string signatures: ['fmt.Warnidf ID FORMAT [INPUT]'] aliases: [/functions/warnidf] --- {{< new-in 0.123.0 />}} {{% include "/_common/functions/fmt/format-string.md" %}} The `warnidf` function evaluates the format string, then prints the result to the WARNING log. Unlike the [`warnf`] function, you may suppress warnings logged by the `warnidf` function by adding the message ID to the `ignoreLogs` array in your site configuration. This template code: ```go-html-template {{ warnidf "warning-42" "You should consider fixing this." }} ``` Produces this console log: ```text WARN You should consider fixing this. You can suppress this warning by adding the following to your site configuration: ignoreLogs = ['warning-42'] ``` To suppress this message: {{< code-toggle file=hugo >}} ignoreLogs = ["warning-42"] {{< /code-toggle >}} [`warnf`]: /functions/fmt/warnf/ gohugoio-hugo-6abdaca/docs/content/en/functions/fmt/_index.md000066400000000000000000000002631507671574500245310ustar00rootroot00000000000000--- title: Fmt functions linkTitle: fmt description: Use these functions to print strings within a template or to print messages to the terminal. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/global/000077500000000000000000000000001507671574500234125ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/global/_index.md000066400000000000000000000002071507671574500252010ustar00rootroot00000000000000--- title: Global functions linkTitle: global description: Use these global functions to access page and site data. categories: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/global/page.md000066400000000000000000000056661507671574500246650ustar00rootroot00000000000000--- title: page description: Provides global access to a Page object. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [page] aliases: [/functions/page] --- At the top level of a template that receives a `Page` object in context, these are equivalent: ```go-html-template {{ .Params.foo }} {{ .Page.Params.foo }} {{ page.Params.foo }} ``` When a `Page` object is not in context, you can use the global `page` function: ```go-html-template {{ page.Params.foo }} ``` > [!note] > Do not use the global `page` function in shortcodes, partials called by shortcodes, or cached partials. See [warnings](#warnings) below. ## Explanation Hugo almost always passes a `Page` as the data context into the top-level template (e.g., `baseof.html`). The one exception is the multihost sitemap template. This means that you can access the current page with the `.` in the template. But when you are deeply nested inside of a [content view](g), [partial](g), or [render hook](g), it is not always practical or possible to access the `Page` object. Use the global `page` function to access the `Page` object from anywhere in any template. ## Warnings ### Be aware of top-level context The global `page` function accesses the `Page` object passed into the top-level template. With this content structure: ```text content/ ├── posts/ │ ├── post-1.md │ ├── post-2.md │ └── post-3.md └── _index.md <-- title is "My Home Page" ``` And this code in the _home_ template: ```go-html-template {file="layouts/home.html"} {{ range site.Sections }} {{ range .Pages }} {{ page.Title }} {{ end }} {{ end }} ``` The rendered output will be: ```text My Home Page My Home Page My Home Page ``` In the example above, the global `page` function accesses the `Page` object passed into the _home_ template; it does not access the `Page` object of the iterated pages. ### Be aware of caching Do not use the global `page` function in: - Shortcodes - Partials called by shortcodes - Partials cached by the [`partialCached`] function Hugo caches rendered shortcodes. If you use the global `page` function within a shortcode, and the page content is rendered in two or more templates, the cached shortcode may be incorrect. Consider this _section_ template: ```go-html-template {file="layouts/section.html"} {{ range .Pages }}

      {{ .LinkTitle }}

      {{ .Summary }} {{ end }} ``` When you call the [`Summary`] method, Hugo renders the page content including shortcodes. In this case, within a shortcode, the global `page` function accesses the `Page` object of the section page, not the content page. If Hugo renders the section page before a content page, the cached rendered shortcode will be incorrect. You cannot control the rendering sequence due to concurrency. [`partialCached`]: /functions/partials/includecached/ [`Summary`]: /methods/page/summary/ gohugoio-hugo-6abdaca/docs/content/en/functions/global/site.md000066400000000000000000000012501507671574500246760ustar00rootroot00000000000000--- title: site description: Provides global access to the current Site object. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [site] aliases: [/functions/site] --- Use the `site` function to return the `Site` object regardless of current context. ```go-html-template {{ site.Params.foo }} ``` When the `Site` object is in context you can use the `Site` property: ```go-html-template {{ .Site.Params.foo }} {{ $.Site.Params.foo }} ``` > [!note] > To simplify your templates, use the global `site` function regardless of whether the `Site` object is in context. gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/000077500000000000000000000000001507671574500243705ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/_index.md000066400000000000000000000003331507671574500261570ustar00rootroot00000000000000--- title: Go template functions, operators, and statements linkTitle: go template description: These are the functions, operators, and statements provided by Go's text/template package. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/and.md000066400000000000000000000007621507671574500254610ustar00rootroot00000000000000--- title: and description: Returns the first falsy argument. If all arguments are truthy, returns the last argument. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: any signatures: [and VALUE...] --- {{% include "/_common/functions/truthy-falsy.md" %}} ```go-html-template {{ and 1 0 "" }} → 0 (int) {{ and 1 false 0 }} → false (bool) {{ and 1 2 3 }} → 3 (int) {{ and "a" "b" "c" }} → c (string) {{ and "a" 1 true }} → true (bool) ``` gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/block.md000066400000000000000000000021461507671574500260070ustar00rootroot00000000000000--- title: block description: Defines a template and executes it in place. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [block NAME CONTEXT] --- A block is shorthand for defining a template: ```go-html-template {{ define "name" }} T1 {{ end }} ``` and then executing it in place: ```go-html-template {{ template "name" pipeline }} ``` The typical use is to define a set of root templates that are then customized by redefining the block templates within. ```go-html-template {file="layouts/baseof.html"}
      {{ block "main" . }} {{ print "default value if 'main' template is empty" }} {{ end }}
      ``` ```go-html-template {file="layouts/page.html"} {{ define "main" }}

      {{ .Title }}

      {{ .Content }} {{ end }} ``` ```go-html-template {file="layouts/section.html"} {{ define "main" }}

      {{ .Title }}

      {{ .Content }} {{ range .Pages }}

      {{ .LinkTitle }}

      {{ end }} {{ end }} ``` {{% include "/_common/functions/go-template/text-template.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/break.md000066400000000000000000000010251507671574500257740ustar00rootroot00000000000000--- title: break description: Used with the range statement, stops the innermost iteration and bypasses all remaining iterations. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [break] --- This template code: ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $s }} {{ if eq . "bar" }} {{ break }} {{ end }}

      {{ . }}

      {{ end }} ``` Is rendered to: ```html

      foo

      ``` {{% include "/_common/functions/go-template/text-template.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/continue.md000066400000000000000000000010471507671574500265400ustar00rootroot00000000000000--- title: continue description: Used with the range statement, stops the innermost iteration and continues to the next iteration. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [continue] --- This template code: ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $s }} {{ if eq . "bar" }} {{ continue }} {{ end }}

      {{ . }}

      {{ end }} ``` Is rendered to: ```html

      foo

      baz

      ``` {{% include "/_common/functions/go-template/text-template.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/define.md000066400000000000000000000017201507671574500261440ustar00rootroot00000000000000--- title: define description: Defines a template. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [define NAME] --- Use with the [`block`] statement: ```go-html-template {{ block "main" . }} {{ print "default value if 'main' template is empty" }} {{ end }} {{ define "main" }}

      {{ .Title }}

      {{ .Content }} {{ end }} ``` Use with the [`partial`] function: ```go-html-template {{ partial "inline/foo.html" (dict "answer" 42) }} {{ define "_partials/inline/foo.html" }} {{ printf "The answer is %v." .answer }} {{ end }} ``` Use with the [`template`] function: ```go-html-template {{ template "foo" (dict "answer" 42) }} {{ define "foo" }} {{ printf "The answer is %v." .answer }} {{ end }} ``` {{% include "/_common/functions/go-template/text-template.md" %}} [`block`]: /functions/go-template/block/ [`template`]: /functions/go-template/block/ [`partial`]: /functions/partials/include/ gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/else.md000066400000000000000000000022451507671574500256450ustar00rootroot00000000000000--- title: else description: Begins an alternate block for if, with, and range statements. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [else VALUE] --- Use with the [`if`] statement: ```go-html-template {{ $var := "foo" }} {{ if $var }} {{ $var }} → foo {{ else }} {{ print "var is falsy" }} {{ end }} ``` Use with the [`with`] statement: ```go-html-template {{ $var := "foo" }} {{ with $var }} {{ . }} → foo {{ else }} {{ print "var is falsy" }} {{ end }} ``` Use with the [`range`] statement: ```go-html-template {{ $var := slice 1 2 3 }} {{ range $var }} {{ . }} → 1 2 3 {{ else }} {{ print "var is falsy" }} {{ end }} ``` Use `else if` to check multiple conditions. ```go-html-template {{ $var := 12 }} {{ if eq $var 6 }} {{ print "var is 6" }} {{ else if eq $var 7 }} {{ print "var is 7" }} {{ else if eq $var 42 }} {{ print "var is 42" }} {{ else }} {{ print "var is something else" }} {{ end }} ``` {{% include "/_common/functions/go-template/text-template.md" %}} [`if`]: /functions/go-template/if/ [`with`]: /functions/go-template/with/ [`range`]: /functions/go-template/range/ gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/end.md000066400000000000000000000020611507671574500254570ustar00rootroot00000000000000--- title: end description: Terminates if, with, range, block, and define statements. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [end] --- Use with the [`if`] statement: ```go-html-template {{ $var := "foo" }} {{ if $var }} {{ $var }} → foo {{ end }} ``` Use with the [`with`] statement: ```go-html-template {{ $var := "foo" }} {{ with $var }} {{ . }} → foo {{ end }} ``` Use with the [`range`] statement: ```go-html-template {{ $var := slice 1 2 3 }} {{ range $var }} {{ . }} → 1 2 3 {{ end }} ``` Use with the [`block`] statement: ```go-html-template {{ block "main" . }}{{ end }} ``` Use with the [`define`] statement: ```go-html-template {{ define "main" }} {{ print "this is the main section" }} {{ end }} ``` {{% include "/_common/functions/go-template/text-template.md" %}} [`block`]: /functions/go-template/block/ [`define`]: /functions/go-template/define/ [`if`]: /functions/go-template/if/ [`range`]: /functions/go-template/range/ [`with`]: /functions/go-template/with/ gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/if.md000066400000000000000000000016071507671574500253140ustar00rootroot00000000000000--- title: if description: Executes the block if the expression is truthy. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [if EXPR] --- {{% include "/_common/functions/truthy-falsy.md" %}} ```go-html-template {{ $var := "foo" }} {{ if $var }} {{ $var }} → foo {{ end }} ``` Use with the [`else`] statement: ```go-html-template {{ $var := "foo" }} {{ if $var }} {{ $var }} → foo {{ else }} {{ print "var is falsy" }} {{ end }} ``` Use `else if` to check multiple conditions: ```go-html-template {{ $var := 12 }} {{ if eq $var 6 }} {{ print "var is 6" }} {{ else if eq $var 7 }} {{ print "var is 7" }} {{ else if eq $var 42 }} {{ print "var is 42" }} {{ else }} {{ print "var is something else" }} {{ end }} ``` {{% include "/_common/functions/go-template/text-template.md" %}} [`else`]: /functions/go-template/else/ gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/len.md000066400000000000000000000014331507671574500254710ustar00rootroot00000000000000--- title: len description: Returns the length of a string, slice, map, or collection. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: int signatures: [len VALUE] aliases: [/functions/len] --- With a string: ```go-html-template {{ "ab" | len }} → 2 {{ "" | len }} → 0 ``` With a slice: ```go-html-template {{ slice "a" "b" | len }} → 2 {{ slice | len }} → 0 ``` With a map: ```go-html-template {{ dict "a" 1 "b" 2 | len }} → 2 {{ dict | len }} → 0 ``` With a collection: ```go-html-template {{ site.RegularPages | len }} → 42 ``` You may also determine the number of pages in a collection with: ```go-html-template {{ site.RegularPages.Len }} → 42 ``` {{% include "/_common/functions/go-template/text-template.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/not.md000066400000000000000000000013141507671574500255110ustar00rootroot00000000000000--- title: not description: Returns the boolean negation of its single argument. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [not VALUE] --- Unlike the `and` and `or` operators, the `not` operator always returns a boolean value. ```go-html-template {{ not true }} → false {{ not false }} → true {{ not 1 }} → false {{ not 0 }} → true {{ not "x" }} → false {{ not "" }} → true ``` Use the `not` operator, twice in succession, to cast any value to a boolean value. For example: ```go-html-template {{ 42 | not | not }} → true {{ "" | not | not }} → false ``` {{% include "/_common/functions/go-template/text-template.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/or.md000066400000000000000000000010201507671574500253230ustar00rootroot00000000000000--- title: or description: Returns the first truthy argument. If all arguments are falsy, returns the last argument. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: any signatures: [or VALUE...] --- {{% include "/_common/functions/truthy-falsy.md" %}} ```go-html-template {{ or 0 1 2 }} → 1 {{ or false "a" 1 }} → a {{ or 0 true "a" }} → true {{ or false "" 0 }} → 0 {{ or 0 "" false }} → false ``` {{% include "/_common/functions/go-template/text-template.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/range.md000066400000000000000000000103211507671574500260030ustar00rootroot00000000000000--- title: range description: Iterates over a non-empty collection, binds context (the dot) to successive elements, and executes the block. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [range COLLECTION] aliases: [/functions/range] --- The collection may be a slice, a map, or an integer. ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $s }} {{ . }} → foo bar baz {{ end }} ``` Use with the [`else`] statement: ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $s }}

      {{ . }}

      {{ else }}

      The collection is empty

      {{ end }} ``` Within a range block: - Use the [`continue`] statement to stop the innermost iteration and continue to the next iteration - Use the [`break`] statement to stop the innermost iteration and bypass all remaining iterations ## Understanding context See the [context] section in the introduction to templating. For example, at the top of a _page_ template, the [context](g) (the dot) is a `Page` object. Within the `range` block, the context is bound to each successive element. With this contrived example: ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $s }} {{ .Title }} {{ end }} ``` Hugo will throw an error: ```text can't evaluate field Title in type int ``` The error occurs because we are trying to use the `.Title` method on a string instead of a `Page` object. Within the `range` block, if we want to render the page title, we need to get the context passed into the template. > [!note] > Use the `$` to get the context passed into the template. This template will render the page title three times: ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $s }} {{ $.Title }} {{ end }} ``` > [!note] > Gaining a thorough understanding of context is critical for anyone writing template code. ## Examples ### Slice of scalars This template code: ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $s }}

      {{ . }}

      {{ end }} ``` Is rendered to: ```html

      foo

      bar

      baz

      ``` This template code: ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $v := $s }}

      {{ $v }}

      {{ end }} ``` Is rendered to: ```html

      foo

      bar

      baz

      ``` This template code: ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $k, $v := $s }}

      {{ $k }}: {{ $v }}

      {{ end }} ``` Is rendered to: ```html

      0: foo

      1: bar

      2: baz

      ``` ### Slice of maps This template code: ```go-html-template {{ $m := slice (dict "name" "John" "age" 30) (dict "name" "Will" "age" 28) (dict "name" "Joey" "age" 24) }} {{ range $m }}

      {{ .name }} is {{ .age }}

      {{ end }} ``` Is rendered to: ```html

      John is 30

      Will is 28

      Joey is 24

      ``` ### Slice of pages This template code: ```go-html-template {{ range where site.RegularPages "Type" "articles" }}

      {{ .LinkTitle }}

      {{ end }} ``` Is rendered to: ```html

      Article 3

      Article 2

      Article 1

      ``` ### Maps This template code: ```go-html-template {{ $m := dict "name" "John" "age" 30 }} {{ range $k, $v := $m }}

      key = {{ $k }} value = {{ $v }}

      {{ end }} ``` Is rendered to: ```go-html-template

      key = age value = 30

      key = name value = John

      ``` Unlike ranging over an array or slice, Hugo sorts by key when ranging over a map. ### Integers {{< new-in 0.123.0 />}} Ranging over a positive integer `n` executes the block `n` times, with the context starting at zero and incrementing by one in each iteration. ```go-html-template {{ $s := slice }} {{ range 1 }} {{ $s = $s | append . }} {{ end }} {{ $s }} → [0] ``` ```go-html-template {{ $s := slice }} {{ range 3 }} {{ $s = $s | append . }} {{ end }} {{ $s }} → [0 1 2] ``` Ranging over a non-positive integer executes the block zero times. {{% include "/_common/functions/go-template/text-template.md" %}} [`break`]: /functions/go-template/break/ [`continue`]: /functions/go-template/continue/ [`else`]: /functions/go-template/else/ [context]: /templates/introduction/#context gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/return.md000066400000000000000000000051251507671574500262340ustar00rootroot00000000000000--- title: return description: Used within partial templates, terminates template execution and returns the given value, if any. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: any signatures: ['return [VALUE]'] --- The `return` statement is a non-standard extension to Go's [text/template package]. Used within _partial_ templates, the `return` statement terminates template execution and returns the given value, if any. The returned value may be of any data type including, but not limited to, [`bool`](g), [`float`](g), [`int`](g), [`map`](g), [`resource`](g), [`slice`](g), or [`string`](g). A `return` statement without a value returns an empty string of type `template.HTML`. > [!note] > Unlike `return` statements in other languages, Hugo executes the first occurrence of the `return` statement regardless of its position within logical blocks. See [usage](#usage) notes below. ## Example By way of example, let's create a _partial_ template that _renders_ HTML, describing whether the given number is odd or even: ```go-html-template {file="layouts/_partials/odd-or-even.html"} {{ if math.ModBool . 2 }}

      {{ . }} is even

      {{ else }}

      {{ . }} is odd

      {{ end }} ``` When called, the partial renders HTML: ```go-html-template {{ partial "odd-or-even.html" 42 }} →

      42 is even

      ``` Instead of rendering HTML, let's create a partial that _returns_ a boolean value, reporting whether the given number is even: ```go-html-template {file="layouts/_partials/is-even.html"} {{ return math.ModBool . 2 }} ``` With this template: ```go-html-template {{ $number := 42 }} {{ if partial "is-even.html" $number }}

      {{ $number }} is even

      {{ else }}

      {{ $number }} is odd

      {{ end }} ``` Hugo renders: ```html

      42 is even

      ``` ## Usage > [!note] > Unlike `return` statements in other languages, Hugo executes the first occurrence of the `return` statement regardless of its position within logical blocks. A partial that returns a value must contain only one `return` statement, placed at the end of the template. For example: ```go-html-template {file="layouts/_partials/is-even.html"} {{ $result := false }} {{ if math.ModBool . 2 }} {{ $result = "even" }} {{ else }} {{ $result = "odd" }} {{ end }} {{ return $result }} ``` > [!note] > The construct below is incorrect; it contains more than one `return` statement. ```go-html-template {file="layouts/_partials/do-not-do-this.html"} {{ if math.ModBool . 2 }} {{ return "even" }} {{ else }} {{ return "odd" }} {{ end }} ``` [text/template package]: https://pkg.go.dev/text/template gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/template.md000066400000000000000000000023601507671574500265260ustar00rootroot00000000000000--- title: template description: Executes the given template, optionally passing context. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: ['template NAME [CONTEXT]'] --- Use the `template` function to execute a defined template: ```go-html-template {{ template "foo" (dict "answer" 42) }} {{ define "foo" }} {{ printf "The answer is %v." .answer }} {{ end }} ``` The example above can be rewritten using an inline _partial_ template: ```go-html-template {{ partial "inline/foo.html" (dict "answer" 42) }} {{ define "_partials/inline/foo.html" }} {{ printf "The answer is %v." .answer }} {{ end }} ``` The key distinctions between the preceding two examples are: 1. Inline partials are globally scoped. That means that an inline partial defined in _one_ template may be called from _any_ template. 1. Leveraging the [`partialCached`] function when calling an inline partial allows for performance optimization through result caching. 1. An inline partial can [`return`] a value of any data type instead of rendering a string. {{% include "/_common/functions/go-template/text-template.md" %}} [`partialCached`]: /functions/partials/includecached/ [`return`]: /functions/go-template/return/ gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/try.md000066400000000000000000000063631507671574500255400ustar00rootroot00000000000000--- title: try description: Returns a TryValue object after evaluating the given expression. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: TryValue signatures: ['try EXPRESSION'] --- {{< new-in 0.141.0 />}} The `try` statement is a non-standard extension to Go's [text/template] package. It introduces a mechanism for handling errors within templates, mimicking the `try-catch` constructs found in other programming languages. ## Methods The `TryValue` object encapsulates the result of evaluating the expression, and provides two methods: ### Err (`string`) Returns a string representation of the error thrown by the expression, if an error occurred, or returns `nil` if the expression evaluated without errors. ### Value (`any`) Returns the result of the expression if the evaluation was successful, or returns `nil` if an error occurred while evaluating the expression. ## Explanation By way of example, let's divide a number by zero: ```go-html-template {{ $x := 1 }} {{ $y := 0 }} {{ $result := div $x $y }} {{ printf "%v divided by %v equals %v" $x $y .Value }} ``` As expected, the example above throws an error and fails the build: ```terminfo Error: error calling div: can't divide the value by 0 ``` Instead of failing the build, we can catch the error and emit a warning: ```go-html-template {{ $x := 1 }} {{ $y := 0 }} {{ with try (div $x $y) }} {{ with .Err }} {{ warnf "%s" . }} {{ else }} {{ printf "%v divided by %v equals %v" $x $y .Value }} {{ end }} {{ end }} ``` The error thrown by the expression is logged to the console as a warning: ```terminfo WARN error calling div: can't divide the value by 0 ``` Now let's change the arguments to avoid dividing by zero: ```go-html-template {{ $x := 42 }} {{ $y := 6 }} {{ with try (div $x $y) }} {{ with .Err }} {{ warnf "%s" . }} {{ else }} {{ printf "%v divided by %v equals %v" $x $y .Value }} {{ end }} {{ end }} ``` Hugo renders the above to: ```html 42 divided by 6 equals 7 ``` ## Example Error handling is essential when using the [`resources.GetRemote`] function to capture remote resources such as data or images. When calling this function, if the HTTP request fails, Hugo will fail the build. Instead of failing the build, we can catch the error and emit a warning: ```go-html-template {{ $url := "https://broken-example.org/images/a.jpg" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ warnf "%s" . }} {{ else with .Value }} {{ else }} {{ warnf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` In the above, note that the [context](g) within the last conditional block is the `TryValue` object returned by the `try` statement. At this point neither the `Err` nor `Value` methods returned anything, so the current context is not useful. Use the `$` to access the [template context] if needed. > [!note] > Hugo does not classify an HTTP response with status code 404 as an error. In this case `resources.GetRemote` returns nil. [`resources.GetRemote`]: /functions/resources/getremote/ [template context]: /templates/introduction/#template-context [text/template]: https://pkg.go.dev/text/template gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/urlquery.md000066400000000000000000000012201507671574500265750ustar00rootroot00000000000000--- title: urlquery description: Returns the escaped value of the textual representation of its arguments in a form suitable for embedding in a URL query. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: ['urlquery VALUE [VALUE...]'] aliases: [/functions/urlquery] --- This template code: ```go-html-template {{ $u := urlquery "https://" "example.com" | safeURL }} Link ``` Is rendered to: ```html Link ``` {{% include "/_common/functions/go-template/text-template.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/go-template/with.md000066400000000000000000000040421507671574500256650ustar00rootroot00000000000000--- title: with description: Binds context (the dot) to the expression and executes the block if expression is truthy. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: signatures: [with EXPR] aliases: [/functions/with] --- {{% include "/_common/functions/truthy-falsy.md" %}} ```go-html-template {{ $var := "foo" }} {{ with $var }} {{ . }} → foo {{ end }} ``` Use with the [`else`] statement: ```go-html-template {{ $var := "foo" }} {{ with $var }} {{ . }} → foo {{ else }} {{ print "var is falsy" }} {{ end }} ``` Use `else with` to check multiple conditions: ```go-html-template {{ $v1 := 0 }} {{ $v2 := 42 }} {{ with $v1 }} {{ . }} {{ else with $v2 }} {{ . }} → 42 {{ else }} {{ print "v1 and v2 are falsy" }} {{ end }} ``` Initialize a variable, scoped to the current block: ```go-html-template {{ with $var := 42 }} {{ . }} → 42 {{ $var }} → 42 {{ end }} {{ $var }} → undefined ``` ## Understanding context See the [context] section in the introduction to templating. For example, at the top of a _page_ template, the [context](g) (the dot) is a `Page` object. Inside of the `with` block, the context is bound to the value passed to the `with` statement. With this contrived example: ```go-html-template {{ with 42 }} {{ .Title }} {{ end }} ``` Hugo will throw an error: can't evaluate field Title in type int The error occurs because we are trying to use the `.Title` method on an integer instead of a `Page` object. Inside of the `with` block, if we want to render the page title, we need to get the context passed into the template. > [!note] > Use the `$` to get the context passed into the template. This template will render the page title as desired: ```go-html-template {{ with 42 }} {{ $.Title }} {{ end }} ``` > [!note] > Gaining a thorough understanding of context is critical for anyone writing template code. {{% include "/_common/functions/go-template/text-template.md" %}} [`else`]: /functions/go-template/else/ [context]: /templates/introduction/#context gohugoio-hugo-6abdaca/docs/content/en/functions/hash/000077500000000000000000000000001507671574500230755ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/hash/FNV32a.md000066400000000000000000000005561507671574500243640ustar00rootroot00000000000000--- title: hash.FNV32a description: Returns the 32-bit FNV (Fowler-Noll-Vo) non-cryptographic hash of the given string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: int signatures: [hash.FNV32a STRING] aliases: [/functions/crypto.fnv32a] --- ```go-html-template {{ hash.FNV32a "Hello world" }} → 1498229191 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hash/XxHash.md000066400000000000000000000007421507671574500246250ustar00rootroot00000000000000--- title: hash.XxHash description: Returns the 64-bit xxHash non-cryptographic hash of the given string. categories: [] keywords: [] params: functions_and_methods: aliases: [xxhash] returnType: string signatures: [hash.XxHash STRING] --- ```go-html-template {{ hash.XxHash "Hello world" }} → c500b0c912b376d8 ``` [xxHash](https://xxhash.com/) is a very fast non-cryptographic hash algorithm. Hugo uses [this Go implementation](https://github.com/cespare/xxhash). gohugoio-hugo-6abdaca/docs/content/en/functions/hash/_index.md000066400000000000000000000002171507671574500246650ustar00rootroot00000000000000--- title: Hash functions linkTitle: hash description: Use these functions to create non-cryptographic hashes. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/000077500000000000000000000000001507671574500231145ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/BuildDate.md000066400000000000000000000007051507671574500252750ustar00rootroot00000000000000--- title: hugo.BuildDate description: Returns the compile date of the Hugo binary. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [hugo.BuildDate] --- The `hugo.BuildDate` function returns the compile date of the Hugo binary, formatted per [RFC 3339]. [RFC 3339]: https://datatracker.ietf.org/doc/html/rfc3339 ```go-html-template {{ hugo.BuildDate }} → 2023-11-01T17:57:00Z ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/CommitHash.md000066400000000000000000000004761507671574500255010ustar00rootroot00000000000000--- title: hugo.CommitHash description: Returns the Git commit hash of the Hugo binary. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [hugo.CommitHash] --- ```go-html-template {{ hugo.CommitHash }} → a4892a07b41b7b3f1f143140ee4ec0a9a5cf3970 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/Deps.md000066400000000000000000000034721507671574500243370ustar00rootroot00000000000000--- title: hugo.Deps description: Returns a slice of project dependencies, either Hugo Modules or local theme components. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: '[]hugo.Dependency' signatures: [hugo.Deps] --- The `hugo.Deps` function returns a slice of project dependencies, either Hugo Modules or local theme components. Each dependency contains: Owner : (`hugo.Dependency`) In the dependency tree, this is the first module that defines this module as a dependency (e.g., `github.com/gohugoio/hugo-mod-bootstrap-scss/v5`). Path : (`string`) The module path or the path below your `themes` directory (e.g., `github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2`). Replace : (`hugo.Dependency`) Replaced by this dependency. Time : (`time.Time`) The time that the version was created (e.g., `2022-02-13 15:11:28 +0000 UTC`). Vendor : (`bool`) Reports whether the dependency is vendored. Version : (`string`) The module version (e.g., `v2.21100.20000`). An example table listing the dependencies: ```go-html-template

      Dependencies

      {{ range $index, $element := hugo.Deps }} {{ end }}
      # Owner Path Version Time Vendor
      {{ add $index 1 }} {{ with $element.Owner }}{{ .Path }}{{ end }} {{ $element.Path }} {{ with $element.Replace }} => {{ .Path }} {{ end }} {{ $element.Version }} {{ with $element.Time }}{{ . }}{{ end }} {{ $element.Vendor }}
      ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/Environment.md000066400000000000000000000011361507671574500257430ustar00rootroot00000000000000--- title: hugo.Environment description: Returns the current running environment. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [hugo.Environment] --- The `hugo.Environment` function returns the current running [environment](g) as defined through the `--environment` command line flag. ```go-html-template {{ hugo.Environment }} → production ``` Command line examples: Command|Environment :--|:-- `hugo`|`production` `hugo --environment staging`|`staging` `hugo server`|`development` `hugo server --environment staging`|`staging` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/Generator.md000066400000000000000000000005471507671574500253720ustar00rootroot00000000000000--- title: hugo.Generator description: Renders an HTML meta element identifying the software that generated the site. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: template.HTML signatures: [hugo.Generator] --- ```go-html-template {{ hugo.Generator }} → ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/GoVersion.md000066400000000000000000000004421507671574500253510ustar00rootroot00000000000000--- title: hugo.GoVersion description: Returns the Go version used to compile the Hugo binary categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [hugo.GoVersion] --- ```go-html-template {{ hugo.GoVersion }} → go1.21.1 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/IsDevelopment.md000066400000000000000000000005221507671574500262130ustar00rootroot00000000000000--- title: hugo.IsDevelopment description: Reports whether the current running environment is "development". categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [hugo.IsDevelopment] --- {{< new-in 0.120.0 />}} ```go-html-template {{ hugo.IsDevelopment }} → true/false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/IsExtended.md000066400000000000000000000005011507671574500254660ustar00rootroot00000000000000--- title: hugo.IsExtended description: Reports whether the Hugo binary is either the extended or extended/deploy edition. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [hugo.IsExtended] --- ```go-html-template {{ hugo.IsExtended }} → true/false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/IsMultihost.md000066400000000000000000000014601507671574500257230ustar00rootroot00000000000000--- title: hugo.IsMultihost description: Reports whether each configured language has a unique base URL. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [hugo.IsMultihost] --- {{< new-in 0.124.0 />}} Site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = true [languages] [languages.de] baseURL = 'https://de.example.org/' languageCode = 'de-DE' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.en] baseURL = 'https://en.example.org/' languageCode = 'en-US' languageName = 'English' title = 'Project Documentation' weight = 2 {{< /code-toggle >}} Template: ```go-html-template {{ hugo.IsMultihost }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/IsMultilingual.md000066400000000000000000000013461507671574500264040ustar00rootroot00000000000000--- title: hugo.IsMultilingual description: Reports whether there are two or more configured languages. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [hugo.IsMultilingual] --- {{< new-in 0.124.0 />}} Site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = true [languages] [languages.de] languageCode = 'de-DE' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.en] languageCode = 'en-US' languageName = 'English' title = 'Project Documentation' weight = 2 {{< /code-toggle >}} Template: ```go-html-template {{ hugo.IsMultilingual }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/IsProduction.md000066400000000000000000000004651507671574500260650ustar00rootroot00000000000000--- title: hugo.IsProduction description: Reports whether the current running environment is "production". categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [hugo.IsProduction] --- ```go-html-template {{ hugo.IsProduction }} → true/false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/IsServer.md000066400000000000000000000004751507671574500252060ustar00rootroot00000000000000--- title: hugo.IsServer description: Reports whether the built-in development server is running. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [hugo.IsServer] --- {{< new-in 0.120.0 />}} ```go-html-template {{ hugo.IsServer }} → true/false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/Store.md000066400000000000000000000066071507671574500245430ustar00rootroot00000000000000--- title: hugo.Store description: Returns a globally scoped "scratch pad" to store and manipulate data. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Scratch signatures: [hugo.Store] --- {{< new-in 0.139.0 />}} Use the `hugo.Store` function to create a globally scoped [scratch pad](g) to store and manipulate data. To create a scratch pad with a different [scope](g), refer to the [scope](#scope) section below. ## Methods ### Set Sets the value of the given key. ```go-html-template {{ hugo.Store.Set "greeting" "Hello" }} ``` ### Get Gets the value of the given key. ```go-html-template {{ hugo.Store.Set "greeting" "Hello" }} {{ hugo.Store.Get "greeting" }} → Hello ``` ### Add Adds the given value to the existing value(s) of the given key. For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be appended to that list. ```go-html-template {{ hugo.Store.Set "greeting" "Hello" }} {{ hugo.Store.Add "greeting" "Welcome" }} {{ hugo.Store.Get "greeting" }} → HelloWelcome ``` ```go-html-template {{ hugo.Store.Set "total" 3 }} {{ hugo.Store.Add "total" 7 }} {{ hugo.Store.Get "total" }} → 10 ``` ```go-html-template {{ hugo.Store.Set "greetings" (slice "Hello") }} {{ hugo.Store.Add "greetings" (slice "Welcome" "Cheers") }} {{ hugo.Store.Get "greetings" }} → [Hello Welcome Cheers] ``` ### SetInMap Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`. ```go-html-template {{ hugo.Store.SetInMap "greetings" "english" "Hello" }} {{ hugo.Store.SetInMap "greetings" "french" "Bonjour" }} {{ hugo.Store.Get "greetings" }} → map[english:Hello french:Bonjour] ``` ### DeleteInMap Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`. ```go-html-template {{ hugo.Store.SetInMap "greetings" "english" "Hello" }} {{ hugo.Store.SetInMap "greetings" "french" "Bonjour" }} {{ hugo.Store.DeleteInMap "greetings" "english" }} {{ hugo.Store.Get "greetings" }} → map[french:Bonjour] ``` ### GetSortedMapValues Returns an array of values from `key` sorted by `mapKey`. ```go-html-template {{ hugo.Store.SetInMap "greetings" "english" "Hello" }} {{ hugo.Store.SetInMap "greetings" "french" "Bonjour" }} {{ hugo.Store.GetSortedMapValues "greetings" }} → [Hello Bonjour] ``` ### Delete Removes the given key. ```go-html-template {{ hugo.Store.Set "greeting" "Hello" }} {{ hugo.Store.Delete "greeting" }} ``` {{% include "_common/scratch-pad-scope.md" %}} ## Determinate values The `Store` method is often used to set scratch pad values within a _shortcode_ template, a _partial_ template called by a _shortcode_ template, or by a _render hook_ template. In all three cases, the scratch pad values are indeterminate until Hugo renders the page content. If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop](g) variable: ```go-html-template {{ $noop := .Content }} {{ hugo.Store.Get "mykey" }} ``` You can also trigger content rendering with the `ContentWithoutSummary`, `FuzzyWordCount`, `Len`, `Plain`, `PlainWords`, `ReadingTime`, `Summary`, `Truncated`, and `WordCount` methods. For example: ```go-html-template {{ $noop := .WordCount }} {{ hugo.Store.Get "mykey" }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/Version.md000066400000000000000000000004401507671574500250610ustar00rootroot00000000000000--- title: hugo.Version description: Returns the current version of the Hugo binary. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: hugo.VersionString signatures: [hugo.Version] --- ```go-html-template {{ hugo.Version }} → 0.148.0 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/WorkingDir.md000066400000000000000000000004551507671574500255210ustar00rootroot00000000000000--- title: hugo.WorkingDir description: Returns the project working directory. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [hugo.WorkingDir] --- ```go-html-template {{ hugo.WorkingDir }} → /home/user/projects/my-hugo-site ``` gohugoio-hugo-6abdaca/docs/content/en/functions/hugo/_index.md000066400000000000000000000002711507671574500247040ustar00rootroot00000000000000--- title: Hugo functions linkTitle: hugo description: Use these functions to access information about the Hugo application and the current environment. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/images/000077500000000000000000000000001507671574500234175ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/images/AutoOrient.md000066400000000000000000000017541507671574500260410ustar00rootroot00000000000000--- title: images.AutoOrient description: Returns an image filter that rotates and flips an image as needed per its EXIF orientation tag. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.AutoOrient] --- {{< new-in 0.121.2 />}} ## Usage Create the filter: ```go-html-template {{ $filter := images.AutoOrient }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} > [!note] > When using with other filters, specify `images.AutoOrient` first. ```go-html-template {{ $filters := slice images.AutoOrient (images.Process "resize 200x") }} {{ with resources.Get "images/original.jpg" }} {{ with images.Filter $filters . }} {{ end }} {{ end }} ``` ## Example {{< img src="images/examples/landscape-exif-orientation-5.jpg" alt="Zion National Park" filter="AutoOrient" filterArgs="" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Brightness.md000066400000000000000000000013641507671574500260550ustar00rootroot00000000000000--- title: images.Brightness description: Returns an image filter that changes the brightness of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Brightness PERCENTAGE] --- The percentage must be in the range [-100, 100] where 0 has no effect. A value of `-100` produces a solid black image, and a value of `100` produces a solid white image. ## Usage Create the image filter: ```go-html-template {{ $filter := images.Brightness 12 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Brightness" filterArgs="12" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/ColorBalance.md000066400000000000000000000012771507671574500262740ustar00rootroot00000000000000--- title: images.ColorBalance description: Returns an image filter that changes the color balance of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.ColorBalance PCTRED PCTGREEN PCTBLUE] --- The percentage for each channel (red, green, blue) must be in the range [-100, 500]. ## Usage Create the filter: ```go-html-template {{ $filter := images.ColorBalance -10 10 50 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="ColorBalance" filterArgs="-10,10,50" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Colorize.md000066400000000000000000000014611507671574500255310ustar00rootroot00000000000000--- title: images.Colorize description: Returns an image filter that produces a colorized version of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Colorize HUE SATURATION PERCENTAGE] --- The hue is the angle on the color wheel, typically in the range [0, 360]. The saturation must be in the range [0, 100]. The percentage specifies the strength of the effect, and must be in the range [0, 100]. ## Usage Create the filter: ```go-html-template {{ $filter := images.Colorize 180 50 20 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Colorize" filterArgs="180,50,20" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Config.md000066400000000000000000000016551507671574500251550ustar00rootroot00000000000000--- title: images.Config description: Returns an image.Config structure from the image at the specified path, relative to the working directory. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: image.Config signatures: [images.Config PATH] aliases: [/functions/imageconfig] --- See [image processing] for an overview of Hugo's image pipeline. ```go-html-template {{ $ic := images.Config "/static/images/a.jpg" }} {{ $ic.Width }} → 600 (int) {{ $ic.Height }} → 400 (int) ``` Supported image formats include GIF, JPEG, PNG, TIFF, and WebP. > [!note] > This is a legacy function, superseded by the [`Width`] and [`Height`] methods for [global resources](g), [page resources](g), and [remote resources](g). See the [image processing] section for details. [`Height`]: /methods/resource/height/ [`Width`]: /methods/resource/width/ [image processing]: /content-management/image-processing/ gohugoio-hugo-6abdaca/docs/content/en/functions/images/Contrast.md000066400000000000000000000013521507671574500255370ustar00rootroot00000000000000--- title: images.Contrast description: Returns an image filter that changes the contrast of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Contrast PERCENTAGE] --- The percentage must be in the range [-100, 100] where 0 has no effect. A value of `-100` produces a solid grey image, and a value of `100` produces an over-contrasted image. ## Usage Create the filter: ```go-html-template {{ $filter := images.Contrast -20 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Contrast" filterArgs="-20" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Dither.md000066400000000000000000000103471507671574500251650ustar00rootroot00000000000000--- title: images.Dither description: Returns an image filter that dithers an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: ['images.Dither [OPTIONS]'] --- {{< new-in 0.123.0 />}} ## Options colors : (`string array`) A slice of two or more colors that make up the dithering palette, each expressed as an RGB or RGBA [hexadecimal] value, with or without a leading hash mark. The default values are opaque black (`000000ff`) and opaque white (`ffffffff`). [hexadecimal]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color method : (`string`) The dithering method. See the [dithering methods](#dithering-methods) section below for a list of the available methods. Default is `FloydSteinberg`. serpentine : (`bool`) Applicable to error diffusion dithering methods, whether to apply the error diffusion matrix in a serpentine manner, meaning that it goes right-to-left every other line. This greatly reduces line-type artifacts. Default is `true`. strength : (`float`) The strength at which to apply the dithering matrix, typically a value in the range [0, 1]. A value of `1.0` applies the dithering matrix at 100% strength (no modification of the dither matrix). The `strength` is inversely proportional to contrast; reducing the strength increases the contrast. Setting `strength` to a value such as `0.8` can be useful to reduce noise in the dithered image. Default is `1.0`. ## Usage Create the options map: ```go-html-template {{ $opts := dict "colors" (slice "222222" "808080" "dddddd") "method" "ClusteredDot4x4" "strength" 0.85 }} ``` Create the filter: ```go-html-template {{ $filter := images.Dither $opts }} ``` Or create the filter using the default settings: ```go-html-template {{ $filter := images.Dither }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Dithering methods See the [Go documentation] for descriptions of each of the dithering methods below. [Go documentation]: https://pkg.go.dev/github.com/makeworld-the-better-one/dither/v2#pkg-variables Error diffusion dithering methods: - Atkinson - Burkes - FalseFloydSteinberg - FloydSteinberg - JarvisJudiceNinke - Sierra - Sierra2 - Sierra2_4A - Sierra3 - SierraLite - Simple2D - StevenPigeon - Stucki - TwoRowSierra Ordered dithering methods: - ClusteredDot4x4 - ClusteredDot6x6 - ClusteredDot6x6_2 - ClusteredDot6x6_3 - ClusteredDot8x8 - ClusteredDotDiagonal16x16 - ClusteredDotDiagonal6x6 - ClusteredDotDiagonal8x8 - ClusteredDotDiagonal8x8_2 - ClusteredDotDiagonal8x8_3 - ClusteredDotHorizontalLine - ClusteredDotSpiral5x5 - ClusteredDotVerticalLine - Horizontal3x5 - Vertical5x3 ## Example This example uses the default dithering options. {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Dither" filterArgs="" example=true >}} ## Recommendations Regardless of dithering method, do both of the following to obtain the best results: 1. Scale the image _before_ dithering 1. Output the image to a lossless format such as GIF or PNG The example below does both of these, and it sets the dithering palette to the three most dominant colors in the image. ```go-html-template {{ with resources.Get "original.jpg" }} {{ $opts := dict "method" "ClusteredDotSpiral5x5" "colors" (first 3 .Colors) }} {{ $filters := slice (images.Process "resize 800x") (images.Dither $opts) (images.Process "png") }} {{ with . | images.Filter $filters }} {{ end }} {{ end }} ``` For best results, if the dithering palette is grayscale, convert the image to grayscale before dithering. ```go-html-template {{ $opts := dict "colors" (slice "222" "808080" "ddd") }} {{ $filters := slice (images.Process "resize 800x") (images.Grayscale) (images.Dither $opts) (images.Process "png") }} {{ with images.Filter $filters . }} {{ end }} ``` The example above: 1. Resizes the image to be 800 px wide 1. Converts the image to grayscale 1. Dithers the image using the default (`FloydSteinberg`) dithering method with a grayscale palette 1. Converts the image to the PNG format gohugoio-hugo-6abdaca/docs/content/en/functions/images/Filter.md000066400000000000000000000032241507671574500251670ustar00rootroot00000000000000--- title: images.Filter description: Applies one or more image filters to the given image resource. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.ImageResource signatures: [images.Filter FILTERS... IMAGE] --- Apply one or more [image filters](#image-filters) to the given image. To apply a single filter: ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with images.Filter images.Grayscale . }} {{ end }} {{ end }} ``` To apply two or more filters, executing from left to right: ```go-html-template {{ $filters := slice images.Grayscale (images.GaussianBlur 8) }} {{ with resources.Get "images/original.jpg" }} {{ with images.Filter $filters . }} {{ end }} {{ end }} ``` You can also apply image filters using the [`Filter`] method on a `Resource` object. [`Filter`]: /methods/resource/filter/ ## Example ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with images.Filter images.Grayscale . }} {{ end }} {{ end }} ``` {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Grayscale" filterArgs="" example=true >}} ## Image filters Use any of these filters with the `images.Filter` function, or with the `Filter` method on a `Resource` object. {{% list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude %}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Gamma.md000066400000000000000000000013471507671574500247700ustar00rootroot00000000000000--- title: images.Gamma description: Returns an image filter that performs gamma correction on an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Gamma GAMMA] --- The gamma value must be positive. A value greater than 1 lightens the image, while a value less than 1 darkens the image. The filter has no effect when the gamma value is 1. ## Usage Create the filter: ```go-html-template {{ $filter := images.Gamma 1.667 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Gamma" filterArgs="1.667" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/GaussianBlur.md000066400000000000000000000013351507671574500263420ustar00rootroot00000000000000--- title: images.GaussianBlur description: Returns an image filter that applies a gaussian blur to an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.GaussianBlur SIGMA] --- The sigma value must be positive, and indicates how much the image will be blurred. The blur-affected radius is approximately 3 times the sigma value. ## Usage Create the filter: ```go-html-template {{ $filter := images.GaussianBlur 5 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="GaussianBlur" filterArgs="5" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Grayscale.md000066400000000000000000000010651507671574500256550ustar00rootroot00000000000000--- title: images.Grayscale description: Returns an image filter that produces a grayscale version of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Grayscale] --- ## Usage Create the filter: ```go-html-template {{ $filter := images.Grayscale }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Grayscale" filterArgs="" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Hue.md000066400000000000000000000011571507671574500244660ustar00rootroot00000000000000--- title: images.Hue description: Returns an image filter that rotates the hue of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Hue SHIFT] --- The hue angle shift is typically in the range [-180, 180] where 0 has no effect. ## Usage Create the filter: ```go-html-template {{ $filter := images.Hue -15 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Hue" filterArgs="-15" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Invert.md000066400000000000000000000010371507671574500252110ustar00rootroot00000000000000--- title: images.Invert description: Returns an image filter that negates the colors of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Invert] --- ## Usage Create the filter: ```go-html-template {{ $filter := images.Invert }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Invert" filterArgs="" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Mask.md000066400000000000000000000045271507671574500246440ustar00rootroot00000000000000--- title: images.Mask description: Returns an image filter that applies a mask to the source image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Mask RESOURCE] --- {{< new-in 0.141.0 />}} The `images.Mask` filter applies a mask to an image. Black pixels in the mask make the corresponding areas of the base image transparent, while white pixels keep them opaque. Color images are converted to grayscale for masking purposes. The mask is automatically resized to match the dimensions of the base image. > [!note] > Of the formats supported by Hugo's imaging pipeline, only PNG and WebP have an alpha channel to support transparency. If your source image has a different format and you require transparent masked areas, convert it to either PNG or WebP as shown in the example below. When applying a mask to a non-transparent image format such as JPEG, the masked areas will be filled with the color specified by the `bgColor` parameter in your [site configuration]. You can override that color with a `Process` image filter: ```go-html-template {{ $filter := images.Process "#00ff00" }} ``` ## Usage Create a slice of filters, one for WebP conversion and the other for mask application: ```go-html-template {{ $filter1 := images.Process "webp" }} {{ $filter2 := images.Mask (resources.Get "images/mask.png") }} {{ $filters := slice $filter1 $filter2 }} ``` Apply the filters using the [`images.Filter`] function: ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with . | images.Filter $filters }} {{ end }} {{ end }} ``` You can also apply the filter using the [`Filter`] method on a 'Resource' object: ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Filter $filters }} {{ end }} {{ end }} ``` ## Example Mask {{< img src="images/examples/mask.png" example=false >}} {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="mask" filterArgs="images/examples/mask.png" example=true >}} [`Filter`]: /methods/resource/filter/ [`images.Filter`]: /functions/images/filter/ [site configuration]: /configuration/imaging/ gohugoio-hugo-6abdaca/docs/content/en/functions/images/Opacity.md000066400000000000000000000023601507671574500253520ustar00rootroot00000000000000--- title: images.Opacity description: Returns an image filter that changes the opacity of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Opacity OPACITY] --- {{< new-in 0.119.0 />}} The opacity value must be in the range [0, 1]. A value of `0` produces a transparent image, and a value of `1` produces an opaque image (no transparency). ## Usage Create the filter: ```go-html-template {{ $filter := images.Opacity 0.65 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} The `images.Opacity` filter is most useful for target formats such as PNG and WebP that support transparency. If the source image does not support transparency, combine this filter with the `images.Process` filter: ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ $filters := slice (images.Opacity 0.65) (images.Process "png") }} {{ with . | images.Filter $filters }} {{ end }} {{ end }} ``` ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Opacity" filterArgs="0.65" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Overlay.md000066400000000000000000000017551507671574500253720ustar00rootroot00000000000000--- title: images.Overlay description: Returns an image filter that overlays the source image at the given coordinates, relative to the upper left corner. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Overlay RESOURCE X Y] --- ## Usage Capture the overlay image as a resource: ```go-html-template {{ $overlay := "" }} {{ $path := "images/logo.png" }} {{ with resources.Get $path }} {{ $overlay = . }} {{ else }} {{ errorf "Unable to get resource %q" $path }} {{ end }} ``` The overlay image can be a [global resource](g), a [page resource](g), or a [remote resource](g). Create the filter: ```go-html-template {{ $filter := images.Overlay $overlay 20 20 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Overlay" filterArgs="images/logos/logo-64x64.png,20,20" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Padding.md000066400000000000000000000042161507671574500253120ustar00rootroot00000000000000--- title: images.Padding description: Returns an image filter that resizes the image canvas without resizing the image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: ['images.Padding V1 [V2] [V3] [V4] [COLOR]'] --- {{< new-in 0.120.0 />}} The last argument is the canvas color, expressed as an RGB or RGBA [hexadecimal color]. The default value is `ffffffff` (opaque white). The preceding arguments are the padding values, in pixels, using the CSS [shorthand property] syntax. Negative padding values will crop the image. [hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color [shorthand property]: https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties#edges_of_a_box ## Usage Create the filter: ```go-html-template {{ $filter := images.Padding 20 40 "#976941" }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} Combine with the [`Colors`] method to create a border with one of the image's most dominant colors: [`Colors`]: /methods/resource/colors/ ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ $filter := images.Padding 20 40 (index .Colors 2) }} {{ with . | images.Filter $filter }} {{ end }} {{ end }} ``` ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Padding" filterArgs="20,40,20,40,#976941" example=true >}} ## Other recipes This example resizes an image to 300px wide, converts it to the WebP format, adds 20px vertical padding and 50px horizontal padding, then sets the canvas color to dark green with 33% opacity. Conversion to WebP is required to support transparency. PNG and WebP images have an alpha channel; JPEG and GIF do not. ```go-html-template {{ $img := resources.Get "images/a.jpg" }} {{ $filters := slice (images.Process "resize 300x webp") (images.Padding 20 50 "#0705") }} {{ $img = $img.Filter $filters }} ``` To add a 2px gray border to an image: ```go-html-template {{ $img = $img.Filter (images.Padding 2 "#777") }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/images/Pixelate.md000066400000000000000000000010701507671574500255120ustar00rootroot00000000000000--- title: images.Pixelate description: Returns an image filter that applies a pixelation effect to an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Pixelate SIZE] --- ## Usage Create the filter: ```go-html-template {{ $filter := images.Pixelate 4 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Pixelate" filterArgs="4" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Process.md000066400000000000000000000100351507671574500253560ustar00rootroot00000000000000--- title: images.Process description: Returns an image filter that processes the given image using the given specification. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Process SPEC] --- {{< new-in 0.119.0 />}} This filter has the same options as the [`Process`] method on a `Resource` object, but using it as a filter may be more effective if you need to apply multiple filters to an image. [`Process`]: /methods/resource/process/ The process specification is a space-delimited, case-insensitive list of one or more of the following in any sequence: action : Specify zero or one of `crop`, `fill`, `fit`, or `resize`. If you specify an action you must also provide dimensions. See [details](content-management/image-processing/#image-processing-methods). ```go-html-template {{ $filter := images.Process "resize 300x" }} ``` dimensions : Required if you specify an action. Provide width _or_ height when using `resize`, else provide both width _and_ height. See [details](/content-management/image-processing/#dimensions). ```go-html-template {{ $filter := images.Process "crop 200x200" }} ``` anchor : Use with the `crop` or `fill` action. Specify zero or one of `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`. Default is `Smart`. See [details](/content-management/image-processing/#anchor). ```go-html-template {{ $filter := images.Process "crop 200x200 center" }} ``` rotation : Typically specify zero or one of `r90`, `r180`, or `r270`. Also supports arbitrary rotation angles. See [details](/content-management/image-processing/#rotation). ```go-html-template {{ $filter := images.Process "r90" }} {{ $filter := images.Process "crop 200x200 center r90" }} ``` target format : Specify zero or one of `gif`, `jpeg`, `png`, `tiff`, or `webp`. See [details](/content-management/image-processing/#target-format). ```go-html-template {{ $filter := images.Process "webp" }} {{ $filter := images.Process "crop 200x200 center r90 webp" }} ``` quality : Applicable to JPEG and WebP images. Optionally specify `qN` where `N` is an integer in the range [0, 100]. Default is `75`. See [details](/content-management/image-processing/#quality). ```go-html-template {{ $filter := images.Process "q50" }} {{ $filter := images.Process "crop 200x200 center r90 webp q50" }} ``` hint : Applicable to WebP images and equivalent to the `-preset` flag for the [`cwebp`] encoder. Specify zero or one of `drawing`, `icon`, `photo`, `picture`, or `text`. Default is `photo`. See [details](/content-management/image-processing/#hint). [`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp ```go-html-template {{ $filter := images.Process "webp" "icon" }} {{ $filter := images.Process "crop 200x200 center r90 webp q50 icon" }} ``` background color : When converting a PNG or WebP with transparency to a format that does not support transparency, optionally specify a background color using a 3-digit or a 6-digit hexadecimal color code. Default is `#ffffff` (white). See [details](/content-management/image-processing/#background-color). ```go-html-template {{ $filter := images.Process "jpeg #000" }} {{ $filter := images.Process "crop 200x200 center r90 q50 jpeg #000" }} ``` resampling filter : Typically specify zero or one of `Box`, `Lanczos`, `CatmullRom`, `MitchellNetravali`, `Linear`, or `NearestNeighbor`. Other resampling filters are available. See [details](/content-management/image-processing/#resampling-filter). ```go-html-template {{ $filter := images.Process "resize 300x lanczos" }} {{ $filter := images.Process "resize 300x r90 q50 jpeg #000 lanczos" }} ``` ## Usage Create a filter: ```go-html-template {{ $filter := images.Process "resize 256x q40 webp" }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Process" filterArgs="resize 256x q40 webp" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/QR.md000066400000000000000000000111251507671574500242630ustar00rootroot00000000000000--- title: images.QR description: Encodes the given text into a QR code using the specified options, returning an image resource. keywords: [] params: functions_and_methods: aliases: [] returnType: images.ImageResource signatures: ['images.QR TEXT [OPTIONS]'] --- {{< new-in 0.141.0 />}} The `images.QR` function encodes the given text into a [QR code] using the specified options, returning an image resource. The size of the generated image depends on three factors: - Data length: Longer text necessitates a larger image to accommodate the increased information density. - Error correction level: Higher error correction levels enhance the QR code's resistance to damage, but this typically results in a slightly larger image size to maintain readability. - Pixels per module: The number of image pixels assigned to each individual module (the smallest unit of the QR code) directly impacts the overall image size. A higher pixel count per module leads to a larger, higher-resolution image. Although the default option values are sufficient for most applications, you should test the rendered QR code both on-screen and in print. ## Options level : (`string`) The error correction level to use when encoding the text, one of `low`, `medium`, `quartile`, or `high`. Default is `medium`. Error correction level|Redundancy :--|:--|:-- low|20% medium|38% quartile|55% high|65% scale : (`int`) The number of image pixels per QR code module. Must be greater than or equal to `2`. Default is `4`. targetDir : (`string`) The subdirectory within the [`publishDir`] where Hugo will place the generated image. Use Unix-style slashes (`/`) to separarate path segments. If empty or not provided, the image is placed directly in the `publishDir` root. Hugo automatically creates the necessary subdirectories if they don't exist. ## Examples To create a QR code using the default values for `level` and `scale`: ```go-html-template {{ $text := "https://gohugo.io" }} {{ with images.QR $text }} {{ end }} ``` {{< qr text="https://gohugo.io" class="qrcode" targetDir="images/qr" />}} Specify `level`, `scale`, and `targetDir` as needed to achieve the desired result: ```go-html-template {{ $text := "https://gohugo.io" }} {{ $opts := dict "level" "high" "scale" 3 "targetDir" "images/qr" }} {{ with images.QR $text $opts }} {{ end }} ``` {{< qr text="https://gohugo.io" level="high" scale=3 targetDir="codes" class="qrcode" targetDir="images/qr" />}} To include a QR code that points to the `Permalink` of the current page: ```go-html-template {file="layouts/page.html"} {{ with images.QR .Permalink }} QR code linking to {{ $.Permalink }} {{ end }} ``` Then hide the QR code with CSS unless printing the page: ```css /* Hide QR code by default */ .qr-code { display: none; } /* Show QR code when printing */ @media print { .qr-code { display: block; } } ``` ## Scale As you decrease the size of a QR code, the maximum distance at which it can be reliably scanned by a device also decreases. In the example above, we set the `scale` to `2`, resulting in a QR code where each module consists of 2x2 pixels. While this might be sufficient for on-screen display, it's likely to be problematic when printed at 600 dpi. \[ \frac{2\:px}{module} \times \frac{1\:inch}{600\:px} \times \frac{25.4\:mm}{1\:inch} = \frac{0.085\:mm}{module} \] This module size is half of the commonly recommended minimum of 0.170 mm.\ If the QR code will be printed, use the default `scale` value of `4` pixels per module. Avoid using Hugo's image processing methods to resize QR codes. Resizing can introduce blurring due to anti-aliasing when a QR code module occupies a fractional number of pixels. > [!note] > Always test the rendered QR code both on-screen and in print. ## Shortcode Call the `qr` shortcode to insert a QR code into your content. Use the self-closing syntax to pass the text as an argument: ```text {{}} ``` Or insert the text between the opening and closing tags: ```text {{}} https://gohugo.io {{}} ``` The `qr` shortcode accepts several arguments including `level` and `scale`. See the [related documentation] for details. [`publishDir`]: /configuration/all/#publishdir [QR code]: https://en.wikipedia.org/wiki/QR_code [related documentation]: /shortcodes/qr/ gohugoio-hugo-6abdaca/docs/content/en/functions/images/Saturation.md000066400000000000000000000012131507671574500260670ustar00rootroot00000000000000--- title: images.Saturation description: Returns an image filter that changes the saturation of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Saturation PERCENTAGE] --- The percentage must be in the range [-100, 500] where 0 has no effect. ## Usage Create the filter: ```go-html-template {{ $filter := images.Saturation 65 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Saturation" filterArgs="65" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Sepia.md000066400000000000000000000011741507671574500250050ustar00rootroot00000000000000--- title: images.Sepia description: Returns an image filter that produces a sepia-toned version of an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Sepia PERCENTAGE] --- The percentage must be in the range [0, 100] where 0 has no effect. ## Usage Create the filter: ```go-html-template {{ $filter := images.Sepia 75 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Sepia" filterArgs="75" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Sigmoid.md000066400000000000000000000017611507671574500253410ustar00rootroot00000000000000--- title: images.Sigmoid description: Returns an image filter that changes the contrast of an image using a sigmoidal function. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.Sigmoid MIDPOINT FACTOR] --- This is a non-linear contrast change useful for photo adjustments; it preserves highlight and shadow detail. The midpoint is the midpoint of contrast. It must be in the range [0, 1], typically 0.5. The factor indicates how much to increase or decrease the contrast, typically in the range [-10, 10] where 0 has no effect. A positive value increases contrast, while a negative value decrease contrast. ## Usage Create the filter: ```go-html-template {{ $filter := images.Sigmoid 0.6 -4 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Sigmoid" filterArgs="0.6,-4" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/Text.md000066400000000000000000000063521507671574500246730ustar00rootroot00000000000000--- title: images.Text description: Returns an image filter that adds text to an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: ['images.Text TEXT [OPTIONS]'] --- ## Options Although none of the options are required, at a minimum you will want to set the `size` to be some reasonable percentage of the image height. alignx : {{< new-in 0.141.0 />}} : (`string`) The horizontal alignment of the text relative to the horizontal offset, one of `left`, `center`, or `right`. Default is `left`. aligny : {{< new-in 0.147.0 />}} : (`string`) The vertical alignment of the text relative to the vertical offset, one of `top`, `center`, or `bottom`. Default is `top`. color : (`string`) The font color, either a 3-digit or 6-digit hexadecimal color code. Default is `#ffffff` (white). font : (`resource.Resource`) The font can be a [global resource](g), a [page resource](g), or a [remote resource](g). Default is [Go Regular], a proportional sans-serif TrueType font. linespacing : (`int`) The number of pixels between each line. For a line height of 1.4, set the `linespacing` to 0.4 multiplied by the `size`. Default is `2`. size : (`int`) The font size in pixels. Default is `20`. x : (`int`) The horizontal offset, in pixels, relative to the left of the image. Default is `10`. y : (`int`) The vertical offset, in pixels, relative to the top of the image. Default is `10`. [Go Regular]: https://go.dev/blog/go-fonts#sans-serif ## Usage Set the text and paths: ```go-html-template {{ $text := "Zion National Park" }} {{ $fontPath := "https://github.com/google/fonts/raw/main/ofl/lato/Lato-Regular.ttf" }} {{ $imagePath := "images/original.jpg" }} ``` Capture the font as a resource: ```go-html-template {{ $font := "" }} {{ with try (resources.GetRemote $fontPath) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ $font = . }} {{ else }} {{ errorf "Unable to get resource %s" $fontPath }} {{ end }} {{ end }} ``` Create the filter, centering the text horizontally and vertically: ```go-html-template {{ $r := "" }} {{ $filter := "" }} {{ with $r = resources.Get $imagePath }} {{ $opts := dict "alignx" "center" "aligny" "center" "color" "#fbfaf5" "font" $font "linespacing" 8 "size" 60 "x" (mul .Width 0.5 | int) "y" (mul .Height 0.5 | int) }} {{ $filter = images.Text $text $opts }} {{ else }} {{ errorf "Unable to get resource %s" $imagePath }} {{ end }} ``` Apply the filter using the [`images.Filter`] function: ```go-html-template {{ with $r }} {{ with . | images.Filter $filter }} {{ end }} {{ end }} ``` You can also apply the filter using the [`Filter`] method on a `Resource` object: ```go-html-template {{ with $r }} {{ with .Filter $filter }} {{ end }} {{ end }} ``` [`images.Filter`]: /functions/images/filter/ [`Filter`]: /methods/resource/filter/ ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Text" filterArgs="Zion National Park,25,190,40,1.2,#fbfaf5" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/UnsharpMask.md000066400000000000000000000017561507671574500262060ustar00rootroot00000000000000--- title: images.UnsharpMask description: Returns an image filter that sharpens an image. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: images.filter signatures: [images.UnsharpMask SIGMA AMOUNT THRESHOLD] --- The sigma argument is used in a gaussian function and affects the radius of effect. Sigma must be positive. The sharpen radius is approximately 3 times the sigma value. The amount argument controls how much darker and how much lighter the edge borders become. Typically between 0.5 and 1.5. The threshold argument controls the minimum brightness change that will be sharpened. Typically between 0 and 0.05. ## Usage Create the filter: ```go-html-template {{ $filter := images.UnsharpMask 10 0.4 0.03 }} ``` {{% include "/_common/functions/images/apply-image-filter.md" %}} ## Example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="UnsharpMask" filterArgs="10,0.4,0.03" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/functions/images/_index.md000066400000000000000000000003171507671574500252100ustar00rootroot00000000000000--- title: Image functions linkTitle: images description: Use these functions to create an image filter, apply an image filter to an image, and to retrieve image information. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/inflect/000077500000000000000000000000001507671574500235765ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/inflect/Humanize.md000066400000000000000000000011771507671574500257060ustar00rootroot00000000000000--- title: inflect.Humanize description: Returns the humanized version of the input with the first letter capitalized. categories: [] keywords: [] params: functions_and_methods: aliases: [humanize] returnType: string signatures: [inflect.Humanize INPUT] aliases: [/functions/humanize] --- ```go-html-template {{ humanize "my-first-post" }} → My first post {{ humanize "myCamelPost" }} → My camel post ``` If the input is an integer or a string representation of an integer, humanize returns the number with the proper ordinal appended. ```go-html-template {{ humanize "52" }} → 52nd {{ humanize 103 }} → 103rd ``` gohugoio-hugo-6abdaca/docs/content/en/functions/inflect/Pluralize.md000066400000000000000000000005631507671574500260730ustar00rootroot00000000000000--- title: inflect.Pluralize description: Pluralizes the given word according to a set of common English pluralization rules. categories: [] keywords: [] params: functions_and_methods: aliases: [pluralize] returnType: string signatures: [inflect.Pluralize INPUT] aliases: [/functions/pluralize] --- ```go-html-template {{ "cat" | pluralize }} → cats ``` gohugoio-hugo-6abdaca/docs/content/en/functions/inflect/Singularize.md000066400000000000000000000006011507671574500264110ustar00rootroot00000000000000--- title: inflect.Singularize description: Singularizes the given word according to a set of common English singularization rules. categories: [] keywords: [] params: functions_and_methods: aliases: [singularize] returnType: string signatures: [inflect.Singularize INPUT] aliases: [/functions/singularize] --- ```go-html-template {{ "cats" | singularize }} → cat ``` gohugoio-hugo-6abdaca/docs/content/en/functions/inflect/_index.md000066400000000000000000000003121507671574500253620ustar00rootroot00000000000000--- title: Inflect functions linkTitle: inflect description: These functions provide word inflection features such as singularization and pluralization of English nouns. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/js/000077500000000000000000000000001507671574500225665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/js/Babel.md000066400000000000000000000053171507671574500241230ustar00rootroot00000000000000--- title: js.Babel description: Compile the given JavaScript resource with Babel. categories: [] keywords: [] params: functions_and_methods: aliases: [babel] returnType: resource.Resource signatures: ['js.Babel [OPTIONS] RESOURCE'] --- ```go-html-template {{ with resources.Get "js/main.js" }} {{ $opts := dict "minified" hugo.IsProduction "noComments" hugo.IsProduction "sourceMap" (cond hugo.IsProduction "none" "external") }} {{ with . | js.Babel $opts }} {{ if hugo.IsProduction }} {{ with . | fingerprint }} {{ end }} {{ else }} {{ end }} {{ end }} {{ end }} ``` ## Setup Step 1 : Install [Node.js](https://nodejs.org/en/download) Step 2 : Install the required Node.js packages in the root of your project. ```sh npm install --save-dev @babel/core @babel/cli ``` Step 3 : Add the babel executable to Hugo's `security.exec.allow` list in your site configuration: {{< code-toggle file=hugo >}} [security.exec] allow = ['^(dart-)?sass(-embedded)?$', '^go$', '^npx$', '^postcss$', '^babel$'] {{< /code-toggle >}} ## Configuration We add the main project's `node_modules` to `NODE_PATH` when running Babel and similar tools. There are some known [issues](https://github.com/babel/babel/issues/5618) with Babel in this area, so if you have a `babel.config.js` living in a Hugo Module (and not in the project itself), we recommend using `require` to load the presets/plugins, e.g.: ```js module.exports = { presets: [ [ require("@babel/preset-env"), { useBuiltIns: "entry", corejs: 3, }, ], ], }; ``` ## Options compact : (`bool`) Whether to remove optional newlines and whitespace. Enabled when `minified` is `true`. Default is `false` config : (`string`) Path to the Babel configuration file. Hugo will, by default, look for a `babel.config.js` file in the root of your project. See [details](https://babeljs.io/docs/en/configuration). minified : (`bool`) Whether to minify the compiled code. Enables the `compact` option. Default is `false`. noBabelrc : (`string`) Whether to ignore `.babelrc` and `.babelignore` files. Default is `false`. noComments : (`bool`) Whether to remove comments. Default is `false`. sourceMap : (`string`) Whether to generate source maps, one of `external`, `inline`, or `none`. Default is `none`. verbose : (`bool`) Whether to enable verbose logging. Default is `false` gohugoio-hugo-6abdaca/docs/content/en/functions/js/Batch.md000066400000000000000000000255011507671574500241340ustar00rootroot00000000000000--- title: js.Batch description: Build JavaScript bundle groups with global code splitting and flexible hooks/runners setup. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: js.Batcher signatures: ['js.Batch [ID]'] --- > [!note] > For a runnable example of this feature, see [this test and demo repo](https://github.com/bep/hugojsbatchdemo/). The Batch `ID` is used to create the base directory for this batch. Forward slashes are allowed. `js.Batch` returns an object with an API with this structure: - [Group] - [Script] - [SetOptions] - [Instance] - [SetOptions] - [Runner] - [SetOptions] - [Config] - [SetOptions] ## Group The `Group` method take an `ID` (`string`) as argument. No slashes. It returns an object with these methods: ### Script The `Script` method takes an `ID` (`string`) as argument. No slashes. It returns an [OptionsSetter] that can be used to set [script options] for this script. ```go-html-template {{ with js.Batch "js/mybatch" }} {{ with .Group "mygroup" }} {{ with .Script "myscript" }} {{ .SetOptions (dict "resource" (resources.Get "myscript.js")) }} {{ end }} {{ end }} {{ end }} ``` `SetOptions` takes a [script options] map. Note that if you want the script to be handled by a [runner], you need to set the `export` option to match what you want to pass on to the runner (default is `*`). ### Instance The `Instance` method takes two `string` arguments `SCRIPT_ID` and `INSTANCE_ID`. No slashes. It returns an [OptionsSetter] that can be used to set [params options] for this instance. ```go-html-template {{ with js.Batch "js/mybatch" }} {{ with .Group "mygroup" }} {{ with .Instance "myscript" "myinstance" }} {{ .SetOptions (dict "params" (dict "param1" "value1")) }} {{ end }} {{ end }} {{ end }} ``` `SetOptions` takes a [params options] map. The instance options will be passed to any [runner] script in the same group, as JSON. ### Runner The `Runner` method takes an `ID` (`string`) as argument. No slashes. It returns an [OptionsSetter] that can be used to set [script options] for this runner. ```go-html-template {{ with js.Batch "js/mybatch" }} {{ with .Group "mygroup" }} {{ with .Runner "myrunner" }} {{ .SetOptions (dict "resource" (resources.Get "myrunner.js")) }} {{ end }} {{ end }} {{ end }} ``` `SetOptions` takes a [script options] map. The runner will receive a data structure with all instances for that group with a live binding of the [JavaScript import] of the defined `export`. The runner script's export must be a function that takes one argument, the group data structure. An example of a group data structure as JSON is: ```json { "id": "leaflet", "scripts": [ { "id": "mapjsx", "binding": JAVASCRIPT_BINDING, "instances": [ { "id": "0", "params": { "c": "h-64", "lat": 48.8533173846729, "lon": 2.3497416090232535, "r": "map.jsx", "title": "Cathédrale Notre-Dame de Paris", "zoom": 23 } }, { "id": "1", "params": { "c": "h-64", "lat": 59.96300872062237, "lon": 10.663529183196863, "r": "map.jsx", "title": "Holmenkollen", "zoom": 3 } } ] } ] } ``` Below is an example of a runner script that uses React to render elements. Note that the export (`default`) must match the `export` option in the [script options] (`default` is the default value for runner scripts) (runnable versions of examples on this page can be found at [js.Batch Demo Repo]): ```js import * as ReactDOM from 'react-dom/client'; import * as React from 'react'; export default function Run(group) { console.log('Running react-create-elements.js', group); const scripts = group.scripts; for (const script of scripts) { for (const instance of script.instances) { /* This is a convention in this project. */ let elId = `${script.id}-${instance.id}`; let el = document.getElementById(elId); if (!el) { console.warn(`Element with id ${elId} not found`); continue; } const root = ReactDOM.createRoot(el); const reactEl = React.createElement(script.binding, instance.params); root.render(reactEl); } } } ``` ### Config Returns an [OptionsSetter] that can be used to set [build options] for the batch. These are mostly the same as for `js.Build`, but note that: - `targetPath` is set automatically (there may be multiple outputs). - ``format` must be `esm`, currently the only format supporting [code splitting]. - ``params` will be available in the `@params/config` namespace in the scripts. This way you can import both the [script] or [runner] params and the [config] params with: ```js import * as params from "@params"; import * as config from "@params/config"; ``` Setting the `Config` for a batch can be done from any template (including _shortcode_ templates), but will only be set once (the first will win): ```go-html-template {{ with js.Batch "js/mybatch" }} {{ with .Config }} {{ .SetOptions (dict "target" "es2023" "format" "esm" "jsx" "automatic" "loaders" (dict ".png" "dataurl") "minify" true "params" (dict "param1" "value1") ) }} {{ end }} {{ end }} ``` ## Options ### Build options format : (`string`) Currently only `esm` is supported in ESBuild's [code splitting]. {{% include "/_common/functions/js/options.md" %}} ### Script options resource : The resource to build. This can be a file resource or a virtual resource. export : The export to bind the runner to. Set it to `*` to export the [entire namespace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#namespace_import). Default is `default` for [runner] scripts and `*` for other [scripts](#script). importContext : An additional context for resolving imports. Hugo will always check this one first before falling back to `assets` and `node_modules`. A common use of this is to resolve imports inside a page bundle. See [import context](#import-context). params : A map of parameters that will be passed to the script as JSON. These gets bound to the `@params` namespace: ```js import * as params from '@params'; ``` ### Params options params : A map of parameters that will be passed to the script as JSON. ### Import context Hugo will, by default, first try to resolve any import in [assets](/hugo-pipes/introduction/#asset-directory) and, if not found, let [ESBuild] resolve it (e.g. from `node_modules`). The `importContext` option can be used to set the first context for resolving imports. A common use of this is to resolve imports inside a [page bundle](/content-management/page-bundles/). ```go-html-template {{ $common := resources.Match "/js/headlessui/*.*" }} {{ $importContext := (slice $.Page ($common.Mount "/js/headlessui" ".")) }} ``` You can pass any object that implements [Resource.Get](/methods/page/resources/#get). Pass a slice to set multiple contexts. The example above uses [`Resources.Mount`] to resolve a directory inside `assets` relative to the page bundle. ### OptionsSetter An `OptionsSetter` is a special object that is returned once only. This means that you should wrap it with [with]: ```go-html-template {{ with .Script "myscript" }} {{ .SetOptions (dict "resource" (resources.Get "myscript.js"))}} {{ end }} ``` ## Build The `Build` method returns an object with the following structure: - Groups (map) - [`Resources`] Each [`Resource`] will be of media type `application/javascript` or `text/css`. In a template you would typically handle one group with a given `ID` (e.g. scripts for the current section). Because of the concurrent build, this needs to be done in a [`templates.Defer`] block: > [!note] > The [`templates.Defer`] acts as a synchronisation point to handle scripts added concurrently by different templates. If you have a setup with where the batch is created in one go (in one template), you don't need it. > > See [this discussion](https://discourse.gohugo.io/t/js-batch-with-simple-global-script/53002/5?u=bep) for more. ```go-html-template {{ $group := .group }} {{ with (templates.Defer (dict "key" $group "data" $group )) }} {{ with (js.Batch "js/mybatch") }} {{ with .Build }} {{ with index .Groups $ }} {{ range . }} {{ $s := . }} {{ if eq $s.MediaType.SubType "css" }} {{ else }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} ``` ## Known Issues In the official documentation for ESBuild's [code splitting], there's a warning note in the header. The two issues are: - `esm` is currently the only implemented output format. This means that it will not work for very old browsers. See [caniuse](https://caniuse.com/?search=ESM). - There's a known import ordering issue. We have not seen the ordering issue as a problem during our [extensive testing](https://github.com/bep/hugojsbatchdemo) of this new feature with different libraries. There are two main cases: 1. Undefined execution order of imports, see [this comment](https://github.com/evanw/esbuild/issues/399#issuecomment-1458680887) 1. Only one execution order of imports, see [this comment](https://github.com/evanw/esbuild/issues/399#issuecomment-735355932) Many would say that both of the above are [code smells](https://en.wikipedia.org/wiki/Code_smell). The first one has a simple workaround in Hugo. Define the import order in its own script and make sure it gets passed early to ESBuild, e.g. by putting it in a script group with a name that comes early in the alphabet. ```js import './lib2.js'; import './lib1.js'; console.log('entrypoints-workaround.js'); ``` [`Resource`]: /methods/resource/ [`Resources.Mount`]: /methods/page/resources/#mount [`Resources`]: /methods/page/resources/ [`templates.Defer`]: /functions/templates/defer/ [build options]: #build-options [code splitting]: https://esbuild.github.io/api/#splitting [config]: #config [ESBuild]: https://github.com/evanw/esbuild [JavaScript import]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import [js.Batch Demo Repo]: https://github.com/bep/hugojsbatchdemo/ [OptionsSetter]: #optionssetter [params options]: #params-options [runner]: #runner [script]: #script [script options]: #script-options [SetOptions]: #optionssetter [with]: /functions/go-template/with/ gohugoio-hugo-6abdaca/docs/content/en/functions/js/Build.md000066400000000000000000000111511507671574500241460ustar00rootroot00000000000000--- title: js.Build description: Bundle, transpile, tree shake, and minify JavaScript resources. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: ['js.Build [OPTIONS] RESOURCE'] --- The `js.Build` function uses the [evanw/esbuild] package to: - Bundle - Transpile (TypeScript and JSX) - Tree shake - Minify - Create source maps ```go-html-template {{ with resources.Get "js/main.js" }} {{$opts := dict "minify" (not hugo.IsDevelopment) "sourceMap" (cond hugo.IsDevelopment "external" "") "targetPath" "js/main.js" }} {{ with . | js.Build $opts }} {{ if hugo.IsDevelopment }} {{ else }} {{ with . | fingerprint }} {{ end }} {{ end }} {{ end }} {{ end }} ``` ## Options targetPath : (`string`) If not set, the source path will be used as the base target path. Note that the target path's extension may change if the target MIME type is different, e.g. when the source is TypeScript. format : (`string`) The output format. One of: `iife`, `cjs`, `esm`. Default is `iife`, a self-executing function, suitable for inclusion as a ` ``` [evanw/esbuild]: https://github.com/evanw/esbuild gohugoio-hugo-6abdaca/docs/content/en/functions/js/_index.md000066400000000000000000000002351507671574500243560ustar00rootroot00000000000000--- title: JavaScript functions linkTitle: js description: Use these functions to work with JavaScript and TypeScript files. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/lang/000077500000000000000000000000001507671574500230735ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/lang/FormatAccounting.md000066400000000000000000000007561507671574500266700ustar00rootroot00000000000000--- title: lang.FormatAccounting description: Returns a currency representation of a number for the given currency and precision for the current language and region in accounting notation. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [lang.FormatAccounting PRECISION CURRENCY NUMBER] --- ```go-html-template {{ 512.5032 | lang.FormatAccounting 2 "NOK" }} → NOK512.50 ``` {{% include "/_common/functions/locales.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/lang/FormatCurrency.md000066400000000000000000000007171507671574500263650ustar00rootroot00000000000000--- title: lang.FormatCurrency description: Returns a currency representation of a number for the given currency and precision for the current language and region. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [lang.FormatCurrency PRECISION CURRENCY NUMBER] --- ```go-html-template {{ 512.5032 | lang.FormatCurrency 2 "USD" }} → $512.50 ``` {{% include "/_common/functions/locales.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/lang/FormatNumber.md000066400000000000000000000006541507671574500260230ustar00rootroot00000000000000--- title: lang.FormatNumber description: Returns a numeric representation of a number with the given precision for the current language and region. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [lang.FormatNumber PRECISION NUMBER] --- ```go-html-template {{ 512.5032 | lang.FormatNumber 2 }} → 512.50 ``` {{% include "/_common/functions/locales.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/lang/FormatNumberCustom.md000066400000000000000000000024521507671574500272140ustar00rootroot00000000000000--- title: lang.FormatNumberCustom description: Returns a numeric representation of a number with the given precision using negative, decimal, and grouping options. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: ['lang.FormatNumberCustom PRECISION NUMBER [OPTIONS...]'] aliases: ['/functions/numfmt/'] --- This function formats a number with the given precision. The first options parameter is a space-delimited string of characters to represent negativity, the decimal point, and grouping. The default value is `- . ,`. The second options parameter defines an alternative delimiting character. Note that numbers are rounded up at 5 or greater. So, with precision set to 0, 1.5 becomes 2, and 1.4 becomes 1. For a simpler function that adapts to the current language, see [`lang.FormatNumber`]. ```go-html-template {{ lang.FormatNumberCustom 2 12345.6789 }} → 12,345.68 {{ lang.FormatNumberCustom 2 12345.6789 "- , ." }} → 12.345,68 {{ lang.FormatNumberCustom 6 -12345.6789 "- ." }} → -12345.678900 {{ lang.FormatNumberCustom 0 -12345.6789 "- . ," }} → -12,346 {{ lang.FormatNumberCustom 0 -12345.6789 "-|.| " "|" }} → -12 346 ``` {{% include "/_common/functions/locales.md" %}} [`lang.FormatNumber`]: /functions/lang/formatnumber/ gohugoio-hugo-6abdaca/docs/content/en/functions/lang/FormatPercent.md000066400000000000000000000006631507671574500261730ustar00rootroot00000000000000--- title: lang.FormatPercent description: Returns a percentage representation of a number with the given precision for the current language and region. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [lang.FormatPercent PRECISION NUMBER] --- ```go-html-template {{ 512.5032 | lang.FormatPercent 2 }} → 512.50% ``` {{% include "/_common/functions/locales.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/lang/Merge.md000066400000000000000000000013561507671574500244610ustar00rootroot00000000000000--- title: lang.Merge description: Merge missing translations from other languages. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: any signatures: [lang.Merge FROM TO] aliases: [/functions/lang.merge] --- As an example: ```sh {{ $pages := .Site.RegularPages | lang.Merge $frSite.RegularPages | lang.Merge $enSite.RegularPages }} ``` Will "fill in the gaps" in the current site with, from left to right, content from the French site, and lastly the English. A more practical example is to fill in the missing translations from the other languages: ```sh {{ $pages := .Site.RegularPages }} {{ range .Site.Home.Translations }} {{ $pages = $pages | lang.Merge .Site.RegularPages }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/lang/Translate.md000066400000000000000000000152221507671574500253540ustar00rootroot00000000000000--- title: lang.Translate description: Translates a string using the translation tables in the i18n directory. categories: [] keywords: [] params: functions_and_methods: aliases: [T, i18n] returnType: string signatures: ['lang.Translate KEY [CONTEXT]'] aliases: [/functions/i18n] --- The `lang.Translate` function returns the value associated with given key as defined in the translation table for the current language. If the key is not found in the translation table for the current language, the `lang.Translate` function falls back to the translation table for the [`defaultContentLanguage`]. If the key is not found in the translation table for the `defaultContentLanguage`, the `lang.Translate` function returns an empty string. > [!note] > To list missing and fallback translations, use the `--printI18nWarnings` flag when building your site. > > To render placeholders for missing and fallback translations, set [`enableMissingTranslationPlaceholders`] to `true` in your site configuration. ## Translation tables Create translation tables in the `i18n` directory, naming each file according to [RFC 5646]. Translation tables may be JSON, TOML, or YAML. For example: ```text i18n/en.toml i18n/en-US.toml ``` The base name must match the [language key] as defined in your site configuration. Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7] are also supported. You may omit the `art-x-` prefix for brevity. For example: ```text i18n/art-x-hugolang.toml i18n/hugolang.toml ``` > [!note] > Private use subtags must not exceed 8 alphanumeric characters. ## Simple translations Let's say your multilingual site supports two languages, English and Polish. Create a translation table for each language in the `i18n` directory. ```text i18n/ ├── en.toml └── pl.toml ``` The English translation table: {{< code-toggle file=i18n/en >}} privacy = 'privacy' security = 'security' {{< /code-toggle >}} The Polish translation table: {{< code-toggle file=i18n/pl >}} privacy = 'prywatność' security = 'bezpieczeństwo' {{< /code-toggle >}} > [!note] > The examples below use the `T` alias for brevity. When viewing the English language site: ```go-html-template {{ T "privacy" }} → privacy {{ T "security" }} → security ```` When viewing the Polish language site: ```go-html-template {{ T "privacy" }} → prywatność {{ T "security" }} → bezpieczeństwo ``` ## Translations with pluralization Let's say your multilingual site supports two languages, English and Polish. Create a translation table for each language in the `i18n` directory. ```text i18n/ ├── en.toml └── pl.toml ``` The Unicode [CLDR Plural Rules chart] describes the pluralization categories for each language. The English translation table: {{< code-toggle file=i18n/en >}} [day] one = 'day' other = 'days' [day_with_count] one = '{{ . }} day' other = '{{ . }} days' {{< /code-toggle >}} The Polish translation table: {{< code-toggle file=i18n/pl >}} [day] one = 'miesiąc' few = 'miesiące' many = 'miesięcy' other = 'miesiąca' [day_with_count] one = '{{ . }} miesiąc' few = '{{ . }} miesiące' many = '{{ . }} miesięcy' other = '{{ . }} miesiąca' {{< /code-toggle >}} > [!note] > The examples below use the `T` alias for brevity. When viewing the English language site: ```go-html-template {{ T "day" 0 }} → days {{ T "day" 1 }} → day {{ T "day" 2 }} → days {{ T "day" 5 }} → days {{ T "day_with_count" 0 }} → 0 days {{ T "day_with_count" 1 }} → 1 day {{ T "day_with_count" 2 }} → 2 days {{ T "day_with_count" 5 }} → 5 days ```` When viewing the Polish language site: ```go-html-template {{ T "day" 0 }} → miesięcy {{ T "day" 1 }} → miesiąc {{ T "day" 2 }} → miesiące {{ T "day" 5 }} → miesięcy {{ T "day_with_count" 0 }} → 0 miesięcy {{ T "day_with_count" 1 }} → 1 miesiąc {{ T "day_with_count" 2 }} → 2 miesiące {{ T "day_with_count" 5 }} → 5 miesięcy ``` In the pluralization examples above, we passed an integer in context (the second argument). You can also pass a map in context, providing a `count` key to control pluralization. Translation table: {{< code-toggle file=i18n/en >}} [age] one = '{{ .name }} is {{ .count }} year old.' other = '{{ .name }} is {{ .count }} years old.' {{< /code-toggle >}} Template code: ```go-html-template {{ T "age" (dict "name" "Will" "count" 1) }} → Will is 1 year old. {{ T "age" (dict "name" "John" "count" 3) }} → John is 3 years old. ``` > [!note] > Translation tables may contain both simple translations and translations with pluralization. ## Reserved keys Hugo uses the [go-i18n] package to look up values in translation tables. This package reserves the following keys for internal use: id : (`string`) Uniquely identifies the message. description : (`string`) Describes the message to give additional context to translators that may be relevant for translation. hash : (`string`) Uniquely identifies the content of the message that this message was translated from. leftdelim : (`string`) The left Go template delimiter. rightdelim : (`string`) The right Go template delimiter. zero : (`string`) The content of the message for the [CLDR] plural form "zero". one : (`string`) The content of the message for the [CLDR] plural form "one". two : (`string`) The content of the message for the [CLDR] plural form "two". few : (`string`) The content of the message for the [CLDR] plural form "few". many : (`string`) The content of the message for the [CLDR] plural form "many". other : (`string`) The content of the message for the [CLDR] plural form "other". If you need to provide a translation for one of the reserved keys, you can prepend the word with an underscore. For example: {{< code-toggle file=i18n/es >}} _description = 'descripción' _few = 'pocos' _many = 'muchos' _one = 'uno' _other = 'otro' _two = 'dos' _zero = 'cero' {{< /code-toggle >}} Then in your templates: ```go-html-template {{ T "_description" }} → descripción {{ T "_few" }} → pocos {{ T "_many" }} → muchos {{ T "_one" }} → uno {{ T "_two" }} → dos {{ T "_zero" }} → cero {{ T "_other" }} → otro ``` [`defaultContentLanguage`]: /configuration/all/#defaultcontentlanguage [`enableMissingTranslationPlaceholders`]: /configuration/all/#enablemissingtranslationplaceholders [CLDR]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html [CLDR Plural Rules chart]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html [go-i18n]: https://github.com/nicksnyder/go-i18n [language key]: /configuration/languages/#language-keys [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646 [RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7 gohugoio-hugo-6abdaca/docs/content/en/functions/lang/_index.md000066400000000000000000000002521507671574500246620ustar00rootroot00000000000000--- title: Lang functions linkTitle: lang description: Use these functions to adapt your site to meet language and regional requirements. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/math/000077500000000000000000000000001507671574500231035ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/math/Abs.md000066400000000000000000000004201507671574500241260ustar00rootroot00000000000000--- title: math.Abs description: Returns the absolute value of the given number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Abs VALUE] --- ```go-html-template {{ math.Abs -2.1 }} → 2.1 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Acos.md000066400000000000000000000004571507671574500243200ustar00rootroot00000000000000--- title: math.Acos description: Returns the arccosine, in radians, of the given number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Acos VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.Acos 1 }} → 0 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Add.md000066400000000000000000000006641507671574500241230ustar00rootroot00000000000000--- title: math.Add description: Adds two or more numbers. categories: [] keywords: [] params: functions_and_methods: aliases: [add] returnType: any signatures: [math.Add VALUE VALUE...] --- If one of the numbers is a [`float`](g), the result is a `float`. ```go-html-template {{ add 12 3 2 }} → 17 ``` You can also use the `add` function to concatenate strings. ```go-html-template {{ add "hu" "go" }} → hugo ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Asin.md000066400000000000000000000004761507671574500243260ustar00rootroot00000000000000--- title: math.Asin description: Returns the arcsine, in radians, of the given number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Asin VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.Asin 1 }} → 1.5707963267948966 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Atan.md000066400000000000000000000005011507671574500243040ustar00rootroot00000000000000--- title: math.Atan description: Returns the arctangent, in radians, of the given number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Atan VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.Atan 1 }} → 0.7853981633974483 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Atan2.md000066400000000000000000000006041507671574500243720ustar00rootroot00000000000000--- title: math.Atan2 description: Returns the arctangent, in radians, of the given number pair, determining the correct quadrant from their signs. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Atan2 VALUE VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.Atan2 1 2 }} → 0.4636476090008061 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Ceil.md000066400000000000000000000004531507671574500243030ustar00rootroot00000000000000--- title: math.Ceil description: Returns the least integer value greater than or equal to the given number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Ceil VALUE] --- ```go-html-template {{ math.Ceil 2.1 }} → 3 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Cos.md000066400000000000000000000004641507671574500241550ustar00rootroot00000000000000--- title: math.Cos description: Returns the cosine of the given radian number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Cos VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.Cos 1 }} → 0.5403023058681398 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Counter.md000066400000000000000000000017451507671574500250530ustar00rootroot00000000000000--- title: math.Counter description: Increments and returns a global counter. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: uint64 signatures: [math.Counter] --- The counter is global for both monolingual and multilingual sites, and its initial value for each build is 1. ```go-html-template {file="layouts/page.html"} {{ warnf "page.html called %d times" math.Counter }} ``` ```text WARN page.html called 1 times WARN page.html called 2 times WARN page.html called 3 times ``` Use this function to: - Create unique warnings as shown above; the [`warnf`] function suppresses duplicate messages - Create unique target paths for the `resources.FromString` function where the target path is also the cache key > [!note] > Due to concurrency, the value returned in a given template for a given page will vary from one build to the next. You cannot use this function to assign a static id to each page. [`warnf`]: /functions/fmt/warnf/ gohugoio-hugo-6abdaca/docs/content/en/functions/math/Div.md000066400000000000000000000005271507671574500241530ustar00rootroot00000000000000--- title: math.Div description: Divides the first number by one or more numbers. categories: [] keywords: [] params: functions_and_methods: aliases: [div] returnType: any signatures: [math.Div VALUE VALUE...] --- If one of the numbers is a [`float`](g), the result is a `float`. ```go-html-template {{ div 12 3 2 }} → 2 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Floor.md000066400000000000000000000004561507671574500245130ustar00rootroot00000000000000--- title: math.Floor description: Returns the greatest integer value less than or equal to the given number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Floor VALUE] --- ```go-html-template {{ math.Floor 1.9 }} → 1 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Log.md000066400000000000000000000004231507671574500241450ustar00rootroot00000000000000--- title: math.Log description: Returns the natural logarithm of the given number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Log VALUE] --- ```go-html-template {{ math.Log 42 }} → 3.737 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Max.md000066400000000000000000000004621507671574500241540ustar00rootroot00000000000000--- title: math.Max description: Returns the greater of all numbers. Accepts scalars, slices, or both. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Max VALUE...] --- ```go-html-template {{ math.Max 1 (slice 2 3) 4 }} → 4 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/MaxInt64.md000066400000000000000000000010471507671574500250010ustar00rootroot00000000000000--- title: math.MaxInt64 description: Returns the maximum value for a signed 64-bit integer. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: int64 signatures: [math.MaxInt64] --- {{< new-in 0.147.3 />}} ```go-html-template {{ math.MaxInt64 }} → 9223372036854775807 ``` This function is helpful for simulating a loop that continues indefinitely until a break condition is met. For example: ```go-html-template {{ range math.MaxInt64 }} {{ if eq . 42 }} {{ break }} {{ end }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Min.md000066400000000000000000000004621507671574500241520ustar00rootroot00000000000000--- title: math.Min description: Returns the smaller of all numbers. Accepts scalars, slices, or both. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Min VALUE...] --- ```go-html-template {{ math.Min 1 (slice 2 3) 4 }} → 1 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Mod.md000066400000000000000000000004071507671574500241450ustar00rootroot00000000000000--- title: math.Mod description: Returns the modulus of two integers. categories: [] keywords: [] params: functions_and_methods: aliases: [mod] returnType: int64 signatures: [math.Mod VALUE1 VALUE2] --- ```go-html-template {{ mod 15 3 }} → 0 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/ModBool.md000066400000000000000000000004521507671574500247610ustar00rootroot00000000000000--- title: math.ModBool description: Reports whether the modulus of two integers equals 0. categories: [] keywords: [] params: functions_and_methods: aliases: [modBool] returnType: bool signatures: [math.ModBool VALUE1 VALUE2] --- ```go-html-template {{ modBool 15 3 }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Mul.md000066400000000000000000000005071507671574500241640ustar00rootroot00000000000000--- title: math.Mul description: Multiplies two or more numbers. categories: [] keywords: [] params: functions_and_methods: aliases: [mul] returnType: any signatures: [math.Mul VALUE VALUE...] --- If one of the numbers is a [`float`](g), the result is a `float`. ```go-html-template {{ mul 12 3 2 }} → 72 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Pi.md000066400000000000000000000004371507671574500240010ustar00rootroot00000000000000--- title: math.Pi description: Returns the mathematical constant pi. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Pi] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.Pi }} → 3.141592653589793 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Pow.md000066400000000000000000000004531507671574500241740ustar00rootroot00000000000000--- title: math.Pow description: Returns the first number raised to the power of the second number. categories: [] keywords: [] params: functions_and_methods: aliases: [pow] returnType: float64 signatures: [math.Pow VALUE1 VALUE2] --- ```go-html-template {{ math.Pow 2 3 }} → 8 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Product.md000066400000000000000000000004771507671574500250550ustar00rootroot00000000000000--- title: math.Product description: Returns the product of all numbers. Accepts scalars, slices, or both. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Product VALUE...] --- ```go-html-template {{ math.Product 1 (slice 2 3) 4 }} → 24 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Rand.md000066400000000000000000000017731507671574500243210ustar00rootroot00000000000000--- title: math.Rand description: Returns a pseudo-random number in the half-open interval [0.0, 1.0). categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Rand] --- {{< new-in 0.121.2 />}} The `math.Rand` function returns a pseudo-random number in the half-open [interval](g) [0.0, 1.0). ```go-html-template {{ math.Rand }} → 0.6312770459590062 ``` To generate a random integer in the closed interval [0, 5]: ```go-html-template {{ math.Rand | mul 6 | math.Floor }} ``` To generate a random integer in the closed interval [1, 6]: ```go-html-template {{ math.Rand | mul 6 | math.Ceil }} ``` To generate a random float, with one digit after the decimal point, in the closed interval [0, 4.9]: ```go-html-template {{ div (math.Rand | mul 50 | math.Floor) 10 }} ``` To generate a random float, with one digit after the decimal point, in the closed interval [0.1, 5.0]: ```go-html-template {{ div (math.Rand | mul 50 | math.Ceil) 10 }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Round.md000066400000000000000000000004361507671574500245170ustar00rootroot00000000000000--- title: math.Round description: Returns the nearest integer, rounding half away from zero. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Round VALUE] --- ```go-html-template {{ math.Round 1.5 }} → 2 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Sin.md000066400000000000000000000004621507671574500241600ustar00rootroot00000000000000--- title: math.Sin description: Returns the sine of the given radian number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Sin VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.Sin 1 }} → 0.8414709848078965 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Sqrt.md000066400000000000000000000004141507671574500243550ustar00rootroot00000000000000--- title: math.Sqrt description: Returns the square root of the given number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Sqrt VALUE] --- ```go-html-template {{ math.Sqrt 81 }} → 9 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Sub.md000066400000000000000000000005331507671574500241570ustar00rootroot00000000000000--- title: math.Sub description: Subtracts one or more numbers from the first number. categories: [] keywords: [] params: functions_and_methods: aliases: [sub] returnType: any signatures: [math.Sub VALUE VALUE...] --- If one of the numbers is a [`float`](g), the result is a `float`. ```go-html-template {{ sub 12 3 2 }} → 7 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Sum.md000066400000000000000000000004421507671574500241710ustar00rootroot00000000000000--- title: math.Sum description: Returns the sum of all numbers. Accepts scalars, slices, or both. categories: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Sum VALUE...] --- ```go-html-template {{ math.Sum 1 (slice 2 3) 4 }} → 10 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/Tan.md000066400000000000000000000004641507671574500241530ustar00rootroot00000000000000--- title: math.Tan description: Returns the tangent of the given radian number. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.Tan VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.Tan 1 }} → 1.557407724654902 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/ToDegrees.md000066400000000000000000000005011507671574500253020ustar00rootroot00000000000000--- title: math.ToDegrees description: ToDegrees converts radians into degrees. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.ToDegrees VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.ToDegrees 1.5707963267948966 }} → 90 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/ToRadians.md000066400000000000000000000005011507671574500253050ustar00rootroot00000000000000--- title: math.ToRadians description: ToRadians converts degrees into radians. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: float64 signatures: [math.ToRadians VALUE] --- {{< new-in 0.130.0 />}} ```go-html-template {{ math.ToRadians 90 }} → 1.5707963267948966 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/math/_index.md000066400000000000000000000002021507671574500246650ustar00rootroot00000000000000--- title: Math functions linkTitle: math description: Use these functions to perform mathematical operations. categories: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/openapi3/000077500000000000000000000000001507671574500236705ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/openapi3/Unmarshal.md000066400000000000000000000042701507671574500261470ustar00rootroot00000000000000--- title: openapi3.Unmarshal description: Unmarshals the given resource into an OpenAPI 3 document. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: openapi3.OpenAPIDocument signatures: ['openapi3.Unmarshal RESOURCE'] --- Use the `openapi3.Unmarshal` function with [global resources](g), [page resources](g), or [remote resources](g). [OpenAPI]: https://www.openapis.org/ For example, to work with a remote [OpenAPI] definition: ```go-html-template {{ $url := "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/examples/v3.0/petstore.json" }} {{ $api := "" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ $api = . | openapi3.Unmarshal }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` To inspect the data structure: ```go-html-template
      {{ debug.Dump $api }}
      ``` To list the GET and POST operations for each of the API paths: ```go-html-template {{ range $path, $details := $api.Paths.Map }}

      {{ $path }}

      {{ with $details.Get }}
      GET
      {{ .Summary }}
      {{ end }} {{ with $details.Post }}
      POST
      {{ .Summary }}
      {{ end }}
      {{ end }} ``` > [!warning] > The unmarshaled data structure is created with [`kin-openapi`](https://github.com/getkin/kin-openapi). Many fields are structs or pointers (not maps), and therefore require accessors or other methods for indexing and iteration. > For example, prior to [`kin-openapi` v0.122.0](https://github.com/getkin/kin-openapi#v01220) / [Hugo v0.121.0](https://github.com/gohugoio/hugo/releases/tag/v0.121.0), `Paths` was a map (so `.Paths` was iterable) and it is now a pointer (and requires the `.Paths.Map` accessor, as in the example above). > See the [`kin-openapi` godoc for OpenAPI 3](https://pkg.go.dev/github.com/getkin/kin-openapi/openapi3) for full type definitions. Hugo renders this to: ```html

      /pets

      GET
      List all pets
      POST
      Create a pet

      /pets/{petId}

      GET
      Info for a specific pet
      ``` gohugoio-hugo-6abdaca/docs/content/en/functions/openapi3/_index.md000066400000000000000000000002261507671574500254600ustar00rootroot00000000000000--- title: OpenAPI functions linkTitle: openapi3 description: Use these functions to work with OpenAPI 3 definitions. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/os/000077500000000000000000000000001507671574500225735ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/os/FileExists.md000066400000000000000000000021061507671574500251730ustar00rootroot00000000000000--- title: os.FileExists description: Reports whether the file or directory exists. categories: [] keywords: [] params: functions_and_methods: aliases: [fileExists] returnType: bool signatures: [os.FileExists PATH] aliases: [/functions/fileexists] --- The `os.FileExists` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/configuration/all/#contentdir). A leading path separator (`/`) is optional. With this directory structure: ```text content/ ├── about.md ├── contact.md └── news/ ├── article-1.md └── article-2.md ``` The function returns these values: ```go-html-template {{ fileExists "content" }} → true {{ fileExists "content/news" }} → true {{ fileExists "content/news/article-1" }} → false {{ fileExists "content/news/article-1.md" }} → true {{ fileExists "news" }} → true {{ fileExists "news/article-1" }} → false {{ fileExists "news/article-1.md" }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/os/Getenv.md000066400000000000000000000022561507671574500243520ustar00rootroot00000000000000--- title: os.Getenv description: Returns the value of an environment variable, or an empty string if the environment variable is not set. categories: [] keywords: [] params: functions_and_methods: aliases: [getenv] returnType: string signatures: [os.Getenv VARIABLE] aliases: [/functions/getenv] --- ## Security By default, when using the `os.Getenv` function Hugo allows access to: - The `CI` environment variable - Any environment variable beginning with `HUGO_` To access other environment variables, adjust your site configuration. For example, to allow access to the `HOME` and `USER` environment variables: {{< code-toggle file=hugo >}} [security.funcs] getenv = ['^HUGO_', '^CI$', '^USER$', '^HOME$'] {{< /code-toggle >}} For more information see [configure security](/configuration/security). ## Examples ```go-html-template {{ getenv "HOME" }} → /home/victor {{ getenv "USER" }} → victor ``` You can pass values when building your site: ```sh MY_VAR1=foo MY_VAR2=bar hugo OR export MY_VAR1=foo export MY_VAR2=bar hugo ``` And then retrieve the values within a template: ```go-html-template {{ getenv "MY_VAR1" }} → foo {{ getenv "MY_VAR2" }} → bar ``` gohugoio-hugo-6abdaca/docs/content/en/functions/os/ReadDir.md000066400000000000000000000017051507671574500244320ustar00rootroot00000000000000--- title: os.ReadDir description: Returns an array of FileInfo structures sorted by file name, one element for each directory entry. categories: [] keywords: [] params: functions_and_methods: aliases: [readDir] returnType: os.FileInfo signatures: [os.ReadDir PATH] aliases: [/functions/readdir] --- The `os.ReadDir` function resolves the path relative to the root of your project directory. A leading path separator (`/`) is optional. With this directory structure: ```text content/ ├── about.md ├── contact.md └── news/ ├── article-1.md └── article-2.md ``` This template code: ```go-html-template {{ range readDir "content" }} {{ .Name }} → {{ .IsDir }} {{ end }} ``` Produces: ```html about.md → false contact.md → false news → true ``` Note that `os.ReadDir` is not recursive. Details of the `FileInfo` structure are available in the [Go documentation](https://pkg.go.dev/io/fs#FileInfo). gohugoio-hugo-6abdaca/docs/content/en/functions/os/ReadFile.md000066400000000000000000000014561507671574500245760ustar00rootroot00000000000000--- title: os.ReadFile description: Returns the contents of a file. categories: [] keywords: [] params: functions_and_methods: aliases: [readFile] returnType: string signatures: [os.ReadFile PATH] aliases: [/functions/readfile] --- The `os.ReadFile` function attempts to resolve the path relative to the root of your project directory. If a matching file is not found, it will attempt to resolve the path relative to the [`contentDir`](/configuration/all/#contentdir). A leading path separator (`/`) is optional. With a file named README.md in the root of your project directory: ```text This is **bold** text. ``` This template code: ```go-html-template {{ readFile "README.md" }} ``` Produces: ```html This is **bold** text. ``` Note that `os.ReadFile` returns raw (uninterpreted) content. gohugoio-hugo-6abdaca/docs/content/en/functions/os/Stat.md000066400000000000000000000017151507671574500240340ustar00rootroot00000000000000--- title: os.Stat description: Returns a FileInfo structure describing a file or directory. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: os.FileInfo signatures: [os.Stat PATH] aliases: [/functions/os.stat] --- The `os.Stat` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/configuration/all/#contentdir). A leading path separator (`/`) is optional. ```go-html-template {{ $f := os.Stat "README.md" }} {{ $f.IsDir }} → false (bool) {{ $f.ModTime }} → 2021-11-25 10:06:49.315429236 -0800 PST (time.Time) {{ $f.Name }} → README.md (string) {{ $f.Size }} → 241 (int64) {{ $d := os.Stat "content" }} {{ $d.IsDir }} → true (bool) ``` Details of the `FileInfo` structure are available in the [Go documentation](https://pkg.go.dev/io/fs#FileInfo). gohugoio-hugo-6abdaca/docs/content/en/functions/os/_index.md000066400000000000000000000002161507671574500243620ustar00rootroot00000000000000--- title: OS functions linkTitle: os description: Use these functions to interact with the operating system. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/partials/000077500000000000000000000000001507671574500237715ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/partials/Include.md000066400000000000000000000044131507671574500257000ustar00rootroot00000000000000--- title: partials.Include description: Executes the given template, optionally passing context. If the partial template contains a return statement, returns the given value, else returns the rendered output. categories: [] keywords: [] params: functions_and_methods: aliases: [partial] returnType: any signatures: ['partials.Include NAME [CONTEXT]'] aliases: [/functions/partial] --- Without a [`return`] statement, the `partial` function returns a string of type `template.HTML`. With a `return` statement, the `partial` function can return any data type. In this example we have three _partial_ templates: ```text layouts/ └── _partials/ ├── average.html ├── breadcrumbs.html └── footer.html ``` The "average" partial returns the average of one or more numbers. We pass the numbers in context: ```go-html-template {{ $numbers := slice 1 6 7 42 }} {{ $average := partial "average.html" $numbers }} ``` The "breadcrumbs" partial renders [breadcrumb navigation], and needs to receive the current page in context: ```go-html-template {{ partial "breadcrumbs.html" . }} ``` The "footer" partial renders the site footer. In this contrived example, the footer does not need access to the current page, so we can omit context: ```go-html-template {{ partial "footer.html" }} ``` You can pass anything in context: a page, a page collection, a scalar value, a slice, or a map. In this example we pass the current page and three scalar values: ```go-html-template {{ $ctx := dict "page" . "name" "John Doe" "major" "Finance" "gpa" 4.0 }} {{ partial "render-student-info.html" $ctx }} ``` Then, within the _partial_ template: ```go-html-template

      {{ .name }} is majoring in {{ .major }}.

      Their grade point average is {{ .gpa }}.

      See details.

      ``` To return a value from a _partial_ template, it must contain only one `return` statement, placed at the end of the template: ```go-html-template {{ $result := "" }} {{ if math.ModBool . 2 }} {{ $result = "even" }} {{ else }} {{ $result = "odd" }} {{ end }} {{ return $result }} ``` See [details][`return`]. [`return`]: /functions/go-template/return/ [breadcrumb navigation]: /content-management/sections/#ancestors-and-descendants gohugoio-hugo-6abdaca/docs/content/en/functions/partials/IncludeCached.md000066400000000000000000000043651507671574500267760ustar00rootroot00000000000000--- title: partials.IncludeCached description: Executes the given template and caches the result, optionally passing context. If the partial template contains a return statement, returns the given value, else returns the rendered output. categories: [] keywords: [] params: functions_and_methods: aliases: [partialCached] returnType: any signatures: ['partials.IncludeCached LAYOUT CONTEXT [VARIANT...]'] aliases: [/functions/partialcached] --- Without a [`return`] statement, the `partialCached` function returns a string of type `template.HTML`. With a `return` statement, the `partialCached` function can return any data type. The `partialCached` function can offer significant performance gains for complex templates that don't need to be re-rendered on every invocation. > [!note] > Each site (or language) has its own `partialCached` cache, so each site will execute a partial once. > > Hugo renders pages in parallel, and will render the partial more than once with concurrent calls to the `partialCached` function. After Hugo caches the rendered partial, new pages entering the build pipeline will use the cached result. Here is the simplest usage: ```go-html-template {{ partialCached "footer.html" . }} ``` Pass additional arguments to `partialCached` to create variants of the cached partial. For example, if you have a complex partial that should be identical when rendered for pages within the same section, use a variant based on section so that the partial is only rendered once per section: ```go-html-template {file="layouts/baseof.html"} {{ partialCached "footer.html" . .Section }} ``` Pass additional arguments, of any data type, as needed to create unique variants: ```go-html-template {{ partialCached "footer.html" . .Params.country .Params.province }} ``` The variant arguments are not available to the underlying _partial_ template; they are only used to create unique cache keys. To return a value from a _partial_ template, it must contain only one `return` statement, placed at the end of the template: ```go-html-template {{ $result := "" }} {{ if math.ModBool . 2 }} {{ $result = "even" }} {{ else }} {{ $result = "odd" }} {{ end }} {{ return $result }} ``` See [details][`return`]. [`return`]: /functions/go-template/return/ gohugoio-hugo-6abdaca/docs/content/en/functions/partials/_index.md000066400000000000000000000002151507671574500255570ustar00rootroot00000000000000--- title: Partial functions linkTitle: partials description: Use these functions to call partial templates. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/path/000077500000000000000000000000001507671574500231065ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/path/Base.md000066400000000000000000000007551507671574500243110ustar00rootroot00000000000000--- title: path.Base description: Replaces path separators with slashes (`/`) and returns the last element of the given path. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [path.Base PATH] aliases: [/functions/path.base] --- ```go-html-template {{ path.Base "a/news.html" }} → news.html {{ path.Base "news.html" }} → news.html {{ path.Base "a/b/c" }} → c {{ path.Base "/x/y/z/" }} → z {{ path.Base "" }} → . ``` gohugoio-hugo-6abdaca/docs/content/en/functions/path/BaseName.md000066400000000000000000000010461507671574500251040ustar00rootroot00000000000000--- title: path.BaseName description: Replaces path separators with slashes (`/`) and returns the last element of the given path, removing the extension if present. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [path.BaseName PATH] aliases: [/functions/path.basename] --- ```go-html-template {{ path.BaseName "a/news.html" }} → news {{ path.BaseName "news.html" }} → news {{ path.BaseName "a/b/c" }} → c {{ path.BaseName "/x/y/z/" }} → z {{ path.BaseName "" }} → . ``` gohugoio-hugo-6abdaca/docs/content/en/functions/path/Clean.md000066400000000000000000000013671507671574500244610ustar00rootroot00000000000000--- title: path.Clean description: Replaces path separators with slashes (`/`) and returns the shortest path name equivalent to the given path. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [path.Clean PATH] aliases: [/functions/path.clean] --- See Go's [`path.Clean`] documentation for details. [`path.Clean`]: https://pkg.go.dev/path#Clean ```go-html-template {{ path.Clean "foo/bar" }} → foo/bar {{ path.Clean "/foo/bar" }} → /foo/bar {{ path.Clean "/foo/bar/" }} → /foo/bar {{ path.Clean "/foo//bar/" }} → /foo/bar {{ path.Clean "/foo/./bar/" }} → /foo/bar {{ path.Clean "/foo/../bar/" }} → /bar {{ path.Clean "/../foo/../bar/" }} → /bar {{ path.Clean "" }} → . ``` gohugoio-hugo-6abdaca/docs/content/en/functions/path/Dir.md000066400000000000000000000010031507671574500241400ustar00rootroot00000000000000--- title: path.Dir description: Replaces path separators with slashes (/) and returns all but the last element of the given path. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [path.Dir PATH] aliases: [/functions/path.dir] --- ```go-html-template {{ path.Dir "a/news.html" }} → a {{ path.Dir "news.html" }} → . {{ path.Dir "a/b/c" }} → a/b {{ path.Dir "/a/b/c" }} → /a/b {{ path.Dir "/a/b/c/" }} → /a/b/c {{ path.Dir "" }} → . ``` gohugoio-hugo-6abdaca/docs/content/en/functions/path/Ext.md000066400000000000000000000007651507671574500242000ustar00rootroot00000000000000--- title: path.Ext description: Replaces path separators with slashes (`/`) and returns the file name extension of the given path. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [path.Ext PATH] aliases: [/functions/path.ext] --- The extension is the suffix beginning at the final dot in the final slash-separated element of path; it is empty if there is no dot. ```go-html-template {{ path.Ext "a/b/c/news.html" }} → .html ``` gohugoio-hugo-6abdaca/docs/content/en/functions/path/Join.md000066400000000000000000000016611507671574500243330ustar00rootroot00000000000000--- title: path.Join description: Replaces path separators with slashes (`/`), joins the given path elements into a single path, and returns the shortest path name equivalent to the result. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [path.Join ELEMENT...] aliases: [/functions/path.join] --- See Go's [`path.Join`] and [`path.Clean`] documentation for details. [`path.Clean`]: https://pkg.go.dev/path#Clean [`path.Join`]: https://pkg.go.dev/path#Join ```go-html-template {{ path.Join "partial" "news.html" }} → partial/news.html {{ path.Join "partial/" "news.html" }} → partial/news.html {{ path.Join "foo/bar" "baz" }} → foo/bar/baz {{ path.Join "foo" "bar" "baz" }} → foo/bar/baz {{ path.Join "foo" "" "baz" }} → foo/baz {{ path.Join "foo" "." "baz" }} → foo/baz {{ path.Join "foo" ".." "baz" }} → baz {{ path.Join "/.." "foo" ".." "baz" }} → baz ``` gohugoio-hugo-6abdaca/docs/content/en/functions/path/Split.md000066400000000000000000000015631507671574500245300ustar00rootroot00000000000000--- title: path.Split description: Replaces path separators with slashes (`/`) and splits the resulting path immediately following the final slash, separating it into a directory and file name component. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: paths.DirFile signatures: [path.Split PATH] aliases: [/functions/path.split] --- If there is no slash in the given path, `path.Split` returns an empty directory, and file set to path. The returned values have the property that path = dir+file. ```go-html-template {{ $dirFile := path.Split "a/news.html" }} {{ $dirFile.Dir }} → a/ {{ $dirFile.File }} → news.html {{ $dirFile := path.Split "news.html" }} {{ $dirFile.Dir }} → "" (empty string) {{ $dirFile.File }} → news.html {{ $dirFile := path.Split "a/b/c" }} {{ $dirFile.Dir }} → a/b/ {{ $dirFile.File }} → c ``` gohugoio-hugo-6abdaca/docs/content/en/functions/path/_index.md000066400000000000000000000002041507671574500246720ustar00rootroot00000000000000--- title: Path functions linkTitle: path description: Use these functions to work with file paths. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/reflect/000077500000000000000000000000001507671574500235765ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/reflect/IsMap.md000066400000000000000000000005561507671574500251370ustar00rootroot00000000000000--- title: reflect.IsMap description: Reports whether the given value is a map. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [reflect.IsMap INPUT] aliases: [/functions/reflect.ismap] --- ```go-html-template {{ reflect.IsMap (dict "key" "value") }} → true {{ reflect.IsMap "yo" }} → false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/reflect/IsSlice.md000066400000000000000000000005631507671574500254570ustar00rootroot00000000000000--- title: reflect.IsSlice description: Reports whether the given value is a slice. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [reflect.IsSlice INPUT] aliases: [/functions/reflect.isslice] --- ```go-html-template {{ reflect.IsSlice (slice 1 2 3) }} → true {{ reflect.IsSlice "yo" }} → false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/reflect/_index.md000066400000000000000000000002231507671574500253630ustar00rootroot00000000000000--- title: Reflect functions linkTitle: reflect description: Use these functions to determine a value's data type. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/resources/000077500000000000000000000000001507671574500241645ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/resources/Babel.md000066400000000000000000000006641507671574500255210ustar00rootroot00000000000000--- title: resources.Babel description: Compiles the given JavaScript resource with Babel. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: ['resources.Babel [OPTIONS] RESOURCE'] expiryDate: 2026-06-24 # deprecated 2024-06-24 in v0.128.0 --- {{< deprecated-in 0.128.0 >}} Use [`js.Babel`] instead. [`js.Babel`]: /functions/js/babel/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/functions/resources/ByType.md000066400000000000000000000016001507671574500257170ustar00rootroot00000000000000--- title: resources.ByType description: Returns a collection of global resources of the given media type, or nil if none found. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resources signatures: [resources.ByType MEDIATYPE] --- The [media type] is typically one of `image`, `text`, `audio`, `video`, or `application`. ```go-html-template {{ range resources.ByType "image" }} {{ end }} ``` > [!note] > This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory. > > For page resources, use the [`Resources.ByType`] method on a `Page` object. [`Resources.ByType`]: /methods/page/resources/ [media type]: https://en.wikipedia.org/wiki/Media_type gohugoio-hugo-6abdaca/docs/content/en/functions/resources/Concat.md000066400000000000000000000016601507671574500257200ustar00rootroot00000000000000--- title: resources.Concat description: Returns a concatenated slice of resources. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: ['resources.Concat TARGETPATH [RESOURCE...]'] --- The `resources.Concat` function returns a concatenated slice of resources, caching the result using the target path as its cache key. Each resource must have the same [media type]. Hugo publishes the resource to the target path when you call its [`Publish`], [`Permalink`], or [`RelPermalink`] method. [media type]: https://en.wikipedia.org/wiki/Media_type [`publish`]: /methods/resource/publish/ [`permalink`]: /methods/resource/permalink/ [`relpermalink`]: /methods/resource/relpermalink/ ```go-html-template {{ $plugins := resources.Get "js/plugins.js" }} {{ $global := resources.Get "js/global.js" }} {{ $js := slice $plugins $global | resources.Concat "js/bundle.js" }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/resources/Copy.md000066400000000000000000000012131507671574500254150ustar00rootroot00000000000000--- title: resources.Copy description: Copies the given resource to the target path. categories: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: [resources.Copy TARGETPATH RESOURCE] --- ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ with resources.Copy "img/new-image-name.jpg" . }} {{ end }} {{ end }} ``` The relative URL of the new published resource will be: ```text /img/new-image-name.jpg ``` > [!note] > Use the `resources.Copy` function with global, page, and remote resources. gohugoio-hugo-6abdaca/docs/content/en/functions/resources/ExecuteAsTemplate.md000066400000000000000000000033041507671574500300700ustar00rootroot00000000000000--- title: resources.ExecuteAsTemplate description: Returns a resource created from a Go template, parsed and executed with the given context. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: [resources.ExecuteAsTemplate TARGETPATH CONTEXT RESOURCE] --- The `resources.ExecuteAsTemplate` function returns a resource created from a Go template, parsed and executed with the given context, caching the result using the target path as its cache key. Hugo publishes the resource to the target path when you call its [`Publish`], [`Permalink`], or [`RelPermalink`] methods. Let's say you have a CSS file that you wish to populate with values from your site configuration: ```go-html-template {file="assets/css/template.css"} body { background-color: {{ site.Params.style.bg_color }}; color: {{ site.Params.style.text_color }}; } ``` And your site configuration contains: {{< code-toggle file=hugo >}} [params.style] bg_color = '#fefefe' text_color = '#222' {{< /code-toggle >}} Place this in your baseof.html template: ```go-html-template {{ with resources.Get "css/template.css" }} {{ with resources.ExecuteAsTemplate "css/main.css" $ . }} {{ end }} {{ end }} ``` The example above: 1. Captures the template as a resource 1. Executes the resource as a template, passing the current page in context 1. Publishes the resource to css/main.css The result is: ```css {file="public/css/main.css"} body { background-color: #fefefe; color: #222; } ``` [`publish`]: /methods/resource/publish/ [`permalink`]: /methods/resource/permalink/ [`relpermalink`]: /methods/resource/relpermalink/ gohugoio-hugo-6abdaca/docs/content/en/functions/resources/Fingerprint.md000066400000000000000000000024551507671574500270030ustar00rootroot00000000000000--- title: resources.Fingerprint description: Cryptographically hashes the content of the given resource. categories: [] keywords: [] params: functions_and_methods: aliases: [fingerprint] returnType: resource.Resource signatures: ['resources.Fingerprint [ALGORITHM] RESOURCE'] --- ```go-html-template {{ with resources.Get "js/main.js" }} {{ with . | fingerprint "sha256" }} {{ end }} {{ end }} ``` Hugo renders this to something like: ```html ``` Although most commonly used with CSS and JavaScript resources, you can use the `resources.Fingerprint` function with any resource type. The hash algorithm may be one of `md5`, `sha256` (default), `sha384`, or `sha512`. After cryptographically hashing the resource content: 1. The values returned by the `.Permalink` and `.RelPermalink` methods include the hash sum 1. The resource's `.Data.Integrity` method returns a [Subresource Integrity] (SRI) value consisting of the name of the hash algorithm, one hyphen, and the base64-encoded hash sum [Subresource Integrity]: https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity gohugoio-hugo-6abdaca/docs/content/en/functions/resources/FromString.md000066400000000000000000000046771507671574500266160ustar00rootroot00000000000000--- title: resources.FromString description: Returns a resource created from a string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: [resources.FromString TARGETPATH STRING] --- The `resources.FromString` function returns a resource created from a string, caching the result using the target path as its cache key. Hugo publishes the resource to the target path when you call its [`Publish`], [`Permalink`], or [`RelPermalink`] methods. [`publish`]: /methods/resource/publish/ [`permalink`]: /methods/resource/permalink/ [`relpermalink`]: /methods/resource/relpermalink/ Let's say you need to publish a file named "site.json" in the root of your `public` directory, containing the build date, the Hugo version used to build the site, and the date that the content was last modified. For example: ```json { "build_date": "2025-07-08T13:12:19-07:00", "hugo_version": "0.148.0", "last_modified": "2025-07-07T22:09:13-07:00" } ``` Place this in your baseof.html template: ```go-html-template {{ if .IsHome }} {{ $rfc3339 := "2006-01-02T15:04:05Z07:00" }} {{ $m := dict "hugo_version" hugo.Version "build_date" (now.Format $rfc3339) "last_modified" (site.Lastmod.Format $rfc3339) }} {{ $json := jsonify $m }} {{ $r := resources.FromString "site.json" $json }} {{ $r.Publish }} {{ end }} ``` The example above: 1. Creates a map with the relevant key-value pairs using the [`dict`] function 1. Encodes the map as a JSON string using the [`jsonify`] function 1. Creates a resource from the JSON string using the `resources.FromString` function 1. Publishes the file to the root of the `public` directory using the resource's `.Publish` method Combine `resources.FromString` with [`resources.ExecuteAsTemplate`] if your string contains template actions. Rewriting the example above: ```go-html-template {{ if .IsHome }} {{ $string := ` {{ $rfc3339 := "2006-01-02T15:04:05Z07:00" }} {{ $m := dict "hugo_version" hugo.Version "build_date" (now.Format $rfc3339) "last_modified" (site.Lastmod.Format $rfc3339) }} {{ $json := jsonify $m }} ` }} {{ $r := resources.FromString "" $string }} {{ $r = $r | resources.ExecuteAsTemplate "site.json" . }} {{ $r.Publish }} {{ end }} ``` [`dict`]: /functions/collections/dictionary/ [`jsonify`]: /functions/encoding/jsonify/ [`resources.ExecuteAsTemplate`]: /functions/resources/executeastemplate/ gohugoio-hugo-6abdaca/docs/content/en/functions/resources/Get.md000066400000000000000000000013141507671574500252240ustar00rootroot00000000000000--- title: resources.Get description: Returns a global resource from the given path, or nil if none found. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: [resources.Get PATH] --- ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ end }} ``` > [!note] > This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory. > > For page resources, use the [`Resources.Get`] method on a `Page` object. [`Resources.Get`]: /methods/page/resources/ gohugoio-hugo-6abdaca/docs/content/en/functions/resources/GetMatch.md000066400000000000000000000015711507671574500262060ustar00rootroot00000000000000--- title: resources.GetMatch description: Returns the first global resource from paths matching the given glob pattern, or nil if none found. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: [resources.GetMatch PATTERN] --- ```go-html-template {{ with resources.GetMatch "images/*.jpg" }} {{ end }} ``` > [!note] > This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory. > > For page resources, use the [`Resources.GetMatch`] method on a `Page` object. Hugo determines a match using a case-insensitive [glob](g) pattern. {{% include "/_common/glob-patterns.md" %}} [`Resources.GetMatch`]: /methods/page/resources/ gohugoio-hugo-6abdaca/docs/content/en/functions/resources/GetRemote.md000066400000000000000000000155461507671574500264140ustar00rootroot00000000000000--- title: resources.GetRemote description: Returns a remote resource from the given URL, or nil if none found. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: ['resources.GetRemote URL [OPTIONS]'] --- {{< new-in 0.141.0 >}} The `Err` method on the returned resource was removed in v0.141.0. Use the [`try`] statement instead, as shown in the [error handling] example below. {{< /new-in >}} ```go-html-template {{ $url := "https://example.org/images/a.jpg" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` ## Options The `resources.GetRemote` function takes an optional map of options. body : (`string`) The data you want to transmit to the server. headers : (`map[string][]string`) The collection of key-value pairs that provide additional information about the request. key : (`string`) The cache key. Hugo derives the default value from the URL and options map. See [caching](#caching). method : (`string`) The action to perform on the requested resource, typically one of `GET`, `POST`, or `HEAD`. responseHeaders : {{< new-in 0.143.0 />}} : (`[]string`) The headers to extract from the server's response, accessible through the resource's [`Data.Headers`] method. Header name matching is case-insensitive. [`Data.Headers`]: /methods/resource/data/#headers ## Options examples > [!note] > For brevity, the examples below do not include [error handling]. To include a header: ```go-html-template {{ $url := "https://example.org/api" }} {{ $opts := dict "headers" (dict "Authorization" "Bearer abcd") }} {{ $resource := resources.GetRemote $url $opts }} ``` To specify more than one value for the same header key, use a slice: ```go-html-template {{ $url := "https://example.org/api" }} {{ $opts := dict "headers" (dict "X-List" (slice "a" "b" "c")) }} {{ $resource := resources.GetRemote $url $opts }} ``` To post data: ```go-html-template {{ $url := "https://example.org/api" }} {{ $opts := dict "method" "post" "body" `{"complete": true}` "headers" (dict "Content-Type" "application/json") }} {{ $resource := resources.GetRemote $url $opts }} ``` To override the default cache key: ```go-html-template {{ $url := "https://example.org/images/a.jpg" }} {{ $opts := dict "key" (print $url (now.Format "2006-01-02")) }} {{ $resource := resources.GetRemote $url $opts }} ``` To extract specific headers from the server's response: ```go-html-template {{ $url := "https://example.org/images/a.jpg" }} {{ $opts := dict "method" "HEAD" "responseHeaders" (slice "X-Frame-Options" "Server") }} {{ $resource := resources.GetRemote $url $opts }} ``` ## Remote data When retrieving remote data, use the [`transform.Unmarshal`] function to [unmarshal](g) the response. [`transform.Unmarshal`]: /functions/transform/unmarshal/ ```go-html-template {{ $data := dict }} {{ $url := "https://example.org/books.json" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ $data = . | transform.Unmarshal }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` > [!note] > When retrieving remote data, a misconfigured server may send a response header with an incorrect [Content-Type]. For example, the server may set the Content-Type header to `application/octet-stream` instead of `application/json`. > > In these cases, pass the resource `Content` through the `transform.Unmarshal` function instead of passing the resource itself. For example, in the above, do this instead: > > `{{ $data = .Content | transform.Unmarshal }}` ## Error handling Use the [`try`] statement to capture HTTP request errors. If you do not handle the error yourself, Hugo will fail the build. > [!note] > Hugo does not classify an HTTP response with status code 404 as an error. In this case `resources.GetRemote` returns nil. ```go-html-template {{ $url := "https://broken-example.org/images/a.jpg" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` To log an error as a warning instead of an error: ```go-html-template {{ $url := "https://broken-example.org/images/a.jpg" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ warnf "%s" . }} {{ else with .Value }} {{ else }} {{ warnf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` ## HTTP response The [`Data`] method on a resource returned by the `resources.GetRemote` function returns information from the HTTP response. [`Data`]: /methods/resource/data/ ## Caching Resources returned from `resources.GetRemote` are cached to disk. See [configure file caches] for details. By default, Hugo derives the cache key from the arguments passed to the function. Override the cache key by setting a `key` in the options map. Use this approach to have more control over how often Hugo fetches a remote resource. ```go-html-template {{ $url := "https://example.org/images/a.jpg" }} {{ $cacheKey := print $url (now.Format "2006-01-02") }} {{ $opts := dict "key" $cacheKey }} {{ $resource := resources.GetRemote $url $opts }} ``` ## Security To protect against malicious intent, the `resources.GetRemote` function inspects the server response including: - The [Content-Type] in the response header - The file extension, if any - The content itself If Hugo is unable to resolve the media type to an entry in its [allowlist], the function throws an error: ```text ERROR error calling resources.GetRemote: failed to resolve media type... ``` For example, you will see the error above if you attempt to download an executable. Although the allowlist contains entries for common media types, you may encounter situations where Hugo is unable to resolve the media type of a file that you know to be safe. In these situations, edit your site configuration to add the media type to the allowlist. For example: {{< code-toggle file=hugo >}} [security.http] mediaTypes = ['^image/avif$','^application/vnd\.api\+json$'] {{< /code-toggle >}} Note that the entry above is: - An _addition_ to the allowlist; it does not _replace_ the allowlist - An array of [regular expressions](g) [allowlist]: https://en.wikipedia.org/wiki/Whitelist [Content-Type]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type [`try`]: /functions/go-template/try [configure file caches]: /configuration/caches/ [error handling]: #error-handling gohugoio-hugo-6abdaca/docs/content/en/functions/resources/Match.md000066400000000000000000000016471507671574500255520ustar00rootroot00000000000000--- title: resources.Match description: Returns a collection of global resources from paths matching the given glob pattern, or nil if none found. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resources signatures: [resources.Match PATTERN] --- ```go-html-template {{ range resources.Match "images/*.jpg" }} {{ end }} ``` > [!note] > This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory. > > For page resources, use the [`Resources.Match`] method on a `Page` object. Hugo determines a match using a case-insensitive [glob pattern]. {{% include "/_common/glob-patterns.md" %}} [`Resources.Match`]: /methods/page/resources/ [glob pattern]: https://github.com/gobwas/glob#example gohugoio-hugo-6abdaca/docs/content/en/functions/resources/Minify.md000066400000000000000000000007211507671574500257410ustar00rootroot00000000000000--- title: resources.Minify description: Minifies the given resource. categories: [] keywords: [] params: functions_and_methods: aliases: [minify] returnType: resource.Resource signatures: [resources.Minify RESOURCE] --- ```go-html-template {{ $css := resources.Get "css/main.css" }} {{ $style := $css | minify }} ``` Any CSS, JS, JSON, HTML, SVG, or XML resource can be minified using resources.Minify which takes for argument the resource object. gohugoio-hugo-6abdaca/docs/content/en/functions/resources/PostCSS.md000066400000000000000000000007221507671574500260050ustar00rootroot00000000000000--- title: resources.PostCSS description: Processes the given resource with PostCSS using any PostCSS plugin. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: ['resources.PostCSS [OPTIONS] RESOURCE'] expiryDate: 2026-06-24 # deprecated 2024-06-24 in v0.128.0 --- {{< deprecated-in 0.128.0 >}} Use [`css.PostCSS`] instead. [`css.PostCSS`]: /functions/css/postcss/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/functions/resources/PostProcess.md000066400000000000000000000117471507671574500270040ustar00rootroot00000000000000--- title: resources.PostProcess description: Processes the given resource after the build. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: postpub.PostPublishedResource signatures: [resources.PostProcess RESOURCE] --- The `resources.PostProcess` function delays resource transformation steps until the build is complete, primarily for tasks like removing unused CSS rules. ## Example In this example, after the build is complete, Hugo will: 1. Purge unused CSS using the [PurgeCSS] plugin for [PostCSS] 1. Add vendor prefixes to CSS rules using the [Autoprefixer] plugin for PostCSS 1. [Minify] the CSS 1. [Fingerprint] the CSS Step 1 : Install [Node.js]. Step 2 : Install the required Node.js packages in the root of your project: ```sh {copy=true} npm i -D postcss postcss-cli autoprefixer @fullhuman/postcss-purgecss ``` Step 3 : Enable creation of the `hugo_stats.json` file when building the site. If you are only using this for the production build, consider placing it below [`config/production`]. {{< code-toggle file=hugo copy=true >}} [build.buildStats] enable = true {{< /code-toggle >}} See the [configure build] documentation for details and options. Step 4 : Create a PostCSS configuration file in the root of your project. ```js {file="postcss.config.js" copy=true} const autoprefixer = require('autoprefixer'); const purgeCSSPlugin = require('@fullhuman/postcss-purgecss').default; const purgecss = purgeCSSPlugin({ content: ['./hugo_stats.json'], defaultExtractor: content => { const els = JSON.parse(content).htmlElements; return [ ...(els.tags || []), ...(els.classes || []), ...(els.ids || []), ]; }, // https://purgecss.com/safelisting.html safelist: [] }); module.exports = { plugins: [ process.env.HUGO_ENVIRONMENT !== 'development' ? purgecss : null, autoprefixer, ] }; ``` > [!note] > If you are a Windows user, and the path to your project contains a space, you must place the PostCSS configuration within the package.json file. See [this example] and issue [#7333]. Step 5 : Place your CSS file within the `assets/css` directory. Step 6 : If the current environment is not `development`, process the resource with PostCSS: ```go-html-template {copy=true} {{ with resources.Get "css/main.css" }} {{ if hugo.IsDevelopment }} {{ else }} {{ with . | postCSS | minify | fingerprint | resources.PostProcess }} {{ end }} {{ end }} {{ end }} ``` ## Environment variables Hugo passes the environment variables below to PostCSS, allowing you to do something like: ```js process.env.HUGO_ENVIRONMENT !== 'development' ? purgecss : null, ``` PWD : The absolute path to the project working directory. HUGO_ENVIRONMENT : The current Hugo environment, set with the `--environment` command line flag. Default is `production` for `hugo` and `development` for `hugo server`. HUGO_PUBLISHDIR : The absolute path to the publish directory, typically `public`. This value points to a directory on disk, even when rendering to memory with the `--renderToMemory` command line flag. HUGO_FILE_X : Hugo automatically mounts the following files from your project's root directory under `assets/_jsconfig`: - `babel.config.js` - `postcss.config.js` - `tailwind.config.js` For each file, Hugo creates a corresponding environment variable named `HUGO_FILE_:filename:`, where `:filename:` is the uppercase version of the filename with periods replaced by underscores. This allows you to access these files within your JavaScript, for example: ```js let tailwindConfig = process.env.HUGO_FILE_TAILWIND_CONFIG_JS || './tailwind.config.js'; ``` ## Limitations Do not use `resources.PostProcess` when running Hugo's built-in development server. The examples above specifically prevent this by verifying that the current environment is not `development`. The `resources.PostProcess` function only works within templates that produce HTML files. You cannot manipulate the values returned from the resource's methods. For example, the `strings.ToUpper` function in this example will not work as expected: ```go-html-template {{ $css := resources.Get "css/main.css" }} {{ $css = $css | css.PostCSS | minify | fingerprint | resources.PostProcess }} {{ $css.RelPermalink | strings.ToUpper }} ``` [#7333]: https://github.com/gohugoio/hugo/issues/7333 [`config/production`]: /configuration/introduction/#configuration-directory [Autoprefixer]: https://github.com/postcss/autoprefixer [configure build]: /configuration/build/ [Fingerprint]: /functions/resources/fingerprint/ [Minify]: /functions/resources/minify/ [Node.js]: https://nodejs.org/en [PostCSS]: https://postcss.org/ [PurgeCSS]: https://github.com/FullHuman/purgecss [this example]: https://github.com/postcss/postcss-load-config#packagejson gohugoio-hugo-6abdaca/docs/content/en/functions/resources/ToCSS.md000066400000000000000000000006311507671574500254410ustar00rootroot00000000000000--- title: resources.ToCSS description: Transpiles Sass to CSS. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: resource.Resource signatures: ['resources.ToCSS [OPTIONS] RESOURCE'] expiryDate: 2026-06-24 # deprecated 2024-06-24 in v0.128.0 --- {{< deprecated-in 0.128.0 >}} Use [`css.Sass`] instead. [`css.Sass`]: /functions/css/sass/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/functions/resources/_index.md000066400000000000000000000002141507671574500257510ustar00rootroot00000000000000--- title: Resource functions linkTitle: resources description: Use these functions to work with resources. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/safe/000077500000000000000000000000001507671574500230705ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/safe/CSS.md000066400000000000000000000027051507671574500240460ustar00rootroot00000000000000--- title: safe.CSS description: Declares the given string as a safe CSS string. categories: [] keywords: [] params: functions_and_methods: aliases: [safeCSS] returnType: template.CSS signatures: [safe.CSS INPUT] aliases: [/functions/safecss] --- ## Introduction {{% include "/_common/functions/go-html-template-package.md" %}} ## Usage Use the `safe.CSS` function to encapsulate known safe content that matches any of: 1. The CSS3 stylesheet production, such as `p { color: purple }`. 1. The CSS3 rule production, such as `a[href=~"https:"].foo#bar`. 1. CSS3 declaration productions, such as `color: red; margin: 2px`. 1. The CSS3 value production, such as `rgba(0, 0, 255, 127)`. Use of this type presents a security risk: the encapsulated content should come from a trusted source, as it will be included verbatim in the template output. See the [Go documentation] for details. ## Example Without a safe declaration: ```go-html-template {{ $style := "color: red;" }}

      foo

      ``` Hugo renders the above to: ```html

      foo

      ``` > [!note] > `ZgotmplZ` is a special value that indicates that unsafe content reached a CSS or URL context at runtime. To declare the string as safe: ```go-html-template {{ $style := "color: red;" }}

      foo

      ``` Hugo renders the above to: ```html

      foo

      ``` [Go documentation]: https://pkg.go.dev/html/template#CSS gohugoio-hugo-6abdaca/docs/content/en/functions/safe/HTML.md000066400000000000000000000022061507671574500241560ustar00rootroot00000000000000--- title: safe.HTML description: Declares the given string as a safeHTML string. categories: [] keywords: [] params: functions_and_methods: aliases: [safeHTML] returnType: template.HTML signatures: [safe.HTML INPUT] aliases: [/functions/safehtml] --- ## Introduction {{% include "/_common/functions/go-html-template-package.md" %}} ## Usage Use the `safe.HTML` function to encapsulate a known safe HTML document fragment. It should not be used for HTML from a third-party, or HTML with unclosed tags or comments. Use of this type presents a security risk: the encapsulated content should come from a trusted source, as it will be included verbatim in the template output. See the [Go documentation] for details. [Go documentation]: https://pkg.go.dev/html/template#HTML ## Example Without a safe declaration: ```go-html-template {{ $html := "emphasized" }} {{ $html }} ``` Hugo renders the above to: ```html <em>emphasized</em> ``` To declare the string as safe: ```go-html-template {{ $html := "emphasized" }} {{ $html | safeHTML }} ``` Hugo renders the above to: ```html emphasized ``` gohugoio-hugo-6abdaca/docs/content/en/functions/safe/HTMLAttr.md000066400000000000000000000027571507671574500250240ustar00rootroot00000000000000--- title: safe.HTMLAttr description: Declares the given key-value pair as a safe HTML attribute. categories: [] keywords: [] params: functions_and_methods: aliases: [safeHTMLAttr] returnType: template.HTMLAttr signatures: [safe.HTMLAttr INPUT] aliases: [/functions/safehtmlattr] --- ## Introduction {{% include "/_common/functions/go-html-template-package.md" %}} ## Usage Use the `safe.HTMLAttr` function to encapsulate an HTML attribute from a trusted source. Use of this type presents a security risk: the encapsulated content should come from a trusted source, as it will be included verbatim in the template output. See the [Go documentation] for details. [Go documentation]: https://pkg.go.dev/html/template#HTMLAttr ## Example Without a safe declaration: ```go-html-template {{ with .Date }} {{ $humanDate := time.Format "2 Jan 2006" . }} {{ $machineDate := time.Format "2006-01-02T15:04:05-07:00" . }} {{ end }} ``` Hugo renders the above to: ```html ``` To declare the key-value pair as safe: ```go-html-template {{ with .Date }} {{ $humanDate := time.Format "2 Jan 2006" . }} {{ $machineDate := time.Format "2006-01-02T15:04:05-07:00" . }} {{ end }} ``` Hugo renders the above to: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/functions/safe/JS.md000066400000000000000000000033411507671574500237270ustar00rootroot00000000000000--- title: safe.JS description: Declares the given string as a safe JavaScript expression. categories: [] keywords: [] params: functions_and_methods: aliases: [safeJS] returnType: template.JS signatures: [safe.JS INPUT] aliases: [/functions/safejs] --- ## Introduction {{% include "/_common/functions/go-html-template-package.md" %}} ## Usage Use the `safe.JS` function to encapsulate a known safe EcmaScript5 Expression. Template authors are responsible for ensuring that typed expressions do not break the intended precedence and that there is no statement/expression ambiguity as when passing an expression like `{ foo: bar() }\n['foo']()`, which is both a valid Expression and a valid Program with a very different meaning. Use of this type presents a security risk: the encapsulated content should come from a trusted source, as it will be included verbatim in the template output. Using the `safe.JS` function to include valid but untrusted JSON is not safe. A safe alternative is to parse the JSON with the [`transform.Unmarshal`] function and then pass the resultant object into the template, where it will be converted to sanitized JSON when presented in a JavaScript context. [`transform.Unmarshal`]: /functions/transform/unmarshal/ See the [Go documentation] for details. [Go documentation]: https://pkg.go.dev/html/template#JS ## Example Without a safe declaration: ```go-html-template {{ $js := "x + y" }} ``` Hugo renders the above to: ```html ``` To declare the string as safe: ```go-html-template {{ $js := "x + y" }} ``` Hugo renders the above to: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/functions/safe/JSStr.md000066400000000000000000000024071507671574500244220ustar00rootroot00000000000000--- title: safe.JSStr description: Declares the given string as a safe JavaScript string. categories: [] keywords: [] params: functions_and_methods: aliases: [safeJSStr] returnType: template.JSStr signatures: [safe.JSStr INPUT] aliases: [/functions/safejsstr] --- ## Introduction {{% include "/_common/functions/go-html-template-package.md" %}} ## Usage Use the `safe.JSStr` function to encapsulate a sequence of characters meant to be embedded between quotes in a JavaScript expression. Use of this type presents a security risk: the encapsulated content should come from a trusted source, as it will be included verbatim in the template output. See the [Go documentation] for details. [Go documentation]: https://pkg.go.dev/html/template#JSStr ## Example Without a safe declaration: ```go-html-template {{ $title := "Lilo & Stitch" }} ``` Hugo renders the above to: ```html ``` To declare the string as safe: ```go-html-template {{ $title := "Lilo & Stitch" }} ``` Hugo renders the above to: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/functions/safe/URL.md000066400000000000000000000025171507671574500240610ustar00rootroot00000000000000--- title: safe.URL description: Declares the given string as a safe URL or URL substring. categories: [] keywords: [] params: functions_and_methods: aliases: [safeURL] returnType: template.URL signatures: [safe.URL INPUT] aliases: [/functions/safeurl] --- ## Introduction {{% include "/_common/functions/go-html-template-package.md" %}} ## Usage Use the `safe.URL` function to encapsulate a known safe URL or URL substring. Schemes other than the following are considered unsafe: - `http:` - `https:` - `mailto:` Use of this type presents a security risk: the encapsulated content should come from a trusted source, as it will be included verbatim in the template output. See the [Go documentation] for details. ## Example Without a safe declaration: ```go-html-template {{ $href := "irc://irc.freenode.net/#golang" }} IRC ``` Hugo renders the above to: ```html IRC ``` > [!note] > `ZgotmplZ` is a special value that indicates that unsafe content reached a CSS or URL context at runtime. To declare the string as safe: ```go-html-template {{ $href := "irc://irc.freenode.net/#golang" }} IRC ``` Hugo renders the above to: ```html IRC ``` [Go documentation]: https://pkg.go.dev/html/template#URL gohugoio-hugo-6abdaca/docs/content/en/functions/safe/_index.md000066400000000000000000000002641507671574500246620ustar00rootroot00000000000000--- title: Safe functions linkTitle: safe description: Use these functions to declare a value as safe in the context of Go's html/template package. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/strings/000077500000000000000000000000001507671574500236435ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Chomp.md000066400000000000000000000010371507671574500252340ustar00rootroot00000000000000--- title: strings.Chomp description: Returns the given string, removing all trailing newline characters and carriage returns. categories: [] keywords: [] params: functions_and_methods: aliases: [chomp] returnType: any signatures: [strings.Chomp STRING] aliases: [/functions/chomp] --- If the argument is of type `template.HTML`, returns `template.HTML`, else returns a `string`. ```go-html-template {{ chomp "foo\n" }} → foo {{ chomp "foo\n\n" }} → foo {{ chomp "foo\r\n" }} → foo {{ chomp "foo\r\n\r\n" }} → foo ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Contains.md000066400000000000000000000007221507671574500257440ustar00rootroot00000000000000--- title: strings.Contains description: Reports whether the given string contains the given substring. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [strings.Contains STRING SUBSTRING] aliases: [/functions/strings.contains] --- ```go-html-template {{ strings.Contains "Hugo" "go" }} → true ``` The check is case sensitive: ```go-html-template {{ strings.Contains "Hugo" "Go" }} → false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/ContainsAny.md000066400000000000000000000007521507671574500264170ustar00rootroot00000000000000--- title: strings.ContainsAny description: Reports whether the given string contains any character within the given set. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [strings.ContainsAny STRING SET] aliases: [/functions/strings.containsany] --- ```go-html-template {{ strings.ContainsAny "Hugo" "gm" }} → true ``` The check is case sensitive: ```go-html-template {{ strings.ContainsAny "Hugo" "Gm" }} → false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/ContainsNonSpace.md000066400000000000000000000012711507671574500273730ustar00rootroot00000000000000--- title: strings.ContainsNonSpace description: Reports whether the given string contains any non-space characters as defined by Unicode. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [strings.ContainsNonSpace STRING] aliases: [/functions/strings.containsnonspace] --- Whitespace characters include `\t`, `\n`, `\v`, `\f`, `\r`, and characters in the [Unicode Space Separator] category. [Unicode Space Separator]: https://www.compart.com/en/unicode/category/Zs ```go-html-template {{ strings.ContainsNonSpace "\n" }} → false {{ strings.ContainsNonSpace " " }} → false {{ strings.ContainsNonSpace "\n abc" }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Count.md000066400000000000000000000011551507671574500252570ustar00rootroot00000000000000--- title: strings.Count description: Returns the number of non-overlapping instances of the given substring within the given string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: int signatures: [strings.Count SUBSTR STRING] aliases: [/functions/strings.count] --- If `SUBSTR` is an empty string, this function returns 1 plus the number of Unicode code points in `STRING`. ```go-html-template {{ "aaabaab" | strings.Count "a" }} → 5 {{ "aaabaab" | strings.Count "aa" }} → 2 {{ "aaabaab" | strings.Count "aaa" }} → 1 {{ "aaabaab" | strings.Count "" }} → 8 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/CountRunes.md000066400000000000000000000010611507671574500262700ustar00rootroot00000000000000--- title: strings.CountRunes description: Returns the number of runes in the given string excluding whitespace. categories: [] keywords: [] params: functions_and_methods: aliases: [countrunes] returnType: int signatures: [strings.CountRunes INPUT] aliases: [/functions/countrunes] --- In contrast with the [`strings.RuneCount`] function, which counts every rune in a string, `strings.CountRunes` excludes whitespace. ```go-html-template {{ "Hello, 世界" | strings.CountRunes }} → 8 ``` [`strings.RuneCount`]: /functions/strings/runecount/ gohugoio-hugo-6abdaca/docs/content/en/functions/strings/CountWords.md000066400000000000000000000005541507671574500263000ustar00rootroot00000000000000--- title: strings.CountWords description: Returns the number of words in the given string. categories: [] keywords: [] params: functions_and_methods: aliases: [countwords] returnType: int signatures: [strings.CountWords INPUT] aliases: [/functions/countwords] --- ```go-html-template {{ "Hugo is a static site generator." | countwords }} → 6 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Diff/000077500000000000000000000000001507671574500245135ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Diff/diff-screen-capture.png000066400000000000000000000161721507671574500310560ustar00rootroot00000000000000PNG  IHDRp|sBITOPLTE(*:Bq8}G]+;.pPeB;j;(*Gε7d8RT뾂HJMDt\]_8q@B{(6S5}q*6뽉p_2t7Q8wpGOџ<3Bib(=;]F@(=|DPBWevPT;;P{wMxGR0n(0_JC(^ZSNLIʉIkB=6MKIBBpʪ|B+^M|=;NtcP8I.]+k(6j];(0vF:pGLG|ʈbHHʄGbJA;9(0:젠206vUѱvcSHc|OPS.J|9W8P^5]vw|k28]2;I{KZ7>ep;LGPT:iSNkCR={(Pޱ|ޥ(7I}RJ.7JHO.w(QRcGBw7xם_U|]:HoȃO=;Opbcj0~ZѱATo|WAI,7vWGןH]pę+kT)~gHʊY/pB:LipMcq4=FnPt>@\=|(0jpPkeKFBx:PS;*6Kv(*_SSoMkh pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx \TU&bcj gfJd7#TPyY+ |à)1J @M43[ZZBzrM؛9cιs^Ms3s$Ȳ{ 7A6At[Fv+HYXm@LM伀&!       4^nH+~@`,-z,_[r ؓ$QRl,n:ȭ*e%_|B$Tp^oMdn~4Z\ OpOw-hw:l9]a1lwr39fu:((U^Q:KŐI-ZA^ F^%wᤗ}I5A޹S;?,EM mszHܤBKWP9)ۚ9BMrfxNZ6,lBeL n'eτK+X~J>ya˟Wv4'9&%TkiK(6%O:L `{( HL)yaC`5Cñ@Vs`B h&˭(%OQœI>cm}ߣAh`ۢE8!]z#c-QOyRԞKV8d2x,?3A0KSARlo6$\47d|J d#8g&u6ǔw\?ɏ#-E@ 2 STeL,dg= WiIY*҂ȴA&d#0!      |glk7iCYkiraC ArQ殠c^1[/..cVENQ%̵k8X&7hTՏN v͵W?)i&E\]^pi 4bJmBׂ^]BNQi>TpHKҨp«N8bX x4KMf-@LY*rc_f_b.q1t6 6¬]'Aʅ)b} p     ?^y}V`i9얞OFK55X9+0C 6]΂+g ^ti]$-73@2gRlFg Ho?sIEX-~M8pD7qQnC/;B5~ėi^8e㣉ӕ %Υiw ɘF+0GnQx=W^0f&\<*M|p= pw}^ )Y:ƌd2L8C务! ~P6–i/wiF8 ]V<2hn9p03ጕ ] )P<}˸ EL+4"܉I޴dH95Ίuo~Skό|yG  A)-X{9DգC 0h3=U1i_&aW@c߬<BZ>A}N _+6pbB.ܤ:_l4)S?ۑC"|W Zlԅ;3uNd㢳=(cSt.(" UUMTc' `B s#Vgk"kAd$ aΏd-h(IS*5{yqYu%a4UPˮtqĉQϒCЊz)SF}sZ|^ ½J`,")LrXlw?Yҗ\QݟYO!M&jgtbN^f+b>:z>NᤕHL)}G3Ѯp+TF9碥ܲ"iɌp¦{ eՀ-yʝaoKpW,>-d\ 0134|0ݷ[BPaBzwb$NhR\C[Yr]f#Gd UoBeҥʅK4tc;5ФSX>pbr$Nx=]#CpWHZAS%)Aэp T30)T$ V },aSH eHڿptQJNkc8RGOTa gk.>t&_0$s%iDƸMtul`ʁ/-Z-)$Rf=4 Ե0ʄ%̽ *0$_!+ 62<,u#.{i*2Kv$RM 2.3lp HnDe̪HZff!. t 7+3M+ݑ}z i2E%`P DJKp&f.AYM%5:p6|N0n~µlJSuP pC;uÄ&p3:py-<dL <;Ιrz 1y "p!   c墨f'KxCO\ /ZR+;Vу2{ׯq5 u?_;.~cޫv 7F|kb\sΛ)\R3K PNom6 Ĝ U`#vnps۹kiAF wZ|!+_Eg"Gee=hbEg̈hĶ?rppq=kp7^O̹0N8 -KOA-{J7RGLFvD8"C6}N.2es A!F_"_6.rДu1*%~k/p "Dכ(peo?-Ń"}tRRDrZL7)"9P]@R9VxIY6J GJc߉ɫ`eq0R*QOW_p1D8=#\kP,U}a״iRGpN|T:6xmSH}'O/ҍDHS rtnYL"FHl#!@k~v-k6'lʺR*!g5sE^"?H^.V YѝWG4XIb|<RZGH3)aԁrH?(9Δ*8 "G(6«_:ٔxcF4q70dٲPBAIMcn4O,dZ2‰V 0}kkkŔZNCn.?wRAiZŴFQSez%{2v.;A OD8*@ps?!B-3+5[ea^u2Q:TдF' ؋Z .eMI>bٕ12^1\V2{ći(xG*1$1 AQp}fjlp^YY'~;6+.`;6(ڛ(̲@EŸQQ82/3諔Y";K$יY*-RM;a\̃Ybge.cqM-#OtJ%{5 uu@iV,RfW5)եkNpne+A6é3Bf.c{mNTmD.!ocV88hAÍ+TϦMuK2[W.Zx=icxT}M{ i*Ѝyp%@l+z/=pµ(p        Q @nҖ8/M@o 28]gGnA ,3S}5>GoIENDB`gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Diff/index.md000066400000000000000000000014041507671574500261430ustar00rootroot00000000000000--- title: strings.Diff description: Returns an anchored diff of the two texts OLD and NEW in the unified diff format. If OLD and NEW are identical, returns an empty string. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [strings.Diff OLDNAME OLD NEWNAME NEW] --- {{< new-in 0.125.0 />}} Use `strings.Diff` to compare two strings and render a highlighted diff: ```go-html-template {{ $want := `

      The product of 6 and 7 is 42.

      The product of 7 and 6 is 42.

      `}} {{ $got := `

      The product of 6 and 7 is 42.

      The product of 7 and 6 is 13.

      `}} {{ $diff := strings.Diff "want" $want "got" $got }} {{ transform.Highlight $diff "diff" }} ``` Rendered: ![screen capture](diff-screen-capture.png) gohugoio-hugo-6abdaca/docs/content/en/functions/strings/FindRESubmatch.md000066400000000000000000000041311507671574500267620ustar00rootroot00000000000000--- title: strings.FindRESubmatch description: Returns a slice of all successive matches of the regular expression. Each element is a slice of strings holding the text of the leftmost match of the regular expression and the matches, if any, of its subexpressions. categories: [] keywords: [] params: functions_and_methods: aliases: [findRESubmatch] returnType: '[][]string' signatures: ['strings.FindRESubmatch PATTERN INPUT [LIMIT]'] aliases: [/functions/findresubmatch] --- By default, `findRESubmatch` finds all matches. You can limit the number of matches with an optional LIMIT argument. A return value of nil indicates no match. {{% include "/_common/functions/regular-expressions.md" %}} ## Demonstrative examples ```go-html-template {{ findRESubmatch `a(x*)b` "-ab-" }} → [["ab" ""]] {{ findRESubmatch `a(x*)b` "-axxb-" }} → [["axxb" "xx"]] {{ findRESubmatch `a(x*)b` "-ab-axb-" }} → [["ab" ""] ["axb" "x"]] {{ findRESubmatch `a(x*)b` "-axxb-ab-" }} → [["axxb" "xx"] ["ab" ""]] {{ findRESubmatch `a(x*)b` "-axxb-ab-" 1 }} → [["axxb" "xx"]] ``` ## Practical example This Markdown: ```text - [Example](https://example.org) - [Hugo](https://gohugo.io) ``` Produces this HTML: ```html ``` To match the anchor elements, capturing the link destination and text: ```go-html-template {{ $regex := `(.+?)` }} {{ $matches := findRESubmatch $regex .Content }} ``` Viewed as JSON, the data structure of `$matches` in the code above is: ```json [ [ "Example", "https://example.org", "Example" ], [ "Hugo", "https://gohugo.io", "Hugo" ] ] ``` To render the `href` attributes: ```go-html-template {{ range $matches }} {{ index . 1 }} {{ end }} ``` Result: ```text https://example.org https://gohugo.io ``` > [!note] > You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin. gohugoio-hugo-6abdaca/docs/content/en/functions/strings/FindRe.md000066400000000000000000000017751507671574500253460ustar00rootroot00000000000000--- title: strings.FindRE description: Returns a slice of strings that match the regular expression. categories: [] keywords: [] params: functions_and_methods: aliases: [findRE] returnType: '[]string' signatures: ['strings.FindRE PATTERN INPUT [LIMIT]'] aliases: [/functions/findre] --- By default, `findRE` finds all matches. You can limit the number of matches with an optional LIMIT argument. {{% include "/_common/functions/regular-expressions.md" %}} This example returns a slice of all second level headings (`h2` elements) within the rendered `.Content`: ```go-html-template {{ findRE `(?s).*?` .Content }} ``` The `s` flag causes `.` to match `\n` as well, allowing us to find an `h2` element that contains newlines. To limit the number of matches to one: ```go-html-template {{ findRE `(?s).*?` .Content 1 }} ``` > [!note] > You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin. gohugoio-hugo-6abdaca/docs/content/en/functions/strings/FirstUpper.md000066400000000000000000000005441507671574500262730ustar00rootroot00000000000000--- title: strings.FirstUpper description: Returns the given string, capitalizing the first character. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [strings.FirstUpper STRING] aliases: [/functions/strings.firstupper] --- ```go-html-template {{ strings.FirstUpper "foo" }} → Foo ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/HasPrefix.md000066400000000000000000000006051507671574500260570ustar00rootroot00000000000000--- title: strings.HasPrefix description: Reports whether the given string begins with the given prefix. categories: [] keywords: [] params: functions_and_methods: aliases: [hasPrefix] returnType: bool signatures: [strings.HasPrefix STRING PREFIX] aliases: [/functions/hasprefix,/functions/strings.hasprefix] --- ```go-html-template {{ hasPrefix "Hugo" "Hu" }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/HasSuffix.md000066400000000000000000000006031507671574500260640ustar00rootroot00000000000000--- title: strings.HasSuffix description: Reports whether the given string ends with the given suffix. categories: [] keywords: [] params: functions_and_methods: aliases: [hasSuffix] returnType: bool signatures: [strings.HasSuffix STRING SUFFIX] aliases: [/functions/hassuffix,/functions/strings/hassuffix] --- ```go-html-template {{ hasSuffix "Hugo" "go" }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Repeat.md000066400000000000000000000005531507671574500254100ustar00rootroot00000000000000--- title: strings.Repeat description: Returns a new string consisting of zero or more copies of another string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [strings.Repeat COUNT INPUT] aliases: [/functions/strings.repeat] --- ```go-html-template {{ strings.Repeat 3 "yo" }} → yoyoyo ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Replace.md000066400000000000000000000010561507671574500255420ustar00rootroot00000000000000--- title: strings.Replace description: Returns a copy of INPUT, replacing all occurrences of OLD with NEW. categories: [] keywords: [] params: functions_and_methods: aliases: [replace] returnType: string signatures: ['strings.Replace INPUT OLD NEW [LIMIT]'] aliases: [/functions/replace] --- ```go-html-template {{ $s := "Batman and Robin" }} {{ replace $s "Robin" "Catwoman" }} → Batman and Catwoman ``` Limit the number of replacements using the `LIMIT` argument: ```go-html-template {{ replace "aabbaabb" "a" "z" 2 }} → zzbbaabb ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/ReplaceRE.md000066400000000000000000000021121507671574500257630ustar00rootroot00000000000000--- title: strings.ReplaceRE description: Returns a copy of INPUT, replacing all occurrences of a regular expression with a replacement pattern. categories: [] keywords: [] params: functions_and_methods: aliases: [replaceRE] returnType: string signatures: ['strings.ReplaceRE PATTERN REPLACEMENT INPUT [LIMIT]'] aliases: [/functions/replacere] --- {{% include "/_common/functions/regular-expressions.md" %}} ```go-html-template {{ $s := "a-b--c---d" }} {{ replaceRE `(-{2,})` "-" $s }} → a-b-c-d ``` Limit the number of replacements using the LIMIT argument: ```go-html-template {{ $s := "a-b--c---d" }} {{ replaceRE `(-{2,})` "-" $s 1 }} → a-b-c---d ``` Use `$1`, `$2`, etc. within the replacement string to insert the content of each capturing group within the regular expression: ```go-html-template {{ $s := "http://gohugo.io/docs" }} {{ replaceRE "^https?://([^/]+).*" "$1" $s }} → gohugo.io ``` > [!note] > You can write and test your regular expression using [regex101.com]. Be sure to select the Go flavor before you begin. [regex101.com]: https://regex101.com/ gohugoio-hugo-6abdaca/docs/content/en/functions/strings/RuneCount.md000066400000000000000000000010301507671574500261010ustar00rootroot00000000000000--- title: strings.RuneCount description: Returns the number of runes in the given string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: int signatures: [strings.RuneCount INPUT] aliases: [/functions/strings.runecount] --- In contrast with the [`strings.CountRunes`] function, which excludes whitespace, `strings.RuneCount` counts every rune in a string. ```go-html-template {{ "Hello, 世界" | strings.RuneCount }} → 9 ``` [`strings.CountRunes`]: /functions/strings/countrunes/ gohugoio-hugo-6abdaca/docs/content/en/functions/strings/SliceString.md000066400000000000000000000017541507671574500264220ustar00rootroot00000000000000--- title: strings.SliceString description: Returns a substring of the given string, beginning with the start position and ending before the end position. categories: [] keywords: [] params: functions_and_methods: aliases: [slicestr] returnType: string signatures: ['strings.SliceString STRING [START] [END]'] aliases: [/functions/slicestr] --- The START and END positions are zero-based, where `0` represents the first character of the string. If START is not specified, the substring will begin at position `0`. If END is not specified, the substring will end after the last character. ```go-html-template {{ slicestr "BatMan" }} → BatMan {{ slicestr "BatMan" 3 }} → Man {{ slicestr "BatMan" 0 3 }} → Bat ``` The START and END arguments represent the endpoints of a half-open [interval](g), a concept that may be difficult to grasp when first encountered. You may find that the [`strings.Substr`] function is easier to understand. [`strings.Substr`]: /functions/strings/substr/ gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Split.md000066400000000000000000000012651507671574500252640ustar00rootroot00000000000000--- title: strings.Split description: Returns a slice of strings by splitting the given string by a delimiter. categories: [] keywords: [] params: functions_and_methods: aliases: [split] returnType: '[]string' signatures: [strings.Split STRING DELIM] aliases: [/functions/split] --- Examples: ```go-html-template {{ split "tag1,tag2,tag3" "," }} → ["tag1", "tag2", "tag3"] {{ split "abc" "" }} → ["a", "b", "c"] ``` > [!note] > The `strings.Split` function essentially does the opposite of the [`collections.Delimit`] function. While `split` creates a slice from a string, `delimit` creates a string from a slice. [`collections.Delimit`]: /functions/collections/delimit/ gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Substr.md000066400000000000000000000023111507671574500254440ustar00rootroot00000000000000--- title: strings.Substr description: Returns a substring of the given string, beginning with the start position and ending after the given length. categories: [] keywords: [] params: functions_and_methods: aliases: [substr] returnType: string signatures: ['strings.Substr STRING [START] [LENGTH]'] aliases: [/functions/substr] --- The start position is zero-based, where `0` represents the first character of the string. If START is not specified, the substring will begin at position `0`. Specify a negative START position to extract characters from the end of the string. If LENGTH is not specified, the substring will include all characters from the START position to the end of the string. If negative, that number of characters will be omitted from the end of string. ```go-html-template {{ substr "abcdef" 0 }} → abcdef {{ substr "abcdef" 1 }} → bcdef {{ substr "abcdef" 0 1 }} → a {{ substr "abcdef" 1 1 }} → b {{ substr "abcdef" 0 -1 }} → abcde {{ substr "abcdef" 1 -1 }} → bcde {{ substr "abcdef" -1 }} → f {{ substr "abcdef" -2 }} → ef {{ substr "abcdef" -1 1 }} → f {{ substr "abcdef" -2 1 }} → e {{ substr "abcdef" -3 -1 }} → de {{ substr "abcdef" -3 -2 }} → d ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Title.md000066400000000000000000000020371507671574500252500ustar00rootroot00000000000000--- title: strings.Title description: Returns the given string, converting it to title case. categories: [] keywords: [] params: functions_and_methods: aliases: [title] returnType: string signatures: [strings.Title STRING] aliases: [/functions/title] --- ```go-html-template {{ title "table of contents (TOC)" }} → Table of Contents (TOC) ``` By default, Hugo follows the capitalization rules published in the [Associated Press Stylebook]. Change your [site configuration] if you would prefer to: - Follow the capitalization rules published in the [Chicago Manual of Style] - Capitalize the first letter of every word - Capitalize the first letter of the first word - Disable the effects of the `title` function The last option is useful if your theme uses the `title` function, and you would prefer to manually capitalize strings as needed. [Associated Press Stylebook]: https://www.apstylebook.com/ [Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html [site configuration]: /configuration/all/#title-case-style gohugoio-hugo-6abdaca/docs/content/en/functions/strings/ToLower.md000066400000000000000000000005241507671574500255610ustar00rootroot00000000000000--- title: strings.ToLower description: Returns the given string, converting all characters to lowercase. categories: [] keywords: [] params: functions_and_methods: aliases: [lower] returnType: string signatures: [strings.ToLower INPUT] aliases: [/functions/lower] --- ```go-html-template {{ lower "BatMan" }} → batman ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/ToUpper.md000066400000000000000000000005241507671574500255640ustar00rootroot00000000000000--- title: strings.ToUpper description: Returns the given string, converting all characters to uppercase. categories: [] keywords: [] params: functions_and_methods: aliases: [upper] returnType: string signatures: [strings.ToUpper INPUT] aliases: [/functions/upper] --- ```go-html-template {{ upper "BatMan" }} → BATMAN ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Trim.md000066400000000000000000000005571507671574500251070ustar00rootroot00000000000000--- title: strings.Trim description: Returns the given string, removing leading and trailing characters specified in the cutset. categories: [] keywords: [] params: functions_and_methods: aliases: [trim] returnType: string signatures: [strings.Trim INPUT CUTSET] aliases: [/functions/trim] --- ```go-html-template {{ trim "++foo--" "+-" }} → foo ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/TrimLeft.md000066400000000000000000000010751507671574500257160ustar00rootroot00000000000000--- title: strings.TrimLeft description: Returns the given string, removing leading characters specified in the cutset. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [strings.TrimLeft CUTSET STRING] aliases: [/functions/strings.trimleft] --- ```go-html-template {{ strings.TrimLeft "a" "abba" }} → bba ``` The `strings.TrimLeft` function converts the arguments to strings if possible: ```go-html-template {{ strings.TrimLeft 21 12345 }} → 345 (string) {{ strings.TrimLeft "rt" true }} → ue ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/TrimPrefix.md000066400000000000000000000007531507671574500262630ustar00rootroot00000000000000--- title: strings.TrimPrefix description: Returns the given string, removing the prefix from the beginning of the string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [strings.TrimPrefix PREFIX STRING] aliases: [/functions/strings.trimprefix] --- ```go-html-template {{ strings.TrimPrefix "a" "aabbaa" }} → abbaa {{ strings.TrimPrefix "aa" "aabbaa" }} → bbaa {{ strings.TrimPrefix "aaa" "aabbaa" }} → aabbaa ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/TrimRight.md000066400000000000000000000011051507671574500260730ustar00rootroot00000000000000--- title: strings.TrimRight description: Returns the given string, removing trailing characters specified in the cutset. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [strings.TrimRight CUTSET STRING] aliases: [/functions/strings.trimright] --- ```go-html-template {{ strings.TrimRight "a" "abba" }} → abb ``` The `strings.TrimRight` function converts the arguments to strings if possible: ```go-html-template {{ strings.TrimRight 54 12345 }} → 123 (string) {{ strings.TrimRight "eu" true }} → tr ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/TrimSpace.md000066400000000000000000000010621507671574500260530ustar00rootroot00000000000000--- title: strings.TrimSpace description: Returns the given string, removing leading and trailing whitespace as defined by Unicode. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [strings.TrimSpace INPUT] --- {{< new-in 0.136.3 />}} Whitespace characters include `\t`, `\n`, `\v`, `\f`, `\r`, and characters in the [Unicode Space Separator] category. [Unicode Space Separator]: https://www.compart.com/en/unicode/category/Zs ```go-html-template {{ strings.TrimSpace "\n\r\t foo \n\r\t" }} → foo ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/TrimSuffix.md000066400000000000000000000007451507671574500262730ustar00rootroot00000000000000--- title: strings.TrimSuffix description: Returns the given string, removing the suffix from the end of the string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [strings.TrimSuffix SUFFIX STRING] aliases: [/functions/strings.trimsuffix] --- ```go-html-template {{ strings.TrimSuffix "a" "aabbaa" }} → aabba {{ strings.TrimSuffix "aa" "aabbaa" }} → aabb {{ strings.TrimSuffix "aaa" "aabbaa" }} → aabbaa ``` gohugoio-hugo-6abdaca/docs/content/en/functions/strings/Truncate.md000066400000000000000000000016151507671574500257550ustar00rootroot00000000000000--- title: strings.Truncate description: Returns the given string, truncating it to a maximum length without cutting words or leaving unclosed HTML tags. categories: [] keywords: [] params: functions_and_methods: aliases: [truncate] returnType: template.HTML signatures: ['strings.Truncate SIZE [ELLIPSIS] INPUT'] aliases: [/functions/truncate] --- Since Go templates are HTML-aware, `truncate` will intelligently handle normal strings vs HTML strings: ```go-html-template {{ "Keep my HTML" | safeHTML | truncate 10 }} → Keep my … ``` > [!note] > If you have a raw string that contains HTML tags you want to remain treated as HTML, you will need to convert the string to HTML using the [`safeHTML`]function before sending the value to `truncate`. Otherwise, the HTML tags will be escaped when passed through the `truncate` function. [`safeHTML`]: /functions/safe/html/ gohugoio-hugo-6abdaca/docs/content/en/functions/strings/_index.md000066400000000000000000000002061507671574500254310ustar00rootroot00000000000000--- title: String functions linkTitle: strings description: Use these functions to work with strings. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/templates/000077500000000000000000000000001507671574500241505ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/templates/Current.md000066400000000000000000000112031507671574500261110ustar00rootroot00000000000000--- title: templates.Current description: Returns information about the currently executing template. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: tpl.CurrentTemplateInfo signatures: [templates.Current] --- > [!note] > This function is experimental and subject to change. {{< new-in 0.146.0 />}} The `templates.Current` function provides introspection capabilities, allowing you to access details about the currently executing templates. This is useful for debugging complex template hierarchies and understanding the flow of execution during rendering. ## Methods Ancestors : (`tpl.CurrentTemplateInfos`) Returns a slice containing information about each template in the current execution chain, starting from the parent of the current template and going up towards the initial template called. It excludes any base template applied via `define` and `block`. You can chain the `Reverse` method to this result to get the slice in chronological execution order. Base : (`tpl.CurrentTemplateInfoCommonOps`) Returns an object representing the base template that was applied to the current template, if any. This may be `nil`. Filename : (`string`) Returns the absolute path of the current template. This will be empty for embedded templates. Name : (`string`) Returns the name of the current template. This is usually the path relative to the layouts directory. Parent : (`tpl.CurrentTemplateInfo`) Returns an object representing the parent of the current template, if any. This may be `nil`. ## Examples The examples below help visualize template execution and require a `debug` parameter set to `true` in your site configuration: {{< code-toggle file=hugo >}} [params] debug = true {{< /code-toggle >}} ### Boundaries To visually mark where a template begins and ends execution: ```go-html-template {file="layouts/page.html"} {{ define "main" }} {{ if site.Params.debug }}
      [entering {{ templates.Current.Filename }}]
      {{ end }}

      {{ .Title }}

      {{ .Content }} {{ if site.Params.debug }}
      [leaving {{ templates.Current.Filename }}]
      {{ end }} {{ end }} ``` ### Call stack To display the chain of templates that led to the current one, create a _partial_ template that iterates through its ancestors: ```go-html-template {file="layouts/_partials/template-call-stack.html" copy=true} {{ with templates.Current }}
      {{ range .Ancestors }} {{ .Filename }}
      {{ with .Base }} {{ .Filename }}
      {{ end }} {{ end }}
      {{ end }} ``` Then call the partial from any template: ```go-html-template {file="layouts/_partials/footer/copyright.html" copy=true} {{ if site.Params.debug }} {{ partial "template-call-stack.html" . }} {{ end }} ``` The rendered template stack would look something like this: ```text /home/user/project/layouts/_partials/footer/copyright.html /home/user/project/themes/foo/layouts/_partials/footer.html /home/user/project/layouts/page.html /home/user/project/themes/foo/layouts/baseof.html ``` To reverse the order of the entries, chain the `Reverse` method to the `Ancestors` method: ```go-html-template {file="layouts/_partials/template-call-stack.html" copy=true} {{ with templates.Current }}
      {{ range .Ancestors.Reverse }} {{ with .Base }} {{ .Filename }}
      {{ end }} {{ .Filename }}
      {{ end }}
      {{ end }} ``` ### VS Code To render links that, when clicked, will open the template in Microsoft Visual Studio Code, create a _partial_ template with anchor elements that use the `vscode` URI scheme: ```go-html-template {file="layouts/_partials/template-open-in-vs-code.html" copy=true} {{ with templates.Current.Parent }}
      {{ .Name }} {{ with .Base }} {{ .Name }} {{ end }}
      {{ end }} ``` Then call the partial from any template: ```go-html-template {file="layouts/page.html" copy=true} {{ define "main" }}

      {{ .Title }}

      {{ .Content }} {{ if site.Params.debug }} {{ partial "template-open-in-vs-code.html" . }} {{ end }} {{ end }} ``` Use the same approach to render the entire call stack as links: ```go-html-template {file="layouts/_partials/template-call-stack.html" copy=true} {{ with templates.Current }}
      {{ range .Ancestors }} {{ .Filename }}
      {{ with .Base }} {{ .Filename }}
      {{ end }} {{ end }}
      {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/functions/templates/Defer.md000066400000000000000000000072601507671574500255240ustar00rootroot00000000000000--- title: templates.Defer description: Defer execution of a template until after all sites and output formats have been rendered. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [templates.Defer OPTIONS] aliases: [/functions/templates.defer] --- {{< new-in 0.128.0 />}} > [!note] > This feature should only be used in the main template, typically `layouts/baseof.html`. Using it in _shortcode_, _partial_, or _render hook_ templates may lead to unpredictable results. For further details, please refer to [this issue]. [this issue]: https://github.com/gohugoio/hugo/issues/13492#issuecomment-2734700391 In some rare use cases, you may need to defer the execution of a template until after all sites and output formats have been rendered. One such example could be [TailwindCSS](/functions/css/tailwindcss/) using the output of [hugo_stats.json](/configuration/build/) to determine which classes and other HTML identifiers are being used in the final output: ```go-html-template {file="layouts/baseof.html" copy=true} ... {{ with (templates.Defer (dict "key" "global")) }} {{ partial "css.html" . }} {{ end }} ... ``` ```go-html-template {file="layouts/_partials/css.html" copy=true} {{ with resources.Get "css/main.css" }} {{ $opts := dict "minify" (not hugo.IsDevelopment) }} {{ with . | css.TailwindCSS $opts }} {{ if hugo.IsDevelopment }} {{ else }} {{ with . | fingerprint }} {{ end }} {{ end }} {{ end }} {{ end }} ``` > [!note] > This function only works in combination with the `with` keyword. > > Variables defined on the outside are not visible on the inside and vice versa. To pass in data, use the `data` [option](#options). For the above to work well when running the server (or `hugo -w`), you want to have a configuration similar to this: {{< code-toggle file=hugo >}} [build] [build.buildStats] enable = true [[build.cachebusters]] source = 'assets/notwatching/hugo_stats\.json' target = 'css' [[build.cachebusters]] source = '(postcss|tailwind)\.config\.js' target = 'css' [module] [[module.mounts]] source = 'assets' target = 'assets' [[module.mounts]] disableWatch = true source = 'hugo_stats.json' target = 'assets/notwatching/hugo_stats.json' {{< /code-toggle >}} ## Options The `templates.Defer` function takes a single argument, a map with the following optional keys: key (`string`) : The key to use for the deferred template. This will, combined with a hash of the template content, be used as a cache key. If this is not set, Hugo will execute the deferred template on every render. This is not what you want for shared resources like CSS and JavaScript. data (`map`) : Optional map to pass as data to the deferred template. This will be available in the deferred template as `.` or `$`. ```go-html-template Language Outside: {{ site.Language.Lang }} Page Outside: {{ .RelPermalink }} I18n Outside: {{ i18n "hello" }} {{ $data := (dict "page" . )}} {{ with (templates.Defer (dict "data" $data )) }} Language Inside: {{ site.Language.Lang }} Page Inside: {{ .page.RelPermalink }} I18n Inside: {{ i18n "hello" }} {{ end }} ``` The [output format](/configuration/output-formats/), [site](/methods/page/site/), and [language](/methods/site/language) will be the same, even if the execution is deferred. In the example above, this means that the `site.Language.Lang` and `.RelPermalink` will be the same on the inside and the outside of the deferred template. gohugoio-hugo-6abdaca/docs/content/en/functions/templates/Exists.md000066400000000000000000000015351507671574500257550ustar00rootroot00000000000000--- title: templates.Exists description: Reports whether a template file exists under the given path relative to the layouts directory. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [templates.Exists PATH] aliases: [/functions/templates.exists] --- A template file is any file within the `layouts` directory of either the project or any of its theme components. Use the `templates.Exists` function with dynamic template paths: ```go-html-template {{ $partialPath := printf "headers/%s.html" .Type }} {{ if templates.Exists ( printf "_partials/%s" $partialPath ) }} {{ partial $partialPath . }} {{ else }} {{ partial "headers/default.html" . }} {{ end }} ``` In the example above, if a "headers" partial does not exist for the given content type, Hugo falls back to a default template. gohugoio-hugo-6abdaca/docs/content/en/functions/templates/_index.md000066400000000000000000000002221507671574500257340ustar00rootroot00000000000000--- title: Template functions linkTitle: templates description: Use these functions to query the template system. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/time/000077500000000000000000000000001507671574500231105ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/time/AsTime.md000066400000000000000000000034031507671574500246140ustar00rootroot00000000000000--- title: time.AsTime description: Returns the given string representation of a date/time value as a time.Time value. categories: [] keywords: [] params: functions_and_methods: aliases: [time] returnType: time.Time signatures: ['time.AsTime INPUT [TIMEZONE]'] aliases: [/functions/time] --- ## Overview Hugo provides [functions] and [methods] to format, localize, parse, compare, and manipulate date/time values. Before you can do any of these with string representations of date/time values, you must first convert them to [`time.Time`] values using the `time.AsTime` function. ```go-html-template {{ $t := "2023-10-15T13:18:50-07:00" }} {{ time.AsTime $t }} → 2023-10-15 13:18:50 -0700 PDT (time.Time) ``` ## Parsable strings As shown above, the first argument must be a parsable string representation of a date/time value. For example: {{% include "/_common/parsable-date-time-strings.md" %}} To override the default time zone, set the [`timeZone`] in your site configuration or provide a second argument to the `time.AsTime` function. For example: ```go-html-template {{ time.AsTime "15 Oct 2023" "America/Los_Angeles" }} ``` The list of valid time zones may be system dependent, but should include `UTC`, `Local`, or any location in the [IANA Time Zone database]. The order of precedence for determining the time zone is: 1. The time zone offset in the date/time string 1. The time zone provided as the second argument to the `time.AsTime` function 1. The time zone specified in your site configuration 1. The `Etc/UTC` time zone [IANA Time Zone database]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones [`time.Time`]: https://pkg.go.dev/time#Time [`timeZone`]: /configuration/all/#timezone [functions]: /functions/time/ [methods]: /methods/time/ gohugoio-hugo-6abdaca/docs/content/en/functions/time/Duration.md000066400000000000000000000017131507671574500252210ustar00rootroot00000000000000--- title: time.Duration description: Returns a time.Duration value using the given time unit and number. categories: [] keywords: [] params: functions_and_methods: aliases: [duration] returnType: time.Duration signatures: [time.Duration TIME_UNIT NUMBER] aliases: [/functions/duration] --- The `time.Duration` function returns a [`time.Duration`] value that you can use with any of the `Duration` [methods]. This template: ```go-html-template {{ $duration := time.Duration "hour" 24 }} {{ printf "There are %.0f seconds in one day." $duration.Seconds }} ``` Is rendered to: ```text There are 86400 seconds in one day. ``` The time unit must be one of the following: Duration|Valid time units :--|:-- hours|`hour`, `h` minutes|`minute`, `m` seconds|`second`, `s` milliseconds|`millisecond`, `ms` microseconds|`microsecond`, `us`, `µs` nanoseconds|`nanosecond`, `ns` [`time.Duration`]: https://pkg.go.dev/time#Duration [methods]: /methods/duration/ gohugoio-hugo-6abdaca/docs/content/en/functions/time/Format.md000066400000000000000000000040651507671574500246670ustar00rootroot00000000000000--- title: time.Format description: Returns the given date/time as a formatted and localized string. categories: [] keywords: [] params: functions_and_methods: aliases: [dateFormat] returnType: string signatures: [time.Format LAYOUT INPUT] aliases: [/functions/dateformat] --- Use the `time.Format` function with `time.Time` values: ```go-html-template {{ $t := time.AsTime "2023-10-15T13:18:50-07:00" }} {{ time.Format "2 Jan 2006" $t }} → 15 Oct 2023 ``` Or use `time.Format` with a parsable string representation of a date/time value: ```go-html-template {{ $t := "15 Oct 2023" }} {{ time.Format "January 2, 2006" $t }} → October 15, 2023 ``` Examples of parsable string representations: {{% include "/_common/parsable-date-time-strings.md" %}} To override the default time zone, set the [`timeZone`] in your site configuration. The order of precedence for determining the time zone is: 1. The time zone offset in the date/time string 1. The time zone specified in your site configuration 1. The `Etc/UTC` time zone [`timeZone`]: /configuration/all/#timezone ## Layout string {{% include "/_common/time-layout-string.md" %}} ## Localization Use the `time.Format` function to localize `time.Time` values for the current language and region. {{% include "/_common/functions/locales.md" %}} Use the layout string as described above, or one of the tokens below. For example: ```go-html-template {{ .Date | time.Format ":date_medium" }} → Jan 27, 2023 ``` Localized to en-US: Token|Result :--|:-- `:date_full`|`Friday, January 27, 2023` `:date_long`|`January 27, 2023` `:date_medium`|`Jan 27, 2023` `:date_short`|`1/27/23` `:time_full`|`11:44:58 pm Pacific Standard Time` `:time_long`|`11:44:58 pm PST` `:time_medium`|`11:44:58 pm` `:time_short`|`11:44 pm` Localized to de-DE: Token|Result :--|:-- `:date_full`|`Freitag, 27. Januar 2023` `:date_long`|`27. Januar 2023` `:date_medium`|`27.01.2023` `:date_short`|`27.01.23` `:time_full`|`23:44:58 Nordamerikanische Westküsten-Normalzeit` `:time_long`|`23:44:58 PST` `:time_medium`|`23:44:58` `:time_short`|`23:44` gohugoio-hugo-6abdaca/docs/content/en/functions/time/In.md000066400000000000000000000021201507671574500237730ustar00rootroot00000000000000--- title: time.In description: Returns the given date/time as represented in the specified IANA time zone. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: time.Time signatures: [time.In TIMEZONE INPUT] --- {{< new-in 0.146.0 />}} The `time.In` function returns the given date/time as represented in the specified [IANA](g) time zone. - If the time zone is an empty string or `UTC`, the time is returned in [UTC](g). - If the time zone is `Local`, the time is returned in the system's local time zone. - Otherwise, the time zone must be a valid IANA [time zone name]. [time zone name]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List ```go-html-template {{ $layout := "2006-01-02T15:04:05-07:00" }} {{ $t := time.AsTime "2025-03-31T14:45:00-00:00" }} {{ $t | time.In "America/Denver" | time.Format $layout }} → 2025-03-31T08:45:00-06:00 {{ $t | time.In "Australia/Adelaide" | time.Format $layout }} → 2025-04-01T01:15:00+10:30 {{ $t | time.In "Europe/Oslo" | time.Format $layout }} → 2025-03-31T16:45:00+02:00 ``` gohugoio-hugo-6abdaca/docs/content/en/functions/time/Now.md000066400000000000000000000020421507671574500241730ustar00rootroot00000000000000--- title: time.Now description: Returns the current local time. categories: [] keywords: [] params: functions_and_methods: aliases: [now] returnType: time.Time signatures: [time.Now] aliases: [/functions/now] --- For example, when building a site on October 15, 2023 in the America/Los_Angeles time zone: ```go-html-template {{ time.Now }} ``` This produces a `time.Time` value, with a string representation such as: ```text 2023-10-15 12:59:28.337140706 -0700 PDT m=+0.041752605 ``` To format and [localize](g) the value, pass it through the [`time.Format`] function: ```go-html-template {{ time.Now | time.Format "Jan 2006" }} → Oct 2023 ``` The `time.Now` function returns a `time.Time` value, so you can chain any of the [time methods] to the resulting value. For example: ```go-html-template {{ time.Now.Year }} → 2023 (int) {{ time.Now.Weekday.String }} → Sunday {{ time.Now.Month.String }} → October {{ time.Now.Unix }} → 1697400955 (int64) ``` [`time.Format`]: /functions/time/format/ [time methods]: /methods/time/ gohugoio-hugo-6abdaca/docs/content/en/functions/time/ParseDuration.md000066400000000000000000000016711507671574500262170ustar00rootroot00000000000000--- title: time.ParseDuration description: Returns a time.Duration value by parsing the given duration string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: time.Duration signatures: [time.ParseDuration DURATION] aliases: [/functions/time.parseduration] --- The `time.ParseDuration` function returns a [`time.Duration`] value that you can use with any of the `Duration` [methods]. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as `300ms`, `-1.5h` or `2h45m`. Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`. This template: ```go-html-template {{ $duration := time.ParseDuration "24h" }} {{ printf "There are %.0f seconds in one day." $duration.Seconds }} ``` Is rendered to: ```text There are 86400 seconds in one day. ``` [`time.Duration`]: https://pkg.go.dev/time#Duration [methods]: /methods/duration/ gohugoio-hugo-6abdaca/docs/content/en/functions/time/_index.md000066400000000000000000000002051507671574500246750ustar00rootroot00000000000000--- title: Time functions linkTitle: time description: Use these functions to work with time values. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/transform/000077500000000000000000000000001507671574500241655ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/transform/CanHighlight.md000066400000000000000000000006141507671574500270410ustar00rootroot00000000000000--- title: transform.CanHighlight description: Reports whether the given code language is supported by the Chroma highlighter. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: bool signatures: [transform.CanHighlight LANGUAGE] --- ```go-html-template {{ transform.CanHighlight "go" }} → true {{ transform.CanHighlight "klingon" }} → false ``` gohugoio-hugo-6abdaca/docs/content/en/functions/transform/Emojify.md000066400000000000000000000014701507671574500261130ustar00rootroot00000000000000--- title: transform.Emojify description: Runs a string through the Emoji emoticons processor. categories: [] keywords: [] params: functions_and_methods: aliases: [emojify] returnType: template.HTML signatures: [transform.Emojify INPUT] aliases: [/functions/emojify] --- `emojify` runs a passed string through the Emoji emoticons processor. See the list of [emoji shortcodes] for available emoticons. The `emojify` function can be called in your templates but not directly in your content files by default. For emojis in content files, set [`enableEmoji`] to `true` in your site's configuration. Then you can write emoji shorthand directly into your content files; ```text I :heart: Hugo! ``` I :heart: Hugo! [`enableEmoji`]: /configuration/all/#enableemoji [emoji shortcodes]: /quick-reference/emojis/ gohugoio-hugo-6abdaca/docs/content/en/functions/transform/HTMLEscape.md000066400000000000000000000013361507671574500263770ustar00rootroot00000000000000--- title: transform.HTMLEscape description: Returns the given string, escaping special characters by replacing them with HTML entities. categories: [] keywords: [] params: functions_and_methods: aliases: [htmlEscape] returnType: string signatures: [transform.HTMLEscape INPUT] aliases: [/functions/htmlescape] --- The `transform.HTMLEscape` function escapes five special characters by replacing them with [HTML entities]: - `&` → `&` - `<` → `<` - `>` → `>` - `'` → `'` - `"` → `"` For example: ```go-html-template {{ htmlEscape "Lilo & Stitch" }} → Lilo & Stitch {{ htmlEscape "7 > 6" }} → 7 > 6 ``` [html entities]: https://developer.mozilla.org/en-US/docs/Glossary/Entity gohugoio-hugo-6abdaca/docs/content/en/functions/transform/HTMLUnescape.md000066400000000000000000000016741507671574500267470ustar00rootroot00000000000000--- title: transform.HTMLUnescape description: Returns the given string, replacing each HTML entity with its corresponding character. categories: [] keywords: [] params: functions_and_methods: aliases: [htmlUnescape] returnType: string signatures: [transform.HTMLUnescape INPUT] aliases: [/functions/htmlunescape] --- The `transform.HTMLUnescape` function replaces [HTML entities] with their corresponding characters. ```go-html-template {{ htmlUnescape "Lilo & Stitch" }} → Lilo & Stitch {{ htmlUnescape "7 > 6" }} → 7 > 6 ``` In most contexts Go's [html/template] package will escape special characters. To bypass this behavior, pass the unescaped string through the [`safeHTML`] function. ```go-html-template {{ htmlUnescape "Lilo & Stitch" | safeHTML }} ``` [`safehtml`]: /functions/safe/html/ [html entities]: https://developer.mozilla.org/en-us/docs/glossary/entity [html/template]: https://pkg.go.dev/html/template gohugoio-hugo-6abdaca/docs/content/en/functions/transform/Highlight.md000066400000000000000000000031271507671574500264210ustar00rootroot00000000000000--- title: transform.Highlight description: Renders code with a syntax highlighter. categories: [] keywords: [highlight] params: functions_and_methods: aliases: [highlight] returnType: template.HTML signatures: ['transform.Highlight CODE LANG [OPTIONS]'] aliases: [/functions/highlight] --- The `highlight` function uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 [highlighting styles]. [chroma]: https://github.com/alecthomas/chroma [highlighting styles]: /quick-reference/syntax-highlighting-styles/ ## Arguments The `transform.Highlight` shortcode takes three arguments. CODE : (`string`) The code to highlight. LANG : (`string`) The language of the code to highlight. Choose from one of the [supported languages]. This value is case-insensitive. OPTIONS : (`map or string`) A map or comma-separated key-value pairs wrapped in quotation marks. Set default values for each option in your [site configuration]. The key names are case-insensitive. [site configuration]: /configuration/markup#highlight [supported languages]: /content-management/syntax-highlighting#languages ## Examples ```go-html-template {{ $input := `fmt.Println("Hello World!")` }} {{ transform.Highlight $input "go" }} {{ $input := `console.log('Hello World!');` }} {{ $lang := "js" }} {{ transform.Highlight $input $lang "lineNos=table, style=api" }} {{ $input := `echo "Hello World!"` }} {{ $lang := "bash" }} {{ $opts := dict "lineNos" "table" "style" "dracula" }} {{ transform.Highlight $input $lang $opts }} ``` ## Options {{% include "_common/syntax-highlighting-options.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/transform/HighlightCodeBlock.md000066400000000000000000000022441507671574500301660ustar00rootroot00000000000000--- title: transform.HighlightCodeBlock description: Highlights code received in context within a code block render hook. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: highlight.HighlightResult signatures: ['transform.HighlightCodeBlock CONTEXT [OPTIONS]'] --- This function is only useful within a code block render hook. Given the context passed into a code block render hook, `transform.HighlightCodeBlock` returns a `HighlightResult` object with two methods. .Wrapped : (`template.HTML`) Returns highlighted code wrapped in `
      `, `
      `, and `` elements. This is identical to the value returned by the transform.Highlight function.
      
      .Inner
      : (`template.HTML`) Returns highlighted code without any wrapping elements, allowing you to create your own wrapper.
      
      ```go-html-template
      {{ $result := transform.HighlightCodeBlock . }}
      {{ $result.Wrapped }}
      ```
      
      To override the default [highlighting options]:
      
      ```go-html-template
      {{ $opts := merge .Options (dict "linenos" true) }}
      {{ $result := transform.HighlightCodeBlock . $opts }}
      {{ $result.Wrapped }}
      ```
      
      [highlighting options]: /functions/transform/highlight/#options
      gohugoio-hugo-6abdaca/docs/content/en/functions/transform/Markdownify.md000066400000000000000000000017571507671574500270130ustar00rootroot00000000000000---
      title: transform.Markdownify
      description: Renders Markdown to HTML.
      categories: []
      keywords: []
      params:
        functions_and_methods:
          aliases: [markdownify]
          returnType: template.HTML
          signatures: [transform.Markdownify INPUT]
      aliases: [/functions/markdownify]
      ---
      
      ```go-html-template
      

      {{ .Title | markdownify }}

      ``` If the resulting HTML is a single paragraph, Hugo removes the wrapping `p` tags to produce inline HTML as required per the example above. To keep the wrapping `p` tags for a single paragraph, use the [`RenderString`] method on the `Page` object, setting the `display` option to `block`. > [!note] > Although the `markdownify` function honors [Markdown render hooks] when rendering Markdown to HTML, use the `RenderString` method instead of `markdownify` if a render hook accesses `.Page` context. See issue [#9692] for details. [#9692]: https://github.com/gohugoio/hugo/issues/9692 [`RenderString`]: /methods/page/renderstring/ [Markdown render hooks]: /render-hooks/ gohugoio-hugo-6abdaca/docs/content/en/functions/transform/Plainify.md000066400000000000000000000005361507671574500262660ustar00rootroot00000000000000--- title: transform.Plainify description: Returns a string with all HTML tags removed. categories: [] keywords: [] params: functions_and_methods: aliases: [plainify] returnType: template.HTML signatures: [transform.Plainify INPUT] aliases: [/functions/plainify] --- ```go-html-template {{ "BatMan" | plainify }} → BatMan ``` gohugoio-hugo-6abdaca/docs/content/en/functions/transform/PortableText.md000066400000000000000000000134561507671574500271350ustar00rootroot00000000000000--- title: transform.PortableText description: Converts Portable Text to Markdown. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [transform.PortableText MAP] --- {{< new-in "0.145.0" />}} [Portable Text](https://www.portabletext.org/) is a JSON structure that represent rich text content in the [Sanity](https://www.sanity.io/) CMS. In Hugo, this function is typically used in a [Content Adapter](https://gohugo.io/content-management/content-adapters/) that creates pages from Sanity data. ## Types supported - `block` and `span` - `image`. Note that the image handling is currently very simple; we link to the `asset.url` using `asset.altText` as the image alt text and `asset.title` as the title. For more fine grained control you may want to process the images in a [image render hook](/render-hooks/images/). - `code` (see the [code-input](https://www.sanity.io/plugins/code-input) plugin). Code will be rendered as [fenced code blocks](/contribute/documentation/#fenced-code-blocks) with any file name provided passed on as a markdown attribute. > [!note] > Since the Portable Text gets converted to Markdown before it gets passed to Hugo, rendering of links, headings, images and code blocks can be controlled with [Render Hooks](https://gohugo.io/render-hooks/). ## Example ### Content Adapter ```go-html-template {file="content/_content.gotmpl" copy=true} {{ $projectID := "mysanityprojectid" }} {{ $useCached := true }} {{ $api := "api" }} {{ if $useCached }} {{/* See https://www.sanity.io/docs/api-cdn */}} {{ $api = "apicdn" }} {{ end }} {{ $url := printf "https://%s.%s.sanity.io/v2021-06-07/data/query/production" $projectID $api }} {{/* prettier-ignore-start */ -}} {{ $q := `*[_type == 'post']{ title, publishedAt, summary, slug, body[]{ ..., _type == "image" => { ..., asset->{ _id, path, url, altText, title, description, metadata { dimensions { aspectRatio, width, height } } } } }, }` }} {{/* prettier-ignore-end */ -}} {{ $body := dict "query" $q | jsonify }} {{ $opts := dict "method" "post" "body" $body }} {{ $r := resources.GetRemote $url $opts }} {{ $m := $r | transform.Unmarshal }} {{ $result := $m.result }} {{ range $result }} {{ if not .slug }} {{ continue }} {{ end }} {{ $markdown := transform.PortableText .body }} {{ $content := dict "mediaType" "text/markdown" "value" $markdown }} {{ $params := dict "portabletext" (.body | jsonify (dict "indent" " ")) }} {{ $page := dict "content" $content "kind" "page" "path" .slug.current "title" .title "date" (.publishedAt | time ) "summary" .summary "params" $params }} {{ $.AddPage $page }} {{ end }} ``` ### Sanity setup Below outlines a suitable Sanity studio setup for the above example. ```ts {file="sanity.config.ts" copy=true} import {defineConfig} from 'sanity' import {structureTool} from 'sanity/structure' import {visionTool} from '@sanity/vision' import {schemaTypes} from './schemaTypes' import {media} from 'sanity-plugin-media' import {codeInput} from '@sanity/code-input' export default defineConfig({ name: 'default', title: 'my-sanity-project', projectId: 'mysanityprojectid', dataset: 'production', plugins: [structureTool(), visionTool(), media(),codeInput()], schema: { types: schemaTypes, }, }) ``` Type/schema definition: ```ts {file="schemaTypes/postType.ts" copy=true} import {defineField, defineType} from 'sanity' export const postType = defineType({ name: 'post', title: 'Post', type: 'document', fields: [ defineField({ name: 'title', type: 'string', validation: (rule) => rule.required(), }), defineField({ name: 'summary', type: 'string', validation: (rule) => rule.required(), }), defineField({ name: 'slug', type: 'slug', options: {source: 'title'}, validation: (rule) => rule.required(), }), defineField({ name: 'publishedAt', type: 'datetime', initialValue: () => new Date().toISOString(), validation: (rule) => rule.required(), }), defineField({ name: 'body', type: 'array', of: [ { type: 'block', }, { type: 'image' }, { type: 'code', options: { language: 'css', languageAlternatives: [ {title: 'HTML', value: 'html'}, {title: 'CSS', value: 'css'}, ], withFilename: true, }, }, ], }), ], }) ``` Note that the above requires some additional plugins to be installed: ```bash npm i sanity-plugin-media @sanity/code-input ``` ```ts {file="schemaTypes/index.ts" copy=true} import {postType} from './postType' export const schemaTypes = [postType] ``` ## Server setup Unfortunately, Sanity's API does not support [RFC 7234](https://tools.ietf.org/html/rfc7234) and their output changes even if the data has not. A recommended setup is therefore to use their cached `apicdn` endpoint (see above) and then set up a reasonable polling and file cache strategy in your Hugo configuration, e.g: {{< code-toggle file=hugo >}} [HTTPCache] [[HTTPCache.polls]] disable = false low = '30s' high = '3m' [HTTPCache.polls.for] includes = ['https://*.*.sanity.io/**'] [caches.getresource] dir = ':cacheDir/:project' maxAge = "5m" {{< /code-toggle >}} The polling above will be used when running the server/watch mode and rebuild when you push new content in Sanity. See [Caching in resources.GetRemote](/functions/resources/getremote/#caching) for more fine grained control. gohugoio-hugo-6abdaca/docs/content/en/functions/transform/Remarshal.md000066400000000000000000000033221507671574500264250ustar00rootroot00000000000000--- title: transform.Remarshal description: Marshals a string of serialized data, or a map, into a string of serialized data in the specified format. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [transform.Remarshal FORMAT INPUT] aliases: [/functions/transform.remarshal] --- The format must be one of `json`, `toml`, `yaml`, or `xml`. If the input is a string of serialized data, it must be valid JSON, TOML, YAML, or XML. > [!note] > This function is primarily a helper for Hugo's documentation, used to convert configuration and front matter examples to JSON, TOML, and YAML. > > This is not a general purpose converter, and may change without notice if required for Hugo's documentation site. Example 1 : Convert a string of TOML to JSON. ```go-html-template {{ $s := ` baseURL = 'https://example.org/' languageCode = 'en-US' title = 'ABC Widgets' `}}
      {{ transform.Remarshal "json" $s }}
      ``` Resulting HTML: ```html
      {
         "baseURL": "https://example.org/",
         "languageCode": "en-US",
         "title": "ABC Widgets"
      }
      
      ``` Rendered in browser: ```text { "baseURL": "https://example.org/", "languageCode": "en-US", "title": "ABC Widgets" } ``` Example 2 : Convert a map to YAML. ```go-html-template {{ $m := dict "a" "Hugo rocks!" "b" (dict "question" "What is 6x7?" "answer" 42) "c" (slice "foo" "bar") }}
      {{ transform.Remarshal "yaml" $m }}
      ``` Resulting HTML: ```html
      a: Hugo rocks!
      b:
        answer: 42
        question: What is 6x7?
      c:
      - foo
      - bar
      
      ``` Rendered in browser: ```text a: Hugo rocks! b: answer: 42 question: What is 6x7? c: - foo - bar ``` gohugoio-hugo-6abdaca/docs/content/en/functions/transform/ToMath.md000066400000000000000000000144231507671574500257070ustar00rootroot00000000000000--- title: transform.ToMath description: Renders mathematical equations and expressions written in the LaTeX markup language. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: template.HTML signatures: ['transform.ToMath INPUT [OPTIONS]'] aliases: [/functions/tomath] --- {{< new-in 0.132.0 />}} Hugo uses an embedded instance of the [KaTeX] display engine to render mathematical markup to HTML. You do not need to install the KaTeX display engine. ```go-html-template {{ transform.ToMath "c = \\pm\\sqrt{a^2 + b^2}" }} ``` > [!note] > By default, Hugo renders mathematical markup to [MathML], and does not require any CSS to display the result. > > To optimize rendering quality and accessibility, use the `htmlAndMathml` output option as described below. This approach requires an external stylesheet. ```go-html-template {{ $opts := dict "output" "htmlAndMathml" }} {{ transform.ToMath "c = \\pm\\sqrt{a^2 + b^2}" $opts }} ``` ## Options Pass a map of options as the second argument to the `transform.ToMath` function. The options below are a subset of the KaTeX [rendering options]. displayMode : (`bool`) Whether to render in display mode instead of inline mode. Default is `false`. errorColor : (`string`) The color of the error messages expressed as an RGB [hexadecimal color]. Default is `#cc0000`. fleqn : (`bool`) Whether to render flush left with a 2em left margin. Default is `false`. macros : (`map`) A map of macros to be used in the math expression. Default is `{}`. ```go-html-template {{ $macros := dict "\\addBar" "\\bar{#1}" "\\bold" "\\mathbf{#1}" }} {{ $opts := dict "macros" $macros }} {{ transform.ToMath "\\addBar{y} + \\bold{H}" $opts }} ``` minRuleThickness : (`float`) The minimum thickness of the fraction lines in `em`. Default is `0.04`. output : (`string`) Determines the markup language of the output, one of `html`, `mathml`, or `htmlAndMathml`. Default is `mathml`. With `html` and `htmlAndMathml` you must include the KaTeX style sheet within the `head` element of your base template. ```html strict : {{< new-in 0.147.6 />}} : (`string`) Controls how KaTeX handles LaTeX features that offer convenience but aren't officially supported, one of `error`, `ignore`, or `warn`. Default is `error`. - `error`: Throws an error when convenient, unsupported LaTeX features are encountered. - `ignore`: Allows convenient, unsupported LaTeX features without any feedback. - `warn`: {{< new-in 0.147.7 />}} Emits a warning when convenient, unsupported LaTeX features are encountered. The `newLineInDisplayMode` error code, which flags the use of `\\` or `\newline` in display mode outside an array or tabular environment, is intentionally designed not to throw an error, despite this behavior being questionable. throwOnError : (`bool`) Whether to throw a `ParseError` when KaTeX encounters an unsupported command or invalid LaTeX. Default is `true`. ## Error handling There are three ways to handle errors: 1. Let KaTeX throw an error and fail the build. This is the default behavior. 1. Set the `throwOnError` option to `false` to make KaTeX render the expression as an error instead of throwing an error. See [options](#options). 1. Handle the error in your template. The example below demonstrates error handing within a template. ## Example Instead of client-side JavaScript rendering of mathematical markup using MathJax or KaTeX, create a passthrough render hook which calls the `transform.ToMath` function. Step 1 : Enable and configure the Goldmark [passthrough extension][] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves. [passthrough extension]: /configuration/markup/#passthrough {{< code-toggle file=hugo copy=true >}} [markup.goldmark.extensions.passthrough] enable = true [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] inline = [['\(', '\)']] {{< /code-toggle >}} > [!note] > The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration, you must double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting. Step 2 : Create a [passthrough render hook][] to capture and render the LaTeX markup.4 [passthrough render hook]: /render-hooks/passthrough/ ```go-html-template {file="layouts/_markup/render-passthrough.html" copy=true} {{- $opts := dict "output" "htmlAndMathml" "displayMode" (eq .Type "block") }} {{- with try (transform.ToMath .Inner $opts) }} {{- with .Err }} {{- errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }} {{- else }} {{- .Value }} {{- $.Page.Store.Set "hasMath" true }} {{- end }} {{- end -}} ``` Step 3 : In your base template, conditionally include the KaTeX CSS within the head element. ```go-html-template {file="layouts/baseof.html" copy=true} {{ $noop := .WordCount }} {{ if .Page.Store.Get "hasMath" }} {{ end }} ``` In the above, note the use of a [noop](g) statement to force content rendering before we check the value of `hasMath` with the `Store.Get` method. Step 4 : Add some mathematical markup to your content, then test. ```text {file="content/example.md"} This is an inline \(a^*=x-b^*\) equation. These are block equations: \[a^*=x-b^*\] $$a^*=x-b^*$$ ``` ## Chemistry {{< new-in 0.144.0 />}} You can also use the `transform.ToMath` function to render chemical equations, leveraging the `\ce` and `\pu` functions from the [mhchem] package. ```text $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ ``` $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ [hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color [KaTeX]: https://katex.org/ [MathML]: https://developer.mozilla.org/en-US/docs/Web/MathML [mhchem]: https://mhchem.github.io/MathJax-mhchem/ [rendering options]: https://katex.org/docs/options.html gohugoio-hugo-6abdaca/docs/content/en/functions/transform/Unmarshal.md000066400000000000000000000226401507671574500264450ustar00rootroot00000000000000--- title: transform.Unmarshal description: Parses serialized data and returns a map or an array. Supports CSV, JSON, TOML, YAML, and XML. categories: [] keywords: [] params: functions_and_methods: aliases: [unmarshal] returnType: any signatures: ['transform.Unmarshal [OPTIONS] INPUT'] aliases: [/functions/transform.unmarshal] --- The input can be a string or a [resource](g). ## Unmarshal a string ```go-html-template {{ $string := ` title: Les Misérables author: Victor Hugo `}} {{ $book := unmarshal $string }} {{ $book.title }} → Les Misérables {{ $book.author }} → Victor Hugo ``` ## Unmarshal a resource Use the `transform.Unmarshal` function with global, page, and remote resources. ### Global resource A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory. ```text assets/ └── data/ └── books.json ``` ```go-html-template {{ $data := dict }} {{ $path := "data/books.json" }} {{ with resources.Get $path }} {{ with . | transform.Unmarshal }} {{ $data = . }} {{ end }} {{ else }} {{ errorf "Unable to get global resource %q" $path }} {{ end }} {{ range where $data "author" "Victor Hugo" }} {{ .title }} → Les Misérables {{ end }} ``` ### Page resource A page resource is a file within a [page bundle]. ```text content/ ├── post/ │ └── book-reviews/ │ ├── books.json │ └── index.md └── _index.md ``` ```go-html-template {{ $data := dict }} {{ $path := "books.json" }} {{ with .Resources.Get $path }} {{ with . | transform.Unmarshal }} {{ $data = . }} {{ end }} {{ else }} {{ errorf "Unable to get page resource %q" $path }} {{ end }} {{ range where $data "author" "Victor Hugo" }} {{ .title }} → Les Misérables {{ end }} ``` ### Remote resource A remote resource is a file on a remote server, accessible via HTTP or HTTPS. ```go-html-template {{ $data := dict }} {{ $url := "https://example.org/books.json" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ $data = . | transform.Unmarshal }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} {{ range where $data "author" "Victor Hugo" }} {{ .title }} → Les Misérables {{ end }} ``` > [!note] > When retrieving remote data, a misconfigured server may send a response header with an incorrect [Content-Type]. For example, the server may set the Content-Type header to `application/octet-stream` instead of `application/json`. > > In these cases, pass the resource `Content` through the `transform.Unmarshal` function instead of passing the resource itself. For example, in the above, do this instead: > > `{{ $data = .Content | transform.Unmarshal }}` ## Working with CSV ### Options When unmarshaling a CSV file, provide an optional map of options. delimiter : (`string`) The delimiter used. Default is `,`. comment : (`string`) The comment character used in the CSV. If set, lines beginning with the comment character without preceding whitespace are ignored. lazyQuotes : {{< new-in 0.122.0 />}} : (`bool`) Whether to allow a quote in an unquoted field, or to allow a non-doubled quote in a quoted field. Default is `false`. targetType : {{< new-in 0.146.7 />}} : (`string`) The target data type, either `slice` or `map`. Default is `slice`. ### Examples The examples below use this CSV file: ```csv "name","type","breed","age" "Spot","dog","Collie",3 "Rover","dog","Boxer",5 "Felix","cat","Calico",7 ``` To render an HTML table from a CSV file: ```go-html-template {{ $data := slice }} {{ $file := "pets.csv" }} {{ with or (.Resources.Get $file) (resources.Get $file) }} {{ $opts := dict "targetType" "slice" }} {{ $data = transform.Unmarshal $opts . }} {{ end }} {{ with $data }} {{ range index . 0 }} {{ end }} {{ range . | after 1 }} {{ range . }} {{ end }} {{ end }}
      {{ . }}
      {{ . }}
      {{ end }} ``` To extract a subset of the data, or to sort the data, unmarshal to a map instead of a slice: ```go-html-template {{ $data := dict }} {{ $file := "pets.csv" }} {{ with or (.Resources.Get $file) (resources.Get $file) }} {{ $opts := dict "targetType" "map" }} {{ $data = transform.Unmarshal $opts . }} {{ end }} {{ with sort (where $data "type" "dog") "name" "asc" }} {{ range . }} {{ end }}
      name type breed age
      {{ .name }} {{ .type }} {{ .breed }} {{ .age }}
      {{ end }} ``` ## Working with XML When unmarshaling an XML file, do not include the root node when accessing data. For example, after unmarshaling the RSS feed below, access the feed title with `$data.channel.title`. ```xml Books on Example Site https://example.org/books/ Recent content in Books on Example Site en-US The Hunchback of Notre Dame Written by Victor Hugo https://example.org/books/the-hunchback-of-notre-dame/ Mon, 09 Oct 2023 09:27:12 -0700 https://example.org/books/the-hunchback-of-notre-dame/ Les Misérables Written by Victor Hugo https://example.org/books/les-miserables/ Mon, 09 Oct 2023 09:27:11 -0700 https://example.org/books/les-miserables/ ``` Get the remote data: ```go-html-template {{ $data := dict }} {{ $url := "https://example.org/books/index.xml" }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ $data = . | transform.Unmarshal }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` Inspect the data structure: ```go-html-template
      {{ debug.Dump $data }}
      ``` List the book titles: ```go-html-template {{ with $data.channel.item }}
        {{ range . }}
      • {{ .title }}
      • {{ end }}
      {{ end }} ``` Hugo renders this to: ```html
      • The Hunchback of Notre Dame
      • Les Misérables
      ``` ### XML attributes and namespaces Let's add a `lang` attribute to the `title` nodes of our RSS feed, and a namespaced node for the ISBN number: ```xml Books on Example Site https://example.org/books/ Recent content in Books on Example Site en-US The Hunchback of Notre Dame Written by Victor Hugo 9780140443530 https://example.org/books/the-hunchback-of-notre-dame/ Mon, 09 Oct 2023 09:27:12 -0700 https://example.org/books/the-hunchback-of-notre-dame/ Les Misérables Written by Victor Hugo 9780451419439 https://example.org/books/les-miserables/ Mon, 09 Oct 2023 09:27:11 -0700 https://example.org/books/les-miserables/ ``` After retrieving the remote data, inspect the data structure: ```go-html-template
      {{ debug.Dump $data }}
      ``` Each item node looks like this: ```json { "description": "Written by Victor Hugo", "guid": "https://example.org/books/the-hunchback-of-notre-dame/", "link": "https://example.org/books/the-hunchback-of-notre-dame/", "number": "9780140443530", "pubDate": "Mon, 09 Oct 2023 09:27:12 -0700", "title": { "#text": "The Hunchback of Notre Dame", "-lang": "en" } } ``` The title keys do not begin with an underscore or a letter---they are not valid [identifiers](g). Use the [`index`] function to access the values: ```go-html-template {{ with $data.channel.item }}
        {{ range . }} {{ $title := index .title "#text" }} {{ $lang := index .title "-lang" }} {{ $ISBN := .number }}
      • {{ $title }} ({{ $lang }}) {{ $ISBN }}
      • {{ end }}
      {{ end }} ``` Hugo renders this to: ```html
      • The Hunchback of Notre Dame (en) 9780140443530
      • Les Misérables (fr) 9780451419439
      ``` [`index`]: /functions/collections/indexfunction/ [Content-Type]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type [page bundle]: /content-management/page-bundles/ gohugoio-hugo-6abdaca/docs/content/en/functions/transform/XMLEscape.md000066400000000000000000000023341507671574500262720ustar00rootroot00000000000000--- title: transform.XMLEscape description: Returns the given string, removing disallowed characters then escaping the result to its XML equivalent. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [transform.XMLEscape INPUT] --- {{< new-in 0.121.0 />}} The `transform.XMLEscape` function removes [disallowed characters] as defined in the XML specification, then escapes the result by replacing the following characters with [HTML entities]: - `"` → `"` - `'` → `'` - `&` → `&` - `<` → `<` - `>` → `>` - `\t` → ` ` - `\n` → ` ` - `\r` → ` ` For example: ```go-html-template {{ transform.XMLEscape "

      abc

      " }} → <p>abc</p> ``` When using `transform.XMLEscape` in a template rendered by Go's [html/template] package, declare the string to be safe HTML to avoid double escaping. For example, in an RSS template: ```xml {file="layouts/rss.xml"} {{ .Summary | transform.XMLEscape | safeHTML }} ``` [disallowed characters]: https://www.w3.org/TR/xml/#charsets [html entities]: https://developer.mozilla.org/en-us/docs/glossary/entity [html/template]: https://pkg.go.dev/html/template gohugoio-hugo-6abdaca/docs/content/en/functions/transform/_index.md000066400000000000000000000002451507671574500257560ustar00rootroot00000000000000--- title: Transform functions linkTitle: transform description: Use these functions to transform values from one format to another. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/functions/urls/000077500000000000000000000000001507671574500231375ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/functions/urls/AbsLangURL.md000066400000000000000000000046161507671574500253620ustar00rootroot00000000000000--- title: urls.AbsLangURL description: Returns an absolute URL with a language prefix, if any. categories: [] keywords: [] params: functions_and_methods: aliases: [absLangURL] returnType: string signatures: [urls.AbsLangURL INPUT] aliases: [/functions/abslangurl] --- Use this function with both monolingual and multilingual configurations. The URL returned by this function depends on: - Whether the input begins with a slash (`/`) - The `baseURL` in your site configuration - The language prefix, if any This is the site configuration for the examples that follow: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' defaultContentLanguageInSubdir = true [languages.en] weight = 1 [languages.es] weight = 2 {{< /code-toggle >}} ## Input does not begin with a slash If the input does not begin with a slash, the path in the resulting URL will be relative to the `baseURL` in your site configuration. When rendering the `en` site with `baseURL = https://example.org/` ```go-html-template {{ absLangURL "" }} → https://example.org/en/ {{ absLangURL "articles" }} → https://example.org/en/articles {{ absLangURL "style.css" }} → https://example.org/en/style.css ``` When rendering the `en` site with `baseURL = https://example.org/docs/` ```go-html-template {{ absLangURL "" }} → https://example.org/docs/en/ {{ absLangURL "articles" }} → https://example.org/docs/en/articles {{ absLangURL "style.css" }} → https://example.org/docs/en/style.css ``` ## Input begins with a slash If the input begins with a slash, the path in the resulting URL will be relative to the protocol+host of the `baseURL` in your site configuration. When rendering the `en` site with `baseURL = https://example.org/` ```go-html-template {{ absLangURL "/" }} → https://example.org/en/ {{ absLangURL "/articles" }} → https://example.org/en/articles {{ absLangURL "/style.css" }} → https://example.org/en/style.css ``` When rendering the `en` site with `baseURL = https://example.org/docs/` ```go-html-template {{ absLangURL "/" }} → https://example.org/en/ {{ absLangURL "/articles" }} → https://example.org/en/articles {{ absLangURL "/style.css" }} → https://example.org/en/style.css ``` > [!note] > As illustrated by the previous example, using a leading slash is rarely desirable and can lead to unexpected outcomes. In nearly all cases, omit the leading slash. gohugoio-hugo-6abdaca/docs/content/en/functions/urls/AbsURL.md000066400000000000000000000037031507671574500245540ustar00rootroot00000000000000--- title: urls.AbsURL description: Returns an absolute URL. categories: [] keywords: [] params: functions_and_methods: aliases: [absURL] returnType: string signatures: [urls.AbsURL INPUT] aliases: [/functions/absurl] --- With multilingual configurations, use the [`urls.AbsLangURL`] function instead. The URL returned by this function depends on: - Whether the input begins with a slash (`/`) - The `baseURL` in your site configuration ## Input does not begin with a slash If the input does not begin with a slash, the path in the resulting URL will be relative to the `baseURL` in your site configuration. With `baseURL = https://example.org/` ```go-html-template {{ absURL "" }} → https://example.org/ {{ absURL "articles" }} → https://example.org/articles {{ absURL "style.css" }} → https://example.org/style.css ``` With `baseURL = https://example.org/docs/` ```go-html-template {{ absURL "" }} → https://example.org/docs/ {{ absURL "articles" }} → https://example.org/docs/articles {{ absURL "style.css" }} → https://example.org/docs/style.css ``` ## Input begins with a slash If the input begins with a slash, the path in the resulting URL will be relative to the protocol+host of the `baseURL` in your site configuration. With `baseURL = https://example.org/` ```go-html-template {{ absURL "/" }} → https://example.org/ {{ absURL "/articles" }} → https://example.org/articles {{ absURL "/style.css" }} → https://example.org/style.css ``` With `baseURL = https://example.org/docs/` ```go-html-template {{ absURL "/" }} → https://example.org/ {{ absURL "/articles" }} → https://example.org/articles {{ absURL "/style.css" }} → https://example.org/style.css ``` > [!note] > As illustrated by the previous example, using a leading slash is rarely desirable and can lead to unexpected outcomes. In nearly all cases, omit the leading slash. [`urls.AbsLangURL`]: /functions/urls/abslangurl/ gohugoio-hugo-6abdaca/docs/content/en/functions/urls/Anchorize.md000066400000000000000000000020021507671574500253750ustar00rootroot00000000000000--- title: urls.Anchorize description: Returns the given string, sanitized for usage in an HTML id attribute. categories: [] keywords: [] params: functions_and_methods: aliases: [anchorize] returnType: string signatures: [urls.Anchorize INPUT] aliases: [/functions/anchorize] --- {{% include "/_common/functions/urls/anchorize-vs-urlize.md" %}} ## Sanitizing logic With the default Markdown renderer, Goldmark, the sanitizing logic is controlled by your site configuration: {{< code-toggle file=hugo >}} [markup.goldmark.parser] autoHeadingIDType = 'github' {{< /code-toggle >}} This controls the behavior of the `anchorize` function and the generation of heading IDs when rendering Markdown to HTML. Set `autoHeadingIDType` to one of: github : Compatible with GitHub. This is the default. github-ascii : Similar to the `github` setting, but removes non-ASCII characters. blackfriday : Provided for backwards compatibility with Hugo v0.59.1 and earlier. This option will be removed in a future release. gohugoio-hugo-6abdaca/docs/content/en/functions/urls/JoinPath.md000066400000000000000000000014711507671574500252000ustar00rootroot00000000000000--- title: urls.JoinPath description: Joins the provided elements into a URL string and cleans the result of any ./ or ../ elements. If the argument list is empty, JoinPath returns an empty string. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: string signatures: [urls.JoinPath ELEMENT...] aliases: [/functions/urls.joinpath] --- ```go-html-template {{ urls.JoinPath }} → "" (empty string) {{ urls.JoinPath "" }} → / {{ urls.JoinPath "a" }} → a {{ urls.JoinPath "a" "b" }} → a/b {{ urls.JoinPath "/a" "b" }} → /a/b {{ urls.JoinPath "https://example.org" "b" }} → https://example.org/b {{ urls.JoinPath (slice "a" "b") }} → a/b ``` Unlike the [`path.Join`] function, `urls.JoinPath` retains consecutive leading slashes. [`path.Join`]: /functions/path/join/ gohugoio-hugo-6abdaca/docs/content/en/functions/urls/Parse.md000066400000000000000000000021011507671574500245250ustar00rootroot00000000000000--- title: urls.Parse description: Parses a URL into a URL structure. categories: [] keywords: [] params: functions_and_methods: aliases: [] returnType: url.URL signatures: [urls.Parse URL] aliases: [/functions/urls.parse] --- The `urls.Parse` function parses a URL into a [URL structure](https://godoc.org/net/url#URL). The URL may be relative (a path, without a host) or absolute (starting with a [scheme]). Hugo throws an error when parsing an invalid URL. [scheme]: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml#uri-schemes-1 ```go-html-template {{ $url := "https://example.org:123/foo?a=6&b=7#bar" }} {{ $u := urls.Parse $url }} {{ $u.String }} → https://example.org:123/foo?a=6&b=7#bar {{ $u.IsAbs }} → true {{ $u.Scheme }} → https {{ $u.Host }} → example.org:123 {{ $u.Hostname }} → example.org {{ $u.RequestURI }} → /foo?a=6&b=7 {{ $u.Path }} → /foo {{ $u.RawQuery }} → a=6&b=7 {{ $u.Query }} → map[a:[6] b:[7]] {{ $u.Query.a }} → [6] {{ $u.Query.Get "a" }} → 6 {{ $u.Query.Has "b" }} → true {{ $u.Fragment }} → bar ``` gohugoio-hugo-6abdaca/docs/content/en/functions/urls/Ref.md000066400000000000000000000023141507671574500241750ustar00rootroot00000000000000--- title: urls.Ref description: Returns the absolute URL of the page with the given path, language, and output format. categories: [] keywords: [] params: functions_and_methods: aliases: [ref] returnType: string signatures: - urls.Ref PAGE PATH - urls.Ref PAGE OPTIONS aliases: [/functions/ref] --- ## Usage The `ref` function takes two arguments: 1. The context for resolving relative paths (typically the current page). 1. Either the target page's path or an options map (see below). ## Options {{% include "_common/ref-and-relref-options.md" %}} ## Examples The following examples show the rendered output for a page on the English version of the site: ```go-html-template {{ ref . "/books/book-1" }} → https://example.org/en/books/book-1/ {{ $opts := dict "path" "/books/book-1" }} {{ ref . $opts }} → https://example.org/en/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" }} {{ ref . $opts }} → https://example.org/de/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" "outputFormat" "json" }} {{ ref . $opts }} → https://example.org/de/books/book-1/index.json ``` ## Error handling {{% include "_common/ref-and-relref-error-handling.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/urls/RelLangURL.md000066400000000000000000000056341507671574500254000ustar00rootroot00000000000000--- title: urls.RelLangURL description: Returns a relative URL with a language prefix, if any. categories: [] keywords: [] params: functions_and_methods: aliases: [relLangURL] returnType: string signatures: [urls.RelLangURL INPUT] aliases: [/functions/rellangurl] --- Use this function with both monolingual and multilingual configurations. The URL returned by this function depends on: - Whether the input begins with a slash (`/`) - The `baseURL` in your site configuration - The language prefix, if any This is the site configuration for the examples that follow: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' defaultContentLanguageInSubdir = true [languages.en] weight = 1 [languages.es] weight = 2 {{< /code-toggle >}} ## Input does not begin with a slash If the input does not begin with a slash, the resulting URL will be relative to the `baseURL` in your site configuration. When rendering the `en` site with `baseURL = https://example.org/` ```go-html-template {{ relLangURL "" }} → /en/ {{ relLangURL "articles" }} → /en/articles {{ relLangURL "style.css" }} → /en/style.css {{ relLangURL "https://example.org" }} → https://example.org {{ relLangURL "https://example.org/" }} → /en {{ relLangURL "https://www.example.org" }} → https://www.example.org {{ relLangURL "https://www.example.org/" }} → https://www.example.org/ ``` When rendering the `en` site with `baseURL = https://example.org/docs/` ```go-html-template {{ relLangURL "" }} → /docs/en/ {{ relLangURL "articles" }} → /docs/en/articles {{ relLangURL "style.css" }} → /docs/en/style.css {{ relLangURL "https://example.org" }} → https://example.org {{ relLangURL "https://example.org/" }} → https://example.org/ {{ relLangURL "https://example.org/docs" }} → https://example.org/docs {{ relLangURL "https://example.org/docs/" }} → /docs/en {{ relLangURL "https://www.example.org" }} → https://www.example.org {{ relLangURL "https://www.example.org/" }} → https://www.example.org/ ``` ## Input begins with a slash If the input begins with a slash, the resulting URL will be relative to the protocol+host of the `baseURL` in your site configuration. When rendering the `en` site with `baseURL = https://example.org/` ```go-html-template {{ relLangURL "/" }} → /en/ {{ relLangURL "/articles" }} → /en/articles {{ relLangURL "/style.css" }} → /en/style.css ``` When rendering the `en` site with `baseURL = https://example.org/docs/` ```go-html-template {{ relLangURL "/" }} → /en/ {{ relLangURL "/articles" }} → /en/articles {{ relLangURL "/style.css" }} → /en/style.css ``` > [!note] > As illustrated by the previous example, using a leading slash is rarely desirable and can lead to unexpected outcomes. In nearly all cases, omit the leading slash. gohugoio-hugo-6abdaca/docs/content/en/functions/urls/RelRef.md000066400000000000000000000022361507671574500246430ustar00rootroot00000000000000--- title: urls.RelRef description: Returns the relative URL of the page with the given path, language, and output format. categories: [] keywords: [] params: functions_and_methods: aliases: [relref] returnType: string signatures: - urls.RelRef PAGE PATH - urls.RelRef PAGE OPTIONS aliases: [/functions/relref] --- ## Usage The `relref` function takes two arguments: 1. The context for resolving relative paths (typically the current page). 1. Either the target page's path or an options map (see below). ## Options {{% include "_common/ref-and-relref-options.md" %}} ## Examples The following examples show the rendered output for a page on the English version of the site: ```go-html-template {{ relref . "/books/book-1" }} → /en/books/book-1/ {{ $opts := dict "path" "/books/book-1" }} {{ relref . $opts }} → /en/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" }} {{ relref . $opts }} → /de/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" "outputFormat" "json" }} {{ relref . $opts }} → /de/books/book-1/index.json ``` ## Error handling {{% include "_common/ref-and-relref-error-handling.md" %}} gohugoio-hugo-6abdaca/docs/content/en/functions/urls/RelURL.md000066400000000000000000000046511507671574500245740ustar00rootroot00000000000000--- title: urls.RelURL description: Returns a relative URL. categories: [] keywords: [] params: functions_and_methods: aliases: [relURL] returnType: string signatures: [urls.RelURL INPUT] aliases: [/functions/relurl] --- With multilingual configurations, use the [`urls.RelLangURL`] function instead. The URL returned by this function depends on: - Whether the input begins with a slash (`/`) - The `baseURL` in your site configuration ## Input does not begin with a slash If the input does not begin with a slash, the resulting URL will be relative to the `baseURL` in your site configuration. With `baseURL = https://example.org/` ```go-html-template {{ relURL "" }} → / {{ relURL "articles" }} → /articles {{ relURL "style.css" }} → /style.css {{ relURL "https://example.org" }} → https://example.org {{ relURL "https://example.org/" }} → / {{ relURL "https://www.example.org" }} → https://www.example.org {{ relURL "https://www.example.org/" }} → https://www.example.org/ ``` With `baseURL = https://example.org/docs/` ```go-html-template {{ relURL "" }} → /docs/ {{ relURL "articles" }} → /docs/articles {{ relURL "style.css" }} → /docs/style.css {{ relURL "https://example.org" }} → https://example.org {{ relURL "https://example.org/" }} → https://example.org/ {{ relURL "https://example.org/docs" }} → https://example.org/docs {{ relURL "https://example.org/docs/" }} → /docs {{ relURL "https://www.example.org" }} → https://www.example.org {{ relURL "https://www.example.org/" }} → https://www.example.org/ ``` ## Input begins with a slash If the input begins with a slash, the resulting URL will be relative to the protocol+host of the `baseURL` in your site configuration. With `baseURL = https://example.org/` ```go-html-template {{ relURL "/" }} → / {{ relURL "/articles" }} → /articles {{ relURL "/style.css" }} → /style.css ``` With `baseURL = https://example.org/docs/` ```go-html-template {{ relURL "/" }} → / {{ relURL "/articles" }} → /articles {{ relURL "/style.css" }} → /style.css ``` > [!note] > As illustrated by the previous example, using a leading slash is rarely desirable and can lead to unexpected outcomes. In nearly all cases, omit the leading slash. [`urls.RelLangURL`]: /functions/urls/rellangurl/ gohugoio-hugo-6abdaca/docs/content/en/functions/urls/URLize.md000066400000000000000000000025771507671574500246460ustar00rootroot00000000000000--- title: urls.URLize description: Returns the given string, sanitized for usage in a URL. categories: [] keywords: [] params: functions_and_methods: aliases: [urlize] returnType: string signatures: [urls.URLize INPUT] aliases: [/functions/urlize] --- {{% include "/_common/functions/urls/anchorize-vs-urlize.md" %}} ## Example Use the `urlize` function to create a link to a [term page](g). Consider this site configuration: {{< code-toggle file=hugo >}} [taxonomies] author = 'authors' {{< /code-toggle >}} And this front matter: {{< code-toggle file=content/books/les-miserables.md fm=true >}} title = 'Les Misérables' authors = ['Victor Hugo'] {{< /code-toggle >}} The published site will have this structure: ```text public/ ├── authors/ │ ├── victor-hugo/ │ │ └── index.html │ └── index.html ├── books/ │ ├── les-miserables/ │ │ └── index.html │ └── index.html └── index.html ``` To create a link to the term page: ```go-html-template {{ $taxonomy := "authors" }} {{ $term := "Victor Hugo" }} {{ with index .Site.Taxonomies $taxonomy (urlize $term) }} {{ .Page.LinkTitle }} {{ end }} ``` To generate a list of term pages associated with a given content page, use the [`GetTerms`] method on a `Page` object. [`GetTerms`]: /methods/page/getterms/ gohugoio-hugo-6abdaca/docs/content/en/functions/urls/_index.md000066400000000000000000000001751507671574500247320ustar00rootroot00000000000000--- title: URL functions linkTitle: urls description: Use these functions to work with URLs. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/getting-started/000077500000000000000000000000001507671574500232475ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/getting-started/_index.md000066400000000000000000000002241507671574500250350ustar00rootroot00000000000000--- title: Getting started description: How to get started with Hugo. categories: [] keywords: [] weight: 10 aliases: [/overview/introduction/] --- gohugoio-hugo-6abdaca/docs/content/en/getting-started/directory-structure.md000066400000000000000000000164431507671574500276430ustar00rootroot00000000000000--- title: Directory structure description: An overview of Hugo's directory structure. categories: [] keywords: [] weight: 30 aliases: [/overview/source-directory/] --- Each Hugo project is a directory, with subdirectories that contribute to the content, structure, behavior, and presentation of your site. ## Site skeleton Hugo generates a project skeleton when you create a new site. For example, this command: ```sh hugo new site my-site ``` Creates this directory structure: ```txt my-site/ ├── archetypes/ │ └── default.md ├── assets/ ├── content/ ├── data/ ├── i18n/ ├── layouts/ ├── static/ ├── themes/ └── hugo.toml <-- site configuration ``` Depending on requirements, you may wish to organize your site configuration into subdirectories: ```txt my-site/ ├── archetypes/ │ └── default.md ├── assets/ ├── config/ <-- site configuration │ └── _default/ │ └── hugo.toml ├── content/ ├── data/ ├── i18n/ ├── layouts/ ├── static/ └── themes/ ``` When you build your site, Hugo creates a `public` directory, and typically a `resources` directory as well: ```txt my-site/ ├── archetypes/ │ └── default.md ├── assets/ ├── config/ │ └── _default/ │ └── hugo.toml ├── content/ ├── data/ ├── i18n/ ├── layouts/ ├── public/ <-- created when you build your site ├── resources/ <-- created when you build your site ├── static/ └── themes/ ``` ## Directories Each of the subdirectories contributes to the content, structure, behavior, or presentation of your site. archetypes : The `archetypes` directory contains templates for new content. See [details](/content-management/archetypes/). assets : The `assets` directory contains global resources typically passed through an asset pipeline. This includes resources such as images, CSS, Sass, JavaScript, and TypeScript. See [details](/hugo-pipes/introduction/). config : The `config` directory contains your site configuration, possibly split into multiple subdirectories and files. For projects with minimal configuration or projects that do not need to behave differently in different environments, a single configuration file named `hugo.toml` in the root of the project is sufficient. See [details](/configuration/introduction/#configuration-directory). content : The `content` directory contains the markup files (typically Markdown) and page resources that comprise the content of your site. See [details](/content-management/organization/). data : The `data` directory contains data files (JSON, TOML, YAML, or XML) that augment content, configuration, localization, and navigation. See [details](/content-management/data-sources/). i18n : The `i18n` directory contains translation tables for multilingual sites. See [details](/content-management/multilingual/). layouts : The `layouts` directory contains templates to transform content, data, and resources into a complete website. See [details](/templates/). public : The `public` directory contains the published website, generated when you run the `hugo` or `hugo server` commands. Hugo recreates this directory and its content as needed. See [details](/getting-started/usage/#build-your-site). resources : The `resources` directory contains cached output from Hugo's asset pipelines, generated when you run the `hugo` or `hugo server` commands. By default this cache directory includes CSS and images. Hugo recreates this directory and its content as needed. static : The `static` directory contains files that will be copied to the `public` directory when you build your site. For example: `favicon.ico`, `robots.txt`, and files that verify site ownership. Before the introduction of [page bundles](g) and [asset pipelines](/hugo-pipes/introduction/), the `static` directory was also used for images, CSS, and JavaScript. themes : The `themes` directory contains one or more [themes](g), each in its own subdirectory. ## Union file system Hugo creates a union file system, allowing you to mount two or more directories to the same location. For example, let's say your home directory contains a Hugo project in one directory, and shared content in another: ```text home/ └── user/ ├── my-site/ │ ├── content/ │ │ ├── books/ │ │ │ ├── _index.md │ │ │ ├── book-1.md │ │ │ └── book-2.md │ │ └── _index.md │ ├── themes/ │ │ └── my-theme/ │ └── hugo.toml └── shared-content/ └── films/ ├── _index.md ├── film-1.md └── film-2.md ``` You can include the shared content when you build your site using mounts. In your site configuration: {{< code-toggle file=hugo >}} [[module.mounts]] source = 'content' target = 'content' [[module.mounts]] source = '/home/user/shared-content' target = 'content' {{< /code-toggle >}} > [!note] > When you overlay one directory on top of another, you must mount both directories. > > Hugo does not follow symbolic links. If you need the functionality provided by symbolic links, use Hugo's union file system instead. After mounting, the union file system has this structure: ```text home/ └── user/ └── my-site/ ├── content/ │ ├── books/ │ │ ├── _index.md │ │ ├── book-1.md │ │ └── book-2.md │ ├── films/ │ │ ├── _index.md │ │ ├── film-1.md │ │ └── film-2.md │ └── _index.md ├── themes/ │ └── my-theme/ └── hugo.toml ``` > [!note] > When two or more files have the same path, the order of precedence follows the order of the mounts. For example, if the shared content directory contains `books/book-1.md`, it will be ignored because the project's `content` directory was mounted first. You can mount directories to `archetypes`, `assets`, `content`, `data`, `i18n`, `layouts`, and `static`. See [details](/configuration/module/#mounts). You can also mount directories from Git repositories using Hugo Modules. See [details](/hugo-modules/). ## Theme skeleton Hugo generates a functional theme skeleton when you create a new theme. For example, this command: ```text hugo new theme my-theme ``` Creates this directory structure (subdirectories not shown): ```text my-theme/ ├── archetypes/ ├── assets/ ├── content/ ├── data/ ├── i18n/ ├── layouts/ ├── static/ └── hugo.toml ``` Using the union file system described above, Hugo mounts each of these directories to the corresponding location in the project. When two files have the same path, the file in the project directory takes precedence. This allows you, for example, to override a theme's template by placing a copy in the same location within the project directory. If you are simultaneously using components from two or more themes or modules, and there's a path collision, the first mount takes precedence. gohugoio-hugo-6abdaca/docs/content/en/getting-started/external-learning-resources/000077500000000000000000000000001507671574500306765ustar00rootroot00000000000000build-websites-with-hugo.png000066400000000000000000000432121507671574500361620ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/getting-started/external-learning-resourcesPNG  IHDR$^ysBITOPLTEQSXޓ* :;܌#;@D!*dj 333kkk!!l!KQ2{)))ܼ奫tsz楥 JJJ*0!""Y]!fffVZZޛ39<Ў-9RRRls!+BH {{{sss) زF! (QQ  (ة"+}!"ֆ')!*"ZZZX[lsBCIz!!@J *:ai+拋  #0'/bdk9@QU楤2=BIMR]啖*.0:ܯt|!+彶!KR {|""(&IM1FYCHJZcކ囜ᄄikbd&.!(.lnr*0!0(+2!aaCHL  Z\c|l$cWvl;7 iךpS|Ffu;75/G_r㫞z5º֍Gn&z U&AD@]rJm]RS3k~{SճfΪ^aԄ%K7mU<0aMb[ U{4W eP&ir/-xuݧ׽:ްu;X6,]뾺%;t5nXʥ#E`0nlN_~ժO]Ӈ>)/<C/U\ӎ,x앛~wpܹxM\.alnvܫS& =DzKmj˚ .p[_mԇ[^:~tKWlxu/q!Z+ I% 6 ,_ثrMl5`M:~ _t_}WㅧnG?؞n{tj݅'6I H ٶ oքMK?gܽn[-up[L;B=}ozkΝT[' O %kR7L2+?H}8=\qn=Xæku&'l[xY( E4e29 RZ4}.۴i:;3*$-,x71 3X҅tH"q!b*`kn`lzQ).|[YO&ؽ2EPu-.xRSca{Þs^8y=pqo) d$~5QW ŵIn&H;v,~i^fz\lHVXiIڀ@uAƙ5xT`bQ5:ȥB`X/ˁliRٟFä攰a`VK!1 R,/ƒdfm\Bhz'N$|ɼ$ah- )-nbN R2`{ӣ K? Iu~n$H1Τ+q>Y 9̥BHtcJB F^i#Xu:we܌i1 (!nx(BHJG.SwȻx06$y jQHjRZBE~mBoksLR==xjvN1Xlk~ìFGV9W^Ѡ j0ł%[Di*fX{-:Ek‡ Ih ZA ^D"d2"gIa %##$9!G7rHd%qy=@䒱/B+TB_P@=dbJ].denRxTSSӢEfsMdw 62_w+IM0jj5( XHf&fRQ!g]Vb!ET4H$ph=@~ ꄼ#O?4/aC(˘e(96JQ.WGL/!$ZdohBY4F!ŕx!0[2bѰLAsć+U&]x'$D5 v57L|أ>+H#,jYJ4˃ vEa YT[{0ea,@o~Ltz $Li~N[0 I&+"zӪW,ŁT7,$u3  Iӆ1vDI7ؼ;l$+IQ;k9EPC$ h;d㈔u>j`(5QI #2.ߛcH3> kG *F 3 "dA !`b ?R,% Μy4N;'\H {+ngvLbMcEǭdFL<0ԎԅQNjaI!9\cֻq4T4(MX*I|WTHrgC!T4ҍUip ;AT eّw1 L=-!L;JJ0dR ؠ*l+H)BBBqTywO^4 e@.'&AcW3?2:ׄNܥFI}dӼ tYZ]O `!!TR-24o]XTq!q֦K>6҄l q ZKCھ~2gwI;/n6H}3JBRHc qKe.KV 8ER uw.IHK1a ^ Ia =6_P)nuQ ީC>αt},fT4HxYj 7^j3[SfhD^^^(XMI@[C7+``G9cp! )@Dl;5!v`VT}q Tx#CHdD@zps*mh4)HCJ9oH:Mr=Q]R,~xwlZ@H3 \%eyXw]R$RN!Hř#qzc[ >{<H/'- 3Jj>(7tސTx<RƲڂZiԯWt:您Rp[] nBL2?9AMLeQ]0tjjuԫVtI\}dÐXIՖX߃2+/wHmܘ/wHKw}g ^2te55y[飵;U.sH|W!<ϫ\ސt!|ozyC1B~(\b/uy^ooAwڭ7Ľ !}['>g;ɳIm +^|ȹx !&^k?~t۶`X1P}v}!.M[GwkȌ'7 Gb{a42#h.;ogAV] T(}aM?1JY5ǧwxuܹ6¨4tOb/gAV2)Pb2Dcz`?M&566`G#?cmajfD yCBFPُBD.$؎+!lE:2;f`+L*$\%RH4{ K:l{}vȔ˗׶lfKm H|x Je0hGVgxp-/9xdADŽ0wm;j-k:@%2i'wדeh"xS- /9781mpJ]zTOzv 2HwuD?6ڎٕIFܨ/>٬I ]C:0Um >H9Edc?=:ȏZppc['㑭-gZY@T{tcoTW'F$2ZDxk02ͶxH?H[z{Lsuw.ikoUS>nIݾ7w]ް&÷OgiZ| Mv ]M+yto1h[K#vO76p6.ϼ|kQ{,/i[:e*!EM/s3 T)h}{[nNҩG'L4O(vIѫ Rپ!i$vZ~ίJԷ1sdCC%aB;Ket3JfM5uQүo)yt 6165:v~}?70RʜZ2|W,q!413oo}nujgtlg HTv0HwaHc =6xiAV+\X\HUiBm0V0\7[kRwG/xۅm rYDMKHr^٪D0ctTh:;ۓZvxpR{xF\^~ϴa=%m///X}i9@VSqlqq{zFo[*NcrShOATB[Pk<5$ u@r7'Q *ӟx8(ƭmD?oyw3 mQ{dL6Moᐒvk[Emkzkf/dhiG}c#;ostag}R!fjn~Zh)7Ը|A&#+Z^M'.,؆ZR#goG3Ez_1-+#+l\#?Fqri]bmV7̿Bc}];0sX-(1/P-\Iav(n2s0J] bo) щڪJ28#7nd~)l/aB6[Lr &UC㽉3Sko۾2zOv,rzoo<7 kYo7KyVIHxL&΋bj<|楾|ٖԾHI˄flld}{b꣌s\H}d f v-՛lYV}.R=)L3rZ[ꑁm +|w?b+ӊ?gKϊGn7u Ԋ˕=A9))Dډ$)Ƃ֧鈹<=]owX1~Ŝ_{͹jj}b̓OH--Jb+R^bN?^R M]+}G5훣eM{=|DRɡzبG9HN̈`$N}3Pȟđ>VӻύͺwNub$imIZLmS_&#+StKLпxTh5 ,"1*51$HZ6U 2%uM;c? wHs'Cz3SO(niDR__&tN׋1so˟mߞO< ;Ɠ"I[|;OG2*zsK5I[Ӎ! 4{3===7 'k"16>tt-?R ,Ѹݦ /Tg sQ5v b c=Q~f.H&kLIj|OPC>_K `-> R%%c_ڃLN/WѨ1>&O$"'"'vQ[4ҫg46ؿCvl=;|3"UN(CzEj8?l[9AP_E4*(LQ߮SHe=&ж#opx/LP䜿z HIN<.C m~Y('ԨD_HжkrwES 1–Xgl}= 4/Z_xvZf lx~(㦛;~W/kcKhia!m JxfsCU#zid41FGt"T !}xMz;<3#)(3 5v56$2zW܇J izҞFw[({^{n{{`MԜ{ 4ҚǾcRnr{{ Җ36m_8Ụ)ZFA;G)H6|%y<`R["]w*K zvldU|H+F?G]@U7@̑T<'R.tO糩K)!3[nn6ޭ??f,EQȕ#e2dCd g9_\ˊɸJҖ mm\{5YÁK}` ߨt0lr(, ލgmRsj_D;N3sJ IdOJ5zxhqT {R d>i@mM5a||HVݞj^P߱$މkf1v!q!3>N|x~/(]`f `Rz3bKs;V_a^Mx2f&4Ƨծu/ *>l RjXkj&,NIV*1$6v1%3H^3D+v27FA Z:8/)//'7Zu!>n_Ϸ߱se ў˗{hbW?bM"oD}.`ٮH-'O:ʣKηxŀ֤Ffql}yme.SaYLhpEoj/i︑?f_,Oо9ɋM"5 wm?lMA^3/_w#s@VIQ$`E`ɬPLvgȷHnŁOm`_=(6U}]PT?S ݔylEc95حBBP$t _ H;6Y&(J!@ƠQ \* ogH?T7g. B,ַO6;e=x1DdGY*-tuc~{ cc<吳.$vSZ64lN#|c^QfFKOw㤶 DŠy=;[ېfluQs7@sb >gtr˝yG~aUmooo\\O"_VGCOA^a $l6 4jTh`M%Z];ai(b+zn^c"/Y+dtpXTsTMŠbXF'/ö|oT:Hbw[,Hv5 lм(ʀ< |p-9tb}yMy~AnrSs͐Qr+b^}BFEPm`S(W:H=~|hL]"3ԣ\vXDSD̢"MJfЦ gn]3:gO/+RΠx)~ICn^L[1J|}+B:N<<ܛAtTF~Q2cM@Hئ%L}s&U'u"d3g.<&4]坔pM*;ف۶|XCO$"(yՐ"Չ0bU8FU`?ͰlK6&; J iUν䞞jh=bro$(|M˔)WNt"ԫw{PRHOmd6`0PC"1ʩo!r7d~U EsT@Q দ(y4w6ڒr;1 ro//%Um(TzEbg vS\8 m5GLP)!y)pMsy{b±4 #v4xJ`g{Of>3eT]N&qT731G-fo5w*) lN{)Ψ:6VqB15'V'?mlyURH_3&D;6^87A[gXv ܼV%ds8Qzwkɴ7F5p`5r}aw)!uR'Qԃb/ϧgَY7}9jT !qXMIC 5U$C c4HغƪtѢ8#HB})I @F#N$[&zT[ܹoZ fִaʰH+"i~dX{tCnvSjl% 5!F4ER,& WG Ln;TՀ1~d&bqa=ʘuk oxV[|ilm~+d[\%DEw&8 GyBdg35;]LO.l`Jɣh>I=Vb#Li>3L=j_ av[^*$.c ̰@b>yaQyޚs3zUAU|H<#3mD~8 qK èr9̶[m {cڢCB5bnIleL+mգR6#j_aBG8*6$bG~ DXFL]NG3o55nt_l"ȐfC|4" ZXm^wީ9;U\Hc 4Ez P1j^y!~=÷t,M>__YYYBvk19xn/ɸ}N.#3(ՂnU.A68&LͻAfXiS1Wt,X-ϖ7L{urq RDH桡Q~3Gg~9 vxU۽ 7x` ܀C:%]l>n87wEc Z# >uBh4@PM!FЉ{΍?u4TW5kqj5wv/X1S)S QL*h Xz˦oN % eG&Ԯ?y~iǎOd*{.c53B~*w޴7h* 3T`o,gjs83{Iqؒb@z6l3ͣJ(\&Hw3l/9F4ҿh\g`tUe(  VظЮ;F_h r@dTpHhXĸO\Hq,hV\ȁfQ/ʮKGj $۹)@r %BLQH`5אpɼFZO(xީR'[-3w}$a>X ?ZwR Q;@336 Pb7TTX{RRϛ.UDI >kڜd~ \l4H?UpMfsjUfu.jV6V{G40Wpg223m-eW)Qލ?#bs y/&kYB"^#`]= o#]D.wٳ}{1\3 lV5/ %2"od/E' P|yգhH֟m$3Jz).HIZZ۾>#{Z-CV)>t l Ȃ-SR#eTYhhvuZFaZ]ݬҧyjhγawRh{wJ u";bFGQ&*5UIE؟<Ѳ\6'r]8yj>DPn7ۋ;aB=/d42Uya%ʿ?05Ož hws;'T7RtHګ)h9mbGF;DE5ɜSg2y\x\m5L Ͻ%v⵩s&iiUvN6׽?fy%FI)OĄb@v]#u3UpJC8g 9JŇ[7.6ӔxCb1T'o`w *t!1kQ׵לӤ$/hu X8DIЉ 1ZD)Ko @ dBDž'Vr!9DP 6"CVp߃RuYpLv9m p[P2&L,M85o)o~* 9U*C@I/ Edxr6]|ymJbS3 xenWRaVKPnc>և~zuX&#{__Rr/$)eei0c0Ŝ}k0c"WݣԐ ,쒑R |h))sn@(rq+$U }b* VE⫹yeFe|+X0 +S yuT(\"a&˶oy'1G+0XQ5i{+Ԁ8<(@|#y&&%ʤ/NĈYF6Qjv WEy%ssf/T@Q'I@haj'M,G$t&-qYdu=f c #uFcok.J76gZ"i G|BARR̠m#EmnT!2bEkyū b)NN=eH=Fk6ģ:秕WfT9TB@ƒ^}^|%Utך}m.ͽ#f bK@ \ߌw; b{/vD~?5c>^gLJ-¨QuYRT <"G Iu&! lRU8 N*\`Hɯa5Af)j^t:buh+G TrS"_lLqQ`G|0t0"l}j ,D [M&8V\}MeXIRYq޼D@s'*B)͠qDDc0;!$v7`AkLÂ;\@q)lS l5I191u* 0 @\j]ʬb! 5D$'B40AJn>z b~jxfxJ\kT.%M n#3cQ1S'l& I*ӏ˙AIDAT&}4/ّ@vi. rX9<2De2i29|×$R&CHd|pf*2% M 1FFeKuftz uh%P8MefetF_/KH:%,Цx 9&YF$4y)KNAkIQ\6uZz%҉rDncЬ cy7M+Ef^E$29j5.' .Tp;#&+n3i,N$4\3Â?m-rxuĽg-b}LqQN[@Xs y,@ir4Nh642S )d7ڈ]ڊtZ{pVAGJ7uVDNt# FH)覝^EgR.XhH#2vuRG ibARj3㤑̀m4XEb|ajEsڳ)CB3sqfdbS۔ZM3͐cL~ٶƨr2*hQ&S8׭ 2;kcʳΰQ{tvvD)!!ZﭞĽK˭Xe:!))13!|br{6MB%gSڞPCڇuF8P'۔ɵUHi{cȵ_hEsk7(s`lŭ^iR3ܼRϾoeը$ZXKVZ4og2t0ӆc1 莃dsW5̮jp!0@6mP谲`իW!4ᏹðXYTVFAdBWU>n:q:y{|=4 H7M +mh޺5H$<#}vnwG\.@ H8Mbe3ǡ u[ 3MKĭp8)Qn_}wkm7[ bbDQWoվ",, $LY.wTCK(p=ݽѾ= }wrbՁ,[f&f>O>:00oLS F IGl'VUTTݺսmfBꁇ3e ,c""Jכmm"2sCpz}z؂` s 2={,uQdHaay{>xqᲲW~` sިx+~"5{{{v{EQ,#rpE^pyĉ)eMUYȑ#-{߮xb)RKé (;tUTi=T粺F; ΒHQ_l,PS}=~ĉÁ1Ey{~\(Z݋?͝EEE} pH<@'9'q墰H0K %Qҁ>5>x.c:lxt3\:.͉s}<_72hNKkpQ̺zy\':_KU(z$K;\?݋1\\@Ks;( 1/}Q]!.I6_&xcZ}Z#;#/fdd>&`LG_ T.\j1*3h $qW͘` o[Y?`.M<.F~%9kR\ً/ni8'&fEIQgLHk߿Qy_zKngC)oŋW}wzɦo-񏜳c y(Tw^ki9x4!C.F쟃 N,`w o.\L˅ -w1]D@WH 0 IvK:_ˏ91q.G&$>_ܜJRŜ{js(3b0ׇ@0t)Pr?_-|My$4p Oƒ㖴qc{,*̭r?>y\1k=޲P% ya@\֬)oNo>7PZƍU{9J$> 0/.pA*dxN]0D0Vt@(e7ڨq)ǔ,yՅƉ76n<{fSBm\s^|Xo-DX<"H\ ߜٻTeޡǎ-Y$!` [[ sPhvk ͉My^7n n`8Fqm1w o}:oo]0\ehܜVn~ДdjxYjj2KItRZt-c`Ojm$ c5lZ%ξ?[u̿d\>WYOc\ʝhk miYh*i-@ԗ3 4ڭR[o?H;qIC"RSjDjXFjDDz~˄\\ Ksi2N-x钝J͡*BCBJ`deIn`R}3{Br? r"2#`̮_wץcW4O`t72^oa24pQ8YS97R*^B`d+dF4Z9cg6$"gDZΈB ())Ia!M6S3ƥɐ 7e'&2Ga YZ`  nܼU@ftʬr%ͼ܉FSbݛ@"K@E$i{ZU=I\EcG1n`Yؼ kG&r@fFD 5ѶYY4ZL@Q(ˣ hTvfG˩eر5@YVWyX#J|ju3 hR'\~/ h4'r'2Y&WedA Ԫ;9:G J7{uP#q XG*P%AҞ kMM r7\C;UwsyLT.YY(/uA2Hj$!Z |$'st:nF'IF4q4`}fL^_vX71y>. 6]]yS6G&h{A"(*ɩXth28V*O1 3}d]m7 9Rg /[Xhl*dhl C RY(NȐ x/~o^k{&b^< m>$GN{ #sr pV0l;iu$\M@C~֔pњ54eHqС'|s/G@={;Ň>Ν6Ul :FTԖ l^hdԎdr+M"/iNϾD]@Y4%Ye!y 07`A^z (sz.ρ{O۠-O=a\Md`"XFy["j\^{qu.SW:BnR,(@B*=-8r+/{HI0,}&{1MO}8IzB%pF$5ֻwc>sw }bmAjA*Ŕ9WFGãK`aw~dNgɓ'C4V7P\A]HtJ #K~#\YHWwLeMl4Ԣ?/-^`Uq t÷w98N;(Ij8_` 跧XYzk͚5 06Rgotʙ ,2//M- O~t _NZ W9ROQ:~\^y5LW՝, KS٪d-K=^s}n̊GAxz'RPjjr94ݧ~.?<>O.-7 W!+;Yg|K[<͚Ed|? %w{Ao(2a.9'!y|_ &XtTRJҩSO 1} ?Lxr,WQ 9\g_~6D7)u ( /'{#)_F!BN/\ϥ'7ק ޼5f6T2G}ArGqG2o}`Nwu]YRE}9.[>7Co5d`  PX`Df  _L.eB_uK- yL\⩼~Goir`.qv8H0.BO)++H#%vT\n߸fa\#)y^+/^'3c!z4. [>l\dd"$ TrzI9\vqIW>z/fBr/V=E[arϸBTR:u{c,弗5k8C^UO1.Hέflz.g?oTZZgȒ}Jg_f)ħ g2t( [M 7:09w]NhU5^nk .!5\0.>Yg0%ײ\9Wv~VMK.̎,ìY53\c 3蘖Qd2}3Iӭ[l-}O$[5Z;0r9wێ˗ɓbQ"OHk,\=$wqy<Oʉ5E"q_Q\&\f¸$D_xeweEK K.\0u 5z;B˖-{@ne%r2ZqYSǛ@D%Wfa-vI$*7gmn?U'QVRȱ,ZSlc/RCr;Ď0fEk@8p`8i`D_ w f%l|y b6[$v&> V 9EMm"]n=1#'GrT tb2Щ?Ph.1EGP|KVHsva,HNˎ\Rn `X5z3 iV(.8ڂhRjk ŀmgk .x)R?qj!GR/5w\;7A%rH,.ʒB8UV2Z[ 4IHfXˬ+㒓HwjSxa ˬRRdJH.Zg63ۄ[ vWil>.B%H1t\_N!KIh% ,@s4K.; ;փo^Ce\ln޿[%@ĬaFGb\2qML|@]B/9Bao\ZϐqHm:zPI5>>E˗C("H$$rCsU..] A&ONaY=z2cf4lIcڂT"6ɴfV1}Vᘠ)%lrDswܵwnKGhE BP(0J5UΑ}pxE%yeqԠ>9pAYc\5= 統ueF!.*(."3Bxs ʼ@~q~~r9dBr]rý\APg)BV)V'+bC.9xAK\~r"ej/׬),ٙ66NL_& : ?e˖w(3Rd FEwΎ4a^D5I4++gX&bLRMM*Mu`tBn,W_a}̾}>\U>7 JaJǹ`5(X^k0k٠~v2!.3cazȉs4T$*l_Xlo1A]L']#Q܋$8,b#rzp2$΁Irb.ɺc/;8-TTFT.qqfX<sS)8_J~\ táÇf# Qh5cݺK"-dx"5G+0K+o1mTΜJGBay*fBqQ#svwBں cZ.0dBV#y># pKPBvQq󆐸A/R|j|C@yC <[ٯ8P!9ߺUINb&SKp( KˁJh9|}O'%-Se{wG;ᱸZӓX,-#o9C.Î8K4`L,P"=<f57>)9&R(fA"IK QA]Ǐ7*ꘒXm:5a9ڊ At9[xw,%/$թb55,%(I$nNo>.^8&OA"y MW3Yow$;KYƸA@4 S璼e!AAhq{n(!-{㉘斅'.\@;[įzó:@=ff+}e"hmEKGu\ƶm͉t5~kd mmQ`[m~~t kzNWPA7/sRゲeą}L?}¯=kFO'OBUc9sƍOc}piNjny#qlF_ߞ&,t =31q){q5sfSE5!t uB H1 |y=XjKL hK?~l5d!~~J/p- {#pvo1vl([l6|ŲˬH7>nfe9 ퟊MKd:BaWKb-8*C;rç`? /5i#jtsܼ/fdDR y8vfJd4WOd8\r+Zndqq%Of'g]>FAOVY"rA'Et$xqu%:+lrw:(_zwU|V؋Vٻ]w\ H ( nwcZ,9.ZZNNZ A;U]Zȱk~s]4(]&R<;RAACݭ/ wO-K:οB;YBvz db!Hntgh[AcGi)q)]Peml2rjqm~ȝ+͟2?ز+$+Jpv3-t _V 3p—P<?0?X!3$Pr_ NRluøh4#(ӓť6֌oi \fwхdxbg7h97 iigfg[͂Bgc4gf \P[~< И31p<܀Q\V>.feccK$׏6'dM!Aj%sE*9Z:}d>? ,23;4iv%r;җ˕A;K8Ÿo 8K:c̶ a\uX#ܫc޼p&U7o^Q\(ܧ|v% z@0uiee;;g~ҪeU*LCnQiqFGg ;d3탖])+R,tC̺oZ4 13˷Pf϶,r;ˮׅ#ͨCy0j(.Ƚ,X[@̉"0jƚ*UE`Hn)pK }<} '%־47Ԧ [R;SRjr-\/)8~(K< //| \[Q3BQR<^K[tr"v\Zv< de"ډ8A2*W[XKK}?i-b{lkn.5 P}unRF7.-&|5̌(O TX g55_uAR)P@ːq`?ZW*[+rLcrM,Tٜ'T$켍`(*7bh'sIdJElBˎ]5Xpd!TKqe n)Ozip&hr \ `I$>)tQA-x\H.Tb\(8VCjs~\::T1YAu4[ h`FE#F (}9*(b/t^lNI.P ej-A%s(749K .IlOpANq.o7(Db%Isimue$Iz}Ijsq\W95^&iX@VJ|oH}%hjЪt҄VBnk,ƅ}I f0n޾8hpZC0.v!.?A pRd. \Yt .:SXύM IoG 7~.qf7Ѯņq 6 cLPo1UESH_$TTz|%$c9 qQ$D˅u.8.-Aq1Q.Ve[.ss%37,C!@Ey*drqI9q]J]W1Y2$9xnvr%$Ů˲A`&JZL)qa,Қ dH)ӨH_< I·Hp)vL47yK;%ґdil$.V]TИ2K]8P* nz'F(iA_,D#^%^ 캒V;4t32/]%/b$\! ǐ,X@&f n,__QTGc13;|%%& E\-@+88C)jHhmT y%,`1v%BBЧ5[ƩA2"*J1\-#%_=%60\ ݒ-' Rd>+ q, LyaLƱ#}zz2L1߸%N99&mHv v,b F;& \0eY,d.zF%춺ɅBLN By(#ϯݞ\ '?!v|`Yp~2#ewƥ,&a`RdH M)TA^t|[.![l::@,X[;ih  A@Rh-[:򠏚~L"H:%A{ [t9pM#,IH_Dle=hg)P΋0 ɥ)Z>h/#W+M<#'i-ND.XǿcɞQ$&BȭT K+ ʬgɤI* xL6s2+lJdCdSJBҺ\0&_^H .A\P6ZD.|x7;_|IDAT-<,]ҕ?"&Kx29eqHa^]0JN'+ :xZ ʨd1O&+v!ŵAAA!ۻtݬ *[ZպXk .إ̤p< e0.h} Jlt3eb4_F$dO3>{'=,=A]]f]f]fffi/7nBX|3,MA]]7oCrj' SB~.>ALeQjXRu5@.IMnnBpa0TBLI5L@Acj(1dY?uahDq` % 4WS_#TYCJezV;I%2e;]ed2Xe!C"dc&AE-!TXA"eԬ@+P!}ɢG>dgl U C\:>@eC\Y,?7G#<Gɔ.i8Ln&))J&g[Ȁ܋`̄W.`EPvSX x&6Vcq)e~. vt5$EK\.Ár[XNLkŇ,:&` D W-BqMtB˗LP",*:[%i8tcST U.'A]H9$N y:!)bj-T* œbe4qZnf:>5@YM"9˗ YBBy 'S+ODI~dKQQ9$QRT02, 5y3\*!gDnNN?_DWDtM 82F-mer\B. b: D&J8^?Vԍ\.[#@$;ZLfpƬ)\B)2Xh#ˑ8~.QGqP?#.7DlF&hL'SƁ&)f Ogh8(@"1X :D(I6Bs&[+x c'A`MU($q:*)I.r5 ÁHʡ, ɭa@8sd-T3t r(kŪ *DI92!+`0$J݈N±QȴZ 'iaqQ͈D#X2t\M **KJwӵZp4P8 8<'""bXEƊBGaLPn, +/k߹w }@i,\:.PZX c|w,G,fXDW*hwۧuFV뫨PN6NE.3X2U nTGT\ 7lTm}amGz7lXXd_k$TrlUV(J&jkokZuw{ouzz'V d3[5hki%+葡1(*Z;M .+\ ]:m[Y+vEQl\jnU+)jjzFPoMUoo̫C֏v0, <6f(xDU`@E7V=״^ȼζ6EF5Um<PDȱܸYYy`Ѧ6M6&n}q(Bϑri_p G^lk;nioY?72rI7Piݝyzi/p,lYOGJ oqvҎW7GmNl_bŦް``y%-lݝYԟoя&"\e?z=xl%%%7A.&&^~lˆPK|JrA[X<=ϮM_boh?7\2tkWUzG\_9ZX.-+NWt6qIsoWTL[Uwhën}rNBtwCCWO[.hD^0v.+,i>i?VTT}X޽kUwGB^Mi~)+"Kρ=wvᷛz#/l ^scxۻӻK؍P |]}f]N\:wWMݛ\vmꢶNtuc7UU%.EG##^UpPe*ry9{۳}-Xұ7][r{GJ==W] [5} M 2=nn^q\{g72*ӵ%gWػ$b\6t/MM}f?;mqA u+ε`\mug%%%Cگw3"ӽsˋRpX0@s 鞞(j.)i9{ss;}hhCpX s 6]ZynhzE)²v|ٖۯcy |F ##}7+Ž;K6Fv45]i;hO9yr Ũ#.lHo0t C{#}>Wߗws+5=7.q+|n= +J.,O<~`u=M}%E_2r W܋G=.:7+L1}НQg1: i)E2 %7uSSӪ͉#?7>tw/Uμ"U7bxajq=_j=%k x݇KV[Y98( @o8j3z\p:NFdS؜ŝJq\dWtoב?t1XҀ Kno%zWNO޷Zv@x3Uݎ:T*`R\qm5Sgl2QyJ9Fkn qXN:ྱn[R jQ,.|ZXgyJ5nkk+7~\j6Ӄ%SI$^,&96Ezwŏv=.R-*zTjk+ 5'wKKx|!-&VڹYvr3)<Ã=@z0nDmob2b*B1gL6\ QnK# n F<[,U*v{r]1DV1\.WMggV+wGM2.9`x<1ȓRVj[=gx>#j\ ?} 1! NGM<=Q|f|RӴJ]^7-zQzt8}3 [!note] > Many of the resources on this page, including older books and videos, may contain out-of-date information. The Hugo software has undergone significant changes since these resources were created. These changes include the introduction of a new template system, the deprecation of various functions and settings, and the addition of new features like Markdown render hooks, content adapters, and support for mathematical markup. While some concepts may still be relevant, it's recommended to consult the official Hugo documentation for the most current and accurate information. ## Books ### Hugo in Action Hugo in Action is a step-by-step guide to using Hugo to create static websites. Working with a complete example website and source code samples, you'll learn how to build and host a low-maintenance, high-performance site that will wow your users and stay stable without relying on a third-party server. [{{< img src="hugo-in-action.png" alt="Book cover: Hugo in Action" filter="process" filterArgs="resize x350 webp">}}](https://www.manning.com/books/hugo-in-action/) Author: Atishay Jain\ Publisher: [Manning Publications](https://www.manning.com/books/hugo-in-action/)\ Publication date: March 2022\ Length: 488 pages\ ISBN: 9781617297007 ### Build Websites with Hugo In this book, you'll use Hugo to build a personal portfolio site that you can use to showcase your skills and thoughts to the world. You'll build the basic skeleton, develop a custom theme, and use content templates to generate new pages quickly. You'll use internal and external data sources to embed content into your site and render some of your content in JSON and RSS. You'll add a blog section with posts and integrate Disqus with your site, and then make your site searchable. [{{< img src="build-websites-with-hugo.png" alt="Book cover: Build Websites with Hugo" filter="process" filterArgs="resize x350 webp">}}](https://pragprog.com/titles/bhhugo/build-websites-with-hugo/) Author: Brian P. Hogan\ Publisher: [Pragmatic Bookshelf](https://pragprog.com/titles/bhhugo/build-websites-with-hugo/)\ Publication date: May 2020\ Length: 154 pages\ ISBN: 9781680507263 ## Videos ### Hugo Beginner Tutorial Series Welcome to this introduction to Hugo tutorial. This series aims to take you from a lion cub with basic web design knowledge to creating your first Hugo website. In this series, you'll learn how to set up a Hugo site, the basics of using Hugo layouts, partials, and templating, set up a blog, and finally, use data files. By the end of this series, you'll have the foundational knowledge to build your own Hugo sites. 1. [Getting set up in Hugo](https://cloudcannon.com/tutorials/hugo-beginner-tutorial/) 1. [Layouts in Hugo](https://cloudcannon.com/tutorials/hugo-beginner-tutorial/layouts-in-hugo/) 1. [Hugo Partials](https://cloudcannon.com/tutorials/hugo-beginner-tutorial/hugo-partials/) 1. [Hugo templating basics](https://cloudcannon.com/tutorials/hugo-beginner-tutorial/hugo-templating-basics/) 1. [Blogging in Hugo](https://cloudcannon.com/tutorials/hugo-beginner-tutorial/blogging-in-hugo/) 1. [Using Data in Hugo](https://cloudcannon.com/tutorials/hugo-beginner-tutorial/using-data-in-hugo/) Creator: Mike Neumegen\ Affiliation: [CloudCannon](https://cloudcannon.com/)\ Creation date: April 2022 ### Hugo Static Site Generator This course covers the basics of using the Hugo static site generator. Work your way through the articles, and we'll teach you everything you need to know to create a professional and scalable website or blog! 1. [Introduction](https://www.giraffeacademy.com/static-site-generators/hugo/) 1. [Windows Installation](https://www.giraffeacademy.com/static-site-generators/hugo/installing-hugo-on-windows/) 1. [Mac Installation](https://www.giraffeacademy.com/static-site-generators/hugo/installing-hugo-on-mac/) 1. [Creating A New Site](https://www.giraffeacademy.com/static-site-generators/hugo/hugo-directory-structure/) 1. [Installing & Using Themes](https://www.giraffeacademy.com/static-site-generators/hugo/installing-using-themes/) 1. [Content Organization](https://www.giraffeacademy.com/static-site-generators/hugo/content-organization/) 1. [Front Matter](https://www.giraffeacademy.com/static-site-generators/hugo/front-matter/) 1. [Archetypes](https://www.giraffeacademy.com/static-site-generators/hugo/archetypes/) 1. [Shortcodes](https://www.giraffeacademy.com/static-site-generators/hugo/shortcodes/) 1. [Taxonomies](https://www.giraffeacademy.com/static-site-generators/hugo/taxonomies/) 1. [Template Basics](https://www.giraffeacademy.com/static-site-generators/hugo/introduction-to-templates/) 1. [List Page Templates](https://www.giraffeacademy.com/static-site-generators/hugo/list-page-templates/) 1. [Single Page Templates](https://www.giraffeacademy.com/static-site-generators/hugo/single-page-templates/) 1. [Home Page Templates](https://www.giraffeacademy.com/static-site-generators/hugo/home-page-templates/) 1. [Section Templates](https://www.giraffeacademy.com/static-site-generators/hugo/section-templates/) 1. [Block Templates](https://www.giraffeacademy.com/static-site-generators/hugo/block-templates/) 1. [Variables](https://www.giraffeacademy.com/static-site-generators/hugo/variables/) 1. [Functions](https://www.giraffeacademy.com/static-site-generators/hugo/functions/) 1. [Conditionals](https://www.giraffeacademy.com/static-site-generators/hugo/conditionals/) 1. [Data Templates](https://www.giraffeacademy.com/static-site-generators/hugo/data-templates/) 1. [Partial Templates](https://www.giraffeacademy.com/static-site-generators/hugo/partial-templates/) 1. [Shortcode Templates](https://www.giraffeacademy.com/static-site-generators/hugo/shortcode-templates/) 1. [Building & Hosting](https://www.giraffeacademy.com/static-site-generators/hugo/building-&-hosting/) Creator: Mike Dane\ Affiliation: [Giraffe Academy](https://www.giraffeacademy.com/)\ Creation date: September 2017 gohugoio-hugo-6abdaca/docs/content/en/getting-started/quick-start.md000066400000000000000000000151761507671574500260520ustar00rootroot00000000000000--- title: Quick start description: Create a Hugo site in minutes. categories: [] keywords: [] params: minVersion: v0.128.0 weight: 10 aliases: [/quickstart/,/overview/quickstart/] --- In this tutorial you will: 1. Create a site 1. Add content 1. Configure the site 1. Publish the site ## Prerequisites Before you begin this tutorial you must: 1. [Install Hugo] (extended or extended/deploy edition, {{% param "minVersion" %}} or later) 1. [Install Git] You must also be comfortable working from the command line. ## Create a site ### Commands > [!note] > **If you are a Windows user:** > > - Do not use the Command Prompt > - Do not use Windows PowerShell > - Run these commands from [PowerShell] or a Linux terminal such as WSL or Git > Bash > > PowerShell and Windows PowerShell [are different applications]. Verify that you have installed Hugo {{% param "minVersion" %}} or later. ```text hugo version ``` Run these commands to create a Hugo site with the [Ananke] theme. The next section provides an explanation of each command. ```text hugo new site quickstart cd quickstart git init git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke echo "theme = 'ananke'" >> hugo.toml hugo server ``` View your site at the URL displayed in your terminal. Press `Ctrl + C` to stop Hugo's development server. ### Explanation of commands Create the [directory structure] for your project in the `quickstart` directory. ```text hugo new site quickstart ``` Change the current directory to the root of your project. ```text cd quickstart ``` Initialize an empty Git repository in the current directory. ```text git init ``` Clone the [Ananke] theme into the `themes` directory, adding it to your project as a [Git submodule]. ```text git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke ``` Append a line to the site configuration file, indicating the current theme. ```text echo "theme = 'ananke'" >> hugo.toml ``` Start Hugo's development server to view the site. ```text hugo server ``` Press `Ctrl + C` to stop Hugo's development server. ## Add content Add a new page to your site. ```text hugo new content content/posts/my-first-post.md ``` Hugo created the file in the `content/posts` directory. Open the file with your editor. ```text +++ title = 'My First Post' date = 2024-01-14T07:07:07+01:00 draft = true +++ ``` Notice the `draft` value in the [front matter] is `true`. By default, Hugo does not publish draft content when you build the site. Learn more about [draft, future, and expired content]. Add some [Markdown] to the body of the post, but do not change the `draft` value. ```text +++ title = 'My First Post' date = 2024-01-14T07:07:07+01:00 draft = true +++ ## Introduction This is **bold** text, and this is *emphasized* text. Visit the [Hugo](https://gohugo.io) website! ``` Save the file, then start Hugo's development server to view the site. You can run either of the following commands to include draft content. ```text hugo server --buildDrafts hugo server -D ``` View your site at the URL displayed in your terminal. Keep the development server running as you continue to add and change content. When satisfied with your new content, set the front matter `draft` parameter to `false`. > [!note] > Hugo's rendering engine conforms to the CommonMark [specification] for Markdown. The CommonMark organization provides a useful [live testing tool] powered by the reference implementation. ## Configure the site With your editor, open the [site configuration] file (`hugo.toml`) in the root of your project. ```text baseURL = 'https://example.org/' languageCode = 'en-us' title = 'My New Hugo Site' theme = 'ananke' ``` Make the following changes: 1. Set the `baseURL` for your production site. This value must begin with the protocol and end with a slash, as shown above. 1. Set the `languageCode` to your language and region. 1. Set the `title` for your production site. Start Hugo's development server to see your changes, remembering to include draft content. ```text hugo server -D ``` > [!note] > Most theme authors provide configuration guidelines and options. Make sure to visit your theme's repository or documentation site for details. > > [The New Dynamic], authors of the Ananke theme, provide [documentation] for configuration and usage. They also provide a [demonstration site]. ## Publish the site In this step you will _publish_ your site, but you will not _deploy_ it. When you _publish_ your site, Hugo creates the entire static site in the `public` directory in the root of your project. This includes the HTML files, and assets such as images, CSS files, and JavaScript files. When you publish your site, you typically do _not_ want to include [draft, future, or expired content]. The command is simple. ```text hugo ``` To learn how to _deploy_ your site, see the [host and deploy] section. ## Ask for help Hugo's [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question. ## Other resources For other resources to help you learn Hugo, including books and video tutorials, see the [external learning resources](/getting-started/external-learning-resources/) page. [Ananke]: https://github.com/theNewDynamic/gohugo-theme-ananke [are different applications]: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.3 [demonstration site]: https://gohugo-ananke-theme-demo.netlify.app/ [directory structure]: /getting-started/directory-structure/ [documentation]: https://github.com/theNewDynamic/gohugo-theme-ananke#readme [draft, future, and expired content]: /getting-started/usage/#draft-future-and-expired-content [draft, future, or expired content]: /getting-started/usage/#draft-future-and-expired-content [forum]: https://discourse.gohugo.io/ [front matter]: /content-management/front-matter/ [Git submodule]: https://git-scm.com/book/en/v2/Git-Tools-Submodules [host and deploy]: /host-and-deploy/ [Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git [Install Hugo]: /installation/ [live testing tool]: https://spec.commonmark.org/dingus/ [Markdown]: https://daringfireball.net/projects/markdown [PowerShell]: https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows [requesting help]: https://discourse.gohugo.io/t/requesting-help/9132 [site configuration]: /configuration/ [specification]: https://spec.commonmark.org/ [The New Dynamic]: https://www.thenewdynamic.com/ gohugoio-hugo-6abdaca/docs/content/en/getting-started/usage.md000066400000000000000000000142071507671574500247010ustar00rootroot00000000000000--- title: Basic usage description: Use the command-line interface (CLI) to perform basic tasks. categories: [] keywords: [] weight: 20 aliases: [/overview/usage/,/extras/livereload/,/doc/usage/,/usage/] --- ## Test your installation After [installing] Hugo, test your installation by running: ```sh hugo version ``` You should see something like: ```text hugo v0.123.0-3c8a4713908e48e6523f058ca126710397aa4ed5+extended linux/amd64 BuildDate=2024-02-19T16:32:38Z VendorInfo=gohugoio ``` ## Display available commands To see a list of the available commands and flags: ```sh hugo help ``` To get help with a subcommand, use the `--help` flag. For example: ```sh hugo server --help ``` ## Build your site To build your site, `cd` into your project directory and run: ```sh hugo ``` The [`hugo`] command builds your site, publishing the files to the `public` directory. To publish your site to a different directory, use the [`--destination`] flag or set [`publishDir`] in your site configuration. > [!note] > Hugo does not clear the `public` directory before building your site. Existing files are overwritten, but not deleted. This behavior is intentional to prevent the inadvertent removal of files that you may have added to the `public` directory after the build. > > Depending on your needs, you may wish to manually clear the contents of the `public` directory before every build. ## Draft, future, and expired content Hugo allows you to set `draft`, `date`, `publishDate`, and `expiryDate` in the [front matter] of your content. By default, Hugo will not publish content when: - The `draft` value is `true` - The `date` is in the future - The `publishDate` is in the future - The `expiryDate` is in the past {{< new-in 0.123.0 />}} > [!note] > Hugo publishes descendants of draft, future, and expired [node](g) pages. To prevent publication of these descendants, use the [`cascade`] front matter field to cascade [build options] to the descendant pages. You can override the default behavior when running `hugo` or `hugo server` with command line flags: ```sh hugo --buildDrafts # or -D hugo --buildExpired # or -E hugo --buildFuture # or -F ``` Although you can also set these values in your site configuration, it can lead to unwanted results unless all content authors are aware of, and understand, the settings. > [!note] > As noted above, Hugo does not clear the `public` directory before building your site. Depending on the _current_ evaluation of the four conditions above, after the build your `public` directory may contain extraneous files from a previous build. > > A common practice is to manually clear the contents of the `public` directory before each build to remove draft, expired, and future content. ## Develop and test your site To view your site while developing layouts or creating content, `cd` into your project directory and run: ```sh hugo server ``` The [`hugo server`] command builds your site and serves your pages using a minimal HTTP server. When you run `hugo server` it will display the URL of your local site: ```text Web Server is available at http://localhost:1313/ ``` While the server is running, it watches your project directory for changes to assets, configuration, content, data, layouts, translations, and static files. When it detects a change, the server rebuilds your site and refreshes your browser using [LiveReload]. Most Hugo builds are so fast that you may not notice the change unless you are looking directly at your browser. ### LiveReload While the server is running, Hugo injects JavaScript into the generated HTML pages. The LiveReload script creates a connection from the browser to the server via web sockets. You do not need to install any software or browser plugins, nor is any configuration required. ### Automatic redirection When editing content, if you want your browser to automatically redirect to the page you last modified, run: ```sh hugo server --navigateToChanged ``` ## Deploy your site > [!note] > As noted above, Hugo does not clear the `public` directory before building your site. Manually clear the contents of the `public` directory before each build to remove draft, expired, and future content. When you are ready to deploy your site, run: ```sh hugo ``` This builds your site, publishing the files to the `public` directory. The directory structure will look something like this: ```text public/ ├── categories/ │ ├── index.html │ └── index.xml <-- RSS feed for this section ├── posts/ │ ├── my-first-post/ │ │ └── index.html │ ├── index.html │ └── index.xml <-- RSS feed for this section ├── tags/ │ ├── index.html │ └── index.xml <-- RSS feed for this section ├── index.html ├── index.xml <-- RSS feed for the site └── sitemap.xml ``` In a simple hosting environment, where you typically `ftp`, `rsync`, or `scp` your files to the root of a virtual host, the contents of the `public` directory are all that you need. Most of our users deploy their sites using a [CI/CD](g) workflow, where a push[^1] to their GitHub or GitLab repository triggers a build and deployment. Popular providers include [AWS Amplify], [CloudCannon], [Cloudflare Pages], [GitHub Pages], [GitLab Pages], and [Netlify]. Learn more in the [host and deploy] section. [^1]: The Git repository contains the entire project directory, typically excluding the `public` directory because the site is built _after_ the push. [`--destination`]: /commands/hugo/#options [`cascade`]: /content-management/front-matter/#cascade [`hugo server`]: /commands/hugo_server/ [`hugo`]: /commands/hugo/ [`publishDir`]: /configuration/all/#publishdir [AWS Amplify]: https://aws.amazon.com/amplify/ [build options]: /content-management/build-options/ [CloudCannon]: https://cloudcannon.com/ [Cloudflare Pages]: https://pages.cloudflare.com/ [front matter]: /content-management/front-matter/ [GitHub Pages]: https://pages.github.com/ [GitLab Pages]: https://docs.gitlab.com/ee/user/project/pages/ [host and deploy]: /host-and-deploy/ [installing]: /installation/ [LiveReload]: https://github.com/livereload/livereload-js [Netlify]: https://www.netlify.com/ gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/000077500000000000000000000000001507671574500231515ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/_index.md000066400000000000000000000002501507671574500247360ustar00rootroot00000000000000--- title: Host and deploy description: Services and tools to host and deploy your site. categories: [] keywords: [] weight: 10 aliases: [/hosting-and-deployment/] --- gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/deploy-with-hugo-deploy.md000066400000000000000000000114371507671574500302000ustar00rootroot00000000000000--- title: Deploy with hugo description: Deploy your site with the hugo CLI. categories: [] keywords: [] aliases: [/hosting-and-deployment/hugo-deploy/] --- Use the `hugo deploy` command to deploy your site Amazon S3, Azure Blob Storage, or Google Cloud Storage. > [!note] > This feature requires the Hugo extended/deploy edition. See the [installation] section for details. ## Assumptions 1. You have completed the [Quick Start] or have a Hugo website you are ready to deploy and share with the world. 1. You have an account with the service provider ([AWS], [Azure], or [Google Cloud]) that you want to deploy to. 1. You have authenticated. - AWS: [Install the CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) and run [`aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). - Azure: [Install the CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) and run [`az login`](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli). - Google Cloud: [Install the CLI](https://cloud.google.com/sdk) and run [`gcloud auth login`](https://cloud.google.com/sdk/gcloud/reference/auth/login). Each service supports various authentication methods, including environment variables. See [details](https://gocloud.dev/howto/blob/#services). 1. You have created a bucket to deploy to. If you want your site to be public, be sure to configure the bucket to be publicly readable as a static website. - AWS: [create a bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) and [host a static website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html) - Azure: [create a storage container](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) and [host a static website](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website) - Google Cloud: [create a bucket](https://cloud.google.com/storage/docs/creating-buckets) and [host a static website](https://cloud.google.com/storage/docs/hosting-static-website) ## Configuration Create a deployment target in your [site configuration]. The only required parameters are [`name`] and [`url`]: {{< code-toggle file=hugo >}} [deployment] [[deployment.targets]] name = 'production' url = 's3://my_bucket?region=us-west-1' {{< /code-toggle >}} ## Deploy To deploy to a target: ```bash hugo deploy [--target=] ``` This command syncs the contents of your local `public` directory (the default publish directory) with the destination bucket. If no target is specified, Hugo deploys to the first configured target. For more command-line options, see `hugo help deploy` or the [CLI documentation]. ### File list creation `hugo deploy` creates local and remote file lists by traversing the local publish directory and the remote bucket. Inclusion and exclusion are determined by the deployment target's [configuration]: - `include`: All files are skipped by default except those that match the pattern. - `exclude`: Files matching the pattern are skipped. > [!note] > During local file list creation, Hugo skips `.DS_Store` files and hidden directories (those starting with a period, like `.git`), except for the [`.well-known`] directory, which is traversed if present. ### File list comparison Hugo compares the local and remote file lists to identify necessary changes. It first compares file names. If both exist, it compares sizes and MD5 checksums. Any difference triggers a re-upload, and remote files not present locally are deleted. > [!note] > Excluded remote files (due to `include`/`exclude` configuration) won't be deleted. The `--force` flag forces all files to be re-uploaded, even if Hugo detects no local/remote differences. The `--confirm` or `--dryRun` flags cause Hugo to display the detected differences and then pause or stop. ### Synchronization Hugo applies the changes to the remote bucket: uploading missing or changed files and deleting remote files not present locally. Uploaded file headers are configured remotely based on the matchers configuration. > [!note] > To prevent accidental data loss, Hugo will not delete more than 256 remote files by default. Use the `--maxDeletes` flag to override this limit. ## Advanced configuration See [configure deployment](/configuration/deployment/). [`.well-known`]: https://en.wikipedia.org/wiki/Well-known_URI [`name`]: /configuration/deployment/#name [`url`]: /configuration/deployment/#url [AWS]: https://aws.amazon.com [Azure]: https://azure.microsoft.com [CLI documentation]: /commands/hugo_deploy/ [configuration]: /configuration/deployment/#targets-1 [Google Cloud]: https://cloud.google.com/ [installation]: /installation/ [Quick Start]: /getting-started/quick-start/ [site configuration]: /configuration/deployment/ gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/deploy-with-rclone.md000066400000000000000000000031261507671574500272220ustar00rootroot00000000000000--- title: Deploy with rclone description: Deploy your site with the rclone CLI. categories: [] keywords: [] aliases: [/hosting-and-deployment/deployment-with-rclone/] --- ## Assumptions - A web host running a web server. This could be a shared hosting environment or a VPS. - Access to your web host with any of the [protocols supported by rclone](https://rclone.org/#providers), such as SFTP. - A functional static website built with Hugo - Deploying from an [Rclone](https://rclone.org) compatible operating system - You have [installed Rclone](https://rclone.org/install/). **NB**: You can remove ``--interactive`` in the commands below once you are comfortable with rclone, if you wish. Also, ``--gc`` and ``--minify`` are optional in the ``hugo`` commands below. ## Getting started The spoiler is that you can even deploy your entire website from any compatible OS with no configuration. Using SFTP for example: ```txt hugo --gc --minify rclone sync --interactive --sftp-host sftp.example.com --sftp-user www-data --sftp-ask-password public/ :sftp:www/ ``` ## Configure Rclone for even easier usage The easiest way is simply to run `rclone config`. The [Rclone docs](https://rclone.org/docs/) provide [an example of configuring Rclone to use SFTP](https://rclone.org/sftp/). For the next commands, we will assume you configured a remote you named ``hugo-www`` The above 'spoiler' commands could become: ```txt hugo --gc --minify rclone sync --interactive public/ hugo-www:www/ ``` After you issue the above commands (and respond to any prompts), check your website and you will see that it is deployed. gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/deploy-with-rsync.md000066400000000000000000000077351507671574500271100ustar00rootroot00000000000000--- title: Deploy with rsync description: Deploy your site with the rsync CLI. categories: [] keywords: [] aliases: [/hosting-and-deployment/deployment-with-rsync/] --- ## Assumptions - A web host running a web server. This could be a shared hosting environment or a VPS. - Access to your web host with SSH - A functional static website built with Hugo The spoiler is that you can deploy your entire website with a command that looks like the following: ```txt hugo && rsync -avz --delete public/ www-data@ftp.topologix.fr:~/www/ ``` As you will see, we'll put this command in a shell script file, which makes building and deployment as easy as executing `./deploy`. ## Copy Your SSH Key to your host To make logging in to your server more secure and less interactive, you can upload your SSH key. If you have already installed your SSH key to your server, you can move on to the next section. First, install the ssh client. On Debian distributions, use the following command: ```sh {file="install-openssh.sh"} sudo apt-get install openssh-client ``` Then generate your ssh key. First, create the `.ssh` directory in your home directory if it doesn't exist: ```txt ~$ cd && mkdir .ssh & cd .ssh ``` Next, execute this command to generate a new keypair called `rsa_id`: ```txt ~/.ssh/$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id ``` You'll be prompted for a passphrase, which is an extra layer of protection. Enter the passphrase you'd like to use, and then enter it again when prompted, or leave it blank if you don't want to have a passphrase. Not using a passphrase will let you transfer files non-interactively, as you won't be prompted for a password when you log in, but it is slightly less secure. To make logging in easier, add a definition for your web host to the file `~/.ssh/config` with the following command, replacing `HOST` with the IP address or hostname of your web host, and `USER` with the username you use to log in to your web host when transferring files: ```txt ~/.ssh/$ cat >> config <5?Ty0rԘלϚX2ż89p0JM[ܽS3TyTywъ_z c]{^Qbb"CvzuFMtvat_8zP";w$i4īDEEyC'*RRRTtKrr딒BQ7Zb'Nj|Կ/ʗː(ULȡ錝0C6TV {ZP/B ZӃffN!,ϾlԯWn޺׮QB9UL2|'"I2앶aggǥ't|{!Rnk7nЬicOhy{y9x)›a[aܘ,~6 S>1̰͕.ѾS7JX2} #i WnO^OLLdT^74mٖgϻGU R,^gU۾ʃUi ʃCfKӰY+|J;&-pto }LUp)AAjmT7x{~< 7x[鈓7@J [Ͼ<|8þ9yp*Uii֪?,kz֫^!?M U)O˶ͬo7\}0zG]PWJ×5;/a Eb"N;];3v<}2_*öӎZ0 (]1&%,[Xž}ӤeNʃ}ݾ)X^c&LFu)OVxaV5AUjfoǟ)xk:* n/&0k(Uc8+WȪ,4fkU^/NGVٗ%YIX>?J)Z⟓ H4QDY|Jǟ3q_N!leTTUfz\N'l I0|f>SP~0ʃ_~?W6G;4} r_9؉NԮUM[ѱKt4ХGnܼES&Ҍr*Ou>KBBӫ4!+Wק &YQcVLc>رk=Aw Wʈa[ Μ;:r**2cdXq36oӺU ƌIJٱk.MvǫjQ'Lztʮ=?Z?W̘61>1,\R|~oܼ3M͍NÌ>];s&O߹;˧#EttL9I||<n|ԯ/$q^$,cƖ!O%&|a4/7oݦF4.K`ҥ0i ԯ[++K3>GLL Fb_kW6~ܽ{7n8Qҵg_:L Pu^H('Q,W-Yn;~.*>3'Ocێ]uh1Q*))еGŠC;<"ص?­w9NG&EPx3cdz MkpS'Br{,/Z+CHG1 "EO|\"M50|޻tJU]V jת@ 1m26|.>C6tte)eaw<~>ɉybԘeVzZ-]{aTTݺp9u[7:1QDEE3~Tj5+Zˏ?FRL8dM(TPϤ93ޞfM/ї9{.]Jtt ǎe!h4RVr%[J:vaIJ# 4h**U;3l㫯l*udTIV$C*_cIJtEi}R%oKJѐaF&N&*U'Xɣx^\-^&*UҔH{(UOhk>R%-_*m;~BU=dQ$[Jھsh_U۷3R%lXV%[JUϯ-*UfKFxdTIʛ~EUgxmK%[Jjجhm*m.5fHVرdTI*T5[i﷣dTIwHFڲmdTIu64%[J5g y}JHUIl*BZ}̚3/&khg%[JׇFc"ǀC%[J0xt%Gf855<}?KߦCgV/]!wl*Q2gNqނ%[JpIH;W7ol*iO?F#V8|1qdTI'O3,3ԭȮ,|yiǕaaOBE$[J4,i|}>ndTIc'@U;wJKi@JJJ23yБtɬΧ{X%*U҈O?.\$*URFͥb^~RBBTvI#8i>3!o#G-~cX[] UugUXZZonYv\ŋ訤Sj^ɮ,1&m[ŋ{HHhen]:٧#~킺RV}Ns*u_ݑ4|>uXZZr9v[[[BLL,Gki֤ 9`eeE;P:,oы; ;/?9uν{FWE%EXbYJC<},:ndh>z/u>x  =|~k16^5-*č294m܈)_}Z6Oqwwq7otѯg_pF֩]KKKBBBټu;ڵ]֜=!})))XXSkOLsQaeeEbb">0S+-5a^h7`pݻ#SڴneXT$>zN3㱨YτGD09h1H1_Z4c 魬?ki,{{s VnݴmiˍxpvVXϐW%_R2kLveazyr;wV2QQ1y^ŻIǦP(|o9v0q~r|љdooOٻwV4jXL~Dѡs̶([4%L:vAOrTK'#\L.G2؞X[cmcÿ^W(,]΄SS&$q^fN7v_L5-\ @(z]{ZIy,U25򯵤dNGZ͍|$ص' 7s=FBBM7xTߜHH_vn"/\/OO o4x [}{gnc>8|&M{ɓ0u V?ww}K Pԫ[;ۖ[CG;~/^j|е3tY%ժR|Y.^Bb+̴|٢%˸p^^;*uFoq֮ .DLL,_L̤ _>uhז=#|9~,E)W Ғ-[p2ƎWϛt삐䨫˓PN-6nʉNѱ}[6YiB,e^,[gϝV̘6Q#9ǒaa0qrrh EyԬNN\pEدOORRR(\ڴ6z>>L0\i3\29yy HPܸuͥZF:4*gg3gӦuK~i^s?__̛'^PQ#tѯԭS.bΜ=GfMLixxyvvڝ>r9-\LTTÇaİL?m>tju/CToaqQtiƆ5+SJevϦ-] n-|^9Æpc.^L…(]20k^޻ÅC<KKK֮\F;pQfu7aeZv?ڙfΒ+Xn۲t :{~_ /eg.cP<."~w^C{.4oڄ.^Çx)eaqss% d!6Y%B}.^uZ2e%O.^̜y Xn=Z49f\2%GLfw>Ǎ… k^MzkB7^Z4nX0eKpBԬQͤFhG:LݩV2wom:|ѿo,{L9m:rԿk9͛f=mk (ާ\ofN#yYv vQW3gپc7ko@&1xmu&/v= [ݿ%ҒϦ0Ax}O3T]A(xފ^AAy  FTAA QAA( DOA?AABTAA QAA( DOA?AABTAA QAA( ,]X\ 'V$!GyŽ6x9_"v!D\\_){2 VŜ CNQJ,,9Z_ę&j܂]4ZW.rAczƄwˠX0+mT,wcwC%/Lx^5nAĮ`Sb-ӊ -*wl,gl.>Bvy#AȞq r&X3Z gy)[fV`/ 5<쉋O093!?07nAĮ3YŚߝ<}E`/_'BͬūEK`6;2q&-r&X3:/6* :Nwp2gOb 7m:MIŚT㋍ݫO)dp;b̼osrrŐ`6k++Iq@&CPLL!?+@.C&O}\&W\s 0Ug̏̍[Kgx6e..ϼfo^%lTScUb*+8"Ƴcy3>HpL(+~:FVhե"oGVx3ZhR.y`l[xH:2_m_Ȑ#Kˍ=O>_..b^uKEEcE7kݸkE>#fG9y+K2aL+}uI[ӡy3mgL f0oh.$$IC>.It:н\ҥi_xn,VN(tё$,I ~Ξw%:u5Z~rwE۹m"iuʞojOVBjа\zoGZXE>Cs&]<.6ZDBܞMyE!oU`6ywA.Hx׈:ZR+qW vrʢ%/ͶOZ܎u鞫rs%Oir}:>xp7}[x9P 6v9IG1,{^tSc ?ŧ KKSRܽ'ZJ5}رo cg6x›鈌"1)$}666qtezym!E'ӱuq,]jcޮBɫ2@s)[>!c_YPޓnQ$߼e29Γ`\]K%ܾcLJe̿e[bkgE&%ZϏxM 7bT`m)jXskR<~Kccpuu yD<52$qFq~ʪ8[A>H:rd= $ W t2De$@ui~\79tόls=EDȵ.DJ I2Pؘd/ōKfmS IDATh.nYJ󀶲RZסC;#A;5Z k&95{v-قmVcZ-vx{yWx{y`ogVG_M3\e+(~PJJ v.9boZNKVlAl_f?层cg9I7$&&RV}JDӧo:;2R$>k|OY?7￷CJue<Ҷc\ٞ1х >JTl^+|dȐ!M,Eش j 3dX0:\~5*'cX>,^+-> HPkHLРms Z̵  9q&C`jC;chb~*(t:O "Eqws\\.wwW8*x$L? E!),'e?Z ;< 77zfw/PstœqVCظ8}~\62Toxmaayc90yڌ7LuՏѓ/oBrNJa ߞ>YEZ_] f8egj-YFæPyTyPRuVܷ+C鈎&660/Z~QFDJ0~+3ljYS'+Š>פ<}w鎗_) u' m;vK$i4īDEEɪ5wNȕǟwed>n@BHŤpgnb#Z7Y$@pGσhz!Ù;q8S' "scƂtEIXXacΣXZ-682EIJҠNH &6GyC L&,Pk3&IJDբjS G;PɉGBtt4?3>CwQJe<Logvr Vɺ49/yV/:֌×i 1`up{G'Y`di;r ~q0/)k˕-Q1<|ȤsC~Cvv,:0r~QFwϥ91[w^$aSXN)!1 eXˆO?1ӰA=y6WJSjJ7uVdA+-~!w@UP#&$8ݍ#M~9k*yOg?EILFCԙ!_4э웶tRǐm)q1̟3G6n-&-28q-K3 9z3ן2c_]Bwr*m"E1`~{,.¸8n?IFP ˑ_io.\f9#$qS̚;g|2z,O=DC˶qǯd9NDJJ f|çх?j{y_LV -37ZqaV]B` :vkWq`vF2'aa <Rq{9O֚?B U)GHNNU#o`9|ׇn`Sho)W&E|VK4l?mQ4j/>e?i*}¯d9гCޚlKnLסH1/W7Һ}Kٽ8.< 1:HˤG*KK-ѡ%aS,Y[a)|?N;ȟKzRΞtޛg\p-ڠnfsok+wgj7k\ܬiݰ<-MhٌMs~%S{F=˺L5}A^(,DG$gxSETkoYNkP}=fÒ 0#i<̥ӡ1`%j6٦KHq~WdڳXKE@Z铥v2=fugܸySA.Sf lml:d̯0u҄ti {M[P3m߹^~[tڙ.:l %%}|>F{;q^&OIFg~c uԢN4iԐofL~:vFu<&oOr c$yʂ>la? ݺ/]{^4lP/Z=Xz-U*WWn{,w[Y1D\hn`˶oG|زm~6֤<r 3=C :: ɟ+J ؟3G*U(73,\kϾtw=&M s; /KL82s 2RVvQʟ$Q9B(fױC$ 1AsEڃqOZUxexдVr"qrϕ ,'sf53/τH$it }|=os__ݛ}F>_UiSvr,7',_X|̘FN=p؛G`->r̤0mܨ!ݻug~>|:r8ngæ-<{whѬ)$k>J,I{0x8KӤQ|ïݻ2\$Dܗ.ς\!QCËHt67 zzc&))^o֤1[6N)dfoz~r9p09xc;1ʡGٹk=w3ioBkC%(]kfx:_Yu&bLR?#/SAc ̉ҕ©W&DE{ݽ֩Py2,ZRtp;L쿦}ߴƥLoss-ƶMkٸv}{`æ-l۴,ޞ6;s9ֽ{O ]tL,Y73CvH~ Эb 7)c;p, d!thuK7\@Ro7 <]-pU~{Y) c WkXH޻[AicrEF.^F'LÓ$%%acck<7-ҙ-NN^Gla|&PiS+}F̺ V:c+++s _O}$Ig~G Uq }?r7*W*~8~d3G_e諜?BBS{pL(wxǥC-sqzPC!k< e]X"!u3mӿ,5Zbi*22**8] L+> J޸nccKF iټ)[7~MRtI4jHҲE3RRR8ta=ViAov-[Μ>}Y<=_ ~ƉfN95S=e<^r}:ct:^Q(@җ'N]<&9ܽ|oluص蘤Vħ]ʹ(w58hݲy8{vPE:<}YQiy ]]S,ۯrC|R"ϢXxʮuu1uWB=f'Px+ޞ BJ85bpT&**uBOx^Y8 r/Ds*g7*0uLݩEiutZb)( Hw:yw~m!Z={d66Eyΐa#dW8DTt4lش5k,\+++4 } Qdݧgw9ƨ18w"Vx{y1h4C[:uɞ޵3FDD$*3 pcr9 ץiFfGy-cM)02R::2dWųyS&9Eѷd4_LJ[H wNZѸQ,^']:qƌko$,jTJ2ٵgV'̯da}ߥ;M7d :/~eE$=ž_+t@2(æ0d$RºJ,R1ϙ4u:=AeYvm; -ؠ(o<ص'v6nڊ=#8-{Zf7-WZTּGĩIO?$C-o gIbC2Tx,m\8щ:t'Q3{Vt]*Y܉{qM4 Ov_TpP\=TKE&Q'΍0 LWW@QQܽJtL )))$'{ٮ\L񲬺{5 6IFl$Hh%Yn^BLYԼ_xD>ǘqۋ%~4og[پsWVQcނ `Eԩ] fNBGG;ABb"#}nt凹KzzIA8{} ۋQ|9VYws! .@ѢYS#mbAJJ $ %Ֆl\.|3k.koʤ<̘61?!>^gѧW~]euIih) Nu-V3NAJOnoX>W6_`8},-7eU9,Zص{/];9#obYԨV5;eݬ^**q*CY_4M6ۏZɏE-;XСg=Θ%۔I׏j2\wJO*C{ Kak7O*J@PYq}vc_yW8[;+ZUQ^7Ύ>^8qBB'"z-d2X.xJq CKcھGCaa!֭8CKL&g@x1VKLlJm'^G +͜8p^IBc#aYGZ eh\x~$QfIQ{reߋ-h!c%Uv~N}6T߻qSlm-q8axc`~!_bfWe={*y W( IЏiU(K,/b1y7g/Y=C%N&K!Ñ%&w[*HKl''i\8+rV!F,Dŧض?4^K{ӡwU6/?w~XY[pl(^3xlSJwÜ o;+{&3\&VSȠwΧMRjN Ir7pKmrڅ:s?3v4{>c4NBr%qrTBwEDd4\zX|f"΄%7D 3'ֲ5,|WOG k^zc66ݔ-ݸ%|sm`DJCȝɉE y-/D k&U|+ /ߢx:;|.&RMB6YK4n1}x)Q1r 9Snz؇Gpa߸&f{dݪܲwnЭK'' Ve3m޻~êy ;@fMr_~=S4t/O;vawfTk׳oVEF {66n߰mNVKgAY0F`μ߹˩cxƎPncĨ1|5e"7..;`01d2>ڙ6q)ڵiHNNpvnr $$$fy\$Áܽ{W{&$Iۻ(=aqaA \SD[4ꖷ,MKffn"AqO)%TܗٷL1\t丰sK-~瑗9yw˦gɒE<ǂysXlC{BGqٵ[wl;{;Rwօ1Q\8w'+8~1 r2cpjтk ~8T۵{kZ-!a{.Gc?q%_xn$LHʕnYO.LέZrw>?R\b)/> uji tmKD ԑ8fUz=mvl_D䚵,?cٯGpcϣP(ضe=3R9sq^^͛4zŕ~ 'S:5џT)&&B99uӱ};J+BUX222cc000`OT*n 1ro"0ܺfLL]iެ)_RɴW&TZ˝\9~Z[2~Eƍ Ҳ¶VGMkJ+bo╗_3#<,Πj075 W^Eie[rRnij~> 쇥^ϯql2&Mckcó~>ɹVe-W8u =gʩ% !%5Cݺcgk@v\FԯlZOXhp?l(έY?*`G@OLx>&MӶMkT*b۷ YiԒ͚܊K?0{Llmhެ)C}pi 133sfMԲ\MH⧟ގNڗj ( 03+v=zFF 6ԗ]Da1ח&M3PXaSYYZths3teuEPǤ^$%5}_(277COO066rLOM!xl۷qS[ ,I 6l6~z{V~%>^ԯWJh49MJJJ‚|i訪Q۪̞'NFP(LP'SQ+SӘB<,?՟1:8# oZzUS`Aӆi peN>&'⹦`ddDݺuu;wIqoڠj1/Jieō7HBbZ!A9FdZ23~ExXh*/6a42qIO`لƚ'O \=k֒ՄD~=ڶiM{g*?QuV$%Vg^e7xa"wBx S]#pwΈKqQ1]tVyM|yy vŗe}Q~>|}zE䚵ܽ{I/u:`TT*=}t*JzB`OK fPZ-6ŔZùx2*AjZ:=z%_1~x"=#x"rM4z3tD /_QŶM1$%w7 b7cC瘙2< g:vgsHMKKŭ7.I`G ?؏.g|z9r8N-"4|< ߏ+5tq{/`?  ʋg0ft0Sfw-qqn)10Чo>^=0y`\TEc##CC;pFFlDOOSQ5yi4tqü5qs}B}AׇKt*Rt ǥlݞ /D0Ijۑ ?`P'ݜ_)6Ϝ`?Ok'ݜjyBWRr2y,[&忑BrobHLLzMzjHl_7O[[Ž7n`o??PbR2]zi6/CC'ݤEwXo !B'/'B!F?!BZB?!BZB?!BZB?!BZB?!BZB?!BZB?!BZB?!BZB?!BZB?!BZB?!BZB?!BZB?!BZ>>IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-06.png000066400000000000000000001357411507671574500323450ustar00rootroot00000000000000PNG  IHDRQlsBIT|d pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx{xSe/ JN^ Rig8{hg.h] E9ϢrEuZ`Ncʞ!qtFSxߦӂDCWG6mR&纸ҬóV<ɆB!D{ B!.- B!B! F@!B#B!DP!"H(B`$B!H0 !B$ B!B! F@!B#B!DP!"H(B`$B!H0*%5ԟT,Gio XʣwzeGIׇ+vF<+Vo([gQ@) ]t~׃T/gqdܑFV쓞$Ћ i'Okɿ3osy _Own{qY5'M!iFbŠo0>Y߸׷q5Ng-}ur,4/UZ>>Fyl=}(|&wN`EEo SoM11>pT ,{;m~?&6<ǪC:[znnNoզ?d/C 6a? *2o▁gBP# S] W.< B6C^JvY>fX1w2@tn<谛jg~dI3[xͽT).Kmw 2;gEa^F`IEo23sunx& e=ŕH&\ۮgy|RoVm;PRx/Z 줴Ňf/ nbyAMD(q+K5)|IֶN. ])P#'e\OGmLR$;d;G( .{$Ϗjin4|h}q?M6 Dz$5*m;듘:uc3M{ohw9ģg8j䐷yWw-Z_X nȺr ""cSd@=S: cSP%ގ[bd&C 2đ8TehbΣ1_nzFkDߙd}m?8S|]a"dEg_~rli5/y#/ֳ^Gwme^&ZC ĥ6ͱar"d^*+ٙi)F,f=q{|`k8TBT8`6-tSTiЋofбG='acהQ\/Ux7cC ?cӳЁϹ w'Ӹ' s,g]bnklS~;y[z%]Mu|>HY .sWj)J*jJ0TK&93sȞ_mmY/FB=9OLNjZgeTxjC(* ccHCMl,ލ'Fȴ4,OICepD"?KcctmM֯xv#PsϗI=DŽ:gY`h2T.]xѓL갏=kVNi%hZ3y{ L NO/s]~~Π,hTFC]:[STFV g@C5mo`o%>hl@KPև=;nj .o3ǜwS'V4& >,z8pNr,wXeo Ps¤`? 5q_"x o 'G`BӨ3f dxl7u#^@'J _}E4+9jPʥOPO?NsΟSWy=_Kn,\hE qƞV,Ue%kgm _ǃ>ˇoM&6sn;V3a<=.,AQhliadD̄(,TИjKCT;+ۥ}rjQaY0ddbVAEZKo%0̙(jMiB-(b!FcdQzan<6Gߩc:L+u̽%jLƚ5j\<3EF]/a(ӐjݒJ WfcY,Nq5z3fp,>1یɘT;Hm>nnAn}w$7ˏ ϴwݢjp;\\8j"?FJګv lOo ӟr.[8ƚt\Su:A͊{hn=Y[t9tBm۴VO`SZM'6)*Wf҃;8VT(, 9S]}d[Fjj37HmbVr(!L 6tM*7oN7~lKknMy$kVҽyT̙Yo"wUDMj9wQb-3~Eq+Ӓ Yql 궲e vv~[W<ϸSP/g:sar,´ӞVXx;\ _X?cb]UF{ nŻ86^0*L3[pT^ņAOA'+ooaikk3sS/O1L"SZRv޼"np7~ۧW^.r횲kR݊ïfN4Si@ WۺBm? %1f@ _F/??ƗaIdԏ%qN4%5*rMP”{#w^06ۇ08Ah`:r }?F5I7gpOrFOgpVj k]T)۾a]e3a@Gߜ\G͔!^nQqGO(hWcտH~b~j}Ym bk0pP|Հhix/#?x?Z>6ioQ䃲,9]^jL*,ag9X4xܑ֞:ܞz` vK6X΋ &^6dKYzSnϊ]xjA( .*u=6e.0wU%ذ~v{Y˲UyԱZ͊B+3A!yXPCюim:RЍ%:(@=58-U=fKlD=ocЇSSL{S[K3-݅'Cwkyz O]IW2 y2a;8C_njY-GNp>^/o&8W_ai}7-xR| {[ΧNlwif̂ܡl~j6ҽ GDzv=4i߿Iwes88fX1 qL"Jc :֗!M8A9zՆ,^|b:)ڸ"MQܧgBm$t;먖* 4!PjR4b ASj@cϒF ܯoǔ&t%8fL4_ q' l;oն6J̈wmr Qʡ0_v=Wid8aT&+ M.…[2EjwM9 6 žr<o[H fEo;*Z[1uxW']Ұ˄IUE⃞vgb7!@\E‘9;w۴?Rop -% 2*,D4+](6X]h!wawYr+Wxpޚx֢H"rBUGcQb(02|S:wׂ]7i(6~W[7N-NTGzBA!j SFPMQ|rd9X A@+Ep^ڂcs87/hȔ9әjɬYl _!wd/BJ[`)(vᩋ 蚁_nY&9{t'r{{(Z'3~5ԑN ǻjLF?]qlqJZ#&o忍m!qJN]:`|ط/ZGًؒf K;딆n Gة3ɠ'᡽XWv"-xϬ^u %DG۱5R‚gF=?cZĜ~8p4XƵ՚%lwޏ3(g 5Cp H[8AFp;ؗjռS|d4c_>?ϏM0?g׋m1qAS6!tH5:UftQ,+CZT'ZqVBrd ]}h 4@} `YT`$'lrd󛶡gݬY:# T|<*Yvw˺ږ*X=2ݑan/sc [Vk6Y>ʍWIaOU=hcĶ4MC*UU=`61g,Bqv)T(۰OUgf%z{&(ud,W).66#7EzЌ#'V >ςPìȈ-d{'-x "irŏU١X&U򈓰an2TCh<̆d5ؾJ;5VV(rJ7=GM估9=2 eW߰yժgv3o.ځfJ>"63 Ln58 (8 j@5Sx¸7rha5uu-c1T?X!> jg{LpBy2Wn=o:5ktZޘ::dnNfHgH_z{JjnLcS}.&*:wA]ęw/عG mX3k+ԁj0% {[q[G5CoG n?~#XN#ĝ÷17k(*b i=oyjԔ? @m3ղk IDATl qփnbcϺOPC-jiRdy{slt7`Amwz"Q>kgPBeŇ]i&jlBK#{jp5VQr̶z8(EbY[x`=A@,/ t}t;3 $aч3@#ο6փ5u-d '8%tlQnL9aR7=e#23t~v/{xT=Ŷ3E.#M4n5 ۇK M=M %<-* jZ@gAvwǧt6|X?"jFs>ljǰ^*oI20seOEH=ߒTmm@t  31k>Z2gl)[rqڔ=by[+|tz 'g @|Ljo]s0 t=zHU7v(?×耾kx>θ1y#8͔OÔ.Uցg۟6qVåFA~~5h}钊쌘,Bq1߾:hQm45g1+4z7 a[qc'?ΎdC(mk_,4zV16M*wxF 6\?9;R/M$591B;(救4tp S*}?Zsݸh x5H7 lxA}'_|K2a7Vwnev%^/1/‡eN^scGy|-ՔT sM%hԻzv]CxxXKz}{YMX;GfvaZ)/sۇx y+KV.clu?kTvvmt?~ >=6W 移:2lљ;6E-;6[c`lT!7 bk9\=ױ3T⛻ L1=c\'\IIy`_dOmejf2/>>].Ξ̶Kf/ʼnz̲gJcF>k;gF8W.a'΍1PGufα 8ȞАN+dr[YS"l(L8cŎLAK6[9|y4JGUVBtyǼ;)UDr0MqY}E}ęb!y:?)OlҡQ|x{ >YB1eJ ߬ 'xR硶LR,KVʪ<8tFzJ))=u iizpPkϺ3,}}uܳqLB:j m h3NvQ\ .3ŦP ŻpLSƸk]79وAPZ Yȉ)E0Ǹk'7[aŬn+.NI˔KYЏ#bOQ`IèUuSQSOX3΋s] z[WQXɑ 0&ȾvĠYXM*^%F3Q|65߹Qvn;>khSbOwicZi$"1Z?FuH$%Z^ϟs|"\?]L tӵL: Ht4P48-o93?M2'c&,a[uyM#ί%y~|l.B ׳qZ3`_b:܏ #ً۽ap/ibxs+* yc;k6>ڇާɉTl``w ,Ȟ3 Efa7i T=sr xMxz9SPzdlZm%7ijTbc+,*0Q T dͽlOI#ՠCEo-YpnWs`7PdNh${T))yhKʘPn[0q#8UJ'HMatrf/g'3aQ_E9g|e"B]2"A|o[N>@C:S׳.jE.j 9=}Ba9i*隸S?d+U⛛p L}u 0S٠i|3G Ǯ(Ucʚ[sx޳6cv/L2T領܅},}n?X˜L=ױɧXN9<,j籅J u!2 wQE@g%?ySg,_܇ͨ*܍?|*S]愞=YxqޛuQWcΜ[ܯ3T%%eWLq4vN1%u<0ܔڍ Fwul1nSs}[ mR?ny{dlO8[iݚ!>t7#LovP~?CC氾uR?~pOgڥ%CQk}!O2Nj??0]s6Ij~MCM<%6 o7yNkyꇃ֏̨Ud[gדnж?/w z}2ZT{2M= LVɑISVGȌ;ڼ OOLCQZ*P^tJh)X? o:Vw 2m"t36^Mޔ=ePa:ڌv:G_Y6x[>f9)U)/N69ٞs!|?GY.tMT,'{gJ'Vб<^[Y5[*z &&gYF_ vĥ,`6?ʘʠws<2I@ Oz wpQf"X0N^BE. QE'Za&fj!DoPttfMyq}u 9w\q]Y2W Jgy A04W(΃6bEE_;"q46D/яܼ<|H4 @%Ri0gK!qvr65}P@R?n1~|F\B$2"B`P!"H(B`$B!H0 !B$ B!B! F@!B#B!DP!"H(B`$B!H0 !bulJƏi"*Pcp+!$B\oߋb*a^T\@OɆ!8_=8Fvڋ %3X6.ΕR,T2.wkWBq!Ƚ${Ғ=Ks)vG}"H,zZ4;0a%{68}(]Ԗa}dߙ42~ǣ/`WϧJd7~g:;BmZN;01e'Yd0},\SSCxGi:vm E*n?42Fac z)YFޗ[<[vgLgo SoMHu*N;bۼ8U˶rx!XEL59s~;X8)?9[X:>9NV'cE#z<{^@B\$(D"Qr+vUI`j*cC.*†|cUxxLLrsg+qVƶӱ'4_h0b P,ܻIKbO!䭤1/_GL* s&&ŇǽM ~Ektٳl:C.:NȢJo?5at)VlYɨC|^[ '2vVh,^,ŊN&ୢts8JY: W{( 0c7EsoeogjhHM ڊï21Ze9r>02lTJ*/(q<ˇoMfdkq?N~Ba8* 1m3W H~T/c-;\΃|h̖|Ɋ[0[Xjk X3xix2^Uqq%l{m:-SZ!KYѲvOX^<}*Jj :&N[t+mvwSX'lm}c{F-uo&>k-EE P޼Qu#AX37[0o) ?a&u>clbi][mbJ70S gP\ɿlǏecx IcBS#yJ%⟐t tY Xhk -aaV2R\ZSR%,ņEjndv ;qv []<fnW=3ƣP3vAڔG᭣{a` PiTu^TgpQ%‚¤0@ cBU[(<gx={;)pA?OjS_EﳧWK;lȗQ%B3Pa&&#+ P[%ZYEf:2@O`̜3}-^[lqڢ3DCji5@`mk@V-ՙ2[2K0xVVSӱ [O;ΛxΈ l{6=U:82lr !I AFZGB-H q ]n3^0Boԟ-..p:+fW+/cMr OlfU }y5gQVg"?ǂlk%`ך:T'Pw)]׋za@7\: BJ\qŒP<,]v0-Iq ׶ GS9J7o"uikzdK?o9E[(, ؾҷ2tamUԪsϳB\ Sί4Dr:tHdZ"՛RȞ9(\Ͳe}vlLf'(ys /pbd|H/#^Y2pВ`z@2:{FjH^gUZ 啄Ԍ'i1P]~)Yj@EF_x\=}5x+ i!C]8nK$cN;uJ*pw,>/I&=H BaYQU:9YmЬd'Ct9 PT{@R"`omch)SUE٥6hM?c ᥵&Śց*e:}DgTh2r"/cJgQŊ/clLaS2[],ZI !UMCH`2h O k?6Ϣq<{6lҡB:j mv{^Vk]79وAPZ Yȉ*w1TF㮤.tn? yj6KKg濖c0|Ju!Tq쮻{9g<];9 +fuXІ/S?'1d h^w%,KxؑqA_L-? Ha x1]l,YZ`9j|{f,Z)>**F.Y~ss8Z"Yɟ=Bg%^g0TLVfΔ֠Um46}_:3wP *fLf'v3/TUWdRsX۝Xyr7{#h%,LtG`DB3s!|r7BqYlR_V~[#J 5B! F@!B#B!DP!" !B#@!B#B!DP!"H(B`$B!H0 !B$ B!B! F@!B#B!DP!"H(B`$B!H0 !B$ B!B! F@!B#B!DP!"H(B`$B!H0 !B$ B!B! F@!B#B!DP!"H(B`$B!H0 !B$ B!B! F@!B#B!Dp ?I)FO_!"_ @s@ ͹9>sq8t}ukHRпnB!iP >0IW, {Бc{/wSBq>JC$Gj{ x$}O!J|oB'N^\$\Z!jr%GHR.w3BqU(݌+=| B!2B! F@!B#B!DP!"H(B`$B!H0 !B$ B!B! F@!B#B!DP!"H(B`$B!H0 !B$ B!B! nԩ7orӧ_7ÿ g7IjnB!R^.NjGs.q˄B@+̟ݟis!dvn5`_ߨ'O0pP7_ !*dCnĕ~nQXfn6Pݐv _@п?kW> mB!FU;Wr)4553lh2/yS0LKg0MM.}CBqU ̧g0`.UKF!Bs ;jQƳ.of ȩw.A {AJ_{ŧ߶$_ldE;g>szOJ#_n?K[;g>3+up9wλ|{mRፅ|ywփ|+?7W !W;nun6Yg㪮?2 IDATT>sBxbRF! ؤ.{ɮ5t\2XioidK%nBT#qD~9?(*(zM'SW.zif1//MNۅy21,_זqc[ѴYL}hansb߲̙k9E95{)p{Z˗ibo[6Ӆ42L#VE7hpq1Zng{~d,\ 1. @$iɁ_aC闘lv7`X&?%1e_| n~& $41=1 K'9K埩vg/|E] \Ja5,YHkÿlA{YKd mk LƯ:O=nD&naѪK~K4/GDǏӯ_nQE|A8c-lAaI#Y{--\eyp40"H̼cgwjH郤Uyy,d]K0ٮU_Z魨grOMQ`#cWpjJԉ+>&+0`J~d> >#>G[T}yp4~!ĥN큢3_~Nv`n噋$ tn\"G;筓e?NFx"f MPaRaçx2ՋbE=@OO+lLLһ}v@27 \C½/prbذVF06{*3T'Urn{[.+J>5pw,g/yguIu.6nM 'ͫ3wu~<66Kޙw (N2+bY5~8OgrD?qJn-c]=g0V\ ]L,3+J7Xfʽvͽ/{UE'IJ$$8KXb#euMFL(MOgҼ=VbҰ߱c7J|CYnV(G]SOޗu[x7+)ta1yrůR}~49%K攡ݾ#Eop5|(a!=z5ι}u?~E] RmXǧچ*Mʊ`7@퇯D>8> WuhEWgf`匽& UW'2z YMUPL:$"| NkUi񩌵z}zy f£#5l^:O-=y= ]w/9XH ?[A|<i>$\Dڸф_'\ÐARC;Y;&;ΒM54-1H,)  nEk y>vAZ0[jλaI{ǗhҮNfll$i6 i{r#śq<^d }v[`kȒoq\]’w/5p!-:~kXyWԫlnIyUTu4n+^\̲q-XuR:Asv6`/-6T´n԰\Nk7>8+rׯwNg^~+LDXW%xp?8goLe;9tk.𱑒T:L%;H6}1{'ޘM{q65(Mkp|6)| 3,{g0hE4lbJᥟPSI9=2>:%v K6QX blF`Y )efxdn.k(̎!|>3h<=I\޲Ժ"Irw}{ nlx~VȨng޴(m$- v4QXP#b9κ{ս2'ُٳXg#v/&c&tP_#N4gDOGS^~؋װ$;MTmL()aw ebL%a͕E7dv +i~҈$nX7a$}0͟CRvs1֒rk%8TQK*ωO$[>;WQNA3y)' _ŏºrKԾc Hr@.32kN y`o" =y3 _g+kNm$& 6P~>M=}H|ܷl? ߯Q]_rǞ~?2LĨs*8R-஢IkqgG @^}Y?ɬp:LrR_Ʀ 4npw [z ;뱁@R2⦬h;lMZѡވ@و pZAL&) AairB khJml ?p64Wy\( tj't`NSV]"ۦf-c&+iPCa>lS5Q XS{hBQ|CgQFk}|װ8b~ZWEGṿF[U{!,uYma6lBiBk>j6/<ƙ܇hnΙH=} 1M7ӇunCMdevFؗc<JvjljqW{O./`H@pl?-\GP2#YAq~3gx LJev6oaU~%9Q_)q0ݝ~6@{Izl> nmSs;ch&3Ium:ݸxTw~.~B`wOs:%<NWe0*J 80DJF\'t;X~Dk0zv @7 n/mk&Jh9+!.*V^{mW,[a~אh|=+OiIm?p?I m∋FoD IN%J(syzlJF`C~!DhӭҎncVy>ntuhk`c۳vv=e9)3g 85atOnKO/R!脓IΝ91<۞{8nHߣ>o`?s/3z#.ȡDGyWY{WVU1'3#fHPA d1dgERA9Iᢶҁ[_0,"gMgrLg21xcsƑ/`;~|3Kqq _O> ǧ%lFJJBgg=6&eX{ԛL\JF0 07=T~mhS\;/74;<1& ip y Q]JDŇ(L:Nsh&Lu2Cܤ;0́zϣ|)#CĜi !OXʹ莿[>c632GN6x MvV^>@?M0 {elHmKC'퇳AB䘉<$b.ȊLTR }:|3;F0ǴQ?֞%QK·#/Hۿ}l ߥcǎ5Xǿ-.HE/0!2s={lO<̘#iJ:8~cnjN{)Vv|,̔~yN%9''Z w>syI|@p/ھD4q'?ߟVW>G}® ZP-֔`we$Yg xnj̬NVw][8pT6yd'V1<)U{"= cwߎsɨ`cb ςA;K Ʀ,1+Xt&wKD. O, _I'PmU{򧿬 {APt2o9rQY/R'rn>EAkc PoaJ~;3?@}k7H˙Kn3A,-܍c?l$&1%sZLjOgz 4 -"_ wÅQ/z|}yɇ *߫ 4мx};EC"^Ry+W%~<$I_=t)}L[{[mmtF|}tˇ{HԵ-"""^r /@kSDDD.=ZKnu _ߞ[J7j!;+~X"""r*n G;!`/("""eEDDDQ2 """"^FPDDD(x@/("""eEDDDQ2 """"^FPDDD(x@/("""eEDDDQ2 """"^FPDDD(x.@4$̌T.vK`7R/v+u\ՃȥFtN)usO淚 ͥ>>$_xA`tu)_!#oF~<{IEDDE o\ñcxicGg]A {5kѣߋ(DDDQ׏pIn75U]! Ǐ{~_w|U"iX5ZrDs!= ϩtgomoևUk fmcR^"3'M֭bu%u!!  ,_g앎o|9?ztx~1Xb [,$ ~Ӆvt]HR}IJ> >V.-4Nf^ ~Fo#""ң/Ç {qsٛ,taDO䁜8‰O3N~ԙal>n%*6R'1%9ɳ4癧KN^ɷpk病XmՇǂpo!;{'<л;^k'e7AՔ93sJVK9ͽ-e]y ۮK|:99><eY{U'p%+69k AG3[Hnݓ>IX G{ѣ3gDE &6ł7?$Nv?an:,݆_ YolXb,@{3ts9{T@zS1*EE>U@d\a;Z ,}-.Bkrzu+[0" 7tEtr:x+ϳv30B<:67XKGpp> P-iFru.n`w"$pD䒠@9,]zf 2&uқ~{b  g$0pFVpO$5;WQ<}(QrL2n ")+pN Cm*BaɤEV:8l<36>h:ٰ'h5M|Ogi3q_p8Ff`IqG Y̆E7_Cx[cL a <[ayr^&8)^$7Y̜^308NM)lBļl/I_g$rHAa~wLvtyΑ-u"9Ib[I~4P)Q~BN%% 0X W۾Ǥ4 yϑݶykr~b eԒ#&2kv2sm,x`1 &l59)tRQZ '5[H~9vK>>qR=+'h!ZGL[xG8vuUԚJa^ZEDGs.bć$[f_>uvuCٺRI1PRڈ A3נ-`w1;Aׄ u3D16Ϻמ0t$'199kNZh)ܝdƷI'~C_ˆ>ga}e`{(FY}缏|SI -c]} ngEl28VlgDҠ(f͌' ,,ewwܩ=ZV@pzιǶ257AhFEQʷIblgPQ$ZXi?e8>DFa3#0 jYM ;YsVYC-Z, uYZ_#g#oVmc/x?gԥAg~sSl mŏq3%(߯.`s.rx(dGfS,A IDAT<g$Oˆy2vm.+J~N$h5!!dݞN$P+vwݓ羏c?YS:ԏ$*,^z0ǒ'XPBܰ58\%pIj;sym[pT'L,ᠡr /!e_=$9QVy"2C33ȾE;,yc5*?Ĩ'p#O?ё,w?$ 6p28 (ob0'/OG$2]l]Unn, <(O]I.oEмm;)ZSYsG֒7!l  a~-y{LD. `=@~#7}632Gf4yzaBmk6dKj ې^%,JzAq mkiX\Poq+&Cw%hw`3@x/1o"-v%lT@XCm*bCiư$rf♗ia {d~>?I 8>Ng$9?mx A<ӛHp`l>BH4mS M0|45>(/aCAefqw2. VmNѤu 8 FM# 3tPDܘ(IZpb>Lد;txmL"k.֬.`T fMg'uͿE+l${q{LD. GZ{3V%M6 w] E/0!2)C{ mAL`y: HBҷXS^dg)$@cLU |MkHR>&G_&iQ2 """"^FPDDDhHa|BB;VWV9IHJo-x"""rR#~tm\9*0[[{M___ z=4*8y*iQ2 """"^FPDDD(x@/("""eEDDDQ2 """"^FPDDD(x@/("""eEDDDQ2 """"^FPDDD(x@/("""eEDDD`õe%ʧ S?;?^HDDD.5c֬ X\/Z[xCŊDDDR؇lXDk-:ᡸ|vY"""rQCȺ>?bY }Ď]?7ZIIq\{˓ppNŝ ڋmI9L6׶lt%O=0wNŝ3`AQY`ǞKǀחq֛A]LiDa'Wh*NzYƲ%ջ0B# 6̯ D8BqvΉ-3 M[8ýU %,[ }-6r}'.JDD.=qqL?C>MO %d? X `/ٓvئkW"oFX}YnV27bNMys/gUQu.=)!ԭbuwr^o4wgjs%JpZxhhf?:\~,c񊍔5aDƧ3eJv@27 \C½/p ~ )x}Fl^2lĆ%/5S1smrY.. 3o"F,+r4%O侜+Ƈ+YAm]X>ɷBpr\'XuKz{ѣ[wnug#׶]Da=0,+ꊊIՊy~y e>EGd8`Z\`@)W'vug중 YolXƂ35 u;ֱ`6NO%%p| []_iWԫlnIyUT{\/}yvnZ4e0$hPbCϹtAJ8(\:?wFKJ] j,w\Y0k5aKJ>4W赕Ttv\#0 vuiXEC=h3:$xH GŞ~c?O1f4a ^ '50X Ws$&SmpcX:3't=Y>6?=tbYټ=Q~{b  g$0cF Y[vZm %_(ä`FꀠY^a]uYL:sl4Hk69Q df>}F <âMTqXWIs $Ծjo>,4YM.z7Q^~AL/mm,x`1 ݠ+#DžSD0d|Ȯg^[N~xdf|yeV]\96~7fJ !>e).1Gm @c x_w ,qcQWEIb!ӤTlk^ eN(,=Q,Gx_F[X袪r$t b3I:mL06`f&ֽ$:~yp2# `q,(X+Jk Kd?6we&w淚ヿ|Ė;hhl"(`l*4|Z^Dq[ Y,txSb#<Xåg͙ALe]lX;[TR ebvQatk]N{'x-h<K^-@hr~o?^}ͮn'""^Ak˹?~~X-] W&^;/`ʤ?ǏǞGםS :a_f*I4% [MsCΖ26 aK[Ho>Ђ5(dH1]Si ]Օ9p8XZyLX0_z8G㿣wćq %B @Z5k(t£==>-8#\Sm'M$4x߽.' 04v̌oOa&[MṊ@a~x9y6/=XV8wlH`DuWXS;K% r?&23JT >#|r:!kp/g th#4㍊ 5ԭ}#r۾jOn=6 @ʸ(0 ")\pы$pQ[LͳCѸAxP\yS""ҁV_$ :pӖSkPtg~UK<+f-#I=e,ԑXgF̑U:u"nLV7~"wEݞ=#?M͌̑M+ f@W|EZ m<|Gd쉤DsP9f"=8C~*ӯl+lgz>+&Ʉan{v}La>} A&OKذcۘrE]Y]ة<+KO?^xťQK·#{ V}e+L̈y⑟O~g˳%{%ŏ-d] ~:⵼UDělALjz: _D6>ݟa'B(udWWG љ'uEDD/"9kǎ`MLu^zjoִ`&WK(""r)QE^GAM '2N:0dWv"""}z/21 ]H)^gxѣG0?߹+E(;]k׌M9/ |}^8&OjDDDbvC_y=s2 """"^FPDDD(x}t[XDM]=5D24!V1`@EsMw?w`]~Y(Y=zܫTV!1>s;~y6-KY:>><4@DDOi9⡟wF#Ϥ Hw)Jv?DB|&NbY'Y{2=*kQ}F{Gk{mG """Q.߈bΆx(/\;O 7. QtJjqxx+pTװe 1>opucOpců/.m  I(nϾF+˟¾{)J&koǸl7Pn?m3/[M-1 b7gV}7`dmqrX_贎0Mm<_B $]`AW&P\ǟyx) ~wT48=_ό2=_&~7/;'ƐݼC:B0yǘ`4*/Nw{ήYZ<l>l03w?9ݡ<쏵TE8mSQ}Gψ(]2 #_|{eى $8(ZV_ӆ &^gQ/W\`r G~f\n VG" `pHg;rXOlH7Z_b>?D.dNo ̜QfWu|aD^Glh)4,]>,{;}/7uʪj~}i6>~A3W;|62[8į{!e!}?'쑖4vض?!~9r2vHQ5skN ҥCYZ{jq{O+gj*pӿ[ןCu`uC.m=m k_7f 1c_>ƩۇyCRDDDzK߻.LJ,?~>Ǐͷc߹Vy#mb&!;ݞMLn(|{7#-h [9>;sUuy_틶8[9U,""rV. dX"kN< `rӇ||yT57Ŀa8۷6~x>\wCZ.㎷\kOP?&j|?e|s8?vg1Zp#F=*eeGZ{KR%ۑ]F8v}ݟ;Hb$O,'&:yϢu.H.QonQY:3,"[t$Ǐ5u=zLntoȅ9nخbo,Z"CJzآuDDoQJŌv"""iQ2 """"^FPDDD(x@/("""eEDDDQ2 """"^FPDDD(x@/("""eEDDDQ2 """"^FPDDD(x@/("""eEDDDŶ]E'ۑ]%IkXDDD x@/("""eEDDDQ2 """"^FPDDD(x@/("""eEDDDQ2 """"^FPDDD(x@/("""eEDDDQ2 """"^FPDDD(x@/(}NU|poqx>Z͵ﶟۣu/c {ޫQDD^ _#5O{v|KOTp_x*._|#'^qwwqh>׫ ݌y?4vclxk7"xox|_~tڨ{*n6RgC ݹPc?sv3sDZ}\TuFFT@dJVVV͢],*+,+W+Ԯ6gmޔ&fIi͆.((" r33 ?ME|sXѿ@B!ڱuw b;!. jI taD{tc\ +3nnM1ؕG $ !DgesH?S_Vr^~ϲ`m yuӍA=S+Hg|g]=R~i)k`o97ݝHf-\/L2IMnؘG IDAT>3N%keݦ ߙYzgG{,T7U-&:/avR1ކ_br4W`/ΓC}84݁# ,;JT`UY}:9sC?/dZU9q0x"Lj#^׏Bϱ0v Oubsw6ՏzTDƞ߭b*˰ʎў9RԲ'!Db嵴ZE ?|Yߎ FBv`DhzTUHƷ|y+^y!U5S5i~|>k<fv uUdfR9XRG[˽ {݇ZSyu|Zl=+5R-n+I !-M`N=KmLm LYKAM ŁHs(0<噾*lz[C/%նB4<:X o;[ Uc 77y$ҝػ-l{ VwW\GVxj)dOy P)B`sQwkK}aN6T}\3 yjrhg`G !:2"X! awSjn (6[GunnN|>Hg |oUùdM(AuW[[s;iNWկ$b=K{:b8Z=R56LߖmVB+Ms<:ݛ}^2پ/0q@c..Ά@q[5c<:FpIFwPK3άx׏bʹvpYu ngŶoڻQcI2 !:91Qey ]f3j:V m՜4XTjM_ Q,gY56>q⤉3f+6XؔsqP)g:{٫'rX\OfNùw*֥69Κf2[Ŀ d9'B+Pi"!Χ}TK+.s9yuG߷Y8YNB/ϽU`;CE̬GO+X^GXjƊSKG_cV)n64YKRj'Vs>f\ =*F߭Tʞykʫ.6?1nR'mn~Bt2x)/|3 "g *⇪ۈPbshO˼5gy!L3ت ɣ.b,>Ƒ*(#ɟH!:~dc]I%n_ 8vtBti(+?{q('DR7|u!6PԪ.C.MQ6.;_9t?Bt(ndUtZ;' lu}_?!:X7nϢ.$ !Bt1B! B!]@!TԄB\C#Ä^.Υd~Hk_= kNgÌoȞGJEg"P!:ȍyZ$<:)$cNk #sU7%%#97Z{8fv{E ?HpHBF_Dt// |{U?L g!2h8oo,OF^MKF.a7KOQ MƱb3Y^㱵wPCA[+#yrO6ܯOYGve'śsfaWEg'P!:o"%ʙU/`ϳН91I.Q\Ƴ"ܗL|͂1o1CϒY2%*(Ej8NktǠ+O!$uDy<Eq &ڲRP eB,$ZuS=&rgQVyvsL">OBM=3Xi2Ls ,̜^$3fQ;1c_h_xr E%y.R "I:tY ^Dy9{2ݽJY6ܝmO0?0U$SŭCBtD{cƲ$rm.ިLaIn2 E~#?u%LSŗ֟,Ĥ嬯1u^6l!u,)ԓGѷ:Ƣ])P:x<뙟~""ЙȁA-ou1^$)†(p8޳ԜdF %ءԼ"RЋ7et{oy<2WX4V"v}J"rOn%>OF2җ(eY$|Z~^\1c yg 8B݀ i$n6Ct+_Om"Nf}N`): BASBIOh_XCVL΂2t'd6}.r>Mh].$_y8G,ԝ]+H莏(^52gC,R881D:%1'R(pIL޻dTZ#I&{I "ow:|*H.mh(Lf$2z8]+ej-#~3֚0QPE2eQZH1 G::ݎ28k?%?B6KL{Нw4g?2|qӻ !hdBLo'o{/bI Oot .hO^LqՓg08zŮx4k}1o'r)Q~$FO̧(Q0LMȋHLzb0 [wL2lfi8[@!~ct!$65K:p$?%PP FV\9Y&m,ˡ{t)/{_Q4od,eh<Д{I HbAϲ*흱OFDj^Jhѵj2R4yԜ,DۨH9jƲdC8x\~3>.dCTt;AANF^,!`8NAx"/&6ykM`hNhcYIi$Ķ鰛dI4dX!n8g"B +(&y1EVN+yT@3Z x(ADso8>]XHB3/ԔRMKz<1 \9]4#2K.0Db_ұrw KeYD)M+q=_Ǽ 3'}Գv$\{72?E15淸P<:^ Qb2ç}ʾ{[Fen2f,dY[ ^ےi%$'1ro2!fOJB_;Z/"#iBt2 *>y)3ܟG?!ׁ0s\,=~[η]?ϰg̷qsy#n3L싛μ[3Dq}\e*}+OS܈= 脔H? 3߶˞i"ud܈-E )QO߶rd}QiE1hr 15$x?oeuߙWxxeo>c]=>*̎9!i!Ɛ@D/\K?OPZxeixǃdf_zk#]qumseOlB! sR~_fڋmz6yydWƀ }=0GK8W}F%b~.[W9Ux| P?FtY vgRRRD6^! \[7Pa7sܗ;<cx˯Б$?s>XfjN³g Nub!}I O't%j"}Dԡ's}5~X=v<ʁD$^/3]JdLIׄ< !`!Ds;ft'|_<%~_DkGBt B}'0.1V%)u9\ĥ{'`,=^cɳ3CcY88]wcdZŬdsh'Iݟ|tggfyH\IL/{IBѱ'zx^c"ޏ8?ܼPYFVzȭt&<"bH*r{?β$}6ulO(s͜X['=\M);S[!cELGɽ>{AJB&txt3<zëȼA(y)HHjğ7 k.2gWz~ Yށr $ !@qkfOo|UUPQG2/a=tGkzG6YB|zzЏvݚz>tFCzN@ٯ^!nBt0##˙|qߝX:?Dd dTP^!eGI! a15g1&6SkL;Y ۛWkHw4): y+ !@g-/Cᇦ[22CIX g/XF|R 9/D:f} P J;+ɪ2m(0^ŲB܄60B!:pDz gAӉcZgt^(},C9xϑL3`gg4^{y)C_P舮p|t'{qGKgI~IDAT_B P!D:)O}qbX1y.*ЗfSXk7+WjPE|hѰ3₂}q뷭  o'8%v=c"Luqyx\C)-J$!:yr̛c3-I ׏  !mPz?LC%CB*_?EkGB!Zu&@!B.F bmmEm\>&DG\F9>NTutNQc4; !4Ɍr{n: BtzgQ\oggj: !8;u|1!$hYׅ;6V"#RJeCG{;s72!Ds8ѥtZo O7uFq*k@!ں:*k(*+++ztn Ά:M@ ⺪x:eQs]R&<\8cpj:azNQԽ]=MC߳?IN%שR!DOGWw0kLGɣZ< N!7< e2,BHB!b$ !Bt1B! B!]@!B.FB!D#P!(BHB!b$ !ڥp<sm3gb vh/}s'ǯ{UKcYa>hBf:dYǶw]{!MI+?&vs-VIz}#еynaʸ'xj;5aJxkSy7- BtvHdq%Jw&Xu*J_ڶf$N7שSP@׵ kNU<g!ʦ B\Of#1 {WY&ei{@ۂv }oiUo3s~QCY)7`øO0VLx;%`ߋMbJ ay)sKb缝fZ f=N_Z;^|cLKC7Ά=[SXeGpb'xhH-[OMvXu:0##^[yii߉pkyv'33pQz{EcUܼ5ߟ\?0k%Y1/4Um*{SZn ǯgkvf^S5=sTLJà"<{ƼlW1 nx ]zѧ}38QG@J|B@!:3QvedC}T9.۫S~ZvXp%\0S ?J/;>d2QxsXv*/o ϒw?b (cφ<5y~eNw.Ly)1wd~d'XO0>as] p1}X xy/cfF8q{w8S1xq&~ f_yiTٷr%3#^0j~Xob']3N?x ƻI7p*7dp*\vX wgv Ǚ4#/?D'PNC*3{(GHP婰F=#x Ŝ8F:w0Ԁk4Å2GZJ0gMО=j=T}٠/Qu'PETpO.]#'~:bQ`hv1w^_M {j{}~Dq08ޤ^\`m]QYF = +ۙ1݅ Nnhb$9?/B;>VȞcWc7%Ӫ"}!J1{s5SC3ㅀԐX̀*^ CɖZ';+Kϒs-9s{O`ԦCm?øUC'ˏG0|ϿJ3N%Gi>C9DcŘڳ~C[Y7cOll]C`^|4;XBN!gx)v&FGw39;3 *V2 ,Tb*/^fm뽤Y͙f*.ʗfֆif%f}'[8{.;ٕ_t@Fv$=BtJe>6?gsZ1cÔOϯꈓ/{nU7j|̲0թ0(?`^= յN3`637}m>yGWYػ~P44\ ΁XjLkz=1s־w̨0sxC3j-W-$E/-giY? fN^<:i'(>i b]ݸ{a62i({ĝ5,bs9nħ @dU՘;]ΉB2Tmު{:!DabN?KuY0-ZxM%3&0<8@G==R e¬ 1ldo1ocl!~X*Ib6D0Hpc+o~8g$c. Èi5'ِ yo9#PQ@ÐVɢ0J*PKL ?x,O0kY&n`nT&BnHWy,<@D>٤@012AN`z122>/0w a`I/v'%{u*w@uaLxa[+}-_DzvCFG0Hجc `ЌOH|c cѬO5#>cy7!u>3&0\p_Bš;IC=-˽:v$Z0enp}|X߲ ['BkJ7Hgk%zk^P nћ̹O >c SBƞ=` z$/}M> &EqDрT|2״"kІM 0+gIJ]P —dzԴX!h>ͫ/w<5o#RX2)Vh`y~a^fe@p%r+,{} Ʃy$l>'5ū,qij8?Ȁ^Ҁa'FBBCԞ"1)f59Wΰ-:: co,&AndѲ]h2o3DѸH$KvB;z 1Cxk 72“A1$F-Ha $n]-aPLI>䦐Qֱc`L# %x8Z'qhoB) (8B?]{=ilPd:H6 rDB - #qE{2N@Q@An>j]C26L-$W8PXgK^C.qg ~]' ~TL_ Cn}WYzJ+C4 Oh w+1oOPCP"Csk0o?wSF)z?-FM+X6I!CP[5y[Cm%nAc_\Y|Ppk~wgTc8EnuDQAG2o?߄2%Ve"Z@ Kvl$0cQp~'XFWRwa!!Ġ_g hZ]V  z ^Z4z0#'Ɛ.=hFm4V47^ח`M =g^x((G{9HLjB|0k ^Xw.@)qk #"0T\[X%3& 0{MmN#H#y!bCi$?Bk}_!9 B Wבq闟Q!؝ptDf~ˉ />Y3T9zJh:zQb9LH> h#c C=nSR%WMC PB3NYV~{ XOd6шѲ NU\\@A ^z6FN5vVk ۯ?EA(Z&oVRyh1[wap%?mƆSԖh\- } >cwhr$ʝ>[ph [{}sv@‡1"0;at !\ƾhiB_Eh-Z5ayoy9I5?3*6%FIZ IpBh:4(t c&ݝ,4n!Ã!YHײNd~V_}\pK@HhZ8_34`u 2rh \_,% 6P::1ᏑƖX5$ v%]`T(`8ǚDdW<{X +xZ+GW1x%k=I$ae#H.l*jBz!>a{yF5*(8h{y} &uQD}@ FMd?㱃胞cgmx#F@Ilcm˵!tD ΃\ >C)H2fi}B\i"p|Itz0cԳSu5y *.CEZĽ%hhm/#aH,GWEѠQRHkQWo5 @s*OF1D0Lie<'S$}/t`6r\̲I@QѨh,hJs~w A\pf}f3/3mh4ƞ; ~+qG!&[Hjӌ~s#qĿo +Є&1:#ɛאTЋeŤvBs-ʩ]\2sKdٟG%/Yx/;ְ~O>Ҽz=`;_{NFi "}~FagFc˷FB}LMjGi7KkBqu1wt7 eΰz԰7 -؎4s;>sweF;B{LVd9GGqӑ@! $' !@B!D#C CB!ĭI[&=B!]@!B.FB!D#P!(BHB!b$ !Bt1B! B!]@!B.FB!D#P!Vݨ;e! am%Q%WAmcCe! TטPl:vpLEeG!B+;˸)Il=u\KG"BvY աnѥܔU՘;[hLE%89:`QXwtYB!h`h,sZeݔ$S}}=555Tט21k;'!7 k++*lU+jlmm֭[GuSxꨫܹsˮB!nݺu kkke-ri7B!nurB!D#P!(BHB!b$ !Bt1B! B!]@!B.FB!D#P!(BHB!b?5IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-07.png000066400000000000000000000455221507671574500323430ustar00rootroot00000000000000PNG  IHDRkFsBIT|d pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx{\u5CxHneDdnM0J[hbZkfks=lW 5uWuP< 3 A$T|GGNs{zU]t!B!z]!BqsIB!a$ !B0B!z B!=@!BFB!D#P!(BHB!a$ !B0B!z B!=@!BFB!D#P!(BHB!a$ !B0B!z B!=@!BFTQNk*bF3힢1af8a=h(eHdH0#GGx;zs-$gMfި`F^46uw~Y=*!sI4esF3rԃl0)VR u_G˻>wsyIռ K2p J=2ɥ\kf&=φCw)qJ1c/]Dk$2=//$/# h bx\ϣ#VuGyؓQ+kSmLwp|19#S4mT*R3mĚ|_#/`Y2:G=},~xs:۵}?Ubkz[/03 7r'$];Y{r9n3n\_o&@Q*&}U \Ϟ=+.EI|1ϨlϺN`dD(ZfLL,( 4_ɹkcጬ(#"@EנRfdD,^YxmmώՆ@F- Vwb٥fz]d0Ģ[& V6$Lց(6fK-rE7`+Ͳ粶ӈaT(Lc [ju,Wa}LyσyE6$幂=1;)s>15D+SӮna!B‰\I}=^DF Rwd^S˧ Ǡ*HLjFK؜0 Y@  +*ox}W75"lBVոc4)߮(ApbzP]砫X<5]ױ]E{xw\b}L<}</C]Jz벰?g$ڀL޴̻ fpg}x䠴뺻.vR7|7hZLU,r1b#f87{ًI" &lD< ooq+5 "*rxҾ9鳈zz)~U'<=Pg'=7^n]ѳ9H89X^2addd'a )ʼZj V edg Xqr0v"6Rq9GSu ZTbLy9$m!5Ev0]ޅѴn"T%RSwjbJ1m@ߠtEdP"$eeeJL*lL2H6Ko/Jʱ21٣묦پ&,iɽiCW͹?_P~5gx!0|P[).8@L[w?.+`$VNQqIr 1IU`S0`AGDlh}26:>[>%<ݩV"cY%l0){֌4 "3O^w@ 'DAs; u^}|krO^S21moWsy;s. Bb1g[EMbƎ/ ѣ9J9^']_yW'sq&)v"#ό!$8^D<\y؋Y>%`hZţ?feXgmK18&GIMfwJS4k1D.u}QFb$(2ړ5fҕS14ixeTSʛ wm׻}9?p^ٵ?;l?J_i+W2o 7n"k׆YG&z1oM<7}2煵~HGn*,VMH+ f[o02~HX[@F14RևXg=;:v:8]7w׿N̕N`pGk|D?]0f\L31W~09q.=iG?> xn{8P?>~ ,t3x3~&3oQeo06 bcqbHvꨥ;q́/OLy ^lY\Mzcp(ƇuṚ<(h0Ǩ*0g5 Aӝhqc5xLLW,@MX+8k"aP-@2 p4+4Q,`)^`"[sm5$bWJϣ>^ρY~%h {vJS P;F@cxڅSMV|I鳌Ԥ(1LF+xq/xX'<6~ 30h\)^(Nf{FN07 28jVAK5?w0㣛nO5-wHLIؤf}KY/B-zRZhv5-71mvjqZrTӈMp jG)Ƭd%: wٲIɾ|Cͫ#j%aw^8SÌ4o޾qܾFh&dëfjL4zXh*1tNFpՕsyG1èGSԲ`9꺜2-ޝk:3q ҍczU0^O` ӣʖ֡v9c$nŷJy&a,3z(?EC :ݎb\YeeeX7NY%RIٞx0*h(ǔ_Eؕ]MdtJ*JD`T[niY>?-eQV@2e*ڽ;} ux7[ɤDU?PJ7:[HH@e]DOB 6 -ۓ PV%݂F׹w:pOFKs nܕklSE,l_0<5^/EuXڟ>Ѵge`8ԝlظl|1?;9`/`OHxyt7y'IyRWD1rEYvnҿ 4"Qp<#sO0g&6F7om4r1mʣPJƴY<OF'<vZNv̶̻дS]{VjB yNPLJ9?zz󵔍箲C[usyn{Ӛ;/ ~90Z=}㿞3`dҳ (nd}Z–lp+IiGItMGMcD{2v? &U|KDvNW]`D(~4E?я(-O!c0_ٻ5v&=>6LdƳuZ*PE_̮-n'k{2f@BB*2پWwI&s&f/ٮ)@i.Gی<"+hu8Rۋ%c/&{T7۾gki7[}cTF cnW(kS"qaor˛M*Q&f5,i3VdbA>*`j* )AR -},}sV3_$m%~dmS9bZvPZ:/9lMxO/D0e{ R61ۓ-qnMZE']3*(ULvtX+8)k JKYWm1Tn&+5ҷ)@"~G1Y9X6 H->ob\7vn_PVf0/»+ȇc1lySj2YMs5c7> 9*XC;kl/Ǘ^_9Ӯ4ֽ /`Wym{ g7?ybM^&1Lѿh;0ՔV{!:B _, J\5: t\a˿)(1L6AE}iLo!Ց$4@ (ǔzwDS]#nͩ;]%Ӆb\!VSZG[Ʒ9\4s{v~/F%TULzJt)hBX(kט&c^Qj&t斯V'8εY)4(=Q<9%`4}Jػ ?DO$PXMA&{^L@oZˣDHfʋވm mEZW}@9>kLs;؝Q|mIJr=q*7e6]cRm!4.`!7%d;UIFߺYIoj(:Fuh*b宛<=9Q\ =a?C+DϞȆŴv3LmЂSV&:fĎ&!eE{ٞe83hDCq>u=*jJ;UX8ڪp[ PIs敋 nfNYNlZ;J|^ݧڨZL&aVc.vm >~iDg/ɱ̈́~ (dRfʡ 5H#,`R)̣#&"ʎ,pL\wm𞾚u X=fgZ49W^Nʉ|Dk™3YGr7IQX0fbLdF3ǖ6Q_j8, (w:? 1L=ݫb4i`+/cfLCD@I Y3opQ6L{>'GN DE$e:Z/A'?&q+]͆l򰨵:mL&#֤)Q{Їbd']Rc'f@=xݧl,Oc{džiDBF=MCDSAJXvd.bZaáT C'f,Dx:mS1/z36%| jt<IGҎrPff_ פߙd!l3&@$]afHّJ5P?'H}lٍj;rݵ5:lܢQaN̤ ale{lؑI֎ͤD 8uv2𞼈edR0s0;@[I4{||_TpK&dyEPoI'z^Uu]!2X>$Xٍ0\?׎u8:-<s6 &H} m9vҟ7YLP!~TI~5i:LKS7.4Xؐt`o%'P!~D즭l/QLoP< *+?G |^ʜQm(? ^L1J O,"fӇ/򷢶!l?sykY{ !N,|5 ;6#SKyk YKVkكBHTMֺe,lnts+zM. B81ǯaӱ֖)#񭿒u#zw!P: N.OT% .4i2T7XΉ9Ud52VbJfk2%<̋,}k)_7k9m٧^%6HX<.ǔL|U\9NdK[O *篬L*kײΊ#Ŀ5^tRg?*w_Yҋ&gB ,.ԕל[5˖_\Ð@+7,![˜. L͍GMx=;#vFyڣ _V(=HC= N6TΑoq URdUJ?g_rqOegyčGqoI3dtKmg`q™8"WW?<+?1q1¨ƜWŔțHB/ LOI<P}3򵥬*c+LR*n< Xtv? *`𵂰9O!Tz;#gPX H\ƗߜéS[ͤ'T)nG?~n+ Y[M–4I%NήC'8ɌQ- gA#D5~C H%(IŖ}T֠8 @Y7Y]}u*ɛh3}o;@~ ?̝|yO#*^˟^?&Ӱ4Zߩ}kX37_B `fK9uwV ߞj3)Y|̞}53d"Xg:ORtcP`sgG0|UY./"~?Xh 빝W0ӧnz/?OO0m .[fԡ]lI+y׹wW,sgusbN 9ٟQFL7NAs_%]Ai>{W9Y q(o (qg@:\E=\!#(5/G!d%HUaWYRSQS8Lf 4:f8ăϸ·عקC3mJr;~w0wf s^eAhF.SS܂X>z9#.XWEFtW3slu:oBGX$E+ Tmdx 'fίק} ;q9Uiɳ3ov]SطmZ?n#ak+JFܧ ?Mk=ϐڴ\߼ 6B |M5yCi>5̘pGJcipe\CaA͘śsTcl |*YF⺭Lezbsifu NilKqdH[`ʥD _?YOgB%qǬYʸ$Z7x?RPΥ]D>%38u$aW])n/M z!t.Q]@Ogu9/Ϣjyox`s\Ty]ޠ5J؜\ISyǍ3%UG|yPϟ{" Y_7= /W4;|bC N,r +>BI᱓(|g@f2Yl_5C)8w' ̃43!O8i7`A#(?vPo<5&pO ~}7Ȭ3uf5xԡ\4,WCLj1 eO?tO~=NӮۮ6+32/ ǣvh0#.!^>Fbυo)Z585A~sa$l7x%l` ϴѼ݂*A݂T&//9K7Հ|Y>BJj!`%t~ed:ːc&)Li-#xqo<5=nkjKo?CL:4.9c0#_0?!'X%1TII>@fY@M5VgN'\nxx(p-Qݭw#?f^%s&#|jJ?gWz謮AkH_A+Y( Ag.6Se!n?V3 wVMᓠ):+} Dc|1}jwz][ɪJL8kdl2K4PZPQGg9N[A{`$(aY8| 8eۯ ˑ[YLGXT1A JYv:3~ kyKU पƝ՜f?ӷ=;^6**k6K4q9FH7cxC9FGHL%"M;~ e i]\vMMGSOFq# # +!rŽR5mRof;ڵ~ Ob)>Kՠ B. *m(d ʳˍ <&WZ]P߱z\!YH-+蛭AI`u{|#4(->7xFe ^8?/u%%f p' ԛ iSgvp͝Qqy[ F j+ȥ"[/aK\H/$vf]ha:t(͇ qủ>cT4i𹛅 )vr_:3,ށx/#7<־_\]I6`SKK#[5Sf>n(PUS(S>̗':@qc J!@>%Ƒn'_|3 L6EV1m=s(g+b:~'%ߜjF "'LS?kX;w RSuԆ9KK8E?S(y yk5ShS 2<E`ڔ|g-BMlmڨrjWEӛS3( ',8s$NOx3QX a1\%t8uDIAN ˢ{jNn_:˽@CÌ<G1d[.MEGW7lj6q\:ASfFc¡88PsEr,\p}@s1NA?͝(ɆUU&lqC(EJIvP(Z~)#D5Np? 4mDhn]Z&+sf^[8H@q NBϐx)l|[g[J!P\ 'KU5O:|*+Ul :ϗ9Ye9x)/ 5) }Uف_g!_h T9u蠫??^IU "l`9G9oŔC8u sN2 l 6_3Xი݂9y0ј܁m&!}O+Azu7^q7!B0|L < 篾fYtt%N_YœlVrIB +_)VP|]PUFfb:%5Y;^ܹu.fk57*vǫ>J _J":o_%7ǁ\'-z m)$wjp#$ֿ73z'HՀ?59 c)o.&A*]]0d$5(3C[4⟸ݰIn.mvq*; ys o.هBӏ5B|c9rU7a|яחSD܌P'aa (5O7ERF,jR12e}:?jkPQXBs4 !?3{Bs%6$p8jpWuw1B<*;j?*KU*B!*%jk?*B!z B!=@!BFB!D#P!(BHB!a$ !B0B!z.YMM ?TUqӉ@PP(W-aB!#ɣ \tᄏ\9% u"2?} ^xj4v'} !jjj8} gϞCJoZ~}[-WEV9YTP)qE4p !IDgp߹|v1]>F::TJV+W)vQ\t˝wŠQ*ݽ)B!؉, Y9|ϯ8I}zĴ8Fpޫ ?[/;{s= <7E!?c2 |wwK.=cF߷/^*w{ƭ>}8/]q"Վjz_mi)]н#B5 ҥKTTT{7nSk ŋ85\꣠VW_߆:4J^;<ϥKXk # dv6vع<=@r"B@;UU[K름:n-.зA먭)Lǎaƅ*;1`0?>j uuuSTTVFnev67mK;nՁ]eeB! SCߖҷe~Q} (; nsdk@<5ڋ8uB]}_޽9y$AA#Y/v*M̎A‘)U*~B=awEQ 8NKݥ^Knfуtxw2q\8=_  %莁-*zՁwzۓ%m՗e1}10,pk7+" 4`^_F<0@Dr>+l|(R jkk)*9IKqᨫc0_ŭ%ju(R{r釋r-Ku݇8.qsڎƑk6$)f*|(Mbad )#7$݆JKH fѢG)UtV=M4B4ev CBJDpזXvN#ptk(oTi&(r}4׬%*^F!Gj;;ރ֫{ѫ޽ܸr燾GAr] ^ù~FFF&xxߔFk28T_w_U?PlW1Vӌ裏gJ]_#h!f:{EB!~,$=_|ONٓNp-׏_:?>[ɩ {8K}p 2EncgjkjvBC[n9̂.]O4w3iDxNmm-uzqR%+}x秥VCgs8p@k9'yϊj_{&Uezh4v r dBpB!:{oE$v>}<0;J^))/_^֋oNa =[>޺A 8]ӿXL)r6px/ _W6(=<#B$Mt^e?VJJ%//_E7{sh=CogCSoBE.лwo˫#Gy!'NBBo_xx&A!7$.憧FgۏB!iQn8Jd ȄG֌&$$;n\^]5ڮ=%G^6魿nm$5Y0͒a !X%[Wvl!!!q;l?+c@!<c@!<c@!<c`8_p’dCGraZa c@!<c@!<c@!<c@ T{8Ψ`Y*m  bhrEs IDATPY`yҊÊEg %Iç}R+um*NoqjeJ(+2)ଂTN$I]ujcB[pmDZ*kb2pG5$ ~'K;SD\ɑ1_7a] P$VC")-lL *,Ȉ"KwJ}C,+v?Jkx`Ph6CߑZ  DQ],V[W1 ѨF2Y<ѩľAu;bzsѩ{5p_ENQ䋭("c,* eS!VOɊVQǎ>Rx),x&RO˗5kV^業joYG^p5"ˠT*fP*)H&)Jtd)X p;OF_FI$1=Ǖ\u%W-s׭`}N߳dfG\_}[Uxק=X?}j6N&f56- ͗QWjP`~t:WoMZViݿY7PjCukj-oMu2է=_ݤ[[]?ҡڗ5kW{_n]֬kV]e'jey[җzƶko=SX d.52"meԻyEۛ43ou*nҭ'|Yۻ%3D-wtۦ/jgZ%W-֧~lg8Ўo ,PIpk~zo*\9]e:d;6j V=S(ɵA_ڠNe4/?._TR9"5S@ׯ[R&m۷W;?[}!֞d6IЎ=Ru=Ã^]ovܫK*#՛2,t֭Ϳh?S2{K=XxD~_;:zC~|taWԮ[&ZWkc$5~&5Ibj R=GnJҮ[bd9)Se]cr<#:=U- H=񪌠_n7ovK|ڮ1[eKNb0}:h.Ť^)rs9 `E[HQΰ%{0?1413\3R)2I5J^Q2Xȹ7$5.)uTQKGdIJ,]K>i"Ri&z+|~c^8sݚjsc ~lۖp@MJ ʨI;0{$!ײdOuse]ɶ?mvd+I:yD[K׵ڴv>uvj=K_ҁdZ^hAE1\XT}' o]$Gת7:ızW!$,oIL?Z]_479"W=v:jJeZ=zC? 5yjI`%s500pr Ða:>T?9g%W%׬׼عq !W pZz墬`TMoՖ*{3bp!lߓ՟J++ xci2)a,FTmYrrq˞X,p8I gɎ80(>/gSAg4q0T41yv+R2|]1.&!<c@!<c@!<Tj*dHiH T@PT_1PRmPfc ʌ6dV{iTS*jTzH*(ӊ+j1Xᑜ|>fG# Y.`)ٶdF帮feNFNp]WBABQ9kLűlCi>5C5AB!Qm[mq.?f0g7}=t?p!!<c@!<c@!<c@!<c@!<c@!<c~۫],IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-08.png000066400000000000000000002370101507671574500323370ustar00rootroot00000000000000PNG  IHDR>zsBIT|d pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx}|LgWɜ3JntZVb>MjV,m,[VoU]7U-~jUmU U$>$i#G,w67hH2grcĄݼ?dfι5ל>渕XmU!Bfn@!BY !B43 !B43 !B43 !B43 !B43 !B43 !B43 !B43 !B43 !B43 !B43 !B43 !B43 !B43 !B43 ׍&7= YMOB)/Ϲ#ICSI0ˆ_^y,˫2+=GМ<6\rJEy#LۅO%J8P{@f"۩ 9 Otpw^TG-ȼtJ/w*TK9ߝ.aׅMo ނj?VӁ+/DƖh+l˫!n^ICōA8p`''"|~ c>3d_ހo`Bz=l Q(ۘ9kG.br?CW``تd^V9n[us ]4/ 96`3f3p-!'5~ w1G([w$T4Y,yI>̩]_ըۘ_I"%#M6Rsߎ?dǵ\5 rxJ>ܘLFN.6D`=ea݇0!Ђ!=?OAaN޾-11Ka_(n/"L9`4 101#]*Kxaf>VOf%ہ5 Bq%} /vm+W >O`V\`*^!b %/a6Qw-'oiz:j+$;I!))%[SZj:%=AAuc+|dIlT EC e'H{8p}i>BЕ0_-#il( ӑIX$m1}0dvx(~٬}H6A9q)6Fl܉1Mv|:Ķ[2,w]>Ž)#Y|C@G: r9il[׉_$GĿ$z#߲ȷ$n{^0m,?E@ǀ1hOP'e!eG&1j^L͉2q] f>CƞtX#k|M wv+j$fYHT[21r,+E=]NكP=z,=X{iV/> RZ^Ye|}gT=scT@rK8=/UʪĿ']/bfqr/39AGOZ_*dn)'7X9Z+[}ٰwӥ+9_Fb%JXl;qt㷝+):ZF> :wln_1.!ԁZ̖U"GW fPSvxret*8wr܉ ُ#5WBnH: ͛|2[2N |640g' {ǛX-[4IS6IOe-cCԌ,ۓߜ^e5LՕ- ?ol|7JlK 1NځcH }^xeNrؿ/@~4̉8}';*}r XEҾN0ؒK$!QkFbQ7qL)ie٣3%^ j BwJH+kq=+%eZ?` _V/_an,ՆGHt VPoEl;Ob#ng9z"0,tJͤ{O5?c.u3b_ְ=9/3 RsZ&sGu> ΐ1nVy5?Wy!XH:Q ]#P: ^ de\rRws1>:Л TTkȰA 0Z:ɺXkǫep': [Xm5rkI?`)%NߧzY}wKޚКA?ka鷢+sj*g+*nD?Z]x+"u7W1as]kQ&ZXlշ6-YR=hۂCb0ʯlEoXgn9;pf.6 ]gx Phױ%vnDr}"Ճ?#0Z֞UFzU[]i+Ѐv5?^<ڣ]^z|7[IxG' |[x% dVL w jM1 >*M%n~:Z(u"zG$fz*?I.2 zU{װGrwl"E]r*t @ViiN>rCΐt}J[kRY:k=Y~P~ tN./lvg8:JD݊d eɭJ'Y=؍+Yϝ$%oɛXӃؗgh$>\֤#ϵѥKT; 6}WY?zɓ擴g6X{cU@M$ >Ac̉Czwؿu'aqK} j6=04}_o{I0\l>NZ azPg Vf rHp ߖ܂ŵM`f8Y%%[m|+{奤Y7jњ%=ZL^WĞ\ 7yqplw!@^.x[8v)'x(״rLΛǍ\ZL sllINL깼 *MԠMnϠX gKY[u îwgjČ `NG^yy2j}ͬo){T'qD p M*ڈ7]$t!lCt['nVa.&!/H?v6攝38k Y+KtiY1qrR-^MH/0doɷ+#B7y&]]'YV1%äI{(DO'̊u.ĭ,iFE M$f?ymش;?vg`P;F-԰z ]{Xڗð7^gUt WSo,'{Q;.FUVZG#yi(17f$xzٝ6Lʉž,cݱQ i׹ ,ߚVֲK+ʴhttpz|V_^|ɛ۬pV0]pkxʜ^`BB>ͨfH_S-oyeuV^ [*EcρB>SƗ/'Yh+8ySb]nx9ڀblg۸n +6թ]؎Q~<id٪w"Q X͍햕USGg 1P~# >_2lG.96@OP']xκx[(~HsNqCYu `X@_'ԥXBcƝCGQI—'#19W }B0/۔)\bӚ8G$&\d{כKRm@Q qs}HKTCӴn':(1ÿ%X-5vX:̺ˠ x J J΍Tf_ؠXKWp t OG?3ի@}ɛ;)T1iv瘀CnH;w>kc24tA#%\dX9iP,e]jg0}lZ-yz;}R9B,pa݀C!՟)>4Kv׉aS;8G) y:]*jZIʵ^\~Wn\:T1%>jHKXlõ e}ԳE_ h F飇xmݑAfNbe7y6so)#q_m s Ӄ%y_ZѪV;F;.g;z?hl+mKLQٲd֝]B>1S>Ƌ:+VuB!RJȼTYsIY_䏛JQ yB2`l$=TP4gKNbm¿j sD2w :H{Ė\\~"'=݁*u}C,yOu^Y>WIZ\Q< 񧪨>af FI܍`J֑!iD?:ynkbzhXiO:-,>ɤֹ9WHBLkJOCdF,z\NcX8IӾĴh _GB 赋dO8ެB~1Pg1F˾% r8Kfw O^|n~6 :ڳUb f@ :ds>BrwF/Cr>h舮oV/DD9mwu?{y01.Q"K#(wK~?R6 []#> ˍpo3 t5/'7Kӄ*7u1^-}Z5bj7zQҭ.$#b Iȷ6bCUQoÔeCߋHT%.1%/h Ej92y_??(#a$lK[wTVpZ{`݂g#t\&ߍ62dz`|p%NOi M@NwOnPZIso`Nd/ԳaL?7Œon1pͨ:{ݱ6N[&$]ؑM0'c52RO`COCGbj?W̵0b "h c++>FRzc $b +C6-6NtHuH9r 6_ "F1Ć_ė2µ333či#. }I>zI4?@w(Kt [Sy fKS%IT {2oH:AFߠo OS&3`!!vyOfG*b&;v81?q=c nbksN  tI @"m}eB oS˥M :jEOTgȯ:ֿB鎍p#2YעےZB*)Tᆿ{QdͲ`ڴig3{k3d|$9[܁U,ڮxQF'1= L}1n<?и[Jrn1Ky8@c+>AElȲp@,ݘa$!bng=k;ܒ[F%=na+$-d~Elړ[܉+>VRUqÿ'>VKk޵WHx}RrJh饐Z¥ADZ];RB!i6[?Iz|=iC=zrGUU.\7H r~[mnJ"@|5B($L߰(ޕP!uĿ3;犊 .^D|BV { F+tѬVleTxxRqRh<¨7lZ97nҥTTTh$;59MGj=1\V9śҟCڭ?#^fM4p" mjyt(]Kf#/f/&f0lfDѵ[ѣӵ g챎5sz5&̮cO0mD4}ҵ[QC2' k0zeʻQӫ6RX35Z=moM8V'Q#^f}zJf30i_\=i}D?>n fz &njV?7âZ7o.jߩ+uy.|G꤁vRe@ l^| Flu>w:t ߽S:"ZvRb"]_Mzz~Zkf/$yH\g/S٬0a …X4#cjOw^Gv5i{nBˈԑ4}6I C ~m= 20YlBVQv-eQ?Ϗcf~_6嫥 W'ryq^Mdʄ~h&ga?õ;5LOzeX⎽EDZ3/ MxOdA(&Vf{)~ ,}=9&7Mo(5Xt!~ttu")#^#02 UT$n Y0=W_ʤ㫅 lFuӾX\\m'aCFmͅڡxvi,``WOVh_/8>sz5^ gg4#u,ZSBH @W7#Q3cpa?#. Q*.. x{ h۶--9r3'ѻ32i/>Ri rd9{,ݻEB dʅvU9oɆh)0;.7 a#~~~(zPo_嫯7<vMLM؏~@i|\cP |Hah񡡄>iИ`B?P|i>6os"`?QHWVr#!0"E> X;M Vǵ3W߁Yߏqjfت%Ңyo+b &f8f8 oV찁ћV# KWKFmFZ/L-atquyo wZ8/G0IKY̐?[ͲCF_G _cW]rIWNHc|},8n3a+csdC0Ԍ~ݞ[{׋9Wg~þ^9W׏FCW_f[)\ @zѯBXD>׉ƹQ4t#ۉS ã۰N`%% ֤1Y §`cW!p?SpPړU&oHX~mA P31!\K]ezhs|?ZqqS38x=U3fH78?&~7W7.q;r8,Π&GԽuپz0o/׈_{_P U3H? Y>[4.&*++>w2***(+V^AP zu {}2`2chMEz+%TUTW otzOt\Keek;L2?@]?NHcWAl?5CL<pEfǫټ;,hZД/xޏqj_Xʹ0i4cB|BNMdՖ 4KkG͗ Ucx&(7R)PPn3͂c˙.uRfm\-سO;=;V3Ժc}coے~1pL6SWػ= ^fWU~~.h}E2`4ٻUՂfʸlY];>n`ڙ,^HzF{k8gcC77rlj|ʱl3R Vm^NK6=:mhЃYEF!qnnߑ>x lʱ}Ac48pF/gL6|QtUTUPUFŕx61'K#31MOW) {YY^Tcq$%ňy񺙽/d'2E>Ǵa[Q k'C=1[(s;Z~Yy xI5Fr}, =X3U~= x Yja#2%73:. ޭX@M],{m Au.(pν~`p^hF PDC|O#|zcӭ֑30P wI/69_vk`> z??#Z('7*(O~Y~& v~Ɛ/P| \ÄGЯo&2/ܒX~<Ϩ5Yo?B _8Z]6{wgCxR9NHx,aO"0b_`º5 _z"_mO^\#GfPt-qAO'q0[O!t0 ԭ`W3&؏!WX0>j;5p}՜J$@xƌkd3'QԨ^()r?H^huSc9$+Q`aF~^j,15I; fDh!@ }aF0Я=ۗZEz}EjtU zO':n^eO* Fl2^Zjy_&d;F vh^Sl$xG#xjuIf 2o}YHOt %l|jfbluίTU+_?,!1gUbWQVHв] IDATqxEh% HE''G;J,]ٷ>RrnRš nXjH[2Z{⧃њΐy;.Q?Ѳ Xdž_D5 TA:{ 34>70q 娹}T{g$G@U.;6b: 7t%U'ո@>b"",N'8.rl´JLEjX8g^ y%A(|jJaf1c42Me˰ԍgts*_P30yg7SSDncw>n\遤'I؇݈@fKZ&mӇ+"}:Ч U*GJ}p}?ps}3/jgN1~0AWOyy%3s 8ՌJx,:x˔ctRH) Gk JLyeo=fn5ׯZ $!e9e4 EeaZj׼Kܣo`qrE7a.k~&Ѽݤ?Nmjot^ }ka9'}sC 'tV=I&:#@9 2qvWobnjl $fa/udi걬t7}m6mbwR&z,޻ gF*'mɷ[n@Xf.эMDscL7q.[ fbJ&ɱ5BȌޤYر?tGڧ7j)1fqKoa\~tyz- },H֢]7m;V ħeޜJ{+ɨk'FE0.hkm4݄$W\dSI`=^3KaOl!4y_{RIز-,6#ej(KqG7Q&Y,7y iP2ul>qPy7;^>Hm3FJ`u:2'encR$v,iwewŴf7"S8:䷵lxu?c&퓾mįm.2}JAO}د׍n!ݲ c!X?8@ ^x~./yH7tA>鿝wW4=~6pMlh>ߛKlM=#y!mU7w\u<0z+!)?q˄^Ęȼ~#_x%le8mqlFΜ+ާ~O EU-Qj"9}o4+qtx1c MLV{'ZM]BF-I7x3n!n z aqFW%'|vF0~svvs?<@}Sc}qUB^ >M~?.A7=$ aL 4fBv_!"f);_ 7ul(;9`tƚ!j݊j@PP(P2Pb B!̀Шh䚎;B!(Bag$ !B B!vFB!(Bag$ !B-t5 B!K~֑x Ɏ-B;L !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B WPq;oݪ-lLtQl(YΎ!LB +޼B'w~ġy"&񗣘e e j}qwRDk]A\D#;u)zBX8ĩsC<;A-uΤMMYs񟸅LNH@FM#qgzūyHItg{nw[Z:(!goj%tݭ*>{i-aa'$ùD\ /4SVfۙa=Z-JPpw|X؋I~q ǑXXD-Sǧ|LmZ:tx&"z*+qP[݂t!L!=ϳxi[鶠/f#,BwgYJI;k[(۸-Ql۱j[j)cvQGr!lv'64u`7l" (~o;Lfێ-e.4fL#̓$dġB薀=m|ߖZDﶳPl-ӈ{g;Ǧ^CWJou]o6J.W!>f*x%=>vN tv“݇> ,mPuwS@=ud  FxZ@P^N'hRɗ7xa,7t\]ۅ:è(<5 )+o;u@ĨUD0jõzQ\Rیx E[@:XDJV yoYa)&&ڎ*=kNB+xwBL&L?ը΄ `k.?m}j:S}kxIWL%eϼIE: +bjD=;bѱ' =M>*n0&&dNˇ۵M١mJJ,Me:]:As# >]9wٱ)60q ,FjaK ƞuyk?]!ĽMVvhd2nmcjluxZ^&t\{}& sYSvk6oAJxEndwjJP[K檐NuWj۬لmE߈ 5;6оLFppMhG1XUGMlxg.ʶ6#mΩEl.&S: WϋmS7[B#.D@eI=Zo|qk Hm_45LTk8tu*; ]+3;MSpm2KAFBaRYyUGPFĂYLqa]h73>0B})0n_}eU+BܘlϦ2eXT3|9|QG[?z_GrI2 :>VmT{Un$,;d{,cvCMˣ%;B8yuʯ)V?ɚkn&a >3 FmwtEX2[Imv6+ kY"h &!Wj1͟@هl-s#!cj[H)q#"4w%(t@,M/"y4^yyes s}>R>0{e @L{ZML3qdըB{;:t{y7K1)] }];tXIHYNY,?:p9}zUg;Thx*e4RVY͙T(^K[A@Iвt2RQ*K{P_yOhi'c"jQ G7~6m8f W2.D,km>lt;6֗2[e$\tqTWH؋Yly]wnؙr&6eLL$CMk]pwrB-!=nw%gks] #2fmۙx~bE!_ktո#9B!vFB!(Bag"qOP"vB!;B!(Bag$ !B B!vFB!(Bag$ !B B!vFB!_NvWA!cݐx Ɏ-B;L !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!(Bag$ !B B!vFB!p+`9rըT*f3g?B!a2x/a֭0sL̙͛3$55~_ $C=gCX}m7W) G7mD˻B-?Ϭ^㮮 {/$Ž~`15bi`4_T_ɧenxvXSs3,Xe)B!djll̞=f͚~;\+ P;9?w,%a~ɿ|Iz[cU|q=)֢~b;K _B!o#G_O+Xr91?;%g9Ӧ?_W\rjKH[01Ax`7S.3)3r7S| ?LbJX0AQĭkIѶt15#u(tsZ>fo ^s1m=ݵSlFbT)rK!Rؠ`1uT^{D$"B f.i 6_T!GojܧeZ-}+=W2(eQj\ylf.`)ĜTrjDf((>9/yu|7Z9V-eħSb@Lo2 `cK䔃O:*K;t1k1`Amub(ܕ}XO%/aǗuh'L#ᘾu䛀T_ɍQD)-#ÇB!Dr-RpuuӲnnn8::iyTApw78^~OF*L#n1Tn$?@|"_$_?- !AѴk*u=[>Ϥsh(6L|(ͶQLN^DxFRrPaoak{[τkvl'KگF@=.7C SKi:0`PguL'%#lO"rP 'b7M@=(Ž zf-ꨬjͧD2 Mm^LX5,Qrjj) Q`E('ʒ:F+JFZB4c'."p ^ۇt*K0}hF>ҼFބ2t63.GԳMiB!%#zOzoo^sȎ6=W"'\ªV;-81 -;U\CEL| #XXDe+_mYO{rĶTAšCD|XZX)'B_dg?O'**,ɕ -\:#]y;Z\MD]h>mSQc)Ŷu~M%to|mp%h)!6ZXXL˶<24r`ܾ|F G iwDhAJۺnD<ͥ(B;B?7ϬY].==z Js/9l!-YysE?Z&bl ާyLKLU_s\ğ2B'-~ AJjK¦O%/>}?Ô`R@$ +69SAh0>Z%BtO`7#;@Y!Ψ53vlgjo'2㽯(I%nj.Xg(.ΚT"/a:B*)l\sByd X~=%%%M]]%%%[0{-RpF%m'9ޏJ.'>}a.8BލuLޘ*09=kuS-a傩kL.O"=c AJ@.HImA.ve3[xn:W'sR*-N}XύP㵌]$?'Ăτq!LkߓqK1ħl'']#BĝlM=#yw?RYY#MMM_;YnK*e.Oy|a>B!Dϳowm2p@x] !B!B!32(\{k!BB!(Bag$ !B B!vF=D%l)vlT?{ԁ$[S3k=ۊͷNjߟYŴwI%n#q7\,g͡jw,y=~*x?r%kxǶݱH!WߥܽgxƗ.̶o\jLE58~? kܘiʆkp3Z˱  iռ# avۭhw8{τ|`&|*ï(y=ah 77$QYHEmBi[:V!n8(z)"̣*wGϝ~~&D/$޳X+ْ冫(CvE 7FaAu5y=oDs5idW4bU1>nuj֒!Y/ceh׵bgٷ m\)TSٰ(gs5i]qbY9pvξ/:Δv~g IDATbr:T<ǖ8wbY'$; >y4+}_`T8=)~ DmʕZM-ʗX7LҲp8ʚoC%eC#iY ~ zt2O_! v[DidV\X: fZ/!jBSXjc`>¤F/`\͕-u>˞hLP['cCIx(i{s9aj=;džvH]y>fטA5ab}&׊yq#wk}o8G=@fU/[KtI3naٙw.Ľ .|krc|Lukgey׳@<# Wܥ촆mMXU^D%VCx?/ usY/ebژ룫g#aB1|^l" ꦒ4?ʻ;sc6ۏhIHkq T^.Nd>f[V1h'3~8^|A &+L$cþPFjTYy/+q^>h>Ցh+YH jz{]U.,O}:?pt;O!)e!~eX˂ձuWޕOHɃYk17lY DRZӅ_; ٳj'U7Jd#HND[1kjkѠ6% K$r ײ&gm6XҶ=2=ysV8?!| Oy3T=ȣڼϻϬZÉfC38ٳ>GHY=Et:}l渫"lOe4mixsHfbgn. !`0aﳓ=8[lrcKWk5ψhTjFa4\RPW&P ե4b@&Z U1)8y=(2`4Qub9OM ;xD2ޥVBcZua*]/1ݨ9vjg謹>EÈLQ ]ԽK̬GpU)pPt=*?tU0z֝]H|c1h| Ҁeʾ9#Ԡb*v"fV$^ 퇖}!h#3GBUbmx(NR7ڿ_?(@>G(V"Pt(v ydPFa6>{kgo&T.N} }m)4pQ *x>cVڏMۺsQjd-dLq|"k6QoB0h8KH\`P^g>hKcrR?fA@њqkmFjh_A݌HV䳬$3i&6)j1AKʫhkpMg7hva@j׿}:wTj{&Pn{SsL|NP8m犖Sz<uqRk_Ǯ&8k4\Fcm$_m{v Ȩ S>Nʮ<7No=Z_~D}[4 Mih̍a&.YQ!Q9z2kc]L;G`e$ ٤nw{ *'TFF6vh;7CJH3LM]‘1$Sa]/1+h[6֕G)PYUnĴL7[M*0d*+gcpf M= m 4`Z4`ƘS]nQw&͎8klvT^W3=m.d[3l KBZÆ 2z}1768j.BU5ѱjF_+c#gwiT_ Xîn{/q1#N *h֓;wz9un4ZUjfv50*hTr/*#.!3[L\jVZAm04a:1|1'.\mUjq X/w GܣhT{=|W12Y'[eʅZۿ Tms~ mW4*GT憎v0/#Le έvkL y|vy\M}irm z̔=nc&17Pfc-}oYh`TQҲ`ꅧ0`/F_Zi(>&\~jZwW7TB7Ah lPtam f/ad~w}y9o~ Ì&7%/:A<5vCivFi5F]Gxb=}2kɭR߇]Vi[8{ scNeq;]j:g=xqW<23CV#lkxƄ2gdWdDS$52h*rH\ 'g{c<ٖ:KT8 g6#c UMb\UĊaVaiE 7ϚC Sf*Fzx5)UVͥoH{5VP(1\,IlXR'H+NF! <$vKV"H^_tb3x5 5j𭸑A9D'_TƋy mTжy.6m뗓ж\Ԝ눖|uƤSxOc҈3|ݗ[j˶,Q YEAuML^:\ĦHfgzr\7vB{#p}O|cdfGݼCRif TB}ox8w ;~GyVQ -4?Jq T^.NdrŠ?\/\R׳I>v  'ٷ P `/6Q/j0*I?ƶ~!猠fhTpvzv*cKm ٬DBʓ`&}V=G$v}Zs \Bfõknǩ<22~Zf&7-F*7aNmN.o2|E=}BvEAOgAضjWA5G64 '%&5z B_tYԘA5ab}& tS,Gܰv#;ޘD0q䱡 0|Þ]9|u p3icph/ͧR !vmX?@R3^|.q,CNa4?Ė",Uƣ!~c$33ԛછJPTs=kcZ7s |6b&UV{h:{'  ṕQ6UMKY74d~%ꍎ@TmF/SYH켕pājuS+j\'|Z.-2BXp: 9eGl=)rcC38[ٳ>GHԵ;'x'䟏)|ytVЈI;}G:B,2|W%&FGx‹(]]Lߩ b-*>#&e TLP \ujh;OZ D@8mzU2tZ&_M8vIQ:GJoc'^1)8IM* [ $&bzXDj|W$D3PzjcF 8xD2ޥ.yILsW :T^Lv)P:٣Ŕ8hqOMP ģS\􎌞>`sU!'x8@y *]z !FLgAZHo'.e%n T ahH> d(]1Byhg!(.]nnFqYe_}9`m¬9Jut.$aL>aM<#mӂ*cf[@qllu ShEhn)GfnluD&8v# *x>ڳV]R9G=ZmNሶM4GM\&fG5jr)jl//CtMhZS+ 7k Eݣh c[M(&F!)$޵;ɿfCtˇ"[?HTiK 1d(gt [eadEolBqu 9hQ/p_|cD[hT9R4a4-ڈʑ1$s lcHc46Vt-u,!YMk9 cSJxn*GTj9kz/lPJؾs4Cx,yȱfaGBW+;kԘ 4CK2QovYCF$çR}wqQ_y3 `!|JhR7W)syXVY43W% /[]EP'h`ـ 9p Z*"C>=c&e๼/.P MTnjFt@\="[)oc0dyQ'Cg48ޯU| \!%Yb914 gKt#&]#Fc O}7TL%9v~zA|] V$bs^F}E1'WPx1)>z|GV [2+;{XNqfG302Mm:JeVϑQx;a#Q߱?жm*$=m n8k}Y҂e( F@2ȷבOFnŇ@3YTR<ጅӕ}GPiVwJ}ĵ(ݧ-1g nowjكs\NǣգZ鼙uiVWpn[`cu Aq>J,ZIgvO#=ı,o$ IDATQu1`H|p BdP@,yZΰ{v ӂER6&T3h?v3av4)Zk@E|ӳ= apBw?#rʣS3Pz#.?Ǿ=5v6/Yj"vLb Gb>uI}Ml݃^~տRc#7ϾDBF'R4:|3+<g=ۣ%tcTmMTGfU (sIJڤO$\JN'ZPtC۫?iR&0جM,O܇kM3o/%J~MBK+)Lxz7nT3[hgBQW`AA{2tx|1ecwˇ~P%3Γ!^^ '1M$%f22 oZC0&\㜖[l3 5OSh9#Xqmvt7ek\ɓ+\»QJ&xyBᛍZH .^%&M&tW|ɐEO!n_Htnx?Nd w1s$=(.r,=Kt?!u'KBs,VEtt?ͅy68 'qW ϳkBt]l'KB!MB!D#P!(BHB!b$ !Bt1B! B!]@!B.FB!D#P!(BHB!b$ !Bt1B! B!]@!B.FB!D#P!(BHB!b$ !Bt1B! B!]@!B.FB!D#P!(BHB!b$ !Bt1:jXrJ / nB!Lf;Ⱦq, xBU,{|q;exc׽RQK_׬?0, a >zzBq#x w}"ؐ Wm]a 'AO)eJ 1XXk5H坍s"sm-fUBt|}[ v̤;9y铟4a /^FMYLɶmaOF_ƽ06ư6b$l+?^>a?neLz#1&/=NSX,&~j2W7@Zꀃ3zw'^0wrA5e&M]MFq3v,aS;Psb&<7Ŷ9̤\?=YsKZMF!~}XcMcFesQ֌Ҭ1jZF>~jn;(?2 ײݼ3qWVB,_GtnJCAZRVVw&ˁXϜ š7~<cANM@\O8ɧed4ay\p'`Ȩݽܽ8`%ϳYDoZ.)L.[To`'ǯ'onNN1prmv#ɲ0Պ̟id;?2Y71Iۘ\|:s'ǀ++0'df̥W3u' ͦݳ vwNkkM|2,R 㝽Y;s5!>ܡ!hf=yӅ1ń`~jNZ-0nH # B]/$c>y5 !! u8\nk{;_—gkT&l-8ZiݽPlᘺG&_a|eȓ ?_°h5fU-LOqkRFsOT4_1j<3`+ r+ö$ +j;<ȋл\kV{ w5@5y^={Nj G߆V!;Aفc2{{ozfg=Lal]߾UGᏳ6#}j{Vt9\>>ƍ044?f!7 n67.~;ιঃ6h4d6 Gg1}G9?ͧpuX}^ĝGa`>8~Ysy I8܇x'pC_Wp}qƼ{-WK8y0o57k-3x?0eCPM\s7LNn{a鍑c'yѹ-sw&^~9CG䌉]ϱ{p|?<` pחNG?Qw1kmbR08ؖk{\VozkX'<; 1杷i+0Y^'{hg8v wfk,#3ك0u:{Om}E0c0w-|u'Kqqg̋/p3Glg#.? 9a?؀@&MѝݯHN| f'7"'b۬Cm|1 @ȯٴeΛfe۟NU60e# 1@YNZ9\F?Wĕ7RY7ytǟm6Y! g(-'N_u~m;o1]uV8fNǨVs0/swG#M_ed ]EN%tq3na B!D''KMS_3}yC;ԄBф,]%`!B\_\OfB! B!]@!B.FB!D#)'Su4*a5Y.fc&%ͳtt!B!n0rt;,8 G >p5S-c_BxH+|8zM kŏf#xønxB!NKPdxs$Ɔ᥿es_h9JZz>ƫ_R~t7 g |퟉/BԓNJ聸i@K֞!ec&*ORv*$QlR aTX3+q'n3Y0lRI,TO"W I*ʼnGzǰ864K )[H/Fպ34~Ct@ŗlX5#Q2wP)Iph(\3Y+R<`0PXQ´9bRK(_7Jyګlpa7;HͫcsثH؟YLOXmRBfvҋΡ*=8sU;XKJ-uL K8 s\[=.ǥO顀Gk#Sr(bGiBgO`3&%&0ȝԴMd2OSj ogr!ôg= 7f5/Flkә|!OcA_G*jt$TA$<bUzL7_ʉͯ^'8=5LHG@phzcyym,_lYD[o8}3hJMh m׫`=$@;o9sf*&tU9[H.Ib,|9챈͓PifqxcjO¡w[%ۙ,XΦ|WlbB9[Jضr=k]aAT Gq0ZjMeTExD7YC^0lb;p]n{jMGI cڼe뵘08B(W%p4ӑ%NmLH ~?= *mO:!׈Xӓ,خQG2Pp64mᏯ^sE d舎 xD1Pʡ"AUQ6OAq͠mSb q.hGf7gx4Za*SC2,đ#%-#Q(hFd}ODlX U.quhN龣TEDNL*}o.PGf(F`r.nHhp X[PGhe}.BXdS1"b0dݷ<&1U{iKmjbAkp/w3> m[賜Ǣ!YԜ!u ZԴھfy RنZS {hW#S5`[r[TGaRKmPd`Mh]z/ 9>@qD ]QOנZ갨zL:"H@I`L4Le mjpPjQ '3;yfڏ~2'khB䃂shɂ4aUAJX*:ۑ'XcW8#ZGO&,O$,օm+b "b(lI2\>35z'UzZ7:\.cNXmPk0sJ3֑Z*՘L=]0Q^ڕ=Fx9$:'Luo.g{l∳1i !5(G(;z!7"Y̜(8AIZT.Euy0B<)n-bi۴ᅳ#TP6m TS OIrJ;+ҏdcTT.-è~Z\=zUmyzL%9vBHzA)RGp;řϖ՚(1>؟O)jC|@!2LVz>U*`)!=~8ct=Tzu#P۴&-| EY>mT98gwkP =xiy !! `RԂ3j@ѹ=!Z O` ,9`,Cwm>؈$/y4,}.9-j%n¤*g~UQW`AA{2t}vzQCd~j;CG{5j l^EEĶ:{\I>ĭ'f[˵n;H܊>QHr*9LjA5 mLt/i/I`&Pz#~hl'LgX`BHb%+B)vt7eLgUb6/0T,!^%Bt._.I먵gI/Ɉ Bљ2-*I ;C)r, !77Y'KB!]@!B.FB!D#P!x2reE?Y͜'~|EtKfֻ?AgUjZG}ue&%ͳPY;w-YFrrs*7[*Otρxֳ*}2m[Vt}#xÌm}y~|s#Gl:Ug[_nwQ9%~BH;=3rj8g{`k7I=?i!r G_aK6I)GgVNܢg`T;HNˣ^X"=r5)91?>Hrb7|i{'~X{)P%el gԣ̍E`pDF\ZʣGogoE?WOl+Sɾd_4 ٛ7wUΐg{W% {ӏSn[H 3*cyTz,?naKKgNv j!$vrT&7`E#.rI͂EWp<POL.>#\l hW>x(}D.fș1'TQ[9r$^sŗ] lU z4 _Na&6{,b?RI[:՝7_Z1L~ gS!+6{!sZq&F¢WPn(]Ts$ޘEpdi Yf ޳d{FuJm+׳DՐz XTF:G4UmFك¼67sd_ >1PtZ^V="՛F-&@Gtl΀#R]<6"/DlZ^֋ؑ;J:\TNq̤2nV~(U~ P׈ QRw$th Z4MS8@b#\Р13=*fI3(.- f\h|aьC(m ^~*ғ o'*̀cm Tz2tx?Z[o1$: cEMF_qhՅ{ fgCOtfvf'swVn>x5Ng꼱J`az|GV [2+;{XNqfG302Mm:JeVϑQx;a#Q߱?жm*$=m n8k}Y҂e( F@2ȷבOFnŇ@3YTR<ጅӕ}GPiVwJ}ĵ(ݧ-1g nowjكs\NǣգZ鼙uiVWpn[`cu Aq>J,ZIgvO#=ı,Qu1`H|p BdP@,yZΰ{v ӂER6&T3h?v3av4)Zk@E|ӳ= apBw?#rʣS3Pz#.?Ǿ=5v6/Yj"vLb Gb>uI}Ml݃^~տRc#7ϾDBF'R4:|3+<g=ۣ%tcTmMTGfU (sIJڤO$\JN'ZPtC۫?iR&0جM,O܇kM3o/%J~MBK+)Lxz7nT3[hgBQW`AA{2tx|1ecwˇ~P%3Γ!^^ '1M$%f22 oZC0&\㜖[l3 5OSh9#Xqmvt7ek\ɓ+\»QJ&xyBᛍZH .^%&M&tW|ɐEO!n_Htnx?Nd w1s$=(.r,=Kt?!u'KBs,VEtt?ͅy68 'qW ϳkBt]l'KB!MB!D#P!(BHB!b$ !Bt1B! B!]@!B.FB!D#I=2_Z?'喟蠡Vu;!H }[/[[:$!~~ZRkM.]B4d +8M-tqs]B4$vb2/.ut)B\S_/tt)BqS؉|_ttB\j9oBNZF2.4 5ڎ.C!n ;~'n"g !U"P!(Bug=ǖSmn,_uL!W@RQQEѴ]щbN>EUg0-}~קJxz6^W{ײm!7< eʕ|-R~ɥ~ᓙ4>?+a55?=ىҎ7f:}Wm!]@6g~jv-LՒ(濞HS-_q{Sj)?~0~}%Z-K@5TB~Q-SP?g}qL]\wI>Ry_ gPtGEY:}FE1hp#'.棢FO_48{eYN)[%%ʠgiLwc1 g )`A<=! ~?*j~>\1Tv5wlE1m}Tg0mpkE̽;9+O ~RŰ,] 'M)jeۊCJ;}D!k~}4S~ >͖-H=]A׻pǫneTfU} ެfꭼ>Z3_e ~rߋk߉$(cV?@FYy,~c\pjOd'cKOc^pXkI;#c-eכl)zos[꯿hMf{|6X.37ͫDS7=4l?*4WK#y1A~~14Mn V+>ՈTuuWf!dP\[(`?壭x{5֌ʯ~uYC%}]7GW]i{zZ5mE}rO7YMI V(4k?jI)oNᡭj!6 #P\o۽O 9S /7ʿBc ݥZ/*qmf{k8+N PKyQ VWStܼp©WOY(*wO^C~*FܷfoOV焟_/q.Ze$_87"~; Bq(.UUE/~]z~wCm96]$fc8=G T}^MscģCHYwc}hRtÈx`]\«w.b|_Q2>N9Q~SV NN-T{}ڶ:SJžռρo2 \$n+q6_KRwtp5B!@xl Tqzr+N[~N5f7~[YBq5M;1G Z⺰֪8:}G!G`'K]wB =tvtBqS؉Rw+n92ut)B\S2(puR ӅgBͿ@qӨ.o+3o% !MC.sӅ*ΛZ?K'喟蠡VdO!& 7 g]wYB!e%`!B.FB!D#P!(BHB!b$ !Bt1B! B!]@!B.FB!D#P!(BHB!b$ !Bt1B! B!]@!B.FB!D#)'S};(鈾5sגUх!?M.@oIfL8bOaj Cz^ vxXOx1"g*wlYB!ĕiJ@`@ )?u5#EY ‰O6#n7t\,)Bt>;*UܢU].=[{:C۫?SKiJ۩swGIE+ :RRa9άĝEds?dmZndƌ@=GMCպ3$kV(tAsyֆvQ^%7=mF1'nx=fcGиG-n%9 'gUb9-SߡOϴ UKLNz9T>3Z680Ors{`Q,nXRv>.!⪐iNj&2cCs)Է3 aڳmLVo>Ð籠#U5h :c y wq6թ1eл6͝U^cn*zuva-E-d PIq;5%53iע9Vܣ 7䓵,_Xl4v85HybfAܢW׫\8{>txm`лҎA8[Jضr=k]aA-Еff77Dg>#8{OƐ B\{rH'6|&c{p$em'NpAk`|sԤ6+9x f/a #4KA>9v>j'CCGHhPE2(x t\14#@3@Wΰ7нWO+K-&ѱAm^ĎttQ.nԨtW4/B8 (̐kyBa'3Ѽ ņ'1TK[܆kbAkpj15Te2cS!\∳>iu蛯B_ !;hǠpPeZS {`wbşƲ+-;_mꈾ:*@h]zнK|#CN`)sBqH)(&.K>(8&,Xx\Fv%zG,?*;vۙ9jFHL5'@#^Qv$DǟmcM41d$ m~SgR)L gbfv&J-~Q1q$Uu?z|n9SbW6D=;>:Ͼr %OٿO׾ QWBg;~5;^m/C5v9VH4>0̕+@(g?Q:~1|<B!n?Y?_}z_Y<7Oӿ\+WM9Iv6~Oi~:nNR ?_hz*öןoog*5>_=g3~Oj1@l ?>0BwQ$k`{Q1e>l왿qyGƟ괽s~ɯy罏)fGcSxAOkx}ңBKf>7R\wx@;q>|'s<[_a֟.a?Ssؐ~ Q[6_|ѵT.]'u~pǾʬ"㳯Zxda2; <b[֋lJtQq.߀N4mP /'w'Uox^+M-8ի)mP (/G)bf}K^eKzgQs+k bgBq' }Z,Wƶ6tH >AXy $嬧>ofmJ~FB* Y tR&TGnr5&w_/Sv&_PGr?VkRA aJWK}%d;H#:NyT=FG#RSBz?SsR=jNs3r);I ?tv7/-;s%ω-k(mnv]llr38;iڜƜyilbtJQ$Gɸ QK#ޑ@R=o-mws$^yĕ}g{γeזuV&0g⾕H dV=^ď[Y oH_IwNmop0撻oCi 1ضZ @8pg<gGZ~eni\}%yw9khuhTgxRǺwCg:nSdȹ$c۾scyuZΡ-Z@Vp$q ^>tb{]8['k8BS }(MKr6s j,9 q)6Url\4űx @!8h{Mu4 gڭ ͜o9+9\h`؛-[il(l\_G Vpnpzw#7u1;_dˢd, Z tOؓKX7ix=N7X_=nsQX[%*k@ AhVmcGHCC>.83êBJh*̞7nsqoV¶ #1 [l P3o-cϸ1 ׂP(b  Õ*Җx /Nޣ[g9O馧sLש9ҒC8,Q00a  gfbj2(;C{P|vtZUrLKcvnm.6 gL bc=Wഇ- gx[eľށ6{R[4!"ԝ潶v~{!ir2 x(f m)_s:  %6׃W/n^6FeaZtqFɔfdbq@u2U3D b!ce%K.ȥ^b[( ;%YB3x:z1Q~<#_y_|8g78=Mqf>Kx NVȖYK,YO$ph_%٣wc҃n&D2$Q<>aA탴-*!KvJCSFYbUS.R[G3aOSŵ4 ,7V۟ )X(^w썞Kݷhٟ-Bc瓡 hZ&@ Kܷq;^[;]}9|K_G̙ͭG=4U;En72XoKh-jf%5'_e[, )z9V]6b]~jdZ¶8 3#db.?BedX |}8V楴7K.mַ=I@K`8,m.Y}xcEsxu*a|)Xٲ`.Y_k&"5nc`c6Zcz47Gŵ(54n%5%EU˖,;O%q_;W_sK?4{˘q˟zy1|oP9U>(Gܿ3GF'2VQ;4-?iC꡹ly۝iyqV;ci7׿I~ˏY3]=A(o'5u3\ͽ&o`56 r_3p-h*h%qY/Zvl"!vSBŸ"rI\ %E7ul{ +5aUG5Tr;WpPcq(uxZ5f.%OnSMc@5e֓#7 !",7UHGؒrVixj(y(Vsi}5(B"P!INB!0B!"@!B#P!"HB!0B!"@!B#P!"HB!0B!"@!B#P!"HB!0B!"@!B#P!"HB!0B!"@!B#P!"HB!0B!"@!B#P!"HB!0B!"@!B#P!"HB!0B!"@!B#P!"HB!0B!"@!B#P!"HB!0B!"{A7I+OgWGග ;oKkƯ בtSm܎քB :bŠ\{YTߖdkϪsAiLj}[ZB!L \sʹ!6!qaM e>v&B ]=/makȟggFkI`~^ ~F/άǝ:ޑ>*3g͝S | e%3^l<v8ݹw/s+% ïE۴c4ETX. NwK>^_;Ϊuq*zIy2-Mv`uk2rsylQ#c!aJف( w@Fb=Ģڇ53Gk#-Y : J`YVհj((h V Ň*)=t*x: S4 Y-mN"$OޢrC'.`[ys лCGϲ.%,]S JitPw4y(N Kx2VZ&rIs&`zs⸉G..EƞƘKi8补=y(h9o]BuX< a\2 `Ǚ)q%Po4wRdF.e/87a`ꌃ4ʺ{cJoBrB8d]=8jB/.YkT =st+8h@_t7Śkԧ>|K[SB/DECsAxFfxxL߃PSrPβ1o-{z FuG'6ۥ%ಁY( n8ۯdQVbK6 XP e#M]xD5l<ڌwZtc4=&,gx' +|ژ82Rg%U4k Cb;9KVD}XcN0)K] Fw% t{p9OHLy+7|&ե;UyCFUG%  k.ǚdgA'HuRv8}cm$ǩCvU3H5r-x*6IQǍB 6RL7H\ZӌX> jkZ0T)ÛsSUX_gշH-(zB/ggi9Nt{`xXM3xW48M5-7z.9K Qmԟ~B\OlE%ٲd+k3/jG%- pfE;u*U@kG!e |WA``OUZ_=U?⵬nqM,rurNeK Ӳ9ZrSь!c?dvAw>r=)WgoZZbrōոH˾ Cc}јx]8,ۖq>?46mS\WlfM;({60iZjh IDAT3}ݓ_P4 /Rfqt-^qsvd4u?4r˩JE]#1&5$ӨvѼ>I 4m̭޵ hy6z%lo4r\j\QV?8Oқ)*0еB[6f Z]}9i4ƳqS[yu6>@}Zxc;@v;+q]-S{K4[gDOo9x߬k@ !'28q|lյ='n1(8P ; IeQH{o}xK2t2r 5?J26-LLK)Z#^E.tV,l}͂*ETUñt1NizuY3}N R}fرqe&cTܬ۾ٲYŽt6@AQUT͂#= [0 USQ-1gj8$dֽӪْ)صuo8,g o2*H3Qߢ%0u>_S\ky4՚FA"NN׏:iەCl Xir5-L%Ik?˹rT^%i^9ctmE?qڵ Ⱦ5]=;r'Rἧs'PXteY|IOFg=G}_ Nw. OF?aPu:-[q6SHqdplqa?!?<{k/HMLYz5ڒd)qz/%C3&5A|x?A0S啃TGH4 x&v|1R]Du,1EK˖ p--tu..dm/t.;9+tl7~QQax!27߇o]_{@u~}޺a+o?)60o%1(qآz&mkC]ts/j.-#P>TMjb tj2+$2lt %}Y;^WB KȘ}j!8΢gf}4uhgǠbU}?B;{#~:5X觫|DYȰCWo'Z?G}k θDţ>U6t.ͱf2 m9+ob9V'瘚Hx8eYqtË,(\6R dq')0<@ia| ecU먛x"&{kfK)  tR CӇίDMpv-|)Q~=<~-)ݤ Y$ٴ\i׳m˺u\*a|jB܋d xȺb6yqh:}\)*+1hC"Dd7bpe. #Lcjn% Z 6+x{ƟxǯOiY~ȦFQiy-nf[f{OG}}HxAE%p_f8l TKq=y&6}ݓ_%WYg㻀 H aL}7P>MMS#M( mч(Q[k)<&/A`["gܦV>;=gJ*x 6WozGz*[9k0ƼBsRWX]# |o"wz6n^Ϫ4RKN+`wϵXrV$z3h)΄{AI)uh n5`ݍ4u @?! ϙFtׇ'ZD9f9ӆ_.)%:8?v@kJڵJJJ:'nfˮ8c߇-87Ps~g,d=7Fr\ɤ<'u_i]zcWn~JK5I8r.$;G(9ނlRɦhG#^#ԮG"H|*jY]Fdg$ğ~'=cn W@y$eQO>ǪKśt\NrxB\܏]\IoV_SI) $gEGUJ/Uh釚8*$˷gdkz+yM#i7aT2RvB3cq*d3[Kՙzxg2+$9I*8o$Ed\koVzŽS!牉fCCdX%eY9)7op k.-r$"YP—>tĜ"͞2*6Ry$W⨫Ϳeif. q/?kgtB/cW:q=|zAj| $ !B.`!y*.mF|c7/@%H`ݡ !DĒ%YB!o|, !BD B!FB!D(Ba$ !BD B!FB!D(Ba$ !BD B!FB!D(Ba$ !BD B!FB!Dx?ثg0@U9=ӵDĻ:xvc YX ! UVofaܣ7~yv~;q笥^L!*g--wݵ#W~B$ރ^l{#jX6=aæR/4rG[9x$={|hst !ĝ!b۫|I|Yeֈ͞F:y<ӆ+sIu$0ߑFr|SNe٤:?/* @st-;?M4NYN~9ىweSs,T [Ρ@<;s[CKކH*vu>. e2}VR;z=8k((M|m޺zoxtZsդo$zr]ܚ~7߇Nk4 $e89e՟ؙ3/^AZv%7#xxW>F_rCEVՃCgO N}B>tĔ6Ǿ?{|٣S=߿-Μiy3l[ktRٶ$s3ϛ/lz2xLw͟^ Rܰz-Μm[laCś\\o>d3gR&Z<懗W>0_Xo>+Tӧ^{o8fO}槦ia.KL2jW͔7\?z|8͟\1M6KI5Kj+Wz̟4uM4?o.L\f7\l~~Nⲫ-}3x\妧͇k/7'ZLIp٦̯g~|}yKO'>eǡc?o.%˗)C)ϛ?3_a]w|qy,1iɖ6n7[/??\j> jI>i~=Ivy|i1{wO':aͅϼieokṠSU懗/~,L|P~h.?f~ h>fɨ^1o:muiw^)ߧf!q!%}{G`nUO1+^-?ӼEͅ)l[9;IvI![o~7?g$s-\2eVęmqfa}0"c:+iWZCr8Ƈ/-4y4O|] .7WO;R͵M$?>|}ƕQ@c/y'stPWN%T:|ś C}0,L7ӹlpy-m~ݶA 7y-lOmTc68?﬎7j`8ƧZc޿zrG1I!ĽD/ d$^ð8YCxO7rmO02?W):Mɳ{0:_P6t ^4 `sQ*L=K=5}mBKC.8qG Xǵ87w_.I1ڍsɲ9]终X˘xϡ7;0iaW:z.F+ac3kbcNT(+Et|Ark0gke A[#A`$P˩ߧcbI!7p৯|=cY il )kykFsejWs-o㋚K^ y)|&:XU:4HD|b"c{#{2FW#uQ%kj8Nվ|(vNEõs{izu PuBV0xsBԘGp(=Dh(-X@o5}mNs-I_fеn7Ǫɰ*`Q Vާw-w2vgod]z1k4r5B+Q–8 `\@՟dV}`?8 ٲ< CT,8,Q072502i%F9e\Sqcf_oxk>01OڨN_<:'J 06nӏtk \7vB{$ΰMb}wL|vC:< )a歔%5v@Z{wM zUq-MC|oWHnZ'* H`5. I>¡AI/$5tio%8Wζ}x=trV7<ǶS=^ZN5i9Ն@7t1b_':@W-h&MA@XYhxJ*FZf}Pݔ.ew9Mz`T(~ȶS[O@tm{ li٫ٳ" ?qvr9|h٨}Sڢ91[4}PzE8b HrQtTtaIIdKrؘԜ" UV±ϑwVjCSڢJ&rI'5i,'?I#wG?](v J))kj=V)3׳3etrJjvݗO- w?5Ϝ(MxIlla]k{6qKn ku=pϳCYF2I\ .c)Dm< kIٻK9iq5\d4ej0r7H*6]IO~%C /%/>nE66\j.h f CZ,̀R*79>s1y- m ]x6\iQግ'3=~hfƶ^Zg7(KJ" ykxs\myc؛Beɻc!<;u龮#澮B!.w?8țu5. (Ba$ !Bx B!FB!(Ba$ !Bx B!FB!(Ba$ !Bx B!FB!(Ba$ !Bx B!FB!(Ba$^VG硞nFz%\ydPyQWRONB0&g+.~ I4ǒ}9Nm]ɨ}Z)ksg1"Hejei6U=:(s01XsAN]oBka۹}XTGv,JT8~HҩÉpfc97xzOle/4&U^ν\?3KyZL{kYC˱M\J6u-,?q 2txb3~V!̢B+ɽhrwm˺ɱe#zrE3{אMhPF06j*v5[u,e$~q9s$@ݚOjk`'5j$͢*0ƌ`LĤN$Fz62(ptD[5"ИYtױ 1*1ZbY]@ɊD[\5"gkdp1h*%dMfC3j{l[Yynd^蘒HbbsGA0rr>g޻t;nytj ChB 7tOӡ$G|۠ őD(hq<~q1gNE0mWœ;|= ث0-*QA>vi-g3\oz\$cF3&bYYK{j;2*j F26hemzZm<~K4+q,J$E)Z+_,=@? z-f"H, tWeX' -)83{&׿ʲ9hv`"((J'a xy4RY1!uXXB|J!#8߀s{6j4XB|QPݺĤmؼ3qWT({VYޘ?E1MTJ|" 1])$.n jfh '\?cq7c4ԑBIjd%bw!3|(Y$%jeFl5Fjن>վ85cZp;+ IDATnhJa^# Y7zY ([HAJV:^GV,|fF>d5wy0@dҗcq{!]fv,$9)d-Qj>jd%e`@dmnw,`䖍Fqa̅LSQ(m$#nf0*:'^5)-N&yӫYAe`١d/yZ{^m ^hX0(,)ۀ$r2C\9wL"ʏERp9MHNz0V[ǎ퀙,&3u 4Ry@:mO#7VM;Wsӑ˴Q?MahGfRvl6R"{$V`0`{/]!yZjXGn$D cmٟiOD kF-„?g11 c+h9wm԰yY' "+ײg|[aL'|?53MP CJIJh #=p_ lDh \cٓغk=b1v6OtTL,$zgW+SG)ZU iB4]bփ_-eO0Qfhzjl6ώlP%$v4$V?3FɦBl@I`BB2y兔9c|TafihS9dNwbsj9ٸNXm8#Yh&0D3mDXmTt] ՠb1Dw(j Qg{QfIA<]h ad8껠((KLAc@exMZ 3=ѧH^y7 5q!iǑ=<uxM; i {fd/'t@D3T Y`, PSLLxU } -rM/|}m57bs1PVmi _^Ȼ:.tjmgYPYqBׁFl ̀7A\oj0^w_%͚KֳRY*SoDl7/&vEip81wP `D-Zl5 XSͫa~A0f..MXW?B5ଏ͎rWm N'9<ۏcg83Ϯ~d˞3Nz: EL!OcS8L*@sG8#I> i?ftVјV[v=SEjoƶ*ϞEkj&Hk} BYTZ,nwL}6׿C5cp89{_DFG-#T&S6QGkz6WFcE<:0O!d( %ib '>A-X&NeX,a^,pw֌1kJ l~0f/߽ܵ0ks/\# :w&M;~S Ƥo/LSuD,^JQ%\-$M\ $ѩyyw_g(,cƽ$VSq,"`]Krګؽl X3aYORgZSg_Mt.uEMc^M&1}o5EUuhx5>cU8^]"bڇ[Tg}d#;il.u Bg\uٜ3Fq]M/ľMK~aK`ㄕE-d'I}/ʹ"bQ!;js}%FAc*dݪr k;.t7c:̼g6pvu= XS1Mϓ0_u1b 6m!9j g~B=ڮ'I\H\ևPp0]sk ͻs]^w(] #f܏͡b2fn0C4LGM-N !;?oz4N[d0CqboC}uc$nƢFY:u.v??[ҶcE |C=l^=:/HCW{4ckU\9s6b2⬫ЦzM5vq,Y21SiCLLĿ+>6i̋)ϒɣQkY$`08_k3 IKhDejmdB֌i_ebB"qEA)>Oq:6nw.A>vԜ8dP AZׄ P0qk=(0,ahN5( 6n`C%b$^`a瑺`ժ/F [tG)Y]y,mǓ,Uр2HC 8Xwb@ Jk(5t6`*$ow=aUHk:dG)VMpԼCOɮz4͉>Z-p9j[i !gO"XMւ\* 8u9ϧ }y, m瓤tPdӁ))[pOmQ5e=}O}1Y˱;8,Ti| WR~2Xöu%[QH&xS88Nr vUcQYSi/'@YNisQʺ9s\c)]ݩkNlz4ɠcUC4pVRTUCѝuXkQ} bw|kTúu-E=|=1ر4ΕdW2=ܴϑӉmg*D=zNmڹa>7͏Lb8N[!Nt\%jr ^a$^̳ ZZw4Fff @uTSʫƻo^yb [PF,=ÄY kȝ>JM!s a #qEYl~&i|Z4{!;!]MDC{u3u+%|`jfۏJP [ !gӗ{G= 1hgcFbnF5l?۪D"G5Dq !4i ZrǶ7^İ+^=S_7J\:˜[oj!.G|c+vܸ0޹w7aIj$Z`)(ffO@0ҕYx/[dRH)0"Q#GMmB#5"QXsh\R"c`%i~a((%kr4c26U!߉+Mc19{G37we;/w3+ ZK?ɝuq"5 \%=s\egOB=5B4JL%iOR"wJY==mB!΃+?I @fDbQ} 'ddEqa5M!sF&cP,#q|2zFzMsbvOẮ^e8n!BD{8=n J`밈9Ѱ1Ӿ%0^qf;M D_HD[SZ.PK<KwB!H(ʹr܌^!j7%bm76bY_RN{PJ5+;bHf+djynB!zGG%fz$Υdǩ9^ɲDM<q85BWA8PuPv.$}hXwRikhZN0MB!_W@\Z._ɲU먾D-exkc,t,$#p"&!wQpĊygW ԺBghjX&atBѳ~'n>ו8t1B!Ey󰾮eAB!<@!B#P!HB!0B!<@!B#P!HB!0B!<@!B#P!HB!0B!<@!B#P!HB!0B!<@!B#P!HB!0B!<@!B#P!HB!0B!<@!B#P!HB!0`g}]!5ǐx Ɂ-Bˁ  !Bx B!FB!(Ba$ !Bx B!FB!(Ba$ !Bx B!FB!(Ba$ !Bx B!FB!(Ba$ !Bx B!FB!(Ba$ !Bx B!FB!T;:%rYSc_WGx}Oo#ğBqH>OXXEG~_yyp9o|š26'}]-! _bs^ZJ}*]uGGk>eY_H!% zi.@ivqxҾ]}]!$Kh׿"]~2sB!h/!ۑ_]'B!.2 P/@qwu?߾BLB!(Ba$ !YtV?!z+"@q)9Ou5LMaM}]tGf0 _l ;?xv=uń&Jru K壴TD|2dNYE.{86?Vi{yvrCQ{O˞a^Dݷ#/Q ?@5_6_]71mU \CqCykM5ï>B|_]Ia 3q>g!M,R>`/l]J : Kasd2 ~Os/m򿟠?G~"l}ӋU+D u߹)x- %2uPNWoy}ͻGOŀ6=P# laOP} n4"wCOj[Om%?A\'w?emWCK3E~Ff׼rc*!|%n !x^DDĒS?sGؿXVC`)_n)u7as'C Yi(>v`+{oh۰iGh\wKIMmiI :|ٶ1#-pa/,QɽeB_>J䧈~Kt{k|d1~ھM$at2#~Mč×J7?%SVaHFބ:}f>ߑ~:~*K|;n*#G`%oMhoRWN_gW16na_7}ƒۮes+},4ggpv AC8(„G~3ï`/70q%x`3ۏs5B\$zϦ$o]J}e%5ɬJ+'f C]s$xp(6!]wvJAT9 7$d++ѥTUBAw[Jy)?6rqdVb8Y^AꖕsS_%@@!gc߳ؿE6pknxC$2W %ո2uXZ_Iˇ8Nacw89ԑOQ=GU&Kn&ťTJܯb}Ϸi/gZ31=6P`S:l?) !zQX+m4SP|Y@w{N`C%? D ϔٰKv1SPq)NTM^#!@͙t_7+\mpԷ!bʪ;~Wb_+h5F%%8+Y3\k/)8JNE !54~ep fŻi),s}\5|w?1Q]|pw|qji@!NЏѿ{yd;߼Dԑ r*;x`c:sot'FFqt:އ^$'guS>2G1ˣLh;Z]Jp/*Tl}IMT}E:q39P{!hCc'\e?9gd#~߇2d$?!7Ĝr 1z+!u7`xח/WOt#n53~:[1O/Rf COǏ$ !<@Oq@wS/;Hz$XIkoUg1p!#P|8Pfv;quX0YChYNId4<.+4߃o{_{۽ ZuHWas5ux2#$łv N /Kݽnq _j- iMM$MIDATCrw1[?Cŭ4vC_}D!~k`DX59%s~My?Q0dF9W8 Wxmtpډcٌm|U%̼u5]כH݌jb8q\]!yakO~fxP J3`pAW!"t21z(r rJG&,7v<(EUo`=b;?O`T9 !nqtnR:ߩ{c5ӵC\ëL得̈PPL?c]huĹKpKD 1_FzŇC79LDS6crMww?xC<>Dgö#ܹ0wgd9f`ЯH|'>& n /;w_=BCܕsw]ZȶӏL`$v(8?&x=%FYCȌHE!{+אsBV,PCeKI3W+ӶV9h}1~2yG:`_ 3#' 'kX s'̋?x_Hٹ7]v԰,Ÿ1 Ѻ洗5#РF 4f{.^G|*M a8fpj_D>  lb3=4_J} Asmp*] xqsg)u'G vGqڅWJI]L3p* cx, 5g%%Lw[ۗϱl6]˱ĵ%5O%6qD(ouQ3'2/?'o|{h~%Rf[Oi~/^`_p`RfooWRyKfN~afrk;r)3} [{ dР U+py{,?.W=2SֳͪuFLYş>Ab Զ@ٸtS`y㓖}yRS^_sk0$r/< g0s+XSp|Vħ=m-z{ldg};W-bfZZ\ێE,z ŤƄ1jD +)sS0c*@/MaWu1BGь1AI(&=!1fF=y V ;gj$}wXwF\4T+ <^ԈS=KRŅ1&"Jk!FE3Nu<ƌ#uG>12;{RǾ3Ĉ`F`lvg?c,$oqb֑-A t] [FDej Ysy%mTpfo `98芻nQZk|R"cTzc3#vQ:wiX7rM؈xw5V&{F,fFE[WYF.;::L"Eqعr$[rReD˪\_0zC[qxIr=t1yl|FfdW?r^ .~?^6Ζع}?p8w nO8F[0Nm##`AAN/yJn~/݆vQ$m] \\}8ɾS:(Q1W1Oem|DssbY [="־ϯԏx7ޔ{uno `ړn+63||9ϯ_Gvr|ҹN*w$%pLηr+?mpGbFՀ1?@沧{]L;3Fn{q%EJq!8k^"uq!NtVeWՌeS=QƠkhMhaK`w#P(NG(iKD[W~gёOWjDLFc2o8]Zɴ$Ǣ1id͘Fݵ/T4f)D()|IS 2y>DM'an{ ;cŠa}%gmuGDbUA+%=i)6D(ʜF3ۧ*0LAV _b=8 Ѥ"&U(; '`{I-.욵Ϋ4i2'X_H!ykIQQfL㧒QAւT ]cj5\KY`j*kQB8k !<ZS z0}LW4CnA# HVGpHE'pOz֮ȉƲ2~~Ɍ]M!bz߂vGA!;¸Ƹܠ[_/[rMmck]/bKBMw4o!"acCăcrIx_0b[؎$'r/nkwoA~G9ǿbT 7]#w9l52b,~>mQN7{Y~aԶ]}όCq ~:2a,{phk(RbZ뻾d13@#TccQp؛0Ξf ;u-ɛamÞ]Mm~(#A ٓvMLװy?}j-Nm`(vZmr,o)܃@fD=XEgl#=w(ɬѠ.uI1GAN7AlՏ;wͺ]-d4wJYa|pqR*_,11=hfLNF+  4AJ,ILŨr QBxCԃd~2m\}hw*i1>TFQi9n%nc>qh\ހ]K&us|_cdֽu8|jqFXLNU-ΐT69,Ru[q'`KB#o{p?E]2F"#|ٹ3"\!,yQ{*wοN~ɖ |fk 8 n]8q'j l}F|EW ix?#+3ȓpW ƫA*?a;ۍ/kg Γ32npaY n'g/as;olohp7 i΅deZd3ЦQO$q!=ML=Mϓs(֗ÂBlX_^ ~>m7`4  ~|]uQ}}1Ng#ZI84]oBNjoGI:NMPVNg#:`hP@ep7Bzܺ[1Yi {e yD+)VA&ci{Oje0cݫXGYFB84'.?g#fGu *ThޠQAkp R_xýOyv02MOJ+:8q44g*N :S7UU2\m 8@1 kw9 ĕNE R3+zg|Quix;P}0y䦎mLEum)YBv)Do`x*%wwu6(W "ċ=`~$c`-Fzth"=s> #?_W—_/+4wp8@ B0cltߣ7`@3|RMo?#E;?0g7#]w8~1'$o隣uNRxA#`h"n?;8ܿ_0wXy-;$ySN`{oQI GoMW=v~g{qʼnO>  5 W9pNoza1|Co`; Q8GۇU/Ыb%Y껞֪%Rgd>y!y`GSx*+r)sc$L. Bʚ`p[HjmU<l-JF۰Iضx%s@p yqs`Ëz5@FE=F "}B؃5uWT]߮4W"UKl  2ZKeuP 4R0g*+V>9:JDkċ; vŖK wVWTQv?&: 0zy[MnΠr]pX׊v@E3 f,1i?l9-LՖMEF?mAPA?RGe~wxדD9ߔᅫ"@J[:}I2{[W}|/Y h䨩}udBǵzMZi^7Q~Wi NN9~kq5!03i?r1ϴ'*WG˶Nhw^͟ WFh35+^Ixݒ6F-4eӯΏ(Xܢw|@z~?4mf|EZV^;œ\#&iz.X@FФ3D+ -բ7vyIX{v b(_j$_gj{Yrv͚2"=qRa haeZtCe*8ϫ7V(W@ZU} Z [~?II}52sZV(7N_KCr?/)V yUOVpkOiPͻTZ/+9CGvfWj‚~-yE|aP;ziSf3S?r<bƷVNLG!x\e%`L%Ӹ `0 a@! C0 `0 a@! C0 `0 a@! C0 `0 a@\<2<+9R28uEz0ҡ\ڎ*!Ί]:z(ңЁC꒝QPw(#rhhbĹbDXǝUWWv#=րA[:t ):pWW-wl*r+..NQQQk O'**Jr\rq51` dW2`0 a@! C0 `0 a@! C0 `ZIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-09.png000066400000000000000000000541331507671574500323430ustar00rootroot00000000000000PNG  IHDRv)sBIT|d pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATxwTS'@– Pp(pՉ{VmZWmkUkֽպq $@ba'xx|;DRT "DDDD32tDDDDTH`H`H`H`H`H`H`JT<6NnqrM[GʪužUk^5.w۷em"h>zLo-Zw0t9DDESSSQD굡P(bΒ$<|nט׫_0l_@QQ*ϑcS|'O)M;A@y!$"""2" [Hߘmڲ=ŋTCP(?/]SG+ѮM+tLE34RY$rC@DD%`BB"С]7Uٽ<6l"9%%<}?ܼѼU{lݾ3_C\m;vΊѥG_xTc&KL|?C݆M^eUBPرkF{SgV 3fE: *kcҔix:)KJ7mA]Q2]=_>NYM :U г@ujq:g梨Fg_mFcg]@![eʡR'tJzZ'7 l\,FՀ/]Ok~qƺ湗7o=^w ~?-uFՀpt{yMˠ~lwڃ /aȧ#_ Nn^U#YGm付!4t8VEѺCW8yZcG 11q(W j@"t5tيp[`_4N(+W1hpxW '|kaw?Dwcƫ9MDDa ڻ2 ЮM+8;9auHIIO˧{8wj=w~x4Am;!*:Z5Q{ϿYN؏Eێ TskH#>^&A=7ϞcϿk{ R? X?,)Vۀ]{aͨQܣF/ )СfSwED>{g۪55E`_oXGeC^pA؉ᛯƩ:|T{077϶i3'4r;.^?NY֛4x1-#5<Լ}i˶Kګ6[;8~4> X[[6o݆Ys~̲fF}>"?'LZg_`޿!hش%rm G0cZ3VY>o,Tpո/QUkemL2M<=1fHXXXv}.8M!nmX[YRW| ӧ|6["66NGüd H$\\qT(cdt n؈a7#I$9ei6\v :|$.=cccz*M;M>j< GjjrӼp]~[}ȸw?_OZwhP/'O{T*1nQ}xyzfƅPͯ*<ffh߶5\gU=ÇS;oP> ;;[aϾؼu; mب5FPfhѼ)0D: ).EѲE3D"'.^ BE d|ureG;1{.J%Vݠ5u>ĸߪ4lP۶M)GDW6^'Ope@`pG T)kz'OlU9m*[CۈOHИijV [W]8qo%$$b޿ݺt—F|+a`ՐnȃPU^n]0ah@!H0c\]{Tzz:ӧ~> ׻'T>|Sg΢Y=~UG 󼏵kBTfMk,~&Uؾ-~[08?^z#ǎC.?`򤯳lcйc,酅K>}<8{ϴN휯JۉYխS ]l{ǖCü@zo~e`ffҩ*Bb+<{_z ߺ{;;iݻvF5n[Ľ!{Ye^ßU߯&ao׶Ȱz;T۵Nh٢9mwIKK[wT5unQww7U+,X࿛T>z T?,R-'}7䝓͚^߻~.UZZy[5m k 4iHƿF&Mns>9z "O/izu]rm'?map]VV8~Uov9 ))Yc$z~y;Bלm~p-SFtuv6).tHJJ#y'&j ))Ïŵژ1{.,mBdA]A|鉦M>‰qY$%%;өLv2~]:_ͫ| &%^2۹{/>lޮPOL|}wvv60x% zJصmL޻ k>}bϿaҔim;vc&ݻvVbʴGeoܺ}gΝϲ-g''4*0cF-N>0mA١C6AF60h@?xxC*0\|e;wæ5<=q],ZB5OJ菃7L> qqqpu-?7mUXB/OU#RSpڍO.CwnױqqNدV; :p?Rup-XLLLпoS'ѯo/,^ߝ`o[&/h|ב~jqjzEJ5Ws]i^w5lۉw6u}z;=]VDpW6CDDT|%8wdYkNnt(Jȱh*FǞ}qHRg1YѺC$&BDD$&|:jԠ+w17]:uMР~ ,,,`kkvmZ_QFPlO>l\@" ?~y)&Sڴ>PEVIJJFbK쿣=,--@𗔌7oQ'mpDEV: _'\V: 8#)J$%'#}DDDT8!%%) J^.Q]YT?0 /_&}DDDT8;!6%JeCB@K\ju3W_ֶ.&"""W5'%&*ѹt~#hR ,XMbdr^%:%b}+iںce2$Ia&"""DLzߡK2."R4\RMDDD%1\bddUX䏂#"""ܾs!B 2 nPR4cR)~ko@BBe<<ѿO/3=jX=et2 >hE;>D-p2⋑q>< pߘ8~ ޾y9?.@æ-q"/?t~0ч&*:G1ܹqMAZ5acS JY#?+ܼv)>D=n(0>!^CTtK!"""7p²E?a٢`c}1{T,]8 4txV72f|X"MGxW @~3ti_~]l /_r9>5РIB>*ꈈ0lہ+׮c1 yH""4e7[&6Ccx$ m!n#,\Lm_ _'Oq 3k$7mQu*VǙmCw_bӖmu[+\˔6`uDD'U$Yftk/,eC>œ~"#988|)vOH]{pQT j B: wmaz:kSjլ`eeoW2h\mgE{77W {}ۆԮM+xQ077G*""lbXOTMr+ 뗄ϧmW@XS|;q02z< È/׿h[w Am;ţ*VqxW @˗9zlܰ`RDG` {6l]5>j;w?y 4 7vq_}Fr3`rc'7/[*5næطlk>lں0l6 6NnA8鳪uaw~mSwY&#V-N~m ]^8yичb+/BwjL/Sk|ݺpap 'Nտٽ &M ?'aرe# Rn۷sY8w0Z4onmu 7mcBfMgcXUМ6s(Xwo֋gs_Da`?s.];{0|sS o^écЩC; NΟ!5rzu#q( ,Z ?51op\V,]r:~[F5??8Cʛ7ػs ܸ?Ǡt.҅?ۯC8۶Fu?l>dоm\$"*nj۠0]//OCs.*e{bxn0&6 FPv-kҰA@u* &6p=\|Ӧ|jU] fǏqm؈aC!y3xzä'W^] UV? ꡴3Fu@lKm;0dp06/OO 8Xk6lDY>^=upGn]4έ~Rָ/^Li cccXZZHe]h*FFF055oeĽ}!0mw,zuѤGZQעYST3UEP1PԷwO8:8`޿rw7%D">4{ToDDyeTEg˥{C`s몬B+hi[jq֨Z. #g~C!ɝj"HIIxtޢ+"" ~J%Q6pq ?TCJemRTX-tG[ȱ۩wD"ƞpvveNNn^#ǎy @-pu,1^gP(8DF>Kܿ+$"*:$bp SauE2Jgg'7i}˕IMP, ֭3sF=q#G|F`Ӗm.Q#T* ixzt֛iaa333Yq\ЦUP>ν.Xd& IDATڴF߁C]%ƥ$''aо w'h)\gϟAXYYWnؾs7vދzu]$"*$bo@0rk.+>^`]Ԥ *`uvV]_ArJ }<Ȁե[uj鳰pbʴ,f*PvMT,_7oEd3 ['5KXf DY,C lڂ8_V_߯*lmm R cnAU0k|LL9ϞS]Ub[MHNN\{HsPe\\ нkg)o ""Oy5d@4oC`ܗ_>""Cx2,<,WS|+a ;|-OH{Pv-T(Fw(=9ӫ͟""aJ-끮=UP*عe#}=Ø ߠ^8|mZ>:chPz F.=$&&㈌|V! UXϰL5ܲ ƾJ+`o+pq~s/k2MP!6oہ*/..fiΜ֍TaUprrDf-6U_UB ]#! UL E_}pDDDb_&ի|'zDRT ST?YT" x+>ܹT>:Ǐ1t):c l'ïj oعuK+a#۷oڕEM'7/̜6Ç y=De1,MDx7D?@IXxrIjj*Z+׮cɂ1h`hrL1M7[r_!݇̊pQ}`e.%7 }+EHHLfFPŷ2`?ٺ}'W%_=}Q8{Ⱑ!"l`_$-F ۉ㲽@QP`ϿaT._RNQVP ];w4t)3PXZXazsjLi|%'1eLOg9,q:kc -m'cI:=tGCϾXd֮A@ L;!$$lڂ;wA@l\ vv.? Qg!`u Xf6oݎ.XƏ-[d ƎƄ8rR ];w E/iiiQfi06.KKU:mSBQ[D/KĐdhF&A".c2%I%R :~L^D,\.GDDD$0r\LނJJt.03~qA%ZYY">d?DXYY`6lmJ\eJiz{-c< @Tt l ՆH$}%Q1prt(ZrR^L˲LMaanBIDDDK sj YYZҢd咨XZZBm>@{;[%bJ$:HMML&\.G|B" 0\y=@mS !ɑPv"""A,C"WgDdrdbK H`*Ʀ·}4f. /5 !B_ϐ!+E"Jwƴ 󈈈.f?拂@2CU^`T8: s;HꁑE[Nn7 C~.Qn0r;׏C7t`B"""ʏz'tG30 Qnr:7tC/~~-f|x/eh=fKDDDdXF. 0  0  0  0  0  0  0  0  0  0  0  0  0  0 IQoPT&D.A(2B[T? ^L&L&CBQ eldDD RD< P(kIR%V=%%'@,6D"ζEDDD4He2婈O=,--TuU2X,h+KKlKP#%%͛pvvIDDD$QQ1BI%*d쿵CNJIH)A2/..NHIIArrF(K_tB˗ p)A2?.N{ RYP(2Dg'Zװ-Hlki DJt.AB+A+JeźnH,C&kL&/ѹD,C&B@mݱ2 MT"L>w( :DT"M(6TQfll4=%=d.>EȃPDF>L.+*T(Z54nW"*>~ӡ3k+~O'{#""T* 8T-uw nj*CυV~ݲ DDDڲFQQq ,\ bp9OC"=87&obΏ аiKܼu_LDDDFǮ=c wn\iSPVMؔBR 7]}ѡkO,uOHmRH /lOX'd_Asss̞>KGBB" ^M$!!_{RMkݲV,]GVFDDDBe\v'}lȃPصG]bqōnbk8;Oq.-Wiii ,3t)DDDEbOOz');IX0֬] _~Yˆ>|9?.P?bԉUzc?uU|+7C?PNCGUfaz.H6Eax'*ZBn%a0΋o ,)8<c=ĺa;~m ]^8yиQCW[nbP(}<{>*e))cJ\x۶ ѱ};=qùuN%+9.9K+KL6#۶=E:qAܼv ~_m恵°vQzR<i2tRѷwO 6_Dbbc{`tnzn@ *e \b8;911jUQpssEreԬ)ó@VA022)|+ .^Ќ](88}4-5mܻ'7̞;_WeZ|}/u4 u#JHf֕Dl]c!xt9l=hRFIxy{~re=tR.hkku~Ń;70o ܲgO`شeA5vb1n\> OȐn]I"TxYaЗג5H <}|?zuuR.Q066F]҅lX\`u%$$B,T!p5BDDdhOcTWGԮJXn E׏OH{Pv-T(磊 X@mEŻ a[ LG*kxOTje5N,tφ#""Ku7^#>Ce'JJ 8MJ^\&""IX8\KC$ig'a%hݾ \% ~Ġޢ%1ul4i{wl)Cf%(`_`ofT K3fûRE|IV7FDDDDō;ڇ}p2]CzPrwCHH(شwCظn ]~ DDDDy#5yv,^&"""d%^_"\" |KŐhF.[SI%rd@++KǗGQ++̆MKakSJm>WDDD$Q1-T"%2DEѡ@Iz1mfj s3DEH"""XZT@?%+DE:oP\ƏL&Gx@,T"DDDEjjd2r9`oD%1p%' &6X蠗)j{\L4BbX|@ =$$$B&C&\bllDS66t>N0wvaP}̯H f2?}Yo-T*U3eȘGDDDMv0wv1_Nq (3ITSARDDD$,rBvCe,f ;ur ̼ ·9KDDD۹~h3Q~4<;:@arӹz 8ứӵo׹;lvڭwPѷ:Μ=oRH JE =֘g~=w@叛+ ]  DFFFhۺ%&ojL&ѥSմKWtيHJJVM۵gKQY_>ˣouL6S5o⥨Ӡ 3ou _._ '7a4 B*5ЦcWܻuc`R=l߹5 cמ}Z˩̜ܼ0~$t5j~\_OM[O5t^Vc4he+vmU/m>.7l/;wUߛе'J:5>'7/,[+v}xg_`P^~bxs6(]0c8|8N:UM0Ae덴4jڮ=ЦUʔvf:غqn]sgaɲq%H gS&kQLi=qo]C wիQ3shaOZFcss3@)J?O$z'e:.\@@"B@b+drd2).HA"@"&ͯmOO1O>z/吾UR75N xVc DFޭh6\,xI\w$""񰳵XlDcccCU$ ">>6WAFZBO(@j*p\"HR*.EFO51`daHwO{d$"@~7oХ QQ1nB ?xA4v ez{_FpnK$%Aw=jJ%DMP{BPqg8g}p )))HNN)t[| /q]TʴOU|*JŻ>!F'wS;~+F[.ޙIQ]{[3 30 AE#"h\FO!KԀ O\bVm6z|?[S~>8s 08_@{'hc!@[$>I0 ~zeֺ@Hq Z0&OM(dٺhi&¢Z/_}> hKPIx۰kD,`A$# ѺuˆF%55~o}8kW40"Pp"*JHc FJixJ T'^ (P!Fϱ`}뗄އ׾ p)أq7 M3/PiA B1 )ER >NľKu02êdb%=  4teM@ AQ愀L ;iXƴ_)S*9>" B?J:@+ pBfS:%ۖӝmVaxPAƏ5=_v,@?V)*( B#f L1h^V[7 & dhx2JMnldžJb8M'`IQZdn<./"AJ(xao`̥tڛ]4l$+WSkڵ@i>CB'w())IEEQ-l^Eevo|)8gێs6uߞ q՝<_sc !`A7z^@~!cE?pghтTTy},\4J)^_Ň7k;O`Yӥ{~ӯclG2Lfn6BN^pmD",_pƈdw#Fǟɟ?cKy`#1Iez:;9ǂ'Mdryn 8y=8x0<< IN^\0R>/бko2ݻ%G_ʘ0y:dui?gM=1,y35kבeiιC勭_0n1b4o죪j ֞k5i`YdwjGva\_/ZЏCa\0){I8kL{WЭ_+-w@ܹo#PA𮵾1rQqm\<"~:.>?.s-ǐ9h5k5hs9͛O0cBav'La=y~;ϳ,yq}SL$al_Y&]:w\3k\=j$~*< ~4c<={IMMexg{_g~<_oεӦ啼n鍛~JDXoXbs:0rpL痼WM>SR̝PؿY0u,UꝘs*o6pߊh݌>38v0BKwr0LoFSʺw3'0+Ptꯅ ݎE!>}H_s 'PA& mRyW)**"##BUUрC --# 3~č3~䜯nHFFk-xGnnGN?m`:|`0۶ s08sP-PPX[; 9}Pܱ***h޼9s:н[WX!1eҕl߱疼e&ӣ{7YFj7!R{0꫘5g.>$LVg)//gva@k L|̺^NVY˭w?|V6U/,w 0vZ'(6NqAй8?2]{VDŠ^g>MװVzn?d uec8lڼƍgС= ۧÇ  ??Ͽn)))\5J~.8/Gqq1]z1S&N_>ï_BAA!YY(,,w^i|d3bK˙5FRv#55)dΣ?gKLxEc]5G7k6d߾K^\:qA='ql2tk^|0St؊6kV\0)/?+ RL:ơ=.A+7͘y8%E!tI+s(8\grv?$ DA:XY?c@~lWlxgL0 W_oc:d'ěO>>oA8_?[HMIk.z%VpbGZn܎|?w_bd񹳙yٳ|7z@K^a\2"ڵm[Xs➻老%/,###_,xkY#dI~zg{^)7,\W^[؋/>yr =>xR'7N]pe3lSQfpNdfٲn?{.a˛Ikc<#ۇ ;?[h~;!UTT(H ·еKމ/S}M=N sݜa1?ÊHB!'>3*OKT}G]tSAb&6Yf er֯iTIA*9T\$u $*E ШŊhhʲufi1&oY"6[> X Bu"Hǘ|@}nkܚQ^bBRɣ{lS<4#Y I"li4Z ~}އGh1Zhd*37m;l?X (P!7 /+@(+ ?VvҢ%S Fmyn-F  IFfFk z"23Z~o}[xiN>ۢ4 @) DFL :}<#ZI% E $ՖC6T!ծNožGpٞ.S츓 -d1x(j9764s Ԣ6K IHt[4# =FáGHOoAzz:%;5~.ѧf.||ڨdf7wSڹ 4]U/ ; $3%%9z6SikW`P(DAav"|[Sj>$@uA"` C$D4"aE8rO??EJ/ECşu#"PARѣr{=##0D" D@iѱ,qIv\f4k-!pgcpb(AAhhLG)4<+3I tCa#"*]Th?b8;e]tlo)hg  4**`50,!+P>C0"PJC7p*+C3^%)|6 wY[Z@)+?OMD؉uE 8i)GB\cψU45qs2-g-/-|>>.=z_ -u澇-ˮH>"*.u|@rJ ;w⣏?+;myŗټe+999۟ļ ʩ"""R(Iee"{t3~geԫeY|tBCCQ;>j"˥""" {%33[o3NOxx8͛5-_SREfʩ"""Tnޙ<LMiѶ3w}}=[ν4mE\BccOLCA:t''>KSQAS9 O?s;0nSze{v՗{۷{SӈKhL)s.FMZRQs.dsΣvD%0nS_۶m'pyӶ)Ka\2r._\m;o{n[/m;8|&Khܢx+vz._C=aok>XU_,ν^f_u5,X.= L@mp\ޗ"""e (~-ಳy澻?{u7n̳/3~Qfi2de,Z$͔GoNF K7W*0,4nfMom,;.ZzԮϤn֭#³Obj;ۛ[n^{^xى|xd}zw&MU6^|ulK{.rdffYdqMr1kۖZbp:|L;?qXA L2%˖ګGӡ};VZmon?.^sM'ż$^xUF_>F{~F_1+ @D^~>kՊ`ԥy ޾6k Yv.~qo[DD\6GJB}{ۛv]zj/3Ofs6_߷!!]ܱv9V->un򞷖7մo=re wl-b$sttMF]y g ϳ`&S?ERr#?_x>)|4Lgp>vmk##}\:|(?94׼!1={r+@ǁ甭\~| ҮmkVZCVV7mCv$$c=|W[kF_գ/VLLf͚~!v @WT^B\=zut >3nNXXh~sUV)t ""Us_M`ƍZD$ԫY̞;{}ٴy #)mTfvA &:&`3O;sbvøOKGeCmQ1OMM_*ngSn&bU~Uۺ|~9,Λώ*+r 5jTH~r8*{8y4-^»S>˯sntօ֭ZIFVgdt{ò,'&GShؠ>˖ '^-[Vnܳ$fM˯3ٽg/=Y&mujړjSQ7t~y'޳5kJ*B)ݻ+/'yK.~pYwy%)fMԎunv[hNFBtȦ[8rg G͈oa9Ν:`y%9RΰK._~c\#t񇈈H)+F]| #;;ڵy)x<FJhh(s)S'$YjPh"%!=o9kDV]%z1 I=:{Mڛow[qqyJ1۷ -= -˴o#&&ƉXx}K9,F;,e6ޚ4~}zӲEe#G֤mcBBBr'ݮHic݅Rnݸ֛yŗ^ o٢9?p/ozҩ#g @bFoזkrz  wq+|='r՚Bw2;zu߯Ϟ˺Эq_ Gόcv9w=dNӮm֬ QTvvw^=V-P5m̯3oSy޵ qDDDТy3v30)䜳MDD-[4m%8f|5HWEǽ^8MzU.>ZAg0緟ꮼ|$r#u&<<2eқ.y޵ ԫ[X.|.)] У[| <}1(?_~=kcǔF1DE`kDDD?򕫘jՒX `zӻ{Yc>ayW^>JODD1>Ӡ[F 9bX xO@JJ к*U֫/ZƽAur-> <6Opj< 6m&9%Z}wv3Z(.#lќ5ɡK"ngywC,\px 3˻W""/i;'2ʻ+R yNLp7!""Dcy R,hYDDJ`cU50u$XDDJ`"0t'ףW**""EPtK@)% """"xv[nW_n\\?W ǖxR2V\qZ z$""rl %he|4ލeY4iԈkF c'^֭p:KW{g>y0W~Ri?ؗDDDڴ?W*@^Wf7E.'uED(t1ox/\6tpI7_O惗ضc7AlhN֑1!:F~}iP3gr3Ԏ=xF)ߥJD]|u9ɔϿ OˬMZTc-:ODD* e/s8Oy6.9(+p*]w9Ya KW;/CV Zr۵3ŌY˞1|C=G}1d<Đk͉OҴQCFp3_rqPHi̜?IN90 libCޚ8/JDx8~~UG_ ^x]\g.rT iY?a"22`ÖlںА7i}hþI{0x?6kb8 m ""rT%-[41\r,[7];\;^pX@z?>:qԨ^ݞ?Wiע|\Zs_x7^T$þ""Rh9~D3xP8+(dO )i<a݌Qjb>'ԧƍӰ~]V "&:m[] [Ōs+hߪ%#\ӯ\Vv\u iQZ5& ~53͎/^=bXPyygNv{U"hԠqmXڋfHCDը}ټ};bߦEs^}}r\nmcch0^;뜅'շ: @:&>3!A{^ ,['£sZ<ۤA6m wWxΝjMfת0g4KlDzu~F a,YKbZoBlL4q1ٿFyiFž${^V-y'IN3SWlߵ$v?V˕˕7Ϲ#o??+7qW@"룣j~R}KN=@T^(7!!y,]A hߺ%wp!a|˯'@ɩi<8zto}cwݎe!?g,~z2{^>[NM~fZtjoL-8Y M5GN\weԓtЁek0MȿM@˲v8Gϳ\z+̞}ԉu}۶swsV'@t(V`'XIN.7nؐu5nXr}Ƕiܠl%+;mv{ IVNިbRJ{?+֬eݦlܺ~,LHHmmق [q6F>k֯g-inayv àvy1}#9=A}>yxŊB J$.Yطq1Ϡ~=ٱk/W= kofr*M\ 6n?Ə3U;rݤgbdf{ƽ@us}OIh)a{1̬l2yef̜uYv-O:n]e.rKW杏>alܺ&y uvf6oZ  ^d-ؽ/[۪S [cr\x|;qy#bjïsԨMcFϿpՊO.\3bCYCI[0U#[o3ꆛ>Y b5OJtа^=vڷ}l8͔>ZHzv\>4Wg O*iGT癇p׸'hײ%zjk`,Y#YAԷ/׬emS+:a wjO>j]qY_ 'q =þ @ʦ{t؁UMƉwuλc8tM\@hh>"5=UЦysn{=:p8H;/LF0zPNޭd׫BXDD*r-j\<*JRrnQz9qUWwW$'ompp̫CB &^5) !++TV7q앤mpЛ?%ɢYX|LsDӿW/raV<>2:+""Y*!`Pb7ЕR(""E0`Tz=HiQ R(""E0OW* oP9Y pwꊜPCN)%/&gahPʏaX8B􇈈| ªq=G*n],""J7.BH3v`e@)y8 ayGuᇈ0!a dEDDD*@JFPDDDQdEDDD*@JFPDDDQdEDDD*@JFPDDDQdBJQ48˕c=AXXaaԬa'ݦr# f!t:Kr""""!"7́P-2,xa-&EDDD$TJj'KÇ'"""Rj׎#33#G2O iv """"v|)X։-q5kDS""""R Qg *.+OGT\q ˡg""RREP|+V'ʯC""RbEHOLh?~ظ֫/u5a֌jRRS5{=xhվ u5皱7xxwT <s]rӿ~|ک=}\nLMz_MoAjjOG|ΖmwЩc{^~6nӿ?Y&lڴWxMЦu!!nBCB5r8qqtЎL,G|kF3iެ)S~D9,Z6zOzȪUy /]3w?+bj5mS'˯ԏ>aSO0oz ,hղ1CH>ӺUEPD 81їb{cw.];w ZƲ,&<}9DEE`嫉BwL|vIlXrss1p@ mkR2.MTWX-!7qONF9t0w3gƲ,-zÎ;HlԨ]F 3w{CZDIc;G׬k'PjU.txcOvv6}}}[L:"C"RѮm{*ӿeѼiSj}\IOOO?w <<ܮݾcG׎#44uj3緟;geܱ??% n;e*3~䛯> ;QV [}#ŵ'$Р7mٺծ߼aCoNNI7!,,L|d\C\l,~ k3v̙;_~*"."EQHKKc_υ_P\ 49Ɇټe+999гGwO`5pԫ[?-w:\1Rޝ2yS{,m3 44^rq1kۖ#INN)+;]b -:^ԭSMpMVa=aaٻs V->sUо-Ve+hؠS>P.9^paprz~G>!ه|ErC.bEaf&<<ݺt.pxh5j܃q9rڶ޵ _OsQeXX=ΝyWx>|gжN'5kO?cSϒى9{7wǭt֕~Ipƀǵ"""죩tҙ~i|GS{?_Ns|TjԨ䳏2쒋Yz ~%]tfвEsjӾAgCG '/Xj5*nB'"rmd$6*俽ܙ?ӡ}H: C"RpDֳdrz<{e)ThmZ?fԊGbFywMDKEDDDN4E NZ')}nĢ\0r %).˾#*FnnnI4%""""Ő[fT (DDDDgP3 ["0 bcc؟R͉QOJ&. ľ Zd$U#؟\RMH>JddnDnȑLSREhX(aa8c(""""\.H .I?(`Y\\.o?EaaEDDD*BCZPgy/<.\bŸLo3u&uL9KNuIJaLʪWKCW}W~$C jR=I6 pxq.8f4\.Upv_ka?~Ǧ n7函:5UV**x0ej?5  >CXhYލiZgeBZߥq(ÝS˲;zի4+J?Tz՗i}EK>*6gE t@? A?&i[>'u賦jj%?mխ:?' h``B``gg]9Y7=f*\vUVY{ˤ|euU;o{H(ɛw17gz_ؼb,KeU.rE*eSn6gޑ@o40 S"eM3/Z᧏p )Ѳ, , zի+J?Tz՗KeRaupi`8xQ@3 x_\E^TSM5TSM5մaU\<E~e0j^3S*[CeU^.{mNax_{|8eVޭ^LOw1-5!""""lĭMp:-(`H C%B ~ }e(0|䛯zի+J?T_꯾5cC dnhDUSS[*DU/՗^eZ8|2UeaX;|mkxO>Be갧VU(P}ūʂٹ6 s|sIhRp}+jT_z _63B;z}0[AӴ04*UV'Yhѩ'dE.߾W4g ˟&gcwamV?9ݰe5Ј۳-ek7w4!-'6VAe eo;6)>ig{ߖhܺ>+xC)[V^&4 gfÀG V!E;,˷Q,ӷmUV|yЈF-Tf}^^Fބ\k'0!!t 3 3 w4A<{ gQw?Xv{mkh ˺e|.20s=9%s.mbV/c`,?L݅iBՏ\Qry-g)fp[ MUVY+_ZVyy_~,7ށ3{qW^{dV*-x?Vi󶬼h︷ST[lҮl^NDU'OQ dqi!;lZ?+s8z cX(]jXsz߫\y̲3[Q׵O ~LTSM+ttGP44O}T#Tg;ٰ m{Fxb:a)bwaNeT~R{rL^sm~T פ*G2}XGt?#p2]/#m{iؼe fMۃ|EVuHlU0I=}/{d8zW 0] tP3ݾ"c`8,0={f}hyfXX>6-aEFv]9q:;bXXdtca}ki/@ rA#X` iM"^/zēkQ? bQ3..vniF*\_/z, Qh/uCVak2ϲ, x6TU_aXnLve_ jѢS?뽹͂lMN rFdgz=,J߲9kD{9VzǢF-27?Ֆ@p 5CxLjx;~X *& ˲X>7fjЬ] r^w'geq$#b-{Y #$ngۺ,y?קVp6~5?u[ܮ8Owlv?[u1xuB+jT_&A3ż*j @UR_nyi}zO|BVPzn=nZw?X(ͪqu9kTZr /XE -qN~;7fčt8> :W}_/z˲ߪXXߍ`2|WP.|iּZWM zZrxRzG"dez쀂 cE!7Upd՞o[wCC\ߘYeZ,Bb ^uεꅩޒwW6@R{|nG%DsP< Nbߎ,4ˆsZx+`Yޑŕ:DDžr~*9$wt +iե&onʆ9ɿ7:Hbj3ْI\jׯBygiZlXֿԻga3nιcG;: o8O߹>+rCr+ X^*r9u8i=n֯8}CDTurq;Iڝůt ?Y- ~hէuhҒrs->~a#lDQԪ$j4!=Ϭ)-vg:˴~F ~aa4ZvIQqӸuu4d#rlN:87>V{o}>}CY5?&mkQ0u=.:DѪkMe4fOátW/ۊt'y ._m׈ KXx?~د|-W~\~`\=cz;n >5RYeˣ\QQeðxpR7 wYbWqrHs}sw2{?Dpz(|ڸu5W,WrU>%$⽀/$Na`8y?G4("(1;m4wzի+J?JwGTw:4nSp ~Wi>2R\OJ_/E j0j201 _OUz՗~}EGI\ibx?oNP:V!,u?~OV ?w 9O7Ph}~~KeVOiFV >.0C0x{ÇϬ%;3IUV**E9lGH(!`g(8ti`82|Y0>1XǷ]Lo+tצ>H_*r+J?TVYeU.rh){Οca/0s<}mv[,7#"""":';bx 8F^ E_b@x#H| ÚIn8ijjzӐP-e2.(`F#e;?hq[xnw4ㆥ=RtSgH! 1p8,{00?;X֋ddvcYojj%=]5uzzg BG!o+J|zwDН lſf}uEDDDU]ktZiW/u0ر? k,7 KM MӸX+Qr]&\Mj?1kjjՉ^:!;5쫀m_ 8jY#,<(wBrcyWcymYa2ovCDDD_;6˾Noߟw G1 .k}px:, ˙P/O1 4 ;DZXv#TJw 07y}G |mx/.p%O_gxGcSL_tX`9]l, eB{FEDDD*@$i| k;=/:ze7p.h˘ȟaS hj^3}|ttghwΟO m04 cF#; x,@䌀eV@; ?qqw>0`RaeZ;SaGH : L("""Vo_;;h9_c{o3~apޫ{}!в_$b0?G(HeSH̻b7;axl>ð.bQ@=3}^n>q],"""QpyAw|0rt.a?(9G ?7J׿u˲/(CHSX8 İʻ($^y# p< A/gC!DDD+pוVp~UTCr@쯰AOAPDDD*ЇoE"OeA;/ wCi[ IDAT[PT(2  @84s' ۇrAW e(J%q }>Ϟ["(/MZQQs[jx=LNЯ@Frax2LjՊa$~=ccѼ߃ֽrr~~%oM]<asAp턄`&iK2p@>8!޳ƉTZa#Yp.5jTK/g׮D׬I|\>2áQS9a%>wxV.YWlL1.jmlz@BBI$P :;6ŀFn-jwc̽vvyڙ{ju}(N%KSq~k7ud<71|8dA$|{Z ^l9; ꪕ8/B!喿f8VW,pנj%~K8=o؈ٳfỵ@]}=Cs֭[ngnާXj).s8BƏ{'-ܔC!ࠁ^{` ŗ^kw~`Ab]v1x qZ[[QS[;mllJ;l>PE o/A~~TÞ{NPY >+@KK+f\sMT]Xn= Ғɹ ķٳf(ecB!du8g,sxWk/zY|<~uu8鴳0hX+kؾ 'uCCC.Qg-Nb|pw;"++ sƎ‹I{|kyLB! 7.,V-?\7zSLƃ߃[o1 ?Ww:vN(..\h]g:e2h\oݎ_}rssڊꪕsc͚m>(/+CG͛ACDnn.**n(oB!t؈?-5k1|0\K" k1( w(+{t5=j$~?rqYV(/+[9GDiI cf 1b0\p96U !BH0ho8ݓdR.BIi͜SIB!$}PL] !B@|=BLʅB!0x^[7N@ !G~.x<] !Bz |H :7},!Bo({h4p8h4 EQ(^~e_B!PB!5hB!1( !BB!} @B!> !BHB!AH!Ǡ$Bcn?قB!x\#BqJV&ՉEQl޼PB"Ѩ[B!)|^/ x˩tYjڊ&!# %;!BH$=BGGM(/+E^^n|L-غu+O&$!BP]]ܼ\'!Z%EAKk+(!BRJeeږXFhhhB%!BHʩW(H:ځ6oقB'!BJJymVE`7V0@!BEB*f BvCB!dBvJI/Qhz!BI#>h4= !B$B!d)Ye7R B!"Mf2Ԅ|ꚚNB!d%#`SS3< =1v NB!d##ॗ ~O=?_ } ׬ESK)5%BHztMMxa:#]썪u2dcBhlj¶mߏ:!BH&pzqň1p@,[U( 6U  _>/0,B#FXx &1j6l܄G:^8F4EaA>@p$FCQ`[{;=z%`!lT2457P Mu(h4hmmC8FvvUz܄B!]|8 qS5'vyx@YYA465 Ѩ1?ܼxQ\\cz=hhlJֶee(C$}>CnnNm~*QQ^[c&BQn:q&N> vh4ux\e?硩y3֭CMm:::B(..C @^nc]0@vv~~?r";+ @m[( J ,!#77^Hc&BKP\\MMe#sxŗqy;O<޵< PXX74a 4ᘘWYYA1،P( ( `P|K,B!$d좤{L}sDpſAk[;L (**@uu-")_YYM}}#>/ǃfK>HPB!$#((ömX~+(ZZZ G /74>hhDPp ;d栱 (*,ATQt ODm+*5uCnNn!BU2^Ygb4C!l޲p>YY(/.WQ&TW""YYAU6 ;; @ v ~hllƆs\Cݿk,>:B' Y^׃V7laCR$!Bѳfm Ǔ` #VB!AH!Ǡ$BcPB!1\>>B!$fLʹ"!B{B!AG}]@ ,]B!z:::8+0??n"B!hljF~~-)--FuM[!BZ;oK(tvVrsQ]S8B!bLuM-rs%|`᳀=Opjm׬BIqA|>'B!yB:::Ԍa[3ogYy-m@GhB!ϋ@ ` \>s`]n`; 'a5$B!zd%]Ӗ`[v B!9~6FRB!*,Qf !BdHZ@m)XQ_B!b 37PƌK,B!~i)kR/ $BqRݕ+ !BR@" hB!wIVc&&B!ᶩh4: (8B!^A"m? ،V74`>!!B H::hllByy)ܲ[nC~n$B!*k|"V2--h#BI)hkkCkkh4FTRB!~wܼŅn"B!())BSfG}]P!BB!G}]!A7BB! dzPFQB!$|>Zvm0!BPB!1( !;z "!%&mXҒNB:N9E / {U =ᦿbTiL̉;$ ~U BQ |=!j( !Ǟ+9:! @BHxR<W^CKKkB?{?#fa5 K/È1;a]q?4?,!G`ypE0{1aW` 8 0~)4c&+|my]e+=GOqǬ/})2CFf958 1j]t} ! \BqzK>o7.Bo⼳ϴ5OY3Ë/^zz`ڟq)g@QYxbG]wث׬Q#sq)g`QXPͷø1c0jH7 ԓN@nny)`aλ㒋#? ϸq!++ 'znN㎝MF}? 3{><񾹹+!BHh /ŗ_cO΍ >P(8 7p-`ҟ;"i>+p/T[? o.?vNͼO?@vvv?YQ\w-:Gũ'oMXan7_y^O;9&_{Ml҂& @Be( !9y(--91^}M455c]&bsf3_~5+V¨;*aC16mFGG1\? 7miljE 8^Ol?ǎęO!q8SCߺmX?ylɓ0f(,[3=NMո?ڊC!F$d,O} GG?RbxÏ O`iSb~_1{ ,[<ve"<if|<"veg<ԣ(,,w`o⁇h똃 }Q=(,[w?ebO(R fmF>7BTLqѣv@A%#ҳPB\緿S bB!1\>Hļ!!Bqp8ϙsEABn"B!B#p#!B@GGG B466B!XE"=KQ]SF8B!b@uM-*,^k򐗛ZBB! 5E^^< DMkkjQR\@0`>aD!p8P(465,)@(hjjF(ԁP(H4B!}ϋ`0`EE˾jR" !BH'B!1( !BB!} @B!> !BHB!AH!Ǡ$BcPB!1( !BN@Q$:B!mx")!BiTÔ @3GQH!H5[buvp0"(:"DB!"^~?>/|>/ز.B!WԘV)m!tP< ~/|~/~^y҆dq_%]g'PT?)>|rx:7i%a[3v ]y)<P 8E 1:GQTqդ!m:\h>h[O(T$]Ix?-KUS~Uz<J$n&j;#6#nnǍuwD"uF#EGNvPP}Qh-m}/rcB!>Cχn ؼM[Q דm`/UP״9yAQҗBI %E(*G]fDE쒔9((D ˁyiN2}a)B!V b~hh܂h49XmniCaI|N2dȅs{ U{o|O !DMyi61+Vn@׵'ж/ԝ\x 2H!D0@vi,w oGGpyY]'.FgMbB!SR\H630^/0k Ia0X6>Ei~ (@"lx=^D"8"D9Y))no߶.t{tT_bH!}`p$mtep8?4 m'p'2~N۫w7H! kJVqwvOLsla{>qr, B10%`UǻH8:ķ -+>CgP$B!$| ūWFRt8$NL?'_ R1Mm~fȵs^{{!bW(8:'|DѹΥE,HLiύ"}, !oG9έ>?'_>PZh%"xF rw:e:c&{< !$It>oI;VulirFekA'IřpI,p,?,=!)h HYqS ' @2ͭp) ɶI|d';=Z/BXIeK 0?-j$+SRqvۭ(jYьM!9Qmު趫% }͐EJh>67ѱ!?vldH!aa.Al+_waeXzaۑ;5NjUjPV~WKϕ/Ң.ˇUW^)Sa0{pbڴ1x858ZOcΜ0`(6iov۝MM(+aOb]t)ʆ/Lv > /hke[DeewcڎMœzA7һsi1rj.!%`ˎ_o [O>3}|tm?XtPXPVᦛnŨQ;YG%]qŵlB!|B\?㕗m%`DttX]p ɜ>fO2!x SO;p>.h|TU-9 úuK1gNL .YzMXz~Z |`w6^V7KQ4/%(!sElO;ȝ@==8Voܘ1i:ݩTZmdpu e!1+Gj [d (oKPNWJj|d6ޟx]dIT-I\}\ #.].^W_ :sz82~VFke#۸ŊMd|$0&)pYx@NΧ8!$,\PXX"DQqؼyK'2̸ ҪGx"t_fy $V>qDBqOIQ Xex&49,ta7oU4-lsҌOo'_"cw⇙9-ǡfN!d8ˮdSRQzFy t"nٝ"'ys& ?^bC(Z#Lq&ù7[BY\=,蹴? [Dz#qAuNVˤXiӹD:U+MspC "BE ݴ?9A/,ґ; Aܺ^8oVn<(.78j q|&=!̦ sXsYnԼk< pkxzsɃ&!/wW~ :n,x+>CIaW*UZZiH aBItP V>ttrx1\Ҿc{&L{ *:>x8-! yL |<s=f>z :#9?w.5Gf sN8&VNʆcø+sR[!ןrA0B>Y6]Jm&b7R;Bĸ'=d_9g<V-z8`~ssNy,GBY'{fގP$K^ T8ƺ8qcא=1nٻ x}[ [6bab -Y3Ny,"!DQ7#:`qh 8d(3v9 6>/-}<}&4u'o\F(d['**ݔ3NKi/ܩ6ýsm.7%s$@$nc@A%ڈH4GC㤝ۼWs 0|_HO0-= ~>p۰3ҜR|2J|8Uhڄ?at($1tdۀ1y$\8jgAp}qlh3v~"l{?mvVa4/1$!9fƖ}${5oBdm` o/-uXӴ6`點z5tO(Pq-n;xuB}cv9P] x}[gz*2q-qw^P+WgƄx~K +rI<}&߷.}[*DqkG[G=N;gz뗄-EY˨򯡝h+. %qn!|f/!d= MK|^%r9, _2\߱ǐ'g=8z v◐b3qϊGwY¨zr4czx<,[~y\4hlBMk-&VN܏qc~ѻ5*(L<7|5g &$KD`mT:'괄i=O:J( C\/ѿ@ 'z:OE侎2UNHY?qSA9U-B 6Ԡ8λt}iՒ^_vE'~CĐn k Yx<byOd(T9_]1XV/E{1Tu@I?ѝHyB2,&%Nl7şgsq`Ülo,8} `ߎD_^Z붬C>׏{f܎qEDt8mWO&7GamLuVğmT &*i/'_Cw,n>VILҗC&-!M,aEO-L\? =O;tޟ&VWL+_8^?I}\/&WPT?I l]Z*Ո,{n_V-R/~UugT SQF Ը:1V7r%tK!'3(|zsCF0ŅMş:_@RIN8/O78lmQ'05-H˿v$Wl'@!ב^PrA"{ ?cls&8K3[PKF[Ow-Alu^$$[u)g縹SL!$o#}@ *aʎ'\7[,bv7V;^E3ȑMb͊RnYQgVM34wf渐ފ^9cޭ|v:[J>զd_Wm֝LC0;1a-#mOmygc[:$:YGAE!W[8Ŏk#gw"ci],?l?_1fINV QF?d1 /0Mt B3W [1!X uӎg6u:ɋ?aYZaYf ?vg:r<-oA"Jb&Ҹy0,.!d; 3VkJ۾ظ:~\Ķe_UԜ,H)y4m}fmwCIH_oSfg͏edB1'%`U1m{[{)#.?mٜX?ɐ;XQvѼ?].6nӈ?])p41w$9,4M+;K:e&)4 !W}Q,j&Ϭ@{OpH9_Dm_hΝ%u`mGb{ˊPG׃jE >7Tԋ8 *BI,`-ƢOBɣG>{ύEүNIJEj٪8Vq@Q]aܿV#%vӛ}DB4z|#t%jfşE.J6xч(Ϯ2bWx"'QHCt(Ƥ,5YՒn"S F @}w,?@+VM]?9^Ǭ3pgC[ F2$ZߘJ/qM/0NHKyJJ 6[7+z홌 L2;H[ IDATBX~\+J߮v:GL#ğmf&_MDrɴ\Ӗm9304߁jE5{Bz1=r[{$|넕=F0d_%?OFm%tb.?,hLić\Z;lӍ#wqotΜ/E[nK OH50*9Cq)(bٶ\t ν楑2_ɖe:KJlS rW*b 8MߎD_Mڥ%xڌQ\?iW;Vm>; ?ebvp3Hcu\iokҫFc=@̈ E!a1ror! diJ)>iHܑs+ˎ'p۬No,G; ωi_ί`w˔{!Ĉ zt/$ #5"h/n\7.V2Dٺxdp,¦$u$;,χ[8]տN䌩!F$lg4H{ׂqŭ_r%_ ԋ?}z_u.үj,U{Yݣ 2+s̐f?dN1 ̒tWEo+B{\t1nԳoO_`Ԉq~2j9jVrLGQ\ϞpM%JF'܍@~K~:z[B.*U꘩*Z]P*ܝG HqY7.++ƕ0jo??>_lzϞ0zPÒo`/1rCټ?/ɅFme)tķ VDcDǍ52K!$)2zAnN6< pq_o| ;мϽ.[H$Q; qsEEy ݄ 5hhlFw bيhjڂ+qy#7'WTdžM:0h@?zQ2dB$C;⫯;+y8c1h@?l%)+~u[/ƹ0J~?m][t)7G0_,t0d~ R4YX&l/x{:/ٸPϏGcʟFm}~uɸ7gAQ;}p$'瞀<1v8W]~Xgz!YA:\uOD0s/*QWׄÇr%Fxic)ĭ _DFG_ .q;8t`=Zi׭ebGfޝv]qQZ۶Pac5V^cfNǐ1N~Yq熆fAW94` oj]5rr N@SQ\N]>sǴS>DMx?afW: t酲}d{jgt!oE }*Ÿ.^񠬤Pߌb@}c3EAIiF(}yٸ_⵷>W_ XK\훜scчhޟv0˧nέl(7יrX>f?$Aj;ɎO!} q`KKk۟`V<@ O8ϿˊEeY&[۶(?6m5c[Ӌa cOUXjO<0I3Z-=>#hH G'A;vX$lOd*/&\vm\5  _s<}qFa`"wdn$O+v>U!!@'ԱuL3fE;Wulc JğfL#wLQsNJ?h&n(_Y7!$' YU:߮ZPQYho` &c<KG6MG1~ sCE_ }tsmi@,45}D_9P"Z!_P?nq?vR}U2ާ\T@ li &OT^:+nnKMWNA "P|ta!,y3/s4 ?ğJuLB\tޟү-Ҝ.sOZA#+!7?VYژ<)mBߑw'8uc.ACB8cׯ;\2Pgz!Wqk}2Se8Ug Oڰi')$3WB3\(eA$@ꘖݾXcU{O֦K'-K ^sP ]Q_QWDL̈ϳOPҢ'KgӰ2UH%L VĞbbuP ɝӌXş8EOGǣ9VqHw#KqCEgD>O1ytRmT!I!NrdDۢ/IL"Hp?|ΗVşz*ğ:?SdKR ,%#Q3 3B/[b<$ҝї9~>\?p2!v'A#@$dۻJw;sD pKi!%BNCB2Lkus|9hxI6'߅>,;|E]s~,tҙV˿f'`9y'9=BH##oR"O?L~2'sPIV!`2Onq&T2 ?~ MO2?܆2BG/sVt)T]b+Pm9_)Sğ.0˳g*IvD%/Ѩ~=>"9UNNjڅVԪsO=1%8v#;7N"ئg^ctg#O!O]%ߞ޲#o !d{E vƃj.D3vFYp_~wğ?E=!D@ILp~ C~S %!*%GF)GGB!#ZF~4*b1sTCEHI]ΗR{H=)dFxMw{&ڀn!oO' 7Xe?Į]FaOÐ$>$?@u B=em?v#/g.榎~xOcGExŚNI v΂:xğQ:w!}F{0RG^WY21Y?O&dq{iݲ[_,o{꾵l7-g~ۮrXu6BgzԛsnZUK[q&mF]!#s?tpԸ+ZżS,U{cm۶F1ar KDնto {q>wD1la պػU1;pо5m"H@+:W.nſoZU,;W?1;s0 )AXUCye> hHBQcO3:BQyP9r}VDTO|q8B @-˄P6tjCFDբXu>}kK?k?na1q8R[%Pvv`)Yz#h}B'%0"5es}T=Oğ]=adK]{q΋']c: M+#'o3Q_LB}tBGQ\g_)jwqO~:]Zk"cYϫbeUW9^t`_׀7ބ=bΙЁמ؈g)z +|YC() cُ-xXK՘yk1f|; .Ac]</> `>]5q#Xp-z^֊S~9.aby04ԄpӥKW5L@0^ybV,lA=rq 1bLL9PlZ ݼ%A锭Yފۀ ?b8߅zY?U -+ZqQ&4ԅP\}Kbq ֯ EϪxW`Mq9CPT+[pƯ$o9Mi PR=7@iEW>&FljA^o< ᄡ S+E6׶rP69cw;[&s sk'ףjU"Q;O)I E$ݗghn _?PxxM2ly+6VmC0ˋ)>K`[[;Z/cBHf@?csԎ`Ȩ z{Vosq (-biҊ fS/FP{s-ZxMX2CG 67Q_B4}A`ctyܿ)*vc;qfYV,l3*0ib4wͧm#D+!CVYi8b-mbL?Fj_4-Kvۻm-rwz|N=v۫(mk0Fa - v߯[x<^ o=WpX^1r|>"#;`0r|9:e% 6Qdak}CvJvE\]w_ܸP']0>r[ӆgUPP-Ժ9pXpرobmQG0'__(^[[# }BQwLٯ یZN]a֩qJ~PƪmXS؎&9C.}ی:~c2AV Ѯ܏?wh|`i7BdR:ЍI3N폱`m+Ѳ9`{L/On}h)xv/QP>MZ;c||YVԆ;x'&wz;{Tb_ײZv]Zw]}խ]lTD~/k͝ɔ3I2<_>&sIn>9'Ơ+ͺްـx=s+ʏv 0}'zƮ.`78`OY &ÁQ]сR0rrKZ6>׽*P]@"_v1/D[ m݈ʾ9q8>YxmiM-8}^5b1! Gnm̍-Y8CQ,MoO+GUE)fU5!3'V߮f'b9 ȾTs%av p |uN8bBY?<ꟈ#[Qzȉ8ې|\M_+ زm-.;wl)Xvv~W|q6XR2lq|߄]k[&=)Hq浵hƄUw7ލCZF IޏuWaLAS1nz& N=ߝMas=oGsc̕"h9@&\I)*rչvI)vT߉/CW'm㻵?4 R "!?lG[ Cǥ"-!sFQIϡŅeoǾ=R&4OMU:篾-2scJbݙ?26;ӎ&2*܂8֖.,{8p> t+?@5HL,12aU mƮmف32|q ?5 TW9w6ϭHLcP,u߯v?B\xuZ]xط 3r}e4+ s)]‡a@f/fr. #p 33ǰkkFwg'D\ <|ԠՅDGuNhc|\إ-.E75x{12܋=s\c{RZAXlXnBw%=Owx_7^l8νEw IˌArV^w 8Ռ?ho݋?NKyp&^DŽY}1bbRgՁ ?ln!ɓip.N.;"oWL\"{ŻغNvI6))@tynk=. =eppO3Ieec - `Z^Z8LEA e0l|l6 =}$̤PnGvd幟odzK$? au vooczTwn]-&-]d_ mFC'8MXHJq`4ߊ_&rEmV.:8yq*ubOό ~~e~)i1;8tvhu&THE$ADO jA43##CR-M]XRҳbpAA8b=;MπΡ׀Dġx38]8k~7t9=ǚNlmbgbZ91 mm.#R|S}SqZ IDAT]LJugiƲ7P׉AYJ&W6}Y ?fL2cbJӂ2CHΡIIX]*9-{HBQnODFN 6~Y DO"#;iY1hatxAG|M nUXzSx_hZFVVNG -3W,/mǗUm1llX++~XZ\8vWanXC}jFRƊZGb߮&Q_V_/ErkLK˱em-\]<2c¼k1l[Yڏ#RwٺΗ "Z"ͻ?wf |gMؽ <88'qv|y-jpDILu`˚zߊcS0"2cZRCmrz&ft;2sb毼ҰoGltԯsrk@"vmiĆյ<¿O#z LD|p=Q??mo΍{># 8 Iva<\t}xPyk?Fűv킷'>sM!N>'.5Va͞yRԅנ։~S0~FvomDna/K*̨N89<w9T\~\NuooXvg; N qOc0w6pý}1fZ:Ju?7RQ)(/mǷ_`f [x㐐lÖ٢r\<]W>PX{51>'$a|CFʿI1شG`4\> ;5A_.~r$րWÜy!fɇWU!1ɎKn(LѓN'S?f嫔":Cko=~{zq/9~]{:PԠǟ~m-.تv_D6kHZz7OLdWp\!񋥕X~9œk 1{*R)(͎\bUy|WVP1h&7CF NPDEۋ{[~'x z~λPš-E嗾 hJd'$Ҥ?Xs GkB';Mm3 qص . * x/y xs H\ 9Qa5~ZO5$N5mco nŁ=-3%Cw"X. GxߥRU}w}]_(j=% XeCh8p*Y?o<.|oG}}$aג_?.O,!1g/Kgh5V y B "ҘWΓ/~ԋ5L6"ВT *m#"|Uv+xZVIQ2BV4O D&~YjiB.r(H!<h@)u |Ѹ_vU2} 0fwW7GIbTR?c:}[he|Xş3\z0!Iau:>D?u.71 7Sl>#^{ @[If?y' nՂiޟZZlWy0_X'81OTjs4; EUQ"ᧁ+#sOS<&q. ى ]U0SilT2X#Z@|րs7P5bpUrʽ6^ê/ %S.U lcJDS?UI)]IORMO-g=/_xV /!Ia}B'u#ZLۤrGs?"}Y'ʽz~,O&. Nd5%^{{o\LJ55'f2J}te?%(LlVMLʉ>wv_իX{W+*U/*LrO5KS^*m= _WAkaٲF-MCe KXK˾k >ݾ? S#y ? &k/E#W ooP$@oc~3d+6}.ZgsX.'j#8dF{bm]?A)ɎNM1~ׯ5`ٳZ?r廰C{)> k ?[yWST>AăyzWZZOi`?aKm=OTeDoپʹkG~º⇮bywO14?=L[Ϙ bV _G5xSL~/ʆCբ؜/ADt`"EZГEMM~CY=Y?]q?ğRv /(6 a'<_6bmCCd$4\xC!GeЖ=`|}>,DU)qo <B$ ğ֊ߠ}n/&d_og[V D&@,kmU &'+_{~6| GR+ Tۅ+\ۗղš*%]%DY>/El%/NpHUر q% OϢ5=үl ]ij$ ,C6fdB@wW0dA(e.ؑc] ͇CɈ;=⏇E qF*=G0[_Xž3lO/2%AJ N mFB)eTDY?eaVY?a|ş_P?akzx)ƫه? _ADJN3 ݍ>qcծVm6~4A(NIj'14 jgs%\7)A,jÄ?'Ҡe}˜=42?/ެrUR?LW-hZǛ.4Qkbz#P B!]4xȊ;!>ʥz0/j["qFOO!`13R U ʠADS A>a>>wv‡Zsvei%"_~U;7ƁkFp-]AqCݷxs'ivx+*qӯƁG#Е-y _%J|H%1|ahbEcM?-_TO+je:lPcA?=/hLbOy0غGs'|m) {]ŬD_-ֆx5u !DvF_8K /DdA*]X*AԈf@k^#'RJ%RSnqE\llåQz7y(c|gXq<}򐒜GwKKqTVБX%Hx v  %9 M-;3 # BbB M-p8ظfi|QCÒߠ` e bo}hs^x,G#1!]]._&j`ܸ"X/ S&E@P_㖑&Sم6,YXp(XuqRS MZ+ )+# ǡ6 3-ӧc֝;j(6 Gm]**kۇKClL\U^bJuby/!*(G!|O,ERBg_c}&IFX;_K.XGʎxE5 r20t{aFfFF .CRb 裙$ e1ذiQ[׀C~uLJJ8\:w!Y!+!#kʨ1тI0%M۾( A3!Z⑚zD͟w&9o1{Y[Z+}m$.rVy/cp"~iAN't=B{oF~~Fhd0gNJ=pz%(kc0 c'qPAx# Vk(EAP."R  H,Q =_Oi(1$L ?EY?I+}=}B*Jz1UKADP ZL'>o_li=O\qSl%__; 2z]pOD\3('VcA~"0Poy1LHB3R5>/KyXPBb|y?}OV)@A'ds` cﻇyfVre %Ҭ!dAcZPWϗľtf7?>Z>2Ey}pݿsc̸i8x4zo}b;`8Ο;M8l_~. n/o5͘^}Oœ.GKK 'ĨS}8ðQu7`Q/o R2 ̳yVu\!ᅿg`'ae{~>7p|q֖V{лP >I <K>\k1ei-쇱ŗ^}ߋqf2?fRETğl6lj?k#PA? `qJ73/(+->v P@kkzel۲s&3sUW曍xϼO\ٳFs| |f--Y&9@1yDlٸV IDAT3#J\8R1TwxAccn͝о]X >L;y|fY<6qHIIFLL >\qo~4̜9 cF†o7#))[nCk{+A˞9xp 0}7ް@p ЫW ͽͻ/f֏ JN4H9Q^UBA]dC=K?  S9(..¨ԓO6lyl] GtO>TPv9 h{mHpʎCee3RRReGK1t\|Uy٘^1vt :N;N= 憍;.ZJq=l|f=QZ &MDSS3Gbbq,"=Z*7GJOZc~Y?]oS=|]"+{a.ÊJ  4&M|+W㧽0p@L8VJ2IH^lnnʎaݺ 8prÁ$ܵeǎxy.k#ÇPQY6PYUZJ"33v]u 8m6O>l6̝s>X=R_|Et>\}^/-Œc⥸vU^#Y?Oc:GfޟuJ,? \*>+`hjj{gƍ7߆E 3,{J+z]~%6m2Ϳ]q-:8qo-|gƲ.z7o C 'o/`>K91}8|( |>z L6_z5ݖOZrynٺ ӻjO`6$QԷ޹~ Y,,;do!4S " xְm#^gTyihh?݇DL>?l6/FcGԑ3ZUğ+~wNW֩ # B0'tf 85\pfP*jf{^ SkmyLٖi mJA h1S >1T2COo1,ϠcئǴ~.OƙA2DKA u*!$ZpiW`(\?_s#%_nşbw ?+~)G6L\a|NMaO-9e'L\?K-+DLa6 K = @.S4E -Z>e[Ϩ eOGY-{uB" X]Z a9A$-F~~ffJK.=Qٳ T%8NKL{9}f>%WEa.JXU;3bK*AXO=7OISs1̩Rt1 Sa~$#$BןBwlP "|@XCt3ӗ:v+{]BSUTOeT?7L/A0Oj|~}G= 2c#ٕyWpL^!}XzU{ህ z,u /!X `R0!E^mw[/o+|="2O٥Q ?&?+R ŠXRBn@hp>eiVf@'\?Qt-!XiA!7m)sЧKɖu!'V[A#Pa@E!G2$[MEiOmDş hzbJJ? a7mЌh[> 6w"I;O=-ί3QhADt`4.œ=Y>@So4mnSWWIY?Cqc8:2Ԗ2XiAyL,[^6Ǥ9 糣ϵȒQ't356@ێşIAD@3БtQ|FP3C ATlfgO/h!V ? k5Pu?B+B!Yp ?i_i`i!}:J1cGAX @Y;Fh)YϽp7dǒOPOͽ =S4pha#[lp,j~s,$vB^/bK[d'gćQhADtbP|CV46w0`38gV0O_`(~LҔğ.ײIAXnښU=!Y>|deh^W|?[$\Ӽ? h%Q-k> O8(]~\ݮOfhAD4ctJϹő&؍{?s{^QQ ~RxQf>ko]>x}6sfiShf+(DEPhѼ? ǼE F? M >bfpo"̜:qq8 2cFr/ 0%_ ?FfXѼ? p+{埣Ng' pewI!xǢcݷގܸb,xvڇή.pCp8ϳ T Mxo 1+G+†M;Ԃ\;t ʯ~6 :{Fm} r1ehl=jڎ/:ǏG0c8TTԠ8md44cϾCoDvHX+=4a^tvuaNj>tuf{͛1bm^l3z ZJ|\,{*rr}q-߽+ de) yXɗx_+<n~HOMe ?d5n؊Xq+xPT kı#q硾w?4Rp덗!)! > @p:}wa/qm pE碱w?4ݲΘ:pc__1-|c`KbD-{6 A,; pQR"3=YqR.*EL XvpX \e+#3пO 2ѿo `7[pIq@de`9!## :0_ iHLGB$%$"ٷ q㹰m2/ -5)Ihlju'.qPuoDyzy~Ri K$X]#IDpV WT`Oph9܂;7_{ >|-]S'%8e䥦.zDKKy|4Ջo&D oQQ2~2& { yW+uFďşl #, ܠ¥HJH_ v;X BA}XzpMm=~3.w6.{xw9зPYUhlj{~j8v6q2`Qشm'?G v{pm+ۿ@G]-sOn EW /`o((=~; cJPdj/ `N'P{VSߌEiǧ_e^7C̄:gsn̟L>HAD*, ৔F %'4]_Y*gЧYl l> 3;XG1DADO'*txbzrM"Y>5˼L46ݠBScY?FXlׇADtc)(793 YH>=e^f2~26,Shړşf G}1DL FOi>3V~f&Q?KGA=k^V'( p "lWƜh1ndm6SM2^HA , LS.ThrF?c=HARsC  ok%O`Xʽ.~̾IAG @*b%i!} f) {5l[-6G VJ{^B-*/^ ShB _gC/u 34π$ %,-ҏNo;qN?|ȑHǗk3Ͻ<0t$a-mۿC~I 6w{?Z$=iI/nŠ'Bww7'c&;ix<ē87oO=8ȶ_߃^wp}pv:}Sn`18KY@gt$%GAD l>1p@xõxͅfnx|5*J`9C~}~*_dϲc1xקÛo۳L=>^_=mm1qW_/$]tUą_~Ѷ GAhcT[& ]8S+W18@B|q6,Z ]x'ЯoL<xhnnQ9z}lK/YgK;ìY3ѫw/\yťHKM h.Vmێ;~u^ ¤]TcB=Azٴy vwرx7 ʶtVz 99وu/))--ŝwy|ȕPR߉Ʀf455H@9b8ƍOCnG ?VAOZ# ر7&."J!--=0F77GR7wV)w37$OG,$ }'~CMXd)^~(,*)**@>oA^n6l؄~F{{;^sRzz:໭q1wxƽwy;***{\4)HMMAA~ldv|>_Çb*ʋl_GQQ!VZjs_XTVU _I0hY We\,4޼9h`P'|5 wh^GAJ?﾿. Κskonsםp8qʙ1s4$$$ڎ5/_v'F!~–S#qJ ` JLPz:dP5D/E&Si8`#BJ6/@c& Kt @4 A> |pY?3bAD^aMsUĊbҳߋ9DcpD? "|#hwyI+>9&!~]*TZADb "TD,=D#z>(v(ʻ:Li]++ ?^AJL">P>")X)Y?|X!n "@,;]V a.څEPKM HAP&,N!} ݭR5+3AD8d0W=+# "O`dvaBN<'N–c4AOGAXixN^xlj;~hj8 x?;v4>nyp߻ w_^_ws=l=rxX-u(b\Vn$X y"E^x->}߯G[ m.BÀ f}JpvtԌϗ6;IjqKtP~VNFJ? "tD@(GMmuyGsq6[\33q/z^Ua| 9ASp}wgqҨTp6о\Ȏu_q<9jR:^xl܂.)oQUށT.i(GAXJ\S({kzLBQDV9ɻ5&~C}c=ɣtn\Z)gwH vASpUpRib_Q>8s+֯x`5Xq6L?#UN4i@FV,.Cc}'}0[]6@MUΙ_RP]с 1fJΞ_V>y8Z}wϠD\vKocgUXB>.雈S%+ 1fJ& vmk㝗9qfʎՅ?59ЊF+ээ./BI8z_Z%]^<"RC{[pڅ;5UN|nLexAD| «0dT*hl^[nL>5 ]W x8zv5!0䑚}%};oWzOgjpPWӉCZy[.ƤX;\wfl^dk5Ř|J6&{-}j(w7af&JFcY؅.}}1x=n]-κ8_|B2ߐd;҆7#(;it*vokġ}-HMAUyXL;-)ʍŴs Tc)= M8S:NIGzH>;CF" ~Y;Pɗ ,/A[hxΏуvѩx럇Ts`D!c u2dTu`բ.۱2=Ђ;ܙn^^@)BS{[#v~׀ Oy}nfwKrxˠRǎaٛϘ%/AMD"NsUrmf[1S2p`O3xZQ3|ۭ @uEj:P+A4sg ן?Xpg_dbJqh_ w{KFZ UCǤ!5=GV^m51rع[ lW}ExG`VHA=geش4Pz 9q8,`jāލ8lHpoja˟G(8{Ze8~GjN@uEddu'R$&Ϲ_~TSW!fsgV--Gue&Bl{UR$:F! с#0oXM%_ bD>Ydl4ctp88$:҅u+zy q]`wp0# CF >FCS՗ҞwOލ+辜O|E#;/_,-8L!)ru+¬ssqy|0vjxǏe6T`)o z% O$`Ey =$  9NQLjQ\c, }E\;_c4\wW_Arͺ] |ebbĥh3h÷PADVIF~ϋ NDVzr@JSy%` 9-ڲ?6O+_^qe: &F2bhn+oW#ݘqv2/~# zQ;P "e:wVWGna,(ƠAt]1cw:ym Z\6;SN$%ꅟ"~nAĉy%%`r@UJh~e k0V#.pkhxn؀"VyAY? 'cҠ8&[dEʺr-[= ? D wrXXyl-$ ('l]bXXЩDCY? D4hxkh$ShK&$ DT# 6RBh"{ Sr`0LL`FR S'r/LAL\.l%Sa V!R[A&XB^ aL{1 @|@KlBB| L#$H MggvqKwPNl]zMiu%VVeXZ@ 8;;aU,I%`:;n+ >|]Xе"ʽADru#.&P_弡6v0gœY n{ +맣q|AĉCm}#vl6cR. wu͉'b531u_aMNH^ "ip ɉq73R!1>5u}ޢ"dLwJ_G!. p- z$ƋKz3tR! <޺܎gLH);Q A'"NT#5)6M5Q5-" 11HO1rQEXĞN=Q# NTjى8>) sva@L1Ɛ=.z=WwAQ傳 ]pvvv~ @- }].N ]]݊JAApÆOa`9A h'waK"l均/fҤU9nۖ~<B`U`F|ϡWnSJ8*"o4T&o4F_pַ~G=Cw`{o")!Vܝ.X7"~'W >s5% F 3Z!|Ĵ,,x7|Ǥ `}bW4eXj]) ӝñ[~_1e IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-aws-amplify/index.md000066400000000000000000000125121507671574500304210ustar00rootroot00000000000000--- title: Host on AWS Amplify description: Host your site on AWS Amplify. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-aws-amplify/] --- Use these instructions to enable continuous deployment from a GitHub repository. The same general steps apply if you are using GitLab for version control. ## Prerequisites Please complete the following tasks before continuing: 1. [Create](https://aws.amazon.com/resources/create-account/) an AWS account 1. [Log in](https://console.aws.amazon.com/) to your AWS account 1. [Create](https://github.com/signup) a GitHub account 1. [Log in](https://github.com/login) to your GitHub account 1. [Create](https://github.com/new) a GitHub repository for your project 1. [Create](https://git-scm.com/docs/git-init) a local Git repository for your project with a [remote](https://git-scm.com/docs/git-remote) reference to your GitHub repository 1. Create a Hugo site within your local Git repository and test it with the `hugo server` command 1. Commit the changes to your local Git repository and push to your GitHub repository. ## Procedure This procedure will enable continuous deployment from a GitHub repository. The procedure is essentially the same if you are using GitLab or Bitbucket. Step 1 : Create a file named `amplify.yml` in the root of your project. ```sh touch amplify.yml ``` Step 2 : Copy and paste the YAML below into the file you created. Change the application versions and time zone as needed. ```yaml {file="amplify.yml" copy=true} version: 1 env: variables: # Application versions DART_SASS_VERSION: 1.90.0 GO_VERSION: 1.24.5 HUGO_VERSION: 0.148.2 # Time zone TZ: Europe/Oslo # Cache HUGO_CACHEDIR: ${PWD}/.hugo NPM_CONFIG_CACHE: ${PWD}/.npm frontend: phases: preBuild: commands: # Create directory for user-specific executable files - echo "Creating directory for user-specific executable files..." - mkdir -p "${HOME}/.local" # Install Dart Sass - echo "Installing Dart Sass ${DART_SASS_VERSION}..." - curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - export PATH="${HOME}/.local/dart-sass:${PATH}" # Install Go - echo "Installing Go ${GO_VERSION}..." - curl -sLJO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" - tar -C "${HOME}/.local" -xf "go${GO_VERSION}.linux-amd64.tar.gz" - rm "go${GO_VERSION}.linux-amd64.tar.gz" - export PATH="${HOME}/.local/go/bin:${PATH}" # Install Hugo - echo "Installing Hugo ${HUGO_VERSION}..." - curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - mkdir "${HOME}/.local/hugo" - tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - export PATH="${HOME}/.local/hugo:${PATH}" # Verify installations - echo "Verifying installations..." - "echo Dart Sass: $(sass --version)" - "echo Go: $(go version)" - "echo Hugo: $(hugo version)" - "echo Node.js: $(node --version)" # Install Node.js dependencies - echo "Installing Node.js dependencies..." - "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci --prefer-offline || true" # Configure Git - echo "Configuring Git..." - git config core.quotepath false build: commands: - echo "Building site..." - hugo --gc --minify artifacts: baseDirectory: public files: - '**/*' cache: paths: - ${HUGO_CACHEDIR}/**/* - ${NPM_CONFIG_CACHE}/**/* ``` Step 3 : Commit and push the change to your GitHub repository. ```sh git add -A git commit -m "Create amplify.yml" git push ``` Step 4 : Log in to your AWS account, navigate to the [Amplify Console], then press the **Deploy an app** button. Step 5 : Choose a source code provider, then press the **Next** button. ![screen capture](amplify-step-05.png) Step 6 : Authorize AWS Amplify to access your GitHub account. ![screen capture](amplify-step-06.png) Step 7 : Select your personal account or relevant organization. ![screen capture](amplify-step-07.png) Step 8 : Authorize access to one or more repositories. ![screen capture](amplify-step-08.png) Step 9 : Select a repository and branch, then press the **Next** button. ![screen capture](amplify-step-09.png) Step 10 : On the "App settings" page, scroll to the bottom then press the **Next** button. Amplify reads the `amplify.yml` file you created in Steps 1-3 instead of using the values on this page. Step 11 : On the "Review" page, scroll to the bottom then press the **Save and deploy** button. Step 12 : When your site has finished deploying, press the **Visit deployed URL** button to view your published site. ![screen capture](amplify-step-11.png) [Amplify Console]: https://console.aws.amazon.com/amplify/apps gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-azure-static-web-apps.md000066400000000000000000000012311507671574500312040ustar00rootroot00000000000000--- title: Host on Azure Static Web Apps description: Host your site on Azure Static Web Apps. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-azure-static-web-apps/] --- You can create and deploy a Hugo web application to Azure Static Web Apps. The final result is a new Azure Static Web App with associated GitHub Actions that give you control over how the app is built and published. You'll learn how to create a Hugo app, set up an Azure Static Web App and deploy the Hugo app to Azure. Here's the tutorial on how to [Publish a Hugo site to Azure Static Web Apps](https://docs.microsoft.com/en-us/azure/static-web-apps/publish-hugo). gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-cloudflare/000077500000000000000000000000001507671574500266565ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-cloudflare/cloudflare-01.png000066400000000000000000000372711507671574500317340ustar00rootroot00000000000000PNG  IHDRhJ6/GsBITOsPLTE곳|||^^^ٙTTTm^h@@@c坝fff}^ttt^}JJJЫ>>>^cŒjjjppp߶xxx666xhڦxzzz緷rcnnnFFFZZZ}^Yrrr///PPPՇ˒hbbbՁYhmŕڶ(((BBBVVVx^h˦LLL^xhx```XXXYYcϟh~~~vvvr^^YYhrŜhh^!!!ŜrМՉcrcōHHHxڽh^r壣lll:::ﻻ333՜rcYNNN˒mYYhc\\\DDDhchRRR^h߱x,,,^x}mcr}ccr^Ż%%%嶻^^Y^cr^r˗mcxh^m^hhc՜888cYYhcrc pHYs  ZtEXtSoftwareAdobe Fireworks CS5q6 IDATx흉"ϛ adB H `:v(H\ߩQ2 Ɖg&uu#ZutCsvjrJh7S]| qwvhN9I$hN9I6hhʤ|I)kILjeeFfҴ[.Uf8ޟbh&hN9I$hN37_Wo~_ݺXi_~\33şC_o^YX?/l_3swXgA4wSo?}{G-b-фhQ44W#'|Ocɖg-,Vf{wL|ibhYntE?kWllS8 s_OJ?=hJz=Y??{#O[̓-K¹uzVW;g7~?GlݨXiƯ_3߅NnR$n*qI4' М$@sI4'G8Iya!m+$S oe2Lv/&qrGVu/jD˨e'l~ U:z_ОJ->* @OY=5p`lsDž5s*}Հ1o 1h7̂F?:Ш Үz큦m{i<F2J퀞ƞS]ͥpִz!1 4 hTLopF]VUAA@7@)_ٷKhTóṛ7@l͂F,iGZ М$@sI4'ٹ`YKt("q7HrI4' МtG뫱 sWnU/h3 ̕y5ZUݼqRA+o#RluRY³\>ݰ@ǏGٸkfK/!]9 :J}\,orA7/))XY7h/龨zqSkF:0eI=Kqͮ#Tֻ4wktQ\tp1#R QoƊ#t\m<ϣpo*2[-u`V&V:>Yy]:ܤE,wI]WqcޏIhJ;Md Zgam SЍ Z<(gT4P/B˛g:.&vz+'ŋLzt3>^G#R$Fl3RjG xQSYAISzpe-مPh#JyK9r&iSH'1ЫL06zjMnxc<8COME0mۄ6OO-Q;? = `\G3Rݑtj[ @l;yK9fc:4m zOϢE*>NZA2n hrnrp^IG I =Ht̜*䑂[\gMRyk2Z&fס<8MZA}sk&WrưCд)&tW/8g:., }gMNM{u~&Br͈05.\z9hYסO54 +UD@:) Er$بKAkY "x%@o򥠏U[WVР_Er޴ K Ҕ>#f {}F&]:]& Vf1H=<#h2A:}W9 )?tmI:).<*Е,tNh&fr²d;g;6()ݔb=<+?Ӟdf5鳲Ãl&裳3T}Od YQT{)_{+g#VqXO˝NMYZRR:b=jep;7{7et .-u ¡b9Jf`id;K HN~@&08:?:ړYJ!Ie2` O2ho Y?=~uY8x0z{ GM:Dtģ]eC,}1`\hUiv;){: /:ƈgW}A`6e|[z K ]'>٬Z3Vkӯ}<29o^{FAF(uF%N`g|^nFΉhHz㻇 * GK[ tŰĸ `;VЗ9){5?ж(w|TX.ޡ 7\#G";-/2% &(v}|kvKpz:gKݤsDzuSI0fTZ `G_pԫ<6lG6o'k,BWR.e~,' М$@s7rzۇk^j\rt†{kR_׃I@Et+7ttSXhb!!|^d8" aHzȜš^Y}UOW'sxVƻ])ii"Ovg)VxKGpá'#/ >]YrMʶq=bT {M#cg=xo~4! &=Zyŧ2ЃHX)&gG+ON2k*\'BڪWxrG\s'hW{cX gP G>]JRnW6Uגz|R(ْL|/˚A\dN.5vщtP,(|DЦWV4 ș0nzԅc8$> qo5LD=?loFo{ІOW Mʒ* \whZ3TJl^;:BEʨO< ꓌yMs 4K0}%q' ~8V"=uOІOW&34Wv\B~eMkH义 h<'G ׉؍㇊T4@=ld?Gl01,B@'I6c&YSꠕd^JzO@pX3l~ /˚lm;t MG`iYOSFW1h|=~/SfAS4\& Dф)b'~e q=h_5Bu7ל Yp*,莊O4RM(Z;D~95A#>)aZ$Z͌4{3H׬cOY!kppt%L AZxrE6}JWT_ {B3:c(LG z<{ =kGK8u pp5Kyapwa\x(CMХ-Cx~Q&XEWKFY{i*W4t8=Sge 2$)k1O:}avypk&ht2ʨ^M~\ѭ5r)~tr9jC6MHhh߃ .05wO =^ݹXO^$P6ejFC69,e^l=%Hn_qN9ha^*.2G7Y;ngޥkjp芃G Bd.{g@?^߅o4bAV[ _kT*Ӡƥr Fw4&![jתT=45QeE}^7.7_l9}YC7xCCm⚲zJ|D *UŌb韛YJ(l:zOzϞHl5[A4`nS)tX8Dw!sMq䡥J#bg(^%tmq=kp^ ?ͱVDF0$鰶GzbS&j0w},)%)hp1]gjSGBwTz 5'ek̯n|lttX?*tU봤)[%Gmby-=Rm27"wTTʇG6jzW+7f+fAkץn+>]?&}Vcd0P5ϫQ()R!ĮYOSMKɻhmnPJurwŪ_ *V/td9ĤàͰv!#2' әlMК<#]ER\>L!P2 8{$i]QV.6$.(hmXQV:uphKRϣ)mݐMH)Jg7s]Q?f~(n/_!]"s쏦 hU*ֆn^&gydtnk+_|}([^%RZ`"w:Go[U $ 8ĠuܯO){S`D^?0L ${}ҶR*_ / b;_?ol h;03:DG]b*܊>,f3J4}qKgwd&Hͩ"nCşi!NsƠD_euhQg[9;%;õhS߾.e`bcu=(sc >)[=v4gAf$_@YV~R,rhOrNȞ蚛'x(5JT"Wb&@L,Kz<Y3@'Rp(yʃ h oF߁S~ͼZ:lzkMqh% ^F/I$HL1}@lMSB:dQނۤBW]pƿk$@sIJE9գx{ƛH^qƅpv%mq*H&s%݇PJ-{[yk]z~̪>vVl5RN6sW|r*=v@gҗKjRS~88<: E%k@iZ[7I%YI"ܗ* rU-+ƩG#7LF*3)NYOi* 0(P)w7d1l5{$H;R2r7ҙHH'P#i)ѝTi[IVZJk\J};ȳ_ԥ$fANO%Z.ܭ)qQP`8JQpi4#i;rp^~q3nEn<.MNH\`"'Q Jr.h>*l9HN1?RJj:Tw0n4h{熲sn+ľ!]*f-f=SU.VnV.B?c萌Gm/j'gA brubaK9H^IEl Ji6BR"ą&@"}oD}b-PY3jT{Ʊ##p.6ӫ )4/bA$4PS#mlFѹw2ack4IOA/&.aUw+ة] ʨ֥qh(Mm.AO!(Y^[]uOIdU<$#@x:o(J 1h3ш w% jr0+IME<>=~1!MeQe$;Y[@7HA?l_M΂դ?Z_C`.%B cQk;~tIpV#G^~LUr.+a5͝3 (wS\2 ʸGXK6kxO Fs3)iޚL[(!z(6Mm] KC Ufws[:em}C0{_vT#4' М:/"GRt*@1#rcc'HVL|pyrcs1Pimf1ГuLdm Yȳ.w>Z9z' .l:dq>77:fpOmO r#s6z+_Z$<3;`1WV"~9I$qShN9I$hN9I$8D(TN9I$hN9I$hN9I$hN99~RZ|D>`Ғ24_ oÐmtV-vCvAkkQpG/~OZE(?ՇAӸ zl T^6#BVy~O?R5_e|m]=Н8: y|ݩ{H'xKG`5AU6N>4G^-mȬ42l41hT#5O~h?ahzLWfjOJU`O_we aRj9Kret Jb35k&EVjqңQBztT#Zs1sxn޲Fg M ={!}A@aOAtm.eF\ѴaN.h T:A 0u@Z\Kg< ҽxC߼l^kgCu%UD3TjJ.$tl&ubo ])7@}+% 9I$hNZ7LOl6nu#0cU0[0]O,8ŠuZ*F|YJr "tȚ9,MDCȋ'q6nҒsd*ą>MAdH5RWfY,#z8yҸRDr/:Umi 3rM X֔c8Zkt79RL)1b2g :>V$AF&ޒه6IzE|g9o(9g36'.0rx{\\ZЗi:}.cݮq 5ɘQl0]##nc*FU\_"U?jbۅZLK4el"&S*9vj(T} hl9?Tq).K7*UD@ACr{<2 t2fkv' M'&Cp Ao2-ۗӠV.ɞ^vSӱB,r^2^*MjW6Gmq4Qxnn"<;#ZO"m⌇d769=eU!Zf# mKVo_l_>+12+.c0PxU OFLŐe!ƨ}bBl' P5iЙUL*L 6^VF ehRP'"!5<Z!Ru=urwŪ klQ~h~:?j Ih- ?y[ P~㶀~a&d?%4h7䳠e6!I獵aF*eS՛Gtzw[w6/ iU~_g-/7~נ; wk{<v@ Y$@sI4' М$@ssק~_  a(@+:W- |,jI7Vc-jo"'MyĠR&#!͵EPnFOxY-,XUh&cd53q,h2UEPv/ :v%cYey[]:@WCSMʻ AǠKi8|KP!|kx[-ЯHgTǏMA~P&F/IE[VP5"8Bϖof@kJyEh ПWuV|U0O"}) Q5ZэhpK43(muVkD; #S?`7@g0h;' ~A.TT<`#$wR.F $d'@q"`F2 S+t(J<VH@;+6:~$fm4u\4V1Ѵ,em>kv`T[O5M%h_%4zA.ɮACw0d6D`hы@@ld\GW/,n ߃tl<|nPo<:]K삥ZXd^ [-04r=`Cpо, yݻW頃|0O6uNvGarF;=`6AY9 6/$:^`#|kC$dk)}> g٤:.]cG$7$G'1b _&Gs=UY^)"ZOsIgZD|ԒZXDYJf)'@+|e$+zރ^!ЅVT3P3VLfXjwǯiYF>nZr9Mw+igwŎ* 'Oz!_SleC&ǥtYϛ),`:>l|i Zɢf}"'3 Wh6r.c)+nA>qֶ'^!0`5[F6[>Vi<碫0oaK{+CPg^E n /rc4K?Hy3kT 'v) 7&wNjStYM3'u'K2a/!s8FK%%`*EN@hj# {^䃸4^.⛥P|49j<:F]uSFMɞ'6n.ciddI>N@~ϟV~гHGІ3ZUoh}3LS'f, hKM2]w I#gٳÇ yfe++{hPuRsUo9 \5^op$upI4' М$@sI4' М$@sI4' М$@sI4' М$@sI4' М$@sI4' М$@sI_z'9m68YHsv.dTVM.,D{ȝROK+ ^#ۑ; h3 CK$zh@}Uh0ip8r'"2/%^793Ҟu!/Rc^oe `,4%F`ЬNV @`l7ZfNjAw[ZZiH{nBEw7Z|etocB=o14; _7Î4ɮFC*ˀx{B(ET32<q^*5èztH6ļÈ=FS>U4FV&_xetuMw<#YfM)dВ#a:odS j}gd{j?3İ5G{ @ͩUAF|2h $=Px1 3plLg}RGO`7zx]T bU@A~#[C?K5}>0u+MB7 ŔRnmJ6@AmzGQD輹l=pF"݅ ch,31XbhN9vARקy$r ^s[:>0%B\?w_΂Vg$% >y!q0Nd4W$8Y7>ͼ1Rf,{\iDhl.f0N";)EA>)lr&>7f dˌy: I >+O@8hkND}佼9LAA4sYA/3+r$'`D4YK?xf6ciCN6b}J,-QІXµ#?\weo 4J 6y4VȨ^LAca-{\@JK ]i(f0Nd^bwS @)hxM3=t.tˤ8' ixͺ!7m5XйI4' М$@sI4' М$@sI4' М$@sI4' М$@sIA/߯Ջ{4h@|=P)'_AU˓&;|ᘲJ‚s%^9Jg٥#R,)i!Hgݾ'OYg6H 9) b}gn,h[I4' М$@sIBt]gg4_IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-cloudflare/cloudflare-02.png000066400000000000000000000423571507671574500317360ustar00rootroot00000000000000PNG  IHDRbmsBITOPLTE%%% m؞^ńQR)ޫd71JDJw失17DjJZ1=qDqظdQ=~W=D,v{{{7Wwfff=11dDdqwqV{rrrJ~W71=jjd=D7dQQQŋqWQ71w==Jdˑ^Qj3Ѹ"q=ŤqŤ zW7QDj`11Wb{sW~DWqWw7JqD7WȺj7^wdq^wD^wW~~Q=WCijwd=ƞq}ёWqWD7=Q^qWJ^1R7^qdW=q117qDJ︄^;gnWqؤdޑ11JY^W~ˋQCDj7`͔d==77wD7D^Yeǽsw~7QǾjqWޫdбQW717JwJJJ~Ѹ~J7޸Sz7W=Dj333KzZZZJqD^w뫋qWWd~dW^4R7W=7QdD7^wQ=r77^~wjˤWDŋdDQ"`ԭjJDjzzWDWѱظwjWJqRƑWDS~D11Cv˄w7[jW=ˤwas pHYs  ZtEXtSoftwareAdobe Fireworks CS5q6 IDATx \G!>@.zt|DVDaA` YAf*9f5"Ÿ@]('>ELf_"z j&p3cW%:~A/{*pC8!AΠbgP13T *pC8!AVB"F*y2}uϯ}iTs+/5OJtX)G̭zJQ1nMe Fok]"*:DSbIke"*汘sW5N榶F)ֺRYɨgrB ][4VG[Tz{ z9\)Ћz`kuOj1tZ3R|sD1k ٖTR*\y,&e  %jC<tȬy֦\e >AuU [6yۅb#GM/.ڊ;|@@xsq'C&^j(i3L֢,0,ﲄΥS4یܐSP1O$FmIB4 )iBDC$M2 bl%.\U 4o&%8)fG(?sP9k^l}CkLtbYuiB,'wrS(MlB1[iRGeW|OPLڰ;ܜVR~Qtb X^v+^Ð=J߆mIksU klRDr5ɿ'Wwlh;yGԁXrAIBLv rd"_w+V-YNR5_L_:[vkEy5tbB]0>x#>x}u\}+4o3,m*ZxJ)[xOh6-l<fτz=2#_ D.\WqZ;"FL*n;V8QA1Mت$1+#yOAT9+P-b+[1%}UtFbZu^Mqt:xe۔b+J_2A-E1M:wEQS#^8tHg;ʹ-{EdHKHomS̻':A :xwwGi˫yr*A_(ޖTUNFrikg +WB))&zY=4b։TD9YFoHW㽻;=t`?nϚ1[o_ Q(B:7 Me GBtBaY QnΈ]mQ1J PVԳ;TpFh*O9sfvB`Lo Jgb4|<aC]0N(F[:͸\_zd m~6H6UDȊ^H(I1FoKEbtMGUeLQ-/(;[nF_ig sЙ b2ߴY>bߏ6Ϊ- a\;5Ĕ1ƶ)*]>h7j喖+HEL;`H#z-)F3V(߰Ni(hCiZ2q\<Ȧ96ĆyӋ6PVS9%Hdw;A#o젛 꽫+F״*f[oA=|GT]'J% 'l<ӀZWl}i(v${Ve4 lxn@F*mSWY+ Y[&(+&gLsԦmM?4:Zu`zZlɊ لF51s7юϭ}MyoHzNtemzI਽tQf(ܻ=$0ID 3|X(&+V &*bh~KS;ŲVc؏n0>sSR {ÎVyW/Mlp`oJT[U =}RYG:)(k(6WQ,r rSoӹibJΈLW֞B֝fPc˗TOo )֔E8+z)UT`(@Qlnʷ?bݪMץv,̭/ߨ5&,˘xz1ojkM ŒbR?*|XkΜۺE6va'VAz}1bbnt~߆eKRŋwKbߝlꥳ[^/yRk +V% wY j~/sV齥-bygS4?+줘 ]ޕKj kJ fm ۿ ?“}BR;ɲyOMC} >֟$6 ٫6I}j.Y1Mח!b krSak %?Y$mP:`#"=X\W(*ٞQV9_ 5YLSD7N>TRƳ_xܖtޗӪ #~1/dŌa5"31K2X^$t6ŤYk诠^Z3-EvM$K*:@+Mg[7%~V y\,dy JMq$L]ԆQ'k,dfZr+\;yuJ ~s3*:i>g{x2ԴA+;V^* G"](PJ7sd*C8!AΠbgP13T *pC8!AΠbgP13T *pC8!AΠbgP13T *pC8!AΠbgP13T *pC8Ӣb٤)JsYgKv ;000bN A`ZT,7*WR겼݊m јo_)ȃK1r0̂ V, ,k_)ȃK}(_Cii{5ߋ@h8b=DQ6(4@HNX*kJ[JKizzE:'(-pkE<^EN{Jq1j|hiX@dÊ {0CJ}Q`ʋ)WѐeeY? )e=P1Ϥeh'[ yʠi[EOْ' j: \ XN } ;HJ[ EeѴd%$F 3 U!E~ok}`/)>[A&IYWe 7R`iaty"IfoiCZ/54-mWnlQ l{]|A"un (6[[MNbleI1S9oP u6t_t!}Ҽ4S֍D|dobA1 DD)FM V'3l+K QOQ7&[I;9IA9xS,3|9ٯm*Wme9őq5;ח=[kzhQWƳ(eN /Qג[VoI wT[!1l+Õ#f]}T,`XΖ ǖ+šOg=IHYTN@bMUYK4Ri(Ei_QV`}񑐱 ky:χF1㑁DF-eM,&Q)pycf}BZw[QL^฾C_lC-IVM$KbֵobXb\&[(TQlC.p^/F:pTE(w}1bU:To?8(ã.!MR/?^ve/iL?l^^^ok?5xq HzBACZK?lYoCF7e(6|ctyf뇼}bsZM4P1ͪؐ7Y* _jo|lKF)dqtG׷;PcxyD+R{a)CC_ i-.5j3"wǍ)5LTK6K?EC؏ +C&2~)68)H†R?|1Cx[Ɣ(ZzF|r2%I AFbo;~u'{q^^xS&$H&7^ה9;_oR V+r_(OC8!*&clzo Lui{7j{nwk"kuD]B߭\1SvU.WR5'?w:T1*[U;,j|vҮ R671X3h]Vs!V}(FŪײbM0e<Ң&@i^HQU&rjrR'xK|{ÿ/{r0v;5\ >jBlQ<](6LitЙ 췤K-y5''D}$<=o܄.$)WD!nY C=t2ePu8u) y.OX7>Kr]+Oˑ7יb ,Q DT#%UI~ GqQ.$vFsQ}=AbpQQJ ;}C4B -` $z 戙\?{j7w .Әk0I|gIi F\YUǬ)zeǚ' Q#9Sgj+&.)dk2v[aZw)P`1NIn畱y5;5uh=]uRQ~jdN/.W: _fK|hjpujG4uoh0nԊmkBl$ )ьA>gDqǵߤ+[*+SY XR˷S쨠쉋by/ԃ{G1<2sW#+\nJi?+2EJC,HSLjμYCi{M􆆒f n(kCYLw N1Ev %|9x6.Wab<k(gİ6պ'5b,ƍw= Obe+$ pMTc'k?/|*#fuc% NG1ݿ>V)i ;vEBԭc..MWŪ`^ݳ@:]M+a2+$WabӋ\}z0_dݓ_Ω)+3Ϭ _Š۰l%Q<;Ft^hI1 IDAT$AO"ig$*&BOYR7螻8%LCؠK-]/zx7`٠E^-!%'DelwΞ#HyhfyPabbv:!B4h1/奶=/)f#>B( c ._4=tbs >LRI}QlǼYOʜv:QEڐHHETAQ 鲠bgP13T *pC8!AΠbgP13T LKTu֞ ]Ƿ.;kOp]8 H[p R.cz dȽw6̍b AZGkGˍbґbgP13T *pC8!AΠbgP13T *pC8![U$H;hōx>Z|<rCG᣺H;iQ]pi'8T *pC8!AΠbgP13T *pC8!AΠbgP13`\|{jt6&HBt۰\ߞ-2[h!v e.]YS3Mwu♇/lby^~R$|v9)S#fЅo Ғ<=pVY"mZGg<\K*|ɩO7Tʶ[JN"bRp(6H6\B[>-IT}mJJ#د]?3<3y3.ub6jVH/G-E P'ZBn14OSɲH`!~^2^ R2T)1F˶:\%dou`/6[gӂroe*6:` !L%@c1 26 pJԍx}ڍ2J9ׄG̠m4:bȬt[묊By+ a+pX<oU1FxlH(F럌=|Я$p1qT!~Y(i(2 UXV잹]Q~b*F/$M$j6.& @|k6$ذU itOܴt7'Fcb(hpoXlYu<(6g~?H}XJ`&SU6燫b!zm.&'b\ A%5}VLGد4oљ}衇0ѭg>3oI٥l*ֆrqQįQ̯(6g3,@_XQb4~ 9DbrS XiS띏;OVϷ8(C9Y19R̙R e!K \@dZ;Sy_0~IQYbrvcw"\Fuȱ#b=9(dbWcCv ekpE^Wb*{՟̳즲QRubO!M|Kq}wo*6,Ju\|KoN͆WNfecCWC(9;xY}ھ};RlC Zx٣HoFxx+6JGHC8[T}>p@o S{Gs3E92;E'+++;F._JO k\m0~*=F1qV)J5nS-Rtk dymqµ+tbbN83''1i]Vs^M+]KW/JVo]Vtfg; I ;1}n/iV_NJ >Oyv"wiRUR$]tpo;55y}ƾ~w 1z(M% !S!Sw0SB_ 3߹~hsxXԆϰR)1 =0f<[Excel5߈SS dݥ 9Sgj-ʔQ_kTyϕ6j 36YӳNэ1NҜtif+?)+o'A *+mJUwbS){(Y?yKDbpMqӋ Ubcfdm-CWׅ[m^`9gwXPkky{v|f%B>D.mVIZI1g-|tʀ g`PJ$)M#IxNBGG)FSL&V_Φ0`91h3cSϨ3~ǂ S u,AɻP/df~ A(w-&(FaO vݪƴhLmEcIbt}IJ<F7}bؘxj┫6ŔtX=kNt:?N7 <Š^g\2k+U^;*}Z^#]#yQ`B~0&~=~0bJTao-*+sTvA db0;uY+Gw'99"CNU jmN2+\nJjny2 + %{uMe^=YMzRuawЎI{b5[}V~gXO(=Aı 螲•tY1؃Nr%}%u(]rIb DQL5vRZQ }_<)G ϻQ! ?bwyR]sYUA1X;l<)X/xgAEAKL11xf=Mf(&Dݺ>RvU10ڭ_dl|_/-ィ6*Za!'b,l Պ݅.yֻEM1cߝN ser:N AޠbgP13T *pC8!AΠbgP13™ rNA64ѡb8g0.]dHp R.cz dȽw6̍bz =rt$T *pC8!AΠbgP13T *pC8!AΠbgD#i-xc5Zqc5>ܐCn.NZzT'@ ipC8!AΠbgP13T *pC8!AΠbgP13T *pb¾/eoMW̫'!PLVۨoI^XL9)*_2, lEGzU օhۼHpU j5}.GS`K=K]Nb̭rގb-$\%W>ڪr^ؙZQS^4䨖oF'2#>j!"-U]R /Y ^W5$jR^}jB$9hRu'0#fF&S[T4]եl\tTL5!RKkq^$YHO#W7RbRbہbby6i#nઘ&Dl^+,o*o+"`Z%CVSyttAYIԖ,32K-+A&TZxjKە<8{UO>bz#,b6nU =,B1T ^A+LےFAԈwb}-~mu)f ՊX"U@*fm(r1ҪX؍ۍq> BwΝU Mci {^ie*y2w-bES q߹5>V0X{ Im}M YQ(E\cB4T $ACvwײj?(X]DaoZBrV(b~2,z]V!eVU** @j틙aby*la'h>JCѶKEz9]2-M5f%D6QI1/FWL\QkU1㑁DV< dw37SLJg<C H'/?67pd1Jl7h!6@Qw`Ah*L7TtPLT!b*xE?1͋?or0*3?cWbi;v ,܄.z9݊0gNbi)ULjn.!}P{6۵GHొ0T6Tł ڹKHࡊ.'3LŠECPw 8)6r6ł b!"]7bn[OL~|yWL9 Ц!5СzVAuQlU,Ul-x\j~'?zyʛᗽ1a_xyy״gL׳7 9;Oł 7-Pxq1k?^z~(LWņO|.[?լ2Җ}/4c [ ]1ouY:"-}Whu1Rn.-ޕI CYMmze$4cpx[ *SY&WZ퍏tH=?N}byÖ]֥\5+gwV!>WRS[YR)Z6~g*&_>C/)b)&g$Ų})UzvU&MV-{ I"-7==hRaB <&o%g6Ο]4774BD1klm#ꠘ.h&եd%9i"tK̋MY3,%/9PoJ%JE4MQLq `OLj?Z瓧kЌs$PV,k 8y U.v| PjzhȲEtkK?EC؏gE~D؏ã6&'eIJ`ΰ5&FӀk_)n3@߄({3=gs]j/={СokߘRCXK7F|r2%I AFbo;~g N34LgO=CX իJej,{-:f$JxE0^1oϪXg餖{aeZQPBE3(Z[\)X7]X26ˊ);Nx&sƄo`QwOH:PAZO್y'gQ{ҦӣU|u\쇇/{y]~Mi vڛ Z+z{^^SV tbY1ńWl3 CuqoD1NxVWbS!t%{zvW `IarZ=[˶~M*]ئXüńSLh`O*  mcҌ,$ŪJޜ]:xjbR<f UI.Y#n3CwZ/V~N&vDGlN)ҪI_wkqJF1oO)M>tǒbʎc-/:xIL(b3O8hg~9j$(&ֽ`ݷSL5vRZS\#f~=uOC:Xf9Rƾ-·έa /}jɬ:"E'] !aE;H &@6sLё#(U%XH/n-ΚvtjIՎII:۠H6xA3L>͇ʉ|&!v /YTy S~k#wj{Sk;mTN#aD:TIa- &lz`AŚXnڤޕ;ލ\ʜvz`XM;_Ktˮ6]`C"fkh:[1}+b>Z}|/)#]?,=!+f{Gќt<pUL~CV=+ DFIDATǢD4ɤ,U2v4^%jܭ%ue40YѻaoTs:3s^~?̜;眹L'_` |a/0 0_` |idXY^Z WvI A>t;Z,}H1/Ú<^Y[(}= z֧ ) 0\` |a/0 0_` |a/0 0_` |a/0 0Ү ˾Riu!'F  ;FMI\W# e?q` 5a f[<ǒh0E(a;" ã[Dba2Dz0lhy6Ob=wLK҇ *0Ӳ~#}%B`/~̈h(*pI_٭=E_p8;'\EJ}Y>Ϭc镗׊Sv$YF!ɉNW!"RYvSDifة,9<ؔ6I -_QGCS% l$/WP*KX*=ŹXv-M_8D4G0:OTMGuY&izMmaYǘNtaXDϪj=Ε4f/9To^5F:-OèU$N 8ܝTt6U摵@VN'Y þjl}FKS1 ^vڇa>eY> )ĺ=n -' G4,U'COZJKo?Շl]?c/mBaYk D1k10rg]ҚZRL$#ش kMDern*eL()JI5=+9xہF> aUt6t5YVFx0!5\MfSYRj4*8 S Y5>ka@ oeV) p5YVO4Ä"v܇ ǒ؄ScďHeK'uj̵&`޿Бl+퉖^K,U5rN'2#kaGfHADH`>-E4\/@ 3o8 RF0vQ\4ͤ]=Z!0 0_` |a/0 0_0쭁Ebz'a qXnnovïʃ){;57R<6'kռX:w3h49fXjs5g?8\əQT??{OQ7֚E 4lyٚOrrire #Iq+gm(VkԨƨajZ< SBfy+i7OaZlvsl0-ndK9逝I']:J>)2af)G2)Aƺ6&QIV W81LI. 9r"aJSțfETq6naZSI}N1֌:]GŚU2}jjc0e2iZEYk3H&XܯGĦvϨP>WDaYw".|(zEd6aڇղ>0Оŏxf*W?,FXڣS5ه>̫ݬ:üOal1|-`AlkBx&7 };",ŦXj,}'FoSaCHS(0L)we)9z-)%(a!G %{T5,nв㯪aPs\^ʎa&Q_Gff}j< kf[L-]h6U?S=%4ieZ0m~$o-Jl V%d_87VbDd2[4GqN}: 9cCEKzRްDQ1SrbL=:vRB{&-oP^ďVL?. :k;oݬzüNali|+מrR81o ߯J`X+IF@amjvJr"y7U&F ;>3mg8ZINlbp*˰mj6ihC0_` |a/0  ;жh;k1J 0b)KZҭD&D]wl9]/x#?(.LHe͡ki¤i5vq|vuё9D;;eF=z̃0g߷+g5R4ItoوMy,< sҩOSʿ Bv]9bK+iϝvqRUCVusN:@JS]B=[0P-]xGF^H:%2? ;;""34CeMs51m`/[ڇ;[,Nwk}P1BaCc>QUcKsWJ?C~@6eeP1̹}-\aJD ak1N]'ݹ~ vu͡8uF&m V"f@7d :,ZVl$YVHO̤Ô5aatj-bCݸl߄ذUYX Z-4lbY9hҰ[dɥ4x0_` |a/0 0_` |a/0 5̕S LA+؆儺NulЃ mX+Z0 0_` |a/0 OQs}; 1O=K:{io\_ڰ;r{Kxec߯Y6cߢKgŮR;5ln^\"0?9HUw4ak:o+ojǛ}\ON+Y'/ Er0t]a-ZO^t}!(|0.̿  vgGPİY+&,pDӆX7Y=e ,`gˡj6 W퓨aOQRiOò{NCms~Ea~\94hbcf BaaAQ= EOJcΡ>3.(9(>7jaM-ێ#(_~)%'U7ifɮFX:^~ >#Qn⳼'+'ǻ\i7=@. OXϕ?z6Fa_Ğݬ0/ b 1GxmiMTQٰ_2z{^KmVv-4*ܫBTDزfEa\@Js0jX\sqԩbbEmalXGǣs 3<P Ppǵ/`Q ~LV` |a/0 0_` |a/0 esL] aKB]'кXl u@+#؆>_` |a/0 0;O`|svw{ywˇ+<#w:a~ӳzL;{UöxLwtݎ Wp3^Qo1߭6F{eè\'_t9r$HE]Po1N'_@aK=K"`;oǩalr6J摣MFan yק0$ gaDg*ǻ%i4iҤ } t=ە d$Au6lnVa^ \c|t-Qq:Hv=[vK%KɆM:~t[+!.Goԏ70}c~o` |a/0 0`aJ$؆aMAwN@h0 0_` |a/0 0_` |a/0 0KfmI^啵XI@,뀗aei}aD2tc(ekd`&fY  0_` |a/0 0_` |?7IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-cloudflare/cloudflare-04.png000066400000000000000000000201021507671574500317200ustar00rootroot00000000000000PNG  IHDR6]sBITOPLTExgYcno6(͔O3eЗ)Us|e5bzɱӨ;#(3Qp iYguviܥ]IJP֗X.${:::T#.}eOfZqב˒Gy6cݾavhqp.mq̟oXH#HO%QmmtN=.lҝşwb}D(ͮݾI#(~rݱb߬9=O]uGXpɊӤ-HHHɹr;߃v&LJ(NŶYcv]Ƽlhklv0Bibu333D0d"ǃP>WGn\T0(ׯq[=.v߀pvܞ>rH?ll vܞWv=-.3lvY[b}ڻۚSq&#(زzrv&LйଚlŇ\XgzlpYYY}5糚,XX.l;#(ī}nmݶ<)@aiQ~{[JBBSx좲vqu\B:B#({gs{ivڶg pHYs  ZtEXtSoftwareAdobe Fireworks CS5q6IDATx xEj0KFbuTf G6\Br(G`qL J9$ya\! 9EX6@aY\"V1Ww9m(uUz BQmE h6]P RvAj@.Hm(mE h6]P RvAj@.HzOäU!ŶkZ1Ssa^ToАk盒 r_Zl!4RYS5S^ב8Iv{ojYu)\ eUi_zRVx9Hl #lžq0Wi:aZ5Gk7sk8NX[qƑxeRUu&?ƷY;GE5G+w!S{q@6 }-qnX| 0(ECC_gO,$\q>l.-'~"Ä}{e^͗GKNamBß ;+42()n_üSijRjvoRs9 UA1n,嘀NUC F߆,c[L+¯4Hm^&,74><q0ۂBSB-Vd|6$;_ސ@xKYr!'L9pO y{w P)2,Uc?0=G'|;6h[9 O] ~Iɜd&4$kTCas]q1كI q/ áMF-mg|"&Tnӝ8{PYq|iu^ɶr$3x,>urn0 luaVa]  z +>́nCkN[Hm2 V6LZο88Kvp'2 c8M:Hl6K>!BJt?1C6<.EJbɞ9 YW+#QЋv[B^&x^L8"290/i<|,KX8m,,)CH ;Tq4wS\Mea-'yp"0׵stsfmJVWqXcH|%ƁvH$q3 bҭNU;9cJsC(eNHGN?||X9D!O~ZCֳB6a&)n4gŧfGqwaXcls%<χ_fٯ.Q83viVey1Wy}/^p\}r7ua)>],N>ptjk(NQx@8`F':z |98@blRN1')!OQF9ird;B@ }G9đ5:t٥d2NpIq*I/,Ɖngh?ESdZ}s :C.B^٭cA![Ih gŁJlf7H|rBj5ǽO+VN@HR)>kSXP֏ F}Yɔ: g@xx ]߳-S仢)#Wא[] M ~d aagw*|Y8 RvAj@.Hm(mE h6]/ 5nɻy Ye~"9TeӍZYt{حU秸Rw*K4 LΛn$߁~N߼6u*p~fk4y0lK XGحbaA]SR9%F&^YV01[-?Mہ8 ~p0l7bX s|Fj5s#F)}yQu /bհ5z\`cb(JOHؗ0K9]s؊n#󽃺[Ix=''Z3?\$ä'BSP)ƍ x71ab ̪0y:] <'"6 YZwg0N)(tR (jdo*Z5 wԏ3wg[⿙ sE7dtɕ 2|j+#b8%r<]OOa#B^*pfӚ0 c.M8߱'A;liʁW}3&4&^f[Eq%YS݊y&?ɰ&5肏6}?bCht!VL>dKMNb1ubRw)܌<:9^Su d~-x5cMaƛ9Kn"ͦn#rn8L ˔*qv@8T=T+ǐ{QٴL9s|vMIhwUpkTMm0:U12r 2$IKb!K4!I ЧCYD*ȸ }&A,@a8 (rq "k:m09^FVMrX,!~DhٹvnE}Aɮ0EM loyL~7 fOı#tZpE yLYI;#pGAXfS:Dv5y h|78:1 c# ^L{)4C "ɋ#VkR} NVOI$'0u(%[ Êhja W`}RMîu}׈m{hӑE(NR8 )#YXx>%*k%߲9@-ч.KBrI+Zl0 q@I&> y"?DM]VMg}(2p؀^0p9-s!M LoDGw38 M6mN 9CyqXMy;Z\MX"wLa-zR ';?ㆄiv* `Dq@| 3qw@^+ɔj üfz[Yط8ǩءB6^7aXw=.ݹD],ldmӭʊ 3O78Hr0E>Cr le-~+;]8 :]M~ªoτ'Dֻ`ME_KגpL;R|Qh9l]~}*ꁼXǐURS¼LȀ|[|YM)ȷ׊7|= !ߋ㩄|[|m%W}* ?8p>|ʯ6]P RvAj@.Hm(mE h6]P RvAj@.Hm(mE h6]P RvAj@.Hm(mE hzJx f∈gzY9ODX|o E{XdԁPm<Ȭx1u)(]N!Ս%˺8\8(PqP(BAQE*"TE8(-KDevve>y)e/k;,[?^8* nj3~ѕt񨧸#hLJ G7_ΛAQOqGEٞ=m+}eEU%:1 =A5gĂhX qdE]_qdDe׎iI ?NgG^܌ĭ}?쳃fޞr;10=c?\G~M)Geیۛ?Vr9,/.!A *~ g^}_vHY@iaƎe+Nj)c=>oEFN%!ntUK,?ŭ8{pWV|CZͭ, 6vaJP\pTf{Kw$Rrl,lٿ9B*]q}Yǿݺ5yR?Ix7IקC3 ݴx1Geeo#/PoiaF&Uqd-oKt`"8 qW$ P8_ϷoE-GLO)Ou J }/&>mA?4 R}p=q92GYى#5[q_b.`īKY6+j\F)MqlѲvًc[9;0`徴.eIKH:>QR{hHvk|vۉGBP@oW`_mnAjCMri| y> ;y@qKF|<\v^eq(lee\{U1I08^ q+il>^u+Ҥ/!8]|UY̑T&xNŀ>ƶn|vFyШц8LޢXROAy8(RvAj@.Hm(mE h6]P RvAj@.Hm(N4־dms v}vr麣4gӤWg8Kc;`͔UΞxiG&qz|d7n2-0I^uk&0dZX]ڋp1rlnzSB;Ex#5yIuj?54q՚8i^7I`pg|hpt 78N7*:JFG7\͓oz8|1hӍqRzǗ&,Y_S7>0o ,G.=}R _n$(z+ɍ̩dK~)8a$\ Ӳoz>(Fm D`λK}΢y_xM9.zH:>bt{U.c1S5ȍAxbJ܌mcUo@!?Zx/^3`%?up?n$APS3ا3{)gl7h~mSjO7ʍgx [᷄CN [wϦiMKGdT,. i;->ITo\3jwZS¤,l?2hЭ 5%ҰNXDBZ/ հju2M&ox͟%#=H1vN(R?yb=]ᥥPAԐs.Y Ki ]J1q Gin ۏ/uc?okxxpX'YsiBT ;П7A ?K/}ܐތy0/C!O/њfS$ROngZwd\VRk7b͚I5'cؠ%H9FŊ5dC 7Y]=)/ō_+w7>K@w%^I޶Rx g0B:xhz&,R+,eϰ.WiX@Hym$}hL,`@oaOhMM{ijsTZ/xr#a4F=68HccSuqzzM&'Agd΄yJv"HAӵQͼVN|to6eälz QB[tJt -ӗm*gE:5u?' ˤGkQJP3}^ 󙦥UԸ`ϿOצH~?YHj7Wac[XOn17=E .cY;݀z8$KWZW ̍w?iyt?cHakXt/}@ɇu7Ǹƿ!kpj,4, /]=782]h͏pwc(j%gI=>ЙI9="-5n$\dI4Ex.s(ɻKIP}QPڍ@S Sq*ѼGF{?W585nb!pckR$Zn,M"Q@X`w@ (R]𚋩HQL_)bQ`?DSe{F &9! -@uQkҦpUH+'B;O로7)S4n1,%8w74C =ͫrrqB?2n߀~"9yn3NEBy!;VZ NruVÖD<)ҥޚFn%Rޭ޿Zr>}*5Hty*F.2r^x+>'7݀gFtsL;i}.w>۹viM} _R~L1! xR%W7τKdW xeA*{~L\s)9DFp2  Qzr[}Яm ҎA7"@Dtn " D@7"@Dtn " D@7"].{lp ڛK'ڷ "ڙtvܗ\ @<p>Et?JG4>#"RQ^.{RKg եmvF6{*p){Vʭ裉>Yu ->,=JEq)*/zI[Ə/*|^;أ/жK;saI} #Hb/RI%y8}|>ťOIbG./"  z}=T xZ{GhrKjzѾ#E  kҞݠoe?>zKaK>omc7>=RʭZ<үuI۱+ ׻iRA;vxЋ'u1c]+$EڱELX.E@^an5mn7_-My$<23'&c1牨v~r>8_A7ܨs#.k Ά,篲H Bk!9h_4P[un " D@7"@Dtn " D@7"@Dtn " D@7"@Dtn " DF/vz1wn/ϝ[7榶v: n5v֡5+_Bэv @7"@Dtn " D@7"@Dtn " D@7"hOOo(tzpܡCGZpЍvM:ی%C{m_GՁn3Wn3FT%6 TI0)a+Oj}wzzn.~(cngzhWfTJsQe3:_;n+ÿbC_oT HRV7b#\'D{4uIki53v-cƺBnߤvxQQr\&MhS.4ؒR[8ݵLW7%MsÙcu1E^R7]G[m/澘{Ptlݰ}D:,GIM$z.nnb*^н[${nG?j5sh jk LIpƜ Jc&OͬIa\cԀ,&qٱ:qqI\>9Qy"cy5}=a7%?* ',mڋdi(6Z$:^>RحzژtЏ]'_='e %"5%iW IenBJ P.ޠSث_|i粴n(SP#RSܸ'h0ۉ#jYz;P79Ww3e+_+T7rs{[իG݈ !(ԐD\ݐg%rڴ" Uڦ΀s/\jYjklH.$I$`FuPҺ}S77 ڻcӡKiloSisHE@rfdޒBQfJ0m3"5%̍ҙ7r8< 5W7ԈԔp7SGc7jEܠ7wPuEn Ҧ\ju5u8FO-`9>nv6RýS:ysYwchk2)`3s6&/SMhL9g3 j?ifwbr ; Sլ"i(ᫍ]ÍbdhPquCșFsaf7AnLuu#+^jmF7: "i9T^J-㞚kr7r9M+ջg6fƱno7nd<\</f;.I"3`Z6渹yPo|B5c+ψQN7\.z>4q`Zk ҒP#JPS݀;q{\ݨUo_nDkW{W5_-[`Ai-]ٷ|m7.akO .5Wt:w)n3?+4+& :_77HCwy*hp4 j\.]>,g {֏ \HָHMeﰜ1C =]n89wt#Fq꒼:]3Ezh(XIdEޞ٦772 gM:9%b$Co4ɚ- lΌqK K4n]Oaߥ¸06gw$`NzAj@rXu?K._(̇*[xfCoYoh/94+E!Arz{Ip*.L4 c8 }bYUtO/ЎSo'n9kƼn{oǰeUݨ6JIot`aоGBs|T28J_<{f2dB'﯒! ;k~&IәrtxYvwjzzM H<^"ő1k7F)Iàg6M&k/ D U$2+]HBC̝nSpFDqV| .W7m|pMn50P)4ιqVaѤ)ۓfj_;gno_S$᭯vJA8&p&%0sg'vmwuln \9zn7JqShȻG[q޷ _{hnI'գo7!ߙǚ{l_>TG6+ .\_o>^Yswp.14 D@7"@Dtx7Z{u[[x n " D@7"@Dtn " D@7"@Dtn " D@7"@Dtn " D@7" nd^͓xu"^7ر)b"i)Aq?{\- nwDt4 C"Sw64ڍjIzf:,`;Z{S">m*kq~de]Blz%TiFM.L< s!^nM~_vƝf_?lZd2[_ ֽj|Yb↲4s`z6qC U9q+ЦUjm Y .`;\1YdTVX ˎl D&0'w+v.,KLVbak g7Pٚ1Mtùf!^-YطKz>CB5Z:0iuͲʲN7 PjHiEl5hF/]{oYT(j. l5 ԯ0_ ڹگ,B gp4 "b7L[K-[w}@2*I+eBpJolk4.bF ^(;MSptu+يj4$l.MkK&\eտuҙd|rpi>40Eu_8WU%&nv 88뎦T7Elp5 l,W9]Hotqd}t e`hSzH7?~el]ׅy|,獿/SJ}9?VY IDAT;}>ʌn}$ysoz: k$Ҙ*hd{_R\Ѹ!,/!G$=x+i=s{unv[q+:ѣ8n " D@7"@Dr#-l\x}E~o0ME^h1&`Ȧ{=>-쨽+FdF%q!3LCkmꆧ0( ˉ'I ry#p#Gsq6GzxȎUrnx p<䌹hJ#qD AFڎ]sFE2W'I'MVC0iҝ'A<ܗ{eyߜ6ȡn:y[ 8~%3U7:玜mr4ms$t1d0dt\"}%X@7a XXӍO#g`S'.P7̎Q$-BZyy(g+NӽʥN5j\(MBMZ;oH3Kȳwi~JwuߚN+nșs`LԽq9d9.ަR<9o0uш%߬~=2 =ۣe=JM,bmʪ^:1 βqI'`U`iL8#x^,ai&oO֝ stW 0C2J' 'j: LYۖH-oDKAz2΁s8H%Sf{"Ȼs8ALg (`*&*f7 yG#BsfG̉R@mxk4=Ԋ ; f 6+(|6eFxv=WtvR Or@K/[_MJ TL@@ dnu A/o7ͯInfz>icֿ nȀ"_ J?b:BZ's:aA@f2%x6qp;=QV!uN_`?R7(_"'&*|9p60-9.Ue >z|;-KOR@%'C^`-ݰ E:/ 8%́PllH:2bOq?)SF1ݨqO2)V6'D;}a XXqB~0$v>E΁P s}!:9:=_B&װ_v[EBP{~8qG+ڔFu7"솴{EU<4h@0#eɆSހ 7zC\ 5$:iP7> ½ 0Y2k@5F↳D,Zo<!7,}ͽid)o L+`$(ρ."%9WjNq A8p2HOP_Def&A( pI|9"fQ>E$́'%bA&(n8FSY(2k^t;؜4"Qg`܀dwJElvy`D2"rT}:&Iu%>Aֺ5.=lr2J'q YL_` qNw7UT 8M{s hvB0LW XY(tBdczkfW܀TGѩ'+i^z~*^oF+ђn mZԍS&r 7@Dtn " D@7"@Dtn " D@7"@D]:ҥ ^`i)>[m5R ur5c5 |sR<:s[&1G͎Fڂj=HJ6H~F4Q"9#55#|Rzɚ'Ik57Q8: F)Q$Qli4fRsy.č/:Jy'yfԲD=;[Vb܈\\E kqQ)$0kQ5 :tGYPZ?1TSHsM|cZ(?3x7.lQ!/P cI>Ci&' ]y$m67AO r5c=? @9PiS~ ɠCfa\~R|4Y9՚7Ŝ`cFhS"=)nD܀Y[ױ3GwcӍoָJ nj]ҨE[HLA%A?ԑ$Z7'AwE0q٨ɒeO\;-x7P-MV)PTP)z}sѻ3˳~?ۧzp#q)n+#;HV F9Cݘ"Y;ujݰ애@Z=6h`mT+)" 6 aM}Q1LgP#I t#7cx7 Ñ]SMǰꫬGǰeW7hO*a#deNr}QfߒQ2$$T~C,% }0Auw'k]ɛk"dFlhGF ި޺Z!O 77a@KqSдHҙlvh6¿` Bҁ1sy<ƺt\%0ؽDѸ!GP3G-sϜQf<6=[Zs緶C^h9Z7q7V@7Z ۃ@7"@Dtn " DD3Q➖{$ƞvtK]!,0-#&5>wFw7N+vwxW\Gjm({u27,7<-0+Lgf7=Y*:bi1mFVv}K]5US)p7XvRolK`n:XU.8}2(,}E> Z7zlYFPRVTd"h &#x`C=\7 aȢpic$zcHNڙ~DV򉬣y--M̦˶l-V~,_7< K˽B`XIѵ 4>_ōa_4`NmzEcFF:eYFG]zүm/M c'UfpiDʶCfx֟Wi=A/X. ([=\d U_1YT[sviwXe[v+?+*n4pW( `:#5uq !h+ WZ46h2N(p㮉[VqCF2l?l#[.*Lnkq qm7ݽf]M]ftkn&zFPtEFw2??CQ {khgiK!/*^vmeȅRm 6@tn " D@7"@Dfq/nAz4s禺z+:wVܘ;Ŋˠ.xߍ 6++JQ+[ ih7Z tCp"n\5RYl -ƚubILڳ-g2\_¹ Bk3ljHI&ؘ :@74fc+e(t Bjj2K+.#%t#b-PٙT5Xq9؇1RHյ*DtrfLNz"QF``՜ĚEl}ǓP-5.n55 GO2U%W^zhZoTpLR(Q fqɿ;@7>1;n/n).hPX?128K膖qcz͍)U<~+.oQ7jPv&Um6C}M!A M)ʙ);@7o }+f #jpb}DgM ^]_uCIw\hvTvŒWAiIn3T73+g~A t- Vr@?t t ;ZZ?!ZgJ-| K;Vw" K$cny9g2`#I1q#at$<}; BisR^=i -̍5 h)Z7zݚ5M2(FKRn  h)pn KAЂ hgKZG ̣ >+cA7,tn " D@7"@Dtn " D@7"@Dtn "ٍxkXդ n$}{t1ݍ?7r+l&i)BݰqjR~nՈDo`Fu7"L& q};玜%F/w:>zX`TtzJF^Yo6́P?u\{`SѲF +)B۔gC,->nO# 8 Xjҩ;e:qU+gG+COmXyDH̃8ayoE8\tvRyws!4C_th1_757LďRw=c`@B H}2hن6Yf. "ަY) ) /qJ7DR7 8싪n /&nX ) N%'݈y_$0>&Yh1m OzZ nr`١`S)Iz* zOV7=#Zxߍ5nj>M ۉܚ( 4AyܽA0A?1zseQ81l_ff ݡXuxSVt7:WnT쓩3 0NFF.4[^ӥM+s8N?oN@`snrӟTj9Q6tܼyrc2/AHùݰDHø(!Ms'r󺁴6"@Dtn " D@7"@Dtn " D@7"jߴH@Dtn " D@7"@D)izhHKnQYkzhHKn*O-D˻1zrTn~Quպ{dtn46Xp AnZލzI7Z{03v 0Ƶ7Sx֦dn"{ʍ'm5.7YWxb˻,˵V-+*$\[?|!4 1׌9]dy%]7ټK!wY\ U- FqQ)hAq!%XSX1KoS,;*( T4`FkzvπճNF.b華L3nMW̦0kQ$xS1._Vb b7= RA =up}Um= O/5L=1r IDATŦq9++3pr`9r(8N/ Άdnj֑ճ?lXՃA)3܍uwN-<\ GGI+zH_O܀Z:6ZR_kn ĨARreIʓA;I~c THzzрP܀:o; r{\WþPnN1[ ,čGeep#vQJl|3 fLߧ@(VawJd(BF#sU7BL0Im j!GI_{˳"zaaz]$t4/8r2M3H5Zƍ/ (OfNGȚ1zU ٸOR7b`ӌِ1)HA} =jvqc(ut-H)IcI#sU7-3jݰ[/I~EH> 35 7.Y92dY?d KziDM{_ԍd[\ؙ0nc0w,2lvvn,[GH~G]H67w RnL݈ i_GP7~?^G`ōF0u%˻3VmJnX.6%)ӠMqw){t#q! fz  m`m Ҧ$ѲRϥ>#mSM3m %Jnџ]J~w\HoI!|h@+nX!,k̭}pLrl7鋦@A]kE k0-[w7j?a/! e#\'Ngh_oQҺqQ[ER܀fߒQ- Ґe2M~Q'ʜ*VC׺ncr[\ć1WOæ/8l;oI-o'X.Ս;.J!_mV1,?^ mJfdDuC.rt V)K7@d`,IgZMI3tk(h7m\,r_֤DGi[1,毤oT휖sk >uFV@7 H˻=ލ++08'n " D@7"@Dtn " D@7"@Dtn " D@7"@Dtn " D@7";nw/հ~c(jo%7` ƺtfpF=i^lSf^W ehǦC%AOQf;Y?\"^FeöRԵWO''W礇7KY] V6MBmV⧧ȲJ@i\vcǘ΍\l%=FiP]1Gٴn4P7{bK(ӳ!mKw_DnfXcܐ-}KY@\0ȟb #n7ȢB]▥n@aN֍eVd%rRVIˍ:\M7+ntkI@@YĈ}P:+a4 {пU |pw"nNӌf-7FF!tC岜1.7x, r>vZ.кA͛>h2#vhi=3>e/v!/ҧ)sO6&-K._(=87ˍP6 |lJ@@Yf#_/ѳrm7"ȸp:Ǎ%z2ꆼD>\PmN){Uq+[YșfIàDYUn\#T[2.En D@77@7"@Dtn " Dh_ mﻁu D@7"@Dtn " D@7"@Dtn " D@7"@Dtn " D@7";nϳڒ/1ckcxō_3J'K5ҍ.Y}opu 7~_j7v%)maW@u߈09{46XVBT+k%7 j|1Kr3?m33Vs.A 7 >Y YKoZbLEHjp3Ujԋ,mIԠnD7ZGVK#5ʌU/q72+ 2;f`9-O|&~O:Vߓl.L `-"F؞ç g2:GX\|=JN<`n)Po=IE+1L"?tl\ESܠVA۔).99Y*o%8d]2yYR%QHe/Yik]҄ `(GY`%&r2XԦ@/*A<;,&"@C#2 ӂɒ SYlr;tQW}٠wvV enXmߵ1bQ7ЦH(t>4_R)f.cF+۫X{泄]QqcK)/Ȼ.YKhnlѺAڀϖib#f neן˨nԋ&Ejm"ڦ"Ti\IbmJ-C}㺒E%e,x31)YB׺pQYvTQ-+1ewAMÖDn7LٙS'goKf}L3}Ug2Nmv~/Le2(Q-0jS6"^M&}Q$i0>P9v=Ƞ6~cL,6;iʯoV܋: N-@@sqs=+-&T(~+MYQ:㞹[e'>ȭ=Z@{t{JםMi7*AfAvF}t}w)fӁ¸EiIfg[zzL;zf &q5|PT>I<|ě7kM΄sp {ZfKCyrm|j"h@ڲo:ЧMAnRno PAI@^o p}׫T0=6I @3N,͟ ܷ^ Kr.?YigU78rVOpBgnX%5LfCzg10,!M1/8hfQjG1?9mq@t.+Oeʪ*>$x @3N;m:dxtȵٖqx/aK'щZP.')dt>f*0A }Q>1׾k+6EEեm.I6LUgi9 ^6+W<h((fꨚU~PbP2zbEiZ f˒ydqnx uRpޒfeaBWOdU7Ml2+OV Qy#`nxYk%DW36V/tMEf^j4)OycQY %cpZ uz~Ϭ\t˴IKH'eZǍ2p¬ 28n " D@7"@Dtn " D@7"@Dtn " D@7"@Dtx7"mﻁu D@7"@Dtn " D@7"@Dtn " D@7"@Dt$7on~{ee n~_6Eܸ% r`v)[C x7o27Xq4ƻlkyy%3 x7n&6@7F=| Y龭n? Ggu>>oI膗1'quw:E.A6ҍ.ϘLB7Uo9vYw=Źc؍#vK'هt` | ~y9~J S7?\q=ٲl?L* pƛ?<ࣿF*o}OJy@>=W;ShS7 GFJxYw>cOd?.}!}'S_z"/:?'Ryy~{mʟ~Y-[c w2_pc{_>p/?Bbrxtpl{IKO nx׍hB+MBvQ _}=߸gy~K||`n'M}j~=܀6p$$P6,!^vc)>&727>I47dqI2:p?ӭL'6KMAСPڔfzß- UݍnxٍgdžuR7~\ϡ+O:|M -Q7>V̅n!3O`t Mh&7hB[ Rj-?6;~Ng! qꆳMQ |[76{zLFF'N>җm7ۏ F_BŐ(gIVGNI_Ǟ%G|?|c*nH_n|1+K/ gO/?ؚiin.Dَj4:hPǪxwRx7 FçΏP rþV{[܍!CCJ}.i;.t-Fai Mpw &py'͙Pi%<^ ͲctHܳO·I!|is1'Ͳ+IG^ե8䡕7|q9w9`t2lMyDoꜛ/7|E(1dthヒ2,=:eXVS7LfsfG)|vt@'ҭ|zegbGL:NpdM` #IN4q!7 :?uw1Q$i$LںH0D]ܸ-,}& ^rX@*& ۹]s9IapdMċfs2s2fG lNϮyoU G:|>1鷪+_&7^n?%E:6lISnw)ttԟa;`+s 7$^`9g)砞=n9  (IDATX;kÒq#@?M+#7By68iV) 6o O|0tn_ K5n[Hk裺uPuCC?LA^P|Vѹhh4 ~\|]tV7s薔YLqcQݍs>cܘbr&#Û6k6KC/ճ;_qFՖj^vn<2 By5AI1r mhtXjeTށ ZQ6Ro*]]4|~ǺgA?4)t'kpј5˕Vket!d,֮+Fc\ .GD6-=iD?_5]!Rw˛F ߯3 (\InZʍ@X_WqC]@R_djX\s)gk}~(3Z`K_gw.dQ/|6*kaVDo2 F}dO"qQ7=laUqB @̇}A_|y.[YHv+ƚrK7r5Ѓp^bkJ 6tU񴷐)"kZnu97!eH/O+s9V\a/(eЀqګ&3ؽ6ꌇy u tS rXSq5Lljq^PB27"#'c1.A\xGG,kf)rё+gt'z:q4  7fCi,GQd[ : ֏Ű1ƕAX]2\P&h2\| *V1JL Faz?-n͹G_si7અ737z#nN&u*VKVFFk -r0 7঩ۭ[I$nZ7Q{4èő&?.n\K!JЌqwG-7.;, Foqý ٬&7 $} ׆뾁FUrh]BM=n1uF"ll95:l^K lqK50LYqkc%t]U`vף n/-j֞T:PdrB'+dM~mM-W?J{mr_ >~rZdd&ݍ2ri.v&' ([ jOԯ R)xzh"1w,jm( ^@3P'UA74_ O'0qL氤IH q홾>h: 3;hM2s8JQ6u}R:OJj-u__Wwr s$Aҽ{?Iq"HYSNCD"AViZbukrYc@a-w˶ HCR1Eqd## $|zfU,.O-NCU^fmi( =Hr+s 3I'%ArA/τ8F椴.%I䲡cH=&NGF#:"ǔ9&Ē8mH ̭́ۡ{K!]MI(lQVcx{`ɔؒ}??Z>(j| dX6  W`[: _ނ0!]|z/[,# (֙YDآ' ́QQnM) ̱8|H'x˧0s.7*3򑤭JfsH̹ *rԠ1Ds`Sā4%.sԧfp)rڃ2ؔ@b4۔l4Sc}F1JJlC^b9!HUxV!'j/hȍmYdc6G=TJbhp$SPq%fM΃zS|;Ok+DŃVd $e^mũU搉}Zi)[?eĎfwZ63ѱGAȭ}͵Hp;Cޒ"ume[0Cuj`>8h |9h |9h |9h |9h |ԙ9..ƺ:Rԑ9e`Yݜ\js mWmx\أeY۶V h  {kM+yjzdlivT<,}oBΙB&c ?]ȏZMi6:̭&ƉQ{vMZ;=,}Nš9+[_4;u$/ Ym"k4ɪap;q09UjJ G<+n^~o߼Z5KŨsk]pVɞSfYKZ3g웋qs634F3>6:`R3%k ?rO;_tUV(z]91NWyg; k,ca'O@hQkqx89ԙcZ:de5dV^:+У%h w< YՁs,AsTSٯgN+󸎫v2Ǩ">Mq/M)Qas"Ju+%)kzQ 4Gch 46{jr{QZ*}c~xUv٥5Led:/#9h |9h |9h |9h |THDj7'2W 2VձQk[3'8V8d)X9h |9h9nw?Rin.Tʃc6BHr%TB̆^G!*HTF*O[91-tќ:BhvʯVI|b_[Wjs} s<[[鋚|~g 1>HLi!$yߙܳsO]:=y8=dD#>? xDC-I21iz =֬Ō=7'fhcql`Φ>i?tVǴ9 h]#*W{Phmb|v.xa51gˀ ׵ݧ(9)r{,$Nޟ>[;ޟ܍ma G0k&sߘsPOsaˀ o}};ܧn|BQҢgebn3yxiRiof},XNecyWm wSKmPJrCB9rɽ9u}c@:<50&(̀/vz&pɜC UuJZEn*NMbLʄ2}v7*fä3`atX{m^rFGQg{jɜCtΨ`VT:Z`*VCc܈thm͈3OhGk.픳%a~9Nm=0S@yJ9A'h٣\Xr{AKaKa"1~rzXFN#\8g!Sbfz"u ?\F1ѓ>a׊1g Y3zw0C|:D/k1`1 tޥ6|bbNpE#Vq4>sl'$ʘI=!EU' {&}ؠ 4R tVqJF+A1ϱKsdAv.2L/N%aiSË$*>h`O^%#6@G]2G]'Z 1&XD:*d2G38Uq29ǹ,G=ZX ׏FKh494>0t!Ŝ-P)D$ZSs:V2\@Jd2MuHvG*9ͱbNz}?18us ?ƜxiV991!. )sHaڛ]z¥O3Us#ޔ缫shLPs dq29D ]D!f^:Mu!ʜѦ+.j)Q >Q [aNf[iKlV cޅ%8]6''f䗫4A@s>4A@s>4A@s>4㿿}FwGIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-cloudflare/cloudflare-07.png000066400000000000000000000442501507671574500317350ustar00rootroot00000000000000PNG  IHDR;N[asBITOPLTEoGRńJ1qWa1=dqzzz'W˾D11ńQϢ=d˧߾W䅅ѤJ7Q11=^1fff@|\ў^Q˫333Gaؾ~^~j=1jDDdJ˄DDj17Q?[IŸq=7dѤjq=q^wd71l呋jW7wgJJJW117WqjqqWDQjײڦ}JJqǸ%%%7Jdglı^wf;z'w^q^w؏7W=7WRDWq~˗_؞~WDGlƫjDW=Q~q^1QնqathJqVVV^jwWD7wJqD1˫mYYwޫjjޫd17W77=1=qxx7/fWQ=qرd7Qwg=11пqJ򾸞dDQ沬^޾WQqDDD^QvvvыQ?瑾1Jѫw^7^З/=dJQD=1DwDqѸm}WmǸW7qQ7DJ~7aΫd=~wgw̑QDjw_Ť/VdJ7ѱW=1J~7DWбj=j帄' pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx |E!&$IDwo(V}B *Ë(*K/cʡYxAD@".X\<"+_Uwϕ@hoׯzp;uj*ɉ5qe\{u`j] x>[Eul=XzQU9TZK|sձ9^:o/1V WS8>)ė[W,IXm^Bu63R^=w b=rƶ-ImrDZpvx/-r ^'A\].*sQAbnMzUgdua^u4ybibƎxi(4˦+&uD6ce_a,UaO9"!F~W +7Zc_ {<%L;9ٗ|9bt e5p9]ld;+ e:AQz~q]9# ͔@HS#BǒRf]uF9NZM(Pr ]qFDZĒϫ-+Mo3 k+rDeffcX늙yӔC2JpS]NJ~Ǔke5G28[˽qܬ8(EU&4%>d"3s&6]9M(֎C$nVf赫rXW\FRsU:="Qi1Zk Տ;xxKoIeBGV 2Fs2m5Gq $tjkICqȀ buWI%x.O8IJVϱ(߾hE3[Q kP[j8BQ};a2A\I'na*U{E>u%Y1mN>r 6Kg*FJ,2s}Gh+ T2c"o}g+G|M֊WJ:UT%߽Lj%z8cqy=ךvp}兞㍞<ͱl#qzq,^k_?"` WKLbJ{(T|ԹGgH]>?_w9qߨQ?D[un(+{{˱gLGڞrKFqg9wMAD9d ry(U**~èЩ9OmXA{Yw},nNvq;ju@c^_pݤ+Mdjorq 4y졞^7~WnW$:׌s,$js+Y]~X\ y&Z cq MG cWŴl2v"eЕruWLt>PzJ8JX8&,N3Xqˢ?^vZ)(֧,z̔ވ8F^kTcg&#R&?8.koŽ*s;R0$&g^};)Yj[DX]njatZ@߷>]qcE)s;VJ`Vݱq YNlRu:ʝGX: AK+Z/<㌬ld+uGXph=Nh=4,yzɸ\q|x;oˆ{QޞV5Vp|:Ko ɱskWql~XYwqٙKWpjVTK9- 90~_M@CCCCCCCCCCCCCCCCCΝgy\)}oS_ίov'/oGYB ?WxgZ֗@i~nrı~4_𻙋;Z,9Eq:*M*mGqSiۜr8<scEu6SNJ`]2hd;4FvPNVc6lĭ\b,[1M "q9gDʪ|B;rM^/wr*M5'пkhOw#1&SWnr3x *ީXa_L]n1ָEgVq*6kt!!!!!!!!!!!!!!!!!!!!!q܋1 rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrY=x7bِ5kN%P)YOS(<~/3= KWMfs+i.ǐ*ic{D31\d![ ?q?dB,gGE4%HP@iBƯcZǕni2RxrڀtCz!m1t4̒Ww؜?[?'?3&y4777'6ڹ4՗,7Gk Z¿~pCS^rC8m`)|rO~ss2깥wsg+Na߸M/rm#wg}&t*Evnr,m2١qn6>|25GL(y i7SwRf Ǯ"{qcp7؃2L{v$q_TZ6As?\ @̤cUs{\}XE8.]/s{,lQIJ,NrNMcnK"w9N}n]xvezabDcWi c/ץE? o^mCjWJCMD~j)1GȘIt-xHx{+<} qXԼ;V=e6Z8|e0Fs#τSa >ܜcn}6sԀs#ӱwNvlwg6U^Mk\cg6ܩ:&.ybF?-c~ Z]Ecm؇_J!J=L0U8鹕>y3DT2Ux!co<9Q !!! 1w6މ-fNk1:QXw&4@$y`Uv| .1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~t"j97vL Ns_^jp;ʱST Iu ugdMgb^>름7+K6;b7RƗOW|H8)9asb^qxeq;:֔ O ?˂xtcBl6[;1lxsWtH;lŚVuqFӐϜ1֘|Ns74@ `~r˫ge'6q 俰݁fek4=I\9-W_f ferq"qBPv9._9^4:X j 22傶ybg=MsJfW*cMjl;l)жS( ux 5Mdc,V͒j9X\qZ 3 X9j֦ج3fl%u,8 >8 Yd,g,>Zg >1Ʋ]1?D cY(;cXx>hJ<fi(\ӌPeyC;$fC]Tlh}D-1!i"/XP'>&yIKl8.hb8.xcλ=68q(|wJWSXoT.B!X y}ם} ʰiYՖ,}N_pmT 4yԸt ;$7xj28?ejb'JP"89SDWj>w9>ҲVY0J~>w}6)aBD-a2Oz1>^ۏ_3 DYmk5\!Qf-uE ᰭ3dRB&wR]EÎKv5<բ^dr g_kW_KdeavҀf 3[8ɷNsI1 2kT@1q@8Yet/֐f]1\CV.k>u5k/w!\Y%FhcJW^˒_rՉLokcٹ2.gލ.Y>ĈfTuq*YV4t.H5Xܓ)[0XR[Dr'FNvp\xhaMfj:wբuWpN 86ǴudmSg]2sXO^..݊7NpK 91:%鹾KUW=#Jr/|m] MgDo_}]0d/@/=3OlF_qodP;e( 8^ ޘI1x*q;lKCGpz#Mru?םiWOf$\Bq\wMUǩ@ ?lK@>qֳbΏ%Lg|K-h_{q.9D딖^BR+ lXUy*-9ڼNnW99~uhupfrϹ+"Q:E++hWjolkO&'_r MN8XqjXILfޭjC:Eq#ni(f;gfBk^W3#rHh:oY+vuָ_ڹ8]:IOWAꂵuw끁6Wg8mM=编vDxz7qU6WKr&}-ܩ {͵sm-ܿckc~7 0cךEҹI+_ z$qp;8&rrrrrrrrrrr]#j!M.8cMުmOza:3TUŚSE`V),{M(PbқKq\|Q{(c' 4ީ6x'X lb:?Day<Ui>I !!!!!!!!!!!!!!!!!=J?dn/3ZyW^5}cs?mW2ܫ^߁7CvcCuzT+=S:׏ErK]G-W~XtWq|qKXu?םGT)@_|ا̠!eNExM ox\ A(`>kAxI}S@42PEfEÿ;Ys܎/nsq~Q ބT&~6fy CrPEkK-ܿcg%i۱;YZ93vYh.Rt/3苾:иcAqٟ7x~KpZ:cT* 1~1~1~1~1~1~1~1~tgмXCWN:桯Ŭ hzzDm&Isaj3=~Ygx_B xm"@1~1~*8h -戶c+1 s-ŀԸ)|biӗFk:f̺tծbJ[^vU :34#-YeYYX1wSJ(nO6Uj!P͏ٺbXr, ~Gs5 \l4Xo0/\`ڡݎSuImssǸ'> lV"pn67rV^m)ELͦf`l˾X8oljss@nDD":T2ةf lMUҨFq֥Jl`Ye*t܇Ye* ????9N;ѸL`iq-F' #Є<JN999999999999999999 vW*zU! ڎ8LOǙwo=tz(E[9Poڔc?QJP7-EϨ `0<\?J]I,s򦃛_89[^cvS^xWq<'c딍י{QCqz9~gچt\X _3z?a+bӌ7&9[:խG@ 7m1t@OGseR <ͭNj1V$v,Ӹ#H~f.)k۟Ntøf+r-m+W/3wq_wag~p],o?SW\~8ȦNu[J;&M-ȇ{:hWڜ.'&[731[x-/g+N=BGڳzniu-|p)qZ?)9P!_DZ |;&@\7:jن ںqj)H0GtM+'iSSݺbm2\NC:hs6?.s9LQ%.TgjM\ H7.i69t/kU &~Kᨨ'Vti\*4kSݺ<'U=+&Y}Wz*y\ "dZ^lsH7xo `\W:6ςOcm[djgx8e=g%7}'wm?>|w,y5k,'V. \,8>j큵BNb;]58L@-r"jEr\9ο Ǖ9;^eg+hv.D@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc38PԜ *!ƹ7" tU];6Gwc> TCrViq\]Xټɟ =-Tu`6b-'a㩥㎰8f<Yx$#IgX( ~n7cGX#Lj5-1',zCrs-6<f{ǃ^0aaxx©{\]ek/G؄M632Ȏ:f\W%vdj`Qiձi`BfSp:*|gxj=#q B ?D86?9D6hJHp'koɚq,'*kV6g6\2hu<3RF Lei!YNlP\d^p,/iǓ^U> Jg^RaVCPfmV]iJثuu"j:CrU=15ja(l7Zq(\㍊(r a%,+u±^y=qP1js!>4Nv AV 4 2B;V_]xmJH 9YgcZv fXc& x8ckrx 5Vkͻvbf`z#؀,x`/ UvE\d,.wD(8$W 44"&4@}G՗i4]v4h84D:FӀ!`C'DZe$m_ǀՕn~4_4#+Y9܎>,܎ʅǏ޽+w7K覇=t׍3-gdQQwv˔m?*/y؏cob.-aB>a;3#ǕXh'_7r\Kv}U7Ow1/?P=5CB<çNFw,y0+yGwj+WpP虙K$:N~]>ŕ,JG{J_VkuEGȦݷG.FEaGVOiΥW֏~Wd5;Bby޳VQ8.'yؙ7fejRwixc{csd6t\V`+LAq 8C?(n.ڊZfbWb'!}X)_ I Ev]JyoB.`jM/(pewDZh5`8ޫX8{bؙ燎Qc؏O:|stJqvͥ,npD⊯61X-CVCcvih\=v̕,<+I&DA6c rLke.s1+DQ6Glc%Rv{^oL".{{.-{\+z;\&Ɨc%߫>sruFi9ZU߱J4Ck<6^I{"e9'JG鑊zl;7404`hxk0 {%/Nʊ^OSpeJ鞎E)()2:ipĵΔ-=2:kcwzkc{ 7"Ն~),5Leވ](5M%~'Q }I[/5 71~1~1~1~1~1~1~1~1~1~1~1~1~1~*LP5&И6޳4pwڳ71VE*2+~:Az OOnj<qTwϋ?wFi†ib sbQɉAh86ykMH"VvJ?M~_:Fi”!\,v{_T+J|{c62gGb6*4Ny^rB{D:帡xv)xcsmEvick{Jx'j\]B6ѽaZ|P0~cks9/бV ThL+oٞ mc8+yew⏞ j1cDrC۱2*#ԡ$j|i'(TW)ms 5M4.\c6}qX6ش͵gPR*wvmDk@&VIǢd~{c6W<MJ1m7R UK%iIs y=JMpMT!5혨z1~1~1~1~1~1~1~1~1~1~1~1~1~*yqTw %rm 'ʟj叨 H(r|{Qs-2G8u n?{{w?1m/9I*.]mj'%6קc$&k%g'%*tX4=;.qri#FT55>rEccccccccccccccK u=z`<zv 6*vwJ{<W?|N['cqSg <6t?#Jnaԛҙ|L&9aġ8~594ʨ3CxD_w!D ЗOxYlvcܟ}(~.,^:n8tvOsG;󉇩Wr,Ǭ%D^1θ]p⎂PL&;M:֞D1vD&ẋqj1^Gvګd54asDr,Q8Nj+)?윝?=RUEEN5DwJ8A)v7saKg   ^}};ӆӆӆn??????????????'IDAT????????????????????:{;&ACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCoS1fyQ[UM էa[ٚϳ>Io.P&9jڥ?|5>Iov$Ƿ@Ma[]0-P.sA/z=&dzi>&9ʟW6~<=6ʝ܄%ܸJ_B] q0'{_{DN`ߞ~V_KoD}ØoG :~/Oo>G_y'*o_.ܮ}W6*%5xfG!zǕú(XK~sރ8= +h{^ U }z[}?=}rKpsx7y ({=`hr\:3.0TұW"Љc?8>! Q] j;lCǡo{ߒJ:Z4tռDqJ&^I}3z> *w>(. 8VVvvߗ (y *Ecwg^]V^#q?ǰd{]cXU տu}twUk2CX軴XEԵ'.UCX~XWK #ӿٸqұ'6lv2gG)_ JAv mm.j Q^Q\]6\b:Tک^-PαxH!űodw %?8i=CUEiy8SXʇӧmk~ۯ^Uw*fRpKlY Z ,-[-AKŠ`bRe1h)زlY Z ,-[-AKŠ`g9,>B]\XcHy6 *9\QUrZ[- U}1h[E4̪Ю̪c(MEIkRequ]\g: b0^Ԩo47w(7:D<͸(29-%* 67D%pe(MQ7my\i*>ps:돺}2Z[lG(`%Ca`kA7=i!^>bGk.g=*G!XR{Cp|# UvMxa"W)]kȕ+W2[dy5J5 W4S \+{?1r8}=tʓIkbP;Co~2آKV۵ z ^et&oyùqӏ]kTXg =FyD3`T~w&vs`AGKݨunjciѩ#5罬I$ uU=rp19/ًgGJ*95/烘{|lĠ3c{Meo21\h[`+ sШXee>1w6‰2ٲڬ5" "] Ə:p d@4\]%/[+Pƽeca 8s]u? b qMrA6qؔޣx`"?glm,f3F08A%4.k0$p9a zs̠&>bQֲfS>8Tcؒht(P(NP oCƊttq<20ׁ) xb}@Τa$18%цd1Q4~EG6`e6QGA}V=*-_"AOK'GzÜCƌ$30&`4<<oͧ`P7^>ri]G1Š%ӽvpX0_=8A),6dΠpĠk>yq1Q.`4g>5'L4Sۣ?ɭ1f`k.8Ȓ$=T"g?8-A(/9(k e G;׳N\i zZ>Q>fjO9z/`}L~1S X|  YOL`m)3=Щ7,A_H1HOY|18D{ 13N&3 Z$ed<g={ ㇹD>h qq I}|0Dڻ5vƦSq KSW ^ kosL@(wIє煍vh*{>Ҷ~O. Ul\,P8A%i:t`Ƃ\vanlw||iC6&hhAVSQi\L>R>/k\8<0)xMb\sDkTs^,fQQ hVyQ5P.(e76G2c^()/_@jyH;~'oh )γAg2(-d`J`?#5ȩ[&bF*>t܌k&mFTGdiߏSG"YF ;*SO8m'1$3jOK2g& MPA8#n27W$N\KU-4Iw\>;r$Sq1Me1Ht:]DQQ~$CrĠ8UΈ|4Φ)tZ3uxN"d0 Jk0; uh `$3H\$DL6?'OqG ҋAv(UĠG½i$}t]V<~ܻ*u@ɞjơ=eS y;}XN?}1V褘 lM%`<11>U=_XOD"}t=ۭE':]H{3SחRz2 ocRHҰÄ$Ay"W$"RR;qXj>nj/NX˼*GB|#M Ap|<}^||jᚑ|0ݫ]e1&؄3EӏTeX8hk k>kI^a8Sb6A vmרos5b}hH|;Ue3loknmUy"~'DŽk14 )b5G=fi݀G(ߤڝ{G(p ܝ6n|}n-G:ܒQ ,U~;v:7 h[ !!%lI(MFCND^nSey\YN=5o|XBG2olui^>\)6bTLly[k ԡ RUh{kΎ(:W8xl0g;lK*N D㡺}Co+2ظ]ۚj+3d{vl$5B4;tj!6q[+~_VgM{5>ںE?F$,W+"d;t?Bm4SEj7ǚDg7lԸhxQ~YQ/փy9z/oeJ~7j ,҈FM7M{>f72 %IǖD8q}YԆ{h"3xv*;:gcPX埽`\6|^6c:t]! ivV'_]+dPւ<Ơ8HSA`0Nݑϗ|]oV?=3<ۑmѶ;wO>,ܖuC l *[}1=DOBւ~|m `HVw͂4]pָ`džE)^@?,z/y?:A=WgV껶gCSdO[ LMfs?J!h1.tf#b޽]"~ 8&j)Z07 H߲-Mcq:آ$z[bpG!?56ԭ;58Vpʻ~Т8Aƒ@҆:ab&AׅhR{Î۲ C!MJc\f,|az/oQ^E ϣI `ofgd9Z861J;"*** F SSXj!{@up̥];ns" 8R"6]'1 U"[e:Ff)A$S+u:]fD YgUe7pq0iNGO? ӃZPW?i.3YnG6fzAL/wݚdqp r4'1)۫8O7XS;^2Dà`04<a vA a M.s|&i0ʸf4;IN\xfG K^akӞ7b:zM07ҁX"5D&`'j1V906>3M9~;5}$ǙDo_|urx|엚 hO8\ ʹ(*TJT$2kԣnP*\fУ胃gb:{ aet?f2 m߮NNjIf _:,g(,k!Eq8Pܧ6O*8$}(Ujmn I ݠc"$t?<^dqnvפ   M2*|+UJ@Ⲛ1$fME+@H件ȺqQ(_ Ms^Q pnVT'xJu Z‹ގVvN:~EitVf;#Uq1blm28fe= iZQV,zd2%V>]^گk@pXS6Ad=Y]U۲Aq>tST(zS StEEF܃ؽQ4zVc#!>d j>;_3)g$4WEw FTӼ\༟ w*bN>0@شaH4e.*.T^8n|!jo_+EWl8^B g=S.[]AZ/%j^ߔ=JZͯpCwۉЕNBvMY"|𻣦 H0i^sUaMV-Uv Z ,-[-AKŠ`bRe1h)زlY Z ,-[-AKŠ`bRe1h)زlY Z )[UIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-cloudflare/index.md000066400000000000000000000125621507671574500303150ustar00rootroot00000000000000--- title: Host on Cloudflare description: Host your site on Cloudflare. categories: [] keywords: [] --- Use these instructions to enable continuous deployment from a GitHub repository. The same general steps apply if you are using GitLab for version control. ## Prerequisites Please complete the following tasks before continuing: 1. [Create](https://dash.cloudflare.com/sign-up) a Cloudflare account 1. [Log in](https://dash.cloudflare.com/login) to your Cloudflare account 1. [Create](https://github.com/signup) a GitHub account 1. [Log in](https://github.com/login) to your GitHub account 1. [Create](https://github.com/new) a GitHub repository for your project 1. [Create](https://git-scm.com/docs/git-init) a local Git repository for your project with a [remote](https://git-scm.com/docs/git-remote) reference to your GitHub repository 1. Create a Hugo site within your local Git repository and test it with the `hugo server` command ## Procedure Step 1 : Create a `wrangler.toml` file in the root of your project. ```toml {file="wrangler.toml" copy=true} # Configure Cloudflare Worker name = "hosting-cloudflare-worker" compatibility_date = "2025-07-31" [build] command = "chmod a+x build.sh && ./build.sh" [assets] directory = "./public" not_found_handling = "404" ``` Step 2 : Create a `build.sh` file in the root of your project. ```sh {file="build.sh" copy=true} #!/usr/bin/env bash #------------------------------------------------------------------------------ # @file # Builds a Hugo site hosted on a Cloudflare Worker. # # The Cloudflare Worker automatically installs Node.js dependencies. #------------------------------------------------------------------------------ main() { DART_SASS_VERSION=1.90.0 GO_VERSION=1.24.5 HUGO_VERSION=0.148.2 NODE_VERSION=22.18.0 export TZ=Europe/Oslo # Install Dart Sass echo "Installing Dart Sass ${DART_SASS_VERSION}..." curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" export PATH="${HOME}/.local/dart-sass:${PATH}" # Install Go echo "Installing Go ${GO_VERSION}..." curl -sLJO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" tar -C "${HOME}/.local" -xf "go${GO_VERSION}.linux-amd64.tar.gz" rm "go${GO_VERSION}.linux-amd64.tar.gz" export PATH="${HOME}/.local/go/bin:${PATH}" # Install Hugo echo "Installing Hugo ${HUGO_VERSION}..." curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" mkdir "${HOME}/.local/hugo" tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" export PATH="${HOME}/.local/hugo:${PATH}" # Install Node.js echo "Installing Node.js ${NODE_VERSION}..." curl -sLJO "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" tar -C "${HOME}/.local" -xf "node-v${NODE_VERSION}-linux-x64.tar.xz" rm "node-v${NODE_VERSION}-linux-x64.tar.xz" export PATH="${HOME}/.local/node-v${NODE_VERSION}-linux-x64/bin:${PATH}" # Verify installations echo "Verifying installations..." echo Dart Sass: "$(sass --version)" echo Go: "$(go version)" echo Hugo: "$(hugo version)" echo Node.js: "$(node --version)" # Configure Git echo "Configuring Git..." git config core.quotepath false if [ "$(git rev-parse --is-shallow-repository)" = "true" ]; then git fetch --unshallow fi # Build the site echo "Building the site..." hugo --gc --minify } set -euo pipefail main "$@" ``` Step 3 : Commit the changes to your local Git repository and push to your GitHub repository. Step 4 : In the upper right corner of the Cloudflare [dashboard](https://dash.cloudflare.com/), press the **Add** button and select "Workers" from the drop down menu. ![screen capture](cloudflare-01.png) Step 5 : On the "Workers" tab, press the **Get started** button to the right of the "Import a repository" item. ![screen capture](cloudflare-02.png) Step 6 : Connect to GitHub. ![screen capture](cloudflare-03.png) Step 7 : Select the GitHub account where you want to install the Cloudflare Workers and Pages application. ![screen capture](cloudflare-04.png) Step 8 : Authorize the Cloudflare Workers and Pages application to access all repositories or only select repositories, then press the **Install & Authorize** button. ![screen capture](cloudflare-05.png) Your browser will be redirected to the Cloudflare dashboard. Step 9 : On the "Workers" tab, press the **Get started** button to the right of the "Import a repository" item. ![screen capture](cloudflare-02.png) Step 10 : Select the repository to import. ![screen capture](cloudflare-06.png) Step 11 : On the "Set up your application" screen, provide a project name, leave the build command blank, then press the **Create and deploy** button. ![screen capture](cloudflare-07.png) Step 12 : Wait for the site to build and deploy, then visit your site. ![screen capture](cloudflare-08.png) In the future, whenever you push a change from your local Git repository, Cloudflare will rebuild and deploy your site. gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-codeberg-pages.md000066400000000000000000000312371507671574500277350ustar00rootroot00000000000000--- title: Host on Codeberg Pages description: Host your site on Codeberg Pages. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-codeberg/] --- ## Assumptions - Working familiarity with [Git] for version control - Completion of the Hugo [Quick Start] - A [Codeberg account] - A Hugo website on your local machine that you are ready to publish [Codeberg account]: https://codeberg.org/user/login/ [Git]: https://git-scm.com/ [Quick Start]: /getting-started/quick-start/ Any and all mentions of `` refer to your actual Codeberg username and must be substituted accordingly. Likewise, `` represents your actual website name. ## BaseURL The [`baseURL`] in your site configuration must reflect the full URL provided by Codeberg Pages if using the default address (e.g. `https://.codeberg.page/`). If you want to use another domain, follow the instructions in the [custom domain section] of the official documentation. [`baseURL`]: /configuration/all/#baseurl [custom domain section]: https://docs.codeberg.org/codeberg-pages/using-custom-domain/ For more details regarding the URL of your deployed website, refer to Codeberg Pages' [quickstart instructions]. [quickstart instructions]: https://codeberg.page/ ## Manual deployment Create a public repository on your Codeberg account titled `pages` or create a branch of the same name in an existing public repository. Finally, push the contents of Hugo's output directory (by default, `public`) to it. Here's an example: ```sh # build the website hugo # access the output directory cd public # initialize new git repository git init # commit and push code to main branch git add . git commit -m "Initial commit" git remote add origin https://codeberg.org//pages.git git push -u origin main ``` ## Automated deployment You can automatically deploy your Hugo website to Codeberg using one of two methods: Woodpecker CI or Forgejo Actions. ### Woodpecker CI To use Codeberg's Woodpecker CI, you need to have or [request] access to it, as well as add a `.woodpecker.yaml` file in the root of your project. A template and additional instructions are available in the official [examples repository]. [request]: https://codeberg.org/Codeberg-e.V./requests/issues/new?template=ISSUE_TEMPLATE%2fWoodpecker-CI.yaml [examples repository]: https://codeberg.org/Codeberg-CI/examples/src/branch/main/Hugo/.woodpecker.yaml In this case, you must create a public repository on Codeberg (e.g. ``) and push your local project to it. Here's an example: ```sh # initialize new git repository git init # add /public directory to our .gitignore file echo "/public" >> .gitignore # commit and push code to main branch git add . git commit -m "Initial commit" git remote add origin https://codeberg.org//.git git push -u origin main ``` Your project will then be built and deployed by Codeberg's Woodpecker CI. ### Forgejo Actions The other way to deploy your website to Codeberg pages automatically is to make use of Forgejo Actions. Actions need a _runner_ to work, and Codeberg has [great documentation] on how to set one up yourself. However, Codeberg provides a [handful of humble runners] themselves (they say this feature is in "open alpha"), which actually seem powerful enough to build at least relatively simple websites. [great documentation]: https://docs.codeberg.org/ci/actions/ [handful of humble runners]: https://codeberg.org/actions/meta To deploy your website this way, you don't need to request any access. All you need to do is enable actions in your repository settings (see the documentation link above) and add a workflow configuration file, for example, `hugo.yaml`, to the `.forgejo/workflows/` directory in your website's source repository. Two examples of such a file are provided below. The first file should work for automatically building your website from the source branch (`main` in this case) and committing the result to the target branch (`pages`). Without changes, this file should make your built website accessible under `https://.codeberg.page//`: ```yaml {file=".forgejo/workflows/hugo.yaml" copy=true} name: Deploy Hugo site to Pages on: # Runs on pushes targeting the default branch push: branches: # If you want to build from a different branch, change it here. - main # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: build: # You can find the list of available runners on https://codeberg.org/actions/meta, or run one yourself. runs-on: codeberg-tiny-lazy container: # Specify "hugomods/hugo:exts" if you want to always use the latest version of Hugo for building. image: "hugomods/hugo:exts-0.148.0" steps: - name: Clone the repository uses: https://code.forgejo.org/actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Generate static files with Hugo env: # For maximum backward compatibility with Hugo modules HUGO_ENVIRONMENT: production HUGO_ENV: production run: | hugo \ --gc \ --minify - name: Upload generated files uses: https://code.forgejo.org/actions/upload-artifact@v3 with: name: Generated files path: public/ deploy: needs: [ build ] runs-on: codeberg-tiny-lazy steps: - name: Clone the repository uses: https://code.forgejo.org/actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Checkout the target branch and clean it up # If you want to commit to a branch other than "pages", change the two references below, as well as the reference in the last step. run: | git checkout pages || git switch --orphan pages && \ rm -Rfv $(ls -A | egrep -v '^(\.git|LICENSE)$') - name: Download generated files uses: https://code.forgejo.org/actions/download-artifact@v3 with: name: Generated files - name: Publish the website run: | git config user.email codeberg-ci && \ git config user.name "Codeberg CI" && \ git add . && \ git commit --allow-empty --message "Codeberg build for ${GITHUB_SHA}" && \ git push origin pages ``` The second file implements a more complex scenario: having your website sources in one repository and the resulting static website in another repository (in this case, `pages`). If you want Codeberg to make your website available at the root of your pages subdomain (`https://.codeberg.page/`), you have to push that website to the default branch of your repository named `pages`. Since this action involves more than one repository, it will require a bit more preparation: 1. Create the target repository. Name it `pages`. 1. Generate a new SSH key. Do not use any of your own SSH keys for this, but generate one for this specific task only. On Linux, BSD, and, likely, other operating systems, you can open a terminal emulator and run the following command to generate the key: ```shell ssh-keygen -f pagesbuild -P "" ``` This will generate two files in your current directory: `pagesbuild` (private key) and `pagesbuild.pub` (public key). 1. Add the newly generated public key as a deploy key to your `pages` repository: navigate to its Settings, click on "Deploy keys" in the left menu, click the "Add deploy key" button, give it a name (e.g. "Actions deploy key"), paste the contents of the **public** key file (`pagesbuild.pub`) to the Content field, tick the "Enable write access" checkbox, then submit the form. 1. Navigate back to your source repository settings, expand the "Actions" menu and click on "Secrets". Then click "Add Secret", enter "DEPLOY_KEY" as the secret name and paste the contents of the newly generated **private** key file (`pagesbuild`) into the Value field. 1. Navigate to the "Variables" submenu of the "Actions" menu and add the following variables: Name|Value :--|:-- `TARGET_REPOSITORY`|`/pages` `TARGET_BRANCH`|`main` (enter the default branch name of the `pages` repo here) `SSH_KNOWN_HOSTS`|(paste the output you get by running `ssh-keyscan codeberg.org` in the terminal) Once you've done all of the above, commit the following file to your repository as `.forgejo/workflows/hugo.yaml`. As you can see, the `deploy` job of this workflow is slightly different from the file above: ```yaml {file=".forgejo/workflows/hugo.yaml" copy=true} name: Deploy Hugo site to Pages on: # Runs on pushes targeting the default branch push: branches: # If you want to build from a different branch, change it here. - main # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: build: runs-on: codeberg-tiny-lazy container: # Specify "hugomods/hugo:exts" if you want to always use the latest version of Hugo for building. image: "hugomods/hugo:exts-0.148.0" steps: - name: Clone the repository uses: https://code.forgejo.org/actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Generate static files with Hugo env: # For maximum backward compatibility with Hugo modules HUGO_ENVIRONMENT: production HUGO_ENV: production run: | hugo \ --gc \ --minify \ --source ${PWD} \ --destination ${PWD}/public/ - name: Upload generated files uses: https://code.forgejo.org/actions/upload-artifact@v3 with: name: Generated files path: public/ deploy: needs: [ build ] runs-on: codeberg-tiny-lazy steps: - name: Clone the repository uses: https://code.forgejo.org/actions/checkout@v4 with: repository: ${{ vars.TARGET_REPOSITORY }} ref: ${{ vars.TARGET_BRANCH }} submodules: recursive fetch-depth: 0 ssh-key: ${{ secrets.DEPLOY_KEY }} ssh-known-hosts: ${{ vars.SSH_KNOWN_HOSTS }} - name: Remove all files run: | rm -Rfv $(ls -A | egrep -v '^(\.git|LICENSE)$') - name: Download generated files uses: https://code.forgejo.org/actions/download-artifact@v3 with: name: Generated files - name: Commit and push the website run: | git config user.email codeberg-ci && \ git config user.name "Codeberg CI" && \ git add -v . && \ git commit -v --allow-empty --message "Codeberg build for ${GITHUB_SHA}" && \ git push -v origin ${{ vars.TARGET_BRANCH }} ``` Once you commit one of the two files to your website source repository, you should see your first automated build firing up pretty soon. You can also trigger it manually by navigating to the **Actions** section of your repository web page, choosing **hugo.yaml** on the left and clicking on **Run workflow**. ## Forgejo Actions custom domains Codeberg Pages relies on a `.domains` file to identify allowed domains for a specific branch. It's important that this file is located in the root directory of your output repository or branch, rather than in the root directory of your source files. To achieve this, simply place your `.domains` file in the `static` directory of your project. When your site is built, it will be automatically copied to the `public` directory, which serves as the root of your output. When looking at the example `.forgejo/workflows/hugo.yaml`, you'll notice that the `upload-artifact@v3` action is used to upload the public directory to the deployment branch. By default, both `upload-artifact@v3` and `upload-artifact@v4` exclude all dot files from being uploaded unless you specifically tell them not to (you can find more details [here]). By default, upload-artifact@v3 and upload-artifact@v4 exclude all dot files from being uploaded. You can find more details on [how to handle dot files and other file patterns in the documentation](https://github.com/actions/upload-artifact/issues/602). To make sure dot files are included, modify your workflow like this: ```yaml {file=".forgejo/workflows/hugo.yaml" copy=true} - name: Upload generated files uses: https://code.forgejo.org/actions/upload-artifact@v3 with: name: Generated files path: public/ include-hidden-files: true # Prevents excluding .domains from uploading ``` If you're using a custom domain, it's important to update your workflow file accordingly. ## Other resources - [Codeberg Pages](https://codeberg.page/) - [Codeberg Pages official documentation](https://docs.codeberg.org/codeberg-pages/) gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-firebase.md000066400000000000000000000063531507671574500266470ustar00rootroot00000000000000--- title: Host on Firebase description: Host your site on Firebase. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-firebase/] --- ## Assumptions 1. You have an account with [Firebase][signup]. (If you don't, you can sign up for free using your Google account.) 1. You have completed the [Quick Start] or have a completed Hugo website ready for deployment. ## Initial setup Go to the [Firebase console][console] and create a new project (unless you already have a project). You will need to globally install `firebase-tools` (node.js): ```sh npm install -g firebase-tools ``` Log in to Firebase (setup on your local machine) using `firebase login`, which opens a browser where you can select your account. Use `firebase logout` in case you are already logged in but to the wrong account. ```sh firebase login ``` In the root of your Hugo project, initialize the Firebase project with the `firebase init` command: ```sh firebase init ``` From here: 1. Choose Hosting in the feature question 1. Choose the project you just set up 1. Accept the default for your database rules file 1. Accept the default for the publish directory, which is `public` 1. Choose "No" in the question if you are deploying a single-page app ## Using Firebase & GitHub CI/CD In new versions of Firebase, some other questions apply: 1. Set up automatic builds and deploys with GitHub? Here you will be redirected to login in your GitHub account to get permissions. Confirm. 1. For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository) Include the repository you will use in the format above (Account/Repo) Firebase script with retrieve credentials, create a service account you can later manage in your GitHub settings. 1. Set up the workflow to run a build script before every deploy? Here is your opportunity to include some commands before you run the deploy. 1. Set up automatic deployment to your site's live channel when a PR is merged? You can let in the default option (main) After that Firebase has been set in your project with [CI/CD](g). After that run: ```sh hugo && firebase deploy ``` With this you will have the app initialized manually. After that you can manage and fix your GitHub workflow from . Don't forget to update your static pages before push! ## Manual deploy To deploy your Hugo site, execute the `firebase deploy` command, and your site will be up in no time: ```sh hugo && firebase deploy ``` ## CI setup (other tools) You can generate a deploy token using ```sh firebase login:ci ``` You can also set up your CI and add the token to a private variable like `$FIREBASE_DEPLOY_TOKEN`. > [!note] > This is a private secret and it should not appear in a public repository. Make sure you understand your chosen CI and that it's not visible to others. You can then add a step in your build to do the deployment using the token: ```sh firebase deploy --token $FIREBASE_DEPLOY_TOKEN ``` ## Reference links - [Firebase CLI Reference](https://firebase.google.com/docs/cli/#administrative_commands) [console]: https://console.firebase.google.com/ [Quick Start]: /getting-started/quick-start/ [signup]: https://console.firebase.google.com/ gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-github-pages/000077500000000000000000000000001507671574500271155ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-github-pages/gh-pages-01.png000066400000000000000000000071351507671574500315420ustar00rootroot00000000000000PNG  IHDR'/sBITOPLTE$)/Ĭҹw$IQ5ra//F$)VȃN1ph|J/1B[ޡ?)/ܚVMrv;hQIӳ*cv*5{ϼMCOX$6po˃><;|=/rIveV$);֐hJB$W>}ͦć>/Ue57iMF^}vhȣtZnݷM)/ՊN$Cюh//Mei_Zk}ѭ̈́$)B|eO*)/K<;$)c15[φI$^7/t*QoXRrhyKvQ\ZMkio1eњ$=Q/UNSXtF^v=/8r_ݝvW\hvyvK/BrV?kQPZ-LN L%C&N nU룝[U]@Qt;?r9'r2,EpUT *C!@bP1T *C!@b |h߂wo(U)C &f0sЅLm[K`m1/9y 1]f"1"4xR %ZIРڳ @tia~w{}̘1>?|k_A%FcS,_.1 Fؗ͘TkFbz Bu!!fAٙ*J"߸w#v;1x[-7N~.,&,ƦX$]ЪT s;K$WA ̃<0n,frֻB f1_G͘qXNP#gLm132ٙj63- &/ftFRZ\p*T7cS̔cBPaP^`uz>ǜ5^}LYQS*X1b Vap{ŀ(5 f%Ơ޳qI@.+V=(=wQ|J˼8ϸ1a-ƦD'fL;_ƳS.oW54lۊ;T{GZ5nḅ !<Kr`_qi1=S;7f\Z|mvƂ qMT *C!@bP1T *C!@bP1T *C!@bP1DŔw2;/.ڲҙ5ENUos έfYo.Y{$_]2:e{#&fsU8]1uTOt^Ly ̕+|63#bbW3LƺӁ±B`. euU<-}|v9D|UZ7ZoШkg$ՋćH4aZUd, +1aFGG?M[NX"M?6$Fo+~N^?öe^NVNgʽfİw! >"CLn-1 V&\߯&xS#1AW=%ხ;Î~% @bP1T *C!@ ShӌP9F Pq sE( &Na>:48=)#&٣|8@TP1T S'v;8%l[P?HLMib
        {-{m[.'42ɷį'OGcnh<)A wՅ.g.~W Ā݄?NLNns72c 3^(뢕=05d $~ÅP bLP#$f!x"W"F Eċ3˹><9sx#7, Ġ){Lx%e ɛv/698$l}B$_18q\{„\ep(⹆brxk,fj>od`giڌLz$&6ٴ\[ew7{]pY10\ULI;wb\*# ?<A h~f-@A3!(}P}$WܼvJ/?)/v;1y8/IvϼM8QpMkiaeOBy{N$Je/p/M?Qc|=/FrޡpHد$)cܚVɽX*5{>M)/arV؟\H*)/|֐ZJr؃*QZFkNSX}hɾ'a=/$BoWI$=VenՍOK/[\݈Fkh=/1C\\5ɯ$);*O}H1//ɥ|J/e޴eOf۷vWo ${*""""""""""""""s)o&ޭ5,-(g;zUae~*0nti% F6zܹ5꾖 fNdT3$`~a 0g+:Y]/UiPt{gL?89I-Y;Z.0Wh&w/!'󜭂6#|Bbﰏ"#xDQ^_"eA(?Gp p0.5$g+>7z.T&e1sA4FʰY}/-n-NW'@s\ JNr{^v 'zrOYlgF޵o'ĩ:t;7jǷ-̛ù[T4TU]S~Eka8^x%GTt]{u`HUR% \WvN0xpACK30ԧB@?3ʼ< ēGh5@qm\/8 r9 )R'^r޽W`GsCAx8 @I$'X5 TK# <޺NNaN!i(lX*c`"q}R', & Ulҟ6 o1'v.f JL k@c+=ӥ*QO/'zKLaTM AK[6EUGXZa` e43B> - ̐c:j H79!ǐ>xW˾SY9ORFJ7;PFgjF:0TrRp:B*\I)Yy09tګ, |%h0,_,_e1'8}|s38ArG606PXucn싟u2cΨǾpPF2.#+`q|<X=!3__H Q*Q0;@đ/Z=0|KoB-#|og2`t4~z(!SQ+R FײT Z``S E E E E E E E E E E E E E E E E E E E E E E E E`h|m= pvz lmطT=uF̓Q=R!nm#)0ȋMMaf`FpwP=OM}MwFlLWKW/a[!c*GtYj0[|5wPUMVh%7hL`+]d`7#r8Qu 'IN2E>}Biax,J~(;j@(@QZ5u<.}| o2Fq$$߾m>a6M$Fw},Ɔ#R-6# `UR˪oH+E E E E E E E E E E0JmH- sIZrjy[% F2w hm Dpym͑UIJ{T{0W͑b`(b`(b`(b`(z]0jI,w羯ӵm9ӞUIes ցq&6KTF( &?5 w~L._ &6" )~zqS]o 0w~զ{j3_zf=O =:>+}zI*݈TF< L1jg9މKQ^XZ~l HSi9׏;/+|rwc5a  Z9`jv雡B;UTo#U&buLlcQHPL|b{'jFjjf`OarĔo5FصF)/vQ}͓vUqZclȓϾhD55*W}ϛwv샆$/hBԄ1y\x?Wprp;,17۝UůBGLa˔,̛n|dsvBvdaiaۊqުЃl5/ڹxnqijڕOSX8kýt|ad\aAEJ*^e//J/$)Vypfxʇ6;@ڠwk5$J*^ʑskXh\|tw{Ġ^<{7)/ס{ks|X\`ÎX)/$)<䴅ハ\nIMRkBl؁d|ȝ$o,^t՛|m7 :K  }f )87V\+O|wMHξ$i1 q" ޥg""vYJR0%y`G]Z/FLYwmMEaQW X,%y}5r>1`*ywM6Kj}V|3U^6BP<.{cܮzI={5$A$y,>o'p,?CEI ѿ[GoCWU, 0ftt)cd=ţwЉӢ _ȵl+ Ppb22"A*8 ÈLbW/>0${DJ88zF6z+׍G nx]%!Ƣm" IG gC}A~/g}z׿GmC|TIAiz~=Bqw±~?`^+ S8%=fڧ.sy&z-յxmxEW?=3?.x럑2iC3?>.;'O/=߶qW[ qCl9KФDOzZx3יl’ɡuDM.[dK肗qvkvϪ$z{v˧f=Uc`i%wL;^bC*)(T?ӛvpg&@/~[/hšX"-+(nzܝ#Ռ|xb_t ߼o'\@޹z^z|M>Zo8"0zDڬ^Rꭼw_?l(p@wהN3ec^ 7_.H z`^'"zir.zA[yݭ!=MS)ݳzWsYȾ#>*YOo^o늏1r GҦBTLq~pʇJ mDJ> K׭}z1NW0mYÛK2ħ2ů*3ʑ9g 8C֦~Qx1B$VJd5/P^bFݩo%ܻ.K'fq{gBh$+o+6xM6AAW ^p0np~K o-K45jtI&;o77$2e )\/S^pLz2e )\/S^pLz2e )\/S^pLz2eJH_szFOFEkNO(n#|Hzmm@/ϻ=z/wS"\/S^pLz2e )\/S^pLz2e kMb?d_}pIzgF{T/@oËa띇& \oV9;oԦgnLmvbH8ƢI"c7DNzxbx7z筿mɷҚFo k˹^WsU3hrxbW낓öb3wgͤףw\/^G;EgT^-Χw"ȫ^i+,tAiy|Oԗ?YRq 3ȷ^!|n߼31C"WpGb5\/',^pLz2e )\/S^pLz2e )\/S^pLz2eJrzNvc^pLz2e )\/S^pLz2e )\/Szt2k`zgL ,3_##.&ߊNYjD9a?[V(4 QReaUwdT74A~BZZ_V##Mf2gdz'# U3 192vmE%;PYj/fj޲CgGo :q$ XCf [1vmDrFW(/ttZoWw{ 7hvЉ(pћPB0!TW)dCbD(+FPNc.80 SoB}whZCGւbIDG {aM9`DQ`1PEh#@.LF*%94τ* 2 \  Mi=[! *aXabMZrlevp 0)Q>nIW// 7-mw=?wK/\0pMV6ڀr;  EAA#&z d +%hHIY R58z-^ZTc}Pޤ4_;A(aUwTJ3!f 2*twT! ]h>dPȽ2>M蕮aA(aO2Ҝ{U;!A.s!|"|za(bQ<,!1@/nB_/S L_АVSE![ [u;`(li0Td)[0@P%ڻP\O;C^k.ῥSd߅ꙶhPу7$MinpB? b )\/S^pLz2e%Irn. cMH.Y)hK9dmƙFM.K֦%H2KyenkWKދu DpWyW[ltô%*H\R-r2%҉bJ >Fjs" 5<]%zTZ*,VZ*IJu)&7hcJe/^*p**=ՆKx{qRfM4ʶz<.B`hSI!#]glI.Z/D [#$MoP;%Ͻ曘9Tr*dEFgEvXmV-iXI S=3,tLfBQ)VAGV$2YE,HJ7ӹ0 ]tgV ՘{{j@Zh?|A\lg* K %8J)/vlnsycn|pcgkv]M*W灾HLQˀk}sl}ad۝[k5XOSXKpݝЃyB[$/HJ/ܮv|\ayBoQ<\ilV{np[qdjks|Ϲ7}wqi7vrʏ^OaqْܵvaC pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx \Uּ5oL:,DtІۊ.Q1WKf.Qs-ml@%01r'0g+uwk]/ݚǺI}y d>09yysf)EB++++++++++++++++++!/A^*o[3ִy'CBšPoT",_ޕPzeAʰNJR7ES6󲰙VzW߅u# LfԼ9uT8.baYUoexG{aA~6V Hlw HB]_4:Ihw)Ҍu~7߰<9}:b|_=Wri|kpp_n}rvj?8` [ql6OzgQ2=T4hǔ#O$ zW Ax i_io*8ˑs&f~eon$m^÷0? =CO[OF >"݌y0ѻ2ud|虙RȽx~3hr$;nيQϮZŧ$6zv 1C-3k t@/͘5s3!ݠU }G޻fvh_]}wQ{k2F?>ia}YIZ@ܛoҳŽr{k[wqmm\Y{זr;R[o)>ȭ)~oAzkN%%yPPPPPPPPPPPPPPPPPPPPPPPPP.bKGUu|]ӑ^.;?ߵ!Vˑ?< CW/]ء;5]!hmMvA7u"[ͮFCzO,q[<;(=|Uk!bM ^k[Ŗg/Ob;-~qk>{PpS}ծWRՒ½cY]M5k|:u3;!XkDc {Wo\\oJ^c N ;tjC&lj)mܑOo999 4͂"yJ~.ZuSzr5j;F?7w!71xᄊz!jw^JubB뭙m&[ҒV ;޸Զz'셎\J~u񆾏6ԛϠkI[֤=@rӧ}B2 w[韷Ÿޛumr%CdǴĴ+mW]3XԌ-K*j U[?H8f5~q50ĿKmC[kpÛa[uZzT m6mSB~yWu- 8h`=̺ 5]V\3N}6uC|Nڏ=?@*϶h^>1mı/潯o`-rFVoYswk$i-TM~.[bݣ'hN=|Oމc~ )++++++++++++++++++++++++++zͿC:Gg,L k0ucku[!;[_ w;O'uS#W(W(W(W(W(W(W(W(W(W(W(W(W(W('#wS~ќVdzO/PO蔻<ޓFx:w)yJz;w^;)/+s rePzO5/->K !Cxr8H69}Mf 9 '>!/dJ|֧F\F^{>lm=OG>숏̐c""C/uſu^[=%$O7qvRhej>^X;}tg1ݙ>}9Oaev|m;uaw];~Xg5~ٯ7 b{EH%=wi°ǞIWpO>gj!wo !@Z:lE;.ߺ=za^Cz+ȊQf }d=ˮ]:}1O=X+PoW٠ƟT#':9\R+F-׫wAݙP/呟E\y-CL!/# Kz?*>"L4N"ũ_Tz9޿},Yr uf}J_\X7?N2CHf^99x W(W(W(W(W(W(W(W(W(W(W(W(W(W(W(W(W(W(W(W(W(ЋtNmw+iPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP:<ڞF~u&dE&Ġ.?WVNMK"(ӏޟ]gv!I.뵒اz$V@XS.Kr)WCKhҸHuYnz/ͱz&)>M<25tJH1]z $VWJtP~{ 7xv0<)%$G*u.RPeɚh +/" 1G:\R7uI~w= $ t$0SӔC,u$|h",$Q3 岣ɡ?"K :w0evg fhblR*\&it91O 6PVrzrX*`_x {vScYvJC| Qk" O]GSQ.(oU҉po& J D^3^*z$i"80Uz#Hntfh7k7hh&Y[4˽&w˦Yl:7tHjzw,"W2sP~JG'f[Mr&A9NZ@HDJ)-',z`4H/MbuA^)SIuI7V$xgYv-DN1ߑI${\gS=R> @R^>M2-/bAB$OӅzzzzzzzzzMI4wKlTLBu%+5jSr^q.jˣT$'%gZ"PER#;:H3u6mK& Š$zdl[z|3soiiU$g %ԝ7n>Q]-λѴH^^GYcA9WFnpnE뒩fU4H쉆_C*jpjkԩuctJ B6۵ l.$ JmvkV`( %4ڃ7@-yY #] H8 Y΄%"+ZŃ͢n]-uQQrJuNeP.RCcz!ٙLӘ 9zMIQ.c?Ӹ y9FkQ?AʳH.Eak"9lSdt(ySQY [\L/M&*;ShWng] -nЍ|ĞRzM%>w2Lo s ay65CA\H _5R{Nxi~c^3?IgvI-6ag!wK6y6Ⱦԫkѻ,^X 赦f%J=^;`k>Lxi/Z zyVP4M9y&SL'BJ.٫`ć6E34p%ʷd$Tn8׻ ARqϵ nPwK\ɢ`$dqOv3ތ,VEf { MΌ,z׭gnJћ5^jjsa p$ޜdٝYr+Fl̵j6_o"FZ[6FGE뵻4JFGd^w dkbbz57$.B(MTm4IF7J/;[ܛƸzǰ$M1ܫ繷dMND-0,((h$&J//OjY1uh&,X:Z*dWaVa.}36)b(ȡhhSş4E[y-*lwl3LFe烙Amv&?/qP6pzgT΃y/ Gl!>+05lLbW"A ^Pnsazۢ;ohh3U#|'P^ԩo1ZOdr$)ݮF $7pKo7Q?կG:BABABABABABABABABABABABABAB w+zZ2{~Vf# ~31AtPz)HOzzzzzzzzzzzzzzzzzzzgġIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-github-pages/gh-pages-05.png000066400000000000000000000112711507671574500315420ustar00rootroot00000000000000PNG  IHDRcޚ@sBITOPLTE$)/eǧD[ il5/K7hʇ*Bat|jisltcgk$I7vi5/39K޺$);>Vnli[jQD}$z޺7OUn,17D)/סV/$/;B洃h7VnjsΝ|$<$5{AEJ*c'Bl\HjϳKiyswHauSW[*V~ydoљX)/e|2絉27<×[$/naeihQIBb1Vݚx{$)U۷ZR>Rh7Iae|sܺp;wHLQ(|顝Rۣaʡݰ$Vos{rďnjr{*)/{rpayӼDc{{~nnm_}e//\5*5N۩ondy9=Ct$)HXB;v$/a*VXuꘚi5_\Nʭ롁|āeќ>V{X}D//ΰΊUycHLPUlz륧B/lj|eVHsvz習bktժ:ޡLBGLenwZcs).3䧴`zz pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6(IDATx|/V-E*u ˰V*t4Cq aEqj(#eqE6شXpؠ28`B$%.x96~M{͓o\d"ź1 8Dǀh c@4p 1 8Dǀh c@4p &رKEk۷K.ֶ1 PF^:'o|GzMCiOr,|wN}7)UߚNYSe_ٷ3p pT9iSU 6CI>Of:J.凥NxwK=O^*}J׭:j1Q+_({O9p 4w^UX{{y~C -|'b88*;GdY 6~q|\ovw~2)3d{؅`fߚoٿmz^<=X<%BcXsuʱǖ2c%v <CN4 pT?vGo}c?:v*%ƛ;7.O$Q;Xqe7;ءO1Vh9?1ǀh 1 8Dǀh c@4p 1 8Dǀh c@4p 1 8Dǀh c@4p 1 8Dǀh c@4p 1 8Dǀh c@4p 1 8Dǀh c@4p 1 8Dǀh c@4p 1 *短$T|p"v[a`g++>b&VǺsHir% 5-KN=v%8bXHb`|G^;;6?֭=:ةǴǴǴǴǴǴǴϱ'-:uc0?`Nc 09&*W tNc7S>V0*CBBUNaqOH~Ec ԧ1رqc!q$Dԓ'n!Lc eG2U#wA0 ڗW;F $\e0JNUPOVAN߸%\c.S)ܱI}1C6Wr_ifXoV.>ǔ\ggq,Zs J 9|-rί1|Q,ar>V.m)b9,0v.d:F`㤑̕sMr96_yEx8((z..1əw”1ל.yq/Ю)y5?8v,`D+SV[;w1:ywvyɡ1{(vsV=~^gKy(kIg<%v"9􁀾k.,kZbXňΨ~F~'Ա1kz|GQ~6~6~6~6~6~6~6~6~49ߛ[pLc\9 Ǵ9V"͌5+tv:1cc_8l<(BfctW|إ|IA<N|5(̧5_Qc@'jw3UmfMiK-|s*:y+1:f˲ƺusMsm6sĊȏd+MI62$d2;Ys͔\e9þ5LnvUTo׳9Vk[ɴm6ړ]YվbGil"17k=smd_xjWn2[;Xt%gnfc̚EOi-kb N@=LF3h`fM&Vc/bfaVKs] V 0X`WLڔw>"SDZ4l{MvYnj݌ ui,;%6Xhf5{[Gy5Smc#12^w<ɘǖ%3Q˖,VfK=IuJ.ߔEq;u̳cw4z+Պ;iɴv<kdN*f4CȬeYZ[_s;;X 8ZE۝tS'olIVq2_/5s7C:w11Z}f\F{ |aFW/n**uF:-/|]KbS1*vvyGAd:׏ٓ ׏y04V~c, +՘ 6ZWd(Ny.`cDͱ \Ĭ,blXj %бT*x>ou8f6r❢%]j2X(*2RrB{JS T`clfhkE-/DQcصu1dlQsb4nkuɘ,Fc%?\ʶXc G):LڮwEbޏeٍ^s\F{`ˌɁuz [ngKǐFujq@4nYg9c]Ip_9y~깮gYC\:\qլg"" &bǒjؓY)hJk3[_XM`L5X޹&4d_؏e"gkpL4p 118&8Dh ccpL4^{8=p=p,z{{X=acثǢ W1 8Dǀh c@4p 1 8Dǀh c@4p 1 8Dj[mIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-github-pages/index.md000066400000000000000000000162111507671574500305470ustar00rootroot00000000000000--- title: Host on GitHub Pages description: Host your site on GitHub Pages. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-github/] --- ## Types of sites There are three types of GitHub Pages sites: project, user, and organization. Project sites are connected to a specific project hosted on GitHub. User and organization sites are connected to a specific account on GitHub.com. > [!note] > See the [GitHub Pages documentation] to understand the requirements for repository ownership and naming. ## Prerequisites Please complete the following tasks before continuing: 1. [Create](https://github.com/signup) a GitHub account 1. [Log in](https://github.com/login) to your GitHub account 1. [Create](https://github.com/new) a GitHub repository for your project 1. [Create](https://git-scm.com/docs/git-init) a local Git repository for your project with a [remote](https://git-scm.com/docs/git-remote) reference to your GitHub repository 1. Create a Hugo site within your local Git repository and test it with the `hugo server` command 1. Commit the changes to your local Git repository and push to your GitHub repository ## Procedure Step 1 : Visit your GitHub repository. From the main menu choose **Settings** > **Pages**. In the center of your screen you will see this: ![screen capture](gh-pages-01.png) Change the **Source** to `GitHub Actions`. The change is immediate; you do not have to press a Save button. ![screen capture](gh-pages-02.png) Step 2 : In your site configuration, change the location of the image cache to the [`cacheDir`] as shown below: {{< code-toggle file=hugo copy=true >}} [caches.images] dir = ":cacheDir/images" {{< /code-toggle >}} See [configure file caches] for more information. Step 3 : Create a file named `hugo.yaml` in a directory named `.github/workflows`. ```text mkdir -p .github/workflows touch .github/workflows/hugo.yaml ``` Step 4 : Copy and paste the YAML below into the file you created. ```yaml {file=".github/workflows/hugo.yaml" copy=true} name: Build and deploy on: push: branches: - main workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: pages cancel-in-progress: false defaults: run: shell: bash jobs: build: runs-on: ubuntu-latest env: DART_SASS_VERSION: 1.90.0 GO_VERSION: 1.24.5 HUGO_VERSION: 0.148.2 NODE_VERSION: 22.18.0 TZ: Europe/Oslo steps: - name: Checkout uses: actions/checkout@v5 with: submodules: recursive fetch-depth: 0 - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache: false - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Setup Pages id: pages uses: actions/configure-pages@v5 - name: Create directory for user-specific executable files run: | mkdir -p "${HOME}/.local" - name: Install Dart Sass run: | curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" echo "${HOME}/.local/dart-sass" >> "${GITHUB_PATH}" - name: Install Hugo run: | curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" mkdir "${HOME}/.local/hugo" tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" echo "${HOME}/.local/hugo" >> "${GITHUB_PATH}" - name: Verify installations run: | echo "Dart Sass: $(sass --version)" echo "Go: $(go version)" echo "Hugo: $(hugo version)" echo "Node.js: $(node --version)" - name: Install Node.js dependencies run: | [[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true - name: Configure Git run: | git config core.quotepath false - name: Cache restore id: cache-restore uses: actions/cache/restore@v4 with: path: ${{ runner.temp }}/hugo_cache key: hugo-${{ github.run_id }} restore-keys: hugo- - name: Build the site run: | hugo \ --gc \ --minify \ --baseURL "${{ steps.pages.outputs.base_url }}/" \ --cacheDir "${{ runner.temp }}/hugo_cache" - name: Cache save id: cache-save uses: actions/cache/save@v4 with: path: ${{ runner.temp }}/hugo_cache key: ${{ steps.cache-restore.outputs.cache-primary-key }} - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: ./public deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 ``` Step 5 : Commit the changes to your local Git repository and push to your GitHub repository. Step 6 : From GitHub's main menu, choose **Actions**. You will see something like this: ![screen capture](gh-pages-03.png) Step 7 : When GitHub has finished building and deploying your site, the color of the status indicator will change to green. ![screen capture](gh-pages-04.png) Step 8 : Click on the commit message as shown above. Under the deploy step, you will see a link to your live site. ![screen capture](gh-pages-05.png) In the future, whenever you push a change from your local Git repository, GitHub Pages will rebuild and deploy your site. ## Customize the workflow The example workflow above includes this step, which typically takes 10‑15 seconds: ```yaml - name: Install Dart Sass run: sudo snap install dart-sass ``` You may remove this step if your site, themes, and modules do not transpile Sass to CSS using the [Dart Sass] transpiler. ## Other resources - [Learn more about GitHub Actions](https://docs.github.com/en/actions) - [Caching dependencies to speed up workflows](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows) - [Manage a custom domain for your GitHub Pages site](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages) [`cacheDir`]: /configuration/all/#cachedir [configure file caches]: /configuration/caches/ [Dart Sass]: /functions/css/sass/#dart-sass [GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-gitlab-pages.md000066400000000000000000000115511507671574500274220ustar00rootroot00000000000000--- title: Host on GitLab Pages description: Host your site on GitLab Pages. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-gitlab/] --- ## Assumptions - Working familiarity with Git for version control - Completion of the Hugo [Quick Start] - A [GitLab account](https://gitlab.com/users/sign_in) - A Hugo website on your local machine that you are ready to publish ## BaseURL The `baseURL` in your [site configuration](/configuration/) must reflect the full URL of your GitLab pages repository if you are using the default GitLab Pages URL (e.g., `https://.gitlab.io//`) and not a custom domain. ## Configure GitLab CI/CD Define your [CI/CD](g) jobs by creating a `.gitlab-ci.yml` file in the root of your project. ```yaml {file=".gitlab-ci.yml" copy=true} variables: # Application versions DART_SASS_VERSION: 1.90.0 HUGO_VERSION: 0.148.2 NODE_VERSION: 22.18.0 # Git GIT_DEPTH: 0 GIT_STRATEGY: clone GIT_SUBMODULE_STRATEGY: recursive # Time zone TZ: Europe/Oslo image: name: golang:1.24.5-bookworm pages: stage: deploy script: # Create directory for user-specific executable files - echo "Creating directory for user-specific executable files..." - mkdir -p "${HOME}/.local" # Install utilities - echo "Installing utilities..." - apt-get update - apt-get install -y brotli xz-utils zstd # Install Dart Sass - echo "Installing Dart Sass ${DART_SASS_VERSION}..." - curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - export PATH="${HOME}/.local/dart-sass:${PATH}" # Install Hugo - echo "Installing Hugo ${HUGO_VERSION}..." - curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - mkdir "${HOME}/.local/hugo" - tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - export PATH="${HOME}/.local/hugo:${PATH}" # Install Node.js - echo "Installing Node.js ${NODE_VERSION}..." - curl -sLJO "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" - tar -C "${HOME}/.local" -xf "node-v${NODE_VERSION}-linux-x64.tar.xz" - rm "node-v${NODE_VERSION}-linux-x64.tar.xz" - export PATH="${HOME}/.local/node-v${NODE_VERSION}-linux-x64/bin:${PATH}" # Verify installations - echo "Verifying installations..." - "echo Dart Sass: $(sass --version)" - "echo Go: $(go version)" - "echo Hugo: $(hugo version)" - "echo Node.js: $(node --version)" - "echo brotli: $(brotli --version)" - "echo xz: $(xz --version)" - "echo zstd: $(zstd --version)" # Install Node.js dependencies - echo "Installing Node.js dependencies..." - "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci --prefer-offline || true" # Configure Git - echo "Configuring Git..." - git config core.quotepath false # Build site - echo "Building site..." - hugo --gc --minify --baseURL "${CI_PAGES_URL}" # Compress published files - echo "Compressing published files..." - find public/ -type f -regextype posix-extended -regex '.+\.(css|html|js|json|mjs|svg|txt|xml)$' -print0 > files.txt - time xargs --null --max-procs=0 --max-args=1 brotli --quality=10 --force --keep < files.txt - time xargs --null --max-procs=0 --max-args=1 gzip -9 --force --keep < files.txt artifacts: paths: - public rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH ``` ## Push your Hugo website to GitLab Next, create a new repository on GitLab. It is not necessary to make the repository public. In addition, you might want to add `/public` to your .gitignore file, as there is no need to push compiled assets to GitLab or keep your output website in version control. ```sh # initialize new git repository git init # add /public directory to our .gitignore file echo "/public" >> .gitignore # commit and push code to master branch git add . git commit -m "Initial commit" git remote add origin https://gitlab.com/YourUsername/your-hugo-site.git git push -u origin master ``` ## Wait for your page to build That's it! You can now follow the CI agent building your page at `https://gitlab.com///pipelines`. After the build has passed, your new website is available at `https://.gitlab.io//`. ## Next steps GitLab supports using custom CNAME's and TLS certificates. For more details on GitLab Pages, see the [GitLab Pages setup documentation](https://about.gitlab.com/2016/04/07/gitlab-pages-setup/). [Quick Start]: /getting-started/quick-start/ gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/000077500000000000000000000000001507671574500262105ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/index.md000066400000000000000000000100461507671574500276420ustar00rootroot00000000000000--- title: Host on Netlify description: Host your site on Netlify. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-netlify/] --- Use these instructions to enable continuous deployment from a GitHub repository. The same general steps apply if you are using Azure DevOps, Bitbucket, or GitLab for version control. ## Prerequisites Please complete the following tasks before continuing: 1. [Create](https://app.netlify.com/signup) a Netlify account 1. [Log in](https://app.netlify.com/login) to your Netlify account 1. [Create](https://github.com/signup) a GitHub account 1. [Log in](https://github.com/login) to your GitHub account 1. [Create](https://github.com/new) a GitHub repository for your project 1. [Create](https://git-scm.com/docs/git-init) a local Git repository for your project with a [remote](https://git-scm.com/docs/git-remote) reference to your GitHub repository 1. Create a Hugo site within your local Git repository and test it with the `hugo server` command 1. Commit the changes to your local Git repository and push to your GitHub repository. ## Procedure Step 1 : Log in to your Netlify account, navigate to the Sites page, press the **Add new site** button, and choose "Import an existing project" from the dropdown menu. Step 2 : Select your deployment method. ![screen capture](netlify-step-02.png) Step 3 : Authorize Netlify to connect with your GitHub account by pressing the **Authorize Netlify** button. ![screen capture](netlify-step-03.png) Step 4 : Press the **Configure Netlify on GitHub** button. ![screen capture](netlify-step-04.png) Step 5 : Install the Netlify app by selecting your GitHub account. ![screen capture](netlify-step-05.png) Step 6 : Press the **Install** button. ![screen capture](netlify-step-06.png) Step 7 : Click on the site's repository from the list. ![screen capture](netlify-step-07.png) Step 8 : Set the site name and branch from which to deploy. ![screen capture](netlify-step-08.png) Step 9 : Define the build settings, press the **Add environment variables** button, then press the **New variable** button. ![screen capture](netlify-step-09.png) Step 10 : Create a new environment variable named `HUGO_VERSION` and set the value to the [latest version](https://github.com/gohugoio/hugo/releases/latest). ![screen capture](netlify-step-10.png) Step 11 : Press the "Deploy my new site" button at the bottom of the page. ![screen capture](netlify-step-11.png) Step 12 : At the bottom of the screen, wait for the deploy to complete, then click on the deploy log entry. ![screen capture](netlify-step-12.png) Step 13 : Press the **Open production deploy** button to view the live site. ![screen capture](netlify-step-13.png) ## Configuration file In the procedure above we configured our site using the Netlify user interface. Most site owners find it easier to use a configuration file checked into source control. Create a new file named `netlify.toml` in the root of your project directory. In its simplest form, the configuration file might look like this: ```toml {file="netlify.toml"} [build.environment] GO_VERSION = "1.24.5" HUGO_VERSION = "0.148.2" NODE_VERSION = "22.18.0" TZ = "Europe/Oslo" [build] publish = "public" command = """\ git config core.quotepath false && \ hugo --gc --minify --baseURL "${URL}" """ ``` If your site requires Dart Sass to transpile Sass to CSS, the configuration file should look something like this: ```toml {file="netlify.toml"} [build.environment] DART_SASS_VERSION = "1.90.0" GO_VERSION = "1.24.5" HUGO_VERSION = "0.148.2" NODE_VERSION = "22.18.0" TZ = "Europe/Oslo" [build] publish = "public" command = """\ curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \ tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \ rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \ export PATH="${HOME}/.local/dart-sass:${PATH}" && \ git config core.quotepath false && \ hugo --gc --minify --baseURL "${URL}" """ ``` gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-02.png000066400000000000000000000206521507671574500315650ustar00rootroot00000000000000PNG  IHDRl)6UsBITOPLTE`GFDS#b(8 ]`/̩qLœT*uL?/TC~C)O'śCaǠqD-Lxrst |5:J-!X=1쳴!bn5:D&=bQ4Dq~?uۢSj䳢qھn/ڰq=D&(#DmgXPC6*̾k'C!4oGXh`~X>T:>۩!*5L(jg!`abԆӰxqkPzTX>QٵC-Sw8Կ!jz{|~[5@zlnqr=qšbǀhM5:P!MZGJNzIALV'𨷿m,04Nez&=Tea#Awjޞ: pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx{|սWnDY;n$,1 X( ! Dty$-J0 SB!l\Q,7Qn W!7PA*xs7EÐ}3gfv9=?GFp7eC!@fl3P6( aʆ0eCL)6ۿԜO7RĬ#qzR?݇Us1ll\B/lfm?lwoY܄ 'ml._$_wl.q}e[gmMD6q}P]6lQ dlv"rs(olw۟A :zk} )nYj[jv[؆h۩l%/{&Gnias }&ҳ-lv&{Nw.BA8|o5_I'ϟu= NDwtk6eI/w:mMvoGsqض.K7+I[)rs!Gsޅ'Td˖Ka;~~TQufGyjN6۹{97W5m.S<']I62xTri<;PxVQRtI^-Yɓ'Y%#MCK}v>dSޭY~FTUse d![v[ٝΓ<Ǵ f7s'yvI- @|6ңYl[;uR!wwV˞p1?Vc %~ {%N'y,nv''I0%K-_I3'I0㧖u!_!{F#IAlnwSˆ4-P6( aʆ0eC!@fl3P6( aʆ0eC!@fl3P6( aʆ0eC!@fl3P6( aʆ0eC!@fl3P6( aʆ0eC!@fl3P6( aʆ0eC!@fl3P6zi?K6;րbYkHAV eii &'҈e{<ۀ@LNrc-7k 'OB#n3ʆʆ0eC!@fl_.SJ_ "[ᄮ5[WI||W9 5vbѧX*.@.(Z oEf=ML M2ݧV ^瞅?Sj9F]%P V!Tl%' N)[aU[yoْH'?ұW2GLP.lȮ4Aq&p>w R6 :{'(1e[X"mb-=A95S)o}8bY1vW PdayPA/Iq|,gT֤JuT+2#cnZ|a8:Q:ui_9:Z;BҊU~.W 8_)_ɒlBi~h8iN@DQI6)=ek d" , ,$dFe<@l%̚3l 8xeV=Lekv8nqΟél~Ĭ P=!Ͷ@/.㊪[ EղlEr(Yy0 }[-=Ԇ^] g\([ԋ'͓MK\ڻ^ەU ҡ# ?Wc$:dٴ>j,+}6AJӬlW+vq.˶?IMllthBWW=>cy\Zm-(JQlEzٔ= 8+#d#(m*'/CSʼnJ!lNR+ }RJcKM*l Emx/ن^62˖#d&ekrk{_k(ڼ><Ad}mNK]Į*nOq9*iO~|08lOJJAc-f"Q22C/KA% $.RoRP (DDL|u揕G7lA_&(SQ؜dي{/'Ͳl-iGM/<UGƱ`-Ed ȏHnl4h"> ֕\dm: X> &N]eYl_væ-dG[ԅ!cn]@ق|w V;:9$0lhPKjAe톟o?E6N d۔;r$nS䖜ﲟ-żB )}} l|&lAe$hⓖd-T+YCz C!f8omIzb@=qDr?Dŏ!)D)`GU.ni(h ԠluJMe hSk! 4C&N̚DZC) u o`ޙnO .ʷl4Xź e Ue٠_l|nx$[$qft7>9BQ5'SMt:@ `0~G]s*e:l֑oZfS\@rm@MVd;n7kکl94㠷 ^-wɆ̆J,sM*"˦@d[ vtȲyf}e _~Fs6'JQI8d*" h醗oJJ.}ڇ6%6 :v=h./ۇR٠>sJPx{KMeB$٪4ZᡮbNXw`@U~ .BK.ʓNٞU6,ɖ܇9E2-(\noH lȝtʸw7^>63w}*tР]Ƞ}۠F$[}P#HHw :w!O&fɲ{6^ QSS({L-f?s8uso>Mԭ{0-FNWnh4yj퉃$zi  zƯ  v6n'HcϢUІEjFi{:bQ`9Fd;$=֓ιyKGҌUBҚvKojn4>evO.xO=^-'OIvx >ͯR*X3k([Zr5K5dYb7e3@;awBh6%Ͳl+1( aʆ0eCapP$/2IKf'ͱd.oD),s˜6ebOfShIq禌pF@fl3P6( aʆ0eC!@fl3P6( aʆ0eCal˓MS}yޔ͎4/Mvu)H90ɏqP$/IH`ePeC!@fl~84ڃ<>Gl~Ƌ w+lWT.2#BV;cxKt?JBwF-ظU\Xלżwv!aG8Hx6V؆qr͞h)|lwtscӖ-yׇK\lCٔإe=emn;FvȖdnS"}^ eJovIh{"-['V$pڒFm:,(/&OIѓIv?vQ54A(jC##]̑I;w/FÚ*u)#ިO?(M/n uKtGc89TcRLi7';2.p{F2*۱q$l4φjl] l"ۭJlP~F ^%lpڀ:oԑ~F'ILL~8ޟF8[ >q9zymB4ܔlOl)9PeP )Q nr}8z6r7C Wmj"@-G߹wK6ePc=HeLpիI- MM=2פBwOM M'eٸ>;@M Ǔ:Wl,G|`df-`?Q'pS+hܮoʷ>y}Egh1eV Sg᥷l$2[$R:}ճAٮY2` 5Y i3&JUA ;Z!PV3\5T0*!^'Pvn!ily-ʃcʶ@¹ ug#k>P6l]`:Fdې;g]Ueqn}3sקB È g'9:%@grtCd[<-[ؑf#啌-F@ҡd}msD}z6r7C ClfIݺJؾ2) ZXS=qPgAKe M*gQ/vʣ(^>Ԯ? _LVF.|fmNz\5'yD*:.!#¤5ޡWs `u 1/˶xtSN`Jش%h/|8uԿFH"ibشܼk}4R%'eQ (HVqwϛ.|l~9s?dˁZjt_$(mJeV'c^P6( aʆ0 I_eB,, Nc,vcC9eN2'O Kv2ZAeC!@fl3P6( aʆ0eC!@fl3P6( a!u/O6eLZZxS&6;֐^bnb۵D|#P$?RB,'!9AB aʆ0eC!@}WJi?_'6S4_|;@.lY~v;:Ňa8>Ak>V,j?<7r ;necAbZe+VP[X_OA ([-}IC%,w~vg1a>_lW!B~.1*Կ-MK}k?u" ,J|}@LÑ&=- DW@bJ&{ΦpzSp['!h{?`@r h(DN;AW&JnI_~|)F&?Y&-iD2ݫ9AH+!4N*'eTРl~oT@ن+\Mmv8PǛ%rǮ,Td!)5)e6xrі\Q^6˅?%;T9ues4L..lKn![ 1#3X~RH/lY`2=q'#Zh<[AШ"Qy5E{F#D: ޲O&«e9>E҈l-  =D6qq{HE!e/i%=<[Ռ"/qm(z}n6 1á* w[z ?g@WEo_&+ԛ -#8c-cA٘ōŏl ÖhP6g aʆ0eCapP$/2IKf'ͱd_kLzČ7i$.sڔ>iL}bX3.ܔ1( aʆ0eC!@fl3P6( aʆ0eCSXIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-03.png000066400000000000000000000371301507671574500315650ustar00rootroot00000000000000PNG  IHDRlBJkQsBITOPLTE#.x-&Ee)(&#.}pjrz#Hο[em#;blvԔO&C;||y;ʨn=趙 iϥuWC30H`<|:3ruWlwÜzGo^OЬ߻թW#(oivD(n-U)qXv}zzimv;Ldأ>mǸ[evCW斃xI#(Ȝ뿓l=,l}D.zѩevgP}öiP݋'Kl0O%^ܖCxmv%=vⱋ7(l5ʿ^KB=Tlpiy-7IPn\olSBՌn&sWSd'rT=.}z50k吣ܝL(Κz4#.~|em~gizi7{&`vz^.mI`p]m#WͨvvezlUmvܚ=}Q.->k}qv-)]͆HNíu|0cI0.zhei;ZeP<񤩮«-Ȍ}W=9Q}nÉNrN^veݬlB*ONݬGrk->]X(c( pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx \TU'qkVjc?=`F2)j9"V)\1& s}+]M`Q2PC[\,^dM׬s6;|?ܹs9/wGg$AFd#A al0H6B$! F={0G/_\׳3}P N׶LY^s} 9]7%404:*/g5"Ex:|Zq?6s,/}y|\Qfclʲن 7ٲ9$ȯzn6:dz((dC={~vm?Vm{ﰹxQTyكlA휲q9M6F$ۭ=]eSx*us<%-Fwdkc*[Mפn"y"V?,/+e]j-_@Fw g Qc0h]?6:e(Pha y%"֗/sufJ}Hmр[cٖv~ܠV_Ud'jF_*v=*MMOnC Ǯ_jo->{p@N~[kLwfS㶬TǍyD.;w3-yh{CcIl޿n?8 e͓4;TwogS+'uoE/ϐTx"bS 8նl3"h٥e@Jw/ t]/Km7# ([T`YSl%z/|3ēo3x:(k=`90. W_]}OtS^=)n˲lnǍy\K{=`Z؀@vX='ov˲u?-ejq ȋmb7p=50+30ti;ʶYdʲ amڀ7%pv>I֮U[ k5w)J7hOUq'1P{M.f9p|yX|o2GŽ bTطҍQ^M\e܎v>(})Y4Fvɯ֙}R6˖+ |"tb {jN۹l$d20hCnm6J6PG/uŬwa#eQ|uy+Ay9UdkѨ9p|>>[!(euq-{qD_ɻb{ݖl y}8nG\:yCܦ/=.[{bc Kr̟fc۹lJlⲡ^322B.hKw]AOT5/@ e7a-^r)!LS\66ul݋Mƪsũl@;& _fY6GĽp/u PF̹Zdb9֕( 5rCj W uqA;j]yG@|JtU{bkgEs:vozܖިq,cdOF}Tٰ':=|.j;/vlr@g5&ow] a *NxGwԕ`S8۰]|x||7m*CٺZ>V|xa,gqd?>,vܞdS9υBRAroί/Nke,ĥ7lwB]_5ˆX{P&P{^n{Jc,~jT{e%ܮ~ATv޸V-ˮ j,UۓlƐIvF./pvުj4F{-+7^bꄇ9lF='u7^Oh|lbjsFɃ^t5 Fd#A al0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#AhlΉ-[~Ȉ@"^-?O!FHɵVE~jF֙VEbfm8ֺޜ5'B al0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#Aмl^==кl{ 'tOm4.[$NGE墼~./m RR"_H ^?wѶl%?f:yTF۲rPe 4 !u BҊ[QdZJp%EYm]tυiM˖/:߄J/rm,xRq297o8c/fm 669t B<g"ȑV7ܘ^Z[}eNnj]-J|ss C;+&SR|1vƲx-dlWrGJmiT͂eKrI?"/uɹAvK$)(!<%o2S~+C#aە&[0aP5vOFřLI@2^lwјc([P%dlVz۶̄iEƏBg!|Cyb#rV镦l_ݰU2'J^)gshZ|Ir1U 򨲛lQo)Sx+xa(06ğSܩ4c< Lm% `ԃ20^Ege CL ۠y-I:"/EIΎi&b2W"7.TsE60 Ȧ4ȸlQ)[_RRajU/~0?,M6#`]*& ̛۫(~R ^ET6)G Iwg26| mL:o4柖5I+=ݴ N;g*ߦ4C1V)aBF <ٸ*VM/,*ld.tm_Q,.U69C͛m2;jL[c5~|liENia.F\.A#' [7J53ϲHJR:eS7hU٨lNU6CF̶-wëf")î+ 1h`!vȝW}DH_rLO:{PvLFr ͼ0DA}KdݸV[8նK)x \`ЪlAH6THbWA*Ҙ\ma}1"1טVAC_\ecg* *7E=([Xd>F GhCݔ7 CC@Y1pV]621&hz٠ 묾W[UZ )X_q(C0*7 6lص!g65%=UhCwUՁ2d-aَTskG5bS@'ךث*ȍv޳̝kj@MVin7ls]U$+%|ʖے |I[}e߆mYzeÓY8CNh_la|N6G:PbٞzZu-|H6le5'H6oC|um-fnu6A3֠a,OMKe"} Iy5Tiғ!Ư%p<'ĕ'm4;3єSWIMN׭eqy!JkotOIȑiׇpW[w_8Ky^)}ySL8hذ-֐dJ 6%Ò0ėAJe@泄0^E~L 4щ8!NAYU6ҍCUdURc8_yAqxr'>瓟Mm2#iPrC;R (*>ؕ{0d+5sԥHa,uCOMm55o Ҷm5.j6 (l{iUgl :rT[.ms򾫳lpO2II 9SґeQBa)VQ[oDJNx'qU_ RW)YԈm$4Slji8](y( d2T柈HnjZ|'d)tGK-:߰C P$O9Xrj\ C#ltLK${od% ]e"{jhzmgȖ?H [:9Ŭ>Y Ti~MK4^qI]Fb S+%dB⋃tWg닫[*^a_IFӭ8wy"OU}UR"ӊ'5&buK5?DeRUᔅ$-dz;[0wF?!s32dctrEB"Hrx#[ouMn϶T fzyAA~tbyXdE6N E`9ЯLv VCw?Stkd"E?5H ;lr!)Q+1!`SB`Zlpf9l1?#bu 5@뒃lJS~kjGBPC8`Cޓɻ8!}ę`io k!=(Nȍ v-m)pYH0!Px-;Y3*l&%wSsv ټ{Ʌ8- ټII#A $! Fd#A ahZ6)+BEѴl+Me`FږhQl0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#A ah]~ Qh\DIJI ĠqNKK? - IzLKA۲푒(Bږ LWIT;4$@>3Vдl˥PIo̶M* w{ߨ$NY61F4-[_N Ya2 LaVQO-˖h2%2.BJmpD.d2ɓ_,z8?ޕyb>6Π3efCLg@ JS ,U<_'UrQ}E$hD˲퐮\]۶p>c3cYpÄ&H)L+D\d M)'nM+pw c A3EOR5ZO,[t_$Z$AJVyՖ8)Ag>bM0c [|r|rcU6e=m$/XQIg[*_EjAhX6dt5 npuButU_5$b:T}vDx6r6y)uwsIIvǂէR2f7pK\Q ;QY}EnHru˗wvgIIJԎy}[S|߾}iTGWFӭnٶ==1'N~&Vݠ!&$yGB I&&eKrq]`V*~k>8S :ObK:яN=6;B!e^A-IAHbm!ɳ-MQ_|C\l5@_lM|֩IfH I{ DsiAZ@Gd[.Fy|D6'{@4"`I>-6@i<>#l0H6B$! Fːm鹡sOSU۴:IRI&S'2-A$*nUj C m"=|_o^гA~XdM4-/DӾ}K $&} (Ͽw.Sd9pTFo]Q8{yW_ʭ/?T/n?y[g( /v/QN?*UdxͰrb6|q7nń?q<^MrT|_RZl# ͎[?Q6(3u;{7cz3 /]uHOjPd[ 亏P/Ǐ" c3ܮo"vr^|OXW&\eŐ$֛o Mm~>}#2Կ5%O=W@brhw'Ͷ`0"z4 k{?;Ty>K̷?Gߢf1`҄IDAT:ݼG`μ{/`Vto!+]{nA>qU{{mWA:<-voS6k mWŶ]SN@ݱm^{mS6"b;N{+hT6^kqoqYl,1G2:;q3臲^vNRRZ2+_~j-d-T|  jz &lO m@xsNe5A%.]c-jhT6yk_'=iY~)=PwSSUg%\@ms|?iSXCH{ݙK {1c\d=nя!Fe¦O\A6UN3wg m *۲.]nwMiw@\)d# VmI6D 04EF^?R*[ [{5{2l(&[+fzXno7\iϣjtZ戃P{ɶDm+[;{O, XxIU|bUR{w#t'x1๷@7@Et:bO\kKm-=']j m' O,U֓_.F6f0 K{<\4-My[jpR~I/-Ud;!}zu}kvC6[}^''7\H{CJ ,>I/d鿵xB4)G,WzkU41è**eku oŴJوd#A al0H6B$! M6i|J6eB al0H6B$! Fd#A al0H6B$!.[vOO^ƟDT?\㶜忪ykeYM/9'9+Y4`q&J mg h uY,3qݪє,Vf>/>-nsqI!jeQ_=<72+g OٺG2Tiʍh6("4J&ԃ΅Y皤H;(_M}&lbOlݾ}{/,Ec '}],꫇ڶVg) c&&la-hg./YْjQ ms$Tlv6gZ5m?,ayxkd4.gMb>ΔW{6bp!T #gh +DU4+$kh$DzfK: ]uK3q]e+$ç5wm\zvJT^==7oVv?M,-5f9oRڴ84,[~dsTS*L\W]X>7٦(2X{uʲ.JFՎevԴmdr(L\*PkUC{-R^==WFA|["+2FhMhY6cpmJ5j*L睲w.~U , >Rh[\vW;  `_ٺGeA߸r87l }ԀecW7 kWl@ zF˲1V-0HQfU@ႎķжl<%9XsVxJ7=q܂(/y-?I kdM/n |A6\#| ܹQ5o%|~[ mByٔȰAxi9Tk\^V7/b^H5g4)a,8 |^669Xxkl-4XNEby6}_ĥgbVRdm{HUqM_"m3Am C9kԗ˼asi7mγjQZѬl~Z)s 8lUV]N-9POFLH6B$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! &ecMnp+/vfZ#_<5~klM6x kA6XhZmu[SuG1_~+Xp[ҽ[g(q9ms.n}sƴ_~4p7cƵن?_e)y-v(a~lt?nK#: Gd1y =\wV+G?fQRȲJl>VF!F?#Է>4,ȇ p8Ë^>FEs؃ӛEM/6Ud@6eWF~5TѲl됣#\QdCP%=nu΋[{ބm6[J*M)E6"}C˲m^@Euemj #&&ۭW e/?Ffxl7LfͶj/#4lfO6:F~jQMz5nw A.7Q,&`nzÊ[{nV٠/BWФl͌3l)״DCUv8H6B$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#A al0H6B$!fhe4lFd#A al0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! VeK_~%[e]V{4)eV{Si\Zjn%]$6  VoHBTن3[Y{M,{ں;gwfY7C!dc׏MA*߹;<ߪo7]ӁlO~?ΧE͚r4/۸Ikt}z37gCS]d8ˆKu5C!Yse12Kmvd˺pcvNV[E?6!Cf?jSfM7a߁蟬P?FoX>ml3ewޛI4cɼC?}s))wnֺl? l= Lxwq۳wg~7}}n|||q~q3o}kfmlu![Es%OdlrM#S.Iu {}ǁYص7aE6 ]=neʽQ7ڎɆ?6%87\P{"[ud4.۸5fȉNɕkxPew`OIF54^m1C@5Ҁ]]2ոl ?OLe耇ݼٟ:dUo" Sl2GeY]Tٌׯv \d5M۲qPAI\pP Ȳa?zeϾƽoϞ7!wmܩz$[ƴ>_.s*,0Gn^v3~b Yl8a~o=Tٞ=cܫqzlC/1,;z(Vl>/Egɦ|@$FоlN7FixH6@5zCPO )_?R/]Hw)Z0>BmqcMU%Yk]jZ^eզlȬ#~[#j~VeZ U?bb~#:T˲-Fd#A al0H6B$! Fd7Wf9mY$2J~U-N`03ÖpK5+VaHRC7AіeWj)md5f>^}uN7z KHtz+U:1wU&XKKׇ燌yԔk}2V^Y}v&lpO~-uiœ yA~$4 tO5wSd+ IT$Xv}n5G&-V3Ffl,2<$kwZ箷*+ ļ-,Οoq:&g P^sBՓ,.Ua՗ TܚsHn a\` (탲%`UҕX/yc]cmقv3!d`(,vmȶ ڹ&g,[JUlS 篤v&LSZZZ2d˺X\lx  V?=rdقsl,.:,˪f m=) DlP EAٶU,.d*m6.V.Rl,- ZSE6hY+Ƽp WdSamPʣ6[JWen`VIlWd 1@ !K>˶m%ԏ l,Botlʺ2By7ԻOA!a܇l"\iIvBkdAۡy Fd#A al0Hq v o? j[Խ܈y-|&IViM~dk6%:ܱu1/l/3X >G:݉>>b7 Y_m8HӍ]`ur9'Ke *w %rd+鰙ul7fnP -V3$@5яI} :$|2I얯g~ň', uz~Ylϭhwԁzo ɲCYkbfl1&YAo90KVռwۨ<{k%mO-WڮY%`*bxo6~d-911e9LԱVاc;>8$[@52]e{‚A52&y_,i}z=M~*+tzfw@W_3,QjxXȲXdkkџ'89ׂʴ ٺF6Y"[fa-ԓFz~<$6['sua2G,Wٓ./A+zMlfs[%a.v>9fhUl27̂W}e TcokmLe!S]'&v!Fnb-:5{˽VfnQ-)h:bVL=X&$[Stq'JNl0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! FYemaќuNlOO$s3ʖI~~3F*ZeKOv[_ l5:DiZah/TZonwDia}nTxs:컖jnda+hz@>YZyXD"TZeTdt٢tAf߾a5:Pz4pدTxҹ;XydaETiYմL'g:>E4/tL>yZawP6NƗčj ctTZМ}ALPinwާyԝoԶΏPTN:>Yi~ti5:\~}niZjyA"Ģ VG)Td̙%ھDZR tkhf-^xT_jԗjĢQRTץ;Rnη~a~nj% "~jA^޻tTd~če۱Βj*ZИ~𔧹a6{c~ytȻfTI%NYZafYZoTia̳z巛dayعۣ]ti~նӌ켬kD٧~5:n'6;eRDƃJYidtfN<Ô4P & pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx |չ Fq!nMzE&i! 04 T7ELx @ HY $ Ԣ@(] R@^Wsμv7!%dwfΙٙ7ǦX t1E72r 6#*!il4H6B$! FHd#al%ΰWoKBMbra-DӫX#˕Хu]\P6gNc "!,5'd[`9sj~l5Xs-j.[IpRvٚoa VԤ5JVXQC#,r\UT̸zQ{-X˂Lj.=MnD-5>2B$$! ([o]Q^&nM.&ޤA69"t~ݞop"xc p} d% C{wl5$d&5䲷˹lq$};ȮD"jLV&5휋*vqLTW{$[i@mqJEۻisMkQ y'LV9Lvw`*tD{b?xez (!\߄V[S]a*ٳgIePek/\b0,f7v1e6v a n^x5۵m:4H D^Mwa/N^vp&<AXj`Q/lcl~Asˆ!&.BXP9L9exNE {s'm7AlZd&) G\#_d981rC6d+t/zLðEE \X@`ewj ÕX>jܛgﮑ?'CJͳ`;xeXr 9iH)XXh7PFTqhLll75D-ljwSTă -=yGun^MZ.26Q_C&Kdw ٔDF. bJ;qyV&kdfl?N(אM9]bo!dEzBȁuGv5fTty;+0n\ۧL^5C@6>FY'Tn?l4$&kdkf(R(Er`3lon}(?$Wd m\6n׫CT٦eO5Wڟe!lDOdbA_c@νf΋)\@ X2w+}g|>r} -TT"GV ^OEF~= Slڿײ/CKO@2v`,ÑƠKM:}=nBȏ:Q?N"U_ۿ+n9o{aۃ%NH͏Cm6yR,ߔ^lbRM>`\Xclp9%c]P?*;eC5せdGdfH!B6s<PF|=&dSʰtMf +%mMAA9֤mqpXf3`#5 :0`MVɦ@ň8$\brNLʆ\ݫ!F j}B&Ɇr+!۾dF;NeXV&c'eTzA m%_[}lg,teK=:zAza%{-$ٺyT4d?S;aMe[ѷ?+ }bIy:٫ ɍ> M\mڒmnO`dr"Z6}'-[Ul($uT䵾7c?ñii%m<k}6z%#"$pMvK}Hצ5Xݵ)K [f,0/GFh7I^.qP`-K^d^`0"wϺo/y̅ C ۷ȹqakB=:$uiSOr8Ӥm# % hð!wi)SiR|÷yėdžIw~.)ff%>08zAVGLj$ci`VCSl&mS@JZCŽ}|.ŒLS>b؜ɦf'vd{^ʄ-x!?kdK?5if+|Lc(s;'a91[|d'bYR6ihݺJ^5sv6KqҰ>ci")SzT~Ga[]wޗj%aqv{%߂-0qkB'f4 e=g,Q|뻗?ďUe9 hͽsbQPraE $e.eQg4(-⋰Z<-1Qu_._ҴlS~xmtO=txkFzM*RaֿO;Q_? }x;e>6q~6˿4nV&{Y%Y - k+ׯ~zORpڣJEYPuP73dm[8ȘS 1kɦO;:pϣ&u R||J5~}2 n\ X.[1 Zd޺Jr M h5Ue"ZCMU/$[4)fʩyPp6;|j)}᭖Yp.eQ1FwܡpR1}?p#yQ?:ZCwx:4iۈ3~$3?JBo ,8'1&ȵǯ3ܹd^ιmZ`vl YeS/yν}v۞"[n&,DfӡVdJ< Jxu_h()9ՏYvw)T)x8YK66 }:L%lc³P1c<1 \dcVBW9K;AMeˍw׋f(lbV "jfnteA&ER&>dls6a~m >,nVE?:ETO44gPm9=B;1OmɖY~r/&B7+__nUz%Vy.NȄ 6bAu⤬'dS<#?Y9 ۰}f+&lRMQ3sC:ݡId-GoV~Vިsnye~VJ;tQJXyPa؎NMJh u[ 3IFAӓ[So \8k+$aCR~;A6eXǵ> "6̔c1ÖL[gM-W<}]}A1ؼrDkl/&*O=)Nof!'z]4ۈ3] lS'[Їh?XBS @X|CP L *>~FHd#A il4H6BesM@$ڵLZBlx?wGEYQB. huK FHqxX,>vj]^+ݍ辽oc ~1g e TRcַqVOGZ^LdAxM |a^Ļ鱤"fKecƨ"sTQ:=~pp̡x)ܠs1k~S!4S .5*~Ppfee8̒8M6-TČrB6voE&V^L*;hLKM MGX!lj<'UuUi(SG1IM[˦sy֚lZ`)2b)BN5*JD+aY6 4!dS۶-z|cj|A6m.)ƬuEp9!biSOSwxOMa$[`]&[,P֤T]xN5f \jR9c6)#ٍ%u&D(!lj"[> }4 OO(M .5\YZlS֨I61pX&] ohj%寫}Nc.)ƬK6\WmO ^@otn\_e~F;o"w&3 <p2L65`ٿ41. 6_A65SlYȦٺ<y$&db)1ޓXRm5DX MD il4IB$! FHd#A iF!P۲-JTCO9NQΥrPDhhV\[S`NRKd[odM '\|S9p`'&?Zͣs͑'XJy`;Pe [ ݍ3'$BXGA&$_qmypGl2B.3Jm沵׾1, a^i '9c._)f 9gEJGxbe"M'06(!=^%"INp$Y: &HQo6E&9p؜+{ve;Ah@A~%3l,Gm/g68!a{[$l0`~BLըjjHrxik3 WUXh*[n^o Ngj8~կ9Ik.Z l&ٔR<ecSK6 "3pP]KMʱd~ŵPGQ?pVSaW Y& +lcɆ.U q-g,[=Ԃ7YKJk&Cr%ahg]C~}~U[1ڌz8+Fmh~4Gw)TQdŦ&A?}x V_LMe[23&[D~lNR dswꃬG8C[4MY܁yYg(/e&qL8{(/ 6HPgdQK#uO=:7jm[6lNt٠?7)k /->Ƽ?5?@f=%zI[.w lNRK~XTf`LAdSh} trh4pr񜁳"bklY(KapQ6TmE3~|hLV,%|'AZ.}Z~aJc##jɦt;,pQI*JGs~e0c`!,&۰-wIy隄%նl]-3kkM4vhISžr{< eVُXuKQXP?n$n H6B$! FHd#AhHD\w7,bQ9_w !jHX7jzAd3lJɥ~Md?mͻ:$\H6Ba1(NFAt < ooY6%pQ4|ec0Dl3R/Aa1E-ZЧ6]Q6v~1N̂>s OjQUOXLX7 5X ԧ 5ʖ|GQj>˦G`!joŜ0 5ST(rjY\FjyQLAF&xTkMuBX7\<=F}ӅdV޹k>/)|,FPAa1(g]OAzɦiu^>$|2lNjTa1(X(Oi2J7,=mticA'q_%b{+r F`h"S.T d8RLrDo 6(ϝo>whlDظ%,U0/Atj&CNܕ~bںklYO~NX!:X'Q? F I͓DC il4H6B$! FHd#A il4H6B$! FHd#A il4H6B$! FHd#A il4H6B$! FHd#A il4H6B$! FHd#A iX".QD}fX#V@Kd#5 i d`EMZs٨`klu}9l4H6B$! FHdK2IDAT+*Ԋ˅QC?l"*ju|U3}^m@tآ/#Ȫ7~o~`kۊȘ<~¨ -bJhYkY=M8Tߢ헆#;$Wِ:=c[1œ+"잱__omn`³s )⟱b{dd[e:㋂K4"@6ۭ;vT-V@jCFp5IX6\+Ƌן~Wؠ[lXxWAm;~w>8= ,]!<mOE6آvu{Xc]6X<{ۭQQp%]ӷh{;HuY"bvt6'|dM? Ey f~,ʆTP (lg ₞<üiU3Clef퍪Bgא'|5B=9:D,ۊy-U ڇd3Zk9=booQFύqբɶb+ܾr' ,&-9$jtQF~,8C`.7[[|ux riǎC[ {l; ̲ZU[{lFtbc}:1)ί"olXaO6 >_{x[*eՄ [\v2TٰqY;*c[&l1M6Aaf}g`ou٠SpYۏY.([]Ix?rJUWNM]ȶhق`!(L ٌ\//~l~#ko^M0 2 pxl]HEzneCƒMMt)bSE=Cfa([l{A p5Z_r KB 9La'Pʭm{e{gV7]w_we3Њ=k71$D "=[xKFqpů)[C|$v6QlQ6.tA;hU黢/Og .CTGcm6{xMO]]DJ/g wUEMofМl~Eڼ}{Mi48x~PFW? Gp/DBjYBk6a!nmgeo_QaT$! FHd#a!=XAAPsOy`]@z) aS FHd#A il4H6B$! FH+c }xIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-05.png000066400000000000000000000117511507671574500315700ustar00rootroot00000000000000PNG  IHDRssBITOPLTEݱ߬ݞռ۶ߥУЊЯ̟ї}Ûʖזë߿軒}}Ӓ߶߮훻гͮגco婮ѥ֥h\؞{ῡhߍ̙fȘzsĘ۔Orݻsϝz^궔vn[ٗiz͆Hzi̓NnNٳmmiOr~~zi~y;^zz^sgnGٹr;bi~uvzzn~uze~nzBύquvl.qnuqwqkastyrq;|OlUnqo_e.CiqzfZtlpemzlkodlwPn3r[l7fff[M,ly^gZbs|WMI`qYT}X;]\aQ((I[y-KWm&ZhQB ISd3X}wH>%QlE5-OsIKN^E5bD;9Ji%JP@;o6(Da7+;>I->dP7.=}G6.b)(,6O|%6c0q0BI#()c)O%)5;#(3#(#O,#(< #B#5#(("i pHYs  ZtEXtSoftwareAdobe Fireworks CS5q6IDATx흏_S9$.<1)HEV):N=3i놓>XOy` FI[-N;fGE˴>JJ˕aܛ$%pnn>W_Iνn~{8+p@@W \+p@@0# Ӑ':oS%wg8 ێ%7.U"p( `  ($rlbC?=?V(^h€C_uݎVNO7_DsCIwn_)B}W/v w>NJߵ5i-]u8RrpC7:YN

        7 dqy7 * ذBG_͢_ӍAQv2 )fpWA)u}+2X<ϱ O|$ ?37J./ r< }ttguuO.7fvݞD=*ֻ#dC Hg&14d$ RSǣW/[7 6^4WǝOM-]&L@:I@ZnR;s;/B ;;sg1CHC^ ?1ty! 7Tn5/ȇ^. 0߁+p@@W \+JplM)|~cZPk]<[[~NYa?I-<'}#i׷cݿ~5f2O$Q )3+/(+$P>i.Y3Z&HU,ov y#B& {vGͩI!(K@Q8fIqB͕4dYPZ(A;yh-="Y*,c_N:2iWp U9&;X.M|3-ISl*tL_d鯞uK^3wTY IȜ,B+ (5U"$պ=}HlH}BaFU=R_U4q]y$r@+ )Z$BVi{:r1ʩu0d,㚠U%kHy&$"TOہ%@2ҤOTU&ץ8 ɚ٢ m}@XIѿ#dւ݉$w[5KL Xؠk v!53^@t4]h_CUvN5dOwO =tRxz'R ʥ# PPŨ+eC }EG Hr[HrbpZ68>ɈZ8鴜*l3}UapbgS <8+q4eWVd/ӑ IYQQaqvX u(&Dͪr+o L=XM "vhX&u uPJr5)˶xݓפkhʖxP yrE-)v D@t( hk"vOqF֭RY~GLN# Rł_Bs)X;ŶݨVh 6/U *{ @E뎬IdcPWk؎9(M@u^6&K06[N L@sPbD҈6dfMPӎYFYTRK =rG:tX0$bƬ.`xBl : ^%Nl6&,jd?^bfmXgDl3Ebyc7EW.hmnZ,P^k|!6.`>q$$}-Hp9;|yJ9M@np[Ci)N4hnpDq:\:O +l[eySǁ.$&nc+n W \+p@@W \+p@@W \+p@@W W 3#xG@!W4x_ W aO1x# _X FSSH,|u6 \+p@@W z7ꔋ x3FB[W\$;Δ(;yx* ϰ;ʕc6/s8`䑩;V\[NӱfUTf L@3[,hx O%P7ڱh4li=?!wɰ.P"O+Z-/vص'5@/ЇY@y ]J=vXَͭ'e*`kksee;.onm>R@ HSŲ,D[}Pj1[jNs\/2-f鏅e'O޸q_! Qce'nv]뻷0MUXL殓׾e_)#|R? n2hk9sO V&20@ʽ>'m޾T&r0=Ag6`Pd+`~}}_EE|ۗbIR? k򁀀+p@@W \+p@@Wd"`,Sd"Z|W \+p@@W \+pE qS>'rP'..+:NI@Y}j0PT8&ݳo4]uRgq> !0o4%rz<4?zSM[u:ðOErQ<#Y,s) 9xQ)6XrF5E.T"Od٬)> x8T%O5-v/Pe?\MK  R&mFY":-ϫr)FGTÆDZ( w>}WneϲGHr]:zI?8EȺĐU}o ذ.,0`jQu{] Nyx֭]}|869?jx;&`ґqR'ĐUP k`';!  .YHsž&`j甂#V;O?=~4#?tK΃v Bx0mҋ,Y vE<6IL0^B0 =6 ӰPUفlDdx$ 90QvpkM>7 C\auTs֢34$ t+ 8fqnDttnkY![ua v=S@]?,F%A%4жK\~|,ǒ'4C ~?8pSֱXLd*}I>+k2+ /% p@@W \+pC@,v[_@/4"^cbuN|ao>/3x%0 >6)_꽳Rᥬ@@W \`YIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-06.png000066400000000000000000000572751507671574500316040ustar00rootroot00000000000000PNG  IHDRl"nosBITOPLTE㶲ݻܚڭՌծ̶̙ήȜx𿓝ȱ濓x”pqݤܳγӱzdܬxρ刼£ސlӣ}eWΟ~ʚۚUx̙fʖz^ꤕ܆ǤC]^ssؙs5󭑇ՊINziNJ]z5o^n˕PݏH̀Bx4]߲|]Vj^xx}zz|dzv{|WIxzڃz|z5uWxvnt{xz^=q}zn5l0]I>BB7x;><->d&>x->WW0]e).I0.W)I-7B&0xW).B)]&0]P#<&)k4).I#.4#B-#W4#(&#B&#.#(x pHYs  ZtEXtSoftwareAdobe Fireworks CS5q6 IDATx \Q ѩ89[Ri8Ku~Кt3e,wKhjZf)Ng9WsޗϹ^~Q~y} {ʆHeC!@il4P6D(" ʆHeC!@iBن/=zE|-CS~ow]?aؿ?!ۂ@jzy{R1(uv_,Ѹolx|}_!;dnO_~Z_׊@j1vG&wY6oחV+[dMCcOg2h=j[Չ~nNWXiYͻ> ~ߝ3 Cn7E~h^v?1fBZͲcǗ5~KOڎu#Ͷ;#//f|1Lw3F9d{2#pǡgZloiB+[s69̩T@ 0. a}ⲽçfzZܺhͲMbk? IǙ]ziu|zC4im_zdwC1_3zdӦ tЊeه |=jy]3!ᰮ]CZlԩB6SMP4pV,u6Xf+z![6-d ~MGlOOۿ_ۻ(_+4WG5`Vd[n%mds Lc@|[uv&>xKټ(M^hocmmlv`R׶YZ~E똍QlUu捲e)٘Y[Ff#^޷ L YǪ/P6̵n;Qu6!냶҇n%4U}w齒N_A]eKSjqġNQm4Wc;21{O\꒍~r*oylbyirb#ym'fۙ~^͖ŷnl௿_ll7ټ[lzeL_C>/P6;9듳{ wܦ3TX*)H1ԚNW2eOѾ@.n|feMg+O9x6F1\׎=Հ Fg;6@ޒEրNG7:[pP1e^䐭fNeo5ɾNt:жh8[ N`:M6-wJs"78&ǰevasO*SXHe]ߨMwQiGFu#:]i\dˤn2k(W 0\C-NR E Zr+_-+fEôfi (uIVlxZl]s@moɲ,h9k=u'mTN$3 WLW7zH`-#f1Nݨ6`@@J٧|T ?hi dz9-8dbe;He[5m4m?ٶf'hY'*o0mٜe3 f|i-۱h#&ԲqKեfOeֲ1i?~O`{%:ll0,\.8ctlt֡b5dNɦm^C6 ,NnhKm115ڎޤomLMv-P;n} v͇OG7*n!DɾLXJjPPL=*ۑ]߻Ig{AClۻ]hu zNbPm9'?A7A'e+($W_mۖe˛VV;Lš,Gz,/XIP7|7^W|h{WIП޾Tl2r~St$FP1^e^Yu7i7JX;1b1a?=48{7vR8,2|% Et>9=Kh.ATľDzz[Ϻ?t&s Gh8.foD^>2zS|hjTjh_fP@L%ײI;-.W]SVL6Ќ&el'6e2mPēVa\R N-ˍZXA 2w~j֔L6eOi&Aߣe\O߇nVpeyĭe=48fҲvٜ2}'F3ce0~o/X^Oه&y3ؘCcZ)]ǘMf?vJHS3ٔτTVdm ?֯1]r=Ju1˜ ޫ`PHݤ9ay &L*[Ѫ.sx6!:l !.끶l>X wj9҃g3>3TXzb712,\Vh맷l'>[S#ٚSgl4P6D-Y6Dgl4P6D(" ʆHeC!@il4P6D(" i!4ِʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!Зl~u˴d9uPQwЕl=֧o= E6f˖ /Гl=~K G~l[lM5FIC:o(}ߜzL.r1ЪFm[PX]>*g2TCtJsgl}ٶnTUVmH>i'ݞQ|K\ek9Fm] W_Ts=ܰ쓶х14wߣ+2m̡iE_zۜJ8шd{[-ۻؚjmlt o}KJ3mR`KO42BSm ,ijǞYЍj+}* hE'ZWJG$gJߒBZ#ؚ}[66Lh Tk>k^jUj;iEC+l#3p Vg["p-z,Q-"W6^IWxQ9ٶQ9H:lm۶ז-Ӷ(zwmRYcdX[a˦8:_nrБl뚍>L9֒-W>vsnܓ1oWٶVl֝ja?*V}ЁzL-H7fz"Ӷ|Wt~zbJ mX Ǫ.V$r2Гlup[N/rЕl->/\h! ʆHeC!@il4-[ԶY2mO2=ЫvFեѹ[=+&x|K:N!tзl@B~&a4v]ȖVwai];vn*nsuQlp([d[0!oIlʳ6,a>sS=Vysj+szhh~{NdoՎ.^ jy7m1Y_} <=iɄEkmG3zM˛aT&Ϙ3GU[;|Mmyft_a$Q+A(8mTNs>$wɁC(/y5i֠m{!o?[$X~*@-9T07o.xA!aS2'ye8NG~^~:J= Y95*ZlF(2@5AJ34}l.cx." %e-a}296j]"r%-0Vqez?$3F۴)z3d8e6 z2mꚫlN~?!l8#k<:J=#tsT6Gwe!vkMPL!7l:n+MRd{wIClQy۰5wِʆHeC!@il4t/[v" fL+jRr+QK&ֺeS&%{LkdXo5el=MJ6YkR.vs#.4I/LYbX!"xG#{i/C?dyLK&l[|/ެE+cI߾iWݶAhHS. V{]|౶7AhZz-iIIĖ.GA E"U읶h}szyMQyɤ62 AlrۧQЍo6\-*T>kkzRo{йl^scXL]{xXGdHA5D0cQluup´6hk.$>X[!Ybfb勳:bn&Bh[&WXY{d/Kxa .[ǺYP"&BmVu tD*<*6B+*o};^:oCp~ t.BIR=F׵eeoes^{XzG˦/>fsDԲ:pi٘lܶ&-Elv KGѩ(ʦ |e #2R$£m 6,C6UG#{X "-B1\66X7jQQ0l>l$}Ot\7[-2d%ct1vx-mU֮2}6 LGdI'czcBZm6A:tt G^5dm/ds #sETplGFo2!U4n o3]rޟ |D.(Ġwm.ְdt㪺}~?jy! ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@iKыf/x]PQv&;_Gry_mJ9H؀,^N'2v<E܍lZ!EG_j,d ٶ-èM\'JmⳬZ>Ge#=l-;~\ofcTzeYk8PtW'G"*g2T&F*l3ITz$r1FF6AG`9`xakCSjeԦl[ ˶m]hd6N8YB=Z^zW_ļWOR3:TXH5]huz|/}6]R*,/t (_Us$-Qo[k9iHEaa/Ŗ>th>n̴>[OM4糦v>St5x{CV IDAT͸)cGVލlwlM>ٳjL֜j#jyC7:ź!L>Aȴ-)r޳2ёlxMK.Lb( 6.uʶ ayRͶ?Sckltu@.%<t,CRlU'Q&Š'@΁L6H\9zht$[]-z7ºQ,7Eb"}imzlMٓ e;/s^m8ɴڱ~2kkMrvYoiɄEuirh[T_NΒ^ZA6%_}4~XѹlQft>,٠S&)cǑ5AcY{e-G EfX1 z?C#?7KIӆdA^'+O[X50 ! +ڱBsIa`UTA$a!=:Oذi"e<6 Z}M;5v@4!W֌G9vNV&h[cQ'SzUltIEʴaMw Zz 8waUy,m}pFoѢEmyLXvxq†{Qo@G;m 7D0m!Mdu1mHF)|Wb/-ҕNDM[CҖ5) l Xֲʱ25\lL6Q'+3 +Ѳ-TŰ\Z6*i؋66yPsc~J)٘KG!?Zcd3!0(xx!D1ֆ cn-,c,-+nlT6KoZ-ty;^3GZh~S2龁zmZO#lt30\;_^r?:9ټ|cyt+T6m r򞃞F~b6 Qjg҇!ʴjpt.lM>xAl.ܑl>s=il.܉lQyak(" ʆHeC!@i^< Y;$&KY~M\=e)X+u@/WgZ5& X)P댿u{"Hdsx (ce~.MiJG6֩e[եJ'm} J!Pyme#4I[*' Q&Zp$P.KD?y/ݪGLzon8a؊D֬Y7VPN-bǞ=f,'^#RQJ*6sAXV. iT $^N糆.9 FC?xl Se`]"ST21Q 4g -h{7c"kҹCL*oq+@Om 6!aԺt%ײ{dZ柽RK l"6+̟tc5Gnai0УxVY1.Y U[R@3(F 1L:i,o:-SE醽ӳ;m@kq-[i45ZG6mֲ ـj\cёl!;!w [M:X؞1{%ޞ@c)t6e cڒŘMPR_d#UF2J z^lbͣX$sa]r ϒWIQXݯnỏxmI7zy{..e ޫk$jFdK4 kzl4%AV1eg#= ϒ*-;}Alfۉ4BR*w&\#gk$z 8ʆHeCBeCʆHeC!@il4P6D(" ʆHeC!Бl=B3 il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D("f/[SWg=ӛ Fq۝Ne_mxuPE.Gd};ɦ[_*I'>P+QJ7f eNW ga-(<{ghDfO~:Tج١smZW:n:\mZ#kJco;2Уx:}g_'"D,7(6Y݄/e%5<|sdԉY^&,Ko\V̟&)bh:)*aix?٨h\cݨoe\Zs (dDC,x7pl<.T"!_Ɉ6^e-mdb OT+qZ Tzcvejl FVnt(FٵO1P&*i=T utPaBލgh(t%`v#6fY*g٦@6GeIFl% @l\㲁\3Q-Xvκ[ТR*ancT5h& _ pqDaϮ|lEIA LB/Q B BY2Lě};niYq-ګ0 Y >!(fVC䕁ޙA>oԗSM:Ě~[VIKn]d dCZ (" ʆHeC!@il4P6D(" ʆHeC!@il4P6D("f/ۭP\ {-u74\lS։֍"7T;Nek#2vMzӝH`m[ϥq|MtG=Pٚ2zLUnd4M/[m9?5)[c,{ٹF\J[>8]ky˙$ᰙ>Fƹ{Ֆ~ }LM9I\F=X&j6D{ jgIu1fs`̖Ray[ ޶SWru >A,{%$\(/9kOT3$\÷cթ8Y6W)P\MX޲M,siCl9n$(.lA8J~^ٻ59ǂ|r*)i!]&x {Gqa."Y^v5&՚h.gbF3m3}KNEpa?-ăe@G,4ShwlbrSnsqlǍ.q~PlӾsidNb&nj=P&RLEB6(7wٚ2lqt0vujO1WcTl2R;g@BF<"dm]{ Ma/k~`ϲ_6ngtUu楣Ss\wY&a~Ι8wLȃXqcB68S>XGHeC! ʆHeC!@il4P6D-K6aHciYeif4ٲ*׾AtzR{/%gZe_KFFs<5ϒW'RR8Z23l k v L@6_KFtFsJ\Ajipג\dsl.LQ_KFtF3 _0RT6ǯ%#:F8*O u _JVkkɈh.i tоKdhMY'_KFE3r@il4lH3eC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!БlH ȆtP6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHCG%–[O{T[I׆4VL=YK6[+HZl.ѩl ͶObZ>G%%NUhZ>oH&$'#/Br$nTtj*hK֍e/ =*CBvGqѷ֬&D)8nd Eje!ICCwmNti_l":oġ7c8ӈNe-.%śEPdOމ8eL -S5HNv Ne|dhKS7b&JMm>e#}첑TN,Ռ&{+bkwvtbx#=~ZuѲTՖ {l?pjٴ8Бl,F_>Y!q ^ Yc{Rl}{WⵥMȦmޟgJ6QYs<J0:v9>A-*ryq=eB.eڒF'(ɦmGιnI6Ph/sÑͶi>[ lsrі>.md3 ʆHeCdC/(" ʆHeC!@il4t$[8B _o}~z~71DVo7(O߾} zu]qLe{Ij<[SCb9uwVz$ݪl;l^w@[y{7mrZkk=#o?9֖ w80<e;y˹sTӴL˖mǍ IC|`&L#)(N^WCK| w9cH$xVE}; aw"vD |}4],8f42@%4(?t>jm; e،c _Cv<Q>]X=:ֆNWI )[a_ftx|7##Zv:qBo%wq>O&܃/J6î [$\{8NѫŻk \::rًkן>_CQl"-XU.Ao'p@z2%i%ݫ|81߰kc7  ǎ1٠Emt {dk_~ksGPX ZKqw?1B66:&ҔUۃ\d5ls,eM紒ɶx| 7BNhlcMgX[w}Nec%h-u?)41^شK7I,yVx}5˦do-Y6*8?Q%,ެeoe ҩe룵 V9ZH]Vjېgu8t x⿝ؿB)Z6g"][eˆVr__4ei-[r( 6~dGS%y7}FN1At@̿nN- ߇hͷ8&Zګ8{e5^Vb1?"l{b@ؿ:lv`3cB6Q:5zczp5_C1c6#?y OG8ɦdyPÄlD ,{.uyo0?]Ǧ[ge,[yWՑ󡂃w02*̪kzj #d;N+eSF=fWFӈC6)U:6.3WUlU^Ng!vsg^OݤQKCak s!dı c"e_77&nmh{{f"[j[lSI4 {/imU͎f!2@il4P6D(" Fa`8^a;8Tw8.q7a-]cb(~p=:{T4n'DNdk4aPk).4D;8M~ds ?W|Ο|y.+bu:B"Lf7*c[>9D E N8}ʼn/yԝb.wʳ})E-ΣL6<ywc߽|jʃfفyjqls'R,{ȱwrtX1liO|/Rv㔑B6wKP>W&c?n! z!x&~__,4&$N8v[҄ǂ; 7lmxԥ@.y<>޶)XF^fe~'.p;y|l >\`~*>Z#RԨq 9!,C}iQڍNW\&'RvSU\n %!P.t+$s,HHݧcuy*%7; Y6)QБLtM k"ږ4 \5'`w}xhY,l_f^0Jq 9WxKܭ} 9Dhv:Bxzw izP6M(& ɆtP6D(" ʆHeC!@il4P6D:'Bh!- ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeCe |ش5p1ǣ|CD/6Jjl"4$S_7ٶ3{|i ۝5 5j6|ʨD+ ">~<-jMf;nK[*z5lǍC -CDW*)[mf4sR/V^ ˎb1R],P ݳd=Ϯݬx4ϙ$0%jx%γd_pb'ٴiȚ|2,k~uaE|rwK)#/Zc?jS_fd 5ލ1[Z{E;ɵT\'B6b`5!G/nP1 -J82F0$eSZ6 E -_%cgb?j*v{Wv(i \} aW[ȚRΟ (f?8k_'"D,-̟6ị\?{ƳbfDJ.حl#ЍSKjϡ ڤ+٨h\cݨoe\Ws (dDC,x7j6STyB1E_R'N^lZJM]uxXh?ۦ/Z1[4!neʻQvo 4lGtp Płэls- {eR .[8֗|XhwNM:k\6k&W6:ZYwv+Zt\Je3m*d6A7R.2Lٕ/\=`йC sβ%cv!x#tУ{\6~s)8/lZʃS+-ssKGlzfЪH&f͖f R@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" dFZ@6!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHC_=_dǥFNГla&﯅I<Гl_$JvHM_>\Dnd{U+6mBG5}|&d"FG^w'5(" v;~'u /:Od{ן!;C([d}=) Oݭm([LeDeWF'>*?noE?M^S5d4B zMX׿|/ϩlClK~ }5FXP+ƴ]'w э*Əll.M2hfA{R_ۼg oAy;dc1?lMGs/T@ 7=ևק"\O!]} 4!L߷2&1BbzjQ!n}-lMH3=z_O;6X6D6Aƀ ʆHeC!Бldïtt${Џ◔d~m{[Dnd#=& x*ۡ'H>kGf}p|Еl;0 >T_K6E!@il4P6D(" ʆHeC#R> !07%;.&i2m0}u[2´X+KkZi:ݶcs*aXad3,} IG~P%]iLF K)c3%&;d[g&{?& l ,g)Ԝ Z8^!V&eвMX G3dۓƱMmU4@5mcxKaIύrAЍ‹A 4 ! ׇC6^O(GaL0HIA e+(PUX%dce;wd[QYɠbqMo< Zm Y,,8?5ʖF<0)Mk Qa{0Z]loAa57oj{exD+~VIQ _pIT~4x]5!x?MZo68i!]DW;iIm&/s/Թ{t%4J͍F`㉓l>"RX"%`zya>A&ϊb1*xu l,hѲ)]k-[G7 _Ĵmqw޴r߂ym~Sx3)/CN*/6KPlShtXʠlle&5!NI㠯sjٲ\e[6:lai)qCj٘lx>v$!S7Բ.$ela-0z{+[6xN#Z(tk-hwn-YQ鍠As`ac6zKNMOrm 0>$dt -+^EB.#llmx>y ٻ]ȺxGi3`C| ]CtݛMeC2ViZE(NjN}M:f[A z^UƦ9 RƮ72.L62h}0w04H;ޟF t6J'^Ҳ)gX6Z.dY%]kh7LyhQHe3|vt6jm[|OlVY| b2I1M4u Klܴ E\:Mwi3vaRʰ#nѧ5x{|$5`Vِ2f$LG1([ml,ܛ#P4ِʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@il4P6D(" ʆHeC!@iǴ[+enjv?I;mk4µF`\uyEGDZэqnH4N6+P6D(" ʆHeC/U2IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-07.png000066400000000000000000000056101507671574500315670ustar00rootroot00000000000000PNG  IHDRl[)+sBITOPLTEldjpȉC[/ݞk\G2:C%:P5k? %[ʋL:)TZa C×a}g쬮ͪ廛GT_ttt@>nNk߼%Apn_aTZ~jRƍqJGkǫͤ{5:hΣcnaTx5Rnsy?4/ݸawˌژTǿ}Pv{{% C'/ǪgF>A^ЧGȳ5XR>h6G:>t^P ]% "Ԅ_a࿖zR ȶe5@z2u~~acŒڪБ]ci͌wGFD2-)zz}l4{C2AVsaL>TdwwYdҔ5:J;qint PZFDd2}JDZ5RwΗjМ;Lbdx߯T;:>uVΝkJw֙Գ5@h̊PzÛٝt[PʲޢtNetTny%'6ᷗa͒dZj^D pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx{XTE"́U meQ,%ie45% !%2R+43\I2%RdVjY&iZ3,{̙ggy^9 Ah<=Pwl@ a@6 ـ0 d€l@ a@6 ـ0 d€l@ a@6 ـ0 d€l@ algݗ1Gd;Lu.ھ'ү8#1 /F$-}<)*]IEvT;<'Ԟ,FH~'sM?\^ ۜgHh$w$J(U0[٦sd'l9x[Z2מVw I&&;,@=E=gmUdfmI&c9G)N I7يh|3jϣRL45XvhL;-$w4X6)YX@Pڪܢ[Kٖg/}Fec U6yW&!ONld)L4r|\md+ڐҶ8kAQL=KXdcS`O#J^Q9}7v]Ȥ|dmA..ma2E_?Ff,a|܊-3wqضܾR}+A:5̣lZme蜀ѱZmd#^͘JFciGi`0cVhg#û$,8D.`f9 hsdb27,]٤yVGu6zVL^;Iy|ϲƚD[e+YF:G۸& Zס`wF1*e m˜ ^>Tezi;Zp]ZfeY oReS+t6eHyV(r ` #,*2h,8dd={,;fm_=F/5j_S`*!ꦹgTMdK=(]kzҹKƽI\eP&giMXWOI̺۩l<IAlTJt?APVhrV"qo{ zaJNݷaL6Yg цkexG<>oPdvԽ SN>9U[@fVkdQڀ{Xu.pj|qcK2:(ĺ6uծ~D{^S`% K1q]g:hjay&jض< P#[ۂl)ǏGzY/#Ӟ)#![+ԥ m lu]Y,bOmhC!/JYnЁln ;&} ?cL-լ1Cho hF5v \Ov Fppat{lvYrvyi&?xlk[4i܏l_$M)xlu'M Wc`\, duـ0 d€l@ a@6 ـ0 d€l@ a@6 ـ0 d€l@ a@6 ـ0 jdY4 IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-08.png000066400000000000000000000205331507671574500315710ustar00rootroot00000000000000PNG  IHDRlh2WsBITOPLTE1UfffZQSTZh)Yߥ!M~S#72uQ!ıQo&S<=Ton_aױb^j߿*-=M넧naМn6TZ~[~iaYȮ`X~~F-D[J=?ڴ3337j~DIKL%Dq_}s~a1Q=1~_eާy c^nyDRQdj`Уm6jlN dk@6 ـ4 G業 —-Ʊxs.ƹx؎ߗSG8M.0M}۾[#G*c}6|5?d,:q%wdS:E,3G<$HɘWqfX&z) eSo94HF(R6N)1*i[U<[Βg*F}c4j_e(ۈAҭ[H^1)K !ePSEKgT.C8ـ4BT6ܤMX~! L `ɬ#= yu]ԓT5s&n(Crگ#L4̈́C.$׫MP'`l;ޙ]] [VuMH?[]T|.ڵVbMDXk> m;ɦi `6YO390VZ˽)l;mE|mӃdeM;Konwi;;Y6mwW'Ke~AmKβ]8+>^9+}83e 6n˟tcժG*[>tuՊ8yj7g~2̪9وyd+~3gM.EڱS0ʘWwNU''֘<7w{Jk;a+`ccJ}ѯiF+>OM]4g[x1ѴܲYkFtl6Wz )fΗgvp˪w)ZbɧU<7 xM XUjn.s%fM8 /1,l/nz=Ⱥ<(wW$rkTSޑFOmGڔ}}Ҿ {+rk*_2ս4n)'F)T=b*{A![q8ٮ?l,D!Lٮ81wlM][hfjlߝ6껺oք[h6.c6\HTֺښ>X>X/5u1l[n!LM=O ْm{xfʶJ+>wf0G,cɢ?2⠵@ 8Eh Sl5LҦg9=9}dc\pƧdR-ywѱ}h&[6Jo:g*{μ?V-9Aw;Khs-3NS핍U0Ѹ>.̶K Y6H(lB~1AdQ?kb~кV+o{ `]K?',Yԋ_4y'}.f)u !HMϢ'\f}μj_q\R_f>dҀl@ Hi@6 ـ4 dҀl@ Hi@6 ـ4 dҀl@V. 5FkFhʙQ5#dkMa۬Ej4*'-di(Z.[L]_6UؚJC%Yҿ xQ*"فlh[H_{"d ) a8w犛l̚e*l>^_nZ` [cfu d ICѵd͡2ʭ|9NQ;z&d{`Y >qzd,3(dzuRMtٸ$^`rS 5![ i}}1l5kֽ-[Gg]rW6+Nj5KdN^\:ǂb`Hsx\(c]Y-lp,(u?zJG6k?cXѠGһu[R&Mzt٨ F㸈Nk$A1h v KgL82BV%ۃ)[S|e|rGGl *j)\7R˄Hن{ 6[uyQx8Ѽ_l)sn[!"B <lUWBZQ/(/{*13ggT.+*{N(C1֢J%3NwdtKttm|nTI)DEi17)c !eYf95v\IdTr%]& FB+Kv5_#H:lt!̈́()~]˿XԲNlK)ElN=goFWh@];~L_ټEB6>+[T{ao(͚E1AhdP v^({.hgSk^\3ಉGf(G6JV(4SW خEDd_3|??K ^vտAZ͕IlQ=|q(DSTqQbxHEi(pS\Zb|%DQNO\˶姒ޢxO/Nn~eJFgʤ4ykIv5d 7F|Y~n(6o`kP^4/%8f}7"T}.^tbzk?d %ͷ6&:IO=p;ȦWlv{߄l%uuVlMvv8l )ȶ2䘄[BaY;xvcVz8َ%HmcƵ–툫/&;:'mZuGܲ% gy)kS  dS ;!YYذqwjlGNvpR8q2cڸHm͓ JMZ:ƑnT/dH !( C  cdpiR)NIXK==Zq4_QI퐓  YP]Xi< rsNR7љ1Ω?1}!^٪npޮrO˖ͅ)Dc6DTԖ]  ['55YpЖ,Ш%?iM0yl4#F]%y'W6ʱZVֲ:%y& |g4̊$OD٨J((41F'm;♍8p>U3SlI#L~i_ 5ߞeϡ+Yu]g# mbBև>f;)P"TevE"TeFS#edҀl@ Hi@6 cd6*_kYh ʈ~jdFVn@'@&j@dRd_@25QdkZQ65@H'g P dҀl@a.[ X !ei7  a.[iEo Dw:qE6I =c'|;c#V,͟m6KU盟%7:%0SFե6ڥ+لV#we=W7kfA#w-dr/Q;]2dI ڠ_ +ٮp˶<ޗ![s-Le{| ![ I4 O6celAFxʦ>tlW" dҀl@ HilI9 ՛B/ P]XKf9eX QUs40˜\ӢB˂\?[piy=;{Xfȷs ˿F^PaBB%>htg|sGxlFK_b-9nyߌ,"= s@J'в8sl ?S6* 9\xl>cnjdKJxaÆ){l >bd{'e=HdǔN|" Iid(v5ab0A,чn}ec%Eq؃HebZ16٠ lد\(gE6"l#|ǘEd+w?4+o,(+[^Ұoo]ݙߙ}x7ۋ.Е\ِNʆpeCPC DRR_eR7-b7mN9EG@nl7P6( ʆpeC!@nl7ʦ=כk{HlyI|tケNA1(AȒ kiԷ76/[ȶ F]H^ u)`s 4Q is3ɶl{U ٱE=xy`kĞd4rpܲI C0pdd 'o'IIelm`Z/DɖR=k6Q 2ߵjuxO}-#)jeQAGl\8@C $zcQ[l GѳOXI4 ҒS[ z:/O-92hm0lgYbMbKm5v4$!~ d3 /ˎި#eki}`C{2)~92>!JdԺs3GWl˼zfdy9H]e/AS&`$4•9-ܥОU6"^d-TT]КlG*lnEq5bl+-iiDF<L<_5Z),1L/ aj 6m?!s͇}Gb Dc)H2blu1M[~&[sT#V@[ APAKÒ lv1U [ ٺVe[Ռ. JKzf#o+Of4,4 `)$фXUDP1˗* &YL6ofY&}TB&̲JKuciIH{Fi36oSiE 0<4jR⼎-[=#A-XSSDSoDx g_D (Q@P W]0DA mE6QA544@}_ɯRM4 gi'Dڝ ܑl6 ~47ې5.iql([{XeW%e]$INpeNpDuq8Wx,Wi4bqj3iMW!G5K45[.od HJ:FͲh64=9NF=Glb^̇h\i&[сq^}+6۞c6. hkMP( )~`pԥ[:{f1ye'Ғy1R .>z#sa?TCkA d%iI#z `Bk`P= Dy O~H³@X҃>$)A(&MjԍV=QRsDFxL6n$,bS%OkֳiT.!,+׿q0!ĒBԃ3:|Q2(qS r3f6j.}XJJ1 h@2k#>[޶ٮ?Vۘblt.}K>nNjq m:א*.Mv~]mֈ;@7cec{[y룝1 wZmN"wop?6h>nKvxy+ջ ['l0:lËnr8\wbL;' VloyҐ^^nl7P6( ʆpeC!@nl7P6( ʆpeC!@nl7P6( ʆpeC!@nl7P6( ʆpeC!@nl7P6( ʆpeC!@nl7:^=aHvf$`MQSalqJrMўllBنk4~X`-dl_}g=cE'dah[G2XD܏j4f~+T6bS_fTu QQ7;r퐽lRڐP6OA6 'qIrI< =jfْӌZ:<΄[hSRա vI)rݧH:h'k/Aޔ+juzN#)kա!Fsuy~cE3YM6{6ͼ6 /zP"A9lY6GPyMh>r!Kt/N uz*_=I\QVQq`~پfp y@Ԁcvo'iԴ>M B =(X971%E&&0d4/iŠrG6ƟR5+F$1[p^t!EIdi\0y'&DXG"ۜ"f=vN`m(#3U41-dսCBQ6<6e+/DGlc6J6lIs4 HecEdҷMȶٴ^a"JAV YeMod#iFh(.55 lI6J5c6*U66c,0B` I5I&5Yd#t=^6`&[Vt:ݒƲKFlT-/2Eu]wmPSw]OU Qe#>P.T6ݚ ⛪ Yd# ѲBMZEXنC|(V6Dyl7P6( ʆpC.OQ =_םF22Q… niXtȝ.ApG&A ׁpaA8^S {Qdzwk([eC!]oqϕ-W&>Ţ3כE\seeOc}7DWT{.#~ eKeNO 'dUOHeS-{&l>⻇D]xl# L*ۯcM]O {(~Ye>;(~f}U6m1\oc`xʱcK]눌"[u@E͌5o; dMdK 5фFZ:>D 5Ш RVO6.M`W-4аy&ly΢#Ҩi`%w\[3.zD=='fiDoԳA@*XҞ kk"2>!JdԺs3GWl˼zfdy9Hl/򒆊[H <0+ے=fMd[U^i9c%hak,(7 kvfDeu'clbھÑ lO'c{/$4݅*[5&bvA+"hk,G,47k=I~DBei`TY7W"*Yd* qY; 3f|5xVaIu},2ټ죲R5M%[Vo/&,Ή\ùNKQ`nKdPFADv4&[l6`e_*Ͳ""?idANN6K,CV"#Ylvt۶mEd՟!9e+կɱ!L@:Sle&F6#سqwF"` ENdFF%0R2lV՘>R\>ϦJ &* ?AȺ_FVƋjz:UM 1xj&F}] jlWll x_}n'sd;IfΌ =g/AeO1*f3FOw9V"La)ceMKa'[<Xfڙ6/1|6jO:FъҎig'LU{[E6vQډ:ۉs-u6g.c6ٜ ]I+o^!NM{CzKEd3 L{YEdC ʆpeCPC DRR_eR7-b7mN9EG@nl7P6( ʆpeCA= DIDAT!@nl7ʦ=-/hw *ZX{vfdʹ^浿EȝVFppP;Y> b~ع3#l}^E`Nd+ Mͥ3c@ٲKYɎMhU{CoIOP( ">jdGtdZ}`NC\h$S$y+eEPFBh5?KE3$J"nF*XҞ kk"2>!JdԺs3GWl˼zfdy9HM[;ͅPW!-4lE%%}+9Ic;a_kICDE0úlӉCDmGb Dc{)PB ?iKzSZjӤb>I_dIL\Fmke@,)ͨ-dmKI6[Gdɉ"mK'e3PJm4==4:kD6ڔMmȷQ3ђ)4͹L/V%mZ=09Om]j Xeo_e#Gš7d3 G``{)ί ~90Aȱ5h8__vd tT蛪Q7n&[>~OI!SB c ٴK_W3V}%4OlѥȷdH">6[juPE]Ҩcy;AHgpi[z[_:l1y,l7P6( ʆpeC!@nl7P6( ʆpeC!@nl7P6( ʆpeC!@nl7P6( ʆpeC!@nl7P6( ʆpeC!@nl7P6( <-(= euE6TMi쑣۝F5"C; -t ܑIe qG"A6wڐ;wz; Uqe몸NuU\xAٺ*wxl?ؓ^Ϭ])zco_-Ʒ??7 ;i,[ÏUζ^(ǯݥwTW^y"K{&ilRrz;e[:Qz)٦|moZ^Hby[W(CR`u)\AʕoB> >L7lcO˜"w^of>72CclZOCV/5S ef~!x7U1(73eVM]o*ۘGYlǞ|7pw(WE{lU/eDپ#{?GR`E>ؿ9mł`>a[ cnNTZUcFtzA2?Yt☻U>Ndk)6mQaOwYv R>F,[ ,Yk n|84JmĐsY>n1U=:1G46m`lLRlѡY60뾌p=&, {Y/=L[7]d'w(UX BDlElt"xN*yj#6d3WʆfX^`-S23hU;SL[fA 7z;Be#V<[U\_ gk^klud !m<ؐViepwTSͥcTG^ 'xwYk~Qq˯ q;iP4([Wwz; Uqe몸NuU\x( ~7Q" XCqml4rt6]Eos !@nl7P6( ʆpeC!@nl7rPH IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-10.png000066400000000000000000000160321507671574500315610ustar00rootroot00000000000000PNG  IHDRlsBITOPLTE&hS#=ARhy25:DdxklYZyC=*zXJ4naT_yN8}=#w1yn˒&SߢbnS?TiX>X/eڦśgT}&=M^Dwg!bYdnXD1ܷ333ښTjN^zz̩axjzF>DyAXZ[F#TdȮzk\LfffglsA}y4/#Զi܄GFD5:\h#~t۔YȞybda&ZԮy̒5FTdҊVy_ak>PQSmXPxeC黍nғXw "$iԗj٢tYiYZj+-/̷Jh(Tjpg:>ˡu;qT_jTsiZjcĈji&ӌ5@h;FPnsyƍFGIDաG:>;:>n/檫5X}TZ1Ӆ?deQ!ynjwPi~fhi5eާyΒjT_ȉg&/?Ydtče޶J&LX]dCzڞt쮍~o8TZahMZ@>Ηtwb^nB_`/̨έk&(*iZa5:PtдGLVɒeЫ| pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx \e WDVF~Qf5 -7hV ͼt2l"dt]vuR#Ĭe5-еܱN7ĥ<\ 6?}0;3}#.q@AAAAAqЖz^hQulͽk͠N>^p&y[+)=y;>\=h~Cd;sAG\owIu+gG,t;9^Xa_'$َoP?6i` Q\;q=ԁhIKqr hEH?YtGOl} INlZ%>723>u|VXy"G@Z%Res>o?Ks ёqf\,A}1?a\_u_ѨN(h$ԤnFUzГzXM=ʎxEM96`f8_0"7*W&6甈\LJAQ@XZXsG^Ů_" ZϜeܐvz&<57̕:BrؗEy˨eu?ڟv̈́ /tZdC5檲M~&}7}qp"%8 {>qZ#^`$aQØHyKM˜eLZUՎ_NϩZUUuH ~h[^6xÜFa~ 8X_rZ -o @6-sеjMl}S˥V#Јcwd!7kZ]Z.[5里{'üB&f\߮&yFٰ Gea%5?5;נ! N(# CEwX=Kޣ׀89~z(y YAmVˉvDdï\Vש3^^}HCG(>km% ځa/k;mfmɆ3UnuPJ|صqhtxƭ,*y mwtdxk#⌁d#ld#ld#ld#ld#ld#ld#ld#ld#ld#ld#ld#ld#ld#ld#ld#ld|nHL}t:N{e=yJ?:8 3''(Zl%,i\imF"[(IW]KrrKO=*$eM 2,?tu2JJ?v̪'s]]"⛂4Vwu-sB#tRJvJI`u&6Uyh7VLm5tes/]𧲖)IR׽^%>Mlm7nPfLv`KQ/jy(5 κYTqA1oSeS˭^|667nc[P3L:{@Rzͫ0yXfiuyZф7xgJp0l<~2Ӽ=s] =>v<&5Dou@Mͬ~carwj́[׼0i Jpo9x'13ᅰZKI\]v ReS˭^\Lq{>p:M,$:A[ ›u>ߓ 9;(cnL}sSbwXԠmכQ-;WDa2c&qٴAzMCb!>Os%DZ"7])c3VtQ5FٞH+xLOw籛NK/fެ3jAY2 Vg /&yanM.czT4ʆݣ,U6/T2(LLʳk͗W˦7DgN;9l=*0Ϧ[>rM Fpu0V~%.;v>lZd떷Hj &]bYO֧tU٠Fٴ Ugܪlj9OY\ڬٴrkGNBS*J٠wKh w/Њlp#iQm;#a?uZ-3~Ϧ?ω~g3N~l|VnM&Iݩ|Rw c mX~ ZB]-[]6.ll@s8K;KS^,g=`G>58X:ٺ>fsHvY /y2 .K<,5"ȹ^J8.~"֯Nq{~طlƯ?XAeO|^˘Pk+eZ*GyveV.czX9 C̆Cɲ W?o[e-E e5(KA{WlPvنߟP ֯&mf2a$a$a$a$a$a$a$a$a$aX\zNblݓw QϟPF0$Ym8Ga1>D~֧yXrrCа c0$6M[Yb9fH<>j o@.oBi̐+?Hmcl$u)ѠձZǠm.#0S` Ѫ]ԬjLht5Rlg`Q|U}SY̜5}dWITc'nykr'SboW]6|6tXPʶZܞxLjFBhPkK 35O6lF1JD} ~]$_.ϣ?0Llf}~w%vMԌ:ɲiѠ Q l`$S*[ 8gsFAjc7+TTJ>c S(- [g605lKʃWU6W=,Y63e_zsZ4'DZ G 3{Gq %_Z$[׌Zq Faʖ):ZBNR9ȶSjh eJ4( Uc=T(vgudK'Dcs; b>iM~39[E"h_4KC^3?NaF+%#FS{:p*N˖~)Sі Q-qTr@$Nl9FFFFFFFFFFFFFFFFFFFFFFFFF&ũN,dk$"E"[e-B)WYAi-YIV]AYT6;+H{^y䳣NicR3Z\ m2c]퐣F#B,ff)tf*:]ŬBq ͨbXG ͞tT!B/oNQ64b( LH\)ULNV VTМCV,bsHj% .XPtC&ukSVƹݚuLbb6j̳x®~qXuU 8Dȶ`4Ŋ| .X/Smlmlmlml}C_yvl><;ųN_vblIK^)$*;jH(q3wbmsdۿoMyX څKBLԶB6=co_AvIdX~W8?ݟ\;q'_^;hM^#s]/EǷG}_N,hAe\`h<9=ۚ1,X܌-jg+>ڒm 86c,(\Z{CSAYlA} 7BW߯VKWUs٪L *tcbK1EP/܀mV bpK- !⭲l>"V/wM;rUQq_,Xml?DvlSsg.c?dؚܵ2(K}ے G}j٠& "*N>%X^Id+|W8Zu~MoqL ThRs W킍c;3&@[rBKll"6 8qIsfRN,/^1 7EEvݿ62Ӧ=G /gjurND+!O,:] e몸\yn*~ү°tT8PaxgSiFEgt\6wl%Jrl'1j8Ds vAً9 =n/$f1$f1CAC_С/X)/qy ЋeΖWfŇ+2/ o8y2硗_D)Q| ly)B5E8/pn: lЫ-d#ld#ld#ld#ld#ld#ld#ld#l1ýIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-11.png000066400000000000000000000044321507671574500315630ustar00rootroot00000000000000PNG  IHDRlBrzxsBITOPLTEHG; WVlY(zyR|mlGfŨML1fet@`^RQ^5,~!rpXMx܎~JIfpWjha¿D4%vt\ZONOdb TT=\.9 onznhJ+~|T#trrԋcHHv/kjhf`3ZYKJjBa`)|zPOn VUP rp8^\N]Z|0&wveH{K$trEgNLJJ?5ZZHZ^i:ZbfXlj. VTP\Tl0JB^\|&xv4nl XXTR6" pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATxOIǿVO{S)2w%o`{Xj}CKhgQ."95bMy$L473.wSBwg'~23@NNNNNNNNNNNNNNNH eh xrjsIDAb젮쨀(P J fՂ@= u A0n CPW @=u n CP @=u n CPKP'n CP|/jr/YMDMz"lQ=fqK6pw5ҩ @=u|8 S5& ˣ1`Mz"e;0\cIl%A]l(0ʘx] ԇRoDc8F0-MHb%gg;րl+;|j 3(TW Tr@L_M<\Ğm.iQ7!+#Ul$bˊ}uǨne&(tvwQش[A>l<d(tdqG#naC.l=Y +l3 %XĜ#7fAΰ|tNblasN|Hagf+ ri;Ny~ϧ_/C.\{Z&]Bw#['@XUVʵy[<5nuaKwvv8,< x&"rw]Gcz[WZQ7!Cn[H>C s&&v3ΕixR?LiIvMd㐂Kggd_)@=u|>oM%v7}s#B\.)aZlʘw|lGeY$2|\>b?oaCr&{ϺOui#ߵu&ͫu.B/^גOvv.R{ʁhQ7!P*7Q髴HʥE(d{їH-e!g/M EE0)PA]C0E0)P1H]C?)_Ђse09uSLm:p1~[DAb9Ʃ95J             _v㸴nIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-netlify/netlify-step-12.png000066400000000000000000000132431507671574500315640ustar00rootroot00000000000000PNG  IHDRl/sBITOPLTEJ!|$Z0ِV찓XD?G:>5^T5:J:t^VxoG^z͆NBwN:PgwkD5FEO!檈NGXtثݾ󍪗mkA@DYd%Zc٧yNFDӴoaXPeJJJgtkh~anxo;qƀR>apҾ㍇L>m:>̵qbz@>ƃJڼ5F\Ke+T_o{ZLJhnνE;:\mkb5:t{5:nm@>ߵGentͤJ!0ǰmLD᳗y;FPYÛae!?{{&Z:>]adӱ5R_YwJidNFh^5@Pòa@Pڒa梼d_daawO+gßeD5ktRcP/;:DtP{5X5FnҊVǣnTZaGw{{kTLbݦtvػ컀˵~𓢤{?t}ܓ^JT+$eJﹾNetYit~a5RneGXb5:V{ƨ{ėtzwn5:DALVTο^ڤ{N@>OڹwD®/u^ze\ARhwβAekEP6 pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx XSWZQ++gCVъXhYTD"qCSAgEj3:nWijLTjk:PY}~߹7!Sͽ\s0~_~ al0H6B$! Fd#lv_-Qd$|xkM+ g۫l\"ȥjF = AuQ!! e'"evymIvFh!$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#Ah'-N6Qg3մdځ:iz[c[siv"nIZ "iF4٠F4)Oj(/M7Tν;u;uvÝ@ԯ%OJ5Ar3\}H W|TIlU-zR9{tkdeGQʧ&"Z 㽚Kdc*nA/ORy#BaL}MjnlWcKl6膅v!Yg%p v63̭x|,[F{`lw9sM60KeYá.,z`[wWD6pe"FF;Tl aLPe U(5d31RMaL[k$f Z!֢PvoF^{",'L\EF68}+=lKcк,krl el\|' `~ԅ<̉p^|R6upɺoP)3~;>» XBӭ5;6Z/ƥޤl̜Q#=jό<˖ F4OcGpY54{?4ɦe7!@;dSײP֜ M\fX\>ol0H6B$! Fd#A axlٲFd#A al0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#A al0H6B$! Fd#A al0H6͑nWwhH6qwUC~mɦ6ߣ n*ԹIWZ'ͻ/WNYnOd?nxfR庆'mSIT-)K>ɴ6.48U;A"[9% V;|Hs^, ԎQ &L2;X\ - zdjL)=s~O#ij;ޘ <$zk,v%gJp\E^P?u;,?N< yi|<ǿ:lM!@@풲@m+Ttn#E=#ņJU̓b>e\6[@pӴ#"_ϖaUrvQbjL-[}1K9o3^Rh'6w5?FuC6@'Vi޸g L;KMF3}q̣ՐlM沙?9&@"fR+2m vR1*i;7Gȿcvh4QVVdk*bRATV~ /~D+ll76>|Ad{"5&)4 h|'y#JMƲLemЎa)Le̴N6[sUy ed{$(%^ų60M@ ˉZ*5P֚NoQdKjPMY/W4?_ixE_;< MfsA֭8w[SDɩZ?;u]ǫ&;lx*6@bEмv)d'֚1(l;fF/p.[:'lʨ{$klcdhl!<ɑm5eN#[}߲d `:B kF<ʲMDj69Mʢc̓4 5m"8*uF.Z4$[;fۑe3߀Gf[*lY&f_YefLv63?d49yۓ  ۿɅ?L:i^~ 'ki U_3ћ`ׁ&M"TnqV:\=i6KVd٨"[u60ٽQdcΟU%IM-}D&f2U^X6eމ6ySM}/qe|Mc{H6爕 2:n$SppVtW 򺵑~;Dzlm7#aV0A+eOvM*f8^aQw)F,$e*n ݮr/#؊"#"߈ Ѝx'le8VtQ)yc`Kn<ǫ[uy?#~xxl^?~W3ljm]'6PQB͹FAK8hQڡlou~rTWڡlK ~ߞ'Z˶8LŹ@Ԅ탍LwP1~EMhH~9-,mGÏDkaGy.aIo_RIucEt m>>bm85(V;В8Xɰ'e -A<ł_AS `s.kysY,=W$r0]e'h{-8 aۚK7˦;xdue_- ~vMݜez<w|Ob [8Nv6}] dN=v\t1/.vu]hBE?>Dp[> ۥR _bӏP@]M .U@yMq*--?28{6DDS'<=3cͺ(RnA6>ğa'r=x:|Zͼ|ԹᷘYt.neP6~AN/ˆD(GP~')k`<{@hWM-sY<_6VRFw6~ 0V;}YIXsDh%قX͐uyem!rXw|u㒻llWaJM)g,ddc z5H 4j#A.4rdyN6e 9fʂ!獬BO nޑhpK8\X y$6hyJ hK}=|i?!ιM lA9a/{ʿY o!;o텷xC^GXDTڮL>'P|mALP "uVGynjȉCY_o-zx~(HG'c5XT氠ݸtlߎ_'KAkD XhmF>Ak?L:/ȽƨT_o5@PlHGާyTi8{2Gjssnaԝo8-)iZo<Бa:>da׎ȚaCY{5@z^_aT~Y5^ƴGXn2njn~Ыkڭo5XGYob5:bƊ\sΗo[:ٝALb>?.bnHssYsh/na4wodxfG/(ֻ{chmsڍG"TZaeRPoGTnh^nnfff5@tYxE qDȔ HL$^RِVYoSaY_y%himͼ2Aj /~ҵT_yYЙ~fӒGch;wi%%-<5LE[GRVaGFDz˒|mf~ZF>ܧLQ pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx |TՙgL YXM B@Z+$Daj cZZLgܶJU4AkvA@jAFK;gn7gǹz$' z$! 'eK!F)"}GnI-%G:#mݜ 5R!g*7d#zh[lPv9 "9P9 [-uz)Tm]-d8ks@6jE{]-d!l0H6BlEd#A al0H6B$! Fd#A al0H6B$! Fd#j*G˵,S`S>)_i;sˎ.mEZVIj8ioz[ROȼI/ow۳8︪he5+̹l ?ZnV zC#%%zm uCj8-u7Xb2N F#ܳ;pF6vzޯh'.O*-N6)i:^ RpZ{uȦ%8Vyl '[͡$'v(p/͸B2~}4+e:oE c볆{a'>6[cy:k@bVIlps˖Ĭecb0>s`dmqIH ⫰˓> B՘+ӆ{!Tץ ǃ/5;]\IޟCc}?vv岃A]{y40t A~-St7{M -}g!qF[d+ʫօ[՝x>lj Z큓|E2^de a%}0|.ۉz6Մn2iy !?A1R5+Jj6VxLS%h~ElswoI6ՙiljsCߒWec}/@GؚÑl(@JV-cc2,W(=*; Q M˦](o&TPaҧv2w4m %Čr@ڀb eUWW63C=6AƏY$ܝǔ⺉ݫ嬈e ]MRwqp8xId`jP-Ϗ;\rd<25)2UANLJY3愘leG)G։N;P6%*NxΔ dSyB +akI"_Vʶ=Zhzg𖓃/n iFq$ek L^k3zkFD;}/}gf$[HBjˆKyuM4mk< Lͨr :u.UB/$N,| neluǁΔqmW^eÞrE6,@oҦN$w;lPj]c‡-Nf٬ YdLΆS7SXP9JdIXIz׼R =1VJK66Np*-KyW2YOK&5%A(N96bvf'Ex{מ-&8jhC6kBѣ15d`el]aL}rXaY7wq%[:k}g$}ַk+^j'us8Vr0S#l e;e0#uRgB#%!lz&qRV&XEe0]a7+,HPҿoPma%~\GH˔9aóPd۟n0F^CUX3_˜XS%A};mq7>ڠn$l>jlAw̱G c7je|ƻNx :.0~Hk,0Q.[`q$,I}궄R\.>B7=%[;C'[٥}8-O"G C[>]x[ET}@4$[{hK޵Pıla=ݬFd#A al0H6B$! Fd#A al0H6BglsC\ Kd>SM-s _,^[d9P iFpnOEwWKy,fď-iLi߷l&H6¿ eßn^?]ilф dKYd*[NX8+͟909/oh^W LAeRr/pي*5u1D'~|YKDReˈ*el;0VXVMiR4V` lө$6Vk|)9ks`Ba$ӡܜ% 5[y5ߣvjS)@K&z#Ȉ:Di8bjA6V/q +FͲ%셅%N>"h?.&)#~\LdK@2⟐ ʆ- Dp*l:ެ}6 [--`8,Zo}Xlvш-ƿ%lyx0VL(kFvh^;ggv6kO@[&O)i\]N6)/s|ق[e2FBDl)A.γe2lErztXPLlRR+]4 ]6vM ptVYX!iM6Ől0H6B$! Fd#A al0H6B$! Fd#A al0H6B`.SH[ e;1dKnnC¾}E$IݟOdX@Xߓ4lKcRgnŰ,9>ǐ+ycD#-[QccAے-Aq)X_dr}cY.d VC¤*m#RX|mV$f!e0v`%[ޠ22!^f*OvIʶFM$٬FiJ.,~(e7ԡlPCUҔ ٪l&0e-ضC'm{1rzVLq|"YfYnNYB$;`y[q=+L[dNsظmo8. P .*KhM?y";~s͢U&aHs+hC,˃ ?6onHXmkn^ƞb,UlJ`͙u@IlylIߴNY1G\" 3" 1z3%YcKR+ν0_%Yj X҉AҷbVh\.5gPMoF1 ֲdIA6Y5Ưbj9ңƴ. ] ^%CɆ%_~h@c25voӺMsɸ`e)iE{ op`%Fzʆ,UP6v5m>`QhƯ#ox6ْ.?-Vⲩ%P/s{>elMQ`yAe5+~B,6f gcׁ]0TAD6C͆@@}z"Q8/eyHf.SuA•=rx凖.McK/*˛VmfdKWdcfz* /Xd`ji+mdaWU,H4yCȖdpVN q;='Rar_ U_Uǜ<[X E~UM0\ U 0I9-5=D6 ?SUh˦]sv>?*Οdmˆ2Ǘ4w`ph_mkPl V j < kx\7MކPo(+TMEJfX격ZVl9;pKd+dc?|Vhɦ_%`F|q2qZMj*Dlְ󌲱mZ3" gqau &U6t ٍzV.kaP)f%[q0W};1]X2WY4ƁdӮI=a)~ ˦N8كʸ#&ٔl<jjrVzEM`fdc_a?pE14ٰ=Fue3Nh<`IJ,]#%vL /=Co([FZ7]6VCX\QK=g0g0e ǫMrU6,iy`Y֮9u,A6v!pd2ðۍA65&c)%}j|4ZFGM f +e9zN}`95Zfc}Rz^jq<R] KA_OuȦ9a6j<8/`"zlQl,VzE#:mKQBl(- vIcW$8vIcW$8vIcW$[wݮ 7ޅov/z.~]VwcW$[(W+ _bv7~Ui.6l?%:MɶXK]NFsc/z%^|mQ{rn CXV!Hv%M}`O֥{l-'!]̎.>v!w3=>'@O>ޯT.;f8J<6ٮ>q *M4I FʸVU6}4Cu4,yUMF )c3W ,]6e=H2 vI?2(ϻ}rwbq*~֛U<~uE)> K_ȦࠍVY6~ղc/y6V?]il*dG",vI d4*6SA;oy\Pڋ]ilؕ&F8]ilؕ&F8]iFl~5BLoqbJ3e}6dT[Gt0aNFd#A al0H6B$! Fd#A al0H6B/[Jp j.־,]6ru岥D֧(*6b[EloDg-Mp$-Mp$-Mlt\milcR#ғ z0_ϗC7-Sɜ$ fӋl2.ֶ>O@xwvϳC6\ۑswIhl<|.ֶ#iWڳYC7xLJu9w7a[$f(4I6lwO7^?aVgxd"MoN-*-ONϚ _(M{꿮S|vL _=V;?~Eŭ1 c Kv/z~/x@RAjĶ4I6lxTgf“([˫y+u1۶p:[v\ @SgVv;OG9(GvMcs;>髼@]/$ h96;Rdn>e{3Fi&ys6f?)n(}C+h;bUK7e[8}Fg##Txse|&ە%3Td<\<79k; l9 뗎:d3\?UCrK^0_֋/͆- w.ZW]=~I6Tc)g^k Vi ?< sT̪Ae$? H6#(7ϳ7aklSE-amWh&[ÑGa ءClGW(ndEIˍl~@+%L6eL@:aCMfޓ;Z)QellFoNa!ŒFUF*.=^Fdc/^H4Ƨ<'|9j?yq6ϖwϗ | #<mMTr^Ʃ7zz-VYq YGʆlfHNG>]hʋĶ4In&r)-.'QlKdf"(tr:ƶ4I6ilKd#ƶ4I6ilKd#ƶ4[6 B~˸}6dG+eQSW0Fd#A al0H6B$! Fd#A al0H6B$!藍<&IRe3 q/S>֟QB#H73ؖ&F8milؖ&F8milؖ&F8mil"iJxxؖ&8f~/6^Uؖ&4+>2*|ϗt TuD`Ϙ)}lz*[4I6g|3нok&;ǟiv/oGofOuM/;milrvc(|p6熉&ٶSqCʳu96E"milΒ<j7'>ǖ>۲q w#g dž՝lf{lR˝'ZH6a@6qe=^\eߝ!}6Eܾw΁dF #eRwOne}@KFyhT׌i`7c[$?_-A6o~=NJ5Zgg|yc[$[7lyؖ&֍l$ٺ\$4INc[$4INc[-_p!n @e\[P>\2zmv(̩pwSd#A al0H6B$! Fd#A a8 JHnr-9xIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/000077500000000000000000000000001507671574500260155ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/index.md000066400000000000000000000126711507671574500274550ustar00rootroot00000000000000--- title: Host on Render description: Host your site on Render. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-render/] --- Use these instructions to enable continuous deployment from a GitHub repository. The same general steps apply if you are using Bitbucket or GitLab for version control. ## Prerequisites Please complete the following tasks before continuing: 1. [Create](https://dashboard.render.com/register) a Render account 1. [Log in](https://dashboard.render.com/login) to your Render account 1. [Create](https://github.com/signup) a GitHub account 1. [Log in](https://github.com/login) to your GitHub account 1. [Create](https://github.com/new) a GitHub repository for your project 1. [Create](https://git-scm.com/docs/git-init) a local Git repository for your project with a [remote](https://git-scm.com/docs/git-remote) reference to your GitHub repository 1. Create a Hugo site within your local Git repository and test it with the `hugo server` command ## Procedure Step 1 : Create a [Render Blueprint][] in the root of your project. ``` {file="render.yaml" copy=true} services: - type: web name: hosting-render repo: https://github.com/jmooring/hosting-render runtime: static buildCommand: chmod a+x build.sh && ./build.sh staticPublishPath: public envVars: - key: DART_SASS_VERSION value: 1.90.0 - key: GO_VERSION value: 1.24.5 - key: HUGO_VERSION value: 0.148.2 - key: NODE_VERSION value: 22.18.0 - key: TZ value: Europe/Oslo ``` Step 2 : Create a `build.sh` file in the root of your project. ```sh {file="build.sh" copy=true} #!/usr/bin/env bash #------------------------------------------------------------------------------ # @file # Builds a Hugo site hosted on a Render. # # Render automatically installs Node.js dependencies. #------------------------------------------------------------------------------ main() { # Create directory for user-specific executable files echo "Creating directory for user-specific executable files..." mkdir -p "${HOME}/.local" # Install Dart Sass echo "Installing Dart Sass ${DART_SASS_VERSION}..." curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" export PATH="${HOME}/.local/dart-sass:${PATH}" # Install Go echo "Installing Go ${GO_VERSION}..." curl -sLJO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" tar -C "${HOME}/.local" -xf "go${GO_VERSION}.linux-amd64.tar.gz" rm "go${GO_VERSION}.linux-amd64.tar.gz" export PATH="${HOME}/.local/go/bin:${PATH}" # Install Hugo echo "Installing Hugo ${HUGO_VERSION}..." curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" mkdir -p "${HOME}/.local/hugo" tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" export PATH="${HOME}/.local/hugo:${PATH}" # Verify installations echo "Verifying installations..." echo Dart Sass: "$(sass --version)" echo Go: "$(go version)" echo Hugo: "$(hugo version)" echo Node.js: "$(node --version)" # Configure Git echo "Configuring Git..." git config core.quotepath false if [ "$(git rev-parse --is-shallow-repository)" = "true" ]; then git fetch --unshallow fi # Build the site echo "Building the site..." hugo --gc --minify --baseURL "${RENDER_EXTERNAL_URL}" } set -euo pipefail main "$@" ``` Step 3 : Commit the changes to your local Git repository and push to your GitHub repository. Step 4 : On the Render [dashboard][], press the **Add new** button and select "Blueprint" from the drop-down menu. ![screen capture](render-01.png) Step 5 : Press the **GitHub** button to connect to your GitHub account. ![screen capture](render-02.png) Step 6 : Press the **Authorize Render** button to allow the Render application to access your GitHub account. ![screen capture](render-03.png) Step 7 : Select the GitHub account where you want to install the Render application. ![screen capture](render-04.png) Step 8 : Authorize the Render application to access all repositories or only select repositories, then press the **Install** button. ![screen capture](render-05.png) Step 9 : On the "Create a new Blueprint Instance in My Workspacee" page, press the **Connect** button to the right of the name of your GitHub repository. ![screen capture](render-06.png) Step 10 : Enter a unique name for your Blueprint, then press the **Deploy Blueprint** button at the bottom of the page. ![screen capture](render-07.png) Step 11 : Wait for the site to build and deploy, then click on the "Resources" link on the left side of the page. ![screen capture](render-08.png) Step 12 : Click on the link to the static site resource. ![screen capture](render-09.png) Step 13 : Click on the link to your published site. ![screen capture](render-10.png) In the future, whenever you push a change from your local Git repository, Render will rebuild and deploy your site. [Render Blueprint]: https://render.com/docs/blueprint-spec [dashboard]: https://dashboard.render.com/ gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/render-01.png000066400000000000000000000152541507671574500302270ustar00rootroot00000000000000PNG  IHDR#sBITOPLTE ٫~~~PPP&&&888fffQA:XvIDDDٜQ2o•Irrrv:Q000v: #A~X+~A2o顡: ٜ +X666g+:X A•ZZZʍjjj(((ӧJJJ>>>ѳvXA+ 2go#Aoу`Q fffxxxVVV¤~Q88oʍI:v...ʜ<<<:gI##NNNbbb HHH```~`:Qʕ`:::ќʳ+`g18ʤXʳ`8o:~nnng,,,:++o蹹^^^ X౱BBBϕ`+ #XQ#~I 2AX٫+#QXoTTT٫`# zzz~333襥vvv~:" I٫vvX\\\#XgX#A:v«+gٿ@@@oppp 2~:XXXX##oRRR***LLL #I`#X詩tttFFF|||IA o:ٜQglll2 !!!ѕIQ#v~ O pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx x#i]$/ڃXJ5ؤ|hlPܳ&-H1mkcX~*X&ů5Va8AST]r{vѥW}?wfL\mߤ{ɾd~y?fw#:8P@N; $P@N; $Zu*6j6j6j6j6j6jבځ@s_?t{~%[{o-|'o\׃׼7>XqN?K}=W=o~z|#/zPZ}"8ھauN}J'G^zz>VSw>?W}%s/>ɟ{C G8.ކT|?w~gxG˿oo$UiKTT?>?Oj\ˮ웿Lүc_o}K+Mgn? 5K[ҖJ /ǿS:}Fsv?>L?m+~ǯ?׾蟬<}56^W|އOM{ry~?}#?>=zrPQQQQQϲvhTQ{6Q+vZ[tv>8Qi;y!vnkOpam^cm;X%Gm-*P[5j@meP[ ԖAmM*(j3]P$>Sq "do4OzĞ~1V;lBUζݣOÛ㆑oe{Lyuy.ui pׄZՅX\zmRsNBf{t Ljˠ&@mPN`Vڨ!P[j@mUv||JO6c7YN{8ZqBiæ,&== pq2(&zT2i1f}ۧ*!9=0aY}nbJ{XYҎOL22εon/V˩kRЩ|jQAmU6jk<'WQwjkVڨ!jw0N$b3`7:KtcoԻó2UO ̚W7 &lۡ/ GZ} `.S0fln%=qXlI;[0P&̴)!uN^%CJ`x6^uq4N$֐h1uϝȪ.̴mtIbMGN / b~njWH!++m~$+rK%)\GvJMяҥHHص~%8fet>o:RiGh5۴):HUuGOFÓJ.i3èߡnێѶiۤFGo:thlhO^҆I&u'j :}@mU6jkVڨ!P[j@mGm vU6jkVڨ!P[jTTkG"Ԧv*Pv{ܽa|-vA#T `EFū ̴7ޫFˢq7mVdTLy[ ;mwo֮jbh*J5Ňcm; ؿ>Ĥ- (L܎hf3E6}5q ʹJD;oƌdfdVrG ه*m%gWiGhu `C1[A%ɴ+&.>㸰^HڷvV{&Na7|z8& 0jJă`Oˋ)'7;)NJhٽ-}'q3vA4Z1޳L;푖V(Ňc@/_NacGPwVn.NN/ɘGk`x7+"}5|t߽5XW`*P9pjkVڨ!P[j@mzZUh/6l`^Y^Z̴ '|oȐnabNJlH eڃ3͏KһF⍔vԞ(kcvGko+S䎄d-,Ӂ1m VK&Q4>M_ۚKz\#G=)6ڥ SKU68:2K|NW'LSapT9q.ۙggyV'|o֞^p?.Hݽ.v ]Rign̹nV5`X.y$U]xX)zµ-pGzTkҒ"0>auP%zRp ;$\O&kGHO=# hA%K18f}qv@rTw) 3ZPɥwٔύb Gu|[ڗE.{[3=rTuH[JCRkz]}Sj@mU6jkV ~uGjIgqthiwhF횛9@@mU6jkVڨ!P[jw;OZڨ섳[,&${Xjs<N9͌mtN9pz֎{ڂҮ=k5Gv:88[4,܉EMh*u@O0C Jvy{NPmu(Dvu Vu>!nhoJZΏiMף7yCfitWr7K'fʋԝfe^8M-,M2qUN?eRB[ն{mm 0tLZ\ڴ'{``FՔ{eמҶ~4f=J뽉±xQ[C Fm *Pڨڨڨ>6j6jߟ6W2=A?  GD7[ Z_ډ`j)}ܭY+>v08WO[EVd nyZɩe B.8ݳј_M%F'&6fkOBW(MSLP"^@JI|鈵ίsrMJ&o9AjQOJ74ms[ Άky󴏬A^=&/' 4k.6mP#T{h TS(mI{0&is9cBΒK[(7 ¤W# hGn&r`.s99d[iŀ+L Ā+L Ā+L Ā+L Ā+L Ā+L Ā+L Ā+L <ͽ&M? Z?4Ć>˻%ZsB,VS^܎}VƋϫ >#7\O10nkocGfL hӟpIqIP |zR} *%n) ؃j~M9SN7ce]9gb7[.GY4}F &xLFw.n.XX~gp U8۬AΩ.31pO)7y j\fMfmt?w6 |&?}Sۣ8Dㆎ k򷥈cM*{鯚whhu5):hɿKѐؕ}u{8:̇]ym>xe ~Ŀ F鸈frܥ`=)q z# Z_8 /,]e}`z`.W=_;^84ƀ'$85G8# _ f.X&191Q٫ޓŔ)NWe 7|N4 &ڐ,2a3CJv 12H|tܧ簓?p|/"/g̀7X82L+mՀ絒ŕ\^bx>L>7? ৔LKGNpza"\D1\?+ghl ͒/uܚTa\N,}P bƾ8Wj02WǐӲڀ4zIؑy8=1B'/#poyNy;0_Rxpo4?/v?658]iBoWҗ㯘q CeZ ;)/W_iNĕ6O.Jl oA!+@ 881 01 01 01 01 01 01 01 0nDSΔ} [S ;WLٜ[F.wuyZb0AL''0RY&y/c#+#v>0ڔrڊFtֱDq`x-M~pM6EPF Az}y>vZjĭ!X8&|c5E.р-hܯ}pjjCFwVTk^?=(gs윊͏_᧟vد}?tY7~&:V31J-|=4`@gZ]wD9/i|>][E{V5܋>_ s|Ӫ.T6,|9׈s|)ECAsk]k}j~s6 IQ&pk'fc:F"W,P(U-߇ҫKG zG6Sx>Vy}/oʱ=\|AH/ξnqH"wdzzminy $bCxMwΣa(ȗ'P璯z/]7y}b E BG@Խs_JQŪNĨB_KKhF٤r xN=j-牅.OOF;?#$F-#6\1؇:̇R2mc,~/k.=g3/ *]v:~ǻ }fh?(޳\'1Xf%c;~Ե&Un?II҃|M!a4 !ڋ^ܜvQ+gmALR(t%$= ,Us ?6f3._c m6ZUAiNs[8i\Ył`w8|& _8TŠboDb;C# x W V m>&vbp\Mf7X@IM 406=+Q|>_S4)]1ol9.=[Џ;|JÌ_znpa6 eB: خFIm.7y&FカM何Qln`-,| ֨lC,4y1{AO%\(Lwl:;.U YI2p(lxݵ7 ج ON8)9O6epA}U% /ha-7$@&^JkDseFᓶ9Dx5/.) B xeAQ/b-N֥cG='G&z@kcW"hD^k\IZW!6]܀-:R m8]&Wpt_vuO"\x냌mkX.fmRBDžn ]!tЋ#=qK&x-l;2v 0G1 ]U9,7 iz9'E> fce:.6T581}R8 ^gXư*o܀@>w-; m=>܍c8?}T^C1AC*\zxN[H^K>jH ?e Yzu4E/n{%5i~h+n| `8$MNgݸVxd%BhqGiiC+`-Z#A!7b.'^kٴ٘ Bp-,]n '2pP unӠ!O|2X N))YRxʋֆW=<:uR} aJdz@KL|^.=֎C r.rT'5\?O"v\.~g7Gqˎ_"7.og[.:b / \P%7l .[Y[I7ׅy8^NK>Q#9Ǎt߫ϹEm}WÅB(%C5Y;,74Hq8Fqہj0w;5~.kr [  й.S \RW[^Vs1~x\ݐL]q3U-}kt-jhIu;ȋ״hEj<^$6JS^;Jӵm s_U|#O&mMAkgT2ѵ錌ӽ]'>ΐ3. 8#CX}ݥ`'1N. #i,\]xx.BYOiբO%x .dn']Jm!ֆ]unD7&NDt~$ϛN*zBNǧM]?frO\_i?O5ѧ y?}?{x4co5{ܟ^5rψGε5voM<[oIiץԲV tx9/}k#mKfYA XQ?EHxAh 1|4gdIu{]4Q,53 £.xk2lx}v?uy4íI4_=pq!"9'GNvea wm ?n]G{-J_>/Ge2 Q 䂗{ܵž5vs;&H()6l$t/.Kyo`wǴu)r('!+#v#9П߻7/H^Koz3g B^ؖ^ׄS'pk5v"UHǞJyӑ'F q3`}N7֪q+do].tO:[qwmRqo4 ?}aEӚnj O('64MR@\ިp1|LuۛN?I~W]'G}pixֽSL.>)CFPEpn)c8!$/lu&-G#QaȠWuJ1zm8\gMi.WKg?+􊖲(VgM,}o˧Ӳq!E{Zw%X:jitֈ']]iR`ӲB ͬB,n5O֗6<\?* pWn=D']9i؏GM2l6X[B Ip {ŀdآ{ggKk 9j!fd3P N bknaI"bkna8RZRRcSz/+ϓտ.`MP ٶ ۧO MqV9w qiTiiDF^eD W^ jo f, 09ĖS d)1 01 01 01 01 01 01 0?1 yIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/render-03.png000066400000000000000000000410061507671574500302230ustar00rootroot00000000000000PNG  IHDRV74sBITOPLTEM>^0(kv#(Ygf?ι~丰Q#===Ycnrlnh iަɨ#9#<{rK}zS5q?P=paiz3e4#(ܳ󻎀FyB9и^q˘涊L컊rL(GJOӻeZI`g5}qrF&)<.i^ĶrrΌvD(Yvo٠_&Lsfff}j9ruP0i,=UnM?;Lkz84g/}mͱG#(_is^uNu6ܧIϥ^5Yl֗qn^E5l7(n])\ԚUGecTbtG]䁃§ຣ>p3?j];Sx'l`P#.m{lnm^>w¬m۝Z.o%/MBu1jsnWKب#O&SĖL<4IZq՞]е_Cj"InI/iƲkʊ9տO79y9~>̽{9;ܙGG'4h|:uC @3_g?4h|:uC @3_g?4h|:uC M)z4 krrWZn}5t^_pT)57%h\-|YA)n@һ:IQ-|?yy2q# ys~]cv%_T&]y^w@T16]®-PC~1!ѧC4:zK*o_,~*y=UŘM,clRaW G?8#]򜜄5I R8Iq2W*EJt;' Lskԣ4PB~(j;h6I&~# yIkq.JD? PIvON@]7D:svu + K NpzzxV`A赖S>&A6)F¦O"q[h e w3FnL2)zetfo;[Ԁ!Iđ4L]+Aa4d~r.ϯ!)KXp@ bz>v"ED4 gۤ]"+T*eus*98zHNN40WGEIԢo $>2}$:bw &vC\%.OZA eZ@O J,V*ߑ8Pǩ_ȋhE߈#ClETyhkjX~, ^r)5$e)^hd.<5@%DlLtSL@VBVHMRTU_!P =:V;M"mT85Edא{0 P5Yz %dF[1Th0)K,`76R@}M!ᄤzx x U[oIs\v" }Rj]o8]= WR8_RT|$@4[bvaC%5rQ@ұL\fM-B6,LaB-J7tH: |Fɂ kLN&$3 rYU$IuVHec7PovocX*}o&EooWNK"ó0{7o'Y$wkN&Q+)OY Ci˭BÜX[bVp R5:,ݵ,^JEZylj/4tPU&3%K47Pm`dgJ4\R$| pO['&&R=r{AyIA{L ԂmK BzY}PR;zR#p:?')>04Q=ur4TB+ j%H)˰zq,桠ݡS!fA:ܧ}JFR k՝C{{iOш-SM'OSur®6( &uY?(`ι2RN"_LIq߬(> #URWRLH-y6 ,@d!2FrבTZC%tc)҃:>ΰчK)G>Gr~^z\84:z*Nct#n;ާ 0i>b9)!ѻCiOsOǐT(>D -S8}KV@7"dcv۬jOяv,O|>oH@a>EiRٴOoK-ZvEF\NRX;ZhR +G;zZ àUB<(UhBIr:t- p#$ϐY^ؾĹvG). {<,(a&Gh6PBIqrH Hs\~gXҡk) FDё]!y;pBn&7ܝ׍;#Wʅ*L>1mzrH7~%ꇓBҐa+_@gZyLP?4ҐsKPGhهNA ;tق ~>qW>\PcR>LT#Tm[ XȥZ󒆑Iؘy[7e>wh![_(@ePR4F&(Eө%࿷ PA(Pꫣ{i h|:uC @3_g?4h|:uC @3_g?4h|:uC @3_g?4h|:uC @3_g?4h|:qp-AJ3,!3j1}U{i:7q+x)2f:7)^ĭ3 3x@)@)@)@)@)@)@)@)@)@)@)@)p璓{:Èq&bxO&)rs5{>ӈgq&1'#2=iijGsbܙ狣x8~*hd啩v;Ѐt' ӤȾUߐ-  &)rlorDҠ$mOuu1cIz< ;)e_5yC)T\Kv"gɩSGg"ǹa'-Rd(ƸJcObDil\(q$eY vU8L u1DWfjqbQ*zڞ`!ijwt \"&qq,(^MJ"RD}>"d9dy.rGxl'Rc+䋎F_|S}0dD J^T]FTL_=Yz0[\r1ZtC{:b_e_1uq|fK88jlhͤOd:|(NsIV;)꧉KHQJ>8RXا:45 2Ѕ2MZvB=G|}И1D[&oϒSZ#D#qr]ʤ뮕dzqR=RQYmG(&GX*@e-Ja.m>.Alڲ$bI!n@T.RUő,ѣNgAfM '%$mNH#)_ZiB8\b% JK#"KJOkniHD*CƃTFNYOіI? (k볏QJ@m hMc savҞ={2̬hB'G(([ZhL :Rj>b򯐓K) t,[K[))6i>&^6)BɩRT2)8|!B?ʤHaA:ŭpRnU ^@:Pf/4HJ19ͩ Ej$Z Z0޴H'^ \IAK i>"*/(Ru&}G(o%m~ ^ WQIi>bmR@lMmSG3ha9ՃlR),$1+$m R$g&*ITurFϐH:c;#?Cy`R1DH dVbdރH6pJpJpJpJpJpJpJpJpJpJpJpJpG˸)DgpҨ֌[0{l94U)NߡHAg!n hxJ bAZ)GR< ECnV8.I.Gx HW[ᐈ>6;iu3kbmK³x@ )F_ᰔH9L,R"E-cyKJ9ي*Fŕkҹf'߿Z&F"Rۍ̱Ӵ\qEqRy27b+̺rw7%{£i'.T$1v2 >G=F&hPfF_LZщW2N#,6+si ,@uԊ2<7<ӋOץR'G#Ɉ"KʔrAUM1*[9i:f#댵ڰ(qrEN$gjkauyoJHnLb+V?2G[&O OR# Uf#Ri룷OGgZzL^iѓl6 ;),ARYRD%Oko)Il6# {`(IJ99y"DHΤbx2v],)52'[2qԋSƳdԋw<KHsG<]mcA秓xԆ B6[XR6tDf`S]&KS)i\l)љT0I:ѓPsEA-'3̈xefɻxSWljHT- kfׇU*ц&qByC'5C:*!ۤ`Sʙ4d?lZ;R$ȤNRS S ȉ)EUьw;оU2' D.42[Xy)X̆Eo&}PW&,8}Y @(SUY&YMkgᷔêխ'9JA5"QCNgTrA6kYmy JA&l-UTLqHfZdOڤ0L;y Em7d3tYq0>(Q__L)syZ;~K͉iÕqsS?%uڐ"gRQJIuXX6TX*[xW (HlZl%&R Ӕy=E쥰tjڐB i+L?2vT M0P &3CyZ;nKMxZw"n-r"9r6V3v8(~Z[a?-JpJpJpx@28`kC?RQJpJpJpJpJpJpJpJpJpJpJpJpYE8$,$9Q"=RMh#E#Eȵ" ޟrR~s# 7G(Gd35 YB%yڶ1זSH_-jOŶX"GaTzotJvsFm$s ,Ȟ]dUg{#Rޭ4wHab&+^IfO`L"׵2~¸te2N :MdUz@F[evҨt )TF"sLY)^`a¸Zqq;D?Lm Z]?^ qQ rZLf[MgmLiZ2ۛ|dn-Z$(j<$QFW8*\ѻ,msAPt0xqT A G'Tf{C)nIQ͂I`f*[W;$*.MN *݌? Ailk)@DvҞ={2Ve7&hٺa 3|LͬJN0 h* -,x1\I :4t"0E2JqYp 5TF F&`+1_:tf92[~'N.+&C(%u tVP/@\MKL+LYl㕁2<9 2x^_){f`+F 2JqWb2Zex wi.b( BZDzv'结pw4sfS+Hv2' ,76|=ܷrK7Bo Z=n19| q/ 1@8P @8P ûRdKN>ƫRŜsr~7闱2'~e 0V3ޓ"|t'>$OtIqΔI~#&·DxR%ޓ"shC?Z#aCJ/gy~j\`㻣˞jt~{8Bn0n| w~Iq`;oZ[ɂf'w|oM_ (}J;b)7W%U-떜!NxOdah]Ϗ )6"G"K:q&~C6(G_2!IHAɀ4}ƥ bJ8cxOC&*9c!K1t\z^5&EUM+5O,^yroG 0#d] ^hL 750&z͍pb~tpl@)@)@)@)@)@)@)@)@))iIDAT@)@)@)@)@)@)h ;=x۴P; n73r$o^8[ '> TV\FhD #kY'ukĦ+':JA¼mue+YAPH_FNԽft"͔ JCH^>q Bhp0-aPimD>=wn3R=*F^+LЙ95y9=X [8J@y?:Cϴ`[)#_ |v Ʃ9P iKcÂmZE Z%2q$u!k"A`7kWhI-vi6 ̐/ ; Ka #w)X;P!Ζ吢J}z|v[3 [}t[(R (R (")^GZ5iJpJpJpJpJpJpJp fFu7dn HE0N%ޓ=ydE 4<)"@ oJ7bĈ)Th<GC8Z,šd3Մ CaoCm|u>$3}>"qn ,C)H!(x03JtI ͅ`{V#͖!ӏFKZU9<ӨK2%؄XƜ+ԄJ8)m}WX`)t"9/b/:UY kl=UxI,=I4ۿ<~GA_3VIEw&^mX Q7R/kڧнR>fBboFWN;H+(JX.6Dt6,ytibۓJCBW [ӪDDqqbD・Q g 8uD)9hndxY)D gfEAη{V DV5HH%=Cpbb|3B9j!Pߺ-u>*H\+?PByfxDNg=IE "E`:1qy i>0R R7 &L󝛏SXㆯ NR\t4G'T)"gfU ;-gȐw+잤D 25/ N'N1U/bxSpA iF,H!9w4R,[lpl>OB=iu PgfB!|&'m3힤FD RnNBCҋpwH!Iբ~i\e )nS=R8 9LHƟnMWI &5X(aBޠWM )3 &g8EZB}aБj-jp4X8|RJ*܆"7KѼu)? mi(9f-:<b MkR!oe3Jf&EP C?nkRA1xvB>,"1vj:U9Yp*8~ҥd *FhuN(6[CaiAf/IcG>Q=V/ȋQm)*,%KA KQËҳ,0X*=0bѕՃT)\ҽ}nѕKJ*vxf1Ɯl".iCC'eON yEofc1]NŲ7(6DAWgPREPD9sɎ~^کR_76 }lReFrgF2*bݳlN歔® @w>;]|Xn'kf>~]ʃYԨqEb3kګӳR)/uE{)b$E{!oNcqo,.Bi>{KEV툣%w].K>5\ЧOeY% rRE6)/EHvRSe)w)́»-E /l<^.bYZfR$!%Ha|0&ERN N;) o/t.2>a)p7={: }l3x󷤵ʟJ0_}*&/³MK۵5|#ξ(^5&hNu70|(^4TFJ=BN{iQ O):>=T˜qvnΥ! bɺ.{>:zY:9Af [hKo !or@eJ;X-.kբ#lkTŘWA2kAKyҽO\5[>+4/:fS!Jx;ҎX id'ft`~'z/NS0)W#&s1lRۮwVR"kAICO @︅\C~iO|xTT )*\WI,EHHȦ8 _S`dSU<^X n/!3RlHIYZ*~V&P))^4\@Ay;=/tMpK}O;7.TǕ; bkHQD H:voeHAmB)܆ =I'1)zo2 M 7Id8[O ,%[߶E hB"l>tlMB.(hz :d] ^hL 7eu*˜_h7 ^Goڜ4G/8 /8HHay#$d K_ =J>&GJpJpJpJpJpJpJpJpJpJpJpJpJpJp4I # JpJpJpJpJpJpJpJpJpJpJpJpT̘ _rp<Nj?{ƋС.}k'3&l|6ȋxHCQI!9߾?gȌF [ r5ĉы -"& 2dck\|nm?gCseĈ+͗3H77Z%&2"JSzd+̽5wڰy{fMh`D,ywXѺHѧ(v8oޤ^,f #ŏOIl]gf{0Kk׮8n)HP;`R%?}ݽYJ"/CdmRݯo҇Jq5mTew*}{Ɠb}.>\۷4o_?nl> K$R }){'?4ٍO!X0}ێM{?#|+߼--^0owɵ|sܺTC@/[ϝ&*?"o7-!')JP`iH#0){Fl !\t̽doKb-%Eݰ5ly~.#?#[)s?\pU;IA^K `]D} =b.TC#ˌ <{gĽw'+%#3!mJPi>>ۭ?AŲϷqJtӓ9Kq(R  t4o˂@Aw@m4R$}cEM̈́;mR=[4;'Fۨ [Ǿ-MZY`crK {8}U5wO=J::gd"Z"®F?Bi#d"2Ŋ&i]}lȹ~&J\Z4t.) J8[u4b$3M +K/O'Yȑ-n-bA)P5+KaO"WoK>v$?4r\3wӈw18~GLvrSϚ EKI(?IK!;b*6>^M#9p+|["ͥ JQi;R?ԎqGΚi0ʳ$"ET(ėIdQ-mjwgH)KisTw{(MKd.,줰#QZmOa"iRRl#ᬅ|) O+ÿ١R|]*Ǔݏ=!%RRlR #ZmOH#R+KaE mR$WDֆM׏4Ni E X#dwW}V7EۓS\~ү:8dU"(jXEG&qtkj*E#eVN !@gޭJ] 25>H^MRѩXKا-'`|}uOCm,t"{}RTL?5&FlY ㇄f^ 15T:] #Y R89MJ[ZUf%zOK9)ZJm[ELP ;IQS P ;DIykR (R (R _Go9~@F{zp{OK"\1To%A)nH"zyˊKCRܘ ź s[& œkA750xkq5yX&UYaҟ4[e`rda:ymy$ߚGKKcb}X-JXE_3/H0oٲ0@'߬m;?#SB( Ẅ9 WRdx%8 WR-[LNB?EpY@ni4h|:uC @3_g?4h|:IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/render-04.png000066400000000000000000000133321507671574500302250ustar00rootroot00000000000000PNG  IHDR&4sBITOPLTEDqYcn| i͔U#Pdi֤l;͵J(G#(]~JJJ.OYli4gp3=O玚'AAA(((g˒vߘɻs`Iri-`l%Q~vT6(cYS5mڱ(vD(Zqu<0iضqԎRSW[rxDgq,6BuqbX.fZ༢2#.ɫ]crfD5T2)C=9Φ̬4)(Ĥ@yG̰sgKWmmmt%JvܞW\O}slu6Ğz}iߧ{rɊ%6Olluvv vlKYclhk#(0B.w~}m[s7(ඈvtdz=9Th=(|WMiv q=vƆOtNBߤɚ{ע4Ek{6\&#(ݻG)(4#(5zfffl~}a76]~}t333ur]llpN8lIE<ݻvprՠ]ubJBI[y#;%JVZ_e0(ɸv],Dc{zS0!_rRSXyL (a&5*ޣ3f`00GakYמ=&P+n=p?MpMpMpMpMpMpMpMpk-^aR "cC$iR4.2d]{r \NӒCT~%_NmT{P M^53E+!bo6>+Go\N4nZbw &Y=3Ѧ&,<#W(rl8&&tn.75Ferkj~fM]lT51l׽:dib&&ϳzH ׄfz fM>87S6.a af*澊&JmrCZ;WN3 As<Ï]sg;iS&Bkإaq&löh$t]1"hXdڷl_ps L/!3OI摬Da%H:tڻ4J`IjI&7\mΊ\UdLh"}ۄ?+u\%&3-m+F}'lj5VÑmWe VF,foQwH* SoK%<ϱih%}gm%hjMK q* MK(3PrPYWdԆ9ٳUUM4A{i!W;zX*Sه2ٔ+3({;DOQת̌^Vʖ)2) wkWYɪSSXE)Ju~&1UG0-TdJf%=kEK5M ԏiJHSY3ʬ'Icx%!Fǵ5qiM-;u WքjNȼpeM@MpMpMpMpMpMpMpMpMpMpMpMp`S_QWMBCzPGlhj+[$–UűkȡEkuUMvPM@%  \Dkhkā&F_0p Mnnh0\BRI.èM"Brsc}IGa&ܤ)'N50͎4EmP8{5 A;}bz?N V SP?i4)g˜6{(iiLiҩS4C[OAG<5sv5J< `LBީx=%eE'%M sQ{XpRإIn*"M޼tzP\ca as_dBøRأIDaINJ~]v1_)%*<^ŒQ+iH+c&rrRn޺ys[)]#Ш/YY6n=,MSͻ?6?cƤiKMײh_[e}_ݞt:64v2l1&k?[՝Ѿ -:=Jrrn_DIgΜ77d.)1'&M^GÚI>EY*o1~M}B}S#3lyb&%%*խ9]7osedTdxRcuO2_~ڭ[\(-(GGX`y[g52_kqT0&oUg4UK2 K|8h8&h8&h8&h8&h8&h8&h8&:i7!h,꤉<@4@4@4@4@4@4@4ث`7A`&BQok۴Y˶B!K!i!3aBY.]H}شG=")Tb[ZmWMBলmQMl+ۤcb&6,TaYi^?6S_ hx$@f[Jlk]hZ$4qB$J4I@[GդeO-; keIϺvF~[gu<]{%olb d L*{5ٴ|Znڴ)eP,4}Tgbα_M$Z^?7znM|H â,59GԝV7g?4WwY'Ekmz=d@jxlyb&>6u6,*hXKBgW }ypwx)>Y6*6$'YF5_/Ӭb O o E*mR6k8L bJ(M3v_rB5ߐo(HIzH: ΄ J'f# ٞWM|$^|FJX+m|9URma-/֗g.KW.+>3]^Jhkd0[[kl1 b=)'*ݚD+j 4փ-Mc(xKlk",lP&&h8&h8&h8&h8&h8&h8&h8&8F@#vIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/render-05.png000066400000000000000000000763231507671574500302370ustar00rootroot00000000000000PNG  IHDR$-vsBITOPLTE#(bp>xzE.ՊPv7hg{PN)(;g߃]LvIl;Yl#IxPρб-ZR5M mߣ칬nW^k|mY}Z5rr->W-SzzzIu»,#(xYcwӤL<4lдkwbY;ExlBG߬L.xuBxqw`PpzκȚ0]r{ߙě;#(wN@DOivP>]'rmvl>.;nInlBZxvEkSJG{ؿΌ«`5Υx-)5xqFWISyZX]Uwތ;`]eE5ǒmxܠBɈSPnIYcn->?.O{lVG䂵xΠ*?^7I^E]Q|]Yvs)IՊ]fff glmJ{???VDgw/rIO;`]Y?ahpʤ!1-Ir5&)~IwWB$Q+\/$9Cާd@D÷9na5~:mz<"}1o W.rX:ZF'ޒD ڨ4e$>Jaӵm Y;$$ ϝ s%M~/-Ь$d%~}$)ɳڦ@I!H9:$IIL}˒OIiCԓ$Ѽ$:2U%$&0'}ȿsW/I9ɿZ$ݍ$.H-^DOZIȅ'g(^̥?t7${jtaȚ2:DY9 }zېFC7ه}T|Pn)$ٳ$ӂ $i"\ /bjtRݤM6@>q}KzC}~t/x<~+O=͢$I#H0O%y#?W^o*JӒtuSՒDI~$ BPDJAI!( "%A$ BPDJAI!( "%A$ BP5/]gۥ-n9/FG}>[%z=m-t&(ϕm%˫SWlK $-ar>cyDSq[[Clƴh'- /8i2"vvpҗ6nxux=!4~BKDE˒NjYIiK8Y}#W7ΜJϚ@,0űI$ Z#ɂOGZ+36ʫIO2TU_?OsJ9tɔh)rE> IKSnxI"VJb`iְ#y|vfb8Kz͢(=?9t\:*S2ٮz#d[wG[9`јãkRsZz3l:hZzMIpU-j~>h4hZ1γpPaL"95zdCj"HG3Ca|Çb[룯o#SwHwUmP8)kgV;Dpn2`}ߢ)®7]IEkLB7$F)z4S$4Yyd^Re$󛛕N80J!G!gQnЬIb.ÜcP ؉ɞEO Kڙ9yqA3Eelmwb.)WR2VXئw=sRW{70,f0EIFۓgٳŸK=}qU|w;iRoDdO3qU{H{& )g֑dt$WΛ7sWN]v)+IZtu;$dJ@@UI+U",¶r^Zu9γLqT 7;+86- =$!ƨ3.Z$ZEcAhҤt%Hr=zE.@.%N_">YͶ3\Iށd1n^ݽwꛛNrp|I=M<%HA!hYݧ $ɫ D@d)$iGԧfJbյo2tMHRoGęQ1 T⫻$j1h 2 SvUw$= NYl+|zeߟ;]53%QaA%1\VRO2M(p,I$z}z- `ʖՕ{:{4͖&z. w${^$HK^W/$nzSIW_~9ue;7IPOЙ0"ԫ' ̞(i % . iǗiO utB$!j"?`E示$IRH1t>')'U9%1:&">aI]DWR&)&W^In[_'q$Ixh43(>D.0,oIAz䜕a-JnI%i7+?w m5 }OQ O-Փ*QInMڙ[G:p' B ,=ww2_gII2KvhBnm8pM$QD n$pvT_^zs:# 8{]akyXR!IK zJاVv$Q1aZ#Egria/I=Bȅ:ɴ` }>uWdQ] I $R`D a41@>\)q(ai+vIgKI$ZE0R7I+I*Ы]^$Q;gN?wwm R%i?nw ?MG}xH@u쳴n& 7rtRLt '7d<]i囤fK 7fI->.Ia|\ll{X萜O ˫OZIfYMLPCG3"٦~;9t je$⹩4|o@-U<ǠqI Oe}asZ'-S/yieZK3&Vy}?σZ$ B$H%A$ BPDJAI!( "%A`hDÏ ;( "%A$ BPDJAI!( "%A$ BPDJAI!( "%A$ BPDJAI!( "%A$ BPDJAI!( "W4 ?hC'5\|#}ҥ>=O$y`x8}>PiZb~H@AޔhrMڧ+P |! 8@'eOaNXem&B%d|!cᏹ^=%)ly$8q@f9^ԯxH"] # $G*Iߒ]GK_jk:^V.~ZW[%_d[!$6zT0ύN'IdmK} LqaPf(>n .oQ)RdHs|o|X^4X@|^|%P^!( "%A$ BPDJ$5+;:-kPy|;s3x夎4q=OShbգ1(O6\ᬘx/4]%i İx]8UQRlTQiHb$!HZO"?&s%i :A5_Q[hF'cI?irϯ#נbM}Νd _$ge8a;pپ/\GuOM+s'8С)-jͬ7lʆw۶@ 3لۢ15PUܫ6+~Jzv9vP;.-]ut$0>uZ]́ΓDΦN? BPDH;FkAG}xM8l3So|%t Iȇ.MII,n)ȟYmde%7v$+C2t@6Do~[I߽ǾGIXEͣ17K~~O`p>xKwZ+}`d m 'OFe$75EI5C A4gGQH;Z͚|~~}jɀ &-b1AŽ֖(ZTL1+;~eyn!f?;nhD(>$,"ۆ5Vyi)-&C 9kGHWz1.7^#v8\y⒫D YHs|!q%уhj $1֍GXLL~m9IHO7ըЃis]*I@?<x́ O^;6MP k# *i!t\ ע[BIAryQ!חFzS1՛R&oFbà1$$~-$I _F%_~e. Q<"dvm8DK0 5Q65gO;zbX,NVJB'{ BwxNCli?'iIIΔ'Bokө,>( "%A$ BPDJAI!( "%A$ BPDJAI!( "%AH>?NDo$0^GZO$l:A꠰)5iU>]qo} I6< 󌦭h=o(&JUFk"'QI>r?W7%.IZbumIv.γ-փ H8B&X.O3>ӌeGnLKJ$ϒz;9qGK򔔩:ӎ"&>?5Í7d$-4ǔ<%zV(Д]u$%VlOPe4M$%I/55rhu+G?$@>\)-n{IȌju _,IYyP4BzG,P6ꩯ<d$rO}FeGN]5=;XgYyI/eU'IKl׽t'O]Ka}$ *}rO$y^pe)@Oi\Lt91GG$XOm-IGBr2ϔL$N [V%\|ч^I 29v41:Ȕ\ vak`Q5H (zn:Ep#~Hf >P$::lqdH 6SPf&)n NBĩ!9zlc Hl* tI[l_`mhhכ{5!IdnzKaR%IK.R% < {7Ʈ5@ .3~1qu&$R upR O>7A&rF`(<%LG!` GVm(u` _'# $% ̵5@z \4rd~̰OY%$pA"_ V!l/FrDYRxJeI[WVyT h)08cJi5Ƭԭ5nCUg'i |f8L^[y-` %}j$ʣryQrʏa3$v5D<|dAn^Xg4݄e0x !fM_7穽㐎;|֗^wY} %%40 BPDJAI!( "%A$Β$5yCMm&sO;gےXػZB\)M,m$oԓd +wWaxm+M r-{HTbf۳a՘&nz$ t1QwnP xݭ~0m-7]$ѳd:%HbXܺUï9,k.9Mrecywamx/m6NeY,_}_i`Ў4oRhNvN7$D%4&k0Cx~MdvVNzFɂE䑤<;IE˹rE0;f4f3 {f;$jSs&3u mOzuZa5?s&+T65dcF.Wr,&4lM. w$奯r7o,8αWflt5Ϛ ^]HUaqI&4ړ|4kXiW_8y6Edg]/OMh%ٌIn+Y0Vp$$,2֛%lq0@_$(hcs |0DPsMsIBTaR)o ?j-$Q X}лl4W)!-L`t<7/g9x<_0$ei~Ou0!\DVOh! iaɌiB-Q$?FɂzJM&+tඹQuNBs4 [dk6mpG%qx@sR)[|\0*F9k. =l2weldʲ撣a+˒dZ{`K$6"qmzkJI _Bt$m}I BPDJAI!( "%A$J2r F4Umۚ*3r6ߟ{Jm/@K<$#YGq$X]~u_I'^%iw%i iP7:WmTčΕ^C9ښ>Q7R %qs% U_ udϼ]U6!s[[}_oM-n=(@;{Q7$m~k#IJF7$}4ֈ=w?C%-|5uX6j֯>$ шDQ::/5ctț _%OIR]b`Ýw}0حXX:%i%@ܗO{,[9 +乭f๻K'ʈu48?ϔ69̵mO};|zFlK8=1lꎣEnŦ/|`Wׅ$r2ymIÏYjf0hdx=F$Mx8(&<{+1'.AV3t$Wә`Ӹ"X34uz| %i IxݩcFȲx΁D_N?}$d챬7,*UDw|;R$H^PߊeF[KՎ&AI?f&L%+ٵߔU#x3zQ&˚$Fz %^9YĝN0K>A5EhjG++X{ᕘ46$i'JLnTI=3ǚp%q%iaZ =eY.=v}rmg׏M0RD] ם22qWsSgn|>vd :qj{z=١$nt&}$ބkh)2; /ڿ o$IWV,$[੻R\ znkJ>[~>ُHcR>_(^&x_|t*`{%,:]#GuDI: :j i0 JEW*/g5 ~9gS<=/ݛ#~a Dvc#6 BPDJAI!( "%A$ BPDJAI!( "%A$ B:KGcZ\D^s١ mTQ?im-a*Iߖl3yv!ߍ>AޒD=IZ' `?P!lV,J^)WN:zmcwZyc}%ȟm[$qۿ36L'8O\|~U|@u̝z͇~-4 i~nN+fxc祍Ā$UYo Pҿj T,ņ*[kkO؄V?? JAɵ{ڐ8W'OoOBu'8R.Q W3$1ëG^%ԧQoLv%q~CGb6>bU Ǭ;5n:[Rq $䧱nY5q$dG@c,zrIҟQGc,Xm% 3V"לI2bo'![ZI¢6T$ǬtKU OGk˝ѿn0J yđV4@QbyI$|e8_[96: olpc1Yt*%@2;_ǻ~6_ob%{%_1nU$6# [z7t|b%ٳ~EGŗ6(֛ԟ8{'t'Q_s<磎'Jے+$0`'IFB= ՠ$ BPDJAI!( "%A$ BPDJAI!( "%A$LPN%A$ BPDJAI!( "%At$xiHgѩpT'Kj>p(%CDZrݜ?`GW99Pr%X;V6 ÑN0MdCїP}d!K{fsٴIJ!V.ɉLE >1n"ǽ`9!~ L&I I9@=ΚӭUs ) LKW)&&)5!9!U~{BitN2$!9Lމe'$C$ΏᾘN\ R UJa=$UI۸c]`ކZr$a;af H <{{bx-Ih6iÍ$t1\x% R% O`_-;,rpcqi HN,Ɲ9 y83|IrOL\Бɞ\$L\JVgazn\^cIke\?M IkDjưS J݂twI`+-<$Hܪ9r$RN<ԣl/FJ$i`sn~ |I [E.p nMKn_>>\l**}R)(3`LI)FMϞ꩔CyrawfJyQp$vihʷ9d;/\lRX%JGi$Y-m9ۃ++@Lv0hӡ]֬z=[-F)b;DP\`tD^ô6 /"BPDJAI!( "%A$ BPDJAI!( "%A$ BPDJAI!( "%A$ BPDJAI!( "%AX#rF??RO5U|Y^Mb_~h$IJ ͋Wt 7gI"IΡ@R; Q}Ƃ%IZt<4h)r'y3L˶W-m4mLwDu}U8F1YW6^B]\̟Ɔ."%GR$^|zKQ wI4ANְ#y2xxtb:$I=-UNP+Vf{^_YmuiIsG̓N)iwo{bP7dҭ t[Z\itP)Λ]73mg,p[Zİ/N#J|pq%{VнVfS{qI1\Xz#:Ȥ&~53nTnȯ&γC9RnDFoug'] tYEPMI%U5mw3bVl t>ωsLwI/gZ& !g]ƸJtu;rBkW>ݞ-.Бf%#ʅ6Y(7$rY>OÜAY%rO$$"vϏj KB&4W*ITwŨ#HZ (JlFobL S%Q St0L$2xl D'qN;| Iub-xIBI'{uA,x 7')kq$PG,'!s֓?Wli;>D~ùv%9X$\Lwg`dΪDU-I(=? Q s2q(aVxNa9* $ lź%{_Dݨ?w m#ݣ SаG-TIKJڪaIXՂȆY${ͪFfd/_H#iFuҫ(O1$d'y#TIP' taQJ]%$)r'S]ܬ$vI !OGk֧޼[W*N[~nj@ ( "%A$n) ҽ@I!( "%A$ BPDJAI!>u> ;( "%A$ BPDJAI!( "%A$ BPDJAI!( "%A$ BPDJAI!( "%A$cI~Z[q,SoSK%jƭ#iyb@eAR&U]sDLiSV]oҌdZh$Q L蠖OZ[[@xXxU]5kk@PM_ZWY YwoLO)k ?Mv$C_ e[CK3P^=t}SJͰ"F.3}Q4R=/g{YyEMO_zIܚC.O$eM3Z:t=!jv$9>5Uqĝ,XU鈱5Afs为{Zնj9-IZeSڝG-rIގ&Z_mџ 3}vo"1G_W,>?p۫Om0'g7{]P&RU(~Q'L΀Y0>PWm a#sC"N t% o\4)rIIlg4^Bi4!XlxSR\(J=_2IBInR%nZ5WAj[ꂷfLIh7q@l7n~:qXv>44Y4Y~KRc4Ě3& 9H|N7=b?J.\2Ef]ca"YL*Neςl߷"'9Q0-˔HٴO.e5IxiMSIܚCYMRL; +dϜq1d:*ɉLWU$ ?5[(V=%thE[n1'jn'}nImhh 6M>JIR[q8oAd;?7$Zbn#$nȡCSsBs{:U6$ :j%9q1ޚ$j$yt2˥5PKcWmaT*$dO.ٽ2^9*$$}f$YMQ۪V4ܚ$Q~:'#5K Í7%\J/lы ={pz6܌f Rf\NTF`W;۴>stp=ܨ36K9 ُCcЗ.IԪ 7^ܠAmV]'Ϻ[ө$r)m'~|Jn6IC=~nU4<4ĵS4elm7'FR`sh)o! CtC%VQV C|qjg;6iI-V/fII"Íi:dLRíQpͼ)RWys PK3\eIBOЊ$jUٳFEӉEkv|*фbԶj9f\= ̭T%ۺĵyId#}j$3|(IK4NsاQ$84}+ $zj!J/e8GäsK |3e=]z 9r'y5H@'-03JD$pؿ@/F[`~NKwkfMUR!59|6=iIomVD\3>%pR ڪVGDucܛN%oJUtlmC=owJj9nEUk7k(I{7igK_Fެ]$rJ BPDJAI!]/ ޱv{:[9^K$H%)xI ?J?;gLF)$)}J~{{0CF } ϜR(ГO4pW{0Jrf|9QRboՂ7;FS .(OJC=ހc D#`ء0CƆ%ߒ䕘y n9LO}Ylة3J$?* XgXJqѽE<)uixC:"2;.~4J+-wP &sVrgDW tҒpiNytQ_շ5fҒLRK<< JRw7|<-RTI3n)4O͎5ӭ )/ųR*1Jȩ&cUI"xĪ$xom2g5@8qS]GMnH(F48( &ˤ-!׬yj'àI6(l$Mv3HnO# {fbM8AV{שB\(zuac=$i; +IC)9IX|B~rxXӉ*3荩H^)uɴ#~eG59?/ZM$y4G{;7c_n=7myRics*7lKjaw$ζ,Y\L$i-m}:BWKRG?KO⃚,;imoU.$B?bG&tSI8Ӓ~8$ BPDJAI!~_unOBxʅҒѝ?+I3FE%gx] Osd~ w2kL⅗ΣgeOpRv6IRN^lj$lmdqodFڌ?%QyC䏧~UWu,B!Deį&S޿h-$&ZiDIVXA'OIx]7~  xa,* Y:rb+Rf7֍>$ksc((ai%~nX|3  @bm75^77=0 SIsI'.dhZb~:"N|ʔL6^vii&tN޿c<úKk GǬhzR-R<"d ;Oh!~ŷdwتG̓Nuh-٬:HZ:@eVbP7@R`RitP)Λ]73mg,p[D/t'0n Y):h,MZ8ʡd۬:(fەɋގ]V_(,3hHS)"IlRo()siC1UJ"I;+Rqȡͪ@0gQ@Yd@)Bbp2H_IgJJro BPD!BPDJAI!( "įLlSlq%]o|} I^2mmIޚgAў{ەor4!IEeӒ(ĭi94@#ORC1SNd6ΒDr+8ҺnADl/4!۱7#{$b$VRߑOgbQ#&ȅ-'GrDU#9-V8:)$e~䲳YJyWg tΒsGb U_ .P U}8:uT %[M6+wAn-{%_(ݘ\| ㏘&$IҸȝă`$};E]ݨ<%]'(ZhQ_Ib.oIdL!Y-S.yopH79 G//IlGL;n(=])%οsP^}(( b넚 1{hJE-X8Xx\Ŷ‡Hݑ\еه?$ǵ=VkUƲD}]`XzF^:VK،6'ؠp!k@yF#Ȋd-kc8a𲉤(riZkI2l.,=zHГm$Q}x:!o:;1gXYu׭<ڸ1fh'$d}uyQv P +*"J@~*yӢ^vț&^`AH3?[pA#H)r(12y?."ݺ& 6ioya L$Vv. @5CI-30!rpEsƬ% oL.lcX%SrԔJB pYq2w6`QUyQK1?(E0ny2Q\1r'G Mq3(W6?6WZ2W'xę]k\}UޒtKӌ)SW7sgA|X(p7dC&I 3Њ3 b_2շ8:!~^$xּ6yfk8o` QeJ=2 ܰx5u8/ }w{ƽԾLeo)@檕^bP.RU㫖"`MW){Ku@ *Ib;{W"SizB_e K,$v$a d2UV 3K_IRՇX>ev'1Ixd-S}۫t[Ж<5LJ\EͼGy *I+fbNgn_+`6Iba9IPș$ߥf̀nk>ޜWܫfd! D0uT"N2jp[t}*I%U+ kIvB${Q$6j=suN1G #j0$P~m$ܳ٠kƒe>HIDATݠK sd;M6=Mgu@>@I' x;My^TQ3ClsGx?eo/{\,QxFkN<Ϧ$,q N˨ Вf8j-ڬIӮv 4bO0 C?زW7$YZ~&L+`рUgsIF6OqUDzޣ V+8a'ޔ dovbxRn5nSy2h~)9}{'FzzcH1*r޴$9Ѭ8v$l$`}`OʔvQ+O%\.^ŠAJ:zLEai^!hq_s1bN9ߎ_rێN-.oD4=g{vKy[cW> cxE1V"0GN˷=W}$a!_!_~bմՇbklR 0ID/3 #|UBID_dCY܊q^# &`ʝvQV ja#uw( ?-*!PRXb$v pޙW^'53o7uy#vEa0'l;J, f&"J`SSUgPݞ^ |U^iP,Dĉa x#X@d- L%ǥpxUUu1hI0ԅCViQ!.c{e S@/eě,M4Jۋ1yx7"IRfodZ%IT(ŋo\FKl3 #ĪaYg|BIDGzg}L"bDFzIqi_|{cЄ$K>."w&~#ID tQԊ 0-{LOoi]x$=,ܞL$ ;pVx䔊CJ2l'OFjoy>=sljۓx#$rr"#Dqi>,L,-]A"ծDT:_"{{EE>q7$it<61FH2q VI(?D #T}f_I\[G/?jggORB~6 fO݂'@ia64ifMx~.MH^>%byf4*;lgyf?(xnj`#J[TbejݩٿEɘf86߸$Ë`s!IbGV, lWvk}j%QȦOLs{Lt92u{K03^턽C,Q%#LaOpn-J,Zd[r0v O֌MD=;zI<-pZ-kW$xn&Xj[,M7oBB IBH!I)$ !$!$BRHB IBH!I)$ !$!$BRHB IBH!I)$ !$!$BRHB IBH!I)$ !$! I>3%!~$BRHB IBH!I)$ !$!$BRHB IBH!I)$ !$!$BRHB IBH!I)$ !IPP*^Ro]@0BZ2/c7Ij /TcI=vq- ﵚG׬ AgGc$'B5j,`$u%IE}vQ=HRՆKRzSATO#į&$I#QH|S*C4^Vuצ>S**%9o\,%2f&ۦXC/w"IHcCIUՀʷ>Nu:I6mZYUy^HȼHIHc˙م*::I651`BR]r11pʝ?Yv8zf \qmʈ;fjd9\Y6r6Tl-ߎ+T㗵_1cslC;/ NCK2sa_{_67[ H2mt'0mv4e.<?4$1 hs1. ;?hI$Uso xΌ@~)fMC^0l+K"hl6:GQQԽ$+fqS5 ͗#-yM %q9mP4IlQIGIZ%ݼ ?6IݱA5y󘤯>tLd^IlCǤv- wޮhj&I4fE%𵢩 $Ѳ Wk2m1Eh>f~oRbeIb u4Ms0YwmjVn3sI?3n ʙz^kSATIBH!I)$ !B7O*IE#IzӂY#44$_Dґ B } !$!$BRHB IBH!I)$ !$qO?zW9Hs<[m\MO)aF5eHW7 $e*>Ϸ쁸RIV=^G!I*m$)}Q؝fs do}*ՓN}*e[7Vj"dd-R$x%Fg]_u!t˭*eZ5J!pI,{ȏ$3ˋ]q\lגĽ*ŗQ+UNWkteY7!;q@Ds\)0:#.9=>/t Tα;Ԕۧꖛw  4hE!2;ϟ|OX_ ZpKJIaM\yTH@C0MSI:7nyKG6/t9QeXc}=MR7!#C*r"9h-[~37YgIxK,Y.OKtt%"Q%a$B^$č YEmH^SI saHR/Eٞ,_e^hqWSݾѕv>HyL-3UqdlHp^Yܱ!O,f L<xX1g@$-W˶I)0E< fNI(F 7+8}Wyx˖ՊhXdppʖ9cy'ZBϋ\ Hi**β$թKc$yy==֍wi3( ~ɿabH`ٞ%pY6ɳ$>'1݁#5IܢUHz㩔[?r0$WEuj[r[E֩G*.Ţ{"7B7` &Ny?25 K^޸5$mβ?2ĥ'%ձם `$fڏYN?b J^,%ykgN~N# L xد%}?ǒߓXiBRVJIxgXD #JW+5+}X!If2 fK3W[FID~Cz$6$+mU\/ 5zu18ux.L3# }W!6t3%.$'S=38o&U I3IbOJ253$l7 ұLnIT$-2f˪;UZ܂y$$(X22Wܳ@f:7LۯcBIOԹ`I-|uҾLa!:E:Wnx6U ,)9ꑄ09 b{;=yMQ)l˙]ӹ$yv$Jҏ+ip OmNaܒru yOlJzG^a=s}$Yp)>QNWϛW$QS;`8znt?q('rdxww߈8DQIfw7x k#$'. ]$R.)]l"*81"}S}oV*ڧӸ}*]ނ+++*dk1@NYYYްв}N"V8ls1K]*}kkزJJJl1}úxlVzz8]Gʧ}NjもC”G]z"8GVzrV"8N̙簾˼dGzzz }z@3̧txdN81@VҐGV"ddGj8zː,jkkkfffаGx㹋lڸʼAAAߵޜj@*xo@zN*z]@"Vː”t֮d333}lVGkkxkt*dڼΫ,Kᦲ}¢ĮzGdǔ}l8ȼ1lͮ}@~Gd˦ʧ"G!!!;ծ@@]# pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx\TeǏWYEXK~n6 d_ vδRj9J8趃6)nVqIԵMĴmZf"ys3gfd|g0osΠ7@W@78Gtn# p@78Gtn#-0=)}> px-g?u?Qfۯ…ǣnˈiOU]uKݝ<"\x!O= yFxr{m"꿑VZ:w<#~Ϊq(ISHӎE+atW_IֺELwtٍ'6kdcIWس%@?v Ȇ_ 7'n%-e{u#N+܏^VAKvCAᛵgRWH0[zG+#VȄ.zJG?3 Ou =)Y!mk^}bN6Rjеٟ<+Z.YچlRul/fStz.͒$g>> &M.f? M_<+\zNs'96T \oM^.䁕'ݾ\Do^`콉$]^F2yEh.!;9HwN>#D| +]!N|yYE$3YN΄KޭK<+FZK yЀݾEjIr%VZ$BI0< WBrAR!:jOntuǤВ8_HNbB{tetP&M%jߥ$FnAI/Ur]-fWDi#7{/U+C l>qKyU+T V^Hy۬[Y#u.p|-9>UgQ)]4p}/Z~$yCKIRJtK'E4]z#cY9zgQ{qgHu9#XF1=){{su:~~F9B( Z\rvFES(v|=˥kg$.ɬ찔 M)Nsr?i_t KD?a 5oY@g 2Z+ƄWL{Ÿ͔6\u:/2Xocݫ)-q\c]↸~}yuits[ȹk$J}мzyDץ--81z;n6:Z֭r|c Y$m6U'6&۵9a.5AY]-RӤXwa꼾>n̏tˠ9o\CMʎ˦%)55YyG-4 +۽43vsD^Y@V)?e'Ra]Z*FH2")m );"wj"] ŔLf7غN$ZA{6l\W萾kYKͮ͘y֍d>ǀ Ebtf\]v[bkRtTѥBݦ8/~TZtD+,hMsVyit}0VW{Wպ[u*ymRCּ=n9p'[6m,:[cpz%JVte_}{v#EQ-%=VLM{< `+S9CG2/-ڨt2/s[Bӱ; Emu m(Tz0k&GzE{B)ɕ))ndZF6NTZSb8f{scn-*ް\١B:W71MLRt4|j/~7/syz!VuJNi\Ck@7O߼̍Un@7u|ֲo^n &7?ȳp^nuMHKX\U5|߼ ݀'DrfYP  '>݀McƘTA7 &Ә1P' M: .L:In ԾMX*|KY\Tni4tA|Sv͚r߼nGLEc3c|ܠI#-Y7_ݐGtn# p@78Gtn# p@78G<߮7>IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/render-07.png000066400000000000000000000562031507671574500302340ustar00rootroot00000000000000PNG  IHDR6sBITOPLTEɻzxV4z@~G)QLEzC>QlB~҃ʜ{1=zO;'xէ~]]-C7(Nڹl}ɅLf}ooQQQ̋D"֙(VZ(((rH''ֻa{fffɌVzoNGG-cqڌ}=dNzʱ';qGszC1d/Gs@tj4'4''vd羋wsl8V'ִ#Vǔs4BOV*]-'vj;'zVGks}}]~'Bxj*υHN]s)(VjBHǹ 7_bؤ]=h蓼tɠɠqֈs4jS0*VqsL/؝VKz߾VB4֮'4j333''4E(8s80/dV-CkǝĦo@@G)Xkk{'-BSڸc;Hj*;Bqtէ}L'HV!1jVB}D*OjxόHɴjsk4V~Ϯؤd>tcB'ޮsG싿';VV֤KݧOB]mNܿt} ~cO"!G̙,d1Ц4Hc͟S(*Č1V8sKv=*xHOa1[ pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx \VU!4SSiʄ`A\[aMZjSKmtTpKz57)i|ܒLC~8䘘%?9+/;ǞgF_={s}1 Ƨ+@&$&$&$&$&$&$&$&$&$&$&$&$&$&$&$&$&$&$&*|+rŚꮄD}bEpuWquGsl?UU#U灜1o+$,UY}|i?%ǧީ*RϽOz}>.'||7(O(ԽobtnWŖ G?y^mآfܻTƻ6(jc>>#P~U 5GaqwTM˫Aa,-[E7ޅUktJVr6߈+mMUzjP82c;cPZJ(*E2W.{y皶u?L@!zgp@igfݤ2)l]|kScR)l;}3oa&!~pe{ɞmxm%W©ކ̿ȱhc')c1AKuu$b9rh Gp9g5m&p܈[qt^1<Ī rAzE]`nujrMa˞ │%=zhݾLJl+RtYtνFvpSCr.N7\UEjt)[xf% pG .ܮŸ{5}v&EN6/2E9gƒ슶_*'#PsQM}lgY|)uBa^sRx.]ZL+1SLn?y2 zE`C@+zTl&qY[=3V57yd"Cmzc߹'lNJvpY6(_b [@;\ۀv>+QO:ozlso&@grRfMphҲ.qE;;XAaChKejSxـ?jM;pr+?eM'ZsI+"u1cΙ"kS/kںLyW`1:zE=5Y!Oן}r$v#;A'Fe6R[ؗj7U10! cS4.mPUo{[(#8O{y}3sj8@¬0{yXin \2OPqaXBhf &G/U ,RSXL8pvWXP (^ t:ۍ:#zEs`,Cm]^f( m~b=[/e=b*ţH#W qGbIY`1a3 G:hW,]! GKI ;􊡶<;cXsm\fRh)!ZbL G!^ T!)Om}ou' 'u#unmV\a,M?{gvU?iG7T Za `5\ovvg;+21I@}2um 6~M?EU i0>UVXp}*m40nt$|C@B$vQ?8lzwq.[kt9faxlo0ۦYnۋb{1?k;7Ja⼃†m}?>)nS{Ն+E[1')akmz+ CN0k}m=\:vڴdw@62+vhW]~oK 3., Ż(B_84>r/1J/q_0[O{~_Va/U7 = E +cN0š/É_DMKx@,lyb/Rj5]aL .`[gbaڊ o;)^dx[l2_ſxdk>.'~KF<+k>;3͖zS;u lžںLSM7"NŊoaR*6bcy ]~Zv[KY,3 ?oϝ'eKiOO٬gٴPz5_G)Q$jh ۦr}\ZY,ߗ ;_8@Uw _i`'6*8Wـlo4w:|?TF;0@U^M~}Ox ۚ-\OtmﱸU6{m@qo:VY Lߣ #sc..}C/e;s*xy͢>y}ND`0X/(l sˆazM׵..wZ,p >᪗׮}( jYS;Νp[A.?߲aş(oNZKFPVmGOSؠeGt#-ԠUXc\ASЊQ9Og 1w֮ǵ9ܕI@l.ºN/.aIIח_w /f(noEkPX~>8အ|6)^a*^k Η"ępG{ԁkNs]*,"/ E-eZ-rBlezF4,; p3iVxefI3 9Շ2V?)қRZm_8s^.kV7,ܑÊm`p:ذ%93.ą 8+,ڬWꞒ.#I6lcOZn'b+7_mΓ%hxc"6w)֭)Նvm<70 | 3؋O]шp[K¶_j/.a/[m  vQ 87WCȃ>c_cq0{leD9)+nf&w␯*;cx./a%{:xtzDDaM5{- {P5N⬧ˈrR^Ŝ^fTeK߳_K^}}F,9%)lbWJP}6;*Y K}&>_!\ͻKĝ ^o6pΜEN>ϥ Wk=}GgOЀ/xsQ&ʯp%`CU8RISUۆ !G{\ippOWRWQ"$J~ޗ.~mUi@jU7w )u?3~A_e4ULhS, Q.مknuQ3DyKapRKen,x(9B٘aba'S7+]0e TM0 uP82{7ĝD 6gV#]I[H;BaXe;)lJ> sߠUhN³sjp%n5ޏ(sU !mMap©MJW8ju%̀*n3qGQ0*&Q&HaBrHaBr„„„„„„„„„„„„„U8fQ0|}O-=2|.2wEM\RRjsߒ2HP*\q֝W\ 6\:| Yf6lڞC/Ma/NaKݫw]YKXE+sK$)|GN-gHG5Y q1Vuݓ:9`]'ⅻO]t_ÑlڻFdQx^u{2W's {5x WC$N -qp"brTjy-SعKN\323nї(FDTIT S4>< =z'{P TĞE!p2ѡ/l=ѝyvy˶0=yvyd٭198[f,5e"Wx\eUz-FMWbawOB 񑓓͋FsrF&g]a%j~1( >X7l-j/^Z<4'Rռe8:9֨&(} ^d ]zySC23(S\DĪ\;Zƛ ' c^{S qgF+&+s&,P{Ha;yҥKC&+SB 1ZF Y$h#Ϣ!l o"^hS#̣y LOT8=MC.v`m6CR 0O!baٓ :Y sq 7a2j9)gB0 YqR4LW8=a,5Ky,)76-EWX 1 ?ێq0t ŸʞC)̭ېy47^4I]ύBg1t4Y|\-b5/9kAt1~( uVxPkbaVY'_p0[EOv͛luCOeg1i\hwXe w$Yl07S/$o{.]5/LHąhܶ~ wT7dX¸\ѡwވ]".$`(VcB#,| X8bUS=Wp RjPؼ!5[ `XZz"/"SWn}HE[TnKYmPC| ¿j‰yM"R}_RRRRRRRRRRRRRRRRRRR ,Q2HHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrPnZn._*Q$*k IDAT+|;?c+&*r)\HaF"$&X $Q`AeLsKԆʘj$S~Z5䲉%^uVT~;owxm7ڻiBώԾ`Y، ݾ[ͳ·n%H|ue≳)wfuVù. '@b^Q+')<sT!mb>Wz0A{)2VOͩ} !9ڷ"ت)|LG~HƤdMH|3BAb3a:pLT+;=cp,f5js؆nVqZ/j ^3"N8gAQ{ 9PVj9$ .<^`1/is&*57yw$Ԑ>&%6X w$1-,`W0ծLJSZܑ&v$vVR*#=볏DUSQ G W-:(?5BrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBr?EH ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! qA 2{X5֪JxTXQJʀ& RbsJʀ& ׷w9ǕqAQ4(4s1vn=s_xaV!~>D˂ܢH\32sk!.=<9z]p&dt{M{h&f Q{~Z,8܋Vuݓٚ[+oDf=U ~FLƬҀУ4[' p=C[yp]Լaq'`W6ίCW9*\kw)ytaR¡/l&m-ۘ$3nk:ą$E mՄ9kY->~Ѷ"m3L?w&8!ò\y93-COv*1Ņ҇yp2u!(xYn12=9Vqi=݋j Lt :(:tMHtq襶1]CCvfKpb4kѶq2ۓ&ra͋C! ,[ET$%*<{G5Vq @<4gДL&'G9DPA?Z<4gP?17t1J{&1Pb^o ?qBZ{Ϋ&c <ºs Q$xM( JyZ{7h11XXڤ16S,:=7t@\BnDU,P* 6A<5>.1'C]`] C<)%BD@ K"@a-XQjF5aڃ 61!!Oz5 P-`Ks $ӢU"BX <~ !a܍Ȉڮ0ڵ G$QQxpzfcnnL/5f pK]U *^$3Ddͳ) [L<_2D&v v^M<f^6lhPMuy(+.xs3.0a~/w 'ɤp,R~pНH,#u!,,Neq*faLz^s+YF!_9JVX&1*uaY> Ɠ\+l? 2l>i"ogmcMQ Qx039.X?8Mk F[ ]+0nR1 b0Kbg exby;SLk]9O 3ΰ)Wf|lPx\+thh5\+< YErr4UpX Ucq!>.%1/sՍЕQM&\Kσk.^a m{wHģL)Px M" Cޗ"<뭑Y)kJXT S=? s,.XPᴕ6lZP%$x?k6PͻD- l[G.PLLT3( Qag 觚DuS:a5&jS8b‰7IaP:cmx)0Qc}aBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBr?EH ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! qHv:Jڄ (?T96)œ 3-𺲣ȻQ+SS*>_[%ujejN%yvTkW]Y>8<+ L!G9]J0Ͼ=t]Qfgx{e(3BU*pAA8%gz;RBLݚT/NvbeSR?~IoiѾMN)wEMU+M, {s!{N&>CWEMV*U1SNAIym<~h邅wAe [rih@oQdV>Ai8>~&h>Q>4^ϖXqGJP8Ј1jޥl61)pM mMo&cưX~(5urvYIIc?( ؎  m D"ϯe(0ɨpm;**\8ШhBֲ &k;:{!0P.1kj/k *E,7Ұ^BEh kPcv0fz7AEk9(kE'eÀ\^GQj£CEk> 7 L"+:<* u-Mv6ö‰myjt\),SҶEKSxXi<: 7Ĥ̍? E΀q sb * 1A,]a 'F# cacdӚu"@SQҘMaXL[6ÅjKkA}v~;Oh#< *-OD߰D7:.7 s|ߢHhpSc,^qwGhǷVbsfZ^vxT WDE[~3(pejeS y| g}k؅1Z;\ڪNadu}@u[08*Dx*Y8( ŊI|=CdXӊt1#cE'yRicfV~o(pM#t F cZ!E,OvT/|?}/b<#hU\X](>N R‡^鬅\}Pᄾmf0J<, } :U1 P,<\H[;xuЭ-AG)?+fa,QaY,cf \+l¹<#d} 5Ia` 1r),f{G^ grwj[by'B٦(h-FԽg7( *eC63="\o P8-fSe|Na9tq/_iY<3*h ׆B( Ò=tp!Q+pT/qFk͍euj8+?bcdwf{1m?{<,×ҦǍg;j~mu#]~yEV`ybhq]]ߐؑp0bb(l0,4!;;fʤ;e;*YNsƊxpG*P@[`h n=~&{14 +m bPyu*0ٳ(M?9" 0Vgd> u:1 *QBel)_!8Xx1 kUշ?t萫o/*| _Gl֢!/Fh-CRs <"+⫆e])(uc:7f* r8$.Ηc; IB788Ry+ ؕM*EeB\} O'K׳~BBAq# NqC붣JՃpQ Ha/rgI#&8Z3mtK쐒eSSg׉Yvp@lI Y3v  ~9X dğ}|:5ǧ~gzձ1Exnz|>>(瘕g'Z#NY7o{Nwn%-ԼE3l;r3!Aqj=,QR}-|feVo?3*ٸ $ܤF)o dv֞MiW|P<o>(M2Iʁ6Лn[xӯMHޞ=w, Jdɂaz&\Z0{f œ!v͂ś߮7a; SZ-%g~$ܠb4,13>!@}Xyf/]D%* @MdM 1ܝX$,ocEoL%z$ ٴwDI{6^sm]4_]`f`3"O{>0Оk~`@KP&pvzF&is,\Vo-cXckl/o~ cI@aq-o/e«M&f<6}-h_ EdJXxӟns QM lu]Gi! IDATOyh_fiutu zZx5tQ>6'':uȻ0>->+𲵾ksB'qX'$ z0<ʲ[271L;3'k(ju8ua<^)|IpXk ;!$d~Jb$V۟p}owgfqP/c{:vn=J T mu`k1dc;1q/vWx\z# Y3Xߡ<0q\H턨VC3.0&~1+ ~WbcD1Z Ey?x^ [0Ojj9֓hZ 0k2wϱG{0/zvv 'Mf}=;c\}io LS`M}i)\%Ǧ5w^!vǛSnqtK+WoMu};i7L1>(=E_Myz;U}pGo ki5[c QM o<~[m;+PօfY zR]avkz faQ`)$W F7퇌@L^^C{X[@0d*0n6}ۉy{eàs;nsIZZYGڎ}3t۹UXY\ Zd(g+ga3';TݥW|e~ŹXovqP8M2+]op)@UZMa&1;)LX?nD}7x4 0]h8!ǬZYz37yF+9Iۡz#\*2(^NsT^ax(v5,^ 0uoy"dbce3V1*HKzca]_D(,ovq;a4hu@ǩ-bam4lm3 $Z6|ש1w-*lSIذ?8f0+^l c1c`ֱ{ o?ۦM2}`k'qGs뱓NS}āh9B!GrwESMnmYىi.v$ZR1}n&h% ,9lyp֮=#ggdC֛]sƝ;7?3=CDSھ0V@K듽Eg㾰(Pq^Jո{ Z鸜k?\ q{E\DunuuY|N{W]9 ba=-&a%VSU!Zk~[a[g(Z(0C8! !1fwٖDPl-<֬qoNGW ˿:tuEPCf\s0%'\X[UtotJoNk/oRIĽ]iU*_rD:+om &|ٲ:xlʺ#O>]OWUJpEbi_ "P C C C C C C C C C C C C CqBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBrHaBr\+܈ d•yDEB C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C SVS[Wf(^;2 NPFԆiPvX-1#V>m MY3{`oN,o*aR&;Wn?DE⩲1:nots8…<t8\r0:+1eճ4Tf;8=/k\ǭ0+VŐy, ~%T1t~gS*0W;(y)KZZ M <:nEuu$Ә̠#i j[1LscrxZUVv5x@ WH o NYΦ37$cMKQJA0~BH[Z?5v&1Ez ExnLw~=qPɇX$}ziD2[[5=qZl٥ig1ⲩV iep?H)hR;2B ?Ĺ.I)xk~Fa0a~=M|uAԌ}Xx~%¢-SxBO P8w~" #)#ho]vj㫕8@x,}Cv)6K.È@I9HZ=\M5sIpCVp\ŠhZlNaکjp]-q?}:Nk 'AAU{/ 2I]AiCӏ(]'*//c\W~BնȴT8StL?yqwƣj>0O)vyK# Vi Q6ldpePXa]F%l^0tW`@k+*\/V妌 Eyo8 _?NߘbJNa`8 cc"'h7iMoX"8*M PMȟ%)W+(Aa-0Y"$|dLRƵ¶cւJSX̱EAJg".P> 2xkePX! ؑ." H6bwĉ.`Jl GՁG5:,|g^a(Yx6 3 I-QaS|Hq70Nէ}*_y_fpHؖs#;cFύ1Wfí3~NwZmb[c&|FWXrVbm;Y$F1,lwR)ԭqa)P,"0hH-!绊?bQ1N Y*ca@ ESMaI.Nֻq$mӖsmMY sNNmq6q"|1-,eox7>~Sbawy& R#QW1ׇ7"Z,3 k |)e<j-7mWFs50)ƷJgp|e C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C Fa 4„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„Vط:qL;.dPI ߹„„„„„„„„„„„„„䔬08ή=K~f}9l Ǵ y{X 2>_DTR_[%)B#Oܗ]o/YVY|JyZAv:C fZ~S3牗Rwk>~~Z'0o֮g/~ٜ'>X |,U}Go?heuXMx߁s->YOMmv)ך¿VHx7~|jKwz%~'&e PpMaq=|9|ǝPן CRu|R|2wkק斝W5:7;#fD`F'^ 3F'p9Y|sp__by0 k݃ ߃)Q/}}1)u#rdyR5uLûnoعQ=f8KlAm k݃%oTN#KpuH[Zc'6OKRBisL],c'|wju,\_}UGWy;wgR 4joo'0h cRwz%q_Շ?֮X Ca5ȇaŵg-E]a3 Ἒz? T~G?֖[4*W :ێoy#_mzk-  ㎄OljrdO,,/])mc'qZvce3ቊQ.^@D@_!$&$&$&N+;XRDu+? =z$D٩vU&N+ܳj ;V& )ZA,2ch2ck7XVQ|4N2J;brf$H#Tu4^@иtFky ^Fh]7"XvJe(HQ#}MhAql2Uy mz5zV.x+;<'D G瀍,#/++ ~ Ԋ,3D|*rL4^.P}FM4YթB T+C)i E!hcLvd1o/uad0q)ˆ{LzZoelDn"~* ./(Pe)VUb+Ւb酌#U&G`ܦ*\_ M2oyr V.MpӑA`kE6[`MEƈIyX =_Aʗ"`olGZQT}+|EMu_A5*,㱩Szon=x+҄S!_x'(`:R~oHT. y/% [Ns#A"=#7<,\BRcE,xqI4 H9T6Z^X%A_EJ7^ VS1. I1bd[_1Tv%6)%UVu*R99ץcGFj#dX–[ z k"~ _a;8+^#CFf r(~w+wڝHMX8!#FBxo㽱\yq;pah9_fxO) $zo:AK.[Kf*!v)K1"H؆e7B R7?Yp ޑx EvK/]b6z)փeygrEcKww zA }ˍ_)h\.p3 L"'!Xc61Ϸ[/r]b9Ϥ=Yi $?Բ0߈.&qfNL,c+)3fNw!vlVɨ Ei]BLl B]A;om6no%G9"H ץj2_45`Awu]/` n7bhP O [ң{pڨ} "VyBx֪%7S3t׬bZAa% ?f%:A]>pW!80ߊYBFxe9gj:A@zהDCAܰXӠ4|`Tdqɰl5ݷ ~:s2>J,^?|t~qbᾖy * B * B * B * B * B * Bt=T@!PAT@!PAT Q_f_Yl:PAyeU{ʵM]n 7LD.rJba{Xi !Dď!.=T{5{)/[WsM5n`[BH`h޼ghٲx}|~ѳ_=IرcYULI-H̐VPDnJڋikgZ4׸ _v?'0{WȐ_#?m"!?2%Q9NB6:qUjJ-Q収c?>漼b;3k/fC.Q}[jF<+= FiVU;n3'KHK! &?qwzL$e+71=ՖnIT=g9NR*(p@ݺ?3f:u!`GM3ejY@rMͼR[ Hb1kDAfҦ79e/L"V&B_;.9_6(:@̙K^Q{)= n/Þ(vܿn7s;GAq.J}a-qv>Ŵ5szëbl :PMr#A"u"gO 0fDtN9CsOZᶋ:AB(; #ne[D5+'@+y`|tê-`3hz)h@!PAT@!PAT`I2T@!PAT@!PAT`YO㛶ʊ{3} BYE?hf,(e+Myk$ 뛤_&)XɦĂteJ#G.Lפb1_ JxY`f v$寧VeaBIR_Yw",NkļXŨO}0$/YJ%yt@pϾE ׉dK탹b"{!{ɻfn8Iy#a7eU1| PaAW: $i¢\}qE҃ \*ƲouYABdGʒ̺G'=n,*wu-4҃A>z0 {bYk=mh~!cA1$ݲa^jD"$Ÿ!УSEP[t00ڲX8[z:0As V@$n =GIOGS#6 * O~Pzgϲ)dېЬwHO̳n>WWz@l}{rb݃xk bw$3̃YuAd(.68 ِ8bk[!jm1}P $}w^o=4ӰOQo6 &Ģߕaij} ퟵһMC;vkJ=xAT@!PAT@!PAT@!PAT@!PAT@! *2IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/render-09.png000066400000000000000000000175711507671574500302430ustar00rootroot00000000000000PNG  IHDR/H6sBITOPLTEό4jNlzN:::@z֙VjB!!!Zs8x}"V ʼBj̧ޙxk,oz*N""VV;'qHOl}ǂtk}*SHBjݧN{ܐlNݻ"@]Н}tx]BV3'-OVo}x4BxŗmЫꐂ333ox]~H4dB-'ܾ~V4lV㰋otz8ްk~]Hz@zGjXBVH;V~AAA”;V1l';qЧ~Ozzz}];BJ1fff}C8H"@x}z]j˸§ܵb]4+++]]]s8Нd14VC4B]B4Oǔ}H]qVsVBbɅOڮ]*@xG̚sqVHzоx]4-O~ğǧ}c;-kkxV~~~~zV@'-;z}ӉΧ荍}xмO'/qBsN}kkN"1V֙]qHBtGTTTBjJJJִ™"NzgZkx2m pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx\TUZ4:W ]}"oEW2+\Ϛ CRi4%cBC3Rmĭ0ͷa:V۶e iC ι燀)ν{Ο;p0׻7 }pp_8/ }pp_8/H_K*++`}bLbUR^ %=@UaI>1КǻJ.;O'H|NuuE 254ͲZA 6hAl; lJ@}O\-ڛT?ao㗢(K鏦n1`@/חG/͝c쓛%}e:K;Mpg×xBu~te?X,q" ab}yqGY{7_}t7/::}vXn:4T~vF}pp_8/ }pp_8Z9W ˋ׶Ynxe|Y,,np_~%|/WpjDv1 ̚*+4QoGt2'ϻ}v_n|;mֿ lcw}+,Ǐ<6{lfIMBc؝m IPʙ J!j!d}Z?W%'>||\z=LرZ#)~ٗ{J֍pd? «/ nMҶѾ@GAn- WI] eY \p`D:~%\Tm-17 ?j/ܴedރ/51;0(piu_n? ~&e- B6 fRTdz۟5ue1k]//`wc=bDV!%I>W4VW,8kU|udW.M~ ;&gۃ/42İ_ I]VM6{X|±IH῜?<\4PZ.#_\G^ytqSL۶{;sy~:VMe߸E5<:/oE,Lc0yDyX4DҼS=3HH[kT-Z/4.?hsLڈ rGQ/vyJqB}M)z)F\KG/_¤/1áW 8iؗO:3; !r|?N`M[g:e-BUV =f|7CbU87I|ng+  _A3d}]}}CN([YTޖFG%zyWWJlv`=NEN}qO=۷Δ4 0~ۡ\߮xzޅur}Ȕo:ՒZ_N.L8l}RLɑO&xhۧfN)i#1_$mD;wt\kWmC%p;l}CE/ϏF:'VNT׫,hn1nNs@qdkNɽ/I]/96/{AfkQ?h\h.zA/zJ@c &V8Sgҳ;X0s.5okm VZƗxm>菷q5x}pp_8/ }pp_8/ }pVThumVᄁ6ȿqpCTVWY\^go<-턈[Gy|fx{l/rU.k?7_݅β΂aޚ{$y^|O&UBIι!3+b$L;So̿8ط+ }(+d f^*wu5Wt*>i3|u k Œ* 5b9YRqcƹ% (5A|@yqVQ9?ɾz|5tDw}e^.16Գ& :])1rkrT_jΈ?n ;aCh!|z=|RR㽋S $- b{]vydr%Y^S^稾,n_bPMsś J"ýtaW4rE:O6@UKg}IMGw_Q53kCQGY4K{19CRQ~G|Q2s:VbCs`^0p'ϡ4.t֞*6PXJm[ .sLL#F[t 1y/r6x߮.}P=khk[_B }pp_8/ }pp_8/ }pp_8/ }pp_8/ !Dq0}pp_8/ }pp_8/ }pp_8/ }pp_8/  xƛֻB76 }pp_8/ }pp_8n$_ZpCjp_8/ʭt~n͟yYYn_ak2UR\7_WEcsW_Q?}6}08ce g/4J`:7:q?z6i3|h;՛4LcO9ӏF3uޏ7i! phBGJrE"JdeJW@6xZ :4Icd̗|>qh>x@~'I4[5{Ѭ6ЬWyjhC_H,l'],fmg4<o$Gé2+hۖ 5)9Kk4s꿊@@4'5>ݿy;|^m>.}>{d?;ɧs䬚~P7ĝn;YGcpKFpޅiOwq&H]udiMi~ EE'o{{[YU83̙3&iL;ɽ(^'l]i 2d})qb35M3p#OŠii_2wQ |M ]|||%/L%C_~mKM%c1k2>x~>Xb\}=AXM&#{o*F~yWo[@IGLA|)uڶE=$T}}U]_cgplF={3{կ={wL?xE6~/"e}!3b W'ϕ̹`ࡘfklǒUd,ue MXWܥ'tCዮ/V/u=Y 1y 9!9:0֬Yse뮖|˧eP\0ZXjzZKr甛ؗ_24[A;`i7b&6lйm2!_gړ/7tޠI.*Lܗotl('LeLuWڙ/*L̉6_޴7_pC&%% HIѶѫU&]}o/ }pp_8/~i+*6O_QƆ=i.?.+ZޒXNug6W$x9}4~JyWnw`v Ͻ#ޒye?AkpWUbav,)|iD4S:XdS>|K -b%/iBt#M$gd5 ^i;JW}Ͻ4'SXT=D#_,>_eL.*[tix#+`a"E(:p#לᴻ9 J҃zELv Э J^Lթ t5K%'/8޴Epw(W:$tV$ 4#yMC]oJeЮ52b^|0Qy:zU%4JqK#ۛDņR%ȼPD|@vUNqoW-h}hL ++d f^*wu5Wt*BLcS^г;|aXRe"X,'U_P4Y5n8VXcR' S7̡Q~*@}5tDw}e^.16Գ& :])1-R}9#o2Y^qN=iJIv.N,/Sag_M/w_Q=uK1ϒ`8v%8{(^`jxDM!0:_F"/yZzX=Kj2?2GYF†6?*UʧYhrcr&0cbUG|)?tu<6;;. |f%a?1u0OCai\=U>6u氅2d/4BoEm2"ؕ+tOstaۇß8-B }pp_8/ }pp_8/p𿟆}pp_8/ }pp_8/ 1QddIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-render/render-10.png000066400000000000000000000164741507671574500302340ustar00rootroot00000000000000PNG  IHDR@lsBITOPLTEqd/xkHN;BB ~'z88"VGS8k}Bx§dqB-n333@愠”}3õ]OjjBSokk4jrĆGV1܏t"]'Bj}µ™ІoMBOjO];}㰋O4HY7ӜzB-'VOj,jբx^Wɺg*Gd'OqHON"r֙O}cug"VspРcH;ǛΫ֮}Bjаr熗ޫ}НNƍ}x1dOWuɅ7xMH^gj4'M7u/;4]s8:::];b'OGs8}kk}z]@觬^_;OjЧxt]]]'H~ҟ]˦''BG(((BH~u'}}}"JJJVOOM'V44;ĂNzdN}ղ3}kV4w*]t†oklzoB4O1sްǙ}◥qBp/jBcKYktV;V”Y?]*O} pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx \U'Rp6~tCKMtQ/LK RG\є A?vtѤi eT`*Zf.C?V6e}9 ; D}<N3 $ů݀.Q 8@Fq2d(Q 8@Fq2d(Yd4AKFFꐱ4IBn߸D$+[r|lSvȑ]'U6# %;Z)Y ›qWɩNt'DhEg1Je^!J%a(Q8l#F[80˒,c0%^I* #q!|.-FPdJ~8Tfz)JXnQK6QEiFr:%IDT6 jnW҉eC846)9Ч@-@$'L|Rg,&@z=\J85x%`aʯ#9*n 0(Z;O `?@mt80eK4vI"%hjt7L @k>iLyYq)FӘ.H4]'ZRщ< 0Υ4HgO,2:O"m3:hi0e,d‹H_[$Pڒ6*i 8@Fq2d(Q 8@FzNi8 S\ ~$uS:eaMbp?wqM-_%8@QP=oK˩`Q[h|t\t)-*ɔ*T.k@eXQ:%&ݥ[eŁi"X+#PN --t t6z29O&)z7xsgb4Z 4*+ػs.%i <!bgȉ:П>rж ~p;9*A:fL][J@1 %SE8%llf2>pI\shNa#uW{\+Dg7A$QaoN&CTfG &*硫 J{I rzI\հTi;nohidU))%h_ģ@vg xd0>fS4SDe+]'cvNJ9ү:H+^])&+'Eԧ^m)Io7^d^CTWHvvCX?o7[v}P[#_ng0xwP:3]Lt]S9$ljؽ^ $LKO$=j{{wT2F嵈 掐\+Vj뱒~FNxIzk?7r7],~|i8@Fq2d(Q 8@Fq2d(Q 8@Fq2d(QzINm>peO>2_xm S?{407ZĹsݑ7ж] &$dcW=dA7]:*lІzz<7L~W^{ x=Pp&ѱ^rpǿo@,6_|!4;?4ax,x ȝo,C;oY쵩GI! cgǯulpp,6b;v<|`gBC/KGnu sgy64T:q(c(f;wV[(;OrL[xI+cW, 07,zW񭆶e FN S!bJц^=v۾:5 8z"O6 H7X=PɋMV2kO ?SQ4~xRI87NI@BGpT1R@t;LN, Bs#ħ&LN&޷jq^[G'"bV(6/87>NBҶWťr_NʤH Pɋ% @kOf0b{[ Jɬi axCݪ 4ȑ@?鲱__TK}.Xh87&u'q;"|# 2`&b4v`M2IDd 4q{hxEk0ԢjkB u(6@lhw7D˹7jKNAZgfxyODuGWM\Zp(L>h9UW-i) &эq@SU4& Y=wW@ 9Y"8K|~+4#.g0^0\-MӻS`3s/'.!(b ݫ J|ԞK"-,RTBIP.7Q0@yq")G&h#6at;sH! ߃&/w9_Is8ӿ,*⋊#jpUϨ 㶶_?ੈiIpGxK&UzfB݂IĽna#Fu;2mm.;VQ4D\(Q 8@Fq2d(Q 8@Fq2d(Q 5mJ"pi{]$$u+ǒ31ف2M, _FLߋ磦[ iBr})"f4xR΄,H XiqՉy6!Hΐq?MH`B}*ƛ`QtN6&3Pq*###;e]hP@A}IZʄq[<{%2[b*%tk)_rӌ*UL7M\,ʀ媺HXB\5.2J<0Φ %^ZJ!6v%6RD\ZiUlԇ u.$'j\P ^YIPbP E-@x?c*+2 wVSu}5p˓||zJf" ;%J"Zjnjxeũo,g"5 XlQhWfa,l{tCVC3}c?ܜY8\GClYM/ )Bhh$âm^ ތ/琴q͘JRi:Y 6sY*kc9T!hp- +d ڣmHf_SۂKJ(Ƅ>{0 nR(@FĕfgbVTŸ4V7Q0H]I +d+es!Cp`82;;u0@P(laz*GYlϊʴ; eLL``Z+ĚDl-8 V^WMwF{b=@5B* U#$:SbFh8ZcB6S HSRuo=h}Ep`{=@K,ld}Z( ۔AЗ :K! k L?YuXaFm;JJvh=%G`Ғ"\\wfG3_0@7vVU,uɾ?W s-IX p] %^|Eɲ&\N?RQzoAw2d(Q 8@Fq2d(Q 8@'r 9@'r;dlcYŸMMcm5,k.șz"-YCjXGtlkPbf'_dw•os8}=gTmm|f^9EgFӘ-Q)*[3O\;>W2kϼS h],B.[,nAyfOyHP('gvXy|Ѹkgvzkjw ]לÓxmFo[D}ݾ_=Wmf_M:LcEwto/X̂=1c{Y``ǣ{5f>O˔oqM֨*zcsJm %}FϾPQǷu!oU<x.{cFfo{_d>2,A'4:UO ̃޾yl5VP456ק㞋dC͸R2_:*%7fC!GŖw0싋 `EJB*Pd A$TbX6:,h Lx7u÷ d3ܨmI ze c0/>ǃ.<=. hⳬ1gxx<=w;[bZ)]` ظrh#օச ]o,澖HCgJ, Ge`oі^o6i@xS'? K`0X<셏*z`wc5.A=.lYa?T XR~| A@Z뢩#0;}mH5sEQi |RRqЖwb cR lX9Q6At]6^- skFB|,ٕ\J1ru"Y 8@Fq2d(Q 8@Fq2dȨծ xJIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-sourcehut-pages.md000066400000000000000000000061201507671574500301750ustar00rootroot00000000000000--- title: Host on SourceHut Pages description: Host your site on SourceHut Pages. categories: [] keywords: [] aliases: [/hosting-and-deployment/hosting-on-sourcehut/] --- ## Assumptions - Working familiarity with [Git] or [Mercurial] for version control - Completion of the Hugo [Quick Start] - A [SourceHut account] - A Hugo website on your local machine that you are ready to publish [Git]: https://git-scm.com/ [Mercurial]: https://www.mercurial-scm.org/ [SourceHut account]: https://meta.sr.ht/login [Quick Start]: /getting-started/quick-start/ Any and all mentions of `` refer to your actual SourceHut username and must be substituted accordingly. ## BaseURL The [`baseURL`] in your site configuration must reflect the full URL provided by SourceHut Pages if you are using the default address (e.g. `https://.srht.site/`). If you want to use another domain, check the [custom domain section] of the official documentation. [`baseURL`]: /configuration/all/#baseurl [custom domain section]: https://srht.site/custom-domains ## Manual deployment This method does not require a paid account. To proceed you will need to create a [SourceHut personal access token] and install and configure the [hut]CLI tool: [SourceHut personal access token]: https://meta.sr.ht/oauth2/personal-token/ [hut]: https://sr.ht/~xenrox/hut/ ```sh hugo tar -C public -cvz . > site.tar.gz hut init hut pages publish -d .srht.site site.tar.gz ``` A TLS certificate will be automatically obtained for you, and your new website will be available at `https://.srht.site/` (or the provided custom domain). ## Automated deployment This method requires a paid account and relies on the SourceHut build system. First, define your [build manifest] by creating a `.build.yml` file in the root of your project. The following is a bare-bones template: [build manifest]: https://man.sr.ht/builds.sr.ht/#build-manifests ```yaml {file=".build.yml" copy=true} image: alpine/edge packages: - hugo - hut oauth: pages.sr.ht/PAGES:RW environment: site: .srht.site tasks: - package: | cd $site hugo tar -C public -cvz . > ../site.tar.gz - upload: | hut pages publish -d $site site.tar.gz ``` Now what's left is creating a repository titled `.srht.site` (or your custom domain, if applicable) and pushing your local project. Here's an example using Git: ```sh # initialize new git repository git init # add /public directory to our .gitignore file echo "/public" >> .gitignore # commit and push code to main branch git add . git commit -m "Initial commit" git remote add origin https://git.sr.ht/~/.srht.site git push -u origin main ``` You can now follow the build progress of your page at `https://builds.sr.ht/`. After the build has passed, a TLS certificate will be automatically obtained for you and your new website will be available at `https://.srht.site/` (or the provided custom domain). ## Other resources - [SourceHut Pages](https://srht.site/) - [SourceHut Builds user manual](https://man.sr.ht/builds.sr.ht/) gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/000077500000000000000000000000001507671574500260165ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/index.md000066400000000000000000000125131507671574500274510ustar00rootroot00000000000000--- title: Host on Vercel description: Host your site on Vercel. categories: [] keywords: [] --- Use these instructions to enable continuous deployment from a GitHub repository. The same general steps apply if you are using Bitbucket or GitLab for version control. ## Prerequisites Please complete the following tasks before continuing: 1. [Create](https://vercel.com/signup) a Vercel account 1. [Log in](https://vercel.com/login) to your Vercel account 1. [Create](https://github.com/signup) a GitHub account 1. [Log in](https://github.com/login) to your GitHub account 1. [Create](https://github.com/new) a GitHub repository for your project 1. [Create](https://git-scm.com/docs/git-init) a local Git repository for your project with a [remote](https://git-scm.com/docs/git-remote) reference to your GitHub repository 1. Create a Hugo site within your local Git repository and test it with the `hugo server` command ## Procedure Step 1 : Create a `vercel.json` file in the root of your project. ```json {file="vercel.json" copy=true} { "$schema": "https://openapi.vercel.sh/vercel.json", "buildCommand": "chmod a+x build.sh && ./build.sh", "outputDirectory": "public" } ``` Step 2 : Create a `build.sh` file in the root of your project. ```sh {file="build.sh" copy=true} #!/usr/bin/env bash #------------------------------------------------------------------------------ # @file # Builds a Hugo site hosted on Vercel. # # The Vercel build image automatically installs Node.js dependencies. #------------------------------------------------------------------------------ main() { DART_SASS_VERSION=1.90.0 GO_VERSION=1.24.5 HUGO_VERSION=0.148.2 NODE_VERSION=22.18.0 export TZ=Europe/Oslo # Install Dart Sass echo "Installing Dart Sass ${DART_SASS_VERSION}..." curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" export PATH="${HOME}/.local/dart-sass:${PATH}" # Install Go echo "Installing Go ${GO_VERSION}..." curl -sLJO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" tar -C "${HOME}/.local" -xf "go${GO_VERSION}.linux-amd64.tar.gz" rm "go${GO_VERSION}.linux-amd64.tar.gz" export PATH="${HOME}/.local/go/bin:${PATH}" # Install Hugo echo "Installing Hugo ${HUGO_VERSION}..." curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" mkdir "${HOME}/.local/hugo" tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" export PATH="${HOME}/.local/hugo:${PATH}" # Install Node.js echo "Installing Node.js ${NODE_VERSION}..." curl -sLJO "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" tar -C "${HOME}/.local" -xf "node-v${NODE_VERSION}-linux-x64.tar.xz" rm "node-v${NODE_VERSION}-linux-x64.tar.xz" export PATH="${HOME}/.local/node-v${NODE_VERSION}-linux-x64/bin:${PATH}" # Verify installations echo "Verifying installations..." echo Dart Sass: "$(sass --version)" echo Go: "$(go version)" echo Hugo: "$(hugo version)" echo Node.js: "$(node --version)" # Configure Git echo "Configuring Git..." git config core.quotepath false if [ "$(git rev-parse --is-shallow-repository)" = "true" ]; then git fetch --unshallow fi # Build the site echo "Building the site" hugo --gc --minify --baseURL "https://${VERCEL_PROJECT_PRODUCTION_URL}" } set -euo pipefail main "$@" ``` Step 3 : Commit the changes to your local Git repository and push to your GitHub repository. Step 4 : In the upper right corner of the Vercel dashboard, press the **Add New** button and select "Project" from the drop down menu. ![screen capture](vercel-01.png) Step 5 : Press the "Continue with GitHub" button. ![screen capture](vercel-02.png) Step 6 : Press the **Authorize Vercel** button to allow the Vercel application to access your GitHub account. ![screen capture](vercel-03.png) Step 7 : Press the **Install** button to install the Vercel application. ![screen capture](vercel-04.png) Step 8 : Select the GitHub account where you want to install the Vercel application. ![screen capture](vercel-05.png) Step 9 : Authorize the Vercel application to access all repositories or only select repositories, then press the **Install** button. ![screen capture](vercel-06.png) Your browser will be redirected to the Cloudflare dashboard. Step 10 : Press the **Import** button to the right of the name of your GitHub repository. ![screen capture](vercel-07.png) Step 11 : On the "New Project" page, leave the settings at their default values and press the **Deploy** button. ![screen capture](vercel-08.png) Step 12 : When the deployment completes, press the **Continue to Dashboard" button at the bottom of the page. ![screen capture](vercel-09.png) Step 13 : On the "Production Deployment" page, click on the link to your published site. ![screen capture](vercel-10.png) In the future, whenever you push a change from your local Git repository, Vercel will rebuild and deploy your site. gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/vercel-01.png000066400000000000000000000070211507671574500302220ustar00rootroot00000000000000PNG  IHDR*SRsBITOSPLTE󟟟>>>rrr\\\333PPP(((fff~~~œHHH߿888"""nnnzzzXXX...BBBjjj^^^666LLLvvvTTT:::```ãﯯ,,,$$$FFF000 pppJJJ<<zam$[-L3 ̌17G .̜IXؓ5횻5DhABh{0.#%)1q !‡lLQe#>| ( @WoJ3C7FmRg"Ln[Q:F?iIݹl1( 7Q!~X# sE&\ZuٸDgv BR1r!Qd瘹+:īr|Q(((vQʜp8й7} uO^nnaY!;?MަLc:GkA$;%I8oaiC DB:nћf111G|"ȉÈ̈A9鹇9Nf>c c c c cLOfBKEN,\EXK}{8g.Wb#Idfق•3e*%@>oY˝3Ȍ/[\cJI4L$",suHbJ/Ds4UdC̸%gٍX5S\cK1fwcnaLfO2۝O()L$q/SyLY&mNL+|<[ER{U٨{0A9ߙW)G0Ta eݻC;E2?4<)I̓< rBם:2 S~ˌ٥Ԭ+pXen~e82Yxo`bDEj`ڃ%|縱29 M8Xf}0J)يZ6x=SIe"gssd-\sJNX713k%\L d\@/1sMcfDK|?LB J1\ruR =_Ň'8CIM #ބJn&|S꤈+"{7U2/%Xˆ6!Ҧy,W'īj Um$+tXfDFzOx9:'tZL3PЩFޑ'a9 釩\x3b%۷廕f|B-Z,]-i$(w߄e֜>-SԤ{8F~W!~rc$IkLUki9n0baq-PLN4 {NPeE#g|'/v5NFbٺ>sUwkY ^;v'6#ksL@0!|7<5MyU|KG9SWz_`hQ09/)ndZ?,< fHPYtۊ1o Tq0dib/ 6taLaLaLaLaLaLaLaLaLaLaLaLaLaL*-Kxvi1<߶?Zi(.NN+lEWcZhW VKs3}af`畃n7qogiD)=+le71ӎs|Bv8@?U9\cuo0"x9+3Ʒ 1H2CjP x+]; o?ˠs\۶4>\\f10ya4~w1K1U KV/б\xR$Kz^+&3$i4$<,^)4>_2F6&ڶY-  VZӘ^'v[ wH1R7R:C`(_ӿ/j~arfffffffffffffdhy'ZNt7Zy6^Af$5ÃAZlw'~mP);fQqKh1 @LsYӋ8(}߄+,ꈘk.L{ʷHj @l=1 ?3^۸2^6^„,̲'t)msjo`ƤƤƤƤsc eCF0ƔDeƘlL~S~gZx.J1h΋ M$. FdV$KB)f?0H 0* 1˜bQdO}05yUn>?v_Q˨~N2kN #BV y|25ifj`w6:U  M)4Y 0;aRlRЦԘBQBlsF4=Nn0CGF67TgվA[2́[9zh{{2GIV'"NIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/vercel-02.png000066400000000000000000000160741507671574500302330ustar00rootroot00000000000000PNG  IHDRjNAOsBITOPLTEQjNmQjjj}%kTTT߅HHHtbVVV쯟ڒDDD Z|||G___:::Ǽy`;g:SہkG 551PSCMM 551PSCMM 551PSCMM 551PSCMM 551PSCMM 551 mhDŌ.ubzi8lM T ۽&zܭ:7tߜU]Җ7˩ aEk/ºmSZΧqu+te+4UFs%ǕtvS΀i^^$.7OSfCqy'g7ב%'vWL)uTj2ښC9: ˇ:f{v6j 0lP"'q^shbH7G$'X zrnVQYUg 0g 0]3s^w@-tv eK90~_Bo@ =Ծx `N xTF9,/]!M2vNyp&5;@Yкj3T`qF;g#ujWQÄ/Kc%qn )sꘌ|3oThu 7XKSC8٬}Fk2BWϘJ}㓇_صF}lp[iU{f:"$p.Pyތ;^Y-XCOEdOaa 7jW\=2T545uF}߻jp?z'Z&'Q h1nPw fRm@`uB p9J*Jp+`]1r;˽`ÃMrU:++6 y>t_ bGWAU ͊OPjN;͖γNX& v1@P W۷&;Vvo|tp9pNȓ{\)KɖvG \AD-%{P 9PK{ĽbWfwGɞ0"'}]̽+GPoӯ'@b&jjb&jjb&jjb&jjb&jjb&jjb&w9tL~ˑ?l}^e"zRn} vVzڮV)F.o?ZmO_ 551PSzZR̵q_5Զv$)vrD:y`=Q*B(1"` &{TBPnaV]&B,uP!ZFU!^6&^&Er.tud5*fAIi .r;kUJꩃ'o]hl»6K42cр=]( e77T:!8W#" e&%$BYi] ͚J6W վT=cn7LVn3JdDkZKtҿQPXZ{¥ڌTTuB3#U< pm T #oY۪Ԯ"YzYLLţ|(Gm(GՖ+lt[7Mư&eO?AvAuBPxIjVzyN pBD#w6]FS:c)v6sjEub2!9:]|5Fv rVkыnz<PB NhrVΪKKQCHJ$swF%qÍ G tibG5j\RA qI,ۋ@e{C6y{{ԛ0x $1VP^s\ uE\ 0 8ѾTXE߶LvO[ԯ)kwkpv{)Q w[{O)( i0˓7՛Py6Yv-j^ iNmS[VjTTò55T=22Һ#<q;mKN~ϴ ,&KduiM-Z p\5>Q'l( /n)k ɗE^6p)^<*;_̷v3A+Eu{ۅ=h*=j-rԺ}-(+Pgk b\ "|WlA;\qIܨu)piI )M$Mjksɘt]E`>>̭lPVYJm$b\*}\ɭZ:f=6NK+#QC(Aا-mJ2GW>z(Ahi 9ZKbU'z^w9s}Ajk"C}ٲ?#$xYbl{OU]i¾wyZuڮ.SV)NɇҼ1e? 1菕?e jjb&jjuz ߪ??RՠA}Ҡ+F}ھnT{] v}jzQ1j= ~1PSCMM}|倛yR 7~h=PftbMOmI5Խjj@M݁)@8pT@&@-h55|:u?J;=:95{S|_A8[v[tͤIGF;'LbTQ )E|8Ϩ<~l(4[΋샾S&?Oaol D0.~xa//N4Ǩo;ٰ>u,iS \rP/ܟIg ݱ4Ӱ'5<, 詢R#pk}F=>qGar޺7yәtD 너zIx-|4ιz)·]Ih-!peV)^c@ o>A@$ =l;EzѻQ 'DԽu0n1/.&9 C_QٳSqa 53Q/ (A0~2XQDb{ss}w5yyqK~P7L"F&C' hZ|.M+C=ډ<Crԅ0l|pRѿ=…LKw 0h0z ѳG }>f1y̩u$;'=0Ղ>& ޚ) LYT:}7eL,qN:Z]'2ƒwoxHh~G7d>Aò(G 'Rڻw,6yt) WO?{/0 n<ɂq@ .@t {c 3 ,!Qi2+G|0OvThq36,Idq & oMޅa$H/E=7_~Iz9R 9D'1xOA1 E-{ Rxѷh2#tHQ_b&jjbI1l{ibԟj3ŨY}yZ?(FTmg[?Ɣ.t'?VD)b&jjb&jjb&jjb&jjb&jjFIIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/vercel-03.png000066400000000000000000000377541507671574500302440ustar00rootroot00000000000000PNG  IHDR^[SsBITOPLTEFW>^0(Uv#( mq?ؽx^{и?;;;Ycnhln Ygʌݾ#9Iϒ{r#B͔UzL.B|㌝=p3eyBl;re4#(ܮZm˘9ֶ|lL(fffۮp|v&x?;ncmpܳFE4Lk,=Ugxv^O0d_is§mܥkG#(ڿI`sg]]cvuIZ./֗qnYleu6ɛͼdh=(ճ)\ܡ=z^;ɻzͻrYK¬1p}n2;SxḟlnInyŬnFrܞ]#.&SkX¶_R(}Jنgzs1a>XSSo1ߵ[u^o #T~l@OOt[; qcY?促!I.x'rQ6HA=SǏE`䳗EzW}(_&=rSAvEWM<nu/3xᆉ}g q8ˆqG6-+t0;}-g ŃwY*i¿ ޓ a)b@gN"vC=)a7 œv pB DX/hwMK%̣,јvI}g 5P< D\lm4r<\̡pB(hհhQhy^bƑA]ڕQP8!-MPXX] X=+ŠG,aeMccMzf~QPux <@7'vsτЕOV2geXHL(\i0#X0ȟ$ ZIz (bo?*2T @a\607* Y$cُ(mp@@%7r;7k r)u-RXcp榔ͭ) J&Đ[~ /F_"oJϣIb@Ţ..x$޺_)vTO-\FYO+ bU^t`C? O? ,xN a/FtrP鍋Q!Buh@9g܇!~{*)@[ R 9C1%sX])ծfB%񮣋Ҵ+5Ʌy ܊)w'K2əbo1]8]1%08[xb6QlCc^=tgcVas#Sm4. a8=P9ST²rz3ʅnQXRW1%Ęm:%ÆbO7\;(g Cs1W+b@Nh}axEG2:WF|cE D1z S>jh="FXK }~ !F(==>G;gaJ㟗MK|12ihv} =ҭ Wƻ/Zc`[{"ãS 8S( OUe}N#N a_68\6r.*kD鸿ފ } bcc r7t[ERpG%,4 ­Oz}.}IȰUzinhމ<oԗLQI! ,8xq^ ^8*ឳ&^հ|2\u^KW]XɃ %~ jd=ygΝ-~/8_RF\J?7ډaS~'ZZhh&z"]J!lwΐʞu/dU5>2JfnIIc߲U/ʎ຦l}h&F1",l̓ʳurQ|/;h2S;t߶@ ;햙loH#bLB˷%K^L)u/J^]趪 ܞHC1r\/rb]Z%wf%bφq7NAm^T '|1LVuK\r] 2;6%oJb(((.culź;A/ˡ>bi]2ln`Yw*#VI b|'-[&ĈqmIb?!ũ3<8gnAp-$1/1 ŭPgNt-+t3g*Zh{K\g;*™ j.曓..1BY\3\Ϫ3SZ =" +բ\s))Ոm0_yν庴X 1!-vZΉ#K6;ĨD1:M}qĪLEᖸW'vjA9 3VBm%RLD&xT)VYb)FryjvtӰ fm`A5M˷$N1B׊ Q54y[*c#T} ؤ\bTYo]+cEQ-&ܖ1AIR)Q^AmK*h~1dLju3Â7ߧ 43zȟC ]  M9NCBebHt:M=gpWƐT} uFh9Q씗I@aV1pS馚3ء8/#VbXEEf6o=^3?ȓʁ `P'ͳOgW'9^`b.8ńrX//3ءIK-ԁH7*Yƈ'3I3D)Q'+Z| `"w1ĩԚ18kNuTwgcMI%%Wv:W,|*R>DmGbhcVu9I<& =wz7{i*K?d\&Tg#1.+JY~`L]8>IpM6sfIze1&0]b,Zت,xNĸ XzYk6lPvpP(FT:C_yb0F[q<ܔk83(Sfu;2 /=yR9a+8'C-''BЍ'13ؑ_ԩb W`ZL*g"I<Ő/CaSuM]1jf8\`,&8#F:qh/FƺLUm?E>ĥᢘ%Ujrwy{v7齃D3|V;VL- ߉#Jz-(QG&Db5z-?[hb6_~pT)D3AD#Bb\H KQ\VUVIM!99Hsj[1}+<~تif1"\߉}h-4%RHy7"ZRA-}Roa?t%1Z%+FmCZ~Cɓ{Scq3^sOpɝ,U~Rt?y]4)M!ił?7d'ŘϺq֓{+<\)~N{:>ֽl\vc)cOjR2‹J#"}]]>gp| |zݧ.prg$S3Y^4iCAHhJ@'`>< tA1XW@ \9I/Wy ƌX/WՈ~Id8_bX'=ńh^1,,db䰎"ɝ$I'%F'+9_B{ Nu߳sd_bHSvQ KqrؠOi8>D# Bb\H Ap!1.$ Bb\H Ap!1.$ Bb\H Ap!1.$ Bb\H Ap!1.W,Aק6VF1ro2a7gSO4 aJzѰJƘY]7K'OIDATZ']~u Ku(goʳNuvv^gC`VKYx"Hg'(lSK+' 6hΑnbB޵[ȿkw cܙ*\%8;{a$ A6ͦ}6cϊ%ק̰?%aM00CX +kG{a\wnq(=mA'K@%wŠ #wuMl.? DM eh+D -urZ,mrq#TJqyTf>Ka[&̌998=PS ?5|vRb̙Z,Gops#x)Y]@jlw1TGoh"ٻQ؎oyCs1'V,m=L$)kp m&a4|a;8!A+M^J`1{^!]Oec<7vuExb+.ķ:MLCp2*)Xlb e;zz œ  k"*:"wAnw_b,[ٲč4@ܪh>1[i5a{ڒh$WjحqGv1:}nu~XrgŜ vYSEP79&3W/t٫ ?1e-hN )1I!1H 1ujSw +bb\7Sœe(bebl1QEn=;݊ K{Թ5ck!av *8R\h%[%^L1׾8H.;8*wlcwaTPr^-6<vg/%b߰1fud_ M<)A#1zXA…wS2bgXc6x2j84%q ;}]N1l=L~"w{Ϻѐݽ]w(TXGʝO)c4@#1AEH~(klJmO ao|US_aNe*,3 5^Őu}Sxx*?F%\CzTyڪc\$ ]ࠝ,h8.NW>yh( WOC RarzJxh*&QL ^K!C l0[K p!mŀ֣Db\Zu"b?p l{haO7\C4fc~n)Ԩ2IӬbGJw0/CcU cLU|f>3f~iXRRǾXvhI8ωyhvRrgJc) ͶXRٳ庴ΰ -dN7֦ʏRn[6+8cdnIvEd{vH:m2BcWb Yp,Ioj։BSypֱ֤ܳUV 8 wBwZJoI-+gnYhomw͍ʐ_hq6%@r&gj*)I^:vւ3y3Uwgb(_g;oo#7I%]Zj[\wZYNqRVZ\3~gr>CGNr71b;9 >n(c\!?fZp*pGߕM-=S!!XGfس+a>+qj״-/g8L\[bֳJ#刁b(` 3"E3DvJ'1wuc&cc Zv lr%FhTfuÖ]U1;q*rJMv̀>ƄӲ a"ў~z" j"?VT7cń}:)R#5Uwg[JkuK X~x½)1%VmY0ͩ:]#_,D]ײD#JŮ% fͲ⢴*1]B+#nR9q"1Ap!1.$ Bb\H Ap!1.$ Bb\H Ap!1.$ Bb\H Ap!1.W,ƋDobBb\H Ap!1.$ Bb\H Ap!1.$ Bb\H Ap!1.$ Bb\Z7|Zw|%!\Ӫ,_Aٸ'q=ٖИ/]+^)1ZI=ة±wݸ{'i?s؃Ej*YY.'UΠJ-2$% }Z?8(;bNHx~ؠNW۽?51uq:9J'IVx7ŀc; TXq 9=Vza{T(b\5&F'^S(]=k㱧\s1qç,{I'NVu,7ɝprg$S3Q jO1p@=0h'O B@Sb`GVHzA Wma&)q055llY*ѷqA'Cc4Id8_bhX'=2<=ƌiWPҼCw e#19qr'ԋ^?ntm_b ~:{!O`>Bd?"s`UV^)11n`mן>H r1b$¨$S9ٗeS<6HU "Y"U]11%|AݻӚ|Bb\H Ap!1.$ Bb\H Ap!1.$ Bb\H Ap!1.$ Bb\H ApiD" Bb\H Ap!1.$ Bb\H Ap!1.$ Bb\H Ap!1.ZWҿќpc|ᡏig| #+a&m8CߵC=ˏbdeZ,>@3'Fxep&/S/F[+#U2;!(n b?nM_A-mKm q $'$INw>2o^{^mRSsVzT\mT;?i…ӿg \;PbyۑeIֺŘ>|}܇_v>6J#ى~Νlw6 oyq#/ 3Գx.P/R)=??>ݝ>4[;Hww1' 5{ؒō<Oͳ.١8:?Ao??_/Lsbnb|՞ۙ=od#0~ՇxƼ?36v??|^F?ȼ?=#o~o>VzWn۞DC̈~g{]ڪŀGTj] x " D }YE "G_A>_=42bd=1UHw!w:}<.X5?{"ZVx ,E Y 壯^^t?Ɩz[EuO1~Xs\AsFb6F?./ܚe1w2cK1>-Xy|-SO ?XM.lwbY1u>2azK\?V-ƝC˿u!wsbMI.1>(?eYc~9Uv$~a=z40].1lOv~}wzshk|?>vI?@{b@b=bLzӿs_<,% wϵ7?V|* 3BC_;7w+rwmCܫ7Oݵ5"|j: ?諫pэ 8,uUѨdrM+#Fv«$˲k zD CmQ]|V s,'Xl} YMb\2BWc #n|j2hgb;vSx#!1./CYYqᑐAĠ/^@]b3g>GWo͋zOffpҭ8yjGqGq5V[dp&nZ̅UQg=Ĩ pزy|b -Ĵ(,5ƜRٞ"Y ܧD=#J;cs%b1K@2Tdabزk$#ęI5)+Omc85MI(,'@Tr1l)ڧ b@m;amBd1flo0Rlì:U ['n-euPNχG{t 101 wef~=&ސ;hYQ:;dt$`{je+7(;)o hƚ∢Vİ=%>C|T@~8hoe0 0PC+4s6Na{j­q$Pz/E Vn *OBbX[^h? +GcT N#qSS߃$qp"ơu#]oN^b` l?L!9TK7#GRh4gq%Ȝ񆰪먪8.𸸬1곊_$:YшF}VȪċЇ~7*ѱ!1.$ Bb\H Ap!1.$ Bb\H ApDELה IENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/vercel-04.png000066400000000000000000000107471507671574500302360ustar00rootroot00000000000000PNG  IHDRlsBITOPLTEse,ݤVRRRlzzO,OsOOZZZs3:,ezO,ϖOAlsHA%3%O3l:eze:zz:ze]:Hez],H,e亏򏖳,AVȖs,3eVfff,:V%ÏHeO:ȁݤAAA"Res]::,lֺO,V%sVAH],V:ssݤ:sHlOHVϳz]Hl3%ϫA򖤝s:333%]VA%l3ȝeϏl3zzz:::A:Ol,]l%:V%ݺe3lO,eAϳ亁,He֝VOlJJJ3Aez:(((ݳeeH3zVzAlݏlA3OzA,:esssA,se3ݫO֝:V,VAHzұwH:zseOee3:lH%ȫVɝV3l3ݏ򝝁eV,%ϏHz!!!zAkkk:zʩ%HeHVzlAz:,,]:%AeHz,%zOϝOe3H]:AsϪee:%:ssFe,er pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6VIDATx XTUǯn6BwKR,a5*4Ģ&Yw:\!Y,v2sdɘZYIoZB%XVib}YVO9~̝/@9s=0`/I6AQEaMP6AQEaMP6AQEaMP6AQEaMP6AQEaMP6AQ6_{bC )ǀbk4C6M5V`d6&ڪ'OlnEC^vrT9ﵞMS^W FR|aatng{^z?uX0svbP4.t%z~tFּ6rgdyZa< K ;.2|=ylqJQq?,!~w{wc `U 0KV+AӡVĬk+U҄m~S*v̏0 npdŪ\tÆ7nӎ+b:jr튗%g_sr 3ݳE6?eNt:e EeFyoʇ]1`?VoSڙ2lQeؐ <-4?v m)rS-L#-z3&c<0ÙR¶?;يaUW   2uf)a+ӈcN =z]Vvq- ؃}NcM_-Z$|Ǡk"R'irxv&v)mUp߰Ov|aסSG8 vѸ7`EutaՊG+HKcFTT脍*;l/C{\kVB*5d$al\ر"/ObǮM!??A8|~Y$y]۷j\4Ybwf:0;0g/wf ]?:aiYMs-ty6v0?,71w+6sNtiby-@d|Q~L^4Ծgĩ`s-zilпwϏ̇aPx_ }H#k3.X e1]~CיCO/WbT;,߄aRabeǯ[ qXDܸIK`wߘs_jC(3}XGs<\r'Vϯ1~0SI\6| #[sh5w*\"Gd]ܛgJ fTR Z6AQEaMP6AQEaMP6AVڬjwiW؛LE.d bc@VxJmzqm.@c/FlyDEZHV~?K}kh\yS9j?$l5`on as'v3.9NlO}_J9tO$߰f૏!;It[%OV{SH9؁`#<"y~^ynJ[BrN{C;2 VtF-Ro4j89<͉wZL-w4xm&aۦP5PGL)r%Zq(,2iػӐۥ4bhZ?-&9X[CQ FVUh8gxw'^2xdՏ>a٦7.Z ofam=m`bWk~CAH菏mFvvF-0l]׋>9Éw†# Fa]J7~~@0=hٌ>a) {(lggB-֋>9ÉW#/.s;g?I9BWHYB+7I k$NW~Sg y,׎tw'PqR~-s$0\IL_IԐWչD(Lx_(.;G'MJH,Ja}Ӷxte FZBVIϏ7g{[Z.ORp#&6&ThU18 Lgfsrb甔wY>s$ jA)0*z]]4 ,dma@ $EDoN[ RGt?ٻi]F*.$ W27`tߎ!YW2D7sM[UhI4C'4H@jO$>..,VEOb<(:\$IrHb(-J4S2CrA JvF$B(W=jJЕTLGE8$yN@ s I(eW!W05,!eI;I($#ou,P S]IGDø$M &Uh GB@ >>WY~|;9fKk6mJ|ZՏw/$F$sZ7{+e6os/ "]%R}Կ8ظi0f3$*$%)D qrH$+jXh̺1܈}%1z1݈hkAaO֜qW@$ $\ IH@.p$ $\ IHz$ LjG iS+izTjH % 9A&^*ix5ئ MI SQwoxG_ hYat4]);UЛ$3tSmI]p WΦ]&oDҤ&FӒn:-,!UJWL~_X~[&~f {A$Iw9* JuәV Rk6uÏ/V%ş6oFz쥟;+n7il @ eN,'C[gR%!mrt,]IK:OI{n*bӵY+5଎*ɦI,ItA\CR*& ,Lf Mr+ͺO;'lcd"m`9I &IaKnH- 5 dVfju! r-RH-Nl"w%ϝZ!ˆTE*%ޜ6,W67PMyQg$ Ia"Iu7Β$gTwR%Zl^T05h]MJ-^!$A!&$ˋLW$)KR(KBI鍩3R%Ou$Q5z1D4礃>!x3mޗȉ]XU75ږ$߁tzMkCJ9OꈇԧXjR *ߦ,T(ʅղ$J.%˿$mtHꐤ4JaHL KRёJYYy5j{q-i^\=ef^xF^hhX#%RzN^nj;|"K\.K% P[xskBwN&Y %FCTK\;Wo?IL%lUXYa|痃vWȒKثu4mж$BTR8} lH9nP*}l|hxeC9k_~*[~(Kٓ"ICRMDJCGدw9Kҟ24;7tP?TD(m\HB=T"{sठe4.;4I9]ch?-_u%75nI3H@.p$ $\ IH@.p$ $\ IH@.p$ $\ IXUn،>pF7Nť%%$jZ(h'REZ ]UZC4SI)6W@fH,1ZC $1[ffmJYbA$i$h^\l }ZKHٜ Y`m:^JRlXb UI2wnǦlޭ;Igd5m*^c$94IFJL9<'",6[qkYBqI߷Ш#~XbA* w1;Ir &^Hb֦jNp2I^#Ir5 `4m$quCHB}ա"$rQbuSyg~ O1Zl8h:I,+b˫ͩ9rdrmoJLCIidI&$Y8*8fAA1AЫ`۾V!$ٿݒKbNmfGLcǎ97wPF)Լ/z q95ahO+>8$S. ݰ2C5,ɲy~/$M裏֮(1hsVtu:w˜+ ,ݼ2Zu7K\K\=yYNHo?̈ϘOi]=e?(xͼ{1!WH\;W8cGeb#1.o&$jI2..i*I+$>V\/Q^}.bnV5%G1oh$Iw7Ԗdnq3 4 nhx8ګ1$1yJNsa=\I’!I`v "{A;n^Ks!a̩+y$˜{6 1ԵYo{Au+q|Dzzxߝ#O_q{b/w^1_d֝Y7-y{:t4rZhH׷/w1`@;FhT.p$ $\ IH@.p$ $\ IHA$VB$ $\ IH@.p$ $\ IH@;Ilw2m^x8x#o1ЏO{~,Bc4 ^H"]uhvx!pl"m^ʚF/?h/b"/g1jd'@RI,1sqmN]u$əw[bo'0I_^d=soWϜy+|˘Uhl.Y$w.ǏwqdYH-KQ<+xl~C1ԉ; }Y$$I:{֖-IK\tޒ ̈}3O$%7$bW y4kY$g%˖!Ƿl9乫y}g[a=Us=b>?J*:ѠG~پK\֔^K|C$q$5cԉ> $!ԕH9@iUۺ?S@njŨ |8 ɮ>vN\aIi;Q<&>AN/acԉ<%  엝/f~*+ #o'4nq4UJ9v8&>H_+IH nI hu[Une%-IU<Z I ҧyB>4SGqkڈ(vu-gYqb37B.xp$ $\ IH@.p$ $\q`Iěh{;ESJGWY}@yg5hvӿ/wl<.#.bfff0]ܬkwqx}nm-0<9ZlISPmܞ]WEkբ;>k忖ZIxF;^0.vsxL]B`zɇ{lE]2c݌諃qܱPLm«nB;nYcn-0PῶnI`5_Kmڂv^>.t=3>|IFWYvIu&E^E]بEInY*P7Wl#]IWMQ3 pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx TW_8G>C G@qF:FE$ƨ4isbKlh1G4 FchƈQ|?'[W ARgy@K1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1h "-AĠ%@i{OG9u "K=[6 _^8hIՒ4iKKi.jb}#KJ\/\ f.8VY_k #*Kt8hIW[R\/1SŅg" c//(CBvN1sHƖh|y~=LxcM!F /*VhIF8 R$7b &p> udƖ\W3c O`%ш/&οђ.f$Nx|_ `٬k*Zq#oǛЮ4u%G6?VRu)6/M ]pS,t-¸,GW3(hqI+ҚMZқGue&]H&Z6EK0%z2n%E%K?6m ?cӂC` }bzYjta4KZ : &%9KHv8nru F Zҥ, C3KBnkFfCUz9Kh/Gֈ%+?]-˰j%]f,%I˒s؇nru#n[[R-Z҅iޒeg"%WKd|ȰqY ӂ%da JMc2*%#f-A;Y,"%]&-L-N0 m iShz?]]c,!ɥPj?$AK,wž̑V-XP%9&Iܙ,9,<"bԪ,Ǵc]wK`K{%ZF/dXXԃI6uez]\kc G[#Ё?ރmZ@K1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZiΒ{E~e~5© .F&Kv%F:hҤ%ׯwvqΡ֤IKz"Èޭd/I~єM[eE:[2-Ղ bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK~݌~w]G -5rÃO,X0x;_n)Z+ffBTlԼwМ%ZBvNju߼g,JcPfvVw&.kkÎҾB.YZ#l]'o/v}R5/&d%a^lV2eK2OY??q"SqXZp"f&D>%;ZcIgEؖ-LzO(,^:+ŞHݻ>D3(aU_^`^5uld$I%fDZ/KRX:xuĘy<u TY7&k%' 0["Xu]/)ݼ}dqg`Dиpi N˒c$(.-Q câ#GL7+T HM |fr`͒̂oWWC!۬WRL,QNws-ю-G+9 k{.[ا:pk\[NN}ml-\Y? ]dQNDXwKl<-vt*_р%S?)QM%z[BtKfI7YỶp"C-QI0ҠJlԖq%3,f׆-DkKjw6A #kƙ%w9ے^-Yі;/8nKmq%)^ |2z~-CryZے;ӖPpgp;u®f22;eEW[ >Ja6<-Q2JppS+p,;kxroKlexϪf^8+pd~mجO;Q~a٣Aٰڅ'ggAjKU(nmɑ δk:m@zKg?.;@]o]h;q+4kbRS rK-CryZu}d]8 L0ot#4mHRp%c uHΑJKs$i?xZWIZqr.m@3Yj 2)g,ydNDY'9 'EE:vl#9 RNoa$ %w#"^NEaXdʀ,IIKQ%NvDٙ%]K)3fio^02*%~c('KR~曳ɵG#~Kzĉu?젻/,_buwHR7պ%6mpR" G+1!\\=56u>4q.`xL 8|ܣvK~NSVkGZNFHDI~<5GG=a$F!!rwM}bIhD_ bD ZAK1h "-AĠ%_X"#Ÿ ;h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% b|bIa*^a#d46?h~oO69]xxOjͱM~g{303״פֈ%;cy^3*iAA3K57 BY ej,$TϟhӠN'&3It&5W- XX^d x5tfmݰI8ڬ>o?m!R:wڴ|Bkb [oM,rUg>qȌfT&b,kdfi2xt\:=6k4y敖/1G;i ,f,om~j>+5DUM.Z|fI ufi6S*VOMyy"stzhmhgɲ"mH[⚶YZ%|~j7Ks| ~|fI t6U%7Q긳5=ن|_K@&:4}D3%ĒB\CsJRpJ,ئwj&?%'?wkk "yIG6⿨?ͥV9MF|y"wcdђ$+L| ߒSWxm^`s,’a7[WZe4Mrɬ .(YOR3VRiPe.uU٤[_spϷ5|KdױQ_Xw#R_AstGoKw-bvT&+u GD驃Ң@H]p$8kjDZkؖ&~p<=T iT 䲤2LYdF!<_g̅6u;eM]öTH>tk)ag$M;㐮eI0t`5K޴% %b:>FGrX`ٱ%>5t"/6pJ62IO,5.K`~͕po&&;6()I;Q|):LaK;9Sh245nTJ۱fLUpB]5k]5ZŸL1%ʀAUzAf\+_Ԓ,褶d*ɸ׸Y}ERH=o|t^4yuxozn}hɃ@gG%AK1h "-AĠ% bD-ľ;=Pխ\_ OӔ>*xF+3~D[[OʞShbըvdxђ׸%iᰘnx/6e^-i2 DbI]\ 6Qf,or>RSkK4Ql8m<(S)D5Ќ%fK{"rVyNeքT꒛n UßyꫂXN,H˒ vǬ~%e+fOHI:E'QE,H?\#*ه &CoD;-JS0`0-<1+Zr*&Fa2QڡC~oZx@CVھpf?&+#zt?#4Zʟ ĵPMa' &/aegT2vL tUKv,vd8k7i$+q`@g[o_],in"uR%)䳻h+Cη,)5$Q'g)~?6]<I{V.h[34fI")jW+&@G$c^:뗄&6)ّжS?47!q퍖{gkI;RK]4(Y^v)Mq١e~CBӃŽIW jePe )d 9eKؾT,wyC*Fӑo{1n[LHF%Kd.iZek{j5tƖ,yƞa,yxO?;? b▐*쥁_ |o2粶o١y-Z22BhJkWjO-g?LkvtY2H15W~ g*mKnZ/$!!6ߵjI3G nђOf1=َCp lzmI]JF= P8`[[‚?x[FC^4'ݴK$SޖXidm̢dX[R .JnK%C9ET=8s\£/l SGKрU[,} 97]rA9 IDATApYBpBx#I膊G `AD=9$O^ "’b4hOCMTKl?P(6.)'!#dy"xDqߞ[%'C߾ L?-apZL{V(h9r!`&0/ t8w<CqD"4V%_?QY1΃X43WgVoϞ|*Ēp[?PwhcI6udr!i_Y0v=’""Gµ#6E;䨒nh_l[&|aI8hDŽM3k YMo3_7cRbKkȳDv)}uG%ͱ]&pMh鎻Y㿨?Y]mLk3XJH +L|##-Ql&~(%D vF&Qbi{@NI"+iK򲯀;GD񥘝Ɇc b|!! Vg$GTk @JdK,<gf$ɆUĒn}=SiDGK5Sxb߇_XB/S zHbuɉyĒ9):#y[zF4'T&(5SE Q=q#c0L6VrSE㑺 I,qBcW"] )%}h%|% qg$P6Oca,$K"u5Lϸ[r)Ftup9K`g➶,kN03|)GaW=l_IS-{cK6I'uDָ,R@]+OWƭx^ k??(+eYG{9 swJ۱fKLf';se.Ʊ'@^R_ߚ3lEL\lHJ1_qľGrc[zWMf(ޖ@AUU1é}%I[蕰<% eJuDĸe}t $5D0Jr% ./jetDJț$j_fb ""'}h;0B :w>5iͷ}qL%(Za`"-AĠ% bD ZAK1fIYk&Ϗ75=pS4QIJ~N"|OȺ-{І*M,m%iR S9_7zxVkߐل%ޛ݇%MMHly69M7 |C^`I1`Ÿ;^{-ZWS9_|G=Ҷ(L׊>,sOēnn*Q%Ck\5;of%ljR.= k'zhH,;Jvmj:%롼;GDY:xX'm*K[\i~r6w/O&lY$LW;|=իC?M&I"񉐃%|df 3^ +eKJH9j'$fZ"vIS‘-jC}2˞ȃGvKvg͸=Jqq_gۅW7C$ٸ,&t^- a7&񙄕vM GO?O09[gAָ,økaڳB.KJS%lNdRORdc%,M^8ӍypK*y-`dW=_~cp*Rd&]snmOQU[0$$LtۧzV(+)>M>"=,dd>qxLIn'/͆=Kӣq Y9)d2Zc[fQ CNt\Bvʖ$dƴĵ=V[q z[bWP@Ưl]R % =筀jv4|9 UK8=01J=N>Oa3mpAmv>;ynzߝ=p٧p=֟SЖ| Yas"( ǻ)?CqXH1uVIkdzC?\}{>`Sm{n 6iiջ%BR2G|gw<%Cݕt d!#-ikjw{B+-_ БVah "-AĠ% bD ZAK1~dĮ F8?ג]̾3b.ZkO@M<%#XI@t%fwdϤ_+:7Вf@K@K-q-ič}|Z} ZF[a =AeCܲHif@K`K YREat6dyKOp+!ݞhjqAK ,+c-Y^,!C#KZFW$-+b頪m1Ԓekz&,;w vbQ~3gqۜeZdpд1Ǯ]0ac l3Nk q[b tKGv˚)I dIgU,?ȇ\[⏬-)z_u<צ}۳AmC;zQL1}Xm/{jBKtKB yZLrf{әb!F#x̂٣DŽI 5[i"Ւq0YNtWD[Vƾ` hI t K|̈́YL_a +ʣ,o|fko,Yvg(V?O{#!Ԧ|%tK#l|C[WAI j_f͒BWKs5MKіyYFUӄtK#KYvg{L&q[*%[*H3{uK&$AKhK6Ó5nO둍λ]_[=u%9^ 2f$QِNgWfk!?iZFWq c&iAY3BT+av+u'UzZH}АO+_L?4/e 2- .k ZF[!9M7:ؒ]'%?>ȁ矿ftoɼ#D%F!5ZZ hES[MOmO6 >>M4Mݍ+7 bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% b:̒Q1-~"MWqOKN]Qx[tZ2V-n1h;wkI'3mIܒ~%Bډ-AZ^)Wo}`s,?"ȟzYb;?뙡tiw  uʳ'*RA K.ZMSn 9 pP$}9d,2[o>,Q_|~cRؤ:/c!q%_A_ׯ96S?44e*EK_HM ާ?#:V WS6,1WN^6M-軸%WY}-v3~ŗGa7*ɤS l&>j74 l}ɔV%߃SYܾeT~PYI ~D7[I[^,B}7ٖWH[bSے(핌nmn M?A>8&7ۙJEWCIg S'}@. tL-o-m161KtH$/6΋57\t*:= d:jE^,h-svI:ߒ}JdN8m_gc\Lغ  PKhw].M}N^ِh}2pI^*!  npVv0K@q1<t561V:Eѱ_.ŰvHіqK^T&CL[K`왕x[.WQj̬'>ĈA*`3YuzXr wn886]ƱҚhI 4'pu.p:jԒ7K%TK$-f ,dWlPKjcyhdc-=zr֬YElY| n>|<=]5oK'/Sq-=-˒dqSM77a2qT$Jf% EBv'z}o;4#pұSM%[`:d4#0z}q\^cKQrY"0,[|*6]rl9a3l%`Nrcd _Ѝ^OqaW~Y3EB@Jx>ml ~olk(X>.c PpOKȖǴ3o7Q5y1kKvtj@Pѽy&&iߖn:ܒa?J{-LTsΌB걵FׯܛtfՆvm}1\lǖHgZҞSF 8V bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1D>ڋ(x\'pE _Q`ə1Ս,s,!{,5ŗ@?84D0 ,9A~IR V+IҾ6JjFM>a8[kT_.#\^`^5u,4)Z(27m'Ű茮ԞuR1[XU( ?SeI)ʀAQ-+,;)D,L4U"3U$/6v%,m\y-Q7@q&-c+>u T u:.9^;C/8unKq~8©%e9uKDиpi \?ߚ}%n;WLASp2h?8L!h)qȿ5G(As4phrD%j|gȴVk썶y {]4 ͸{)i3͜8d}q#]p~KK"umvJɏ7"}g|niҩ\@fX~=fD,o>LVЎ8#u=_|n ҩM%PKl5R\ٸ;FKI,X{(sָE,S_oucS%g]ᕉ0t)ņ8xn!Vq -qv,:oKdxԸ,zW[.n o&cg%d|ڒj5Uq9:i˪;RNc&hd \Lgr3 }mqK(et\RXaB #k'Kdh{;^'zZya??=rr&5YZRYÓ[ԌHB=˒V=:.hbx%:rui'=*rÒw͆JEެ[:VnY-7iZjET7k9UR= s }E Vw;B')jRbI=aW)gaix^1}!62~ IDATWV5CIBGя o%HB`~N- |29 mib?35>+2L6.% 5AvfGZ`{SHY%W?$!=Φ`ɣ'g͚UTSxp[rY{dSQoK_&KԒjj:f BZbɲ|@bmUsuOԒ嫆n_AKZFH:.h{r+eX+yCۂŗ, ЏƳGBgAz+ɣۻYN K۲!}௕2%Ÿ^5Q0ގ]731rِ 3Tk'L%-k릤- ucSbؑn. +Rj>)߹"̹[`:uX8#sf% 7b^hG¹I㫶{~WQH\-iDƙM$m&8ɵhf=:"[-J* _I/u lR=k$ S4=p% JlP- S#?KTIM8@ݓtaMtIz58 bD ZAK1h "-AĠ% bD ZAK1h "-AĠ%U&Q4խE;޷|\f5$}_6oyߧYe{>i:REo4y,Rmya(uw%JEo4yG#֑gJa3ML6J fMnq7-)#O3Q(}KM2L eՍU엋 SsaU ,V'!1{OsU}[>:lc#.:99494ۓ~{2z"}qrg`cQ\*YģϝeO'IޙdgT +l-ל'aYYyLfҙuJMU]sKC+6=<_0Kۉ%Yqʀbi=Pه7-s)6)Gphm|# ȩWf\s\n*bC2Xo]PLi 8 dfIylV e } lH ?ǘg-aO5Kr W{yD>ד>+Os:[xKؓp~S켫.jigmy2^s5GJe0uk%px|%4`4W(W.z#$Tܰ%{2]a[=e٣0o%qG?N-!5Kjf&NԧiYVd*r=;V^Zgu[\M^';ǟ-w:W-I,qK`ܺ˒OTKH&,!Ob /jɴeўod%Z3Z,ѽ?v%4jM Ǒ QA髪Ir$8tLBE(}]n{sڭLW>[[` Y%sܒCfZ@$=W.gg8n#gj=N'Z[EK#?Nu'b9zXSNj|KʫZZ<|zmօV{6^ݖ'SX͵d-ZBޅ,i%p5* ,5K00TO?k?Zd u%c|4"0#?N+Y Oғ׳gYWE-lל'kZtj{! q"/ž+'ju->n'!y5#V&?D ZAK1h "-AĠ% b%M[G+"7E2oGsKKs7}W[%2 J\j2 Ҏ`kIdZ4v'_uXbm-8sѿjذL 0KX r"+ID~nї<#}7iɪ{jj)Y<+CHjI{MdN+“1YYΘ's_~0j mFJ oKh0 eo*nea`:֩¸<_5lXL6)u[pf AfePTK&чzF(knbkj0KfxC<G9$&q%etMr6TD[^#/iik 8<(Z£=-?M3Wu-RCBm-6X c V%<AE\{F(knv8Q- nZ奡jԶ{A4\eV}j&TiuJYϣ=-!򬚬M1S\iXu-[V89q3)aj<Ah-{ojI%4-b`+Vk-sYrg\c4Su9|CILrh891:A1+@eu-GlK>u}\cA&9Ș%KXP 4,הn~|%KV}|,5}=*[d^ɶjDD Ixh4R& 2ɰ΁F{mzF(k 2 uZ:+~H\ݣj^^=s2zAF&)c2~.n Jfc4,~F' e A@)6AOOj$ͧ~X] m٦W{ϷÆ5KH~"y29l./Xj #bIaPFmlS^M:~H\gEjf¾Md^6O9JU_-~pOtc, uF.a$Tf󹢄KGX2G!׿X5N͑ j8?\?gc蕰|!.O#] bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1dOK bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1h "-AĠ% bD ZAK1,' b|Q$hFDEH芖Y(_d.h %E(ugXq̖5ys\rRPE3S{fI w#|oQŮ|)66K !,"laKKQrϢ}I^,}Alb<:lց/ǪcwzYLkoUucK*Yɢy㸓%v/qhNRSN^qJ` E 3h45چ@NG2Lءmw%rz8}`Ati-uI^lב-Y# bmc!t,Ԓ21^bRrCK/xdJn3,AhRdaMKSCa(:DZ\jI~pCLњ~Y%C/,79O8jqffY&%Z[b\Iu6o 7.ж䈫--q%C/,ɾBWfmPg)ӟ <,!"uk0`ZC^ 2 [n+7|rFIsV=:.Ha~mجO;=,q,|烜\EqYn6oOS+g ON&hW5Y_1, Y5roC'9 9ߓYZ,Q9Jj؝WIZEDW:>[=f>t%?%&h "-A`"-AĠ% b: ǀ&$VmyNq_m:>$lk%i6ȿdoj嵼g8Gf5ۀ%MXRf,YIXǻ%X(}ۅ-V3gZ0alJYj.ݖw*ϕțZg_Qw+9HIeC-' 3(#%$M|n=a=5\ZTl}NO{NzvYZROYWL(Hxf8'9TFU^g,MVy&f%!g_\nR3uP혍V"YrlKWd݋_Lai&^j-9\e"QgE~=xY_m:zF=3QƘXj9f[5+%uPCٖ(aOZ֍AgXge?Y#?tΓVfIm}obG)+cd-΁CnL,я^q*G(,Oy }f1SS,bu+KGri*e `gkZP4,1oeɬ{ HpKrE ϔ\9nҙA[?vm>HcFpDxlL\N őnɻ<Xo_赐NTp~Gv;ߒoTƖ;Yvf5&!Pp84̒ xϐ`G%^|7R`;ln$K壚%$wzldgPBArmL"lk ]XOKءJ*2Q!%R^)DΙ-kGso7^"A'1*'f T45[nYy<4K`7H)ږ,99m Ж<LJrAr/(<x -3V.OKP\OKԥ^>->mI l |퍊 yU4K\CݚOV 5KdS\r% o4n>z?(c{Unp>zMEKSg}Ϲ3Xro|e{`>Cu'K-)-̚lU O+ׅ؜%pX*V ƛe{<-g%qI: g'͒ԥ }Zѩօe-!%eQDmͳemI1,!Lľglb2k? ,HaDc~bXή kr$Gjk%c# pqv~nP2.#IJ$V`<q@ea fa& $ڗ-]5u䝁&RqK%q/%zZRFbnjK)qX]xXs5΀A.:rt\%%mGF'AV<^3ܒq_>5%ηC}?6&E#hI"֖v% \ECK-AĠ% bogX (>ϰJmnL_kvFx ʎ.[QTx&Nk&[㈷ք%MůϚCLZv|,=}[Bh%4$)KZ}kh@5-B3^)8!`2 /_ثQ:nVO*,K!ñ})Z `aY4ߑ8|ꈺXzRbG9Xs]'iHZ͖/h4 4sҽEV{,b$b^s⫫Y$fb\ZVf`fw)KX[gX Jdep@ZɏHm~|xXIL wR010{EcHTGD^SG{(яyHD-Y²XD xoG@3G-z^q`1c֘󏋪 J MЮ( ű$ Bf{sE^zAkek#ABPfWkW|RJ]mk~W Ny9sϏy9<7a;LT%>2L$-Ic93OZYLv&i]Rt 1 +Ͻܲ/3M H/ɦOϼo ; K{,.J`Qe&%a*-KUOS\9u8b6CZMWEb/Σ̱sɔ7.D*K&+ízzCq["ziU1Փe:lTZ1˖d.)Kd oX0{%s/t0q~Ups"KǒX^d8Yx1!Gsely^yǒ6rޱ`sg* R|-Qf%Mxܿxu̱Zכ*UYKd`;z&t>6?dT>!dLD^}#S&t0?bj%k47~_eq-qFw:ʖy:i.qʉźI%@<%mJ4s[:VIDATL/^9v^KX KTć9jRh tewfZRAmttIqLnuF`%2'C%"*]NOSepyWr[rLrɴ,%˃n \9~X1hv.ϯL4s[2r/SSUkԧU!9z_j`>V@ǭhQ|QKdXedt.02K.jƏ};@ЃPXh` %Xh` %#,y\"pK ,4@K ,4@K ,4@K ,4@K ,4@K ,4@K ,4@c%>ג &ԷWh_n@C&04hjd[2o<L{0~%svXrk$̒q#-Yzyލ\8Z/ ZmwfVz'{O٥kMeIO+7zhmi쯸].68>e]ZͤO?yti6z9ocO{yfw1OMsY^1jVsdž5$_JV=cUzK#N->hL0ƒm$8briG>Oɑw43)K*Ky:cye{^b|G+{#Owd&qcņeem=ɛ2^[k*}3칮y 3zM){Hҫ[Xmԯzhc*c$|yjinuiflq#{sAwj7ښ%s\zaM{{sK ~=S=Yߙkv l ? ,;>}PuoU8~Q l%M.}Sl:@NXk&Ud0,yWcߌ.ݎbZ]VDŽǧpU:-Ll| [Ŧl[x%za\2dzDCi.m='8Gŝ4sg'|jfK&~/xL+[ؙM]|}%97ukӮW¦z_h5qqٓT:iR >mTq ,4@K ,4@K ,4@K ,4@K ,4@K ,4@K ,4@KK`Z.u` %Xh` %Xh` %Xh` %Xh` %Xh` %,鲤%PZt>XR$|/)~gK! פ #,I&tB#,YI/`"aIK,i̞1’ M8l̞%KےY۟@ؖصʀ߳X2xiD`1ӒN7O4EK$ZK!cIG01X;/-G|pY.w=G2C̻gx K "NʬYxv+j5$5?T@K^>ܓ6Xwc]3,::1ewc%OhoeoĖ|,۳KzZL9[ylC:k0{3ja1t%ML}%bɘy,~AA$,1N$6u}Ύ>EYfmo_,zYsU,1D*K:VFy?g'#,g~Ďǒp_OZ⼻[nZPLKt#,ۺ&$.N樛[)Kؔ#رc=J5kuEl8x}Vщ3μ>g7MZ{e{lW{K%wi!,Ȼٯa7z-as11z_ scj}ܖg籀-`g|Mm-H~ e LB8^Kƍ %!DXwdKBаdIɜ9%zXR%sKBа$|9s`I"|4*WȎB\T"%E2$! BK*\ԇ" >2bIDx4yo4@K ,4@K ,4@s-q< nɎבQn- >P +Ic\t|a%)s<&[֟ RDhV^P ^1wdɢں73vc.+P dzI<KU,~N7M n`ta4}uKl%E~Z9|nWdAB>P8>hTr.c x} dq- f6β4JKWODV<`%fǑyNl]û36fܕ;BGWl;?_0K>`Q#Ly>亄,wy+Kc P%vQYAVWOIAduaU1);RU@m_q>N$Ʊ=:sc5P|];DDDU)Q va 1yϕp^U*?WWnX~ cOʂڦ5xXc7k6X_/O]2yg{>>tttbbb>jjj Nc wT(((p*"D~ZshHvu`4 v~zz, .VkLP}<8D&HZ xznzBXsn!s pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx{pսIx*XRmתj 41+c[,HƱ]l캝67qb6!4R^$4?:M'Ss-C[sv%;wo{v?{~՞`~,uA(A(A(A(A(A(A(A(A(Aa7 7 -S5o)T*cĴrMYZ, @78LcvwF9ZPv~<:prxqU [= iuǺH\g7]YzLբf<_UIF}>ÔnyN;*lp5kgckXk 7XCT щŐL7|*Tf e0^JIN:%SQr蝆2 <^W:dL/&'ҶkuW$% )GI8MOy'?޲OFC$Bk3ŇrcA?uHG&ۆ)v|BQ.-PVDcFtyoS K3 I,fa´fJc$k,p%[OvTVR3NS&Q#PFhkO6D!c{r7uS/eqOYܝ.Gc Ҝ08^CE) &c w4Ix̀AL)ŲX3e$Q$ 3v#:|RvSrXziЍ0$'kb۽{%ot(;#Qڲw{fpۺ8sQLud5zC=S?rrH]7tucмvIߠ+(-jmʪG ޠ*,8h5Tj]d{!Vd׏rL5h6 =o0Ѕkތ#'ssl*E .I| v;WK)7T C촊yy3(۶Df8OV  +Dv} Q>>%P 9qKlx! @)Am,aNrdAdr,#cZn vWz\1[2at("'Bќ_Rx$k8c{>A]G)|Cݰ XTД 6<e5\vX퉮>= U߄Vт|JXI-)ʜ#׼Z$e2RcBI '\j7%u_L};xNGC_5l"n2u${ ֳ ^)$}e_zK}; Q`@!VYA~G'=Xx&oe5 A^ $%ev׺}>{mPQܮ6_{nxw(eXGHK؍́3Jwes^v\gO9ғI=8f(CJ:>_a!5G۽zk9Оg>S1(Rƞl5?~ at5`dIP5 ˇРgigR&gO+&JLW:@uhO.{>yܭ_OؓG//12{`&]L̗噘/w131_bgb(G+.凗 l,jĊy$.C<_,h_ΐM_Y,X 1KPMsdgϲfJ)k(A(A(A(A(A(A(A4e!fS r[[6?`?”њX*Y:TVkcekY/|;pf;`^,Eb FYb FYb FYb FYb3P:ϕ匓oSQ}I>=(gNnEq LvCzGPrlIZm 3>P5{BVk6 ғ֘>ec|Ȟ7ZY c59s:OZi(GsL1M ,ٽWqkVRcƦf̥׻Pn2rodNgNXO^KpOeZqjקuiK~a&PGYx]Q s*yp@:A>e+8rx[e @M8Vo֓d@_ T(3di_vK>kmcUJS#& tHqI׮(Ԋ_NRi_%R.Q:eQYV J][Kv;u|CMM9""!XVoP·ڕW4E|sWVGbx,טoϪ5 *l7JyCbB9wߨ%$R(ڕVn;zOn@#_Z%Tu(E`zhO;$5!P!\rIPBqtOP6\~ psyL rt\iU.yw8)/$鍣 xHn+Y̥5KK\@MMp)MP뫩Z@썠RZ9\vzx JٸCiΞCڎrHrCbc*iι02*)Nc)F9$L4'[ZZ+lGfF94_c]fsT(g+Z(hUG~TafBXt;`Q6 fɤIAqTQ ZiKjR(g!3)F9 e֎ESSl:WIlUpNYN.BwQ[TEE/F9ԥLi(5VY4F [~a`T5htd^V7/md^2l+e{hʆF(A(Armjl^ǯNID{) 3φ Z(v7~`_K3x~pi#|.d[+#uFor0{;R#VW>z>I?~;G\VY|iH<JΪϭ/K/^ W|+>C?߻z|ン*w|7Υ>G=~jEVjʪ8ɷxtMS 8ܜ*oddDWm#)tTvVBzWڐ'cw_RY:"~oyz}z1mWpcoè+ wϝ[oë8 /}tR1nr~ ^jH\^Iķx/"SkOwp9tpֽpԩ_\^ԣ敧Wг7::ξp淫<қRR#EoPʝU)-MwtD R[a~W؍no%)e {~@Q(BOpre ӧz7NKЎr6dƑC DTs\s杍O}3?|굗߬ԣ|Ӕ7njBݙ?\uw=~_>Iڬr &wD؀˼dRaG ⚀Hy܏53ɁXʇN v#"+1 zTaa5 &[ 5TR|'։xVe*B\b^1I9* s~>zPƲzDAxJW|n1_$uWK=JG,\[W{-7N) 4m)7ٔ ..m# t(H ft:2η! ؖ+Qnl^0k3Ky~y=&R߿FySx NEQ^4p:п. lz$s/:9GZK?pz2 w3]~e~ƷlAi϶z&P4<]6{)?P?J\IZͶael(c~mpNӓ|$PFGtrT)}S\(JJ9t;do^!gj~ᆗm֚r -dU--є+l^B%u$6{;}0 Gc)H5pԦ);q^i Ǚ9ѥo E^%Qk&)v)6?]o1F(cm_8= /D"8hi^]u<p> OO7I̛aWuwǩDOSMpTOJTՎ 1{Rf^vI2<&X!R_`bʛ밷uƗŞs={JWG7V 啷}hsڵbkum{RҔ*L6> kO]{R=p ?9w,&e랡fR:Ǵ%lH[%q7Ɩҿ6lfYQlGup831LR(A(A(A(A(A(A(A(A(A(A%o gLIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/vercel-08.png000066400000000000000000000373361507671574500302450ustar00rootroot00000000000000PNG  IHDRLsBITOPLTE߃fBf49oB:::2bI4_o%;Xf4yfI4Ĵs@_ڠӢ'BBBswww{ϙT}yOIIKH֛a$Q;%4QIaxЛXnwfċ̃B}T$+Fgx[OIMIOrQ4%Bgsjj}@%,ӷfffۧl{yMiyϙ,fQ4B}rI_%ŒIř۸n4;fgIT}u;%~UDv1R[D[ffn7?Е홽owjŽ4OIalIIبBfB|_o/'vϼ_ƃiODI'4,Q%ʚwӽ[[[t|B;333$Tޜ@$2,Q|1Y}b2$tff?oӤIrxgUW''̽n4>mw2MiID[ݭ~FQχ33fa|uB;yyyʨojylI_DDOżaX,2[.rUDuQ,|B!!!;|ŭlۿW/aDIڠXIgyϭF+f;,ݭ$[Y118K}ӯt̄wʊUfjn;Byt{Z8gӄɎLDIr|B,Ƨ}u pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx \SWaPSq";" 6U1ԗX+V밈+wyԺ [VK-ZE>QkgRsnpӚ%|srũ+4p =@O1p =@O1p =@O1p =@O1p =@O1pYdFzי'12Kɹ#9ƶjU=esݗғHjO ,ͦVڨoUzt+U=%SʧU\B]OfvL=P:J#=Mڱ=P\CDt-s/SЎ5)8:yU5d$zGo*si&;>#~U='oGT|Qp%tQ3IIGfOy]#OaIpzs V+k׳qӔ)qlmzx K$겿AO9<԰Ru';6 ~n+7e/F_\~w\l@?X'eI{5T.A9m/y@"MS+{KGJ2IT$!2vD=K h;Ҡ'X׳p*dg r7n=(HRݓ>$NvtZ}'5e&q^?zJ zR3g Mҕ$6!Лu[')=ׅT$lT?.:k~ k]"9d\v{Ӳ!ij.YL tOꂺ9 J' naVBz/NϢ0$ &F¨kuo0 G:Eᓡ=9%)h{dnn # :{?窱(Y֓FJCI:񁁑ӋU R)9Hq~SЙx6/IM3PɲF,3zF}i0Փ;.l c0-}>S.10t^۔*#)$DGm4apÇlYLTvAbzR z@72v^ttXf4$9$z|0fֺ PV=I}%X4\W3f;Ll:^@ݬH_Ɛ[p҆Lr;z=I &<(JrrAeULϥK8 oګD.LJ'iww鹪ݻwEOvzt@8vSg,z1G5ND5C4S{>ih>{ oDj|0ࢾRHOŔ4S5ܗmyߠ'F e}ϣ{VyE0 t#wxFi$1SEFGTOrB}NݛF^S^ N'lȽS=M)L$/_ey 8ROUB J@O1p =@O1pLYw 8Mυ2'ƙRr@٦MVpMeʤJ'~ R)'EυNgt9 ( Vt]%ʠ$f&&qTP<\2yDM}o'1|޿dÞa{!><~7cg5JAu+20drrCJZRL$_9z*ة::?Et聓޴{W;}7l-KlωQm|js"{ f .;x߻N~u'vWV2fqp\a!>+T*ؽ3q%T!jա&DkeEO{y5ETL =meV)NzLOَd߲ċ؛O:mpn)/>zv^\N~Ǿl zܮvh!tMŒ;P U(3Yٳ1г)d m 3Y!4˒J7Iyznٸ9;Ir{n{љrͼ{NzQu`LQlJT L3*Ӹ+г)woxw7W\6#ШUQtsbE1=U{dDF z#Oqq c=%y$$c7HFt$NIadoMt2zdR 1Sg[l zV eSxN"" \Kfz> iyWݠabLvbnynbIw\|O^"k C #{3=RƵ<#t|7VlSGK`Gv:ʤ'@_:c 7ͽK& 9Ķg2iN[%b$<^vXF:;0Yű 8zc' 8zc' 8F=S*:bHH(''pӊaH9hEOPRbg zP@O1p =@O1p =@O1p =@O1p =@O1p =@O1p =@O1p =H h)?Gp1YZIQiٝT%(䱺M\{gbK!?x?Y) /zjG_?eOT_jz4L}51/OVLO+,-"R&^\bw :eŢ6d)۲A;4ޜNSc͚ lG:} 7'm3oiM6~CJ)$3kfˤca]vP)AwGw,%klNs VzKlĠѧ|mXlmnQ-߻Տ༭z} q]]ۯJ5j"َ"LkG.jUD=ta?yAbx_b1`NBtK)^H)?^E|s ?9G8o9Èǝ}ym3y)NjHqu^,VG9ֺᑮ^raګ;eJ#=/K<͍{/Sskt?tuvnOq΀ؽ= Q-uӬ~SDž]Jώ:W=f:M1=Ow;S^fxz.E_KZ{sT|:Ju>gAAh$$.|,)=OM\#7dSnoz9I}cXLReWskORҽߡYI!E/H/n!oOl&Ezʏ?ծ3t|Y/wA[S=JFM|Rᙂ^ =q-E=I8:=)?uWIW;izfՎ2q#ӓHCS}G{7S_KZLۼ9A1ɁB=m5 U>pKi?{Rȃmtީ<\)%Ws]a>|jn/꾟jveN~!ire9l`G?? yϼ:&WTOFϚ=!~֫$ sײiT?VN9kH9jkD_ u߫{\OrT=&=[\po?HiIOmFgiRHE=Mki~=unaYZ@~@=!/XO}-"=5 ?TOE)ahDr(ICo v*y:?֍rzs9Mqgeys3ҍi&I76uZZH?V`obr)ȥ~iiR}:hTK=cmz-ī$]_mVdkǶ{?& z{Vm:O73K_KHO|HcDBEAOQmGN;#Gbğ->迱fzu!f?/[ Fg,z q}6: F!E(:iI^ ղY5 ג$ s ?>vEiY2k{N>EV' KEFFBYƇBth6-׹xBs~ly!&s_]YTC-#=nZ@[z.JpZjeZ[_zўg% $agEzGy#ZlfB8c]՗hBO&[7^Spz=B&[w}1Ҟ26D?[&9S2 {CX2rK:dZ?yEn!S0XUN,{.O4vU,ITw0-p,N\q{gi{xV՛S;* giʒ{7іS2eSu_ =@O1p =@O1p =@O1p =@O1p =@O1p =@O1p =@O1p =@O1p =H}i;R(Y)+ʥvUH 1-`r@%Y64|U;Fbz]Z S73Y'Ҭ3t^z%zH&ȻE3Ou}7ϋb2&ze|w葺J649tiզ%DOAz7bJa QVlZMGf$IϝW"Bc mfe5*[^+HR7 *P3G }EG.l{r&zfn5WE#62X9}#Z|kZcEDO ]U7ـjDL7䫞7&u+oB[ueGBҽ^,rؕp {*4Fl~eyj #=}z9Oߐ,}nѵ!6"XO}Q{ kM[4/S&iV/qtS״᧑B $o/VU i=嫖6!&Ъ%S\4z\T=Ma]0jD}dM[޾n1'6Xsiɼ6b&*巯5{'j bc=Miiٽt}_I$!zkLtMW:;!1]K uPE_%+ [6GEс^@Oc0rMK㛦,nu#t-5&:g='Ԩ߯uEW=+(E<p =@O1p =@O1p =@O1p5=ST@mi鶴/Au"%ŦASZC-D *jT RROhЖ%"DRz vHi'ڲd$HJORPʨY ,7W@O=@O=[ϔ|h ZRkYSJ0i1l$tU-ˋ2ꙹݿߧq޶o pޙCRP6=o_Z)`w˻BRP&=oQ9?՗&YZ@9u=8⓸ys%|۵Ş[h ~Z޳XIWB{KX[V*ʢg&xS!VBO VBO GEKBB!Ǔړ'g'gQ&MZ4zm$vuii[zFb.3szw%\9+ǵ (W;m/nY珫{\gl>aA7jڜum wk3PbgK>qLS)V4{ 5j`PMjarT.i=-o םxrrr{r1ԍzrnCG@ڈ?9)Z+}Y5NO"?vz&n<qlč;v*?cH $^[uqرO Εw\n7nOF 9v~!cgb?ʿM#}AO{mTV@zؗ6г~#%5V^i'[@e糉ad? l֭'w]䥷o޾h9|~o72S=oCﺠ<,zR=;ksk3qD#:bpF 9)jQ_Rlg祯sui U7g^~$Uǽ׹nOhȻ~TbasՍccم$DBV;w=0='qHΖwdՓu ,: z# M?]?"Aqե]9ɱ5ӂ%FJKe{}!'Փ6[% N]'TŬ؏UfʢgiG?*$yIzSضnd``ӫAIDAT`u$z&^;7dc==-ɢ>S8]LFz:랁9u$qoc 64zuҷ<[32E&(Ȃ%,̑T\O=G#R@LF^I^7Sݼ9 bo= vWJ$/)Io)>Cq1y-钻+ch +1\21KXrOvKB5ERP *)k8oIO(bYILOҫuIIyNDEUTI2MFe*馼kҁL:p]Y# j:|Bgi:4:'(:4jiFf=[|?#_rݴSkW@F0h|zidh]Wo?*[ Z6!Cګk$vKtw<|Zoҡ~hiFd$D7d55x?V>4-_EvOoq ۱abiab\ zX23>R̺nYS:S-N, agk/tK% z#KZmRD-꩟XH'q֍Fzf-gTkslӍutHSpL/sT,ۇ%eP_.f-,jiFc:\|R#Kv7^CM玃ֽXWRƯdkIϸ6.隷 L*s< |v5䗙T[XO|Y*֖Cֳt֞Jn2\kd?݁zi?݁zi?lԳ2I6=SЦ%6,gzH4%Q70ڲ$l^@11veRQV[㥖c' 8zc' 8zc' 8zc' 8zc' 8zc$Lب'=@O1p =@O1p =@O1p =@O1p =@O1p =@O1p =@O1p =H9up]l!,S^X[/z g?˞X~JQf;y@$=oECC }nx/]c8C}>˶G.ZorvGDO 4QgnZFb+٫=}3:`Qf|n}'%8J%O}M^v%S=j =4z6kˇ[3v::IWqbk7tt|R.oUd)Y-3 = WAO M}Th|ɢ'Ajk}==~-,=Yp:^L83qEM,2,!5klT;1G. yľ'ӓlyGitW^}E%>*R4I1ғcMK5Lja^S6Б]T#I$/V(=7a$Fc' 8zc' 8zc' 8zc' 8ƚ)*@i0FJizBN0dSU^58I陂 D8SRŁc' 8zc' 8z ک2byp"m@KY'13F#;fxmot/8ט]=5Tt-o󂈡_Vs:dV;6+GvNUuuyok8AubnPuOo~'1z^{}:Jz/wvy$6:TE?F[,o=!ӽlC|Fp:g꫹Ջq=,X,),h'{~jn/I2q0i2(v̓^z  `Mm)M)3z3fʨa aJ'QԎZ7ϩ=A1,PnCmi@'D=҄T53H}|%p =@O1p =@O1pz#MO@lYO@qؼ[AԲ[T4p =@O1p =@O1p =@O1p =@O1p =@O1pS7)gc)ni-, #:HO)h=1+vnnQg:B9ln0m؎U=WptwhpFsdA~R mGUnz,U~(&Szn|n_d2Xsk9U}Ť<&v(zs}7vaT=}EGZ|pO-͖<_ruU`0-ܙz=sUt7zwk{ U&<6 g&ii<$6|tg?#x`]= A2 IOBx`U3;AgweX@-?gہ sl徕g>z&^@nXՓ=W )Bӳ<{8r;0êg iBm{Pzf;b]O1z!sJ5d0]^z:ᓑہVdKpV6Cd|v. zy޲D=U4wcTJrTC{zc' 8zc' 8G"~~#%,bPGǻA1Q?ލ J/K ~PQ eh' 8zc' 8zc' 8zc' 8{=l~[ғ")8 I?v! z!+ V,P[,`+ zc' 8z/DTzP>!z=?A`E?;,Xb(p&k/c3==h٣l1ݢ=KՒROx.C#K~vXV" 富QۢK1OaFM|sFdK R@?[îTɩ4j _L_3]D;gEĊ&۴.]Iϸ%O9])LNP8sVJjI=6<=nd'|yrLA=v <]w$%4TOЅw TI1f-Ȉ?9m")8xW0%l|ȟ|y\޷uNOOVJwmqLA8F>l zZ U2==7$)~15y@i{zLHt8!Sț:L6Lmb4rzd3\dO5oOg#zwnWܙBd3l'S/DhXn5-dݻ/WxD6U} ݺ$ۅhjMZOjc?ӓbd\|!sfzv]Dt5;e#mi+p5Sɞ[3]eQOȒڑYp֓u.θ{7\'=3 ZWy|FDvZw If-JDD1'noo>G!+mF0ymɛ1HO|Ǯ=g* ;-q,Dxt*&3vGo)m KecHr̠K/@vi3bh);"~7H8ĒџTisHUO=AgT5}/\exi{e}%zrz_#c' 8zc'[b{b8 ~? ?ލ J+c@E"i'0E @O1p =@O1p iyPѼܴ<>!EGJx$:O8l:28[ğ=@O1p =ǻT@u-[Єvz䯌ш'7S6 [-Zۍ.Ea N.Z~g%+ ĒBZllemAo[F^C*E9/J=n{K-]-+|Eϰ?95AK`5y@i-cfӐLO4Ʃ3BvBwp('҅IlO,p#%-NE1,_uxFF:<"w *s߁̽{Obz"֬H 7wj{LnON gC.hǎb2vK[\ O8:z[/:q@r$^hT:=].7nk\$جw7nWvsogG,w3'=v!WB04ҭ՞7ד4=Ig̱>,) ٘NUg@' dK Õφ+?nms《'B zʇyȦ3G:4ҥg3=5\Fz=]&)7f|846q֠ē]_,i;&*!<-ΠHO0dAOK4={xʛAcz &'.8u腌c!م1]*Ν=2c1B|p =@O1p =ت'f=1??FC%Օ1InZĢc' 8zc' 8zc' 8zc' 8zc' 8zc' 8z)g(^gRTgznzV%sҿPz"V=U8 T5Չ SJOOH$§m]_Pc' 8zc' 8ze!i-mJ9T~}Y( ̳ z/ PY)v~`*p"PϻvZ `( i_D== w LIczzܭ=P &ܭ/k&wӈ k^O멖͕+} Z,IrHGPA|%}Qu@O"M{BZS)dc(?PN V}Ht\$rN,҉B@64RC4:44UJr{hBBݪ3Ӿݻ)`y@%&CyB~bʒا|=˛ KC 25L&@Oi,&ezBOY#9='@O1LϔwS>YpAj_6zVBktx>kS@JHkVUN(l4MHhj*=FOU2VTU=m 0bEC8Ue=mŔ* M ~Te=ϚPÈg?-c*5M Mzzؼ꧷VM=1b-I88bPU*^f-Ξ "xXU@OIQ%c.p =@O1p =@O1p =@O1p =@O1p =?{ ZcIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/vercel-09.png000066400000000000000000000257621507671574500302460ustar00rootroot00000000000000PNG  IHDR.aB3sBITOPLTE|uBBBIIڠXI:::_%InBӒӒI;|B%_|sss;XuBůnI,Bf%BfkkkQ;%%_,nڶf4|IBuXQ4B|Bf齃fff,%BX;X_B%fXf,f;Bu)))nI%,Qf4RRRuuB;řڨQ4I4I;nu;ŶnB|;X%,B|fXfn33fI|n%B|_Iu,,_鶙BI|dE?_4,uQ,Q%,I;f333ӯ̒![4fI4Q|_u|;,;4I|%Q%;uQ4X̙fQ⯒u,Q|f4Q,4Ө|f;,4uXuIf|X;u;nff4,fJJJڠ4XB̃Q,4,X|_IfQ,_♯f⨠|n;43fu鼅I4_̃BŨu|B4n;Xuf;,̃4f4nIf,,Qn{{{%QB,4I_޽ӯ̨ZZZfIәXX,f|%X;4_f33ڨfQ;I4XIu4B|f;B_uff%X!!!޳uX|kMRX%ڙ̨_4B̨՚  pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6 IDATx{\SG޸-K%K`4-X+dK"Ek늶"JZCWVk[Y,!hexRV_Egof9!@xIΙ3gBwfrf@0`P(& P@M@@5j P(& P@M@@5j P(& P@M@@1fPډDj6߬8}2D-0`1ʝL)YSIU_,Y><  T̩ 25%W0De&Wu-4qOq)` WY],k)|qCw͜8PD֔ /IbdZAEfwS̪9;]O&>ͪ5S [+,jx+&,E{觘U3C| VӖ!kqhMM3#"WppeA@S̫V,݋kM <|A͚!>z51/DkugְXPS]h3A:nJua¬ &mDJJVm T擶$݋'{,hVbo ?bAMtyvCѾy T8Бy@H 2~S.~ Pj P(& P@M@@5j P(& P@M@@5j P(& P@M@@5jJ7x6R3Goy;6Wuv'xGE,0\Swo׺(ﱬf;1-iBM)jV>M2#8cj``aQNfus8ؘ׵H,p R-V|2&fIbʠ4\W98iWI9v"<9_p/h-**r3ό  31&R5X"7)ˇgH;b?Q29~׽iwx5U1vϑ|A(*%tW8)jJ7v1Yc6z,iLnR55UH` ^Ibgo@uʶ\0mdzsr3aX |wtOT9k+6+篌 \TWL4ө网dMmhg  !u/_xJQ{A{VVR%oǟ7=6bk10Y3Mɪ&>UM{C|LJuJĩ9Ļj{lhGt| 9 ̪iLS!XM/'5%Cܵhؔ[R5'dwNS uLݡIg> 4̩ViӇrզiLhޗ;ڿWSœm ĩ.? 4 dd"6/$PegT`\i``NM}5''&lib}Z/2?WSRdZɟ#Ƈ(|-Y3X6Gb""K K9U dOt,`HNmr:U5>j57 "]-|uq$sj]ߪ JS5umj/^iIx'ab5G3%MRvcI$Cdh/d^"ly!'E!̮n??Dqn($47zD1/hgzfۓr(:ьZfVa5F>Pev(l #[:fiBX-oʬu:MՌ糴9{ך* `ϲa D{R}npjּ@p4dN=-+_-%(x$1;ݦd"Q- gmR"uƿ%Ÿ"֝VDM4\RE&Iqk*xF!V.5v%lpH`qFLD:AjBqe.:.9TMG-ɿo%QSrJ&WS]>z8ud95[c k {1 8Ӱ9T,zٱ,'2s~r0L3#t%}@\S_gK3Ւ0%r ɧْJ'" n2ao A3@\[\r'tB%&wٶ ;35.N4ٷfnЗ͜t$./窗&XM՚Qx}oѶNkϟ'<|FjFٛ+ &\lPSdPӻJNMXrDs|^}f_cg/;[k~wOq泲UZ}l@;l : $m /I> vjqga՚_O;4he 6Fɠf@6wPS҄O$KcpT}.swaqq񋱹ۨȹ7b}UL p@D˟(_|g \~}'1W{߉D͋[x’0KX󨣜~ĭ4[D_8qH ^/%c>g!?8A][ 3/78@>'Efp 2RSu7 p qt _yLԲ?͎tT D˟L+ :{^N5V{ͤђc>\kqYW+%Xi9.bͯT^7]@O;Նdm@71차att2({xm1sR[~LV%;ʟC]d?mUl|oYGІ/4'' 0pfeY#f FvRS~mXhM=>І&?!݌QWuE1p:5$pJIQ[? ;Ԛyʾ>d =,iJcNiF-?;g&RbDi ES4U9E#?xRWv$*~"UslOsa^j7g1zZ~"ROUei(X͖R/tatg@S=Ktע } +J=x~D(hs(dI fΉM 7Sm Hkv%1:x$MirgMv#N t#@́Gy.Դa\\3z&< ~4&='}dL_~4Smy nZVӏ XnZV388>ɿнJwq+lW4 W#ЩPVh'?T]1^agL͈1wt5[NЅKڽ^_wbKC aeŅ[()bNⓀ[G^/f\ uUS7tĚ;ZQq/U5?f=e.:Y}tі[|Xs6xqZ1$nuncU_缀~; nUx_7OIrrJtǸ&||)pkQ |i^<+6ޤ5:iLhwEp 35Us^weܟ=v}qy`fZǹ͕jJC_ E,ք^3o& |zZ@C|"=*'<Յ%g7R3t<҃[(IjpOdibF;Xg94\NǍOQcKi@']eboqwgXk30CnQ{5lt7֦1|x5%!"pGu .q@YƎ*Gs$ߞa,bxyA}Q~=]30~U27-hBMEX$+@ P(& P@M@@5j P(& P@M@@5j P(& P@M@@5j "((Jli<-:MkMAoH Jvأ;ksɜ'إ'tq!/aYN3( 99S3>OSFҲDgncPfZ0{3{˩Ee_IB>27kaTM1ǎODHDFʾ>Ұ[&65 ?'{wyI3jV%eOKUG#oa2AIE?TO-땛?Y%QI [W˿lki5~'iSX2x<8?s/a5#ﺷ6N _k&K %ts.ܵ~_5 2q%*Ő^L^n@cu|{;fܚ1y6/?-PҰ(dt8O4+*hS.&ʹm醫PzC4_vI,J뤦* R8Om=ċu] K§NSz쨹j<7oPK3Nbݠ@Kw}ۥHcdWOxeH7H1aBNj϶SԽ0'jMQO/*;kSHLtcTl7-Y>z>E)D"~dj-n,F+F#v'8Lu^N4UՔ^@"Fjxi$Z w fz H="X5o螑^aަϼf4~\UY_̔[@Mt@Vfj O꭭&01f7Bz}l=/ٴf4Y0~䱜ÊAM`2IWjF%'{P3i&Ah_( X 蜚ń򶾐tb.ԤC~3q5kG~B7TC<H jV766kp3M͠0ZW3>sZ{ֻXgtWӘ:C[Pq6TNy-ccn^uG;_6#Qs}g׉=Zuуj!)Z]]k̈́[Lzq Ä-/4` -󯺷Nm:j>[&&N$I V"͑Hq`W7JT|2N|͓5?cZWJqH4j:݆3h_̚|ZZPɚuJz>zudRū_PGHˀ3Ւ5;iKJq!bWy|=b٥cGނUKw.%/?_TU3l zk%sB?VǛ*4S 9hO9}$CPRG\ޒ&yYZi}= UȀ%EYҘ3O- ٸg6ΩK~3}2>o#3H~V=0Gèl-o&_HmAmDaKf,Dn+ "(J0x5DwWS2E#prW:MT&V u* _"YcW7ݼq8EKq[-H*:+t:= yu5$uK}M4szD,Yv>.=M4?r= jb5Qٜ:[_@'ՌEN$rjND6='n {4mW|ptZy#֜R&dжf-3'o"[&6&լ 9σ\JSE2U}[v{K*r VJdHzK(Z˥pdZg[20+_"%E;n=X0\Xg{UIDAT {Rǩ(Gno@HT%%eߨAM%Jy[;Od1MMua]p!"j^*a?2^MUsڬE>A>36"& koL\rmN6uPKM&VT6Rp4+thf'5geaZS]:5M:פϐ#KlJ Sn`%ԼU?b#q~ k+q#w;_G48p_޷.'0V#w8U;0hʼW=utA7c$Q{"p;C6*{#Qeg&!㒲P&TF2]yQN}-?6N ߪ}tF"tB$rKT}: T ,Z-qV:q-D*b_Ȟ:|W5V3CAqd{p7'efb#5 ym/׸V7MKFH'p)}.QI)4}5zmNu+-e&s똍hW<"~pmϫOLDZ1CFhm)ACtےYZ8Xz&tKx5_5Zh|":}tzRm9}~@͖THk*}^Mj P(& P@M@@5j P(& P@M@@5j P(& P@M@@5j5y=!SaFNsjF~e Miξ~*̉xԥMj!hSզ5".+05j P(& P@M@@5*ωN6#9|4Md =l:hhR/@M䔺QT=ˇWwPEGF#yg7AMs⿥ίZ/w-&TE]ia*'Q9Nh6x아6(%GGɋyNh|t#K>oO.͉&.]\eP)&`K6zyyTN)v'#^;fd7Ԍ@9glrVvvgsQ]ٙsq-\rKQ*MvgsG8%hٿj9qYON5j&WSmLEXnǠfcSD8UJg#p\.$˫cܐ.dM=Ԛ}FZMMnf8o*GDD8ʕnSlTEcqmhg Iv(tQU:iG\L ~N&ܲXó ö-ͨ)]_U^Ž,yxg5Xp.&j9L7G WI54 6lmK9heL~ךdgBR8-1jF0#4M-{DbsH7ƜԬINcw=P# bs=;v(• "WhXaNݠR\9n!UwJsX1izSJ0mGC~zl)M4Q#2N F99 6_a,FƃG|:]B=vj#A& <@M@[@M@@IG\Smj> j&''}NPAd)p}ԥ9f#F'ٿp˝L!P_Q?{V?Ԅ帄YJ qK;Nrц,bӇ;{t'9}VM/ fN}UMX0>݀Y^[_Gմy YNmS4o K=X"\KG]𠷴9z9ُj P(& P@M@@5j P(& P@M@@5j P(uUIENDB`gohugoio-hugo-6abdaca/docs/content/en/host-and-deploy/host-on-vercel/vercel-10.png000066400000000000000000000216111507671574500302230ustar00rootroot00000000000000PNG  IHDR'v*sBITOPLTEQ|ffff̃I|X%,_%X̃Bc+Ž}4uQ,_ڶ%InftumaeKD4eH⽃|_;44%;ۨXfӟ;u4nffQ4%XjussxX;%ŷfŶf4Bf|,4_%Qب}I_4I}:::xliYYYfŕyoڠXXnB!Q%X4BfuB%;|ŋhlvfBݻf,\]d̃ӯf̨y;|,Q|u4oI%4ӒIyo%B4_t̙f|B;ZOyffXTS;,Iun_B%4QI4_|;_|yQ;_%%IotXQπ鶃DDDB,Ϛyyjjjffy;Xn%;jf;f4f$n;4,X̒u;ڠf缌̨X4nIş|_nf;BftB4Qff4zQEf333oyzmڙQB;fݭzzz,B|4Qݼ%;n%%%tfcfjϼ͒I}ݭB|;Qyy|B,%%Qn,f4JgϙQ4X%nQ4nf;I|;,_IfӼЇyj_;Qʕtn_Qn;o}; pHYs  ~tEXtSoftwareAdobe Fireworks CS5q6IDATx \Ǟ:+f [-KRnZXHj;e\ڦΊ0A.kYm֞-" /oFӅG{_~{ۘ#B J5 0^Z:jaꨅZ:jaꨅZ:jaꨅZ:jaꨅZ:jaꨅZ:jѫn?z.G]EGg.N`瞩:՟W~u_7e|lj<:Ir2P8(w˔(:P/*A],ATnyD;q_;fi.#٬Zr]˼YU}2բJ^5i^ϙ8FQϼص"80Bgg^53s"a;n2򜃿L05߼RԙLݫu;̋ ]u?#;](l_nvc{q0SiJ`T}TI }%tk=[[3PVԽr]Kvx,iq@2M 1i֛?`/\j'l*Nd`?n9n^nrhPAYաwPª&aCNHZ:jaꨅZ:jaꨅZ*- D\^/qLN ٕ7zXsѸßD"IE!չ]tʎO< p#VM6Z]?ڭRgu?Gh>:G$cZKJ7T\=˰3S퓩>ԩ"ɈC/R7;O~ՍTz)t/'u_iT"'+Mo^e7pW6\=οe7^Q \Ò?efU%i8ɶ9]!d { ;\x5CwP%q+%໢`UJ9̓>)κн˥5%ܒlǁ/1A\K;۠1ˁB;h]e6RQ"\A%}⣮1xO= _kbm*Q23z WFʛHxjr+_ep%л${?{ I;/au[H>*S1}6~NHS.'0Xt,gM #rF4tS|rre߉.骛>;nہx8\]`lӔLkȞiݶi:ԩfD 7kp7/\Wui}/L[ *TY6F!XULƫܗ;S$n*u|nuFZ:jaꨅZ:jaꨅZ:jaꨅZ:jaꨅZ:jaꨅZ:ja2}U1B˃z?#F-Uo9\~s܄{*3{¨d,ŷdzPDZoC~" YmHj- dߖ!ny$o9: sΪlFp&ӧ uiRZeG|uwNJ{=)PsJ_0)$rPͅǿ WK]>:U80'm180,xV:`!650jaꨅZ:jaꨅZ:jaꨥɫKIqHIi쓩M]setBV E I{M*Qg6euU]ㆠUsDhHV{s]-lu{NGX`#ݔjk4'h4`d ;TT4o+k=^4&Ʀp l4>GHD=t 3p=p|xuvFaSCMN #W՝ŏ֧?oAqeiBX&L-W0&8ln _5)V(.^}M8Dlr[F~)VǕy UJM V >`:,P0.=Y'rϪ$|Qsڭ{-(b6v+[&TxEʅSS֮mVpƫ˟65jdu0u![4j+ 9MGHVR`fEp/p̤S5Q]pÖڿ!3ACB\.&D`:[§ g>n6~u K9t49eD;h)xqYx^%+A,t1!l:LY0u[9cH*Ey QQhqhHpsQSp&% /1Ǣ*]#^ڭ5,Fϣns4%* YTK4!h}A ( VoG>GceK6%R] ;Ƴpp~-!O]Js7c#ڪN!k;"::Hq rn1SG02}00u48P]JVk`[;3Pgwj]PD$ukJuy(LnRS(UKQ U1uQ SG-L0uQ SG-L0uQ SG-LU :^׋or9GpLP%Nd_gH,m(9P=1?70uuBřN b``LW ]J 1pScpL[~^=~&(z Y>s.\bET:Z[WVՕ 9ϳe xɏ+S9޸ϐ&f' 36 '/Hʓ3uբW,O>g4URaF(kT$<HR;P⡽oǑy2ZarkFx*m`A[݅Rd;b_fiTzͬrqjѫ7Du|^]%uHKu0˒Hϊ7vl+}ϜyuD<jޫlX)6uӔ$<+ A MUNCO 82u5o8Od|^TrR 2]}xʐ ^y ĩ]q&q[Nٲqze<1Ԁ-OkNsyu&]Ka:qY&̪T}c, &;;!xq`Vt}F-L0uQ SG-L0uQ SG-L0uD%-򴴌[24Iurk}./NSTzeY;5Hyה&UڌwXAc|^."G: Zjԍ[ok!65t]~)U ^sgڞX[9^'[ 'G{:ܫgZZXZdFTrZvphAnu8F3߀C[pC'qnG_/^ +}%:7yy;j HkN?rҩDH%Е&aLQ%ã7]DmNbeHOA5ܼMrr#ȑ#OGE6.F:+:F]|P_9'ϟ?Q8qqJ欚CT݃ˁ+OtCCx{@%L0Q&tחW=QwfB)?Qcm֚ ?GGYGl/ wƯ7uXiʧ-:!l.[=MA q5KZFjUun}f<]Kbw, OSV-. F=Tu)Z4<0Mi%UWT!jQꒈ[ffgrc~R͒_3Cu9 C'5K ^ME(_N5Zvn)g+-2/R%U8U9g_㦜 #O̷]7xT_CT_Đ3CU]kN+ r2)/"_/B.Y{#NKS(ϨÝ)VQVAB?C!cKX:.]'4a椧<\xpJ?JAMSX(n ~}#l:Gx X\U&Q SG-L0uQ SG-L0uQ SG-L0uQ SG-L0uQ SG-L0uQ SG-L0uRsj$5HkJᰖCIa?|Ss<?GR@ͩ8qR|Ld&<6 3jNL53AqY` ѻH'C_jԑ@K_Bc?ŨjLA(Y)lk jN$9k&_Z]S_o/Lͩe[4eCe2#nWgƧBYUM)}3+TqeW#`DA+:Վvuʉ)L?UD8J SW5uZXwu!{ou23" CZLy= uwM+`xuajtm}F.lUኄQԓԫ־u%TNݩ6Q$m)u9Bz9q0o fD"xgp{( /z*4u2tHr[eZawxqbqP1 8`SG-L0uQ SG-L0uQ SG-L0uQ SG-L0uQ SG-L0uQ++IENDB`gohugoio-hugo-6abdaca/docs/content/en/hugo-modules/000077500000000000000000000000001507671574500225525ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/hugo-modules/_index.md000066400000000000000000000003071507671574500243420ustar00rootroot00000000000000--- title: Hugo Modules description: Use Hugo Modules to manage the content, presentation, and behavior of your site. categories: [] keywords: [] weight: 10 aliases: [/themes/overview/,/themes/] --- gohugoio-hugo-6abdaca/docs/content/en/hugo-modules/introduction.md000066400000000000000000000017611507671574500256220ustar00rootroot00000000000000--- title: Introduction description: A brief introduction to Hugo Modules. categories: [] keywords: [] weight: 10 --- Hugo uses modules as its fundamental organizational units. A module can be a full Hugo project or a smaller, reusable piece providing one or more of Hugo's seven component types: static files, content, layouts, data, assets, internationalization (i18n) resources, and archetypes. Modules are combinable in any arrangement, and external directories (including those from non-Hugo projects) can be mounted, effectively creating a single, unified file system. Some example projects: [https://github.com/bep/docuapi](https://github.com/bep/docuapi) : A theme that has been ported to Hugo Modules while testing this feature. It is a good example of a non-Hugo-project mounted into Hugo's directory structure. It even shows a JS Bundler implementation in regular Go templates. [https://github.com/bep/my-modular-site](https://github.com/bep/my-modular-site) : A simple site used for testing. gohugoio-hugo-6abdaca/docs/content/en/hugo-modules/theme-components.md000066400000000000000000000034531507671574500263660ustar00rootroot00000000000000--- title: Theme components description: Hugo provides advanced theming support with theme components. categories: [] keywords: [] weight: 30 aliases: [/themes/customize/,/themes/customizing/] --- A project can configure a theme as a composite of as many theme components as you need: {{< code-toggle file=hugo >}} theme = ["my-shortcodes", "base-theme", "hyde"] {{< /code-toggle >}} You can even nest this, and have the theme component itself include theme components in its own `hugo.toml` (theme inheritance). The theme definition example above in `hugo.toml` creates a theme with 3 theme components with precedence from left to right. For any given file, data entry, etc., Hugo will look first in the project and then in `my-shortcodes`, `base-theme`, and lastly `hyde`. Hugo uses two different algorithms to merge the file systems, depending on the file type: - For `i18n` and `data` files, Hugo merges deeply using the translation ID and data key inside the files. - For `static`, `layouts` (templates), and `archetypes` files, these are merged on file level. So the left-most file will be chosen. The name used in the `theme` definition above must match a directory in `/your-site/themes`, e.g. `/your-site/themes/my-shortcodes`. Also note that a component that is part of a theme can have its own configuration file, e.g. `hugo.toml`. There are currently some restrictions to what a theme component can configure: - `params` (global and per language) - `menu` (global and per language) - `outputformats` and `mediatypes` The same rules apply here: The left-most parameter/menu etc. with the same ID will win. There are some hidden and experimental namespace support in the above, which we will work to improve in the future, but theme authors are encouraged to create their own namespaces to avoid naming conflicts. gohugoio-hugo-6abdaca/docs/content/en/hugo-modules/use-modules.md000066400000000000000000000117471507671574500253500ustar00rootroot00000000000000--- title: Use Hugo Modules description: How to use Hugo Modules. categories: [] keywords: [] weight: 20 aliases: [/themes/usage/,/themes/installing/,/installing-and-using-themes/] --- ## Prerequisite {{% include "/_common/gomodules-info.md" %}} ## Initialize a new module Use `hugo mod init` to initialize a new Hugo Module. If it fails to guess the module path, you must provide it as an argument, e.g.: ```sh hugo mod init github.com// ``` Also see the [CLI Doc](/commands/hugo_mod_init/). ## Use a module for a theme The easiest way to use a Module for a theme is to import it in the configuration. 1. Initialize the hugo module system: `hugo mod init github.com//` 1. Import the theme: {{< code-toggle file=hugo >}} [module] [[module.imports]] path = "github.com/spf13/hyde" {{< /code-toggle >}} ## Update modules Modules will be downloaded and added when you add them as imports to your configuration. See [configure modules](/configuration/module/#imports). To update or manage versions, you can use `hugo mod get`. Some examples: ### Update all modules ```sh hugo mod get -u ``` ### Update all modules recursively ```sh hugo mod get -u ./... ``` ### Update one module ```sh hugo mod get -u github.com/gohugoio/myShortcodes ``` ### Get a specific version ```sh hugo mod get github.com/gohugoio/myShortcodes@v1.0.7 ``` Also see the [CLI Doc](/commands/hugo_mod_get/). ## Make and test changes in a module One way to do local development of a module imported in a project is to add a replace directive to a local directory with the source in `go.mod`: ```sh replace github.com/bep/hugotestmods/mypartials => /Users/bep/hugotestmods/mypartials ``` If you have the `hugo server` running, the configuration will be reloaded and `/Users/bep/hugotestmods/mypartials` put on the watch list. Instead of modifying the `go.mod` files, you can also use the modules configuration [`replacements`](/configuration/module/#top-level-options) option. ## Print dependency graph Use `hugo mod graph` from the relevant module directory and it will print the dependency graph, including vendoring, module replacement or disabled status. E.g.: ```txt hugo mod graph github.com/bep/my-modular-site github.com/bep/hugotestmods/mymounts@v1.2.0 github.com/bep/my-modular-site github.com/bep/hugotestmods/mypartials@v1.0.7 github.com/bep/hugotestmods/mypartials@v1.0.7 github.com/bep/hugotestmods/myassets@v1.0.4 github.com/bep/hugotestmods/mypartials@v1.0.7 github.com/bep/hugotestmods/myv2@v1.0.0 DISABLED github.com/bep/my-modular-site github.com/spf13/hyde@v0.0.0-20190427180251-e36f5799b396 github.com/bep/my-modular-site github.com/bep/hugo-fresh@v1.0.1 github.com/bep/my-modular-site in-themesdir ``` Also see the [CLI Doc](/commands/hugo_mod_graph/). ## Vendor your modules `hugo mod vendor` will write all the module dependencies to a `_vendor` directory, which will then be used for all subsequent builds. Note that: - You can run `hugo mod vendor` on any level in the module tree. - Vendoring will not store modules stored in your `themes` directory. - Most commands accept a `--ignoreVendorPaths` flag, which will then not use the vendored modules in `_vendor` for the module paths matching the given [glob](g) pattern. Also see the [CLI Doc](/commands/hugo_mod_vendor/). ## Tidy go.mod, go.sum Run `hugo mod tidy` to remove unused entries in `go.mod` and `go.sum`. Also see the [CLI Doc](/commands/hugo_mod_clean/). ## Clean module cache Run `hugo mod clean` to delete the entire modules cache. Note that you can also configure the `modules` cache with a `maxAge`. See [configure caches](/configuration/caches/). Also see the [CLI Doc](/commands/hugo_mod_clean/). ## Module workspaces Workspace support was added in [Go 1.18](https://go.dev/blog/get-familiar-with-workspaces) and Hugo got solid support for it in the `v0.109.0` version. A common use case for a workspace is to simplify local development of a site with its theme modules. A workspace can be configured in a `*.work` file and activated with the [module.workspace](/configuration/module/) setting, which for this use is commonly controlled via the `HUGO_MODULE_WORKSPACE` OS environment variable. See the [hugo.work](https://github.com/gohugoio/hugo/blob/master/docs/hugo.work) file in the Hugo Docs repo for an example: ```text go 1.20 use . use ../gohugoioTheme ``` Using the `use` directive, list all the modules you want to work on, pointing to its relative location. As in the example above, it's recommended to always include the main project (the `.`) in the list. With that you can start the Hugo server with that workspace enabled: ```sh HUGO_MODULE_WORKSPACE=hugo.work hugo server --ignoreVendorPaths "**" ``` The `--ignoreVendorPaths` flag is added above to ignore any of the vendored dependencies inside `_vendor`. If you don't use vendoring, you don't need that flag. But now the server is set up watching the files and directories in the workspace and you can see your local edits reloaded. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/000077500000000000000000000000001507671574500222225ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/_index.md000077500000000000000000000002411507671574500240120ustar00rootroot00000000000000--- title: Hugo Pipes description: Use asset pipelines to transform and optimize images, stylesheets, and JavaScript. categories: [] keywords: [] weight: 10 --- gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/bundling.md000077500000000000000000000003241507671574500243500ustar00rootroot00000000000000--- title: Concat linkTitle: Concatenating assets description: Bundle any number of assets into one resource. categories: [] keywords: [] --- See the [`resources.Concat`](/functions/resources/concat/) function. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/fingerprint.md000077500000000000000000000003701507671574500250760ustar00rootroot00000000000000--- title: Fingerprint linkTitle: Fingerprinting and SRI hashing description: Cryptographically hash the content of the given resource. categories: [] keywords: [] --- See the [`resources.Fingerprint`](/functions/resources/fingerprint/) function. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/introduction.md000077500000000000000000000046731507671574500253020ustar00rootroot00000000000000--- title: Hugo Pipes linkTitle: Introduction description: Hugo Pipes is Hugo's asset processing set of functions. categories: [] keywords: [] weight: 10 aliases: [/assets/] --- ## Find resources in assets This is about global and remote resources. global resource : A file within the `assets` directory, or within any directory [mounted] to the `assets` directory. remote resource : A file on a remote server, accessible via HTTP or HTTPS. For `.Page` scoped resources, see the [page resources] section. [mounted]: /configuration/module/#mounts [page resources]: /content-management/page-resources/ ## Get a resource In order to process an asset with Hugo Pipes, it must be retrieved as a resource. For global resources, use: - [`resources.ByType`](/functions/resources/bytype/) - [`resources.Get`](/functions/resources/get/) - [`resources.GetMatch`](/functions/resources/getmatch/) - [`resources.Match`](/functions/resources/match/) For remote resources, use: - [`resources.GetRemote`](/functions/resources/getremote/) See the [GoDoc Page](https://pkg.go.dev/github.com/gohugoio/hugo/tpl/resources) for the `resources` package for an up to date overview of all template functions in this namespace. ## Copy a resource See the [`resources.Copy`](/functions/resources/copy/) function. ## Asset directory Asset files must be stored in the asset directory. This is `assets` by default, but can be configured via the configuration file's `assetDir` key. ## Asset publishing Hugo publishes assets to the `publishDir` (typically `public`) when you invoke `.Permalink`, `.RelPermalink`, or `.Publish`. You can use `.Content` to inline the asset. ## Go Pipes For improved readability, the Hugo Pipes examples of this documentation will be written using [Go Pipes](/templates/introduction/#pipes): ```go-html-template {{ $style := resources.Get "sass/main.scss" | css.Sass | resources.Minify | resources.Fingerprint }} ``` ## Caching Hugo Pipes invocations are cached based on the entire _pipe chain_. An example of a pipe chain is: ```go-html-template {{ $mainJs := resources.Get "js/main.js" | js.Build "main.js" | minify | fingerprint }} ``` The pipe chain is only invoked the first time it is encountered in a site build, and results are otherwise loaded from cache. As such, Hugo Pipes can be used in templates which are executed thousands or millions of times without negatively impacting the build performance. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/js.md000066400000000000000000000003231507671574500231560ustar00rootroot00000000000000--- title: JavaScript linkTitle: JavaScript building description: Bundle, transpile, tree shake, code split, and minify JavaScript resources. categories: [] keywords: [] --- See [JS functions](/functions/js/). gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/minification.md000077500000000000000000000002741507671574500252230ustar00rootroot00000000000000--- title: Minify linkTitle: Asset minification description: Minify a given resource. categories: [] keywords: [] --- See the [`resources.Minify`](/functions/resources/minify/) function. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/postcss.md000077500000000000000000000002761507671574500242520ustar00rootroot00000000000000--- title: PostCSS description: Process the given resource with PostCSS using any PostCSS plugin. categories: [] keywords: [] --- See the [`css.PostCSS`](/functions/css/postcss/) function. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/postprocess.md000077500000000000000000000003001507671574500251240ustar00rootroot00000000000000--- title: PostProcess description: Process the given resource after the build. categories: [] keywords: [] --- See the [`resources.PostProcess`](/functions/resources/postprocess/) function. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/resource-from-string.md000077500000000000000000000003221507671574500266400ustar00rootroot00000000000000--- title: FromString linkTitle: Resource from string description: Create a resource from a string. categories: [] keywords: [] --- See the [`resources.FromString`](/functions/resources/fromstring/) function. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/resource-from-template.md000077500000000000000000000004321507671574500271470ustar00rootroot00000000000000--- title: ExecuteAsTemplate linkTitle: Resource from template description: Create a resource from a Go template, parsed and executed with the given context. categories: [] keywords: [] --- See the [`resources.ExecuteAsTemplate`](/functions/resources/executeastemplate/) function. gohugoio-hugo-6abdaca/docs/content/en/hugo-pipes/transpile-sass-to-css.md000066400000000000000000000003241507671574500267210ustar00rootroot00000000000000--- title: ToCSS linkTitle: Transpile Sass to CSS description: Transpile Sass to CSS. categories: [] keywords: [] aliases: [/hugo-pipes/transform-to-css/] --- See the [`css.Sass`](/functions/css/sass) function. gohugoio-hugo-6abdaca/docs/content/en/installation/000077500000000000000000000000001507671574500226435ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/installation/_index.md000066400000000000000000000003401507671574500244300ustar00rootroot00000000000000--- title: Installation description: Install Hugo on macOS, Linux, Windows, BSD, and on any machine that can run the Go compiler tool chain. categories: [] keywords: [] weight: 10 aliases: [/getting-started/installing/] --- gohugoio-hugo-6abdaca/docs/content/en/installation/bsd.md000066400000000000000000000035251507671574500237420ustar00rootroot00000000000000--- title: BSD description: Install Hugo on BSD derivatives. categories: [] keywords: [] weight: 40 --- ## Editions {{% include "/_common/installation/01-editions.md" %}} Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition. {{% include "/_common/installation/02-prerequisites.md" %}} {{% include "/_common/installation/03-prebuilt-binaries.md" %}} ## Repository packages Most BSD derivatives maintain a repository for commonly installed applications. Please note that these repositories may not contain the [latest release]. [latest release]: https://github.com/gohugoio/hugo/releases/latest ### DragonFly BSD [DragonFly BSD] includes Hugo in its package repository. To install the extended edition of Hugo: ```sh sudo pkg install gohugo ``` [DragonFly BSD]: https://www.dragonflybsd.org/ ### FreeBSD [FreeBSD] includes Hugo in its package repository. To install the extended edition of Hugo: ```sh sudo pkg install gohugo ``` [FreeBSD]: https://www.freebsd.org/ ### NetBSD [NetBSD] includes Hugo in its package repository. To install the extended edition of Hugo: ```sh sudo pkgin install go-hugo ``` [NetBSD]: https://www.netbsd.org/ ### OpenBSD [OpenBSD] includes Hugo in its package repository. This will prompt you to select which edition of Hugo to install: ```sh doas pkg_add hugo ``` [OpenBSD]: https://www.openbsd.org/ {{% include "/_common/installation/04-build-from-source.md" %}} ## Comparison  |Prebuilt binaries|Repository packages|Build from source :--|:--:|:--:|:--: Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: Easy to upgrade?|:heavy_check_mark:|varies|:heavy_check_mark: Easy to downgrade?|:heavy_check_mark:|varies|:heavy_check_mark: Automatic updates?|:x:|varies|:x: Latest version available?|:heavy_check_mark:|varies|:heavy_check_mark: gohugoio-hugo-6abdaca/docs/content/en/installation/linux.md000066400000000000000000000136101507671574500243250ustar00rootroot00000000000000--- title: Linux description: Install Hugo on Linux. categories: [] keywords: [] weight: 20 --- ## Editions {{% include "/_common/installation/01-editions.md" %}} Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition. {{% include "/_common/installation/02-prerequisites.md" %}} {{% include "/_common/installation/03-prebuilt-binaries.md" %}} ## Package managers ### Snap [Snap] is a free and open-source package manager for Linux. Available for [most distributions], snap packages are simple to install and are automatically updated. The Hugo snap package is [strictly confined]. Strictly confined snaps run in complete isolation, up to a minimal access level that's deemed always safe. The sites you create and build must be located within your home directory, or on removable media. To install the extended edition of Hugo: ```sh sudo snap install hugo ``` To control automatic updates: ```sh # disable automatic updates sudo snap refresh --hold hugo # enable automatic updates sudo snap refresh --unhold hugo ``` To control access to removable media: ```sh # allow access sudo snap connect hugo:removable-media # revoke access sudo snap disconnect hugo:removable-media ``` To control access to SSH keys: ```sh # allow access sudo snap connect hugo:ssh-keys # revoke access sudo snap disconnect hugo:ssh-keys ``` {{% include "/_common/installation/homebrew.md" %}} ## Repository packages Most Linux distributions maintain a repository for commonly installed applications. > [!note] > The Hugo version available in package repositories varies based on Linux distribution and release, and in some cases will not be the [latest version]. > > Use one of the other installation methods if your package repository does not provide the desired version. ### Alpine Linux To install the extended edition of Hugo on [Alpine Linux]: ```sh doas apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community hugo ``` ### Arch Linux Derivatives of the [Arch Linux] distribution of Linux include [EndeavourOS], [Garuda Linux], [Manjaro], and others. To install the extended edition of Hugo: ```sh sudo pacman -S hugo ``` ### Debian Derivatives of the [Debian] distribution of Linux include [elementary OS], [KDE neon], [Linux Lite], [Linux Mint], [MX Linux], [Pop!_OS], [Ubuntu], [Zorin OS], and others. To install the extended edition of Hugo: ```sh sudo apt install hugo ``` You can also download Debian packages from the [latest release] page. ### Exherbo To install the extended edition of Hugo on [Exherbo]: 1. Add this line to /etc/paludis/options.conf: ```text www-apps/hugo extended ``` 1. Install using the Paludis package manager: ```sh cave resolve -x repository/heirecka cave resolve -x hugo ``` ### Fedora Derivatives of the [Fedora] distribution of Linux include [CentOS], [Red Hat Enterprise Linux], and others. To install the extended edition of Hugo: ```sh sudo dnf install hugo ``` ### Gentoo Derivatives of the [Gentoo] distribution of Linux include [Calculate Linux], [Funtoo], and others. To install the extended edition of Hugo: 1. Specify the `extended` [USE] flag in /etc/portage/package.use/hugo: ```text www-apps/hugo extended ``` 1. Build using the Portage package manager: ```sh sudo emerge www-apps/hugo ``` ### NixOS The NixOS distribution of Linux includes Hugo in its package repository. To install the extended edition of Hugo: ```sh nix-env -iA nixos.hugo ``` ### openSUSE Derivatives of the [openSUSE] distribution of Linux include [GeckoLinux], [Linux Karmada], and others. To install the extended edition of Hugo: ```sh sudo zypper install hugo ``` ### Solus The [Solus] distribution of Linux includes Hugo in its package repository. To install the extended edition of Hugo: ```sh sudo eopkg install hugo ``` ### Void Linux To install the extended edition of Hugo on [Void Linux]: ```sh sudo xbps-install -S hugo ``` {{% include "/_common/installation/04-build-from-source.md" %}} ## Comparison  |Prebuilt binaries|Package managers|Repository packages|Build from source :--|:--:|:--:|:--:|:--: Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|varies|:heavy_check_mark: Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^1]|varies|:heavy_check_mark: Automatic updates?|:x:|varies [^2]|:x:|:x: Latest version available?|:heavy_check_mark:|:heavy_check_mark:|varies|:heavy_check_mark: [^1]: Easy if a previous version is still installed. [^2]: Snap packages are automatically updated. Homebrew requires advanced configuration. [Alpine Linux]: https://alpinelinux.org/ [Arch Linux]: https://archlinux.org/ [Calculate Linux]: https://www.calculate-linux.org/ [CentOS]: https://www.centos.org/ [Debian]: https://www.debian.org/ [elementary OS]: https://elementary.io/ [EndeavourOS]: https://endeavouros.com/ [Exherbo]: https://www.exherbolinux.org/ [Fedora]: https://getfedora.org/ [Funtoo]: https://www.funtoo.org/ [Garuda Linux]: https://garudalinux.org/ [GeckoLinux]: https://geckolinux.github.io/ [Gentoo]: https://www.gentoo.org/ [KDE neon]: https://neon.kde.org/ [latest version]: https://github.com/gohugoio/hugo/releases/latest [Linux Karmada]: https://linuxkamarada.com/ [Linux Lite]: https://www.linuxliteos.com/ [Linux Mint]: https://linuxmint.com/ [Manjaro]: https://manjaro.org/ [most distributions]: https://snapcraft.io/docs/installing-snapd [MX Linux]: https://mxlinux.org/ [openSUSE]: https://www.opensuse.org/ [Pop!_OS]: https://pop.system76.com/ [Red Hat Enterprise Linux]: https://www.redhat.com/ [Snap]: https://snapcraft.io/ [Solus]: https://getsol.us/ [strictly confined]: https://snapcraft.io/docs/snap-confinement [Ubuntu]: https://ubuntu.com/ [USE]: https://packages.gentoo.org/packages/www-apps/hugo [Void Linux]: https://voidlinux.org/ [Zorin OS]: https://zorin.com/os/ gohugoio-hugo-6abdaca/docs/content/en/installation/macos.md000066400000000000000000000024031507671574500242660ustar00rootroot00000000000000--- title: macOS description: Install Hugo on macOS. categories: [] keywords: [] weight: 10 --- ## Editions {{% include "/_common/installation/01-editions.md" %}} Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition. {{% include "/_common/installation/02-prerequisites.md" %}} {{% include "/_common/installation/03-prebuilt-binaries.md" %}} ## Package managers {{% include "/_common/installation/homebrew.md" %}} ### MacPorts [MacPorts] is a free and open-source package manager for macOS. To install the extended edition of Hugo: ```sh sudo port install hugo ``` [MacPorts]: https://www.macports.org/ {{% include "/_common/installation/04-build-from-source.md" %}} ## Comparison  |Prebuilt binaries|Package managers|Build from source :--|:--:|:--:|:--: Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^1]|:heavy_check_mark: Automatic updates?|:x:|:x: [^2]|:x: Latest version available?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: [^1]: Easy if a previous version is still installed. [^2]: Possible but requires advanced configuration. gohugoio-hugo-6abdaca/docs/content/en/installation/windows.md000066400000000000000000000036671507671574500246730ustar00rootroot00000000000000--- title: Windows description: Install Hugo on Windows. categories: [] keywords: [] weight: 30 --- > [!note] > Hugo v0.121.1 and later require at least Windows 10 or Windows Server 2016. ## Editions {{% include "/_common/installation/01-editions.md" %}} Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition. {{% include "/_common/installation/02-prerequisites.md" %}} {{% include "/_common/installation/03-prebuilt-binaries.md" %}} ## Package managers ### Chocolatey [Chocolatey] is a free and open-source package manager for Windows. To install the extended edition of Hugo: ```sh choco install hugo-extended ``` ### Scoop [Scoop] is a free and open-source package manager for Windows. To install the extended edition of Hugo: ```sh scoop install hugo-extended ``` ### Winget [Winget] is Microsoft's official free and open-source package manager for Windows. To install the extended edition of Hugo: ```sh winget install Hugo.Hugo.Extended ``` To uninstall the extended edition of Hugo: ```sh winget uninstall --name "Hugo (Extended)" ``` {{% include "/_common/installation/04-build-from-source.md" %}} > [!note] > See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows. ## Comparison  |Prebuilt binaries|Package managers|Build from source :--|:--:|:--:|:--: Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^2]|:heavy_check_mark: Automatic updates?|:x:|:x: [^1]|:x: Latest version available?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: [^1]: Possible but requires advanced configuration. [^2]: Easy if a previous version is still installed. [Chocolatey]: https://chocolatey.org/ [Scoop]: https://scoop.sh/ [Winget]: https://learn.microsoft.com/en-us/windows/package-manager/ gohugoio-hugo-6abdaca/docs/content/en/methods/000077500000000000000000000000001507671574500216055ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/_index.md000066400000000000000000000002151507671574500233730ustar00rootroot00000000000000--- title: Methods description: Use these methods within your templates. categories: [] keywords: [] weight: 10 aliases: ['/variables/'] --- gohugoio-hugo-6abdaca/docs/content/en/methods/duration/000077500000000000000000000000001507671574500234325ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Abs.md000066400000000000000000000004541507671574500244640ustar00rootroot00000000000000--- title: Abs description: Returns the absolute value of the given time.Duration value. categories: [] keywords: [] params: functions_and_methods: returnType: time.Duration signatures: [DURATION.Abs] --- ```go-html-template {{ $d = time.ParseDuration "-3h" }} {{ $d.Abs }} → 3h0m0s ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Hours.md000066400000000000000000000005111507671574500250510ustar00rootroot00000000000000--- title: Hours description: Returns the time.Duration value as a floating point number of hours. categories: [] keywords: [] params: functions_and_methods: returnType: float64 signatures: [DURATION.Hours] --- ```go-html-template {{ $d = time.ParseDuration "3.5h2.5m1.5s" }} {{ $d.Hours }} → 3.5420833333333333 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Microseconds.md000066400000000000000000000005211507671574500264020ustar00rootroot00000000000000--- title: Microseconds description: Returns the time.Duration value as an integer microsecond count. categories: [] keywords: [] params: functions_and_methods: returnType: int64 signatures: [DURATION.Microseconds] --- ```go-html-template {{ $d = time.ParseDuration "3.5h2.5m1.5s" }} {{ $d.Microseconds }} → 12751500000 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Milliseconds.md000066400000000000000000000005161507671574500264030ustar00rootroot00000000000000--- title: Milliseconds description: Returns the time.Duration value as an integer millisecond count. categories: [] keywords: [] params: functions_and_methods: returnType: int64 signatures: [DURATION.Milliseconds] --- ```go-html-template {{ $d = time.ParseDuration "3.5h2.5m1.5s" }} {{ $d.Milliseconds }} → 12751500 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Minutes.md000066400000000000000000000005061507671574500254010ustar00rootroot00000000000000--- title: Minutes description: Returns the time.Duration value as a floating point number of minutes. categories: [] keywords: [] params: functions_and_methods: returnType: float64 signatures: [DURATION.Minutes] --- ```go-html-template {{ $d = time.ParseDuration "3.5h2.5m1.5s" }} {{ $d.Minutes }} → 212.525 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Nanoseconds.md000066400000000000000000000005201507671574500262230ustar00rootroot00000000000000--- title: Nanoseconds description: Returns the time.Duration value as an integer nanosecond count. categories: [] keywords: [] params: functions_and_methods: returnType: int64 signatures: [DURATION.Nanoseconds] --- ```go-html-template {{ $d = time.ParseDuration "3.5h2.5m1.5s" }} {{ $d.Nanoseconds }} → 12751500000000 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Round.md000066400000000000000000000007201507671574500250420ustar00rootroot00000000000000--- title: Round description: Returns the result of rounding DURATION1 to the nearest multiple of DURATION2. categories: [] keywords: [] params: functions_and_methods: returnType: signatures: [DURATION1.Round DURATION2] --- ```go-html-template {{ $d = time.ParseDuration "3.5h2.5m1.5s" }} {{ $d.Round (time.ParseDuration "2h") }} → 4h0m0s {{ $d.Round (time.ParseDuration "3m") }} → 3h33m0s {{ $d.Round (time.ParseDuration "4s") }} → 3h32m32s ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Seconds.md000066400000000000000000000005061507671574500253530ustar00rootroot00000000000000--- title: Seconds description: Returns the time.Duration value as a floating point number of seconds. categories: [] keywords: [] params: functions_and_methods: returnType: float64 signatures: [DURATION.Seconds] --- ```go-html-template {{ $d = time.ParseDuration "3.5h2.5m1.5s" }} {{ $d.Seconds }} → 12751.5 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/Truncate.md000066400000000000000000000007571507671574500255520ustar00rootroot00000000000000--- title: Truncate description: Returns the result of rounding DURATION1 toward zero to a multiple of DURATION2. categories: [] keywords: [] params: functions_and_methods: returnType: time.Duration signatures: [DURATION1.Truncate DURATION2] --- ```go-html-template {{ $d = time.ParseDuration "3.5h2.5m1.5s" }} {{ $d.Truncate (time.ParseDuration "2h") }} → 2h0m0s {{ $d.Truncate (time.ParseDuration "3m") }} → 3h30m0s {{ $d.Truncate (time.ParseDuration "4s") }} → 3h32m28s ``` gohugoio-hugo-6abdaca/docs/content/en/methods/duration/_index.md000066400000000000000000000002121507671574500252150ustar00rootroot00000000000000--- title: Duration methods linkTitle: Duration description: Use these methods with time.Duration values. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/000077500000000000000000000000001507671574500237105ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Children.md000066400000000000000000000023201507671574500257570ustar00rootroot00000000000000--- title: Children description: Returns a collection of child menu entries, if any, under the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: navigation.Menu signatures: [MENUENTRY.Children] --- Use the `Children` method when rendering a nested menu. With this site configuration: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Products' pageRef = '/product' weight = 10 [[menus.main]] name = 'Product 1' pageRef = '/products/product-1' parent = 'Products' weight = 1 [[menus.main]] name = 'Product 2' pageRef = '/products/product-2' parent = 'Products' weight = 2 {{< /code-toggle >}} And this template: ```go-html-template

        ``` Hugo renders this HTML: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/HasChildren.md000066400000000000000000000022731507671574500264220ustar00rootroot00000000000000--- title: HasChildren description: Reports whether the given menu entry has child menu entries. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [MENUENTRY.HasChildren] --- Use the `HasChildren` method when rendering a nested menu. With this site configuration: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Products' pageRef = '/product' weight = 10 [[menus.main]] name = 'Product 1' pageRef = '/products/product-1' parent = 'Products' weight = 1 [[menus.main]] name = 'Product 2' pageRef = '/products/product-2' parent = 'Products' weight = 2 {{< /code-toggle >}} And this template: ```go-html-template
          {{ range .Site.Menus.main }}
        • {{ .Name }} {{ if .HasChildren }} {{ end }}
        • {{ end }}
        ``` Hugo renders this HTML: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Identifier.md000066400000000000000000000022701507671574500263150ustar00rootroot00000000000000--- title: Identifier description: Returns the `identifier` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [MENUENTRY.Identifier] --- The `Identifier` method returns the `identifier` property of the menu entry. If you define the menu entry [automatically], it returns the page's section. {{< code-toggle file=hugo >}} [[menus.main]] identifier = 'about' name = 'About' pageRef = '/about' weight = 10 [[menus.main]] identifier = 'contact' name = 'Contact' pageRef = '/contact' weight = 20 {{< /code-toggle >}} This example uses the `Identifier` method when querying the translation table on a multilingual site, falling back the `name` property if a matching key in the translation table does not exist: ```go-html-template ``` > [!note] > In the menu definition above, note that the `identifier` property is only required when two or more menu entries have the same name, or when localizing the name using translation tables. [automatically]: /content-management/menus/#define-automatically gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/KeyName.md000066400000000000000000000021641507671574500255660ustar00rootroot00000000000000--- title: KeyName description: Returns the `identifier` property of the given menu entry, falling back to its `name` property. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [MENUENTRY.KeyName] --- In this menu definition, the second entry does not contain an `identifier`, so the `Identifier` method returns its `name` property instead: {{< code-toggle file=hugo >}} [[menus.main]] identifier = 'about' name = 'About' pageRef = '/about' weight = 10 [[menus.main]] name = 'Contact' pageRef = '/contact' weight = 20 {{< /code-toggle >}} This example uses the `KeyName` method when querying the translation table on a multilingual site, falling back the `name` property if a matching key in the translation table does not exist: ```go-html-template ``` In the example above, we need to pass the value returned by `.KeyName` through the [`lower`] function because the keys in the translation table are lowercase. [`lower`]: /functions/strings/tolower/ gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Menu.md000066400000000000000000000011561507671574500251410ustar00rootroot00000000000000--- title: Menu description: Returns the identifier of the menu that contains the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [MENUENTRY.Menu] --- ```go-html-template {{ range .Site.Menus.main }} {{ .Menu }} → main {{ end }} ``` Use this method with the [`IsMenuCurrent`] and [`HasMenuCurrent`] methods on a `Page` object to set "active" and "ancestor" classes on a rendered entry. See [this example]. [`HasMenuCurrent`]: /methods/page/hasmenucurrent/ [`IsMenuCurrent`]: /methods/page/ismenucurrent/ [this example]: /templates/menu/#example gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Name.md000066400000000000000000000020201507671574500251040ustar00rootroot00000000000000--- title: Name description: Returns the `name` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [MENUENTRY.Name] --- If you define the menu entry [automatically], the `Name` method returns the page's [`LinkTitle`], falling back to its [`Title`]. If you define the menu entry [in front matter] or [in site configuration], the `Name` method returns the `name` property of the given menu entry. If the `name` is not defined, and the menu entry resolves to a page, the `Name` returns the page [`LinkTitle`], falling back to its [`Title`]. [`LinkTitle`]: /methods/page/linktitle/ [`Title`]: /methods/page/title/ [automatically]: /content-management/menus/#define-automatically [in front matter]: /content-management/menus/#define-in-front-matter [in site configuration]: /content-management/menus/#define-in-site-configuration ```go-html-template ``` gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Page.md000066400000000000000000000025451507671574500251140ustar00rootroot00000000000000--- title: Page description: Returns the Page object associated with the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [MENUENTRY.Page] --- Regardless of how you [define menu entries], an entry associated with a page has access to its [methods]. In this menu definition, the first two entries are associated with a page, the last entry is not: {{< code-toggle file=hugo >}} [[menus.main]] pageRef = '/about' weight = 10 [[menus.main]] pageRef = '/contact' weight = 20 [[menus.main]] name = 'Hugo' url = 'https://gohugo.io' weight = 30 {{< /code-toggle >}} In this example, if the menu entry is associated with a page, we use page's [`RelPermalink`] and [`LinkTitle`] when rendering the anchor element. If the entry is not associated with a page, we use its `url` and `name` properties. ```go-html-template ``` See the [menu templates] section for more information. [`LinkTitle`]: /methods/page/linktitle/ [`RelPermalink`]: /methods/page/relpermalink/ [define menu entries]: /content-management/menus/ [menu templates]: /templates/menu/#page-references [methods]: /methods/page/ gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/PageRef.md000066400000000000000000000053141507671574500255460ustar00rootroot00000000000000--- title: PageRef description: Returns the `pageRef` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [MENUENTRY.PageRef] --- The use case for this method is rare. In almost also scenarios you should use the [`URL`] method instead. ## Explanation If you specify a `pageRef` property when [defining a menu entry] in your site configuration, Hugo looks for a matching page when rendering the entry. If a matching page is found: - The [`URL`] method returns the page's relative permalink - The [`Page`] method returns the corresponding `Page` object - The [`HasMenuCurrent`] and [`IsMenuCurrent`] methods on a `Page` object return the expected values If a matching page is not found: - The [`URL`] method returns the entry's `url` property if set, else an empty string - The [`Page`] method returns nil - The [`HasMenuCurrent`] and [`IsMenuCurrent`] methods on a `Page` object return `false` > [!note] > In almost also scenarios you should use the [`URL`] method instead. ## Example This example is contrived. > [!note] > In almost also scenarios you should use the [`URL`] method instead. Consider this content structure: ```text content/ ├── products.md └── _index.md ``` And this menu definition: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Products' pageRef = '/products' weight = 10 [[menus.main]] name = 'Services' pageRef = '/services' weight = 20 {{< /code-toggle >}} With this template code: ```go-html-template {file="layouts/_partials/menu.html"} ``` Hugo render this HTML: ```html ``` In the above note that the `href` attribute of the second `anchor` element is blank because Hugo was unable to find the "services" page. With this template code: ```go-html-template {file="layouts/_partials/menu.html"} ``` Hugo renders this HTML: ```html ``` In the above note that Hugo populates the `href` attribute of the second `anchor` element with the `pageRef` property as defined in the site configuration because the template code falls back to the `PageRef` method. [`HasMenuCurrent`]: /methods/page/hasmenucurrent/ [`IsMenuCurrent`]: /methods/page/ismenucurrent/ [`Page`]: /methods/menu-entry/page/ [`URL`]: /methods/menu-entry/url/ [defining a menu entry]: /content-management/menus/#define-in-site-configuration gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Params.md000066400000000000000000000024351507671574500254610ustar00rootroot00000000000000--- title: Params description: Returns the `params` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Params signatures: [MENUENTRY.Params] --- When you define menu entries [in site configuration] or [in front matter], you can include a `params` key to attach additional information to the entry. For example: {{< code-toggle file=hugo >}} [[menus.main]] name = 'About' pageRef = '/about' weight = 10 [[menus.main]] name = 'Contact' pageRef = '/contact' weight = 20 [[menus.main]] name = 'Hugo' url = 'https://gohugo.io' weight = 30 [menus.main.params] rel = 'external' {{< /code-toggle >}} With this template: ```go-html-template ``` Hugo renders: ```html ``` See the [menu templates] section for more information. [menu templates]: /templates/menu/#menu-entry-parameters [in front matter]: /content-management/menus/#define-in-front-matter [in site configuration]: /content-management/menus/ gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Parent.md000066400000000000000000000017371507671574500254730ustar00rootroot00000000000000--- title: Parent description: Returns the `parent` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [MENUENTRY.Parent] --- With this menu definition: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Products' pageRef = '/product' weight = 10 [[menus.main]] name = 'Product 1' pageRef = '/products/product-1' parent = 'Products' weight = 1 [[menus.main]] name = 'Product 2' pageRef = '/products/product-2' parent = 'Products' weight = 2 {{< /code-toggle >}} This template renders the nested menu, listing the `parent` property next each of the child entries: ```go-html-template
          {{ range .Site.Menus.main }}
        • {{ .Name }} {{ if .HasChildren }}
            {{ range .Children }}
          • {{ .Name }} ({{ .Parent }})
          • {{ end }}
          {{ end }}
        • {{ end }}
        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Post.md000066400000000000000000000004131507671574500251550ustar00rootroot00000000000000--- title: Post description: Returns the `post` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [MENUENTRY.Post] --- {{% include "/_common/menu-entries/pre-and-post.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Pre.md000066400000000000000000000004101507671574500247530ustar00rootroot00000000000000--- title: Pre description: Returns the `pre` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [MENUENTRY.Pre] --- {{% include "/_common/menu-entries/pre-and-post.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Title.md000066400000000000000000000010741507671574500253150ustar00rootroot00000000000000--- title: Title description: Returns the `title` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [MENUENTRY.Title] --- The `Title` method returns the `title` property of the given menu entry. If the `title` is not defined, and the menu entry resolves to a page, the `Title` returns the page [`Title`]. [`Title`]: /methods/page/title/ ```go-html-template ``` [`RelPermalink`]: /methods/page/relpermalink/ gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/Weight.md000066400000000000000000000017131507671574500254630ustar00rootroot00000000000000--- title: Weight description: Returns the `weight` property of the given menu entry. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [MENUENTRY.Weight] --- If you define the menu entry [automatically], the `Weight` method returns the page's [`Weight`]. If you define the menu entry [in front matter] or [in site configuration], the `Weight` method returns the `weight` property, falling back to the page's `Weight`. [`Weight`]: /methods/page/weight/ [automatically]: /content-management/menus/#define-automatically [in front matter]: /content-management/menus/#define-in-front-matter [in site configuration]: /content-management/menus/#define-in-site-configuration In this contrived example, we limit the number of menu entries based on weight: ```go-html-template
          {{ range .Site.Menus.main }} {{ if le .Weight 42 }}
        • {{ .Name }}
        • {{ end }} {{ end }}
        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/menu-entry/_index.md000066400000000000000000000002131507671574500254740ustar00rootroot00000000000000--- title: Menu entry methods linkTitle: Menu entry description: Use these methods in your menu templates. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/methods/menu/000077500000000000000000000000001507671574500225515ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/menu/ByName.md000066400000000000000000000025341507671574500242520ustar00rootroot00000000000000--- title: ByName description: Returns the given menu with its entries sorted by name. categories: [] keywords: [] params: functions_and_methods: returnType: navigation.Menu signatures: [MENU.ByName] --- The `Sort` method returns the given menu with its entries sorted by `name`. Consider this menu definition: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Services' pageRef = '/services' weight = 10 [[menus.main]] name = 'About' pageRef = '/about' weight = 20 [[menus.main]] name = 'Contact' pageRef = '/contact' weight = 30 {{< /code-toggle >}} To sort the entries by `name`: ```go-html-template
          {{ range .Site.Menus.main.ByName }}
        • {{ .Name }}
        • {{ end }}
        ``` Hugo renders this to: ```html ``` You can also sort menu entries using the [`sort`] function. For example, to sort by `name` in descending order: ```go-html-template
          {{ range sort .Site.Menus.main "Name" "desc" }}
        • {{ .Name }}
        • {{ end }}
        ``` When using the sort function with menu entries, specify any of the following keys: `Identifier`, `Name`, `Parent`, `Post`, `Pre`, `Title`, `URL`, or `Weight`. [`sort`]: /functions/collections/sort/ gohugoio-hugo-6abdaca/docs/content/en/methods/menu/ByWeight.md000066400000000000000000000034171507671574500246220ustar00rootroot00000000000000--- title: ByWeight description: Returns the given menu with its entries sorted by weight, then by name, then by identifier. categories: [] keywords: [] params: functions_and_methods: returnType: navigation.Menu signatures: [MENU.ByWeight] --- The `ByWeight` method returns the given menu with its entries sorted by [`weight`](g), then by `name`, then by `identifier`. This is the default sort order. Consider this menu definition: {{< code-toggle file=hugo >}} [[menus.main]] identifier = 'about' name = 'About' pageRef = '/about' weight = 20 [[menus.main]] identifier = 'services' name = 'Services' pageRef = '/services' weight = 10 [[menus.main]] identifier = 'contact' name = 'Contact' pageRef = '/contact' weight = 30 {{< /code-toggle >}} To sort the entries by `weight`, then by `name`, then by `identifier`: ```go-html-template
          {{ range .Site.Menus.main.ByWeight }}
        • {{ .Name }}
        • {{ end }}
        ``` Hugo renders this to: ```html ``` > [!note] > In the menu definition above, note that the `identifier` property is only required when two or more menu entries have the same name, or when localizing the name using translation tables. You can also sort menu entries using the [`sort`] function. For example, to sort by `weight` in descending order: ```go-html-template
          {{ range sort .Site.Menus.main "Weight" "desc" }}
        • {{ .Name }}
        • {{ end }}
        ``` When using the sort function with menu entries, specify any of the following keys: `Identifier`, `Name`, `Parent`, `Post`, `Pre`, `Title`, `URL`, or `Weight`. [`sort`]: /functions/collections/sort/ gohugoio-hugo-6abdaca/docs/content/en/methods/menu/Limit.md000066400000000000000000000016111507671574500241500ustar00rootroot00000000000000--- title: Limit description: Returns the given menu, limited to the first N entries. categories: [] keywords: [] params: functions_and_methods: returnType: navigation.Menu signatures: [MENU.Limit N] --- The `Limit` method returns the given menu, limited to the first N entries. Consider this menu definition: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Services' pageRef = '/services' weight = 10 [[menus.main]] name = 'About' pageRef = '/about' weight = 20 [[menus.main]] name = 'Contact' pageRef = '/contact' weight = 30 {{< /code-toggle >}} To sort the entries by name, and limit to the first 2 entries: ```go-html-template
          {{ range .Site.Menus.main.ByName.Limit 2 }}
        • {{ .Name }}
        • {{ end }}
        ``` Hugo renders this to: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/methods/menu/Reverse.md000066400000000000000000000016761507671574500245200ustar00rootroot00000000000000--- title: Reverse description: Returns the given menu, reversing the sort order of its entries. categories: [] keywords: [] params: functions_and_methods: returnType: navigation.Menu signatures: [MENU.Reverse] --- The `Reverse` method returns the given menu, reversing the sort order of its entries. Consider this menu definition: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Services' pageRef = '/services' weight = 10 [[menus.main]] name = 'About' pageRef = '/about' weight = 20 [[menus.main]] name = 'Contact' pageRef = '/contact' weight = 30 {{< /code-toggle >}} To sort the entries by name in descending order: ```go-html-template
          {{ range .Site.Menus.main.ByName.Reverse }}
        • {{ .Name }}
        • {{ end }}
        ``` Hugo renders this to: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/methods/menu/_index.md000066400000000000000000000002121507671574500243340ustar00rootroot00000000000000--- title: Menu methods linkTitle: Menu description: Use these methods when ranging through menu entries. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/methods/page/000077500000000000000000000000001507671574500225215ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/page/Aliases.md000066400000000000000000000011031507671574500244170ustar00rootroot00000000000000--- title: Aliases description: Returns the URL aliases as defined in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: '[]string' signatures: [PAGE.Aliases] --- The `Aliases` method on a `Page` object returns the URL [aliases] as defined in front matter. For example: {{< code-toggle file=content/about.md fm=true >}} title = 'About' aliases = ['/old-url','/really-old-url'] {{< /code-toggle >}} To list the aliases: ```go-html-template {{ range .Aliases }} {{ . }} {{ end }} ``` [aliases]: /content-management/urls/#aliases gohugoio-hugo-6abdaca/docs/content/en/methods/page/AllTranslations.md000066400000000000000000000036651507671574500261670ustar00rootroot00000000000000--- title: AllTranslations description: Returns all translations of the given page, including the current language, sorted by language weight. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGE.AllTranslations] --- With this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' [languages.en] contentDir = 'content/en' languageCode = 'en-US' languageName = 'English' weight = 1 [languages.de] contentDir = 'content/de' languageCode = 'de-DE' languageName = 'Deutsch' weight = 2 [languages.fr] contentDir = 'content/fr' languageCode = 'fr-FR' languageName = 'Français' weight = 3 {{< /code-toggle >}} And this content: ```text content/ ├── de/ │ ├── books/ │ │ ├── book-1.md │ │ └── book-2.md │ └── _index.md ├── en/ │ ├── books/ │ │ ├── book-1.md │ │ └── book-2.md │ └── _index.md ├── fr/ │ ├── books/ │ │ └── book-1.md │ └── _index.md └── _index.md ``` And this template: ```go-html-template {{ with .AllTranslations }} {{ end }} ``` Hugo will render this list on the "Book 1" page of each site: ```html ``` On the "Book 2" page of the English and German sites, Hugo will render this: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/AlternativeOutputFormats.md000066400000000000000000000024721507671574500301030ustar00rootroot00000000000000--- title: AlternativeOutputFormats description: Returns a slice of OutputFormat objects, excluding the current output format, each representing one of the output formats enabled for the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.OutputFormats signatures: [PAGE.AlternativeOutputFormats] --- {{% glossary-term "output format" %}} The `AlternativeOutputFormats` method on a `Page` object returns a slice of `OutputFormat` objects, excluding the current output format, each representing one of the output formats enabled for the given page. See [details](/configuration/output-formats/). ## Methods {{% include "/_common/methods/page/output-format-methods.md" %}} ## Example Generate a `link` element in the `` of each page for each of the alternative output formats: ```go-html-template ... {{ $title := printf "%s | %s" .Title site.Title }} {{ if .IsHome }} {{ $title = site.Title }} {{ end }} {{ range .AlternativeOutputFormats }} {{ printf `` .Rel .MediaType.Type .Permalink $title | safeHTML }} {{ end }} ... ``` On the site's home page, Hugo renders this to: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Ancestors.md000066400000000000000000000037151507671574500250120ustar00rootroot00000000000000--- title: Ancestors description: Returns a collection of Page objects, one for each ancestor section of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGE.Ancestors] --- With this content structure: ```text content/ ├── auctions/ │ ├── 2023-11/ │ │ ├── _index.md <-- front matter: weight = 202311 │ │ ├── auction-1.md │ │ └── auction-2.md │ ├── 2023-12/ │ │ ├── _index.md <-- front matter: weight = 202312 │ │ ├── auction-3.md │ │ └── auction-4.md │ ├── _index.md <-- front matter: weight = 30 │ ├── bidding.md │ └── payment.md ├── books/ │ ├── _index.md <-- front matter: weight = 10 │ ├── book-1.md │ └── book-2.md ├── films/ │ ├── _index.md <-- front matter: weight = 20 │ ├── film-1.md │ └── film-2.md └── _index.md ``` And this template: ```go-html-template {{ range .Ancestors }} {{ .LinkTitle }} {{ end }} ``` On the November 2023 auctions page, Hugo renders: ```html Auctions in November 2023 Auctions Home ``` In the example above, notice that Hugo orders the ancestors from closest to furthest. This makes breadcrumb navigation simple: ```go-html-template ``` With some CSS, the code above renders something like this, where each breadcrumb links to its page: ```text Home > Auctions > Auctions in November 2023 > Auction 1 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/BundleType.md000066400000000000000000000020031507671574500251110ustar00rootroot00000000000000--- title: BundleType description: Returns the bundle type of the given page, or an empty string if the page is not a page bundle. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.BundleType] --- A page bundle is a directory that encapsulates both content and associated [resources](g). There are two types of page bundles: [leaf bundles](g) and [branch bundles](g). See [details](/content-management/page-bundles/). The `BundleType` method on a `Page` object returns `branch` for branch bundles, `leaf` for leaf bundles, and an empty string if the page is not a page bundle. ```text content/ ├── films/ │ ├── film-1/ │ │ ├── a.jpg │ │ └── index.md <-- leaf bundle │ ├── _index.md <-- branch bundle │ ├── b.jpg │ ├── film-2.md │ └── film-3.md └── _index.md <-- branch bundle ``` To get the value within a template: ```go-html-template {{ .BundleType }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/CodeOwners.md000066400000000000000000000036661507671574500251260ustar00rootroot00000000000000--- title: CodeOwners description: Returns of slice of code owners for the given page, derived from the CODEOWNERS file in the root of the project directory. categories: [] keywords: [] params: functions_and_methods: returnType: '[]string' signatures: [PAGE.CodeOwners] --- GitHub and GitLab support CODEOWNERS files. This file specifies the users responsible for developing and maintaining software and documentation. This definition can apply to the entire repository, specific directories, or to individual files. To learn more: - [GitHub CODEOWNERS documentation] - [GitLab CODEOWNERS documentation] Use the `CodeOwners` method on a `Page` object to determine the code owners for the given page. [GitHub CODEOWNERS documentation]: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners [GitLab CODEOWNERS documentation]: https://docs.gitlab.com/ee/user/project/code_owners.html To use the `CodeOwners` method you must enable access to your local Git repository: {{< code-toggle file=hugo >}} enableGitInfo = true {{< /code-toggle >}} Consider this project structure: ```text my-project/ ├── content/ │ ├── books/ │ │ └── les-miserables.md │ └── films/ │ └── the-hunchback-of-notre-dame.md └── CODEOWNERS ``` And this CODEOWNERS file: ```text * @jdoe /content/books/ @tjones /content/films/ @mrichards @rsmith ``` The table below shows the slice of code owners returned for each file: Path|Code owners :--|:-- `books/les-miserables.md`|`[@tjones]` `films/the-hunchback-of-notre-dame.md`|`[@mrichards @rsmith]` Render the code owners for each content page: ```go-html-template {{ range .CodeOwners }} {{ . }} {{ end }} ``` Combine this method with [`resources.GetRemote`] to retrieve names and avatars from your Git provider by querying their API. [`resources.GetRemote`]: /functions/resources/getremote/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Content.md000066400000000000000000000005101507671574500244510ustar00rootroot00000000000000--- title: Content description: Returns the rendered content of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [PAGE.Content] --- The `Content` method on a `Page` object renders Markdown and shortcodes to HTML. ```go-html-template {{ .Content }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/ContentWithoutSummary.md000066400000000000000000000013371507671574500274230ustar00rootroot00000000000000--- title: ContentWithoutSummary description: Returns the rendered content of the given page, excluding the content summary. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [PAGE.ContentWithoutSummary] --- {{< new-in 0.134.0 />}} Applicable when using manual or automatic [content summaries], the `ContentWithoutSummary` method on a `Page` object renders Markdown and shortcodes to HTML, excluding the content summary from the result. [content summaries]: /content-management/summaries/#manual-summary ```go-html-template {{ .ContentWithoutSummary }} ``` The `ContentWithoutSummary` method returns the same as `Content` if you define the content summary in front matter. gohugoio-hugo-6abdaca/docs/content/en/methods/page/CurrentSection.md000066400000000000000000000027201507671574500260130ustar00rootroot00000000000000--- title: CurrentSection description: Returns the Page object of the section in which the given page resides. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.CurrentSection] --- {{% glossary-term section %}} > [!note] > The current section of a [section page](g), [taxonomy page](g), [term page](g), or the home page, is itself. Consider this content structure: ```text content/ ├── auctions/ │ ├── 2023-11/ │ │ ├── _index.md <-- current section: 2023-11 │ │ ├── auction-1.md │ │ └── auction-2.md <-- current section: 2023-11 │ ├── 2023-12/ │ │ ├── _index.md │ │ ├── auction-3.md │ │ └── auction-4.md │ ├── _index.md <-- current section: auctions │ ├── bidding.md │ └── payment.md <-- current section: auctions ├── books/ │ ├── _index.md <-- current section: books │ ├── book-1.md │ └── book-2.md <-- current section: books ├── films/ │ ├── _index.md <-- current section: films │ ├── film-1.md │ └── film-2.md <-- current section: films └── _index.md <-- current section: home ``` To create a link to the current section page: ```go-html-template {{ .CurrentSection.LinkTitle }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Data.md000066400000000000000000000050501507671574500237140ustar00rootroot00000000000000--- title: Data description: Returns a unique data object for each page kind. categories: [] keywords: [] params: functions_and_methods: returnType: page.Data signatures: [PAGE.Data] --- The `Data` method on a `Page` object returns a unique data object for each [page kind](g). > [!note] > The `Data` method is only useful within [taxonomy](g) and [term](g) templates. > > Themes that are not actively maintained may still use `.Data.Pages` in their templates. Although that syntax remains functional, use one of these methods instead: [`Pages`], [`RegularPages`], or [`RegularPagesRecursive`] The examples that follow are based on this site configuration: {{< code-toggle file=hugo >}} [taxonomies] genre = 'genres' author = 'authors' {{< /code-toggle >}} And this content structure: ```text content/ ├── books/ │ ├── and-then-there-were-none.md --> genres: suspense │ ├── death-on-the-nile.md --> genres: suspense │ └── jamaica-inn.md --> genres: suspense, romance │ └── pride-and-prejudice.md --> genres: romance └── _index.md ``` ## In a taxonomy template Use these methods on the `Data` object within a _taxonomy_ template. Singular : (`string`) Returns the singular name of the taxonomy. ```go-html-template {{ .Data.Singular }} → genre ``` Plural : (`string`) Returns the plural name of the taxonomy. ```go-html-template {{ .Data.Plural }} → genres ``` Terms : (`page.Taxonomy`) Returns the `Taxonomy` object, consisting of a map of terms and the [weighted pages](g) associated with each term. ```go-html-template {{ $taxonomyObject := .Data.Terms }} ``` > [!note] > Once you have captured the `Taxonomy` object, use any of the [taxonomy methods] to sort, count, or capture a subset of its weighted pages. Learn more about [taxonomy templates]. ## In a term template Use these methods on the `Data` object within a _term_ template. Singular : (`string`) Returns the singular name of the taxonomy. ```go-html-template {{ .Data.Singular }} → genre ``` Plural : (`string`) Returns the plural name of the taxonomy. ```go-html-template {{ .Data.Plural }} → genres ``` Term : (`string`) Returns the name of the term. ```go-html-template {{ .Data.Term }} → suspense ``` Learn more about [term templates]. [`Pages`]: /methods/page/pages/ [`RegularPages`]: /methods/page/regularpages/ [`RegularPagesRecursive`]: /methods/page/regularpagesrecursive/ [taxonomy methods]: /methods/taxonomy/ [taxonomy templates]: /templates/types/#taxonomy [term templates]: /templates/types/#term gohugoio-hugo-6abdaca/docs/content/en/methods/page/Date.md000066400000000000000000000022711507671574500237220ustar00rootroot00000000000000--- title: Date description: Returns the date of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [PAGE.Date] --- Set the date in front matter: {{< code-toggle file=content/news/article-1.md fm=true >}} title = 'Article 1' date = 2023-10-19T00:40:04-07:00 {{< /code-toggle >}} > [!note] > The date field in front matter is often considered to be the creation date, You can change its meaning, and its effect on your site, in the site configuration. See [details]. The date is a [time.Time] value. Format and localize the value with the [`time.Format`] function, or use it with any of the [time methods]. ```go-html-template {{ .Date | time.Format ":date_medium" }} → Oct 19, 2023 ``` In the example above we explicitly set the date in front matter. With Hugo's default configuration, the `Date` method returns the front matter value. This behavior is configurable, allowing you to set fallback values if the date is not defined in front matter. See [details]. [`time.Format`]: /functions/time/format/ [details]: /configuration/front-matter/#dates [time methods]: /methods/time/ [time.Time]: https://pkg.go.dev/time#Time gohugoio-hugo-6abdaca/docs/content/en/methods/page/Description.md000066400000000000000000000013201507671574500253220ustar00rootroot00000000000000--- title: Description description: Returns the description of the given page as defined in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Description] --- Conceptually different from a [content summary], a page description is typically used in metadata about the page. {{< code-toggle file=content/recipes/sushi.md fm=true >}} title = 'How to make spicy tuna hand rolls' description = 'Instructions for making spicy tuna hand rolls.' {{< /code-toggle >}} ```go-html-template {file="layouts/baseof.html"} ... ... ``` [content summary]: /content-management/summaries/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Draft.md000066400000000000000000000010301507671574500240750ustar00rootroot00000000000000--- title: Draft description: Reports whether the given page is a draft as defined in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.Draft] --- By default, Hugo does not publish draft pages when you build your site. To include draft pages when you build your site, use the `--buildDrafts` command line flag. {{< code-toggle file=content/posts/post-1.md fm=true >}} title = 'Post 1' draft = true {{< /code-toggle >}} ```go-html-template {{ .Draft }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Eq.md000066400000000000000000000007741507671574500234200ustar00rootroot00000000000000--- title: Eq description: Reports whether two Page objects are equal. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE1.Eq PAGE2] --- In this contrived example we list all pages in the current section except for the current page. ```go-html-template {file="layouts/page.html"} {{ $currentPage := . }} {{ range .CurrentSection.Pages }} {{ if not (.Eq $currentPage) }} {{ .LinkTitle }} {{ end }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/ExpiryDate.md000066400000000000000000000023011507671574500251150ustar00rootroot00000000000000--- title: ExpiryDate description: Returns the expiry date of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [PAGE.ExpiryDate] --- By default, Hugo excludes expired pages when building your site. To include expired pages, use the `--buildExpired` command line flag. Set the expiry date in front matter: {{< code-toggle file=content/news/article-1.md fm=true >}} title = 'Article 1' expiryDate = 2024-10-19T00:32:13-07:00 {{< /code-toggle >}} The expiry date is a [time.Time] value. Format and localize the value with the [`time.Format`] function, or use it with any of the [time methods]. ```go-html-template {{ .ExpiryDate | time.Format ":date_medium" }} → Oct 19, 2024 ``` In the example above we explicitly set the expiry date in front matter. With Hugo's default configuration, the `ExpiryDate` method returns the front matter value. This behavior is configurable, allowing you to set fallback values if the expiry date is not defined in front matter. See [details]. [`time.Format`]: /functions/time/format/ [details]: /configuration/front-matter/#dates [time methods]: /methods/time/ [time.Time]: https://pkg.go.dev/time#Time gohugoio-hugo-6abdaca/docs/content/en/methods/page/File.md000066400000000000000000000076411507671574500237320ustar00rootroot00000000000000--- title: File description: For pages backed by a file, returns file information for the given page. categories: [] keywords: [] params: functions_and_methods: returnType: hugolib.fileInfo signatures: [PAGE.File] --- By default, not all pages are backed by a file, including top-level [section pages](g), [taxonomy pages](g), and [term pages](g). By definition, you cannot retrieve file information when the file does not exist. To back one of the pages above with a file, create an `_index.md` file in the corresponding directory. For example: ```text content/ └── books/ ├── _index.md <-- the top-slevel section page ├── book-1.md └── book-2.md ``` > [!note] > Code defensively by verifying file existence as shown in the examples below. ## Methods > [!note] > The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend on the operating system. ### BaseFileName (`string`) The file name, excluding the extension. ```go-html-template {{ with .File }} {{ .BaseFileName }} {{ end }} ``` ### ContentBaseName (`string`) If the page is a branch or leaf bundle, the name of the containing directory, else the `TranslationBaseName`. ```go-html-template {{ with .File }} {{ .ContentBaseName }} {{ end }} ``` ### Dir (`string`) The file path, excluding the file name, relative to the `content` directory. ```go-html-template {{ with .File }} {{ .Dir }} {{ end }} ``` ### Ext (`string`) The file extension. ```go-html-template {{ with .File }} {{ .Ext }} {{ end }} ``` ### Filename (`string`) The absolute file path. ```go-html-template {{ with .File }} {{ .Filename }} {{ end }} ``` ### IsContentAdapter {{< new-in 0.126.0 />}} (`bool`) Reports whether the file is a [content adapter]. ```go-html-template {{ with .File }} {{ .IsContentAdapter }} {{ end }} ``` ### LogicalName (`string`) The file name. ```go-html-template {{ with .File }} {{ .LogicalName }} {{ end }} ``` ### Path (`string`) The file path, relative to the `content` directory. ```go-html-template {{ with .File }} {{ .Path }} {{ end }} ``` ### Section (`string`) The name of the top-level section in which the file resides. ```go-html-template {{ with .File }} {{ .Section }} {{ end }} ``` ### TranslationBaseName (`string`) The file name, excluding the extension and language identifier. ```go-html-template {{ with .File }} {{ .TranslationBaseName }} {{ end }} ``` ### UniqueID (`string`) The MD5 hash of `.File.Path`. ```go-html-template {{ with .File }} {{ .UniqueID }} {{ end }} ``` ## Examples Consider this content structure in a multilingual project: ```text content/ ├── news/ │ ├── b/ │ │ ├── index.de.md <-- leaf bundle │ │ └── index.en.md <-- leaf bundle │ ├── a.de.md <-- regular content │ ├── a.en.md <-- regular content │ ├── _index.de.md <-- branch bundle │ └── _index.en.md <-- branch bundle ├── _index.de.md └── _index.en.md ``` With the English language site:  |regular content|leaf bundle|branch bundle :--|:--|:--|:-- BaseFileName|a.en|index.en|_index.en ContentBaseName|a|b|news Dir|news/|news/b/|news/ Ext|md|md|md Filename|/home/user/...|/home/user/...|/home/user/... IsContentAdapter|false|false|false LogicalName|a.en.md|index.en.md|_index.en.md Path|news/a.en.md|news/b/index.en.md|news/_index.en.md Section|news|news|news TranslationBaseName|a|index|_index UniqueID|15be14b...|186868f...|7d9159d... ## Defensive coding Some of the pages on a site may not be backed by a file. For example: - Top-level section pages - Taxonomy pages - Term pages Without a backing file, Hugo will throw an error if you attempt to access a `.File` property. To code defensively, first check for file existence: ```go-html-template {{ with .File }} {{ .ContentBaseName }} {{ end }} ``` [content adapter]: /content-management/content-adapters/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/FirstSection.md000066400000000000000000000027451507671574500254670ustar00rootroot00000000000000--- title: FirstSection description: Returns the Page object of the top-level section of which the given page is a descendant. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.FirstSection] --- {{% glossary-term section %}} > [!note] > When called on the home page, the `FirstSection` method returns the `Page` object of the home page itself. Consider this content structure: ```text content/ ├── auctions/ │ ├── 2023-11/ │ │ ├── _index.md <-- first section: auctions │ │ ├── auction-1.md │ │ └── auction-2.md <-- first section: auctions │ ├── 2023-12/ │ │ ├── _index.md │ │ ├── auction-3.md │ │ └── auction-4.md │ ├── _index.md <-- first section: auctions │ ├── bidding.md │ └── payment.md <-- first section: auctions ├── books/ │ ├── _index.md <-- first section: books │ ├── book-1.md │ └── book-2.md <-- first section: books ├── films/ │ ├── _index.md <-- first section: films │ ├── film-1.md │ └── film-2.md <-- first section: films └── _index.md <-- first section: home ``` To link to the top-level section of which the current page is a descendant: ```go-html-template {{ .FirstSection.LinkTitle }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Fragments.md000066400000000000000000000076131507671574500250000ustar00rootroot00000000000000--- title: Fragments description: Returns a data structure of the fragments in the given page. categories: [] keywords: [] params: functions_and_methods: returnType: tableofcontents.Fragments signatures: [PAGE.Fragments] --- In a URL, whether absolute or relative, the [fragment](g) links to an `id` attribute of an HTML element on the page. ```text /articles/article-1#section-2 ------------------- --------- path fragment ``` Hugo assigns an `id` attribute to each Markdown [ATX] and [setext] heading within the page content. You can override the `id` with a [Markdown attribute](g) as needed. This creates the relationship between an entry in the [table of contents] (TOC) and a heading on the page. Use the `Fragments` method on a `Page` object to create a table of contents with the `Fragments.ToHTML` method, or by [walking](g) the `Fragments.Map` data structure. ## Methods ### Headings (`slice`) A slice of maps of all headings on the page, with first-level keys for each heading. Each map contains the following keys: `ID`, `Level`, `Title` and `Headings`. To inspect the data structure: ```go-html-template
        {{ debug.Dump .Fragments.Headings }}
        ``` ### HeadingsMap (`map`) A nested map of all headings on the page. Each map contains the following keys: `ID`, `Level`, `Title` and `Headings`. To inspect the data structure: ```go-html-template
        {{ debug.Dump .Fragments.HeadingsMap }}
        ``` ### Identifiers (`slice`) A slice containing the `id` attribute of each heading on the page. If so configured, will also contain the `id` attribute of each description term (i.e., `dt` element) on the page. See [configure Markup](/configuration/markup/#parserautodefinitiontermid). To inspect the data structure: ```go-html-template
        {{ debug.Dump .Fragments.Identifiers }}
        ``` ### Identifiers.Contains ID (`bool`) Reports whether one or more headings on the page has the given `id` attribute, useful for validating fragments within a link [render hook](g). ```go-html-template {{ .Fragments.Identifiers.Contains "section-2" }} → true ``` ### Identifiers.Count ID (`int`) The number of headings on a page with the given `id` attribute, useful for detecting duplicates. ```go-html-template {{ .Fragments.Identifiers.Count "section-2" }} → 1 ``` ### ToHTML (`template.HTML`) Returns a TOC as a nested list, either ordered or unordered, identical to the HTML returned by the [`TableOfContents`] method. This method take three arguments: the start level (`int`), the end level (`int`), and a boolean (`true` to return an ordered list, `false` to return an unordered list). Use this method when you want to control the start level, end level, or list type independently from the table of contents settings in your site configuration. ```go-html-template {{ $startLevel := 2 }} {{ $endLevel := 3 }} {{ $ordered := true }} {{ .Fragments.ToHTML $startLevel $endLevel $ordered }} ``` Hugo renders this to: ```html ``` > [!note] > It is safe to use the `Fragments` methods within a render hook, even for the current page. > > When using the `Fragments` methods within a shortcode, call the shortcode using [standard notation]. If you use [Markdown notation] the rendered shortcode is included in the creation of the fragments map, resulting in a circular loop. [`TableOfContents`]: /methods/page/tableofcontents/ [ATX]: https://spec.commonmark.org/current/#atx-headings [Markdown notation]: /content-management/shortcodes/#notation [setext]: https://spec.commonmark.org/current/#setext-headings [standard notation]: /content-management/shortcodes/#notation [table of contents]: /methods/page/tableofcontents/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/FuzzyWordCount.md000066400000000000000000000006471507671574500260460ustar00rootroot00000000000000--- title: FuzzyWordCount description: Returns the number of words in the content of the given page, rounded up to the nearest multiple of 100. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGE.FuzzyWordCount] --- ```go-html-template {{ .FuzzyWordCount }} → 200 ``` To get the exact word count, use the [`WordCount`] method. [`WordCount`]: /methods/page/wordcount/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/GetPage.md000066400000000000000000000031721507671574500243620ustar00rootroot00000000000000--- title: GetPage description: Returns a Page object from the given path. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.GetPage PATH] aliases: [/functions/getpage] --- The `GetPage` method is also available on a `Site` object. See [details]. [details]: /methods/site/getpage/ When using the `GetPage` method on the `Page` object, specify a path relative to the current directory or relative to the `content` directory. If Hugo cannot resolve the path to a page, the method returns nil. If the path is ambiguous, Hugo throws an error and fails the build. Consider this content structure: ```text content/ ├── works/ │ ├── paintings/ │ │ ├── _index.md │ │ ├── starry-night.md │ │ └── the-mona-lisa.md │ ├── sculptures/ │ │ ├── _index.md │ │ ├── david.md │ │ └── the-thinker.md │ └── _index.md └── _index.md ``` The examples below depict the result of rendering `works/paintings/the-mona-lisa.md`: ```go-html-template {file="layouts/works/page.html"} {{ with .GetPage "starry-night" }} {{ .Title }} → Starry Night {{ end }} {{ with .GetPage "./starry-night" }} {{ .Title }} → Starry Night {{ end }} {{ with .GetPage "../paintings/starry-night" }} {{ .Title }} → Starry Night {{ end }} {{ with .GetPage "/works/paintings/starry-night" }} {{ .Title }} → Starry Night {{ end }} {{ with .GetPage "../sculptures/david" }} {{ .Title }} → David {{ end }} {{ with .GetPage "/works/sculptures/david" }} {{ .Title }} → David {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/GetTerms.md000066400000000000000000000016371507671574500246040ustar00rootroot00000000000000--- title: GetTerms description: Returns a collection of term pages for terms defined on the given page in the given taxonomy, ordered according to the sequence in which they appear in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGE.GetTerms TAXONOMY] --- Given this front matter: {{< code-toggle file=content/books/les-miserables.md fm=true >}} title = 'Les Misérables' tags = ['historical','classic','fiction'] {{< /code-toggle >}} This template code: ```go-html-template {{ with .GetTerms "tags" }}

        Tags

        {{ end }} ``` Is rendered to: ```html

        Tags

        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/GitInfo.md000066400000000000000000000110471507671574500244050ustar00rootroot00000000000000--- title: GitInfo description: Returns Git information related to the last commit of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: '*gitmap.GitInfo' signatures: [PAGE.GitInfo] --- The `GitInfo` method on a `Page` object returns an object with additional methods. > [!note] > Hugo's Git integration is performant, but may increase build times on large sites. ## Prerequisites Install Git, create a repository, and commit your project files. You must also allow Hugo to access your repository. In your site configuration: {{< code-toggle file=hugo >}} enableGitInfo = true {{< /code-toggle >}} Alternatively, use the command line flag when building your site: ```sh hugo --enableGitInfo ``` > [!note] > When you set `enableGitInfo` to `true`, or enable the feature with the command line flag, the last modification date for each content page will be the Author Date of the last commit for that file. > > This is configurable. See [details]. ## Methods ### AbbreviatedHash (`string`) The abbreviated commit hash. ```go-html-template {{ with .GitInfo }} {{ .AbbreviatedHash }} → aab9ec0b3 {{ end }} ``` ### AuthorDate (`time.Time`) The author date. ```go-html-template {{ with .GitInfo }} {{ .AuthorDate.Format "2006-01-02" }} → 2023-10-09 {{ end }} ``` ### AuthorEmail (`string`) The author's email address, respecting [gitmailmap]. ```go-html-template {{ with .GitInfo }} {{ .AuthorEmail }} → jsmith@example.org {{ end }} ``` ### AuthorName (`string`) The author's name, respecting [gitmailmap]. ```go-html-template {{ with .GitInfo }} {{ .AuthorName }} → John Smith {{ end }} ``` ### CommitDate (`time.Time`) The commit date. ```go-html-template {{ with .GitInfo }} {{ .CommitDate.Format "2006-01-02" }} → 2023-10-09 {{ end }} ``` ### Hash (`string`) The commit hash. ```go-html-template {{ with .GitInfo }} {{ .Hash }} → aab9ec0b31ebac916a1468c4c9c305f2bebf78d4 {{ end }} ``` ### Subject (`string`) The commit message subject. ```go-html-template {{ with .GitInfo }} {{ .Subject }} → Add tutorials {{ end }} ``` ### Body (`string`) The commit message body. ```go-html-template {{ with .GitInfo }} {{ .Body }} → - Two new pages added. {{ end }} ``` ### Ancestors (`gitmap.GitInfos`) A slice of file-filtered ancestor commits, if any, ordered from most recent to least recent. For example, to list the last 5 commits: ```go-html-template {{ with .GitInfo }} {{ range .Ancestors | first 5 }} {{ .CommitDate.Format "2006-01-02" }}: {{ .Subject }} {{ end }} {{ end }} ``` To reverse the order: ```go-html-template {{ with .GitInfo }} {{ range .Ancestors.Reverse | first 5 }} {{ .CommitDate.Format "2006-01-02" }}: {{ .Subject }} {{ end }} {{ end }} ``` ### Parent (`*gitmap.GitInfo`) The first file-filtered ancestor commit, if any. ## Last modified date By default, when `enableGitInfo` is `true`, the `Lastmod` method on a `Page` object returns the Git AuthorDate of the last commit that included the file. You can change this behavior in your [site configuration]. ## Hosting considerations In a [CI/CD](g) environment, the step that clones your project repository must perform a deep clone. If the clone is shallow, the Git information for a given file may be inaccurate. It might incorrectly reflect the most recent repository commit, rather than the commit that actually modified the file. While some providers perform a deep clone by default, others require you to configure the depth yourself. Hosting service|Default clone depth|Configurable :--|:--|:-- AWS Amplify|Deep|N/A Cloudflare|Shallow|Yes [^1] DigitalOcean App Platform|Deep|N/A GitHub Pages|Shallow|Yes [^2] GitLab Pages|Shallow|Yes [^3] Netlify|Deep|N/A Render|Shallow|Yes [^1] Vercel|Shallow|Yes [^1] [^1]: To perform a deep clone when hosting on Cloudflare, Render, or Vercel, include this code in the build script after the repository has been cloned: ```text if [ "$(git rev-parse --is-shallow-repository)" = "true" ]; then git fetch --unshallow fi ``` [^2]: To perform a deep clone when hosting on GitHub Pages, set `fetch-depth: 0` in the `checkout` step of the GitHub Action. See [example](/host-and-deploy/host-on-github-pages/#step-7). [^3]: To perform a deep clone when hosting on GitLab Pages, set the `GIT_DEPTH` environment variable to `0` in the workflow file. See [example](/host-and-deploy/host-on-gitlab-pages/#configure-gitlab-cicd). [details]: /configuration/front-matter/#dates [gitmailmap]: https://git-scm.com/docs/gitmailmap [site configuration]: /configuration/front-matter/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/HasMenuCurrent.md000066400000000000000000000022331507671574500257460ustar00rootroot00000000000000--- title: HasMenuCurrent description: Reports whether the given Page object matches the Page object associated with one of the child menu entries under the given menu entry in the given menu. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.HasMenuCurrent MENU MENUENTRY] aliases: [/functions/hasmenucurrent] --- If the `Page` object associated with the menu entry is a section, this method also returns `true` for any descendant of that section. ```go-html-template {{ $currentPage := . }} {{ range site.Menus.main }} {{ if $currentPage.IsMenuCurrent .Menu . }} {{ .Name }} {{ else if $currentPage.HasMenuCurrent .Menu . }} {{ .Name }} {{ else }} {{ .Name }} {{ end }} {{ end }} ``` See [menu templates] for a complete example. > [!note] > When using this method you must either define the menu entry in front matter, or specify a `pageRef` property when defining the menu entry in your site configuration. [menu templates]: /templates/menu/#example gohugoio-hugo-6abdaca/docs/content/en/methods/page/HasShortcode.md000066400000000000000000000020701507671574500254300ustar00rootroot00000000000000--- title: HasShortcode description: Reports whether the given shortcode is called by the given page. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.HasShortcode NAME] --- By example, let's use [Plotly] to render a chart: [Plotly]: https://plotly.com/javascript/ ```text {file="content/example.md"} {{}} { "data": [ { "x": ["giraffes", "orangutans", "monkeys"], "y": [20, 14, 23], "type": "bar" } ], } {{}} ``` The shortcode is simple: ```go-html-template {file="layouts/_shortcodes/plotly.html"} {{ $id := printf "plotly-%02d" .Ordinal }}
        ``` Now we can selectively load the required JavaScript on pages that call the "plotly" shortcode: ```go-html-template {file="layouts/baseof.html"} ... {{ if .HasShortcode "plotly" }} {{ end }} ... ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/HeadingsFiltered.md000066400000000000000000000007431507671574500262500ustar00rootroot00000000000000--- title: HeadingsFiltered description: Returns a slice of headings for each page related to the given page. categories: [] keywords: [] params: functions_and_methods: returnType: tableofcontents.Headings signatures: [PAGE.HeadingsFiltered] --- Use in conjunction with the [`Related`] method on a [`Pages`] object. See [details]. [`Pages`]: /methods/pages/ [`Related`]: /methods/pages/related/ [details]: /content-management/related-content/#index-content-headings gohugoio-hugo-6abdaca/docs/content/en/methods/page/InSection.md000066400000000000000000000045411507671574500247420ustar00rootroot00000000000000--- title: InSection description: Reports whether the given page is in the given section. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.InSection SECTION] --- {{% glossary-term section %}} The `InSection` method on a `Page` object reports whether the given page is in the given section. Note that the method returns `true` when comparing a page to a sibling. With this content structure: ```text content/ ├── auctions/ │ ├── 2023-11/ │ │ ├── _index.md │ │ ├── auction-1.md │ │ └── auction-2.md │ ├── 2023-12/ │ │ ├── _index.md │ │ ├── auction-3.md │ │ └── auction-4.md │ ├── _index.md │ ├── bidding.md │ └── payment.md └── _index.md ``` When rendering the "auction-1" page: ```go-html-template {{ with .Site.GetPage "/" }} {{ $.InSection . }} → false {{ end }} {{ with .Site.GetPage "/auctions" }} {{ $.InSection . }} → false {{ end }} {{ with .Site.GetPage "/auctions/2023-11" }} {{ $.InSection . }} → true {{ end }} {{ with .Site.GetPage "/auctions/2023-11/auction-2" }} {{ $.InSection . }} → true {{ end }} ``` In the examples above we are coding defensively using the [`with`] statement, returning nothing if the page does not exist. By adding an [`else`] clause we can do some error reporting: ```go-html-template {{ $path := "/auctions/2023-11" }} {{ with .Site.GetPage $path }} {{ $.InSection . }} → true {{ else }} {{ errorf "Unable to find the section with path %s" $path }} {{ end }} ``` ## Understanding context Inside of the `with` block, the [context](g) (the dot) is the section `Page` object, not the `Page` object passed into the template. If we were to use this syntax: ```go-html-template {{ with .Site.GetPage "/auctions" }} {{ .InSection . }} → true {{ end }} ``` The result would be wrong when rendering the "auction-1" page because we are comparing the section page to itself. > [!note] > Use the `$` to get the context passed into the template. ```go-html-template {{ with .Site.GetPage "/auctions" }} {{ $.InSection . }} → true {{ end }} ``` > [!note] > Gaining a thorough understanding of context is critical for anyone writing template code. [`else`]: /functions/go-template/else/ [`with`]: /functions/go-template/with/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/IsAncestor.md000066400000000000000000000042251507671574500251200ustar00rootroot00000000000000--- title: IsAncestor description: Reports whether PAGE1 is an ancestor of PAGE2. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE1.IsAncestor PAGE2] --- With this content structure: ```text content/ ├── auctions/ │ ├── 2023-11/ │ │ ├── _index.md │ │ ├── auction-1.md │ │ └── auction-2.md │ ├── 2023-12/ │ │ ├── _index.md │ │ ├── auction-3.md │ │ └── auction-4.md │ ├── _index.md │ ├── bidding.md │ └── payment.md └── _index.md ``` When rendering the "auctions" page: ```go-html-template {{ with .Site.GetPage "/" }} {{ $.IsAncestor . }} → false {{ end }} {{ with .Site.GetPage "/auctions" }} {{ $.IsAncestor . }} → false {{ end }} {{ with .Site.GetPage "/auctions/2023-11" }} {{ $.IsAncestor . }} → true {{ end }} {{ with .Site.GetPage "/auctions/2023-11/auction-2" }} {{ $.IsAncestor . }} → true {{ end }} ``` In the examples above we are coding defensively using the [`with`] statement, returning nothing if the page does not exist. By adding an [`else`] clause we can do some error reporting: ```go-html-template {{ $path := "/auctions/2023-11" }} {{ with .Site.GetPage $path }} {{ $.IsAncestor . }} → true {{ else }} {{ errorf "Unable to find the section with path %s" $path }} {{ end }} ``` ## Understanding context Inside of the `with` block, the [context](g) (the dot) is the section `Page` object, not the `Page` object passed into the template. If we were to use this syntax: ```go-html-template {{ with .Site.GetPage "/auctions" }} {{ .IsAncestor . }} → true {{ end }} ``` The result would be wrong when rendering the "auction-1" page because we are comparing the section page to itself. > [!note] > Use the `$` to get the context passed into the template. ```go-html-template {{ with .Site.GetPage "/auctions" }} {{ $.IsAncestor . }} → true {{ end }} ``` > [!note] > Gaining a thorough understanding of context is critical for anyone writing template code. [`else`]: /functions/go-template/else/ [`with`]: /functions/go-template/with/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/IsDescendant.md000066400000000000000000000042511507671574500254110ustar00rootroot00000000000000--- title: IsDescendant description: Reports whether PAGE1 is a descendant of PAGE2. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE1.IsDescendant PAGE2] --- With this content structure: ```text content/ ├── auctions/ │ ├── 2023-11/ │ │ ├── _index.md │ │ ├── auction-1.md │ │ └── auction-2.md │ ├── 2023-12/ │ │ ├── _index.md │ │ ├── auction-3.md │ │ └── auction-4.md │ ├── _index.md │ ├── bidding.md │ └── payment.md └── _index.md ``` When rendering the "auctions" page: ```go-html-template {{ with .Site.GetPage "/" }} {{ $.IsDescendant . }} → true {{ end }} {{ with .Site.GetPage "/auctions" }} {{ $.IsDescendant . }} → false {{ end }} {{ with .Site.GetPage "/auctions/2023-11" }} {{ $.IsDescendant . }} → false {{ end }} {{ with .Site.GetPage "/auctions/2023-11/auction-2" }} {{ $.IsDescendant . }} → false {{ end }} ``` In the examples above we are coding defensively using the [`with`] statement, returning nothing if the page does not exist. By adding an [`else`] clause we can do some error reporting: ```go-html-template {{ $path := "/auctions/2023-11" }} {{ with .Site.GetPage $path }} {{ $.IsDescendant . }} → true {{ else }} {{ errorf "Unable to find the section with path %s" $path }} {{ end }} ``` ## Understanding context Inside of the `with` block, the [context](g) (the dot) is the section `Page` object, not the `Page` object passed into the template. If we were to use this syntax: ```go-html-template {{ with .Site.GetPage "/auctions" }} {{ .IsDescendant . }} → true {{ end }} ``` The result would be wrong when rendering the "auction-1" page because we are comparing the section page to itself. > [!note] > Use the `$` to get the context passed into the template. ```go-html-template {{ with .Site.GetPage "/auctions" }} {{ $.IsDescendant . }} → true {{ end }} ``` > [!note] > Gaining a thorough understanding of context is critical for anyone writing template code. [`else`]: /functions/go-template/else/ [`with`]: /functions/go-template/with/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/IsHome.md000066400000000000000000000010751507671574500242320ustar00rootroot00000000000000--- title: IsHome description: Reports whether the given page is the home page. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.IsHome] --- The `IsHome` method on a `Page` object returns `true` if the [page kind](g) is `home`. ```text content/ ├── books/ │ ├── book-1/ │ │ └── index.md <-- kind = page │ ├── book-2.md <-- kind = page │ └── _index.md <-- kind = section └── _index.md <-- kind = home ``` ```go-html-template {{ .IsHome }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/IsMenuCurrent.md000066400000000000000000000017551507671574500256160ustar00rootroot00000000000000--- title: IsMenuCurrent description: Reports whether the given Page object matches the Page object associated with the given menu entry in the given menu. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.IsMenuCurrent MENU MENUENTRY] aliases: [/functions/ismenucurrent] --- ```go-html-template {{ $currentPage := . }} {{ range site.Menus.main }} {{ if $currentPage.IsMenuCurrent .Menu . }} {{ .Name }} {{ else if $currentPage.HasMenuCurrent .Menu . }} {{ .Name }} {{ else }} {{ .Name }} {{ end }} {{ end }} ``` See [menu templates] for a complete example. > [!note] > When using this method you must either define the menu entry in front matter, or specify a `pageRef` property when defining the menu entry in your site configuration. [menu templates]: /templates/menu/#example gohugoio-hugo-6abdaca/docs/content/en/methods/page/IsNode.md000066400000000000000000000015571507671574500242340ustar00rootroot00000000000000--- title: IsNode description: Reports whether the given page is a node. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.IsNode] --- The `IsNode` method on a `Page` object returns `true` if the [page kind](g) is `home`, `section`, `taxonomy`, or `term`. It returns `false` is the page kind is `page`. ```text content/ ├── books/ │ ├── book-1/ │ │ └── index.md <-- kind = page, node = false │ ├── book-2.md <-- kind = page, node = false │ └── _index.md <-- kind = section, node = true ├── tags/ │ ├── fiction/ │ │ └── _index.md <-- kind = term, node = true │ └── _index.md <-- kind = taxonomy, node = true └── _index.md <-- kind = home, node = true ``` ```go-html-template {{ .IsNode }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/IsPage.md000066400000000000000000000010761507671574500242170ustar00rootroot00000000000000--- title: IsPage description: Reports whether the given page is a regular page. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.IsPage] --- The `IsPage` method on a `Page` object returns `true` if the [page kind](g) is `page`. ```text content/ ├── books/ │ ├── book-1/ │ │ └── index.md <-- kind = page │ ├── book-2.md <-- kind = page │ └── _index.md <-- kind = section └── _index.md <-- kind = home ``` ```go-html-template {{ .IsPage }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/IsSection.md000066400000000000000000000011151507671574500247410ustar00rootroot00000000000000--- title: IsSection description: Reports whether the given page is a section page. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.IsSection] --- The `IsSection` method on a `Page` object returns `true` if the [page kind](g) is `section`. ```text content/ ├── books/ │ ├── book-1/ │ │ └── index.md <-- kind = page │ ├── book-2.md <-- kind = page │ └── _index.md <-- kind = section └── _index.md <-- kind = home ``` ```go-html-template {{ .IsSection }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/IsTranslated.md000066400000000000000000000017731507671574500254500ustar00rootroot00000000000000--- title: IsTranslated description: Reports whether the given page has one or more translations. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.IsTranslated] --- With this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' [languages.en] contentDir = 'content/en' languageCode = 'en-US' languageName = 'English' weight = 1 [languages.de] contentDir = 'content/de' languageCode = 'de-DE' languageName = 'Deutsch' weight = 2 {{< /code-toggle >}} And this content: ```text content/ ├── de/ │ ├── books/ │ │ └── book-1.md │ └── _index.md ├── en/ │ ├── books/ │ │ ├── book-1.md │ │ └── book-2.md │ └── _index.md └── _index.md ``` When rendering `content/en/books/book-1.md`: ```go-html-template {{ .IsTranslated }} → true ``` When rendering `content/en/books/book-2.md`: ```go-html-template {{ .IsTranslated }} → false ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Keywords.md000066400000000000000000000017721507671574500246610ustar00rootroot00000000000000--- title: Keywords description: Returns a slice of keywords as defined in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: '[]string' signatures: [PAGE.Keywords] --- By default, Hugo evaluates the keywords when creating collections of [related content]. [related content]: /content-management/related-content/ {{< code-toggle file=content/recipes/sushi.md fm=true >}} title = 'How to make spicy tuna hand rolls' keywords = ['tuna','sriracha','nori','rice'] {{< /code-toggle >}} To list the keywords within a template: ```go-html-template {{ range .Keywords }} {{ . }} {{ end }} ``` Or use the [delimit] function: ```go-html-template {{ delimit .Keywords ", " ", and " }} → tuna, sriracha, nori, and rice ``` [delimit]: /functions/collections/delimit/ Keywords are also a useful [taxonomy]: {{< code-toggle file=hugo >}} [taxonomies] tag = 'tags' keyword = 'keywords' category = 'categories' {{< /code-toggle >}} [taxonomy]: /content-management/taxonomies/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Kind.md000066400000000000000000000013401507671574500237260ustar00rootroot00000000000000--- title: Kind description: Returns the kind of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Kind] --- The [page kind](g) is one of `home`, `page`, `section`, `taxonomy`, or `term`. ```text content/ ├── books/ │ ├── book-1/ │ │ └── index.md <-- kind = page │ ├── book-2.md <-- kind = page │ └── _index.md <-- kind = section ├── tags/ │ ├── fiction/ │ │ └── _index.md <-- kind = term │ └── _index.md <-- kind = taxonomy └── _index.md <-- kind = home ``` To get the value within a template: ```go-html-template {{ .Kind }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Language.md000066400000000000000000000031421507671574500245660ustar00rootroot00000000000000--- title: Language description: Returns the language object for the given page. categories: [] keywords: [] params: functions_and_methods: returnType: langs.Language signatures: [PAGE.Language] --- The `Language` method on a `Page` object returns the language object for the given page. The language object points to the language definition in the site configuration. You can also use the `Language` method on a `Site` object. See [details]. ## Methods The examples below assume the following in your site configuration: {{< code-toggle file=hugo >}} [languages.de] languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' weight = 2 {{< /code-toggle >}} ### Lang (`string`) The language tag as defined by [RFC 5646]. ```go-html-template {{ .Language.Lang }} → de ``` ### LanguageCode (`string`) The language code from the site configuration. Falls back to `Lang` if not defined. ```go-html-template {{ .Language.LanguageCode }} → de-DE ``` ### LanguageDirection (`string`) The language direction from the site configuration, either `ltr` or `rtl`. ```go-html-template {{ .Language.LanguageDirection }} → ltr ``` ### LanguageName (`string`) The language name from the site configuration. ```go-html-template {{ .Language.LanguageName }} → Deutsch ``` ### Weight (`int`) The language weight from the site configuration which determines its order in the slice of languages returned by the `Languages` method on a `Site` object. ```go-html-template {{ .Language.Weight }} → 2 ``` [details]: /methods/site/language/ [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646 gohugoio-hugo-6abdaca/docs/content/en/methods/page/Lastmod.md000066400000000000000000000024371507671574500244540ustar00rootroot00000000000000--- title: Lastmod description: Returns the last modification date of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [PAGE.Lastmod] --- Set the last modification date in front matter: {{< code-toggle file=content/news/article-1.md fm=true >}} title = 'Article 1' lastmod = 2023-10-19T00:40:04-07:00 {{< /code-toggle >}} The last modification date is a [time.Time] value. Format and localize the value with the [`time.Format`] function, or use it with any of the [time methods]. ```go-html-template {{ .Lastmod | time.Format ":date_medium" }} → Oct 19, 2023 ``` In the example above we explicitly set the last modification date in front matter. With Hugo's default configuration, the `Lastmod` method returns the front matter value. This behavior is configurable, allowing you to: - Set the last modification date to the Author Date of the last Git commit for that file. See [`GitInfo`] for details. - Set fallback values if the last modification date is not defined in front matter. Learn more about [date configuration]. [`gitinfo`]: /methods/page/gitinfo/ [`time.format`]: /functions/time/format/ [date configuration]: /configuration/front-matter/#dates [time methods]: /methods/time/ [time.time]: https://pkg.go.dev/time#Time gohugoio-hugo-6abdaca/docs/content/en/methods/page/Layout.md000066400000000000000000000016151507671574500243230ustar00rootroot00000000000000--- title: Layout description: Returns the layout for the given page as defined in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Layout] --- Specify the `layout` field in front matter to target a particular template. See [details]. [details]: /templates/lookup-order/#target-a-template {{< code-toggle file=content/contact.md fm=true >}} title = 'Contact' layout = 'contact' {{< /code-toggle >}} Hugo will render the page using contact.html. ```text layouts/ ├── baseof.html ├── contact.html ├── home.html ├── page.html ├── section.html ├── taxonomy.html └── term.html ``` Although rarely used within a template, you can access the value with: ```go-html-template {{ .Layout }} ``` The `Layout` method returns an empty string if the `layout` field in front matter is not defined. gohugoio-hugo-6abdaca/docs/content/en/methods/page/Len.md000066400000000000000000000004001507671574500235530ustar00rootroot00000000000000--- title: Len description: Returns the length, in bytes, of the rendered content of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGE.Len] --- ```go-html-template {{ .Len }} → 42 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/LinkTitle.md000066400000000000000000000015311507671574500247420ustar00rootroot00000000000000--- title: LinkTitle description: Returns the link title of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.LinkTitle] --- The `LinkTitle` method returns the `linkTitle` field as defined in front matter, falling back to the value returned by the [`Title`] method. [`Title`]: /methods/page/title/ {{< code-toggle file=content/articles/healthy-desserts.md fm=true >}} title = 'Seventeen delightful recipes for healthy desserts' linkTitle = 'Dessert recipes' {{< /code-toggle >}} ```go-html-template {{ .LinkTitle }} → Dessert recipes ``` As demonstrated above, defining a link title in front matter is advantageous when the page title is long. Use it when generating anchor elements in your templates: ```go-html-template {{ .LinkTitle }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Next.md000066400000000000000000000004531507671574500237630ustar00rootroot00000000000000--- title: Next description: Returns the next page in a site's collection of regular pages, relative to the current page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.Next] --- {{% include "/_common/methods/page/next-and-prev.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/page/NextInSection.md000066400000000000000000000004721507671574500256000ustar00rootroot00000000000000--- title: NextInSection description: Returns the next regular page in a section, relative to the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.NextInSection] --- {{% include "/_common/methods/page/nextinsection-and-previnsection.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/page/OutputFormats.md000066400000000000000000000020561507671574500257020ustar00rootroot00000000000000--- title: OutputFormats description: Returns a slice of OutputFormat objects, each representing one of the output formats enabled for the given page. categories: [] keywords: [] params: functions_and_methods: returnType: '[]OutputFormat' signatures: [PAGE.OutputFormats] --- {{% glossary-term "output format" %}} The `OutputFormats` method on a `Page` object returns a slice of `OutputFormat` objects, each representing one of the output formats enabled for the given page. See [details](/configuration/output-formats/). ## Methods {{% include "/_common/methods/page/output-format-methods.md" %}} ## Example To link to the RSS feed for the current page: ```go-html-template {{ with .OutputFormats.Get "rss" }} RSS Feed {{ end }} ``` On the site's home page, Hugo renders this to: ```html RSS Feed ``` Please see the [link to output formats] section to understand the importance of the construct above. [link to output formats]: /configuration/output-formats/#link-to-output-formats gohugoio-hugo-6abdaca/docs/content/en/methods/page/Page.md000066400000000000000000000021751507671574500237240ustar00rootroot00000000000000--- title: Page description: Returns the Page object of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.Page] --- This is a convenience method, useful within _partial_ templates that are called from both _shortcode_ and other template types. ```go-html-template {file="layouts/_shortcodes/foo.html"} {{ partial "my-partial.html" . }} ``` When the _shortcode_ template calls the _partial_ template, it passes the current [context](g) (the dot). The context includes identifiers such as `Page`, `Params`, `Inner`, and `Name`. ```go-html-template {file="layouts/page.html"} {{ partial "my-partial.html" . }} ``` When the _page_ template calls the _partial_ template, it also passes the current context (the dot). But in this case, the dot _is_ the `Page` object. ```go-html-template {file="layouts/_partials/my-partial.html"} The page title is: {{ .Page.Title }} ``` To handle both scenarios, the _partial_ template must be able to access the `Page` object with `Page.Page`. > [!note] > And yes, that means you can do `.Page.Page.Page.Page.Title` too. > > But don't. gohugoio-hugo-6abdaca/docs/content/en/methods/page/Pages.md000066400000000000000000000045221507671574500241050ustar00rootroot00000000000000--- title: Pages description: Returns a collection of regular pages within the current section, and section pages of immediate descendant sections. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGE.Pages] --- The `Pages` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g), in the [default sort order](g). Range through the page collection in your template: ```go-html-template {{ range .Pages.ByTitle }}

        {{ .Title }}

        {{ end }} ``` Consider this content structure: ```text content/ ├── lessons/ │ ├── lesson-1/ │ │ ├── _index.md │ │ ├── part-1.md │ │ └── part-2.md │ ├── lesson-2/ │ │ ├── resources/ │ │ │ ├── task-list.md │ │ │ └── worksheet.md │ │ ├── _index.md │ │ ├── part-1.md │ │ └── part-2.md │ ├── _index.md │ ├── grading-policy.md │ └── lesson-plan.md ├── _index.md ├── contact.md └── legal.md ``` When rendering the home page, the `Pages` method returns: contact.md legal.md lessons/_index.md When rendering the lessons page, the `Pages` method returns: lessons/grading-policy.md lessons/lesson-plan.md lessons/lesson-1/_index.md lessons/lesson-2/_index.md When rendering lesson-1, the `Pages` method returns: lessons/lesson-1/part-1.md lessons/lesson-1/part-2.md When rendering lesson-2, the `Pages` method returns: lessons/lesson-2/part-1.md lessons/lesson-2/part-2.md lessons/lesson-2/resources/task-list.md lessons/lesson-2/resources/worksheet.md In the last example, the collection includes pages in the resources subdirectory. That directory is not a [section](g)---it does not contain an `_index.md` file. Its contents are part of the lesson-2 section. > [!note] > When used with a `Site` object, the `Pages` method recursively returns all pages within the site. See [details]. ```go-html-template {{ range .Site.Pages.ByTitle }}

        {{ .Title }}

        {{ end }} ``` [details]: /methods/site/pages/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Paginate.md000066400000000000000000000034771507671574500246060ustar00rootroot00000000000000--- title: Paginate description: Paginates a collection of pages. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pager signatures: ['PAGE.Paginate COLLECTION [N]'] --- Pagination is the process of splitting a list page into two or more pagers, where each pager contains a subset of the page collection and navigation links to other pagers. By default, the number of elements on each pager is determined by your [site configuration]. The default is `10`. Override that value by providing a second argument, an integer, when calling the `Paginate` method. > [!note] > There is also a `Paginator` method on `Page` objects, but it can neither filter nor sort the page collection. > > The `Paginate` method is more flexible. You can invoke pagination in [home], [section], [taxonomy], and [term] templates. ```go-html-template {file="layouts/section.html"} {{ $pages := where .Site.RegularPages "Section" "articles" }} {{ $pages = $pages.ByTitle }} {{ range (.Paginate $pages 7).Pages }}

        {{ .Title }}

        {{ end }} {{ partial "pagination.html" . }} ``` In the example above, we: 1. Build a page collection 1. Sort the collection by title 1. Paginate the collection, with 7 elements per pager 1. Range over the paginated page collection, rendering a link to each page 1. Call the embedded pagination template to create navigation links between pagers > [!note] > Please note that the results of pagination are cached. Once you have invoked either the `Paginator` or `Paginate` method, the paginated collection is immutable. Additional invocations of these methods will have no effect. [home]: /templates/types/#home [section]: /templates/types/#section [site configuration]: /configuration/pagination/ [taxonomy]: /templates/types/#taxonomy [term]: /templates/types/#term gohugoio-hugo-6abdaca/docs/content/en/methods/page/Paginator.md000066400000000000000000000033141507671574500247700ustar00rootroot00000000000000--- title: Paginator description: Paginates the collection of regular pages received in context. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pager signatures: [PAGE.Paginator] --- Pagination is the process of splitting a list page into two or more pagers, where each pager contains a subset of the page collection and navigation links to other pagers. The number of elements on each pager is determined by your [site configuration]. The default is `10`. You can invoke pagination in [home], [section], [taxonomy], and [term] templates. Each of these receives a collection of regular pages in [context](g). When you invoke the `Paginator` method, it paginates the page collection received in context. ```go-html-template {file="layouts/section.html"} {{ range .Paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ partial "pagination.html" . }} ``` In the example above, the embedded pagination template creates navigation links between pagers. > [!note] > Although simple to invoke, with the `Paginator` method you can neither filter nor sort the page collection. It acts upon the page collection received in context. > > The [`Paginate`] method is more flexible, and strongly recommended. > [!note] > Please note that the results of pagination are cached. Once you have invoked either the `Paginator` or `Paginate` method, the paginated collection is immutable. Additional invocations of these methods will have no effect. [home]: /templates/types/#home [section]: /templates/types/#section [site configuration]: /configuration/pagination/ [taxonomy]: /templates/types/#taxonomy [term]: /templates/types/#term [`Paginate`]: /methods/page/paginate/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Param.md000066400000000000000000000026251507671574500241100ustar00rootroot00000000000000--- title: Param description: Returns a page parameter with the given key, falling back to a site parameter if present. categories: [] keywords: [] params: functions_and_methods: returnType: any signatures: [PAGE.Param KEY] aliases: [/functions/param] --- The `Param` method on a `Page` object looks for the given `KEY` in page parameters, and returns the corresponding value. If it cannot find the `KEY` in page parameters, it looks for the `KEY` in site parameters. If it cannot find the `KEY` in either location, the `Param` method returns `nil`. Site and theme developers commonly set parameters at the site level, allowing content authors to override those parameters at the page level. For example, to show a table of contents on every page, but allow authors to hide the table of contents as needed: Configuration: {{< code-toggle file=hugo >}} [params] display_toc = true {{< /code-toggle >}} Content: {{< code-toggle file=content/example.md fm=true >}} title = 'Example' date = 2023-01-01 draft = false [params] display_toc = false {{< /code-toggle >}} Template: ```go-html-template {{ if .Param "display_toc" }} {{ .TableOfContents }} {{ end }} ``` The `Param` method returns the value associated with the given `KEY`, regardless of whether the value is truthy or falsy. If you need to ignore falsy values, use this construct instead: ```go-html-template {{ or .Params.foo site.Params.foo }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Params.md000066400000000000000000000024511507671574500242700ustar00rootroot00000000000000--- title: Params description: Returns a map of custom parameters as defined in the front matter of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Params signatures: [PAGE.Params] --- By way of example, consider this front matter: {{< code-toggle file=content/annual-conference.md fm=true >}} title = 'Annual conference' date = 2023-10-17T15:11:37-07:00 [params] display_related = true key-with-hyphens = 'must use index function' [params.author] email = 'jsmith@example.org' name = 'John Smith' {{< /code-toggle >}} The `title` and `date` fields are standard [front matter fields], while the other fields are user-defined. Access the custom fields by [chaining](g) the [identifiers](g) when needed: ```go-html-template {{ .Params.display_related }} → true {{ .Params.author.email }} → jsmith@example.org {{ .Params.author.name }} → John Smith ``` In the template example above, each of the keys is a valid identifier. For example, none of the keys contains a hyphen. To access a key that is not a valid identifier, use the [`index`] function: ```go-html-template {{ index .Params "key-with-hyphens" }} → must use index function ``` [`index`]: /functions/collections/indexfunction/ [front matter fields]: /content-management/front-matter/#fields gohugoio-hugo-6abdaca/docs/content/en/methods/page/Parent.md000066400000000000000000000030541507671574500242760ustar00rootroot00000000000000--- title: Parent description: Returns the Page object of the parent section of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.Parent] --- {{% glossary-term section %}} > [!note] > The parent section of a regular page is the [current section]. Consider this content structure: ```text content/ ├── auctions/ │ ├── 2023-11/ │ │ ├── _index.md <-- parent: auctions │ │ ├── auction-1.md │ │ └── auction-2.md <-- parent: 2023-11 │ ├── 2023-12/ │ │ ├── _index.md │ │ ├── auction-3.md │ │ └── auction-4.md │ ├── _index.md <-- parent: home │ ├── bidding.md │ └── payment.md <-- parent: auctions ├── books/ │ ├── _index.md <-- parent: home │ ├── book-1.md │ └── book-2.md <-- parent: books ├── films/ │ ├── _index.md <-- parent: home │ ├── film-1.md │ └── film-2.md <-- parent: films └── _index.md <-- parent: nil ``` In the example above, note the parent section of the home page is nil. Code defensively by verifying existence of the parent section before calling methods on its `Page` object. To create a link to the parent section page of the current page: ```go-html-template {{ with .Parent }} {{ .LinkTitle }} {{ end }} ``` [current section]: /methods/page/currentsection/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Path.md000066400000000000000000000103361507671574500237420ustar00rootroot00000000000000--- title: Path description: Returns the logical path of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Path] --- {{< new-in 0.123.0 />}} The `Path` method on a `Page` object returns the logical path of the given page, regardless of whether the page is backed by a file. {{% glossary-term "logical path" %}} ```go-html-template {{ .Path }} → /posts/post-1 ``` > [!note] > Beginning with the release of [v0.92.0] in January 2022, Hugo emitted a warning whenever calling the `Path` method. The warning indicated that this method would change in a future release. > > The meaning of, and value returned by, the `Path` method on a `Page` object changed with the release of [v0.123.0] in February 2024. The value returned by the `Path` method on a `Page` object is independent of content format, language, and URL modifiers such as the `slug` and `url` front matter fields. ## Examples ### Monolingual site Note that the logical path is independent of content format and URL modifiers. File path|Front matter slug|Logical path :--|:--|:-- `content/_index.md`||`/` `content/posts/_index.md`||`/posts` `content/posts/post-1.md`|`foo`|`/posts/post-1` `content/posts/post-2.html`|`bar`|`/posts/post-2` ### Multilingual site Note that the logical path is independent of content format, language identifiers, and URL modifiers. File path|Front matter slug|Logical path :--|:--|:-- `content/_index.en.md`||`/` `content/_index.de.md`||`/` `content/posts/_index.en.md`||`/posts` `content/posts/_index.de.md`||`/posts` `content/posts/posts-1.en.md`|`foo`|`/posts/post-1` `content/posts/posts-1.de.md`|`foo`|`/posts/post-1` `content/posts/posts-2.en.html`|`bar`|`/posts/post-2` `content/posts/posts-2.de.html`|`bar`|`/posts/post-2` ### Pages not backed by a file The `Path` method on a `Page` object returns a value regardless of whether the page is backed by a file. ```text content/ └── posts/ └── post-1.md <-- front matter: tags = ['hugo'] ``` When you build the site: ```text public/ ├── posts/ │ ├── post-1/ │ │ └── index.html .Page.Path = /posts/post-1 │ └── index.html .Page.Path = /posts ├── tags/ │ ├── hugo/ │ │ └── index.html .Page.Path = /tags/hugo │ └── index.html .Page.Path = /tags └── index.html .Page.Path = / ``` ## Finding pages These methods, functions, and shortcodes use the logical path to find the given page: Methods|Functions|Shortcodes :--|:--|:-- [`Site.GetPage`]|[`urls.Ref`]|[`ref`] [`Page.GetPage`]|[`urls.RelRef`]|[`relref`] [`Page.Ref`]| |  [`Page.RelRef`]| |  [`Shortcode.Ref`]| |  [`Shortcode.RelRef`]| |  > [!note] > Specify the logical path when using any of these methods, functions, or shortcodes. If you include a file extension or language identifier, Hugo will strip these values before finding the page in the logical tree. ## Logical tree Just as file paths form a file tree, logical paths form a logical tree. A file tree: ```text content/ └── s1/ ├── p1/ │ └── index.md └── p2.md ``` The same content represented as a logical tree: ```text content/ └── s1/ ├── p1 └── p2 ``` A key difference between these trees is the relative path from p1 to p2: - In the file tree, the relative path from p1 to p2 is `../p2.md` - In the logical tree, the relative path is `p2` > [!note] > Remember to use the logical path when using any of the methods, functions, or shortcodes listed in the previous section. If you include a file extension or language identifier, Hugo will strip these values before finding the page in the logical tree. [`Page.GetPage`]: /methods/page/getpage/ [`Page.Ref`]: /methods/page/ref/ [`Page.RelRef`]: /methods/page/relref/ [`ref`]: /shortcodes/ref/ [`relref`]: /shortcodes/relref/ [`Shortcode.Ref`]: /methods/shortcode/ref [`Shortcode.RelRef`]: /methods/shortcode/relref [`Site.GetPage`]: /methods/site/getpage/ [`urls.Ref`]: /functions/urls/ref/ [`urls.RelRef`]: /functions/urls/relref/ [v0.123.0]: https://github.com/gohugoio/hugo/releases/tag/v0.123.0 [v0.92.0]: https://github.com/gohugoio/hugo/releases/tag/v0.92.0 gohugoio-hugo-6abdaca/docs/content/en/methods/page/Permalink.md000066400000000000000000000007171507671574500247720ustar00rootroot00000000000000--- title: Permalink description: Returns the permalink of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Permalink] --- Site configuration: {{< code-toggle file=hugo >}} title = 'Documentation' baseURL = 'https://example.org/docs/' {{< /code-toggle >}} Template: ```go-html-template {{ $page := .Site.GetPage "/about" }} {{ $page.Permalink }} → https://example.org/docs/about/ ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Plain.md000066400000000000000000000014151507671574500241070ustar00rootroot00000000000000--- title: Plain description: Returns the rendered content of the given page, removing all HTML tags. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Plain] --- The `Plain` method on a `Page` object renders Markdown and [shortcodes](g) to HTML, then strips the HTML [tags]. It does not strip HTML [entities]. To prevent Go's [html/template] package from escaping HTML entities, pass the result through the [`htmlUnescape`] function. ```go-html-template {{ .Plain | htmlUnescape }} ``` [html/template]: https://pkg.go.dev/html/template [entities]: https://developer.mozilla.org/en-US/docs/Glossary/Entity [tags]: https://developer.mozilla.org/en-US/docs/Glossary/Tag [`htmlUnescape`]: /functions/transform/htmlunescape/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/PlainWords.md000066400000000000000000000020041507671574500251210ustar00rootroot00000000000000--- title: PlainWords description: Calls the Plain method, splits the result into a slice of words, and returns the slice. categories: [] keywords: [] params: functions_and_methods: returnType: '[]string' signatures: [PAGE.PlainWords] --- The `PlainWords` method on a `Page` object calls the [`Plain`] method, then uses Go's [`strings.Fields`] function to split the result into words. > [!note] > `Fields` splits the string `s` around each instance of one or more consecutive whitespace characters, as defined by [`unicode.IsSpace`], returning a slice of substrings of `s` or an empty slice if `s` contains only whitespace. As a result, elements within the slice may contain leading or trailing punctuation. ```go-html-template {{ .PlainWords }} ``` To determine the approximate number of unique words on a page: ```go-html-template {{ .PlainWords | uniq }} → 42 ``` [`Plain`]: /methods/page/plain/ [`strings.Fields`]: https://pkg.go.dev/strings#Fields [`unicode.IsSpace`]: https://pkg.go.dev/unicode#IsSpace gohugoio-hugo-6abdaca/docs/content/en/methods/page/Prev.md000066400000000000000000000004571507671574500237650ustar00rootroot00000000000000--- title: Prev description: Returns the previous page in a site's collection of regular pages, relative to the current page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.Prev] --- {{% include "/_common/methods/page/next-and-prev.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/page/PrevInSection.md000066400000000000000000000004761507671574500256020ustar00rootroot00000000000000--- title: PrevInSection description: Returns the previous regular page in a section, relative to the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGE.PrevInSection] --- {{% include "/_common/methods/page/nextinsection-and-previnsection.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/page/PublishDate.md000066400000000000000000000023331507671574500252500ustar00rootroot00000000000000--- title: PublishDate description: Returns the publish date of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [PAGE.PublishDate] --- By default, Hugo excludes pages with future publish dates when building your site. To include future pages, use the `--buildFuture` command line flag. Set the publish date in front matter: {{< code-toggle file=content/news/article-1.md fm=true >}} title = 'Article 1' publishDate = 2023-10-19T00:40:04-07:00 {{< /code-toggle >}} The publish date is a [time.Time] value. Format and localize the value with the [`time.Format`] function, or use it with any of the [time methods]. ```go-html-template {{ .PublishDate | time.Format ":date_medium" }} → Oct 19, 2023 ``` In the example above we explicitly set the publish date in front matter. With Hugo's default configuration, the `PublishDate` method returns the front matter value. This behavior is configurable, allowing you to set fallback values if the publish date is not defined in front matter. See [details]. [`time.Format`]: /functions/time/format/ [details]: /configuration/front-matter/#dates [time methods]: /methods/time/ [time.Time]: https://pkg.go.dev/time#Time gohugoio-hugo-6abdaca/docs/content/en/methods/page/RawContent.md000066400000000000000000000012231507671574500251250ustar00rootroot00000000000000--- title: RawContent description: Returns the raw content of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.RawContent] --- The `RawContent` method on a `Page` object returns the raw content. The raw content does not include front matter. ```go-html-template {{ .RawContent }} ``` This is useful when rendering a page in a plain text [output format](g). > [!note] > [Shortcodes](g) within the content are not rendered. To get the raw content with shortcodes rendered, use the [`RenderShortcodes`] method on a `Page` object. [`RenderShortcodes`]: /methods/page/rendershortcodes/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/ReadingTime.md000066400000000000000000000025341507671574500252370ustar00rootroot00000000000000--- title: ReadingTime description: Returns the estimated reading time, in minutes, for the given page. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGE.ReadingTime] --- The estimated reading time is calculated by dividing the number of words in the content by the reading speed. By default, Hugo assumes a reading speed of 212 words per minute. For CJK languages, it assumes 500 words per minute. ```go-html-template {{ printf "Estimated reading time: %d minutes" .ReadingTime }} ``` Reading speed varies by language. Create language-specific estimated reading times on your multilingual site using site parameters. {{< code-toggle file=hugo >}} [languages] [languages.de] contentDir = 'content/de' languageCode = 'de-DE' languageName = 'Deutsch' weight = 2 [languages.de.params] reading_speed = 179 [languages.en] contentDir = 'content/en' languageCode = 'en-US' languageName = 'English' weight = 1 [languages.en.params] reading_speed = 228 {{< /code-toggle >}} Then in your template: ```go-html-template {{ $readingTime := div (float .WordCount) .Site.Params.reading_speed }} {{ $readingTime = math.Ceil $readingTime }} ``` We cast the `.WordCount` to a float to obtain a float when we divide by the reading speed. Then round up to the nearest integer. gohugoio-hugo-6abdaca/docs/content/en/methods/page/Ref.md000066400000000000000000000016641507671574500235660ustar00rootroot00000000000000--- title: Ref description: Returns the absolute URL of the page with the given path, language, and output format. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Ref OPTIONS] --- ## Usage The `Ref` method accepts a single argument: an options map. ## Options {{% include "_common/ref-and-relref-options.md" %}} ## Examples The following examples show the rendered output for a page on the English version of the site: ```go-html-template {{ $opts := dict "path" "/books/book-1" }} {{ .Ref $opts }} → https://example.org/en/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" }} {{ .Ref $opts }} → https://example.org/de/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" "outputFormat" "json" }} {{ .Ref $opts }} → https://example.org/de/books/book-1/index.json ``` ## Error handling {{% include "_common/ref-and-relref-error-handling.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/page/RegularPages.md000066400000000000000000000044411507671574500254270ustar00rootroot00000000000000--- title: RegularPages description: Returns a collection of regular pages within the current section. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGE.RegularPages] --- The `RegularPages` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g), in the [default sort order](g). Range through the page collection in your template: ```go-html-template {{ range .RegularPages.ByTitle }}

        {{ .Title }}

        {{ end }} ``` Consider this content structure: ```text content/ ├── lessons/ │ ├── lesson-1/ │ │ ├── _index.md │ │ ├── part-1.md │ │ └── part-2.md │ ├── lesson-2/ │ │ ├── resources/ │ │ │ ├── task-list.md │ │ │ └── worksheet.md │ │ ├── _index.md │ │ ├── part-1.md │ │ └── part-2.md │ ├── _index.md │ ├── grading-policy.md │ └── lesson-plan.md ├── _index.md ├── contact.md └── legal.md ``` When rendering the home page, the `RegularPages` method returns: contact.md legal.md When rendering the lessons page, the `RegularPages` method returns: lessons/grading-policy.md lessons/lesson-plan.md When rendering lesson-1, the `RegularPages` method returns: lessons/lesson-1/part-1.md lessons/lesson-1/part-2.md When rendering lesson-2, the `RegularPages` method returns: lessons/lesson-2/part-1.md lessons/lesson-2/part-2.md lessons/lesson-2/resources/task-list.md lessons/lesson-2/resources/worksheet.md In the last example, the collection includes pages in the resources subdirectory. That directory is not a [section](g)---it does not contain an `_index.md` file. Its contents are part of the lesson-2 section. > [!note] > When used with the `Site` object, the `RegularPages` method recursively returns all regular pages within the site. See [details]. ```go-html-template {{ range .Site.RegularPages.ByTitle }}

        {{ .Title }}

        {{ end }} ``` [details]: /methods/site/regularpages/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/RegularPagesRecursive.md000066400000000000000000000046651507671574500273270ustar00rootroot00000000000000--- title: RegularPagesRecursive description: Returns a collection of regular pages within the current section, and regular pages within all descendant sections. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGE.RegularPagesRecursive] --- The `RegularPagesRecursive` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g), in the [default sort order](g). Range through the page collection in your template: ```go-html-template {{ range .RegularPagesRecursive.ByTitle }}

        {{ .Title }}

        {{ end }} ``` Consider this content structure: ```text content/ ├── lessons/ │ ├── lesson-1/ │ │ ├── _index.md │ │ ├── part-1.md │ │ └── part-2.md │ ├── lesson-2/ │ │ ├── resources/ │ │ │ ├── task-list.md │ │ │ └── worksheet.md │ │ ├── _index.md │ │ ├── part-1.md │ │ └── part-2.md │ ├── _index.md │ ├── grading-policy.md │ └── lesson-plan.md ├── _index.md ├── contact.md └── legal.md ``` When rendering the home page, the `RegularPagesRecursive` method returns: contact.md lessons/grading-policy.md legal.md lessons/lesson-plan.md lessons/lesson-2/part-1.md lessons/lesson-1/part-1.md lessons/lesson-2/part-2.md lessons/lesson-1/part-2.md lessons/lesson-2/resources/task-list.md lessons/lesson-2/resources/worksheet.md When rendering the lessons page, the `RegularPagesRecursive` method returns: lessons/grading-policy.md lessons/lesson-plan.md lessons/lesson-2/part-1.md lessons/lesson-1/part-1.md lessons/lesson-2/part-2.md lessons/lesson-1/part-2.md lessons/lesson-2/resources/task-list.md lessons/lesson-2/resources/worksheet.md When rendering lesson-1, the `RegularPagesRecursive` method returns: lessons/lesson-1/part-1.md lessons/lesson-1/part-2.md When rendering lesson-2, the `RegularPagesRecursive` method returns: lessons/lesson-2/part-1.md lessons/lesson-2/part-2.md lessons/lesson-2/resources/task-list.md lessons/lesson-2/resources/worksheet.md > [!note] > The `RegularPagesRecursive` method is not available on a `Site` object. gohugoio-hugo-6abdaca/docs/content/en/methods/page/RelPermalink.md000066400000000000000000000007161507671574500254340ustar00rootroot00000000000000--- title: RelPermalink description: Returns the relative permalink of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.RelPermalink] --- Site configuration: {{< code-toggle file=hugo >}} title = 'Documentation' baseURL = 'https://example.org/docs/' {{< /code-toggle >}} Template: ```go-html-template {{ $page := .Site.GetPage "/about" }} {{ $page.RelPermalink }} → /docs/about/ ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/RelRef.md000066400000000000000000000016151507671574500242250ustar00rootroot00000000000000--- title: RelRef description: Returns the relative URL of the page with the given path, language, and output format. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.RelRef OPTIONS] --- ## Usage The `RelRef` method accepts a single argument: an options map. ## Options {{% include "_common/ref-and-relref-options.md" %}} ## Examples The following examples show the rendered output for a page on the English version of the site: ```go-html-template {{ $opts := dict "path" "/books/book-1" }} {{ .RelRef $opts }} → /en/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" }} {{ .RelRef $opts }} → /de/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" "outputFormat" "json" }} {{ .RelRef $opts }} → /de/books/book-1/index.json ``` ## Error handling {{% include "_common/ref-and-relref-error-handling.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/page/Render.md000066400000000000000000000036071507671574500242700ustar00rootroot00000000000000--- title: Render description: Renders the given template with the given page as context. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [PAGE.Render NAME] aliases: [/functions/render] --- Typically used when ranging over a page collection, the `Render` method on a `Page` object renders the given template, passing the given page as context. ```go-html-template {{ range site.RegularPages }}

        {{ .LinkTitle }}

        {{ .Render "summary" }} {{ end }} ``` In the example above, note that the template ("summary") is identified by its file name without directory or extension. Although similar to the [`partial`] function, there are key differences. `Render` method|`partial` function :--|:-- The `Page` object is automatically passed to the given template. You cannot pass additional context.|You must specify the context, allowing you to pass a combination of objects, slices, maps, and scalars. The path to the template is determined by the [content type](g).|You must specify the path to the template, relative to the `layouts/_partials` directory. Consider this layout structure: ```text layouts/ ├── books/ │ └── li.html <-- used when content type is "books" ├── baseof.html ├── home.html ├── li.html <-- used for other content types ├── page.html ├── section.html ├── taxonomy.html └── term.html ``` And this template: ```go-html-template
          {{ range site.RegularPages.ByDate }} {{ .Render "li" }} {{ end }}
        ``` When rendering content of type "books" the `Render` method calls: ```text layouts/books/li.html ``` For all other content types the `Render` methods calls: ```text layouts/li.html ``` See [content views] for more examples. [content views]: /templates/types/#content-view [`partial`]: /functions/partials/include/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/RenderShortcodes.md000066400000000000000000000051051507671574500263210ustar00rootroot00000000000000--- title: RenderShortcodes description: Renders all shortcodes in the content of the given page, preserving the surrounding markup. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [PAGE.RenderShortcodes] --- Use this method in _shortcode_ templates to compose a page from multiple content files, while preserving a global context for footnotes and the table of contents. For example: ```go-html-template {file="layouts/_shortcodes/include.html" copy=true} {{ with .Get 0 }} {{ with $.Page.GetPage . }} {{- .RenderShortcodes }} {{ else }} {{ errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }} {{ end }} {{ else }} {{ errorf "The %q shortcode requires a positional parameter indicating the logical path of the file to include. See %s" .Name .Position }} {{ end }} ``` Then call the shortcode in your Markdown: ```text {file="content/about.md"} {{%/* include "/snippets/services" */%}} {{%/* include "/snippets/values" */%}} {{%/* include "/snippets/leadership" */%}} ``` Each of the included Markdown files can contain calls to other shortcodes. ## Shortcode notation In the example above it's important to understand the difference between the two delimiters used when calling a shortcode: - `{{}}` tells Hugo that the rendered shortcode does not need further processing. For example, the shortcode content is HTML. - `{{%/* myshortcode */%}}` tells Hugo that the rendered shortcode needs further processing. For example, the shortcode content is Markdown. Use the latter for the "include" shortcode described above. ## Further explanation To understand what is returned by the `RenderShortcodes` method, consider this content file ```text {file="content/about.md"} +++ title = 'About' date = 2023-10-07T12:28:33-07:00 +++ {{}} An *emphasized* word. ``` With this template code: ```go-html-template {{ $p := site.GetPage "/about" }} {{ $p.RenderShortcodes }} ``` Hugo renders this:; ```html https://example.org/privacy/ An *emphasized* word. ``` Note that the shortcode within the content file was rendered, but the surrounding Markdown was preserved. ## Limitations The primary use case for `.RenderShortcodes` is inclusion of Markdown content. If you try to use `.RenderShortcodes` inside `HTML` blocks when inside Markdown, you will get a warning similar to this: ```text WARN .RenderShortcodes detected inside HTML block in "/content/mypost.md"; this may not be what you intended ... ``` The above warning can be turned off is this is what you really want. gohugoio-hugo-6abdaca/docs/content/en/methods/page/RenderString.md000066400000000000000000000025331507671574500254540ustar00rootroot00000000000000--- title: RenderString description: Renders markup to HTML. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: ['PAGE.RenderString [OPTIONS] MARKUP'] aliases: [/functions/renderstring] --- ```go-html-template {{ $s := "An *emphasized* word" }} {{ $s | .RenderString }} → An emphasized word ``` This method takes an optional map of options: display : (`string`) Specify either `inline` or `block`. If `inline`, removes surrounding `p` tags from short snippets. Default is `inline`. markup : (`string`) Specify a [markup identifier] for the provided markup. Default is the `markup` front matter value, falling back to the value derived from the page's file extension. Render with the default markup renderer: ```go-html-template {{ $s := "An *emphasized* word" }} {{ $s | .RenderString }} → An emphasized word {{ $opts := dict "display" "block" }} {{ $s | .RenderString $opts }} →

        An emphasized word

        ``` Render with [Pandoc]: ```go-html-template {{ $s := "H~2~O" }} {{ $opts := dict "markup" "pandoc" }} {{ $s | .RenderString $opts }} → H2O {{ $opts := dict "display" "block" "markup" "pandoc" }} {{ .RenderString $opts $s }} →

        H2O

        ``` [markup identifier]: /content-management/formats/#classification [pandoc]: https://pandoc.org/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Resources.md000066400000000000000000000062001507671574500250130ustar00rootroot00000000000000--- title: Resources description: Returns a collection of page resources. categories: [] keywords: [] params: functions_and_methods: returnType: resource.Resources signatures: [PAGE.Resources] --- The `Resources` method on a `Page` object returns a collection of page resources. A page resource is a file within a [page bundle](g). To work with global or remote resources, see the [`resources`] functions. ## Methods ### ByType (`resource.Resources`) Returns a collection of page resources of the given [media type], or nil if none found. The media type is typically one of `image`, `text`, `audio`, `video`, or `application`. ```go-html-template {{ range .Resources.ByType "image" }} {{ end }} ``` When working with global resources instead of page resources, use the [`resources.ByType`] function. ### Get (`resource.Resource`) Returns a page resource from the given path, or nil if none found. ```go-html-template {{ with .Resources.Get "images/a.jpg" }} {{ end }} ``` When working with global resources instead of page resources, use the [`resources.Get`] function. ### GetMatch (`resource.Resource`) Returns the first page resource from paths matching the given [glob](g) pattern, or nil if none found. ```go-html-template {{ with .Resources.GetMatch "images/*.jpg" }} {{ end }} ``` When working with global resources instead of page resources, use the [`resources.GetMatch`] function. ### Match (`resource.Resources`) Returns a collection of page resources from paths matching the given [glob](g) pattern, or nil if none found. ```go-html-template {{ range .Resources.Match "images/*.jpg" }} {{ end }} ``` When working with global resources instead of page resources, use the [`resources.Match`] function. ### Mount {{< new-in 0.140.0 />}} (`ResourceGetter`) Mounts the given resources from the two arguments base (`string`) to the given target path (`string`) and returns an object that implements [Get](#get). Note that leading slashes in target marks an absolute path. Relative target paths allows you to mount resources relative to another set, e.g. a [Page bundle](/content-management/page-bundles/): ```go-html-template {{ $common := resources.Match "/js/headlessui/*.*" }} {{ $importContext := (slice $.Page ($common.Mount "/js/headlessui" ".")) }} ``` This method is currently only useful in [js.Batch](/functions/js/batch/#import-context). ## Pattern matching With the `GetMatch` and `Match` methods, Hugo determines a match using a case-insensitive [glob](g) pattern. {{% include "/_common/glob-patterns.md" %}} [`resources.ByType`]: /functions/resources/ByType/ [`resources.GetMatch`]: /functions/resources/ByType/ [`resources.Get`]: /functions/resources/ByType/ [`resources.Match`]: /functions/resources/ByType/ [`resources`]: /functions/resources/ [media type]: https://en.wikipedia.org/wiki/Media_type gohugoio-hugo-6abdaca/docs/content/en/methods/page/Scratch.md000066400000000000000000000013671507671574500244410ustar00rootroot00000000000000--- title: Scratch description: Returns a "scratch pad" to store and manipulate data, scoped to the current page. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Scratch signatures: [PAGE.Scratch] expiryDate: 2026-11-18 # deprecated 2024-11-18 (soft) --- {{< deprecated-in 0.138.0 >}} Use the [`PAGE.Store`] method instead. This is a soft deprecation. This method will be removed in a future release, but the removal date has not been established. Although Hugo will not emit a warning if you continue to use this method, you should begin using `PAGE.Store` as soon as possible. Beginning with v0.138.0 the `PAGE.Scratch` method is aliased to `PAGE.Store`. [`PAGE.Store`]: /methods/page/store/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/page/Section.md000066400000000000000000000025201507671574500244460ustar00rootroot00000000000000--- title: Section description: Returns the name of the top-level section in which the given page resides. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Section] --- {{% glossary-term section %}} With this content structure: ```text content/ ├── lessons/ │ ├── math/ │ │ ├── _index.md │ │ ├── lesson-1.md │ │ └── lesson-2.md │ └── _index.md └── _index.md ``` When rendering lesson-1.md: ```go-html-template {{ .Section }} → lessons ``` In the example above "lessons" is the top-level section. The `Section` method is often used with the [`where`] function to build a page collection. ```go-html-template {{ range where .Site.RegularPages "Section" "lessons" }}

        {{ .LinkTitle }}

        {{ end }} ``` This is similar to using the [`Type`] method with the `where` function ```go-html-template {{ range where .Site.RegularPages "Type" "lessons" }}

        {{ .LinkTitle }}

        {{ end }} ``` However, if the `type` field in front matter has been defined on one or more pages, the page collection based on `Type` will be different than the page collection based on `Section`. [`where`]: /functions/collections/where/ [`Type`]: /methods/page/type/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Sections.md000066400000000000000000000033771507671574500246440ustar00rootroot00000000000000--- title: Sections description: Returns a collection of section pages, one for each immediate descendant section of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGE.Sections] --- The `Sections` method on a `Page` object is available to these [page kinds](g): `home`, `section`, and `taxonomy`. The templates for these page kinds receive a page [collection](g) in [context](g), in the [default sort order](g). With this content structure: ```text content/ ├── auctions/ │ ├── 2023-11/ │ │ ├── _index.md <-- front matter: weight = 202311 │ │ ├── auction-1.md │ │ └── auction-2.md │ ├── 2023-12/ │ │ ├── _index.md <-- front matter: weight = 202312 │ │ ├── auction-3.md │ │ └── auction-4.md │ ├── _index.md <-- front matter: weight = 30 │ ├── bidding.md │ └── payment.md ├── books/ │ ├── _index.md <-- front matter: weight = 20 │ ├── book-1.md │ └── book-2.md ├── films/ │ ├── _index.md <-- front matter: weight = 10 │ ├── film-1.md │ └── film-2.md └── _index.md ``` And this template: ```go-html-template {{ range .Sections.ByWeight }}

        {{ .LinkTitle }}

        {{ end }} ``` On the home page, Hugo renders: ```html

        Films

        Books

        Auctions

        ``` On the auctions page, Hugo renders: ```html

        Auctions in November 2023

        Auctions in December 2023

        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Site.md000066400000000000000000000004241507671574500237470ustar00rootroot00000000000000--- title: Site description: Returns the Site object. categories: [] keywords: [] params: functions_and_methods: returnType: page.siteWrapper signatures: [PAGE.Site] --- See [Site methods]. [Site methods]: /methods/site/ ```go-html-template {{ .Site.Title }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Sitemap.md000066400000000000000000000043751507671574500244560ustar00rootroot00000000000000--- title: Sitemap description: Returns the sitemap settings for the given page as defined in front matter, falling back to the sitemap settings as defined in the site configuration. categories: [] keywords: [] params: functions_and_methods: returnType: config.SitemapConfig signatures: [PAGE.Sitemap] --- Access to the `Sitemap` method on a `Page` object is restricted to [sitemap templates]. ## Methods ### ChangeFreq (`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#changefreqdef). ```go-html-template {{ .Sitemap.ChangeFreq }} ``` ### Disable {{< new-in 0.125.0 />}} (`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page. ```go-html-template {{ .Sitemap.Disable }} ``` ### Priority (`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0. With the default value of `-1` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#prioritydef). ```go-html-template {{ .Sitemap.Priority }} ``` ## Example With this site configuration: {{< code-toggle file=hugo >}} [sitemap] changeFreq = 'monthly' {{< /code-toggle >}} And this content: {{< code-toggle file=content/news.md fm=true >}} title = 'News' [sitemap] changeFreq = 'hourly' {{< /code-toggle >}} And this simplistic sitemap template: ```xml {file="layouts/sitemap.xml"} {{ printf "" | safeHTML }} {{ range .Pages }} {{ .Permalink }} {{ if not .Lastmod.IsZero }} {{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }} {{ end }} {{ with .Sitemap.ChangeFreq }} {{ . }} {{ end }} {{ end }} ``` The change frequency will be `hourly` for the news page, and `monthly` for other pages. [sitemap templates]: /templates/sitemap/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/Sites.md000066400000000000000000000026111507671574500241320ustar00rootroot00000000000000--- title: Sites description: Returns a collection of all Site objects, one for each language, ordered by language weight. categories: [] keywords: [] params: functions_and_methods: returnType: page.Sites signatures: [PAGE.Sites] --- This is a convenience method to access `.Site.Sites`. With this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = false [languages.de] languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.en] languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' title = 'Project Documentation' weight = 2 {{< /code-toggle >}} This template: ```go-html-template ``` Produces a list of links to each home page: ```html ``` To render a link to the home page of the site corresponding to the default content language: ```go-html-template {{ with .Sites.Default }} {{ .Title }} {{ end }} ``` This is equivalent to: ```go-html-template {{ with index .Sites 0 }} {{ .Title }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Slug.md000066400000000000000000000010171507671574500237540ustar00rootroot00000000000000--- title: Slug description: Returns the URL slug of the given page as defined in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Slug] --- {{< code-toggle file=content/recipes/spicy-tuna-hand-rolls.md fm=true >}} title = 'How to make spicy tuna hand rolls' slug = 'sushi' {{< /code-toggle >}} This page will be served from: https://example.org/recipes/sushi To get the slug value within a template: ```go-html-template {{ .Slug }} → sushi ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Store.md000066400000000000000000000027361507671574500241470ustar00rootroot00000000000000--- title: Store description: Returns a "scratch pad" to store and manipulate data, scoped to the current page. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Scratch signatures: [PAGE.Store] aliases: [/functions/store/,/extras/scratch/,/doc/scratch/,/functions/scratch] --- Use the `Store` method on a `Page` object to create a [scratch pad](g) to store and manipulate data, scoped to the current page. To create a scratch pad with a different [scope](g), refer to the [scope](#scope) section below. {{% include "_common/store-methods.md" %}} {{% include "_common/scratch-pad-scope.md" %}} ## Determinate values The `Store` method is often used to set scratch pad values within a _shortcode_ template, a _partial_ template called by a _shortcode_ template, or by a _render hook_ template. In all three cases, the scratch pad values are indeterminate until Hugo renders the page content. If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop](g) variable: ```go-html-template {{ $noop := .Content }} {{ .Store.Get "mykey" }} ``` You can also trigger content rendering with the `ContentWithoutSummary`, `FuzzyWordCount`, `Len`, `Plain`, `PlainWords`, `ReadingTime`, `Summary`, `Truncated`, and `WordCount` methods. For example: ```go-html-template {{ $noop := .WordCount }} {{ .Store.Get "mykey" }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Summary.md000066400000000000000000000026401507671574500245020ustar00rootroot00000000000000--- title: Summary description: Returns the summary of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [PAGE.Summary] --- You can define a [summary] manually, in front matter, or automatically. A manual summary takes precedence over a front matter summary, and a front matter summary takes precedence over an automatic summary. To list the pages in a section with a summary beneath each link: ```go-html-template {{ range .Pages }}

        {{ .LinkTitle }}

        {{ .Summary }} {{ end }} ``` Depending on content length and how you define the summary, the summary may be equivalent to the content itself. To determine whether the content length exceeds the summary length, use the [`Truncated`] method on a `Page` object. This is useful for conditionally rendering a “read more” link: ```go-html-template {{ range .Pages }}

        {{ .LinkTitle }}

        {{ .Summary }} {{ if .Truncated }} Read more... {{ end }} {{ end }} ``` > [!note] > The `Truncated` method returns `false` if you define the summary in front matter. [`Truncated`]: /methods/page/truncated [summary]: /content-management/summaries/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/TableOfContents.md000066400000000000000000000022461507671574500261010ustar00rootroot00000000000000--- title: TableOfContents description: Returns a table of contents for the given page. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [PAGE.TableOfContents] aliases: [/content-management/toc/] --- The `TableOfContents` method on a `Page` object returns an ordered or unordered list of the Markdown [ATX] and [setext] headings within the page content. [atx]: https://spec.commonmark.org/current/#atx-headings [setext]: https://spec.commonmark.org/current/#setext-headings This template code: ```go-html-template {{ .TableOfContents }} ``` Produces this HTML: ```html ``` By default, the `TableOfContents` method returns an unordered list of level 2 and level 3 headings. You can adjust this in your site configuration: {{< code-toggle file=hugo >}} [markup.tableOfContents] endLevel = 3 ordered = false startLevel = 2 {{< /code-toggle >}} gohugoio-hugo-6abdaca/docs/content/en/methods/page/Title.md000066400000000000000000000023511507671574500241250ustar00rootroot00000000000000--- title: Title description: Returns the title of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Title] --- With pages backed by a file, the `Title` method returns the `title` field as defined in front matter: {{< code-toggle file=content/about.md fm=true >}} title = 'About us' {{< /code-toggle >}} ```go-html-template {{ .Title }} → About us ``` When a page is not backed by a file, the value returned by the `Title` method depends on the page [kind](g). Page kind|Page title when the page is not backed by a file :--|:-- home|site title section|section name (capitalized and pluralized) taxonomy|taxonomy name (capitalized and pluralized) term|term name (capitalized and pluralized) You can disable automatic capitalization and pluralization in your site configuration: {{< code-toggle file=hugo >}} capitalizeListTitles = false pluralizeListTitles = false {{< /code-toggle >}} You can change the capitalization style in your site configuration to one of `ap`, `chicago`, `go`, `firstupper`, or `none`. For example: {{< code-toggle file=hugo >}} titleCaseStyle = "firstupper" {{< /code-toggle >}} See [details]. [details]: /configuration/all/#title-case-style gohugoio-hugo-6abdaca/docs/content/en/methods/page/TranslationKey.md000066400000000000000000000030541507671574500260140ustar00rootroot00000000000000--- title: TranslationKey description: Returns the translation key of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.TranslationKey] --- The translation key creates a relationship between all translations of a given page. The translation key is derived from the file path, or from the `translationKey` parameter if defined in front matter. With this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' [languages.en] contentDir = 'content/en' languageCode = 'en-US' languageName = 'English' weight = 1 [languages.de] contentDir = 'content/de' languageCode = 'de-DE' languageName = 'Deutsch' weight = 2 {{< /code-toggle >}} And this content: ```text content/ ├── de/ │ ├── books/ │ │ ├── buch-1.md │ │ └── book-2.md │ └── _index.md ├── en/ │ ├── books/ │ │ ├── book-1.md │ │ └── book-2.md │ └── _index.md └── _index.md ``` And this front matter: {{< code-toggle file=content/en/books/book-1.md fm=true >}} title = 'Book 1' translationKey = 'foo' {{< /code-toggle >}} {{< code-toggle file=content/de/books/buch-1.md fm=true >}} title = 'Buch 1' translationKey = 'foo' {{< /code-toggle >}} When rendering either either of the pages above: ```go-html-template {{ .TranslationKey }} → page/foo ``` If the front matter of Book 2, in both languages, does not include a translation key: ```go-html-template {{ .TranslationKey }} → page/books/book-2 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Translations.md000066400000000000000000000034271507671574500255320ustar00rootroot00000000000000--- title: Translations description: Returns all translations of the given page, excluding the current language, sorted by language weight. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGE.Translations] --- With this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' [languages.en] contentDir = 'content/en' languageCode = 'en-US' languageName = 'English' weight = 1 [languages.de] contentDir = 'content/de' languageCode = 'de-DE' languageName = 'Deutsch' weight = 2 [languages.fr] contentDir = 'content/fr' languageCode = 'fr-FR' languageName = 'Français' weight = 3 {{< /code-toggle >}} And this content: ```text content/ ├── de/ │ ├── books/ │ │ ├── book-1.md │ │ └── book-2.md │ └── _index.md ├── en/ │ ├── books/ │ │ ├── book-1.md │ │ └── book-2.md │ └── _index.md ├── fr/ │ ├── books/ │ │ └── book-1.md │ └── _index.md └── _index.md ``` And this template: ```go-html-template {{ with .Translations }} {{ end }} ``` Hugo will render this list on the "Book 1" page of the English site: ```html ``` Hugo will render this list on the "Book 2" page of the English site: ```html ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/Truncated.md000066400000000000000000000016431507671574500250000ustar00rootroot00000000000000--- title: Truncated description: Reports whether the content length exceeds the summary length. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGE.Truncated] --- You can define a [summary] manually, in front matter, or automatically. A manual summary takes precedence over a front matter summary, and a front matter summary takes precedence over an automatic summary. [summary]: /content-management/summaries/ The `Truncated` method returns `true` if the content length exceeds the summary length. This is useful for conditionally rendering a "read more" link: ```go-html-template {{ range .Pages }}

        {{ .LinkTitle }}

        {{ .Summary }} {{ if .Truncated }} Read more... {{ end }} {{ end }} ``` > [!note] > The `Truncated` method returns `false` if you define the summary in front matter. gohugoio-hugo-6abdaca/docs/content/en/methods/page/Type.md000066400000000000000000000025131507671574500237650ustar00rootroot00000000000000--- title: Type description: Returns the content type of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGE.Type] --- The `Type` method on a `Page` object returns the [content type](g) of the given page. The content type is defined by the `type` field in front matter, or inferred from the top-level directory name if the `type` field in front matter is not defined. With this content structure: ```text content/ ├── auction/ │ ├── _index.md │ ├── item-1.md │ └── item-2.md <-- front matter: type = books ├── books/ │ ├── _index.md │ ├── book-1.md │ └── book-2.md ├── films/ │ ├── _index.md │ ├── film-1.md │ └── film-2.md └── _index.md ``` To list the books, regardless of [section](g): ```go-html-template {{ range where .Site.RegularPages.ByTitle "Type" "books" }}

        {{ .Title }}

        {{ end }} ``` Hugo renders this to; ```html

        Book 1

        Book 2

        Item 2

        ``` The `type` field in front matter is also useful for targeting a template. See [details]. [details]: /templates/lookup-order/#target-a-template gohugoio-hugo-6abdaca/docs/content/en/methods/page/Weight.md000066400000000000000000000015301507671574500242710ustar00rootroot00000000000000--- title: Weight description: Returns the weight of the given page as defined in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGE.Weight] --- The `Weight` method on a `Page` object returns the [weight](g) of the given page as defined in front matter. {{< code-toggle file=content/recipes/sushi.md fm=true >}} title = 'How to make spicy tuna hand rolls' weight = 42 {{< /code-toggle >}} Page weight controls the position of a page within a collection that is sorted by weight. Assign weights using non-zero integers. Lighter items float to the top, while heavier items sink to the bottom. Unweighted or zero-weighted elements are placed at the end of the collection. Although rarely used within a template, you can access the value with: ```go-html-template {{ .Weight }} → 42 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/page/WordCount.md000066400000000000000000000006071507671574500247720ustar00rootroot00000000000000--- title: WordCount description: Returns the number of words in the content of the given page. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGE.WordCount] --- ```go-html-template {{ .WordCount }} → 103 ``` To round up to nearest multiple of 100, use the [`FuzzyWordCount`] method. [`FuzzyWordCount`]: /methods/page/fuzzywordcount/ gohugoio-hugo-6abdaca/docs/content/en/methods/page/_index.md000066400000000000000000000002271507671574500243120ustar00rootroot00000000000000--- title: Page methods linkTitle: Page description: Use these methods with a Page object. categories: [] keywords: [] aliases: [/variables/page/] --- gohugoio-hugo-6abdaca/docs/content/en/methods/pager/000077500000000000000000000000001507671574500227035ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/pager/First.md000066400000000000000000000015261507671574500243200ustar00rootroot00000000000000--- title: First description: Returns the first pager in the pager collection. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pager signatures: [PAGER.First] --- Use the `First` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ with .Prev }}
        • Previous
        • {{ end }} {{ with .Next }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/HasNext.md000066400000000000000000000027761507671574500246130ustar00rootroot00000000000000--- title: HasNext description: Reports whether there is a pager after the current pager. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGER.HasNext] --- Use the `HasNext` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ if .HasPrev }}
        • Previous
        • {{ end }} {{ if .HasNext }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` You can also write the above without using the `HasNext` method: ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ with .Prev }}
        • Previous
        • {{ end }} {{ with .Next }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/HasPrev.md000066400000000000000000000027771507671574500246120ustar00rootroot00000000000000--- title: HasPrev description: Reports whether there is a pager before the current pager. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [PAGER.HasPrev] --- Use the `HasPrev` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ if .HasPrev }}
        • Previous
        • {{ end }} {{ if .HasNext }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` You can also write the above without using the `HasPrev` method: ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ with .Prev }}
        • Previous
        • {{ end }} {{ with .Next }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/Last.md000066400000000000000000000015221507671574500241300ustar00rootroot00000000000000--- title: Last description: Returns the last pager in the pager collection. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pager signatures: [PAGER.Last] --- Use the `Last` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ with .Prev }}
        • Previous
        • {{ end }} {{ with .Next }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/Next.md000066400000000000000000000015221507671574500241430ustar00rootroot00000000000000--- title: Next description: Returns the next pager in the pager collection. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pager signatures: [PAGER.Next] --- Use the `Next` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ with .Prev }}
        • Previous
        • {{ end }} {{ with .Next }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/NumberOfElements.md000066400000000000000000000007571507671574500264500ustar00rootroot00000000000000--- title: NumberOfElements description: Returns the number of pages in the current pager. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGER.NumberOfElements] --- ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }} {{ .NumberOfElements }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/PageGroups.md000066400000000000000000000012511507671574500253000ustar00rootroot00000000000000--- title: PageGroups description: Returns the page groups in the current pager. categories: [] keywords: [] params: functions_and_methods: returnType: page.PagesGroup signatures: [PAGER.PageGroups] --- Use the `PageGroups` method with any of the [grouping methods]. [grouping methods]: /quick-reference/page-collections/#group ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate ($pages.GroupByDate "Jan 2006") }} {{ range $paginator.PageGroups }}

        {{ .Key }}

        {{ range .Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ end }} {{ partial "pagination.html" . }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/PageNumber.md000066400000000000000000000012071507671574500252520ustar00rootroot00000000000000--- title: PageNumber description: Returns the current pager's number within the pager collection. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGER.PageNumber] --- Use the `PageNumber` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/PageSize.md000066400000000000000000000006001507671574500247300ustar00rootroot00000000000000--- title: PageSize description: Returns the number of pages per pager. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGER.PageSize] expiryDate: 2026-06-09 # deprecated 2024-06-09 in v0.128.0 --- {{< deprecated-in 0.128.0 >}} Use [`PAGER.PagerSize`] instead. [`PAGER.PagerSize`]: /methods/pager/pagersize/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/pager/PagerSize.md000066400000000000000000000014031507671574500251140ustar00rootroot00000000000000--- title: PagerSize description: Returns the number of pages per pager. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGER.PagerSize] --- {{< new-in 0.128.0 />}} The number of pages per pager is determined by the optional second argument passed to the [`Paginate`] method, falling back to the `pagerSize` as defined in your [site configuration]. [`Paginate`]: /methods/page/paginate/ [site configuration]: /templates/pagination/#configuration ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }} {{ .PagerSize }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/Pagers.md000066400000000000000000000011421507671574500244440ustar00rootroot00000000000000--- title: Pagers description: Returns the pagers collection. categories: [] keywords: [] params: functions_and_methods: returnType: page.pagers signatures: [PAGER.Pagers] --- Use the `Pagers` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/Pages.md000066400000000000000000000006761507671574500242750ustar00rootroot00000000000000--- title: Pages description: Returns the pages in the current pager. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGER.Pages] --- ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ partial "pagination.html" . }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/Prev.md000066400000000000000000000015261507671574500241450ustar00rootroot00000000000000--- title: Prev description: Returns the previous pager in the pager collection. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pager signatures: [PAGER.Prev] --- Use the `Prev` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ with .Prev }}
        • Previous
        • {{ end }} {{ with .Next }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/TotalNumberOfElements.md000066400000000000000000000010011507671574500274330ustar00rootroot00000000000000--- title: TotalNumberOfElements description: Returns the number of pages in the pager collection. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGER.TotalNumberOfElements] --- ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }} {{ .TotalNumberOfElements }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/TotalPages.md000066400000000000000000000016311507671574500252710ustar00rootroot00000000000000--- title: TotalPages description: Returns the number of pagers in the pager collection. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGER.TotalPages] --- Use the `TotalPages` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}

        Pager {{ .PageNumber }} of {{ .TotalPages }}

          {{ with .First }}
        • First
        • {{ end }} {{ with .Prev }}
        • Previous
        • {{ end }} {{ with .Next }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/URL.md000066400000000000000000000015331507671574500236710ustar00rootroot00000000000000--- title: URL description: Returns the URL of the current pager relative to the site root. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [PAGER.URL] --- Use the `URL` method to build navigation between pagers. ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ with $paginator }}
          {{ with .First }}
        • First
        • {{ end }} {{ with .Prev }}
        • Previous
        • {{ end }} {{ with .Next }}
        • Next
        • {{ end }} {{ with .Last }}
        • Last
        • {{ end }}
        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pager/_index.md000066400000000000000000000002411507671574500244700ustar00rootroot00000000000000--- title: Pager methods linkTitle: Pager description: Use these methods with Pager objects when building navigation for a paginated list page. keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/methods/pages/000077500000000000000000000000001507671574500227045ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByDate.md000066400000000000000000000012621507671574500243770ustar00rootroot00000000000000--- title: ByDate description: Returns the given page collection sorted by date in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByDate] --- When sorting by date, the value is determined by your [site configuration], defaulting to the `date` field in front matter. [site configuration]: /configuration/front-matter/#dates ```go-html-template {{ range .Pages.ByDate }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Pages.ByDate.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByExpiryDate.md000066400000000000000000000013461507671574500256030ustar00rootroot00000000000000--- title: ByExpiryDate description: Returns the given page collection sorted by expiration date in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByExpiryDate] --- When sorting by expiration date, the value is determined by your [site configuration], defaulting to the `expiryDate` field in front matter. [site configuration]: /configuration/front-matter/#dates ```go-html-template {{ range .Pages.ByExpiryDate }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Pages.ByExpiryDate.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByLanguage.md000066400000000000000000000010371507671574500252450ustar00rootroot00000000000000--- title: ByLanguage description: Returns the given page collection sorted by language in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByLanguage] --- ```go-html-template {{ range .Site.AllPages.ByLanguage }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Site.AllPages.ByLanguage.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByLastmod.md000066400000000000000000000013451507671574500251270ustar00rootroot00000000000000--- title: ByLastmod description: Returns the given page collection sorted by last modification date in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByLastmod] --- When sorting by last modification date, the value is determined by your [site configuration], defaulting to the `lastmod` field in front matter. [site configuration]: /configuration/front-matter/#dates ```go-html-template {{ range .Pages.ByLastmod }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Pages.ByLastmod.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByLength.md000066400000000000000000000010151507671574500247370ustar00rootroot00000000000000--- title: ByLength description: Returns the given page collection sorted by content length in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByLength] --- ```go-html-template {{ range .Pages.ByLength }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Pages.ByLength.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByLinkTitle.md000066400000000000000000000011111507671574500254120ustar00rootroot00000000000000--- title: ByLinkTitle description: Returns the given page collection sorted by link title in ascending order, falling back to title if link title is not defined. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByLinkTitle] --- ```go-html-template {{ range .Pages.ByLinkTitle }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Pages.ByLinkTitle.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByParam.md000066400000000000000000000016061507671574500245640ustar00rootroot00000000000000--- title: ByParam description: Returns the given page collection sorted by the given parameter in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByParam PARAM] --- If the given parameter is not present in front matter, Hugo will use the matching parameter in your site configuration if present. ```go-html-template {{ range .Pages.ByParam "author" }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range (.Pages.ByParam "author").Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` If the targeted parameter is nested, access the field using dot notation: ```go-html-template {{ range .Pages.ByParam "author.last_name" }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByPublishDate.md000066400000000000000000000013451507671574500257300ustar00rootroot00000000000000--- title: ByPublishDate description: Returns the given page collection sorted by publish date in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByPublishDate] --- When sorting by publish date, the value is determined by your [site configuration], defaulting to the `publishDate` field in front matter. [site configuration]: /configuration/front-matter/#dates ```go-html-template {{ range .Pages.ByPublishDate }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Pages.ByPublishDate.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByTitle.md000066400000000000000000000007701507671574500246060ustar00rootroot00000000000000--- title: ByTitle description: Returns the given page collection sorted by title in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByTitle] --- ```go-html-template {{ range .Pages.ByTitle }}

        {{ .Title }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Pages.ByTitle.Reverse }}

        {{ .Title }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/ByWeight.md000066400000000000000000000014111507671574500247450ustar00rootroot00000000000000--- title: ByWeight description: Returns the given page collection sorted by weight in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.ByWeight] --- Assign a [weight](g) to a page using the `weight` field in front matter. The weight must be a non-zero integer. Lighter items float to the top, while heavier items sink to the bottom. Unweighted or zero-weighted pages are placed at the end of the collection. ```go-html-template {{ range .Pages.ByWeight }}

        {{ .LinkTitle }}

        {{ end }} ``` To sort in descending order: ```go-html-template {{ range .Pages.ByWeight.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/GroupBy.md000066400000000000000000000014231507671574500246150ustar00rootroot00000000000000--- title: GroupBy description: Returns the given page collection grouped by the given field in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.PagesGroup signatures: ['PAGES.GroupBy FIELD [SORT]'] --- {{% include "/_common/methods/pages/group-sort-order.md" %}} ```go-html-template {{ range .Pages.GroupBy "Section" }}

        {{ .Key }}

        {{ end }} ``` To sort the groups in descending order: ```go-html-template {{ range .Pages.GroupBy "Section" "desc" }}

        {{ .Key }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/GroupByDate.md000066400000000000000000000034111507671574500254120ustar00rootroot00000000000000--- title: GroupByDate description: Returns the given page collection grouped by date in descending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.PagesGroup signatures: ['PAGES.GroupByDate LAYOUT [SORT]'] --- When grouping by date, the value is determined by your [site configuration], defaulting to the `date` field in front matter. The [layout string] has the same format as the layout string for the [`time.Format`] function. The resulting group key is [localized](g) for language and region. [`time.Format`]: /functions/time/format/ [layout string]: #layout-string [site configuration]: /configuration/front-matter/#dates {{% include "/_common/methods/pages/group-sort-order.md" %}} To group content by year and month: ```go-html-template {{ range .Pages.GroupByDate "January 2006" }}

        {{ .Key }}

        {{ end }} ``` To sort the groups in ascending order: ```go-html-template {{ range .Pages.GroupByDate "January 2006" "asc" }}

        {{ .Key }}

        {{ end }} ``` The pages within each group will also be sorted by date, either ascending or descending depending on the grouping option. To sort the pages within each group, use one of the sorting methods. For example, to sort the pages within each group by title: ```go-html-template {{ range .Pages.GroupByDate "January 2006" }}

        {{ .Key }}

        {{ end }} ``` ## Layout string {{% include "/_common/time-layout-string.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/pages/GroupByExpiryDate.md000066400000000000000000000035171507671574500266220ustar00rootroot00000000000000--- title: GroupByExpiryDate description: Returns the given page collection grouped by expiration date in descending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.PagesGroup signatures: ['PAGES.GroupByExpiryDate LAYOUT [SORT]'] --- When grouping by expiration date, the value is determined by your [site configuration], defaulting to the `expiryDate` field in front matter. The [layout string] has the same format as the layout string for the [`time.Format`] function. The resulting group key is [localized](g) for language and region. [`time.Format`]: /functions/time/format/ [layout string]: #layout-string [site configuration]: /configuration/front-matter/#dates {{% include "/_common/methods/pages/group-sort-order.md" %}} To group content by year and month: ```go-html-template {{ range .Pages.GroupByExpiryDate "January 2006" }}

        {{ .Key }}

        {{ end }} ``` To sort the groups in ascending order: ```go-html-template {{ range .Pages.GroupByExpiryDate "January 2006" "asc" }}

        {{ .Key }}

        {{ end }} ``` The pages within each group will also be sorted by expiration date, either ascending or descending depending on your grouping option. To sort the pages within each group, use one of the sorting methods. For example, to sort the pages within each group by title: ```go-html-template {{ range .Pages.GroupByExpiryDate "January 2006" }}

        {{ .Key }}

        {{ end }} ``` ## Layout string {{% include "/_common/time-layout-string.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/pages/GroupByLastmod.md000066400000000000000000000035221507671574500261430ustar00rootroot00000000000000--- title: GroupByLastmod description: Returns the given page collection grouped by last modification date in descending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.PagesGroup signatures: ['PAGES.GroupByLastmod LAYOUT [SORT]'] --- When grouping by last modification date, the value is determined by your [site configuration], defaulting to the `lastmod` field in front matter. The [layout string] has the same format as the layout string for the [`time.Format`] function. The resulting group key is [localized](g) for language and region. [`time.Format`]: /functions/time/format/ [layout string]: #layout-string [site configuration]: /configuration/front-matter/#dates {{% include "/_common/methods/pages/group-sort-order.md" %}} To group content by year and month: ```go-html-template {{ range .Pages.GroupByLastmod "January 2006" }}

        {{ .Key }}

        {{ end }} ``` To sort the groups in ascending order: ```go-html-template {{ range .Pages.GroupByLastmod "January 2006" "asc" }}

        {{ .Key }}

        {{ end }} ``` The pages within each group will also be sorted by last modification date, either ascending or descending depending on your grouping option. To sort the pages within each group, use one of the sorting methods. For example, to sort the pages within each group by title: ```go-html-template {{ range .Pages.GroupByLastmod "January 2006" }}

        {{ .Key }}

        {{ end }} ``` ## Layout string {{% include "/_common/time-layout-string.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/pages/GroupByParam.md000066400000000000000000000014671507671574500256060ustar00rootroot00000000000000--- title: GroupByParam description: Returns the given page collection grouped by the given parameter in ascending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.PagesGroup signatures: ['PAGES.GroupByParam PARAM [SORT]'] --- {{% include "/_common/methods/pages/group-sort-order.md" %}} ```go-html-template {{ range .Pages.GroupByParam "color" }}

        {{ .Key | title }}

        {{ end }} ``` To sort the groups in descending order: ```go-html-template {{ range .Pages.GroupByParam "color" "desc" }}

        {{ .Key | title }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/GroupByParamDate.md000066400000000000000000000032701507671574500263760ustar00rootroot00000000000000--- title: GroupByParamDate description: Returns the given page collection grouped by the given date parameter in descending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.PagesGroup signatures: ['PAGES.GroupByParamDate PARAM LAYOUT [SORT]'] --- The [layout string] has the same format as the layout string for the [`time.Format`] function. The resulting group key is [localized](g) for language and region. [`time.Format`]: /functions/time/format/ [layout string]: #layout-string {{% include "/_common/methods/pages/group-sort-order.md" %}} To group content by year and month: ```go-html-template {{ range .Pages.GroupByParamDate "eventDate" "January 2006" }}

        {{ .Key }}

        {{ end }} ``` To sort the groups in ascending order: ```go-html-template {{ range .Pages.GroupByParamDate "eventDate" "January 2006" "asc" }}

        {{ .Key }}

        {{ end }} ``` The pages within each group will also be sorted by the parameter date, either ascending or descending depending on your grouping option. To sort the pages within each group, use one of the sorting methods. For example, to sort the pages within each group by title: ```go-html-template {{ range .Pages.GroupByParamDate "eventDate" "January 2006" }}

        {{ .Key }}

        {{ end }} ``` ## Layout string {{% include "/_common/time-layout-string.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/pages/GroupByPublishDate.md000066400000000000000000000035141507671574500267450ustar00rootroot00000000000000--- title: GroupByPublishDate description: Returns the given page collection grouped by publish date in descending order. categories: [] keywords: [] params: functions_and_methods: returnType: page.PagesGroup signatures: ['PAGES.GroupByPublishDate LAYOUT [SORT]'] --- When grouping by publish date, the value is determined by your [site configuration], defaulting to the `publishDate` field in front matter. The [layout string] has the same format as the layout string for the [`time.Format`] function. The resulting group key is [localized](g) for language and region. [`time.Format`]: /functions/time/format/ [layout string]: #layout-string [site configuration]: /configuration/front-matter/#dates {{% include "/_common/methods/pages/group-sort-order.md" %}} To group content by year and month: ```go-html-template {{ range .Pages.GroupByPublishDate "January 2006" }}

        {{ .Key }}

        {{ end }} ``` To sort the groups in ascending order: ```go-html-template {{ range .Pages.GroupByPublishDate "January 2006" "asc" }}

        {{ .Key }}

        {{ end }} ``` The pages within each group will also be sorted by publish date, either ascending or descending depending on your grouping option. To sort the pages within each group, use one of the sorting methods. For example, to sort the pages within each group by title: ```go-html-template {{ range .Pages.GroupByPublishDate "January 2006" }}

        {{ .Key }}

        {{ end }} ``` ## Layout string {{% include "/_common/time-layout-string.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/pages/Len.md000066400000000000000000000003701507671574500237440ustar00rootroot00000000000000--- title: Len description: Returns the number of pages in the given page collection. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [PAGES.Len] --- ```go-html-template {{ .Pages.Len }} → 42 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/Limit.md000066400000000000000000000005251507671574500243060ustar00rootroot00000000000000--- title: Limit description: Returns the first N pages from the given page collection. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.Limit NUMBER] --- ```go-html-template {{ range .Pages.Limit 3 }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/Next.md000066400000000000000000000004351507671574500241460ustar00rootroot00000000000000--- title: Next description: Returns the next page in a page collection, relative to the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [PAGES.Next PAGE] --- {{% include "/_common/methods/pages/next-and-prev.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/pages/Prev.md000066400000000000000000000004421507671574500241420ustar00rootroot00000000000000--- title: Prev description: Returns the previous page in a page collection, relative to the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.Prev PAGE] --- {{% include "/_common/methods/pages/next-and-prev.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/pages/Related.md000066400000000000000000000041011507671574500246020ustar00rootroot00000000000000--- title: Related description: Returns a collection of pages related to the given page. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: - PAGES.Related PAGE - PAGES.Related OPTIONS --- Based on front matter, Hugo uses several factors to identify content related to the given page. Use the default [related content configuration], or tune the results to the desired indices and parameters. See [details]. The argument passed to the `Related` method may be a `Page` or an options map. For example, to pass the current page: ```go-html-template {file="layouts/page.html"} {{ with .Site.RegularPages.Related . | first 5 }}

        Related pages:

        {{ end }} ``` To pass an options map: ```go-html-template {file="layouts/page.html"} {{ $opts := dict "document" . "indices" (slice "tags" "keywords") }} {{ with .Site.RegularPages.Related $opts | first 5 }}

        Related pages:

        {{ end }} ``` ## Options indices : (`slice`) The indices to search within. document : (`page`) The page for which to find related content. Required when specifying an options map. namedSlices : (`slice`) The keywords to search for, expressed as a slice of `KeyValues` using the [`keyVals`] function. [`keyVals`]: /functions/collections/keyvals/ fragments : (`slice`) A list of special keywords that is used for indices configured as type "fragments". This will match the [fragment](g) identifiers of the documents. A contrived example using all of the above: ```go-html-template {{ $page := . }} {{ $opts := dict "indices" (slice "tags" "keywords") "document" $page "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date)) "fragments" (slice "heading-1" "heading-2") }} ``` [details]: /content-management/related-content/ [related content configuration]: /configuration/related-content/ gohugoio-hugo-6abdaca/docs/content/en/methods/pages/Reverse.md000066400000000000000000000005231507671574500246410ustar00rootroot00000000000000--- title: Reverse description: Returns the given page collection in reverse order. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [PAGES.Reverse] --- ```go-html-template {{ range .Pages.ByDate.Reverse }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/pages/_index.md000066400000000000000000000002501507671574500244710ustar00rootroot00000000000000--- title: Pages methods linkTitle: Pages description: Use these methods with a collection of Page objects. categories: [] keywords: [] aliases: [/variables/pages] --- gohugoio-hugo-6abdaca/docs/content/en/methods/resource/000077500000000000000000000000001507671574500234345ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Colors.md000066400000000000000000000125241507671574500252230ustar00rootroot00000000000000--- title: Colors description: Applicable to images, returns a slice of the most dominant colors using a simple histogram method. categories: [] keywords: [] params: functions_and_methods: returnType: '[]images.Color' signatures: [RESOURCE.Colors] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} The `Resources.Colors` method returns a slice of the most dominant colors in an image, ordered from most dominant to least dominant. This method is fast, but if you also downsize your image you can improve performance by extracting the colors from the scaled image. ## Methods Each color is an object with the following methods: ### ColorHex {{< new-in 0.125.0 />}} (`string`) Returns the [hexadecimal color] value, prefixed with a hash sign. ### Luminance {{< new-in 0.125.0 />}} (`float64`) Returns the [relative luminance] of the color in the sRGB colorspace in the range [0, 1]. A value of `0` represents the darkest black, while a value of `1` represents the lightest white. > [!note] > Image filters such as [`images.Dither`], [`images.Padding`], and [`images.Text`] accept either hexadecimal color values or `images.Color` objects as arguments. > > Hugo renders an `images.Color` object as a hexadecimal color value. ## Sorting As a contrived example, create a table of an image's dominant colors with the most dominant color first, and display the relative luminance of each dominant color: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ range .Colors }} {{ end }}
        Color Relative luminance
        {{ .ColorHex }} {{ .Luminance | lang.FormatNumber 4 }}
        {{ end }} ``` Hugo renders this to: ColorHex|Relative luminance :--|:-- `#bebebd`|`0.5145` `#514947`|`0.0697` `#768a9a`|`0.2436` `#647789`|`0.1771` `#90725e`|`0.1877` `#a48974`|`0.2704` To sort by dominance with the least dominant color first: ```go-html-template {{ range .Colors | collections.Reverse }} ``` To sort by relative luminance with the darkest color first: ```go-html-template {{ range sort .Colors "Luminance" }} ``` To sort by relative luminance with the lightest color first, use either of these constructs: ```go-html-template {{ range sort .Colors "Luminance" | collections.Reverse }} {{ range sort .Colors "Luminance" "desc" }} ``` ## Examples ### Image borders To add a 5 pixel border to an image using the most dominant color: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ $mostDominant := index .Colors 0 }} {{ $filter := images.Padding 5 $mostDominant }} {{ with .Filter $filter }} {{ end }} {{ end }} ``` To add a 5 pixel border to an image using the darkest dominant color: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ $darkest := index (sort .Colors "Luminance") 0 }} {{ $filter := images.Padding 5 $darkest }} {{ with .Filter $filter }} {{ end }} {{ end }} ``` ### Light text on dark background To create a text box where the foreground and background colors are derived from an image's lightest and darkest dominant colors: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ $darkest := index (sort .Colors "Luminance") 0 }} {{ $lightest := index (sort .Colors "Luminance" "desc") 0 }}

        This is light text on a dark background.

        {{ end }} ``` ### WCAG contrast ratio In the previous example we placed light text on a dark background, but does this color combination conform to [WCAG] guidelines for either the [minimum] or the [enhanced] contrast ratio? The WCAG defines the [contrast ratio] as: $$contrast\ ratio = { L_1 + 0.05 \over L_2 + 0.05 }$$ where $L_1$ is the relative luminance of the lightest color and $L_2$ is the relative luminance of the darkest color. Calculate the contrast ratio to determine WCAG conformance: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ $lightest := index (sort .Colors "Luminance" "desc") 0 }} {{ $darkest := index (sort .Colors "Luminance") 0 }} {{ $cr := div (add $lightest.Luminance 0.05) (add $darkest.Luminance 0.05) }} {{ if ge $cr 7.5 }} {{ printf "The %.2f contrast ratio conforms to WCAG Level AAA." $cr }} {{ else if ge $cr 4.5 }} {{ printf "The %.2f contrast ratio conforms to WCAG Level AA." $cr }} {{ else }} {{ printf "The %.2f contrast ratio does not conform to WCAG guidelines." $cr }} {{ end }} {{ end }} ``` [`images.Dither`]: /functions/images/dither/ [`images.Padding`]: /functions/images/padding/ [`images.Text`]: /functions/images/text/ [contrast ratio]: https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio [enhanced]: https://www.w3.org/WAI/WCAG22/quickref/?showtechniques=145#contrast-enhanced [hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color [minimum]: https://www.w3.org/WAI/WCAG22/quickref/?showtechniques=145#contrast-minimum [relative luminance]: https://www.w3.org/TR/WCAG21/#dfn-relative-luminance [WCAG]: https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Content.md000066400000000000000000000024671507671574500254010ustar00rootroot00000000000000--- title: Content description: Returns the content of the given resource. categories: [] keywords: [] params: functions_and_methods: returnType: any signatures: [RESOURCE.Content] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} The `Content` method on a `Resource` object returns `template.HTML` when the [resource type] is `page`, otherwise it returns a `string`. [resource type]: /methods/resource/resourcetype/ ```text {file="assets/quotations/kipling.txt"} He travels the fastest who travels alone. ``` To get the content: ```go-html-template {{ with resources.Get "quotations/kipling.txt" }} {{ .Content }} → He travels the fastest who travels alone. {{ end }} ``` To get the size in bytes: ```go-html-template {{ with resources.Get "quotations/kipling.txt" }} {{ .Content | len }} → 42 {{ end }} ``` To create an inline image: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ end }} ``` To create inline CSS: ```go-html-template {{ with resources.Get "css/style.css" }} {{ end }} ``` To create inline JavaScript: ```go-html-template {{ with resources.Get "js/script.js" }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Crop.md000066400000000000000000000021671507671574500246670ustar00rootroot00000000000000--- title: Crop description: Applicable to images, returns an image resource cropped to the given dimensions without resizing. categories: [] keywords: [] params: functions_and_methods: returnType: images.ImageResource signatures: [RESOURCE.Crop SPEC] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} Crop an image to match the given dimensions without resizing. You must provide both width and height. ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Crop "200x200" }} {{ end }} {{ end }} ``` {{% include "/_common/methods/resource/processing-spec.md" %}} ## Example ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Crop "200x200 topright webp q85 lanczos" }} {{ end }} {{ end }} ``` {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Process" filterArgs="crop 200x200 topright webp q85 lanczos" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Data.md000066400000000000000000000031611507671574500246300ustar00rootroot00000000000000--- title: Data description: Applicable to resources returned by the resources.GetRemote function, returns information from the HTTP response. categories: [] keywords: [] params: functions_and_methods: returnType: map signatures: [RESOURCE.Data] --- The `Data` method on a resource returned by the [`resources.GetRemote`] function returns information from the HTTP response. ## Example ```go-html-template {{ $url := "https://example.org/images/a.jpg" }} {{ $opts := dict "responseHeaders" (slice "Server") }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ with .Data }} {{ .ContentLength }} → 42764 {{ .ContentType }} → image/jpeg {{ .Headers }} → map[Server:[Netlify]] {{ .Status }} → 200 OK {{ .StatusCode }} → 200 {{ .TransferEncoding }} → [] {{ end }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} ``` ## Methods ### ContentLength (`int`) The content length in bytes. ### ContentType (`string`) The content type. ### Headers (`map[string][]string`) A map of response headers matching those requested in the [`responseHeaders`] option passed to the `resources.GetRemote` function. The header name matching is case-insensitive. In most cases there will be one value per header key. ### Status (`string`) The HTTP status text. ### StatusCode (`int`) The HTTP status code. ### TransferEncoding (`string`) The transfer encoding. [`resources.GetRemote`]: /functions/resources/getremote/ [`responseHeaders`]: /functions/resources/getremote/#responseheaders gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Err.md000066400000000000000000000037411507671574500245130ustar00rootroot00000000000000--- title: Err description: Applicable to resources returned by the resources.GetRemote function, returns an error message if the HTTP request fails, else nil. categories: [] keywords: [] params: functions_and_methods: returnType: resource.resourceError signatures: [RESOURCE.Err] expiryDate: 2027-01-16 # deprecated 2025-01-16 in v0.141.0 --- {{< deprecated-in 0.141.0 >}} Use the `try` statement instead. See [example]. [example]: /functions/go-template/try/#example {{< /deprecated-in >}} The `Err` method on a resource returned by the [`resources.GetRemote`] function returns an error message if the HTTP request fails, else nil. If you do not handle the error yourself, Hugo will fail the build. [`resources.GetRemote`]: /functions/resources/getremote/ In this example we send an HTTP request to a nonexistent domain: ```go-html-template {{ $url := "https://broken-example.org/images/a.jpg" }} {{ with resources.GetRemote $url }} {{ with .Err }} {{ errorf "%s" . }} {{ else }} {{ end }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} ``` The code above captures the error from the HTTP request, then fails the build: ```text ERROR error calling resources.GetRemote: Get "https://broken-example.org/images/a.jpg": dial tcp: lookup broken-example.org on 127.0.0.53:53: no such host ``` To log an error as a warning instead of an error: ```go-html-template {{ $url := "https://broken-example.org/images/a.jpg" }} {{ with resources.GetRemote $url }} {{ with .Err }} {{ warnf "%s" . }} {{ else }} {{ end }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} ``` > [!note] > An HTTP response with a 404 status code is not an HTTP request error. To handle 404 status codes, code defensively using the nested `with-else-end` construct as shown above. gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Exif.md000066400000000000000000000045011507671574500246510ustar00rootroot00000000000000--- title: Exif description: Applicable to JPEG, PNG, TIFF, and WebP images, returns an EXIF object containing image metadata. categories: [] keywords: [] params: functions_and_methods: returnType: exif.ExifInfo signatures: [RESOURCE.Exif] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} Applicable to JPEG, PNG, TIFF, and WebP images, the `Exif` method on an image `Resource` object returns an [EXIF] object containing image metadata. ## Methods ### Date (`time.Time`) Returns the image creation date/time. Format with the [`time.Format`] function. ### Lat (`float64`) Returns the GPS latitude in degrees. ### Long (`float64`) Returns the GPS longitude in degrees. ### Tags (`exif.Tags`) Returns a collection of the available EXIF tags for this image. You may include or exclude specific tags from this collection. See [configure imaging]. [configure imaging]: /configuration/imaging/#exif-data ## Examples To list the creation date, location, and EXIF tags: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ with .Exif }}

        Date: {{ .Date }}

        Lat/Long: {{ .Lat }}/{{ .Long }}

        {{ with .Tags }}

        Tags

        {{ range $k, $v := . }} {{ end }}
        TagValue
        {{ $k }}{{ $v }}
        {{ end }} {{ end }} {{ end }} ``` To list specific values: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ with .Exif }}
          {{ with .Date }}
        • Date: {{ .Format "January 02, 2006" }}
        • {{ end }} {{ with .Tags.ApertureValue }}
        • Aperture: {{ lang.FormatNumber 2 . }}
        • {{ end }} {{ with .Tags.BrightnessValue }}
        • Brightness: {{ lang.FormatNumber 2 . }}
        • {{ end }} {{ with .Tags.ExposureTime }}
        • Exposure Time: {{ . }}
        • {{ end }} {{ with .Tags.FNumber }}
        • F Number: {{ . }}
        • {{ end }} {{ with .Tags.FocalLength }}
        • Focal Length: {{ . }}
        • {{ end }} {{ with .Tags.ISOSpeedRatings }}
        • ISO Speed Ratings: {{ . }}
        • {{ end }} {{ with .Tags.LensModel }}
        • Lens Model: {{ . }}
        • {{ end }}
        {{ end }} {{ end }} ``` [exif]: https://en.wikipedia.org/wiki/Exif [`time.Format`]: /functions/time/format/ gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Fill.md000066400000000000000000000021421507671574500246430ustar00rootroot00000000000000--- title: Fill description: Applicable to images, returns an image resource cropped and resized to the given dimensions. categories: [] keywords: [] params: functions_and_methods: returnType: images.ImageResource signatures: [RESOURCE.Fill SPEC] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} Crop and resize an image to match the given dimensions. You must provide both width and height. ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Fill "200x200" }} {{ end }} {{ end }} ``` {{% include "/_common/methods/resource/processing-spec.md" %}} ## Example ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Fill "200x200 top webp q85 lanczos" }} {{ end }} {{ end }} ``` {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Process" filterArgs="fill 200x200 top webp q85 lanczos" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Filter.md000066400000000000000000000031771507671574500252130ustar00rootroot00000000000000--- title: Filter description: Applicable to images, applies one or more image filters to the given image resource. categories: [] keywords: [] params: functions_and_methods: returnType: images.ImageResource signatures: [RESOURCE.Filter FILTER...] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} Apply one or more [image filters](#image-filters) to the given image. To apply a single filter: ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Filter images.Grayscale }} {{ end }} {{ end }} ``` To apply two or more filters, executing from left to right: ```go-html-template {{ $filters := slice images.Grayscale (images.GaussianBlur 8) }} {{ with resources.Get "images/original.jpg" }} {{ with .Filter $filters }} {{ end }} {{ end }} ``` You can also apply image filters using the [`images.Filter`] function. [`images.Filter`]: /functions/images/filter/ ## Example ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Filter images.Grayscale }} {{ end }} {{ end }} ``` {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Grayscale" filterArgs="" example=true >}} ## Image filters Use any of these filters with the `Filter` method. {{% list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude %}} gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Fit.md000066400000000000000000000022061507671574500245000ustar00rootroot00000000000000--- title: Fit description: Applicable to images, returns an image resource downscaled to fit the given dimensions while maintaining aspect ratio. categories: [] keywords: [] params: functions_and_methods: returnType: images.ImageResource signatures: [RESOURCE.Fit SPEC] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} Downscale an image to fit the given dimensions while maintaining aspect ratio. You must provide both width and height. ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Fit "200x200" }} {{ end }} {{ end }} ``` {{% include "/_common/methods/resource/processing-spec.md" %}} ## Example ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Fit "300x175 webp q85 lanczos" }} {{ end }} {{ end }} ``` {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Process" filterArgs="fit 300x175 webp q85 lanczos" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Height.md000066400000000000000000000011571507671574500251720ustar00rootroot00000000000000--- title: Height description: Applicable to images, returns the height of the given resource. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [RESOURCE.Height] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .Height }} → 400 {{ end }} ``` Use the `Width` and `Height` methods together when rendering an `img` element: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/MediaType.md000066400000000000000000000026121507671574500256400ustar00rootroot00000000000000--- title: MediaType description: Returns a media type object for the given resource. categories: [] keywords: [] params: functions_and_methods: returnType: media.Type signatures: [RESOURCE.MediaType] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} The `MediaType` method on a `Resource` object returns an object with additional methods. ## Methods ### Type (`string`) The resource's media type. ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .MediaType.Type }} → image/jpeg {{ end }} ``` ### MainType (`string`) The main type of the resource's media type. ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .MediaType.MainType }} → image {{ end }} ``` ### SubType (`string`) The subtype of the resource's media type. This may or may not correspond to the file suffix. ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .MediaType.SubType }} → jpeg {{ end }} ``` ### Suffixes (`slice`) A slice of possible file suffixes for the resource's media type. ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .MediaType.Suffixes }} → [jpg jpeg jpe jif jfif] {{ end }} ``` ### FirstSuffix.Suffix (`string`) The first of the possible file suffixes for the resource's media type. ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .MediaType.FirstSuffix.Suffix }} → jpg {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Name.md000066400000000000000000000042601507671574500246400ustar00rootroot00000000000000--- title: Name description: Returns the name of the given resource as optionally defined in front matter, falling back to its file path. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [RESOURCE.Name] --- The value returned by the `Name` method on a `Resource` object depends on the resource type. ## Global resource With a [global resource](g), the `Name` method returns the path to the resource, relative to the `assets` directory. ```text assets/ └── images/ └── Sunrise in Bryce Canyon.jpg ``` ```go-html-template {{ with resources.Get "images/Sunrise in Bryce Canyon.jpg" }} {{ .Name }} → /images/Sunrise in Bryce Canyon.jpg {{ end }} ``` ## Page resource With a [page resource](g), if you create an element in the `resources` array in front matter, the `Name` method returns the value of the `name` parameter. ```text content/ ├── example/ │ ├── images/ │ │ └── a.jpg │ └── index.md └── _index.md ``` {{< code-toggle file=content/example/index.md fm=true >}} title = 'Example' [[resources]] src = 'images/a.jpg' name = 'Sunrise in Bryce Canyon' {{< /code-toggle >}} ```go-html-template {{ with .Resources.Get "images/a.jpg" }} {{ .Name }} → Sunrise in Bryce Canyon {{ end }} ``` You can also capture the image by specifying its `name` instead of its path: ```go-html-template {{ with .Resources.Get "Sunrise in Bryce Canyon" }} {{ .Name }} → Sunrise in Bryce Canyon {{ end }} ``` If you do not create an element in the `resources` array in front matter, the `Name` method returns the file path, relative to the page bundle. ```text content/ ├── example/ │ ├── images/ │ │ └── Sunrise in Bryce Canyon.jpg │ └── index.md └── _index.md ``` ```go-html-template {{ with .Resources.Get "images/Sunrise in Bryce Canyon.jpg" }} {{ .Name }} → images/Sunrise in Bryce Canyon.jpg {{ end }} ``` ## Remote resource With a [remote resource](g), the `Name` method returns a hashed file name. ```go-html-template {{ with resources.GetRemote "https://example.org/images/a.jpg" }} {{ .Name }} → /a_18432433023265451104.jpg {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Params.md000066400000000000000000000026411507671574500252040ustar00rootroot00000000000000--- title: Params description: Returns a map of resource parameters as defined in front matter. categories: [] keywords: [] params: functions_and_methods: returnType: map signatures: [RESOURCE.Params] --- Use the `Params` method with [page resources](g). It is not applicable to either [global resources](g) or [remote resources](g). With this content structure: ```text content/ ├── posts/ │ ├── cats/ │ │ ├── images/ │ │ │ └── a.jpg │ │ └── index.md │ └── _index.md └── _index.md ``` And this front matter: {{< code-toggle file=content/posts/cats.md fm=true >}} title = 'Cats' [[resources]] src = 'images/a.jpg' title = 'Felix the cat' [resources.params] alt = 'Photograph of black cat' temperament = 'vicious' {{< /code-toggle >}} And this template: ```go-html-template {{ with .Resources.Get "images/a.jpg" }}
        {{ .Params.alt }}
        {{ .Title }} is {{ .Params.temperament }}
        {{ end }} ``` Hugo renders: ```html
        Photograph of black cat
        Felix the cat is vicious
        ``` See the [page resources] section for more information. [page resources]: /content-management/page-resources/ gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Permalink.md000066400000000000000000000010701507671574500256760ustar00rootroot00000000000000--- title: Permalink description: Publishes the given resource and returns its permalink. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [RESOURCE.Permalink] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} The `Permalink` method on a `Resource` object writes the resource to the publish directory, typically `public`, and returns its [permalink](g). ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .Permalink }} → https://example.org/images/a.jpg {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Process.md000066400000000000000000000035501507671574500253770ustar00rootroot00000000000000--- title: Process description: Applicable to images, returns an image resource processed with the given specification. categories: [] keywords: [] params: functions_and_methods: returnType: images.ImageResource signatures: [RESOURCE.Process SPEC] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} Process an image with the given specification. The specification can contain an optional action, one of `crop`, `fill`, `fit`, or `resize`. This means that you can use this method instead of [`Crop`], [`Fill`], [`Fit`], or [`Resize`]. ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Process "crop 200x200" }} {{ end }} {{ end }} ``` You can also use this method to apply simple transformations such as rotation and conversion: ```go-html-template {{/* Rotate 90 degrees counter-clockwise. */}} {{ $image := $image.Process "r90" }} {{/* Convert to WebP. */}} {{ $image := $image.Process "webp" }} ``` The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [`images.Process`]. {{% include "/_common/methods/resource/processing-spec.md" %}} ## Example ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Process "crop 200x200 topright webp q85 lanczos" }} {{ end }} {{ end }} ``` {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Process" filterArgs="crop 200x200 topright webp q85 lanczos" example=true >}} [`Crop`]: /methods/resource/crop/ [`Fill`]: /methods/resource/fill/ [`Fit`]: /methods/resource/fit/ [`Resize`]: /methods/resource/resize/ [`images.Process`]: /functions/images/process/ gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Publish.md000066400000000000000000000013561507671574500253710ustar00rootroot00000000000000--- title: Publish description: Publishes the given resource. categories: [] keywords: [] params: functions_and_methods: returnType: nil signatures: [RESOURCE.Publish] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} The `Publish` method on a `Resource` object writes the resource to the publish directory, typically `public`. ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .Publish }} {{ end }} ``` The `Permalink` and `RelPermalink` methods also publish a resource. `Publish` is a convenience method for publishing without a return value. For example, this: ```go-html-template {{ $resource.Publish }} ``` Instead of this: ```go-html-template {{ $noop := $resource.Permalink }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/RelPermalink.md000066400000000000000000000011001507671574500263330ustar00rootroot00000000000000--- title: RelPermalink description: Publishes the given resource and returns its relative permalink. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [RESOURCE.RelPermalink] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} The `Permalink` method on a `Resource` object writes the resource to the publish directory, typically `public`, and returns its [relative permalink](g). ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .RelPermalink }} → /images/a.jpg {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Resize.md000066400000000000000000000022731507671574500252230ustar00rootroot00000000000000--- title: Resize description: Applicable to images, returns an image resource resized to the given width and/or height. categories: [] keywords: [] params: functions_and_methods: returnType: images.ImageResource signatures: [RESOURCE.Resize SPEC] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} Resize an image to the given width and/or height. If you specify both width and height, the resulting image will be disproportionally scaled unless the original image has the same aspect ratio. ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Resize "300x" }} {{ end }} {{ end }} ``` {{% include "/_common/methods/resource/processing-spec.md" %}} ## Example ```go-html-template {{ with resources.Get "images/original.jpg" }} {{ with .Resize "300x webp q85 lanczos" }} {{ end }} {{ end }} ``` {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Process" filterArgs="resize 300x webp q85 lanczos" example=true >}} gohugoio-hugo-6abdaca/docs/content/en/methods/resource/ResourceType.md000066400000000000000000000021531507671574500264100ustar00rootroot00000000000000--- title: ResourceType description: Returns the main type of the given resource's media type. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [RESOURCE.ResourceType] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} Common resource types include `audio`, `image`, `text`, and `video`. ```go-html-template {{ with resources.Get "image/a.jpg" }} {{ .ResourceType }} → image {{ .MediaType.MainType }} → image {{ end }} ``` When working with content files, the resource type is `page`. ```text content/ ├── lessons/ │ ├── lesson-1/ │ │ ├── _objectives.md <-- resource type = page │ │ ├── _topics.md <-- resource type = page │ │ ├── _example.jpg <-- resource type = image │ │ └── index.md │ └── _index.md └── _index.md ``` With the structure above, we can range through page resources of type `page` to build content: ```go-html-template {file="layouts/lessons/page.html"} {{ range .Resources.ByType "page" }} {{ .Content }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Title.md000066400000000000000000000040611507671574500250400ustar00rootroot00000000000000--- title: Title description: Returns the title of the given resource as optionally defined in front matter, falling back to a relative path or hashed file name depending on resource type. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [RESOURCE.Title] --- The value returned by the `Title` method on a `Resource` object depends on the resource type. ## Global resource With a [global resource](g), the `Title` method returns the path to the resource, relative to the `assets` directory. ```text assets/ └── images/ └── Sunrise in Bryce Canyon.jpg ``` ```go-html-template {{ with resources.Get "images/Sunrise in Bryce Canyon.jpg" }} {{ .Title }} → /images/Sunrise in Bryce Canyon.jpg {{ end }} ``` ## Page resource With a [page resource](g), if you create an element in the `resources` array in front matter, the `Title` method returns the value of the `title` parameter. ```text content/ ├── example/ │ ├── images/ │ │ └── a.jpg │ └── index.md └── _index.md ``` {{< code-toggle file=content/example/index.md fm=true >}} title = 'Example' [[resources]] src = 'images/a.jpg' title = 'A beautiful sunrise in Bryce Canyon' {{< /code-toggle >}} ```go-html-template {{ with .Resources.Get "images/a.jpg" }} {{ .Title }} → A beautiful sunrise in Bryce Canyon {{ end }} ``` If you do not create an element in the `resources` array in front matter, the `Title` method returns the file path, relative to the page bundle. ```text content/ ├── example/ │ ├── images/ │ │ └── Sunrise in Bryce Canyon.jpg │ └── index.md └── _index.md ``` ```go-html-template {{ with .Resources.Get "Sunrise in Bryce Canyon.jpg" }} {{ .Title }} → images/Sunrise in Bryce Canyon.jpg {{ end }} ``` ## Remote resource With a [remote resource](g), the `Title` method returns a hashed file name. ```go-html-template {{ with resources.GetRemote "https://example.org/images/a.jpg" }} {{ .Title }} → /a_18432433023265451104.jpg {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/Width.md000066400000000000000000000011531507671574500250350ustar00rootroot00000000000000--- title: Width description: Applicable to images, returns the width of the given resource. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [RESOURCE.Width] --- {{% include "/_common/methods/resource/global-page-remote-resources.md" %}} ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ .Width }} → 600 {{ end }} ``` Use the `Width` and `Height` methods together when rendering an `img` element: ```go-html-template {{ with resources.Get "images/a.jpg" }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/resource/_index.md000066400000000000000000000002371507671574500252260ustar00rootroot00000000000000--- title: Resource methods linkTitle: Resource description: Use these methods with global, page, and remote Resource objects. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/000077500000000000000000000000001507671574500235775ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Get.md000066400000000000000000000022711507671574500246420ustar00rootroot00000000000000--- title: Get description: Returns the value of the given argument. categories: [] keywords: [] params: functions_and_methods: returnType: any signatures: [SHORTCODE.Get ARG] --- Specify the argument by position or by name. When calling a shortcode within Markdown, use either positional or named argument, but not both. > [!note] > Some shortcodes support positional arguments, some support named arguments, and others support both. Refer to the shortcode's documentation for usage details. ## Positional arguments This shortcode call uses positional arguments: ```text {file="content/about.md"} {{}} ``` To retrieve arguments by position: ```go-html-template {file="layouts/_shortcodes/myshortcode.html"} {{ printf "%s %s." (.Get 0) (.Get 1) }} → Hello world. ``` ## Named arguments This shortcode call uses named arguments: ```text {file="content/about.md"} {{}} ``` To retrieve arguments by name: ```go-html-template {file="layouts/_shortcodes/myshortcode.html"} {{ printf "%s %s." (.Get "greeting") (.Get "firstName") }} → Hello world. ``` > [!note] > Argument names are case-sensitive. gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Inner.md000066400000000000000000000104121507671574500251720ustar00rootroot00000000000000--- title: Inner description: Returns the content between opening and closing shortcode tags, applicable when the shortcode call includes a closing tag. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [SHORTCODE.Inner] --- This content: ```text {file="content/services.md"} {{}} We design the **best** widgets in the world. {{}} ``` With this shortcode: ```go-html-template {file="layouts/_shortcodes/card.html"}
        {{ with .Get "title" }}
        {{ . }}
        {{ end }}
        {{ .Inner | strings.TrimSpace }}
        ``` Is rendered to: ```html
        Product Design
        We design the **best** widgets in the world.
        ``` > [!note] > Content between opening and closing shortcode tags may include leading and/or trailing newlines, depending on placement within the Markdown. Use the [`strings.TrimSpace`] function as shown above to remove carriage returns and newlines. > [!note] > In the example above, the value returned by `Inner` is Markdown, but it was rendered as plain text. Use either of the following approaches to render Markdown to HTML. ## Use RenderString Let's modify the example above to pass the value returned by `Inner` through the [`RenderString`] method on the `Page` object: ```go-html-template {file="layouts/_shortcodes/card.html"}
        {{ with .Get "title" }}
        {{ . }}
        {{ end }}
        {{ .Inner | strings.TrimSpace | .Page.RenderString }}
        ``` Hugo renders this to: ```html
        Product design
        We produce the best widgets in the world.
        ``` You can use the [`markdownify`] function instead of the `RenderString` method, but the latter is more flexible. See [details]. ## Alternative notation Instead of calling the shortcode with the `{{}}` notation, use the `{{%/* */%}}` notation: ```text {file="content/services.md"} {{%/* card title="Product Design" */%}} We design the **best** widgets in the world. {{%/* /card */%}} ``` When you use the `{{%/* */%}}` notation, Hugo renders the entire shortcode as Markdown, requiring the following changes. First, configure the renderer to allow raw HTML within Markdown: {{< code-toggle file=hugo >}} [markup.goldmark.renderer] unsafe = true {{< /code-toggle >}} This configuration is not unsafe if _you_ control the content. Read more about Hugo's [security model]. Second, because we are rendering the entire shortcode as Markdown, we must adhere to the rules governing [indentation] and inclusion of [raw HTML blocks] as provided in the [CommonMark] specification. ```go-html-template {file="layouts/_shortcodes/card.html"}
        {{ with .Get "title" }}
        {{ . }}
        {{ end }}
        {{ .Inner | strings.TrimSpace }}
        ``` The difference between this and the previous example is subtle but required. Note the change in indentation, the addition of a blank line, and removal of the `RenderString` method. ```diff --- layouts/_shortcodes/a.html +++ layouts/_shortcodes/b.html @@ -1,8 +1,9 @@
        {{ with .Get "title" }} -
        {{ . }}
        +
        {{ . }}
        {{ end }}
        - {{ .Inner | strings.TrimSpace | .Page.RenderString }} + + {{ .Inner | strings.TrimSpace }}
        ``` > [!note] > Don't process the `Inner` value with `RenderString` or `markdownify` when using [Markdown notation] to call the shortcode. [`markdownify`]: /functions/transform/markdownify/ [`RenderString`]: /methods/page/renderstring/ [`strings.TrimSpace`]: /functions/strings/trimspace/ [CommonMark]: https://spec.commonmark.org/current/ [details]: /methods/page/renderstring/ [indentation]: https://spec.commonmark.org/current/#indented-code-blocks [Markdown notation]: /content-management/shortcodes/#notation [raw HTML blocks]: https://spec.commonmark.org/current/#html-blocks [security model]: /about/security/ gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/InnerDeindent.md000066400000000000000000000052211507671574500266470ustar00rootroot00000000000000--- title: InnerDeindent description: Returns the content between opening and closing shortcode tags, with indentation removed, applicable when the shortcode call includes a closing tag. categories: [] keywords: [] params: functions_and_methods: returnType: template.HTML signatures: [SHORTCODE.InnerDeindent] --- Similar to the [`Inner`] method, `InnerDeindent` returns the content between opening and closing shortcode tags. However, with `InnerDeindent`, indentation before the content is removed. This allows us to effectively bypass the rules governing [indentation] as provided in the [CommonMark] specification. Consider this Markdown, an unordered list with a small gallery of thumbnail images within each list item: ```text {file="content/about.md"} - Gallery one {{}} ![kitten a](thumbnails/a.jpg) ![kitten b](thumbnails/b.jpg) {{}} - Gallery two {{}} ![kitten c](thumbnails/c.jpg) ![kitten d](thumbnails/d.jpg) {{}} ``` In the example above, notice that the content between the opening and closing shortcode tags is indented by four spaces. Per the CommonMark specification, this is treated as an indented code block. With this shortcode, calling `Inner` instead of `InnerDeindent`: ```go-html-template {file="layouts/_shortcodes/gallery.html"} ``` Hugo renders the Markdown to: ```html
        • Gallery one

        • Gallery two

        ``` Although technically correct per the CommonMark specification, this is not what we want. If we remove the indentation using the `InnerDeindent` method: ```go-html-template {file="layouts/_shortcodes/gallery.html"} ``` Hugo renders the Markdown to: ```html
        • Gallery one

        • Gallery two

        ``` [commonmark]: https://commonmark.org/ [indentation]: https://spec.commonmark.org/current/#indented-code-blocks [`Inner`]: /methods/shortcode/inner/ gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/IsNamedParams.md000066400000000000000000000014451507671574500266110ustar00rootroot00000000000000--- title: IsNamedParams description: Reports whether the shortcode call uses named arguments. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [SHORTCODE.IsNamedParams] --- To support both positional and named arguments when calling a shortcode, use the `IsNamedParams` method to determine how the shortcode was called. With this _shortcode_ template: ```go-html-template {file="layouts/_shortcodes/myshortcode.html"} {{ if .IsNamedParams }} {{ printf "%s %s." (.Get "greeting") (.Get "firstName") }} {{ else }} {{ printf "%s %s." (.Get 0) (.Get 1) }} {{ end }} ``` Both of these calls return the same value: ```text {file="content/about.md"} {{}} {{}} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Name.md000066400000000000000000000014371507671574500250060ustar00rootroot00000000000000--- title: Name description: Returns the shortcode file name, excluding the file extension. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SHORTCODE.Name] --- The `Name` method is useful for error reporting. For example, if your shortcode requires a "greeting" argument: ```go-html-template {file="layouts/_shortcodes/myshortcode.html"} {{ $greeting := "" }} {{ with .Get "greeting" }} {{ $greeting = . }} {{ else }} {{ errorf "The %q shortcode requires a 'greeting' argument. See %s" .Name .Position }} {{ end }} ``` In the absence of a "greeting" argument, Hugo will throw an error message and fail the build: ```text ERROR The "myshortcode" shortcode requires a 'greeting' argument. See "/home/user/project/content/about.md:11:1" ``` gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Ordinal.md000066400000000000000000000040241507671574500255110ustar00rootroot00000000000000--- title: Ordinal description: Returns the zero-based ordinal of the shortcode in relation to its parent. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [SHORTCODE.Ordinal] --- The `Ordinal` method returns the zero-based ordinal of the shortcode in relation to its parent. If the parent is the page itself, the ordinal represents the position of this shortcode in the page content. > [!note] > Hugo increments the ordinal with each shortcode call, regardless of the specific shortcode type. This means that the ordinal value is tracked sequentially across all shortcodes within a given page. This method is useful for, among other things, assigning unique element IDs when a shortcode is called two or more times from the same page. For example: ```text {file="content/about.md"} {{}} {{}} ``` This shortcode performs error checking, then renders an HTML `img` element with a unique `id` attribute: ```go-html-template {file="layouts/_shortcodes/img.html"} {{ $src := "" }} {{ with .Get "src" }} {{ $src = . }} {{ with resources.Get $src }} {{ $id := printf "img-%03d" $.Ordinal }} {{ else }} {{ errorf "The %q shortcode was unable to find %s. See %s" $.Name $src $.Position }} {{ end }} {{ else }} {{ errorf "The %q shortcode requires a 'src' argument. See %s" .Name .Position }} {{ end }} ``` Hugo renders the page to: ```html ``` > [!note] > In the _shortcode_ template above, the [`with`] statement is used to create conditional blocks. Remember that the `with` statement binds context (the dot) to its expression. Inside of a `with` block, preface shortcode method calls with a `$` to access the top-level context passed into the template. [`with`]: /functions/go-template/with/ gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Page.md000066400000000000000000000014671507671574500250050ustar00rootroot00000000000000--- title: Page description: Returns the Page object from which the shortcode was called. categories: [] keywords: [] params: functions_and_methods: returnType: hugolib.pageForShortcode signatures: [SHORTCODE.Page] --- With this content: {{< code-toggle file=content/books/les-miserables.md fm=true >}} title = 'Les Misérables' author = 'Victor Hugo' publication_year = 1862 isbn = '978-0451419439' {{< /code-toggle >}} Calling this shortcode: ```text {{}} ``` We can access the front matter values using the `Page` method: ```go-html-template {file="layouts/_shortcodes/book-details.html"}
        • Title: {{ .Page.Title }}
        • Author: {{ .Page.Params.author }}
        • Published: {{ .Page.Params.publication_year }}
        • ISBN: {{ .Page.Params.isbn }}
        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Params.md000066400000000000000000000014611507671574500253460ustar00rootroot00000000000000--- title: Params description: Returns a collection of the shortcode arguments. categories: [] keywords: [] params: functions_and_methods: returnType: any signatures: [SHORTCODE.Params] --- When you call a shortcode using positional arguments, the `Params` method returns a slice. ```text {file="content/about.md"} {{}} ``` ```go-html-template {file="layouts/_shortcodes/myshortcode.html"} {{ index .Params 0 }} → Hello {{ index .Params 1 }} → world ``` When you call a shortcode using named arguments, the `Params` method returns a map. ```text {file="content/about.md"} {{}} ``` ```go-html-template {file="layouts/_shortcodes/myshortcode.html"} {{ .Params.greeting }} → Hello {{ .Params.name }} → world ``` gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Parent.md000066400000000000000000000025061507671574500253550ustar00rootroot00000000000000--- title: Parent description: Returns the parent shortcode context in nested shortcodes. categories: [] keywords: [] params: functions_and_methods: returnType: hugolib.ShortcodeWithPage signatures: [SHORTCODE.Parent] --- This is useful for inheritance of common shortcode arguments from the root. In this contrived example, the "greeting" shortcode is the parent, and the "now" shortcode is child. ```text {file="content/welcome.md"} {{}} Welcome. Today is {{}}. {{}} ``` ```go-html-template {file="layouts/_shortcodes/greeting.html"}
        {{ .Inner | strings.TrimSpace | .Page.RenderString }}
        ``` ```go-html-template {file="layouts/_shortcodes/now.html"} {{- $dateFormat := "January 2, 2006 15:04:05" }} {{- with .Params }} {{- with .dateFormat }} {{- $dateFormat = . }} {{- end }} {{- else }} {{- with .Parent.Params }} {{- with .dateFormat }} {{- $dateFormat = . }} {{- end }} {{- end }} {{- end }} {{- now | time.Format $dateFormat -}} ``` The "now" shortcode formats the current time using: 1. The `dateFormat` argument passed to the "now" shortcode, if present 1. The `dateFormat` argument passed to the "greeting" shortcode, if present 1. The default layout string defined at the top of the shortcode gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Position.md000066400000000000000000000016261507671574500257320ustar00rootroot00000000000000--- title: Position description: Returns the file name and position from which the shortcode was called. categories: [] keywords: [] params: functions_and_methods: returnType: text.Position signatures: [SHORTCODE.Position] --- The `Position` method is useful for error reporting. For example, if your shortcode requires a "greeting" argument: ```go-html-template {file="layouts/_shortcodes/myshortcode.html"} {{ $greeting := "" }} {{ with .Get "greeting" }} {{ $greeting = . }} {{ else }} {{ errorf "The %q shortcode requires a 'greeting' argument. See %s" .Name .Position }} {{ end }} ``` In the absence of a "greeting" argument, Hugo will throw an error message and fail the build: ```text ERROR The "myshortcode" shortcode requires a 'greeting' argument. See "/home/user/project/content/about.md:11:1" ``` > [!note] > The position can be expensive to calculate. Limit its use to error reporting. gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Ref.md000066400000000000000000000016711507671574500246420ustar00rootroot00000000000000--- title: Ref description: Returns the absolute URL of the page with the given path, language, and output format. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SHORTCODE.Ref OPTIONS] --- ## Usage The `Ref` method accepts a single argument: an options map. ## Options {{% include "_common/ref-and-relref-options.md" %}} ## Examples The following examples show the rendered output for a page on the English version of the site: ```go-html-template {{ $opts := dict "path" "/books/book-1" }} {{ .Ref $opts }} → https://example.org/en/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" }} {{ .Ref $opts }} → https://example.org/de/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" "outputFormat" "json" }} {{ .Ref $opts }} → https://example.org/de/books/book-1/index.json ``` ## Error handling {{% include "_common/ref-and-relref-error-handling.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/RelRef.md000066400000000000000000000016221507671574500253010ustar00rootroot00000000000000--- title: RelRef description: Returns the relative URL of the page with the given path, language, and output format. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SHORTCODE.RelRef OPTIONS] --- ## Usage The `RelRef` method accepts a single argument: an options map. ## Options {{% include "_common/ref-and-relref-options.md" %}} ## Examples The following examples show the rendered output for a page on the English version of the site: ```go-html-template {{ $opts := dict "path" "/books/book-1" }} {{ .RelRef $opts }} → /en/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" }} {{ .RelRef $opts }} → /de/books/book-1/ {{ $opts := dict "path" "/books/book-1" "lang" "de" "outputFormat" "json" }} {{ .RelRef $opts }} → /de/books/book-1/index.json ``` ## Error handling {{% include "_common/ref-and-relref-error-handling.md" %}} gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Scratch.md000066400000000000000000000014371507671574500255150ustar00rootroot00000000000000--- title: Scratch description: Returns a "scratch pad" to store and manipulate data, scoped to the current shortcode. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Scratch signatures: [SHORTCODE.Scratch] expiryDate: 2026-11-18 # deprecated 2024-11-18 (soft) --- {{< deprecated-in 0.139.0 >}} Use the [`SHORTCODE.Store`] method instead. This is a soft deprecation. This method will be removed in a future release, but the removal date has not been established. Although Hugo will not emit a warning if you continue to use this method, you should begin using `SHORTCODE.Store` as soon as possible. Beginning with v0.139.0 the `SHORTCODE.Scratch` method is aliased to `SHORTCODE.Store`. [`SHORTCODE.Store`]: /methods/shortcode/store/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Site.md000066400000000000000000000004311507671574500250230ustar00rootroot00000000000000--- title: Site description: Returns the Site object. categories: [] keywords: [] params: functions_and_methods: returnType: page.siteWrapper signatures: [SHORTCODE.Site] --- See [Site methods]. [Site methods]: /methods/site/ ```go-html-template {{ .Site.Title }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/Store.md000066400000000000000000000016341507671574500252210ustar00rootroot00000000000000--- title: Store description: Returns a "scratch pad" to store and manipulate data, scoped to the current shortcode. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Scratch signatures: [SHORTCODE.Store] --- {{< new-in 0.139.0 />}} Use the `Store` method to create a [scratch pad](g) to store and manipulate data, scoped to the current shortcode. To create a scratch pad with a different [scope](g), refer to the [scope](#scope) section below. > [!note] > With the introduction of the [`newScratch`] function, and the ability to [assign values to template variables] after initialization, the `Store` method within a shortcode is mostly obsolete. {{% include "_common/store-methods.md" %}} {{% include "_common/scratch-pad-scope.md" %}} [`newScratch`]: /functions/collections/newScratch/ [assign values to template variables]: https://go.dev/doc/go1.11#texttemplatepkgtexttemplate gohugoio-hugo-6abdaca/docs/content/en/methods/shortcode/_index.md000066400000000000000000000002571507671574500253730ustar00rootroot00000000000000--- title: Shortcode methods linkTitle: Shortcode description: Use these methods in your shortcode templates. categories: [] keywords: [] aliases: [/variables/shortcodes] --- gohugoio-hugo-6abdaca/docs/content/en/methods/site/000077500000000000000000000000001507671574500225515ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/site/AllPages.md000066400000000000000000000011651507671574500245660ustar00rootroot00000000000000--- title: AllPages description: Returns a collection of all pages in all languages. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [SITE.AllPages] --- This method returns all page [kinds](g) in all languages, in the [default sort order](g). That includes the home page, section pages, taxonomy pages, term pages, and regular pages. In most cases you should use the [`RegularPages`] method instead. [`RegularPages`]: /methods/site/regularpages/ ```go-html-template {{ range .Site.AllPages }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/BaseURL.md000066400000000000000000000014371507671574500243350ustar00rootroot00000000000000--- title: BaseURL description: Returns the base URL as defined in the site configuration. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SITE.BaseURL] --- Site configuration: {{< code-toggle file=hugo >}} baseURL = 'https://example.org/docs/' {{< /code-toggle >}} Template: ```go-html-template {{ .Site.BaseURL }} → https://example.org/docs/ ``` > [!note] > There is almost never a good reason to use this method in your templates. Its usage tends to be fragile due to misconfiguration. > > Use the [`absURL`], [`absLangURL`], [`relURL`], or [`relLangURL`] functions instead. [`absLangURL`]: /functions/urls/absLangURL/ [`absURL`]: /functions/urls/absURL/ [`relLangURL`]: /functions/urls/relLangURL/ [`relURL`]: /functions/urls/relURL/ gohugoio-hugo-6abdaca/docs/content/en/methods/site/BuildDrafts.md000066400000000000000000000012101507671574500252700ustar00rootroot00000000000000--- title: BuildDrafts description: Reports whether the current build includes draft pages. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [SITE.BuildDrafts] --- By default, draft pages are not published when building a site. You can change this behavior with a command line flag: ```sh hugo --buildDrafts ``` Or by setting `buildDrafts` to `true` in your site configuration: {{< code-toggle file=hugo >}} buildDrafts = true {{< /code-toggle >}} Use the `BuildDrafts` method on a `Site` object to determine the current configuration: ```go-html-template {{ .Site.BuildDrafts }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/Config.md000066400000000000000000000023331507671574500243010ustar00rootroot00000000000000--- title: Config description: Returns a subset of the site configuration. categories: [] keywords: [] params: functions_and_methods: returnType: page.SiteConfig signatures: [SITE.Config] --- The `Config` method on a `Site` object provides access to a subset of the site configuration, specifically the `services` and `privacy` keys. ## Services See [configure services](/configuration/services). For example, to use Hugo's built-in Google Analytics template you must add a [Google tag ID]: [Google tag ID]: https://support.google.com/tagmanager/answer/12326985?hl=en {{< code-toggle file=hugo >}} [services.googleAnalytics] id = 'G-XXXXXXXXX' {{< /code-toggle >}} To access this value from a template: ```go-html-template {{ .Site.Config.Services.GoogleAnalytics.ID }} → G-XXXXXXXXX ``` You must capitalize each identifier as shown above. ## Privacy See [configure privacy](/configuration/privacy). For example, to disable usage of the built-in YouTube shortcode: {{< code-toggle file=hugo >}} [privacy.youtube] disable = true {{< /code-toggle >}} To access this value from a template: ```go-html-template {{ .Site.Config.Privacy.YouTube.Disable }} → true ``` You must capitalize each identifier as shown above. gohugoio-hugo-6abdaca/docs/content/en/methods/site/Copyright.md000066400000000000000000000006471507671574500250520ustar00rootroot00000000000000--- title: Copyright description: Returns the copyright notice as defined in the site configuration. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SITE.Copyright] --- Site configuration: {{< code-toggle file=hugo >}} copyright = '© 2023 ABC Widgets, Inc.' {{< /code-toggle >}} Template: ```go-html-template {{ .Site.Copyright }} → © 2023 ABC Widgets, Inc. ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/Data.md000066400000000000000000000051641507671574500237520ustar00rootroot00000000000000--- title: Data description: Returns a data structure composed from the files in the data directory. categories: [] keywords: [] params: functions_and_methods: returnType: map signatures: [SITE.Data] --- Use the `Data` method on a `Site` object to access data within the `data` directory, or within any directory [mounted] to the `data` directory. Supported data formats include JSON, TOML, YAML, and XML. > [!note] > Although Hugo can unmarshal CSV files with the [`transform.Unmarshal`] function, do not place CSV files in the `data` directory. You cannot access data within CSV files using this method. Consider this `data` directory: ```text data/ ├── books/ │ ├── fiction.yaml │ └── nonfiction.yaml ├── films.json ├── paintings.xml └── sculptures.toml ``` And these data files: ```yaml {file="data/books/fiction.yaml"} - title: The Hunchback of Notre Dame author: Victor Hugo isbn: 978-0140443530 - title: Les Misérables author: Victor Hugo isbn: 978-0451419439 ``` ```yaml {file="data/books/nonfiction.yaml"} - title: The Ancien Régime and the Revolution author: Alexis de Tocqueville isbn: 978-0141441641 - title: Interpreting the French Revolution author: François Furet isbn: 978-0521280495 ``` Access the data by [chaining](g) the [identifiers](g): ```go-html-template {{ range $category, $books := .Site.Data.books }}

        {{ $category | title }}

          {{ range $books }}
        • {{ .title }} ({{ .isbn }})
        • {{ end }}
        {{ end }} ``` Hugo renders this to: ```html

        Fiction

        • The Hunchback of Notre Dame (978-0140443530)
        • Les Misérables (978-0451419439)

        Nonfiction

        • The Ancien Régime and the Revolution (978-0141441641)
        • Interpreting the French Revolution (978-0521280495)
        ``` To limit the listing to fiction, and sort by title: ```go-html-template
          {{ range sort .Site.Data.books.fiction "title" }}
        • {{ .title }} ({{ .author }})
        • {{ end }}
        ``` To find a fiction book by ISBN: ```go-html-template {{ range where .Site.Data.books.fiction "isbn" "978-0140443530" }}
      1. {{ .title }} ({{ .author }})
      2. {{ end }} ``` In the template examples above, each of the keys is a valid identifier. For example, none of the keys contains a hyphen. To access a key that is not a valid identifier, use the [`index`] function. For example: ```go-html-template {{ index .Site.Data.books "historical-fiction" }} ``` [`index`]: /functions/collections/indexfunction/ [`transform.Unmarshal`]: /functions/transform/unmarshal/ [mounted]: /configuration/module/#mounts gohugoio-hugo-6abdaca/docs/content/en/methods/site/DisqusShortname.md000066400000000000000000000007241507671574500262270ustar00rootroot00000000000000--- title: DisqusShortname description: Returns the Disqus shortname as defined in the site configuration. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SITE.DisqusShortname] expiryDate: 2025-10-30 # deprecated 2023-10-30 in v0.120.0 --- {{< deprecated-in 0.120.0 >}} Use [`Site.Config.Services.Disqus.Shortname`] instead. [`Site.Config.Services.Disqus.Shortname`]: /methods/site/config/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/site/GetPage.md000066400000000000000000000050621507671574500244120ustar00rootroot00000000000000--- title: GetPage description: Returns a Page object from the given path. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [SITE.GetPage PATH] --- The `GetPage` method is also available on `Page` objects, allowing you to specify a path relative to the current page. See [details]. [details]: /methods/page/getpage/ When using the `GetPage` method on a `Site` object, specify a path relative to the `content` directory. If Hugo cannot resolve the path to a page, the method returns nil. Consider this content structure: ```text content/ ├── works/ │ ├── paintings/ │ │ ├── _index.md │ │ ├── starry-night.md │ │ └── the-mona-lisa.md │ ├── sculptures/ │ │ ├── _index.md │ │ ├── david.md │ │ └── the-thinker.md │ └── _index.md └── _index.md ``` This _home_ template: ```go-html-template {file="layouts/home.html"} {{ with .Site.GetPage "/works/paintings" }}
          {{ range .Pages }}
        • {{ .Title }} by {{ .Params.artist }}
        • {{ end }}
        {{ end }} ``` Is rendered to: ```html
        • Starry Night by Vincent van Gogh
        • The Mona Lisa by Leonardo da Vinci
        ``` To get a regular page instead of a section page: ```go-html-template {file="layouts/home.html"} {{ with .Site.GetPage "/works/paintings/starry-night" }} {{ .Title }} → Starry Night {{ .Params.artist }} → Vincent van Gogh {{ end }} ``` ## Multilingual projects With multilingual projects, the `GetPage` method on a `Site` object resolves the given path to a page in the current language. To get a page from a different language, query the `Sites` object: ```go-html-template {{ with where .Site.Sites "Language.Lang" "eq" "de" }} {{ with index . 0 }} {{ with .GetPage "/works/paintings/starry-night" }} {{ .Title }} → Sternenklare Nacht {{ end }} {{ end }} {{ end }} ``` ## Page bundles Consider this content structure: ```text content/ ├── headless/ │ ├── a.jpg │ ├── b.jpg │ ├── c.jpg │ └── index.md <-- front matter: headless = true └── _index.md ``` In the _home_ template, use the `GetPage` method on a `Site` object to render all the images in the headless [page bundle](g): ```go-html-template {file="layouts/home.html"} {{ with .Site.GetPage "/headless" }} {{ range .Resources.ByType "image" }} {{ end }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/GoogleAnalytics.md000066400000000000000000000007441507671574500261640ustar00rootroot00000000000000--- title: GoogleAnalytics description: Returns the Google Analytics tracking ID as defined in the site configuration. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SITE.GoogleAnalytics] expiryDate: 2025-10-30 # deprecated 2023-10-30 in v0.120.0 --- {{< deprecated-in 0.120.0 >}} Use [`Site.Config.Services.GoogleAnalytics.ID`] instead. [`Site.Config.Services.GoogleAnalytics.ID`]: /methods/site/config/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/site/Home.md000066400000000000000000000007711507671574500237700ustar00rootroot00000000000000--- title: Home description: Returns the home Page object for the given site. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [SITE.Home] --- This method is useful for obtaining a link to the home page. Site configuration: {{< code-toggle file=hugo >}} baseURL = 'https://example.org/docs/' {{< /code-toggle >}} Template: ```go-html-template {{ .Site.Home.Permalink }} → https://example.org/docs/ {{ .Site.Home.RelPermalink }} → /docs/ ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/IsDevelopment.md000066400000000000000000000006641507671574500256570ustar00rootroot00000000000000--- title: IsDevelopment description: Reports whether the current running environment is “development”. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [SITE.IsDevelopment] expiryDate: 2025-10-30 # deprecated 2023-10-30 in v0.120.0 --- {{< deprecated-in 0.120.0 >}} Use [`hugo.IsDevelopment`] instead. [`hugo.IsDevelopment`]: /functions/hugo/isdevelopment/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/site/IsMultiLingual.md000066400000000000000000000006561507671574500260040ustar00rootroot00000000000000--- title: IsMultiLingual description: Reports whether there are two or more configured languages. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [SITE.IsMultiLingual] expiryDate: 2026-03-16 # deprecated 2024-03-16 in 0.124.0 --- {{< deprecated-in 0.124.0 >}} Use [`hugo.IsMultilingual`] instead. [`hugo.IsMultilingual`]: /functions/hugo/ismultilingual/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/site/IsServer.md000066400000000000000000000006211507671574500246340ustar00rootroot00000000000000--- title: IsServer description: Reports whether the built-in development server is running. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [SITE.IsServer] expiryDate: 2025-10-30 # deprecated 2023-10-30 in v0.120.0 --- {{< deprecated-in 0.120.0 >}} Use [`hugo.IsServer`] instead. [`hugo.IsServer`]: /functions/hugo/isserver/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/site/Language.md000066400000000000000000000035621507671574500246240ustar00rootroot00000000000000--- title: Language description: Returns the language object for the given site. categories: [] keywords: [] params: functions_and_methods: returnType: langs.Language signatures: [SITE.Language] --- The `Language` method on a `Site` object returns the language object for the given site. The language object points to the language definition in the site configuration. You can also use the `Language` method on a `Page` object. See [details]. ## Methods The examples below assume the following in your site configuration: {{< code-toggle file=hugo >}} [languages.de] languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' weight = 1 {{< /code-toggle >}} ### Lang (`string`) The language tag as defined by [RFC 5646]. ```go-html-template {{ .Site.Language.Lang }} → de ``` ### LanguageCode (`string`) The language code from the site configuration. Falls back to `Lang` if not defined. ```go-html-template {{ .Site.Language.LanguageCode }} → de-DE ``` ### LanguageDirection (`string`) The language direction from the site configuration, either `ltr` or `rtl`. ```go-html-template {{ .Site.Language.LanguageDirection }} → ltr ``` ### LanguageName (`string`) The language name from the site configuration. ```go-html-template {{ .Site.Language.LanguageName }} → Deutsch ``` ### Weight (`int`) The language weight from the site configuration which determines its order in the slice of languages returned by the `Languages` method on a `Site` object. ```go-html-template {{ .Site.Language.Weight }} → 1 ``` ## Example Some of the methods above are commonly used in a base template as attributes for the `html` element. ```go-html-template ``` [details]: /methods/page/language/ [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646 gohugoio-hugo-6abdaca/docs/content/en/methods/site/LanguagePrefix.md000066400000000000000000000021101507671574500257660ustar00rootroot00000000000000--- title: LanguagePrefix description: Returns the URL language prefix, if any, for the given site. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SITE.LanguagePrefix] --- Consider this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = false [languages.de] languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.en] languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' title = 'Project Documentation' weight = 2 {{< /code-toggle >}} When visiting the German language site: ```go-html-template {{ .Site.LanguagePrefix }} → "" ``` When visiting the English language site: ```go-html-template {{ .Site.LanguagePrefix }} → /en ``` If you change `defaultContentLanguageInSubdir` to `true`, when visiting the German language site: ```go-html-template {{ .Site.LanguagePrefix }} → /de ``` You may use the `LanguagePrefix` method with both monolingual and multilingual sites. gohugoio-hugo-6abdaca/docs/content/en/methods/site/Languages.md000066400000000000000000000023351507671574500250040ustar00rootroot00000000000000--- title: Languages description: Returns a collection of language objects for all sites, ordered by language weight. categories: [] keywords: [] params: functions_and_methods: returnType: langs.Languages signatures: [SITE.Languages] --- The `Languages` method on a `Site` object returns a collection of language objects for all sites, ordered by language weight. Each language object points to its language definition in the site configuration. To inspect the data structure: ```go-html-template
        {{ debug.Dump .Site.Languages }}
        ``` With this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = false [languages.de] languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.en] languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' title = 'Project Documentation' weight = 2 {{< /code-toggle >}} This template: ```go-html-template
          {{ range .Site.Languages }}
        • {{ .Title }} ({{ .LanguageName }})
        • {{ end }}
        ``` Is rendered to: ```html
        • Projekt Dokumentation (Deutsch)
        • Project Documentation (English)
        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/LastChange.md000066400000000000000000000006171507671574500251100ustar00rootroot00000000000000--- title: LastChange description: Returns the last modification date of site content. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [SITE.LastChange] expiryDate: 2026-02-19 # deprecated 2024-02-19 in v0.123.0 --- {{< deprecated-in 0.123.0 >}} Use [`.Site.Lastmod`] instead. [`.Site.Lastmod`]: /methods/site/lastmod/ {{< /deprecated-in >}} gohugoio-hugo-6abdaca/docs/content/en/methods/site/Lastmod.md000066400000000000000000000010551507671574500244770ustar00rootroot00000000000000--- title: Lastmod description: Returns the last modification date of site content. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [SITE.Lastmod] --- {{< new-in 0.123.0 />}} The `Lastmod` method on a `Site` object returns a [`time.Time`] value. Use this with time [functions] and [methods]. For example: ```go-html-template {{ .Site.Lastmod | time.Format ":date_long" }} → January 31, 2024 ``` [`time.Time`]: https://pkg.go.dev/time#Time [functions]: /functions/time/ [methods]: /methods/time/ gohugoio-hugo-6abdaca/docs/content/en/methods/site/MainSections.md000066400000000000000000000026241507671574500254730ustar00rootroot00000000000000--- title: MainSections description: Returns a slice of the main section names as defined in the site configuration, falling back to the top-level section with the most pages. categories: [] keywords: [] params: functions_and_methods: returnType: '[]string' signatures: [SITE.MainSections] --- Site configuration: {{< code-toggle file=hugo >}} mainSections = ['books','films'] {{< /code-toggle >}} Template: ```go-html-template {{ .Site.MainSections }} → [books films] ``` If `mainSections` is not defined in the site configuration, this method returns a slice with one element---the top-level section with the most pages. With this content structure, the "films" section has the most pages: ```text content/ ├── books/ │ ├── book-1.md │ └── book-2.md ├── films/ │ ├── film-1.md │ ├── film-2.md │ └── film-3.md └── _index.md ``` Template: ```go-html-template {{ .Site.MainSections }} → [films] ``` When creating a theme, instead of hardcoding section names when listing the most relevant pages on the front page, instruct site authors to set `mainSections` in their site configuration. Then your _home_ template can do something like this: ```go-html-template {file="layouts/home.html"} {{ range where .Site.RegularPages "Section" "in" .Site.MainSections }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/Menus.md000066400000000000000000000043041507671574500241630ustar00rootroot00000000000000--- title: Menus description: Returns a collection of menu objects for the given site. categories: [] keywords: [] params: functions_and_methods: returnType: navigation.Menus signatures: [SITE.Menus] --- The `Menus` method on a `Site` object returns a collection of menus, where each menu contains one or more entries, either flat or nested. Each entry points to a page within the site, or to an external resource. > [!note] > Menus can be defined and localized in several ways. Please see the [menus] section for a complete explanation and examples. A site can have multiple menus. For example, a main menu and a footer menu: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Home' pageRef = '/' weight = 10 [[menus.main]] name = 'Books' pageRef = '/books' weight = 20 [[menus.main]] name = 'Films' pageRef = '/films' weight = 30 [[menus.footer]] name = 'Legal' pageRef = '/legal' weight = 10 [[menus.footer]] name = 'Privacy' pageRef = '/privacy' weight = 20 {{< /code-toggle >}} This template renders the main menu: ```go-html-template {{ with site.Menus.main }} {{ end }} ``` When viewing the home page, the result is: ```html ``` When viewing the "books" page, the result is: ```html ``` You will typically render a menu using a _partial_ template. As the active menu entry will be different on each page, use the [`partial`] function to call the template. Do not use the [`partialCached`] function. The example above is simplistic. Please see the [menu templates] section for more information. [`partial`]: /functions/partials/include/ [`partialCached`]: /functions/partials/includecached/ [menu templates]: /templates/menu/ [menus]: /content-management/menus/ gohugoio-hugo-6abdaca/docs/content/en/methods/site/Pages.md000066400000000000000000000011421507671574500241300ustar00rootroot00000000000000--- title: Pages description: Returns a collection of all pages. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [SITE.Pages] --- This method returns all page [kinds](g) in the current language, in the [default sort order](g). That includes the home page, section pages, taxonomy pages, term pages, and regular pages. In most cases you should use the [`RegularPages`] method instead. [`RegularPages`]: /methods/site/regularpages/ ```go-html-template {{ range .Site.Pages }}

        {{ .LinkTitle }}

        {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/Param.md000066400000000000000000000011531507671574500241330ustar00rootroot00000000000000--- title: Param description: Returns the site parameter with the given key. categories: [] keywords: [] params: functions_and_methods: returnType: any signatures: [SITE.Param KEY] --- The `Param` method on a `Site` object is a convenience method to return the value of a user-defined parameter in the site configuration. {{< code-toggle file=hugo >}} [params] display_toc = true {{< /code-toggle >}} ```go-html-template {{ .Site.Param "display_toc" }} → true ``` The above is equivalent to either of these: ```go-html-template {{ .Site.Params.display_toc }} {{ index .Site.Params "display_toc" }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/Params.md000066400000000000000000000022701507671574500243170ustar00rootroot00000000000000--- title: Params description: Returns a map of custom parameters as defined in the site configuration. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Params signatures: [SITE.Params] --- With this site configuration: {{< code-toggle file=hugo >}} [params] subtitle = 'The Best Widgets on Earth' copyright-year = '2023' [params.author] email = 'jsmith@example.org' name = 'John Smith' [params.layouts] rfc_1123 = 'Mon, 02 Jan 2006 15:04:05 MST' rfc_3339 = '2006-01-02T15:04:05-07:00' {{< /code-toggle >}} Access the custom parameters by [chaining](g) the [identifiers](g): ```go-html-template {{ .Site.Params.subtitle }} → The Best Widgets on Earth {{ .Site.Params.author.name }} → John Smith {{ $layout := .Site.Params.layouts.rfc_1123 }} {{ .Site.Lastmod.Format $layout }} → Tue, 17 Oct 2023 13:21:02 PDT ``` In the template example above, each of the keys is a valid identifier. For example, none of the keys contains a hyphen. To access a key that is not a valid identifier, use the [`index`] function: ```go-html-template {{ index .Site.Params "copyright-year" }} → 2023 ``` [`index`]: /functions/collections/indexfunction/ gohugoio-hugo-6abdaca/docs/content/en/methods/site/RegularPages.md000066400000000000000000000014151507671574500254550ustar00rootroot00000000000000--- title: RegularPages description: Returns a collection of all regular pages. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [SITE.RegularPages] --- The `RegularPages` method on a `Site` object returns a collection of all [regular pages](g), in the [default sort order](g). ```go-html-template {{ range .Site.RegularPages }}

        {{ .LinkTitle }}

        {{ end }} ``` {{% glossary-term "default sort order" %}} [default sort order](g) To change the sort order, use any of the `Pages` [sorting methods]. For example: ```go-html-template {{ range .Site.RegularPages.ByTitle }}

        {{ .Title }}

        {{ end }} ``` [sorting methods]: /methods/pages/ gohugoio-hugo-6abdaca/docs/content/en/methods/site/Sections.md000066400000000000000000000014251507671574500246640ustar00rootroot00000000000000--- title: Sections description: Returns a collection of top-level section pages. categories: [] keywords: [] params: functions_and_methods: returnType: page.Pages signatures: [SITE.Sections] --- The `Sections` method on a `Site` object returns a collection of top-level [section pages](g), in the [default sort order](g). Given this content structure: ```text content/ ├── books/ │ ├── book-1.md │ └── book-2.md ├── films/ │ ├── film-1.md │ └── film-2.md └── _index.md ``` This template: ```go-html-template {{ range .Site.Sections }}

        {{ .LinkTitle }}

        {{ end }} ``` Is rendered to: ```html

        Books

        Films

        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/Sites.md000066400000000000000000000026021507671574500241620ustar00rootroot00000000000000--- title: Sites description: Returns a collection of all Site objects, one for each language, ordered by default content language then by language weight. categories: [] keywords: [] params: functions_and_methods: returnType: page.Sites signatures: [SITE.Sites] --- With this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = false [languages.de] languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.en] languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' title = 'Project Documentation' weight = 2 {{< /code-toggle >}} This template: ```go-html-template ``` Produces a list of links to each home page: ```html ``` To render a link to the home page of the site corresponding to the default content language: ```go-html-template {{ with .Site.Sites.Default }} {{ .Title }} {{ end }} ``` This is equivalent to: ```go-html-template {{ with index .Site.Sites 0 }} {{ .Title }} {{ end }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/Store.md000066400000000000000000000066341507671574500242000ustar00rootroot00000000000000--- title: Store description: Returns a "scratch pad" to store and manipulate data, scoped to the current site. categories: [] keywords: [] params: functions_and_methods: returnType: maps.Scratch signatures: [site.Store] --- {{< new-in 0.139.0 />}} Use the `Store` method on a `Site` object to create a [scratch pad](g) to store and manipulate data, scoped to the current site. To create a scratch pad with a different [scope](g), refer to the [scope](#scope) section below. ## Methods ### Set Sets the value of a given key. ```go-html-template {{ site.Store.Set "greeting" "Hello" }} ``` ### Get Gets the value of a given key. ```go-html-template {{ site.Store.Set "greeting" "Hello" }} {{ site.Store.Get "greeting" }} → Hello ``` ### Add Adds a given value to existing value(s) of the given key. For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be appended to that list. ```go-html-template {{ site.Store.Set "greeting" "Hello" }} {{ site.Store.Add "greeting" "Welcome" }} {{ site.Store.Get "greeting" }} → HelloWelcome ``` ```go-html-template {{ site.Store.Set "total" 3 }} {{ site.Store.Add "total" 7 }} {{ site.Store.Get "total" }} → 10 ``` ```go-html-template {{ site.Store.Set "greetings" (slice "Hello") }} {{ site.Store.Add "greetings" (slice "Welcome" "Cheers") }} {{ site.Store.Get "greetings" }} → [Hello Welcome Cheers] ``` ### SetInMap Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`. ```go-html-template {{ site.Store.SetInMap "greetings" "english" "Hello" }} {{ site.Store.SetInMap "greetings" "french" "Bonjour" }} {{ site.Store.Get "greetings" }} → map[english:Hello french:Bonjour] ``` ### DeleteInMap Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`. ```go-html-template {{ site.Store.SetInMap "greetings" "english" "Hello" }} {{ site.Store.SetInMap "greetings" "french" "Bonjour" }} {{ site.Store.DeleteInMap "greetings" "english" }} {{ site.Store.Get "greetings" }} → map[french:Bonjour] ``` ### GetSortedMapValues Returns an array of values from `key` sorted by `mapKey`. ```go-html-template {{ site.Store.SetInMap "greetings" "english" "Hello" }} {{ site.Store.SetInMap "greetings" "french" "Bonjour" }} {{ site.Store.GetSortedMapValues "greetings" }} → [Hello Bonjour] ``` ### Delete Removes the given key. ```go-html-template {{ site.Store.Set "greeting" "Hello" }} {{ site.Store.Delete "greeting" }} ``` {{% include "_common/scratch-pad-scope.md" %}} ## Determinate values The `Store` method is often used to set scratch pad values within a _shortcode_ template, a _partial_ template called by a _shortcode_ template, or by a _render hook_ template. In all three cases, the scratch pad values are indeterminate until Hugo renders the page content. If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop](g) variable: ```go-html-template {{ $noop := .Content }} {{ site.Store.Get "mykey" }} ``` You can also trigger content rendering with the `ContentWithoutSummary`, `FuzzyWordCount`, `Len`, `Plain`, `PlainWords`, `ReadingTime`, `Summary`, `Truncated`, and `WordCount` methods. For example: ```go-html-template {{ $noop := .WordCount }} {{ site.Store.Get "mykey" }} ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/Taxonomies.md000066400000000000000000000111601507671574500252200ustar00rootroot00000000000000--- title: Taxonomies description: Returns a data structure containing the site's Taxonomy objects, the terms within each Taxonomy object, and the pages to which the terms are assigned. categories: [] keywords: [] params: functions_and_methods: returnType: page.TaxonomyList signatures: [SITE.Taxonomies] --- Conceptually, the `Taxonomies` method on a `Site` object returns a data structure such as: {{< code-toggle file=hugo >}} taxonomy a: - term 1: - page 1 - page 2 - term 2: - page 1 taxonomy b: - term 1: - page 2 - term 2: - page 1 - page 2 {{< /code-toggle >}} For example, on a book review site you might create two taxonomies; one for genres and another for authors. With this site configuration: {{< code-toggle file=hugo >}} [taxonomies] genre = 'genres' author = 'authors' {{< /code-toggle >}} And this content structure: ```text content/ ├── books/ │ ├── and-then-there-were-none.md --> genres: suspense │ ├── death-on-the-nile.md --> genres: suspense │ └── jamaica-inn.md --> genres: suspense, romance │ └── pride-and-prejudice.md --> genres: romance └── _index.md ``` Conceptually, the taxonomies data structure looks like: {{< code-toggle file=hugo >}} genres: - suspense: - And Then There Were None - Death on the Nile - Jamaica Inn - romance: - Jamaica Inn - Pride and Prejudice authors: - achristie: - And Then There Were None - Death on the Nile - ddmaurier: - Jamaica Inn - jausten: - Pride and Prejudice {{< /code-toggle >}} To list the "suspense" books: ```go-html-template ``` Hugo renders this to: ```html ``` > [!note] > Hugo's taxonomy system is powerful, allowing you to classify content and create relationships between pages. > > Please see the [taxonomies] section for a complete explanation and examples. ## Examples ### List content with the same taxonomy term If you are using a taxonomy for something like a series of posts, you can list individual pages associated with the same term. For example: ```go-html-template ``` ### List all content in a given taxonomy This would be very useful in a sidebar as “featured content”. You could even have different sections of “featured content” by assigning different terms to the content. ```go-html-template ``` ### Render a site's taxonomies The following example displays all terms in a site's tags taxonomy: ```go-html-template ``` This example will list all taxonomies and their terms, as well as all the content assigned to each of the terms. ```go-html-template {file="layouts/_partials/all-taxonomies.html"} {{ with .Site.Taxonomies }} {{ $numberOfTerms := 0 }} {{ range $taxonomy, $terms := . }} {{ $numberOfTerms = len . | add $numberOfTerms }} {{ end }} {{ if gt $numberOfTerms 0 }} {{ end }} {{ end }} ``` [taxonomies]: /content-management/taxonomies/ gohugoio-hugo-6abdaca/docs/content/en/methods/site/Title.md000066400000000000000000000006041507671574500241540ustar00rootroot00000000000000--- title: Title description: Returns the title as defined in the site configuration. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [SITE.Title] --- Site configuration: {{< code-toggle file=hugo >}} title = 'My Documentation Site' {{< /code-toggle >}} Template: ```go-html-template {{ .Site.Title }} → My Documentation Site ``` gohugoio-hugo-6abdaca/docs/content/en/methods/site/_index.md000066400000000000000000000002261507671574500243410ustar00rootroot00000000000000--- title: Site methods linkTitle: Site description: Use these methods with Site objects. categories: [] keywords: [] aliases: [/variables/site/] --- gohugoio-hugo-6abdaca/docs/content/en/methods/taxonomy/000077500000000000000000000000001507671574500234635ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/taxonomy/Alphabetical.md000066400000000000000000000035771507671574500263720ustar00rootroot00000000000000--- title: Alphabetical description: Returns an ordered taxonomy, sorted alphabetically by term. categories: [] keywords: [] params: functions_and_methods: returnType: page.OrderedTaxonomy signatures: [TAXONOMY.Alphabetical] --- The `Alphabetical` method on a `Taxonomy` object returns an [ordered taxonomy](g), sorted alphabetically by [term](g). While a `Taxonomy` object is a [map](g), an ordered taxonomy is a [slice](g), where each element is an object that contains the term and a slice of its [weighted pages](g). {{% include "/_common/methods/taxonomy/get-a-taxonomy-object.md" %}} ## Get the ordered taxonomy Now that we have captured the “genres” Taxonomy object, let's get the ordered taxonomy sorted alphabetically by term: ```go-html-template {{ $taxonomyObject.Alphabetical }} ``` To reverse the sort order: ```go-html-template {{ $taxonomyObject.Alphabetical.Reverse }} ``` To inspect the data structure: ```go-html-template
        {{ debug.Dump $taxonomyObject.Alphabetical }}
        ``` {{% include "/_common/methods/taxonomy/ordered-taxonomy-element-methods.md" %}} ## Example With this template: ```go-html-template {{ range $taxonomyObject.Alphabetical }}

        {{ .Page.LinkTitle }} ({{ .Count }})

        {{ end }} ``` Hugo renders: ```html

        romance (2)

        suspense (3)

        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/taxonomy/ByCount.md000066400000000000000000000036521507671574500253760ustar00rootroot00000000000000--- title: ByCount description: Returns an ordered taxonomy, sorted by the number of pages associated with each term. categories: [] keywords: [] params: functions_and_methods: returnType: page.OrderedTaxonomy signatures: [TAXONOMY.ByCount] --- The `ByCount` method on a `Taxonomy` object returns an [ordered taxonomy](g), sorted by the number of pages associated with each [term](g). While a `Taxonomy` object is a [map](g), an ordered taxonomy is a [slice](g), where each element is an object that contains the term and a slice of its [weighted pages](g). {{% include "/_common/methods/taxonomy/get-a-taxonomy-object.md" %}} ## Get the ordered taxonomy Now that we have captured the “genres” Taxonomy object, let's get the ordered taxonomy sorted by the number of pages associated with each term: ```go-html-template {{ $taxonomyObject.ByCount }} ``` To reverse the sort order: ```go-html-template {{ $taxonomyObject.ByCount.Reverse }} ``` To inspect the data structure: ```go-html-template
        {{ debug.Dump $taxonomyObject.ByCount }}
        ``` {{% include "/_common/methods/taxonomy/ordered-taxonomy-element-methods.md" %}} ## Example With this template: ```go-html-template {{ range $taxonomyObject.ByCount }}

        {{ .Page.LinkTitle }} ({{ .Count }})

        {{ end }} ``` Hugo renders: ```html

        suspense (3)

        romance (2)

        ``` gohugoio-hugo-6abdaca/docs/content/en/methods/taxonomy/Count.md000066400000000000000000000012771507671574500251040ustar00rootroot00000000000000--- title: Count description: Returns the number of number of weighted pages to which the given term has been assigned. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [TAXONOMY.Count TERM] --- The `Count` method on a `Taxonomy` object returns the number of number of [weighted pages](g) to which the given [term](g) has been assigned. {{% include "/_common/methods/taxonomy/get-a-taxonomy-object.md" %}} ## Count the weighted pages Now that we have captured the "genres" `Taxonomy` object, let's count the number of weighted pages to which the "suspense" term has been assigned: ```go-html-template {{ $taxonomyObject.Count "suspense" }} → 3 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/taxonomy/Get.md000066400000000000000000000033651507671574500245330ustar00rootroot00000000000000--- title: Get description: Returns a slice of weighted pages to which the given term has been assigned. categories: [] keywords: [] params: functions_and_methods: returnType: page.WeightedPages signatures: [TAXONOMY.Get TERM] --- The `Get` method on a `Taxonomy` object returns a slice of [weighted pages](g) to which the given [term](g) has been assigned. {{% include "/_common/methods/taxonomy/get-a-taxonomy-object.md" %}} ## Get the weighted pages Now that we have captured the "genres" `Taxonomy` object, let's get the weighted pages to which the "suspense" term has been assigned: ```go-html-template {{ $weightedPages := $taxonomyObject.Get "suspense" }} ``` The above is equivalent to: ```go-html-template {{ $weightedPages := $taxonomyObject.suspense }} ``` But, if the term is not a valid [identifier](g), you cannot use the [chaining](g) syntax. For example, this will throw an error because the identifier contains a hyphen: ```go-html-template {{ $weightedPages := $taxonomyObject.my-genre }} ``` You could also use the [`index`] function, but the syntax is more verbose: ```go-html-template {{ $weightedPages := index $taxonomyObject "my-genre" }} ``` To inspect the data structure: ```go-html-template
        {{ debug.Dump $weightedPages }}
        ``` ## Example With this template: ```go-html-template {{ $weightedPages := $taxonomyObject.Get "suspense" }} {{ range $weightedPages }}

        {{ .LinkTitle }}

        {{ end }} ``` Hugo renders: ```html

        Jamaica inn

        Death on the nile

        And then there were none

        ``` [`index`]: /functions/collections/indexfunction/ gohugoio-hugo-6abdaca/docs/content/en/methods/taxonomy/Page.md000066400000000000000000000010131507671574500246540ustar00rootroot00000000000000--- title: Page description: Returns the taxonomy page or nil if the taxonomy has no terms. categories: [] keywords: [] params: functions_and_methods: returnType: page.Page signatures: [TAXONOMY.Page] --- {{< new-in 0.125.0 />}} This `TAXONOMY` method returns nil if the taxonomy has no terms, so you must code defensively: ```go-html-template {{ with .Site.Taxonomies.tags.Page }} {{ .LinkTitle }} {{ end }} ``` This is rendered to: ```html Tags ``` gohugoio-hugo-6abdaca/docs/content/en/methods/taxonomy/_index.md000066400000000000000000000002271507671574500252540ustar00rootroot00000000000000--- title: Taxonomy methods linkTitle: Taxonomy description: Use these methods with Taxonomy objects. keywords: [] aliases: [/variables/taxonomy/] --- gohugoio-hugo-6abdaca/docs/content/en/methods/time/000077500000000000000000000000001507671574500225435ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/methods/time/Add.md000066400000000000000000000007251507671574500235610ustar00rootroot00000000000000--- title: Add description: Returns the given time plus the given duration. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [TIME.Add DURATION] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $d1 = time.ParseDuration "3h20m10s" }} {{ $d2 = time.ParseDuration "-3h20m10s" }} {{ $t.Add $d1 }} → 2023-01-28 03:05:08 -0800 PST {{ $t.Add $d2 }} → 2023-01-27 20:24:48 -0800 PST ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/AddDate.md000066400000000000000000000024431507671574500243560ustar00rootroot00000000000000--- title: AddDate description: Returns the time corresponding to adding the given number of years, months, and days to the given time.Time value. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [TIME.AddDate YEARS MONTHS DAYS] aliases: [/functions/adddate] --- ```go-html-template {{ $d := "2022-01-01" | time.AsTime }} {{ $d.AddDate 0 0 1 | time.Format "2006-01-02" }} → 2022-01-02 {{ $d.AddDate 0 1 1 | time.Format "2006-01-02" }} → 2022-02-02 {{ $d.AddDate 1 1 1 | time.Format "2006-01-02" }} → 2023-02-02 {{ $d.AddDate -1 -1 -1 | time.Format "2006-01-02" }} → 2020-11-30 ``` > [!note] > When adding months or years, Hugo normalizes the final `time.Time` value if the resulting day does not exist. For example, adding one month to 31 January produces 2 March or 3 March, depending on the year. > > See [this explanation](https://github.com/golang/go/issues/31145#issuecomment-479067967) from the Go team. ```go-html-template {{ $d := "2023-01-31" | time.AsTime }} {{ $d.AddDate 0 1 0 | time.Format "2006-01-02" }} → 2023-03-03 {{ $d := "2024-01-31" | time.AsTime }} {{ $d.AddDate 0 1 0 | time.Format "2006-01-02" }} → 2024-03-02 {{ $d := "2024-02-29" | time.AsTime }} {{ $d.AddDate 1 0 0 | time.Format "2006-01-02" }} → 2025-03-01 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/After.md000066400000000000000000000005371507671574500241330ustar00rootroot00000000000000--- title: After description: Reports whether TIME1 is after TIME2. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [TIME1.After TIME2] --- ```go-html-template {{ $t1 := time.AsTime "2023-01-01T17:00:00-08:00" }} {{ $t2 := time.AsTime "2010-01-01T17:00:00-08:00" }} {{ $t1.After $t2 }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Before.md000066400000000000000000000005371507671574500242740ustar00rootroot00000000000000--- title: Before description: Reports whether TIME1 is before TIME2. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [TIME1.Before TIME2] --- ```go-html-template {{ $t1 := time.AsTime "2023-01-01T17:00:00-08:00" }} {{ $t2 := time.AsTime "2030-01-01T17:00:00-08:00" }} {{ $t1.Before $t2 }} → true gohugoio-hugo-6abdaca/docs/content/en/methods/time/Day.md000066400000000000000000000004501507671574500236010ustar00rootroot00000000000000--- title: Day description: Returns the day of the month of the given time.Time value. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [TIME.Day] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Day }} → 27 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Equal.md000066400000000000000000000005421507671574500241350ustar00rootroot00000000000000--- title: Equal description: Reports whether TIME1 is equal to TIME2. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [TIME1.Equal TIME2] --- ```go-html-template {{ $t1 := time.AsTime "2023-01-01T17:00:00-08:00" }} {{ $t2 := time.AsTime "2023-01-01T20:00:00-05:00" }} {{ $t1.Equal $t2 }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Format.md000066400000000000000000000044731507671574500243250ustar00rootroot00000000000000--- title: Format description: Returns a textual representation of the time.Time value formatted according to the layout string. categories: [] keywords: [] params: functions_and_methods: returnType: string signatures: [TIME.Format LAYOUT] aliases: [/methods/time/format] --- ```go-template {{ $t := "2023-01-27T23:44:58-08:00" }} {{ $t = time.AsTime $t }} {{ $format := "2 Jan 2006" }} {{ $t.Format $format }} → 27 Jan 2023 ``` > [!note] > To [localize](g) the return value, use the [`time.Format`] function instead. Use the `Format` method with any `time.Time` value, including the four predefined front matter dates: ```go-html-template {{ $format := "2 Jan 2006" }} {{ .Date.Format $format }} {{ .PublishDate.Format $format }} {{ .ExpiryDate.Format $format }} {{ .Lastmod.Format $format }} ``` > [!note] > Use the [`time.Format`] function to format string representations of dates, and to format raw TOML dates that exclude time and time zone offset. ## Layout string {{% include "/_common/time-layout-string.md" %}} ## Examples Given this front matter: {{< code-toggle fm=true >}} title = "About time" date = 2023-01-27T23:44:58-08:00 {{< /code-toggle >}} The examples below were rendered in the `America/Los_Angeles` time zone: Format string|Result :--|:-- `Monday, January 2, 2006`|`Friday, January 27, 2023` `Mon Jan 2 2006`|`Fri Jan 27 2023` `January 2006`|`January 2023` `2006-01-02`|`2023-01-27` `Monday`|`Friday` `02 Jan 06 15:04 MST`|`27 Jan 23 23:44 PST` `Mon, 02 Jan 2006 15:04:05 MST`|`Fri, 27 Jan 2023 23:44:58 PST` `Mon, 02 Jan 2006 15:04:05 -0700`|`Fri, 27 Jan 2023 23:44:58 -0800` ## UTC and local time Convert and format any `time.Time` value to either Coordinated Universal Time (UTC) or local time. ```go-html-template {{ $t := "2023-01-27T23:44:58-08:00" }} {{ $t = time.AsTime $t }} {{ $format := "2 Jan 2006 3:04:05 PM MST" }} {{ $t.UTC.Format $format }} → 28 Jan 2023 7:44:58 AM UTC {{ $t.Local.Format $format }} → 27 Jan 2023 11:44:58 PM PST ``` ## Ordinal representation Use the [`humanize`](/functions/inflect/humanize) function to render the day of the month as an ordinal number: ```go-html-template {{ $t := "2023-01-27T23:44:58-08:00" }} {{ $t = time.AsTime $t }} {{ humanize $t.Day }} of {{ $t.Format "January 2006" }} → 27th of January 2023 ``` [`time.Format`]: /functions/time/format/ gohugoio-hugo-6abdaca/docs/content/en/methods/time/Hour.md000066400000000000000000000005041507671574500240010ustar00rootroot00000000000000--- title: Hour description: Returns the hour within the day of the given time.Time value, in the range [0, 23]. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [TIME.Hour] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Hour }} → 23 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/IsDST.md000066400000000000000000000006171507671574500240170ustar00rootroot00000000000000--- title: IsDST description: Reports whether the given time.Time value is in Daylight Savings Time. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [TIME.IsDST] --- ```go-html-template {{ $t1 := time.AsTime "2023-01-01T00:00:00-08:00" }} {{ $t2 := time.AsTime "2023-07-01T00:00:00-07:00" }} {{ $t1.IsDST }} → false {{ $t2.IsDST }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/IsZero.md000066400000000000000000000006721507671574500243050ustar00rootroot00000000000000--- title: IsZero description: Reports whether the given time.Time value represents the zero time instant, January 1, year 1, 00:00:00 UTC. categories: [] keywords: [] params: functions_and_methods: returnType: bool signatures: [TIME.IsZero] --- ````go-html-template {{ $t1 := time.AsTime "2023-01-01T00:00:00-08:00" }} {{ $t2 := time.AsTime "0001-01-01T00:00:00-00:00" }} {{ $t1.IsZero }} → false {{ $t2.IsZero }} → true ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Local.md000066400000000000000000000005331507671574500241200ustar00rootroot00000000000000--- title: Local description: Returns the given time.Time value with the location set to local time. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [TIME.Local] --- ```go-html-template {{ $t := time.AsTime "2023-01-28T07:44:58+00:00" }} {{ $t.Local }} → 2023-01-27 23:44:58 -0800 PST ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Minute.md000066400000000000000000000005241507671574500243270ustar00rootroot00000000000000--- title: Minute description: Returns the minute offset within the hour of the given time.Time value, in the range [0, 59]. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [TIME.Minute] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Minute }} → 44 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Month.md000066400000000000000000000010141507671574500241460ustar00rootroot00000000000000--- title: Month description: Returns the month of the year of the given time.Time value. categories: [] keywords: [] params: functions_and_methods: returnType: time.Month signatures: [TIME.Month] --- To convert the `time.Month` value to a string: ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Month.String }} → January ``` To convert the `time.Month` value to an integer. ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Month | int }} → 1 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Nanosecond.md000066400000000000000000000005541507671574500251600ustar00rootroot00000000000000--- title: Nanosecond description: Returns the nanosecond offset within the second of the given time.Time value, in the range [0, 999999999]. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [TIME.Nanosecond] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Nanosecond }} → 0 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Round.md000066400000000000000000000014231507671574500241540ustar00rootroot00000000000000--- title: Round description: Returns the result of rounding TIME to the nearest multiple of DURATION since January 1, 0001, 00:00:00 UTC. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [TIME.Round DURATION] --- The rounding behavior for halfway values is to round up. The `Round` method operates on TIME as an absolute duration since the [zero time](g); it does not operate on the presentation form of the time. If DURATION is a multiple of one hour, `Round` may return a time with a non-zero minute, depending on the time zone. ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $d := time.ParseDuration "1h" }} {{ ($t.Round $d).Format "2006-01-02T15:04:05-00:00" }} → 2023-01-28T00:00:00-00:00 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Second.md000066400000000000000000000005261507671574500243030ustar00rootroot00000000000000--- title: Second description: Returns the second offset within the minute of the given time.Time value, in the range [0, 59]. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [TIME.Second] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Second }} → 58 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Sub.md000066400000000000000000000006001507671574500236120ustar00rootroot00000000000000--- title: Sub description: Returns the duration computed by subtracting TIME2 from TIME1. categories: [] keywords: [] params: functions_and_methods: returnType: time.Duration signatures: [TIME1.Sub TIME2] --- ```go-html-template {{ $t1 := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t2 := time.AsTime "2023-01-26T22:34:38-08:00" }} {{ $t1.Sub $t2 }} → 25h10m20s ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Truncate.md000066400000000000000000000013431507671574500246530ustar00rootroot00000000000000--- title: Truncate description: Returns the result of rounding TIME down to a multiple of DURATION since January 1, 0001, 00:00:00 UTC. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [TIME.Truncate DURATION] --- The `Truncate` method operates on TIME as an absolute duration since the [zero time](g); it does not operate on the presentation form of the time. If DURATION is a multiple of one hour, `Truncate` may return a time with a non-zero minute, depending on the time zone. ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $d := time.ParseDuration "1h" }} {{ ($t.Truncate $d).Format "2006-01-02T15:04:05-00:00" }} → 2023-01-27T23:00:00-00:00 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/UTC.md000066400000000000000000000005121507671574500235160ustar00rootroot00000000000000--- title: UTC description: Returns the given time.Time value with the location set to UTC. categories: [] keywords: [] params: functions_and_methods: returnType: time.Time signatures: [TIME.UTC] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.UTC }} → 2023-01-28 07:44:58 +0000 UTC gohugoio-hugo-6abdaca/docs/content/en/methods/time/Unix.md000066400000000000000000000006541507671574500240150ustar00rootroot00000000000000--- title: Unix description: Returns the given time.Time value expressed as the number of seconds elapsed since January 1, 1970 UTC. categories: [] params: functions_and_methods: returnType: int64 signatures: [TIME.Unix] aliases: [/functions/unix] --- See [Unix epoch](https://en.wikipedia.org/wiki/Unix_time). ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Unix }} → 1674891898 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/UnixMicro.md000066400000000000000000000006701507671574500250050ustar00rootroot00000000000000--- title: UnixMicro description: Returns the given time.Time value expressed as the number of microseconds elapsed since January 1, 1970 UTC. categories: [] keywords: [] params: functions_and_methods: returnType: int64 signatures: [TIME.UnixMicro] --- See [Unix epoch](https://en.wikipedia.org/wiki/Unix_time). ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.UnixMicro }} → 1674891898000000 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/UnixMilli.md000066400000000000000000000006651507671574500250060ustar00rootroot00000000000000--- title: UnixMilli description: Returns the given time.Time value expressed as the number of milliseconds elapsed since January 1, 1970 UTC. categories: [] keywords: [] params: functions_and_methods: returnType: int64 signatures: [TIME.UnixMilli] --- See [Unix epoch](https://en.wikipedia.org/wiki/Unix_time). ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.UnixMilli }} → 1674891898000 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/UnixNano.md000066400000000000000000000006671507671574500246350ustar00rootroot00000000000000--- title: UnixNano description: Returns the given time.Time value expressed as the number of nanoseconds elapsed since January 1, 1970 UTC. categories: [] keywords: [] params: functions_and_methods: returnType: int64 signatures: [TIME.UnixNano] --- See [Unix epoch](https://en.wikipedia.org/wiki/Unix_time). ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.UnixNano }} → 1674891898000000000 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/Weekday.md000066400000000000000000000010231507671574500244520ustar00rootroot00000000000000--- title: Weekday description: Returns the day of the week of the given time.Time value. categories: [] keywords: [] params: functions_and_methods: returnType: time.Weekday signatures: [TIME.Weekday] --- To convert the `time.Weekday` value to a string: ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Weekday.String }} → Friday ``` To convert the `time.Weekday` value to an integer. ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Weekday | int }} → 5 gohugoio-hugo-6abdaca/docs/content/en/methods/time/Year.md000066400000000000000000000004411507671574500237640ustar00rootroot00000000000000--- title: Year description: Returns the year of the given time.Time value. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [TIME.Year] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.Year }} → 2023 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/YearDay.md000066400000000000000000000005711507671574500244260ustar00rootroot00000000000000--- title: YearDay description: Returns the day of the year of the given time.Time value, in the range [1, 365] for non-leap years, and [1, 366] in leap years. categories: [] keywords: [] params: functions_and_methods: returnType: int signatures: [TIME.YearDay] --- ```go-html-template {{ $t := time.AsTime "2023-01-27T23:44:58-08:00" }} {{ $t.YearDay }} → 27 ``` gohugoio-hugo-6abdaca/docs/content/en/methods/time/_index.md000066400000000000000000000001761507671574500243370ustar00rootroot00000000000000--- title: Time methods linkTitle: Time description: Use these methods with time.Time values. categories: [] keywords: [] --- gohugoio-hugo-6abdaca/docs/content/en/news/000077500000000000000000000000001507671574500211165ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/news/_content.gotmpl000066400000000000000000000020371507671574500241550ustar00rootroot00000000000000{{/* Get releases from GitHub. */}} {{ $u := "https://api.github.com/repos/gohugoio/hugo/releases" }} {{ $releases := partial "helpers/funcs/get-remote-data.html" $u }} {{ $releases = where $releases "draft" false }} {{ $releases = where $releases "prerelease" false }} {{/* Add pages. */}} {{ range $releases | first 24 }} {{ $publishDate := .published_at | time.AsTime }} {{/* Correct the v0.138.0 release date. See https://github.com/gohugoio/hugo/issues/13066. */}} {{ if eq .name "v0.138.0" }} {{ $publishDate = "2024-11-06T11:22:34Z" }} {{ end }} {{ $content := dict "mediaType" "text/markdown" "value" "" }} {{ $dates := dict "publishDate" (time.AsTime $publishDate) }} {{ $params := dict "permalink" .html_url }} {{ $build := dict "render" "never" "list" "local" }} {{ $page := dict "build" $build "content" $content "dates" $dates "kind" "page" "params" $params "path" (strings.Replace .name "." "-") "slug" .name "title" (printf "Release %s" .name) }} {{ $.AddPage $page }} {{ end }} gohugoio-hugo-6abdaca/docs/content/en/news/_index.md000066400000000000000000000002311507671574500227020ustar00rootroot00000000000000--- title: News description: Stay up-to-date with the latest news and announcements. outputs: - html - rss weight: 10 aliases: [/release-notes/] --- gohugoio-hugo-6abdaca/docs/content/en/quick-reference/000077500000000000000000000000001507671574500232125ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/quick-reference/_index.md000066400000000000000000000002731507671574500250040ustar00rootroot00000000000000--- title: Quick reference guides linkTitle: Quick reference description: Use these quick reference guides for quick access to key information. categories: [] keywords: [] weight: 10 --- gohugoio-hugo-6abdaca/docs/content/en/quick-reference/emojis.md000066400000000000000000003663031507671574500250350ustar00rootroot00000000000000--- title: Emojis description: Include emoji shortcodes in your Markdown or templates. categories: [] keywords: [] params: searchable: false --- ## Attribution This quick reference guide was generated using the [ikatyang/emoji-cheat-sheet] project which reads from the [GitHub Emoji API] and the [Unicode Full Emoji List]. Note that GitHub [custom emoji] are not supported. [custom emoji]: #github-custom-emoji [github emoji api]: https://api.github.com/emojis [ikatyang/emoji-cheat-sheet]: https://github.com/ikatyang/emoji-cheat-sheet/ [unicode full emoji list]: https://unicode.org/emoji/charts/full-emoji-list.html ## Usage Configure Hugo to enable emoji processing in Markdown: {{< code-toggle file=hugo >}} enableEmoji = true {{< /code-toggle >}} With emoji processing enabled, this Markdown: ```md Hello! :wave: ``` Is rendered to: ```html Hello! 👋 ``` And in your browser... Hello! :wave: To process an emoji shortcode from within a template, use the [`emojify`] function or pass the string through the [`RenderString`] method on a `Page` object: ```go-html-template {{ "Hello! :wave:" | .RenderString }} ``` [`emojify`]: /functions/transform/emojify/ [`RenderString`]: /methods/page/renderstring/ ## Table of Contents - [Smileys & Emotion](#smileys--emotion) - [People & Body](#people--body) - [Animals & Nature](#animals--nature) - [Food & Drink](#food--drink) - [Travel & Places](#travel--places) - [Activities](#activities) - [Objects](#objects) - [Symbols](#symbols) - [Flags](#flags) - [GitHub Custom Emoji](#github-custom-emoji) ## Smileys & Emotion - [Face Smiling](#face-smiling) - [Face Affection](#face-affection) - [Face Tongue](#face-tongue) - [Face Hand](#face-hand) - [Face Neutral Skeptical](#face-neutral-skeptical) - [Face Sleepy](#face-sleepy) - [Face Unwell](#face-unwell) - [Face Hat](#face-hat) - [Face Glasses](#face-glasses) - [Face Concerned](#face-concerned) - [Face Negative](#face-negative) - [Face Costume](#face-costume) - [Cat Face](#cat-face) - [Monkey Face](#monkey-face) - [Heart](#heart) - [Emotion](#emotion) ### Face Smiling | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :grinning: | `:grinning:` | :smiley: | `:smiley:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :smile: | `:smile:` | :grin: | `:grin:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :laughing: | `:laughing:` `:satisfied:` | :sweat_smile: | `:sweat_smile:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :rofl: | `:rofl:` | :joy: | `:joy:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :slightly_smiling_face: | `:slightly_smiling_face:` | :upside_down_face: | `:upside_down_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :melting_face: | `:melting_face:` | :wink: | `:wink:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :blush: | `:blush:` | :innocent: | `:innocent:` | [top](#table-of-contents) | ### Face Affection | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :smiling_face_with_three_hearts: | `:smiling_face_with_three_hearts:` | :heart_eyes: | `:heart_eyes:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :star_struck: | `:star_struck:` | :kissing_heart: | `:kissing_heart:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :kissing: | `:kissing:` | :relaxed: | `:relaxed:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :kissing_closed_eyes: | `:kissing_closed_eyes:` | :kissing_smiling_eyes: | `:kissing_smiling_eyes:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :smiling_face_with_tear: | `:smiling_face_with_tear:` | | | [top](#table-of-contents) | ### Face Tongue | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :yum: | `:yum:` | :stuck_out_tongue: | `:stuck_out_tongue:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :stuck_out_tongue_winking_eye: | `:stuck_out_tongue_winking_eye:` | :zany_face: | `:zany_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :stuck_out_tongue_closed_eyes: | `:stuck_out_tongue_closed_eyes:` | :money_mouth_face: | `:money_mouth_face:` | [top](#table-of-contents) | ### Face Hand | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :hugs: | `:hugs:` | :hand_over_mouth: | `:hand_over_mouth:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :face_with_open_eyes_and_hand_over_mouth: | `:face_with_open_eyes_and_hand_over_mouth:` | :face_with_peeking_eye: | `:face_with_peeking_eye:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :shushing_face: | `:shushing_face:` | :thinking: | `:thinking:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :saluting_face: | `:saluting_face:` | | | [top](#table-of-contents) | ### Face Neutral Skeptical | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :zipper_mouth_face: | `:zipper_mouth_face:` | :raised_eyebrow: | `:raised_eyebrow:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :neutral_face: | `:neutral_face:` | :expressionless: | `:expressionless:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :no_mouth: | `:no_mouth:` | :dotted_line_face: | `:dotted_line_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :face_in_clouds: | `:face_in_clouds:` | :smirk: | `:smirk:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :unamused: | `:unamused:` | :roll_eyes: | `:roll_eyes:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :grimacing: | `:grimacing:` | :face_exhaling: | `:face_exhaling:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :lying_face: | `:lying_face:` | :shaking_face: | `:shaking_face:` | [top](#table-of-contents) | ### Face Sleepy | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :relieved: | `:relieved:` | :pensive: | `:pensive:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :sleepy: | `:sleepy:` | :drooling_face: | `:drooling_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :sleeping: | `:sleeping:` | | | [top](#table-of-contents) | ### Face Unwell | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :mask: | `:mask:` | :face_with_thermometer: | `:face_with_thermometer:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :face_with_head_bandage: | `:face_with_head_bandage:` | :nauseated_face: | `:nauseated_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :vomiting_face: | `:vomiting_face:` | :sneezing_face: | `:sneezing_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :hot_face: | `:hot_face:` | :cold_face: | `:cold_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :woozy_face: | `:woozy_face:` | :dizzy_face: | `:dizzy_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :face_with_spiral_eyes: | `:face_with_spiral_eyes:` | :exploding_head: | `:exploding_head:` | [top](#table-of-contents) | ### Face Hat | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :cowboy_hat_face: | `:cowboy_hat_face:` | :partying_face: | `:partying_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :disguised_face: | `:disguised_face:` | | | [top](#table-of-contents) | ### Face Glasses | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :sunglasses: | `:sunglasses:` | :nerd_face: | `:nerd_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :monocle_face: | `:monocle_face:` | | | [top](#table-of-contents) | ### Face Concerned | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :confused: | `:confused:` | :face_with_diagonal_mouth: | `:face_with_diagonal_mouth:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :worried: | `:worried:` | :slightly_frowning_face: | `:slightly_frowning_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :frowning_face: | `:frowning_face:` | :open_mouth: | `:open_mouth:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :hushed: | `:hushed:` | :astonished: | `:astonished:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :flushed: | `:flushed:` | :pleading_face: | `:pleading_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :face_holding_back_tears: | `:face_holding_back_tears:` | :frowning: | `:frowning:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :anguished: | `:anguished:` | :fearful: | `:fearful:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :cold_sweat: | `:cold_sweat:` | :disappointed_relieved: | `:disappointed_relieved:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :cry: | `:cry:` | :sob: | `:sob:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :scream: | `:scream:` | :confounded: | `:confounded:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :persevere: | `:persevere:` | :disappointed: | `:disappointed:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :sweat: | `:sweat:` | :weary: | `:weary:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :tired_face: | `:tired_face:` | :yawning_face: | `:yawning_face:` | [top](#table-of-contents) | ### Face Negative | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :triumph: | `:triumph:` | :pout: | `:pout:` `:rage:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :angry: | `:angry:` | :cursing_face: | `:cursing_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :smiling_imp: | `:smiling_imp:` | :imp: | `:imp:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :skull: | `:skull:` | :skull_and_crossbones: | `:skull_and_crossbones:` | [top](#table-of-contents) | ### Face Costume | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :hankey: | `:hankey:` `:poop:` `:shit:` | :clown_face: | `:clown_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :japanese_ogre: | `:japanese_ogre:` | :japanese_goblin: | `:japanese_goblin:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :ghost: | `:ghost:` | :alien: | `:alien:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :space_invader: | `:space_invader:` | :robot: | `:robot:` | [top](#table-of-contents) | ### Cat Face | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :smiley_cat: | `:smiley_cat:` | :smile_cat: | `:smile_cat:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :joy_cat: | `:joy_cat:` | :heart_eyes_cat: | `:heart_eyes_cat:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :smirk_cat: | `:smirk_cat:` | :kissing_cat: | `:kissing_cat:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :scream_cat: | `:scream_cat:` | :crying_cat_face: | `:crying_cat_face:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :pouting_cat: | `:pouting_cat:` | | | [top](#table-of-contents) | ### Monkey Face | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :see_no_evil: | `:see_no_evil:` | :hear_no_evil: | `:hear_no_evil:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :speak_no_evil: | `:speak_no_evil:` | | | [top](#table-of-contents) | ### Heart | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :love_letter: | `:love_letter:` | :cupid: | `:cupid:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :gift_heart: | `:gift_heart:` | :sparkling_heart: | `:sparkling_heart:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :heartpulse: | `:heartpulse:` | :heartbeat: | `:heartbeat:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :revolving_hearts: | `:revolving_hearts:` | :two_hearts: | `:two_hearts:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :heart_decoration: | `:heart_decoration:` | :heavy_heart_exclamation: | `:heavy_heart_exclamation:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :broken_heart: | `:broken_heart:` | :heart_on_fire: | `:heart_on_fire:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :mending_heart: | `:mending_heart:` | :heart: | `:heart:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :pink_heart: | `:pink_heart:` | :orange_heart: | `:orange_heart:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :yellow_heart: | `:yellow_heart:` | :green_heart: | `:green_heart:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :blue_heart: | `:blue_heart:` | :light_blue_heart: | `:light_blue_heart:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :purple_heart: | `:purple_heart:` | :brown_heart: | `:brown_heart:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :black_heart: | `:black_heart:` | :grey_heart: | `:grey_heart:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :white_heart: | `:white_heart:` | | | [top](#table-of-contents) | ### Emotion | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#smileys--emotion) | :kiss: | `:kiss:` | :100: | `:100:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :anger: | `:anger:` | :boom: | `:boom:` `:collision:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :dizzy: | `:dizzy:` | :sweat_drops: | `:sweat_drops:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :dash: | `:dash:` | :hole: | `:hole:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :speech_balloon: | `:speech_balloon:` | :eye_speech_bubble: | `:eye_speech_bubble:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :left_speech_bubble: | `:left_speech_bubble:` | :right_anger_bubble: | `:right_anger_bubble:` | [top](#table-of-contents) | | [top](#smileys--emotion) | :thought_balloon: | `:thought_balloon:` | :zzz: | `:zzz:` | [top](#table-of-contents) | ## People & Body - [Hand Fingers Open](#hand-fingers-open) - [Hand Fingers Partial](#hand-fingers-partial) - [Hand Single Finger](#hand-single-finger) - [Hand Fingers Closed](#hand-fingers-closed) - [Hands](#hands) - [Hand Prop](#hand-prop) - [Body Parts](#body-parts) - [Person](#person) - [Person Gesture](#person-gesture) - [Person Role](#person-role) - [Person Fantasy](#person-fantasy) - [Person Activity](#person-activity) - [Person Sport](#person-sport) - [Person Resting](#person-resting) - [Family](#family) - [Person Symbol](#person-symbol) ### Hand Fingers Open | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :wave: | `:wave:` | :raised_back_of_hand: | `:raised_back_of_hand:` | [top](#table-of-contents) | | [top](#people--body) | :raised_hand_with_fingers_splayed: | `:raised_hand_with_fingers_splayed:` | :hand: | `:hand:` `:raised_hand:` | [top](#table-of-contents) | | [top](#people--body) | :vulcan_salute: | `:vulcan_salute:` | :rightwards_hand: | `:rightwards_hand:` | [top](#table-of-contents) | | [top](#people--body) | :leftwards_hand: | `:leftwards_hand:` | :palm_down_hand: | `:palm_down_hand:` | [top](#table-of-contents) | | [top](#people--body) | :palm_up_hand: | `:palm_up_hand:` | :leftwards_pushing_hand: | `:leftwards_pushing_hand:` | [top](#table-of-contents) | | [top](#people--body) | :rightwards_pushing_hand: | `:rightwards_pushing_hand:` | | | [top](#table-of-contents) | ### Hand Fingers Partial | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :ok_hand: | `:ok_hand:` | :pinched_fingers: | `:pinched_fingers:` | [top](#table-of-contents) | | [top](#people--body) | :pinching_hand: | `:pinching_hand:` | :v: | `:v:` | [top](#table-of-contents) | | [top](#people--body) | :crossed_fingers: | `:crossed_fingers:` | :hand_with_index_finger_and_thumb_crossed: | `:hand_with_index_finger_and_thumb_crossed:` | [top](#table-of-contents) | | [top](#people--body) | :love_you_gesture: | `:love_you_gesture:` | :metal: | `:metal:` | [top](#table-of-contents) | | [top](#people--body) | :call_me_hand: | `:call_me_hand:` | | | [top](#table-of-contents) | ### Hand Single Finger | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :point_left: | `:point_left:` | :point_right: | `:point_right:` | [top](#table-of-contents) | | [top](#people--body) | :point_up_2: | `:point_up_2:` | :fu: | `:fu:` `:middle_finger:` | [top](#table-of-contents) | | [top](#people--body) | :point_down: | `:point_down:` | :point_up: | `:point_up:` | [top](#table-of-contents) | | [top](#people--body) | :index_pointing_at_the_viewer: | `:index_pointing_at_the_viewer:` | | | [top](#table-of-contents) | ### Hand Fingers Closed | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :+1: | `:+1:` `:thumbsup:` | :-1: | `:-1:` `:thumbsdown:` | [top](#table-of-contents) | | [top](#people--body) | :fist: | `:fist:` `:fist_raised:` | :facepunch: | `:facepunch:` `:fist_oncoming:` `:punch:` | [top](#table-of-contents) | | [top](#people--body) | :fist_left: | `:fist_left:` | :fist_right: | `:fist_right:` | [top](#table-of-contents) | ### Hands | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :clap: | `:clap:` | :raised_hands: | `:raised_hands:` | [top](#table-of-contents) | | [top](#people--body) | :heart_hands: | `:heart_hands:` | :open_hands: | `:open_hands:` | [top](#table-of-contents) | | [top](#people--body) | :palms_up_together: | `:palms_up_together:` | :handshake: | `:handshake:` | [top](#table-of-contents) | | [top](#people--body) | :pray: | `:pray:` | | | [top](#table-of-contents) | ### Hand Prop | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :writing_hand: | `:writing_hand:` | :nail_care: | `:nail_care:` | [top](#table-of-contents) | | [top](#people--body) | :selfie: | `:selfie:` | | | [top](#table-of-contents) | ### Body Parts | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :muscle: | `:muscle:` | :mechanical_arm: | `:mechanical_arm:` | [top](#table-of-contents) | | [top](#people--body) | :mechanical_leg: | `:mechanical_leg:` | :leg: | `:leg:` | [top](#table-of-contents) | | [top](#people--body) | :foot: | `:foot:` | :ear: | `:ear:` | [top](#table-of-contents) | | [top](#people--body) | :ear_with_hearing_aid: | `:ear_with_hearing_aid:` | :nose: | `:nose:` | [top](#table-of-contents) | | [top](#people--body) | :brain: | `:brain:` | :anatomical_heart: | `:anatomical_heart:` | [top](#table-of-contents) | | [top](#people--body) | :lungs: | `:lungs:` | :tooth: | `:tooth:` | [top](#table-of-contents) | | [top](#people--body) | :bone: | `:bone:` | :eyes: | `:eyes:` | [top](#table-of-contents) | | [top](#people--body) | :eye: | `:eye:` | :tongue: | `:tongue:` | [top](#table-of-contents) | | [top](#people--body) | :lips: | `:lips:` | :biting_lip: | `:biting_lip:` | [top](#table-of-contents) | ### Person | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :baby: | `:baby:` | :child: | `:child:` | [top](#table-of-contents) | | [top](#people--body) | :boy: | `:boy:` | :girl: | `:girl:` | [top](#table-of-contents) | | [top](#people--body) | :adult: | `:adult:` | :blond_haired_person: | `:blond_haired_person:` | [top](#table-of-contents) | | [top](#people--body) | :man: | `:man:` | :bearded_person: | `:bearded_person:` | [top](#table-of-contents) | | [top](#people--body) | :man_beard: | `:man_beard:` | :woman_beard: | `:woman_beard:` | [top](#table-of-contents) | | [top](#people--body) | :red_haired_man: | `:red_haired_man:` | :curly_haired_man: | `:curly_haired_man:` | [top](#table-of-contents) | | [top](#people--body) | :white_haired_man: | `:white_haired_man:` | :bald_man: | `:bald_man:` | [top](#table-of-contents) | | [top](#people--body) | :woman: | `:woman:` | :red_haired_woman: | `:red_haired_woman:` | [top](#table-of-contents) | | [top](#people--body) | :person_red_hair: | `:person_red_hair:` | :curly_haired_woman: | `:curly_haired_woman:` | [top](#table-of-contents) | | [top](#people--body) | :person_curly_hair: | `:person_curly_hair:` | :white_haired_woman: | `:white_haired_woman:` | [top](#table-of-contents) | | [top](#people--body) | :person_white_hair: | `:person_white_hair:` | :bald_woman: | `:bald_woman:` | [top](#table-of-contents) | | [top](#people--body) | :person_bald: | `:person_bald:` | :blond_haired_woman: | `:blond_haired_woman:` `:blonde_woman:` | [top](#table-of-contents) | | [top](#people--body) | :blond_haired_man: | `:blond_haired_man:` | :older_adult: | `:older_adult:` | [top](#table-of-contents) | | [top](#people--body) | :older_man: | `:older_man:` | :older_woman: | `:older_woman:` | [top](#table-of-contents) | ### Person Gesture | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :frowning_person: | `:frowning_person:` | :frowning_man: | `:frowning_man:` | [top](#table-of-contents) | | [top](#people--body) | :frowning_woman: | `:frowning_woman:` | :pouting_face: | `:pouting_face:` | [top](#table-of-contents) | | [top](#people--body) | :pouting_man: | `:pouting_man:` | :pouting_woman: | `:pouting_woman:` | [top](#table-of-contents) | | [top](#people--body) | :no_good: | `:no_good:` | :ng_man: | `:ng_man:` `:no_good_man:` | [top](#table-of-contents) | | [top](#people--body) | :ng_woman: | `:ng_woman:` `:no_good_woman:` | :ok_person: | `:ok_person:` | [top](#table-of-contents) | | [top](#people--body) | :ok_man: | `:ok_man:` | :ok_woman: | `:ok_woman:` | [top](#table-of-contents) | | [top](#people--body) | :information_desk_person: | `:information_desk_person:` `:tipping_hand_person:` | :sassy_man: | `:sassy_man:` `:tipping_hand_man:` | [top](#table-of-contents) | | [top](#people--body) | :sassy_woman: | `:sassy_woman:` `:tipping_hand_woman:` | :raising_hand: | `:raising_hand:` | [top](#table-of-contents) | | [top](#people--body) | :raising_hand_man: | `:raising_hand_man:` | :raising_hand_woman: | `:raising_hand_woman:` | [top](#table-of-contents) | | [top](#people--body) | :deaf_person: | `:deaf_person:` | :deaf_man: | `:deaf_man:` | [top](#table-of-contents) | | [top](#people--body) | :deaf_woman: | `:deaf_woman:` | :bow: | `:bow:` | [top](#table-of-contents) | | [top](#people--body) | :bowing_man: | `:bowing_man:` | :bowing_woman: | `:bowing_woman:` | [top](#table-of-contents) | | [top](#people--body) | :facepalm: | `:facepalm:` | :man_facepalming: | `:man_facepalming:` | [top](#table-of-contents) | | [top](#people--body) | :woman_facepalming: | `:woman_facepalming:` | :shrug: | `:shrug:` | [top](#table-of-contents) | | [top](#people--body) | :man_shrugging: | `:man_shrugging:` | :woman_shrugging: | `:woman_shrugging:` | [top](#table-of-contents) | ### Person Role | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :health_worker: | `:health_worker:` | :man_health_worker: | `:man_health_worker:` | [top](#table-of-contents) | | [top](#people--body) | :woman_health_worker: | `:woman_health_worker:` | :student: | `:student:` | [top](#table-of-contents) | | [top](#people--body) | :man_student: | `:man_student:` | :woman_student: | `:woman_student:` | [top](#table-of-contents) | | [top](#people--body) | :teacher: | `:teacher:` | :man_teacher: | `:man_teacher:` | [top](#table-of-contents) | | [top](#people--body) | :woman_teacher: | `:woman_teacher:` | :judge: | `:judge:` | [top](#table-of-contents) | | [top](#people--body) | :man_judge: | `:man_judge:` | :woman_judge: | `:woman_judge:` | [top](#table-of-contents) | | [top](#people--body) | :farmer: | `:farmer:` | :man_farmer: | `:man_farmer:` | [top](#table-of-contents) | | [top](#people--body) | :woman_farmer: | `:woman_farmer:` | :cook: | `:cook:` | [top](#table-of-contents) | | [top](#people--body) | :man_cook: | `:man_cook:` | :woman_cook: | `:woman_cook:` | [top](#table-of-contents) | | [top](#people--body) | :mechanic: | `:mechanic:` | :man_mechanic: | `:man_mechanic:` | [top](#table-of-contents) | | [top](#people--body) | :woman_mechanic: | `:woman_mechanic:` | :factory_worker: | `:factory_worker:` | [top](#table-of-contents) | | [top](#people--body) | :man_factory_worker: | `:man_factory_worker:` | :woman_factory_worker: | `:woman_factory_worker:` | [top](#table-of-contents) | | [top](#people--body) | :office_worker: | `:office_worker:` | :man_office_worker: | `:man_office_worker:` | [top](#table-of-contents) | | [top](#people--body) | :woman_office_worker: | `:woman_office_worker:` | :scientist: | `:scientist:` | [top](#table-of-contents) | | [top](#people--body) | :man_scientist: | `:man_scientist:` | :woman_scientist: | `:woman_scientist:` | [top](#table-of-contents) | | [top](#people--body) | :technologist: | `:technologist:` | :man_technologist: | `:man_technologist:` | [top](#table-of-contents) | | [top](#people--body) | :woman_technologist: | `:woman_technologist:` | :singer: | `:singer:` | [top](#table-of-contents) | | [top](#people--body) | :man_singer: | `:man_singer:` | :woman_singer: | `:woman_singer:` | [top](#table-of-contents) | | [top](#people--body) | :artist: | `:artist:` | :man_artist: | `:man_artist:` | [top](#table-of-contents) | | [top](#people--body) | :woman_artist: | `:woman_artist:` | :pilot: | `:pilot:` | [top](#table-of-contents) | | [top](#people--body) | :man_pilot: | `:man_pilot:` | :woman_pilot: | `:woman_pilot:` | [top](#table-of-contents) | | [top](#people--body) | :astronaut: | `:astronaut:` | :man_astronaut: | `:man_astronaut:` | [top](#table-of-contents) | | [top](#people--body) | :woman_astronaut: | `:woman_astronaut:` | :firefighter: | `:firefighter:` | [top](#table-of-contents) | | [top](#people--body) | :man_firefighter: | `:man_firefighter:` | :woman_firefighter: | `:woman_firefighter:` | [top](#table-of-contents) | | [top](#people--body) | :cop: | `:cop:` `:police_officer:` | :policeman: | `:policeman:` | [top](#table-of-contents) | | [top](#people--body) | :policewoman: | `:policewoman:` | :detective: | `:detective:` | [top](#table-of-contents) | | [top](#people--body) | :male_detective: | `:male_detective:` | :female_detective: | `:female_detective:` | [top](#table-of-contents) | | [top](#people--body) | :guard: | `:guard:` | :guardsman: | `:guardsman:` | [top](#table-of-contents) | | [top](#people--body) | :guardswoman: | `:guardswoman:` | :ninja: | `:ninja:` | [top](#table-of-contents) | | [top](#people--body) | :construction_worker: | `:construction_worker:` | :construction_worker_man: | `:construction_worker_man:` | [top](#table-of-contents) | | [top](#people--body) | :construction_worker_woman: | `:construction_worker_woman:` | :person_with_crown: | `:person_with_crown:` | [top](#table-of-contents) | | [top](#people--body) | :prince: | `:prince:` | :princess: | `:princess:` | [top](#table-of-contents) | | [top](#people--body) | :person_with_turban: | `:person_with_turban:` | :man_with_turban: | `:man_with_turban:` | [top](#table-of-contents) | | [top](#people--body) | :woman_with_turban: | `:woman_with_turban:` | :man_with_gua_pi_mao: | `:man_with_gua_pi_mao:` | [top](#table-of-contents) | | [top](#people--body) | :woman_with_headscarf: | `:woman_with_headscarf:` | :person_in_tuxedo: | `:person_in_tuxedo:` | [top](#table-of-contents) | | [top](#people--body) | :man_in_tuxedo: | `:man_in_tuxedo:` | :woman_in_tuxedo: | `:woman_in_tuxedo:` | [top](#table-of-contents) | | [top](#people--body) | :person_with_veil: | `:person_with_veil:` | :man_with_veil: | `:man_with_veil:` | [top](#table-of-contents) | | [top](#people--body) | :bride_with_veil: | `:bride_with_veil:` `:woman_with_veil:` | :pregnant_woman: | `:pregnant_woman:` | [top](#table-of-contents) | | [top](#people--body) | :pregnant_man: | `:pregnant_man:` | :pregnant_person: | `:pregnant_person:` | [top](#table-of-contents) | | [top](#people--body) | :breast_feeding: | `:breast_feeding:` | :woman_feeding_baby: | `:woman_feeding_baby:` | [top](#table-of-contents) | | [top](#people--body) | :man_feeding_baby: | `:man_feeding_baby:` | :person_feeding_baby: | `:person_feeding_baby:` | [top](#table-of-contents) | ### Person Fantasy | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :angel: | `:angel:` | :santa: | `:santa:` | [top](#table-of-contents) | | [top](#people--body) | :mrs_claus: | `:mrs_claus:` | :mx_claus: | `:mx_claus:` | [top](#table-of-contents) | | [top](#people--body) | :superhero: | `:superhero:` | :superhero_man: | `:superhero_man:` | [top](#table-of-contents) | | [top](#people--body) | :superhero_woman: | `:superhero_woman:` | :supervillain: | `:supervillain:` | [top](#table-of-contents) | | [top](#people--body) | :supervillain_man: | `:supervillain_man:` | :supervillain_woman: | `:supervillain_woman:` | [top](#table-of-contents) | | [top](#people--body) | :mage: | `:mage:` | :mage_man: | `:mage_man:` | [top](#table-of-contents) | | [top](#people--body) | :mage_woman: | `:mage_woman:` | :fairy: | `:fairy:` | [top](#table-of-contents) | | [top](#people--body) | :fairy_man: | `:fairy_man:` | :fairy_woman: | `:fairy_woman:` | [top](#table-of-contents) | | [top](#people--body) | :vampire: | `:vampire:` | :vampire_man: | `:vampire_man:` | [top](#table-of-contents) | | [top](#people--body) | :vampire_woman: | `:vampire_woman:` | :merperson: | `:merperson:` | [top](#table-of-contents) | | [top](#people--body) | :merman: | `:merman:` | :mermaid: | `:mermaid:` | [top](#table-of-contents) | | [top](#people--body) | :elf: | `:elf:` | :elf_man: | `:elf_man:` | [top](#table-of-contents) | | [top](#people--body) | :elf_woman: | `:elf_woman:` | :genie: | `:genie:` | [top](#table-of-contents) | | [top](#people--body) | :genie_man: | `:genie_man:` | :genie_woman: | `:genie_woman:` | [top](#table-of-contents) | | [top](#people--body) | :zombie: | `:zombie:` | :zombie_man: | `:zombie_man:` | [top](#table-of-contents) | | [top](#people--body) | :zombie_woman: | `:zombie_woman:` | :troll: | `:troll:` | [top](#table-of-contents) | ### Person Activity | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :massage: | `:massage:` | :massage_man: | `:massage_man:` | [top](#table-of-contents) | | [top](#people--body) | :massage_woman: | `:massage_woman:` | :haircut: | `:haircut:` | [top](#table-of-contents) | | [top](#people--body) | :haircut_man: | `:haircut_man:` | :haircut_woman: | `:haircut_woman:` | [top](#table-of-contents) | | [top](#people--body) | :walking: | `:walking:` | :walking_man: | `:walking_man:` | [top](#table-of-contents) | | [top](#people--body) | :walking_woman: | `:walking_woman:` | :standing_person: | `:standing_person:` | [top](#table-of-contents) | | [top](#people--body) | :standing_man: | `:standing_man:` | :standing_woman: | `:standing_woman:` | [top](#table-of-contents) | | [top](#people--body) | :kneeling_person: | `:kneeling_person:` | :kneeling_man: | `:kneeling_man:` | [top](#table-of-contents) | | [top](#people--body) | :kneeling_woman: | `:kneeling_woman:` | :person_with_probing_cane: | `:person_with_probing_cane:` | [top](#table-of-contents) | | [top](#people--body) | :man_with_probing_cane: | `:man_with_probing_cane:` | :woman_with_probing_cane: | `:woman_with_probing_cane:` | [top](#table-of-contents) | | [top](#people--body) | :person_in_motorized_wheelchair: | `:person_in_motorized_wheelchair:` | :man_in_motorized_wheelchair: | `:man_in_motorized_wheelchair:` | [top](#table-of-contents) | | [top](#people--body) | :woman_in_motorized_wheelchair: | `:woman_in_motorized_wheelchair:` | :person_in_manual_wheelchair: | `:person_in_manual_wheelchair:` | [top](#table-of-contents) | | [top](#people--body) | :man_in_manual_wheelchair: | `:man_in_manual_wheelchair:` | :woman_in_manual_wheelchair: | `:woman_in_manual_wheelchair:` | [top](#table-of-contents) | | [top](#people--body) | :runner: | `:runner:` `:running:` | :running_man: | `:running_man:` | [top](#table-of-contents) | | [top](#people--body) | :running_woman: | `:running_woman:` | :dancer: | `:dancer:` `:woman_dancing:` | [top](#table-of-contents) | | [top](#people--body) | :man_dancing: | `:man_dancing:` | :business_suit_levitating: | `:business_suit_levitating:` | [top](#table-of-contents) | | [top](#people--body) | :dancers: | `:dancers:` | :dancing_men: | `:dancing_men:` | [top](#table-of-contents) | | [top](#people--body) | :dancing_women: | `:dancing_women:` | :sauna_person: | `:sauna_person:` | [top](#table-of-contents) | | [top](#people--body) | :sauna_man: | `:sauna_man:` | :sauna_woman: | `:sauna_woman:` | [top](#table-of-contents) | | [top](#people--body) | :climbing: | `:climbing:` | :climbing_man: | `:climbing_man:` | [top](#table-of-contents) | | [top](#people--body) | :climbing_woman: | `:climbing_woman:` | | | [top](#table-of-contents) | ### Person Sport | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :person_fencing: | `:person_fencing:` | :horse_racing: | `:horse_racing:` | [top](#table-of-contents) | | [top](#people--body) | :skier: | `:skier:` | :snowboarder: | `:snowboarder:` | [top](#table-of-contents) | | [top](#people--body) | :golfing: | `:golfing:` | :golfing_man: | `:golfing_man:` | [top](#table-of-contents) | | [top](#people--body) | :golfing_woman: | `:golfing_woman:` | :surfer: | `:surfer:` | [top](#table-of-contents) | | [top](#people--body) | :surfing_man: | `:surfing_man:` | :surfing_woman: | `:surfing_woman:` | [top](#table-of-contents) | | [top](#people--body) | :rowboat: | `:rowboat:` | :rowing_man: | `:rowing_man:` | [top](#table-of-contents) | | [top](#people--body) | :rowing_woman: | `:rowing_woman:` | :swimmer: | `:swimmer:` | [top](#table-of-contents) | | [top](#people--body) | :swimming_man: | `:swimming_man:` | :swimming_woman: | `:swimming_woman:` | [top](#table-of-contents) | | [top](#people--body) | :bouncing_ball_person: | `:bouncing_ball_person:` | :basketball_man: | `:basketball_man:` `:bouncing_ball_man:` | [top](#table-of-contents) | | [top](#people--body) | :basketball_woman: | `:basketball_woman:` `:bouncing_ball_woman:` | :weight_lifting: | `:weight_lifting:` | [top](#table-of-contents) | | [top](#people--body) | :weight_lifting_man: | `:weight_lifting_man:` | :weight_lifting_woman: | `:weight_lifting_woman:` | [top](#table-of-contents) | | [top](#people--body) | :bicyclist: | `:bicyclist:` | :biking_man: | `:biking_man:` | [top](#table-of-contents) | | [top](#people--body) | :biking_woman: | `:biking_woman:` | :mountain_bicyclist: | `:mountain_bicyclist:` | [top](#table-of-contents) | | [top](#people--body) | :mountain_biking_man: | `:mountain_biking_man:` | :mountain_biking_woman: | `:mountain_biking_woman:` | [top](#table-of-contents) | | [top](#people--body) | :cartwheeling: | `:cartwheeling:` | :man_cartwheeling: | `:man_cartwheeling:` | [top](#table-of-contents) | | [top](#people--body) | :woman_cartwheeling: | `:woman_cartwheeling:` | :wrestling: | `:wrestling:` | [top](#table-of-contents) | | [top](#people--body) | :men_wrestling: | `:men_wrestling:` | :women_wrestling: | `:women_wrestling:` | [top](#table-of-contents) | | [top](#people--body) | :water_polo: | `:water_polo:` | :man_playing_water_polo: | `:man_playing_water_polo:` | [top](#table-of-contents) | | [top](#people--body) | :woman_playing_water_polo: | `:woman_playing_water_polo:` | :handball_person: | `:handball_person:` | [top](#table-of-contents) | | [top](#people--body) | :man_playing_handball: | `:man_playing_handball:` | :woman_playing_handball: | `:woman_playing_handball:` | [top](#table-of-contents) | | [top](#people--body) | :juggling_person: | `:juggling_person:` | :man_juggling: | `:man_juggling:` | [top](#table-of-contents) | | [top](#people--body) | :woman_juggling: | `:woman_juggling:` | | | [top](#table-of-contents) | ### Person Resting | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :lotus_position: | `:lotus_position:` | :lotus_position_man: | `:lotus_position_man:` | [top](#table-of-contents) | | [top](#people--body) | :lotus_position_woman: | `:lotus_position_woman:` | :bath: | `:bath:` | [top](#table-of-contents) | | [top](#people--body) | :sleeping_bed: | `:sleeping_bed:` | | | [top](#table-of-contents) | ### Family | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :people_holding_hands: | `:people_holding_hands:` | :two_women_holding_hands: | `:two_women_holding_hands:` | [top](#table-of-contents) | | [top](#people--body) | :couple: | `:couple:` | :two_men_holding_hands: | `:two_men_holding_hands:` | [top](#table-of-contents) | | [top](#people--body) | :couplekiss: | `:couplekiss:` | :couplekiss_man_woman: | `:couplekiss_man_woman:` | [top](#table-of-contents) | | [top](#people--body) | :couplekiss_man_man: | `:couplekiss_man_man:` | :couplekiss_woman_woman: | `:couplekiss_woman_woman:` | [top](#table-of-contents) | | [top](#people--body) | :couple_with_heart: | `:couple_with_heart:` | :couple_with_heart_woman_man: | `:couple_with_heart_woman_man:` | [top](#table-of-contents) | | [top](#people--body) | :couple_with_heart_man_man: | `:couple_with_heart_man_man:` | :couple_with_heart_woman_woman: | `:couple_with_heart_woman_woman:` | [top](#table-of-contents) | | [top](#people--body) | :family_man_woman_boy: | `:family_man_woman_boy:` | :family_man_woman_girl: | `:family_man_woman_girl:` | [top](#table-of-contents) | | [top](#people--body) | :family_man_woman_girl_boy: | `:family_man_woman_girl_boy:` | :family_man_woman_boy_boy: | `:family_man_woman_boy_boy:` | [top](#table-of-contents) | | [top](#people--body) | :family_man_woman_girl_girl: | `:family_man_woman_girl_girl:` | :family_man_man_boy: | `:family_man_man_boy:` | [top](#table-of-contents) | | [top](#people--body) | :family_man_man_girl: | `:family_man_man_girl:` | :family_man_man_girl_boy: | `:family_man_man_girl_boy:` | [top](#table-of-contents) | | [top](#people--body) | :family_man_man_boy_boy: | `:family_man_man_boy_boy:` | :family_man_man_girl_girl: | `:family_man_man_girl_girl:` | [top](#table-of-contents) | | [top](#people--body) | :family_woman_woman_boy: | `:family_woman_woman_boy:` | :family_woman_woman_girl: | `:family_woman_woman_girl:` | [top](#table-of-contents) | | [top](#people--body) | :family_woman_woman_girl_boy: | `:family_woman_woman_girl_boy:` | :family_woman_woman_boy_boy: | `:family_woman_woman_boy_boy:` | [top](#table-of-contents) | | [top](#people--body) | :family_woman_woman_girl_girl: | `:family_woman_woman_girl_girl:` | :family_man_boy: | `:family_man_boy:` | [top](#table-of-contents) | | [top](#people--body) | :family_man_boy_boy: | `:family_man_boy_boy:` | :family_man_girl: | `:family_man_girl:` | [top](#table-of-contents) | | [top](#people--body) | :family_man_girl_boy: | `:family_man_girl_boy:` | :family_man_girl_girl: | `:family_man_girl_girl:` | [top](#table-of-contents) | | [top](#people--body) | :family_woman_boy: | `:family_woman_boy:` | :family_woman_boy_boy: | `:family_woman_boy_boy:` | [top](#table-of-contents) | | [top](#people--body) | :family_woman_girl: | `:family_woman_girl:` | :family_woman_girl_boy: | `:family_woman_girl_boy:` | [top](#table-of-contents) | | [top](#people--body) | :family_woman_girl_girl: | `:family_woman_girl_girl:` | | | [top](#table-of-contents) | ### Person Symbol | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#people--body) | :speaking_head: | `:speaking_head:` | :bust_in_silhouette: | `:bust_in_silhouette:` | [top](#table-of-contents) | | [top](#people--body) | :busts_in_silhouette: | `:busts_in_silhouette:` | :people_hugging: | `:people_hugging:` | [top](#table-of-contents) | | [top](#people--body) | :family: | `:family:` | :footprints: | `:footprints:` | [top](#table-of-contents) | ## Animals & Nature - [Animal Mammal](#animal-mammal) - [Animal Bird](#animal-bird) - [Animal Amphibian](#animal-amphibian) - [Animal Reptile](#animal-reptile) - [Animal Marine](#animal-marine) - [Animal Bug](#animal-bug) - [Plant Flower](#plant-flower) - [Plant Other](#plant-other) ### Animal Mammal | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#animals--nature) | :monkey_face: | `:monkey_face:` | :monkey: | `:monkey:` | [top](#table-of-contents) | | [top](#animals--nature) | :gorilla: | `:gorilla:` | :orangutan: | `:orangutan:` | [top](#table-of-contents) | | [top](#animals--nature) | :dog: | `:dog:` | :dog2: | `:dog2:` | [top](#table-of-contents) | | [top](#animals--nature) | :guide_dog: | `:guide_dog:` | :service_dog: | `:service_dog:` | [top](#table-of-contents) | | [top](#animals--nature) | :poodle: | `:poodle:` | :wolf: | `:wolf:` | [top](#table-of-contents) | | [top](#animals--nature) | :fox_face: | `:fox_face:` | :raccoon: | `:raccoon:` | [top](#table-of-contents) | | [top](#animals--nature) | :cat: | `:cat:` | :cat2: | `:cat2:` | [top](#table-of-contents) | | [top](#animals--nature) | :black_cat: | `:black_cat:` | :lion: | `:lion:` | [top](#table-of-contents) | | [top](#animals--nature) | :tiger: | `:tiger:` | :tiger2: | `:tiger2:` | [top](#table-of-contents) | | [top](#animals--nature) | :leopard: | `:leopard:` | :horse: | `:horse:` | [top](#table-of-contents) | | [top](#animals--nature) | :moose: | `:moose:` | :donkey: | `:donkey:` | [top](#table-of-contents) | | [top](#animals--nature) | :racehorse: | `:racehorse:` | :unicorn: | `:unicorn:` | [top](#table-of-contents) | | [top](#animals--nature) | :zebra: | `:zebra:` | :deer: | `:deer:` | [top](#table-of-contents) | | [top](#animals--nature) | :bison: | `:bison:` | :cow: | `:cow:` | [top](#table-of-contents) | | [top](#animals--nature) | :ox: | `:ox:` | :water_buffalo: | `:water_buffalo:` | [top](#table-of-contents) | | [top](#animals--nature) | :cow2: | `:cow2:` | :pig: | `:pig:` | [top](#table-of-contents) | | [top](#animals--nature) | :pig2: | `:pig2:` | :boar: | `:boar:` | [top](#table-of-contents) | | [top](#animals--nature) | :pig_nose: | `:pig_nose:` | :ram: | `:ram:` | [top](#table-of-contents) | | [top](#animals--nature) | :sheep: | `:sheep:` | :goat: | `:goat:` | [top](#table-of-contents) | | [top](#animals--nature) | :dromedary_camel: | `:dromedary_camel:` | :camel: | `:camel:` | [top](#table-of-contents) | | [top](#animals--nature) | :llama: | `:llama:` | :giraffe: | `:giraffe:` | [top](#table-of-contents) | | [top](#animals--nature) | :elephant: | `:elephant:` | :mammoth: | `:mammoth:` | [top](#table-of-contents) | | [top](#animals--nature) | :rhinoceros: | `:rhinoceros:` | :hippopotamus: | `:hippopotamus:` | [top](#table-of-contents) | | [top](#animals--nature) | :mouse: | `:mouse:` | :mouse2: | `:mouse2:` | [top](#table-of-contents) | | [top](#animals--nature) | :rat: | `:rat:` | :hamster: | `:hamster:` | [top](#table-of-contents) | | [top](#animals--nature) | :rabbit: | `:rabbit:` | :rabbit2: | `:rabbit2:` | [top](#table-of-contents) | | [top](#animals--nature) | :chipmunk: | `:chipmunk:` | :beaver: | `:beaver:` | [top](#table-of-contents) | | [top](#animals--nature) | :hedgehog: | `:hedgehog:` | :bat: | `:bat:` | [top](#table-of-contents) | | [top](#animals--nature) | :bear: | `:bear:` | :polar_bear: | `:polar_bear:` | [top](#table-of-contents) | | [top](#animals--nature) | :koala: | `:koala:` | :panda_face: | `:panda_face:` | [top](#table-of-contents) | | [top](#animals--nature) | :sloth: | `:sloth:` | :otter: | `:otter:` | [top](#table-of-contents) | | [top](#animals--nature) | :skunk: | `:skunk:` | :kangaroo: | `:kangaroo:` | [top](#table-of-contents) | | [top](#animals--nature) | :badger: | `:badger:` | :feet: | `:feet:` `:paw_prints:` | [top](#table-of-contents) | ### Animal Bird | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#animals--nature) | :turkey: | `:turkey:` | :chicken: | `:chicken:` | [top](#table-of-contents) | | [top](#animals--nature) | :rooster: | `:rooster:` | :hatching_chick: | `:hatching_chick:` | [top](#table-of-contents) | | [top](#animals--nature) | :baby_chick: | `:baby_chick:` | :hatched_chick: | `:hatched_chick:` | [top](#table-of-contents) | | [top](#animals--nature) | :bird: | `:bird:` | :penguin: | `:penguin:` | [top](#table-of-contents) | | [top](#animals--nature) | :dove: | `:dove:` | :eagle: | `:eagle:` | [top](#table-of-contents) | | [top](#animals--nature) | :duck: | `:duck:` | :swan: | `:swan:` | [top](#table-of-contents) | | [top](#animals--nature) | :owl: | `:owl:` | :dodo: | `:dodo:` | [top](#table-of-contents) | | [top](#animals--nature) | :feather: | `:feather:` | :flamingo: | `:flamingo:` | [top](#table-of-contents) | | [top](#animals--nature) | :peacock: | `:peacock:` | :parrot: | `:parrot:` | [top](#table-of-contents) | | [top](#animals--nature) | :wing: | `:wing:` | :black_bird: | `:black_bird:` | [top](#table-of-contents) | | [top](#animals--nature) | :goose: | `:goose:` | | | [top](#table-of-contents) | ### Animal Amphibian | | ico | shortcode | | | - | :-: | - | - | | [top](#animals--nature) | :frog: | `:frog:` | [top](#table-of-contents) | ### Animal Reptile | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#animals--nature) | :crocodile: | `:crocodile:` | :turtle: | `:turtle:` | [top](#table-of-contents) | | [top](#animals--nature) | :lizard: | `:lizard:` | :snake: | `:snake:` | [top](#table-of-contents) | | [top](#animals--nature) | :dragon_face: | `:dragon_face:` | :dragon: | `:dragon:` | [top](#table-of-contents) | | [top](#animals--nature) | :sauropod: | `:sauropod:` | :t-rex: | `:t-rex:` | [top](#table-of-contents) | ### Animal Marine | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#animals--nature) | :whale: | `:whale:` | :whale2: | `:whale2:` | [top](#table-of-contents) | | [top](#animals--nature) | :dolphin: | `:dolphin:` `:flipper:` | :seal: | `:seal:` | [top](#table-of-contents) | | [top](#animals--nature) | :fish: | `:fish:` | :tropical_fish: | `:tropical_fish:` | [top](#table-of-contents) | | [top](#animals--nature) | :blowfish: | `:blowfish:` | :shark: | `:shark:` | [top](#table-of-contents) | | [top](#animals--nature) | :octopus: | `:octopus:` | :shell: | `:shell:` | [top](#table-of-contents) | | [top](#animals--nature) | :coral: | `:coral:` | :jellyfish: | `:jellyfish:` | [top](#table-of-contents) | ### Animal Bug | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#animals--nature) | :snail: | `:snail:` | :butterfly: | `:butterfly:` | [top](#table-of-contents) | | [top](#animals--nature) | :bug: | `:bug:` | :ant: | `:ant:` | [top](#table-of-contents) | | [top](#animals--nature) | :bee: | `:bee:` `:honeybee:` | :beetle: | `:beetle:` | [top](#table-of-contents) | | [top](#animals--nature) | :lady_beetle: | `:lady_beetle:` | :cricket: | `:cricket:` | [top](#table-of-contents) | | [top](#animals--nature) | :cockroach: | `:cockroach:` | :spider: | `:spider:` | [top](#table-of-contents) | | [top](#animals--nature) | :spider_web: | `:spider_web:` | :scorpion: | `:scorpion:` | [top](#table-of-contents) | | [top](#animals--nature) | :mosquito: | `:mosquito:` | :fly: | `:fly:` | [top](#table-of-contents) | | [top](#animals--nature) | :worm: | `:worm:` | :microbe: | `:microbe:` | [top](#table-of-contents) | ### Plant Flower | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#animals--nature) | :bouquet: | `:bouquet:` | :cherry_blossom: | `:cherry_blossom:` | [top](#table-of-contents) | | [top](#animals--nature) | :white_flower: | `:white_flower:` | :lotus: | `:lotus:` | [top](#table-of-contents) | | [top](#animals--nature) | :rosette: | `:rosette:` | :rose: | `:rose:` | [top](#table-of-contents) | | [top](#animals--nature) | :wilted_flower: | `:wilted_flower:` | :hibiscus: | `:hibiscus:` | [top](#table-of-contents) | | [top](#animals--nature) | :sunflower: | `:sunflower:` | :blossom: | `:blossom:` | [top](#table-of-contents) | | [top](#animals--nature) | :tulip: | `:tulip:` | :hyacinth: | `:hyacinth:` | [top](#table-of-contents) | ### Plant Other | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#animals--nature) | :seedling: | `:seedling:` | :potted_plant: | `:potted_plant:` | [top](#table-of-contents) | | [top](#animals--nature) | :evergreen_tree: | `:evergreen_tree:` | :deciduous_tree: | `:deciduous_tree:` | [top](#table-of-contents) | | [top](#animals--nature) | :palm_tree: | `:palm_tree:` | :cactus: | `:cactus:` | [top](#table-of-contents) | | [top](#animals--nature) | :ear_of_rice: | `:ear_of_rice:` | :herb: | `:herb:` | [top](#table-of-contents) | | [top](#animals--nature) | :shamrock: | `:shamrock:` | :four_leaf_clover: | `:four_leaf_clover:` | [top](#table-of-contents) | | [top](#animals--nature) | :maple_leaf: | `:maple_leaf:` | :fallen_leaf: | `:fallen_leaf:` | [top](#table-of-contents) | | [top](#animals--nature) | :leaves: | `:leaves:` | :empty_nest: | `:empty_nest:` | [top](#table-of-contents) | | [top](#animals--nature) | :nest_with_eggs: | `:nest_with_eggs:` | :mushroom: | `:mushroom:` | [top](#table-of-contents) | ## Food & Drink - [Food Fruit](#food-fruit) - [Food Vegetable](#food-vegetable) - [Food Prepared](#food-prepared) - [Food Asian](#food-asian) - [Food Marine](#food-marine) - [Food Sweet](#food-sweet) - [Drink](#drink) - [Dishware](#dishware) ### Food Fruit | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#food--drink) | :grapes: | `:grapes:` | :melon: | `:melon:` | [top](#table-of-contents) | | [top](#food--drink) | :watermelon: | `:watermelon:` | :mandarin: | `:mandarin:` `:orange:` `:tangerine:` | [top](#table-of-contents) | | [top](#food--drink) | :lemon: | `:lemon:` | :banana: | `:banana:` | [top](#table-of-contents) | | [top](#food--drink) | :pineapple: | `:pineapple:` | :mango: | `:mango:` | [top](#table-of-contents) | | [top](#food--drink) | :apple: | `:apple:` | :green_apple: | `:green_apple:` | [top](#table-of-contents) | | [top](#food--drink) | :pear: | `:pear:` | :peach: | `:peach:` | [top](#table-of-contents) | | [top](#food--drink) | :cherries: | `:cherries:` | :strawberry: | `:strawberry:` | [top](#table-of-contents) | | [top](#food--drink) | :blueberries: | `:blueberries:` | :kiwi_fruit: | `:kiwi_fruit:` | [top](#table-of-contents) | | [top](#food--drink) | :tomato: | `:tomato:` | :olive: | `:olive:` | [top](#table-of-contents) | | [top](#food--drink) | :coconut: | `:coconut:` | | | [top](#table-of-contents) | ### Food Vegetable | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#food--drink) | :avocado: | `:avocado:` | :eggplant: | `:eggplant:` | [top](#table-of-contents) | | [top](#food--drink) | :potato: | `:potato:` | :carrot: | `:carrot:` | [top](#table-of-contents) | | [top](#food--drink) | :corn: | `:corn:` | :hot_pepper: | `:hot_pepper:` | [top](#table-of-contents) | | [top](#food--drink) | :bell_pepper: | `:bell_pepper:` | :cucumber: | `:cucumber:` | [top](#table-of-contents) | | [top](#food--drink) | :leafy_green: | `:leafy_green:` | :broccoli: | `:broccoli:` | [top](#table-of-contents) | | [top](#food--drink) | :garlic: | `:garlic:` | :onion: | `:onion:` | [top](#table-of-contents) | | [top](#food--drink) | :peanuts: | `:peanuts:` | :beans: | `:beans:` | [top](#table-of-contents) | | [top](#food--drink) | :chestnut: | `:chestnut:` | :ginger_root: | `:ginger_root:` | [top](#table-of-contents) | | [top](#food--drink) | :pea_pod: | `:pea_pod:` | | | [top](#table-of-contents) | ### Food Prepared | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#food--drink) | :bread: | `:bread:` | :croissant: | `:croissant:` | [top](#table-of-contents) | | [top](#food--drink) | :baguette_bread: | `:baguette_bread:` | :flatbread: | `:flatbread:` | [top](#table-of-contents) | | [top](#food--drink) | :pretzel: | `:pretzel:` | :bagel: | `:bagel:` | [top](#table-of-contents) | | [top](#food--drink) | :pancakes: | `:pancakes:` | :waffle: | `:waffle:` | [top](#table-of-contents) | | [top](#food--drink) | :cheese: | `:cheese:` | :meat_on_bone: | `:meat_on_bone:` | [top](#table-of-contents) | | [top](#food--drink) | :poultry_leg: | `:poultry_leg:` | :cut_of_meat: | `:cut_of_meat:` | [top](#table-of-contents) | | [top](#food--drink) | :bacon: | `:bacon:` | :hamburger: | `:hamburger:` | [top](#table-of-contents) | | [top](#food--drink) | :fries: | `:fries:` | :pizza: | `:pizza:` | [top](#table-of-contents) | | [top](#food--drink) | :hotdog: | `:hotdog:` | :sandwich: | `:sandwich:` | [top](#table-of-contents) | | [top](#food--drink) | :taco: | `:taco:` | :burrito: | `:burrito:` | [top](#table-of-contents) | | [top](#food--drink) | :tamale: | `:tamale:` | :stuffed_flatbread: | `:stuffed_flatbread:` | [top](#table-of-contents) | | [top](#food--drink) | :falafel: | `:falafel:` | :egg: | `:egg:` | [top](#table-of-contents) | | [top](#food--drink) | :fried_egg: | `:fried_egg:` | :shallow_pan_of_food: | `:shallow_pan_of_food:` | [top](#table-of-contents) | | [top](#food--drink) | :stew: | `:stew:` | :fondue: | `:fondue:` | [top](#table-of-contents) | | [top](#food--drink) | :bowl_with_spoon: | `:bowl_with_spoon:` | :green_salad: | `:green_salad:` | [top](#table-of-contents) | | [top](#food--drink) | :popcorn: | `:popcorn:` | :butter: | `:butter:` | [top](#table-of-contents) | | [top](#food--drink) | :salt: | `:salt:` | :canned_food: | `:canned_food:` | [top](#table-of-contents) | ### Food Asian | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#food--drink) | :bento: | `:bento:` | :rice_cracker: | `:rice_cracker:` | [top](#table-of-contents) | | [top](#food--drink) | :rice_ball: | `:rice_ball:` | :rice: | `:rice:` | [top](#table-of-contents) | | [top](#food--drink) | :curry: | `:curry:` | :ramen: | `:ramen:` | [top](#table-of-contents) | | [top](#food--drink) | :spaghetti: | `:spaghetti:` | :sweet_potato: | `:sweet_potato:` | [top](#table-of-contents) | | [top](#food--drink) | :oden: | `:oden:` | :sushi: | `:sushi:` | [top](#table-of-contents) | | [top](#food--drink) | :fried_shrimp: | `:fried_shrimp:` | :fish_cake: | `:fish_cake:` | [top](#table-of-contents) | | [top](#food--drink) | :moon_cake: | `:moon_cake:` | :dango: | `:dango:` | [top](#table-of-contents) | | [top](#food--drink) | :dumpling: | `:dumpling:` | :fortune_cookie: | `:fortune_cookie:` | [top](#table-of-contents) | | [top](#food--drink) | :takeout_box: | `:takeout_box:` | | | [top](#table-of-contents) | ### Food Marine | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#food--drink) | :crab: | `:crab:` | :lobster: | `:lobster:` | [top](#table-of-contents) | | [top](#food--drink) | :shrimp: | `:shrimp:` | :squid: | `:squid:` | [top](#table-of-contents) | | [top](#food--drink) | :oyster: | `:oyster:` | | | [top](#table-of-contents) | ### Food Sweet | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#food--drink) | :icecream: | `:icecream:` | :shaved_ice: | `:shaved_ice:` | [top](#table-of-contents) | | [top](#food--drink) | :ice_cream: | `:ice_cream:` | :doughnut: | `:doughnut:` | [top](#table-of-contents) | | [top](#food--drink) | :cookie: | `:cookie:` | :birthday: | `:birthday:` | [top](#table-of-contents) | | [top](#food--drink) | :cake: | `:cake:` | :cupcake: | `:cupcake:` | [top](#table-of-contents) | | [top](#food--drink) | :pie: | `:pie:` | :chocolate_bar: | `:chocolate_bar:` | [top](#table-of-contents) | | [top](#food--drink) | :candy: | `:candy:` | :lollipop: | `:lollipop:` | [top](#table-of-contents) | | [top](#food--drink) | :custard: | `:custard:` | :honey_pot: | `:honey_pot:` | [top](#table-of-contents) | ### Drink | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#food--drink) | :baby_bottle: | `:baby_bottle:` | :milk_glass: | `:milk_glass:` | [top](#table-of-contents) | | [top](#food--drink) | :coffee: | `:coffee:` | :teapot: | `:teapot:` | [top](#table-of-contents) | | [top](#food--drink) | :tea: | `:tea:` | :sake: | `:sake:` | [top](#table-of-contents) | | [top](#food--drink) | :champagne: | `:champagne:` | :wine_glass: | `:wine_glass:` | [top](#table-of-contents) | | [top](#food--drink) | :cocktail: | `:cocktail:` | :tropical_drink: | `:tropical_drink:` | [top](#table-of-contents) | | [top](#food--drink) | :beer: | `:beer:` | :beers: | `:beers:` | [top](#table-of-contents) | | [top](#food--drink) | :clinking_glasses: | `:clinking_glasses:` | :tumbler_glass: | `:tumbler_glass:` | [top](#table-of-contents) | | [top](#food--drink) | :pouring_liquid: | `:pouring_liquid:` | :cup_with_straw: | `:cup_with_straw:` | [top](#table-of-contents) | | [top](#food--drink) | :bubble_tea: | `:bubble_tea:` | :beverage_box: | `:beverage_box:` | [top](#table-of-contents) | | [top](#food--drink) | :mate: | `:mate:` | :ice_cube: | `:ice_cube:` | [top](#table-of-contents) | ### Dishware | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#food--drink) | :chopsticks: | `:chopsticks:` | :plate_with_cutlery: | `:plate_with_cutlery:` | [top](#table-of-contents) | | [top](#food--drink) | :fork_and_knife: | `:fork_and_knife:` | :spoon: | `:spoon:` | [top](#table-of-contents) | | [top](#food--drink) | :hocho: | `:hocho:` `:knife:` | :jar: | `:jar:` | [top](#table-of-contents) | | [top](#food--drink) | :amphora: | `:amphora:` | | | [top](#table-of-contents) | ## Travel & Places - [Place Map](#place-map) - [Place Geographic](#place-geographic) - [Place Building](#place-building) - [Place Religious](#place-religious) - [Place Other](#place-other) - [Transport Ground](#transport-ground) - [Transport Water](#transport-water) - [Transport Air](#transport-air) - [Hotel](#hotel) - [Time](#time) - [Sky & Weather](#sky--weather) ### Place Map | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :earth_africa: | `:earth_africa:` | :earth_americas: | `:earth_americas:` | [top](#table-of-contents) | | [top](#travel--places) | :earth_asia: | `:earth_asia:` | :globe_with_meridians: | `:globe_with_meridians:` | [top](#table-of-contents) | | [top](#travel--places) | :world_map: | `:world_map:` | :japan: | `:japan:` | [top](#table-of-contents) | | [top](#travel--places) | :compass: | `:compass:` | | | [top](#table-of-contents) | ### Place Geographic | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :mountain_snow: | `:mountain_snow:` | :mountain: | `:mountain:` | [top](#table-of-contents) | | [top](#travel--places) | :volcano: | `:volcano:` | :mount_fuji: | `:mount_fuji:` | [top](#table-of-contents) | | [top](#travel--places) | :camping: | `:camping:` | :beach_umbrella: | `:beach_umbrella:` | [top](#table-of-contents) | | [top](#travel--places) | :desert: | `:desert:` | :desert_island: | `:desert_island:` | [top](#table-of-contents) | | [top](#travel--places) | :national_park: | `:national_park:` | | | [top](#table-of-contents) | ### Place Building | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :stadium: | `:stadium:` | :classical_building: | `:classical_building:` | [top](#table-of-contents) | | [top](#travel--places) | :building_construction: | `:building_construction:` | :bricks: | `:bricks:` | [top](#table-of-contents) | | [top](#travel--places) | :rock: | `:rock:` | :wood: | `:wood:` | [top](#table-of-contents) | | [top](#travel--places) | :hut: | `:hut:` | :houses: | `:houses:` | [top](#table-of-contents) | | [top](#travel--places) | :derelict_house: | `:derelict_house:` | :house: | `:house:` | [top](#table-of-contents) | | [top](#travel--places) | :house_with_garden: | `:house_with_garden:` | :office: | `:office:` | [top](#table-of-contents) | | [top](#travel--places) | :post_office: | `:post_office:` | :european_post_office: | `:european_post_office:` | [top](#table-of-contents) | | [top](#travel--places) | :hospital: | `:hospital:` | :bank: | `:bank:` | [top](#table-of-contents) | | [top](#travel--places) | :hotel: | `:hotel:` | :love_hotel: | `:love_hotel:` | [top](#table-of-contents) | | [top](#travel--places) | :convenience_store: | `:convenience_store:` | :school: | `:school:` | [top](#table-of-contents) | | [top](#travel--places) | :department_store: | `:department_store:` | :factory: | `:factory:` | [top](#table-of-contents) | | [top](#travel--places) | :japanese_castle: | `:japanese_castle:` | :european_castle: | `:european_castle:` | [top](#table-of-contents) | | [top](#travel--places) | :wedding: | `:wedding:` | :tokyo_tower: | `:tokyo_tower:` | [top](#table-of-contents) | | [top](#travel--places) | :statue_of_liberty: | `:statue_of_liberty:` | | | [top](#table-of-contents) | ### Place Religious | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :church: | `:church:` | :mosque: | `:mosque:` | [top](#table-of-contents) | | [top](#travel--places) | :hindu_temple: | `:hindu_temple:` | :synagogue: | `:synagogue:` | [top](#table-of-contents) | | [top](#travel--places) | :shinto_shrine: | `:shinto_shrine:` | :kaaba: | `:kaaba:` | [top](#table-of-contents) | ### Place Other | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :fountain: | `:fountain:` | :tent: | `:tent:` | [top](#table-of-contents) | | [top](#travel--places) | :foggy: | `:foggy:` | :night_with_stars: | `:night_with_stars:` | [top](#table-of-contents) | | [top](#travel--places) | :cityscape: | `:cityscape:` | :sunrise_over_mountains: | `:sunrise_over_mountains:` | [top](#table-of-contents) | | [top](#travel--places) | :sunrise: | `:sunrise:` | :city_sunset: | `:city_sunset:` | [top](#table-of-contents) | | [top](#travel--places) | :city_sunrise: | `:city_sunrise:` | :bridge_at_night: | `:bridge_at_night:` | [top](#table-of-contents) | | [top](#travel--places) | :hotsprings: | `:hotsprings:` | :carousel_horse: | `:carousel_horse:` | [top](#table-of-contents) | | [top](#travel--places) | :playground_slide: | `:playground_slide:` | :ferris_wheel: | `:ferris_wheel:` | [top](#table-of-contents) | | [top](#travel--places) | :roller_coaster: | `:roller_coaster:` | :barber: | `:barber:` | [top](#table-of-contents) | | [top](#travel--places) | :circus_tent: | `:circus_tent:` | | | [top](#table-of-contents) | ### Transport Ground | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :steam_locomotive: | `:steam_locomotive:` | :railway_car: | `:railway_car:` | [top](#table-of-contents) | | [top](#travel--places) | :bullettrain_side: | `:bullettrain_side:` | :bullettrain_front: | `:bullettrain_front:` | [top](#table-of-contents) | | [top](#travel--places) | :train2: | `:train2:` | :metro: | `:metro:` | [top](#table-of-contents) | | [top](#travel--places) | :light_rail: | `:light_rail:` | :station: | `:station:` | [top](#table-of-contents) | | [top](#travel--places) | :tram: | `:tram:` | :monorail: | `:monorail:` | [top](#table-of-contents) | | [top](#travel--places) | :mountain_railway: | `:mountain_railway:` | :train: | `:train:` | [top](#table-of-contents) | | [top](#travel--places) | :bus: | `:bus:` | :oncoming_bus: | `:oncoming_bus:` | [top](#table-of-contents) | | [top](#travel--places) | :trolleybus: | `:trolleybus:` | :minibus: | `:minibus:` | [top](#table-of-contents) | | [top](#travel--places) | :ambulance: | `:ambulance:` | :fire_engine: | `:fire_engine:` | [top](#table-of-contents) | | [top](#travel--places) | :police_car: | `:police_car:` | :oncoming_police_car: | `:oncoming_police_car:` | [top](#table-of-contents) | | [top](#travel--places) | :taxi: | `:taxi:` | :oncoming_taxi: | `:oncoming_taxi:` | [top](#table-of-contents) | | [top](#travel--places) | :car: | `:car:` `:red_car:` | :oncoming_automobile: | `:oncoming_automobile:` | [top](#table-of-contents) | | [top](#travel--places) | :blue_car: | `:blue_car:` | :pickup_truck: | `:pickup_truck:` | [top](#table-of-contents) | | [top](#travel--places) | :truck: | `:truck:` | :articulated_lorry: | `:articulated_lorry:` | [top](#table-of-contents) | | [top](#travel--places) | :tractor: | `:tractor:` | :racing_car: | `:racing_car:` | [top](#table-of-contents) | | [top](#travel--places) | :motorcycle: | `:motorcycle:` | :motor_scooter: | `:motor_scooter:` | [top](#table-of-contents) | | [top](#travel--places) | :manual_wheelchair: | `:manual_wheelchair:` | :motorized_wheelchair: | `:motorized_wheelchair:` | [top](#table-of-contents) | | [top](#travel--places) | :auto_rickshaw: | `:auto_rickshaw:` | :bike: | `:bike:` | [top](#table-of-contents) | | [top](#travel--places) | :kick_scooter: | `:kick_scooter:` | :skateboard: | `:skateboard:` | [top](#table-of-contents) | | [top](#travel--places) | :roller_skate: | `:roller_skate:` | :busstop: | `:busstop:` | [top](#table-of-contents) | | [top](#travel--places) | :motorway: | `:motorway:` | :railway_track: | `:railway_track:` | [top](#table-of-contents) | | [top](#travel--places) | :oil_drum: | `:oil_drum:` | :fuelpump: | `:fuelpump:` | [top](#table-of-contents) | | [top](#travel--places) | :wheel: | `:wheel:` | :rotating_light: | `:rotating_light:` | [top](#table-of-contents) | | [top](#travel--places) | :traffic_light: | `:traffic_light:` | :vertical_traffic_light: | `:vertical_traffic_light:` | [top](#table-of-contents) | | [top](#travel--places) | :stop_sign: | `:stop_sign:` | :construction: | `:construction:` | [top](#table-of-contents) | ### Transport Water | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :anchor: | `:anchor:` | :ring_buoy: | `:ring_buoy:` | [top](#table-of-contents) | | [top](#travel--places) | :boat: | `:boat:` `:sailboat:` | :canoe: | `:canoe:` | [top](#table-of-contents) | | [top](#travel--places) | :speedboat: | `:speedboat:` | :passenger_ship: | `:passenger_ship:` | [top](#table-of-contents) | | [top](#travel--places) | :ferry: | `:ferry:` | :motor_boat: | `:motor_boat:` | [top](#table-of-contents) | | [top](#travel--places) | :ship: | `:ship:` | | | [top](#table-of-contents) | ### Transport Air | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :airplane: | `:airplane:` | :small_airplane: | `:small_airplane:` | [top](#table-of-contents) | | [top](#travel--places) | :flight_departure: | `:flight_departure:` | :flight_arrival: | `:flight_arrival:` | [top](#table-of-contents) | | [top](#travel--places) | :parachute: | `:parachute:` | :seat: | `:seat:` | [top](#table-of-contents) | | [top](#travel--places) | :helicopter: | `:helicopter:` | :suspension_railway: | `:suspension_railway:` | [top](#table-of-contents) | | [top](#travel--places) | :mountain_cableway: | `:mountain_cableway:` | :aerial_tramway: | `:aerial_tramway:` | [top](#table-of-contents) | | [top](#travel--places) | :artificial_satellite: | `:artificial_satellite:` | :rocket: | `:rocket:` | [top](#table-of-contents) | | [top](#travel--places) | :flying_saucer: | `:flying_saucer:` | | | [top](#table-of-contents) | ### Hotel | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :bellhop_bell: | `:bellhop_bell:` | :luggage: | `:luggage:` | [top](#table-of-contents) | ### Time | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :hourglass: | `:hourglass:` | :hourglass_flowing_sand: | `:hourglass_flowing_sand:` | [top](#table-of-contents) | | [top](#travel--places) | :watch: | `:watch:` | :alarm_clock: | `:alarm_clock:` | [top](#table-of-contents) | | [top](#travel--places) | :stopwatch: | `:stopwatch:` | :timer_clock: | `:timer_clock:` | [top](#table-of-contents) | | [top](#travel--places) | :mantelpiece_clock: | `:mantelpiece_clock:` | :clock12: | `:clock12:` | [top](#table-of-contents) | | [top](#travel--places) | :clock1230: | `:clock1230:` | :clock1: | `:clock1:` | [top](#table-of-contents) | | [top](#travel--places) | :clock130: | `:clock130:` | :clock2: | `:clock2:` | [top](#table-of-contents) | | [top](#travel--places) | :clock230: | `:clock230:` | :clock3: | `:clock3:` | [top](#table-of-contents) | | [top](#travel--places) | :clock330: | `:clock330:` | :clock4: | `:clock4:` | [top](#table-of-contents) | | [top](#travel--places) | :clock430: | `:clock430:` | :clock5: | `:clock5:` | [top](#table-of-contents) | | [top](#travel--places) | :clock530: | `:clock530:` | :clock6: | `:clock6:` | [top](#table-of-contents) | | [top](#travel--places) | :clock630: | `:clock630:` | :clock7: | `:clock7:` | [top](#table-of-contents) | | [top](#travel--places) | :clock730: | `:clock730:` | :clock8: | `:clock8:` | [top](#table-of-contents) | | [top](#travel--places) | :clock830: | `:clock830:` | :clock9: | `:clock9:` | [top](#table-of-contents) | | [top](#travel--places) | :clock930: | `:clock930:` | :clock10: | `:clock10:` | [top](#table-of-contents) | | [top](#travel--places) | :clock1030: | `:clock1030:` | :clock11: | `:clock11:` | [top](#table-of-contents) | | [top](#travel--places) | :clock1130: | `:clock1130:` | | | [top](#table-of-contents) | ### Sky & Weather | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#travel--places) | :new_moon: | `:new_moon:` | :waxing_crescent_moon: | `:waxing_crescent_moon:` | [top](#table-of-contents) | | [top](#travel--places) | :first_quarter_moon: | `:first_quarter_moon:` | :moon: | `:moon:` `:waxing_gibbous_moon:` | [top](#table-of-contents) | | [top](#travel--places) | :full_moon: | `:full_moon:` | :waning_gibbous_moon: | `:waning_gibbous_moon:` | [top](#table-of-contents) | | [top](#travel--places) | :last_quarter_moon: | `:last_quarter_moon:` | :waning_crescent_moon: | `:waning_crescent_moon:` | [top](#table-of-contents) | | [top](#travel--places) | :crescent_moon: | `:crescent_moon:` | :new_moon_with_face: | `:new_moon_with_face:` | [top](#table-of-contents) | | [top](#travel--places) | :first_quarter_moon_with_face: | `:first_quarter_moon_with_face:` | :last_quarter_moon_with_face: | `:last_quarter_moon_with_face:` | [top](#table-of-contents) | | [top](#travel--places) | :thermometer: | `:thermometer:` | :sunny: | `:sunny:` | [top](#table-of-contents) | | [top](#travel--places) | :full_moon_with_face: | `:full_moon_with_face:` | :sun_with_face: | `:sun_with_face:` | [top](#table-of-contents) | | [top](#travel--places) | :ringed_planet: | `:ringed_planet:` | :star: | `:star:` | [top](#table-of-contents) | | [top](#travel--places) | :star2: | `:star2:` | :stars: | `:stars:` | [top](#table-of-contents) | | [top](#travel--places) | :milky_way: | `:milky_way:` | :cloud: | `:cloud:` | [top](#table-of-contents) | | [top](#travel--places) | :partly_sunny: | `:partly_sunny:` | :cloud_with_lightning_and_rain: | `:cloud_with_lightning_and_rain:` | [top](#table-of-contents) | | [top](#travel--places) | :sun_behind_small_cloud: | `:sun_behind_small_cloud:` | :sun_behind_large_cloud: | `:sun_behind_large_cloud:` | [top](#table-of-contents) | | [top](#travel--places) | :sun_behind_rain_cloud: | `:sun_behind_rain_cloud:` | :cloud_with_rain: | `:cloud_with_rain:` | [top](#table-of-contents) | | [top](#travel--places) | :cloud_with_snow: | `:cloud_with_snow:` | :cloud_with_lightning: | `:cloud_with_lightning:` | [top](#table-of-contents) | | [top](#travel--places) | :tornado: | `:tornado:` | :fog: | `:fog:` | [top](#table-of-contents) | | [top](#travel--places) | :wind_face: | `:wind_face:` | :cyclone: | `:cyclone:` | [top](#table-of-contents) | | [top](#travel--places) | :rainbow: | `:rainbow:` | :closed_umbrella: | `:closed_umbrella:` | [top](#table-of-contents) | | [top](#travel--places) | :open_umbrella: | `:open_umbrella:` | :umbrella: | `:umbrella:` | [top](#table-of-contents) | | [top](#travel--places) | :parasol_on_ground: | `:parasol_on_ground:` | :zap: | `:zap:` | [top](#table-of-contents) | | [top](#travel--places) | :snowflake: | `:snowflake:` | :snowman_with_snow: | `:snowman_with_snow:` | [top](#table-of-contents) | | [top](#travel--places) | :snowman: | `:snowman:` | :comet: | `:comet:` | [top](#table-of-contents) | | [top](#travel--places) | :fire: | `:fire:` | :droplet: | `:droplet:` | [top](#table-of-contents) | | [top](#travel--places) | :ocean: | `:ocean:` | | | [top](#table-of-contents) | ## Activities - [Event](#event) - [Award Medal](#award-medal) - [Sport](#sport) - [Game](#game) - [Arts & Crafts](#arts--crafts) ### Event | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#activities) | :jack_o_lantern: | `:jack_o_lantern:` | :christmas_tree: | `:christmas_tree:` | [top](#table-of-contents) | | [top](#activities) | :fireworks: | `:fireworks:` | :sparkler: | `:sparkler:` | [top](#table-of-contents) | | [top](#activities) | :firecracker: | `:firecracker:` | :sparkles: | `:sparkles:` | [top](#table-of-contents) | | [top](#activities) | :balloon: | `:balloon:` | :tada: | `:tada:` | [top](#table-of-contents) | | [top](#activities) | :confetti_ball: | `:confetti_ball:` | :tanabata_tree: | `:tanabata_tree:` | [top](#table-of-contents) | | [top](#activities) | :bamboo: | `:bamboo:` | :dolls: | `:dolls:` | [top](#table-of-contents) | | [top](#activities) | :flags: | `:flags:` | :wind_chime: | `:wind_chime:` | [top](#table-of-contents) | | [top](#activities) | :rice_scene: | `:rice_scene:` | :red_envelope: | `:red_envelope:` | [top](#table-of-contents) | | [top](#activities) | :ribbon: | `:ribbon:` | :gift: | `:gift:` | [top](#table-of-contents) | | [top](#activities) | :reminder_ribbon: | `:reminder_ribbon:` | :tickets: | `:tickets:` | [top](#table-of-contents) | | [top](#activities) | :ticket: | `:ticket:` | | | [top](#table-of-contents) | ### Award Medal | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#activities) | :medal_military: | `:medal_military:` | :trophy: | `:trophy:` | [top](#table-of-contents) | | [top](#activities) | :medal_sports: | `:medal_sports:` | :1st_place_medal: | `:1st_place_medal:` | [top](#table-of-contents) | | [top](#activities) | :2nd_place_medal: | `:2nd_place_medal:` | :3rd_place_medal: | `:3rd_place_medal:` | [top](#table-of-contents) | ### Sport | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#activities) | :soccer: | `:soccer:` | :baseball: | `:baseball:` | [top](#table-of-contents) | | [top](#activities) | :softball: | `:softball:` | :basketball: | `:basketball:` | [top](#table-of-contents) | | [top](#activities) | :volleyball: | `:volleyball:` | :football: | `:football:` | [top](#table-of-contents) | | [top](#activities) | :rugby_football: | `:rugby_football:` | :tennis: | `:tennis:` | [top](#table-of-contents) | | [top](#activities) | :flying_disc: | `:flying_disc:` | :bowling: | `:bowling:` | [top](#table-of-contents) | | [top](#activities) | :cricket_game: | `:cricket_game:` | :field_hockey: | `:field_hockey:` | [top](#table-of-contents) | | [top](#activities) | :ice_hockey: | `:ice_hockey:` | :lacrosse: | `:lacrosse:` | [top](#table-of-contents) | | [top](#activities) | :ping_pong: | `:ping_pong:` | :badminton: | `:badminton:` | [top](#table-of-contents) | | [top](#activities) | :boxing_glove: | `:boxing_glove:` | :martial_arts_uniform: | `:martial_arts_uniform:` | [top](#table-of-contents) | | [top](#activities) | :goal_net: | `:goal_net:` | :golf: | `:golf:` | [top](#table-of-contents) | | [top](#activities) | :ice_skate: | `:ice_skate:` | :fishing_pole_and_fish: | `:fishing_pole_and_fish:` | [top](#table-of-contents) | | [top](#activities) | :diving_mask: | `:diving_mask:` | :running_shirt_with_sash: | `:running_shirt_with_sash:` | [top](#table-of-contents) | | [top](#activities) | :ski: | `:ski:` | :sled: | `:sled:` | [top](#table-of-contents) | | [top](#activities) | :curling_stone: | `:curling_stone:` | | | [top](#table-of-contents) | ### Game | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#activities) | :dart: | `:dart:` | :yo_yo: | `:yo_yo:` | [top](#table-of-contents) | | [top](#activities) | :kite: | `:kite:` | :gun: | `:gun:` | [top](#table-of-contents) | | [top](#activities) | :8ball: | `:8ball:` | :crystal_ball: | `:crystal_ball:` | [top](#table-of-contents) | | [top](#activities) | :magic_wand: | `:magic_wand:` | :video_game: | `:video_game:` | [top](#table-of-contents) | | [top](#activities) | :joystick: | `:joystick:` | :slot_machine: | `:slot_machine:` | [top](#table-of-contents) | | [top](#activities) | :game_die: | `:game_die:` | :jigsaw: | `:jigsaw:` | [top](#table-of-contents) | | [top](#activities) | :teddy_bear: | `:teddy_bear:` | :pinata: | `:pinata:` | [top](#table-of-contents) | | [top](#activities) | :mirror_ball: | `:mirror_ball:` | :nesting_dolls: | `:nesting_dolls:` | [top](#table-of-contents) | | [top](#activities) | :spades: | `:spades:` | :hearts: | `:hearts:` | [top](#table-of-contents) | | [top](#activities) | :diamonds: | `:diamonds:` | :clubs: | `:clubs:` | [top](#table-of-contents) | | [top](#activities) | :chess_pawn: | `:chess_pawn:` | :black_joker: | `:black_joker:` | [top](#table-of-contents) | | [top](#activities) | :mahjong: | `:mahjong:` | :flower_playing_cards: | `:flower_playing_cards:` | [top](#table-of-contents) | ### Arts & Crafts | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#activities) | :performing_arts: | `:performing_arts:` | :framed_picture: | `:framed_picture:` | [top](#table-of-contents) | | [top](#activities) | :art: | `:art:` | :thread: | `:thread:` | [top](#table-of-contents) | | [top](#activities) | :sewing_needle: | `:sewing_needle:` | :yarn: | `:yarn:` | [top](#table-of-contents) | | [top](#activities) | :knot: | `:knot:` | | | [top](#table-of-contents) | ## Objects - [Clothing](#clothing) - [Sound](#sound) - [Music](#music) - [Musical Instrument](#musical-instrument) - [Phone](#phone) - [Computer](#computer) - [Light & Video](#light--video) - [Book Paper](#book-paper) - [Money](#money) - [Mail](#mail) - [Writing](#writing) - [Office](#office) - [Lock](#lock) - [Tool](#tool) - [Science](#science) - [Medical](#medical) - [Household](#household) - [Other Object](#other-object) ### Clothing | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :eyeglasses: | `:eyeglasses:` | :dark_sunglasses: | `:dark_sunglasses:` | [top](#table-of-contents) | | [top](#objects) | :goggles: | `:goggles:` | :lab_coat: | `:lab_coat:` | [top](#table-of-contents) | | [top](#objects) | :safety_vest: | `:safety_vest:` | :necktie: | `:necktie:` | [top](#table-of-contents) | | [top](#objects) | :shirt: | `:shirt:` `:tshirt:` | :jeans: | `:jeans:` | [top](#table-of-contents) | | [top](#objects) | :scarf: | `:scarf:` | :gloves: | `:gloves:` | [top](#table-of-contents) | | [top](#objects) | :coat: | `:coat:` | :socks: | `:socks:` | [top](#table-of-contents) | | [top](#objects) | :dress: | `:dress:` | :kimono: | `:kimono:` | [top](#table-of-contents) | | [top](#objects) | :sari: | `:sari:` | :one_piece_swimsuit: | `:one_piece_swimsuit:` | [top](#table-of-contents) | | [top](#objects) | :swim_brief: | `:swim_brief:` | :shorts: | `:shorts:` | [top](#table-of-contents) | | [top](#objects) | :bikini: | `:bikini:` | :womans_clothes: | `:womans_clothes:` | [top](#table-of-contents) | | [top](#objects) | :folding_hand_fan: | `:folding_hand_fan:` | :purse: | `:purse:` | [top](#table-of-contents) | | [top](#objects) | :handbag: | `:handbag:` | :pouch: | `:pouch:` | [top](#table-of-contents) | | [top](#objects) | :shopping: | `:shopping:` | :school_satchel: | `:school_satchel:` | [top](#table-of-contents) | | [top](#objects) | :thong_sandal: | `:thong_sandal:` | :mans_shoe: | `:mans_shoe:` `:shoe:` | [top](#table-of-contents) | | [top](#objects) | :athletic_shoe: | `:athletic_shoe:` | :hiking_boot: | `:hiking_boot:` | [top](#table-of-contents) | | [top](#objects) | :flat_shoe: | `:flat_shoe:` | :high_heel: | `:high_heel:` | [top](#table-of-contents) | | [top](#objects) | :sandal: | `:sandal:` | :ballet_shoes: | `:ballet_shoes:` | [top](#table-of-contents) | | [top](#objects) | :boot: | `:boot:` | :hair_pick: | `:hair_pick:` | [top](#table-of-contents) | | [top](#objects) | :crown: | `:crown:` | :womans_hat: | `:womans_hat:` | [top](#table-of-contents) | | [top](#objects) | :tophat: | `:tophat:` | :mortar_board: | `:mortar_board:` | [top](#table-of-contents) | | [top](#objects) | :billed_cap: | `:billed_cap:` | :military_helmet: | `:military_helmet:` | [top](#table-of-contents) | | [top](#objects) | :rescue_worker_helmet: | `:rescue_worker_helmet:` | :prayer_beads: | `:prayer_beads:` | [top](#table-of-contents) | | [top](#objects) | :lipstick: | `:lipstick:` | :ring: | `:ring:` | [top](#table-of-contents) | | [top](#objects) | :gem: | `:gem:` | | | [top](#table-of-contents) | ### Sound | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :mute: | `:mute:` | :speaker: | `:speaker:` | [top](#table-of-contents) | | [top](#objects) | :sound: | `:sound:` | :loud_sound: | `:loud_sound:` | [top](#table-of-contents) | | [top](#objects) | :loudspeaker: | `:loudspeaker:` | :mega: | `:mega:` | [top](#table-of-contents) | | [top](#objects) | :postal_horn: | `:postal_horn:` | :bell: | `:bell:` | [top](#table-of-contents) | | [top](#objects) | :no_bell: | `:no_bell:` | | | [top](#table-of-contents) | ### Music | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :musical_score: | `:musical_score:` | :musical_note: | `:musical_note:` | [top](#table-of-contents) | | [top](#objects) | :notes: | `:notes:` | :studio_microphone: | `:studio_microphone:` | [top](#table-of-contents) | | [top](#objects) | :level_slider: | `:level_slider:` | :control_knobs: | `:control_knobs:` | [top](#table-of-contents) | | [top](#objects) | :microphone: | `:microphone:` | :headphones: | `:headphones:` | [top](#table-of-contents) | | [top](#objects) | :radio: | `:radio:` | | | [top](#table-of-contents) | ### Musical Instrument | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :saxophone: | `:saxophone:` | :accordion: | `:accordion:` | [top](#table-of-contents) | | [top](#objects) | :guitar: | `:guitar:` | :musical_keyboard: | `:musical_keyboard:` | [top](#table-of-contents) | | [top](#objects) | :trumpet: | `:trumpet:` | :violin: | `:violin:` | [top](#table-of-contents) | | [top](#objects) | :banjo: | `:banjo:` | :drum: | `:drum:` | [top](#table-of-contents) | | [top](#objects) | :long_drum: | `:long_drum:` | :maracas: | `:maracas:` | [top](#table-of-contents) | | [top](#objects) | :flute: | `:flute:` | | | [top](#table-of-contents) | ### Phone | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :iphone: | `:iphone:` | :calling: | `:calling:` | [top](#table-of-contents) | | [top](#objects) | :phone: | `:phone:` `:telephone:` | :telephone_receiver: | `:telephone_receiver:` | [top](#table-of-contents) | | [top](#objects) | :pager: | `:pager:` | :fax: | `:fax:` | [top](#table-of-contents) | ### Computer | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :battery: | `:battery:` | :low_battery: | `:low_battery:` | [top](#table-of-contents) | | [top](#objects) | :electric_plug: | `:electric_plug:` | :computer: | `:computer:` | [top](#table-of-contents) | | [top](#objects) | :desktop_computer: | `:desktop_computer:` | :printer: | `:printer:` | [top](#table-of-contents) | | [top](#objects) | :keyboard: | `:keyboard:` | :computer_mouse: | `:computer_mouse:` | [top](#table-of-contents) | | [top](#objects) | :trackball: | `:trackball:` | :minidisc: | `:minidisc:` | [top](#table-of-contents) | | [top](#objects) | :floppy_disk: | `:floppy_disk:` | :cd: | `:cd:` | [top](#table-of-contents) | | [top](#objects) | :dvd: | `:dvd:` | :abacus: | `:abacus:` | [top](#table-of-contents) | ### Light & Video | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :movie_camera: | `:movie_camera:` | :film_strip: | `:film_strip:` | [top](#table-of-contents) | | [top](#objects) | :film_projector: | `:film_projector:` | :clapper: | `:clapper:` | [top](#table-of-contents) | | [top](#objects) | :tv: | `:tv:` | :camera: | `:camera:` | [top](#table-of-contents) | | [top](#objects) | :camera_flash: | `:camera_flash:` | :video_camera: | `:video_camera:` | [top](#table-of-contents) | | [top](#objects) | :vhs: | `:vhs:` | :mag: | `:mag:` | [top](#table-of-contents) | | [top](#objects) | :mag_right: | `:mag_right:` | :candle: | `:candle:` | [top](#table-of-contents) | | [top](#objects) | :bulb: | `:bulb:` | :flashlight: | `:flashlight:` | [top](#table-of-contents) | | [top](#objects) | :izakaya_lantern: | `:izakaya_lantern:` `:lantern:` | :diya_lamp: | `:diya_lamp:` | [top](#table-of-contents) | ### Book Paper | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :notebook_with_decorative_cover: | `:notebook_with_decorative_cover:` | :closed_book: | `:closed_book:` | [top](#table-of-contents) | | [top](#objects) | :book: | `:book:` `:open_book:` | :green_book: | `:green_book:` | [top](#table-of-contents) | | [top](#objects) | :blue_book: | `:blue_book:` | :orange_book: | `:orange_book:` | [top](#table-of-contents) | | [top](#objects) | :books: | `:books:` | :notebook: | `:notebook:` | [top](#table-of-contents) | | [top](#objects) | :ledger: | `:ledger:` | :page_with_curl: | `:page_with_curl:` | [top](#table-of-contents) | | [top](#objects) | :scroll: | `:scroll:` | :page_facing_up: | `:page_facing_up:` | [top](#table-of-contents) | | [top](#objects) | :newspaper: | `:newspaper:` | :newspaper_roll: | `:newspaper_roll:` | [top](#table-of-contents) | | [top](#objects) | :bookmark_tabs: | `:bookmark_tabs:` | :bookmark: | `:bookmark:` | [top](#table-of-contents) | | [top](#objects) | :label: | `:label:` | | | [top](#table-of-contents) | ### Money | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :moneybag: | `:moneybag:` | :coin: | `:coin:` | [top](#table-of-contents) | | [top](#objects) | :yen: | `:yen:` | :dollar: | `:dollar:` | [top](#table-of-contents) | | [top](#objects) | :euro: | `:euro:` | :pound: | `:pound:` | [top](#table-of-contents) | | [top](#objects) | :money_with_wings: | `:money_with_wings:` | :credit_card: | `:credit_card:` | [top](#table-of-contents) | | [top](#objects) | :receipt: | `:receipt:` | :chart: | `:chart:` | [top](#table-of-contents) | ### Mail | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :envelope: | `:envelope:` | :e-mail: | `:e-mail:` `:email:` | [top](#table-of-contents) | | [top](#objects) | :incoming_envelope: | `:incoming_envelope:` | :envelope_with_arrow: | `:envelope_with_arrow:` | [top](#table-of-contents) | | [top](#objects) | :outbox_tray: | `:outbox_tray:` | :inbox_tray: | `:inbox_tray:` | [top](#table-of-contents) | | [top](#objects) | :package: | `:package:` | :mailbox: | `:mailbox:` | [top](#table-of-contents) | | [top](#objects) | :mailbox_closed: | `:mailbox_closed:` | :mailbox_with_mail: | `:mailbox_with_mail:` | [top](#table-of-contents) | | [top](#objects) | :mailbox_with_no_mail: | `:mailbox_with_no_mail:` | :postbox: | `:postbox:` | [top](#table-of-contents) | | [top](#objects) | :ballot_box: | `:ballot_box:` | | | [top](#table-of-contents) | ### Writing | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :pencil2: | `:pencil2:` | :black_nib: | `:black_nib:` | [top](#table-of-contents) | | [top](#objects) | :fountain_pen: | `:fountain_pen:` | :pen: | `:pen:` | [top](#table-of-contents) | | [top](#objects) | :paintbrush: | `:paintbrush:` | :crayon: | `:crayon:` | [top](#table-of-contents) | | [top](#objects) | :memo: | `:memo:` `:pencil:` | | | [top](#table-of-contents) | ### Office | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :briefcase: | `:briefcase:` | :file_folder: | `:file_folder:` | [top](#table-of-contents) | | [top](#objects) | :open_file_folder: | `:open_file_folder:` | :card_index_dividers: | `:card_index_dividers:` | [top](#table-of-contents) | | [top](#objects) | :date: | `:date:` | :calendar: | `:calendar:` | [top](#table-of-contents) | | [top](#objects) | :spiral_notepad: | `:spiral_notepad:` | :spiral_calendar: | `:spiral_calendar:` | [top](#table-of-contents) | | [top](#objects) | :card_index: | `:card_index:` | :chart_with_upwards_trend: | `:chart_with_upwards_trend:` | [top](#table-of-contents) | | [top](#objects) | :chart_with_downwards_trend: | `:chart_with_downwards_trend:` | :bar_chart: | `:bar_chart:` | [top](#table-of-contents) | | [top](#objects) | :clipboard: | `:clipboard:` | :pushpin: | `:pushpin:` | [top](#table-of-contents) | | [top](#objects) | :round_pushpin: | `:round_pushpin:` | :paperclip: | `:paperclip:` | [top](#table-of-contents) | | [top](#objects) | :paperclips: | `:paperclips:` | :straight_ruler: | `:straight_ruler:` | [top](#table-of-contents) | | [top](#objects) | :triangular_ruler: | `:triangular_ruler:` | :scissors: | `:scissors:` | [top](#table-of-contents) | | [top](#objects) | :card_file_box: | `:card_file_box:` | :file_cabinet: | `:file_cabinet:` | [top](#table-of-contents) | | [top](#objects) | :wastebasket: | `:wastebasket:` | | | [top](#table-of-contents) | ### Lock | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :lock: | `:lock:` | :unlock: | `:unlock:` | [top](#table-of-contents) | | [top](#objects) | :lock_with_ink_pen: | `:lock_with_ink_pen:` | :closed_lock_with_key: | `:closed_lock_with_key:` | [top](#table-of-contents) | | [top](#objects) | :key: | `:key:` | :old_key: | `:old_key:` | [top](#table-of-contents) | ### Tool | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :hammer: | `:hammer:` | :axe: | `:axe:` | [top](#table-of-contents) | | [top](#objects) | :pick: | `:pick:` | :hammer_and_pick: | `:hammer_and_pick:` | [top](#table-of-contents) | | [top](#objects) | :hammer_and_wrench: | `:hammer_and_wrench:` | :dagger: | `:dagger:` | [top](#table-of-contents) | | [top](#objects) | :crossed_swords: | `:crossed_swords:` | :bomb: | `:bomb:` | [top](#table-of-contents) | | [top](#objects) | :boomerang: | `:boomerang:` | :bow_and_arrow: | `:bow_and_arrow:` | [top](#table-of-contents) | | [top](#objects) | :shield: | `:shield:` | :carpentry_saw: | `:carpentry_saw:` | [top](#table-of-contents) | | [top](#objects) | :wrench: | `:wrench:` | :screwdriver: | `:screwdriver:` | [top](#table-of-contents) | | [top](#objects) | :nut_and_bolt: | `:nut_and_bolt:` | :gear: | `:gear:` | [top](#table-of-contents) | | [top](#objects) | :clamp: | `:clamp:` | :balance_scale: | `:balance_scale:` | [top](#table-of-contents) | | [top](#objects) | :probing_cane: | `:probing_cane:` | :link: | `:link:` | [top](#table-of-contents) | | [top](#objects) | :chains: | `:chains:` | :hook: | `:hook:` | [top](#table-of-contents) | | [top](#objects) | :toolbox: | `:toolbox:` | :magnet: | `:magnet:` | [top](#table-of-contents) | | [top](#objects) | :ladder: | `:ladder:` | | | [top](#table-of-contents) | ### Science | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :alembic: | `:alembic:` | :test_tube: | `:test_tube:` | [top](#table-of-contents) | | [top](#objects) | :petri_dish: | `:petri_dish:` | :dna: | `:dna:` | [top](#table-of-contents) | | [top](#objects) | :microscope: | `:microscope:` | :telescope: | `:telescope:` | [top](#table-of-contents) | | [top](#objects) | :satellite: | `:satellite:` | | | [top](#table-of-contents) | ### Medical | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :syringe: | `:syringe:` | :drop_of_blood: | `:drop_of_blood:` | [top](#table-of-contents) | | [top](#objects) | :pill: | `:pill:` | :adhesive_bandage: | `:adhesive_bandage:` | [top](#table-of-contents) | | [top](#objects) | :crutch: | `:crutch:` | :stethoscope: | `:stethoscope:` | [top](#table-of-contents) | | [top](#objects) | :x_ray: | `:x_ray:` | | | [top](#table-of-contents) | ### Household | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :door: | `:door:` | :elevator: | `:elevator:` | [top](#table-of-contents) | | [top](#objects) | :mirror: | `:mirror:` | :window: | `:window:` | [top](#table-of-contents) | | [top](#objects) | :bed: | `:bed:` | :couch_and_lamp: | `:couch_and_lamp:` | [top](#table-of-contents) | | [top](#objects) | :chair: | `:chair:` | :toilet: | `:toilet:` | [top](#table-of-contents) | | [top](#objects) | :plunger: | `:plunger:` | :shower: | `:shower:` | [top](#table-of-contents) | | [top](#objects) | :bathtub: | `:bathtub:` | :mouse_trap: | `:mouse_trap:` | [top](#table-of-contents) | | [top](#objects) | :razor: | `:razor:` | :lotion_bottle: | `:lotion_bottle:` | [top](#table-of-contents) | | [top](#objects) | :safety_pin: | `:safety_pin:` | :broom: | `:broom:` | [top](#table-of-contents) | | [top](#objects) | :basket: | `:basket:` | :roll_of_paper: | `:roll_of_paper:` | [top](#table-of-contents) | | [top](#objects) | :bucket: | `:bucket:` | :soap: | `:soap:` | [top](#table-of-contents) | | [top](#objects) | :bubbles: | `:bubbles:` | :toothbrush: | `:toothbrush:` | [top](#table-of-contents) | | [top](#objects) | :sponge: | `:sponge:` | :fire_extinguisher: | `:fire_extinguisher:` | [top](#table-of-contents) | | [top](#objects) | :shopping_cart: | `:shopping_cart:` | | | [top](#table-of-contents) | ### Other Object | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#objects) | :smoking: | `:smoking:` | :coffin: | `:coffin:` | [top](#table-of-contents) | | [top](#objects) | :headstone: | `:headstone:` | :funeral_urn: | `:funeral_urn:` | [top](#table-of-contents) | | [top](#objects) | :nazar_amulet: | `:nazar_amulet:` | :hamsa: | `:hamsa:` | [top](#table-of-contents) | | [top](#objects) | :moyai: | `:moyai:` | :placard: | `:placard:` | [top](#table-of-contents) | | [top](#objects) | :identification_card: | `:identification_card:` | | | [top](#table-of-contents) | ## Symbols - [Transport Sign](#transport-sign) - [Warning](#warning) - [Arrow](#arrow) - [Religion](#religion) - [Zodiac](#zodiac) - [Av Symbol](#av-symbol) - [Gender](#gender) - [Math](#math) - [Punctuation](#punctuation) - [Currency](#currency) - [Other Symbol](#other-symbol) - [Keycap](#keycap) - [Alphanum](#alphanum) - [Geometric](#geometric) ### Transport Sign | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :atm: | `:atm:` | :put_litter_in_its_place: | `:put_litter_in_its_place:` | [top](#table-of-contents) | | [top](#symbols) | :potable_water: | `:potable_water:` | :wheelchair: | `:wheelchair:` | [top](#table-of-contents) | | [top](#symbols) | :mens: | `:mens:` | :womens: | `:womens:` | [top](#table-of-contents) | | [top](#symbols) | :restroom: | `:restroom:` | :baby_symbol: | `:baby_symbol:` | [top](#table-of-contents) | | [top](#symbols) | :wc: | `:wc:` | :passport_control: | `:passport_control:` | [top](#table-of-contents) | | [top](#symbols) | :customs: | `:customs:` | :baggage_claim: | `:baggage_claim:` | [top](#table-of-contents) | | [top](#symbols) | :left_luggage: | `:left_luggage:` | | | [top](#table-of-contents) | ### Warning | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :warning: | `:warning:` | :children_crossing: | `:children_crossing:` | [top](#table-of-contents) | | [top](#symbols) | :no_entry: | `:no_entry:` | :no_entry_sign: | `:no_entry_sign:` | [top](#table-of-contents) | | [top](#symbols) | :no_bicycles: | `:no_bicycles:` | :no_smoking: | `:no_smoking:` | [top](#table-of-contents) | | [top](#symbols) | :do_not_litter: | `:do_not_litter:` | :non-potable_water: | `:non-potable_water:` | [top](#table-of-contents) | | [top](#symbols) | :no_pedestrians: | `:no_pedestrians:` | :no_mobile_phones: | `:no_mobile_phones:` | [top](#table-of-contents) | | [top](#symbols) | :underage: | `:underage:` | :radioactive: | `:radioactive:` | [top](#table-of-contents) | | [top](#symbols) | :biohazard: | `:biohazard:` | | | [top](#table-of-contents) | ### Arrow | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :arrow_up: | `:arrow_up:` | :arrow_upper_right: | `:arrow_upper_right:` | [top](#table-of-contents) | | [top](#symbols) | :arrow_right: | `:arrow_right:` | :arrow_lower_right: | `:arrow_lower_right:` | [top](#table-of-contents) | | [top](#symbols) | :arrow_down: | `:arrow_down:` | :arrow_lower_left: | `:arrow_lower_left:` | [top](#table-of-contents) | | [top](#symbols) | :arrow_left: | `:arrow_left:` | :arrow_upper_left: | `:arrow_upper_left:` | [top](#table-of-contents) | | [top](#symbols) | :arrow_up_down: | `:arrow_up_down:` | :left_right_arrow: | `:left_right_arrow:` | [top](#table-of-contents) | | [top](#symbols) | :leftwards_arrow_with_hook: | `:leftwards_arrow_with_hook:` | :arrow_right_hook: | `:arrow_right_hook:` | [top](#table-of-contents) | | [top](#symbols) | :arrow_heading_up: | `:arrow_heading_up:` | :arrow_heading_down: | `:arrow_heading_down:` | [top](#table-of-contents) | | [top](#symbols) | :arrows_clockwise: | `:arrows_clockwise:` | :arrows_counterclockwise: | `:arrows_counterclockwise:` | [top](#table-of-contents) | | [top](#symbols) | :back: | `:back:` | :end: | `:end:` | [top](#table-of-contents) | | [top](#symbols) | :on: | `:on:` | :soon: | `:soon:` | [top](#table-of-contents) | | [top](#symbols) | :top: | `:top:` | | | [top](#table-of-contents) | ### Religion | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :place_of_worship: | `:place_of_worship:` | :atom_symbol: | `:atom_symbol:` | [top](#table-of-contents) | | [top](#symbols) | :om: | `:om:` | :star_of_david: | `:star_of_david:` | [top](#table-of-contents) | | [top](#symbols) | :wheel_of_dharma: | `:wheel_of_dharma:` | :yin_yang: | `:yin_yang:` | [top](#table-of-contents) | | [top](#symbols) | :latin_cross: | `:latin_cross:` | :orthodox_cross: | `:orthodox_cross:` | [top](#table-of-contents) | | [top](#symbols) | :star_and_crescent: | `:star_and_crescent:` | :peace_symbol: | `:peace_symbol:` | [top](#table-of-contents) | | [top](#symbols) | :menorah: | `:menorah:` | :six_pointed_star: | `:six_pointed_star:` | [top](#table-of-contents) | | [top](#symbols) | :khanda: | `:khanda:` | | | [top](#table-of-contents) | ### Zodiac | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :aries: | `:aries:` | :taurus: | `:taurus:` | [top](#table-of-contents) | | [top](#symbols) | :gemini: | `:gemini:` | :cancer: | `:cancer:` | [top](#table-of-contents) | | [top](#symbols) | :leo: | `:leo:` | :virgo: | `:virgo:` | [top](#table-of-contents) | | [top](#symbols) | :libra: | `:libra:` | :scorpius: | `:scorpius:` | [top](#table-of-contents) | | [top](#symbols) | :sagittarius: | `:sagittarius:` | :capricorn: | `:capricorn:` | [top](#table-of-contents) | | [top](#symbols) | :aquarius: | `:aquarius:` | :pisces: | `:pisces:` | [top](#table-of-contents) | | [top](#symbols) | :ophiuchus: | `:ophiuchus:` | | | [top](#table-of-contents) | ### Av Symbol | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :twisted_rightwards_arrows: | `:twisted_rightwards_arrows:` | :repeat: | `:repeat:` | [top](#table-of-contents) | | [top](#symbols) | :repeat_one: | `:repeat_one:` | :arrow_forward: | `:arrow_forward:` | [top](#table-of-contents) | | [top](#symbols) | :fast_forward: | `:fast_forward:` | :next_track_button: | `:next_track_button:` | [top](#table-of-contents) | | [top](#symbols) | :play_or_pause_button: | `:play_or_pause_button:` | :arrow_backward: | `:arrow_backward:` | [top](#table-of-contents) | | [top](#symbols) | :rewind: | `:rewind:` | :previous_track_button: | `:previous_track_button:` | [top](#table-of-contents) | | [top](#symbols) | :arrow_up_small: | `:arrow_up_small:` | :arrow_double_up: | `:arrow_double_up:` | [top](#table-of-contents) | | [top](#symbols) | :arrow_down_small: | `:arrow_down_small:` | :arrow_double_down: | `:arrow_double_down:` | [top](#table-of-contents) | | [top](#symbols) | :pause_button: | `:pause_button:` | :stop_button: | `:stop_button:` | [top](#table-of-contents) | | [top](#symbols) | :record_button: | `:record_button:` | :eject_button: | `:eject_button:` | [top](#table-of-contents) | | [top](#symbols) | :cinema: | `:cinema:` | :low_brightness: | `:low_brightness:` | [top](#table-of-contents) | | [top](#symbols) | :high_brightness: | `:high_brightness:` | :signal_strength: | `:signal_strength:` | [top](#table-of-contents) | | [top](#symbols) | :wireless: | `:wireless:` | :vibration_mode: | `:vibration_mode:` | [top](#table-of-contents) | | [top](#symbols) | :mobile_phone_off: | `:mobile_phone_off:` | | | [top](#table-of-contents) | ### Gender | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :female_sign: | `:female_sign:` | :male_sign: | `:male_sign:` | [top](#table-of-contents) | | [top](#symbols) | :transgender_symbol: | `:transgender_symbol:` | | | [top](#table-of-contents) | ### Math | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :heavy_multiplication_x: | `:heavy_multiplication_x:` | :heavy_plus_sign: | `:heavy_plus_sign:` | [top](#table-of-contents) | | [top](#symbols) | :heavy_minus_sign: | `:heavy_minus_sign:` | :heavy_division_sign: | `:heavy_division_sign:` | [top](#table-of-contents) | | [top](#symbols) | :heavy_equals_sign: | `:heavy_equals_sign:` | :infinity: | `:infinity:` | [top](#table-of-contents) | ### Punctuation | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :bangbang: | `:bangbang:` | :interrobang: | `:interrobang:` | [top](#table-of-contents) | | [top](#symbols) | :question: | `:question:` | :grey_question: | `:grey_question:` | [top](#table-of-contents) | | [top](#symbols) | :grey_exclamation: | `:grey_exclamation:` | :exclamation: | `:exclamation:` `:heavy_exclamation_mark:` | [top](#table-of-contents) | | [top](#symbols) | :wavy_dash: | `:wavy_dash:` | | | [top](#table-of-contents) | ### Currency | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :currency_exchange: | `:currency_exchange:` | :heavy_dollar_sign: | `:heavy_dollar_sign:` | [top](#table-of-contents) | ### Other Symbol | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :medical_symbol: | `:medical_symbol:` | :recycle: | `:recycle:` | [top](#table-of-contents) | | [top](#symbols) | :fleur_de_lis: | `:fleur_de_lis:` | :trident: | `:trident:` | [top](#table-of-contents) | | [top](#symbols) | :name_badge: | `:name_badge:` | :beginner: | `:beginner:` | [top](#table-of-contents) | | [top](#symbols) | :o: | `:o:` | :white_check_mark: | `:white_check_mark:` | [top](#table-of-contents) | | [top](#symbols) | :ballot_box_with_check: | `:ballot_box_with_check:` | :heavy_check_mark: | `:heavy_check_mark:` | [top](#table-of-contents) | | [top](#symbols) | :x: | `:x:` | :negative_squared_cross_mark: | `:negative_squared_cross_mark:` | [top](#table-of-contents) | | [top](#symbols) | :curly_loop: | `:curly_loop:` | :loop: | `:loop:` | [top](#table-of-contents) | | [top](#symbols) | :part_alternation_mark: | `:part_alternation_mark:` | :eight_spoked_asterisk: | `:eight_spoked_asterisk:` | [top](#table-of-contents) | | [top](#symbols) | :eight_pointed_black_star: | `:eight_pointed_black_star:` | :sparkle: | `:sparkle:` | [top](#table-of-contents) | | [top](#symbols) | :copyright: | `:copyright:` | :registered: | `:registered:` | [top](#table-of-contents) | | [top](#symbols) | :tm: | `:tm:` | | | [top](#table-of-contents) | ### Keycap | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :hash: | `:hash:` | :asterisk: | `:asterisk:` | [top](#table-of-contents) | | [top](#symbols) | :zero: | `:zero:` | :one: | `:one:` | [top](#table-of-contents) | | [top](#symbols) | :two: | `:two:` | :three: | `:three:` | [top](#table-of-contents) | | [top](#symbols) | :four: | `:four:` | :five: | `:five:` | [top](#table-of-contents) | | [top](#symbols) | :six: | `:six:` | :seven: | `:seven:` | [top](#table-of-contents) | | [top](#symbols) | :eight: | `:eight:` | :nine: | `:nine:` | [top](#table-of-contents) | | [top](#symbols) | :keycap_ten: | `:keycap_ten:` | | | [top](#table-of-contents) | ### Alphanum | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :capital_abcd: | `:capital_abcd:` | :abcd: | `:abcd:` | [top](#table-of-contents) | | [top](#symbols) | :1234: | `:1234:` | :symbols: | `:symbols:` | [top](#table-of-contents) | | [top](#symbols) | :abc: | `:abc:` | :a: | `:a:` | [top](#table-of-contents) | | [top](#symbols) | :ab: | `:ab:` | :b: | `:b:` | [top](#table-of-contents) | | [top](#symbols) | :cl: | `:cl:` | :cool: | `:cool:` | [top](#table-of-contents) | | [top](#symbols) | :free: | `:free:` | :information_source: | `:information_source:` | [top](#table-of-contents) | | [top](#symbols) | :id: | `:id:` | :m: | `:m:` | [top](#table-of-contents) | | [top](#symbols) | :new: | `:new:` | :ng: | `:ng:` | [top](#table-of-contents) | | [top](#symbols) | :o2: | `:o2:` | :ok: | `:ok:` | [top](#table-of-contents) | | [top](#symbols) | :parking: | `:parking:` | :sos: | `:sos:` | [top](#table-of-contents) | | [top](#symbols) | :up: | `:up:` | :vs: | `:vs:` | [top](#table-of-contents) | | [top](#symbols) | :koko: | `:koko:` | :sa: | `:sa:` | [top](#table-of-contents) | | [top](#symbols) | :u6708: | `:u6708:` | :u6709: | `:u6709:` | [top](#table-of-contents) | | [top](#symbols) | :u6307: | `:u6307:` | :ideograph_advantage: | `:ideograph_advantage:` | [top](#table-of-contents) | | [top](#symbols) | :u5272: | `:u5272:` | :u7121: | `:u7121:` | [top](#table-of-contents) | | [top](#symbols) | :u7981: | `:u7981:` | :accept: | `:accept:` | [top](#table-of-contents) | | [top](#symbols) | :u7533: | `:u7533:` | :u5408: | `:u5408:` | [top](#table-of-contents) | | [top](#symbols) | :u7a7a: | `:u7a7a:` | :congratulations: | `:congratulations:` | [top](#table-of-contents) | | [top](#symbols) | :secret: | `:secret:` | :u55b6: | `:u55b6:` | [top](#table-of-contents) | | [top](#symbols) | :u6e80: | `:u6e80:` | | | [top](#table-of-contents) | ### Geometric | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#symbols) | :red_circle: | `:red_circle:` | :orange_circle: | `:orange_circle:` | [top](#table-of-contents) | | [top](#symbols) | :yellow_circle: | `:yellow_circle:` | :green_circle: | `:green_circle:` | [top](#table-of-contents) | | [top](#symbols) | :large_blue_circle: | `:large_blue_circle:` | :purple_circle: | `:purple_circle:` | [top](#table-of-contents) | | [top](#symbols) | :brown_circle: | `:brown_circle:` | :black_circle: | `:black_circle:` | [top](#table-of-contents) | | [top](#symbols) | :white_circle: | `:white_circle:` | :red_square: | `:red_square:` | [top](#table-of-contents) | | [top](#symbols) | :orange_square: | `:orange_square:` | :yellow_square: | `:yellow_square:` | [top](#table-of-contents) | | [top](#symbols) | :green_square: | `:green_square:` | :blue_square: | `:blue_square:` | [top](#table-of-contents) | | [top](#symbols) | :purple_square: | `:purple_square:` | :brown_square: | `:brown_square:` | [top](#table-of-contents) | | [top](#symbols) | :black_large_square: | `:black_large_square:` | :white_large_square: | `:white_large_square:` | [top](#table-of-contents) | | [top](#symbols) | :black_medium_square: | `:black_medium_square:` | :white_medium_square: | `:white_medium_square:` | [top](#table-of-contents) | | [top](#symbols) | :black_medium_small_square: | `:black_medium_small_square:` | :white_medium_small_square: | `:white_medium_small_square:` | [top](#table-of-contents) | | [top](#symbols) | :black_small_square: | `:black_small_square:` | :white_small_square: | `:white_small_square:` | [top](#table-of-contents) | | [top](#symbols) | :large_orange_diamond: | `:large_orange_diamond:` | :large_blue_diamond: | `:large_blue_diamond:` | [top](#table-of-contents) | | [top](#symbols) | :small_orange_diamond: | `:small_orange_diamond:` | :small_blue_diamond: | `:small_blue_diamond:` | [top](#table-of-contents) | | [top](#symbols) | :small_red_triangle: | `:small_red_triangle:` | :small_red_triangle_down: | `:small_red_triangle_down:` | [top](#table-of-contents) | | [top](#symbols) | :diamond_shape_with_a_dot_inside: | `:diamond_shape_with_a_dot_inside:` | :radio_button: | `:radio_button:` | [top](#table-of-contents) | | [top](#symbols) | :white_square_button: | `:white_square_button:` | :black_square_button: | `:black_square_button:` | [top](#table-of-contents) | ## Flags - [Flag](#flag) - [Country Flag](#country-flag) - [Subdivision Flag](#subdivision-flag) ### Flag | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#flags) | :checkered_flag: | `:checkered_flag:` | :triangular_flag_on_post: | `:triangular_flag_on_post:` | [top](#table-of-contents) | | [top](#flags) | :crossed_flags: | `:crossed_flags:` | :black_flag: | `:black_flag:` | [top](#table-of-contents) | | [top](#flags) | :white_flag: | `:white_flag:` | :rainbow_flag: | `:rainbow_flag:` | [top](#table-of-contents) | | [top](#flags) | :transgender_flag: | `:transgender_flag:` | :pirate_flag: | `:pirate_flag:` | [top](#table-of-contents) | ### Country Flag | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#flags) | :ascension_island: | `:ascension_island:` | :andorra: | `:andorra:` | [top](#table-of-contents) | | [top](#flags) | :united_arab_emirates: | `:united_arab_emirates:` | :afghanistan: | `:afghanistan:` | [top](#table-of-contents) | | [top](#flags) | :antigua_barbuda: | `:antigua_barbuda:` | :anguilla: | `:anguilla:` | [top](#table-of-contents) | | [top](#flags) | :albania: | `:albania:` | :armenia: | `:armenia:` | [top](#table-of-contents) | | [top](#flags) | :angola: | `:angola:` | :antarctica: | `:antarctica:` | [top](#table-of-contents) | | [top](#flags) | :argentina: | `:argentina:` | :american_samoa: | `:american_samoa:` | [top](#table-of-contents) | | [top](#flags) | :austria: | `:austria:` | :australia: | `:australia:` | [top](#table-of-contents) | | [top](#flags) | :aruba: | `:aruba:` | :aland_islands: | `:aland_islands:` | [top](#table-of-contents) | | [top](#flags) | :azerbaijan: | `:azerbaijan:` | :bosnia_herzegovina: | `:bosnia_herzegovina:` | [top](#table-of-contents) | | [top](#flags) | :barbados: | `:barbados:` | :bangladesh: | `:bangladesh:` | [top](#table-of-contents) | | [top](#flags) | :belgium: | `:belgium:` | :burkina_faso: | `:burkina_faso:` | [top](#table-of-contents) | | [top](#flags) | :bulgaria: | `:bulgaria:` | :bahrain: | `:bahrain:` | [top](#table-of-contents) | | [top](#flags) | :burundi: | `:burundi:` | :benin: | `:benin:` | [top](#table-of-contents) | | [top](#flags) | :st_barthelemy: | `:st_barthelemy:` | :bermuda: | `:bermuda:` | [top](#table-of-contents) | | [top](#flags) | :brunei: | `:brunei:` | :bolivia: | `:bolivia:` | [top](#table-of-contents) | | [top](#flags) | :caribbean_netherlands: | `:caribbean_netherlands:` | :brazil: | `:brazil:` | [top](#table-of-contents) | | [top](#flags) | :bahamas: | `:bahamas:` | :bhutan: | `:bhutan:` | [top](#table-of-contents) | | [top](#flags) | :bouvet_island: | `:bouvet_island:` | :botswana: | `:botswana:` | [top](#table-of-contents) | | [top](#flags) | :belarus: | `:belarus:` | :belize: | `:belize:` | [top](#table-of-contents) | | [top](#flags) | :canada: | `:canada:` | :cocos_islands: | `:cocos_islands:` | [top](#table-of-contents) | | [top](#flags) | :congo_kinshasa: | `:congo_kinshasa:` | :central_african_republic: | `:central_african_republic:` | [top](#table-of-contents) | | [top](#flags) | :congo_brazzaville: | `:congo_brazzaville:` | :switzerland: | `:switzerland:` | [top](#table-of-contents) | | [top](#flags) | :cote_divoire: | `:cote_divoire:` | :cook_islands: | `:cook_islands:` | [top](#table-of-contents) | | [top](#flags) | :chile: | `:chile:` | :cameroon: | `:cameroon:` | [top](#table-of-contents) | | [top](#flags) | :cn: | `:cn:` | :colombia: | `:colombia:` | [top](#table-of-contents) | | [top](#flags) | :clipperton_island: | `:clipperton_island:` | :costa_rica: | `:costa_rica:` | [top](#table-of-contents) | | [top](#flags) | :cuba: | `:cuba:` | :cape_verde: | `:cape_verde:` | [top](#table-of-contents) | | [top](#flags) | :curacao: | `:curacao:` | :christmas_island: | `:christmas_island:` | [top](#table-of-contents) | | [top](#flags) | :cyprus: | `:cyprus:` | :czech_republic: | `:czech_republic:` | [top](#table-of-contents) | | [top](#flags) | :de: | `:de:` | :diego_garcia: | `:diego_garcia:` | [top](#table-of-contents) | | [top](#flags) | :djibouti: | `:djibouti:` | :denmark: | `:denmark:` | [top](#table-of-contents) | | [top](#flags) | :dominica: | `:dominica:` | :dominican_republic: | `:dominican_republic:` | [top](#table-of-contents) | | [top](#flags) | :algeria: | `:algeria:` | :ceuta_melilla: | `:ceuta_melilla:` | [top](#table-of-contents) | | [top](#flags) | :ecuador: | `:ecuador:` | :estonia: | `:estonia:` | [top](#table-of-contents) | | [top](#flags) | :egypt: | `:egypt:` | :western_sahara: | `:western_sahara:` | [top](#table-of-contents) | | [top](#flags) | :eritrea: | `:eritrea:` | :es: | `:es:` | [top](#table-of-contents) | | [top](#flags) | :ethiopia: | `:ethiopia:` | :eu: | `:eu:` `:european_union:` | [top](#table-of-contents) | | [top](#flags) | :finland: | `:finland:` | :fiji: | `:fiji:` | [top](#table-of-contents) | | [top](#flags) | :falkland_islands: | `:falkland_islands:` | :micronesia: | `:micronesia:` | [top](#table-of-contents) | | [top](#flags) | :faroe_islands: | `:faroe_islands:` | :fr: | `:fr:` | [top](#table-of-contents) | | [top](#flags) | :gabon: | `:gabon:` | :gb: | `:gb:` `:uk:` | [top](#table-of-contents) | | [top](#flags) | :grenada: | `:grenada:` | :georgia: | `:georgia:` | [top](#table-of-contents) | | [top](#flags) | :french_guiana: | `:french_guiana:` | :guernsey: | `:guernsey:` | [top](#table-of-contents) | | [top](#flags) | :ghana: | `:ghana:` | :gibraltar: | `:gibraltar:` | [top](#table-of-contents) | | [top](#flags) | :greenland: | `:greenland:` | :gambia: | `:gambia:` | [top](#table-of-contents) | | [top](#flags) | :guinea: | `:guinea:` | :guadeloupe: | `:guadeloupe:` | [top](#table-of-contents) | | [top](#flags) | :equatorial_guinea: | `:equatorial_guinea:` | :greece: | `:greece:` | [top](#table-of-contents) | | [top](#flags) | :south_georgia_south_sandwich_islands: | `:south_georgia_south_sandwich_islands:` | :guatemala: | `:guatemala:` | [top](#table-of-contents) | | [top](#flags) | :guam: | `:guam:` | :guinea_bissau: | `:guinea_bissau:` | [top](#table-of-contents) | | [top](#flags) | :guyana: | `:guyana:` | :hong_kong: | `:hong_kong:` | [top](#table-of-contents) | | [top](#flags) | :heard_mcdonald_islands: | `:heard_mcdonald_islands:` | :honduras: | `:honduras:` | [top](#table-of-contents) | | [top](#flags) | :croatia: | `:croatia:` | :haiti: | `:haiti:` | [top](#table-of-contents) | | [top](#flags) | :hungary: | `:hungary:` | :canary_islands: | `:canary_islands:` | [top](#table-of-contents) | | [top](#flags) | :indonesia: | `:indonesia:` | :ireland: | `:ireland:` | [top](#table-of-contents) | | [top](#flags) | :israel: | `:israel:` | :isle_of_man: | `:isle_of_man:` | [top](#table-of-contents) | | [top](#flags) | :india: | `:india:` | :british_indian_ocean_territory: | `:british_indian_ocean_territory:` | [top](#table-of-contents) | | [top](#flags) | :iraq: | `:iraq:` | :iran: | `:iran:` | [top](#table-of-contents) | | [top](#flags) | :iceland: | `:iceland:` | :it: | `:it:` | [top](#table-of-contents) | | [top](#flags) | :jersey: | `:jersey:` | :jamaica: | `:jamaica:` | [top](#table-of-contents) | | [top](#flags) | :jordan: | `:jordan:` | :jp: | `:jp:` | [top](#table-of-contents) | | [top](#flags) | :kenya: | `:kenya:` | :kyrgyzstan: | `:kyrgyzstan:` | [top](#table-of-contents) | | [top](#flags) | :cambodia: | `:cambodia:` | :kiribati: | `:kiribati:` | [top](#table-of-contents) | | [top](#flags) | :comoros: | `:comoros:` | :st_kitts_nevis: | `:st_kitts_nevis:` | [top](#table-of-contents) | | [top](#flags) | :north_korea: | `:north_korea:` | :kr: | `:kr:` | [top](#table-of-contents) | | [top](#flags) | :kuwait: | `:kuwait:` | :cayman_islands: | `:cayman_islands:` | [top](#table-of-contents) | | [top](#flags) | :kazakhstan: | `:kazakhstan:` | :laos: | `:laos:` | [top](#table-of-contents) | | [top](#flags) | :lebanon: | `:lebanon:` | :st_lucia: | `:st_lucia:` | [top](#table-of-contents) | | [top](#flags) | :liechtenstein: | `:liechtenstein:` | :sri_lanka: | `:sri_lanka:` | [top](#table-of-contents) | | [top](#flags) | :liberia: | `:liberia:` | :lesotho: | `:lesotho:` | [top](#table-of-contents) | | [top](#flags) | :lithuania: | `:lithuania:` | :luxembourg: | `:luxembourg:` | [top](#table-of-contents) | | [top](#flags) | :latvia: | `:latvia:` | :libya: | `:libya:` | [top](#table-of-contents) | | [top](#flags) | :morocco: | `:morocco:` | :monaco: | `:monaco:` | [top](#table-of-contents) | | [top](#flags) | :moldova: | `:moldova:` | :montenegro: | `:montenegro:` | [top](#table-of-contents) | | [top](#flags) | :st_martin: | `:st_martin:` | :madagascar: | `:madagascar:` | [top](#table-of-contents) | | [top](#flags) | :marshall_islands: | `:marshall_islands:` | :macedonia: | `:macedonia:` | [top](#table-of-contents) | | [top](#flags) | :mali: | `:mali:` | :myanmar: | `:myanmar:` | [top](#table-of-contents) | | [top](#flags) | :mongolia: | `:mongolia:` | :macau: | `:macau:` | [top](#table-of-contents) | | [top](#flags) | :northern_mariana_islands: | `:northern_mariana_islands:` | :martinique: | `:martinique:` | [top](#table-of-contents) | | [top](#flags) | :mauritania: | `:mauritania:` | :montserrat: | `:montserrat:` | [top](#table-of-contents) | | [top](#flags) | :malta: | `:malta:` | :mauritius: | `:mauritius:` | [top](#table-of-contents) | | [top](#flags) | :maldives: | `:maldives:` | :malawi: | `:malawi:` | [top](#table-of-contents) | | [top](#flags) | :mexico: | `:mexico:` | :malaysia: | `:malaysia:` | [top](#table-of-contents) | | [top](#flags) | :mozambique: | `:mozambique:` | :namibia: | `:namibia:` | [top](#table-of-contents) | | [top](#flags) | :new_caledonia: | `:new_caledonia:` | :niger: | `:niger:` | [top](#table-of-contents) | | [top](#flags) | :norfolk_island: | `:norfolk_island:` | :nigeria: | `:nigeria:` | [top](#table-of-contents) | | [top](#flags) | :nicaragua: | `:nicaragua:` | :netherlands: | `:netherlands:` | [top](#table-of-contents) | | [top](#flags) | :norway: | `:norway:` | :nepal: | `:nepal:` | [top](#table-of-contents) | | [top](#flags) | :nauru: | `:nauru:` | :niue: | `:niue:` | [top](#table-of-contents) | | [top](#flags) | :new_zealand: | `:new_zealand:` | :oman: | `:oman:` | [top](#table-of-contents) | | [top](#flags) | :panama: | `:panama:` | :peru: | `:peru:` | [top](#table-of-contents) | | [top](#flags) | :french_polynesia: | `:french_polynesia:` | :papua_new_guinea: | `:papua_new_guinea:` | [top](#table-of-contents) | | [top](#flags) | :philippines: | `:philippines:` | :pakistan: | `:pakistan:` | [top](#table-of-contents) | | [top](#flags) | :poland: | `:poland:` | :st_pierre_miquelon: | `:st_pierre_miquelon:` | [top](#table-of-contents) | | [top](#flags) | :pitcairn_islands: | `:pitcairn_islands:` | :puerto_rico: | `:puerto_rico:` | [top](#table-of-contents) | | [top](#flags) | :palestinian_territories: | `:palestinian_territories:` | :portugal: | `:portugal:` | [top](#table-of-contents) | | [top](#flags) | :palau: | `:palau:` | :paraguay: | `:paraguay:` | [top](#table-of-contents) | | [top](#flags) | :qatar: | `:qatar:` | :reunion: | `:reunion:` | [top](#table-of-contents) | | [top](#flags) | :romania: | `:romania:` | :serbia: | `:serbia:` | [top](#table-of-contents) | | [top](#flags) | :ru: | `:ru:` | :rwanda: | `:rwanda:` | [top](#table-of-contents) | | [top](#flags) | :saudi_arabia: | `:saudi_arabia:` | :solomon_islands: | `:solomon_islands:` | [top](#table-of-contents) | | [top](#flags) | :seychelles: | `:seychelles:` | :sudan: | `:sudan:` | [top](#table-of-contents) | | [top](#flags) | :sweden: | `:sweden:` | :singapore: | `:singapore:` | [top](#table-of-contents) | | [top](#flags) | :st_helena: | `:st_helena:` | :slovenia: | `:slovenia:` | [top](#table-of-contents) | | [top](#flags) | :svalbard_jan_mayen: | `:svalbard_jan_mayen:` | :slovakia: | `:slovakia:` | [top](#table-of-contents) | | [top](#flags) | :sierra_leone: | `:sierra_leone:` | :san_marino: | `:san_marino:` | [top](#table-of-contents) | | [top](#flags) | :senegal: | `:senegal:` | :somalia: | `:somalia:` | [top](#table-of-contents) | | [top](#flags) | :suriname: | `:suriname:` | :south_sudan: | `:south_sudan:` | [top](#table-of-contents) | | [top](#flags) | :sao_tome_principe: | `:sao_tome_principe:` | :el_salvador: | `:el_salvador:` | [top](#table-of-contents) | | [top](#flags) | :sint_maarten: | `:sint_maarten:` | :syria: | `:syria:` | [top](#table-of-contents) | | [top](#flags) | :swaziland: | `:swaziland:` | :tristan_da_cunha: | `:tristan_da_cunha:` | [top](#table-of-contents) | | [top](#flags) | :turks_caicos_islands: | `:turks_caicos_islands:` | :chad: | `:chad:` | [top](#table-of-contents) | | [top](#flags) | :french_southern_territories: | `:french_southern_territories:` | :togo: | `:togo:` | [top](#table-of-contents) | | [top](#flags) | :thailand: | `:thailand:` | :tajikistan: | `:tajikistan:` | [top](#table-of-contents) | | [top](#flags) | :tokelau: | `:tokelau:` | :timor_leste: | `:timor_leste:` | [top](#table-of-contents) | | [top](#flags) | :turkmenistan: | `:turkmenistan:` | :tunisia: | `:tunisia:` | [top](#table-of-contents) | | [top](#flags) | :tonga: | `:tonga:` | :tr: | `:tr:` | [top](#table-of-contents) | | [top](#flags) | :trinidad_tobago: | `:trinidad_tobago:` | :tuvalu: | `:tuvalu:` | [top](#table-of-contents) | | [top](#flags) | :taiwan: | `:taiwan:` | :tanzania: | `:tanzania:` | [top](#table-of-contents) | | [top](#flags) | :ukraine: | `:ukraine:` | :uganda: | `:uganda:` | [top](#table-of-contents) | | [top](#flags) | :us_outlying_islands: | `:us_outlying_islands:` | :united_nations: | `:united_nations:` | [top](#table-of-contents) | | [top](#flags) | :us: | `:us:` | :uruguay: | `:uruguay:` | [top](#table-of-contents) | | [top](#flags) | :uzbekistan: | `:uzbekistan:` | :vatican_city: | `:vatican_city:` | [top](#table-of-contents) | | [top](#flags) | :st_vincent_grenadines: | `:st_vincent_grenadines:` | :venezuela: | `:venezuela:` | [top](#table-of-contents) | | [top](#flags) | :british_virgin_islands: | `:british_virgin_islands:` | :us_virgin_islands: | `:us_virgin_islands:` | [top](#table-of-contents) | | [top](#flags) | :vietnam: | `:vietnam:` | :vanuatu: | `:vanuatu:` | [top](#table-of-contents) | | [top](#flags) | :wallis_futuna: | `:wallis_futuna:` | :samoa: | `:samoa:` | [top](#table-of-contents) | | [top](#flags) | :kosovo: | `:kosovo:` | :yemen: | `:yemen:` | [top](#table-of-contents) | | [top](#flags) | :mayotte: | `:mayotte:` | :south_africa: | `:south_africa:` | [top](#table-of-contents) | | [top](#flags) | :zambia: | `:zambia:` | :zimbabwe: | `:zimbabwe:` | [top](#table-of-contents) | ### Subdivision Flag | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#flags) | :england: | `:england:` | :scotland: | `:scotland:` | [top](#table-of-contents) | | [top](#flags) | :wales: | `:wales:` | | | [top](#table-of-contents) | ## GitHub Custom Emoji | | ico | shortcode | ico | shortcode | | | - | :-: | - | :-: | - | - | | [top](#github-custom-emoji) | :accessibility: | `:accessibility:` | :atom: | `:atom:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :basecamp: | `:basecamp:` | :basecampy: | `:basecampy:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :bowtie: | `:bowtie:` | :dependabot: | `:dependabot:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :electron: | `:electron:` | :feelsgood: | `:feelsgood:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :finnadie: | `:finnadie:` | :fishsticks: | `:fishsticks:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :goberserk: | `:goberserk:` | :godmode: | `:godmode:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :hurtrealbad: | `:hurtrealbad:` | :neckbeard: | `:neckbeard:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :octocat: | `:octocat:` | :rage1: | `:rage1:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :rage2: | `:rage2:` | :rage3: | `:rage3:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :rage4: | `:rage4:` | :shipit: | `:shipit:` | [top](#table-of-contents) | | [top](#github-custom-emoji) | :suspect: | `:suspect:` | :trollface: | `:trollface:` | [top](#table-of-contents) | gohugoio-hugo-6abdaca/docs/content/en/quick-reference/functions.md000066400000000000000000000003741507671574500255500ustar00rootroot00000000000000--- title: Functions description: A quick reference guide to Hugo's functions, grouped by namespace. Aliases, if any, appear in parentheses to the right of the function name. categories: [] keywords: [] --- {{% quick-reference section="functions" %}} gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/000077500000000000000000000000001507671574500250555ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/_index.md000066400000000000000000000005151507671574500266460ustar00rootroot00000000000000--- title: Glossary description: Terms commonly used throughout the documentation. categories: [] keywords: [] build: render: always list: always cascade: build: render: never list: local layout: single params: hide_in_this_section: true searchable: true aliases: [/getting-started/glossary/] --- {{% glossary %}} gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/action.md000066400000000000000000000000631507671574500266530ustar00rootroot00000000000000--- title: action --- See [_template action_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/archetype.md000066400000000000000000000001601507671574500273600ustar00rootroot00000000000000--- title: archetype details: /content-management/archetypes --- An _archetype_ is a template for new content. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/argument.md000066400000000000000000000002651507671574500272240ustar00rootroot00000000000000--- title: argument --- An _argument_ is a [_scalar_](g), [_array_](g), [_slice_](g), [_map_](g), or [_object_](g) passed to a [_function_](g), [_method_](g), or [_shortcode_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/array.md000066400000000000000000000004311507671574500265130ustar00rootroot00000000000000--- title: array reference: https://go.dev/ref/spec#Array_types --- An _array_ is a numbered sequence of [_elements_](g). Unlike Go's [_slice_](g) data type, an array has a fixed length. Elements within an array can be [_scalars_](g), slices, [_maps_](g), pages, or other arrays. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/asset-pipeline.md000066400000000000000000000002521507671574500303200ustar00rootroot00000000000000--- title: asset pipeline --- An _asset pipeline_ is a system that automates and optimizes the handling of static assets like images, stylesheets, and JavaScript files. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/bool.md000066400000000000000000000000511507671574500263260ustar00rootroot00000000000000--- title: bool --- See [_boolean_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/boolean.md000066400000000000000000000001471507671574500270200ustar00rootroot00000000000000--- title: boolean --- A _boolean_ is a data type with two possible values, either `true` or `false`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/branch-bundle.md000066400000000000000000000006041507671574500301030ustar00rootroot00000000000000--- title: branch bundle reference: /content-management/page-bundles --- A _branch bundle_ is a top-level content directory or any content directory containing an `_index.md` file. Analogous to a physical branch, a branch bundle may have descendants including [_leaf bundles_](g) and other branch bundles. A branch bundle may also contain [_page resources_](g) such as images. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/build.md000066400000000000000000000003011507671574500264700ustar00rootroot00000000000000--- title: build --- To _build_ a site is to generate HTML files and assets such as images, CSS files, and JavaScript files. The build process includes rendering and resource transformations. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/bundle.md000066400000000000000000000000551507671574500266500ustar00rootroot00000000000000--- title: bundle --- See [page bundle](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/cache.md000066400000000000000000000001771507671574500264470ustar00rootroot00000000000000--- title: cache --- A _cache_ is a software component that stores data so that future requests for the same data are faster. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/chain.md000066400000000000000000000003441507671574500264620ustar00rootroot00000000000000--- title: chain --- To _chain_ is to connect one or more [_identifiers_](g) with a dot. An identifier can represent a [_method_](g), [_object_](g), or [_field_](g). For example, `.Site.Params.author.name` or `.Date.UTC.Hour`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/cicd.md000066400000000000000000000003251507671574500263010ustar00rootroot00000000000000--- title: CI/CD params: reference: https://en.wikipedia.org/wiki/CI/CD --- The term _CI/CD_ is an abbreviation for Continuous Integration and Continuous Delivery or Continuous Deployment depending on context. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/cjk.md000066400000000000000000000001401507671574500261410ustar00rootroot00000000000000--- title: CJK --- _CJK_ is a collective term for the Chinese, Japanese, and Korean languages. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/cli.md000066400000000000000000000002161507671574500261450ustar00rootroot00000000000000--- title: CLI --- _CLI_ stands for command-line interface, a text-based method for interacting with computer programs or operating systems. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/collection.md000066400000000000000000000001331507671574500275270ustar00rootroot00000000000000--- title: collection --- A _collection_ is an [_array_](g), [_slice_](g), or [_map_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/content-adapter.md000066400000000000000000000004261507671574500304710ustar00rootroot00000000000000--- title: content adapter reference: /content-management/content-adapters --- A _content adapter_ is a template that dynamically creates pages when building a site. For example, use a content adapter to create pages from a remote data source such as JSON, TOML, YAML, or XML. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/content-format.md000066400000000000000000000003321507671574500303350ustar00rootroot00000000000000--- title: content format reference: /content-management/formats --- A _content format_ is a markup language for creating content. Typically Markdown, but may also be HTML, AsciiDoc, Org, Pandoc, or reStructuredText. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/content-type.md000066400000000000000000000006571507671574500300400ustar00rootroot00000000000000--- title: content type --- A _content type_ is a classification of content inferred from the top-level directory name or the `type` set in [front matter](g). Pages in the root of the `content` directory, including the home page, are of type "page". The content type is a contributing factor in the template lookup order and determines which [archetype](/content-management/archetypes/) template to use when creating new content. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/content-view.md000066400000000000000000000002631507671574500300220ustar00rootroot00000000000000--- title: content view reference: /templates/types/#content-view --- A _content view_ is a template called with the [`Render`](/methods/page/render/) method on a `Page` object. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/context.md000066400000000000000000000006201507671574500270610ustar00rootroot00000000000000--- title: context reference: /templates/introduction/#context --- Represented by a dot (`.`) within a [_template action_](g), _context_ is the current location in a data structure. For example, while iterating over a [_collection_](g) of pages, the context within each iteration is the page's data structure. The context received by each template depends on template type and/or how it was called. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/default-sort-order.md000066400000000000000000000007211507671574500311210ustar00rootroot00000000000000--- title: default sort order --- The _default sort order_ for [_page collections_](g), used when no other criteria are set, follows this priority: 1. [`weight`](/content-management/front-matter/#weight) (ascending) 1. [`date`](/content-management/front-matter/#date) (descending) 1. [`linkTitle`](/content-management/front-matter/#linktitle) falling back to [`title`](/content-management/front-matter/#title) (ascending) 1. [logical path](g) (ascending) gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/duration.md000066400000000000000000000005231507671574500272240ustar00rootroot00000000000000--- title: duration --- A _duration_ is a data type that represent a length of time, expressed using units such as seconds (represented by `s`), minutes (represented by `m`), and hours (represented by `h`). For example, `42s` means 42 seconds, `6m7s` means 6 minutes and 7 seconds, and `6h7m42s` means 6 hours, 7 minutes, and 42 seconds. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/element.md000066400000000000000000000001241507671574500270250ustar00rootroot00000000000000--- title: element --- An _element_ is a member of a [_slice_](g) or [_array_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/embedded-template.md000066400000000000000000000004331507671574500307410ustar00rootroot00000000000000--- title: embedded template --- An _embedded template_ is a built-in component within the Hugo application. This includes features like [_partials_](g), [_shortcodes_](g), and [_render hooks_](g) that provide pre-defined structures or functionalities for creating website content. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/environment.md000066400000000000000000000014321507671574500277430ustar00rootroot00000000000000--- title: environment --- Typically one of `development`, `staging`, or `production`, each _environment_ may exhibit different behavior depending on configuration and template logic. For example, in a production environment you might minify and fingerprint CSS, but that probably doesn't make sense in a development environment. When running the built-in development server with the `hugo server` command, the environment is set to `development`. When building your site with the `hugo` command, the environment is set to `production`. To override the environment value, use the `--environment` command line flag or the `HUGO_ENVIRONMENT` environment variable. To determine the current environment within a template, use the [`hugo.Environment`](/functions/hugo/environment/) function. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/field.md000066400000000000000000000001521507671574500264600ustar00rootroot00000000000000--- title: field --- A _field_ is a predefined key-value pair in front matter such as `date` or `title`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/flag.md000066400000000000000000000002121507671574500263030ustar00rootroot00000000000000--- title: flag reference: /commands/hugo --- A _flag_ is an option passed to a command-line program, beginning with one or two hyphens. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/float.md000066400000000000000000000000731507671574500265040ustar00rootroot00000000000000--- title: float alias: true --- See [floating point](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/floating-point.md000066400000000000000000000002141507671574500303260ustar00rootroot00000000000000--- title: floating point --- The term _floating point_ refers to a numeric data type with a fractional component. For example, `3.14159`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/fragment.md000066400000000000000000000002511507671574500272000ustar00rootroot00000000000000--- title: fragment --- A _fragment_ is the final segment of a URL, beginning with a hash (`#`) mark, that references an `id` attribute of an HTML element on the page. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/front-matter.md000066400000000000000000000003311507671574500300160ustar00rootroot00000000000000--- title: front matter reference: /content-management/front-matter --- The term _front matter_ refers to the metadata at the beginning of each content page, separated from the content by format-specific delimiters. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/function.md000066400000000000000000000003451507671574500272260ustar00rootroot00000000000000--- title: function reference: /functions --- Used within a [_template action_](g), a _function_ takes one or more [_arguments_](g) and returns a value. Unlike [_methods_](g), functions are not associated with an [_object_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/glob.md000066400000000000000000000003721507671574500263240ustar00rootroot00000000000000--- title: glob reference: https://github.com/gobwas/glob?tab=readme-ov-file#example --- A _glob_ is a pattern used to match file names and paths. It's a shorthand for specifying a set of files, making it easier to work with multiple files at once. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/global-resource.md000066400000000000000000000002261507671574500304640ustar00rootroot00000000000000--- title: global resource --- A _global resource_ is file within the `assets` directory, or within any directory mounted to the `assets` directory. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/headless-bundle.md000066400000000000000000000003521507671574500304360ustar00rootroot00000000000000--- title: headless bundle reference: /content-management/build-options/ --- A _headless bundle_ is an unpublished [_leaf bundle_](g) or an unpublished [_branch bundle_](g) whose content and resources you can include in other pages. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/i18n.md000066400000000000000000000000661507671574500261600ustar00rootroot00000000000000--- title: i18n --- See [_internationalization_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/iana.md000066400000000000000000000004661507671574500263150ustar00rootroot00000000000000--- title: IANA reference: https://www.iana.org/about --- _IANA_ is an abbreviation for the Internet Assigned Numbers Authority, a non-profit organization that manages the allocation of global IP addresses, autonomous system numbers, DNS root zone, media types, and other Internet Protocol-related resources. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/identifier.md000066400000000000000000000004451507671574500275240ustar00rootroot00000000000000--- title: identifier --- An _identifier_ is a string that represents a variable, method, object, or field. It must conform to Go's [language specification](https://go.dev/ref/spec#Identifiers), beginning with a letter or underscore, followed by zero or more letters, digits, or underscores. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/int.md000066400000000000000000000000501507671574500261640ustar00rootroot00000000000000--- title: int --- See [_integer_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/integer.md000066400000000000000000000001571507671574500270370ustar00rootroot00000000000000--- title: integer --- An _integer_ is a numeric data type without a fractional component. For example, `42`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/internationalization.md000066400000000000000000000002301507671574500316370ustar00rootroot00000000000000--- title: internationalization --- The term _internationalization_ refers to software design and development efforts that enable [_localization_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/interpreted-string-literal.md000066400000000000000000000005671507671574500326720ustar00rootroot00000000000000--- title: interpreted string literal reference: https://go.dev/ref/spec#String_literals --- An _interpreted string literal_ is a character sequences between double quotes, as in "foo". Within the quotes, any character may appear except a newline and an unescaped double quote. The text between the quotes forms the value of the literal, with backslash escapes interpreted. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/interval.md000066400000000000000000000012221507671574500272200ustar00rootroot00000000000000--- title: interval --- An [_interval_](https://en.wikipedia.org/wiki/Interval_(mathematics)) is a range of numbers between two endpoints: closed, open, or half-open. - A _closed interval_, denoted by brackets, includes its endpoints. For example, [0, 1] is the interval where `0 <= x <= 1`. - An _open interval_, denoted by parentheses, excludes its endpoints. For example, (0, 1) is the interval where `0 < x < 1`. - A _half-open interval_ includes only one of its endpoints. For example, (0, 1] is the _left-open_ interval where `0 < x <= 1`, while [0, 1) is the _right-open_ interval where `0 <= x < 1`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/kind.md000066400000000000000000000000531507671574500263220ustar00rootroot00000000000000--- title: kind --- See [_page kind_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/l10n.md000066400000000000000000000000561507671574500261520ustar00rootroot00000000000000--- title: l10n --- See [_localization_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/layout.md000066400000000000000000000000541507671574500267130ustar00rootroot00000000000000--- title: layout --- See [_template_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/leaf-bundle.md000066400000000000000000000004421507671574500275550ustar00rootroot00000000000000--- title: leaf bundle reference: /content-management/page-bundles/ --- A _leaf bundle_ is a directory that contains an `index.md` file and zero or more [_resources_](g). Analogous to a physical leaf, a leaf bundle is at the end of a [_branch bundle_](g). It has no descendants. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/lexer.md000066400000000000000000000003041507671574500265130ustar00rootroot00000000000000--- title: lexer --- A _lexer_ is a software component that identifies keywords, identifiers, operators, numbers, and other basic building blocks of a programming language within the input text. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/list-page.md000066400000000000000000000003231507671574500272620ustar00rootroot00000000000000--- title: list page --- A list page is any [_page kind_](g) that receives a page [_collection_](g) in [_context_](g). This includes the home page, [section pages](g), [taxonomy pages](g), and [term pages](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/localization.md000066400000000000000000000004301507671574500300640ustar00rootroot00000000000000--- title: localization reference: /content-management/multilingual/ --- The term _localization_ refers to the process of adapting a site to meet language and regional requirements. This includes translations, date formats, number formats, currency formats, and collation order. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/logical-path.md000066400000000000000000000007751507671574500277540ustar00rootroot00000000000000--- title: logical path reference: /methods/page/path/#examples --- A _logical path_ is a page or page resource identifier derived from the file path, excluding its extension and language identifier. This value is neither a file path nor a URL. Starting with a file path relative to the `content` directory, Hugo determines the logical path by stripping the file extension and language identifier, converting to lower case, then replacing spaces with hyphens. Path segments are separated with a slash (`/`). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/map.md000066400000000000000000000002121507671574500261470ustar00rootroot00000000000000--- title: map reference: https://go.dev/ref/spec#Map_types --- A _map_ is an unordered group of elements, each indexed by a unique key. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/markdown-attribute.md000066400000000000000000000006301507671574500312210ustar00rootroot00000000000000--- title: Markdown attribute reference: /content-management/markdown-attributes/ --- A _Markdown attribute_ is a key-value pair attached to a Markdown element. These attributes are commonly used to add HTML attributes, like `class` and `id`, to the element when it's rendered into HTML. They provide a way to extend the basic Markdown syntax and add more semantic meaning or styling hooks to your content. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/marshal.md000066400000000000000000000003061507671574500270250ustar00rootroot00000000000000--- title: marshal reference: /functions/transform/remarshal/ --- To _marshal_ is to transform a data structure into a serialized object. For example, transforming a [_map_](g) into a JSON string. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/media-type.md000066400000000000000000000003651507671574500274410ustar00rootroot00000000000000--- title: media type reference: /configuration/media-types/ --- A _media type_ (formerly known as a MIME type) is a two-part identifier for file formats and transmitted content. For example, the media type for JSON data is `application/json`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/method.md000066400000000000000000000005151507671574500266600ustar00rootroot00000000000000--- title: method --- Used within a [_template action_](g) and associated with an [_object_](g), a _method_ takes zero or more [_arguments_](g) and either returns a value or performs an action. For example, `IsHome` is a method on a `Page` object which returns `true` if the current page is the home page. See also [_function_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/module.md000066400000000000000000000004421507671574500266640ustar00rootroot00000000000000--- title: module reference: /hugo-modules/ --- A _module_ is a packaged combination of [_archetypes_](g), assets, content, data, [_templates_](g), translation tables, static files, or configuration settings. A module may serve as the basis for a new site, or to augment an existing site. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/node.md000066400000000000000000000001631507671574500263240ustar00rootroot00000000000000--- title: node --- A _node_ is a class of [_page kinds_](g) including `home`, `section`, `taxonomy`, and `term`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/noop.md000066400000000000000000000001471507671574500263540ustar00rootroot00000000000000--- title: noop --- An abbreviated form of "no operation", a _noop_ is a statement that does nothing. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/object.md000066400000000000000000000001421507671574500266420ustar00rootroot00000000000000--- title: object --- An _object_ is a data structure with or without associated [_methods_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/ordered-taxonomy.md000066400000000000000000000005421507671574500307000ustar00rootroot00000000000000--- title: ordered taxonomy --- Created by invoking the [`Alphabetical`](/methods/taxonomy/alphabetical/) or [`ByCount`](/methods/taxonomy/bycount/) method on a [`Taxonomy`](g) object, which is a [_map_](g), an _ordered taxonomy_ is a [_slice_](g), where each element is an object that contains the [_term_](g) and a slice of its [_weighted pages_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/output-format.md000066400000000000000000000006211507671574500302240ustar00rootroot00000000000000--- title: output format reference: /configuration/output-formats/ --- An _output format_ is a collection of settings that defines how Hugo renders a file when building a site. For example, `html`, `json`, and `rss` are built-in output formats. You can create multiple output formats and control their generation based on [page kind](g), or by enabling one or more output formats for specific pages. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/page-bundle.md000066400000000000000000000003741507671574500275660ustar00rootroot00000000000000--- title: page bundle reference: /content-management/page-bundles/ --- A _page bundle_ is a directory that encapsulates both content and associated [_resources_](g). There are two types of page bundles: [_leaf bundles_](g) and [_branch bundles_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/page-collection.md000066400000000000000000000001221507671574500304370ustar00rootroot00000000000000--- title: page collection --- A _page collection_ is a slice of `Page` objects. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/page-kind.md000066400000000000000000000002361507671574500272370ustar00rootroot00000000000000--- title: page kind reference: /methods/page/kind/ --- A _page kind_ is a classification of pages, one of `home`, `page`, `section`, `taxonomy`, or `term`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/page-resource.md000066400000000000000000000001271507671574500301400ustar00rootroot00000000000000--- title: page resource --- A _page resource_ is a file within a [_page bundle_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/pager.md000066400000000000000000000002111507671574500264670ustar00rootroot00000000000000--- title: pager --- Created during [_pagination_](g), a _pager_ contains a subset of a list page and navigation links to other pagers. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/paginate.md000066400000000000000000000001311507671574500271620ustar00rootroot00000000000000--- title: paginate --- To _paginate_ is to split a list page into two or more subsets. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/pagination.md000066400000000000000000000002121507671574500275230ustar00rootroot00000000000000--- title: pagination reference: /templates/pagination --- The term _pagination_ refers to the process of [_paginating_](g) a list page. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/paginator.md000066400000000000000000000001121507671574500273550ustar00rootroot00000000000000--- title: paginator --- A _paginator_ is a collection of [_pagers_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/parameter.md000066400000000000000000000002631507671574500273600ustar00rootroot00000000000000--- title: parameter --- A _parameter_ is typically a user-defined key-value pair at the site or page level, but may also refer to a configuration setting or an [_argument_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/partial.md000066400000000000000000000004431507671574500270340ustar00rootroot00000000000000--- title: partial --- A _partial_ is a [_template_](g) called from any other template including [_shortcodes_](g), [render hooks](g), and other partials. A partial either renders something or returns something. A partial can also call itself, for example, to [_walk_](g) a data structure. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/permalink.md000066400000000000000000000002031507671574500273540ustar00rootroot00000000000000--- title: permalink --- A _permalink_ is the absolute URL of a published resource or a rendered page, including scheme and host. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/pipe.md000066400000000000000000000000521507671574500263310ustar00rootroot00000000000000--- title: pipe --- See [_pipeline_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/pipeline.md000066400000000000000000000010051507671574500272000ustar00rootroot00000000000000--- title: pipeline --- Within a [_template action_](g), a _pipeline_ is a possibly chained sequence of values, [_function_](g) calls, or [_method_](g) calls. Functions and methods in the pipeline may take multiple [_arguments_](g). A pipeline may be chained by separating a sequence of commands with pipeline characters (`|`). In a chained pipeline, the result of each command is passed as the last argument to the following command. The output of the final command in the pipeline is the value of the pipeline. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/pretty-url.md000066400000000000000000000001331507671574500275230ustar00rootroot00000000000000--- title: pretty URL --- A _pretty URL_ is a URL that does not include a file extension. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/primary-output-format.md000066400000000000000000000006621507671574500317120ustar00rootroot00000000000000--- title: primary output format details: /configuration/outputs/ --- A _primary output format_ defines the default URL returned by the [`Permalink`] and [`RelPermalink`] methods for a given [page kind](g). It is specified as the first entry within the [outputs configuration] for that page kind. [`Permalink`]: /methods/page/permalink/ [`RelPermalink`]: /methods/page/relpermalink/ [outputs configuration]: /configuration/outputs/ gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/publish.md000066400000000000000000000000521507671574500270420ustar00rootroot00000000000000--- title: publish --- See [_build_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/raw-string-literal.md000066400000000000000000000006301507671574500311250ustar00rootroot00000000000000--- title: raw string literal reference: https://go.dev/ref/spec#String_literals --- A _raw string literal_ is a character sequence between backticks, as in \`bar\`. Within the backticks, any character may appear except a backtick. Backslashes have no special meaning and the string may contain newlines. Carriage return characters (`\r`) inside raw string literals are discarded from the raw string value. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/regular-expression.md000066400000000000000000000004661507671574500312430ustar00rootroot00000000000000--- title: regular expression reference: --- A _regular expression_, also known as a _regex_, is a sequence of characters that defines a search pattern. Use the [RE2 syntax] when defining regular expressions in your templates or site configuration. [RE2 syntax]: https://github.com/google/re2/wiki/syntax gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/regular-page.md000066400000000000000000000001701507671574500277500ustar00rootroot00000000000000--- title: regular page --- A _regular page_ is a page with the "page" [_page kind_](g). See also [_section page_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/relative-permalink.md000066400000000000000000000001771507671574500311770ustar00rootroot00000000000000--- title: relative permalink --- A _relative permalink_ is the host-relative URL of a published resource or a rendered page. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/remote-resource.md000066400000000000000000000001601507671574500305140ustar00rootroot00000000000000--- title: remote resource --- A _remote resource_ is a file on a remote server, accessible via HTTP or HTTPS. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/render-hook.md000066400000000000000000000002061507671574500276120ustar00rootroot00000000000000--- title: render hook reference: /render-hooks --- A _render hook_ is a [_template_](g) that overrides standard Markdown rendering. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/resource-type.md000066400000000000000000000006561507671574500302140ustar00rootroot00000000000000--- title: resource type --- A _resource type_ is the main type of a resource's [media type](/methods/resource/mediatype/). Content files such as Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode have resource type `page`. Other resource types include `image`, `text`, `video`, and others. Retrieve the resource type using the [`ResourceType`](/methods/resource/resourcetype/) method on a `Resource` object. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/resource.md000066400000000000000000000005361507671574500272320ustar00rootroot00000000000000--- title: resource --- A _resource_ is any file consumed by the build process to augment or generate content, structure, behavior, or presentation. For example: images, videos, content snippets, CSS, Sass, JavaScript, and data. Hugo supports three types of resources: [_global resources_](g), [_page resources_](g), and [_remote resources_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/scalar.md000066400000000000000000000002031507671574500266370ustar00rootroot00000000000000--- title: scalar --- A _scalar_ is a single value, one of [_string_](g), [_integer_](g), [floating point](g), or [_boolean_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/scope.md000066400000000000000000000003371507671574500265130ustar00rootroot00000000000000--- title: scope --- The term _scope_ refers to the specific region of code where a [_variable_](g) or [_object_](g) is accessible. For example, a variable initialized in one [template](g) is not available within another. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/scratch-pad.md000066400000000000000000000005351507671574500275730ustar00rootroot00000000000000--- title: scratch pad --- Conceptually, a _scratch pad_ is a [_map_](g) with [_methods_](g) to set, get, update, and delete values. Attach the data structure to a `Page` or `Site` object using the [`Store`](/methods/page/store/) method, or create a locally scoped scratch pad using the [`newScratch`](/functions/collections/newscratch/) function. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/section-page.md000066400000000000000000000003071507671574500277550ustar00rootroot00000000000000--- title: section page --- A _section page_ is a page with the "section" [_page kind_](g). Typically a listing of [_regular pages_](g) and/or other section pages within the current [_section_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/section.md000066400000000000000000000002101507671574500270340ustar00rootroot00000000000000--- title: section --- A _section_ is a top-level content directory or any content directory containing an `_index.md` file. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/segment.md000066400000000000000000000002211507671574500270340ustar00rootroot00000000000000--- title: segment --- A _segment_ is a subset of a site, filtered by [_logical path_](g), language, [_page kind_](g), or [_output format_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/shortcode.md000066400000000000000000000004561507671574500273760ustar00rootroot00000000000000--- title: shortcode reference: /content-management/shortcodes --- A _shortcode_ is a [_template_](g) invoked within markup, accepting any number of [_arguments_](g). They can be used with any [_content format_](g) to insert elements such as videos, images, and social media embeds into your content. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/slice.md000066400000000000000000000004371507671574500265020ustar00rootroot00000000000000--- title: slice reference: https://go.dev/ref/spec#Slice_types --- A _slice_ is a numbered sequence of elements. Unlike Go's [_array_](g) data type, slices are dynamically sized. [_Elements_](g) within a slice can be [_scalars_](g), [_arrays_](g), [_maps_](g), pages, or other slices. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/string.md000066400000000000000000000001371507671574500267060ustar00rootroot00000000000000--- title: string --- A _string_ is a sequence of bytes. For example, `"What is 6 times 7?"`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/taxonomic-weight.md000066400000000000000000000004271507671574500306700ustar00rootroot00000000000000--- title: taxonomic weight reference: content-management/taxonomies/#order-taxonomies --- Defined in front matter and unique to each taxonomy, a _taxonomic weight_ is a [_weight_](g) that determines the sort order of page collections contained within a [`Taxonomy`](g) object. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/taxonomy-object.md000066400000000000000000000002131507671574500305150ustar00rootroot00000000000000--- title: taxonomy object --- A _taxonomy object_ is a [_map_](g) of [_terms_](g) and the [weighted pages](g) associated with each term. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/taxonomy-page.md000066400000000000000000000002441507671574500301670ustar00rootroot00000000000000--- title: taxonomy page --- A _taxonomy page_ is a page with the "taxonomy" [_page kind_](g). Typically a listing of [_terms_](g) within a given [_taxonomy_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/taxonomy.md000066400000000000000000000003411507671574500272530ustar00rootroot00000000000000--- title: taxonomy reference: /content-management/taxonomies --- A _taxonomy_ is a group of related [_terms_](g) used to classify content. For example, a "colors" taxonomy might include the terms "red", "green", and "blue". gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/template-action.md000066400000000000000000000002771507671574500304730ustar00rootroot00000000000000--- title: template action reference: https://pkg.go.dev/text/template#hdr-Actions --- A data evaluation or control structure within a [_template_](g), delimited by `{{` and `}}`. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/template.md000066400000000000000000000002531507671574500272120ustar00rootroot00000000000000--- title: template reference: /templates --- A _template_ is a file with [_template actions_](g), located within the `layouts` directory of a project, theme, or module. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/term-page.md000066400000000000000000000002631507671574500272610ustar00rootroot00000000000000--- title: term page --- A _term page_ is a page with the "term" [_page kind_](g). Typically a listing of [_regular pages_](g) and [_section pages_](g) with a given [_term_](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/term.md000066400000000000000000000002041507671574500263420ustar00rootroot00000000000000--- title: term reference: /content-management/taxonomies --- A _term_ is a member of a [_taxonomy_](g), used to classify content. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/theme.md000066400000000000000000000004051507671574500265000ustar00rootroot00000000000000--- title: theme --- A _theme_ is a packaged combination of [_archetypes_](g), assets, content, data, [_templates_](g), translation tables, static files, or configuration settings. A theme may serve as the basis for a new site, or to augment an existing site. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/token.md000066400000000000000000000004421507671574500265170ustar00rootroot00000000000000--- title: token --- A _token_ is an identifier within a format string, beginning with a colon and replaced with a value when rendered. For example, use tokens in format strings for both [permalinks](/content-management/urls/#permalinks) and [dates](/functions/time/format/#localization). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/type.md000066400000000000000000000000541507671574500263570ustar00rootroot00000000000000--- title: type --- See [content type](g). gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/ugly-url.md000066400000000000000000000001201507671574500271500ustar00rootroot00000000000000--- title: ugly URL --- An _ugly URL_ is a URL that includes a file extension. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/unmarshal.md000066400000000000000000000003561507671574500273750ustar00rootroot00000000000000--- title: unmarshal reference: /functions/transform/unmarshal/ --- To _unmarshal_ is to transform a serialized object into a data structure. For example, transforming a JSON file into a [_map_](g) that you can access within a template. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/utc.md000066400000000000000000000004271507671574500261750ustar00rootroot00000000000000--- title: UTC reference: https://en.wikipedia.org/wiki/Coordinated_Universal_Time --- _UTC_ is an abbreviation for Coordinated Universal Time, the primary time standard used worldwide to regulate clocks and time. It is the basis for civil time and time zones across the globe. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/variable.md000066400000000000000000000003771507671574500271730ustar00rootroot00000000000000--- title: variable --- A _variable_ is a user-defined [_identifier_](g) prepended with a `$` symbol, representing a value of any data type, initialized or assigned within a [_template action_](g). For example, `$foo` and `$bar` are variables. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/walk.md000066400000000000000000000001751507671574500263400ustar00rootroot00000000000000--- title: walk --- To _walk_ is to recursively traverse a nested data structure. For example, rendering a multilevel menu. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/weight.md000066400000000000000000000006061507671574500266700ustar00rootroot00000000000000--- title: weight --- A _weight_ is a numeric value used to position an element within a sorted [collection](g). Assign weights using non-zero integers. Lighter items float to the top, while heavier items sink to the bottom. Unweighted or zero-weighted elements are placed at the end of the collection. Weights are typically assigned to pages, menu entries, languages, and output formats. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/weighted-page.md000066400000000000000000000004121507671574500301060ustar00rootroot00000000000000--- title: weighted page --- Contained within a [_taxonomy object_](g), a _weighted page_ is a [_map_](g) with two [_elements_](g): a `Page` object, and its [_taxonomic weight_](g) as defined in front matter. Access the elements using the `Page` and `Weight` keys. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/glossary/zero-time.md000066400000000000000000000002721507671574500273130ustar00rootroot00000000000000--- title: zero time --- The _zero time_ is January 1, 0001, 00:00:00 UTC. Formatted per [RFC3339](https://www.rfc-editor.org/rfc/rfc3339) the _zero time_ is 0001-01-01T00:00:00-00:00. gohugoio-hugo-6abdaca/docs/content/en/quick-reference/methods.md000066400000000000000000000002511507671574500251750ustar00rootroot00000000000000--- title: Methods description: A quick reference guide to Hugo's methods, grouped by object. categories: [] keywords: [] --- {{% quick-reference section="methods" %}} gohugoio-hugo-6abdaca/docs/content/en/quick-reference/page-collections.md000066400000000000000000000021421507671574500267630ustar00rootroot00000000000000--- title: Page collections description: A quick reference guide to Hugo's page collections. categories: [] keywords: [] --- ## Page Use these `Page` methods when rendering lists on [section pages](g), [taxonomy pages](g), [term pages](g), and the home page. {{% list-pages-in-section path=/methods/page filter=methods_page_page_collections filterType=include titlePrefix=PAGE. %}} ## Site Use these `Site` methods when rendering lists on any page. {{% list-pages-in-section path=/methods/site filter=methods_site_page_collections filterType=include titlePrefix=SITE. %}} ## Filter Use the [`where`] function to filter page collections. ## Sort {{% glossary-term "default sort order" %}} Use these methods to sort page collections by different criteria. {{% list-pages-in-section path=/methods/pages filter=methods_pages_sort filterType=include titlePrefix=. titlePrefix=PAGES. %}} ## Group Use these methods to group page collections. {{% list-pages-in-section path=/methods/pages filter=methods_pages_group filterType=include titlePrefix=. titlePrefix=PAGES. %}} [`where`]: /functions/collections/where/ gohugoio-hugo-6abdaca/docs/content/en/quick-reference/syntax-highlighting-styles.md000066400000000000000000000020651507671574500310510ustar00rootroot00000000000000--- title: Syntax highlighting styles description: Highlight code examples using one of these styles. categories: [] keywords: [highlight] --- ## Overview Hugo provides several methods to add syntax highlighting to code examples: - Use the [`transform.Highlight`] function within your templates - Use the [`highlight`] shortcode with any [content format](g) - Use [fenced code blocks] with the Markdown content format Regardless of method, use any of the syntax highlighting styles below. Set the default syntax highlighting style in your site configuration: {{< code-toggle file=hugo >}} [markup.highlight] style = 'monokai' {{< /code-toggle >}} See [configure Markup](/configuration/markup/#highlight). [`transform.Highlight`]: /functions/transform/highlight/ [`highlight`]: /shortcodes/highlight/ [fenced code blocks]: /content-management/syntax-highlighting/#fenced-code-blocks ## Styles This gallery demonstrates the application of each syntax highlighting style with code examples written in different programming languages. {{% syntax-highlighting-styles %}} gohugoio-hugo-6abdaca/docs/content/en/render-hooks/000077500000000000000000000000001507671574500225425ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/render-hooks/_index.md000066400000000000000000000003001507671574500243230ustar00rootroot00000000000000--- title: Render hooks description: Create render hook templates to override the rendering of Markdown to HTML. categories: [] keywords: [] weight: 10 aliases: [/templates/render-hooks/] --- gohugoio-hugo-6abdaca/docs/content/en/render-hooks/blockquotes.md000077500000000000000000000134241507671574500254260ustar00rootroot00000000000000--- title: Blockquote render hooks linkTitle: Blockquotes description: Create blockquote render hook templates to override the rendering of Markdown blockquotes to HTML. categories: [] keywords: [] --- {{< new-in 0.132.0 />}} ## Context Blockquote _render hook_ templates receive the following [context](g): AlertType : (`string`) Applicable when [`Type`](#type) is `alert`, this is the alert type converted to lowercase. See the [alerts](#alerts) section below. AlertTitle : {{< new-in 0.134.0 />}} : (`template.HTML`) Applicable when [`Type`](#type) is `alert`, this is the alert title. See the [alerts](#alerts) section below. AlertSign : {{< new-in 0.134.0 />}} : (`string`) Applicable when [`Type`](#type) is `alert`, this is the alert sign. Typically used to indicate whether an alert is graphically foldable, this is one of `+`, `-`, or an empty string. See the [alerts](#alerts) section below. Attributes : (`map`) The [Markdown attributes], available if you configure your site as follows: {{< code-toggle file=hugo >}} [markup.goldmark.parser.attribute] block = true {{< /code-toggle >}} Ordinal : (`int`) The zero-based ordinal of the blockquote on the page. Page : (`page`) A reference to the current page. PageInner : (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details). Position : (`string`) The position of the blockquote within the page content. Text : (`template.HTML`) The blockquote text, excluding the first line if [`Type`](#type) is `alert`. See the [alerts](#alerts) section below. Type : (`string`) The blockquote type. Returns `alert` if the blockquote has an alert designator, else `regular`. See the [alerts](#alerts) section below. ## Examples In its default configuration, Hugo renders Markdown blockquotes according to the [CommonMark specification]. To create a render hook that does the same thing: ```go-html-template {file="layouts/_markup/render-blockquote.html" copy=true}
        {{ .Text }}
        ``` To render a blockquote as an HTML `figure` element with an optional citation and caption: ```go-html-template {file="layouts/_markup/render-blockquote.html" copy=true}
        {{ .Text }}
        {{ with .Attributes.caption }}
        {{ . | safeHTML }}
        {{ end }}
        ``` Then in your markdown: ```text > Some text {cite="https://gohugo.io" caption="Some caption"} ``` ## Alerts Also known as _callouts_ or _admonitions_, alerts are blockquotes used to emphasize critical information. ### Basic syntax With the basic Markdown syntax, the first line of each alert is an alert designator consisting of an exclamation point followed by the alert type, wrapped within brackets. For example: ```text {file="content/example.md"} > [!NOTE] > Useful information that users should know, even when skimming content. > [!TIP] > Helpful advice for doing things better or more easily. > [!IMPORTANT] > Key information users need to know to achieve their goal. > [!WARNING] > Urgent info that needs immediate user attention to avoid problems. > [!CAUTION] > Advises about risks or negative outcomes of certain actions. ``` The basic syntax is compatible with [GitHub], [Obsidian], and [Typora]. ### Extended syntax With the extended Markdown syntax, you may optionally include an alert sign and/or an alert title. The alert sign is one of `+` or `-`, typically used to indicate whether an alert is graphically foldable. For example: ```text {file="content/example.md"} > [!WARNING]+ Radiation hazard > Do not approach or handle without protective gear. ``` The extended syntax is compatible with [Obsidian]. > [!note] > The extended syntax is not compatible with GitHub or Typora. If you include an alert sign or an alert title, these applications render the Markdown as a blockquote. ### Example This blockquote render hook renders a multilingual alert if an alert designator is present, otherwise it renders a blockquote according to the CommonMark specification. ```go-html-template {file="layouts/_markup/render-blockquote.html" copy=true} {{ $emojis := dict "caution" ":exclamation:" "important" ":information_source:" "note" ":information_source:" "tip" ":bulb:" "warning" ":information_source:" }} {{ if eq .Type "alert" }}

        {{ transform.Emojify (index $emojis .AlertType) }} {{ with .AlertTitle }} {{ . }} {{ else }} {{ or (i18n .AlertType) (title .AlertType) }} {{ end }}

        {{ .Text }}
        {{ else }}
        {{ .Text }}
        {{ end }} ``` To override the label, create these entries in your i18n files: {{< code-toggle file=i18n/en.toml >}} caution = 'Caution' important = 'Important' note = 'Note' tip = 'Tip' warning = 'Warning' {{< /code-toggle >}} Although you can use one template with conditional logic as shown above, you can also create separate templates for each [`Type`](#type) of blockquote: ```text layouts/ └── _markup/ ├── render-blockquote-alert.html └── render-blockquote-regular.html ``` {{% include "/_common/render-hooks/pageinner.md" %}} [`RenderShortcodes`]: /methods/page/rendershortcodes [CommonMark specification]: https://spec.commonmark.org/current/ [GitHub]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts [Markdown attributes]: /content-management/markdown-attributes/ [Obsidian]: https://help.obsidian.md/Editing+and+formatting/Callouts [Typora]: https://support.typora.io/Markdown-Reference/#callouts--github-style-alerts gohugoio-hugo-6abdaca/docs/content/en/render-hooks/code-blocks.md000077500000000000000000000111261507671574500252550ustar00rootroot00000000000000--- title: Code block render hooks linkTitle: Code blocks description: Create code block render hook templates to override the rendering of Markdown code blocks to HTML. categories: [] keywords: [] --- ## Markdown This Markdown example contains a fenced code block: ````text {file="content/example.md"} ```bash {class="my-class" id="my-codeblock" lineNos=inline tabWidth=2} declare a=1 echo "$a" exit ``` ```` A fenced code block consists of: - A leading [code fence] - An optional [info string] - A code sample - A trailing code fence In the previous example, the info string contains: - The language of the code sample (the first word) - An optional space-delimited or comma-delimited list of attributes (everything within braces) The attributes in the info string can be generic attributes or highlighting options. In the example above, the _generic attributes_ are `class` and `id`. In the absence of special handling within a code block render hook, Hugo adds each generic attribute to the HTML element surrounding the rendered code block. Consistent with its content security model, Hugo removes HTML event attributes such as `onclick` and `onmouseover`. Generic attributes are typically global HTML attributes, but you may include custom attributes as well. In the example above, the _highlighting options_ are `lineNos` and `tabWidth`. Hugo uses the [Chroma] syntax highlighter to render the code sample. You can control the appearance of the rendered code by specifying one or more [highlighting options]. > [!note] > Although `style` is a global HTML attribute, when used in an info string it is a highlighting option. ## Context Code block _render hook_ templates receive the following [context](g): Attributes : (`map`) The generic attributes from the info string. Inner : (`string`) The content between the leading and trailing code fences, excluding the info string. Options : (`map`) The highlighting options from the info string. This map is empty if [`Type`](#type) is an empty string or a code language that is not supported by the Chroma syntax highlighter. However, in this case, the highlighting options are available in the [`Attributes`](#attributes) map. Ordinal : (`int`) The zero-based ordinal of the code block on the page. Page : (`page`) A reference to the current page. PageInner : {{< new-in 0.125.0 />}} : (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details). Position : (`text.Position`) The position of the code block within the page content. Type : (`string`) The first word of the info string, typically the code language. ## Examples In its default configuration, Hugo renders fenced code blocks by passing the code sample through the Chroma syntax highlighter and wrapping the result. To create a render hook that does the same thing: ```go-html-template {file="layouts/_markup/render-codeblock.html" copy=true} {{ $result := transform.HighlightCodeBlock . }} {{ $result.Wrapped }} ``` Although you can use one template with conditional logic to control the behavior on a per-language basis, you can also create language-specific templates. ```text layouts/ └── _markup/ ├── render-codeblock-mermaid.html ├── render-codeblock-python.html └── render-codeblock.html ``` For example, to create a code block render hook to render [Mermaid] diagrams: ```go-html-template {file="layouts/_markup/render-codeblock-mermaid.html" copy=true}
          {{ .Inner | htmlEscape | safeHTML }}
        
        {{ .Page.Store.Set "hasMermaid" true }} ``` Then include this snippet at the _bottom_ of your base template, before the closing `body` tag: ```go-html-template {file="layouts/baseof.html" copy=true} {{ if .Store.Get "hasMermaid" }} {{ end }} ``` See the [diagrams] page for details. ## Embedded Hugo includes an [embedded code block render hook] to render [GoAT diagrams]. {{% include "/_common/render-hooks/pageinner.md" %}} [`RenderShortcodes`]: /methods/page/rendershortcodes [Chroma]: https://github.com/alecthomas/chroma/ [code fence]: https://spec.commonmark.org/current/#code-fence [diagrams]: /content-management/diagrams/#mermaid-diagrams [embedded code block render hook]: {{% eturl render-codeblock-goat %}} [GoAT diagrams]: /content-management/diagrams/#goat-diagrams-ascii [highlighting options]: /functions/transform/highlight/#options [info string]: https://spec.commonmark.org/current/#info-string [Mermaid]: https://mermaid.js.org/ gohugoio-hugo-6abdaca/docs/content/en/render-hooks/headings.md000077500000000000000000000034561507671574500246610ustar00rootroot00000000000000--- title: Heading render hooks linkTitle: Headings description: Create heading render hook templates to override the rendering of Markdown headings to HTML. categories: [] keywords: [] --- ## Context Heading _render hook_ templates receive the following [context](g): Anchor : (`string`) The `id` attribute of the heading element. Attributes : (`map`) The [Markdown attributes], available if you configure your site as follows: {{< code-toggle file=hugo >}} [markup.goldmark.parser.attribute] title = true {{< /code-toggle >}} Level : (`int`) The heading level, 1 through 6. Page : (`page`) A reference to the current page. PageInner : {{< new-in 0.125.0 />}} : (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details). PlainText : (`string`) The heading text as plain text. Text : (`template.HTML`) The heading text. [Markdown attributes]: /content-management/markdown-attributes/ [`RenderShortcodes`]: /methods/page/rendershortcodes ## Examples In its default configuration, Hugo renders Markdown headings according to the [CommonMark specification] with the addition of automatic `id` attributes. To create a render hook that does the same thing: [CommonMark specification]: https://spec.commonmark.org/current/ ```go-html-template {file="layouts/_markup/render-heading.html" copy=true} {{- .Text -}} ``` To add an anchor link to the right of each heading: ```go-html-template {file="layouts/_markup/render-heading.html" copy=true} {{ .Text }} # ``` {{% include "/_common/render-hooks/pageinner.md" %}} gohugoio-hugo-6abdaca/docs/content/en/render-hooks/images.md000077500000000000000000000115011507671574500243320ustar00rootroot00000000000000--- title: Image render hooks linkTitle: Images description: Create image render hook templates to override the rendering of Markdown images to HTML. categories: [] keywords: [] --- ## Markdown A Markdown image has three components: the image description, the image destination, and optionally the image title. ```text ![white kitten](/images/kitten.jpg "A kitten!") ------------ ------------------ --------- description destination title ``` These components are passed into the render hook [context](g) as shown below. ## Context Image _render hook_ templates receive the following context: Attributes : (`map`) The [Markdown attributes], available if you configure your site as follows: {{< code-toggle file=hugo >}} [markup.goldmark.parser] wrapStandAloneImageWithinParagraph = false [markup.goldmark.parser.attribute] block = true {{< /code-toggle >}} Destination : (`string`) The image destination. IsBlock : (`bool`) Reports whether a standalone image is not wrapped within a paragraph element. Ordinal : (`int`) The zero-based ordinal of the image on the page. Page : (`page`) A reference to the current page. PageInner : {{< new-in 0.125.0 />}} : (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details). PlainText : (`string`) The image description as plain text. Text : (`template.HTML`) The image description. Title : (`string`) The image title. ## Examples > [!note] > With inline elements such as images and links, remove leading and trailing whitespace using the `{{‑ ‑}}` delimiter notation to prevent whitespace between adjacent inline elements and text. In its default configuration, Hugo renders Markdown images according to the [CommonMark specification]. To create a render hook that does the same thing: ```go-html-template {file="layouts/_markup/render-image.html" copy=true} {{ . }} {{- /* chomp trailing newline */ -}} ``` To render standalone images within `figure` elements: ```go-html-template {file="layouts/_markup/render-image.html" copy=true} {{- if .IsBlock -}}
        {{ . }} {{- with .Title }}
        {{ . }}
        {{ end -}}
        {{- else -}} {{ . }} {{- end -}} ``` Note that the above requires the following site configuration: {{< code-toggle file=hugo >}} [markup.goldmark.parser] wrapStandAloneImageWithinParagraph = false {{< /code-toggle >}} ## Embedded {{< new-in 0.123.0 />}} Hugo includes an [embedded image render hook] to resolve Markdown image destinations. You can adjust its behavior in your site configuration. This is the default setting: {{< code-toggle file=hugo >}} [markup.goldmark.renderHooks.image] useEmbedded = 'auto' {{< /code-toggle >}} When set to `auto` as shown above, Hugo automatically uses the embedded image render hook for multilingual single-host sites, specifically when the [duplication of shared page resources] feature is disabled. This is the default behavior for such sites. If custom image render hooks are defined by your project, modules, or themes, these will be used instead. You can also configure Hugo to `always` use the embedded image render hook, use it only as a `fallback`, or `never` use it. See [details](/configuration/markup/#renderhooksimageuseembedded). The embedded image render hook resolves internal Markdown destinations by looking for a matching [page resource](g), falling back to a matching [global resource](g). Remote destinations are passed through, and the render hook will not throw an error or warning if unable to resolve a destination. You must place global resources in the `assets` directory. If you have placed your resources in the `static` directory, and you are unable or unwilling to move them, you must mount the `static` directory to the `assets` directory by including both of these entries in your site configuration: {{< code-toggle file=hugo >}} [[module.mounts]] source = 'assets' target = 'assets' [[module.mounts]] source = 'static' target = 'assets' {{< /code-toggle >}} Note that the embedded image render hook does not perform image processing. Its sole purpose is to resolve Markdown image destinations. {{% include "/_common/render-hooks/pageinner.md" %}} [`RenderShortcodes`]: /methods/page/rendershortcodes [CommonMark specification]: https://spec.commonmark.org/current/ [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles [embedded image render hook]: {{% eturl render-image %}} [Markdown attributes]: /content-management/markdown-attributes/ gohugoio-hugo-6abdaca/docs/content/en/render-hooks/introduction.md000077500000000000000000000045131507671574500256130ustar00rootroot00000000000000--- title: Introduction description: An introduction to Hugo's render hooks. categories: [] keywords: [] weight: 10 --- When rendering Markdown to HTML, render hooks override the conversion. Each render hook is a template, with one template for each supported element type: - [Blockquotes](/render-hooks/blockquotes) - [Code blocks](/render-hooks/code-blocks) - [Headings](/render-hooks/headings) - [Images](/render-hooks/images) - [Links](/render-hooks/links) - [Passthrough elements](/render-hooks/passthrough) - [Tables](/render-hooks/tables) > [!note] > Hugo supports multiple [content formats] including Markdown, HTML, AsciiDoc, Emacs Org Mode, Pandoc, and reStructuredText. > > The render hook capability is limited to Markdown. You cannot create render hooks for the other content formats. For example, consider this Markdown: ```text [Hugo](https://gohugo.io) ![kitten](kitten.jpg) ``` Without link or image render hooks, the example above is rendered to: ```html

        Hugo

        kitten

        ``` By creating link and image render hooks, you can alter the conversion from Markdown to HTML. For example: ```html

        Hugo

        kitten

        ``` Each render hook is a template, with one template for each supported element type: ```text layouts/ └── _markup/ ├── render-blockquote.html ├── render-codeblock.html ├── render-heading.html ├── render-image.html ├── render-link.html ├── render-passthrough.html └── render-table.html ``` The template lookup order allows you to create different render hooks for each page [type](g), [kind](g), language, and [output format](g). For example: ```text layouts/ ├── _markup/ │ ├── render-link.html │ └── render-link.rss.xml ├── books/ │ └── _markup/ │ ├── render-link.html │ └── render-link.rss.xml └── films/ └── _markup/ ├── render-link.html └── render-link.rss.xml ``` The remaining pages in this section describe each type of render hook, including examples and the context received by each template. [content formats]: /content-management/formats/ gohugoio-hugo-6abdaca/docs/content/en/render-hooks/links.md000077500000000000000000000075511507671574500242170ustar00rootroot00000000000000--- title: Link render hooks linkTitle: Links description: Create a link render hook to override the rendering of Markdown links to HTML. categories: [] keywords: [] --- ## Markdown A Markdown link has three components: the link text, the link destination, and optionally the link title. ```text [Post 1](/posts/post-1 "My first post") ------ ------------- ------------- text destination title ``` These components are passed into the render hook [context](g) as shown below. ## Context Link _render hook_ templates receive the following context: Destination : (`string`) The link destination. Page : (`page`) A reference to the current page. PageInner : {{< new-in 0.125.0 />}} : (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details). PlainText : (`string`) The link description as plain text. Text : (`template.HTML`) The link description. Title : (`string`) The link title. ## Examples > [!note] > With inline elements such as images and links, remove leading and trailing whitespace using the `{{‑ ‑}}` delimiter notation to prevent whitespace between adjacent inline elements and text. In its default configuration, Hugo renders Markdown links according to the [CommonMark specification]. To create a render hook that does the same thing: ```go-html-template {file="layouts/_markup/render-link.html" copy=true} {{- with .Text }}{{ . }}{{ end -}} {{- /* chomp trailing newline */ -}} ``` To include a `rel` attribute set to `external` for external links: ```go-html-template {file="layouts/_markup/render-link.html" copy=true} {{- $u := urls.Parse .Destination -}} {{- with .Text }}{{ . }}{{ end -}} {{- /* chomp trailing newline */ -}} ``` ## Embedded {{< new-in 0.123.0 />}} Hugo includes an [embedded link render hook] to resolve Markdown link destinations. You can adjust its behavior in your site configuration. This is the default setting: {{< code-toggle file=hugo >}} [markup.goldmark.renderHooks.link] useEmbedded = 'auto' {{< /code-toggle >}} When set to `auto` as shown above, Hugo automatically uses the embedded link render hook for multilingual single-host sites, specifically when the [duplication of shared page resources] feature is disabled. This is the default behavior for such sites. If custom link render hooks are defined by your project, modules, or themes, these will be used instead. You can also configure Hugo to `always` use the embedded link render hook, use it only as a `fallback`, or `never` use it. See [details](/configuration/markup/#renderhookslinkuseembedded). The embedded link render hook resolves internal Markdown destinations by looking for a matching page, falling back to a matching [page resource](g), then falling back to a matching [global resource](g). Remote destinations are passed through, and the render hook will not throw an error or warning if unable to resolve a destination. You must place global resources in the `assets` directory. If you have placed your resources in the `static` directory, and you are unable or unwilling to move them, you must mount the `static` directory to the `assets` directory by including both of these entries in your site configuration: {{< code-toggle file=hugo >}} [[module.mounts]] source = 'assets' target = 'assets' [[module.mounts]] source = 'static' target = 'assets' {{< /code-toggle >}} {{% include "/_common/render-hooks/pageinner.md" %}} [`RenderShortcodes`]: /methods/page/rendershortcodes [CommonMark specification]: https://spec.commonmark.org/current/ [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles [embedded link render hook]: {{% eturl render-link %}} gohugoio-hugo-6abdaca/docs/content/en/render-hooks/passthrough.md000077500000000000000000000106301507671574500254360ustar00rootroot00000000000000--- title: Passthrough render hooks linkTitle: Passthrough description: Create passthrough render hook templates to override the rendering of text snippets captured by the Goldmark Passthrough extension. categories: [] keywords: [] --- {{< new-in 0.132.0 />}} ## Overview Hugo uses [Goldmark] to render Markdown to HTML. Goldmark supports custom extensions to extend its core functionality. The [Passthrough] extension captures and preserves raw Markdown within delimited snippets of text, including the delimiters themselves. These are known as _passthrough elements_. [Goldmark]: https://github.com/yuin/goldmark [Passthrough]: /configuration/markup/#passthrough Depending on your choice of delimiters, Hugo will classify a passthrough element as either _block_ or _inline_. Consider this contrived example: ```text {file="content/example.md"} This is a \[block\] passthrough element with opening and closing block delimiters. This is an \(inline\) passthrough element with opening and closing inline delimiters. ``` Update your site configuration to enable the Passthrough extension and define opening and closing delimiters for each passthrough element type, either `block` or `inline`. For example: {{< code-toggle file=hugo >}} [markup.goldmark.extensions.passthrough] enable = true [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] inline = [['\(', '\)']] {{< /code-toggle >}} In the example above there are two sets of `block` delimiters. You may use either one in your Markdown. The Passthrough extension is often used in conjunction with the MathJax or KaTeX display engine to render [mathematical expressions] written in the LaTeX markup language. [mathematical expressions]: /content-management/mathematics/ To enable custom rendering of passthrough elements, create a passthrough render hook. ## Context Passthrough _render hook_ templates receive the following [context](g): Attributes : (`map`) The [Markdown attributes], available if you configure your site as follows: {{< code-toggle file=hugo >}} [markup.goldmark.parser.attribute] block = true {{< /code-toggle >}} Hugo populates the `Attributes` map for _block_ passthrough elements. Markdown attributes are not applicable to _inline_ elements. Inner : (`string`) The inner content of the passthrough element, excluding the delimiters. Ordinal : (`int`) The zero-based ordinal of the passthrough element on the page. Page : (`page`) A reference to the current page. PageInner : (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details). Position : (`string`) The position of the passthrough element within the page content. Type : (`string`) The passthrough element type, either `block` or `inline`. [Markdown attributes]: /content-management/markdown-attributes/ [`RenderShortcodes`]: /methods/page/rendershortcodes ## Example Instead of client-side JavaScript rendering of mathematical markup using MathJax or KaTeX, create a passthrough render hook which calls the [`transform.ToMath`] function. [`transform.ToMath`]: /functions/transform/tomath/ ```go-html-template {file="layouts/_markup/render-passthrough.html" copy=true} {{- $opts := dict "output" "htmlAndMathml" "displayMode" (eq .Type "block") }} {{- with try (transform.ToMath .Inner $opts) }} {{- with .Err }} {{- errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }} {{- else }} {{- .Value }} {{- $.Page.Store.Set "hasMath" true }} {{- end }} {{- end -}} ``` Then, in your base template, conditionally include the KaTeX CSS within the head element: ```go-html-template {file="layouts/baseof.html" copy=true} {{ $noop := .WordCount }} {{ if .Page.Store.Get "hasMath" }} {{ end }} ``` In the above, note the use of a [noop](g) statement to force content rendering before we check the value of `hasMath` with the `Store.Get` method. Although you can use one template with conditional logic as shown above, you can also create separate templates for each [`Type`](#type) of passthrough element: ```text layouts/ └── _markup/ ├── render-passthrough-block.html └── render-passthrough-inline.html ``` {{% include "/_common/render-hooks/pageinner.md" %}} gohugoio-hugo-6abdaca/docs/content/en/render-hooks/tables.md000077500000000000000000000051131507671574500243410ustar00rootroot00000000000000--- title: Table render hooks linkTitle: Tables description: Create table render hook templates to override the rendering of Markdown tables to HTML. categories: [] keywords: [] --- {{< new-in 0.134.0 />}} ## Context Table _render hook_ templates receive the following [context](g): Attributes : (`map`) The [Markdown attributes], available if you configure your site as follows: {{< code-toggle file=hugo >}} [markup.goldmark.parser.attribute] block = true {{< /code-toggle >}} Ordinal : (`int`) The zero-based ordinal of the table on the page. Page : (`page`) A reference to the current page. PageInner : (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details). Position : (`string`) The position of the table within the page content. THead : (`slice`) A slice of table header rows, where each element is a slice of table cells. TBody : (`slice`) A slice of table body rows, where each element is a slice of table cells. [Markdown attributes]: /content-management/markdown-attributes/ [`RenderShortcodes`]: /methods/page/rendershortcodes ## Table cells Each table cell within the slice of slices returned by the `THead` and `TBody` methods has the following fields: Alignment : (`string`) The alignment of the text within the table cell, one of `left`, `center`, or `right`. Text : (`template.HTML`) The text within the table cell. ## Example In its default configuration, Hugo renders Markdown tables according to the [GitHub Flavored Markdown specification]. To create a render hook that does the same thing: [GitHub Flavored Markdown specification]: https://github.github.com/gfm/#tables-extension- ```go-html-template {file="layouts/_markup/render-table.html" copy=true} {{- range .THead }} {{- range . }} {{- end }} {{- end }} {{- range .TBody }} {{- range . }} {{- end }} {{- end }}
        {{- .Text -}}
        {{- .Text -}}
        ``` {{% include "/_common/render-hooks/pageinner.md" %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/000077500000000000000000000000001507671574500223175ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/shortcodes/_index.md000066400000000000000000000003021507671574500241020ustar00rootroot00000000000000--- title: Shortcodes description: Insert elements such as videos, images, and social media embeds into your content using Hugo's embedded shortcodes. categories: [] keywords: [] weight: 10 --- gohugoio-hugo-6abdaca/docs/content/en/shortcodes/details.md000077500000000000000000000030461507671574500242740ustar00rootroot00000000000000--- title: Details shortcode linkTitle: Details description: Insert an HTML details element into your content using the details shortcode. categories: [] keywords: [] --- {{< new-in 0.140.0 />}} > [!note] > To override Hugo's embedded `details` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. ## Example With this markup: ```text {{}} This is a **bold** word. {{}} ``` Hugo renders this HTML: ```html
        See the details

        This is a bold word.

        ``` Which looks like this in your browser: {{< details summary="See the details" >}} This is a **bold** word. {{< /details >}} ## Arguments summary : (`string`) The content of the child `summary` element rendered from Markdown to HTML. Default is `Details`. open : (`bool`) Whether to initially display the content of the `details` element. Default is `false`. class : (`string`) The `class` attribute of the `details` element. name : (`string`) The `name` attribute of the `details` element. title : (`string`) The `title` attribute of the `details` element. ## Styling Use CSS to style the `details` element, the `summary` element, and the content itself. ```css /* target the details element */ details { } /* target the summary element */ details > summary { } /* target the children of the summary element */ details > summary > * { } /* target the content */ details > :not(summary) { } ``` [source code]: {{% eturl details %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/figure.md000077500000000000000000000060631507671574500241320ustar00rootroot00000000000000--- title: Figure shortcode linkTitle: Figure description: Insert an HTML figure element into your content using the figure shortcode. categories: [] keywords: [] --- > [!note] > To override Hugo's embedded `figure` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. ## Example With this markup: ```text {{}} ``` Hugo renders this HTML: ```html
        A photograph of Zion National Park

        Zion National Park

        ``` Which looks like this in your browser: {{< figure src="/images/examples/zion-national-park.jpg" alt="A photograph of Zion National Park" link="https://www.nps.gov/zion/index.htm" caption="Zion National Park" class="ma0 w-75" >}} ## Arguments src : (`string`) The `src` attribute of the `img` element. Typically this is a [page resource](g) or a [global resource](g). alt : (`string`) The `alt` attribute of the `img` element. width : (`int`) The `width` attribute of the `img` element. height : (`int`) The `height` attribute of the `img` element. loading : (`string`) The `loading` attribute of the `img` element. class : (`string`) The `class` attribute of the `figure` element. link : (`string`) The `href` attribute of the anchor element that wraps the `img` element. target : (`string`) The `target` attribute of the anchor element that wraps the `img` element. rel : (`rel`) The `rel` attribute of the anchor element that wraps the `img` element. title : (`string`) Within the `figurecaption` element, the title is at the top, wrapped within an `h4` element. caption : (`string`) Within the `figurecaption` element, the caption is at the bottom and may contain plain text or markdown. attr : (`string`) Within the `figurecaption` element, the attribution appears next to the caption and may contain plain text or markdown. attrlink : (`string`) The `href` attribute of the anchor element that wraps the attribution. ## Image location The `figure` shortcode resolves internal Markdown destinations by looking for a matching [page resource](g), falling back to a matching [global resource](g). Remote destinations are passed through, and the render hook will not throw an error or warning if unable to resolve a destination. You must place global resources in the `assets` directory. If you have placed your resources in the `static` directory, and you are unable or unwilling to move them, you must mount the `static` directory to the `assets` directory by including both of these entries in your site configuration: {{< code-toggle file=hugo >}} [[module.mounts]] source = 'assets' target = 'assets' [[module.mounts]] source = 'static' target = 'assets' {{< /code-toggle >}} [source code]: {{% eturl figure %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/gist.md000077500000000000000000000022251507671574500236130ustar00rootroot00000000000000--- title: Gist shortcode linkTitle: Gist description: Embed a GitHub Gist in your content using the gist shortcode. categories: [] keywords: [] expiryDate: 2027-02-01 # deprecated 2025-02-01 in v0.143.0 --- {{< deprecated-in 0.143.0 >}} The `gist` shortcode was deprecated in version 0.143.0 and will be removed in a future release. To continue embedding GitHub Gists in your content, you'll need to create a custom shortcode: 1. Create a new file: Create a file named `gist.html` within the `layouts/_shortcodes` directory. 1. Copy the source code: Paste the [original source code]({{% eturl gist %}}) of the gist shortcode into the newly created `gist.html` file. This will allow you to maintain the functionality of embedding GitHub Gists in your content after the deprecation of the original shortcode. {{< /deprecated-in >}} To display a GitHub gist with this URL: ```text https://gist.github.com/user/50a7482715eac222e230d1e64dd9a89b ``` Include this in your Markdown: ```text {{}} ``` To display a specific file within the gist: ```text {{}} ``` gohugoio-hugo-6abdaca/docs/content/en/shortcodes/highlight.md000077500000000000000000000063201507671574500246140ustar00rootroot00000000000000--- title: Highlight shortcode linkTitle: Highlight description: Insert syntax-highlighted code into your content using the highlight shortcode. categories: [] keywords: [highlight] --- > [!note] > To override Hugo's embedded `highlight` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. > [!note] > With the Markdown [content format], the `highlight` shortcode is rarely needed because, by default, Hugo automatically applies syntax highlighting to fenced code blocks. > > The primary use case for the `highlight` shortcode in Markdown is to apply syntax highlighting to inline code snippets. The `highlight` shortcode calls the [`transform.Highlight`] function which uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 [highlighting styles]. ## Arguments The `highlight` shortcode takes three arguments. ```text {{}} CODE {{}} ``` CODE : (`string`) The code to highlight. LANG : (`string`) The language of the code to highlight. Choose from one of the [supported languages]. This value is case-insensitive. OPTIONS : (`string`) Zero or more space-separated key-value pairs wrapped in quotation marks. Set default values for each option in your [site configuration]. The key names are case-insensitive. ## Example ```text {{}} package main import "fmt" func main() { for i := 0; i < 3; i++ { fmt.Println("Value of i:", i) } } {{}} ``` Hugo renders this to: {{< highlight go "linenos=inline, hl_Lines=3 6-8, noClasses=true" >}} package main import "fmt" func main() { for i := 0; i < 3; i++ { fmt.Println("Value of i:", i) } } {{< /highlight >}} You can also use the `highlight` shortcode for inline code snippets: ```text This is some {{}}fmt.Println("inline"){{}} code. ``` Hugo renders this to: This is some {{< highlight go "hl_inline=true, noClasses=true" >}}fmt.Println("inline"){{< /highlight >}} code. Given the verbosity of the example above, if you need to frequently highlight inline code snippets, create your own shortcode using a shorter name with preset options. ```go-html-template {file="layouts/_shortcodes/hl.html"} {{ $code := .Inner | strings.TrimSpace }} {{ $lang := or (.Get 0) "go" }} {{ $opts := dict "hl_inline" true "noClasses" true }} {{ transform.Highlight $code $lang $opts }} ``` ```text This is some {{}}fmt.Println("inline"){{}} code. ``` Hugo renders this to: This is some {{< hl >}}fmt.Println("inline"){{< /hl >}} code. ## Options Pass the options when calling the shortcode. You can set their default values in your [site configuration]. {{% include "_common/syntax-highlighting-options.md" %}} [`transform.Highlight`]: /functions/transform/highlight/ [Chroma]: https://github.com/alecthomas/chroma [content format]: /content-management/formats/ [highlighting styles]: /quick-reference/syntax-highlighting-styles/ [site configuration]: /configuration/markup/#highlight [source code]: {{% eturl highlight %}} [supported languages]: /content-management/syntax-highlighting/#languages gohugoio-hugo-6abdaca/docs/content/en/shortcodes/instagram.md000077500000000000000000000020421507671574500246270ustar00rootroot00000000000000--- title: Instagram shortcode linkTitle: Instagram description: Embed an Instagram post in your content using the instagram shortcode. categories: [] keywords: [] --- > [!note] > To override Hugo's embedded `instagram` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. ## Example To display an Instagram post with this URL: ```text https://www.instagram.com/p/CxOWiQNP2MO/ ``` Include this in your Markdown: ```text {{}} ``` Huge renders this to: {{< instagram CxOWiQNP2MO >}} ## Privacy Adjust the relevant privacy settings in your site configuration. {{< code-toggle config=privacy.instagram />}} disable : (`bool`) Whether to disable the shortcode. Default is `false`. simple : (`bool`) Whether to enable simple mode for image card generation. If `true`, Hugo creates a static card without JavaScript. This mode only supports image cards, and the image is fetched directly from Instagram's servers. Default is `false`. [source code]: {{% eturl instagram %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/param.md000077500000000000000000000016131507671574500237450ustar00rootroot00000000000000--- title: Param shortcode linkTitle: Param description: Insert a parameter from front matter or site configuration into your content using the param shortcode. categories: [] keywords: [] --- > [!note] > To override Hugo's embedded `param` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. The `param` shortcode renders a parameter from front matter, falling back to a site parameter of the same name. The shortcode throws an error if the parameter does not exist. ```text {file="content/example.md"} --- title: Example date: 2025-01-15T23:29:46-08:00 params: color: red size: medium --- We found a {{%/* param "color" */%}} shirt. ``` Hugo renders this to: ```html

        We found a red shirt.

        ``` Access nested values by [chaining](g) the [identifiers](g): ```text {{%/* param my.nested.param */%}} ``` [source code]: {{% eturl param %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/qr.md000077500000000000000000000056311507671574500232730ustar00rootroot00000000000000--- title: QR shortcode linkTitle: QR description: Insert a QR code into your content using the qr shortcode. categories: [] keywords: [] --- {{< new-in 0.141.0 />}} > [!note] > To override Hugo's embedded `qr` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. The `qr` shortcode encodes the given text into a [QR code] using the specified options and renders the resulting image. Internally this shortcode calls the `images.QR` function. Please read the [related documentation] for implementation details and guidance. ## Examples Use the self-closing syntax to pass the text as an argument: ```text {{}} ``` Or insert the text between the opening and closing tags: ```text {{}} https://gohugo.io {{}} ``` Both of the above produce this image: {{< qr text="https://gohugo.io" class="qrcode" targetDir="images/qr" />}} To create a QR code for a phone number: ```text {{}} ``` {{< qr text="tel:+12065550101" class="qrcode" targetDir="images/qr" />}} To create a QR code containing contact information in the [vCard] format: ```text {{}} BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-8:Smith;John;R.;Dr.;PhD FN;CHARSET=UTF-8:Dr. John R. Smith, PhD. ORG;CHARSET=UTF-8:ABC Widgets TITLE;CHARSET=UTF-8:Vice President Engineering TEL;TYPE=WORK:+12065550101 EMAIL;TYPE=WORK:jsmith@example.org END:VCARD {{}} ``` {{< qr level="low" scale=2 alt="QR code of vCard for John Smith" class="qrcode" targetDir="images/qr" >}} BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-8:Smith;John;R.;Dr.;PhD FN;CHARSET=UTF-8:Dr. John R. Smith, PhD. ORG;CHARSET=UTF-8:ABC Widgets TITLE;CHARSET=UTF-8:Vice President Engineering TEL;TYPE=WORK:+12065550101 EMAIL;TYPE=WORK:jsmith@example.org END:VCARD {{< /qr >}} ## Arguments text : (`string`) The text to encode, falling back to the text between the opening and closing shortcode tags. level : (`string`) The error correction level to use when encoding the text, one of `low`, `medium`, `quartile`, or `high`. Default is `medium`. scale : (`int`) The number of image pixels per QR code module. Must be greater than or equal to 2. Default is `4`. targetDir : (`string`) The subdirectory within the [`publishDir`] where Hugo will place the generated image. alt : (`string`) The `alt` attribute of the `img` element. class : (`string`) The `class` attribute of the `img` element. id : (`string`) The `id` attribute of the `img` element. loading : (`string`) The `loading` attribute of the `img` element, either `eager` or `lazy`. title : (`string`) The `title` attribute of the `img` element. [`publishDir`]: /configuration/all/#publishdir [QR code]: https://en.wikipedia.org/wiki/QR_code [related documentation]: /functions/images/qr/ [source code]: {{% eturl qr %}} [vCard]: gohugoio-hugo-6abdaca/docs/content/en/shortcodes/ref.md000077500000000000000000000044451507671574500234270ustar00rootroot00000000000000--- title: Ref shortcode linkTitle: Ref description: Insert a permalink to the given page reference using the ref shortcode. categories: [] keywords: [] --- > [!note] > To override Hugo's embedded `ref` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. > [!note] > When working with Markdown this shortcode is obsolete. Instead, to properly resolve Markdown link destinations, use the [embedded link render hook] or create your own. > > In its default configuration, Hugo automatically uses the embedded link render hook for multilingual single-host sites, specifically when the [duplication of shared page resources] feature is disabled. This is the default behavior for such sites. If custom link render hooks are defined by your project, modules, or themes, these will be used instead. > > You can also configure Hugo to `always` use the embedded link render hook, use it only as a `fallback`, or `never` use it. See [details](/configuration/markup/#renderhookslinkuseembedded). ## Usage The `ref` shortcode accepts either a single positional argument (the path) or one or more named arguments, as listed below. ## Arguments {{% include "_common/ref-and-relref-options.md" %}} ## Examples The `ref` shortcode typically provides the destination for a Markdown link. > [!note] > Always use [Markdown notation] notation when calling this shortcode. The following examples show the rendered output for a page on the English version of the site: ```md [Link A]({{%/* ref "/books/book-1" */%}}) [Link B]({{%/* ref path="/books/book-1" */%}}) [Link C]({{%/* ref path="/books/book-1" lang="de" */%}}) [Link D]({{%/* ref path="/books/book-1" lang="de" outputFormat="json" */%}}) ``` Rendered: ```html Link A Link B Link C Link D ``` ## Error handling {{% include "_common/ref-and-relref-error-handling.md" %}} [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles [embedded link render hook]: /render-hooks/links/#embedded [Markdown notation]: /content-management/shortcodes/#notation [source code]: {{% eturl relref %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/relref.md000077500000000000000000000044001507671574500241210ustar00rootroot00000000000000--- title: Relref shortcode linkTitle: Relref description: Insert a relative permalink to the given page reference using the relref shortcode. categories: [] keywords: [] --- > [!note] > To override Hugo's embedded `relref` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. > [!note] > When working with Markdown this shortcode is obsolete. Instead, to properly resolve Markdown link destinations, use the [embedded link render hook] or create your own. > > In its default configuration, Hugo automatically uses the embedded link render hook for multilingual single-host sites, specifically when the [duplication of shared page resources] feature is disabled. This is the default behavior for such sites. If custom link render hooks are defined by your project, modules, or themes, these will be used instead. > > You can also configure Hugo to `always` use the embedded link render hook, use it only as a `fallback`, or `never` use it. See [details](/configuration/markup/#renderhookslinkuseembedded). ## Usage The `relref` shortcode accepts either a single positional argument (the path) or one or more named arguments, as listed below. ## Arguments {{% include "_common/ref-and-relref-options.md" %}} ## Examples The `relref` shortcode typically provides the destination for a Markdown link. > [!note] > Always use [Markdown notation] notation when calling this shortcode. The following examples show the rendered output for a page on the English version of the site: ```md [Link A]({{%/* relref "/books/book-1" */%}}) [Link B]({{%/* relref path="/books/book-1" */%}}) [Link C]({{%/* relref path="/books/book-1" lang="de" */%}}) [Link D]({{%/* relref path="/books/book-1" lang="de" outputFormat="json" */%}}) ``` Rendered: ```html Link A Link B Link C Link D ``` ## Error handling {{% include "_common/ref-and-relref-error-handling.md" %}} [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles [embedded link render hook]: /render-hooks/links/#embedded [Markdown notation]: /content-management/shortcodes/#notation [source code]: {{% eturl relref %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/vimeo.md000077500000000000000000000036101507671574500237630ustar00rootroot00000000000000--- title: Vimeo shortcode linkTitle: Vimeo description: Embed a Vimeo video in your content using the vimeo shortcode. categories: [] keywords: [] --- > [!note] > To override Hugo's embedded `vimeo` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. ## Example To display a Vimeo video with this URL: ```text https://vimeo.com/channels/staffpicks/55073825 ``` Include this in your Markdown: ```text {{}} ``` Hugo renders this to: {{< vimeo 55073825 >}} ## Arguments id : (string) The video `id`. Optional if the `id` is the first and only positional argument. allowFullScreen : {{< new-in 0.146.0 />}} : (`bool`) Whether the `iframe` element can activate full screen mode. Default is `true`. class : (`string`) The `class` attribute of the wrapping `div` element. Adding one or more CSS classes disables inline styling. loading : {{< new-in 0.146.0 />}} : (`string`) The loading attribute of the `iframe` element, either `eager` or `lazy`. Default is `eager`. title : (`string`) The `title` attribute of the `iframe` element. Here's an example using some of the available arguments: ```text {{}} ``` ## Privacy Adjust the relevant privacy settings in your site configuration. {{< code-toggle config=privacy.vimeo />}} disable : (`bool`) Whether to disable the shortcode. Default is `false`. enableDNT : (`bool`) Whether to block the Vimeo player from tracking session data and analytics. Default is `false`. simple : (`bool`) Whether to enable simple mode. If `true`, the video thumbnail is fetched from Vimeo and overlaid with a play button. Clicking the thumbnail opens the video in a new Vimeo tab. Default is `false`. The source code for the simple version of the shortcode is available [here]. [here]: {{% eturl vimeo_simple %}} [source code]: {{% eturl vimeo %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/x.md000077500000000000000000000026471507671574500231240ustar00rootroot00000000000000--- title: X shortcode linkTitle: X description: Embed an X post in your content using the x shortcode. categories: [] keywords: [] --- {{< new-in 0.141.0 />}} > [!note] > To override Hugo's embedded `x` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. ## Example To display an X post with this URL: ```txt https://x.com/SanDiegoZoo/status/1453110110599868418 ``` Include this in your Markdown: ```text {{}} ``` Rendered: {{< x user="SanDiegoZoo" id="1453110110599868418" >}} ## Privacy Adjust the relevant privacy settings in your site configuration. {{< code-toggle config=privacy.x />}} disable : (`bool`) Whether to disable the shortcode. Default is `false`. enableDNT : (`bool`) Whether to prevent X from using post and embedded page data for personalized suggestions and ads. Default is `false`. simple : (`bool`) Whether to enable simple mode. If `true`, Hugo builds a static version of the of the post without JavaScript. Default is `false`. The source code for the simple version of the shortcode is available [here]. If you enable simple mode you may want to disable the hardcoded inline styles by setting `disableInlineCSS` to `true` in your site configuration. The default value for this setting is `false`. {{< code-toggle config=services.x />}} [here]: {{% eturl x_simple %}} [source code]: {{% eturl x %}} gohugoio-hugo-6abdaca/docs/content/en/shortcodes/youtube.md000077500000000000000000000050351507671574500243430ustar00rootroot00000000000000--- title: YouTube shortcode linkTitle: YouTube description: Embed a YouTube video in your content using the youtube shortcode. categories: [] keywords: [] --- > [!note] > To override Hugo's embedded `youtube` shortcode, copy the [source code] to a file with the same name in the `layouts/_shortcodes` directory. ## Example To display a YouTube video with this URL: ```text https://www.youtube.com/watch?v=0RKpf3rK57I ``` Include this in your Markdown: ```texts {{}} ``` Hugo renders this to: {{< youtube 0RKpf3rK57I >}} ## Arguments id : (`string`) The video `id`. Optional if the `id` is the first and only positional argument. allowFullScreen : {{< new-in 0.125.0 />}} : (`bool`) Whether the `iframe` element can activate full screen mode. Default is `true`. autoplay : {{< new-in 0.125.0 />}} : (`bool`) Whether to automatically play the video. Forces `mute` to `true`. Default is `false`. class : (`string`) The `class` attribute of the wrapping `div` element. When specified, removes the `style` attributes from the `iframe` element and its wrapping `div` element. controls : {{< new-in 0.125.0 />}} : (`bool`) Whether to display the video controls. Default is `true`. end : {{< new-in 0.125.0 />}} : (`int`) The time, measured in seconds from the start of the video, when the player should stop playing the video. loading : {{< new-in 0.125.0 />}} : (`string`) The loading attribute of the `iframe` element, either `eager` or `lazy`. Default is `eager`. loop : {{< new-in 0.125.0 />}} : (`bool`) Whether to indefinitely repeat the video. Ignores the `start` and `end` arguments after the first play. Default is `false`. mute : {{< new-in 0.125.0 />}} : (`bool`) Whether to mute the video. Always `true` when `autoplay` is `true`. Default is `false`. start : {{< new-in 0.125.0 />}} : (`int`) The time, measured in seconds from the start of the video, when the player should start playing the video. title : (`string`) The `title` attribute of the `iframe` element. Defaults to "YouTube video". Here's an example using some of the available arguments: ```text {{}} ``` ## Privacy Adjust the relevant privacy settings in your site configuration. {{< code-toggle config=privacy.youTube />}} disable : (`bool`) Whether to disable the shortcode. Default is `false`. privacyEnhanced : (`bool`) Whether to block YouTube from storing information about visitors on your website unless the user plays the embedded video. Default is `false`. [source code]: {{% eturl youtube %}} gohugoio-hugo-6abdaca/docs/content/en/showcase/000077500000000000000000000000001507671574500217565ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/1password-support/000077500000000000000000000000001507671574500254135ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/1password-support/bio.md000066400000000000000000000006371507671574500265140ustar00rootroot00000000000000**1Password** is a password manager that keeps you safe online. It protects your secure information behind the one password only you know. The [1Password Support](https://support.1password.com/) website was built from scratch with **Hugo** and enhanced with **React** and **Elasticsearch** to give us the best of both worlds: The simplicity and performance of a static site, with the richness of a hosted web app. gohugoio-hugo-6abdaca/docs/content/en/showcase/1password-support/featured.png000066400000000000000000005035261507671574500277330ustar00rootroot00000000000000PNG  IHDRx2ƶKiTXtXML:com.adobe.xmp -CDgAMA asRGBPLTE8tO|nAwR[J=yK-r'vT!u3|+t,HJ}Fy`G${w8\/nE}ʱ$m&y4gû#NYvqҙ:4ushmmB07~3CU@r^@;N ʸb= hLI[V3F{e xDyٕ(<>or--r˭`[n[n n[n[n?1QSk-Q˯=r-\W@OOρn_׸_6r˭?*"--rK<~r-,[#PvxJJ5>_aڹ[_'oW }ޒ+K(qr˭_Z=|܇#*~[sg+0[T[*twr˭_={;F?Ɠ[Rm+'[O8n?zE(.ypwr˭_~舿` qwWrO!nON|or}M^Oyr˭_F}=iwy.m[?k}my|n[zZqc_*ǹwW<5%m~sݟwfq[II疋n/~W]$CSܳܓ[^:C}@^༮-zqÿ&fV|x}[%_] /?|r'p}|%ž[[nu#Uqi({@aa{po/5%W.ݜG$x?^j+.r7r˭}W]༇ϳ{mVkkk:B񁊊h ZEyz"O%(z .n>3!~;='/B0u(!֚6x}s g?<_@"NxKL=¿WW¢| ^)h[. .zExY|>"B},_C84_7#ŭ*46 pnCCnO}_MS5"!PFmwkg+~Mk<[ =5;|>&|q޴ji u ZZr҉O^ Zw?͐IAz- FW,+lh(u[Z{{zQݻ.^yKWQä(|~xKRnǹs?;w[:ù<}P|z j{/f8{į=o+zL}*hǽ]=^_!x[ Ou}S,E}O4hox폽/v77{Zt7{w=w#"{l0oDovQIzx/j\B#f;RW{uw=k>+z.ƃ"śzv#>g]]JōnzCo~´_ẚ=>E4v U~{|sɝ@|xo.훇 {;Ͽ=_ 0n]x2+z xdV+FT|>2XW|9!(6-6ͱ_FKxie+<˿/O])*wp5Roɿ 懞}CS%[mil#.gO< #"w=C}YYH֖+<7>hyUp6pt77=|dI㦦 44=7#Mξ.y'^rSh<͍</ǭgK}2(٭u[{#/p^8Y4?0 uI5}|p7X. 0nho$~`][x(456^?'ZG&(~ +8/ wỞg AjxzOs 5.8x@Rف> 't/wW\-f`ޢ-$  _İˍM7yx",GQDD @DJ@-kz]#Kno vsVnt9O.z7G9-5_H *g-cC@nK{j>bS_hÞ>j=ǟ=،ǟkxࢋ[)ogkka7e+osɪo\-DY?`.0Wn^b],رrs/ۇ7Sc"gzP2!!:V+66 䟥ɣ !75u7ED46)J^>ݞ˗C ,-ݽOs!~q>^.v75??m~߇x—@@] <)_ަF o|Oky{|9| =LϿˣ>ۗ5BWIG0/?N+wmCL$5F_{~c+pj8+{_pݧ_}ޫxyÎ˿ԐRJ}wx[7ǂ}ͧ>om܎\mVvﳿ+464ޖgux\܌^>njo(>hlOT'=]o']OZ[ZZ| ?(tަf ]_tZ ~{oH[lp n |^ @sxÂJCNܿJw;__-ؾ-%Wr%+[(^Wå6_MhOb7ѪxKx[)>>jojBxv>@}]^`w 5u>x_tކ>xoJc/>.o)+] 7o[y}6G42Ÿ<x_xց+'K:/5nW\ ѡ, Oo{ ێSl55+4\aEٻ  ݈n5-y8@}GF-<@̀V)xs]~L x/#UH y[CJ{рSSN\rIjo1GIh5}!Pao~=c:N2DP!b. mx =V*b֟/`s?X,tQ8!j~v?bs~fL@FQET)Z.Sm=rC.4D6476^+qg˓.t?lhnmx@H{_gSfz#{Ahln10^]"R"ooדo'M% '߉_~[8tNt57߼6oorcHW?÷<*wG{[}p_Qq-~|su_q#v54v>hlSwv2^JQU2}Q>P=%|oanOODyY@.Ko-O+pEnѕ3i_*6sڛuDt @^lxE# 6=#؃ł>3ĝvx%}}ExI}}"wG 8E]|+hofh}٣lC{^,~!x>Ar HER|@Ϣ߲ ڗ[=͵3W?]{oϥ-޻\q˹4x\U\X| m|W^%/ t,;dwyr[[rgp)|D/4ut yϽRzw'Ňko5Kagt'/8}ʷ m5׎M_=~q=voYw5KߝVRB9ooMF;x7=^w֥[nՎh ԱǗ[s+ޒ+bÈ}~u gp{v[n˂ܢ{JJJں"筸~k˗;ɧxoqQqϭ[/m]ip^_a.y#V՗''>Gs׿P^r%**^. xAlr@+\c߾XH}ۼ%[=\[nbChl]P-|{l_twHZPSGwZr˭[[`)+B-]$e_Mwzny]-r7$ߥX`-:+HћAaطo@uq-e 1C/8j(񂻡'駩zRI rQ5.[zo"3'4zo}߳{%Mm @dϯ][nBjrCESx}*[mgEE*v[nϟW`0g`;l5~`yho1b@]o=vy]u-~Iuav9؅ o񭞞[˯PCpkyQMn]r_#u{9}%> -,uȥn/{>/;|s""ͭ)*% *캸[nB`?(b0/p[ Pׅ]r˭^!B$X.[niy!U([n}/[n_xr-r-r^r-\u-r-r^[n[n n[n[n[n[?//U9x/3>=꣏_\|%?.ZOh}"ppe^ޛUjͺbٿۿe/~WFU)V%,>UVV:݅ ?xJ;uKV,VXsPC3t{\'/i]uk8`6Xy-ղޛ%`xa2y^&.-ep#۱C|L`mǺҺ6mǦaa/mHq'x^*U&kx?m.Nxkv.'8>q7{͞'4VX *ז]r*_|U(>UUݬnWkքVN?Ɏ'֞IX䪵k岕bU\|b >|۸P6nٳaܸ< ,lm XH-]$46.3xͨVKJ P EU[?(5a t0 wffܙ9p5S7.|#saxi!1 ^H%} -Z ;włnjLj7֯Oxs3qM\-hBQʄZ˩!uk愝XFQ *"l̘8 UXS*vU9V`ׄ7A=Ð`GMx z(TR%PhނȚj;!F!uz\ζ1gҦg-xEx;Qylx|66\px gV襋9!wDܩ lYG7pC Tk,,D^I  \vFF +:f1crǤ:%.)Qa& %9{Yyf n5 `eZnumYຫ֖֕m#\E";0ԃi8$C婕'yc%v TRJuu2umw @3"1<ʇT.RWߪ ATvJՀUEEz,v\Fs瞾s!'JKPrv'R*98'mV !j;AD(jTB Y   [oh ;kU-mgUeeVX5Zm`vy$]p,,$%,QBO|c5"6ME2K6D0BvW;+Gm!X0v}g.].KCDW 0nj6q㫄ݭ%[Ɛ\Z}L7eRe;qxr6<#E]auQ"t( E,xkNwW+ =W@k%"0wo 1jy?l^ݝt).l;jBxОC,3&s-%'?& xG[Nsr݅C^W s tv JkTn%zτ[5eԂ ,ڎ^,kYj`FܰaHAm%wV@[ tw<<iXkJJ)֪0Pf@'Ղ,Wa.J )v!USO["AW JWfiG%, !wbtB]z ~tWj}k}q ÇoWqx+i8H_ȳ y/9-A69XXt<,7C-Aj7b;]V%EUUv($"fS 6UA b ЂPP OPW05|r{g( xI 2)6_$K TP*itV.PQHh I |N25IIѓ aI٤fx<8Jώ]aTQE&8x($'%u`kذp\k9uđ#99H}7Gy|% vk歙7oZ/^,xd@Xx<.Wr%ؕ+c#WeJldƦ,*8MMGqToE/?6m\g#\g΄3Ζ9a&-RPju_&[e BV=5sS !wNZ]KjDe7F BR'9!)o6o 3q%ᲰZ*o:HN8 ErglZ??9-/$[a6lZˬz'hXx&.Px%Xx܂\_ peHsٙYNXoJ{B:%Am ^8/ޯKͱ장SPI2ct{2ͲNhzD#c^?6>8j\6/}xó6dx ,] `0U"\0j!V5#9y{lVʳZ;0Ȅ0oXH=X k-hM7-QM2!Ql{l+0u/brB@W޽kf؝W]* `$T,qhS$`7 fKAIx-zy^q8y͟?EL""륌uS~L%9nA) t+I\1} vb˖_P߼sh.&qb17@4/DRkE/Y\Hd-/bu:+(Q4( %E!Bls7ހf `iC XxG ǑH|.#fSG$9-wώA"Ig e.+J } ]Aj@ w W%@$=-.4{-ip]KLLj .y7&F_`OTn>z'Cxmbl m7o+KSAʱ Zmf ŝ Ao`){'‹a7}5^/xagu\ˌwJ/Y WF26*8} NjVW揄6] ingΜ?Okx x9!xxF<428HU~xsM:;r54J]w9, +,yc;l$ x^`'v4Z< lbm֠Kզ x-26@t525^9;hٝjR,5o!:I Bka!5}dʠpw&x3PspF5(k\8 Pzym^U]-`I55L7$y󤗌Qc⫀w045;Hzȭcr x瓏!c>nBUin)»h@p&԰Ӑba8d[iK땋WnaCδ4`/nibZh v58 Uk$$<~a.7!Fy"w:﯑s,Q%ߐtț u 29eLA g] z2/FiWYΰ u 8(H =<# C  W-y`Xi5:m6V+dpLyF tEgȕؐMwkKf^ ,3H/0$΀F1q읲ٔ΀n\cnH N@h 5WvoYejgm&+2ZΚxΜi*𾺱vՀS{ IDAT KZ/eU;8(`veW 5]&Z%6,D  yO{ld%"m U2*, [^  u4J.>)xpVx4]s-7Ⱦvւ)mINVxm5iiر(bo̽uΧA':&](ꚰS41'k4(܋S7)x1I48Q^]#a3gn[=F.2E{K74IDĠ F,PlxDaLcH6\dKH7nlA%;Y(ui"|Ax|PY@w0 ׌wtNba#1t琡lR=h^EzΠWT[mΛlZNR`P:j Dwa#.( PgXHcvH ,EZpwMK Huc7R"]+K@f)3@ T4gW3°H,qޡV]i/ɹ濩&˦&٫pꬰ[/EIyP_}jc/c.H I`7׻jlRzN*z֖̋_pk.5aK"ڣo3' HLnV>PRwNG)w4ʎ$5RhH8j7.ދg,iRCM+Qj0z8x {2&W @TwTR-5lRt4lpJ #Ij«T0LJm`Iq"&a)5,V6IrS-VlUTإ\j00uXeHj4^޷pV_皓08lv+.KWJ 30 e'iލ(5`Ӡ(Mw [ .[rjeXN$ep$kΘgo M/5L/_TUe F[[a, dDxI CJ{M譜0 `^N` DYjZ2 A{v< UOj +|gPнw=V3hDro-tc0IѶ exue@?LBްOjA6PI J`Iq7݆ЋwEjX`(\I '$RbW8Ri ) 20aR%cu8GaڴR[:+LL .yAwG0tw,}Jcشm!+UköZ <{M2TZPmsXk de/R^Tw EmWͻ- Zgaڴ0&58 dXxAEaNv@^VDH'~aj.85RVTuDflM ,x[f,f &pcq^tb6N>67 R(NơPH̃u^&C0/o'qJfwR0N;Ih8k.>`I&a yK:J! $5}zS. QlK+N\+sm^kIWfVJ4Hna 'LГA$b-* 2jN+ 2X|[tб']Ax 7 ^Y rDF2> jVYf-UE'^<7IAszb /HwxH7ln= *$; rTw)KdGS$qpjZsYm5@x-FD If(21ߑr;* SARg(5vav`CᔟW:uy# {14ۯu4A0t #毄XD][5H/ U %r4dpMjF:0m>;o :C V+mޕ׉jҋZ6g7s*l3愈M5 nA14*[+^eM5nNZj.^CgR9Li/2Ev~ezlC*CxU@g :7$ʘ4`*EsSZ\ 1RCT DZH }R=8ѓNzl,]l:C7O,I BJ +t0I Aϕ0څO;jڪ-B84nVH|Dykd*b(RCLKL?BV2K˰}RLq qd$P@jtmL`+݁* wp[Fޙ4T]8na5 D{ +t˄%QNUx]-ڻsjijx D]˸g If+thmo^kM% n"v%Kf*͘*Xn+x!]xQ0.?tȏNH7h6UOQg UReK Cjy%kP_ VWE'S :r0dU r]byo]55򇥆(w\ heW$c愢֧2|r!'/G 1+xT2 @ Jg9G S[װݵ͐{< GXYx dx&SPgX)hJpa>2^ Kix^83`p8?7L{W 6uhzrqP/ڮa3-J#-3tZ/qֶI]$}2Uh 'Il༜udl ]7tX8@ĢEb-nIʫ ukgC0a>0!euKa_qi*sNN?r^PWHA*| L?- #=M9j͞-۔53yKsdða$MK &啨{*aeL?OdK%\ :<[ If0 n!8u(|~./- ]J/H :lMjK?ϒ`0zԑ:w4 [@kļSe6P8Κc6#~9/Ϝ)kl%$@R9"% )Z fUgSPy*yxS!pT9JK('Y| @_wi~dRmJ̖ 3'L:tµux1p5(w@d<#&[(8V/:w zWk2xKƫcP6 E#rR`6 7}V io]ݪuuV=qD{@w]Y`λw'EKdyXgࡖjL?7- s_PgX˔ןPHƛ [wJ7RYޱPohॖ{CN?چatJ?^2[ t5t*dY6^a[ sd~K{ xIh%FưщٲeXI$ntt /n<3dcFCUYp5 0 Rƒj ~H Xi7gA4ȝ#&(HiSװUؘzqBHJF~RH7'yde'Su-%iX25^4}[Ax!ՠN5Wt5ΰ}N}.԰1AC =HvjB-)  Z+:]] $4$Y[gs) 2O;xCS]KQdp^ݥVa423]=V IDAT0Η;kAһs˖L'SuEᝰfNXH-w!wq6O"^IxL;x 㤳 y0"p~^ drp1WX[xW͜Hݵߜ';47,V2 9͐fNDo,3Q¶ٖ.! 2xa 2]@]ks֨A:WxuUE; #d4sBW'SAj$^c֭GNؒ,8񦞞:x֨bL\l&.nC$Y$4 0 2EϜL0ltZZ-^П12| d e5gNh/͝kڴVK>Y+`#lV]jcsl@;q$!OR_$"E޵Uܥ)k:3-:z-Mk Euc`F΀$3#FFXt"3N  w v\ Kϝ"/NF= ]LhsZ1'S&Xj0u-57 հ!_j2]X%sh'5̙/+ "&ɂ /S"W8_ <]J Z\PRi^Xkd Գ8)ڼ f[NٖKHgxm Rjpb` [VWZZ:+L[ $7 N^.D2 㝹*q@KW”E,8xcl5{uǐd$) &# `gmQUUerr2 4`drԥlfA/j xwNe-}4WwxIvk6 x؏x/( Vƻ^ڇ`%{wM轣YnBi+{T6FDC_ûkiiCok:P&{%~$&J!v֢u"zxv+ x|K&`O-M* PaN%c9 rq9* 5nE]uǢ4lvax]l8xq[M7NH[U~`O,t'4 # O6 8v"v-р˩deH+cezȦq$qmox,HJ +k]@rນF2X&JMx;s%sD]:̤ bhXBY 8Gm/@Xgc=<Nj QL[Y)9޵0] bV/B€u a"re5< Y`^Ev [cbtJ%aI?~7>!awB=m JgH R u 6t]#pxUy :|Rg_VCx!`7mtFN?G+ת3S2 s#x75D(5Le:x AH:|x$l1/b) @HC,vid`d>HTTU=5hgԠM0]%2wK v ՠWjafyJi OsK 󰟍(`e6$L jI]E8`ASV?.(R8r'Pa3ȿ"Z+VW % v 䭟o jWm> C@7zw8i+5 ~ ;xvaA!}؏' w15qlm鮽Bq yo"ol 3a?Qư(?/thj4'[5d⵸a?+a?Æq0]J[kv%k8!w^7l?\H۰|jºWdp ^î1chޏ?j aZn\Z,4XgK^ҙ2ǘ+*[յ2I) /)U5v5 n "pٳmmR kҐEkEU& io!l>k&CgyIe;dI vwN˜=kF,ӰK45EjZsl&߄ &ދst{p-bpEM3v'E::pq8S81@am}lL';HI%2 GQ^+lF]s5܃?kLī/ ]ΐkp{nPAe 9n8,G 3czKj$X+aॲ#$j<2_EV^Lj`pQÍJԠ8 j{PCF EU>^D ^aPajư^aWԐ0̚xu9O\~W[RB®-k던 !eP ] $g _~}v}ƍ@Bvg.>k~Nv2ښjri![{[{{<S."6:cn+X֫$9C#nYsvo^2$FyS7\Z֌s %5~/( 𦯘~H?/tZ-nmp`o3/HIV55g(vx1T^!tƺq y;nq/:.E*Se-wٲf^ ;Ζu#j05)Ԑ8\KeM.O V9iLU/OQ:Xk?_u?oK??c]QN?'KN?߹nY;JᴽF)Nu]KcOi[Rb5;* t*^^#ƀcgE>ޘ8kpuXNjC5uHCoeeZcxh{ߴƕze?`%n.jne?y+\ lnVyQoQuY6qxW*qn [8̀et+Wzzcxy]-]TCxx) 8.e?'>G4l7fu)1{I .|jh^/ﴙ{lOI1A SgYT*1{,16'Q*9^ ItU /) P欷\?^e#;X.j- t!.\\x@~l=#G1&?w{A5`pUoiB)z ic25iN]Tm4вֶ 5(W4v4Ҋ;b+ diE\o52|@oq~ 5di A\m gs~^drEe &^B )pf, ;6(Ƴ%ja9+\ ]*;3PD-Ԡ8CUUF 8"jp3wapF";8~R@y6j KCdg&;3ݻdir\ .KwJ u}5pÚCet+Aeaޚ('kwt$ɜĻKk5`VýGo:a+{߈>XY{[a佪Xdt^-۶!%+ pB-Yp nm% n;x 8溬 ԁ W tv"[H;y ml,HֈqdxeVOzQnYF/[~a-Nk 9]28ɚLw%-! Nycd>s Bl*w]S kJF[B{Z:\xޜuS5E,V^4c5\-OL#\242І0f52(adfDei3~gT ']P\&8ZS?Rmq\hpR<=)= b3ɚJg`e?; :'S, hj8 CϠ3Lu|{}Q,H[gaes$ ;rax?UatS5}WwF \tW ;=Xfӏe޽ͻGk-|`vic0 m~ܷV^^nvgvw1]rֶ\ B[4Aqp/,qOPțqAA⤋o䃐Fg.YRIԐ' 8+1!K9 =mޒ>yc 5$^5p@\Rݔ_'P9\Nq8NԐmr f0sD™3ppw(P Ut̄Pz7  0속n@f,Z|t5H3^0^a+Q _۱gc _3^a>gԀd 5w [ݳE ~;^a\&԰&!nE*8X3c%jP(^WޛBywzȗ>r#K_-`$c@Gk|q!Tx[YvO^hGЮaCɇkt'^x&^|/58\ >h0MǰõqEkSd 5+%B 4," ޼yP%3QtXxf@^z5?>^=)99jeQC55N?wG d QCY>Pf'^poRh JP :\#ܭG05|V^0!j*~~jȰnD'^԰D [u5WWybj88\Û67zpۜD`U&d4*GyKpO(,Pk8br̬GHgZ|)Av#/4P8VzKg݉^$+F^ 2bxc 2D k|”rSrU-|cncQ#6~YČ(xՠzΰ(YxWXQNc:hkjM@-t g6f#MƳ5zQyٿ]55nM峵b[Fa2킰&yܲΐ򛭵W9xSWX aw [RL+̎ pT2ݬq6.Bjsi=!1X&\J)HVh/x^(c[@Y G(̚x0:^qGXwo-QkOBE 0TC%`{H4\O+G x9 @,E)Ӯ+\9ee9h ét9r em7K#Peލ_(ղB 뜨Auvv֕X PdNaد5~ 5`TnY3 5xIK˚5\'p؜7~nڙHTKݖT_ʮ.9POp6/|r ytʲ^sP{e%cpc05vJp noܸy\0^^Ƽ$Ҡzt oo{[nk{[.*Fai 2rrncu_$w!rU&ElEG(˜A0^+JV( eY9B uُ^"y*3S#c8OTc{o`3l!kmkE5Cʔ ͍MtWxL?O\E*6BC!/1!zG-{J%ò54HP^b6Z1q5`̾A/rxUWe f9FeH[f58lSݖ٪'.n.ؕ Vg@CO8.ir]+]Jkr; '3dJ/L%Ӑ$WE֕"pDU~'t9+/3`#u80GG%4pS1>|t|8v9-0 ѥkqd9uNR! v*lGTJTә~~J?` KxvIhʋ:\ ?~5~JvA#si7n~ѣ|g6hHLixc1xv~&{{+,S~ EBˡDcZJMLڇiuw{s[u9z'B-U\ i7W /1^J#KHJB-r )޼P( nEK47B{MWM̲}V\󁲟bUc2^t5rr"W. 8׬Phzy[ntꥹپK0  IDATe*oy!Q*IKWщ!Fk4vhn):}&Zwu*85"h|Ph`%U;~LA !]+Q y{"^x|0˯r5Xv2`$|=2 3ٝ+js튑~oՋk*awE1 DWm1>^&02HHIFgl Ϸ\" [['E9Wsð4| {[{9.^X^9&ħƪ0w]pѮVB(yW6O4k #8" RsZ$uѭ&l{ 3$7+1h!1@ ϋ0õ5)3U *q&kgp%,K;:dB{rON?$2Yoigun zOYj㮸:8= U2[r=aq^QxOJ 7~o^aZ΀g~~ ]nYC5, |alNdak[\?G~npʰ[H?ljW2cUOU?*cdॖcÛղvO>~:a}|O̽`}m 6S{Mݵދؠϯ MqNj[R i-\nooE;ƒ ~7 nT^ٲFv6P9g ^s5~ΖiPZqQDa#\%Zo-Ob}6'Aqw(J⾰D[Ήb5sX X mPU7ڲfpT4Ax'b6U Dy QEk!#KNrnK9w&GD\ZUCrCh'^u˭J;%>^~W) d/n禧&X{_<=GuǏT9]>4^|~(Q: ƿO[làIK4k|6|nv'.K3ֶw҆Wr+<"2𲏷REdY%Gק]o&fgt)jN22u7IP&M>Ww %gp jU5xeBњY*l /Eawtd~q- S-W:Kڠ} 5X!}Nvŭ\u ɥ x]Ax56pr3g'lgغUecvIj0x)%j0\ ;(^Wpz~G$ cs-_Z]&^JJms"9Aݲso^6܍&^<[r[ V҇7 u8nAJgZ[Qy[{򰱳*|6B @0,m?ՆVHkhGz֊^8Rbn7"/"3?j@ѽ{SZgpӲ0U6ʔ jHJii}?Ϡ Ƞ, `'[/#Vɥ~nx 6%I;W[=٥[l7KZ5Ӏźe0bD 2s5Q{LwzK# j 7υ¼;ܼ1#tdu *3q[0Ԫ(ϡbDhd (Jrvv`])Z0wx|]6t(CæMdq((E. %NV/|#~i5[o,[0 Hv8V o5&^2Aza KOmeKFN?y֜秉0?|wr,Y.ڹ 5|~z&S{gD+ K^,Hkؕxׂ謾>; [`޸k]vd ҋoQ-!+.\nE?Y.er/Xw{!- {95<7iPw{-#xU,<\37u,4\MxqmEkLv^"^z|z#DcnS&Mǂ${ +&9%)DisJWuN8`aef{9*xnv *\ / xw{z59=~4|Ҽ?j.MX™i␝n]W ו֍^[G+/*nڄ;%W1^$m5iC 7NwX,3X6gC1cUõ{t珹+L^+ &wī§]zR^se8_|yQ7أ'甍c ޸5~oib)]3 #0oeWYhY^czAv0BE¾IICۋ5fG zn i6jXJ'j~U) wU*M9vCW*As('^Mv# 5`ύ@ k✌G {(|{9d8O8QW[j5I?s9ꞗc.{LpޟD ?(B >Pl:g4\{]N,5 eJy񍄗-q?^x/`H'kW|dȆֶ?⨉)yxOpwHvOp7P7_^no櫓R(/]˕BRQx7>yD<ȝ[o鲟JǾx~] LBƁKMZxXxxs ^45e >{x'lOԌd7Y  Z)>YC'HwL(gx ݁pxU =?[BpGx̙Ǻ !Aw7|rOvj|NlWm +48Lj(>Px7:ċו;| ͝>Vuq]]U:olN^Jߜfg(" Hj))B;aI|ǖ&GFݚ7+\ 0W;?퇓:zĒ]ˀJC2g\JDZ:'w{pVbȻe ˡws5qx轄Y .ר9'jp^?9OQy?}InY36sҐe8B zxcg{6[SNU jqw[.mQ\嵥\Z]k SoD1 މ[]OjTP 1ƞo uuX21^x$2e-hn#/;@ 4j@ڲ0AњLPa?--- >~|uDJx|oh(1#KBG;ղƱdDn|5p{b 5gxKCnYcY:Œeķ-撰D , g@p~'R.Is95a q+O/YxRU2|yq+kw'8{.M`M/>l2xl W caX o.?}/6°e@'Nx"PmyXn{PC# oD$n]} H:KcE@x&cAL ); k. ժ@c[7|˱Y&H! &|_Xozr{פDQ%Čܟ=uy$MqU9GN{swj\^|r5\Х™:fHx7_.rErE]=-N|8_c[7?dC'Xx;IC+ /mN l:QCCCa[r48NN>}6^a)?SCg˜a~i T7#`:~;xQxҮ;x3v 5>w^ɻ91tc ͵͈" 3(K?7, Jv'a˚ij;rIK- i޻w~1Vim xfKY0]@O[o&0liw4zhY[<:t5 D27k!;G )¬xa=[s5Gk4^vGh]f^z i5uN AoC^B˽m4O$xcV._מdE"hyKP;]F4*ή2qY{C7@,v"}"=\o,O*Iݻaڜ7酅]xZ_3ŞPcFН^cUe?YY8zw< [O!5 hP\Qoe GaxZ5b E3(q1̽W H#a}Qo!1jh:Z^ibhs9"n-Aj.G=v0O=V^)Wҧk<*OT3!m )9}*!.\: mU_?`k֋$SV-x-AxoznNҿ0z0(4L"/"X<QٻfIjeee&˱lWĞ E H?e, _t0El"e1^t5Z wcAt2DbHn -M5/s1M.g y덽#799~Ř~b5c bMDmHЭy|tmlPY|{k C󁔔p3TwG %b5Άp8;;Ǐ" İpM o^G~^;&^!Qߺ2}HޏjV]R:10=HGjU-H/ ] A8~N DчOqCwY;`C/lXRvl-e͉5sҰ:2h3ؑ~~~N;1 ?&j8ad< W䠭 Q~w=dP 0QL8]d<;]x)ߛxW>Jݷe7gQmalIWrν-$s q-:y[OюEEaOZ`d?4og5y"wOx?6'xU)wr5iiPWWQQ}W%J_v IDATc(/#D|P^ޅ?ݘlWkI뵪~dُb+{6+Bx c1ƃBxNx x\Z36ϛ=YB @į9t>2[=]m?ɞ8\#01KsR/ݷN5~j] 5;G2 rUX f)3Ѱ́ u՝v짪N b>N -#(ON%}2 ǰ"" V2ae#rvd0R3v'k/G[0aN+9K6cg-L p.&%|} BF:p7cYB h^Ea؝"F7@2OFOc#FpW-2jՕ]2 œvpn]Wb˚q# o)'^{sd]0r vp|F PC0x%@n'/;⽶Y?iu*t au`*L89H2"áyIQCK* )Y$biH}Q=UL|QN6H궤ZKBFPc:uF 4jJ;䕑`7Ϟyc2x1wa30/uDVpuPĘ 0ɐ4rR'9QA{/p>NLl#V{{3;)wF 2RRxͦ.dtT,HD K6‹K ь;m3^a5`Z^n֨a!m>|d"Ԑ‹&^+L2QC{d{\z3$_;'ʰf-*P/F0R砟ʼn]a5\rC u_HAO?y|'DclYknA ]zB]t@_x@vf5e݉HxamE Yr[;Q!$R6$ O`̭Y ϰ<Vʯu ~| Q /A$%ERx5gtBPD[(7{I<j q,P. `u7|]^[|* ΐn4'GJ${Ls1<ĚC]BOx)F2dv IaF Bxeϡ~TjY6v tiCbߤΕ3^e'S Vy)Y6OTu⫝ xG  ʋ4T /6 j((H@A\Oy_>:po–D+;jتo2:(Ajv׿de͎$5hO 4WJy ם;he4s/Q.ʄwiէkHgx5j 5wCexÇ?tƣ4Xw)K o  鏰1,@)j݄\Iɻ'C'Px'&_<όlpXv\T]e֟2 cn;]8۬?1/c=0^0]^Ra乩=hft\ur+} +׬7~͞{"ʄ;Ս6f .q &*B/(` /pWB'`:dyNAj/Gm+D=K8sg`h$;»װW8,٣md in_73[*YG^(Ž~]܄o寿@{!yɈ힦HKs2;x&=wW_g ?x/dA K- DMs`{xK<b}W<2U#`kˮ<]S!WVlhEێE ) E +Tz*$ Sօ sj\:bj@&Fm<h@TajF PQ3I7QC?]vy _Y^jȒaiQ]/$Zp%,3^1Xw5Kp:%BgM0oXHmxT3[6Nqx>!ۉr}(n!3Xdpgg7g y5b|&j(/Q幆SMUk{)\#:Gg5A-O󢚺`2\dMqC J?>#=~WXW3Pѣ28N*sGà wd:+j8OZs?4B(^GZx@w(QsP'|%+W5x'k H ^aU#΀mx~6NN^Wk}f3A:|f9ǶUcEnE; 끿ߊdz(Io-S-Z2anKKhYkldjge1+H-PCze xےϋ4ܭ qd4΀`iG& 5!gPC5go&)Հ5*]S]p ;h~ H?/P a3ai@-  ޔnqg xf#cp^lYf?XHv/6Pn=~pW.fqxe-.o[0h;Y`>:\]UJ}Dv7IjPoY` KN% {Wሉqt&YHdӃ\FrK4A,Œd/O{dVh5p9[*4wTe5ڜćkygILAwJ45'k+Wn}.m'۵K /C޷dcaeUW a5nW^W^MT0j +SqT{o[?, \ 3an +ᵲPJ[.hk(h J^!]Zx+x닺PcPr %5<>.4v!j j?/79dƗk keeqg5Vp15as1{TY?6w3g,Ѓ.11 /~CTΡF$(hGgD|Wb+\ױHk2a}x{mU#VG R-B\K8հCx S=J5Np5d5a^8^&] q 2[gM"L/x)f]_|g^JD$3{dnݑ~wH~n8\W^r#60lP}t&- e->hYk'撷 \ q]/nxR=fZY  ܌nQڗܙ(W[O9ojNvneN3P;x3ږGCIǣg̼@͌:}g3Z7:N?'ɕ* uu*_''p )Pt}c~I˖ (-Ο1(+ppxNn&`wl쐵8NPq@'k~~:'ʰ~.e=Ѳ/wΝ+5SvW:`;>-K5ܹ޽GG}gma\ xFj@ W >PYps,By\ٶ* s țF㭧m %$7f݃e?$,gby"o`è)21WZkxS8\zw C,CBȄ]aY*p[{cr;0F_k+ně7~ޤS$ 7xw&Խ[_0MQ&Qfg`hqтx4~;ydZxSAxS)/NõԞ{-%0fRug›7gGw0jXَ8rH|N'kP:L'WXejb+p=\kAuBqd/ PlV.QZbkƞ#}*jYCGxukg+(3Vُ[ Q{.e?{̲L#e?P_1]juxq#D^e8m@+Q0F :G(6 E44,is&{f,b|ۘ?pmxgZTfp' 5%F YdI}EE]7bUd 51X*Uu.P& Pvū| QnF48PZK?:w] HgC4@5.2u`22Jujأdjsms {>DW$_a? 5ȽK6j,] IDATs,4D 40-nb+p]Yf'\İ=JaxKP]Umy [ѱ qmn3Z$7*H5ud78νD x-QRM5BD;}"nsw_H4 ˉ'k#oYFZ~jUD 8yc»y@y'}+5tt͂bF6'sx`XzɼPv.@<pX<Fh~kRdcq0sp/^2rO<~vx|] /֮M P_"H~z6GⵎE.PPn+VJ8PW^JB;pW- )» wo0A|⦆@rGE԰WL2̌@WxFv;Az;qЀwBg!:'WBHdAf*xEӯCcMGq\W~d7篈!s~*|}k$j 4 IC3-ơg[,#Gd:#F#A4 6JTAޜ`@FA 5"Ƞ1Ly=d2\ %U]ބ]6 j?/F pQåsn>(3W]젆wWoF YB &l2Ҍ%yc;YWU/>eGmL^èaaIlk g,ljRsR{vrK|R$: pY"!;ҹdWU>>MZw| [ :FԧtġMLn œOԚ0#5n ƑUc@A/a;M?ěD"EW_F nWKP2*1"$'ޯõVR]1jcC~| /[2U*|swDK˙`ɮ8dXpwпJ]^es8뮪pې3T jኊ Bi+`2y#﬿R \ @ ͿS!O<~+T/w~eZQ35wf5>k#]3߹HxTRa{puµdfkʫ o,-wlgdH&w~5ǖl 1TWWy RGqP̻MRF C, / }?w hpT H5>ګq< ? >^9[Wܷn Xw i9a«HtCOJ! f Y?5fрK! $ %:\Ea^E] n:9yy T`ÇHvI٥S }j-kNKF gը!Q pTffg_h=~;!j@27Zzw3ypnnh]D#pU T~ `㚊$D"o+D+p›&6 p1qS]È~ւ+yR|wcP0LRxI~uE["OٱBo,(~ :c< ('@ֱ |MX%M f0<EѻQn'a8<Ũxxw3Q V3ɠ=d%{~`M  yjqoKk+d5+,׆K_sxT2 lqjYyY~ǥ_Yx5ޕl *0OP$ΰN?gZe9bKI΀ )H*2Ǒ6T?nr% &#dXahP4CʛVW0Aܾ"qCM/1OW¦p}Q$j,T^qB6y]"C) MA !QCց<z@/4jf P*P$AP KFOVaF pk)b@ 5ZFh̡nK溸m' \pM?L\AQP^( en^oӫ T"e55#պ*-VJu6@diU&~R2oNyGT2z7A ' *R@~2Gkv5iik`8Q6qVp GȧL tmWv3?5隴4w#j/7PCB-q p|A*ѽ?j-9 v: , j3|ئmTw4W6me=^a ˲e?ti<6bVaDїA#,+β{B]쇓xuey Yd&o$t&'ge9LC xApSX Z[F ˲2}inMejU%H8$7;;Ǽ̲kWK. +~2:\[ י{b/6v>\<UWwhn*.aݤCqt*1\ i0אΈr=xUcyÇUXx6hG =x+ _ `~ƍZuMK>i9g~xwђ B%7x v( 7sH%Kk4-+Q|Ō[&K E4tKtsEE?ܾQw-kU˚Vz{͓ԲfL,#ΠZHv7oF%@'^j2 ز79]w7gشA#[6H΀o/Ϗ`98Zk^x*5~= sC|]Xs\jI9A ~%\NsWRH÷/a x#\ F"?A^j8oF)/%x- 2\ZHr﨩q {*s/ZKdio=xqŽo aq\m)[T$t5riYډmdp>fáޯ.T_3j`+Oٔ&vIys>eSPξc/ EP__, Too=BYwQ}Uy$jEΐ2qGhiqF"\c2^)l]{UA=]c w wLn95jk@d9ݺsB6/h> 02g،.tf Ll>Q%QCN8] UPU)j@k6)+- ݻ2\ {rD P#kt01}Tݸy$N?ǖe ~tZnY˰ZẴ2dv2J?PGk 2£~3LN?$A9s.ރH_b ҉uF+\k«{-ݍ֤ˣ햁,9l e?Wv +#red ;lغi|v\V+k ըW8 P&t^ՃB/]Kf;1bҐwc00fPlPkVR}ƺR2HPG=D n!ށow~PYļUn6ӡ^&j3/(n Pݺuu~n3^[ʐ.l T\*l vQ84 1 '8jHXCIÙ5J!TnĒ9~g Œ=U >Q{ˤ+^J@^N{— woG 5 N?c nn\Pgox5h=o~qjp_]/vr5j0vA63ZbpSrxԀ498OڻDk Rݠ qԆV0l 46f&tR7Y`@M pYpOc=|** Μ\zˎ[ҠQP&Ԁ4B _1j~XvQ9CzwqM%QM?Wl5+P,X`Z Z5S(uA #Q5nPr"QCl\5, jvvQCF ċ 5WrI/ {ޫ}}tIeIVDd 33-b&[׫g]Y9ekW¨ C?6hb岟@,^ wٺ5"c³TX3rB~ҍ31cw]|а;kQíڌs9xTI!xk ep2^WSBK5 VΚψ.ԟ Pl&FoZ f]ڬ !nVǐXxˇWXߡ ~;]dtUWv)rj^aN§ ~@t ( s`k@#Y q3j(lbhR GN2ujQ53W6kŽnב1Ѹ[@idh᥁.QQb JyW)n_]L􍠑7?_r,d` Bs.&`tءqVq]p5jMyZ1G^zR2-^6lOӿ{DQk,=Z)~ @0Ġy~(.%\@`pi+pW)u3n./]X J/-.~~զf  `pt2:Ob̻T-XE< 4;|ew&7W&^"Qɉ=QCDZVe;#j- 4;P>jk)oGy:@C/{`"li@ |21){6$ԠN',jp;] F}îr5C Kd <ԀO&-PCrG>3랋Aϰv4 wC,YhM[ IDATC W% x{\oL&%YPPCQeXcԀ 9-{=0 tcOzAR7Z`QeɵI֨QCLi-gwk6 } 3HH5)e{ď=wt3I_MT^XZ-wX X^:/w¦[C 9d]P@sUdj {49 .Yxq^+sC(| h={JZM\RBjsqq'.W 0Z彚e/[g^h(QXpVLd#JVJR2rQTޘg~ ^X)΀| 80 zsrc9bVu0. .<^uíZk^7r$;x39ۚ64tOx%R"V{q7 D tNNvP/6q<*fGୖRPd5ar3Z WMTY v^JY ^a[ܪ砆fT4NF_!KCy7t$ 5 mUڑܙtIugMHF XsB zb ܲPaP}'pƍj&GPnQo5`e9:rQTj6f ~9 C ќ!9:F p>.VjF l\:Y] n5͸hޕ􏘻Xsw-j 9Tvnowiɿ+6֩T]ʃUW oH{A[0.|֥F{ލ(`ѝΥPLF{Iy/L!W_7WoNX(GNKg(4OuzfDՅކMX/C+|*dkXoIF FyZ鲟@0#\?W8D@x8u j:xOڲ^ުnԸW8mOV8 /V"LIJn(Xv-xꀂFruoLNIx#j:mS:`O@F2R9x#~8L8cHWC/0 ojצNVWjj8j2 /.8Lbx3P̼zv!ӛxՀIU ε6佞0h~K2.)e?hⅫ j"HqTfW^aKQkf >P0’w /mࣱ18vE:ghvgkDwK?lgMG3䑕!gM~! AIvZD9ɲTϟ}7lxmw*pjS7:\8CyK&5A 4 DYK*lVm*lLK?w˵1u)̢{JP~n\J?Hrk^yA|4nsx g@@w1фvZ̫8=^6k,:yaKCd␥a?vo>s Ko30+Lx\Oύϐ7Ld1AsbНӀ~o6Nz9 ϋzK~>IW$j=}/8ʮ#u'¿QkgX%lP^@ x 1m7=kr0{Qcqګ wk>\[4`-;v NޓsU#KCç[b%n^Voڻ鄝t˩d^ 0xw)Q4nհGB etlyoz.κp;$s ,u6AlQkGSD {k@2 )Xx2֎,׎pZ>c`##K|I>ϱ;L[5UtN_tPAu{YhC.@p`R`0w&lk't.oh&Ȃ<\-TS42EᲟ貟j[N ͧy(oiMBdҦqxpDzv*i[Fx7}ld}NE aWC{5̸\5LA$Y8JQ5fJ?w}r'\zB ?kJ?]I? Pyj8>ZTC 2 ^ ;Gfpys=/R+/Yx5;jp>hH?W}:|$Iƨ!&K?rxϥsx 5jiaJPHHNk8]0S?p &+b5P9[oYP5EtHZ(.)wତ۵Z5 rkχ8-BQAA]fܝ A 8r MY1رw k~>c, 35ƵlF@ gp&^~P^s|d{:WSK&^1݄B 2Ћd/xj $@fK~~/.EۉסopC !p3"p> rʄ3L CfW3k7؋-7<?زvX[z&+{&*)ϥнrZw^47NrnUɵp 7Rxv/B^4s(7\k7Z3|#ɺf]p{m9+|u];ûpn.{x3LO˨!_1j WCjpœXw*lU[/ϡd5G[l$Yd}jѨ:*K&_s3;xW<54Xx' j@ e /30-ΉB ㍎ʼnF 0zA#oj" s㣆 IdvM<jLRZxԅ +'Ì*R ^a~ jXW%kF4oj& ++!Ӣɰ1tZ5σ-k>emO0HPCYe(Ԑ~r\[weC 8,?jYK,jq=:-k5tTN?t@EɠhYkxږxz0귬E^&5 IײVhY+5A ~.r2쵬A hiH?8Ԑ[rп;s?D }ΨEplY#Ԑ7j{&e`O6`2\"A -jL?g}8jk8MD.yguzgi#l(ehPe?+NEdDz"~8 {eFk%LVB]nte?7Mg` ڻ4s*ٍr90d\c'DGĝe?0g.KepúHj'1ؚ5# 6'⥖yl\ PO7*/.jkUs֑!TZӷk𺲟>5w gWNjL~QV[8NxuT2oX5n >=30a %OJ߃^StNPe?2@@DuKdُ2* /&e0 S/]^-:<`';d.Lp]o粟+y~ry۷1A gY syTyT,ΟI?gK#ؿ;SL?pL+L?!2G׹0s?TeLdiPB}~6tBY]5 s"5gH) Q!d S>g_jj/$an d_;ḫ wi5J?9A8CC pW;j^k୓jK&5@;q&H?'#giX@953jpB nK(,T5Zm,Xc;E fAz=4R"]pj8:֑dE\.A"*\S%\Y;-X5hÈuՂ? KW0 5p9FwGN@4;wE2ᥐkGyٲ#Y# o.YQo֦H/*n=PlFcte?Y@/8xq}f\C3~Mjx:, D`~V(^[s TlYrP?+N쇅WBɚ*^yseLyw0͝;@Dx;x{%Ww܁7\S@u e?~^o2K_۲`GPW;R /W_#ᅲ Sn> ӥpt0N-6,aξ! SnaW(Q(mC*e? _kkÁW_ާ6 /'AyyAw$z"Ox{b; o$S]vVWWx+-t4Tޠ^ҺX|vF6^Ś{̀Aw[v5SaB횝.82^ ܓ3 jEԀp] {'$ ϩT8~~T21gY/rxfUCrLY\% S;Ͻnx@ \H堮5 UpH}s(l9ꂅwkˋo~_o-:Ŝan/s0 vz砷 !留 kh`v(ΐg@[|8kv⻤Bs`wy`$Q3^^4M[\D̦Q*Y,~.1 wq@-gs.@r9}6A^a&rCV㞗/ԬX7Nuyazt~=kE{^D-ڭDuRvjajݭ2 |:.^-";:#s]3⋐Q#gnllόogTN?õPh8~yDad.GDS9r0jωˊnYR-kY.~7~ٲSE i, 5/ܥ4S!-kPoeW>j PCҰiio>iH|Z^jVl,lH2u$ '>lL9ٲPCDjYvvo ǎR{#;FxkyV*(wˋeO?ϷG\\2N6{~[֨|P4jh­JL {S"x'B[TnYJe: 5Ȥ˨AV _X2 /.P oԀN^B W546 j54 jXx-jhVk+bg`/νפwU_CJ?KGɀ06le7C.&[6{Nb ۄeuiW/N&c ͫbrXxKpӆ;64P<5JV,K5 ِ.'pK a^!fڀ୐>)7kÉ_̨&4apž ǹ=qmqؘ^ 8q/'tNk٫"Ɋ{7W+dg7U[,6ήPxeTR_X%-.GE@390BANXxsOgWqOxϹThʼn/@x!9vz CZ*>TY_]cmYiܶrǽo?h/jNxa5(.#"Z*9 ǡT2 '[Xx}dkċ#0iPÙuTƫpƪF Ppy$G!<ś!{sgȕWय़ODO0mpǴ~%\N) R*Du0P@sF(w?4uNH.koB[(6ĉrJ"Ӯ/'ؽ)iT(|N?̵wp=˵U%vs$|,>x* {ސ.ܢQeOzKN?7ޝW^ +Ԡ`Yx9^wkKKPxU!jYƤvs'_z'b~ΖIA0J?VlY;D! 0LuDkDZ !iQJ i>+ZXuC39yxCVTI5J?'/]Wo˵p9v9%_.'4Cu,ZcKPP)oDoc+X-L ?_S$^{=1ZSe?q@q@rEv &B_s @OVt#^PA0ae? ΀^tx oDُІp0 oW^"VxW"cُO؞d23d2=?#yIpb2oH ޔx;jiCghj )`7C-1»aW~Rd*iv> ^ȩO*' JG/)M+#,Fnҭp(!<5f9mxwkNxxIkdm( Jy\^iƎ~~pO:+l~Bm)»xOV&[C&ڰt|֮F!ͥ~ڲz=ӡ1g)d p IDAT)skɖkr*lmFεgOC4Α\^$ 3e$$O1G'&rUgȋ3祟-^:DҠ ,sxo)᭐KBbW~ O?W'kO;xkyq7:\|l'vwvAw;s\[]}i~ku5~N!:K#Ifso߾\M!3ܨj+vSo߾M=Oq$$ϧGIxG5p6YD9޾|fX ˉ|ggSa4seJ?΀C.rCb֩d(y˨7 V̇ڕ5m+ƽn 30/׾va~;YI8lgqsg(kӧ^!Zx/^\pMk U U~.xͰQþ_cSɚյ𬪟8:Ç.*oƵE@JߏLH.sȲ^Mp+QA>݂ ׫e?A» /ɼ]2Z+!^ ?CO{.׆<6e SSTxo;nV,"5icΓUmm|X}K# ;;k0ν}ڧfM$lomI$^aނՏO޿_۾@Y}~ SoIP?xtGۻFwͯ@vS7_}T䂉Zjx608Rj{B~kg>rFe?Lx9admbܯyRa|Fl֔6Le?~ZZ魚[7Hn =WίXܛqU50QFC+-+ު]w Nv f=Mr+|/NY66KxXxm#O[F}WZ;;oV/nw&Ib{G٩ 'xotXeYZ!7amy/!Y-n}gmll,σ&_m/IVk xL^̯̓tƷ Qe5 b؋3 k͵{@QC\CԀwh |BmfL?GGDgQC3I:^4v59UQ aXZרN(|B 즇B6O8w9 bgÏ}+{ҥ{+ꛙ3so.2\N}?'5 RlI޵demf4s;zK %t9A#0wK ^98kq#qJ9 hؿEvO'95^US!-زGk8Nq$Xe*NTXxu캧hƽF^b\vvybt p^';[v_&o,z͓5q qB k;OiEw[:̛v*|Jdtt~kFw~bۼoKڠ#w7va[x;ѣ&n~mc˻𗖗%GJYxko'b8Xe ExXbr - 9L8K?sLȡ>wQ#{\fKPm!<P15 X9/B%QN&bqP${jpӮx-]+\0)91#/0DM/@qw6wlޭ'/T[$X]M%T$ōG/`6z~cz HLr/MSa^RFHat}<ߦjkjX\X{7ym#f{L>O0?'P k d&yF2|+ݴ8j8P99C>[<+lg\G 5Ua<} ol:'WzjsF mp`ԀGkvR/^6ֹYmŴ^O IFhg *Ş jl/kA_z n𝶨!di(WC ܢ`-5ؖPP_ykP'jp warM*q<2ղ6tVjp¨p:5U~P8bMjvbB߹; \.E2$Vw7jW*VXkDy4a~*Db{cj6LFSOz>wSn 8T(b1o&!v7.)`+~>q 0%mll?OaGj09D3'/"G(g֤.5"(nI[ưeܟB f u'{KW),.yW&vr\¡ / Ѐor)LJV K*Yr2z[&ޡ!$ @ORa\ݚ .78Y;ig-qjnn990d4$^nmd'gw>%;:˵Fo%FpõۭԨލ]٣ݍ۫|1C:'B&o{w/xϰq @ak-IFy 敗k _~Wk}* N%q*8xK$YSPys" WܸۗnxsS[AmWBr2 b#^0^a+]p87S0;~sJHxT2ɠSH+m9]hYx-Wd_n >pfV3y\ h V]ufM8h^jh呉a+:Kg2|ge̽FU"hpjd-? ΫVl={f2T3n$$<2 S7owoQF *H|ۈv Id0mR)#/6 fMHj{a}jHq.!u_,/~tρH͞?=?><MfPk%RPZ;Ĩֆӥ3g@B mj]8o{~W[.pIeM9pQ' ^J?WdNWUUgvbMC޽\ $~/`iطQ%<.)!ᥲ_Td7كA=߳K^ ƙ[59&ɉ rB /;x+0Y#a+[۬QO}SawJF°N e5.dSae?Nx3~zQiY>D2 ӵ&̨~f5q\L/^FMnQyT~=eT- o,LGfw'7bc^q?0[k'^oQx/~(k\o|wcm>+gkHzc8:\$c?p, 0s^2nĵAsJxY}k50^ahU+N#] x/ڷ#Ji`f)dOQeQ۞Ve?KH|i9 aa& xAA.Xx7W%wf0ek+l$ o;] '/٦wIϥK?o5w) j=x KʻW9KpJ?/svp~l!S9 p~H?5L'֝?ӌ( o)RMG1ٕXtyc.LB9ѵ:5Ò~~-]y 'wڥ9 /@ //?r̻VVzr0ck3YO5 AqHxw!rR.[H?s `#C;2*]R֗MM KW3pUt´jⵜ~Qtg1nv-rWw1,~>.ݼ,B%Z8\Z֤gtXZ$| m(Ls< @;8v qډ! !oݯQj F jYTs^>n-}t qt掑⹹10&  OW(<Ԁ0L0`?j*Jv2j j2L$Laۉ6K˴^#Fm%O# #$cxa6$.׎}T_ j wH3WO %#0p٣e-:1xt-k:PC휐 ^ļ"Eлr8Ο'KetW5 oz>q8@bgvNqRI9jr+F >gಟiy45ͭ->B$BIwΝO(^s‰QU3jk R`q'd٩l<MmE`;ZjF\ 2" -,+;;Yi|ii^t0WbɎ'T^aՐ0Zx?+lXzjнQ Co uN88C>Ϩ]?,cG\*q5L*W59LP@Aw WmA ۅyWQhp5I?wv2/Y&f%ua}p$wפw=<>|~gF;J?/mi Zn5s='Jlo;^=?; ϩ}YC~|{@[1&:$\PC4pU(;gh.S'[kT7v n#(*g)4֐k9r57s#-k$K9:h5u?^7f6d*eR) 5'9L?k93PCE u~>oH.$5j5BB٥jfH(\yN%.[0ZAmpQC@m~>쥟[_M?5rZ`^jNv2;wWZVӫyN]1#۞{z&!ȥP;0_}^饟;KC![8@[XF{3ld⽸ UaaK:j5 \^@ wu-Xs ~fla!{ɀ}!=R~jQ++<˨k<~G$%@C1<„\p$7̂<&"{èMxƽ¶ZM-lyt^auNjpAAԠF݊tB^)Q`,)vjDȭ5nZ}r)kܛ-o>^C΀‰'[k-TX˿ ۆSoqO[ $owï_{ kwk[R+J=Z{q 4nHbͿxfQ󵐗k/^%KnoQVC))louzW8;'3P,NL5;Ԡzǥr^C+ ϼp*Yk5zF1@D /OҐ5òTt5HE _ Vz58 ڻ`D7i'kdԀd>gH'̋F25sb;F8k3ܽ$ә)/PCC -k'CQCtt@'5j1/[xe`P-/ѨjKdIvr5Dq|4jKa\BZ"x͝ W:Gmk,[ lpat42X"Pdn߾60r é-N%Soo?|ҋA oHrϻۏ޽J&{km%̼%+ƣb.YK}0<4A|k_?j#dIƨ!_["[T\sjp.^xE. j%Jѩd.` yA. gKN0+;B8xF|6ŗ+\Ak 17'fЅ/P玙8c~ ><70 /Iui_8KC/vNd#g ;ֹW[ZQPb`! u J[Z*W@SƆ>J?QXCN?W}1/\8CDy|!s13ۢ莂PMʫE hiH2t5 D!e]!]AOt Xq99C8U>^ڬ9[~< _[5,6wFyk~=T+x* K57{?\6/Y6mkxa$W(0c ?fZ.5. =ɌW~~J˵zfIJ%^᳙{ P@D@x1xz7^Z}_aُ*\p&6(mŷx^ (@bx! xaJx;Qx / /(NO{*ePZURڪաZ԰!9OxAiR/q}@!k+3|')|Uy N k ˵<:XkZ맟J?ΐ.S5=>Wt@ ng.pL?/7~^I WϯGsbU~%r/3R6Idqڻtޫ:.YBxvy?wk,5+Q7A@tKEb<Pg92= P77~^ϏH? e-kxe-kJ?lܲ&KognY;+3hK?ds e턴I-k:l9>-k.[! Mc0B(C>vԵ!tu*ΐMWPC1 i0o/]=7jk[GK7xa\ uKG-kG']mQxӴEkYJ@ ]۲&؀n;-k:mRNn<鶍VkVm9ݧLHwO"g8|=HxemZxV--k-fK? 3iJ?V]p:y7Ļ.(B|wai [ڍ(Kj:+Ed'E_l]~ /] I%E YT9P",XxOrITAԀ+̡ gt5d QH <1p$P5S }6j#GWF M7@x 9F:jPCqm3:ԀXA.|Jy(d>g87N95pך=@ԀA75PRC1jiU!@O1PyjH2%5 daWou祟WK$YXx-jJ(W3ڙW[5KIƞ.~0 /.O> הs2@4vO5nu6Eks-kzN89Wa%IJ%K~^O2xy&|^Ro&3P Ԣ&YF&9lFeJ1 CQg[%lkY;@d(جRT c$MN|Pxq cw 䭠@kO'h(MX/ /NMC/M4LD>)-HVK/8ÈjYl`'g'bb9*pf'<o^u rfo{ӭz8yC zK"᭦PyaU߮{ t1wsn;eAvWl 5a6diP/xm)wIGϽB -*|"jYZ߲VZA _L-k.\9pbԠZ־tS5~zw sh8k< ܭf(P_u@d,0K^7/>V!g @ "-k1F 6kYH?A.>eF[N8-jhsՏѵ 5\^q-k[kpXYZX5A eM(jjeQPuQ8y7la(ڙ9æW^v*XS-k8믻E;59aI׭f wUB />E0s֎~j9ϼNxOrBɉ;ԹvhxE.<@%Y8 ɯ(2 u6YaZ3\jo Q4`*Y*wyiVoVp2LyVs+R 7mcS<(h@cYx}] e [qQ( o/YqfO(y_9+ pc\P֢}ŶQV|Eu/b| ͷ]?6r\'Dj"!Vdぶ5L$ǡV[~ye?|djl 6++^Ka!}?7;]ƀP"bP3ZSoμ8bo G@VB*5R +xd_S'È~LEwj;.`ykM݌^A*kץ+K Ǐr1LdybrFxssٌ~^~N! 5xd}~l"~V&9PoӧGs;PígHt$wNC (8s7ͩ0 E qF ` QAW\ 4f+^gPdaO5FNqXQ^ 1jN?S.MPy>5H$B .goo{jnbeeB -:F hr4ʞM& /Tk'.fs/ZѥRa9aQC4goXxؽKM͊3eKz>c؟z`%c`K7kaޙP. oXe?^O5 t_z᥾~~JXxD ftW"hVze?h%~L] FV\JZflg85OQx1 9/*0s!u6NJ W Rxۙ-[lqx[- Y᭵G]^جa6V]޾}Ჟ>GVxXx!9x3xA {!HȼC`*#YxU+2 ]]'S/ ue?<EoQd5L~z] )L5T[ Z.j 0뢗W g`2/h%pJF#~ُy‹P-.f{t٥knv$^OlL'_|8Ka iI?'og5(ՕRa[#0Ǽ^ቬ,DzFZ~۷O?|*l{wKxsF+aC\H\KYN?<^VӽZV] c@٭{ ɩ r~Z{@dT]q𲡡&5xC q^` z/q+wkF-u驮]0/D<៬ِyxWė.J@:Nu l(GEoj$HF?1j:wvRy=Ht{#*, %zR"BPC_ ׸X<|sWئj F~dzJIIǙkK? HpU"rmu}*9\ IDATl{OB~VH?,H@wTvN(*,o7B{c$!ju+Z۫e.' 6nڽAɁ73ͨx繡]y'ҵT ݲ6w.Qܿ[#*[DFgвvCh{#~nYEv! B-k57۲ײ[2\h0GkqyFAxE t[u 3dGzW\Ůec 5qRB ι&L 5G1w$σ-kԲ6jY>#a%N?i .kp~.g4ܷ-k=EKJ?tA55ϯ5id4B ќ긙xP^?,t5+W]x)|_T/KFk-mⲟY^mFR^akcpmhC.ͽ$,8Ћ)92QI 'y=iWN2p 邙tInqŇ^Rl+a&SsõH@CoHxqś5W*|uB[ [ʹZB)y~2D’[/ {ʝ ;^lLRa^%΂,,U{5Kawے~A:tpC (rF xk$ "Pe>P,֨T+ U?v3Sa03F Ax%kqj%S'kץ8A꾟*^5<8Y(`o.5 +Fs1sHFp o;1zt/P/ϻɠϯQ,4 4Y~78Ayax`^ͻޭsF@X kx -M??N?X $  j뤗3*L<륟K?<ި5N? ڭݲ7FM)ܼS* xmPkYOsnIkcI~|ҹ5̍9CCܪnACApUa .8CYsu[~n6M^N%Өŷ"Z?, $Ox%=jVqj@WC>c$$!вJ??gdq/ZT(Y8P+5筇u8CD9ћM?~~;J??~a4`PP,Y y:\ ~^FoapK?5᳥@t8]]SB~~ҥpM۲5QߏM'Q`q5pُ>6X .'-aҀc/0#e?ei~^`sfId10·֎ u™,6+r}@xExu-4yd0xw~ˊh/[9f47t,j;ax;(R<NI,"^\g:Rj[F{R: ^q1=9z1 R7'xׅD o0 k{ɽmo? N +WC|]\ ]W''b~* k,:'f$ew&^9V{>8z63^R kO)ץzF2~~r:'T yojV ߾?KqX8[/] D1^8LꄥUx3H+KG[JJ?g#YWH)p:ܖ\کp9ݦM?Sɂ.\4Kaxźko{ uVtѼ[ R ~n\J??g0/hiaDGhͷ1u-͗ IC3|F9ZZWa]pƥjFj~.vµO.0-F6IWÐHvs[oY$j]kΉSGAr[RI?5J?81N+6>R+f=Nj{*p)dTli_ /y<%X_*Gk4ރӶ:->g0J|.xHYsdz:w]ُ?Npڱ2F j6~&$ᘋŁA QpُfY;sC?\w\Fg~[C}Nse?S\;۔~F8Tn)e? rʼng(!/_#.ΐ7|'J貟bh-. .JhB28(~Ĺ زfkr0.9.T!okV-Ԩ'!&Q;իrmE^wN~0Z0@L貟nYtw]O-`# U#+pw§qv85+F~/Q,]wg(F{iv/đ5^mG݇Yxe#!95ggd+Ls_y2Zx0x^jwKv)KtIL%Cj0v4oɱ0 $X}3?G ς1 6 lT9,g@緼BwG65%t5 潧 Ko@N@᧟ ja *<8c pإdNVMC Iᐔ@ ~ޗ5g^jx{vg @9|#r(P?b@ 5ڂ!ϥS.Ke /۲@9?oTQC夑ܖE˵ϥWع\~.ޥu6Y6bK/0{G ´]x@Lk( lfp ޮ pw9. 4|a^#e;qgε'qeK~Ζj ր?tYݿفWoOZ{h'l/z/8LgG/]b-~n'`\p.y!I64Tah sŁS8 ^\ Y)iYQ mلQdi`ogp2j3[ B9Fmj{d;G& bFjx+t*l< Ny. >tؾ݅HHz)=J/yQ]0-E Zg~w zIԭ0[xj-jaQK{2!xQÔX; Yzp81gfކ++ Q+,3nq5FZűµ:'pWٮXX@ t+3~N>PC׫tmmN{!7+| dT,4<~מ 5TP%Pmd$,1/Puq8W-jrT۬jY /4jwwVy;wzeeizܐϣZʤh-e CN?}ǷZ0dWݲV &`1Ct^5H0BPWe#Բyj`9jЬaϖ5D aԠ, g |@AֆbA .8cye-"LPC18#ϩh5j5tGӢZr-в֚enY /C l&`}7?7?U{o : (`I : Aj (dA jK2vI7vEf=GOl5ɼ`ߝb)+¹_ϳ`iY9yE5b}-klY˗|)Zt0of[ $dPל5A ]F8;^kkd1ݞS+x4ϡg !a3ju"+.PډɁt.$ӓrv~}?:L'vZٻYNf~⸛Faq ΉL;xpF^iugG& dfhٰw 0r)پ7Yӕ:YϏhّ#+~WG\+lg^a^΂$o!2j8s 9 )^^Na%k쐲9 5e?B짉~ VЛ182VP9`!f8xm5 +<إQ fjx9S]kDFW,$2񞷔w ׃r >1!;`m [‹8`g@s~PxmMݙ.N7/ـ+zvuҠ^+.<~Z) 'K Y-,j{KQxo-ՠ~(PK8DvWHxKJ\{B^ar7 SD/MnN 5xee?[5kU{k̫̽{^a^Cc`JF 0R0N Ve5?ehpv]545Qk /E5T*iMĂ^FխvԂS/~8A `Q޻Qx)~]SAv^B" o>/ୠ*ڜ^*Hُ''vaH<`J=mOX- Z\2᎜SgSx5\ =7k&9zf`:'q A5N?Ub3s=d+,h坘N  3i13`dCA ZzqC"dQx^K#W%,GO<m0jSS'`oB]3-@9d h o\q235}:J%<SoIvֺV+2< uw5g o+wPpz N>I'< /6^!#b$sϭD2+v^Ƽ۷#&lkeΐvO?71Hs d N?=KEk,eeF}9lOx5ddz6^^ `gFd>j7Hx^f2VtvN?%Ny[we=.W݅KBtYzggiK63`"e#+5v2nW^N?J?牷A 8 λ,«Qo}}0o{WF( F&ONq{ Zosy"!R&q~^䤟pH?G륟dZWfiܞvV`C e-Md@dliH~nYnt@;jǔO#xsN?ߪϷרn0 Awq5I?맟k^[w.ߢCâ.LDjښ~^㤟f(c)J?9IN?r5X֜!< !O?Gট 4೉s%?C.&;I8LȈ6N5@ je͔~~J3fXOرcJi@ހ~~챞vܛ5yfފ>goY0^q7*;m z6hKeg`Kq@ v›᤟n-/κש]Gd!t&Τ3'zL^Z[Ef^F;C0WuE@q$eYWoIad+l?>^^bpwUajH@a t5Žw{Wq5/xѲdzW8Dx+'BrjW ꉓeWj(*݁0pp[kxQn^a-ڵk|-P4!E D ^0PVv-|n$kuXaR~ wɭt_wU"W((,Tx=/,P$mޥ7 /jo^f; bs+ҋ\)oXƼH2ډrI91145Wk%a$snPK '̜;-ku^YE槟N9 -]o%hL?8A9YZ |H, V˚ RӲ/m4t:-F &|(7}cJ'CʤVK?ps3Qyps eZN˚ m %sSMjzK*hfӲVk͘yΨ0^e5[p>DV.//ڬ]%ogm]Z}ƨ!_dv9b3K2^vɸ !b\KZ}ޱuA9Q˚~K{LFu(a#8 =& .5^g LϸޚF&EέZ.<25Ziƙ6 @ IDATdNJA^$s~B-efquu%)'^ hT2j}au@ŋ\<3̌TxLp^'re?`b8,9b~)IJDzZ>^Cz.xyf fۚBjr/\駟} JfXx12w>.6e?}\'dK5y.ЅRaP\{[X.PCswXfB - { j/<_2,o88 җ+PK6w'F0gB=#֮oe? x AҞU#?R^l~M%Kk;~QT Byqyǃ(5dX=A(5રP}cet) fsx! @5zKA gzˎg0j@E\#n syg(zjd!5XQ,PxZNq~n/C҄S„Kׅ֯?4nHF '02^B eaNaeH$\PFF 5Xk ;Z"lԀ`c_aA`K粡Dw.fT?([~B-ר|ƠQCC(,d50az A.2{326*駜|N\ C/ )֨K] 8G.6NƋ45՝?ZMNOb_hC#yNuݚ31]{59Ak$4_Wa,v7p:{傭jƻU)R8xHpL& sM)k!z! *.ƻמp+=psv2' }oҖݵ=E738"k o xyOR\PE!9KK׿V@/~qPxC`%aKga䝽XWM-K'2@z<_ l7ݬy XyMa8t`ŌBGŐAjT>e X 9Fu;3#+I$ɰK@,Ph *kVXswMO]t]Ԑez=Kw^ް^axqe+,!+\r= !8$kwA 7V2&=jת<cq5lqPp7CX0gABW_PÇD BnYY1z}{RF!F !^s";uNv5A nY3J^[) v/_Exii l[/6<. %38UOZ/;w$'ɨaР]Ԡ;'^ 'l}\H!;05<5h d[6&fDn{;9WWw^0t5ԅL)] YNA 7d5\n5Ћ.r1jয় zu* J5)C\ GBPC"j5ӲW;ҲVH^daU@arσ 6j [PƲme@ : (,5Gem]^U[Ff[ %] A6)%/Qꛃ˦Iwz*YJWl, 5p3n 5$Vُ~4+ޠ >^.b!d>^CXuw 垏XVUkUqs"a c]Hf/ĻŇ:'2P;ed30aC D0\hC!'`i(}xBO6-.>ᥟBPCA ޝZc6ֺ9! jv`LݙQ  5sݰfPE5*|DC./uxcY'09~6*! ~ΖY~=w\ 9826Xx艗' {轵fr/Z@x'XTX^u!!(1^4pm$Lp(0rMs3`\?UNy]5 Z _+l7ܳ.pzZqw7nWx;&@scw~:$u38;k\n:^[$kƱdNiT#\o oߢcNo&ޝg+cl {v:5k&xk$/5Kv^2""XF]2T2\~^){uD.نdGqހ^&W"ricXr.)!{JɽHikm ;_`#c%@18G_fb,HPxBa%.{Ax>]޸IM`~&`4N ,o n }lin+y mPF)B TkJ?(qJl31+vz1BҪGZy_N?7„7 QHCs\k+SWZ(,/3n!=q-utN??XT2$kgC)s*Km;Ke?eYw%ͬ KIX08nKst~iy6A^s[)XHm$)I??줟/Hxpo 5J,#-Y#yO.ʘ4p5赵67mSx~WG^|re? MSsf/P)p 㝅ܤX x3Be?~NwsܪI )5 -2e?|Ve?ojj'·Nkf[7o{Xf29㒽dzK@w/gzKzj8aڬwkwXAĵ.{h55=͒v¯-¡a5p%$2Yd%ozZ`i[x:分 [ryvy'zeiƋ8xMT׊@zˣljf/9QC2vTwAFA:xK#q\EwsM ˷k}^l aU{:& H?:' %WY;1vo &^D ZY~m.Z ٞ= za 91ݬ,HA#Bq%F4Ĵ,,0Z yM(o L,r7ݙ[uڥ`dWld$#'^ _[o#QV V''r|+498\ox zoHpsz) 透wA 2B J"m HC_#;'.n;QWO`'#˭%kd V8OWrʉɵ4|݃a»d{x5} .3񦨷Dk' QC dwޭ2$VɚHp˧[cq36ݧr_w4^xIxmDԃqS'L±1rx-cEV odzFwYF_u݁;R;.-ui-5gr-/9xo[ ^eGX%gA[p-i-ozˆ{ޒ0[[A NtNx7]xneV4.jzK yn%eAnF-ЛKYToKPɂy!%-Aޒ Vq-Mdz ZA}s0TxgX,M𦬷 ޲-[,NiH$M% Wue-»z j(7#zl{Aω3xܽ \Yk423kC  [7…;ϟ矫o~9ͻ;'|'Ǐ<=}_//Rz/{8_/}}o cf+^q5>|ޡzK7!0 [R[&ΉvJ-Yx1M1^\' 2ee W] JM{wwr|,޲(޲V/ Eϝ(3LO~tOc ZyqzK{yIxczK +,B-!kk9qݭ8C&] cKA}[΂5K h'+JjZrQd( C5L_ :щOx~_^y6Њ,m~N$ޮZNޞ7rM:'ډXY 'i|dΉMzK gz-ᅎ)kuaީb5g(+-ɀzK .1QN0+sl[AtӞ[5P2jyyqqFZːzK^Z 7~ds©HH]o9HVp}ܨܻYuqg-p Kx0'އv.-yk"Me$-a8> L[sw߂D'W٬6b*S:ٝXޒ/szKqWSo -G)lA5=ΐ|`0!-pς r8zKv\3]Lx Nt~dFjPwea˧lTe5l2DxS#VuxUa=񺌷X^S ǡzKc(ҢRPpf-ϽwR[B&$O1.}F_»J6 K#o\zK/ǭlzg:KͰ^x9Le-C7`$ލ[Ө+-S##UK]2˒[YVDWoIDo&8;RMLK?ED':gg>UKh-iqj'HF5?!Q;'%}$^ae'ݤgMzlmzAS;! uSoior_k9`XTϘ czK5 Vej9%5bR;9 :y (`h@KS/mO缹 Ǔ5l޲ޫ$ԐQzː}Roy]2* D-k6nw0._)z A~ċE@I6Xd_zFCA=$F^T:F':IxKqoP/b v%]!jh U4r/ [dLZ6XqrP-ve=[vNk '!+MPCzx H5ܢ> =!rDL99ᡆFvBP\1«Q90 UkF':Ix~uwvFfP`}[R;[ʨ;hޠ v߈3hWݬ]zKZVnM;Ek“{ؙxO\4eU\oI/N4 \.(™@;<<\0* kusF':krw^{6I o!WC.ZÒNp('*Lk7.KٻFfmk'fcN&{3Q@^ QCxO M6UcneQuzL \iZ*l7D}1^I|-D9!| T94Y]-T[B@nk3^zxeH":A=g0/5 zKzq3^e-vM8As_  C ~$D} /v^rp$j.ޯ؆[Vx-}^c!u9D4$֭}Q[oI"M囤x-ezD$[- )-J%Wx:dօ}=t"NtޗJJFA[oC/[8UNe^Y -q! SГrЪl726\oǛ6ܫP- n:a.׊[@qLds'j9 N9mMarrY{kzK~~ otιϞr wV~\޲J?-To[vZzDxN?7eȮWoY olݗ' xŬzKwUXޒSZ>^6d|6lX@a.,RDsfիʹ 1N`'I_[7(ae?@^ r-Ճjo@M5tH!c0O"EkE!7~^d0,84gȬA5LXş&mE':o|P^~_.oSx]z|n)ۮ" ƉpeKi~+j AZaXkB>`2fTo9J cj%l8\_Q‹jkGOx!c1Z&kmƲZ)/ל @tܙ0K]jF':oznz̻Jv_շ6'|ƽp~Gy IDATKEcE3!}?vI?'ȁd*<2;5, 'La"Nt,v olj_ګF3਋g xěJ˱dfw- jHxBteN?5|ZF3A>GXΛP+9XLPø΂d]1j WCj]+LI jaW#Ntތ*}Qڕfw8[m|W8.kzOUPC'4ؽv$t,lN`$7N@!CohypY .5#5OM=`԰F@?Ҳ&!ӠʚfI$щΛ3?tv h⦄TI~9~NU:d@ Բ5cW&^` }vNQ'kvALL'Eycg ]cCw []]S;m6™C.x[ ot&],¯6*Pxu R+A^6 U-v:TrO5^O%lBtg~3F{F y|yWkp3 W A '85X ~HZ5N?aR !6EщΛ_{?zƅ/RR !w[8! 5䇃a-OvghO jLD J6c=7k:Wkj%-wjgm~d-b }&8+He? y-ʫ[(|5?Eɹ_V^}M xV:(R| -q'.e?F K0ɮ:=Hz\e?rhכ[x{^zICoJ-wcH^R|XxU3ُ)7&n )v8~dZniU\_cțnmu߰D'Uߨ_~qEn)GB"``2j[]53WU*Po N ɑtb۟y4% Qjke-$< M}nqygSl/̻1 i iY /)ZPCc~);Ӗw޳++k_l]^|啗gۣ9Ͼ{nϨ13^JK@hYcट[-kJ?[֬ G?1) F `ny+WXW++iy BaLNқJx-.RݕşFxB7{%$)ι0~u+l KƑdo6&~/+LkxAh^[ ǹ.-kN۲f6}K 3qs!wqQ|q5`9Yal)J?@ ]LNMOOO//Vuݳ9}&)η{_aw+^*` I?5H? &iY^=)/pV/N?'Ԁ/- űBOla1v&HV(aKC#S0/;ˀPxuIGyS U-=#ɻuϯ3W_?^Q\{vU{^󫞠޺ߜsy{W-]ak\{7{O|&!щΏg=ryuuyE9ޭի/WO,_jᏭ] '-zg7oJ) |"g puHӳ^9Z~c'KxXjgq׭ C Iє3_x?zڞz.gW5Կ}ěAȂT)c m3FhwL']xǝ5tIVF5/7I%^pXpYʛ񮬮}WW2}~|Fڳ[\]Y]֗h}rQlY#?f J˵յ箾\[^ys%/_5«ޗ8k/>WY͢󓏼/^~loLri2b+0ڽkA}0jWR>$($>ynw!q*wH%@Gocs͏MSnG +r5*^aD\x9.mcqDqe [F ̐3+h|^WXqρ./?|)@(9Ѻ{=kg^?s4 x U\ޗ?_3k/F:Ay_/ 纵U˛^wD6'^ki ʠxT2fkn:2̆O 4zWUp Z-ts-kI!cfinLF !j4LZd'5s؀~puMI7g\K|B3+/p}y"hϖLzU'X&Zr2  L«>aJy_\} |W͸*;.jh1-kYz5`ygqo֔qzPCA og >k`\Wθtp &`W"6 OZcՎZoivFx'wY .7!`ƽ|KG%$Ù/@xW?v & ._M˫"Ͽ h^V0Ɵ~Hv7xG21p%^U^aZȧxs.'u$ͼwؒ:GasiWnH6:ΉomX5jYjsb~(8!axؤQu6'sf҇ܺ8us/?;wUk߬zí{W]Ss1 3m'쿝9EޗÄa 1\]+ꊅCxJ^ʵ^nɋA| ![۲"_ǒa$Ypydfkn|0ܽ ꓴ.)y7㭤^e?ʚ3X9,pk5Zxc1+<+JQS ;̛6f6JD%U؆3m )Uw,p2d eW_S7/,o.{(ז WW/"9Ͼم߾ kR=Q:bVěY&A `#5^Ys~ʚp]v9(gɠW/^a0YFW[^ ~miσKkw9b90|ܤsilDB <Ӧ^ya $u0ɍxm]^~g|gt&s+o!B/~W|#,/KtH=s~ +2%FF4^`cHvYe?vOF~b &wՀdm^Yv涰^_(7<=jiY0|QCg絲5ʛɯhUxm)a\>w3_\3헷];~|~COߤ}z[o9w÷\/X? ʆrҠ|Z js48PԀ^<:XȐ+̣څͷ3j~ y-9,缣Gd7'''Ŋ09xc jgnaY )IkxWh@K/n;ֵ6wnW{輏w沟z~ps"~( 5Jn:c@C"$2Pzp؋ѷ c O?7 M6f"Lw& E +\룆`95t+rܝ;wZ[#Ntޟ8# yzZF σjp0ܥ No3>Ж>YM?'[Ɛ<2 5d`˯1vjGx&fH:y^/-kߪJ4,N7+F]1088P8˾rJ%dg/[`]鏂ndjE魻&'uF':Sxu*䷌p 9PI%$QqqJ? H~܌h!iixSأjz0ԐoB a ?aKFSQC j 8hY+p9A \Tn%QMщD !dfIy"gu5F/Hr񒁬Qϑn [V'2PVS/ <F':Kx),h+oa/.s*[I&8LB}4|?8U~\.в; 2~;~b1j # k~ў)t~fk&5G]/3+o$щx]'F@vG~ZRP;$@t%d"98۟)6GX3 ?r-ENϑ3r1g,P`%FK&DCQCv5ЬQÓ5D':??Ԑ/ ԠQE!A$Q8ySPo?g/Z>un0<Ʃdc 8kh&a;n׻z!g '7}9s򐖵"N3aC-k)(L,3^B ]-PD':?3ԐoP@aΉP_|PxjO5=uQD;k嚕 n#:x1"נl NL&;d,HlT\»N/Oy]{'d(&D= % /+ɯ / wJHzuZ hlGC0^MPDj8cqat5Α9Ю@yxy0\5tDwj YEԫK;82EፃAwp0_)#{&=)&^g2 /_𒝁xډwk, Vcͽ-% -QF'HAf(,:QK IDATv[%e?^ُ 'xW x'/xAsp Odڜ0abbnrx Iyk1! =i~T2 ~Zim}_oE.D':?_}VȈUC # ezB8G`p5Nǡz{bbnfj```65pyf35tI7F9Gu/]@_I ~?/R/q_ၣ~8H>_~_}IҟYv4~@A"ag]R AxK]Pxd-&r@Ks9%ww&bԲ6Nwj3 [<0Pd#0< NyAHp~Na~naK]l}+89: =ߪϟ?Qps__y~ o?2RqFċ9Ҳv &- z!:. ya㸛dΠ8yu#t bݠ]ry7+sz jh25wQC[\<5Lpfx,0^{5Lbq̠˨VWkVk%^Z/e|fͥݻ/ح΍ի0O|D.^P\T֎ދ%],)x|s@=JJφ@4~7C44 34p^w{>9yNo?rsٲ|7|kNNx?kS-<{F}_pOaរ~| _!<S_Vy'9ٟw2Ϝ2|7 >ΞΆlvٶ֖}/l_>Q8 l;zt[_n~ڧ&yӌon΅BsB< RO© qϮ]uwa.{]wwڱc׮wwJwpT}]_Z?= cKK1Uvu-[^aF Jq5SxZ\bq&<yWlqPw%H jHCj14 +#W Us!u4~~eܖ55SM<"$YZPw٭ݻ F/=Jpo>wwc">%%t(-d+|CycY!-I|_ٻfeА䷒Y9wO/#AEE6 :|\)R]>{Ɵ/O%X}ۏtNzIxOTNoeÃKR6%)nkk/x;Eͅ//mGssȢҗVO3?gԩ\^'h/.K/(x {Žc.a /YqKWzUSAOc oiqσ!ea16$L, p2lWzHϿs , S"$ CXbR,wj.fi鹞ޜMa0kk$0뼀 Ŷ]T] 鹿țw7͹7แzK (eU[%$*!UU 5´ E7K!Qݛ06TCC{Huaҵғ[Q]liR,GHuwԫDVI8Iv豷& ;q+z~WXXP=8R#ZuO▩WLe(S2 3ůlK8m}􂯶w}ga= gCo6G5*UO6-4Jxě ZܜKz [m ) էO™0 {X.Rv']^ۻ7v]!C4S_w?.N8X2kHgTx$/yZr zq͂tzAxqNH*uFvR8wm~75*s5ȾX8V]uQ{̩iwj 3s=3sÚ3EipݲFjgvgV26̺Ԑ/_}v҃.?իC85|\dԠ#5xဧ Rxn A5lQip5AP5`8C @j[CjKwO*PXdDQC AjIw9 |ܫ-\uy]{wc*= ; \Zsy3j%B]5X#s"s S'gi W4~n#԰ F^4!j0pPn3f~5]%)D wGv, kᰶ4B ު]vBC >g5PZLx-Pj߲F8⬋`qA @yܲi߬%8.%]8&ۭ]?G|a{5Pxn&{AxbMaִaN4N󙙞뙄;F`l5ܞ3fڮ陰|+:xe5[ ;/YMHx;ns_0xEK>ޏn#{ICIA6*|^xU2 8x\ »y= v5|hry']@!0 e/~%/|78xYx\ 0ႝ KmuwvAc o[h9)Tx{jle aI | @‹w5 n@@h -@dW^ǛH+,;IxR8w?a6zE፵yd' K?7#v'gDu{t1S^6 jYs!X綝sx[G.xV 8C].QÍKhiDQ^ x;vaIvgE g{z{/\W/^^48_ 5KC%b^16 x4meԀYC܀[5T[؀ e3iHtEm[qdiSB^/Y>$Z9CIwr{&Π'2mi>SֆO:z5/Yg&24*m:548(.Lx5ƋNS⍚f ,?. ;ԀӮpxJ!j ƻdi;6{sRum;I?wa_8~9,E煀dw >}~;Ls22ޝzj^aqW&Nxewf̀^!6dz\S =kc:8fM]Z nŷQ5u- ^\&ދzO/J܂]aZ#CI&f=㦸Y#3"YI^ +C=epu\mq;Z Nz KnSQs\C\>u*lOor- u f  зjd`շj'&_4n{wU߬!۽H>^$WPȯ- {8"v {+iyZmq"EkY;.HT\Y_ʻ ɡa\IaxEzy-$/Jg eUX>DoIqhUX.xs 6/[㈡Au$^`%C@ő(Jxj 7PuAxs>Ļ<  ÐB.N%ެ h ͸,^C2]ULgP.hZY;D g^J: {k1wy8T-qonЂZiBB + u$;xQqWzB hpG 1+ nqwv eWn1ݰə K?/"Lp ,+QCت0#5S4^5Я4ܰ0t89CPj!p!8mcfp$eI&1j`30j /Pf8CC8FQ6F G9,75Xd18950GPéTd0a׮b=5$ c QCi5A Xq_KOCz 5$RpFvRs/pf.i/ 012\X @iwx+-#g`no ͽ: w[w;'<@I*ZT[!zڻ ep222~U3Q]lҀ#5(A Jw#8fywj`gz؂ mNhy5_5:gkqBV}d:pB î%+ðx8\PC`I Pm]}&DA$^Ұ}{sk>rN?l jNIw. t @ypBJ?p#ω3F , #jлJlryz΀&>J?K~hܭNR]5,Ȟ0lQ,Ύ]5 lƀ8ch НZR["IkuZ4jxD `{yZ`(,=Rޜt?S( cT9- Jxk;^]"r[<2P,ɤ~ciI%áɴr>,Lt[[i⽔e / s/I:;x7&zqk4?z1Ķw+ 8;c0^ZT!5KxKX{Z*#@I%ӱdd=,[w×k{W :RPÇ3kL@. /,[wȫ-g̖ђ0_e›mghC.o.5@Ѧm/DZ) B17J%cemF / <7d<"nѽ+Yv삠GzbQx,t< h^a 8xp`΀ƆLJ~AsAscל`?ڳiP2l|LXpܤJ?y>j1Ag4 (a+m'jC|:6NMy~ݤKsI̒,'|~@'p ]A1%v,$y5|! N9~ 7!I?:'nZؗp*%RiA~17&eq#{S9 TV9!ΰRǛ2~^椟C$IJ,c%a!!@v g*|V4HH6I?oҐ˜e-@`ih#ɚs[i`+RkK]+|Dž]l8C:'$Q5 DJ?/M~N0 Sss43Wg5$u 뻐3@JCWRbrsvT{y~O9ըǩuGڠ^cl(yv!uiDv>&cMYQDSXQ1jԌG Pc,A^&iTr դ𥡑 ny:9{eϞY~򸞵Vtm]a:0`WX^):\þH~TCdOWc@ |e?Ќ=a[ؾ *~.܊.I e?EJG\=^]#!^\xd5= R"x^O**=a\T;=Ymp~TONRU.uORlTwɚ^9Z[M} ri&,P:}?qጿ@ekpj'ԩZ YTO:<`iv1ݿˠF{gkH,%*Ej53؎_&o`CYARD雞{^<#L?  Y!痬ϛ~h2z~N&>j&E?]wXySoI]|x=3pQX׊B!oBC?{ %[n}֟r1xsdAݙp;D?>C7pxaj8ӊ~O-@$l7gVI.Z$9O(yQTj36M?a]/$Xw~~ F^_azA~Nkk ÁyV]Ja2w8 ɨGI{w8F @=k|؊>ؼ ð旼'̽0{/ 9.LG*Ay 뷬ܴ}s̒ut,ܲsnYg3Thxy ZmB5'/AWܡ8%t0 ûR YlZ 'zqO6)>@QUom58NnDX jwxXX4^j2]zaI zVInʴ>CjVC%Y l[_km 3㵃.t?U?H6*-k2ZVV@VMp̞NK"vR`UV" 0sY[ eDA?y4|(~-k9e)Բ&V:X3-kw ~j8U-kW1ZBAFI0QL(4Da" B?W>Â۲ CVH, s۲Ϲ2 B$S-kyjm85M?W-k~.zpeN0) ȒUV66> Z+>ZQ^e?(eѥP-GJKkj&Vս8?a&2^ ł GՆ1-Hz;(Qs3e?2|`,.²*^ "jTծ,H'űe?.["{Mُ #夳Fpā§آP:ggpe?6H~Rq32BJm-qtُX ѻuWk$,Ke?e?>5A-8_"LOa 'n>l?jml]>־@j1_[ @gXA j .ʾYIi~sk5` vm-:pB52|T[ 9'C?w?CjhhbA[޺hd"c5,'~>pX -s1dW؅zKXX >\ D?7Vá\䑝 [F`}.&9s4 Z = pk_\yMHD$Ke?p5;By5[./ wOB;)KYi"m 'ˠ YF"5\ .iy&xۼh*3h j ƐNr13son 2(9Z{~(T2]J ̐q VIOyTR(Yx~%dx_ (#c6PZңYu9V+1GkrFQL7{N 0/mķ}ndTnCCȬ_C'm^O)W묭=yC +LͿزF"pU6EY Eaύbv#Io}`a0u@™5ZH}a>9n WWe6pq8 C1j5윀fLNp/ S,z`51KdH%k%@m++*[1i8 6(o;VG #Am058Bl'x6ɛR>~)`^ n.W[Fw H{5[ jMd5 ;vWX#ûC?Ή*c5Tk5ݢ(yl&s9VCEiD~Z $Ánw= <*ܯ~gib7E?7VSAY V+h pwKHl4W8;'d-TyBj]a$ e3\^a*LVC[ NÚg5PRv[+j70ZΨq3#/rx顄Sd+lWyXC@ hKo5ൻ+\ 'k6G&Eڥ6)V!.D k~7(/嘲љ+k\c zwL2`_]#›8*p+.[aW M2S S.ؓ?.vñtdEzK.+e?8V.. L{F^aS 8bsVYӀ|@h oM%L9V/,LI*w\Z.nye?u0֑/Jx/'k8f;e?T> Dxo,- e?4V~qQd-Y,+L9 q A|O o 'c58Qhw&sdY+s4w֔ԌN܄ea 6ܜ>]I\Lp@@b~]f .p%i[ҝxf2&sCaɥ5jHC. T;qGswpnIV%s$0+A2Ïjs_q#4^9V^VyzUrsa ~Ș~. L^ՠ<`c|-y6N4n 4 >CwWsȀ扫'-Rv&PKg@/X C?ǶjZò:L^f $0Fc.Dz bdy+3o`,ʐE vLF¼F{<=C (܅~CrEP@a}ey+ߕ`2o?Лhe8se5!oY9th2܅]㞰ǛM?0{²0h[BTwjYRA2eͳ:@2춬EY .[d5DӲtk5ckYKnYK|k5$lYTZzt˚fpT [ ;Qn[hg"Z eX n˚"[<߷:Z ZfpTiY#UkYca0~[j $X 5~K??D˚C?qW( jZִY 3A|U;Dj86+}׈0E@Mz 5ygtK(+u+cH "P.2 *L8&xGǠb5 ggV7vP ~L'jN"iׅ/:H2qtwo°^6/'v{upXxS{ 0kzM!]!Zm1W\ H.µn^VEgVV%x2 &^ ^pw1Ƌ^};Op[N͉0 >5f^alDxlb+];A^Үe^T- { igo[e4=PSd3L'xdॷeW /.Nd Î6;>Ckއ vb$&G5f?^Zz]t7P{ uS?レ ͟yx)/u?g熗p)O'_?! ^pbv9 ?yF /টKK^/_~0\33r'뿎5q|;|]G=|Sv<N(> 1;񚆍ෂ\ h0g~ZE-"m1?+q4nͭq_/ 2a=ΟzGZ SOo Ʌ #WwU]cpڟX_L?(s~V w/%(gtx[꿛Ќ7?ͳvg9ҋ _-/w-/>\{>NN<2|A9Of0NV30PS:ގ'l( hA2+L6p炁8O?7KQs4ޟ}ndvV<^\8D?o:ϥX8b.b oEϋEjxNBX2~ndPxʖNh2;R .ܣNaTLD9!S*,Iv\-qWȐB8Հw7v/#~nW'KiTϯqOx{8H2Ra@Qs].sfW] }{k W&~ӟ9g3O)[)~΅Yd<ܥ8\:ݻ{dv%Hx-" IDATemR9a.ic&4 ~y~N9D?7 2&0DHs7jĖ S` aiy.FH%NP;cW'疻+ "&.P 8l-?E~*!^Cj`a3ĕ++;ÜjH7*D([^"C5M0 n" dD mHxskY;YނӦZmY`C?@taj;hYhPqW0B0eFe `TCW`w~^GEaKךӲFaA ^촴kـȡ 0m{sD$n zܮد`3& $x_ii$fe ҲF<20 " kՉ$|}:v>N~ paZ!`qPÁ2ν 1E +$P-^KmWR^a$žKgU`qxszK꜈$ ;սǛ>Fzth,/L$+>,No4( [,N( G57+>mI޳*L²]SN+|x񡒻/dWUu:'jZWw^avz/G#ɤXX~lS*.nM "Km㽭{8wNl‰9 1K WzTpek#RؚۘJxg&7P߳=aTd`5Zֈ;ӮX D%?댻  zjY(ZZ(: =;lϹ)`xdb5ΰo5H|7~.VCeʱe-~@{duضҦp5j8elNeM}AnY;ݽ5:SZWd5x u.eFp[f}5a9[ yj-k=QxxAZ yUX-PHPjp_Ywi9 <2` 33fz''d{mtdY+ e?+Y 4RKjKρdо0sFg$;eH ~KӦz[ُwHv~ WQr<$PV^ۤ~ydMNEm }?q;' jU.\`_4sOŇ]]"sb{y[ sW ѐXd6P D nzd0JP0 TsNz=9~˅k*|~PxO xğw4h*YgCWW<$j% C7Tr{C l}UpaAa. >i TWm-a}~Μ-e?gZLts¹ moչ˪0-OTzFܜF@x͵9;]M3Ea2ܳLM?Գp ^6.t]xZ b5X;p)Qx(j 7~>iIZ jUX ΌK: b5o"y ޒ|܋k~VLj燢!D?C?uHE5 B//I@o B?j8E?7Vނ6lDjvN^%y >uNZ FVC]հlc5l@4M?Ac5AyUM<9۲Ў$!g`fyƒ c@AՀHl5X-Ӑle?#t"(0[è'kpFvo0w^,G'L› {e?mg :~=a['kC!lzHn.a18~q*9o^39T?[]S[KVWlQھ&r!U^_Zv{{=Rk T[e?%*`Tpc@!n\-Kނ".+T2vPpg^a&ِ)'P^"~v(IZ]SgV\VceUd~5gpdih5cBuGWʅݲ/pOz#=񾲟2Gx`tOO oc+2q9!%3 p!~N`2dfEx h5 vpR Ͱ^WDC%@V,zK`%VC8H|/ 2>`Ę>$i ;'(i8T2; Q>ߨRwB5R[>8`/8pB5Wa3vNUk-0,VCz^Fq{3@)2K?Nn~.AΉ`6PA|C?GH wΉD!sW_ RaxEeyI0xIvU4/h-xcX |/p g^Co2 | ѐFACJ~f2dy&P*.Ti~39q|33?6XnnovcdSgH?ǙdҡWB!i[ HYxg&&fxmyU%hVeZ 0V H&3 jp|~|j}?cl5sr57ΐjhZ4 cvB-k*we-*c5y(͍8jMnYm܋c6ՠ<(yDZՀzK[-sݲvP-kjP5XA '5bz=I[Բ/~ZZ H?[neMjY{# B?gX NVZ %@*$VÙS˚@x\[ <"Rղ-k3$}L ^P^߳'p䅁w0jť ^S&j ~VC) $Wn;Nt6` \螬ziޭ oGx`pWH@%C/7xsJ2l̡J qZõ⥖KMw.^ d>-j`ᅞ*LѬϋ<"1,^a~ExMC .6%%3ZPngs~$8L?ĦB? D?/5#,6Y^t~^f =^Rjuߏ:NW/hnu%C?»H?7ExyqW' ,wn; ^:|ܜs"|.+(B?gE Cn Fx~N;aFx9pNF{蠼<Ey~[:0HS',Fj@9, -kB?OnLCxˌ-g`4({B ^W KFuKK|uo]xoF䮰J5H<@sC ^:T{o 7+jt,n&)*rC)K^4^p6eToɽEV˝X=%]yە^ay)ÛxHhpDvIx3u>7+\`zoDPo9Np¼@]+lWRnpEmRƂ+|pl+Px%n ^ajȣ>Bn)ڼ(gp,^h0-k5,a9kVyHQP$|Lϩh#ZZ hbDrMZsCseo.T1[ <ܲ# L-kW,7׎Yy HC5(5π4Sɪ0X vNX9AA9V9X˷sxx]X[ H?'mYKj 0asMRޜhiB,ψr&ݨTm-^<. n$~*ܲ:`Se?f]#QLݖGƤeOTُ-Z]aufVs:jSj()goOpéN"TWZT1nV+Q+%j %- YSm~mV](4DC짳T&ܟp-Je?")v[V%-&S Z1c:h+a!~Ӑ~ ʐFî, e?|VhzZ}=mF]S@O~#(N~XqxIMZ.[kmSe?=8\{>]8^ Dwb!Hh SaӼp=td,kj[:V(0qhgMסDZ 9Po9d;-p[.cxgM^(a2%a{9KF>Ja5(*ٱ[ӂ1pZIf-lN%Yd!!ޒքiWdh \j|ʒPPGZ '!jQ) VBja_[Y g0V$ˋN52Z n PoL54ލFZ $k67㇬AJf?;;/rfd%Vx"űw8`N53(o( `-5W$͠ 3d܅ t&.Q.] {vv %Ko5ta8CZ Mcj`94ˎ\qyO8d`*t 8Kewfɘh M'y-k'^2o<diYӣ/mWleɒk];glfs"fEW'dMV VCLiuDՉ@keEdu֐JƑ#@J܀вOH2xS]z'y=k()Rc7:#BwSfZjpFC84B ^! ke 6 6dAװt)tL筧 dxX:A2A^H, 5VF QVy 6ۖA\y^aA%8Q?O} e5^!VC:½MNd5HX 38xjqm5ž@icuvŢw,L/i%Pm5̼2 ' - %$V] ЯY>dp""WV[we5ԡ2.G gk![Y (˽¼)L[QXc5V <2AXjH+\ wn9a rSdI߇wzz}a$dvy=5D^5dw$ED[ j3 ay缹N5(6\\Ah@j|'%$E0a50&yl546#j0ŽC-f$[{+d5?H?4DT2e5̳E1J& d.xVCJnڔ@o(Vnilvgi8!VJ pQ^Z<T ) " jm5~N/Ftj` ȩ7[ ՘%+< 3b5CLfjj6kh3VC!#ʤux'6{᝜v!.:P` (yK'j8@ ^(1.-L nC#ce-ٰ  .F_|[6]ޣ$54ik0T2D!@45kf\S6a:'(CHD=DNHPυJfv]]Di[xpTX8R;Y~ı+*dmA,Y|[pbA )2ޢ%$h. K`6S @8-QpY]+`y .>S@,l3*|UAr`3*#N"휐R6!]ڛ@} ,v70ɀA?Ɋ0=ڙ0i`0[icHKCuw0M2dĂ,,xm7B8{L=Rpy <0=JJ hoʈ~ޕoj݉@ ­g`$'o;LL<wk@9Z ϩeeB?V'w흌V@r7i0s2T|73$k(iP~>d>agpV&!~~ }I&5?I?yWϯ^N7x I5nPlm($Y Qsk5hS9jHCgi>?~^ܭCX Ր~>Cv쭙]4gjuCo:qB1zp $˄~.X r;'hW,jV`_b{3XC`Yafv}xJxOA fY8fL~d$x;KDr<áW^Q*L~b`U$Kw'rjA̫&N58Ϗ[y.H]r)vUݖkyj0Io[HM@tLNeo31~-!̀ϩ`xK占\ϻ~!9+nk54q $ـj~^@?66DgZ_`W9q] nS%μ8 5R C|xwD.; 'ZFE~n8Ҷ0koUax2`s c', Xş;0| 2ǩ岃w++-ZΒi^kW Wc%Ybt[y $ygJD~z0 K Ԗ2 V D)9xn[*2 8}s1x[.S<:~.VC~&Bc&SpϥRiI sjBy94,ߣfSlm5 ZY 6 cC ]h;D?ѝY^ZMUZ ]H8ʫ]ȡ Zg]Y-k>CB9 [>bS!3`llL D?q02nihRs\ Uύ{^ƫ.\%-kL? #sdEՠ\y_PH7В-k-- ƱoBL-kR:+siYNY׹~dزƪ+Qs۲G?ZNv iY9k ;Բ"nZW#nY[˨@7-kiȶ^Ր 3X$nANpGF>^2 慄WZ @q@lOxG 7sE#b5 =Y_fkbfV#F^J5PnkYPl5fI)Q3,][..R,!K?፠W#\zf~ _(Q ബ5CDh0q2B5QxWõP˚rf,7ײ֋13-ay'-,.c u~({~pn^a*q"PMy~RR(,Ne?,H+lV~Y2i- WsZN bAK ޫf]Xd^ašT/ .adTς)~P`t ^ ~({3d`F5 6ZNُ 2wAqki_zOojaU `=i8Ŧ'Wq{b b/O* VC|bemcwx<1 foh<L+y7~JK&7ψEEag\<~e+] 񹩊x|*o Z?sa1uMM擹Kՠ&^ʒ>{U3咽=Xo5H0ӄH24* 3" 0pKY $ZP~MZg5ZQ~JՐ.VCVCZ:Y9%2*4dJgvr !ᴵNGZ '\ Me8Րho'NՀX2}]UV&x9?4jy"ᆱ$+ 0.P|ؼתp-M!̸[ωŋ-k$os߲j+觯 XkcսFxbXRc+OR,ioط|8>fOgݱwr3&ۉD6rjv ƷN»o۷߼ݙ_: 5:P٧;'s[`]Y_f=$|E[Q1ӳ~\ɽwV L-N_y:3?j45Oǯ/mW)pEx] 4=|gcvguwc7NjL${?>$xM\;VY['@~ & Dn [ ^6p1c ^s^a"p?ZkI[bJ^nC%Ɖr..a@<2]8'x0ɠɽ 3H,NHT! ;oMn 2@ 'O2줻*`E% H1eUϽmpo~={Iof5#@\# a5 |@-04wLs[6Qtu]lt~Zxeݣo_>ZZڏu/n,{%h xe,եW_ej ˁ.?_^yދKK`H^|E_$[_> bN~枯M~6!s3Zixz I`Xݞ_y=7;1֑`}zd^𷟯mmnm #[o_o|;[=u3c.X}o*#wolgcwmϦlnlݞՕ/6n5VI5VÐr\DY sO8ҳ{γg?:ěg|ZyQᦟϥedI8gH ޲[jdjP-k k:f~-kb5t`59b5Xywq ϭV {nC3d`1]dj Y]հP,ijp-]aAfkMd9> `N sKv۵xI޵p&g| M° {_ǐ~lf khm{/0}.xzowo`}i0y;j9n =lbIKkޭ~*GO|w} ٙS(@>'Ux|l{vZvvcwmoVoKwn?[ݺwok{\F;7+2V޻9߳›tw3maw7@xw6]x2;twsw7xmmw}zܝ] ^,?⦰?xWݵ#[S~{Wڑ_摧`< bq yv%5@HH݉ZUqW`-b0^e?J}M/ѫ21;R E %eϗ՛rNvL^g+l~x{1{WM6n^6PAEx]ɕmaǤ#Nj k%K!0.X)TS,,6FvN<5NfP/T~(NkbJYYT2(QT2% d`=#e?nqe\lr]w_^6#gj( D%noW0'}_ֽ۹ҷo7ol|ӹ@wXyvnMW㭈/nollh1;d.> ;N_OMon g;a!5C?7 .޿wآxʿtȏ~+GVc5`;'(Ks4xI|C?'o<խ`3 |ܡ2sJ{$<5L?µPL~|1S -v ϥے@RwxW') .s]:ܱ]]wN$=I=T7QI.6<[g8j@ B?2Z /Sl~>?֥ ܆j{& M`PWsAFOj7ˁu1+ 2F_.M7GmE|.ǖV`gmsݰ+G}{i de|hs=?=3f sv}4+l-+NJ<=CJ0 ݛ+;/F=ьẌõŹ<~=xⳭz"o>D_߇!г,v_Zx);56dV+Vl»O_qīהPS%ӯ+|^HX G1 I5[Bqe?$+7^^롲pA~ T 5}4LzFE ٲPb))ֻPlӏoZtY @aw쇩dy)/d>!TQe4.8{0.-/~k</W!հbowOcÍːjXT}~Hxc/w˱WG^Ėv_ׁB<'kpeNNLƛYY5qc5LN5l=፿YY|f;k+s7wg76on}vv}M<99 \@wTm.~sc5Yxg*.=}wS 1=^sL^u]aMH.?#h1.wϐKt0\~3h3 U`;S9d{}y-j&t[*LD2@Ѝo7%}^ND?>CɈ~~=^s&~ VMp4;OJͪp-p~^'sđ9sc5 ],s3,`00׀i!9x_HÃ`eyB4"\ $Yh%G[ /m  R bxD2bM7g~Kv!\ /d |o/Ix‘K=OњեAw=,a5/FFyGWw4vtrese4>6>dܽݝ7W 6o< 7ksst85 n& oE|jT|6o_m쾞[z_+[tZc:NX:\?@wěCVٳgssSςG2 LN L??):!;ZUe{ ("HႴFո{״REBK-k>YpW)8M!SX7_P…tZBu_ y \:'NˠK. h GiLD?7C?~5"+V~ae؈~΍H 5/.aݖl/\|dV'QZ Ϲe:s\ {k9.qjYWȐɣ㥵G6{`n.^xy  )0fr_| o!z*8Fx Y1W_ز?jH5;311ѩQ~–~n'8Ax_}&7= 1mrlnono0nL3vp-mmzwT ]Ytsӵ'dLn< z // ?{s'枽y#!A*ij2[ ^*D?w}c5 F],YS -l5𒰱]aM?/{ b5t;L~j uBYRI5d5ᏴRՀVx}wB j0+Z>xϠjm50 ^Y`TC0z>CTr7_W tom~7k{_nv{Fo^n»@&`8˽w=/»27z=-(ŋ`}yoϣ?i ϦZ˅`mz~F\[JQxiex+띍]y{geggcsΑ[+s7Aqwւu` yWVV?_Y8ٛ͞[Ff;{V__EXY^[tf6Z whqvdg#aH&;:4.Pwosdc0 /Z pv|-k w:0 Y . NdnbqlYJ Fs/ d]ჵ+&p%\ex=1M%3W{# j(!3ps$5Z= ,>RƧj>v& g@2NCg'n~svռpu Cydi9]5(pO:aJ35hX ~ps &',s\V-kZM?I7 Հjp-1 sʰe 0F_Uah""Ѓ͞w}Wk^Bp&NpaW_>5>ۅwimJof޷=Z]|G?սwK*'֣$]]cxEN`=EY+H2X8>z|0 lttgg{egi|v;=gv )`M'gl'nl﮼Y_Gݧ۫;kP';[ sw饩w׷/M9\vjz0^ݳ3嘼GM˰*wGx_V;:zX}G=?{mjҽwhO bqޛ7^fW8dW[8npz^ۥD 55.tzKWo ^npB,Ng?xTp;'trd'gx^a3ұZ1 Exi /,h$([-jGVh{)R˽ym8N^asO^avKeYw."ڷܷ[~%o+ Vw7ݥGc@,7"<_Ba:6 bG߂|alyxy%Ŗm?ՐFq<\>e-;Հzv"j Y(2.؜xoj _b]v=~Z׭˱/?M{>Y:/|}_~I>kxǾ9o}H ?-`3B0[l&JkhM j; lMi2$j2!@ ^X )3,N?j nkBO!oAH-xI / @\3siL WM}cZ~Tُ 7aُ^I;:HOlvNKԪUa8e2 ^tv%.ODtNPpDOfkX$Ă,ErI8 L9Y+9P\Ҳ ^a)5F-/v~X`Ś#ᲟpFE4ɮAwKƟWX'[ % j+\,h+l ^g}0lkW44It0 )7e?!c YN&xmMJ.C‹.),R2 v1}[[׊e@nHT}YcXOx8mc#; 9QK?X(LR>g y~!pi*DI;ߋ_< 6g*k~T[ EBovey>k5zVu-b=aX X !OXϯHOooa$Y}!|Vdb놭}V@VC?VÉ~+L?ek$$IgHZuo5:' #E?Ma1VC^5WW˰Y yҠD?Qc < ?ם5\jzaDe9JDG{a & n]u?h`H /,e#YXn9e?Pl)[TC;;G ָ2z3fpO) "U =DxG /Al,g(W+zWϸ PX,ɔKh;La$Ƕv Ц1z)Mglʔʚ.!UoQNJُfw7S,%x[\PC /Oe?G]`D /tExiU8~t׬k~-vᱚD«ڲ('{xBZ[*L'kv57 Gɚi^X䱗WYkP愜Z^')&̏3Xo{j쇨d'T Bl:X 쇸ʤJT{$}^8mW2 3U]+wN8¬?n9dȠNas'/ϻض65Žh. cgྉ!ޣ; 肬ܳ^*(@?Gm}?Ҡ:'Wc%95D?r7 .6\1 Huz kwɸkz[ݕWz-%k(7nA-Y3x9 YI7| ^aؙ- \b3.0k{AvO4hyC菬L5ؘ8 )'s cpW<^6!PG^jP\-n L?aNgkDd>C!9~N6YWXρz ^[ ƮR : 3g+(X.ZYIs(3HZ3.MO?|Cpb][L3r+K-ͪ x>tNxVgה\|jQaZ[ 9jc/d8w|eZj?\Z/ 竖5ô`[pmn5 |‹h #sj##8,5;R,@w^1xMp2X 8*A|\0‹W83p-ExM7g,1} Or.>'gۤIᵽv^aBO? _>/UZo㤦z©j0+ ÎK>FDMPo)^a!lF_(8 ϐ ]*0-.+qӖHn'M[' jpzOS.x^E9Dxmpo5F ^0]!  ~(#ZL\ 6c 뮬<'g yNo|W ^Fm^a8T+o o [يF;# πyzKC?'!~>C ? Ao-@̴S!-V(yf $[  ƖkyytC9\+4Ą :ҠZg7H??O347.&4`ݾ2i!]4tAe0ܲTY9TGlPxX.PT ڀ0}~nyx=]zU0 o[`^=2m¡oަ1W8WIx9ވ5Dx ˞e?(xZ^+K9^=t9Ր~Pxm-",Yʾ.~ X^^.nTH2+&Nx uWxM ڲUW8^t©SC%x~p"ߔ7aُZ. w+^avw{-0 &?h͒4ځ^tujHj9[j9P/y N,d5z+`-C" NVC R%?`O0`m&ޣ00FT*V `5;7IemI g`3D/FoUys(! `59sJ3h9d-VfgfRYy;sqzӝnK~^K͛zaXrK?gWϭ`!9KkxN5Z30?p" (BrU V \sܭʼn:)ZKDo "x &# 9Ґvg?0A2C?539mxycN5XK?o K?'ys~~Nk0s%̾}9T @wn~O膭 \>ŷg(*5sF1oQ0X D?իeN@AҫW j+C twZ G]Y 60Z Mc8xj@K?7.1g0]c53We#nQse5Dϭs]ajPo9Nаc|k50z Ԇpwi.5J^TE3`:Icpbm5Z!Ps0[ V)N6Kf4$ՀVI5Y,aܭ'A AVCo5Hs3VCkjs`X]x@]FG&sw}Rk`R[ٻFtewx3)Q6ps$%HʆWN%aՉ!;񒿋~c4Z :[dv-eہiB?c.HM>xK ^>wjY]~^T+bwxi5~ޢd-b5صc-k%PŚ 'Fy&Fx3OLsҲ ,\|5^Y5AE?A0:,}~n~BEkHf4h$UX:Y^ddizhPtHǕ;|a"4\ԢQ?҈>zr$%''y1ep PRC`ʚ MY'Do)kSB>CלsڡCj{rZAMY X )kȴp }j@Z b)kmVO6e?ͦ}OY-}O?@MKV^sjNY{,0e-h5m a3o j}6Lp ~'N<;, ^^W7k[ r}>ue/7X㢍qqa1Q9 d7-z_XodA0$2hs0ό>އ[J枔2Sٖd5=WOރOɉ< }6w-f@hlx1k]fޗ_'3\a?$*,:x 9P/o=$!Vք ట7t~x +jY-0͝G~ ;~,+|g/ wa?w^F z؏}V3z؏X_Jk{r=s1쇲 )L,uc5=~WLr1gO(2y[ uInY{_HKY OV?f IDATph x(AAX 'wͮ]5!<3vI[ ҷ"|)}έLL?祮`o5 =[ G VJ??JV+lD=~Ҟ&jPdOܥpb p*9n5tH?7h5:tnJ?ÄPtc5ܩ] d5wH2i5 *D,Yՠ=?ՠ 9Gj3@7#UVӾ K]?o5/\72ĉ~. ݕpwsj1^>WmjxmHƸ ˔30>xEXY s#hpXWvrA)ᄟpsxi7^ x{+tLQ TƮ\a- k=%TowU} GEkk'_U>xeG&G?;x24xE /!WKwe. [յ{Sf5޼{o`\~jf5=8G8$ a5<"qT#ex 3JĹSw"W$x~D /q$L&6Own{1u a?;,q$à.Oi83S8~D$.'-/7#ĠKۅM;x{IR\aU[r ҰPawѠ0/u_Wb^[ֈosՓ*^mV^=}SWIVmG~}U8SXdWV{VaKaK{(4u;&n6wW]B4^?$qDv\%rvsO-o P-}(7qL?( >N?s-\*s5qH2D9|wSX6E EvyUnB燢e*~~!1R^  9bMXdؕ!jx3Kg:3a~N'3'Paq>VG!EjVJ?d<R->~*aK?zI4~N"Ar7|;a??}XT2~̂gNhWWArc_}UC dꓯfg7>xoq(vZg'8~C */>͇O|=!JfF|UjX sa5jLxEkNYVOjhLY{B1?j~>e-2ŨME S#VXU_MYͻofrϠCSx+VVSc)k}scpV!ascʚ^;'3QE5~ǒɝzۚi5)kv:ި)kjx,jx2h5{ӫ}3 5jgxH?9!:T gTyF0ߧRx'zɮ~~Jve=%Cq }P0xO[8ajU. ؚϟ Wm&> |\ ʡRwxy9-kH? ~IX ~!Qv^p/&#!o~w twu?NϚ%(LJ 7gծ)( v2!秪A|ns⶧ ~̛zMFKx /+u%xEKC)~.  bޏK&؉ŵGU,U珶W枋,2 ߨE2WbY &x);x[YKB~)ji8,&<#OjiPU7s7~,zuU;õO}@kԩ{J[ :>O?dV2'J P *> ׽*H?O?A֞S-y@PyTKܫvhdߺ+o"3e~.j^s$*\MQj+q J?>~0B!&w dLS@»f_ y1mr߮vLtp{L74eMԌVhi?} N[D'{Xw~~Ndjlg33纥A>iyĔsC~.7ON2a5p-6~E=j,rT2O#ݟQ] ψVa^=v"@ U] x-e@i+|Bm[' =i?CCj¥{TwKsk(DZx;llhkkwu@9yW &)dHνT2󆟌#~6ZN=WUjt\w)c6+|̜+,\a `*]A8H>o7jl{'~P/y?WX.#oPn@~8{LۼX2}x_7x'O'3~*\4gO~~=eM8OY;!sZDgxT@}s&*kd1eSGiă5i5ȽkGH?M6>GO$lOO2 MY1üWAMOYH?+޷xVjj#[E~.gIAsH F8/9CexzehʚH?Wx_Vþ^2~ &o{v Shh0q=v@a kkWK7S~[rO?If4/'ʚx6s=g1emh)krq-~ B&ժ)[ oOYS.iLI4k( ?臒r0dhC1Ù{RE4RTٰ@ " D ׸H2bD*ٵHf,wEа#G>U78sfC&xG5+5?R{XU=d g! ]YB^a9~gQC5+1쇆9d5v~;uߧS԰wjU'=pi3~Ħ ZN{CdD$n[E}^7P-՞y&J v m5{+|ܷO??eD}jЛ :Asm5zga55ՠ|PyO?~opGGv56Cp8+vAFI{^e5~EW~nϠU#ՠfn5bX wVÝ(Sduo5[ vm5sD0\ {y$}o駟sAsឈ~4*܅pRjydmQVcH?ی>Voo5LV1U3r^<QϜ8x{5uqLg8}?">0g%̝[n!9[D{C[ QJ:4Wß3ʺV'Wz+'.us{s2WT'ާW&NPCA1w≃)pALTۃ^{(+:xzEl}OsfU5ʸvL x+K| 2,cwu"7DWGߩ3xeپi6,`1Gp{(YOa17sOƷ KWQ-cX._V#52|r؏}%NF~؇".\AdBXhҽwͷ-V(LT0 w"0W1iw ¯?fH \{ӓ>~ר?[ Qd'N^74s"4 syypɟ:ṓ~sdn 􎵻5W`xa5y,νÀr}ײDs|a5QsU<̰Ήws}^i5ybDpjj=d\_ 6GQVoCVE~+Wخ W:Q5sn\̹o 'UHشvZ4-!!@B= j8ڮi5[ ~ B7#A{h[ )k}08eCL&PWQ]*^XkZ ϣh;d5sW  jhkij8[ ~v-ZY{+wH?S1>ϥFj HVQ6m5Z `}W`5~VóUjbWơ?xa׾ՠFYJz{i5@j6?Ԕe5s7!K&+^7[Do5<Ki5 >WXMdYF*aYGaceX_ceD /!VaB8!)+_.5oAj=3>.ջG;xy/I=E0T23# ^H+ +H@>9  k&ЏǑdr*G%@Jkʊ0#x55mO6 ^=W6O?W9?WfNd{+K`@`*3`YT^crVެvY1Ysv2 MW=/ Ikd1*Ao^UwC3' ƹd/g+Jf0zs'F+ǬCcw?8{mlg yWus]M]5WA WO?+Jv_^ޏG}G/~g\_D'|Ǐ>'H'O"/imE/0G~Aȸx]{~b~OD?t`/;ԿӿG:c'aWgt3%lUЉϮ>v[oOOM]#? ߥ&uYL`++vOz5ntR_8?_''Ot~/:gߙ?P=OL'}Iy߻>c>'N}(>Q7 ;EхZt̳g_?_H߄ vQ_1 h  x!   ^  x!^  x!^  x!   x!   ^  x!^  x!^  x!   x!   ^  x!^  i- c` PI%x)FAH kk Ats+^7YI ,XXJ6v^) 0mwmg+i ھٰ3:A},k(?wt*QI F3Vpx!A&BmKNb x!^  x^  x!^  x!^  x!^  x!^  xޮs$C ~Jک`erZaژ A/{\i2fmZjB ^Gyry+e\"A/{=d 9XhRHn*^Խ;=(ZHTR)'L ݁nARr`ճTl**|7^/'@^xM7P~uucZ7XLie[cwY^7ZC|mu]ޫ^ 34w5li6@ F)׻rU[V&3[ A/%箰wlL lCc~ћ$EB $w]GػW3 Zctl6xހ,6!pwr7 Oq _<;M7MҮƱA Oww:n3Mf6.N}Ņˎ]b87uq#jo+&y7)/8Q Nß_բJ>h/{'LzM,A ) 6&<3W/QKc(d2f'-3m͌.KJ $/  wܡJkDO|K%b\&#k^ϕ lDB Qf9q_ɜ=gb׳:p3Mqdҹ3!f); xp$~y&ݩ˄MҞc!n4ya6@ J bkzx2pRC B~ܐT(A/'0x}d̰SrZpSB䝒fJ^2A/WxGgLWY+k UBQ?og-kT^08W-8KN|͌]f^xoxRWW /_F/>#k5P񥐛C{ӤxwZr3-!xaJA.C}ٙxXCދxwRrڗg3Ipn=?fπ06wyB`C\X,\1co,w]NM?ns6khI lHwWmFqnTFwyzm Zx+P*Q?♯P5Ռ+Ȇk4F~)#oob 磛+LZYxw{9Y͜aup: i.ta78זT2.Tk\cCF*Č^.o]ZXZﬓS6ɖ+c1{G=eKf_Z&s^Vbۮd⊢H~-;TN<%+r7^)zm*(x2mr IDATWKv xi'FĤQ6woyoBkma&YL*+ҩk|W:LB[͂~4QY+V=A.5xYq g\^[.0S7ۯ'+Ǘ=%+[ǗfsXWh yr_VKi웋Uv3ok]oxXCJijJ6u޴S,yEcDOV:hwzkZDR#6X ݝ_a`-7VU"i>R,έY+Z1_\8\]Aܭ=|7 nk\E.}y(x;8/ u/;]rkz8ߌĒm7N͘ՌǛiu8mQ3)K7k:<9V8j9*W޾urptΗ:e]6eI{ P(sUiΦ[(*"(ݙk4+ya*Hw,=g7ҘLs Fx+"{襛 w^s)̈́,Z^ۭ\5^ϑʣϜ 0[)q-I2CewVQqo"xɣꬁˑ֒]y ZND82ywUoeεRZsohVt0۷*r/ X[3&7Oخ Q¦͐6ywpWa3^Uݕ?#l3}e9>2 wiD~33?/ff?=;3>ӌ-@Z:S-$GGKr7l% ^번W]or}k~PC^O7P~탷Mڶy-)k{xwsZ2VӝmLQcu4g/6+ċ&HAi1YJʊQ @.wmM }_SvDoH8ig6.h9ȡSXOW y2FEe5?1j.Uf;7_-S)I.v0lֺըduMʴ yzP]wb: ^͍ŵ٦SYX+Jw&5),bfn&ol\My͑"پRa%_.-.`qTu6^kW[Jt[Cfob@Pv|kco>C|~4VgwQerD-Es\6j*k=NDx^j3JM ;:'/ԳJu;Fwai-JMX]Knr3+ZY0:$b KU]#&uW kɽ|ޭ𪵵ȬM{~l} -kYuĿk"=74h<7R-Fmv`b &䅘noRwxn/{ xgL0 wzQr[x!6'F'ӱ5oVǨajh.x^l<Vxهx~7NW.Fjm[x[ZoT B ޹nɨaڷת<3cZޙ"eTj*^ȲUW.t#?&;ɭX x޳.[dH,4lX%Kqy 5܅Bn\]1,wWjK"To;xu;s5t5@}o5gLdm2𖫣TdM+^f`w&+[QWa5|>^oif}/ԃjZ:6>W,Ќ-4X3_,W鸁^giYŵ.zڹs͋ޯS / vaԃj'㭳{\3*.'cѥ|כXYv2?F쥕]r:jHY Q[ou܍pgd5ݳs  v*$gbډU60^tT8x$s$GYKe@#Җk)RG/91r-N9kr%GEَqgݰpj4t 96R쮛610:VtYXXWfs|ymd + ie&I(gFFryEބeWuexUQn\%oY5*]2[cczʰKv[.9{V]W.LׯO!T}'k~/J^pewn̳}g~[d!SC[XZ:|J7dnU-E Pg^OxIsGw :S¯:q>4v&xb &CK׾]t%xo9~tNLZiaVE]oyiqdV?7+x˩$oеIkBAOs;&hAlDYu".קIfv޲bx+aZ/ZrԧCO0Tb@Ef%9M_[u@tAWUNݲ.ɴҷ豓I~}h-p_DkXEhCҁ]/Plnb*9-*M$oJfK'7Uwޙa&9f7yL;{-p& ;7d8CneUn%LWXZ&WPZo[gkuSB\@Z2XoMg-z}k%z+msCO+!j X~Gդy'D߭%vq\p6Z5{CٲiM X Uv&^o oѣN=x*o _B/'>{^Ev#}w: Dk2&˳p uDW4|[<} N#jQ`MZ$mH&`Z-~rAZ頕Y\R3!:b}r܆%J=s+f/dƏR[tU~Úӿx\~*y3ikOsm)B[(2%㫹oǷS2 ^1]m2x+C  "qmة)*#^AKP̫сt|lFп4jNK8;h.\8Kz Lq[&#HCtN+^sO?Ni释ql07-Ƈo T}''+ N.o{@62Wֆa J<ȩVo jtrCcguN&_\Eq-)G|WF%}CZ wn WaCZ/,dٱ!:ޚljdգi$lqK'Dw"nMIͳV^kgeU6\X]xMVJwV9xwOvcY/Cm1q6i6kgM=YM+$WUzw6]i'yGzq[A5;u޴]?\apw[r>-dд5xY=^޵[q-u8^Yj[C SixeZJV;UsāW+&jʭ뼝ʺ)ءtfm5$V[F]ixEr"Z^y cw,:+Žj4Qump[T&zDsݮ\5pe%.x=3vd$!k!ָc8-c[i^Ѕ7jZ.T ˯[Ͷ,ZVoc%3}@Z ݉m>jD+j2x3˥fxpեܰoH/P%ӳI̸㗸txnAOO|+xݒF]Y5CޕLJyC.by)%'{PܘE^Jo\"GR"nk^H7wjJ൳RlլNj5c e;Oxvj)*]'pRtf?ZMrL@0x3.n%U2A=QRINJ=MGKU1 viW؊Q]oUQ%o,dGw曯_=Y8॥5̹d4:׼v)^Ѣ7_\F n[^N˜ىE[mbD/|tS~2W,x{uJRћ/Ɨ\VB n_2Ww`r&[;NɾK a_So=/+e r%s^d+|vDf쥒G]bӅyK7+cIvJJXlrU+ ^ɱ{y[U/Ӝe5%7~i@{'xۭ]kâ7Ɋ^dז=xRC}doWWM[Aa qNVHv鋳fga\woj^˳;ɍ̬ϱsTϭ͌; z݉4]:RE/+wKJf R^^^JTSRsݞ.y5} o 73|dw3<1g*?FmZ Iz[$Jv)fSj}-fNɳJd_e`O'" ^n4P=֌"//{ȷ'=]w'J. a6VT^OS[w)B $1C}$wn^w'5a6\)^E]ZebqsiB(+kP=׹G]w"ɛ&yFWǑ.SZ[1&1vݤ#h7ߝ+G+bd0x R6?tb&2>C#hޝ:aW@c g]씴˗M]hݴ x^CUDPD/CSSW?gzuj@&݁Ɂ+u6  <8yEd[ѫ;9'[І/ ^7$k0ھېLƊੴ3 vC0x!xM(ʚ7vLtѻ2JA3wAlY mWk^Q~vulrlkL}P.Kt܅ &oVּ*p&v]44@ nR6Hve8u;x^4t.5/uXc,n3;;LK@-^:|}ycJ:\j]w2Wzk9L{o>f,]f A/3*D˄XW/nmZ쓱S4g8 A/{ Y@v(zmsÛW>xպ^zb5`ق,zпW_&&Z_T&C67d[-z-'[L ĊuSA.vJ{=ۤo@I $]`^wUi/G.̈́ce LZ\ЬEvSB-'HV.kyNEP($L vI!bԅ eoBM7,V / B ^GˁQ81XIdB ^ZRJ94ԬTR)%}|ۄI/A AA/A BA/ A BA/ A\¦IDATB/A A/A AA/A BA/ A BAuo*QIՇ `rKCt#;58B AЍ(wpR{AЍ'{ppVkU]Լ`J;wZwޘ7ĨXIFjm ;/yCA7C;,1xcI?AtÈUn2e Ƒ4x!   ^   ^  x!^  x!en 1^$~^=>=r= B=9$Փ3y7P*WweG*xYzVmc3Ν 7HIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/1password-support/index.md000066400000000000000000000071001507671574500270420ustar00rootroot00000000000000--- title: 1Password Support date: 2018-02-22 description: 'Showcase: "Compiles 400 pages in five languages in the blink of an eye."' siteURL: https://support.1password.com/ byline: "[Mitch Cohen](https://github.com/mitchchn), Documentation Team Lead" aliases: [/showcase/1password/] --- At 1Password, we used to go through a different documentation platform every month: blog engines, ebooks, wikis, site generators written in Ruby and JavaScript. Each was inadequate in its own special way. Then we found **Hugo**. We made one last switch, and we're glad we did. ### Not all static site generators are created equal Finding a tool that will make your customers, writers, designers, _and_ DevOps team happy is no easy task, but we managed it with Hugo: **Hugo is static**. We're a security company, so we swear by static sites and use them wherever possible. We feel much safer pointing customers at HTML files than at a complicated server which needs to be hardened. **Hugo is Go**. We love the Go programming language at 1Password, and we were delighted to learn that Hugo used the same Go template syntax that our designers and front-end developers had already mastered. **Hugo is FAST**. Our previous static site generator took nearly a minute to compile our (then much smaller) site. Developers might be used to this, but it wasn't cutting it for writers who wanted to see live previews of their work. Hugo did the same job in milliseconds, and to this day compiles 400 pages in five languages in the blink of an eye. **Hugo is flexible**. Thanks to Hugo's content and layout system, we were able to preserve our existing file and directory structure and port our entire production site in a few days. We could then create new content types that weren't possible before, like these snazzy [showcases](https://support.1password.com/explore/extension/). **Hugo is great for writers**. Our documentation team was already comfortable with Markdown and Git and could start creating content for Hugo with zero downtime. Once we added shortcodes, our writers were able to dress up articles with features like [platform boxes](https://support.1password.com/get-the-apps/) with just a bit of new syntax. **Hugo has an amazing developer community**. Hugo updates are frequent and filled to the brim with features and fixes. As we developed the multilingual version of our site, we submitted PRs for features we needed and were helped through the process by [@bep](https://github.com/bep) and others. **Hugo is simple to deploy**. Hugo has just the right amount of configuration options to fit into our build system without being too complicated. ### Tech specs - [1Password Support](https://support.1password.com) uses Hugo with a custom theme. It shares styles and some template code with [1Password.com](https://1password.com), which we also moved to Hugo in 2016. - Code and articles live in a private GitHub repository, which is deployed to a static content server using Git hooks. - Writers build and preview the site on their computers and contribute content using pull requests. - We use Hugo's [multilingual support](/content-management/multilingual/) to build the site in English, Spanish, French, Italian, German, and Russian. With the help of Hugo, 1Password Support became our very first site in multiple languages. - Our [contact form](https://support.1password.com/contact) is a single-page React app. We were able to integrate it with Hugo seamlessly thanks to its support for static files. - The one part of the support site which is not static is our search engine, which we developed with Elasticsearch and host on AWS. gohugoio-hugo-6abdaca/docs/content/en/showcase/_index.md000066400000000000000000000001151507671574500235430ustar00rootroot00000000000000--- title: Showcases cascade: build: render: never list: never --- gohugoio-hugo-6abdaca/docs/content/en/showcase/_template/000077500000000000000000000000001507671574500237305ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/_template/bio.md000066400000000000000000000002151507671574500250210ustar00rootroot00000000000000Add some **general info** about Myshowcase here. The site is built by: - [Person 1](https://example.org) - [Person 1](https://example.org) gohugoio-hugo-6abdaca/docs/content/en/showcase/_template/featured.png000066400000000000000000001204661507671574500262460ustar00rootroot00000000000000PNG  IHDR$~KiTXtXML:com.adobe.xmp -CDgAMA asRGBPLTE "  #!+Q@2(2*4}        U  "$,' % ".6'(4<4 )1{8D5@G/:A5SF:zs/Fd|gkn\fm ѝ}iW,t}GYPE)3J\[<950O":L}|z-3*9QTVrh\⽯@XkwZaV9UH=#̭ɺIo`N>y<gů6KJF_ܧvѵ5JTţm!н DAЊ]p`LAxg1W8t`ztn jPO[X6i ,KԥRӽ>EwnfSr~~q.쌦 yk'D߶,;oa_8W%e? uVkQDYK>do-QMGI iqj-tV^[iUMwk[Hw觕;_/u_:|)ykm/>-fJ꫺އ_=V?pU ^ZU?n\VU_WI==hcpdk0VIF˭)_Z|wOOߜawf5vPh0|kTijW~춆 Wrr^[]چ|O'*q rK|_Yܤ/b%be96lZ uV囐½[W*~PXIc; pyVZf̬ mGZb;nMlύ,~A3O|Y~|izV 754+8ܵܔ_yʚH.4/H2nU1iF0Dމis d{ d6}zQQd9ݺh#vsq 3Kr2I&G7vޝm Z.h@ º 'NxS~QQaXEm#a(L7dm+~`îJ`UO'OЂ}[>[\^דlu}}1m<9벐 nN.H<Hbaa]Ê;}ak+XCB񬵲,{Տ:o:7- .֔^WlK[^KpEM|kmeeԑTҞ KiKNhԵxk&)NO}VKKWHZ[WZdzPW[dt$]Ԋ%!u8C :iW&_.5k,ܷ/ٸXr]V߶qǔ3,4n඙wַ5n}TN=LҌHsOѝ5悹3Ѝ][4D}n2\D4ka/>yv0f;kvm;&׺ɛOnK(m5jHRp&^cw寧~t'e~-p5쾶x+ !65;8OiocQrh]5oIXHK3;۞6~pAqNMQYnƃ Դ7Y3+.do"jq.|fS54=s;Fɖ,(~f3N6>]|sUMz~-K#x%o '(mSN>XO39i78'$7.mEvSK=w{A{dWmrVXҖ9q[f}gޚhCn_OX7עY/ $6x۶{;$J;nX,GjUՓ>bt3w0'ܲ{h"D ۮwn7*"/c_z[F;oɑHiw>|I;C 9R7Dý&e?ﴑs,30s.Ʃ2Woz 7˲p6nX.I ys:Gl4tgV8,E>J2blLhi)r+|x[Hnq'k.k[q U+4J;"ݛfgi,֖֬|=.A~y 42##V߀}UR\sYtޒ9aJAT78^۷Nu,)Zoi#HJz<#ܝvH kqbm(o:rS7{p_4G7038IҗdԸMdoUm[x YՇ =O T 4nJR[Uz8eQ{{gv۰!>7eY--CFsw_c=w n ObpyeuŜjVZ= u<Ǔz=Z+k9WCGt3/nɷm6k!O^o՛*k YOKMox_H.A~a6JX(;/Us?RKKZC[3 *M;۷RAvܙ$[6aڝ/Ҩ0 ٌh=y<;D{&ᅙ$aH6xQzSoȿ^5)(oqKmh|q.כgK GgpN*8]ޙ4 ME E\ .7[YnC ymD @;yt@u.y{ӋՐ͊ѕ@^sxmƩ./_,]5Mŵ-%{Hgkܭ{r'M_]c*k)Ԧ=ΛlKΖqi4Ņu\)"1nf[MnkB%*wdTy*f]1 3^LrHݘY0 Wz! Du w?Noyq_?2$|<]ۮoA4hޭ}wWќ6fڄL F{Ӌs{ Lv%,mAm5Ov>aߜ?=qo˵m~3mO=}՝m]+z`}I?ͳ&'-MU?.uX*KGc3㾶'u%$l3sߺ"!I1ϝXuglYn?rݱ-QmݓzM;˦6zHV`mlkXHג6Vyj=޺:WZMtB{m伱N _GLk7%gm$PWey6x6}mM-1[vw:B.#NxԠpKS+]ˋ%{0SyaFJϛ5_I3^ fO.?"0a۟lyj>g[MmKtwH5ͯ?򻪶'o4%͸j'C#K穻8i7ꍆ)fqw=|ƶ=??@??Mf,?x#w &ƘQ_Ҧݏg,O۸8,)^-h@ tnJʃ_YGP0y ?,҄IkVb6zJhCxߑ26XltaMɭ E &.,rZ[] Er7kaeekY֒hMnmMp[47-1ٷ+֕_OˢtކVR3V-Jg\SX..soң^Zw<5ybraGl.…l<6F][luyYqIڶM|zMvƾZug"d`ȋ4=XV0dcuOϤmy\ժ-uJ&i$'lrm3-+c=ڸ$)Nҷ!SV7q撛kcVMuŏL4fDZh#c3"/d/63o[! G1fyz)nFϛtF3O XFMOwb9-ȣȖVd&30#n> w+٩cjh̜` 7mU8;ߋ[&l<8#y乘 v@o;fwUbFْ EWpgC6$[uUa Sd̐OyF\;fҫ 5M_{,5 n3]֥^ߣ&-^z|{VJl/eY;I k[-'kWY3Xwʰ}Ur ;C w;Ejt8Y0F_͋%*ہϟEޔRߜQ#l= I@ ؅tz)ɂ|b7ӯWg9[|~գeeuN8\ 2?/*q3#]+?eMW kyeM;WYbMe$3H[ IDAT@dRF}F;#pqIv򿌸 xiвtZN@eCrAn{Fƀ&]x/LƘadrwlIIvvrOEKKLHpo .)?|ٳgG=O9svUh㒞x=SǏg~y꾌wW?ٛo9bě_|}δ4w_ _"--?[p v]MTTT_~CΎ>@&#㺗ߓ9's fol/-^agϪ_sдC_¼4Tpi099]zЀ#er=n$ O<>x&/ ꒒XxЈAV.^%>e zㅴyK;r~xA*V4'w%6#ih%^0U\<(AϹ{=KڌL[6D+pѣݙۡoꏟݑդ5/3X׿~ufsU{zW}^ (@jZpήjߺ{hדDv0%%xJKŇ%%ۑ9ԡi|;\hw}\!Ȍ$OwcFu_|/K c/g+W|%ͬ՛qj#3Rћ%'ӑ z٧rrzIq^_GVg&(/yQ\h:2$d=$ޟcz%祽#Cr}5nY M;d;\ ;rX֑9\1f̘W#e]=l3lvRTc5QVgOiudFxthʵx_{z;2d9>^H>Y.-sudF$Tǻ؛~2Ik^^W]{ߵ׎Tf&7ґ!~% v2{zodqiÆ9Ԇ 2Nћ.- ?zз@ȡBLvɘ1˛3=0Rϼ@K.[s5гA$گ 1y}7ґ҆9l8yofh@t U6}Ȋe;+z732~\^UFW{30"lhwy5%[,6-keGrs67skE@0P<(=73[gNԫ*2Iq^^'LGF^ߚh7#RQv1UZ7Ȍ@YaCPf`Z$IٮȌ?BכPf>7hIUv=_~"ތؑiRUz3i)ۑfzgB;2tbofZGF@Z}|Ho}Ik#73.'-ތopab&+,#ͼ3dBZKyG&x 7-Rћh4AS#({3/h:?eFّdZz#/9#ԛw, =ȸkuݑ7rbLRa^aJ ;2a[+x:|ie"v4ӁԮz3)w&#yGTXYoN\7SLёgz=loDzGoݒy)c2Z#h)OY\=C=K~f:2eˉ1潭H}?_ nOLe Gм,īvlX>zeѮzP5Cv z?U<;t+e?Fۑ7mh3IIAG&rb\Z34~~kõeϕ6KbI>̺u֭ MНl!/<ތA]8{3ǿL fGȬ%>ǨӧϬU xE}ݝi_wd{ usΟ;w:w' ]ޗtB%fЩ64ۃJ)? :R;2;zF,Emglב!%3ne饝t:}ѓY̺Ο3 Sf`y_e66$ߓ}ꧬҝ$iv9a3Խul-eSiv̺ٟ<f_NW7lxi?ݧ DeߔY!?#.)o0'z2<CbHM2z3t~|RpnNttrT%ޯ8M\WR^w3[+ޗ- D#SWLIy3#Jc?l l*O%3$ן2V}eVYz2j>XqK=֛E.+٠R?žSmݧ}e }p9TLĻv_TtOr7/]VY_u=k2 Rl?W׵cak_!"uǽNF:K~EP>s )W|>^ ]EfI_,5eT=[WGOI/Ci_M5g<Ѿ~}}C//Q½"ĥc ;}&z½>w&ӅL/FU9uii] Mw_20=v5ef<1s+;D\8ܯB2S1w=3ez%}]=/'AgZ]tboVK9G#ׁ!%_pp Jo>~hG=i4WfxfD{/J=ҞLte HN+q_Es|!pȻ2?/ue}h`D5=].wg2GoQ -[ԧl 껏._I+te֭SGU~`:70 SpW7eXrR:t;(V wK,s!}^\=B9l; ܣgg;8.8j}\P{9z>hٳ? mw; #U;-_sr=)sr]\ٳ5fp2ܧSVu3[dn.αn'G7fp:K׾)Jݛ-wY{e7TSQp:ܕ/{U[ pWap;T\[lze]"Ŝ Jwq*w@G2C[t qs 0ihTLYpm0uI+S tV1KF94)VUw@wkʻ2uZM}.ʜp: "ý?Tw^: NEs?h WPЇޥ2{Ke;y=Yp{~,ҩ2=wE\~^p{._Li߆ȇSC2w@Gkܷ aɯa[&0w]Lw; ܻ+eʐp_{X8 #i+K@½pXX&oԵk}}fEFK0: ލp'{hpu_K}KgmN=~Qn.Gh½[yg w1pTY}H:ЇW ~ZIL6'1}ILGJ};eR>&OOaoqa!#=Z80-[a]>7KS;+bL9kv7½8uC[^^|RRa#F˪֮ w8ܯO@{H+J~G~l̚J{zQ\ [wpV.y/4ܯ}w=htuL?Snd=wE_ 3ԧ#2 wEO'ᮜ/2zzkc 8etOs; މu{镊e}Z;=Ln{P~ lvp*u+fÄ&' ܃Tu{UkҠ{)Of<٪?Qdpʓ^ ̿:*yMf+2M_uӝ"]Wpn]h>{;u;pW]2Xr0qGO'VMS:}<)<ܕs'HGn|r@=L"?%n8VQIxkO=xLUN^K`*]{ؖ֕*lT\,FA*g)tϋVkO+G\ټ˄,.QSXy! ̧}}1cz7?Z?1w1iథ{k%_Uz:=1sQF+󏨪$lHVwtexCjsf;+;5Pey /Iپl @}FV= 1WZt,iD:ooE&v}]K+_tݯr菺KU[?*oMwrWn&0GNN@72A]_}hH׎.H!U=]f[ ʐp!{i%|##]9ZuӝN d G YKwH q*ښx?z2Е(2OI}#ǿ2}l]@d,L$ݻloCh׎|M2#:Kӯ<7ʢ3d3̠?+ae{K_y)3C'M)8u~JKf4H:}F,~V }t'Y=pYx_W&B{t<<֐x{睙WC [3=suqlgLՃVӽtz>^գGgJKUvDyo};Uٟ =#Uw'a!l_6 ;D[07r?_1F *;#Q1җCW+v r/N VM۟:ih*_| ِ|F<6L=^EՏNV<6b+1*!߄!A-^wuj 9vt[1C#sr?GgwP싉[g?\'fjlch|Kwܙbjoʵӧ>s#ɱgH+EZYZYV؎TijoNhD`KۃOqTwZ&;!ӆܘ`v7%.Bf\I:'oML?ꫯꫯ!hyl>@F<.޻0@rg1&Hq3gnvYD4;c<љ DfСW!G%oqeSZ﷎ML [IY?ֱco GME{.3Ԋ[bJY݋vyپ$1i7- 0h}ȡioLF@7=ղ]֛&w{ߛֱu{&#Iq$=xRzetG4h/UƤ}=mߛ shY6mWiГvfr>Bޛy%xWZS9;…RFҤei]{>7W>lx)v7gڌf{'=#3Q@Ʀ%|}Hٛl. Ż1'7Y=duǮ22xhz3qyMF1ڶd73ތx>#xgWDNKڛU|"ڿ!ю Fat9-ʛ+>~*''Lbq̵̅Ebu/_F$7彙poaI1i3 l<v:B@/Wz3]MTG4f{ޒⶽgL{8/'-a$͌78i68*b\_Q{gqT ܛ9io&褥#?ݑfoE0-R ^dUP=\o&dusL̍oG6-rCIKޘhގwgHeoF}Zd8Ctlh' fBOY G~5=i){tZd%El [j'-(]of۝LS:kW}؛ ͨ[F~Zd⏉LJOvzR"C}sm6/qis7G>͸BEqTgw:2L)$މGͼ*22XbIr})2z]bNYt>7^@ňˉWBQ]ޒiLf"\EqҴ%nA=VZZXW$|oi^{b߸Csq8J7_~"Q#Trg"Eh椥{3SVǍ[l88꾯fx7*{3#>iz:N;i=GUMTI%lo͙6O1-Riٴe_OFG.n+OY-{'3IWg|nLċ?F3D89MSVz3C8i .i,؝Li?^Xۯ ͬP8ix' lwrz3J{d͙_^aeJ<+]G-}NY8iG ~RC>>QO {33g&?H4 [b/G5L|ʹiXq˦M?D[#+V ȯ#?FI{/33|š m-~VR#xn[/,6,;D-\\RΜקߞ}99> %ƘYXEniKJ_|Hl[-)Ŧ%W_} iqG;d "~Q^w؛s^dQ20m 7 eA4 $.92տ˹/ΓJ&\YϺ)W_r,#ojQƘwG5ijhwӽeM5kF5yWvJJA{ό#]*%(O\ݮj΄uYe l >$UuMAi'>UWlI0KX4Wga_ݨoږ)(еKe@ L4PE`lCLcEA%T/+&9f#\]nvM L]13*_nO~NP.f{U&G]A7jL=òԔ\;@twH%z&W.W m;3`Xܥەʼn_c,6v;@.5ct^Y3Buؔ}_3BjjqPs 5e];'u`veut`h_vJEhʰ\9TO5.;pVN$e2oviDb*W|*ΔwTW3` E-hul%7d1]G|YCzfK{v 2{^#.kЬGQ+f̼H5$sE2 e_oZXBq E6pokWA|%fIM)#>w~Ѯ E\[cc7TsV^_^m٩w-JKc ,}inK{YC#v}3=uWfc&pj4&M>@ۃpg8h.iJ3X򦹹 WAŁGll0Hw13U-8510Sq=׉Ue 5 S,*]A9CB;~L&j{A>m.nv^L Dd"ٺl4csudA}mǨayVC|=7%{( ᤦ=FGd{5cPBؘ)s֡:o (ٞ[V4 5Z];Ӊ7H뚼Yذq켥E`RktM.OTB7 ZAnj8'N]0p 衮,rbk)fSbV'ge7$#Q&['=BxJwäؘ-(ch[}8i鹫='O}Tv1y弃78^ 'FߍdV 6\< ]$ܭOqpJ^OFc !Ju3)JT$UߖjeXN(&j$z^98;:蹽G|Լ"R;'kJ 6eMbzU)I&NUq@.&DX-R.5rBNb s5v85m=FEs ]\|QA*y *bRtSB\ wŁ[(75%&/PM> &tKBSRH6<2dkyw;= LMu(+Hn+/N@pgYM" :55d{*甎pg p-`Rrwpו NGCԁw2[3іyvE͎Fvqzyk+K1р_ڐ t촫p׻j !Rn1㠇mBt 5[ 9CP#ܳweFK Pjv11^~Rҥ6C=I.=D^A#pm2ws#a]v41W024ť8ؤnA:Upw+ 5 :cpMst?6#wMw$ʛ2.?&5%5Z1Mۢ}x]M="I0$7Qv"[S[頋pgNl.ȨRURd *i= QxqWNn7^ k1T(-o)KS[sJ^uUfk{h9?30`NU##q$o{bh=&G(!=0ĒCJLMvw|#{ 9ulj &F1$)VV h.I-E"k83=; Kw{Avx.BO%W GWϮI]Ĥw7atQ*M-mLSA#3!o ?bpI* pptɭp\Tئ${nrJJ}WLý@eVj3jϤE{J<] wK]_PL'\# ܥeF5= w$ *Z,#.pWYe X[;=[HZTc# ]JgV1x [{bջb/+r@uT-:y;Ik3ǂ*>vU+wzr,~rwZ>*T]).@j1qÝ5B-n9pHj<2 u袶p|V)?CFezWJ.-i2D\7_95b$a(ʦg6ICt*xLJLyQ;c-J[F쵌2 t^Z#a.G%yDjn1ր9ěv_u*UQVY:3P[5owYV.)T]\ ?"wTft*Ue„>K\Umo ziQnE#vб!#k[\H=nK Ý^U7J+(Wf8aְ9LcF.W-j*:.{g/H:*5lp׈+ #\n4j2 wU0tr*jw8wTHzg4&!=EZ: pkRuѩ( Ģ9( 5byL K;M )ݳS/ޭPؤkKdA/n!UU]GBq1jו;}Q5|Mt]R62%/%]k܋`pU6_MIz!N OV6xz}&|K?,xmyf\w[̓NSLwJsay_S~؇q|'By.izWLAE.+a~*^djx?O65?_'T%_59ۑ>5ޅDn_ѳ.y{C,L"/ Dx"TD^'txB1w&b3>՗Y޿n\ɑp{!>c5Ml%}uրkҟ~M=7IER_}SxbSLr?+\Euxyj y&6,n=6r5E3B +N[2|MӠ h:QݛVHHh+}3km_|Կ z5HsM|-},|m3+>d|=NU"_>V%ݫX f{*kC IyOU3?FNҍ;x;+NNYvoeB6CoVܝx_dRWn7A描w޽k^r~e5Zk1y)hxT*{Q;sqn1L+˲[INɩӧq6?IQɖ=_༑`ݸuXz !wиGܮ+W..,'Lf%rIFBE1qsC㝚jd`E(tVn ;ծduf,f΄rBu)Sdux7V;]TZ65Df#M ݈)o~O%EqpTPI]n_f5d4xT3x+Z6M7 uӪCT>U Cݾ۩4w,)5k>)C2`{NZE#-- *~}d"i@7g]4.s(c:=P| c#Ozz|!Р{+>2VZ5dGI=pj(|Jodgʙ$z#e~DN&9== >/9joQ̌R;}pzgBrWfZ{p)pV;e6/l(R6Ԋ*K~SS]$u| bG=ĝGxKhNvu(fiNu`|$ݯ!+nN{OR4<*2bkF @jA!IJR;ިO=ZE٨Aޫޣ<(2 q3HOmkz牻Ν:.$K.Hjg 'tw^3Ei.q }uQKܩ=+~!I'O֪ǺHwSNi8oھOȊVJ&Ʃ~}R1.Gψ{5 ;jV!6L^-^2Xw@;\qB-,b'f7<ST#keY:\7顊c6KGRATHfU^1㱹h%lP|+Kʙ9] =1w ʷ!eΈ`8쬸Kz~ZW}13;l7`(7}$i;})~n_5zϾFܝ=#)ݽCV $f>ZYٵJRRYD[^%It"f&WMYq.ɵdpf*:-ufFE9?6cXMgdgŽw3.n+7._2t/Cs#SF/] Zٰ YJu ?<Ͱ~iN{\GX۰u2'KT{Fe-sܮ) {_0{:,S%23=w5;+k^Ȇe*Ȇ.)qtDZLakFlX?!~#v7CVXVvE:٨㕰gUw2$[Xbĝe0 Acĝt֣Ž?] qgGcVމϧaVĝ,i; ="t#8;*S|WKrzjwGU܃+#NMxd*bn&ҘbTc0g]-1ʄjYqg=bN&G_+*?sg;S2O*P_ژFSrp%E}#S~MjIq˞3nWz);_+ȗB6z<=3еr|qOdw툯ezW?jj7+䀓RjF3mcͽS1^SW/gY}էK!|=5eKRȽ(F%-ݗBK}v(2lD z?d{ ntl{}\^$vJ<NwNwVCzm.d_la$|0nL@^Vau䮭T7esHi;C5!&8Iɪr)恭TG0ܲɂvFZNVͮ(=wu`cB]; N)A{h`uRMMHV᝹Fha⪡_R:{<_Rd~|{3 Fi2I(UڲQi4"IX6!}uW4#YᎯ:\:ȩ(\tHgYq;@ >EW^hIV'…ռ>%Qt{9 q署qJ3{)7'_?0 I}T߱ˊ{5dWsr@ͶM{-ikգww=LԍF'߻^.Ctg_QY"qqjj,vuH'לAn L,D'e+|E~B\ї>%m-4)4D:7͇. fu_{6I6s}?_uuHWs۷i'#RcS^큲&u<ҶrsRvۥ(=ke>o!SM8nlph|TD#'7r+Mܩ2uc32}gS?lo~5J-"Tzĝ ʆ%舷Q9ԪT]U ,r&n:UjFڹec1I]O s!"g߅ m* @$ltd9#\$Iv+*9lTlEe܎HݮWs6.mr/Ny#Eb,-{_V.e6:# Ct_!w|ܫg|{NQ Q:hCd3lFUCdJ+(j613ic*e绑xD~}iY7|3^xXظ}8U⬭b2j :P%xYEy$l~_, 3q{ kqE RUj: ŗVV2)^5r^ʫ!8M:tEi!]T#e!jK1J  N'i~f;g.Ha}e2Ɩ`Qv'8Df2NvA$uoSf|WYhjs]NG,36y[ȲS[: sZlnVk=nMOڕO˜;b7bor6ŵlsI[53cz )PNHܗԜ=J\NU ~r.;F1q6'u#9O oXO> ':s6T+evS`#653fmK.4ՖSau0 gة#oF5ƙf膉ƕ|Mt \Ns`˪'Om i] ZS6AA^:3m!0~{1ݞKܖKbdb[U9Qu þ\1к2كw/X2[{ Å|G?>U*3|}2LΨ<qx3AtAEY{H<w70 cwl:IqTGrwg{j&젦Kk 8+Z x_O?=v)̤7L@(~'lHp7_ܴdWiWyTb|S7bnDW^ARK?JmBfUBזm;Ѡe/7;KKr~^_VWuI޽JɻH8MO9ANM tbkt;8c?cHz-TaҩcJ^@=|b&_T~ZY/Âe#|?zkzJ6 {N[4NL#cj65KӶL ίzF2'!u㏢J/lﯺ~'8oVr&%3iA ;GtXR=oģ'?c&FV-1?p;=miR`nKﭟ[ 4q:_wɓ1ةt,7澂p&I=NinǛ?2UTs[),qqOTګ֨+R?28ܮ>[(N*F;K\P_+̄^R&9"]*DH{D鿮 - jN q3b7&&$j*&N݈K:y!ֲj o!d )d3-Ps/M=^[Q.#w w5ǬlhC lnt۳oU*nѢӆV=.-k:G wT㝅Ea+{ťKJſ)-GCH2:>Z}iqx%jJ%_'.O( kj8&~J]ss]#0!J!#2ָ◚qpi0leo;OLM_ʆI"!$Ea0=|q5_! $,tK-˽Hiޟ w4T21 _gW]q(-(#C%' Vxƨ쥱t?Ule0mvqڜ@[㞻bЪE%52Eq$G0lLE3E7)'Mo4H^px89A)Vmm'V]0QGê4r?n肼w\uon+L,7j5r^ߒKd:b7>ݓNVgYu:Y_CJ'Rc3U+ځրQ+E_3CNqntc%ɨQñ^w?҅⊥mZ{9^Wc5BgWxkgW{}F9Vk֓HuY^OͫP w.WQ #pp9,oT("JR`CyZJ': \jW2%jq"Y}ӘKW7S:hPNn>̴{)ܗ08$Hfj pJVuSc5kd{jWkwñk`3/:-=4q&kê-[`du+iw3terN]ڰO-9BT>an{[ V|l-&Y񩺯fᚦL䁇w{;\R3LMgojA{G[UnN.:譝{@_i#Mz8QerAq˔tH ܞUk2@WqMkMIDAT `=S3S^yӌوdՕ3v.GkX_ -Mqmr~Ղ @nfqE9s[AzjM!r{w{=T-ՙi4oY6*2y@x ·#'tu%?>(GڦeP>W[EYܳ,f5=iv.oy_AѬE:sdc!:^w%vvc#MjWuڨƇ(GEV9ng@42s>W?ڪp9n4+uKg;/^T吼4&e>8=S$lZjej!ă(h䮑N3}dpFRk!FcF!ٙ[b;wW<|W)WH+Ovo> uje,]6]XOQ]yH%Ǎ٥GrX?#פlFzjoGMt`[w"=Nrst%sFQ扇ҵ{gs E+fWlEKn> ynr}UsK^;Z~reIq"̒Ni狻LwM!,q2T+g.E=k4< r Z-:l$3%ʨP(>zXF/4'Td;uCOX t 33~`Fͫf{)N_ *UECۣ̿蒨{+Ө'r2u/)( R;w>o\10֠l$s9wj^ahEc Zc*-|fYq7zFV{"6ybvuoG-mfNX2~uwNuyAxVw;/ !mo/YN7SɄr,{H/a>{Kǒ~.C`\ :lTLyFܽ׊;,uhAŧs\;+jOeFU {-q_I/O=1 N]d}F't6^ɫ}Ѩ&G}Șv𥐖/ UkQ&s_],j\GܕcFwPY]9Lo\uˊ쓿iqg;ic*K^FʵV1MRVqK̿EsX>}hH qWMx"y.ΗmQqOO\+' w>4)try\]NYq_xy9uWV˜wC%K*̘l!^#RJ~ԩ?.|C~wc &,k9aJ2Q;\,,O-6FJ3QSaqjģ1LI7ԐMtOvjdj'eBf_sc|c.z#r=($/O?Af̏>?,q3O%Ƅ_k1uPA9/ld2_Iڌ%9} UrW.D>ڷة:XO\zQ; Ȕs&Tψ: վǦQ6RnS+e'T+ME9C-z:Ȝ0_w>se衄fR;& W]sGcBwtoA N u2W &'X )yC⮇̩n1aHzO]Y|22F˪GA23#$YT=~Y4zhw$I[[c=; í>,|8Ww]-s>&FYԛx蛚յ]{pIP_ I/3UzUܽ3/f{*ys:_ 9ec)dጇLٹ6YV:qR֔2G@]qd))qK!ȾQ] jU_n2şIOM q+M %p*wF~!S7N?TyF>] רr,w7Oh=̊]Xn:I7Ŋ,TzJ!5U^U{'#z{(訔kWgq40b3="tncNp-!&RoE;tmVnx\J7뿻{\[z8%ΪK<211, qgu͢ҹDau/lB-$A6^ky̽mr̛]Ql*SxI%,*up O0mƳLiή4 wƝٱDk ݹ9xmEJ!&1=MQTfyC+~H㧊b _7^h[/Ż63<6˰:H|=Z8֒"qk kp;YTK;sD9*w6:[S Z]^/GbwV!u7T{6Ì܆֢"#m?;-~2;bWъF4ʨltS/۽V?ه-q߲=J7 ԣN[.=i4O7E㭌?anxjh.9M(ڌU-K }K<K̄辻vwDk=]LmֿUEُeWu]n+67(@]]G~$r18*GC=9a-!]dg#U2O!!k;Wzk:t =/|R6[ /"C+񝪴r 0iU#bYgV diq+5d<"z5?g0ޤBæ"Bu^SɒxlIK8pvlQ%+ d[,D-}v:mbNjѸST/SB2qֆ^NG̰Dq}t޶EBiLgG,+ 5gNjE:a1Ccn]񉐠5[(qӪcAH^,@GVsI]|clk?pk[~ mn#a>(Rү7p9|'Deu-2Nr9Y&svsM#mmC(yr(;l$ķu.T:d$2gV<.nͦ{,8f%i;O9XvNf yNQũ[cm[Knsg]$ڨͳ9[o׉a OJm@lvW0ݺ'Ĵe ;tN_؟@2JR2ka^ݗA~5oTm?M)QEV z߯el˵W*zYb%~ttvVĊwԃ6_oU=Ehp8^_]c[;_ZTtx[*sO<l7AL]pGy"L>؃mtbp9{)M<ߨ p&v a8y (ExK{K?>]!"-LXz*MMQh:2^?&^zmo} c$E/ux%4 "}#/yN;Z~_>|۸v-H wwCq; qw;@!k+|Y';~7n\pf/NӗrA+ ٫@+?s^w^^ϿQ=V+9?бO +yyy}}_!/eAIs5~\ _>/>QaK J{)xSK|˼[/J.|w듒?}Iɇ=×\ .?{Q ~{qwy/_.)Q< :… \ŽC5K~xb _,o(yA' q\?!+>u/\~,//%s|~3_~w 3 J.~ݭ?}/wwŝ;WJ ,eyBD⣗}dy?!<,/\ryݢK=Hӟz웼=Qqs&a&GܿxY\9yHNbg?((O>!'7{VRr?|i{Av-V[%d J>!O?<ﻒ+\Kr~w= ?!L?罼\B |ɕ+%\Ӈϥ^C_^g諏na_q^܍^|9ߑc0'7 J~xӼ[oR,R=<,t\~iq~qBNwg];_˻O_>{v[%WƿFAswScrKWSZXM^\3ߐߺ^J .?;bw^\,y3LSgO?/)y~_l6S:w=ĝ~ The content of this bundle explained: index.md : The main content file. Fill in required front matter metadata and write your story. I does not have to be a novel. It can even be self-promotional, but it should include Hugo in some form. bio.md : A short summary of the website. Site credits (who built it) fits nicely here. featured.png : A reasonably sized screenshot of your website. It can be named anything, but the name must start with "featured". The sample image is `1500x750` (2:1 aspect ratio). gohugoio-hugo-6abdaca/docs/content/en/showcase/alora-labs/000077500000000000000000000000001507671574500237735ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/alora-labs/bio.md000066400000000000000000000004651507671574500250730ustar00rootroot00000000000000**Alora Labs** is a product development consultancy headquartered in Toronto, Canada. We help companies build software and IoT products and were recently recognized as one of the [**top IoT development firms**](https://aloralabs.com/insights/alora-labs-receives-clutch-2021-top-iot-agency-award) in Toronto. gohugoio-hugo-6abdaca/docs/content/en/showcase/alora-labs/featured.png000066400000000000000000002435311507671574500263100ustar00rootroot00000000000000PNG  IHDR 6iwiTXtXML:com.adobe.xmp Screenshot 2021-07-19 at 00-05-42 Alora Labs lGiCCPsRGB IEC61966-2.1(u+DQ?fhh I Q#b2̼뽑dl%6~- *k5azΛ75̽{>{9{.%{!+h`Yt;^q40Utufn"L@i\@]jI鵂jpƅυ{5)Pcd-[;Uű*VZVX^'YU/q&rsbdu"H7S3eӇ~9Q#[%/*h"M^QW%{BlR fUO΀|ʋa|tcۆ}l?U?Oѷ+\pq]b{pOjT$,[2 g[hZzVU7=ZU]gި> pHYs   IDATxyxT?^%-jS "`[ĭl"({R꾠RKEYd.f+;G }*$}4\WWc4L&Ȁ{9s==nVSS0k4 Is24 Is24 Is24 Is24 Is24 Is24 Is24 Is24 Is24 Is24 Is2盺eas)ѡs;5XM0G_kG-TBXv?{Od>i.p~Ƃ=I248ħֶRgqp8X78V&i\S|7ڬkO=[7|p{m/^#0tms gҲe+Vzޫg}25yBx(bfb۶xb'feeضG%ss̭kmY9P`2,zS/C/_5<׿Dó=Bرգ!Y.}m/ر`G*6׵K쩆;_T\.UUUivF1*-hIOZI%5jfEGp)!ͯ6[Sݽ&hʛhգpOaջomUUU>7ot+:dPd]Q㭧f>߿ߚ^7p}V\v}lpLnnG_qՕW4o*--{yk֭-[2ήkO\S{~z#&mۨo2Q#m2TړOҸw=ɾit؃~}BX9j'f6mbŻ'yXUUWQW\71g, ]vݥF/W 踲iOMot>}Sika߾}>;IWQna{KGi̤;6~Z˖Є~~nQ3|߯xͺ7s9TW15u/ ssL4==ɳ]\{n$U|Aye}Rsx)0db3P n!WȦcŻC7pգjLw֮[?g-g֬[_VV޲EF_ qKbm&7Ͱ{K=._1>?W4V=doq+z޹SX'qwYyum/Hnv-Z5I|%7ߐqު _Bظ~US%쭪 6mW;n]o?hj\ 9w kjzwhnu=05j@(Uin* :4w鿦28 -ZߖXftXӫgE;!e˖:xP$ݽ-Z,\\,@xW#% \T{B N{V=&sun !$Ms;vhsڶ͝=qoX}r[v}%jϝ;uJ p m'zSqiY٢%ˮ֧|<o)-+! {von 5ːA~jC>BmsԹ[Y^\-c#pka@x{Kk&5)_FyFg|?37и@zzQ! ?qƷi*|ͺiͯ~jKN 'VCjBq_ jsχr۴V2x׬]3Bh٢E(7&;;&~=!5k'ftW]fj *]Izٷ]=ܵ߈&N|T/}V=_ _EO&g ms7[|K!EKxB+~܌ꇷ}5痳g޳]=n´{V#C dgg|fWyÀz䥚PSVV״iH[m b^WӥW֛斖ҳWEʼn۰NAI#zB@Ov_W]9ʔ\Uv}DZ?n1o6p m,íwts1k߬Zv!x·?SĊ9tV\dY&mNsUx̙掙#Vw͛;n;K>޼of͞aiYb ww_$=aB}C8O4>5v7 Vzي_O~`zcm}5W-X^e}ű63'=4 i.ptGXN͎yFVaȾXM0e}t؃n/m׭,evKŵKVUU-[r**޽o߾C9TN v;fvvv۶tWleW.[27Ͱ!XYz‹W>;L:92୷t?:k!*QaӉ'M~}'g:#!1Wj;97\WY=S8S'lrߜ5{N!־[lW>o'RUn-h}$ HsUP75sMYeOqw((|pzp—컫2?Bχ{rBie80UUUW{|7ֵ+\=^ JI׬]7{jۦMnn}v'KEQqaӲEN:b)-+뜝B6dp={؀xb'f|ㄛopaiٓ'Lѝ{t+zW|d<|ŏpBHVUUB:v5nݾ߼Ykne :b#3fez&4>4>W^gZ֫׮sZegqکV'3扏|:_Vه2Oٽ`oCFӞ˫wtF\ʊűٺ>tĨ8ӔcOjW^x ޳O{hţ4=9k8K dǧt>(\P@eaF=[͎b}Oo^'KLVL3͍OҭKsBiiY<ʽ ƺm{Fy4ţ~}rӄڕuWi6=wY~ug<1SL gMb[c7o~o>gw߿ko|#_zړ2py }X"5Kk7>glݾ#Et;6_'жvNhۻW7~f Y~؟;̂~fs͛׮BKnos AKg[\g^T~>ŻC'Kts>#@&* ު4~kBػSql?_ '|99~590wOú}C-[uIO+^*++_v]1^`zr/,txX3_<_>g=yMm`vv! \T\|~9yi.N ѧΞ#ֵr!cRرC| ֬]{Ыgǩ->7]Zu |AϔS:wCQ=-{vW{O |XZBhٲaS)NaoUUؿ٩ޱ u!1+͛7I·eov~7kSq!N}[g#fs>K-ޝ;f,}RwwlBtæͷaУŻ{!︭VܱC!/Zlrrq>qE۷o%E߻7΁z"'^~%7ҍؤO>գmsۤ>V?0n`%sBŻ[t+qNw/\g>ݹcX+<~ܘUټy 6w-[fB dy6|Obr|Ez(9d}! Niց4w[BۺEs㕓}EKsXzڇ7e۷瞏-ӱcYNRVm;uzyϾ}jOm٢+/-8}յo!;;{{o3\BxKѲEC}~^Ͷlb= yͺ!֯]C|exȠ_X|ϔi!Oh;}H/yxxFGH??_\rђe7v{id=̯=J_Ξ9V^;͛;nK 3;'cT,ݺ}GS_5?O'r;T^kowa;u;T?_xŗ;o>m'uʊsaæ/j+wr7OdH ,]Rlnpmy^“Ȍgwlu@fiVS!@*(ٱm5yځ\G_>,O ԔWtmֵM/êtZhл}~jhUj_Kzu-!۶ݶ lƥeKD۶mn~8lx鲕E!^={ 2(;;;o=RO,u&zii/>{B=bopuEŻ۶͍ǮZ"{߯oR{QΝ: :A 73Q25j0f=~vzQxx}( O 1uG_00p—D48jT#,]mS^ /. n8ܲ4ԄcC:V(\hR0 ͿivܗBnfj'C ̾=GaoCie!8&zSaQ2]sm}6Ivk.@ƒG}*ÀZZ5-O#;Ѭp0 Jjv !n6s/|׋3C!;+p—@ TZD\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\7 IDATL$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\L$D\LY^_n}GWTT۷kӦM~~gٻ]^^htYv9>̦O;GZ& д@Sɋ_\l޲5ЭkS&ܭ@SMr#SR |ƍܖNB11 27cІF;檻lڰqSrDVV)NNC v]]]~&̜ÏΈ4^r{Okq^qܦH4h,MlLDk]tD:3ak׭^k].//L6=Ғ#SC2vHOO]xy Jin)q򔟤y &V̞|- DEEEeMғϸ:sH-[7lܔ{9+حk /8qm*-p :Ǝ*eV4߶mn}z#t:uM݅ϨIo͆յy:}g==;1()!.//6nJI.>,äuVM݅Ϩvyy_:9nYkނ.bʽ_Xi;*6@:TZHcb {&OF|Is>ZnuƊ{ﯳf򞒒ęw>khD\¨Fv%8E{nm*ݺvI]h(@ :|g}Qg7lܴxxc]zt=%%7mٶm{YyߵKv%M^z^xyNyk/}:vU_r˯mis{ R+zMYyyqS;w>ޑS7l4zL_vHB.&2s̮@鞒gx{rvymڴ7wN#֛'65k׽?TTTsrr:|[Օ))Yhύ:vKvMϨwȖ6n=1SLNU^~-[&^={޹i.J}Dߐp$=~`ᢵ\bc<+5;the蝝z}{}վ۷kٲexݺ6Ix@97ݮ re%=l888u%4?4ue%ȳf {JJi|`{pľSRrmS]={t4[pIﵳpתk{/4 KQ{p "K******vSn\:ߡ[Jң,Эk1Ws))yGćniOxkC>={-~qY6)iٲe]G(**aӳS|l}bgY;yggᔩӒ)yOɪku2w3^}֙GtˮwMdNw1UAzGl}ݺv햛7>te3g=fifTΰ&BY9L4)3g=tt0vn]44O'?|녖P[J<7oAiEK"-g>] 1Ie8T|a᝝_4$E4夓N>D!Quu3s4tx]eo?zգy673&xKm*+:|iu7; wz4{P` V^ӧK&UZZB;tQnLzj{6lܔޅ~]a؟w3yK==v:|DgE&M5+++8yOj9oȄӦ8˯v9}F7jF|_<`<茺Hvnظ)aaST؍%AEEE޴>͙Nnj`a:nj]M_Y_4䝝}9SN?0̓7a-XxEC+ʍdHKEEE#⥗#-Ç mn@ڼe랒KGNYg\T;o#vg47$͸%jcƦ=ǝ7m 7Rql:b{#R}zRh{J-X8z̸?7ܼoq⫌36͍./KGD7oCO̜ƥ7o›o~󖭍Tx:#գzν {JοhH tc9n3uIy)S>3S[v]M |ggᥣF7{J.5qz[piVjguf f?3Y9_)hZ*-*--I:ܩca{rrrj]Ӧ8q2!ݵW[z͆Ҭ=E|#-u]#}arү{X)g>XGsYgVR!6F[]wL7G翰(5.x5ąrْ;&MLYYY3y呇HUyΙ0 uCou+>eK%Ve?zUVMo91䎝Nc8g|֭.J8y֬]brrr,8rrrTuV3x)eIYjة^n*qH޽\[Fѫ&k./uQLLbC,:uӎ/$&ŋjtv[nTTTD geeM㺎0oH|~xiM❝ey>a𾺺W_lƎ*i ڷ{aSOuHcl47R~s~[))I\R\[ZdQNNN=q{ -RX"]wLalt]ۇwM%}]'YsRv\hôg˖-#-Mgn];HK炍"5~&61>I,]c:(ޏuV`L't֙gttYg&f_:"TԹ=ߠcu#[.)rL09=iIv%2zڹsC9~+uV7"Mr}z/"-ݺv{y1VX8) -9k8I2kx|:\'YÑX"FpcA۶;; 7m޲m{}RlB_:"qIU׬Z}~}7CH\iIj֭rrr"KsBEy⥗zEZ:|[n"3sn'|۝h6z9’ZaapVVVFΝCԚXd?S6qtfT_9겇Qe3sWFO}y{p8 qt[GGgl޲5c]wLJg<;x%=z}=lj *˦S c.BxSX;!}1Myľ}0I,GiI@',GĥdWM!kτNкvigzcΜttq_62Z l˯I}z4;; 2uAO:-Y:ͪX>:Kvf=3Bkx`b}F׆O[nٲzނ[^_&W~~j\8YxG]:պu˖L29a$-SLN\:9ϞqNAC{ࠡO:ĂYYY&ޚ ;&Ҳl&M,:c GTeޱMH,DӾ]^˖-#~Ȝ"̣.9겑,\|E^=茪t (]2qf nM0IB;[;o8eH{uu]!oܭkvy괳pWe֭[6lsSpl5ىՕ.tk%b̜47&VV}׶m yާp׻M݅Ϣ6-cQq,paF]6uVw3"%ʺo /hW^_~Q !z}udsӫ G;ZˑͽIG֭[l'uU`^diVv]t9CuԱC<ާGZ(GN˾`GhxN\D.ލ$t$/ /8ysK.'5p@Z(70겑Xv]Ajgeeh$#gOII;oxrMҟu l0S*qÃӱC4cX7:Fuܹs=%{J]+WќDS~ʘBb~+{G>u /Zo^iɑ-Xx{iVVV,svyg>}olcXSRYl"Q.\8r> ?v>mj%3RQQat}m둖򎺙GظpђtM\3$K[ FK"~ʘB_?zzht-_ξ{ GB`ᔩ7V.[[fռsF]6#G guu˯kKl@+--k.E^bG{++aQqW4ZH]^^d^a ҙ͙xj%[u"-O̜uh[n89;Ǫ?0ҲpW:/HsBSRYvn.//R3|֭ 999G{M H4 7nڜby Z%VLszn{giYL=$f'.("CGZGzy ,i4֤'Ώ\8լʽCHv~,lEWQQ1tCt~ MYo924f 7wv& 'GBK{ksU?[nIL&#n]"iPYwDfD5wvN3*+NH)Nca̜g tcO)ldFSW5sӉ'%kiYy &xM]YzӺui|O#ҙ9º6kwC|9}3{SxEBuu#z6nlLvy#pY}֙ i:>ϖ}V$_|OIy8a|]NֵrU+5֢n-VYzMNNNSOիgމ't56CkM}nނֺu;oB<3/|˺v9Lݟ) 5ujg x)-_8Y};&M O:m۶ VU_m{Ad.{JF׾]ސv9)~))K>h߬8(&x+WWW'=򆍛J>pulm.oU7׎[hdK?w@~׮'SRRX{tV/>˟$d3өlrIm@l^(UkѢ[GY,;E@PA^${:m&J=sZ&:S IDAT~;W3=˖H:F?~6dkˆFկ_|9'.oJ+IsK<ܿӯ-Pd=}vsZ%ZT :>3gL?16'ux(lDyْϝL?1{L())ٸ=]sfyh-))͖ {&N[NuMwoV6nx8NuM]]}gbE+{o^|nC2<ykghC N*_Hd25771}C$1۵+tZ.5tm_?ɬ]>{|ꏣ?wOFƝ7v> pMϬ? =4-\Жv8tώ(/w򩬪joH0uWvlR3ozf}󤒒,S]F}ugۓL&s+8Ͽ,]VWWGsqSl}ڮ{_G(/+KsQuMͻsÇ 6k]ԼÇ_W6|X/c_vw;xPdOi5sUTU})@eU}}} G(**:w=ƿÆ?|B/rw=;F;PY5ofL;߾pg7X{7m˿UԜ}L&soO]_2z @EQQ*z%}Q7bĒS&}s5&*y/ke\zu%%%%}q7\}Ēۢ]WWd\w|{N @+^Z' inUWW?qʴx JJJfΘޮ@!mkkkomA7sÍ{O,6uJ(?G @Q%x)vɷI]]5uֶ;r6ЛtTVU18*f=@e%Q&ϟ|C|1\o~GYlhҍ*..jӺ^鍹غ9߆Hsh5.Z|;)8D&YzU^tZ3gL_~ϲL&s{:yb(7 oq\??{ i͘>ѣwڸU&9WS`|3~oV|+yP NŁʪ={ӟ⟖ ߤ;zTYclnǎP[[A&i:X\5,] _{ͷvp EtL Fi.@IsH F\44 i$H#i.@IsH F\44 i$H#i.@IsH F\44 i$H#i.@IsH F\4@x┋'NCyݧک*:xwGFwp㩃ɑ4;4_P獰~؈/3v\gz\hV]SbvF|):xh]]}Wkm۾{7]rEw4 (--))y7 75]ėˆu.Z8|ps1gF {}sW:kSM<$ODk;;JqqѡyeǶ1psʪ%/nQRRd=ZXWWNu͹8@_!c ^no~{׿z?+|5Zy =*u=OS WkruMYҩ1kօWYw*+3v\To\uuwu HϹxS}G7qΜ5;qܓ9kv9c[𗨺۵{Ou*VV ?.TXatQfՙfϹ\htvsn&Y|GO<DK.8%Zau~;.>mqL6<-g:+m@uu޶ Z9wWM|zࡏ|L7%S™o-!t[Ȟ[<>mbFGlN*p7şB;unDO;;s[}$N9߁ ,ߜo:9~5 |;[}sV? >8u ]&\8~^vs=PYU[[;mʪ{PZk^RR2,k-\x, `3g;f=&\8>we-\Pm/n5߇+l欿WXho}'\0~eO7Ꚛwk-\Px'N_~ٴѣ*zb_={φgVy|֮^œZ~ϲ~7^~ze3g:ӦUhA,\p[eW;ju3gLou,\p[ͻm|v%FO^\/fGaΛ߿)U+WT<{lQQn ?өyUOb;n./+K|{:ċ.CVjI)8P/ei)F[y ǫ=犙3?qCc|.Q4K~|菘 Ǻ>;,Y1&~AACxpȊ1G_~U=[%+_t_Ww]:9:EN :ho6/\nxǒBofm|ᶉss w$‘x$N9߁•v _ۉOp6fssŧw'H6+ Ic;5aɗ_9KAP\\T^66\YUp+{2ibmmmn;pWΊ/9czIIIl\4!^6:c l}1S&F})7毝5&\qaqh@imhQJK.PYu0kh'u;_k\d2??zjDys7+jX^ =!Z2e1g &DKtݵD?WÇ }:wpT5ݷ? nSsqqzld2撒+۷T=c^{=lNu]Ưv'C[v wsήtDy !_<nֺ;o_URj…KJJ6>)rAdšճlhhؽgobgˬ+6Kp|O}cxnㆨMEǝ5v>uϨCm>v<ˆǟ*#(Aj]jy7 LI<ǝ^^c.|.Q8󿸸蜯Wvw@2 { {&8'.҂i grQQrWQ3۸0}vM<.,߮[pI '7CΖҦq>ݸ5zvs޾xQ[F$uu͜An7\⃴E}AړO>9P 0Iu˕㸶;Px> 's>c@ \JK(ݷ]}}& Ɵ{o~ak~qH.̸pd0 󞩓'Sqћ#/h“k JJJMڲal`?Çd_HAm?Du@iiXYWWfS?wy.ն&ȟ8v lT:K#jxJ6'޺ 8s?PYUNߩɍC yróÇR`3ux*~|zi:4\ ?'aZ\R{A+(O\}Sr*..sݵ͸ܶE/>api> wwˣP kz\aUk|IxHFo1x>g˃<:o^@2/_Fa[cF,>|1gFռ^CF+__zͺomT[{/.*W>mJCC>xV7|TijꚚ_?ٽ;EoexRsnq؈/o^ѯ3g͎ ?_] .~tX!~tE|:,,羆 `̙ Xv}ASw~>c=xt*꧚pCe8솆|^k\҆>[x& ٲ_D[CxZ">ᙍrzGO<4zPLp/|>t*\^Vٿ)$i@i8DQ5uOo < |4zTEx_ǿjs?okkk߳, [nA ->|/7 l۾cVx┉^Rm/n_{s-\pY {rS{ PZZ^6444L6F_ys/lQU=Ȋ n_(Zgf Wy|k'5YMsCϺ_.Zpnÿ1ZJU\\4zT}AyOoׯ_ѓk8}2s4v+f(>,K'tRƍ(/ azrSQc\e P3ɼÆJ*APRR#+~SLp*.Z 2uʤNyfm^Oogbz^ӧ=zuϽS83rbtח?展'λ=Sro>K>NOZxr'q g /cIt=`Px> 'uǝ^8?]7um  dh ·T4sOg{ACO߼_ݵK'+_tTޱdENVx+ WY1%K{œkm lxǒ ~;,Y1f!COsg:pА;,}~.⪷T>йW :Ȋ1<ȫvց|۾u2V=GkORo][~Z6>#e EN=6Kx葁<#ђ>sS/K4ZM9msƼVV t(i.1eQdQ-Ť@bL2N\WV+z"i.cd}4H1UV y\+$z +h48QM9msƼVV p@+eQdQ-@@bL2@Hs7WV+H?i.`Ye4R6icyo@H@VV @4:^6*UV @HseQdQ-H h1'oWV+ m*Ye\z0嵲Zz#i.i聬>N @WFji. QV@qЊcZ=Is|eZ^\^.z&i.@TTƴVV =4 =@"ڨVY-tDYmYT 4Zi@:4 )}t i.d=4UU{Lim=I6Jf4HxYmTZ賤@IF=E-ŘVd!Z>k \ *Hi.rM=6Z@jIsgFɬZE /Jk\6ڨ@ ŘVdN #}@ jn\wSZ-ddVY-=4$^V*W"ڨ>H @i119y-^\$4]ǔF n!Q2zi.@/Jk@/ HDYm❵@/&6bZY- ,xce@;IsSVY-Й-hzW1B. l*J 6񘶩VV \I&Y kHs)jF tlZ¤@*8\MU{Lim'eUV cڦ:[Y-@jIsK&Y @%T+jz7i.tlZ⤹Љj8^\8NM=6Z'H -FŵZ4(6jH i.PZY-=4@L+7.Xcee\TVY-4cJk@Hshl[\+   6j{Hs|eZH-i.@W @%HlZ;,h456F  l[\+N4eɘVV ti.G+)!z1)@ϓ>VV V\ u=}4RM9m/)QV@4hdL\R+x\QZY-@@P 4zlZA =@Z@ ݬ) B,i.tDYmYT @a\8~ɘVV @^jeti.}TVV @Hs蝢tVY-=4)YY-4ii; 7浲Zi.]-QV@@4iKje>\!_Y:4FbZY-t=i.@_6j ݤDZ餹=@SN1@%~ڨ2i.@Jƴ%Zi. WV+N4lVV t6i.wEE鬲Z M@聬Y@Ԕ6w@nke@o!(QV@}4jɘVV L t|eZvj:4h6j4Ddei&ͅ^)mܘjz&i. ڨBKƴ%ZK ._YpybZY-'B DE鬲Z4>-YY-!ͥji; 7浲Zzi.=U6,wF-ƴz ЧHsjEjIsi1UV C1=@w!M9msƼVV #=eQdQ-D&aGG=r'G|ɑ?oq>?#9r#G=TV<}WNwX>%K|ejNܔiU<A&훯upM>OybZY-C׿ d2/|N|xn۾\_>~/VVYu0\#UU<4"5߾:lܴet}κ[ao~ݿzQ@{ܬZS>UO7oƛo犊 9 p/7+7>|xqqQEW7Hsn{1!cgk;_S>cf% 644,|.*spL;_z׾: ܨ1UV [NxITek6o'G>ȑ#G=zhc @OxяuE|Ipxcvu~rMSqeӧ?o۾#X[f/~& qc,OxIٳgo9y( bnA<9o:"E/{w'Eu}{gF%BDTFE7@M&fW1l&Jk4QD`. QԀb : VUG5>}z2ul]sgZ MjW 㿿c7Ϳ[[YYk%7^\ly%im~ 7v_[~gO;\%͚݊c3ډ&{·:k2-~vsϮxkּzG,FO~;WJt&zD^0anÏxnC?>슟t7Oқonm~Kszڡomogb뉭m|ssr,+s~v֮]8vl۶mw,Xm˖Ũ_Y'>Rguf1rr}v9潴r{}VRRū}TsO-_EJKJt}o7^2c}}g @"7;_ n٭NJ6ƾf3dpb'N0ymlvZp>?O}"wJ+[ɧ+++%UVVO:= O~۹-]=@ncժՒ{܏3=y1cs/]47n\n5 s^ ?.HHJ&oƖ7l~I'J0aBs;.M0裎L&_~euMsv=3s=hgN~Iۿ};sP-\@/??UW״_]]3g)/m4qO^3YM0gsafg!7sI3>qGu ۹m/-[+醟\<U+mWTTw5%+_x5l 7ޱ`zNmuuͬ>L&+**rkӶ9t}ʚ9|iO0a'~/\;ʧ>s= ?%jj_xM7?g444L6u,Yϛn8&s 5ͩ+k^ml"^&O ߽f=/9mc`{SNcD"ѫ~9wvCmڼ96{5}Tyy~_rnڼySɸ~ONgW<6;{r=G g?#>omoNsġ5k'? {>~sǝk׮k?}ϧto sQ<׻Ǘ,y VG9k̲Ғ܏e˗?sϽ]9ͭ<'߼XoYiwϯlcr& @OPiBqst4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4ˆ4(~P?g+|`E țv6|!eRLЊP׳i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.Q$'t,Ɨ['Zkd$5#c8uÐx ddH{EciǸƺ20L256/&1X؈1 ҙ| I~.+6Li4N!*^_klUhT` IDATqn0HkW16(@(Y;4Dl73\Mn_6pYcdN%4z}"ĺB L :pq i.Nڗn#@{)dw(bk) _|gYے i.)_&uvk?&HD,95޾<].}J^}ۈ#[PA }$4kQOb@Hevy]L5idUHH-1ZYwi.uRېF6AeYu9&"]: l8al o>31ǏxH: 1A0wHs0<'K\HIyN&LW[O׳NƗoz`ŕu jfY'?1#$ǘH[FD\k~A A4f֩09рtn1A"bü/Lop*L`M7CyEl4f=Zkjkjj$G1K:F@`B ڭ}P vpN#ژ7Iq@zggmS}X_ LAdp3L}9gPMv~ Zwbש[nш֧2~4`ѐ1Iɬ=;/mu=_QT7ٱ''yMWFFi4dIű +)홝uM]'t12!uXk6b &*51[8M{fC&V@G=30*( C.HDTY?|.2 gHh$ /HsNCgHSv[j5"NAHo=LY<812fDm@[y!IߪT714n{;55m9LGg¨J@RsCrE1yI{vĕ_q,鰍3fE#2zD}iT6: #*.!JfWM]Ge PS-RW;\nW3ߩft$+ɳN]m.,V۪q}3AxDJ Y8 ]` )͢iZIEkY\i.V7mdtnN*kpVc-"h9˰H{&]=L়JYwH/ _ޖr%[62Wf;]ו$_>(ZgE@&5\J<ژ)S4nMU3wL4¨qإ؟ydkeKWsY_wxX)9^KVow27iG} \kNL`bϘ%q C wMUfREpMKpr%Ie?fjW=5չG7>ۇ# # W:~($;oswՓiD$)uaGov8q ϰn.Msp?0D1徹[o?8jc5:p3PóS&QQThꭤXSc \Gar9y=~Ν6ʕ4礁v~& ƕ́}) Uǝ0Xg\km6Pttt֙SNs_bwwF۳os%4\GJ&W' bmǑ$cof6 lS(WqDU Vj_gSQLM}+г"^jatq&ůwXlЍBm(m~:cryԽ{]ע YLyV^gc&Qk2٘ci_~oG$Ly4f[V-_O-sVV}ۿ57)/duJ򂦍CV?4fjjy6f՘m8ی/I 5hm& 6mR$b[3E1F i.@T5:E1[ }o^BZBIti벻[L-^Ut1N%ixM+$iHͿhZ|Sy=BY"W -_o/o3;N'(eqPeĉyNA?%yo;o!LenO1;vD.򗂯]Ѳe Uwvq(*c"T) #M2I3>4yi;uLVk sG5㰦7wnWk,XM4ܽ{WO&=%Q왚y0p!US˽bT-i3ӧh:.y;Pk/=I) `o8O?-)8T2uQw.{9owf[1##;3I0*/0J2%Q_΁Ō 1Ψ lQ!;֖|sNҌs;m EggͭUYU ^{_27>Է9g̯9[OhڟT`?UT^Ytӑ/}97OfZ]f.ų!FN;i[Y՚-[U<sp9Ӣ_<maQGf~sl.xVsNqӾb{̎* 6Ty8 kAt0<{Nw smutI^6t [ G8?'kIjdJbj ؆"QL?>ɶG+7"Ǖqvw$+?R'py;ȨdZ&/(jtqPlqǖ(&\T^x}: ̿W/J*Y#?bDU fSlQMfM":G )%Zty$[os C#ٺb)dV1XSبc$[3KzS -FIȍʍ)吘{=Ҳk& /Qsc>  v7s@ǬL7 'EcϚseWv D)aH ^yߺO0X1<^7A`}c<̶mK$3fЖ6}ˑ^pV<[}5 d3-ښMD$)T5g|!ik)~nfmH1)&Mv.p%c"gGТs[>I\ ]Ƭ3$RSvu OV'}d__񯿣 ݷ~a_\m+7n>ϜyeHSIXI1~0$^oqނ;[os^xybyBShnrvLǺ!l۩̟ѐmHb Eb}(m͘Vmm#9RTlZ֓Ŀ2/1O* n}f}e|fۢ}US(/Œ4 * o!2o|~D@>ř(pI0X4NYB?mݭm}>D=hzΜ8Q'MfN=sV?~tE9 ]ؖc(F*Of亙Ƃ'O,qپikG^pato~Շ4786u}u٦ F jٺ.^HYe3+sc}']6pnW:4 v+T|da5Z$gs;-{ʅ1:i;Q`@G h}*S6Y_4Xgimst@qkZ+4Wׯ?OWӞn{1-(@qݬ ցpϘe.\:l~;_J}E [c+˜pbM{mJu_ؐjj19nyBSw FJ)6-?_Q<C qLSP=0xީjtF$ְI0DS"4z9(/쾍ߙ)Sr=Y=w=١'es^n&}\(Gީ-OY?| F;PKU?0_^2o:~ D0[$9+W:ϯl4>%E^>Uuʦ} _cuMR׾z?ݦ=|-Y\ijksRfٰ+)؍7mؑ[%,T8g,-]3k1_IMLnMfoxI-,9s/)ݴKQ3wב1ʍ)U+iod^U21"h]loRYx` \}?I*k~n/} _RZݨ.lJO7]:9cUoZx-^=ex9I V;7Jl?5J:k o7՝:lTV/nu^ܢjcJ!ɓ4"w"ȳmftqRj ct۽fVm=jQlԓ?ʌgRAQA.?uڡ_mZ9i|ݺb>s杫Q%kKo' ܢEϷ߿&͕ f6鄦=pyi(VezGi Mz']K7k+Ϙ ڼKjFs-#ϯrKln\I(QlRMw}#;[n:HLoTj[晍:p{fi.@>5dLQqG=gZ]*f^Nj:5zʙ8Dp f\I`|CS Skz|AW٤>HfmaO<abmJ.wnݶgK2%4l{)_?qko6vǚfp׼5j˒ ;l01mζ`VMU[{u4!9Jk_R;wָ-, ެvkR,w Ie祭݌5\~]0"ȧgQ~)Oh/u4u{N{n>YO #UTr.Kלsڂ ;j֩Sڧ A-o5`V)[kTfOag}10XO/rϩLjl.Iӧ7h1u#{xtFzBro?aUO}m fܞ9`S {{@dvZ) ܾr[>꠶vkGFϷj #\|Y=>6q\ūtl #ߞ=Uj.I6^R왉tM{z(נ ϲ~o^݁v)KY庎G+7W{jt%:H= Gu⊒tUMɢ@]qũ~˯4ӟצٶ)-)icdڑ**zrWk.]skO0\ߋ9=3ܧ!nT2%k_[P{@q̜*T3 IDAT)muXlM֚EIjk͇b\ yGisnr~˵f{O;GiaA.M{uΎھtzY:\uv}y.cU[?w9ϊG͓9wvҾI )&_[o}zʲ%=q„mKRqq0Gy}$[XT!ޮK$)VE˵;z?UOĬi5crOU[5]ZNZ<9r;-%7~%WO* dkXQrcA?6r=z{f>^lo3)c\`ss:ĕFV%}k'fLjR}1>ז7֧v 'TiG @l]k+N%S[wK.n] ӻѾ5)H*(YUU=_foZ'vnd}/cUԸŋ<3{zm[nDj{C*n5g|t0P6U&b;3\M(5\VQ=a.: DzQnɅ0gvp1'Ֆ*Aߢ\IXdHb:{Imc1ve^]~廿C(w Vj7Wi?[``9?Nuu*.-܈1eK%y;>q[}m/ifқÖ ޔ?㰦Ucj͘`\9MsNwHL%?ob/# r=`Nl=$Jer}jݨDT`O0's \O nٶTw*-OGdLh#]6^rbljo[d6:54fzqe'ZP^uȖ6>-Igtõf1#IysgJҕSn.>#t9uŒt}.n*g}`(͝Kz:}Nb%hbؙmκƐTV7<G۪ugSVm7T2/Ж*n`܈B3LOҾ͠3RmU粁Ja`"D4_ަ4u?H$)8[qTcJo٬<viZ&atX2Sy>EbtNqD0<9ϯtͿJ?Y-_Rg4NVzI2 ZBw^eG_.v_y:Zg.wy׵i|ūU벻`M__t>SOղכ2quRUP^VAO7|GM{{nGJzu{Xs1Fۿtz7y:e@*;fsv7-U:ތ(lړ̪>o>۔'0FR[vN|x8)ʕG}ֱwtpaTjdNKN ^bVn6i6LavW,}O=/d2։pcW[ͣFIN7Zk%xI8J_+b[6<.5`d U'l◵J MSQ1QZpд}i=-Qn^z{k˛ dv}x4^6m,Tˇ`#bn;;rs@kwړm$Yu6OfՇY_.K!#4LsKUOy{כ6"j=$ U5(K6ϳ`%E9nѶ]M8n`S)ۿ\7_.\=Ns"t2̶m(753W)Gzu˛Oo}wa]E/Irݚfk.ڪU[5mױ5a-^=gj-^S50͘MJ7/Ҽ -XsѪ*^ӫ Ǟ?Iu@שKd,J+=|S%F$:7豒z+g>G 0&5/e >94ѫwեoS׳¥^d'ROxG-;FAl@H':,9]ohԉ4/u҃@6j:Q=OyG+rJjRǯsJaĎ}o6/߉d+*oN6?(INTт6.[4qfLôiW>e}3B_U[5%+/.rg5ou]NYҼbrc3K$Wn0ii[/pkMabekHh37wTޑ<n}lz1G_o-N Go"[0ʫOrzBsYN+S] s\If˖Ȝ̎^oL(.i|lڥ>*Ohx͹K[[FMzuKV^|iK/)]u/[ſu{ #G/(WRuMuo|He)h55:@L?!lPXv^[ztSU%hi-,VLs܌ƒFp5-">Aon;Nkv ˼M;Ӓ+C4{<'I_ߴMS]+\e8LW*PU|)tZ'sOg66m'#=}N=co}4`[vIS?9zk_=S';PU7Cr+Ŗє؁Js/*X|nt6s"&6O^u?,vִڔ(7Ƿs #d6ntY$;bςi^:nxQ=gѻu5aN<]vZUO֌W^ʹ$-{]3&kj)P&)d9͕La#K[{WJ#q0a4`3yK]_YSܼ߯y>.mmw{㨡bc# ߼Yk6{;똢#ǵoL'HuG|WIem=xds3LE.j2G.@kQ:xz||/>r|QEZG;1ښ.(WpmIŢҙ%D~n Uks܏Imu\OIJR8JלwҪ=!j.]y6u]Po?J͝MxF۔'it@7~qs)Q]4.Zd^<)#\ac 8mn0E&Plh/a"w\ }J/t1UeZ8Ήv3NIzڢ񅗾Wzq"η-p@pt{u8z냷vg$)04$9Iֲu{w{HkZB V  iL-^'\zOtf $͞+R>hw)M7Ls<1~tygcUWߘR{4K NySg7cѡ,nԋ[zk).P}z!ҏFk@9T6OtkDmWԃUu^,M#v'}'о)c6TŽ>пy~0i=6^:rMg+Ξ9'iTK-3Vm2c\,)D8JGiN\8vip,yQ*OXgzO.9yw:vQ]~r.CۘR{$5\8I;!w`Ii+(eAl0UߪS.sch:-#-εVܘhswfWuR׬ 4t͆[|NlU}l=rc]vuO<NG|oxfyB .n=17'Pa[5EcZ{z$=r48] $0 xd5(_ e>poѲچ9 Q2%'0꛰yGbj|kJlݍضJ|&ʦbc(PX`ޞi.C*^CamW1LgADDD4l0%"""J&vˆD _ oK.lI)WlfG ?y]j4KE@& iH9$~\;8z[1fzqRҩ44 }|T^jEŨ5۱ŵ%wqokV?u7 @KGc^-A SSœf5MD DDDD) -Qs41_I\ Ѝ0ٸEJđNyC-ȶ xM)ubnbV}=Kڄqi«p d"v6z,1EOnt Gw%!v@Ֆ`Q1*6ѨoނED(SmC[C5/!: %SyCU0Q%"""aFB2YiƨLh1wα%(&9 &#hhzz0m`?i qj\ ! 1*60LM SgL 14-fZs 0K;OļN7 ;4'DkoLw5[s}jvD4Ur `y,%(N@n܄P!i.N]Ҡ tl\0YKDDD4<0%"""J?O#fѥѕj Fe&mGr&|2֕Dr|t0c aB(M40[qC½>Q.Lt|тlн0{IL=s& ̾>Cm?@4[F+EoBI :ȫ}쳍wvر9.Ueu'{]ɲHȸl>BDDD4l0%"""J%.|:b5{uĽKNNCG(7t̑NDr;U)I ߉9خd[eU@ ['w$GˀfiB{D %Dڭ(UMIХR(l|Uih^jn5u,CF,70hjh֯T^G7XMXQnPIۮMo~nފuKR@F,va.%ޣF`C̀f#x=#Q9wFg Z3c!U~wt_?@6׵e(/FmC7{6+s|&J0cFXo}%m=S0f  s^ٓ"Q݆p]"""4(vՑu.N=j:r1ѠL, {_Q\Lyp+ؾ0l٫ax5y*Rsk hxޛ|:>o6[f+n߂JnԪTMi$ٰ]yN%>pFSTl@7ణf{w-qW^|9 W_17QC|ڻGkB@(OId;jfjͲ !Ա\!"""J_LsR)fFr2%) ֮[q'?"1k&{3sԗ~(a_U+UBˇgw/M>8@ xYJx}x#ɕNL;"fjhDh+=rE07AZT-JT?;rDy1FeY '|hM#N/ܳ,Ωz2eB4?<{ԕL !l0T_ b(UN]F 1UpdI>"R` ˫Bj)L;f0bb)a;҄H`+٥j[q.6[?~ߛtE1FeV_ܵ nE}SAhNoQCv[ ?gȶjApNò٘U3;غx8,ttѩ+v ށ<^5DDDD)z ѡ+/ xs jJ5MϽB'|awbB;bn!:m;O9?[clN":PF~w) .:|f-? E0jyGyOmSQۀꢊ5}c9aH=WPW\^%َ"0L1\rxtPɖDDDDi7R/w*3h ʥd0c?{7G[:'B,'w P5 Hߔǃ~ܠG_[,H_ E=sRCGi:UnŬQKAê2SVl{IѪًfXcJ4GZ7TJi+@kmpNT~âxک+!' Ug """4\"""˳RSv@ >ix"Sǥ VD狉L%%߼Ul&5oNtz,;b|()@ O)E\m|Rl-n +oB}CR81װϵDY5uMo*=jCisomɭZYX6`l#кW_߯؈o9-?0:G2'Cxaa~Cj |T:"b(5;:!\"""S4E&R.0>_MUWgLwֻ IDAT4z%z29PB `*+şڙ/vsfp{*k7j#7_M݇Dal$&Gh21?XBUNS?w.i6+֏_TJ46q*[+q`q̈́/9Xw%YݵmvDɝpZ{uI:wicX$o#R7a*t! @eJɄhCx6`KDDDz5U~S/IMo(l5Ɖw>yFwe7 =]=2EFlV/=ŧ#IqT L{d^ɣۋ׽?뮟ӊYg\%wJl]vE(b44YkXV[UxbÄE.nh4GNj']&")C/w@G@LGC<ܩ|֎Sr ]"""JDDDD*om>cp cv(Q ?Sx0e6*z~clFLSʎ4lfw @S Cp{"w:4?8<-#\WSC7uglC`$Hv+f^3Ζ7zF*7X.Gi@Ola6zӆ]/aK? _գҷ{ܾDG',b9)mjΫ݁䦹9T?7=NYP*kf])҄ iM==o>G2&¤1BS~*qOq\Jg ݙ?lg+]OޏS*W749;Ĝˡ$@.M5>!my0U}[6ߋf˔ Mj:Њ6[toPE /o5 MJ+S=rn;]pm=.W| &r_Mn$/<0A]{>CJH'i}Qik}sOPRʲi@s}ʊC-<ڱF[3ɲ&L)Jfv?v]d(>0BDDD2LsRÐGV -wV~$]rsŪ 'i:λѢܣψĥ)J<Y֣͖U 1-|F媲õwr׿7Qwߛ??@7r}Ŵn2[+uI$T0GoF0MMdk>z0Тf>e3hm5bT?[vuoOW_wuǴNJ̥h,T `\FZg<(U 5<)+[_7J f[[cHXmJ,OEIǃ- rK'۞[w T[鹱be+Cz5@}u5]WyG͆,f_>eܾ-Ex$5ҹ4k#0 '[ޟ:?z݉X:fb%UQ\\ ~Wc`7?F(۟D=vuqNÚؼF" 7CThI)a+>됚/&L)UEnBSk>cF:x!CDDDJLsZD_2L)?ʳ]yEI{UrVr&GCo(ܮ ?cwbʛ6n_-*ʯc#I1xXaߌy$˱nQL)riy}Q:%K&!n|膬@̈́ō;z ,sP1O|뷣f;[z%wۨs ըZuK|c^n*69 Wa?20og%`m2- f] vCȴ' YVi)0e",¦If `1%"""J%DDDDC*`65ʵ5@E\.% [(EڽŪLj1{\^+4V,p+nxx0o]q5^[tv knƵ\n_1-;$N bUaQE_ȴ@N*O/4B1awOx) s eoN=Wljw|mܪؼ5Qizh-cK׎wwVmɭYb6ݵ;va&4U.Ev"aJChn @&!ȌydiKDDDD)4hH(ᰗ/Yߑah'-lqOȔ̆jx &L].XSY:Y:eQnP >}]vmp8+vq!y :T!,h 0( Zhٶ~)ϼ汇NVNpNׅ]h4 rmB8(;>"zզ1*ç u'&"CW=ȳɬd'"""H @h|2 gGzUU{<#Gta|#J*|M*E޻o׋{t٫n_w:P:6 g:[.uKQ4oL aȁ$6Q. K{KKa~zfk )5.pdZ~* ،&(o6'i_b}Cܠ]7LX<҄.>0e&|N]L)ҢJ4EUۉǞB"'Q zYmujEi}.g'O㻯8)sϟrхSJ/k_ܵ`!=iɸupv& g33 q]=;t$SyG3J=8pܾvT^欉_jN(U ,̥ah_( z?nXFi:܉ڂ(Psp= h"ҘP% ~wл>ek^t؄UGve&.}T6!:P@U ^kswEE~mÎ7n nqNmhv{\8v׳++oڶ/{Kp_8.,#Q1+߂ 1M:}`/P: YViQF{#^T4XW䨜SVp:vSy\gWO>kʪC7+8u\vC8kKrhsƳ K a~zuO)c,2T_g5yzhs[r6ĵc, . [5& =ҋij0LrJ#BBtJ& 9DDDDCnwN6b5R;jv\?MX8:MCH)EES*vKƈO=PPeK~CNjttGI6[ԳizX3 \uvTrntʲ%{2zͭm,_8sѕk۞k6]Gh;яٵ'tK7]}ܗsZ(*Pzjv>w2ztgqҕW¥{kr__Ì:Yڷ]?~]?߯е~;Ai>}W1\Ωy 8s% S.bKDDDt{4; )ia/))pp₢G[i'_٧>m^x^/i m(cmWC:4~$2\JSǚoqiQ̀x^eҩ; {63(_8r>WkUvٱ4~ܑI Er~>G?~c"A>vfӆ?j˴]غf/5GUqAM=ܠʏַXrnz+*/FՖA|=WuFy(OdMpC.pȴ0ʥ϶>޵m˫knblMSxS;CTE7LHg|-O_[f{n- Ks]DspYg^R;v^hNBm nߓGNDDD4%)n&`ڪ;rNuNi+_8yIW\Q}Wߴ)t>O{p>)uK5B9u}P#QdYg)`J({;tJϦ=þSES #8oh*)Hm 9iFgE% ӦJqN:;W_gwǵgw^~*բˈLNFvnu-$#Ԏ;PU[rxϮ/;P\'^[Gg@g MAtSt$LBv!r]24axE)TSGx[ۼ DDDD\anOm{ g.oho/i<҉/~*‰'+Θ 7Ջ!<(`n|A'bK'%˧nR~ٱ䣤 R[o7mQ}GHHG;|&?5aZn%Z7O7>|}N~Ď]Q0bhvnSe9 ?`͐f VޭguUP2=b%hW|1w t[}89Ra@)-P! S*BdZ*R ӂ Sd@Svj"ž#DDDDCi.QI d`"e-#̸\k _Y? X4TM} / - kSǘ{;cYҹ*4ᰯ{}]34[!pO䄊\J#䥗?|vɊ=C3ҹEZtW#\pV`CUlDZ۟kwAԂz݉3blOŠjzߐi0%^iwŽ! S0LXU1]H!l*\"""$ HFc`g)cӽªIK>y6,xX^1K8:pn݅ᾫ1wjseƐD)Ŕ^ۭb\HX;ۿ,=202[3G4TLS^AFA\o^Ƚ6Ҁ/y҄4!BoBIꛦouNW6ޕ?;I h4*P}X8pA$, @4)6q"W+վ7CMcODDDD4(iY=eQeV8s<^H#gL߂G ]aKii##a\R\d>s9a%-^؃+a-CW8.X_l9!ԡ l}<=d?Pyqr*eè| 'aK P:n :! uE(RBU7b #6$^ DDDDbJa$xEE5^`S~,φ_>?"8\7ғ#:O^^|ɫ%fe|5j~N?{ؗ>Y:5ʾ5pӧxٙf⌉RڍpNkspϮwWnu~P;ΩpnL[l򍀔ܳ'ۋNr2 2!%"Ң|gs\"""dbncc5;-Sښ6u=vm,ڷCr˖Ύkښu}7:KVԱwWa#1S br)W/~yG g:KiSŲ5*.9!dL7Z}?9;;ykQ T+uZKmOh()@7bn`k%B~̏ v tvs{ IF.}zb'Z'"""Ja$"""tT]-qӾ}q,ڽol˷.¿HlYr)-J%,[zn5c mqh >Unעj~WIےʟh/V_$g$X$4 */FeL1^6d6$I.Q6(YXSJD۞[uS gZQY}8J<1Ο;v[=8!}-\,|fqqh]O۞[yG}/_>v^Ɵ:Ng_!,HTȲlLiv\<{GVD|ʕҋDzrswb_)BR{^ȫnpNCh40jZЫr5/z,s("€&DDDDI4()bn_5޸0׶=nwZnQnj1tvqٴ_ۢc-;'9N*ñvX4/H_r)=L*oewѣ_pw ݳzfqNnU羛uӚ?`"nށ +/yv hFS2|5c=TUf>y$ |kKs3p؃X9 X/4()dB;-Ӱ40psox7>~Y߰k7}}nIUeksq)I8a~+gHA4R~&ƍqI׶=~i}ͫ&|Lٽ$"չ{@bE(/:XU{FA%aW^kanP>Wڪ)pYVa!֧rOB /C J( EE5^7*nCccb:h8X3A|CHca. Wͽ:J׬ t co\tvŲ١y=s'؇'Tq0i1TWc܉9 uyyNn.EQQ%;vlɥU`b/-xaw &uNCu-- _T1V?vl{v/)xp{e0еi"ȱB35^Sk c' ҹDDDD4(9L&-#ٹ#}kMDI4c[/m{K͆&׳+xol|/d#J( 8sf?}é8ї`žq ޖ3b*Vt 3ѕUMSpBI@jlM|zsi EI()%*pk/^hx>ԓLhh馲#otooUUeUwx@pU8jp9 M(esŃp2,[OkmZ!i@&mZS)@)y*#"""J8#"""(o;̜7)iO,0 B66kᇇw:sܣ;/ↇfeZ7ﲄ^W6{'ͣ\El(o8oŲL[:WtkıV}_J2JIn7%ksB#ɧ |]27IsNLSY 8&L64<|ų^{݆CWvY͆am;BjQ\rM<&Qf$<:VŰ{ .K3lohO9KuK.w_9ϫkraaaw@$2bt+h"$oBغ*`[؀"Fxu7zm @UW&Z|2@%3'<% \""" dz)\} [km$L]~~c뤉3+ si8ou˝w={\5Wp\3g}.?/LD,\ucpr:gΝs7t;w,ۭU_,E{=0 t-j"}Uo ޻54 rXưQ.w^ƹo tunoh=] zwC((yxEDDD,#ff,3ƌ?::ORB"cd6UdUrrl?ї{[;Syӥ-Q.5|0]FSW}EBRpqgˍל҄Ǎ@fsƶ=5jK]jc֝ؼЄQrg71WFsIrHQ.)[iq$ W!"""J%¯ pیJEɰ `J3]v#u6edt*,ᡯW_=_319_0yοpiw<^ZwS՛vF%Ky~m/|/{ߵ֙'[M)-'Q]+Ûҷr&Chg z >tUѳWJ FSDDDDi.Qh2--)+ͶM@S 5 (Ys :hyjhjkv:flNR-^i`QC{H !ZQSLu/Kosiʇgқ%!Sop.wgg~t6Ú KkFV߄Q}%׌{,J)տݜ{{ D}R.nm>R5!џ CaKDDD4Ls(C7B̘yrB .6ݛ;Χ"ͪج/n.}`?SL8',W+(.HxuxchZҮ:|!(>o:Ϻ⪳Ǝ ; (7fG1U+vǮ?-}pkwפ _Gp\"}i }fZDV͐=2J֛\(yE0%"""J. P۠LQ#W #@7[3tx:l1Hkx{uP:i9pTkv;`_ߔySGoz8TQä́jiX3?B 4dyGWYb"HDWi*Bfk<% \"""KS!+\l9Չov,NdK锱k)t|dۃU12TO(y]<h̷5a+[:l%ք? q}0ݭiu9UUZaJ:0 c#"""J*DDDDCģ+9wKK|TQs .2ZiqD` Xi$W&]{@q;?/L/Mߛ#m)*+4 T ĀoF?=3/y喱#ɋ"""dcKDDD4D$P<^P|Oqᝂhn&:uEO v9.Q:u,7/s''{ޥAB@ (jן2uH SB]MQvѩ#TDDDDC@QDmmh;ӴCFr^/ՄiS% E:k҇y;Y-_3\6*9~"YfOXxvTE'Hm1( `m.11l0^Pބ%]C)¿,O;1s'{ H3loR!SaA48,/e'J!=?v?th"ӦsIc/ΰ`V/Y<  vZ&"""jT:aq?gM7/w|y'al*1HSƈ.U!34 >AC̸ۖF9A~ ȳ%"עdxڽ \ 푤 eaKDDDîB;c}Эgʇٻ DdC" r-M1m *%h dw?IZI⚳VŰ(\"""09LҎkM-ł3QIDH.Q+M1l*N YL|d^^[c߼P Al,´⇈h1%"""J ѡ+ׁyΡ~&}q4VviaI.QtSB"r 05?~^z_yx| uw#_ 2!afh\"""TGWFFq"L(~St5aZU:ѐЕ/ubWyoR φ'wg`r EH‡ZRi.Q U12jh@$0Uo"Btc!5aZ3Q:aKDDDV׀TWKI@ZhReKPHo5Q(RP @@jPCTWEb(Q HūsJ0RR!th`KDDD$.E!*R^Rt&R H<ؐpZmM H%`ILnTH  /_^%D)A<B ?4"""i.`@2GH2Q &R)Ni8MDQ]Ϫ(RB @ wDn*ҁYK]H!WSR+@e?%\"""GBRH0ebP8V*!k8u{Q cIDi͐ 4!zK !U(]xr#M;̮ǶLhlW=k//Gb%jF5u3ɲH^d*k3hNjSRcm)Sz(jŢjjR𩖂̀ CENN$اQi]y{__iNZY9Y痽r &# wXC6b\Eds XD6b\Eds XD6b\Eds XD6b\Eds XD6b\Eds XD6b\Eds XD6b\Eds XD6b\Eds lLO!zep=}kEP A#L˞>abul G6p]^߂=B%+gΞBTC] =Ð!7-{z5rJP9eDIS 0(9s-s]w~!DsSCw-?Lu,\A 1H YHY-gʹZ32ɇ@ .nN9(fON=M}^M܄M2x\cbEhƘqqi;WCUN.b\a(T_{\9_>nt !L&y(=|go$o=jIxc~o(J5BǿǷ>#L@zdge2d׬g~^wE_ b%ry"{}/\5jEjHB5juX5G]6-ɉ^/o1KXQP-[hm&7,;:@2ytf^w`-_ YIEl61yk稫׆M1~Eq9E֏LRGn }nڐEk%E)JuMmѢBEQd4 LpADNm0{d\cˋx<<݉R+n&gN~"NBp0124j1Lꚸzr8E&t{}2'6[,Ǡ7 c!L kBnc4mo+ҡÝ2C#o/.|BxqZ_{||띐ɥ/_"uםGCMѼW͑!d-ZTM̚9S!be!m#Fl6kǴ+YYPCDZ#ZePǍd2iæ(2>/}jz\9Ꜣ|!uvVY-29jN!`hjا SQ"\.YYnO+YY,uic6;j_UĔ %\`xcl.M)kwb.&z=W'|>9x=Ξ,\y'/RbvwsTo\Οx. [OhƌGe<|S2Pȸk{d }vIegr:)ʤ)NݤRM?uz}22kKےkDZjקֶֶWg?L/?: 僀(;À"(.{7VzC2#v|I&z?Œ,NxX!s_ ~%rcs 9کE&t m]۞Q\ c 0lB^B,vMx䢹S~7I>D!9E. EQdx_z}\Bukϸ?e !켱Y>xxVUQn:"!rr>$XqVKf!WG]/~k5-ɉÝvP:~tn} 6 ,4^+eD6`8~WB r[!D)HcveۅEKiJnǡNբ%˄aNNNp1ic !<uL}|TJa$~Էx\Ǵ%7MBh@gXQ/ln(6 KQVՅ#;BՄͩ^wSsvwoEq \pP3=rDݦ9$l?Ҟ;{]yk9B.VW,B.{v%CApL2⪩E=z3{ޘi`8d&UUM7 uB1,<(M&ӝ?|xfϚYLk^ܲ#]X8W^~ub2v{|dfOc6kڙL_xoaYBD7C8vwh/ ip3lGQW@dBTu;v. nO3 ~d9|pt PPx<<)tgYbfok_Q;2fLq~`xcl.pf6\]Y͕Jl>?j9=k\b$IU[6,/ަRd#uLULO(d!>[tcML&͖zNQd`v :)#=ʕ+2+ڬ`%YX-[6*Yj_HO7 HO?k7H dj`|u=jd3L#Fq` \.]VNଵz͖j0䡭+nB ;S>.ZTXe\}λ]2˗Z-~_=v*)JOwg6VUQeگ{}ct+78n2ǘͣF%_g[dLХH1a_2&;^:1'7eikEjIfn\ !θ?En'XD6b\Eds  O\Eds XD6b\Eds XD6b\Eds XD6b\Eds XD6b\Eds XD6b\Eds XD6b\Eds ,gN~Μí׳%׹!qC*32~kEz#P\-]cC] `C!^߄ӲR Vyk{-ʿ un0EQ2,dDxщ퓥Zڻ]7ץ|zRKRP9>3VKԩɹa:?xPk/Swi qsZJVSmU܊EQZe&&TQYe$7w/UUg6ditpSvmg&MyY"n?*e=IV*\ 4m%{}PjEQcy!a,VTʖ&+d[ty`#Xpx SKח?Y]) J'MypvˎCjX>bw Q^5\>V1u-õEd3JWx-P`!a>3:K%ᄱ`,YF{x8{ݣ(lB| $!mlj.߸fKزY^XbLo킂ݾK{^rCϿr{9_{L}mֶ.S޷X,B%]NgFzgלprj_-;²k\ kvrm'ً0 z6䗪F\mjH65== $3sqq MU\WIII%t afxD=_:zǿekk[yƌGe<͍+wi /7'珳 %hSf>Y:%2Blt"~Ҝ?r:ܩ}+/7'9b_US8h/l. \jmk-oWgvfCqӈ#QFm߱+CUWܼMy.\˗>%O-!a7uZt^l=8fZCSʑB#Fa4[-8)P9nZB̚93 L ?;d^/SLomk?7+erp'=6c1m͚!5i !>[}Fn?pu1fsSsK2ϖ%KVF L&999~xBN')ٳEs'hS1fllw9L1wԣGsIIIB9M͊7É0j`S>A1~cs"S~7}K5-`0qIrY4lTm0>'Ce4biWY-pe`C~>Y\MfqFc=|Z*;+ӐYWKf775L}`JCfG?jIJJ*ZLm%!MZm[ra!Zh"~R9iKw?Ί@jw{N (mFz…<)%e>X(9EٓwBȋi+6>[{,يw'OZ-ZƘ óZm(7y `al.c$'SO-O'SK -ZKu/~eN VT:m/H9ݝ0Z@;/}[Zx]^T熠QpU!Ģ'{} Rȉ@9ȸ:կ^w5hvQ`GL2GƵWTVoL\J?a@ hSR.nI1~ݮNFfIJB謈|I ǎ zviѷAu-~U`CC{̥ɐ?֐]/Xj}_Ui~[7jg*Y)QT__.ױkƘrFq!iy -ySsGJ{Ւ09Q{t y'P_b!\O] 2] qVo;JsgLМ! #^;?4*Sl66qq C^n2A%al.Lq={|>`Pr=C8i'yKsg_,ŗ_$oTl^Ncѝ?MLIw_(_E 0CW~gߪi^wY3)ztGү%y`r_ h v g*dFYQm;#.w= # kljWĔ/jGK6=kfy-gTi~ސ9WEQdKV9sl62ˢ([:K)rvYqu`yȮwU\WE*nS7nzt U%+uװCqgnߒ!ㆈ_p[iִ̊ʪ])]6EA]h/d ׶p4%] C麵x,I9\Pѿ| (Bٳf!Z AL~},_TElC^;vōupL`JIp/{vNNu=O>S`0L;iﯮQ`0o yn:c'GWyMjU85j#;+_@jݫ}YgVm]bJ9EѦp~&IDATEy 7kDs&ɗfL#1|^OXCTj,~L=ݞf2hmmkoFVD^_ђeAĒ{6ZeVAX-:Snyz5PGE%2>` k*4Y]c^Q!El Y-_|U`h'#Íڛ-)g7g_p[ iGFG u^ 榆ݵջ?:ѣ?FcggñZϞL[?Bƀ-ejb[&$VRPPxTdn[\0\0lə<OŖM2P1 !7k0L5ٳf. +]6ܤyo?1%QW_P`/\Z p佣III#B2u_Ϟ5^o8(ջihܿw'9.YBt,Yzw@Z͙w'r:咟6rȸ{759b4pG;[}ӧkj_B/X`ќ'%?eߥ]/6 r@qq/PaPO0;+3#=]6WDY{._'w;哲 l_|Ucnjnru{S> ^r:;u !{1gټ`l/\|՚+W {uR#EVd Xi tܧO747 ټ^}D綵ww, -GΞ5hIMkprY(_dgeeN/*ZHʫ5~uXKRuLCSo$P8c#r*WmIm2"pYjU}ۈW,_7Wq7:/ 3ds%ga8{vk[{_yw'f \=N;y/yϊ˶), ?uk^VRؽd2,f 7ek5B3OCn[UEcSl/nQsFc[olCyEe7L ˒EBݓcՒ\mNQSJنrα"1԰vkp vv!:L&Nnd4{s)b!O𥪪]]I.9EѮuj$/*|bNNچrL-αGۅs8KadJVRkmkoh/0cܜ…O4]/ l+/S`;8yjj_]|CYȸp+F~!hfK~fcˠXL-ŌWm;հd|hdp&-QW~Xvm-nOزYv8EFz~3]Xn"JG4_p[hy sA]üs;Ոzc՚g2\ϵky3g?}K`0,7BWQAqͶ}Ǯ{UG$8P㬖榆m;vjy ` u9[ihaiZy՟t|qP_eIS/QWUhɲo=C[0D? ɡ֜CD={nP ['qX_ٜ2!A̴ kg4G_:7 upf$75\.r:[uf@! O5կ+ !y] ú@," l."@," l." \-]cC]99s+2~kEP^t}-7*nL8y" pqOO4x vZtiӹ !CEK[6VQWC/۾c_zwŖqq^3 JCba'׌#0h != e׿Y@nΣ9܏gܟfgeuAnI6വL_=mEqIk[3FcPgFz ovV)zy7!\[偁F>SbYmn_XAbuZƍMڹCC~۴sgׄ,FΜŧzffZQ9ab[Q\2abz mz}&My02~ԭK}C =i:yEQp\c ^r !K 5^okEr'D\m& PZ$okEeuMme|@T%2> JDZ (UקX@PE@[HEIaNOvGԠ4iʃVw QE!CJjFehIev1ukOXSQBTmi0ZTU򥖤㎺q2Xɳ1b4ujִLٛ=˗̂Uw͘񈺁u/?/wZlw kvNQw'e͝xWQYe$k.]_樫/\zpԨwW)JN9nww qC\p/_lr ߸T{buW;xLާ6c 7n1bDS> QFm߱K~1f /YF!cHvVfk[z}\y9q d=Ւ,OnO4p_= ![oY=$ܕNү Fc/*z2<^ԬFT}GL8wuUkjrSk+j#^vVɎ<#;+SfP))游D6h4 [ۃ,ɉӻ{:;AcTG^ v>0Em2d:"4ԒX•*Milɭm; y8y=~-7oȾ<-{6oNʋowT~=k_JkȬiy͍Znƽo(;T''=lnjn)]_&в1 QBhsV&q[7F5Fc|FÎj' !N>ֶy]eN}‚ByM[5guDƎUoEqIǡNWLTޯI2ϸ?!N? 6<1Lo8M!Ƙ?˗iV|IjBFys0 ;QSþ--.HO/[_s lnomSC;v `-(X(N'嚋!ߎz9ͦ!ĔG]G(ʎ]/ u\l#ݑ}wo(KuGVKs֎ZYN6;pgw+a0m=tՒ !#6V8B"~ }_Q6 "6nQ4!(@A#(+jZ>!D2n"vpo>nG[}e !^O;hE%u?qӣ3fh(*Y騫c,Vu?!Ď]/{}g&)o8 S)%1`=.\ ˯wB~bJJOT:Bg$ \x@Kק>/o#B%itE CVZ@zf9oiپc4l43!/*fϚ\UpM-7o$0Lu=.Y0¢%:}>PΈ}#vȍCF(-"^D4B %Ė/}*y9C%4%]` C麵!'ŗ_z)\6LqV_~0gyթ^RuMbIuu}LAk0^Pg1`2dcbJ9E&^߾eX;)X C޽(.01UժMW9 'M0B߫iBF!Dن;n`m榆w@nOc6ݻQ#ǵN-YY-Sճ/765k{k:q<4uBn9ޣ-RةWT2qI1-aڶSbS@ ߰o1fɓz3 `?tEbQ#UBh9X˓<3'=_M_|UsSCm 7=->sm7tƌFOnho0grՂ?bEeՒ޲c&Fƍse\8%#=QWuzC#㺜ΎCVKrqBTSϜ=k@޽ukÍC̞5^o8(ջ 8dgef ._!;+-[Kח|Fw9۾FcZ9<~dGK" #MJJgihܿw'9.gOjeys[Ԓq2N;)Pnޗ0:dT(6pG;x'ϭ[`"dOlzrU=?%:n!\c|cs]oС"qqV͖*@wŦuuy<'/RfKtZ:B~@yֶv%Y*t5O}d2^o& |eOS`lKڏ#=!݃~?!mqq|icS - ƚ_ &Mo J3r #ン7'ysX_ʫ5!/BxQ֊ʃow8e(+[_V]{ksնj.9>pN.OG&K"뎪{˵!԰lCy(QĈdTHO?/*z2b B˗zwODl7x(,Zb2d.Sgip]霩~g,/_Z[7VT럚~ThphmnjZ+_/<_ˋ9g\r`(YY2-SC~ed9ȃrm'7eG|@R%3{˗ \ǖ?su-]ϋ)Cr[+*u2#IS/QME)ZD? … $=o3L?Tџ>\Ǔ8vlNIL W}'3]hko?([6(thW(>\3%t!\UwC].l.(Ux:4ǟ ΂ۏTRUѿ| e[us n.(@," l."@," l."@," l."@," l."@,㘼uJIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/alora-labs/index.md000066400000000000000000000025141507671574500254260ustar00rootroot00000000000000--- title: Alora Labs date: 2021-05-27 description: 'Showcase: "Making performant websites accessible for everyone."' siteURL: https://aloralabs.com/ siteSource: https://github.com/aloralabs/homepage aliases: [/showcase/aloralabs/] --- At Alora Labs we always have an eye open for new tools and technology that we can utilize to the benefit of our customers or internal projects like our website. The previous iteration of our site was built with Jekyll, which served us well at first. However as time went on, we became frustrated with the number of dependencies we had to rely on, that would often break at the most inconvenient times. Hugo was a breath of fresh air in this regard, a single binary that works equally well on Windows as it did on macOS or Linux. We no longer need additional tools for image optimization, Sass compilation or JavaScript bundling. Everything just works, and with a substantial performance boost too. Hugo has become a favorite tool in the tool belt and the foundation for many client projects. We couldn't be happier with the switch and we are optimistic about recommending Hugo for many years to come. Thank you to the vibrant community and talented development team for all the hard work in making Hugo a success. As excellent as Hugo is now, we cannot wait to see what the release notes have in store for us next. gohugoio-hugo-6abdaca/docs/content/en/showcase/ampio-help/000077500000000000000000000000001507671574500240115ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/ampio-help/bio.md000066400000000000000000000012221507671574500251010ustar00rootroot00000000000000We are Ampio. We design and manufacture a building automation system that provides control, comfort, safety and reliability. Visit [our page](http://ampio.com/) to learn more about our solution! Ampio Knowledge Base is a service built and maintained with Hugo. It is a self-service support platform for our customers and certified installers. It also contains a complete portfolio of our modules---building blocks of the Ampio building automation system. The site is built by: - [@mgetka](https://github.com/mgetka), developer - [@SteynAnna](https://github.com/SteynAnna), maintainer and other members of the Ampio team responsible for content creation. gohugoio-hugo-6abdaca/docs/content/en/showcase/ampio-help/featured.png000066400000000000000000055501601507671574500263320ustar00rootroot00000000000000PNG  IHDRetzTXtRaw profile type exifxڥ[#)E}= 0XqEdWFOvGT {9?ں Oeɓ>?Cy?ko?~B~%^ҳϿBc~ߏqeX11C֌ܿ_y#~ 0? 6zmiOџ݈WS:9ߜ&z .y 5`g0跬z#[ߓ~fK ۯ|_\׳>y{wͬb#%ϸnq ݺ?LͨU:vzs/;,~w1K8}q3ŒΓOR)/H;+EF&=wߴ~%a?:wȥ)2XT]Wb?b^))LC_.#~f2Xe 3Ī?HDg.<~z06qdb&d--R@v4z%-2-gl'ݚ^j32QFn5UJ~ZЬPj:-[jfVVzmKz뽏>GЬF}1'<9WZyUeƚemǞ<;ͻ'JSvg^J[vwWZY_YKota5^m{(8 E"oJc)ISHtEML*g12XNL=QeoyKm3S\4ߌ}PA 㚙iz>Z$ݽ v۽s4oe?qT5N8gj:hwQsϚ-..]\OsTv-r 4's+Q;Ѕm]Okۏˆ~S^^ǴR֞<%[%yVp+ޖ\B@U/TE?Rs)eLn h#QeM{{AF 8PIp{ J%Ǧ.לIǧ.zfme4W Dm'DkGabuM7M}s!cm VGZiq*nį~v, O{am`lʔ&z6<5K(P dd4[iqR+s;cbN]UHҚ)żA/}ioh=TLЕi>U7GΜ9m"?^>#nT.;..;vC*E+2cmJ9xO5 0Ĝ)S+)`H Wx|R~ 3N H-Nwm2qJI% 2O湼-\fx;cnGA!s^x-WE )pѵ`t-l־7xQb4!O[ @ .ϡ/w,# $fRYIB12@Nd/g5ƥi/y PU9"/̬Q%lgyg^Q;lU´ D&Q 2^c܇@s nLH@DMm8mvZQ486&j+FF-mؔΠܻU=/9aRlWRǀApneқ1} 0TMe,кn5o7NAEf{%?Q$9L72M4d.n r>.J7TAt)tf&l 6|ِaap@"j|O^K dhN7Be]TS%ʔ vNvM\(]WE(A7"`$6&֑B8.v]k@ؗՃ_M"fU6't&Rk.0bmz}ne0|z@[{u;#) )؀Li,^mL,. ڝ S92!2z_P81B_)E`,ͼc\!~ (y3(C_ɈR 5*&I g8HT7T ^`ͶTK#d5L5|2bktwz D`AB32ȧ8:ziEy`(  >M1ׁ~P,y=(PQD%`LѸhl( >(D'{pMvPFs,Ohs*Y*!p cT:T:y:pFq@F),? /ueXC/QwG:E_lct:ASunh @.lZ=(v^33{'ѓ1!GzR+0HՆ}p*8Fab )}jv סwV DCdLbx eT~hbv[4 zC@@&cQuQym/rl)&y ّAY!p"ϙO_i foHHò!5&B44P? d ~&UX !=bW"b9NX{ ޏ \+mڐIT?s Xh4A{e`chxWĊ:GP%42Nw,MrvbDGל7ttu48xAYF.8K)R/ ]r LSȚOIA!K 7MZҧy'Ƥ>*8A4ŀ:b6!;!X/ p=Pɫ'Ń#U]~n杲*Nd9Yq?21Z覎A8))6}s%S-|RWY]DN4AAӂJZc@ {TeO@b MB3C5sYD==h <%Ww?C  0TBJ8,'6&#[ԃc3;r.t`YNx},>jb b, pV;ùV1ɚc>fҙg+Sj+j^5KWSt= ɡR<&4/”OI8 -k#H2K3ōAQbJD)SN@ȃoP" )$` &-p|6Y2;=XmFxCu+f߄UPL) WnGFx@\IL/E $UPx^~T 2I&t//xX#HԀ"7zMQ'UJ#,)r!G2Tc6ogFH`b^QRG dhaʼn: JK4IF@KP]Wގ2n\0f2CVgF! 8cC W>#E!Q|}"(-O}H ZI6I=KEX]6pBո7@W賨!'sU Oj9[ho+7>2.eLHE <(7TKJ¤ghҐ*Ҡ TsXRzOExt\5Q:?QSLCO(!)A*JT)_ ސ9`HQ$Ho9U̴ǁd}^>`U%#,SzDA64R1 q"Ν:Hڋӎơ+FK ކUzR[DgT;I!˭88c~vgWrDn-Axs܈(pR1ptcd𠥽°8G0@]֬{6=uqff ڂV4 %+3*\# [toxo@4sלeδ" X3f t[ eBfwm`o=E(~/RaH j JIL+Tvoo|$z~ݨ5`Mh:.ls@$ɠ>R}]k#Zbv0Eoٗj#s0_Lq?B銭t0m t&/;Dpjx;+mt_[CR2A^I| 'HCcx_j_êNhk-v{l\M|hji&jȰ(JI9P5,DE^RSQ*SY9N@j =Y%F~9kh$7=s:%MZR];` fG, QZ0vMA:=fCNl8PnRx"+ 㫎$|][˅I[ QpdIIg~ O?¢tnIhC,Pl2'h+{KdxUĨ70sGu"vOSV"k@UfhJNmh\iCCPICC profilex}=H@_SE)A;HPZq*BZu0 4$).kŪ "%/)=BTkP5H'b6*" L}.Js|׻>S&|", xxz9XIRω]o <3dd!brOGU|!yZ= yme4"5Q)&Ҵ\2`X@*$5 nR0t(г 4}l \im|^ok#nkp =!9P(gM9`qd pp){ݽ{-r r iTXtXML:com.adobe.xmp Screenshot 5IbKGDC pHYs  tIME "צ IDATxy%U}9ܥYzf@Fe!" @A%D[7|姉D|$.CQ!" degnUuvt0â~޺UuOmTGDDDDDDDDDDDDDDd9:F""""""""""""""2x*tKsu1NVn1F """"""""""""""^""""""""""""""2c-""""""""""""""UlJ@DDDDDDDDBٌe{-Q!)-"""""""" 4 DDDD@4Y9>^%!""""""""""""""1WG^3 zބ@鰣T@"""""""""""@"WWQi'~W)-"""""""""" #ޣ,om|ZAqEDDDDDDDDDD^leUuƙ*DW "m v$QAx ov`wKTeʕ+ۿ{w_.]k4.w<^w-nkq{9urEDdR[^gz\ .oy]b2}w>R-ws:Sڿ_pgq*VP\DDDDDDDDDD x6zU/$ ι-6M-v['INDDU[_:/ >|R4{EߺYf6 ZB+jdȋr!w/:{`+6mM}} z˗s)lr>3et MZɞo65,c۫\rr;8x';winv8 .bv}s뭷O}K/]v٥__s}~Yt)|;y6ewW^y%\sʹ?#|;;dttߞ:~=\r%\<#p o6C~_C~C=c̴kH\q7O~M7mA=V[?)wy';z׻?HPЅBDDU_?9) λIҌS*$H5>}sSX{DQ4eSO=E/|A*"" vȶ帕F'oټbŊ'O||_~=v|0zz_=_xzZ|}{/Ke8`{3ѷd[inX,OpEqsh"]0DDDq>gNP>o^~|xaƔ:K]xLmDfV3ΘVx8w7ԧ>5OZ^@EDD")""ے3{raG_Fwu׋Ǧےdٲe~\tERk9ç~%~vq 8#y=ŋsyqI'mn_*)}v;S5{˺ wiBy 70c6' 'g>." ЉFDDdz:znc '>}n5}=;nv)?<2pܱGxp7ñG\ G> [󮕬Yys睇dVX1uED{Obm;R<[Aw:wOwS<dzn#o=Z;5^م𣏳jviG~ɲ5kQk)G޴>ߟ~vy[uFc S?W.?o.kk#ʬsOҦ9U.9s9c{;nEDC` <|O?1?y`y7cg}ٌrdz.rJ`3[?|,X;N83nk/."e5s=3[Ywq˖-Z׿qZz+;&;>pW}oX,⨣zۺX,.p-kyySEDDd17ewn~|5\k{= >soMuy펯oywi?纺:6:wVIivk_gq{^""j:f M&p)lvYApGrgu=#袋8s@PhEۯOΝ;?oxSo:Bܹs9# 8蠃mK/{b /{wcVm}C| _?'x ?=̟?visW3o:wv Z#yvoQ~w}|J+o7zu,?Zsοov珏d9("|r>Oo~x쓈lPnZ3/}ægI;Wџ)K.e~{!q_|y{o֌ξ 6~mSN9eG667muva{{,~M~vۍ,\pƬ^:'}{ ,੧{|[jg\?# yNO}S(<˖-hpM7qM7}>O~}|K.^tMr!i7娣8SCv[qvmۿso)\|OZm\&|vڦ֪,ZN Iʥbfz},}Þ<3wpA>h}uxy;j?˯⩧m(W'ZE|܇?axnfVDDd[P:8}_琬h Ai< _ۚomZڀ+{-]+V[+Vlze||()'t_Wygq<34Tpg=[s?o}+z 4M^_;w.?O kKg}wK/>^{-\r ?#EѴ j-wS~!Z??SN9O>r$""E޸ ܽ~w9M(cp{ŏ7jUߴůݑ?xfz뺛we>{q׽caݖq+Kce[ڟL{kf:}CzѮSϨ^;du؞~d{/]\x3tg29+|Z|Ve뮻/_SN9ey;K>oYggggi駟駟>{{7_pQVhZsc{wqALy\.siqiQՈh4-R}c|c^c%-'t'tK-{{{7]^ȶ<~s344ĩ?Nww7<7pil>|(swcwڑģO9*7\|l|88f{g~DQ q?UЌYf^>޴l>cm"mZeؒ6󵱺+U"""[{fzv{ulAMJ}k\{wk?{4k={KRLqȞ(ojy[N?|lBZF/.Q-[ƙgɒ%KT8"""=e{su7$)mv 8q,cl|έN32:FwW2u|ȶ8*""2 \Y/gx6/EfIDDdQ@ODLJlU[DD^ S);ǩpDSW[DDDDDDDD!{h.""{/#Y))LM96""""""""""g!Tvv{w9F6/vѮ3r?0ҥKYb0=-""""""""""DDդuk>SݟիF*-p'DDDDDDDDDDOJYϱ/|]v3ÎFP[DDfhޢimso?\DD ]lYv{SXKh~W\64Gn?!EDduTﻊtHVޚ@d[{S:]vS80{y߳l%*"""2=Vnm1+=^ """" :9\DDDDDDDDDDDDDDfk-V4ȪDDDDDDDDDDDDDDd+-""""""""""""""1FoY9{69RY{Vw5{EDDDDDDDDDDDDDdb1* U~""""""""""""""2+ϭ]O$DDDDDDDDDDDDDDdֈ_VXOP MƫUՍ22:OϬ'eyOVRd˒Ȣ}̝; 5iBTI]sQGy↱ k֬e׿7ACKV^SgycØ9L04<Z 6 AHz֯` $*gvZΎ28Zd2I#extbDFQ@:&Ƈfs{ 4ǘR:w{,|;䟷675a~1!X0$l7!ϳ,&XcI,xkpge9p Oqpە=/Cw$|X*Coox"rK>;.˚˱o&JLNm/%~Ҵ[23L>[}4OM:q>tW̋_?vwͼtx $8kfͪSpI|\33O+웿䛻UͿ-~r=>B֚ьegz-VZӿw3 ӵ[ֹi+W~sD9mZ@~/?i0ַ ,#b1:>NISG Ydw 20e(1݃K3I TTkuqzҠQB10(`V\~m 8)1CZFVh{ IDATS,0!RBSO ITQV0A@$8׌!BiPX,P֚[IҠ$e|JojesQVP:nr8п#zj¼(JTk5*xzZNT$IXCZXÂ>IRT(di>mWW7eFG'"9GVq21>>]tuvR*0<29s108(HӔ(k-###iJeqLǤYB^07xi4T*cx]]7>6AQk,uf)*4!Ӻ1ujrB.3H}˚7Oc ;||> k%Clsȗ駜slz7 ZM7g>G( 0I1}[g 4y6[qhXK#MN0ͯi~w>#,˚_pIZ` D|YXG1Ř}~{,y֧Ɔ`Ie_uo .Qsͷ'cRkX7 s:˼fa.xa7m)+tuv1>V! ѿW_IeY^Q@ 0LzK/!-ccXIFgksaC^adBQ u\{/yBc9]1<*VviyvlXC22"jeh#bKH4(DQu Av 4Kqi^|JivG<,y'[,fpp(.d7@֭Ï>BTB1b  9Lf.k 9X.K'Υ.#* QLP\.3<4D8?fL! 0i Bkms?p^mq %0k4X0!Y=BRАd jiq=>*كOS##$:B$KH\ ֧Tk Fygi$JFQDR4.͎(tK Y.7@b1"brrRL9(b> "5_G=I(vt!| QRa:ұȜ# #(wvuQoi :ʝCqI^"#{|B ۰j(BBf)]]h$8iPyhdã#4Æ!i$ BBRO;6Zh4 $MD(I]FZm $Bpickɜ#iToY lJ&],iŃ2m^,s̼9H1EQa l` À 8vskw}]?,ym`_/sKż)(J2z9߈FN9062BwOws='DRDHH$fyq:G4(26>NOO/; Ѩ7Nz#kC*qzz~J]]]x|? I_6 /K3z:֪ 0o< 8z{nڼ~_ =Tj5vY:6o`y6F\ZKGjN7ۘ I#/˼oQ,E0 MR H 8&5(:($#.$*)K:q mкv`6o'yVg{;d>xi}-/'aN=졁udYbLAF o &ix!0x]4/z-pc! y^R`Ck5[jys`|Q7֪YTYn5b(`! DQ0~Yp36VQOX,P,2 P,`e`!MA̟Ǣ n"0/.#P12oڀ $uibiV2˗eB }͔poLލ^ͤ}tjľo:]Z C\38om>O zw>h]0¤kv#/ z5/]=Mi߷+ =fRyV9XJs |ah6`v(km{y3 ^ho&֟HF̤fjen3V@6͜/T?+l}6Ӵ~ kmnߴ9|fwr\fu?|6"pl?DFc75'/~b,́IglxkV1n5z,m*M}hཙ2 `A.]~95OO~.ZM7gzPuq>C~ ;yvfRݸ `|>o|6O^-@o{59Z34;yL>!)?&Bަݖn^lk+ F`C0JJ D3<:vف3i#! ,xO`0KP KRl`q3:V'syY(;(y9(RR(( y;I(ȼ#b1%J2Qf y(6&9O#M(˔e*dިEE$IFA:C1`Èjn s$ j0rj̥ fbqhтfGz$n b}(K SDža`(H(J6 |0sa0JE!zYXCTT*2<<(s!<%t;(2::Ju6䃫C(Z ^(T*S(.TLO&.45MOO;5oL>ǸԆ<um Tqc,پvs͞jV#?#o1&Qb=f{$'oSocl>\y2 BȒv66j.'o 2y={,YBdN `V=am 3G՝wZ(H yX,Sq̟0c w!c(s/&M R*}|YqX2k5i`uc:^'7 f=wX[n#MIO;dTn |`7|q;K4#͒|o,&rH4HjUpY?'oKiBTP'y;K(Fn2RD#IxXA!eR!B8cA,}9 |0 6? 0AHT%02o>4u\^dͯI)gDQO3J VkTj59;:f1fѢ> "QcÀZN^ǥFNwW>si~TL3Y'xC\ m&mԱ RpxIBG(A:>RbDE6hq*5FGG,wvcqDX>^%m$ q*#diQ1g<6)K:J:;248@WGfXdRRɯa8& B6$I.#7ҔΎ(")DA`E,9Y'YY h+ˈWoe,Z5 ,T.G!C#IQ%W+Bf1֬]O=I"XHxGh8C1tu2gN7iR' Y%y P*R.w26>xFPrL@0ꢻ8.Y$ B֭[dž5눂Q7˃;8ڃ`%"̝OVgHy^3r gxh8d" RjA1KFؼ`j a1R0^1QQ,uq㼧V7_cf_4,MpY6Qv˒4_~꧳f -?̵\f]&y[›fDםfr>@oMgi#Oi-˩ꏵQ C\jk$iMN$b1RG!.}nyZ1ADoO#c[Qc10=s026wGKVjzHB3r86zO\%4XJYQT)˄aDZm&;ur XJ2z9r5yz0Ř,MVW)KyPP(chm#|)KvZ,\D]]p!Q1228] eee ;$P(0:6J1Ɛ6qzzz$ g*YI^g``.QT MSj]]45(Zӓ'qDetuu5кy2OhZx>j5$T*Sm4T,b%yhoJe|1Zx6^,iBT(`L>N61Տe1&?&[8fJ@{J6)g~R@Ǽ='81:`Rfc'YoY &2NӔK%GGF1bZA 3V~`}҄Bh)ea1]tv)Kvjtxa"s@0O>v5lp$B@`ic bRG!%x (yXXp0! W[قNԼjfL903D w<xLd\f'HZK,ȞȥV%-g0)㬙j&쾙F1a?0XJdimD6ta%  l{&y(~#ukm{ofv,~Rt,ܭf; ˆ8 BKā%y~ ({,& Yv. rIko1-z4þ>&~"Lxr_k5k;GƉX לI*v}|P.6@+Lܥ oN-L43+&F.cox q?yHҤ ^}JXOܥab3Ǿ7i6ʦ7os#&'6v"?j2&8 3yɖo;3S0zKmb^۲2x7;&fM[LA$`}H?V=`?;)f"D]tjms䪹mvҮgVzc;h'g: ~"ml-̗fs&Ro5,S/K섉lP m/-/&M^AZޫ&M] 1A"z8zyHR;=sCh-0)q3x_0H(ZyoGWiyJ#IHӔb@h$` `VoQHÐѱB>Ƕu n 4vohuj׍?n3N 4;ֵ7sb:tFu|礳((Fyɺve${!iG6*y\#%,q7nw 8_'N}FX*b^G]OņE xg.\W1dlh;}\ky?\޷`!=-P3p cpAZ&apчg➻~xl@f n߭x€F#%ޛ6[x;PC֬ 1Jn0~ÇpwCA/lL!hRefU9{\{ >ܼRiBuo {y. ~Mk_K]sn08||Ӱf@9m*h1[Bs 9HLKCfPJB(|.Sŝ2t1M6_,е B*Hѕ;p8еCg`z"&`y˜W (e C*%05 i6u, T"~h(89$:T2pzƙDi $ z6HB^a 6R 꾅 s(f%,ŋ^[h)&mUCJ(-#4QW6 08$BH38oᬅ$wm7feIz4RHiL@IFc|4`EAk,'3#*R7P!6$%ZA+Ue˳39 33DB({H.Ui;0@s@1%핸@$0G$AYfh5`1;!4 BB@0S݈f=cy,eh1\&,G> "X14G{:||6C6p68,M{N)震!|f*>\H8 8KզnBh7ںlVc6tjdڬ6\"/ H$ $c8ӽO߷`ȋmSk{/{ IZm I(4/MCI=h 9+l6kE,OЛ@$)neQMGȲ${z J`D稛ΐ6#u`y*IkJVGbo&>D;o] 9VW+,K Hs֒ɯm p!pqqQJM;R"2ԛiM{$Kt$H }4Ar!(H\1$B0J%=tYS'Ehv=\1G% *Ǡ}?)1NRn蠥`٧iꦅ1J $ZF=t׶4sr7_ E`y0K/b,mޠijXGTGR;<z|F)Y]-{8E:Am7 HE!Mix) l& {9fR{{ĵšViR808r8÷1y5W_GX,ArY8OX0l|ڶn We$o s8si0?! [LG]{JI\^\7fBH ! A#B1ɽ\\l+ƅm"U- O7x9 RFP+6*LJiHȕĽW^+:!E47]{sOs~x~O)|}wj ϣ8 4x0㯉)a=:fdY1ʲw9^F `qSu'~]߃yƞr>{d)y>;Iu통'lHXvc0e#{t[q67}l__*!MNY5j#97}+(YiV#',!FÊߕ뗛Ilz&o%=ĵx*f7q Xk} icx򥿑XwaO5  z+_Ɓ?}Rl8`}oTH:9cZK*4!Q@HGYLIdIBۘRBm;T f(8@w6JiE 0,sn`ßQL䜡zMؿ,4ǜfYDZa1C+% (ɨuJ6!lpxxmP !$Ta! Xk# EQs:hM$Ia8 q9UbhEQa0XKn!BuH %ڶwU]ƴb@u Mxv-4IeڈMJrAHjE- b>_OgghB 8K\ȸ'I>hl[좻rL.X4kwYLQ8wpk4)IRa9H]BXQ5tM ``lAr)Y9h @=g269 xq Lx`AiHzeϿO䴅rǡ)$῜?C7 Li` /|_җ>`_yGѴ-x4+0 o֛5,Eo:O~W '?/pZ~M=k1$On8!㏳J p|?wޣ1 :!P o"">T){~1 Ɣ!00H2^0!Ci@i95P `f)L ܻs}:U@KLr28(DҚU0ha(ʂ*#1ЊUh} !58T&7=:ca a5H0᜝1UvdvBRzѬ0]<0MUA OA&$Y$/ƧނJ4C9Gzl^zJ8*94 MSC6$: kEU4V#7H clL{j0PtYNXBjG*CgHBH@!װÀȡ!,D v0HTpyզudlIY)a9#Q ID;<.R=i"398}ǺYV8aZ8bDV8={ 5Hz !Mзq!IpqyyGtry>#a6!D4*>$`=P\H0p4]MƘ3fRd,bQἍ[2t1,x8gĊ[S.`2g|:H.ljmEu}qkXX 0-H!2DS擒 OZaU*i+ZH֨@U+W'W'7TҔm"/rC^ЉG= mlVmP̄h/cz8<8 v=jciNZwPW5V-%K{u<%hj7Isٸ/ JTU5ͳa{#0t%|xq~v6Ts@UU]$iK(&iAk<uIa1_ 2l*|pxi Kx%7 Ànzc&jX7R8hJ+X; ϋdtJ  ãմ $'lqΑet48zg@N.8HIkq-\""ϲ "s'LXVؙ)$?܍y ~E?OٯϖxkQ4Πﺱ0 JjxG.- %!ڶÇ@rLIħ[GPA'˃Cl6k"M*owæ 1X|[mQd94:bz;wnNG%z3` Ⱥi0 =$:]ߣkPJ۷@i FN-ƩW $/v=x￉MUmZ1ܹ{7х lm:r!X”ZiY|){_믾ఘ/ t5m{L9J. vt'Mx?"۷EoE0!C)ov$n>lDh>οB?x@xtgB`ٳsaiw] ?Nx.~Gcrj,kBB !"{pA*ELpyTtoq{>Np܄D>]d^h)fJx;]0@Zwv#̞t;s|NgqZC(KXpxtW^yIyb:u*`n !ED_ c[Gx= u26-4A$ y#KFϋ9 Àѵ< BJ À>88,*K)uԩ=4wL^),I~-|@YSʸj< kfl6M  STUMQ;ccI$<&0 (D0LDEPYdtHS :*x9#.ܹ%~} zH!\ N6Mqv iq#uW^ ~LZiߦ}"ZhŒI/#"YY}K>CL_s>Ethu>DDCb#@ * >+jƔm )"K /㗾̠AI %sS,}5f`B(GQVXV(uT |L _Y|ӟ3H Wo p B*\^^A(7~_KGHģOg~7I4(2Wf<4A6Hk~9XAH  ]_So0+ D=C*5΀ 'qIW^~ wn fڶCuq="4cZ `qrރww_߿pII3'4(t/x3EL5{Zr4x0ȟ&b`^r6`-Z! ׌ `\DBhgoBrs2)ikw-e,MжqQ4u s4GdYB6M`ZO Z1+gH4U2i}ך*:W-Lۂsz8!E4 8;@ gOV +NM?zХHR߾[>)cq> yE$w1,E-9`zH4ɶUq?9؈ldAx|O@ژZ5R4 >Pp@*"5%ѰZ, @wHƦpyun2AEa9~Q:N4 fSEÄDQ^#۷$]3UӣfvpϢ pr|BfhF/P*=^B)"j y{mn`E1Z &uP-<^v3 h.{6$*ZnT֑ȣbrbOk3Db'3)EI##sQH%YM4a15?nxcr6NakC0z]xY-!鿷a,!hT0U;#RP-%Z3N˃XkZD0k&^z%6R2Mur#Є$<1.|x"Г7%Yo 7yVӿ7;IF,$'l{WQ ݉kZrwh}>~?$'a橿kJv7: Q;|!ÔR@H@$Zj Sfs;4\v6ϓ~oLx.|<9|ZmL3"2*͌w50X] !$,vI3OJhJ8M14pi")6&KDDӞ uU7H8pmb׷]j6bW}6Eg6uy,q΁84:4_Ԝ;G_?'$ B$Wqs b̲)ƒL(Ɗ3ō`6I<€RF(`bߘb|{(lh S:ƺ)d*ND%>7 ᬡ(cUyD[qvv4M޷߇zDyM3/['ĵzc<M!$#@`q }?3Ǜz bXj￷{s$ 7( ySxW+3Dy*جksf.쪪}H[ E>P#S)ƀKͳ ff|rm=a``Zpp^%8>sJpRה`5o<>w-~npơbmZi_|I9EBߚ6<Gld=ǯ)HNԍmpzz4n>R2(iMbsp.^IQPZ u,֗a^쀶xw IDATO 0!Pw "jZ߻*ǬunE&ܹPjC@odXF nZخ'jyO)u%/C zCQ9E]Ud77R7$)ұE8鼳88<ư"~ }נID.i@ 8OT*$ R'-؁Jj؁=(g%# $TIBvu2}c  YE3BwPJcZeQ"8 mBn㵖I!io:SEYz 1yQ M3I$i 65ИEY‡G?m602mIa$9F $ː$]a: #I, Nj8;?ܹ{@.Mcua-[Y2/!bTjh{:ׅ;3a{!|\qSt'( .T+Xwg)tSG8Ĺu _tqE*bG"VHO^ ;851T+> MSR] sez"Ѵ \kфh~QeL+2Y4ːf&!=sozB{GXh +jKa0`'QZ(=G]mkܺ=?5nw7"}{Ox'oOm@7t2tÈ@ި'c+4:^& /`^O%|67w;Lx0ӧЈ ?3&NvG;  9 DCkM؃ȣC(.$OJY4'w~BA=1GFoiC8:>Gwӱ¢Knzv]~ؑtYc2gJ$Ąn?qN7R*ȈZ,/}G'MNum>'+OP7h8G=ovoJ+Zp?уx?]GSfc7/1N<|O9q#v L{ގalw _{e?y7&Ǫw>%o.zkq~qp۷8'QY'P5 85cq<Ϩ7ۈ&a:/%,unHu}#Ifgq4n[giȀssl6y $E Sӧ ;1) 2\^^DxBxGwN-quu< 0Ơ+.hzc#$tS4ˈk~v k@S:l _Rb>Ob!J>i %QjSqahSRJy x T?(+F8[2&@D#o__9W_/x#;_D9[ރV L׃kN1 Cof=~L 8 cq8۟կO)8HJ4ھ9^zE%qyqyF{p1֯% `&1R.WT D'>xRt Xr سA%).WWg9e<1+`F7 8?U ɱx{81Aj%Q!Y4t?_)E4pH&)$#OӴ0% , a@RmDs.AqSr?$0YMRЊ^@wyYB*ѵb\l*,w=q~~#.P%%#k^puqlT1\`1C ٬ ILz#^v0PR`0=3&s8ifk8u+n2BK2mq#l650}٠o{Hd",^˽.W$Yd;4 bc:C #I4|h[iF@u-꺎^:ڀq%ńW",...0+gӌ쐁>zt @t.+!0q$("slkSAP%ڮ G5|JCp(!S\Eҁa"o8(HĴu=\KYdIJ@ DJS}O{!iM7{f./)@^dXWcB導96 IJTR)<OD԰a>k;VW}6BS7!sa,f9?z$%c0s\]Eu$Ti,o{Q*ჟ+f8;=1 )f+ܹs x7 2 ]סj"zP4AS@:zPfMSgX] B۵Xm[ݻw&]ozY6uΨHz../qxx }w \^^RK)xOf!4AL< &^K)1t-iiqSJxk3%ڶEYd #a|Ra!ď?Xx'ὺ8"!ϩZ u圇 %B^{OPfE4 Mtiꪂ,֛5N#ZO([GӔ~ͳjBP(cz"T`IgL䬿tdEB᮳?90lDw}~ׅvlg8BqNFaqU1'ߤ {f a@]t.8x ]x B?[-!~ۉ@bR{1O.R-br)NY4I!ֱ/{r6v: ҈:[3Vqz]=D3?vQnw qA,!hur mCyBhRحlwM"wÍtKj} ;6D"A#xG݈Ap/`}R_6ӆis|?u9utw=nsPПOVS8KdNIQnO?=cX#dcop'v{v;ei;O4>X߭Ef6]h!n6xC\vd'q 9-%q `voz;<fyt.kWw$owc 7֑vpe{ڦu$g;h2z &}\sux< l:,$zHCSX.=嬄Vr)RN,ᜃ:4--X%, bJ(x$!_ªѶ5%㰔$in&&\c5H$I(7!i8LD:Jۉ2Xq?9BE< 5:,鯀 y m`y@BKk;i6&<"B8t";]rӘ#a|M U ZJF [Riˆҕ0';7+=>vs\_ZT* 'z-D[aR$ C<> vdLN٘>uf;B Sٸ_ -Gl+$m8;1uM $J}vF %{ cԟ(ѫn^{e0J6d]hz`b!   ޟ| ~m;k_/`B-/ ;/[(=j&cIRxoYɟ A5mWɟj#;}Eͳ ?3Go /tYH=݃$]YN?b>bN= B/e bR5L4☕4Ax1>}QhcVk.믢,)^w\*ܿp J4(=ꈬVJFQ:w"0VES*QC(IwHOUZBJ%cM ]ߣ3 @ $$w6]' !1co:H P%fTX3p>jtm!vLy{xx4ˡ$ y<Vc<@e*䤥{WGfӶ:':V VWLm8{| ;HQW 3w0;9A^ԗ$ 5NZ+F':z.(}qĔ|`4%f9^tw*x1pD. GT*Iib$CSBi=LӞR}xդĊ558{;k3L&M9EOԂ,KˤR09`PpqqAm"qdyF}~krrYc~vIudއIT#/嬄IAi <\C]!FgpvyLR8pB06) mc4\ppǤF]Wd`-UlEqFN2&Xgi=2kDCǩs~JbӾOs3 ƴ9)mΦɷ)*X } - JOxc ai~/x̀4I (1f %6 E:Kw}/i9bW+5 ct]OE1CӐ@B:ֺ)-Eq !ϐ PM.4>" 7M,Q5H)YoF㩻>:Қ kXUmãG&l6s>3tmĺڬwC(E['pY:G~;4Q>BW+b>+ѶZ렔|6#C3 20Α& #*DRptNI)`Z)t]N("c:®cx&yYw P7 ?d}7q8K&v?:j,pp@帼Z:J E,Kѵ%iky,GTw6΄4 qRK R*l]"KaLc 4CQtC,tDxQqCt;88GUWl6v@R[+'[rJ3X 0!0 YӁrw}}XW5$X❟Y Ȳ٩S20kp;,r֝1iʲ,!pqv/^7.  ΰ҈7b/w~M*'Sr1}>Aq6׼Uqm;M o$7#IU*h#)jQ4pM.iC:!m3$)]8Ԙ/{x=,$4yD&iQo'JnJ/*" i9)h3B~mmv"tnjYi;XY_/7ߠN`>c2]3|\Bq /4B;JZ8&ڸ4) s퉸Ṝwcg=Lc?EOHxi)v3 LKjSaYcJO]LB+g |a*a%m-%aSUL:G}Ri9_,7ض/p{x R5-!uS{lr>'q&aNCsjuhTV$ܪ7=n }k8i3""V$6pYN"^9uv> W1Q??D%4Ad.*l+JDȲBb6OX4>6kc @kE rks9CYBq=o[oc{gŀɦ}{'Ysw͵maf``@-!a!I?;B Yl X%,fz{z[U|+=+Z莊쬮̬f+¯oĐV{ᓜ B#e*ϖwޟ-Y*LL$+@pƹ>kABeyt\ m/yZ#y#![O}Ouqu{0IҒ`L­xt7~ u❢nj[|ǿ+|?Q;4?⏾hfX]/C& IDAT,vm_:/"˿73UK?_{[h`:$FUm5՚k髯 Rgv-ytZ}?;Px"M҈4OP֫V+޿'^zYJ\2м:OPZNg-k%'76@m$Z)3')6o-_HfF tl|Ba;a >FlD1 5fwFƳd IJsډ8swl>m+ڶ&Rm@E7򾎡c*eE{劋łK> +RO@޽iǏӴm\J4O[g錪ޱZYVefb1q녲`P$VFF.0ul7}'di*R8'#NL31hD1l"jݻXc%_[!kPKV5IZpr|JgZw(v ܿO%8vk}U]Q`u]106!K e\8GhfG߷(\޻~@$IBj\'.Ċb@]URI,y&΂_RW;Q%ɠ@fҐ yY/hڎj\RW V+E^ ?/ NtM;,!K2H( !x[id4"Rf'dY*7%")<",8#okfgl $Yr 賑97/k= uU9 dIG߳3yj?l:l}gp C>Ģە+HVC&eb-iDdxL9I޼14^|{/脬(D]<͡;gߏFW?5(|}J/̦S+M*1T8I87 n#C0[]hSÀqK;,Ƚ `6S?>OS7mTy_OAU>?|o0}~ZƷ=\k}YiUqu熷,߷}ؾ14PWNJ]!X#8EV{alv#:cưa&)CcpB'aM3idjY{XO>{ָyA|Nۏ\W+ۃΪC3=f k4k..圜q|zM c6Y2dk|fOPTM'MDdE6 RsCnwj-YE箪HSqI`>?jq4!IFY!H]Z]G^GtmIU;Xo(K7glt6-M#ŮQ-#sqm$`4EQ=ծY,JMV2HzX>0N,$WҠdvWA]'Ũ\h c~wPM$n0^F@e)uEZ]":~ yu]kUIQ\Jx|VzMI^wʆ@tbΧ̣eQӺYo7lwp||D&l7k Il:EL' PmSgW׼K;,g> 7/%͆k%cV֐ZEiwXphCeaMsKC&@adcv;֤E=X@ѵm]3.K2CBMPAuit-mc)N4("|=Ւj^{5mSY;drLgh胼r2eyNI&xbvx6%gݬc,4g9}PWU^յ䟷-]s [0yz!nHnj!ND@z<'٩ۆ$MѶ`T2;K4m)]EQLgwyq)Qnhvh4kv8XW e,AhuE^\ӮLG $yюm>JFc{2GMuhqake' J'+!vbȕx:{'xpHD~<Ćyd1 QD.Q`,Ge4LLZX6I2,;i~WUtb^QjCQ!Ѫb$m K''Ե^M`ޒ$EH{F :6KDbf&@YubTLW$Xrpgt]䖮tv%sA/qeY%b:zhёt'E_w~F24펳3=yVP5]*6-'''$ivlFJ~y'{PDYQOl z ?fXpQ҈*1Y;(EYۻn80;' !p<|pɁ"*K4a< ņ&U,$MeF{EXg'̏Q >EanET88dl"dYV5UT ?//ef`(]ېX5h#X9)ՎǏ;,ip]}q{h}N7 Z{'%}MamD:UzpW zϰon_5|1j*?Ag|&!.$u)S?f{px?oA"wV b,Z[ =" 99HF&"(iVD]@tGZ.($c7bûElm:)"k0w2䥥i[4p]&7,h>.cFlyIVy0F1w톢Je4\oJTReCm+YIr;BD&:[ F#q~f]7+I4MLt-M0Z1dZkQ r}R1j_؝L, VutrF9I"[f<*)Jf,.5}s||'?2~e6n)B3x+w4z܀~˔96b0%B)G1vnD e:lx_W1S}(Iqcnzy~bJq[01'+\|jEd8?.vFM]q"V2 eZ[R|/s_iFy (iEPf9Pnlu?ooW^?x- ty~+U=:4ݫ;{v#EO^eۑEwRK j# 4?WϾ2~v2R\sو8;q{'yX,'?y~IV2Ǻ c.c!E+0rvz+ڶaܒ 'G3^~%.P },cD+p*`тG5ãǏ(1,/l6+^/c,4R4T"͋mCkM9*eZCY\\^pvNl@Dʇdħ1Uu~{:Z(+41 Kl6!x7dk]X.W᝕p2隖jw]P"7ր!/2i>{?S !Ě4vmI fqQp$ID$5dT\Q,e)lw;"kp"M]%sgHӌC6୭V5(wdY[oMԴ]O<=d2( &OR^ind=v= N{ UĈYAsϿHe, }3v-z+fC~ouծb4qvyYrtrj+{-exmeuR/Kl*5ri{]zi;q X+D^4}lo(*5cA>%SjyDx}ף1W󛸞!" !q@GD&ͦZԙ * kX+iq&t@tQ>9F"4xSzM"9{LgSŢiU=uĬq,O/RWu;<@5(|,ʒN.^Iv[1YKUF" #]ӰnrhvGGGlk Z-eKOӔ @@k83s6U3F1\.s||Lu44e4S׻A08QJUQᜧB VU$)V%&)M1HC]+M9\Ob%΢k[ޓ&Y$p#jUV\oU^_":eqLRd"TfyG:./|}{dK/ 9F D%_R#t=Vk6{>>}ʼnp(8 60nʬ51[AC~O8Kӄ,χ&dU<|, F(]/",&a&+Vmahj[ɗ^?IK:+$:dBBEcLxv:u]s||e=y;o8?eAR%y6dM|Q7fx? ;pft>\oxk$uqsU1S)܈>@]eA xj9c1#񘳓c)1D6\AOY(5ACu?TN G%V&t{OwX7rּEt5>,!5 iw6@~ꦴ;}?[S׏u^?S<1<nU{n7Z08^C¡.ww?lkb RO!xGn}} 1pיּpF|ﺙ߭ߗ ɟ{uHP8?|] OO8tx8ٗ蕦srjf:2?:a>?\Z#GCZ냏Nj110 ʢw\ۈ:.2qsu%YsyVR˒T\i&ŤD5y4-jxͫJrO0{lF)䌢 RC0DaD IDAT117u$^L(SZ J(QRp.>G; ocDfrtGɿyĢh-`5կ{Fk<͏Ix峟#+Ka4X$keƧ^~G_韾ҊΑjF_{2icEt' r /'IS4$hkhۚvf$1`Usu_Q]0|s=yݬX-.NGm%gt:$iAvm+LbHO$Gn[fGxF[n֒e]جWk.//$K^cfc2 YeUq ɄfK4lכX dYB۶l+ɦZPX҅b@{V2ë,OMjLJ[w:%ûYz%hCBA m (w}( &BCuZ̬DMKG c1TmKW7uy2αe\J\lkFd ll;~tMMͦuc Dpp舣61C{!!J#M24#ON콣<؈NbۘU]%Fk7"rٮ6<~j x:bs9U"L&SSJGۉ,K M0(ʂvl\Zi".e/ןKFAyHhyM;_ZCļH:aw=J!tڵA.rF+ ye.qa[Ҡ(VԄzSd}EԀ R{M+A֡HT\C52f}9s]5LҜ> 6vAE<ݽx<=fi4FzưnIesu=Œ4װUߴ ysstޑ%}LDh=$AyHBۊX+'T%a<*Z+g M}G} .b!ZkNORh-g4^mH)mDrbAQc)c#{&Ӊ5bb; ,+)펣YW5wn߉qG {vckvlWJ1s.c~4szyuKG#VLc,#rE$LX\.$ T%m(2"GPndL4MC۶b&&ۦ"i0֦C`_!!!ϭ/ .+$I ƩQ5\./\oxwxoP ^~4nvQ$v !햶UxpA /Vlv5ߺKj4v+u%1UU @Ђ;ZTP)fKD%8PƢmfMQ<y'xGgu+ Լhc/}(Ef5 =&RE,]Q^aL" qrqY$bA߉adhȆV еusϑfŠY}ܵkB_ }Ҿ'RO>K)!zg4>X4|p%[rw|Çtu%Yݾ9g ikKM{pq\W1aO-h>uC<fQ>u([^o(tV1uYK{?쵮/Y s:nkFзJ2ˮYmw,7'θsn$! sB&H%RdwH6a=)M],+ꦭc8"6b$Hzq&- Ba7s{8[yNkqy^HftMK`:дmTKv_S7<:(.qkpmlɈOӄvrq֊vMQkq9Mfׂ`N&}v,..Φ+ڮeY񔺮N1w&bSۦlm%N7OOޓecL@8K';^ڂG iDkxTη'>.+"6] Mד)ͣϾKx.#Zp7gDi_$`(9ˋKV&G>)O.W5茷~ /prEc/xOf2)DÑO&TՆQ+ܻ{FYr<-iYZ'M76eސш;FE~2͘9;;ODyfi]܇:6$&\b$9}GQB$:OҔʂi2vHl+A$thͮr/ E t}ܟb\0;ϽMs E9Tf9[)@[5(c'ә¼,KbģGɳ\V\,fewĦQ!wo ZeT&XҢh>]Bpzr׳-eH ZI rX-hBV1٘KA7xwF1@l$e b>K3,SߺT] F^ts]O^dgTx H۵jl(Kڪ"&&VieX1A)Uqyfݢ39LVxb2-ir<DrZ%BQwSIҜ4/A ]B_nqΑyjC\^Gwk7lHFcZr:n:v9/$=xzt6Vix2e61OU/.q3h{(VQ;yHg A]ۡ5 {,!f{sw]AJ˪c;1OӔ$K""]@$K"V]u."VhTNI?}{2w^ƊpU 2b},v{|4x1.}E׵di"󈒖+n_E^*cU5]1*Ji|;ٟU}ߋv-y^ۊ[:VM,+5/B4:s?xx4(9֛56c"Xv'e^eFLQX^ohZ1;*c6\_bm*cM[ќ'IRl;sY&*mzѴ(Ӝosv2#kl7,Kɕ3,(r / Q:꺡k{dɘQ9, 'kux#L~|zЙ89=c6pv~5z }]a%E,QƥIBYF1d>/</"=OVJ>Vzذkg8@,ۃqpfhx矿GQAv;C^?k ᆓY1:@ݏ÷ R'#0!؏/ٌc2|58|HF;=Wmp<ѭ2^[UO{'pVO1>hOoזKp,E=uz4boI^V1Cq7ÆrouoM\UWx]D O|?psp+v 4!zO+u?9ߩ9nt\O(gT WOdf6@RP\۪:vUK]7̏NgM=C1#nBmli"؛LHlB眨ӌ<r#s$!侵 ŨDY.N)G#+Lf+d_5mDWֆzMJ>q:qz&vh Ilt:v6mS5y^o$ =p|,(r9{=U]KdUt{ﱉdY&Bu]n >bZ+6-EQP bȋhzMFG]Kk|_ ͤ4vUENϤ$g^6-XpM+8 Y,Oň??_f()Tu߿@!2y*wfYv!k]! P)>`cޫ>Hζ}żN{^/YDX1̏X:C(34JDjhK5n&_k_;~?z%ZNT21VDyc5:;_"|EFJ~$<}lt(Wr4ڔ7/z5 ͆ 3^{O_ſW?CWfpvrc^}5..*ݪ]w}"__O|+_Y7ߺ)p(X\^c?yNywj?jWq)NNyxzILH./.hۆ45$#i1?QeS|PcY\\Pf9a]Q& @l\xK{Y,h~K/@EFԔEFSmImU<9}( yun泯|o|[λ\,y!6I}n{zz$Y* 9,vѭ&%k{Ԏ|T"DX+FWfcZ3N}vN"ޅ E#d,9.//$O9Q=(bdqzvJ׶iyle M3A/i8& aqbh8lZ,f1m+9r& jPkYS f }ňwbIQƮK)V-V2t4- .%$a>c*c/ Fݠ06!Mn2Mѻ> ]qj_VD7}'Hƒd#=QI\q0ﰎgv ^2=`Oz,QOtqjAދETD#IӴ Tz-=9]EYd$&؞wL"麞b\R%u]ᐦ4X,QU 6у8/QMӠr$X,(' ΉVk-Hvh`\9]4&ӉLMR?u _#+~D? VVzdl IDAT]1lzq{Y?zヘfFZ`;Vpu5!\nFa],P‡&[q 7t6 \8!)ÇP#ݮraw/\vwI 5ܶYMMMãʃfU17 Cb5&)YZPJ &w9 a[nbk:"ch 鄏ruPl?j-5AYYӓb7 IJft8XJBY<:!jL v-"ZdYg- 1MSʗԬLp~~)7۶t:A.)BhqZO8֒qU6(˴0F5!HYB+fRsnntQ^V(37I(:dY$1/CԈaFB,k1'|j%F{WGX lgRIjkV!BF !0 O9D@Ҽ燲@5^P*҈nqaTCo۱AzZ]@tOR~M޹.^0H1CYV ȳ_?ƃoOB@Y{~o|_]hy{=<|1L |Np_k;?W񛿅oBIR7__Ão| ( ugg}MpEdK_ 19:W4:% BRSgΓd?)TU?01{6s)f=y$NGaZ]i ؟oO/2Fh=^{5Nϑ)l)~m|SCkc΀հ}O΍ ]Q>!N (N`-@!ڮ=#`g b!gSR/PZD!u`*Z,!]h U(p䁀hU NbtMiRaXMdijtCdkG%XV{bR;rB^kK(65?+oX#$Y V h.xUEѐRC"rGI !0?z{L= Hex[Ts[DiʙIO땳$)?W|O@z%6b\qZu پ'@уsgoy>^P8"H)(;9 ΗK8o1-&Ɠ'JJ"Ҋz܁;+PSMtl L&͐$ bB׮8;;GSW<@9 GGȹNLy^ Mr b-M /x,KV+EPW52y]X+MWslM'v[-6JIhȎJ+&swAF0$ZŇ.Sr8VJqHEcf\x^b"b ʭl@%Hh }zrTLzaaQC=<;հ}꛳l (WkdYF{0ۛaX"KS P|AYW%QZأh9a\boJi8OX6zzYCӐZ)g@YhQdж U]B)R 瓜ڦhZQ>8 7u=9=oLr|Ȳ@޶V{yZSĤ(1n߹rEd4EwcsIsL'ꪆ[&GGd <""!l:ޡ,,ׄhe4oM6qk,`tɔ۽1QE RHR;qtpr1w]4Gǣ4MH(TɣkM/SVg'1Vy!6SP܉8_ : [̆ Q?z("__zq@?9a)O;N^k^Ý۷1ߟA-iZu )>DQ42nt=NS8O1G7o4ri1 *iŀUkY'P2#CqoÇwIR)%&6hێzGc]>[ cdbŃVsד{10)m퐩FlC-L7ZsJsW$5Mr4eWepm5r+j#0YBl+w-%yސ .@)ASV?/]^Ov?#.dY_7^sW~Q2?x~yh6& 5Ǐ}`;hGqbi<\:Q8WR8/K 0(Iq1bͯaUdjX"xR"l-lr) l*. wWY\$#k7S \<V&{>C$Ҥh>ZMŊw>hhtDj!: Ɛ y 7fCHRx{vѡ N4-8q!52Z/y|+(hia6jrEuS=N!MSqk8p$IBٯ!KSxneB%ajm[/`ف@*%١z6Zȧ ("ǫ/a>CTȳ5ǫAHy"SDRAnp o~/K/FYh-_"^'| ]CMP ONUY0B}ɓҗ~}5ܺs SH~ܿ=| !+j6 !bt]8RBI))(fKO`LDc=4AYV!`2pu !%<3ȡ:DQ>!uβ]eY:QL$;Q5ԧz]qߔV(NF$h !\8^Ę{=uhjZ$IDhRHKȍ{8oq?G4Hb}ߣ'ȳ)l?+D'e%( Y!Nb$H]A "ZIvR;wH\ð%#^ro g=f)IB}W~OQTPAT.68:8Cpt@qCJ 8KV@dۑE^HjfP36+Z,W {sDQ$M1prr0Q%爍աnHB ; 6?#lU@Oo}{ܼyZQw4m;6Bx#(i{O7ClmAwJGHtbkz k[ڂ̞wj[;Zn@4Θ9% K,TBfiPm!w0(OW:? gP`ilϣBnKv9K(ɖ@` )g9{88{8fqX\O3/a-?VxP Xl( ;h!gpRS~|Yo5vZpwtW!+3;J-P|Fqc^\~Z wxB/u<>;\yW6QRb{UX=pH1z(ْXEk%ڮgKtOEN9p֬*ա@6CPJ n(B1ڐ}o' t$MaE`=)`,aea߷@`G8=#%7nY*RJ#`LTi"s޺Mffc6Zj*IJ |%eY8pzv80P Y A^p`"' &)7:&`KP%ٟDGm,Tl{0HFQV*JpK׾E1OOo\||>//`o6o-$_| | rzv_<~`8 )~ĿwʲF;aMUij,WKO}y2:dm$#0{ܺyţGq xo"Ic4@P%c7K$<$nPk/|Ûow}Fc&r,ݜm;+x 4I'O})B,Gd"1a̻')RD z6SqdG18::Zt(Nw-1;xGvqSQƬ(688)7c|On"8o]ס(\ <U]A OuܾuiQNlbuAnjJ&fTF6QA0,ʼ9 }@̬JCjMê-iTY q8 oqJ j-]̌QHA\I.mWuҥ8˓@fcGq5א8&@'-}6l#/ ̦3f؛a>&y#IRhCY$, ̥(.2t6ybGA&o_1{y.ΙWgBF1J(.menF8 . $I1`~0G0XS"I9,QdDd IDAT(&u^yU|ӟ+l:BqūU5;ۍʫۺ%rL۫_T 1`"g@ޛ"pޛ+Wgx?p A\BV~Evfu EUgCD5x`-8}?x ^SUV5+YFq׼Uw:8=B\⒰z<#p3][jo1xKdز<@^TgP>׫YLXVGPv!V$2ʠ{u|B lo)0!l&e5B夎V/]ж YJ2& #UlIDuV"(QWۧ>XoEAMՒTu,)j؎SA9?'T*GH *1Ll#!%tߛ-%"1t(Gn-ewwS)MDI֚1#^סiز1QL2%%=}l'ŻaI_WQ3 RfcՑR֡m;Hptto?x>oCk3߳,Çwp~kcE fJ+t] VwU&ӏo86+H-Ǽ)sD[h{Z38̍Rr6H16ԿC-Flh/U&Gp?6°ރ.$"`6-ig> 6͹+T\&8E :J;7$I n|u?9AԸ}6=~Q೟,F)VXkMQd_+, A+@+`7ÿկoPitCf(ZJ8G)I|{o-i"N"RS &R%wܾ} 'Ga8?q9uX&d;%0JW_d2wxgg ^7$&?"oJ I"U3z5tmT]p*;2m HR~}cU6D~:tjh3(a5M]CHj k z;bX"A # ;^t}G0rd "RvFErw& EY,5` Q-BS#O6l<]R ץygU;{l_Betܸ Gf{ VJIQ;JQQ؞X5X~ &#-B3[^:J_c"dRkɰo|qk"ѳ">c R:#. ZF( j(RL)C`?1 D$Ť@8;=RDRj4M !fSk8g Mb2) @S4uk@EDȲbqjt&rjp8R۶,Ψ R ޸,zLd^y\GQYLyfH oOX.Lg.*F yj`5E:Yήg rRҳ޵ߛ5h >I4K\-DnFFMsŭc\`~$T94u4`AUhDHN t79] "^PWR^\),<]D 﫺DbGQ]#ح8]fP+ȄRR 4u,Ii֨54Rmۢ;GRkeuYrQ"fˌ %ʝ=.+5NOX,X^D)R+%Q+)!Ԇ (&f\J@|o?a>s,W ,K̦{Y DJsH.QsH G Q9 F;8@R(m T&`BjH V)b 7}/R)&zjmh z[}E N?*\ ^4T;SxGu*=d vwd߻ $`mB\T] &\|v6U,tW[Q풤T qd9dX%"$R{4֬Q=OG7p﵏?W J|=g Јϱ+H'Wii+%`R<7ihPFn?V-pU/cQSC 贈籏>MMB o=?A$7H5RoCXv70B[c%3gb _P4b&aj c)| a{:)\%Uߎbs+Hi1D uUYi[/WB֭[5eއHV|x7d-0[_oZ)WY>Aߵ ,2H=-)$/jg+tס;Y>y!NRM*\`-NOf{@@~܆Wo'5<(F$ܾbcHV!j %t`1:jE|d=)P (k#XJ yA$5}Q~D.˒U=X1D ]r&IV/XV`I4M|8us6fw; M߆*D[<"8Ǚ=f.|{9+*٤AInCc.2kCtZj""Kш4>:"7--(KC}ܙncIAF `_#@ AX 7QU5EacL9 ":aoo=;wqrzw>d9hX?[,bbr0ɡҐ*~S^ |=|D*rF_HwD1!2QϑljnlzGX۶!} ew귅!Nb~ cK{ta;^IQuajHRrؠ,WPRQ"7,1L'?ا9Y ]u:버1 uI!@mQ9& )'HwX+Oƾ#G'H$7։0Q=Xm!͸?<Jk|w~}uHkkk ۷B6 T#MS]yg@'11MKPR"I6@!7fu Rp^虹,BmI ItPQ *$RB$5b$'I#BămlԘ)F!7}Z&6qA;,zϞ}C%7;] _>K e\~Mp5*vakl+;)I`4x.Sۋ!v-)Mk;| v%yg﮳)nt:Y;ۤ \@W+W?!6Sɥ\E D%3fxo;ͯ_CDBǏ߇mh` Zhn2lHv>|}3m[JgK:5ĕJn~Y5$.Iee񛶜^®ŏ م]1IU%@\8!6szݱ^`b\Q=}x>s>?| Mm5\l @l5E6(Uՠ:Kqŗ7irl׃uyGd(FYUJ4=VH&5)&QlOk 2԰2Ρ,eUDUU,?!"/YҢk;$I sV![C.%4$#1p jTXILUFQ,ڕb 9{p[hZ:8㊢I" 6 f4aZrhj`S:ŨZ۠Qj؏7еjDY$Moq/(o8>>F%cVeSfܫmI5ωN3 øƘ܂] )YUH )6MpOρ=' [tƆs`u-m7)%[Z%⦂a2 *, x2Zt-Y6 %6[{Ms(_7oikıa6 <'g8!;YpֲΛR<=_._RvᅬށcO|c_WƟ?s(Yq`6Dqz 压O{]!Mbe|Np. Ibt"xoހUU)cm)DC+gPV5޸eY!Y*:3L@]O[o=lI#4;.޳;r$m1{pHR>I( 9Xn RCI 7`p>`2C[!,cf!pN ɵќ :,`CJ=q9gZ+8==Gkڞᇒ@sa\ȱTҽ%WrHGȳ QdH)PFUXVPRb^my)5%=PZ\еBJMCS8;?2qo[خC^*eD vZbk;V% ۶CUl˓h; I2De:`z$<"MWuHd,gÛ@0Q1 朅 Y*qrz ).yͶmd f ֘dQ!]k-zU]S,Д3 $Ee Z9` @@CMX=y5I M]kpޡL =EE*KXke 6X-:L)ʪF8qz93놀sŀY@4X.DԊ\U=zUl ]<6bF[V%*dvo`6Es9k[HF@ FcFb尤UaEBʲfW^("xBHC $9v>l9xlS= v Cpc KCdR%P,]TK; (DᄋÖ&)Y!+ 4 qv~~u@G-1E#) pYiJH=9&[>#UHGG&PL1(Mܺ}JQ3D@0h;.@SH6CRbf"1mr2~HFkFV~j*v56l4ϐ}6d{caAj3W\M 2q7{;W`ExV)Hw/_rY$psе<g6=q>[\u[?)vg^Q D-jhe`LÃCpMܺuo%0ܾ}wネ^|7nޤ##K3ySP f d54xs(p"; IDATM؁j RJǁg؉ [դjYWMB<{d!Z.ocqk!Zj`Młq]F{PRbݡ,rދ@F~ܾu ?}6_/9dݐ2cpt:Wm%NOw)xާ($I&#_ YyQfxW5/` j@`sTR~R`>@@ )rܾ}w" [2MNL@suLQc HnPtD=${8ibuN)#z0j(rs&3B)Գ&3dx %)$8x! R#F+\ E]#ƤeUb>AHe24jmZdEg{-S)ȔFY|ʵ^!D^QB sB z("\"Atvimݬ"ar&sYF̐#,U8UMM'2H" M z,^o DY^)?kɍEtM,},B!YV}yl*\z [rA* Bl(Fyci۶899ADŤ 8() #xk12c] )|iP<5Ț 12796-,ǻl6(Hiv6;l7[;D1DPXjɨo zL-Le2!>$ey#4((>45EIELk! Q?n}IkEk=n`'1ϝ\wpB ޻BKD qGݴ؛ V[}g1UAHAi1nE#"hwmӑ5l ZpĬH *(nGiU)yNb;+)$3EI=KPyiZZ9x hjf]ne'fdzM!=sMz|Ab7jt߿wո5ǭXo6ȳ wnFUWt1bqt,z:=Vفm[I&ѱ, Ed&fhYrco7[uݖb,||61z1/p NOQEUU(+8c)fla{ m@Uh;Q s##buȊ R&b$sS.ȋ_gxr.$ UYb6%D"NBd4,4[DITX11zGh'5]:I :%Za>glZc:3Oa6B'ȘH] !sʫ3LSL8X+6 GbPd˾#qh8 q7t}!>^}}gw -F D@;hW|g9F`|771K; @<ޘt/`#yus˿K|Eyg Q9y>'|rfjw&t~>OºO=$>__kR xWB{?[o3XGǹ:Eg[9kH):n9Qc9]-8/&5YFSSCPDdsA:]&m腲Y}pU5rr51$ꐄ&aݾskܳRIH(1 Q9a"z멉eP:xdF-cH 6N)\atP8c6oxkϡՑ1IY(xDؾ5H<y%G2/sfcNr" ,OW45MtaC@V(AbII"pX /kYId a F͂?DJtBJndy,M`\݆BHޮu׮_G=ER;?b9ʺTLۡm[tmK@][j,习pv5&~Y =6'QT5tZ])!{B(2c0XCj$^y J (MBfVuUb,ϰ<]"/K, 7e\qOGGGlo! Ւ &sA^І֮Jilw f(k 5wiZ\r(7: %6+" fMP=t6kbl,YGhG . LrΑy+%:R69S"7y^wֲj٭uP\G,)!u$BLLqxN9<hfE@R(hyhjR<5ԾDCURޜL&x"!tmꛒ#ͪ{eE"TgGʐ۞cV(e|pukaнsy( dHf`ERH, 8Gl0pޢ,KL3x8ZAٵȌAUUcZQF6X%]ׯ5lטgh Fc\"ի=yk(*EJU !HI9fSmSD9s4q>z'WJrTee/+)aYA"۶m1'0ErpWшqb ’3dFiXgQV%چEZi4m{D.|}zG}7!Gn LE0Y1iv֒:Ee8u} (/'L&, FeuUI=wkZl;m EFR4XBXkWzۡi[\~ IJӟbA) SO`1A&<=7oТ-ĈF] =@wj'crhbt F-D1s$AqP*Y8K[Cj) jLB=dPcs[,S6~!.~̆;+<.\)&?ܩuimYo>gyx6X@x+xkr]o0pc|dp`!e}81,₹K{\P{AˠkbTR Ɲ My_ p磗}N#d|˳G@۱xܘGg%g~7`6q9tCoqI3ʥvgplqN :r,UTZܽ۷`Jp$FB}v/4G'$K4<Rb8[^pM}(ڿ>׸r?|Pcwz+؏5Iy}ڸ:9ᥙ.,<Vf\7zjj c >Kt=efpS5dFA+B``z:c}jDW( oOUԓ)b(-`mdė)[J(eN"ڵ; l+ܹs _Ǐ2ڶ2h1ǧ?)»77x׻^wKtVT4L[/v v/% @ȴ ~>O%$lpt: X됙Gw^=L'($%kxg:Gg35S$|0Ry]L( Lp=k %pU|c__-q.)pJ  m"mqM*2{De2" 7EYB j<9|@YH!{䙁>d:GV0uJIDw@ >h)'$r?{Q9yDŐhoJi,db?wN ;߹EGګUer'v[pUYFk2`h}G*ʝ\1Y(cBDBW\s=gXV(MCJUY˱mFd:A ёhyv3OT] gXShkH>V#TQ戠v=Pa#@ԕ8gB1(+$歺FtLkp1B(,e2&C% UU"jt}?fS}r6 b''\:]7"%8ۏkl{?C@R&qgwVnhvEI]#ńzg;t]d$:EHIࠔFQІ%n^I]cۡ'1,"ǕySiHG;)V5 XH>_,\qCUt"/ƚHv:v\F}\!F`yy( l`Yx(&ܽwMS|@ZWHoi6o(pMb rHQ{D$T Cm!?>8n!5A;J+n>b%ZÖjLR[uyQ; qPw^C!AZ BzkXX5AeZdҐMao-ا3c 9B* X㋡k)#q{Ocel71Cj!5 2QU 1eId޺ w$,= ")Pfn7mܨ.FiwJ0HAB,q9˲1)ƈt\ JF/B CsnjrNBH %Ę-MjH H ) M?_pr/R2!@I}iEj/3Řv63& {3sNGo舱7+g^ !.~GGތ+7zd8x=9'8,@,xs?q3,A`1>sd-\(=^)?(oGEf7$ZAqvȊ[۵c 5-| Fd( >r:Os d:%Sh maQ.cXNQ% 7pP1{L&7-4S1ƈԓzh{ҵH1`CHl<'tb Tp_e0:d .J J*YFH1e^:r)3E2m;8Gc ɰkZYALs;ې GGWؑ^nk-)_7?_~EQB{2oSgǪεUhC6 [ фTR1(TPjŁpG\/3֊{7g(\n&3D`\eq7Xd94P1?|)H\]W'_S^B =Xka'=x_01P 'hh |߾""$Wyi/B (/:o!L{#8:` }ć^\{+8]!k)QC\{RF <>bڢwT}/4iSPB!Gј#XFkQFB I(dFkHA BԠVJ@v#5\DILzpRq`b3'<7{3)> ء.!d@`7L<5E"Zlg)XbJ8%ƘHŔƜ͛|.xg)XЛ#hal8h>!eEg"QhLW\n֊YhQO!q1z=] rɔ#^ ж2p֢Qx5q&޽Zm{"_(Z+ɡNo^ @]Ohx,3m\kT;nw^4-b mB۷@zhWH@U՘L@حSL}V";:!о0/B 6hu=AL@[bHy["@]9}-RJd`0L5s Z q]HZseYb8fF$J1"rmC Y ,0GIyJ}+|[^S^774ކ9 o%}6w>/n7+Dn@0)Er)4-@Yz TٌeA91].aL%>OԼ m>_d\ߣW+ 1 &QVJ{5f=qn Gfq@œuN9dtkeȵ-iC}9!!"$Նחd 'T ynƹF!]r%`0GV<8eMsCGrS1>g.~FAjKH~j+8*DBRLt|i3 Kqro,yF?<߼=bIs' =QWq''Ҙ lm!@p=q|5]GB ^'`~N:;.]糺/ͽB?gs/<]E[eXV.7/m=ꋊ > rG*$.o;,Ok[l6[L&]DSg7r sL|!ClpM'3^ gD'F?ҦsC:7RR"zn)muzRS{r25;Ԅ;yl#R>P1TP9BHx 4`ڶl61"([3y'v(ݼfG 6PeYB+Sʄst] LfeDryi•yێmYK.)vuie< b{$JðSfYCI*X̩6nwqULS7կ^{(ˊrXC$'>}.N )pxqhvtcxnD(B ?jP}^3jX gŋ8) 5q=s@3 x(pfvK{Ĺ g]dZn')8c ;H9>Fnzt]? Q d{t"FQ3V)Pzhrz=ʲVD-HD@cd `>OXrT A9JLkNXDk $9(]i q:/P%֛ {,7+Z9f9&)0LC|'n~yo1N1LBBLwA O޸(zDwȲ 键<n y'SZ'&F+>/(:j+wZPlv-NVk(FB$*VC,~~ $EY!rmի7Q GTz "#It-% S:EēbBRo#.yLjAI?ԶBcV8R1?G8(Ȏ{!=L 3Q) !XoIpH:ЪJEgI$qbQ=ɔ=8Lulߍs |tDpq;H!mMӢ{096pa>9,GРލ5u-,KgKZ$mQW]='\.1?'ɄOyNՉ)&9!s&eUg-}fY[|Esn6(Gtrrt ÑeC(v L3tm{PTJ?BŜO #)%p^RV {¸7 9Ӓ=v؅H*CD/i뼅&+a A i[R-͝~6yXX~[L\y羸Y LQg ԢjTu9G#b2`2]mf޹1'2 +Gh@H֌1BB+"3)4x RrRf<yQEQ}n, F(`tN,Fe 8гSg4JHe;>6Ɩ|Ia>`̥ڻmZFJ$5Ct:g%liC2Pϥኟ5\V%P\n~_r\blHeyo<|i ڱ6f,-7GO죉%}@3g;Lp.Rj|e"o-ܟqoGo F֞sx&c~(7oCB['B+?y_'>; g[ ^r P0 ʏ=p[/ Gs~(bɋC2 86μ8n8pxGQ{Gw7o@hbA_W7+_fCgTJcc:?VYwxR:O\1W*i?(axMQ8."12싾RLQ(C"Y`Jq `BN̘3>8 ;ŏ3 g]Gcz&S<jJy O=$>O٧f"BY)%,gg9]cxw_/0&{Gs=y'?y0}'Ơi~ U5\{5o7?}GWo"2Qf2><,Σ7Pd"s0CK@t/ | RG$Ӎ$(y@ (md%u_w<4w!W~Wۯ^%Sά{yv$I]XB(KC 뷰\mL!PFcsH xyM.k"A4BYTyQvΓKkB 9o[iŨf"y^@$HP,egYF$Fѷ-9إ!ɨ$74,75B;!zcq 8H168HJcPhz>.dn<z㪫 >3C*8֒*Et}KtEYb6qv4ɔg9epRjQ(RPR'XV8=]'ňsэ Cݠ4R@K*+rLln@ӆ=j67߻ݎ2#ez#%L&S\z {XhLf7B ̦3*Ze<!|Ͼ˿8=Gh~.Z[۳=`>Si}v ؀({OKke˿'| ɫ []( U=|z{EP*`}-Dx;g?/+p>[4mGx| P%~w~B w\kȘzuc'{_7@(KquLLP#@uxG/Sm@Bu;0+L5"ب0aD2EHPc")ZaZ~8OM.  #iJz-s+9)**Ɗ&tXBbH"Z<ɉ HsC휧d j|l" 1%,G^L!nzV WȲ >9I axq`A[(cn\FXpm#1L&saCJB|k!YLnlb :P^rRSڵ+mӠ:H)QO'Ȋ u&f,m6+4-!BĈ@vSE ,L|(ӺFy* l70!R1 y^BIvmC(`{ZC8Gn\olFl$s&׬VkVqVU5XrC>@YUX̏8$CYƘ eXo7l\U(9(KlwPq:47EU( (EsDJ {B }LXY n\GӐHSjrIYFyoބDy%b0&Cnf|>Sh]{OB8& РRH "a{R"C"gd+ ]?(zJirM2S$ Hw1(1;;rH -ݨIF1drLbty1rȜx PI焃ZPbn<ۤpHh:tdq.g =0JHCɂl!j5Cz?cf>LQ AӴ`Z D͇҅Ϲ7"ndeV@bZnްQcw=ߛYM9X+X!HXJ tݐn@ 9dyN{K Q t65,^U?#z -( m!@ۮP%5uő+$/K'[V0|y(OeQm;%f I9#iO},`ɑ}Ck,0)m5)8;AQEFԉ,QM rq^N\J#< 8JMRzu>b96E;42kY;njgs?'t:(Ei-Ԕ5DR15>yZ)`J΋5u7X>eԯ}_~{|a_<[1rg\\J F(1H@ƌ[%EIY@ -%D(׮!%?v <5ˋ1ۣ.9@9(,r  o}S 瓑[k )5PW퐳-͈g246b .7z.$;Ӯ %.{|N$,Fq)u1;yׅy>d^v'wx eե o;Cš|M ^uLڴ%.E;{#>/^rx~R<E𖯫a#xo_װ(ö?vۧDtoY9׫糹w:?]כxb-?B|qwPʐ.N׮q]nA#zTU9Z[Npzv:}e !{f! Y\],,'Lʒŀ5὇3BL{B0ٶXVލ!ϻ,K]..BU _Uuu'n޸ms__}Tw+%22/[fQ<>A}עMQ1fQC,zo[H!^$}qL BqFRCsnåTSbd-$aYSL !-BMy#laM_T}}, P\QxϻޅO|#(v^r¨t; v$ćqd??ݿ__q|rrgcs_x߇ {/c K )Ӧ&x|dz,rH F9v=Bh$|テk 'q|r9%iv}?wwx~ܽMR*@e_"Lo޺1+û?>_NjJjK *HEB$D1rˉɃT1~}x饗~L "in) O F/ w($H0RL&M57K)e|2\o{4ޣi[am@ȹB@pEQ 2@JA= B 1&KaP0X*=.F˘]!PU$9vK!ѵ=M(1=Oh,MGHb(L"e,Ghk?Rzv|8[[k'k,P\9]ǽ9)& ܬEk<1('%n޼nb-aܹCD&X׆#z8\]z ' n6p;t.Kwyp\ӶgC\}|EwE0$ī',#|sj`ԟB\+q xW`H4?J7µ er莛ZR!A$@pp/CH1Q9ӎh;Ώ|yZw\K [-.yӣN|ھ.~U>ج>7 Rܟ0mw -v]Bin\鑃֓dxcTJ !&^X˙^ p|zFY>M3`7g3@ ͨBb$YBKMUF$VC)>8j5XWGVIkׯHhpj}O#!C]|sC06G( ށ=ns癷c}~^xE۞p|A 2Ou8b@ãMO5 {dѧf7xat!$$a%ڮÇ0Ƣɭ;h$["vE'R*`"g]H$Dw= fD8uBYZixGKrt A91];prr`6"(#v= !ƍ%B !Eta:BkrIhsy4 b@Ӵ=Lu  9FHȘ{rKP]O(8B`oo<}qz'$x]ӇXb:(ru ĈDŽ$dymйEj˳#z عez Vmm[jAUxx| a:Zk w0I9!rH}uUjH!P2AH&wT>~ BiӒ -$yrBg(]tm ,S쌒>DzDQsCSQ( ݇5AӴXטPŖPKdH(\+)l5yb1g} (Hڗ(E ey)Qn)FyP0aS(ه('tQCm4!ؘaAeX-#24몆eԽ}pq |q]rt i6X6m R)]͆l %ڮP¤{ͩ@jykywNރVFЌ4fL\t hyӥ[o/|^-$7@s&G'oTDCdw`|.6R(XM!1O1_*KvV%lF NʬƘkM#[[Jc [ۜM],VKś'ZCmNTJ†2bE,[V<=@;%iti+#|;']!6t; #bp9dEw>yNg{xW!7s~D1 7x𑂷"+}ϋGeh)FSg*gsrP\l¸UoƄ8ߜpEt!57:; Z]t8<ߙὣAlS" bӓx^,,ʁ;tK>H#az[]%ۆule/\l=pD_=_{pGlw<}AZǎ՝fx0ZvEl\鱖2#BAj͊ 8NH 'g>V%lxOc6A @K4 źaݪy᡽ȊyAJm@Q5w7 y^#VZJrM{659JQ5D;GE,a])C]BR!h6rds{Q5 5Xb |}gABw=";' vSiA *z``Z{coܗҨ{!RmXC}FN&(}GN\  \p#Yf9'4Qc>_45ܼqַ;x;XW UjygN".8N"y3(H0(6Njls)Nz `,n0T* IDATK9ōs;mRIH !{ӵhͯ12Ʃh-D Scș#y"5 1RҘ( { 9>!$nۂwP>NH%{|6$vk}Cbэh[CJȕ"LfC<۷ WN:==1gaDtJxOXӳ<[ ?o~7_%,V-fs4m刺9!҈[uG4X,'-8⳿Y}~˨Rk- ￈s};H1yr,}5Jh?ˇ(gQA \A#("X}Sl4?`5gގo~o /BiZ> j&ڒk.N$2.P``C QĹ1ێ,!Zxl&FHΑ{= @Zsrk7ih ft68L,) s. RuMJ*K$iiA`נ$ &;Ok7,1$ CQ88؇1R,n~bJ#ISJb>ې^W~tIȒ ܁mk )r9njGZhip|w=P0Eb I9Ǔf!v.JzF5B)Z$%t]; uF5)HǃXEizhhAfժB9 i6 fQbt<C'Yc6vID)~2pvt?R[lH!b609CVt䘆eUArfpVsv1hmi m40ϐf%|oVg8#(|:l#Saw@4XW(/(5m'ݻLkNylpphn=9[P5 fC{V>1dGE@nRZ( 8i~ .!!/rXm~+wypJq&,0xbFӚ&Rnw nF잦a}g!%ӜrLJ=UBm 5rXCZ>RqzׇHt4#12G .Vc7EH^ I|gdX#2hLӷnDf-ڶCz9r)p=ޢ(v 7C lܛQFSטΦX+ʰoZH_=itx1ETUEO"A+-(z#3t]7~4v-b̢w}K WC|u-2cl:E]7ȋ)F, hM((2$ t]zMѴ $$EјS5nݾim6k{ Os892478(ڗиm-N"r,W+^ozZ cELѵdUU8vmdžĝlzl\qI(t=2ĘxOFsK׵Ja>cZXچмGЖHa_cm'EgU]Nz| 0Û ӟkPeQ7z?v(%7D))ABL.z οN 5 L]LY㝇Bi†P:ӂ_@sKdWPiR'*vfÍa#[ o)}?y>%r[ƌJ]cQ:.Ơ#<]`YHO;#[>rϤ4L_(wӶ]pxQ3=]?տ48_9'vﴅ~w]_~spjedx_ޒvtxlcw|7p#?=?3S !):b9u]u(zCv\٪\.qxxH^^g+;eybmeer!ܼye9׿JH\U6\zm3ODN<:εی$%?DT#0 ;"hHXj(k&-S΂!jc cF `p}#F\;f4@*#Y' 2 (8: HFH`sxu *kG>wp]Kك|onm9&-qm.yo{O#@!x<8~+_?G7ޟi<C/' 2ԭ[|>E(au1?bZ`qzBy &&e"ɟ$^~.O*;dņɝlV@A !u-}3ߍkԒscy8=CW;$ $GD/ۏ[\#56߅~ '_Ç'D"wi ,b;:D /2]ժ͛0 C.Mg Hm6fXg3P`~Q0pC6PZhnƈ>SZkz sPs#h.Bfu o)B @B i JI3(FZd'R`d"RH"0߃fLc8 ^J)RiTkʠ6֌1 @,j uR#30E3$v;4-La6#zb16%Eע+tM,2 I #ێ1#Y 2x|g8our#|KT}}9NmG=>MpSq3; vaW+~cN'ܓgxoO޷2w%ҽ86@<xAl+Q夤XX-R,'8C|_Fhc]8[mF+8[qIl2u 5WzYNurRKx5D\HM$!UҺhĦa-#:Q&7 X54)ު?Ml a(yZ k̈7Ťl:%56d2,9ʢ@QNP%<yX;d5\ůySb }k!1csSpBɍ1&yu17]3 X }ߣ[0c}:B c(z%(}mӢ, vu&3)Hkj,ѵ-7Kj"t+ep^]*оN?9|ho|?o5~ϧ'jpEMN_b[?o 4ONbtH=?"rxoH:i;UnfE .ڦݻwp}MzH!;v#Vrv_y>snAuh9pZp__ BH#wle:'aѣ[Ƶػ@&)itȱ)&1cGQFpC,$1cR"vqXn541/4Rud;xFToh5"!EoGpp׵5lM3BDQÖ}}9ޡm{X֍kh+OKL=;FQ[Oo^sW! po$]~?4G"KO x{Gptp$ D8v|_@4pya ۜ)mYկ  :;x>n\xA'[soFX>v 'Q w HĽn:rGa6 s|> W 4~78ѠDJ '/Jܼu" B"A""P$1$DLm3`rjCa؜Ҷ55xň1ZI #t)ǶmI5Z#D1}i^,pK`vK=6Ee$ מ()ȭ)Jy $B \.pr0ߛfn_`‘BRqzڢm*y=Lf]c:a\jCg)%,Ua)]3"|p5 IDATRκ9.v-{!842~u]A #%EZ:.%tmc4s{!%HMIYw=֫@D۵@X-״JvnH98,+ kȋZ֚}SZipS9#,z91-R(KZO1M!F1V Iv-BW7hJJ+$Fu]y7DLZ DZV yQScްU@5>$> +ʑ@D7~c)yk/NFDyu1z@2n k!w $AA($蕔І>lFPɡtH cR/rXK_Wm#AvɅM2GW@ 69 B ~|@Zmepqc jcdح.8p./;Mw*Lr-ƀB( O9] p]nqɃ|q( aj2uO85y<]iz$q(\Dٹ6/Iq<sqt͝'7_};]ݰJAvr nz8;}Rq}a~^N_S/Vؠ^ >u9>::b7 G7X.hE8*I(4"5b2AI b6+KkZB16f9ŀ9!ABhC(ИF\` lE^b2LB`Ɔ5@q, h &  !$FNm r{X{sZ%e}Q~քƋ fhv,@H!⽇TT 1, L37%9!(; Mc0ؖEwpGw:2 >@IMqZV+ Cэ#t}rZ{0{(Xu07{_|+YAXi03 H\*FJ\\dPB`4MJ)(z He3dÎt#"0!bI`PR>k|aDS${1 G(B5aF[xAP# yC+_&1MBJ@kSdBR.u% Vh6}Y= ͕1R4$O_䜒Z!)e 8yoA RD*rjyk_4<~wX3x[߂A ~ɱ*h+7~q%t0V_[G77O§з-N!S@$=ل+wp0֠kFo~sƿ;wAGn8@rȴD#ʞ2JÅx;e$>x\!~[* (]`y]O@@zO❷o¬X!ڒz J_5Q(`Z#_w_9d:ōq}H!%9¤i' M`B"nyHa\%^I(q4h q)"JP :%4\7G娪zk} l2!ZLP`ҐRpr9hMi42@8j.Eh;T1lՔ ag}V3*I& I=̂z21ymho#BR@ȋa6I ـ7Pڏl;w /-0;EI4 EH2mIB6D4Mi;di 3-Lc4$VM=Id\?\@t|{L?%R@aC ZwZX0ʹs.O#?ꟷ ]]e>xUPCRRK#s$Y#`i(=O(Bi3hq%7.ܖjs wb{oI؈瓘Í纹`₾QǃmDbď=b[P I7)EqN}To ŭY6FUx_ŀ`s ,`8mPWx>-?SH?uo&DIhvuo 㓇8>9}'Z/pm|_|%~U i>OW^ƺa IMpr "Om;̦O|Z;XW-mGƖ]zqzzIO$|es?L㙧B& Q pp"spܼ|ZbZo{H 13<A_^{ XV5#5 ZHЃk!xRL"8>8GA vc۞u`ѷdЈhĺj<$}oӖuRAII׼(e(Dk6%4mKԑ{#@2DwhZKHD"\m,R>:?ځ"v1=&b5gH^ =aUD(y&cz Z+'=r& (gHӲ$n7UZc:4-B(KHZtmwWIzCU\,%IhIs;w.>xZ{" rgҢ]udj$IұC$GߵP'{xt-4Q=:CS ]s2+#0O- =!!hłLE4O9J&4V\|z g혀w1) 9 mӢzx?kO$ڶr@vhM[#<o R!"zk{4Uf)ӗB}HpudyUzXo{$Vz {B1sx( $Qg20*_( ci^t i܍BfQNO9 Yf"D8g1N0MEtORIdy(Q I9jc5g1hEC*Jn{}?^Z-1O! P(ʒNpD(RJdY4s=P պb@Dl>bX RzGbo('SK"P-+ )o$l6Cu#z>I d5D *RZ'{KN*CDb4o[EAoVfCkZ-Fp΢޴D@ԬK t}Ã9&T5PI)xo9XWkCkmPL$5$AgX1.ľ@_wIiFY?$I ?/,P I(c1[r !/C"|uQ!ZJHYI@x;VC<1c&*$/|&t@n]ȭJL4tlo>@CH5"%w 9'·mؓ~TŎmD$&v[b<$:G_2ķFQJXlwc;ŝ=o="b)}>6\Gxŧ#UsΗ6lw)=SD>z3&6W(W 6)r;Bݻw1=ׯ#IS_Jh&8 !͖jLn^2Mu4SP(P7fe9w(Fˀ\,߇RsXk!I c[Y.bDoYnĐ%jUUHFk;LSE4ӻpչm.ssw|xj(=wMǍ1s`:)y9|vXRvn )wAb{: }\2>tLXX Cr5:6{I#{<6Ȓ ^ IE^ }~ >‡k4Q1fԧ~]E&[A >Ƙ9ݛj6p-!|?O1C/J!Fp!0Ibcg{NNOQ-& Ѩ5 3);(O }~wI*dE|XVۿU11Bai,3~Y5bhiѣ@?4>{Thbl>ū> 8T1-;<ϡb~MƒHp!`RxgqM?xxpGR/%~:N+|vȭ*" w|!` [ fNM,js};"|[IxhJQp{`#Q}o$P:zKia &#rhJe^PG0 )Itꦡ^iP56(&دֳ U?!u]O͆]ɤд-X"|)ū5{B:GC"% N:);a5 7<>\'c ej- @d%$Qʲ`1A$K%QUkc0MBp> st]G(oy]jE6_.u)I<0'{S8 K`o0NK>ߊhNS2| 'E)5z<*0&$z:Y'? =xW!mo?8/b$oDJ/~c /wށ0_W_OAYYw<{s?^|Rޒ@D!ƪ%bv~gg^>,7nD*%Z.ԓOB+ӓSe1椪f~󯿎o~x≧92RɕJ(HyO)mh5O`RM]#K UUfTMF_}?#? =>=ReSL o<|,e4+ocܽl9ύd@"$Q:g){Ӛc^lgcHXG0 I\#U+%ɸTh By7~ք6}#xO)@",H" Q],lj*, I| <,6I:Z ̫(Je)ziѴt}bǰIjM`dR mB@`~0úY[4@$j@!@" YuTh-lRq-EjFSU%l[o%uКi5I3:uUa\9$I&$o$NF3D#IRKe Z)EW^{ Fu&aq&І̎׮]C۵xqzr֨mjzfh7zG#!}@`)@ô Hkx!B$Mhh&qX2Ι^!RpPw9̅1, ^h !w ,$9G+w,RO y|`̓rD&]7Itn9lm~Vzzxu/eN02vA\<2}d߂~^NEFbzo= _j.Mwy}{ +|ۥ|WϦ[>uk<'w?c{{G_]OF= ݤNx_яC{4}G <k'.\z:*?}V+V]qЊh]]c}|x IiȽQ`̝4 v-vBQ}6me+{Q]=4;ܲ~^g?oGx#u?K(boKxo޻+!d0B=8EtHSO=Ǯ_@*w9FRJH[KtЎ?!ȩky4(1)'VDe4ޏFNf~Xq'fj!mۖ1XRmpޣ֜( B;KiڣC­=ڮCb(P1n)6H`ֈ_12 Il]]׎ 3[?m;~M6K^%ZjӚyJ }SZ3(ǵ( HE~!D4Mz%|-f J*_җe9usbS%%B6~U1l+} pޡ'IDH]ýq d,ga7ν#+]fI*HAF$L4[$dAcj# 皓N~D1I@i ɮq:ގ|9r"Ҡ {>=cp:;S!DE[W~)xyYO㩧Ŀ߿^z%|gpmCq ueYF$R/ 9~GW𵯽@ I" 3JY#^~e|#?|/ҹ#4 1x ) {{?//Ǹ> >⥗^IRNQHk1RW^At:CvPo&y6>]ߍ?}eTw> %cs.K)r, k+pPf`ׯ؏(ϾTFK*n[W |o}#4RlD)<4ADD6M3# p2"R "1P\J REEOk%^ u} ZPo-$T1f4!%GCYD$&A9 t-,В$dq݂%]Do{Ei9mUUv-[I12Ĉ@A%%絒H[ehtä"]Ӣo;tMfґ]=| tr,gX!‚!,Q%$%c|0ZP3I2d,:VU<ڶ@]US=\c&yU,JL3pBRDZ.PUzG,=t@D4뀳<kB#Z+톸m8!׳ٰbҔbQu2ZU,-A$I#Pq4q =)Ge85)B8:8D>ɑ"MHATŪ  ҂t (-Om)H\@6 &s`) 盵=#)=.A|{ɍMGBpaC=ٰOB)B A2 pǸC}{(Y |ӵxӶ-SxJ gyDq?/ XhM (RL sYseɔ*,Co1~=SZf;f3H)=gϢ I.DaJJQ}Puxx:6; !fbR֭89=4yc\Bka ߪt6EfCkYJ{d)H.)6R7֔fZF$L}ڵp׎5V5l AeYii_b B&vY`Z"Dh,GYh{jJZ!)!ΦӴ-Y&.΍Ėo\Aׁ<'҃fFIx͹'_ Go#{lvu>e0QIohG>_M$!wJFC1y$9&30 >Dv` qƗzop<7'fFi>?'x;oޡi${7b4mp}oq$F㕗_ !Is?g(ۿ^yӕ x'g>P:?=L5R iO~?ݻ=Mף߾ % ;i c{0iZoּ&*y۷ox!\RRJ2 1úeר5zi{p*z ~6 5 "_ BQxsfq#ÿ2P-"x1RhA߳@]Y#QFAbLSGf "k 'Q(!SJӳ D o)YHN;j A=uαs8r(w=\WMCV 4&0\li`;׸v @yA+,5 UP-exk!#a1Dt}#!sR6@P- Y)G5uL{9/0ϐg9"P-+}-'}nAp }gPR!X-VHu kZtMC)Iҗlmۢ9BHTZ"M4mGfI~*$EY4m^х/jc_b A(gD!buJCڧOkav$X3ΜLolj& o- FCP{'$R; DT$HKyABӵ(ӾJ} EO>lL7z`XWlcc= kDGk N 5ch!V_<^&IH)FܷdZ_rӕ <ϱZd8;=`!(M# @ws#Z6hB$HV IDAT֢,r4m77gk-"4vps]LM7MQ̭!ޓd"ɳm"i-&Tf6Y׳R 2kD$ASטLJDI m>BeQ( d:99ܫu6ٞ(]CxwTMuTK"{p(`ZviZx45 !x$EԨt2AsX.}gyyb13Y6Vf 6JP4@$ {d/mR!I8t-G螠,\ YYCi\/ 9]*z.ߎ $_&;a yNן_֫qqC77'i3/GXAѥ iQ`{Z7O8bcB Jh;0&Ѵ%:JQu {ۃ-HJIyr~ zX;Ɲȝ. ]z1{8CbJUP<+l˭x^>cqS"v:mzq*x< ˊ8U;ox|ؤǰvx$'b{8Gu4y#=` wF+-.ߗM.zGGlswq~C8o`~,tx}s}hU&߉]4Dۘ9;m#Viz3QQ'=h[7Rcؠ9Aİa3 [Y rvDP;2Jxgi8Q M7xcoKGPqo 9|-dY/~?O3znkZ"K|__TP;AۮŽ{UzԡkxcZBh__~z5wmG j|>x,K?O y˯$g~s7o77qz|JhwwųsX,Ow=ZhY\-򌰨"'~~P 2Յ<4B0Ipx0~21oA E0F;,ud2-qr|ã#E s"b>)[6?B9$l Jy4 cG1 p8›K%wPҰG$$i2nrB\iMU H|b|"FxH<ПOY$9{J" {%#Yg  A'|" zM4Qp }oQ+؞eQz|c?<4p899Fji,k!c:M  np |6bZCUEr^ 4GԔ&!k"eb %"i@tdưquf3dqʅaOٜS޹s*u`6#O)Nu d:L'Vx|$t{0NG%k-QY,K6 m&)4Kjl6BSPzZ;VT'g89>!,Cߵ@,'֡( d)u+ mǹ|>l6#c"-WT 5| ZÇpb6Nt<6HO׵B B=maRdqZT )B( WuC)4ETllzEJiM,aLmG&!"&1V TA`ecN\F y̸z[\UpH;GN _~Pq[ Flnڷmq;Ď3!{d4،F5hDQ2"#Buo-ϡi7b07G OߖWC4;7-<=+֋S(i4kX[p!Q.G;`0 / {9WM)NjxƷɎWM㑝ڑDu0^WW;u.O_V#^m1]|6#1@9,p> M3C<ԗBC/>W{BA=wE c 5@G<2t<9 $d~X$GgPЯb@rdzi۞14 /rh=(|"e4=<:hmRu‡0&Pi-.$!J%,|Ud$PM IB I4nZdY4IźZ#I3f# 0 =6{O"!@CafQhU4pӆR}OdTUF7o|>GQL8ɯ\,xנf%S|F+6>+!^H{L'>?˲x;Ę)ٲlKl&c3X c 60M7swKVueV@UPAƲ5LefyιCD`I6BkŊuw8y޿?z]ä)Ƒv$XWn/`\`]KPHwX$wO*xOS"9c-s^BJAY!n韉899MU#B#u ٓHzv 2>iQ@3@KPQ/f瀭ڭc:q^zXFĦ\4h#6 {0h*?ʪda"68b܃nwT@&8O@ƐzHeOܓP޹1ǀ90UJ~O/b'sW:LN5,:AYh!#{½ Ah 8ב GX-X݅=[6(ykxדB6) 4z&BbHMbPOs;/ g$u )4GQ!`q@'RpΣn*h),%ʐ1)CfHrky4M#C; }>IPrW-C?G#zZcT5zMߐ"QU%Ve:m5qR+X&IQ`2 2B.!" g5xSZzZ,b̃L͂km$}uS L@dA#IMf E^X*{ Fa'dDAhCO̸tF6"Fw(kF|( GbJ+1er6KOin}1 }) "bƕC%"s4Md較Նޯ(j>wL10!0L.LE=:)1) ԴTb4cx8"cK&vZ\67K3_g>.,RĦw[nq4|bD|bf[Ӹ {JcXJvQaѻU;&8dw ?S?/Iw_fRHHXVdTqJ Tէr\e7]5h$5p#pc^?x<`ESܷSa~<Ϸ򱺸4F:qϤΛz76{Hx_} WXo!{cez5}=ž-vWOqwi~w)oo6L&}ӉFAz<7׵Y{]#mUk7K/u P8ӂʑQ/>nήI _Ŏ)No .>AHL1iK]qrqhHhn)W_z^\X."+R.x_m ئ!¤9L|r m (I(t0kÈL6 )Eldpc[) 0jzOn:TPCu@2JA^Z F[(g@qPPMђP2\КR~ƈ h`VY`_x=}ȣK1Σ"ImhZ/?^õ=C8MU|_x$Ve 4db]%]W>I|jiEDBtx'3b??č_DBt DǯgcwDFrD Dk!X;t!Fmb@t$̏5鎐/QJ[K)5iP55ڮ&M۰e !uW`>RE[,MQ.Xܹ{s+tC1'׮cvpH1ur9yD)$H MP9N!D, `Te׵gLbtv\[2LP׸u{|X,( mګ7Q5$1mG spJ Od 2GP~6VUn.@D]X,pΡ=I2LW5b]»]]^cZ[4uSQׯܙ ]nF4ƽ#L(A&KF{ἇM L$v<>S& 3iI8zF!C DP9Vk$IbV`RXEUX,@$?o6Dh%x,>!G}hkkODHm:H1BR [ C],Ѽ9:WBBAgC#i*7z Q\$;hʗk^ f& qπBuc0βPǻo4\k . n=|{s5APol?#Fqo8cn 5hͲD̪9M٨kum`m* cm@.1HlJUO͗@4L9҄ 4t}ރr]x1?<khcM?+IIX={lc 3L&S)ɴWvh6qwuUu=sPOlm\(q\Pڠk&3,g懸yѐJXףVB|:rF]7L 2M@%*@(6T`O> 4M#u cndu,ptY'3]B tk-h-ڤ4I Ʀ8 E0b6ADJ̱\I+y"=C3<;pTO %5t>M4U{9ж(L(Czo#x͕I[\A>^U IDATP]c;?j9.A&=v|HuaM fDe_;8#mq]>xo!G|O\ʍp)x!/~@.1Frpm $rKb Y-w? )BZ{_4s\Ή+Cc"0yoy~a=e>Nx?L{q|ҕ {Z.֧{ & ozNx o%O I[\ux|1(~x嗰^, B[JD9:D=%!=`p`]70-bO{toF\[!T|u5'}`Lx_ݫF6/ MUYbZ#s\aG?vxM|!:)EY)9(eFw@i~?HC6t/XNя~>r }嘂|=T)8DE֦8<|q pX }mۡi[Jy$ҟ4p.B*CI6i$bD[5&*_u|~JYtpŴG ^y5,Vk P*Wpul'xq+ \2\ph@tu ,1/t$42ike)>C7\@b$<g3Xo; r> nr{"3wd 2F Uۢ~{ m G8YhNVԫZ7 B@uHd=Z<^DpT"t$J1wh;)"z>Nuޓ',7}=q:c|c|ø-W %i3q>riѷD1UQBq:Zdn rMU'!3D{n޺I"K@A =Vwα>[3 V wbs¦w3W+T5[kZ\-RQEsuY{xOHـs[ AD2qyQU}XedǕ]O [=Ch*#B 4ڎ ;.KUaBZ Ktm. ڮGhDSϭ6Ŵ@Hp2bMMC]~cXW5b㓱f03k-))ȳ6kG\oZ]OGeyUUn^DYQ7o%#cC8Bhc |5?S$Llt-cKn,ӽ#r@US=a o LRrp>t:b>c&2Rԣn/sUlտ#Z>+k6hM֛= ihMI4AgAв5 cJ:mAqj'Jң!A]CjbR "" zѿDR"0o4ֆ?[:,E۶3^+BX֌ꦪ"rFZZGXP^>F4uEE%9=O_$=k5ޣm[k[LSބ00$Z-Tiz p|z4u(0Ȑ6dY6 ًrmZ*+Uk5ooŊ؄Ӣ@QLȡ ܽ 5*6aMCU0) _eBZ"ưLJI"DlҬ@@UUz:7"tT2b mGdrSybBzQu,WY|x {F.7]p0]`Og>j#Qzybvi#&.Pnz|Dܤ^6-P$KN[+Njq'Ǯov j/|BJro;*J ])mCbY""'/& x#6w8wtao]&>t_z-q?m=ʮ׳O"u؍Լ~>+^أm>HMbwX+L3p H'I1֊4s=H )릢}Γ@BXl!NOO_7`.ŦKє{BO@RVl:4u5ŀ|3DJ"a0C{GqyN0:194NǷa N$W'>og$|~m^}dpB|,rםiRFir%B"?ާKqY DMBi).3vc l[7o_š11eY;NxW?3x~ Ͽ,G`^@_2Fza5x=||V8Їۿ[_GO/W 65h)>O5|K_|??0) gm^d:Iܩַ $NNO6l4 Ft-wNOK7k' r*{\OzI"|n sP`2) hCu)IkRkdEaiQзRJf zǤ(`MLn0d b&-5GJJB+(-1PWH ;y;w)CO*2RLjXkpG,KQ]1,WKxGd$hDzD3j1J B`X M3X M|ztD$0Zo!) Gan:GX.sq5T'EZK$¤Pdxrڇ{߷8ωp横 3=*% ʪG:2`Xc$ iBuQkl5}WNExa kqy]D|fuDڃ =qטeԯ>Z-vŸ!EvcW&j2t4m5x 7"6% 葸Ճ=&ŷPsq 1yH'0/ RHC}ؔq-ҪyNo9)s- NJqob0;#^/^.aԧ4Xe|Ppܯ*wnzV/dFsMn \lfp0??"v.ao,]i2@i/}5ooW@zK5$.b#oavO 4qdwwx>Bpn `Nm,@{ܺ}8>>ӢjۇiP5&,l=;G9dy4iHyCo_UUhJId9!M65l;D$Ydy$\R)&fc7SBy$"p' 꺆MxmE^ͽԔa+`, ²,CJ֓. TOËT X/hX A t]=\sZ%3xNiFR;o:¿+MBuXWBb2*a-%Ս(W%V1K]d4Ku=|>G /mw~Ɨ$ҁc`6Pz]$Y򖋁!AޡiJ@=RJC/}oE3A-ID^pc[zF#X|Ǹt^w^aSkD=!0._B!Q<?a\ymاԛ:z!8\GG'Aŗ^·{5 !%W5=[_+e '~;tu:'D7{?㝏O}7nF{SOO>N#0HZob:ާ˯<[>~W/ UoxOŷY4}Z|뷑33YLYQJx!X Pa>Iq4cqǻ|=淞Clg u&"D6f "H f/pIwwtGC]D) :mQ/HtWQCCi 5)Ѿ&h($|`uhtL!R‡h@¶$Z>p$BHuZB=]PRX5]Ip .hc6{ F{;ߵT,I&_P@j3պBZ#KsL2^61 BxУC4Eb6ȬDJL2z$A&pkDDwb,ʢPhޣiOv=CS5hub.Ѷ-%}(Ph5U{_ugs"t u=}j 촂BK(%rcI,Jp2ic~p!Φ8~Տ/!&~izyWFqA~%}Yud6nrKP ,0eFmh(ܽ} wn!ntwn'P"^|~xe# IM49MlxY芳*^@<|YW76bw{6ܾN{u/Uѫ[6lx gg{#/&>xה0"Ϭ 7y0֢a NtLL¶Zmc@UV|Y")L`s4p>`vp)uD'OݸoJޡ{̦Svη}OINGucR2}! #Wrq:Z 9wf$#P_$Mݐ;1Ns:u庂RiFi$MPʺ1F+JH}ߏ7ZZ ̀J&l:%9u03=%=zE)u nYd$oN4I& %SԐ'$dA 0G?| 9`F'3'~ip)"ۦ)ƟpiGO臰\cZ!ZN(<?jeY7  4^bNOquVLBH3z41w&b< |@S7xOR*KFQSbр1&)Sx'?;n+_3ds-}֡'9AJwд!]{%[g~ qO:g۷x0JfsƍԏT bL95%"r@T8pt06}p1o=>::l~#KxCjfE92c7s}_LW=BCsGwh7\D#`Bj$G$":d) W5~fԕpJE=+yXC޹3 zdz  BePQI #5Ę>Em)O[ ڦE&%J+v v-,GbEH26U\A@DtMcp]9F]kW+E9-K3TuŢ=]R0fnz o{蕄fw=TZiW%+29NQ\סmIRjS3S7ʺF69 HFk:竍BH e$]4MOs#IS@2HY? ƪ7V#:MhO;tN&2'4 B\QU%>]B)ZoRͅBlgnBm[Bwm5"sGB=Z%WPmMuT0&<5 1n21"DXKr\e ѰIJIv^HjWtcP7 ,4l#Sm(|X(=]RDJs}k78S ?oJ#ڎy(W?PicPpRu"򰩥VJZPe,{?۶48?Of2aD t/;$ƢZZUã#dY۷_甹Bbqϼ.HR26mi0?8 wU!1 2ij$Eg DOP9XVZ|(p~v!"u5<0b? ,WKLUUrE$(˒ #]KO\Sǣ\GX.HҔOMScXp"/|Z9隫$'IBh&#g=Gc+ȸrpwH2x>>jޖsXkL&SQ5 9UU+ @JDÃC$4qFk4Mt#^( zGyOuZ"m,d-I3>;({ߚQ|cFb|pح+Y4zuP'?^/! D/q޾7O}GR|S=-܀\).%c4&?dC"[ Y3njSX=W vo%N[ ~1}X'.vy?pFOeD۔pHPe#7ޜװN60J[ϊDKp;%!vާ=\~x#Û Qu!ͽcz`M/^#$t4-2$Jbqv7^z#t-МbVZr}ξ·q{vאxKTZkw%o+ϙ7;qGq [q0 h<ܣK;̏]a dBHI }: B34`1s!q6I\nUUC bR 'PSe]w,S\bh' 'j"xXK)h縟:B'ˇԮ5 I !eYJ)p]ۣ*Fj'6+WYJ,M`a'Ai,qX``RpbZ҇xt0),C]۳^Z =$Y(E=Vt%'WS{+XMe,#±650mߡLݻudY|Gކ~ wpW@~c{ 0;[w;7qo3# 3NQz?$qwh'Szw2uthFDj *Lz C8g׾I{()'B::W鼽7FT&ݯ0#㉇q5)~}/BCHב#_tY[ k ]}_.ʫ(o֌'ś?oWC zmLc~W>z=:TG*f&m~ǿb4 ?:ePɤmAr^H `sKFmW ח-yXod^Ώ{Ħ[R#Z6 .׽r{W{3Kx lA75nTŭJxB~r'ek_~i^[7w0ؾ6> ==?@{#rG}o'l(ߵ-ba}V}*烸8ː廏ClϘ6 /1 ]X#Ix_X}t6b/= v{DyWRDf,A0Ƣ3jYɇ,(IL'3הOӌp#Wޛ?[vWkg!_fJh@fi& c]8v莎DA1]m `Ix=}= L)%ȑ~<)߻9]k} Jq0DpX`%iq5(p<d|?qܔXV&閄$C B' Z0jCsg`R"]@>5 i"MSxm`oo{\2f=uW=/+X$|lG] CT o{қRr}gr3X<$Tνa8 Fi> 5i >Ypõn!R@}pnr3 ^J gNx֢H??N cÅA!o<Z)tm,Ӯ\>'~{ q >Z}uCE1{p?xNX45>O`>?b{^|_ ǡ#ǸK|?|Q{ĿG.q{QD8G.8y}_g|eH{[.ƍOӧ|~ұTX8X:k/]CG!K4(?@G ~u:b,`Ό|=*a91Dz293Oxile<¶ mk3>pg`ڱ9J[SB!Qn[V+Dq5]H.'hRim$x,aEg@%G۴J@KIэ 7Ds Jjӛ¹uԁMu%|0~PAHSl)D2ItVNHB1"!p!`eSB tB5':"lbNX%R@p2-bk(MB g3TU6utԳ7қWC;8[!P,q>($9爒EQ3H0A&9 4*=bɤ tDpxxHG0y{G!Pʪt$%Qx$ˠ%uejETΠxo´ܔX/huYS5hi"Nb :t%!?(3˓Tu ָxZ\ KJ*JJTb! $YJV񰏍M )wB/u+4M!DDX֨j̪j S5()UL0"6U?Pڮ8l9 .$Ơ Kң2AlIdIs!v>OhQ?!CW'V!F!İnr!jdkDZؐ(7%P9P 0m(Iu3I$ njR2KƴHJ:s'OD %VhcMD Oǎ16w{Vzh/%$ϖ[b x ü"pGdVG] s(Qk0ƆϨmP^ )T-Cfpa\EN]J!H)JѾr2 iVY7h]kـ6 BL^Ww"I*\ܼy<`8НqX,+X,Y,ˡF4L&XVPZ#cl U9sUY9dml` )8g$nֈ }Ƙ**]W._!sxUA)Bm;t3 Ü@)5 E:iLXu-%4EӴh;kL/I,wmK&81yd>sE}1yܬQ75.]bf8Ŗxp`v;> 0P^߄7{%<vLxQG?F$g^.wHND1OmX * ncvoX,!u|g2O ӣÐݧϻf9Eba5>"9{u>S֌];~qטTM۟z8_xENڒ_iZgDj;uMxw=fgxS[lBs.(QRgSr/LDVן#!ɿKwx?W}$dL~wn]ۿ Ӊw]0LHi|b:jSda@Gop'3$q1MY:d#U9Ҙv3g1iJ+U$ X_ُ(Ui9C|H;)DvA|/,w?7 QXo/MS4) iI"zH'K)EGt R4bJQw1yeUˀJ'$R%eŔ |jÞ @X. )4C6q&f4d:7_2ʲ Ri8cnn6)Ǖ|~儷6$LHLqaSD0k>%۵KE@n ܎NjGZcÀD@JE,9 'S1B3iE 4s, K\()]~+B*X &L4Ag18[c}G=s^8 H!t:d'xZǰ4%ҋ( ЛWzZd0,Kx~O?fz1GJWz^z:Z{^|K_:W. k!;JϮ'hݏgB)a||Q }{(m f<+pe rWp M7Cx %)Jp'c៟x 8 1$vx>sUIB"cBr()·u?~' 8^F' =` BpfCqA{D! #>T|F`@Ǻy=|"xwD[S\_#='KР\/:>"A .g {-0];th,B_wd@lT]!%"yRBk H@0Qɾ[X :m0](֑`Cb7؀f 7[u4 7(Hۮ^,"{ MSt3 JJi %.&ԮȋY#chMc)%f)cE'!BJ3Qc2!t`RLE*0.( H:Iq6̉1(BgX,Xh xŗ57X-*B3 eLGqW+u ${;8  ԑ[ty׮!"LqzևR x DQgyHr4uDWgHZcXk8l`L rX apE IGC򞺰). $!J(e-%\`<4Ee0 5 lXy>xȈIkGt}m>罥=C#%šCrR ,&q0T5M E(Fš2pMSC*%ta1[p2U%i:AE $n2w^LS5 VƢKYjHkemi_QXHt(0nk<}F''sH)pt2VUuT%=edYiw-Q*y1ZGd˞ V%oI M,  ;2024mgޛ͠R&UQ"lZ*Xtݴ6MHV BrG5fPaFޣLu^GRBYd棪$)%T0$q2Pƽ~oW7+ϧvd$ʼJ7@~ndutccc;IpsºMEލ?$M kJ236(SYsth\|?P Ns2'03A?8eb=ro/>'im T_Qt}>7~?/>Rwoz{ރ33 [=.xSv]:?S˩w.۽`1N_!kv/bT'EoK>W/u+?מNw"m/:˷gY؍;ݶ:OYHt,x/Bx ipɾ A$.qstw&R›"1vj\?mrm;ιTX}~e_M2#7$_9l߷s.4so0lB;8-v:F"j5GeUgYZ>^{uxuDi˄.$0$jsYn#/I=V\COk ! VXoHP*& 4)!Imښ wm)FڎyQVnP KS@Bp%BR&twrߛN ?(Ez3`Դ`fs.>Yk=G'ȋ< 3Jx!(%5tq$ImסkVKΑ)6mDQ OI!$qg/I@4fSRz EðY EfRa>c)9.]0 h h({QٍE\SR>h:ݟ0J(SZG&+`f/L h> !BGG7a@ͥ҃{< Pc:Jg P{Ѕu@PaSZu-՜#t#Mз-Z}{ܶPuf0̃ Vx{}yöMx.=I`Cz7 Т8E'|twE^ :,/#ڵ׿kׯZ&Z9H㑏|uHo{0_ď~#\vi^ G_܏?d:8 m.YuB )sԹn%Z1X,4~njdIzS N |#zO=֒tpp0_n^c6vQ"x ikIc~| GfDZQ \>a64"nV_o0Ds$߯ zsF)%3JJk u8AQ%|r``8 ^"L8C6Jҵtt TgbC·u&t+PC:g[ix׃DqLF'|OtC:mg ]G-א K21ԦEuM 3ѥ(5D8Ag k,,8KFVyC4MEˠkHAkjg&q tyFfNc,hAgKGJk*vh՜5J 9ݏ} Xedã"xڢ(`T[CK$i@ktmMk*ڢniO&)A\g?|~(J9Y ui1c;Js:^AI2(!a:0θq"졽we.DX+`dHY(oٝwFSl z N$SIF\HR5TsB*Ul%UN I{4e^WБLc1)3Țy0asz@6*Bhu=%)MlMMw6d/j{r !$w:nS8gp^~rqI_ϒ%n$ _/kyky?[' }^-I3 `ߢwmJ#6)O ZqS700G 硽i<"`;_٦p~2o?)!`#GVz\vS7py+x y?ʻ-=0N7^iq]}N?wǡ/p]uݙ἟~Hykz5):wu^՟zͯʵu/ ʜޟ\0txs یo8Ʒݫt,oמL #xkCŸ'm؏g-ʲmÝM9_P}->vˇ]Gξ :ݩnm ;W\J}Qg8;D@:ƹ (/>4mo^${=>=75 S8A;Sp`pes=xޅ'~ϘS4UY(Mɤg`Z~ ?ϡi:y{O? Ҽ]4_>mx]㩧RggB$pm+4M4 DY}z 8jLAKXf:ۖu݄z Jq EpWQgXR{#S4MGh;ByզD8|ҼQ3IQ'$)u6m H s9eQc(\Aj 5.3 F׶5-8di߄3@i U@ Dd{`cH jRrC1IazpԈၪkT 9%'smMU?$e+އ>cnX,%B;& <>8c(ؔEp'qõ?+:׭3.8AtC [H (&DC :Άp5[[:a(I894 ?#ʒVBm3Bg~q`X"U[ ) QsׁK2״])xHܘI IFI5Pߊ 5tDq4P 1R7]O<{=@k#VBu}{PMHqP54M!8ȰhiC:ziAIQvֆ:)k*H)<Ȉ)Qn `3߇n)u"/0{0uR0CRZ}\nj2"0nIkq%nDbDB:=NlrCIݖ {M84 owW>,f=(g9:ct_E!жmx.dQDuʕv8Qn6tx8QMP)d0 36./C E`fF'В{ V*T~̱mq-R nZHQL&89>A&0]dK"pvKVnM #6g?ޟ=ݞw7ޯϋO6~_,Ͷ[z&‰gʣ?t_ءf|;ij>g.? ߞۄVL8 yƙweޣOcS=v$)|,xռtwU oay7.t\:su{ȑNp!gݓƄ;]ws_6v|{syoRk ާ{>^YSzvxߖ~:qיu_x.s 4t;o_<r = mawb"YyFBqnSʙM;1n<gf[s@&~h7ݟ/le+yKo}?nv8͎y>}Fp{YNK<¯(v:tj-Kpq Zu.ɲ8c. oY6$R$ GHW3ᜡm:4M3rg.t1T7IӁbAup^i=q'dvK((!LL2,ք:D-V(B4Y.P.1Ɛ92CK(F]7LG4EùeFL 1#Icr )48F]UGD_wo<`"GYU06RH!q2w8>Y_2?tnBKn]fE~h=h=khwv8 1cz3@0L ey|z6"9F.  $D IDAT݅rxyg)/ OkH|R4th0\òyO" i=ega&5|p~xO-d=e 0:GcLȋ_?~q]{>-@b#;.p܃c^sPJoTJap@GUWHMC ֌Q)a0nXu'hi_VhmC("d B3D1uwNwP%""sJ ku &!I0QcH_]g1_H܄l{.Q5<9RUUmDYk[ܼyMSf=aź Xdbd l;gR#2Jf j /e} #5iZ?| R܅@4֐20HE56dHHeDN'(B`LaՋ|0(>Ni`dJJ&C[1Bk7M x`6RGw32ga^3t<<2KgגhX5D&Bu/ZP;diLþ&K3XGƁҠn;w'Tl[$ƷS߿Zb{fi *d<ܐK{&8Vm̿ Xr9;bVX'wzsct)+$N9iTMھ7ިq\]".=Ww\ϼ1joߏW_S-=M9z$9{PboExYJ] (Q@JFIQQV5V(0(75LR6C%Xek oȭQG"w4.H(%C&A#.Mz M%iJ麆1q {vn8ι1f:TZDf- _h 0/3qetA\A])Yp.j8GhIR"ۻRB$;l6kJo$)d Ҕ:)Py^ m:Ő}jĦ@*O_~Kx硣m݁[ۯ[3T{xoXL»wY?{nEk6!KB6۶3}/Yyzwg/n0sYk;tFzVB,$$sIsN dKiuMՀq :2nW!Xa:;chM Ba`;҄]0iJ!Sq6}XGE)J .`bbK/870H^jP(`Ak~Hu ~0!FA J<2p."(tEhk'(`iAZ6u&$tR*!JJUִpZ;$Ś^,7> <4' R*8瑦9u4tI*)T( qaI1AVL6K(Ji!2鱼>$ & CBߵ(mqrruUB Ar )%4F^cZYB;c&1dNAn@dKt>$E9tipP ^CWsH2"f Ѵ &dĊiڬ }{t] ";3A]co6C-3T 97>53O1 s0>Tgy1.Ά,%x0ݙ=NF]a *`݈|=:MgCzQb\1>>>CS앂`/߸K.(7 Hp Ze9HAP ]]!@MN!(&YH{$I †,a%$7| uc˚3oa-vKk $!x a`tVw!pƩZI@tL2h9$ 3]JD56Ζ )Bt7Kh@ <+.54ATE^Mh& $tD1sX.A(ꦴm4M;{=kS֒1*!\%| }tjkIt]֠k\r7o$y''0dB{`R:%aəAeZ!I6bR( zbf:.faX8j]BJK`QRZ DM0̊b8q|r`+rZLmxpϕ+hfض% !խsH 3OUmo9~砯C rb>q>tq>Zd=} [lٽ N+íNNjcaFQdMI4v:IqJfw c Nx߇7ȯ-}'hu&}'"p g?݄{|d'o_9 O'p;_kWn|8Q|s7V>{c%8"9Ntx&qN+oqIb{J2/{<h-3-6no}L`mk#}|w>(=꽅smX$n<_Y+_.$Lk0)fh 30dx{z5PCBipÁ iBO$$CJP,rp@yYAzuЂ^/q|%Ēc`zjgߛM&1ַ~},W+kخl6A^/0 jo$ǥif[(F8 ,c#/,C<8)A X0#@xԾc|~v%@>z1MS<%K tL2@м\fWHmZ)ҝ.x}02t|HP#W&3.\7Y {Dpi{RҭYFJ1…0mG|?EԅEpRm}Kp0P꜌>>TЂ!~A2.1$#Úg8́K{(&lX41-"Iph9De8tz0MTii 6 <(=u8T0&8g)JEqtBIir8IŐ] ٔBk ty884# q K8t7ȤA)n^F<4uz8N( TtEUQ@ƽ(18b N,`d:A`6Q}M9:i 4@`~fD.PJ@Hz?"eUѾiQW}Yj3DJv&Ya\ 3HIᾣKGdlρC)$a IJR$HQ#3y9&y"1R,`݄ KN? *M37t\۰$S '?HC fp\bSn9zB$d2,~jwAG (|ڻ= Y :tmd}rZݹ^84wB$ c67@[6bwҰ\~!lg ۚNHeR[IIDav7 ϼ.s`t0ƶRi["0۞싴A=39b&Ft٥]2ʇ2*lӆo8L? c["7 b/ c:TpVcl˥t gk3"pyҏY:׷|4YO|opkq),I!v[;Nv|Ƈ<᜵==޶r7}flp z߁;Ď;۲ňf|?s{7I *CI].mtJѰ߂3 ۬qW+/]!b 0aݨ[v+9(n>4-x{lVݾtmνa:Mm]b9ϝ& tۢ.wMNǽn%_lGa3\ؾ8]>Më;Ӯn9dQbrx U>݀g4^z9޺u YhU9|ZՄ4pvl;50nHnyp&0P#ٟU !uOX^P+ AXLDK}>ubM0_ww)݉U c]'O3gwKb4pi '! 4Xެq>҆8@MѶ:ˠ3 iQ(W\\l-%gD`2#FBK%]9Ca z`/F Ũ|bc=I HpUXk1OǗKp!Ki.%(WsxUu]CF J)`}D ĸsCk(-0_&;k-Edd Sd6"+cJu%a!)r0a8WںgdhdR`|,@<"F%F,;KDd{UUX-ZYg[4unY 2dgbz|r6x6!D9lS wR"Z/]L`!Y>!cmm !Ӕ~DAP-F%NfǸy$Wh! "qX-1OesW\-i+12 k)C)R5PBR='7QDb2{uٸgr dBvr9`hw(}e1i/{T}lOVkoqw?tQ'` ][ zS$(|ۋ4gѲ[ =؇Y[vx3w<1߼$yg V`?SA/iԇ]7gR$u)wmPvwxmz|Y4Bܼ ݿvFQ]ϛ쎃rAٞ~.Ç,o")w`mZBdiOSosN"{"l^>x1ynZ65:] F };qö=[ƐmhQ:7ҋS'AƖ*޸]#+q(Nιv;32!ЋNBAoXɲ*/p|_d%o/ᙯ W"๠{Q"$2P9d^PRx ;CR@mFlR^ؤѶ5r,GFܔ eu u%SoIƉ^{\r# (P J7JVYCkKQrBg(h2U`]Qk6?'@FPG)JVK sJ噆wM 8_`V:u{!BLTU\uITpΡi Hjך EE?yzt1ns :z|₃&\64@Pju{x{ o "(RlU($4d4T$gС PH&FKT@i})8BQ?$1BWp?=៙h8ʲD9x;/궁S//c6K'_WjMFހP>Zm- U9|o{^O$UW^y!%@R]W#_['RAI"&Fgh Y ?LJ>A?Y>9T#3Oq\?<o\=!z"s!+X5:HYa%V-PN;0$Ƞ@9~:;>Ļﻆ^}_GYHA|Ɠ?NN )@0 g+<|5ԔdFXȁb77/2 u[C*De:OX`˓H oHY6 -d|i%;rס$sAU\ \ sB RZ見9޹ϝ!%XƗL7B M9HFg KǤkNngb Cdhj[HA[ki=!7Ãb2Ŕ2"PI4K)֮= @p%rw~=T4 f eɸmj,kp`M&Lt2gÍ[w@QX-X;8:%Moxgރ klO 8# Akְ1Be%`Cf2dF[BIEj@*%ʐMTm)ɸ\,PUkh`r7 q9GT8,s * JJܹq;0JC0b/(8rõJ (Sk0;8s('SL2 "PFC jB^m*t ) tA-6xTh5h^߬ǺR緡J~/ɠ$ݜԻ^p-p&p-̦3TIBWGDOѶPJ7> ތYO9XOJɐù}LH'H)(z﯎:ص6LmU?'wA sm=Q MS h&Sc0B&q^RmaTT@h+J`3D(-i}tkQ75FEjg }3wd&C k|:/JyAp !" ,5iT(lR?, COF0DI$l@39Zm-H` \7 h&C)l kh {<uCG)\9B붅.M` `&0*KXkS١dĥ5 sRB YJUj1sǀi1;8D^XְΥUR)F#H7!iVU,d4ʋF6Ρico`¶~94^sX3z[2Ts}(f.x9ƸCR`X4澉{qcŰm>>/_ן}'뒒Qٽ+:%Ď]<'%qwO_ٽM=T\DgPDum:,.g'߂ej : =BJzpx;/_!cBnw3I^?ޗ:Iv;];~[/ys ەEIO ;43KKĹ/sdt?[yvu= 78<i w?B4u??x2w{`h%D# G9Xpd4B%9aCQv0O YFCʢn_ *8ɼ(Q0P wJ [4 z)EDKdHN}KpuH*q6 f'|G&QJ0-d2${hz]`YI%#%g YQ{xa@sRgwF^7'8:Գ3D\HEZZIL ='4i?l7wa{ uGHpIT R\CoJXM#S2o(%C7 9rd&`"Z1zE>g`<2N^@f !KlE _("HXkWqpx?gOm }] DzxiDG82-:H /( CzOƣ`[e!lhRp)7!{*o+F }D1216gS\Z,45=$뜳 qܾ}+%̀~=^|e< +o=2 M&Pt4 S }ޓ[&1bXun!a&N9g(1xCUS|Q9| h}אwO-R;ѺF+K hC46jr;@q4R5X) $OGGRJZ s0AFJQ9ܹ,bH y^`<*RKe|Z8|ҎM_ГSȤb&sJ4Lp||/Gd`ѴK)T_84%).쩓mRij,DUmCzd&K6dHsn,XOR"r.C5CkI'NyQ""!Ñ0r`Hdnj[)$Xѻ|KbxDߏdTI! ]qܶ-b zUλ ``<aX!n#1̀4-NNNp}~kz]AKR>sJ[j kZۢTբFY%5 \Akd&c;պ0(3:.|My1ҨUUSxU! `Th4%NC$!`[jF^(ZA+z/LFt%5`X.ѭyض?ϑe֑uU!29'0F?Ώ$2۶iPK Lm@usպJsGc 4b2Z20qA8bSD_2Y)NmGԐZmm!B޼Όo=jSgRbyھgo oc2O|?\Rm0=ZѪv_&Ͷ`AnУR Kֱ]qEs:m)#wQ7WlW[IӾeNxVgoc1Chi5x+/5 47C0;tx:(8o[{!s# #ll:+M3hz6wIfG-[Rb{l0lų2c.{J-x)=1x[&!(&\~u&w%VK|~Ox{B 4uuQe9cЄ!b4* )1pmP@@="2`%K10"!-%j]S"( ֶh?>O&L\JH&qVJKV+/4Ys}]40wz'Vz)URl9/Pr*-|=xC^>|__Cn oC?8uoJ~?K/[XWƀ3ཏ?_g(UhL_)ZꦆP/2~?G}_y+( $B 5+hkW^y_S'?{eY鼔B ubo><^xeLfxQJePF!/2H j4VZRoR+, ɜ IDAT(e($B xs 9C.1}:{!NQ8 pFnW_%A LFP"tɄi" >D80PW;7>PAL|k٭q&mH[fn/ηbqHLX:OgUp<˰^-Rjy^0>8O,:8BcvJ"KD %SdMBǀG#f)$QdΧIغ ~9%}zOBBxsVDe89pۢ'd (R Uգ9L/%0׶moIϋ9Ng*6ʢ@ZȐ*7$t- FEjMB`]U@2iJtɔ9J+MT 隐%#@eXV@Jb2 h[!$2e$ÇL4od2EQk//˴60%o#1l@{Y:(.ɀSHY*j %f@x՚JR݉-\s:7SM D`j8 `JmZp!Qeoߘ on_%;'x u}r^`ƻ!6?7ĹO1Gw<0`ޙ7.V7`߷[b4 l+፷%|g6}V|AY?yĭށ{N{y_9.l%Rل;BM]C.JH_w@~ wqO o5..\};[YrS$$ϻ^N}1n*^zYVnutӆamO_lwǭvEAIvAı>7 䁠~n qO"?[־ y;^i 7u G.`wA;H`7y/<x4JݚG:-:768%\r`!%ɑ5'$*Gf hJ:SRA*r mm{ s4mjhpyεȲ }[k$=7"E)͗RkMJ#SR3Rm~_/J]T4mS*@+'ONOMQuUCIB9:S[;Rh݋NlnItHNR'X.WRFk9!% ֧%D(e`8:>We_&/B䂐_!u?!]Μmy&5&; lPuzlwC΋T0۷`67 :q6(>z%Ć|'%3x2+W$i-UJkڏzK8}E鳌39e"uvg@J˜et:kjUMƦmGdFM*ZHnC{֦iU]kGr1ږj*:r몢:!Q[zH'b0LPU$`༃m,(;Mq9r@6>`<=Tѝcm[2~֥0 UUĶNdވt[WQ:ՆtϱjESk[JmS@ݴ8ͰX $@27^TdjSڶj(KKȲ e{iݭRd_}Ou sp*走~F=%߿s;δ'>Urq6,'tswB/?'ݤ>L;?['99u -[l[x"kv21Z!r8r0AUXWU D #Hw 1P'<=%ʵ-M @]iTCk}1!IxB@ mnIi[mR2 ޹M1N%s%O&1bb >F"!H LΦǩ@M]!RnM.xiCےY9v.b:C2,Wd,UIحZ>NU(ɘɐ""CJu=TbϮ <9KYhQBNp2Pz418ϑy_e;Ѩ;'Eij%emDJHQ%P"GwםEud䔜'$xD-jm-DӴCKj5L_!(euz}p̿\s o !ɛjM3(˒mK~0/eD8<8uo >٪rªkCXkqm&P%|"r g8=Y`<:6fDqu]dDިS_uG!\lZ%s)ia]U(`Fk)=`4BTga41N Y׍D| !XgaŸ,jK2!$sA7+rb֭[t|3qF1B0(rrQY&skOSM iqtx\of9!X 3Y# dƏ1bTT\8~ˉ7~68cޭ|& \wH|>ťC󅄹y q'$vca kzcvyhezk{5⭚yǿ{8lJaf$yŮ+v5I̲{zOϼ^~eq':Now<]BO 8q6QܧzyJtmZ~VB} {O.?9F{شmU^Moϯ1[s[ۍW{>B=BHr#hՀ ζXԵ9wZ|u"lkg:*DO֠mWD z.:O r@B8Oi?I\#26@q7o81YHhMx_vc`3<#8 QJGŠe9#\"B<~45BS*~g8؍ spQ DX0:c@OP<? ~Gh5&O䁐#)3 ~>~qU|csӸy)g"c?,NNBDI/3OE9²Z"39w(2?___{d ,YA zw\?~N3<{O]&Y|R0 xE4s38I8 Ckh$p)( EB{y /g}'p(1I%9Dh\h۾zKI|Эp!$Y߇oϡq $byq D-Ʈ#pAu g8]%utUbJKr {oɲ3pʬBU aKKpcݞ?ovww34^nlk2%Q%TH!3q#μwʬA]{Fĉ37+0 ӷ[3M ZipmZ7iٔnyz瘔3^~88^]0$CW3o;Z"Ob2JC1C)K]7cXYRrJ4W+A+K$ CσɃѷ-94QQXkkKsbAQd;Q^z+&%MפY(N&+AauҼ!Z""btx>:@'YE <=؄>4U= &5z IDATAH5y@ݛ& (8::&]i;*2 CrMݢw$gRǸ4>rjM]Zj[T!hq>1@UWg3`Ӄ9Lr\kXp8Ll 6B% Pi[!K 8H軞;VѴu̅i.fv;jM oSNq6 !bs nerNH(Yݘ\.}qt:%OSc:1^ ezimzMtD*⺸ㅸdA9Đ9#4$*Oz&Ća 4#$IZ!:6 \ ViѸAhFMK]U QXkJrߓO ժ"3$E+i>99vsVeME잔SAf8Z\"!A%.6Yj倄lbVҜٵNX\,A4O|"|rIYqrrFDɕ_]\`c6;Jѷ=Ťt]Çy);hw&SJơ9 (F{6#l%f)f!gUUq8?XgRNdYŊ(X{ihPiB44mG T5{18's3O?MԄhj ? @WgsNNONJB]0Xu=ٔ261&hco~6g9Mcz㭘J% ^X"zbE K{%=F׸єMco'.vuW8jݽqzYuI#BdRD_ 2 woTV%y9f?}=Ffq_º+^{y=1dxْWp#wos\v: 37UOm]︊,7|\~o (0J6»oqKw=t:~[;y>]C*.(Mwe97Uۿ՗b1@`n/U?}|l5ݟ}Wwݯ~=cX]Dn초Ggs%!\aqlkY i9EYxi+'N _h%O_7yQfUiVV(FW\*>&uto%*@Ita:Z&HVEu( Rn4IcA:nste>!~/}V f3u`t;'4M~'y_%tt&), ~3Wb Mא9M'EFc5}D kyǧ>)/CD[mʋ=>ȺZۿ󻸾yE"jyiO=_o"x) Y7e4Zmys]a 'g|ӟK_m|'>Q>{/|WO׾W^*/7YRTѕV4d 6IHwjPnF`y.qzzX+;UdJfʒiQ+ұEỎ#Z2;$RVVT֌[((sCmG`Hزb6"‘-.ӥ@V }/Rz{#U՞"v;h#縠݅r$([117 mA "`׀D8Rɀ]bΨdL˰&90gmۖaz6:i.5XQ(1mq?;pCt[#B(Z#1՚$7mZ̍4]#YЉpNQ8LsrrR0Li;wܥ9wn?%g6u5ͺa]UmCӵmѭc99NNNij!L'%; ISdp<@G1(CB8К*qrM }Gb )YE ~EgSki7^b-mȼ:EJ O3AwkqjPF6R6>g!/&x$(Ii~:Ն)u%Z*:9!8XҤIcD4D &1;eMS3)KADG& Z%I-Y>oKt_-FL:^_) mJ׻$Raa+c萣13$BIHS;FX-9s}Kmc(H| ^iZ4!#q7~װ'1@kсP1)HT"I3Xrh`N\7dYkI".pshKzںa6$!b/q$V ]ˉ8iAoDϮm#'I!Rx"N"/..dnL,ur1M+ e9eCFH-i2I"qyIt0H,XR7`m"F2wƭG uTxs]6s/oz'>a_hT|&v?,6mꪰ'yijy%W=f{gw;'v{9ll1?JG~ 7^'D'ԣ:yzmt|'ڮMO d9L=1%#ozG4 lG7u_}' mzy7wݯ~}_z+__<:Ljs#*U%7QkC׶#p:m[,B_z QZ`GǷߋH#(c1!UD<H zQcR(̸6؈NuR"mDʙ3~E) *}oUmdj [f&di{ D,N1@Gt<} d&mISpt8'?я }c&_f@t^M AtҊ$M|?}fdEb<,w˷>/~E~~b{|C0_җɊ,xoS˷}S@;/| M2ڶȳSsSX咓}@@YG|~^|O)''hY^Su=ygyN`:_В)}Q_+||/z .({^_#/zU1)gXF$8)'YňAY"%4M̕XtIKnD4%{n13@f-BmlY !QHx)'f;;TGiJŊ&]l{bF޽mؐ NV[)ZjޏqԖwfs>Z}f2))ʒŚO3\4/c\b'ic.9\׉@4%،KAa@)}DsRĩe9C)ڶ&V'M?O n~Vb|lFqSG+A2뇾7zM|N5bn dVCk#yO\j|9?[`ݧEZAkMtt}OY4U}1  [W\,Ij/WZ&)XUMQdY*8Ajc/0;zA)`>rtpHb-Պ|F݂lx؈T)[B " 09M$ ͗^nHM" (L EQ༣(H8r!*$Ȳb^Q1q(nx?yEkŤg<$<-b6b,W.jmdlBVքN?w%;9o~t_.0;k,X*k Ή6XVy0 LgS|pMKY$iJ^P餑sL*&)!b2,ȳzÖ́Ld ; Or06C:F s<ʰ#(usUd=9.CP{55ލ RӎJf k ?o^07?nQWve?)}]Ͽ_[r;o-"?#Qㆱ5_ #~~hݙC.Yԕk UuuǠ+7{cW7숰bVGm1{ qn^Ǜüp gO>{xġ烸ؘ̃C9upm$sR@uX\ _}O~o6wUQ 8jPeU#>ss7o5_OQ{U~WےmMM,eӶ-{}/FyݧYߥm[v+1I2"ˢ@n4M?C/}_=fyտt2~`]>cm񕖮@S5oL9T ƒ6{E$=Opig ]OBmiND&1dZiRSvta݅q9GZk-DdW6iU|".0A?,M۱\Vd% 0ld<$UHv[$P{0cdR?8>x_k)DӜ@'i6K}UCZLQ:`Bd$9M+(ek zU71Y 6Q B\1ՑjM?NWD8iQJ3 "Z5dw+#mFkqgheG64 "f3JXQn c%IebE>EǗWx!7{Xɷ&p{qYF4CCbR>=Z,%Gsxx@W s~rFZ(Mg81BKF3ͨV+^sgK}bBРlBۋѤ4)EQpvvA IA4Z0 tJ "Ksu4ՊW"͗`S֫5~Y R3 4M'\,8K Y^2udkF^ aŒz]^N&/L%=dwrjuх`y9orY+hL%GG(bɲ+>F9"B^TF > hCe)Y>x' N$F2P8bl4ˤa#fKM+ٹ߶Q ai8{ DGFiHb֦(υn]ߣf2QLS!##"A(GY:bʛKVՊf|~ di=6,Z(ÃCha&䀾bi1BXj-A,15<Ԁe n Q Z8Ơ!u'hl1O,/ }/Np d\'{֜SsLS<|/S궡Y-F&skLh\psiڶGvb6Z~.Dh7%warlQ g 9WcﮦȻ{^?KyBÀOTz͞8ۘjut!E¸~rv zO} ͇9îXHV~K+ IDATxɓ]o?`؟@G&J]nԍ)q~ze S^c|(6:4mIw\aqn3*7ޝHpԍo.S/p8#wE^!KW=qy~xL5WVGx6NkI %u o, ıX7I5$I:",yNʒh[q!et[ɉ;"6dřΥ4,(*V5i*lt5ԊkMfc0,sX ;e}$JC (i~w1#MrS9!3i08MςJSNJBr֫66 Xy&:I`7c&U u]Q56 =?Ϸ?pxp₋Y6ٍdL7,ڎt"(iB^s}I"rI"3mwCngv[vo=~ hiv@ ֝XWǬp8srWqre|D-K_V>^yBER4Mzi(Ҕq6Cmux!7!.'x=A FӀ ^:M3c,?<]s{ /DQ ?x|x饗q>_֡w^rܵT4ZQWd"M!ދ@4_ٟY9?c?/o?G Dx_'k5C߳\Uyii44 xIRUe^nX|l6qѭcAEL3is@5m׉=Y#7tB眝 Y.$2NlBbnߺM, diFSLST<ͰƠ=E.K,Qpxt;IW$Ȑ}MkT@5E&c͛ 5mSS%.VKڮ7680ȿe.*xђ%'slHQ5\I)Ꜽ&KiВ90n}Z+f)wKeyNe۠mJ1t=Cߣ&4`efXSTH(i Ώ uPNJ,QdEFUc .:eLADMô2]$(HH:ܼM-处M ̦WO`6\AnTQDM6Mp4~ǣڶw:y;ޕUpMԥK2 [,\>L{ިT\E8fleՎkvw6 \;#a\ظ';f`A^8!Uh@q WJ7+=KwR; Cuiexa{f6@s *#RI.zx?Tk8<^+ʄPW佦)o`;8f^Q{cUz~䣊۩cv Ba~!l 8=1P+?-C@q86e788ɴţ<$mXvM#0p^ iw=YEdudy56"$A)q6c".MsN\uJ B4J =]E08G?tYNZj5f5Md2a 󱘷 b/ ]+靋ٍe5m'XrRR7Gi}{7-Z;.b'5cֆ*HRK#n;Ms߾G]5[gu@!ѹ;qdTtV4M˰9w5+x{iږL&hS)BEN3lǷi)dI&YQF?,V+N>Ĺۂ8}̹AH[^/Hm!\e+4"9ltfJ1wwPq2{8nkaj&H6 =0_68fy&gh+ edNHlE^DU^~hfk8J tC?7EWx,I C bfy~^zܻwYY>u8"= 0x&B@CYN8:_So|/q7^{GGw{*^J4z 6 ANic6V Jxh?o7Gdzk/_~ebX12NIA߹6MIӌg)կ k)AާxyޚisCnO)ԳzUӓ OOf*_AAz%WM,s42؂!И<Uۜ/ (NP)R MbNz6ZTSco  2J2ϯѝ8e";٥ZP.AYO@+SNSܲ\A7"E9%A X6vϣia,yC.Py!(Mb KiPAaMA09!(2#Q\Ox7H05t۴ .PIm('֫eZ RӂDmMahem3 D%89$nZG&Cu1n!A+#cm$79qmz|?=DGz>+IAY0{z}Og !pY^2- .NikJ@;е_{@UUpXD($g>BfSy| ` :ҕi q7V4jzX+48/,dE &VaS+à&ѺP& lHjB(E?N{H_/AqMY0th+݃HR"'͓vb uGJt ֦eb޵4t4y׊${\iD@>j1N&}L! tmG]դD78\ܷ0`"KR0`9-=JlqAh#Z`܃yBG H#2P75yK,EJ3n9fa /a׬VLg3KBu)|&x麁"/X_8::b O3F)M sڶ!jt}/afjyZ(ͧ ]zUe uUqxpZlڞM qxtH?\\\Mm4{"yn؜=pX|gRYN]WMKe i2 clɘgG24ysbt&ZK^gd7P],Y*4Ck C߶h8>kp7Nmѧaϙv]o%$oT/ [__Ӫ} FĹkߨw9 !\ڂGK]o?z~_gcV˷~\)?沫y]Ea?Ip{sxl>f|ޝN/:#27{~»{N<񺓤J+4:6GP}OŠ;Q%J4ƘuuZ1p#8n> I(n6@cc"kJ)ƚo" {lb5MF't)pEAY+ tijVD=I*a\[Id2%IжUZM+ٞFKup4eQbI%ֶ(@8D\EY"AG'`1cCq}Y+E$Iläյ C/{ɤTu`ږ%E.a,Ĺ8bo>& ˋ #Mit]Is.QURy=ܾu4F'`m 7 5~^y#"BDJ1cs Ż x4Hs~IddiDǺ \74GG<7,k?? x[i^u$1 ^yУ1?_2_<AX+\zYy'DK4\6M%!0O8<<oP5"zGȸ[Gkה+אb@;݉5m T)ݛ9A5}mk<'E:qvJ&c`⵶תm#a ] UY=n~43HT%kEcdmt&"C'K{.E2 ]0􂼍`V'Y#xV\ߣBpbDl2a;hM3n^6ɔiY\b%lJbfCΗK83jM^stt@R9[.9ͨ B`mj-Ԫvp0qzzJר5cYtK y<|H&C:>5W+(^1f3nꦣunt=4 :FkH8<>I(II*Q-E!9m+y1!ᶩ:\NDf%Y,΢`&͐Ұ#q <:+ C)ٸF ADMFɲW"^BRA\/L& M?j\/y-ME61Qsܽ+v%,0ڎY׃ 27Xgm:_~`ReI<4aYqOJ@Xqx# %)NhVtC T)Bi..iw-/ɺNp4M]1to6rAr| [V$OxEA鄶m!*njRVfw7ĹU̬q?lep2oeI"L}Yi)0Ja%{BHk=]q`zfs&M3Ltk-HQ ;ib軞ku|^==՚I9D-˂6ME,t1rHmKt}'NhJ?i]lC, +ڶ9s=UU؄tقz,|FS,i\ZVXY`!Oet HEÇdyNs`Y.ΗL3$j*}<9*L˒,8=;cRX.$:}(h::n"}i;>xq|y!GkY,笫JPZ5MPf"#Cx7qdl6 jt:T6ڶd ~бJmu}ewd_SqMfWmz<ƌ˿3@}E,qxWTW'QJ}wxk&%g1Zkξ[:?ե-_rGP]^ڿRy,,aO<bM?o Obq?Z7xݛffsxG΀Kgcpæ>x=}Ao9ޛd'n40\;|{ǑsyzF3nBuw{:B~,ƣ[WKLʻxiv{\G緎~7d;2 IDATw̳UU/wg!@ $HƁ01 11GwL8<A1`؁6{uԷzsNnof֩-c:Ko~< &G4cܾ=Z2ea, 6JSvN~/]s<>CE'c-qf)w9J; b!.6]dgtG8ww?T1 k/[7v!D~Bm/`\ K\lH͓: 4|Uɂo{;\EI!;ZƉ N,(/ (y@A+4'hHoNc$\7t_tؤ!y@EqÃArܻw~ćVRaa`4aC8lGHAJ ( P'Vz#.(y0፵4Xh1ieir"$04!sJ,(}mFUUKu뚱aLCMځ9H{6L=oCYc`u8&fA4g!`YSA>^~%4]{N1ۯ>3]DnzNϙp(S2UjxDIo"I` R`E1ՋRgSJJH(eJ/Br4?IE&ZR5{wB"v?<}/P> heQaYK_ |CB]׸~>W_{ ǯGkz?#x[ج741qeY`>[b>o| l^kp~_+ʛpioN@ƏO^Glᇀ:L1EY?OuS/꺦ݫ4 ûW^ċaQH- +yi1(g@K u(K, (!$` jJoxҢ PFBy|;ގzwSEN_op|r74A'ZѐZ5\I4'˝pFbc8aF%H2'"0ȉ[@d ř5@@*N1( D@cIB`<ڳB=o+٭;;K l!gn]):}2D-O9a>[{oN uȐ*+)u+rZ00>; Z(^Rnš9S_=E $N9G Iȉ֔aNd\ a_Ҕ& 7{Lj#BGa6BNup}$T%F*6&a%{h9aRۃ+H=ZXp|f3N&oh}hCAm;Y-1`1_f$)YY! ~p>85q=H!B@w0!(X,s8gYo02e]sTY}| 8em1bV߼H8,u۶0 אR7Ҳ$$J}RIfM櫪Q\u-z>cX,h5V(rڳ[g1  &3$xsX,GM:(m&8>>R)ڟҪAagB[_K4lu ŦQR€=)} > 5 G 6HN_GHIMΔn))"5M S@Sz4 Dp頔@Ұ#f82RPp0sUJM)Ʋ,PZj5?ͫ~*BҀZBY ~ z #><4<@]) 2fr}|g5Ռ\е-ecBkf3m$V+d,;, .LM"fQhGQ|ס( ?`S@Nd`t>yXkhhZ,3uk҃+d{ϴ`uf~܃za l51(XaXphK\GT8ǦAm܃M5 BbJCUZ! ( ? ^xy a@87ljfkbJ(\cZ-À(QML/ݼ2-s=pj@d>&~D1۟*Q1lخ?F6d cX`JXWL6мQ<^1:_)47_<@QP?/5᝟(YOF}x\[rWrIx_<᝟s8ܗII/ŧ]*%3Ĉ'ȅȈ hxpM PbB@Hmtw;vsin<,cw9vvvS#ɥ|A[m~u0Ott\7wq0 jkӞ'Gih1 ]/]gڴ:N)u?>bGǸ(`1rO%G EQR8cHNU7jC@$ %;H8gaH>:Wy7M8QʲFaEgzf5yKNX9@50q{piC]) ANݲ;~ zR.Z%iezO 钇QkƮ@QZ{9ѠXK8Gwݟ?\RJ, :]x~6-a! N:{o2]Ayԣa6ct/J}"ѰI(ӵ/ns8"i=!)Y %-&1ٌU]c}ÈZ+,tRP?;tO;^%mu%vHcR rFsZ(dfI8<3ڜRާ&JRiݵC"~Ι&V>|۷~ dOɧ,9?uIBooBӴ_W?)c1cdtww~Kh8됒?OͶ2qCH!ptt?޸q~wB81%(aC]7ؿ|pE?&:{y;//ݻ0j&^kx|O"Dݑ@XȀYk|6RDspF( 0sF28 vѰ%^W;ח؛YTE[񍯼o ZZo/k_,ܹ)0T%RdE"KB QJBj ÝL+cWUUQ)"-Rd8BFi-Hu4 yZG{[S!D լڶjDd&2?&ZGȄ Ө봗[ӂ^~ h\O+qA581sOmJnOP:O#R&aI -jd!Z A- À06!5_/m4R&%/Bhw| ;{h&8^20JsT't)A/%K&d!!>< q]U9#zMbaFL@u0ʠpQ 0;l-csroo&nD1RPxp65Rh[ t}k nܸ'$[Jigl-,2WXCxf3@ %1HC@׶LO$2Tu-L/svF`<IdܸyϿakhP蠔W?[[@+ k$DL:C=011D$&", 2XHE+ciMDQt+ep!±7 -) ~mxޓIAbZ6,j+@i&AiakI`_о"_DoOB]WKxK?$^I=ƅ?y>Yv>t^ԏwo <oz//=B Vv廉CK>uY%w\{%5E.{|D-?~\Yo^X<>X\S완~>qd?Oy]=KvR?#S#|[6Ј0R"%s<9y wǤ'Hs>E"xQ"-ّ}^4:|񙘯*>\mMՍO:xePgg vWXæԄ$$q%-Ҹ B=0@k k!(aMJy<'kZiaqB74.<7Qp#54:r"Lg129}FQ1 -rOu !QH d8WP !2Wu0VSaSg$Wi&6< R"tgW$OtɕFFz39cDH$ C31Ƴ r>[k1xQE?*PǸ!ZfL(P8TU44k[,VKܼy@{aLIZCi-tS)N i$&&Or"e\۝5]ps*g}Bd$7^0:M bS2 bLQ >W#&M٬s崗ə;79%4R=ú];FVw軞P!bYc#Be އq5-\!x$Tn kLOineX.aF6X.W!hȐ"Ѵ,j'^amD9s͕R$H^Wh}+R .5#9OtJ+[4M k)gNΝCHZA[!5ӊuB(ܿpAPJk[lkRN|^]GG/RĶ5 u kNC@j{lk +X.Zx,CsHQ1Qc\o}bѶ-eYj:%Z!5v"X8W e< W`6c,RH)Q ALKH|$% DRTaLdj( ]Q`on7DwOkE){%tW!A1 ((Aw4/c _$ʲBmSc\hjZ(7&l9m{T M]c\p|0T%ݳMKĕjF g3ULڂv򽟒7_+Wtk SNɺ'1MMfzcVUs}`Xb1Od%Qokc' %6&bOI!D=%6Ia Q X? A ~ )6gƢiH) C {lFQyJ\]17_}V/*#6_t`p@#)#rxo#sG9avxݔ<;l3xǀK:NO{j9)Rx3sɷ˓B`G\_kO~2ߧ&챟sҧLxpyUMx Jr%KWfG |Okztx̻z,]2) %)D8|+h')AgL1LQtFk;7M'A|RכxLӜvNَ|1:hU,usw^s-|g󇠸_Sh}uO~-Hq_Ϛ"__g""Lj%tYv 1o)ThBC`%"ceDc>_%%"w8<Œ]mJ%'wHvGvBd Ps2\~sv*DŽ`1>#JK4mGIM@H%)ͨB =x-FJ!apӄREziK:P+BBgԉrLim16$ PRfvB !(mնx_O\GYhUUMM|*qxB(̪19%А;LW8EW^y )'sD)p .Q IDATJHc"<-99}|VBee !;鍢.$_ vy=]'eH)Li摙'@hh[)3YbL9B:pu>< _eJ C q@}~Jnf|Q"?????o$BHb^G~q5C g׮]f{??`5%N_Q_?y@b|'X0BS! U!]k|>GQ( C2S9#$H 4&ܫЄS38Xkxup/=w_;VeEea@YW_m̪f՜L!R ;vR>i8Z0BRj)S2Rp*a"Sw FR]EJW) єyLpN q&X>5N[K4ziƐO7Ey9q;!s>%[P`&''kĬQ&J #),B@t>Qj pty2"*7h/%zW3sp0ʔZ?vDL!XI1B=B >i(He:By rBa-)j CO{("}Xӵ8zu]#!MbJ8:zbILW]pD5Ii)hܼy]R:mҳdp3 $, t] 9oL[! t}'|alN0yjG&8:f%{D/Ͻ UZkFJhM㶮Ѷ-" &{4M(D۶(RNeUAj AYT$BO,2 q2je` M?`\bZPθ?31hZN,JX cHLwsRUUa5%o)uރ:g[5ayHC&Z@n ! g (8!O}ma#eUkl"_Řд-fqt $1IՆ]G<}6a`Ŝ$q2V[8( 8R+"AJqK}O4P7-Z+L-PH=V(\# eQ{2A2AJPT%G]7D{龉 c ܹ٬BD+}ߢ(8zp֐nV}k$ %r1*{?@)·0{|Rq:uyfZcsr%h~{Qh$|9 T&2S} Eެ&(}!ğ7Xroo"Y\q(b^Dn\A!&C{dk nƋ/-%uVF+޽lFhGf‹s|.@[7L?`[N;j~:כ gkX@h|:۶!}CqΓw&}w<響R~xh$?lm6a?Bl/I,^6DqU֯g^*=ћrYd`Wb]}o@N݃|7vbG ?א~yI;~gU5L )uH?T~u ?O\!ve<:=>uyŦ_ >\p܈gǓxt{8]y&|㧗\q*캕޻+}?.88-f޻ qv=˂J/wK(@  C`{r/} hNNr ibJQgdM{<uM?WC?i kc,żCirQV4<324qo29SJΑp%C&JyfR>o$s-#5-c# %8RxHgCS7EM 0%Iwm!@< %씖0PCbNipw{2{raqSs1Z{!NL³CGa/D伢zJ˔0"!Ca6c{ԃ|}e=Cs9KĘʘNsygC2^4y)"!8iv-Sz$%XFu>%HFƈdI&rjG45V{xpt|#-ܻ{:hM}:(ѵ=JHooob1믿''X-X.fOwcqxxq(g1Dl[JdhO?a?^y|'?Il7D9CjÂ%O} ?Bw޼C`DF7#!T+dЅ0 E,\Q@0\4ve tQB9a$V6֐BCI+(Be5UE3,g3\;r>5d_~ ګh- &3ws&/BDD✩:10 HwU:(2Si]5TSg,CrtL E:5EᠥqM)\nX$߹];[;=®qG ut^YH1iҖhwS''?9ey=B Se4 !,V[8GZ< y] и."uJN9 qh>$g,K0mN{ )Ē"NN: 6 |@ kjtMC#Ji %AHkJ !mZaN\)%ڮ<2 b sTԉ3`c:ߓzr 7_pA`9鬔B4ϩWJJal#mC嘰nY B2[3ClUGU3h}4mC^mƼi{}4]i!Ĭc phCUcZp}갟U(,)L_ҽ߃# >ڶA ԡc{%h:V.`%v 5dF co/\ZOgmC(c$cy( l2J&,* eQ`f|Aa@ dnۆ^wM{x R=+ǂEga\A۴S_Hh!d܇n5T)aQu &XFK!Q%u/hnfK\=$_?@oI>;WsG o<^us:?A>'&Ae>ݡ#]wr]+vF|>'<'4``t뺟**A|U|򕟀xR /|{!"<1Obڕe"[OpZ'$BH k>;_2*k RH,0eYnvzq:sSnS~( ب3 ѾiPV,d[OBS(T u1*l-n޼7Z[BQҕz8H?)?@8 (" gF˩L$%N!DBcd;g gk6Bϸ,#٫N (% ַ?}u1ħafx_ uF3:_7>[9coͶ[_?G g~9m W)^z9gtBg !_Op!>|'''x7`4_g |W]xtR vp @@8D )$>gRH x?i~!Q jV峟 >۸42`oo;hjMݡ<9`\S(,wY SЅs$apPBjio! Q8D3{ 4@J2QeY,,fe 4z 2 ka$x dqHŸHZ>P]SsdT(I`0FQIL~:Ȍ -~l,e fKA!F 1J所qJs po)O oF >ęRH&Py4e N,GJ(iJ\]ϵ dBhۆ_3ǵ1ω!j xL6dPMI>uB(H^#]PRN Rml09G,P8#z !. ! o03!=M>G(c&CR+ l5: khh Ե*"5 6GX.PJa[= cMS,Ja K=0Rs{|&Dj4n7JPƠku1 PuAf H`QJU%߼! ,lAU0hn;4ͭa ΣkkZ:K +>y6Sm3ʪf3^YG qߛїT LSxOxtACD$$' G>D Q!k's9r SR]k- ]$#jF[H"iH+ 6 ( b Aœ2DDN7{]"/"fYU':ۮvִ6[D5B(bJ)keϴ"Od=]a AR)I&9C׵9|` H_OHAig(?3}?1&  1E%Vԃ-XE.ݑd̙ (1F2IFl`v!X*_Rijt]c4ڦ1d059E% ONpppՒ1TW5_Q[M g}Z*l7k޽obD]\- {E-i-6ؚ}J+VDNJ},3MXhj(PVs/,0(ME+mףmUڮ@q½EQ`RXRb1Ѵ-!gxs\Dv]ѩ($JdA&m as]ב<s0z/(GȐRMf@ƯFc8XH\#B5 !(ž"C`Z#ޢ( 1_)$AE8 tw ~E[֞$]ޠ3 o\%}v9IqYIl K@\1B$ lMwxN;ޙb|K3?Ax|i7.C_Vy1&&X4+ QQ_ȃG BSH_HB" J|^-qB+ιnr>ޟSEzE>t};&/jP 2.vᯙ'y"\~q4=+ N}p5⩖k-!v/3J>݇Q"Q,)KT=<# ňU[KߔceJ &ҦT$|3]A)0 Z3mb^`EUj632r< C;CVJy6N??xJ챠[8JKF 1%N"- Pu;"%D. JWi5BRRH*ݗzZM2@: $&iX$ ZF±a_=Y!̓źK3 4|OIq /4 t}B2uyk"[2,pΡ , ܸq ]Oi`dE2OA8kL4VB{cikhfHqQE:S)7'r RNŹg6)'(ABKYZ*Yl 1R*2FJY!g;L#Us|{߅~w#)'0ԔT__H"NuM)~o_|K!g :«|ȏzֿmF[˜E|M LV+9YC|?np!o;q-ܹsn}?7l :_nqoK} 5 @jOB//֭p)%yGY$:H~p8$]B  (]eDQh Z (렝4ZT%lUl*[:umk㠴?R(Jd,x-ӊ2HЊ/)(P8g,9U еX=x0(͖,$RF4C ..$xi!@[NyL))9/5`Xkqrrz IDATT$g&C+7g.sV 2Cڲ\ˆ| sr.}SZ2M0BC{T)A*WW"eI{ DhIE0ս's3úrR)o{ }4f )Q-MYUH,jheGvND-;%L99r,xI69~Pqr" ! |$*XgзDH T9`)A-BY(g.|1DbYzYkڿ(#mעp%DEb /٨9D!ňEQk n-[Kg)B@UaLwO}⚌^!ҒbӨAy( :!f%!h4}k-$ÂX!dp:?5jm~Lkc! pུRBdzE]obvSCJ$6YZ M]C[3Z f ƅ\7 f93"pUSjZ+e2QBd֢nZVK7,p7P%ZbF#mw -38lv@&:76Mw5B@STsep}s|Y%TdzpιZ%ܹCJ͂*s(JP11&NN1NQ9$W˲H @)|^ZyQ=0ut2!(K+H%1E'QkMͽnu1f4kMG'ǘSf36ú0Qse x"%-(bv%y!.9~}%b5(/e|qo*u&^:N(Uo0ku'_{[8~]T}߿&*{[6YjKi˝s899W^_E =D ZJ޼P,sgw4JH]U:4n߃{O_Y}1^8N=x? o@2OM`/ G{$HpaN 1mm J{ǐuI!-Qv7loZKz=wzKN[qJ]i<$R0M3 cJ$ŘJzN|@Q9JP.ZCmӑ8=%11Cr BҼ9ն  NsԸє֫lZ3swPws1(s Sl6RϾy _O =Xkwnޗxp{=*y:`㫪ƄE mf8=;ν4Q%]+!yCz ϖC9' m7Y\$™#yE1UifH@▀de,ƫ8 &'zxtJ%ѹD !iQ {q|{ރ[]c)fײ$P !G6{{~&}1| F(QɧOO5گ}gl`I𼡫f֫%'3WkL&Im]VIЏsWX*HѻeC+Z֭$ux_@e_UdF]^7 ۿ ~I5W^[՘h!1)r 3 m H &/lF׹A[հY]F(c!PB@9Fdf#v@6CY( {rkCuX-X,p||+G/-Q>IH`Chi(&F] O4<@IZ SB[q#0E]$1Mzz5HT7=.it]FDLƃڏ@ mzSNbFG< XD(ƀT!ŖJbhE^ AJ65Coyݛ\eyFb/2* 黍ഩӈ1-'xwhՊ8V +m4F)vHDkz6&d&10$<\h,t2Ef,B C(D4$JKΠ\ @sȋFJ 4=t]̐ib46M324D$&ӒPE lJH!i*_7#fHaNDJC]E^m<#b,QUsl5&唯D!.o!nXMP55RB48<؇)Dd:A:0=uKx}޸DȏRU[ Mf/ƞiMwK/n_2@l)q{aSwNi؉b<7]||ڞϝ7%ť? vF_u8)Q_=.,TVѧE "zѶC[@LP$AXfAw&S1E91"ƽz6s#HzR`2)YT|hۆЄ\SB (m( ?cBro 44p]:z|J1<%sl67^$'̓YY3zkPFN߁СӰk[$($hA?OF1:&!~]F 4WMSU( '|w$8}hb Ht,(oO?]y//֐p %xw} _y/~ uU!EJV) p|r,;)~G>OPЌdt#\vzw9*\55{?cT }91"R[@<H)^$TqTD8>: w }̗O udFJQfH(#*3 H , ΠfH60``ԬT$su w{RLz}"9 Ib\i>͇Y\̑Yf.xE"_?$Α'@LRHJHJsV zio'%(% Ǥ($jbFoz (=b"s7\Io]GYh+sxZZ-,c0=㵣L'JEKƼ[% z{A*" 4=RD>‡ E4B͠(M& !1dT)$N DK1XKhAuMLh9}q8ֆLuH`ֆ0ӲDH)L&k9K@[(91A*e4!J,'T9Ѷ\]>xL%1߃ (cɼ-Jj(!ژi|aQR(};4yBP*6;NȐ-`"aꥒ,kk,`s]D\J`EQ8O<o5 JF{7uMiVDhI׃TE@" j$ 5>Խ-`mN$Od| d>@iZp\|bP3&,y]W$SڠF^#IH[JJ/KL9քSC;ϹYO)"E:Q`Q$kmi~n2 lL#F ʲ =']砕lɓ$xa9XW+`3 !H+w=l%x źZc2L#zوؽFR M[o깓~AeY kym5-wȳ e9`UiN$I ')|dpCҽ>*k 2I"^i332)I<%ښԃ1Q7qrzFFTk(S:gͧ( 9L s{l9.`oM0\mȤW9QH֥d2=&))n~X,GTy]Pk6`Vr}h2?<8rL=Gg;Urk!fobX`~ֈ\qJTU"dR¹FktC<ϱ\xG(-asʢ$LdR*k "~|{(ׯ 4 $g(|*[R+u܂LL'S]h#DA?H×戝]ć7.xђ%z]%?PN)Ę:Bqh?b7DpW7ҼE6FCBnz$ADq)/sĻJQ>nvby zkQ_BpObB4j|1_qN.鰾>zHC,pH]$,ޠ!ؾ~HiI7VNC!GidWoij ^޸~h+.TZ rܚnu\A Z;y%z9,nC-,"dAh4h['Ȯ}\ޣKz7ٝ#+vᗍ%Rsqp>n Ջ]"o3#$;wu7t]W\>2FoixyzziȈ{J{cL;2_zFJE  }G^JOm!sJ20PFNu:{6\qhxCBr򆎲H`Mn2//hmA5&뺁b!_~[C11p~7%cJorkC{LWR ,lQ ʒz|PD'4?]gyR4uSCk(=qSO)\'tk;:pMێ>g#BHBaZ1: cZ bc'-`qyo{+X,Nq[Y=1"17bC:v}{ LgStÏ|G>( =ç@ڦ[ߟK_zuN c:5g>c22 H|1dW-̧?M"Pu|8vooO,wV~1~w3kIaY|>C۵x{7ǿ?ğ|B>g`oooi; HAku FB e,1H) t]]=8 H@2I(u')I$f33е=k\w IDATh čL(%\:6Z*9aC3|u ],C{{C*:L]@hJ5&AwPFd9ے֢NO4F R 2Jyk׮!ˉ(a&s,@U7:NiAxk\BHZc^# I[±@q{]Zt퓹;"28Y%z pa\@[ eZ8ב qudC =QX(儊)2FæB*J9uHD;}>d6Cg͠F۶iF֌,P0@qp)%+= mp@@Sc<ƈ1%<v DB&4)!!&K/=`\pCn3TZ)ܸv'g`or$7-ΨR'Qk)Nkcm`6<_Kw")f!|¦1MCɢi6#Ii0 As@m!h<]KHxCHA[a4A`>SH zhpvr J!22h0qB#AJJ=%$4D)d0M2e*sWkk0Nal*'Ss|6SO>iѹ{{L r@y^`\"r&7{ZQU55b"/G1 ]ס, G8<<@[-`9bh*bW^~u IYc;pzzFkPNJLj"/R>DJXva\Akd,+3a,|pã7b[29lBӴDVaΰH )B@TqEe5P89>B锈ȌA6X-z ̺@Mעcbd6CS״&!a\{+ o“ؽoqSq! F Dpr^z9 !8B܆Y+SJ4[UWNJrЃa.Nt؝wg/Bؚڗ?I𚆻-yFȄKo'ۉK!\\~whs9Ȃs_/{r?pċC?W <L^qR^pz|u۠k,VP%Tzޏ:2|v, %㔤*hCݻ4REkBC)Yh-Ѷԕ)V),!Nl#ň<l(\J?{u=&d /aSJN5'H7Ni$'۶ uoR,%~-q^zejC!Ʊm\%W'@rg6'A%y;N[HM`L `x, IN,~cl yQ:+BHTD-+)819GϸNH"69,:1( ߌ0-'=tS1eɫM^kO1~~fs|'Ż.9l'8s k2| _7}7ɧs=ɛʽж-@)v-X>W?S?=/*̳(+SWwTp]|?x景jdEljo Z|xߎg?;|_~ַ~>?bPJΝ;8;; jZW ɤD{|C?/>ϡ"=Ѩz/?x> ۀ XW-}"2dȤ@/Ehd4Rg4IqQ\cbtR RK>$PzCTRCB4hM`8CW7yDFY >rL<7܃;u.7H@L r 1l6Ewh şVd H(A1nXa۾T"51|+)涉rS$.kAYt!"D&DVbs0O1Ҋq Zƒy3%&SY,Z`Qkq91P;%$PMSkk\vXVd2XV)dSk$% UKW %`SCdH ou s}C"AOkm3B){,pxp=}"'ډVZ 6έCdrSԙ=t+("y(C4%hZVI4 ͷzN{vV9׺!wtu=E4H1Fk̒a \/D=ԐV ƍga!d ^BU!v^AKuSȹDHޣn6h}GjSdñ>C`:*H4X=Fg|ϊOc\d"HA-174&_} l@ !1Tnw k)9ZXUkEg=8`޵t611pvZ-P%Vn޼ {TM5w4<%۶eḀ{T^|kul9M+jZɾq:¤,q\B2V+Z;G/J$$G&okr}y;GGRZm`^MLAHeQ,pX,ǖd괮X=U2, \v)tt:*$6C=ڮ{򪪂4N1Lpc>CcgO9Ⴧ5m"FuJN 'gdj*?}۶( i=@Pz.%073s w OQPRUON| ͆d(2_%ZDsl7v}>J{om=Ƥ^wjBӽ9$R[D=ד~k @ʻ/;כ!E %_WHu&wwT+n0]#zou}_:9k_8蝮vݎy;xa{uV.IKS}kx!\C&#w{)QL'x쩧:eozPO-чXb!RieL=md(M=Rh$TZ‘{K7McDtlF uJ`d=G=eYReFLÜ RidJ yIm,Z#|H@̌ݥ}uS^B,)4(c1͝)F(9C #z ~ˋ պFLёcd;Ѷ-*zqpOʸc7Cxx}:VHCU8oC@0Vc9SBV+ޏuxNJD:G!EkTU۷_eIݍB`O=;FCf,c;펷,k>G[ː*>7Ml:DŽSkE ÌO1,"',X1_ A vQ>zBMC RR{.L'%aQ8^ 6 0?$^l', =,kH{Y|~ޏg{g=RG~MW^zu3|+_E9^@6?!7~q^kJi*P5SX, <̗|M+=ʼ@UWyQO W<3J@I E^x v-3c1d9::Atܗ-Qӂ]oy77~/mJ^KT)K4!/*}3}x/_ AZY0BB !blRAffyNhtEI$ŭ䦜#M5 eYjV5ڶǪju WC q{/IDg= ^bv[r~+m9;K\Ï5 >rަF5, g?mR,GƉU]vJƘE%l:/MH!hG"mX! 'SBY3&D{д9kR<+[cpuL'99\iH!=ȴB[tMm.#"z&ȀPD5I6|R55nkZ)5+J@ !W+ eHlium-co|>GSXW#]sZ #I:2J Af dbR*4m{MLRP:}~{ףZ&<.2Y1A=u|D4suӢPN&PƠ&qp:l^`~xC1 AdUL0`RRrXWhZ[C?s_$H(!  +'#X9iɰh4 B1V]s$@M=#cZS@AbQ7<й1`oEQ1bZb6;vx{68;=EY6IPFt9)=&)ڦfH ZDb!%$sȣ] qppyBB^0h)a7߇$,z3" UEc* ݄wf3ȏR=碕ǻ҅$ AiLxoi'-v4&qNsd8<,a`t݄7wlb+_=yvtNEu?Gk xhi ж[Ǘuobw_9  oqN o6J-;F;>_/}qvz!_[lu7<4[\"~_H¿' q9k~=<=۟K;~X_:-Cο)n_ߨØ::#B"F u;p<>GYѻ#-޲mkJE´s='gKD/Ivtbp>'|YI6Zw.SKFҐ`b.'wЏ)ܶ0.W;\%ŪڱIX˻|Y_w7VGpyR؀6vX*%qp1s=Oΐ%-wIIٔRдɵC@;c Hq3NaN# AtJԣTT,v{dE^G ~ITLRŸ=|FbiZ錧Μ^4&P20RJ%+ML!2 '^A 15NIlLniڶGYcw0WJAJ9wMm:E3"Rb`4@)%>?$E;NSbeHB{>FBF7?tk=lFqD*wWjtcB>tA i_4Mb1nWJP'e:*9X,Q{^6W c SOCM186Εw%4VK[`|=CrRmW "[,iÝE37%+RA7H$PP 5ԑ+7]C?Rه@ `F>pHջYfPXׯ=|m$8IvT )f6Go?:Ρ(Yz㛿_?W^} Uxꉧ?3pWqzrJFrĝw_ 'GC% YY&f3|7?[ކLDX@ PZ }עd\#N`H`}>_y/2^|E(`l%^}6U 0L|ZZ=LjRM^@J*kW{1Q))1[1 )fWcb@lRKfw\w#_ޱщ6$" $\q^Md`Tm{æM^ R&h"]6_`]WR + 8q}!((KM{7uoL{Ą4~ H :WULT #{ ސ7(uR5v=jJ !I8ԔXל~O']\ B Ȍ='rpf vGfs{!RB1ݥ$ZXc|ϝaD {O ܞN'&CR:Pp}vZG2yih31b7y&aznJ(aHDHN%q^ yF;&mFw-F^NQ"Q׶X.θb ;R(($?( tpN_ IDAT)0Ŧpt|f+'5 3S@`V4Lƕ!Qx2$R6Jõ=ڶ]v.Gsh6` !2gZ,Ce*L3M|I)(`F{L6z)˳qEJ uTJyp]"M'Jnbf%EQ6ATaMSS1ӎ QL4VZ!*Jy \i^WH|eY舌3dLb Y8Hc#IH vfH1"ss!sky>Fyyڦ e5ū/JfMMj" D7pK!!TA ϋZTU h>Ck wȲ!F>1haŪZa>93ׯ_CV5"׻ M H@ֽ=,KΡ󽿿Of]%1Ly #r#,gDc Q~R д6ȋ<3 o[j2Q+H>e6)bDh*L0)AiZS;a2<$Ƶ8:9~LB{[ j]c2)Q-/BOn,{1ѝ;:f0v7mKkD~Gӈg򢠽 ZR0]`%IJZ1h:gJ Kh!=e ]^&I?}½xߋ˝d_wJJx_xR\H[Q WGM)kq՗aqz w0ܧ޵#+B)pP5FΤ/#oƲ5&/qO_?]8'oz@z}LNapg }O7isAx>pBZyn!m#Jof\q6ᔒ:?888:tM cXa>#oK!uiCn4&Iɸ0 Frz$2݃K®y1ppp7g $4H^@g*]$ofH}J{)"K Prďq޾/ !h^s{2ub5n*!>Wi\%ΡZDׅ]JG DEl~{w;hM%;Ӵf~&?O;^a .$qzr;Ї<,{~v}r-E&,K˖,v_9ɿ!x8JPm˶byXcDl#$FHB!r.̚\k}-(se99=0Q_:^~U9%"& RKEpg-zRQ^ 0Nlo= zRK}pg5v@a4CӬQOфsTK30H,Z"^Hc4޽-p!NONpvzF]ߡ*ky689>FY06]b!V ' 8ha\c\ pB )PV%1G-"릡8==eneIG;?:' nz/2e%𔳝 ;>܌c\at<ku϶hf&0Jk&t:1%ڎ!k۾mO j=9R U]HET/u 2pSg(" q'z&i("(GH4eek|G#Q8H3rH[gsMJF+1(KQ(A*2_ÂrCD]b@]xY9JKL`"? B"FqW HM\̱Nvt*l1Q% IZ0gg:/` MF?9C6{{rsjDߑ;[k::gksqMrBv?GB;wGs`2mC-3,JC.c)$) ybkz2 'gg:uCR),!`oo] 1s(zaB۴BŸ,$o ^XVbD]OX.0R&sw8oGdl5|2 1eϷ>MGl(Fī) rJ, lαLfrĊQ6lIBS&@&cfb{1fmv%'rd;` qat,pa x9ǭ6?Y~Mʀ9!E aۖ6;&&9dNmQ)!Ddֹ!/%9\L @=FuJ ]&s' |])omYM@)DӴLReaG. |F1Đ5 c4-0~Zkx[?GPJ)\paEӴ{;GQTrQn#c wAۼFyv)fP]]9 CN./ׯs#:r [+#cwF<5DV{F38+T[ͪOCŇO%<BVbcBa4y g>)< pel"(C?,^ _E1h{pM|7 =%;L^?73WinjLR3W^|SK/z #( =O{ߋW T%8sWֵ1{SLX)n55 ͱX!ӟ4f7>U75hۈ;G8>^ 'GG8wg'wK~ 9;r#}pxxqx&)LYkLS(cC d Dc5L3sEir #(s; =0U,h[ Ԕ͚r}C".PfNs, ,$զ3U=u,LKQP%謅V ZxkaM\@9SڵCwQJTt]>Za2qfB R(+1&1uI!Bz<=9)R&uќBDYD} ܬӳsP%5szvdJ5Vy %g%1FR$Bwjj9Zi . ^$Ns|Tt?9ۣ:Ȗfl>.Q8W ndI:H`eY@&R% Z9x C H9ZpsU~7w8=9$\p*#$C`S.P@֘#t;8GnrG] ]z-fp]ZKL}˯m΢*k8p5e{wZ7_d L&DԸ^.p΍`m+Tuk-r\/ A9]o0`>ld2| O$j -FQGbrM4Mf(>:J &b6e(GJU=]CDr $E o;LQJ;yPCcvQ$(˼ Rl @nP \fUanf\ףL@D۵(LX^QijPRSD?=j?%]ezDYUB/ z9ݓv<D oz[MqxoeC]n5zΡʷ;([3.vsx9d+_q.60ƈޞJ_;=ysF4LW~ۓ ~k>%{F֞WЌZ γ "R$ЮXQ[yHnUR'lEgo0o+a>ν~*oah|8<콳m?$?qoO3;'].Nw'((H6>1#8q"Mg0FK@*MUBSԓ rv e6 <:162)2 zOX'$-(^(ԡnrH! S$Yْ<(meLd-rh=mCn\!umFwNMCjڮdRAgݐ3^Hme"uLqI))+mp{ѵJ M7ǝMrirlu]e<9ۮ]ףJCFmІ"fs>c 36Ss9t!c5|FV%m& x!䄚-Z ֘5 5XJvn#^+e Kg"t-))Tͪ)cQc-mI\ns(d=^|?7n\I-6g,"(c`P^*Kn߾ok65p n&D~~%wܨ/i|6M|ooƵkO|_%C"1o}899e.6 ~1L? Ab&$0X7^x|})t>w=>s<y<U(^-9yM\WEh[Ԝc(1 3P7oyw?$8<c=KXwNYxsvEFc#"2B{`CGs%&&F>0G=, ԳʊK{D ՔQOt)9" CGgݖ(?ڸqE-nE_1@r*q7Go]O=D&VP FCȒ 5yL[{Gbǔ6Bb8Y8)gqlBHLp]ÜM@ih u@Ѷ];,+<ējGKh)`!=ƌa(A:XO;aFҼ@ѕX`m bBq3Z}M05Lg3HMYh$0(S,ajQB CEC( THBCB(j.Z9 A!ChF R)0Ne/ΰ^F]W[ߕma::kh!$Qmdkcڞd-9j#?{ )X#ezJ(Kj EAuKbžmR,zn(ݳ@H?'>2,(vNq^ =(9.l7k|̡u.{\{7mk&lmy}t13m;MUnvߌзB[x1pX̳wƙ;f^o3J GV<޺? ?gW+u~Y[}d!+}|#GixYex%__}Kp!@_L g(Cvh(-G!&q w}Є$fO]\sLލ`kc{C Ngкį m6Hw.N?øq? ʵT?vkX5+]Ƴ$盗uo7|מK/|__BUU/D ow |/D9D Bg^Ȯ6`\{|'>n߾B΃10| 8÷_6}Yz |[߀m}̧ۿ_[z}{w/(G?.< ha$G)jS GnB(.jRDq0kМaVPQC#8H#BHW%uAM<;)G0ʪf,i:K`$m퉱c0 R^($!&&$Bp@9FrMݙƆi"<>1R`T\ah߯U&$PX֘#ԅ;w7ޠ l.EKCc] l9Ă'mB. @p01 1:@!%k4BBHLhC0aX"}чZQnuDDD1TO]KxO!Ψ1Ɛ0Ng େZ]gSq܍B+\?qMzqT)͇+ ]Bz!%Lap YNׂȢ6 RИ5fs40@J="6 :CIMt]kr̋T2\nThV+%1]p@Q.RQ+C.Ύ=3dCG4rR ggg(˒D>h+pAX !=5pgBAHfb2C)ma|D׵軎~{V*H|s% uH2!R#JHc{WP.!qrR&;.$ ER9]|ε1shc ¤`n_?4⿝PeYؕ`<;1DԘͲ؇-ćs,HY5TC̈rGӒj!<+)%_2@ jԙ0WƒGE3qѵ@uY8Oh1lߣJtRcn_{K/xFuh$b3:?)GPѭbDDM|L1tΎ4d559ˆrlm)z il:GXIBjך(a6j$%XQY:pnܼ {9,LMgR`^`b<k[j4Gnބ$δ!$zk3y,Mg~\c ,X,Qy6Ĉ(HLꪂ9[3v>G4h@H ,@FpB,nVkhE1eg1H!B;}Ep(Mۢ, Pt2yU*#p'{XV Zz'Z]`b;4~vx]&]rR3wxoo;8}0zX?pO[IW*zpal+|k;]zbs}9A7 xph {G~DOuxllW;C]Ƽ﷕ᝮr~Ŝ+Go{Xܽ wPYB@Gt슣67[v[o( MNێt5r;>ti7"zӖ{yGnP7VY;[> C:t:`!&c )0N-YvbEVj"QCZk5-mE .>nDwƂ8&'btzOcrP<ᐝ5E5c2 jlvea,ޢ mu"oۖ/Wj'tiҚe'UaFtZ1Z*zkBŘsٴqC25>V:C,t( !$-Ь[H!gږQcYƥt:CBdm}c\AJ1"Tf[ A/ˍĊL|JN' R*.<}CUWfB^KK ; k1n߹(o";(EMV o<| K/KІC / -%zgZ*9_ȏ#=b?}EUA~%|ַF2)@Ep7!`=/}.U! Dv>q@Is65mWP!ᩧƯ}fSX;Amԏ<Ǯ2 z| \)DQ`U&8#$ DkHN*̌)n*\Na8C:Z@Nk"GGw+W_BƟAZ)9 HdFAn+9Crrp#ib#&3@2j .8C@H" 73br02lbrMN|k(ފA2V. m\M ,M(FӴp.{'D6=U*t|cc9 ⍣2Jqh%818! iH >xp( l9mzʔuQX- \;i:Ν#Bq^ (U@I!-BZޑUiMH~!MetyLt}4mev{Tb5YRRcUp .P%& XV4%*S[@<` (RDvHp>>7(Na9)(&#%r)sCg9 !׀`9n=x)ܼu 1%{t6d2.JA 3=Eѵu͘K\ktR'eg}ƯGIM!6 .3C@PVɌs%a;F猡zPcj;PED""> ]ӫ咚ZcZe&=ՑR*ܽ{jT9!bEQk W!x6ISuEl̓`93Y9Y gmv S-qٕqvv7o1 oL 갷G|>T UU8H6+㞴=Z^.y?{Ellmȵ+YJk"BY(5ڠ',tA(%kZf<c. ܹۖ\yDM(2!{_,OCfu۵RZz)ޏoj>{Bd8Kb8a9ݣC;8CH:pAL!%tٸ%"m$<)1{˾o!#mגxI,fV5E#x?5"loQV%f z <8h7* 7n\GuX0E(Ѷ-SQh㽈dPEdӓhI$!x3L`΄͔uT. Te/2f{{phZIILB" ʪBzBJ#"Z7(vLu=EQ8!Z1yaºYCk43s<&JI1 D,إks4 47l[70Yw޻aW{!2rn;s;mǶwxo_}Ω9߱+2αz-6:8AK\ /}_~{Cyީ;ý$ۃo7Û]u#-?[kp 0[uxS|,vrxF#8\xz[/Q);x7pvz *r2m(r.N !11"cVvLu9pb}pŰx.zǙ؛t hqo[˟sCS}<|ݝ9spb.u$n޸>fSfu&VP4˔a*5xh{_O} Z'mv=1O^|o&>G_~!qh0RRr)~~̧?0 I{3|5e 2!8Eo?cx7DJƒ`&9=y/~9'|;;y LP'O_Җ yc:s(1Q'']}MԆRh]@YPz^+ z3E ZP,B{0c\kx)@`JUnk#{k8j@۶hS,T%]ty>KH9H}tƁ}JG-gXWQ@c(zCdRA4MF״#zbk( ٤>y M_ƺi"HYz;i- {Eh$pxxBtzfB FΡ ST EBF2txB(U”Cهb\2REe hc @g{tMGoLp]o.9r8!gγ0p>3(!N:@y!DGd }` BsH1%@}WkwnjBH1Ǔ=b,/@@kYsLzFT7@ijHqzz=PW%f1RIrHƀ+lߣkZYreAw0E EY r S( Je391^9r3J-G$13(Piֈ!܄J`\c2 RJwC yQU$(eQB) 󐊚zHMUBeZC+r\ϰNFzEuӌAU<J+ܽ}#y`ڠMnMkSQ:Fmʎ#gs~@DK"aVk K 3#2ӹf9,FN7F*}¿lL_^aEمveȋQ#&z?.,JaSr6H 4bQKan>>}3eޅ N!{1g8@At1Cqew9dޞ +n-_OcJKfͼ3^KF;K7SKi6f0C"=b !%0.s<_)%yÚȕM|Ă0-yvѢ\GBn ڴ16/z렍BQHCLf}Ʃ;O\0\DUh}AQw.W7f?8aC(2VW1 1)P* 9'g ]M@VVRV }t3jqDTZg@{w9KxP ck¯(\ʌ$uZ+'X.b F{VW8cX(*ڦc]R% ,h5DR@HB=Q dXȌ#YaLlp!EmNg4ώ3ZCUIޣ=BvD*wٙhYf!'Z%(!x.yB$sMc 9{A-u {Q s1ׅSp6W^P\*\|BH0qoO =>Owe|_-^}UO$n&NO&#@T ?_G5hX??}:W~7cP [B*~~oN݃JO:Mu/7Ɵ|_g_W<'/[FOnYgI4]y?>'oǗ?Ca$X\k:߽?Iő&('3SB e=.AV L%0GQdBK0_k*Z؀ @ pB p)Jѭz[`qF{3УR亃 0!FAr@ Bipc "7cc| H <"ҟ=Mb˵وb>cs ķWe=gp*uQsC $ Rr{L՝ jN:!=?&X$)1n/~D*{DLje5(S 1V`PKK ZfO WЉ-9(^:Z g؛8hJg.;rMq].!> R*rh A B-7g5BB H PgM!Y4z-g)$8L9EQMQSIGb ʂ}ttg/E`>7\YH(f۞^; hY@X,V(#sl`m\ou(!uzOׁ*(j &t,1D{7Ob p)@i]cݐkHxBq8Z ,NObcI!qr|6np}S+Bߴ ؛Na%{āRp#EB1 mv+bߍ)H9Yo 1r\6V[jD3,"1$H\RƊkᝅ1,yvҨJ- Jm0{w 8T'cTg2EqQZfTō`ߢĘ!oؘ"bJ0F5QEǕq@1!)˺fbDb"%V 64WJm0H2uU=$H0 ?y$[~=xRwOܸbM2HA `[$eMWd14e$D䰻n'xs{;{+Pު[=wL}(P׸ti=~:fE{{9\4uɀVL׍੆%4 0ޝsLTR"`Ef,jb\ 2]OR?DzLStm0pm1MG]֢nk#IMb2FR7A]5ΦȒ>H%M"pH3ͭ~aƘA) ΖCT Lmul6CfDXf1TRyJ )a64LAImi$G9dY6tΏ& ij3؄wm!xIxz-؛eٸ}|L&}t:I U,ǁM7ߔ1㥗_B.#>$IQ74| ޏ f%74+nRqX3 k9MM1Z&}/Ķz8lADx-lD[)&>6|ߎ1C>ɩr˨9f=b8ݐ9\ st(ã;x啗cPx'coÿO= hM]uUc8?s=ZSQG }lۿ{H-3?~'? R(J\;e)9P7-hm'~eBID{Y~??_,k e~_isWB]Uȋ1JS{0gpXhN<$ U+ܹ} ? mR 0_1 4 UYiX)d "C>xr  ZBjej+x0N1Lq^:>E(W%k{tmz]svU2"`25$HJryH4缍6qPIs][\a%$1A=n\s!ƙ; H0M|@׵M1H"֬yG% J;BA#5DDQ5^q }$RRE]-oNC\6 rtm״>xoPF .L:U )+8>^@`Y5pA) LE۷h1Zk4%T(h4\ѳiJ2v alBIi6ZB #[pl |~!:#HۮGIƈsp"!@H=AQLgzI&9cє5aXyI TEbvuPFC{_~}d&MgpQ ;b$ACD@B \ߡ,K$Id4!JV d:AUH'PW5DZkt f{$MGLewCTID㕅MzE*4)==w#ջ}k;Z+r"{8 Ek5s2m(MUd3 <+=G*~ 1q'bhJ>)./ a(WQ,ߛMCamд-"ц6t+,VCIH,a{)i~$= ]{1!Kuz[k <9-X c,~a, 6B'Hry(_,:׻r*,E۶ KΡny^ st- }?ԧ$kUЃa^_(~2)<^wBDa@De{\e6`X i 7 n2;\rBUQH)S :eQuT4ﰷbzxwxuZ^plEδ!5hЏuՊ T=Ȱ5Kz\-1N %oHP6lqh)6/nk[rLoO??컅Ά3:˒__ 7'oBdѳ;Ŷ|2}p#w].S7޷E qK'_woxO~ΒvY3QV>H7}~Xo8> qvz+/L]؟ę'&ODu8ĸM*`w+k8x<9+(~mw]۝s^N%F{r;xSVEOP_6{= 9۸߾?ڏ\AAPCrKe(y$5h e $UDE\LZ@JUInb-?{r=l #'61 !y9Rmԕ BдrS3@i9hbatjEHA9aLtAPП] mZj+uoRhѰ8OJ c 7JSP[.|n Kjϩ޵-{9%(bMO p)"df4ꚖYNBsͽZh9 +W\Ac)(1DأafQpΡJ8S4 uumI1 ڵ #2cn߈O0(H`tod!)8 eBB 7[ؒƜ|tpHcI@ OR|w'; $l6EP\/0`ή<ϓe|_ƿ7'u JKDLlc߅/WX&ἦW^}Ec.TH(7nã#_>_> ~7?|8| ApCHIݷ/&5x /<]O? o1MOw;@=cp f{xO?Q7 /|Dhmb4a]ߡk(dV#1R(m!L,M44՘V"Cz1Nw~a\{OS1ۛ!R@ 8ÃM3B؄0MCC6!ڦCg]M5ڦMC4$KH` czA7?!, MFSWΣj]ly!3(YtnpZȵ6ʲDS7#a+LEHx,BarKa9h 5ND5rRiUIӮyamiQJ1DKP ڶlQV% R|R 9eH1eɖCxsB5EAkrcQHNjc؀J}Α7ݛ{tF1pX39;h 6N fD%#m꜃s#S=Rdy%A|0 58lVjcegƂ ccіpd04̲$s%fRf "/^o 9v+DG>)ꦁM=GFzc IdZa:|<ý%n of IDAT8&|^Ar`:14&Er >&!V=W#Pm5Thf\^ҋ/ sXcд lJו[nco!$[SUX &)ܹQUl9Q5h3l$ q ׏kM}1&f)b(GJ#xO l|Kc&#zV%/A dY7^åK!X.1*BH2+O*Rt]4M55-{6XW"1)^b.uX~}΍x2qw68gk\ Qkqm@A&*1T[c9!tƈ]vo+F0 ݻs}^sP^_҉w2zW}񧵁dS/O:N~9Ix\<չm}q{rt]';yiq"bM*ݺDz>ƴV]#DL.{ݹ|v~ZVt_pd wIx{< ~~3bvý?? <|M?zdvyW.0Z"i8ۯ[J0 {1R6bgԇQ[3FxN%0+1E͏;Y.~85?kusF:>6w|hǭgAp3h姏&q7b ~yTm ^ĮC@}:$)!PB[4I2(m`l4/4M2(cҬ2Y> (JʲBגsڵ|:O@ 5`A{Pʌ7a0z$TJFnwңOvH so: ڌ4RFZ"II޶-,yULS"D=ކ'~E|EUd>1)}9L'|?}RJC@ǜVLs/,_'|O?  P7={Gx)507I<ܳ{wgBy/k'?_zJ[Gj2M%{x{O}U]S}k0:KbESH4!$ t7&`PImF* aQ4QR OSX<\ (tjzDT!J D9n@Hc(4)-=XXhc cϵA+kn aƈm=Zp$edE688~)iǤP D6t$ňu֦h;b2C>=}K Ѿ |%JPV5%Lu~sJ9G`rӹi*"8 jXo8OսpLbJbiә3*hk\A=.h -r:"pC]h56Ak y-9-k2Nl}"stmpձ:OS4lJuS{3/MH@UWtt8T&FiyN8K#Xc{:Q9|8؟yzI^`?ǭ۷qXk\,0N8Z`-UW)EIbZ.1N=Ԣ\y|ouIA/+kg/_F۶{]]Bo{]W{˔w9H"JDAI"!;'R'),GOaXC6I%t֌[n#$E)U9i -5Ρ[tuK^ʈ} (= 9ϰF4& 7CUS ǟѶ $AX$IG$eh@B-a:wDޢeiBNh14Ł:cOR;>TUŝgz N ɨq)ug;.!s!p] >]#I 8DFv+Zi)ʢpw< NxeՌI63F8xUBJ(a8=&US3jZ~]G%eUU#!@k,ƴ8 ,#PWX, Uk,avBc#poD$bp0ʐAIgDd,&!G +|#:סz8 Z>\vE1vcLoY XJ2\z yɧ??"ϧG?Kəw?w~/|]};IUURB9VZg}??G}/De))-wz<MZ0Zk_*#!Mӟi8o֭CtA5ڦEj :_|y|?<mk8< hs|G>z ΓX}~FK}7 7n@= J㑇l>G@Pm*a"^lN$Eq*3$.9=m4WR!z#4$4W(F_+29o\Z.qttzJ P,!%rM QGHITMT^PBYk kd(@<ᤑkѤז}+S9a$2 ج'X,cQ ØMz]RV`(m|>^|U/PV.% :qxEfLa4lJl[[$2I|#}B $@F2*AkweۛÚByXobUk(*)IR;MrU҇FJHeIe S*XާSK)) tG۔}Gh !P{Z!AO[Cb,& ׏8x׳99q+1xk}׌&/="e h 2H%~lMrׁ@렬%{*65ڦARm¢>g<6 R*yHbWt_`QZ]QB 4uM4RՊ IBB{} SXДz\a,6v4]@,ayMG]:&t}#+2j;J+ @$0ΓjuAKi1;=8 І:s%''YLc"ưƠmWG5aV J*mzB Tuk1ۃ뺂+nH9:dz,EfBx@׵h ? Eý;h1|<|Ϧ9D2Rgׇ D&IBr}1Rlĸt}ki{@)r2 պ7qHEPG$Kza"ƔWzSK}D&t)=հ>$Kp{RkH'O^kʍ&k-DbXcZ-1L0{}ۖ*2L*tDϜXD;XmP%Ҍ8d]WMZ6„P9 T%]O$5$,E]7|<xX%ld輘fZH4Vi6@(" ]}O'mGF^y$&lpGGxGCxd )^J XkXZ@ :\:؇| iArBQHj !4CwLR0A"U^D{fx|됤)E&0Ƣy2ڄ{F)(mNNL85|C (𾨆&&w6o>_/M&#e̮2<&'Ǜ!J-J=~$@;Gq!=vuBp\syodv-Hx%'^(PqM ;']smNgx*w{F4ns #imED.Dge_Ͻ~Nc̯܏d|oYxϿqctIDq_qb =>%);]|Wc1dz:/8 rk[ׯ/=n zN¸?QB-!@!( Dr-zU, Tŀȉn1`1`:f% 9;4< -=oArb=mV&aIENYD֎wj;goJ;H!N=FM /wlvrt=}{?F];Owl[=~Y hI0G1ۣR@;$ {D0Uxt=gPiNrmK M]" a pBRIn_2bnJeJvaF`<#%,Y} DQjauY^tFׇ8v >A{jz=^Q𹱬JJx4MsZQ/B8>:10Fc\;/ڮ1$%CrPώ=w.TJv+ Pܡܣ݌F8Tl;wncooAi:ilHl$ @ecCp^jM)p|L;685MZS=j{jOCc6do8U3@׵"Z+xx?.\|:dZ@) k:'!`s#^<ۿ?")^}UxۿgL;~GO4) JT]|GGHl렵%_}ZkV7, )Iy`gw8P$'*)0N52(}v {1<8.+8CZuP^Z^(\V|2궅gZVd\t&P S4|?G"z J}[kaD;2Yci^drYSү#!E2E)y`2A% }2sM`t;5:BeHȋ-MӰG":!"DO} 2Cwh]Jt"ӥ"UZvtͣ4J!`d| \G{ G&HiæڮAP/d:#o9C6SMUjLR 8.tlerd2Do Iuŵ,Z5GpMS#E=I`:h g'CI`_ټI뚦i\-iVXk5ٔ t]"M)X*Kee )#Vpu <:FZ#z餀IE<b,QVkEASW}gTc5|;6WPi,l0@&b1tRF8| uYAkmaM0aGH2Z{(%QU5V("XZ;dyr(G[Jb\&|N ZgڶA]ȋH Rś_ @m"ÄLbRcbVdIwdmC)ETGiSd2M4)9輇DbbLCx.KXiL}1:<?j#Dz1NX.iDf o]s#x)X,"I ҆Rxܹ;f{>`>uǵרJ*\rwnDhRL{AKhiBIq=ږL6-5ږ ,,qmL&S4u#"FL'zHE1|toK9$O*B2 IDAT)B ӆ:.K:{µ-$zj אըk2% >Jɤikyn9ޜd^~<ϐgevxE E51r]Ef"SbEYd>H1k6ޏJI(65EM'| !5otz }о>:#q[s3i=1a}~q7w^w:-+g|'5%&T&-7v?k+%f!w؛Ǎ+g8/='ҧw]Lۭ#b{܊g s<'Ƹ#n|\H8^@߄wEǭ#[~~܅TqvB[{s>}!0?~.b4İ>eLQ1 7$OwvfSz:CsgixvT,<翿{Fnqz)c^l[Oq^7^4tX16-sQwJ"G> Hm10 Tm{x((A^LG J:!Q75ex;2kHTUC5Hl=pks6,XM&JDBxRaLcz]mTU\(rtC6:341 h{{ZaJ:N#|(7(  m_`d<ۧiMH0罇Vm[ߋ|pxxG~<{sm<1ο IyF题_ x$Ab?>H/{݀ ~g3O/n߸jiE>=T5WxSL{:]؇Ï>GԧG45!n1p] f ڍ5~k#xGPy}{ڍxŗ(4Z:|sju!;sDv&iRSM}Ike Ґ@jǥQDr 4ܝMɜa,S]Z+F HAz$&ynGÓs!HxGr𲐔"0`hĈG[1wzZs}C~8!zkјa3߳]Kjݶ͙t[Kalٔ DSbk?੧r"%65e(` x!Zhe@Õ=5 v#2aLRwg*B";XM&5p}i7 %]6ߟc>ߧ#[S7(5F:x>8amb2CV$Bh*QV( M݌t&496xZ:djukaND~č = )x0ԅ@wfPQ W(H]:!Gk=ؙj`Db(B]v qU\:{H Z$Y.KYVЀ!A\ #8<UY͛hv Aχnb&-$%d'=M ^k_&i$n:4e :ń]\.\O@`:۶jD=O&Gt.1zȈ 'B(\C]MU&F+uzTr( v)82#!sXW'!+MP5Fb,wȲ E0ж 491cmаll 6M74F!Դ1LF@o%Ո#_"nDt]r= m!3T\C`D=X#DGxJ&0HL9:ߜ9VR _ia^"IR2DV+TUtAC^dLwZm2 ]KUDBu %ɤֈ$<$IFL1&Lc8 ~J!HBpB}ICpv״}׮]lmaZP71cr ]C*6mIs W\( d<& xUƠ(5$ ^{U<#R;PZmZHAkЮqe4uuH>h[" 4]KHTu?pUInmGiVE#3YCJ$HJiIoQ5f)GDPZiXN@ug6v<({4I)+;γe96.sZO%wӱ}aۘsnU/Ҏ+wy#J˝Ȟ88:6tw7Kxugg%1S1a^iqc#/b[|CӇ.VosLqng[A߲3n}ҟ0L,ݻzWXE8:pF^o\nMy~~/%GԶY wn[Aяs1 rLS6vߝc2O_,YvnS;ΰ o} '^HlĶf:<Ƅ7mO Nx1us>xFgeⅯo <}ɵT轇٤@>" P7jn$kn޼u&X֨ >aq78:GG1.i[s$0I$%s=ܹW^yn!la2F]~JxFuɰ M@ƟZ1C! C'ֆo%w9(%?lHqyƒXIͨ$h;RQNєnHc V>)4M_oIժ=! !1E5'$E9d7q?VJaȹ A׶Hˣq+Ieֵ,5afu~"M 34uȽi}5a|R RlzˇR?8G4 B}p5Y(]@tb- BJtz5GdD@HSDXLuP*>1)K A#@!Rxa7dCz"MF@(J)B82VhW|_W6A(x+-\ q>1?b|{/"!-FXq|#!|)ǿ$/CXVlޣta4j):D2p!$"<z(VB̰`6a>2ZC1vBV"F62%,G9rZ!D5Vڦsqksa_j w{??;x!՜ Wḁ2P2g,ɢHe  bۖ(&p0i bF|ߍ{E$%2rDIB(^zOP o[4u!QZYȳMU]BK,hK*9v.+)ʴ1X55yN.d!ڕZq.Hّp~.݁v0y,Zx0X|B wGQ̐ X.FVPu[C EeIk-?|FY KkΦP:, B׵ZHɂ!)wvw|>9BvfpΣ, EjlN.(bkw>@4h .xıh\LP7sH&wE_. %xX,8>7 W~txoToŦ~pxǛnDv32n [ Xpwo3w7 p \5|qKR;.:oonx~vM|79yx7b;;o;?3Mu; F{hburWpW,N Rq\1rg3KХ-#機E'fȍ[g7v HXvu7>o~KFsDzxkS"DţT(T`3C>@ mﱨ,W:kȝH-[ yBAGH$ȳ I!MRjpBzt}׮R)B ST ׮^ò^! dYƙalD* 9r')G pNކ4K\s9bh2nR×6FdPJ*Vq-sC zϤdwh,ZGC!bQ,)=5!a=c}А?&FORj[׏c[vt9YFE&T]bƌqrMd aT%;VF4H?99!rt֚!PR#2s,Kv,.}\8cVcCj$(vTUj%Nе _U րΡpu: 2 ;BJ"r!{(uΎYt#mf'?ܝϰ33lSgrcl6lg}#K/U]CILB D|}ao|j'"1b<~(T$"4ŵWQ9? ॗ^椋mj@Dg>yW@fhy@e.ʌD%ȳ o a]]J㩕;q?pwo>Aflqǣ~MC}W"@Bk||ΓAB@ _~W^V "IrjT?~}?~+x'P ^x_ ^x5Hg(B+`\RӟAo(BCqNDD,,cM@r5FcyNh|s-u{u@j $DKX(6Lczcm#XS.Fzޗr7([KAq$7[7ZfO.QҹRDh"( Jm`woݽ9$A($C V^ /!6C)0h2#7 hI$jwwCPB@K2/g9#Wq\i+t}=X ݯ$d2!u !#bT~( t4 oxHk gɅ v{@'D=,\I() %y-):h{cd `GjD`!i[YѴ$(2cMj d^,P12'{B!I!)nHDkKC傜m=#y$4LL; $=:c2A+E4uRsWqa@+56ba<Ӻ^#OS8PU5@xLk LB2 /\<SN.pegyNo mOG$fl;kXbD4#Z B$=ڪ1xG =>ITa t )')(p2%S, d Q>}ǟMQb,0-,Œ UU(QἇOl-F2bI(^@kiH0!D[7hY{3TuMqOI[hM`M"/cuUUZ)y<ϑ |'ڦ#iJ{'#,jt6%G6<^}u3)6A[70 Q,CUUL*G\@6fLfU#3ԫ]KT!R*/ (hLAk)%VK !W]LG ISJ1(&DZU(r=S7>7>S~V27c9#N9gvx Rl-[ޛAn?ߦs i?:OpA JG1j9k:,(qq},+O=wu ܆[o|ϋC8vx{C{[Q)?1kxS﷣e|@ 3޷}o0qax;G~Bp]8~ ׮Ј0JBF F?Bк-%Tm|Vo_;[ɲ~<>lBp$! m_F9G^ʸ qtw="t#)ٌNa? å 4M2(ߛCC; r^>ziWi BK r " L O87d_[y$Ѩf,HuQ9.0=eH.Y)rͨ`Ȯ }OJOHB(G׶B ϲ-_w Iήl>aq')M氧Q0BJu$ftuc{߶- و˲l̟sΡ:8kGGl6c1C8::yB:ZIPHeb2AI%҉z3$ ^o @)6 c6Fj >M1;.?K|n!!BQ'ǽ`Ҋ#i/=< p᳟e< 3W >'xџIj8[I=lj)vzdy}|o}ۿ7{4 3|#3O?nhrax,eI@eͦkKv .ut=Nh\S$zj~X,"E i^ŏ#(,| B[Kxl 7ÓO=wwgRrCj А27l$-P;Ozvj\[oyxK'\QC /6ug{LشɝSD!F$n5~)LF1Tܴz[ocu!W*Vsߢx_]zOsKwx"Q୾x·g7ys:r3[qwlduLnlcd5G1. o;މ<:ĵ+%AJɭ|H 18γǭJLNo"Oy[EÄFEH,DDt)5VMB#Bo; ժF[9vvv9QAPNWd$6{*jjR'I,aTȳ\h[v,R1q%P`y^`q@v߻"/(k{ʲ4\tY=#c 995pqs)؉5eSÚ'ѦnX$>rb:$#qV#|Z֑!I 7MŘ_r- s*S_ !"Bz¶*X.`{ʾ(/X@țqg kEmӲ(Z- Tt]OyRH)hx^tE4T0J tl[m[Ж!P11 Vu #6:lg&ֆ#F@!F5TԬ 9 i촲21Jb\,wɁ t:rBVZ9bc ~2*A9݁R)/ |/|'~߃k׮Yw~o ēO>w:ԣhpBO<8~?q/| dYʙ&ATN?{9WIstBh՜=biؒc5PJSy,IH=FBS898DXBLrZ(r;$md! E8ĘY!4eRfך܇;")z}Ïr9 ]"-7eX7בztJIyɵp1k;*)TKAYHw^w~wxq]:"70E$EYhoC 8pTKQC5Hn| /'ӝ4ESUΡ{ xI1!@BEr(1) $,Z.5c%'Nr ;ʌ<5\[ HL@&A>/7̢R1FqZ&P0zXQ&n!н<45,1䄫ꊛjY`>:\ PsgǏ>#\)"vww hkm`m3j,Zsy4bDհޣmrԜR' IFWf:ᬣWn<'&1J)8O<Ҕ,0ffi%3n緪V$lAX,Rˏޒ|4' MU @T)Jkh1M8Y,v-a tY\ٻo߁;yAnf)MR^0qX MXhۚ p}t k{ۖig=vwppEYrI G4D%_I" h| @T<+xUH]ߡdyN%(n8>zku:c:aq|,v |#8 uȒIV%N GbBKdڂ#0&A,,gJui@^X,hڎUH [k(41B*Yїby#y+exKnz-kwP_un;xOl' l#o$>}G. q:;n9ĺq^7ݕ3> :a/iާF8>/\ٔ|z[߿Ć6-b]_jݜᨏشyvVl:oǗ"!R 6]ӷJpl 8![_%qp(ޔu7^ey6c[̭3ә߃I` s//$_rSn{} X x4C\yhq=[썈2o{qk?_1F-77fc3SD"FG$k;%hڭH_9(.̱a!n`[VopG vͭb%>4o[q &ʈP8?q=Z[f@r#7e#$/ZK6ۧ:+Q-۹xqKsʽyx368+fO"؞omϛ<s!@2n2K9BCBg9  mcQ ںjĕׯQyBktK9(ʅQAJYmΔ15M%ƂԈDjtCd,LJG]ܠp1wJh;*(Q$ IR(=fӕpP֒7jH=ʤ̀3I ݃{T6=,aTf]׎BK\1MCnL]U5BYF:FKrNI!Ʀ:5'LJi2#$"_IL Js;m в'%@ipC");Tib%9p6ޏy76$`Q1TO %?,;Ic?e%ڞ7Q*X.)l6ŷz&I`{ʍt!8H&~7 |{,!,JUgocOʕ+Jc6;$5[#ɕZGRHEh|QxOHbM$s!!UP 81HFIBkv@V --PF(oF 6X5DB!{Yxd"]+vi(eaU\!p;n W$Hn_n#a.H#6֝` +)Jj@z Q"MrHmR!#~Hfn97*i$1 p7!),燦C+;EdqNtC(Bk~ww݋4!A띅kPU/m4,EUW}tBɑe]D5X,N4zC*sqrt g;,NNC@^HMv{΍$Mv""R9`YUH$2|.,V!P 1q?.Nu@j,FSlKS7Z 8O&%]IU]A `wwjAK45pAi QBD  p%gGlG]ܺMox@SA(K__>';b.n!֜ov8mw淟-.j&fە};Mh"ͯSW~ylp4ou3Y/9 6W9zh(x3uoӚ\akEZ5"J]-1y̹m]KruK$ &x晧a!r} _"n\?3AiY"> Nbb! BDZW_3O=_|{{Pk4jgJ%G+9%O@Ur(48U*mZ+SXuT''jUW,5HtB׳c`"‚uAIHY)|44)1F!s\;i\%<1q5X; 8+!%`cHnԊ|DkvcGDO$eCDLvwqݗ}?NL LaHC=)ĀD>**e|?CiV(J$iDzG%\xB'9d%Zﱨ*h@v.@e9|g=EњZ8ףF7!=$e;AOrW`#OOrvvl4c]ꌳMP~w(iB:xi\yށz)ꚰݗE4w$k{4] "dBNX6 D(sʭVTB9k$!4gt.b6EJQӇ"=7 ؄Zp!s"Ș\8k!xjM ('1x$4bDщЖnt+U1͈\!DHMq咜ь4*ᛞG ]$!L`: I#rrڷ t2bFORr{Nm$vyo",RDVjx&1(˂0D7U۶n !'֩6.2$p@n[LS[!rn7 c4R1'&뒯9k-8՚t-q4`)e@54D!l,8 KsqunH߁!o||޷Ջ'#b+}>QE@Q?7h`DP0J@ƀzU\Ë[;nd1m5Xx y:{v3f#Ɵs"<[x8x.&5 2&kfls x&|ˍξw|>i 6)o})~8\_5ŋ JB+|dUC߼>vvv1N!D]Ucl@&:е-97Scoim&X6"B NAm :1L)T'^{E0NCD׷;-A38F%sAQk11Rv F|TGBO$[`7}GxBx~'D" I(-sC;94 8P9ɤ@]7MDul r,K(ki`JhvGm;z P!9ar@*F:*1pp( 9x*9e@`* 8ףstj@Hb>:F vBrA+m#g5[$AӶRmZ$I$5=Y>LݽZж-#M#vvȲ-g02}!t1ΠuW`ZN ; , µ2I{4>DHey2d¹~J87xP3$ vQY!8|~ð!R<_I(2f^<E^'>4xfm[;.Z_<(:1$at[gg~gQUY9}(4U$IGD'? |?O7 ħ>)B o]\CeXpt|D`"1dPXay6UU" 1LqYp|@SķbL$A LmR b{,#KF:G|OfEmSZ ]:ד8D hZ&̄HfjpO!JjTe !`H&hmzRҴsd֒RB G>DG=8/8M庂h%cx'>iv:TuERTk"Ê|u8>Z"K32i ]ju̽mk5~c)޵- eY"˳,=V%$" :בɎ=& lbϗ;!xI$i Jj;~u0bD^ԩl-XS#!c甦) \sjd-=fJ9"B)U7yt2v,#czJ_[~=ȲmdrRj\LqsVw{ɭD<#xA(T@ۻ|>ⲻTuzdvwwH61hXُ(J }ߣjh)&)f@6xJj<е;@XӥmG~cJI#Z1L! +W7o@,DDIiJ()1N}|:e@l:E F+Yr]͕AgskÌȘx>kܸv,Mq+s!_U;IGdkK7NN3})qLx0շ鷑 ȨY%[Fa\(ڃ|({ܹ&)A硨AYcINc4hMi=xzl!ߺNǑ} n7) mgE%HW)wmuF׵H3&#TQ 4|~=5~uJ^;VJ9Q^s^fY6O&%uډf)%#@bs3$%-s/v'J5rʃ:1=4-AE$abSt- 1@b-z|iBg '}S,I~z,a{ ) l6s=!%%W i_t|L}to98Iiw4L"tDZ1^zѨ {) IJ)cot6C䤬bEd#[")Qz|O 7Y'ɏ$ ߁=by=F(/[ Yȋ fS0—֫5j7<~~ GG]KHZy$$oU*<s_֔v!Ms@,~w?AJi 5 ""b?7x[ނ'|둤xƠZh wn>LgS|7}7(ȠvM4-р m0z)eI%f"~?>a~ gؔbжL!u-˨ DŽ*ܹG?Qܻn~???g?(˒)+@CD8F2[STZ*%vwxCxfh[^DfNZ8K ȭZ/6skHw o2xH&q{ՉEV;(kF\]u-K؎1@10 b\J&$iCQ 02FEM`XCŦwa^N'7^ƴ }.Oݽ@+ CWIipf&AZox bVIhXif }B),7vW]ܼYW14ވvYVC#D^-cI<`ZXN wF R+E;]20\ⶥtpX'AkZP>%!40V=GhWu|?;!RjӶȋE^\$}A^nmB]A2c^x02 g\+ Pkki4T5Zog>"r t!w=6k;T1H6KHhێMhc @YΏ6BGQbZr2RC b4DEvY=*^k$D ',%,Zf[Ρd {^Wk"ch e8#ڪA V[(\X3;/KtUEk!>欵㵇FP;2Xb\xy¡#SAK 4KɈug0L0SC8`wwEQ&8?@g;ZY`ZmjfG2f!lPsJm F; ұyuHEdB}m^J)T W}\8::FH ]#ZSE"IX1Noe4ei.2zA=۶EUfT+dih=;$Mz|Τ5mqxpiNX-ZLg3eiQd)6pcRI:)P#ưLi1kZ:B3gZĐB@)q+uI$P@rQlBCdW9_N4͠~UyPr/ٶ5l $9~SRHmg:Ŷy ᢄX'tIxK% 4,V ՊJ0} 1dZ/w2pޱн^"4d2Au#1Rh.w@׵#h"]$i Ʀ\`I:zܧI!!X{{0Iu@b㠹-;b4"//o#H/E &@GRJ~,,+fG'71N.xo/៿= ^q%,fVF#e ^xyǏgeqM1Dܼ~B~|ԗƺIJ9<(< % 7]+){h;ܽ{%Pff:&[LsFkňw2 (\ywjC20N0MZY= CH̅|ߖBmzFfcrhM-yGâ L)ZAqq0S&"0~R`:;Im^߇dZ+H+]xGa= 'ш2^c40ֲ(^:G$%99('CdEp=&4O]JJ|CkWqmo"UmkJ2Rbxn^ #ה8>G].C= QO&N'Ȓ{9 ш]1ҵc8J"&5q}d̼$S`I2h;>JH D4dd)':G|rUWcwwqxx!HJ&Dmb]D Aj=(EofcKUݝ]ꡕ Ybu| { ƪ XF a`4A^  zC*m"2hI4M R*ܽ!"3$QOk\i)=mTAHmOA:Y$ iC6ۅ$Pe^Y8ב/ ZQksR_nN@]! w&<eYk$jHidYt4#H0@R{Itm#"wh5HAD r|:EYV0"M1E8M;R7-&q!{pC4ȋ :׎j4M<^qsɈ 00 c;FQeDմHJe%̳4EdSޏ~GZMxs&H,7BN'(E16E6G`N&hۆ;"sHP;hU@"9r&)4b%cG[Zy^ȒGJұh{A^#TU7~q\!1 B1-&svs/ὧTT\;`>s=fFUҌ D}͇GLv8?ሄ'=ug4 \E뿶igZW(ZV+dYb!^l6m`qs9c+4 !ĭ[MbggzE,WKuJx)|kz|@bXTt>QF#M3hEl͙HlkC]J#`J,Z 3<;_' 5 rO~ήо|Ϗqp Ix/x~{oaŶ&Nϊ'$O1&ǒ[crL[\;'}P|7X0_y՟ N煐c.`n}? 6 Ϗ j:/?q ˼M>D']P8?=E=f]'{g|}K.ObWr͌g_|!y:8DQW8{w_|;>hx%b@/rC>ys乲]BxԽEe /s1%S݇gM>?FHns_} _U|9EKȀZ @8o=y7;+y6}J<{W=g|\q=2ORd S(k!FB kqt$]Z$IIi!$z#3Zheд/,#{ǝa Bh|~MS1ePB@]Uhƺ5SǝV:1/Ex0<@nf$I6\Og{+)*i=t fJJku 02HisEǿg0F#pmK钦i+eY"IRJ\:(h8QU4њ:[HM0ƊB Nk^8>^&b^RJmG=:csXBZ-s]X I7 2jik X߮Rb:i4ud%%꺂 I׳QD>Fk Ri@C)m$I4 r 468?} |y2$|q}$f ]A(kn#=W4"SW=O"d;Fu€N<=^y >__ m3{‹x-~~xI$YJ !@uHŗ4yaލ<,겄 o{ /~O#3=Oh\%ch3 _xqܻ4!ndary߻ַ o.BYMn0SzGś{׾n9_EۿXgxԗDCZ>kz9?J_ILJcф*cSsBh0@bҚt@FS}dxO |:Gx+6YR 3FC- Mk:I|aDfxm$ZG1ZQU$;NdnrRPq Bx8p#x?(D"z` ѵHGnŕY{ -RQS!!)&QC mzFהۆ.D m%ߏIq^O}cy|W*km mH$p庂dLltj(ꦄVoz-vuMx$hxGD9DD$֢j5(Wd8\yJ~s'QkWI-)ݷ ۷q*!#%N"b+-HDpyNFTx~>x;oq:|:}FO-<=(syy$2^|j{._OEēs1gFr\{8Ve+zvN[&45%K-LS4CЇuY*HA2kع7#ЏF Ve9vxc]R%tUcs.;/Ql8BxO7\um,K!>::DzgsFѰ~pȱo{0mHL#V}|WD+ Aˡk4R tNrb\]Ԓq{Z B߬O.~4HWIYSt2$`u!Ԍ!\pm|~>S?I\J8Ѷ=WgC H w<ēxކwxm]'?I>{Կ 7o.|@$ $VjG>J ߎۿ)t)zIC?HBi+(IDZ < wco 姱ZwwxO?_}|񟾀p zkA֊/ԺB 8jℳt:nbgw7okU!hub-v{$X0 RRh)]hm(< ! VcZ m ˜6%VfS$7 uC)5@oD=&$8M,e BMb"p|k~96R@ |_}km)K„k3F뤆p~bDT-݇6U"+oцeO#02JLƢȰ;peZ<Ǖy;Sܺ[v=+!ޑ63mz;J޸qGޓ c511w@v{u#DJG0sJ;*jr]b0epφAZu] HP&MStG@@Rd\H拦v-:סiI,MKGsKɔi)l1&vc# EIyk.0R<'%mI#^f)C?:5EFܗ#31f[I`) 5amB`ZA(Ɔ+[8wĕ B9(g2&l IDATL!fH uz4}@Y9ax.vgw0/2$&!ƮIr=!PXv-Vqb}PU% >2a*li!dÉ@T0Eb m3IzԹb#!-=Yehf|:<:`N|kkaX4\W$26Uu$n' ӽG1!C yݴpCXWHOFku|D4gk ~K45dɤ~Ts(ZEk87!X QT&)E: Iho{ᄍ!dn#c`AEF+(GZXz*BXW 46[Qڄ"GmeH,^V{gw{ !\ڵ댠7{6Xv.{2 Í7p;(W%vv!dCFLiJ(tc6s(b]t BE^ IK듢Q &HvdцM]>8PZ O3ۿ4MQkQ7h`B$Z -k1_&% r|ESŇGH6.E]lowr ZH/ C[uЊ9ʒ VGHs깏1L0ߢm;L&G:"!¦jku}^(-ť\TMgI~}і'W~ c5% w&OAlL%Yu7)mŪ ^넷j |!&x;~ķ_.Nby?u<^ӫ^Dk[l+FpR.ޜ7~}C'@{M!ŽZCK  xr9%Sn[aDM5=ic9m3eAtW`>][Ro~3~pʸj؏^x4u/=4cA!s!FKIlom;$Ƣm$O ~ܺ~qyƨW=g vv_gJ=DwxWܷLU>C_{8:Ibc wJ?s>1dt*>џƒ?;noOJPw`S|!z|_&lZ 0΋wxGxy B"$w౟x O cOe4# |_п8b:%1bt7N@Z%Ȧ3\qO+0R64ZBjB g]n\om'CïDEwp#SsH⥒ZZ #D$gF! 5<<ϰ7cSL2,E4,YiEn5v`jF 7HG"R(DDXiHVRk(@!G{H}qB(`tbC@]YA %4ڵ-E=ԸweFJ,&u력B^cr. j&IS(-5-V5 %L@hmNkzVЩ &c hcP%DRsqM(ȲMK mܺ5b$9ʲt:g#cPJאڮZxg !ql pzcOk{$iNtEXhcQı\ ̔1|RJH6y~ BZtUuDajNPJc6CpCMt_y8﨎kFڦrRvU ;C=,wUEF"Cf9bp#hדC@fͦ٩cSsL1kASځ'> CkA5L``YVѣZ2j3#IdLv+u'X+,brB( e9rؐOM]{m(dFkTz뾣Ga](ԉ&%j'_,ˆ]9ݑ q:uF$_M^_>S=6>V/|<)޿TK`)JV|3>q$xť>d-H {YLI^$#әvxs˜R?OL ~gry%*fx+8aF׹g盁͉†(3??nL>b+3$%;pp\F JDJûyib〖=;D޼qy q몷i!6 $|^7ߴ9x+˩H8vrǭE8q/NwًD)vqo 'ï-# @3MǓ ^)qh&MgާMxӗ)KU\ggIyӱkalR,589="_#duLK)aEb L&PJjB|e9߿ɩ;I¬Me)'\1K14w] %^BUc1t wp|6jCU6M.mgR6dk`pW"ml56Y,:6c:wpi5{J!?tRwmJXkG< 1E$8dipJCFE#J NhEu!IR= C{I`lrIb2Tl%=~OhqcQi*Bk !8Fsp<-~`'%-҄p~Ri$iJ)Y! ʲD݃1GGP2 *H)\.GA> :-sԃ> Fe0Z=%-Fϟ&FH:>I^Ÿ*]?'-מv\~O)¡+<7??AdIX[neYMݸwoJCHjyݝ=~7?#Ơ+Hû_җwnF{2HSz$&ma~w{|כވ^GRKH!"'~G~׮^ç>gJ 8:<³_}_+_yyC*BJ'ń螮áwWa|#g>?S@(NהEʗ0 IcpM\v>x  %h [+&\!FuUc]ܾsGB`6S5)HS-))5`40 {%I\L`R*D)a3 ӏx&uj l$P|x#^JwW(isyz(X2~!qO$Yi 5 BZA[3vY8*r”^\+⹯} ViX%5 UDj5aDg )"͚bkdNCqCh/$HJ* L k&Zz+C$A*-$T 0R 1PÊHV"3TaL\:p} nMx<|c_Cvp/ȱRȴ@* dCŞZ}Gd)).""Y`O]Š"d2t:s=IHXi+Z`w>6t={n^o܀Sf9sj2O%y"%a:1|@z5\""s2iql6DZRMzJ,+yN;u k ki8z7 }д-f)ԸU@'F ATr֌4ɠa-dF8::De,XhUDAIo&=,I4P0)wJ{Dd'aR)uY1=MYH7_,` ^V锈!!')x_AYWIH3IIi@&dB;3)h/&KYm4!.-H*%;1wUY!B*k>=s s0Z{Z*Zk_g5 ڶE{cD9j9$t6CURP$y &rbg1VVljQd>)qt`:#Ӗb1bD^d}R)aZN̈́{c,[O$$إj!8iJ_GU,q*p#3r]ʏ'$H IXm #)@sDC%~#kIPWLWo@BdR`2{($" - tOmgy=)VЄ$%Alhj @q4!a,>m$JsUeeqk{!O֭R nDƹ'9{Z>J*(PXSΡn >N{Ayi]Xm()eg_̑#7XmȳyNȍl6H4޻ dy7Pܳ7F1. Y1T_%a60_,7ж-8敾F(}EQnR|1͐4-Zc^!PJjLcu4e9Q| };J+M|c-4|fy\vs\;j$Ni;,W+\~}YNBt:EUhXc^йqG%  —aoZzw@?>y.^=öއ[#wk_GNqvxPKC07yv3LSeuQTϣR1]A=;/ʢ6`$ m -r4aGQ -&ɐ]^EWʊ XA׵+KU ! T$՜sJݯm%;);OóRpC]q^orwhfpNu=RF 6 ?܉ "!O\kzݪɐNY- ,E ɹH]rf6H ; wm S%5?In 6bњ f!9Ip|꺢lXMe v#"|;ùx-*ݝVJ**u`@*l6Cg<SQ,q\YC!9_,d|Z-H%ֵԡOoՊ eQr|1sׯcU5h;іzhX#s][$1iP "ǣqBʓ6}ﻑ97Kɝ^v&ݖ ɔ8g#49۷ov<ēQ,q֫ß}].dY/~yH- c]wxߎO~T0:;( |^ ܾ} {3 *xk,s?wpxhFcOxÏwK|?^mܾuJBGܘR]^~%vKGd4q}{X,ʯY(cCGhI xj*< 8;$IC( I}ַw~#Qgj֡SXDs}DI Θ4Kqu<87",Q,7v>xxv"x戦A!|~_yh#ҽ&>;\9P?7+=ZAkIPP@i G,< 7#d|s[gGyD_Kǂ;.:8n$5vE%g]`wIHIjZ)*PK|6Cfu4;2J@ii"(C.;ZFzzrqI5ch DPu[BkteU!kWR@HS!Gmw,!;᠅[PZhلQV8Xx -9C$2uYCk3P$r/+RL Z XTMJF(sj 0EzS90LGF(#D,grq4Zkj DC& >GЋ<^d(uc:Fx2!!uq<4Pjf|gp,C$8(c.@gCIc)4 &)V%5i4͎ɋ[Hl<8ϻ}!,hf-eSЌV QNh2Bйh}ZTu,zT cF"t k#tCżijqza yc\ NY!-5bSUOFJd!YBJy@*(dRFO\9RIl:_V#;D4MCBfY!M+&q@AJ`Am`cC1 q ,vc+[vxKxX@~?kexo+;?:{ +z'nǭ#ْ2[p9R=ýsߤBflqr'[lRw2\\ J_3u([_r򅝦@p-^7C [Τ \h ; 95-"Lm60dȹ&[;֙rDxXCGA١K#g9?f>s\?Jl b?(< mgVLױOT.h+'bg;{_CExTna~UԋPPf9tε̂/F)o#{&[>5|ÿU.~=^}gwo#<ccX89'"kpzz/|3~?֭Wqrr߃g}ql$ `۷~xaY,! w<$IgF4_e9g ?ӟ$VFl$L?1ZXvR5c)^|BkQ*YLhP%֫5Ja>#s4]58O^:瞥 )ѯY %pA@Z.8r*r 8ıBd$xy'͛Y;kzhE2C!Qmjg?F~z #\YR@hEkxH@ xI-ʚR!(( abe! HBBk@Hms-T|SCk -$~䅐ib IJ|g9H:{HG0^c(c c'D:w}&ń8]DR)-0\/"< |TD~Hrҳ#sn58)iЈt<#p~6,ՊL]ښpI899TqؔLu)Jr-5UqtLӔHimZ e),C]HY,(ƹyF+Z+$IPedYȲYѺm='EdcHauZ!Ii޽{t^k U]a4#K$ۦ,Ǚj|qɈzwEQ L]KY(Q2dK!$ gzMrCrz1NG?.HAX|3mq:Y)>+!A߈|bD:ل1#[;y{6>?]plO=? =/2^} {+om𢏒fPMY;lG'O=8xqb:rraISHv|zj1FkrY>kE :<쳸uU0yOlHr[[gӪUJM?|$!g܋߯"xr p=Dg$^{l+ŀIgc0_mSN/yg5{>TF\3]DJYJrwh]5 gd H`B (%ↆR3BvM{D ^)<hg@J=rvɰ{b2P"n\W[C ۝Wu&v׃$hd/C|-pm:$0N-2aGiH@Wx걛o"X/WZ#K@Tu3wmKmC.gk hu]^h$< iPW5\ے_*υ@8u]si:ՒQBP>M>`<)tApP8Qc^Fb4״]KNy)  Ic-Z\,0- va&@]7E WV^W +P3fg:mG[ KSqIbrz$My?#ȁYՈeSa\b\B+Bߺs^Hg&D PT%7zvB!w8 D@K] JmG aGoy\QBڶA''B,K=˲d=JEqβՒ")r09vF {h)S?ojMB+B`CS{B uE"DQB9FC[闫% )k:lp42XVb2L.| UM:6,wA0cx*)7KIMC{':v(Fa58A&R 5ZYnj(`F&CZhm!@{'yFj_GQbS02)'zZ(?=z&c#eb<)l:CT !uU#cI, aXЖkUDԜ2L'=@* ڶA$Ad-FYJd67Mۢso $@Jb)%NON隕\MY O3uzM51K%qʚ9eу25_Dh$1e{VCb XVƈs$i(Zi>M]X |(3BG#e,I`lz x5$% H]QD"`д |)IH=Ch9k' ڮP އ1#`K ?CzH`2?q5c:.1;|?9tx{[U0{OlŮ|Yq!F:wA7RE;b8xx~|wʿ;b4"x>\p7{\*hg,GW${诈97__^}H؝oVqp9}p9X>ybR+ְZu59n2޹9܊@;\~w\]es.K* ax"1g'{m4a.D?zssxq͈AܹR0E|޲h#Ϭ?@8//q[t WW8T>pexvav;5Y;??2sf qNڇli  B> NU7 \!ߋv>0ۮ#m8НIݫh>7mFQoqqm#7r)oaޣufk o0kZDq4R6p\*eQ`<#K2.>5bH/RNr HXJ脾ŅE;\uI(%P7& :P^y]!RH8AS7N&hϿ|I<ԓxW!@d! Qd~oo;.|cy駟Ƈ.` <ַ|SLo}H(/`U ~ ?oob\"bBOO~}>Cͮ(e /moś&Xz_/_ W A d)ExDAx߀G_l:d2cqbgMGG14b{jި*M9p{~$N1L&qsyU %T?mu$$͓R ƉR^$Eб%pBt?}=ڿykX C]Ar5Gzr@~Pk G& ٯmcy^oY4yՔE -ahӫQ|>='1-hSO翈,!\s K~XSۺ0nv#WE. IDATӏQԔ$J 4i$$õ7fc<)= #1r- H(AהMFxހ(GYhz}֘]GLWk`#rD(;Ɣ=:\!x<(BEO$GW' 97 m"QXruZ{Z(4C5eS՚D:_,d6 #ts.WKcPՔq E4 EHEE`Gx$r]u' ZhkƦ밚/aTɦhޣTFquYX h2,(i1Nb\//B`4FZ/6[ j9 c-Q(sJEY@IYZ:B7-rnK0 )q#TǍ7X.,{BPyFUEIZRzr@ӴSP7"" qNN# :'K %AU0JDDjH'YDu DQ z qNc1(BkQ 9ܾu戢"^;EYl4$8Bȳ߼!W=3Em ] h ;<裨Lclrh3Lg3Y !~:˯xzz'X-Wp]4Fhb  YF(ri23E !x xG筬*LƜM-%9G4b(+\v}qu\ %a׫%4ņoܸb,M٬Ѷ(\{F95׃wűn {1E)56 f y^~F+dYbdm!%9Tj"l6"jIwA~TCӲG׏?^Us݇,JG =^>u}r o-v{o8#oq/8*Q=f*a w'rwZzcW-⡏8wKj q])ڂЏ³Э$;..p+m,@G8DgwP vrYS|%v ayg W]ιҘ;D+,j[xrғZ]hgwW8E{ !L(#,@f$hzi64;QuV7GvһhUU#XDZrG 8%c{GwOuY쪬Pb1ncF9T?4,ϨqorfM0h\EQ*hC(q_5ݷ ȹv)#W%8,./޶,ЩI^*+T  u еRq w{<@\?Ko(=Di%~0g>}#ࡴB],6D+)/`MD JqS2W7" 7E; "1>?MR.7 lk1/k|QhqTXo6VHR"ATEAsOԥQ70|N֫5(qdQ7 č( ui0p2nM ̦3MQi)"k\.at4T#|<Q``@F=7̷]KtK{z h^5`6RsĄ ~%YLEsG9)ܹ%% $ laZ&DTc|>GPBj>V7-$E]ȳtx!iNl$Df=B\NVp|JI3&8p#{W|?ջw'KWF[ZJ_ܧ -p`px!e)X2Mc4@8=9!.S=0TPRv}hc ?9=O(73{!>&KR&w`'t/^umHKr"wKePʠ,JFkPК(_V+.Hv;Te(&Z)UE6J[xv.4$qJSCsvqAӡm(S9bv5 R*v((J4a4s3܀j?99aK䐀}H2@xōRHY|'BhDQt c \.0OBտsr )SHXhD@<>'wo'=@?C?o?گMo|#(3<<˰quU^&̦Sݽ;65 f3|}/_s=GUQM2E6Ld'SuS/|aEUc<~S)|_Ql@"ӟ4 ?Jn[$6(m1V u7zw~<$bCάл5KB[ o|)|IhkPX1"4wú,P+nCi,~ATZBl %tgggs_ċ_zXdiFfk~z'w/^P˰/ ,Z(Hn Q5"?֌ɧ_*y,f-:'qHJ 0a|z/=GiH}=`;:m2։KnFt?%( m # v0P+<[R5/OH"w00J @,T0~ch`'d٧ڑ~JP@4A% cȬ(1Jy hl@RJ-(+<6Js9+#m'u+Yr[}k M]wC2ԴE&rXZ9ǂqk"dvB(hcvD:ְ)5$1r_ԀFZcH$3)9H<)cKqDQ~=ONe0Gi'5 M%oj*M4IPV%,j<_LD%J3Hpv68F)"Sضk<Ɠ ͶѴ |MlqBHbCk)NjT x15eO^lvs, bx 㝤mRЖ㪔ngt2E4$%(JL&D`\sfEJ 7Eqzs nZh)Wr]k2 D;kXk$)Fdg6E,MX̑#-,KZo$ |1r㷍)d -CONN!ܽ{I`  hq ޡmxY I2TU|r8!y1jа$">lvxM Z;,{ܯ8z?};wg >bqMytP!+VCa:<G8ͺ+fʹ~pEt _:)įNqAܨѻ>1,T6,a567W#?XqxH73eƿZ~Wtn?}/^.Vy5w]#H/ b A"@APc 9޹;naZkDF2ơ!"5IXDT82ۆ0o\ve#(Go9n55[dzܙv3 @j(b)-va~غ2skَ"pdD#W_[=d]c_I[?uBXq!Ay\ bjԨ rO 5C"8n1uTע<1(O J"ITexc-ں&9 &Reaώ]ZtrT>@iI.4ΌzH״Tl6<£=x+㞝@[9uC;99\xq[zRP5 !So<$^cW M{mY"%uwpS$8؁DHv˨ L9xcXXڶC]7Z0ж䒾lvɻc$& jBl`g#I"FI2n=r[ÝtQrowL!%e xWx嗁mƄwkw-H :Rn gx[^#Hۚ 2$dn;Fl;y-8&}J!:(P-}eL1GضIcG!UɄ,a!mi 5Aǀ'Uz&P=h%RO KcJhTRj=͡ƗU*z#b;8B](-%ҐJLzStqa?Jܟ7qD<%#V Ӱ;UB%ʱW'_ M'~N %M:zhPO-?ȼh ˃CHm%?6YFUS֠ IDAT0P"k"h $%,SzUkMH= է0 9\`&SdzMTl %8-Yh;]<鸕59︆'lhڶAps?RUT:"_ɴhl)łSE2(j-u1Hܬ؜8(6th:?s9BrXeLnی J(# ăjA6pC״@ u *X."u]UӌϱwVi",G5U yϻq )U w$iD+rV5AϑͶg}2I|?歛L܀CW֢ɲ MS, (Mmũ4 s~:b(B MCsEr]#ϋD~཮/#WuC؄?;;C~^ians%c2;3MUZc(Զmm~0ϱYks@z,1C 5 o\VdQΠ~MHs!={_`8;{Ihm Z"#Fl'Yr)h2{%I5>Oɉ׶ HI _(%_욽o-$0vi?_ \È+04vq;F+ď)Q4倽$ۅ4I} ""ӟ{S[;D1oD~o߳|r @I&8! ϗAEzF#ڊ:)=U@kq~z_w 7p@HNA.~1](w8I#^M23N%Έo+ u$Dsi P] 3edETz~c,BLCF%2VAK#1B 9}7ƫ+nEL>}e!#2]O`pKlsG}zxcӰ{Rp.@($`Zb6_"pg14 I]QGS$D*y3PRr7b!8Gh["9 *uHXrtȄ,m4wC|@{ Z޴FXk&u;5F$nL!Po-'EUPDb>yJ6ЄFkJK sdGv4M]V34mS|އ|g?2?prvqWQ҉"" JzGu~g>cYO>__W|?o~??iptݐ:_ϽOx8>Gfkc~qr_k!An Pm6pSO?ۯ߆u zA4XNӟi+w|7o5տxp.G?} +c1]jb8885 @/C‹$x2@y8w7y-8%q ܼq#"@dQ{0OX&3nz!xa@4D~L-y ~YyM0n򢠺 6 32A?S%ɄobKB#H ~e@0n*cUZjRyK/zkQVKgI2o]d-}y=R}eIwD;#kD\CH9Zrs>| )%P.h،)dnU)k~!2q51Y2 !H#b/Jj 5,gFT {eslЌޢrV 1n\ߎfk \k<s:O;2&"(e Ib! (`3C^P_' Ac  B` B*yNǍ9R`u{ MAj,;9^֛*%߸{}#s),ұA_!Cn lΣآH3}߱P6/0i^o۴~6g(FcjB|%p^P߲pn 3%#ZnIl>緆'uN{7ԅ\7"!?R5% ޣ7ULD-"{'ELNۄE$}ZqC_]x1Ӱ$ N,"j җ1qEw'.ww;Rޏ4V:?e]WgW|5r8C#%bh]CWWSRB5Rqtea{"R8Nb[Hvvoy+/xbpt;5qwDq 3O?&^J{|IKK3;=>ݷrƫ`})!1-R_1B m ](u$aE% XC? >cw ]קsEI C7PkQH4_V!Yx4ByG(a۽Rq"u J.Ѷ BD^ "/9ٌ1g.u7 4Z#H[-nz eYZrj&G#BY+LHZEInvuO :OԈ* 9MX$8uazٰ0N}dV11Fon7K CO;ԏlLh6m:Ҳz߆q_DS7>ܶmqߴVtI Htmm6RznœzGR-&;?M*P<.2T]a>ɋ"2+t,6Ox; bpdH=ƾm2fܺu ]aYc6,=DtsE!u aJHIiJ,crGf CN1037 swAlVu1J+(G)@nHjHJ2>8Ї??WU8[K"-Hj4 [0MD#߸w'>~w~we ΣK! g3tmO|'K/mj2CĀ=Pzr@UWpÇ>a(mq^ ="HUuQ5A*X],QU#/,>O$?G/K%d4$( |G/{ud^ !`p=2x{ލ,p7[;?/o?)~~/2ڶEQpC-Վ? $M׏x|K|w7_Gt|^KwQql AKL<;z[x+FGA N%q织naLǓX?֜-;߷!r"΂nbrwDi.SxEYR8W+ں{J 6#tgܶ}&Ai[xGcw7 `[sOL>xt{9G[@˾!`sOr U`$sa׵B{2LCRdstlgY: =S0YMfa|@f3'=Ϯ $Ig)I뚍˃epg YnYb`#@r`SR `}1 2cGUD7ڃ iV5|-%ı@zb臎'iϪtPRi8>h 1XjbSj"#s(dX[8::wyn^3XTpn@Qhma\b JӘ|vCʼ[H4 cd-Te׮]S` wDg& ]" 4uaBLlfPfZ*#e(6X.b@? 2 yQ(r wrYYnZͩVA`D;\q ַoAo^,fs}ٔޝjn>x,;v GXˤZqMsZs >|<\O!|1'_ĜM =iJkt}|Bt9@LnH<Ҍ!Կ -[곟̯U _ w;K]Y(7'w?{?=J^WֶiK>q&cۗObwHx:e>^46vOUiySyI+N(t4<0>:W;NǷ/x?ϽܺxL#C| ƙx(& 429w`-8߸Sm,-=BR%*n14pEFSh4-9Az=yLj{@/ƁY[{ԓn$4='" :KS'NIL:Hs[vHw"n{씟t+Vt;ìiuK\~]Ұ0|x+և;["۽Vz48q1_.<<-K@I}np!QQ %,ϱX.ic: 5R QqYS' J)<E;O%b"rK)i9 1ݲJk (XJ+eh3uӒ'6 ,*.x4m7R)9+(Q)crrpMQ*ۏ .Z$d60,L2ˢC[B0Wq؍Sb=FH< Z+y΃:" $uZ^k7PL0C'DîHڤ<7uVT'y9z%5K 4Pw7z1˃4z.N砍9( a7 r# k$xвyy955@ڌ}͛7^ɽQ:ǞjSoJCj}C)$D2rJQ/蘞"@BY׵.PC"B)<)9 '0 =b~IFDtmmEaa2!yj*|?C_| kь#z?ˢq3!i%XgǟFg,+6CG[8;??#???e^~ŗqrrZi|SOO6-~i|_FYR1=@|>Qu2t9/W:_S?Sxc C[ =^y%={ϡ !`32ܻw 9| x;߅/|p||g~;B.+hRJRlg >TX`\~yדXfxO5u{vGS8}ѽ;^sR12m/ӯ7k®Pp!Tj+p5Ah’i! zK 6ybH& *vqˑ:9i#Id7l~ |Dhr>&ϣयLzt#v#]II(vC=<;4D)հ'nEĿlVuK@ĘUuWt vLE磜%+uy4Jn=|LL):G=%“yABD="Hf82P)-"B@xMyҳNu3ˌJ"HQIPla #;CJrҙ0t="׆P! 6]5i.@)m]@g @RAviMTih\.%%cd w{ynVb,WܧsR*EC&p"65lMYFDERO۶7sh؋9ګЙA>AjM5!󢀱4w${4Mc "   uiXebN"TӴX,F%P IDAT mס=>!(@J6V mקWIՊ)Nnd9_ÆÝwcO.!K]UX,hL}|5fJ-(KJ+c}4+J*" ^x,zK;"$-xm' 0+]&o{W<$1Ixc" qYo +xn$GtG/o%+ޗ=M+л1(?[MxǷ߁ G:j''''ƫh DPPJB Ab39Scz;lb='K3-hYq7ҰsOm[-^&D]drl_qE\җ=} }.! ,{6DC'x^| ^ C'N;>b;>3 9d!%wt* 3! RI2FNsS F etRoZD t-}%LO!YEJNmbZd]G9qVǂOkyYadTd q)%n2koZHg`y3)ȳNC11q(z)NCUzkcH6 I'=љcbưMB0$ x}O`?(  'Rj!RB|2uk[;FQwIqa lak])7BǝƘ`s%G1 %Slf)ˆ<j5Y5MxQm#&%fNbyH{'x;ԯ 6u btAPB'xhH8=X=:沌w)$yGs( }8`wnk׏gbc焷sz tBQ:SR/ 'Oƾy- c9kJVJPC/2r/|rBdzoSO=73HMD!9%~??ßƻ.|}/~H$%<J*Wkj}ˉ}s1g~Pʠ<<:‹/Cq&^yU4Um|Tsc3|/{TM[=(Mʫ?3ܾFOblc4RO<~ 9|ۃ.dWY4_2/rr,|O֖>Tsx08:jWJ@NOꛯb>~2jxrFDn1>f7 ϱ r8F=ݗƸ NJƄQ 7{k'jt6! c'9SN (aznAJJC"zP=ANO$~w bgG@&(M =|K#2a qLxiBo9&dC) WؚL<"N ΎRIdzZ?T mٛ@TIɏtWs+MuEt_VRCI2z}ke%5'ZJ$$T#[p~~Nd^Eq2ݏ5 TOCkфelVl*()kԏ,!C{ςpDִnBYT:#q_(JȰ0F=]68?=faRܶquk18|MUjUzSH 'ߩ*r,9 C23bќk\u͠>P[jEQ%_tU<9EMےx5ڮG˩W)c\33Z~Ax;-6V _DM9hJ,6Gƈ}k-FU( 2P<ΰX.~%qh壍FJ(, DD `5dSʫMUL}!@cÇ@ EnѴ- &h_j&BJ(C%s]ڈyk믽 EI~na#+2Cԛ I665,PkXTUrVrնyiy lo} 1QoRպUFܸyj*Z&QojyA8Ӿ0$yCߣ,K^X,89=ID0٨sܻwmDbiQ5 DćLSU["@x۵8<<$~`RPBUPjk-Ǭ,Z!Ӟ|ZnjswO`Z%ʝdATSu\;:6 U9f9Wc2yR(hȌ W;CۄO)PJ]U;UnN>{ɢ%d$S|D3.&#IP]-&hw|u{\Pø1_.0?8,a@d!_enawBI+J?sV E^ {M~hcA6۞Q @Hjks䖜mƹiۭIG9q-N=|6Āmb>rXkrYZˢd< }B TБXzcr!5(jhe칟/#"e~^Q,1E^U sωO@5bhDŽ ٜщB[2 Ƙ,{~l#r 9Jm "֦TZf3-2'6MZ =A˦nPʔ6CY<^B+3t}/SrKI%%u3{,e6ˁ9yU@YIco/'afyߔXW<0189=CݴX̗B7S(D{4)KB෪heY@:޽PU錻  #Few7w+b%95A_6PJ׮]ïoSrg1Ѡ6 0z}Lɥ(8<<_5' Nx饗}|9Ѷ=RQ3q1ݯ]J/(B3 1X FS83h&(8??G Ӯ"0TB{Z%R&3m |p'w1I(J~*4Bu;yzH)`4Ul6GRdXoj8UT1U"D:Y8Ǟp2R=6*1)5 MӤb>u@]|j[3="O"2@#JL`V50-#rc km:@HÀY2Xd &CYw~46KfR)ȔGxA}ֿeI]ddhsJCad~1`6q_lBLڶ%MuȭM2!Ǽ#"&2eέDi-&@ BJ"/}O('ds7nuw i/E׮_jAToks@ Doy0YÝc6C)ڃU[(]ߣmZBj1+hxqvvãkp 2wqO7pvrqnkE&چ7E{09q~v7oTu92c ؄}zv 5l^keI{R6æ@k|HPACȄ#]Q܈f_o*PB!ob@`^ np8:"֣iynA#%^yUmo)ܳ}1_`Sm}!ܹ zûnHa9) q/Oɚb/X>_&^.t}Wܟ5VSsnsg~ :}0w!F%I;eڻhR`֝b.&%vKuwN1،J)Z|[DÇ5+\3/\ZSkG{q' 8">BZ^*U,tLFܿ-Kjquyϗ%%rރT{qL%#vx_^Ԉ-s ޅpIr7D&_ c?6L_v|; 05TgXc}zju G&LJhDR F%B"ӻ\u'K>1=^FaHE )tz") 8]wv$􈘒{[8O <9#}?E'OmӛPCB0#^DƔ^OKO>f(\HN}/5y//P.W/G+*Bc]19)sd YQBg #Tq F -%3ʳE7DE|D~p!9Edb-EAyYbpɨsׄ2{M#YHBp"c4BQXf4W(ٟI+ 4ڄW^~ȏ`_{1Qɧ6-~7oA)65q^z|A^}e C^Xa_dpcZYM0R"{{ Bk#z8EƽwO} :p.?~7V/u9it:C'QM7%QUI>oC?q?v?"F@]c7pܮu߮b ]\wHAlS  &FĶPjpQDD 8A9SeQ"sf5,ᆖZ-UC@P.T$ E`G!!E"8HxDHq25+ 1P К&qbLyC92dԔLuaFLk1SPpkeQbzmjSS 8٬ijFsQ,>mĦQe) IDATzʫ&!εsxPm*oNe!~@f B*&ZTKSIZTՆL\Fkd6tR&r Ц $[^I\,y(z _[i<5U c4rzǻGt}w=D$Sk;68 pn`#cVC(5]@+o%`yVҫg@d-"YK&M҆k $%g(sXo6N<˰ِ9ba@ !n ,>k6M:gCRdYW&4~@׵.M"/PXYs޽{3oB+LFX"GUmwoN1D+jCZUmn /r j69B>`vJk; o9Cͩk U&'Ud9;=|>54ݫj?>>r@ô7n , BԐB)#96MSPFwm2kP2mѵڶ|>8dX7nXp=df6Փ5-V8<<9tKׯk׎P%޸&1hGGG8_i TժƬ,3@ HxS>^o&I{ELlud*p1|^\QUIŹf\z4sZ]3}g~{'۲YÞϐ7TjB*f$hLF  ӓv_iD%58#nC tcTTU*UխCNy?^g'[*WQޛgy~O]Ѯyn~;ͥLGM'G'98ULsxc;pTN2y9B~Vأd_vNIV8})[^#ƙS3 G78a1d4Gf\HMr Ӧ޶ThӚrȅu=b.ISiDj Xa-vc\(-8A_Exa/98,A۴yA *IS1SAmP0;:`p1h%oὅQX73Ԉ,FgBw㿩d k yԧ G?SoïAH ggٗP5ݏ\",|uY\'>[;˿˸wm/_ڎcs{jj>|ƴ)p 88DY;wGda.{/"x-˒\UJc'''~_{uD]C*EYX.8u Gxߏ۷؂aA](()e3" uz}DF'}o4< B?Pf/x7 ,!)fpRZ@ PZHGEBi=&,vזS4R=ˍpܬa!27dM-nkRJC 3J:;#56 o]s8t/4dp۷]B8YЯzS3/ C[pcyBn5ǵښ2BbblDYe}H]XˮaǼp"@(X/1H|qY8Fe%eEGQ%i>9~R>9=AZS]ZZv @KrcZ_¡l} , Ƭc8jr>&+e:K""coۦMZk9 `q$3)RZ)¹ 5T9ÚDh{tF= h)n$3֊Y,z%Ibs C\WU]o9wzz"ϩ\ȳUS0`>Ӟ`V)T8y}o;`>cH898zBʊo $wU(fG95H 'ȳYNh(F6RR-WpWk(P5fE8??GTpcm"_,k:̎:{Kjg$hƶ{-bZ4C6Jqx{GGsxgW/&Ha`{ ^\bϦq̔fm_FCSXw,ŏNxgP~^?\3oB?=LG(FH%RkIzgg8?ESWԘq7fb80ى2ܘ>o&sVߚoCƟ&Cn7x9鷙Q>rlQ:B' bڨ+>Nĥ_~{K%(& )6c$#>pǥ\cIqo_-HdR<#ͨa=6No;y$+qmpIIFb s ]a]w|ͬMn3 À$IZW3Jk̦cqf^S771bnnM)cV*B{X}n1 V1;]jzOM}wXoܼ(N@q=DL@ylvoƘPqۇgkm(JJQ:cgpd:Ix{CjmeG\#!7x]7A\:>JBCr((XԠq&9=IL.[cBz*PJ!MSFȒ3.=ͻ$ ar{cևCۑ \i3x^m:qvzm1! yȚ=2v= ,fմXp^bj =mht 7P0b/BK-a~tXoL5 Dp,*9mPsΡ ft߁w={}אcWro: .y1 mgPu6r *2zqmďWkMM}I̧~Y{o–VJ=̈f\,kO|/"~wۿۀsRVIG8=?? +(ˊ p,x'qq~/~ "1LM'gX|B~|((~g3w/^ojYQ8*kt-N{ox b>w믿aX,q[~Q]Gӳ(*x' {PΡ)Ksd\Ʈ#8v a`&CԶ:Bp[-17]*5#<:?W_}1q +( t|ʴ.%7e1?{ؤt2fra=NO(T)S\L-q bYФXA$5LA@OMYr{ !Il7G7xVRnYkBzkGk0S;oe3x1:]#67bi&B5;Bv8Zv,R\`߷"}8-*^L{8q(ȉj"њo6\7Gf]("8FH,8c弃 7ZY'IFs 0ۮ1"=(F$4KmH FGJbJ*()a(!B9 in"8^hQqC:/PFI8 Z 8Ϋ`Q7 qTG=3 y+MBKƜѭ@U$R!S rֈRJHQ G'|2^Cl4KyqrvAtg 3PS^*Oȳ|3p0 a8!;}-q)N,k0 5i{&vIqDvJ#M3459QW58F8==0M+jfhYQ c\$ɲ ]ggMqx)Sں#DʢuFf |h`4?d(1+ ʧ!hn!b9+$ Tzc`Y`0ְEUc꩛I^4un0/_21 "(BS,H AsO("'qӓ38ܳϡc|6c1SO㢧L(S~0յDyKPZ!^m` Q $ EkIm|I@}?+UU^r]nI^nf^}k7V\*Gz4:~; JN]v3'*%|Y){W*5\ _j:^QXoeSo9:~tx%_9ߌm_H=Grvq_k6 jggXVh]RR)Dsw>n 0fvhꉱH(6 ZL:rwv7x޷;ܞ<6·周>:ec4irJΎ>[Y#^}c*.G^vpOtT6:yBOraW[|fL'5wǽknv3D9^ |eDEU#U:N8Cg,Α+rmi 9s$4V /fHi^J7JQ!-<5:Մ P5g+Fm7Ms%GK8{p0T@re>3 ױp9Ѝh1l>!"MwcÖT3h.aQ,sܼq Bp 젅"g=bx-iY)I GA7![f<]x0 I2B#L9$q޵=@05)nrM͛]j 2s!Ka,Yh:X#n V3b _J*Fssh)2 ҌØun?Y[?N -9 pIqܶqӚ[$o`H8/Hh2(nEA6!t,4Mc6?jtZ 3KERB2FHXC%#1ĬF@o:j8q@4GN617J^xEX;|J@(7Xϑ)~_~ω]g? 0Cnʫ8*Kh!R Ve\( 8g$buB>o>?Q |_<0/xPaeheUqDP7 hgg8<<o| ];w`ij=c6+"ͪpݍG^wzwSx~=ЭK E"lRBXOkwo!Kb -"!! 0 BHW__uܺ}GA B sobtÈLH]`Þ#|yvaQ0W2o6c{9y\,@p%orlȏ;1<޽"HRm2}i7Pl(Kr褜yXOjf,t88-dQXS3zo6.nRcz"2:pZyx-:ᜍFIvo"+eإ}$Ԧ 6.$$vx/ࡡ GPi/$i1pࠣ\qtMBkb6C(<=\uի]SE&& IDAT ֍ף="8e7wcMa)tLS9i^)6M\OD˔0Q)Α`nH֌ 9q jU7N.+A) %G(dI n-E" yI;IY5X$IѶ4 +MBHnvI<,4ul1eYb0yUiQUԜBb]VhIc>:k#ޘ +58Fe,x{FS@9"|q ca3`,('1͉ZM-Me .Vkܺyg(YB'\RÞEB0 c6+H{~4KQW E% NΠ8|>(gҙ I[>MS]G;[o<KEQbu<ѵ=...)1G7 SNvt /j4M\7=Ԉb6 X4K ,X9L4"M "(Bo x!(F c\V8:<1tC+1pqBG8:k%1Hǹf4ŵ+fA'KypMScZ gr k:rP @Iʥk{x?{PM)Ȟf2cww5&@$Nֵ{YA~6j&iB1rQA޽{H=,ٸ!'kb`MN:@Ya G0w⻿{[_)Xg߇|ԐWz>, 7kג >O8==s?Z_k}r>½FU|MPLe޽wg߇^x8~S‡0Mgۿ/}r`O!E T#Ħ)v=?#CM.4}A` dBQ띻wg<)Ї~5 ķ|;Ќ "f CXU~tup%fuRJZ uTC$;7qR%j`&XdRK i @ ,|H!5-@Wx] vGF:ͳaly&0\£* Or" P)ԉ0P瑛<}{eN%%7pM$1$9y\_B]pq]pVJt%R ԷVx& )EwC*bg]#&(.&bB7 6H9y-&,}I/~džuI|p^v*YAHQ GoPW54XgQ׈BxFx5pW7حK|\cP%J#IScFRLj՜y+F6gy(Rڞ"%޼&;i1;:E\#3Vbqpx@" ZYM8\,QU%sE^ `1ee(q@gX,anG7;`j{DqS"M8^HӔZqŜEց#ФY!)_hr b!,GzTu |P754EYU NNNing8yvI]78==# V i2d ] e{oh"q0His,Ҷ"E㚘h/q.I7px')gӿ.0`ێ'dxo'F=}[7 Yq"&{W:䝲rxo[q1QNH {,}LPbKQQ ex6kWw2=7?]ߛv>dc/`{ !ZOǽޕ\ q='M<rˑ쯰}+I$H8 ?; ˝ܧE\%OMq/qz]qImSͧsT-`*:? U{RX5''8Ϗ^ݎk2 v gc"&N{I |7mKB@a AEpƼ<)JЀٮx.`u`7+?}]L#ۂBOb,N3w7#|T~V\"466'=ߗf0]tޚqlt֍X0͒w<~}=gݬK(rħ?=pqEx>ߪm@Ï6:୧HԐQ$MЛMo0˗-{FFZCJ 1%5mrYEX.PV<B"'Eh 5Yʮ\nz19IRr="f3]k@?`$1)-')hn$5ț@)ú`*!dz08xi|<GDUWXմr>M߇3(ECc uwsޞåljH:; T󲧍F)GVi;({7+])bʲ.va49LKqm IR33ﻀ2$wu3P8 -ģG$)HZ=xX11h9<ܤo<7۩h]O޷d-N" (jQU@yv](>@70J7<b1*JдBi]HR#Z0*;G,1J+jY—SFy砹`@.4Md)#+MM1{ބ94sQDpL8;=GX,!,upό&XG8;?'Lom6|#+ߥyW?)տ5޾W_~(9֓XWU|?|+B`\ã#|˯Bc=^z%T0J C{~+}Y=, |~=}x}{.^}UyYCB+r#! yGg0>mߎo~   d q-I1>_|@48==͛888p}"BMD[ċs~\˄Om&=.!,s 7wa 7y1ÝE3<{|nn}Cf:6)ܛc"/&xdXp~2 '}ߎrӽ爠Qt"bT@eTBF1Y I [.Xpд-EYȋۆ 4U()z4671t(BL즮',bLa)i 4 ]C{U uY!d)5;@ꈚÀ$QU%sXgf9zc05 ޹@lT&18N k$M^Q>3GGPQBH8('} K3(%D CD+BJm "=5[jw98F?gs b]r^: ,%4r&rvgR $6< sD/ H[Ck$ǰ@q>x26.h,fP\bV1#amUW쀧Pd lF"\dQ*KY" x~WQo@¹H7p<4jō$eRр7 q|^xEL8MѶ 2uIc6oFQ#B`uqA9A wɄ.چPZHt|MkD7|eAgrgiÃ$qB$( (U@}qbB\Tn U,; ;`cbQ4I $8B4Q"|6GY8X,P4źDi߼ǴNJhO^3di$MqxtD!Þh\9"fsdY3,X,c..pvv39"G^8X,`9}#s}m 9˝Al[5QLoX| 1%:vii#5sʣϾܻw(< 4OtYѶ E) diYƯ4E4p1zm|Q' |6q7EE^,KŚaX1p~~ 6UUa3Ghm!MBIt3i^fXI9`pZQ%N`-V(3~P|CJQl" @@%wbq]E1: ;X>1, jxûUp8gnzޅSlVv!Io1u 0[ +2wQS79qo췎2{c81iO ړOv|tvGk 4w,4o S78]S9c$=O>LIr2- 4u9h}paʅm*9HANCwœz)r4SMUw7r\qӤBCÏ[c'Mj\dݦ=&s7~:Rl2>azgsbT8V#Ndc;|{|K$/U=k1\\KɓSq֙c w 8=o/' $CRj ZJ@yLJRap@w<7 ƄQA۴%DɈʘꍁlPi"OsXg1 v]EWwhlAinˋj,$#p`M0#{"mI:n$cvggl; ŨB۴8q #:#G9'icm3JXdŖВqHPT4"G$tsE Ys[P`PJ>{i[7PJ rq *{M Qa"aW|>Q!s!w`כ!>g0AuPrH 9ܫ{4MCY4u<py-xކ}s KEm $4zaEQt-5R\Po,+ZH('FU r#Dx1: IDATu-R@Gd<Ѵ-,E7%7ҍT$FirbN9)gXCc)9nSw11gYp,`R䰭,G0D(HYG{h2|E58<8D]7c #>:"ry<1 dyf ya6a^D ( A0IBB4KG1%87 ,CӐ}GqSܺy A( B/КeyR29}q|_ _Y= l`A9lMJx-tQĂfY]z"ih HJ+.o;<89 Os2:]ppRQ"qv~۷nᣇ8>>F]׀f< |OXb${Mb\Biޣj!!b>1As,Ǻ c-$Bq!ŷ8XdDqG7$_^6>bgO){bZlὕ#-[Nˍi7#+~]~:Y ]53'NNz2GA B[}{=֔7{Rlr5`]Ӡ֨uU*] RP~1_ț6e)6c(B7^MSi6n&r[ݽ|b"/9c[|qŶN쭬mM@Agֳb,\~HIMXy76䤟4$KRmkh >3b5'9W\xfuoE~d,r1VX!p7܏ٛQ+Ԙ/ eӋ \%8qzr3@JQ4c [8%5\؋) eIZGC1{QyAt \ICI*8yƟ]P&ֳ+MOhYJ9P),5`jҔ0vmacLh]^;ϐ9".c.7<`Rxk!Ǎ;!g Q$;hƬѵ*@(d)d( 2k OU:3N%gYoC! `QN 4AT#ڍ*g99כ, wXsSq3}3, v) GqʟܮgWiD'a8!T\|ΉKǷ0+ xm 7̸,avJ.p(YdyFYBʀWnZʀsg|qx{BRn;qr9pf|5$FttpvYǃ NG%#~@uZvs<*(I,;/V蚆=ϕPhiK³%MRmnl ϣH#cE:9˪›o,ː&)>OO[T)[3#x/yl /b㭷&ׁ]dNN׾r_|/տ+!( o.U'nS!MtMN)(H% /♻ϾeƯeI9}^R>h*~S?z7xq,"ՓG]J~p|&˯) B+W|gw|K_Çu5n߼g Rx$"]脥I;dոvE-{R z[Z1.iae7V~!NoŽMZ'uTl>WG|K|IL{Hޫv5DQю4 qan]J=l6mru[#h~_I,>{̪tkfzf$B@HH!;aq?ލ0zcŀX;d{5! a$ML*3s>fVLpTS]YYy~0fJy]'%#!&+8bh&6]#cYr{S+@д-ʂC0aϻEf3k:Z@Y 7z6^Z!D]KJ0=TOܙֆM]ߥԯFF[E#P]85RJ!3$ٜDC>Bi&zB| Xy6c;wx![+V4^3(!uoMۢ:o9NBcJC!$ތ-~L? N+E5H!wX,C]Sz\@ <'OsLV+yCG]ލҐY0Zk,WK4uab:Hlecpb7^z Q%b$gd >P_+ڧEB};C$! jij%y#bJ;bZ:JCKE뙥D( u(Kw-wfU\Dz!CJjy(1D}-UZ"h-n4ȳ(hbELI6KtC8@ cZAd"pC!R臑ü8SL1!68%5ڡE2z-$1l\֕RȬfCf2FgDN Jkȋbq~G%Ȅ ?f)¬ZX3e@׵0FnqudݻRkh-qwիW4 NOklv*'XQ9ߛBZ?o[W }ס*XcqC^Ӽk;yYcD)h!]S-62 PĢ( ^~e@}Ƞum,5A)k^6PWHm F"@DDXMh_Nd~}pRPZ(V gL@@zdJl ږzRE)!D!hcma}%1T T/G??bIs=adGꫯ_{kȳ u '??xo _ī;w. Hټ2_4>wo/?G%ߴ4AmG?Qܹ{ uӤ{?~W_AwG?kض $$cѳ)k x @[n>kׯ+~eYGRui{Q&qtfEM&pI›m=w%'nH@ENNV(2 -"bYd1 Q-x/ҖE$ 3V(h dFek+%LRU]WpNQ.(y$%d{]ثٓ\wwD 4խa_BwNFrLBL . Ih4J5fJx+ ӻ\&YޛEX2:ĕLHZbAnYfP eclSs8FoH sfBY_^.rf#:&~EL8bأs\ jA4a ÇЙ~YOw.0tE2w!Fl7p%,KHVRx2U6dG#a'w}?(rLT!cvgzxÈ&H$7VutReUb`"xYA:6 U'rKS:2pٴ5% WƁU6 iC'WN4 u*3A[IO YcZhHL3iP.EdaG_,M@U5qč'fF]7y&h!QD,m@i^7R!) GmQxH)I\RN> 3KL\"!8ܘ%U)7pN$!ǼJ&;;!#~d2D_z5hVDŽd <V0|a[t=7eHk٬|"YnS=19665~uFr?]ߢ(*kH~[ c r&2/6vM9*6fWq_J`#$'ؐ@#ʲ5MSƍleU|t0bZ!x iV#0V'Tj<@]7dPEfP150'X|!x"&C4%#C6-V%FGZl5UkTR*X6Gt]GT^_, M"sQ7 r&n߾ elzxuq'1e.%U !`bwȊHLeyfmd6 s(ˊA(SO0й4/B #fQHmMx' ,ˡ>_ͦr#;(^ocwsqAP~t[NsM<֜Wi1-_{~ߓw)Au*sI /kΎN=%Z>1+x OԎ0 Ӱco:u>qM%K~]1_ϗ⌞%_;C#>׹yY] Zu]mjۚm ߷m%ڤ΄ !"(Q%%xi-" Nl桡}lq4ǁط속b>IFMRbgvq~>=2A%*"gz"kr]gcJ!awS#wyӫgb1P?m-2KN1^mX?\>qIm\v qcs'R::VQz$L֔΍t*(mcPJ*DnU`fDXk<<}DP'Ѷ=vj0H}Swk Z (m1އT|l#{ގ:Xl{1RN  &lOUo]KvD2dhg͍C| 8-(sC qHQ RFNДN&Fz{EF@5 S:i[_oK_s,<1~ͫ]۲,PEr/|xo-6  ^!;˨>])}< ?~'']l6~6x?|/0=DL+yH<[ߊoҗ]7oĵWquz~t0[wuISmԼOpd<0ǝA m;dУC[Xo2eђEŢ@a kJ[H!Bj)!57)%EP֒wh "40ba-2IfW^}Z\z`ئ4 K̼;b^(tHSZKV47v8tAS٩{ZM)qv"@lQId{Bn+9DrO+FQ )bIGIify^ ~u^ δ6iDU:6b9+OiN!3NuV~ IDAT{OxLl{;|q6b:b;7k O`S9d>4ai?:͏6V!i6|vzFh{z,(j&H8?kt)Z+JYiJT❣Nռ@8Α1Ȇ# !?`M1ӚdJkH$OԜq`m)#HJ+6= !1w# "8˘Q!$6&#DܹC)RX,+Y U)kt], \%!Cn1cEe@UO5/t5-c͆RPܳMU >;F6cW*"}Z{y0=ơ'rRXLFuZ+lhu~~t}kwk&zB$FimzpÈi))oFӴdJI>V G}ANOOEAr$#6J /Rc퉐0OF1mwCqDRU98#x+W(K]P8??j;wP9!G,AN FӾ0R]TRK2=q 6 1ڶ b\yV3ECV:X29%,"V+ L+l6K@ Ji; mKD '[2ij"ϩn(ݬQH5_'GGd}?3RbzVG-墸8H&4o~#$c%-x3a] qĤ q@K65Q9KZi:u6jsNE9zf.҃䟸4B*ůb{n3Y*0Gp3G@VeSm{C̡~s<$?N8NxD$<:ks*w:( ໯]<LQ^浀؞  3:~,vS*w'{H 8g1S45ɛ}`["T?3;I)=MOJqB{7w/{bgIeJfq6DKbưKnS |7)#cB}3)o)<.Czk0KH(0Kτi*f{ۻi#R:uz(yuο9,\d؉?OH0s1{q/a^v(.Dxm0~L/_Ȍ]f,DH̞M,L|\9^!LJä+1(!3f AJ%D\O4pޥ>;( #̢IT]OGE u= ~X &Q)'7F>F"/ B2(%^'t *nD?hk%e(Q759]n3TGPy",tfMP{6'v۶ Fb~Q"u.ڦ0W =9ѝ݈AeuK)m,\סK\9>&9 Ĉ1P"yJ{7{ѐ&'. BdBLi,= ac,h}ܹsZVGy?ږ^CmtBVua஻I$~ )XvbT"5Ma6- R!J-Ep~~NIacGt1%Il:h$RJ1b?~:׿pp>``XknE@!`g臑aZb\Ap/%((m|v㈜Qp9nDM;7FD x 5'#PibpJH)"2H#Jw#]9Ax %tojKZ6]R4D69pSp.lϐ%nܸa8G{v"p P~xdpwka% #?/~UU?7?Eu@8r0eLueQo|'G?Q=PmGG?w??" oƷ^Bf3Gf w"x˷u>mEny{ G0JCk ^q >ůdLgeg_|1z쭧q|r7o駟Bfߙ%WL` SߩzyGB5ɔN6nB9vlѪB`2:_P&6ˡ2ϡ VS5PVCjs$)?JE=JB` Y-*k AG66 JAHXaZP?6RH{|; K1 L}"weT H(($ (HMbГt]RC* Uش#)`$|,%Չٺ !)N흀Dd8H9ΚsH%,+( eL"v‰ @* DJ8r^I=LIrgrcL ^(H ʔ>" P~a;Ŵ )wDb.BH1P.W0iݸZQ10 PFmFZ-anGPA[ ,! ujIj %rKE*>a\aF };(MY7]/}b0,i6YdYDn`2;(CUE^^5+}:.P 5=xv0Y-LXdteyAs(c(}F(3q.GmjJs#ǀmc0X7['eޏJ='G&5o̵lqAډq/'rO%: q39@OQ:'Џ`㯱}׏x_ ѝou=YE%~\=΅M79a2/Ğ{Xy0ڙ_s29rƣ_Gs K7X~};::ff2jR*F x7bz }ޢkMC]K@)= ;_Jr8QyTasĹ/(^3 5nbgq>&K)fnjp/`q(s| 'y}=ԃG|H}z6 #:` J~HM"]f-?SMFx]Ȅ1{Z.0vo=?^?y]Bp`M?oy"1kwG@c)1R !#q>Z@ha$lbiS4- FUUK|Pg<|xQd2m~2n[zO,Wkf>REKc޻1) |BK)1#"o:T{'T'j)qttIxCR7elBs}dg`(UͶW`Tڢ:(@hi !?g ΂OzGN+>#`p B?軎~s4XPy)FY=!\t_ׯ_G[ww>Qǽq PO]?@kP)chYPv2h(ȋr(1* Bxx{ދW^{+w?oLaDfMPR_}x;#x'/BrnJ+AbDWNVO}׮\?zt[pWznrggP^{U<{ /}pcXs3X<Gĝnm?ܼ_lEU=qT_կ|B'߂cx<ȭ0BI(C/yNyYdB4k-q d ȊႩPRqϯ&򏐒@h/j6qX (Ce_BzݍpaYm ]PZqd6?|wA6]gҹSբbS*=a5a1®+;MBrz2s.bg|ggyb$1s]Ccy"sP|]ץTRRbx(H"^ϕeC )en9 nQyYkX.>_#/r>~)Fǫ#^*@&1}9yOKxn|DU(F^Dy EUU1bץ ]M\6M2:ﰨEIļk8{4j A(mEYY "ōY5LL3L2]_#53hkgsȉ7|} _s[ӿKoo0T>'|Pc'͆{-:!Ka:`1yW+-?gc{Qm~qANqqt˿M|qf]o#.nΡ$d6'\||6?>#ƐCIKE(]Ӣ^mMnhH; U{θ̈Erc"'/zt8K=q5f.MovcS{ݥ~;^jNԎgy_{wB~.] fЇ>[[g3< /"+t'vj"'w>-46D1yyNmHz*Txp>mT%7s,69,焳5"",& Lѡ;9ոѴV%\8=} mX=Nlnqu_&і)MI ! ǽhDa HW[=:lvԄf =gnt)yvk\`OJJyϚ44z'!֡iRwy(Mx(CZ0AqW_|ixv~uBZ`֐(65U:脔x{+Nh*ڬ;;=H6`(a3ܺ>!-|0Jw=V%|pxgwΧO~ꝻdQ>|f/?+{DА1_Ws?v_5dy7_B^q{9]5$A/^ ~r׿5U krO4Q?#{5ܢ*J<3v*\ )XحՂQ 0 (ŢpZh0J]EEz!~r)IHbYY J0ta ܉(6f,k%"1Tj-H攘'v$IJ hPt}8>: KM]I;b .r\p 9w3Nw@=/vv;d~sÈag攫=&݅5o ?T=4rB\"$ʜR]Ce(nN 7g͔F4 !q# UP-*(ci`, F9:i]TUeY7MmG}O" MbZA*n)LAz Ye&ڒPpŇRDYohxQ%R-ΈTD/49Um`uAqr$*y&sHd"Q9W2Qչ〢zAӶ0j26jrc,mMiC7"||yxznh-#amh9zZl7,C׶ѷ7FcLBQH{n#uwm nXcYoRd!+rBChHEql&{?@ k׮y,+Սr˷_ƭoa[o8 GBfz: 8HT,u&2֛-ᮕcГu>k cOK1x)qq!= ҚDnT4ȋbs+]N* B( vmQV%;ƯSڹRhږL.Ƣ( H],[ z&|+'TOBBR]>޽˸ooP2SDUh['*]o,}zYcf'!`49FÍ#fc[JIp޿Z$ꩧLc'1ʲD4 ]!,us큉j1ł!`ZmfmM.\reU`}G,7E^PshXHv-% Ei_^ um[K"|X˩zQNzXkQU%֛-ot, l%#P9֛-3{wѶ-]э,ST * 1L=B:,+DDz& wTͤ Ld dz@Us@(Am,$ﯺ\tfB}?vBT E>㲎IxV0Kx?Fw☘uD-) /y;!-r? z!-f oq${`8EH;4>t?k\PKחcNo28xT_e˽~g%<qk G/j)M/umBcM]m(0`\fDQk[45 m۠o ]aRs`@^ FDԉ$()X:v",SG|#?}/4~⅟Ƈ~?a'9Fg ^O?')MA=u?/xc??>'u}2=IQdي qº 1Ӂo Bu3? 1:gqĮvSyy9g1"0gKV|26V1v|xޏjo|PΟ 8tm/WP B (>:T޾'$>jpn@z_OQ|?9!zO>z^z yf!5aۺ9>GBW^A/~E#j[< qqf=ξ,ULw!܀'㹧oWq8ZPq@k(w=KCǧz x, V""/ TG(p`z0F0BY[XH 2*rXyH8efk; @2W_z{{y-ki*g[)LS,hI~b\7) WcX=qPB2b3 uG[,Y>n]B D95Ҁ"8,$N4T(Gn[X[" @˙D<1~ !nb7gbzY= ޘ ,1#ڥ\K?ԻrF =i->iLF];Ɛ꒒ajopqnh,ʠ( YFb.C5ɴG 4|Pҿa&rQϑ1-dbAu$Ze&@k&x!K]MI]ͦBjv.*0.JDO)rB>9O!I(֋Jz2 N(|# tCڃO&)H5C""P2Jp !\-zFH6d.cO$fXdTP Y z3yL>F(!PZA"+!w&s5l(EIbaEj5j8"2ܽ{''JX,T#d{*EPJ1)xJk̳mAkB# ).%!sdȣc5!GellO硣X+MKNӟ9Y *,EFvKѡ<| %dZcVpE(:Ge3*Ea!:HTeUS)f݈fB@0xNwTV-+xN%懾D (YD^dǕI eYbp\.Õ+l&Zg/W+tmpJJFMd-c7ԳC Dtɩ<y>Q;-A]~u:Ng%\A:$$:k6-|ѣQL!6c1`mNvؼ:;cۦԍ{ί]ܼy2E$I0L\0NؤQRR*Zwz_lJ梪qxp@~6Xk$IP%@b~)G,_Tf@(UnXq}Bfyr =&Yu=Ο#du_%f9<-%BduUqb:,JDQco&.\4MDdul6RQڎ)h1$Noʇ}ATP2:)$1$}/;Kb2LxuxgSPOD"2}9?w;6 1<}j?+̄wx/fÉ%qWl _TYT?t-s܄3;q Tֲ]o6CII #8o:OȼNpEcĺ?yR5U~l&8gA8KvLJ%ñ[䏟Dy菥Ӄ8o ;۝ OVGG"tC>9ynr@fȠ1ҿuMC&İڶd]yNζmѶqjHS*{U 4,ԙn[#}Pߍ$R ZtBi,K޹a\,#oy$`2psǟ64c}RHRo-?3I ycUxߌo< >R4u]'}o; :͛>X\t \|EC"s/esV7N;ߝ"$ D+h-1R4u LR4Fy*!|iyaD6"ΠQ%1I4tADQYk a11tPHcg N+)f /ш&2uP׮2~R3kk&=H!U84#'V?cAw\06<y ( ( sC2np):ߍOkn"p#պ\ .%q eb$q$(ٽNcr=ќ,6Mkڼ׿ǟ׿,rcC?{# k7lۢkZ g=-^x֛&]'o2 `Za{݃1cV:,Er|#unXG7-{i@Ii29g)oˣ%4{ZjFkiB"C8B@ݶD}f1̾rQL fmF#QLk(NP+2bI0MדMTEb:$㽂PG1ZEj>i;LppDkUA5kh8JP%%'id%AS7lP*Eu)&)X-Gu$jC )\ Q5tMJhq4Ν;7w `&q I"ܺu@8ʓ8&:8ƪ(Yb2$Bj6*J\|Yd2ES\?PЋbG$iBu!f)݁sq>J/R&Nӟm@GfmrSDDxT׸Nx~ }P oKn$67@5RO"w9>8SzaD[ P>oh=;3ޣEX3~<, Ϗ'Y?XBi֩Dz|-0'Qg3jOOj8ǟ>Y9M^ϔ>x?i6x_S(ScUz> #ηM1 ΓNMMv]h u]nj45u؎R_$%zpHD%|9 BwfQmT8afGFS-X,&E zׅ!ղ]vk2s,`:˅=܃A8pt bƵq cTrԷ>\:=q'BI dwƏיti׾{Cn{ 9 IDATw_ğ#r8z]XLM GpsݶIHT4}’L$v{TUE}_5??Wuzmr*^ \EUU|Jf4|;i{^WO&x ,*'1bs`!h5!ӔB!WB"IRV=T {21I8 k َ(1I})9)Րf{Ci邱eUvU ., i=[jWJ&eY J81-rF ȳ =ΊJIlp|>u4F $HmdqON2Fs/^'nBzDb ,rMXsM:6%y}~yG8ńx蛤)UAǔR#Ҕqi!]IN4Dq0_ۢj~q8_tQJ)Y{]|=w\I)6!%(}avM$N\jU%H xjD*JzuoWO))TJ%(${,Sٜph '+xL&{$QBNn,DTX[7@ B&/^}Qhed  t܂ ϝR) Dk2$I$M!B4jM+Y0QMg:nkkp2!NbTeEi|)]`S:Y wc;]?}U{?e/O} MeQǍ=lvP"Ԇ7`[ )7 ppx p6.\8q >N2=f7, upg)4PFIԫBSQu;4xõ`ZGfZZ:҈ * b0 E1]̣14ERZHnS׭2VM1%%Q*FΤP8?$mHcH9¬g+r7{߶;k;xK0߹FsJ1&_6l ddvAJ H&3(vӫUֶH2H("*(Yo4E=GPFSӟ ]㻻5$ qq8L[6J#D 'P5נ(YȕLUIk!C9(^5/'UJa:t:T0_Ե֔Do;23 (H 4o~:"eD"40} z5W:56dViTU,uJz_  %GIDIBx!<=Q(#椼cj6/p̦MSDj1$2887}QD($:kq ̶'i{o˳,ZgIΒSBHZeǜV$vs+4ā 5Z[=`6h0u)t:xL&S(PՀL&Φ\kE1 C`$(^۶aAC;N:a/ZR 25x*K$'(uUyJ*a5#4\%QWleY"N(Y/%aBԘNr:8 #pyxvTPWgB4BcP5ʢ 3FJ} JjᖌꈶD% U]a*0NTN5% |>uUm)m UST1/%/ی4}|kN{(BUWHPf Y1Q:M]XpZDGzaQ ֡=b|6frfEqԛ~۰X.PUYBH4%@ghyy>! Vb&^5]<"'pMm<8tm u| S$E'$u[ τY7IA}(][D1Vx8j=c9r~ ϣ{Z@yBZ OHw }&ogO)صo42L(yh/|}+wZPgBoF=pqg˟3^c!]+Wl`9xv֢Dkm:i45@Sh&ov&Ə>E#ͩl1#a-y}ӳ"Né}8ѭNF)>BWp?"rٟ~1>Q)=WRa`GO8.Fh45Ǯaݹ}]H!}=lO z3t%l_)__rĨO&q\,l1~@jX@<~:O+Q}ccsKHϔ'*6k(^>F(p1q}wxkO#|(c}INIMƀ4 F6@j4ϡZGP&Ӛ3F tHtmm\HsN<Ǿ |_<$TɈ׼u|dg>NN@-%ymyzk-"@j- Z'A[PjTsr6F< ,uQʖ[F|:>)E(*hh]Rt=20RHNxNUI8BUH oI Jtvέp2jMCE ;ݸ,ۆ0x(>XDWנiqӴ&2v:U)Ν?GQT<#m;z2gAhl(XAiw]y}7կ~J(DQO]}ߋ˿ mGk=(mC!Y" T,kD­=\t z=XK`6Wq%H9)%jcPW5c˵@{JeX )A1M27cTJBkMdXngaK$b%l!%(kX$d lU8FN &1_),W+Z'9X4y&.& w*,K2}FA\zQ*6S*4uAyd۶d8|>Z](`eD͢tP0qN?K38{p1@j g;ڑBdPL|{!/ ,3n d C׆W% Ti vd(]b2p-A6ɔۦFg{YJEY( Z+4]$N9Ғ):6-mՐ^Fa\"NOif ?IJuR%{St`4c"%N-׀H#K~}K뺮p{w<8G{mG1nmR , y>\rжt8Q,:8uECUTޛsD5=]Z&a\\!M32]-k`7~اmg٨du^)7oma4퐜wIO☈R2דLtߌ]KF:☍ GeIsD(Wvv6VE !ҘPTiaguw%9ꪂ`PuCƗ֬Ϧy>Aӵ8wn'ƍ7)&ynOrxOի(I!#MC\KI3Q4V^Im\gf4_QcdCk?웺tOiFEmms)BA$ nK:o'gCiֽsAr,B%Nt QYOņX}Ҹ!3h' tp8,'??&}zH=←?sg>M ֯)YݙgQz~>N@z{L%%/w {qEo$Xn~x/%4%-^cgtx#Ecr'mN3,Fw9u?yOǽ o L^~Ӿ/5Fu1<;|m_l/.tq2XyF\| |S*~1}{1Gj7" C ω>>\Kop#g x|ACB#uF[@ o|_ K % y/䐔Z 44#Q) *fsz80}"hH (-:g :#38!(<%!~AEU5 *7ctw -chEV5Ȥxt@PZ'rM "Oh?ab y>:ܺu<Ϡ %%7V(W $'"u,5*G1M{gǕ)#HXNh#TMM/$n^ HV: BHe{s!XG@nzi(f?u]iJaG&rwCh~Ds4&EPJ{;`6: {hچd<,$5!ѣ(BCRf"\]ښa`$g38FewBckAs2 =벂1wwK)aD4$#gF< k\8#I"#MAA@h;c?iAF;x-X@]8u/ITJ#b1&Ist  $1B5[!%b"> EY9MCs(pM+b6G-"RU^@!p MtNRpDݬv{| ~Q\pRJdyFגէ`\0Z/Ux%||'?Sx=7&vvvpN(Z2扵-bk 4m>=􈸧A]ptuzC)4:i, ³3@ HB Ѻ6-"BK,'7)m;Hkx Ur5І5\=LXT*o˜C52Ҝ^p%UCXg`m5%5=z 1Z t4#]Lhm'V}ǥ!6Q#8( Ba6kOE&&q tc;^ cUWVr Wv '=2lé[>:QG_$7 >}`aDWSo)kg\EgkMMIao-|Gk~n 6^\tNG@>c:ۂu$iIЎqhI1]خc@\K&WH b"KZP 3sw<=Vװ :#HU]C4M$˰ E RpClv (i)X{Dw A Z)Jò w j* T 6xl%RpB ,OUhZJ%YGFf&1ЃDQXޢʓCgܑh-fh:%i$ yBD f7M3 P-qʢ<0',,V+ضUQ`kk I=4'smK8b:6ZcF]KK&8aEck(i U9mz1%k6iŨ 6sXYNڵNhymUEHMFq ڶF>k[8FېYJ L&R*+x{7n*L3ܺ<%1KA'(*ِ5c#LfXOo(xKmom1ي+:*dfMSt4ԗ :P5"RYבH,"Iiq ymȎL1hqM궳wjL9أr2ql{7\[aEpR( l&ޓY" *N'Y۴h;ګ9pEӴޟ xj|:*-N=NHdd\ DjdYxeUij̦FkOѶ-X*`O uzמ|r@;J+Kخl:EBe8h!&'|iʢ|kI6OX,ͦy{>CQVM'(q6%mahlڵ8:U3"K3XVf&_ IFd4Q0shwwUȲv&F<^IL4tZ(ߺ!$D&S]sHӘӁotVm;54V"N2̳|oÐO(N[)9N=43#aT^| É_Yb=mx@/1#'o+=QMI {}??Hs"_xځ9ZlYا-uaƺ IDAT|?fcl>p]׏E~!uqk[?zLM\c!.}z1m֏p1 8]9%Bxqm{׾yԍ>&!`9i_w5x_ǀݑun>u_rد#~{JS7X~UY^ݯz5] n\{x!ՃРjpW/+Wxa|O>> 6<dOA'pm}n&9'Gg;t=3&=ь DJ8'"!4p3we1ꚰqL5"E +)#E`?&uKFm41CU؞oijN'hr5#T0xiB. y!sA$ eYso61$U]Y pF,7Z,GFW(r0Ęhx_V HR DyIN*'C< 4(kJӈ#hJ]}WD`t 8~RPԍ4ѡ$Tnu-|pz5VB;<:4MӔ!ڦjpP%QH F+ ?(nm A @C+?<d {g)~~;1MSm jJH%0rA۵(Ji; ۶^Zm!cƆ5eyy2[5Wo{ԧ~ 鸞'xߏć?P:dS!RT%߁͛7k;Ŀ׸=;AL $H"%w/y6wur F5<#igOQj7P- <&A%2F :@ igɄ')@h wp]kZ8ZGD;^]8Ag(#zH/!ᅄ#@87t ) 4mgt@hA(3BڦS&T=٠'[Xx,i A٤,mT(G MӺ$a?Da!۵-&99B\1A0Oib N ~9 `A5Y!q&M|">1oo8cjz(NT !^6;«H $id2lpmKbMmӏyʩ0ܛƏO:GyPYjE\#B#?) e t:HGP shc)`[bof -[h)A/6D\4u> T3#41c5$HSZ4ؚ͡qNdJ~nņ0ށ9DZAF{LvQD?WA&qumQLjBGHժ@l"Q<ڎp\4m*KخIh9I13* ҄FixA M@;8MQ% .K?YmZz,,GgIP8:S b]q%8o) 3PƝ}|k>'P M> t\&i(i4Y"MS4Md&4+ (Qp*=rKDqer, bUO-zOhg;bI}l蚞f^%шx*)M3 I"MRTU)YګVŽ9GP+VD4$VjTZ T !%R l[zꦅuH"ګڊ J.[u [ZA*nsb>G subn0ɧp ZikO^6ŵkױ쐱7KQW5]J&)hj*a2 MVtd\:$u{1 BR1)hI-,SpyNmkQVm%/yLS8簿s簷*)ILjŲ@OrE.-[-u/ 45D.pe<5 U9#ڨ˗ig9꺢tr G (MUQ`k6d!KSE|ŋ( Z(ժ@=E@ 첮1m())(1 Et:c62 ?p},K$Y(g8Za6ԙ |)iQ5l[ͷxh!"Q*d>j8K*aU3g9u+%y3VwxfNS)>={|ǜџoϒ6^s~Rs8;y)o=<ʳ8x__]Ls8ލ+N>Oqcu8^H4ZÐx)$g\6}v?|vO%xDj~= ,(--_"G /|]wƯ,| 뿺v߅m|ew?Aʌ~ o_Yt<$x_S?s{wz@e~g#qc=|~D<^#CE(F@L/g׽'O%߃ݓy FaXwQ+?;;~Ou;olݯ?J H>f8|s"~g~wF1k[|?/"gY)ƶ<$g :Gbm"'Ux'u{`ߎzߎz[6?iF٪\ x}?vۑ~}C=_L2ZR06m$nLʗ+!MxQ*R2LT}ԥL|QA)R#ڦAۑ B> Sٜ, "qõBX-:O Vm`^R1P $^+>{¸F%! UARʡDs $Pk^ Vu(e9S4ɝu] I8f "z'I NblU@c॔mwV>! bmK!sRb6BYrߟ8dq|- ;"X-: "JbUCsS|>ט;X0ܸ~cuB L,VwA.JBRAp~W'FGW]w:C2stHZ@k;EнucT)eFXH9."2E+lmm#RyX,Si:&Iiw^q-vv/u>/ }&R#!DXnW-vR6PW;NwW>a|a∎Euݹih;>z_z$ַMoz3>'䓰] daYCK(JEW7d&A@QG??w~(%Բ c{}݇~k_uTW=;|򓟄awb⻰X-:n\ҥL&X/tFHQ>߃!*5jJI" )!5"; Z'2FRZ׶)JU{ z fA lL]٠m*4mƇyu' [;HSLsh Iđ!njPߐZAXPXE+*H6y_=(ZKB"t6 t~vM "aB=R@r0H)W&Aq 1&=pج[oZEJ@B `ko>82|yOF1׏o$rD3UuؚX2xSx(U$ipרZ3YkjU drTCqa6a!&$ԅ[U uI[xMÆS@|a;F#NS((HˢD:h>I@F0!M+mu} -Cpv@ I/4$IT5JYtDm(:!uV{H خuh_$ѵX.WMFƦmTeIbe!V QC:k(NHs:b EvfZӵXL;im(:.s!P:|$,4E$_!q]JJӣDHcéEUcXgS!(:qbxeRBJCw Ij.+tm,@G岄b(%tMG!J(IԌ I$70syj< 6퀌߃89ۮl{w2tv(MoX!2U hH u|JEFtht";8q\YK^ _Jy10d#~88ILtP]qp4b:2Y[Y*NXk?vmE GyӾIx6/C wvZVP nZLs#믗kEQt-i]+[GnEbIQ爀5]q|ͮ+wwڿp.H/ 4,zcn_a)Xn)av6/>X).]܃v8w).!GEg?9U:iw..9+#~g~o~ыA[NkN:ū \|._ S>g8~$җx<ϹڅtC?vL0Or È| GGa?Vrl17\^ƿ=_;qd^S:ŝ/A ;mjr닿?g_s닿I\5'Ϝ]|]^_xǝ/"zM'yn(/Uo'O'[ԁC.n~ yphM&^+SLzwN=H>{of:ȣ!E]^hCal筈c`0q%>wu[9{mq{in'R׼{ﻷ+wLzZVV9^tm~1)'yY__oٕIt` Q(1Hn,iılEYHEI"Blv Lgwuuɠ'B7K ζ(fwk:hrNp tU//i>U9qXgb鵫g-QH_QJOY+oH]ەEXG|ϳ,.oYP wC]y6TeM\F"ySH0 |c2g̛4=&}I4X_`Md__^;ATUt6Ktcmh:+"k-aH/Nż@ˊk{CePBHbhJA:GQmY;dRG'kJe x~`n6kע2 n: #N2J@Ξ;KUsϽ4Aanl>n|-G[b6dÍu'cY gN:Ӗx* |oTo xLYwfn6}ӡKH:(0MeSW|W>÷F|7~O~S9q ^{?D^M]p\rmlop=I/y|w7ӯ|2\5=0o@)ǣo,[⥋|+_ڵ+a*O?0<3\1zYk;X8xq9ԂN1Ԃ-2/;Mq[;󒼶0v\ʏ0Z)qUr<*yɵJEWFb>CQɄmL BٌIC\ߕOx3Ѳ8hmQh2Σѵ%KRQV}D (NQm![yaE-KŠY2 r *UZV{։Ԃ.T'0ih߯j Ga0]S؂["ޕXv δNY,0V%8A)ţTT\yjͷbKP[$eSh/x3,#%XtU4ݶojt5BzedlQUQʜ= ԑU{K] %薂xga WV]yKt=Rt{}qQH`BvEA$t:[U%<'Y2 IDATГ9\m%dX"$ a#i(9MUf3$&OG7M`4 z8[ͬwنD/!몢"?[Ӂ/HoY,t&DGLۺ |2q3P|&}I04E)o!b!l }~aWK{8Ƴ),zҭ * cҴ֞Jt]X6MD Ngmr7Ibo|դ1^^Gg$qJHsەqM`8d<yFt=VWWڱXcmC'MLNqipHEc'.<3VNR糌# ,#z>y3'c$eJT%aRti+i!^M9ڧ++yZ/ʋwS/ i2NN&}I!7'-lCK_u&u]ve rB(JqH7r#{X/NDN\Pnx6V]u(BҐm^Wek NڕnHS:+dw7%*Djַ6;2UI,g~QvR667FDQΘ8}ef>' I*$($aaH'M}EZFǾPݶwV =/,w=Za$k,Y&ֈ#^ C=mv;.J5w8& NjUIc6pƐ1<ȋpH4)kN*ȱX- E1PV9vROĠTdb@#pl>wPW A,_R1! d4Z#e @gHxÔC:;mo6^AQIͼX;4Y/{YZFԾmuZLVT۵(uLB[{D;q=J]gޝ=e﹒%s#G,9B Sj>辮σ:lxpuw]?k|c}Q?AO$\Nv%][>~ǫ}?^ta#Csϲaz{:"HkY$n,n[ߊLhrmZ>{wd?wM8ދ8uySS 7c]Z8P M}{ϱ C_1ɤL;(/w6xkĺ/,!Ǐuow{V)rԩ䡇a)M"{=֚;|).?KvkZe9qps>|/*Nyn{f$MyŷR /?WnQ׿ﻗkqwGĩWnhu7ti_;G~wo_~~)ك۴kw>B:`[tv U}+_c9Q?R>l}_<9$T'f I'(n>ys칧./"~!/|7*x?16>0gLSWCe-шw=t똿%?|ʺb#I Y$ag{L_[lWArq֊t.5MM;4=߻cl>C+O:kZ0yUPEݲ0 яVVFUڣ1F)\mH8=i|h/[Y$(\{/&-ɳxB.q^tF"#pHJpQc@"וQċ'L4^td{{G ^쫪ZL@'Da@X&I"IrH@(ө,dW DY4uu(BPYz]nze?um=Xx:H*$l!4ڢlu>ڪG5"$ʚvj}. ]7҈@.瓲«t",k鄜AQ^1a:`&JЊpҚhȉkwX0aBF$qKG/ @/dS~A0dΞABF2c41Auwy뿝~}J 4h ڡM/2%%AX7Nz%|׻{/A18/#i{%#X7r2$g\Qo^/#ɂklNYxd<ʵ8Upo8<>tl  f҄Gle6F'ĮDg+d29k@̸n8}Q)M8P .quݬ3#7'}F(QH45v6^'߸FvX?>?] SYEPCjXzC TbMQM&T;;\&are&dlCOɲ V ^{[Ks,(^Y٥@Le_ѲFFCi0[l|pBkQς-HY+Ak(]9n pP;`u@4 9X[%Nx qtӈ@74~IkKAKӎ dX`(EF 5 :4,'trЂ`JcM3!Pʢ)|2Wطft(u:Nn?Bq\8-:;Z`+\SSs,'g9Q(vUt6N*J=,ˈH O2ڰ3%D[!Q9EUd3aD`"8jvy|2U5I%IiJ`Sۦ!J"{gN&# Y.ׄv0-UhXMULEcXBAxg8i]}U'K1-v:DqDQ QɳdB]WLS Ehe"Ϩ8bkk@Rd~&%q`qr\*1乐:j,JN<H(CrMke^z3*tŤiC^d`ZzCCP) ~MFq`EIl:_ cʲT 夂e610:( fL:Mt !y6'4 G][[! MB* u]=a AimomR=Y.s1oPM$Bs FRFYV(mP J#ꪖh8f62HڼnbR>UU25Ib:_>ϦD&H4N2VWQ5rk%5g ͩp0(򜢔sYQd\[wbk4΢.Fc€Ҝ>lQSv[\3:hv -HN7בNgQ'ܗ}h›= ]S]1`o|qui7z> 3(%_矛%|mO!cn!ŢbV~{zݮ 8/ޗf_vF%b)εitꈗrG[>ͷs7ݽ9~IM/:;_ >uE.f%Sx+^ 9_ #?0W.]<=sYϾiBK_Z>[h6΢`sO Z{'<^E"a s9obxKxc b_:ݞt*I/PJ-u.c(e}ULŒR]m;x('-R,qNN%T90,ϼ"RHY4uM'IX]]agg…cYxnKDHu-)_<~nZ7mAMZv:LS^o'#$=NX-eIkCLsl$EkN:_ɓҿ%'_"V]$*Zc[$es}$IyӛD'tM/ 's1 BkAeK B_zLh3gr<Զpùgʉ'IdLve߽s({PM7Ip#Xh 4`, JʢZ]z сs5qY[bWUD돑Gkj\`kK];ƳNsr2wZ%uz4,e{<>ė﹇x*U}ݻVNaDQ!:I1:"._l*h|6Ս7@M⿵&I;bZloMrTJIJ+kH6Ϥjofij>,Kkqi3E!N"/r4e0 6ʓu$qCUUbZ !8҃ d{gKLN8:i$d"FJU?pPNꪒc ;H0VfQB(jSuU\eońғ=L<9 EF]I:7 $nz=/y(fLfHDO u:)?ޤ)r2~LXUq;v(BZ#4Nmk3ISHF̧Ƨ7? 1q "fٜ<ˉ%& iGZ,⢦,JQHUBHs"o-coWw*떜W2U) zXHe?`˰?ӕ8M!"T 2xWgwF(U%§h˲Bk8y$Vt\$,s0d}M# ܴ_ש z29kǎF"6]nst=uԍ[L&Pɸ5U%$r+++R q0LS0"Ic擹1Du ;חpEF-<X(qeB\+n0Fw!h#ڢ2Ymkl<;=Pmڅ$]9_M,G̏ \t0ڈQKFo(z{W\٢2F+Źx4;.?^EW$qBagg[Ǔik0FEɱc\O $pz]'fV(68.xZ EYJUB0L^Cgs{( ')$a{K?lOO:f%Ҏr{$N0otzt{9P A^3k>Z1TX,\;[}H>_vn>hICmK>sO&R}9S})iӺjg^=_j:\?To󨅢o̽wqO܀ķK0 :d(qXt~OBza:}|]Y!b\Gc/:s/jh b`1Lyj/"^| ^.u}GOpónU}́5MW'G?7|vs,p AڡY7?)Y.8q/yH@s-w4 ׮r $ V? b[[OW/]ҥi*C_^|p'N?w1<%R|6M[i"Ȅچy6' #.J+ojC 9ջc/ʲ,Z`7Hz}TKҘpKHm87,]2u7|bPu] BYXF 'tx2`ʂC,(E孨^W5Q,(`~|ӯɷ y^tj?}Vm?Iv1w!v'.-NZM[֑$ Z>c 663k'0Ѣwݮx窱d13+<=DU-qʱO,eMl-uOIXK[[TI/i$FSWEQ}Mc)1 \( Q8gHJD+1b߈ǁ i1" IDATkŋ6:hWO)8jfiΑ$(ЁbOLP4UM]Zv(*D^&M#VFSziޱ=͸ aٕ>n `v%HhVEP6ɔḺ+#V=Bא'l_]c#rᇹt$d~9j(, ޖHV7mL|a"- Iu@䔡&;8!h`k2secW׹xu.^f}{4؞+#V(Z&ap4N@)ÙK R".^H6s✦j,In%-UoKDƊQe8qe666I0P, *\=e}]ЪBmBNX/29}x甦5uQR&9)USV%ш0^OYئA0%[1FHUʼڦyT1e$(&Ϥ`u(A3y.$A8)n|.k<3uUu-o]UTukxYB'lomb<0ɋt;66<'sC%(ʺ%ulY[]e4Q%Ay&bt6% CY0erp0d>(#MZk8M#("2ƶk87,J55$ŠC{{UVҝ^V GCL};MS)`rI^{(RJ +14( $ E1eUY>1^DZut_g/5LdՑzЬM%pc@|_s<#}goފ't!w.zN۱D#ӫ]۹#Oɶ{r8w /wOO~ny^83wOSAe%aKle@o޲kw=E"Οk4l֥u?Qvqyd!mǣ'?nva ޻=ܵ¸ b:}Ahz%s'O|2_|>?N'OrSoϼ=gw~1{#__80N7x3g"ns/׿EȾO*v/~mz /fϽЁ Ϲ`xghG>'zw^~'~P,nqwtJ8sY?yo~w)~߾wC76pK=~z ?x eݾ o~ǻIJwvܢ^$FWɏM,;Zinp>GO5uI`?wm?~7x}7e?_-"1^$taM>?c?zyc2pC'qO\D!糿|۷~+o{<9ϹTENz]]h8dN` ምmNE8W,!SUL>ً},F_)xHT(˚dL]A(J)676S\I],nF w(*P^lXыknkUc~>Y8t-^٧ Fkv-ܪZ /K-ZMcho\cˆ(5󄁘brdEJ t:ts}407r ;1$L0J:yq1^װ:ZӯG1 omo^>/k},F߭X+v8=4x]؉M^W#_,KCYTK,"XGGro6??M?fI!ASO<7FUXg0fee.u s>|{ZZiI!WRqfApހ8?]'!,¨bFtShK c$-)j1X瓪ʠ4ʲ2 C:Aw\'vqfExqu|i NJTk@nmʖRRSs4|hĹn <\mO4*1A]4җ… yǙ ÈҖ$nAoE&DI@2}5YKQs'IJ}_.npX~og9yQRV%I Eb1^q,⟫D b4<|7xnJ*)6+P4q[ύ`]I7}.84tV]rmӦeISsd9Eq^מ"HH㜟;Hvw7nyk?WhlVIZTUEa/'ogeu$IG)d3_g,IueEr]k\]{c`Gd9a`_J"؏qX4N MS!όc& ~8&Ѳ(JYFU֌hõkxNXGluMKXଣrt͘N' {Cl2E )Ym-aP%iq晤3L &Ѫ9y[[E@h11VV$1W*vdR8? d(P P`R~{]ll:%Ib$%N"1,b*JL{J;:Mс$›c9(Ftpe #Qe8`hv3f C>ILeJ)<˙eia0[ G#&I1YcH.ES%Y6QL>?&;]GA 4ﱵՊ(H|.8nÀ4A^EojKlmI;]o͈Ӕ.Y__gh4EU Fz6R7Th66w{ AT֔TG1q"8 4eYpYdc}0ٝ8ym(˜bfM"&;c k&#? fЧEQFloرUNJR[PU sLv&)J-̙!Z!t"/)ri"A "n+}&)J)R JWV = bkg,<1;G'>m>2Xn)jA`|%W}1ϸXߠ(KVG+lnnrYt;!tЩBJZ<&)ݴd.flJrM7qEVWOTmP9шړ:i}MSqyE!;;tҔSʪTRDa@>[[[dyAۡ%[ل3Qo@7;؃߻ݾ?S?]s|[8s c}s /w*o/]\|qwyi"tLU,֡ w?lҗISŸ'NeG$/ix{yn;wpei.^x 7|sRZSd8}`/z$7' ǙϦxcY|N&K&nd]Z̴<sO ]['Vֈg>k^CSkk?) ڠY!58{%}W x/cY;ܽ8wH?Q>ߠnj߳~ۡ/~QDO%TZny%/9آ(?^L z,|2gE7֗(=~;t:lSڲ-]t%UUG MS{DyI`mP^Ee 6 EYRdt}[P8hBP2v:u#fFy U [I^mB:EEfYnB\∯[Į0b!t=BXYx+ Чq&`g<&¶3{o=ZDQx<, zm#}>l1Qc% Z?B#i0idB{ڋ}T´X"K/ZE'Y-ۛʚ$=@{cXQkjlU')M(+Y͉ٙ'H<4gNB+xE׹tKJePZV)yQ>eAW'hEiALSIW"u&$sβ˗pF}VV%1fA1&ŕbzq_t+9z!=K7v޲94D ۷a`,e b^ RQ|>(% N&|a/.oSلSXkGt=ƙv4A;ܻu85qDGqLTS(*M{꾧wfh:q:phzk:E;e쬤,b: uZ˪X=UEYΎT9:dX KC~w??/Wy7yc 8G wɧsR$ orT<&푏p%#Cihxi׼{XI'竚EâYT'r^ٔA%4!o.WW__~/e~W://~u^ʛ19L$^&iiMBi,g:d['.łYRdD8,W)Y.Ga*Y=)~ؠp+MZ\JDv,W+ٸnH4]IxDI,v@G&85I0l:CE~"2$M3"4<sVj^I4 y.b1bT` ވV;LL&cB{9DPRdE X5uX {m/,jڎdW58I1 ~ԍ)Ω&xGhǛXa2&o{ZI#}:cpj=?;#3"g6Ԃ_-IPBqw=J#|S:dY. Xns'!o{[NM( Z("/F\Coa88Ȑfmӈ@2 A6Bjn'sS@wu9ks$a0: J2@3Xre-Cx{fǣ`@В8ł"/HӄiVg"LMMƄjJ,Wއ} XA1 I<˃-\oBvx޽Mn}d4}2hDۊCyMHXSKyCg8k75acCt}֚ ?Y.*(E :}<svvFa1FD\ {ld"c:mhDTMx2f:eijqAQGr- byNCO&`=.%IXiIVlz_b4f4  IDAT4Ʒ{,+0[Y츭Bg}[]X^ƺ$~#?)rf5((oyރ*s]&냩7MT% {e|<&÷v"';|unWjr\]!ޟnV;jWמI?pk'3j}_rdw>{瀻"h:/-M \9,jD]z%yfbYoնr&M/dz_^}Î~u-7]]|ٶ_kj_ r<_߷꺵w~3ȔSk \`](s֥+]oV1/ o&]ߵx~_2{~E{3߅3OhZkκg\/ӗe[;Ljn{O?\j]:}20dͅqn\Xw/Jz Ɨ_??)Cz?]rQK\8><֝;מ]s|9/_طb~nΦh從<{74Qz=w^|<~: z_kx $;2M5>'Χ_~9XҰ4MQБaTd8-x|rYՙǍh Ȣ2BS=O{JMǗ_]3t-Ql^ 2t:3^<{8`N?G/\Ja8nB0Tzy\l׸j G~G9==gѴi,,vh(☪.E }+&My1ٟտ1zb4bo{yBy8:|l/at7Nݢo$]dy?fE0#*BV}iiKCAP$-I5h{QODIZ<0G%O Z)nf,kG%y QP75WCב(Hѹ#D{iB޽:. pa 4Iu r9DQ,Ba!IWnܾOf Qw-]x89>奻ϣs, .D'>!6 x]GDD:FG윥b⼸E<>|Oh-}%qa`dT;&Jm$;Mr~vAL)ٌb̰E{#%d;D3xO4O~9a#ܐ5ԇl+Kz~Պz+ڪ6v魢kWZT@oXvv[׾]w.^~@i֡"UYJ& V!a+ƞrDX yuQ%Bt29;=9K}7PUhxK޳4i&$@d;Q٪\`9?~L۵Ecbzyx4,<Ѵs^p4z't<ɲ,q\"ͦ8m{p"Su2z<&a4$a228qlo!ު:t?g4 Yn1*՜)R8(˥/a,HmtCĬV%YoՒ":;PJƓ q_gYƃ?8 2eq /r Gd xgBq(dŒl;Pip֓ F{您6r3|ĭ[XV4u#9"t26{8=L8>=e6ZEIbsvvN$2`y,M&OSF1}ѵ-I9]ie!]x2[M;NbV%*b\<<|Y*S1SU%mQ#<#=9>9&S4eUBjU1OU|okIT Z Z_`dIJJ$}QnD\p8d4IY2/Q exWK$BRfs)Ce]ZdIƪ*Φg"g$2Cƣu# Q>;YwBZ-daLjYrG)BhYB6cs@hږ}suM? ⽽-7H1J_xƆ'2NȞ_4^Y}o6y7v6zT[~7|Yk9|D.pn|~wv.겼q'd:廿}瞿ܛBpե.>%(oę/kAwN&h쇍C_lxd8gMw&MR;8B:{G)E%XZXg$:w˥8Cib:Ͼxgn< XQh4iꀊYF߷VKLpkš;IJ/lGsɓS>ggt]h4/9d鄮mE񞦼L,ɋ41wı…9t:GZ879IJ6I6uL2#Kڵ,&UC6뺠p{EAyww 6(Dw?HMGk8˲DrM'O݈z>{D!* \D\0≽6wьu]orh4 lf\o9i{;orE;$qFL5xSwn1#nv㜗P2xKj%'(%4#m-F56I*9Cc{K ^|4.HY|Ms8>{PJ I#qPYKO|^2DR5Uɿ3[ow-i*fMDż|+_^`! YׅYm2JǓ S$N6.~ k˘u& ͫ"m]+_r vxpj# kJXK= "֢#5,Ez.KZ(ڡ4Hl>g`H0`4 A)bȢD ZSᩆAJ3XLn <>܂ 6rue!#5[{57\(( By5Z2nꊦ(W%mY1C׆wqz}}胀ګ]K}po08/BYぶm Y (W+ê\QUV4dm;5&40E0齧{|dYF4tB*Q Lxt:l$c ijg騐e۴h%{dT^x (gY/ӄt*NN1!JMq]t]K^HDȆ7Dw锓F(\.L&TU)׶5< ggH-UUaW)$3M%b!6]{\ٌkCtJ4m5#zݳ/b$R75Պ,Xv䣂۷nQjAuU8P=m&1ǧǴ]˽X/8=9eoǪZb4UM1G ,\X-yAļw=!uŹ;0L)W-k~i;>~6d3$/FgS~w}؋ };-׊;o%ZmHUYR[b/Eeкhx |]ow5ZfVU+6^rONM't /⿖= O $1y1EUWYxTptrh4,ˍ1H4oU޹ó>b$<)rh;L$R",WK$e24ۜ-api^#F1{~`T5FE"Tsɘf!LhN}A^D8 e$Ir!$ XW.(?Z_O\i(N?zv?z75Yڗw`uIڤ^~rIp~QCΎrU?v [oz17e})wq"z47目nmEՅ;T=x CdV3:$Uj3Br {wᥗ_vh^+[WU>aWDذȇڕiZ&[}oig6|X]Wk`24W7b ՠ@v;PVu78b|Te)_d$?=>9?\up:˔Olq+nh>0;XzPm挷z]!1utu4$i" `Y#㔎n\sHu2A Α I{CÇK ٖeѵhH2p\ 4zߡCa;k4,ځ8tUaL|orI&Y<*$eo6i6-}a{VU%HMdH'}'nsk\87mSSР{yAuq])E'* vZCk'OTmc8 >`.LotDJz&:[7v9γb<*61eYR0ZK[Ʃ M(K4#yqE$7B 'X;WUu(ǛqVߣ(2tmmҔ"K6uy_% R1eh:"g4S5q8}"co>yKm/[K?fuF\ q@w]Vĝ@Ȉ;A[ .<'4$R)FHy#2gpѵ9;=&ygywyͯ幐*ti,N{"FW{+v%U[9kZT@@Pʐ7, eUqppg<&IcFG>`6cԶ% /bX'T" CkwV%9m]T5Ղ~&oM^8M%##>8O9;~IJ0]Қ87l64g>9g:9i3ǤyVp۬ѴA`zɿoJuеmb놺Y-⊬zNd6.Jw+]6jB la)0ihbFI#Kq u3X8"n)WK|l:D 7ڐmS |аo;A*k* IDATWI(/i[a<(1Nۖa IhXІ,{{)M۠QQs㪐=M=I$$f\.)F숢B D|%8$Yʪ"ߜ/fߺY\-Q^kG׵x"0\sJ/Dc`qzFg p=ѶfPZЫD`醎8b,axN֑#%R0 4@V䜟srVIF5LgSf68[pzzѳaGZGyANN'$y9YଣVh=%Mc=}{.u`LDvrmeI*GKs88RŹ5Ҙn.ݓML0eSY1 ym'SNOeo0 ] u]1 kl|_6 g U],KF/  5Dє5fXF: xx|k'D&bq8(W+T҇(ӳs1,W+ 4Ҕł}ZK޳SɄxBLF#e>Ѷ-xY{/<̳M$Cwژ"M3aUF#I8<#PnpFkٜtJ]U$u$"4%%J|!H~8 Dq/LS_1ljF']?zJ9NpW{`eRW=b[Nؐ}ޅ?*87н;~?Wݘu)Byq$$O%j yrx?~GY^}xvb?䛌w}KT R'7|KmW3W:}Ƨ-lH{A.Y5wW4C|'8"J<0W2~_:n;VlMs\# b5˜}+Y&"`Άw|g>0z~"{/ ?'i,o&ۉ.So`Q<H}HG;%uZH>㢽GGkb<˯|lsːa}z!ņM2V!^][efEC1'dQck_RD|<44#HKrKV3XrQA͍g"Y+HT򴬕|߶-&d: C{L;tÍQ!"yy׼b׵u%*2qda@9IX/F\[i 6dI!G@֌qK,fSY$ ѬT]2٨t mP o|,K< d"#5Rxo7w(鸞'8mFxyč9J\QhNms8ȷ6dYi(P84dm΁Dͮ&4]7J4ǣ1F)y\}GeiLS9Qk5y8L"%9:o䂋# q^ZHtdi&yֲ7#g|_ebYfBI*P^\wKXT{Ӵ }h<&h5%q*ЭQ1)ɂABk+/DYUfS>o7K}>qG4mCA,4$MpvbZ)q1]zA^jq)4G4Kx&U- :Rbxy %FHp,p]hxD&(Rݹ~_5޻/XDֿzm?(M,LY|ځV{[=bi?cᣇ̦S~~xď)WEtdTo%Sz҆~}mx嗸sCfqﰃ YK|9Mb6ͭKYEu{wqН`gwYKZgd%@`#m0ZErʼl uNfŤG)XTŤ@e""bz@R1U/](&u0%1''.XVUcU[7:Km089{q6B BcQHXyԎFZxoɌã#y=e:-pPd iR+NЦa#T±w7Bܷ]q8!pV"9pV\@ʏ"MhJA,dX~]u&{C^;Vˆó aI1M{6O=u[5[7Pd;H>()DoUpW~m겢>[V5U]u]Ck­w(71~tI]w%8dQ8dYd2"Z/IFjxOЍ"uʺ.4Džc72T%g'dIt2z't椉霸<4k Y^`r)JD6!&;`inID#EuDO]Og&#VՆ^džx-QdX,r,"CVdi@{A_Մ$Q"- i~$FQ)Ki9ʋ;$>iFyQAf\R !gP!OYOSF,n%&;8G]D"Z BD@ǔccd9 5#Sqar'c"/K COdQJQWi1ZuXsC4K(' Ib&tM0b}8 nUpUֲINsʲdp4Ӕ'|F]VDf2PmLg}}߳Zt]t6GkŪ*[i70mqGk٬uLl}3MHj }+ *Fc+{8IfUIv4MMܾu*XQi,}oY.Ju洳Iu2R#NOO0qcŊkڰZ^2ĕR<|t}HZ 4M#Xn|$'cm:$Zɩ)d|O4ENtL)~S*f{s1- 'Bʋa艂8z}VUIMLI K&xo m"$湎a&?d_G:.( Ho${_Jþqږ+͚uj&W_+^dx-.li oMqxorW3orx? ~S7s}cO'W>W o'f^_ܵyJ\\ac."[&8oP˴Ks?w p).#"}vNyЯiPk_!.4?|p$[zզ AGz=q7?;ԕ.}\.z~="}k7:p?^Å[_(z^x{M {w6\)?|K_$H{q IwS_gqoݰ;%(j12ۻد~m >z[{hquy^xҸ,(t$nt$*] Ihcס k[Zᬣɰ21&%J& &Ѯ(dU4Ib6jak )#I=Ć4KJcy]K:<|'?ɝOsC@J*5B+Qdk)W+MԔ,IY 4˲e(ھ÷~,ɔi8=>%Қ4LDϝ[m眓ƷRđ!It7o5hD׈Y)h4ӳ3ޓe9wo/~>1VhRZI8N],Fo0yϧ CpDBts:xDwz&c)>ڭ0h&> D!k .Uj#I֔ /a8XᄘBW CbObC SysA1@A֞8H(I,"-ba_4 Ơ"UDRm6IlES%Oc궣nuzlHZ^˅͂~',&c.HJfBơ":}m&ŝI{2HҌei"aӌ5!'>"V19[[=aMX׵ Btm?zQ&v}O4u˗}.]ۑ ދҚ)kEʪ"}P C5 y%iű'BD ݺuG=U}۶YFtQDU$] p|tb`>#)^Z.ۖxL6PTx):{u 8a]Xk߉xo .*2_cxm+Ɔ5Xe><2 3tmOEL&S,f9;NiNnjTe2)/"{LOHc\[x4dAX8bkCh߉DӴHMht:X7m>wn EYbB>tQܾsls^m2b6Sy۴DqsNa&jC낓c4e4Q-鄲}e]: N"5,)ˊ(!JDԕt'Ir$IRWr-._BbAhۖ>dW2QN'{EAfwY!Q;!bK6%"y a&I1'\(/]S[$+DSM[)!]'c>锦i(ZZmk<\,ẝݥ:4fYp 1@x1Ɛ eYJkZ"!GhL&Q6kI}a~ࣿ;셻 woeb~va.P(pTxϻ-6춟yCb)o{c7FHz<'yo!θ`wn7{_ eU얄owiٟ /¶/8?}_K ,b:B#|NFcH)`>r7#>Ax{^zuɘ~};S%,GḿSse5x ~巪?rZI=U[Tf(^,?=}[»ջ'>n\//|啗*E+E%$qġ״Ji iv-}Pp_z TvwяsEe{6/,yH9{Y /O n$Ix啗CF؍_|}.J)(z)zvm˲] 9X+,;j< M3L1PGGFXf3ٜ;'\RHK`bH6Ɗuwh0:!  loqGxSo2L\cu,(H6 (ى8O'vЇ1+yuC%|K6s/ʢhԡf.+)4mxi!ISRt؆ct}K]7qDeὣm:F5eQRF6(6΁1tl6q$:;C9 " IDAT%G9])QGStr>Ŝ,=kQ3Mr꺅aw=w(!Ms^gz&JG(e^Y#fk^1yV K!yС V *lJPm O"\t7nOt:e: Nlbz 0,uSXe(m0Z9uh#ߓD:ܫCp-١[wBz(uwUa_CwI }ȚC,'('mz&K݌~7@{oK~?}b}XkN: l}ףƴ0H(k~wٟ(k4+/QOsk_-}l{9XkkWr2sz)FЊRI xn|f h̖Y|oƭ۷Mg?J֖]';JVQ;+hmP o4G%CE Os=&Ak@R.܀zP\WNc8GYB<eF .7[QL8%2Eyׇ5fv{z J3zexM 1,DMC8tP>?ZPZp i;$s+$)!8A]e@m&e[KtJhqeQ2 kRv=J9\4K xG%8zaZ0{ v@ʼntxMl!F_MSs|t"xp}y3і8<mH&q}rYV>XcLٛOy׸rhA,]?֒]*隖nh;O\j\цY;%vN"psT(xxm|Xy;>q=D b=6NiLQh i[zHۺ<,CY obE5̦38j "H\ Œi%rڦ&'K2tTab+v߁2^o;Q-j%#])D{6MPDIk( m-6Nc C' x$sRf+6NJѶ d1{ztD>JfpJӷ=q0dOy]`l*Gkc庠X+r]Pf<%xFUxyE3 'zf(+F*ͦ͘gӰPuEוQFVƶ(QSd%uD%ehhŽRYʢm-0~b(huQf X$q\Ίxq`z!U2[csƹ|ݻwF[!K3V 8!I #׸ʢꕫܼul:X1ĸ8E}KDGf:'W[|oNUT>m[]Ku*cv9Hqݪ=,hd<;'$ho:GgeZt:hcilJ|ki5FkqҶ-{=mwIST%|'e9}:4-i')8dq"@h]w+mdb*"2cUKr̖8 62F9BQJl໦#N%v*ڶ 'GOf#m [l^̭۷dBvI$$ @tU=Ow-62hc99>f6crE>9Y.Zs$a2S5BѬ8Q0}V.I,Ldsں"J"l,y뵸TMMX!G%`pN'-{C^y리mcezF1u_y[\7G}Rr߆>ȇ=Mx9U&oeU꽓ūl=2߱oJ =CgƿмlWSٻQ*T6Yȇ^yWPmpsVÖ,{yÛ~7OՃ ;|ʯ_/npyc\v^.y~Y,"o&JZk]}ȝ[7ue)8y\}{>7Nu_LJ{bU#.[~l~@,nի| εWϞ튷;.v??~f>y}rQky}=wO<f2|ϼb%OYQ;! ynW_M6~+ťGk,#_֚-u&ZRo{\^ۏ}^~3QkLDqB'op܅jhGk. Lg3~"Nbv$˃1Қsʕ{ngݎ'ƈ""ּBe(') HR75o~/`R4`mx7?'$ozӛXWcܭP+voRI2X.ADM9lDӶ+G%[k73js켽6D_/)BT2T+QlEYEUF9l:F$ yY}@MnC:"F |fJR|s^ԾX9H;'Žp\FKa_m&6hGsQ6h.z!", K/J$>mmpIbTJ>((jSg/]v/xȒgt?B:0+\pMF\{2iXv}GeId8IiN&|DXVn@̓Wƈ";մFiQ?i#$;198hd{t<&I9u0vȧS޹d4bhgy/i>fo'm$ԄɬƉKd * }z` YqQ6EV0`? P xʺa]<fMS=FǕk%{p8amOB>E74yǹ|9䋿%s~N:.Nj$999a4vCt:_TlÒ(x"abCP<]+c]Yu%ಉpN xGTOyuf==FI 1V *Zk"JIu/+Mjʲݦ\}mQ9{G=&œ4 MۅTF8qukZˎZYw ܡQkEA]heȳ,nt퀎ᑖpֆȆ6@hQd`p^H'jE}'J<ϰQWdMm*d2AiMUBN;G;HN~M-_X=D\N,b#z"ʲ%}9%ieԆtkLhce4wn̂Nj75Q2diBhQI18bY6Qh^%,hc\"䪪 l֭:$̅^\%KAbgF Ե8 ɥi,k8Bt\Mj[Ɠhh!iJl-j%M"(˲9h4+qPD}lV z}:ivֹ ݨWy|ALe|OBgs>|}>L0qQ~z&Zm ʈ߂~N:6+GX]VngA=$/~VD,jmDPYB݇y[G9[xOmNL (l?[y +7^ >&xeQ _o<"Ky؅jo*26(5_?sw3NOBvw?cwBdW+at5Y_t[oO 3v%|͙RRKtw(} ,YVO&۶2oWst֙( a4۟c|fqo)+TA/;S75#c 7l|$7sbQmnsdtd1 ƒ48բvsӎ7o\;kLX??ǟ]a#<_ubga,QdEǑDK~w~_-o*L&3w|w oa+ECd-XeKk|#pmcYuU1N˃tF9 ܳbs(%E)hL>QW'!sQ;ɖ4I9s>|,Ku IlT6cحJ۹Aa7JX[& LɰA$46BQG2f ^UޭXtP1lh%|X*1 } 2{"15h5X:d2߶mRfܽszaJ(;ܛh;wIS$sŮT(DYPY`q Ǽ |7"ʲ_ͯMpy-{HbܶTՖmp\RNT~ t"bJث۠:&;?xuܩN ٔb&NRqP/S}VʝVAVbX@kS ^zCU\X}7+^8uv[0 X0N$!KGGc&XvC5}0tF!/`e, E$M1xJ xB }Jm% xU61NRIM@T;koTݛS'}ɛWHKd,MEujlt6=?#}Cy6q`.ɳ1UQER  stt"㇁+k6Gwn6{\P fHZŖ$l Z<[r]wT땨C'Ci؍Cwk)d~8["4h8՚uQ$Q]򑏼>1Ff>p8328"𫡗P!B~  ؼtnd9#ng'ʺ|l˝g;ZQMێ|3MɲL EE$Yd.uk ʑe#JPVN6nA0r@\? EA:ʉbKY|Hq@UwTZӷD#Is ?8AԳia" n Qx4 $.C?[zfkk#"M<u/N(Ji!(qn%2YCKL$mF׷tXyP8D"vzӯbmFq'~ #)@]%$˂t2Kg :IʊdDo,EQ1O)kDج-yF\ 5c$Y&y@\z7oʍLQGbU'4u#6uCČ'0Eb/1EBl*t8b]&IP{T,#CP],W+FYh2iZLqG ULehcHXPI78!gnd:*ɳ\#q;IБD1uP,VF>☣;2vqi~iDEw=iHc欖+7ypڊpQAY\ W^ݻQ#xfwdEUXCƓ1}?0NV<ϱz4" a([|5{ c,28b)$e\r+IbAeLg3%YEBnۖ4FYF]״8>:b4`u\vBW,b-{8I$Sbq r4Ka c!4 <#I/ʭ=m>WsGx=u`fse첷4a].B̫?^8{GcjpA6@i{`wwmw tk1+7yy׶_qP^(V(_W|gcיES_pƱ~s,2R]?cGw(?#\k_>>ˏ]/تMhCdīŠv%lO"j7,ONx\ &=m1$qzJޝ7`yqY=xB>o~3s^}l7_7;4MGaer U1Z=q 3!X4u0H(` /< )UB|7^Y*f͜}$YB,6 q3LHxKv|=~U{lv=Ŀi$Ip<=ul{u-}QѶ ަmD}&YP9wtml dgnTCZHe'NlBȲҪY zE]ռK1^Xߛǡ),\"p8N%UB{?BU[VRdz⺦Z6(MSS#S"+6zJP ӝF6X݂e-9*gILzG9ZiV5I1eDX yQ}= Q@Lgm '5x[w^;QImcd#ƣ \tl.VX?hebDMQXe1(˟2 mK߷TzB Ȑg1鄃ٜqa&&`墴FէQ$q><88M֤qloF&/rV~k 354M%n?:-8U @=wUYcPMQ򚪮}ۖi `VX'6 ]ۅ5m˻~xb2'iޱ-&*`!Fe\tJbq[fqv2XcQAneY& Qs%#fom駿[([2T4}OY~9yI^ׄ|>O{>Y<ޯQw]t2E[CU }RF3yag!~>&ɟmUj#v Q?a}Y̹BhS4ef1*"z|/~GAa`lZHT04mjxEb@iqU<ˈlDZ麊_47o}Ȝ}/Zɹ)a(-8ΈlV1ƤD6V+׫%'}~m$wC5e6D!,ր5z#"(đ%Nھj%*V7-}'V6Qqsxȧxχ>sK'.zT@u4=ޣ{t-ЄߎԮmy c]5thaa21=8 3< ,K3J(gpa<\S%n0ƒđFqе-wnm JP7b ! (σ]8jYbA{Q3 'lU: D͍Ƅ1{SqlaAY-C϶AZ ,I&z)>֫%E&IҰM$* !++f96.Y:] > 'bOX,Kt]GQŬb h$cF\%^b]giKJ9ILg嚮kw[(Iv=_%]hWnܠ:qmR㣓k>,evNbݮ۶nD 8njf=ZU];Q5,͉j*PȞ ɹ#niZ6XqV:Bpމ@D32v]by*K@)Vk!c֫}2LN'$ ٌؘ+H㘶iX-/3|Gr)׹1|ݣ'OF,K!-U]ӶMp*6⼖)Ure){r/_Ld-/"ރ  0XScGB$MEks=B,XqlHR 5c'Hkq,u!b"٦U?W|_,۟g9̷XZodH|vm3 dJ{w-͕:/W}n}:g3vvvy5f}-*dpfomow?UrvVbe^}eFZAw}Ϸyx@w}SZ <>cř z/Is;vÀۀZmc'|VQ}(w$ٗsGuxb7g(|Aގr;!3S]i;YZd}ϴ=6dN60Ou_eP~@Q̗:7ozg/a#ZpgQ1x/_LӔߵ-w\دK[>r o|M]//чN+^ 3͓x%[g4<~y=sX§ aҕGy},>!3hŷ|ۿ{ܾ w\li?p q)t|7gs|O D7ajV'?[^{(_k:/EXs7>~?L4M-HMӀ(YHG!R& =vU:w*6֊׽wq{^{m^xl>%mCUW|~y~#,'eݯ?-l=u=pm,#Ibds^88|DjB[m;8MU{=vu[Qr]$̲4$X)|x躖8(#FTe!vz._M:- L#%(TܟX]Tߧk ڈ(A`d 7#bC]W4~?fk.6<{Lڨ`h&JFm޴Қ4I E>g8Y,u6@v۬׶)~8g4mk~ǿP0s>+/vͶ4 ]c!Ke^2 o}Ǯ=k|}!L@Ɔ^yxZěf? nٶ鄦i N2G=] @t4ȒBW {kDevEIYU]Er_%y ~"&wxpw:{qGbm-&֢qFJFz'%6Ny'y؉ V(/dt4]ъi bah]SVA(j^M}GePO7;CJM ]fi"q+6@IҜ,ϙ3QJ@c"(F)шY.W,KV낻Gw{tRb' VGdE`qt]dVbũG&!F9Z[! <ƈz„dZ#V \ȏ]m|%{/6ZK[]O(%~\H\ w-Z*ݪy(KL3 U] X/Vfd%ﰑ8cf2@ $Kn5:ܧ]גf)y>cDȚ$軞k'1ٜwIWce C4JZMY➥Cp]hwd$T 3Qwg"5M6bîd/g(ˢX@UJ'1Mݐ h*SGQ=iv`aDѻ6ћ C&1LHf3(P ә;ۖdG~.YV#R54('i,8bE{4`!2V5}?$)MSbKhcxʪ, ![!(ㄺi}gS}#h$Fv( eƈ[2kT},D8'swNϠr> 9=:ce%7{%9ǒUY.F%pFCqǤ6"' zF'(hcцmX@c }̌7=|_DfVMIDFx9wGǦ)fI4 rB[^QxGvu!L(2m\ۃݻw4dܒ$휅׭{zZEfsC%TUiL>)۶k!2PǼsDvFB@%| Waq:D<ϡu@)̤D{'"2$Z[d&C(IsZ=XmPR Iqbq^g#Co>yϢ@ӟ{Kq"gŏ;}^`\1KDxo!wxݶDR1;}9~d0mwgB[9.lv\xcCb9&:i׉SqKqߑۢҹqRojrycf|6y~uǷS:Zf{{ g_X]|G^}Ӝrؿ>ş~ScaFAD?̟Byկ~ GI(s\ûk[|~wb/~޸~o_9~/'f woƷ}cwחy?m)]{7ξPB%x/D~޿H s~)WI4o:}|fOƯg_;U,y>! lYa]p5/>YDI }WÇ?{̯CO$ܹ fp"M3^$F8:Gn] !- JzZkDx7KQu[n=s/"xs{x/mCYj]vxk_]MXТ,M5>'$xg5_jI:Pp,zvf899GC+ EўV^8s1,d 0c$wc_ZtΒ+$dQw/yCD_;6?Iƅ9m{Ov=!ipJ{K[N89$霅R^C),~Nc &aƤ =AS<~R<ƁV0ozSYʛq]G ݝ'%^PeIS1Xj|'8:>)LFt꿞bwwd4M!Ƥ(2 qMN ygT6({7hȱ֡n*TUW^~CN btWH}~ !?,G6cqr!NctY-m>jя~s7^G۶2ڜ" SL3Ѯ; 5wo`ȇ45w̻l:{p^=azXהMo.޺eDqQeA7 tû""vy{`A RCXnȰ䬃Td[.O- "Ȁ % xs*]CrZIx3y{am`3X $L E=RŸ%UO8ﱨj<8:Fhॄ #H1;y펑NUNu=ݒqY8k IDATFf@e;}7I]`ZuR)6EhC{ST]ێ21(6IY#P5% $nw|ϚgjD'N I # suLXS"\pbQ hU9 OnT@t]J-]},@Z$@ )q|N@'I -kJѵG$sJ%!q|| g{:EP u3e"Z-Q-Ȍϥlg,/G3Tg ~Έ&A9P5'=kmDF"/K:5$JRӶh}gtgZLwD=%s}!K (t"Cd,'HAVPgMKǰ('Ng/#UT5E)N)$'W"vs RJ]ϵzt8eJx1(KB ֤)vf3д {Lk&IخPd% XP%u`6B ̤Z'NS]d9h: K% ںFڵkX.@*XsD?qmh @}?ˈ8wx|45EI𐮹p8HX_.Q1LBaZB-@hidp]eIk׍V}y?9xo)5ʲDU8>9u..PzxGmgSnRc0?( mAUn\ѵ1b>ߥRMyc E*AkNŏu:*ΝO$'4.z3˨nKqfw`nZXn7 ,/s#rc cq~|Ϸj(x>axJp] ĨazWL[Qx M^$'_7zl3y|onyn_u|S j]4;ΊM{_e2#,1x?*]W+|ZHbE;GXcUyȴ_ ~Y'6Ar#yLo#Uy~?|{kb#ۅOy{\om%p?#?vq_%d"q6 ޿KKf|q)٧_=Z.pŸItWt9 FF$Ixկ>!d%wr~ރֆ0J]}?ǽ{wqp2&酏c͛7kKW?Z*uUJB6ܤ$}c^IBwJGq < 1F7~Dxڵ[7q mmK4E>vaK_nߺiו6%3Z^g?i`ooEm[7;7!BmR/fo JImTvRCI1nH#=wƪF[:he[ Whnz-HF{8H }t\GYxMhpڃU$t -!"纞+m!BA&)NY䐊ff6`W4N0)-ý{O{/~Y<ԓ_g$YAɑjul̘G mJB~X,(ׯ?C D)Fdj+"6߇) 2,6!rs#`dc18YܤВ֏ !so;.PRxx>2yqNSCLNG<_yqwC%␎5R9pM.>7 ,xs.mgk# dHT8lz8)HDR-=,TD%M3{ۇY#Js@(NfdEQL iEB^ IۺD `ggW.j4u("nw-l!/ q||o!UEaC=&19I LjXlR mĪZ4q)eJrD!d <RAnj=HOpmo!$=jmƍBܛM%|5B2vM ' uƈ I гX-@$nG@D'@tqLq Kɳ!Q D)G ;x l tUUYC& UU] m t:{:SPj!Mh{g-ޒh7ѓIb:PS;!84- uӠRC&ySut}\j72C <\/cL$sZo8gVrӐ ]LcT DyL+ IPN'lnqh`>4 MC Y6 p!&e9SH)X. @b)RcW& o>9C:Ɉ0c^|EQHHwmOc"BF9)aR2 ɰf NNN8WW_+7=g%\(P 2Bs1hY.GQI)%$Qu@H{}?^?paHFdR"u]mq"x5,KyϨuM(h(\@: &5>FHm\h{! "qdIDbM 3x:hZ/^Ѷ-^x|?ʫ!W_A&eY@pJzD $iH4fھ&|kX,4sZ%h1:A,Y=/J-}_~ȋ))a`z\𰽅!BR _Z'Jn)]t&{ӦNGp(H@ߛyo<!T԰M߁9 BH2u c !:I=!=|ukEj&/"^[oƍxQdvvvOO3\ݻws?s0ii3X-+Ju-; 7!e J4ۛ=Kٝ+09a{=^|@(iGGL&HY9F8η6C"mK؝LD x!\5 U#ܼsU#DgCܾs{)}2C=&BsDC`{S B>Af`ێ0]T} ϿsDep[[>(ƚ{`5V"wdY#M2"o$ŽU7Ve,TQzCo: jl>ODIv%\FնH ӝtA dY1ߛkψL)DX-HM>|b@՘]t61)H]cZbZh=&^5.hZ($~q,/Hԉ&D…=WގfKφ-RhB$ӉW$iTuP9bpB( {dZ@W6&D1wF.wY @L`1$ HUH6{*EcmX,LؙʕAcއ|Ht]oVȊFY2JZ,B|-UPYDDزX]5 ԃ5#I߽h89>B6(YSYhJP5t )$%URcT<1&Gj #=}K+\\Ou!=cwἇN0"M+An,#u b0"M vf:E?vb{wAkQ찹*[+Wbu&3[ PZk;e#Ls~\ʍ{vX.$%A)nOxKs,ԫ&MFadUqeH]96 tmǦp' Eϵk[4m MqwΔ bg6Ch/&^sD;;0ڠVYX5!͗%ʲ:"}uyD:f<&7u,Ϡa4åX-WPJb:"Q v(+fRm0( ztA̤(BJMC=>6I>b899t6%C>فSoUE ؙR*25d"jCfS@(dTԐRxF~gzLz|p>߃ѷJxや76~L$<|3w?}[Wy^c7˦g֏[w{.F4|q'#~&~g~N=c~Py̧}/:ŅQQlWtotNQkqhHM|^uCR-!CfdS=E%< xo"/ UW77ř$ˎۋmdoI$ 99>č_ō_ET) u1(~}F^ 3)%ruDj8LyE'EAf%{k7wd\`%J# }V)w&BJ@tʐ)f)TQ+ܡ1i} pd&VNQ l=rEs$W+1`Xޓ"b1r϶a5-HT5ZC {w;hU]P'$R mc6Nе-mtu_^۶PRaVRXP刯^'pL4!F=<ٜumoJ{\yfFj-g{)U{)EI!)$zK߈usD~|ג IDAT9ހԆ1=Ǵ?H/EUP /g> IS@kxe.+ܸqo|uk[\kNkH/k_%({HhCoo-0D%j9Yf(\[A'@Y!z`-ASWXbqz߿G B)wC#^vJ4G$$$yg]G0}ߢ+MoTw\]݈PGߵhm?q$7G<˯x{ 4TRI@QrWF0 T*<x߇+x啗ƍ7pMFkOG0N/ _bX-++n\Ǘ}ԉb@89= ?^˘LrVK<Ӹz*p'p5Tsw䴲h{ |{]鍍 fo H1LF=rذeLܼoO/TcJ҆o@$#IQw3 G۾C:9 wC*!i,rH<6F<'@LR@PF x# X*O_YNU1@fzaG:=J$)@ mJ9V5$ ]gDv ;LF^aJ"@HRtj  Y:B]7X*N|vJkd"QLGj|W^..ߑaMS+tm5RGKiRALjd&@f$}o^qz: %JJD=LASJIѹMu%!Y޽B$ "(!.6žL1"D ?vy- T$ЩT2P /G;spޣJ`4Z3Y0Bvü/Ǵ7'hޢtv{BiZ4ڪBbR{d|t[i1v:wL! $, .d|oiaG߶]}HO5SA}Ύ@ csl]CCrISNVHM:,5q73mQMQ;Z; d۶hY>RM:t(bTZ!5Tc3G''<#Mێymې!Qk,KeiI<\"Fj"ļRpL HA0\2+@ƃ<$4FӴD) 5}K Xs)e KJf!*a WUׄOS.N!x Z%{e|.Z.:tX4%Ä1R8>>)h $J53+!Ġ=΍{G4dTms;zN{<,, sp:es0M":Htd]ժb:u'Jb7ijRgm2p!ݟ)bk-Xs"[X롔oժF l#d1؈D,ilsɒj "bR%q?@ PCY~|ۮc̑ITGkޚ5U]ۡT.%WPtFM$F6h-H&)`\IYZ.C@TY\@" -'A^ o& |/6,g?d!kɏV'/|-Jxo:፿xA;c5&NsHNO҄lLJ0&-lϝI Ja@Bm)i ;sڮt)o؞ȡr4$Fw¨iQgьL,t( y9<ת 'ِHc4PH?3{<EY"r>T#2ƸWBtJ)9meMMnycGQc;(!Y3M"">^x xp>nx M:岂sDC񎺤]O -);F?ve*#;Xۡyٶ5 u ,<4-mO~C*AtNl*vf3<4wJ$H ›"zk{4mMqi>r+Ch=}/~;_2BUF\,p=b7nZڴՄH!KP"kx׳_/QfI$Z 7sk%BHBQN:]]5kب2,bc>2Ā27H  ^ d# pXU''ޥ9C⹇dBLT$x g)Ӈ|VbR@49N9;EboqzrY]~TbnϸĦ0];1As:~ɕWaqplg1"pTF!$?'f~'t2XFQPIlFy8k-'KYJ&t&( ~eQ "h RROj-\KaD9@A)DdMڜJ!5F89>ăw\K2(@iڰV #YKr!RF1vwwQ-n߹MHēu7oDZuǫDTC`"$E*@Du\%B>ۣDA( EG(FRpS| ;Dtg׮aɨ69H_[*:kxmH xF2_z 8VJi0ye,mװɱ@4wMƺsr.bB+T Y!M Yp)|N\$HƬjh!X<>@'jg"{"2q MS^Qs֎o)t6M&%#cq$8UX.OI H|!6LwC/Nge,DYIk;4mժ儎E(mGdRn83=%4#YS]!X,K$ߠxM8%: pB2XGk}Fc aus i#3cJXo,x;ߏ;&/_lfr#oό[<"qùLx`l&v[s|˄{rCl>x<o9pbKx8{.ڽoࢼt_wjE:^ \}-6ą(m9Mf"|3qONV$=6_\gnPkQg]i-LYqE)<#L8&7CZ35( +=UkƫMFX 3L$1Ir!o{rMJ!כ7 AnUD&4)"Lle7c|޴ lUĸ:~̗^p<g3~B!7?rc|hzp0]X,+\.`g-@]B'KNZKN'MנZ.h"+ӔP!|62r{^ C{;R-ˤٸJ爤"ֻaTHtއ)t6arBiI1ݾm"M5&1+$4 J3ZI"ߵ-ڶ&{J 1dƋ-1nP;! y^9cv$8>:r!^<')G^NJ֣+J@:јf CB[7e4bs诛"RRc4_$:\zyD !/YQՠa>!+;IUUO3@}F' v懡MɮRE^BT )45{O#@IZw] 615tsVrg)3;)쓄7+mSw͏$Im.A)y>Ab >Ѭpzr[n͛X-rZIJܤv*tBIQ[7j} M `C3,$iH8Ḿ72A8B2;ބy'~Ї>kq T :()ww|yn%1 IB ;ITL9X/Z8gysű1,r‰I,lpSo{8u0yga9(!F!J yVzPЬ*dY^2vvfx]tmwAϷMŕcܾ}H!?_z 뿊" Ȝ%P{Bǿo~GGࠔM|+xWaׯ?>L3<̻peDM"1$ky uQ>N?3!a!L$!:(n\ hd tn@iig=VD \X,aww[ śyBr鵒DoԶP#MsiQ&PTpzNbnp|zzw=^1Ǵ).=滗0AQ4_e9EQP''89>A^ٙ#M}hZ'EBI!޿G}o dy RHi#ωܓqhX'tZmV899DUAƖA얜$dׅ$r`!RڲD^0Y{CD)!w*S.xC9Kd(3Y^"5*NA)=OإUbմh}ԫ.$ b4&4zCDNlH(ߋ+מD>!.B!z %$ʲD9Bt\4F6+K)IyBz0wm wmrk6Cu$ 񺶃6)% G!Ǥv1Z("T5B(r\L]HdH:>:FYԛBbBeI<eDyN4~wZ sx1 iQJtBs0E\PmȄأZ-}rHi!lg-vvv!#[$)rA}0V(u`w~ ]a:`d-v899#eQ6DJo4f(2't[E&"2ݜuD@ya\yU:j퐪7,;CN5vWw,YifG|E{ieKDwMS 9Dĝ7"2lBM`ZUʌ;jeRJb Qʒǔ,:-D 劫}( ?ҐLRZݵ\ygldD@k̫+xِi@TM,w2N`{OU>YܦS#n6;e;onR&x Q9a$fV9l@,)<'!21A1xJs+1#@`rCnQJڎ z !MP>q70ҙfL%o6[v[G;Z3'$]V'kd!t͖M gg C?9)KM!T6!DU !sI0snXRݠnz@JQ*g5 ӿ!Bntc9NNk6QG(r GYVh)?CY!p_&X sXNM_O@{p䃘:9)GuG/Kxބ7SG<~PZ&!M 8bvJϽi5Hq1^Iŷ78ĺ لw/5W:`~H/_?M>!/XcNi[- +|>,fa7 7":==n{~L{`A_YT)',80dArA J}y?T&Ô~~n )c)9='xQ Yr?l "#ZI"Q-x!r,Nϑ \w#./o`5b d, R6.B&J.$c3!Jѳ{q͉!DX硴&Xp)9FTU(h@HGF r'9`4&w$CUgW%x9ݥhpx%Qʪ W8 "QJvEka2nD';إc@]Vhj.y x}HXwAu$yg/7%Sh-g'k9wbI~@ΝquUCk:Ћ@l.%]#$zSsxV}V!{<'D[F3G8 /x ,E@*ȌEaQV@!Plj=&xPM}qdqS wP-dRZO)0%ȍD2w݆zA#ٿ3ɟlw ! 6kL`3{?2F7Թ[dxx3gϰZ-^:%a#ӿtKԿ;Wdo3xB^ƞF d")nH EKCJ"J"XvC=aDD'~ Bl QhD%%4/"AGM;5W(O!@u/.QWx[P( 1ӎpDS.<^M"<2I!Fy\;8M&*DI)[Z'~? J$Kjqr$YKJ}WkX?4\Ln`Jg6C*!D?d* , Z)|gxWW@?zS\|_| 4h.B^YH@Q֨LN%0 l,Dt~mpF 6!TrS"KBI.ୣfCkR2-F`ZQ Pc~6%a%m*ȩo^Çx NNϱ\.٧f2 IWقݔ|u#\lHCB":W툍DO牿\2#d @ l=<"LU@R e׵!Y,an63}8]a@l ] : dPHP&GY3N̥ B*6eZ,Ȑ(1ל!QV!RQ*"$RgLFϕ'dyA<}-.IpqB<2mH=1%dy$e^WTu{ȑ6 P֎!BQW&}ILDjxS,PW5LB"!/ vn0z2GREMcз-W?!d4=Yzn>)&ƔAsS;JUEjx&zlNsU]aAi XK$Kq SO1MDvNΣaYT5 )RRf{T$z]ggsȌʢ@\l6PF#h:E,mgl!<Ѧ&)իI,W+g9K_PQ?''kG)3eQSR+ >Gg>r=!˩?zͦhz,+6'L`_>\9yR)sH(WAJ '%aCTmAj"e DYUn0ZdFLW 3L@*&Jɽ1͚C?"Ĉ( P7 vʂf!FgHB-;K&sJS;FI +r`۶(r(quuq$mw([TuMc)GL@g!m4'Fpzz<'BM t Պ({1(KY1f@bA4fsUQWUOgl1:)io+9pgz_>2)~&EnGOsIGK!$"8ZӵR@YL=F'^>e{&b:D[~ >&:O޸u>HgoOGM^ fQVlnN`ZpӑR%爚r8wL|,2Qq 2AbdI {2DIs>Ų33 b 7-67;D[j3F –6Zu#!0$| Y^IiC@BQf.;7_1Dh%!-g9LN#eFgM)F ;H)8a1`EyN@5wluS!g\TBqRy#+( ؀Dà<ϸuURin!PUԽ9%[SB9 &T*r1 Rnԇ'iAӢ( J)G;sjWJQ1uZhL.jڼF Ӂ߃Ԓ=R[k c ) 2 1DdApӑ$EDI.FuB R {@+ю1iU%Cf$1sܣP9ʘy%wnuEYxO .G([; ~N;>ݕXLI >;B`B%Dzv\gr,Q%^Cзvp'IޤP&FkX; 7OzL׽ܴX.W8==Ǘϟ>rraiɑcQ*m{}GwoG28E Σ~?=|GW숪*nZ- \zN+|ߠ*K _<3uk&G~y$4:t-L)@矖Іi8GuA,fW! :'-GHoW ?^vsCݗ1[o=Çx[XVG2o}#Wc<+}9^3뻹5pJ \C3auRt#ޓԉF;"92v=z08[@1HE/#If}t 8{2+i%SwJ bqn˳S<~)YJ3BZ ;mg#=ϝc-3Z~W(I J2)in&& "αXhgx9qDk)p>,*5}4Uȋ֎X,8x|uhuc4P$bE^Pb)|[·{UQZc 3n r[/ʒΡ*,VK(As#ǃGRHt6y,(:˱\,67DXp~zЙzrĮmuyd fO>M f\kn2,WK铷Sk^s#dc=1 ,aG՜?4ۍ;@:F!@I(D@BU/w / L9s, TiX,Lb@Q2ZS"$hI#ZHQ7 #!aq"3h́(벱9,P&Bs/]29'"0JNh xpuuaLf4$Śe9 G7ޓ9"!YG&1ZL4%}$|)%4ʴFL>SLf{ eQ=&V,xѷ[}T,ʲF4ȳ ZS8 D 7[\^]C(ŵL{}zvF?7&KvSWh[ZNiZ IfBLeY()Z5r焵SgglȩBw( M ל/J}w] p}TԨMMxܣH `vT|]P\@)C?\YAUtI!I</_B]׸xzON!U:)EϤb4ƱG`2H )ȉ9?ڑ.أcNNOW/ ;Er la}r%vAm/BkD>=Y#˨]+zaP%ʊUhGdl\Jq 1x6k!b\c}rk۵t>qDUX,tb5Usɰ9~˲_|N\γg$fc0X2EkH J/'l؁Z~pdOis,''glo=aA5DӊL Y#iTZyWLjx֢YнAH,%VmSŃ 2|1*|cd>عI=D{sk81r<' sAF5yHeU{4fGӳǯ2ﹽ$~CKv;HY5$zeYppB`BHERb:fYr@ai_{!Pcm6~B:F}oeCXD:ŝ??HxO{ߑ}(NF]-p/o 570F/Y%a$Swg`;"p52|֋AOuJoO9D+}b((}p|ٝtw=LHO8t #DqLAz>n!bI 1@M"}%bGSY9@jt`$M) -ӡaB-ݡ9#D}}q=.x ݻy-ȀpJjo|MZn=gőS^#~,ȼ0xH۲Ń AHGBSRA*EA?MXIHb0(EY!7Sb>__U-ԃmhBid#zhd2=oFsPGLXG >' usO59B+yr"ϑgm=='TRRY{Sd 1͉߹ ׃@lv!;xOSJeѱzF#"Tmkpq~<7@pFgX-xmP;xo(" cof!ܹ@s׼TRggXVxww/К]g-$""CwH: xT\`3B Jre">^p!$'sEΝ\5@O!'0{'mJNH)f3$ORJN椹`.H`zk %ݯN]rǢq)&g_SGQ^ n~(C?wマ~1vV w<}]ߞRޙ3_T6!p1N5tk;NHNq-/jhSWLJi_cRBp#8"~Dۍx_qf[%@U:8{”{9 "GfGo=T0[M HYr -}9zƎ»@:ɘ~UzY ; ´˃`t.]n8929aǏ"DJb\I\F`{g PDxܼ*|.cD^J~? o-̠jln_0b&L$ IP-FE Z;nE eYYP6 ʦAQը ta_K\\\J8=?*gcX,Rg?^| ))Ou$d̒ڐX8?;Ϟgoɓx"n׶ KXnZPڛ!1:Y=M\BO,U!&1`pCEPBFȠ>{-Mn$!Hг29$ɨi )IR<a6@TC' 5: &a3DVqn2D&{S_0Ij<5FͦWj _.sӺ)3QJ*8.s%v-l <$=< S2S')!Rb>D+™EߵTĢu Sl]CiWw-T-cī9e9EC$I5C?"s0&gBuüt!P.[@H֡:Z3pZ9AJ՚mے\J;QW5Dkѵ;R)(Ym[uLIɄL]!r"%DZS lRB^(]"c6RsfC5,i-#` uot]S;<~M a0#v8RϻR }n, Cb~vm23EPzc2t} @BQk~-!ܕP֍ JFl7|Ƈ UIfruuEIUAZkQV$OF* >ȹ*c#RHL!fsGR IDATtJ] tVUꦆu`QAY)-2~afD~31 D*1L-j_'~ϖ9#]1L{0DMx{*do}/X( qorޮoqʄ%b<+^{G}K_[;V{')0u 1>X݉;~K~7ݣMDHnt}tnG]ۇsJ@Lid4͉ )ݕE?ʞT„WrvgbON]ܷD;EQS8;x>7YDKʪ80CYaP69O3U|Niq.y'1|8oE,b?38X܊# Oܯtā&;d(*1f~OE(:Ή9ttG6"(eTQͮvK\e NON !EyH3OHZg4P X(+@" x7l ;c8B`Mz,SrMIcٖegparC /94m4UU28uLBZY!x}sEBwU &܇P: PJ;K>O.ppznvd(6n$ŋ"ZQYn89#3[Hʎ#$ }@4XքjzYNct#B,GQ>mvz J9 &(U3Z#$$"tc,ʲφS$zƅ{i( m{6ZDY4peLp0Etq < Wsb[p8eUSJ 61a,ؕ.9t$viܽC])Bhsc0sYǏ@i?O2D(Ԣ`ʌ"wY18 ?OX._.=~~GHĐ0Uma־M~ͳ4==o"Wc 3躎˹N;'ABrQCi -%TCvf}ٳ Nf9@ruM[!@c$ s ]k w{W-Bh@VGRny`GR_ݠK I@%;Mx3J DEX,V6UɓpGRa\BI"%<#ÊɡZF(D:)L2hAHuhE]BK/ ?G?Q RBk=wza4t*.,];-%=KdUj%LYeYI4"H@QѣY,>=EkCjn>~!=JVkcoRsHQuLsUR D)X1vh",<6yi<{],KHEF4Q5*eR3%E]ע*TuIkv !ϻ5HX4 FknLjs3#s0U($ytjQdRNe1k&]IDe9꺜MBguJѳltvtD) 8TWB]74K89_U~5QPGQ7JxWN_#_'ߴ7woN_/ ߗN ұr?7}_g!}OzXv(ҍs?jw O}a{o7w'Iw$8Cz~q_<ĕ{Ѽ}9?S7Ayy5}~戹pϦ;}GNsi7;LgD:2La?uD;NN^:Ҁ5Fސ BPh`4FQU! @-)0 =;i0> hxBPhCyDi:B+!!11ؑ:Q(rjA:%6Џ=VXפ-HJYĐuKEjޜEbjSR͸?% SÀ"yH.qBdJr+C0#;i&0Z(먳M kip4 xж-lyNqyK)Z;&L4cF1'$' x }b!=8 WrFe 5”^uJ*~.ܺC@kYD=,C냾v}ńa2JV:)q慴RzLqc2Sq꽔ТSz`׎0Rc:EzN@zhwTSd^w^(/^2>?!Fp7m DoUIc4uf@$nn6Ob \_㭧ORW$M&d6(vzX.Wh V%%h%\,Y+XRK$dk#)gA>RԚo 6H1Y6n199=BȊU`XY,%#>I! 00fZʏgDlEj94Ƌ/oBMD8,Dfr~GP]A`? |gYkmpyy??9rcpzv~SE, @$n@$Z-jo0FA 2DIWN{=%4T Gty7Wtc{~oPL I+O)8$?IH? R[Hs:B 8×7[x($մ^pb,#!"&$""8?;C,%v0]#&tyYAKM!!139 NHAEJ[~+ R)I3FIRL7( 2OJEɲ: hCa葒BHeqIJh-uFLHI4'SEYYB86*  m7wHU3J)À˫+Z, !,Rnn k4Dr)6H zFPd9,îkJ,#$a[1(};i 2ruWRFؗ/Lt?9gX,h>F,^m7@ YiheFYf$kG2F#0GAmP9Ƒ"ng7ڑL MD hc#bœl^軎̲Z=4jRnuRki[V$dUYʪjca32H[kf#^d,jBJο}׺R@)2*%|( X;,yGDBn2HӓZ0WtCr"%|ȋbAIj>>C#/K,YD@\_hf)}o2 {e$v[d9N H1&ʕ\*@#SdP䔦u45"!1껶3d1uDcR3HI}{_ŕ* !@&$9D mQ!c>xv;yr ,uMfp}s_tim1:x<=Bg1 w΃ߗTDzR@Ot^+u|\r^ƿdk*H_A"iU_OڋM6/f0w~׺s;ߧA~}M>jx>Ɓ?2|x>S{4YYM1͢Hv6ϋ:FoI񺺃glBQ)RӐ( AxARy"$њԗM}u5 y#jYd l#Q*A4C@nn6{ˉo7Ow;emb\ z2XP"*b!#u+(Cqyf:DC2Ic v(2,#QwC!Ž~,c/>7?VOWn[xEepvPZ3AlPR!,FwP9S<8?}yQz&:q ~HQD0Ϟ>Q]IT z;%V!j $0l" 1nH,B:2b 6 $g&v<4#% -(g5۟wZ16I4! }DYUȲO>c'xM});i,6s|s>=;'O%:GCp0x(o(3)ݿo=b Hʲ"(b?{}Q(`QT%ߋTkZ30B'@B9 "Rhw-tzL$sK&P M`Z#/JfF; hkwE}<{]EB 2XXH];˜ynP _$5,N'X.OeFv]afA?,-@S((U"ӄR՜➍.x ] ZuQP*OSdJhJ"%S$  n%6( c?@d # ݓ97s]^,HB q QLd !iE@֢.~t; !$0 @ؕNT%2L ^,KiͦYfB vF,:ܡC 2fCJ`ݻ@JAp%##֫5lc[6RR6ƈ,rI3C=4aPm[l6;<}V(ϟ?Ǔ'Oze˗huj-V)ƾz"nЏޛ4YiZtM>Fd sTtU@U RtWŽ͆e K;®CS *w:wT^3*S<-^G}I~'' {v;itDxrCkgn7BAi-钸NԃsSK֍"MG[fՌvb4 n, ˓l67S KR<{ah(Rbhv㼣 y IDAT^nl5s lf:k," a>nG58bȋ\eYqoy l7ryuIӵݬy,˄rq~fPc% |ߣ/^QonG]WIXeQ˲X.hێE=gkxGpz6H|NQTu/_oݖv#U9?;9jyj-uc,v@qm3"L+1eUbay v] ~V3ͱ[w=}ƥv;azʺZ).eQXjKʪZKs}XCdB}=,H8u \{#MloiDIfgggw;͞3b @,拴46ݥ}uQCǣGŨt]P9ƥ8-s=E!.llO췂ۯjZþ 6'ErWf(xT'L È{{"Y Edn9??KBD(}󉜒FR<&gP^dB9z!WSa!@O{D:p>)7_o*ed݁5KlIo@E:_7ÛCt?}*k;~;7M_?v!_?yFe>@AC7v(ƇksuV#u<FZ!q|%ii厷ٞ$3{辫U9<Σq)4Mu';B^07G! mFJ)py n uI5[lvfEӵ(mXr~Xh,BvLR/[mH>uZsqNڶmA Yufm5< Fatg k(Ч&Yr&ԩƠ;wbjR$Y8zNr2%-#/4H5scވ;Oh?H6dԂҍm[.*!†lɋcg%8AgyFYlvI!Jfʹˬ,+RjKqjzD1!!bی`ZmL6e[G8cY!ҚcMd5 IVMt&P si3=; =F j{!JN$${6P - AGFL6re}=ar # S∅0ƤIz}C,e)uOyȘlyq#.ѩeV\A)WA܏Do_"3A&Aшu^G[yw1/>̦fG/_5 !F>x}4+ηD􌢬@-$Ýe3^(}G}'Ϸ?xzZO8??dɓGȌmfY,Y q<'Qe(COT|c%mӱi2ɬ\ݾZTG}?4{hb6<Ņњ܈HyY0(Y]QU)圲dH!H}~CB0!$,3wj`oG)KD϶mKڦoeY`y9Ϟ>e>SyVį:8.'CY9֦١sKfrՆiYUOBKMmגeh^,2/X,UZkڦEib1痟,| rՓC*M߲fjutm]'4-6 Bs((raSLSؔQPFH R, ruZ<8MH*pn`ao`R2G|>TZ7QRbsDیGvu2{ʪP( ՚9=9͎ <gdD^إ r|Y|V36ʢӧlw[iΗ8dyB6))˓SH;2nsQ}'1UU^ }޺uRd)Y 5y297!nj,ˈ>,,ScܦF<0LeEc'\ڌ9NClk9WK zZ6m* EA8YoIw<}"ieAYWUA# ?3O~O~7y1Dh=MӠbo)Tꊗ/>u-&a?(lP,VłKO|'8;=cXҴRT&/~{┩٠Tʀ׊dB0 c(b? uT!F%!j3 Ep45C< !5(TTVY6H?=a7}DnJ2Lj8*Q#v%(&*NNϨ]hqu%lkٳ'ɟn_#p &#qgّW%ֈ#Zĥr(c2Vlږ"7WU'$vZQ }z昩yQiPxqa?D)(gTL6e*di-^fj SK:2m8?`1+VAh9?~f!FO!!FIBᆁjb<9?exFu]qvv.)^aa&/J#LPc y&͓n%NILF@.ЕDK> xȴMq ,>an=>gln%Jyrd(qzm NEZ:b1 {s.OԥĴމ0Cb m%z1DQo6(Ġ=}ۦUQvksӂa;Dh=SA>54Y^0-p1 >EsE'a#MPVyˤyW]|jYro/{眈풢}Q)⽓) (Iq6XvguM/^MG9W|GTuMYh[B,yuu4݀.M<5Yc^|fǬ^xAQ"pz?`nFb ZDnkiP2Fs1Kj&8,Ϩ0X,'zRRgm#f@0 6{!+ NeھWK[V+vM>Pd\,˩g32O=JAY9yPFQf"cݰ\̰Yvkk)B1pf.bg9_/_ca9_p^b>\sX.=;'D/_w(rꎸgqJb`=7<~5-'جi[n7tm|1;v%/EGiEu|R}ff|6ND»ݖ"/jc9)/Z"Vc|3fnDNNNXPݖ3i^__ , Q!0h Ki;yExRg5SnqѴUQ5lkV5˅W.gXkYBY$^`u=''˴Wh|R/UJc Dh 1ŢʓPVf3ç('O`Gyb{Pz^hۖS 7ל\iZnHvDn)rqWe)hLDYF)д) 77d\/d" ]3DҞt./lXkj!Ge8) chmrZZId5&wHr;oDE85Tc[ut_Q;?'aҋ8oe8 orx+n_-m_#Aa7=-ߏ1K6ycrܢ_2F1oN<dG[|㽿>)s;|xGYpotҌD<GMS,N)~*g( wEweģGu+(!EKsj0b$3{:泹R!R61\ƒ\4iVe~; *uc%dB4)Ӫo[l"Bf2ƈjryA е-Ef46#/ t]C1baBc2q&!J$h shkN ) D/Jvۭ@5t /C@;a91R$T5٭:ur0(A j ?)$g()ŝBgqzjv+8ӳ3=gye@a xBD++nf9&3iʔ*1c4D(%#} IDATZq)MYV⺷zzje}߳^0, 2V*»EoScF!&Le9;(4ƈ y(OAi6*=DɳzngCH(H[StLwDTʊ\#^]tZĤM+mBI .lʐ7N8_zEq}RU5z"r?}zkVQUhg3M1=v+yND}aRwI8Y iҼ.Y->ĄWS,x/O3B(bL}߳X.q}5~c'hHX,˒bv?JVJK JUW"ۭV+zՓr]Kv\]]N1( AHA^0H_ƹGq~w|=UJ77mPf_os}սۭ 61H4FL_8JN=xwӨꫦ{_7 ǎn P8p>\$;g0f#~<'üp4?l*Jֵ}/#yUHyB/(FhC-ͳ nϳ^$}p|n7q.W{5e)[sjlE}gZ߰WI.ʩ;Ezuba\W_23ţr:@]թc4C}JuWi*EIQVDmh-]C j6gyz|$=zLfeRaD%XϋBrmR"*quecS+{ q|)bFY.{k`ڎn\VZk>!9(F併MVJL G4$GNWAI^_*m7)o%2et;n¤g)lHeiV:0g4,MVy( ap $#MJ86cs-!yclZ8 X뤠储~9LNoh@\햾)29K޳8~-BOΖD9,*nnVTՌo}y Oٷ-WW+ŒEyN<|Vz'?!|ytqNQdyOSx-cw~pӓ,eꆧOrq~ 3Rm~GwlV|;sf5UUS91zV77:H(aRV"XR$qʄR݃2S E霓1nG%_}‡O]|rzzB]Ղ&Ez$B9tW{)鹭Jajy0Vn1!7g$3&"(!1*xJ{װY\7ǜ.n3#Q(-kĴ zvOg2L זK; "~곗b tmTM;Y5Gz+V77 7v (4Rh<ɮ4iAjwȫ9st*k)ŋUųhWmO]SqOuBG0 {7q~5[ݚamҒ8,)CZjSJ\³`JPE f%PX$خWQ*[d֊3>3O?%rs}6eąR4<ʢ~' 3x;&AXPOQ<{GBv餁;E:5Viۭ43''dyN"!4adysÐY -&j*&s%.BE ޷|ч,(C?`t6نa@kM5a=ULFzYKNkyYLcBZ6ez%niv{$}g$~Ȭ%3Lb}Oh(o? I+) (On' ZF2;5C5jBo+qCnj넜&`"i,BJ"t]撇 Oo&s,m&}%h\OHck O>cۓ[-pms^>Ivqv_b_ki߬(ʂE̼lPZ\,g:6C?E&$=^bXF$bLfz-sH]1!9ZHFgzi'G1GA^^˳Y-J]?$lՠdɼu=,J.ɋs.(P^gsB rnzu#SZn 0m&Z+겢M1ĕ]$4\\SzvO=cݰnhO%q@EWca1;>$z y!Ob R'WYUfD,/knË/new=R1)H1}H[b Pve~p\^^2g,3A9g!Eh3$_,999D "/膞G,_H)@YEN'O}"`3upNLFO)"`QXQ E_|_Qߕ&/ yseYFY \is4Ÿ[VQ$45qp9[O/n_qeTU4wGYi? G}Vw\ۨfVwx_yMzk?nExawncz?_E{J_~sWhȎ|o:,4eԾmxs$dSVC1Ɏ wro8xg_,>@=!7#|xy5>rƃȡIns _:>}CC(( \ݙԈy1 ?~9_$?`Y`j1w ǥx`Nw(#{ lSƔ҆}ӲF8=aX 75\t]nǤ|(]`jZޯ3T;UR_=1Im-$;58ctJهiڌM eڴY1ǦjD2PjBz*+gzPqr!umrr)Fvrcʤ~\B$K9=FXYqjFʢ]?0k88}Q`ScXyRhу҄!3zK#VQ%6p);(%ՄE̳\1/ʄ  Y]# <54Qk1`BEi0;Lr]Pk 0/g,R%7^6ت8&4¥ahnr-jvc=R+KE[g4HXjTEBd R&YKs,9/~1)ٌ乥m ._ѷRZ.kshEn ɄnW@jjey1aC $# sXܟ3 ܠmFKo6?%gg'`S}<~}.ō-&/Vy <"8rm74~QTrgW7d&l(u @U,fIL/Vȁ9NvͮC@^|$gVN@F?|ON͉C.O+v{^x[g,('~7 })dm-ՆjR^W-=F\ )[㄀ ؒw6KSU㥉ZD53>yBۤGa˚!chEY4]9ڮ|NvMyM*msJƈI9YC;7b2;N$bS!HTB)3,gHw8KNZ8RdҤdI_%W,˒X74 TܬV\^^x{z,K%j¦jfpU/c\n/\eYM1G;*~"cr]Kln78n7 Υx:|6vd(Y]X.%cO}M]]9=9NlEF)r__\_ejz*OSBio"r|zO9北^cj cXw u%Q1Ly@!JbB1fa6zQI^*Zj?G/7~[暩n=9w8':FzV(>9'k~`5ՍaWAUֈ]k\Α%vDy&gBQ́&:]sc+ɏ>acaQ&D=mezP">JZftm"65*RQT|N4cC)Zkt4dȆB%n"~C>;rc+ɷ 6|<i.E46@~rE0t$byvH\s;2Z2CdBMP3mp ^2*<}\ PM2LyA >yc2JAٴ gɵP>pfq~Fk(g3!u9I4{9 :gV׬V4捸 f9(Q((cH2E64lvRu-u]݀zM]>✛Սh~f4d?xfPT9P!rQ͗s5 .e~|qoٟ"/:GaY2K=Ł~]7EG?`HQӊc6;.=Ϯ2,-+6䧯n8]{ſWk7hk0&OExKNd RTND:ρ :˱EIߵ` 06C,9Dd9օiš3@mGk|D6r[ҧgwdoQ>&!S`zjFka+5Hyv?BHY ?⑸?CX6TjRc[V7G IDATfu qs*J'Ȑu]@ߦd{4 2j|09,+(yn8/8} AGYwhpCd^7+h ,}h] z6Kk!G^f(RJ) 7-^iotDd㶰˕vtQ2  #$ F5R Ā #,TB.,WavΌig3"^=v ~ksm{v1फ़nxk~6CA/{ Q0@I8tL<5x%c]ےS28G@41K"-`PTK1e Og.?c C,'s5u-VEbpƓ8Xgx!5puu BY5 ?yn_%..ΡugjA|jY'v$4 @kJQ<)93gSc9Tǔv  !!ԠUHeĒ֣m(Ī"gAB88CkJ!nF^MQa`ZUjz9p&##z p!@H[ᙀT LiE#b'|(HhCeU -1aP>H0-30A܄!ʹfC}HԠnǏl8?;1F4}Gj-,mw ( E,lFmBgS4ֻY{M6asXcNd"r/W+MW/^˒^y8okjqU >&Gxvvb g-vMMxJcpL*y5u7nZReYBpgZ n4MK"iaC`-֫5^|" fIk83WX:e t@k BXl(P8.Fd\:t];᭕8pyd؈mӀ #t,nڮ1ɎhyQ@Aql֢Zq~q6sZK?[k[zH!;x+: py}WVy -Е}5d#B>)7= /)c1T1FY8rWt.p!3,nB9qف,ێcoBT&|^H$X8d_ſu>vrI!1 5ٱ(l""7}\1 ~o[z//Ӵ`14<N\ɎxG. Bjxe^@ByقuP֟"R!M@I<@*!¬* Fߵjj)( g VA,`e\SFKMӲ(RJ@Rg[ ]>p&k5$GicEM_juݾoŋ)(KxaS1$zr NnL_VȋwH LRL%Z `{eIEkι Qkl69ïWL@(:nLkha}Ht"m ~@Yl٤M/UƱwTTcZ[ +Cs,+Իm%+``JԠXi͔WR4ڶC:+puuX B$gP  _fA5"S %w$2PvKV9҉'hj ԡQUTZI@٥ |?\ OY={~羂"S$p@HE5Wz R e,+F%'dϞ/ 89CyY^!w ; X k>=3\@3I8N9߂SBuFYT˦( @NH0D +Kp%"qjy2:c*3`-~wV5..NS.2s@:?"Mʢ bQ a0.>|3u!/ְS(`]b0=ںE׷Jy":rw=|s{\fRLeYb6Mi9Q$Z E0yaz:S@*-IJvΒ, <.xc :[!D.8a[zi$ iILp yI7pʜMwAusGJ )Zet"==b4z!@iuDvOn̘{l74vryQN11CB+[8破J.p F,׈&o~_2GȌL*$\v6C0n!j$~Lħ`jMq=h0 W x'`9$YYA'0"vgϱ^%t ^| Kdy^Kr7 6X@g Crt(2cc9jfNB15iZp(3Q \REHd_a;(kA'""'Rov㑗uwvWٸZ^ 8▓w'>7#C{ ׯwx;u:_LeorƀbwG#zm~G\cұs3{<{`=8csfj~GyDocsR<= @ocǛr9mO-ɕ]'w,}T٘[cp {ѡPRe eYh/'D~HyzESsSC;q޾2ĩA3s(G Q㚊4xD`~l<&`}rv@)u 8,aIjz1@ 1H/;͐С{Wxq"K<(/{qfl}'yD dDep ! }ի X٨2 tc:8GJHE#\rNpơxJfӴ9u!HT5!ΣiyA`2"THl3AH"S}l;q0ڶEPRC&:i4 %>VpyL99`Sv*^:?c вBhBj +ri;e#wC3Mx&ީc-ʂC!:%B \wp΢zr2R{0 R -D`n+E(d- BKJ5s$|"Aev3@Oʒ[j( n(׏lʄA8YFzW 6z ? ԆCB0ȽN;)$ڶMC!}Χf+$2JtBHtP~~"0u#zϜ4>BHc) iw6nfT$!)zVU`;j[ U.4b )S3 A 0#fvl`z {,gL#!`"LrY,)P丨w0eY%bD~PV9OoC5]p^*[_5Yt$*x|羌^x/} PJ $z"|6@~%QU3/ )o|-e2. -30!Q d}Lٕ1O#B.!(c3F")!1GrՆHƞqHI9?G;$ً^I@H>XO"Y<|e^rHwķ~f{ lnk٧؆x )!xOC52)>}FGc46UQK,SZRcIzz<)O #Ytb$Lnj4kͪ$:!8Pc t" s `WB $#A9CMӣ*&kjEA͟Txt8`'8==ţwj/QV3,>zu}:MD9"5\_Kc0 8YxZG>B)j /B! =gʦ5 z>6bIGb¨%&8E!8e,<_·0.4QGYVl6(rGhѸ>=+"$a@ߵx9^| 9^\)w˜}?e[0ߔ͓J@{elL C~`]]q^3D`*eA,SJ" ?G%,2F쮮ѴXǐ%ŚC#:jg-z3k@߶k Z&h%G)T* B'qYU}"/*JClr%\;sbP&rZGF$xsi]QP:Ck VPRmiOl`6apD W&<9݌C+ `;C?"940Y ^o$EB4Ӡ2g0FⒼE5M͂ <()ŘSmC ]'Opqu][\\ mӡrćDZlG^q>EsRk\]opzvϟCzEjEQbzgyt}ƀmPМ0`Z,6ugϮ֜1Z#c"=+y? 顔45=rHOcR(.h/gE<}=>9ma!SĜ, ΃s]]SPBzO0!5H,#`El+f300ϟM|<,a@*" rBh`( dY| U3t]n|c Y3 %A?gaUAP7 k{EATސpz0BBp 2Rh-Br8.D( Z0QIDSUKhIq_#"(}x or-d(~7N78jo5v>aw5?rN3tMhvWS8ou7 _qY9?C {?ƀwxS^7;_ w8 t9EEߩFGC&FHq|/x^úbCc^kۡNwѡf]n|6 F{t|=|zQp=nxaF/|U5c{c>[F )>_r'H(,$knkM3N:A(;~(d\;_ooyN_x72J3Nϧz?tg!=Rc=פěD8j# |]U}rs8+8Gj6 MQ IDAT TaZ aT4R>&TЙF׵!D lI^j %l!M$IQfBƶJYz#;GTP \2Xq}}")E* Ah3ʂ·w )IaOr1T!5<SC +X !\9D&RM,56mrkE$w}]BdTaI)cDV@ Y'Pz=Ƹ !R18Ky>v;)c#`C2Y`L!@lʿdA"e CtQscDYR!8{/K]'BbZP ~b 1!TQZ`Yu0Tz!ClH>'צ"Ak)rh[r@j)F!Xt3Dt]hldYP!Wp> D;uhF9'ѹYf%u=gnW|!a'b\bPqd0_,O~w @>ɅV#d>5 xBx&O7~GO6I`#wCɟ|9=$!ǟ| /Pkg~Oy^޶|m;[3|sl!$`j֑ CPSs$C2# @@s!Hq{O-5^ ~')U5'w˿@k'FcD?8=9MxCMZ%{`ZP6D~xlnL$lZOws{-x}8?99J6F@g-zcI8B]c.9t!+ wIBʷC"5Xi}CCB9dQJb`r>91 (=R&E;K農z!$u?wpIW%:5okjpi(-a,Dukд=;ك3|G :,3lw%._>EPΪ䶋.lYUQ# =`#X&hѵ=Φ)΃195f6 '7P2G $EazJ<{ ??_Y>햠(iprzJ$(Bsb}yeZ\^^Zre \\\(KTElO+md _> /8 }DB:0xc C .DHA#\(䩑O4NHFMoQgRe1YGumJg6<],CB()x(ҥF2} <4C$Թs ;Z h9`zx#8[@ q8k`8e{PL,+(E`, @,D51b>#=zp ϓEiޓk;0&H`|Vb |p0I1 %蚚=ޣoZ:W=ʴ@kX˗x!n5eUxx~59^mgnSC*C1_.ِ !ZK⇶CPT$fJM)$ʊ^mZkQu>{`9L#+ "\EzB" 1&D)'x6%cF9lw[8'R D1,2NghC4X͗mMWj J -mBxmX!rh d*C?IzF6 @s]n^:h{鼎:<} BHKR y'{"1 fega>HehU9`VVS3?`ӞY.8ASsB"wW]i1_гI+XM~R ̫9YDmktZz"9jb,łk-d"P8kSu6hya u+,KphDh&S3XB#g Y8kead, s% 殯7x:;Ot4+ֈ!H%u&Y&yY,Ki `, ^$E]ט/ c,WЎRE=io.|{#aYݴȴD)YC(+,Ŕi2>x?T̺v} S9N׷W޿m=N_񆯇 Îүdxw ᠾygw#O/vwKEkv`M 6,}U>'(٧yO㜾V{ܰuϝ;=&Dv#k}:0FNC,o;>T j>ktt/c}8h*nR0^7s#|j y~Úmx _GG{O^Oxv6ZG7NP69'1XMLj|v.ا;8o3 ſҭwGMgKם%'9 4:%|x'gX=G0XaR ha%̛R[G .aGцu\AIYIJ(Wx 0re( T|B{'.CrgcXV5mn"dOcrH(U7ƂsckX,rJ6Cs <_D緮kx)ehq2Cov{Z*2&w#e| y6 γh,J8QZjFr0Y硔}ri Ur7v;5\8+0qzrnRe ,sHα^{O9E))89f?=䄃gP2ޣ*)PkGa\:)c}_u]{.9L_Yxg?SODH4'?5%x?:/] 9g^g _xG88b| |BGE@* ,#aD{\B")e+bcO[ ]X0' 99P:lv࣏?~鋈pɱ?nk , ER>'O)խ۝ EӾGZ>/"ᠸY<5fmmwr1,KԸS]D<)f‘x DXa~v IA=!F Xr{-|rT9 gH\wf4UOg`RNHuH{!MrDpͮn#6l[L)0)T)ԕQB :/#,OOaR1PCLk3,#jFh WDЉX8;gӧOჃTmۢ 5X. ACHsgJ.ܶmc!J ƧQ.(ԇfpI89sD߰)hm$iax^|jVq)24-9B89YXOq m]#r+Й[R@A0q I 0~FR ]ץHL-J(gI'pK:5C9EQLs1%+ F¸6E:pvK򜰷M] ]< ,\%e҄tIeB~6: LQ<}% 5Dᜃq$_!39,aM2Yo'dNhbs] )(Jɇ֞#?~KȀ^3r=n"_)k,T1Bgfj"5}TP7tnPeUy7 )@\{Db0Qd/_bXUmQkhMڧ0֢:(Eka \bڶ%'u$1=Ҙ-fZ;@c-躖(Kuz>+ZSfG]0֠J#2\__6 Ww;v*G\Į,j"\, ,f E@OўG8M)e$ aWtsl]AHʴ΋:3C}q >xd:QR^I>9\ߥ` T"RDNOϱ\-е]6fhj65C'ً琜# D %R 18 X,h>z ]gB!z@H'ܻ^TR`6#r4mHer( iU(=6-b[ jtt=Yił" |Hփϟ?z<~b醣*F|;/'~H#)mhi^W[,Kl6[l6D޺Z#9B$a}ߡmZU,9s1-9X N+ O f z NN=d=C|$J5+ (rʆw!"2jW֓@QIhҽIs#ch:сiЏ~p,45o59&n_OGBOq*އU7~ci@Ɖ>Đ~axMfxG{i,;;? `%ǃzs==yfwo~^`|ǛwrypF?Scw __z9=;?uSM%cÏ93ƟOsHH.1=S/'xuq6Q "qLr2}Fp2vP0wO<{Bl[|愨DSx6QB3$'Q}P֜ B刌 65cQ8==OlO4('u֚P)M* EU"OB!edy"/RW )-{nyz*n8wɹB,% cYD*ƖMW !^<AEt!SvB%K7"-|L䄾hPQDpI@9Y#xYaTH˓2"m{_pyuIhW&0 >5tﺎhXv-L*~@"9ryڄ? EYB %3]qOHB>`0؁Y dY"6H)6piH%iR{GnZ 'RY>`>#8" 9ɨt Ys%Wz׵D Ht^ILC"9T@TՙNyR0ʖ0Ơ)>F߆Mh3AgPiBBҳNjDp@=t.Iv2sR|@5Zidx e{R'hR+EԫKI/| G _{ 6[B>}u]鳧h_җ3\^]STPN_ Θt/|K_[ٟ95cRs{%loGc] G"Q=ED cOPr A+.&"9ЁCW)&LYE^(*,{Z(l>8#DYpBI19V'aHQ*E氯 xSm.۵}ȿo|ӾXj(Ri'TH. u!T(UstCt,zG!%Ռڙy8j18݇j̬L흇Ib$0)e:։ޥAY> wx., m80 e:v?PXVȒH20wM ʈSS濴aa )Q5^z58`&[Njb1GQVPRQsbr]JlBr+p&z䌜Z5  g'kzG:&hL OY ʑ3XΠ|yC,5GGLɥqF4M"Swk[Zr"H İϑw*@l'`d:îbju>=2M"҆v7E:ͪ !m).:TE.D'#ݭ:XcPU2$q ET$RX.ר 93]1(g*KT@q!vi<@Hy4>@ʢbLBDr)$`J$ =H IDAT`(R~bݙYw)ÛtCngsW23?~{ 2_`waYǻ .g}.=~:9Ǝ)"o>Q*^o~,[#||𴥌1Stn&auӑ1ĩCį꯽d+VӔǘcggp0T縑r3fgqt}H3)hcBLdf`O{"~H;:S-c<7 F Xqӛr{)x\o8_3481SM3K\B01H $T] {XCe p茳x.(!oG5EY1?8$m*YS>tF݄Ƣi:TU}|6 sGESQaC 9AT/qodIr}2w1=.vK @QDԒ9{B[+.dǑƣ_Nfm#$ުFxe}xrm%ILUW#}e6>ZdY֍h@]ػm)k׿uwS:d'6eHʠQ9o>NU-2F1#3,\ڵqwߛ ~7~'7޻iږ~o?'$=gϞ7=O?}MU.屓oi4a:2͘fM1p|&uR5C(xǝ|'چi or98ڵks>yo~2FE,kGuDeͳuNy2q3dց ꂢuhHXMFfB6bE$y¼)O~ӧ78w,UTTeVz{kΆ;} LOo{{8Nš5Y.p5zEpX=e N5qxbLGR@\֝ӃVsۊK J M9h *F;@T,asRtؖEaIB_*R4)iB\-l6@^ - jAZ)~e4U-&eٰ;aN{rt: $ńoq$+Q;$N:`lRQX( c"ȜPqmhX/sϝwpIvwhHl:ٳ))qp语hŹgPٵ:čS[#Y+Ϛld:/DA/I 4!21&I1ZBX`KGO5m+Odi%sFMNzqs *:u &(SD2bNYUD&imH$8rim9t| /dTWĤYA1M֒ya!˃lu%*ZgoG&#n_Qq8z&5>US3Nؾ8!2KsZzU`Qqd6e:bYpzҎy^uM=oBXE1eT9#)\K#MFջ{3H(HP75}g4QV ^H)m ;L.yZjq,QIJxV'UUIS9'66gM"+$>1'B} Dl(^=Ο={Y)|1 mhbpm~'c%8Ė|6Re){:y"DXAph>'jGYVTUE')rQ/ȋܤ, 1][M Q:Ms<#ZWGpkoxjU|V}3L-Y7-rLCzٟ? M2ܰ#3oq^jU3mex}ގ[^{Z[-l?nm( -斧sD#\U#ڷ?"Bs0hIAUmgW~ ~qnAݲd{>W^ߗ;QW2czL?Ȭ_--m('/kp&Ǿ"xι n]_+*:).rY4Cnb,-يBʮ(m n%{?tx'˳prRUUُepoB+ wfs>cA8=ƆMs^~2O5FiByj"6$MmKEdY]_wMrsv*_җhQ)7mK"lcN2qN6v*/~![Њ0W~xx"oل]{Y{Y8IIzRRaEjQE1Ċ,v[+{1N:p4Y˵k<<37PqJk[h\0¶<{x͍MAwTUgOsUaӶIں&hGU:Amw3 +//}V=ڦa6Q5i)wu'dww"˺ 8b(%w,NFSU։= b.E`0Cnvhw9&^ZM-`^j4tU ̌6d|oĎ?.s!P"NJoZ;U8H =;rHUהAݵ);;S['X_Bk[$b17H3D|3ecs*1W]^ Ҋzm e%.8eNRR>0@ `dEBF;{C^NnOf|sU%~9կqENl= emmȵkXX_g<%5wL{ri'Q x3SL8[oGpľho~dJ~\~Rx4Y Lg #cJtv-{T:6oCTЪ9jU-?M, UYbi%"+u~o@ӊU"z>%Dp(e)^)S(W<)E ߎIv! C8WG;>17B<1g96[P_nU7׾=p׭v6zms2C?psG͇y bGVpv=:EGurȻ|U>0w$%h(?T~D8PJ,Z(-OW o痐UQP}}/~:HVmG{[Y~yȆ[9l?"+c͟ǿf+_"G8ۊ-C)oPto8D;?/r⥣Aq_WcWu]x*Kl8qh7p)͇;^^ӿ3< )YUB@n,̽R S [DY.'>M9??#vox7??c?3GLQZIK)bC&hݔR(mrh!$1}/u?җYKvو˟iE Q @({Oc>}_ ,?%1pM#ސFr <.o먟|Γߔ\(@UC(&"-'NGܹG|ί~E)M$hʦS#[e{}G~Cc~W~<ÇsUYXUY=$Yʇ?GگO~tʧ>{?WOBzcOXֲA]VTUl:8$K,ζ?Ms&uU{ٹKH㬨V@ s)j]rWw+n")7MvK5~swiPڴђc4-yG1u(Js*NbNgN Y_R=FC!#l#H+b&K0ZaTJ&>֖?d̢Db+WpŠ_Xi\0Fݽͳ/eY1ywq4Ş\rzG%\*.g:7pkkXk9Y+ `SuիL3lyw?s/H]r·;c w?(׾FD8ߊŪWx를;{t6cmַ>b^2 U]13=&z9Q!T1Dv3%4`"m >Iq`LNLt$Tqa"TUkg>}Fe-^u˽ՂCTG>0G7WWo$Zy}\1:hiOs Yc:w%Wط+>1EF&)עJ`Nm`:ThtU?hCg4 EL.K_λ~=rI5Z@z_+׆$9s:U^z2ΎDx4̓w\TE@* IDAT{L$Q(rA{ )=X$Q"eSBvɳٴ@uAcZY(HtJi%1UBPDKKpi,^8ע3͵5Jyy[|g%:I8^y%676 `g>b֭\UpFun9grmIҔgcxkq^tR4rv,FI{PGȄZL>t6u] =I&tC@6 *=Dhe^NIt…;`mc Zlop0Ev[['x񕗘N xn^,ѱ&M3-dYF4mV01I,mI㼧9E/"BTZ+H Q3XSpuvYXQL+[+1%7,0g\eXnTkh$hr̹]?< +G+o_AW3 }W1lc_wةsC|;s9߼W}s/ t*y.@'[['y:3;W+WJ)CzP ' OUY?c=SO,Vw{?O]͔W'x&_|laũ3Ǐ߰*WJ{Y%~uY Qw.zy{\)76x'xDSQD*Z]Fw__;i\mmwig$˷k}֖4KilΝ?{C1peii(|>A.p/Miły#3zZgUnD_x~8s f K<ȣ|_\:i[%Cu,%S`oz}/rm{*:槶+_˿#@/4Ga8xYh{7=f%.^t$ w}_2uUƵ[H3A$%m }Q4M :bm}r^Rׁ%2*1:l{MS75mX.QRZCޮ1QiJ_KŇWLXdJmL$6uC a#SBWk}gR)j$.M.W.CWHk$!O%22YBY."MYƹ3g{DQ"wᐵyzp8O) ؖ^3 Nn;.ev}N y1N,5La-(O(zئ@R5p4BGH,ZEA E)9<ȴVY!z}mZh<F(z*;4MԋZvd`(VuC$* NlF$i&n)EQ0e'1e]cx:USwK2S]rM"m㈦mi]KZF88p=8pm, jwf C(FEb 3@qVj؅ ?G9U]ښ1Z9ƒ9MSi("qMJ/w2K Ey (|(&eWy,=tG~4j5&Ae~B?+YJ#8*|s7쾻KП`?GWx)W3WSﷅ£[Bc~iSrǝwY?<3>?lD> ׮^ mbBFqbǐngm} T' >6>[YȻedzFGKvz>CX:\Qb?HstdIP|w/;^~;Vr1$~F#~ce5|Z?lmmyhϳ{zP*G|իWZc?)A={?ԧYfLsЊdhDfE]õ5A锺ӌ<:p!Sk3LIX[#;L5! -3 bQDTUMۊYg銦yEm)@z0#Je%MڜǢ@0:A-l.4%11MՐZ -uUȚ(05i<y׶T"(hLDq٣ ICX=$o:Ƴw}ʛxu$Q[XusZKTU>֯um s0#/WV D+c^Oy߹Z5jeˁULU<~q,ޣ; PZkq9KU7ΣA+.k/Z)uC$*Nq)ra -5x/Qm)&N:sT$p i07-mo\Sі%Ʉj /X1^y$hDYA*l>K] {$Rb-@U)6JJ޵X D$Id8UTM˯GkNlg1{딳 {x #tFoJtp쨪J\[L2uXH+YATJ~/'cu%Y )ˆBeuEP2u$Ӝm( 8)xGYԵシt6%ͅ蘦){Զ!vvw0"dfS担( X,J9MXވ;P"+ C66O 拒|J] I~XȺuhGC^ eIREbAe(=Y^ }`oml>U00IL4, [o[s[6'yPMM "WL/p!AE U]f}c^^sZB8jP4`(ygKԘ{}^yU\z#z|}!(l:e4T:ud,k 98M3td1iUDf Mے&k6s'b!E1WEASX{Kg$Y*ca I\,KСFW~[o}F׾=|T+61XAW])"[9:kfۣRw8Z=Dvǜae?JN(PS0W}Ç{3qۃwpGdvߘz-7͊>RںmtϿ!6w} X~5w̒+}t}U _of7N~` ^Q`/1?F6 (Y޿1ϟt0gV^GrûG_k<>G~t z`K`~'3o jnClI_/@bHe8UP>?jF2twNs[⅋,yQ`"CH駟>衇p3x/Ei{=ƅ 2U=s! t'xg-e-j^a2N<b~uHm UR.*;.]7K1*0?#ijQXqBdbux:ϽFQۿsi iWsVuPH~JID(+ʲUzG87AyRIf} յ?@uN=~'RII!+0ֵ6ض{DrO IDATKVR4 vWZ2[恵U`wj߉LM-&֠kheޒ( 6 BAV].tzK=-&PM J"b*ؘ jCk=+:JK8 쎧|[tJ:f^17w|-6yYosvmœ^c+(Zoi\CFD"#4 żl&EN4Qh0]xQO~l^6N}ђ#CG8_7ַCGwug8s|׻2ي/#|jБj>/jH cbZk9ybX̧b=25&(—A=mY%m#u2GdY=>'㌺i%8 *2QM7P=_1[lRDPW#m++s`ε(f:h)In[X+p-ddJ.hFqStZ(mCՠ# { Vݫs}ZQh[/ Hdp!Viq<ϙΦa1cVJZ$=Ih]b${26ԴfϽ>f^VdiJ81_!RB#ˊ`ixčprl>cQ 4Mov`\' #[[^Zn߾-m癗 ՆDK mny!sάuk s~~, uzapVՉsMi$+IV=s/ V+3JZQ/+韍T;qǻs*35aZKdo1`-7s|9ml/{aRm F,_@ȵ?)FysJ2qUw*YkB:S8|%)@v&Wd@QW!%QK&ZEM՚-^^S"W~א$gsg)gxϏ_~ z._f֭^5r-o^3ͤ(2͋mFry񏟹oj:NyK*9z/2>럼g_*Jh3Q1:Mygҕ+UzϾ?׿jjjx<' O!`_7icL"C#諾cĦm>{Ẩ ],K#.^x_W?1n޺B/<<șu}Q~M7V7я~oo:s_Hֲdg;@*{y{3| |KRcl#ҢAqfeh$RwJ;ImZ8^^%Z4V4"118`69mg[m!\2ʈB^)Eotr^|MGPvLBdk/~ԧ㾫W78JQyO]V4?ꚣ=]1c@kG[r=ĥc҄-3(r2g<r4a6x+_1 Qg^x,LgsDB 5YF۶|Cb296\zyq||Ͻܸu4sW 0֊XG`CIbLqp[`GhQ/u˾gtԙȄ~4ء-Qp> y׼!꺒=nxO)ΝLyz|kRujDm~XλuG^ᆸ,-la}-VB: J@q~6Aܱ)C^bIeE xBjb4vP-I6 0\οEsW -_u8Ik[.}tM-}>( }pciJIm0* I6tbܵ k駟fk8x>\t `<Wwc0)L i+ 4qlJh $kd佭Y3*Ls؋2,Kʲfk8 !nņiIbk+CٱJlt2' H ]34yMņ묔bX 88lޡ܉+{m)|(o,NȋWkF9©v`!JWX{6n=(d\j"5|*(B;#lMȏvD\e k Y&iϧZ,&K 0"Q'Mʑ(=QlҘpc|oeQ"փTUt6e{s,sl;>C! G4NML4,3M`QU FQb-}OSw}꬧ikRDYW%IVL1.A`ȵ6ﺥ8ehocQ:!eD$qDUfQ/ړ;Xp{>&"tdI4IhjqNQZd6Eၸ"86iϿtK4bjB,Y) q eYRW7e@kp$YڨV!}ֻeYG4 9xQ sj p-FIr{#Ogs(b41D5]VdiNY-h;,#]aŷu$x&IB( TeEoZ; {}a-IS\(F;Fo&#F1 tIFSWBphJyW̳` ,kF8i[a^\;qjj, Dƒ 4I(gnP7 mע*"J[+*L]t*إe+Wy!v/0Ϩ(2E 8VՠIq/EItbGQ_ǜNq =&"!=Ў ѐ,{,k0"E.dbO2yoyN@Q, c8JZ x{U)"\fǜjWvL/z:}߸/RG _|kk;ʹ;5ҕ#e~__w-mwߡ*EQ(Oz$g|ޥ3Oݩ~m'?In~2O}U}5/wR`gwoxM]tgaQx@TQy}]oQ~壿*5yY0pΑX_Y+wh֊U:!ҥZ?Ŀ{ᅮ"6Lrmұxvxx45G>W??=|ٛ|fG?afk Awmf t%S҆k)`hl>L&lkyɋ|omfs4啯|7鼒-CPb+f2LxDUn=BA#a=z<NJVB @f;'V<EϭIEHXO>נk6;(4U\qҲѩM2˸/Y)KγZ)3GcLCn8 p˜^M5>cs-Z*̭ Jf'nڠi1`>[X2 wKsK<p56ddcv.\YT%^ko-q(&g@sN^T|WՂ,Oe4-M]j KSf_ }ٿ}gzJlV@Ţj Ify >rņA>В‹/Qd)Y*i -Y.,vQo UkE14hG<u`18/ E0$ǡmۢ,?ZOUw16TUEUIR+c(-zZ#a.8({c0Z2swvvHto.eddXOku2OY,i`&Btb0l6b@Q\;;; G#@hچ6IP"APXK ld̦ J\,j*uBk!Wz2+IЁ(S"צE1YIDu2{8b0z2\cZK4.N88R׵d|ga]M}9Z)2 xײA7K(B] #Ibꦦ39M[am? ܸq$pVoj׮]c:z!3;V8# QZBK}*XӋD]4K\'6r>!Pq,N ڄ Ysw;iWO+ݮ粨~»P}~O|,OWFׯV?U0majοwùy6>__ 9ϳ>'<+߯{٭ֿwzpUysg~b y#lmU:kyZgX i IDATn}%i~<4O>$w}WGIPH]z׹g~6d:{7WUmGvbsCnvH#Қ`(`ZEI]xoKbD0&ƨm%"Ril}s?G^xz1ozyոzKm]f\SH>dG FCaQΈHH<;mx.9zʼn@iX%m]R:mkc0H@'s/w)u|˩:w~No2> 'jR(A'[UpF,$CXWkmzlg72\rJm)ҩ%A} z΂ɁE( FDIʼ,iZIߡC9v.i S:j D!dB8-x2 t 1nZcΡulZTm\S(ںŶ ]]S 2bAZ|35}= d$ItʢVʄ:6 #Áύ @ef ra4XX4Mx4b<y>{/[jTFĩϦybQ2;p M Q/ftHeSV%mPZb6-ňbPhO]UAa]QY󙸽$|PQHUU3=bLx+ert(T%\Wq[s$qB׶ԋ!41iCκID@ 󡺬a28u9'4傶i$3@\n[K7 Dץ!dqrٶ U9~IKM?g-{LȲ(Id>GiJ^AM 3U5̦Sc(q-ڶ#KRTqXqxxHYGm4#-ajxݫ_-9ݭX/swuCAMO`pޓyǒQjs4PUu 7H\l|&&2Iŋeγ- <F=(, `Ãr4(_AK]^L,|.`qӶ! ˉ=x9 C<)y^b:=DPU%`իGt]HI*&OPUE3<\p ȉ /˒b.(ILY.MhxU n\N}t~wmivQDU4Mõ#硇 487$Ie8Hk 8{G/J}ܝE`8jjT (Ɋ('MctBbAXfKŐ|Qt :x%qbBڒL8PGQVBPڜNՊ r s_DSZ+ݕOuNvZ!ݘ~es\䞪€:-jI+DBci̽F:$PjWz͊~+Bo`+^usdӭ)~M};l!egv 6;+mw;zÿşjscb̬_q/l%pUeyU&:l@dvg;tOlٳOeٟ]ӝ9gw+!o*W n3=[.?b8[~_p@WeS2Q>k^|ڻ`ik3_5x1k3g?Ca"o~G6t2ϸWh{Lg|_k`hĭiQT;[N}³Q \lSoo1oִMs?ӄRȈW?+|/]bd/>Cd:$2 ?3?w}wmK5Ry[rfݯʷ+(i_!+};5_Uؖ'|g=&a\d-*ɛ۬Vt}gEIh4ڸCxO~qōM&|iP {~߽q8L>Ϟpn!4IcַeZ+꺡ŏ\qݫ]O/JKfe Y~U{d1BI|!졥H%)ʶD&prZ"m[ł8(NKZb<h<µrmg1Q ™A)Q8/dmѵgA)EA KV׉Ӯ֗Z]oфX<L9IJ JeYҴ<URV 9Ȣ1Qfoc/HVr;:JurVڢ66WRuD4C$W5;.H¸o3M ]KkT\\c0ʠmd_@b"bJU.pJ17{l_JZ ;Kƭ`b.]D :/ݼMYVIFֲWT1ҊTMe╨TX{:y_ j\S`1~#ƊnP頤[D:PliOt^=qLCHlB׷VjW!4MCtΓu_oG4_gmos˜kt̟LOԆ9P[Uhs|~Z˫iVׁ:9U)%@(.b5+A$]h @q-c v꾯MfO c)hn:=`AմUI1 @Wh/chq$ 8vJVO4¥(,X꺎,Mb9e) "'65[m[x O׼ c"4{Mە(݇~|J,c0xkbCh#MRtc]f6mGL ]ױë_*nݾN+0s`N bm/fݦ隆XےxM5m w:q0 #1"2>Me j(CY C @]u -1q!E#OiP #[렞t,um;8H3"-.3?r|ٌic bDZQ6xqƆΧn$&3ڦEOƐhqaHJ[G16i}"|S7bgsz_3 6Ȣ\`Қ\H}^y|}PMgOU5mMdhp^TYVж5D4u+cpUE%)QmZ3n…]u6Aqw 1l>1]4tRъbE=!E.tlԵ-rQqQ [$iL<*B$Mpxx(I*e%yYe<;ˈ3qHFKm(b8&2`t߄E6D #B,3(a:b{{Gr*%c0Bv)ဣX'AŜD Cit:%2IhfܕgHϲT]p8m~~i["ml:k-(:bhJ),؁Os,[<{{{vc$*kH"d(Kl4׽`K/@vU"˄ Ҵ-DMӾ6Xsf`zѴҡFb;Y)uuZ n;K]7dY1QjB}7N$KW/G}k#/"S+^3ZDJ}We紌 !P+XghLe+{" K=6(Y+mRr܌2٩^Ya{C 5`/Z䞢WXɺW+VJ՘.AE )[{s}9wW^\~}oYg2/_eAݯ;+8ּÝr<;;vN{Ϳ }G>ao}m؏p_!n g-oHzg7>3\L8i5ǝo 񏟻z%ԧ>!8zk'?O2VytO2?[QJUWTuCI&P4^N87-GbB/z9,ˍ"eIE$iJsǟxB&m۫EeOm~^xkŔd)k׮1+`pƢ-oy3ȇAǟx"EQV0yܴP%v^6-h[~իOfPFX%?O׶t)&' q޹l";;{Guj(24mGupx~L5Kaf3\p}=c$h2a53$ZQt#R梄#4m;lo(v-M2Ed[CF2&ofT |U6rMv e.H] A@_8NKͮNhY8vHFaLQ Xzdo B[Rf;pи/MQJZϦuD\ؽO>݋b(%0,½ 'qLE0Qsh-Z|7vh;ug;B9M#wOb!MF#LdʰnYQ'IګҢ2RރbB8цN`J զV:3}7MtWu:cpJ<]XhR8g8=exoS @{uNʫ~=Kft^W+}CV׭OtmA`y*@ PNlEJL X(cd|шv6J`県Eum4U8'Y4 G]L4J C8\,6 `r1MӢTG%ޠbmmlC:R1Iʭ}^rK$&g1/ijM,nz,/h[K۵Di;/|Og;<1?8#QFx ,k׮Ҷ5#rd4+\[=1fR%^DN (Mޭ[lk;:#YyZ tm'$e#hkcjFQ0JHF+)n3,2Lu2<ـ,M!N"F឴9Jk:k9>>,bH"O_ddVWQKOn>?ZkC~z'Dq,`[6QWZmx_kEؘ`7/CQJ}"I@ڳt]CA tq$IFڶq"zi=%Ͳ~l JwI׃!Du#dI X{XԏSW&dJ$M#.J6_erϩw䝺 1γhⶡ5qBQMŵ隆/(9y,DÉ4Do"R7-q$n3[̙Mݡm_RQWuҷMۻ5MKUn3f)u-$43L'a]q,:!Wu֚m ?c[[U $⮓l ![Ői<p0BB2q |`Q%á\kI|A]#gU(e29!sʲd>eBb1(giC۵TM:"MS$A{{L DQb[m\lwwIvXe:sIe,aI"Q.sq+ Z=+Z0,xcxb% E5en{Ogd$Icڶf<"bʺbg{ŢDiMe GCcwqү,6[-kѐpl:e>Q 9$: iKLDӖ1iVލJ22JKYQI* t]|6# ;}yG4u_#2yڦ(, IDATI&I1)2ϭ$MUnKv5QU%]ױbAQdy6QPk-6Sd\G\%szQ;GUUh$ BMޡ1d حJ}roՂ{/=- +~ZmEN_JuZt{ݼv꜌27gHPwNtVd`2s3}P4Ut]۝QvW~i}#߷/}綩WjӍj( oI[WbKf|R{8gf >l{~ VC];e?>ir1շ):Cvv/8e]3n f:,k1ZK97䥗^ZK$I%m q(*iZ1z.mX *+E= eyii>Ouy~}WO|R_د%_. _IXܺJR4Mw/ wx(m}7G#" KH-NH-u%aiߑ4,m- GCeInLR61(VuYIA%2loKûOv8kq$mr EQPH{*fIFYKA{\p||Kׯ3yQ.z!L2hmC ,{`BuKKP:Չ׋M_4}fP2!R r4UEucPR+fUUoQ\@dF%T(Ebmk/J~GR;CJr=`‘"}ˣTZyp h$ۗ`mukfQeۈ JѶ%hx)8g^Iq\Y⦖K/&)y3iێ8]rzh8%Nb ITb`V -k\^x:Lݺ)!y"$vYvNb#1/Gڠ}>{pWJK qlG{?<ⳏ?_`O6j}ֿ&yą='{SyܬWM8u2V T5qNK{ݷrJG.J;ԩE9 q1r(:7>(">DӨ\b`mhڞn^),o> SC 5[1TeEf,M+_黎ӓ{fBr.щy/'ΣqzKNNN99>aROԬV+%}\ZSt(Ngo0Vf%uij%y:Rd͛yZt ݊W^|bBM^?N,g0:(S/~7v1ѭd Wڐe>Fi:۶T&H7F};WȀi% Xi} Pv͛˝k„ȘeyAbBȋj)M]hQA&k볱<}rq]e&5x!ZLjt4Jk75K)!{r {= LןX?%ݰԗ1B5ݼBĨRKRrs\}0v֣TƋ?eo*Բ|Ōnu|1BX}4X}i?Ra\wA՗p?~z$a㺓ꃵ8&OLꬅ6+?U:Pscg\γz(R{u}h[Be!]jU6˔ZbجVL'S|jeIQJHx۶~NONC`蜀(I=-ͪՆƤ|omQ'E=VTUeN$n Hc(EÐ2f6573:dvL5Bn^ά(X Y3ЫȠ,e>ƒxQ\@Ly*zyL?!jB4`A3D"$C aQc%U)ȭAY9Ls42je1*G Eԧ21Zx j9LdR,s P>xXp ^3y]VUg#!:BqUy%YMULRxfE;O~(_;-o~"KvY,613nݼ%*5 HXRJl.*ɒpK9XQQkmR~pLT/ /:H)uiecsv^=`_4*]_n=_QJMbifT`ǤP&U9ڢI*N3f_X/_>Viq롐<j6Ϩ(@(Lux?H 0To}zuVkz2)<"t= Q&s<՜軦mX.X+ ˌFZZ99=k6b"8YoEN^ba5>_}ϻHʚ|3~s`R"Csꪦrb ?K 9dr f:q롛<#L'͊(Y.TUl6E+ϳ,KW_B6JTD[7s йwY*+J3D0A5m28wvj0 g.FJ p{x:U] rmťN$HPAU=D+ɄVGgy>g?i^{Yrxӵ|[ʷ=~ifRE8㨌!봖F7qMT]ĀsLD]EXMj Zkf{LHʽp5 cB0Ɗ .Èھ]!z򼤪 : Y.@5D^׋C)R)elZMόOb eDrdkrږrȎkr>{X&h5Fg %jcRM4 m(ԓN^MdqIWYFY HYmP1^*d7Z-F@7/n\lzh$${DK9O!t6o>FrkwR}kq:u=pG~и4E)d(gMIr{70* 1FNOkh׹q=ѵ-Œ#>ysxx@4TU>xu{z,XgY"p"NBSp cʂ,$ ixGxC)GqdM R/Klfqnp:?_;*g{3ʲDi{uB{i{t UUKU-E|ൻq|| ھh"xGN'51'Oer^kɲY.}56)u]1I]\U)$⺪2,W+ڦIi? EEӮhR=zszY-+!N&hmsN2'C=!UY̗sVUU'EHlK5"1~Ʉɔ<˙L*ʲP/%R+ 9Ns{w_g~z,$Ǻk;Ђ$cR*i( ~i#)RC;0 s;AJ)1;q\87zRxKXd"DvAH@ͨ꒲Jm(G:o6چTεWF(QUU甧UxYy}`!wkHh.W(_|QL\kpz/4~p%+"w2>s+%%cʽ/QmErugo)&)__ç~GEp_駟f;˴?C}Owd֠y/"S. ͯnY&֦!x^JR-@QEhyw\bɵPXԶ-Ւ0Nr)M_Aԥ{|xY#4JII=0b1IYhk.jtNQm3}R1jbg|-( MRsI]9GYfBW,υ$4Sc-:זw uQex%bX$pUʄ&clX*')UE4 8hQso(7Ә@\' cLL6>L ~u-ESP] 9E[^|aX ;1Jᓽ6Fr/<媧 ǸO~c|{7nPzʓO_gJV1Gw2`f>áϢ V>f)4B*HM[#CR%G)-);c"ՆMk>3xol\EL|9`xapi\/ɚQ_.9UatLuX4AvjS1è֕qqJg# %zLdKoP7D%)JHF(*$4L&{Y *ȋLh{/Z dH~g R9qȭ%hkNKfжK2cȭ eQmZr0|ws ˖aUE;:oji8kS<[kgrV"P{2fu/2uYs<ø> jf{Tyɲ]1?\Q\~@u8)StmOB"fy_}6D@hߪ,xԋ2y5ϵ&sb6I:])t%Y̡fZRQrUPMj2cpm 6 |+o:&p4?}Ӑ53xRh+Vd9tƵoQ )TF3I>>{r:|7$87B0uƪmi++\9Z6V?Ѧh=༜c!UzfE 1Y12(<&5> 'bcd6c\ 'C`rNdh+\e%J(8{y.`lF;&u蔬/چ=f&uM6*,:t]GYV^鄮t^Oމr܆ EQ(ZNOi)mӤߞP, ;I (9lfZ}yɪ]1d*!rW0R%AlaSO{w5e,UE?jm]QR㻞#u=ac%ժa2b)vdZMsd.+£13Y{/ZS_W0fKuǔ''~:UUTJc`!f㺘K)5wFgzmRdDٵWQ⇞{,ޏ98O~F8-1 2ҹ9f22?= tR7KV>Fhc mr`\JĆ($K L(mHi<t Rɳ,͍QгC IDAT>/fTǝe}C?f}z!~×*wlugv"n;dkq>uŭ/ jSS%<|D}\nv[~Η|4ީ@VozEiJP'붭͌` 璈$`#,񷄭nmj .Bp>{&Wj <_?O62׶j5,{ml<Ĕ|Ivۍ,q/۬`*s9?o?gZ3G+nT8H)*e3m}ӍZYzdߢsǦ͹:G9jA_/U~O_b̯Rxk#9JI3߯@ꃭ+^mG؈bM~>u0\6|q{L~?[ۅ>ws|?kף3mݡ\ӟ8oc>> Ϥi1toG)7$ke5>ˉm\QXmyyׯ|0pu]~o}ߣV n̲'>w~w..'JJ_gxϻ߽t'D6g 4rk$d%/Eg}G~-ʪgE!JQ5o{ymgY5hĚ yqy&dKNV??v??O|c|? uU5j~ov+,[Μ,3-oy˅}GΦ|Sbks|W}ss#Osr$ f?Z !LwQLg׷xwXF+E,V # mZ^z%>, n=L;'Z3 .5^m16}bGbP!ڱY+Rb[΍pc]ɎKx&Tr1cA.-H-qm5m46]"/J oɭ1&vjӽh:K:dq.ʱ< Jj#&pG{׺n|yZCor Zz} y={M$9mkd2d2{Ǽp' L^XϤԻ>h1v%q&)劢(q *kn61LSlMn3NNt};fb$&M-đH[LИ8܋ mбt,":q"eZ(=uCךJVa;]V\N8Z%)E۱8:*"iq{vuNsu:9Z~T_) ql֣T9MR?kT4Xdھ\DjZű%ƨt$2h%`~GY-dx f Ttr b(ap lQ qlpm<9Iuݽɽ#QVeRleĽ'BI5e53>q efÔecUN~v5Kt]j$O9'Zli<ۣ{8'JXTAԹ!td_峟K/Q5?̗K^\eAU( y9#! ]O0x^/U~e~|gVθveQprt4Hg eQ* Ѧj LH0ĈEJQVbP | ^#VwrcobR]C@> vYK9ɫtpd" 9s6Aj}FcmNf2Qv@0l*v*#~{17Hwm9MM**Q\k-, cScP9nBȊ&3UYe%JvͪTU Cc-}FK咢(PDV͊` ӽw^t6!/ x-Dpkێf%cY3$Ӵ-78I|bH8>9&tRӴ1F:QtZӺn풖h6Er1&srr,bI@cDNpnhw-b}:_PUV/@_mQBz0Y3ޡ4ra#G( aH%}5zX}}tgѢZoEʰoz00Ɛ#nܼ+2 <)P(OOO]#MAJ[WdY?kڮ$Fjk35^G)Y5MI! Z#JTn't:ƍ.x-q \'Ie-m"sCDzA"1`;b%bh}ק>k/5C;)+V0y'ǿ}jn*ɏ;o10bkwψ, ? bϞ_>μsķ|7]Ȉb',Lw~/|$,mwYϻ.˷6~jxEbR; N H}kue,qÀV[a239Lp]GX0CX˷S&SI5Fl60&)[`op>-вnȇIe"]T)W__[kRQ*ĚرVٜ4&әdvXI̘)m"EqTMP-'vgjWH?8h!E9D%^cw6yMS@Y1Q!Î !COמVu^RUSN ߹˪sآ k l LʒjEEhjm5dW?xIy ,ee y2kyٌlJآ`XP%m߱\,Ed,Of AH 6Z\Ot PZz7BZ+YaHH6ӒIcwcrr>YU"Rj#4swQȰWM®/cM1--ie퀧v{Jj-:#8BNYrS=JinݺAZ-z@^yFR[C7h۱.WnHs˲b\`l`o CO3L1ZX-noyh9ZК!BaJ`\K]OF;XŸ1̦l2t/y ^x.z*9d(WU"D+qG0Fjͼh4eY1M۲'UӑY{)Ea3!5t]\e3^ӻ<7tubtrӋhcbBL*wYkwR5x\OgܼyYjVbm-Y6+m7m$t;Z+ *Is9x%~] ^Me{c\ pTQ߶76ZҫKSu~/~n] |F龻opP[ خz$(9#_r{@{J[&5a i50 &)E0y:A7i&% mQD~w;C|9gvxgO^|>PDz'*4Xn97cZѬVTu9ƔdFoyn`Rբ.X sժW`2۟|tRRIaGjQXZJC:ʢ&F&\Ld+e=ƬջeN^'c(Q6)PD02@):\>I$ڒt&\*v#.ȅH)5flxӼZjZ#1Go˩)`l 3 tBG,@^J֪}ovJU^Q5ϱCΪd(nv2RtDkh6SxT\ XĦJBaChksБeT5M٧]IB dVClڶ78;8Gb"gNjlY@ /q6\iؑ{&Ȝ)1Fdz])љIIUtOݺT1 %nLD~H `-9F2e):*quJLⳎVHV\0yFe^\2F- ,7ߤ*&@Z#iQ?wNl^UۮwpÊ1'9+(+ٞ5w)_YYq",n_,W+]puSz|U^lS!R#Egd&jt]}'`I,OO R,]fCw&ԨU5e6Pܷ-GG ݂wcdA$gc B9;w-0(BAlyoXFщ c0`!Ԛn1g1?[I.t u;!6*gQ{qG%>=nFa~fچg2p}?xk,JB!$VM-g}Hue6S%{o15b1> =FuDLyLk5:,v H&;FDֱFb=Ȓ htV%g9mZ;_"Ơu޵:Ș8=PJ(9!"g,ZbX1Fln;Ĥa`Ht:<vY6fX-ZM0 ԓjfm;qX;dG'"v>[!FѬVU=FAU=m#yBmr{UzyʗY,}qgNK1&G͹&Yrs);18;Xk"3{8w=}H Xh[!y|ĕVOOLhm8:9"Kk%k=XD%b IDATb~J,2el=Z)Œӑؓ9J+a(XTEEUN)Z+_7'ֆ;aRO8ٵִMCe. ϋ'B@b%q4Mc1CZ,:Y;V͒,WmCYR8fqBdyFDZO\,GF,ˤ4]1MSW/{EYz&rk64܈yYٓ_3ro_ wd|PŇ/xwY&}"we{]M?8>V<Djeê_-n}ݫ0_W~S8o87v>OpJp/ݽ#Jɐ`Ƙ4(=VտWX,Wۢ({l IYQY~؏Xe^?s?GQ8'͔*)IP(YYfʜ<o-fooz/{k-{=֚wѾ-o30p4 5E?gOO*@k)v9{~1ϯ<^+tzxeYc\νRGi?2l:6}p(mqͪXχ@]GYU!=EYY۴b^}|`H͉ =<|?8#i!{al2!C9sA׹m]ql#LmFhiy%mۥy5$H }nH*]d>>زwcq(jCݫ 5zNYc .s= >xFM2柸lXOFR C ͪs{`3:Je:u&=1xz&67Def npXk'do%[U[⃗QX,y&;NQg1|O@ae27+y- 3%6uu3[?-WǸQqz=6I`XbT#P CitEVW>|qLY\:s&q͍ms8vM1PE BF' D|cwm5-s,N X+drRBHVN&uM[,#ϬAAl_z[=7&5y x5<³b[D'%!*zuuf\j@Sil};j-s%")eXC!@ Â!| #$6 DĄX%#[v-刲EZbICR lͼ~gˇnUwf4c~U=4TTe7ŝ;wPnpM]¸fcSOgAOpwEn>Y:|~lbăh lS!Oߔ+vR֌uΡ-+Og@\,W+0I((sZHxc(d!ニW|?<|+pnL |=G !PM z.$Nl$`YܬᭁR 0xH+8A*=Tdr򺥔4 BҸ' {*Q"j1uco]. f' 6UMRqEe&8 $Wʱ&̓sP:N7HR5س\ #'YU^o辯4B]WHF^hIq 0$|>|@@YپMc=:ΠV=OvDk$9Ҩ GE5rQRt12>8l TH 9qb^{uxqxxt4Kqv:(;TuQR`2P=9'dpe):!J_<8_^Y|uU0Q4 Nо,t%٬a:C >s, Md$Ѩ:^m=zl/Hh n#8TT3Ƒx+%1͑& Vڶl6C^PBg EC,ɰlp\R8iRLSBN41Q ^o3OcӼ)^0ޢkt qR)ATy@n\zJb΁ Dh;"[IE1I\C;)\k$ _i|1cdӽgW.X= C}uCQv?6yln/l+4 ]߸{P.`{QaeÎyc-׵{1nC!߽ #1>|Kc]3_._7~)B`W/am akEeן臌:ۨ^NJz) J.kTF]mAV;_n~;|8CXgx-17?w쯪/}K)7~k{Α!?hK?bfl74.a*~_MQ,@o+4M?o81MMby.8͒Hmu~8f9?OO\{\> 1djYkݭ4i-ߌO'oKR ,D傍sH% PII^Zr"rRqM ;rTH2(BI믿7ONK=1 gz܆?7l>^l,fj?m^f_Fw!p0.nTm߅~󑢒^π!+ &:J20@ylLuaN$RXI &<%B) S$CPk/k_<^+_5nd)M|އoo{oQ :Etl DkiBx+pp65M0iKL̓R D"?ԓ?XE5{ L$$X$ƴpTJ\Rgrs20]ﻶZwKZ@\@pkt]ZH4%6MӠk4D{=Ed pA!$Y4zs- B@i" j{ =:kM&޺H< Mbɚ Y{O ujӓ\pt܀Z$'` ."~&:N4[1kHyDw/b1d8GŢeKvѾZ(OMUl0վ:Hi:处(ӷ.򚛆;g&Ak>#D9sG' '" FQH M[Y+4M] 爔hzh^&uZI *^+O@n$;gY$I %Db|c eY: .!y2QN`AT%KLg3ڷ$]A؃"/`b6Go&/Αe!BSװ.V5}Up!&ya:`q@7:HGq F_猒勓ҿ7^AUhRH4+ 0mL&ȋ,RR,N(d xrzX7- p)Ǟs4]L "r'] 5l>C&c$1ƢE{Xr5jD(>NRLga@-l\ w{7>/}GۼkW1e8?1ģ%l$܄}_en2=VU; :WKl6:^gZㄕ=E#e0?L;=|=6v=>8 %yb|+-9߅?Zjbkivɮ,V|W)a5qo]}3˺[57piSW=:}t^vaG]=(Cvm{ y|˟ko~KSW }M. hƄ'؋syՀvƔ[5-N6zD渮V >q–Hk^Wc>+yg<:ej|6_O^Uu}mVdbر S4ap7o ̯ڵ[0 dxh*Z3~:cYH]o-)﫮Om+oc?og@Spč)~ζ΢Ȳ /µ?ɤ@L'he{D]W06*K`\\.p *3]VZ|yW^[~7~;&N yFTR Kǣ^:uPӥɲHaϣK_CO$/2....9pvvO/E寗_~Y!I5Y-8Ŀ^xᅷ|/~ o\TG I9I7ܹ}I pQm*.VPZCJjʤY &8\hޓEgXӊZ`A- ߥ?5%Qyݳ異F1u`AI=:0t]K9J yylܒ[1a@V yӼ e9j?wHރ\!6d!ب t!ڍy ~=h=oZ9u V7z j18`o!*G"vfy.t"-`RA(b2Ah<hvM-:CK4;҄h*csSTZ#+incc>>y|_<^~O|WYb2^к2X7B gSL&c$6DB I4Q%^U5\8>8y^3p8,̓D߭?JcomSc} C[MY9=W46"2-;1n'~{l]CsC`2 J(2:0OwtOra ~ =)'E6YReLVuݠm)Sk" 45 チz ߓI/d3QFbꦄZ8ӡkxMVzX/fsvS*Uj$b]qk "GftoF/$ 茁'J-j`hCvP/+9&iaX&la}"|@s$BƢJX&ցy$YFJ :p-ܼymb:EUU rBBKrOъN4X.W! H^u_}/B s (QL7o$ rP[G*cpS=4`Wi "1 ~i4E|p.\5MgXiv TSMeX8$\ K3*+Rr,M6 uu61ŀ<#X55M$ =y |(2>ub4&`3P. | IDATC٠*,ϗaZ uu]b:gCQHcNt:A1)0_,"M =FSقSE,v[ /|MSC 9>q]{$n5֫St]U1L푗h[kږDMTyQ" USDKs'|7v-X$:Ŗ [1Dhn: t!$> 1]en~S"»(=1xc' >1rDdn`,>gK=m( jm@5 pwI)\cuo >~9m=269loRw^5ɮMQ#]|~QfW2x8 ; vf܍o(aWXW]ˉ׸žX~=8aUa^:jK4l•>:` .Qcn0#זko4AE4u̦c* c9 :3ms=koF*Kt_HYnb1h|)?BJ||~*?dI+H+/ _{K1m,Fq{SSn:a+g5 _+>E|r}4>O~WͨtOom)QBpr8[n RrX~){sx\y=_kb٪ c J/Z&v`UT.pxcaEO?O??g<̵v\oQF %k?k\"d`HMW~{ooCkʓD{D~/_}%SB#V,b:<">Rz3?xɧ;oY?<@>o.V%!*:~G~>+3Cs~ӿ?KiYbFI4M"3 ~~uPfi3:MMW Z4 mrXIs|~/?HvWM{s?S{k#ט(qt<gM"MUk[$YJ}Fq- 34 #p.7( QU0Hz93zP)uT,F80@`c^7x9d9PpnhK1fPa>ᝅuc^`TMA1@ wp 5Jp>a\WY|?OOkbj:mwwrN[=ݭWʏ mB 傜;it>/(Oor]2N *46uMU#,p~&>$C@QdSjU59CV(,춘9Dɸʪ&+4*Ы&YTvm f0!5XYA*΁^}5dY|UrͦSƠ5CS7gH!BURv%JF.!Z=^c(&ʪB\i(G *^d:l:A5HuBą@9G|6+~b[\߻06cnvβ8F➄5?l:ȡC|s۫QYgГJyZ[lu0UPft4v`.PN`;"$66@j sC%GuM8Z)rlX͇r X!՚zɑN28g!f=NVUT+Uې}oyjDSʋ 8:·6GeA3LS<+%f9lwx?SLSmj18?;l:u&*@6],bwAtT0րFJ:i;pp80H*9"fS$%7P5|u= MSxGĦP5蜡gF L(,y)H/#(o t:Bp"\G5,0LIψz:{i1`-fU]"t,I}Jhж'fJr: Y b1wM64LK(r-ٝuE YҋwB\pM.sr&%v^U%i!DUU`m;,( 8gݿ]ו!>g! 67R ͒ݣG":XPmdl%$`XJl6kD]C۴L; 5i"|f&E7:{"Tvؔ%L` JHQU%I| wxJKMh"ڍl69K\u_7Fjl leOW?bo|ϝc %v@8n@%~д]{3P:3\u:%1}n ~Q_zL <{1_ZWq?o؍`qnϧ'Շ]|;O}S(k{؝$S6}&x8i,+ ʺg§"l `P(Xh1\L;;C,f@3qGA𔭗h,ObVP]`Nvj.:4ˠDg tkܽ{@I$ёеd]׫{"ReYc< l6,ITE pOGheYiIM7RyڮCYPL"3ʤێ6*AM 4 :jy\yiWȺCPKyv{t]K9N)|nݼ[nm[ܻwKt1MjtH,-붡LJa{{? /忀5Ii,rFPloCg 8w,4TrPW\~'pM00|/ hd YZRuF2iu4bq=ΖƋd1-@pJ+y{M ery\)il .0 ɏoPV}̸b>bl\.|O4\ "* >ƣbS{k @HHt%"joRB,!8,OkK(Nn%p^?f2"51\2G?ؽ/Q-b50٪AYğ mm9nZ Ûg%[x=՗dED RcYCq !^+L Y3ƇLW:#EIjRYG61U5(u@uUZq V(54mDbrpS@cOFNh8]`:$%^&)*M]{j%Ʃ*)"GEHWyU--g1x{KI j]τuNj;dC o bg)Ҙ`d3NSQǑ 6鵼Ah88oV Vx_WMhƍZz p-$ͦHUo8X vpg''xp$sAfHRg ҨSZkژWǺи).8nLJȇ><9Ζk$Ge<9)PRnfSdIm ܻw_~ <'0x٧e9N`^cqp7nGbnETZcp=q5Mr3D;% 2X*1d4CS|Cߌmpq4 R2LE# ((kdZ[X (ΑČ`X$2>1 8{1oV{9_ )JK+l6{^{\vk!z먦ITstJ "u֠.+(AcR(WkIg=řdZh- %`;1iF` P%t麮'%t >|x3~ȊRhM g(?E6]k-E@I0?w4༇隡6˒ Y(Nmk{Q4uD* P'HF]z(B@<:tMEw]a6+(!qtp)Nߧِ9,+ 0AǙָ8_L)tJCeY /# ,t-c2A5h58>:T'N8YuYB "Ztc6":MS4Mɴ@pB% " `ސhe9Ηc1ڋеtٔqE CHv$)&IR"8퐧i/WYoVSж-\n{nʰn㸧=>c icH@^ )G%u}1-(9DRYTdØӉ$'1<5d =6eEcNrug!B׶&b(pqDfX,pbv-|B%& ^boZ"+Rt k۴::d@v-)Hdm^{Bct:»¦Ťg2:`Yul/~,ˠMk^. b [W7mb,&q>DK 4I\'Zz4mIQTG{@yZtт(辗IB+55r&?zwc=6µH;‘a Ylg#%nB=|vf8{WU9^r4}HVow?bx|{;y;><{<˽8R/;OxGԣ+a~]sFy,OX6lF͞ue&Swk^ 1]Et[)K؅܏kՠT;1cswl'K|plP{e7F0d_6-0=~ pOv%>Q9~ռ_h6"{ζN!Zx%uXTU;y #([k^K_|ϸRAxY"n(P|Lx)oѸ,ڎ(٬.5^x.K}p$QYIR&qP[ԥJSdiX\XI1d6 w=*n"$BG x -A%1ni]Z?//6+ c,ʲDyQJ 0j4Ɛ$ܫQiS!N$1-MZcyq_|3bbc%@3՟5d7A!* 1kQ7YܬiVA1QSO:W6ͨ9[&RAKwk)W3Ε1Oi9S8GlJ2c ă8{pJ҄ȶC@k:( `bg֢F4mZY{o޽7`xLkMd,6BRd]]?໾Ow /w61? 9ʫ4HZ&й>U۶x]>8Y|;?AȨ< /V'$eTȆQ-> (#+ι8+yHM4W4Ou5Xk>x(! Y$hW_1Άz<4TC:w;?~k]$}.6H<:/{GKdsG!0.Ȋ;Y80Q4T4MK(7+XpmWEr }T>'MDk)$`xp~$JBqHu.m+b>{or9ܜ1@F lpzjև? N}vd(F{LP5!2yZR9JI(6{#(.?Sl,=ہ(o=#~| wL{fWW~g 諸=GUp1 4^(C%Hd-vw%W.s1!k•a:{c(/?<vbǯ!8+X#MM2ۏ~¥2&ads [a `z껏[ _!HC sG (;HD1a: FDл-??*O2{7Y*-@u|_ ׻o} ao/`'[G{GV69ZZGc8Du=D@#1$N,kL&9,GUU!{gRj %yTCfXfD7\\"g?9Um c{%xDc;DŽ 8#>!u {ڄ?jq:&4]0{А^{#a;,K7}SX0~D6]̙L&pΡ6SH@KƷD$c0ޠnZX0.jA$ȳlqa-{Ψ4hC @M@uhyF'$(R& 3a|@j"Zr}#oGi>*(v G oey|ư-ؕw!m9BSO c{TߏY u筟cAs,C==Cn[ZD pB>ۃuQu[AJ <АR ) ,DFDr>Q%$k-Zl䙦 Lņ8@ r?CYE[׀dzTONEyq9ఝ!wX\k4tglpr>~]OѵvH*Ѥyc 6NlV\U6(2k@,uZ*1'N B[0ufv>[bpC RLhOcx95rDZutNnj\TMLgӘJsJRr>g6_E0S0,H9Cqm($ZOM Tu S@D$8pTgXcp(Š'{DbTyr ޛHegb̷\92$A0 7Q=I/y0a$ACJl NUUKdvW=cUUE6(<{9ߦhB`6~RN$iavJkv78Ws8"Nu̎AyL9"b8ymmAΑ" )2suUjRDXooQ9'O2^C%6TBZ12S" 0vu. hۋXPǮv[ږ-bJB`ZÏ#6 /~g?B#{:QSΐFI,=x nnjOlݐ4tmapГ٭"StJJZ(E@UY&D8clLvc,5%G xQ"&ˇQ*}!WH h*ZH9~ @*O@`W  H"~vU@J^!DF,wl/u#9}){G 92U}U!lS|0Za5z;(;q3>`=aB F+PsG?2>$Xv}TSB%RqlY )pRRCjh0#anSRǻ;ob0nwduSG("%Y.)ʄ@, g !gjL~ayco(SPGWO`I59#9G~RѼO1/)/(S\cEuмG8XmVD5c^!k?k-RH!]6fOư[cSFDT؆gpE21 ŷ y)$TuE#^h$1jWs,0@hێvHCȑXr3!WUH c `cuU4CJiZi"Q\m`=65m,~cFV8P"bFHCX|gІGܼxp<Yop}u(n$e4n@U]!@z~O 91>8CaLGbb(p֡3`#'W bΨ+"޾[!XnfR^?$+ukQ5E+Sᰇ j`{Vk lc\ CՊ̤ŶXg9,h, ER Uf'xD.y4v+#Hm3!7MC1%,8Ásp2F\0 ~cnT(Eu"*\4 pD)0Qj"R kP!x0RJ@QAuӐ R } c >ͪv`{hhFqVOc2"A>3j )BtZ)|/qwwO+@EL]#Hw`/jME3R~z cXIyZ0#٬f'7OG +TU k)ZBH3 "`x@N3Fy]T'%PbD 02_o T}̂~m3?,sQpgj \q^}s85G.2O9d@+feF`ixũ`W8W&'Cu)>C΃xoмKD|ߋgrw.2.D?SWܳ8S J!묜T3ˣ)}G߻e彎<*}}ڇxYr.\6\f_9[vgRq?L+˱r)[?W)|Ke㙄byY!Pjg/fWpPO-U`LU$f0w17.:bn/O ;&_??_~t,8)[.bRɾC{:t;4%b&AsH,?B*ljqA Y@b;s\=}#% >S\]P Sf>ZHQfJc !`Ȩ\=]aT:1zZ 13aJQquhԨҤ \|$*WJj`(,q h֑@iJ*]˟A{V8b۷l35pRC+r#qJcԔ, ZJxRLe*,6+G6q9 6UV[Zk=Y)?-ѹ{{c3m18u-=쌅T )E)L^&g]U臎ܩ!A, JH~$%PFCK#G)ͪ8XMMKKY޷?c@HΦ>Hਜ2 QW iJIT 5C f}ؑTCOM#z яPR%z )F?ufVcjF{31 Es1>ͿS{%(OhT 9Fh) VdI%Wo/X1=4J!HjiS|fyZtEaI/4XOMSd)w,Oi+`q>ѥ 5Yhf˗R7qFTP>jGPe- Y!(RAi̊c R@ @i k4h&/_ p*RZ c-e-5gDjnJԆQKDtM" rw"cT4NN @I(CAHRDY`Ԅ3UOFn9{-0*N ^tSZ[cZv= ?{iz9ߓmRi/h;%%TVoբ?1w!֛BDbH%;rȱb z񺨰Y&'rTDD ݜKDm̀?_%u&Aiz ua rBS5PBC+ un#W_=f{!$!%Z"B%CYE1B[K}#̐_u?ᏐH 1x XQ^˯@*@FӀ,G[\?[,`*W;RƄ3b!1#R1 (U56)5CU\PͅT"| HxqOr-^ho(7٦(T@+HY ;et.̖XĨnȧ s,ɭ,yuQ7-kI*3.p%9#RN #|9#*%0<_!%aI=LdՔh]o!`5S6e(իh59;gkÀꪆr gZ[Q+gR!8b##LRy~  aѸ Hi}S bPR@ۚ[k*wRR+ \)ЊH)A]UPϑ\EU)9^j !$3i[W9øR8|3C.F IDATo!G&)*>p-5 G4 ;qX@H^'Tu3KZI!5\I}﩮+PȝԂvG-&i"xnYop8;sbSo]}*iz=ۓ=5Y;VGVl׮0k H,SJLp"PRCB1x4pKIBQSJb plW4 f1xԮIWd>nx{{ wd1҆2c"O\R"rdMuV1Q8#%T <} GvnymQ<ss9݈@#"MJ0t KrfQT#BUpFh45Y@|$tԨ 8`Z!2s5/>#`u)[`ͪi"6TsI!4BzTP_`躎 c.ᬃSgOobhWx9n9>MYC+U**B huf61ZsdK!*Ckūh j0KRG]4n[N WN1oqzx]P_wm{^{/%"8{}cnT+=OE9̸_Z은23Ţz=نx)nRG\l_3ΐ<''<^.@WX2^*^?\}!CY }_ˤ(a"޷6x B‹|+s΀(쨜<93Sqoa|wQ7p*pyίqE) qOgQ8Sp2,p &Ue/??ord|I"#.+.pH&o9{D~%)؞D9bL 1#DD{ 8BO|S5&+% zM<'նN_|vj$OJ. )8GP,4>HI)BLvz0.nMɊ؉(P QW~ ^pjЊT)OrXbr;[ΠV 28x@%OuU8Vӧ5 XnfnC.zr) T>͢z g ?7W6XV''ɭkH%<CuT$r*C0z21:DRPX-K ؿ<q$;l^kQ1Qpd2c)`L@f5Z\a {7ףr tSэ&e 9 %PNmۢij(`arT,P@p@O >G(%o777xz7gHm)z^VRA ٫%$հF#5 B6 ZI4 }{@?s䔙WUC|a>Q)s^Nd9>8#Y):GE;.b]c)KvRHn )yn-5BJ/jgc 5\ާ3j?R^7 a.#~,' +$&o='0yiɾ inDq*9)T0/*VNK)(?է}F ~)/$b|P0U^$αځblV@U$"əwUTRs%E}(UW2B OU9t}O69-q&gC@$%86 *4+R;ՆΏ0Rm g9;T@ )jWq_1 ΢,4jZv+XaaUe)w^|+|LB\Vu 4̎˾%oȇڃiwPbUJHojN gkI,Օ*ɜbV<[gQbFɁ')!Drn<d@)jjgBZyZ*iRVmb ~gPd 75GX,ͭfg8Ā"51 Gܾ%rJ0\lwnjv٭bki"c\70 U|>5sГLNxZztmPFBkOp|8@j0h6kx1\]v@UWxr}4BPm(@ѷ-;a B2hMBMCYơjVPRBLh|?xN~7-k|9^\z'$R@K<ӋO#l/Nk%9,ev i)NjzjEf!BIlzax5!8;LsLdb5ǙY7+uCsDȉKa(d7E(ESB?4&ZjYuw`GZRgkJ"Hپ7ĄUZQ>.`E 'hM:0۞ktJ1IM`}!BTJq)ùx]Id[g $*^GYK6i4l AJFӾJF\I!A$kq<Qi J)4M:cp<8ZcP5#=f=֫ E7#Q}bG 1GzZnB{ .x85;W6 {!q\Dx8ykR)vWaBJ0͓fWdQ027m GIؚx$1_ӬC(0Uc VJqu8HQ#;z䂾=J)]cw$2 @U-Zoc꺆skqVYSdц΍EDF!2c*v8)DG' RSnkTu qg76Om3Yn9#ZMInP_ Q maj~꺆q\*5A&4j'o? i[5+ԫS>9EE-TP'`\8"Zh\% e?gA;7͌LqxP\D0t|5 ̤"2Ϊn=kqSJ7=T䤑z=W$s)|rVZ*3f51hVk1Z5;!^w&+&[x<ǏTxA=ݤb!?}»<~+.QDɥ촬^ \ė gqHH-r￉ߒ|_M_?ۓ]!G94iIcS6rYjOQN]W<dkxҽ4[&h/7|(/blg}\GN _ٞls/N;y's l[^+^dD>Q/KdΟ(IaβMj!7/y uL`ׄE:2ۗbh5`އ$feISDWO+o1>Ocx)12BXKQ M-O'VW+EeH sv&.)Z>Wd[8 r̈!Q\r,z WW!mG@*(c@]Q6д@,R]E];XPDHv\4t&0z:wZn|wh%aA"`+*䜙-3Rk6)&fFLd ?e1@kej'l/ L@_~JYYF߷H1y3ZVHp֑ 1YQ#Dv]\|ۖ wybO??3B)M 4p8W_ocdb>}bڐ(Dd;uìjlz87&MU6J"MY9Xc=)jj A )Du07R ș@ "R8ϏRH4P%{c U 37Ʋy^chmPi"axMLM 7xQI [@RBk /gW',cn^0lm2#K湝3uΝ*ɺE r>*g1Ll;b%& v/i[_,I8>feЬw5 4JJx%b0g'mn+ mB/зLZ{O?K|^ϰ^U@Ga@J8w-8kh{tBHgkҪ FLUJؓ:U+<ɋhFW_|׸S\]a0JBdrPiM6jIb 9\!NqR6COl~RuM4Z5Ya;!%тbt}On4Z࠵dHA)y*T)Ev;"PXJD+VOq)j ODHbBy\˖)~8^3uʉDtĩ<"üMc-?K)Ѷ- ƑH%dkGfTRZ u?\Cb*V1c{(m棵;e:ZjCt8N!#D_|j}rtJۏxHzbE^AHm4~`5B۶8F)778/E (h^{]n"#v[wWW(>֤Bw cRL;"VCU׈6 @?!.8Wm;TM_;Άvr9P9CN𨬝ڑLvߔMH艄n0#jf(9GERBrȑY-uh\_] @A*m6{JwnP1 ГӃ56)Qvu˔PJgr\ ^)VU %Z;Wa^AiI=٥B*"cb4Gw-Skv& A D ^}OsJ3Ba86N(2D~ ! $Ȫ(@u?3+ÈaAwxGlR1 OQwX BH?P{"[v#?X.8gQr=-ڮ#r5,HLSӔ߽$+Q45͊>eP|> 4Oߙ#$~Bn Z\ض\dX],&>̓*\dr}2߽=JPK+tel)KV>j㙢5|~O;o-[>lcsr xZ>ATYr [| AEțEheh#Y λd.C=yy_bُ4.lߝ8>mXۗ5l+7y^їl?:?W} s>/,0z_eȾWMV*%w {jH8nVTI1H&@f`+ [1wP!_WT΀rfzASzBŒ)@cgg_\f~V4o#> l.Sd{7J) z%pwՓGʠ=EHsQv9 sKB&MZV %\ZSS)b@ =eoKlY7YmP7&Tܼv53}z*5{Nu]QYAvy :k[O֜#V8O m)y]fE5z=QmG+`6ZVJ֬@ 3Nu♊t*b ++KNP|V"W2  f{"\DFR2TH`7L8"G63X*GR dL҆rɆ1RApCQL@ eK%&bU7*7gÈ)PN*w ھC^oPUCa bkՎA A󼐋 5MaDvn5+~O D9}<\$gT@H&saJ 1@jVkJL| xiPRϠڔg56T~2GHy" ͙9AdE=7h|z Y '(n7*A|Q b5et/HBrD [9lQ27f0-o9oա%wPy\K ?˥$H^EfX8Ljywb.sf,0!"߾zXr!0aXu5CQC V!9ڂ\ mժ!KL%V{Zc#u@,{7 JɼF+gȉ#>D.fFΔ9 ]R5>k&%a/z^@h( e<%!FraijgOɆ5g~LN&ծh'QܤRΙէx-R"랜'bW;ޡޑ뗸ڡi,2Bǀж{XKco~?S}%Fh3mq0AY-4 I $Xx,OTNDVP2x%_1oW(D\Fo-q!9 ].:5UْZڸdz&׾4v!SJ.sԔb$oU)4Ƒ ͇IՓX;1e5[Zqzn'(iX3oRi(m8ڻ=1{OQKN!K6Y*M=QL(Ι9R}3QOq3<eN~I\Bxl44=+&IժF CK_0F A*)Xi੎Gq+n}2+CimEjp<5](ʔ{5i0``b*0bwuwx jEM%cmgg="2w1~1ܗ('8Wxzo޼۷OplW-FpYCush1}UݠH*PWnbGV :X&8p8ώ{\5R X琔~v? ޣz(^Z("nB)(On"UzeY$5>E:e IDAT0(f)RהFa3EqO)jFkǶ=@*UF]2B]{D)K)f( \]_d"Èx(0ðaz=̘AUK~pz5oojIE*m*cRj?Fr!tRqOh;L@񤬧:c-^_ªzFjt} !7ϱw=FS׀hDq;\< 71#ƛ[zVއ mi\6A{m=mCfBwDVAk=|D{yZ; rU+~{oE)( 3msĸ=gc;r6^.W8Up~*"L}-,[̋e(Y1U)sKՔ9Cl^9퇘g㌸h<˂g٬3NL|^Oo Sp8 ]8"1JJbwVM!z4YEڈ9S]7'm=60C$Kbc?Wc JeV`z yLJQ,D?uUjq<\ԨXGyRUdFFh'Hun6,Z”TdQU"ZjZBhMYV|O@G(*B@ى&֒՛dU8/whNI1$OL)!@h^RchD– ƚYa8PrGIY%1̨U4Zk$k#YpklFYG[?kI,;>Cnt0/+^</y'wl83H T""\/ʬn4pDV:bMEwRc=5ڔ*iS%f19rs,,99%C]ո ywcjW!ÑԏhuS;v9(˘#C DC 7G4U~5N%'LgnXƎ ntKv*)Ebc5P[< 5ߟ cIH"J.]dGҊЂ\(X@,?}jnx?>-yk1cJq"8{Y H 4/=XoIh $diC7rBd[JBPPF{qg}%~0}sO:g 9ޞ}(4e7xWeM%2JR慥WGjHĉA`ib[ KIy;B!`Xx9^*L+ 䈩w_~eZLB )Xe,+HiP7Mi,fr8Q;%juz #ňUj*TFӮ FzFh5FR(½"SPy k*Ƅq$LR%v[l-? ?m lw{D^3| 77a]O?S/X`F1L>Eop)&Hi`Cm W:V+ 0ªpܾ^|T 'n[8)SrT##x@r!ƓEKE셐U!PS[={/+4.8VJhe-=BPTI8NQbΕ:e7a # G$ԼLI,nv;(vZ^Bp15h2{ h)b Vy8A*Mki"JZZ[u0pUd 0q&~0#9;㲌tmxZ -bcy,gCp^:i\tSrS"Sjݞֱ#^q61Z[;LQ|~/1 ;.6@c]0nj[t]ǏKT-af|Bc Wo?E ZZ#)j c 4 Gcd}פB]7 {cb ڗ 8ޣ$T֡m)pUHkfPP :1@LfB ~"smHztB{g֠r1~e+R){*?pDc.k\\\ X$Ч]&{`Z1Տj/H9m]ga0 SҀzn//^Ĕ=d::WAUUZ-Jr+1fb]շSw̶΄K|?y矿;;u3% 3/~{9huX?oD70shvcѴΛ`,㊋B;i1wksxGz_?*_ݿoi:>,O{?#iN3:KMsC<ܧ|J<}[̈́c;'5m;[SzNM3Dߦ;oiѸG{IZi{Sz{9.hqG12dcNy_ʫuee*=Q|Yxp 6o\fuqƂ_~oV #~(NsnV.0,"Iz7B?NHRb}qS9t~-.XiIn :rr#*j`! PcFmJsL8XZTu rocPפQ7|I}@ThpVClVppDuPZ\T Kw!q.H"8TͅL$JA*aGkO􌘠aM\|x3Oh4F?p!5b3"lEN~arhLޓW+W9#`C]9j__$:uYU0 =r{n;Tr/ Fo!/$wJqMNhY#o ϊk )a&$(-Y(ﭔu}9 ;M#8Ք !ƪ*2N57|{r:H9RHʥO8zH]wDz& OD@xt} 5a,5eisV*#cE0vuXWUww0@ia^h֡rGLpUkPb eήYQP%9)V)SToFvfw098[3R4E(wP"FH$(y<ܠ/˘gCRfHyiY3pKb>\(1"@HZb[vUł u/G?Q]wc8a/%A]B?q'gs.5J&gŸq<w]),Q+5h8g&HTUEʕu(ܕ:L6b`'X9+Vˌ/ř`Fj[P9&}wp ,;UOGGO0#K_-> H)s|O@j|=v!&h[ܼzpqܸ> h8W2@_ρ+|s<@#ԋ3Jb!6^앸`JQ,vO|m|ʂ?p:5mPE,,fן3z10Bgp+1)CYǏ`?C=BIR1GvUpn~<5, zY茁63nqKقF4/8kn1Hh *bm- h%; G.$Gv+!*t):vXs>m9O1az Hk+F5ŴđTuk{DMC1\+u]DLUaѴ- cS.q5*gq{74@)a qY*ݑ[7!CCn(*BZGcn\{j\m)jXMd1Đ4Wq<!eE㱣0`^ꪬ)GrL,<# V {ew>O~~4LXVX*"'\__x~< HŒ'q;]ߡr~<7+x0,LlN_i0wdߒSX@"pWg2SbM]姧$>d4Z8" FLckY L{뗯_A$ZWoqps{ k-./.!%9iDԔߝ"*ـ\[R9jHlplj)xۢmF=e}MU]]8vi/~ p}uO0_`(|=${1.9j'a3! gv/qq4${<D,c〉inާ.<^]]#Z;cm-6m#5ɘTERJ~Ov[ 8^*Y,z%8QpfI5ݕ-giWyMŖ#4ޘ5M sJm p.1YGBKsC.)<h WvMwgYqP~ok⿥wz wӣ/N"C OsxyL&=oQ| t IDATO+BcΡϧg:aƆӵzTXq8xS |)楞tz ,u+(ҩC{e#;bEZU\}s'O2Q'Tu9v 45 J+IH * P δy'/m궅]a^U]%"&*4innR@bԕRuSj(Ct1Q=FjB8(}:GhHuJs!N%j;Kx]w 6 ddqę1Ăp`B$1&,JSE)*:MTJjK$w="[`Tuݘym7MvlKTu 7n[,Îi.b%e @k eI#sy|GT5MRB`:몈B ',9KH!C1d#QG&kD<#9ە&G=,7cYk8/r,۾wGg)!mCwD09xZf |Q֤Dn[ߓkvss4 7iDQYi2~PEJ%i gbw@\gy."K,{-'#aHoygRYy^] B> !%KXαQR&rr3$τ-'諟ZiϝBr)on(O8<8h)UPF )! 9kb 9ÛOwZb8ō*W1ғp TUyol.4a˽%cJxCJ8a.D%ui:%="_t_dV~1TVRkD,A[Y83[ ZHVx[D@IAe-Ʈ3s|( 8i[mq%^7)<|VN:9%%Y䔳IRhRH8,B)W54ƲO)]׍&0P@DB(2ĎH^_c6@5HY1#exɏL "RsL{0jkyB5_L7Q!Ri4rDW6(P'qIJL4$0|5L"F@My5BL8RiWhښhZ[v[9:ïO籪#HEؕ5GlwPTAQ "%Ꚏk8ADVaDP7 nooP5g,24WW%ZJӼIf*XG׏5[In\vP}O~mW&vX֨lkSXC!m-1ݡi␾.8a *#"]hX- }#8!NJU>Hw[j*ʕ5T ~8C]G$4$4GB=xLH9Z%Dv<'&ԌȦP"NaYo`8G"DӴ!1(=$F?JұqΕCO;G1?mKQ=CU"҈s&Ϟ?u]*\]_UezgbR K< =j4ЊGaG63>^]9:|Hj"k'rOӈq/ a^9L\J#4yd"kL˔1l]HM",L !Qܞv,*rUOk} $2J9~|F`~4&O>Vlpu/;w{{<`M˦XbǩXE-ʉ8Tx9HW e^)~&+JaeqLa{RuNp4N8|vc8BAw}燻s6>>wW#_|Bs9~.fwnȗG'~qLO'=ϜY"8+^0p;=|n%ZT HcЍ 6K.*!b*ߌj.z 6Tc25|rCZ3-#TH|lsZ] mƘeF!!8cД8"5֢\s7$>C=J˅8ĄosnED "t/d(οRB#HC?b ɏgOz{jD\f@۴J(IS#^Ww59| %"D Q6Mt0 T켛],K,}!ԫeEHHUUx:!7dɏO2s1^*{ƩJv&yAi"cXFz=~z`K<>_iS  DJ7 W/=U١NKT> =/dZX#4" ZG4u i7džq3H[#( Ȅ$"(a UU9GO.6mx-ڶ] Dm1VSN̢u"S~X䑲{X(CMoyQ>xԮb@WpgO0NƯ| ]RjuSd͋/#czc%)#7 Y+zX@qh\Wh_~~ScI YI $:<[N"N^_/r'Do LL>56l2=e+XĉHZ4#&gjhE!`q:trSBhcRFU/h M~aKE>!D#8! aoJ EJ{k1 jϑBHg-,_gZGR"5[=G qM47礒08J- FȸuE(T?)@Mc?A12YX3 4 LJB@%5Uih @Dpx%r;ʍެVBmSY&eA]U®jmLtz>8j8K4'Cpb ScP":ӈ䜅@? RB?tm-d|89.+q}sHB0̟d%8'' G>9H{= &||#5uEK _qD; }Fb,ѣk㈯(fW8;H)puuMgqssfGš9{[H4k[93| FPBK"* 1HAUxEwD@>`6$0u~0b S0Z]SS5a$bJ8۫PCU98W4;%~` xExHy$ުUU3IĐPˑY%@ vl~߿5߯/|_w:/\"D^\~}~~ 4'Ob~7'm΃NsO.7`U3 g"8/,r=0ZR@TԒL&E Yi#J$gBOY0])*Cl臾,ęG~5R !2]raF|淔 p`<96B*+Jo%'-OHf/^PSl)M|p(qs"d`ۑ6Ժŭ ~8H)a^V} BjV'FB,ṙWL$8Y1^Nx?BdWN!HfCMV-9#SAˋb>nxgI;j9'Y pX8z1XL7I)!LDe(CBi %3<۲PNqC9y|Vs.klx] N@#B (E%w<%^ Qb!%E=J8ZSPQ@J̊i1L]ZF|PUPR#$8t¾}MPy1h ZXFE I.w==ں'8ܐzUl.H=ui=2G9CA+("z$6՜a1t߰LVS"_ؖGD5-M䶎֑uG$mٳۢ;@mWEN4Uu k,gjSr \ !$8xE>1"F\UJh(@빱kkkܼ0LhMbz!z0Jp4_54*g&KwCe3>N !PQx<@JQU#r1D#i,9螝,P}KYYt%DL0@* Bk E, >κsw:UU2s<Hb4_%EӐ 3ʨ8:?CCkzNxt-:hkw=\\c5\ hWk+/P[: ^/p{yl>fjՅq 1B;hnHR#In/y1H,w-QMy/W9:H֜t,QD;3R)s[9ƈ ?:B '@Frr2@@b惜<Kwj螝uB]Λ 54@PQQ02]2rkEV+H-JC,)F'U_ŝ9Me5Dpմ|~ݬ@" ʩbE }۾-Mm9#o)+`$e;C13bdaiH2>FD?!L8a? IUI#i Ȅ(" U9FFLw\l8N~t bAp9ra^knM !np-(TK"qMC"6h gi8v{LǏqyyk40ψ)OPU-Eeq7_3ħ?Ow7SD 6\`fQXLBXn*t[|=>z|O?+g F*(٤*ɳQlCLlyo"JdFd1ﱄXĂ1zQȄ&!IR/1 8AB@1,$o-RZK( m4"hMRb$8H1Qjα5r )ύJa8Q̅t- )O;Dƾ8:|O4>~4-Q )HӉݓ ľyzVl6k;v{l6"LsΡ"CKkt+m\PDC 5N ?oE!(;_avx8dYQh4_<3i_,iĉ!q:;'',,}<~]~3y1f>lȟK!g#`C')s68.}+u_O~Q 8ws!G!>3{ܜAZ(YΑˢJ.N3?~'ɟ?3kad<9 8Mgf1,?8L` *l3$Kt>!#9($J$|F1ӿgqM\ X- $kެ(L!hv|H+!hR~ 1FHhBNRi "WU 1"xnF.(ups~\g4NPR Q>R4F9+5DHݾ'U]ijn";CAf׳s ZkxOBRHKrOHQǀb凉HxI afby֊c)$FT\x#=+ =JJ(K3jƓ7 zvW33p!*.v*&,Ę" 67;CeN>D傆 0"Ā Ar88=Ѱ΢;K6P7uK%Y8۞ÁwQ4k3|%sXo6mhWI_V{{Aa9@ŗ ~n G4_.$D,d1w~Mg^g-qXn$>#_h{.yHIF*$enS0bz8 !RY)a嵍2 Xhs| u9:lV+*  kX*.vQbJ" "!PK3L,j!jL 1|\^\Eѓg&<4pSFÇUUcr|E7 hĨ#>ūʼvQp&TgZYʈE ~f)ejGJ_yI*y3TwHxxJ 4" rC>Hvwo>~OqT(*F 'u'B_I'LD9Mx.R)P3aLa LDkcw?!h$!!Ttޕ2BrZYV 8vWW2a{M#bDYy D*d!Y[=55ǀO4H!%/&ZΞdY'L9CYjgI1(puᤞiW Sǁ12mERa$s0A(f/3,O E{x?R&֐F=nb6E x05+!`F Ɓ0Bc-0#*-놄8(c +ݡsSJh Ei/$ơVя,VM` ݁'4yݮ6r6kBqmlkOUScGTAߓ0S$_@)(cv=XT ];\جW02G È?hc89{uuEsF,#2ccwj ]#B]'_j0mh^znJ XM"v%LR$GD}- 5wYxRB 1KK*08EX2;ybVuG\^]#xZ~p<p a`R(䕌ZVEm q"2@L8xtZG[o9y2DK#)G]ױ0WJ 'Ok+F>uӢmnNTai(əMmYY`tÄ1d+W1VAd&f&q8tnvRGn2"c`yxdu$E='"k# $.//3pZc#~ 4(DJh:7iaBTJJ޿?hK.33=࿋i[}3U:L|>dxg9Wq~`A%9ŢS Asn|>-=r'}]*ݷۿ5Lz/Gw;z%^/׀`;?IN*~X2=؈Ef5+ly゘i|fZ~҇; 'PF:o}tv!3;Z{yr.{OO?_7?ɧO>ŏsTi,=if!@y H'O'n$̎g [z~q/(fQQwBN P%4Em8&,cJp C@!!Rzs)a^aW(-l#&F],ٍF뎱YBIrCJv9" R2.bn(ֆ2qDBqyX*W\͜ر #{r(o.֥l.9j ]V躾d1eO0Hf=2yBgFxƊm1Mmhb9OMn(d$͋H y5Bq$|TPJQu!;GMq8C!Pr.}u8Jqʥɫpv d&^J3qZ[DHY<~,Q=%T&Qd$ǩ6PARʄ :L(zH\qJ%r4i|pXIQ jMc$mZ75?8'~}Y'J "F ೿;ӧTx1*1u^X.C[e(DNg>S@HP$Y)@Dnx7#A#7!@fᒅdEhBÀñg՗#7 X/EZ vjȴ 1I]/nM0Ű+t'j GI.¹kR|Xen6q,aP9akl >#n>|?j1}M4=j`*e6?S|+ysGNBBY3T0Zjf'Omkt~ W+g^o`S7R{X۲4=[nϹvhLLAd, dY2,$$f0EL1̀$,FH ,¥rfUeW59V{Vxq;>{ QIx_[b.E0I2S/d]rdJI1@3 l#NQe: $;$TUustcn@۴yPFIH3ЙWʢ `?9x~KI.K"DO rI%u!'!D&ȟq>|H,X dG(}?p{Z{b$22$vb(xJ-`ZbD\(ԇc"?{kDa9 bvUBA0)-l60 29ZIrrysޡ? %ٍGOW+v{(kZ0(QdGgښ.ݥ 4NoooY|Dn[eUAuY}8fcʪ g&B 5rsUVD$>ꦂwR)v8[q~y݋4;ӄ*:mzA]{Od 1LjX 0pn1ʊ@yR+<69%Y;O^!#GZ}yYa29p? ʲYE) eėUnOpUZ-;Tex>H.ɀȎ[J >us(dv)˂2%kl8l|RQm–J)ɍhϟ=d'ux !ж ʂ2Wm SjVF!BkH%G!5 瀅ur!Od+ jkx{Œ4)VKMt]"(7 x'a@^ppdY!; z1[S, 8Z?C1Ec&mOP'BwCV:Ai&gImlTnTU8&6ir9#ز%>z.DY =)@` &;PiB)+(-\KhE±]pQЏ<4IugLmScwo1#L9ΑJ]S㪭a'ʳY4 RquI{bk!:KVͤ"˾4޷-0Ԝj޼FmΡDP"J/^`{~zMH JQ#pسr I$0nB:xpqqI[U 1X4M{zۛ[R ^~9]GTx ~*5.WA \cPj!5ZMu 4ι<Q IDAT&t"ݿ2F9!,2ySGxP,fgE=CE|u7=)*(c 5/i[CO>n߼A#s|pyZJ] 5"+3V;On&<\(&ΑBaB! vNYf7Y@L0P5p-ev'J $-Ds\T|j5]s!5uV(ѲBkHUT@^zc8`m,iձr['ߴ[(5J=sDX9٭')PD"Ƙ]r!l;ZD$#VmñEHZJ~<)QN!)k{cq @ @`!FȍKd")iYҬNM۷($4m6}{C? Wj[;1#G0=#}=p#=. V5"B]GVEQ! - Aye "aZ6gk77@(g1D[ëUBsCYvBJR{u}n٫ï*kR[?@3@쫫+ui+bgiZDp:Vk4l߮ZyЮZ[  vu\^^j^GY3q:Y cNzu]a&㈺&R͛70Ơ] j_&uYIq9wZ*[txQ+h9R:%7#~t KX|dz{ǹ܋|#By_#~{/h<1{_7~w9*q~DM}zaG፟D-r hP D!o3=L|T)ω_w|%IxC۝rEFC":>KSxǧ>F*czpB3Y}t햘o ~~^Y`d3H}"B"._J%w{4#,wd 1 qD#w[TL)I5\e]]8Qm^Pp7U}wh.  #vFާՠ+T5YKIg^L4azv.ʒB۶,eUAzχ~@6h9ls")@8_smIYg)%@MF,Mvr 8yayR4A ALV+-a0PQ#grZ.0+ G~^AFR`,+EFOI5ǼLvQB0@Ig(&L( uףs@ȶJ)T!R!GQP&\8N>xQĦ'Bj֯zHULvMk8Q^I9󧕂 E"0 hٚ? B>[Ԭ`l\p, Vk8;~{ׯ^A(mr)0 L 9YJI'!@*Bgۿ렵y lw;R ED0#UU|sz͙Ԭ@sF2 cX8w,+_H4dî  "ܹd_.NH' >{Yb8ҞFVHG1T06Kst)[g%r4@$ LY!~ U9EYBIŪl v y ղRHx9SP7 0LT}OdEۼ/Z\%iBӶy%kI]x|c#1*<lO2}7G W]fr\f+~ύ5'kr 2]pin!bDݶ"+2һPw? oq>#4'#rθ 2ZB "8r"#dZnqexPżlz9ʢ Z7o^=T)<) ]0k/_KMK{=E p^ͫ|?!Z#?s4JA "ila.|bKzo쮑!"mMbȯt XQȝ>9 mJH C_)|\pJ/jWy4[C{֚uhEc}! `1sVg6Yxk 8=}V;τ[k*9>(zp{w$"BH$)tAO)R8M?l|)1D݁3CAdOOsbs> Rjԫ5l0e5""4Ȥ9~rr!ZbɍD ~Xj v;]o"sh]tA{ŢF]Uh d% cec q@UְNtw/kܠz4MɧDT)5c!>LP;<{Zdz/pG؜CHp>zdӭ5./.Q=`*r!@*q8 l6Dda<6ԉ2#ʢ<>}ӈq"6C?㺠(K"W>=)Jd%-pի״׎XGqyD,XN#''SCAr3ض 'q kqwwKnVy7ȭ"w;fq!bEvٜ zUE C8BS $9c0C@8$9vVd"eUg?~\_]S@GN`.gKa"396u|Uz; Ra"85Ɓ, GpyyEdG= LQ0Z%*C\N$z@%*I 6eYy' q>}M G ''DQ*2ƿ [dx؎7)r<QVG2K1KsryėIc_d|'@xHx%i3<՛s1/NFЂϷ8R<#1[=b.~/{ѻU|\>gx3a'KZق.$'x!ds-.ɕG_x{'Ll"Y&AganrRȞE|Lvns__Lz"_+ꣀ?pX?"-.iqV|m[>^rn!h$=c̩ wR؉$gG_%l_. qvIxt-v-[>OkoC{\TpQ#ky %UUh7 !5=GZAq,9}e* Sj 3(I+eW&,EQ6ol6EYK9YKR2tWeɪن|AUU0@%m*zH&, hvBG,ޢ.!, hUZ("]aŹZޓQRi8jFV+ T!`mRRT+3Yȍ U]|&dek88"n"0BW>)FsrSj2p4&kQ " NTHަIQ&C,R{GHVmŝ(y755ǜӜ$x|ݡ`&PViy/ T+͍I6I]4 TW@Τ}!M<}831ÃY`ۖa]B$\lo="^~2X,`|pP^#ռ39 4VKyT#۴/;^GֈRCshepuui`ò?[&2^:ǀLz2)eK9"TLc̀4G'Ҥ>vVkF˂B]8[ 7!Z9 $(!fM7R.F8@K ܪ&V`Dr:0M2Exɝ3!n";UX9&#d (o_~az(Q*@)Rj?rJx@_k$m&$;; d{ ?-b* ͢spCaps?*<`SHey ..)Zkx憬'y}9}Y |x|UYQȥWE7)"w[2ҮN,H)tOUjɚvFIJa$i^;.,Rcj$b͉tL?8:/q^?;'%PG<^< 8G p\*\B8ɢ=qs=CpI{1uP?!b)h!j"nBQfkOs<9GFMb )y PE|SUt<ٙz=B%)$ J+UɎUe]SndFYԨ6[m&)Hbl-YPyӈmQ&gQUg~`Z grĪmQ٧Շ Jk bٶ ɹHJU4)x(T 䪚 j1XR8ѱAb<3 HÏEYI R L.2 IDAT;xghn aG7J@oo!<`&uŒ-* Tw¢nog20 >HtS\*%dr9x,n>ǔ62 mjZnL[  S6g)L= z81=B]5PB<07w(_z$z <c~?AH{qs{O ŶAa4^~o[17nb0rvp֣'o; ADkM@.Ph?o^mo} ?oE[_כ5 "L0.@26͗Ή X0iOWaI8afBBj^Nr(i%vZhbΗ%iDأ<Sh/#Kd ccԜ,ϱb;Hp\yyf@Z&)ZIWH&|pI577o)V{v0! =. B!ZiZ"/U%م!]PUn0%2ip]SAq56瘪/gmaEaZl~Q5cLtrvqDv8NXOkw>]ס;t΢kcնG8x9ۆݓhp:e~5UKsmGⲦ}xYֹcE{) "(ɶ޻c&BVg 3}r![RvZ[!';nnopvATY@D2DT@LYP:Y+q¡;@+c$1jZ{o'B-\(a]"Xr]"!9Z@2hལZZ f|?ljlTG;^N}#k2J%xcȢc}w=>}yFcqf܇bGj"eziŒ{c*Me\YN,j8A`=.$|wf3t2$l&?o,%P~YM~STMSܨ8ӜkJgy2>77MJXMIyvS8)4SLn !H x"㙲`2. \% c]|DQىݞ$g9V*=; y">M"nnG!BQ:{qq ш!: pwsfb@]V8;?hLPaavEQbhc ol~0DGBSWD!["&7T}ဲX,`n{7a#5ݒ#rYTnJEvʲ;Z 4xqw} TYZ2L)~r/?u(rl ?}gOB1meOYƅOޑiMi:㓝%%e o1&" ڇ]<1%N+i">v>9'gݏyZ^} H x}O};^HYG7!2(R^ǣϚL{a`s&ąũÜ>_9g5q}@@l0gϙfAf 8D>=q zl,3 mAZ"A wxwyUUG_ /.?IG]F~aVqO _ok&_v->|?l?,YG{eCތc7ko&Bx^~)^whO䓘a\|1鿈_'~?w77x{4o^y}_bOWIH$u]cۮGQ׸:sG 3b$:e\[o5N#nn hnރ^>b@4M뤉?"1D0=v+9;8hTho}wwPRPx~mۢc/^׿AB%~uhp}}g|9~7R./p}ww7O>PB9]n+( ( 2侖X:d^ǘCxrsDgo$8m<L*k,%伦+z"^a6yࠥ9 ^YxpG@VۚȖ`b7 $c"RX* Gl?Z @ZQ"HQ'Ha0tn!(LiF"ZAߒ'O6U߂Uo{(xGJ@:D:)Lg?BKROS)l28D28&PYҊl] bu1n$vBddd71MZӞI /E(cۡ\\_c{"4޾~qv0ڠpޮ!.YeYm]"7;x qG_}[~m vqqu?9 d݀i9@o޼pVU59)\Rmޑk1^)ԫ=!*4u hcfiD]UAq^\AV4x7;D}) Y_j< @%a q؜_p"F٭ao>D̩ʢ(L0LDp04 F%y1dYkySЪuSz搂n7Y!gNN&tYV(*i^JUU>諤pf(=LPJ|#Ç&؎TzptAB"LK%YGR+SrI s}oUáJv!^% h("e(Y 5!zRGv1 ~q9?-6 ;NhV8/G -ŗPxRcbO(O~1U`&zsPl; 8΁{.N!PB:w|?wE Fާ03Wx|J'X2> = V .ǗyTx_qm kOk8BjZV^ 0C,YɏΎ' ?]E e<W~IY=7-s#B (?ivRvpD"O=0[cv _b_W&7}woGs# /k_%woxciVl'?_O&Bg5:VS㿉֓<3dlkITe gg yx ;h2Hsu'kXj9e r7# "D"0ؑ~j[qBT<"sJ!!TRbvYDm{,Ү.2݂q_G/ 8P0eM1nj(. Ơdf Y Bb$DV7˂6M~VJbq. KQp#M-ԓ"62@NƓE0 :gSKHF`7 FR d*"{H`G(¦$RЂDDRI*@P>a$@HJh?f%HITԿ?-c IDATE$imiZ|p{knƦE;&t!:%E C;F(" Kl+nYH,;ܲLtuW5=)?sVW5QNs}I l[,f3,%^~kxc= aaluxyag[ {dbB"ݏ:fsTR`d$ l|=&?zCsv)(}"|(eu/k(mRՅj"8X:870зCW ~p n`+\^\f9 (m RkH%Jdݖ"j=NNO0kg*۷bzA'hZRb}&I#'S\m~Oc3cy*q7G9][g8ijDѕLlD8#dUB(v,,>pQIcT&z)GfĐJt +%#D j6FB"X&9‹ArFVIm=:+E&gS @"F @"BT!$v Gi,@)*ď5Aǘ4 m :52HPZJF>Pf:JJN 294-!2pm %0=O*Q%+| l7Le0Vp19N] Ǒ7h캞):X^{x sXk@qIQWV+(%ģnEi=lU_^Br9,K\.uNOπ٬ɕcZ[|=Ե\ZSy^,51o&e7-\rl6ܹ*q,KWW+Hc∳9-ff!8HB "2VdsuX۪Dtb?X) hKVl'>(PPך͒{wAOho,sﯕ*}oDVDwA kr(iP72| ,K<ė|ՐsDd"'\rvz+L|>q_;]ӑ4>gz{5ש'=0(y1)pyyq)S_<8%b5U\;@5`vb!"Ly[F$ V }Q=^*=c߉iǯ֭|އocƿ_Bȱ+Sw~OF4u֜·}Gpv~kzMi CJ+~V)?KJ۷a\^\g?WiSu!_q˿-_ ¯/aY&~n@QmBjAHbyn= \꺦L#ՙb9=8`&*eŃ@Uըc !R XC}סzQՔf!欥lmե]GB$dc(5+s6SUUnͣ(v *`ڿ u]k‚Hlق2ݑU!z;mXDyr4lV 0BRHIGJZP*6dm zd])XO*`Ql4[w)M)"&pf5Z4WZ,5GGamwl(b1'KzMEVAz! IR^d!hKV[9[Z/m1Qזğ]0mLD.c>_C$rm6R2[kay*]_IH nY>G;HC Ѩnb;ZR8破zvCUլ 20`"D<\(ޑu BcF YȬlmI$˾ZӚǃVPR:\؊dV{$kT}r޿c59YNƯ\ OaJ(ޯC0*Ѭ.?ص*qm4oOo< xDPiQ3\\1fO3@ã@jSOe`%K_^bq`"[F!^1$Vybp:CyTO1fc{W锧X1`OCn'%Z5Y[ӡ"Yk=IcІ ұՠ)0Z)uhZ4}$prrF9$XVhUe ]C? cVhaYX΅rC5ܻZkӀMV55EiPz8&G]7X.NM[Ukށ2xWpuy5h 5bs>|\68޺'ܺ7}OwX4-n[ Tk}QZ^SQ l< 9.iU2`p.:Z6rGBD{V J+WkoEgs  Yɥ*%$b)x7<^Uu vA۶[Xmw= /dʔ(k1Umq"pJm|2X%r18$@Ċv6?BXscG%eN]C4h]ڶ*VktCZ r1VtblF-@k˫ DpzQWH 4g/SĂL0} k 9B‡=&nır]Ôg^ugB`E`^pO&qUk5#'7&޴m$PM=n7^/2n~DDzEai)2U0 OR/3LXC=b3@ƽyMo(b:{J1RެQWToXk4MAVa&F݇a@Fv#VݮT38Y.aU5=ϡ]]Goc1i4wU=393f ~IQFB_@D3N]o5{<הp/.Mou@}G7؛ƃf^~qr*k5{#p|=Hdx!EFtQ,EYbA$)Z~#\LN{Os7ڜ'68,?BA;n|=q =CAʅpO{= q0 IOF8 x;L&WA"&xaӥiz~Xgx[JH!"E_2F)h;늴 4q_-w/ ]y u+ q8 Bc| KG⑘ds2Yءk \ߘ I5eOח|~{!bEjܧ})i{|ov?'ޗ}9[~x=~~ٗW_ū/ڳ*/RwR}{{H({N Ѩm#@Db }_\ޓFzZZT0w!j-牒'DZLX`@ `^Ckx [M*]Gf ,1Z=) $ 'rc,9\\^=$лڒ]BLCX_9Q0HZk`mkRs-l1xבsAUaG )0 | " sw[4M[p֖c(߾ Z9$z6p$ `hG{RQA5X&\)YHMiW'ܓI$9ҒH΀Ζń&%dqRFJ 8 6dŵ(#Uh$ -E G`kH϶! RֻBst#ȜEK3N&peӹ XAL'!riKv-n-ׄk c + dȠҺdU֢B r{ϪH$_te,LpYؘsew߯SAA $%Atw/?NZS͗_âcۿ)ئwĦKh!Gocg4&Yi]񾆘 Zn }!#T$Qc F@Rd'8(=bp@!"ݶîx]:S}` qHPBǟGa| 87`^:~6bКݹB 04>$Md "H|P CpW#t?5s"fN[6+! $: ) NZAk'9K{w§\lܹNⓟ~|ESObqvrip+~ Ͽ ~%nan 4w( t+)LD!-ݫx rnc\؉<'r8LĄz< r;Ee`c-SK"\H&JvJ`^f9i*@I !GN!*>Eh{kCTBH+Cp1aAJfP>B&#|WX6S{ Z$SIZBs=ڒ*3&tWWWZc>_UaB*T^3XI/`*@+|pT ӝ@/e;76k ]$ dȵF) sH%$Y "$~y|$| 'FJxK|YE!BE$r1w\ BRDvCe+ }H> )DTB@`Zm B4 JDYSu!i@.(j^]jzg3{HPv CAݐ:8of3.B{-3 KQ]Qr%Y7''#3! ]W@n*C)FUCDnG@0]c-*kْE)+DȐ디nf\4u|r\aGGv%]޹"q#r<'6 Z)RR*XKD[>e"/hcy/ "g]ւ D9PyD5% HNt6lmж3"yn6:aPDv%PRy>W2\xJarŒ%)Ar\D@i\ν Ye§| @$lk-\R 9.!1pdP4zuE=π: m6'МO %Z'ʟ]벻L"%| 1Pl%.CDմ0UE-RO:!y;=Fo~S~9J%= Уx8NgY`w~aBm@G׬25#AV<":X安=.=@MC44B`g.(JV HP~pY8#)'րGosT& t#[6Gćfm*6%-8_ `tiR9\0ߎ+[-*#2bTGLc q 97jLlLt})] ^͂^+9L#LyGu7৊2Sߘ}e}0S|52y$.Y_|㿘9yi|w~_DJi,?e~ _ȶy/=p~/)%߂~bT ' @s?SШ9Y  0 /-PMbSxCHqJ%GfE1Ky.e+K؆%Yi Ǎ=6$+5m;#@n'5f 5*cV79TrN0:55yk-fM TXRעpz "Q֐ݮݮCuЊ10$TځSL0!\- e 1MbVa`e{G$eE{6LfLŨXI>X3 #iHrN2Jk|V+8x>7dn+ +6B CJiY[[ B8+l6GRhfAeiA2+y9ucEQ2!@ӐZ,VQ^a(ja(vm; Th RVt>vC|nK;&kCzb T$J+t 5]1&DɾI"vݮ&ސXCY ,K, ^g vgb;B,. ;A܏'1miq!D(y|/ )!&jn9`ǨO{LW>FS^eRќPM=0F.30~2Ծx ygxw_@7Tra9R#[VL&{A8RZ,E-$B) чWZ+ Z)Ҝ-`8J!JrBՏ1DH%aX&<w$2ҔB*Q1gJI&Ue #44%=% IDAT\h3DNJ ɱ,DQM!$yht?~|5;,UUW_ƫw^|bmq2C zq+x䓏aA33)c&tnt "zf[W`%oq"FR$ˢrHN`w1qH! 0޸w;߃ 6)-cIZVY'am HWW+ g*K[n j0 yOa¬pqufv6CUHr̕$ZSzȘ BuHc۰-uU?h,g3M]yVPUmŋ6 m$$65>[o eⱳs^.jg`fdM$9#2x[$8ƎNe=Ҫ)%xxm!p*&Rza8UcMiLm!L,X6"D:=~ʘB XRlD]7H͆SJAIUnPΤ dR1shb ׹@uD$25n!gȖ{ R!jc`bBZ4FrH3 pzs>B3a;rRNBZn! II+=+0 stgU$r!R Raڠ@ VsL&bB{qw]_ȵ~{r%B29cAb 0tWX (E.U]UGn79qzv"hHlyӴ vfebQ ue bpԷH!64uE{DwnyR0{pÀ؍j}zSvT  c4ƺҵ:(%<^_R_Ƒh{$&ǫقոnA)GRRbzX[pL֎ XS9:xHٌy !rhyf)-0lX,dב:< .` nEL@ΠmUDI#ͿawOE% /֯4#h'tݎ!,\g\skq̿C6.ƣ O|(Sל<m{d1}<.mgM7Lb\w30G*axVD:)vN3.50zs=-)~gڝ5kn.7s>_W = p#G^R*(m_I O糟73cO|~n7xǸY G#?X,n㳟,~C>X,X,O=r|71oB-OT!4%ZnBEC6<0wz!0?v;mx l08=KʞhU-4mK>x9 -lDK\|~' "OkIò8bZ^1*1vǃO{r+u ϱrOY" ;ick|gフmqzzJ3 R=JI"%5>Y=Ke Iy7&*e5RY1m C}-M{i&9i-$ 9aHN%RkђAspjT8>1? t mJK+#D%$>rFѐ rüm RΔZ }ޒ2!\ B yeb{qCLj{o"yzxG"6C??_}<簾`X!")9Ed;C}I1ߜoC({בL֘(SJq YY"n/2.7ѻn m-"> Hd>$UP4Уۭlq}bAvҗZ1%)!ebo7 Fw^0 u=.VXE{b>!b|"%jͪ8] i(EL UZf5VXxGy1ԳB qUiKxP) -N{oaVY$liD"H2*%Fb\[Ŕ%hro]ytd%ro}PXS^f!"r +Hn$&Lm1&װ v1l>P y$fغ*YKYR\CMa%d&jV[HJխ("@)E( qIUeQ3N.8HHp!b#r1LLn{tdZ:> >ń-BJ0Um w1]HU91j2@655l4֖"#a7 IYϒi)h]BTmYl=ޡPU5|/Ld1bm[${hSa^hKk0~t]kMJQ +v/lEV島AӴ)5)F!&\ܿuU (Yv+@g  1xh6-8=Y8ℐ\J($ FR^Z` Cߣjj4M ?8T-/6 65 C?`Xp.M887@+$q6UۤnTth{{v "r„rhUMYc4}<6my~'kOvb &KlE߳⾐ft_ o?nдt\ >^qf2o&<2)Q"TEXPTɼ^fK9Ov)8 (B pxݖ2YtvgtSM]3L n4 A_1׀C ]{jMĔ|֖+)-F!SW*5<4g ^bS 15PUx~Tq ޏnt<;b ϩ0=HGC[(C@lz>reF%",OL2C kq3'd PD)ŞQ<kq=:mGY+߃7)o>`o0$Uޤi)~?`Ϸϴ/rOom(EzǦ~uv\$y*`wۑi?:M IT˜k} [9)NsEIWt LP`51%LTM|>Y) 2][nҞ;[|nl}Nj?/Ox{{9I'?Y2l_I <ܳ?xLM%~ cw%2&nMUv2x w𹧟GRb"'z yoͿ~w>~0|G?ڷd |5 ۲- !`Z/й9R7eXR8xօO"&ۿ3%lN[i]a6AsӕsQU@ns9"+CfmELn֣ RJey ~{l4MZ>(C1D>[6]sSOJęt5vۮ0b vxbLW%S6"f S~RԐd6ܿbHx'HrCJ=Dd<1Gβ&NvsX= h%?vX#Cil[4}Xo6Z4M@%#5'''XnH)@k [YŅYk`+ak;sy˹ݮ+V)%9R~1w=]mArv|6+WEmjKv~R)y5M"%4ےiAnGʩYՐ#L 믽bnhX]i?h[mPx=hk{e}%DfYȲ-H뿒SW"P;gJ99޹,+l6RͷE_D}'ݔ(%g[s%G9 Ihb@ H(,xlG4>#09~(fLɃF (KsHE,ռ8Ofji@mKAmTBY_r^!%@ju/>X_Gc F%ndD#T{y]1PTZ}4j:xibLP# 7OjTLb=6n` Li<7ș8L֎\3 ]qLd]@5<]ʢR)!?F }Q&yU!1O>H`RXoWL#3 :^pvrͼA*5- Țxuy٬iTXo6zS8\ (bF W5 0kg1sZw'KTAwhؐn7Zph~*YF>E>)b3+"dI՛-9UaETsڮH%p+/C [Zf0{JV!{EıL EG>!l2Yg#FeTr-+zDoW~<~|VL uTR?^'>qo&k;9=xl[|?z=*Ӹ:?xD-O=~*}Wݻx7p+/g%?SO]{?i'yK8l_]ϰY'*:|ﱛ?YPE,lÞ2oqyCUXr!5%+W5NvhyH'%.hpD@XSg]]6d3W2P wvG*:f,gbc{֌%."9fҨD[ggE1H/EVINفY<}1eyО)Q &|!X4(LَŦw0ʀzl$3F0"&>Mp ·7QC-!B,ՍƒĊ7a5ɍ6d!NqUcI}]T9<+l[tT`\9IvC?jBUQlH$5hc5SjB`e0 ޣmjV_f [CI]-x %" 1z87SiCl0^HjxfjlHInE'!HŠ5WWSYoP*[Y!);oGjjeXٝ>ѣv [;ɂם/9Dɖt7ޓԒ-J[ĆHvYEsFQ>)gk++pwkAUH}dɕ<}0*6sٓ~ l"}Q= ׄ@4&ּXh D D LI5Oʧx95LbhY9cD欓$Xd8``{,^O cMVHΗ%QvG"e]b RwB~mUlc AmxXʶh-G3'pVc"bZ'臞渚3 f8z|`2?tf]x˺= 9S5 psn_,x IDAT@51+x[tǟ0DL_5X]ux䓏9PD(I!X3p i\wG~T2%*;zr3n*]޶p%yIYH.uCL0Uۏǰ<99Rqyy|ŒתJ1a;N"l>7v[ ETZc9 [" n>Mdm EX]^6)ijmOg wzmr+ & NOIY}_>jm6;TJţ͗hL4@$Idߴ?inD͏!8u+lMRQI|J8?C) p|JcbsسB1 RD,N@0˳%f^I(%&"Ҳ2YI ƒ]^ <ف[k-R<t. Nb=_İ]oYoD#ݫY]}YNDZ"vb:Gzv; v6(A*pyyQn0k[4[Sڴ wZ!Ā|cD5=)*TR}ݣ 9Yv 1,uSCq̖~!A#7.c5$VAT1"b {甀QP-y)4"]/Z5~vvܛ){^W?H=}<B zeG$`XsW =P6w޳՗i-ahQx k #đx$wS|4x84_J])p۷Pxcbz jxWكH;9+98QB~3އu#:J*ubF.P Ӟ?ݼ]?5w)\\g`o-z&w<|>TyIW?#7}^{սv{[#0c @ d{)s1b],͘sO!bX[vnU4%ZJrTSfs%$nbAv@6ZHy^R Տe oƐ'ki#&S%Ƨ nm`5)Sm mRjHC4 hl ;""%Y5˵ʢ=r ֯JMzduGUM)KMW'*ov>f8l2ll' $OodR<8+0O!`0R6U\/BS?l-5jvasB@!"PT٣]E(]Fvs(/ppޱS:zlg3(]֊s7uKk|oO9=vNݎ`K Q,  !HpWH . ĊP p DBA !Cݧϰ5|;y}UӧPG:Uw]yZMkj C=9S;Aij7:=%뽩k<ă\&Ic 9$Hd'WX$@6jW> i'uĮ%9R""SHCXJ^h-䲜4*y@g.ywԔ8rxlQ0! /²I =nR(=Y:l8x!(̎{ wI[τtHajP Um}FYs5CelY b#E=!578^1Γ{nqtC4z^[{ߙʑ{R@$hi[ECf4S3JyI瓄RP-B ڥ~Cmj 7ڮ gL :A =bhS%2[ $lOkq4Q^+:/!ryD s@"a5HL0r///^vg1MJ4]9"L^0 26580Vh>I<(ZvFA BVX-W│oOL9-~k-9e\^=wa}vryue~JsOaDōRRHXW>Bjf=zDi)&_b1qD?im=MZR M˫+l6Rb\b&i8{nn088,wPƔH#$ZQV52н4H/#.~b m+$$cX,!PJb\Q A|jnl=m2.:[HIKș#"-h77 cO7y0n1jLd/4-ӷ<_9J MD22V^!tWUEuMPIh%0:e) WT;7c5Q0,/qש)3Gx90%"'yK <*k1#>kR Äk,UMTmYGlv Hp.d#OT8?f)uqth %eP ÎjmScv `ǹ#!5B]T_kچjIr~ԢO{x~[|ߵIev_Fu~`',r-GY0>ګˌ1M"XJEL;B Zs绞]y?>PsIg>MB:yg (Ψ2OO'd@8'ḩzrnܾW$ND#G7?K7EK:ğ;!'5?c;prr-sndq×|"}J| -~!>Lp8dq|Ǡ~GJm0q~ HxSY4$2r6{K<;Q0k_aqTͿ[o:"ʿ'`ݻ},ΊEo|{:t^3g=wWmg/zƽy\?u#9n{8"rg\B2G.c1NS#BkR.WU]VdP4MigJ8T*ۀs ;GY|`+ZLcp}u](9eN#)Q:7J7 3مdWsw]Y]`._ɉ.Α[ō9rVe:M#n1f(']iR1[Ps%fъQ!X [BFi$@" -X@ `kÈHE Wr)VF= E-83{&4u$FHQ&ءCfcw;* 9+FAmR8!.`ln[)eR&wZc.>p֞Ԩw\, W~F“Xt *Zlj-~gΣ,6r}ߗ>NFjJقSUJA(_h X*NZ À@I~`An8b. b{Hw!0MŢ-}u[UHg!&hdcjM8;PDº 1UU"';ܩ--gtqs$3^/ֱ>I9B1rnFkUNRf~,>ׁ9ς7Gq=A}[Y$)BS8Ws#nn iͧa l+y2gJhnQJ1AphS7FŜXD&%!˚Q uəcت* )$>A͝@]QH/=D{9iN*-My]1QSS+l79$%w>㸝#`79<%5&Ptn6jNvEU,,q"nM1"~pvwV zm͓ǸOp|[1d ,#?GOc U\qjUR@ $-0TMLYt35 't!dxIr͌!.j̑A$F >`'Ä-~r e*xrJ "[.eeRcsn 1,y_E0%-}=?g#'vKLH=i3Y`i>`? mN$4(U@Y EZHUbIXmnZWO.(%'f…nHQ/,N鰯9-7nn6HH mBQW5 "vTUa ];}c}v7MM BDBȂMJ)4M=JS$(5c$hP;As Ym"i Fkd$) 6X.״ƕI>!^0{c<@{onxq}RI_O_]3!a:jFmS|~q~v6o=gdx.EɆ^w.JT}V:8q,OMΧ!9qx[=6~T{O޷/E$=ğ^<{{ f?H ϛ}xT-?u8;\9ιd>7I{EV)?DYxtgխ91;ѳu]~$l/?|߹gGCh`js>΅*Ƌ(R !%.PV UԶ&ǒкbDb'%uδnhۆ6.nRPV"o"i5슎!B+B]KI U79X"԰힑\0"ˈ sBc(%G qa֝+@CGE`j4M !2vA]tT%@%vV=Dά0[1 AqPΌ#gYL0d.=skJC[?Kyg>xBdW)e,?#;v;**v{G:&RAR5uU>WJbG, Ęya'`.9ɞ}  Omb m0MT}AzQU\`ʡc!L~Xa*I^5霛bIN~["94AY1dƨ>5fbe 񜿦~9k:,+L77J>O1'k%Q=]׌S,8g >c;5"|Δ3+')pQg_E7ӱ >(ew4_If1diTƓJ]Jy3" 9ILT̯뚢`@M] ٮ> IDAT 'R[.)[0L6L}1 1 yn00c!Iu?汔y&(ќ}↶iN%"Cz䌜i7 k|DK"VD6!RD @0-aa'9]$ zn|Α>s,@v~->zO%v!c@-׿ |@ `r.Yk,چ܆m7M#o1f:ٍ/ C@dxvqsQh`,j1PB5}Ż p}}OD\` {B>*K_cȈ9b?Q@*^~!Zz_\<Z 2c(Dk`ēwēw5fiR;\_]llZ-2|-@Jj+к# }j>;9$~`O}x;߆7 , !LWvZS ѰXT ZvM|՞Yh,hs{,Z ;dqP<H H|\N8uC>1c$!b79"ErcH@=Li(׵H6)!r 0rd'dTmPS @txvB6xru ?NҮD n'G)&f$Z{BBix(I !-wB@.ZJ$hl[غ2|$2Vp}3n`X|c<4k4%i9 EBҾ"xikH"4BjAM20Y + n%w!V5 hY[kc q(="8OLx᳋slyD&zA15.ps}1=͙)b,WK)`H Z,K,V+蔰 nBnp6躦몢z!b ghاuՠnj)њmU]茑.8m EUU eT+h3u)'{lP5ڶA?Һ=0QB#ov!lօ6FpjDΛ9SvzΈg$RSZhjhkjn2{9F _䡲.?zB>UV-F~}OMn25 S5ڶed=9w{MRg~=AK EhD)TMHm7NPEe1b:3ѐ '4Y GA `==ˎkYbq渍 %TB (y"vB Xu5s'dm, Xe=v)Ndw'YC8#_/pX>(-mZ2P(G7|ӝOǢ qG rpx{;ߙ[P9].&zfwy-Vwds+$,+!Oo,'ԧ_SƑi{ok/ƭ؀|8Q/"?3g\^>C??eČr~>w'ÜEz/|h614l"l6!3gBGMm "gҊ;y@6Ms#l#I"ZWG 4(7o8ϋ J*\XC+\U䰍Z)vKPf׌Rϥh'O(57ɵxc< 5&Fz75)l^a2Z+e*V@ t㔳.9,c`bTXdz$v~7 1Ɛ{G`AyZh (w`UnMhI;ڮAԴY0BT蓣|Pz\GE8cƅs #gg<*f˶fe>A?M]נm $ӥLK9 bfrм^pv~=r%'WJʒӔagk.RQ5ȩi}BIt݂]?Y na8M`4M56772mm{3<~\d8?s=)xl0 n!fs'X-Ƈ_V+a+v΂ %^I,ZJ,p@'gde:q[h?' IG 5c`첏1#"7QWw Yxn.#3d>S: jˇ؁,pp- %X" up6+\?돾Yѵin7e'Ƒ"+1EC U֥Bܭ4MOѥWR(d9:"fLy6mAak"%0x@BK%JS+ Wd"GdD`7FE2 -=y jk9W"(8(Afm KJ9BfMPq`E<7xp&agg[/ݛFN$z5vv~,2tEqУt} ʗ??v +:#*h!55\34uM4q|]R5%WH;,!eƐ3EܜB0C1ş1]%7xv%ڮqBRs\CN#?YTu +[Q+EJJiHD@[#y4"q1=zi@$*,ghڎ]a zUea%DFUK oRX.:rFr6$!|&c np9:<|׿mtM0Z7z;Gk* 8&.V+tu)LpY,K/"wAstdoM gPF!BXhRY1֩޻f6|{+͟ FJBjrjF J81yHiE'ƪ3Ӊ([z)ˮ:x:kO<-2'"?ݜyL^_NߍEi̢ÿ\ GFsxv=NYupi<}r!84ďp緛bM@,{xy7<7w27Jsj⃛rHQ\sYirgL VtX0qRL vZru]\F+FUzg~huT l6X-Mai"~'DZe|B(݃sb gSq35Ł"5#~@UXk[0"SU[d^oRL.} id)LUui1le)GoVH9jH禦c<R*f<p}MZ(ЇU]8R6iZ#/ɽ4{\?ZӁ|hRT`pVz j\aB4y r=qv8OMZ'5[k|pQE&%PU |wP5>x "Q0ODcc-v; . UMx뫫"9cr)b)cXkݰOD,委d8]'r%G=yr7xmݢkY&HĔ# 1@n.^`5ڰ`4# HԢ%<;zgaUʩ</j$ MͥiKcVR!Sfs"asۍBsY0I(2q"\I,ERRC1M9sN)Q|MQ61~#BI+^\4 lowx7q~|RxCH|Ͽ]Mo&w?fVYC! Z ,VLJ>;,QJ!yr CbWuQ{Q1'K[ !u)7sd7S)EB6 6 }3 %9TW jc?l +h]9`Qd9j%Ih,J49,ֈRaF lo6B`Z59= (=e8`1sXP>rPuZ\__*jƜ1 h qzCƒT0fZ(cihERTBs #aƫ)s)F@%.gwX9H,)[1Oшfy>޴J;Ͱ8jIqxo9揝/d0=ْܓm-y_o9aq^4n2%}Y=ݰ{3_Ӳ_ 珺:qx+@9B^Rm=w|qRKu}t>,kJ(O&t?ʚ8;'!/[0TH<Ϥtpw*ٱ%0y:/GMh!U#sz &iqx[2~O)/'`}q?½B@t<{_%rٖs恣 R>M 6^kaÇ/ ??}^~9_o؝Ї?rwcQ Co~9Kڴ>O?h_W/|4ɱ½&8mBlq$w%;v\ROivC"ɛΜVTLЋho\7 mE 4TLٵ:#L-Xn) 5QV* z{)KɓBth\UeJvuL2|;gMk_搮k1Nno1" C)MF-su-b @j*ZSVAeFnB)(ĝݔJM6QSI KE.Qal5ةC+Xv*?7B 9bO9+@ yc-9닚]\FKaB*xuӐ{ DhB)t8kQ|f_b$9ÏrshMb&k$da\RJ\_@2 儺){UkRÀ#nMGiPՔ:1vqݖfrKv0BEq" Ĕ2Rv`f) =wǎZĔXtvn7XXWx17bB kf<&g4idA̿h=#gmc!i4ERY$|kmVrY]=,Yɼ8y1d>:ȵP53^]#ۑN,лp;{ IDAT}p|\T1*ַ0#^zebLE;SYݥ~E(BHP|;i Z9LWPچPʂ2'HIؓbNPP1IV%, :1f’Fb[B+]"/bY+$SV$2WI줋,Ҍ6V)xFV  C8 h{伮>GEI!%c7-x?׾2xj#&l{=n6@k V6 md腺",\>땳nC,d)Z;3VVܪ0L(Ms1GZ9,77['㐼&Z,Wg rJDE1咄X 6Aj#3LrF >qX #TP욟p%A/ Ɯ4 bN:N.[D~4@V3ZVcḦ́|?DETLH1h"l&* Am)\靳,M-$Q2y+*uq"5BWÙǑքeQJJL5JJ,\Af`78? RJX.WcSJII/J"zQ䞠+EBɓ@9lv;h%ѵ5jF>uZEV,.<0!`\!!X 3EcLacH5QcZ4j[JuC?:Q\3 ]q"EoƔ97 @QS.>`ƽ bkBxAeCRQLv P7丷}?8,R.=-!Rnwx-nגD]a5m8a`E6D bRf4ўvbj[M Rn&>5E&"grΘ՚jכ V5DG_gw,|#Z+\\~آ56T‡14h I"nPiItmaGXtKt "*(S8y(K1H8MӄvG pƛǔ{VƠT.&!Z%(t~A,KO/E#/}gx~oCx}?gᩎ*w)6@o`KQsZq >'7gUA[C Z/]sW 46_+h.i{?'_?OI[k_Ri#vx_?}KRJO4.<~w57?/K/^Bjئn:L1_~Y|cÇ>|G ?FI0=̬vTHsw9Ѡ!V$`>%% %gMILE91BzLTBBHEE`mx=*LEqb(=*8XK7IXh-C뙘R7qbJUUܐ=ZYLݮ/ #9B 4M]pX"b02 ZvPKJpah#\s0|r6M[3A6Ǜ~1_ݢ)G´Kv%XkF8XON葼v7F#x hv k(9Sd%0=Ҩ3I/0<" 5F*k`)K*@ND ynЖ })7{rX,[k-˧jFq湡J&h<Q75mKaA N).x.$%cNHzh>@Y"(A2= M󎊇!6.\Bkr2\r*sTJY rp(|*2I.fv8O "<ШBSNwˌPZtBognϛNS6(GJ.J,QO`H/"lVӘ3Q,3"scܪ 92; !LȈDwQ*DQ!i)_kK(kct!]R2(q%5#eeB!ł:sTsθ|RmcS5 У;,+Ե-9*@Rq^bq o,T$,1!$.DmU91֔(jQVӾY)],`ALRh_y+s|SdAjhɓ$: B)ʼewETKH4b0nׯ.a/'Pw{X۶<VsnSꖫuَ&"BB!rp'H!(X @reЄHHD ˑ["&v9 nS9ZkXsϹVݲK֮k9לcu+l'A'#e|ӟ˯}>Lkk " GF8;ĔM e(sfRHX~3HϹdzPdQ;"&|p)!@ )xnM'W-r@ C7b&ovbeST{RO/ fMc0T%&?aᰃ2 FA]H|Nu(TDz<~-k@joH%أBG@TEt/|3 1Vk=x Q0гجW o&{-!nIZR9#50 D!^Q 7TZAHYxKBc 'E\dAsctN>;)~ D@2J& - $A3P|RD3"QNƜ=g {OɉiƩC$@ID].6_Εl;'JEicB֐n>(xDxrRQD IaMD5L4Bk8Bͽ}Faspٵ< ( P}L&)U^s][1bwsM5#'ξ- !@2N&@J\__CzUVP:$\M;Pi"pq_4R e]bHa=R?r܇qB4Жa)\LUFc B"i F|@! uSC(aDd5%I6pޓZQ*VA!<xl^(8hy쎵=¹@ϾZPy#8?Gᰇ 9BAYг; (vrmQJ]!9,9ٖ)v7;&~KH!Y7Nh:׮.ڧ!8MP\\>'2EIVJ. s$C }e) RN uP (8/x"#HAY!DXc;86AØ1lh9Gq2Ob۱Ӄwj}XFzц!+Xb -rTL-M6 ga\"b1`jnO4"j\Hj:Uՠ*dX [1ۦS9j͎l3FZx?asF3Hu8(DV=! Ph$y>8ZTHi^Σ,-<@ߑ;YTyG*q &4T)D Ua_ZV!#Bb`>.OB"RFnO_=ҽu/!ݤgt>(7Xoqe",ije/C {ghM'R녲;ۙgӴIH߬ >)-Po뉣@{nzL4駏__4ÛŸg}})sO"mygж~O3=ǬtLO}b6[ 84RȔ})"bNdz9ZMLkN.]baQasv{A~N΃|JOG0#47ks={kw}?//zw??3h/t??cWc|×O醾\| c/{˪~'_ӧ8??jR 3'GQ1仿sC+'h!pϕ12 պNzǐEQ*LU0#vI _qG RD8bbzO\Rٸm;!%y%+@y@kɹϊ^?8@)l b@qX! x37ZkEy Zѐ.)ɺM aqBU<\a_`O)b7@55 OQIx7`V ^~bà 7 +tOo~‡R)(k!Y#EH)& 9˘0[2xH 2-X9JP6Zx 60b'\7r9tGH-a衋JR":G. @h/]^Bk<=4: 'nw]Cp "КGLA|SXaM]"8LF[hE>W^o6"}~rM )ri'<)ן>}~w "QVxjX Fa7ys2 ?yl%$}bIouR $FtĖпJi8q1ݫOPF6T#<1x\$H=2[X ﻁ&B 6$v7;v%1(&G1 #(J熾Ƕ.|`H^ 8 777XWeH1K,u7Dar p gtI!# e%_#iʦ"x- XE_\GnK,u7hP*?B,JvU @vI5AJ MK Fk<~,+w֠kL5We $F?aȴZkT@{أm;!8XSp6@=OӄD v^A19 YIMk6{Bzcy=MA6Rʜ])a^~ ]ޓbfe}u1Jvq( w=uÇd@uB`瞪,Ѷ-B D1#+ 9v[` 5܏j63 )O0@g`-2ٱh ;F(ޤ!kyϚVM'h.ψTBȄ9Aaz-9q$m{n G.K lƘ#}+OR _~_~'~?gg<&~?u+u%3ڌw#)h͠tBJc 07X,`S r g%gYd6lV-1(|sdA;[DM)w#b1gYkH0pRJʒd5}RJXKCɁK)3:7A (%À"BJlp:k IDATvnAcR`|fgScO -ȚmZ3Y nc4 %`^kbJ8.5Y ϊ)\k cPS"j< q 1c&Z*v{.T04FCvjG(^+ ZѰ.&b@'$آb0\J$ 8;;V'-m؉mbQ9ެa%P75ƁrڴV"rQ%b8)(,:$ȶm!l^5Ē @eUz `V2 &+g+OcsR_)}4a`ۣX70f@ѴJ|ײ„6m &^@w8-{4f$UpL yLAm{@p(W[XmٳCIdk|M%b5 >դI yɶl2'8ҏ.-. k"ytn9 ӽәN8 '\DdQ!Ůpsޞc4ur$W-eMoְh%=˂#Ά@fWg@[E%5w-)<~uMEaنi"ܓNyaH 7]FS,jp΍uvrf:%sm."kc=[vY.0x 65nv;'3>gocȖiUI?0D2s{l/$D&)T}UJ`u݀ݡC?L&)l9C-pqtL Wo7B_F&)$ @Yը-ie-V-xTq|OBRGvM8"G+9],N(;یxcQ0Maz{LSO@@Q,Zo"qqq}b8 =&(U c,B ^W W&# ʊFV )j㽷߄UCOy UshC/FpApζ[)o(z [V0j6+]%)J LC+ ./pY !5S?VBr]c[ZhO4DQ @@Dqyw$u0y/ryh/ّZvɡ($k>VG#;Q)(H4 ږ-H*8օ\01۵}b%9dE}Ǽ u 1ʦKbJ@кϙbf'OP~ #g mCVI=L@3;WZc#(l )ZfPb12=JSmjA.Da϶ZIr*K1;̛ׅ4RIIQ?B#9+eVZ~G ':)kAlA0e =4wE]5㺏m9gbw5,kꗙ>R,JxGlnX s-aDQ)|4UsқXM〵 KҊ#6Lv'}I:^̡,Kk0V5/?^0U8Gt}GDB]7جW\j !3if~|偧PD4J=SB(9.Iqz\޳˪DC?K:(*(е-y]9G$<|j V}0DL\$} ۊ] 2&-\/nYb|}h>q'%Iwׇ=Wg<K7M<;E2o[ƚt{eeMb8ȥ 7Y r|:} ~ӳo牒/Rf;x L`PGQ&NZu5)-GzN|:?Ch$8?%xof' _U?WPcsvO~\!xxGEY5r$@U5/~J/ xwju_y|g?_yC0~3!n( ?~/x_EAĶ-gU0evKeIY}M9+b%gŬ`p`u ]|Ĭ5̌=fAGZ"%7YͪkMΠVJX4)EV``X H61,OCbGVV@ʶR 4AהR^4ϑ 1j"4ܤ_ V2xK)@1uD]Wl81q*x~,^I)>y3<3~ eV0aǬ4I'VM6݋3h<9YE#ă"=sy8+.+g]*9>*BNHi7 8)\htWMCrs:Zt=J4B{9 }n"kM FVаH}h|%(l;dDИ&GB8[kj=):l64uhʪc$+}VMkIqLl'Lw]אBb&4CRfU wͳWI--B($֩o˯F穄zr $Ӿ'$X l>q>O'*UU1[5űNw4 c[Mp[#DLI(D|Ұ  ﰈ=a3K;Lx9C}>ggaaׄm!%iְE4Y5+Agj+IġãEq}BB{^X&s4dMCi_NPbHS5#)i'<0123I@g{N%w`2H75)ŝ'+JP2a{CU]0 4!Dt!ȠʢX՘ -HI`s~z1D]@x,@gm'=t)5jFI`iZovdyn=\gR- @ZihQ1be"K$#V.ҚbZJ+M)kf'!AYNؠ5H*!\X3[\DKȺ,(C;v7M 0J6FaK"]H5dREb@Yi6Z8ԊIIFSl)Ɖd[>^* 9ۜT)ҊrSHh{$۳` 1B"й! MYĤ;4I^bߕn0N#keE[dܶtN, $zV &&&8{:7ryy.Bi2G@aC (;` F;(mdvaլ!=0\лH9HmcbwPb$G׵XopHm!GAR}1Fs>ja`f~8ܫX״VG"1 sa1 $Bϭʂ"-:^gF׆ ;he~VF"̈́y49V+"*Z/`j"oaEuD7}?@²ۛEQІ ]P= ۡX8pAdamȵfvPzkr#g(h"8O]1MEYj;R J*b$BY{=t}(iǢ*\vQJsu,e-dg4%1CHh][cq&PXh3 8UBCZ7I̼>ibƑHR;FQcYısHƳ`RkɪlX 6Lf 5GeP#uc^kAL;nl3`'矍u|ʇ#~·j% -[ }m1%G0,y ]0qW*]emWܒ !Ș\(R{Vz9Y"+#X<fVllK:Qo N!$-0$u͜%^Sdo+`+^&c89;ܿ t++6k,c^5_?/bs;۫ _e]e~0=ko?ims~QŐ b_{؞;@o|+?3_eYa}ҤB )%|泟;Ysm"[E6՚՝ .DUV\Ȭ|c k|`35-ۮefjG] 1gp8j(`&;<8{399ƐE%5mfv::q8Ѷ-Mxݫʊwa@j0fG@@d~nʩرe1gQ͋ IDATpٲr&J9Drc&%]ۑ*"3I՝t@<۟|N0BRcHk?ks^xeiϤY2XI}H9W)4ZD†tފL. Q bd{i敲&f`!"{l[. L61XL(R\?ęc#Nn*gngeR RtO!B(,\"4<F/0Ev Bh!yX*DODdR6DB@ʣ&F:/!8e<[O AM( .D(_vVF&- RRZbH:|`+pyߘYI833kkK"Ȅ[HX\[xVzKRQ0`xB*Dp1;3PU%/`l. naz`?wSո|!lYb{q9~dIjP tAL39 pg-d/RdtƐ%"y~]áCЦAR`^ﮱެc@ 0 w;e7yB|{vS#C 1X5 eDF}Bª.з7xͯb[4UAD>eN E1hRVPƢ*L| w;QVXmpqBi)kiVk&P,e;LB tq-#Z+H?b]X\4%*)`RF q/u˟+Vxej& ~˜/=yUt4TD$48K?MS1UUR*2Ln"eY3`t HBWG[K\s AK{D$h.([*^;89d5s7 EU7(%!%>T.V1XmV=MD&9ge8G]G n#`:asFPdM0 ,kr&0\kT#Y+;Z4躞ȌƐRUHHVN YA6BjVPZZڎc5<~Bl<[Ҥ*u]w#TKRjw(=;mh-=ɤg<;hk@YUDЬdGBB5'8m,سs@= d~p0=E1N6 EA}c]Wn8?;nCYQ/"R+8#ʲ@$Š[1y"ߠ,JmX)m10aosEn/0=\RXo6D"GT;{ެHI<w6 q#Ns%+KOfA@10|[oͯI]${PoO'?|ⓟDW{wSd_u-~~k׿ }u?GPD!5-P+XS/|2=~wyP5M%tQX(fkeDօ nhV ]/*Uu-2)SYr+˪4 Pudql DMSùc.8Q!P\g[kymZʿ3q&kk%%a|,9ǩ lxY /{nܬ(\Fxе=eNϊC3HJ AGf@7Ɖ R,ݛCL}B4lF@1č>fLE{hUZeB@ëSldɪy!5̶jD GfG8xy LRɡYb ,hm U+Hc m4Dv$;᫫kRE]H͊obvc1( }vk bVd g\(\xXxDwnwk煪yTUsg<0AaF de8Q~mclZg;oL`XY%R~rm)!F]v!w> ^{u|泟Fq0oa. 2#,;+(8fBd1)aDtSRR$"["})sew2"g;gw2|/>ǛHI:xHsQG@H[Ԁ2wR*!u[\6s|IV8bGU '(ho&av@pWOrF3 & <$R%<8?yH=]A|"s+!}.i伢IT3)L%gN$T DrOдO23 )1Q&kH.D^c呎 q~VKiDBP"͜mţ/~Gm-_ī4([ӯ,U“M&}x Cfw~! %/9V@}ױLzQE#8?;soqd Q^aG$`6T45݇ 4~@~Oʠ=vCWH~ƒ JƎlؕDtO(*PTJֺȶn(k;ϭ.N}yuCdsUSegc ݀#׃f%Fk4u'WPnRhV)آD(ǹ`,t[`5\UK`lKYI9O!F$-`cKjc P&yRmc{(`mk(%I}p-=mQR=J߶.}c+H0'4eL&hJж֛u%g"$Hqqv~rUCH3H .bTFY;YjCk UUn1JεOpe`E<0#D[UVC(a("pVUlY{ov( (T7xDՆphU5N@ ֐2sI4 _[0M!0Fc@ BI4І쒻H@,QmsvhIoF8{z&UɊj"H0 BӬ(Wb>I#% =-6 i0f'5"?tms63^)* SPRbwءw%2)+F?hZ7us.,0U]š]Iw)ʲ09ChMC,]q,Xk3t}a왰@z8}:Gb.9O3؞"..14qΣE`?xJIʲY51VMmJ&;vМE20xmOc͛$ɮ+6K.t7 b l$IbD癏(LpH ntWef,U{dfUWa,-ّo 5smmÕiHBZP@BpEkY9:w4QuKćmTDLDH#sl6"̏x_I#<4A:|?ts{ x~}NL;3~ X+4.\-7* aڑg (.qVjŹ]͹ӹXs{V?k ~_i%1 !B&e⧪b4x,Vw4e7{M xG?cOט 0a81#=xF >w_tƫO>O^BahT-%Gmo]5!6sH835'ٕGp8ccvM-y-?ů[hc$nMEy>FsL#1v!FOܔp}}-oi Mir) (caI0 RB44i@f_|_8zR6EaMxxG M]""\m709|(o CF^Pcrdۭ뺔Xm{JJI Z\p㠺1'Bbt3}X^E]<Xݿo|dWmyFc}a!bBBV!*+/'i-S"d"҉1yBG <.io#Lf!1%D <; !ԈFi}4? VZ6TS]PRboy;rB\1"fjv%f(J,@G GIby"gZ@бG=hMg-)=<8Dscf2>@IgoRD/1I_sm1sVy09G[ƟkEfc8Bc1JYkim`&vJ۾Gc Lv-!EI i4Z1ݤf0HSFԤ8#9[V7hZM*bk+躶Fa 8A7[j I  hN)1>v8N1ߐW8 <lw;CZV'fE͎|X\K7`pW1A!Fc N#6}_Q9=efO-k"(/_.sd !7fHgmcսv'DwC+ JH`BV5)*FiNiQr?g3?*0? Rǥ3Y i]ujaZ |iMϹ+ixOG(M:)ÏN}Gg 8?Fo;qD zw^es\A]3!HMэg\ϐ;/i`e y]Zy}%grx|۝,٥|]7ÅP2ʟkYIBxXi>?r LP+q ak3ݰrB%k<׼)GTT.|!L[C1//OqE%6Knf*з-Y\ _!x`5a#]q|K6 g}*n{n94P¤(UWFnI<(4FgZ)R.1ҕ @J.Mܵ8Μ ZdSi;ڤB,a!(iR IDAT+òYJƺ2.bpTZ)2Rf;KQk1P[+S#$k9YUyMC9ʒ=QrB^v. U+LYwq)xxrpQ̑r5㎋;!2|\J)ƁBB)>);M x*x{FRHXn )$sα UUg}!^\Шdfc֪bX)GY?/w~`yh! f|=\R0@Q(,c$7 J?)R!/b |OiURba?9qg~wx% B&TҪ6{&c*]aoBD0&4z d)_|79#e勗?o|{ Xєiu=n_t|] ZWRmx|P~0JJ D졌 fRkx 〜D%dH%-HFK4mK|!.EOpCHig{GXki-|ap\uD hF6B Y>1]h# R1[U&'UCso98ZIqGu8O,4_w9ύ97#D#ulڰ{^OhM fvR{ AdTX&)S-lNy8>xOJIB 1O#yi. e4R@ ty7cf~k;4FNW:}PƵBJp<&&ڻض%+yǢP jc0F7(" k:GbVL=L)uN,"TlC!5R|ƌq!n-cc87xpuu !2c\qSJQ(ƄvhJ&N$DJBL{n ) ^nH\Ex"r fifUD8>8"ym4q4sߒkRd<5\j"z!`v5G9ptk\?CQP ڌ(3tq't:;x(. g}HZ+h0BQ\5m- YܢHdN ^}_0ѽ¤BɒK/"ҸR2H !)>&:9F=PLxG+Y73ϟBowϔߗ-%-5WۂU0!sW'%[:9[~m/\O{~;~?>1_d}w{x>?yqex NP<@-_dyR{xКŰΔl>l?]U~Hxv캾{i^5Yy"%4Ed%;?P9VvRn,7B'kbQ5U_hS9S8\0'A@*g%(]^r"ĴBsJѰȴ$ ָIYAnrAœpFbgKޝ6f.dQΨ\@yt/>wXW9R|DT|ēE;BY&%~drZCw_?"C/WjD 1 BFȈX\Iΐ.⊒ K4nE*"#3&j Wpg?>}/_@oƏ~#)puuE"Rѕr6S UTaERFLqϹ-V*ZwcƧyHk9P5pwB(J.eP"W% .x$"a%K9 f ޾y~Omp{}#+"{ja#x@zd{ٱ.cƉ6i%#WR]k_E~FHQP9)0ϫZQ87c&LÄiH0M/?yah.;m믾omB"È@(SNu! nno|5'y8qx8@kÅ|yv9< RQf~eF6(.HN V)\m!r7hrƮi ^vYB" Ʉ H{KyP˺U~. su4 fHv˂Ʉk A@"m>"*=ֶuwn84sQDiBRh(&$R)hHM/2i"p&7KcNTDR{w0Dj!zB\jHI)3Cs[*BBps$64;8JY4!g gP=R hm5S4馁64} -g$7ȼdcJ+HybAe"z4#6$zTXۥaKko<<~ViZ Ryi-9Kц 4ӀMߣ:"=XX)1%tm&(#R-9N3?ae,ufꔾrܻCm|8ǁ\, zfqCc D[0Ffۖ:JLQK)6bǯ6[Z:O&4P{}J*ǂpk*(q3MX#1# 37_ F*5)1Q\ZjEeM'&Q@q|yOJb߷,̵w-@E@XxkdؑJ`(v!1AT'#If=% :hy+y)3:Fc,1us o< c2?mfirx~Hyw^ryQ<^ۨX#Ω 8B-[J~7>E'{ ^9ux긅x^qicCzi?=iO B<}U_aѝ/߇U 9?%䥈XP kwcU~ڰ,/L_y x>.\ygKH]4χUΌO"JdT֪s}=K^>=2]U46=F1e rY`JTf)SKpU\\PkgĘ`mGckF6!pjT-5p‡@i.bF3ʰj`v">CpnɌ)k[r&MkUũL2ś nv32T(.+]W.3q}VHghIEr3ȸ\RnAʉQ3JU8{nX9-XJKmR BgGό >ϙ2 +jL,X*BQyWqZ)(F"Sq,Ƽ u-X BւPO|ݐX`iPu8Q]h$'.n6Hg@z9ch]3Ҝs5O]עﻊ'95su HCT 9 .x'(C 7\9 0Lt'6%ߧ]ے]˪.0#P R% J#oFt1|BH..wT8`%Tp4ͰyE"hkn9dܤ"Tb\6"^7*7s:"h Dk!m&F7YrK)p:Ж)gN'#bHІ-=wxM0'ii˫=~wqӶOgv xixhpxF'1yBlwBCc 9ӗ_YI"?ZuZ}SjÈq03Ƌ$)_ 6w@$ytFPжTB7i.)zBF!sFkD@PJ3WWh[ %_ WЦA]ܽyqukb>8Ni;:>.Ơ1 2iжM" &G@qI y'qHNiuot'0Mv1P8`GL.tRtPZѰ1'Kb|g95YX[ Ba@J<ј5OPZME[LB < ۴>Toh426۾:WWpn}.R mqdRf,SrOv,# 7cmud"V1 =D r޾} 6AEkE%v;^2&D7K41F NGn@>t<@=MZ+ ޣ;mGRmGJLC )=ӲfAB%u#W=%t @xy-1 D5 L)%@k ~ɹ9"D:x&+&zJaq>jR*h;|7D`- ]yFYl وI+2>!XNƐy c5uD.yKŴ21S,k[\ֲNh~DS95o]ٶۿy1|ٍZ@y}_+5ZK̳xg boݸ^9 o޾U Vy8YRܗ_2.2fy^9;E~~Xb?tx ; gx\pGe"1?sm !.O~~}ś3oJ@] xR\.5`Do|wΫ4qܫ<ibU0~<OK#yBmwb$"< }dp2֮KZ<=m!/^r)4s(ǥY,J# E'K3< 0ՑT:bMZqZ+jUu|_#LoOtU1K\J, 9yc[]ii[tvO PsWB91Kj4FaGLΡHRT\0멨 i4 frp .ΌCbH9m)ܷsb\ !xl6=+'hER0~/sC7jTI: B#s0Zgv-7RB.-oј Ǯg$MSݚ̔VɊ!ƈ!qAmEvgБuˍA͈Xr``m |>3y>]%WNV1PEHԧXQgb},0j V v[ R>{b 5YJnȒNW4W>2a;m4ƮPRS)X$<nP(F9X<"kW IDATZKx<DyX&wY2 ]ȭ( y޴mȍGMPs}pU ә Ϩ9UKkq-i*7Pn/}i4ڮGX?t>zl[)q8jtB3E>6}wCu5MqF<'OL+})$jF(hڣ-"22hc5aTL`d(LB"f䷿E]&wN(x ^C("ny\Rl΢[/P%4 |-W˯ KAfIFʁ ˘_?97Ͼ]#-, s22uy%BAhjxgv6 ))m`Hr; h #:7h$m<, noo9$L),Zc45}$:I"D|]Иb AEc*q/j*:*(sRÜ+r1 1֓i!"FI.&#jf<5A*} 䈫/oow?.n;Ƌ+A5:`vu G$ s cw;~ ;on݀仟ZUGQdu -n{f),,E\pDmfUDʹny#"$|[Eh qJ' aœ"#$l/fr'jB)p#rm H+4>wӶ>{qx8`39@H]ߡ͈1j4~v6)c|p:xOY4F1o!kka^D`EK-k+yA)YBQPX/^4T)딉5H&a۵#]Nhli I/h5 Dy4gWC4GEOV}, "7iYZ^};%FGqMq z=a&HM.trigG˶UyLΑĕ$RTXojl)eLT% ~h(i%@Q 5L)&v n|-5S AVV aH1)$On n#yymo7hk4]󴇢lB D)?2vyH" lt9"Zgfa <;&OQ'H`9jv_S s_'+yWf۶ۿ-?@9#]XKPX5c8q ~x ?WGsg? 1wѿϙ/ߦ&{]Ћcaqpg΁!EImnGhWx1-Ͷ~x/wxs8/1G"ēY2u>?y!|֟U>yg0΋?CUXi>6gaܜt%sq/Ǚ.r}Yd]>3, n)Cji)mn_C ,Yx%OJ QzS>8r"軞-mk(ÈQ޶04Zj p'kiXKư$D!祁R@,qk.! 1Ye$)-5>S"=,ޜύ]m0S$YPjLe$FELq3#RPHQmps l1mٲZn<$nrn%+J4eL=`YE]ô)󞊇1Ūf/9E ӧ  s"c29e4S|ST`8xYiݯ+O1B\d$u$65Jt:rMc<5|rTRp8t:{bPq*O1qa'm1ϒxD++\1Bs(KֵiH%j4 43cb͘o v4!xE|COΨSZԐ5x[ BJ. 'nHt]_Q<9e>v֯`=g Mw3N߶-핹aN hXMc]m4 lab]`AH/-s*nyziHH.ߟfixsGs@p<@x)3ؚRIS5agEUx]?y9MH-5tw!?\g&vG˴2S+|o1#<;h%Zo hW/opbbӵZ k 07zʄ%V!Fp>Rl0 5P,jX循{vhP(E>r< \%|%2$^KPPs)vB֌yt/ϥ9hXqVM?c@7)Hnl,xGf~wnMCi^\_cR7_}^|kyLn^|O>Eb4 1Knm=~ i¦D|CW[80:`{}HdUHZ@8qC:PS`Eϓs[?㢆y c%׈aAa&M$89ǀ[t5ԔpbKs31ёP¶/,j0fen})>q\/ >%³s#Bd: ݆<Њd1k= 򗿂g-b|<猞Hy( - =^}SJb;_q1F$G䌕 lD|m"i`a`}],:{D]X(R2ILV}q->GE|"f(/s9l˸sa^jS3S^0y5rXr&s^CI j{J9VɳWg~F-3X?ƒ'V*jֿY­ Bz~8|9^jb@,u\H_\QZ;Mj' ( j_`4/-ju'|$dUddxZ9{K>ej- Je-D8Bx%[1bVN 0RB )~F)`pf6n 6Yôɤ?9FΌ1%Z1LN$Bh[B5grOAu/~$7Td:jSἻh&нb2!Q+؎pj6~iDi#ZCbmYF帘ɘ߹\]J0VX\=3~?K|/RcpTY) b]fj rEӬ*<8O!W/qRzӣ s&yH&$A.]c()1;_LrPJ"2e] An,tKQiZS[jl%\d(͚u-dNuQ1Ȫk[ƋRcFHrE<(k&;eft:öMm023yt:V{8(WW2AImӀͦ n@VK8DE{ !LYC^[*g`B+=pRnc}SoR Y7ٽG.0U@EFX )JS"mts<B`¯$dl[F78'tm1 djNFX ZǑ NM c i‹k0@)x{wo޼~Cے40qa \$кZ]}9p›}IHNCo~W_oȘH7Z-w5 7Vd_ܟ+5$=^cn@rN~Z_OTf䔡H^ h4P$p84"DZۢi ֌v[cqf)"vEli0#*UXHq(KBQbTO$4QRċP@1,yI@dj8?` sL!yIxcfhH/[%rs<#AQfxoPI2rfMc )BqE$%=G!`J hߔ@N~ً ׮RN:i092LcHI^br8mQ4Zm']{kLVc-yh1lw[ e(i<@jM~iZU \ h^ω 2Rn1(B1vK!ac`MCj*:}sxx$0~m%I!49.$3CJ$ )g\HΧ3ڮnE  nâl"4ʢaRh?UIPbȹڶmuo-曯q}s=Χ1nVsuwiy"b@Zj6,zȡ#i$;Q)E쯮뺻6 s34->S'x|w#`̈́7Z^]|AN&B1#)etz'Q=Qusd@_Oɿ&uwA4fxLh6W;kԏOS+d,y,$R N Ժ8?3S[^Bp5<:/r5Ay_.݇'SxiǂN"hƃa $Tڥ.-B J୵&eͲx :1!f/??`H # IDAT1b?z$II* 񰈁Zu%E%Fhm? hlC_ӟ+DB"y(d H$ ED r19D?#J QEA),TZ<,&aZJ NakޔĢ$rL7 BdxT?[9C:Ɓ)Kq8 P gě7ofF8N|̐D(G?m;@H!`&pEd;n">SĜ1#77c?Ï>gڻÁ e4># w P{`C>R_BJmcZA8ZAggҊEՠ[5;OVu[T?W,}JR*@3O3U )igt}/mJ*a2RﭠNY<,w]K4&?(HI<(EMb?3%#"Ih$AR%j!I- H\={ MB[ 630q8]nF ڃHz1 0L|Yﻧ{b12IcFºk_" G+( =/9 tqep>֗)XI\΂E{qy=s,x!ߵ(89W4Fo"ڵɑY~8mkB>"z1<Ғ|v@JZH)13y48h,m•4aN^"w )qMIRA.3 nootOj,jJs/ΝRZ af `΄2R!+%Fo:/2'K.) _\woY$awUx< ضd o^$Wu[(%4 Tu Amu-8XWn>1FV+4^۔-4!q\8U}]UF-Dk0G@7,<՚@r d"`ܗЦ\(Đd$Ze0{W;4 A!x*)_;T $mӠ_u 0 - ? #jLrJXVMYo6#6Xek/_GʧGBYk%AQ(cƗ_o?-~[hBj{R*3Erۉ"H,*tY#z%?tDP9zEP-BJ@" OT !gjGmj~GHJmg H9#,C2$^.=\fCEJ:-X f\R0J Y-+4c <#eh)|jL6%@g׶~FcDa@R8qiZHbs3KMop=a0CfʙRi9#'9LG-QVZM-7Io:|7>xӐX?OJ/iDk3._{9/<3lI}KFYTN\>LfP[ 5wO~$ ՘H2i91mc0Z!!l6^j_?K|'49z_{ma ww j֌tDX[7zo_ϱ[mIqF$а%Bt漺UENPģrMEVe! )*B^ ccD҇{TgR2Lӄhwwwhو2gY' 4 HF+ ̑i q,hߚ!8Hk}Cm[Z+ń(D5bHw-=2H" f3ỦCJ~۷)_b8^ $Pc]֔p8Mԝl,cũ!"Ÿ_!%r-3J4fx?@u?HlCdrYbv#yBk/ж' Ɖ6BUQoCjU2u QdI6zZG۵:>z{ (Ä_Va0<P5HSgL0ц0ar3q4-i,imsm{p"4h=/W]8"i18 + 9<{v"^]shSR⣏>~l7RaC2-_u#WJ6-wȑĻnX 5,,dءi[OCJ ͖;l7WU1bt]qiqss۷lmNTL,w#3ɩ}u0a,qFq58\] oavDȴu R20ᔈՠ\=XY`;͛װ`/BwFi:4fL-sF׷|DCdH9cٮ(0 |ȨE8cd3)dS\M2T2OLq< T7L#2l.B CL,lĖ\'"?a̽712 l]h!Z)1;4u]9QZ3. Fۮ_Ѵn$8e '$\່"x"IJ 8:ϊ؟9@XHvO:e]q!lg,췿ľC{ 6x:'ϾH擱!ޱG_SEj/>_;wsQPQec=1UJp7 CQBR_b`,lL.y^n$w X%ڮaLJaD߯FQF0bm-&vv[kkһ8i8M8ݟEVܥHKꯊ]B`g4)|cLŬ F:F^ v[kj^iE`|vܝG8}c!|>JO%&:ڶEi}`]d*0Z9_ः1sgj瘵t,XNR/\/m$$rw/$Gs1'"1M&٧ _ǝ5BjJX d69qyS?$c;FZ2LumqeA&aA" 5K㚸|Ul`ɹ<v~ŗ[?Nj?AHoGvbȋ;>=ٲV->t8p@i `v%LHaB3DĶD/zKB9A !1B) ip6TJ!= 1ҜgLJ_ FfCdSUMJSՍ(itF{F`JIHIN@yk:dl)3u}ZӵS)qjL~H~m4@%ϱ$|f;\o䓏^`K&xrpӄׯpwAկp܄*7_@%͋hg~>uwSN,$@{2*\kR?uEl )F̳0'3TIbqskXcSt/a|iPJ(|ɧ?gϮ Q~W 4m8nG}mq vlc(IshkvN X:2ԱիX nFd5޾ympsu Mנ?Fd~ B^TU,@r-V,f?3bۮCU~L&Ax&}O3knkf0 y2QʞwaZ݁k4H X_DjB۹ 9fКGj(ME4L>4wҾ$7E )Y [\m1,akJHkJjc0DF]!'uܓBl#Q%#_>` dN.H%v=6-a6[=BJ e y/Kt)p$S@4d6jJPJ\89xt(TkkO-?ދҊswT K/K4PqDЋ YF<}-.D,grx4]D5!>*rOh&!\?(]fr!vpk!=Ӌ5RK:P9Sx<_qTŘ*ɒ"J.mC(F zW :ԭ+ƺ"yHS7uR0)yX䚰{W\L?͂pBwErh7ZIĘhx?@)arrEfMJ;;fb w"HÓ@k Lj2kDC!Ń2@R ڱ-8F%!I\~pcn %#(5r(Y{%a>M֢m(ifc,#%aNtpc4#SQܯN/5Vvߗ!LI(]х.f``ْ`IOiGA+}$K_>> MY0Pg Tԅ X .qk "YV>񀭤c1c?=~G?ŋ?0$0sʰ #WȒXɅxOס$5wwBѰŋ\m #UC F'8&̦ߪbQTY"fM"GBp$^I!Hħ8 |C'DXfTXz)y=UD6b1 Qm!B%Xd\,N%gqRPwTH}Br9I x8bIy~ųl=X==JI#DܿǛׯXՠ5 IDATn;"#7=oq{[R)LD돦Cӯn&d.D\U9*<,vS8Yɬ4t/ ϋ=u#bBuߍX__͛y>0Z9F .`QJhId4>~} >>|q>?яpuu3Ca3uB ;|!Vwp mȰi49v@뺐\1J"bx tU!d蔄 \BsZ2>q?/=E1XZMN\IHA0ֺRkL1R% #0ha)$lc1 #֐ы0°it1qB;ňuRR(;{_Qe6c"WbB׶DwD#md֊0L2(u1RExה[MRJ* ͵2Pš )ӌ%O4lC{7FbJ5| }$Q}AO.õjJC1Kq"i]t X+V2gcڍLe3Q=:: g)&] )u]ck4-iFLJ8K^ׄJO/5_-TY6 ݿ/}~'O_~k|p/:DQOBH`_$߱]P Mwvx+Ix?%_=u0{}wy#zikg`Ik;؝]2"$ ?7?zISC2@~8?w ~?u/.Ғ A<_?'2IHKå ?ygu~GY KOV/:Od((wy<KrmZ̳~ WBEЭ.䀹J<%kXx2֢Ѧ&MRhn*&nu]>32Z ƌ6QzF{h`+£NH5Rβt&8sg뙦i8pp-'[d~(0e4"Orͧ1F-@G"Q :;J*@M7{3u] &ĐxNIyvz %Pw]c3;&L#̢Ƽ,В8`X#"3S<Ŕh,5 }H]ZiOPشa\\1EN0Bc~@(dz6wwW]E0b@5b. V]yN;N:\10! '@)M)UWL0@%wyB|*,|$4Қ )em#ƙ#uC!WuN fmSnr0ZanG齃RݞƜGu 1Ek #A" 4Lܗ9 YoÈM@n㔿x*5IIYux#wxhhNW.ut !}ĹsJzsxsㄠf ZCNEk TpA?|3BV/> o~Wp)D筠cs6=wo8lж+&$]oeEvH)A.;%%_0- B! a8!YhH2 Ł,g2%ŘjWw&8{.42p)&UclY6J2ml4l)Up*82D8Ab$(%w)҇" $u/xAf/]:ZǛWb~eDO3>o9vwoqfB3#Y; =i8q&,0ydp& ㈶iqw4<-M#b&183hEftJ 4aϰ{`;O򃗈1a>$dԀO(a`w&^V ֢m[ wwo|@nu+͛[L 2B &54Gz|qd`յP)ޡ ZHzm+dNw\A,8r;do{6݋%?N"xZ]RK4mrd〦aZ+GsF'f7S;q8UTlg !m$\LQ YXK," !!ũ3;hhZk3n?P0 H5J"8x<+ԴD)ArzyYf 6( $'o}v6"fY<59s& YְAX PϟB5?)GNw!N7I&=RZ7%z-l0_$m R_`=4I] EpatM6 x]Ls˴# ?Gw򟟝C/RbdI\åsUS|޼yj mȤu=i8;\Llk;O4%H!=9X!Ĉ?~ iMעmS) sG.V5WA#u z^6=1b\wN FqR fLh)3WWuMf0ؐl*Yy\Q8hziZHݣW'- kZ2 HIkH.1BPH!N65V݊ۥaZH!8\ #x8Vx' 6W:QSꉔ2v{ gl6ޓ{\sܑ]8 PjCF?Yr49u-HHZL_sVDSL)(ex>SwpC.@*B?֊I|<gHsMLPL+!q4# vk6 {l2֫5¥A mX8> EkAVlռQ7[1ҚX)Z"d #@"t0ԟ)~sns{*zJX{]%oLxS+ΓڏK\ھHxIE‰/D[W[x$/[穄G ~׏~\ „n?Ox?uL9ΝV-Y\|}.Z>Wn %f =):|(3Xeʼ兘1D}~lz8h-(ɧb٩ 'l@>,Ney^qE<)ˋsl ?4;~)_5^Ͼ7/L H#Gogg)v_g^\,ɀuv.?z?Д(QB4k!f$ {46+t 6nBJE͇d{ʑ:mzipqf4T1O6献l*yZ sˈ̉AiB\.i^q!fۡZ2< 10 $ܥ2.x#NOx D{RQ!zĐaFcmMRטĀ"Ѿ{?.eRbpWC(mڮC>DUGtR"zlȂ/+60O}}&|t59uB~t۫+Qj.R?5dMt+1q33ƺtg/?4$d-)RoN !TTy ep.D ]{CB]G/zg? ^~@5C%|N0mncݯ`A6h=Oiy}+s T1Y"`YaDU@ bX'a_ ) K3\j %$dJu_rNq,j;ggY lJgkYU 'VϝЮ ͌;]䱨SɯUQ 'jjdH$c:QE [kH$Xݥ$(v{l>0u ?l60;lV+\_m&Dh!d٬(шaHqa,L@I_!򺸸n*j$"B<;@um+A. UFL!bB7Xa g?/=~~ͯ1^</^$@ICm -*'snڎzCInۊq'])%i1N#LcRնdĘwƳԼw32(u)9S}iLʚ{d =Jc.kо0 d:t< KhOݵC 2е= 7vTC^oc8`^Cׯ_x`ִPJ !~X?שO HT !R(ZK^oxsSW` ^xٹ/rn4 yjĈy@&x dUi]za9MB 1DL⥧|Fp<mj}0mzߑŤrĘjXkCihږr,R͚8!9ZRT#ш\MGT?`*%|@$Xב 4 GVZUx Gbf=zJ.ذ"- `!U5WeAT!iU;Vdhp\mf|!%ijRLqkND툒TEgSU:,3isӇxT<{MU<\v-/ o|˄w Hx_cI^b/Ӿ `X+Cɟ5~6M&ޯ__ m`~{tw~<]7fvs';1& b%R~+Q+xnJ)鋷6?~XeAd]t)=+ ؜WNG"T%7}2}J?!f:_B>DEwNb<{\h,f GB[K 0Jab@jØ`T,H Y61x&>k[hk699rRBѰ!Ml!|]$;GhH!Y4%͢O+*6Oc < ҜպAs&s3$iBGMK,xƆ+wRbw:YF#aXtz*ym0cJ+4uJIp _yvR ڨ3~$IXMd]{^IKL ]"چi9ERq _Ɍ4, Q)>ނE"^ΜXWװkRQ=uzO)u),D<=Vvu(Z9 Ǹs)czڶjC pܹ뜆v]7eBpfX.VbKn4u՟]]41ArzDUSmgAxG)ɴRzi8}8ϛs·8fA+h8VS0ㄦ1f_[}qo]~05]=!h63uf =vx$L{ۢk|? d _WHwM! cC- hQRbf}W)F4q ku ͆zJK)Nf𜨣D<%dHYvx'A0R'wXHeHS4I&#)GTzU41shg|ճ V,t9Dhk3X-֜uW_v/\r"M(E@)/EJd 9D ˝'S3h"9P.eP >fPXYBDyX xDف)BbZd0Ņ͂1LdrʂrOCڻ]xJJTNP!`z2K0SnAJH1ϩn%ipC߶U MPR` DŽ9%M/N!F@1O#=Rb6Xxnqw%DΘ~M*ۦ!r>ssgP!&\]= p+@=B HDŽ95;i@T0B@[2,r c\/Gk.HeYtUP/*>XcsֶH)b'ّy+ƐwH?)G4A1D5 p5$Cݷ>ffW'{Y721պ%\H)'6u8Ghk㏨/Zk$SZKpox D,˘^nJGj( 9^L_d̐ '6$ hJ$:* \QeQ\5U IDAT#?g%dn0qlp̉mi Þ͖5D A;;8PZSrཆi,FƐybhyccXA(CD{ m׽Pd\MAZ3)k_ʽ4Jfip{{Kd`vKh ܊ RJ}c3k<#ڶT ^Ưgњq@6a47Wٸ4 >x >F\]]c&vJ":_c qzMfbJ\iD!61 P9-|5AkP`3e#@kbe M<BRTc@v'Gڥ#8)WJ`+q1<Hzq8n81b*) ĩe]dJS=eRMg7k-a bRG]G&M^*40U8j&/Fy|BrxhU.3Ip&3Ԡb/u%%Bh2C9Z 41-sйPo2ya*4&hH!^1߿J'81O3B\A# }$V}Fr_2A1$@Hu0,b$E5ׄ m~tn<~ PYlz",{)j^UX:\˖A[|]Z( Ini3^B\tɚ"=wjdFϢ.! "b+NBHK ɏ_H< Ew1s;c_/ 4dՇerS6ڿ?zv.ԛnzDO%~y߸Xw{:_rktQ.>;]zʎs٥|v$x!.nEܿ(s_gmPaDY믘/7Gޛ-IykbȚi%aŇD3J e2 QD*p3Q!+ @eϰJ-Z p}?OȅaJ܊A|]4*g`^ʥ쿢sP'Gx\^H gB#"`"p8;TK*Mec5uaW.w_k[tN\S4Pt R i`g^cQt)Yٱc~ =BBh~_HMn|!(XYJJy ]O}eN8ƈ\2a?|Is|Zsp%@.PvKNaBxnO*~-Qk]#cbq]8ϽkF3F:r";2ƞ14`W8u`߽C*v͊Q28 tr=( %}80/#6%&F njW7R뷌?Ckc-@ TJ@2T)pws^C %Z޳O"_7=SB"a!X$ lbmTZ!mvS3Q d!A ËTWI[)19+QEH@9dwaop{u`i\X,E%}_ӒSTJ)h %FyD F 8X Jd1'L>c@pWS8E((d!ٌ!$ sZ1ޓBJI)Ε):T jbD}J<@d’1!P-rZQrbsdj@Ngꅤ4T !fhc }7&A˚H9 R+hIL{g,9(Ea!n%@M]fJvD945$":gyF3 Qxx;7olưBВD }[ y^I捔A]jV$yNT>KalBB}q1P"D{`z,y%4QH@(,_l/1 ~\ ~-ma@e>%wwðT#@ zͦ[hkKx\N(G,Ef|]]aB$`2` %edgDo;'mF»>Aغn "BHUaHkkmSTA<Hx(yA@mrD΅)B$ wT )bf PFM&DŽZ榌_AS_ȭ(+I&_ c!,."ՎX0M#GyD mrv\#( N[8! i2a!F{Sai@)D/Du:RКd2JEIse E{N %i'PI)%m9 }ߧqDuYN u X)Y/8CKD~"%`][5n9J{I@IwTQ$ΔD*D+˩t8a<z(!:6@w]#Eg'7Bjw"z!: +2&'xkRk[ }AYL7WmJAwHiύ#޽ \_rB B=2i-3x=FXf(Ad7=nCNqv3`uov[1r5$G֤\ :61RmOݰds?=2]*ggT (Z'9i6@?%bg6l|dsogRT@ 697o`3 QMݖj'Qb g61C:)'Q ع&@J;Z6OPWmw0Y5EBYJgT<]ʩ\dc}?0}T4M,1<?*pI/u:/?3 !N~,qe[DYŬ'@֟!-ǰ<[☗c Ha<H )`Op֠m߼875XR%B  f y-4ˌT (nn`巺*jL\Iy`E|*Kδ^bQP i18RrBF+\6O1695Cg@tQgjğwHk3bۢH~| 77:2޽{n+D== Ӵt@JvĘ0 stlq!S(2WWϰ8:ۊv"U.(V j\S3n(v@uU*"=ǨsDw6"^a~jhx5#0~τ 8!vwZx84gĘp}sZx{RH_fO5GLu3`Y&K̽^M7߼Oԥsm32 65kpzi 53W|YbE>`51;B$|{ZG4RtsB ^j>/h:&2o@15GLdv]%޽<ϸAIئqL + kB;wV`^f:~|LPZSsU-8%^>ib΃Ԅy'ޛO}f ?O1~C\7>kou,Vɢ%wDKǂzr<~FD a->],пo6_|MX$uWCЗ>^'sMҰo%!#Y~ܩyx$^L wh(g3ϕ)V9GIn׻˺\\ īeE[4\e0)<Cj_+*}AEs`ݹGǯ> W)z^Ɠg4y.BRt: nkIZ;爞RQ2W bJхuumMl9dۜp d\__Ӱ7u#ېJM0 +t)XVj|Nb "H#ĩ/u6t+97VuN0iIҔ"%@-c)AȮBcFC B@wRB/AK2ц]ZT!S$<ة9wL S'ϫ0B(ҩW J)G}}O}z5^*U#qkɉBCZ[_[SJgV)5&! }iduӠsR=rGiU%&~8gY%(2޷ ʉϣqqdDmT:kܓSi]Ji}0oڠ]G?weXg0#[ޣ,%(}1 dDK)1\!VCBh#I;2]&S$rlCu1Q˲4I 0A+A 'ߓJnPK3wb7%>d4O8U3()l0<0#%lyN#g49 }1lzKK8K]!,ô6b?ͼ_YUѭ7] _54: #%+K恦!' ylI:,@8c"3Nxw7pqwO,-Bp7`w} c{hk@(ΉŒ3b 홽z> $e)XTeksCwl.uG랦i^pw80!$%f_omHB4z:2x͠+Z۹yXc$2PUbFr=`rÇoS݌$`'I[O*gBnFFzΨ*)3S,RZKHhl:۫=Jg4׷P%"}[䔰 !%a9FOG8Y  b@ ~'_ eJD#C\ ԏ͖u͜%r%ϥ/8}L>D¶  DQ+|gO_`vy\sf֭)X\Ԍ 7Oۿ ޼}"Ru2/$j\ӄ/ }]; X d;P~2y4a^f h]lٴAnsuC. J14B`>Rr54jзrd<朮FAx鮣Qlxp)抍ohD+BZ3-s3Խ$2N㈂•DEsls{,'#[5Yq<1Oc@-J߽C*Ozq:U%8qG8G}ᵒmީϳveR0t80dﯰlk޾ rʸx@vnߠUqID/!hF9`BJɕR&;$,*vZ~0P +gDV研E-]^B6<3 u; =6W7?q[  GQSHl1ke24hf ˞S{(y2&V4:|sKMU,(=I8~rLAXރ @\7{̃\JԆ2\oG!#=jLHѺ>cyZyP_0#$}}C80 l_ 逷o_vGnc虙>bXF=uH߻Wb^`W#_}atK`r{XamNy"BIZFCZb-Nw86]?տoÂ8a+|ʘB)yD)X[z{ _}=BAE׷H16nvEIwwHr!8B9Ɖӡ "g}=N(9 h-G  I@]BcU3(+©nqI _=3r3dXBI*Qpe"ot/ PpBKOfX5Bnqc(+@f! %67W(@Yf)QTqҴ^L*hy"'1O i!ӄ,nQ $)5"TxU@RJ%4!ngkZrgbBJ]VNzjl:!/ q)v|ݐ(=:.Ϊg:[Wű}#!ux?6ܯ}=hRqwni)g 0ϥ׍xxt#yW%\^eɓoS/r> v"x(Ƈ˖(w/ '?y&%֮_V+<&#ccZ<j~3q7='^t|BRx0yJ`ﯮ=9B99)]J9] g' 8hpUJAjR_քҮ8sQsrBzN3:Vܑ:׉ĚVmX3"ib=-,;#*Q8 b" ]1fN#rN0Ʋ[Y|bJ$ %y 1SܧEmغkJ,8_:BHАiDM<=uWt1ԛK6zi.i(1Cѐ~JIBe: ~^9ys=3 5Kh&=?]!xJևRRuzԫhf 4 7㔨K+CHKIi<^~) R7ɚ)C ǹ@,'s)0F!FJn[kZ }}uSD.h e["2/pZs6knqpJ5!XSXfϔBPq!qb:ޗy-1/ }/|Xzꞻ~a1TRJkt|B]̉{RNw7Y&p pB*Dlw!!5:"q9` f" 1+Α!%>CL%)nM::_UowR3Qf:e!D! @:DHR2 P%I-K$thTݖunB q&LI !DFI%'|v+D+2O#d x Jvm *EL@2G:dAS,R`ݡsX#\__SŒ B) ܽ'qg ׷@l&NW]τu›?HDHVgXg, } B9MDB1"p (9+䒨Ӊj)D$1E{>8XG]`P Q%{n;|7{wzypaG2Y<$75pZc-3Ҳ@+?կ5WJ n,R&ZcKj9J*x)NF3֦}HO1\e&kaNRC"z#]UJ N)S]F-%HLϵ%%kRkBR37s8OLFg[Ҿ`G,ɉ!/\j":j'O)t2uErj]sr ZsB$ ѭ²`f8Byb4Gh-\c<'_j(`8M8f,!d6o7[F&fN#K9 &󲐥ڪ#c?ÜQ͝(L2Y3;c$8OEZ6RJ!Ň 6k<E`臖g<6ud H\Dq`>.:2:nuW)lja?cJQiOA~H,3B*e!uED#mzsf1k!zO ##u]t-["kM3 xk6L#t:i$qf`Bm^S6t{MRiԯ,ۂgDLjb~aA"i"[-QRRJ6#[P:0hT(k-1|j&"Cn̯ 댌  fXk3:k}Mq i{=+3^/#͟Շ{?Dž œ_8/?eNHg(bB)u#~!]X5{u6xtvk' #dOU21|s`>r܃DhXRIHx1GEdAIj;rPߟC2RMu+w]҆Ă J^Z#2iCw\u!CZrQ&1ڒ-#8m=2%5>`5#DȑBK ~ c4R`mwx:@ A3]k o v[+Hp[8C'@wuZ,Bְ:يChܵQm#S `\0_'BH`^}W7ndhI5qLHT?_~V[ L>` ylRQV}wo|ZØB(HefvآdiLZ| o o|0Ɛ#%4ňD`,Ͼ~O|1M'qxk`!9u/)QBȵ=\ֱiΚD'WW=zboIC|2+ݖ>)S==azL 5 Z_$6SCВ4jǼ8_AJ`g ;cIO# }ߓ W2gBBNzb%:۵}D:JH?K#]Zi2Z`{}"ֺjB;ƏЊ k]3V!UQU] BX 1NRJPB9DEMG2*I`bBұ;Gu#e$DŹ+'5q$b+)-L-}݉)Ik&y@w ,ERmiGϺe0O5JJPFYvᴆ,'ym̩nG FrNJ $NqJbH#2Tg@ؔ`vü,\yZJ]w"DO 7ucZ7=uC\aNNP*sΘZ+춻S|:1|N"82+~YmYPq<{,31iPҝ{1mMC f!$Ǜ7oC'>DGz{a8qni2k]8\"9xObVw80@px`JL.18ÉbP}18]LJjhcbبu^%(wH#3mp#`3E#>8ݻwægCf˲( }Og暀*zL1 IDATFUpE_FuHa]дmUˊ}SYUK!xCS"F.̟t0Ch&u,k 229SIlMnyMh-XtBX)t?ϥ|qS:K3?__]y!?~A~̷ss_(>JtrOt[k)u}-vW;(4bgQu.Gqpy?X}xJH1?ӾW}?X5+5% eM>>eeY;4VYڷUȣUX4Ex /UR/Jt?etc Gsqr?/39:_sEX}sqw{~/2-,TÈO?"ZsցpZ4P*Nc^lP/j`'6x^)&,CIfC}FC1'%%bu臾%5A*Ũh=Py]uyUJ.DISFpVZTu Fzي{2+{Y#mئO^N0KAEHJfIbBJ*ě8&vSuBҲtH"2{Gh&8>4iZhQJbnRi<…j' >=yT4Sric҄RHN{)վ,ӈilx`o@Ҹpl$xNդBDYJ r;Ĩ4Mwֶ_r4\:b\n臇 LCI؄_g-F?`-aʅ!5B)iR Xʩ7|Nc;炮ZϜ1%+<L}J  #4dS1 # r84D6ukK? CHcU|xspwulf)%Cʙ,TSuȒBbn^LbתY {{|E3"`l 0O3xu{b)G9wr3_*p4G|Nu}IdSϮV59,FJN?i} "ChXePFc>TFMq)afVɉl$%JΗi~~dD˄V-MP EYa|-̣v]n7\\Խ{Һ%&O1q: e!0jnRAԔX˩[A}*zPjb%ê/cM ![QijMء'`V( :NK`@ =g`w{@̧K߱2s {RƖ/@.Lq5Z `{  b>G8fgn@ r*'S.5, DND ~Lqa,ii13u 쮮Rq !④_b.XRDV)9ǹ?/_aءvd(BuйP٦i?P-P.)%uBs/LR :kナ6jT]ÖrNԋ|\\{rmr.Q ȐY-y^RFՔ3ДsBІ˼`ٶfC*!lӄ :1/K/&CRJv\.b'\ljD’gakDQZ1RLjXLIEq˔ #ʩRFk/B@N `f3@7f), 8cB+Xu%TKԔg!8f^ZRZ"e2/)ǔ=)Z)%" te{vKG$ֲHϦ̜ rLdYfd(m0#ںJFtPJb NFER2Ws:::5,GkAKYII}FSS ]sH y^ ]Wu} tjW#ɈIX)`xf˲%g5$<͘wd \}_ X0cf~nӳjǰt:#B XTH[22k =/@aQ!&*,g~:b"}??WO N;iLwZ;qssͽɤkM;nik -h}K+(/aԲFjERla%c8 l*}=ڜO^}IYNB~%ӊVl4*=WG)t&cLljO rN躾%)R* F۩T42D(ZK&̇uVÑ E3r庙 Oæ<9N*ȼr}se^֙FPJec$#5ϬKufK5@5BjFS-YcyEMH㊗ 5O'#_?Д~c;/?F7|džS1b_kWPW /ć_y?MxoO ?kS< |̷s_(~a ?'D8.?M竗@_^9KkH^u?/gSIl(\;/˪iidKeו:="3k@fT6^C$[WTe"EI@*pcs="rJ@5`i,DE_9{-"^C)WQq/ܸt,y9T+^eOx{8Y.߾Ε!]y/͠\6{fpebȗ!}?%S9>Zu32J[^xqwCqRP%w"񂐅f!\?@sQ0'OFum]I) 9K°z. A OAbCd1]FU ٲ8F²Q)Cq5CkFFIb@ uoYiu])Z2cPT;<$`;hcQ`=6_%_Bƶ֯FhJ9_k7}RlKoswqWLJ%!}zxSnx7͘׍E =F|/_^}jE|)Sk.?x@퐘B%9sMdJ_W7o_7˯p= JMw=Ӊbww`/ ^rᱭF} &\T4}pf3KJpՄzS>]Qh5B&}a&NxZN':O#u[ !v@pseqpxDNu {#yPP::~JBKu%8͕3tKfqV0Z(1tC) XdB/𛇳LW/!0΅9ky\k5J5&8Ϳi¼LUcmbB?|I c̘N0L%c܍ȹ=軎F"n3et]37 `J !Ů5rIRy{\&µ}p2KM{u]\RJLu=u5>6֝Ci:A* W6iި{ #iwmj0Z.H8ƐidWa^f>vXZo߼ú=nonPDB_}!YqJ+ƅ{^kL{1g- Q[5:ב)DuogË7l#CȺNRW) @{ =≫<Z"FmNH%S5{prי9Q X)"@N'[g/z(HAƋ6zXNt8S#nyrF̷ ibBB Bkhkя;|W7ٟ9/^%/Fa/^ě߿zZp|8b^6©/5JbnEQ5pw۲eй]7@:GbntGɊҤ<m],'l~nQro^t6f;m 1>o߼)X6S޽{^ $u,LVQׂw3{+z aׄ<%w6vH i5W1܁] Ȱǝ1#ǻG7 d@ /_$jvy ԋjti}sSٮQ.nCN 뺠sBJlTOJ!L\ga_ϝ;lV*ͬRCJ0~aNw#v^cP8XwO`2]NGLi׶l<|GPi!VSrf@/Hժ}5(Z @kM 1@2QLk 6—(hUU("P)׀Ty6{yL\7#Dp=QdVPçӼ@ E"Rgq1$޻j!@ o%ӧs!ҖD9'PIF|.ێjo,#WO~yOFW*\SS31fG2q7p6%WmDSBA#G.Gbc@1";21&ܝBvL!#e:̺!AkL9JhlZv]G# hwvN(sb+%y\egʲ%m+fZe]9eNC=g]g>E{vthuqu=lx{Xū/8=a?ZE~DL }N3r<8&2&(p +Tm۷o|wPZplpTLcy]6vJ} PaBt:׫DiO!EU)`w\{HAkB[vX>ҿʙlsS;?q NK 9#%ϟ?]xuw]&?[\$yބp/š3*k?U񃻾'Kx7p L>O5|S?Nwyp]-|1Ʌ{[dxؕG}uS>)TPԻG=E8;\>'v[lŀW3]nUe0wPޟޗ~$:}]}OOuB4a[6x $c)% IDAT!\HXC! (m0۵9U8pRm6zU7G$&QϳNam %x8|h 8g-bJ99Epo`pDN$TŌ=0$1ѐ75i ƗiFVM~7PWADG 2RؼutCp^{q ܛmHD}c-2rLb״t(#Y5ySI91 ÑM>C߷^q$yORU<^| + R]ǃ w:M<̢\h@ۍP,oۂnO}ͼQeibMāq{[TN[l٨².|:h. ,xMKd WQ>^QP>3XU(XyTŐbz']~ۚ0 :Ã܆!ұ %%Di`3SpK2[9'~vv_J!|:SRz>(KJYBd du6lTTAI!0bXlnKќ3| Z{@ 6J<\M %JK)PqbOn-Qr@G& ٞy>FHFcvY<%{·aD>%; ף5vk%b QZJm {5b,[B÷U)mؿ|W! }݀ŕ\CJ)ZJ| j&2\PRdItέ } 1pYV~[+|a/~ :7tip;FfdjgG%L/n_x:Big@R|,d8n`ypzxmmY=:xk@>e:Ŀq_zB@j%.ls}ft9ڔxÝWht&딚 B⎩=c)IƭjFMkH, cӄ~#auCu:–л}ݸpf{l~E=CHRC&mRƞ:+~@bD ZBIXMh)Ӻ`YV2KIRPaS,pojkZaAsnFJc,\0#WlDhvʹmW[Mm[{ %o|if! *Jt6{\2Q{ܚ )^BViF.94 C:}bbLq2JS=D\bۺm"Ѥh@5S;뚑E3 ,2wTUQ[xٰ9D1 ,7Ӱ 8}?{‡SuUOt0p}9o-B8$vp SZKJD)lu{Rp|xЏ h_]3uuh$^IHYk0M gJPZ2Nl{N}yHkѺWDHꖌ' /^bWmH)I̔RmO3ut~G 먏״gKͶsj(3j\K5 =O;ߜmRqQz&RUMHx?Y|V?yNO i:]m|~_U[z[\wx ]( Iy@dPkux/=]\]qWGǪ|~f~(<:>x}]\D'~WȗS?gIrU,.MD-M)%s %eyswu+OJ HںV<9u_KS~h{<1 p"qQRp<>R⊜yq0|o=Gܣ%>/#GĄ|!ѣ$.|oO.<a87pS QEQL՗8wkNB 8GT6PFAin[mZS rcyEjꯒM17<ϸJݴkBL(t)uPBVlcEj),6>66D‚`F]d{Sb>^k-'Q&c/`܃N #$_ּ1nb:[_e"P0/g@~:v;>rTҪ!lL;n'$cHЬ==-MB9օA6Mgh&% Z62zfVF@?t.vPEb͵˔S$Q1uX@#Yv)gC4PRAþ7F9gCa9AV/ה:=羧s|[V~b$w{F)ky=R[6,b}5@5t#Ƽ0Bߒ/&J< (0PrnHt{ Jq 0;75z4S21c-x8"X{˂s8M'8Yk~tp8J]!Aq1S"ź.>`{,9;t]/xE""|dTY_RlbbΈ؅:#R>Rkh躧;VSk6'Ķ5J.\@C\2 5E8Mi6Xa:R6F 'Ms) R9B`Z)8cP(?3sNӉC@jE[RNcY"iE]5p:bD_B 8@* -@iպA̦XPdP"G?`6EK }?꾐 `uT Ȩ:vA ZSjz&,D}O }%`:~+eyB!\qIԆ Jc u0x:3_f 5B&^S +&e{^ac: SY1:L(/LS@1׻̍6|7R`ZN\@F% M]6s<ȥ:0(+$ hZ}kL/9{6m0V=K|iBrIDgLd{  46гyY:gwkMӁꆘCAfg" v:saC4ӞSKkm`7Bʷoqw&j6cma $Ss0]V򀅔tX@Ȧ/5x-3BGH ;/By=O;?} w}Ѥ?H~J.}G󱄷 ou:&tg }ku}fHZ.Dnq%?A~jW4Wp0ąC|\F˦<1?H<Z\ӟkeԟ:gYt)#\$[;'SrrBI"Pа*acG<"]e/)x.|Y:~GrDE\,81.Hs6Ұ^uXd]Ժҍ uD)=wvğIuw=JIR039SJ%gB) )$x@k ʩKЋ{8:3zw), J)F$6 cGx8F(9wt[ZkFɤu|n!fo9eCdβ̰n儌FhT >H):e]! h纑-R Pu;\X2QJIT%RP'/B3"ۜ 1sQzyAu+s< 4JOt6TԾCKmR:xc3!7?u_>U'AohcIKLyg!1fbuWܨVC|%ҮjAݨ1vg hHEhU$aV3Ca10a,,/DQj86#FOhu%@ +%gsD ƾ$:E @I<}JR@H( ZjKńmYKn1%'HhJa^T*,Q$HQHl.4R>h)HL9 JMėV )6HiA.֥\B)  wj:8L㰄0Pˆm-:{^7>/[?챮(-08DZ{0V)DDYDJ\VCL%"+ azӛ7F REwQT*DϋN31LuʕhR b3m,csg99ʙ3Rc+aP"0oZ!ywwwX߽A:=`=p &6se `r(p %\GtL9F K} $b m%{ܽra7`wCK -P{ƻwo 8޼o{E?vx;l À;t%È Uh]!?/j.ݿ M_% AFl%5eS!DBг((^'X@)1quW=b>93inOm0 JfӛPʰC7e8K(e*G{)1A8آ' ~Z Rnw]fН, o74wM"_[+xOkOrRdRa/^!)ɩh\Llj4ZAKI(GN+y}qpGb0D2s4 "0:y6SP%SJSH-;"S&#&F*~D"GQ5,$r둮ӂxA95X21ed Zc2]Wfi-e1OT sB,vvBRXeT+.zFkqha GNL==0M3(IN4}  YZ3:/ N'"D{d\@6~hݶFB5qPDFbkn`"",ӱ9cŋ>u]u>6p80-%hCFipbSn7uh]]IN|j"yEJWg$/"V⍁6dsR)m(Qm e.0V=%rَ`70`<|h50Fr%;L ]B`:"%:vqw9ה3\JD9 @`\3iϔ9, ?օf0B"\) q,4(}Y_D6\ѽk.F+u`w'#%j8(e]5Sc4BHc7oQ.@nfj1R@@6󽸾uT5Q k&s5aD*< 5 1돖Y.ƹj/>?z5/vO:/ŏxS ۯt~;{+~'v?x q-<rd)l~FKW'm1<;N]; 9G[EtvF3~M* sзݾ(U S&sДBf ǁzFʱ(՞C3` (bi2?@iy(EDd5 !yϪ$N ~p]GU_yfThO:*u'sQ 9h+a$EeYU0В":JJdN(=Biilk@|[h?[*Qfa|T0Ju떐DHiŲ.t2՗xŗx7˯W??wbBI*ӺbKY9J6odA&S',|L̗/_q# -{[L\|wB&CHj!P=+v:귿 ^8 @P Kj]7|\̲<@35c%Ti  1%yAFpuL_В*?Gy2C[t7H5c?@j_ ðzCn}`l|̻ap|BZ1%gEtFDe:G)a%> Mتlj` i,:v#PݽuUFNڜO3 )z[k&Mٮi"Z;H%.+eZ6nb­ak}:k_ztύR2N ZK(Euk1qA{Tu@Z[kbL$mTuOWM ݎ$|hd"c̮]뽢S!f6"f<0 -_.jZSiJO]+jZG^Q5F JiXl!c;:_| 0hO ߇?];>CS/ pD^_Mk ?Hw/\*g{l>" v c~^ zOӡu֯;kL 8'c?z}O q\/xQ<$}Ow?s/s#,`iПw1iilyfZ -rNl?uD*&):X:B>ØHIݵ3p[KSDS.W#j1\{la֜s3M,buoWU/ݥi8KȩNUeEuVq.iWַ]?0/3T1,fR}1Rv| չG<ĀӉp}\͊_:@H# Ȃ@?t4@|j(jci&llG1V 8Qcۍa Y`si۝ =w㎺ %اi!s 8$rvHV:d&ba` /(W{V%KtBl({ˉu]xb9aJinNx]φC]faB:fSP f:J=#u, !O+1]X;صV"ך6luY9vYc5(Dv74X`$gJ.ZSf &r&E^cX{ϼ,-un+u#C }k,q:PR:#q)únmZz@}eYb8hY cq`MHkBݻw>[iȕ" 2>r<-t~(ICIyY0#:Z (qMl2kwつ&# #_k $Η\1zBuHFŰ"Eg.B ܱ޷QNt^K8~rsRc< D57J%TLa]5SJƺ.X*iXk εQǝ#?HIޯ@I%$v+!ΥT" d9yȜQR2O"A Qc!Aiyɘcp$݀?Y!eZc2%&tPz!ЭEr?g~Nڠjpb{AׯNxlgQ7pzG@o*X s0"hb#2^A`>tD:/n%&en^R o߽!?;dy$\ϬWy&E EE)F9|ojRX|4mȐ蝁 20W_o7ݼKooO81o9c 1Rz87 _ETR!$[s(p ޾E2g ܧjԛ¶,R`:ݷq,' cɘTѐ%A%JЋ{dWQO WdlXjljf%%5(2'SX%1RDgIͥs2~lu0"e+wY1FbFĘp=,˼@kq'29˶іJcYHΕC?B e!~G{3C@ΙF_$duֺXLJahy< s4 ~Dj,0r(YHw # j,b JXu]L%.e*eF&c(a-Cף(Akm=$yEItaK)RLa * m źVw<u{6Qgz<ߣ{RZXjy^h*Lkau=&&qlJ-TDZ$$LeU` DcX. Les_N aLJ#tCiYh?gb;g۷o9H!Y[3@T7)(K3 1h0  uj'y^p:Dm[[%@U-4 XDݧzutB{L#YnÆi 7sUEDz.+gxNexJk">D`[TDd؆QG%N {w>_.?٫ĄwA_M5,IS|:j{oy,{8x*?xi0 qin%>}zy<ˇWX,peՙLa>y)7A\r%H>I?>wl_ QkEһ޷Xot$}ԮzuZKPxoCqX.'sޗo&/rMe%{o$Yv]3#"dh(M2Y~Ln5]Bͅ"|Ù=1dUP@j,-+p^k}ϹI@b(_)/.&u*<0$6$X -|J9W70Xku4,B*dJ RXγt ݜ {xCDTx z4-GÀݖhՎQan$qbQ{N<P4 jZ $1(FS&  ŧqf(ڞ p*>4vaǾ3͕vb WW۳C) xaF L\i8̉$Nۓ6mT3DjofCC׷JDC>OfrQjM}XJ`Œ wDRRtCh;]S>,%\@1nkHY!Bar6N \ |YC=a Jj`YBa!b"L&zN"mG̅`gRb)dȄ+TȣdT{mhb.Or11zl4Q{_#|G᫟MXQR*m6h57=Ch%̧ (C2Jh 2M#gb>@=a{xD ߼B?h {~8tQ/}Lx_S(tS:#E',cq\p0VY Eu?'?Ja6JbG2(zƦ*$$)4m1/.텤f"#U:rD6 u,=={@%UYDcۢm[t]2S;`%uAzA3P>eq%gHBj{F]B(JI2NV:jJ݇H'c03cX&eXxM0~il pΑyb-R,\h D\[Q0Zo jmCm %ԣ4lB 2~AS2\J]W}ߓ#6\ hwBZ[k|5 !Ѵm2kR . wJHQqQS)eŹzYk:G8 TRͱ ږQ/Z ؐB$zl\ CWS_|nnB!Tl6n7ܱMT\+(-̮+AMl꺞Mt,BkTo0MRx^#hQB^ i1Fdб;ДRn{{Q]'k4jԬu\PRj5_JHrNy3B)Ra-w>xu?IF$WE<?Z_OtxKQo9}~?D]Jo>e4? o w߿B7;.őNxu8~ 򭀁:]Kw&˷$J>MxzYT]^!廉? WpƘu1Ŏ½x}_۹D4P*J|KI_oU+;_ w< ߶<@|[}--)wy9\|]0˷\'ޗHy3,?zd'6mBp!9λ:! X)i-buü&@kς_ )entYSua!!ԭ5enfC]a?чp< )Ild6c+; gޓa r a3FZm- %pRx1|q R"QӅȃ ,`fDdSN>pZ9ׄ8k N}QPO8hچ6 r03 Bv)ia7\J:hXCi.jڶx7)%=eAv4ҫk [xEh@$z0@/9?NB>P7b5u22##m[ܹ6-* 9e$th`$}5- +99SZ6TBj)QF?lY%6&WH1q)fJWdJ7ws/Bkh'g\s0b IDATbiꪊ4)x'cL$*~Y׬LDFsej½z3{2,59LDσ4p A΅{4 ͍FN4k;DT Zjy< X)? #y<sރ4-w$^ ڦE}?5F{Y0Eo[mh0hR U|:~F(TeMZ\1Dxg)_rGv4&O0=#;(E}15l"8N&BD8Heqlp`ŏ~!2l,NG 8mhJcY&!0M3Qm K ־ C&cj$QцDm)6dL !p5rVJY..2B$rSvU^VxyCD8#6 OA bB&\XHIHJVj5d8!%ͯV7L2lcy 6(qqk^޿Oxoo4N5QwR6UH<@}k*{[q:kyotNsR_.B˅*&s9to] X=@qIԨ暋-:$ër:. =<׈A9˔HyS.z;K< BJqy )^j~~~< *g+tý̅BH.~ dM?)8+os)0A?R4MvN[CSڤ|=v*Iυ yM1e.z) etE6)T)P+sNcVXY)SR@uvKNoIvΑx+,L.bL"gfqy g~_)jXoX,s>KDR93w̓R܏)^8]EJEdo:-.ۮCa2XFJ7;VA8NgA Rjly#9l[ ήmжgSul Nm8N~N]u6- 臁t 7mIP22mc+ĈvkNG`O!jC8a%%u  PG2^ZݐY_|-hͩ."bg6RNSiF2DGxSNM7LX+LK1HiDu_`ڿAۗ@ ?o J X0r~0O#n-eF7xvsiB i35~՗(DNhܾ7xO0}8"{"dQi虶AJMדpDro"X(E̠oZk1DQF3+'J P$nnvzя?g EHA! Y> ~%D &PBBo[hCLtCW}_]anp~ڎ̛5&`-ѓd,6R^ dA ~Aiyt? hB{AZ[K鄮ѵf m2/m1.3 B$m;9%#jKsZMR0)%cd<Ŝq !޴LJT:f\xL|~Qrn4œ'|nAvW9d{ N\躞DwFI<,ο|pφf]M4$nc$4=RA L0ָ󼠤жT4nY'1DS)Yc 0QF`#aY;I؞ y(>Ec`&aSҵ.H RMӐ鄩f )EtC5n)3кֳim@!+2 "iK1hJI6u#u38ɻns*uh&XDV`_{W;Be R>p q?#u)i`\5r3no8$lw['75k,wBYpNch;J]#lV#CM|]"$| ܣUy[ 6  m`-!zWkx;2S X8@??6OE?Pr'X1τۼPV D#(KCȦ6uSAK Ψɑ/f ]MC?e6;3 hSDf> UDMB%a$%(ˌ <mp'Bij#<{xj,Whږ:#&lnL`ݡþ5BHt/ ܛ,xhv6]G9'lO#B6DGH%mX8c9F4vk^|M~?cƠn5!uXJk]sNrB>f'vL9׎]8\k'ܛmh螱 h S pAɔF[Jp^UBĊ'D@:;1QJ}1Ntt"bīPr2htRݩ,'֡$!'ӌiɠaRDym#DJ(i0 cI1J! eBNaxD۴Z)]i0¦oi,-D799l6 ֢k naųg7;HY{Dq7Q J#~?Ai7@(i)筵\raÉ\`f4yz4~;6RiZ2YL)+Z[,ӄo^AJ2Z&wXX! 3glJ2&$5GJNaSFv8hlϟq/=a1Ćհ?MS;&6 Gh1QB5Peg\]_{hz"PO#wLum)x"->cCϸAkّudkfCtU%xH5s[0Sz8huyml}qPR\&Tk'ѦV#~=a#DrѦSU}\UWwTא3 sA*M8+m,Nmwmj a0Af7Xfu [WRp9#ޓ4i@*&~&Qۿq#W߽ wq.a8'E›䯩uroH QCӳV1i>~??q<{~hl}_Rx7}tNNʖ{QsxoR,OZ&ٟҭIHX~rsUICg./^O>;DZW]V. Ǣp>wErZ1gkj0~2rj\>xLӈn8߳l4=7g8M$@2!QR RHhM#%b} JIqI Ei-() `PwB­@}Y3:Ks5dd9Lh1P:܄|RJRN)4 A]N$kPa2sߜH!(yDGznLȢ]%W&7]fA c/ 8k l+5"QV r|.H6DBإy!DӴ0Z";ikKibD洚$m)_r\ :$Zs"cG͖8>[֕ v+“5^1t(4 IDATMӠm,{(%nA%׎=JsBWh778d0ϹT%eJwm !*L%c\9ٶ-Z۠%h8)nC۵)/~›PV{,H]Ji8\$j蚲wnf`Tڛ)۳$j0|mR^@DYVO0ڠ̉Y1ݫadsAFzg;cF aLkH#zo}ͦ{%!' `RJUvㄻ=ĒҚ0Кr)R̕:A)"JKg\I2XMk9iBp3~g?p!@Z4i:0T 6h!;VC 'L,0Jk;,nw˿+eF$^ik"s8,0lH!9i~^(޵0m, B ZL^bz*&4 n?~GP(XUQ)x䚼$r{$\ZC,98tmȌ5Qٟя*z|?/הWB̈i=: pwGyCd~#'To:N<Gs'lv; ] +n&:C׷"C*kP hO$yO>x+Uh,+ PB3LJYYk5Ԋ-r!熬)JV"9[&)4H!)=➔K2臞B4;]ס-uv-~`,˼`&4 io$_އɊ2pDbm+I+#lb*dAך `TXgi-R%!J6G\0 3Rj-,h6 ւ)E(crFJ Hxy:B&2~s5a.brkB ~qȑEmP2F)J dJwEIt,`SYklcx?^"ȉM'li[MЁJ*HzT aeRK,ˌ0rD$IsE]{9 ~ϟ 8Ѵt/T !xL>])5gӉRy }\Ɨg2)G{{ǭ<:&|{"p}OwЖ {EcœS܅.~'O됁 iA0`6ܙM8$vvZm ui)J3.2'$r wO~]VSɜ$ t-C۴!!s|n׶" Dk^7Ҕ&d6 =W7 ŠH%oZ05S:&wKkXL AN3R m 4PJA+ `q a9hXL 6 . =u$1sV-Lv{ŃHבV<fD/ɑ:_KrruCi`uٯSiɀB{@xxT༫xR4cA{S;ѵMJ hj%S֮?)W\9jjS!_9a< %XA 1S-Ϥ}S}VB}4oKɅަ&9 a`fjF98, ,&(` q !&佔}cF] HY!x)'JJNMm[ ͝ 8"a; <К!"6g#(rL퀔vK5oϧ ,1{M::6_Q뱤0qMpp/Df@I et%KU(4NלJV<ΡDtɦy 90״R#6i'@~^AU▙9墕1Ϟ=ëWk¢{(S{e{2In4$vKtlvS1􌤄zGeD5h%:aO}[z"s@,)R2OPBc‡?\eA  FM.4߾dJ)#_O>np٢ŀ(b)P(Z-8-6+ 8l6u@kRO}k*c 6rD&x}"2h,ǑLM@ 9uH")Ik7\W,VȒ̩8[' 1x~Uk(a\2~`%`ų+Ho s6B)(cQ稶h5mS6`ldn!CsdF@g 7Mv-sh]k浺mZVl"l}B`"@L*7. KK9hq8 TBZ?-[] Ų&Wq"kG)@*x-Mrm)胃 7RP20 b$f֭m8%KCZ6PWSN+-k\1M$I*j0Ni@B К($rܱȮ\Ƅ/8F(,*0q"Wr*В/)%䘐 T)i[ǚc]U1!@jE錜\7y+mM~O )w-LRTi(q< {} eNZ+Đp8cA 1"0X+NgA=eBpk*RnXqabb"dkt0bxuԿe,|3ѴΑ[ԚDY;. /oLs΄d>Qz@.OBPα IMC )Q BRE+J'Bskrz p;} N qa4,#V0Z#Ң?w AZ 6uâpH@L`/ mgZ{`xͳgWۿCBuZfM=T\i*a%XkX ^!&Fhj'nvJC$w$۳ )ড̩4 GJ ܩ}Z+, ݇V,!~9]o e q<0=<Ԋޞ BZNiD{2-^~]U/!:{[kRE8aYhG(()yMl,^a'l;] esA.ft1 CPЍ@"T%>K@p1a{u?뿦+ )i.g4'XeAߴFa\%SqCg rx߾F~{"NŠioo_cNsLxkv9>{03jgJJBsƑ,e-r! =Kfşn-S"w ƐZxL׶ږ7www3MGC[ x:{+yf{~]8h6,|Ṕ @X!Ob&H혼]ڙ=FyKMiKԂqFXQ>P1$乿V:yFIkFQ:ƈ{7[Y)%hp5-v26h8$ >o iE!Siu-S w_ N csi&4l$C0Nh[G !6#wd$&33RGsfukM i֛}5AJ6DT*ӟ 7F=bZ*hIs((EBsT g-5t=}fhϚ`*=/h?"׾ks)Hl:jnS*ZRCA]GU_Z\!=0V3u¡ XѶ=2(TW(B*c TD2lj0lA0]o Pg*:|2_c⒝Տj ~;3G$ysO{ҜnU݇)=sw67>Mc/^5 ~C&r?/곞hlJogo R/(fsz8ot{S5J/p2mD-srXS/-bKXʏO-Hzx`~z ~c: r'=Y:^ I_Ig aq<5(uir8^6cՋwBNVS|eܡW.jųgmBfͯ,n.rUu;0amq~EhmF^˥DN4С!zN e4#e ш ij5F_+EB",]̉Gh:pA Eu^9! [v`+eFd-04:H)"9q_4Q(FC A=y9BIBׂŵйp: Ж0eP wFv7mA5PKL"kuF)~||͓V h)9!b(RW^:&:Ԕ|PWpkk,krh~y駯2{KBc3 Z.kRpF`tEFx-rI$pT.lRCt-oS zEnm1C+ER44 1(1m %u[e'7,f׿1E6`$Lz+qx<t4vo&bf`zK[7S >RpӖRTZnX6S4%  A=AaݎMbP`!z(NJ3f?C(C}}"vJpmL _b8t-ir}}5͗d\qgN0DtLڶA2p9cR8Nja8{H!Ҳݻ-H&k 's[rC^Z)A"ao :,r+8v6˥ vR.|nYzK%T Ҁ93 IDAT MA1XIݛ 8 7sRi;"~a ߡԂ~Ϲx||=td`u' ZEL ܜajD{Gz 2^ra.H9@<\CݗJ "$JRauZ4v8O0`Z%b1BV4VAIv=c/ pR!vבXu *$ } ?~} m b F8\=*.F_r_, RGwoѥkgl*|$a`F̳ ~G~kpoO ؜P~ Sl'̍#|nv;-RģvՄ)*V:U^(hJF# %ӚMl*u#|"qwHR`NQiALU!2M\<〇Ͽ SdTRyXT(mhX3IњH5q$#lB(o_woߡkEM /H:u{h0/)23*"+٣{-ƏG4dB_Vg$y ~{T jrY)3WAIsvAS´V`8gu_Jb^ay"Jmq^0{qa)GÄۛ[eAW/3v}K]ޏ{y6MCdc 1M)/H9^.\I`33 WaYx[$y!Sd|8΢i<OBK\]]x D7Y 4beBIx?/` y a݌<i g ]OG}CRyG-D5~*cdևwoP$5RPJCH)5Z.h]Jj #qhGu?S)_dRC Q&Ѫ;HI".ڃJMB5dhUBDB%}$<}vj`1ڢ{V"%"(E4B^Ν LP4x||DR)e2qK1HB!׊ RB xa((5# k5]B"0v='ZwT/p#ĸuMk#[T)P640$qRJ}y!iLTW Ӿʆ`4 7PPF 8 \jBxpM!ɴHVm\,)Sѷi6\EK!ö(H3Uҹ0 yʉ} ᄛ[gۑk&HFc@ȍF5O]sm5CLJ#9Q3Uͤ6..!gK@+^yӬ()"86+JKR@8X5lW[ Ib̌(EB|p}WoI#6t^b[u]|߿qz~7я?yxa,ĊgQ_Lto>k.鯻T,~j,"NL^7wg{7bfKsGe~/^Q^By iY}/ j-6zXd}}z W\R3CT08hnXR+NA4R<Ϙ' NRsQjνbJx O:6:dA G};X?ͽ)eLIv 1 #",SĚ3yFHxJuv=rZa#!o&4Y;vf Wyz.p"l&)m4v}a`A Okt?б$R˼l  w9S!DjpR'NX8g3r #l4uAH8H%C^W j޺5߶ΨH?/PRb&c8+!aSb"Ub$?ΜU;A돑R1DNy2Xqإ2e6FRhSRpA(Q@9BΕZJJE鞦a<N'B*0Պ>Z+WzFk]ri@Ro]R ,2'hJ){* ([ =#u6-N#wn0Fݞ <R,%TXgkJ mס0 qD(d>j[ºYx8(q:9@F _ s3ޛ*}Yk3*hPkHT&ۈ\OAu 2\Kݟ^2tə#zPP݂Nx!nv[qf6(Q{V4/ڮ#t5x<9NCI5MER\aE߷8OX֟/heBqSR_b<:s%%ZBd߽Fƾ{H)ؠCHg5] %HFNij:\xuuN|r{Ono"E4E 3:H_~ 9Z 0Oӄ8FS28=! dmp; ~S" NѽbfL# 2NNÄi( 49gdd1;ѴI\&׵\dE]kbQ.ܼɠuØ˴ ſ/( 9#Rӄq("p?!ycI1zL󂻻wN#^~#ÉXl.S,mK(Ul*Bk&\'!t:-B!b }uuJׇYIܒzڒ8 ¼l PɽG~D9 Gl~;@Hy'.8a5'@J4mc#4CKEC=M X@0c˂[}뾐 ӻ](Z F_miP;<-i$75t!8 X-L%P/ );puȊk^ TcJȥjZwR/ʹ;5fn˟eF) 8#!_ǤD I>|1M=bz| !73DjZ[sa zjӌ1D&c4q)bK<#٬{Vs9mas&B2HVRs>|(yP/|d{O3{C)g6*d)H*JR{!8V{kwdt #R8XfBl"BiNjֻ!$ƚIU`ݓS(Y<,_a5kQBX@׶Db◜q^pUZ 1 /'Ɩ^5!]R@Iv\"F&S gb,^'ԏo*#,v}|o~w_ܑu>~i0O-%\|[P|de'Wb^D$ ﳸs^rN]H.?U?7I*Kg}~>XtQ%2ruSg9{|Ʈ/XT_Zߏ $MsܩǼцKxNkc,=~x8v}}X/ tc}q/꿎'ۯ'o?_??ں_~o=JBVJ9;N`J9"jYQ&:r#yFӐR2H~cDДP39:qnpGkJ֎4nG*eFNˮmi#x<ÂnG#AuZt<2VRc͒ #45ڦ4vi58x9g, {dN}C6׈ #DY#t]^„gt:2ۺaֺ]r$3"%¾:ح&2v~sa#[ki8bd=RD P}blm##Jhœ[!Hc ~s<|sF*< O'!bs|#R}7~LZ B*֢w:qZ}xjVgBѺWU\З/U=}&3Uꏍ> \i xJ\3RKB(EHqg!F0Mxa*DpgT\ڌbD{1Sopb3(F/ 4MW^Oqs{?ӟAI~O}L˄i$Z 1li٦m6UP\ 4.^ (ـBN5eU$>•{rz9[ZgUaP$ܯil ^;Z`V(0C+$w=e!"E#ň\+ZNNÀ4}7)-px@E5 `S=PXvs}EtPJ MK%'DbG11ӌ]ߡJkbyT ]STm < ILtclXeV262 [خ ל9C"2*MnsU ǥR$v Vu=JN@{ܸ2:SMkwtrS1 $ѡm&@-,W2q R) ),[t#%G\k282Zku icB>,Z?-dDDiqgJ=R u+)/~,vV"UuDiQTŖRr'1*~!lZ9PZoV #:^㥒7\6>6t)Ɯ[g:"%2b8Iо dx Ӽ`Y&4]>-eټX #X2O՘Ĝ#8`J& )%v=akj :]עDW>6dz3XئVJE޾{ׯ_] a8:;R1dvӿdZ3VJiHz)%ڶF5_fg?C mоת:"oHDƈ3Ddvd\9I)noBVJDjxРV]Oʳ+wlDc UmfZ V#PL"m~Cu*(h Ruto`cx(%66$xb>2䬢~LTRp#x^KWH&rc xD[K߿K%Pw3%ǽOUv/ $ > %)a|/E U^\Ցnߗ_#~Gn}MgQ/ JvK>nIyC(Ue\;k9($ۆ_~RJ(H^G=[߶R*,sDJ=lҦWkkPȵhd>DӮ!uBi 3NQ'Z1FZ`-m2TLw5HRCZ"U1bBN!@HFVz1,5!W*e+9Ck fie1ӆ5ezU(,R1N4iB-j w2ZhLm&_)-ͼIrnIJ&)bTt\flB=q 42FqG{LԯDiH1Fc,fm{,R#g(S uO\'N:FMQRIDo;""B vmKT+41$3u-mAg V&H!91Lp?T$,U! `206)G(%6v8hCHH3;ԵHsu맔)qu~5-$yO7 F ]4b (" R̐ѫ =O>ЇDhw]xDwa\pJA8y:pybkzGT` H4䦱Hb&f*^LTJE-Dfa+&rD-]c~ [B(E㑞S-{wGU{8〮0y6v -bX IDAT9 R2k{_|3AtpbcG?poQ8sYEUDUR, %P ``M+?HYQ$Zhr1;Z`77t޳YN sB+"E60 ~i&4n0̘^BNǻ{|c8=b׷Ze:]`^&()[OGx?i ?SU9E`P^A%L["0Z"o<>rlMaNh0#~КDJ4Tiж-Ɓ3LWeWJi>ce4n^"+aQ7b> %dEDrLa0N#Dv_A4LIT92@1*:`8Ȕ4_ % #yA ΑSJ}v NG#aFBj6] DbC7XCkތ9ʴ^nF|XHzn_FYZg8"q1ç_asAwH#ɓaάyA JP𾫮 'J)`B^bg2R8wO61 אXm@M뤔x=CM۶HF{p\\VTIFE~T2%[{B4*k_f2S߾H%HE^3>])RJXZ~b8 pma%# }5e5(#ծqКFk"?3Ѥg-ps}FA'm Vt}Ǖe W͕JZ ./9o]hIլ63݁tvxx$;'4Mq1/ v]9)0LA+_ж批tYbbOLAP4BJ"b)IyXzT&tIS*Lo"3~i0WC{.fJ֯G2m׼%$] D }#l_[*bu-b$ H۶jò,PR|I] B4/cJIh]GU 9\n'}INw5'zX|R9+ewu^gΏǞoG= ,7x q>VG~4?1AcϺ)f~x|곤 4I<14}hv'_JRJN-byJ8ʔɝ_kiV<%2s@%()XJzBxgU ?[y[kEFY\+SΛN.DBUj՚$ۦ!Dneo`4;m$ [/8ACӔF*L3s0|5so޼^.V<$` 9d U]wpVJ8R_˖^/hvä6MudǸl;p !Kts,[񌜤TgzK\Hu ,ie*hu](yF)]lk'R4\ 8)fDI- L/F\]_C/VW[z.O$N ~!i3u8iä e=RLL~kxDwW8k䒁Lf6 aZdEh<ᜅ6DJ)fH%`Dݘ _ms4f?C(@*g42CJ~MK<5WL˂yq#A!+KFu<CI8Nm^rh%Ysk~!X3u2R(!zl8Ll w{EDJ \@aIHR"O*M!zL/;dD"$TAJ29Ldf_dF0O><!'dbZCTR5 !Sq1r5d%~lXm{-$y!cB`Ousd p5Jb7%e.'bs)SDBgu3eDJhIk]a*>j%B0ա* vo޼A}5o3VF˝#tzPjBhcR#kAאLӼ۷ޣm;+yTh^9g~ q=~Nr=!_]Qޟ4-R$k1CkhƒBfI"L{U;Dkl&k@0yW6žEuN:KetLPJ͸z(p@-~  &lecu1d48p!dh]S=b#aW?֯|ƹ*ޟw"KԿ(_JcyK.Dkgw];NWKx3ss:GEH/kμ9Ź]U}Ov{R»2e9rx-H#(_,-^m,db$oL牑ӆDuMSZQ*ؚZIAp0$Ⴧ_odG΄,))sAaJHBRg*="c Fugƒ}CqCJÆn~\`-'!i)'a:ĵ.ٚ/(ҽ1B4% j%ye=GH)ж' DG6w|<[\7X=vJNBJtmuv+X RIBu]k4A-K[zセ#a?NT˱S<-躞}҈;IVii 6(9AI g 9BK_‚{47{ k,{'H8pjݜ0B 8NH mע1)GEZXT#up#&iˁz`A(W |!"-Q87ӟ| [pZc:B7#^_V:ئW6af[[]@*!ze 5MZk*(,bH NeR>@7`H Z6<(΢s JiKRa ;m$DI $Rf9GԚDװk=`䫈nݮ2\"!Ѐ,"(Z+HϿǸ;@D]ӗtSp(@AYrMLCtVUB"s4:v1mZZhC"1ZatM`^ᚌiwp|xa$-a8>:R",TMi맑$Cc8 GT.ppy0 uQ#倃!5-a3^K=uDWI :,8OxuX2a1dJ$j ~)RȄFF isDF$45ؤĸNp ij jy[8 If#Q]Sh5h&RRDQ e.}d8Q N# 9dB'2]YyZkļxgSL ahQRڵ$n$"Z% Ą䩦r6h'+@AEahݾbx2Z !%R\Ĕ 괮ֺ"JqPMu7 -+3֞ϐÝ5@ jRv%ْ k A;pGwGGwvxCj@  H` $f$!dDQTA pޛ:;O[uX?\+<˩*G4t!{/,N*!\t527L8ԥ|/ !ZDDImRn\Q6ذXЛsHKx71+4ŻlFLSյU1ƐE'WdywKnP(Ue`$x>k}Ҍ4Yx߭[VϰT?L\fF-m4}>;j-koŕߡяnN2G.V/;iw\jN/=tyo2>;~ "ľ~\{;H鸯o~tʿy,׿ظ$oxG[^#ǘM'|ͷr{4/HaPPTcOpn&++\௾|}gFFPJ)QXu>5J-)#._:W >}~)_OQlmm}u$QJjb\_?̋_Μ>KQ ظ~/~^AV9Q*4KUY[=Unv'hw G}769Ǝ=K^rg^޼ă>=|r>x]ADN2~'Od8ᜠ}|#BNhAxQnNΝ=*?gye q"n韲q?x{u IDATdF I?ozs֣gCz?N:t:=}7tF^  7xN˜Mܽ {-%,ɹobuuߖi!QL\Fk^ #F=Gϧx2+$^[:~~x&Y5Q$ +ޏri~-o`:.x:-n+ya_GuY kc<ַI>36gϝ7f.]YfGǃGÇo~v'Oȑ#8x'O|  6!mi /[9VVVN'<ܽA۴k+{ɸ(:̋_Ξ;`0ŋ|_3 ҽI+á,89{/|9uQq/|c ޴.+ɡGiQ«4{S7?|~>_(W_½|xɓ)鄇q)y\Ǵl%Cl.+fh-cB.`C66Jɱ۸,N⥋L&VVE|_:t8ru-],OI"4C\1mۋ%d4yIHӡ,)Ǣ"A4 ,*TiG1ysLgso@,Vi\xNݶ͘lJ4[)bk/c/21I΂16 n:f$4묕51e iZf&۝? _sQqYV{EZv)iwv/}aF*^/q$1_ᮕ&:2v]gQ4I34MER5kH.92X:.r꺢.FiinG:޶$F2d6"Fd _daLRڠB~0 h].ܵJAR+X<[&m YvD8h6/OqX4Um"ʒȘ~i%q]#t(&%)XA;%8Mپ,`@W73彈CEQYKU v9MR)iג:58U9 -,/Q{Y' Ve8O2DC8RWa;wV뜈` հF^TgstlҸwv]Q)GŌ+}v[s!麆;  B綁ܵ-ʋWDɾlKdDе-.+"RlEc"CMO =#L_!I^-00v-kPڪQTUKhoeP Nas GVtmGӶ"0`cAvN@"RHe4Z{c?h89N4(4\Oq0+yw6]/FMmӊ0F!.uV&}iZ㑠훆ŝ!4b8$C1u%9ׂBȳT JG"fFheZێ$ͳ$m"|dMVT׶9)kA)d͔崶JF!eK)JԇQM _DuuiyŒ[[4i ]}4 1JxK(ugıh<ݯі16 T0As΄(cgxWD_V{ry}5;s$~7w&ۓ~zfLߩgѮ~,szfWD|6E6,e<#p{jD .jy5{DxCP ͈ޟN ƒ[=3g`Wz0n3wjr?M{Osv An?}k2dY?|h"C^p48풵CY?|W4So׽=9';u'O=/]@(%QC('h֦xP҈SFpІ}$dbقWFc8_BzT2Tf?G?Z?9{y4:k_׉*{rx ^r“TzOp4 ~8wz^5wQ8pNsF8~:} 0W+FCnf97.~`(񏈃ZM}a,ʁc{ϬX]Tgf445;'ӮHҌ5??3gCep \z~Ï<o  Kdee%f1&[ԙs'8q:^=_#HC(C;n=ɢiZN:ͩSpVwR` 1(EN snۿCڶemk8~:TIAJPi&š4IjAvf3)U#ق~VX47ֶ./(Mg 9ǎ{υ E&ʹ-H4ϤQ[qP5e9FyqeVWW'7.0:U]㭸$;OlB8Nk-;mKJAUr޸.| &j8WcOa^$_7.pmɝ$".MNit=ݬl\UE@be m+h񶓆"jVVVqE1Q.Jihao!ŻQT(Dxxq& "'21NDB1&`sko|a.mobP;h> YDFN"x|$C8]p cq74uivF(EVpr2]ۃB8Օ$]ὗ@'C tBA HGiuY&Ԧ4˒<+@5]KDG#FUY|d ʱ2EU j|>e0vqs 5b{n-8BjQ !.\Oe^|Kuض2xqO';"%+Ċ9v8qAZ0eEFđmtH3,b6}G]$4:TQKDF+BV. `:mcؙLhhqQQ=D!-sd@>(1^ Y'QE,+(b:G,ED3 ӊՊp`0PW%L?~4 1!Ji4 E'-]_ VȨDxZJsغwXWEDqdH]2zfW)s@H%a=Bvc4u9K4Dpyk{aEy2 ^7#!G⪏Г\!;1u"C^HkqiS+GӶ$"`DqBk$qm]"n| %)8 YXG'Y&"! *cKRWR)Ke4M-)'GPˌqWuM "nN: ,x++2:$U!:!ܞ{9q]ۅ4 |~c/~' jm,B#m˛k<#ǎψKQ䬯bᓟO1q.3wǾ! jhjG&PGCa;c"c}#_B]4mK>ȩ%/WpuۙNWN3<{'^Kiʗ>u~|K~ouU3 3gbW8ʚo^'Qʡ5!>?[o~.E7(E]w}?'Ɋ EEK:4mM۴;=/λ?ӏIFKK+%+8r:?"Xqg鯴Bw:s,gx!q,mΏ?A#HY_?|V;_k^MJ[7Xccx+/g^ٳxk~ Ѽ۹~]w}=y{ywgl6Q(k")@:/9=eY1( qPwapqx+O>88rzOr ;IYAk%->d#8f4Dq.E6 O)DI1'"ʀVNPidy*YUp$ɞ$[Ѻw~HDySW%mےEHiU( Ǐckg$`M2(hVJӅ\ݶmD]J!hөI:Kx gP˩m4a6qs_ڼ}_+Μ?hu J4Ua7$Ud$Punds*jL(0+ZA S3U! y+ih'IJ^߄bgƱ!Rl{g:s- yJiL RԭB~fU5xY0ٙQi.IJrcө}]Uy^py2E!"E6NC68^kq&Uy^a"#AfN*D&Қ˗HwʘJ,hh=UYƆufUہ2rv'Sm;r9LFi:$~Wq_,Fi9Kl!6o;H%mk=kJ1I"s;Jʝ)wŋPLs6˒beOs jۆ9dYШlSM}_)<+.p.dqvF؞ES:Ok-mk$"XI3.]x oy.ɶ a<䒃;>Nq)iGFpY.y , (&}y.Bćb&r ;ԅHI}%6 ֶM続 *֋,ByiDj/£ǀ-x<3{O|ޥ.*3 .}. ]ʅբ)e= SN펇{ ]ϽeOq?9RW8iQ4;=$ $W98nTj 7ٯx/[s…<_vV\ _D_^?`0/wӟmvc4o|9˱'ĩ5*];a%?|{>߃z_± Eŵq]lv۵XzwED1Ϳ鍿**Z˛=뉢4wRR/|^iyO]UeY]]fBWk~I(.;6…dʋ}?q}_ h-];\|5VVA鬸 rWNgv}~-++dmqbs~|=Z:'g>R;; j32A.%ѠuvY0`gp/\=Q +DLyӯƯƌW<#rz|C2Qpr|b`4^!I֦e~_1&"rbϋce0CfS~!w%U{o&ӟZin< |GpoXxx=~'qqVjd΂*}>5 e9Y_Exi:'$MAt(""Q~}C 9x)}ceggGING㦛n"2z|# Y |b/|Qpi;B)Ň?AϓDIOwˬ3^Yyǭ;;կ9]gy].^]QU9'Άd"0ű87FƯsi>?^Np_DOrNU8e"qi&,=4uCH(I\{ Q@njC@1ϱ2B&|(<:dIb-*}@v]'18q&I&[`\ZdΦ38Ƙͭ-GcakkSܠiњ4 FQ$X䀻l4b[8N]4a:0Nٙ0Υ єqZS76,mݰ%L MSa[+RN|=mۤYژaAn:x_g~CGd:&yMZkzo;WVm9t8ΝcNZVs\w*xqi&Sjsն|"NyZN(55(PXU%mV~ID$m!2IJpxyM(۞0 h, h:Kc;&;YʉNp!tǬpI[g2$d$yw@{: E`8d4bI!jN\wyM>ubTBGvE qUQ={)w7q (M%[]/gQ>|z>g<23H ]Ջ&M.:Bk}$0:r(0P74UӬ'Yb8%c[LYt6E\YP3f i|JgD8%P\M' kۀjv={-@n4/$Fjdt MU1/L' KUK C\t,`:a6pm[3+wh8*Ca&VHlTpVUI5}&wHGqyY#.amd|Mg(h$Mâ`2rh\/֕mH#5DoLD\ڑ4e08{XıNKyGUIyTL wѨua|P7j+Q)YEY2XY[ ὒuwEx+gZl浾|=3>_ nE]c6h:W-}_e ;B-(~!a:O=_ mQ~ 8X(_Im/qg",$w_;xo2LlsW՜Xߊ#s8qC9|'Mġq{ϡCy^ IҴdn9Q/4 .i_|k(D(Q/xM7 xo΂ri7Ee_E&;A+6_NEM>[:6Iƭ Y3AJIQ:t2˯~>,%1O<.pN\q9<#:|hđ8r(Gx衯& 19/\xqY;qcǏqnfZ+L\`]o|iN\Y9g1yhpl*ִ wzgRA!/ctGqLJA>(G&.lm ~0<=;Zg8,i$ڶN{ZUBa9`Ei-Og)9kk=:8":qibS[5yIU7( u-8ͧh˗p`8D)X!Vs9GIΧR4.r$]Ӓ9z&@Yrd2q$hPɋl>u`%\-X0L;p]sXlEvPZ)ц!\ .UIoH2V|QЊ^tvIҘϲ\\-ݶ5I^PB(<,;f{FQ,0:8 EY&)qLZm;Rќ2TutFQ$qt:J9vֲC]7is/"ʵR)YSs! |qp]qZKYTlW-(Ih:Lfo>2QJ1 ɳr:呇 rN[iv%IChZP!4U[Ⳙc`,[IPNL/^mD["툒:|EZ :27"pij)*i-Vwa H%~4_-4༣m,Y̓W =u"t9O4lj4rʙNp.^$+i `@%,M$~ јUiv"pwkQQ097p`b6ej/8:[𾝫b]VbBLPh )8oI&++4e%.=28ȏtoS}#n-GL .܃*QXmDMc"R4=\YNkqu t5iaL';$F3^4%Z{4B"öwvБјj>V\Vmg6KeMY54u˼Lglnmqqs/se.oXK:/BrIiwǵMCg[ڮa{{'/^e6}];qєJg&hYiJ>p>{7*4<Ί}0(Ȳ,MHL"|4l@-7M#r+9ܿk$~[CyL_xh$2q1ʈp(Q" I$k% 'S,.gijGvuRWiF!Fkqd;Kj[\L/m)Mlbf^2ަ+D6 *ѤYJV<^rmBq.PQ½Nk9uHHCօDlpu ڮcp:!yO[Mt>j'IsG&6siyi :KtY4I%!h;MF[+hp|>Y*Eӄ9HTx([SNgɲR;;iLH(B[Ƽ9Ҡ,ZA?Ip¼K#;2aQ r9^A,ĉvv& CVVi;D!ͭm+a6$ ?2Δ(6Te7{+Қxh4"IS!Mr^IP 1 L"f$&b8 BMpE Bud̮R)bEmy <6(p Z䞦jJy̎D.~STuDSt4/Oi. s$R@zE+0 y Z$i$kA's#$*5A KB_>H-I5ϲ)gZ]>0|]y&~7ng}p?eb]H] ?2d5e5fx/9RgQ03= Me|[A^Y}R,[<z՞F.߳tV*~pb7J(v`|KYW W ? {|7TJ]gh{,U2y:({8aB&o <欸Aբ堒^a{=./c,oxhfԒFls'#٫Kbf;w?p,vH~u/K:un[ny!¾?G}kP Co+<;c\)\YgJ)(d׹>kq5DǑ!Np;!J y"3Ξ97ﰝ#6⒪m)rqWu,ǎo=Z[[X/ň!N'~Ӷ-= l:f ж$[h8J.]ȡC9{<Bg=v{?&~ux"c&kVh;Qollpo_`@4KQbC\[\]'䀆91f]75ȇz@Bl6 ϥhBs}K^u>t4XG ??֙s gHrs,dbo*97/?yNhĉmTњ$5DPFEB]X[]iQt6=|vAĒ+us[JK4ge0,x N4t4t#2Q.1/KZkwup$I1FwhIb%R m#Og3~@C ,hښ0Lwd$ h0jtV2#sdYFT$ql6#E$YA)t2!#4ng8B ZyeYdIFdqNm+\uxWMG4+Ir4ge}Ux'0 XQDgѤ " )yT O޻ۖ}quۗs[R$!! W.\ B&8E@c; V/yS^JU򚪔mL6X jIY--u}[k˸k٧խnSVU>{k1w.?:Ns$gkAXg{ n"qr؂ժ_jzN( `zeGáxpf5(ϲDCn"m89?yLP SR6<ʍn e1szmg,soߑ DQ!R )Qf-Qy=m Cg3Rp&!F9}7Z#ϝoRHs,PĤ:VㆁQI0fRZHe4&%%VAlIġ#r,e+FJCc4˙)0&TeIa+ʓbԑ64K2cҜl6KH@5I- ZF;*n(b0z 4hp*QV1Q(NaoHJ.R9TSA7zJ޹%ar'ww5*zڢ@ׯ2ĬbTW IDAT؍!0a SPj}F>՞3hÆ=YVYUc.ksϳlױ cXN3s xŠ)O4Fk_x24HLd1ёvsɭޭ5$ghE@iΰF!E^p}%z跃eEEY iԳ\wm,lQqYZ1f3Q fFj1uoP>* ]Ccv]Ϫ#&hX[JE!>)8's!jEIGXO·Vm?2JyZ2Gǝ7kK-ʹsVǀIBO MIaJw=f҃J%5'0?<-U#c'j){$Yc?RX󎡗.e͒;qYѕŌp!7rͣ' ?zFd,e= z-lH/Ԇ1@Jɮ)&$pn`P9e!9Zi,Q` |)mGtn(d%DDWݍ)7mv+" $ ,|q*}5mKV͖eYzU V’)1<6?kwmדb6bbi(uIB EYNdr#nݛdnn@1*Vlk"ĶPE&%)&"[D#]ߑ뺙bPm˶#vٚmD;w>-J658:>W8:sA⌮4j7b4|۞hg⺶V(U)B Vz^7zN"D)intq1Tu)Nh7f4Hˌ(KKi ڠuA㩧V^֑vd6ksdE" R2@ft](bQ@i<"a*EFl"\qcYqpĐ J]?`M^`4*%BH^:!yZ) +<:!BrM|J`n(LxHiCRRЏ鵣EU-MJ*7ҬV3a>󶷽7MsuƵ/FT=9bgDžlΆ-qNrcFsiTZk a(h,EY`^OyĂ S3ViEYV]4s,`&(YIӔVxE%#''V{|~/Iclqt ]O~}yGx#<<7|[k?_Ɣ|."?M]I~74ԧw~U%o=Zi)&8:>:}Y@g1_}N{==J M5]QU*I)Rkw&HQ qF4y,/ yrrjsF&)H1lsFQtGI_쒑<#nI@YXNNYX./)K3x 8rAy^k6%RxNm"[/BHvk 4 M0؞It҂2.Ji $qX17S.B'ǣ"MUm0KUmͮ9)Enf!aDQbi~cLnL>LΆnۑRjP)y1Dm5bNZʂ;wV>H_fMs3ҍEIib"8 Br쪊m&׸d}&aKMkť y晧isYK[906 3Y.7q21 Ŝ (M7䙸np((gyEꪤ( a(Jk"X pH.'arN{TSfMGf0vBSoITQ-)ɿeҚuv[365)خ^ղ\-6@>nߢ.Jt ۷&LG a F'8qCe~4ot[%M͆q({$׮_ǯO1uI;[Ps|&%(|/H޳>r m;n{+,V+jNi4jhPʲ-CGYT]0R5/SOY6ljE9 (cz5A|p.tJS!%R{*IKVl|;!#)H(,M݀QV+'k"xGt E] Uqr&szJn;ɖjV}cٜ αbd\g7^` )#e(B"s#LE+NcYbAA3W+n? ˺y޴oYH}ObLR$DI3P 'x/dmSj [0-uSl!X9=[[fva4Mf-X)sta>k8>9bTeAY.%6]v]ds)憵!H[yz5h&. E%8c.|t.<\x2Y0}D1@UF6 `1-Ð/HHb- |8ϵ9)%9_%U9D,!RUuF'VF6~lt2?>7uQex+6sKyyt}h{w_ћwt9Wy_/F_Ke9/P\4e$LI1z_|_i_^Ze>J_W{.~]~XѣX|^At]˙ʽt핲7]h^έNIyk) #I+/{)ŀ靏mNTnt%zy.!lҽsF&'v_n!{_~> '%hCSf]9"+( rU .Tw3䲹!l%Eٓi~xH2QR1%A>jY~;54ewC/s#T]7Д5MbF2LVKF>'7PRWFՅxGJ–ܸ?F Ha q3JQUUFOYΘ{(5| $qp {q67wy\,$gh )䓟_4R놿6?ݽ;M|S,Sx߁R_I*18raJ.-o~t~u]])xx~KƑ,("cO=~X6A1,1V0Z)×Gc`]-ŭ~ȅ(Ū)z|f3<ó>3}gŒ7ܼyhzGQY!(ˆ×l6^n~#7xϿ7m|Vp$F'jr [#(1yt|myqM"7Ci{^hR-mQU%UQU 45%^ZiÎTRK_>86{x(QDQp <뒧%L~;d$j)kv COӴTuv΅"UşwO硵,K}b1#DnnQ`so*'J3N #NC{ŊD»ꪦmfp0r^Kn1B:gŌqsF\Q#ʱ~Se8U,T eZG.35$}^cG4Befz04uͶۢf6kŅ-)%~YΗI9cZNBvCy=u]gv sLfmJ''Y"ى0b s|jƳ=G㏡ يJ)i%! L C.FRkHlnʆ`pm+nM{׆{L=w.;/rw[``#Z1)a==KCn&Oum {3h"1%͚_UC],8HENsvvY.mhRYo=l;YW:_?7;ݭNwUy 3/xIwq}٪yq޼|zgHw+y^ ޝ.K$'NYLiZv19ouA;]b&11eMO픾-~]ޅ ˴{33xrjHByUnc29KW9_ᝮ̗ӥ364&wKuSzJ)U: ^fIZq{I]eo]ARZfטQJɃ~w?-G1~/}%vkV}EA>-.#<3HQ-v) vjwmwc7FChjlY((&Տȏ]0}U]ewFȎq=eJAgsnҺF'%~yo:GJ)E]5~?ޓ]x~.b8iCx~=:y^:g<% zϝ;1qقsOC9Op1#}wM m0 ''uÏ_ !0:ϟso|Jٜ7zq!^Zc{AXq'hG'A4%]m~x4.8mǿ7O۷}v~>o65dEaY,QJ|9# H O?klOXg)~IAeY1.GY54M&1v6#oy7w}8"9Go=~G>DY(xro}9}QBHQU 丅(z _꺚u]o|4wֶ & !zʪ,8 DuyC.xG1H)2t gllE'qZgc8>>(,JkaDkCԀbHk2j#Q)9=;'΁86|qIaYX̱v ]Mqi&7`sqMEUWeAN l>SW5e-ͿzË7oba6S]׳>=#H4u6V5F IDAT&3~m+888$Ȧ`xdK޺ r}yKOqMR]F:;uޭU%TTh Cϐ1E4!mƄƘ-ۜMY"!"`ࡐf+vFn87L5Q9d뚦iHϮ.:grkl.n4M-Bewv)RN F6ۭdfwiQTS-LcnGLZm{->ݖ=ST%(8v}(ƻAÀ52SQN En߾M>N݀Eap!J+DOO8۬[/@r#i9}!8Xoܺs~Ȧٕu0_.DU R"O-'s|t4m2hsMIe+x!^];_lUK@떢jlN"n\o:LY.VMKTybnpeɵrx葇Y-MW\vx_bVLM8ߗ /v$]kR ^q<O A>/^漘?1&Bf mSf5\gy^.c[-C{{*Y!evL =|}8 8Έ1f]$1zݖffap!|.00 1LVx;wq/F1Yo6?`ZC;h+*a=; 4q?}a9a4s\FȖ2mGrRendK1k=eQ`nBi|FQ1 NO})"j*gv=DN$YPXVҰ2Y)dZXێ4e]S5-6VdQ6n999䄡'QN.A"9fJwlNUZ"ʲhf{KŜM߳u=hi[Y~?SBާ1J ͖̚Se>uv u]rpxmi&rE1cR$O[kFG8JDĪiC^sE4n }#4Zj'iKc(M=)0:nT)UN!RU M#qpxsv˲cyIFƒ&uy]<)L)jj)䚔4eezW~JkJ_=p&k5_.W_U} 2yW +غӽ K%"W {RJ35~/ < ^M+ίĮ~E%e ?N|Od7}uzYHiu{ů]| aKb{@U);SOm._ڔNt1|H^ÛK{.hJwsw<.8lw./{UF3bxll8?c,(87׽}37opuAjm;-H,c3]|SO_7}5VOI6s* y;¹ix|ħ>gvˍ/P׍ >񏑜`KMF\pyù̚՚.ȊFcJ|K_uGCl[n|ivznlf}z׻uo4gyPko+;씣#Y.c;|O qkh>aoG[ ˧5 ^rv"B *l~[o1< u]=ZkߑR yϷw~8cڵ4M:RF|[yo"ă>l6c^ O)ׅ-%;7ԧ?|ߗ!Lk}dtKs?x{ow 2988Dk?o? Lq"O||7ÃCx稪C}/zq:ABMN-Snl )~^7BQX0_G|w|˷I^|&!_mqQ|~_]=|~vˋ7oR5yE>!N__dZ7<GGG}mrzz:dg\S>uI2͍BpSm@1bRv잕{fG+\a1[׮]cֶfsz(qCdZ<ӄg7d8Kgzc1jNOPJ1k[iF3l[ʲЏYR}AЏxX,llkʲDy͍m-hRf󌐮HFpm;gΉAx.x^yQb1.nݹō7x衇QDf'''cuUn:2lFUYb }OqV\Ͽ| cL9G"|iaoOߍ*gi&aaxs/qF6cs#c΅$ἦ{RMa\wFkjmeIsttGh(Fێaw3k9;=!%|2nhm(R& @SܾsGr֍T()4OYco+NNO(.>GGV;XZ#ZZ#!v0 (ѩ[㝵 K+I'$-p!1hEjA3GE]ỲPf NYD[ࣧ:,d(UBEА&p1. T!LK.!i.e̳drnPMv9;aF ֋Qb>g:::GNQ(Z<8pmI`ux mQj;b@G)$]-$ jQʲ\яGCЊ0Gi T$-.9#S7#ڠ](T ĥ5A J<c)DQX c`(gQ6x'z֫Ղz#$#罹wJ>JMbXl7P#(B[Uhkn(1-dNG("`c0g̿Ych*'GӶv4,d\9B3)*[~ e9bY1M=sb6r2vvј!1͌sq~nP)fZpr|b̑fT9^K΍XSPTeyzD܈lMmn%lE V9A+}UW"ReliQdM3Z}eFUIE)BqpE7=u-Bo584h<8#uӠ A rQm$B#;fVQ F:1t>U׵8]ȵTU IuNe:/Ԩ<(_<87Y.?9?H mJ?x(mP;<'XBr܂ O?eYptt7((}jbLNO|X+);3/|w>dZ߸?+y8S<68[Rxg?ǖ!'k qxx(y~8BdXnD]RuԺCJkλaUg /2/l6'O^\Y|3Gl6g@ (˂rg>Cܑ4m\1N5i&{Gy/}N'I1S/Z1988`oogs#|J_֭?|k+#r'qX9?3wy8|OH!@9ZNG NOԧ?IQ⠋R읜/>w–<}m.|ֿՊ( u*^NDq6u# sّ4tgZqZƖ%uu4m-x]a.hA_"|ac{*]F 2f7!='COsvZEҒ=}?bv 5ieڂ&"G'"KܒqbΙٹzzzњq) ?FΎ9;:fnZQ%V(ʺʂ !Xc&* :-ᩕz2{BHPF1qڢB Ik.gcp!m;L_iMnm(Zp4ۭ[aIHN'wsq(o۷ѹIrDK4fsf%&G٤Y3L];@Ͷ xfX% 0K6سlrZCBK:P4Oma˚rd1GȼoLת"275`=v=C?#AԄ/q4UerL)b,z]RݐEQ2YS6B*lc4Ȗj_ޭG,Zz.vqȪ̪ꡧ̧@H b 40ՈKD9gyXs="+2zU3;ov+nsDWԵZVw"z# WP*_uUXqf>Nv5AzoIi-/KRLn#%iCeCe#EnVz[7՗KmKCg~|}Ҿs@}\O4ƃ;UIo45BLE7|iO7OusR8W˸%[[/_ ꞽƂVn׾n31]]z~i3}.y\+\'f59~ay!?yLy|yEܗ[gM[zZ`M>9d㡍$HxGtT26ZO$靲$9BC8+R)F8a\2)J߆eAi m)nܣmj IDATaB(ɝW1ib+Cdk)J ּP軁} AZ$]nƭO.5'(ey +(,ز]E<3ỎB8e@^rE- 8^R2 NI”58xx8zCWXŒ;=Εh(xREH*B`(A\cr x|xu`~jCJkta/Y 0T)"w=R=yaJzZkaJyR*?P}+J*2͈50s@Xw;(!jhmt i Р*{t1 ww@Ak"ǍЍ])&hAE QU ;E&9P<PX?GLӄR 7 )ĸ0^*`KP֠^AS?)M`WtbRR֢U.Ck2|:!q7pp=rJ9#}Dse2xՂrl 4 Nl)DIFpȨC)i3"@v.87 %8BA nC޽¡qq83Kd5<>(yw7_8(t>c;}sp#a w ɡ۷oEagSLǜtW-~`|?}1~XZe["J.EI =qAɉ" z(1{x'Ќ0Y-шQ (ʠ* 2P"RNHʡ)?'O`krĒ.3{|OA3յ*CIʚujɲ{ [kE+ܰXĨkbe^,[ )TCB* sJvWqYS\x,Z+X1EGˎoÜ\j%.V4T$n*xެƢt5x|%O;'F Tjvs}%`4amR4(Z9\N'N8w}-VZ[˼=wG̞ ~w)@GH %eǷXY э]JYXkx>V):,eYVnacfMYݎ(T-T&b煽gżbqu$ d݈bNg!>21 #|!/޼V_"rts~_#MgiLjkD+\+4Jвv~<¡d_O~3La0iwB@Uo~v(h XJzxp.X"v{t|杜(n#N3ͱ`ZusIø}WQ};,ibeM}&$oWw.sB!?'/ ~Z+B23aGZ-x#R؁M:*q<I%J֙,GTkcuVSZMmVS-ۛ(sZQ2U)18ܹҗPΧfˉg (իaER+l9lhHޜ/oZo3BB:⦌jQ+uE_1{C,_B ~JDn=w?6 W`#&oӋ:'5ޫ $'.o}[{3\޷QJ`~WgWy m[ ݺj^׎,],<\ۼY~ 1k%vVߚ~B^I{?Mw?K<7h yi[oOg=pJէ'Q'n˟'=[<{Tp[CųJ+r CBT^x 8 VAWbX7nX_k<RY}Z+T%&"rpgj$([0VBs8Kev'.x U$HY{-mص6 "z!M73P v2)#h@k}Xy&"5c] ҳV&| ZեANӂ\&) ͚ȨqYATfIBl.LcsN%az"*P o-dLr;NEQEVrGA*՚sAL LF-E3ǿ_=o#ƀ_\J4OS?ð((,% J]L4 ڈYn}JaK5hEE%刴$6'h*)ZrFL3eDB'"`.&Q!t͛+CiI{$ Z0öҍ`Y/ݙ8eyXfk9s{bL(e82ӆvQH3d\ 5DVTIUI2Ub!e>C B In@7jK99$/usįFy ‘C3ܘhtm0Mg1-bҐa{/PIՆ,'Yvn:y=vZA+Zob6Ra X(,7ޠՆae=#=+1g8Pr͗:TPJ3gwxxxgo9hH ['$GPFDwYJA+&m(j=` )üZK}:((I*k/:A&"y g'x}=>PTg_1pcAl\ziN:R\)$& Pq0wΥGoڍ8m[YaȶZ(k)e{x+ gϪ|޾Zi1 8hH?{t#as-,~sp*rÄ)xx|R2𝇷n>5I1#%'VNQ+5S|΢JA|;**b۞OPV2Χ,®u@tPXaF/9duwn+칮3v5vCnZ[$}q\j&sy5SDf;炜y}֐kÒ"bI27٣CkkM1˹)EaE_Me3Ck<Рh,͆k*A'W `'\Iɹ<1 mIR ƓnzeA]ߣmߐJn%Mk,qR;* YTp0+aa;ki '0.u9a |1LR*eb^{Xvx#A{;{W B&%HY$no6<ۥ)' LIhȨL(;UVg = LKi t:%O}FM*{3R[|ztB "5knr&uիW1/B8/ڊі{҅J)xbJ\&r^kui4p?B) ( Y4PnV2<^rݖyCK@!+izwaA w<ۀIj>4*s)45{w>%IqVi52sD5!Js,sfCrݢg/k+6 .^ۯRm!< υv7=8T~N XQƇ 嚤mڵ.Ekꆼ׆$˟{&Do7yϢ!B>Po%pVh5-NSz}"$˶vIVBv1.65a[͙[g1AJbHmm,5Mdz%LˠOJYE;:GP P|ў3j(5_EHkK5Zu{C  _{р!c$q uQbJ!H*CjӐS1K:Dfo?:_ÿo[2i-{ ޴Vp`1ơ_y<* 3nˊiP\YZx}v`$4uzZ/ b ruƢ)cN$%Hb">7F99ScH( %sFӀ>,h9_ztENW{/|;QW*[۔:dњ zLhs:v1v}4v%,t _JL/1կ t:lU)fN'OwbuZ4|D@3I}7SDwW|[I 5\=W/p8\7v LBG4 Jb0x0A~Ҋ;V߽5~ _E)uCRA$ęFZhLzՓ͠(bUΉ҇xZz.8.,]7 -٭U8giBC없XK!|1.i*Ή>'k|AJ1WD7k2м$ n6m&SJnۜ("r(e XkRB2]c .ӅC@:ʣ`3.IjC^$)i]S]L JA V[\; k|r].԰.dT%{ c-vȴ^Tm[^hDh1lbZ&mΡBqxPAAe>2]cjH9*.3y˴@S o0.ye< ^fэ#¾}GBPih+QywPP3"n6SXR!M2>'"` R8ߡV`Y{/eQZiΡĂ(up֠S {a`ؒC㎺bCzЂWtnf& R1Ӭf\cf_|? ,<+;T }!"$t޳.$et]/ Z]g`LjtCIXu56W!ED>1(lRĴP;Q}G"PFJXn J8r^Z >Zp+"f;#T=wRFEEf 7֊ɉ4yq\Pk8GLhV9#rM7_|0]1KzB$y%Z0Ms@Gɺ.QRc^a1JKҲ5,a٨a %CR.0\vڳ~v(dcD^)B@i (uV6b.!F1j3v JXNP|y=lQR I'G8OZq4 vR0vrfҎG*)a܍[5 QF*6"D+V$A`gSC}|8`Y 0e{XۍpW֞":1{^ qYcN؍; 4)4h[pq%,RWH.΢ z#qyXBVuT1ͦγ|Yz˼,aa 1UX‚Y?SPR0Ou9òȞt? =\gqLH)c^[Ws&<|+%n\kCm~ IDATkc4Rwe B Fi LyP.$U6pGcΒ6!e֢ vuNIɠJ~G+R@M7!4W6/K>X}P72``׵48) K [׶d:Jrp.(Jc.y+Keg2Ak;8`!yT(VB:;\9 a]i.K }q&X ׵%-6sg6Tz},0vЁ e0M1mt$YnOs5gx;g{󎯱҈10!ETjP֢ 甾uMՆI_jMk^6T# E$Q#X+x %66l~LWk Jk;hXWa{!8~ xmxu]~𨵠C8,L8')8S!Bܶgmi0 . TD]#siK q2CݘQ.J+(me4/JJi|9o](TS nn@4b\bct0u0A[G㒱x'@w=RSоQx )0˞b\taG+ rB[f\=`l#g}IQ NSX km5\*"\ϵjFil6"6H Dc#4t]Gnq#&4ˆ ƣ }EH?9'I}e * k>$+\[9EXi/]P]ߣi"/no>.:o$y<5:crFo.Z(,JD[965|ҚVg{ZWe ۾sI|Zݸòz!zc±ʪ8QJ@ u*T}? بcsuuJ kpj~IܘoLTc^KQ忭*C^Vt묭# a}ے^2~0X0-Ώ@8c߳B#EBAS*0_&؝> :*뼲ւ8/y@ֿxUK9:py5z oC*IX`*DgyE1FY7v=dO|06Jw} 0gZ)JAIUQ5dd1F NL󼠁I|,!`f(IRgsB0:⹶ 91xT(yFUm ;AM gײZi,"V-`\,}bda })޾}@@BbFjGrԛ%w/yGl{!0R0Phи^ a~w1"ƀq%s9@0O3z 'y޾)< IC ͟]k?G4/O7xK\Cg(+o}@s,ߊ+~,ފ$Mڸ];o1gkU ^m ֞.5I::ڳunm:ѫbTo 8jFV+,u!oX找]OuE=7[=*kݓ#zcUtKJmhMP}I߾qns%՜\v6Fk輣5c+۷(5o5KZk .3vVҤJt. 9G]XJCl#)e +ƱgnR/ . :LiC$o\捚ǢEܮ/8[y=dDtq -aջ?>~CQY#Gh0M3߽C-D֊%[hr8t #$9עko"q~|6Ne\Ow=:9W G'}ϭ$(e졍h6 Lhv"+pD#{ 20a<#U Hwŧ*C|tB )b78Y XR»3|a܏hbR43*Y@#l IKRXr[ek{iJ5RAnH|³E)h,s&;qaz-RmXRAȅZq`Qw{]-vM7ZQC3055DI\r*8/x81JpG+MSA#qy /|R qG#rb7o9a:=b}Ǻ 4ҠKB"H70ktw9N]F YM3N\4tv:D)w$41ƒ2u}BO9mg;Gm v,-p g*ZMШP"`)wmPBc>lε "2 r>*"9;=z`"~LQ$,1UP$wAw (CifJ*x`%A& R׷rL3t_?>awoBn8_h#Z^p8P 2imoH"ՎbNɤXx1= ObsΠzA4S^XxZ ϔu=Kjt%@:;A[e=1-{\1p: (dw!%wp((2ȚጆN; J}sޢj` N'0NRk4 1[msDjϥ`:䐤x3RP\XF STZQL5rVDq0R5/yw@iUJQ;yB14ҬAC2oPpe::ܽzŪ𬾗e]?x<® I5!rFʉϟpk,;)3Ƒ?E!x}}yzkq }KO[ӓI]w kۼGۓEJ>[^[ޚd^7Hk_-M'B~6x=_d}߮Ю1${ój1n|1~Ǥퟫ'\-Ln蛯vxoJgG}u/g%C'yF|n4ޒqS+VuiHHڠZq\8Uc~SQ0ͅX@c Ky #jmBXέQ4daqEDsc)ʾiky Dar͈qe?&Krtfi%eIDi?])fȜ C"kULu7xkt{'x'8aٗHړC*%_!bf;OQ1҆U 󖝪D:{㈈Y04AߍbRLLLZ{KBr`+&5AbV!JbY"08˴is.쎖aEeMtA'A%2aIrm=48l!H鵋HpiJ+x߱L+覯 H_4@fkn EZ- :/S@2 ~m:`eb  !D(^Fk\jEU잯"A N |^f4ITIwFRBߊuG[Y̵5$#xRc ktF lCt\ƭScq'$~JP2SJq2FfF @Xz6Ĕ(tKZ TRCeP)e}O!d&6BdH558~2}$f598gR1].b!1%3DEk9,xE "^9}؍s_OӖֲр$Z 53QcM4{9[b*%M!z3,$U_Ӄp`SrJYdkws\^j;֋PEŒ5]gPMz[JRhM$νј”\to urƏ~O4IuZkq>pn" /X aAR\@WJȹfD&9Ѹ0(\pw8r91,Ĵ>+-)E*nmTCH*R~e;=rbfWw-o_ٟ"q JJi8XcJ2_e9ةuuASR7-*uCooErRhb]̇٪k*ĎؔߝjCʕڕ`_,9'Σh&G7(J#Wg;[CKDVM9|:1ť5^ ?uõ˴x/9<Ϩxu",@p 8tBNQsBNJ@z:w=:`Z` ,4̚|[MkaJM]6hI>*j%heyM3u֢:LD3{Qi^T9"P#vM%Ԓܽ/R *fڐrFJ\R-(,lWb6a3dp?Fi )(= ^kEUUYL!g 澑eCK}<> { Џa'?!mZa! F {̗ &5ez=^s~X1U_`ftGҞKLr&5 (n~;  ?U/23m_}󋸵_W7a o~ODeV$$ ׾+6MUNVӂ xoX>'_4c>~륽~n?$'&u_ө[yKd u;R#6ep{{᪹IJ>Q/yvm"#>׌{ԠJۺiY)Mz"Xj7ݠs믷t{Rs5\muˋ?X_d֟DZyd2O3=vV c,hRP&( nYC0~{yk~ܡf ݀)yZn\jg3*\MD,x5 t(G"Fg) imCWiqFD f{n˅q@ MdS="n q`A#oedPڊ^Av v@7i ÈI׷V|Hw[(d+=4 8 V^A+ È" W smV]JoX/ծ䅡Ra,RILQ)ko6c4235c5{č|AuYmC_뻎懔qIud6qYػѬQ2 MfTkD1jE7߁VZ3uZk,5xŽʓMy:>4NCݎ=)'L BLPbW$sfre*"&R(vzO#Su$<ϒ\т#w|Ǥ"yF'M ^,hԪCNADq%V;̂aAnϾ"CyZ( Èq?p(د+SJ[R4H]C RU܊)I| cGP"(tEڟ,x|m=Q̹KkzvC)}8pe IDAThvÂ# J*wLTIO9p:$ye".=GTY4%k*_ND,}J:Hkqke71A~uD{ȚA<` 1 98˲T['FIlR/[FDc󉽄nu $]J)I 4oFRXkLϟ/y\yJxxPYcn~כq#+e01b{G3/ocDJrhk0P7tz^Yy_#;{w=FqIJZ1zCN $z"Q<) dy"X 2Ж',u~4P o|77w-1vpL#t`c(4H۷Lv~#Vct=q{Z r`JMQ{]m,ėmԶv*o%LBCܡSƼX)fT(X{}gc4=<挻WPp"JSa)6)%<~#Χjɸl%zŴjԴxNeo[ Hz~/$xoAjMMo眪(C]"4^epqq 3[`q FbBE$nk@"B%U)N#׉11~<=Dh |+z3t q ؀PP)CK|"SMDɌ|6FS1Rʣ֡p;_3FwZ:i$UO]RQ=%DqTjp mۮ@vK^OF^+p#f#1:F&)L㈻w ..ϰ`[Wt(ѯz:fv J5z&S;>ڶ#m٠ <"e,nx .?V>X OK"FgGדe8pL"처g5p _+Gޢ>u}>s#"Q! U$tDy>HbfL!gFJ;9I=uq_ `rfy/Rּ,>pE *g!k9rbdY'Tj'| u91ATPfuq*w[*QJAuxHyiԧ$ă\RKN&BiI>R,^^i1%J7tjZPiMv>xhAc0])J.Bl0Uð՚z%!+Ņ\>dY0ZRhn!Ii 5Gdv.]TEh%*92*-7/'+%~f sHQ$XCi/t N xHB]_72.!Pj+ J"@穵uN=9tsChZ}f~=4N0N31O3i./.wWW)Rl#s$z 넔p"j m[j .=F ùHIFm^{X . X4Ե◅:R#Li.n~k{~g;3VA?s;uuL)7'i%E&#Sth`g()=BҌUF!FJs9քt}5u}Pjpn `1 eA@DQ{S8њ6 %.0RHlNj!qvvë 5U=4CW.}RӘTlTHUhlc\jKk3]ϵ-yXbX<]0FF%{Er)-Dׯt>"(],-22-RY$Vy1#,[ q${L s5ka 0P#3 9תKBS9#l) [B朱1 #,2KLmq-Hָuy }}ND zs}OގwӶPawxX.^ፓw{ߘfC oy*Kq o_>~&#of㛙o.oCx89txL1[,8%wR6V, eL=PJ @f=G=3Vncl(AawQ'%i#9 )YLO;qxws&:!!\%EI<+2)Ib'yDٙ% ()JRÂ'm2JZ#\Qڃg#ɹG$i`]1}U0@s{tC*"fԴNt[۷oC PS1$ȑY)2.h(xA 5{SDaЭՈ>yGI(ܲ`Ƞ RVs(S8ٽZGNŔ=ea% I")RMֆ;QJ)HP*6 U4>(nBH̦A64Q}}H ȉۮw)NAe;;$$; DC %\pLݜmp-, fń0-L>EdI 8( $#%mNX/RtmGH}^CDxG]Ӱ0`JKXc#9i*U#451]ߡ*ܿ:|olz:^b{ȴ?m%// tyبb؜ԓOA*_dz;wЯVL$ `YfLcz+; J *b3YE>U?s$1Dϫ3a@MӠk8Of~?|pzs:.8˽Z+,DdN)`4) s>Awj~2ݻMEևp]JeēOu0'A%8RBoFlg4^l` #%\KW0#k[FfÌMFS: ./o[|onvG:{SJRbKpՔRO21iVk`t vVXm6hW+Ӽle f7Ss!ѩ]eFdtCg Dᚥn! y*i» WM垈\J1O./ƒOԉEFΈ\~6 !쨫9FAfm"_\m[ +t-%68!жD\'B% 1jD \@kzEu \D?OϽ_u躞SbtJa1 6Wz@䬜zˍA߯C j',#H!v%ߒ׎7j'7aJx8!~"P%QW] @,]UL_qZI4@;2>"1-r8~k~^Ggs>B_.G> z7HxT"$u^76J?tn§4-I"tw*Kh-`Y gnAI$i~ǟ~O [T2N/H)%"ϱ ٤$DZɓHЭ:BnU03#7~!kHL4k۴ȌY`Y%bȽH\Z, ?dUSF[6$ja %:SJLV$jIoI-5H`'GT.!@dsa !iʹ !NDE-ԵNpB^dY;sc"jBCFNyL~mZo-_|>>`達XpnmlMM㌔(Uu .Yj(N@u \38S MKˉEKg]EB|^KtmwQuEBAxڶ%cjqh졘Z!ġc*zq=z_$ iy°nLZk)$fc-z֜$ϑ(D"SAUҐ0E N@Ta|k])%A`s48Kz/i+f ;̳2#ɕ& >ޢk30C<Ϙ6L S1)y8}#`tȠvE \)w251@vtF".o4VnE״0ťq&,69J7Qډ҈%-w3 9}?y(D LHИR VÑ Mxqyyk"@IgJ9Sl)I!',~asN!B[ i,YWXCZB!F! 0h_ IDAT ~!w=rVS?~Ak%JurC8$$ d>RFSڅx 6cbࠄ Nzho!=Fi*F 8L&PдDɵDLj:di13;N┢kI$rGC2(8N*7\S]Tі4ǗժNC lj1kRJA߮VkKc4AېK]TpƃbrIlIޫ2o3GxZ&W+F޿ݞoߦkiX#!0砱n *X8 jy*:=ZK HɦQ!|pe ap QHMLY]F 4xI` {0T-s"k4Ų̰pݛ 0`^ g\޺q H&nFR\Iaϻ4Ozu13Y T/pXӽAhS73s: (krw:!ɽtWU!%tOfB_/0k)F2Bg#Y)~"cڴ@JJ& HPuPU=@Oǘ f)]wt  17 3$쓏3Ga75'ߊviq}%&|s 5o=!qZk_~hNJe:ox:o4)zCP\c‹CK~y~Cp}w;S8Nxg7x7t<#1 uCG|Cn~qG ~k5jԌqEzu#x-÷\ϹbLI8$rM6!U'qNJ`kCr,NiGvsK!\BHBsc<nj| ĩ@\|SIPwDƯ tu#GɫP$Qk8|=~|ȏ^j \婔 D>?gfxt (iu)~>N_ҟӖ2Ssr'ۦB)[ӄڦEdnIPڀ螥9 v )hi`$XbJ&'-#B@$@ tcϗ@!Q*Mí Ra 9GhsW RRYp] PbEqFm8-0# dJA(J}9=ضlCiNpCIGB+v XNGk#'=|$1Z1CL|HO!ЄP9!#xr *ZNa0R]y!4R3f:r]N JR6c />QHB˪(|D4X-F6< is - gۦ#5hpY(}y~vi0 |lPZL0CkNYp22e^_ڄL, CHEB~jby~R oߪ]bF ֭['Е=4.AN2.yKIr3VC^yUcѲ޶-'J]oZ%AXpN04#Jݱ82)J)l;IX[28oJIHa˯@kʼn&ynwh1`yq`f<5 @bA|G*L)t~D"8 nZvD,;bu} כ5`e  ALqtn>q6{.Id-%#LBY $BppnᰢeDN&XaJYD(di!L %$)KVdҊ1Zc$^Gi )AIeKNJyB^kxG¶}<ܔP )Z]8/'O<&APM]Q?1ʉeY<%Z5Z!&G/Sx)l`QXiP =~pqq ZA_چz'r}c Z*tm0RB UpJԞ{!9eڛZ+B0RBVD <-TCѵ`S4B&wnBY(Aa(a3J֚}s&s^u?~.>!V5ڮhLLhHO-oԷPwPgjkLoh}v=VzEt2"ź_ZAL]ƌ:Π,׆Ѩa>aB F+2y!D׭hMZ+ dq ../SscZipv~%,2Q;"rj"ǘb`cL*EcuDH Z"(iͪJ (!!fD Z6S{NT!]\$='Aګ2P}Wpr֢W BJ/x{@ k)A-wodh"5ո|"JPw caf2g>jÑ F0TʢVqc ~c_S)\ Lmuĉ뜈\:L fMM+U?F[z yH?Dd`B6\ A>ß_%}|Xgq^DxHkW~ãoET/N>;O;T8&Vb'㥿e8{3b k=yfNq3?{~-=K߱i'9˯Pki=%+G\KTmJr8kqGv~P?: oJ_EQOq(f7=LkOS/~_5IFQ??މ/|ꗿ1ɛڔII(M d(m6}2JNy(ա ucY2>[޼)\( +s|fOZ0&|:؜hAZ@)|?__0x՗do4s$:Jj d!DD )H!|M7-zy琳.>T~tq@B $ 5l-;!`M.RP$b`}3>^ #r2 l (J~Vd)a\[f4;B YQE9{Ylʛ‡8Mb"%!{YCcƒ{ͣO'/ 'Mε'~$lCab6O?o6|)|ꓟ@dt^X! :lɏi ! qb@8L| EkU8VihK4oZBg$v}&$$u5Kk),4Ja)Y(.I[)M݋TmvǑ_K,f7M5\)qj xK~qTp4PR _Y9S$Fz{)i(1ew)&*\Fʫ2ae:ɚ@,9B> \H؆\i.۫+l;$@&ҧRd 0[P$zr@JegTS5~ِ< #b!`'ܫ[f&L.8":,t_׸ i5 !mY &p4*Æ;Ns%gKTTRGlXPe-8d:aH<8Ѵ~e ˮmCH9ai*3)|@1ܻKYBbZ_I)bR>7g׵`Æ ÀihMJ,}RkK5W "`uo c,L}>etn.̛T7m4czXRpˡz#B&ȂzB0Q #꤈V $vkNi>ׇoH6+ 7"G9"0x]wu=k9Qސ.w^qkDqr]>|ɉSC1,7o]'Bk&||E~m9ݕ}*ǵ?~{-0yxBƦG[T&{1r3[\HqOʳtG$sI}S8uasyű)?Kv~thyzp9V3 2ѱp2i7;=Ox;x$CߕmRFd 4ľ@uh0Ί>z$g5jӲJ 9ۜ;LI}Z'a 3^xa m(KeY9^?#LC!~ J@JJֶێ:|I8Z)Gs% .1iD}%B3!0AUtkMa?קo"*$hZJCd#gJK!J"(km)Ygt<j6P煄øa& LH)^@Ap0YFBy .J1ܧ]L)5xs؜X롍8v{_3W0yӝWp/3կoP !hЮn"gJ`I$ayw~3Z)* +! ԚKK Ai(BB ݫrA=]0C?)[T J 2 Gk|!R 6k`BȁYrb9cF0/'D?[k;w;wgԭPRjH8D ) [ܿ{Kt}kpvAj$nգ[whJ5I @@H 0mxil; Dh#v+ӌuí[8[Պ')/N|r&2Ep_jr7 }_(֒ppƲ̈)i[ {ﱸ1$2.,h{%BdؖMu1¹&р(BL {yOLv NTi-7[ IDAT :V Tzߛn7`&P~~<ö)F ÄτNn:IGƥc ="I w7bpCq fMW%`lCBD d )zxO^D* '29cC(s˄%ߓ;ywEHX۵FcGw[`7@K"m)Iig PBbկ,Xz=O[Ccmw-2/3RDvZs5z"PG( )j}RkwD '^I(6x'ZC8h"څXcsBuvv{WDg|`:^8 |B=T' փS=ȩ̌]ƙדuP|cqQk|xk=y|?c&eo|~1>~H<׿܌̥k.3JuT^DίuRK<}?yt-^ݔNW*p99?yau+|P;>Iw>M׾6 t?ǓO=M qOCDKyG>| «/ ׄvӼa]~Ϗ< ՗?a|獁d,#!%ߓSHPa˴@ˋK?w-o|G^~e`ˆj zilXD=>я3$<a"տo G~98&H~~gR g_<^̧xc[JԵ|?O{xIp+ ?_~Nc(EƳ>xuݻ~x񓟤d6LʝwO _/}{?g>i|~ JцڿgyWp.ׄTRyϿp~~~/~O| 0PJ. !&<8;˲޽G~ NSಁLC&Gƚݻ= /߁?>Y|sPRA $G~}A\^~×E'& F2+(dB "2y{9v-^z+ԋnwHLͿy^?#s4L??/ oe^Xgy_Ë/~'T⦐id7u LDjCa?]8;;0WBvwc3okOqWFKKn&SJx׻~/q=B _ʗ{sUa&,ÿ ~gggRa'|_G?bH.sϼ? |޻??'? @Lc! $øw>>!gΝW86!|}'߇wȻqy6RJxWOc|_*ÔJ x~?#3< Z?җ2!J7E"RS8i,zvM"- .xXAtf2) $|;XX{0 0XhizFJwGpM!W_}>DlИ *%8Y8쇊.56U,w;:CBJu>j{`9~?0[k}$iJڰ.y" $6@TLIAEIщ[жMHۛ8sN09Ri&:&Mo +$+nG7Je J'Q(؝ͩ5Pn~Y疽9E96ORaqWDZuLdẆzTy%F%zxDdC7(rNJYF0trP Ԏ1'َv>'OK)YVږlRR\.It¸zQS81)Y[׿NQL5!cG:zMU8'Fa}O,cQ0>r1&8q " sC\TZ`Lb3F2UdYJS/1z$Be}}u ͜ukFHAxG߁2 8/q%"٢aJQ7Kʢd|AfTU|vxDp=R2ʘռHJTh^+`4ɶN֖Vm RA+*>M'<VD֑ :7gqqb69(,":/ :Yulh<+Ҡ5F˚8zTD&%MD\VDZֲsI$vG3F"-wMdpw]b;;|H8[nNLQ}`6_ N!x2Dx!- !A[jƀP)}h%ըTi6Mݒ]y\ z44mR#ƣxJ7#M66γ7'1$Mc􊊍^dg9."W<_ .ܳGOrl"t2!2zk^ZCQ ͺ}8ڈidL^dQ)Q7MSy\Jokcc}Gs2TN-!8y)v)E_{w}/X]OU8qz|Oo]S䫭opgyo/~^iU=xqvkH"f`Y1SnǾ 1}k_GY\s͵u=L&iqW6}}YP4[:i.{gc+ 9.ݝ6!Pet/z,zOpRJhFpTJRFu[8Y]$IH,td@{Ŝibƥׂ/Tex,뤙gCEg + 9zٹ#y04c}}M!{;,sQ# ū:ʲ ؼ@],diMgL2PJ 0/8v49-W$&R4Nssm\rm79]ǜkYzg{3qDq׵( %pu{D$+l28e hIsUBk Z'(G9ZԵ4B|BHSYDLl+C; { M"!yNUPFbuVӪPJH]Z)qZqEZcRAe88mN5l#0ĀfoڶuwqakK:67#Z:u •oy:d]g:"D {{6&y^1~m#s̟Y.F6AD^NOFtHM2UETPmsS%I$6ǘØ5(˂t*jQ ޡΝ-"dQt2NFc[s<;8YHTƀs*꺛$FhcZָE.l }$I)4F\ζ[D;`WNyLrQJ >*B\$i\(1>ڝL֊e!A֊ !szf4M;(=DVZJ"9F9*4Niy.T])kaֱrdMLqP<~+~Cu1cjE}y2%F!GwV }\;OzaGE9you7Ɇ_CÎKꝛ{^Xv/]vsW*NIs`[򅜺ߡ^*۹WLj>G6u K-Wq\^N:}\Sq g%<|;A8|KHW>$a{i;:QNbKZ0.C_W_H_>g-H,d_Px8JK+\a}t*JbVWa0( YU?1M?{Vk 50p</,Kp=o?O|ݽRJ_?y?? !xnf~g&?|_B,eX/7Y^`RqBaA{1胸y7m0/R?Ї=<4s??]wÇ?!m4_Wc_~G!|(X1@^wk(w=i:~m%?,1ر,KAݴC_krw,ML*`=?o} !6<`R_ ?uםY~\Ͻi!ԩӴmo_gojY*i(~C|/o? Kt]{ⱨf7\sZ^v[IBt^ :MN'x=_U՟xs/J+>ɏ (x%s/wʒ$1wo)~<}'JyG+sy ~$Zk~!>n IDAT1I^y_?o3ϐ%='؏8-ɍ4o-xŭg=4g-7t ]sR%"Mb4`1 28A4o֦G'Zk>ЧG?Ѩ^_zG\1lgoK_"dx3ƹ .E-}SKy"bv1WRN2uMgu4z&|-8Gـk%ps͵w +_2}|g>~^5A9|?,:G=|Oկ {eUQ70>:}]5ozӛ+w>b&Ogk__BSy?Ï_ikկ``{+Y;4<Ȳs^E4Hj|+E%,4ݔi`*U5JOY( X#˥ X4ЁsӵDpY\RJq*iHTЪ%I uڎSN8Ot"ٮNсr,j,e4Q/t]G]Ǣab{K۴$I5 _Y6d1ooww4M#&HmO[/g掻$!/(a\,^D.fXBkd%VYxY$)mS㼋٬]9˅`>}OhwصݰvU4s1;;;Mx< 0dk)YFlѸiZy[4mk;LS.^G6Z+Mq4 )Yij)zquL2{OVii)^I$yb,G8yRDZt-I}hN }/,ll y.MT@NFIw9#uf;[ :ٻOFsd}8X&`[P1aM[T`| +(iT!DI\Ph>ȽJ>v>JpZwK4]ib>`28{/\P&i{&x d5QDf9&! bt->,֎b\4,tBJND}m+(Um)5]̘z1-*zqa{}KXRhڞeݢuBo1;1_.ML u()݋]K!OLY} :> *WV%-ĬcEV $)Xt"E]SeYQKB0N]ʲYSLZ5(+DclOF4O8۴Bh{txߓF z &{K'DaGŒ*kMxNpqqtte$ zװރ9w欯1m~5O[dZ9nfx/{64BB𶓱-2vJMP%M]GzFd4fggמe;(4$Jz۳Ӑe E()7&[/V]۲mmPmGE_l_(w ] G5^ƃL%r^dH);LjD94%&Ȍ"rL@"ӵ)Q(x&\A}EdNB& hQL%13ڦ;ܐV[JWvNin(Fd;g:&}OUe$jh J"-e ZDE!$Me$W>Bt*DTGieL666(2lZ*IaӷSgw(h/kшwyZExKZLAC,K"**Γ%,rvP4˖2yIQhbggFQL&,5{/sx2c(PN"uږYy6')}GBb>s, N?Ns[SNǘ"nN]sJ(h Le $ yzk/dYNPIaO۶ex<&HR np6|QtibMoE4{GdᨷpIaAZƦn{P3:IӂwY(eHb}ch(rXH4Gyg ڮ (%`8FBq1UmIhUjĥ}!uվKx_]\ł^A2!\R~9\|8n+={mBFVF|KWɺ~qY/%[]l?~3w᭾m&w=7C5\WvvYߩ?o~G]|^G8_? ?+oRՀ:pZws}MߡGur.DUv~/W #?yA ?^W{ WV{;{|wW_8+Ϭ,HKAnԆ*OQ).3Yk>}}$2/ƛY.?^c6{_R7ͲXkMg*_as{|?~C~4<>8w1rXcZ)bLO,JNq$2{?/uaf9ǫ^*dyAQTE'Ί{/ [&fvt㵯}=o7`kk(8{4mGJ7g,! MRMn(x'D8O>?91~]1DL(؟xqE+'X?b2 hO?)>;^sqx%_ֆ/~|EkXNɲ>'F`$ew,6ʺX6=9u-XJSkm \A{fowQ)Q%cBO L BVF꺖|NYLSvwv EY˴mÅ lmm"K/t|tx^H${>ͥ& e9]߉{[qszV]ӵnh;M"(V|}yӧ#R&T;ۻ<3\M]\3[[X 9/kSN<ӧH;;l]o=O=ţ__җ۾oZ;,vvmnΠnhvf,R ]ޡ"I"K,%M JKx)ʂ3gN&kCKVDs un:@D W*].6 ;d{}Թ+yƸҒ;ӚxhXsB$FS9&1XJtO .l ^{<ж{vc$deւã5)NCH IFө̣bb4Ƒ#GOF653`<]2^]ocAIPGHEX匮(MYc$_9GeMmuI\戺y0ƐׂgT]ےe"RF\C쏿C=}һ~p+b?;qw֊Y=Ҝщܓ,$ڣy2"5Yrٳ(#癮z/KFQBH$fxDiޞ"υ^Е=Pɩӧ$;fYd,qPꦖy%ٛ-dy΢^⬠wvwVy=d`k'=b>b#a.%&6xNUeAAYISxDą[ɺv7edtЯ2u~UQG]ň,l` *G1E^u-!:A!3y?D~w!#9if ʵ6]Z4d7H՜@q?4,KuBv!׻4K(J!(i?LY]'v/{Z /c:__6/KKp+Hx WU.w_!f& oex;W>Ab3CrSڡ+kMاCW?'U˶]*Kl`gZYWzy/^9^T(\-p^E;r*tU\Á0||u"ċ~< ŧK> ɡ !^DVGl,kQF3eIedIB:¡k]ႰF_2}Is"o!?{[^'?qtm˝w܃R 6m0炃Z7C㜹)<7뮻9{,?iizj|>cC\Y8&}O~cVyW8"Q bFiJfil<;u>F|ӌS4]-.8G}>>dw$&wR &K;Kl%dₘzǏO2$}Ĭb)*EIΜ>3<Ɔ= GWO?q]q}ISR]Q Y*4mHĘa|飏9MCo=9&)7x8M ~R\ѣX׳6]=h&] &K12IS)\IӔĜxǹ"OLw\ҔI@UZeC /UIIA3ِOđk5LSq,c^Xbh`: J#`,+u bښ4vvbwHE1hZ[]_^E~pwmtmkV΃IH, Yfy$h7^6@KÙκ@&tm 1(@FGVamGX4}/n,+NQt-8>@&õu/,wmu#M>UUK\2*2tMMp1ibN4a9_k[utmg,債7%IhjPJu X/&A)sV^yF1фs1cog`z$7,_ap9e8-s\Vȧf{XDTD!cde[/u93O8A貦R>ի0EXVAI;.V0{{8χ^xH}${j!1T륧(JAԖ:LYoIBEe~پ+_*ִ]K%3!4b.%,z,~S+2qj ib9%yhq?y=BeVb\e5BW2%}gGA`1J6/\N>E,eQ0HhQ|=;;$px[BMnj#˅jm.I"D#&($ι-X.͘A.8ﴊkegg[bH (z+0N:D<iGF2ޯY<vuqhچQ5{ bNH˺O-+ IDAT:-(L", +QZD$"$jȕ{==q*2K)KA~τjzše#q/gchH:^C/jl> zIJNK{}%7|_"~S`|wnP/s^*eڮm/V}?R0.o/~Wk\^3˯vȆ,$ajts0q)jgWb]WEY C`ue?ׇ}*ynr 2Q|a/ʩ0<^Q)<mc8~~?0: :-rq%3 -:*o|/ 1i")%ھplÕdmm[o}%]won i֤k ~X& qd2{vP ʈ/:)xh)Iw}|ߐv4IDdž`l}Ap 4ѭ>YB'Op~󼠿bh):/.Zb1ч yI7(.^H5WJ1 Ǿ[?qBNE)|NbR{eI7zN< [GOw0Ly˛[6slnn[c$!18C:qU0 RA_QLֶ]yΞgo_2'Ooz n#GD9+VњmƃC+M̀O5*g>ͭ{-}]Ω3ϰX,c~{yo毑)Ǐgg"1Bp!^E:BY@_K&L2=YzT,-km*i.b\q9J:۶]+n;l R {1y ָfK1h[8s>WfYD7TZK4)ˊ4v>][6jp #ǠQx֊oȑ4rq"}1Kj}teEI!8rqKʲg8c1K9/kY_R&lmm=ڎhDݝA\bg$i%ct}m:d^iFCѣusk{\P(%NaF"S- O<ɱ#G9sf%CckD$Xiey"3R$aoo1RvNe)8$#IVFɫ]__ú>6aMu-y%KZ& $a5J݈i_PA(vbpex6ϣdiR8"cv6<;z$zg>SMx &\{hdD]u-έ,b Ͳ]!%~bn ڞɓL8FUő#GiIYv,Ĭxq%Iϲ9qgymA+$&,125}+l{NEMQ䬥EU2_.m1)w\Ĺ|h4!7f\0Z7S/L,cEo2`kWQh aV >: A ^G\^}ĞUij!S2CR$$RW1JH7+Rښ4>F3䲦E]Ӑc֦c.(CQ:q0\mד$LJwkHhTUbE0BPH띥[Z,+֦Sz,EIetF"eei Q:] k-]ב&8o]_Ѓ u]G׷6Rjə,Omk*|^kʁxPH#z>XWKk߻䖦wg-6"]U sW@' x2䎶kh躎xDelm_ R19,ƒ8iN2BdMݲ6lllpqg?Wr)_VQ$F3*s:ڽ,89"+˂kHLnX;pmמa2YY.ۆLt])tDf4mC<<'OQx$g61Sٌͭ lm]n%ڈhK\\e^qIL"TFDb>w-"ޓԣw^]4q}Oj666lO&ʰ+HUE0qu}5ll9*ƮD.uScCg(E^x/ݽ]ed2eI >ĦmMa1ƠobPiSaL*V]C#END9AtH,St((KSgRCdE'˵njz+=Ge<ꕯdY ,Q.^TfeYFA9sQ /n0*yR6/l1UOiێ Eh4zѴM\*#2FrɅ틜8qɑGILݛFYvyxAIY%2!KYQlE"O?Ve%%hɃCdǎ$ʔ( 1\u3TUw5AZtU{{>}+&@A(G%r^~>GYID)D^:zSxZ5zf"zP.,W^ɔXQ⫚$惧A >O}q. ދfPhEFg&GtujFm2 %ZC1^(f"QJD^n0"t bb5F"v}έ2~Kz'yEoۆz7` oN`Юw3޷ oN͟W5W 9F;77soC8:cF>'8C8~eNhlxL7VN8qf vQ\;pwi]fI6[ᦿۊn3>^90̋2xb4 V7.#%?<":f]nkߵ8b4x/<{y?/dF'M@Ic3d6&n:V+AI[nlu]9Fk4 M݈ٚ!oZ4=??ƒl6o;Ljԗ8{:Fc9:nF.9Ӗ;;^2*(\,#ض;74ww<Ĺ]u]O$˿ĥ˗FpqFihI1Arϙ3gEhd<PA7ߥKb6?`{{y嗤icsKiE^yoHfX3ɲIJ;AKqܽøs]A?͓O~{=˙gx?ߋ|?|_Yۛ,^ hX.f1 JE$6#n3(d"Gd-[mz/glښZ^\}kM"Wꫯ-5x2TUj$IC1i*MRiCTM-usQ4 Tr뺡,"R&jbfwB^pVv y&9z} X$1J񛺡JQ#zS6]uBè(nm,ʞ45II{Ocw c\([eV>9!mdYQ!'#]sG|z?6F"}+0Ҷ ˥ Gv޶z-PI"m(Ҷ=ε4rTbZ"adkDYR#! dw׳Z))XF|sFsҊ2Z\yw=՚ؚNuk6qY#!4Q75U] 'Yfd1IK/=YJݶ}V dy64M$tl Xzҵ-e9pU Z8J4BPMSS%!@SK6R|ѿ!۳LZ˺(3z *Z%؄h4p~y=m'j4n3u>.5^jR*̊(nZqe#eYrY]IlH$U z(%o^|EFEAgwȨ5d:jB\:mچ4EXZ|$ "+F1q,mA88GcòyW$YA!8֫72ZWq 7}OYT.M3-_x4wsc<ɔm<& 0ep?k ۋHi$S=I-$qVYamB=!ӲLh"29s/] kz1מ3S_dfiPY$~~N:O ޴ٜUUQd9Y)<ϙ3B4Fd-+6xE"NMBſX`?u$߈,c}BG6mKYR)MY84(X+s3OsHm4AS~X2^_ڹ:xwT, Ft]Kc5h6QWzlJ̋)1WZkM%QRXq<ǐ);}9mciiɈꆽ`e!eDn IJ ;Ʉi&~#/lomQU̻N+%{"g>St:%M%1Yҁ*F 9!b@Dimy#R_+,^ZDp6̅DϓDl ΤEBc<[gWo&ISooooJ}랏oov6'ip׻4E5J (6:pm75OrbO>o|,"iKn'Ix=#Y4NvL>r#qǀ{}Nljn$W^^ÑWzB-7fXnc׿h6!Nm3_ !6 ʰ7 yR7=> |m}kSh }ts?ݦ||iph:JP#Ny8z=n! wQmQj GGӮР`V ?}8n?|-5h>*>$ijD[x$l :06qhBQʚ@i!"Ȧ5/rg]>G>⅋ϳVu4fmǓYɑ5Z{GUYW$I3i<q_| G>ǨkPh!xqaOGykz&@pqg ~7-TUE,3qy^zOAmnN_C{;}7w=YmxVCsViMwuEYLc)bi<s}iQ)X<|ianSR A2 C4UC1sW[7~^b_m d\IcW˒$Qʵ_gTX)"TD~7_11`ksk׮au<\x}Ұ'E,`ōѵ-&beu~(RZFEIU=/_…o/_Fwlt=|ߎRW bGgWS_;>{aw|O{t4JcSb.NL:b`!Dlshĥ˗[yw_d6;<л{ͱ}dޑ'fur]ZYPW5()0>Ʉ$9k-o}omגFW_z'|t$9 gΜ/%p^$jc׼Ԁ*]ӵY&ֱQleniJfӈr]1Zc)>ӟ?~dʗ2eR+PZqIfa4uIJz)n0FZC)4_֊󶪪^cAb4=It}G ]i.}KwE!n(S%֦4ZAQF8'9y† 9&ItW4N扵dy.EgS(ޢiK۶,f%Ә}*,$9 .DWZa4*g9_ srb4 Œ"U`^S񔶫kq稕FYX cg] Z#,?'UHzZ4 MӜ6U )GXxr%yQ`շB@&mjQrfBD;ۧ`ډ3_+pc5fQW3Ҭ sڪLU3zkS[c~mZ+|X2DP45 mC8> X'Q8f!{׫ZQ]ehd)IAjd$( P/V뚭29XլwbƲ3>u/G#fboej~dBĪ{md*1VgkMUF#);GQdFPn"ɱX5&B5]/N!2-KFFKs9Gt}j="rh,ocAi6"l4Fvx9wԃ9z4-A)+$HIA(<5&c3lmm3_7aSguY1h2/@o\={K4mhK.6@4NmZ&]In_o{`̈́rAb-咢(X.(eH-tmA֌e` IDATskQBt|t1GrmM'#]! +SsY _y~[$;;q/1J2f & &64KɋǤij$/ -FrW_|d.F[ڪ5lo0v1*QX'Og,f uU k*?!%lrێ,KM6I8WUmfa2P5CYujC $44%£BT^ҳtCl:䑻HHע`9kJc$+^激2Ĩ rEԵKd;]OXm-uĹRq"4Ri˗/=e]-ɲ{LLNu-!Cp:M뻡Y {CթZt!x[,a{{(H[kh&6 ,|u|>( &):H|#$ڄmxP!p]Ú2ISQP%eESwK,c{g;0<$Fہ s&$I#K40Z'Q{i*d=cf4L$VM]XYu=x512QYDb˦6Ž*#-|k-u'ĩ !*MS*k`6B:&KD dǻ ]`c&Q]6uCnrl8J=ϛcO#~Cױ_חoy~D'oe:s+uo9x835׿xBP7ߜ{xPc|kUHJsQ߈8X>~Ӕ͙sb 75QmGm1H%uopnzxVVͦ>鿓^':w 8o_q᎟~CqNsGlj 'M$YlbV'D ^}{o0O$6akkR{]f<K3m۲5"/KGP,>s-x/R;.\;F}DΜ=;||;9walK %Ģ˯𶷽]0V܏]5-s=R韦( B`ݲT P J)~g:EYRW5몢:$_;[ِ6U=,4x=WXԑkki\i=ԓxyy .~??/ Պz]cO3njZG{ҶWD liێ9J?/>K/eּҋ==,{?4M|>;4~#RPFm9"8FO<pMйSgN~矠Z׎}#LS^y% > |'eYK/QRcV ք$t>^rI$x{'loO\sO<' (M^mFkiq7,aD'|{N,AClЗجUZЏ|٘u,LR1=awqY f@`o4>W۴B;fj :/nm$r<3?$qoo$Mp>%*svpִ-՚@ ^滘hh)6vm' P-5u[45K<#˒ؔFkeňZ2E{N|uX <8'x1j]$)XW#Fcɔɔr b\ƆRa3dѵQ!x)u-Yʜr$gwIfE,l4|>ٌZ8L`| 2qzpoCSPm(TUF)%B hꆾw撕&R\yBQJtec6L\O^kifoʑJݺs7 O9A 30sF(a Ҧ&W"J vkʸ=f{k}۲- Q\/%zTp0QB(F%]#WšYb]b̳j<BM 8kHaIvDeB5ARFǤd{Zd[ۻ+;Gg1_PU{|>gZ\.Ɋ%X)EVd, %I2ؚNX-ҋfuZ+W(˂3hbb1T^/heυNS1tM-7Jg.5fN06bsmi~>f󻦡$5MS)yS%Mlzt$ȵVMD0/m[˚=MeOvZu`I"#fv.ΥQW9$#^3A[P!؈.(tkc,hچ)k(%$jRrTD&uf^4-ZNՊxBY(2i{ 8JZ/G5~6.t(LD]MJ|1"jkE"Gn1c FR׆7m;}~?wHL=ҏ:_f|O{c| u|{-wψ9-n,[3_;6Hno>=V'V5ǝk3IEݪ 9q~"O>96q(s 0^x@G' Zov,lj>x^> in4{Nwp+BpϹi $Gmh/=P7yϏNb? EK4Kqqێm44bmlGұ`JU ]}w / c|А:#0MđgS+EGZ5/o˹W^e>;ٻ![V䓬גeytfP\>}kׯ1O8ujohby{G?(z]\x}"Jnn%?ro?K ڿo#sl6c(x;K/~u((?Gy?];7Gؤ7יL\p??ˍY\5+dwPpmȫ@t* 9 s? <>]S{EdSXN<<ñYW+Nqjs4zLI dasuGxwq5,ggg57?h%=ſ(?<-.fN=S^؛ֆ:n1E>!>?b1`tUg?ͳ|I$æC>ILTzꀧg>]^zQx!V%K@ܗk{\OM3O˟?X.fL&[lmM'?|/Ht_0}G Lp^PhOPHiZ2~>\rji ՊHr{]DJYy|}_Q5W^q=/>c|O|?zKdYΙ3gNDkZ.9E;_08{gެ֚uF+M9*P q4č PA0-Ν{nܸ|>ԩa}<䕒1*) Icb-eQUXD4sc F (r@je Cnut]KԔejԩS#9GS7#2kX)N$7hd㌬wu4Kcë% uQ "JQUkݘsUOg3<gΜkMCYT}%M/o"Slb*! }rf,uSdgrɎvږi4E!e|- }JrCz-U]GL@}Z^} -IA؝i{&ň$Xm;.z u˒(w,(#B4%EŌ4I9w$:q5EHkq:O1#]D;M:4]qb\ #>Hl!d8;ۺ` M8HZj;I \Ba:B`59w[It\,F ih#u ˮhg&Lb}O"i6il^Ğj\qzBXm'%6G( of1LmuSuBSyCbFM9JƐ$9c4a( 6965I! jp\jC<2C J)eDK(%WwdYbw[z\=6IY.V(8WsW򖷼KY\.Iӄ(?8`:" Etlobb#Tk i&!mmdF#n8:]M6k\Lx^}\tdްwMR Yɚ:vXn*2&m"5c˘0v4D-AI9]Fsb*:(6>R$\iEcg^"jqe,h&qp]?Va7na7oHFIN5߬Οsɲuj_O8_l?ҙݜoi~[3͟;j(V&}JԑN-?ISyOJ6:,myqc<Ϳ"2|!]SO}AP"Gjy/e<6JիW_g\lk%(x{b>g$„ۍ۾yg>)ɧ(@`WԩSňymW^yLx"䒽=̧I5o42Ō-wH|g>)&~dnwAo G-w>@u|w~kȧ43Br~12+Nc:bkK}~~'C=8;y^{84}DvJi%嗾J]לn5Fs%>,WKz XzgȲSeoo$ItU/_iZk.]z|td2ewWJu| 㣿류_dUjUqL쀷F# !ps\v c u]>@Qo C\<%I<]w _ȳO? A\M#?p+=Efs~W!JX, CcraDw'e׶]H IDAT1#._DxO`;iko8iWll"nKM]մmM;e4m;꺎7m`q癌'h+M"fhWKjg"/r9yv])t) K`lO{?q@]W͹Jpnt]GbIl6C#Dו8P,xqpxk{aZ4=*^ vTo)`i>Z;Hq^ ޠPdY* p'p'^]۠Sl^s5`k{ 3z}4k[%x(5u"+Ȱm[-rvqkq>BHс\,$si\Frb<㜣(xɇ<$^{RH⼷ZCeY̮F֠|`2*9uj%y{k[2q"Қxx2!(qWm#Gdi&Y#5I؆!b&1dTjQ,nN'SJlQ& x'\{mSS 7%VU|$ ;N1?8s#4II#|Q()>'< b53Eؒ،$%2heb;Ge긃1^#oJ$YĘoDDB>4?wz+| w|LS>t[ {8iGʢ@}pҫCdx477|yQ;kJJponzF0"3!Zl3j~G\T}u o!ҟ/v ;˶VVI o rDRGa뚘nm4~Umt#ov'+ЎFy86GC?S^kYmXpS1ࠎ8BMb-:&ch[I%GdAQ^_*nrDćmE'9Pqlt#JSnnכbpMv"˙lIiEflxbo;tte^N&"?p~zZJ61^չ$"VFL|#U3Km>Ƶ4IɋcvIҬ ErƆ_WdYA:Vm/ dsHr =XW]G]UC>":ftmzQ~OC3OU\g>@U!"&ň]M$yG Mk&6"륀f9m%TiAdG!BcBIǪZZɄMkE,x%2$ͳI2VRlڠ XMT;ߣ%O<_ܚm'Hd.IS14mleLD(%{=SсXV+\Q#ie9M]4ub5(b lE74M$Y=4ؿ>Fe^\|HT>Dd. AiƤۘZҘPz7B9qnh3;Wu%xVL7, uUf y6UU˹o%JIgtm!΁]~Px/AҚ$'s<] 99'͊@\-DHuՐe4/~yx;2<* \4u6j($U5Zk& k$[R) "Qm`aBWӴ28G^tmGem 9Kw]/pڔ ^sdid2A):kTmcc,N9 F˼X)2ɓr4jj&)ł4I(ʒkׯ/8x%<.׫.:|DIa5܋$i!j($;SW yZ2 RЩm5JƊM 3{qMۑE>}vPJ1˜cBD 8,b܋|B1:b\< e^- tku-~0ߡ m,Be|*3ܺFT0f6z)>G?7W[4Ȟrue\9#p!ךu.Ĝfğ*j\PRFi"-ZR3ikR"r!qKŘ"\h@{mQA@7~?ؾT4fA_B)`9yU4]yA<'U׶ȥի³Op YXٓ)FmFƍtXϟ?VxF7 95ڶъ+c;|W>+\: RsV|sB@R.O=gD8 ȅ )>$'hSU꜊֡"C{(Tx\*RQy1xq&4#T+2Skާap@)-KmDUvĖq?g>"4-vm `zp[rkߺi:kIzZZqZ{T,:t0Jm{?KLRHs M8dgӼ? Ӛ|NQC*JW6\]?cmx_`~C~x$I^ gntQn[N3 mR/{yNds+9M1N0^޴cAb"9x+ +__qLmRe/=y鮤QղO4UFV4t EzV *xQֹF+oxE ϭ$0iI *4Kϊvu`3sQ$b#"='lׂ8'8Koi+b4LbZ671.Pjgק:klo"voWx |ꩋ S=[W_~ i SSo3qd|yh?^. >Tu "aUv2(ue/6bT}DyWeH}׸Xiuwr ^>YE ~0|~KmTJlGD5>Q췊vi.z7 i8gw1jQc,]v+>6ń$LvqZOۍ$V\ ]:XLŶ٨CxTTy(DL󴂣mP "r[R p3I֡5V4P -cHupK@z9FWfZG ըd{sfVD͉ ClqZf>yVb?\YkG}/6 o boqt:!5'|%ơf`@2 d}8i3\p~irBӶhF!9eC8ɋT^N֊nR NǞmiWዎÈq=:%m#D :kD}M` ) '5|n6ϵʵExY1;hp:0OJ8,dGo;jxkLF>EFna0M.eU0;ʹ :@9},~#x5Śؐוƹgrl9;`ɾ>+Ph.#j.RZQS]sȉ]U*r9oUiȧQ[\wQ`Gul9"Zn-s(9{!T\$Qc[ jz$L5f+sp")oPK vW[)˱9!x䙨68}n Ƨp:}[- 5g 祒%P.!7>ool^WgU[%TGXv=-MUYV1 #c9R3'թ*䬐 ۜ訤Bsti5A Ԓ4GqD< 1;IE5:J.hEU'd 9&x~='W{Lc6хC ()0S9(`,:Lv'$IY2kY95h| # N%1gL1l`œ#HqFx(ʺ.qE=8pΠ񭐁(IԊ 8BTi`ũ?bGyCRR<5۫=ǫ+P#ReQ$jk j-p(m[Z+4Zӥ Ղ4`{!sGg,n2*lvPE5Eqb 꽇wX@nN$ 9:>{uk,3 3shZ :%"bs]_t5"+ ZRIv^bWBrQ1;:DZt})uW.B0gFӴ 4˯3l;C렰Hea&yNnT zeߚ#B$*HyFLK:xɚZck*4 ^wRzXϘt~/M' 4Xs-[\`&YK끜DP^nFU2Kj5tY sk5`Y3ZSf1s&(F{bpcD)4G@:,{鄶m0O#ɢJI9 Nޢ*MhH,Z PDm I(}z;c6X\zW#+޾ʣ7ReG_} .5+@~JoP=n<ѯqF 'F7M{+L.x:7jE9覆VŜQ7ث[?\U_/.s/>jYSx'&7_?m3>O.bԅ(QU} So?o[;~#(2Vs57YUMaQR=}1Hqb"ZV&_j[HȒN6cN-yQ*3Ex[htm " %E4A\b~`F5Ec5Y\[;BԲZ*Dߥf» mh`+ IDAT$wp#0ڢ,9{׃ JƤQϓ b(Ͷ;1oq\IpΣaX+S9C)H!x9N8%~]=RIpޠkD m8c&ZaʐגV*ДjA3Q:hK[N\lO%j%-w#d Rm4Z>y**3z^taA^\aWU( esT˞JqPv ZqHl!9J)h)NgUpyI0۴gR1O8Yy1>kf#\J @Y])*fr!I >ذkRzBlb])27ƞMm {QiqR92<׌lv[mZ4A/ْi0iʛDh1eL܋9d-/c >SQG!vֈ8Nx !(|&MZ6xLpDtZ)q}u2^}ຣ_}/d;L@wff 8Nꫯ0#ڦ Vhcp<nn0^'Q[)@ƽd4ǙZym{!6+LլLs%*ٜҶHFki1hB^}%D&CY RdgBaĉ<N'8D f}iF g9O$c5GiqEGxlo,iw)x9Mt0/n>#C۴ІٮƱ^u9+ 4h;t-n^<8ܿj8U[zՋ}zmbƷD(ղ J}TET+*v'W[e/*EOp{2LR*xt-8E_}'iaJ6NHJSC|F96(5cِXX iEZXm 4Qk&7V#WƙxNɳ]%>KkE #0_}?p眠iwPT Ez^ȅ-J)+)悂)>?Gh&_܇9[롔q(U0ELsbPBTbe ]*DѠU,.01Ja߶hRП@Mx9;*0=wW8QŭB/IMh9l[vsqQZ!^pi֡jM5e8$M@1"TBӊJ;!ZɪisA WW;!={M0{}g-hFsWKEv(6{]c5n`Fܽ~Γ8\k4 h[0J q+ Aʢ:4#H2K}8Np֊Vs"5pAm@,sDu@ӴyMӡZ FA@a}x?P hӆNIPrҸTK8Q:W}&)T8K 5!B>Ōi^%'d7^ۓ`*QͥP!P3։Bb-e|LXƂ7c-hflTF ; 2bJ,=# nZpəm4,zoQ453&FXVԵVH_'$kޟmEtm׊Gے fJ7!dVhf6!iQҳ34Қ yag/pPWh*ih m9kaԃ1  ( ]zƄTJ)bgmf8{I-قRŶ(a4M1JRQћl\2P~DtG%(/~ ?(9cx/n31 )H#Navxt<xҜp5q\r!j))dU1OX|g~ęA).o`vAuh7[:՞cϮUȍdyo8):XB$d92hZ3c~ٮVH  дFa'nѵwU8QBC시%bc'r.2=b8 Hsi5ۊCF;+X0LqvCڮ[C+nj_tހ ٲ\5]_Ks3*Q/JRh[0XqHSDz\_﹮#]ġA)0#jɌ"I\rkkqi}] -gvTO5RĘPe4ǁbfvh[(#l$:gnk'ƫWAEtϞT-h}jsm=hPY{0㜐E٬Z15[\0(6ъyy/cjۡk[Q4ab&L* qTkiAeMӄa[cVvx^)l7;Пu4 ڦzض)aF Xm1uqE*2Qo#)O=kmV# 4Hq uMPʟ(t]v61koלQ EG/`OЪ%i.#䬅>G]1h-Jz*gYqArТ^|V]Κs}@ⳁ$q8/p<2hw{<~FxD |`}%|b&Lӈ3ܾ~h%cF SER;oe̤DsI\ڲϐ͉{c kI5[Ix]93RKI2SzQs3"ԊIk%>WDuvs'OӴ֓mp: mh"#5R+(;e$UT_ YH^g=ǀz\"wDQx`"l蟛q3mgiA#SoH۶?ŝ$x ƣJ.''7O+ $qҏދR3H5*叙8zJ _9_o̸GP^* ]}?v›7߯|߻EV=[eZ]aZ.(Em$u31Di(<&,?}~SP".{ȾtSQoԓ u#z} Mgf$4&w$?c4.,/V4*f-sl)ɪV)r22ԜbPфL ,{#Y*FXZVEc9㕙\M`hT.ʺ?OGG'?Nִ,l5MX@,VSJI^1&[ XC4ObMҎM"_"]V lJWJ.+JY \`7Be>cRFߟ0No$3`FpVA q  Ztv}Ƒߝ-.ELl:NVZ>5l~ !* \!B49Ls9sZ7xHકJJ즢34ĥЋM8*)5'}/D9xDumw(˗/oziNLgy-dfv2@8W yLӈ9N%n0 ʛVVZDh,J_:$ jG.vhB0,nǼ8=0^a|ڀd,uZi23EsWP<vGZnm7n6ض-rv4"vK҂X_khgpuuipEvFYqH|P-&h Bӡ۴{77O?%@!v 9)c0Y؆;vgS0bӵ(ijk`QAA}Ñj%d-QD"4iAUn|*T2i'.Gy% _TE2\\p8=q4(n>1,$֊Sw2!ߍhb"k2f`KXmjRHhFq-e0M#^qp:rK~%Jӊ(8y0<k(1C-K,- JO%{z ag_l.dRSC .BD]Qqג0 M,6JN+ɁWNsisy 7Yn8juMKD4hd8gt Bh#(s͜"n#Eߟxhn`40+D8cqijӲjnG-fXOI<ϴԂ8GQ7֡T#@nL0'6$X_9Mz*9޲ƛ0;\(KW?HR-c!Tkúu8V9UZa|%bĮimלs0ZnLRS#Tt&~}a \ 9:`mޗٓY?HZ~E( ͷZBoQt (kV;3n`ŋ/4 U¢Pb]Jf+YT3@jU(h>%Uq3EUj~eC@25iI,:5p YIOU 7γ4$F$ߏ{ӄՆ`P}+ǓDIaC N8QƼ"ؚk^A B>Xٯk ,Yc,&ֳ5ZXͪjv+)yRDd ȹY+j'SsNlaBy.g)lڰfBUe%OjxN183ơq/XYJ{HE9Ϧ2j5<2{>4l yZ>ydC^*@Jq+SIgDunԥA%ή6ϵ25BI6XEsLYlҬVs8 Fʅ,g *V<2棳_a}jZHb3@鈔p՟9Cpwt?RT0Ѷ]4$rE1Vƽ81H{$f>^l J63 3V \cZN>P1Z5-f!P,@lJ`w 7_Ͽgpw'8N.HƷ[9%Ji4h6hSx;t] QnjJqʒL5VfDLLo`!U躀gW=Yc2%bO%[5UIdP܇+Qv8 =i@T"h5R2ڮ"g*tjS5V2_#IMƢc?w[cv cdjYk1#36J*%$eTZcFORtBMi%,U٭.ܵ>RJM$ʻ$$=*iY+}n.ȒMkeVUsk@/֚B昊1b9șя#5/T*(ڨi;G#.A0ի]נ֊/_~5 PA\%y-=|)izw}/bNq~Sl777t3* R,7mI 5Hp3C'5d+C ;&2=m &{qcD,q' 8iBp()Y?!us3JjuH$M ?O'/Z(= N~u,2҄,$\c%?bX!. ޹*ӆc|y%u-*!0 'Z8`Z#F> {>;e^ ~b %lqd,Ɉ8`'(V^"l֞5:O XWrwY.A-D޻ww1 0nZB@Ck$۬"KZq5D+ s71+O[~ $Ѕ,̯tM:wnWBysMۭ{n]m^z{Zg[?Oqe׆P#{H8[̐f̓+py2I E6>I!yǤ>@8E4كx~jԋ?>V@]x{D{%_׃'3?xYRDsMgu~32Azتգ1|u3V]U<xc4ByΪ[BWO޵>Rߕz»qߌL_z|*'Q(4x8tv5^%B.^Ӯ(ɼ5PIVV0! g={f,^mzE$s̕J)5(Ͻu2wHmJŜYւ뮴\ҭpbOcd~4ǡ!Ѕ`&4p ߓA k-qKhg(ٛ>$hi$5PpEGjA#MilļhkV{*bZ-ywp_AMk"m! YZ(cUl*ZpG4ZYfZ+fc2v-Mdbfyc.)-ymYPZ5eQQZaމ 5VZ* 3ƫR"LiPj{Y5C3q\UxC5%B=S=O3y5F qB1T p$P`fw ȩ.Dte:6n $jWJ~ }'m9>OM^:6IFw<36ReuUeYX(V0 m zdY来aJbB1%PϞ'Mɘ4= GwwT9Q K2T(i|Zka-Aѵ$5-%1ny <8~U%STtm+yxTxfh0hY0VE$b1&ZδMNq A'պPe.cbq#EQ%٫1&8S k%c,-#3ooqu}?Vj{k 6Cߣ* :Kx:au%i )%Zw;.j!ti_]64f SγTQ*G`,mP!Ӗd5QkP $iԒ1L#O͖JkL(Ii8Bf01##"9fZN(M)6EHPTڡ2?t q%Ä*U yyyt-rftU tV|W=_k CHŹRk'ZHTҞvUp"IMX sbRSĶ9y0x'96̹kh4<[%щ" xkStX7o{T`-?W?O8hfzSD۶в/+ }ߗX8Amӿ_u|WO\Ŀk}m~cQ翕EcbJ.^m51ow0 ڳH(sFjCx$v~9SEbFdVUo 0M3AOX$E^`SNԍjm(b$1J8AlZiJ&0$sV!TU6Mif$@<ҊRHsZTUsP "N#}&dI|,XZ\-lp%0E,k,`GIS`dJU%2q\lůEBխ3k^f@m5ZOy#f1FdzmV'(60VYTs (SGYuv2\8QKv#:4Z.2Ǣi[Qr*N`񜁪_q`1oQ.*Z42mTS^Mr % 0\ (@a 31fɆOhV!!S6-k;޵-֪ݱDv-˗c@D" AOO@ o H+Cn)`B}ٗs7^3תڵ٧Ӊݭ:v]z|1~<|L+E2HQL1Dm' @\]h*,3} ( \ZkKP/2hTDԍP: uBd(H)x:9Ӊ,@NҬMDx3/LTyLU Àu )a ڰӈim=[=xB۲#3Ĉ~@8YAop::R1ymxȏK6;>$2\bw9" "JDWcera:9WA%%PYg-enZ^k !Fv;,ׯ_#JA{F pG 39ufhYQ[ZA|EaI,e>S,rB Pl0FC n"FK%EI Btϟ uD4cR0ɲ֬˂E o 5,O#Ʋ{Y 15ޡmMn"3q !x{m۲{jYv):uCߋhj::uqKm,@nw` I!U\at]~ֆ\=^&AsPE #MYsZ)} haC=,B44rdUe i)g$A\p<=^ 6$ip=ƠlpXap,C}Y`]6soL;jf"vU@ $-{u#*("͕E!`ٺF _!QH dL_bI4BBY!a8 ]gh˺t8ZWhī=ׂ躲aC/{ޗ7JS4$e~;k&CD?"q⊮i G! S4.EI7n$lO!0 )r.h/'Ѕkw"F1^XhEspH˼u3͉XqJqgR J|~Z(]gϦ-R -pDnn8]#ys߷=ڎׯm˽r^/ƃRhzk@׷PsiR}ﺐ3#^#~kmӰ~f4M$i~dFЊd4VЪevAy8Xx' $ߌRKИ̥b@RL}J[uhHmr&p>XUG5( g"g6 :vCS ,B).'T'ibR L3wϛߦ%ݿw?'l諭, Jfߦ˨w?O(Bbe${y,3| `/ү.n oO?UL̈́C>_Z3 txoF_e,{Wox7o6?U.;{~[|-#; /ی`3a@m(\li&O=NwOo8ւ?l.iӯr+W.  AtB=Vx[Jx_:p+[۔(h`m'z8 ۛ>&\ dcJm%cAGz ~a0 m[cJu=w'6Z[|()g=3@SickI6 b]sL 4]+YzͶa ڱٳtMyB)}7 + sx4uCFH8&%: mz\Ǜ`kK: 4N5V P$[1KȀZrpN筧UXA1oH$k=rIJFLVAD'{:aC^XS`hSR1"vvrn )&)-}J~ S8Il>BNLHGxt"x[ūWn{P;gqm-4FU!F>}YMqnĺIz(,5H8@%IWۼxOtD) E`YʹvC9E&廮8CLʮ/Nh}8: sໆ(]֘]@iFAC)';yB.R Q";g%%-_SRdsj'  .4m;D@/ i]J1xO,nHS{;cXŴtu=1p8JR'I]?Ptlˌ3Cv8Nuk"ebٸzy%c4m]עiLmҠ$N0R]QafJ+n+3yaRPt:"t` cG m=Op4RRX%I3k#`2y3:'xhKRis)h bYVxkX8K$A-UJy!ƀiY":yN]):N#JNhN'Ux<42쭅3FhWv[|I ˴ g`wuvm`+enCuxSs)R@ sUʱ\Y.f;<++14)1[jmQ Dq&p1@lb zv}4\:)JkcR`,iQ)Ehca5*& &J)xr.;kx:2.xF(gܽ~0` uўs4 ${y3qi9D9xs~95]Y.fyVW"^~PʛMLx?]= ZapOmiJ$x%!40/3|:՞UQJ-*IwLo=oq<5 T^| Rbpչ2()[]? ڶpGӶNc_ B3@R L `tJU ϟ_j̤0"~qv[39mؖ4{9 3 q9U>"HZs9( ^rA\#!7rO@c|zZеnnqu} xN'Ydp.kk|5NGӄi޵|yv7`{ ^~wXzxceǽ4E51eoo`8/h(z`-{KP%=Tli1t纮G+&r>)]B$s߫:YTxG[[V1$MLC\VqB=nAS6A)cN@ɸaPcv=nnnݫB<Dⅳ1b[ܿ~]bnȦx@p4Bq"vA4pcº,/uYW/_a׳Ϸq],L,T҈a{/7 M@~C8Ɋ}2xgQJ8OĺyZCmlv״8Kjt"IL_mx%,ЖEƑ*V6PobvIrOˣ{Xgq}}e '_҃4FTzAJN{S9hk` qwP֢(Vm]7Ce\!B$3RN{Bq!lvZӌ6RQhev4x[k(kj]kSMme*@ 1+mۑ2 wu0 ف8X~vsh۾oߏQγ鈾TӋd 儶64cibJ!p<|}9x"4vn"-OV4<x/RI%k>ϼ2nq]ٷ~0ţ@]=t)V圪qX8UûR ,BBY{4ڮ ݇ ]LΣh/heEY oMxQ/\{Bbĩ?Ə%CkOx]/x:(_@O/}[~ulާ]ˣc[a}[5(E"QL;h*x_2—qs7۲Lxf ˠbj.ѡ_ۄʻ~0)[/Tm} hL5>;Vtj6OwZ[<O>4M_~˃]4Exs V W7a]ً(%44MH!P6N\m"L簠("f@z+R{KfH;4AuKO4J!DGmW1V ,R$4÷ٟ )%گoD{v:ka, K Ɖ$IM]URݣC؉ 80%P<2TV( R8cI(v ƜC#x'yd8gM[?SPJos?#y+\V[R w͠[R s >.!C92c]J !C(;#$+2TW[?iC"Hl1I,QieFkm aZN%-„3U4\/%#,L3Lӌ$x5&(ZmJ 1%U]Z:= 4 ǯ_D?u`I9]M62D`eD]_QquV1a1=jfHԓd5He-I{w-?r !rPI<kkǣE$1)"eFeW%b{'#{ L-@#q{w圆%Q [fRଆ6[%{}}MԢ$VhۖI%lm᱊ Wx`PpD۳+45bXK\# =3$ܴp2_us8a|%iXkUMr>L9cT`0u]֕}sfiduxUZܚڻL\#Ti ja#!uCk5]1p1{QI>ԋAVR\]]ѸbƽyoRz }cްW),4yὰYb H!0,yv ci®1xNF ~9 a>&4 |h =~gϡ|4Z;'tVl2=! ?m,20 ^- JE x3g;4f1J*Rc+Xsoi&cM?6 o7| ư:z,+ ;K2gv77EO'֚@κe,|`}qO?E Jh:hEqvag03RC9XgV'0nבi\Cd|iEn5Áޢ.O5%ҁ۞w[-9p.X*y\~C.3T\XkLXP9b#6l,^ -ÝKFQ<'RaPֈ")igoP14U>AR}Ls7!-~ ]KmsB,Rubynד [*<@3t=_ZޗTHLJDsQFG ,"e)5d=RpF1=[It<:19'Y"CrRaW[g?Dj*Zc i< U(:KA +²TLlGBf(+3WoŀmP+EԳܗוr휼>Pxn`xxAAOw`'>mv +q<g[&>-uEyJ~#=s}M~g kX+Ĕկ|7sDL2h̩"JSfW1to? &2Hc]W;<{1Dxw"FZcUAgvYp}sd0.  5Qu}#iu \. fRi.}mkRXFꒇo^v(%-M)aHوw_@J X;"77ޛZÁpx'F9hAZqt+(-t &L"Ey`\"h`>n4b]x`J ":cf[(}XV<ȂT@&^Uqcc:/dIHM`fIc*V!k5\kuMXMㆯedԖpb`|#rIuBC6~ b̉YA)GL U@lz*]yCyZkA-}-#&&ZL*2xk)faሰ"75c\)e&sz|R/8& MD<m8hq$,k1= uXv)-E5{w+ " &w7JZ+}u5/3>iu qM0VkOf b%,\^mQmKCIOMXRd}q 1* C (E 3UZ 5ma9(׼7mkmEDMHZAi, IF(FJzq:d0/+non4B ^ C3Lauib~[L㈻{v;M8JoR7!)kw~AL6O#+`gwNІ8u !l:N9nvYr!yb)`&vs3Sk0m-Jlʥ(ӈ}o҃.ת6<ݍEozOoѾ=F/ Ŀ/ }鏗'^fO_ު¿L-/~U1#Smʏ|+Ǽeaڈ S) W240Hפ M_[^kjXl">X_Ÿzs?_,ҍ])Z"*&q9ǽҌjMC<}#z*ZJv(Pҿ%c?I{n]cZ^z >#=z)Y-sY1ѵ۪2 Vi5bVQaZ5YX뙾]_l)ZI>?V:6P2/(%՞6oS4\$oc]]{qEuƶ][c2hg"E u`&a뇥&mjb{u(}7EI1C`CSVP-M k% +@˅idQb$[ckKr !x۠W¼0hC? ( Xm`4a 7c{]_]cFsRB1bȑG}n,5Au:MO : }_+8R<)CiYրaݢ3F#- i0`AX&Πk,_J#eHJaYfVxpu{y3i=5*ahNG{$"FuEzCQî(( r',b僃.[vωޅBwωhpԳ$}>)P mqqfu 0ޢ[B2, k5 \5l}]u~PGpr2',#4c:hh\_Ж ߴE!LMP4וy 1VdvV(ZIq+qZVhU0Ci^`sbIa:7DmE$cVUC,"@zԵtdd`G(`M*q3iC9#_#ʹ@Twаȉ7ڡk=tIb[), >8cp؆]HȘ>#ׯ_1MďlڮតQ쮎1 k e4F1S (0" o]y8is1XcXLwFKco ރHZxŰV1yX`C XGڎV_%Kd~Aan 5g,p(p]4սsL鰻14D7k}G)HJcwu ߊiMXS2FHTCOB +8>mi1  'ZaDl$k",(BfY|uObTʓui%T*\KsP\)'uŋ>^JOIMBZ$$=:fMv&8Dft}e 2_2Z"`YV1A 9G:ka kh/cEӲ˗Vw4HA=`Z󲏬ƢuMg Κ kyv!%pim`[ϙcHS2 17=Agd87y*JVtղ v{SJ7kxs;~Y1hf+43`,TG\SZZ͡/_04Xޢ/ߦO<~y4q~z2Νg.so>iAj?I>/zl߇K}/hCk;؇_L>o/ ]Tل,)"7oc8O((pZR0)~g?s2㛿տ m |Uwk/W13ھ?|G)>?IaSuuu׿#xƒiAt[m7", AqApc`f IZ4mtD9ﰮA T cE Cv--yZ Z`DhQy!9xIcº,%:/HoO_|f km7ͺ"ŀ4NLu:`'4mWqE" x8oo(xN(-R%d)_u=J)Lk0/3v1zbF,3XRBӶȪ`:h;#?cTsi:(XEmp8Om, ;~`pnnɧo1Ni:(;$V9e&ROZL tZ G\#{pm=x鄔2l1OL{Km ZLjYg!8ϤDBXa4(8o"M7"DS}"%u#%%ag",˂5@eqx$h映Mx͇=sXda N; =^0 ?{O N#vW;\zt)!f0-EY#Ł3 +E>9 T_P [Byt.oo=C_"\il5?$)-u{Po a_w Gt\;4-}kIBo`gMiZj+ : kdCxǺpGx>&A6Cw`i]ErA ږkqA6\i3Eհ`u>j.U*2ŻEuIJo{UY!$!}R!T=uź,HsX'KjFKEWF 7:PMJ_cN'G|ɂ> ~W?>['3bW/QsĘq<ps{y:au]߰wر%P^1ukyе- +ȰH]1)N)ww81 (M$_7\bșg Q01"Lj鄶д GI ZhȞ[5/-Z/voR^hTVM>m(Y-Q x1c%@R%ɤww$o{u 7->[R>S HJYk.JuN3UH5XS\b=Vjmyid*M%֢DR b.V a4M1hCLI^imO紱y)h+;gӈÁ1kꭦh[#ir:}xSrC~?F>mmْ$<~YϪeI;x(9p<^~k_Cw)cIVbVkJ: zXo$k039,+Reg҆d\*"2u֥4HYֱV32W*yo.EhFn(XRZ %I #iMx9ŘP4BAÏ>3v2bYG(@Q4\Zpߔϑʗi __9LJ σ߿5>﫾 ˎ7Sۺ詄iK{ =Sxؑs2=}~j{~'>f¹, rd*hS:.ko|\ nG.Rt_X=Z4e&ՅSK]^A~|9ߡ@pݧ{%\Tמ^w| Gx߃'$1$%_k ă>pzz/~i)˽=/c\(=H xB =%r 𶷽=ʲBȅ xѷsSFv< ZjdBa%7'GF._B9`>0oß|I}Ck? .L o<"$Uxߏu}G W1cV'YZ#HxX(c?>X[i{1pttog>wSCN*)?C=1 =XWԼBK,i0 (7x:mOGCd*RzB}kHudnrBi㼰kZ*y#F3ı'JTg-Jv 8E6P6RKb`К.|02Q'HAUc;1(JL"&Lx9 PTU=ق]aHIB4͔cNf_$>E4kȵNb GrrZ[pi#ZLh{E~1x#1Xj9ŜПLs#`sCʒ) Y!cLUJJӘ6eJ_FQ.Ĉ#)ZKE,KлlhC y[k-RLspXOQW5 [`>XW֒vD6np[&&PJra<ٱ񣅙6fyjXanPSF99c85OCK\lcv'5[Xg|SSJ,l6_(;9䘰cD,еR X,Xװ(snp= bDYUXYМiCyyaa `)1ր=2UUBUUE1QMB(Jcooͦ񦚈"1QFX RI,y.z砤Ƭ}5"%f3>TejXF+)AN$YRJ \etM|"Нjz*٬=E4]ߡ:Σ*@JNafu !Bѐk;MH#4:\tSF-M4J>bǴ("8Z rNNb|VOB0R_sTⳲ,ἣ&R ϏrU:EyУV ԥƬ*D!E98x`-yL.䌂ZI6<-RI nzǴ ܦYhB;u(K3QlY2> V8Fs0ELA4F}?pDQ` ,`jj+dSQ:s݃ 0ZDsqD~s,'+HfG07%ׇՄ*K9ǵ$|sR՜Qń#vcc;x`ZdqWsh} n"E(EN ]@)zFB=)j\čY"|e\v uU؍g1s۸ĝ,|SӝƍxWPV%._Lχ3QJEq_(7IL`1R5_u_I \cMAd\6~5S:F@"$ɧsp+Dc !zȒMsCrra b<0b% (r#(e?iM/ # %2YbuZ!nBI>-, S Į՟_=-$ߝ{_7|>ܙXVvUUg$9fwx<8*KV,F]?g]XoVb83n㼾緿n=fߛ3/1PA(1GXۭE0n0ep1Mbus^":j^Ƶvx3~mՏi;2dqq7f/滾|P'ȉqR()ti` ˗/) he&T;1R,FnIPnIRIp3ɠ3@w\.%櫈1Vzͦa5ex~oO.{x߄/]fju7lr??}?9sr}ݿb$1?l6Ë/^o֯ OދѰvjck|KW-R"QXJ++W?!㩧>c4)?xG ?DLUApZ+)xdMWOxO(GZXW~|bKx+|W\įCArC('~w]?/pr8Ck{LoBXdPM3jzYnby8ߏeY:ln4/rSڢ !Y`Z䢈RX1nZ;OّJi^J1g*1L9,jj* gʧ !BZC|Tl?œGƢSl^@.C ,V1J{vDJlUɓ+ZH!([MI+6FRPQe+ M1!w2r&79̥$ )2sf:]0 Fʇ7ZEHRWuXMd3Yun[S%|0IOE3c'5ʪ` ](c55܀͚z1*`<9u Lɱ`8y,2 ERs&#\soA' "5 10Vr3"wY!mZN@1 p  9/78kϕpp}})eM~c 1<6 Q$ZL rn Z@< {SS1gS!wpCSLy)$#ܩ/JC18B`6!i<$(J0X,h&dA]X,1H!@p^>ƍ' y(" gu )jʾ.6 \: RU9dXaKm1Յ-Da5 (vHt 0-&i%uEMժRA])fuxf@K  ϙL]a)zI* NQRR] MS.bratpH]`VZh_QrR߸C*k Rۘb$)55sjq3CC!$ʲDUUX&bU_#s4e"qS1cx$>0/S_FUp}І"ʲ. $XI/`G hUMa ‡3v-u)1w}pD"&9[G1CLPLƑW qOМLMaiuJ$Y͢ c5 $g } P'DrYEB_mOepM{s\1h;^Es|khz^[~knrx}x7|8B| 8g~iv3}swpŎc,9w3wgUuxKfXܔE͈\Pcɂ6s9wW&?["y-w-i>\im;OOdvow{/\#/`"ͿO?E?m|3vᓏ1'hIhO=x3)}-0ӟ) ?!>'?vV6=V? /p O>?  y@~g?!2Ξ{='J, @upnr~w#Ʉ[5gW|SOӐ꛿ /_22c {{t2f_o['a=O6nW1pf=-)+8w?O|Z೟ }ߏ('d'B oz|7{K/>4%8 BN Qejr2Kq"1szrK9F )iu=) £b0L.1cku=euṔ1: 糙):#sF/^’3"efB@i-5Stw()ə; M.q-X a)Sb\TDjlQ/֓ j:vcGd!OQ4nǐ'D PA '8  UUO΅.i9 &g*gP>9H”ga7 9%([CIA%xqzz:᳅,P,\;Aq@UMq)ABߏ%%%/Btx*0Lm 9ʲ@mIcѮ(Kr$7 pγ[r6 >Xt49"䌾M|G)ϐJ*=r&oa j6=;TeZHX1tУ㞅( cJjfj(Y[`C*mR`a4kr 7¢J.H liMTՈ!:+R8SI:o2YNL%g8o| S1M"'KV+B7\eE@H*w]?Q"&@!P-*4G%~s=5B@i$Pm=mQ ] %u%$r"4 V''CAdo{4'.b?MBK-^yeQFhc#(srr9Tel1ZuktI;ZRU< 8:]CP%e5,U27K+`F+h(Գ"F|Fm1@PyIBsbwe c-bh[ZLY" re4'&8ќ}] Sj Q!X@J[@iZ󥘈c442(8.# R1zJ&$63֤eYhz)"2ɚB E"1JIVԘMVCqH1oCeιa83K%TLcIQ!LQRAB&m^z eY+'b_z(jr\PBkM[FQ֚mZ3uGʒDgZ:GW^!W1v-g E1EZic`mu4_өr;˯\Nj׮A)= n>iR)}\x|": nmR<ңlf&BbT#m4O 4B)(a8s\,Hu7D)ΓY &FCH 8G QxAB'yN@@z6qHT(7R:Nw߳mݽ۾>Oy4mlop4{^ [e=LzTWqxw6)vwzy#'m; Q%pN| o~nD}6ש/h.|M{[%ww$ӫ~v:2q~9f λ8.k;۹p'9 B[e _K"#Gvy 20-bR 3ʡQn\->erQ)\tަ屛9Sg=vvhuL2=CFƗ x|7AJmRQ#9. Kťj CeMpƉim<5%hQlIs\$L1BHڦQ4TĽt!05*mb39O>>9[iq B_y/GzWã#]O><ͤJxa1sA2OaC ~B {uhnx챷>Фf]c'PPj|Ve駞D f~ᩧ\*Pm[K.L!} owL3*PHr|`*U}7]1}5B z^} g}r&xgw x?&1FBo[L M4 E&Q)95c J7aNcfܘ&qSJRg)4Q1EV멹@?Ic(&$3)%!Fl:5bd: ʪ@bw9EUNcWbl6)9O]^7xat;+.T E9怓S"kj[ci,*v5W^Al!9G]hhE,) ii QaCr3giE lzNŋ4n{-7 a\(zVWHKbw;ab1gwuA1Sqޠ,Kq] 9Q̂ j1F,(9rEu=V%BuFv~`Gd|τ|a@.uRfAYڦce5fr;砵F0FOh,# 50 *Nx]D= IY qՊݶ(^ ivbqV#Yoڠ0Cyb( hmѴ'47Jl6k®V3-vO k[Z= NBXt.BJJ۫BǮ `Gߠx0=$DsAF%%q;\jo_bV#M%tBPS muEyNV+,{spu0R>l$zYcp= ^~e\CJTJŅyj) êIHfCsp|rLMA=9$h! kgBj#E )fY789>ApЬx ʂ(3>3^F=g}W.c xn99VJSSk[H%0_̐` y"3E*7$LQXdž(ϗԈ0Jl+cb$[xa0$ DNx%5 IDAT2mrFS4/J)ȐHk)AJǬ6kTตk /p#b挾ἇaGT 7]3b^95~rhpS9GpeU!zn4ZAiw( BciJ!'TEIqdudC oZĴA5I%cB"!'EuF$vq3ƍS'Ilkbb@htqvt1fH.8[yD" @ rohM駟Kz,s,H1gz*.]wش-za|/qN S6$|6C }נhMX%kR (|R9rVMԦ!wΡZTUtMcEQ`p4FWΊDB S,Mz(/@)׿ ()ILT$Pc՝5H1 e^q@`}݄i|ϠpiYDΑBM¤Q*9OJ'дf'EM:\MHHB`DRKq}OsjQxGH<w B$JpG=92}TUy<-$YKA(H5M1QI;;5s>km~{~K}#o|BcopOĴl;)S.gitcN?S<}n׌߆'wڟ|mLvo#}9q~6[s?L-qܚ{xr;3"3}M?yM M?{f}9'X^{SCvZ+v7(l*yp;Ytu;řA<󎿥<ݘϾvANQEɏ;eΔvlmqPOCEeuBU]#CN*f!2HɭhbU\ѴF]ZKi1Qr, COЯ'<xWe5xGZ)f;w.y?6enl&^ rQLYSplD q3O?M.1 \J!e ;.wcgzrU|1*т$4s ;;)-v0(.osc S$1%Zo]JNHy]#}syxP(J(ʾVJ{.)yϑp޴M$:Kkry-H"L 'sf(TJMM2r(9"+B jh%sX`fӴ0FA):cBO#:Z ɖAd@`>c؉RL H_uB,JBiZ4 yx{d}a!aK]W/** DF۴PJ@e 2`,JAtҚm rBJ8G=słsW3<ֽGN mӲsJbج!)-ڶEU]#ʢ '4;(]`AYhZt]Y=0)>llaID` vŜغytrL1)$v#$2c΋s7kl֧P`^#\?,!HhMlNcpޣĆ!a0tSױXP4 _A1/] Np|IӶxkcZZcXLBax5}Jj,f3B4.]<<1rk-Z5NNO}=fU y~ 8::t=ĬĢ*!rBp.:r8CD)$ ԍ}Oc` Ǥ9@4nmP5J[C6/xyvS]8@ͷuĴ%Sհ;%T6#f|y[s3VNxu87`of,C߬qpp#^qţe>1[1bC> ͸5݀"ALR aiH"=ydLStXĥQ}{kB[GҜDq|K9B )E(y yrUD뉔)hr*MNbG,(J;]a(l4XWF!ȵscCwRROj%W A(id$ a& #|\)Da@UV(z#0r2n)X@@ܐ\[0ڰ#?eU]8](¢"-K)1Al4Pm5<'!(YCsԍetOɱP,FJ[S$pk4H(!QY(3A/ńvA @AU[iZ#7x q,Ft]b$V5(h>/dk#p;95J\t''ޣ,+ʆXh u @[f9 GR 2Hqphܗ6 !g5V%$i~yмZm`RA KgкT\ k.w(rHrt09!6QNas1I& 3r"CPLTӉ1b` CN J! >byN]S1Fp'&a<Ƭn1d. fSOuoU]5ob Q޼3{zx~=|8n߮w|^g_OʶgU_/n5wc* yowC>'یZ7Gx-5w:sknvsog0ܫ'zw l52qe~V_e\8?-fB>_u?fw6xOMWߌV<pE o_'=‡C)(%rAK ,KPJSz_ _I9˩j,ka  [{{x݃O}~j5ƒTș cleJYd&4YFzӔs7m ͶT;:9=qrjc~7!"0UBR7Ĉ.N5Āau=u=. IƋԘC8{|@lȁ/NOOO|}1fΉ\HvD{l9 %H#ءMb&yZ{Gnr->7 ? )Ih-'ܹ1f(I&սQgc6Q9: Y=bلPbtX◱y>:甏-ؕ. $1}ב @ n]2[k[N2 =`duYc+DxqKDeiEQB+|*Y=m? ̎B)X%ݦmg$Zsr, k 8pzR2ĭaaF@-N0ߌВӱa}lVMqaJjH8=*% uU 䘦[]Gl RU8#7;R6O()IRVvQX c\!PGRA z. @uB]'<]AHjγhJH PJ,KNOY@Jdx/tok;nmx@JW^~y%Mcek K\Jr`&s4#:2KAPBl2s>y1ƥKX̗~|{=`oo( ڎ=`O]1u>蒦9uB0pSޖ(1h ;¾ ק4g$nB :U\!FNcN8]pppk~ pߕK8=9b9>k׮}ج7K/bo9Û]?ģ^K1_[ނxgت`gLCߣH|!QidaA)$aA׶E]rȖT4:RL4w:N DL AJ SH`u$4}4c4`d;e$2|fd,h7D (MY#"AE.'<b! } ljMNw gPhA7$`|>fǯc%Rph8\(;E< DqtȐ D%X2a),Y_T%wQ”r 1 !ĊRtw?؃ E)eX"R$N9!0UAqYmgU&1RДAsHi(MХE . KH, '/9QAJ~@!3%LM DBg4- C+4O9 ̍aFZJx(kH4JK8-,%bp^0.JfHkA[78gOI6$}Ǜs,ۿ|V}tF=+29涘rĮ;̃Mg$,cu<8u^_ߓ(cns^O}fYR1Ysv@; [ 7l"]:wocN 2ru>$}ǫgO? ܞ"][>kJ`oMwwt/ń_FdTUJ }*]ضRN>Lu79H^^v B[@(?X.xC} FҋxGg?g4P׳)u{+Rxο*_l3Ǭ(E$ ?coy+㾩GJmK\ H9"GAx.J3aqS37Pr FQ'B7G^k |JD9uYuD&Xot# 7@rSv&{%y(XVX.><' ?c?>Cu]gƓMn !2"Zi@ (!?~RrB:ش@IVi'7N@iH9e+chca'7&RDA9oEA:ʱ34&'\HAhq*wùrr݊?6'+7JHFLRNq (%qmg!d+%R 픫n{.pNr 7D]tNk{DDQ:9|#EhؙGdy90j4 @m{C &{~p~)e/ɕ*8>3#m؍c1`Rj9ShB*JEE&!$L9#zr}$$nwR܊!`Si6PMr&}۶Ӹ;޿0r$5pCc LX)1Cbqb WըB55x@Pgl`mlAh0`1BpQд-.HR , ?m6s*H!d!$#8gB.+)$xf7uHpAH(0 Ba!|>B,9|$Y7BdٌSD8O1F1#x&bjx\SN[֠U;GP)eWPFĬFI|F;L)w#( H1h0ُyUu)Tw+hpdɴ V(DR%q| 'Un6q Da#L%AHM6PaxߵWutH9Ou׷}߳bSʈж-6Xu=!C0mA T6mR:c Յ]$BT>x_7е\p}/#0~y^%7:; IDATy@Uʼn-q4 nպ9GHbiچ |1ƨYж-22vYфݻg{1LvBwZ6Th)ԯ0#$‡nc^ρ9A5:Pt^AH|z8B\bӚdKXsQBy7dz<%LѤr>8Ă'bh|DWLFC$Jִ@m<݄??K/c1_K|w}7y&琓Ç]o6^x9|߇o>~d#GvcYB`C-Xm% C@LJp%H)hn'\r+% J4EE8_- 0U'JTy!C MN j Nlk,Ӿl'@~XUxUɒJ)޳$u-=B h ,ctHQB#7;)܌_[qFှm81zƑl&mѯ6hێ\fҙDJ8:[ @"fIpm]HXZˮfvjt6ZOQUZ@9[rH5ٙel9 6#c|V0JO3 !VH0ӄ&ׯ.%Etm c a>e<;hp"h5aG(jO͆"6ϕDO@B2\26 Rx뭷0 ^~e!P!=S^j¯OQT4$il J9$tkG9#:ٲQ#'O5VMCd W|< y(sQ!١XL(7im '׳qͨ eM).o*]*So[P,0ny3{q;/5?;[A1RпnNgӜORߟj"F\zo&,&93:_ '>_7aϼQO u?s] _<*ʏ9Ytx&K6oɚ|9-8ߵ3:""ח ;vn?7yO5{߳8wux3zQo .*X)m9 0bx񅗰ޜ\eQ+y9dy4z{`icm3z4Mdٔ(On''_e}Ob)UPc& _o~gS|5Q_e|Mۢ-ޫJСvv"bfݲF0ώZc'>I~\|m_ab1,4p'JU Y!8PΗ?W'25/ ;͹v Sm /]%kݲ_}'O_@:^6ڎoâ"ei- ?7*̐B)Ed-Ęe|~;iBc->kxp6$*;cWJAa7E۵56B@hEͅ a]K:K3Rѧܚh[`&C8K8܈WUe#\1x_8CтEDEF%"bxYcJؑW nfHI*BIè_\]@JŎ7jv]OEvt,,^iH)ѵ ct1/WAE@XxEF)(C8:z&bZVVB`qb زshH+Н-n7;aDc1E8r5 V*bچ)06c*1#iBL<6EBv0֐.%49ƈB=QlqT44-(ϸa:4͈!bP\8}#yf# 8_oIb)a&v;8ErOQ#!P ,q9\B vPQܹÂ1濧ty1}ɂ xд 8$k; qqpg"yĄis{g8{t=evHc"e&aL069TfX" LH t3Ճ5τ WWW)!Xjj3vVJ*JZ*QTCLFӼ^jo)޽KХ)X+!~[H M Ł+X4(xX,lC-qcpܴI!!\X wlDsq+UĎ"\ hUǴa)[pcF H#4mݏpuuqpqqǏb&)0 #͔E1F|F ӢbtmxͶƢmJG 4)E]Ϥ-b8;;{  trg/ę 1F`)H Yw) PS(~9D&^ͽ3VжY3w]7v ߃W^.ĐƟ~}4=:Kܽs/>28==W+89=K/;D ߯(z$~ on[ hfi@4S=c1LLG lCA1CH m:(m!P}a!!=^BF/d2"$'B*QRiƯS1c$$S>Vs- \m5XtSF e.gq*$G !x[\]^aGLHFNp3Rp~sM<źi ]IpBZk-732Q8sw߇>% [m9)զwvy"xl& Q9<#8G NRk^u/MemPRZ_:ktpɬmن"rsfbgH%+)I3AyyƁi#V#SUHDaC̘si44ZB+79pco nv$m]^gmpc j&Wu7 V~W?gǧ:sڷ^=͟_w׷[o1t̉7ﳣ ꐼ99oS Qb-:th=_ .,n^{3{X8?E9|3S-?šMOUr\d1Ϝ}iw8?X{xoSG(_)WuCz"' ѣ_g-_mw9䜯#rE$.Z8F,Y^v񲖛7otO_ Hm9~FOs /y1W0MFT6ڴ{ՊԹ+T x9rgRd&ƹ)ir D4h)AHvupjnH%ܿVמ? ^{})?~珑R/_a&O}7_|Q**IramRmaaZj B%n63%k_g?Cpmur7:J&>x 5]0`Yqev3ېC Ȭ^f@%R+)UZƶ \#3ChK7H!ٱNw 8cxW!%Þ3iAT .xD+YD( )n m>TR`5 5pM]s sj=<_3r&\۩LILuPrduScqp8(i r6Yy:}ߒ~0Zc.RI{vP!]k*ԇ@ڶ椧Tp;Rn)2:!Dn HUF)clp`6T11}ߣk-2p €楻c{y|3B`Dth: i ǾpqyNxu qWP4DFi֬rQhBـwűdc>yߴO3ϱܛ"y:' qC4&wc"XM1Ce##f!# k 6ll{/B*]rh9'Hm0ń;gÌvFV#Ir'=<#F7 70JcFHCFHr<Go!!§rYB n{rY Y&hi9.H+Fʌ7ZO%'=r: TgU⟎U)c$ HAVY-"=D79ς$"H|7V@uj)eB ]0g0-!8)`wXmN1 }I^ ?~q?y#lu1vpnj)G>^x9ܽ{ tktÞ)S) HD ?i[(B|yX`ADV䢍qSDZ;2!12|@DnRBBZŢg YHu`T:L xI+&J+5J"$6HXV46cNB(|J;F4E7 3NG*(gN'n΋H"5E@p!FmIL҈T+篴@84W!D Zj؆RID95仅0f0?C|Fc#Zւm_E={H8{)jkf2z} qBJ*?=_lou?U<k%{^}5y\ziq1.er@WwԠG BD]!Wf(%`ٕu0~ӐsD)+@I[ c7y{^/"ϹBa?!Q2B)>^5)b^+3 mH+V*,$\ʔ 7M"qoeDC5sYp8`B^SqĖB"lMڇ!pyyHDńmz4TҳTՊ? RhV}qpa4M6'DAܹs4; L"gwΐ]!nja@l $0Dq|N1"6-bH|ǗWR+lNBCA 9zdCzL"܏',+?8f̖Eg IDAT~Fӻ`kG?<@YaAj:`^av3~1;4VA"A+î)U糒K­Hpɂ0^PYd>p91\ĂᛰX ))1)KLtJM:HrJ#7mUapyqh0Cq8 V vn!lNaV=t9!r co][AG2<>&`,3Ac"z^z%7@ bʘ=`$bu }Rdct=aT$F1@\ w_eL "S[G'iD0$"aBʀOdd$1*HڻqPUF@49xp]H ӈt_ƿߏ??׾'w2 g\^^`Gܽ{ gl6xͯ# M#90R[8{Ԝv%=!XpVD.sUM>"x"JҁJE,ܪ }R'>RHȑ3QJ)̙lU  Ⴣ [I/8AZf!Fئz!{N"EOMW ]f (F t,RRM9%K4 0.^)kT|~p9#ш)W TmYK~"Lz}n xIGt9>x*:UJhWwnD6PCR̰ yϼi!{Xo:H)pP#vVb~8k%RB׺bZLLəzuo~Z͟/ӧ/OoiV"=//ĵKҰ#[u!r% GDV'091n)? D(0\S-&fMwQOc n@ >{5Oo_7 i~JT{,۞w(㺳ȿ1ޓj6#qfb^#A…̄3e !GH,3"Ԥ'VZe4g qq(ogjn3h-qĔp{0NT)v7Wcc4-5!UL6T\РM ezq ? y9%e`!pQc_d%0ѴD&5z ͛! ^TBZ5K5gr 'B6H)T ./!9:38pWrfBc42fW0Ӧ ,PQBID pB&Ec v\کJEA¼Z/N!$b @܂/9AeY}sRk) CZ=9sBvhpBrF3ۼ+8<ƚ|Lka2;EKj;:cISmL Fq[lۖ r7жG*h+H9ʲlLUy"!T6慄\lRR000@cfPl,"wLɮ1&kж 6'9gP ű%7t){82%͞1PE ]onYGnvABӴP9ca<{Fc!cz@E y}@۵R2MO!6 HV5bجW,"^1yAkr="lHK!Gx!-3scWJ)BC~8졠8A˺Jo6<&czfW= ~{w09){nC9;s$<;m5bBs6MuMuGz^JʫL ZKȒSθw=?~l(:$ti>~Guw.q0 0JHt'\a樌2fk3H;Xmpӌψ)zj|H`ߙX0Q۫-:8>@ D,(S iPZm\^]m`s!qxo_y5q_SHv=20 F"0ri= ]gDu )t$Dh#q= nms/`sr hHJX`r=:'jôgQj@N@5c,q@`F78v!-2"G{+g#BUPK4?ɱK]Qę,J^L I  m>!vÛoxWړsN'(k$&.탇st-<"k%e%pDO#x?2 F.EĊ+ ^ E~T!YnW~cK)(6]Zi1D. ^4m(j1!1qalCMPhg)ufqko(,c^|v7r^,MKOq@_d)RQ>[z#kxB>}~GQlJC%y;u\ayLZ8MKߊ,:iׇ=yD<\sDww辳wûDqtxJNR_LXʦsЗE06}}?g3^]NȌ\#TJiq=f%?M(:#q{$ O6op=\cϸ$^7fFF3|%|LJx9ܿ''X"el\DE= A#琥Vڴ5`:5RWk+l[#ey}yrX=޻CX"ޑY6x6!qgfI|9Cb$(m 9zG?+I/8R |Ơ_wQ\8 63,7q̗SffDjx*I "B(yjBHR=b< HIL )8GZFkEł Ӕ 3h!sNx KB_ !F$>߿~57L83B[abV "58a~Zs.l]'-5ZsЊx}PKBJh)*&d?6#5>㥛%^bH >k؜Çx㍯z|7B$9nYK2?!UB (=Rٽ##r$Jˉs_@NbH!1;1:k tDfE橐ZX,&PRr 8A^yȼl qİ#LjmpuyI{v;9}`"HRV nCz=q@c,Q): hNNpyGyPRbgl68~Ý3ZnK1D&EδB!^(4ȢZӌ",$WZC Y%clQkW3Y4 R *Tc9ûV\HL5L\,^9{xM7 XhxtF6Xz_?O3*RZhhǴ%"2 fiutZ;Z)ĔMZC̐Bq=%F8mhk`dǽK`QgxQ UtF}45jS*NeIq@#蹌H!"p޺6!*wa-Qt6(^؜lӶ-JQ1:4,HRb!e>@?,TJSεZ`lS LV ޽)%...[ob^^qFڬͼy+98pDhlbB=1bVKnjZ1P;{<97 c%kfbigGSL 09Fbbͤ#jAςn|HDtc?)25ߏ- )uo%;KD촼2~]>%&n \wX|t?>?Eh*#N#(5'}} }}w{0?_^Aq=-OaS>ىgz~&N% Rl w\kx/+!]0~D=~Y'So\M;bX~t=S"gb•';շ|޷n^9,#ӮqO{_1|/|Z<|kYj7M;f,73:%5)E%BMPL*h#cQuTQS7RVrܐP"?ASÚZ>0v:{S)rXic*H9.4&4(IT1D-( 7x> 4L7x1X+↰ؖ{/ޅmi.TR듺foa'dP.İ6c2;$*'hLLShnj|^3 `Dς=hڞ%7 5a[ 1cʸ{֧gRnlN1ဦmș5c| IDATvW[\\ @CRRTQhnݪG6軞޴UXy<=X"hi">5벟m0 Lན$h͔^|>~Kԍ \,Vc'g~$'#ǥU-745qB]Dv( ͗W)>FXc?3WMa' g=22#S8`1ڶAX''DnhZ E6L-ʵ'ֆqߠ lc ,1FsWr/91Rנ6^ 1ܲ,j@jL.߲ΦAk+27 @:JYUDݡ1rEk )ZՆ "-)I3Ab`4{7hr#ߓGڗIyެ!-|+$16ɦm+euD=}Jڿ BّihOWO !$8i&{M%[.UETR" @{,Uh37K Bk:ˑ`Z׽O8ssyHRJ؆t][iyPBMBr,wuΡZ4WR"D_j.q1z_MîlmR[x!1>FgUt qI|!]۴J2A)&6?9:Xõ y/>EpBqqΘ Z&XkZb4WA(I_sgsf:E^Qi)"yw"ÝOijcM!1%VJKj;3n-ujža8T 6:nl༔iya 7~hTa<(rƼt,RWAѹXPĨ+mqm`9M $i=+|К䆾ħ/Tld8g1#Nt~hGWNNGx?i:AMg2d՝Pww4"`܏r_5yJa ADak Jn:Olg/l@/^|?;|78ݾBȎra_R~~ϞQGZj7.~5.fi.#(!UKΉRYlL:2rQqΦUj2.5"%YtÈ{O:?=\_b؍Ȋuo;{FQ FҞĢ-y1%L$k+J(ƈgWBazW{xuAN֊M9(>),J 8{/Xi41|.Q].J=Hx#RdPsymeEN F?$q Rw#e&f!ƀaC^~C4=\]W_( }{}eR B2AH5V+fY#U 7dkb7j3"gyZwW:Y)Z~_L Z)ۊ`3ȩC[ :aI7am3AnȋJL4H"CMN"ڄҟ J|?cHjy8xr KOXP@6>KYҺ@Uqqy=3@ٞOE t)a[fۃ=8}x .f&{O>69]>w?iQR|A c8Nx9> h0䌐ri E\E@H0R0\UC/˲x+"F;B]74sFyЮk]$$$@]4r^Z:㊯Yȅy"+YdFf1^!S׶KSfUkۻf k229$X$sXa]ǀgx%.8'CĖzZsUbNd- 1QRה="1iƼQcDFь!fR 1nW/_4xϐ!,pt:!l)6#864tPL+R,smcY,3qJ#DVOu]qpBcJn/݃*_ LH)RHL0(D<&Q1T;k,9Msw/Eիܫh1R1M~rd*Ik-dLX^ӷ JƼ,xhJ`eW1%hpSDvha BL4`nĤ|a[Vlm^ϫǺ.";,;vze^d8-=ƞt:aG8Xa iuVIpC7xF̭uAV%ϿϟnY(xbHp_?+_}5_]1|V%m~pUzy#Fu!Q.* VI҅ F3"|)xNv8߷j0%1bCiY;\>]%'>yq:8cJP۲|W~)}躭rS[.X&uH9F]63(,|icHϱꧤ ߶ҙ9%G{'juz"B2="QFx?QZL Hi:u$$wRh`%ҭr]6(6X77z`܏_{DS[ * u[ 6l 0O3JXڰe %Fdkk0T(9W2f['+F*(vi9!o%N4ܲF00I#P^FPjk.C9g}KDPr;XQd}TQ4:HI( Zc$x-W8}$8ѵН4ZrM*'A) }hT2&B[|߸X8XbdBxUC`g2dBڌ8*`{-%ԎKS~pMq]OZuZ\ۻV?j&}hJ1a5T{Rkb!~$m(ԇV V_ZQL4&}O|;}9k5WH{%U;rUr޵u8OF(вUFY#gw̜!v .̽\[0DVRr|Yk[^p?+{` ԇLj벒 e- 7fn&Zc 7Zf91.Mgy[M #>zKv?O~.KAH7Fޛ誸 &<}'~~c!aBg P|=&yu}]+)7 l }O_n~w>z=ȭ.g}O .Jaw0OizR z a[=!b^`Yɭ=u>UqƇB8ׄ.({cR?rjRui71[\#&jK}Cd(O]K?qR)]~Y5-SV:OVkIY|+ӂ>8(Z -J8tWDxk,5FHkz$dbtFu\7-3yq78+nnp2v DZܺx 9hPzdd05k1ljp9# 1&9` xSҳ$(1Xۻv6t^96Sq1 !AD0E^}q>kI &UMηt1qq(}=t]{I4rQRFhgjgn a[h44IL9aSᱠMqH3TEaˁӷ$,˂m-"$ 5˶m.:j/}*c.Dk,BH" V2Gij27$nܒKKDm2!꾜P$! qtAnCڙV s"/һ`-;۪˟I!(j&;Rb_6FcCL_mB)aL[T$d%%%C7 Ν V:(v՞:Tt ZJĽ`ĥkS"5Isd"b"j4Ԥ=_5`#bh}g=EڅWSen$Cum֙(G*j`)yΩJO##SPJpN4Y/CM91X7w"D {Sr@ CI ><{ i!# ϟ?' $Q7# o_ [o_gWŗ_,(Í:T:<&KCbл9'KB,", g2ϥ-I"RHXiGgo,V2bVfİf՗?O?AHXü7~gLwpiѴoΉu0RM)s- IvH|c |6UsL-3+b0{7Z2@s.j_kҔhY7GeYGn'MhBaJ4xq6_դ5Z,em miQ)ApO%C 8Dq|so"Z[Xoe"g=!jWd#\dϵft÷|O~ q@N( LCtXm g2P$V{N#gZ<Ҵଃ5<e,R8l AgD1F̽ZٹdH!9e296s]W9M3Sa[ykܕ5WSP(M^^ P$]7( 8uCvuϨPh='dUG4MFD358N8N o IDAT*re0PRT?o20JҚ|wOlL +JT#̽!E1y%ٓr6촶|*J .upw:H2溜kj 4[ y)zǻ;0 y+kbTrQ0FTl;ի5^ =B81 #bbׯ_aqWCrJ\ZBQKDkE3RVL ^V!8{C@D.K}d~kYF$WH98 %yLj17ph闡?J#n?|'/Є uyԻO/UTB֧\ ](Oǿ@\}_/.7Cxû\$GԻ5?q2~e2ur_o.xJTz;}18`RG>?clv:#밧 BN +Ҍ$OY.ޗCΓ *o{c_.Orki]ފ xMS7}tu|wcsǔ 6"aVFgrcYWG;Dq]u,iر༧\6kwۈ> k1=l4LRJLɀeۋK\TEjǔn DZxs9w"ﻮa*h'&c#N=M9Z$x9ܡGse2Y̡^qID()Ź,i+ 8x]d͎[ R FS1EA:֑s"jR!o&.l-{e3:GFj.[ļqz# t[DC@u?H<6$Q`Eiˎ=yosPZT$tStMaGwM\8 0]߇$dNIQ> 8 acO'ncqE$Zyl[9]PGg31ETv}3R`aha|t{hXmSDykwaL)c&gׂgw3b$0v[k+B8|/f WүyD#V[ؘ$^v!p^~ c4+M[ذn4[0NMMqR;O}I9VAD9'sMu H) %a]Êq amkSѬ뺳AR0(;gkN04xtöa'V=upwwq0Ghe՝bhJsS?  ;t[y((, 䔲`,5(Luv8M\c#ꪥj%L4) <ѢV렍ikT ۆa7\gDpݮE昤갇%g|C`t;Ͽ E)ۂ~c ߾z-.5ORD{_ī#ָS{_g}"" < *x0^CkbF)z_OjTzADϥ୐[GwBK*z)_ i) nlp4(R.3I +R`Ea7?/aQnn^a9" TIpaVonanICBt:bZ'IYsMu<sBBA,V4O\W +hcQq= qSn4H)ktE*B@jB upN1$DT< 4{*f& )gKxs!82S1d$1JԪ#u]bII)aO.hĮgy]e %/WPBA"G#OD[s b bVb3?Aw]%];7da66L7jh]ݒz8I';OL5z"02?b7*2>K]$w~PB{k~=wb?$xx![?{>=?`*i?c[%B(2:oIx?V/['xDy2IcPoz*?$O垇C\YDĚ̬ahS><Kx?uS Hx[g)%ɭ⫯adlClՑlBR'밭 Qm]ތdsθi#}^ zliaQa۠0 臾]+Y1B7cY0{ьu.lk`dC̡u?m27cM8Mc@!%_J1  rK^C5rU"TZcf-H}:`ٽ *DP;s $WDmQ*53[]84u[Qr|&#i!]Ξ;jse۶Etc4J ŀRm`gEn}WAɂ/y۶tN̕t`ŘRSκQf?RKi0#bܠiN:ֆCZ !Fw/Ih`4XDohuCk1m{~PN>cMë8ShTp]TTQ@8K_rH]F9'h iƺnwM_BBC~ʚn)kTnbٺg"D CL!Dt]){eUQ{Ę[b% ح)t"(ϜrM̶mmzeƶ#Ø,ZwSϒpd/{\u8 K秵n?Z'8TSJ*F#U|}!:I悻;"'iC0%d(EĀk{I5SZR cLM4RI$^ `5BF{,)PO?nYi.ʠJjI@!'V?H׭5H! P%o"j8CLkrX1zuhJFPp5w{u`5ЏZ|hN[ו';s4HS6[`s'Fе&^Zd}a(&+CLtuڇ !%^ ޮa |DzM}-d1"σe] )Dl[Piem}5iC۶.,b?;;OCJF.L+J3yG? ff*uV,˂iZm[ͰxpbfK2BnKVTՊ;-j h %/'C?ģ W.>ք% Zwyޚt'\'Yzrʸ=p8Ͼ@j),,C&bS?yqJZDI+Ji ]Yo+pck"eAx0/tT$aS`Lz{gJ]:cCqZ<@T΂44`ݘ8DZCXnvam}M7GLBMKhx8\]ELA[A ID;ίDD,3".JlbGLu-驔 yFDK"w%?'d@wj46P"}K|G 2,֠M%%x:"_ P:`]]4j v/r"rI]]5C޸@jJTc)wE$s9RU'ϵ>kXSGŠu[} P]|砭4K1G,|,qL aMY\]_zÞ G x8|3jHG\"zrSL+'mEʥeYۖU0bZ` RiKu,ƴ]T&d=jTVIo9pB 9<~Jik,b^oXcQMP AYwG(/ۂgϟs2ӼCsG,Qۼ:(a[`#BL$7lDZA(E [}N@8MbGa>eY0 Vc K5׈ 75Ӊ4X`YI'} 驒tX9׃,>nLzGqI)3.2'n;t# %I:^gY]"bd}i4VZ;uƢw0w=!)-"6 l=a!9qCͬAs{U[JU[(aم9Dح |N<:poS/Hke]p5^F ӍX5&Γ,Wr~gČkNښ [ E3RN$TQlv;7o~[@.]urW]%e_/z50N!P jQ-LkzZɖek:7!>`|6:(:׵֘HuhtR*޳ZSrfoVzVɄa0p/m6uYh.~K2j_WU^@Mȵ08!ZR3txa*Yݓ>?VyQz3:K?QOMPXCǿ?9 M΅TnE=qEB;l/pYJ,[D4w wSns\ȅ#]`?* \ʓJ)o埳?:i[/W,@I 7Ù |xNyxQv-G՞oq<:yʙfj_횣$QzI]q&O>yဘ3d8m엑nnmF9/=b x}s? F*[LwP4πV臝 Ҳe'i[Ægϰ8H*cmPp(H"_72Ѹc"( tcύ2/mn-ū(UV@ 1(g*EAcVfL+ IDATm'<]}dӋY!eЋ=RY."2Q8]Æ~hڔꐗ3=(_!Ho9a2]:S%}0/ r&y~?-`"6IWtqXK_wZ/g>Cu(Nt} RKړBKsQ j-KhBeS1.4h9U kp:Mϣ[eMTڡ135҃QX;j[-ZsE̤fҫy"SŻNQLԾ&SJKW7M'ҁݶ]7JB1B<<8\D).=^ /_͝[;HIJ{{ZR0$Ip70t.U?A78!;Mq^C^8aTQB@ZRLz?8P}-Dã,LF4[#?Ͼ(r}(,(Q(T|nl-bUe#x](7 $ɧTb$Aq}aadRI6>J -mqKܰ{~8b]68^ $ߡ1tK`8-0_'p8Jj8g sȉIwk;c+nnn[zP+bMe6aÀ5lF֨4.uІOU$鞋~Ç!{F-KA㤾yJQg[)oyo-:wyy'Ri 8Q= EϽEwoON~o}ߜ,|p&@3ai:!#,E m?Tr;o6I3w}ׯ_!m^L31cw`mu+r%JH'@$Bx7c/סt$RJmGDF+nnoqw<kvoa=iI.-%XMߞCNn*u;ԫ򟹟?~~~4ɗݷr8pn43SaTWˣT@W Oux?O?Y_곿G}$y뼅1O- J)طCkka*r ۜR¾L8KJ8J QR&;ƁQ]&Xnm#u!_,ST%x瘈FJ! 5*^u\g9YtM-RI61 -]aLKTd8}D!1ad:tg)vZ-܀hHULM6v?8?CZ+Qx3"b.6#DI .K̶7)0O(naB(4&rƔA{lc m9%25 gusx>/B9ۑumOЖ{{ JeFk–Ri2R4"5_ޟIKHI2Ւn~Ս*y>T&: ߛ*4:!)d6A9 nn9ץ>c-'kZbA){&iJ]z9)}CE78,F0J "t3HїZդ[=b6XˤkFJt{o{E6k|TSf'6aǺ08 Z1|Av䝵Y.ۗr @SPHq0H=aB0ϓ{1L HbLIRht[v@]+,+$tGa$!)Ezw(˽Ϧtd*e]PKx#x] jwO-1wG]FӌiRH&~mIa2 ^kb rM#i<}*PZa&E<%RkS6 96JwA{6B;@i!s[5o-}+WJEΐ㏯ 9=(nvU.z-bR ˲ ֔x߆lTwx-EfPjzqp9#NwwwČ߽?kAj0H="Msр61bvps{_W0FpZ!rLS U֧V^jݚy۞Ԃat?g@g뗿Ջ}~(DdK<{L)D;>Nx1x9J=Qn0J:̭ 8cƑ4)3cM餖eYK1Qm+#*&/>_?tnd&I8c&.бkOu˰֛1Gh*7Llkٳ>M3E԰Ci%Eh:^?jO8#΍Q]O1\Sylrh4Ld|>nJM@E؊s.CMSEL=E#(ftii}nǡ']KyVIͶ6`B샿{&YUІx(ļV&7ؕߍd=ei)1f,qA6B ҳo{_s+8tlBwk=Jg}\˽Nz^TFI})Fbcm֚=H"4Mw ϗZ?r&RT+ F;;yBƳ }_- Tc^E%ﭖ~@̗{%i#.]S IDAT#ޣdn219gqp#*6dn"Hۺ`&ӈ}p9;hvSNu(>٘^}S<n1ZeYe%d{\iaW|^1x 5eA0=fBKzJEoQDy1#rzn+a>y)a>PdU NLcĪ*k z7PkXOw,||`s(&Az(ko=iiq{x8ͻwb-b61yh(Zan_ǃ< ҋW>Z٭|}ƸRٷ%\ /߳8\2SD@HJiHF%&V$(R B*؅RAF|8ow'pϞcFĘq`ǑF?}IaqD̙{Zk+onPxڷ4޿U֩,1H;B͹^s!FYo&-R5qQj}͏?h\ {1DU5r՛4C^QB`1ts%< { am(Zfu!X ꮬ6`}r8iXx]֚)WL "yygp_R7ʜsZie6Ѩ80PFHQWՂ4Y+8Q\FB>c`sZ8֊&ƧHp묓/RVBb i|='}{ΛAw'>GO|_@Wz>[~Suxϋ_zs?]/{A}¿TW&O=ፇ o|^-%%? d:% ZW}K-Ř}(].sW>GU;GZ?Ŀ/8y}\˪n ^tƯ/_d`)8YkR)^,EQ|p-^fc,׺R+8\mr\b:[Rƃ 9y18/gR+S=ƆMǣP7)i Եb]W9kqIc]qLp!xb 9,t ȴE]ZyS88q;qВK2J<-rT*Z+I2K-H4@)-IN-S;e8OL킩y[CPጓ!dq9"D)Ѧb]CA;\Ku2 y.,Z:Ji,Z/O 'PbվP+kGaF"1a6RUQLms`ϟG KקNI0ENLDq`Ą %CAM3(UP!_n|БIy1!eob&Oۣ}M%R7a֥4ӂkCɾTgc.uC}n[A,F6{^Zs7hk4;ُ؆ri !@3ɺ8G6ƢԌqb5L={E4l}F #i&u׶t;  bk ~ir9}" j,^= nGFRv&sSӉ%Q_(!hn+a^{1JTuabp< $3qVIH=W9SxE<=) Ϧ>^v*3a-YĒEH-YN f>Wy9gBBYeY6(Ŏu_3)349V3;Z, <{Lyy8Žma4-DLPZGh 9ZAݳ[8I:zYҥz㝜!50FIu?$)~`j)SKsT+{/pbK}!] msƾݼNUӧ `6ُa}F$c YiI·$qC۷j)4G^4|o+RnV cHɞյuԃh 멵iP&Tι H 4RFK5׶}1xǛ xNisCt:# x!y]R7Hgq!t6:l*4#F]FqMw5")~'k}R}Vs9eC95Bh5mY@~JĐzd_QԺ<gU~O~Ss~K} ^ǼoSׇa(x Ou>ZKV}B~몟n2v uW7$gN>!_'?Y|O:m_??N08 ş[=uu7~\}\H2!PZa;U? +<>DG7V}t3T}$z?D~3E]>RS[^ ûVJv?g(׫Hgo!13[3F1q%'ƒoV!oL].h@2]X%E<@Ο9a903ѽחIɀZ2 oe6LeRa1ĈiBM=X*.$FO'INAs LNuWbh?'r9՞!F5 F3$Ӓ-]d8c5tI۷4r ~{;!Hg.Ž&D4r;@ zNL"Ok5'hD'#-;c+& gN(k)=oe0t: 7ue^ݶ~pȁq͎AEYLw3@i}AkI@ #gIK^KF]2naSde%"?QERs:F:SLW$]DF7H4|0gR/kSim =Ib.Y "gT(Ⱦ!vu:MCk}o|>wꇵN3~XCxFJI0~m_W-Z*3؋ikxJT4R8}aR:09rZںٳwww}ST)-`]w 5L\4p8Qk &֘PtJ1|:yߟQ%b/޷+H*C}nd{7m^#0cD?x=xq{sч5-0AU&arMrN0H:Èiᬡ PZ4ˉC}}K)}ϗ0$6 U 眬"T1W 'RnnJ^)}L钐2Ajc'ψAw)QUb"B?gbR!J=c=/p9b;;~^Og$Ioǝ=Ls .ZX7{{}Q:|X"ru`H ){_0Oȵb6XF{4/^o^S?7uH gxP AFV$a)?8U0xJr~̶3gBJjouuNj_<0 sSsj5QUB- Ӯm+KX-%c<_7 _sEI'bgr鼠V`]7&0 ߼fҭL#r%7y=@i#y]o⎑4AXKAEd\+|p sF)7#k4M{hG߱!jĭ|.KЭޮη@Lʀ$m4SЖgkBH0gN,ESZ˞"Rɰ:=$q{s )_ ( Z0L+/im]՜"Q(hk(:j;8"(QJջxhmcS 2ϗwP, jYiPZ`,= `F eN;; 4DY%n';LH.el A~Ilػ^gx=bHڔqTx #n5e&X)K)yN8Y*5?:(ebBW9WC+YcIa){O q;ax$)M[ZQ\ v ؛nؤS@Ej=_-K=%y{KjS@Bo:Oϰn+ou@ Y#K_-t}=̰Ixs݉dTf:c5yV)P:D6#pNgǛgLeC\bƉRHƐRZPᴜ?Y{u9&9w\|Ku;W~zq_u[Y97xA[A8?1F^KPwJ]﬩.29۹&,)v"LcDя |t8__I%9P`k2oD/I'~_Oz5חw&? ~Jt7)wmzzVNXyڃ _OCzxYПUo@)c ѠoT7,Yb83\!w;x ߼|p䆽WIa.@S(Q!逋HI: hebj.%+:ްs=$1B)bpq3riܔ(C1xߚ.ǐ%T'HJ'aJ y! =)'I%8b`F΋j_CVeRRE-1f\)%1| cN7&8nqnNC(A\x2Un&+%G5CΥQ|^zMZd'F֍'fT&I°gR7 CԽA Z<JΒ@Hbh}Z+,y霄`+T/D"zI%Z)"H0Ƞ `܎)+) K")6xbmaaH&LC~֖z.Xv!`߹?\U].BHruhY!|$mE*&&N8M RWAQhe]`􍖚[6z3 bҡMSþDyW?d@u])0cOxw\ 8b>ZTA3b vWbNcLmqZk|7T-g`"*ޒeB4`QKA L:[Ij{}z3q}Ւ7AhJUL]ab&5cC+#=`[Whh V'3 H9c4Si;P)SQI N:8Ӹ)X{9'jTSs|="e[|./R7$5V|!f֓\: XH&E.hEcT{&'<0 nGT/ c<=t QHp5AN^an!da׆ts:Ar̃I#5~xL o^Ʋ 37yVh-C)w)c;noox43Mn-o%].' IDAT+?B!5&s.tׯ/.vP44S\HNIQ غn}a]Y tZ4ΔbH9u"K{tCrFNzT˚"+~rN3e9 5cZH>Y ļNu-PիPpNfF2k5@ KV]ħ5/IXRI/OŪ_IK_4*ia޻4t}RZ?JkKL Ժz$'>~b"GvxOr9_ouq5t_(s}U`=}:O|/~~:})KZA6r\)ђ^VX\K8^7+1uiأ:֋K"ot-!"/_·|G`':DXmzy쾮 Ѷ ~9ޯsF ~!uZI9I۶I"M Ư3 #SHѱA+#˚:}mm845u[N=o^! 5:z' [`vL+ڠ8jܫqѓ-6hFg]V uv\;KGp= ÀaeM". !/לS*)]Rd4Od=u\;'&Ě G%R[BvGVhxjN'Yᬵa JwsM.A ~}k 33n)N.B8=6J.҉zsQ*$8j,ǯw^y&AZW@UZ9GԲ,X3-*2T9a])^N3E90 1b^o!{i Z!U Ŭ{b܃`@)Vke2RXEPNԒR`Ӷ{eE^B 7# 8"4d(`9;m@^Α4VSaJr^Z 1_h(Fj{Q0;~@1J0 ZZD){ M0a1H~$w{{Lp1~H7XJ0Y ЌZPsFLsEE4 7{zkCM,sV&]KHPq<18,^cE:c4V6F;ay˙ׯ4aoUAF680悘 v1OD#@,5ό&VCLV3XLTjZKJr\ 1Tbڐrҙ"ܩJD:L@H?r?n 43 ٦ <յ[dp#2U0o&PŶXׅ\y{/s8Ɠj"oyTΓmy0{]8O]?gz-UWdHZ)'=E~ꮏW*]?l{_;t5ûg7yt]dJ"i:Ugݽ÷}g0X/\A% ׶TV4Wqk$Î(B5$.Xͩ #bJ93MB7qCN0̹p #'k#p]2bbJU ѼED;=t:y5g]Ew9(z-ea"Orf $ <儰G4ScO$K.s8z9 w&f١$m_>}YYE ϊ -˺r8O"\K_}Y$ms3;ݟ/wo@RDVR YD\*P¤M qLY9,JJ4hӱZY&%.`^Q jCw=PkžS9͕="ze/w-x44x5$߳`ڪT!4?;vKa"U"$$R)F1J W-^2>3O@mWBlΩNιTOrmsa]58~>Q~DCqe$Qua kAA]Dn@ 1&1 P`Ւn6L1`az@H^!b5sO4j@xX#)k݄"HA=nޱL4HQlrkA{/R8YqOtch먳1f{58,q0v u1"'>AR)e]p>qڎUZ tR9(/h{q%wT{3` [aCRbzD>ϟu%Q o$kKj"K)s^gtR;#֕"sVņ=% Je-Z9x užǎB HZeF/cgpQLCS1oh`E({iznC7 V/+4wBnT g14*L;$TP`ºHY>9 y!C"<778Oض8o +hAoWDIy=SL{]Qzviĺmf;803T$ 1©X9%t:*R nn+ )Qq7o".]18I,4ZT _GԢdu˙ඵB])kVJt!H]Uix*Gm!ؖ $vOwG9FN+Nө9tX?7q<KaBa}c ¬*B;3=`Gң,]̎Z֨sS ط 5^By;R27?p<#u{)C_Ak31كtrۚ~3w#g*V= 6 _vzϾݘs`DzrQżs6ҋ^/wV1v1`;A ch +OݿL5?])yMO>՜~uq;WGU{w`_*]NxOȋ0s~ux7USx*ݷ꽗ׯWFV1a5 [/~>ФIgYg[WYkׅ T+NoPoSZ>*g(!s㺋Yk _/,ˀ;vض?ars8u UO-XNg]tAAĞ ă%饴0Q%׆aF߾Ykyb0`]WKj᧼ {(p9ۛrH_s3,B ^E1n600w1[jyעFL4{wO,<| ؉ ';SXΙێ"&Aa0x[$eYP1/a穧gO=^vmA U~ vPNn`ۃL/Dж޵BϺ*T"K1FRtk !ZJV7J Rk7Das;gC¸lh$"KiԈ}ȽoK&!Ee1`{Okt -M!=eTeC~C1`Joir\Zo XҮ_;)jWm^ zJbBz@HL6"n +TťII!hk†d$ ӽ Tvk>ka@g\k(E8N0l$ aeUjL9gZu)J&9 Lc4F<X/_ߝrn:|IJkf~=~V9 a"kh0ߣW7(Ɣ\Дs-)F2FShJje4yyd(F2Ίi[elӮ_I)NޛHY~ֻGRŵ[[az0Ѓ<\ҋ $<<zd%nͮ{dDVdeVnDFvߑ4>_oЌ \;FQzRi-f-果iw=k FbҚ&%gIqRu9EǵB5J㭱m7FSPmj'lo xétO@ >q~e ?KIJ}JIF_r>mײz$D~IK9\=>#~T߻û{&OӕJݾE/7}qkb7~vu?'|{_/vז*8O$/%j:Vg!NMxB;Kҵ&.?\J~,߉4o~G?p='ca߯RE'Gj$e06;pb8'6||U+=KU0SbWE&oQ 49]Wy LN\ٹ2%iq[7{Z|u^VXWnZ:&ke.D1B"gN)rj5R̘gv8A8LhafkC 9$YՍ(R3ݫ[Ή$*Lc' yELVre;l vl/+J!j"|:V0 fҵ]1DASKE)nuèAKBhŁkL@z EM+؅<9e9֑YPbnfZ齉w8t dP`xX&:-cn$q ˼+>7ѷjZ~8@J IDSXװ `b!\EkO3ֶ  ˕PJ<8ݟ0(ZwTcfXuyu] ZD"]P{iw=ךbjdasA)DYO)>[|''Tlx:߷=*FD@p<x{{m[1/35eWb=,?)#q֡{8e?*޸M%'nTnFYt(^/!$W8L7Yb- tU%e^,B%"H"IϩyKLה)I˺b]QZcg'Γ  {z 9g3QVglvutSZUP,0bj"1p7[$ݬ4%1 vRPpG1O1Y-Z}B'ʺ x 5Ќ 3?/Kǫ#Ea/*P]MHj(y~((Wt_WXɒ9Dv~~ԺoO QCuyn) IҚkH9]ʠ[m˵< rJk A*Y;1C5igȋxcvbrë6Ԟ]xs#3 )S?ⷿ-#:Yi>ou[Y"WKj[ }TRM2/$Yyzux߁' 0hS4xF>ddockN'G1 ]#kCɵtg3D'6\qnB.Zdic9U`TJD8l~뷈Y(}]˲Q[f* 4~!Ƙ^vR VeZ OH<ރX={ ftV}ełg+8\ɰףIC]ZW+O$>z}R\JIx?4Nk wa`~˿tj1z|59@*ZC}4 qO赟.5y/@Q{zK}uqW Oya֞n}>~Eu)_azSߴ`Ij&RZ5UAޡLBm }ߖMHguׂ*!}T B>֗%`M]<~Q׏Gxjûq[کJKQr=x-Ox5k(eVDbX%WPͅ*.,%YE^0c%K9NXCrQɠ: YYJqͱHTTT^tl3ݧ;dHWŹ:t`zvmmC#o*hpag^{EIDUwJRh-aG - e>&GXhcSJh% \N+r)X׭ R-hNʼn^ D# c5BL8&64Oҷγ3~b$joW.U-h4McֵAEŒ՞d%X{+Inhc.ĊW$@u%%KfsPE-19Lico흮)Kƺ"+nPh 9qmd" &tSKLBZRD29 U0rH19޺ֹK'݈`bjήut>O_lI*~7Fba_hZ]Iޣ S[1F'")-5ҁ6"kh)Qj@5>콃3n}"2"n^dAjtc4umi/dIoD]#Zwz '7#_e5sX~L'F!N権o%8NM du WIzWak Xg|-b=eakk[Nh9]7Z\7mbmkpˊ#:Yh6Lbb齿g+r)Q޾ TBZeYLߟ;w# ֡lV4XyA4r,RJs绶2WZb I9a-׻ϙkȺmȦ:C.FIDihmq:OE*(VV4iM{OCqW[*t:s0<\דJ!mD4J)ܽ'$ݒ4LZT^.}p$D"Ri) 6Y+Lӄ<b)t]-F1rtIy  m* ?PW7Х`&,1@[TonooqA[} {b`U&եav/>Up**1[&iPFTcajQ*iǕyGdPX|tB35"[_x1}5lĿ[:ܹF 1y]k4TUޫ1ŋ?c%eNgR{ } P$)%|۷o0 9C;K>F)!qq8ps /h+B)jH5{TP%C[ȳ> z7h-&wu*@ ʮefy  n$-g4|bBa8;6R[0;`g1֭>('X}jF*7ZFSIb po~#~ /)\ٿmnnnɻyFA4n?G,b*BJbk ^79Eٟr/B w*t]/o0v<+q8I+yFsBN]#n]:젴nJg;y\;1:\3~.xTZv2 JAQ~/ˌY , "LGIA ,')nb-`z?ysкu=~1P1FARZ|ixr@풦|dMs?\`iC{/3R벻گS뫤)Pߧ ]J=zT5\T7~筓u<׫lz<莾x>=/~>4nqIz;9ޥ\gU <0%; SC.r!^_`~Fbū Ͻ;#?r%{Gex^vzθ ˭g|_|nyyiEv}مGs/߿uY+b3ӵ!s]ug o)'䢤f#ӚpEX06zIŚɍUݷ˺`^VÁ\I{ #;d`ۅ%uR3eaDjGu\?$iVHǗV%.(0,&xŁ̎(̶^ .ߑeFpKNu5[]RDˠm&-Ey9ЗR ٌ,ˌ$xZS,\:yiS))M X3)U1NЛDPmq!yWk8皨U"AZ>&Iwý"KEҲK7S M ^P}WxjSI]3yedd@\S |803gmG#%àiQ;+.di,{0WM evf1r?RJ1h^ 7c,\U%-՞$(2/{m\"jW=1Fx1$c8T\7% MTH ۺ3\MH4 )#f ޾{˵aen=wAk/l>) ;EVnG@)L3 J 0J*!^n%|{I'5H5,aۘɭC0bak7)Fgxl)=87Ocm#n_`p`2_%^|#uƻ7? ǡȦn: 6)FEYȭ+א3Bf'"e%`F׹]yI ~xo͊`1JKM6 x. aBESOm2RoE3^u ϝ}G9H&uźpm3{+u ts*,r;y^Y;#54kEjdnS Y(i1Fqtܑ9Vc u%~)1, 0f<P-BKX׀~XPϗ _RĴ=4$؏nMh]\C\@iŹ5XƴLXIĪ0#+m<_;ߵm>8oH<wF[.9FJ%3>Zx[jf_AK/"PL=GYg^3װ*iJ9^wK;Cs% L -Z3扨x&hfxkŗ1v3%ۓTfzNYKzX Y"'!a>_NʰӟGU)S==X>]{) i:/~*@u.].{ֵu{6ve"*PV)|b9'XHt?$RʇfQꞫ=m!N 6˶vV=|<>yN})4 Ǻ#G#'oU\iJխ{--.xKxR ޼}2/>A%ڬ.a9ĭuQѰR6l) Gܝ e^J_009*+DiyPࡣ ZG$֟5OL]/wI3uoxDٍ,E( =T!B|Ob3]Ed^T]4紧0nut6]V#b_hUҒ(}(C1L m+i0tgڴJ)xqulmcز,L;8 ]\+5L`r*YbØ"i0=ӊ) bц}ʖtcZ0׎NET+vaM1 qT(bذ,ˎgr#HhQ,nۆ\nPFa[2Юh(p!m*])v1fXVk77dža!znͺlEg B@٘ANVк牋m,VDJ2VRqk[i$L19(9.FbPhňzVڴ0oWq4M7tL> `]{4;nMaceVUnWkZքT z3[")#io, ~cY780٫ .ip1cWZ'Dq>yдPjAӸy5Q}BYqOD/0':0O D]gp9&Rn݋:'> u$k]?x~MU t~(>'hIQW~g~X{0_b.?ׄ] oOէ^v]vc9S'&83-KyDۧ'Ǹg,D3'V,) 5-rU+Ag^6g8?)S 朎)!:<{b`H !n0/7eRzmCHyOKa0úXYD*QS4Z z3q, 4e4X$VÛf Z]+F*(.wuc)/ˊC[qI5q$Ejz ZK1OE"_"h!eYN[#4)FYWMl^۶1piI[ꢢΕ2(Obb0Zk*d'ܷs!5miP5<yM+Jy8u S^5?²w-͛RU6|b✩ !bTZӜi_ L3 \;M&4QƮ^8T Ni\#LoXȾdȽôa/Zڴ ZA~ukP0M3`u\tc[&٣[hq^ U<~cYNZXM~U jIj* $mY&h+ gyفZ5$g5F*x<9h.b+\0#l TP:qff؊ "!K׹"w%hی$Ta80yY6Cp&\S{.9!g:$ k_IZлڠGǿ-}JA=idL)"z ԵGLJZQRe@zl늜)ZWÔF|90J]H"HMQo=$}=!Vu`,©u:3mc?Mp╶I)( Y%}UA9( %"}_t/!;m-ynN۶}ŀ{T[y`8NA |ny&V 2ZCPJa `0є" 4]jD:aˌ{% vJWΞln5l+Z#:RKW]Q 11\k0a;${+~onkx?qFl06: 'FT(҄pssb^7l1g?9a|?"( VR?06D_cH ǵvOחԧц2-wM^&JN',žWbU ]c{~ " *'Fi|ͷXCa䔰 ޼ b3z+Qqh67)aFۊ!,&-DߤY?+]qjmWr+=Q˂(0F C/t`8O`HRI_SIB <m_ےrт/WeܶmAXy :*:?FUAbmM~h#1 EH] 3ζG??L~OC`GUz,o&.K O_O饻zE__ !$L'o~׿>O}+ ?>^@-G׉넷{.Z7pLoTTS"S}ݏ.;w'ҨF“7X4!/ Z,vgXn*^8|0D txz':wQA]ozR5b&/nw8c<kl1 n0`h U ^ڋ\jb뉒3:evLc]t]/"aEaКj^΂Βe7;v%VEDIUG|˺5!\ڮ" vɪ&b!%uZSsOϑ>v% }:/WOh&(Ҳo:@cN*6p?QޝTTA:]{}D4Jvj"xM+UIh |noneM}&:ndH!Rkr/l{A0ɩa4MM^:s|pH)b]7x=u:Ck^2%:{/iIW8@I:K\ύn㱙_5$o1/L# f _[i($c SJօbj=kMkRQG+u".U``J)oA+#]u&^%bk4hcO0) ] ҵ_igІe;tZ#@E҇as7EqYexwoC?á2̟˗1/3a u5\ ى kKy:| [0t|GH⫬oF\0#ҘgI˼`VbY3qJwc-:cbIpC, cGAi <|F,}kF&S);+L˂-޾{ŏ~VXQzuR4&Yrʍ.Q/IZHV\` Q~Zo5^2 ~4gnwƑf=m`eO4a'w1۷0Ƣh()<0Mn7k< Χq)"# Qҍd8:N7XIGyCm(1WE;*;8JkEHk CKBP]P~t+~^»Vkecx6S [,r"+ࣸGY X4 +;Co=F#%bk$m+b'S`3Ef+3w}mY`F?xtCoސF6c[xﱅ<(#he(]*7B )"?0x(M11=%R\e!:%$YIz }# Бy g,Bdy\rj$iqPbbVS9g16wo!g#(gE,m F`ZZR:'wnù(xZ/6V"=)ijS[ :@*6J5R VA4(Z%Y1§v2u臎Fz1JZئ)g0O(%x<6%+-{,+oFUVAk4,y`%n_YqhU%y)3q\dunWM,1RdFY'uamswg?A'ucU6Ѹ hΈ EH$jy%!bP\αfY{$)-F-K2c:-me?Wb.*DK-M={hdA0К 1C]yp{{ _f~)ncXd=ZחuDF?/fUU~~й]%՗xF^vY_v2iyMv_5?_ߧ P>)uN=}z|PBhgK#;Q%?ScFUD{tx 9~_>'t"P%wZj|M}𖄶8m\#B_w?RPzD/n_h>|wk'˥3X?syu.OJQ撯Mt~1Q/A»P)DAKILkSEgyc7Fa~<*zq?rFQ.rkrK 6fo|>x%X TF! Mˠs Xb6e.m<'X#1c-nn_09 =m_jtt:1 :'g[)Ŵw:makby:a[Wc0 #ql肋7*Z2ŕԺe9AjוhO2[en' e'< Y[*[3]~b_[k^k#}vFU_^Z- Fp՝p7,ұJ`Q!ŀyMCښ°͉@S񧔲W9k$zp*ζ!>" +aC^egZӘ;0vi&ns20K2ywu4"Bߟ0 ]n8Aj.kKEWx&K:޴.\Ku늦P-B\~!q1_;q8$w!cw^FгBbEiEQ=siث`mmxıi }v,1VХ6i✤G=jz,=͋ }}a:42iiCL0y>k +{|Iڠ:/ɒkR`VϚ>', XM9[׭Fdh~=4Tx ZT.Fk&kD0 Pòx۔ i^ae0.V}WB;c+,Lə$ |$¿:߷u BpwN<D Qͧ󉢼V8ݟ۽K;Vr-G>m]d a 4; %NxcG*#uȎڕ| ѴLGXͺnpw= bl߿8R@nL%S|9RgԨ0%, F(M˺pz-:oBOH%3}*mYc[MQ5>5n6VۺA S=+Bo0J#+~7<=*Ўq#Ӽo7È/_2+R)8޾@Ə~oqo>OqV'=+6$*"v( %bU)y[[Op|N4f'ݾ 2R;QiBuIﰗtN'(MJN8NmY1'#to{`,\2 B=oM^C2b2[,,W kJ9 \ѹU()eVR.Q*8hjD(ғBZuX$̭++ r(0}ۺ CB,%Ep8T.wmco~wۆ-ǃy.\1D# d*]cυRY&=RJ4-5Ѱf"'ބ_ 3[_e^x|H!O]ǝ; g۬_BٗC}\UZui&ZBbT.3-GVܔtA0l`GV^ڨ6µ ˊtk߻v?xVKWL3j0/1W$z7Kkv}_@^͐U>QS&գg,Ο{}y.oC~1A_Wu΄wu0n|45O9ݏ&/4UB;"D=s\; g?+: 5g1\ g IDATk:G-|r>MCQS@+u.Rñ\rp(5#q%u_Y?CA)O?D/_=skx9}Mz+\nuN6[${7XU r7zU{8Z^D:Ul^)iM+b`NMP\ iSZ1kOx |G.X*qA[c$kexrÝm8p8Bp@`WE:xQǴS h=%!)>fk"Ie^a5ۋ@S3e{>3I)5|{u )ZQFvȄ ưW"]8Gȭ uM~_U|?ȮQ0>=Hrtdl׉pZm$ :JYP<4[qPX$$.L;*gqZ]L*f>Wk^Pe.P"28v-@NLOŽ9SKoNw}7PɈ?9a]}WB5RG9K/}θ=rX X"m8XZT:yq(B8`]60t5z6V96}{JYAJF՚I$Fw-PP'~g˲`)-~h2yI:1{ފ0\ ׆zJPMBuDzpp:|.JA+#kcH8) Zvyjۺ]ۺ%/#]LqIE@3eBsqe l!`wj 2L)q X)FA9W~NgG u1_uKN|ԯTѯTQc?}U>~ų>~n\ fyEu܏{??Ca//>鮖o'"{g _F ~Jzh縉ʳ]~ڟ̈́6gH{,\oyLe8ww_G4nB11@M)&[X"E ʃ3q8eHJdj$8Wxs#]x \ֺփZEiIE.7ۑ,K֞`CPU]Ճ$$Wl=^H/ @.$n$Aj)2#܆sΞu{GGFfu"==#܆3}~G_% #JsN6tʈ-CvZ}..hX!M M·.o6eZGQ]J8ecfXӂR=>.)}J Cq'aĶoߏO}Rz: 7n7 ʷ-@k[l֑eLȖ,JSڔ6! .=smmsm實X6MT!VRC3`;:Ĩ.6ѩzْ,b5Du d;G]LEE4#;SJRȫ0m!nf88IMǠ"da8N, JN^HÓhX"k-1Q1 'l۹\KQ4y jG=6a$cA%/۠תNSJ XqWdT| mCp h@N_ )>ְh٘PRl OnfK/jGZK6\;W,)$ytnZk70u@wj$h`5{{Ф{pD#Qx(k\ZFRF"DbPreEIudp_!wH;%߰wu cb$37޵$;µu2c$bannk41i08f F܇BHN'Xkn$as(y9XOy<~C__,RPR*eŲ.d"cuiFJd.lѳ { !w۵t{iOeSq@.ZA%Cx,JҚPR$uyFP|9TY۫MVW8蠴E&Fh(:1k](aEhih-E%J`4lx4+F6 z͛ 4:!,2I[PQ¬Y[ i#:ZS-l.!E`sk﯏1 TuG!ۆm] Q՘ >x&Wyk].SZR TPKb. T/5ZEYa۶54WH6ye7*%gE vY9v3y[ rw+i]͏Vm֏h4;"qI '%(^>WCϻ/k]?,]M‰^~w+XqyR?c1rLӮO?4O_HwGJr&%]ow)]%n۪Lx?X]_x>~|}x;=FĠ%nj-b  }#RpU4x^B`{Kn|%xhfJU!n?J.򵤡dZΙ0},r.^DCF4ng͟agQ9Iۿqf5r7UaeJKO1vM;zdsGXڕ"J-pܵLJXl l~!<`Պc5D "..5s:mB[ ).UNBq/Wi^0|_N8(M:OaDq (t74T9(mnےk%Ux}TtB6\F3l,S}@R80MXow@(7tsT^}iqUiq:!s̈́CG .61aCs)ZW`^,K5͏Bht#u!nq-j%"b$!h 7:!20x]MhH2cذt;uBQx3 ђh-m]r_4z(M !`]W6~D=ro୚+1Nk"kyׇJʋѓxR!1of~3K*!'$/.0ϩ45)VOHxwxItIbxKHWt4N=\9 sFVhZFq 1%EKӀzVpI9g1F ThKQRBq2гU M\ц{5N %ܴ&dn$7_;RB::B$'Y&qbn趮S IZ{8|Ұ!.;{"d!6nZXg*q RҬ A 6RnfuneJ60SM# ]Hn% ] %$Jɔ{oS+#I dd!(Z*7  n1R'r#!LiZq:!~?-0UЅ]9iOdS-EGbv>Lrǐ<,^kE sN.2YhF?1N+ĐeNo'r5+Db\]'؊ީ֫܆?q:/gJ43I.)ӤJ5F(57/pJ*ݰҺe%}Z3|Z+l>p=i ԭ]9B"gK{T" NȞ֤'ި 8k 8_G77mí0%J`*M~<73_"R?cR@Nؐm#Jk<<1zR p G مaC86pJ)"BAϝцSFqg\ȕu!f5X7OY%18zNtɆI\ߩ#n֌&|5bpPRTR4M\@ ܺFx<+ۺ)&7(c`?%ݽ<$(]#R.hAC(9&la3(L]B a|{kV%"rTJ IDATRudէ9#84KI\Ĝ!J)=}5m탋\́t(9Q~rO* =R0R4HVvJ)@RZsrHYCuH)yX˹sJ ˶R/w[K*EƂO)rk5r2]Si$P*d-!%1 iQ@q|X+V BZ!a/Op^=n_a6[ HwJn1Ӷ%kOڵc}w;Lݵ 57,ծ%WQޢ.+,Ѫ bH"X*nn?9a+2m`9Q7ϢI8<]3%HQwJHf7u]hT,)ȯo|K/܄WI1N3@߱q!ꋍ9v[<F]JP+R )[cD.`dpBu?:\[(F,F2ՂΡ66DW2&dڐYN,rw)6hZ`JKX)dh8Z hu-/ϝѥ6CUZ Xgh&Q; (_Od=}SJjĜr0A} F[og9q#@6ђj2xYc';D&N,D)y,qSUPXx>cYz&F@ke}Zۻm:~kne@LiQZC[)s N|Z!; O)d! t:>D7D 9XNKX$j ^i Tpŕ|`E*WLIaS۪hP+`DMz'̻=i"@J8DFКٜR2"2bw lWD4^q<aM3Rӱ#)9-]_'|ߏFxox&.Gg"v3i!I_{y#,Wߋp+Sq{uH_?z@p:JN9whz]O;9b:;#tM8x-iOpZB$G qq<8b0>DR6o(m%qWԽK|*,74LUH(kxh0fLЬ1!W.ˊr4͞:YLFIӖ<&G,@} n\ =HxKRs ҵY.!U6o%Wl3BL"3cɸu:,o1Yl~e)bFu,:[[딅=[BYG"[-X9:M# dh6kbeΥ'UZaL!pә_阹/iYV9 #iF* 9&T)-)$K)aU._~Tٌ.1FFG;Y}gk,sjzS7i 7 +=Ycp4Z #-H8vFӎȥ{{i|V)7>PjKmɜ(&@>_8 IaD:jB zA9=uz88xN#*Q88N/Z+&PR98Lu[ PR)<tBRR))bS9S?8N@ o<0qfs! %Kl ""@¹!El~3*'W-cw',)]|d("@Zï+$p+lasP{/iƢz*g7O;}F#1%hi /%wP8LwzzuR8at%zC &GT"<[3aUPXAEץTf=q99kb@a8#QN f?7 (&1?BCZ0OVB cM ?ϑJi9? o F k힌Vs'y_"j5AK2:,NЕzҺBW6Guw#J}a`h.;P[ 91WSF?/qJi>`9x,4pJׯS4O~C4BT``F~[k n78n _Aja`5U9 HyBuSB#FՓ1Ĕ 0f~F ׊u>>F DŲ@+_(+"-%jlOhmѪ i/&Bf+2S߳JF.xl0RK%:I[f#Rv$Em5 1OSЖxY۱-۹z%\CG̗r!>=m'i>!tKݝ:Gʙx7[qrZ{]'c|}=@_('}鼫nzѿg~ky[D*#\k}>_h+Z`$4J.\ErG:4rx>ؿJʬަb^k߾ƺz|ŗXTRMFLJ uAa{]ݬM0R6*~Oxa( ԜQ!Pa^ƺ,PF<&Գžb!$g-02Ѓ:1HoPFRdsA{%L6c H9c6Nv]RLHĘ/}(>PN൬ КH]䡁_oΥ)6CuU oӏO}.ܱ]ϙ̀5ẚJ_]̌,Zr7_K5w 7'5+,iíaGqhX*q7M < . ̖~IpWnuKR6k !6Q9Aݘ,M{2u̷QqΑ )|>s$Q3׌-I4ƫWnoOTapH. z- i*[^) 75hD=UgT'&T)=eU/ВڥN Gwh5Ajǖ86h:Un@oڔJ7pBISh `e]O\Q*ukKw(%mq =e9[Skl+a=" BL"˶OY/"BLL ֑a༐Iܛ7$QK$et[c.LEvARlB<|U)FL+v7!G# JfK0NȩPl1 >׆$N{AÉWHXc,$iW_uT׋)63adz !Bk~-A\ $bΘw;6 Ilc]@ɐ\?%^i@^ϧ=am h@a)Gu{Ohp; Ҿ,gt"q`tZ6B*)N1V͝V\Oz*LV™xkM%%LBD0 DU`Ps%""E'x=8z@I[}u-BKRTڟ2&+ 4@k|c 0#aL9t/N׏?ƳC%Oj]{}R w܄Sڭ(-> yU"WN=]:{O!~Rϟ$h/ygG|s'Pa ={O/c v|?ܖO?L3?Nb :W?ˠܕsA?>FU 1cyI-xy.F'~lPg97`O~'I TB5s8Vhiz`Ҹx;j43*9BX~[ܶ !Ȉ湧k4 B@hu`4S%װn0}pNTɢ#u=Zn)XJpy ,tYKS$9hLc{_lbs4t<)p<|䥋SkN3#M$c؅>,€X@HZʟ^4|7"އǑ_{b tJ0#4q4=˽M<(&mkAA)cOu˛H5{}cKAGַĦ"pGlC c5nxIQJu =O97Ji1#Z]N㭿Y 0M 9oqW󙎷DC:E&BPVNn"Hƒ Cbð&ήr)DӒ}>} )RXo+SZGt@G~Z-mܪblpÈq r0ܡ3nz2a!UDqC0Mu*I a1o}r'-H R (M}>7ZQS5"K1R?t¶x !wbgxaKE,WxKnc&C7)I vL)!ĕEUJJ\ }fwC#ukF*:⊐֨W+)Q@LFn\OSooqW_bF}7"F7@)vqx?O@{8mofG=(bHF {a ٶRTzR\[{kɌĩ0'f*NC⼮KH=www0FtlG6׊y-jRº,92 IDAT$(T ?#J/PM ͳe΅Bj+380jAgkk,WzX,K.\1EN+8ᴂFEVy&H)u8X03Q0X?[ ÑJ ӌ7iQ VZZu 5 qZ+@ny V$7؋Y-$S%υ$ZRa-'6kwl jl O%>L|? 㟥uGb~<{u _P{ @% >)%H;RJ^Ч DI\u4r< Xۻ[|+(g! Y'êh,JkP/J\$hͼ4,##ehAhea<iB1f${R)ߣi!8i{ssīyatul7xuOKAVD 7zb[Jiy@7hm .kӺ5MښDz6 $)1 MdoؔhsF 8y*WT4s*h_A,,]*I{Z#!(AQpʥBNlJ*%^GT9!$Z/F.'_!ծX $3Y);bN$]c]?v#gîC4_ܱyes~uVSvl?]=݄K:w :=_.4;#ux_Hx?%'FT uIws_$~GJx.#gO(Ǐ{RJ>]hPNKw}}/Ix}*^ ^GSڟ"N=V*-Nkn\JM{+kԔ&/x,*m}لu/e҅-kp>#%(ܰU&>>)%|H|;@ma *dGCRARx:T_?|~܄֧Zks\J#ċEjbaycW2:.RBZNQprb~hݷ@JJ•B $$A =ulQ0aq*w! 8hx[j˜rՋJj-D lB}ִT'm[Ҧp H8v6c՞׶mkص;y58HEe6\'ac$vk'ۆ2b#%J=#ZB.g 2R 5&֎d,rIUcX`!VUۺpʤ=Sڜ˽%o[v:?Uy%/bjn)|uD"sgC߷zF@)Cl.xʃr!.KRbFJ̖nXW>hŦP5SėScTp'‰z1A/pӎǖl'! ɩ1 #apIG'_9ሔ) l RfC~KIa\Kn kH%Bb< c{2JÀJ.{JtGPc:b6#"PY@"%"(AƳf9h_S$qbZ`v8*\\!BI1"ȸ[Ӆ=k0Ʃaћ4!%.> ˄}DڲhN$گUG4a)% v3JM1H8t11KH39e( apJc62ӵlKlӟhBiJa OrkR*V\2Gd[7b_(mNdLL71zvdrs.[{oJm+yo[G=#}mC /b۷?S\)u9b'g((&|WwlI-]{ӵ>ѱ*AؤSKfQy *7 WVu~%!3B̸{u?cfhׯr>cFoD ~B¶AI7$ LSs83c[WP>}X}0a݀F;yD|ߔrG 8̯ @2w7&zϵJk'5av'[V-`Qk FiLE%U N XT'Id~^uu4|c$61ш P꭬58V,SU4a+ >Ԓ̪y@Ts"1` $'!h8B%W^o@!g $DL@%R wwpz^څMQd[Jvff,r]lc4x-><`s=PuygF! nt Bf:c'}DWM>B-(:AغI(݌fp(<3RZc NlFL~/0sKhFJi^I7QhPeEW 6, c4QP|}VRuBI t 40&zJu,Qjnz& 1 2J &~lH)y"ـ]x?gz NF43 4jy{ŏƇHʾ;[wg}# HxW|z8#ϦOxx#]ѿ'>ҵ=3_5c ;$(I#;TwHng}C~[pGu_%q*NOv}G3怏 Za; }i_'$|9B|]}U|گ.H~TQ;aHQsyF_*?xy^xz,/Ϗޏ9^+[,3~ӟ:躖RBl" ,g=А4!j7h1M3n+:Vp4Y! O " BPoU8PX1O84 VrM;`U]׍yh68}džjְIsa\rb0.]Ɯ$% HFلa7JJrp.SȄ[7J6W`!/A apM& {sfmR 'SN1cYvPݶ zER x3;#'xs5aG #vxK8ZHGNmbr_TNJN~DZ:!E+JpGI>vCzy3ܜ2#'y&cd\NtɈbgCӿoHZ@4?uYx%ߴGTXH5qx$H8A)yș95v HqR p6:Ju7AXkoZhC&iSgnp|}ku Mp319,m4MC)} 3#Џc(a *z``r&x&,0W~]c{#Ϩq-qGC| v#S)8Ih1 1|'N AlJK)Xp/K,A;t!58:MmIo RHsgodZZ͂;%,C8ԙ=M8!Efu#O"3Z~]`$ܾyB+'. +9 %] PPz9$gX H!@u35SKliNyQB)麯4C Q> l.QN?N-߹VTdϦs\[B%p<yE]r:fCwo~vM$d|潧JNUI+q|1F#x**qm#y3Qu+ 䂐t^g!m5ڝ^9^K}9:$j-eA ?w6P1t<Ԋ뿆pww7w$Z+~_8NXgYvr(R&U]AW./ Еz1ni>NSN+hGh!zyTФ w!%Ĕq՗'_#ՂmLB rzI JbX3_yMRS]sBXe%rsP 6cPB=4T7 S`™`Z`͗o#LcBIb3!Q />lHܩM;6G m4J!&JWNL1"@i~вH!.?sTԾjna&5Qxh#"E0Z_By2U&5њU%W hc I8cc{!l@qUHY1N[ R B`-yů%m}Dn~CD>S|k{ IؖK%HR,4JkPZa,4/D)߾~×_~ё8pZPEżc)\u:Y n־=*bdqVh^Odw;2ҔJC[&v 8 #ZuP-H1}llhhjtfm]nu癯u[+~@|Xݛ`~G-4~I<3Fć@rC>x(E)9%1p*j)X֥S Pz($<ے$Wz#"nMJFс3zlt?Cr:P2FW#0ctC`̈>vȬ,=4B)<Ne3y5Q.:F)$v"Fۣ@aYk{ĩzѨް[L9Fq#F"Ho[3@#V"_{ݳTecc2/4q}|ByO>,x vx_sy$]g5ޟsOߕ/E4:.?3Rwz^𾠻^;?>"zw|[7~s?~Nd#?>Vb^4~~7=O*~Ny9-gƧ  L& EuzT99p!.vrT|]~ &{ 2ΟBJmh^CJ/p q9ZJTZӏ~[ !0L$Ϭ\n r%WyR3GDiY!3vMq(x0ǃrmM&UY'ec1l4QE/ xFjc93IY^J!!oi$Rg50Wl?UM.\"yi&(TZzVZt:W)l,4M~!Q: qEB}Nǘ`jbRi61m4iCU .pM@}&ߟhGŹ//X$Utn(bu=#BZ["3-]!Z C21jb!a"51cNS5>Jp:\Ӯ3!@w,X<0tNϳ Pƒp7 z?< X3QriM)X۞Zkf\gXka@9i1B(LP܉kIM%6~s `\"tFw e(X'xѹBB9d4Zc_&:k qMJtv~a3˺ fNGhSAzJ^{HdBF݄a2/XQyjE Y*{g-"'nqah=݄x%sK%UгҦ"#cSǝ!쟦{80U eHMZk @h:rj=M3aӵ*te!r>p:OטTILk }f| h!p4}T@k)YNRWI%4n̨Dp'N7:F%Z4zV8(^Xϵ{)BNx,~U?Ft]|2{L3]g!DŽyf42Jd)P77$ދdIKh5=~@N|m.B}CO :9gڏy9R*5L)Sc %$ {POi $Lw[P]Q5æ]5&47YTg#b&ːz*"Ħq1G梕R{[\K.?o ub׿R*p7᧿uڅ'(wW򅸘l:Mo"^3q*?GEE{%5q?OS.%[%SL!J9E)q AԒV4ydZI kh8#%w Pjb^{mΧk-8iNP "(ɝȵZ~zOq4@Jߤ4͜ cN KRGwܷTeB:^)6O:/sVJ&n?Ç1 O~9[/%x@‰q{e6Ԯc8$j/ZXw#Jg,ӄh]="*{]Iy9h{t[к`Kܪ J"14"V0~ҞT9P]D\ ^2 i ~Ri8caYx>1HLf'a 8|]C6~vz2V""+_-Brɜ? 9IQo]+@wwR-^;gTp<8>L[(ݰ.Ih7T4# ;a}J᰿A!D~4J\ o;=)RT2:8˦K2"h&b@s8Ai ;":uݏ*(ھ5E&#@*茆} }A. ^dULzr*SB 9؎R#{XCbqH=3C1i MsmQJ),ӂ=3 c'AD\}K1Au9/yUQ7t?+$#/ݿ<26sz,' ڛfVV CU٤ɄW6Qr98=N{$54Z՚-I)2jhT9Zy,$H'$B\$u/xk3O\Bv,^u΋+E y?~9ׯrq]HsOչy|x+xAnh|O /si~_aP^>?EzӎO}*ܗgtk_{sӧĵ j'7_3\|4J^*1 7^<c3O<7u lUn ŧ]JCS(G(ғ$u)Ώv:MZ\MĿ|ʫ"OyO 9 7bK<x7o4{I=$0;s<\)XoJTc0N3yPtz;扻_ix2 ; }J2vpC*wSW!j2VIF*XFV%m{$8p{;X8,VZgYH Ȫ5!Yk/DNuBX-g1qS"QG6v0 ]΋$"&s&[ſ*J쨟yMT6ld<(ɐ A6@ ߴW3{)|nIzSgAS l_&h!xH)3YZÞ[)ugRS|"gQ: b@v\[ T Rh+]Ņšfa(q<!v %+f^;̥aA5QߡnXf!;Q(VNDM#aݴ~K RT]$HV@hboaNuʎ`ی^5@vgf@ף?©JkE8pzk@fat4[ %h^IUZ$iWE Eҿ kJOPh*מotOBdÎfl-H5/OdY$jdRj&I<&'!K3cAtѳh@bY<>g-=%Q=3 >RgL yJ&J*Lk-nR٢R^I%h sHN +ƃ~Z1eg-b8H9Dcu M?'H=(]bFl!>k F:Sh\iT>,Pޯ8!USJH)bdLt^W$hrg-|L臞lʉ= *v am GⵖB)YԘ3/Z S3qVX2.*N|%p38ODZFOlgp/)ELD[e55XN"hAk-:@HIFM 72%O#/%4$<|ٕ͒T#_-;|#%D*8=q:q:}b^k^͘m&Q UԪ2 %V-noo1cR`~ (G1%ߞ%'J}xrW|lt  qߞǚ0YJآ!&H= h5A7ye[DO{_~׮ߞΧ%q$*WDO:(4) N̄'LxOcgwuO?Qq˥:x]\VEG~,~yJ`߫IĘIKc>Hxo:!'Q/Z͕QW6 UZ;HŻwQ̫Ø9yQSSL?M"d)D'dvܮ]֠aGRH*r#<^0wҀx9sM'0g#ť@2F:>P҂ߣ¦D,Ts 2k=n.Fbt+jl.@,$b׷Z )˲bafw}i]넫 M&γo&Z=OmL LSD Lp77f6rÉal3:"DHBzKiq/S+O2w{Wb "htK2o%6XIr3#T~кpJbiZ8$>*ӘTUEO²i%[}I8M%qJG,*PjH%(o:%0ͼSJBas~Y0#C th81IؐϪ9C4X5!%yNMchKMC̔^9Vbd$kyk)>/ . "2'z> xFkΑ *@/DLϡgϦ59بSJ!s\|o)Uc__{~޿R¼ ٕ JjC{zmBH7`^8Gg42#K9/MU]Z R0asL[ oG?޵o^²H fm飼"\glu{P2!L=D9%R4a8`v)AHP_ hrki(@B1%m 'hSB>xnk"Mu@ (ux~au5ϞR1ꓺ%Ie$h( s_1΢d7eH[C5<+%K|0BrO%g4#ٝXY;+ []{ϸ]>FU>pj, R>e~[N))JG߶8nV:kR6Z&PV'~a|LTAsug$g2JQ͉-!BWXڀzCGׁҚӈ 5}&׽k]ZkD3,rCcTKjw5 jhHR dE@jђtG٦ޅ_0M3"?a!K"bM5SRP%|SLrR.؄sl}F4w-F4:lZSA 3WkVtI@~!әNDN0ԟRЪt%lo˦-H6ldY?e,,`)68&T۾lA3` 878BH{ߌdP"zԁPb#%Z}ѹ]7!PX Xsq:&4'2_PPj@Zs8dL~ IDATTE 1pX*V4 ⍥>ICքG|㈾w,ŜVks!Dx?3}Mkm03}"C3ӖesYRB"tީuJALiΧ3 eFg8нN QWs$&8^,~tezgP q4l ,E*1/Q-p?k)96=\~Y}z`&7cahY i̔"GT7o%C)~vκ7e!+ER@/K#9KF\q>jz8m? HSu(~탮g4L ~gTuK^j)Yl0/35HlxhXY6:B@C.<k$K|?31=޿w%ADB;mޑ2yFApp{ov*B$!K\JkP^;& Qұj"{W$^+S83&];s"A: 5~WܠpqDgxՓAy^y!lW膾uJ~߅,HE5$Lt}[ ׾B.c8[&|g!4CgBlPw(W pMD`&|~qL8' }#r k,&aVWf6Ὥ[)-Dը88C@Ʉ@T@(%+Q)n@N)Gu0Z i^6CȼD2Zh 3F Ze'ZZX0<9=p9a; 4iaB%y3p#rA}G/;0B,,~!QF8n~Z NzEPR3IaT8!e^+"]74B. 3ș=keLeF*8~} ] Z1eH5R)X6~XЬ{vD2o޼ps5q0>dKX8Vl,!Z3)"LaJ?פ ">g|PB MYH0M3o߾Ṕ~OײKș?͛[NgsZZS1v0Ft<,8<34T=lH4ZEh0} $i>RJ]>Ki8heWcFuJ1S('JHFx5nj8tP_!ẮݤRDu`'2JzOdB2[VZҞ!ZP3۸F47JtJx)gy~?ѱ/yğ2kc ~SHx@ ty>}c]j[rbo\V #Lqt_X4QJWǝ&S~c,=%^Þ:CLy^0%-]SU#AAtH{XuH4a7pP!PN dRH34.W,jM'y[g9 5uxs)Y4 )V+ztzh>[' ?Nܺ#Я˚D$qsIК֬ɻ*,*U)%NgNZzB`l(Xmrzp)YNh]ڵW!fa ܻ0M3o+1|]xc\71.L5}e Fl*m{Bj]w 9-Ya_bc _ Nfݎ ߷B D0IWEHH颒y=BP>+g%/!r%Rs]oRsI(<(x{78O 232\"{JiM4L,)^e^hP_н\KH,L]k\jzOy%Y\eSoʍ7]9)qs{ ;6HBX0G<|@&YFy2/p}G} 2,4'Kchݻ1g[IR)AHN)h%Y,Մ 3M# i[58N1 | BgPm_:W&R-.B"4^'2 yGbPŒ~5s rcaᵔ1 jw=S|Bf !h 2SP+t_oc Pk{$]Gudl.\ $X@I1DX6n[3z!'Ao5{ *̯uo %e/ٸY@bJL<Ӝks`cb3=̤ UmuHɂHy)Vؐo/~]4~U'x%(? ,:+ismq]OxOLx?֪OџjU 9vQ$ Wvxk ~Y ~?^,?l7f+ I5 c ;?׸qy$-/biSjҔr"C̛#bDemv*^dȯ\;_'C}N/.uXC@H4q֡=BPcy3N*`9=%wxOPuBFpqK~n7Ee4z@l:R3&{ڐCaV2Ű:/ܗKÔV5vJisc$(UstFN Þ9qgunɾLDDu_s5w< J77H"yi`!NbJ;?I&1)qY9et h9gDʌ[]hhu0AjJK_\ s1F0Gf. iIs{M>w Մ#T͍]ѽ8suR %PDk,2'-aMZ:B톆 qּA_|MTˆTJZ5ư !rJ2,Mz=Ws.xxP6cAMY[<JɊVUJqhk%Sp\Τ{5 AYL)ʴDN4Tc$t<ñ8=O}N1 Zͮ@/dCJȼYmjg(tY+ɥҰD)%3m#};9RFL 2EH~F e { ~9z;BX21ǀn t>9@ )Ȱ|<~>n39~^36}FFSL)C#ƌœ@(BJ 10 BjHm`M#WPᵠs=SXP. aH  .CDz2 xd<a4r:Q4(_}ȁM ֜QΞ%& yS"ٸ+\#%S&][/~ % bv"9aaߓ@5 )~՗_w<9C[XR31׵.ZBY#:h*`jJ^BT aFJ)慄k) q(#jA{14/HlO{]\Zs8ݟ))2C JX`b\F)+Ib;%z%S,DF8m%هn`RU&W|?K)`#Cs)C dSP@(®kXƉj|@wBaJk2fK= t] ֹ 2! d&vl.'VQ#kY y֠x4z&g%rL8Cps8x@1Ul &#¼V :ylڜl25Ǒ+ͺs8NH;2e'x:2()?۷p8IL)ְhwZfԗJsYju{ϓ.F)r){V [z柺. ՙ-8 um=/$"7\qZ"Bu">4lG 9Fx; }4-~AZbn~%4?/.D'%%cp8^ĪMm~R~q ^v^9VY ?8q$=vu EU] Wvp3Ih67cu_O.ԗڶc6$*uO l0U,/Mwp ~+_OR?_}1| b m}gÌGn9KYqa`[;?Y,\%gT)պ #{] %$hv wVt:9 k#-VI\cX(4bt$:h %S_)F*(( '<<Yc9G"<<TmήgcL+q0wѢ_ J (:<,%Cn^+]6)z` nУ9+ =_@:O\Z5D-MJ)&TKM:G#N3L˨H*{ (K]XJK_vk=Z+,4.M&21+蚶eyEԗR0N3' Q ʚ`c@aSS4e.h{>NS1 VSz*b7L}֜IϺN`F(0 c-q6 }5<{8ϸ?s5%KN<$6|@?PRb {k%P#0:9ڞi(BUCK5D~Qʟcm4%P_z5m@"5Yqp(3n0ZPZbg6d$.(dTod218SG>x‘`1Et|B=us*Ef0(==Ү"s K<(  Kp@9/tI%:!`&u]8~ǜrFb#d{ c~wiq:@(ZfNB)(ooVu݋M\ ĸ}v#k}2HLi"-3oؠ2IOrD%) 2,EgD6-›:zvf2a(Y'psa'S$qf3 n7c+ lߡгɏRFj:G{k}xi`?5 IDATT(\IpY%e5yB(~/9uJB9e)jx{ KV~ r/~ĝ!%DAWX? $BQzj`4"?Z{c(Lv8gݒp|K0dʉ̣%EJZKDy$! ^)h&HyMa J$r>D\I1 B.t׵̚m'x$RBk@.6]aDr !!0'̳|xᜁlvfD=YS}@DjhG@ !eV1tG u<d>˼ޕ31PR+ْdyxȪInیz I&V_/%kt7ED/$P~=b{GfdU5h`e>{<3yHgW<`y ׆SD"T0lfӈ3X grײ״/3?"gB@̷/,"Q^# %a=DZC>>/+qu1E٧ P|1&\ bL83-tAe޽l3褴QXġVkX\.޾}P4CX5yּ>{}rh*HvRcF~1GmD zͿvaPBv=crJRJ=Fqu5%}ݳ?2 ;F|aHwf7sVB p i6H-lxA}R>l |m 7yM?S2S!xc sEŹ5]}Ͱ7R8vQrLW TcN,jRPRIHؘ2KG?Y y>c&<_xqySɥgD뜸p 4!gfi`[=kc֫Wq6qf nsmQ.O7iZ $vDRBE!L +nž+R.~c Fp -4mR=S[&7zykWTX4FZ[rA8bYHȂFwaF4G}|_?Iwfwij4Emw5Qr {[Jr#6U16HnȬcw;ZQYlinӖ)4͂D6چٱ0/8PQ &v'L\4M~=ugq8Ic?n;qF v@cSǩ;K'Ds9ɟ-=;e(F" -Jwg;F \x+'t+We/\hƠ}ۻjnLf;7Igc!ѱiY^JSD{) yؒ U ܝF04!ń 〴8~cťkZR>!{͵k ^ yQFH|,MF[]t&γ9{*V4w7>4Hϙ(T.R  "z;ӌ .O(%s-TaǾGYw'y0FDX$em_>RT$הmauBACKF}t\mX,Vj)h2kg#Rh*RA{Ctpg"[(އJdJB*clm#ĸ>Zڒl&{R]օqW%y!xa. m"(s4Ϩy 9ʹ8"B%*'ܛ4*݅/nӫkZ&t}q%'aGlS^LӄTcBvȽ8?-PP0!uY 3Lm+Pyo D84IsBZ2yP"Kkێ \]S8JlPӰ9UzO ١kij5溒8:hVE!Ōuݱ..ˊ\2(g kѣ/q3i8aϦ3}H-0BasnTjbTKfFn˺y˅exo1#p#=mþDZ7tE 9c{"TZXc#|9ds bC[*!՛| p0@}($,O=˲pM 1E_}V8ݟ1M3V!?˙rؖU) !Ai`&pnYkYXKqaGHukpHT4ewp\G1EjrfR_WqĦTur^3B_gn)Jjrp׹tT.D!MokiPpzXG\hUZ#| Y2WRSZipKs G?kU'fkF/k>GǾ:Z~_l5?xzqzYg&˿uY^8?ƇٯH{}+B͍nkPSpx߾W/"CQ8t#wxO)Mڳ7Sx _f]PYҴ ¯h_DƥekWu~ҷ*P)ox^.D9J#ԛ9e9زhk4Z61E8Qºp{)~03vq5!Y\ ww֔Ԛ <` ŬA&0d{Ҽ5j!v9O{nְj}gaELg6ƆKWڧX605eEa~'2|jejGx6$^ (xo ADY97 wنlN" 5 %Jr*]oS1FYYk%M)G,lqO!2kp*(H#E24NPx ,lZtT,8DPV2|)gxq;g$'XI+v(ltgжgsw~{H`s]ޅY-٤1#>ҠZcSm-*i2`yT<=>(ڶy6jc#T F8& c?z`ΙٴҔ͍`fT*!E1PJƶֽqdsq۲rwwؠ4PqfL}-L  nT h s4lUs(Th}uK1"ZV䢐kAbz).V$qԥZ~?.2t"Pxxx@N o lDYl=߇m%>6D?a=vz7o`pNuĭz7M\c¬ňf.)%<p (7NHz5@U8q <ߕ /x@4`_7<ܟ<R&Zqm +6køfzL(@65"lժMAB l['yR(ϗ u0ƌi,)98y뜬dEQJE . }ǶH90jxkjž uEcQqG HB !k,5j Ʊ1Lӄ gc}].\'Br( k=`P]wW3Sg4qB.KR;8Θ'<椋@UW3/F2KY=4EI4(ޏ;K̓c,wL ۶K6g(p(?ɩp!ĈX@!1BI3WrK"HGA8?{yB\.Db???TƸɚcDh+M9C)A|"rOgxwmӗK#irw6WayNMn+C К^d9Fl1MFy㎙RÒ)3ΠMuzHU_}L]!Uex"[p ]޿Af+VҲoxV}Q{dx+?FTVOF(0N0osxtx޷a3v{rb7y߭~G͏S7ίu-5"o:DUP_7|N \k:G_woϗiy> 2"IVjuz҂gpV(gCE0F7W\\3;6:\L,.ث{~RdEQZp¹L,ٌ}#:z$)C6yԎScޏ]T~`ߙdŶma==kVfms5 t:)0M#mCJ]l bk3-at؏۾JX_wNDȤIs)޺h9H\,HO3r1Ixe]jsT(ik*c?~~]5~L7zNfh z4,[vJEp,RҮb wCY;N,hq<̦/tyq+* ro\Wh fdʼa %]PlT:YyX,ky߼'Dx}W{k!_ߑKvRjֱYfDXb${l&_2RJ%cfhc;Ń)^8C3l[ɀ`*ǒǖ-:/<mE,{ثhӛ RE޳ 3ltiHp⾣K%?yolZV ηM`*./ m;:\jws$,+T>{cKPg2@\r#gP 1PKh*v&)Ei)Z魞Sr2( IJPzqhCRSovK#/Lv*oY+6P#꓃_3txa`.r.W|{Y D rUA^|WV͍^}a7]-n; lq}VlA IDATT7N%W%uXXB>)k~Wwew[wΫ>V~ Z}_ӾnE}ׯ?t~!һ6wt]_ul|[o&;3tfb/|}-^+7ȷdxCk)_OՋ*x쉽֐_?42? BYH!wWҼ <"mtG|mF7Ht:rQ堑sBenw&iP.悵g4NuVbEa> 8Gq>^h,;Nsw2g^]2gif;IjGsnIٌ֙\ >J̙fN11 ,RP8l^!ԠMuؤv.ן]hGh;(^ ,:~"FTIEgg_~! zݭimm?2=VllL3k5tD!_q fG8zfk)mLĆn \hf[JN5,p{/H*u-];M>5FrRH1bƎ(ljok=T!n %&qUjf׾ox||D)<*Ț½+@{k̆N+IC.d$I,.Hd*.s~ֽ)4@Dmzm$q޺ ;^2좸Y7Ycz<>t՚Tk؊JJ o+qyT^T 0ɽ`3p>ֲУA}v۶aްu`݈6`V ;xW_ p"h⏔2műԒНs,xoM_3#=˺Hfe6@ #}<3rAUTȩ`\yVhQki>aF<>=!'7O=RbޯYl-ܕcרJac_j+ZS!'5\q'Ye2|BlN}I%Fxf.DxuTL_w̪Ҹ`.t8<úA$j圑21xU,jC`q'RטYt(ڷ L1Mq^; c8Q*]ZSMT TvYs)@Qv9aY69g@h2cNt4*`[D},hH[]OzS B a}S(jnb؏ƷE ÷K!JJݜ@k(I0I6i&ox8lrX*dM n{7 Vlȸa p< !`vw@[ bL{e*#&Gw!#!w!xap:0D%kMH BR8v{-WRcspg>N-)F"klgsF=# *rb6{ȩkaG3=ݛϠ 3q%_kBqHѭb4GZf2}7Q'Вǘ!mK+˂q{,W?_/ٱGÆuw <cNm7[|?WzM?~':M͑Ϸoy|A%eχs5 {'of1yP饿}ܠlߊ1WV-pg! ]?;{7Gj~#Mվ2^ OvOm} ZM)'? 3dcފ%f1m", Vj4 t"B͉<ج B0 T y7 cmn!ݖ\j%jZW[ٲ]M2OI^I{|U"d1/q>̑GL]*~+J&(4kk/7hn p idt5{̒ޱ#EM%Z ;9#x~zݩ ` &DZ<`zU: lZoD㊍3-΀[m!!,5jkk,&)'.zӵ!b H49)EnN8kZzٕ&tƍU:d:JND68Un_2{eWb/T}5{! ثeL[y-,S[sIE ТZ>rDp"  JPZ^+ArcJ떻gpGZc P٬Xa-VFioz '^z〒ؼcvu^bT))'l Y#v|!&}y$,@CD^Н_`A)bjYVYæ<7V hWbLK,kLB! xQ#ݝeOКxgq8Oc6™~,a$ջ;wZwwe4Me!@W:+ts4[,qb,.$LDjyYmpgʪkLraL=FUPV[A*MpDYr$%W.9qͽU XK}keht1G$i=Wts۳ fV+@%uA!ǁiac8L8?8EB`sf_Qr42#w> {##4} U56| GH T@[ GL~,975q ճ=[cMɽC61ۿ 4/󅘻K$r=K"{#DxH~w[( 1HU0)S;hFZ80x +yJ"BZ.<lga2AD+}pwOјOg ȹxOw[ccYYwmBk# !(tqDM x:+py`F,֣VH!b&<}¨%e]qYlǁ#\qt$;4a<4[QpS[ZU] YR; G޸hǁ{Deў҉ԇ42Uyx\E=B (*c>O,8O3 띇f807M[^bsg-5Ў qpH| m~Ua,1sZ`EﱗEVrAlH-?H!ԂZU?xH|U)EI-B ‘s=Lnc4=WqGqar{8P#IJ8g]?cKBӣ(2ڈyqV41% 9mpwFϗ O82FbD}LmYʞ\rQ؝զtoZ{%z`;RdLgZi%OSR"I UZnFKpxXi_S/q0R*W7OuhW^a;c{Z?/:4ͰSj ʭEzלoi]]Wz}8oJ4EEMp}hۛ$W?ߵ[ywzzTp{|_zC 9߿o_%`ӊ9M hVi9p?zS~,T>x174e/'G~dçu[~ŗ?!No0BLK8VpkJ+,ךO\େ03(eOLU ,P)"hKpmjR=VP k%$%* zJGp''q绳 ( _ܵ!8kk$q}c1*Qmy o|=b9C\,4Τh. 0/6[ &wZ|wB ˲bY7/hqЩSp1B8jыa54x@%HA#ѝ"&PZQGKu8%NCt8g{!0%^)⬫ ->0E|(Y/Npm2BpŒ0y#\ͭAL,9s8Nh^"9{@DC^H [+>sm;s;4aj%+= K4ضHShZ27- #@*w Dt"ȎDWH:׵R*j"T7SJG y:RсX9N''MS1,G;(`c v˥s>FuJ"ݙIY\r64 l5;rwPTT5X. mYؑK=rL\oclۊT2qfw4!bxBh#> *qbiL<0L6ЎM\! i-bnж9vImClǐDଁe4"e~#;7r&T;%YAB,QG@)蹡(k.H9`0!EG1fRbslo c`, 74Rе)ap!6n wGBN :İ{K1{"C23m'~{0#zHy =KYEWrQZYu-U\B=dbᅖԳJ8BABl\&rؠ  lZ}8cJMD&wq8ҌgtVBy2jU`qq}zq :ļQ51|fEuEHy`;zaXm xmp&(ʹJDAwm{9nZellRH#w+IX EǑ`F}۾ipw}?0Oq'_`>C;cAFwB)vDNfqfkA0fH.C.5ETVS% [29Sp&'{fRxNuJ+=bN4--J6Z y>?RVXP \R'bୂVl^`1g be߼!a3Hݣ4̓o;@(UQkB<<8$$!l2NyʳL9e% }YcgB)Ѻc TwwMG.ZVt+Y" Ix]Ĩnܶư@(N)%y/PyyRymw.qk˲bp%ﴽ$1QA'HX w8'J!s-ȵ⫯4MB3؏aq1x҇wt6 ˲۷1_i$O^>zzs+u BQrRTHd'sz33R T7R E2ayv$ +߇R!P?FK$F+PV!nXU(me~U֪kc?VPCr7;-_z^7F˺#[ƫt>|_zߏ}oC+Xشiû~ûwY}]Y7>]i(?}8KMV715g)(당E-Oouxopx[A}|˲`F|`_7:@AT.I1q yyHm*{2Jl29a4Î7YN0ݭ_d4agw^JY-:E~/]!eG( kzIJ\, bH1'W+\XA&Rl{v1#ceQ]%M`p{w5.4I'ge:ZE/DTqUJ\{ؐuAU)?"t &CFU$֎Ag]D8xl#Ґm~nj悳dlہi–w7+Y͠°X.袦1M#~XoVZ/"!2WRqikS\R0.xh&hgRx=\ mOgQ\01beKD(Xg! IDATm$0[zxev1]&^tKԞ|:19Vd(#98!hR8M,I}sGag#eOP_\.0Lc7T Ӏm?}R,BYY%8g? mǾmBp%%52Ks/JP%bDSeV( muӊ"d[m%"tWq N0+EZpM{fRDFr6ޏx~~s|~0*`ƞI[kG8Nဵ My,@YąĜ~@so%t>g'q_o$S@iXp qČ\_\Z1'AZQ2[[K@o% 'ES!%r%Z1#q.EYH'~Pc8O?śΧ3ыwQp at83θLBN8Ha0 AmۀeU_ +wp~4O S*48 ׵[3qlແ]4~91e#]v|=?x~zBMg\;ɚ=Eq3W7̰6vԛ/j_Ok䵟P8$m߈>n%0}3UdP(Uulx؟PGx7ps!2]$[ ?;ˆ9v?8 f<-8Z`0EnI"%b1$yVJ96  8KǑ[CĖ2bPH rc5m۰ǖ5ox΍yPR 0,qc#b̖ݫ@! W !WFo矣TfŢZ 1:+ѥ$WXdvR )4P8ÎѦ@d= D$瞍=͈>ebSiE*nfKvWxC=כfhkR0^}1>Uj/8{fLG5D< z_ - Yk?ٟBt u89umcV) $wF̞{t7t3UUH8xuGvjR 8ƑM&mLϼQ.:AbjEw)Flˀwn vė E0;k$@s6$5VB}*JJ1eZSĥy.f$k bXxstJ&RaRd< IQ=슬QћJ ""F6@cuݩK/ƑY7WaO˓N=vf^ΩHJwB˲4zYxvAØLوi "H2CDY)@-I7>ZG׏u؏+O+IQ J7|R!r\5LJ,NŘe /xKTNpeιc()gN.˅ mz1t`(C)Zj tm4paY6Z=E) 1qlbwtA\GmHcoHۺuQDDD4M,JnY01`t6Beǎb_ik|Xb<hE\2wŴI,j՚ f00J @@U6IZDb 1,= ͉$Mx& 1JD(\2Q<Ȓjw"ՉYuq͛>Z2d6ҍ5f(s%).BmoL)B春Uɲ~5K!E#!VR}'U"cQ{aKpw;Z+͂jԵםp[3]Kb; Ms1x:BL֬VеbDk_E:Q|,-{%c43p~ZLkLZk`݀eY@g  mr:q`b]+(EZ؃lFfƒZAxoiQ]n5oI ZԪkL+d"b t&Z je y Mo *s$6RC%X#'8uY{8pϓ`yg#M);zUٞKݓ)1e}3~b_1\[mݸ<赙I=K+)EmO⛓g7Ӫen5nb9,vp3̱lBA|@Ip%51&QZZgм$ Ğ[Zj.}IzsSԏuxぐaϡ}`V=sy{X:~]½"$7zG$Տ /X=5NV}HOѿynR];YNO>=~Z+zΥSEտ>*> Lc'R7}`:_>k{\1(++ak Io߽?t뗯Iz2 4Ѕ_jd.&ې= #rt n& hCtsH*c,urfd-r&2܀m۰n2DbmㆽLQ ͤ5œ{_ lq|%`D3*m(b;U 6cF-& Z&SцB໠9Q`M^L/h!fA6vLEXk2H'ltO9a X\22jG{- LJ+W\)=dGo۶`Y(І"{"QpgW)J9ƕ 6t7Q} Q헵orٙnvw˶_ Zpx * [RI_e24#)ѼҰMk=@!]tt'-]NQvyQMG9λ)'muGoSL?C+\H&m6N#-p8ن&wNi-z^%%c 5m4PG1CU7A4P(8cpO$>}su#I݆KTA5C,ypXyDT%k,S)TpqBR"4s^=r2meS6 Ƒice@PP"|VrR1FМ ԍaJ)9{$S3shY\(khۚ2 XgI E m[swW Mn0"Ĉ3;JCS9QB5'3_% gdk])4c®k$#EqhĒQ1p݌K$=(ETTJE-/~K8>k\CV48VUڹ*ibL$ƚ9!%i(N`>p<1X%nQoRBըbZ2Z7m`5ZQ{ (0qYBı5W x%q# P۶v\s[BWX֕&"qBR$bjɰZ fy:뺢@a:1W%EZE,eP o,/)"ݮP[kE)BG6]tö.dȚ% _)hz9Ϩ "\cRPR5 ^ko~w 1Cj@`p# +zeYq"<;(c0 3'qqfaFq'~(#Էu{ݨw3[ Do&XPYk!( n%e䢰ƂYSazH`1g堠KEdZ1#:5pw?z~JL-˂b V0@*4*{=EC*#k\|*ML|f}PUE!L6).$(Rw#R47""BKL/^a8g$QKBUջFL j5 X vhh{)&1*8yiakJ ۶ ?v_q P4>DK|;ޏ5WJ1b~Z6x7p}-uxGĆ_ ޼ |74 rZ})˲chuumHT|Y|O ݘy|U44C*0r-# 3z-%F6IamH1ڷ+~VQڤQ<(F]x JIi3zT>}l޸!<$|0zZx9>φ&_:ޘ;69^?tUԿ\LZB{C} ';C}"eߩۛz|ޠV.t IIջD[=LY/?5|%LǟP?dɿ}aң|I zُD'-T}t_`=8b"8S9ZpPADw7`$& H $x#kt0 (^/WJjXwsζEĔz¬Njc L"(,3 Jiڽ].R7n:}BQ5K5 ^uѢ;ha;۵,*F&l &S\oXz= Z]vԲs:sFN ې Z%L퉉fY6wRI3={ꢿD< 6Itt1EE õir͵, f1lkAlQVj #!fZ!fu,Jcg&f^?g%[Ӹ*UA" ;B*rp.0G?q9r9=.׳tI9F?|Oq('lW 0x:$`2\ 4㿟|f~Z*+ bBjw`& IbKK31Mb U 0@[")esVLs<qaj:5ޟ%YT%%lXapQ=1FPtҒ ֠qB!Ҵt߇:K;E*εB0ҡ%;[Cu{{{lk1\Z9aFI)V`>̘ ˲PW5M78yߩZGZ1Dl?,GËKӄe,M݇[ :P u\70 X 5scP L5#g ) U֐^&7akT&J ݪ } w2Tꮊk6ʹ),RcF 4Um1rYR8p808DnC[#r՛RP{®վ)1c#<xÀat0("Ǒ5;p>ضzTAE=beڴ|yŨW-~^{uLgٟ$iR.8N]Pq}l-AW`p}U,W * UUԞnjVe7|˽ӱZHS\A1CNQҖ2tkPUUR8xk' E8"8uNLNGX{2\'*cʔ ;vab% #30sA)Ty.kfy^IU:7#Kb$I+v22i+] IDATV$Ik=jК5 g=UAU+|wZR_dy8~qЪ, l!Y-% &DT21DX-&2 XV&cL)r]Aǔ\0Gq;`Y^d\ r f&6mL5!9-7ڶZ(9`uxE²\Yd ~x* ua7׆/@8b'S} 9g-|nBL{Q^3s Vhe? /p80Nf`ŭYua^HAE02 =Ĉ8s=ތE^NZnJKd۵ٝ)F6ZĈ!b-*-pXhksTjpFzIUDtLJd0suvGO}8ƳgO|cIpHxT֮>ſz"n=75.s[OtO_?YV6_/pͫGE+B?wS>>nty,x?=_xo}SK"~(ZyҖ FB(T) lG2J9u,ɛ?O0o<)b pL\k͕HxUL%O(9XAeQqղ5FN#. RdrxSC?alLez>_&%inLPj (&}b9J:is[pĨLǀGp(}Ytv[1ƛ eUfJ3nPWӯak-~>_Xa'8vp(F]nb`sg7 "l)k* \iN2̦yB+45U{ )E+aڲ]=q1^а$V$Cp8dHc{KEN6IYvúlBi뼯7#` R f7)<79mh.wu  h-'Prr؍&]HC?˚ vbo:z"R2ùa{/Lqs)ŞwmBp!^ߠ>lһ ct.*e5)knR)4^3wzԻNumkAEZ2.02q".ԇ;SvoZ; fٛL=:C8}Egmx/PEDiBZWnl0xZQ@zH;2ȥHV%){:/hF}GA82dJ="Җ1Y׌HhbdNL:ϞmcǴ QTmjii m j2j)rPEݰUu"CC!g2nq0M3{rsNS'4Z4lVG k$,׵Y. Ji\muVU$4>+JAΗd}gN.go}0@+AUOJNC0іCq]9HV˳_< 6]bp3+B~W7Փk}%k>U4>Нr(ISԊi13M Py>ʹ -1`V۳U`oaiLVBP7S0:bN!BLQӍ 0&l":=E ~#Z|2kS`Uhh E+/3ӗZDCK8 ^DBKA+ݮ**],7~o^U"zC+ MÊP*8 {1RAg0pRZK4B;U0mY1 yVQѳwNL$@}( 4Qpks 4c$QM 1= Ha 2=k#z˾x<a̸۸nHR5g-+^iHPƵ"(b٣1!ڃ *IWj)qx|T+oFaF믿w )@m,BJ? /[|89YDe`*{M'(%"M$BZޣLc.B]b 9c>mQTI`"ߖ̥B:3C[Szn (.9bhVf<U[@)p^a-y)1cD-+r_~kF '`ݖRD{mF&-eܼ<%5vȹvGp%s>|hՍ^8奏G@b!:\K%LGkmMZ;E T%k= ;'{ݐR'2:%uCjČ6}'xόەI?~^z3޿V~`S_/&3}jI:O?%`?]i3i=ɞ ?6<~%7_=DT<|R?r3PA/G ~%z@ /,]qs->|xU&j]*7Us׾_TYr'}޺*CcVV?"Y҂` 8 ^~Ǔ$l,NpB5t |8zg RLVYdŞp2PaƎGy/ ׊5lȥ0I'b۷4n,g-rJG+JaFqfEY z"r=LP~JD]V@WJyOg2>"3}^:vP:RO0|7Vcx"_m?oѪ ֽ6"z,+JUC{R;÷}b1FچtyǠ%nRvA]#yº#js_9%aKTE\-"%|ux+ΆfØeY1MCeE bxq:T&h3[mݑWjI7+׸-bu[q,0VèvF_Co= MqH9t|A$k8NA)F*QŵVv4 <9Sz1tTL(#,m(s v?> m+R*pnO#h]~RUJD`'ҩL*ڒ-,Ld VhyvD,KDA(."hA\{nQpѢTā80`YreRЭpX+~-iXlqŔ;9JdI% M4:Kђ*G]8 !ӨLkt4Ɉ?XT&ړnf-F355hy͐ASfZ):;9  ʎ{~c]awIc}VP!lݼer+^xfP"6a%5#؊R%ġmsJ)wsC)$(Fqs#`!eAƺ,RQ& 1Yfڑ\A`ϩzG* p]ypDrI,ytYR -f*=:  T,+IVkDC;qZ ,tμK:7Fl+Jyo7/_aYV-Y7joB@4 ~_z?bB)R`= *Ѹ.$ADW?\ )n!q4נ)QGsCS4X^J9(m!nF,XidD52)r-6_âZ^!kV(uů)<^8Vy jaELX¶a14{V4&[|:L'>VfUϤf' ԎxΩ*U%!hHؠqF<1 *m[@(V(xp8*IRUqŀR+˅kqD.o 1"'^ލ. PO'Yoi8b]qE3R'qx+l0ONY_E-|O30NƑTUY7L5HUQR-#F͵j_Cf" {a+uVMƐ8p&XPDH)K-FFN*R㢄Bfm™ 9%(0Nޕz?&>'nwc})O}n~z_DVUGs/~<7U;f҇g)? '?~V_$]7ׄ?_\#OwW;j ;9mo?58ޟ.=&HyYo/_Wұզ KueȔigl<1E 6"Ѧ TL'm!{Wpމ˸a^`E)|%|}Z*.HV0\"e)r Vr7i.7"<+>Rl඄0āKN1[U]i(&JtGvs63C$=톛4ѩA[o{)ѥPwi^ӟ3- PPM(tӵD;vwYG:])0"mn.g鿦(&?A,=ـÈ\$EWZRV`Jdjq!ҍ*QzW!S Xm9) .~j)9mK3i - S9m+$Z)޺ӛ^ S)E,g- M &̓JEJ`Žoթ[G[DC\CzJ#lkOsh{'=kLG$Ƒޏ++Lj ZOnc IiD{ l??Lg19b4% _r,&;I1ͳ(R+š[Q;eC-noRL5I-Ml~3ACrLԳ1߮@!&~ck5B؉ ,U|Й}ӬָB7$԰a]kyk W3@-"ד%8LEB =SJb]:۵}g O3޿{MR U'RR p\P BbjW@,˂2R!UCp\0 0{q]:s&F(50:n#"LƁ~]֛c[ CXwQ(/L,MӈBHkTlk@L|5fJyD}X+Yք߶m3>cyRqE#gi$QV+JΜPr*I6z睳ߟHEЯהіJ9- 5k<Kݭ4Nt%^ c%+y-JN!fF*x_= pb5(kiP3݄+'?Lx?si _Jx_i_~}j[)l^iG}TO 0->*7U-WPnAяYq>P@G/Oxz||n8<_o*>i ^?Z[nns}pW0n:ne R)]DӠx莬OPn vwl jmIo6<80>QI(Tj\wT(ӋJ2D9cĂ%akd؄)6iP Z_'eRlgBC<88!hw7n"`-G lF (7k~; 24L夘B`siG' qkH!Y֓gpGaCh lTO9`OBc'l:3Lf*cYAR a༅idD_%]W\d'5]D9HT$"iPnΐ3rN<@:hB*"B:#PH"Q d ;߿1w`J79 =R0 ҙ"@_Zvd!Ӆ~p:Mpj; 2}n)^Jfk8~m 1V.QY׵/1QDyuH#ұM,bO :o8Ī'e0Ui:ϒ`o&k9-C"=$Q9 \U5 p<AjPC t[ IDATQW5sADLL馔nP͘`mCѭC w78eϹa{ZU/\`Q!#&(oUbdQ7ĆVPJ)fض1F 0PbкtsSJ*hkh`QYuv Eaw-WM.+Z\$mD8 DD mؕka=wƺ\8xb|ƶX1?]3UkNa9!gapBTᾢ1y'beZ-M瓜PR{@#9Å~B kU_}b)-:M1>4wl"]$E QLB(0R/ȭrs^LB;(9AHl8'TDJ*k#a{4䌤2N"ƴwJ*(ƍb7,)`٩n3WșBp朓Nm-IpP:FUJqB4\#K'cZt{9&L`l[wo~ ӌ{p8"0x+}=1W5b4(ԅ'%irFYĴntO)(0%#k+"es?0)4gc$zapPJ _)"\/ZxEq-q| BZ&+7wE JnD(WH"4j1%<('M =O+ZݷI|oۆmH3 F ]˽P֮ ogF톔"eU~^ucR(؟*?@L~Dԯ5VCyA jni܄mc2oRe+V\4 Y:jŲrzJraW'Yna6o7cFgE͌א)#>;MAALu{K5*%:4)-MXÊ;^|鈗|*۷)tse=$nE |Dz _㧈}]Vy~?~ ؞ 6B>IwiQWl*Jx?*yޟ|zsk7h2ߏ:|w{}hQϼ!kf pgo.'|튛AB̷SP}\j'W'b#'%ZboM.àg;ȕzp 9EAԣoRk7dswo8MZD2͐P[XptWmYm0O3֢V"Z/$E435ZÏ&Ҝ3N/N8NLj% 4~YVEz.д$aWEth.0F{aف:9!쭒L5č{Ir+ E$#Lr2*S3FH%̸Q51Y-D Ftuys-ޡR²0j {1{r!nR[֓3GBPqEKVwW_s ec$m';ec}ًw\{5I7V⭂qk>~CX @ER 令lLRli"a7HG{|c,~7ZcV ryCWtd@+8GB ,=}@*_Eik}[+Rj?o ],S~GED[rY[->$WB1_$A>8m),]'CؠxZjOHZi/UX7 :kh$5iԆц \?5;8lR %ř.XtW#Lo[L6q?: y7bލ`+x,"sq'%ڞm. x穳ZHR272벰+QL?N0X9FDD [k.k7>=-!=B^fxl+ ,krJ8ϝq=%!n~u[1xݫ--.+˕[\W'T\/g)g`. _3\mWc3Tn,8`6ܟ0#uELz瘀SZ)Fbt޾<΂9V~͚QN#+$w8\kG|$hZLROThxԭoRW8e--VkN<37Y{G}ARYu޿GsVsaf_zJ(ŠP(:1(is+RI:S`F GXeXdk=;[?7 #= ( yfy1bA8X+ECQ ^:p5݈ SVA[DeKThKJ[rv℆ %"tއJ=w6(I3Pdw|GV ($)1@5ÑG9QFĿ! a]W0d)@>xݶbu]-fIߝ;zeE Jzip0cfDcҲVU7>'aݓZ ܖ~K5תͼ@5]7E JY+ֽC\+yӄ6 #`uūWY8ML9{Q[ =aXz8[&5c% 2,hzpY g41F*5qFCU2M99C#è !Ոy^Hݴ؄nȾ [T!1BEʼn&ӆVh0EyW1xnFϾf3ٶV\ AG/P;i k "*{uWrgc $s9f9*؅^@f%ZG?Ώj787}bN~{RB-,}V8pyyPp^y?~ x=t׵$u}M;k?!n۳3Ucm"Dd)|p_iNk -T t:~DKC`t<1D;GU~j69AGt9F6/!|g9:RSs/'шϗUvO{=q~kg #߫g3;w2_T,NO* %{\ X=J?,@xZz"6n ՟K[ꫯۿ-;5-)t5T)%CɦuEJl+_0 ~h8 ܄4h^ MDN-Q4{Aܩtla`Ɩ 7=M_0s#B /_r`%]E0˹PLWaaZ CEiq;е rb` 1 $AgH"|YN!z] XtY8Ax ŴD!jz"&+:O)!QlZ"/>a`k[r7w-81mTk$hc0;x/{Mx;١ q Vx*s7t|OZp\{.Ԋm "0۞nqbuqO4LaF: ʎiZYf=)ROCCH) ~Kֈi\ c[9xs)TR۞GB߿ׅw? rtnOByʽS8'\i@y͈(C mۤozaq\|w׷7,.Z*]33-]m^aK?We&"a~ȡBC纹%u 4Jm/"VZC=\mL_Z`E(;:S9@vKG{aRt>x%Ew؅fb`9# Bؤr)X\J 0M#a 9ĀЄfq3Q=qCBAb1"FhGc(4i-B\*DIm;tw387W!dF)"pDmzE0rim (9#-0`h PZ3bfيmJ!g18b?jb -q~)Rӆ)༅hsr믠 [;8kR`oѬ]@2h6 ˅f'}%} Ux֐Ts ۲`&R)&(c1hjaņMR't<@qÃZh+jLEBSH6emR||cOժ2n" }R-=q n"*w,뇄7X@d}&3mD;kc[5:+`Vkq.H`g ", )CQʀt;lƖ#R,14C|5%8!de[B1;x_} %7kI"jIÖ{ƲtKo4HoMMK2kLTH4L5ѹp٭ iLD0@ pUĜ߻kE伜Y\"ID`湼]8L#\b w\'˗/1zu݀w=vR&%|wͭ 'SNn=.K9L f }@VU+؞~uBX -Ǿ616.s)Ź~HumP@*k i@NńZ3b v5mQXylB8-qr4pf@«/I߱4Ę0)V 8Wf^#mUFT1\4$8` NP y4?ŋA (t^׍Td߄iSOz Oޟ{=WJ߶mxwod (tIe)X"Ɖt1s$Eo8q 8}8qa{?@  =_Ӊ"TK"ZNpDzP攰0ym]X1!<tkn=Q{#*;F⭥'"0e5k\+R1`Ԕi?0,)c%b"E(kؽF. ^p0bLQ4,Vg~m-I((aXL )=5FANFŦ\\2qiqBJ }Q_si+A ${-(^Nj1:qcY6XqQk9Ep[;x7;aY^ܶkcBn]WI:7$C43V ۺbGnslW}*#v<ضqJԊZ%姵hQ:I`N8;1Az eeZ bg\km'V_u0@5ciX97!N33 p*mC!y0nhHY>fH!˿=cIhvfӀ;b Jw(DV~Yf.MEZhk=hw;$ p!`Z~j= kjՈ 9g(JAYibׇzF-~E1S9's&n+uZLG0Ǹ! =XBuc:Vᄻ97ض ( /^ڕ"|3VW/Hh>exȶz#UM=tGynlSGk%o$҄{BA8{D>N{U?8 j? ^'k;*% G.o~I}? vlyδC!uYp<. ^~7Mt*j.XKmPmA!~5lc~dZJq:b| {l0 vH)Iʍؖ.Xa {i|!p[c&݈]hǩ7! %c$5zNKRk@m=.QC@#|VL~<#%-֒phkFӢԇ9!W+0 FuQ˒`,f 8"rL"ޑz!` m>Dx w}( ھc̕i ƈS v Q8C+&)'bx(ꅘ(f •fRЦ1LGن$b~mkRbjTkbէ݄ q{s8 D~RYR/C;-WehCR R 1{y LMZ@i^L%Zu=֊a?=˾%JАП3,i\E' Ir "+ۖŲ!XgC'($?-NӇ zruP ![ЦwLֳ:"mI}2:}?)C)#"vt)\؁(&\8g?h6ZW PRcY6<<<`'L!OCO$oֶmxykL1^ :nai"yuJb kL ]+ 1@#+0@d> K90Z{F2j圑R+Im0f&hXg`aqyvDtlnp9++,f*1UzKw0ֈAc\PZ[(КZ2Bd*:dbB8qssd yur9r. |&JjƫגB|(~Đ{ =NfQzEƑJ4GQ;k[5136qw{`F|(݌50qE,Bl #!8@ x4U+b gXc.%[`0iL]9lk@I~eaRJtia9|:qSDTpsAyUS}ZBR!f!F -8"?: Ǫ#I\b+qha qmY6͌ B຾*-BpIG)L)#koVT8 VfT!2uX7tFɡHK`9_i|DBk^ϫ T')'!Jb7d,&tGGZl!H?t5sV ݎ.9|͟?HX4UM:JM+ZbVuHwb4 K\" OQoC-v)7mfXQu97Ą qt cU7ZuNfS R夃Ab;[=?9;{mcvyϽ:?^)KZTۿO,+t'o[}3㣯6Zo^f*hLX7 H҂RND$&qRy0PXCBa#SoppTV$_56FjU$z_z`yurǃG=} 2L|2WO_ (T$D#6*TJ틗ZX4cG X:[kQP1[˔5X <"aEvMb 4:e5su"И%!Z{@a0Nn4ӌsa0L#Bb'=y0! Q2Jn6fwE8nZ mO+"xVw'A,CA+SRqBy X5%[nR]˗ 〔 qn:*)g3mh~$g(EF?-J,˵J31$;YQ ᕦ!(aSmGj3N Q 3R*Uſ; Jk;0yh$llj֖]$8hf&=no^py9~pp#1d4bG+p{{˴`Q -U##Ě^C\yuِyb ?}-޼ ^xѷXee+U6N 8WnGZTu[%[YK)brQ^%1O2]wT5c=fvR2 5{}vz>濅_5|}gF}yJe]%R+.AG_Xlð8 0_tz$ ;“~އ;z ҶJ,u/Q׏D+L{]O#Rn\ןX=l@#VؗtCH}.K=BP=߇z=<}=h(R|4jYU+ j1ح/ĕW bԕzֶ/&䪲~d;#kR+Wvw_(淿r ݟќ'}y>@'n?x/O]>3.s_gPψ?%4Vq/->' ?ga[=:}JwT7`p|iK~SF+ƛT?rep閥MѮU>8vY3 oT``g{`qѽjTiDVgXg%e$=`i`ZOy3v &+8SADR K7btccJ)KJ7.Ųpa?_%b-ӝF^Q^bpRPr;7 \W.y'¾p>QJ)x4k,bdCB~It֬(R(oϸֹ'f+b03$;4k.{|lnsv^gM۶*YבRߎa|:tVNl+&INX3eF]]/U༜:c9LLtbGλ=/J=qB!l9GOۂE?|=b〘*}]? r.*8onnPr=}"nGy8t>w+!\+LZ݈Ժ2(h F(t(n´=yJFͅ^GSNNbTQNES&ǘ9mbj& YJ$m[xVcµ!ED*{84 A!EzGvڹDqȻt=+)rꓔ՚;Y'qW+j4TPW)eekQi8IGXO2I0֋ء.C5ղ"ux<zOs{yU(m<F8MsR[(T7eL\l%W'1r( fFXĐsF*;dwXWLj0QahV\ʰ ?2 cijikRKOm$f E2DfuN)DdNſmò+۲ ogԸ %1@]L@е((*U!ĹVBjZ [#RS&Bd bNˆVyTFt<4bSOɸ}Bot`^UV[9wR Zu!j8 / ZV<5RP [;x?ŋBuNJ3ns&B;qaP;Q+e]:#د=Sї:;!3m80F  SєV8OBWeScH(ٔu|ksuTGMA[]#^3+B!Uǂ[]=U[ã7H}^+yFf˺xwx ?3X3u"D)m{I ȞuF( n3^/S;Lm]sn^:kw>o&ϩ鿮 F;,=Z_9DVr=gr"iSEI~-l|Ϧi{|wxRL=!xT2"?nŞ';\+P+qXCҎm0J7i1Xn[J FBV=?ԪQ2PtjS ZJi@eª* ':V}9T|Ku#OB_ T W z;ypzR[aUQ,fM (ҟ][A\ΨoC`WKq_ϣZhc{b  QQLwF;I5$eP+(FZYo "i\^ΣZFzbk)\UQQXGt>'`tױN V"m z&MI& mS=+ e'M&)^눊ωf+T)H6{ # zXGcZ$E<뻾#T ("J$RQ*HIF%Č-flu8w- wd h# ꔜ3UDE݀,Lx%Q8/ qRD6gib}1 +@J;$B[^KcEq]IgӎFMIyA(˲xJK>_-'cf3?}nu/|_'|sKoU}]GbGO9Gvrg8rT}WnvWo&J)tM_a(z%O~&ۀ#פgB_^eGoJwp`72LK")EVZq>x1N{Dg&,P05voz8{Yöma [*]]p_~'gG((|GUBjN(X.̮W< t6[X%KS{c9:#." "S!@qNYXurkAؾB)N}s6M#m36G{~i)oIz׊"ʂ ˿=W?("UZQv"7vkmSуn)X[)֎*: b 9,+d_m~ׇ_?WX/NnNfnv'mWaepG6_O*^~#Rؖ<"ׯb߿w«]vSݟgJ|ZPPI=$.{Fɪ"C@D:X N Hv>co BM yBBwSV&A3)9ԫ.i) R$$bTһZaiY{[c(&ƔTIP0JA 5t::%dTy] GL㈇{x?ߋif58q`=JƋDcֱ8j~k8k#~xyx~4cJX)3YB'Dk4TplLwf11e\Zd {]޵~0az3-^&Y_AIj۲ v:eeo`'9TQA"_iRbp-b#hhX9\k(;s,0ėIi̥w6İ~F+TZayEӗӟC}=~DzWz>G~]}boߞ@Z `_Xm>ꚸJ⑜ؓi<'WW鿷jFj ?>_Wݝh }'O_'UhϿZDΰzI#K\z-R ꓹcI=o qěob W1$oco~GԚ*n"9cDTR9988ڸ-[0Rֵ/u_ ߥ<<<`ߡ"\3JxZK{5\rKL˴/=r!h|LvR0Lk4X ˺ba?ۆAeA.04z˺IhyCWo>N0cԗ:J_qTp\PD5m`t!bG/Eonҭ)%y<*,=HCpB~ׯ_~KRH1@Zl =༜pnG2A0U\ueeLPr4 qD:,b#b{ik3R8RuDS0d;k9%g@9 kȕ@Q (eC0aVຒސ H_ ia`Ǻ.p_iAT8M3۵^\q`ź{omHcbcs 5(ikr˙.Ih=OG@scbbVjij~"+CEI ~b@h <` l)RNBfzƄsV{W5pU&C}\ Hf[$ٵضDfUvu7]%u_zh]CfMz )nV,Td Js)zVUW:Z +ZzݯNP_ԯJ2Po-UةYj;X7n(hPF w+P|*yƨǔk̹)CkW?0lm:p^brYuF.B`MAIjVȜr6x ^~$v @)@E2"ໂF^nYҞ39n%!U:4+i<uᭇqJQ pR`]Wqj )27L:X+DxY֋[(52y0 P)*n$ $yCl0"gZlR*rt] V4FJ2B7$/鎱WԪa;pNo1nU&1Ji cz8s=X%q" UnZ1 pҕ i'V\?# -b]w a0H6z IDATJ=팔p~ļFđ|G]Lw^jIw*݁u]ZD@m|(~|ϝbs\ϻ!vFF"x/9^ޕnOz Ad? FWrVwu[5MϹZW?֒8sK]?P'?2]~)r.F}Jgة<`75 Od̫_TT_Gh̲ O)u[(}daO.K%{km[!Û7ݎU0Vdxo+9lmgG? "A0ty:Pjr! ۛx=#eTL7M{,Jk<<1&Xk8X煍qXc0@.Vc۩&=OpHqJ="yrmq0T9瞷%gFC銴G ȥ@oo:arx1k%{[)qϨ-j}ĚJzcAMDqtWoPo7n7=z.otgF,5 W@Y7CkDJ( @* ]*$>(5 (QRM/D8'uB.K}"A3qҢE}~JNi*RJf?eEl(JSH`vs)[1WE c,\RZ҆` 1PJ<u['7M֛K+ (@{X)[#jtdJd+ٺM10an]@VT X RUp۬דUQ@Z N*Pe۶`^ssaFU[ܱn{?wopmZ9U!vW}< >FZMO+b:0/4#xGqE0{(1)ޜNZ<ɇ.b`G5(2>Ԯ8LG}] B#0|J4 ]k݀yYqYv/-{^h)3u_qww%qX뤾Ubs{j%Y[tRZeŜPEU-K)|m0Çp1n$H+ly^ 1晾lۆnep>"+Ko律es}? K׾/ ԟyԍMVM;?Ur99QGp>&c=mVY&əvQ fpD|[IwKVeg[}|roKη5co^8ꅉED^}r~+j׳F.*c,3[Fݧ۶X߭U."-+V h+9ĴȊ*obz8m ޽{=I5 T|dϰx<|eso-̃ec͛7J\Bϥ@e9?F7o*?}Ƕ︓qJY@]fc-HgZ:kf2J1w9@{ovH% u RƾAk4sɰΣJNN%g }KDZk%[ې-emQT9nă;͘iA[Z.6ns%:-yF̯lVKft*c@#'yg7m^Aq=cnGMܩTƚr|7! IsV1>nJ2mG ijFY,!Setމ-?ƽl>39=QSJ#eWg*3VJ\b_dIuy_WQNbJƱ;KI*'2;E@̬a]`\f $|(cczvs*p\p<em^굽giB)4Rj՚leYQrNXN,Y;XG@y (@%M"@AgXGik,qཤ d=IZܶ\םMAi(*_n$Q2K:6cd6hTDʽ4 psFy`엌Wf sמly~Ɵ˲@k+kUƗqߙ>8g;I+(`8wa bse6yN\FhJ)2-*@XpO"V̯Py7\3a|F:\7iXxoȕӈAj &u65aD{G}V,2w-yx8^%h<<:O`TiQ}!V'Q=twP(eQJyrAs  t$ǻ7'ƻtq~8o߼uWXdίB!GmSi \+Ñ{’yCTx *5sAZ FIJ2 *j(Jv+pxH1 A뽱a#HyZohu8 n@5v. _}}x{gB#cWm̗ ]BkV XR0/K߭:kh{S#9cQN$B:h jc ֒UqQR1Pt_hMSC^MП(K8^1&OWJqUoZGº(Ն Z~v6%>ȅ r?B͝H;, @QEpW5rhȑDQeX+m y v̝ T[  cGs~ӏTNR(k8tjkl n3SIC`vvAi̲ 3xa,d(vJY"謠 gD\j%[FP%d4"n;%dp#m쓭uˊNo 1Á (5c(ڽ8K-B"R5S8N1=|sFPUA e= qJ|VFkXPK.{ScݚDah㎔ b$y),9TyFJ1o~(\{;66Nk 8E1ҞSq1 eL+ b]rDYH@(5xm\4ҽO{?nZSuaZk>K]jkXcDv޳Fv+IfY;I:5%5 :zk\ bIJ#Ѐ5Fq~\o~#YRJpa]wLmߑb8Nb^x@z$1e,Ñ4P,8?< ZO'˂;k{ۯ"\@ 8 +x4-]kZ\eƺ^+(95ƶm5C;%+%2E^ s}"U5(!-hI\d3w?Wx/}/4>1sGڧHe."{t<׏>gq~gֿv?IJp ̩Cf?Q}qfSիu_t>iz =CtXꯠ^eZ}Lq)_<-k["Vѧޥ~ o|Y= K_~A7=$GJU~Cw]y9;cz^Rx΂R34pww?4.MfuEyG la+{R%lfRp8Eaq)gb--օp{X=d5pA)i clulRZƓ~J@l̯s(}Pb{_nUQm'm } d1G\.h=F90W[ YV[p8n+眛K@[$.F3#Wi≠{,3iyZTEIKF׹h1EH҆t|xINX+ێq`l#VYm_io.Astqy[w ocWේ%vb 4{j5-{{Wj!͜T%s5/80D[ 8V:f[ rAb XvPe^a%hlsK7*M?Fx:BbD,E9K\mNj`Glq< Ƣ*e~F*@NCo~o&b $YXkz=峐ow=}Cj~-{Fǹ_%۶a/$F!X_>4b+ɞ-!!P {m\0Fd;yxD) q7xNopQep³*|%ugǓp[$]~#`u 4JhnBO)EYsI#Kw"+ߌsxAi!Y!h#m^QcTW޿Do[x#!ף-KWRx_jW%‹Mڀ_h(_go,'aWbȮFjodN 6[7% NM׿x^(sǛG=_8H|Ϗ~zkWבwC [aoSbgIG,T#BiI5 &9AC8kL9XZr\*pe^OtQ.bh 'ۚ6k"YJFqn,>*U+:@Brkplm.C/Mo_e]]\ 瀡%=`˺E{^ 8`: ,k[pf'k;P "W4% *cZSwx),MzDn%q}>̨۞DޣhinJ} gfF]sQ]&JMEy0rTݎ@{(]&8 >@{U T.PP_  FGҙ" FLI*y:xqUb%FC{,M5#BpzcJHiM!PȉuaĢa< ְj5y!2 ^R2|e*Z%ڨtm߰oBQjTæJAʍ H+ym6Ae0#0L#t"<\TʱZ댸giǼQwk%Fe *F+*~L;CBuX)8VsYZ J"[_p=ZubNW':pϳbG !:Ls0 atd^Ǿ'a"1/!NvbOŵKkR+BT([|Zݻ*7Erm8b#@HݲL bJ`YԢJab[D18QK4bAWXi,q"kVV kO1vV qOTvp8t˚]axPTx3͈R9zrxm۬Ai"ۺI$fr e%h- !0IMȾSٲ*κ^UPT"T61u89=vXzHcDaⓍ.i;Ԓm;UZ!% Za\|m,s)di@ |.zX4ۚ͆5қj",Oڥ AJTb[+ -p(\-Jč wOKicz7&gHeQfF`Pwg ɧnfMHe@d:O+j-J 1 mʍ5Va#8%WYJ2< QlU$"(暃A_Hx{;`X;(kJN=[Ny*0i$Ęq<.x]כ\TsTk2ciQRFNTWYXkTެ)ene~K5a̡ Ϋ˲Ԋ$>_.B|PKF9ڛ8VVҼ)1GPSmBX d"\[DNAw>x[ć0C]W4c_Nww=9J0e:>}=_Q~Uxxc\/ohp_|=~a`?/k٤Oi ㌪[uW}v`^uEU*6^\Mtܾg;^C~^M<:+O;%*kL翯?՚ Q[5 A=/N/\g1҇7 ^r&^.a16N=Q:xlms.bVnMƜ_X0#@S|Bn}sojWg?kMe]//37t:˜XjH{^)s"dXhacn͖Xt;׭tljN;1B`$|:p::@5 ]2{)n4aTQ(hQjV"C`b߽m{+`P >ro0] @Vp+h1*X?bSKlؖeTAfjEAhž8v\K֚VJk0E-),b7 tH.-ӓlZ90ϫ˦&r.$U0¼5Qdw,?+@U"d m"T!~=7/ !f^bLTF"JtUǶn}΢2`So!{pP`l@UP.E*r<ݨ jU9ː)Zat9QI#*JB#$V#Kc]Vw;$J s=InFIlj /%!] +JT@,jH)RHrP[˼q}|L˼*UQQjݫ&.Db }p$ h@[]\-==ua Cw mA@r >PeQ3Bٻ `v\R8+==w-k`( 9h cB?V=-ԭH%#&FY0#*EN %G%@cwn[k$$lȠ"^ZuJ8%$hŏ^LWBV 2o~+Sm/K2 N\ZӾGֱ2eb * \$̴'!#ѝ㺫RW5BkikFYHT;!fOr=@#-Wg*'WK.W' Y$Bi&k?~;K;s~f_g_|n^}:>+s_P> RJ?u){zdxQ>lGwmz'⏢?%+c)uV/dY=:3)էxA_o]=OT +v? ϑRX ޥ֟93\q2>[?Ơ^OE&'#B7Hm3W'|)Az.sLKɸ?˺0oabyL=HZ)\K=H+{(nm mE.jD d6\)n̐+ag Èw_R yaXVfÀJHe1ALf4A#UdТgnڭ1"ɮjv4ud]VQu+.ge6.߿テ֚taXHP̓&;9KVYH ̿v8'*y&?kA*QQZyj[Ǐeι32RkՔ:QZX˲ʵ35ĭ_C蹴0$-ޮ_܅4dzeIu󇫨hJ]ݚs-01vNmbgLSD7bA+u6V[Q[T ,12ZA׵75y`sFB;3d]Sj7f/^*jצfsj)Z77vTySb|xRN:+xdE4MM)(cr i# ֛H BNi7/D0q>2vLɥ[ohʾ}g6'#Ԗ!x:պHdF,l yQSmЋj# -(a.^RMK n4\C.KYu_7X׍`:cݘ}}+aD# bM"g뺠B4#ڣVίdUFvEQM-v+vYb#ZS Ň q޷}sϘ>b/p\ZPro*J'oT[,Eqy\h^}%EM:pnʥD2׷tpgTrIGZ+;m۱.(kÁc/89 #Ηd66pq^|wa Cl+j{4i=*=mAY4en;eŶm  涵_͹rYX3r)q,Yni8\ĸCG2+E`^V'8gB|#84+%sMTǴb9w/3Nw'23P11WughD8DM%}.c 8 !kTfdֳbȉMgc-(J΢R6k9K FAF>xF+[37-Jb@BV2dpP5 1j#g0+ .EMڑ(yRH#kGe+XQhB 2*Q8rq80@[E][(e 80@2n1ĒQkBG(kh TZ&+XGeh 9ѥGR)cC' ,?2(#{#PDr+ɟ-:'C(bƐ@ȍ PuJRFȝV;HT<RXʸ(*cue_ XIW̔V,@yF;R8Xmo 8_b̈ZO an R̸0 ܻe- U̎>fk- IDAT6!h6X_qbMNI I!(p( z[c F@e]UJkj3FEE$RXGhc.ap5~O 8"e*a 7x<2! ~;ihO:#m+򾣦 *qR)G?,q%kOH p0 XT:qt{ #!p Ǻ$Au ^|yEOwG{ Ht}Y_uR}}9˺A0ґ FFߵ]s\+=*}cCԭ"ƚN0z@)8(BwM-{h9$V_nr/M ԏ4{_DMB߽O['%\_m_zT/c@~zEcI?qBY2`RdUOU̩k-W@uPK]ո_ G/~WxB }eLϯϯeu o%'?vk 5¤^#rꊪ7^[[.U3CϺ|-azJy}M6ΉZH0̰&PJQ\fw-0U,e5_}}GGYQr)߿Q2:B|UWw*Jky ,@VIlҠ Lk% clJww'Z@/K?kX7/ AK!bUm'\UhUQB BpE˂kծYEi)Wa,+lۊkhk{[Q5Bm+Ѱ݌]~ur]eԷ\V2|iIk$[>$٦gG԰r 㵩țHis?m߻55$z-%ZundKcL,6֢$C?~vg~q閫-39gܨstkˆme.#}= RὑU:bD5XP*%@Je2{Z~+0W R*Q'!R$s$rVmMcu͕b-U=w|vدs > `Z#폚=^oY6# Ȼ ԉ/V7gfΒ=Z8Z[@:a J+&-]=?gWӉSP&n4nKVgv[Zkx9%;T"h;b58BrL<@?|ù[4ru~KhXB)=!kMs)8ƞ!uu0P]cbm~/&oMn5*!h+$(,^$nsaB[}-Z6/*j#ºm{!8m۱ yF4=4! ;Ɓq'0qekA+0 pa!`PUo(5/,GI gZ1:lۊFukmpƉzig:(p?aaUJCMl0;pww;u^UZY24ZQOe| )e_ H69"y·e=,}p &|A;}QVJ7uxAh忺i Ri܍(י7[84ֳGD&P` YUO45S9}5#2$d,gu.7sD& YIbp?ٯ*!$KkLc9+b]66LnwAsK _-R;u]a߱ he^GKNd*7 VY:Ea rk\8P0lOG!,q;=Wj QۢP8f&cI̤ఇH{x|ĺnp9Ј*?9XS~p9&:@08tϹw^UrR?i~-I.UQrB%&`ۓnprmb;!ًNs_UI];xB_jg筟9_;ѹ =庹? Ve7' x>؁Q:+{k}zPyC˗+C?0ZGia??["ɣ^˚}x)F"xw-(~<᭮_O^LY>3H._/7\-JR\[,d 禫?98EVZ|>w? y_VR`Tp-أ8%٘%m5!2cp(yK,ObGz;m;p{{E/} rX |Zp_pON21a&IjS0(cDDfbp8`FHLmIpֱ WIܬ =[c-т*8P*{ˇZ)lk-AKre`,cҘh!rP 8)";wqb(LC1#%"[s8]k9jdtQ[zrapN$K%ύ}8@+>Ζ7QyI^%Ql"(E|:lugOBmB}-oQ4iI_#e*􂨤fd?rB5F&l}cmxV ;1ȉf޽lcs%}KBQPd?Bon'&(mcQT8Y$FB/ 8g@^E99bd<>؋'a{g_oSONHҟ燎kC9 J#WI $䂆5wf ܀ 1 ض0b=r`%MEз@`:͋tfoJgj%"t:ƿw_zjw="J|z:sH,&+4xc$&CjOH |\uxYc>LOXY+)&1N#u!M`ORtعK]giDlt5pRxIQ.N9/}hX2%XSPUjNKok)z^z9wyvMLzC#]C菣g6|'k8ۊyX/_;q a ig$k1YKSJa=u0 $_(ُOry<9~4OX1^Tδ!'ECdsۂ*]P0sX2n70 u]1Mc72ia Y^ *[u=p8"1bGN1в۶HWaV|aNX44ː:/gބzJQbr QDzoTp..:Ukv׼mSs^aw~_d0`"uNo-IREJV-UVPCR@TŸlНBԼu䱕 U3jN9E4oDJ)>R0A֏b>bfRqٰx/ݯUү ӰI4gPr5|j MDМ J3J+IF{c\7V]WimPsf_r {]S7d[|:qx`T)󘶖L -eVx(H+z4#":[Ri)w1ՕکMFRĈRza~69-tj.!)kbVꆲ' {~-k"_.SO[~wǬHﯯh Ӈ:Q 83?~Vd!vm[z3V/r2St^9>;_ ;_zOzѕg@}>y|+):-ER v`AL~a'ݱ^?%e,g/qwwۛ#S45hc*l+=F ILsp=+m+R8tUH35s0ZI1N +mdȠ81b u^oH$s$n9TAd)l[bo9=^Z*A25$DDh]mr>x =l vI1Mm4cf /X[I#_#MK 1vBKfTN"bnJI644=5dN^p0RZWh+)ªVYBα Ŏֵ79>r;/KT1Dm 90-fZ'mC e%VuFٜSoݳ-ɀ*!D8Q*03bqͲn!WT4a0IQ`9 >w] kضMF)DV"Ң'&g[GxD$/ G1Yq6/>,8_9@||Q mDu b ck|y jO74:B ib:ao.R-=hȸ`a .H2~¾G޶$^뛕uԄ.eݘt]r=lh֝ ȐXL^csT+q4=Dl/ۭb\OZ\ǚҗt6Gp8 dXՆۼ*1m~,/sċ]eqbљnjp i艕v> S'.<_4iCkkƘ20B)Rq4dDrJ; H\}"26Meg[4Z}oeŲ'&R=n-}I wh2:la sx||7hqs{#WoE@t[%5X׭S\=`?>܌oC]Θn"$g{+}1ͣ*yiH%eh:eѤv16 Jy"m{wc6c[W,N3rN4y%Cn`z*'w?k8m.ie%&,TpG m’\(Yjk1ʚ$ZjTFE臋B.~+&%I垮e] X;?maEF.+I:jɰ$A+1'\Hĩ"S.1`5ıӟ7whQx=Z z&-H sRWW)|1^7#zѝ U_%#^b-9Z^JH$MS0 jE41! v ;LÀT*`u~.,]ۃ&8lbs^؟F`Ǎ|v5#}o6I7o-jP m; qzGV5'y sѺE)jJIz/w z탬q4U{x3Bnz;dQ>ߎcG+vAM) |W:RI1 3;J0ְ`FMY@xvs6v\kH=Z]̆boצZ*wuOsC Rc~i#+1.~T ה [!IZ4PeQ~@N7N׭^b P0bfr%3$7XXVP䤎hp+q[siٳuSܙӋzoĞ[KkY<.)a47ooCQG {L/?o޾]LT䚑JEUt8 c/&Ym\0fH*IR"b\[t^أ>2נc4uzNK)pE”N]%h w\_UVyu.@QL^_rQ20c&IkX {efTG\'ޡF0 3*Fj(QB#_DЍ b6x?HʹkK m#0a |˲ECHf4HEyOA: ~Pz{F 77~ڻSh4 IDATxn-]ضU7x1Pi*#I H:F#sxKQH!RVHT;SR)&(CH_9!sBJzy5,y{Ibb=6<}e'=^B: !~܍c4B Y`JM^YÏ2R} to&A(&%"#yHu .)[15I| [ YEUqJ/o=>\i>q}JO.˙"KkwPym6L!du], nȭ5q19 1O(/ y<!FLLBy]PrW_EJ|Nӄ*m'nTSO{8 {غ:V D"6XQ +1#N'cpss'LӄwKҶayM1>;#=Р!kqϜo }g) 8`F,"f-T2;`uhB?iu\=><~JHI݌{2 W U WޤA(p1Pj׸6"K^Zn9EX}v5B@C M $-,5& _4= fN-xZ)⥔WfȒmn֩sUKjO#}V!ȴ\ K)0JC (RQ 6иB_5&UKwPWq\/,*V*EȢ,,&ZW~8{ӻO8c;#; '')lU**P% U%A*$$j1|@{sȕ|i45Kv&Y?J!YLM땇6R brg44B 59^m"V̽9jE^z10Me❴d6gWp&]N-{i^H%B[?;}QQ߳-;Zpw{x/֥!F1qhdxNuOB. 8 >WE\#^yOo0UK4e4jk3 iQsE{'4`: 78nxF##ELZsmo8`Kw46~1a#bط";1QŬ,ۊ=4JA IVBVsuBaJ,"­s~8Rw5mxxu8xR/g?+޶}K _<}USQk7o3K8i~>==sKK?Ǥ^z>bL]'hvv vӮ?>~sy 8@~W-Պo7*>]?" ^=^vx^pM"64q6\R/nR"wy}&eP x{3y9cF|"ː[Yvr֟󜉳vΡ͵u:q8!o5 8" >7ƀY,qqssÄ^$ ܴn8b'mD9OCr3)E6 t#oqxY {Ed=ѭex7#ZBIc=a[ehkuVǛ#]y:=pDDg6]Ktq,{\۰)4 Z׾2/8PC=u9Gȕ~k WX#:]Zuž/h89'Q!2 _#NJ)ޘ5 wmzh"vQ&[S鱜+&0N#SƋ&`}wuCs:fp{h @mnL&Kb;/vEd*v/M$9$$uOZPx1 SwʐNN4XqǷ4Xtڇ,ɂ3Arv.ˊaku٤CuɎw7nDxoKwuSaOd;x9Z NRZ.9gb nl'qQ . c.fR2iaN3hyvV+;i w9vJirhR)2Rj|O7sVض.H1iG0R벤H'HGsj@b#9'13Y~ᅬ/HI7Gʤ%sN\ic+:!LpH^+0 ^-]^ŘDzwL_Ҥud8c*}/$y[J[.p 4mA-_rƶ0o$B}[AktGO, 9E8c9>Iwh 0iTJoɜŐ5rLXץ )gm[{/_Ѻ[on2,+u{X_@abÀo~ 2,M=ۺb7̛gHSZa8O^.+[] γU 4" ~{',"-[2cT;{R,\9&޾Lχ)#n<М!ok T٠V&4_kxjF&4LRI; >ViXPZr^QCl-)LRBi,VϸN()f p@Tm3rdmA%0 !nkiIV ] m%,?wٕh>s􆸮%0?*7j5VHyUNү]/.PUx@NO\;:PE#+-q~ o7L0~0P҂9PMԸ*&Bom-̷p~n\iᅐBT:*@wRSD(91!*&φ! HCG<>a?==?w+G,OOXQq9ay|O?"  i]Pb~>#wž'O)aELe)`pVx|RDTG[PLq0NEûxҒF.0ǹab5Ƅ4gEDPnBiUJY \ǐ{OOkv4MCX+]$Pp"Iݒ$\yn^'L]r|;!hQ j#BLB%DL\-55˺"*b[@ c\*ox dVR ܟ,k۶@+oBr)wQk<90M$X*yufXXmmrd]l:GMj Ԛ>Hc 1ێ"޼^ xg{iQ{״6 %G|+kɑHY A I=gqńRԊӋ ٷeI`j4c\80xu[eN)Mӈ źmЎ쭦Gah.BͼK >$t= D73"\\HmV<_PZQ'jsRLRi5z$&s4r)EfbFH4?/cZHbϒ{_u֋]ۀ~h>{[_~݇~ۋ.t/5>C/Ηz5-:чBW_Ug!/v=^^,?+?[ovs3>%O=y|x,I?E:'JUqQ;;{[:`^p\2oB!o#\T~ˇWW~~?'_U`rx˾ V'OLY:Q/ha/ݑ Zg(8F.1{!8x|z80JD(%uOꆳ1 yw6_(hһ1uKPh9@ _%gY!JkeKm旖"ՒߩD‚`25a[92ULC;)+ Ř(-no&RiV-PJ8:t_/Ãm4, `2i߻8{u8|Fww$Zxyfx9RAH0UKRC󉏕D `qKEJ27찎UY8 xxx|1Mm BZK~X(%K8!κw!tF Z9@WxV4G9!4ΠQ,^#v]N?^ZUjP=%'",_ww%rEcJC 9H~NGxc]} u۰ Ps$I(ӈFDRBv`<#múnL_,˲{cRn!{[o벰Y, bLX3MxWvǺÄ}C)7;{Hby29 =D,ag/-38?:G:3,Jk|50vrXW? 1 ^a3(dHFLFG0fTnnjOix DOX d(J\2 Ye(:i'b8R\9UQ9 -ICs"D ̨L=($ Aso54u,qye=>@gzQ##A D1nnݷ0y+sE 7*ZRRV.VR;[] J)j,:<]QU(cQlp#vx?ӏ!b:^ێK)oN!8 ˯S4hm`56̹$BN ),1TDd5zk@6hha464 1P嚵d ChҸ3붊)Ri x_&!c `~VY9utۈu[[XRZAaTH!㜞 r~ĺ֢Ԃ h i~ 0c_wl1PC_Ja4Hlν*#S\c@; eEtҺ# <_IK\.˙(q9RfE6iҿ˽7|SWVDw۲! Ui")χ~^zІC*&I#](|KKz@~3`:Ch? l<+ ARڊ*oR{4.5mH@QH`=owoƷ#ןZ]*G$7<*]ςPIy}ZqDᗑ"p|ُUY_TCZ~="-=ULbTYlA>v3F^V??%E $Cѝ'$ "dk{ܴ*_B8)/Vj7?<{% п?s?|(o?{՟ /~v|gu?UmOAg`5kIuK;_j*J=רШ}⪗}T_ WOKm/P]?1ooj ՁyorsGvf' \>õKB+B7ypQU_5B} 4"v_̾0T]s~?x8⫯4 lP&*Ŏou^r R0)s@pA~3᯵8]8".@# ˰VZiU-G w$rYwHYc|[)*fg\uxۛn}mՒɣ%J)1 cK]qdmǀq(Hp/sp^v\Kpľaq:RB ~U9E (dGgN+9Qh " (#hnF[^\Beu&@[0XLBStzbd,K)1hmd;Ǵ0r~jPV]tr5H!tFJw]&U,( 1oft)vA.?tOӄ׎}lUW, ]]; Uw87JzNy+$B*jcPB1m釫txKҔKR)&K)87X۾gBOO's7ɴ׊ ͍(13jZC*qSםTuzqJ73)i( A"H!PbH9p<Z[eiyћiPZ{{UZ AA%~2OzGC "խV))&qj)2;kX8(M@phL(aP(U餑Rg̈́aXMa<p8H~YHytu@Z8Ľ v]U(r/ Ntz$u<8O1bfԁeY1Rf? )YYTZ7s[H`fy?gp>/^70 x{]CHzh⼞Qs xz|0"<=^Lm]+kO($s"9贰ZZ<cq:K78Ikp`FHL)BS[C^\$Q-{hX5fLU ,Js F ɿ˿bd1RXhQDh 1g$$MQ Mυ8j7KO 3VL\C\r4U9h7`FV Îm# &\ IDATYub*>1NZ( $h#j43n=ay.UYTTdپk}40mكm%!\JF\i1;" ޳G^*soBHHȰ(kfYbC`r)ؖ1UE$5Z4ƵCN i$۬QH<xQS?/o1JfWbzT#[_) CcOnc"S ־h8^' #y}*`Y k-w=0Y cE۾5zzq&sd֚(IR~RŽq0O-BKoK- m؍"8`g}[7XE<]iZC8ZHTAZc%'zV&܃K%֝#H40N2c]ν{W pZ+oԶ$:,!숁cv(oG) XGZ+bv\Ǒeϯ S.~HmLŽ>DTwisP60OwT;~06&ZItcD20Hz<

        L0)/&~6ozw`מ27EQR庛jӳjF F0VP㲬4jT&)&pg) pnĀc=w'N>vk (hP:WڍPpPE@afJCjܶ (d1Vy(O3o$4OLދ@DKO1V ]`_ym:%cYVl?xxoal[) ]j*~a0NJ[ºANJל. ~|1 #EYgRY-ǎ 7"8r>/XU޾y[kqc=/R1q:=v#H9$?fBNijYVg|a#~X,zl#PΨ[1S"Cl>gˋURsj:ɂ*`Z 0v"B"Ĥ)GN9pLz^x{<`ONЈ mqQ&UlÁW’Ncme`FIPa  b)!M0|:5#bF1ƉCbm r$-F)a94!FHdqx-ڱa 66L~9"D|>c()T J*)"eW˷UH cBNaX+bV}mRQ(I7'ԤhxJ'UzS.Dkcl4{emT' z>u[uRr?,\3cBjxӊ'Ožpp qO wW8%vOJiW+- xRF)dA }Gф lFw1xvg;cPeBiF}k!+!qd[k#gz;i;. khx.9/ (6}J.}(AFֺMSht-RjLҫ}mHv/#4>jU^I)9q9 cO׫~.y3UAsW1sҧiˆ?u/}>}=YWʗzG<0??ϧg 4^+Iߗ:>W\w}k&Cߵ׎߰CD68/K'UY9@,NwT3O?+G4dW/$>w~]r+В}q@f­~~|q7aT [ؑ)PnUŶ;ݝr'Dac2`d{ž iSBxʥӓ O|FotFˆs)1d XֵR ltcג<͸w/hGv͕ lRs yZk,늰qG;G.E $H$"wEd8Ԋ}8K| "ѻ91aޞ7"vH&ix76L%8H4rȿض0J)eċ唰m8)Hz/Jc6&BޭRW8mi(prM1˲ݏD4XMzk?kbp'Tnc"㜌NL-9<f_k`Y6ݳ)o Up1= D0 44!h`^#6IL\b. [cI 2#YZm? |}T(Fk Iמ cC7R.IR5|xzDNN:uӶA}-ٔ # ^Z?H6 =Ça+id$Nn3īVYs5~Z^ӏVrDI5sō;:!y@  $R 8 2)b MUҭu!7`Zcyމ"ʈa9ŬEyɬep8E+eQirmx\&h4<~|V"vAW e`{zIq:?=R"ʞBV \]&WJS({&F G)0BI)"iq<%Q-}C) ͠b)P&AR]|㴈]F.;sF4Ve)#aTw@ŔF\ " iߥ5t ﻇ8Uai.h#Rq ͑ha"h #C40O|q?a]z]ELՈR !a\NhԚǚ6`>#5?y4ǐ}?;Ǜ7X_+~Ͽ> REynBث hFLJCsGkܛdVk$m7HL *k4(}1FzS|G2|@qrxRpU9ƍͬ8gEPGcIqҹ(-BQ1ubuVDZEW^!JwVbHs٭ABY@WH#TwS] "רp~1o?Wo痍eE]3?aS~k_[?ǯ5_w_ o\52^PiE!6/3CuMbUs[f- Uk\s5p׍zq}|[wTCpT67є eW\q^|4t!3+;xm}5Q"˺#h\skpT{]CZEYJUwIe=j|c FAJH~kRx|zğg\ w{h(m԰l.aZܬCkˌNְ倦8:"f4mrfl+,tx`/j=HD6u#\;ڱVߥ¿T:;. (".Dfsְ+Q:l%=%vB Z+ri %,͍. 批lv5nlWN&zp"d2n ~wj)PJA^tyֽbBk,"eIql`^eZicFm= RY.z23䴂ul'e<"f(qsWG,<(}bNqؑc$oqyqwהdpʹy?R;gp#v>JCCf :V0SGYto؄Ee 2VXq0aX&%: T0Ĭ3kpvf8LRNp>`PŠkJW)` ~y^#JAk4Ͱ0'Vi(ϗ+ f8Hռ2v6G:S ۶ U`8Ww|6"m`ߛ肧'm;Z.ww3J(xc6{enH#\#&O= ٓ5[Bi0(M iYy=i;)ǑZ-%VZEj ncEkF{||" {=eO?_/ǟ]geBAEӀii6jSK@ =,Fiv?*bx7|AVsou9B3R,Zr^u="sAs?;R8?nҽ޻;c~W]E1fGE!_C IDATO9:-Q 5Fq]k~ U$]MpŹ$^w2tnZbxhm9* șlRgux7!G/sT_vdwtgSka͟W>Y7}/~eOr\['@}wnhwyT>kz׾%Wˎ8^Χg QxAEISKnC.ZNGՒaVd~Ǘ]iF)_q9w|f{=V*7_F+IM%9jkۼ*{,ˌQ'\#C#Hfц :q)w_g-8ӎ}JTFuNx\Y@ӘvA;11(!6ê$~8g,l$0F N?,Hag͏Ϡ lژN7Zvi]j*cj ̜a2zX^0D6YE뮻yK)0\F 4J)8OQEfMn4vq Ox|ied x='q5'{4TAeV 9! k]7"昖 N4~?/e45"bJ`VJ4OcBZiUl7qiB+Z msS!ƨf!LQΜc{F8f-Gu0a&b%~6x'-]<JY#R7CJaYfX ?~|wo;ssb 頖uj8GƼ 8,L>\62iBLtR`Ņ[Ѯ;NX4o(5 .~1nX YQrŇc dseS,Ac}Cr*\wPhx|zq>2I破¶1<(F"%.wp!ƝUxx\+>|RgS 9dOӌcYZ)3GGh޽{7x`E^ıNżNĬZjv{P:\i_Ǝ1=O(yWbݭmkGUdVc(zTP Hiq#)ضqۡJ`92M%N1&X}cI)Rki)1NQ,y&Ҡ07Mӈрt2YڈKn4jJr}u,cNlb ql[xAL8 /Ԏ)aYf͍???aYYs`B hS"$-QJ+yO!s?cvv/g\g<~8HtJ)Ĕ$!m[Q5 5KR2tb5I8mdo6>ך E79R?#=޼@9+!mu#19Zet5=M#r|(.ѮTQ"{*%25|F#B(h3k9Fv>8ﵗ?zC=+23W?|_ߊ\7fNy5Y}e}go9'uP9w>/9?_}յ^zǧ[g__G{^`;^"*B<~8]5>BP<=t2L=UdZLյW߽=vS|_O~V_9~|>%̡V7ʥ7m8پ7%7u>ؽVC|^3e|{~>?>*Xu_W|{~pҜ }݂MTႩ k4nM+/> LGͼ˺)̂TD823Mik-;XcQjXo-]Q#E2 K.Fc"mt\yM+"4=g3JvA2Uxc!H68UJ P>\}}s{otmܫ$M&Ļ;䒱=#: z>Yȳa lXAY`}AA2JG~5n+4]FzV\%; bx< +bvhkkط ޻i ۺ JC] k$Evu-2S)Jכ ݩ$篻4ijm\I er.1:7bMGki %7XsE,BvW ,NF1[̩"E ?b'L^5%}3=3:הPkB:k?xe#\VЁlҦF;Y2ŏOhx<_"34V{&qvWww-p`|BqoLv7^~ޯhUy n$rnFJhWIIi8WZFp NYjk,yU JZ ] Z40/Vx k'Ac8;pfL}њ흪n\MhT-YR+t+$qa`]WN8P"rd[EitߛhQ8K:(NhҮ5+}%V$WxZ ;Dq])4+(u~l_ ^]2_}zE^W~F7'}Y~?=+/>3_7׫7t^=ퟻ}Z}{͖|o:믧~n=kklW{md({PNP ZFy5~ o7/0^̧-צ|{r_Kﯞ}?S|qU,8HuWf:_~ª)búc>Jرd}z{7"IG?ȕ?bw ,##LIwB"WrsW&GCJy4iH$c3Z?8Ѭ% 31CVdd)ʦtII0 cVixC)M`Sf7os$ExNVlec`a'(}cj&%d^ra^QuYx\><,.< JiXK<_^y)(".i絡;}#h?/~duu,jɞn!S1dh`U5G(hKE^FE;7ݵsj17yY;`7ĘG!IU֛d嚇 S+7{aݙ_Xʹ`'R0=̼=/&<P{P8}OOP&#ʜ r$Lo1fXl]< )H!z= ww~w]o\DDqۆcZf.y^ӎ'eew6 &7ᲞOO'ޣg=0ǙDpY=bw1I= [tzžv`3u6ÑVWfxO1cL )f(0/1q7r+e„9rd 91RқJ)k2JPuRnBj1ݢbręVYZbF,5-%OR*(sa&6htap D= ## h"ޭ@`|,?syck !7{Rg)Q"i^Hiiq0ʠ6sL0BE@HvCk0o75}_u q`<<arrd#=杢$oaBEǻ;f<tPOleϩlNF> YL,u90Yz0g~+i$QPR V+)\#8̛d7[}b|.xT=3$0 YBkmXQsR*rJ畑@<#x\ٌ6x1)x]XQZU` j1f{FQX lpKDmu;=^R&Σ%xeQXiPPsDEMl1,Z|Hj{YzvgR"3̲81Z$Wm3_fgsI:DQ)! 5$4B"hSw=g*/?/-4t#W\G"~IJh[_f?%{zF@k9&\ P ,lNa&z5x?5JΫD5,Ә3،Ec^Xd649g\X\U:za% +(Ysjk߶HR3cw )%N$+9%Jss-m9֎JKSL *yr GnDwp$J md3z@T*ngb>sǏxA U sRyYp7fsE(p!<5ZMvP*=)8@lǧGy9al8GPP0d Wm9J#.3z7KqΑcي(p;;V<}|D薵ü9KjX0%Ci|a4t @q͡\6FxF.?<+s ќcGFѪwxqX7() CAcfQDx|"uLn"NDG;(M!dp~)4ZF.H܉ Jk8K,M /Ze>m_7B'e-|:Cط.LͨzQ)?C+\W21HγjC,W D];5 6A[*b@b {#NH(VTדP@ohcc¶oH`Ai&@588n 1GhKy S<;o{l a|"\OL4r¾hM!LaL&4Z[("6^a5)h>ի5xa9O8. )b/n9UL*KE|]XW1gOk,~;!hL;)di@c8'4(sqN[ Iy7bNrEV\ŅPF[Orԝ^wVbGmNξ7ΰX@;[|U%.T1:C֌ *'ۅ˟~Bֱg4Gn۾1z0krF /(~9ot\ oBi9&ʾ"RhTwHGFca=U U+TPRCܻfl8' vQlhFYCkҋJ6TTԜ]mἅ%b#bo5L`E_znH.Tkk#E ℶp$Aj-B(^!mZ;<a(% ݤ jʣ@tj&+ o`9,O,и29`ꢇX0{h!TB"扒WZZV+ZhUQĒ\.@+#kYSd65Pr0S\F. EZr?< e, B+(kp&kRqOr=T8G˾"V36lG3cCZJ5 69g! Ѹ$X7fee)2E˺ьi!% ꊧ'FYk1/3nnFaOl"R67~컭6.H؈q2iňUV۶ hGm-mJOK'MU?}ޗ z?_s~C}__\~5޿Ex]*2ҳm6zoa ##G^f)_pWD'/7nrV+K27sy2|;k͘Uo䚥  H椵Freb#E4E{.º^F6G[JtPh#?k>&뎣W*hYێo˦xlu5JA%G#dc[w_)4N!В]"2z bsޕBAf4Ʊӻ\Vɗcs-ziwg~.edY=|@`YTo>QH ab2zL;Ql¸fCwfsp# 4r1D:mРF9?kؑ!_$v}J"]uuszw4AF;Yh"M}@ R+DRk7y/~79+ԩNQñy˅~#n&cϕvgkZR կKZ$4YRЪXת*ԕRkAܣF >mA@! oޑ^`XKq sFu]S"f'*}>0FOa~4.`6 m1p<…%I޲lMh]tۉCh&KSLCYyrrƢJ&:H/?ȺiZpH|GzAI޽R=gMi87!kŅp^/l؋ܹm+[M{ ;8R,Z* wVa'eޅ>~|bLZ8/"dÝssw~`I>,BVusҬ/uc_({9.Y{rèQ_kACA+YwY3"Ig T.u\yR 65283u~$ڋ~ŗ=ϣ~{i[+}vS֯k?qCݮNSu}j2W{s`ǿy?;L_6|Lnqw=z5^_}/@JgeVw%`C}߾Pޚ-oK>;7i tL"v;`.|^S|6SN6? |h,,BtRdƦfNtZ {:cyk-T,5LFk:)e0ֈ2pF7`[kgE?<]ZҐ_tk)RlRMHNY:iPd#RS˲(P=w!xy͎{g*̍QDk6VosÕ%_IVl pOy12Kz'0M8se4 y[F2kHi<$4A,hyt9<ad5+> ,Kf<==&M&nb@WA> "}C|iZB*gbi[SWf8sZdn]&yz`ֶm'ٺ0J'ə#/ZK^YCF7V4¤+rJ# l2Pέ6q5!k^i.z4qZ9]҅t}ں.XŜrdzlAG˥J4v!$>Q{b "]cadq<hh2ïʵMg_)Is@^%gI"c;} )F]/Tc#t}':Ɲ0*iۺ1Hƽx)׃ꢷu* )FЋ|%'e?<5i/ e袈M̋y.#1N'kq\@wp{k5޻#R*CLׅP <=>"<য়~b{<(oqqKsVl*Wk*/+H!"6ιWj@r"˪da`QA, ;778u#=Tu7ku>s:KG)ofU7HSjڵ7"ÈjbfMC)u'6BZ5r; \vOgxRB9x2Xmڧ\{eUg=_k}h>)Mx1ם2ʸl"*8oO#J}ԑn_Ew*32[}/R9LƮߨ^=R8(}⽛Ɩ_h~Ui.7iu(Qz樏$v(g??n0xb/%dqxM庨W_Ŷ(CU6_# |aMaV_[I"b#JkmGp16ɹ.%e$m1}sZDzƌ??!#I7n` { b])BފczMI)EP1TPk3hLjv2Y$IM!v@Xr6<&˺vW/v OX4šZj m.}uDz@tV>E5ynCqkO sKփbdxxJuJ'q50#]Jak`Fdl qS]k咋`6b6l.f gxFߑ ! 9v7F:u7X#8 Z7.Bj@g>x1Ms*&*t6P[׵ nj{$r^sp";kҮ8L^7&РPKY]t]%m|< p-E8C#-mi}/=Rs<ngb(r4MAŘdR-f9I=N4P-d$ /ESR+-Hy#Fd/T\#ͨC ϑT1Q4Am1,bzAyM7dD*BM "nCMh˃R {Tk&NZ8R<Q֌ eU2\vZkvFhvnJ'o ۾`Goos\ F%i ~3I3 | }$j<̞u[ l8`IMٶZg8ဓw9}_08H[G؍ α{Zfro0M 3e HK܈\Uu8NR) IDATJXnnp8ꎆZ׌w[{Rok7h1TUtJ7<ӈGAS A"N~\?J]zGiǣ$Ę r4ʹbĤbz?yjz%ON 4|RI<Nk}ÁZ+-Nu[#?);ӗJH:/#4YýL>E=hd"iuU;$X<{;eY<skf3+&r.طwϟc2F,#r?m`+RaysOCkLHKbVkNvT_{<㝘[ |1+)׀^̶B1c=L 5UT[ ~c޺a[F?45s|~j`\jJxwI'~}B_/şS}s.UJwW>@`>q>}3>GW<^o&q ?-=¹(y_Kx׏&sݽU pjo+xhRz3HL`1nB 7w g-tCLTT3C-QP92R͑{reg̡?:UL.^oZһ+[ZDXtf̅,i:cPJpC¡8kzH)"7mCƃ {2#}bOǍؑLDݎ_ n Y@Ⴓ4*! #Jd\!^9LpzNR`ۃ ҥSKLt+lO>7=(1E|$*͔ǑH>ؠvꂟB>k'I6)%9yI $QK)! RsqF)>N <6 JQh-ͺm[.qҺSJ"N9T>cRvВ]|Yc9g)KQ!Z2 5jպ̓`R]_:,kZUAҝ^:6ض ¸8p`KL;Ei+FR"Raj䜭-ɬy/k&VY li.clǢ $$^I*"w0L 2} a-5_l$ 8a]7#FhsG߯7gVRPEoIq83TM /'E.iqOB t ¼5<{ PIY6D] ˲`.R hƦ"F+$iTk+ЫIHݤ ~J ֘~LaC贐#4)NkR!+HT)N8rukKA(ĄM)up (t,"08 1`pCO.1P!%YkNh }Zp>-݄m0f8zJ.x*PJ1:EfiVc[ikY?H{۽X jw1PrΨԆvnf-+_Χ Gk";[Wtn8Z ,=GYlm[\U^ A)F8?`vh<[[z42D9ZeZeyQΕ KESFϕkfs)3 *,R*ɳmTdx14gU(1$ ZΥ`>+NQ0PpCø$\+#Fb FM[nò#+q40X֝zi 9_1P"C!Wq| vZ*(T-?#ImHD0ϼ)vI +V\E:TƬeIKNY1\SDܟ5Q UB5WR2@Ҋ,%U<.f".zrB$݌#miȥbYWFihg\eGdeT 1Lof;9׈N֐N4X ;1Dlۂ#PЈqt󭍁vzhmF(eI+c=pIӀ-rAR/g ضkCSP NH +P"TɈۊoe6`&R;ͺg( )gZf^>'&s0zo{kFx [1FhO9G(y1ږ|ľm4r͈eu7nf1C׋!H󻞸DrU}sLskϊ+x9>6ݘUeLZZ"*Hz~ rpr\\0Iq lûJ o=9lۆ ^>;nE9!( #ݻ{lC:+I/N,ilAUZ/) "(~5F-mWYc<-;1{, ] IGia'ڥ㝈E kVwHZ$/Dy&m/"PuluS6ЛU%d^<:48O3bZn E;bTKC)}1G9x<`FSFRZ) ?0l^p-P| M"4-1<8As3LD2XR]A8 F7qݐt7@3ZaGM;=TAyͭbV0zng1x4P@BBXɀkzYc@>w%Fѱ.a5jܸ]p ӂ}4eu9c@N1+{@=; Jh+KԸܿ ax0N${Z Yǖe]pZ'=3^~ ww&U:\"M5Sэ.`??ZBءxx0x&500mcu5D_֏C?o g[G~5'nn35+i$ULcTU'79q:/"ZD # &(Rt/_<' ib-R!U:Sr^ w2O׺L}N#P98iw!\i~y:GnFy %s[ĐG)o-rb!^e(LPgX_<+SPZ2%S.}u,hlF+JfOo>s'3T\j2;g$?VOjvKkI ?TxyԿI_JF}GV_Bk}}Wz?e_|t~<?!02i >NMקyͥ>N^CO=`{K»>/zv'7OƜLE[\cz>ќK%~.=_\U< (/}c)SZ9_Y{ӒK82u?kfl$߆~{zB~N~n- rMnbQfq8TIA)Рq>OMQWtO>%y"dcPRfZ * SRbk%nnh)$*= AqL/u4b&>&{rrݼQ JRa2]H jVKh\sOqtIoQs [a9w87 "ov_Jt3|>/ ^R_-א~MDH9vsEQ>IZ-Ryoc  >gI7I"D}@3PmDX-mSZ s7,׿+J7Ƅ=`#˂K'((1NY`xRDU1prat}sarܡ߿xq4⇿ RSV !{GZ\2gao1kՖu u?VpppN'gϞa8͘F^7˺!Fc19.+RNP`y_*%Xp>0#pz8ѨT*bHD(ZM|>uCȾ!Ƅy^[۶pe ¾#,tXuRX C=b yyh !M){ }5cʥ3uw/hR(> ~2)jrPÌo}۾oiwG I)#Z !`Vbm?M#m -$IkQ =8䋸h (BXԪ`x=H#+e"c,?gy(QGee \f'Dy7 (H+I Zihz"l\UG#Ri)>`P ׶y}%^8h#ÎuƉ&)jTMa#fsơ41mN['ǕV DZ* m,8av9Ï#4}Q]BڏElԽDECK !9yWσw/I BQM@Wg!n]&t.4110EL;b\=kܗ3ȑq13aNh kM7hm|jViM("oc4qn=Qd9D`דcH(ikۂq{#?:(KҦSbLf&(KZ Zf p'ʍbZR>f`z 53oPsvG+LMQ 벰FTa ~Y[¶a¶Eg1NG_Dź7!@ p0_kkYJ2ۺ훷b2iFrh-}PU?EaII1I`/Fh˭Ph<~!((i3 >.vc#)TLSzx#큄'ݩac)Fz4ӖgqU $ΔjN/2exoR-%حF˟_~$})=;H薊O>|RGRU5{QW_JOJ$rU|z|JDn9ץ[; Dk I 齇={}1oo7z/mҵDZ63evXR {`o4L9RZPlҍXdARI0nyZdedo:Zݏ "pRp8JDjePi8""]ER}CѠR*n\NWR{4%ta%|hp0VC$0OsKXzx~T޾}ދ`R g!ޒ8!,(xIYI3I:EZ"6=1l(8eh5N6ʼgs'H7.Cʰض&SIIgv.L{/Ct{y5wQn֭t<YƵtuwZkkge k}OUqL07] rBOF }0LJ 5p"Ł$]6 ^M.km[괊.1{AL3Ο,b? 1 8! (SC;fuoӏe)4ni І5JZ_" (!5y'b d_H +{|Oֶ﯑x*D7T>TEbp1yy b0L{Im뛿2R N m8e":2׊>DL+nLb0&쭔gi^iY( yϽQ2# `#P@tgbr"rfC<>3kOe}y^N>${솒 sLcԌ6&FBi撇{4ܪJz( R!fiiԅ"u^3 x? (0 x㏒QJϡŶ;n:F)~8 "ʳM+ a =Ie0 3 }Q 7!|&TO m4 (t| ^#q /8N֨Je.?LÜ8h;R}enȅ1L맘d\*1 ڂ>}}(ݱQ΍P*0x۷Xww:6>TJjoBI+ߓi˺KSBQ pS 5p$X &a Ӿ/Z+֜0T"eH-*%CC(Pr(~?M[TĴPgDLm{!'61()w#\'+ f<'QR9g*c/]ϪrXr관>RАd*ω\HϠUze DifQ[wjg U15~F2 E#q]<<=!ʽeպ!}~΍p~DarvAL6H(V(A`9%f,X(T`ᦅEt bDᚥD_mٌyvN!mٰ4Pk1_ {*(5d"eEc0rmqbndFYSZ#hdvׯq5JxFq 9W2JS{FW /k7G`r9XOUz$N~[wI%[x; Wigi Z%a"{()9al7ȑ,+on_̈eQam$uQ59aE޵'cD=jb~a(Bc9uW7}[p7viH; &v{'}3;SP1F|4^MC7ѤI-0 *0/퐙A|Zwnsvm!'YN1ORE {, 8]0a%p1Cn1M֍Va}<ռ]}?N~RHG^GQnSR$9>߽}|?W\nF՟?ZJ0K ^މ_t ^^鏕KYꃡڋK' ?Jê~ Ro<!걃X}!Sxd/ݨT{zSK׷S}tSs _>o?|꧅"{kJ|oRm:R.`~WN'qw/=͵¨zI2Da:$h_tvK5K[10v3C4CF_slڑZ:>bLR*}:aIՇ@"F%Њ<*!ήykm'VPA}mE6 9QHL{tk 5ܞcN"kڻcp?Vm`\ B^% Z:`VXz2$,xN-[kDP/F#&w:& ξ>第(\͖fVxG3'#QR8ӈ dVגjm{FSV_Jus/3֓{17SX3Gj<\L\[8d03#}VA3דxOb{;xȮ2iחcvqRSuLƑkQ䒱(9 q5:YÖ\Ksqľm[CHU)&KV^7%Gx5e^~;| aVfR)0r_߼6)Ġ#曩Hh1Lss< # uA*=CUANckX f,J9¾(! ha݄xx8`7*bv8VHl|8Px ^yuwZ[Y;Z C޶¶w)x8=H!b0X3klJe6(ƲlD#5p~UF4ِm;|4:Ix'cېr,Ì${P@?q@zsZxx8b1~C]Lwhc{U7A[GyOvݭ\U{Rȉa!Ihn3\>O? ='>_Dxϡ҄toWCg,wWy {-5jQ>Ap)D)D퇿1Lg/`Y,(eќka6E:.P(t{s ,i%ERЂ[ۆeco@+z{1 -:"6$ bnon 9| qx1ə , PŔ$UJ4XJIRئ'J?lA–m;,^_zeE&֚*U(qOgxo`E) ݒ{7sLM=MSn,cڠ 1N$\e{5ʮsm`F4!.~u!jx3eY8J׸Wc]& i4bӀ] .okqbVUOJ)l2GITjRPyϟf("De$k(4abP; _+EHg"DbjC;ʭaU]W2չF"]R{ XrJfk-bMtצ%y睻$BLط Ѧ1yYk ۶ɱqM[p9V$+Yh1L/֡\R|s+=l!K.L+IѨd)ՈBRF0 22bB20T{W)Ga8@{WkAo{OsEhȍpP]wDbHkĬB0p:C7l9?/ ST=%ɰWNՒM sB+t:Nzs6Q,g=xjx_W [imC0 (Hsw7X 4).ȽQ4U8&C|7 ༿T1idR 4BK%|j31(Ԣӎuc8MPR* C)cHmT7nL `wp;Op)O(|>K0Qϟ0 -V83 mlZHQy Y318`p8/oq@VԾnPӄok*1VJƺ8L%+aBZqN73{9"iV>= L]K N4ct贌͉1D ҥtzwF<<4%4;١, M357˺0ɨ51|>:nmw qBK=0 a?{?w]TnM+ʥXĈ=Ă ~0z3p>/C2DkaN缤UOJf,gٽJu"jjs4);hī#+k_U~Yh՟'XH! ]0ְ7-|NHϞ=sL< 4ȚJ!S;:oxo \េ\ό|&3nnnnQhLt-c J[ q#`T Ξj-֭sk0-I/"IzsUVb@Sh}̂JKjb}r&[kW 2{< mYk[ΒPRAQ+Ē{$+F>TAC) ccU.u@9#dk4! #C)AMu` R"ºCq`d}\3HeDreWMԓ@ .sZuI&q4}G\Έ鲊' ktQ.㦭żx} RzjPr๐LPz=r ȉ6li(8xT#5I*!dD1f@*Y VDp~V[*#ֳ`sD w/wd/㝜DғB,Pon+~O ܏~}]}<+OqҾ>#=Nx]7 G?|:| owM?~Nʿ^/|C0|h=Ix$+>6yͭ7$3 Os?$,9+ S9!5jRXk\>~JaXKSiDYˎb ; $ @5 qq3yv]i /{)7_VD&.W)YRTT۪si/\9؍9O3t:ϼ%#I7_Kݮ*=B'[8go+0MrRP{z_027F8M6U52`/h@i( Du7Po;oZZX#zKab8v;"UOR{ҩuR~←s id!SBJE*+b̸9$.=JeY_Afjmp>-AsLa^lk5EL Q~fQ !a]GGRb ӹ[qb_<EÉ {}yg||k{Prs@=>>p IDATSah,Ez4TI]9% '@ׅ⻳SPB}=p:a~}؋j-S}R5nXiPd蜓.yѽw"p),;ϝ3bXcbEU *L?1]Ɣvd!%&ag$VbQ(Nkq^#i+R1늒>1!`1H7ohrĞB>Bze9cY6E"M{M).VqH9Vx'/^HItYSXX$[3C5Dtdj%\"^iL_CZ[d\J׈#"Liy1 tV;㩭AumLlm hɁ<@-&ZH4nm+<G9fY'\em3}e<2Ik>X (,8ܯg9!JZަV6bJXX?#^((ItJS#U]aFW=BSč_ܵ-phi*B0k*D_h 5TR(RIՌzi.V{+np&/$,Rq]|¾)o68!b^˒&iVZ1F_[sBnFjO@OREӒ%[M0rdǑ4}t[n mR [艤'RkA  UYCfᛴ8nj2rVdIf9iUfk 4 e\wc-ۚclFm%̳tk!VKԎF,e{KֶxqPZ4BΨYET_7wBO3kqLl5k4%fj~8ܐk!aMWzѱLQ5κ#^{J\,R >LUyH~ؽmю(\!?』Zw4R1LsD3p|:o$5y&w$y8Ym6W_%yy"8N,N0139KF(mNGO#F%Y++{;idF̿UJ͔TGVusK[ HhV~LհR]9 HE.`N-k-cf+?OϼTxϦ#ȏ~ Ƽ!fQ>ao+;[yb&}%tg?I1oUH Û*>?O/:M_|y[CLQJ!]uZߎBA$vp)Gl}]}[-?~4 {!LL3!<><2 ;^t/V33<—I P*8x|$(Mge7 |&.1!H{_+Y5K l135W=/v+;M; "ybOJfacwyqD /^KbzzsǎR;$J&_c, ^ kB"-c<ƈ׬ Oږ󓡮nmTkdQҘVW=M#5EI5! ۮKKPj,/iHiR_cDt|kŹ C6!i:/%b9q)9 ՍH]M5"n7g^tFU*$~֊=lV+WJ\ff%vLƨsu˴`]z\ !033D(oj45|`;0/#Ji4N}+(>B6UE S>K=/^|/$ =.4haL,U *1TRkQb}yG:n_ 俕$s6Ub=.t7(2!틺E&`=JzJnUrd5z6 <}I"Dy6\3ژ8-ǑqJteNE_3z9kp^ e_GpQ'kdIJȳP2J0z B-UFbjUÑ77 $bt:+q\ᑇGH? ȥ0NFD4F KY0Uj&}(8u@ǔEqS\J!Nbj$ ц|X¼QW硴h\I*(D\5n\Ep'zT~>zӂq[ez6S#8ygQooNuV|!ެ7k[ʻ| ~W7Mw TX4'gxn QȚR2[gn2WVݻ֞~XoCgM{o-q{}{,s~滲߷F{Yyhl{}ܑsʾ3{?&ad|xYL{u^F5/ ͵%QrEy?1x v|RUM** Km)j~_jXAWyp`ja=ݎ3#Yno$5jb ّARbaIIrؼ7믭DfTYZ#Ơ OKVeWŖ |)x 6XIʊ%mcNb\]7EW%6QZ05/LoGnoZZ|%ypnUI֘X:w,k% ֝N@`P7}/*RZ S)H9mjٜK< rU.XK,Q nya7)b#1UaҔrZX&nvIF_IVqn7Ȳ$J-x+e*+H z CIcDi?˼`1M_)ذ q ̭V)sqAFb,N#EXk}JAIIF:0@+bCGCg(B;0{JO,5[@di4NDN?ptT%xyx|`q$tG7_|w2pzu`ŊձQ}Z ~sD.wm=*U]_.qTuBh oQ7.bi۶H3GXRұ*89 GF s>Ky3z/L,jWǬ y6)0 {(̋oDޜ8q^cf˕}Ш@@ kU%jl:)%MF,4 iEYk%^륬v!oiV=ϪIm.,ޮ"NVqweB- Xqh.`iDIL΅#Fϲ$ 15+EE;]Y1bcgRYgYN/^0-DĎqkx|tdY:Ub'}8=޳"pΰy9Sl΍! JmkdOLLen zkF- ;Y-dRYkHtGb۽e}&XD WbmmII;_7O~`1s"lk6sv>=.'cNOOgΛoOo޶?<2n(y >j=+~zO5V{6MX=k~!f7u}m?)Z ٌ?x~Mӯ?u*H)2Po9s Co]rdv7Jzym"ʶȪRjEt##W_|A[{ca- :w?JbG[^"qA z^1[G#r0@3N2&U dZZ}lg%t7e 8VcTSkMlVڪJtawKޯ4'V;Y j)c%_`wF9InZ ԆlI7ep`s]IK% ל6KJ J'zB3 XO1R I0ݕͻc iR T6X+ `ɤ뺉Es7^~ǫ:/iF־De8>yˡ7XwjF8P?b4z|8Ԃhbfy<}>O$M@C JAJO4d>Oɩe=w/_yf/ۛ[988N7:47(c;e'f&Gb}KNMArc12O38Ox9Qr|K윩HtDmDs"/X(ּJV@E4Rƶ5BkE񦷒]8Wy3 ԮZ+ "`ӶZ\F]"8*ZWgm5StYn=jQ[l!)BOt$ȭ4)qwwa`Yfn1ƐK"|BD%9kܪ| 0/WUmɕPBڌ5,X <hid11.KTRZc}|gI cMNPU-tUPdfصYMǺMneدrɆ(vp!XJZ]\;^jQ4VF j[Ȕ}OBmT<^jVR*ڽ]Lc;M5G_@73d!3/ˉo ąe8t ڷ8M C6KT &gk/S ֚q>Il9Yw7Þa l0.= c/Em[UU0D]/{cĮzFywY#Ǯd I2.xoxx@*inQwc4;B9-L$רr+ ,JE:wW@;4m0׉YiaI77frYХ?%dx{~S?i#Z'J<]~5)[]3V]eG>Xy-2~_ۻ<^ާn2y#?X_sbӇ׺g>t5ַ^RI')uS4m=7<<)˼[wCOɢJ|<1 5*z}'5yLZ?.P_~sxqKnS9ܔ@nݬ,!v(v4q;z[C Dt]@U{H] tX/,`:m4%,N/_Odݰ{3 䠢d(QT;U'JnvvJ@ 7$C5m뭾clyݪݪVzSP!ppoMDs04'?7>m?a9gw{vG-oyߞ?bO:V4nxaT~j#C|,30#d7O+ZG1 G0o};|(a8WOi^ ^?! 4~~l-<1T8$Z 75/^=aY*9m,l֪ V+Yu[OP^sNհar O'A4-lB,-=ÁMDkM&QKmk4k˒.ZL=l6+ }U!N4X/)¼k4JSwEҰv{%~un,R`gɈj}>O/5Y)uz/<:EoΌ(Q2w/nB7Xcyx|$Ȣ ˖{{#t»=+J2'*ku "@|7PPi:s5I1ϋX; j#yGӘֹqBd:n s߿F"TR8(c&$T Xg 8%;Cj*#*Mj5= U]Z)gjiPiWn+UZRrw}-5 cSj c@xګCSK[袸4:O4!Jߦ bkJpXs /|Ar2Q$;bw÷non`F+N3gX\O+PBiY@֒$΢8Mg|;nny݁iEu3BTEH޳,{_w{f)UyԷ"$oZ_bfEBZ11G)3.F| 02\#bOR: /x|{c|w‹/KZfWb>%=V6<<JIYÒ>4F'&&B l/xO=q(g5xMo=*[_j wfqLO#_ub?O?굽$|,Ϝ?3秼h /LO='Pd~C '10{?M9o>2'~ޟLN3a|eyQx7V9sMZW;u׿׿|p{{nonHiQ,nLf\k`5V5?H,ͱ` oTU[U Y^LPŴ4[=HLəuj-u)-o CP;C5 dbYY(AMZ+}ae<[VɢKNz +9WJXY"@r0.Z)9}pU_Kc gkׯEyMTXD, ݠ\*V % ?-9GiHsK>9H6nn}k-}?(e&~g%{k&$kE}sﶬ?.Yry{K:KY,TXqi59j[ܽwXmXSe,<)nY}Q䲏9!i̥^lՍ4l^93=HnbI0^sV<<}>OIu%q(XA|ӯqeaۓRa9-3QshIZ>,RZ+Jr-Ӳw}7RŵXC-i_o:Q-KFuNgDRH4k$zVtYVzqT͉w|~}Oḿ4'BΫs(2-iV&t2x"E!挱NU]h 91[9Dc|-)1Vz|0#TBv؍k0Ѐ RRe+b:-eAz1wN)gJ*ArK%B)#@T{:dHH<<PCZhli5 1,^߿f,SӯgyNF Lɋ D8;ɚK)(=v'q:E_4J64 QtIu ÎZ6qq"#:nҏrqaݞkDJgFE牋XHݿ4}Wk\j4khb?P|x;l񿨶L{ oDO26 Lc5k-^7)t4ve+V;M-sΚ#|(ld)yrU V־_ |tμ?l8\j9P}~cz| o*ͳY%?U՞lvypnMUVu[ޒU/mTu#mƑE7|wxﹻ_H6+6S4qQȔ\.FT?@`Z!!RCNT)1͓*)!B*J6 8eۋ%l(wRlRY=޳%MCMώ u[QjziX#>FǑ_|qGRvp^s$.Le(bExYspT]gO_| 1T1㉱SskY޷}YU.qQmyYiZ/M=!DnnniviZ1ֲvԮCU݋b>b$ t6KɴҘIfN>(V9-2~] e,4B3XD)k)5 0fZ3IYcGy6}4MTq6Bd$4e2MBfUeԒb\Oe8 H)gߪ*e!c%a`I 57l^0Ğ0(hRf7ȽҒXZaap>OTQqgJI@2tnuawGkkt$Ow>q4Z . պA /Mv_0q5 d(ʼndft;5Gbl.걋,KR%̓[c\xf #3ׅRH)MK%xiyl3g-DB4/LV+;*㼰d!Bev4ʼFm|{[8x 83|WCrf4`PRl;5!PU! r]՞n@Wl}9%[^#^·`kBr.c83p7/^}i#Ӊ4r^i9BĻp`w{ {',*Go C.yd)3M͝BHeYԩD j猁dnw{-HiYU]hrۃ)0 F*>F>J︹9`g<e7 yB,ݩ]9 8P2I̋o=2/U2hdLcIKj!tPg&D ^8,wzM?\m_n2O6d?62Ǯz55)9qk%n-Oi%gXo~wO/_\=G/ow@iJ?So:I<<~h _TO;Fׯ%m <0#džV'gPr zA?ݿxuw|/i>o\+Z-kzQ .kcǠy/MMeS^-X:O?y;#^nЛڑ眥 f _zaSr9Mi^Q{(3 7%J;bgɉZ+^3kͭ !Ht{1AUfSm@khƟTHs|.)Q4\ׂ% *kFCQ4;meb KZƑ4}'kXw^ZdgJlЬ;HcLJ'mhU6N %_DM^0VUx_Nֲ̋FZZ-i0 Q'=N] y}UU-"iy65%[NN-3iz Ö*P=$KKNcn4 PFc U 6Sg'iL\<\knPyagf~]Ue#Hz}CD>`8.U-U\PW+9-BV\ke&Zg&Xy$X!V, [0aJeF"ʞf9NZ9ф"fͺ\hum֋i*WKBU23/5H΢vz~]{<]BHEAk估tZ`h[V{JIԾet:1 RAjy^y~8žZ\aLHhtr/iN\,f]8S{yxZbOBf7ϣF-ȵs\VO7T0hOf oKB߿\GSS\v|}({˄b>l'nxͯw>+B|D3៛'l;9O|cӟ|׌3z}Y:FjnYa3Gj}a,a'Uj&ײ9Cyc vKj-V4="5U *-]"yh2:. M,%mV{X0 TtsJ 4i,_fl}S5{ FHy$*3ڋú(Li!e+9%i)d91Ґl0N6az0(Mq;* sf}ߔa4N|q nT_|>c뻍i(g^9%%Qjp{<2/ ]k솁Ҫf~g4H6 R$ iKεb$j kf眥I!r:'ipsWR8mTb\\ٙrbY-dP(&{n3 QgrUKη(Q)ATU;$k8Fi+5M 㒋5úĚLu= qIbOc yVk(C XgT-,9 i,u9@cVS8kc^F(JuD,E(I~7U[' 9gJF9k|H"#vrtEUn|'F38Amܾ|C8ZH|c{|x|[^?ୡnWл)'_^si*pڋSZ!7>sx3ƐseIY[(q P+k&+-|  }/[Yc .,B qJdꥇTmLP9#$c͐Sax|x 夤ci‡ᄎ[x _kBLѭh?)[*İsE~ p٪ڶ;#yb 1,,h@]~޻Ȗei^گsWDVVFfgfWV#BPb@Lj$ !!!&! 1h@4=dUVfVdD}9g6׽~#&Exx^>g|]W9wcًu FIc(b?blA?V40JmV\lBj4` hiX &؋ ^*zIL)e9^?mw*{Û#c?:%i9C7A'JG񗒁u_7#~zsױ?oo?o~OF'pW› o')~ śRkMxW~>\!D х bp_O ^z ~㿍Ga^f8`$d!)wKÐ[+Y^/"`MIhv y)E ׵VkN[YL3J`T\a1 ݄qRs:(a2V'wA&"lvclO;1i80ωxt-uM=*fmqFWM=7ܺ oiU&ilv0b <Y8:͇ {$qƨŊeYEx6i1E<˱<.b4N| Țv^R{/UlZêH;uyL7:d6lo(=0N#USs6}װrYE1hw4hfCRzҪ%"ei`Cxx|mO??,f%//!݇7߽(%Ifv̒cq񨽕=:h#kJYs!15WIN{eq;`l7DxV4jκH̺ n ]jVΉڴyDJ-|8IB2<~cq.c,6ۍ&SZһ+ 9$u=Qqa !QAqnO%%+dIPm{vBy[sךaH kl$lqll^ @,U2nE4Rr )WZ'SMp^Ӷ> }~\^ S4X{8mw";&N`ɔ߁uNdCkvPUsﭦ=IEnsRF ֧^)Z{2Nkr@w7$Α^uB l)C@R#(=jGy bsA׃k Ff{/[Oz'vM<[IJMMqp-=B" 3Db( ^C-,jIZ#< , N]gL;uceu&YW1R+Y5ܦV>kj F~z@WrK8 "%otv_O'YcW/~Yzc"-K,eFU!av:Il,jaNZۇKYEvrOwwi+ 24KKm+j]W $ 0!gjJ,Y]}Zg7@؇a0ASdeM"F*W w(%aDQ)`]#nQ8#)EjdQz#\ Ssq]?,˂B%fUD""+[IIzhMS[\XlBB2oeY* {ĔNY'][T{n듡"Aȹݦ %A1P0 .<~ 2&HwG$"q4MᄛJ27a@7;oApȩ9s9u#7~l4׌ ։ג\3%TҘ , r* Tl`m`+^]\dleؠpI02zgՔu{Z*uK̿2 PCE_Y˫H׌bjsUD%57<7lce0Z0V`nE`EO~z^Dfݿb0Ea;mPjEZE7`亵зW v* µkk-H1b6ue ~Iv e).0CՊ ZXu[\W8kGf5"GYU]?v*,L F,õ)/fƸ3 dX/>8[ oGQrETjJ%NW& jZb*.SouyX:m+匔䘤 >he[0^ GtB|_Qq-2EΩԓ܌Lfڱ / FbL(EĄsG Jk 3ǃ(H]ֲJ-G\vp{aƓgbY#`@ q_D _BHR Abuse{3b&R\;J>pBpnf\wJ*^5,+^|)iZ $N !],, G.HE37¶B5'F`(gyr딎}HIRw&#ΰll6㠜nq^_s:KEZu2}?Ƕߴ.:;ӆV7o{g;:Ļ>BWʸϽMEm?[;sN|~ﻮ޸<{&z@8_zp.ܒpWoHxөC􆊮8Soy=w|'śe:|ĝ;oo~﯉^S#7%ˀVz ?O &Gn(54SRrnV]Cgg8u>8zs:0hC4wDZgBsG[c ͇a@j"ToG$U jYPrDZWYAF"=EҴ)(9 Y*>n9"bZ-ןx_yM7kSQ^#o^7WU ~Kщ?НDxrkbJxӭۗ4H|F{ Hʶ\f1X |L2aJ]ⳳJNJDo,:tl+>|믿p;axznw߸H{7-]`ux"7C𲐍 ĝ_?\*R]<4RAU$톐2HхU5a^gZT=cYm; x^1&Ō lG]0, %dŁ[+wA;0V0 2T-Y,$ >#vPɀ9yUqׂZnÌ6c@~^1e`|091$$¸D O>Ejre)e6ܱI]X8+IR*ܻA"pd(ij-֘lTNX fAu{5+"}bCudnk D FdsVpQcN, w2t V *-Hj}UsI* E,wfg59ʐ?ݴs` k.*"=` Ø g=2RƔŔ +qDzʀZ0gu?  {^bNYh4O>?;x@90yQara.x1eJV4a8`gRƈRJ(B%c1R !cqC- q]?1 q²."X }t.ĜT;EZS R)UmQ_ۇAzpQaYֻ,8+pô䭩rSL,z 2 3)43{{v@gO`,$sD5CASu:,WE1n8\d=d-Id:$Oc}#b-|`Iz̍ZTAp8%c0#׈"TpXuf8\~IRΆԽ^+H\Dbd&ܢ̄ Z֬my͍8LxQp嫗Rq5+ejRd乛!XVC++,'(U͡p#JVzn['&ZA$Rd1mk,8Rk*+` P%ϕ1lIB7"k_SߌW2d54u?+)0U)qE"8$\ GI?^5>^r*Ĺx€.1c5k#P#D\f\ ?\d/fl#E\ Jnzw !bWIB}7Sm:}=:o۟D5kߧۺӄZ,O~zT+wx˸C{;Û|ſLkRƷ{~Ͽl!8U1*JG U)(>&ni_ֳYSK:N_7?F{M/}ス9MzÊ os9_zr"g?/0ˌ3~;'Ϟ!UM֜JnRK;hhs0h_/˺˨u"I!xlOMI{GbK:ADϔG* ^\^^WC"@0$̪j%g$u=e휗nHHLwTӴsg肧q@Eiӭ\00B )'\\\5mBT>KEgM.(SQLr#_bHED&i ܊\Jӗ{\ ͮEX%B!h߬C4K<5\\ glAkD. 8pqT3IoֺQӒH(NquTD܀%GRQ\0N ARZrF 8c!>ՊiĠHm& 5ɓ-8K|f$Zy#3`n좵&ˣt5Ve>r2*] 轄K>j](i`ݪrX_5}UL(^ |&Z$ )!A+Ա. e4ZݗIG9u\O\**$)]T1'*Ws M"nEEH)X"i)`"!"ǚufALQM+FYgfkA% ֢W50\QbF- 8sD!I'&悲M@1N8qWx`x5ʦ fgm\Da1xc kaIaZkwA[vl*ZZ?cL^he]P*RbcXL4Z%w^\Z~SVQ> zP?eSR\ pkd6ٙ~]g/LREaRQkA=3'"%Y.39=oOt?nlE1ä[ }&1{7jono=լ]n~~5V7;Fz%p5n&o~ioX[ίuxiu:+ 3s睭v;ގ~ ޸篱}y6'NC rvxNBp_q4f|-N(:e(]AȐYpZYX Fe%]0ʢ8dqwOIDTGԃXkqkYp"B],9\^^`]W|2t R@அ`'kmXHAjMwNaai1!o`F`5`4.R+ηepbG<[T+H?F<0ֈR JUw'Vxg1 1QOZ &cOHO**7ȥԊZAi G ق_1 \^ i}E{;$1i-u}Ґ\o6k/E; "iqn"Rl&c rkC&YMshf },,4`򴋮<pSRQ+xzFԧ0<~W^bFdEyAAݹމВ1ۭԻ0dn~;˒SAÖ ҚNW3Ƌ: r1# {E5{asB%ATf9,C*$gӈ$ubQlިk0L# u8"5:vy>J,x0B#"Sz ;I[c擘jZ_2b|݀[X<5@ʊ4=/xJò!h !02jaB|#MЉhZ -R"2 |يq}q\ Rgw!x]"rJSA#r]|sx^K.Yi{Lp~j"tTTf՟j̙-sM*^:@WTUXWn,Tuk2;޺ Ihwn5f6~PkUUĂ w7:W#AO, l0T$sYwXoQT6cG!(fHp"B. uӈZ=b0TA A5WH7tB9Ep;טQQፇN#%XZۭ_98bdR]i>(J%.v.ss:b 'y<0,jraILv Oșd85*ުr,Fk;TBoR21uuKC"S R }z`wNeCM렆+]U[K1ebYV9Yf!3,{lYV"| O=_| v-^x)pTꌘ3QP_~c{T#?6փQa s`֘0; B;Hp֣BR9'$;%=$]['e^ ָ`ĜXgkc-]ߌ!Řv[l7[1qS>aɕh34:腜 wpuӇcOf@.]0M傷ovcx#}]_ߌϛ2ѵwVm:N{_ iwzҪng}ozoys>T 5^'36?"$]Mn9'o᰿ {k~uS?9a8tE6hP:,};7揉>&vxR][X'?˗1b]>#}@Q)wGmX{j H ,bh0xI:bΡ"?&qQtS3:[{k\ah_Ep,I3 Λ$ő,~6Mn*UPZ,)`AtI[skNgI>ԑzu!+YT.g}CH9c]f"*Y{86ooI qKz:k I/0&2(~8N1#ň$K8 #){#e[+vE,+MywNi:mJkm}buʂoМ2.//QjQ3EFJCxf52̕4c],fڒ&7)Q7Y/J#5G)˲txwO?'~?~(WC›cv ^E331`Ō؆B'_0 #J38Nb[U t(.bka#`2ǚƖ!^QE+R" ak -tyxyG"f:Pn q]0g$<0unQԢi:z"70N,ݱ.xuԬba5ppu|CslAPEq3aTSݥ$IעiVY[T߿x0py v;lMOc9ég֊EI)$N]LlsRΰ?|9:j)fה r(%qa׫"dmt(k!^l`9*Ԣ`X*ܫ&Ѹ5W5>vRO2JTÀa%e8)J }5f1n7b\.M&J΁zo9&9Th}̧mP cXׄ%jL8^Sū peG(Vk|1 TqP/? rǏ0 1;5\3LR,bL( qsAc4-Fr5=V&! 9^ Fz&<)c]"5rF O{睒 꽉ʶ4cs;5>Cizr={?y{2teJdPjFpz]Djr s~+s'3ͷ Q@usf>ME>/mooko7WμuA׈C0~.n:oɟ']MQ_>8CW>^;[ӹ}vYgxs&7;_pz҆꯯_~w .ol~y-s'M~'7~و^?oQzv|h۩oCF2a6/> ?_+{ˌ%K" O]y.mNUc%EF8{Es!n ,NUqzڅkp À:Oۮ4Nމ˲n [6b*pgi!e[Yj#aF/-]JF 6yi7a{wBVj*=F_A8yYDFfC SXq䂐s݆ǨIֲb<v!"\yIu]f n']I{r6)J%㌜ <})eE㉀a(EUoCCiQkQ %aZϭ3bhOF_A>snCJ"bZRItP8-c9> ʚT̙1V(bPq.`;SJ/?O/=B[cݿ|уxxcQa+.^1 Ŀ] ҿ /|؃ݎ?ncӧO?᭐W2Hqh'E$*ub=u4kYÏj^Sc!w'U!~U-6F?[Ekf0 (.pB!\ӥZ<ӮcFN[eE1f^g8~ A kBSB֒VmU%u4ְY:D}ZL~ B ۞X]oZR5!F.Py\r71K}P /H2ןmbW^7,xH{-eW]FqT-W=-@q]8OmVwpȷ0_ ֞gzU.ruW?'N?_<^}=UCn IDAT+Ϯ,8qY斋-tDl[00 zo{ "v˕No7/Lz'_w{~|%U|,Ie&;ЈT3U__xr<`|O~"%.ꀖ&TwIM)A)& \+,OP41ŸdM.qD b"v0b&Xc.QRqk-.//+BDZ2\u=Rt4D<+i9In"G OF]^.kBME{c JNF i=%Ocq ZFR85O؛̀e]f &lk:H` \d,+]cრ-Rb0+bZKF:\Gȸ^{!//ѳtKA a!)nt*p<`0KZ_}k?'??(|C+^xk#w`?GS 'mćXDK9XfIC >2`lgv9F*.l+ NUŸi;ŲD{Fbm]7_ZťO뼂1xߣqf1O{NAxFZ24qafuZl6ǣs{ y>k1&#aJ3MMZ5b&aHpGm SW$|U0J rm,xXk"ٞj3YN JUE5R!=u; :/`kYuYzV0BLbM1#k 9^ZP4x8{T!9DZ@+aĸ $VЧ֔nQUbJO0mF,󌗯.pqy[R1p,@̀giNcYDnSeQu1*z%IͯY QT;kin"aju`ʩ'&5]NPG( R%%k5!wH$%aPr0l:zZ\$jJ7 GZT1"& \,LEh`֡y>VbQ$7k.㺂k7#֘<4lPP3(2jFvE r{R>K -JJns*$8P3T3PVq ւ`'`;rr.Tx<=aȕPj3[v&,k"T1jKR\No}˕3J"`0 x2p`1* M Az]e"\U&K'c*\l,,3 {H3Wiiq`^fZ0R(9`9#W X/"my%ëﱙ6㊗)bj`˧\1{lnY- X8/kR5W,VKF1|PY &kb:n6N9⸿+&+ucGJrϑ ]'Yt!}N\3RJ (y@Enrc:VIEbdr˺ nioch-9'p~A(gV*1wm ޜ527Efqi^=_d?_zw/޼ŮFxp}g"Iw|?$HW4 -r7]D?Xt>T?a:S1[ ׉ۯku~gu}?k5ȧ?vu-nt$ :jK ~:υ}>Sl7]yt{"W:GT#k1~+ϝ7wzi8 ^m.3{ ۾;\Xg:VΦ{wm t2OW \^^rGoT@cA/ے;R(ɂ-nQaw(ֈi3aaī7 mbԡkmG[$ eiD/14WVT 4# 0`ˠiey3uE!x ηT@$%fnq$sՖsx%ͥm[jC;v;낗/_Ir>{Rbf8c"XiʨW J[U 7rLRTn~Ф%ut3@8.bhAJNpδ-1fEېU_wtfM@?nG=C)E`-iºN[,sH1 AiX& I1Ir5>9IuYf AЄ#002R65F<~XUx)F7ǂ5%GXF`b($2v-~}8ů%aqyX[ Jڱlbᡦ|]G=tR#UI|E[ڨb> !f 3Mܟ)C ev;q .W KEY@NZxrX̩1l9^yU* C5):hKRd{qRJKWUM1-eyA/ ȟRm0XG*CXcΧx>Vdž_N|ĆƸus x8!|= {cџ>M_ϥ&^FXU1vUzc/^?4?Giqu7ޗ|qD? zKו˫"cAẢ^m:Sg ZKv 3j޹,JaB8Gϯ3"֏SكTj/ 8LN6l/60;8!D/s|E=bE/Qwi"8CsO?/Q09 [oGmk 0#zfŲK锖YXL؞n!g@b;<^T!gSGUUS . Ij!00; `Ō <إ8 (S)p A[iHI RjlWI&Pv׌B$Ez DN=Z|͙cSsT|5,*kb"uz'Pي3kCDL ՖYsyTrr 'H!*;| =% 0PC( $MS )',Lp 1e4-{bX,p6Ʈ-t~\xcჇ0,5ֈ)%f*@% ::@A^3H@eRrT/rDL3m}#,9@R(EΤ!ejU7b#嚒1T} 1@+r k)MXN 1X[!>A4d+R hm sQ gh>R D;;gJ޵4 {" ĥKhu|3d:9ut9W,3%) ~Y Vs p$ ^Y"|Yeo̝]h,W}U!) IrP$Ѧ,h+*Rrɬ1!jIQ"GHhX ϱDbX5:_@2# RԐ"Y%"Ν=#e0U c%RYj3F7i@*0i[([hI _LFDVk : AjR1"eH`}ʱҚ)P6 aj&24Ըx/BDr6CH iO=wŎ_!EZK DAr Dy Hx! 0YzbWg-m!ClMk;ߑJ)x!w=f9GMPIFd<$$%zt]L 1d 1K^ П鞛@HЖ2ZKH==HV\״Ruz\J)D=$SbT0ϡEFP])j)Ddr 5Q1|wp5 & ű)L'e?Jl?t>TPCLxIQ/.ؠ9(~c>cX9/\aA UEIEhZ$x+! $R3 lgv@Wڐh}^vJ"1Gplo RJUh"&0tUzVHXn+ہm8:c+UEv\fW=B!H)]*KVdֽwfǙ綪d2-VHa9[Td12A{b+ETctRlAʔ13DƻW(24IyhM9J t]@][mK,@R'xGyJC?B]W|Mv}xsx}/|9);/_|x⩧35m»6lo>_o=ƒ왝/}+C=a𲗾kSO3>#ޗoxkq=/rܮs=]}L'(%1o$]&SFݫ[x@koR?ɏao~﷼ uynasb/ƕ_S>+귿^ uV /W6?]}ԝw1"|qt%G-%R}LS(u\P臾dJX9I 6Y- 2J&- B`:l6cBL^G&+}OY%L@9XcJ8 I%,2B*7 lNyH!]i\|T!DT@5` ͕@ {? LH1»S9L 1%Q D YR БB#-u 9w %ɶ8[O]M)X?;L"i1翠lV)PbQUj-~e9 YJV`,Gk=㭁"ȗ].vY5S&[RNjhh,sV&&8-:Zx~DLΜdg|&h:Uu*LL0߅pKp˝gsB )zdN|&J)(H R{Okq%_AJ&kR '#ne+>RS 6<}dI^ VDrd]$9@u ;c*vC, UUCkR׏ʦB GDugO}" )9Oݽ]ʚV J Ctk ͤ0 0@\29Q bJXh)n!|2;Rd&Kz8EDX/€/7H;IE".И'~ȡ~(9ZS!'} b9_dX!*[)Eu H!yD" OHOH5"%%PBzGQ4%૾~ܮw;R}Z>ŗ IDATwQ c>Ԝfs|x#'UXwNz~/`cn X5oqm' :>v<8q/ӜgbC9VOQ.sqpԥɨXtko#. `pX?xWllطu:IIc_#܉?O_}ymZ<)?J3l9sx'u ^ 7 8w9=sm`,[4甋"[J H(ʘb@J;[ۘL#t JihP5GYy19/$-ۭcDJ @{Z)0{,L&E=ĻmBHY^ ~WӘ-pRPvbG5$e2%s(u )-FU#::@ .G&4cFu"fR,b$}D`v#Иɢ-_!]\<,BR7FCa uNICHŽ"H@`:ߎ@)TҹvC biaaN !2T Rcf==roT_른[N=>=/g.ޗo9wi|O{Mw>/O =^S=ɤoz1vB܃cp!9.]|mKjU7Bs(|@T~[s_~L.Y&λ` Pwcy6ȳ<u~Δ"[}9Y ~2l߃y![ 'S;FmoGx!KTg9JTvjC@@~7,/>{/^)܍1`kg A@!( kys!Bk7 >Xr$sT м(PB9OP)0 {/2Z;\_+V#g #UCn7$ }W^7֔Ea埵bDw`!pFӶ4?UU""TD-I+$uۿj~ofR4#1ާ(|3ViTM;︓uUȔ¢дXko)cgмh ;Xkt,HRR )=]rRJL8UֹZm(붪ΚȖα8Bh}Ok ZUY8΄ck_%*[Zˊe]dtB"f|;vǺMVD `eeL,xW2GoU"VbFHRwbҤ IBɜVJiVSTW,"x,0) 4Y$cy?B'VvW0.ȨFkPHB910Zj S5\P@[HYń QdOغ)P*%)&KH 565e 5R1Xt}29$\\bDm+H!0tkAkUT" д ZX(nh D $w SYq۝L'ݟa0R#sZZ޳mHlq !!%) E4dCR<c' J4Ӓ,@z]G{P2МCW\A dą<{79V;fJ džg:r<:P &l'ޑ qVL=销I<yqB ;MY!ٕcČALS9b|N*}&"'Ars臥G piݲ8ʌQ=ƈɩ`$61 FS(hB ?1A%zf+9~\!ؚWj⛤׃ qF?7@JR\\7G[0r42@k ɧ8]M[ #;qS pCns$V0Ϋ|tvn:~'oI{Nǻ}{&*I?pVA>c*.+y .ߗG_ ~U3MY\ .eޯ&W~q͟_QdVmgO[qzmM`q^yy~[B(C.7^B &88֟z\PEI! 1Gœ,Ydؾ|Q !Rn1Ljд-1CLe'A @);qydV;:9?bWvZiۣ:9OjiVGV5 !8rLNSUvmf<L& z4\8}'ζ. bD1f8Z dnX,Pqb^7XkXmDM9-4){=;JQB4s&yA۴@aFU[gT}SakaVuDvs`lU&(`+JB:>Dtiy '4>?sgv+?Oc/?7w )%|g/S|׻ށ7gm>(xiP~1Ooo)`oAuߎ~η<%<|חUu_x} -ok_*|~oevs;6_ptJޔ#R7WCr+w/>{4͟ a/< oy+K9O3ҥ߿u-;G&0|-_#[b{!B`iѽ @}P/Ç~c-1|C.K`_F7bhMvV{3;(*$nXZ ^4]( R"R%t{H17%%wl/|!k-ݿ`#IEr[ը ߑ5;$FuPڔi4/ ll[tD\ÊNBQI-%$QZ-' VP%zW׀13_,XGNM)b+؎:g %OR՟X4MEnP< XcxCy L"W|!Z%"HW7 J'(+W`:"ƈ3;jH6MmmJ.b@U[Cg}cAUYlooSwRLLpޕ34(e  .@dYJ+ 3He(w #X5Ν$% qvTkK "cLɕM)u1Ţ*c]Ho_/]wD1$v߽#>}?-@C9-* GD8ˈw"?OJuX?/K2=G1ǡ{ tLʱ;F 7i'P|8c~5Ll>wU-ĺ:1_#ط qi'uw>׺~ת{Prpw<{1]=agg_i9 d!RZ,0تhށn*B-0ٚ0 0ι%G)7qΑ-XPkh n&(E(mc)F+9BmʉrF̜"R0 31 VR0 !q!\*19Oَ1E3Ƀ~o,R-=I—خPY 7uC*b| %6vLv є8X(ghBV* e6Zhʢ\*c}?b^)d!xK*;_xz}|G#8~w>>VskCG~e/}ڽ݋y|3o}3ָpۭӯ{M!-.|ƕ=|C6~o`/~[aMS^ZMo|oٳg}Mmom+|=vs-O,fH}XwC{ԭCbo{'w}7o|O[oa+O"=r qmFCw TWч0p'Wz-,ZcO>/Gk4o};~`Me~.>OPUC?ךVP_2p!!a2B_<#f7"& " q9] !!#Y[/;HE*-d{őh-/Ro7m c4KD]WdFM!Q5N&G4г͙4gBj3έXSw])i.@Pr%(1ZZx!FP) |QJ!$Ml*B˵XTR/Ť1\(4GBy5VvR "=\>nxHd>˹R uSC'(9LRS;"GmٖC7:#dKڒm À}y1n3EN  c1%rFek^yN,Lt{RƄ08 Tܞ3B"]s8B붗cEIG| ׀c5Аʜ*pv. eCW6ޮ%RH5n4eVҗ5u))5/%Vڐ[[+ 5hcC (DkkZCHsp# ҌVDjHDT0[mb5 ~Y[ZA(C R0Y1 LYlA59lݫ n=;[;Ba!eӒ;2 j$[[ѻ [ZOS,C=qC.Zsv\>\jMk;5ߣ[P֢͐2A\> 7 -5( +"G !d8Gc B#klU'zm rLeqe2eRKty.h5-™c>hޑ^Ѯ<]xlo^O*ugx㰊Pls:Ӷ+@a}J8TY6}}8˩-O=IfEpiWϊЙ؈䫷K_cO{_ w *k胯g`CdS삼!sylhqa>^wjnƝKz7Z5_+هGdx?0ʸ!dexQGxEVlM]?1۟!8n;gwH%=ִMva-)QM@BR(e*E`1dڌl[cHa%2ٗܺ#[+͌ymsfEd4ByS71XcYKj RF\,CcNf*ERf1 m#3,BH)+|+IF$Vv ")%ln[ Dp!pߠ< Š,Vt}Y 1ڒ=Ҋ>q I`,H9RRa'F:nRM%X͑3rd/|UR%KR!8LPهd5 غm[J g_ EZR@i 2y$*)I7!%dMԜNV 'fsma @~z@ )PE&Fm}7g*<g>>3 ?^tys|{,{˸yڳ{g/džoC'~)%|_^RJ)[ƍ {^"JAnnߴ!ժLH I2)=/ vܖb{ m yk;Brkiomr{g"IM{혼ƽħ w6=|1s`p 9D3ûIYX,ba!lC!PTҎ¤m>x ]-R{HLZ@r B9E J[ !Z dJ1A* Pew=r;;;%uh"w \g\p Yv!"@āy(mcFkk(W)XP۽#$@Y$нC9R9A#%^I$o >>#ǀwmIQmζ7#"'R18Ȓ{TL瞬#DqrΫ 8\Hn!aoTJB -sfB,){PU]B Ţc[|P8e!)_ g,$tm1w͉4B {\|hq[!2gH@L]$&a )48 V:_HH08 IDATs,VW׽Ke27fRqJBJH  n"$z)" Zz1dSbB* CGRd䀥$X\156SKK1@Ll%9K3$bM_%br52+!df Yc`g*`* <dW[fRxmE$ H([ VjT):vsY焪`xBUXA$vgV1' !Bj "|teEHIn m3P܂'q񙧰߅Ȃ"#'W3)*ƈL4ue#G,s>m5L8~ z  $_ylޡwn9J@[xHq͂1vPFQ%G2.{-BIyg3L$ 0-g \w ekhd6_ 8w!A졪,n9mN6)o=p.H#J?D!ѺBS7|Σw F6@t H*u"Uy8J,ݘ%FW5n&)] Dpa{Oec4ټs-j>㘳0*$2%ށjU S*(Sb)6|̛2|Y8|]wTf juدOq$x5PZ;~xX=_rG̨^T>s\ofs>eV!Ph?y|a2۟6^]ofSbMoGp؞eíg-y!o,=u_q5tc~jkּ=_Cd|ۮkOj^}Z|;)l%RЄ̓O>E79 w`vh0@-5b#S>wYq$јs;Mv2ASU!b-PWu+bHan"_ԯy8 qA/1 ]a2`- `}Sc)Ns1Ģm:֜El{*QVIeKyZRR1E _K]7[پR̗[RdeǓAs]B۶b*fkm!%2gykVӢe¥bF*Xib *GG* b$X,Í-yCZRB22+}`1]+ QQ{@Ӵ"B;d0K1,Xlʜβ n9'@PRE^;8_zo&) OD)B8ߘ^q^.\ïC|?gڶc?{{W9~ Yu{έ׿'׀n/a\nnYR_SW=4[}wyn_M|_O_y6[a{3&  _qD@}Ç7;gCNoӟ<>HN78Fg@#Dloos!D*>0Υ([: ~tEܳ91h]GH@T0)쥷k5$Uw(a)\ >U 'R.9RUKvֳٜ,L+ d-֣xX}$u9VU k-LNTRWY}uU= C۶Zmh7*h@цɘV@ "o 쾔2"S np4dQ$:FJ@dɄ,=gK0t? bS"7 \T. ceBp0љʇN&ZcoȣvL20.xj=[H)KP5N8Wl\IjA 9cn#=.^|JJX[a-`I12;=yJhLlCK]%qv|2-W` [0@3CFtzGg- C6 FWѯ3.VВpRXUώY쬅`RDFd5&}#XS?L31ƒ%oXuJM~)# sg"Q%ӓ|w׆y%%cdx"h VZ@KDA2RUQ/!FGUZAdrȀ-_Rkd d)Bn,R@b s)Cc-%mTAr CMf d gߊ~O}/>_1h To"A[ʐ7VQDqfy@L %Vb@?!Bek4mefRFH=ʼs0F?иSmB "!i&D42J0 :1ݡ`wW\ƅ a*< h95Ty %Ak3H6J_XږZ@9CIiRrЬ.G&5T+il7DJ,܁ 9VǪK$ Jx^7"Қ.ˈJu]9/pw$#(PZ@UՐZKJ.,*izw<*T^_2>~t?ǀ/Np18Oy&po~8' n*f4YK\ Nf#i۟6硺^: o(,"|f-yf\\sQ&5CI=Ϗ.ZWB1FAfsOr=7)G+ M ݽz?{1-…sRZ)L Cyϊ@o. <Ϝ%>4lM]&Qqu)\dڍ1r5YlٶmahjK55la p>I)]UUcF l#egtlZ+Tk*5+K 9sB0VkkfI@f.ʉ!5aU ׿ոpۭO'o^5c>/o}3arMx7~~S-l;ŋVlon7  @}'Ѵݎ/RB_z;?SR>{W{v~⧎;nѴR@?#* xrB9iR+ ʫNkj֖b>GMSӽi`9z#2&[BB }G1D>uĄ! ٚCJb |E;SӒ 5NYb[ O&X)aNȉF2ߧ%A$JO`R !@g ͥ'(6pDJ s* :_D@ϠIG0WZ  rEQ 4+=kVZk|DB?tDVS5ێM)s$х"Ta+жvTH*s9R]0}OV sMMNe-mCV|R`k1%(!U^+I 0eNK3SR0yYqNj$dUH F05+_Ɠ/={^v/vΟG,4ʼn*kyT25ru$e3H,@< ZKs*v1bCly29]KcѺGަi`2OFWdlLp1 QdDFyN&PJa?C59iaT HX(WYSș Le居GW&RBiZ{ mR0Fy-3J+"M,6HFA $() BFr^S]->B @=IBKZia2HJ4SHI ˗_[BBi5-~FeDIؗ/!'*f4){b"A@ ]w `4>!'A["rHԦnI w`uަh I("sgq%iv |")ANC s0i~XtZj؉t2w[ @+XʍBgme-бS1ٚ`o>/s}A)ïi$RI·1i[Cd~: Ew*בT+JG<ُ֪kKa!DS[Ơq Ypl z؂DSJ+6B @<EVl.Gт \;NWEY+ 3 G*|_8~G! JXMi_>ĒJ=X,VIޛض}wZ ޾@;q"9IdDZ!Jb·L''eqd(ce,9 3lnnw>Nkx|x޵]Թ{pԽ>^ӻz?eOLo&/( ~1yy<1ҵ"! %j@+3~6UCdJ8ku&7bf$7IlĂ=*S7e)Qq.d&q0*ͣd 8򶅜K@at]G4LcbK&a@*%9GGki9BA0Ԣa\.@d֫5cݴV䬋jQ9[2u,Ջ<}/o6IC7X&S׎q@۶t}O,yWXdTΑbJbGɬΡ"f) %[އYmX,X]?T1<^Zk{wfm]ׄQW~a1r||oz}4OjjB}Z(zξL)c!c>qD2 gl\wSP,2VXۑKSݚHT#4;tqHq$6Ԉջs)V6M[|sw~_"8ۜ_;o˙_8ZW_Y͛._U?ÿg˳C^SWƸhmvrU<^ߋヘ}飘|ݠ?Hu^{:؊[S?)'RHH X#Ś2NO84MCN$Z|en.!CGm"Ŋ3b2 {RTUr$Hu2?ԖvFrsǞjrBkŶ녘9%jz1 Pp]\Uo.@7t `#*Z}穛EďB%)[oIӈ+,Ebq C!:+7s#Qy@,[QzIH|hmm)b(E#VۧQv1BS;^|Bh[ aJ=7.xuDۊn+_ ajd|,1Fxb945MmMM o5͹DVZv899AvaFڶ-5E*әZQTw1E7 㪊1G6aaYj`PU.2l8Q 1xZǎ7^bFW 8y9{^|kU;\SsrLj@+Rrʑ vVYGH!l,- i3$໤UU\D Z[g6M"oƐ1b&%a@ehbB%{}dLaX+C; 304K2AbVvhNSJcm$)'TئԮ Y#X"Z\.ƜZ6vUyh]ŝ))}71'\S.SV B*qJ銔  (jE.-qRV"V XX[vES S*1d]Q >xzI4:RJ`U(+1f1//}%v_z-ʒ4uC #Xb04uU"tg#-:b8YDz]pÆ|EYuS9<8?YT,ByLl=tY.WM֚?*Q V5+[4-r朘5s:F5/sw)cQ>_يD+S;cq֚[9O9E#<غ/څ.P+$Vl^BϒETŧOwQi%@&2urI;[X1KlJPX#5VE4]S:Rڐ(=pU=u(#+F?;\!HN$qN PfB U5rһRs2g9O%t*_*9V\{8\g2 A ;Wt ^m"\fui;'A4jyGk:aE-/͝xGwr~+j!2߯8䋸uT>8|v9긨h7}u<>j9C9~Z s,{6_ՁC'ه_V p#,W@CB*7"2jT_8t}^?CL !732x㹷Jzw$ #iUOtSTαZIޛ*AZ}o QO#yۮ8QX;Y1ER(SV Ҝcwuq.SZV]` IDATs߿_'J^|e e|^k OKY7/|'('Gg˳)/mJ'$<8=45> ?3?_߈} FgI_;9-?![pd #m7GWֽco?׳#Gz-|zwe ?JudZ1 Qsi*&SY"öՕU) TUԕhGb9j)]b (mTbd\qzzv*cE)? %tP,cQ*jv1dҠ[cQOA%EKLQ`ÏĶ|pcc(?gYk/F 1ZgXcѵU@+8#)$B[zi,ޔnkŤ)/eN|O^] }Ô~e-'f?{cÔ?)Xٞ9*uirh8Tf5sK͎6&P͍3?vKEkF}c@>.4_2&~q>|uz~}4[k5Y_V<s!L +YdJ]Y]`gFrS )?ͨx#=g<޲SSYyOɝyH_ `$2LS9qWw)G54mCS9KUA &kH1Lҧ{a":L-Q^@o׈}|?I1%'QKLƱ V XL)ơ(^m^RF(ŖђXRJĐf@mXM|m?#{mv7:5B,sNcQN)%uQ V%3fv&uw_WX<{)-d!1)#ȸDkɛn-U;aR[/v4vv=Z۔MQ{`cS K>vQUj!1Yb.ECTl6uE]WX,%źÁa4.']65Oyb='笨cxǑŢ#i6IPؓʱH/C0 Rɧ b ^/.>Nui%tӼO #/<Ǐ;c|_bo aۿSŏC+Wl|{u=듟ϟgSr3<!ccO˟<ǩyؗDϐg˳XR 88Jx&H{շ};^_<C~Gl_Bq[/ŗSF,Q5'WPuOVWY|a$>/O0/(~m)<$%i˼"8( VRTM#jXs{r-E9D4點N8Vm0:R0eSKhwp7Ҩ9eOe.\J7ڐrcN6 mn+J1F1)h{R*1bLsd-Ji<Xc-- n6 jŃs^Ko_e<4m]"!F d\1ml=n!=G9rq7✥itlSlE(MӢR1~fm?pXWat;ʫn|ǃ톬2om*'wN;/qkU n߾Ý֝mBw"LSB~tVgO98Ai+@V0"9RCUB "^=#c?rbu?kK-%Dkm5S3r 2G+qB85eUVd-@m=Cjz29X;sc2!0աr唵ԫ>h c.zx!Ҡ>PԂJKؔg.VJf{Tp!5j;1{y" of5BQXL!S)EHX;\8gY-}ߋc |_mcϗ^}/2޾O,G2J#l[O$!l ~suŪ{D#DS9b.5疜v cIsErcG˕%Vs(߇ >39HMDBUrܕ}:fu{v1 ޏڮ ֓UU*=Ӳb;x_Us[CY"V}ۯ|6v׽1"q|kMP7:ghw1ug?|?渝Wp?zꉉ6W?P}~="oEˌk3/>߬`G|2M]TC ?Y|~\]VX"%+5Ґ؞o˯pݒ[qdr* gG[3`U!Iv*yP"~PT+K\i$EXdK7`\lRctBk[@f'; FT1 CXl|A,biq(D=]ߡPE;!-U[YL+WkQK'}}ɍ^*[$s +,I;4#Ě<cakbu3+ڦg׆q, 4 S2=N@oc08+x4$UaFin[3uqDA_UT>ԗ"kʾdWdO$cv, iL{^ҏ iZubMĦQr-XlSvUqHQGS{>4+$960Há3?#!2~E4YO{h ebYbU4FGG9Sv8Kh~m~3ʏkob!X>ҋ|Ƿ+>???g?Ew%?=O4C@c_~76??sp[4i4~>#ܾ?Euly<[lIjt\tKe/c~?}'w̭b${O__,꛿}|'g2?<<ߥ?~{coswe ܒ|pJ #y /sDbZ7&s03 HPatC/v!dTGa;3<0zPA@Y%d4, 6 ݶ7EےrQcY')b9JggKs Mb{5HNScV q5$sI-%7ا9X3*&,1a^q~~>5*[ɲujtT▤NnaѶhbU"ķr1x%%qUMʑ3U|WWLjRc(ZIt;o aiVREgl[''%ŀ-Jlc/S^]Wj¢q,*O0EԞ )"D?.Fꪡl8ߤ+Jӟo9}>fQ  Œj޹Ͻw_-Z(^9l%K˖zUTxOny/&L=fvh(2fvcX{=8u#1(cflְ<>(MWMeʜZH* @6g%kZ\-R2V2yս l'}G~ 〵qK_k+&iE̞DnLlCZiq<wy<$OUW4 ֵ,+TI녅b9ߒrb ŧL=|mgZ2/'_j;#D6hcqLzuDZ5%kZkQwe+E!a1bSŪ_)R}iqf{O\HF/56[1EGO6m-8]2R[\b!9@UM!hRϚCцY 7@<˔`=nbϯ\˟  (ɾ1^Ὧ }y]siЏߩ/4\|Ei^6~zw~8п>~'{W~f^r؝o8Dv8|Y}CyÝlI~Ͽz|ԍP+8|.xWt_Qzo]c5[?˹Z{ΩP譯gmvU2trg]ޟgIIU1\3_ on'Aڳ%exdܥbV.XG߽ǯy筷uJq뤰. MլHIl![jDޓb&@\ eQN8Y-ޏRXEkaX.Ů*A,1t}/9~H;6h  8^R ol%L1XOO[9X,O6Y#6rB$pe_{Aq0JQ1VU,-[ D!54 qC7Z(vu]N,ՊZӥQe(E_upϒ r*$ iNN Dkw);CϔmǀRPU(S(YB\0vl6z99?piFQ5ۮݻeLiΗ?.^i 4sK@B\1E%Hc(˕cJN18Bik!&i麾2?i58yQ'󻾗_c7WIދ8%p{ ly<[/g\C)qbQhn֊?w䩬[@J7FG[Kģmɉ-!DVԕ#,2da`ѹlN1 Ն~DEUZ߸T1ꊪ麎0J#Kn野;wf.DJm@4ĢyzntnKOJairkJ]״/! F0 b-R~ @8k=j ~FlQ0 p0C!F)j%vd1)-VV meFj޽MӶhM- 3G1t] B캮p\;SKtk7>RUNs.MpzvZawJ+Τ>ƠX9fj-1!JjXWV).hJ%ZrRk%H@k+$ɑ{Spc ~1#Yjx}'NhCsѴ-Պ֐ݻSN 8DC֤S+4Dm *GNzY Q;|sdSԳ4VN/oX֥K;48B哓X EIK~f $jX38RkZb΄ t!~LsUUQa2ָ9+8zTvZ(EƇZNKFo&hb\3ʨYe*#<ūOA~QvבJ`6j[$g+C'߽U~0aJKIj.߇^wBSJ#*[>[t IDATo|y睷m[!DU u|%7UMUWUM;w0-aklif[t*8zϡϷ*k!MnpFlpcxm*'9UKiPht]RZIY;da 󑪢x V)g8R a 9H ;bDA"yh /9&GE2/\s*+47Li'dQMΦT'gg+bK N7Dr;~Fڦ<)X`۹I1nPcO(cL1i+OS FgdE-.8n{ɡ&UQ5+EX̠Jja8="ie5]4eKR148p>lƱxsj],9Z9?;],zvh 3߾%jlbNXl6:8s 룵M[d"Ck"sXݓӗ1v7Ơr"#k9JT eiEݝ2E۬EQP,ebH}vΑvҴ5N.'b>Ez[۲F *u=E.=Byf9!$w7>{3kxa@+t[I$HqJڰX"LM08[bo/qd'Yr#]?P9qPS };_yirɲo}zmӍ|߃#?>@wwU̗s߹`:S6>n.MW3o2>:8.G;D?|݁=|?~>̇8.Dn/Yx_ٟk]/ƥ.s!ë7n>-Օ<ʟVd>*OL~9M2>Xgry^׿k>`z .ϒǗf%m8lͭ4JS[E;q9?;jjuV;gmYScA)E ^RYFi%p %XךXm60 ͔qV1Ng=NN)1 =JkVƈ;HUWx Q I&h^- Sk˜r]!^)91H.K,=J)*'(Bmm{,zUya5Ҽ1.Z!20ȱWJSY=7^&T܆ 8kI*a%b]T#YiEmD4Bf 0'R2b'*nx,E [P,1VEɡQ2K+M %s2S YJ2k6ͼ2#9jZ8 @TJkr%ܔ&N %. ,$ɴS̢ly|Ky&n,Knݾٳt !S>ȧ"2Tsڈ Rc}?ZF|i,8Fښ1ֲn* in0%Z$Na1JaU։ws~Z qzÞc&[4=8Çb[m) :R'q8гkΔSܸzv/"%6]GbuUqќܺM?t}'FZqIZH"V-qBnL@v2(0Yɤ&ci+s]ikRZ} ^xƊ#4ϟùP 4ޏ v#zRF@S?f#gA1֫2CQM*vY.J9jbr1b/59d%I+BY KuR3918{BA%c[r$ k f 3=`o,傅Y+zr땨۶qDUMQe~)٘lEOܺ))kqY7d ^M vb&[ȹ%LN@ aD̜ga'w*k YNNZiSA9jpU%DV:svAkќbD{5x7點̓{("w{P ~Y0oJIz=>pU0g_S3Tڒ</rX.hm IE؜og?xݻstt6J-u݀V I(C/wR.$cU!4I68(G/,PU1&"ZubAg XcSD" Xږ홽%]>mz>E4_:ZϥjmvVw3Xsُ:]녁dr}V{G66?-ln= 3i/׉Q|?|Xׯ.zo ̕f:_;!כg`(kYȏ>_@pq}4>::u5Ϗy>wmW]7cM:{3)cH@ac\Rx匓 Yև_gڿi^GS^3PWsRguUaz0C竌)bvwFir4u˼leX,"E8=ؓR`goVGiV%qf횙3G ŪY'u!aݼH9S7 n˶r|r\ li"H.KRlXI,0lLi rI * 1yb WUMihUX+Yy_SVybe4z) {l\59QH̨Xc1*GfK4MU@`XB.AΕ85Uls]:%{/[Is039)\NYESWh#$וʜs451i i+q,щsik%g[kMKbS7Xb[ hi` ׀B:(uK.XE*!$΍luCURbOjS7-ϖg˳E"'I)vϖn2Vnfڜ#E"WSӦx*sSȱdbC( gHQ,H'pxL!˜NkE*s(>F=-6Ӄ[I%e#u]6ťH\,8;;'&5SN*si+`'9};\*W l^2mmqؓЄ1XQhQfƐ9@(0GE[U;GRH&Le8ԍ#rʉv+ e[re#6(@X/gbid% :C* @s51x48d':b`}tĽwߕ9j]W,d3sTu8%w JMC]Em*6~MBJ,9 8(# ӜTQRCSŲ{8ν9w(3jQ"4:e8Oͯ+(ONnQ5p||B{tD4fѰhضFBU]1я34Jkd U%yJX.X HeoJhe$brNfϨLB+'JdG Lf`m7*EхRNeT.u1Be)%R#v(K@D]Q$Τ'ж^JcU~Kcb\kvQI)5ɼrfic40'9VYx^D]Pt(~PlMaQ[5Bh=ai9G\a3Z@0f#*ql1qPhkpQ51X[s,V+("bރ2`&{^"ڢ7MS8I1Ǝ}w!GO48}F!({NnSfQ@8TTrn~%Sچ` ^N1as] A.TohayW}䘏"\D}o΋ۂf\ m\9>Rܳ8a&xB#J݀tC'j&8WI\e~`'۹O%4匊^sN=IT*/kڞ|x6M_oC^guUݻ  sD::B J'Y#_kN>ϗ 3Oz@dM?`&ܣ"c8G>?}o{O 5te7ހ|ӧv Mֿ+ Qמ~šJ߳$Qa|^s56Ƞȗl(n邝%+}w'¥tE}H5`>׋?}=3A0K3! _QL>V秒q|<ݿ~9 "'_5^yUHԢqu)xf.&66HX[[C  ^ÈRcU#ꙝcڪpPKӤX ~Z90 #XMTiy}9 ?ZK i!s&$*͚m?3ełZbh1F8J#1A (BB-SrJY1[>xf/ fR){/ONV@r`>t'%4M# l?ފPٌ0g]4تIfCB+}iFֳ5Xx'9 {ɶ,Ṁ{ofVtxa-..60Ȼu-~qWWk@y ws)'Vԇ yF(|Și"%nO'29U:DTcc,YeRͧ"e!+lkb09,}#~@hn#dJB8#;khf՞ ]!y^DwHP-[ %aRD|D)،o!ď?k-v'V[HM*{xa)bXQK*LB;RpL+JH%C)3)9F ~b`P qnvJ(RH|yO H١ !LՒ9SGrp}iXolp{d9I)"5L 4z|}?';|f"ewW;juKN#i8 ( *+$we3LLr4Ns]49t -%H!2\2[q4b`vIגĴ,ІHqP6@(~~{yIkA"* << vd% ::Kv)! r\$M,S7PSFg(;"@|4p x3)Z3CdDh'zQ "͒{T1PfR+ ER}ĝ"[qJR!C|:3b,#"d~b٬ZHARhU% b!șP;}Ԕ-GNR*حV! D]Y 2`&2z*Pyc{ 33on>oTp]om!q;Xg #QyD(e*ӈ"=akĜ=kn|C80IHsHhoE*DJ )&X=n }Qgc'#$҈ɷHDYJ1'È"B0bB{P޾cI)a/{z @`жń~GDgP 2Q4Y 6 ?`y":"y.dd\LAЮ)jC&Ӯ$  ]xN;k?{t{ɺY?R>|&>XZėYĀx_]d+p^؞\6%QriuRch [!/&su&Ƽ躎̤jG)Golcz;͘ DZkrOZA+uY9C+rc5r&_*'E6(@t\_ʪH_BB(\#4yXUo.T:G*ڄl9 R$ L}w漎i3g !+.%礎B rSؖlaXbDuPJs;Ym`{2*T gII'',lVXLoqsqu. IDATJS eu]MmLR8QJct9se2 g!EQDrԨPJ!@9bz͡n555uy]^_,km =yF8)Wl./1P8V hGief_W!f+c'rDIYuYFMpM=|F$HmdF>r;Zj v-b 5du+ Xkk03y2PZXN6 )20僢'u3(0.Xr)HQ^Pଃ_޾yK@q7)*<;s*QrDyMh t瘑T&mpUJeO)8@ `K(/+Jr Kd(^ R cT6"pX4taz5fc-y%G%Iͧ1J %lmLX,1L4ڰ={(IYI$)x) k5 vy(+3η7BuݺV*EF4YcߡĀ>{)[A?Hk@nq%9AH2#83+ЪYVFFJ\`&LUerJH.BX\ki}k&=YWCt)H%h}6\R{iP2P2g886ոUYc2վXV"0:*fySN)&Bi5f 4 ۓ׺9N\(4%<:Zc(ls- ]9%X۝(OYN#GqhfT)9C -b^ E*jQElD5v7lPbR۷bsANzIepyyH&)B6SLȂ1ĦƮ}5 ~z.9*L [HuP:%,B܁yĝ4ۄ'RW? qby`?w:@/ޟH#mgC?5hm§_ z{~0ۋs?·/?u9r|TN.@̭LbeGyM*'R P8*Wp!([R*tNu=ra& @rVHDR \%n!RJ,/./1ș،qO{<`]!95s(xOY@z*57ҒȦWi>=!%9H2sE"\ :`mq_Ikt.uPRq n?A)EZa{t]==:>G8K5j4*  # bԠ,1"FR ( 3sdy(({;eFɤ}G a8O˲ⷿt|~Uhq.b7o">: JK3R*ؐ] RhvJ(H0}X}fs{ ˲ $X벢{˂eYqqqi#~a%לZ#q, Z}}NSIuR*8 g#E߷!-ͳe $%!xm1nFdĔPC43U>s=u-0!B)"8 롤 4d -,3JhhGfEeJgnjَZJ|H+M&_FXr^[_IڔP9ei] À$rs0=oH@j~Klu0H2P( rNp#;iIZhF+Ӵ)םӰ\(V|vaR$Ck%GNi5%! pDTI[((tBYKL(|B:`)GI$:Cef받vo[tdc%JQkLP`6@~Bc 03_ͷ yjTR x pugc$&nrjJ=~er RrzbZl^2,3Zh"V@Km,2$dEQςΌO}70XNE-pWNG "\{%K&B@.]CR-Zb+DTC׽Fb i-퐣Qv(2R0D0K%4a&eBH˲s=Hc-9,k b7r0JAK׍Mc #?3BXsE;ӄ~2SH9ï.6lKr +@7 "LRr(m\ =Ac7Dϩ^G 9t}26~I=[,  $0M3VsD1 ) e] #e,@r\C8> $QXύ8@H ȵ|v_H9s?H ޕv>Ow_~@?~=̾#O7e_{K)eGlJQd4!>fx =s~R6PH'lNՙ}*<dZ.hkQzYEG 53%b| q:s~ڄފJˬSs2MrpqtʤI 4gL]NNk?QRw^sMF+ B=s }SJ))[n0ХP)IiS$/+3T/6PZc ﱟi[@uZ Ll !1M3e`3YR{V@b/(9AYurj$J)RJW @Gqu}լ}@aC=|65[@y\ovVRR*%%Dr 9]C )zd!.+JI\^^bfRhg-rI@ !4ezg{ ⊔pטEZHGZY Z\]^!GЏu9?bň7W0@(rr3A"u? `JyYq"9m?@Z8M(9 AMNryǢڧs rg? ^?>~9Vw=u~9b)5{BJHQ@p7ֽz0Fsq8l\{.g[BiOtXxc{?[ ^eg>T-!pㆴqdAs98G9B9h<7:=3$#eǩTr߃'sǓxOu_]Jۿ'u{(0S祛Zg]BBaYY'>R=-c}|Ǜ#Ѿ4?^zʽןagcS;_p)g[֦%0#-PH͠u TH"=SaS$p̐Z=9m2b9*}TswR&8n0Mul,ڪB{)Ey-܀#ee@jKe \ Hu6@kMipc&DJ!'bKdC@׹Z%fXVaXB@p,;M*@`g(Ex!7ݵ9c/soyEn^uEw??v{t{~9tWwLdK`cəx%Ԟ5D JStDPZ\ JRx؁$0ϡ0M a]XȎu &vV@`3n ny +%_);&9 p99`E,M)0 b!=|B-5Sƺ R 䚡^Y՜8 rl" %lMd=RVXk85J02fQJy[dڸ`ҳ{9: gMR!PLNO`7<Qv]{ Ay!x䜰\@1}z<[gC/RBX6_ YRn[j8k \/V*"#nPRb#(KqR sx[Bŀkh1t\XGu"YwB)a?iXNs'ű5gR<} %,,,&`龢R},0Q]Vrs=\8VBo:GH⍤m~V3sQ/콭5rS)M !9?j)Y;s^="f Rz#gsW:t(k. ZVk3Eyi k S>յ_кa`@w؎T⸕)sULQS"u:EU9EM l͆29"%K ]7b3P )5< ?s?@)Xm@羳R~??#6È B vm)Vò,ѕs6WWFcr3>`دb)2D}?P]g?H$dHy aDwi{o޾AȅRJ j@r_J m1dѮ R#:!g5Ls6craL 5u{I& ~Z/wpR="pHA+</gߡ=|QePmK%ȹlkq} &"{y|xk<])h)_Zw}qi-{RNCfxoL8!XgS~pţ7Gv ǹ_2=%z?Q^$쯓D %hZkw`x-M(̔?~9 DvS>̖-R$uPlݏ=y&x Pu )xk sX- 7"%M.ε:³jjQs6!RPAʀk4Og.-|.XSuf=)m}u-H$&la/YYKӼ"k-޶eԁ ;8 2U1B\{K|L pR;6-pgtE zhT-RʠVHx*y۹3ͤwluE9Bޗ-_n Y$:/k^lf^HnZ1R5B`GmZc&N m;BHȥYB$):4[y!56~A45;B9 @ -)M2Ѡ]yEl^u(cZq`]==rX=@%B #躞,E:v1>DDk@ 37J B#Ņ1!xR(<;Cmp{{۬4H bߓ18Giq}JJihRn` R2M ZXgh~1ۑ( )DLi @g lի8Eˁbus)Q7-',K+(Prdgb *33, dP&s (V斃L) =b ^h .8ǵ1_ IDATX *I!5C.Q~9>6@o߾żd? z(')6u8*ex>WA12eftIL`Q`P"y:QIR@ ,l{qaj$96QOb)F~qWW>Piʀ{Lӄ3`^Β +ٵ).w-޼}~Oiƈ{c4>~2/ps߼p\]a )aq* nSJr Y ,t"8ʊH/o)HBC.TK({1T!|ΝR2lQ2mJK4fk~IT@YCk0%fV(+m-Ħ@FA!UB! Ɯ bhRZF,>f8FIűP*AyK9Į,r;G׺К#ؠd$l 8Vq#B ٟٱK|`@HcRC +sY k :kl阭 ,mޢ~7)%LΕD[" 9qBDL~6 \K2-9AQ\Bjog{"T@ˌwD{5Rxs~ap}u :R0 uZ\29]4&0`UP2sAG}~RDRr#vRN ! $߷nHyt㬣AG,Q;M_#K ەcU![gZt>u^%~BhF~z$@||Y8usgr}*#<~ϱYOŠ62+}5O]cy/4N-y~r.ėb{뗍_^ufgJa~sgx˖,Ϥ3QcOןU6Y |~<3 O&(\#V GO5#6e )C -F J.'VBV/j*m\kM5P!R$PZ!5. @Jn?Y=%pO*-~U"2Rf&Bbg%.mcI.}_BAcK)1 =5MbYn1! - +<(XÀԄ`ftaYWtȅ,⨧P2)c٘1`g}O_ nhCS#NP}߳\hX8jBMvJR㶰E VִLuY[Uǘm_(\VE5pPKLܘZJqH'᥵ |]^uo͛0Hu`۲jy=@%ňPh@O;jLke%mtF#{ 9]IjuA0+AK.GmT\zw]DLF:ʦ"@y'k/"[mى&3p.حh Q(9eHX5XS4OTi~%sޫ)*PJHo~ &VӼ1GyɦH dM)!(dJ!6 U 9J)*b3w#S&c$aBd&/Ӛfsn˥$Q`9[F΀֤/e uduDcP>`7B`BӓZQoe-DXB$]F1`sA:Ɛ-t %PJj cRk4g7>`< ,7טjKvp^"2nqPl{o!^ LJZn=UsAfr*fݼ?4a/7oɞ_d,Kq.rH`iH$R@"CSr*!1V#H  b !!Dju@QVr=ZW)IVA@r:($%T222jT$D Kș. *X*R2xM,(0]"Y)~_~dˑAmzd61XWuņ}G= ޞ P4+ũueOs{Ԛ]${RU1L`0]D)@K\R0Fv>$odE IHeY1M{D`Em9vM[?~w(ZquJ9!R};Ƅn3ůMe@QruЊ딙aB)3զ@7ݎ@߼A? :MĔ59|xw?C߼}~XkKHEU#j^ILMD,H#5Riα5)%1WRdx!!Q@lNd&H{ӌ8r!6y>+S_&x9{[xTЛ`'d~/ݿ_tw}DGyYOGdbm]"?,rv8>'_۪?zοcs ?]/گg_˰zPm2TJBR|]O9f',lG*^q#%)^Ք"eO#QN 69 G)ADY<$p`P0+C+plaDkȺ:V<]@M@qc uX`niV)x@vSB΅ji./=B)e]q23`.~@.8XVVyv)C?4W kԨF:CIcDzlK^,[) ,'nksx4aYu%b$^)%ͳ J*,>xz{"U2[ðAY(IP;֝*p]G*H)'.a.Z(YUk"yְ )R*ZRrMN=RI.": ՙ֐zfW: -53KL v+h%U4lal.K}cYfg P^*eGt}G`ZN0"9Xc"ٷWS KX GReꋾxH18r*yQ氟6 ck9(T1F6VZBJ"X ٴ}Ou+[dd:H)`%G(VjcI L.PPDnf!Pߑ̀r! ӼÏ8cݲLP$=8C:jM&d~`ື Al#]4.U-`єk"ً5!bW4rqәZVjS $%0wsZzBiŖl_TR&d˖P3KrZ㑜+Zl`duS| Td:ޅ6[O ; Qx|oqdz$DXY "'ˊɩA+ #9ɭmcBX 263kߠs9d5wno)q!CT׺Bn#ʺ`ɥ*OSJx D`e][aDu<;Hr0`5"Ĉ˲Xo}511Z!:G}+>/X^"t(՞YRC _gGR-K.!]qQ.RC0a#wht>!q>|-)ZDC!F gg W:]9ׯ>3olݟc{oxr^u.qGS[8>p{N|w~7g.}ā9Il8:!8>;A<9=^r>?g|aۿ̽z8c@aS'ɯ?[^ ${;*@ѿQO qؐ s8ō f>M8%ӻ;dS}(\LVT %h!G)asb" pILWRHE)I)"DW[EL2p)@ @ i?AݲRJ_ 8]~bKJ @lV\Al(TЅss!vl6̍ xc*{OskkRlLbng-Gh<)ۇ!+8G;y=- С{,1j*b@ƸF4ƙ]cǀ] fG;3yb0!ŀf t}loo[M 8BHv@g6%7jJ iإF=$cH"B)V i: rkDcʯ13 4㇏ӏ?CJ+DQIȥhId囏ax)P[1<4/4 K!~H ~p& hU9%i.GR.`-p[=\8(TRM]]j&栐sH"!6ORؑl^$JԮiR2B/mwʝz *֖KDbJ)oy˲"V"D|/]JFvΙUzvԣ9(D`~)@D˱k1xuZt )}K4 : P7 ~ßOXGŭG&H=bL UJ)6hloogVuJP|ۏ 1#牔,\Nӄ1..pu} ku0b]VwzgǴhh7 J³KRE:1]eYei:B_f^8R+v ks+9~!^PP̈́jCcHX7F/^>~]ʝi,cxBOvz4~H;-NAB< &~'^@S0!s^ GBϖ(N`iGly_NE>Zr9%HXK]աT/m:DL*|'Xom(ެ15-şcǮG=y_'?u3vIFHt]~;R#EC߃]ĝO;_907*zӸウw6f>h9`==Oɯϟ/{ sd3k pZ'h-Bļ.ZRZgAQS&eҦ=b 3YGջ objtfUƊB6&ªp 1"ǔ!`YVh6|n)dk`RqSE;Yr s3ib!K,#VkuEzs.M]u=3lVm%*]˲BMR0sqf,5ȶF'£ZZbn9љmȫ~|)a:j,kSZ8@E?">.37h*ZtO|ǎ/TJ@k'B 3^-,('CMjnxk癚Ŏ<~pq'@JbWetΥY@flr7>&"` A-ps>LPGmrX%7%fv=_)Q.S^*0aWuy]^_vȠ[u܀ sx1XJ Bʾϙٔ"yEwaYV(0nFl6ȇ!ĊH9w h>x09wbgO h"{!zpyqR n ]ķ|a[nqN3='n"I|1Ų( *4IV"4-+c;NX)/@aZUA XH7J$G$"{yQD#vֶbBcp"B ͝AkOLVR;lmuupg"RL>Z!ň3 R ,LDqD@CD IӴ߳JvEp1vLud'=KʐN1m`嵇u T0ֶʲΛ8Z-SId1Pb4lRJH$~sC,a reBLH m40`]=y~:2c3nV RVwUkGRmcI4 \R7UtϤЕuiI|G*,تsĒU,J 2->'ew%~8'w+PB8 z:ףwY.4\MEl.$PbhÅQbs,gFj&2]'gDcoI|kTL %cF*YTں#7v4-2rᯥ\m9"7U/1kx/E)9F)I,kWUemRqUUR(Ck(J2સ8%-0;եi&FDD}X4g/^^4gzBԷ]cYV.2vLhGI  Zw2!!Ƅi:o~ ]k-6 ~?}~~8![kaXoS"Z3iѦ $ IDATc x]F#=!QPF]}*w@2T]iP 1`ZbT(s/Rw|xP'bOHve;k)C@Q Ϳk}_ͧp7LG|5 //d#г'P]N8,Ĩ*?|lgOg3q΄GyPj^m>~(pnN)2k@R4o&97,yo}kVN1FoVC? #K6+Fx<2d{կ5~aLu S¼,(#ń۷,\k&Xʟam 166mi"`8 lߗ"b̀_K.'3V;ؒLĎs'`3`J+Xm$묀Nk1hYr( 1%K(u!D"g%22S׍_ O.V`X8[ IM!\'{« _ l"gF 0 ȣ=r%Ĉ2;Dkfa(m5z hb2zWVoo3B`T9he@6kH)9+y:Qs1bYxx}?B$ܔ \@V~¨n+ʲ(Y~ ~~?,ǻoAT` j'qDmw8N؎#\k$D!xfw>M扁qdŜRTֺ.lPFcw?߿ǿ?0O3!k m8;C|#e v k+3qeQ2a m1VQ:ױMXjˠkl+q`&0 L,j!!tcS-)&2 g)V XF;C\pXB4 :*Rﰄa>-+7cKr^T( Ju)!97Y'\xO+6 rP%{uPZ?`3O#m?D VKK7_ lX/,Ya1b@w>{]ר\ V6X%'&n6\i,{0 X*{5>3nA=RLFI" nnn+EŚK'V5#yA :8q<4p]<޽vww=+Ie46#&*BcTi8hk8+L,v&К*D6+ (9eq\l9?UlydIP-g@juqpu&:)-)QD眚Vn5Er!E]ΙuRI)gf :W*G5r*bW:!zA h0A,eZK P :kdUݓ_<,8|Ή]&y:b=T)،##fBXm`m -@:[sNTr:'|Gx5uq@ !(Үֲ<[ss3x=J_M83`+t#,y1n6Ç]a:]6Jɘ1 QPh]ӧO{Śa dCqa΀_[Q\]8r \TL16E8 үaI qN /57 l%H@|mC`=3\ Ԭ$RM1)L(}ew( 0FcYfQ*Sl砝. XW+? ?RϦKt_?>_OW\GWz |p/xa,w<޷._>|]0.1+# w3 #H1X=.lba@Woa.}A(0k~]X_g\~S/ex׌?CMuH1;!/3`<Ƹ&P)7R 2EV6;JYٜDdx+`'(wU c^fKE_Ik8kZ[C-E4Ai^Ns ,뀖o)/V_u="Tƺ.-Ì!x}v]+NE1sbǘZTsem͝֊ߤ6M,aYsOTdCC*|f#mR@Kb5vbUnVRh{圕BE -rZh cpg-[^Zߟm˨ݬtSshcp<Ħ݈%gsb)"օ\4WEYV UbQ; W /`E+ZɹZs8'dq,%\?RBhxÕ0ڜj-I'\b'^gR8RRLl (c"8a61E ^,iŖuA"VgsMJ{ WmBxCx#Z) voޢ؊Y^)hkJLPYG{K)v>dA-H7ϴ]^kOLX8%-FnZ|M.ςB56u~?j;cVP9B\(ԺCUL݋b`:s1oEz}F3H)T#>0>R#_C),)n%^.JIAJŠaL= 2 [ 3jASP] $Ox3pZV~,1Y$#m Ǎicm}x_#^D YTsP03~V#ϴB+򛏳ú?F. }YVbv#*AmcƧQJvZLcbl#},q #Z6 uՕs"es֙ȥ]-QkR?u}^s o| Z^}JmjGmVtA}gs@cyY?}Kn ׀|};;"/ΡOӫ ,ʳ»|w]Om>?Rx?al\J9wǓamGJi꽖eԲvef8Uͭڕ@UQ "Ը`=T~}=x-{]6TWJKt(MA-_G sEtyhS.w/9>>?ه\09{VC<]s~"'PA#n x4#"(sMgKͫ>o~@~VRNuXƔb]3):G(x4Gie9\.~]axxg.\y,pױ2ZK)q:0#NR 777 RF.9W(C!<@J!m׉ z-5cjB#T1ƖCH8:8k9Ol6\Ze9V3a[Cπp፸Um۷>`+FQ[{PFlW^$," -pK_ET=e悑ѹ"\U,$vtZYD.m+P3" b(qV<->_9[&gU"ԢO- B9Sa[pYVXc2K4Mx [Ybio kR%w25 j _XYβxR` .Ⱥa]VT3g,߂>޾<(%KF^nu|5_JV!c  *Dk.ۜg8Aka7vZ&G9:Xˀ4M .))imS_VtXg_Qj!Q@:Džo1}#DG.˜Ϲ @E!ȹB)FlcuIHE DK")X*D1=i3%_Si|@AL:g96hμ+ĠPsy|OR~87*J EP?R`b?uF#ibP(tL{ovdYe Hi yb Lv]C~eR0^|Ms5B۷Ǎ(cd%'d[|LP EvhA|`8ńfyy}2#[Xc9w8Pn &yzX41itnNJ-8ZgNzby━O"(9SէA*%%f Ji R*0VA) :S gzWR@ QP%4e0Au{gHֽE2na>dyfeY,3c:{;(Ve|nPPD Ʋixb؋,kK@J M CXS2!h^C dQK>o%:>a} )t?!FtYV$r(t݀{ 4R*xB2`Ex#EP}H{ K8M 64O8'?m-X׆j&̤@L@bckXqcq<B+ 2 \de8o\A"1M\$ϻ] "MWk "#Ww%\vY⵪;cnёlѹ!ZCeSgHj9*f%}Vr$q(bў9{g*.%AANLim渱"s8IH+`dm A4fh>N'tbXZkRH L& 9E(O?b],aiDw]7bh?M v-""@8n'yR=`x?@Jc8H,v(yeABY Ri IDAT8 RX {(kY9s9ԙ," ۑIء8utl4Mq[)ދCRg~҄$p!uۣ+D"لbq^|yݗ)\?Y4*DBĀ˸|_bK^>cz ̵.[/;Ƿq,O*U_{}OԵdybԧu,rxTGÎ*NT._q\WN-=<}ƃr OV1)|8\gjt˳3C|'FQBa3 9?kHW+kQ{<_x}"0; ._/5 |Ο^r}_x=>p^c_t|l5}/=oD:٪_} [=m))kM:lU/'*W3;~ұ_KO@kRY39{䔰 ?o0bJ$L fA[b*%0H!{̅k^1J+a*#1OUA WhkCDb*1qax:b(Ͷyvv77 p8 MZCi톋jA)2uRΈMs9qQ#]1f/a:dy8ǜ }²X/<P"E&(⾔"-&-k LU[~"@TxdDQTD2;F}.EZTs6"Ϋ_(б'eVsv&w;RhKϔr *j^jKŚ%⾜e|`YeYڼRI*Jڷu2ޮ֢s'^%0f2g`3(mnSA;l!c'1M'VʜUmx^ d #h ɘ,[3E'T[ݥ?q1O:a88OL^$"GXDٲx:p<`]f8X{ζlYqN푵B, =B5)29SU; 8D|t^WfY>冀,{j~>ZN2~h @XHp\՝˳@@VQQO4}gG[IvK8%S/G6d4?x=./dh? -=Thr؜?Wwy=>8lF̓ʺ ~8>~]d]3) 4%+gVT^\и,?_~}rV.^3a|/\Ϸ~Y\̋y%Cpz2=5=O`;ʼZ޹fc)IFQx*>-/nnL #THwYW.YVS)4EXQU4HUJ,ĖV=+Y!~@'WYֹ7]uc^Z hQPSH Y8#q:Z_Ŧoh\4l@kٴ3˟0 I9)8KVv]H+lY(ޜ*6#*J~,6dV 8@rR) %7n閷5Ɯ +߬#Chf- >Dl6t]kuS\!R} a*='*~y}:X]|̝~:&fZW-bVz4M d-Yw4p\T0xjoEؚScK$ Wㅳ+em!Č& Xu23A~PcA*E҄qCsΎCvmLPW\$EXpNLa&N.wwwp޳rg'$Zicny ƀwvH1 +c:&W@?ZwrBP+m]30 AHDVky7o Lө\VK:9 2愜B4s:xuAJ}!|pbY=bXbF/7el}t8nٹx"VUZa{8#yBrg B"!"t!eg O1 Blnv0J4M%d%ڈRۛv7({78Yx{aC 3Ws E)Ġgc3QȚo޾7o; t@va6+1=Bmqc?48l_cwdoR^RcL +HANY`5<2ybdu*ρְCJ.&nE2ŲYiY䘠ICiJ"rQ+dGPi%πP)yn:.sXR@U2$!tɊe~bo?tn:=vꬣer(2-g `͋!rlzlLLJyI70 ;}q cW8gKfыɲc_""V;$y]0qA /++K1>yoA7F[X.>G КqafhRqLjonŭ7RRȦk>uUU`[ɚ$B H!mJ #XRcrl1[] Q/7VJCu}.'%O \ YHƚf[BҼweZJA?[όQ+q&w-ӅʼuUc>VQɝ qY%|5׀砚+=9SbG=(#8F,#/1%+BqQze]nB!tǟg0Oj!l \ ) Ɇ]6F| 6^Cm;np5?|~rL١sy}c#9[ֽ6:dڨV1O .њ_#UOuqZj_kMtf_=xT.N_)5],=T,ӓb~E{~g牿?̴.Oگ9^?? ?|3~ bW"WJm%H.:꼘9.gKW0dO7쁉RuW8??Pxu g/[Bךگ)@չiz o^}"}s_/#+w~IG W޼mK/o,62cw_ Vk)Uu+Z3<1UUWh.2h@K0`].Q !paNjEY*nooZa9ngXťgVek:k&wLIŅTxSte2oZ!4@8#e^p8Shn 6b .\*H!6I\j!6 *V5?lXّp8Bńm*9YI j RdM 99K݈2*I)+yle"bTJ*4HB6U@A)L!Ԕį*8ns\S+f)XJ\+b-on"\ sl`4غgߓ¯ms Fΐ?g+!TUA^CSLp2բخBlVA8` 9KI6PAtRge<Ϣ(-B`9qg9JﭨSs~n5LYWY9n9BJڞIc0䬞P:;)dT {kѓD6+b)51MaAl+$ƌu]J1CYlwD ytiVB]vTTU⚱@87؆b<` +i1Q!xVC'*()^X'\}?@kºzEE.)AaHk&HŔZv=n[FR4B$Jq;i tR㱒L/鈔 yaX]u]pƀO>aSu<7&o>l`=+; Y=uE׹y:p<;| ?YLS#hgu#ń{ CL ʭ!:u^Xul;q W/q BX:@$kxlw(Dlc`;8rYHu=V!X7i{xwy}a%@&!7o Ą_޽cp0vJ!۷# #a>b]`bsHeҬgޏϗ^~=p_?Ώ59B&}Uij :tzhX:(_'Wx8V E+[)(.Tt{?Z*r9gcb]{l6M!B'a&j=$\Y鄒 gu `йB`KUҳT.؎ێ h)aيr?p68`ܰ}x>} i-grRh˺abV~Brn*jVZlES'<'VYϪFy13[1XcS x1ZYX[}a96۷0s^YZ_A.qr@Tbl@r-Xٝ KbbZ?Ϟ[͖AemŢ,Y+XnE,k;߷HИl`Ū\@,h2Zc-Z/ATd)I֢ᢼCJ 5J΢- @J޾NKB.953Mr=R Wf`u VhbB?tU1b[D+PEe1A?ΔerNbBSҰe:{%{L#)x IDATca`Vf]U֙FR84!6P*s$~F!xcys4bX!0.qU%"XSiLiȸ])F&OEdqB֪8= Dž +kEjg\xmW-{ dg`:*  L]%|k8FLD!u}'$9}JT9 1tFe^X osp_-cHB``㺎iVͲ^Ͳ~995bWyQ:b D#:&M)\Q3Cj^~؉{XU 5Bl:uk 6 cfᄏ>c0a#}ww(%s_{]D\V»-˫*emhJȱ>\Ng'#yUHC5j+1KLU"K)}U$jT VƟF\z~ۓU.V]Vdiu\.M#Junm"" CK.@Ȓ?$D=#WZx >P?F)(g / *>OŦD 嵁PX\#$ōuip~GYdI+e>MȩItUB0PZ5}{YP2klUZ3^ՖIR)\%+ɿ sJ>/޿6P~_.$ޏ?+7~)*}8[_^,{/瘅Ҝe^q P_R~~l|Nd^+>Ex=~?t:HL/54{ڢ D9Etc3 x p>xӋNϨ_(YdLߓ4̧P]RJSw즒 >t8`Jtn/ȱ2͞պUHiEJ aϲnFbERϟ>@Ti 2{%IO#"2g ,ZC>ސ+B  fU?3Ȫsf3DvUf\柪u]!}J:Juպ| _ Zi_t:#gE[J jH1)N1Av_kKwCGLq&qJԥU&$w84a}t8>†k6Dݶ [ؘ,LDQ6'z:b;w,"0D(hxo{s. oﱅMzuq`}w3SQdX {$>mi6(cbP[xSt\gN1bl-op'$æ@{:;"|lMssXBZ ZIwxvj h n(>"74;J~BRPUvcG ]D]+Mhn)ؔ"RpܚqQrqb=D'i:qxֻw>_[#iR*"TyeC;.6ŒbmĞBx0$-3 ,zSHh ;:r$RI0G l* n+it#4y<18jy LL[[c>hH7>c7#{kc`􃇂TT`rR42uR#'VXcD>.n!\hxS`cxY\.Lނђ^y/f{K4 x]N1r=8 pm^-.27Ʋmq8N6g0r] 9eB7%:% LHSh{*k8H(4|aFXGڗIDS<ӵ!G =yb? #%AxU-cRĽe3ȾjRjnbu*h)!߹֤nLB k_3[^Jn4n5Q}krku~֫aS5RwMjun  2ٸ׊q7'G4~: R}gT3`֒a%AT =4^KAF `/2M*SU(PH)XJk i,[{xH$9 M4vQPA*Ev=y'lDCmBc`8Θw oRx kt4SJ:~Iʉ O1W ׭1d]yeZ7:Ͽ"C%V aKBJPomffc-Lյ^r:Y.>k}Z(LYD^Nzg(>?z_+>GT=˞_]1_֟9q?kPY\tYPnCϾ>Bx)-yI)6ηr mH\^^쾹qQˤ-zᶻ {?C~ϯ?Α]~tp7e_;㓝qZ2+(_;{ .2 +ւ*:J3MP^P7!D"]{+{t̜ra_۲I=>=11&yL %g|tkuV۾fk0 邻$.=$K,µ qqQlkS&9MA =mÁE.`BWWEox:Mpjͩ6|V ,Ug4GN3mn orarmYg94S PP"6*׻ڬ3}c$_#DP%)Ԇn=Ũ@LYaӔt)1Ї+aϲ8on68W,fhu%c0 '֮"YEu1ݠڨSӞpҺw+I=][]\K3A!3BuEV7bד9,bᲤm=kg*ԚߜN v7QB4J/;-T_& _ 6){֪tm:oyV@aX8rA$cf1a4O((ana[W.KBLHOIpjcH:F$ak'r?tkA7heOqyj|!g;[5DC n IsvvbDO*H6e!c Pu4O;% %'d2w"p<-!mS^Ќ-,fU!h sTA.J*=N"V>JU3Ͷ濷iesÝwǗIųx˽)rN=BKL̹ڬtwFHY Ҽ_YUDt @\.pְa&yzw.~iu볨i׮E~y=ha|w;Zq_|!pFRo޾K|-kܿ':=%1x~`kZlٕ5Vg$BvR@g8+0$m[ yNLٞrky!n@3T3ѷ!2|i[\/x/&wt]_~|{_gcDZ^M_|SBmh RNv35kȍc~;ϫ~v!s/Z>^{Η'–?Qi;P%Q}-Dv[tD+8lxN7ggnX'zRUUhgd s-rpwuk Вn݌Rޓętkʍ\`[[~2F?|>c(NW0rn臎L)p"JJ"8x1v쒔4NpvG ME&(3>"Isdb`&Pq!yN`Hڀ-ZPb\LUAuP6A%UJvP-R{snÛ9#Cmɀi GIO4 %lK;7J 2OI!oe@gI;r0jey5Mq朕Ax.{/i9<0E\5IA*⊖2qq',12J@ f]Ɛ6??%Yjiz,=Z/u[{a jHRZ!^Yz$%tƗ86!esf*u6XKWܺmpt 8qi7b8R` V sZ_q9'^1\I;Cn5R`4hrR_ghϳJ8G։7rI1.f ~%  <Ő!TecK nr^z7e31ֲ́r۱#tAݻpIW ag1@(Xe&J*!.R zw4ldFÌXǎJwD)1Evt0Jov>&[z`]<>> N|:u4<]/cxb[D<`IY#b^ĈDľ;e UF)y8N I)kʶmȥbw:J)q ~ghTXe-޾} N E;9b])fY`@D+HZ7r0m]60xĜ\.WPx- 傘"S)5HYGHǡfJ((˲!~? 8EܪG 89fI6E1˞ET"V\Kl3h<>>>,DWv=;ۆB[m)L{4X5TuDBO*CIw6ke~7pwfl/ \گ LN;3eFq'pH@Ѿ8QkƉhR1PS0bi0)qOGVL7kCiH`"w,}mh,5?gL燜ͤ0#=CqJӭl]}o^VE1c_}| um|}譯SnxO?abCߧ!_8pR1"l(M4c ZόAѰ|V!uk¶ʂp::znGDl %'ޡ:!Up ·((m͙Fƺ&ӽk7Et7J f~Q;xSյj"DpXQ,˺PNe8,ɱ t8jfmb'=>W1 8HcE1BB-YP'cRJq`/%M&5yn0b Xץ+%K39K5R'|jN~;ט jlCQtLz$qVRLN6)z!1(H[XqΒF&CӍCN3{h-h}}9UZ֘kwu;10() WfXp2iA-f~pHmk!+I~-~<p{S²D VPJA CE0E=OUUyׂv\bx2?wu4zHS?q%4;= ^DƔ54'<=%2p x~kZ*. gc$8M#qb8ޚCدZ5G o BH9a-ST<#޼Ƕnwz&+4sz9.$d}L~田 el,ӛE$CEg- 04Yw<UNǓm$И%'1Ux}!cRijIL[})e/gyaĈ۷4%,|AWF,$N~k(_5RNƹ;s\Vla<͈ұǛǧ'DI12:PLw{;U܇T ^jHpH\ 0BhT2wwb4X \ 48Նpw'k4@U8_(3|}ZgzׯG>{8tY/- =̚T qCnzeԦڌKZE z1]ZKk1Yy4N3#Y@1y TM" <'L kͨcKJ*jA˾2'ĜF^ńt̬q+eଣ)Vl l5HJdRe*0SS #ӻ4[?| YTP_ ÷EZ#$r8O=!"@S2ȘNʥ lsqDܓ:(кB֠KfV,VHFj{eE;l1`Y6ٻBN# G/}L#oۊ puP+J)xt`}1F ÀqqoQ;.K&+DC*U1'dmĭ3FF VFg.fx亜,σem&$-1Au8jK~]RֵW\[6cAUB.ʇ5CM|9)jۘ zV+G"yBiEL2mzUcI˲`]NQBiijzz}\S׼5T) )&$_hiF1VyuCpPٔޝ^etMC Y[/-W"DoU~_[c)!ECVŠ` Vy(]\x'⾵V%b"wbr>!%m@-DmroNR4Aq\G3 i7A޼\)&L\\2º7#㹀qx|Rok#OYٟ8:(D!f-dr}HaQJ0IL:?_+c'x1[k1N3te. wơwM8vu'hk5?'Ƕ'Xmx͗>MfZt_(h˽r¶7EEMuғ_OI~^z/ / ?c&y"@G_iײg5>y/vnD뿻yl\tK|!S/$#}c>/wTOtxO? r+ºr>9՗ZM# NGLܓJE gE[ 5qZKg,D9vim ? r$ I)&˂i"<DZߴWI ~üIe0:[{!U"H8MɂqO1&^b7+@bkakr07M]H!["T7S: Z9e-T)9O^ :[8$n$CCѦhp"F>hEF imzOfYXO!EqS@XmgǶMfK(钖e;'|jP)8O9ggxOA!ę?4^_|e]ys9e!VgI ]HKY !c\hIJ~sV4yZEĒia,<1tppމca٠dXb¶wX񁽛4a͂, JTEm܃X`]-MtT\HSD)ҥlF<a꤆67rAEUIYH}͌ 6A*epwC ߾8baŔ> e_|s7y?0eFJr@Mٱ%iL)"`!lײ6s0!%Y3M={,ۆhd9ZSy;td_3K@hBhh"X%8)j1雎G}3(U$֕Y"TkME4R9=U6Zx߬t^"Bj(pQ"eR':XܠUFEƶXׅef{PPR$٠dV-V4gO'A+b 'Rn+naWwJ{XdCr5 e iTu!W d\^.xxx~;, wk, |oԷy 1%9Z֍﫠յT^lq4Q%(0HO wh8Z񄇇ĖX#c`=J)'LDOݘ~'nr=Ci{qڷn$0#rNXUsLOrZhj{ )D4YV^Do翟,V?K7^8~ןb $zW3B_rDϭgS(EV)@Ղ|?`].1`{((K6UwZىEX9`9%тEL'%LUI6!Z-C3$ľMmA1!ɡ6Ӟ@H\s5$x.L HEꖸ#bZ.1fGTwwF:6E Z# }n:Z,F4gq93庭޹/~뜣P016 9ysߓV )jUIORhZy lrPH3S+J)(9w.N [ ]+J OBYH)R,k. R8z7Ja0: 牾~|:v|0 <$Y&*{Jzî)JMӈaEh# [ OݻwX|[, bNo.ӼHg"emeźC ~ <=="l'6h!w3rJ8>q<AzK)8OU&D{:jоW _*8=N6&i_ _}n9uĸh+UiUE|VZcCL J~ J\YA !ƄyS4O)vJh%%b9X)mS@ż#vn6o8/6 8߾fmC{HE)YkBڰ fʔ$"&М Th}ytrKkZo;].)c1O3*u㱡i"tEF}"5ZG sh<\qjAk@[0@Cm=BV0~RUFYZ a#N#rCU6Ps#f鱖^z3%хRzhvƲr辿9ᒟq#޴J]|U=eGy٨VhQ3ZӸ<ϥ6zdF]"=(/: ÈA-nj rP:ca ୂ14 Ĝ ZUX]"צqrBX[V5d?Z'J=eż 萱<@ ۺ rW¶b +`hg5au,($fIJ7z3~q |K/ svR_PAa:fKi~۲[ UIʱoſa'_nXp8#nxzi~/`a4 y@ h ho i5M#3rwRQVp:9w`n5 Ɨ^T~ Khm F-` X-+JER9WdDꃟO} [sZUzI=c݈yt}n= B{"kM /~~^W#Zs_uΗ߰Z^8?p/qcLs^S?Y%Jtz 6: \SA';?| ?T}}q߿֡s=kuGd7 ]o6/wu^k?O TXw]:}1" YD윯sZ)hYֻja~є؅6k2 I$FN [,Þ"xɸ#/eq QbJ+EZ"-l cN\4Mg!{R):oFPP66-J 85LP{߻YSw8L8Iz9;gq{̡fwõU1FZO&n^*I^p.JjfOdrJמ7D=;r1W9K:hsB-?X隣ִJrm< o#e퉲SLY2Yү7-׺ZZ}|[G\ٺ2( mhk?m R 8.u~Ԧ谭A[vb>R~jB:h]&ڜ$BXl3^RRm O)JBqX 8tŷ2U{8M6FI;eHP@[y~9 -͛rKȮZⲉuA5aa> I@""1lNEXg˂TVq6?Ho)tW1IWi-4d |֧9gJ/ ,^v3SXq,a=a^ƌw4O֭KZ|4û UMD%4L61Bp4a #iy<DŽw!S a v3sVjnK]L{AW1E3aĻmA|) LȔy~w(ȴm R^l5 JHLܲa J dk=L' RW;-ض3uEEL)Jjb0;}inEBUbAsLd5*qbl}ޏchF-Nh3qr3 Rn׌qd?lnf$` n4WqJ AdEu^[$u+Zi1܇Ym THXW&~>穴JjaQtN~kb1r`xn+X/[N|L U1e.T7U \3CRVJ꜈Z, ISh M$~o!Qk; ӉIwP+(~I}qdZ{`<3T@8d,a1Z#4bYWh13*Gjt|Q*X/))Ij'Ӱ7a (W㞨w I۶g/wj46ɵwNU~ArRCa,R jh0MQj`m˜kZT9F(9o%Lj i9b("~վ3"EPFC'0^󁭤ɓT) XeǽF)˲k$]d9PހZeJJ0 BVZcDH)JXCB@%FcFZ(T+o& qV0։q^% jQ4MpÀ2RxvuE"iռS>{'Dtbҙhx@=h$f^Ӕض ͵0VهIRƁhGIL!$w;Gs6ӌHGp {_;up7oi0p6X.r 〒뵾G̸KJ5޶l.kdXHɈ3u{/hWÐoM3Y14:VE |V<=X'롖\)VpkM/tϓ*$ O;oﵯ~V߇}?Vgڵ:p_c~'>^8뻿SMW8d*~T__{>||}?קuPPT L6_={@OZ.֟P[M//X>J5E_ `q5n}GURJm҈91SFcM, ¶aē[Ѭ2oÆށB&vAr6\wFIMg%m4Rxbk]{_g3R$\` 7oþSQх֝B"~1R+ KcDfuDWE~󈓴׷Isp>p(Ȯ'kfA>%&ݬsd†SQ2ʰIGݑJZeZdeqR`o1{Uz>b mZ;''2w0]VIrbll[&!&tS('V [ȓt[!ণ95\JU9uس<m؝o 2q[j#8p{'C2Lzr&2zM a# DZkP2VnІq5t];r!xl:Ԓ.rY[=m 6ѺqEmuN CArcR1BYwvsڏÔ"ww*h&)F "m{IJNғsHnʌaOxY61lĸqo`]'%[3(JAЖT çe#ʼ,YLuxJwwCtGoiYCĞؔi1SGZmLNғ$Dm` ij ~n+޾}E|ԥ1hyfKgzwLyfUu?N=\t-3RaI6G.@$ U@G9v~U0{3v!8Gt6!zϏ\&-۹pﺆv΢}[k$p0Sj~`<͘E𜪥x J+LKqXQ7V$<3 J#!,RSqV7s)AEh⼿uO独3WA=$4#BsRMv)]wJPbju#QRz''\F҂l#/Ydk#J\PSS A&vrke{'"#hu/ykbܶM f=ögt!s\# V(I\L^5ҳ+ <$t3Ѵ+u9eҪD؟&Hɡj\1q]۾IuVY p8`oT: R;p5"X=Xcp.PJ710-3y%͡Fc* uH2CAi=ju {4:v)Z3uvJ`suP998Yh[צA$1U#J=;l&#Ӻm ~(Py+9CZI-I6b0G[u hD!`b-V7vv)'@K7kZp!$i2y5e}yN箜yILyYe {J #n;#4bܱI1`J^1>08 __s!t{ZkTb<`*켎+y]ژhưpwIٛVw18?w}cw<?'N֣:0:OwL q頄r[Wnݻpbq8^wܿ7|'R T= dD~&4(Ь:*gttB*<Ju)%(jfiP5|=Bjz7o 1HRD!*w0V#{ A#٧ u%}8"cyɇ% !i 0Z-9k5/^++BVnkJNMѲB-F8I1(1;u-] ڰ1sOYS5)ZEyN%bݷf᪊Ea6}NZ]ٶWѬ<|sp'd}fXc"^-t,O4R4p8a yߦ- ՄR&5B- 04L]sże2 զ չw9|V ÀxnN\9j1].pT BREVVa R\ߣȾ:Œ$M(9aC=ƾG ()jW!I )Ƕ֦̯IbF*C5h^}zhmm/̥`7ܝ@TWCcgw3\Q XQ  B4JtJθXN=`]V\oyE= /kFd&z1PϹ $QZ+uS|mwֳߺsʬ`\rAwwc`w}C?ev=i:e%7or&sRіboJwwbR&a61twPyxF+eU9۶"uSX0˲G _rj1̑U[Vf}~~fϗ^Ä&o{_>_qp۫,^| ˿Χ|3Kux3 E}>~/MxI܋/@ͯ?VaStxbe Ƃ&w 8j??<]dm´BǞFL1nXE2u^NVJs9I>LvvOVVL s¾O'h7."b%Sd2@ne#s) !tm".8{MR`WD :It'vQŔE=]Z7|ﬤmSJD[c)4Cu]q:E;~h fUP#m]ɐPzηCYRNϐVPdR5M$*hU)ܒu=ݶ|}*zX¯FKgnZ`Ⰷ&H2!mڡL 2 N#s^#] P Bxk ֒p%AOm]}<κ-1# mLrJԋ2N90p:c,E0bG<=> x/JI-lh2baH dtn֤-YU`!Oynip'iRО8`Η3Кbcr1@)٭[8@[wS9Lݳ6<ܻq_8Z&eYRM2|$J2,5:6եTe6H?T̀]Ğkm\Mz'k{q"F6brW> KKw żeaR5ef ;˲:{fbmE`F4Q`QϲnTH*9͜KD5NÅDaEQ F¤3 Dǽ҄JB4f}nRJΊ˶0\v^dn-zsi{i(${zmۆ86*.,|vsO%sX5ԭb<3, T1).%匰1g4,tS5z}׽3~@5irIٟCt;v+aM˙0mؗ!]<(ۆcEɹHjuݍ2*YtA%*0`G\QNe!rOdmogybd Jk\i4, 3VwP .h5~'dmEWy#{LuI)ⅳ$kgu6Eiܽ~k١@71uHNLx_, >uUAE0H4Pʼng׷Cͷwb4ǔz/ҏS[R@pԳz}>,3;:c_/_|UÅ"rJt81ydI`Կ_pw:4Ta1х-Ghlu#眈$ Y-|a'x(Zg7n2#q:;O \dxGO/xLe,ow : JrGt"޶s]dcQ|=``S(X֥p<=fÃwpݵbLhp:+1J \}1FNc)ҏuJorx7※v6"E )&1fdN#۶t0(BZ11oD[lv;5kn`L brXfpA쩳p  B"ꊸ=k~5tƺnL) C#o­֭ ag ZGn)Μ?yHң[4LӌR}> asi /igQ{iZ&wDVL۾HcG/*(Zu5 =Z)(xz: cK)˄ate^:9$kp5`܄;)$|y p8 -7[r~+*8㜓$ѺڽD,E8B! M}Jc|,J:3h]KczYǿk/_;,q[%rNr("7_yƃ`^(PWo^yq:, /K0](((/x5RNƞbe6˺ШZ4,ƈe) e]\+ yYˊְ䀘Y1bm)&!W*"\҃"}4ŞxIG1))14͘E(LۆL ; ( "`k}p:DާsFҾPM IR#Yϳpa]g!| t/C@wxz:cY;3$DIpdܫW}aFD<R:#s:N4{,,bi@0\Rƺ,I7$n؟;Qs0Ƶj޺fj$ms>9@r♲hZS!qLPJY0C{VxT8zTEJ7=Dț&P3G1H19!ɤmXD$J_ZM{1@Kro'tFܣTKDxOJx80*LxrUa'fۺ5}븭I҈ ݌ZE^tAά+J9#@3!B0U9Ν3!5ز=_hm%^@ jƴ,Zx8J*Ҳ@B.Bq{H4VL}"<Ϙ&]Yn&퇔VBJ%nxu{F'W{A +JfC.w+Ki֏) ϥ$$bܷ|yBǣTsѰbĜ H3QkTZKRU. kz1\kD7 #16r?{<^Xgo ?A=Oo?MG$} y#9N/KO9Jnǿ[ϯ{՛䷈_Fk\C+ eDBJM$մݴPQP%0`&L+xv( xIΩIC*:a<Q$cgf<ٝ80ʀLc[ַF+ z֢ vl~_ɠ}X%0 6v6nJnHvtCm޳2.(hz*`j)e jYy輜'((Ly^8<E|7bDM +\);E}'b#눖oWa~`Ru\:ڥA/w!U s!\1-͒ mڳqV۷x[8+3yuaZLyFp80fĔ1NǓ5 eñGzi껞iy!%O#M1woqw4!ׯ0"rsoq>ٷ[w;"L7uem]aiu}uYvX[ eB4y$z͛7H)agLxDZx8y`|<0|#F%5yWj{?6Eg{Aaq$q*hi"jb>yjT~ qζ=SL.PScNM ZҶ"IE9ɠXMbUiϜf׾6]w]ac_2/Fj"*dj|a0ƺ.M|bmK31YR c.8Z u\ @zI/ ˺$ _G9g^vIgvRQC4Ovq>v&i2م8m=gOk侬{alVPgTrs`][_9HL˥ o=BRZӠ"w%H}&L甛{֣ Tr4iX(I(It Hro)e@PS^F匰<H1IȠAk`:_3(2,=2|~ڨDr#&s3:tog (Уx 6!n\e|aa%ehlx/+c- (@ ,$TZX$&TV<<>|zW8_4=k.3x ;,3p@Q;kRҠp>T~Y,+ӔkCzȲ,b CJo_W%R4mE%mz!8+UNb-@ " k׉ uTԵCՈ|נjg]oKZWd{Q{7u7 hyq7O<oǞOzՋ_:ot=+(>5D OU/Agx)'}͗~?O~ CCun{gu. k牾rUϻ3~TK~o߇,Lt?KPח:ԟďYEO7WfH2QJ8 #r&L%ժᝯ] "xo BuDa]gALՎ"8 {kﰒI']۾#a/ jϟA_e02[N#yn,D%nr03~wy`fLy}Dۭ$lK8G,[03! a[t'yfb- e7]fXg0U$14u0 k*/JڲK'68vФB!|1uOj׊٭* =kR.t¶ucCX+ܰq6&7ڡlZI]IW ;t&fs@J_)SC+)^J6bIC"dQ϶n65.\˺BA;tA=c5dWp@=rr6+qt$"T#JrWvǂK6cL g G7VCKB- IDATN5L&ꩶ@ :ѼהQDQ~+tR ŮO#Ⱥ}[%9~)\12|g^$8Xк&z!}FP{ 뺷ccmnmMa4Sŀ1? &ړZ*Lt0t-T+ɡJZȹ͘bjBu.`9cz;M">͛79oE'eY8i|$p-hÀ)ۯm8G+l0^QuTq;vkBl7 1x yݫ{hm$;3B 8H1ݻw(ξtxWIeE[#_*\[mom03JO'( ʨSDs7 Q3ctoLRRu G+sJESƵ *Z'{v猐(UmJ c?[yqK{|VuP0/KKJv"唄tu5T8)1M$!a3xKzX-&H,t<Ѡ"ut0+<=fVQJ*dG1"IY*~uې2#$"ܬ{^1=ps1J̯=]|tA$@yZI=CL(j̙!MUã W] {\ (f&kZ-= Ⱥm]p\!o0c}"N!-zj9KB`VJ2 ^!1SӰZгm*HQyfոB軾Zz`nh]ٚOSgV$V|?NGkmglǸv52m[QIFUBzvg,ɓlIzfkmP2yVږ(vAutQ}]˥61ݯMYl.1iMnaH[Y5.,ך;їLLWf*dY14T+!DIEEr޷zJsFCS0gmu:TY^y^d;!&tw0_`MۆۛD[#]γ΁L)*}e-JLz^Е5E= iFE+Rt:y  &HϹ*^"kՐjVJA1Iom@ ʰV½k:l,7# 9}\Θg ݻw¡4$<QxB x;ӂnqcaMm>re]` _cYVĢy'c'IAD@w0`'"B0bJXU JX7sJ*ܓHZxd-i9u-j$SD%A)i[37O'G#$HT1ňiETul!n_gG'0/sK`cZY1滮!ڵ|=i@Cp8B)`^&:Omnmf⺞`,kI֕ϱYEJ iS&&sӀYt@rD+FvuOU1ZP5rlF;d4F}T;B{J0D' u]{u$-tK6Z%K»~yދ5K'۾!܌`%a= XO$ih%Ij4[y?T-f/ZQkB4FKhj01Z.&Nu9a["Ȏ"\$nt;IX5J^;vCqoHmo%e9?ip<I{~xk1tN`W ϸPr{8j8XGd(ፏ'?Ձÿ\ǟ3 _P>K9-?LdG2ǜs.Jֈ[Puڨ `kSZ8ҵ2Ia--[T ݾ5%H2͂9t84Ŷn"VLH=a0ELDWx=i"`Z EWUQ乴ûALEimùqdaD^wYDhK*TT5NDuXO)4\kh(nH7ou%hʠ@KfK\JH,Ŭj 88 L1zIJݴZ(%rZizgƟ^`j!0V;!+zn[G9g +qk3δF2Yea虮s*msߙ赔9)A/]M2Dlp86aew|1cg֫_M27D| QiZuTsz &LVВR9c$U`1r`f9- k @0B! P&^aMZsYB ٌ&ǧyFNӴD+&*Mȯ[bV!:Ν*'Ts{I(e`jw)3iT5k[=uؓYF+bύ k'y8LņFI)!-^ߋG"N5kBIaZPzմ R LyS|mE^3欸7 a&IsoSWoވp{y($;#uw}}sy$&n`nxۆ#`߱vOyk1/3RJңpBÌL%K4]Yik-cW{Yk`-־ok(ri-+|kQ8?a ;ݰtVBb2hw{Ys RHL[ ga4-ط=N)BI)&Nw',B!:lRU`pR ض~X 5e<>8ΉLdtHI !AjLN(Ϝ-e D&^9;at>W)Nv2H!K_1ܞEg;s 5$BujԢIöoѴϝw0Kn(}_1+B PX֕=\׵R}0,UH11Y @折nd Vg1n`T3+on E@ld~nbi á}ՄA,6"sOxڄRg)F@m^D6N{<ńuYu `%I|hfL݃}H5NRtm[Z#yIʹp<`L:&(.j+9Fa\5\JqEz_Jb{FwL']|VLƵr9VɈ Đ`uT$5ZuOSA }n@a`4{*1Ϻܴ7"B=-TC@;|M+ MgRU;?k}%Kmxmۤ;#R F:Ъv/a5׳jU^ZyYq{ȴ~8O8Zzd@z>;;$ 밇tuT8FžGm`5Gciz65wX1%t}"|fr_r9KeU0LP E0=aaf|7p=XtU lp:ĹoR"! $zބr +.rX o~xB8as;(3q\߳T hJKZ+%{+W"HC5.Y%e/e,kдZiګ\Ye J= dw9^]bLHmlC|,{#- o{:n? o<?$gf3}H:Ƨu˯?Kx}5f>u|}c?P_n.~{7 ou!UwR__ƍnf>H"vyOx~OI3^Ob:*?`DcܑG76kD$}?9v "D 9^RV*ط a9{"} 1meZO $xM% bj`)a&i$d;_<#8A&Q^ҎFrp&,u^`0y%L i!J{鹶;ג5\ia6 *Iq]ApEܺinuxǶnW Aa[g[-S-JV`4wSʒ[An̘ t4B UP{39%lu8"6#Q@tRHouJ8'VZB}APeM*t6C " +.$@*1)F9p|ޙ|]❷@LkTI$aH Hb1F!`YLp_ZNDXmpY,[YkiNkcaDz);OAlC$v+ k+ɅJ`cAᶙV 淍گO*WG}ZpZ]L U&Zk}[;F&䋤KL1=.;ݮmk $wokV8T޶@̶\L,&=@"!}k=HqY,?Ir3J8gڞC&KJ!P8+9C0{[)LC!H^LRg#=+ɩa@K)u.Jhhay&1>%I0YgcRy 4%á[$(1eʤyJ)`JM)_ Zt։}Yo;mR zb[X8Lww8=ݿH 8yYZ¾_I&!r>Z׌)$*5)(C9|ݻ&\Ę[3!5 j{<w' )c]_}YܠiY0daUi3?QH3ejV/;h"(_bmѠ.Ud/h755Oވ7q\I;12j'TJ 1Yr8d)Sr]'Y#r3˞}Ud21ָc6,낯^D:C׏ؖ:T g+}\*V,t3ki׍RZYӔ$hdShCP#lNY$CZO6LhVM5=rݗBcir)j bk]:?(,ƭx ΅=MbCO %5&tJ;LǜoF0Z\TYztx۾Cel]f(uq agZTGpecB#PQDLP$3p/úLg;/@; A fhv əP+ſo4"FĻRJM9Sۋ$!Ti5ZkL|^h(LR} H΢2bS{=&en ᪓ ꦊVjv٣f14b㛹:mlXiU sVU Iץp- л09tKB9 EP:!4I5C0Z@0@䈜v1) whx81r2VeBߟp:B+v(%Ex:rnZ[9| IDAT ItJ+ˌw8;Q-b.)c7lҌPF"Jj'=8mN3gEi;mCX|[<}2_5"W#})$*}׉TX5]Ó!Z0eew1PЍq<q<QrXۅmYwo/ ?G|ˑ$鑧G:Ӕy(9:|%e]vU ?3:jjIA#p77T_n^U4.|!*Et5!'F_ k8*UDĹk9*y k9 4Z*4rX e1JA\{:Fv0A)=k-Gi)E]^>T .qUtCT/3<v?3]^ܯ_j-I}}egΪ<k+>߫^>5}Rk'W^>ZWע'j:rO|Uv |,W/>{?gڢ~WNx3?q{w0瓤깃XHxWXK>WO-Nx o<>O7S,`~<@'ʯ_%?ˏE@gyQtz_xR7Q0H|n on8lu57|1Kz#Lĝ M\|@d]m044Y%}f$I\t'׮ uÀ B-P:9[t]t ܂*y0#5nnn9p"PӴ^MXͺ{MN0kJ ";ƌc B^$@ZKkj`[WdI~#V[;a)8LA!+ʑ}~`Wg)D,}C ʹEzy $dp^4"ϫ"kOy.c m9"0v'V1^i`@]D()hߎe37۶\Mer&/neTƤ=O1ʠ!Qh=`QRaw\SZpsؤZIcsF,c8k5䵈q@9Jj6y@v"hsMq=(¹a]c΢;,V8HB+1A«\i!%#7UNAbhZ]Dk#2{{m-it0 #b&a *V\C)V/tKǑ6IQ8Y.#ZRɪbJXr-Д(ۍ ^q o[80L]όkƦ y Bp< cL"ffI.qX~T-E bZ(6tC;ˍRnnu.3Ͱ1Y- 1\RYNگ6zUMXs T\U{d IE%ؕ,13Ӎykݷi?N:sLbic2\7wo;#^}~6.aܴ(iY]ףF ݸl+uW7 L ۺHW'Ѹ}MĈnVMp<`d,V _Q0npl7”A I=JI3JhusR"-0Y; F+ wbNjfCVhc3O!IײsNТ!\qŀu:ߒ{"J%1DDI(B6ZObzt">Dma1X(H3$@Œ-f4eY8I"wK/zo(~2?.~?O藓غ H ρ/צH>ԏL+dˡ>=!DTYWᅄ8&#@}p0VE7Z|i wR]z=o+?y?>XuA3y[+t{-E](LZ]H#$i\jo.QֵriCLү {b$&yԛ2 |^Qmt+#eA 8J戮밭DV[ (dqھzep4cF AF]m]q77xsmYT#Oȵ[RY1.sd `@K$b솗=hňCSi%g!\)&Z.)XCv.J*c-J*C8KzJR]dMNi~J 'iKb,)*~h1]bg9ZjFRZ5kD^ RdR.=\BUa hxݩ R,| Y@y0KKe><ܣ@(8OSIDV)uOJ; +mOKO;^Z(MXw륮Aas?6QkVH=?gx훷%a&\kTCɥ^I?FD%]JÊ\F4c[7 mp{r>Z7W+tz]#Ͳ꾩wyJUQ h=V/5E{{?g^_~WkO}%]^B?5z9[^|NWJ(?(S 5WO. ?պ:vױ:_낒564a=~ bXׅ7G2DV.ܜ ~: [j RHMX,9=+p2di?h&(m=uD}}DŽg'Iw]#SN}dt}ϾGkbJX՗_Zk|;A3WF  }Dh'x.v&t޵tR*@ܯ+uabTz3S-Z0a%M~xJ7ֺ݄kFg[69A SN@lLË󚉄ua(Q_גR2խӋ[f(M+77nC)Q|źs raOw È/Z<<̉!F "х <U"x Ū}wZ)Fc^dkm{hm<|'fV OS,B)%,BRD=rn~4KtjJm VGU0ͳ$k%Y{Vsk,3T $LK[Z JQT={'"JacsU ΐDd?SGj]Հ2sQ́0:( k=aoBF 4! 쫯 E;6Y3MZ}`#-0BYm-t8[0{(cҤ_/1x߱^'&=:OjĈԗ U%' d-K3x߿pk4;d}J)͛;x簮?sW[iMz ^)',bώ3j%\;# ,"x1SfnO#R:V0_pp_ߜg&V@{}ku׮RnH1}g5sMֵ5Y=yEm6TFSk.HEMwʜ^Ԓኩp1)%nf@4~~]d36i^LW/>~k_H~2/$U >7<9~s򗓹3 <{\O2ܟx/'G|/>WDO???X}\~&}: )<<ԧtԂ'^Ͽ[O4 XO. 92W7.?%e WR9k?<8M:N7{a F096ӎWŅ Pc v} ?jc0OA,61K/۶mЂa pb t Y:8uf50m,b k)k8T^n/x璋 I;H믿Xﱬ+o&UWJ3OR`x||ĺ.M$wq:mv(tP P RcA`^m0-G9&r[WͰ>qv껾9Bt>cܽ7C߳8%֦@aa<}?J'U?Oc&xv04w{R3 f˲` 6C =P2%d)a[Wt}IC Z D!$ݘ5wwt7\dRDA1N(wE?8C3䔱/5(9!t|<< o=^đeb-ߠ\I/j*VT[~9"ǭK5 Rb,;i2XAʵ/j.Lk_m>"ԞUj0HFZZ)aaՒRDHPJO3pyZϵ^B5TjM4L)ERrݢt{iGRKjLEApJ*4.TSexd{Ky4&m !Tm5 Lӹ ;DS5d1%qNI7Np~0k+ ܔymDTX$imFHNM_N4䶅'}%VԿJw8/]Z ס_G»| ^_ Zg :?N̅Ts'K6^Gûx~什%z?*}}nS>0K4O/ZPa~;]-{,yYKNea[, 3^-Z K͒v2q,u]Rf$DIn?Biãiw8ϭp[?ys [Lgq o!ƀqk>(I Kb]&:mønb)77mpWECckO y^PܴiN`:m+Mҷ8vw5(k8}>OH)s5cD :g/p kݏ9(/KGWr!J]$-.b^njP"2TDToۻ;q@%("kIE:+d42{c$2ZҦ&wq!@iVg2,,׹5kZ$ȄevYszȡ0 ͠(!\huxŸDc,5MLۊ<?HpgX!baO6E6X{]iTysF1D=-k4?\U[c$B&)PȮdvȫ 1 B8qa)ET 11U )4epW"ن(&_XO#x@7=r)x= $]ݺ788<>b%H4Q ڢ&ki<臾5*݈eD;'QE;֮8:,ۂR$}]Wۆo@D쏻<)fL)faǶlq$C~R2 %ϳZk0pa~z-~Zk-1ݏu8H%y||AQ5)S:J( |˩e_TmBW5VV?lR@g#IkC"(Sh3kJ gRb1(_2šוЯo~zh 。 VJR)s`Zn ܋ /(71A_KK4o5LK.8eA%)MÿR*! FkePU Z/&o':nYA U%c`MHca/pxY0o+7M su_/]VM̕P# ]]91D-}!Oj-6b'=e m 3Z4fޭrgOZOQ\:SQŏ?W"|]s>?$zs 3zUO+xn/j>k}Pw0?ϧ?Yw|]-OZ,״ s,>;_>V?V>zt,%d~}[bc*?5V;ئy_PRD ](bwV5" VZU%ܶf(A$b$*^&\J|` =c^%t8JbHX`sg2_z4ii61DXo %((`>@nXIǶ{ #&;ONz:80sCr70e kP ZCU/ b2T#BקR27yF;MPsoClc:Ox ˹褋rnqC򂵮&PͰS]w t='@$wU+7D;3)kEdEj!D^obfEn+V!.b᫯nb37jÔ#P", BcJ#[**XDM4ѝO&QuMg V!˵_IEH1Y=|s]۳Z#P۶4Ԭw|wNg!J]J2++&:晒AҬY ;+)VRE*.3\?ӸUPU%mRR$۳nkYv@α|[3ov*"fsۍ1^h5hZ`%AbbT TN5pnm &jB=y:Ӡt0SX >L" In["d1M!?DUT|D'}nɞ!W |O3n7l m'biYjV1Dӈw#NgRǼ놛iwa: aY 䘐bBA* )+@@KBIᦣ s`hMb,(\ЧkO^FsݿpW?WYCc.?SR︽O'N뎊'nm]?WP/vl|G~c/ן8^V|zF|-ZD#"$' Bzme dn<ye%} I~(IKBN5R8S#5oC?0X0믾<E yc6l*}LƄqBv}HvR9XVD] C)P"Ma朰A:} 3u]lMqj+6`„Q^~CaCnANZ+PBOT)>5|{cBhd!"=R t՝o9iaH걆"2PэL*I&NqE;akI|knTvzNY_XiL좖Nch1SS)-|.ր~&<%&!&r\1Lbx;%x$ے|,ykR^w)FSP3/\<#Jp3h1b6]L ^^6WRcy^nVEM+Sr!b^5j)?5mEʥp=aƉB7߫z?Z)48׆HÊa+U },z)tx&vDj*TMlk@a@/k%m[, "UXUkGWbDKI E~x@Y`{ h7l@A9RuYOnn?vkw-['ڰ"exT~tR z ˲^@S#8v;&ٓ}j-co4yjC;L޽{-\'hH4e)^bZ7o{ivJ7! ݾ]ۖehX,+ NzkO-=uҮۊy50MgT0jqNʠ:p1e96bf u^\vV0۶uC֗j"lԡ^c"ϭŌ`7YZV M9%{z_B@iB̋$nums53Zk:s%!J1ADZ}Y7U ̽5'mMF} kW6@4=H6wRkR,TARi"a^-v۶!'鎆t~{(_'l)jfj$v9,6Ad^'rIO ⦦Zcj{;/fs޹։]KUsyij]q'EkIr_9~J= 1`[(wf &INӒEIJ)ro"Jwr5-${Ds{YwhsWA=%1j :Gy:2ihuct&o49?x #k"-Bkz (9 \/w#vK/sw6_]u:c\[o1a Ek  IDATĵiv y Y4Լx "h2qC@VLYLt(ۑ:7p튑>L*0RJp:Y-\p' Hڗў_V >WJ? ^krDuz?1i7޿?+B}'{jqߨ-X8?N驓<:x9#~!bܫOo/-YăewӀ?<(`Ӓd˺2M` 3\C'IZÀ[v3M%e q4CF[|:@VJiEI q$V Jck-V07uJHґL27a](ݶ&,zTrL+0[ؚ^ rj"s1eeZK,E& eتKMVvf\%@K YIk'"ii#=ÙF]9 uc$1 v{gkwⳭ ߈6-t#=UܨK_ũqh(UDܶ&6FJ9S,B ;Wl[50|p>O@Q$]E3Ѝn mMHϓ•ӈP1 h$т4SIRϒ-ݴm)GM:y߉׃bFlB_k(8dvI-y^0/S2o՜P >U<[~y"խwA/IJq 1$iŌWDIzs(Sض.[&$%EM,H:)-)8eo(\(;q{$E3q`kY *0ВR"K亡Їq x.N^nT-\ѕ( Wxz^3)OsøQ`W7J+ Ruv9KwnAz6<݉(HJѲ:M5"gp8`܍Nt<|fj403NG:ki]VLӹ"uAk9tcV #5nq7b Z~cGi&tkͮR9VQP {TW\/vNRSnT=a3P#%G9gPX"uź6p:x8. A!׍km4rQ n+~(&#ekaI%$ĩ!>%^gI}]0 #q = '{RSvB1:Y[ )@6xEoiPDNY[L !$[nER+ZR])z=')-!.'.ĝ:bBARټҨüKovC'6| M"ymM(J:BpGg14Pd?[jI<( JL>-#ﷂZS.붢d5EɽAKu[I !V”eLug%F떤bR"leAZO1ʾQR4- B p")(v Mc YCnNjN"&2O͙)mFla@ߟSm:)Lc:f]%`(vnC-i:cN8<>|>c&V #BX{qy^  ȅ{bh yn+~8z J|>FF5mFbHR [̈RcŸڐn݂T$ '̧ /_}[ )Zw8 l. av&\<RYA3jҭ5Ca $h(!ҸAZz?uh]]g+}\jGfmcr~|3OxУLhGߏ:I^~wgV?4ۡwɏNxϗv8 ?HxÏO:w8|[=C"xta_ǕeG:ϙ#{¶>VZ:²2PEd EF&DlX9臾-4I>55[\Z}7,AN޼}a$|>ceYCh$WJ)xIԁًM⮜$ LSlGR M\S@!~OLaCCIy؎FTL+_>ig-949b꺮iH95<!8(2I@J-] MnRJқdl!-[ .A!`6I=8A$iD޶k vjhM@#icLƄ0=᪮H]}P.]dO=1ugMEy[B_5lf%3Դ?N"R. H6L1bt:d[%@&]\B X!+un7{IsA,7<-ܺ`*,״ACKO17 /_}iB!v+Y)JJaD)<Ǽs~{"*ۆ=ٵg]5H6"vkMī\W6妲v~IdZ'4F63SBU6A߶-?~/|UӘŰ,TuC;~P?'}˻b+Yjx2zny[צi74E1|J "}I(b5ĵ&Rn^6Pʹ];J_kDF99Ee*TEBUOe_} t2nk}G!ICeC[-}֦L`ZVbhq< t~B7t81# F<ݻ7ؖ 9aCJ7OoGHy16ju1-mCJu!md-)#k,bH !,;y0D̿6VD#T 난"iº.4qiut Ox3iwGRiRnENx~~gȊm{Țွ4,{۶aY9tp-:h ~V܀P +:Z%igq ߂w8@;߾_pc#IzIYq-Bϊ^]ɛWȹ̊ ѯ5ڎ Rɒ(O-~3B($nBv%)Rȵ3XtT\VVe'AQ3Տ?ү?_Q2_}ѫ b_u}RS#~}6ߏOƇ:Bێo*7mȹZba@Fkˌ"KOL[Y bv 8Ainx)4 %J0QL(Z8(YLo% EYI v=68ϰ>k8 f2o7 9=l A^3VRBbg,ƺjX 붊j߼\1$4bYyNFLgY"7'Mĭ ُLf^RsANfD4ƈb 93Rb Y&g`ZF?tvÉ /KC1 y~ mXV"PM%J8^n๽`m k5uQЊ7+(ԮR; +(C+R:C)tÀMH+Z+8phX#u$&qJ /8|pL?È9jsʰQ'_L9k{iY|WE3a@9gx!(I(Z`A۵{~/U궮ۆ~9~`0-3> kB\c7 PJ{!DHUbX >]Q|/JK[׷8gŸV˺ Kqp"] eRTiV{5=`FLU0#s{09*፿s#1cztKΆz[} ok{ƿ޿uϛ?W»`?r9(EOZu@|Uľ~x/;qU&7) T=Ȫv঻:ote`~0}JN+uZ+|}ן)"72`P_{" ?p5 [T{;_GPn,L.wr~RDDNȇ"|#U;LELJAU (XVDA,#)B)L,OmC#x:#D'=Y5X1vGkZ:$Iǔ$[ݑ㈇;qJ]Ӝ/LDbfI Y, Y(`֐a@F: Ƈ +Bϧn*foך $Ca8A\{e(g݆;W2Pfbt/d9D2˟\ör~٦%*]\}-nOq?JF[\.#Ɣo܎>1 }_\c4VΏ- E(^km3p̂-]4#Ք@F:!S!x\.SMWAN[m .(Rw1HIl4bnmǐb5mIQ0!$PkZkWm" &k)4Ma(-E0w(XmcD#`5Ufot X7Oۊkt\:u !Z-FIWEP5̫hGy!#U-?# DyIǐZWQ'3 IDATTќxfCy7._>GMD ip+V/k@` mBm])]X=ʢiBӲ?qYg]d BA 9 9nu2HҧضL0ahY_|٫-  2Pb *,ݧzg[b1PֈC@2=tm+ RR- ָ?)tz:hawoZ[طqqYAumAζb>b4ajzD=_5nqzr͛Ζĝk(6K|1ӼxdUʲbu4]I DR1McMSs-:m^ o?-Yh+L:g_|yFp1g(!qe]׊ihs2$4"gcĜC >hմI0ԕDTҏVSpF Hw4l0Cײ ]W L}?phy~ц iz?? B VRٌk';FEL. {MSe FmTb8YV)XkY)U(|xXIYuk+ܛaϩ1Z]MEIYʤ! U mڰk[ka~`jj1X`xIhC`|w<9᳇ JU V-|Z8^5M}?{րL_:u'% `)GheaCc!n4k2-39Fim5h?1zlB!]+1A 3 ;xb7HLgSL N%]:SrmZtMu]]D(fb.*&2+z2޵ XetM-{L\\4 u 9Xww9].RZ²n*%=@*?öm:JIX4b9d-k@0Y6vC/\9aGlۊin~r!FZuzےeV4% =N' ÀsQ3`.ӄl 'lx8aT=InӺRD߼_~e[vH$,bhr9GF߿t}IP14ĵqwuF7v6t>M}J feŲm0m׵vCE}UOOxw4Je]?i,~o)cY65 4NyNuBt+&-kEFL&PXIm1+ABRbVa\2;#&${+V_i%u}8K@Ilִѐx~LŜ؎b0K~d\_U^?qXJ7?3^uU>ϿBn^S>MQy{@ {u)4gi傺~>_>k߯>_i}Wz7꽺W~_sαO|k SfgtcGo8NvI%y>D#%VY1ɀTL9EhqYv;m+\#FVG{/P #IJñ e0Ftku9*;]MRNTM04 yq+ƞigb8I"S\۶ i[TK%$c%\ZP6L8!*TX#e9F\qxm4 q<X匮д-e®yѶi´LpT1?ƈܓ4y~gxchVZih >ֵZKEE(0@ݻw#~i+긘 7oԪqMx8Ms*6GR=<{н*Z9dU3PHA(vPVAe$pag ;2SxKID=w3/ (fs4!6$)K7 ƼpǀY M֖5VHXWi"6 ݽmӒ"&MR!cƼ^4/gCa= =Fm?bj6V_᜘cMb^4UJm,O5Ѭ$E:t-qo+(AZKXSh7Vc&L{&mp0ddͷʵ^oE@`{hEgju4HMkV&襘ZZkwy>چkS^wmOMB=wR}<&]+$QeF[o7aMVFH1Z:i@}kM4}𤩰V՞26R n[wa7<̲b!03т|&T 㸷Բn.sb0pF}7ۧBD),^smUBXzeAu44޼. b ' y54AjrݖJ(Auk!2 }&ɾu A>^%n4 1k'"(l_S{KJ̤0 &_0B'*4Mۈ=N ^YTD<!;yϘ.P G4h- Pqb1_ 5Xg!iqm0/3p$l6q:8 pYWGsӜmr9Jx8~׶20Xe:/ha4NA't (mhNӦy2}Zc r|\tzOdTSZN \QoR>_@ڜ_<-s?'f^S~q?Pf˿9Tu 64V;>TyC[#]/:n!u"8~eG7G:~ۓC7_5;q{'wt9+o{nV~C 1]׉!DiG]QI=ۺJR03I ^0PnLpPWsG`}, ILw\P>s0ZT+ȵK0JsLІ5eX,DB$i}TDcᜫ=)F\îuУnF PQl'&}y J b:bKZ"CVmdthB(bk9Ogk8I6.Irv-rX%ƺiiՑ$F#nkHjزR' fawwɐ5U|&{*!%r>Ѷʣ@k:XM@AkEta]bc,)(UDJA7ra,2X"-urH'BtWN\/r^A9됡``u\k {不C۲\1#J50i6m m!|g-EGfHZ(cq9p>Չg4T0nNQz2u=h"bJAN0΂HXoǭYڥ'ݤeT#AHAd0h٧xv]Z\1NĝߛR2rq<0A! " #NqVvY j|y\۽WJLc e+#ULYo; "oO4(2<Eܨ{@+n{_{^H(yk$?ipZSϠ\;J܉h+ώr{o˼ mӲU)};O+eDnq9,+}(!=:4hi1O$Wy_N|l(k1^z=3ҝ-4k>d pe8 C\bx8i۾v#ǑE{LčMzDYֹmbxBoZk,s -95uһT1 =]MoIej+RR>N7"ڵ]( KF7.DriċvJ4ADٟxvI^{4X0sвmV/uYaL}%)Kcrp 0T67þ{4M8# m=9iZ#.L\RMR:V:B3IK %`{U Z3ԊA9e[oBP8].Vh˺̳25)鑈@C;s>#S \ :bo˺CJfIX|RB /Z'$]kkuWj[dxbukWZmJ$oA&?_喟_ο_<_ERy{O~JTxѡ_L)o]gzBV_ןG}(xHx8S7~>so؁XOP5ǝa;3~AӶDZ$L>N@YE*ɩ\R89ps7b=Y1 ;9癈p)MeeۺִduLkS˼P8s;,+΂-@qgۉpR8VmjxZ];"$EI:%IuzIr(B@#TAۚ76 x^ \sRX`ݮXX>#h\S$97hIo( Hz'BN&Pֆu#\EH5Wt:5QJ+a.pav("S=G)1ALaň;K\ r,xa$MDd0F>2X,L^Dћ3Z+,"cLԷm 3j #@ԣ|Jk8Yqg4b`? B3@iSE< 4(' vևѶVKnۦ&ɍs5є[ ӂ)5'Y & ȀZK t޲סd1i#E"X{,U$0M I(%$B5z4%rRj,9jJLrgz r\_AB0 iZi+z/z ߊ+;-V :KkRΉ(uʰ(tSł)]4-Ąy<%!ŔcSlcL5ZС0:6®uu ^qՙ4Z2tRޓf! *@8RD!m䔱wDwL ڻ$ X1lCCŶƾҕ#ڲCwYV185\whʽHu^c y&ZkĜ7bH԰i3@a6d+$ާiDZA)VX?B8N$(,"eQIqYscL)"Xl rQÎłwa@48qHV3D+]Jfm]i_]\Ʋ*BY>hI1׍أlĠd,pɢw ҌVM,RM,¶7oTV@k v RI$RDpY扙רf6- k%uM-$zx(SEo܇KB3,VwkRbs5ga?p-+j wTpNO:k ZTMca=B3Ҳ_/[`eF){^M~smdoB&e^녢!WїNin52^ߠBױ׾$F$8-uCmy y]ҥ IFpBjb^!!9kw=Mb cYlxD,CaXPqSSRs~E([}6ZS}|>OOh*ٜ.g@lHJRDz8h @;}3uπuNhq% IDAT˹ǦiX|¿} .35w6Zf>;7ykA_bFD$}K45v;*D(k F㳇 4Ěy]u7Lӄ=48*ͪbj)"Pͤ9g ;V _(k֍}Ɩ%Cťqwk1/J 5$Xw48_xz~#u?{?ܳdA2X@ | 522;1`ubH\ARqg Yzq&Y|˕oAhI+|z{>SL ]~ W7}yfRUDkϭSL ~9U/h=>:>ގ۴`8p|x~|$2e Ca.UUMׇh,bפ${ Xv)Iq^ LA15n>\m<:L2ClNF[}8xD ;ڵU@ #mD(p<`h;ӌmٸnXMKaE8xLJdݮKs8>6OsMY=[t+9 rVӼ Tg"5꡵N:Ӌ0!u) *"[vZK|1%I3TF0 $Qmdv<8m8䷺y웦0KVLӈiv5a_:AD(qWR>˂ӚPn^uTq#j 9lqʡg, îڄL $k5Ql*rּ.}HUuXFe eP2uګ酆%`QCWwύAY$U-\18ek(vI1^f\ ]DmpA߷RbaƉk󚊦@>cq]=BPu_ $A XS$R!ky^|-%_Z ]> Z)C픘(S4l$uk݆MU+m㠜0,uW0约eJu-b6_M]׳w^"'\Pz %ΡcIwmjxb(FJI >J\_>2Mr$ylUc8^.{[>3RL<+)RPRX'XRd?/tmm[ILʩ&~1F˄5RCH1`H]ӊy9U۶9,HrZ0-9Y*qNtzF۶MͥVL Q揌~snkqpy pIB`MCS{S~Z lC.S)iG}m5i]ff1i){4e0)%N'\P@+ζy{<>>bIjZ (HmV Ӛe]qиbpHȠaciU ]WCirx'?3't]#XtIxUiӼoZ@BSOCP8;}rfTU0O#04x~|㛷8q\k|WhrZSc˺b]hZwYk\JEjn@FR{R'g$jʼ40s!uuI|-|}*t &M}3& ^:yAQWcOk~2XmLLݐ5_W#b~> `/_]`)7sQܜ`EW?I:_O>?$$}~_G^3.v0tGU)6;^`BN^t 日毺޻T'wKgsßф?'#?OQ95ԋ^rA|,~7RĻojJJ PC|m0v"N8#S42ɂ.2Hq]uL9>ȇ1KZHkV`JId&8f"5 28ωDH{iB׶hK_#n犐18i4^pix4/XE0]]F32q, h^DYSШ[1HϨӂLa*\1VUp"ńy^8d;sZ?qaa@=?m:,8LY"eƺm̋(^ia}usqZuw;v[ c-iM{1dI:8ĀWXd1Qk|t4ڎhmmʨ-$o=v-ysS1% ̆ǫ;1nX׍u(t:U|'rf,gm5ms,Ih{; 4g3yp>1#yR~:~t,waÝi2i=v=gj^0- +,sǻ;4bl%EMQ~"2u*1rh޾{K4tA Lg"4v}[aJs0O3ypBFQV/9/;4C6X R`mk[ ?ןƛ4ڭzۗC:zR/`?[S+}?}_>HxͱCZ>UZ?6 *VWoO:^up~:?/NwNϏ퟿cJ{%!JWwHҩڳ^I0Gۦm1/S0)C ?l~ :ҖifZcnC۶9N䈳#|Hڦ|^$-9^/ ]3z7o`ft][ZzI*˄<̇E'q:,~ڣm]}+j@:)c!SDU&LeX8gjRRKʳ)Yb5%N)" Ŕv .Hhuc2mSm% 3.HkG;FטD4Oct}0_za$̮T^fj'sc%rFІ2h<ӽKO3aɀ÷mljglIuooP6IX0/LQɸRT3N$zXK۶nG5gi׼4r9' HBkSIHlH1a 8PL%AV2c]H [抿73ܶmF j59\-7b0b.7^kۦCu!lK~sYR N fFKFIuW Uѭ8Nb< PRbɯҞPS~Q&- QV``|BTiNYksr.Hj0x._nT?bHˠ^c58JHǵ#kZl[`Etq HT|ǚ)LWM"c 3ԑA( M2ݵiDN#).XY?Y3 r4!wNz t?>=qO6 qXSE/ LXc_Iy+6%^!ӌ`d;ѷNgAVwX꽮&<Q\g3X(yp8y/\Z[BSB6m +Fy^ #˄e^xZ[n՜sbBl!=F B\_LQL+9g4E\/d$H"[ID1 .mcW4q109i1ɶއayh9NŐTR嵛 59RS%S6\Pѱ!x$!kX${nIQ>THAA >kx17T R7o8=VUݍ$;~;| [1lQ$:KfV5 EYP( @wu9y2g]'gҊ)%ȑ/x#2O((ss! |@ op=>и|eywO֢{*/SҼk;IJ\cbj}ד5|uCL8b&H\gq<1qli[k}[Cm4mJ!DP٠h tc-jT<WQϻُ  v{ 4N,A48LLN)lVVWcğ v=xk4nJL>=ijMKe[QaO9u dH`f*< &猾זX|xϗ"Mu L=8֠#KA@S G*~&B~%y-3 F˾Lַ~og߿_}%~awsh3ZȢ>#T􂑦zT÷ѼƗ֙V}aKڻyb|2}aTfj?Q ?*Yx}}T^#(X_lD}K(7Gou t&y?\^* p٨k>jz|b1fkzc`~_3BA=3㪗G0g)$Nx{om~5^`<{p8tt\o!l>^s]`IWdT_ jȘЧ/!F8ap+VXono |:!B&'Ȓ|(%$ݭf?p>"1]UNCiCС1=7+![gƘP{D9Սa=FarmƵ8%g-+j)G%9J5bγ 6A (ZѵrZGץ.(y}ڠumj)DPw k4RN(dRٝFjI9m2_[ؽR>bI"2yf9]Y%aT  .~CJ-_rb~o0DuC !4TiBN B c, !ٜs.+JkV oCҪE֪8\fF $l[hٚ樌wϑ y((eŽ+v dRo8>/]/<ԪÈ`l>^*-M~9EQw>s0=Ͼ 8E IDATQ^㹰B- !ڋBHg(T0 㼦攂!(za{Pi$c2h̟"^WsƶyU:(7Q$B9T]F40^?%qXةAjC1shRHK*YLZ5]$+`j\MpV8Lӥ(Uk1Za[7"n{xa8`g,R$ ۺa]7GrK,˲|:1hd,e=j,jV*6," yic81x Cu2Qd;e] 1TsD ? $A Z+`^f%=zBBgPMx ^Cx]ׅ)h͙D=h$Yig G+x7;g۹&@\a<Ńa3-Hc@FY b0 9D<)F4 {I,LϽ1ޡFy5vQDhg_W]~noI2i׉o|꠻8h̓߯V.A߳6FJԖ Y"Zq/o夦S4De%uuY AaO AI~@ZqZ-~o-:Nw'.m1<s.@"roc.ShI !hQȀqr$Z]8֕͜ ͛)(TJn/lug(n~jN*"] 4b8׉B dRh Jn7(BK]~ik+ޤq^Lb,4S4MH꽗eT&SiO!{ n6Uk/Q|8  (1t=M5%_rcTA ]J 8<533 V6Vy6 !RQ<q)&w;6\%6)Ԕm(ndC)Q[l ˺Xq^h~lg"ocǂ=wdtp݄+?]3rMXcG` ŋ(vqh-W~-? /_|o1v,@(a٫9'<O(sۊa 14=i1A)4nLi["x%-fil`RhҪUx[tlk4k6! sLxJ]w53K?>7~PO}I%?y_}ַӵ{ջOgxIx_ O8>܎3LGlm\jx̸U-s2^~.߿)_3Cog:mi7JMp֭9Y+fZrUu=:q`;+i0/B(e \Za4phuHe]Z)?? nt@H׮FY"/| rJ8ȒD:u(lFsxºHq1Q$qm##>nn>Xc5Qb *% i `bՒrOriP ga*FńZmg.[4mSkIt:fM;cdHq cY -Zv)a+޶Z]s5< : IzuCRX0=]{mv Vŭ1|ԣmV"UP2gƵRIZ`ߓ50 rMSdk[{RD4 .Oݼ"l.>rV9=:X9^ %3?="gy{ډ6YSkdE`:$+:&f͍ܵW !Z!d۶&"VLJUN)͛& 5^٩5}KaEXi0@5[P43hak\J939G៿u9&2´NmR\28O(wN0 dApzp{{Xt<wV ә"5Z91El*A|ȄH Sb5ƌ X)[nY![H)p84o_5]]WC^%VMZrS&qr] ,˂iLqo]6 /ZP{Pgl{'Ƅåsbbi$cTx!eЏfBض ig-Ո!a "ׯs6i7!PXQ0]g&=H1qiFasnn`8$}KLVAs{j /lZi〔҅$uV؄vsVӀ|b 3>'J.PBŶR|q}GT~um2"kQ?>k|VmBn(R 1)$xج5@-F ]ja*"'~ϟ?#&(A=ReG?ϔ~Gb8vc/rU 8Ou=!se$& rOh SnE$4ɾo (Zi)Ts8 N|s1JLN4+؆`Ej{ún4 e#Iv>l!FP=qS*a={}6VcFUKk%}Žn&ںךjzz)56N皡fF [?9n1`^l>㼛c"bGk R<mt{훘ԭZ>4ϲ 3@ii+mc{L0k,b(v(Fb,~mj(\Á{)K>}e侊) ,>61Najxg/^/~Lr&Yk?cYW|H147u"1Ϟ꿟gȬrf΂)8Np 9lV\ c5wwH)Ӏ/mZ[{UYP Sܷ cϖ^8duŰiz :#k&6h>4(ivφ Ӵ?xN>Qps*PC4ۿ;_pk|`&uЉUi54ѤT1!!v 9`\ilyE4:gE|渎#K)СR>XWQ !Ϲve&QU39% dq5{uVCL@`vWmO&p~"; i0!mD1??4 Â~DJa~Aw?Omcs]~Uh[ *5_} S|^{ܿYow?oCq}Ƅw oLx2YZcdzHE*c ȰF9K]ޥ ч6V]X=嬃e%vs"J!lkI`m JNЖ_xAs}|;\7ďa[%q{$H]_ޫy^ZjNoikC+g/Ie^km "ZgWk[ev]OL.NK]" ۶J9uڛ\jX0s:mzrVNrA֢q8VkS0FjfҬ&rWZYZJH]5n15ṮkAXN_t# ޷Z^ctKơߓu%0ʤmESZ:PaiY8Nme [@G<ut~\'\qrkjZ7|mhX?M#Χ3"CW}G1.%DN "&$ ,\g' AL d1h-p0MԌ$˺]Lߠ&i)( 1gt]wy$%5/gGgkC^Ͻ]Pd43l9fa[,늛 ÈoJZ,+Y b8"EFƶlMjJ1N1vtBD.D(iFI)6kk4h>X/J9cޮ֮9XU߂oC|׫ +M%g @K 'TswOZD9v;|Wx왰RS;O$ao7s-eNQ%?@5ULB9@뀬L+JX(C>V|3xyra蛨,9wI2} )g֮+8t4Q ]>z[:˕~R~ ި G _'Z|3'[] 4_r(RO366A+27qaxM#Fc\;X<~>v3|sگ~'ѕH}S¿ߓ2mdњɛT jTb%]D$ZjNV&IT@ucB5U)&N#+ަQ}Mv¶!gϟׯ^h&R<-SS␄b?ŲRXлW{٘q>L"u}9ᜥ +|<(rMv2wvbpsطD_j J:T\( #j(p5!mȮV-I"9&kՄlL/9$autU^ <ː5jN^X"/^PdYIayu&ݖГWι{AR1d=y&(cZ8CKC +W5$ ךyYsVB)ۍ()c>/:+ \*ɋ|dPRliלQ "0R5:ۆL-s8O{DUBjp<ڐ⩱F~NV8n&;~Y؆JdU͐E|#i0MiFhìvZVMBiL!R7mkR(sJf}hş+V1E0-@Q0hJKjMb00Re˖y8anK%-2@0 PFqZUon;'BVf^ɒb+2wRK[|uaj X[EɗvmD>H3}{IeI%ҔDqO%Uļ<ļB4f6V+cEF& jR֋1T1~NM) L%c]VxyfA _\ua]9|֒u%ܿy-2u^ZF|Oƹ8P@F=!븦,+|`1 !",+nuza8@w" W{:} KRp ]\V'ʈ8 >4#5Ʃ9T~*m]p>rȬ,x-fHc*_~%67/^ꁙG0VUgg  )FI+dqGNІn>/`? 3faX!50PJƶ,4U(DQHd)"}TX sQ b32r27Q^msM֡D1'y/^A+bmj" X"S4Aa4i_ 2-%KZ$l<W眤Ck2ZNWcD9+5ֲj-[% T\{b=wqNj@k3I gz!= iw-M},lgQ+ʾK5g:&x>Kp}q)Tֵ3^NI"LyaRU*B8!faE8EAǀisF իVJзg {rs8Jl5={R8slak+UCALӈ/ ?݈;~ZҷĖ즉fŜeϮ1k-W41 *r/56&ar^@p#rs8KlRŀBĈN#?.dգC݉S>!gZ~CֻǕ5YM)g?InhC`2AK˜FMk2B| mkCIC. ڱ]Z̧iĴRh:1.`lrc.E9,>Iߥ;V=c YR,pO0Β-"BUަjt: Mt)*UtQjYJr<_*-n55eНd@Zu3ZVa$=M?"f.ҋ)"'& 7kzKo;;F׃6ЭaEzMgTuN1: !D \!:.+w]r|7"1Q:ȮDz.| 1 Q{ki QjrM(ź:V0J ʀ 5C) NaAء5sjB?8O>6ahR8& Iհm)KzP*Sa,*|Ψ sMBs][u2thR[nK8&(CƅD+F aPjag6Y88dK'|An54KV F.d'A潤hue=sװ+6i63Z( @(&"r׻fE|v8SVK˺QCgI^kbT<Ԅ~&6RR3؏yg0g,R #s6 F2#aPnGLr8Oº$n bY7# kdΙBǡi4ys8I0)uu]9eVthᰇAZ.~Bf%}k10u88KO -Ec¶ϡ7o}heSqNTiW4lHV: CjqeDpل7ka4(r{ aș m _Ú=kwC :ff9=I"ڈ${/2V1_YlE3.(ЎMY\dCf/;71JIF&)^$BAεޖEgh͂ƷaS8"i\WC (4p=Ӳڢn4[pϨirJ&kYlm\ Dkv)2H15hQIJ*Y10F=aPdV,+qb֢=|VUNok|/e>s #Jf{fhu1eZka;wSv-g`n(1ĕbH* 1E1=1.Yj !& b,YQ"@kthremf"\ L1۳]Nͼ, 3)fI}~W{vkrѥ蹦@jsNd 1IM3Z2$,r*'\0ϸ{:"%*}7PFiXXU1֖V8`LjsX8NYĜ9iANjLD }na1N;yF:KX3(VtC58t:JSMB,?^k-|8xwb{nb;#1#&JFDiW8"yAI˺]Yя(f>=bA!M$NZ*I;bJ#3A:J_OIFaXk ̦}A)mYᆡqp=[pZXa<(zn^L\ZۘfR p{iMFh ?LJ7pg/Ç\+3>9cN3ueǺ5Ӑ1$U|>*S$X){;#"2kњȢ_19cxm6u]hPb,kK3ږ|i.AyZ+Nn ş/Re>v%)\\SsDvsmD~"TymBǏz'T |+kk^@}~< GǿX-gO?Wg>J\5'3|_ǯ IU~_0 [Li~[1#7c&Kߏqzq{=8-壈o1˜~bߣS]S__3~?:*(d&};˷m*&zq:/=yO#C} °):tV/ɍ"Wߒ5]ffgB1p5Fܫ 86#x_d=TUuaxvr>úUsC/tO]@1M#m8 xo-q~Ϻ-( pVXp9CQ@hD 0¢ <{ZDHBcX;ga褂YGRT8>zIg,RTqל%A5Z6eQZ aMM )$1\皨ع*ItDI VjY-uR;’mZU)cW8znwepLW~Q2  =뫃Bct5ՊR N#t3:]g-BJ.˂4yXmzw{/ju[5g: 7&w;++[!K{ҌEEȐm Ch 8 (aC IGV y,7Og<<ܷ1bq eAWvp)F3nwKd`)]ɏfg`8ۆZbɘ9a> sw Jr^=( s(gy"=nnnY/=C~h3bڋ!f$5/qiJKOF|FhK)Vo*V* = yvy]۹0TEi\>W~( ~uɞȵZN @A眰)זV+ NT*O'-ih5+ ugi<+H5 XlL9avrfPԭ]k3ju']oM "4Zښ3"* J5~"RJ[Ͼ N66Z{? Q ubZsJ>uNZY]KKV.8cbHƾ,ibBQ kLB Rsli˼@iqpsسba7H-̈tYhp(`]4Fҽ|/늛 ѫupssC58O{(Y˂43LNP,{Ky$9 8!o^&](s]k1Fa7M{9,v:0C{"qtz09? L诛JFux5qnA[~5WpD1|/HYw@t<"]76!.lq39 |r?u1n>jXrW1jbXR@s-uFi}m1c;C* noYi鑽1a=|(\k Q3^0r J _Ax9Ji }R9YWirݖs߼ LkιqOPl9&3Z E%fϫV 1US*G괜pN74̕R.Iĩ1]1SuYP"~8 03㙯&xJ=~oyv3|g$~~_=7-ߓHR3U}?gz2k}gO9WO$o Om>=9/Y\ ?W*?F| }vtg}"zP$գׂyUu5p>=/eSX!?V>6 W|c/j8~8Pbl:CkÄ^r)p0[A]5f-1~[[]1F1́_؎!`,P4k0 ňD(HT[kZVqh'5Imq{ɖ& X#ҹx) +吻9 $Ͷ1i9d9Ž vV fB 4, ZzecJ{;Rθ@:= D2s0ud*,r+=IWy{VW@At|`2]: M)b%(}b|nnnm4 GO'+[ |&Bq5 a[7'A !V,[k|p뷕hܕVX^jml/m/F h6S5RH.f1/3gM-^ Sm~=J6 ӒZ|vFaY3Vb!U۱^Uq"WTsE^ĈnГ\M(Aix\awua#y[WV-#Bw9:B#fn,LVcRFDW3yVr˲laQ\'K*x9mI3mey/ cv{vg-eżl2>F" /^ &6 2`)*'Dz,9){|8bg淿CI 3 {?kXcq8mCsZC =ww^cߑ+//{䔉6bj-Y F`,4jKBPmL2ZcG o^ ^V[=%kc ^5ڢ.M?774;ݞr978J!s|:JF[݅Oޱn?;[>k `4[vKj-RTl*§ސu_*8L-DѠ&a/A ؎}eVC%q4k1>r.}V\yZ3WSGOIFwL,GުQd:J}2dgvMxz0..W_|\JVsުH s-/~ʪ>CG.xQx:!QR[=iHyqO%|}߃ɎG%!5iy|_>~Vk8}VX@'dIpjʎKF26Uqu3F;=2Tvu6^$MFCcjqdȺps."452I'e>n ލS+0PE845a>rd榹a:(M; uC?L!p'CoQTVꆵ$s< Hu=$,%怇qs{y/z44hIT[Im㰚M}cWkk.ٮwM=JA0А$!UFj&tNjvؖMc 2geᕕ )yⷿv$TjFyUJMBd6L h&u68ݠw iBɥobLRcf{Q Zjb NMp A whl󚂯"I~PY"&IT[Ҭ1\֙\0L+%ƕ\ZJm!e@.dfQo^=FUc ^8R}Y̵hmQrd6~Tv'{NOh(:X< j!B68-ȥ鄘3֕&:* ph+sY+ y>fwi?5hT.E^X7 [&Z8-Q 4 $QQ]OVkmbdY,#R-mm^Rֲ{[ ;kyw:he? w)& C3LBEs,l߰ڢgϟc]7IYV7cn3zmyf03Ɋ(o+m LJ< }c^XAsg/1gbNzQpݷqae"Ҹ7#mcqo~[Lӄ-x e]dr=(IK?n/_"-c]^US&l 1r3?.t-k5qM5+ֹ[{:C^R,+E I`Sa{L됳^T}5C;{4ghtjs2umou ]m.kq?&3{p:pw{Iq?P[yFuL·qmFZ7h5R( l]whY7ANm}-M͟oƛ ,jJ@IvI{ *^ 9߹SDuFƻīGFa#cXʟVOxlRwq _KBQsG^ޙ}qOޟK!}?oyD~N|4>O~.xw Or~_[T gxʇOxiG,w'~.q_ׯ7sRi#uFN = CcB)fJs34!mRIvE-rN!:, `k,!3{YƃOgLW6ldR10MiPic|}!LϞ?*!"Χ^~/_=?ö ۺb8uqB.߽~D?sRVՖR`BՄm77V6j%LC!L \UVIa42)` 1` a2XWY0J}}LH, R.q\j慧UdxqH Jq]۶"~/걙җ!Ee=[z{I W~RY륽Îu?Eߘ5!xg5}plQLMZֵV||[#Hzlɑ$=U[}Tqȑy3$e^OsӵdeܖsTgdwTggFp77UZԗjzMǸ 4Q JcYf1!%4%rH{T!hNӌe!~x1)^T w:vR AvN*&?3ŴyqG';=Je[ak̶cTZo*Pn揊_WFCe%<eD1p}0ʃǗL0;:@c,|$woea 11lU5G?o/ym\>abY[=;IOxKxނo?p8?Y?]qe~S Tu\ -?rRcﳽQRvܒMMu%?B:kJ3?c׻Ї?sS?>xwVS{OQn)bNlHef83Wz:yC`k=]׵7 /*I$nN:/bÑ R%%V j a\($iBֱؘO0`N"0acp,p8Zdiq\KtqP<`8ĔHGpDLX\crl]Mkpkޙqb$]PĪmk2] w8#joAS`{̫~5>'G((]-bw6j@(=aeȡ1Zֽ"IMVzu+IfI r&*m,a[b9}#І7=#E Udme>ǡa((!{߾9 B ZEqzILu 򀎖f]LAq\]œ(}0@օ1ЬԜT$\(D-sܵ ;Fsb4٥& [ʳdj{obwwLĄaZ> hS T 3)8g$}5CLTථz%\%)`AN-~b(;Hmg|&J״W54m({~=lқjથ:s^{mÑwD I ~ΊKUk1hѪv*Z{ $ЕԯWʱ`_)u][ 0m{V$rl~j9D~:3SwUNޔd8[ !\0<˺I&֜ b9R@ӏ?2Y;P b3e/p\!1/3#__htNy<><"ϸ\'1H15axG(EY&t9cOEG\/^ccbIBH8x||hPX&V( Zg"6AlR1H^c5uu%jNk gh)n I#r+>hs s|>c^` HGm#UemHMns)@5M@X]/CY𧴷aI+N228F?#R^\Nĸ\)2:'kb7t[uk|=aw#P+̀IԄ5 k\ۇt]׌4&p/bÞ`Mˌ^3ڊAJEDǾpu񞣠ﯤ6D--iJ#}\.^KR4:5AVT;k=F&J)H"`k4PYV r5MmL3oH\}K9׎[uO8q"PNG'ݪ*EkzZDF0khӆe]`JIjeWM׹GWL0c-f 8BP0b[VZx{ǾJe{_Èooi]IiykuSlL[Y4Y)BWڑ Z͉SxcæRv8:MSAme=g?]ba'ĬZqr^l:]˿Tg;B.l'~܍_>>hA@y_n6]&"Ë$gE/޸Vs ;?qROs>K\#r|r?T{z}z>^}/_8]Og~_tFJz»}LJ6IxO'"Vr`}=O /ߟM\>_K~F=⦤θ?y<`}%V9TYT6?ɹ`Ylۆׯ߀x܆W3Lm<6cVGC L;UA,e[&C+aofI"T%9s81b eBI{œwE~bOb)`uY85=Q|/g{%^|awAz)z:p&S}9BǾ n8"Û)EA9m4oLc/an&m쉣 )&sn[{zgN!g{/]x"nK؊Z7ᰬm +/|J+݆قެ0rC/Mxs(h`?FJ:խ1hL%F|u4 <쇁9cpS¶DA( NDj08+aL C i=0iheYI1 5zO"1liE,vfW?o-vIxVvn^?$N aCm@zv([*JP aAawNȅCR ?ȤA $ݽ Zx-j7vBqNzg-P  6tcWKh*"E%t~9$u1\9AD"]u#<=+=e#Ҙk{~fDp>tfG\+>`ٖf4+"+!4 gŌc:o"ZXq80QS#_TInm~MLm-wFw1"S[]߷^Uy;-޼F04E*p|'4hc$]Pu~ /һbV#N+ۺdxRF!jV C'!Ĥ,ucЀx{9spҺkO7SLbMg+YO)B7uL|fY1V&3Y 4VI%ACʞ#mCث!7s@7ʵg$#m5`2ϭNG>@$!I4QG)9!AA构3D;f(Z+VE0Jѐ#KXnI*Rc #I(gW&5[SZk =U(ܓ1=b1H5?goHCk4t}o+Hq/8G1+dV$1x9= (%!t?Ljny~] u_W ^ J2]Vat?I5 x5e*\QhX\߼y=r{oyN'PuRx=E#He IDAT u?P oxu#9푦`\q\X\MwͲֈ}GІUvVj5Qd`_E|<$NFl-Rcfi"Fcr_{ض. m_FjX|M5IW ̱wJ~M y_˟g6sS:Oo#۟5/YϢbgOv㫒 Oz_wÝn|z4މQjE//=ts;IWe^~$?܆|'oߏm$]twǶ,?JVWOM.u^Y AUq| X=Z>>tD3w;Ja٩LS:q/.}LF'{`Od7熌bz<==|>r{W(( H.}0R LIV:㈘2΂ #q3y1F푝Jd}3:u[i/j PNIR14wuM̔"whflP!3ot{teb?pd g-VaֳEMDz)p"oa&Z 찖&Au7ǑܔETC>{jF!j]֝E .mľpD8"ºc<5VzWI$}䰇#x]p)I?g}I!`gIfIEAS8qGj ALukICZk?V8]v't5':(%9ԙdX!kjj8y!Ι)_L1N$TrC̫_Qد!s}GrN̲Sςî\QP0IpLPYz#UO^6 ⴆN^jEIm|3eԔ^)#%i$IS^ƚ {l8+o]y,`7\.Wt/GQ 92:Tm Pd\9y97]W1:~||7 1ae c Η=`\KQԬ؜KK8*̋$ZCZ>ۺjX&"4al|i wHA{yYÖJeY*býyvj0 }g-EAC<iYooYD=%1&Q1qb5('5L3#k`IA]w b$Z)*~_+usŐ 4BԄ>Gxg}rR@?7ؖvʱChO;Mw$J)pbfRZ(&\f|y1X gR8J G*$sXbB;:?@+#fQ ㈂1&xK1^2G8 ˲)f <AhܻpމP/ %f,ӫdžخ:cg}ds.Js/ ;} wZTȴ̘& 9CIjV#˾1bBI9JZdƑu˺`Jmy^֍l[r0 I{Lrm,:k0Cmc›7o߾ŷ߾Hi ׳ $'Vz Ή߯8xchi]HaDiEu=QJJT4U3A%bL?uP&`m?^J̙V=׹Xizwm_ֹJ} UL|F ޒצW̕ˏӧu%%y\۽/?\'v5?O}sܛ&xu;op*%- "'\ 6Ī޼y ezm=FIilkMl"vLn~B )cW1@ǖ~sc[7 cjCγ q#sׅbt. Utewp80CL[9k.+|2/x~~k N -je( ]y8ǡzMVÁc+UPuJ:-ChX,-BLJIhپcGt\29`AM-l% 9GA]Dx.mm}Ev*_0ˮ|'<1Ԥ+[?ZnhtKP)N-D M1kv7ziG, 9aVMtLQFu  )3QS'zǤriBG5]m$q8TZ؛(m-4&m0t}RqR]RS%cJ)ts#yY8R<)"{/3Fր5O+"Nͺ.8MƶQ"$KDk4mGux5%ۊmېRs.ggA? x

        _^+bPkY:s&)"e]x|/F!44[ U ~b彔F3.`$ iKFs2XJq6 lAz{)g]L P=`1O bvV$/ Eab(.QCܭDZD\/bNK)# Ƀ5U{Lw LL`zC𫦿K)/ڰa5.4MQ8?_ d% | QJ(\ .gpDH_1|6 GS@SѺ1t8bV'lRU르а2 :gѶz FsqwDu!x<իG1TK)3  <>>"&cxDi#q.3ÑcQ¾Hގ2]3M*gsNLT)3bBϘUhߞM P^8^fw².4 #y;J3Uh mp9 {KWcx~?CM'yYk|u#̿G@ M ܷZyמ#Y&ϲRp  |~V\t:?joj9+E?bjFʑuݞ?wܢ|d{MRs ̻ s//T-ז&?&?*_"x'EC?;W nwW~=bsjE)kޟh?D6>{w4_.\>rTߋV>r&J(9cO:߾}8`YVI冔Ac5æ@B;ݱ.KIT9'\m0|(,tg)JCϗ Vsbo)*p;;'Vsʘt)"}C/h=֥%uSK}w,]w(w}ߐZ ^!$ ޣÔ2oܪXX,|DQ:;I)R|Er}籮 qVQ)ucwpլJ`*M"F$4tli NQII idXCKRbkqMH5[ }눯:P 3k*M#mG7۶CP;"'U4 YN-lakD60vmۈP|#'gssKpQ-)־ېgYW8kKфSTV<~enkg &]^VzkKitGiynt~]9MAt+ֳG4>YB)eYn"{ڟ[~ z7"IG0-c3j'iҭo^7s^zϒ5mx[= \/WC 4)}ghCyzU)ќ35u~4]΃,JĒ`G餔ZgPPsfY9xa4!Ek/y.kL 27{Eֵ%ߣ-JZ5[lz$  mb, |=? =|[h!i7#-6֬lIB)h{6C/Ʃ%ᬑJpm%`p2aa"wVc kMFȷ5@kbSar|B: /x<?|ÁiO ~ȴ g¾$X@6^;U!m#Ac`g]6 N*bώbBrK4Le>q-R2DLywe\^G i;h[hpD_WqeNGc.)F=>CT枬uźРr<>!<\>WsҭcYF k SE v^邇cX<mmJB_ R=2 #am8r@C[ kmVcp\pGBرm$t8` +}7clNa.:II|z<Q"KQs՝mCxK}ۺ5Zp<pyĪg0]'t}-I?/mOHtL(c)0L =>5{ }/IꈰLӄkp<5޾}D#pcAem 3eR:&Y_Pri}PWͥRPpƈC{_u@O'[iwʹQ*mϔm/K@A#嗊¿/~bЇ?=B,5/{>7W7޿xQ?.z_|}yO9>/uh?W_W/Vs椏~G~ݹR_}a[ »yٯw,w0[Oݝ\ nד|UPTY\Wc[is䔏t7v]ErS׼ϞQKop})hHQJa7~ ~|~|#Èo(K2OhՒ(X׭KϠ@cC֡ 0jm[7)%ÀWOOLfYft݀:qX=ض hRxlCvIw: S٥[ 3Jx-.JiEma2m][tX VIRt,^yR3X{:|5j˙#1WugChf܃_==2+הc'0/ VCD oX nwW=]u}_Tꤟ}s+ϿrEϒ_}0_ߦҍq~uw|;aĻrp:7dT:@iT }V"NX : nH$=iVEM*J"4 CO\sVkLR y.3p\Z7x||J@+ҭ{mLܙe/Dt:a& qz8[aA+jshi؆'?p<8Sy<=""M0똮92% hF%ylE2c,tpk\ZimF.0V𣚯{[԰<1}㭔$~}whl*J+ϪR2(b!XMZ\Icoj~;}BE[*": }'pBym=T *>[k2;+H+_#攱s nRPVO^okƈZl)ZG%ѣ4p^Z2Pe}M=RȁmKRkI5;1(Cx-ÞJ-PQ!D"=(|1ޮ{l}{eYm[K"TaR^HdZQ*$7߻Xt+Ek$fնI \ۉSfvBBuZ+]|@ke7U-2sJiamD a!NVRէį]5eRi+-X 8u"!^1)ݪ*pQʔX*KrE2SiR鑲{EöcIHR趰|VzxB$XeYD ϘW?W+|) hbկ׋ 9-Rv"҇~ ]Lto|&?0G x=I<:T~r&)_ſJ<)cGD!=p^Z>\ I/1bߓ$ꀲVPJ5Z\ࡘSZP#,Ybݶ7L&Z׺tΓ`;^7nC;OKOPX)U j*Tb9T ZsF#&0EK MC7&eQpPD+0!^߫ulu&2cZ=q+XM9U)ǧ'v;ns2[77jmaׯ'5DAfWŗ_/t|ȤYy/uH5&{L!Yۺ%?7G>bU\}M}G(55Щ&Y$ 1 ? 2yAHH)Җ"1y˺H .oB%-Zvl1jpW;幋Ju%fI\W -όβN7FuQP0O3{Ch]s`y1A~+l+t^:^*d&Re| \ u a[f1FN"m2 Q q^.'<4g5^Pp¾cFٻIAprQHFL,]?ȳt1Xj6D߿x+y^iGXx_>կ-=,%Qo9|~ J _)[~V۶"{Pd`Sl=v_.6ˇ)]p8r||LZjMl ZomuXaϘM8MwqStr0yZ~z|Dn2(,$+D9[\!<;D'/JwÎS7Zy/ &XGŗݺP2Q])Z/XՐ5RӺUגF]|[L3.^k8X^ރbo  \]uiF !7CHE*(IW`9㾲afICٻske1)gl*F X xub/\17FEc]WY<Ƒ,(UT9c/0P` VB aZU׏ƵrĔ(9bdzJCL2]ɱZU_GJLTNGh;o.(qx'LI(?2גmݤo;qhEw^(*ݖKq VL?$/3OwN#~VDZ,+Ԃ-vg,J$uu7,C TǹX C8, [@ úlm;lZ軎{;*B0n# ,sJE*Lj1 L?y&j'z[?=>059QFŽ"Rdo'A{=~@J* aC4Đ &~D adm[Z n%xud?xIJ.Y֬ieߡ 21F,/b0j$ڐLwӴZy0[Opl{LlKH;Cd]e[?{La9ybQ d(9 e"ܭ1ag?WkUhw aL^)XiE,;.8ǺlPEAImuؖ PlMΩ> pX-:+ Ҁg8]/n0_J%n&Z}@X54}uN"Nڽ9 ?{w'Y]}Zfa4Ac0-("ōhPwQcLԸĘ%&&."ʢ\Y5AE R~|tTu3 JOuUW:U*: ӅYahmKwlS%|WKy6 # L>hi %QUb0X׭=k*uoclή%apE5~vfNF[E%nặ,i^%muж]oj$inYҝ{T乍q׬{% w=EAA<],F%4m67>&Pj][c IX*-Y*UdݳM۷ݣyn^V{[VY_n4K$j1y[JK ő{Mg(+&(llKy:zgU1(VyKVE#ʋ%W,գ|?p* LiI;%}6r'R?-nuP1ܺuL% h{{D/깕J<ѳUbzbOJpj^xaܝ}4ȽhHrLxqwYUg/ս&KdzRKgxk %3^KioI`xW*l13zY2;yKہ, ůO5[<ݵg_xYy6T$Zfbڼ8T ݇4,lqfVi%j]e₩EQEf{x,X8TŠ\`SwzDR۳@]f3AjATGFf[Zg\EϳL4Mőq}pfeETjtx[@K骢`8*ō͂PY*fl*Yuiv,Zif.&A`Y-@W[@nՉU*&lvofQ='Ifx_ônW`hs^|_'ePAZ]{UMr ճӫUn6\@}0hr"(o{-s 8~=gP]VAB ${4E&+gE]Y4bZ,@<{M4*Nb%qbԪͤ 5;ՉHݼaUͤBEvlaث Dꃪ;EGHs@" VUpS)u1ÓuICZB[0\X],@J'K3 U>h?t-f{6,5l5xn [JENSsӃ:^%%TA [{jr5;V7~]Q/P9Ug4ۼ8B5#:lj-w(W lVvoPt4{FVϵ6IUՒCں%~5&0*JX@]ͻ`ij_if9.ɡZb}H-$\g'~_fcaGn-:S=ߵ T;xNǂh"1]wGVU䇁ͦ;=F4 ޳YZGWyq=C-SSZ[*$CeY^滆62yQi0`MWĺX%TlPL))fj6EVU%TUw'u.yݳ" 5uYӠWJAݹA\@2gvlKX?`XFTʊBfSWQwn^'M$[Smy UPVw/I=az*Eap!Hlzeݚ:p*^ #yvD~=+t~~=aUUw\էE**rDwmXKT]T?ʢP3iXK[}{:PB<:X$z2mLWf;/$Qw Uʼn/E}-rWYٰ뿪KeRz*MSu{]l6xYA stݴ=Qaprުp0pTZ~n~U2 "%oZ:I}׉"PD\dɜ $R7Bj,W'?a=pEWWClV?(}Z`WZpn/)׭KqlUd$IrQ⩼҂yp!U%ի5;7WE (Gh5jIf:Sʊ637[ޱڡ"Mc0k蒱C"7=>o.|l1qO6hK]ߖZqL(Peט4SH4Zjr IDATJg25ԝjv]z֑hhutTt<7Ò7JFJve]2> _ U)ޣzv4{^\-it^-?[|`^ضSy{C{wޣc+˥WBOw oDwk[߻[:Xέn_6%d.Bigjs=Y\/Y,K]k*IPpXE)u X~3v=~4"WD.k.~(Ju\kEֺ4r% ϻ*0ܭrV6UeOWU7܂WtSVشv|RZ 䡶nzݞ|߂$Q[0iu{=k6VլrsKUZ@-Ϫ~>=/zeSg*#[XC滶U^FfSQ)z,+0։}m8`3(-IBuH)k*Y{}텶i^])k/Ck%ZtTo! -}߫ZDnhWӒ Z8۟G²Ug(\n{vVY;KY[,׭fSyaھ,+ʢ/B)/˪6aRJеwYumkFڑu"p8JHWAе B ̥Á(Pwe bYZ}E ܢUxB*y ~rS~?Q{y_GaTϋ:n]KʳLznFz%pm7w7GV57u}[WWʢ͆Y;[N~65zv:*2hnZ{箚ˢPgUzS|w UE6t %[KqҰ,|w^qwsbynԒU(PhYנ$QUW䒠׆?tI \*XWIbAƓW_cJvmjvxnvoj5`hSߵWY݂0P#$tȫ0IUѬTadIu]RR0 ՛)W$%wY='։u{Zf̬qIJW1H,.RISgf`hI]3K\(vHl\ky?5770s HQlu 433A~_SZSK6c0#yʊ%~Yg0?kGQ AsqKfӺ U1n5M6[ :,XGv*\_"SѴF jm^Y%'*rfE-!R.=l5Ns.rCupnWSSSj6։l&6%Ą.4, lM)"%al0PYҡqfKE~ЬYFGe`Auh6, %m=N[7.$g=7ZgyVS`.tB>FC ;/۹*b%_{uP\Xo_W;7.[XXȫTUbrS^HۖNwDo'* btʅuq޿YU r =?zXu/(Qͱy'&KZm'p[Wπ[\i4{ oI6]_ *;:_|w1펙&taף3}ϫZ4'H*]̶ǝxvzo3|rWfx4= "WQj,melk(3E}@ZZUsSg}Hˊ\q)+-Xh$ZZos$q ٙU[9o[`u::W_yjOM) CMOOW24,9tU;ZaݮT'ͦ0|w^IYqb-0H\ŷ49B[h[;כj0\;V)ʢf໹n?nI3rZkyZa,\UjjwVصyn- y^JYd{jv=!X*{|Ϸ9q^v֍07;vU'bnx qER~:zn۷,1X~z(BZ4w%=X7b-tZP%rm,UЪ^abUמ67rc#=0 .8U(*BijU}I^H{JXy+ :&ߞtvYKW)R-|-ʲN6Ki$k;.ٲpYtD5# mj4۱ql՝K8ؑ%S1m @W-[v}k8Hq(43vWQiɨYEݮaq,UѪ|wܵSH$OpPɉAb"W]wo{Hk\}NP8RR}7Fb035*á6@z^;vsC;'q$47?R`ЯggYv(4@IiJ,Py:T=e\a+i4ԈKB)-7+s]\qb]#$43ݍՒo%͆0VlT*cz=D>7MvǦ$I(K 7QHσ@*<{_u0inWwVR ;nD GX~U}F[EQԟE]Yn1ZyMu"wV%VyKY'S -b5wo`AtU@B/ e^}?g[Ȼ-ng!k7O#ǝ>o#߿{}ZQ͢pFޞkkW].ۿ/o78ӢsWw^vaOlǟ1!.?^2?7{QH{ŭ˘UNcrz_Otu&[HUg8+fH-?Ǥ/;W ^֓5f2tvݱm^0377e4s 7(TQVnQܪJU_^܇( d-,Kխ[}@nm,-z]kgq[Z%53;SJ֎:Y~_WzB`4Kj5m\QPX&`[xIhE*z mmZ^Δ::.X$jZڶ}F%WVusѲŨ*ً-ɪp] قsWuZji`m"63Z͇LztU,ǥ}[-% ?gs`UW $ kVUvJv ѯj~X/ҥjR5FQ>K̪גXQkfrʫg4}kGv{6 j\E[ܬJU!;$q]oU…y׮QD^hi4tA!w/UH3`0Z~(N1gYKEW9b3 __HAhm݋BynAC\ ,Yz5"5;;ks0<Ef4M]a%UbZ ]Sn^lF;+35[-y;VZ%UZ2H^V^=z=e̵SjHk}l>v 3EY.PzLS@tv B!(][kQt &k_}`pB WrH:p-};Ӛjw477Z'ϻO[Yfՙ͆ͤu=ܭt4;7 úUp}57;VF3[FCfnmdG*Ϭիı溳Ly%Qlٰ>V^%u4lfwe}뜐u=7ZsCev33. ς8`(fz6hZ'Z%qUQ殯[ng;DnA}8L-|wHni(5??Z&\p0e{|k\I)dvZ#|<_ģ*ͨ"7z%ˬUjE#wAhpX'TE(TC5[-u=Kh4aMuڮR[4[k^UgilIUQ+֮սƬH8rm͘ Įx8L凖$XhתVZߨceyu:),PWUP֒5rKV[~*gBSk*^_Ɉi*m6z2[ek#Gn]=7k^XX :}G߄RV%O^I55Fh8j+CI,q(Oh8hZ(j33=)InVDB׬Qr]u욨۝Wcu+f0X^&KJĤj*Msw.L8_@mwݟ˪"ٹ)i44-߈5;7" |Y {[FSjh6޺XU(m>/XdHV.y.8:dY֮]c,<ڵ{>w adifg5?7Yy4YlTI%c)D*X\g*]+kҺو'ցsBGV]TEU|qPDd0hi80|I{^L,LL&]D7`"L$So],Kt4L{ǞL,E?sD9`xGKsd`/&W0>Ef+R|v`0q<ϓy&o$=c/&JYTx&yTx&WR @>0x&oD" 8EQLeɞL{ǞLZ&NQ4LiiL4L, x&y7`E!,˒]4~QD)R0YʲOGs}_y D)R3L$Z&y4L&( `x%=,K$9`xGKsdw&y{0Qʲ0y<ϣ0|v`L](t_0Ml߸qya;vOuM#jjj?2xʑ'}D_싿wYӶmm*B?x{oy 7W}z/|Kz;5e/9M/K&ZQte>ٱ>F; =gчΎRQ>,ӝ[lm;w}X.(;ԛ]կ^oo}[g}~z;FVu؉x@hYf`mnݪKiiÆZ~oЇnߧ\w޹Ewy~_himذA>Ag}viffi5Wk}$I*R6m3]yYhkz}i-|ɶU:VO~r%o-y7ݲd[:VYӺ~-[h֭҆~!y6}nyuICm]~<ϵy宻t- Zڰa:z:wiMh˖-ѺuqFցU3o~}>%Ou N҃ P7z?}6_A+$ Q+3eW\mܰA/>zq Fny-:l~Ӗ}|[:ǵZzղ{ߠ%Zg'7|.g .^qN}^p҉:_{uYͷ׼ u]dC__e}GN56P~5S\}.za:tܳUEǷުug.Yuלkn۶M}yۗ^tN>{MN{s˖%Nyz+N>!}‹W}_SG\֭Ko։'uMo3K3QwQGOzʑc o<=஻_u^qƙ+%~߾WO{Ʊˣ{>|l .k; vKn?g\GZ1-Ig{y:T^t8z+θ`w_'c{ny}~wn٢ l[Ư8L߶ۭO8#nvtϵ~k=VCb_ҥ#۞̣GnWoz[ti/]1-IzݟI'BdN{څVG>)G~Ýzkrz;߽b[:\O;:ǯ~ߧ=X]xcG{tť_ v/ڽm}, xn:ctŕ_O+8Sl@/~ѩ#eWh۶mckӦ[t}W|m?`=a_}Wo>|燛6կu{|q9s?[#)c_v糟wn٢_ò .}쒯t‰Tߛ}zQGǷxeR۷}%:^3vo{mo;u&˿ۂ Ё}_.IZ<_5S-ܜ^yƙ9H{˗l{3>{K/|׮i\`'>o,ַc']`k_]~͛ou]s.ڵz3~9獭 ޾]| >ޗ.tk_7뇛63^[=-[я~|ۯ|sE|Mngvm/9rBN.wp̳_ЊA~~ч;U_ڲ8\5WK<_9=-ٖ>y+>+NyIKmtqWO~j?xEoo}{}_aۋw'_ZUԧWsG>W,o]V?a{]?_+W}u}ɘ^tFe_1<*'==#t;ܩ]͛o眧3IO|:SS,d?3_0 G?g WRtt7A^6Zu :#@ߓ6nؠ#[nQe?u_9_^●CI? P Շ?򱱷xٟ{_ӻcQ/z)'<ޱ{ktwh}].[]‹Gޗ]1{=h]'Ysc?_G: ~IOk_jx?}yGxGyNxzʑoOs{ 9g77mwxl+_ x/^K^>ϬX\1o[g~|WY>;|?~O˿}T#A=uߟ/>MqK|{ty7oE>%ۿomq}s~:ox]~ns;V~,y+x~ws 79;iG>;8~Y|ߗ_{]+} :笏- vW^q?Ĺ.iG9W|/|^~_y>9㟻Ƿ޺lؠ=z}?x<Gvz:g.x{Cxv~N >u`dœN3>p,~kc_|a?ڼyl5s?{Fs[n~n~}$] @x[1}‹ӏ:BzG^FC5~_{};l O{~:笏iSBg7G7~ /pt>l߼V %I"IwIO|HE}FIVzޘ9\DϱUOyX.|衇{{^uN(_?~;433yeYoǷާomGq7lwuu1Yg/M~\Z1-/zZ-I҅Ι~ѩ'/ vO>_> 6~yr no4:{t7`|-U~w腧cZ-yݿ~lǂG=0}#իWqRY ˲[EVv2G=wV~N36t֭K{sFV}~7ظa̳ԅe/}<:]?_b'> {dOo߮}'YvfJ?Cm<bhvc۳w:}# 4'<^?tNozN?=ۦnߙ;0}ʓh[~YÖ__k|jUG{q#_p=]vŕ#gp=v͗]v~w9rN3v}~?wq4K__Zl6~e~o|SmO89Z}./\۶mێ矰]H~jxn *5B.s̑ˌX8V~nX/F?n1 -E~ |:vLue/{֍l;Ynj7oU|T]{󞧿mKn1SO>IQw++-[mQW}lEs_z!hU}C}M7%r_[uc.b]F9+Iz;6<;w|#ӇLtןؿZ{<oiŀaxCV| SNy-U}ctw3~]co'<^Alc3E󸹻'?#Fns]z#ۏyѻ?-ܲEǗG>q=Oћwܾ[/gzq7j~uI'lʯ:1$It9?GM8>}zme{ݲ5 mپd[{Uc_I߻ޥիW-kU(ut׿9>󅧌DZN>zNG<qF=Oxz23}UYPNBŽRq^)iGlgee}fÕi{q #MQB@@r("^Ç{}9uXlM#};cRRRyG iG4y:ϝ;6UeZbb~;"e:;wDB@@תL9^~hٟ˕]eZ6;+4tӤsN_j<\/11Q?A}L~>/(ҀACtQ40}-{6!IǎK@w7P>R}<UTp  ;uu Çwv~߁eXTf 9}&.3UPA-[<z<]%J8L{[7߰~|dZ/Λ8cM6hBsKػ׿URt,lݦ5zP 0Ͽd5&(<2R-[Se[Y!^u xroX߸Q鞞9vO-e^{5MzzBÇ>6EʕYtO͚^u~^vm\uΝ::<2'ŋi̯UB,Kc>v=+h:q~nܨGn"E䘾רUVkY^OS@Gեkw_elVG;wKLܱJ.zwL;CLwnrm үXE6P__u=(׼S +Wivs^jըuj[G oŢi_|?~P^G[=}^yIqqq2oFo: 0 d ٳ:{<<N0 I3Ks1LtipNfl2HS1 c2h N:;vj^zJLL$!99Ee')99߶b& jUc-:yǛ/uN٧9֭Ujk#\(pMgϞUXxrNBBu?FVZDzֳCVZ/.<$/O)_h֜as3*\ s\.$<(0OMݬo^ƍUC}J#^{Dw $IʖUݺ;)Ӧk굚d=yޗ֬X#GvZ$>(prjkعS?+ B7E;~HqjP2!!5bhIRnxeʔV2I|pӌ7A͛5U"EoZ$;8)#!^Gd=qLؓ-x)2%I&7W {YL%e.SV.eK{z2YݱidZƛoIjT#ruo?4+fO߾c>'[F92z!!5I]YLgqڷ/TyKuh}6QAA[38DMɿq#uifmݾCEԢys7Rz,qfZFyy=j~UեsGժY3Wݝ@\bbc5cll/ zl٪ڼyռY5hP_͛5v藄[A۶ЦM\[ԩClj_7)00HWÆ ߨ~J(l?ۧ{UD UjLڶ͗?yl68 ÚOiᡲzi2RӤlqܪVkrVC&;'<8xmٺM?̶;Gayx8=svTɒٮs!)I;CL?t8J!{ܹsw%_ϿUdժq'hwHhW?l+ecbce6͜fy qsH}6 =ڹqx8#IRF e6ii>GGFꛙH|Թ8 yYkv$:Zkoз3fd61G^㫜DDD>#Z/ᅴRJeL?rT=WLlCeW*6??p"&IaXJݹU;3^frk2}\Jx =-R2H U"[bq9-J>Cz<:2ɽAo$j5>"> )%p5X>lnެ^|}}t4:Z .R飏?y dX4TNmꯍ#5z̻*^:oDKy[۵UҥtY\JTvs8rԢEs} M#}T_LK˗ r7y={j֬xxhWn:M]A3RRR4! SeqSᯍzwxu^=_ O*ܫMUkih JdYd+~ k.n\8Vrk:W]*zʥT|]ҏRZd(-2L7bSAR-5TDd$݊gg}JLիbZF _s~U1oKRJ}3s$iGThQu})g Cv:t}-͍ ι+ {_H֬ӆ E2⡈͜$õ{EM6]մ)jӺ}^GOP90H8Uh_hBCdX`w%J>*Q^z=畫V+!!A=1olW?D  Ճ kϥ]:u_ YNmխSpRtim&er]xIK ro\6t*zeTnQ3uq6nxQʟ?p.*ܪӥG k.;nD 3ԴM>z+3f3KwXؿl&&&*8x|OOOI >է^*Ux;,ιbфqc+k )vҥ/,,ܾ֭2߻R%u^K-]Zv-IЮr۷+ MU2e;̘k=zA}խ[G+Vч}'NcT Kp.6.]nߢKd$UB-[˽fݛv eѺ6Y.\p"f.լcBg%k֕{ͺJۿW)+~WZdgN{vyK}fv+V}׵$)"oe#:_vѣ^/2ǎeV\g{$I5oAsg""w_֮۠-[U8gSۣաK7}Ǐ{^{J< I3*~eW?] z|\ڶq%Kh};wjgp+GN ]p n٤ gHKRLTȿmunjʭZM] ڨ(5xR>޸mU}{i9zTץW;Uʕ%IG*UYV[Wv跥MVYZ=X*:5kְ}O\9kEjͲ-www7F+dOaڶ}; I*z!uSzWoI_VM{̳w>լQaٳg犌XmիҋUxquv v__h\;CfM|{f9K}* ԥsKR^xYK~ELx'b$FҢ8+ii*Դ;{ |B3iKiiJ}ۧ^UeVm;j9:ql6$̙`$I/^[½X,_LSh~8}0c{7p2^ ?AgΜ$]pAsYu<==Β=((hRRR4sjAO$'gj JKK7]Hґ#ђʔ!qNN>=y՗|ѢEе$!ھcV ?i oo/U$ծUSE1<EEE0 +0(H=v__j$ǟ;c)&&>zg͜=>mgu 4jEe7dL&-ٌx%Κ_;E=Uzw_+e YOd)v[Ο1cM$`3+3*Yl֤k /kUZb:٭:kSsk;oʕ-XI/X%ޗ5=]K-W߁]6,<\͛5vIRU__%%%Htx6&!qNN% reg7)&/jcoo/n *d돋Ե ٳW%6<)ʯjU-?W=4"+[VImԠuE;n$/b ٳ׾~{sNeرcInJK kvp~ժ+#*dܖ[xquYޕdج=uZJMMbQF5rU|yu+WV:C:jo^za0-Zzt/hu١ J^^jX )&&V1RGh¸Z_:w.NO◺uuuU֭twr,ZDOɓ1*WZ=BSԮ%IY|}|x!Q:o?SbŸ9wH+dڸYuVXPdI.]::is>Xp1GٻʨPB:pqq*Sq{%JPY.$'):,t l6)xnuhVUP|e:uDu}TCw(/U撥ey }@2 Cf*(7!^_O%pI/%rHsg \xss0dGs V鲞wyz>ܪՒDgM@C(PfYfDJP@}r)_Agkr)_Aia{{299ceR֭$LE=oFs6TAHR֭PMds9p{Ks t.̟)I*:VO?O޿%ޮTt@ gz: q8n/&.(?/BM[oBM[HKS  f [MfK1 M"=eSj6nB88\f ?%-]"I2' }K`c28'yJuS[՚֩\}s !jG)k#7_[ŧ<>q͗s5 G:;TvKRZ^U'+`$q8 W&Zyp kRV.I*ܮKl3`D#1>S]E)e*ԲL.d8'_2⑮OP\r3T(-|E ۜdKsōe[ZrV3_U݋+Uޗw;_/ݪՔ[ZJۿG7Wᖭ,qNH{v+N-s9!DJp.n\#I*/:3_^H9IUZY]^]16Z"x /9nUk:Mew&Wo_UJ?'[]nn\K rY7 jo_{m?y_ɿ.rh%ueE[ՌV׽wzDB;E*WviuRǣo)s1 ԝ[%IM3+D+/oV<:u˶+]OޗG'쭽=>Qݎ7iPέ8BdnnaMW@IR d޾n5U1F+3ٵy򯋔wIݜdi#P5q8n3IIۿOFj|d.]@uyeTt_ɣ]6WnUk:TzhQ|d)m>29w HnLzxKMךu t?WVvˋo+FxZeQflVUQQGmYN6ueΟ?TLlM?ǥ^ עKdZk\\N>mE?_wMI܁nusWa -;Ǐв?keٜZ>}Fϛgcֵ/kXLTxpC%In~1;S*32fٻo^1R6mګvFoRk׭XV=zWY IDAT].&&F/=uQzD%[g >|ҏFɭZF>H4ۯ撤vmh@~j٪ޟv,77\mn݂0f½½ޔc_A ͙;O;vPGϷ춓_qK{*U|.-ZT;u-˸ۭiժb/^O?6:ɻJu vٓymc=zIMF];hMjioRZjJIIOMMQ]ze.1v́~eHQ eMݡ+UרK@w;wNK~I]zয়wjӡ><2QӠ:vuo-^R%jzꙡ_軹ƪK@w-X>-1u 讠-YO>Ut3Cy rozd য়U%j6:|J=ޫTW/7clk_~M]gGfW:LOKKh*]bOʒ%4gwl+JԱs7}ŋazvA]!yWl~CCkQ\&2S%jo#Giָ;͌srkɏ?![M/zgWRRL.]v ɲyNfZ.ے%~c&}T$Iv˸^xһJu%]M?셗4m76z1ZauӢŎcg~_ޟ: #mvz:uZ=]x}]!بޱNΘ^}"/w^Un7_~ut>{t׆6*&?h/1˵1rGu]&$:{RdWAV$)@D'32Ӯ 8$ҩMVZխS[?L11/T.\HRhh.(:r4ZGFOr&NXwF#G5tۈ'jҤzk̻_O@_|tӇ)!>A=zĉt=n:kG@ʗ/oշ3MGL #dkK*0(H G@ʕ-re˪G@jV*wBCôe65k*44L6ڧmڼY TdI9{VayQQGrQ|ڷm)Sǟ|#Gŋz!Ji?gNoxxh6>r~XHfYwu¾Ν oKO ٣0U{ߚ5jhm3wWvcȔx#!ȷre=S (**c|Uh /bQorJtM$FjIR6G@pfUuB QKZ钖0%$$:l?Tr~n ٭TDxxUєi˯JNϪ}6Z'=06Μ=!6%թ]SO 0=9zd xR+WϪy&1r]1jnCnժG}>UukgRhhzK?n8Nq3~|1m,Q\x]GUOڟ VUo9ZMBkԫ/V}wW+/r2ȏ\YVw={5xxkyZb$cz~=IRι~V)ԥsu>} ?>_dGVKÇyS͜|}=7)9Ya >}FOǻSZzgtRtʸ]={!jP^yikr+7VN?Mm[jXv$Cv:e1car+䦧O>d=z .7zGBvK3b'~NQGh4q)|;/*'OfӳV懽;IEҨ7^Wb=~YVu{ mko7L&y$s3Cg)sfh?#~GZ~s'|7wgOKOO7a0ƍ谍V;lsÆa'cb /?74l6}6|́a'g>|ؾݟ~3w63F}Sfٞ[rrgL^>~F.\OѳQ^C`,_9.gL~j+el6Ѹi qF˴xG3 0pǿo_gl۾#}-Z3ا^a"GoxoϜɲj5^xϸp1'%aoc4n3 0:u8/\`x~69K 16/O^>~/fa[<#--;LWva;v4|6nO$VFjjj%1!aLCq9CFدaƷ3f^>~1Íog2NObg9s0 Ø< Xf}?0|ݻ>t#6^>~kYg\yqF)qS㜴75~8cO;q[9 :wg7>-11hݾ1!缗pb2gϝ3jkh6妼s8 ? ~x-3.qEq?Ϙ5}}V3;p 39==ݨUgŝOkpٯ=7sھ}aƤ?1|={^>~Sskg,s}цomytoaQfGa^>~Fӎ?ax|P_aƈ /?#&66Kk|};c3Z<2}2gG51snjd{:r[bDDD^>~ƯnƷ3gS(Ksn-.[`S5o܌dUf I$egi_h -ԂO^\\\ԯO/VhEEDD{3ZGDd2~:ab}7wRҥ4x@^m۶R"EyuKڶQLL"#?dljks`RRRϡCw)&&FG߸ _{/׸ .#WkӺoŢƍСÒ/u٧WO2fY{f pA=`.ժeWh%eHu6u{ (Rz|\dsժ*U*ףY&k_ Q_>JHLԁ{E9N*WV]jjէrss+tIJJRxd-b>d _TJ yrJ*(שӧ$Ig9>s߾l+dZh*_+T $u>xb m۱á;SW} |tyO7\K3reo{ܥeZFn]WD ޹U}81>'|}qRk;Mkof:YݲEssO,xe *U+֩]SMxbijհW~{ppZhO֬QCў{\]ow{Uڹs-+gfQX= e_VEtŌ j>|%I˾$w8+o;&ݧ#GHF>|Xe˕$M\NVj~ +fP9wj=Hxa/+~Wז6a>{t}↻VL̴+HͨXU/+VӦHNjꖧG9*I*w+{]lCO>q'j2B=Y*tstK\zn\母4rYó^K_PZzDE;w+|3Mۣ)]W_~Q]VXcLҥQQQ^GEQTlY#OOO%$$Y&ܱlݦj~~׬ܱ~XXzϿj[ojOz=]VP#;rCxGm;vsqqQ=(SBB:ot2_FttW!e5~ZknãeVᾺ=9~~Ut̙|*-'T}ܸiqG'뢌Nx^s9rPF1q?sqypirz|.C0{<.Y4˴BWls߶cGewJצ5{FyW%KPm-MΟנ!Ϩq#OϢ] rejھc:th+kJA[MZn݈o^k5y4 +s~+3/Ϳ[fYm<۶MQRԲE }>elQ\vӰჲX,Znjv6mr} yɋu=^y 7;ιr2┅窊oX<@ώv++?չ_^Vl{9v*W.;k'Obp¹*Μ={4Дi=FiFW.wΫSTgdCeoi}$;Ŕcջ.>/R$G4M?+*lє/T~qj{= G$yge5 Bv]l9],/L̴+H5WW 4etmڡuDRrf̚#I[ERKJL;wJޕ$etY]z5,sXQ/f[ '%%iͺZEʖUm뫊Sm԰ც߰""#lq :xn93_CS˱d̵8Ա֮۠́AzrIC͛kTD u[\ː:5WTz5k_+!!!W\9z^pVZ-Ix۴iS=7%%uG$I 6Бh-\X-[4w2J...د~7?qBMۻ71\o^,둚={տo/{Zڸ)ڸnWUzrP{>MdX bzjj9X1o^k֮ׄqc+DʖՀ}TfM_H111Jȿ\W~WUe5mbLիpnv+ˋo8MyEqεdtc{$)dEGSU/oꑌ:.^Reoo ~hۭ|>_>oDn=7oڵ/)&6^}6ig wxݥ7z" %Х#(U ?lTE""D)R "C rGB%$<jԨn/kh([~Fuw%Ҕh03"{ޑ3qX:wLϿ2Nh"fbbb2"""|w-""rs-m=G  DN]hۡ3o1repY.ɗ>]ڵؽgFE<|Yb &\U,X-}D=f߰c.֯Y;'AXy3aFZX-W%ꅑ2m?;ww7f3S%y^Nm>2~IF O62oT l/5x/]vZr,cۛ'[ի,a%krW…ٽ+g*U^[K/sLgF@]/ժ͢,P*UXb%!!'1`y9p==f,*UxbԨ^;w1},j֨Ύ;o]=?ǢKf3dto԰*UboP@V^C``_̙Sѐ,Wp!ztʸ j@CN0vD:uhGAԬQ^~QߣHXj֭ȼ/disF1#wÙ}O{1+wXVt1K˗^Ae%\t}?sJT&BvmI`@M{,iֲ/;[]VM 8xС]d3y9 IDAT&f9tH?ׅƌj~7;CҺUK"##0n^ϥKx4i܈}gslϯ[w?{wL2w 5x[ł%ko!Y8z_,Ge*li5C92mdZ?ұ쥗^[=-J*0t;|4fJF`0U `Oyu˔)͒E 2u:o/],r콯fGr Y`A>4>a_}E w1{TGS$6 sfwyf^G cmlOŋ1lheHӺU ǐ R 9z%W˚v؞W.鴙Z6#Rh4b2:F {w.[Ys(T "o~k|RJr ЪEsf:uҞCBy|}} &ML=3x${\/xx7-b?vHY9;}||xo M_{ןSEfM1z ˕D鮗)'kT4=݆n]eR͚2i8roqƎ@} a}F g^GklSMw0t;9ۆ:wf[hf3vxF!`u6E8']1˙n<\򾪳sn3`00bP<'K &l<=k>=]ѻ׬\L^|X,ْ5@)Ş6 ժoI|D=EDD°Fcʢ ѫfmx{6ˇFߪlܷH|yʕ,/OOL}O5`07o4Kiv3NۙϪ՛6oa\t}U2r.f~q;{>|9i]KF#SnLQFɔɤn1qNwuv/㜻L{{|?wu/8Ҩ7g]\(#;3oL&Sb&`0[DDD0XVN %"""Lsr P,dzݳDZJYauՙ-DDcM o<̚S?/| >KLn}ш/"bw nw98#`]bqYWԙ.jת8GDDD$l6\-""q\æxlK W-ŵn':a8ۗ)>$ѻ;+{'\D4w)HRU<αDL+_܎mvVi ފsDxתlfplQDDDn1, ¹,"zzOS < )Nv4v^W u'"""8ǽ㸖GcnV! Do\ߓsDDDDDDr0шEDD2PQϜ\JKԠ\wBu/Kv|H0kW:. uPw"""ߊs լlV{J'Dp7x+^6 g.""r\ ْg˶x{C\{gso'7vMlܑͺJ;9#[\ݥnf/sS=Q#"""""rjHs3a*R ˹3ğ>å$`Ǐoj)t8r2DN&b>zx>1xթ)q$hLEa $""s ^= ]cW#q-U_8GDDDDD$~w54r-_ ˹3;z$ &j !)^h G+1e.Egʾ|sh]9""""""9jDDDKڟi7pDҼ+d(z~'jiCg:J399""""""軫ѨiEDDk\1azcݩ6?1cA.O6((]#<ƾ^&^98+ XDDDoXb r*ّNK'=eQ#"""""rlDDD[}l:Nuׄqg$;+ [L\r6V͛W'mph0OjdqcX,ԯW6,a5W\dΝ;S臨V\L&7~잦Y֬eJ_7nێ]ԭSe8͠G9t0:vȑ׷/gΞNڎƯ;gi7G6_5Q6xyo&$$FsL?CP9{9{Hxx8M7c9CCè~sG-_ //㞥uȐAo_g[Yh ;{YZjHR8':X%l4ÝM iZ>ϧF]!73܋8GDDDDDD`0hHsZ1SbXΝ!>goeOܡ}XΟT-ߧ>/OFll,QQQЉ+W1l(ժ˼ 8u4K՚uhݦ=f$*V8|#zx j:TYACrҥD,a9=ryw{2: fk1H}رsWڧ;$y\v:˯˖XE](_bD=KF՚uװ 77n$o]Љxͷkhۡ׬ƍЉ;w9|lظ:qԩDۮq5m;t+ATTf̤mNc瞿}%N8&zIƩSiۡ7lL<8ovv8ׯmN\r5y1s?8>_|8p`Kle;}{s,VkuETYY?#66)S;Ǎ'>>>Q9a#)_m3˯X,Ÿm6K_Fy\E WJ4k1ad5lB՚uxX6So3]9gى'-mR~XNUG~>{e#""""""Fͦ -s>lXy{>*CB]xh䒭yGEGh)n 3f駟MVlڲ3f9ٷ{=ϱ ~-*Tg9ۀ} ʾ}ӳ;+s z?ߟ6ѿooׯ˧f2l(GO>eSU xv9nY~۱a?ӣ4v'O\ OK^<͛>A:t؞͚%zw)W /؟#AӏSN8OwpAA-3Dxx׮!CX'~glظɑSOw?W^U,]^~5Qg~ԪQ3]{p=Zq ܡ PtЁJ@``[nKBkXxgP>6UK KcV2]i߫4jPyf$. /si2%3n$f̑￷a5' f!Cn4#CӋreK`ᷬ߰ɩk3l-:M|}}6t0e<'S'ڟԤ}J^vtՑ38^9{爈9[DD$x4mE̯1k;ei~eǏa>~,@2sڎ98cBx4mu_p6]E…ȗ/ ~GxX1|___*V9q$n6֬Q'Srn%JPBJݨ^x3ҲEs܉_!!'xNm퍠u? 22 ?w1 nu}g8̛d;oǥ˗Nw(oQߣcv4jPJxy_-Hs2(T ~0۶Gk @hh(ÆS)T8'Ss583MV-͙1s6'Mp<^Ճ7r{xAzY}zpe~c7coNn6\.ziƌE_ӹcy/ $Fݺď~yr`Ui݊E2x{UKS~gJ'=MDZbl"@DD$sy @"#4/g>zvfK="#^8QԯW'!**_>>#J9=ٲe[썥111;vcǎQh s]i٢9/^$8oN8 (X޸;}l˗Pb=??_94w2y9s &9AÆWVՙ}ʈR%Kp%ƍÇlt+5j?Cy9uG|2׮_OV-+ZN_2|yS<ęgC7kDm֎ergٽgcnghnﭻc}' 9Ifz^9uC;{<==Lg-^$'4v8d2Qj #W.?Dz*U*'9=ud29^?׵}>vsX.Ϲ!!wf)?oũk3%M?FxH v[G}>d4q-bkGI-Ƴe4p~sDDDDDD4ޖH&s{.n$nnV,G,ϳe[<[~feKV6nֽoO;7l6Μ7j/^,t||Nhzm$$`;d$sr[n6Εo|ɇc'7C׮U@ڏr=>HLW]K6-~5{am>e qU[y s]ګxzzƳtTөYwVTD ~XL9_4n /ns] 4oxÙ7+kŊܹZiSJ&>bϡF28}SQaZlΙg 5pzuɟ?:7NMAɒ%ֵ {s:urepAG~~8y_rg|b?}JNO~#V?7aqTTw~ ,H)YIkxx8{Fh([~FotpBeOm={X2ɩP<~ñ,..kQRt7?xn1Ayt/_>u Ξ;dg :Jxx8Ǐe҄fMJϲhRg޸i3~$ɺe˔yK۔.]:S>Һ6~-Sp!Ntv̬#Ƶkt{rr#"""""Ro,V!!f"a}4Oaueen"#oxK6qmy9p==f,*UxbDD$ߨ,X-}D=f߰c.֯YEF ̔i{NGGGҫhҸՍ re|||ѭ+#N IDAT&L"*:9ԡ]UbxOh߮-s.ڧT`谑t 7!:~\͚uQT 7=kTƎ>s5kTg]̝ e4___-^KۧW}:xT>%5k 0a'ty3)Ѩa*UkŠߠ@Z 33eʛ7/[`¤O(T իUKW^e3?>4lЀÁG>kڵM29؇ٽ+g*U^[K/#OܙֵuVJ ]L*Uɗ7K`|}}Ӿ9}ZwfьY2u,Q yjUHVz 0"bl|4τy?kqߐLU38aᄹ[4kʤ tsMg0 ;L,Y)S@K_Rgsfw1~tό0fxzωZRV-_h1l(|{>foգy;zY:OiͲ+ٽ{~ޘ~nӝ5l[o)Sgc.|}}9|(XgaF|߱B{o}”3n?UnѺUK(O&Qfd!o6Of/0~d.^ĈaCpww̝mLfg;n<#q |;u磟}NoOO/DUs/oq؟[V-=DDD$}laM3ը { 3C{k( #9Yhh^^kh%iٸ~: /ɕ+WFmD|1`̓c*\D]矷1}~0>my>/?qLl9sDDDDDDFUH3.k1G?> [dD/[d?v<ym+Yao1g锭yۿ>E'Q|]PV-<<I=Q8GDDDDDD4f0"9޽^Ľ^V5(lo{$j7l{&xu.-2Kݱ [lLQ#""""""]fSȽoD.lgm/]ۉ^kxWWŭnCDQ#""""""EDD1˕KDXBG˶V /g>r 1V6`_PODDD爈=oDܟfKpX&p ~osh6c>rcBxۣuuDDDDqsVU """-ٸkXVkc̗?kWݷ۱?mhJGDDD爈}`XlFQ5!""rYݾ[;XZ.?\*S?}sp;0){7j䢃""""sDDDDDDi|qAܞ̎OO\Jť /?\1~÷X 6kD8X^zgNolѷtsŭV}jֹo9sDDDDDD$9Vj Ն}f|0Gc>G0)kJk$"""sDDDDDD$PoF?W.aq[Dhlx'?`_S˜*K|T"""8GDDDDDDrG i.""""""""""""""9fèni F-""""""""""""""9jDDDDDDDDDDDDDD$""""""""""""""l6ɉ48ACHdT{DFZf<A=EDDDDDDDDDDDDD$g2 DDDDDDDDDDDDDD$'RHjI """"""""""""""#[DDDDDDDDDDDDDDrժoy Fͦ`0`4 q48VUCHc45ݰZ=k43|;$"""s爈Hѐ"""w!,<~>Bll]#66dذe5!9}Gʹ9>O+ٰEhլIm6ŸM eئ^^^X,n=Ai *I$""8GqH """Yh@oTҥJr.\LE(HIƍc+,+W[O+իTb~g_+l8|#ǂlȟE >9""""""r;ш`PMdPmtIޛ>un/`4~;iӪ,Y~CexD{b٪puuO9z= >2[Zc @ټh*~n*T7_LFjT lRIF \GSf7۶`0`4~:]?$G:Q8GDDDDDDRd0[DD$Y,L&S޷X,FqZJYV -dtՊSV~M"""8GqfaZ6ƨnɉ Cj$[DDDDDDDDDDDDDDr͆Q """"""""""""""94`0hHsəjh0T """"""""""""""l6`0LFUDjI """"""""""""""#[DDDDDDDDDDDDDDr$5xXXΝy)̓|]JXC>xO<0'""YZΟ{.q7vU|y_1>@_k̈iEDDDrllhjy}51v<2ݽ?ngk9\ʖOF?&>ZW*laõ?_|F<=h=5+VQ"G'q)U:fH,.:j\=~z 6n 0r8cN|ۈް۰^X_ `N׮ >oGe,T|i0ץly$ۨ#f: )5a' =Z&ڿo ϧ_:t&ԹGs}}:֍ٶ%_\+TNz]5:X޼31kd&l7gO8>~1o[eQ˾K/<4u~^Dȁxhg.~}DZ .JE_Ujqzƴ""""fpۗyğ8N'cpT굈q#xyl)Kķ_{dҁc|$Owp\+Gf}p{^͊'YCo<2咬bx4D\J5<(;Žcw]w.o쯛řq)^Ƃ?^)lqfR:顢n?w?<\kbwL;vqy$p)Y2wiHUy,ik9sLIu{yǏ%>7x?vs ٟNRS* \-""` |^ նׇAʥx<K&b9ҵb@˪4Nԓǚfdb6ãIs\)[l^-,_.zAv4x[o\i 7H~h6ʍKҘ=-cvmVM[fk/?^[ =0j1͆z#7G02=\cG6g=TE8;gWr(4zsUx ^Z2៎ǐ;yٺc"!׉Zc[1-wގkWW{#rBa̕nVPB zzxuF1xz5A\^~5'vl~]JԊŘ{1zVk ^Go[G׮`õFm鑨yƵID$ZΝ%zṙy\ǻGDCK柈}Hzly끯"u< u-[iG/b*Oo1O^ϝ!frGJUl1Շw{sgۘJu-N즵X0/OWek顢xu酫q"/r_ .F\ʔǧKiIm^h4>#("")l&lQ+]阏){OѺ~żO<4z:+|?Ywx?5xa"a$⋩sƳc[yULuCyŘ+7X܋G3{lmn1,%vvhso؄o|,(Q/?nL;Ʃps \LsHxGܷa5gD !6?z2ex[y4Rs*o9YX@Cwb| ۸nNc_ǰw~?w n&m#7r M)`Y_}'ܝݩg%܁J=b...:ι8޿dӏvlubn=h.Y8k{qŹg[$Nj H}_/#PzyPoKMә׹g_=$;۸LTe <bG‰^ l?}!61,HXEi;vMhޭءSgkq뜿`0q_LӏpnwXl>՗hMQ"ϩ.**ݮ#vqIlWx ա3s)yꑔ!]\x48ˢdDա3!É]MCwbNt?H|f6VQ!i/c܆gPvXv g{#Ǡ 'L|8QK IDATGǖ>6{h(y^WxGu %.ئN] 2ۏŜ X6 !B*)ͅB wENEp=:,m,њW2=ޤ9&X8 Wn4q%aqoO @cL!i]uѕu^ k8;JeX~2.SeN;;n6(T497PxV-.** {w"/{;g;s<oaGd퟉ϱk(D-;b Fͩ4x)1+7xOg^ľ^ bWJfVr]u녢W8 | ۈs˝h9)テQ=?˪ԑ(9":-I?Am3Ob|ۈu5pw"<7jܛ6"1>T`Ԛ6*.mЌiiaףB2Z^s|!ޓF&^|!VmkN\I|[YIP6"cK_B_ޥ[ڙHR1V,X3ZMtE+{e]piGl׸ZM ?E=1jFKc-)y"5<˒;:?wҶk hz{qPk٦IGTW!vu<4pBW5m$qW;,b[79VЃ$K~gp'>u,eϾxBd,@6Ÿ;tF"d'>\y͝u;B^!ۚJ3.1/%u2J3x8NϽ{oeu˿ JɓTmmH?Oro|D3ȹ~sY1*i_!ɸr缯߀<:ǸqLܽWNi޲o5z'u}5V|Q1B!B!ďTY#puÎ8jM(y|c;npRιL|P(1٬0jݳO;; ouL[kşAl:|h@ >)S UTvqpۈ9ܹݩ*OQȹ_u7Gk, OTZHWvqk0Dkx\նCb4Z:B߲9Qs۲)g.k2!/1IeF!wռ%mXw#`̈́h4zܵ;QpY1W{ xCﯧ LynLMLQsB[O³6 b~ܗ:t.jfͱKN`"ŲcRKH<5e=Kۍv'V:]RL$Ŝ랡ϭ56 Z:obOVyX sϮ״MO:vܹ-aӳf:qFgDVډYu`?vIVq~3 x '}+v$gpgl3Hbz\c,;][2ٶ)QG68[7j65'8+ϾRzJ>#ѹ =e4Y1m އYcy&-S@Io݌" 0c&Bsb۶tx !?VCJj2xPס5n y`?㋪5L`dDqҍw1wlzKGqpnDyKSG~@NSa=NCwjDX DGk2exGwĩc)`*s)6HnLz .W%pn~` Wթ+Pݽ3'֮զ}+|C;_-jFDXgp˜IkN_VxpTb݋j̳wO|Tr'Lxeٿ>3`8KT>[7Թ<)cF&U9fB!?'HBc5> Ą;n:M4V.OPs rF)է՗DBюkPt_'jٖ%(YىՌZ.VQW._lT_ȗ~vj{ʩ 95^{%D>AGəZ&~.U^7@Gȹ_X]Cx 5+;;o[pV>_oZ<N !9 ϐD~vJbrE^>hc[6%u&oZiwlڔive&ecrSE0괶rN:M1WSKӜ_߅K{#<5g䷪jyö|-[0Ktx+nw?b+b댬=1^9G*66 O?S.k\[/39U eĹa|%fx䉨5&cEoA߯Oo3lcCx_jt~W]-ZbN'gAJ=jwlwPꑈ Jց}w,5HIv(Y |M%/]׮ZOIqB:HW˶wn:{ڛmcr .~<'x;WϱMPt73լJF&uJ)[{wu/>uzN IɤG2g4L%'7'0e-νQ;1jN="sfW_1CɼzL_]N~MEmoL#Mն#9}V9_6:92:$2ķn7"n5_-лX ;)ðq;/iUTPzBoURLoKkH>FޫCQUѻv'GIwpc{A]R &)ó*)Nw툵?XV"DӈXwGSŔwmOl["jbޭVAノ3C!S(_JfGEf6J6ny\Ƿܹ-9fܾ%1@vo\[$echL!IJ,-B) _; 1X;}\#/L/=ј!Gr>&jݮpw>1D|@X^6i6T[Gzf'NcRiîڠ!zPU.0}t(xO; crJ|Ʊ@;Wx3$`{o_/.79֡3~c4g 1xǜr僧jxG9:WT\ڠ!8uе[nߑ|SWWa|4s+ϧneRB!+9j<ۜyqk`SIRtߝO|&gU7jl"ʺMC?Kw]D-**oZj(yIgx ~ui4{/[63YmW#a;棋;Kަ X c՗x qߩ+ܹ WNv&6"UUߩgVZ Ty=VYE|z ?C0"ꃄg@5u۲?ZfQ}1JG~Z,_~z*UsjݎP;LStxGE }0ko>9yC)wOdңƎCkcR+ȉ}:cta#cϹk/P}xa/Cmw^zNyf݉31"+>;_}'"} :k[u ֨17F0.X5l܋VeTi+K UFs6jrjrwqU+싱tN)mhM}3*UϽ߶ٙ~B}h-[y_ U* 2*RUg WuqڠsO?jN{hٷN q=P2 Bć k,ؑ{;lc=VaA1UpCzxb߬X~!B#ϥ(ԂB3g^AÙ+t䩹 ɼ&\y͏={{U=;Ek/1WD.$o xud]Yg7bGDͩ%ķnݵ;-iys>>$|-Zfd(wc(ec߮ddܝO 3L!5H`=EjN= 6\URL=ڠa+m$s/;v%z۰woٔW?ߘݥȾ׈̙MϣhZ߼IcG¥FE2<9`g`1gl2W\\DѣbOF%=f䂿|_yx wYe5_x˥ҿL:Uy8v`?%vz(ݎo^iuZWEHcC uD>8zB!81mo!.ky-}N$up?㨌f.G'㱣ޓF:N::ec}ysXo*Vmɸ*戬ߓ(~Kƥ#7WjvZHM۴_ؑ0WOz[DqX7OQ!SAa'w$<-@){![;L,߼#i='6i_ZM._u7{̾(~nPU25++ߴ>\dGߛw<_KA0ݢ{7u_qw茱d>oiQ>3{ڛOx[gX,8yƗK]Ch+D|֦K M{WdF; ؑH}.N]7c~ɼZܝOX/i]G"~Ɔ<$'B!o!.zz?z3Ǿ`tX?ϰG};?YXb~E3p[otiig?ߨkMR>0 E/!ıc2uz-:*8@Aș@";g3&<]_,;| k pg7?QhMG_/9G웯[զ(_վS/ >EKn֫G`D֢]>VQ!uuJ፿'K|gxZι|U#O?pa_ժ-Y7ܚXN?!3ubc=n r_]an;Z:B!3.!:x*m{'v E=ءw$ ;9&Y;[9V}л&ߡ?0F ]gCt|]L譗 ;PUlw{К3`p7ZD?UR֢W!0:.ys1w6#7W< ϠaƞSe;W[6wARB3oc|5#w~_VٖzWc/"x>|\m;}:z}Cp3/30wn IDATCm؈̫ ڿa#2.wn:KO#0Yhy-2ቲ١o[+D ߙ%Rk& >dw]:5+wdдj7ĶlLk Ҵ2;fPtMxO; Q+)nBr*3ϭĴmjw?Z㦉EqM|2 04߸ rbޫ/W\.rF{΅sϑO?,Okۇ=Kּ%Q~ ! c2__Wg1VzbNʝ&d>UUXzϾ2JV6+|:ݝN =2y}RfJa~W;-Lk`CN=Kpw޳Oy5ZIvk7^KPi3\cbb'tr}NXؙ[,Rp% ZS3;WNۋP3{1EAmkkU[Zd\[o75@޻ذ ۸şmX]X@  n uu:qߺS1Bqu"7Wdy( o&2s:_ݵ;3'C5M`XE|xBWz߁h80OAXEEX< i3gd8iC}:ޑcM{3G;**ĎӰh,_Bdjsԓ% v8whs)~_XcNuUdhZ8k~>hQН~gp\:]0˪5j>`Z&xz~uԌ #O:ӏ% c6{h(y^W;HKˎOwիw` X)eQ2aϐ֮;K&?eXF%t!Wx}Fڨ1ysRX?|_6 BϭZU?O<'+Nxwm v(g0>N'ta2ej =I>莛^o\-[cXVʵw0d>pw| Oݣ7Ý }cΦ L}zw?XV!u^D_~Ot"#q*V|INƥS`g}ܝN [_@w~oޓFQ$6h@'1ZzyԜz3:N jԶ_$ٗ3-Z^3B3Žɾ>\"Һi[-.ݒhg'l];< Ϛ޳WE7|yr?ϐd\t9JϿ9'7!;iO+wκ_~W?_ߺ__gS|?  $?&9Es oتpo:*[uy5iWb_.ռe.)şׂϫLojN}ϧϿ**COdf, n&1Ⱒ܋_b C7qgWѿX| &B#򚣵hE42zqj[)۶nfLCm؈-U W|i2zn(9U%0y"Uy?bbIq~m{H*W6bƝm5pwW8AD́`޻?|\m:ԼX,1UR|)mqr2'p{Aݾz~&S3hRj] 꺮Zc~`'9n6%elh,_Zkl~-LnW" JɓTپېޟ6}a#KD**@ EQ1Vp:ӫ$4c#;Zq=h33_pa]u{)OYe'CA69m4i &]y.TvqpۈLs+R4;5Fg۸_uL/: >䌚ھ5Ѱ N 𲔹5nm(Y' L=$uTxNAWoRh}jqU&z=)t!Qs_#xiwjs6l*fB4kw\m;`Gӌ{XT֕)`=dzNSaOoL{b q V\UpȢh**ga,_LkS!%y$|螡EmHՄgw\y͓:~}OnZO_J.{nDg& ԻD't -7^"pi_kycFqd]}}cr5GxoBĺvO9u]!7o>Nlߺ W:TsU:tnu;l3N<7إ1UT-Z$@f˦Ë!M*.7yWٜmǣT=%7wxQw&JiW̬zKm*b1S3UpȒdTh\E5w>G+*nܳs쐿g!L2' x*4^ !đs*rS%:o.__IxP5ܽ[EҲˬtap퀫u[ YajZsvOqOmqw:>`|QÿrV|e ?RnRnwYG~Npn4"w^G %E)p~.Y ~wO=#iip t2D,̫ܵGk_'D&'=<κjV e tb3CS҃TbDl~Z%uJ3Mo^XqסĽ:?2qM[%B!iƛ%B!ďՄ;nK2xZ8)6צL+߼]x sxlpV"S4xp Fd?xR^wcfeGYM]Or:ʼ+tQ22tC FX5hEK]۩$P*u2Z:0!"2.-]P32 FNT2=2uuD/JdBЎkUpd\pYڣ˫c_ؑp"s5ԛ{v%w4ؑv(4OEωBHsqNu3d8хw>ƲExUmȝBqjt-pw>r'oZiwlڔvejӮ_j9ϢW[[9˄gMt<|UhM{AC "&uxK`$\ۑqf-}Msۿ [jV6ӏu4M쇻SW/;} `߇ڬydf;Wwn#v vqQunp&%O<^U`cI+~?sΑZuiM%榯jz bk;}XK[,\?7S&3P7:ןtʣL]pzRl1B!u=(mKM!?BmZ'uZ^|~2mZ:㚠3~"q;3ŭ*m3ZQLX5^T.mW:=laeWl`@/M_@Ο+u!s*4,Ie:QYƋP{M LDlˆ81jN="sfW7qՌ'CG;aNe.w zmà ͘VlQl#Vᡥ!Ⱥ֔ T{ .~<'(?mnqlf}ߺXiߵItgU deQhIuW)僡yP|EI[Ec4udتa:ޭVAノ3C!S= Uiw湸@$hL4V ]-߹{n_)֘;%/}K"skb;$ec>xZ!B*+EB!~Tn(y.'tzۈQRݏox)|{P'sB2/Nuusf|xޫ_FǡCtg`۸wX˥':HɺWO?V^jM~U;LStxGE }0ko>9ܙ:Ps apVxzCkxzDŽFpD|6"ݱk"'} CM!{K?zz2s)g ~.u#Ӿ#҈"6L'6u5? (^jF`<ݾ#х_{w_ri93߆~*9 ?r7Qc|c"xO; c*gbcDf'W|~'z%קn߉g`(;i!BQA!MkFֵ7zM4@* wMşAI`SgMT~/MpK7\m;[ث_ed\uL}c">GyɕWժ*5Py~9K@\obܹY ܽS+j˔U}Z&ڿz%Bo̫?/>Cxk~?ɸO0e.pF=qUIL*Oʆ_%{W^Keno {|^lUw8|m> < i&R;cWs"Ο4s. $L{JuUj:upS#9hǷvҸ_~ujU9-_}9ǚ6#?U=K%edcP#M{F>1-opF!syһx|T[u Is3k}m~ c}@m'?`TƊXMX]'<3y>ʹ_}=k/]RlYdDF ȜlK;oŭ}m&OLVt7.A/ZPS: At\U{')DM 6 .M*tچK?g?np5oƓ]~T5}ȸuZW'RC)Fo\O|:l<P2aTs.ܳ+QjnC|c;JşwX"sf|y]UYVd]w3^NZfd_iS!:Ը7ڴ#?ZbӉoۂUP=뺛)y,WNzM2iB!N,B,˖QB!/mD1vRJgfUiB$|ۦ3wZi1m(2X 3s+ϻ֎ޟ+ACSԆPqT!swB֟o!4 ղ p$$B!~lFmۖB!B!B!BSJ!B!B!B!)o!B!B!B!?9eIJs!B!B!B!?MeYR B!B!B!B!_1N\IDAT~RlFUUj.B!B!B!ŶmTh.B!B!B!FUUTEQ&B!B!B!Bض5<IENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/ampio-help/index.md000066400000000000000000000152261507671574500254500ustar00rootroot00000000000000--- title: Ampio Knowledge Base date: 2022-10-30 description: "Knowledge base for the Ampio building automation system." siteURL: https://help.ampio.com/ --- As a company that specializes in highly customizable smart solutions for various industries, Ampio has accumulated a vast amount of knowledge throughout the years. We were on the lookout for a user-friendly platform to impart this knowledge to our clients and installers. Delivering a service that caters to both audiences, scattered around the globe with vastly divergent needs and expectations, was a challenge. On the one hand, we needed something that would let us educate a client with no technical knowledge about our system in a visually appealing way. On the other hand, our installers required technical drawings, offline manuals, and a deep dive into highly specialized subjects. Over and above that, we could not overlook the fact that our internal team of editors and maintainers of the Knowledge Base included non-programmers who had to be able to create content and navigate the architecture of the site just as well as those adept at coding. We started our journey with the following requirements: - Ease of contribution - Efficient search capabilities - The possibility of deployment to simple shared hosting - Proper support for multilingualism ## Dark ages of WordPress With the above-mentioned in mind, we built our first revision of the service in WordPress with a commercial knowledge base plugin. The initial requirements seemed not to be exorbitant, and yet we were surprised to see that only a few of the available solutions covered them. Especially, the case of multilingualism appeared to be particularly neglected across the available products. The WordPress-based products made big promises: pay some bucks, bootstrap the service in minutes, and forget about all the development troubles. And although those promises could possibly be deliverable on WordPress' end, it was definitely not true for anything more than the most generic deployments. In our case, we were dealing with more and more trade-offs. Plus, the solution was just slow on the simple shared hosting environment that we dedicated to the job. ## Turning point The turning point was the introduction of a new key requirement---each document was to be downloadable in the PDF format. Such functionality was not available in the plugins we owned, nor did it look like any of the other existing WordPress plugins could fulfill our needs to a satisfactory degree. Nobody in our team was brave enough to add such a functionality to the current stack, so we decided to start from scratch. On top of that new development, we had to remember another one of our key requirements, namely, that mostly non-programmers were to be responsible for the service maintenance and content creation. Initially, we were leaning towards headless CMS-based solutions, but finally we made a bold move and decided to create a Git-managed Jamstack service and see what happens. ## Hugo to the rescue Hugo was our first choice of SSG. The multilingualism support was the primary feature that convinced us. Later on, going through the documentation, we continued to discover new exciting features that we didn't even know we needed when we started. The rich functionalities of WordPress WYSIWYG editors soon turned out to be a curse. It became burdensome to maintain formatting consistency across documents prepared by multiple contributors. When we considered Markdown, we knew that it would give us a lot less flexibility. In our case, it proved to be a blessing in disguise---the constraints imposed by the notation ensured that each document was prepared in the same way. And in the cases where Markdown was not enough, Hugo shortcodes gave us all that we needed to get the results we anticipated. In terms of PDF generation, we utilized [custom output formats](/configuration/output-formats/) to produce intermediary document representations, which are consumed by our custom tool transforming them to TeX documents, which are finally used to produce PDF files. Custom output formats were also used to create search indexes. The search functionality is built on the brilliant [TNTSearch](https://github.com/teamtnt/tntsearch) library. The search queries and results are handled by PHP snippets embedded into static documents handled by Hugo. We even implemented a simple REST API generated by Hugo! We have yet to find something that cannot be achieved with this stack, while in WordPress-based solutions we were struggling with things as simple as defining custom document ordering in one of the categories list views. When talking about Hugo, we cannot forget about the speed. At the beginning we were not considering it a killer feature, but as our document base grew bigger, we appreciated it more and more. Dry-runs are not so common---most of the time we are working on one of the documents with cache already built during one of the previous Hugo runs. In such a scenario, Hugo rebuilds the site in about a second and we consider it a very good result. ```text | EN | PL -------------------+-----+------ Pages | 483 | 486 Paginator pages | 56 | 55 Non-page files | 745 | 749 Static files | 917 | 917 Processed images | 487 | 490 Aliases | 80 | 79 Sitemaps | 2 | 1 Cleaned | 0 | 0 Total in 1096 ms ``` ## Adaptation among the contributors Very quickly it became apparent that our initial concerns about the adaptation of the workflow among contributors were grossly exaggerated. Markdown is fairly straightforward and did not cause any trouble for the contributors. We recommended that our colleagues use Visual Studio Code as a tool for content creation. The project's repository tracks project-scoped configuration of the editor, which includes a set of _tasks_ allowing to run a live server from the GUI level. This is very useful for those who are easily frightened when faced with the mighty terminal. The basic skills of the Git workflow were also easily acquired. At the end of the day, builds and deployments are fully managed by [CI/CD](g) processes, so the administration of the service drills down to reviewing and accepting merge requests in the Git frontend. As a side effect, we receive a full and clear history of contributions, which is well appreciated by our quality assurance auditors. We could even say that our experiment spread the love for Git among non-programmers in our organization! ## Summary Hugo is the best! Definitely give it a try if you are ever faced with a challenge similar to ours. And do not give it a second thought if your service contributors are not too technically inclined---it might still turn out great! gohugoio-hugo-6abdaca/docs/content/en/showcase/bypasscensorship/000077500000000000000000000000001507671574500253555ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/bypasscensorship/bio.md000066400000000000000000000003201507671574500264430ustar00rootroot00000000000000Bypass Censorship find and promote tools that provide Internet access to everyone. The site is built by: - [Leyla Avsar](https://www.leylaavsar.com/) (designer) - [Fredrik Jonsson](https://xdeb.net/) (dev) gohugoio-hugo-6abdaca/docs/content/en/showcase/bypasscensorship/featured.png000066400000000000000000005412471507671574500276770ustar00rootroot00000000000000PNG  IHDRPLTE #   $)8*!&5.#1 *1@(,;&& * (4Q&) /!35" $.4B$5 +9!."0N *! +I/$B )38E1(C#+5G/9T  :9=JBL]&/IHRd&:$0?4?Z1:K9;>)IA@B;CS*:X=GX <6@PPXi24:.23`U[JkosahyxtT-$  6U!:p%>f9))BKe/HumjV=`ESr0Kp\ogn#'Axib^Tw $K0OȓXDXe~~ovWHTUZRUgv(Bplloʕ;^rOurpQ`JǁTnϋVz`O~{e D?Iwo@|f}֪w,Uwޠ!6FN;G}0 0.aS#N)P^00]r 3lWͷDaud&r@5tp^s/#G9aoٮwH@uu=TL1Uֳ<&ZL֩3|`jBB &Ȃbf$bIDATx?ǧ3sPJ,[RRIh`H/H#W4#n&ņd5Aރܲ$;1>a &o\q򛧙{ofjV읙~{3*,!b`X,b1X,bX,bX ,b`X,b1X,u3%X,MkJ,놋ErnfX7[;VFbXWѲX,kp,ڄqb16B[, AbX XN8b16B"t, ^qb`pVLW,4J \" RBhjɨ[ g<;|(qL@> _&2adT Y,aqyk)6Rjla8=* Gy]+}NW/ڂJ~hA9}n}F%,_)N>]a:1`NUs׌xm 33Ŕ;j_XLrL~>b`wM` 6rl5`5c{.I'y (G۰n֟rӤ{+}zG*W{w΁Mw 5ڲ=ghbQD1,j7JyS @YLxCE'ņ NGXE`~eoEOwiAI>e]tUV s*{J: Sr_'/.rs71rn# ȿRQF) گ?98 \:jN|n--Sލ\; XHpk{B3V&»)/n%x&)4_ )  `- 1eģCMn6Ls% ,; y@` fo)E35^" @˩E:*I[r՝wa;F@)ѽ޾?^d~F "PF`NG,CC- ZXcWVc"m*\z r \Z׼ MiLDuOr2幺,, M`8?2TaCķ`PN Պ|? (g0t3Ro'hʼ=SthF>UEm;9^âЗRwߓ)gTWVZ$h={n7dz-҆rlOX#M_X> Xt䟿`Mzx~APP5gC)ei   pb֟yl jajׯc;I|_6tD5a ! ?;f v%`!J ;XwhE+0s?}~q)`Qpu;.s}İ{*_{>N($tL\Pl\XsoD/RN'W/\[0Z3mP,Ht:zK$k.;s(պ=q Rx"C̋xU. ,R/X0m0͵;N8<+ͮ{Ӧ`Ig6^&Ȼ}zwDwH~X'/E`Ν;OɽQm/V>U4B?УRNG^i>` F TEkȿF`aHtpt,EiaN0v}KmmE,-J7F+$. ,c&*N׬\8eiڀ ȭ[$MѤLX. OxH'K<.EUR iJ KV"zeP|rS/9ݗ-'uOB ,HL!&1> ezj(F D=Z W,W…߲tgīEnbjOP/ak21(Fd-v.IGiS:d,YRgS`m HҐxTi>\=)Tđ ^H;=? TJ2# =l Bk&0S$4T4CP A<`u`!_ R#b*_ z[,sKZi929σtVN?? t(WFT09ə *Ӟr`!C& UV,=<7$mJ5[0Z ,sP(k n.0_ K&Ɗ-4P.O+k {N Z^KekHz_![yp0>c`s\﨎P+г,^?N*9Pl$vkVT=`zo_ P#dmh A9݌" mX,,<(A}tn^a͖W ye` ǁcd n+Ӄ`af:br=šsteso,xTO^5%'Q3Q7t<…, 7вWs}~L5~*hDEo./#՜ӯKx}IJ-nO 0-j@'wy8WJ D!BwCX~U`%#14׳ňr][p;Kh>6` ;Jch'7ȿv`c<&$ ]~{▧@`)D5(oTyABĴXnƱ]!uZ/01Ro:K=,[]aE"BXb` $.XXw/Ub1" 9ԧO1tkg FO WCHL5sL1| Qu+@g)t Ϥ6l4M" k,D2EjLʡJtqK͂@kf6 XN[~~Ky[ʟ 0f!'fo Xe(2ni\ >`tڬ%M EƹLCK>H_3Eo>tI(- ֲZ(2JNt֖ kb5Ԟ$5_YrhD:7|Ynik+ HيwZ=c؋E!5')BgVϼ}e"a*{.Yź,0Xg@)DbTF?R`(BG; T,?v_ 3su|=]uZG͠wq/ f 3 vcwizE)]-kk'2Ú ,q&Fyv/m['~%bmԫ9;(<7!Hmsu"K]I2=Su '%CA) psIi,lY+1.ÁYfCnL*wHERaSX}>==f菿7ݏ*: ( 38=S辥;aYqPX4SuP*sfB]%R3aςI8ʡ3zuфE#PF?oR}I uSb&,buMFd+QL̅e (c\Bt  w^FhRRHv=h31(їPʊb(,z¢ 5MGξK@=XS- 20'pu+r5dId|פ$DǗIrtsaeSf*.;]; Bo_XVO| aa;m2 ƝܭK ,wUd.==[@(C+r2!|K kNO C;_No~rڹ Q .iCB1eaɌvٰ p) ZPRw`?R@_q$#&9l-V輬nPkza݋+N_ 'm}\XcyO`ftXl=)MVg M2& C z԰=`TY!'vg܉Z2GYR5 8K˝-dcL0(Vz٧5cݓW b |߰HIREKok'RXmm2h txH;Ù_]3[rE*E@69VpF`xR!'AxNT>Ko1 F9vWbך^/@f YQ': mFB^F"^XMW$,ިo_b_/ $$%Ꮃyw>15&32C女7_ 7+2*ۤhn>NX`ʴ֬Ynݣv裏֭[zii>ጌK%I#]f?q |Jvlij4Vۡr&ªք0J+Yc!bG lʼnUryYqjֈ?x}v*1\R,BQΝV}5UXii֬z^|ŷ"C^0?z"D\+B,X u a af$XfV[.C!a $, +W}dFUKGYRDF@C,/"/EXX_X|eA9Xk+Cr'o MmB.,D_B{f,E+mѲ}0d{WB<:Aׅ -c}EEK^XB:kaՓ!ā+U=5Q\V 1 b{9tbt U"DM`U1Ы_r mYՕ4 rځӉ cw a-<}W\%?)? ~O=槫W'qDҝ+6Jbk̄uhؔe,,`_ׁZSaTE,<,,sAPBt o%h;޿U鴫V!R혵; 07B2f4ObQt?o{6o~7NEwA_Q\XhŊ% KFF>5|_!ZR݃B:IV @KƼ0tܮ,&$0/L:"a͘iYBNHUJHVI-8V!cEkRCXnoC5aMnI௚OH\ l$+YB (ªsj3ÜN'Ю!>7Š'f&,Nc+XF} m(,L +]\ö!a)IpF" f*yXP*VPY_Pv@X-w v_ #,mԏ)xҌaV zܹSek*Są4K/|!!d-='㸌VrIB!N$%uoK$qr"eCe P)6O6  x\<b9/t$WHx.fBU #Uh尔:X%J E2cm2βhI K|%\XlZX4a=Of^k3)p*xs3NƁ_Zgi+!,/XI`q(Tj"J"B,O 6~&2n,.2&x&R @XS9a4<ʼsaU3XJ1ʔܔʪF.E)zh0*Tp|8Zw,pa?"WIXH }HX'|̴+90T#v(tZE)ZɈº;J C/,' $,5*Ȋ&,_*, E {46eJp5\0k( [Z˹":G*%e6Ý}OZhrPuCu> 3T%c;PCgcD Fnp-c 8Tn3nH1L^\Hfԗo⋧.P0xKmZ"L HQ)RFT#&C)/HHSJQzzZ{@~}s1kv[HXEs'H`YaEwx0Q]Z!̡RQD-颌oU+U!Ꙉ-š-EJ +TDŽaC- Mc̪O/,-?yrd"PU4FW>XchbSBZvqΦS}kcSC2u] E\[:T)_lŠRbRXxeYJ)U7aaaH 0Y;FV8G[61@3)A [m B{"VW\<RjHW6Mg8u';?- }K#; BHXSgLm 5xcM\X/8aڿqIC9iH ^c/v/!D-ZԵ˪M&us|<2UV,'>NXGj@Ҵ"DT8+{ m"K',X\%yeMn?om-*ș֤>R_ݩa- ZTXkchRa" }:  Gg2*[eQ)&+PV|2-h6X!$+ 鞴#v Q6JePCf=t2xTXjXwud )y‚ڭ~i Bpԋi":c_ھuHwܓ[31a_ĘeRX'a*WU k0VXu~{&,}QA!XلVF@ /E:\$X`)]`+:_qXL2kaSx6#,\R b'PRngeaF)w A~Ip`_4SH;|@#o,DTw:9V *$Q l?7& u_\԰ a 7 fU]=c*.VD:bU(>66A-VU=/eȒM ., +.1 _qN\wk:XNH buʨ8:d~YstD=慅WN1p)aEyCo \!VZ*"BU$ NmN _=e >ِB cgFXyt'ĦP q-+_gd%z" /^_/,Ѱ ajbkF}_+) pgGXo3DYRNN=a_3+53" x%t K]XEEsDXX!ayº+ܐ8_'h1yi* DԄ vQjށ5*5tw_< @L%]\H^!,Ӑ4)TW.}o&zi9?%GU/S0uvB]#Gv=vDD aMX\e  6K{AW%)7:\XUlYU@s[aBDa6Šaw7Cde_StbG!z睟_cB,Z$牯"cB = {Vx)Q wrKK tۑIooxb{d8K4^Ӥd+Ӑ?D*+x|4r[nm ò^ũNV k߾J ΙcUxqINk.у,<9;{tz FX؏"PBd%#ĵJ.Hu}EIaM 4 NX^CX9aquo-Ҽ;u[65!NX%w}M]l+'nI,݁8K2wu=TǨAKl%xS/!ZË.ef*FSeqzq?!V|a9.1tAK {{-[j5̢~:[J*;l:}T?UDZlڵp]%td:|BV_p *b@^map{R]M *V bYV2aE@̵NXv jlbJzdJ VQaVXUX*H4',Oa*UȣR!'z]=ɡYy[Iݐ2!| ',?v;(;nڬ@ՙ)2% >b!̒yI%Wy9*( ϗ]SbbGe=N6K=g w#,Fv-[OϨp/Ywqӌ1<M*G$B!*>aMW&y%E3N ې{`S4K(씦x*lŇ KXcdK7ѥ}iʛ FX~ҰN&;:j*666 FGk,m^Xx-Ѿn%MfV]W2n+ ـaB1^VUURԁ$uz/K5jò6>_iQ/ .Z\qA/z~YD FiEzbV -z3]1s/ϢʔRTUHSfyܸ:G޻ꆆFrij3=[3*3rs(M!!A<տ-*,?3>4zⲗX㢡dɽ'UX^Vb{mهyj eVYA<9!T(8Nj*90a14O;}P\k "hڜ%& z"8e]^_ϒomzbJ)APnj?Ia}5%",g!e[7#F77Euu---FQ޴9)˽kPGx-ʲxa²e S$bb7o[[+;ύybܻݰ}6s &DX ŚτlM%xږ=XatAXeYșYLSpjƍ/ޯ}G (o1{h1#BIaI! ܛgJy 1K?A[̬~n,shIR#!?DN**]Os,R h~ٮKgbe Q9}2jχo?9{Sa='Po d˹s-B ⭌剾n ),*щ˽ $a뚛ɨ/,("af#ԡ }t0|xaM>)!Y~a鎪3W\=M֎~E_uU|dTkmqfQ] , %!LQG?</Z|>tg'|՛k@W$TX 3e b0V{NJ >@oRXʔ!/'BTXm}W k[汚`|)SݭCA5²QmBCW`{W&O{?'w l_YXȶΠFm q*/CXfj0ՙjvHς,,x^)WT-҉; e?n_DV|'S%U˚ 簮k,`ƃ^V^Xak,jeTŪ*dD\cY7wRX]aE2URkAV [UW#@/y5ZBrEVXXܐòܕꞁ7j5yE16Yn!7h̥51ȪBvcXX2˲i=]٠} vaͷ/tV5"T(zq)2OzjxTDŽh n,,̈́y_v`^[&ͯ4]Qn,6,\VςL-||L Vr;U|ašEXM> ++\~+ gPe ,1 ISг$V{;^3_\0􂬓zd!{f.ՂRq^ΧtgHJ7hFIVݏLm3+%H ~d_;c ]$S'\M[R|̯[פVQTU-BX 녨2Kt#w||^4(gqÆʆ]a IaƤIXJ6a+QaqK5go^ ’36+A5+Za DRuaqYsdzo *U'"JZpw 8H UW,g0vV ^LTXcV&:c!D{EXNX!r&Y_R55J1wfߝ| 4(PV V8Ȋd.R_Er:6،JXXI>.uxt/(]ˀݖ~܏l_D(+MMύN(oa'"#K 5oH-pUW*l`斬˯.~Wkx S7W6v:sr(lztv <; ]tS|Kѕn%]2w KgϾ $WKēPKgy)u͹si8M Q2e᫒Gq7#io0JkP})DPXX'qHdђi5ժpqï-.*f'hnvLlAEњRrg~_{8]9as [EtQ+XA H O,^(gp1'WڿK#&th2޽$whlz ܶ,;tbEv}_D+NW/ΛVV2U#ª0Ol,6`i>eM[O2㔞rUXXu6p]*/Xp+Y^e])6\}c v_my50prV1>ƚaRXsa͟R u=Ϻ(L8WQW+oMNXʒ4rwNۙP{#׎8Ua $E;\Q:~v^^KI&MR<ʦɄ4Kŧ'XJ +a}!]_X5/,Soбv~ tPE>L#7Tj>P|WڊEY+NX#%|`] l A`sfxO77Wֲ\W se -JJY28)/fM_T= Klb!j1-$fSаJ*R[Z.TY*ɳQJ'x*2ls2%#=jfϜA;Úa%Su%{q2h_@`,1$49a"W5AA ˍ#.6Ķ2+ARɯ^ Y,kPzyi .ytסfݸLW'N{fŽ͛Wq/, Vo80g#/<V60{,~p+W~632š;+VX֫/ ,`*"n I$%ʲqޖVl]Xk䚴%eX<#@DexwaY=$VX'.dյLa7F+ aXHC!>4`SN]ua]UU&|Haцa/aa6Y)c2Z7Vw DUI,’-C>l8’w=y7!d\K9rGMŽ4ᔶN7,>6T'j[RzrJZa凈&#S4f{HYN`QuV %^YJp`|Aв(x]/:u]-HɟGCgQukPG*f |l W^:B1.3zr$鉿Fk,1RlvKSg>7仔EsʠCs(r<5@TItU_V='QꨪŠ)9"aI4#¬R~>~h9w/*! =˴J 7d ey\ :yi+SXXWX,1Ǟ v節؆5L,Ҥ߭Bí[+f޼*8N\? 5؇f'u5#U꾾iBSOX)a1;TP㒐BGfNcMy7.85oku%T[mqvKg`& `8R4wRza$VR\_XJOUu+U®c c&G 1L%A  h[s"%\a6e} /FAGuʣ 3ј.f F>#G&Wʟg . V)(RS#S`/zY0)‚$!> ,b e%{ET`RB:4 0L;ߒV tr=r[]a S]UL&DH c6VW6ijs?%J;aŔ|A>_ 8*7Vxé aa01VLw=,w<((?ו#owlaLa2] Jt<+=/j^|?\}l= KO4WE X|0)O JcXe + }|-&7yl¢bRh5M(DX9au%3VJ^{յ2#JSH_ D&[3)7/&<, TX=.e}4XVLaY`b 0kEU[@(~?ȶWrf͹S56\y*jZs:%s]ѕ[ y. bjݯL©}QY º 9aΗa~gsXVE"E}=cV)Iu2+tzR ȧfAVFW:ᡂ5PLS*y#Grd ݦ(2Pd_b)l<+4-p'~*ޏ׿1a}TX*֙=Y%Qa9O} ycTVvڐ z8}Wu&We|d$S@X MH7TW4O~ rCYY(",_Yfag%22z\bLR1x@+ j YHIH充̅X/޼y3BwGKW]3 tM%t)s b8͸>)aF)7DtArL&,C6aE&5lrR+9lZzWO!4rRa}s GXBsfΞLj\|ev1LeKDc+,Ѻ~t+ށStcmucNLX~=ºsV7 S(滆m&"),d` ’|aa͏&šCknTXa[za f}u~WZN%5UL"9x]Xv $ ++8E=U|c,"UT -U?8Hq?BaRX7YŐp kaaI+э4qe>V")B *u-W_ 2ȊOs;sPiq޼ٱRW hswp²WzQ;ePUTT‚, VV_bH8G$֑˗pZк -B^mxK[uGmi3Q -Nk!`!64fAA^()ࡻ# #Ϊv=:'X'TXW_#a%?Ft1֙M]W<",H%uP1f*, ;!uXRD@HX=H54+ vk,o󠽃@EDcntR0D-T eAXaջIB+ٙzIOFH:ڭS]. dQލ+m|骬X w9cERX)4&A*cOF`UkE:w]C!(Om9&e|ZUVvvr܌t z>J5Lƒ+ ,tMDaReyc8.egi&dԡRIVD+,-k&XR|uߒ%/ʚlU*ZLEL%cSGν7eT/0w+s:+ oWXWpC.iN]a M5Xb,%<مI+'+OX=؇a #@ kdC2XZwe4i3 d^ڮ}/9.{miy.|)",?8 ϟaaeעIw/Xc1T]KvټyB6,To\η]vA9$_paǟbawkKQ֚Šq&N#,% :ŠĻ;'J4H멞tҬI6h#ľٍՍEPWFSa-xG/,<",i(VDWlQ{/\PL(k1`-䩳^pykhŊA Y%:( 21fA]JA4%3lyX(dȥ^] EXj48ci㮷\=Xï9 r/1jV Cٟj/O"ATT.0bBi2j0p~ٖpM 0NY̑EYȸ>BrY&֪l- C),> y$;!s>x 7HYlS.8#;\e;,nc=<:z{S0*˞TLP^XJ4Ra)w5V?}v2,R"Y/,Z.*qM")2NXNXc :6 dNXXmDװ 5 ^"Hd#=p܏-Ε[ eKUC$0vUy$Im%JeDQADg#:֠ k{qlyR@<ㄥ+b$/-,] r^y\i%)s/ %`Loڴ,$V>d>?Hi.]|hrY, bB)S4fM&z=:$44fl+R.'CB$"\t"X#&+O+VwnQN \>DY˄X_]0ڍ0BXXmlD[6,BXWJM5@nJ:5aJ/V8Y萛4R^=r "GveRU7_K|hP|uAXj|VXJVVX'@X6U㤏l@'"~ëV 0f+ D؎6Z72jKvHjI &y~ _=$,S7f +aN[#&B`Tu ΠB\;y+!rc*U*ܱ1pn߸VL~ɓuW4:K,4Ƅ Y\!"n|uq7ځ.X^cƃ]aa1axd-n;@Pc[4y4{XB zf';t951).^UX/a+]RƄ)K~IqrKy8+]3NXNXb)NBc1Y;$)ѱa5ttcuu'6Kk@*MIBլ*FXQ u_z؋5ӿ<,ji,/  jk!ʯ]Q$"NIr*nI) ޔwxTY+oXWu'%z*1!t7${ bGfXX K$]oGY a9Xr6{jڡ*ߔtm&e%-)tp|rUflo.vHʜ⌹OefAU\UߨJYńHVXX\DJ U_c|gvpc e ˻_Q'T|GSXb[\eDE?CB TX`3}cVN]VRH6ՌYy[W1:aD)*7*T<DY-{oW ,9o+bΆXK4!0ƳCswxkɒ1j*WX_$(kцK,k_#]igf%cJ3rdl {I!pL=yiuj0 tx$;{N}YIK5y]E|eT*_!uy3Yi.Um;GyacMUeGړS-n2I;;ʠ&ez'ySai^ ˃aIν g֬Yf.(W*uwS|w Q!-͸Pa+W aiEl?6~&Ԝ7YaiXVWq"5ZOa!+kj~ 2<ԴYGUfJWt[Z |q`5ΝRHU,^@ eX5)@,?,D) פWm_9r&ʂ^7{_Ȫ[(KTW',Ic,SVfh> ]M;ʫ:iYlmoџ\K\YDL6n}]Ehn#ہkBXCk k2J1;_^!&qVJ-Lw+/'I/,7"EƺbU!ן^:;|Jga-5@Xd܍R֚_]] ܭĵZPc]DyehNW|=[up+x/,H^W~b)؇^W,BHKc_3cD=>p٫?7a8aLa勰j˶oX( X^J6sd:,c[VV٧$aAg,RU}1)*yQUkgyv1\w^h'rlTXR8=8 K9calԃ ǓWIOrV&&xjw}wމK֬W 8\6~GDŽ",:>cXe`W$_6t`9]b! a-{K}aeq:O-,X$X#Gzzتr%+U֭Ԡ k0QMӕVL" Fǵ}ݣc=]=W]g |goJTՔ1Ҭ0¢Aծ[uUo9ô |r=z1/,y3KsrDX x{fCg"cMY gTtC,',|{u%>rzx1A&W^X2"\2脆l w+_[d%Sٻleϰt0L!5<8"+Q YZW:E_:aAh;X?xԧVo\hUjiuxiR.K3O* D֖V52ZW)h )mckUwg /56t#>UΨo%YDWeL ]KXF KLlkHWq@X!kYadnQUVz̴V`*u{ k dc *&"uYy8x7&2.eF/݃l,E a`cNOIrleJ 8@W!aP8 *###mc" qPc5f7 VTYb!M aO<ƲXa@O`a6X&Π&?KJJl+]jZ 5EEJjeiJ琞%EKM?[Pq>\}ɜ;eEXVMWvb).2'ӚyA"f;BZ"=5}VCx k+,(KQ[:ok+q =Բ'ڇ(s&Hev&F55wv7s>;LC9?\ZnX:|:c8MB3 +kJM̙yIeѢ#_dPNjW1Ɗ6WqDa`aͻJ 'z k )I'^>R 4nEm$:"pIc]F "]$鏝&~wuiH'EX1L;'O=TtA"B"Gq&<*LT2Eb5-= VX).xth,jNIXTK'|T3ᇝ;u$aJ:)YDE|Jڤ7"GٻC$1' b\1c,X!X1VXOb} ˝"2ԅ4 I}bHxgmXݕ#z!& 5ªc-qm%l2ˬI 8cgi3B2UڍIA1 6_gn'5[h, ˞DǛK`]"=tw#t/^Pf9zxpޔ?'a/,P5az[I7NZ:Ԕ R](`<ب;=kѱ(mjM6Q蝬34 ?\i,ryU!a-'*;~/Ȩ8|x1ض]ѕӆ/c=+VƢѩrIY; :vŷO}zLX0w 9U|3|uT̶kA3KO% dS|K3=,$z-Ba]a9_ k|q^Xjc QyaiI ;5k:ᇇ;X MWCJ@>tؓ~C3F؉;ARRP ˓TE^Xf9A}oaX8Ł vz'9@ӥT5@XL IJC$"> WKs'áji_3Cnmv>%ƏHlٴiG&6<^XiA5}6iN̘̳KX@E ݳdB@(c峗*)k)$Ϝ3-PnW"չ%ZYT,dFY>̾_9lɲS3#>݆̻'sݴ٧kJБg.D ^G(+ QX!gDubf%7K:[_@{bhK]J &V:*:i2Rc!,Rt/m[m=OSu^8za|QeO=f`z>aYPS0[4J a݉ a}qgRcUdb$d+Ḙ W_~_>`raNX!a=z [99>__$󧇅,AY[)v"1LE`,SɛQN0MѾ‚da ˗R34 kX#Bw S0Yy,Hgأsyo%ޜysf٧nHaMaMPX:/,NqUM}(",FE PaªNa,wNɔXc~~aQ.=srЉ |B]|’[gFX. +a SSI]gva!g(W)#}[_ia.c aa,ُ+)}J̼Y:/{a?VX[",vb]ݛvd.v¢DK4ĪCXX3_?/D+,aUd.ScIݹQ 0b++4[b)paɅ5f b5<&A՟kd kV_TXf&!0V- fL",ZwKٌ¶e58AU]KyUUJ KLU$}]I.`a+}0{n/r¬an,tO++*,/}] kO ,Ny8i'@B)xd l؍6jF' 0W6X*,y=5P$ZeHَ_Сch/b!v7($TUaY X({DS9̔I~ _YSD0s-,-ּ9RAW*'9,+a=ğVXvD) k(W,xv5a/Cq.زj+yAݐpH+lKWU9 ROUS<+0V,^XX](*+%}NWj,n4ѕ`qbwjsg_MWRKo@XkDX34rR_eNWH M:$FI7: CUWchhڇ~՝fB xXv=\ycǍFXЮnS^Jd+,HIXQ5...'j!+T0ㅥ򍑣$ K 놗̌>+iW*lf^'k\:Z|KVVcKk"a"|_(IJ*-Y&B5atsTHjXȄU֭x A+V^q)rcYX 3 Wλbox <%|ȋ6nR :6T_a_XQ>j>!V|S-`9 ^XL@X:(C15 'M3#,F>fOg`!&.3 xغSWe:-}`\*sM/ՕvSY}xD9,9RQBLRBXj,n=}8sQ 8_SmM6a}l+$!h/=o!ay_ɹ]nc1=gg}#uЇYqY#pBy4:"0 V0Ɏhځ 7k)? g9pxaنZQW{eceg4@ZppEZu8eKK\#Gwhw|H+,v.Wb,1dcC,ƅB9jhbXHw=LխZ|-~N$]pPikwGXmk`w-1gYOz7҆ Z.p7Umre3RcU v=xJm8+z˷ +ubM KͣftȹaY^XWFX$cسOm?V`,?U#,5R2Kj~IWb~?",R||[),at;Mn#=<"0kt΢B@"Z~d1[,jבnDtB /SPL嘰͸ xay.[(K-ː:XxҥYYj_ oN||Z1VC`|VRS,mO kUu[d lt;hg4o,-RDlm\q%DkNX<aVbՕ@+bW)6U8šXn/ܘ &&n/j5R:-yl-ߖPx ${e|eynE+ ^XVc[g“\g!,E&#!VrFY@hͿZKi]@>VVOc77>-Y5FX^:8(x=̵6κ 4Յ`e9i>c5M š2'E_Mme 8Kŗ12vXk6%6>%Kg]Pٴt[uwp@obR[2s Xe[ɡkMnY} Wc#qJ^$jh0ƲʊVXh7N!aɥsJ۞da1qz"RaĠ/s  륗{THw᧣:n}b,Pc{B \re%ƒݍ, $Xʛ)J_KS-VHRrzZ d HFe:2lݣ{6~02""ҡx%zqˀIVXayc .zC**ZV !r~YnlZ[N*>5H (c}e> KrHܯv32wמx\ؚy+,DdC,9S*Ki:ShuX𜷨W8ۀ"rsU|ڑ#G}(VUS<FRGyၳV0xF@'!c;f^t6+Q?p{4a-0b@M 1wkuaYWNX",kKJM ]_[+[:(9 -bI4Hj]Xl^T7{t`|˩KUV0sBbNVͣ=!cz$V1\1֋Wo0f0D)$ nH( |_g \m~[h@XQe2nzaAZ/|GN#=)ac;,*GCUoEaY_Bni>uVw#=cj BY*{˶ʮ/r1z^c-, *Xq"ª#T)eb  LX#2UM>RUVE!AXۚA`TeaD WzPܨ%eq.IXЮT+m@!b-2㼨HOȎuy7$ AK'=QdzXm@,o,TaU)Z{UrRe.ɟVZNV2AF7nghulROXꄌբ6KKEY2ѱ}{k6E$q 6h+*,,X]pŦaACt4 j|%X,W!OjS~gzۤ Q j2PVc/ٺ[b D 0ӕW A;*NVK$W'Š8? VEe ᄠ1ϫwjjeLNXpP@RaQ^Tde|Wah8!cCq%]M^[qXNXߗ*"V#,IQڍ' eMѲܙ38_yaz_]eqȑ|Ձ8O[yTX,P| *X?_ԅ*,|e{ GTzccͦm& {`V6T4|?x9,,TEQU} tStL 4m/)chw_krĒ*gXHY5\H=?mCUOAqJt)48qV? _m}"+Yj)9SMwoQQa( ˫}%Rªo}K1U"|uvD腵F%_e|ϫ !, Ƃ+pz[Xu>:*E"’8<DXA9hI?Ά+o^Nac*’i .Y4O]iSz߻ZI NJ* U>9OK}%EG@8a4+rF{]^Xj,?* Xho 8ي e0 B1V X$4q -piz5$f>3U{;.:NXI6Y7P3`ac( HCiGvGfB^x؆BYs;<QP@R+,ZᩯnHϸWO*,<*ťt0^XoB%42_Q4|a+٫mZHvT?Tu E2/^DYgIŋ$ Kٮo^ҁV,Ip:~ U|cN@Aj`viiCE@-oe}`ṋ 3 V"ww=+]&Ba\@9/? K~4\(E +f,|YDaY)w2GEuw} 2khK ^2]h=|R^8#VX ԢfÊ4&淫~I#D$?2eT+-6;,\8c`fe_ssYbc8p`k=NDžqR_z*U\XI[DXq&OP'+~#zNVF+}5j,UTXP HŮ[tN#"`A +LnAMVnq;}E5X50`MBI! \^(=؇6?|vv+UJuRQ&JLť\5Oںh^aUWr]ch6&*s-\&м?ќW cwPg$a`'S*wJ.,lb:짾4pI?+f0-p3 Wz?! hk,:X'0x\#$?[~dcb7pK©ˉWr VjhrTX+{.`kW1e1VޘJcUW!ˊK扰f& *WS'+%%UTiԤ#\H5H8M|Ѥjjdi]h#rQ! a1M_\aAдX- R甯;Wz_~Tu]mp(ZSYs!Z+ O,'zijށR|6hRG7֭$1'M8ŗVvx.<)t ˀ)@:B9cCXl8KvV aYcbwɧ3N̬eDX&r’jFX?>TX1_1n&oGk+2e`}alPDX|uO#.,wړ+',S|D ЕU2QE| ]",CBpd7@%e#͓ ,ׄ šY<Q>cO!E b LScKˠ[j/jT__XlE UocaiΨ0h jug|йPdOE:)9C˰(aE Ͱ_O -mx}qemjl 2A3Y$PD@2/@Fuqւ *-(MoBTXj,ij*-_pUՌDJ_AfDX\}k 3tY.QcYa5Sՠ²=}&BνY'#HbsWaU ,?"4Re%"!rB|Ɣ2SX8㍅X]ks'=$n5OT ?AdU2d9fIm`z4,/,1``ayaYf_ >ou= R PJeAU0'BZ5JZM2z"<YeTyn1+G~D]6 +e)* Xzb,_h=GX>ifp&B{O;!&Ie2x``AQsuI^-h54+xbpi,ug;X7"T¢Н&^ru2^ƆӍ4"S8#ՙ[ U%_El|_ 3)"qXc9ayZa1!A}9KT{ ,I IUš'JML {&iERMVX *uB- ]VirϸKeUbV/ܘ+ G#QFc+ TM1aYU͖W$J6%sJ+GX} {[DXb\aiJh`\% V)`w2Ih]޶48_鮂n '0%D G",u3oA82g,{š> a}jUX1ºqB9Cx> A7pҨȻjDIQUY] 2΂cm@X>JVk;Z`+ro>~|ª4”V5Y šXP^WªwVX TXce@X=SHzATX^W5+,$,WѤ;/\aZ3m2̦F@mzb #y7 +,뫡m)# D6UYt *VX[Tr2W77;)pd_p%\c8ٸ{ODX&ٳ^pF}#H_Gʓ$5}5*,+[!Z*y5wJanPc!'DhK,\~a륬X$TDq[*sL֛Gy}]q]3G`(f_/qa1y*<3b /\,S5}]~J1Yc @WVXҧ>>}Ȅ}#{wog2| ,(ۗN/BF* S/HgT֑T7% }5xDVNXΚwOdz jTsFK&sTc =kC#"LH",20>ZDX]ga52&NG^XD9dU 4p$e$nsX sut(g!Frr78ztϸ!nRa !IkZ,a~[DaLPe#/W T[O)^W~2aN S/ˬbt:0O}E6+J%Dԁ2DX>>JSa>yb#/Goy8ENxAacf@3IGobO_KO_[UXG" cٌrd@X GX|ӝ,%_ &`" _*,XYLY%*,@Xa V_!yխEՖ9a656Sje4|dx:àύOTL)2WO+Z ׺Z_ ,7 \ Ö¶.eZ`,ʋDX.Q0߸; kEX1[YV~Z̖aa!]a*Ɗᾔ*`жv4Y82,J"DebEuhS)ma$a|1xai*'KLWCEkGP*%]WSgm;lXX'?ҹB&[aUU W|:cc?MmJ ҼzgQTaaQSg[/,Z%Wtsqt0U֌4п[jZĆJfGUъ)e rJ;,occ2!-=V^FFPџ9PUzDƋ Ob53ztnTXjqau+nRY97_w=*PX~oO+l,c ?CU ksl rU',9۬#,4K`b&Uy[:6Eu*DX\s6\yUv(֠F^-??aun0}%YԈ=APKYNXn]_Bl;b*5 XʳLYj&ꥸ#~"&#,c,|!Ί?eATOk!=K;e2*dh 5sMxU(t "twH^XUX (qaْPWz8kDop7ax{BR^URʃbIuKt]-z, MeR]m4ԵH014"wsaņ/Y|.+b{|c'_}X,8>+g [#MXJv,6 r5dݏk޳нP.wM;wnTX+S9",%WVX)> ,a񕋰 ɳxcir_&Tv aexDX\r(gg x&-Ƴ5Jn&v>ynƌJmG afH:y>/,"kt`uu ,=.yRf EX a/ 2<~; wS:+,^IѣPDV2&oEr36 ubZȮX/gMUY i,-eb Ҙen U2 m#z wԻ(+WvNL~&B XHg&%k37mڳĻHS TL>.:`,jhB"9 A?>iqWqaAXXay_M?# ;0^^KJFNKR30ZɑL$jjné %% scX^~D1FX%gMPƪac_cReEE=lX"+ᄕBXBXX[GAXtq|uaW EmkA†XMHEbXUXVXukf$&{oݻkHE'Qٽ9obi?E2w=I,\ ez _ I k'5V:|!qBX^W@5t!2Yw'6} zEJr;",KX=25c]XwI} 9hYa|X%qPDM}T>ΧpdMf:zeSSy#vNu?hZ0!,ŐPe@/kOUafG͝)& Ky̓jc!, uA(IRi+ʳKtֶQgk A',qՖ6/WJ`{eBVa'uVaº \L|=OVɘ./!,(PX3~;$\8q‚…c#S;hʭK-nZRJ$kZj # JxY,SWK\;R.sR*]WR2UPG:9a\xv r^yuU `ZZqEW9 ⌧XXEX#, ոͶe-UX+eE&kU+JO{?~\9u7!ƒ̻ .B ,b’yBPe j{e]]kJ⪽Vvh)"ȒQ[ U_hȲi2Yܷe7`E^H2I%b$%֎_u&&,R1_!!}ج'_!p%6p5rtyaŌtLHX1a' xDaI ʚ*MņlBA ʢTx”"EX."F ڑq\*c.p%r7]$Uh}NI]^Cͽ`a`Pci|5+,Knac,)% +;@a XX",z!N#f [- y*~R Mevc!,kVE剺QwC,#0q])]x]qV;<˖6_MVƳcOy&X-28_-Ud +n}`nJ֡Š , 1*XBV;=Wۖva+S Y>_䝘 cq!y,U.a\`52+Z]ɽz<$;ARӿK|ʜ&!,!&, t<"Va*YX@X&@#*DXN.cyeq,o*fs`)~15"!! Ђw騀,|ºjUʩ%汥X2,~TXZ!YX0@BejM n_v͵ebtʼnIQ0IZᎭx\v`ו:?NR Aj؂wwS\τW$Zvw"BJ+ݩk!2Y madzP>#,96r[\0֠0?a1"$a}g.:UtDhzk ,,A+A_GZR8h. J-ht'fQbl4HxMY`W_<F0q_:‚ ޿aYL&ʛZ7 @X"Ee6r6%ٌ͋4ֲJ6C6(\_e*5KSOE\\:񋟟RN[' uLR~b!"I5jEt հJTp_H)unI]0E'OW]3erIs6 m]pm[c_>jZQ``h",jߑBW@eW|p\lL F!m jvM :^0$,5+rƺM'R.dp *dP*#B;z8"罰  ٖ?Jho焵6;A`lSvɨ;aXFX:Bύ6{K  7\FI Y+?zVO^y^e݁qKN HQukg".ImێgK^tjઽpat_5_dz4 4yDXX\0"d軞),ӄ<kÛo~?^Xj$]`x8 pk 9Kud"02 ` LQ$UJ³[p|[~vwr9ū+tNg:YvsxQM"שܹͮnj8 3r`&B9jWPZ| ŅVoBmUSz4;;jːȒGbZfi_R]9'U uGeī"55 AR╺er`Yx4Uj]V]Ѿi9A[Tb3ZP [XKrf2{dȊw3WuAu7ll|BKcP˦)`u:bPAI.U`a:b`剕x>bXph* `P3Spzk,Z>-\LVF)>yf8o[2=3 0*oR`QH&:Ayu3乩,ŒX@ (Vb/C뭃^ez ,!uMxX`jBX aNS@t}e>ԡW@ۗ/UjFUk'%lUhѰ*]"ؑ#p8]T&8'˼ hjQ@3{&y6OZ+*Ys ZZp }Lَ8e9OsM 9br&ΉIޒG_YWMWUJUV4xWVKE f)veZ-U-ShY»&֝W!(`\,,)Xxd( 8{1}O9|oRo %:' W ETJd!#?j9`ɲyza,UȪ, H EM"nkhYfxU^!HpUΌYuWG;v-:oTB*,N@`((+-3E)7zˀOX}udoXr,u@SVUߤ }zKtXC`VRSb]ٓPim,*"_~E0sb) `n0Vm\%l]z W.$֡U֮"#k Xx-k:,Q XeʡONF*Wa3Kb;q~ZXQ:DJuܩNX醀+G9Kl(E5OSC\6+`avW3`qfvkRc`Vʭ2Y 'IKEղ- n=͘8$HR܌8`F%yda%`YU+ bye&u4JDl%mGX⁔;>xNxƨ6X,JؒQd`Ыl {G耏e%^a`ʓGNtv( Q`xXeb07끕p.:ENjB,ȫ+! X/%`YrFl«DQ=,Yd^,j qZyX%m -[0 V&czK MGǻ5b~F XW^VW תFc#y9ǀHrgy`).!Q#N;V3U+v&Qp̲T*ܐYvydݧFQ?Y%_wB%S*ђ'fp:7jլbͱ F HoXUóV TRV/"~l9k+dF,VHpb*ݢX<uy`MAl&D+ :;X2 M}iT & B/-rMeV Xd *f')%^=yOC]`˺p%y %`aؾWy\`$xu!x)"˖`gWS+WJq, P{pݫU@d`b^I"VY䈹q^r^M>2d,,HvD`y Z-, X 7m7P!jD+Y]۷d :p~i hˇF1m|yVꕓ) XiJV9ǀE˛_卝`egZsMHNPOl}(ְwa3F.vjɓ:reOAW)0,OsK2>% ^y*b™K(`uu8XʀA+b;jh\E`uvt>8b"REՁ7gj9# okv8S%#>WLrDfWiZvˑ\G <bsJJhEg]uXz$ rӘX2Z XAR=+Us@x, XO<"̝ "3` c-;lyjqr XI˅?8B,l ݉E X[A%QJPOw}F+ء e)ӋAGb,ü%YWۚfbI_sK]A`I Xc+XW@(W*/ Uog <:gL,5.^ћ/ir(Rh݀%TfYY, 9p}$p 9TX+4Ę_XWk X)E87,UM4Ղ>w--ϧD-LULKBWJڲI•xx/|Bxm%XI$ VED9:P=&" JQW#DJ̀5+ֈ#Ps`Չ1% xU %b#+*C&O&!ҸaU<* b[/ ,r̺PSG< #^A5HO51FKpϪ|P#36+䎠YR)cvmEr`Y4ө3=j\R47`%đB h+~8xcz:`E!;4V!zUڐЪQ'qC~WF^^(VVL7+ o-Gr`XadXJE`Wȴx5VP#^%ʖk,Xs֟|WyX6pO+eSP"V#`,D*$k ֹf1%XkqXXkg^lU4+k8}/,7 R4E+<5He^1YcP,ZKq%$ 81'Wjؼip˲.!k&Nyp͚hc%d`BqyCyKKܧha+$_PV%%t@VtuvtD-x5P"+1 ؒ`M& TW1Pc(0YXs4_+vv5qpLԾ) P(}LWC^үՋdP uqrї:̾EIuzaғ} T5,ӊ|}>B[/Ͱ\GeVRs`]N1 ^eyہU.1 -MBXuy%'`3` Xl$xo W*b?7A"Ű ak=AۉBޑ}2leS-'PUִzK%,yKhK Y.:|ZG,44Oj,98M?!S +*m K `w`͓5,nXt̀eivOH,;x j`)2Iq?73I8YpglQq{,OE>;~x~՟3^١a0U ( Ð,o%L^*Wn W, ++tIXVk UkĢ64G`!K%\:3U dĚ XKX,VEb%^,›ԩӱId> gʉ1"'5VΚ4UO TlOuiHB3&yȋz#N4b"ޭ6i{trto6p`rYdGM { XXX٬LS+A3}] X,l{ pW>G:4G(^j,ixbJ| =vϡ;8cS֖F2Y!|bCm4GT =oۭ(6bTXtTV I‡WnMkxF = I{ B9}wr};51rB en:&::*v=ī:y`/,,.'V!ᱽB,jGRxE X>U{FKQ6 ,CL`x0'knXI0;`- X%d4{7ś6v'*EJ.X+fJCX,0X$[NmuPjF,~bV֔UWTQ b ~/ ^:x0 }bЌ4QtSwTfay-}^9~db0pPFŰx ``8EFF-kZgZ8:'`w`ThT)׽h`X.Ju2`M > b2뱅n.X+Nʊu@0PI m,K}< ɻ:«˦ ,)\ bu^jcJBX) +ɫ ᦆW2DذWx cX*ked_!d1^R/@Xfb B,۬A'Ī,%J-`Hj؅!&2ED'Ge1q~E3jxs*id>J:\, 4'-1>`O X+m2N {!e?zK輺`+)q֗y`YVR+*4 |+b&ԙG*2q0XX8 YLf]&ZOUv*= X*bI1݁% XuyuWʁ`)$`ݰ5/^{]g|M=*|s;|--F;Xل:uXµŵ ]m|oտ VUGU}wRUSlZXmj,pU n5E"2*KW3܁DDRǨ$)-X0V"nwb`mC,Eׯщm9Z}g0mb`z>)z]1PomD:'2D9V*J:pwCI9 w2کseRǫo Xl0q*i^!g`²j| ؠ9_ zjVPX]WRXl`X\ ^  bIôD b'+X1" &`y\Kc٦MuXMKlaB+6Ixb[w_{q\µ`j|ZlhW*[TݺVG4BEd* IfJ0Ll/W"֐T&`q:J7 +KI:b'U VT,' $ 2}lƭkיmCDۉ^YSD޺^xlr5H"|tKXXX,{4h`+Vu7W

        ;%ۧ)K(`Qd̵RWU%٩jٵ5&!?AQE` X5WVPUS`WX! U qR ʘ,MN1ʍUmyms d,R Ky`)ܸ Da>&ҁRh"X}i~UF {z1DCOXTH-%UĪpB<~ϱHTd!BVr i&8K&`YXa>R^Xt S}G"]jj'XP742!x%0dHTGѫSMt`C{w XXXYXTV6"h ;)80Β%%pD龌XʥHUk%R#`%uRsgXQbbkf[؜Q gbqj1wet*،TdAwS.k2uA(vbo[CX*gZ#1#jfaUb,%`\Ƌxeb6E$o~.\Ŗ XJ:<%^,k# ū" `X Wq&xuFx&D<:,l0F\n;դ)`QTq X бNu%'ŀ]˻/(BV3U9~cJFTT i4*t%^,uo&߻ <%) NxUʍ w%ݘ:%b4|Y1U;m+/g9#XDRPo{NFX[7a [:/=A GrnY\,kOgXlGô#H1$MNh5w`ab5VR3`=X b4I*Xu A[hTa}/k( ^00KWīyw&bŨ| Xm-p`6WAIt9S5aFE,;ΖKIb~SuEMU "K.ZeSN,s=k9H/ƶr YXX.88kgYGƟxaGTS X8v(,|ԺA[ X5ŭ9K nX(x&2biǨ+Kf5i[$C*JV.<W;n7^;L XkXN,eJ7 kYXƒZjsViCrt++i-lbs֖H'5Ib?U%lͮ%v|7#! SJ}=5Xn_iqvݗ !Y%EGp5`(V礗YIk+Td VR.5+g+zWHYXX&`9F,y'{('noXq-֤Jm߼fh-̙†  q9ꝣ1b RnN3]+vG&% y k0ɇ?(K1Y%\5NWdG`W X}D<5ѳ*9`^߼AUy3Dz`uu/b,4JyG0 V24b4]ڹw4`" ?2czɺd}[u=Xk!eiCMwG!Ux s\׾.(םVVF/|)3h`%ÉU2`m?/<c,bB #@VŃU"᲼0%v-T_w߽ti$UEZV>|ࡇFof9h7G(gT#D ?$IenFw#ϒRa9$h,Y',L*j>xP%Zto_:Ʀ/!&,ʉ^TА5~"B']fږ!Pz/ko7f$>Z8v\ݮ/q}wzya$\CV$YiHТƱ,>3Χ\+n,+)# 66bK95D *z] p3l#7ٙYd;3;;3;~ށO/I @Mh*K][;=*1,0$X[Pbp5Љ W!Uk*۶A@lf7%3bqոˉ5>C*qFĮR=AbKU%!}v/c0+hnz:衉lk0R´Any? Qxk8e_ae-1M.zEYR Xiy99bI~+* q}V5$\e%^%'a:`+2V ,[ʾׯ%% X0jUPs#gkMá^f4QX2; 5VO#ÂV9`Q!}E`Y6uM׶^:XpJ|)`aUZ8k#X{̤XSBWРCӃK⁍E46ca[4i5Zm -EL*<[>MXw?K[7RQU2RcX嘊W ,}s?\zgT!K ImĒy p/$^!PضtxXmVW&^!Kk b!+m/3Oy,-g&&}Э^[ OE^}3U䕗+ۢՋaAy` GzXQ:$- ,H(ЗQGy ʕK.`aEb.}C.%9zqX%+ A ̄UѾBKb9E)wRޱXo޽ '5y:BPdA.%m*+g*Y',>l}t°2?N e%nRkϟ!pjX^|%ցuX aeKXr B,$b ,W%fj2` X|LTX[39ZeѸeqW$Xf`ejXWVUXU3ʁE*K(6,Xڮj:E% XU'?jwouefVJp`@Xt`aDIm45b[ V9bFPEQ\,^a`ysrF7X_|jλ9`#X)3A9`=sKWE+ ^17.T b5RRi_^ܶ->8%q<~=ebE`Iu, KVXU:? WMK"PW 5X!D,//0Eyye֖t Py X~`WFN$_\֮ L/k`!srL r bDMʴM42 F˰jsrk';@{P[UzXK >XY*.|Dab`u{Xؕ0ݫbX2U]ibYX ;k%`IkY՚pJ% WM>Yei >^KꖔB,mUf]S`,m Yq| %RbfNklȧY\f`i05ÄdVUޘ>j6?JϢ9x,:6˭,:ϛ;R XXX.IQ ֮A jWWC[-xe}S;4?Q40+Q[Jg愊XIlYXR!PU0M,T, "`_.+ ' R}B`A,f媔RZ-y$NZ6M}4&`AK5R ZV!)VXۋRJ3`XRWVK qb`-`A,X|Ƽ[Ue4s倅+"GL'䴾 >Ds;Ȳm><>rtǫցʳ0WV8Y&˓L-݀F+uoC)2WW(ׅHPJoj'ТHXIg$5UXݑW|P 5R`VIk(*dVVhb ;`WT(N kzQu\v`YŚ76M,`k7P-[jwCȴgnXlZ:H|ÃX|QV0IX*>mnS\˄Җ֫4!Tky7CֹU+um; XQ_:9 kk0ၐ bW,LQĔ,'O[}a ;ɘX,NP]enWbDN+8e8j? %Vu_wW7ΐV/?\GYT˟WhYoj( &r X!!q])>֡>j̫j3EVeLPs;?qYQ*GǰZ_.\bH#_T`պa͇7W_ͣʋ&kuo}evXdjЏ́>)xiHaE3%3dU:Y ˊ|xCV]=8[gfWML q(]>e4X^񊾩;-F:1ycC{a ,x-wX,t^%:NC,K\jgс#PVU,+i%9NjYEzH,XmD,KÂW3iׄ# `*r祌D Q ,e"UN 8naJR5&R5,&8X*knJ*6T*́bPi+`X ſB`Ieg+FRqgB#W];+yx$̠xuʺrZ>-^ XN34Y.ŝBW!^X]_r8c1f&VwS`=WtE\U[To2e*"f*V<;X tnr p[Ē*b}6#gfo_b`5m)E4D`aMå],u``͚qwمgf& ϐZ{_U<޷XԖ!A&A[أֵ]kGXƫ&Jw |6>],U%.&JHK,Ý%VtZ:*\kQ4UU*qsL+kJuR k ŀ]V j%*ꒀSRՖ՝FX=,!Jkmֶ5$4oeXX`QjHAKD14FH-z+4HPX X^!?x<#ƅ: lݍf #Ȣ-S'MrpnX*Eg}6z_)=|])`:K+KC֞X GMi VonL խ~,Xh|PÂLmWl4_7 VCucU9*cV H-WXȁBR=G, )\U/E^:#_6)IuKKĺ|XAئTwF/Gi X_Y1C~!TTKºêRv*B!YTl)`CB`mVaKءЏ{r `Wܿ@B`a_-HW  @d @7ȕ ^xZNNNg O"uHʚ5*b2!)seY61*H3,JG̫>EkZ@#]w5ī<B`}΀u^yP%jZ,u+Xң*`IWv p%:p:BX,݌b5X r`uKẂ ,1XYE몁?]1_uE`le֐:5k1ˆX[* WOѴOs ,H]X\^,9Hʁ5Vxں X&h߀u&+A(gJo>sp҈59n')CxXUA`&>@*xUI ZcM@l XOxc='_x[#5҈'V(d8XnFj3lT8K 2!Vz%!3{ B,);8 4yF=}#XypX@` UFzR,5$ uCȫ wB@ˁUQP >!=':38=/1Y^E`i GXrP)#K pL=^%t?Xܠc͂{_Zʜv_`y6˱>"PK]#P X !e*IGK&VXDdx>cAo.`\'@Xƪ ww`Y3"C XY`/iB%c_yUuEbe".3b{s`KyXeZ˿; ,aO(V8nqK IX Y} `PTO7YkW?GH%(E`I~P{s `yj`G 4]x3/^}-%  (Wk4.*p XyˈE|ۀ'D+Xp]-_,p)Q2NkkXg^}2֭% rY;|XC+4Nxpcc9RbGDOIK!,J,U B Vj.M1.WCQj Vr Ҭm|gi5++MAk||qCO+Am9m\~BK.CVU+99V-Kc}XX9X9hH5{(ʨV7t,SXYVEg"XX5ĂnEhBBoVצ*[* H < tf _P+&6%P%`J0`1Hv b!ֆV<E,x wV'zU?(*C*Oocs4z.XX$RQf5 X[J&BeS[$HX$Fo: :-*x^IBCA|%xvA Oe P׎iqXC+{ϓFs`1XC>&XWX[k5 ä́Fk~r ,j`%6 XzʦKG9xQ >QXX&& mS+Vw*AW6Xo [zæ+ ,p/`=X a$\IXnc*68l.X"G/N怵uz決E4z7n'@㷍רu`W*$)# bmS^|]w`EbEɔ(gPc+SXM+KVM2HJxKB6:/[P!vw,+X+w+,J=J,* ,8%)ՀBIބ[: X31KcB[@Gy ɔT ,%NN-,Nm#%^1`y$g R6xuq:W֤ZЧU"+7'u)@,%ˮ zL)`)aE`4dЪX פ bXK5<ՃF<ý}i`A4W.| o~[g_`ykSR\DD [vIܱpE[|rdn[S[D`B ́564rWX++2~f䒀^?vom^Ə ]e^>Z¹^t$ :ɯ@xőOȭ>2nn߉xn7%7 R#o77̫-JI B޾`5*"`4jݬ2֍XR1"r{Q d SX&xsX%`|$a*h-ya^~ǁv5PQ@%\Ťw`b,GW-Lo:3K c*4Z%^XL$O=Cxh2Ƅ|B{Ҏ_*cGF ,2TcƁ%;ȁۅ+iP Elz<+E,VnbE`Xn`e{/XTu3=,dxB V *f8;~/ӪJ~gU_cu`xJ8X28C>8o/SIN _Vx _oM3Jx#io|V8ܜ߉+[KY$od_x\-\ʥJVμX`iXD9@[ú;G(`lRcSvD`A<*Ф*V.jtV 9积&CxűUxA CzG,L,ʊ8R3`B^wR&N,M:"`%Րa`CtEdGzH$}K4\^`&Yo X̄?X[9\ D`yKͳk= gJXsw_u^'ú9cC= vSWG77 ]#v x|DrL_}ܜU;w0e,.eXosSg Bwwk - ,;jL=RٶE!̫O|>%?HN+Kd# S, G[mZg,Z4xA^ի=UѧZMVsՌWk<6fUb倅D,nщE=6{hZ]+kmw kVxkV΄jn#\gRO7 ՊNcj\9yW ՋRϞ'*tU_~gafqi8oO:N>5? :e 0?>7IH#5Yq ֯Ͽ{(aS6 E:0,jngD-vW(N-ungOX!U*B#X]ۨ/a`6cM5jWæ,T}ZX"V Jv[ `%tV^2`OOXWƽ,'1jU@ƫc09mTd4,n X|WG{6o Xz3K Gb}B) XȈ弊!,75V~5`)3=[z&mq#Ǹ} J뿆:'XO XI}Es|T˯Z {B$][\ BE^6`>Yrm8ӈ$>vgqP r\R lXڰfba裄l5ӺCʀ`u*L.+֨u̩,5Ll[#xX$t0-'V@K:CW`(X%`mW|Uϐ8txlpSB,'|94ȎlK֎B`ɺ`0">D,!+jFaX4G1+֭M`[XkvX.G[21U6nX2wΟOxI/}.s`}A3&d+A-O X X#?2 眏u&qK!u`qL}?|99lrĿUܮa|Bzhky`͑AzuNz~nϹha^:U`U ,`:HkWPv/8]- u`$q0 rc"O"(gxvMO`EX~wS:k p~~S-uB'^ > v3XG٠9m}%XP:]s4&^آ! Vl`< b1|r^P]WQMBX6<(>+%`qxX_RXyi _Xә ꎅߏwZ^'d[?>I;X@ yIsC7XC.z_,Ujw̳Tvo:/gMqX9 3C ?VqyYi ,k|lk3㉳ڮY6X_+Id#Xk X.z K' Xx)KEu-W"un Q|IOp0֐~_CYH'~ZlZA+1G^9&$6RpU&\$7g#O `D= #q䦯?/;Z~bB}_w _?GUv޶Z&m~!t]~w_ʯcX ˿A&w`q>Cp)KŢ g[>l]KBgDR k\J+lo] `!UXIGiu.SC&kgJno+*  +,Օ2He5PXb`dƫ X*jӬe9Z:va'5{zj'a KbZM~tu)WVS}XG/>  H]=KȚoX$5t0H6VKb++!֑5!`is4V%BF+k58l[tˁup ^倥Eb XzE>19XT׮Ou^\PL2C$%RLQRh(Тh7:+C8ڸ)6.1y@"ۢ@(&z~("v~HZ<>ϝ{/9| ܹsHqf~sysҝ);d6?ܱzXv-}`aYIJUgBa~6H KĪf*iTtdga}7 ,D24"ިDX E+a9ρe=IBkrP63'ȅ\gh%1;3˷g /'M /UF4 *DZm XC)΁r`D,X";3Fd= ZE`兒̪cQlb$l Xб,ּ7q`q^,,E37\-:O"rk d^er: ŠX[+ H,L,U1L<\t[X֋>xַff% + ^)^ N,r ej,Kk&2шYuxj r2ݧ<|eb8F֕&.':I2+`Uը.OEFSQ_V%Hoa *V G&'׷Jj K ) vr<, v ixbZCN@,>, 8K' B+7tQ6ABwb!$ K }axpQU(D "WB22ή/OPXh?A:b uQU 1r`u`*`nqsC:))` Ovˁ-{s`]i&"1,@ĥCS>t׺$+H3bG;ݱB2Xrw"V]B5 C$7(VtzPd>%RY$&ca@PӷPZqźW.+NUm֐TƮv !!Aq~i ^m K`8a%PN,*9"yX˒xU kD.f,y{Et2Y_  Y$K۰2`DuVw 5 %x啳+FeFS`)[`*Kr`} XV p5yH1, O;E=GFj!',AE-EWV *Ŕ#( XjXh/(iH .HUrOEWe@B`?:^`]]2`)=ħxւL-,qy6lN9W:|14`ˑ& mLei-bY{W+'[X|B:nSa8ĢFrn,+Mr`qXAz2`=/`%ʀeܿy'O̲EOh+^=E)\ۍ+>B!03jXkHbijW)jX::F&XGi#^ib]K &քRE7k1kRKbŅRR,ұK_%Y llҚʹk5Kl4g=+2^V’zd%ŨfX/XV$V XH,X8+kϵךi`PIt1^՝R`V]wprV WqLt^kXGv9Ӡu\BxX ._Ws` _n\(kق(DA ZsZvMGYQ r` $]كUe"65vyfsmՊs h=QJEb72]!se .zG š(H%EP,u%L"/,ui ƫ,d a`YP{޹}ۡD#aae'*xX{ 4rgGZ%EHu"-N YUuvb[s V[j伪@ty? %lRaTD]W76MTeWRxs`i Uٰ4TV;Kej7.Nuw%W"{ryTcrB*3X)RIXI>玀)6x4.MLf;> 9YDdj66>%ݖr`Yc)r?ķjo`X-1l )"W30 UImUG IPz2ܧ1̫;JUR d\$b6M!Z?ỿ?wP*TYa]LCq d2B%yJyG{`Wk>_cf;ظI~%լG3C*7q ,6C>9aҤggZ:XsDc5΀F}lxX\vwC`}X̀UKWt^ʈ́`qD,peʈEjAU-\tZIT=t{ IT߿- [ i'')k_`qIq,~=HZD72%$ݍ"&O7Df 9y%`![[C`ykH )n,,]B1!=јWha=L!0!˃CkX[ X:KW!t%`(B$\9>527 ,beIhJU[î&x`/`~ve`A~U*`Q2GmO`9Cc Nk"ߟ/Ky=eS,帯9uG[1jw` bW!V;0W&Omw6uʹbDV~(hT1hlm )߰;`8'z+, EXE^+C`Yb}B@C&{(/˰NY(k# e]ciZ7pNIQQ VzwoBX;~,06c_:TY.Q8Cv>9_jjX.;/ ECWYW`z] xxe^Y X:E"ړ _N.bV yֻYjп*rnW'*z5 #2! XU,8+,U r-2`1u@ %.;TĪ㕌Ċ*}Ȉ8 (A+]D)dZ,cYP{mnT%8^nQӿ_}I]=lAv:=r8O1, īC ke(w|K'fxُ/~*?w֌5"P"rn*U=USZX0) ӿ ;9VXxao\K!$GLjF9@UgmeF==5bnX@X< `zv[z6s KiXߪ.XE`+s ŏ- ,ZJ/&cN U <.:!JJիQ"\v`aj́5'`yҤGK/E`qVWgÏN /e&=U=;X0̫Dd+?iX@["33QXf K#XϐIrG b H;`-8x,UP6Gq |3hW Kj"~GrM?p)XXX} XChek"& %;!Dr\rJ<+KⅬՄX%cjUVR.SҤԋ*OQX͗#6;O6in)9g?&X3,,Vz|V?\uh^Ə2ڨIϻ}_t(`bҷsk`]'[$~a%uu1BKqQb%JuG;bjDhu9XS=9#`q|`~DWE)_D`wm;J5u@g&?zX_b>P}pU,TĨJ\ZY#Wr`WXAq诸SrX!q*iI mxE,dx߱o,wa#3~ts_Ϸ =rhc:t"[3g9CC3bX\ϮM) _՟1`?==&=s#{Pywjz%!KsF,f=^{ ,8v!5~_ V,R)XH%^ Dd!`9p<+x]P`K!,9 g KC t`sós> XK%`}rG*X(KBg!xdtbqt_%P+Uh%^THe!M> 6VeLКS =lt;ω֝*Į~h`UV3G\޺]Wp`iCyW9: ZJU/g ,Jbҥ[>!A^`X,%`;G+TXt.[2`-ATr/ E,lwWhN [ȫ$r7 뛯sG v:@C3p8 .TiR) EF4bI )J/X XWL ^ˉ/IVᱚWEVEp1<Q~ &' 0'=NUT]}Snv|>b/)G[Æ57Ю_{ `FACgNJ#̆# GXce'X\ /U""Y|JW^ .!kԿKä6<e-!U)AMN.F{_yр5^ycٲg$feUHS:UeB'AwmHT=l@}L͹ψlj9jz` :yreɁ5>-PX3_} e(`KE`-YD^o9Ykqؖܡ_" &dF X̀EK!p  ^&5pq߾_;X3<؊f؁k߂WkDEcD[ S׮b:+IJ`!X3oUar\a3ڒ6֋(rK̒XaS[bYT٢iE3Z- We\H(-{p$%^%רhn`ZxKOتp G$bNH^O R -g1芶nKK N«[woqnsB.!2cKq:jV,6nSut*Ŭl^XE=*+X{~""da(vnX,k[-FJZ !nU&8a}Z`_$`Sͫ}RI"X>>^~:d2`w2`D|BXB9Ҏ(!‡w?nd5\%)&,h`r>--}g XKXQᾕE<ꍎ4 򰕡mlxuf`0}e=W^/Xg%yI,%Bz9*'eC*Uc YRyIT>?򥫁z˵*Qm`+`0#Xϴ'xNyů}32zc`k$9X2bu! E`-geA VbgqT,mܥctZ_/KӘ,B&͊ǰ䙉WC#3+hY3M8d5*U"^yGky,UZxˁ,KĢ`ʤ.mYR# 9xG[PQx~X[1X^˿RօX /jMyy̾2`;,Zyla֤Awij G+:q Z zMVW;]sū*WǰTB0WV`#*DU'ԉAY%KAyZ2#]V?q'UD-w+9mZą, WE +)ڧQUHWƏ//}o y?@dwBP,;tv4H Iw5҂#@*7;',d'rqXf? (j,`yrS;uj`u+K+ӕ;B9տXänjVk|tLmʫ *V"NxU@*m磉%%I$)K}%Uж5 UVj#9PVjƳ$U'?W=BX޷:R e^X2\u+7 X'[CE`=`yd`H5776ޚjs`}kF X)$u$ܲ2R(~솖}+XI|n|wFj X`>CjXr8j; `0Ubxa,%\E\W?K8XEd)>f'W[>UdH%WsKWv sK.3^mX=xJX־ӓk֘c`~UАjZXp` X>?b=-{^-qb{ !'iuX|7Wo,v)\Ϋ~ `" usaE֩LE*J ,++ 23^KB :8Zx-Ң2VUD^Pj{l}GOKǻ'-~p ޻C'"+=# (7|d C|I73.sw=ƃBmoجؤE`hܵp<"DVj~4>ޞYre ![ ~ N֠X~lƫw^z&`:JU&b#(Y iqAZv`Ys+k+3e`jdc}ՠ€Iu-JXAe\$ÕNaL \la<΍X$qX"Rl&k|B6XRjy XB&xeq4nSAO%Eօ*ZBY.(y]A-rizK`x[- J6 ,ǐ ,?`UUR` UAWT D#"VKD,G-VV{DjImɫ;l u`VG5+VVXF2"nXa5 YL".`ݺqI9wR^% XǪ b󲀥<0G^_~]j'H XWGXu`*` Kq17U `ުRVms`~dFUBWQU Yyz(3g|,?~K!tj|j4kHcxrMeZI[wD,lXܓK #?JOu`]T(p$ctع O?}3yK{ ˕b3L5M~cp 7!*:,'rx)^6*b'2xZ"Yq.!ZQ%ԤGWIjZ֌ X3*`[q'T(VѤޙi}+`)zwBS*&),I`U TgבJ$2C/7X H䖕k+`!9kUB# joX>(Z W,UXLyU0"{ PWсƱ\@%f5a<#σD1$n K?FIʺo$Xzt3(z`T b9[WU+>B]MбO@Tu%`17Gt&3AʀJ uևX\c$mmcLjb-.p|³|fp?rm;GL XzCsPyւoy^iO/D~/f"v&KtSy"TMђB>im eǤ9 x\=`:*yUy{VN3ˎ[ѶfɝBa(_]ݷ:ѣAq%!\#Xvu3y".Me W.uPb^1653JK$XyhCq +$'|ǟXee/ ,vep?4&(L#޼#`yR2wJȽbI_GZ.i@=J6y0DK􏗏[^ kԒpŽC;{1:8b_4uwGתrH=ҕ1,%YO TJ:|pΎX%W>+RIlAS%`W[{~pT+~Τ+X i:nT,?rb#N !u5zgz 꼀0G G`T? +5BXoݺ~ Y7n\G! {(i`Qpe#V-a,y =ˏ gLD CW+\9B ŀV.b+?ǘ_Z `)4)QJUÒA{,i4ē>,.y}`ͅSVX,XIpiXD[iMtqAϖ@sfVY>oe\~yA΁a#OC{^+x^ X|%d)yQʀ> ZStT8)p~w8:P aaXa+9fGΫ%ڟڼ%0L-xE124zTRO*+dVeTdFd ˪U1nVD,`H1j5'gpB]n]?guNM"h4Q},`նݺyn'c`W"2npG=x| X"ζں9^&5v'+ #'Fx۞Q_`-K,$L=ʊŖEXX/]BU RW.XOCSKf C1S!wW .(rjkTV(cT]rTMe;2@d`W+ʁE([UvVq)֤T,D6 vX{+;RQx*syQbm%^'/x§!^zH,B2ًC`XXX aJC(AAK8 X>*үX HF| .; AgY[!异D"t,'R{d;<{׮B:Xs+ XVXس X} m۪BIk`bUR,8.[Q$Ia +,?F'%'Gv0YPwm94AfQ:Ws,O`4b%r?qu^rbm;~W&^%=mҚr`=>ko~WxK% Xz9H/\V<'%xuʳ۹9rKKFdglP%9ճFu╅e ,QbTiW(p3eQɀE-g|b:LQ+f)l$EH"!HLUUC p,D5tRjjo@\mUAt Y]g]ݵ_j(Q̝;w.Cs{(IV(_6~}V[jYĐ/0vVX+!rN7[}`9zVmи7:bFg7o[yXUhD)+U!KӉfEUPXJp*5(WݹD,JeJp Ye۟}x爫>ڽ>~ׇRa(&6 3b b +3o]|- W!.IUֲ+eaC++Q}aH1K\Xf>MB`,CQ D"Ց]^>J$C**+1`Y]5UVUE!XzM )VLBNwn4᝻[W¬`ʟX X=õ֯zG/s`k"Pʁ5v?pIǸR(BҰca`X:1Paį>H3 Z6KN ,rJp*-`P%HJ EƃfA[U 7\{j*f9j zSК80^FtM ,瀯n܅X_Ʃ B'/ R ,#- X,$j , ^"N 3֤QMD`"b2^x8 _)sԇG)gCe(nˆ2Q`I* ekp|]ђ*ȳs01M*.*c\K `+Je[J%R8\^$g޶ױ$Z WA ,fT(kۈID.'{[7_}hsΩWʰe_"knƣY*W~XVHu#H(tS,]VXX]`/n ]İVg$+]%*;]XZ5beRo%6NVma`J :E%-ngV;NP~,f5!JU5UBka}YKD,WJ"R R`yq*F[E`J)$G8NH.!ĢSe?޼[Y>_~㯾޼{lxX:X: GnX`eMef+z3K ^%WX\ X Ǫ4.  Bj`ݐoJ[hKTy%E^9oUa%+P%kqPD'`x%u=+-`{(`qu%Wng ,W1>(%%XWX1> + X[sǍWb֖e=ں{!rߟX`My+mUbtVȁP.kUS0kܩX t~_4r~N1K.T1"eK svdnV0: jy> &=ԭ"Es|R{;)A_p5pȿTS!%R0=e[ SW&Q4UU-V;R0"ސD`VZ߷?X/Xj:l:yΫ"J{VXȫҠ,!L'`孇ۏ ֓-u'[+˒W_*vmXU[`3:aui{sOU*AtAX՞]0~XZK3˳u֢š aΎP_)\Z9?aY>+Y_#3E*JS[˻5_#.VIY#S[eUo|4syF_,=DƣrSǥr4+qʈCV*KvMJSM,˕'>Jg\x[­{, 4OƺwUy+JS%PZߘD?qL'% y} w2LT1O8։"r{1 --2|wBaafqH#NeQ{ TXUTL`*D$_rN1/SzEZKz5 U뗢*uNJ<°fw3XE`^9S%\m++沣$ܾomGY Tjey.{O>`=qyj[AiiX1kZi L'W-QNo,)AEd;5֜\X5U(d3$cű>d7~8m!Љ496tt W v2@";qJY([l\qh=r X-d`'kXL0\eyT"a$Y_j-|N vV/?"L^ }Jj[Sjz`o[$GU ,XL&4,ؾG`vưXXR~kl&pno<Yߠ=B@+3@֓w,~Wϝj, AX;f %f!vmŭ<8tRweXi]crɁy2K [-(Η 3@;jdqq,G fT06e*$, 0yF`!Yc3*Sp4>OB}0tiq_WAco9ELv RX,9-N*ˍEW:xLȫVL$wVU*-ȊaRŐpZ݁<շtJyvN,H [X!%b[-e RN2zJ s$700#YX09 XliPVrKqqP,͂CmO㟕E5Zj#@<[?o[;Tؤ&4V)/+/SUDAxWcvX"Jlnή#v5vpDimDn"n~*N:f (&&VYDQh5SM-wqi&ie2(6-$2J{VYJ[ i>13tOYy}d}nLcZ²ȆXؑ+Fo͍[ x:FshO* XOV׹w`E^\v{#\#dԦ& +\\CQ.E M$bkK&6D,kK^!XXBƆ!WJzoA,&ƇKa{}&t_vvVbfXj!iҁr\LC2,E޵iIJ!Y(Ulꗮ9Z}QYjQԒkmi*&- URr/X|&P WX=nʊTXY>0Q(-LO$\WޕtėgKb>!ui( 0> /{֢h-[kyƖΔ{kٱa6fu^1dse,Ɉ|p#6z-Of5 Xu>L\$ilEasl53yW "x,5A#L SY"XEc;jqFF,bB!v.54J?T&M}7ϟ? LWX#^a` W3"Fr%|,|=H+k*1}Ua`OLܻ\Y%!Jy|RQIt~ ~/ asVGulln X*+cYA2lg+`t+Pf)|^au@:c %YfS`XAa&+6䖗R|k9h)]KV'ևfv}/k[_H{J\9{P̪Ī+˜ 0RD3ws/H,竂TDKʴ CoP ) W:jqAxJX\ ,a*WWRsKҘXߙrO'28$+KzoC J#BXX́5pVF:Z5cX{uaQu`!K rЁŎ,dh#fx9D4KqjD6` X3n%5̆ . +hG*N(.V]wtx.ҫC(Kj.@K`9X=(WT R Jꒄ+*d%*˿XpI"!ہ%yQg`SQЪ%Xڑؙ`ׁopYeV XS"ZSQ"diLdL4VO·IjY ޸R)xuEl#7uia٢RFD,QZ^w+-1X Lzl!)qB~e4cr^...y+ hDkQoՐkR;vwJp-X!eDh[ǥbMHq %M3g;4K{ҷ*NϖۚeWVU\2X4ӡ CЄdi9I**d`UЩ^N4vQJb\f֕OHXW냭54ǖ@%6jbRJ{v6l6m.Kzm,XS$(_ ٍ8]궮Wr%"J$[V* _8R#ay"sAG IN1/vPhUY\وgp&iza= -y۾Qf@/bf/v[3a:s@-:3`f{%],g1"tUUZh"V5Y.Z3b|9Ei,-U~IjȸA.-ps O.],l.6"4"hhnE 24awvʒ45Tss:De!dS4>xuTȅ0bF`*ʕR `5"2XIJA *ƶīJ4cCgX|s.n } ^+JXGL2^,[lr\L`XkN 9VQ54$6E7X*$ J&O-ֆ4k m,+~ a !9nvD?5#;t+4Mru-~+ya}uq 9RLUi`(E!`T-P[bwTAJ `K|x *"4c n_ ٍ!8I *ᑚ2Z%B+ԔVV?9/ϛA#C+ г'Ћaz%JϖV5UAi+EFOdo2`X҈1%"96 Z_u`y:XռxR%b[;w7DomF~H "GU `1{  WwVX X_dC2`!@.ZH4h؄0ۉcDb44-l4$Ҫ=,R1f>XfR(49˺Uq h`S Uv`ΣM>. ]P~a (J¥X|xZRSyM8Vi! *YtպA#,d.D`XBw51x0gN:|[:^CK1/ *e&;6R*ϣhHhrh:8xuހ8#x{,"d۫GtPkV[X=93V݀sJD) 5_,M ɍ+]T<|*J <W^3 gT$KU?UƚH}V*+NZXvwS+a˨F#ѩ X6ď"zSeZ7^~zwsݝ̶rf W;/>`)] cB#Xo{&[CR߹tЃb,l|ZYef& X4#DZ.d[GZ@ӔfǓ|IvV;K,V^h UxQ9|NVE`qV K1ݫUߣ'` ,UJȫ,c U*1tjԵ[ۑX('V6CZXAFB[k7WzPC= ~ږ%0GR{$2ˊ]oPڱ}WX+YP^XB?* EK-po}.uXUJB V%IUMݓ%+;UKwmc(Q(NW9" *W\ XU"Vn#= ,Nn/(XWk#"]9P,WW"*+`~K>+Ξ;f z!nz+W1^9Jn0o"BɁ`f n:@TMh2a:p%ZV8X[6b; [ "ʁ5S;v֨d*}H`V K*İZ+]{  )&J'+wzW-&m;[77R WU ,;y655&# q,P̥IŢU*`&L8 %ŭP߭Ga<"DV+Ek%_!eY tGN/*q4 A & M VTȅ¹u P ,#`ז`,bs ^rˀua4U}cA/FT"SrG `EOBk5Wq0RRqJjxTtD9V*GMx)OrX4BޟSAxRYXEL8XM%&3z5|GoX2MԪ;(«JdyjD`&pd%FV.}7y19뒈d?IxopCTVY!bM3uݕ˕q"X a|B+u+}!Xl7ݷCT!"4 ; 9%U,2j5l>VZT1#Z^T-МӬ@C %$"@+|pP`Hj=<+ͱzB38 ^+H*xn NJb,vV,יB/Xӻ ^,űX4_P+7"+Sg;wE{Y_1c6\ͧN;,E`Yv`XGdqiq+]E1 u`iXJw`MY^J%w dA5N{vcWRĎu>4 s;kRXV1Rx40'ֱ%XWU-b T`ROP_$s 3^e`) XCH3$Zk}J>mVJYdb|#O~kݱRiY,ӷ+fT8T49I1|DbA(w |Pb81d,ChX"̧B-y|ӫ{<ÒŁ `1fj&pR܅ʫTKA T)-?ԇ=VX •"tr^ ϩeBIS"RJhXS~+մ| ,+S_ӄo667@YE`q('tS{EZO7c* L[$@UuX!*XiaA%5yPd9B7WSn4߆Kƍ͋CXuqQ+)VނR* cV,Ys*sC*nKj+A-ic#}P|#7|cz[L_9z!8&58 $[ n˓x<%Ny' ^#6,e&"rx $G _,֗J^C'LL <0aQ1bYBxu< bE͠_4Ç>7kp`X;A7C_6Ø24W%k':2'=@S`9r`}TXKjmU [Q@,W.30܇3֚ӣb<_5YXY$b,<:B~ʉž" ?V&T%֓;qCLu=,*y2„y&pjE`u5mOV3ФUM+ =_|10[dyNx2V,^kh!Eh,-QOzk;`3\+=O;|ꔔfiisy2S\E^9P$V,cl _u^Q{ ^ë#/X)XUP+`QCEagLe1KXPBrݳ>k2,o߂ #3` X#|BMPV /xnz*|.XXi%xAvĆU`A'笲d?-[L9X-%R:eq9dK]' X 0A%6 u X+j@I",>@O[j' }Iuwב(v?F?W{\/ǿۿ϶߇t:#ųyuyqub_õ&u;qqCv]N&^Zdm7-mf%P%݁fJ D3]F. J5?3.-L%,S>{; ,|k{{yϹ<>bۈSz5C+S4@=.Seݷ]ͻ"\'N*߫z!0˲WlNT綧|01KDeJYX~?۶Z~`'U?߷ﳕ}tۓ@>|kc)u:pmM}yfdVHeYN,G: c]% bKCz`jfr~ rMgaYyƦx84GSU,*ZČIC*:`DG7T;H8n$$Y I kT`\rw3;Ӽr{uNcKvFz='ۊ֬άCz}"b&xuѯgJxi9g=,SeH~kQ۽ƫ:D?ר'X+6's+[2m߾mNun2:o_}3m?w`YjBK0/GՋE&?S!񊕾1fdfW3)`h!U,wbarTJC |,_ke`)kK: o74q-U"`XJ6 ξ>X*+u M+'7ǩzv XmWyP/,)+E!J*VW=V,rLNtyAsa,u|- Xg ,#Nw+֠C=/ˢF%r`Yr8[$ I6<Vo ,HT34f,#`p)ixE5?{2Yj?R.bW{Gצ>mo:7TYv#~X,&$WtݝWX&讶?}8XU`9*wW]|:xϯxۋ}TU?I Խ~==?oAc]&)c{W&49XdV)\QUn) a 'm/w*%&VM~%Nb`1UP u)듊WdWH~jCB8N[X_*4"A*QT'`<+쯫˵2`a-&?7]GPfDh0u *B!)% 'v3x֫ \͍ΑrJ$_ߝ'30m{򍖾VsTush1rzM <,߹=iWyS+%1-eÄc W6H"$`LZS~:Xq2X#dhF=tJz;O~}'xjlEf&%kI65sR!#(ɀF{i`/̊h:,߁eG_Ia6K`aQ8`cȱJ#+&iYDvna__^eEy&rVkIc.#<|/D6o&n_m% )e*KkLϲRĘz @uu}:~Rd˙JŖG|ejlo>($1]YEV|]_;M_]5"K/ uUX ^F)"#5S]  e qVJ?P2a%T+!:0hQ,ȡ3ѩ,EtK긳,n')8,%fr ՞Nlջ'UؒlKeOht;vZ֨.V˴r 50Mh CfRxNRdPj9rqgSN&+TvՆzW,vS #Q/XKY0Km {)`m2 X_kZn'K8, ,)}zh.K] ˉLeSřIW%`JɁU*Ɗ̕X.,jBϜPV/J˖֫㽶VVYN%b Н{t|!xE h~U+ -UN +bKklH>,$rP`PZ_8"`CF' *ebم,CT-բI_H"Wbp.%ò+O_ʀ|*c){없sqv'+T^;v4,`|stZA L˜JϷKzqx,^ոtÑ6?,K4 -WX3Ձ%YX ځ&ml ,Rom 4bUKW~O36x غ4)(==շQk4*``y=q Q$yjqIv2?GpjZBG-!Ԉ8Y>.1"JC=Q~&|A[~[`N?6߉R u>eMuU]Bl*z}jdht L1&B]͠BnL8<W8)dLj$%JI7U+kDLe+栞bu9-{ ,) ,=|aS|0K.aX}N`5+Y= -ܥc!ڤbb'㔈\JrUS㴁@n'}|={αukJe#I^j-n&؟ݪ ֋,6Ǧ=_F:f,_vLj%:ViUV^]o~_B֡CuOXSY`pXlW0W W Yr%%НA}wpB4 XģV_Lđ[X:XK&"Q3& H"b]kMko ېN-WcE[$M54/Xca h0{gP{2u[&X;v˷ZXَVHt,Cfw`I /Xjpo%xsd~ek$mCp #`[? @GqV&`a)!{eW(km7 z{[ܜZ,f"*gemF%Y25F<3@rXjs PD-l-JǨ&{a_ԜUaҫ/Uޟ}s\\?IIdKDKbCKߝ֋ߊJ`QKtw X^Q`z|܁VWyuwo5`9X؁ȴcy٥{ƫCAN,6B"^EҶ&Cp`{YYrvxoؑ/=r'Ry;O*O0)ng)Vqj+ ,<=kD^TUIK%p;qQEWXK@Mm#,ƷV˒{+_|ڧbT:Nד.^KuVL6dM:힘V!^uDX?t2)`4m1V XԇZaq*BQC_*W_%~Z}n%cKQ}ָ}Z\q-(5t϶ek*Dᙐ֐$#:бz5/ys"TҋFNpPXؽx%`aZ!Go] ,+Xq$>/, ^٫hlddM(#GϷ,na25Kռk::vBOU`X8"`M?-sS2u3Y>Ͻl{*! ep'^Ye*XaiiN{]A͕Ux"f1A[jvM 킫X`ǘjv LM b `ŏ4zv1+`EcszŠ0+4 nM 4']k! `![ cY'=5+HͻVsFhW @VY^5p.v:ֆVY^ckл"p%* UW'-W-O+rBʕN OznoRz\GIo3jZPy%U. waV snj<PXwtb`Φ2*TX:lĉXi`9PNĈN9qB 'r׏r Ȉ_9rVQ1 "q%2)9e,...!+he==A"eEIV[*!hs\5| ;,:hOW`X)eS|a`/C:;0<|ǏuWqs~Qs(}JNr2݆^KVh[`[x>*/` 8X׍N04; W,X&kM!7VHQ X3Z= }Q=&sn96Xr VTySPb6B%W #BW "/P&\/r)q=Lָ=ܔ MuRF7 kTSܿX\qD ARXIQjk oxHzbfߎ Sb>Ykгa:WUu"kG XJzŧPzEHi'7#U޸~ .XXiXT<)PbuRGenBV\ X`I'Sj+U2^;'~Gޱ eG"`u|ˈƸiK Uukt0X7.PAY41ذQ!F%ꍀ&WXL+M;j-1=R \/^2ZȐ,;Q[CCXX}Ӭ SfZVsCO5׸:5 ZwV܉^;RjZՅ|6 <$bh0|UV/kūPFW\6&L|P`XK1d!LkOVs:wt,Yj;;zdz}b ÃI휶^D, qiph H,GQ,͘KB@i ìW J@CrlT%-f d~7Ơ"nVFяKqhs(4.wN>A&?wXWX 3z^?)o9Cg*Т^| ʍ4L١tP\8nV2dQS^\G9Lݮl[ Xt`m1Աb`VT('_3,l5`~kW5` ./e;.{9Hk /VypDżaM B?N;F*=9<%K䕒N9%`p_Bѯ{Tv% a{MUX9gŎ"h&^`YZ~6V+;9T5 ]l64! %sZ篣(KQk `O;Lq"QHkʊzFJËHLtv'9'/Pø0dSO ~tݿQ(ټ/Q`g֗J:+{ŚX/;v%IAw6gʽ)}m9:e7 XJ,2((^Ws;(KaVse]ۆ]T0 0y2efLQ5<+y\rf`מ{ex rXq~ 2fsr4G ̧cZ' [Ш`%bmx ӖyUWfkg 4&6.}Am'XRb KBj^YU?^IH茗ǰJ` G1A)EVqeQ `J570qӏ-^ZmgcXVdkdBnjtUP}4%5G!Bg'諞)*V LXSA쪺H}#wfi E86m*v@$U:VI{Jc{.T*ߜ1`YV e+P;;X !R0>B˥6p؃kr2 ,WS@) ,.Ix4D+"V1+UGz-,^5_X-Kbk@9x+\ D 4|ZMyWVXRīÕf XuMVkHA Y&؀pXY |w XW-%*:8ֵ46/X,A-, «x=⥁TX*1,xUi`yg XT^!O!XVmC9h&Oְ[/r{s[$ҸrG !W ZR ,Df}ε#,l Xp)WX0ʁ\*e!C\X;l|RZ?va&?yhBe1, ,2_me2Eúx¯x]祄%Ǖ,Yz^-tMT*{cztcJ}  QyVjȸDDO4шTX- vJ5V!lWW+>ptXyytk] ͭ%VIӆ&.Ԙ~&JD<EBW\? 4Ha X#dJ*K,L,X@뗴F 1Z8bt#vAnns}S rO`mr-Xx<*Wg&qjɠ`"UZY`XdWkՖkoźr XS-s܂Bi`d; Z0 &wY`uY7"`Ff =Q}M͕Bzkz|zύXjDP"L57칛hY.(,n|d} v* ?G ؍5aw~X85a4{5w'vEIQJ{[ $-Op,-%0V{44ܱ" WkUyU'%j IpՃYfr_re iOg+FZ>Y[,cDS ^am]O¾moНOցdZ{ b\ x)*QհxG! 'J7*`s#IJ;]5_lzjƙY$j«&ūq/"Ro'Q ف΂'`9*&&&U=G 2^PWP7fjbX$zp0Bl%4C+‚U1$%9}ڃo+`eW@,ҨZI)UGMpHՖ(}s4?V _WVx˸BCd"`!?Jk#w0yUgiYX{ VeOxU Xsk%W)mW3J6U4()=rAEvbӵQފ7||%Ú bò6*hXn>WPrFqx[~oK`YW X+j]J=L&*dEE*=3I (u%2ޠՒr.X":> JmE `bƍWW[8e)`N"̝MÀҶ%`ў ,ek`Pk `dQL?,w AeSvڸvт>WH x#axXWh^ /Y2`W{a>(DRc%O:߹1A} 0Y  |`Ut{L* {E&Ӗ6s~GekY~3VS~JCjUJA ġXI? uw W^q1!W >ҖBVڵ(})T[6Kq6=.Xh\sz`JV IEP9e?,ۢ3Z,R+O(bEJ-y(^ XIB\953L 3`,$W[hYt:lY ;8}ݻ 2 %r,8;JZpmF5Y *NfZ:owx89lH0L!MA3aC #^R)#P_:g _DUn0$+7C*iG4Pg\!?'Âf( p_`$ yS)y-##XdkP VRvd0-V&A`L`疹(l0Zs׬Z΅W`YL<(fHiJ`5. B,e >)ͫ75'YN / "d0+B֍7Y R&C[hd9|e40B =DCZA H=felO$h)_!%v&sr`EB,ǫiNDzV@ SGa􇈕ec(ӽHVnC 6Xi,XPO ofU:Q;s#n^-'r VU %.XYcY0;F?Z7x==\vp1{ޔ3eSX܍x)YKB \Q_yg=ԧ 2#m&J!|F@=Jx/-d lXP+O@aoo,-e?swzjW()NmRmDHّ6{|X1>IX.y0{ kSZ>6JY`uE)3j_b^arRR!85Melvj4"3 TtW!k^ֺ:j4' bJՁ%^1U^4yYWEI.X[Uy|8|E5f(?4:s9|A&E#*j{z%Dx#+i`+,UX^A͉X>`MWxfiCou|XҬ;c$"x5S+m}se|)zf/hBA^yb;/@Krd`j|%M{VzgY-Y۲d2-[%j,=,p"`i HA/ d RtQ ݇dZ]nZhmQn]4]}P(x2$%s{6}. Okv XR6XܲCĚ/b#( :+,WXX]5.UҘ, ,c wĒU_R%u# ֒ܟX#g/ ºdڄWӓW͍X"x#3yD=XcXwx b؉XݠX`Io;n?wYX,ݗ619 {Y]/xxc JA.'<}ol Jh6#^E`'=JZ!!P"ڥ,[p%ɑ|i)KAFGҜ# 0Gⅉ5s`}3H!nTMtJc^ P*FyuIdUMHa2iҲTNJv>Wխ9vD ^X!UJB{@?C/oOސ}*W*m@s! jVQGl<8B`h/PGC7W,ت|0MWoD="auwvWlz5!Y[Sc?$߳bVIV CexjA6fJqsw^A,AB-8nu_|TŤzMc="献] ,IM6'l]Mw{Zc$K 4j_䖠UѨrKkcvf{#5+ ,@ K X>JX.:>P-(\ oV)>8ƾƎ,MK-[3~CKIy(Ow_ Ԗ WX,: U/D;R╔F`E9ī,6s&TWV,t֩.6­ъ -?V,CHW fCZ_cÀy` =G΢$X%`[]YY7D/vW+{UC`́"zojYsV1`:5vSj}zG_% 54~*KJ`Y ac( , onaTv`S >0۫mn2S[YoK1UXL9fӧ KC#++JU{c}ެؕi̠oͶJ;/v>bf-7-Omy3y9N XMiWYa!_ `9br`IJVP4PItv,IvܺƮVo^tCF]}H^΃k K#xYuj|* %ɓ/Xf4 )ќ\6 ^CpV<¦A.rgW ͕,/v^y,W~iayD he_~5% SR i6(*jɕ2I%]#%МlS/qi`` ,xi3AW~c. czztWV5@OŎ"Vti'!bᑀe[UUzQr`ke!&tmBe~yCxz}aJt%=^ǁ#ˮ9J"A,ˆfa!z {u;ф-K*%iCj1+dg3yF^Nec_aUK Hxum`9c@K{Űɓ4>av;6?gsyWÃzqJ^ױf X7so b*!y =VhcyJ*.:L[;SLōN<{vO3}W 2>!#qPr/ѣT?Gҳ,kEN>&eAm5=cP֕]qiX-qJܚ7Taa/_uX)rj&Sf+,ύ+VYrU+?T}ŀ+R/.y}J x~mzvO_ ,XmғiH{y:X(++j`]X:{`Jk%|RMWw>3Fj G{F&v} m߂*9,UX:fHwBdT 2l:EMΤ-tb `apjf6j*|0`}_,ՠ~cur`rե%)K0SVhW4ԉtT38&XwǏ yXXwoL.=^=+XXUibݸdbM^X"yuEC`I1ca)7 1^`UF`I*jλO W.On_~ѱֱo\ہRpMTXvV ևjLnp 􉔅&Ա=4zr^٠];r RZâfm _x^CӁ2`I,5WB-AbSV~b?O)sV/B Z0 58#рWWo&y yZo,-1lG:X$a.BM,Qdn`` GIX`'+˫o|_8 2̊s`Xae"TCd#r*V5{Ts jༀ3'3l(R<,Uϳ;Wzq|]R!aZ{{BE9V8,*VV VVX͵eX+戔:bùBUս&Gp=^ 儝a+ Xcϟ6^y/@,%>Qmzyx50ΔQrx6渭 @,*Sȫ&:(b~ +KZ}֯+ݷ-khS,Vϰ !`Q>q ^,؂WKrY%!3Sı0^ЊJ=PҨ$^=5pZYPPJ \:As^Cڭ*YZPEx6^AN7~KixV{+=$aiX^fco8<CX X oVuaz6CJx}/ P$ +LhaU}N"2g3 y_\V`NPͷULk{6Ňe h~. GUXEBVkWH0M%)]vC={-k[&SW 3y~Y"ڢ39 ~Ɂ5& ,Nxj^'8+r,V'ၫX-xhQT({+*pSoBܻw,IoGx%i4"pzu֙ X,k?4 I) /l)X/}wӀ"=J^k]Wۚ\t=ޑ} b֖ Y+!%iX+dfQB{φ5-<7wP!wy7[ Rī/{p`meM" _`BR~b 2j:ACz Z*`5g\ &Z,p(1\frFpF[E_'$Ɓ`_?ӬsR+)*メ0Xj s&ET,VYGMGd0d5Hmyٷ\Wl X9YJU"ɅEbdjǀ &![^ϞFH%BKw}h-!vx*f7r{J]߆M3*VG!/)P/\r`Ey`Ow$=d:U"˹R̀u16Y&~hڬ2~Ꙕ#^)r}y%`%B>}i+Oֶ zd3%f>"ɞdʽMj>^n"\vGr,HV+Ŷ7hu`b[ZXq yW6n' `iЮE(Pb7L*_`Y1zjOKqQ*p{ųRקj|#ǔUEy5*|`]pӹ XsAոW?K`38dbo9;h%*?`dԝ$ fk'Rj^;[h>ʆXj.a)`1"X; >̮Kq}e,/,^:8z+!$ၧ+n,,5 y 1y<Īk`LFM%V,l3c*IG>x\w;X -uyh2\ՂqzW *Xc<\>bVsU/7>h0`ORB}3`́uAz"WGGBkoWhO6'p m-ZU>΃c^KEsSSʉ`|+:N*~ 7Xx|@jATNC Xf}Hצԟ`X*~`ۀRMW Y֙ Xr2"Fɩ SK8rUE7}"C Ѳj`˓FUP_cj(ܞL,1R8K$Z963i3I#3U$le;6Gn9HX5Y,9clrQ] `_Cּ;,AVܢs畀*,JssbY eim DK''bIYX ? XDw f"U C,,V IgPP8\e_f,+q2B?`I8V<Z4 Cܙ1`<ŝ*3<w)ziªMs VLWI2`MeIsGTJiWW9"'G4G,dSRJ `A ~ϓsW;t/In_ 94ǃVk``-,}Ԟ֣^`{&7~ZRMc#ʤtܚbfܫ/,5!Jw=#`֦wɨ^b>9YVsE%cOkhy m\Vt*SL I9뾰OR( XI{R^|D({n10 .7DW+C#7WO\9cACLnm͛I:ߋeQnc13*jUMJKG~%xeLk l>Ȓ,M"zy䭭E9=1*g!Z\౔䮓dn~.@/X+VVTŪ*QSA / * bE`X X3%^&!kz"z3!TlUٛeg)GzX:#/D)4ڏ`Afj͒)`1,G-k)G98+as\ -e^`Y&Vat*뻃+r\X"j`-;X FRW+73B`i j(*(AwxK(e; ̭ S]AouL^RY` ,,/sܶJ.a8N(J%̞އT.0s"(x:*@}/t/8vT`]e=JbI ]ozp`Kx-xZC$^ Xj^pyr^ X9B bݟZ_]`iyX>UP%pwHm,(b*xc-K 5DPTZܵ;'Gn-3*U JbӁFV=V S:Xjdy.y))/K>QIN.HXSA!+IP-(P+N XX>h2:7y3*VȨzy +g~p_}}0%4 ;2Uqu:.c`VI*YN׮haYa+ԓa []`=0`Z> \ *bLU5f́I ,|h +,QR-ʕ˱+`q%V!vvjzVV ROjaS YȁyPkSGd>YX^3:FM?W^X2J}Coi.Da,UG!W X ⮈SxX{qUX4ΐs%d[E4PX\t,e٣­L)+r1 Z`zv7́4;VQo@~X4MǙeur&5%sīxlkT~/`塳cXtcܘ`uUn uNCE;WꟼW=Z6Ņۻ߽XH>+ưP܋C?ī7V9"sMM eҒYY@cy$^!^V, .i3R@k0oΥςP#L2ͦ,js)/H:ۈ\՞a,Ws)ר#x%`X⪌DQ-c1"x(,+sU@G4E5n^A+GV&W?`}8wMK[`Ee``.y^ |BW+a"sb*J}|'*+B5/F?`i#o?KZW~b?`Wm7\Ip(`MBXlk?ۭ\ XW}޽?,e Xo 9޾w̹k#!E N XǀY5{. zn"VjUtX9ba!5* J*u4 `UCKr^E`PϞvUD<,ВG,-9X4(Fz^3>/q(Dd7+tI}_X{zUA╗=d)@*(XU 5!KʀwDw߾wҙ,X,͟@╀VҌU3"[UL#yc<nVr {x%%.$TR+YJ|U*Xl[ KyMg}{>KHrWK'V,7?S`]3s`JGCƁVWڜG…:a"fr`# 9N3XQZ=9:9pV݇V_籯Lsl4pUX{c_,E]t0j!OVeJy.5^XZs)KE},_lZ4iEޝXnqRN[ªUW[XޮoNQr%V;+ bp!/A-#+'|Uiv Uږ}SB.ye4VcghY >+X'oeN,l VWİ6?/>oX fuj=on,dʁ%^ 1 {^."2s Yd@U4uܾj&S-p6;JG|M֒%^u 3,$.F`a`էXԚa$`U+X*%:.ZMYYgnq0:XKR󮡚$7"J^dLU_`M-K>/%~H&z<`MWtZD; Vzu}nFK}'J`-E`J+S(Vyr vXxŶ`%7W 'p`6xE+K֨Lu1+\v TI֨orT XAkRɜ`B5VP ,?=w:Xj `Xr]Xe_*$X'Kv+V XF_&dbzj=4wڋXbV/,J`ximj'2X_3`V*rdFET Xpk1|AYW.o$e@~|`ǏBQ56BnpZ °틂(+pVs`yo'{kt辻jֽ{SVY9wz{/|a `Ş f.Gt܏ڠ X@7I^ݨbr6ՕNbgVv%EB9&w6RYlT&:)/H!!iNX+?ƒFh?.߼y4`K}zTb˾X( f=|1WD''.}ߨL,Xէ oE`]z}d`e(,Bt]yl=,] I0jEY`N,zؔCԭnF)9 o+ k# XWJǞ*z3#Ӂ5 bq mXHՁ40ȏ$U"++kuU(aN 9\BSVXq3:&N  7p&,7}?|x XP`u%k !,=wa``AE  "Ml(7K1d<J١V+ ia"J ̣5`GW6bf>",U$`)J9iKJoU}wbXUW nqu譨t `*nkT=#b;* JxVUeW<]JFWUOf{/u֕y=!%%R1IӊD"m(nYlUtjuSyt]I! tjbxP܁]@  z_CR!x$痵^ xy9n W_ WZ#0\eZJ` UD`]ң.]-.bĽ5FW2ͬrqĢ593d5A*X0FƇ&k>ᣉ5ʠρx ÖkV`+կKZ г 1 ,TR +.~캄R ,wG F,(2Y5)5HLҜ9"5"^ɋʗCI9^[Fq%X+a AI3h95`uXgt&{ʫO?5BJ`dK^Y`>eCWs,.YhŨZB`%*+ 13>28Es`- X9ܵp-rXàT[\ $4 A%D= Ҍk wXF`-s3yE`;+̭By `NXU* b*XS"|}0N_P5x5^Z:nS6TWv!7',J)qwI1K 0Q++PM:fi$GV+ ,J{`K(K9^}^$k,% &z=# v6`9*_ LDAEvH,h<za@U2LY2*׵doɫesmi|G-踤]J>О4:$%]>{䬫AjAQLߴ IEbsB"(BeK=y]c,,N+@k8S*vz# f1t%j8 Xsv`*E^X`Չv,uW`ݼ>605z(84b>n#bh'i:<6KIEoU<#vzS$1V/9^U]o/m2Ív0ϮXj)˲*nsC hi T+CpK,Z ~%ՂI附_&x[?DzIjDX:R uW_Uw_CN7:WD{+8ig`9^"eB@' ҕKe(JzsB ,ZQY< ;pcc`y`v%94`;G֌֕+bd`YRlar B@$)XQㅼļ񰿵L0e2S*,z\A9X3 UV/JtKKkԨS9!ި blQeJXA] =&ls m]97VCB𺳳&J+*aE _r5Bt?;w,]uho9`A ,G,6iUU ,K\_~ pݻ'$"JUc( ѰPԤbF&֤)\yZáaJVg1p᫠Z ,}d0+k7, ȍV/btZ+?I9X}'+nTPKy5HW5T/]#ku,=,*tEbԡg7y!eB9 ,UR^EB8 aV9ևٶ9ճO͛!1AwV=h5QϓJĪ3MCW.7fhvC=%Dx߶M=I2Pp+25!8ui Kɩީ{XtNXxTR`eb`)҂$7 Y*@ ο};Vb~]$ Lx,taT^q&֭g;|1Cb(w`툳!Xr\6oR0^;~>Vg5q kl#k xr+xb,YC^M  .ogqM0#0Vj5Χ ktVWk!`Ⱦ* XNXh`(U7ڶ;Nm90a `V5"8` ,t|`YL>bȝc)Tg$I`%XqэG' X \~UG) ضzdwX:V/!I,dFPX Jp eSk4v*2uZ1ؐyDJZVR߈kG%Xӯ,.O5m/C@{!huBsJTpf`٪:̈́j j$G}%(a%͆HyuȫSh KF%Vh`Y`ISJW 1J P-BZk#`AM1@h ,M%`q$624 JM<-7 [V 򍸄jG,@EA $csg#,wT% .+k{ s utOEK5ZEqv } 14P +"IOUp*UģO=A/L*yNuM\o [K.1l߫%)[`Quvi9'4{. v|犱ejy00 zJYbgEFsr6S`ƿbEZRbP5Ҥ5M&Gf2e!CEPY\I yXnbv\x(jTqjX`Ф?~w/odm*Ų<:'!GEqVp=ax8y>KX\'fu'lO *\}eYU &mi.W/+kȶ!>Xԙd`gu"*(ᕏ'-`nM t*exuJ3CW n`P+mP 8DVQ:}>V*Xcxud`ݥ+[d-nxX% (IjɁW=npx R%V&Mg8 -wTNW|63%v0J| :>X<, Kh /N XT[`1讹7%wt25˪t2a1{ Ak_;29'aQٿoRՁĞɁ22,pj}XYc `X hIѼ)/o'D]1HCx* 9F}d˵Ov: ߬ qA.ʫXάWґ ,=rn[WCX$b"{XҔ:>Z?V`A97^?~&[j Ț9swHu۷'yaF?:WXsmL" IFC!Xb+If`q!d)(@UE h+<҅*xEde^Xg)gR`HYxlid`T!I^% p'j8SXפԪD% פC`׀kx.>tW*/^? >!&Z+jt>ׯg3y MY D>N+O]o`)Q [HF 1,?0<ܨ,f~BD2bA"Xg(7(#2ŝ,[$Z֘ZT`iNbX$6 Vƒgn N.‚.!=m[G *j]_y kkY&-XXqgdd8Y EХTa$uBD\Uq( J ǪޢtXɭˣ]i*/l"CU-V"u%ע@0viHaʫEנW zsT˓B q`II4hU ?k:t!Pj>ԺsC|\wޥ!\wosTū1RXW]p Y/XX>3?˗\B&+г=4Fw'ˎgJIXeecQE&!/LgWdCTG%wXm!Aұdq&Q z^ _$sdKjvCT ]_JJMVu`<^ ,9S蚵VtWW.KĕQ+s+FA:,*XS,ʯS 9|Z+c62[,ΥyFLm U @*_<~{ h1qtZ`A-U܆N^[}T0 "NB9PwH`-ςbfط4ܑ&f^gByښ^GXzⳐ6JW&ëaz^Z@4j9"IGRbRhWs`QٟܹAWXs64R5zIkLX~0,¸z%SG$`[/x e&ɧnzZD^%קzjt6A^s\69B*Z9 X[|Kc+4g5bl`^颚]]dS9/ 5I#43 XV1^ XvN ,kQ c#-\©_>6/C8v?[ vY8Yd cAy$KV ZX3FrpZꌶS`mVq!pq ˯rhFĉe&'+Tn=\&AGV zXg+$<)+,%(\16(k ْ$*C)o4\S-` vqC qdr_Z|KYHNkLr8C&E8)Ѷ^bXNCsoo^=g||=BxHD/ x~k aai1akْV+ rXlXWp=(|n{38Xµϟ>ݼs܊D`%#`ECgZ`W+j!R^ bD:v,wC}5Q\l%J7g!I45̫XD婱0^Z+\3b`Icd`NXרÁZX_,x7BW ^>76Ńu}xG"C>$qֳ.z^Ae2#X0FXY֪Xb\sx֞O%J 0 ,݃7o{7S^bԕ~P˞G)#[ГvZ6(4lEGpe* #.-Y\0{3|)V<*Z_N`2|9aeS@eQg]O[s5?85[yF,T-UGd% [L遗nAM Բp՘N33W\^9Ϟ=z'gerg%61n+ "P5sBl>^z5A!rbN%ʖ`r$S !(o\rU?FFF_~psTe1 BI3f g;RV!X3NiIPmD"Rf6R[UV0`RsNb`MX6{K%kp %}%S.ZfelW!;ݏuyR#kX}ufE6%r!eBkF͔QqD l ͏9\\Ǹgo-/(T4Wt Pa,2aUauT9k\ -l@?>~6?[IfBKѷ f,IUvI>yxY`7:. (X%+I+u,`p5<¤v(k~R.-.+Mt8OX*2:u`^ XKKW>Tpd9O nx%XЊ(HBxi1Ă 92 ,:]UuT<X%jRZB/^Cu=R[ÇKMJ^3L,hPmŶfO-屴 ql Ìh+L\XيV$  WE\KTX6j(kAc^]*)u˘UWX 7ы/+JoYϟ!ѥ*#?g;.Y`3I;WRۇ~!CP<*X@a,:F\Z捦~d R'TJ*۝uʡ{(!mvZU"T#1OX]OK!s0%ou*`=Z ' S@ΛѫgF? @, &`b ƝAXPUS*& B$E`o O$Tp9HUesdFH<#1ޒ4F2X)*XS'*N2TY˥@uoP27.ħe\+ #z(eelWU(ysw ,`_9ISR,V`bJ`M53zonbXVޑTEԬhva,U``Rg/Xk*g`J +jKG>St `p/JGYpj}O?.iЙ*JAk*ǽ\5V@/m H >MHO43#5GTGW%$i,{ၕ6 _ŃzR5)eaT9vb q^uIɌKV̫qquR_:Y=k(4?Ad X`cHu,f4 j 6z5 t' O|uş^D`)^b|SeSh+yg]-t!XRKSWS+xW+=\Cce$yXOƈ|*4Zбlӧ|)WG͵?\*JT*,ص`AN؄$`@UK5]׵NWq+)[>4Y4!s XQ`ż"ȆyeEG*É񎁥`}vu2&ɚ+K  ,~!yt. (֊W,_miK[^a DVh`s%r [2t7^e)x%59S벼R٭4ǡ(Rs QbʶIS^JuZ4Z>jj, 2XssK8*Pi i ưypN9ZK^`YҺg՛ XF[/D=X6ŭ*FGefeVF̫KJ] {s֖Ӑ* 5ut#ktFjʨkɨ)wS{9:NWЩ@ux]JĨ1k&K#'9GJpu+•VGE?MJ޸AbLj$dA\Ft2I 6]X@`-#5+8ͮٞr?[ N,w+,L%7 Tz/>gp~^h%ZeZ*OVXE]U=~uXqSrq+谎0JfamSU :!bU-@ւjAF9ۊm >FX94ˁW kᆽ,J:ax[VbڀTz,Xs;C)OCd@, X/ ,tW1y 5'FjaU+ SGU` ,tcp`OAXp 8#_q饑w A%STKa/ts]lTU| `XV )щ% K)ێ*8!ޒWݽF5 (tMwX:B߂5OWL-c2SR}+ch}x礀ewx NXzfk`8.,NX9Гa/hb}Oi;t0n>8*j(}!,aJ3۪!{m T]22L`lldJ4gXX p^Q/^ r ,J⸀hA\l(|w\`}}9X/ rzv_uwQ PeDJC$_/͗!RQ[yw ep -1ʤ`)c_+jlUГ!`m~O&B{/TfT %*0T^ RQ`;Ȉ ?Xg)[cx5L^%NalJef!b`]fxj .%zW'EjItbɫH!X OX(K`Va(߻^!PM` =y,"`yNI<)zG䇏v/cЪ=C-2V oEYIUTXWNUhK2J|+i"U>Wg@ @JQv#Rў&([m{Z0fZ-+hI-Q&؞`9 y:A JF 5X0j,ixPnոaajn#k V&ZuR^x Oug2U(Nн]z`I3ޙY5s/ge:PWѣ??j:*߳` BZXP`l/,ܥrbڄϹaa}poYx8os6YXMJu/Eʹ[:]0~ǔFd ,J%Kpe+1FoJQaR2(+tA|QB1sԹs@8 MȪ6Qe7XLe9X_XTVVAqTXb , ƜI/nWhn![X4ŔzhV2KU5LZhd` xY`oSe? 8`Qt"2 ' ؛KHjrIXXqoEY !ʜ;ObRPBiB" wwcfαɯ~E s>C l 5 _|*fEUԐ^eǜQ [޸w[ ;+:lTe@Z*NfcxXZچl_s;5KҨ)q`D.H? U`XPyLp̫XF+%1߽AAh5T:,_,N!4`]F _X_(h_Xja(z ".#ww]@aͷt E4@ϟP/Cob~cO?W > 34ZYw/- l&ƕ֋b]1VuX8*X%ha `I +_lcXd3=ݭ *)a:Y #D"rB*䛀eoŨ@TinjbyAޙl$`L*j~]{`.,&K`8:&ھ^]v" 6.Jn?x"Lٹ+dQzܿ>< ,JgD`#X qX>qT߿%[̵IU|rEP ]n-(z+o^SX+aNkkY%; .K"mJ pg..X+LdRZ3fvZRxƨiU0 j-hf*2A1Z =$IR5AWȠ7H^ʝpszRc3+W, {x/^E¹OXH ."ddXO*` V>BWW"Kx/]ܟ-5 '*tA(:] [,m,ڂ|le>}re*G`cXZ@JHˋ\3*ڹyIJEv#tHeP-EPe[Û'')1WX<3V"` \EU }|I&`+@9v<֌^]zE볣A|Ήص[ݼu+NX2m|o-"X B*뉁W ,dy~=f,}X r] +H3+sKSKʞerAn![Pو<(DsX;&-+8V*"aoŀ8c5sfw| N)ΉV|E!`˛DKI\g|*&7+͎s4),ޜ%MȌ^Q6Vn4E-.BO%XHw%|5=[N+h }V:b+֮DoƸi >e>[wJ}^1 GjYibY>Ӈo`>VgtWaf߿^Mlb enBj8 k.ꞯt2Eb$ 쵶?域Y0[{;@!6(ܯl}xѴdÎwlc,XS,Pl/3 +Qc* f6sZMVCU5H{6U⤎,4xƽK&{ZUɄAZWWVXh`*#+6bb1|lfB)|2n ,kP`/unܻ&w  X"K+ 3r:ވWB3W^ŏ[ ښ]wXhb#wEFFzO*dVf' Ov>ݫl\6Y` 9UX6歼qCeC%X p+,e6MWX `zk`W,+7o6Xp 5I^Z*YD`3a}0`1CgXЉ&X9bbV|!TUBui,UC#ʽK;%"X|V>0gy {?WG=R%8#|lw aWXoV=OdU'{gՕ O˱˱)cc˴C1`>f#F2DFDӒe^krUDkE?zwbs_@T:>>aZki1=>~5^\f0{e~~f,:1WPB;"i`T}#`A! O,rLs+W14z ,juo7Ջ~ xՑI*`qv_TZ0܋ZW`]8FX'"j՞;p$~-/$D`ܾNX> 'K|Nm 1sFGe,Of[Q5~|xÉ" O]eRϔ iI/4,tI/Xܱ.ߡƊ]69™3gsWWE heLm=l%+@7A: 4('}W)_"Ѿ2 XS1ȫ%J/*p Hh_aFXX4Wnȅu zEov8ҙEL˨vgUQX%$&%kb}-)dK!?#I3$"B ('L}KkVxs g]Y ^_XC 13Kʎu1!_+5K(A/UL#˫ Ѽ|XuE^E‘By/*WSG:{Y[Wt3Jba1^3JAަ]镂=-쏢< b=İ뻫SXh3!qbX\k+'.< cxhj-~~Btjbv L"XG%E/d̝V"򻠽ڡk @j-<~v_-΢Hxea|W^N6 .,{=&ߊdDIFHY vu<~)JU{y +Kyl2GƞRe)Q5Y,Ăg%̍Y@++ /+1#5PiP(vGIT2 b`),x-cN߳jm/ZJqXn=;T`ր j/`ȴBBAF pXC'"%V"H0W$r.}79Y3K3` ZXՔJ :^%K/Rj/4ٙXq4O4>vG zWUW ,t`ը8uP ܾ`er:Wn…H"HW,ë=#XP YIç5Ŗ\Mc=hWշczj u||^89Xw&l޽uYs "`-XX0k 3*s*tjbU9`[*%JgXp2DՍۧZ)o%euQ!V8F`ha#ԫU(Xv2mxq %Z& Vf[ lI"K*MPEb-,=b;`邕I~KUOYl۪ UKxE\Q%`z9si}h-j^V=۠USz`50`Y^вO^1N&+t5Ǧ~; 4l s2jpK iXSy(9MxeRkĺZ{z?|[lQBC+]$ӗƱoh~f^ql3HDn6wG$JRo .aK![-Z"2C@VVe m(CLqݢX%a3,R)jAG+>X bE)V6-ȣʪstn)S2H8|l&RuKl> àcGum [0HbWf[׼-JPcYTm)̓;}V>puw`-b|\3١QKgiNExCEüB SM ;&:+(憜x %֖p-~(zz{mVz?(rz,ՀEv @OXâzժU ]h? Ǥ%^يU+eLfksT# %2 J2 v9=(,*WUTI.ik `{E֊{Mx9`11,+ ޾:4W08;,,JZ9oײ^2~r-u_]~ -GhG<ܽʹ|'F??;uYl"J8",\k"+NLYڵK|K+XU++УX[ ^#7"`4]RȖ4})5KpXkqjBd:WWъ<KVmzn,K0eYEۇN*F1፽SLP͈i,,U4A &B*Q<XW,%T9EWVX;@ŸnԼZAAWCY`]: 9K͉9RW=[XfdA3vrX> Xw\+|x/],qgqEV)l_D Oei04z9' j}8АXҸ豥ZX-Ab1ͫJV:;[=5/WPL X2'H`QQٝkSj/Ǡ>}1SVVXvsFH1nyXUJ`#XܮXWګp^VA(#^$|~7Upu\|Jo+?P'S(hdE Z ֭8_`^[w1䥏,Wm[{! =R敌2h,h^HI*gj\,r!PZ%}#&*fJk^~e,n5r*[ ,jKtة}fvp" ktpKm#p6B,XXor c= AS#|y +X,,qn Fs /Y`Ki|V!,iu`)%}c}Ղ9HJiaY`V:[sUPꓨi*@ X >,+9.F7E'p y&`}eK«l5El"d`QB "Xt{u_[TBŮ I \" ynuqSc)h2jVl,lb.;[x5F c'lcTQS*=ʁ]` v4R` WŪ5모#XʫUz`^gx]EP`I]ADz`EBEo*GV7C.)Gv"Ck uӣ kiPJ,{ƺB ,\Ƨ A5 "XYyEV~mbUܝN8-U,| c _Ei~T`i'`;ȯSVCM4YTŲΝZHTNZ)\=dmFX)vl`cEY< -ƭ6mqLؙ(8(\ώ+[T>^Sź"J&Vq:Aaezi39X!k4U"x RB g+;xu %&>pE^9b]8<|K龪,>m%xXGXDH[+|đq7#4>;q(x\NV0돉AZsf=[x8oQ?- 7X䴄]^gYI%V^Ѷjwҋ,+wW~ *kŠNa,gg+jW½. К2Hn* XRIWAz(3x}0*XUj`Y<X)T1+oe@b}OP , F#2- `1wRRY`AewgZ:/{`Ÿfusq\X4$-bcf$&垆Ej[OO8y1L 3Q@Ѷj],2FVu˫w/KxUXN,bWb`X !V(od1?KH7GN.WVj"ڎ_V(Tke0V>h`d[x`xZwՔApaK vòv@UVj$$wk}}|PgS؊›a*[&b ĘF1S&y>+~!cRZ1 PHZyjI!Q*9~2D~(wE[n\Et;=7,B(> ؚAtrҎ)L+vGye4afV,Uj|l^ i%yF!XWM‚, vwJ4 x}jz3eikd:X#7IY ְGՁD/N:;܁a `rKnUes菬Lw< 롑s;jc5?98i* R B(Jc&r駟Ġx|O9O/!(H4=B{ }w飶A/', jdDĹAj_IduکJv^x^U&V+%Nnz`aë,ʪI-H=[ V>H^m8tW Pc[(+VXOml)"KN??|wGd6PEY@ѩ[` P4, SQ(,XXpץW4띉5K͹cƲ<+|,+.rlWXѸ#W# 5'K '%P W(7C.bmf^ʧANÌ^Ԧ\lEC+{PuUe`{W'HYGUXbsJŬD"F/Gűʨz2e4I^aWD7X 17 ,+Um`qlEZu pگ\S9 3Юd8S`v K#`Y^y.xu*׀VG$wRI#YNcXa1]Fqi3-Vt~4^K1Hh+ x$ v+{?( <"̔ X&V;%dQ]l.B\N#tc-+ű㼨@Qݸr帕œ 7Q(e$q+_A +S\Ø,tTIWPaUz`DTY`cRgX2J+++ *+WW>ĉ#PTAMKV@{Qt;u*W#ϐ?-Fyh~C2rO|""(I s##}9Ĉq!N^ V2.ͩE|qYPƭe&jB+2q+yew]6 kF.z!\DDXjEU]mǡ rĪ,\$㠕(٫]Nx4iApJR4NN:o l,4K.LWJHxl[F[#&OEI-{\F{( Ⱦ2f7JJ,KÑ4DpE^u2sV,;a;C4gy ,14:Fbg R`az}#腧_G_~H*%&w_e;\*( ~`YHq`QVq r1u1\j{s)'D0Kl0JxًpTCm:rR@h` #+FU9"exUنeXjdX[XP,ʀ*jmKVsV ,U1',B`ӿ?6k:A 5 KZtP ,wfDk#`3XQšO9^Q6#kȈ ĕ++6&4wU%8#0jtKk.u ‘H,&m:/ X#u6VJtVn򖉛'-,e3ĕз&`WeFR5{Vx«^ `)+>XO7~}'6W.NɑPW叔 Z|+X[X*ZaJTw3k1vRQ4R|Po˧_YphOQ,BzVrmS"`%1≖W;[ZE) ,+ ,5H*ִ*%Ve`R'ؾbXpG+ZXTz`5Sv`HBE^X^Tz`Y7P/&h#6O i*aE,6R*%:;yiGl4lghU9mV9vQOrRTyV!5 *7Gvn9,Z-_`A,mV彂QV}ZKj֩fmի[2v]kWb3\cY(U ip]%X uX8C%YZ1XW&\]9^1] o@ӿ`7 Mj*/ 2XdG`O@`} ` R;g;BdR >`Q V_}L6!*ZmUj+EԂ+f(J, rz"X>T.WK`}2XϟWЀ=z'XJDx[5 -XzKVrh T N=^%XeWS]!WO*Eh mwVqcL 9XVz~> *UXAgƕ]jOn( >{X]OER:W\b+ddT5o:,jf$^p`z|`&'wz5$b`^*1HvWڥ_ :X#ů4 ,,+ V:i*f2R9h^Yc)XGK`9@w 7~DWн)GX=1&}x7%#R WܥO_J|RPx2ɫLrRq08OR\ؠu:~(C~{CX>`QGѳ`BmeV`ѹ$˚XWv2H‫: {;JqGDBx7FN eXyeS:eU=XH`qvzj2n ^1X i~^ VQj>alZ& ,3^݅Q=Xy$Mph#S|`Mq`q놲X_`(X}⮢`e1X &*\u?`q׈`O$ Y`Ճ+t<`a|X s9e>װXz`ƍJWvXC<, u|-rUOlxUt(w XrXPSƮb 2s}/U]~AJjBC,JdE>L `R^^eX6W'f^׃V`-69+d`^,h|{ ^=v՚` %uo`MH + Vl -=O= bWo {O~oA,r\VZJ`?XEɫ :VWgeH%KjX}U2xDWkt!ukX\9 4,xE,M<+jxՏZ TqYڃlKZp䱆Im JchzȿbiUHe_ܗ 93@&V׸@-_-ă;xpCY$1H aufQM{T^3 W)ہ93ODQ48&^]c` XgWr_9,~|?J`,,KKGyaODr=+,ޗ{U>,}2G=NсuԴ`MwTIf`d6k^M K:*,9?8f$O,_֗t*.X=*8+vIThCZk8 XyS/^l[dwyU]mב wփ%ë=I2䡀Eʣ-u.V+%U_~ќߥxe?]h%9iUZS,%5`ٓnэ lc/I T5gK+(0 M|g,X_UUED16Eg"md^? B_婫%upO`5kX֤9X8eςEb ַu2*X|Juv 䊳)%rU wU``!E+oOǬW AO]zbW5E j_u/_)]ݱkGw{BV/KBcHfiABA4dIDEC@ - oL@M0==#?*~w=AK^>Tj_jɒk [eHU%rPy,qcy}}=YVVE^hWſv}-2;4@ y- nFVge3֍eY_ ylmm[ѧw};箚( X, @` , X@` ,X@`   ,X@`  X, ZH;~n+sWuj@šUbkǩiҷetOjT]0QLbz7\j᪹I̭N~'3v_Zg0W: ueК.na'gsK*no׹sjS5>.ExR=:UvvӶ'Mӥ꟫ 4 Inmbƨg'kFrvIuܿ !T/≺ }ͪ~y4ӝ[RV7?I4p-l*>w5s`j^֏16\|T;K~vFga;LpЕ,X~ K*~#MԯsI6O^mބOH>V:qW n;Iͪfb+W_J׻igwGT];٣7LҚڡzo2hd'X~ K*~#a2Og^死۫oz˞"WPО0B,|&Q>骁y oX~&@RzmX1=VO&G]\!Ɛ ,7B\+4řǣyj5>>q"BLKFW ,}~z'p`ҧ=g}h@Ծw+V2TF8O3O?]W;gȕaѐ_1!MiDhC&!PCC; ! /& m'A1G6tH$czuꖯtϢ:s﹧}}K/X[ kg nN7p)X`cV* Ԃ%Z e+IK kY+7`[/\9(R진y(BPl{0juoΝz2Y.P+ V}bwKa*h( km}Yc8 ݘaBO#ZrcIHԨ kU>TMU j|y ł%jc+NdN#aAl xhFߍk{AB 9?:ZK`i,R` 8 jsmwSeazH^^l&//&:_yv`1%jmf1`t0Aފقڸ}YADyzP+7`[XE=C\j8<,ȻR'Oݖ2Q|P1%ˉ8[ ڑ֍Un6d v/,wp$:φ:"G˦6b腳G9Xw[e삕KPeAZ6uYŽ^HrHފU{C\WƖ+[︙Aad]a E`G,+1(,XH)KjK-<nؑ{^ Vɦ' +'3^?8#lmh >>.g=\Kh1]BhB8Ak3cAoV|%r7.a~ iS*BhVhǺpGZu5))!5z1?ۉ,4kSLm՞̧9Kbz:qQ?n ٧m8&X1em[)l!*jR<<0]Ӥ`{зvP):y2>"gI7u4J2$YO_8_6nnX ~S9? X ֋#XGWQn5iRhG6; X+nnO%Mw=\݆# Bz1`>&kY:?Kz`=LqO{o-09'LR<߿MK׆guo5o_$ۯ&W{ɕW\fܹ~k#[yַxX\mdI[NN|'?&'|/F69Ojxz/I޼6 $~||m/GOyyyʐGf+çYfǙu۽ynvK~UH>ЛdGnkyB@x-_5 ?^CP6b&CP7,Dl݀x7ŻmE`0eyI-Bbk٤$0瞙sf ղJ;=9W_gGN`UpZh7\u5p?9tw++z[ᵊ__t|2` rk@B/z?Yq,ye~>s{ u#H}~qwGm?{Ir'N%4*Ɯc}:"gmp}#yA@]"tuJk__~Ѧ^{jT~%]{%X4+2%r<䔁yImbpI.'Tڦ',U=V0D6$ʆ3J̼P}qkH> 뼠T œnZ5T L_,i mûˌDx?HIr'X(V"Xa36^d9y6Bt. gA5"A_/-e lx+4D.  Z`JF:b۽`ZBXf,rӽEwl>juzWx?HWwyo}hZdrPOgM`Lr(HMQMU%}D 7# 8b o*~JQJL[ֶ`9 J* *%U\xZc`.Ŋmo MN`W?;}?-j Ak̃5ӂu~~NӝFD;2)ȡ $w~I bJ+._rSwgtFD=_}I0\,JVto8's~/L aVy{k|/, ~ `LNh]af]Ņ7|vF߄ lQ *M4;9L H{p;Ʌ 5p =l"XZsi$j^BNnV*vhkVOF^ _vS{Wz*Z,4Hc$PO YOL?% n(_0BpQ^IӃSbnI  X '1%FqƹZn &X., <`0z0ZDO@mm ,`e0 &X`e0L \p$rϛ(7Ok gzu%qwٔ- n OsO12z!!08G1qXJ5G+Xxn !~O&X&X?sb`#Xxda ~:&X&X!yl7q QշϜ9\쏃Db_#F/Ή ,\j!6au69L,]0-22:ٗ2R'ys\WX!3}ec̄K-N≸0˟. 3ݪD֦\_y03Fpѩ. \R]4 !7aBPexb?K`u\s:We鰹8:Flr'uMV7W.=RC<8pԑ7G[F`8%F,tab kCbmyU5_WGzi*T2n䭲4' JKNKL 1ٮz7zх1Ma@Kp€ ~0ET:BK_ 8;m2vUqql tR\fи$'c |^p:RV7~`<4aBP([a6yLLkb+Af.ku kSpk-XIus7,r.ǗB.<6)% ) Na>^MrUfSɨu?l^-s\~ä\۔:C&:%iԿ)3U{H A$Xk5|,X᤺9OG\R,"s2jW &OY辵Nv-:[:-Z7JPb<O(ušҙ*̄( I%,,+\O{` 'J5*K_ {ݶ+WMqD`US.X3=aanP9H~{g+ ܖ LTb<O(uʎ}Ĕw0`=MŶ`K:&;,XUw9Y`i.q|)ਃm]4J㴳VTXՔ gfֵ-.>/hMw._]ahFm:)CRtMLSfB3`=׀LS9%XR|7+|p*Q;%\RQߡg~Y8m#ě9 ;(;VpB+]`dZS BOG6Ĥwma>./]zdhԔ.51 8*X u]&L)!6W 5ć$[H137],$~3!/JZXs^28ܘᥤ5t<ŇEcds 5D]It-3:`&Ƥ8'.O6;Q^ETv8۸ruQUYB3* By=PMY_Q&4~|t0&l2Q ~7=0*Fͦ__b[NjJcmT-!nQvD0м[ӆN0zoyg$4 g?PŸXdtd\Xx "O_@'QBXdz|mxY_JBh|I`kE! ,Ba`BX"ֵ# lz0Ό?ەc"hd+ p[ks0*d=!f Xd>Բ{v׻p:3@xք2]"Ǡ,* v2Iq˪& (,ZC1j8‚4 +^XUŪv XHYU>Ie>9%nhCB)5 KY  8:}"&7^PB(+ ${a1f^Xx!v> <,*$0/oW ] ˺H*$-GP] M5 D^XUŷSE&;a-t:[2{aBoBl K)t "1|FX{՞^afEk4!`L5!MzabQ2uaɓVY,S\6-Cxz  eh}G֍U0?HaNXXIt-H\H}9oQ `H8?-p`C’¡SV]%t3p` 7/",U,4&(uHXulVXɭr›(DX`-bQ±a7,o/a87*X'qd 뀰ʺW>:庬ۊz K.W)Bbʆ8䫀|*ل9zHX_q^a_+V +й =e&emKBco $.:N(%*%ܡ{: K+Gtሜk繃c!%_}M(եg3XˢP]Wpgp~Eh(Q eFh𷥟DY4(.,YԴ)5 :ohfa II5|2vJ3ƌh4IcšÌMT|\=33a{3gpBD(v3hZ`qu1!cU K@_@ucjLǚƮS6h\k%-:)x8",4$fPMYV e&V% o KpB90(V.t9w@ A$L  $xt_0'˜>1&VƦ .6Ƒ)Kp>1$d{5G1U7(,3$,1`0ǎ0"q6#U܋-Y{"< BVa)kSY"/ +( _Rfri:蓄~b$BǝAWCXA x$,fy\a*_u!E [x$ Vsj C fʱ߈᮰ZdP\g3 3\d6C͏>rVX.x`J4{hv I,!vM^<㐐s>ƖsE9!BxƼ2)(;h$+Nۍ9 5ad{EZPAhaANDwaB9V$# kRX r2$}6a#s'X^g!/EbB1$ib;$4 Guqp/º20٣+h8;/+]J`rKd9ea]GFXR[ "#84 0;pܪg*!B vSXZ Z bd(_-қzk 𰙖mc»[wK@l raѽ©KYB:$LRZXudIXE͉4b[XIM}C6 gE ,JI)&Hl2ZҔ/,\UXa~a%`I2lt!$ar%iX KucT!|>gzQ V-*cN|x(_jbY{5a1DŁ%Ǝ֐&þ˓Gϴ(RфDma8ܙJ՘ a.kܹ VWZN `{*/ ņʵJF%%XZ 0LJ(36"6`@8~9a@j"@_ 鶰>V|6 >g36G= [x 6$.NP)H\8aDzo)n^&92= B\}ػkEi4e(kجt)k0"`R#X Js]YSª,cs\;k]e l~ W}ml|ϒ[-6??xYU$zGX*|>9O)\oa N ·rj*ʟe@W}d9zK8ae(,px⎁ǶcnV @ kD/~3xojAt1_ܺzp p*/a@]DS%j2:cT|ἂ{!|+/b6to?/ 腵QSK+U 2xk % + 982V[T5'8a 'a~|%`-6#w Ge(pY"̨* pz15B-nbjCr&d"dO'sģύMa^XldqM3ש/耳V9@T@j˂J?a8#afA `aE(h:q:9aШ(9h!$#aTlլ&pH8`>:Uv3^eعj6'ptBU_~T`8)19McmGyJLb >J00n;4pXfe;  Z]-Ư c Rì՜3Wl. vPHeTOvx&IɾY_wHX/W)Qy ·)ŀEyAU-%Y[U>IQQ?h(4+Fg+&i$壋db"`а`+-*n>os3 :zXFW3 :>aEMa)UJΜ ?RX+Va~AX t&, ISy'Y%;W FI}#ܐ~&(݈Cʪ 8 .NOX+*Uo^e24N%BbaL*OGYW}fHOAX:A K)e_GFX44NPX(}BPXU#,i9f  že~uۆãYHշ(0 i.f`Cl-*.fN''3>"`5ݮ/;{M`.X Vzi #"e`Eu*k>WM*%zlݗRNB]zUE}/V?viWp*K V~]%X#[,H'pJ4FAo K%GewU ,,@ @, @ ,,@ @,@ @, @ ,,@ @, S46' ,@X ,ad !bkoIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/bypasscensorship/index.md000066400000000000000000000036251507671574500270140ustar00rootroot00000000000000--- title: Bypass Censorship date: 2019-06-16 description: 'Showcase: "Bypass Censorship find and promote tools that provide Internet access to everyone."' siteURL: https://www.bypasscensorship.org/ byline: "[Fredrik Jonsson](https://xdeb.net/), Web developer & Linux sysadmin" --- The British Broadcasting Corporation (BBC) (UK), Deutsche Welle (DW) (Germany), France Médias Monde (FMM) (France), the U.S. Agency for Global Media (USAGM) (US) and the Open Technology Fund (OTF) (US) co-sponsor the Bypass Censorship website. Websites of international news agencies are often blocked in many countries. In order to connect people to these sites, Bypass Censorship feature and recommend tools in the following languages: English, French, Spanish, Arabic, Farsi, Chinese, and Russian. One of the tools is the Bypass Censorship Extension for Firefox and Chrome. The extension help direct people to mirrors of partners sites if they are being censored. The first version of the site was built in Drupal 8 but it was relaunched as a static site built with Hugo in 2019. Security, page load time and easy of hosting is the main reasons for switching to a static site. As the lead developer I had good experience with Hugo and was interested in exploring the multilingual features. It's a simply site, basically one page in seven languages. I had no problems getting Hugo to output what I wanted. Found the multilingual support straight forward and easy to work with. Thanks to the design by [Leyla Avsar](https://www.leylaavsar.com/) the site also looks good. I used the [Hugo Zen theme](https://github.com/frjo/hugo-theme-zen) with a few custom templates and the needed CSS. The editors can maintain content via [Forestry.io CMS](https://forestry.io/) or directly via Git. Forestry does unfortunately not have multilingual support. All the language versions are in one pile making it harder to find the right file to edit, but it works. gohugoio-hugo-6abdaca/docs/content/en/showcase/digitalgov/000077500000000000000000000000001507671574500241075ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/digitalgov/bio.md000066400000000000000000000004201507671574500251760ustar00rootroot00000000000000**Digital.gov** helps people in the U.S. government deliver better, more accessible digital services through publishing essential guidance, resources, tools, and online events that make it easier for people to design, build, and deliver essential services for the public. gohugoio-hugo-6abdaca/docs/content/en/showcase/digitalgov/featured.png000066400000000000000000001404611507671574500264220ustar00rootroot00000000000000PNG  IHDR pHYs  oiTXtXML:com.adobe.xmp adobe:docid:photoshop:297f6da2-398e-714d-8e52-7995c908ddb4 hIDATxw|\G'6A%Q("ETN*3վl}ٷ33==]]U]I7%= 4&>?@ HG|$ ț7q"N`Om>DP~T@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAT@APAܪ ۢ3zotCRz}:Z7Oz'͸7]06m [ԿmŠxt~ )37Fmñ{E%L]ߙ<0p#[L8vx nnnڶ=hG]8kb7 y~7Sݼžm=.k;iƶŵhI2#"*y;38ǭPL]u"WQetu`Rwo<8s"?-/dU@g.o0Mz T F{48ctP5a[tr۾sSt}Bwׄ ! "A$8q!'Y˺F;6,:9;gIID̖Sn ѸGrNgOoUKV?Zy"EU;۶ 06/^>՚wv<߷T6}=v Xy{Kto{ťHqN#\W8H&Vl:۬63wl?X!מ흂'?+G~5F4htv\` Yc7^Vr5_6޶!s}>;(*k)x:g&{xCYq4|Tm*n鞲s&Wfoeksz?0^M3ۂ+n nym>fL>7'3rZsuhA#TiĽ:"`8 `[yd~3Fl._|Ļt4#5r/О̍ngy$ sS. &FQޞN}>/{᭏,]6D_Y}Gh }4 7MYaKWfj˿I&Ѽ%` *cbǗ گRF&ßf}0XUz}3cpk=7{e_jݜC0^P:´m!dpCp6jm|`$|+s}Gg~{?Joް/ _V2[&pwo<mL낡O6LAuڌ9 a\?>|ȖGbM.~1Fk -\Nr -]8k|ovx|i{.Yxw^;\ w 0{ v[ʹC X|{'":7|<{O;_Y:OVF!(k糮$\I"U4ʄCϜjˤʭP1NS4 ^5Lx( ~OuQ}A2y!}'M} Z]]Ҭ:Z_~sv_}I9;wwF>kևm/<2i9UTR#gZ9^>c,QfͻO,[28]웵{LqasI={Ks ~=փ J;.Quইbgۺݙ2kySLjlk*B*[VXmn s⟛(\5τ.֬-Zfm !YG}Go  >}tZ?w`w扯ls7Vn{\ +3xΟ1ʧ)=BWED+|9~0wǦ},N nv=pR1;C;&Μȏ))VVXy{p_|s0Q!ȹ6E`^IrmacbTTרXX}gh"?1x%&1EPikpT)E{=G7=WIcUwm?(+8Z0]h l3ƑL?+򴙞`X$_@e&YIqLgݑgtqnCx9о=K. r]z!Z(̚|#ji`4m,>ġ&NwyzL&[i痃yoC >$ynx2ao6.nd8sz^0]'"^7mAx%UeL"%vyT\s!.q+0]JLm9UύRc%?w(vTՇnjn-x1n?qzc;6^n aٞX"Z{wgå>۶=V }UwotsGVSM9/;Wδѻ4V"Ea{kt*NP|~yR÷{W -_1Le)w7eyW:c$+ld9kd7DkT۠m'_Uϵ.T0{wep\Wk6?v*N{5 SGKduY{>H=ΰj]oyK| `~l pgw_?XM:ydk^t1k7E6L0_6>M_46%20F۶iƾnX=W]AՁoӖ ОQ5h|ﴙ/h| |n 0Yj?wR8r :{2?v8(bJi3M>q.l[cM&7 ި*j7<笟ofTZ,߮ 6s]abKҴ$Q m]iOӿW.+?;fh\YD0KK~67 [ӹ/[.?c^~i (WhīկQC4>F>{OI/2] A[O1ѥk[MiR@S&*Z7j?l|VB"ʊwoFb:BZVVf$boaULߕmy$E+ou4ggڰr볻ڭf:$nj>~U[H7ū~eXBEmD:1U-p@v* _Fץǃ18wtvǙoմF́+Z[̞.+tnJCsG_{{}؂|U(R.XkĿ|m- Ͷ_;rLJŪn[d3Nb)t]x'-jܟ~cJʮ6gQ۠O+;KĬD4BY-7/dR Ο)\0]Wl;{v/~u/W׫ݳ-ZTMf˰ka>fDv5|g~uh+#_s/l=v jږ, hȞ> aguxov-8aeRA?NTn]*Bo쏻};pAc& SIKi前ڑ{Ki;o~/Wjȓf\K"'^ȗMTDFܥ,G9~{vf͆/\@ּ̘=+Юwaz2!,3W*SM1磎盍}(,V>-DGpлuŧmoUwy91rSKu P"` rna{7q,Ehk[GrP~i}g7 n|̡VATȹ1p?y^#^ߤY[K_N 2 W**aju]"*G]"5#̺H\H.SGx/c/-02[Ym(8~@Thk3̩uB>93)1ӤU&n1VJE[Ȼ6귮kV[G͈Ɠ_tPNpُ$V/slWe2pXmLM-b_%=_yw zM?K|eft]Z}g=ٙsK?/=8, (Q/5I,s?n c@0X$1?-Qs\~^ӥ9zI1kjuSI5mn.yޢcdR1Z_>m?oxԷq- ^̯l]MEG[dU_ ^m5<ƹR[u]["ތ"$6>\+&1̤*?(0]/_ú}qML޼X ˚&<2ETSQa~iϱ&k BӥK˭&rl1ZuLOFO[Nז^;}g"Kf,IT 1T*35?* GraYtY5Uwg/=Y";VޱnYFWC Ɣh\e#2S(LH{S\Tf|<WG?[.ŪԧU7wqx؁)\}(lź;KVMݹ{eK*-\[uAg`7[L3?_sWheo+n -.\<|Mz)AD1W!W}W=59h|U{F͘hh^8ktZkY2y4>tJ5o ώ#~N?e=ֳ?~ Dտ=R)"d*_QVd3=KK74-V4q\kn5uGbE{yY>O{D/T-X/4ũ#QzO/o=f|o&7;*k8<*柗2 l9Ux|ϕ4DNo},xu|.N΍YD[P{40X+n 'Q'HhPF=qfo6K}W[͸~;*t4Fb׻)}q>z};e\e(*Q/~gSGs)]v]!wO>H? V +lݡ.+W\f^$6TJۂյjhH\H2j .Dj=Up8\"J^aWK.-v.5n M̪ʪ4Eae,I豳뺴c#/?yuS9Y&7Mn¶/H&T*U1ʭNW~3\(ùDg<t?&dD}=ntAcOUGo'{'h=GO< pW8Ȥtrҟy=R(nOg@5ڍn<{Ti4#(T$Wfh߫}U%q\$Dy~DiVusѺڲ֬DR.SqqƸf䊌煼M~2yα} =sEaTf9TU˦*Y72ٵC>Yz3,"jkn[ *7kyN&ض0 |Ik>-Zu_SW߮:/ Ad6?OۢӅ0% z;z)wiH[QmW,rpI&#E̹M]GIs%5su]*Z\WX&O'ƅ3uK>3y2V"ʢJ'mz0ze35KתlQ:]Eʷ?9wY~qDbrM:Ա|WUf;aIb[:߿ksM_)_ȶޏƮyDւWBpLhm]]ߙ\Կmס?cc,'ֵ`,ӘU>G>\=!0H%J2mg!":\8;ԅ׼6b>7Fg<20m\ڭ'Ξ,tE _ek'V=iP4E&mGI+#ɬn 1I"R+3zq]qPnG$}Ʊ'R@H7ٙNDKRU!":?<*~Y&0/T5gt]W?{}? ˫mԶ<߰5rOӘ'K4yLO=.ww-|fΜsSgz}%qM+$fc̍0F۟ih(8+Iqfp6us#g/ſ3Ge yfn{<ǖ+g8pL8Gg{&sMc!WFْU%o g# h㐪ZҰm{Ĕ a˩±42U |u\4;LYUNN*EѸz; {Wp.-\~ s-ѿi:y􂖋-}˟1o'RwR?ov1$늽o*XOӱWk*Q#p{W]$'m{v5Fj>9 xýz3Avg>~;aUF?ϥn^Ӆ -Ɯc,5>/N+F9p 4xO5m(#]l1Nt }Y'|%/\YmoW r&ٓmٳ3h9ƵۙȾum y]?oomw땊CD=[/%{Z ^}Z/.4Mw0F<?u4h5ɖN;d #^7H42ʜ87LvuXBp-NtZ|/^3R%M{2Ym~]~D̉E297[fI\BZ=MEo$Wg57stIM|_#GQ_:rFvg{,hŵGb'nҿէq.^uo}>fEi_td|9lKRb ƩT6=Pla_ }hB=?M7axFq_6餳WLN:>\On>?^*vsWAyGab$>ʼ\ﱃ7Gn#|V5%&Qoddq~h5ݎoycN:?N/O(ȑ7 dS8r:>ɼǞɇI +%EPn([:Z?ڍDdz ZI~.C{2V5!W2[}g/WIt;5IK#hlvwux~Ǚs W>a&q,W6=[%R۠\ N:mQ3E4STIUKcV ȍKRJ=]|˨{Iw|y{v7ϻOxJx%W$W=/GJF]"01^$>|x^峮Q$ϻ5>#Z60{~^&>73ھ}=Ⱦ-aB_}Go'0˸mYΈCY&帣Wt쏺nY6X eqᇻ"r]eY\}[uJOq.} }盍Sy+^=^jM|m`t,U"U*Dw]k/_X_4g.<;v *~?5oOӤ %uwX?Þ|FTժF7?_ݶSso&wh=wwĕ:LOn$+[8(d\Q#U*kCC;YA7}QΞ?cͿ;1ѸcOUz;_EП2iAL"vk1iТ15SqU1\WؖȤ^;kwYC[8C90]EPDfTn=YYUV$m<Ѵ&~QaYH yn=gk.~M觗$jFZ:2~?8kOӟZE<~84zYa Mz]V7MmAYH#e_0Ռ{T(q;[k6)~v>p㈃3sZn{C=/'OOOD}?ꚳrulF^4'}f,23Q+.5|IbB1ejJvW9,]l1&1FĹ(eWˏ|L4Go%ǿCGvYm>,''2M:bHe&51+pC r7Ov< ;,XvvLz4]Z0Voup麹L\pD5TO+[,8Mw2@>N4b:0!4ϯں=>kU7ir]mo=Ҙ&9'; *4k~ N,X+6{Dǟ0FiCٛYl6@i%5ve9NO<#(q#t 5f7r*qu2H̄ %HUٌ/|n^U$kQU-kf2"Yaܥ2[/˺Y}IZfhl;BЧ_t%ԏٴal5 nu1R5Qehur|jg'y3L UeDen! $`UK}q~:Ʉ!lOėc3';O|3eL^?7_;YΜ,|x-d1gvo<nλ@%@ MCj>ݙbUjtDx"j^MϿyh~dyu%їiNC{2?{ԔJ8szCkNB/C&sơO3[ר{<Ͼ) N\=/knv-6kK'/$~Ξ+-So}@NXC>'|G/vA Ml\Oė 7^}\pf޳-xa.˓鴎ϽR<6K [:p} }喉6SՎP!77IbMvk7quٚ޺iZC^]7Οi™s SSt}z}N,5(q̖S d'KAp|9^J0DbJ$Ê1EeUBXLn(nJTna*j5Qa9S#1%) S5IV2i 乜ivYz\|g݋-7057q[ * * * * * * * * * *rppI "1vijmqΉ1RU&+F  "EcTz˸+l8D&2K]#Eeh +!Y. "Md6,3Uc&&D-DDΘTY/n^^ws!,1IC$~ A# "=wl"J.ݗ=Ƹ& "(S7]G?;u0p\Bp""If|.I4۳h?Vuهf;-y"R4&/[6Ces- tS9qs$F<~ix'/+pF7:bmGbݗMu &I$_/g7WH 'onP%vpԇn&BBU܅U냋C!E#2 e8ggגkS|~NL&zpT}sFg]S *w^!lۂ~uXA\%wE$l| xw}tg:_Ż16ӳ،3']fESȝ]+w^}g(9gLطhmeNġiCyDmfEu "Aј95X6p#1PQY#rr,~{#tx΋'1Y/Զ#_^2j/%2iw}#dڭ g 4? $h{b^qi3=׆6>ʖ L•B|qǑ*|M,fYf-X6k.FbHo'A^We=SGsD{tpn'K,w+Hʒ%&qzN,MK~S]x?U^iχibLQ+4kwź1p?Kߘ$\Nܽ&W |MAeB7!1j}?h6S/aj4_eJ=^f,\g-Xfz7\ʶxOοJ"[jXz;oپ _Us >U5m~@Y݌ AĜ]?mND)ͼri\VpHZ6h\t~s4?npir;87fY`MF`LC4@ȻM\ (?nO) ++.u=)1ķb]27S̼1HuGf}AbM;41ZN>IX 6w`X^{WQg$Os!Ux2>m2)w?zB%Jg#fvUA#m?r1*OBaJdI:>o{IąnΝ6.`]QAPtce0bjR>z'&8s +e瓜Bl ^LPq (yG#ǹ |SMR7* RUtU"2 ;מLWQ0Yf NgN.|/ūjIu]8q|fwq >]] ?X cYQ'i:#:ߌ#G5ug%.!YV y}ҽEeqNg ;bdƈ1vD~ I:}ź M!Hp\f?$.*-փ=B{O˞҄C8t..2euWMlo5xBtXY|]HCnr'01sޱeK _8!'%,{$h`O;= /sbpLwȩv)x K78;pȱ%^Sb5Iŗi=[,i8"ZyR1M !*}.۟5h } =x)+w`^Cv@q(RbAv%UA^|4xe?e 4!Hi|9^"2 LߨK{#ץ=b"i3om1G.P5`~]fݟc(l2488\h 'Wg/.Z歪ՅKf˩#T3K\khY諩WժH>ݼb?SȦ]Y⵬m\ N.05Ys3t_@N&sֹ|o-Ik:Uf]䫭UE:m͖e5]X2cg_U,t.'/'Yg3y.kWgݶ Ƀ֋f.l$zm<1N)Ϙmr*鴞5ϟwwڌ]aU{UeuM3x|A9g?m?ctwX%!ƂpLV ?~r*! NW93m]Ξ(6h[/Zaq%޹UժٓD]gE̹PTɥ݋g }@HY}>m&+RgutuE}>kITm`?Sr I.jΉ"뛴FVEI|qdr,{:mAPdg18u9|3f{~ӾppnY&8jY7ZyzMʵ_@&FMlanΝ..U*3<^Vi'ZmЄ-{/s)6N7s7W+}ccn>+x}~9qO˧Oj훿;mޏ,/-]G^ɳp,'N|4i@skԦxR>we+Bp+5xkzF=R&\h1Ξ4:.!Tk% z*Ϛi l5ϝ6G,yUX4mQ$d}Pζ.kc WnYPո^>w8(VC5 N>O&Bڛ뷫_2"p}a#Ie_}cdtM6?ccض漏 AW 7~]>%I4wWlMp9[8oY̸#AplpU6췹[/$ZNBwV늃d{ZWشcm[̿2<W4tMp؊ۂC/kZ΋Aҽlß/\d 7~חI9r.HBk[/- ]|'N})^_z"vxooۗ l}<6}wp?q[#.HpiTo޳5R7Mˮ6kNj}џwKjZ*_UoWG ^~SdCQE{5j.ɌsJ[m?Ϻ/?3vNBIKV||r2$sȾL_>?j9wE ϓߨwLṟ$>L zC=YKox{,V\SMޗ)d^;H Y&\'uĹoz; }k5N؝޿+3jF[z=M?k-?R؁˿;7c[1/[#gž}~U[ _V]mgPDy S[2쁗ɹQ{4XWɣ{pO Vٞavb(l{4~K,2O$/]N*7= G.o\,ŗ |5j/ۑ倊soܹ)<:w;^;lΚٰ-:m|-ѭcGz#tHVѴ^e>?{s/wŜEMwRIRo~dFxdqz;D=!%|)vjd xDHW(3[]p1l RZ&zOcKpVj? _vCD8jhJ65 ?(o?6}U3g[{9ch?RʦG|:/fZ5U#qu5{q׹SƘ=W!6?{쩁A͸ʾakt<ϯߵ̰}7A(QzHqoa.u?`.h뵷V)q3aYXmoO^uog5 q) fwp.I?K™`!s!H͑Ǿ\0} V1 J8LHLYsWN;?7rW!'H@o1uDM7j-1YfjJ6?"9}x:WL?=~ 54kwE}JQǛKjߵ5x_ӥLf`Xdƨn?5ϻ{:"1{?__hʦeյ 4w^Nf21AF5 \IQQKNL~c6/B֕UjcĹ-]"riײ?{鳽O}v꠪1"fܮ6SYUI 3oȤ.cq¥ NذΠv>ÃN7jk5#!Ln{BO~q1:\ؿ+a*4W_{gQ5&;;5 hyn\0EcsHQQ,gq̹?M0G3z:,+7jZ-Q|jŪiY>o;osG.͜5~ù\ډViᨲ~sCb8k1ooc`XqqS+\~gb_)8 T-X{UϹ~~ IKWRU,5\߶YF)EmآDgzϜ(k[5N46y|~9 +llό6cs+Wkrǽcƹ^TUZ{wH:u8}S =߻u{|隀++~|~#bԋ03xnQ~NbFY%r}ME?#Ixsxnl6ڻB6cjZ]9~EeK9i6q(^m}`7fnBOI;'BA-+Gr]qH_*Xti|c_^wwX=.:bJO4Np.y)OS u1RU}뺔I9;o>Y8h>8cd[W?|ݚ=ê|:mSD<PDyk5u:t:sX$ѥ?Uȋz^B-,!=RqKIs^\ WK$MV[+HQyKDϺsSI:;># %u[w< bľ.7赍z2#{3?g , # ͅIC(Dcʢs -ae:UfȾOzΐ$FI煾VR8óhE`́KHrH d%~BnKJX_ÆYVdw0-P]98~0qeN=iig~fъtx[ϟ)|O"15U .Xx3jDs?>{P\P+~4j G%Ξ6n8HV_|+i^ 2)J}:^3u;Cs5]:\G-5~pT{KP%Yhw3m r\G|`S. 6䑮W[H[ C{J>g{]m{U89lt[#oZVk9-AS+]K MӿAWϺ>z:~4X!5:It@nNjdCoO~VNX1i9Nkɶ,SdqlDZ]ܯ,k:N_JfZ}CQ#͜ Gޞ'8T)L`B%0Jʖ%4۳膭/]["k#UhŸ{*slq@IH2e3|RTMh5~NȾ, Y&?wpy}rmV2|™JL"I"Y&AG4DBb-qoDl3|!q +ԒD飹_'PDY_\))[̿tuuDKsٴ;Ͷ#7voY۝)ٻ9#2W_7m YaŐ[4ā=cK.q5VJsT˖J 7zQUd&Mpn/rv4Jmr~lA/Lw^lktIcIMHL5 x𾬦_v,cdbt1m`TpiR,/gkX6cdYۮףUJ(h[rzRL=S[3-aKk.k.Y|'F{1:Y&l,Ӽ^9Icf$3.3/ٓi3=ūUP/{+8f)$jh\$g5%y N9' VX5WOHOiBsLPD<$yRN\ؖnھm{ ʜXZ) = t 榯+؂3FͻM < !q@H%Ye,I ktG+82'J1FKBKȬ8{h\%"/FC.Dg3TGg`?3":y8i"-\6\ZLyuwA"=>If#k3FCk;,KWVkCT]Reb=5WE z~71V\3cц&ݶy9bW2IǶ@ޮm[hRZ-.ӟ6S30J݂SV eFʪ*QR\VV`մVQ"1A-Ɵ9y,el粥7c/݉n ~d_nק;|R= P~xML1Ua$\k .ZiBaTMRTVg crn>_QMj]ǜmuu=$pd%)>Y%;Y"sR!Y =_f[8"[%&#úl"# YH;a$)n ׸`DdVCF,WȱŰCYe]*V|$]ץ,di,ø+ ya1 !sPxeȻY)wau*1;Sgziy :f޶!<{WVءO￑L%7+/uRUqH3nfN(20h7VL??hk2Ϩ,VDDᘺ"6>LT*)!TMdYbFyHK%w,Sdەx $j,(i)4KkSdb.w?$KL Ks|-l¶X\Sj `jASe6kV۠}R0FLfڥ!btRsLrm8钢1F^4m _ⶠs]C{3\)5N<5kև5]IJmLwA"Yd(s f^(q-Y.]ڝ1RF_!ɤU[ܼEmt+v׊IW$WgDB5MRGt$RUe'If65CM;|1qdadxh$I{=>m@VĘriNaQv(JLLe뢯:}`nuYfmf6;)aܥbZILo$+lgd3u]["wm }c3/=wh޽6[p .-}gJ.0}xΤ#/ill}:- .ҢUE%1F.͚7P{T)ܰx#qA E@@9G9Һ{Bm[۟wۛd)+!QnAXD,S;} p<'\}~ѣ5j&Gr.) E xt9uE&fN1SZcy|S!?eBH2 dOr]8ˊeVo)rrY7W~Sj %z)5!H1fYumlgmlI83' WdvDʊ*+ GbLض-.-Zp]WQ^.-Vk5甿4nwt\4F^RԱ eIw3i8B%o@.tIr*dsR ;TnsPfI#0DC*8 \HbDFrʤd!"UU?$˥Nna. 4DqgMUǥeKB]NKy|#% ,?x)q y>φ9 bLbyAb"gG"v9ND^<^|^I\Ryg|!nrApɋVI M;-ȲD۶LAD+SD]3Ɗۖɉ(V"q%W#>1 cdL <uFsRHa^lDM#"q!1k'YgRD{e#;UBK3y|˺ŁHL)dn84˪&Ұ1 A{@D^K)6Lpџ;[-"xi3PĖ (VV;2Z g-&4ci`IVGDïYfu zF+5M$3_İ,Qs'ĆW2E+2)7s(WfzAyxENW1{‹{lu]2 gѐ+ˬIƭ8SUERBPOvXsjM m.7oTC_h)\),7t\0Oڭ͜登n/81n g gN̂`D"]h1NUժᨺ`ˉBw=]Wīէ]r]P?j;_ _(`1^rV"eqp^ wN-t[C9Yΰg~z~ #'WK| ;LcH$exveSp3г@l]d)d]-CXHYm3L'>'u>R A$yS (+@H^!Tw<# Fץ$@7Ω3/Ui s~/r.PUo{r.f\fy9[kk_Ez/|s|I#￞cc8VUiOAOtgv~ߣiZOl \n{>Q0,/]q*vHDptU}X㈖SOO5Īwes((CbWXմ唱COVWժ۟lqpw+-^߶=jR97n98ߜ^j,O0lwLr!R=߰-JD>w}OX:Ѻ{]ցŌW@P.n˦N4+-^㜹D*id5oLԫwEERp)"\]kZ2JĒ Ձ鳽W^z(vOe5j^M'ϵc3&QsGF]:(I,VF!Bi6÷'m@%{t]ZwOh͝A_@&f/5L\Vr|ߌ7F oz{:LۡFΜ؝1E[L'" Mc'ذ|ulAD Ȓ$HTL@o',Z]{Wj.'Y&o@zsUW4]h)ؕ-eHHf֮UjUwg*SUw<g݉V'ju+r X 3Ig׻WM:4J.ٌ[ܒ%SdE|&#$v2M!Emwz:lSq0?(?媅K%G15̜>G n&kPj,Z>T}Ο*tDF9Dd%Ν1}#E;]"(ӆkvg{mUc3xVoxKjnJ_UUz}FyG)hY!4oܙP5drڸ}x5Ch~GY}~sxT]/DQfesWO:OX^L8?s08ef}ӰoWġ|_ KVmEir,Ygywvźe~mGVM|u`*IF8ݿ+;bL皍D|mk\tM\E DtLtRAUF#[P8<9 }w{,Ifzo'SF4-2RqG$L%Au"qxe\":spdoN "=fZ[ b4mf}xBߙDp]f=e̘zY&ZPdR4IQH$U$<^i\o4=^D5y#V7(sx>CuJbv8?[̕*RTv|v{hUU8l}46s̹f4yt{stwy)SRltZɉ之ZݙyVB6)0F=v> N^藪fɤXBWrԑ܇oupllϾs͆UꝛtM;on^Y#w?{iA-X;v0N::o/۾+OlrRJ&cs=^) y.)LS%Yag_,_Y[}aPTv}\ޟmm1R@7Q ~=KyGg}LdDXwv>ūm YaBr۶&Έ ol?jP7kgAcsAWm:|CM̂^iv϶/ oks(L&WgݝoBb=7iZ?N7< 2[/%|!a|hQ!Ym Gb}{cY.WPe1t>xM@P^% <3?L_*^=]WmvyJ"j`\=Y>d!Xy_w ^xwW<*q|ӹX$SINġ윅X:goB߹fW㌪^x$^-\Xo]ݠw$a 9ld0Lu~6GMz^ͺ>JRSy>r4Fwh5<[}G(QdHd'?z)öİZVD{!@FSe&%{mr w^K;N{<2IJ8~F&TWpL)>ͺ{wv<{`7q%.&d gUkaqx:Fuw \BOV3$)K<ۛwd/V$ܓ=mR,ӜIYC A;0M^)ˬ_oy464:-3%?Xl@PQT )#Ξ̿RwSٴϹmC z$:\i5U AW-uƞ|F` !cLhL!ٱyOe x82ST&9N-HTiK8mf>ljH碘;2&ƒrN'WשutYf=VgUrsbp!а2D%I>R]kuEnx1^8"IZ|vإ:c #6c 7ԩ5uYn9X+Ss}JUR۠i)p;t5MA4QOXl_Wju#NwazkTY KL)^!k##Y$\G8 EպF5T"2@/޺+5a~$vK"㈡"$ AΈ8 If>V;\0<~NHPoikK(Ĉ9d, .jl 6stm]GF]ugg>\(.B#OUx\{'Iwo].$chLbuq+nsQ?MLhR}Nq2a!s!;H0MRwuеp.y|2FA8vK$i*ST˂s dI򇤆&=ZpzN+]1{mJ:(R4&7ya%qڬTc. &ILpe 1_1's=re[ɯmJ'4}IR|b΅,3Eaiiqw.V&:^z:Vȹ12dCQ5)V#j6ev;)nM1* ju\41%ևw]1h:ZMH"bo@"D >7$3 ~yAC\l4JAsnI1Ug*;tSءΈrniȖ YC6p,]\@cni!D1&~q,A{c$.m.x2ۯF;ۭVSIѥ͆8Y>k 4J؞b9Lab0Ddܖft%*v+,J՜ nUqtJ#HHHDRnY1H2y2>f5 L"-nw[BPqWf1!DI'b+֓)?%ILؔI:H9mQ,?Zů,A"rO&saùLʽ}=Now $GE]W#n-Q8VI2T>M _094^m +T LͤĈ1y!"k`8hu]4Yp]!ؕu+y&H`2[3gOvoU)FGWPe\@n,2x_8`o\j X H .k:v:.{ůqʵXN#1Wip*qA'q׃a'b^ؗvOtA tu#y^*1*֕=LϓL Yt%u~qg.ZU)*r0"JZ3߷OV5$/'>~'eYE&눦PXm 5jLb>+3ƾt蹟o&9EbʆmjKW]W\x9iBOY &1i UT$Y$$q\[6MnAŊIFd: *ɂEpc0FBD-PBe p zͲL Ӡ|>`2 l T,L\_ȧ * * }`r]LND#Ugt wl8BdRUI€ \`*d1dz~K8%{-v D++k`ޛI8y}0u!)GIk?jtqjɷ$||ZQ؁ݙ-F_?L)B`f[U.qZ0iZWud㘡e )qN ?{2O.Fban9Uj^\.'㋖>ݙj9]g:TrqPoA:8"`Sd#L!BS$\N$0CpKAS KDc |ͥ]Ac-67=@4ܕ&I! A$, .8'AĈ$T@.@]Z;dE{8':~U-k%y/Hą(o2dx \p"$IDLp'1&F{u8 /[sA "NI"`GQJAwDDDĆ"bB-0El tY$֎lK'|E\$`C/#bHg8%A Vu$FlF#8Bc$1bh/_f`$"qE-\NsNحT r!E{\ר5U5+'Ngy጑N9^c$H<{QBw^4O/$ 1@&XXU\P6v%Ec_>q(wмRmiN,5UcU5/;뵳iWkjUIf:-lDR[5ytK'VE#k A%qA`X14S=ٓvuh .HbRߨ6h*UpJZ̎V(=Q0*G"\M92âq[:-K,SUn~u <@Hh5j$H K'V4`>ir(??  AUuP>^JUS׼~OϷǻ}!56\e>֍[bi埦O޳=y}s"b/SovSL{uf)7RT)}Rv.3XIJա#JCgj|IΖ XrH$ Q?8irziR5O~m _MY9Pj3k[8z?M9Qel$!6ohӒAüpT*(Gksc"vWZZO>(&Ao'OjVM's2Oc㖈nJ}k|׳ Oפ9'k?틌Ǿ޼te pIJe[оk/M=U|[+Ѳdy08ʶ ;g򲔫zyӶX72i_M~/_) 9P)6Vҋ?6~iP0$gJ)ϕG]gUǕmH\pgv aED'Ԅ%+h47< ;M<7FDiǗ*"1dYkqMժ{Bвաg׶~S7*%?b):'o ϧ'G3FBsi嫃O}m!.(c;M4o Q{(`en3=rA SheqEBeCOmíѹ?btuw+և^ȠI/EϷn{ Q?e_X0,-_i 穓R],j0x宇f+EՒW*IMh\ Gŭbݽ<ߛ?d0j8i7 |ɊM9{!xwo9>V:%[KJ75fURY"mME=Oq;Ҥpo7s]f/}O#!i׿o. A36rF7oV>sÙZh4g3vTB0Rܮ=t6Eb~x$*ܓhm7^NVQ\0e>ѼH#M'BvmׅOhO|mij|Ț;! V?6k{7pCb}6\b>v `d-ѧֻ4T?Vw .xw3IWy7Ǔ[Kt\^"&u[E0upwug߫i0>bSt/#܈nlJ|Mkż;=;Ŝ'M<o7m vBEg߾ncDJ}vtV!tupW;[M&ߍs@ڻ'նnSԶTj*=r1ΝY=K=}~$EblíMcٴ龢UW2߉1nM"*?(=Xe\+ֆmOttn<ݶ\֭7۵'ok{2iw٣*Ւ/tkPr[":StNDJh\{={HVg'66z(rO}VQ bqGsKcC) l^bek,=t$A)i_֮@.}nScm)S"~o|ךuD4vΝ>ZMM9v ӵ=;k#ی #o%ƭOWsSU}fGQ{s7UKR,Y&L9w*=ΙRҴ+M(伏?(S{q Vv'.J-m5!gbRr~_k tFnlͱd{yݱ6G4,fsb[mVE̩#U, qV KhO;_;TN=AMc7E|(g/~ղ5޷<;ePH)Wƣ6L2 V 9brGʅDo GES񕯷L9gju|`6t{4]s`7<qӰK?IM#~1))ߝX&jx:sT/8^_uX^:i[WoaߥɽaKJ%%IO1NRspyq_X.{"'Ƙܢ%ǔR,^S=wy%ѬZYsSuذ=2h-] ,=^0_N1rGfK嫃7o"=oJ^td϶pǼekldКU|1Ɩ IEv}-;|:W$=)%3`01=9f{4y7x o-|1I@P/pOʵdD{/SXlU j4pr+IBO?.}?v4aS÷ l:R!~׃N1aᥟjJЙ~7pm{Ÿ~\%[[g&O\oyڒڲաu" \R1g|1MaSމ3)sb/0xR4fYr|*<ƄtUҞVr3n":{M[ɳ3oO-3tiuO{=gDvVM]6q]ڽ3:uRJR3{wUY۶d0CQqC$M@YjrdvY9w ^*)Mgt)Iv\kk6QHDIT?phO) V/Ԙ+Lډ-@E)ƴXB#(]gBc4|T:SU{|NRу]o姧ƙz!c=; 3SZE: QIēc\jk qٖ:wJMDܦ7JVo\&Gd*qN#_*]<սļyKPLrZ.ZO_ .֪(2Cy˰myLmjႤdas/ ?{t&t>z7xUي嫃BcTooɣłoYҳ\`*29V}Ĉ :cRfS"Ѥm]oN./z#J1WGT,Kj MWg<"7-mqu,[Zk$ӓ/ό B0M\C{fN$˯rw3mK t II*>ow?ʾ#3w6cjbĞNJQ<%tO8gDyU˻*~"H7> RkݦSGkgU٥m=l=Yef.Yd\W q,7r΅hKzng{$w ĈMDͳd 9/7jٚГlDrѳ-U/gDb?CR**mg~`jUY.J`3FWRJIV+>&5{Ɍ ( b-^ZhBg|*d:GQL4z43Nkn'W?B`FYjt.(0'71bWJi-d&ZD8*潠\32穖}בX9*=SEjߧJٗa\WIrwlEJwIDa !h5IFko[R]*xJQ<BqUYYqBǚ_9\)r]hb>iZjܞڿҚRs}EJLMO9QrmҹӖ F|_66FڻL%;r|SDGU+R^aU+^,HY$&=Y.yV>%%f,gט~˴9kzeQFar"jio7jC&DluP׹`S-5yұEZ`J)_+ =突ºɥ7ߔ"3I%"` MMQ`nx`?[otnqCIV {Du߮eRl^]M[cƮ-c1J+a\[ X#C5"}+mK6+7`{daפ뼹Mc\Ge{)Mܦ3FV XiąapǕ1ב+ضzٖzC%˃KJћs,}4:dI=@q 9%˂+׆7nƛ; '? a%̭' SeZ+eJWB"kU@P&84zΞZڣ]fkvOK@=YulI$`ф0MNDVb-$aIIf=3]c~o1"BcUnxiDGy7Û\53 unn7/LW^}5S@|gܫdKf].؂'żw`e͆H<>wbj+׆=OƜӵ]8+^`Gp {zRL]uUjԡMXN~DeíD"1a<Vĵn]G~FbcϪBև9}4:ۿ%@ק;zB㜥&sekFUx=fgr|Oo L՗(܌8*W,r=J0|OSNk+}ZxmK |0FJYS:%˂+ׇVzDd"($=e$*r۹qR_~o!8;f~#Vj!Fbڊw_[:MB?vlծwĬ||" MNƽeSG[pN-gsʪ'ǝљijՖ XZ3M⥁j)}{0"SgOU-zLF$4FLYMٌw`iԤ͉͛:u<Ws `hvѮJV%c1*s\m4, pbZgo Ԋyot*.^T|_#ʿkW/ށ#0滮R|_Ծ]g) @2> "V#ˇ?)qzm=Kj}qiD|%"Mgym/~ۊB*=9Tdgٿ2I{npYħUS:_B#"M]a"RW1Έk\%"XRxpXxIu>"LMM>|; C<Ӳؒe["/zIJ1n}k'1=r]W5Rg[s◟ FՊ_WHD@8",wX=ff6,1C1x:2h*~}xTG`B`S.LNB?Tz2L 䖿HV`_q76 xBZU۶IcJĨ}"[hgѿ<m ϕԘCs^i[2+%Eoj;/3DD4.ƪefވ`)'v=O . E.f091ʦ]˖W@pCSBZڍV߿ip Qӥc'בcCvjn4n ԔXeǎ#S΋?ܳ#]=gMO9f}Mn#W^("!g[?$}z奙_8DvU^}!aɍgMmxj)j٫VU_*Ŭ;3*t0*dݑN>KWg11SY[>a(Ƈaտ2nc2iLڙg#@sX1|rfƛS[?Ѭzw?r=J}u@yME-}rt#o:{~_OXtE 1r]Ntt}+=ضp(Ec *r|RJq|Ov(lSX9{տ2fcuv@ux]5Hpsv n+~͸L0F$|][A>ADwhͶy#R&߾0Iև[~u|0cyjt2q{nMT>iߧwMCO6os"k܎Wҟ-^}i0-[bs=T8Yܻ3m?T_R7s[MjǥjEB"案dkv/Db͸Dz)F#ӧJf`ʠFC|'gg~=^;#|uq_'\)fog' \cq*{Py$t:K1r]'ڝ>ZDpv}*R#OJ>Ӽlu1ҍz%{K?qZrЩ 0yHui2uv:jDe[O?.3`'*opm.+4 9B]s૤>+jZͶQ?\K`s8vR){9Srԑꃏ7m3OjvR~q cJޥAMg#5S >`S?KWnC0fUgV3wx\MGbvd!Uk}G _S/◴|OBws&tiۡ^B JxLٽ/]q ]!?NnyH4_:H1%)hT?3Ѩkmi|ΝtSھv9v]f0jeܩ ۮB`sKdNj5s6CIV`X3˒c[x7k[d; #Y75ΤJ#mZgٹ8 ϓI75iO]_JXSif]IL;3)752RϔE"Ѭ *e?:O-z(,O[]6@nD %)s Y*)~nO -Si}f{~tvڝ")U8":%fsiR''a+(IM̪3S.R$4Ҧ‚q͸è [PTY}9{;Mͺf0ו ױ#"٪:s=M{%kO(EZJgbQ^)mZW_m rQ;5nb>IMәe3 ~4&ͺ3ב uoXB'H±e.g3`pcCRTkR:(UÎgRD]$gB9[Mז\~|ϿD'E١eZ`;}3gP%J*_oTbhSWJ?J9i ǟk Gľ qjlZ%ךG뿞ooKEJ*ƈ3$RqgQ(E;'~+zW~HCF)<΄Q|F\> mX~C3H/wzv_ {Ψ> nh(R6sR$c4y"gDO72F39x_._7\g[c1]ue*F/ ɱe1ۖ G[EsY\ťCR1]\*d,;M;Պ s/FD3\~-s,\*b]p\\{z˕挓v /?ϻٵ5p~o /C6?<gZ;L<\U!~gGZHn((hJQbZEI|j\PDDc3s333S h"TY_1Ȓe=F@pNR*Rz'k?(9^ul{_> DJ幤iKј0LLӸ)ǖ%+ET|4sy= sfD9u"wtdyy}«o/\tE s@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@Ah   4@@k*zKIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/digitalgov/index.md000066400000000000000000000120531507671574500255410ustar00rootroot00000000000000--- title: Digital.gov date: 2020-05-01 description: 'Showcase: "Guidance on building better digital services in government."' siteURL: https://digital.gov/ siteSource: https://github.com/gsa/digitalgov.gov --- For over a decade, Digital.gov has provided guidance, training, and community support to the people who are responsible for delivering digital services in the U.S. government. Essentially, it is a place where people can find examples of problems being solved in government, and get links to the tools and resources they need. Through collaboration in our communities of practice, Digital.gov is a window into the people who work in technology in government and the challenges they face making digital services stronger and more effective. [Read more about our site »](https://digital.gov/2019/12/19/a-new-digitalgov/) Digital.gov is built using the [U.S. Web Design System](https://designsystem.digital.gov/) (USWDS) and have followed the [design principles](https://designsystem.digital.gov/maturity-model/) in building out our new site: - **Start with real user needs** — We used human-centered design methods to inform our product decisions (like qualitative user research), and gathered feedback from real users. We also continually test our assumptions with small experiments. - **Earn trust** —We recognize that trust has to be earned every time. We are including all [required links and content](https://digital.gov/resources/required-web-content-and-links/) on our site, clearly identifying as a government site, building with modern best practices, and using HTTPS. - **Embrace accessibility** — [Accessibility](https://digital.gov/resources/intro-accessibility/) affects everybody, and we built it into every decision. We're continually working to conform to Section 508 requirements, use user experience best practices, and support a wide range of devices. - **Promote continuity** — We started from shared solutions like USWDS and [Federalist](https://federalist.18f.gov/). We designed our site to clearly identify as a government site by including USWDS's .gov banner, common colors and patterns, and built with modern best practices. - **Listen** — We actively collect user feedback and web metrics. We use the [Digital Analytics Program](https://digital.gov/services/dap/) (DAP) and analyze the data to discover actionable insights. We make small, incremental changes to continuously improve our website by listening to readers and learning from what we hear. _More on the [USWDS maturity model »](https://designsystem.digital.gov/maturity-model/)_ ## Open tools We didn't start from scratch. We built and designed the Digital.gov using many of the open-source tools and services that we develop for government here in the [Technology Transformation Services](https://www.gsa.gov/tts/) (TTS). Using services that make it possible to design, build, and iterate quickly are essential to modern web design and development, which is why [Federalist](https://federalist.18f.gov/) and the [U.S. Web Design System](https://designsystem.digital.gov/) are such a great combination. **Why Hugo?** Well, with around `~3,000` files _(and growing)_ and `~9,000` built pages, we needed a site generator that could handle that volume with lightning fast speed. Hugo was the clear option. The [Federalist](https://federalist.18f.gov/) team quickly added it to their available site generators, and we were off. At the moment, it takes around `32 seconds` to build close to `~10,000` pages! Take a look: ```text | EN -------------------+------- Pages | 7973 Paginator pages | 600 Non-page files | 108 Static files | 851 Processed images | 0 Aliases | 1381 Sitemaps | 1 Cleaned | 0 Built in 32.427 seconds ``` In addition to Hugo, we are proudly using a number of other tools and services, all built by government are free to use: - [Federalist](https://federalist.18f.gov/) - [Search.gov](https://www.search.gov/) — A free, hosted search platform for federal websites. - [Cloud.gov](https://www.cloud.gov/) — helps teams build, run, and authorize cloud-ready or legacy government systems quickly and cheaply. - [Federal CrowdSource Mobile Testing Program](https://digital.gov/services/service_mobile-testing-program/) — Free mobile compatibility testing by feds, for feds. - [Digital Analytics Program](https://digital.gov/services/dap/) (DAP) — A free analytics tool for measuring digital services in the federal government - [Section508.gov](https://www.section508.gov/) and [PlainLanguage.gov](https://www.plainlanguage.gov/) resources - [API.data.gov](https://api.data.gov/) — a free API management service for federal agencies - [U.S. Digital Registry](https://digital.gov/services/u-s-digital-registry/) — A resource for confirming the official status of government social media accounts, mobile apps, and mobile websites. **Questions or feedback?** [Submit an issue](https://github.com/GSA/digitalgov.gov/issues) or send us an email to [digitalgov@gsa.gov](mailto:digitalgov@gsa.gov) :heart: gohugoio-hugo-6abdaca/docs/content/en/showcase/fireship/000077500000000000000000000000001507671574500235675ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/fireship/bio.md000066400000000000000000000003321507671574500246600ustar00rootroot00000000000000**Fireship.io** is an ecosystem of detailed and practical resources for developers who want to build and ship high-quality apps. The site is built by: - [Jeff Delaney](https://fireship.io/contributors/jeff-delaney/) gohugoio-hugo-6abdaca/docs/content/en/showcase/fireship/featured.png000066400000000000000000004133771507671574500261130ustar00rootroot00000000000000PNG  IHDR"GPLTE .17K    "'= "2 )A(,? ).I$,D (,E%" $:&5-(9!-#7,?%&=(,0#1,!5+/3$,(B7e#1'33^0U$), 5X):#& 2O-N@5xEk=!B4 Ҹo<<248=?>xC:nf;2DGGH5IRr=s>!&)8_w9/c$ $!TD$t+% X#0=BG}-&Q6D5^l("*n8>1i1n7.8>B5*a98/2NJ8D5U[`uuwLPVJ! QVY9.W7[7A5n}*9b4+u{U,S&`gnELQaU1*jHS<~O;;%!lt1)X`ẖK9xH/L;elxG+%kln.<@FNg5Œace*)%"tY~owI$(NpͰ#BkԼ$[C)9,>S£H\~X.C7C<9Mp&6IuYT%l6Fs:IT|JRVCW)u1NF G_ވFt:i#yWPm׾SwIn]yeWJfytL`qO;wk+MM޵Ϗt݉;=K-ٵs{0IW7y߷=&Owd]mPSv&Xgd4{f+C=^pm{ ޕpt0v٭+vvwH׃oe 5|1q ͆yl)LunٵFXg;O/YLđиxsv#;aD}Ksnc@Iq?wܻ\ʋԼYo4b@Qq??=ISbQfrz35&i7: "]L kAq7uw{hejηmܙ$*="=@wAeQ$v^jsC@j{vw@$iqܭ-yֳm ?, 6Γdr !=\$Bw2L!ƽUafp7#kPw=)"^/@Y;i7wS=r308yoG0tOAW8w^=g<, Mח劸fxܯ_v4n8m/OEY-{|EH38gwWG#}{Zc22Ǡg紑2[6Lݳo]ٽvN>1i!Yx^r_c]\" D]U oV/+ F]OS+سytOZA|k8,LacOr;;@6JNUαuL˖bk5=dH.0{ײI,Ku){/Ws_h-/\m؇oJ#SRz|fnvLy؁1-Q(:.R{}З~ׅ!w<,X=g44:p /f]{eY&urOH|Ww;`(Λ0G([OV&cZg)ɽ2yâEHEpO̻;Y`&~UzmL. $[ 9'"}&e"v^;X [=ʴfn{ovQxUT[N>~(/ zASq 1XM6OBϼmLӅ^ͷeQr9OvIK_R{ݶ# ܧeILU\_7Tܗxz>0U^+eRUE+B-0qG}guo݂=Otfi<ߞ̋=:9]%sDԎ`4{3!‚v\5sQmgv/;+ڑFGqtr~ϢTakxkvRQr7^vg,ҽqXov_(#yӤSQemiެ{{㰷]L/ɒZo2+w 8?2_]}}t;0Oi`ivOV'ӭۇG`d{{nJ1v`>3ʝ)ە!w+roƝN^W;]y}x]}P_ wQ<)CX.;x^PRÍm k>roݯ?9ۇW`/(2v2JrG+0WveQr?ٳc " 3R*p@)W H9]}ss $y}w{/@%qu^}ru@Oq(~<Ŵje^z2@%n5}55$@5qoWedǽI܁j};POU>;@XOmw;@^׶;@\;q{'}4u]'In };w@H;@ q$ w@H;@ q$ w@H;@q:q◝;m0lMy6.2߆X Kʒ'".AJUa pĴir!vuUoYJ|]4tJ0SbIeî$p l{0IU*ܷ-A,֤9qm{~(6H}ݟ+atd2;ba(;889y7UF/tH۬qRԽ:6M;wi&\+f{6mТ1q>YLܯE/;XhIpmwp-2o?;\{*lqOL܃;q~(h_欹lq -l!9a 8Pn!9e;8 Z]-;8zPbꘟ\wp5Hr(OErp`D)r0撸t-e;qp;8Nf *JH%]{9XͲhueJPI$JqФx$T6΅t;(Wꏻ!QܩB)GW٘hHAQ&ߟ@.wHYhD띞_\&NBrD4JO/tYso$+a$!qPĝ27˕;Ty֞óۮɳ{Qlky<֯VG_m7_}N܁+ge+˗'޺h~k&ŧ;̪qxjnűnB}LթxH[Ko'{oۆY { u+lto(v~T@wlY:R>K_=4w;? $nq/բL5upsqTHM&qkڿ$q+L݉;8{+OOn%IfuEmV:qt xWo7\7~=]#9m%Q6P˜>!I!~2d)0 i#RZ謜,X޶M*rO6VylpWayJ' w?p굈S tomviL9w蚩P(ܒn*\;~xR6p>'Q`4l8U)L n=6٦(窂i\ b L m57TV2MrZi%уYkײڨ-;MAvv^Y_ݭT}rzѬM՚p/.ݨ7{[[l4V-Q>FUPlnX9 ^ݫMmՍ>:M+wK*L,Զj۫r >wpۡ-{XxZ-Xug#3_hqmWk' wqjk~l)+ӓ tNNW6^meu-lY{pw!b+noqMnXFou̙|X|46F;S ˩)YïRڶ8=VYqٻ",I{_Ɋ^!lTN'*DbK A2R5%= |qUE搿iFmc\uqV M]UýM]>35d?o-_^[ڨ-֩ou/ϭW7ÛlEYYt;Ckǽ| i-5Rp^+"]fW)Z3;˹qZwx]xMoB^?wQnojWymwq#%W5f=1*wxKtnaV™3L$}R:10&F(Of=$JP;I^pK('g6VIex/3+edI(/rqQ {IH^i*W2WIGl-13,$DQeT=aGnJ`J*& z1J+ˎ%X7٦>q[ QCj9w\[fv-}+?[#wTM kSE&w;3 (DϔDNv䧮NOYEzyC6]s-+{j[(u}e.}'zիCL#>22GDI*\.ȋ=@`opI!.%cYdĄP.i+*(p[ؤ>uY'V/RXٚ=*̜XYTG5HR.Id(f*Ql;8k?O.'˂SV0 3VI J]n}xhZF;Z\z8ogςC][dOܿ Bwm wQik@3VwBWpk@]ł!z@C&Ngz^Po˰n`we~g}믿B]Q__Kt%nsx ?< _qۇ4iuAF"Z̪ərYK3p/L.JޥZ\11Xf{{p+ѮǛٞqGp_^2IP飛w}!?IX~awV"nYSwy kн+Qfn:$RݐEðSߗ _ |?PFjl]/]G?pK/_]|Nz~,7 m )jŌV ڧT.eplrh`#w|O&Ztʰi!9$͙P&]I A(c!x &riV>x˖T)l+zXK~lűJI & ܳ ќjd:UT*$5 .31 FH֬8O*I~۸5~*=- ǃ\c6@ʧpoP@[___] |Ϸ-B7͍jWϷ۱(>FN}Qޕ^W_歟щo~ג# JP_ jmzvwfۡ}y6^K?E+)>m6ت-F({ܫ-3K Ob)/zѓ6vߵPǩS'olA]B7|?|G%B/_}nܐܙӉ?;[naw]8٠/"Zo#S7n{Q&Z`DᾷP(m>\m6N1#X/*TGA6&1_[td b+צGwD3Ţ!r.V\ߟrIfǠ}6C>F!oL9Gܛ]Q!|Ir\<k v/Y [M0~pL*_HpG1ZER,Himh'SH?c}iCjcྼE!ލ/< `Ɏ#oNGLap߶f]:(ȃwvZg͕vNn-7+]߯P^ џ:ҥ[ }˺Jn >p\\wFQ;'Fw`HHa4';a;po6 y͇x?~SO=u c꣏i:4twFryl/cKU3^ y״in`[VLl_;^ j9p?ͨ"}]۸@_Slw>6,Nw>1;qb;tS~w"wp} DC ags]h OI3&| YvH A2qکHd/> &^-Q~XtkF -meYEuBn!=.!Yh}HD%Dҩ5ri90^]`;bJ`{R:=[VJ>31ml|L!͐zŬ {7ry3͝}f}ga|/S 0niЙ@ hnb噣ྲi3׃}\vij8pxN ÆL:h//sxBwI: z]V'ܛsJB|"{t L$dw>ہ<Evf@[ 5C}>G"wྷnɗ'}ާ~O·Uu^|psg.!j08R;{"kXd>a^@t>jtDT[p{\p$%pIC9#YvJ`FRjǜ[fSsIg(x$w0vZԢw5MV ɜ墁;c:a #zq2p_;!8pq(x8F=w. qJ\8û@y8ԩi<6V^3PfPI]=2]6He _Q>F,0| ӕbrQ1y6= OdEteb8^W 6O0i*ޖb*Ȍ闷Qr  D i45R cnu7xcd`;sÿ5.wƻ-pPvn.[~y5Yӹǃ~PzOp. wUwbf[Mw^!ts_sýpp^ y;p n %;cvbvݱxۯ̘^=s#Q+?Du> ly7>Ncf{~1`>%DgC3ǧ'ṵYbdIC exI .K$ ju:4釄(!3:DyYuJd 1g)1 jXBRb,u)']{@ݰUfہXR"{HK9T*/23MI {1F3&Vđx6N.dPMI]~ 2H }d^XX#c^fC6 jppGv{||Xp/4Lw-Ciw `l;Y͂M;wn׷fp{W8dL=v>={0QwFv#;|{=w$K (pe7E_f vBwlx h^=7xaH9e@l^gIB/Hli"w9 qqI:2Ųsg@j<&Me̿ v Na-1cq_E]anFıd{H6(݆f'FP savy.A2 Z G Lv@9(,/F3XZǵƌmP } x/k84+6>CeS::3NCuW˭oӫއB..fBn =}u/k}3W.ǂBo`=W-D h4\E#E{wfh k[e+OM4'YjonP ƁF/8\:o|/RYʐn/T/?9OӴN/o'9I}~O:pKAd18 v 2_{ <ʣ CyK{䗡[y`ݱ:f!inUE"e;ڳFU~RCWB[{z=C=P7Ҹ tiaLijYelU ] tɅJE; 򖀺0JUlPj;Ofn,,?XѰH,@HP⢋OQ2M'UG <'bj@hpĠ =h{o&zxϏB%Re3h&e9#+l?cq=mxWu~TS+@i'VZ^}̙ :<Ᾰtj*e'֘)X?~ܾ),kz6ޓflq f>>w%93{CKg;0sSch[E㲌:ӑvKڧu{GM3C> 3Fn!;fwVI; ~TK ;LZ"tWFت],2[Xi m$[Nʹ Dzsoʞnj|.rs)!Y4J(Cj&@{idHV8ܓ/YRwʞ^b88DU.V8u⌢UMK빘SA臌xx//4m;4FnA^]kW23;dwaX'yGw#A {th7w4]pUpH,ս{˘afUP{Au$r;U(˅$^`j%>C.JwT%yk&t;}rmPV} )]6rKwdaWfZ-;y8 ^zMT/B%ҡI]%+͢ |=噁18U6UGQJsTlpJW$H$Q1Y޲S2Nh0('  kE*S'҄\ndT!?oR?أfUڷn' ,{|~kpV>~bb;9Ht_vٿHm=]ep_pg~͉  {v2`7sٟ!qqqɶg!:m = ѱ6dH]g'4ibӺRS ɸ#[* w{=m%cz ah'Dv;¹  ٝ1Az/TEBwۇH½e,qʨS·bʶ Sk4Q7(&&'!'ɨѡ uO:EUK3a*6 }*J*x@gJ S,],C!wV2m9xb;y (GUg#af{ $OQm5ޚ%?.{?9zKdVPIQ/+d6@ҋ5ZHܥȐ_;;{ǧIֱׁ쎜4܉wf[yd|G[ .nC,ܧ\~ ^m/VPvkUU|I{_ƓO,Ό5S_uvpw1u|#k hc{T=wR폽e\f[ mHf!?YGGG|t]vOܤ~L7RKjl==)Ar1U T+.e@% ;{2# bx=k4ijW&S/OkrA%~ C$uJL봇RW&g ZU.nH2T3v:~t7{¹,g{[g|vp=a Sws\v]2^EȼnRJ b+({e'X,; AW(! êKI kVP#uT sa&zH3ga3p'u֚BzFJrhV^(0bIAZFK Pa@UY4 Dw].ozEl8aY6j jA"fTr$_lK/w`x%ޜ;{|lU5q)0.ٻ ލBืϞ> ~c ?:B]'OY>qԛg Fslܡx.uLw:'I_\Pyc]CF(ikRRw ʌmp[΄ %IqQSWN:s> VcsxI"Y:5)މ[!O^wŁ y1B{bU]V wnvW?ƫ]Ms_'Y##k+GG<]f=WݳO!{=M+zTI/58=]PN.oUsA'! y&V"-"ٽIU^Y|MZJ8rԣt\ /( 壬FrE7#W=lފܰZPB{=$Iv714k<>M!+deIJ|a^Q`iU̬UkBjIH<6Gh"ͪ*B<;g2:Ls׋`vFDѣcVГGЪG;B6b:at͟aV:[) ādgg#zxLmxa5vbiiΗkׄǷ)\)i4}!< -$cMV &d;ѝwfc3*c@?<3Ç_ya2qCNEtߵo׾w|Ͼ;豈Ô!u{y00^v'=d-s%˨uToKحZ[K(\8"ߋE4T(Êmަ-ADrqZ*G^/yU 4" [LMY.ǹ@lϒ"Q$6(k&it?#&O0U jbРĪouI鳻6rIwMIw< '"L"1TG' :[+Z؉m8Iq;*1v;V܎NwWC5/:eZVdݞQe`A2-A;xkm4|3ͪ{f V<*=evx1\*Xg1\2_= d~GY\YHf, 'b  HA=C/Y?Y[|I:h,(/XJ{BcXxjHs`'D&v$jqPa!=] ]#W?@xan?ܿ}v~U2\qU7ܳkp'5m2} ƔΪ`F*6*ĎdiD.D'RPs"AF'+DƵ/r^Q *Y _**M=VU%\_Ng^ۓ,4UJEK,ZS}k[ï &gU @w.ej>$w }%HRw5R;2әLrw1%$3͹bT"."0>@L|A*PRI`9PZxQzFW B!p/\iEA@\`vK:Fd^WM֨Q4jE'+_i]l3yוaX竘$CiN<)GIDJ9Vֵ$v%1u`caݴH|T$I`w-;pow<3@W76t\&ab2nr׸E.+XNl!cIv=`܉e]+6zǿ_q-"wTPJDuշ W {z)!Ƙ{5`N}$Pu).2wk629p^%fxY Я!jT0@@kŐ z#w gpB(v8Gpbt̪}xkC".pW؎z_3Nb{MQF}ۥt<}"pWFw~5*f>|Ӎ4x`ACC;nݝH ԁ)@yH#૦a*1|: ,W\,YyIhC*"v( Y_Fr( ŨT{_+5Iy3GNm%uMAQ̗vIrUt|ZKۭ ycK^?QhR tE>]C+J^J4GVy= Z' Vr,&NPcKGfOVY7C3/$_2wmd;zh!mw6i]ax73SpTtwL\nTخʾdbJ0^ =igfr ceЅ@iٙɪs :h*Q~~ h\3h^x1zN)(N{zzzyytmo{۸GujQ~'~jvcS~xv~ Vbl*pֈ!dfh2QINq v{ $֙{ >Ҳ9Y;FٻBF5C3d+=@%<+d[Z3&9ā'ψktHtiOp @\QDU+uC@{ {.yH &{Wҥ pg~l/,d>؊1lFl/h(8Pw e^-h{VkUs}k sBN2E W8w3_p_~-gh; t ?×N>tLRLN뮇(#U&voA;b{?ܱ˜13i Vk+m2Ƹaľ'X)E Hm*z-@.2h=Jgb?G iAY^mwZ/sb"k3Bbke*lj[@%+ l6Ko R@7g(%Qt5bzTl7k|QEutGnF0w9}T/AI&:tO渪}E|hVU%S w9ꟾԅvI¯kۥޡ; 3 wݱwSd}]nԹ:$̷c_({6R[7 FwnH2f$GɐCQ~oXP)Z#*/QBsPw%7J?/#nS)$HpLb7%\.mǓv-<#[k4&{I6m|Q[PWK>5k c9>D̜>ݧlW*.clMRⷆm=ّ[ W,/6"',J`Y?bxp}^wړc>IvTvu[ޢLQnh2=SKr22 p?dp? j5Û6>GCVYAwjVQe"vo2 ؞i|ɴjsZQojj ۺ#b,}`Lϥo7䂺ki%{ZBdVG9r 3 hMNJǹ/27p 4x=j01^[L 6]jhSG"m,S$\K GU@;Dو4jC 6[@/6ʂ=O;PLT]4u_݅;=F+e9$hKh2jڻ'NyQuJ2Nq]v5 9ݥS !h3Leں0ST%޳wMV%!-t(>Yf54x VQy KA{ + F)j,>$4skh&pA躭'ŃHi=t贅]y3#d~&M^ZAɔR[Il8P lKñe0ͱ9)_%ÿ6J=YM3>vVV,j1k6I;0G[᛿Onbw[R[ܪy_j;_jP7ݺ'(#idwBwWpΝ]lW2$ֳ No܁Sp;{&˼*`z8qw2*p'`݊=n:ڹfj$fȷ}[A >U_vU0ɆEW[-fJ,"(C8HGׁ,ZLbkhY&dWЁ9H-pJJ*(̅7NY&TqnO:{nimiqsrj=}(K;>E)s~b"K*"E79!ed%_MPs + SZΉ w,L,Vv~H jPFM]NAvTTw)dv1 *kݡ.m&^uGXSNSG#˼_}z&Wx؃D^7_fնeNoW+70DNLNgJZZD-s'}BDM^=TtȀbXx`ʀOWo#{9;loq NqEv; QlQu;\wh_,ʼb۾ղCGA1܇Ɇii# bADRsѪޖ<ѭ2Zi[jI絢-*Rnb34CzT1!\1f[zs%Td1@e\ jo ;h ±ry*R~x\b,.<`SrX@\$O!$I MDPAI'}!Udr6~ mA~,] f 3}}_ZjP7^3B:wwf.RܩOwvfbŸuVHTWwh_vn by%F0e P R7 -ۅmz~J@Pc9yMqa;UDi@#PWv7GMΕ90Bre/}0:{&ܟ}nTɸ́+ۓ]uR~cgz%t2*tթU{~n2?例jzX=gnmak*}|:66vy%?D0 5#6aY`;3OC/>3uOXUETFx#pPkrfR,7bKGIL|̙4\(=A"8+ aB p:M.PhDFW cHNx'"IR9oKT;Lspy]T+[BW"#vgIh_KYbޘ!9A3pmܻ6[wEl]9wk ;deXCz1b{o l*B!;pp1t]]+7a\$Ug+v"(p7WTJv2H&=6{(ݍ@VBjmZǟ,s3Ό(W]/@XT4YHysԭIy O4igͻjՕpI/ `:Y˨jqn*([x:} P2?ZWI;ix<:xy!1/iS" @_[nfʔ_F󘸉Rkb̠W onlrh ns|KoZ{w7jl?ENNѹUg5tkI#ւH2Z'{źupJd<1UR(ct}_c,5O =`>er,zj (YLjEE'FPVOlW/-ݻ25@?K|m{z*  2uI,rӑ{jaRl9$J3Seb064TY -QNhZqe 7ea2G7)%?ő^1C}<ȂyGQsBT~ //U6քVֶ%<۩\c薅䱹e;A'pOejۻюOƹd43t>o݄(^nvA]7{mEsb!ͱGy!_Ю׮~hzxveQ2Qgkdc+$ܽ4D1!W n*b&FJ Ct!Dn4C2lܠp7,ոw'4SeԻvkN۱]w2 п ڿlLܯ}cǠ;ߛVbF7lP8$p߹shrR멲~|-ɀv& "RWto.P_16W Qj<CjK5JCݜ*6VkY\1"!l<9l5KT/B>I~Ilz\ppIgN6qX1)풐1pًUslJSI:g;&go8 Sz` t%a;p-.kԠuuqjQn@:]lwtwd/X9;;icӹ[.y_FY< i] ԕ0BfQAdC @+hZR=s/.3IR|=unrO~iq *Q.}M#L5,7,\p(-(7w=`'򛔧/^4<Ǧ%_ -IHY, ~@Xܗ18/o5uݎgtg6 pB =hT9 wG=r'ۯZ={=^H jPv .:w'[uTRM;|kݾ oO&uJԗ2m:w2eENڵI ؎2}u$VYfRQUV&zhh*mG4ŧXc]^"V"p[$o)ZۂB"W BX|J#&9<)V`ċ#'~=%fnP/yMg}炂FJTB]]{Kͳ-'ꛏ#55)e [pSf'}g?kyD$C̑ W=T$-S6F]H\լPz~ ?LxdXjxU-4p]aUzé۪A ނ{.g{%d Dt-lw;LOno >+"i3a!u\!_Ymo o. wT7o^}R\Fm/)f7 <L ۂC R,Ѓu] n~[HӔ'@+jeS4R?xu7/O8ܓ5PGsµ"qfFr2II(pb1]]kab0Xr9$p_][AqsncsOp?5wl X$(Ӌvꓰd) ˓2WMP/J^ȇVv$w ;YIp'*ϔRRCRCo[_IEENnvvNm˙Ԏb?œ,! l>.oo4jsf6QRbI%VtfXA/E&`105/Ctp Z M7zRFX w .~/)ߧ,v+dIr#)):8C姱61J{.inl{6'ﻵNqr\ ҢSTUw[A] ^ Ome^;6T7jIaOƱ{Է:E׸|+_NgޥWq2 7a5 ޓZ-s@ѿ~c/i=cepgTu0~z#}_^)Lm݃؂&zVN;29lJe n"dDBɳSy=BI=%aklǝq!E= ]8E!F5N[o1&k *qeQGRýiU=n0H!5[L/g3{c ZDv#xxO܀GO-|r_ ѳw]4A -Ua4V:jups?b v=owp3/{(?D9Jd; 1۩2]u|!B 2MkFa= 6\1kvvҦ2*(;SR䎔K;Cpj8raڦAаgd,Hq H!\&V vnڢ'ӎ{uuú $sy:zTA2+ɩ5Wtٵmm฽3&D\h_^jI^QGЗCyu #ۆH$1^Z%؄ZwO| Kt"wgA.ɸnz&Hݝ0J֝X Frg|~쵰}ոׯ_ Iݳo jtٿCCCUlf˔2~/ldN.H );]')fc>th:z-RѬ{#X\Zg;T8Dpi]fJj iTLu2!P- e*K_e޳z>t.jjW{)l&[URcۇus$lвFy=S59p"]6U!VϺo9VfhaT7/E]>kc̚}keN1Qg-jfQ>Imld}{<:vR;lXgXM|]9~g0ꭽ_:{ų.]82-qvqsڙ/Μ;q8qcPk | _w#Kd4ݡ ]}{wn"{uՔPFp5})LuL/P5|Tx3%.]}ܰi%޽9t'}y|iffj\mv8S,vY @9z"iKGR9S7^cdԫnP)С{ѧ)%F[9 _%Tf߯ =@.jY7U/=39)΁)q>#l}(6H|׼UG;$پtzs ;u?uTjˇYn. Ż?vvaOHȓlԖt`[73oRߍ~GtX u{p eN.Mw}9M=iE&$?v}2ᗯn|z0u0iԺuV1Ou|T;TUiM;?)n&4ÔHdNX7ku=5g{xOJL6~+l2T4[ٸKlۼҖ,ӣl)R?(椸dзyO*-"z 6NP6y׽q)zKp Ql灦҉[on* %`|De@|lNa?w_7p_vnѶCs/9Ԭ۽;.=ѽ*q"y4s%5n G93;7;wvۄl5M+dLwpx0*ch_ MIpp6pWnLOH8$6}뺱 ԪQeh3K0T8 F_gRRZ8 wXGԬ~kpT(kߟ PJ7{tp G-M])u1,bDk /?.fT)fTiکk@;sa@uBnN߾ V=0:::919otpx[ِHZ=U3 #7Ysh{I}":L5!"WV /Ny%tfz "5E]i '2طҘ? 5ݼ+Ȯ6Թ("&K̑"& [kT] l j5;Qp۹[Jgq _Tf5 " p|RC^e0xB"\6܇w0:\wĬ[l?.Э}OuG>ɭ-YWm%MiX`N>SJWL{@:i5/01mANm9{ܹ圕0O/_xP r|P -53.;߭}656iܝ*CL'w@K/NQU΀*}Uo54]UxebYL^Wf5˨nZ=vxn¼2;wr߰M:oLm\p/ffJr($F#gڥLPWm)-PZq5^QKa ʷGh=କqRW@ZwWpFւߴ)SM0K/ wP.H+&?o숮/&!Q&~JWR ۰1v!RF呔VQM݃;]W)f"g I聒Ɗ*# N|vGD99rd{|jbΞ-Csl3= a.PH\{S;.wFc9v}0*es{S]R-^3Uh2Z.z {o4ӭE/z:wQ&>-d#092c!E@^7R b6K/HG< 5D*3? D&S@}khl.2'Ld6}t$L&h \.Һ4m;1e2SB $Deya.cܻ 'p{.Cɩ.ue;';5G(ˬR7n U(DsFUC 5(hNl\Hi3_5U;zHEa6Dk"Ce2+Ly)Zvyz>jh0=?k9Y;OIhdY$$>_Q΋^ TdXrm>QO%44J+3,u j[#]|h@{C* ;ⅱޑѲdrT+v6߉KSwmݻę?}Cݱ/,yWֹ?y$5 ; g>wG8+S&+CY<Dg;;sTݝYm;Zwa"_x7*NjEKtRiOӦP&2 lj2JAþ#z6RI '"p7aa;: KIۡ%K耽 #&t},4Bx 1q@v[B.膳On" fF ŹofN{QY(̔L7:m^âRiЎre [ЌRUit`.ˌMew'2Tn,=|IYܶ?~n?{S_O~n ;UFlwz:Ŋ+=KrCdq=]dݩ2vwz .ջ7n\rXt_՝Y`sl 2{ j@h @! !Vɔkrcn0S{ ۡw8sCyzVFOF"+h2ܨyxMYԣccQgtjYGNŎ5^I(7 I?ғJvѠ8q P"2޹#?SײTs06biv 2K7Ν/3ۂc׌}p?yafp?~Y(AuwG2vd@2^; y/7'to}}:w:]{~=vB wJK}Zw:jۨTwdwRe6crt&`=LTR jgYHa\JSjqD\H əek12tTӖ#gJZ ]3=<22QBP tlUupZ@g82f{ RU46EUխ'/8glݻ}2F~IS)cM~UƵN9L7Ycya bug(ć!Ŷ[vUD56C0e/!ܯ Sۄeܗ|?KO.l]eƃ{FZܿv+{p'{grb KvZ4Յ6*ATDD$"Ĕg A"΅_p⺞._}]]Czz{2FwܭԱ'=!φⲽX*N|rjzL=| eB|;gum{vLpQ?Z;.c>>3:(ZMϼ6\mZKݞ+$Go. И bd$6N9+9bUF#5p}ٌ{Ms8fe( ,n+G9/gV9Qbzf  ~ﶝ6$mav<5< wL`7!7I,?~Ps|{]ɇ?tKܦO*xu>kw>듻?zç>o YT^za;RV2N;wў?jdUKbp;y`- >y7PسQ\Fձ[8Ms|(-1͝7v>:};#mbY7<vP )ws=)s[Tų{RejNH+GٸWFp'b0s`WczjIu :b02,53P#!/ \ɲf\/FxmFvqvDNDkxԃH&uەe6xn#dfS֦! |K3Q8_?.++M!b '۸+O `*:Wa\ZC鴴6-έ2M= 'njnE(0ab2ָ۷}?epz}BP%[pwn=zߍ7>L=!S@MqWu*_e;=ѽ޸CvNjApWIp_hޝ*?U?dJtwz3`;sUہ{нu3)K}8Ϧ5<:MN l$ C1 )3N#c xݓCm ݿrLӹp`Xa;FHrx93P=#xC3LxrPLfZoR#~ihV @22; &^5&n>5+2qS(Y[,~1lɸgvP[ xFG^d7N\}o \qC/hەbZ)߸~{K`V9Wi1\2WdW/avvP.䁴ԚeJ;\c(co<0Yu#ޢqOS6܅EokO3䋎>vM?+dKm{ $%:2VMUn-e{շCwN z'~1pBҺ;$v~Z|ZB!]o`DJj53:bB/g#6Y5AKi V5FhӛL#GmREԥ1y͂@ஂ)vmjd 7=5=,'h2؎4le"oG9 lm] F3^t&]V&'n¼{d?[5 ]8СrV_i3$^Ӹ-}߇{mQ S䗩uFSK/ z# {TAEzxw4g9e{`Oz;{JBqKvչd Ss4cBqx(LbZ;bkݎ~ Tg8XOÿF#N/oύ(poGAnst5 w4f ~u^Z=j/;Fir@*ĵM(@#`~ pGI9ئ.eEܵ;G]]{[a?>9N@'cUMNeʬ&QJtW _|Oo;1fJv$7}c0l7t^4w1;p1|T[Tb {R }ܥB^R=Q⍚YƒWv*t]G)/L=YuTFwc"x~`fRk/\&ʯӈ;U`y̦t;0Sf# ^dHQ^3lY)s3:}L9̙Z][ Z|(G5Gx+1/߬j+ݜ_1L=Sh.$XӶ8]-św3 *+<\6AFY!R2"}ޣy$ CI& nҝ6OQe4?>Zeӷ~:nOY_K#xw5s;<&=uq9߇}п0]ک^: ]ɽ޸ ,s"S.6L#+P lOSBqO>wj"Ӂwꁤw!hT P[n&#'|ܩ ߤj7бM̄;紺C<[E!iV6$S\XOCS*$͂w` W=)Ѐ (SoB#~X?95s 1 Ũhd;\FhIWڟ¹؍ QPt(5'g2#Ŷw㍇I>MSyv]wsi'{%@E\*=Mb TU $}]uB2K1C\Ә!)!3;j-n#iy ]d 39iGTiel_fV.ܷ2="'V= ,ewuE:J}`;DOsk=GS.Qtc0Cv7\vz]~z L9pWeۇ5-.[Bxh|. =jz@ҥ_ i9՚+OKm6}PkcR`t7%Κ)X~ |G_ma0%)yb᎒q I:dt8C=o$spLj9..++s-۹z-jgXydդzem~/}=94<|2Iq!ۣ2s䃯brj5?./[R6P3 7qbQ`g9d#>BeX;=OyӜ+Co+vilw |eDZNN**3$%>iT``. z;ƝˤBܑ㌉Y"W c:FZiD*ߺ޲տ,.vRUd;pU&ui>G{y^QzL.wdxj}/;NwcC;p?OXV{ս8]z, @-*rtFLmz}DoK`aV TK {J'o[AָeOM+)iۃўhGč, NixĨI YSeI_:̋tb5~/\ۄs"Mӕ M "DWDtYMtYN#X&PElaMzЏof]Ɲemv[KFXsM޹'? t_{vv_.A&Q޶shk߼pX`2]R!rL>Dy.˄4ť:xt9h,K3!Ҕ`AS]F 'Wm6s;Nla^K){Sf`C?jR r=(x;.l5c4X@.6!쇙a6tJ ym׮*Ӱ䡖nOU!^;8AZ L ++dzMblUi 3@!FvG n@*$K21uem~Is~ǂ wQI uq2 J8E{/'a*kwhw2pEs2&E;v; ms+do=em~/]}w~2Olֹ zs)lv Az]ng[=2)}76֜Hw%]]w=4ݏ#`ʪ4(zU$` = .We3A,MKz |,Š@ܞK?D[/D;=OP^K pϭ^w׸WL% s!`kIof|2Ϭ%2&幪:5*?S-lQ1G11z'6r ?f4٥ lrO-#a4op'yƲֿ pBPl/%o]&)v}Yɟx j2>&d!ߨYetAaRtQYX#Ma`p7ѝ0U"A{-s:2Lgk{= ѯNӁ̮ʷ mPT;Xċ v7({{<;`GZ@} {OlsOjLe uTv]aHu]52ͺU!r֠&#َ}rDR8e{)]N^rP8Su)2I׫ R:_ ߣcD&27Кd$~\^VHDvCU/ hx4Vc½Z>WVF,6!9&QC+f2Tg2* ͳ6+h[?]'k?/]#d{j^^_ˤ$tUe}XLuEkڱ{=t2p3oN] |놗ew֏pweJ>6tϾe8G쎻ptt zgld8af8{y^ݽ AcXץlwUޔKV yք_6힂7\3)ti7<\M92z<* Ӊm w!Ҥ,kYwo{r''릚;Vy.yVaZ呟4VexߟRo{o8W, 6Bo+n3d}rDO*3}\A]Ou9]ؽ曞x{5۠$loλl3'=b$ c0Bgv~KKyM{J}^,|zZ>ϊH|QXH<^jl,8Cܔ7\J 8 C}`tyfv׷wAMMYy1${r+Qlg^kkw0=߼_[ۣƠ`Nd0viG0sA} kݨvnjזnN7R+c5:"U4G@'Xf}]#4&|v]3I[OsR5J4woNr5۷}O821Jq|=|DA)|?%߆Wyf;c%/@Gܗ::L-Ӱ/vAq {/]vp\N/pWc?>*w̭w'3 w$( DB|؉`lWX[T*qN2|q 셤Òe)`Z K'刋I#I> h-2h Wrh֘I9^D&G#h[|1jZ2-Ljb=lq~i8*-(;s>ԬǴ'E'a8͍E|4I ܃}G7p)La#~5:ZSmWN`B_|!xt]!Umz*L 넻2#fκkWѦ;t'JJΛqQTe^gOxy=_pa]d(*OyI^d=U5\(i7]oi,h+4}Ƙy#f pClzWE3þ.+gc\o SŶmni cB-rΣv]x̲@<:ۥW^wޑ 4Z4+,ڇe::<p}x]]ໆ{ٙL]=]]?MO]te`b鎮]en8Yg羹e3$NFI2-xYO-^Z'*" s۞3 k&+,?;9".4[=wqi9ΈE0R'[CeǣEo^ WAnc t4RL=p2}rr5 m PiV_n̈Ԙ84kq QWvrA'OÁVS 5[]jYOO㰑4T]B +@%ܗ:~ ]˽ ]?f(Юdܛ0N[9ẚ6Ibt!^nN$YhlRO&z=/A=ӌ.Sٮ4 =,6ciK%?~m"{81<(\=^8S#=!->e['8 5HASЪzߧHg8W"qֹvU ㆷH[96'zNа+jQy-aϤhvUI\)C _Nr噖p_ܻpho0S +;tupw4wLZ}){,BȅNSE}Hv* p&[㖧 9ݽ3<62>'¡m|Je#( U3o*|NJ9; w< 85zG {'[sT=1n#&}$Ȓ1Rᷨv,) U;vRqYbpH`LѸ,.OSVX3V{򨓏:y ʝ6nwv-M]_ KXw[]w]ԙ>/# ebE& ݇[QUti$ڸf  KҔ>6gxɗL1g9ti fW,-uYT3mKщ vìMûp'j&]*Rf Fُ_}턜A.z2*JwnJy"@95U =U.3Q%;G~|KJ/4+6 iN/ :Z>^!^Niö4T[߃㱽PXNJY;fs\l094AVV]=Qf~vCG-T:_~g4p'|eT MAzS.۩ é]Doa+6WϚ!;2΂{; 'Z½d rxN(QMj)̉j<$ts0OˀX~ã =mܘʝUl$TeŹpsě{Gw@)3X|o~ Oy.╋{\ូۣYeWuӍ3 {έG#RY7|ko| Yf9r˴_q:R|@bDk"z%1-Gi{ &L@ K/uP26+蓠Y_ONghU4Dnm{^>q2)> PoE&]'UTr]&K{Ņ4O&Y a$sǜZ[Ӥ^ )oV93j)E@`5?}?nSyd3TOịvwܟV/R-r K "j0M*Ecgˆpn-LK=ь`6)EM(gd}JqRoq*c;1 >u:zT6n6͉E;֐ykn"rC/5^x (-yCdo2)o։Snnl&`yo/ ??t:<>6|V-x?em7s@0S]|2kDK/uB;2N4˼.ev-창PueS;2T w[Kw4 3AxmwՑ QGpkjenjs I$!/Ip€GGf*5-<ɀ`Rxtu,:t?=1n c.Sk\O&YIȵS5D TGլ>BK3@ێgZtc:‰oh1,.{oor vg9Sx;H>wnv9*% >eWnVs_가)j.xg~`|1[G׬ý3Ccel W(*w,w_~},.%L fȋZ8ü8i 24Y`9^a˙{}= &=׀ܳLhϢt_n^2(@M4ҽқ72% #flx (01WRX N4?m>3{krGW?]w %;Av ,!WᎾm>#ҽz3_{0uR^D2iA'U-vSPra8缑xZ6cuZ5ֈC\UOQں@6W QH.MgI) ;{3_ OjaߋẁvO/s!iΩ;RsF7Gc ECPټ3qdbpq gG{PH% ",Bb?|{nsi̜3s=3{_uߴ*,)ƚR3#ܯ@֡lyyv|7 /#d?U'O W2N"dGѷ;YC3} 4z?xo,+x_2pWچ-}bm; a͒v6~Le8Y[4Wbslrz= 6dÚֆڰ![(щv!O= T091T"x"1v7i5EؑG^F[?MZ(q9)vKY{J(| ro<’3溇j1a'~ Y{CSO,#ڕ`wD5}6X},>[Ў& ;Ցٝz#ppenz2AU3sPĠY4պva{E}'ƓɊ')o|%h5AҩӀh.^jpΩ)Jhn6_AtxS@Jd$w&B-vŪK)с{SEQljM|19GT{$35b4 7l|D8x'}Ӷ7d;pkԄ]/#FGV>q>1## !hϗdzzoO5/U2(6 D pdz".qfbmK\-H ψWoTEwrevlRpϩ2&B8~qpԃ }v?a~#ўt;1Ij `<&iFu dSCdFN+b~CxHvK#ܸ0Nh-EuD]bxfp[rcY-iQӘVQ;A~Υeo e+c|Ֆs'|.4Z ͵#8rW38Tg;ҚQMUȠֻ5sTO9uśHu"]ET)~% ܏?Oef7p!{.AN-Gͅ$d;('cw#v.ϫtfٸ+ߗ=5\uR rO ǰ+//)zpCj4Y@ˆgl]ֻt?wXF+iX/Ri/b와)$_;긓Og'}F2W&@ܹ{xMIo|>2z٩'{ί.*ꇰ]ǯa$]&r=wXEA_.ڶam4f}a^Hÿ^ mpƋi^_4\jX1^\܄#^'Oo5};xley<.@}Z(Ѳi8'88m^TLEZ4>O~bq# /ƵItV+pt#a(mǖ>k_up0e*ؾ'G&A ۥzeC~Y6wV`9_]z՘LZ'KeW:E![=^Pܫ㶀aԷj%wA7  )m=iɂAEYndM\J-m`ټt w;Q SKA^y 䡷PԩGxs˜i;LtE85,]1TNI"$p:dkZC==.1LLU_L'0}̕*lfAf=;bInYLPݢQ7*Cv~e f-bC$2+sZj8kΉ@t.fʹ@ZWb%Qۛn r+Z6u8toݥr>N?*}5-7F} w}+tǫt'G.T(5d;_OᝃCOcgZY$$HmL qix5!ܝ>yegt[T+1!XXDcּ1x6$FkО v1z IAO=9[f־p~|>Y=#ОG-cZ]٧ute&y&݅mydv>=IiLUyˇ:yPis>MSC8vcp-tbh̺Nв}m~^੟W v rm.had/[ q zw^UV>J'Ļ_LG}Mr5iyIMŲQ>MZ/.(ۆ|+"]ldH*䩧H4]f}}LsE{rߦlhʰN`g D\u`7͜*d}lbt7L|kZbh.qpn !*,hQQ\ c6,5~YyjӴ]z\rӂI[+INxňlgtUpw[4A_bMQz&x1_6WGbt}ȵXGΊBCQbS1f4e. AҍG̠SkO6T5f3gg hHdI^r?lQ5ev蠈\T[&p.pW½%hRo{"cS \zU"hD4㫈HhEu\I=U-pOTvVo j ~6>:.<}HأhcwT豧 )os'M؏_G96|JOzr*cx 7[hF_|z$e 5Gp:d}8W{e`dFa3V?-vn}rjvܧ2S]dG]Ȼd%r|w8`>vSt iWkN(8thW]zyEY-%&ty%njz>vK$J`'ce֦+0Nrڃǀ{ R34\gn={ zM!5/ Dv_m(o6ȳ:7{${feg21s6S*%<=BCQk|w YI>}2N]{)ݞ:1cாAp?3 w&v1龽FA[;ЅQJ[")ّ_ 5ZrtQz >FwS\-KJZU/n^WȾŴ*}{xxoR;FY,xOsxm;NA]qv_+ytGQ Cdw@4u2֊TRsr'vVcQ9̂b pS!g;r>]?e#wٞmj\85}̖NU aM2:qH}gtȱ[3T 8T6sP*$TN8`|׼ 45d$fN୧\:p_hpٯ|xg#(Z/t|B=pX, 30uo9p|x Dz^\:'q.+Z-yvWYGS#Վ B_I`ЊƻʖKk_~!N=lnΌGϓfTȶ̮+l*sd=qX}eBcawmWKluܿ v>!r]k3c`\,jM%04^MJXj܅ l1RX'tΐ*ƐgQ]8/U?C2hIS.^̟Ϧ\{O~`c  ,(ffEpJ'ren,%lV:~yN`uh5TB]|} F!%ݭ2U 3N\};L7`z#|;$dkC^?b)3qs&#ƒ Q-T̕1[o'<&b#`rctx_r0;!]KGFcL@FwWA`e4~ݹh^W&; +;kާŶY  +U<ۀ{'?_uϪ.un>XLR0 OirWVN"8a˦%Tq O@w^oK59JR#%Cp:l0;=;=%L`Nag#>E:2MTl<4f[gv ߺ;zO x !9t'0-y*ԒmF,HGF6VHKm 4 6a=ӝ}GSВ9zXΩp7- 4S.=7{pvߣ{M:7:CY6v7YM8F%veC*ѣU{f wۇ*3[)]@U3nx2+L^ϛ4HAQTL[at#v~ܡ{*c!Kct4S»ö&5ğed%2xخisyGZiv;iVzh2GvGTs]*{os J&t{wj w%J{.{ۤW\wƎ̏T#ނ ( 9>:sM'ܰ|ٓ ߡ&`=V1[Ȑ֥{a{{F]EkZV +fŶo)<(ܿi}UV\-pcR_e"0dHج@kH{m $F<^NG <޴);a9Fؤ$$? .?DFv9&͓1ѿPXsnEŪ»*SH{Smvȡ b0cb^-f۬tb$+kJy1j!~X a_:.SLY{, v `;jvŖ9poRe4dlϲdSt{+3{{9 )dyՇL-#nP@YH9䙩e/ s. wm4mo97,ܻmvv谻K7CmN./twGת; Z8(.2 wkg_u2鄭&{=(W'; 7 t7hW$8[;a,ܭ{4Voyu`kmmk#ZV6WO<4P.3L9DFLQƽLq$loAΎ>"v d߂>˞;tdH|wP=OiXf)>M'cϐ 3JH٤Ck ɥ^E_w\m6mj {`%Q8)ZqW3I߿ F-rSN*ήU]WYǚ+uRBjGGST{+2?{Sw_ߝᇕ~O;jqi7>+hh/,N]gEQUF|Ϧ"S܅Lj22e^fBfvHvPWk܊ Sse3w5K $0sx/-Үpb =X ~ԠƎ5<<cQk]{JX4|T=|MoO8Gg}xPB! ۅo#vOsfcingҌ|B{* O@AUCUÚ\;gkӈ#nOJok%d̲T4wبl:|B\y}lL^~07r[ZHto^=(nkXD+ĘuYUE<󪗩+v$zܳ﯇zZ.?ߚ7Y/?Iӥj ৿#?Uhq w˹ϰ=^=BYS_EdSUJ]+^ҔA.LIjr Q,tǕA-̇ڑx.qTmaQo%ڳduK6LU}]~ͽ(>뾹#$(6\hՑQOX;]Λ הnVz1`a6!z"gecP6>{6iڽPմQxGm@T]= uU|gL!fCpy`U1!Ӎ'#~5p?ЬFOHpVpq+ѰAypG9{Җzۥ;*_eɰ&w^*NLS1OOnxad' s1&@5,Cx`* #o5i+ `W?ڧU}jhrp3c,;W)[',<sfBk_2<9@_ks%2k֩f-UkMiEf|17PW#P8Xɐ"Y>,o8?P&wj_K[ZpW\.=-;Jt>7hq~1gժNpϳY𷙅)%jwnySY/mfNY' S1G>a>u~j@!K!tb-I'֐W,Yc:q 3Q{Μ1t+OmGppOx2Q"KlIWa-Kc,]lͫdK`ꛢ5QgͅTg2bQݬe5ќAs`w\){'^:NaO V'rd4d&h4Y{*Ý'j\5LmwǣQm;W`CxFWWJZy0p=I [5'9{Syʎ<^}}+^Z~=56apW57DŽ+ikuZ Vb_WG]ƛwOWëư7foz)ӫ޽1C|XeHێĵxI|V~wNAə6px _~{ZM&ddd$Ȕ.ϔq'lG)e@GU-Pm0@ ˝@liȠc-[4 QȻ&K>tsf4 N4^C&3OΔ!P{pqZۥttvS8֙ SūؼEFײ1?,=xoq)IːnԞK 1 R>JL1zύ7q‘G;z2 jX$Üqm} UeOѐUsVKf޶7 mVK당-t^UŁYG9os:ΧQugfL뺓b]7rU:*YfOHKi06O`^۠<\[>\>XZ؇麵 ";68] kE?/o,O]." gޔ$ݛB*65wʼnLw1{[ OpG=z4TeeMvӵb5饿F\`luԝbGXfZ\ WXj5Z]lv=$̟Av: ctsIonssoSۛx}j lm8a^xW\cpOǫ+YͰO`/O7TbPYΠ=Wrw,5=IgӦґ)se’Ze^u-$YTrao؎@oQr=, ׵CnhOaOρG7KC/](mRLzpzBuYѶ Cv}-]P+:Wyd:BBmA1 wEݑSh;f7UtL$C wS5ܷ%˽;Ap_TKS(r*pը X܃Q5ں)H>g`87EY:R ܥk9"g5G zN~E~tr;[[hHwRս=]#t /_ܮwk]jnJ}:5 /N׻oM'YPS'W뜅=x--Wmjc>?㛜x? ߲wfuue6PpD1F[jHc۔hkcK*u(ҊBhpHj^Mb0"V(j/"% "ZoRpzo}VωV=gy׷:~{_9Sre{s%SknKuĽ^XQ15r76Qk*j5eTM w^TZF9U#ڲ*U#SR71 y?m ncyVNI/ʥ#olzT82 J󂼒+ymwJ[*yFnYnW$]Ә {3 ?:}}]+y+D:~;ɐ쉏Ɩ{*nApT7F'f G" e!'VݻZZk*o1zmNWp_ 4HGeLΦpyȌM,4wƝ4Np_9˯^!xG`A S{<5OX-spKelx}ܱV8#[fBtPr&dS;xWE%H. {{.ۥ{v[^6YwM^Xmة^il7pMAh1bS[Z[=j^1nqv|޳Aű23. . ~0!Vo48ݷ5 āQMr@}T?4ofB5&=zTF]{ {ab `Mֆ83LvvUо^X6>NV뵵<upO4:_,^ט=~%-pwy3iA'(Յ0ؐ\Wu:IA9*;:ꮅCms;| cf[½s*.:sEn48%ܽCmQD V&ܵe{=d$7j%ыA2o.&S槩6Sc1הg sC1⩉В`*Z]M"W qAlgcTV+2 fIA/#K=f77'OŹLXޥ]d&L{ktB`g/F_ )+Nrw?deS0>sZU=Rws9Hn Y3zS_}PX &zT;̆ѡ:q;ZខW%ܯ.Yí:sg>{t=+=k 'n|Łt^klJg;@ㅙCqOx]0W8rX;_O9TiEw'M◎p//{s__קk[{~Giy'{rk[spϣ0}629h%SсeT=@p 2?M-lV}_ yyW~SX ǝ R IʚQĥ ڤ3 +gnl3AM%-SH ?u|kp 1?ɂAB4wwͶ \'whD=XrIK'bαYNƉB\WUFҧF\}ÌD^ W wG~ Y&k%${Mrm>ѹ6p"ץ#Ve ہ;[p7/>/ _F,8YY8w={mrX';A3n~smy`rfs~(05.iq}9k{ta2d/.IDULL=hN 箩,T<^Y 2)2/;/#!l;/8D.܁dʈ4]JB)EʹǿSrKSƙp{`0)Ct= ÅAUZQUUBOzʊ1Gr)E~ἳn<(5c:ùߗW= MMuX. Ns*zӞ"܋*ae:ۂz{n8vYK7OS퐬ƅn+-.л ҵN95W<•tYhGpT2gjpU׬n ~z6N2~+e0,4?྘'Z}A525ܣ=sS%Ew8QW$A]S"pg*_QPWJWT#9)Ĩ1RGu  O=0Aam o֤rj5Yn)H{@X*' ?j䛝vhg*#<һ2jGd?"W, W.l'? ՞zwkb[_#m*8J=-ۆb锲®ާXϴ1岓2Ն.:JO>ܕ 2D9y̕=w=2[f\n5wZL~u>BKw*r@w<\g}VWU2dA֕~[ wcwU 9ýv [Fm4UaBTC1ހ 8򐍔z/wm B*r,t qE=^{bY&qpYfvgIYA38^RD>r-L(. :lgU j!mDo{`Cz==];FuT3asN&$#1=iO nOhFޖpW|rKZ=r/֊"b { OSn93[ThW}V&)IEΖ7.yl wDW:f˸Ked;1cpB<Ğ;tQOTq=[OtL]Q& $܋vmMdW=#*, PDLǠu37qo%&w>hGuO1:F(Q ]^>P< " [Rk88~|5D`3ssϝ;rԽ'b 1.[&/o26HGu]p pTHax^ZMr;KSEd2ɓ)LԘ3)bwUÝiUw w^|QNAUS>d:s`8i@!E.@·v_ߊsFS]1KHΔG6ln9ys'7IQ&'Ixbf;; eկ~s3W7s*3#QAr0{Jr%/})]8,{/9|Xgs>ANJ2t2[3ubJcਈ%E}z%wC"b3';FLߩHX:jP7Ǹ*Q0v4?vv*_T*h wq@ߺE|YYQKKȿ:>[F K- 5]=Q}9 ^ཨ^RQQ2[ zZ vT *‰ .h>cž#ʒ"Z&׉[BVa49x5h%`C94yU^S| SY|$WZ11/r)Wd|aWʎ|vk׿| pz$d<BQ Z2} g1pf{/=V2{݀kt 7e@L{ͳ^ߖi _ [ʈ>M\߬Ew/ao~j0i'o&_&ry)+nǚe痚5\K^ Brt /zf;p7'4\Uucd_1+[x6a~,Nx۳ wpp#wi^D9OFUpaxwVTf^z2-UxFU$xdf"&)& t038Rx88ϽQ.ܡ79j[\âC]8}^u4ޣ2$`ǍJLf{hgƋSỎ*pǒBL}+aUjU uYFN.%7wmFgMe "ґNEUWyϋ"*C?n]ZN8`Ub]_Jmwj(VX6Dlf|ur&w`yppq,<_G8)!gCQwx*C^KɿXq- y>毦#k{O1 ~]rĿl7a*l]/<ٕB"ܡ;Ό Tܗ`w^V,hR!mKmI) A{v l7[vzjL1VRIљi>///]Z>9ntfի*L-λ.M͸sbjevB=D2p.zuR3.@K]/]rΓSSW٦KuN^FT~ɥbԥ+uOs"I3|ܘ<䑷jC0N3ckqv%bDR*GFƤvߌSNu,DI.͎4si~}OSTƓ+yDyu,zwkz~J5WNE8ܳ+8LwWΒQnF_jۏ-ڃe\uւl&`cS̉Әf. ፚYH@ay~f-Ek5]5w:іk.,+Eh?U#Ћ.=# 1 O4Lw4mܚd]Pgx=WIf!3>I~z27;l}6TD𛸃19݇C}vc:p'l2iW@PcNuE\꿖{}['iɿ>Wsȳnl><,ߩ8߮|N.X|fbW-qw':ne S0eI=Mvt kͫ29xOdOU~&4N2[}:lv/ v0Z2 ^C]#>}0ؽqۏ$ܓN7KL|HpTiX<{JUuX7XC">NsAchM #&<^ʹCU:)3wwl7r3OU-;ܩ GΪA<RǴYLgl]Ya;j{ s/4⥓[k {y<:`y)-YjTʓ)G.[LܐzT%CB)WCt2s.:Kv?E#"&ΰKD]ocǭ>Л+4 鐼tgFz]KIߥobw`jkvE{gYGy)CսI|i,F;@*ltHTu ZWݾLTHGɎnLKe^@&!3?{c+;j=BPjcjӺ="foY 6)9=߷x2uҏ)0Iek9=ay(eê{̩9;,w޽lm~f?vqa;0AyѠ7@l!d bTa9"XCrsRJ{NX~ՠz[uH?ixp$wt8~"tH\ܭ.FR;u^B vQk_ZUw aS_;S5,0e>T9=;{S[R) 2^H]RK'Sǝ03b|We0)$۱4/' M>*^8[Uj\?I!E7ص psiT w wwP m(;8D{87 \hۥ\gM_<Q@z JfԺrL. k,+gHRaw;o QʇvWo|')n>ݭ+ vݻE2r,`Yӽ{;M [F'zl#abBUUٚZ<7玩ߞɁy2E‘i*rsahZ{V:B;bmء߶L0O! iF}ysH}y:sY|u#h!:͹8F ņѭk]z\rR̮4ܩBJxGk{2]%ΕK.~ w]'a2a%I/oT8Hb?JgH*n^5 51.CT+$Iƻ `O0E{R*.P-^5k|$[>ppcƆ..Y3,2fqILEOOmGoNcVp_Uw |T^zLsၢs*p/^]l'.4wL%pT)վKFv_#<m8Fg:\tp~'wa-ܳ?j|of:twJj O+ց.)sR~qI!=F%׷t~:\&}*S|y)sFPϒLc ^⾾ZSu+4%j+(AnLÇXW˃>e/{⣟ߗc8v_f՛Hy] TlD7@f}Te-Ɏ$jܥ#t0'7UG)ːDZ%(\.#+&]}Nx~K-cYc//7' nv\q{!oHH)8HwTe;i ڑT]tgs]l7pt1{HopےهX]f߾rw?ow}wM|t#ChGUiKd1~vSi%tK^ܝWݔZNlhQxSӝZÄ ](kDm qU@CU2XLE\K^L:pʜx#/ 1aH{ɕylOpߋA~hGw}eN=T -,ӖZ]K~;x"^OhGۭ'cSjQ96d62?1mK2%ʡYcN׵WpERTuiI$Ʋ6SNµ]ONr;u!+V{Y[gNK:?>aN^hʑqax0i3ݐzםgSKƲk. }= cDk͡s5f@~юCHO DDEF~PԎ S^X}CpwJ oKt_Yq=y C-gP! RgUݘ9<gUDO}'rG%G}|_[e}YD{Yn/^4F${ 0dW{\+ɢ&r'B\7 @\Ca;A9B oMƁ}[@Ւ)TN682## 27GϚHLsQ*4Qh7,UiY½sC>}yst< SgGzC|w(lke~!xy+51w m߁##D ÄlRX)O"[fv>=XpdwӁw=bY2u_Tsj4)Urv4nܸ~m#a(ОpuB ޖA@Kl𐦌)VH4/c 4qaȽ|yJ-'2rd476Jiр',[_>56c{X.hWp?<7UJx;%2>+"|u/~: K|S5ي49pXoػwާ>iO@:`Uum{ cxyzV&A.'pf@>G>&xG;htGњ[S"lG{.vg/.lo)g?~%5Rã0d' K,5Df_Dsχ#`s?<d/q],+L"KNZOI 8p v> t6= 6 w( ODzw@F{ҖvoVRt1x5^&:J hL랇j¿~_vٮ$ס:ϗ<Ȑxq %ӭ+`Sp7Yfg%/i'J^ b@afvBJvu%/_ܯ7e,m/*BwXE=nvx?.E9 ejK)oRz? ړb>-"~6p[ܵk0ܯ2d?hpחQ';M'\ Z E{f{]KJp#_g=pE]=)9Nv?M ~H(жΉx %&YXۇC|&A`M=Eޢ܀*w?za |(Q9#TpGNF #7Ӕȋl$UI% "RO,YP>!te8ľ5X<"fғI/o!Hnَc 3/{/zga/}w~+N>1?X(ޅ0gn6lz½9򣶤.hȼ.ю]i[^_ob-Dn`*OR |VxxL~('ӁG&A:5z&+oց:ԆC|@$o=8howp{0B{{]omkގHwkҌ>M0E#Ehec{-TUqouӤ9roJqwZ?rS?q75Pۣؠc(>w?UoxS ީ?@'ݖO®|;pppDН ^Zٔ 'Sp϶Lڒ1l'K_+ jFk?p'tDxxl7Y:2۷r?%#}93jj%sD݃Ry0D]~t^SRcN>PE솮 )ϞeOg {"}l G lmk0x׹C8}Gd>p2ﴲ&fH/rwEaǵ$=,۫걁`2;]_Iipog(76L]ò]G,iUGy58;Zv::Y֛??tNQ+YF-4ߑىl|_Y7BNdby{i񑵶 _}z:xYh~3j ȟeg ^sZ[9By睗1=.26 ە$%ў~v~1& ZJ"r&nbQN V`LNa'ɣ2H#,!vѝzoFP\&E`T!؝'Wo:P\f~w\6H2́'7<qQz( s-)eS_UQ}w2~ΰFvڿE;deV]ڤ6^ҩGqlpn ~+c~;y2W]u]v9/;K"-⸶ӆ'r̊pu>^%2⬱9KӏOYX/eGhͧIŅ[N$>{d I -͎f{Xg` e8cx:v=pNS2]nF]2Y @gJ2JWqT 2:Cb`+XW)W]xBMunW鯢G]5mis)ݦBHOjrs^5kȁyf7F0ἳYdpI[/ӐB}K7IBw#oL{2=v|cfd./=3<*Qc0RH*Nɔ8Oo^#G=el(f]’ oTCpzhYXc{Z3,%s { y16J;̡Օ@ɽ$h'w͸gINMH"uDM\sI o`wQ O^u[T;E_̌f9RF~@5K[;hLO;p:YeLMȟ&w4πV]7;Ӌtg=pߵv'<L-hwl#^ ۑg{Y,v]9ݨvIv`hDQ,q=cEJR:q+98<)݊&~.7Sݏmx髧>;z.tP#J%krbX/ۑvP"GVaUʾ+Ft* /"cukHvpwnL7_}~}=0Y-;L}zZiLU(6T\ r,{*@^(cv-ҳ[&E , %kPJxX΀._SJ1ZfvȎ?׿upn=.h" _F,Ýusܥ)sݢJ;|LUKqihLLT w@,wgX+j>ܗ ,vC[{a|RW.LOrlGͭp6oOCKu5 ʞlc^:<iܝH5= g4֛whpHY%_<,ouv׿ oRz_<_~1kYg پڒf*qWkMy8pJ+orq$إZ׽B,1LHW\ƥ{]U{|߿W9j]y#pGknis쯮G8,;$˖z3#I;suyxLj S%3VaaB>7Z+O>Qztlż$=X#gO= a[țM]ΙL}84u/|81ߡ~w|4}#_ Mk5]À4`Ưʧ݅8f/*.Ep;O?g=ܾ$vE9{wck{!j!!/qCݝ/Bx Z諌r=օNq{)K^%pU-Cɓ=PHYL_gҬ˺T0N*{d?%fy;JeL[ֵpk K|_] 5kGĶ)D8V꾭A~y~̓nlnV?n?Ź ";!z? (F%{' CWᾅ)ɛeݘڡ9q;OD̔{ZeA;qhU=>_ ֍xxe>[ ^D!0f*ԁ,8 JOU6}[@.w@DRO lqKa;^pAf=5Dt~,>Qnh7`.8 Z&ƢR~o:w 97 _^x=A&T+6zS.$cAxǣ>vj]$D\\6mM|02Igv >9$>qm"k{;AxOC^ll3wʁTɞmOp'`&G:'2-il{ :_ҝ!U}Jdecܝf)es'}I'ՑI-~1E(&1Mw,Q٘ϮpObd`Lk;}yAc4u3)[^<<Ow$K*{):C7ndO+;蜯yA%ezL{L#U=FiqI*yDvaWr8)MW*3d@^@8d]W(5&+ataUۺxMspWʌ4R )ZΎbQn$^Ҫ떁`P:G4ak A8poMp#ШL^шLM|]!ܝ!1?{gri,%\3 ȃtks]\#QtFNUmg*0*d/.G) ߋ]^Ȁ{\)H2y-Hb"zS,.,CzQ7ve#[^z)=Dp?UH)[z3[ bp3XNaT2g4pOêOo#{ ꌁ ܉T hwr9H?Ȫpw`#?opk^Jpp7s7yJ^wپ LlOvD>|u׉Q$/%+xp㢨aN~slWp'7 !Zqa GwxME1aqVK׌pخUlfl cm CQU ^]uˮXIW7c9<{U JB̠ ߨ1U{1t08ѳ'-/4 \0"ФQd(cdS/uUS/A< xCTE~ 6#"CO˧▙UWzsTyRf<ܳ= W`fdsˌ64 UpE6l| =+H< wY[wim E@<@*A1o'l:lVY{_0T>-u7OO AW.%-oډ@'|H~`CfsB]=Be9bjd7)4L j;$3=MI/U 0zrTi_\M 9~V_]N滊3/gHn&; l%1n5∍fÃpZLq3;¿š:;m*aq kBk(/QzLQc]\d$C^[IA]!Kt2.{&0iq[ΐ ^Mz42`I]͸1kwl Aw>#s^{*#nɼc(ܳv8ߓr$s`) S!T|*WY;@s^|)^Z{Dp_TY01*vR7 rAdا%]x/[<  \+.--}x"[:hpR.YqgDlϥ{>@U4Yz::;nGeqe\pY9O\JpٔPeJE]K h.}kcgӤuȔl/< -<EKVfB(ݬ+6+ c z78p:2"Z)g c|*`*}'Aq?M GsVC lWOZ'n0UтX,13V^o?0dY Ra`+܅ְ7-gP ]7xQo+row]=Π5Jek'p.dӦ63 XCx`4Q2 ÕFǂy/ zlٶVVz{ 4pv^tcno{ZND;vJ 7,?`tm7{3zec KT|/2: M8]8 . ߾Bߔd"dA_BX@w߽UHڕ?->ɔ$P'#b47N@ni|& NVFª3βJdy5ŹF&pec2lAx .CqkN5^u /95ۯIs#)M䞦z:%#N L ƂB's \H~}<*Ͽpov{:qcwk$/36j XCϗpn8 ؏Uq斁պ6n?>}0|>n]*Ќm~ӏ/#=Pڑ= }@potݨ;,OTN' =-]E*.c隲\8C ֿ&?hᇜ_~) KvN?j^YdɀEy1AA:Lv1\IdccsΙw<| [Cz-D&js8LB7][oJYM]LbX[#휄{2m@KbtIglʾ ;Zs_KCRPoq|&酷Z ~~EN ϔ&QI;28Lo`h8 %ۍ{}_+ y,1@ WQ~ҭ6G#ǘ8%\N5 HCRQ[}O7U^"c/Qh%v׊C?\Nb~NLD#F.ESwUr'5KX23ӷGT#[x:݈ٔ ܙYLH:2Xk#-ݘ^;'!vzE*pWH؋#W elW%F~~p]-vbg7セ*cd{zLh/LZ!'wrnS1桒Zr%pI%{׏(iF]S[\Nb=]وSplCX6]BXhyꩍk!ztЩǟrVH5VلH=ͤ-t:b-eD9^LQ A1KC9M8ddfiy{{xu7u C#4bIU~Hc"~BF;B{?㏋a ޢd'YF`gJ'p{~#[%sVe%߂S!'}`h ֶ,2[{1+N[m 4,'7XsAEևl(vow{,'ۑ#ШzQ^nCw}8i[fS~Q8li%oemti$gLB+0WQ$J6mRC:jcȦ"TpD*TqWNUAqDčN 7K]9ߍiYo$||KV _~}d/UOE{d!c>= VL=0ZqK} dqg eԵ)bvYD넄+A@x0vX `ȈwIS"̮V&pFssۗ=ݰli$ ީ[m] GWI!cιX mnmЎO߈a2|C.e4>ȭ$KĖi7vflI6 MoRё!S '2ld0v>4e'C\stךU+Q"12LG10rzS)wBS''pk } ѷ+;O2d7C/u#~i6#=n%0a NnK9A d܏P #-L SD~ҒT!P~,Eb.;ccvtW9u~i۪ʪ5aZ՗j5sCCi ~ߍ\uW}3KݠXa V跋1;K9sw0o)9{w&G"an$(ؓU2?\:7p`|!,\ϔ*&0Ifܧ*A}1lQ=옭KhmO<=?<{ՑdttV;,uA ys.lU;3e'oҍXeG mѷf; n'!{:Ȯu VE#zf;\qe_0l 5 ֩Cn+fg?v-n9w8ryvPCoVZ$iKm%?m59.pdb+No ъZqLHBvt'?ɓy`{pgP-w`wۃ9IKd;E7Ku ]%7l'&3eBթS]{5_wCw_*޿rExGo+ 5ڂ|1Œ1Qyi#-qN)+)$`G|C`QQcy9y+;ɈqCKD% &apEcF n9VjlRÌLǺy2T9M60>ҩ`}cFKDC_Wvwd#҉*晲dS L@Jr:۩h{qc}VOc=ڏ7nK/o |~+o|8uɞ>up9p~sٗ- P,r,&ŒWqq8vZTx%>K86)'xzעKt6Ĕj"Z91vnAmCWp*VZRZۺD^<=m]LʛXţ".`ći#cf(}sb3C w0k<$ \k7h"wٮ;tTj,`|8{ Mhk~qё-wsf}lOt}1O̖>Dq#x~[b ?GhژIJJr=&vFn[mTC% dI5 U aѢ|hZnE3f1/xYAߴ?7r(w!.SK5*kKldm~CBwQz3cc.W7<"n[k! !0`ؤSg0;BȮ^(N2h͛}ljIu]`}4nGW>O{^k!eP1-R~OTDL&5LAkom 9`;]!acgj~]+護bTu.ڋv`~$PN'#^T]0W f c^Aw[bi7h'Rߞq5#PwlWF!8%r(OsokZ26Wn)KzMmT+ɓ^ `WK@~./͌oVQS|ᚠvM ÇBZOSbUVkX &j{UPJ>5c]HA2)j Ua{ϖQݐQ.SNmt577wY|–> w[h0 R&إ\:F}b>M> Dxo I_>'|BXM쩓֌VX=Á;Jpk1SxkAHuOn#nލԯa.NLCr yXhNN0[{p n̽k]1g:l,}rzV궩{cFיv?k,o-p7Jug`9vHnq4/߀fw1)]eg>xm3]SN?vRƌa<HlC ]tR6<;k+ oZTxgaX爁*գĝ|lK6rAmTnݯ4D>Y41=UωviDɍDW\_I hZUI!eUu:%+>ƍv2;)@|9(\ n|ke7̱ O˵s+[$׃fP)كԑ"u(j!mC,~Z͠~^mEI/ Z:L7zgɖzfl^A;K.Ϻ^ө3v5J#n8CtK &39Ik ٮx#}wvxOpˮ&Lj9?V;mFk{i4\VXgm&qn{YŅS.ZM+퉖@CWk;D7duEP&ƛaOF;vQ$OѡĜ?y~' դ(9 -/6a H".? BNvhFҕJ&X}ZzUr=F ;i;ꇈ;a csK O HOIvNrZhPϩA1'F:T DCФ`QtX zJ}*Nn+Xn*܇y2H\SAyGrw;kIJJ*YN' nVfG2ǔi1F.tHpoK."r ef𫶏@#= +L`GfQ- m]"&:{f;讴f-ܰe`TvAB8XKp?'f ooCe{_ޛ dW< G ;1d8d_ȒGJ%u獥953߅h l75FAsfXJC-5sNn 6|A82f@^+1ӆFle<)lmZM5Jy'KMW y?{A>{g½MO1\͙PןEA3DPz w LnL0{<9T]s5}v4w2;bqH*+i\JvO9fb>`c? wgX JQd:T*FCe1NCU ( c"U@NJa7.M{M,s6f @h]7h3IIޒHb).v*60W)`9(TH[.$CU6Q71(;DL&&:+ҥxE!P#un]5VË]@OͰ"Pl0-y>DnwyD1$+g5 eF>J$T׎*v.t7lWQזlINɏYwg{ȐU[ud-3T i.3irB[/VhٮHEčq NEE.G >RZ2pW82pţҒQ.Aմ=}r>V8ܧ+>1 !zy v6ZInVP.n=zcfiϒvzj9zL w'ЮvҹrFøSB""͗v ^ȄUp3O#[U:9ū@/A|ӗKcHrOTY|E|IKrӺ1ZM8NK3[e|\K_)3LdfM k)g87rn\$-d܎E |/s%fS)3lJCwCRs\}phu5f؞*q&!>[-R9K `W|c?տ:wSwV,*Hh:B=Mx gWeC?)(7''ɎB9.m{>uཛiW,됞yR!0;U-/ vtd_+=~S%.k맂&jpLUٚZV'ɶNT9{%s~o8𯰭M{\-89Ivh>@{35iH0om{.@?y_h%5K!D\<@ױ\kq5Yv;8f C=\qc_e;ѲΌ">3?cxՍdp*J;E1 qXZ'*$}$zt 0jiY=R%viӾ +RwOvD4Gc}b,ӕ!'XUB*J->͞S b WU:1\τ+:ȽȋRн1GGcz)dըx\F׮Z'ZJ};rGBݰT.C]ۃϥP}*kTa{5ũ}nJ[s,O-iV6U`̀##'2|ޫاm·A,5ʍ2Xh@xZ([Q`,}$l'hו K/7:kFE}ĥpW]aTJtwꒊHqCNeTi-g&TٸL]{wJں{n|[n;_;miӅJ7o~=J9pri z"KE3Tw=/-΅Ѻԏ~FdQY!eCdq-p_+T*OL;9&$.Z1v<P:uXu[ #;lW:(m9FXLoaiX-!Zܧ+ihPw8b;;NUpn8?G^sr})Y2Ijw[,fN?nxR*C|7۝+COoTptjj.CV8@~U#S]=`tvOs\ldTըr@in8%B{ (swZ7/[/+xy4k_~G/<Vtm|KG7zuF{ #YDvMO$&kQ"'Z(reOz<7dI]p#& X7/FLYEgYL`Im3.4\bk+ 9*" 7z3Rkjk2nl!{ߠx+kTT*us'8^߳w.QUnMbZ\ZQG8 Vڨ 7u#1^"/KJ#HT@"D % M\SwеselT1r={ϙ.(@T8f WY|e(wSzǀ܃GXaq#^#.3\u{˻AyDw2xY 0LFz  % k ^ e NesP ΜbXtU=x!ҭܽTvJQ<'H h8GHǼ %ȮBb Mj_S-6 8r̰,n_.49KMO%W#*q ]mKJd(9sCo;'@#i];w|U~NZnB(-'*e&"dE7Un) J /w&Hn.e ܿt?|z^/4s¾EmKn;9`_d磚{MT^}gp7= JKEXEu}c+^NBRLI^ItSzb![Y#8P?gurixdz٣=iHUcw!iMKa {|e'J$Pjcn{5JQƚQ@BQG)s' epn䄻Tp!$k/h1VR((ʊƙ<\[f&W_טKeڕ, p[@󓓱Ӹlv9n H]J4IA>(3 w! k=di:!ι{>Xqɬꗺ{4pNH%7 ;^) &9i''02P2$탔|{gp<܇S'+b7)5a[ 4/:al =b;LL;D:$g>ƅ`!V)@kRXz |t%He =۬\YZ@ ㍩FCen%f ݕ݌?Rg L[s .qt6TVo{~ѨHt "̑\XߩWΧKF?xQGfzd}sxYD=Ue Xg&M`+5BTqTldhT]pߗrE)F,kiFu2%b֮U/``ϓ]cf#Cw Ebzi԰#DV^eQ ߣ=M)龇hj ${jfU_&@d*0UPd>=B'3$9#}gkNG5"3%'d@aMSSvܟrD5~Г1719GˁRw{uQ>`rOtS",{R D7T|/MIx.jNjૻf;TMLX "5V#B2HH [o,P 4C7K SYs@ڲJK]<޵+sh!F;s(+@ٯD=6KHOe-U y('7QIce݇ufdNUvOB3@:|2:e*WT5wX[q+s#sF7$[U N$SIi-Cҝz>`) J8n'V];p5i}W#w}#wb}^l?,Z8,ET&VSmU|4Ueppc]ӡV҇?ƐLFa_>{W@{(II]7QK(,uKEb>ƴzPZd-[ld?ÁJ =us;TQ{x {d$f=)fx y~ѱRoAhM50!_ke+-@\_32u;>ӷڻ^͵k=!b wFJ,my;;pn/']C=_tG%*~zC3(BS(fmF7Wŷ( GbRU&Q?xl~U;)fہ{ ͅr`̐:۪mL'go~Pf_ O]GsFZkm_8r}iɴqԑץ'gc޻> uϭ}^Z:|~zO-^9xu >z^wMn-pp.|5A9p+ر7q{qxnTlOQ,̡Y[c\wú]$=",/l|mRH~9E wEbY(Tps!FFWQ Qē؏Li. !cl9K>Rn jCR><^Va ,y6*|S@)$J 30ׅͻ_nMM9pdVطzB49 Ԩ2FtUXLΧƈ-~XU]ٍJQ%e:0?ށj lM/Ƌ |*Hx/'V#h|*f SL?57P~@f2 O/vWv,ý:G/?sGϟ?z,vũ+.߽}S+/iPuٙSKϟ`q K;M\\̩Gwلk/Kr{fMq~}̍g> iO|z{_[}ȍb#*޽w˾t+}Vw9{^[|SQHW}3g/>wA|}.ƣTo+~{ 3k] >~yuNqU/<%eQ .+~o5adti${my°:ˮITe=L uV}Yb4vy䧡E=:M]d% xM Uq0)Ѵ[֎aG*z -(*Vo6b[#Y< "zk,A;Bum&c^H9]0\Ǐ2`5֮);pyޞz*0\x4(2L΀+u)9[1w8y[]EuWIK~)Tn_c2lNհ_vSEz uw_d˷F+ğwfgL'e_%xQ]ݝ1@wTگA &xJB"lp;>!*|tpx>J3wt߈'h7=pछt;z;XSO,d\"@l]SyQέ^-~V/8OȀ}pb&y\^>*kcxItz7ྃ'xs3> |9>LpUyt}=OG.I?g@ OMF͔^8Nx cGO- RH; lW%U!c)" 8ΰí*-],>zq0Uz-+j hF=ɶZl4-`bȢTP o|EV)0b3S$V˒WV]G]l跺>x]wd0w&fR۷uߝaJڐ]fW/6/-%.>YM wwѥWM9E8}c}H%.;q;XΥ7ʁc疮^<z}NCЭǁ{9v'%tý;nLnG.w :h}t^/ۻwVý2w[3]pqjwŵDy/{+ݍ '% d=S( LV&9B1{i  1 U}}{ƿ~XeYh;tBsO|ҝk#wn]~xf5?wW}L\,p0;/}<_4CVxfȎ)'Hc]uOOf i, PF:܏8Ta櫳v9BR]<{Η(Az[E)_ji*ԙĐNJ0C`gt&w,GX'@ Bl2ֲc-;+ESh+QKvx;S]9Y7(zjPtVcu+ksa4/'q삻L#w Dsg(sD'nf^Wtrl,c0/yS,]`.זA{U=yBxv[!'m}C"Z(C~qc=NniOvwoNtlČh-TQ8x}G&RY5wTn?r^l yzf)^yQ$}zB`3ݿHoʒ*C3J^ ItovОcB9& й%5ᇇ6Ѹe$aJ)T1kSWmO nSe2a^H1-)pH"ʠ Yܔw?Y] ςp@hԀ;ˆRf[R(LZ,>4Opϓי#J{zi ~9Y𩭪N2 쥊_KA:#r~{'P{p+#O] nZd{e|_},nL_{Dwa%5{c(?OՁ6َ͝؈R^I"ǬC&pc,Hw=p/ Bml1XČ+ꁢkRzDG%W@Ѱ?z@{ SU|xa/!tUXq:CPRAaeL?6F *iSԤl8f(o/~3k4m5O![+9|D-p/J|4C||-. RirrDLń~"fe˥L=*Z,i a|FoL0x]Nު[:L?dW~ZGۡz=;l=]o~]u溓QvN:%c@Z/=38x>:7ѽY}63 f֑TڬmCOvA|uC:d;6Ѯ1%d{lG ;)q=с{eV2@ raRԤ*: I{ .h:B_צHI_((VIfķSU̿pOB0jMͦk5eF1Ǔ G֙CxMM\6pZoWvE&, Cӏ,Vz .2̪ROt e;v.O|S\^5 u=]50kF RO[Ο A=;`N஽f]i O:}~fvʹ0kp?uѢYθolzׇ{W~`^Pgӌ}ss.Ry͋S1 }̈́w$2l0!24Zb Z[}%CaQ 2h+Z%~QO#PO3yܐ&܅Ey wp =sL=ksҕ'꽸~rӭ½zN:dKw8Ek n}1bnXwoHqf[*SbS+3'1tcvQl@Sg:2妕s[ ]p gt\誆auD4FT"_y-@yoi~2|)Gց?|ͣK{o;tY'ׅ xiT}>*CE9P}xspmW$qK'ʻqq}w\0p5Oyo ~>SB[8H6jʮwl^ GN3]Y}p"S5/fiV8QB64uu07ng8QCGp5ўXJzJB(+axh ItˀOFMP!|>\⏤fCy7po0 v!VjrK6RɪhˁލF\MaP:`*:NİP`R!d_5x>_ј8=|-뼭-Mۏ ZFSN##gk=,&2"?Cq5?QI#y7J2Ɗ(*smQPb7 15RNA*7Zã|q'T P/_&m7'V-y=j㯜 `Tb>ӱ][3"{l-X>6?;1pgUmؗog/%x{W읜anA2<&ܯUgzsRy#p<_>wwYGwjS?a9R˒%-0Go1a-%#H@?D;*I(9*E`Rs5hNGX#ZMmeB檞+mLTI!fڅ=zzhgɂZ  ~ jã#1T ;U`33m5yk pbubCᩌZgʵ}.dw,;pco֪E`v 0aFʞoz+oq_.@Hp';tlb{{h3.(uƨIT!ƭ$j|ٌHvc}˖Y! <hp_p?B#tnB1_}ʨ}͝oJCCyk?wpU;(Hݑd]GIZtOv]vx>yvr޵;]8<0㮳w-=ݺukzp=kމc'18ptXAF[J[?r0왱pVӭ<!Dy ѓq͍EutN<H ˶W*BaK*Le@Z+ZRCK/cqH\`++V"L8:;yQ !)oǬ+ϩ#s$4P֚/;힏f!]כ_,!ovꎯqdv{I [J|Tج#%~Oj5{2}^ʹch=1Q.>ٻw U >\Ֆ|P^u9B{P.ܫ:d$|p;O8))XɃ+=}8t?5)s6uq* t6OЎޫG]:1mÉr7ɪ_6(c%2S]ܵ_[f>5 ߅^ȮXU~`%n<ܻl(o?a wPt0k6K8KP SPc>3G ~dq)́:62<3fHI^1J|H Szz|m7E,d5(=_mVX' g]p''gt4/T4YPRwnV جPBϡVk_M.E߶&̦6FJE{!W,E]Ze1o$v̝$i烦k3X8ʰ9sFX=ܻ3w5tj;p6UJU#Y+*5 v Ym447քٝIlY }p /pW>ař715WpDxp3{?zXbܚGu-&y8YMY1a}gec½z  U Džf{6 ;=e [f>{;n>QYF{fjm'vT^a=I[58"4ƝH:I|e Tn7TIP1]%E7>[SPfzf+yϲSjMu>ZpzŢDweTnsSџɎ&<*~ɲi}TrPmMmj f |dQTp i冚mQifEN#)E,M-ogpdxd-{_V~{ނ$;jǦ@VUCKoReħ(/uȐ=U1p wҌ0}3uبR[\q2Nwgeq572|a{Qq o,vb+qѠ:pRytk]ڬRmӳN*rٽWpR,_V}?I/T6)︹܉GU,"Q10Y6SUe4=qL`ה=}^9;?~&ⰽ0|7VA@2vAj]mnjS-^E.sdxyYH߉lie+;sϦyib^`g2MߟX+U3hEbZ,ޣ[(OBVFWZ\]+Jq.'w辺C{U&-M]G }ST 0Vc`2հϸmP3nU ؀)3>H-3asm7gϝ;'#.LrYQzX,-u<}sW.NE&rʹs7qܼydoOi%b)߼79i]r·WQ'.\w˗/{P].]s:󘗮ݽCS7n<}wӴ%]qӇwt{ݹs|Ɲ{B?|Gֵq;gzb;;.=7w87^.ߑc]q\τ\xJug#5..v]HO^|̠m*O “NR aˏejY}zn)B |+NF:jj 嶙z&8QF ,k$E6PAtuT_R88L9(KtlXM7rU佅G*,n@2!P;5C0J\~4C6laPʆkuGn7) 8YR ,B&U\HkP㛱dt{_ZR: _L]@,I]Iٻ}hv2+pwnIbC q%512,0>Ykj?: u }bvv$vTa;?>cTwv`&63}8|duX>\˹ܷo|۰/>?xs 'Iy3|1.p;z+[$ И]qzءS.ș>2.'pHtopƦ^]ċ;z]" o'ujf) 4#`ʌ>G*yϭ,˜}sN=*ͯ}D gd̊.22EQ$f®I%v܌(+ ey~p>kV# ZeӶ ﻩGq͖=x)|1ۈ,gLɔsCtz \5r e 7SvWį[mQ8,5cұ,ò,۱WdSW5dw=a-H>Z1LrTvbEmWYn= %>~#9/Խ@T5lM0&Sꂻ>̶-a=&:>2t[!ғ~~lIJ莠h²0MhYWYicGr+kxkcj܇+e"l| LJ]_G Q%Gt*/LWW"HwrZd_&ܜ в=(ڥ݇7݁ /l-U;w6dRv m4!rRdmjV5e(#@-[CEP:vbʔ.ٔAyPd Fzm~_|o]k `ydV3[Gpv#tOtS y۬c $ܻ+tj/I]RW$wn~"bTۭ1Շx4h5ٲ7bC[ܗBğdR7zXO8 >ӓǟMl@| h8UHcf#Ȫ# 털c]vjPp3R]êQLJu%*Qݱ a֒gp~N#No+:?o,80Ẋj]c""LI'*xZ^^<ǶZP=J!TsϽ6yD~){)/Phs ԒČ#836ڳ *fe^1 l bKL!v}Nf6uhw/p+Ձ a;ztt2 I?hޡ;Te~Ee,p\rG%b, z!+E}^g{7@bs.%Fʤ fkXGNFjeph'_LO.> +U>{ĕ:,%c >aWSU24m*2^;MF3 |w؎y@_,,DȞ貓ɶ2wiz?)z6t 0L0a0M%1} @a PpV5_p?Y/Qjf2Q!Vh ~qƴWC=<"c?n 3qmCxNN;.@f:;=H]BAhBy8oNVQnNlbZLpvAv[ܓ=%w-)?;;(-C-! ,{LTpT%,5e >_8Z]yzenXvQ82 q V!ӃȞ;=:&-+,1$V5,"XH(j&潒A\N:SZjvhSaFU[f++C!7~ѽÅhioϜg3 1ElI`&m l)[$H;-_((gZRe% `eJ΅v]3OsL T$D\gt)>fyBbDiu~::1÷7d5()F$y&T/y;?dtk;܃dȟ1|/i2}gE١ݼ;564PɖW0xT=W$fy.ޟ+%/w^qrX*vb?nqdI5mW9ܻ:t'M&Ͽnl_.1Ęo»69j3oߦ7 H^iU~DEn3ſɏZ?^zD?)TDf囲v+2MTb&nZgBCٕRr[Pɝ-{v=fA=yd*r k#Kk (F#_] *쾉mvC4 1oCUcTc^ QXhAMYK VXT20G^GrlR,~g*5pE0#a+g5KY} t ΰFR(XUVdZu[x aDaRuo6C;.o%UeK@%*2D(*Ro_YIIK{jA[ݹa@5P Y{LLykwݏ\tsG>w d=U!OX/>aض3e7TR$7[7;|Byk Â8D#8%!:o{Q!pnrP.x=T4b!Cl^ss:t{=#0Op3CPk/ź3-(p3 T) ሄ`W  6 b~6dvӖm~sN9՟~`t+7i>#%l#pUJ zPັYVl炙kA=}L?]7>)lm1.W15ꯊ/b%ސf)X(-GJur}6 ?V,b?spd~)jqJJޏ-1$.>5 jb)E%YgI C(֯:T 6lwu/!i}zNzh]#.-ܣ95e0\ĺu>|3'n3/\gw^_rud\>"Fnsm`ey{*S1K˞-0Δ@!W'v$CMoْAu4y 45^"X,EAO6R%ir-]: vVCPhw2ܻ>o{+++<^ڻ}2^OϢ-s"NѮ+Tm.N=JgZߏN2O=[۟Yoc+fCvM`$/1 OAN )q DxK|Wg%9md_J<[ ^79~p(&e &SeT7ygM 0I/T!TXlMDbn-5?EPlA``/`gR<Bdef\ux(9!q3v H|dB"ZL})A o#f)l9SMۯ|+~H & S7& )"ܿ]t@+y{GAwwUle(OGSa-"]tsl{Ti0'd>>XՎ,;3]3гŅHʴؘْ}ӃB/PG/BM'Bb*?*ӣ5xJ WSkEK6> ɢGg; +zHnO^#]g[gG}'j@(P9xh k2XH s*bHW=d& PS QbuE׼{7fG׿Vt&pBjHtWnk]wOEsVۣΙ{*a7|Q7XVWОSae7p7BvW5;2R%q.)*F:7Cʬ9fk/K2O#`_%vŻJAȵ'T_m5g竄 ZƙzpֹiK@  ;IS 5p73â M']& ꈲFɹ_k{л[YEFЖm/kC+g(fβjP*) 4'r>j*L)MndbFfC '#<ˠfk'J P!ʏ֧45Y>hY6\8j48Xo4fރ58y[Eh(kZ{8:f +ցiN|cy3wP+7x t i=R)׻<W'z_+#ۿө/;.̀tw$6sE uȈjv=:#A5gpWΤű* å$&$m-ΈD-)RA%4B M"Q ʩEŅh޴8 t2 [ۼV%77wJ~wvcj Tm-Cȥ]CZ!%(Oӑ5w2f;njKЎ:SEEY6Ir덜I-l2 hv'IL?ijkd$HaM.3ukj$nY@tJ%<R3{m-i#8t 5D6<U% "fd9&Gix0~dVmuVf ܫx};&#rI+b0V󙇉 V%\ K:NKK_^Y _tdfu~rW|j>U[|.j{ O\EŐkLkhֱmK^xnivVm /tD0]RFg`Kk ŖY5u=o`˛S[L*!wo\ uH/hE8FΑb3`,QFT]7្{ b;VC]!6"M^=%Pem;֦4 nM9LhP0nȼڷߕВPݹ=w _U u3Ƃkȱuq0{ cΝqu=vp'{.9A6b3Rp#3ׯ}b(NԞY]=1̳_>7x釾Tg~я]g1etK$F1kd~%^d=[DА!0s8^G+TqJCCeS5k )ɏλCg7o~c'7n8XƈrUoa e oCuM~?ݽ:\ŘHOЩlXdMX$ =8A8Rˌ{}J(S:Jz0lusJ w8+XUKwwBB51= Ǜ!z)Ѝx ƍ_yiwK^z _](v>9Oz[ 7TLd{c5!!ۑ]h+#eѰIM^3(ZZh#Od\0pX3'Bן[4t7n7eԌ*2 {>O'mtZ Ě8ؙ=f]u{$W5lZ׃Mс.mPK -4# H"5qUN]ZPOm)3KҺ(4d$фDߒێBE%g#H0N.Za%tIClSI[#ޡsS̽ӎ1~fY;^{ AsNVL/if;4-.]rԽ>jkZF@;`>AŚOyBGSq1a= ֱO֚t7L|VŸ;v;ID0;3xV#@gC3OyKw]v9,U&jaŬ"a弭,N]wO-bԳ?MB'p[迠ʼW!xDGm,|zf,cg^M C"dVsTfg,WiFDxlYGIn`rH|,jMqBpqZF#Zn@wZv }OAw\($y11"Z!Nݷ!i=r1U}-en*CK&{&`E˙כ~bb/ϱ a3μJgBU1.;V^}~vn>O55o}>x[=7|ۃ :pWI^;*mR 3:OeQ~-1NpYs1sy+w6 AqE+N10]{!:af.#fI!˘>/"6D;gej{izGfܚp;u#$>`<}b0)>0Ekyȷ+)|4BnBICw~̥d0\ng;zL}6\YH~fom^|p ЗqJ-8w8Z eUн:)CӋJ"r_a7L4^U.0OH x E:&vH5ױn6:zu!fа֮3xX>p$cAgi{͒K|>:ܷ.0xnw)j!wmc:jfJUMe ZkUe<{3!v'"xced?*d\wsae@-x+ɔ$>ZԥYU|+ճd˨l 'ݷZZ:>恞- SM MLcdTic&_!ruO=FEAjey6pȀ[$,^BQ яE]5%sڃ}ԖjZdh8hQx6Z/pݽ8h$Ҏ)=0"'j VAA|{l`NUmc '6#:u­FdFj'9d*n{NBU:/|ϳ= 2;* :$]&:;lZbCkWr}8ԗ"{;bZZ:^?lIx?CIck6 M+m1m2ӓ6ʌL8̙.&v£lBڜ2[brE٧K A)bWM!5zl4PZN .^r_(cZcFV`p.]Ftp^/|Hq=q48~Xͨ͑l#s{j q5]wڇL)kǧ&d wWCtiN QvO3ԗOM=vgН̑~ פB:r?{ǜ`";;\p_HEG܇MOk+e&t/@Fq<в}j}$B::AEGZx*dcY͌<3]N"J΋ѱi dVyt0H-p67'\upI8 &p.ܽ1nAC-Aֿ@l44lP̮ I_( kq&}`"%r&F:o8Ll(֭D@ pG?tlyW3[]^0buP[L*CKw_T#*f2呐ae087e*O

        m>RnS={|xpWYq}?{W6-up2zBG%hV4BHf\̓D6~8x/:ު}jдZFlNӧw L~d{/(M+= +յfsB M%~oC߇@ \U}SEs f> 5I6peJ#~;=--=Dh0wLki~7tج]$AW?2(Da%gz\`)lLmDa=Ь4ٓ` I4Z3n0w) ʖ3&m{S-PbNйIar~*K)H~9c*B 2oFc/݅{ϸϢ]uN.o2]3F'vakۨkާ.XilJ_TL~0WXv6ܯv>p?wHSp=ǙQJJܱNEQlZKPKWA };XadTސ}I0&d$C8,P5'Dd6y.&臸)lZ<{qTKOdu(YVS FOXWZstnLN^)iMjPNdp'g~G䐨˱mz]QfyEk:С=Ĵd4g3*E/tO/1Sc ӗjr?la:^OJM*2cil j%M)[(I>;~ܗv EC=}^;,pӛ+O};N<9p9Hu?$l I;>PS5Q@~+CiQm[ŚŠF=^{.Eٍ hķo~[zaFm,^M^nÁx/q|{54y)`gEqZ4m At)4hj$;<, [^g!(.2_}(~2oN%n*e"RݻC xTq;v[ޅ)};Zu&"h[rS5闎f6;ȯ}ೃ,yߑ㽍>Z~vߡ+Ν;vCnw|@w,ѿIzʘWrJ|t^㩗DĒwv-AW~ ufK[5T@åd}0 䀨8:+Nn#g?#밟GoIXDEa8J}ەw+ʅ#ɍ!mlc;S&Kw7ޝZxX/l;PSz.$8,Nƈȳtfݩn.?/xpWe{Dgx9v{TR?@̀>}ܱ=$ 4\$_psr-xdw2i"%g ;?@Fޯvخdi2*ϼ! Kϳ?MR::sN Zk_qx~闚pzHNN7aJ]V='8׋QU9'XBXz%Tv M#ʀC;-M4KsGs=mཏIJ]w _Bߕ1ziw]'p\b0^2/HMMIE8k4m1':6{gjlsP>O$a{@s՚C*zFן(;% 5*{^.bW1x?Vh?B*z rsހHU<},usqdrOJ '{RrZ66ΟGݼQf3պȖ}k/6w#hko#F""z1v-b2;qZBeS2`X&aBx q:dݖd՚ qzz`12'f z2}EXeU؁2^0 n>ŵ '0_ys,cVҪ 'phz?ۮRnnJR@b\}!']2 1o|D*?n-r? w} w R^R}fOvm85=y67Z gz\v}ΥHNܫK#˄/yZ'Տ珁}@.Ie.)(o6Mgjwh/QNܛnR8a0˟8H!؍ ?~ GC8@ӵ  97doӣ?6w 1NfLIWk& bNQӭqgURJhDס3l%,'ێvdjW?Ƶ wqF #*EVSxm+o >;&FNXN HXkLz@\g?nҌJz]{BkhfJq9|utѴ#sƬGPܧs4w'PW9:}bc-9p8$-#'rB鹸8KvأvDx&/b@43NX ~+S ?7&1_wl B:z1#2#\]yfyŞx)_{gGw~ o|Ye^} UdUXw,/MmlM6߾jUlnlFp=d- ƣ_W=ʛ Njvt~A#ϼa۵;*zW]j~U:\bܛY{rs.&9n3J34L0ִ .1D\.=;NT!!3.#ʼk}̄B_gx LꥪSo}jY_驮 @ x\(\;W O٣eHLM[u7vWg<2h]YtY7ye~кtuuƐsXpguZ1սV77/ t31"/\ݼ\ͫݬFf^x@NbTY;v7 i ZY` vRS (OoVq.aQ`P 35J\|O$ǓҋT6%nlW"F^~){=f('dHld[x\ĬJ ߱CdUA{(Y^:zi"3)L5Vp 5>+t1C* y I݂Z$#84Rux#t15V 7vkPΛ@`SEWL ܣl |d>LL&b>β:'/N4㐕oEOkFu;kSTKk;1=|oGO-Qu'[s?b?>{s(&Sޝp=9PeW|ǥb_?>bKmc$wgɁ7-J*Ickڙ]u$}C" ܁Y!g.'b_垒j,,HT;1`%Võra6}WbY>{8 i!`-pɒt-ȮxFecke~mΔΣPi0` 5"3af>|Rp pnT}2= s> -(]M1o/&ww%cƥje{-nwD r ߐSeCv&WlMGR7e5oΆ#; /ԝ}a9F1Vzᵧ&kЦJUx;(EDDV uhȨF*sD0I2#f©֑$,:sa PRb6(K|?ݻŤaTr;sYyEɄ$i?`T Zt_kxo-+vL^dG*c]Ͼ.Vqɶe$z~:j+j=;p^ Z#{Mw?8th,gWHIrcg7x}TӀ.pl'N?wxjHr0#yi.a{y~6Q=7F0ЏK@w"cj*ޓ9.X`n&gidBkn*]PŋR}q/ePib`GC;{;# PhQ-wUc^SnP݅Fp3}lKՋcH VU4]R'id9m"XAr4:oI () xBy |83/?i$$ VEa9跋+[ݽYt@y?s>u 295;}pp%k,9݆ 4& -|ZQb \?tꑊY&Ow}rkp?S^랝U[U n[0UmA~* YԄT%:.B ,gл?]7I꙾v3O蝝1w VKɅ=8=%ywXg,.j=]kDže&K 箤%x--/n׸INgFmT39 Q)u&ke[fow܀'#6ON._۽@voPpz*Fw,_Qx~&򏖙BvŔżݛy:imȻK)z ah:6y#KuhΞBZ$}$WU.Ng,H}(vzF;#wzy*\a\G Y"oiTz `z̗W/t"{z~pﶭM[V-}M& Zswqf<܍;1QÕbba!4 CWR8B&B$bDCBOl:+oױOtbl*gM4onnVQLJGrY2^$Kv{7Nc*nC&rHT >A)i/~ JvL3Yuig/~`.{: 8s+䗙+\ (5.Em1`G ;~1XuMjYԒ2.}ޝӺ1^ZzYGI4_92d6WS>ϼ=*zY ]'/^ZFŰk bO+D꜡etJ.|肋_&ґЃ%[0l⚰`U*v8[$+Vq8 Ynѱ7EM]Tys􈪀{60!E9BNRtGMKk\,Vwn g+~yE!E텛mLHGrnݤ_gc w>Hjt};aԑ~( P<\BS&e%F]2HFC$]sj1QXM'|ԔvޛN`y| lw.7ax~3qX7  L m"/ڀ۬P8g}$vݗ r>>.0[[Bf 3gzH:?a}VѾcsվfH `> ReI.) ŗj:Q\y" |:`#3iNHցeL5=#!>z۲yf}|_6Lܒ|\Q4֭xT򫛨{FV{ݴ{Е(!άbr.0)GNopj-o&Ϳ~=W# g?j'M^OrI3~!HeCo^twR%ou[*zT`tTp~wG6|G*8gawy_WUIJl^&dM"PU+^HIc؁{t-:^|4߂+M2W'.s/?oHӄ[M='~C{89s-1:l o{W&9w\<+xC ZF LѿD߰U󗫮##P%pq|\.7ƻ\9-kDOGRL O&wq?!w@׏+Vy) pƋe:e2y,BJjl J֘7.*q۠%lJʘ'આSIIms}?jRa.Vv[;'4̼hBBQLX g)mdZ{I8CBLIFO6׋UyHbx?_,ED5:j*5h|J RExӧJ2B+SOˢiTc:^`x3s7u<Ӡ8;˭7,M< H=zW/j 4!s5LN3{\ƦULaZz$W/p_.P!p'{QEn $N=t6v VagP e IX{Q7#&:s$4IOAY3{ra M!h|7 i+z-S+yO`~9)t}Nƅ R&п!( AJv7 "W((_yeJ+vwUܫxe%gIr]g^>YWۇiWu*SBMY \nK]PƁʺ ]8r[m\DBi.&Lx^ry/岛:sÈip/ 0́/m^@ ϝGZ)9 񵫭s;swdøX+ CӭT1 g7U-Sl_n}\! 9p4R):w lxvYs! S ZYG]b5趒oDg$:y}p'|~F%X֤ćJDcfxݬ.Pi5W犟44}o0*'~~u~s4PRI wś6dJxwYrQ2>"K"Ru#:JB=".>ظgQk;B뛐nƷM(ǹ7[#Ո8!r'oORl%ՆOdc_,{ӉHׄ Զå2L{#{|S@#<Ļ0T[-gEde_)pT|gGt0Og'ݫXǖ vRw R ,uX"`W>両8|"e'!IQnt|]PY~au0LDG 3hI!DACq @ 'N;I cǞ3voG)elW=Rj4U$GGQ;h z ,!-•vC Dȿ`@$c; qd?}CPhtpO?D~Jյ*2!Q8"xQf9pP&c!EFdNsZ.HSgF,_xY~;P]0yj$pO%ET=ͨg:~ۣ >?WJ)r&AB^l`NP_Ae^йj$p gZy]}sѺ$jeFipU5%YI,aqb0{7]E] B#@)R6_zD|e_$dP+3Ňϣ>y$~ޕXsPާmT:*cU=t3U Z-y!d.:g9xqx \f@/5E4#9JfMwi=u9gl7pqp5]S%]9/|7" `ݫODەMWYLNۿʠNխ10 -DҙڪKTf;nΫ.xp5ýP=\]4;E83=9.B;R_g뇌ElGu> \00bn2=M\Qw)Q[-Cp"Vw5{½Ys2͆ COaEg6LC10J sTnT;#o"Ib\ p5o։&ۻi9&33;VQSr2{c$.h%"bY{Np T Sv2nO /\ٛ\?y(v( _"؊g;[*ݥ{I~3a1yuyp@K(ݷuu.π9a5/9۠;utOP3\aK74 )6/CMwA~E~Np?FZ(ab`vc $ƞE(Ԟjps=}2`h?qWnaS̒p z;6B{F<1p_4X u q T_Ҽjϻ?P>18' Ƚ&Uq~]U]C"jOv,wZC"jOE֛ݟP+S%Wne/{4p<šTDzp b6KP$ IC!S!. ?tsnj՘z>L<Ӽ';F]6Qtm VL5/w:Jǎ/,z,?jzK/>tL`ޅ݆\S']N^Wj>8wXaeE;(09{vh|܅{nAw?mҹoqo۾0X]wlS :w9zۤih>Wb'ˇTǝO0Mjw`URG)$x:Swv86wHws ?qgw0#S wv8w]cvḳqG(;ؑQ^۞Nwv8%qsh^:;;Lwq4RmO^T=qon]궏qgǽ*'6TyԇRwv86;_'3QPwv8_q[2|L< wvwy`Uz!t:;;LϴW$4`U~,kaS+A%;;L-cL5h4w7 (PS۾qgowvZW\~ۏqqgq2.]I 2Gxn @.BLޑ2 ADz&B_YP^ǝT}Wղ +]pmщZsN(Z3> 5};QǸSbKLeEt_6pk3ֈ걌c)XmAMŸrq?.e([c(h^nK+ݜ8,=3bIP P^ǝS{=zCXf:-igf^sK(D$-Aw`!bq[=+XاJGSPB{ wQ=,,b33wuwL):ݸϸ7/^$hw5q ihg`Gi W8BSwfw3tOfRxmJqk3֌zEƼ_a{~~LFC5룐''{@y^O '8]"DZEϯS7׋PEw9Q[qfS\Ha{ wK VX=p/1X;cp%qg`٭C# HW A11)pԑ ܞ^~Fܡ$Ȉ;q:ޓ #PG{d{OCqIw#= 2mܧs 2m,SKؔaAFܡN\%d)ƺ|e>ˬqC0 q H$w;ԁ {| `HCr;0$w! `HS2DCr;0$w)3qe?`kЬa U/TvJ3.1cƌ1c|.{P?GTZVSE WT8ZS(S#Q\ꔣ@UC )[(U!ѶFR!E.ܑi]ȴt֮;+ǜՊv_rAR~g{%n98{\L~3m~JP?6…A' ran5ZCT! cMЪЩ [FօA3ZG-hCY,r3lQ|)T k,hF']m9[;+5v_qVw.;rL6g{,Ge#ξ>}OaLOA Qe!-hQ,i'QP), ګBu6 huBPfXA¤in4rҪ3D2M>x4֜q}vֶmg;tV:vǝ,Wםm78⸳./7m( |4U.r х rOUGP@,DŀcAO{vg2[=s} yO u(? mBUyx.Iƽ=Xzr UE>/[`66ٛ0q }q)&B Lܟ}ݯ޸OEQ>`p>)v.qHV.7Yq|zywTN/^?Ӫ뷸r/^`xqOqH޼R݈;DOt=wϹTyCݷu=ι$7jԡj);@ ھW}~ YqQ폫2]WW|B4qp ]zSU;/+,QhW> eGNMLI=cۃk֍uC u>jN@ǴSdy!d qH_7q0p;w $_v@`=! `HCr;0$w! `HCr;0$w! `HCr;0$w! `HCr;0$w! `HCr;0$w!;u 0_A `HCr;0$w! `HCr;0$w! `HCr;0$w! `HCr;0$w! `HCr;0$w! N0r?< " HAr;@$w  HAr;@$w  HArIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/fireship/index.md000066400000000000000000000031371507671574500252240ustar00rootroot00000000000000--- title: fireship.io date: 2019-02-02 description: 'Showcase: "Hugo helps us create complex technical content that integrates engaging web components."' siteURL: https://fireship.io siteSource: https://github.com/fireship-io/fireship.io byline: "[Jeff Delaney](https://github.com/codediodeio), Fireship.io Creator" --- After careful consideration of JavaScript/JSX-based static site generators, it became clear that Hugo was the only tool capable of handling our project's complex demands. Not only do we have multiple content formats and taxonomies, but we often need to customize the experience at a more granular level. The problems Hugo has solved for us include: - **Render speed.** We know from past experience that JavaScript-based static site generators become very slow when you have thousands of pages and images. - **Feature-rich.** Our site has a long list of specialized needs and Hugo somehow manages to cover every single use case. - **Composability.** Hugo's partial and shortcode systems empower us to write DRY and maintainable templates. - **Simplicity.** Hugo is easy to learn (even without Go experience) and doesn't burden us with brittle dependencies. The site is able to achieve Lighthouse performance scores of 95+, despite the fact that it is a fully interactive PWA that ships Angular and Firebase in the JS bundle. This is made possible by (1) prerendering content with Hugo and (2) lazily embedding native web components directly in the HTML and Markdown. We provide a [detailed explanation](https://youtu.be/gun8OiGtlNc) of the architecture on YouTube and can't imagine development without Hugo. gohugoio-hugo-6abdaca/docs/content/en/showcase/forestry/000077500000000000000000000000001507671574500236335ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/forestry/bio.md000066400000000000000000000004521507671574500247270ustar00rootroot00000000000000Forestry.io is a Git-backed CMS (content management system) for websites and web products built using static site generators such as Hugo. Forestry bridges the gap between developers and their teams, by making development fun and easy, while providing powerful content management for their teams. gohugoio-hugo-6abdaca/docs/content/en/showcase/forestry/featured.png000066400000000000000000006733011507671574500261520ustar00rootroot00000000000000PNG  IHDR$~KiTXtXML:com.adobe.xmp -CDgAMA asRGBPLTEɛʜֺ澽𪩬ǗӨļ149ʙ镕ǜ.1539?{z}wxzMNQ58SgS<*o\s>>@ @ @ @ @ @ @ @ @ @ @ @ LXX ^a`Gd||<>|m3@ -6yJ~5Jd`';9bV?5 6ɓׯm#6ta@ ɾtDycc !d{`T<9ho>?cp@!g@ [==)p ֠6#I~ߚP#aSSc[m}]=2>5?Yoi(*k9>b*~ tFÏۈ{ěǕ?unJW+蝘m ~#O_8I6eƝ7_w$?5~j*c2b1^66}@ oD v?){{{X͎C>釘l!w_swgmo݉(۶|jG˘l*QÆ|rID_;#fآ}GG֎/6tʦ_p vܚٕJy҆;Ib;1dxeljm=qgtq`JL=l;NMw7oK<_Q~,5/W80&꥾FN> @ F#0o޸?1dtOns7x?tvD>a*hgj2'OőS7"##ɻ-{``'M;3M5/\o?NQW#a4$h7I=0ry6>]4A *(`UqRR߷jь&{ɩL1;}-I٦$ 3-[cMqDȌcSND J,flqpCw , 2;, T|wTrf;1ܟsl³]WaM~$>Li~eSt[ہ2xbrv` ǚӅdƪdWbŧ;-^d}d;MK椛#_lwi#slJ 0o xYp!W}= IOr`lrs ۣ7d ٔF$!Jp!?,00l*wt+D ^K_͵~7񬬪䪪ryu>/ pS7'gy|"}Ct*9+9z7:kսޮwJB_gϺdzʁs#l8Uz1B*#џ㾀=x1"=IZ6{{p}UK juL~P9JよheS9r76m;Oڛ9\Wt~Tދ-3p ^ 6g(U_KnO' #b2)Jsָ}W<"&kS~t)ÓlYF9:2tnX :!C!= _?=ÞYJJjH0a9/p'OQY-(vXs e㋄]ǟZj4ra~b/J? qovalu/Ìm;E=GQW -MWB+g2cB֧}A)Jqk֏3/Uɇ5G/ɬ/ӿs+z}#? AA~\/T]8ėhkѻ^].gF)OR6Nea֢) E®іS&)*jS}y]=Ef,bp2E%kW{"5>TXw۟?ll5nkg\3KU/|àwkG)*fwfR/kDqXuIyR?_خ_Cl^?xyaŦ\N0+sspc-@ [֤YR3ɻ`x\LtcCm#ҮʝKŷQ6өkr||!vR;c;z * kėOQcWߘJGҸx=̙23OD _MBwUmTt_^oA''&-mLJQݽII±G;A[w]~}<秽U0s4wu87 Fͷ; 'Z]?܊C!=%t]Lp.9z8י5 Ȗ֤Fh~ydM>-궦pK-ɧܜd( Lkh́j[3UQћ_5- τm[X538#^ݹ}' ݓ/B)*O}9~s̸6#h pOw=z 1WȌhf.f9L?"<3@<;;sw/;Y/QN.O8}[,!]v^P0ʺO7;_ hԾBI5/S84L٢ѿMnHߤoih Vݮ =5+.?3%hI܆[>pH$7瞀uN?H9yᦶ' ˞>xl|LGQJmr9Z-LLQ5Jm0 nOHrݴѸ9w(FUy &}05iU_^'Gl=v9"J\:5')Eۮ#x_O]w2bO7Y:\GުO0hÓxHQ_(c)g46ȍMQ?S:l );ث3ٿ_Ӌt[~_{}qOPZSTU^9Ú$z].h-|(%~l]dt3ZekPW_5š~yXt,uql~~AO+Qb~/N9~|8 7](oAϬrw~Mp*=JE$^:>tO"ܿZ4w.kUe3lWԄqNg rgRp6>r4s\mpB$t`2V)EO@=yxҎ^-C/O~f,U"g2Iw+w!ef+6zSؕDMMRڶj͗qok$c)usNd/ F4/hWrj~Ysv13w1t[&hH?_CޟQbߙ11-=Twi)rł~| 3ҴiamCiuT;ٱ(]9?̙`*r@C )W5a!p**sR-XR0bpͯ>IĕO[mׄ?3"[VpTXx^hs/.O _%gCg)uwMܩhJ1aԯUڗ-m5_r5kt;xuzڮ0Y[(w]͸w~`^?Nuz <FhJ>\~2] H>0 ]x~,ʰB [rnrU6+ɀIIJ<}JLib\%2DQjdž&ѹ~+OfMҎWl;=$C0N8PÉbWډɉLIቸg+wI3 ̇7љǾӽ }8ޏpoצorGBF342Zؘ+k:R'{]˩j+2<948i0Xuc0nL+)PTV/JQ -UA]ɩ+_N >L}M='WqA14F<ňͶ)QS^WEeLEspW@Q_Qg_U ƬLE"p5`h0!:V96T{GrohđZwv}W=1mjIGUuCc+/HOXWC赇k ff`ѡq߮M5ݾ]up|/6\HݺXUռ ŽdSc-u]e}}Ma?X[.WA;m0*Nf'i$$ x(cTS^ԜaIvtw*fQj;R?NA_țO#Oq9;2NL&WUy(g|e^-c>#=|v GYGߙ|nJ3Ti3Lw;.Ť@Y^f};R6='5? Li3~;зw +'R[{ϊ^nb|a2.o܂ ]+> L١u[h?ɅICU. FxL_@~ȁ3Ȗ.4mX~YŐ}_f՚70m\[FqEf~q- |8{}€ž ͎!$<kF;mrmѥHr`55PeZ?hrGG2eYv* ;E~ʝYUJﱁ"DUݯi VX\ϷdAQ3QQQ({:!vv/ruGr-pA O7f;wD ^_4Z;<^/W=mwZfx2|Iyw{=6a>gSχ5mߘ1+mm#f^AbY z"[ryʝra 壻<1%#)[|Je{ص%#mrr>~M> ʽڸc 0_ zÊ^-z.fSlةنܽ#а XDn`~cN_{/W*#>Ϫ5!*-66|eis_OьƋ` F9F$2B_wTE76u!Co;6[^;Mk+s(w<H3g !ٶK@m_5~Glil C ۧ;BżG+֚v L[6,lue.8s2۝6[9>H*ff}.{Ԓ-UHs Saw▿>6{tLpg3B VgX;{K]ﵙ6~CoGc76ជ2̶;[:q_o{8}ɴųiwX%#]ŸwDoøyd=aOe~fݚ6bv|4+|wwww1mێ;z6Aܩߺ}0STNoa5ھ5{kd}6'ކYX6 @ f/*ݩM_qXO6+}DR,ة,C w62v$oJx7;3sGlW@>*Ɲ&_sgjowLM/Whl;į_wtt_oxc?x2k}T|O:#+Ne6{oqmmmSSmm:Z]C|ۛ7abq>hop0}G0wDDnCow{{{D@5pPfLcg2m_O!#b| - ~3 ո!bO֙.? ހ;! C }qw3mτ*wV6{;mmm;W}W:>??>!o`M#;pap{&_!pM=9@@>_̲ C ȟw1@ X[ư:py @tf;[]C }sr[fp@ wӁl!jx[Rt@ 2;|`ީͩ^KpgB T[\v@>~ލ}'x7O@ M++jK䃜pVzm?8x@L=w Rr_Zy]-Om2 dgWS_s\<b8dKχo YN=Է!dZ?C]9KL} : J:~ffF:0#pΜ?^pq9vL$BgsE S/;|t"Y~-G@ 8kvQ,EcuzDjqqlֈ>ܭ 662Nu%inCee)w{gnZ\4 ]bd6w'Ks 8\$E]˸~Ӽ;eY滕q7<;l) 2vqQ'iE{hhY .ڑ{¸W]raݭэAnw),a'TܝLwʴ;+w9]#<\$ {z:0.!]?zݣQw2z?6 p7Vp0VXqq3*Ti q[{%iˠ=o/Yn^ >Ӹ[]We pw!;s]'TpbϦ#)e4itdЭydøpved2]VIcwwe;!;d'y2dZ]?Ip?KC*gi F4Vd\EIG-U|lq_aɸj3/= Cwg{Xqjb;>*$e󞙉q}2d %"Np*\ft.].S UI%kZmwqsv(UT*Lev</ Nrƽ wZ;9ɸQq>rwd#H%*Irb`ow\qWZ $.22}q!d߲ld$=1{XHJ&Q+kN rppa)L#Q8/Qszۂe!W} p!#h8$'C:5 I%/ yK*wT'&^Ǻ= wYZO Cݹtn%㐞ZRqbܹI|J(yzҘ^*=B"C;UiPP)]a6}Hi >Gt,7W}pwڵwܧvwkz>f:[0W%s/LrųS>`G0Jbn2IRnJ񺻥pLc!KA7:c<y]ӻқg$9!2;Z3HI̽~)e !n^7* fJu>*So+pa7-AD> Ȳ2'Q]&ú[nK;q7,gtHBP.XR>] 8}}$''gd$MG{07}&Irk+k9G%aqGbǹ( c uw%ߦ C qqf7JewɆg'J@)웉W Żd{]#')J9E5*uAQO.,pCCiԍxfp'}ғ6֫Cwg{] *asLA:<\u$\ 'fW7Ru]wwW:Nie El璶Liw+A$m ww(TǑw|29* p[&QՆ={LuH7nҗtC;i]jg9W,f5Hs Fpu ykpwS]p^qq9E!U3I*wQw&* x;]ʽ4** Lu# 7p!;so0X'򑤂4/w&pTY;>&+˸(IQ]H[f<p݀S T޸2:.KZg=wҖ_A˔dw+)Jƣezx:'^s.źs6Sl-!;;}+p[&n%fwwk%ܭͳJk2Hmĝ2e MOyݸ[˹.#2#6p#tdd[X+e-Co66<w@drʢ}}/Ý1/ӑsUrjWppt4:˕qiv{P;O欌*U|ܪKCZ7Sx0p@מ-=`3[r&9<ש*#FA\G6m} p!M.eL…'1-s^wY{ `ܻiVrqrt I;xUW-qwO wN"UxV/4s?QUNQpu41RwUp}p;b xמ2 BY+e7*+2L"Qj7eJy]T%swZ>XzUqGˬ{@19\9l|蔥#cFUXǎlwfCwȧG+wk2?54r9n= 練GW>[Hn<;Y,?xJ_w[[r9#>AAx$'=vz'CR1la,tpwqlNܙw;9mwg#2E-KBP4_2aw|6G[YEn,N$2 =z~[qCw瀻2J/)IBʝ^[FT6xYĝY8+t0!ex)#1#;pj*/Ҷ@Xǹwܷ 8#q"T;Ce|;]O㞙,BJ ur_FAII.,)_"*q/wܷwo]pc2)_ ѸKH[׫ ]n={I,@k |%Op p[;ӖqG M{6[ސɴe^q^}ٵ\q/uu *- R * E$:{TqN C> Ɲ/KŜL!K *_}~v_!aBk*yR5W (-I*-MzRY.r؎{k-?򪿀;pGmNA'R x'ʲΦ*qD{vB,vA;/K33A.R TDo2ܞ.ܗew\p3WEpG{nrWq s(PsdVVNr7i`&i5BcgPjtj#mC>#wwTrPՁp={wz"s_瞕pO<7%;kwlsybwqH2ր{rw!;>5eqh=wLvJH͗<ݟ+/KO(TyBzx+լ#HwuO>D*f|fQbI>3AIQQIx=CiTwВe-.Z 2ćXNpw2}D,-W7^ "`4#xj?>Y#GZF0A$TiǕ+nD(r(9MNtor7./CwG{WwK2 -Lb ("Ȭc+zdcI ERR^R:*}\33A"QC\AԌzpИwW]t3P_1-+4PjG:o^(d֏< ^}L&raIOէ';) }TZuc}C;p Ln&wwzp(H:?>+Q֣j"⃒ 'l;;sAo \Jot,w>tl5p(2y RLQ5xq*Q @HW;zӍpw0F@wp}{pɹ*~\atw%s %8%!*KO+=?poVbc*:iPrB߸uą{;pN/&׹H%Ce PH{r10ާNY|SsY>}os%,\UɓT3I3}ot&%EI uNgZ&oCw{Gp?m#ױ'Bw*{[Lw`wxwLcccwOf *]@P’9=J$|``ff`x>ݮ3 I pSwm=vq,h#٩q_bL3Tw5nt9ȵ;)4#%'ew%C!3p=88𘘘Ԙ?~?[ $ *% }@Jѱ<=V_tZjA]uρ=T!;.>p{8t\iO'~|[g_ikpGN'&hjjjXD)ootwrN>XYx'y|Wb]RԬc噫ZwcwkCGjDFnG]n`iT9&t߸}I g]BA%{ NjljllXD|̩-JA?S]zR?5< R͘\ݢp! wkk3q8Qi^='J\]k⎋s 11Y1~_#K\'+.O"yT4LC'Op] CwȧVnwk#GF0$2R;**j_;p2~4&8bQ 31@$-7~E$WI^Nk؟y?ԍ*8nqB wp!;齅k}_M+#סjHOAԾ˳;>+!<ɧn$p?0qsFoxVJ({y,Y}gṹyu<{csMms8^fqkྮ?CnpwdIwe"QLO~a焿PP Jru5.4Ýiq21LK{fIrJ/aCT_HzԜ\Rpu%zL6Eܗq;ple&-_Ŧ*h_wW_,`24#$H\ x܄ee wR7K+tmMYЭH<^fda!9/c]C?V].O<|Anl>u \9է~ q2nǕ{SSIƽMoi” Ɋ[)@;M`i6΀;p,ølm_3T7;;/3TS"ޏ{w_FlLA"S܏޼yE!.ڛHޔWQsRLg 27Hw&>UcVkh0Pݻ%q/NAPݡ\/Y[K z <2.;p|.ln#59CpoD7{IW&&wɽ{/BN6\޿?W,O?e0 U;JE뽮r^\PU{ *jgQq!ു;pb#ݝH+MMQ{kO3zW.Yf 3R ˱3Iew2$\#! n!! wB˲~* s L{yyy½B(i3&~u䧟$ݝr(K"UsrGᎌpJ InbdtDqـ:O5a7G}3tԱ`GS%ǚ\7OE\ w Ux5w<tkjjǶ~P_"ޝy/q$3}oR5)-.6P?!;c>W܍_z2W8{*݉YwdRo2=ҹϕ3gfg\"P) ){}3VMHwaHOjbpr617іY7twۮhv6Xw$.SpOMDŽ_@(;T(,&gVI [c q΄1r2epb+͌pOrXKt Vĝd _¸W?Pwe)K^{laS9ܖAe; Op?檎ݽD"΀;p?Qmׁ?; SLé poE{_{mFvYJYY ߅tߪdMMWuku-C?e# !+2<]9l$ۇ"Gw IDATwo%+{9f ྸ)hŸ752^[꟝RlDsc K K*pH~.et?Jf+d% ;;lVv;ۯk8'q%ܗn.VjŶTw"ܓd{J HrY7Z}W3yyqGELn-ө*\E y>ܗMwGƲ3׻vK&zZۀ{j,KwTw%Gg -++:۞{Asg__mؼuշ[r IU~ 2xaHJ7 //c}#ew98l 뿕S؜menm#z6.ǸLQLkK ƽ?cDى_^H?\Sߝ3ZLmsD9zN ;ɪ2J/T3[롷^njl=:-c[ wdqo]/Vj pO]Q#B'0{~矫JuW5;p?ܗUlr2cFLX{_D{B*7=Hx͝}NJ.'kzs?SX{#w+;1))9Tr\˃{"޽ wzT4V*8\tzwsS8x_~,n]Nܧ։a YҬ;=~szd&'9s&~""q{n/ = e2p׍ZdRJGtj~n0==5y1_ݛy$cr+kn0M wT+,L&P1dEݷ@p5avZ+Nfn&pgpRE5W (b仐qu`Cx<ׯWc3|,s)H^Ir'KX.\̵vK\Ƭ{.;c$3׶hq 74/_lҲ̢m玁wvF@=7- y4ԩSY#LΜaLJɀJQ܃q{)oAd9gw]CMź\TTFC.ؘb#f#OoЖ!}y_v<*w<=}^^wsCoQ ?ElbqCi[υe;{ VJX\ NwqQ<ԬeV8 Cυ}Yf[Zl5wx S73C<(!gBëǏ_`poК睝}u% #܃ˬuRX'\vAn p7SlB~.{b܉ʽ]ْ0ЖA~fLzEsҖIQMd<=~*suZV+ #Y,JTeig chwytdl? _kj՚Rڭm֭[՛8r14Hw"3kO=[O77ܖ!GX ʺk^jyOw,>Fy:NpxVpe*wb҆3Up_ܝYc;ppY6ۏwzꊸN]\D!=\푑훏ݪk[wnlo2Vӥ;q[& $ Syyyy=+8~|o^-ʋgQnu^S^[^4h,̪m6GiTG*cEƴe1;#+ׄ{ &LEp,;1ދpoFD{㋛/bǧK (Fٵ.%ռ“*J*%I*.f3+1gwScڸ?B1>s2;p^ף w n0Y{ݼBBC))eų?2Ϯ-p/Li{s9j5_9sKh_Uw=pu ۽O>xᎿ,+7Fp_Z֌WOg`ܕ{7Q1%޷r>tMC;V YJJ/ގi[;i}`p,iǘp'3T\|@˓͸54x}yW]1=w3(awߏwe3>>QgF&0oĝc h_n}3 c}EZ3-5]Kl}zq7dp#ဪFАF=YuzH]sOśoL-Lk&ܵ-kEA+|yD+½`f{lC>Lݾb~gm_dzFvnj;7z2Kq:r}O1 tfHuYxTwu(R{{޼ELc]mmkI7-1Sǣ%Q>*w$mˈW;>NNbۯ,}98 1=<|q[6Bz28ii*ʳgϮ=05=1z*(PɬCL_߽o+{k˳(.8hE t;CᾚvۚlDYfw4ڭBu~ӧ'3RTxRQz_pNpw7gHt{ݣq{vlEm3굴D TQ2 juBkR٧T>Moo XjKraXtwgg#ηnQwtH?[F("w2p?~p۝}|TGQ-NL qq;}㎏ueܓ2ʫi<==qpws=-,SA#+JbSoQޅ'nge\-LU+Ϋ)_we6ϳ.f2-Ɲ{w|Ugn\vh C eh)pPC޼ڸG]bFp;m}Q˝NB.2ܽ27o*Tt݅=gZ$HަlR׸Vnl\1.)w[p|!m?UmGZ_Yfp'896۵k ^p{5͋~ T|S;=h5!r\LEyHuD{K/B%j.kfwF@.}CY,N 8ˀ;㎗lmL)S+rdݹi-tWմ7\w+[8&};NܭwEsqvshL]0eVw;ܛn lDջNj>MK#}DjzvR;wv^]=%cmW݈7C>U;]n}0G}){]=3/bJz['xI\pXpobO5tם=QBw9YY*74 d<22Gn:JwI[1ǒK4&z j,5RmW{/^Z_[oHȭZ9 K;dpzʸ?zqC!#Wkt[f%cRSc/]: ]}mUu]}_Nmu ]w⎧a_wzqoO;}K/1/w2C59w3fmJGcboTWWqr|4<ӷK?_Z[[%岖Q}_ܗoDTwwȇ9dORv2f%;ŃVZyg#; AFÚG #!=2T;ӖD7e=;z/}>z)M'ݫ8riW>(ɮT6{gtỐ w3ܣVS#wl!['ݐ1:)ո׍{ +vm+q+nIn=><>ַwT9Ԕq9U=Y]]U;fA2αkX=u9GG,p?ϲ)[{ nNk &uC=ly5ԉS}icfGpG[~ô;p_/].*UIL"Xp6~4& .׎{wHԞ] TVJpwpA?{Եvx!bZn1cBD/59P-FE J6B,p-)dL&cz38}cyޝE_3}~kMͲ@}]]mT_/{zcAipO n7wp7ixښ33/ln{ߠ[Ӯѱ%/%BV wnDWH/Iii׷Z[f`Ō2׿9ZzC.,pڗԖ?&8p`JR\sI~B\p?esωڌy{lJ\PZPMnMjl.ءɸX="}ޮ5.◅Kp_jKp_оe5/\pB'yý$-x<6>Xjuii]cmMzWmiQ{+>H]A-}-ϫݯr˖=+OLwOS>:d^޻xx^ANk<&Ս:vcFΊ 'nx}+ӺӖe/!)ˊ-ee~w;y} 5J%Y:]tS<~ ΃v7Omժ}z*xcuJJ6lПq =+1':g~4ovMQQyU-==%N)w tMK֧Wv u%~pZLTaⰮy l ;pGqĄٳH/} KpegC?޲eNR BT߯{=\7ܓ pt2qmN߾.Ȧ7m"ܛ#܇6 d}ɶs?^]~דʸA{}gAL Kp]>ϖ[YxB<e.PXVUwܓ1:*/*61Gg!EL޻[r_?vT$'=xb^ Sf#'8SP=%幃R[Q1u\u2|K,)) XP>}l 񔑴{wwVH p4t\x+/$=pbTbҟ1ՠ+k?6f&CD۵"]1ˈJ/^OMES~֤ܵn;|<`j76vb {D=3-_lKp])F8Q^},xRamKOw-}@v{󝰅?rGA]< ;?ܧ龒Kp"= 煻EGa]{pJDOvao^v.˔=j}f{;gnwEXWyZܑpǙ@jrjRAwFgh4kJ*Դn;<ܡ;]/>sD\OܙFAD"{[CH=d q b8NSLaϗ;?7NI8~8={r y-͑lOyO ^GއpB漼<٨gc5e1詫ˣpoEK~ye2&oK;y{xvL9Qr"o@߸V{W-ݍ'ˑ%`h' E8 S w#~.iLx~%C$xx|)%:jS w-l_%aܳpYn)T7TݳnڅERoLKn݇ IDATYTV)S24DTE@"s66Q[⣮#PƆ빘F)~uMv>G *ֱds:Yr-"~E' /Sj}r܃X8 2Bj`Ң Ru4p00*Mԟ*2 wӢS]ُŨ<^dgwov/۞`/E~5˔74QGyw;w&jC@g.ze$&qvkɎq _G'e&.#.+{_{ e"o  z)&v|DEIx;F p WtQu$O0, )9m>U*OܪL: ]ؔi~_)ZޟTdd  tm)?!C˩SxrIU57o]|^8L?95ɩɹIݕI+^)#.GxN&:z[jeMKg]]MA- SYYskP׷k"+5wNXsXaQ,t[X_q&P2Ҙ oop7O wv]@ VTpW=QrY=8pS?v?p6S]|vK6ςjpvh"극*wS= Yru)X9 ll<-_üa7oB qs]In9 ]\Q%w\kc2$ a+~}L2'NosPa}/h E? /N ,1quyۏD|_{⸾*jxxh'+GBz\Y0esl ;1eǰ L;,Erai;&/<J ofkweSxW{&16u F@Վ> e۷Fi];h8~<Ѧʒk:'HpG/ԑ5TDfr0v(@|G]3q?CG=)FeJJfp  ӇfAp|.Y;fsMڟϡu@F_b[!)WP t:@B3;F뎅!Ƞfv9so/;E:h%47uO/ ᴡG:̼_1NrƐ:]246mr{r2Zqbbl>-GN@A~x~m GXtUj4 kW9d,=/@G߯`1P~FG"i5k/?,G) wTC4 "hnڦ-z l RwtY9U>zg;6kE^|x,}7CA l|'\dW(lDwhSۇ#6 Sܔ[>%; C)"g{K (cT(Hm,pK)/Ǖik8z y'X;8l{HGSeL ZmQM''5qHgb@=#rWm0K/"yfWU?5Wgb\X=(]dG7; wPn_xr/(f>⍏_[⋚c[Ξ+Y{BTpTS?]rS o8`7֛D&W w1r*RaGChk&0K%1Zct*Sx.a51:LpֆMiwY{ jsM\B{Jq_?Tc(c%8 LTvPg1%^t9bw* \I[C PN%x A_Hwp_d93ؾEl*-*ջsQZ'%m*&qhvlhw{8;cT*P4 w6Rv֏"w3~q^)/fť6#DOL, bF@]M"m9,d>="jGS|ONUC/ѦvFFACy횓Wo]ؔumGe$gw ǬfTE"ѝPv7mvO s9*g.^):ZlSid9a,iPMsINHCͣrQ@RU8Me6l=fsN\"b)4B%˒9+=T6'hH2,MϷ2k- 0Ԙܺ0P'.Eґx~CNᮤx}aqO?5K.¥a,?{`!#ׂw Ow$eVOg_}:T÷y /j^w2 پvYMmmkhb@J^4p7$$-0*kݱ}t^~c{u_xb7jlJeSpy~~a6R In\aX@- _Ӂrow Yw`B~^%)&a܇*w j'y`edER*@ 5˘%Ġ$$Nl]_6z]Lj8R(-I% $l,?=!p:Rʽ*ȜT*OmDN'3U/=_IWn=Qt/3$}qp_v7CW{ys D^9rI?1q`QRL-z$4(O^C ,qA[ U ·mh-fJpIS/U`q0uBQ<#P+Fe$w>Ϫ ,ڪqAo<2?n|^hWX2cK=EauVINsr@;W/Ԋ$@d,ZT*'LK}Uƪ#RVǓGKC*1} t 'Jѱf,=!lb3{ Ş=wK&ꞻRHÖlӻ\]۶Y-sKwkxK11]Mª`|1}UpDʈ+]cn+9vMbL {Iymee-pp/ME{jnhq{T7'4k_k4h~n--v|4#R>+W&9ʸ\W6_G&\H}Q~x'ݗ^xJvL43|TQس՘0_XL 6wS,tns-y[_+c9 2&)C>gP%R2o9`LC ޟ/ xgS[cMev&t )JZsccsFN0sU#_a_e6W>:{ r㪚u*Bvx 0[<{,tww5T4g L29&{Gnl/ڒ]YS|R}>u<+܋0p_i{o n\w{83/611gmڤmY۶qbmY4 xT6GWv tN k([jEZݵ>{o>oo{~?IpfvHN]\접G5Nye'+.X: >)Нߍ+ ƾqGĬ.+P=i폳&dʖƒedrgglcIβ!k,j@}j:H whD{&,MjfCpUQ`*;ّCW6QtFJyg}V |[RxEup5 XBs6ớ=vUb,'GM:|]RO:Ni8:sj7Lvdq9(k:'W8[֡xl3 g:LN:F8av8`E$\/uCCCuY͞Ń:`[0U#dudn0 3#aCc&s9:G,Aov79F+2"Px/h%u^{b^E}+4ՙlI-\{J-]Zħ>43] Ny{ݵ8 2MtIeEWK:~bmNY$QkEWɻr½*wܤ$?}|{ɏ0L ^[6?^SG6r2Lþvoiw4 pNdž;U@oYJٟ"a#l'½~B ;5fl]L+wa>zm&\'ƪRim][pLYK4FuN9 2py4lr4c.c>)wf }yZ^BΎYgCU,k3oI!N)Q34(= cF^co *@mLqX8 ۮ9 Iu&uQ߷p"-zIHllhX̎ɒ$Q1tcmFHtD#*'ͣvUڋ`Z4S0 7?>: |JCHGˏ?U>'Wzvp՝YF@ߤ1l#Hw$$w[cUaD%8٢d!3:{L?Cߛ~>CpG{ý\*:GVM$&eĘDM\ }Ssen [=~1i7zn6T>>^v|W}x{1GڙyDm6yKO]=Epz]^_@O8at +rdܕ(+Mlir df__pd`*Q6q.Oikz}&Iy%jr 6< ZdI q-!?CnYR`̼mK4mZv;35Tim,3 8H4~P$)3ǐ m3zw`K$L "YVKfzV|W*N f[֩S)a&NhOxᬄ+~lG00foH3%b3 9)&TU&u*Q3tٽ21q\pvLzW0΅XʹEvs@P9h"i=KåS-&Y7My b-CW̩i^mE0zt0=;g#F5xlË/(Ձc _fؑnѡx +pİ<i=b3TVu֭Lu꾯]@JWWW^96N>Kݞ=۫y;!;A6SȌO` (W}AF 2Hk9ҊQ=z~q t,x1 d}Rnj½NJ >{5½~zxu1^;G/)-;:?'{ k)R4XuOF&`ځ;Di ƨ!Lɭ7\E5xEE _c7.U"A{eh~iX_:dˤSFtSʐPx`fEP2--V ϛ*^zKJٕ4oLd(pbA .6>po :fq)BDtmm\SpXK$.="]e0МYqQN,/* E]!CB( a:*wox0umT5 "a";6nD~)-F N-)ny"仢/ 2`z+*Nǥ( >4]m.ؘ 祃9"+t:8f7];|~;@v9pJ{R9&=pGLE2ik" ca+LYU;Ur* Epi~Jݾ)?vGSNz#=>e_ikQ'!&zgn#9]x?r$mSRnHa2F]. TWG^΋ڒx~Iqia1i8KjܧeBB0ATuzQkAwn*zS*e J@ԝhR 8 oMglDyrrj⎸S tY=s b}|PC'_9pY%͂6D0 G]Gf4+N/K1h}/Ote >6&q4d_ݖud雉WuuUg]I2ƞJĤOJޚa ٻ 2"O\?vnVSG'>&}3ѕ;Q/@*>b_ ‘w>tWK Ծؿ@{,%auR2* #]G:[Rɩ+ ½)CA b%g&w¼]M/C ^3x2_I\vãgd;s[< "n`C0n?wzј}i4 (a1%q\ǥg)<#Ty$p'áE [WٺUkB;l0D? M;ͤ#Z\jšG +')?FISC<5~ee"y{)IDۆnf;5*% ڿ#.4Y5T֎ w^4HwC|l{wmLZk'?=`2\f٢PCq{G\~8שzK}Z8b k2ogys|Fll doo^M*(--HN*޽--n6-'m~hWeWO0?{Dp^g_jt} tp}O wV+{өH$a (ּS"W#l E05bH{O"9& DI:+&#ޛE@@%>kRѡTDl7 |~Z"g|~n\~32IN{+h$J @'L>E+~1;o{ڴ p _"Ub - f{,Jy{!k28?VyuxFs1V1B9с#b=lnk#<0hNrJan߂]v*` ϛ(q죆2N A2U!mFos0;;eD;Qj!WL%+6z;8:AP,>9ܗ-.Zi-9.N]p/.{7k95<|;s )~2$ؘcWr51톨 oݵk 'V6$m(dȋݜY7NQt&pR dS֬ctXbe?>*A~zݱpQ3ƮJ1>Q%WbAܗcL/T"ՌW-Ve½C)%OpAU67fSlF CT*1ԓ8E`|;as^x D֙s}*UaFAcپ$U4}2ztt*ezuS aZ]}4ރ#u u t+ ps7IHמMg4@@FLs *6C@rJ\0Am@8-کޮA\C*7": ô۬wQ;=p0պ8 @鷯&2WLouUtLdVpgd;Kwa8@Zdr JΑyЂz8?zgci2w_ʥK闠Zt ^~k2^7 {ll =~S|٩iIܣƭ=9|J[@wOO}d6lMݰMsru3'DedlCdfZڽnK.2pw/D%>pbJ (:@\{$ `XѴfՉݾ Qdm&w?~eB-&W -E㋹ l"<{v}TI3,jp\PV,,+f $va栍iYuy6EA }c4#hz+O;:jƕt>gwLFsv~\\bh绰`Pgɭȃ9j8AI4qODe3Pe*D:Ѭλ1ALuH# " ,*Zg77 U2rvY,8kiy(ZUB^x;HNWU -chЎ''}Q |xJ{ttKptMK\!5T/cȑAӧp_X<6mVA@'ޖbCoo\2Ż* 'ٝ\P\\TP{2 [$Fg 6#;*Aۣ#Cvl;DLo_Vp|e8B|z,MjIy.}׈/(ҩ^p;7zܟow4ndsBl<߾_TSp *B 0vgLX!C{ w,B[9M-ucnI ^EX I%X(fn/ofu%lX|֛dpg1rف~0vGVg_68)0WJ|Eju-O|.֠ Թ|YqN|ЮUn; wNkau.MB :f80aGz,IP*eaǨ}2=P9㍚ P)r]fAp.TZگYܧ|ͅK/oޔ2O,:ZT /Ժ1]szPmzhCIi06aQWÿ 23ye'9/& x1 ܧ]?1܉{|w+0-t" o'meiHt’RF;:61v#5 |ʝ!rĨ" ..ʽ1VZ-Yyc5ߛ'A ##7GxΩ˷Y|(.L*VRM  nJs0?iŎUCV"Eqa^E, cD,hR0<"aTQ6!ys%sroI@yb$ɑm'\p#S2\;zɥ>t~7ѹΑ v !nC܃n"NUS{,eUu-ezhl𾨥'{po\J 7FPLNubpS皪EGE%Y&ƍ‚C]XPa\13<ݫAͫk@W{\}gvB}dGQhhר eԵwLN91B?붽n/4tz;e  Gԩf.cjq&.j"^ŕJ"rjiԤśG.tl)% ;G$½C|5n2 R91@∠lOa|:0Du/ķ*rڴu;GMa}pg*E^N*kS;vaK,38wD)#}ԎB0 cfC;[rw{r$Ui2RԻJKs_ OME}^Wp_$ڃ165"p\RffuEe]$c4憆ڮNc{{C'ct#܋sl?uWIjd;c7]}w-9VAf ^>c b*fzg!gNbqgO+j\ae-wy!w1@1"@[Z[\RuǎNAʺ?6A>j."boOj1 ƂIUUC\g{S@dVXaƖsM1I-,sWOݫkT QQ\IjaqkՏpXF.1ݤcX wwBS_p׊"E"mCmA-=^-pRa|DZn +8p/ 1];d3{"<" eYq7>{eTaN@c[[[c VkYQ\{kC]%;u1c&O΋MUQmqOi^SX7 ßHc{mUF;(wL~h[wߨSMt_1 6J-n4Y.''<@:Z]6Gef[.txl6xnq` rp֬ShL!&BpgWhlu,sqV$;w]ߓ w7; BIœhXw}W\eҧ Sn}/۷/i4vt56WVV5Դ׷6~>ިj=PpN26*[sF/_&@4DDFmΌrG?+ܥYwvlQ~=}Uªz=}-4SMݹܹu?X9rSW @`О|k5T] 5ba- gٝ頶x w6Wʫ\7ۧ&;vGh}.sONF(L#lF%ޮ&\ pij;wFiNXA(6pb6tl2wՎ̎,!L15 I>G VhQű3=uphUZ-pG#*;wg{NkgV r(*u Ўy߰_p /n=ulas, 3_I$-ڇkx }qq;Zz tU6k*..-=Wy\S_^[ pDhj&]6lȭi,[(#pA5zSTfuO\p,aR;w,Lp/2?ynRU-09,JFh_1 . N+惻0us&ZwcHiPӼ(U]V};1؍ IDATdNNĺN{*T]Κ ;-SFzl"byޕ 8Ҟ}]?!]NnږER7a0;LMI2aK֛s<S_U pܳdhY:eAwhmCsDљQad3~½Q{PО {FH@_PPw7 ܟrhx6p//#5x-Ab{ @}w0} g_,UQVYZ-zŴ^?6(^SՔu.NMUkWҶ貓V%23Ձv8z o㣯}j_!P}NYP_j6>Gh J5]SD2R 7i\TP' x>CI)A1KC&1Jb0ȕ 5pJ* vP`5հ1R^&p $ p 9LEﲚlpwx)ۃrBE 4?pwS+akZYI6j;,v\m.B ^w*Km?v'wÝ!cbtG5tF19 1&j)9gDŽ?nWȬiErrPg985҃rW)?L.Cݠu5; +-0p=$j{W\iaEkISeuW]:^[AR/\3Ls> xO/yi^wT{Msչ/^MMoG-7jr?Tr(І]v,NZY7 ,j`ąM2ݗ>Ϙ~x֔;TC"(PW &ZScoFT"^IA2hDW&A71uĀAL+ҤdMP*N3@{[buUq "rS{>ǭx{)I1Q8"]S= rj3rN1Rjkb"Abj9X3y׸]!vҤté![_rwJ)6wRMY&. pwf|t;0A8Cl,'2|=D1wH":Uao #ygUZs&i z㠓[:Ҵ 4Jʝ%r1cܱz[,ed ԃze$f>Ô5Q,9#{A&,HTS+~]e.?=-S )Of5$h~wo?TZU_Qp4h?\Uӛz{[ETm=bUm@Qw"sˬ鋎Q'3/&#^3T.?2ܥ;(P.9QPwx7b6ykYJyBJ[;89hY .;p&`+73flXP U;m T黜T8g}9v rSb[}6^ra(Qwffllm8xڜuVkxj|`HI)zvXC1(p[,8Xq0Z|U6#s?p;qOSaB{Lf/^=!Rȩl|60hWΒ4QA[]U'Gm! o}NSCp~" _KeCqsȯ~B/ +v,~}i~S 3+TO7kA)I+mik:ws]ťM 綾*w{KsS:JEwrǚ7F|=Qwyb'"'&32"(?i,tF%#-1~cWw7B@OԱ_c:t$ ݫ?`8(=9j᭑SXN@?L]-Xm^1GMRo)>>q,È)ej3hx4tnӯv)E Xu&o@=k LVJȗF,8r瀱u}sXW O}Hp|nTR~Fk4]w#яBhtzL«+re7dqbCˠZl&B8xk,WsnOiel r,pi̞ ; Dគțvds G2<6=A C ΑQg-!k|/ǻWlłӜM4_Bfʪsş_pv{C,s\zh֭T#ܝ&kǺ__s2s އOFݞ򁔀2xojdUl$ϛ;QUKpǽ8K+2 gۙGulbeؙ PZƩO&V3fqm.`y+[f@bF-,o g] R)`{Є,мp+DX䙒zP+U9R2{,#RVK:Q2.<p4L'{4 CW2xGU91v I?Rx'D;Ǭf}XOOС&-۸TjB ȱ:F5̴6Lo2p2( o(>I'Ynawtݵn{f<+ IHHtr!Br}<&i˽퍘8^4bcwwH3N #7r3N%'_>%ONt붦F?bmRj1ҴZ17B ,;K? ;)w(@5Hn#9xvGaV_BmwRO|*޲U?M-W}K(1Ϫ[$UAy`41|.z PC꛿"{GRf kabרB<{;lQo1ِT PraPj8P?ϯT~x6 I C*\{oaɣO~\Gt|[H6u Cǩ5}n!tݷߚQcßSv?_};o$ \-EIjVVQX2Epq/f`-_} vDwTHX(cjM }P|;yP74|8\]ѝ50@ۭ+XEWMONM`ki!l`5rpOQo NO dԟ\Ǫy.w_YmF.YF(BffYx养)!yaMYBj[qbLh&ptOHxdP;wHT,邜ߠؿ)ز77^7B:OuK|~݂/_6{A(1}?L >H!5x@^o::|o7rE9oI&~ѡL#&TxѽiEt(h*fS8!5 ӿkVBC[3mGŹ4o [v2>?~B K? +ŋw7QlYzj|f/ECX;܆EJcV Pd~E@W߯!| 0N. [Pp_RI)F=qAC;HI7!}# A,) > asy8˓fd PKei_H[3o$=/*Nqqh~&"zͻ UR N*-6~@57PefN?_6Я?CDo~|l.d>t=܅?όW(FkcOb6Ý>4i ėhv|Qo߅XGROAHǃ<7 H5 c& who?MY#Wiql/_ 2_Ҩ/?> R332Kc tXoRXS=>} 3_175|L'E+C_ 3} 0 tq~/ _qr?`aHY%S2*|=* zngcG@p<0..m_`3[ n,ݳ1fT1 0ܧ&ZqZɗ7ɑӰ*U۫eJZRk(}n~Le[> [,H-]C|ꊪپ㾤)\Lgaqm% J"Č:[6}ݢ2}I|&I\훭OF\[ΩӮtH *%.0'a%+iJ-r5]ݶNu&[QjˆÂDⓖo&r{l(2r{,3CaLYP'j&/43pd `܃^=w:dFBWYڹ iwY(a9ҥ¾siOR趙0)aS%9K >cwRN67޲R=o˟~hEs~Tko|*w‹ɞӪ2 Fuw;m} ]V7vx_prT=W^Wƚ55Zpײy]SҖb˴401χEXIrk3=Ҽ:-fiCD6R !ZZim|6{?doeϜ}_vx` o)d2B ;;=npw w-w4i6uOhw=(ZE-%|*dCaӣÓ]c>HoM?/om6N"S]@41/Y9FVH:Z3ܡ+GnwFxt|^Vm]T1܏zwfzՓ^#z;QeCwՌj ;ujbx|l{cRQfhѩɮX$U.O^ֿQ<}ŜN#Mѫm Yg6l?pD[{wgvz݄tt?BRx:9{xh#ۆ=*8h1)2![([Btc}=566L*/wO =[41ܡ )0/Â.33p wwϞ)w~tOO=5\OSquP2 w QщygJ`aIsWKG&Fb= ^_^f1oJq-dU faHhde;ufǼp '@~ K]ĵp-kRU.!Me]͈p'\2;-SM%%J0aBntddzeryz ˓sé+,6IƌőqܴBFO=w{eᅻ޺sfUwlo8+Z$!iwS;Mݮ܀l'^;TummGGƠ̽\;%ܩ)U3Xr^:>>M)SJI|zyzY7ҹo3n'd\<_={XPS wox>}nv{)ܭU x;mFe~S?3LW=/r=x1p'{-wUxV^5sot1Y>^m4BDz&;ptn2fuPSϚrp@2@vc5 ܙnbtpB)HiP<Ge㛩;Z~'+RR4B8%RM,]4hsw ]k^{whaigWhw>½hw,t w?58ThәSgcrolK^@ cM4XI RwBORa* vݴrt:f{.jU I0**h6<%c!(ww) *:Nx^3y 5HhiAL1jVUM>r?55bJ~tÝel̦ 6M"wmGٲT7 -?W^{ Äk`^>.~c*/>G|;}0}LXp ]EfIO]K>=7̋+"Nw{l,U/PŘS\՟&f 97#m$8~{g[ԦYdja{Qvh IDAT^R__`XZ.s1;} ~n1c;>p%wFJ`=p' SIދf3w T%{U_h^'edL8 ~, 2n#ܽp*TPNv˳}2n,}ژj.8O'pnwfɥ)?ܙܣRgr/&_w^)=6\)ݛ-݊byrïԮ +Vivc|Wp??}i+ݭ[d{ /=ue~pw&pTsآ(^yJ{SI|3ܭ&p5SS=g^;u*rd Ǐyl wHR"/o5/otznoH$6NA:^> 2r T7pٕq=p'O,ۃ=i u8g 8ŨpdwZIpdxT[S%c^87n@L {+Tcc%^|k:/{T^T\LORkOW~+[vplh0(y /~|{(pr?ҥ&{u֩}O'kuJ~?dž!r3ߒ5,|t wRV9jV<85ËR[1O%AsAܡpSc+yt9v/óvYF#MT&b(iv2LkSwՕq @ Mx?Y^{ wO~`CqT]=j:%wu}1G7Y,,m ҊOf~塱mCAɆ7#_EPjXK5u JS/| b<~ (h7}p=55U"'KTj?坸 w- Hl?'2qw.;YxS[nݽpLpG^ϞxblRͶ;,1 wJEv,\2XLv%p0tcܾ쪰ǔlǁYnR=f?HTB=j? yF~RYV\#_wm.%!c㮳慻7powfi?[" pWuu__ڽ<};OQ lzp07uuQ7{foZ#[ka`{*wp m)ܭQ ɸCwOl߮Ks@tr:;%YHw7=.,,ܣEͣQQOXR-A ܙh.uzjLv3(u\[ېRv5 M4Yp>0`IDkꉽ{;&XK*y<n=3ܥ=#%DKxx(hIxeg?J `ۛoyNVK6ݱ91X5%_q(m:^{/w K.ݘ=U*R;ݡBF+pOtv t"p,B7b1wg}ƺ3=te?t 5~ͤ/ H*ykg._θL1a~PZ&؞Z_YvzUGZIE;7?n;>>H$bkYt,64w/pݬ]ݵnPJx.b.r8uQQuXcohc'bG"h'{>oA{7a{ў ͷw??LR*I~9(w*F+qZvC͏bVѫ훷ۋV-z7"AA6 lS}7af w/kitph!]gZU9\ܹl &T5ZmM |LڀOnƻ[po/uO=889g[K?^K'cý*.3^r566AuЕk}nB}&;W 1[)腻7p' ~I2J |RWꁦ%NH~ĢKZ j][O:wܥ+&MYnsS]˄-S\>48Ԫ숂Ά֖I]xO|lǤO=A@2P\fq]Ltb\X~3խߚW|&ό,{V+h@y8͵-~Eu3d7(vcːn{iϞ= 5{4pI7'S=3b`;ζ G$b"6$`}[Kx:_Eeݙrg0ijfttpC9>QtG'f1S幏1ړ/RUezΤލMMDz'U,Vm|ѤXpgf=O5)"nrܛK0{[9-k5ꅻpĮh?zA s$w1~l?Bxm@!A],^"-a=wwu;˝Rwuc>Ѣ2Xij5G24:"/jޔΆ8v,6j˹ϜQ3MSc@U0%7?fP6fĀg\pgaik ,7A*MR)3|d/ށ{Tx w/za[zђ[e,,ی41FMCL3ܷM. Y|_LN3sׂ+SS!j`γKS<\]o3ɔr8 m;SaSz|D83Lݭebs>zS fP:"Wˢb{ d&?Ӷ_B$0 w/{/w.N/ w2Rs9l\ʖpњnGLV{īacz ;]܃;ˆz#1;|I^SbO%':|*r2QĻIڒw B0^z,m}'.*J4c>Y "B Y<;b=eH w/wxMh9xm,-E%.@̅ ⑱L {q [ÝY7:r;@9IUa֌FTx-6Zu$c_|cǚj6˽z&TSA>w˸1ϢkwbScA܈΀5"a`_N#~QunOS6juu w ?v}n㫕Ҟi'xy7nq,nַJʮUJ$xDqGZRjaу3{=>ZIq׆psrޜJf|B꬯nPZn p&ܟ#~ҏX-G;؟Nv v & =wIbm`e?cQY.8o{b' /jbZF[>_X_^__mIU'CSRpo;~:KOxʳU"ڔHOcq⫸it wgp#ݏ8{{ ܭ>؀'cwP|w{u{`\?iq!Anr)S%!wNH: ekJ PE})}'\T_p'[w г;e0;л`|m:Ow1IISOwYJJRGu<#7|Fxt,/>z^:v#)e#W\U:Wq,Z?# 8l}Vw5/Y^ՖRܟyb?CG=BT;v3si-wMyX69C i;kkvZ1GT+vőod٢B0l' Z[HohYE Euo~~2nlj^.)ɍ.=Q Qq!O\pgfVEjmmLZVvuTέ:{w-i]qR}mH/ܽp(k[ 2Ӭ=pvYnQY\Hp wDBD 27KW9PFLc$7Ipe.,,}{RoN|q? Ƴ^pgV "LxO>(חK{FO+C:^g7ȭ/H$< ̧^8U4v TT(׈EVVxw'pYd꼸[^{&=#wBKR~kM|D{**Uw5܃k,TX6mvnv}8l ?IC%;Zk6gl &No}`s=ݳ)I'$Ppoij;/oWVtzr!싑eթi,c i\ 8@ LOᾇ ەܥ~2d~XQ1;4H4{/ߏwv-JLBiwժ|uͷo߆jLTޡZE;R}Sfaqm+)8RLfHXX*paWft7Dt't=|}y:{%BVRYxV]p CMfuGb=ug:3{VR+ݭ/ܽpw?;lrZ" H,YZ=⏅6 w;{0ջo?~vsZK-kt/udo4z weܙXl٩`܃o|{H1M]M?7{^*OQFPpכ~>G pC߲seJ,lݧM9萤'J4ZdÀ1Sݭow?gtW>:? %etMoڋг31#BP߇` 䓮~VԋdKovb LBvL%rj7W |rH'); f;6d,»M5 ;;11wvdqDNLL>edboeהA"HLs;h0uSEE{n -) 2chLҶxC>q_rQ$>6|D&ZMy&gԗz7J1y$(,]sQnFpBNHms׮ղ6$ͭ `xt<ǟ# Nn&~2lVh+!M`u> XRh`0NwvSzp𻄦~N,vMqEXM:n jqE{ % } !}3ͤ7jE"a0{r߆Nu Y$n߾sNLNxsVBT0Vð >4hbqWUĦWĥ94Y%L ;;f;44Ғ.9bUzٳg*ya'EՔʫzב{<O%LYmvsaapӨ.)مviDo ZwӲak wFt+I?lS> : 3m ۠S'/ =`L\HGNRh^Im\p op&.A" `/UNFCC3SI2{ @uLwKvǞgVO0tAw;5UW Rb:ťܹy3eggN\sB]TpQb"?T!*s &Cu3O9[<jjL3K#3~ŒI\KV$=q;{V.Osdezܒ0aBURy}\seeO8[{\xxVpi1F'UM%;/ IDATMTJXeRb٪p<jRjn}64-CNѽ ?&͜rS'|&;i6Ţ t Y2xAGwBf9H3[r\; r><:; Ϥ[_Wp7U `F_^]UEv|zw" P*BBN8Qz9$q;;nǪ]ͥ JdlCY2EֱMEpeޠ4[Z̳"Knc\2%)ٰeeU')\QH;^V^|Iˍڳ๟;wý;L# #:H,J\ijxU)p,sRl[7Vgg&elݘC=fѣB /2kbڸ}'G\wBC!<^MmӣB:hFjF}NvL GX]}o=ў?A[Ã;UO!VpvlL,̲6uv2^Xhoƚ}U^ʊl"i5$u2oCbp:&<NA=QxgU)ܙZ-tOœѽp#/*O(!&^|Vzyk:vm> IKH覈]P&IR4Z.iNJ(K@#rqNaB"iͧttr([Zz% o 0 q rrgOgfRe!+01<8G%dd~5u盦ųgLb6peh;c׶!M'>游8 pe 6p55!OSGvLm,CcTKN&Vr%M*8\%68}NὈf_-X#-o^,,zKoFavzIb-{{+~6^^o{eZ,܉r[n0Y1i)ҢoF]d1Z 󪦪 ܭ3"@H+gɓ?03)\Fan\HksrƮ<2ؘ#ʗ-n}&8t-<Jtۗ1җ=eq1< OAG͚y8ʭ/&fQᚊF6[ E䗙 >`ծ,w`Dz a [2Z9A%f7c1%нJb7Wԫ,hO1\619e?}y>Kˡs(z;pn;6pkf?|Վvg<):O{qٰ'N䰕-C]^ޚ/<+rXt<ʲZ g)rOl/ڮST(*8VUVvҬ>.#27 ?1ýi[o Y~y~ek{Y8 !y3u nn}-k 'MdPbX@n[ˉe_m7]Fa\z_g(Dq5~jG5x*4չ47AU R51LEbeۅE9Qi')}gaz* ?@^{i)F7c(zeJ ܦT J 0{!6p ROk㱀n`aaa}o]>\Y`OnŻ5M星>o.RF$u`r*E;1{?vhNާ1ź=p1C+CYH82yg/3&oH3Q(5wÝbV{*uPmR=!B3цB[~)i{o wH,ٽfb;e`&8HxXoGDDM)!`D("6F;m`텬8)5Sgo}pnoG ܷIvuW(;,7/?J(>vý"j/u®WIB5$eΙᾃo`z:<&:&.yioiiDHGg Y|uHns_Jnn`y*1c/?-ǔ+$O[3}z 26TRtVcwĖn]-LwfӝF$ Ý8Fg`:0gHD #[k9|L2= 7LSϖWKBY$ݔk(4 F ʜLIX6%1[S-R;_&V(L9:9)sh>@]7Bi2v}ݴe9n ɯ"`'ďIMTYzq\0+K!v󝝝Ȕ ``BcP WfeR4u/!:dSFac'nJ <QT_2c|V̮p"SYX(N{Vgk%Vʓ)~#飳ױj/++c@UG,Vp od1Yq;CJKߟ$6j!x .0)~̮ԏQtgT[r!{}_*D+sߙ1gccĝ>쳆84 5Be̠N,>~/[Wj|>5/}Kj?Ѥ!ĸXc^PFb Cuz"-ݙ$98@YF10 %9˛$d!K Ą5fɎ2*CDa?Ҁp `lc|Y5 BFc BGd|<}kk|k̠[4BNUäg6K|9}}:3`*#0';/&-~(jrGDYM&F/fg,L)r ė+ʵZFܯ~T?]].+b+QW3W/~'~DZYH tB p|g(B>CKG7Vm#tZ$̥ b{oߗ$>qK)lȓ@jE~pAz#[".ʂi|*TCvGEJJEEAEE|dȪ Reh x0 PbT6*+ޅ:*Q.+w'V_sl[V_Y}.qw>7܅WwF/&]-zF*CBdȤ .ý ?a @~=ftGGtRRRLv'辴H:ⲿ5܉ Kj$$QG,&RN΢ڨ-ܭfL-)_ڶAf¿72'W~.0Goti S j IXGԮ tZYKck1$ztK"tjRH ϯl,GS 0aΝ_ T6vRYjĈML` ,aNW,cb  tkeCѝXG.F % aaotN3jw--lg͐!?j/6&V)jbN7tRW_"N1S Q,͈1^CQĨoWT-.u#ӍJu3IX.ۓ74k@ԧ藳P(֚)LNM.,E_,̢ejxqE:eఀ~{R4cbhX R'7FB!tHݥSͯVn}6HhnKSQKI͈?/0wrd^_,mίi (RhśEfx3N$m #DwEZ;@c5`NC$Ѩɞݘ,o3-Q kͤ ʚP4It#9ѭa֚QZ ͭ U4rnA٘_1G:p?"6Z@[=h[!,iXOzOΫf*thG2}/1#="DDD܁11Xu'4&0-J>( ﱐ[cM`׭בbc IHtҐmN eSλv֫ ։鑼b9j/IgadtGN+ ;q tL蛧qKo  &4.A;X7ᾳs2ntDQǮ}ݶ16$Q2-SSwjf>0YX 55s[) C!E8rK[kF:9( ';Hi!iV7C:@eUZ!DB3њe XH0s% w~ Ũ y%]yudY= ncsccSFUĪ[_jû[W5Ybʤ~L;6[ۀu %f5gmT*051ѧf32'g ޯ)\ښKq(B~ ^,CzqU:oPupŨvkkv3kTK,"^%B=&C ~ -L`G+ Ӗu%tsbę(2j>j֡j@~ZqxkC;E]&m Bjѹ7Zz"jc<_eE<f\8tG >᭕rw<ꉀ'E&-;DMZ2ZcOّlP1qqq xeuSPE{vv6pğrZ&AU*hoB\5ݲx jQա DemF%]F٤Q/72\ɢ_t g*0')h1dBcӊ ti}}QrBEC2i8w?f4Uz~kٛng0uҍ1, \Reg)4xYYt5lg}OL!ԧ0'ztQd %]WIb^]6\~P98#zB?"(*6 ߒ* 1Dz_AѸȈ$Eh$ȗ\>Be!@A7`#9FΒN  oZ j) Q&l;񱣙i/Q7"$0^{=s+%n9n 1* @:6rBa>X7~ %$ $?ӮG#}|O>CHE@CP6o\.;7vp!= l{AE &;v-yl`=+nv SYVb,ahƒn&ӢNx&5xRl?qL#RӬ~ewZbHzr;q I?Ew;Yp0,655UrnOUE5;!r݉/NVŋ;Di ,Y,f)'*m;{=-܉P0=VSQO-ds4j su%rt|n3ýPLi5\P=HF15.A0H  ([~Ɯ!wL,-0 [$ӤQՐLNVL0*do,q"7P 1M>]TKM oaý0k@U t4DrkcnmqM01n׍S" v2n0}K) -Ir*=>4xmn9ހ}y^nFb4 3Q`xV3Xb !Μ IPVT 슎R@4VQj+F2ǖ֖ty]IC3u=0[RmbK%ѕY㰾 S k5<&,&$sN|0gΠ7S g5˰j<{1&g'^ #UgO-]n^eVo۞;{ &Ub+b9P,i)/#qCSߍM}{nl>ȉ /ŗc.;I3% 7_~w+ ResR$ 5חqw_;ώ6PjϨQ$Hb0ZXTaGu}IT>D4 g^0!W^l{zhg:-K7&Wv+tyd`bU[ O3h,) F2߸)BLS,)y \e*#>E^ebX`eZ982=> +RE<Dzzee>;p +9by+SzP( wRSU9C?"F >0~T tR4S wyK5|5huPr&41hH (|P܊~Iu_x4>@r,;*Œ^j(J** vG/эÆ6$q5.CboΡJ7/Y'R8#Dez#:Fݑ-`RK|-ɥ'c̆n3v2qjvcSL>dg S^(bLH/_-< MeNTIIR/|{,uDZ-]dU5+ߞ(9?ܵa5oz$7M)q0ܳضL!U7SpӣʻwjO^!eJ:`xkxLL(OD(qJ7s|p6V1n0sQÝ,<&I/'I$ƣG96gaܜd!⹣h*_EG/{W*6H Z 7, SсB4щk[M|TŨ6#kXn ֧/4]XՆP̆";T-d4C3bT:#t43brrs#9Hۥf*TTU3ھ3`4j百k0@>E5 > lm IDATMC`W#J,0iC Tzr ]3cƲhrqg>3*V沰rWqi&[$ n]?ϰ,(jH~Eш LhwQ9CXOPZ`'? 1\%oŒ;XCGa.)[Ff{Ow L\7Cyf&!#C - WCB©)Y^}aa8+7ϧځvQbn~w>{k, wn]> Mn4R?:a&eUU}f:xJoUi .}4Iֺ- R:~JcvƲ%l uXc)!Iҍv"T=^U ^ ׯbqARFW_׭/D˔6DTY͜bƴ 2'&VčV?}+\?R fqtoNRf E NC۸nJ,@e S!wr1%usC[߿ϠɫmuV|WwˣHOUU ~+Z O0U=Vʍ&YnKgѽg^O>E>l4i"犢ְrgu'x#Uo62OӴՙj|I"WPG~GOHbF.7,HrL% xI1d{uE؈+{Jt>O iƐܕ "{|hTmhO)#I9+wUd2vd2D>՟8~7!ǐi򴂽믻FCynvz;Y#jnr ܣw '|1gCѢ"c%^`$E 3!PT ս' kgkrdcyAᴶ?O|Zų7W>6pUA{Mv5/S <*-={mr#xLÓF{ -?ӑa\y^B\~N ?pfݶG&P}|r_EǷp_y|b6N0pS#GjK\!9qth˩d@s"t~@'?(">su]Bm~[8C5tN_:eCWGtjmT\'G&dp#3a8y}}|rӀr{t76LM517msQTNon˦G:~E(oyEu6CyMfSSQƩ U##?w!,i8+[^4ro&~jnwg5;j//}k,/ߑpߖĎpf&ݮR誖\"C鎻Q7]zH?e}1O%N'QᙪnZ@"* 'n2!.TPV7m*J@Y23I\!Hjf$KHR 52ޜpR"sh,>rXNo=3qԱN kS]VY4wkjTia!tv%Tl,6EL12ɰtlw=UU2ӽݭc){8K;D2K:Tt!}/ fb@ʗ:4*l;pީFUF|SQ(\x?rCc f`o H*'=M a;l= {Sh4?7a*O3Ҧo*qQr wG 3ءOYͳBzwغj+&t|4棾>B2Qx 2WV Xls^)ۨ!h4*27 VJp+jA2ܙ@ۈDHwfwEf$)ړI;"ܳὶz%\lDv'X?>9ɕlwjapNNe CfJy P}/*]1<:wFUM"g+/#Q=Uvx?n h*e#|G8I tLKɗwV@CfF|^[4N}Lp5=Ήrs |JƎűWN ĀX>xZgmv][(y^/kNp ' >CW@ydV`-(;,s>Wd6˧Y2^$Ÿ oD@iJTv htwaM^ey#F*>h>KNN5&yWRay(46߁]ҙ xIİ_gk Ɵ=x'Νs X\'WxU)NjC^ao$X{9mbr3e<J"Qj'h!^gɎ洵JB(dvD{RmefepIad1%A;J{R\"rr+K_l-^t_~ǧptb{Vh!讴yTJnf̖]hA!_C[E͊c>K}Gu p&'a& iO Pc@ecdze-b'bPyNNLTS 9"w}F@C[ulekhYR~64qDo_ZTۥb5=rvie|v|m:5s'hQ AvG)m =%PR+g5\CgV7= fS$ 0Zo,wrF~JCi.xsa^6a@)˩'^(,9E54Rx\Xxm@ckj5;ovՁ;$`M|G㫫2?/XUQ7MLRC)lH̗:;=Hv#h P4k*eɊE;}A4`-Kth,%`aӢ=4KI^(u<r~+==X/h'LSR'`')nRtvr3J^DWۂ[u9,Hp-@&pW}ݡJK(dtmTɆ8wu}NTf{>$A@7z4}e*1Zaϻ=K0dЫ Ar4kT: =nr7Ĺ/'Np;8V33)^RTió OO#ig}&DfȘu| wiGop#H&=q"- < ˛Iu s0հzG;kic'x= tq-Okc kʟ=+/'@ o~^ v%Y?\H\ 2z^T5kz*_0&9vB.U4A6`\D&:-PaZ+v*Իn;>Vc1 7z?\? tpET.L,FΖ{ԭ%.A.RSsڙ W'*ފ JG'k+ n9+ {Lii"n2"5(=ݛEe= '˗;jLUՁˬ9஌V];-x((Ax`dwr Ǵ zB;L Ўс"BKَdH421-j<&GZW1WoXM~Vg%/&I$|vIB(?ы Kϣs5kdBk~Vd57g5hT;ĝcR+ǥ βL&;ܵhqT2R};tg应$uuhS4 Ѩ9Gx.Wj aNu!.fajY"N 46C$$@166./^ܘ IJ1b1ܣDa[½3Ԍ nk۫p2pN ^MC᎝C2{+A&f#x"(€^e#{{OOT0\H=dr,p/ 2++qE@E1]dM@`|#6rrp#IhD=>%i^5P2YkPD/w@ȳk4wZJ#9`j0" RJ_vHEp?{M.4l)B#)Dx(;!y:i4r\sMMM=/g0g-}_|AOOrpAxLm= rqxNcN)//oYǤ/}!tAB+6k_.J/+vMK|'@'E!t+Um2**{mL=^˒Eu1C a!蓉q"ݠ\"$p':,y vۓch`{O¦_ʅl wMJY)-#Аy[n d:1D+9n?ʝ- pGfoS4HgQTcp/bW*w\"~iYF'` d(w2) ]]I hR$x|E~DP '8w|BaJBMhDG1KҔk=Gp UF?C^SdFyϳ*>xrq5b^2eP5+_L9"h:ܡIU'frg\j;w?@9sK Ȼ}Nr|q \vNt1V5[t<ןc3a@4X2 S3 ʔUT !`pT} j\@ADgnAiGC*L-Gr(<13{;y"&\ 0V'c?AAep& QG'r]pWK}ݗ/;ug ߩ{ϓ#!V@` wmC:)C`} Q( 2g ˪@u_4WJK&(ELef/"罜c,4ܻ |'N4%kxSǃ}/Hw7$lTϤGPi"Cli~H-a=qL} 'Y(4apD)*ŧ">Q E]:ܹtA/y5M*!/%^fKMx .` ګ!/<q2m^<;x?S;~! ;? #TYٳ9Ep!:ڴ|waޛG-R_}b$ЩYBrn1Lpob$*6=:t(txI^ [ɁsS"U{; ̳B>pX QC{F\]am0 `7!4X0hѭ- >rwhL: VE Ǎ }ȳ2̘g,?iSԿ#x{)[  {0зhJ;A9U՞vł;ˀ{@ {$'J 3 EX36=AVCsp-(CM C G6ÓaGm|XsbZ8qBݹ[vRvv2[2YjsIhCU{CY!:0 ?\DoӐjK:Ayg]lugru du԰:UIsl  ' &x<).YI ֨7U@v5|IąvE;/W.f^P-)qAo} Ay"?|4T_ae~jxYxU,I2jJ; FQޞJ?QTQe Fpg;}_i 8C?J\rIJߤ;](# ($m!n {Dti wQnak_^ ̈́{V-=E^ņ%p=*9*= UNd{5݉j"lwT*=Q[ *miInT,,0[_{UFa{n0Di#0a!C#zW2Xf?Z .-s $)sw`ZklVR7DŽvꄿF_wt)}Swd3F*e=JEXZ̮w? |b`krޏHlEfsQ)u1Yy &DŽSܕc+ hзӀX>q6S.-oLiK(gIQl'e{Sl2[-ookC wQ)4 lb6\kf&k5cl:d޼?شI[y] IDATU=d2!d%vʯLBR< >yNET\GnCvnu!5'OTyL}- }v?8{T_Z7]4-VQ*9qa5b{)@OnA`:hNp f>,C^n쭭q'(S䯴xOɑ3 7JӇ]*l6L%}J.=>y9)WXyMnGx.o#UbbYUӊEJ)uKGb}ofժg~ wҁyŇ#Ic괢oҔi2rU*6Jm6A{7h#5yQ ^!b;ʊv!|oɏha GT*r:v KA] Dv!/'Ks2 ʸfJ$X8{lvnL8b! ;[ٞ[zlZ4@)XRTnvE:lɨݏ^B msXd`'WbZ ;}mB@9:GFDTfgAv|#lD`v)8o>Nɕn STgQ~o},<@n~vG] ^ O!X"W#>m#L%+=)Fw=]b{wsV[rj˖^p}mWr8tIԞ#nbz]Sr[QS?^/ܵ[oazwN{XR{BV+1mzy#INfVյ VZљE؝ aE}t,fDn2!;laUpxw4#PE`*`L =1p3Ws=LkݍzN5:,;5V!,.p7bAT)=AJj7]߷s=(Gv%+ý4-9.u՟*WL߭Zq.I߮վ ?]'%pM폯jO;1^~3VG3J.+Y,ËuuG? { >.)9w GTd"Z "hg@>B *3 < Ar`yj(r\sj۴ n`qQ*B>%ө} <`V3*w2 W^Rig[ MyQՉ4[72QBw4l/+K;; f6$Ř,dpnW^:y7/e YM;]$9Uo TS;ymsCq$yT\M={riv0@*mI [\)N<jYm9hI9-k9QXP\q4s-Em\Cc(okt^(6 9mE)hXax+p/.n.EWޢ\? ܷzQUTR<?~g*r n}Y-ǔb-:@@->z+jZ{kc[L(8e\\Pj:;TYvFq=z ":H`'e@Rm29'KV{XGE2# )IXLPz*I퓄AWCl@[ \^zLfƝ+w/M|9Jn \P(*wvG F C{ц"Zڋ=;)Xh8CewnٞqSZUNKA{Rϰ_?0KƶߝW@+[uܻ?;{1?~o7}|K+N$/>p~|'F}9ǩo8@ѝ?w$I{٧/}~o~wg%O^>kYkp? M_5E=uD}Ώ}NM;?=~q'~w{spgn ]47=p}z-k& 9^ ڌ^L[U{C{zfH  \2==zAEnp%8_{6RUZ,t6)/[6aHpEoN&2rTBcLk6zR". 6/^tl",:pm-QOUb)[C]uaafd 5Aߙ0=jHفD>..3UeYK;~wы%͒hoyJ m]Fk++TO^k3s/_BwܾK+w]yz/N_@W_kRM?]zW݁3W7~ףUjW֞ί?t >\CsWO3}s{|veYswVNk9וٹϘV3zwe|n}绷6wzn_^[[Y:5z>wwyu{O?]:R=vzjюN8m^7_'PKp+@6F=`Zda{N򝺂;GG뇆*zzi+(VLzXR}Dkv$7!z}, )t Be7iB&kdrwBT.inw1HP~Ҫ]wJwou}r^N-%o25v'&q+RF==zheez 3v\)e;0DM;ewvm5W5\e,]SwZ |5]OC&}Wcs΀k=ˣvx+tn_[;_O<}ɀֱ6w7#+ݳ9ꡀ_fVC㟺mWWZQyjW{z+>o/؏?r/+??h'V> W X~{pףY/f;8*1X.vGŒ=D1&䢄i{p` Uel}i\,vfTP". Z`)2 NgLZ V#Mv.:h`` 2ؾ1S!0 tCM}1YGp$EW:)et} =q㡊֗:ɏޟ\ǵNW;|i{E1рekz#%kP;b}s56W>z`^ <\qHmt3q g,vE9/ḩK]+Gȍ-`s~_un9Ztjgos\n콺F~p3s8aYr2\Ү,)ܙྸXLw+qި Ϣo%!L@{ML\?f}X t'`"!crw;ۇQw`҆&%%;u6gj}wR65Aͧsnܛ][rNޟ~z}5wݍիZtƽpS S{"VVOܻywmVձ~3MMMq֥Yٕnh쒣ӍO[ g||bݥWWvsv吶`n:q7;뫇r/h*>Mqq־i4sKd>qurW i.Y qܑ`tw o<_3.Y@2h灂49Xk~yHr,a uRV*3KTluCCCRCj|\54F=X2aĶxي&m/ .vǗalD@e vphOSMdt% N62hBpVc~~zb-eUtLESfdH"uHzٓNx wCSXaw|}KlYcS!2dj y6f9ًn];\|mށo\#8TKGWo#}?~֭&xP3ŵϺr[V5[WZ.;~+lhhArRZ[yڗ:R"%lˮkWx'{Ϯ _'UM6p ׻*ל\œgiL߅|<O1rkuwcJǫ}זzo.YM@NO*Nx?nC׷ci +}E½tIUSc.IR&M}+Р %~BzlV)!#U^^[I;ص~%Rr:iO^1`YL%?2U=NJ.Z# \ө !As{ ulsJ Ql /S]G=q:\8Z$v%ܫ쌍%w.1/{UH`QZ}F]J2o25<5Z;?J8zWm,INsfXWfPEު-(vi I>BNS;.L{Hw; NH0OUm3BSܮVʏ?GV&kgrr?O9{OUw?=Ԉy[WX_v~z]Y:qwN#ŵKKB۫}4:jӼHod7+؞ۼ=BHZ 3^-, ދtSJwfݴ]l͈Ts*${I3`Rܭb%55sW::QRo0j+ 6mR#/݉<1) ?jL@9Gzi=ֽ\Qu8r|bɢ͈Ւg41y}[ h\Ml͐Q/18:ez5$dNdpvXq K͑e8ci7Sw'ݜW+SPιϊ^vd^(\"{ola;;qk82]f;[&:Qo߭޽V!/wdy_qWI>#+k>}zި i}k%-wsS;s:IM3R5s?򼵰p2ykaqdɾ wZ'mLlw8LN1# ZSkV, #a+(:찇E$\ P|(9p?WM7%ӕ幇4g6)W2|qq1i7ϕZ]#{\pgybߟm4owd?n#;?5@l*o.?=|'~iK ;b ѸlhVAFQ-'O5ѡ:TnJ%p3*DqN'LIUpl7B,Ʊh7ւYѹp~4 Jl&H}:yC^젉=>_bPԆaA  *zt~lq|bP,*rĈo#e\'Mb&-uJ/<$?_ܡ0cD[$w!}uQbLvX;_;p;vxwn;]Mn1qcx#\ɾOKt:web< oo⻎WixMj^K7 o"##_muݱ>puo}]wmCqgvGHg򸮑+ж u/fљgf(~T;OwvµǏg{N~rD2t===32q7m6.͠""=}-^%Z9K# etKS M"4 Zlim5U*~D^ܿ%}‹ew++ܥaPeJ%cp~2p?kILCe nX'ֆEkm1(i';!=F/h|smvvpjB#Dx4d-J}ZI5?@y.۵c;Ͽ=+ܡ]-k1pS'ܓ܊or'Z!iaaRC^cX !U(ݚ[+kP2s!tAE滢Z"TpBʫUXKp'Kwc6v~4y>680phd=?/*f9'Eڗ\r@#! IDAT{#̥}c#4Z%ws*[e5=ʅސm)"92"2 p@n蚈8du";(R]#y=`I{hBaJ< 2n^#z0҃pR#|G`Gvsũ]G1CzGKŜ@ivK t\P!fTPd>!GLAî[17 v+ ;Y H/(ܱ$M'q%WTczK:M;jOX=sR=_'$h;=OZcZFfi%ɻd w!:; `;b }2q!}fgp_YWݵ 884{hA%خkn#2NLJJ;G2ۋ "zs FF*gTf;dgm!۽N]}`IKI%e W\Kn!E0\OE`!:$#Foa[BvXƽ`tdvϸ+w8L$.|(Y!S~UUݴrGC N7Iº^Q"{RdpW] 1$e303Q)W~(ȷ=Ŝed0a6L5t~DHM+4o&gcW.vFYH]gE90s)(PN(Oޠ϶eٵ9F/2ÝVv#vt_*0Ih; j,AXԏ:PH0VLŦ@Q^/=bB$Q?%VpU n턺1Chg;hb9D?=;-3$Ǘ/_ dJrԾ>fYQZ==ܿgOO?cF9-8ܵ wjبC9|c o!Ir‡\˷``pש3eM)Zڞweӕejςg9tP2 `!T\1) ֢~{ǔq~ <<9|aSDوӴW8C%77gejܝǒ p-/Wl*{ WgOԟzѨ9c&U{<$%Y7SpA,sG=ܡf'd`NSc0:OH#J! nv4Ϭ* Sv?tap>݆,E<H>D+;emjFrB&+M r˗oVWG^pT`f2Īvq;pWKpiݩ7 Tm ̑wz.un(piе(3!6N&ohɉ&rxd:O@OtxQ_FlJgIrܪJ2AQy|Vk #ײhpGŢ"_~ cp+u؃Wf=v; qj+wKE{WݻA p  ;l ԭlp6NXnPPd:LA `"C$Pq`;${ӈ ;RWܵj4vt|h'ߘ<` I&H@n!qXp_]:w_p?|x7p3UUƞM?tf5F wBd;pK`hg& bޒv\W=*aJ= Nh+&~KR&E#+bIR@LBR>CUpI8#3=)b*'{EE\4s5|zxiMA~p3r[>-QQFSxz]*T=ʀ }i6J={jb:jH TI5zvz;YȾNѕ ?+!? $]Z6J>$]*w)zU%4%`WE~F}rܴcu6GYQ=;q1\ph' Yp]%[ɴeStW2{vyhn b~Kga{\'b̓Hs@jN)IULvBȟ8Iߖܪ#SӂF*(8|FÉU<Mʍ_o8 ciRFq7YeFImLXQ[BLiF z8z}2aoyjc@i9^ٹm`zeZ3ӣ@ҥ6GMʮJpP{wI/cv0wL a1D_zY0ƀQ^Q6C_hg_4.‰s=eYᾍݗv*c M`| T3lp4㧐2/iSe;{~jRfюb;yMRY 2K^I7 2bYܔ)M1XNoB]GmM!R\. ȓ'X !+lYGbLs!vqvOE0|I@lbJ麑 ;x-S웸eˏg!Y>RzMdXAowb+7ᛳ&O]:r(br`1U uLڽqS\k@Ϧ5̋P]ӏ-T=E;{b@2 ͤ;FR-p/=/[]k]{(3B&D.-* Q8?Cf7'Cn/.KpP\;p6Wr ,(PP۷wC+G*G 2NjQ<ޘ'y=2#1/ c5| EdǾ7O\?5dp?DSXܛm{ʀBGa11vӃe`SbpX6&Bo@Mp\`pHIPDWU~uv/<ƨG>k[ܰtYd2ld(&`.6g4>7SNMO6ANp$,p2-po{qJ(oKd{Ϣ,ݐwu 9}^WE#:1T=6OML#I=$8&Fe S{Befzq烶@KݾH`%{8 t7@67o!ڕÄ-C?俘c>ӻgN=s;0a{ln4xМl4d?Po{p[2|Ǎ˄dykPqOzv@^B_q[MQip!(QeT ]42/2A^r =fu)].TB0>3Z6y/) womX zvT@ChYlvrH2aLVM JMwHP4VĝH yUAG'$f ٴl6p=k+y[[#GLcɄ}wct[.n-.S#o,NJp^9) E &8Ip[a$ q ]{-ߎܷ4NQ\K$W;) :L?Pm6YS oct)NG=tԍ€cha 1+*+&\H:fa<|r=6+ Ǫi{VoHŀI[ Ñ 8? I^bcH^e` ~Eї>B?5 7tZ=SM dWTž]ҥKG7WOKLODvjgu#g9.A2 ڹ(0pgF-P!g0J.hHQI‚u6/0H@=֦PFcj3'P%[Qվ ʾﶣd~TL+ >L-~n"檮vPWWX xb_Or'c #!/;%ipgGfzr(jW_`ћ! - ˣ-zj,x6?n.x,+NMسpkp)8G2Wo.ޝ|7m w{g4Kg]&9A-} ~|J3Z6x7+Jp *k^am "r64tt:G֘5qyyO@1FM^aĒ%ޙ~^뤂 [c  AfK_C\A]0ab{-A;y#Eo f?]WvW;?2$$#ߟrw7j> ֿwᝯ;C/|&W pW ꝶB&@-ߎ*_Sw /j}˾pWEZZݓ^C} ؔHE{>D"Eo T>:nʺA]D;XRlLKgp\1@ VZm>>)(hv[Az/;C+nFv\/쩪u\.`wO4*nkb]6 ܁O5泟w?;G!m[^y`3&862_ _*(x@12V=3 ׂ#AiRa FT61XwZO6[=67-N½}*EBᅅ#~o"J"ܛN6A<454`ƶ$:gd}4u#}1J(3.TxO]Me1`yltZp[I{OZ#(h*uBZR,LbGjC/FY> S4O pW `ÛV>g~siHGuƵbJ&~`'Wsc4*$gΌ9.nH{S $ҝL,_$DGi\ x "5̋-rd;q~ p CnsTF}Tc\ncmNKtNPgFݑvu/l?yQlwЪ=IpRY'Lg^:K>Xtn@0MN+]l5Y{:ShPbǡޑcC1O{]:%jq\JZ׹MXh :NKnjapkJG}W ZqX$@IpT-h:-}3\ς\pϣY] h1h@ͅ+Q,ܝAZH{v:MRÍ%a#{h{}zXD[={tta_pd;kxgE;Xď2,ԐAUWY[l41Ɣ%_$n\EeJ rdB8E1ھ3RL& KuOywc˯lp6ah:;VikH61(]dtI,MwlA|bUTҒ^+_.ht|/nn>oߓ ~Mpo~p/K Iʌ B@.ЈjOj-ۨrwQ4K9~R;WI.XGIFTAo"{W9t"q:+M\!y,[wLm-Ywߜ>T?:x so69Q6<L% θ-xOܕۀ;QyuCП$+\Gk}LɼLWp/{/Fk[ݎǭS1;2^edp/pNt)4T!B[ -L-`%j:q IDATQoSFG SOhb~d;e"UΆE;}Lf:vbT mƒt^4QAtB rz W }pE@5x( v+B+rPZH\&HnЄOWԆ}#ݻtKP'jc̒^/9HXUA ch(XI @#m9Q^U"X'EIneRw75H'`>摩‘`ӨdG{U=Ѥj"A Q(FTLn" vdhJ[#){}};w1XiyQIs_2  wf7jOJ- o iBSiieIJݨ8QoS f,hZZ"v9T@TaLqmQ oS?ìp\Lp >|{ֆ*ߖJ]ԮCڵ)MALg~vgg4JUp`{9iKݘ \pװN]2;m} [wܼvz낸a/pJ%a.01(]HOTX6*Q.)SawmJKpDZ4=VDeej L.!G%͝e#1:J_^hO4V C]FӎZ)Ms=@y38-SA&rRQGNXZȓPnd-}a=p_=w)_ sf;9ou'?TnT/zeϙ_PnRZh L=wMU5RTw8m60I ͨ4 ZM# ˉiy}p";;jvh,H ڦ|HUťJd8C;7; ܫ12,]\8m E0b }cډr.3#nSAXu1<K`_{{{{|51=۟1 ;,o CA7|<ǹ8ྰ^ pÔ |@PȇbR!Few"zW=Du'~n¸oPӏp҃ji6$LZ 1#F{k/JˤtWrJqpOyfa!oL*O$ J˗DLZYJAEu^V\:ZmeS* L,''SpG~p^߹ oF#-oA.6$ϰ/>{_Ͻ'V;N?vCDN;w6 w6J'')ܥRkT 'vYiʁw?=xԨԻTUDz,l+JeRpѯ5Yp ]UBIv+h[_Tm'pc*F2|IN,LR+abbQG[0p\Hw;7nc{jJLjzr+koǠ 4zKSP'h닋bd_96AWpD뇪G50ɺV&^VZXc ~Hl=p#ͷ.ɤxe0pL ĢAe!(R /P@dKڀ'Xz 2ńeDG_L|ādU,>7S,>h?$0xOzC;$hzK* YuNrr<&Tlmz-t`,&JD{"!/L] { ,WUU5hg5;$@Ѐ1Fa2ˑd2ӣ+=J]*ջc LJM3@]Št}XKgVns1 EDڛX+K0j53j*B)DӛpV^J@+L"@̹1X` D")[0vmkgWi0м_P_#= e IS{~x̙~p|7!ܯ^ mY%qf'zŕb{n;[C,Aw? wKMI0i#AKGb,iq?Ltdpm''.x`(6;_/=b`#ݎmThۃ~$@ALTi Lc\  V QQX\vE i|mKQE5klJ/ f.p#Ă0Le`pNQv8>UPHh {^XԖ+r /|'r=ˇy`4Td,.=qj_bzIPzv~9K6r[Pyr?N!MmJ8m>6C,ctewqlׁ *6Kwx7!೧VR ECnq nZc3P]T1F?,X"Q=pKCMϨd2)HV,i'❺r]D3>:< J jVT]43.}4t}Z_[w|s}(~ٳ.?L/1n˥k3ޗC+qGW\;O΢:d!H݋%*}Iy]χJyʥHE@3T]Axpg{&gW:C9Uu*(?x$:l㉊ muI(!"^o"R_CN:Ă=M1LP#ss.b@;iLT QiD FSqxaApȀG/}_KX' p/ę we(Omw(# Tq.˽f+7%'f8dDH ]hu\0.0,!#O ~R&X:pM^«}dԳtĈn7lHqw(QMՉ@\,J2Ѩ]#wQWspm";`pWHJgJype}I8.}a}W-wYH&^dN;}‘V{;R̶e(ܹS.5!яcQ{p{@w4tVFwp d B!adPQ_E-΀{N[%`CAuxdA>`~dc375;}9E1)^hRXBZXTrpopS" b rH=^|?V5/ p/Z}d@^s&;j/իWE^~LY ;僗vmT3Jxr29!%RLa_ 5YD 69|̋ |Hgis51Oy=#=0xCATZP><&g=Uû˘1?#86}@,AbA[?Mfx2nԱAШ#ό*A\qP! "k3F锩CR(y%L>]D>T`R҃oD"RЕSj zЎ/ 0\Ĝ2w8?qK2^tdFHX,pe[N;,YvZ s QMMF{<(1wB cDspGe; Lgո:}ߛK8|OȀVԳWՏP6 LYo*:<;TX3򘕄ܾf mx .tcHd #7(7E@ b聏>Y#x &ǼɦFɡbrh[o琢he(ɮsg{-} {{'jH;3ڼLwmZ~ 29Rp'q?Vr_[R -a,ڵ}-l`dggZTt2pϐqYymG, b/H!:wrC.+Q#\th Jo>_,+2E`ԧCq!#}'3qOw8ͬRƉTGO~g߿|z8nOACi4jܠƦbfTrwڊ x p_X:?W;X2*7ߜ[ϕ6g S1yTJ/K%R{ˁpt_r6ھ0jxis;Rm6~;/ctN8knBrB^H#*qmP6ͭs ,EtZ%vd%a~i \I6eRP^WK|xoܒuY  Bd",~ l[3h:=/ F,Z&C~&e2<ŖViƙM\"a.3YK$#pO%a1KpJf ϝ\"0|xz$@>͟<唼|=k_Gt5TX1nLrBtN^Mzh3WJ# 仈/7? EYe]8??966Ƀ;RE ?vžVKrGO OmN5MO!hɻ6k\ n >uGNu[^஛9Ndia4*3LrnS_ >BTk]X4;%3lj׍d0E[hQC0Dכ!gjG=uFY,* =.]@y fELL q,_~:DJzV˘BuKYTx84۱i;BbXn~{S? mg''mO^o zWz4]VC0* ׶~Xr7-;=C]+S/}}L f;ˤyg9&}BJ}{{%V`F o-*z Q]K.#l/a\TH߯sD~hpWΫgW7=Nr%hW#fE4`?Kao~lVɔrð+!,"&6X#߶Um*L?4۶'IӦ.spa29;¬Ý${h4*Q2B & p|3^ۥ޷wcVۥ[ytehʦ>@ybV]U1-N # _ 9gf1yg,}3ZR+ yȎRa}=j>i2Lt?±t[5P^;2W6F'. &A%$Lr:A|7; ̘ٔܫr` !s\BΘ"v7͚ac +,1E2C1J"\"i)ۣ́OXr϶Xw巟{}ko۶adžִ:sz\jMm@k-CE! =^X@;pK^p~֊._ +½=28[PJC;R}7o^;q&pf0ђOzrJ^_Hfm2d;,wnwv6଑~j{4 arT+D.^$Jm6R)w[0D!˝;UU[ WPRbnONO3xgfr$$,T+B̊W 3 IDAT̊M˗5:Z%*&6E3"_Sd\ $(Vhxk\vpddjmj_xl̉?rFfzۚ[7ٲ|嚧~a_5Gh:Q?v_3܉t1S2C©4?O>7f6.OչRcc-s-C~5pe=J3 ?}>W"+ᷳ|ٗBұ ‹9'SU<92w~iȀ4D1,E>nX;Ysڃ*}Hzx,vyBPT%8^{s+l*¾)_\`5eDb VYWTk(d􇘪k!G5d6 cފrpCeCH&`.i#FFWԻng~qP'A%Sm[wo޼Gn~Wjbr;ȀqxBp_?02ÉY}:ǹ9Ry^4_ҼpG哛</_ub8ŤAY+؅b67 NO$Ջ,KESSS!ܿ}س>+B>B/ln[KFu#*7:өc &Q\hNqtBTQO_/[ lk.n.j.,D!_seiLs>O>+~'O>'_$GWހ?S)'s|HEyN.< GkMHRuOA -a=wp?3OvnGȣs&9_W=ⰞY*IZ,i[F_0߀m[^Sл>Ԥ23W3]EndDœ*-?vUHdN@ ՛C*STj;yZz@[ vI\o>u{`T$VyzVv&th؀iP2h獗c v D!'Y{XqRVPb#Z^y_Qۡ!_mt.쥨Bb6SMb!90@n\ |~oAO;}Jl}nJВ\p{-p?wHgݧO wyNrP.m}dFȉ>J[ov6ܕÝ~EHY8섢p4u{tȎ [Ӫo@ϒ8>amD_>78]d5\ʠtܯǟ=޵c8?-\XwsI ypgNbQ/Zw❅dKP@){ȷxQaԸkJ !r@4˿Be) xIz""U1^2ɓ_{?{W|򇟾?죵^!Es Ow,p ޜ;~'RL6܁rO<-=>5 4[. ʞ^SK!Y՝ w^Xl y*ivEv=rįʔ.zE8h~h8a*{{{!$;21,-hIL1MZCAwr}@ L4Lo gC4h+0>(]TcOc>brr   tt`{1d~0dxQ@C߿r?Y #ڄjo C1T¡p؀lvآuRMLrf_%u]lW;xN= wtOC2ϨV&䯙ʝd`3@>DBTӑ*g-{; )8QP 2ډ^5ԛB*+3L[&g+6#S%Z#REQH\'&&0vKf<@=*jkTT옜R:KwzwO$qoCQB?J73C?KokpA4ȟD5 w]V5Ewh\mʋ?|<2R~2򽍷 x'N^J܁# wep?k̀;8Mمw>e- eWNwQ5l\tXhaXt8鐾pjy Y}L|TvqX mAɡ/g2ٜឍwY9pf0רm*↦ H !K,Lx0.U4~}PͫCtOOO\Sc7Uv8. V36];Lx+&7?ףO(8_b 0B0|هͤ{|(H}\b Ħߏҝ/CTӖ; K,ܷgX@uv͇LC;<i Ss&DE.C4PpS?ChT`{6Sdz:aF38%`{Sq٥#T/ ОX *&ׯn]_A3+2 }l2юKo$VܡN!z˵Xi3a$ wx$pVk ش{eV@Hg:xg'>8 T\{W*EKA3'Da!TC0vYm6;_{p_'!|7#xO{pVX́<aC3S=>7Ow;33NQaPVfs,z!J7o䦒|޼ Eq1.O$s+!v@K]|NB> π ?EJO~!XR\."&UF=8:#;3Nm}F ={Փ.xtWlp$r54+ B#pwakB_^Y}6;wSH>fA昈iminj~=Y'{4j<{რ;Kp-2+JH wqvWV4pw6X;u(#R+mLΐwREbv/D9M{v]t,cѻDLD/m 'e~@oOmsӽ^NUv 0n)$̀ O'ŕf]ƨr w`S-K<]0)Cb/$(a"G"яC p/|"-.{?t(}qC*5ɳfZ%_ JmWC$}>bŧ雰t?x7+gyHÇL-+QN.@c)$*ms>sZKwM.:=ӄ:JS/ ؖ)ӴDe h_>JZÇ;zŢuU-q5d0v=g)xqA&.gTon"aN*K` XFˁr;,v^X]JΐL{СD[ NЮ&(~?9a"O8|xAEgXVl츨n(7{t_KK!?x?~MXwߟ쳇sL|6e2sý "Sµv wBr9a^=qCmvKw.G 6T<oc7iC @F^bE0a`J$U2'sӈ1zO\яaL#;?;?~ =ta}YcMuw6ECM$U6v^3V ;^c #vq\n.&]4Ӥ%=0e8c$AЁ ;'Q0]8G%T "ُ(+qTB${ U;sSvSWW/'?y?b]/r=?_Tnf}v·{ 9О&;9+jpprriz m5A#܏-t zF$W0CEiVā>q4b1<;mk͞: Qˠ-RեzPXD8)8&2(fNWRH^1`JbViK$1+C/F))jL.?w~Wu44j=a  ' 4!W~_sΝGK}g[s|b(-3=;OS w@ +qc&Tq @\pڒ*L=g?lŧ+ Ty*%F1DޣrSpiϝ4sýVٓw.<@ũA4MD8Y,ՇJZP8ܫ򅻋sdF =(&כ ^|82ywQ y2:hDbWteNa߲Qd;).'gaZ{ O23 !s2.Ȝ!<U9X!ޝys> B&]KyC"u%[re;5tuutD{z555]]{wpg>%ߡ.㞠¥FFt HtUa&@7{q֬ "ssC⾢L,ZݿzE 21GnC֍;/?re2y4.-. V8UCe띅8lK2w0O˗._3X~=;3dA{/½"~(¢@pԔll ˄JJxfJvu' z52=A(A(QF-wyƞ*!>1ٝNfzDKY_F2KGSSy Qގr: *l];Z=LSޚ;བྷCr ˡy(wIT UN6iJ&,b*$-ppKf7PVj&_x6xO~7Yc$D# \tωuyy,aI؁\-$-tr A;Y"ޏoAL{pN@;>4 A >5&LQreZϥslgi$]I~UwjYr%/mo744k]:vwWG7ُr^Wڌj/ 7żE<)3| K g(Ou`ulWj0: Kls i P9jԱaZЭddM6d6T \$jkr"#B\;**jF>hL[,. ۆ0irм.pbEKKvsٮ{zzN>=æC lbmy#DFL&MN%VmzZH2uOl\_Ƹ,6~f35εTvSO+@@=ha]Ԅ!YeS {r0-!Re?VBvKb:,^*7:\xիW<mOgcx%,p_- ppxV=Dp=Х{;uY}qAOU|{s>p?|ԇ9 ;._{+g.]t:;-oG;X쌋N/-[n1`n5`bCbNmovw^ 'yfTBf&Mgb"XL6aq]]n` w䝗U=؜MkByn"ܹsH@JV@g`X}k7Sא;5倚\Si{ LXp6m{Kd0؉=}{ >5UL^ć?O\5z> p_r؊ ?O}U֍!㹟^d5~}q1SdkOۼ;P hyY 3^sԩʆ;Q@u(sҙ?+/=Y :^maI:瘴-ݛ:Ǩa(f&5NGþ;Y]bpOP&P5* Ϛ hl`vuɹIlVvgv{۰̤CJb&;,)$VQ2rb|f͚ 5Ϩu-7yž2Ư茙pm\Ok̈́;%~zT>α IALq1iǠpop؎f]c;klLceGG;[/'ad5'}Pv;YxiҌ4 d z::Ttި$xlVhlYu}+Wm˷E^[w vVUu,P^(Bzr\+5# Y*j#rSŒY2 @;BY;˄ ؘ AoB3w:2,/.'VPlYA@FKxSS}Ѫm;V8 bq h*X~yKWٿ?&Q-:#a;/k+!ם|s2PBٜ~!!QDuapS-ýCK~g;VnC@ť%M@avo6A¾Y3*#a{XT;u}-/{Jx]f!d,ƭ_^h$|W;mزeÎ_'{+7U&pWf^OԬ՚KVd;oDO__li"v0zh؀w=EwY/ƠG[ >ɓX_}U SɭUE(l9G[~p_z5'_/Z-P⥠(>{S.7 GFqZG,% qϓ5β}r[sÝo=*! Uq\E~)O8cvNmxtgᵃg?{SΞhЗh8l*pWt.K{j!#`u4PE2fB3pL׵k4Znkm# rpkӂ BylG;<uuu0E|Hl„lQ)a;Q5;V.3\?|-e0v_Vo?Mzl {* )x2,۟ܫ;BĦM\t1 OŨcQ&S鐡B](h4M[,֭{eR[lMEB7V]d2wցGq7Nsw"95d!M6F;" ƣp(pBa3;+Cr4܁qؽçC@C̉7Y }HSomֱ6Oi;g3Z[f&LvO}LKWrym¤1m?i5rr3ۻu`UGLJ;Kq)V[(̖+lXnfJ")jz`A'Y_[Zgc_S{iz3%ED8~ CdPl rEw5}  kF O`,a\dYEj-o6&# p{0{ab]̇;svg#zkOʍ{|ٓ{6nٰe@pGؠlܨ qppw;ܧ;f:gio_-p'Ge%ߖH4{ eŢ H}]wLd&Ÿ4'{ᘂc bLdzΘI%iLb;uYWfK|Ft9NFɗm۲|2vfۯnym֮Qwv`*8]t;I҄=9 w wr7uЀ`M }ZkBVɍIubx';jBLS!&n6 wZ7Vscޓvڹd2gN$IMn(eʎц ߟj1j\*Ʊamh۪賢 %ccՉ~5}V~p(ýQ)G P[0A+dЌYut/dϱ]RW}).B 'ܳ؞3꽃};S05LQ?f0tv&f07DUok7o:rɷ6-lΜ| 5+wzڵ2t{ӽ7COt]Y>nlwtFk8ͨ :-D"fE,ElK CКy=U}3юyvgT@xID,{駟QָJ"w<%x_jJU*j<"QXL:mșS@c#sGpOgi Yˏ(S'TKm T$Mև$O-Yrܭ4W= weAՅa4x9o/s=, >CUx3Զu{wС}K`d*F|KW]Y] g5#b`+eNsF^gs 1k{yfÝ*w:ӂ(鱗](KfNrH36Gw5i죫3.{TCg{PMv3{BY#Z62ZgO?eæcJ?oXʰ^ue*YFMIM_7Hq$wPVqJÝ&cdqYp燅< p'YpVӋo\X˫NIy"w۵tNCR}+$Xx'+1[KZG 35YaZw9"HCI.jO13.(Qk493Pw&.-˺Ev{_~noC/CG5xȳO͓IsnDRr ZFc9xltjpGS|Gxp1|k h2Ρ7Ϻ?֭ssǟLv[hoӭྈ^hqaQ\ @pUޜw1EY@庈9hؼ [Tm۞C9{mݶjNݩnor훉{-;2// h5,i ;24ԡa\q!C1!PpĜZ xS3}B)r2 ْHDi0v,Ef22۞Ö!t'ݬh/i.АcŶlwt:&)- QZzyc{r%nhy.mYp`|̄;#?yQE6_0z22V 6߸ո;QK= =o;?|w׷o0Mɘ/7U^0bx uwr^ Pgp*0",Sby2aK|qA9e2 ӽ壛#5pcSst WOYpU.ێztg 49vv2B wg$hOܳT3,6:`qik욐 aauA6^;ZkZ[WJV jf{7ҝc;h,$ 䫾GEb1ys*Klܺun߼y]!Quȱjj ZzpN=-|˗NZt+ܳ%>̶Jwjg6GslXއZۢV{a:B5]+law,%r}/?óca18Kh厽v% LK DEK;V.ctNRԹd*nf_+{Oe kVZ'IOńg I̢HX$a{I& nZ rB *sxp7™p_G lw|q[V%Ȇ\@/\sV]s&l;w>\ 2`?=<|L~\-?1~Νw7vavxB=_ۑw; w2 -;LT[p~S DzSpE'x۷n}x;lDU|{^+b jvu'/YfD=tle?51k>_Ɩ4,oǧ{R.Mwsv pU(t WnP؍}!zQ0vjFд_۰Tm"~^VRo0W.2p"ݢTØHER1.RҢdtt!,2Ser%A_ J"*,"H A!m2t˔Ja*vlݬUȦv.(i3f 9 γe_,_xq6Vfʝx|=-Z/3?oܸq6 7o#œh/n/ܹq&k1!Bnf~\Ew obëᜁНmFul#s\"pc Js}0K IDAT*o @{{ʤ QࢂC]lQa6Ds?8zt ߮T/`֕O9utZ)Z%̲_zdnx$b\q8D#{2pN};{S`Ζi0ZzzNapddWX$XlT s /җiwW45d;G"v=gef380U:#!h2^'w8Z[ljRD"Re'UѸ\.%vt'Qfr>1Xwi17mrt;RIbGW}ϝroʛEvX[XPxʒ[vluI{Y [o۾Eߧ L՚iaes'eBl NÛcS;nqҝ=-Pv"cUcʓ]Kxd{̲n^.\.Ttt -E%޽Xw;KJKP.^9.dPV,N53.S+FƪP*bZ*Dfe@;H>)"2 rtFw=ܟAp`Ε_g.|WG^vڵ~i/}sڟڍݤNߋ@~׏]SgppgoUz׾vዯڍ{Ξ=ʹ+73#ݗ_v/;zi.̵많{T;XiΝhĝXöPo3>U)8a*3gz'ƴM`g[`Z\>C`) mZS*+7U7 R-[*̦0wX'^>ܝ67LXD.?LAiؖp6FglFHLiIQKbѕ_aKݶA'Ay>6wc_uܹQ#\7g.\^9wWGv3W>>Ln_~qWW΍^F_8MpxƹsϜ4w8r##F]7D9rspsW.u/3w:Ʃ2ܣ=}GKNII8M Z{UFv1X"NO@H. 6Nr !fPE{МƄ?HŋfPgQ6j {GVHqĹ{Ýz'ËiӕBS[dM@ponœTU;mnfe_ц596AK+ejX ]Rᮨ)v)d{SV5AUj6;Vw2St2"=z+[w 7FOڙ޼< 4ȅ˗Ϝ3#t_v~mY>vo.~U\ggW=gN] _/=z/nٳ/o`?#9wcԑό\:c#7[^_vܙSfP= C)2CLYjŏse& il 1 /t@Mwb -|fޞڦDu7כT& }vCBىR~Ӗ-Z#)zڿmCMyyqˎFYd3 TW`;t9wa Vm,RtИlv2|L2Ek.V0N)22ϼ3CJ*ANdUWêNX8۝?91t@EՎ e:A@$) RԶݻe彘Pg(E 0vSdYʹg{ex(pn_T4geAfC2 s!_ȸRp_8q~$X(Sf q2| ܏^L;u"7.#sKzjϞoNX~uo.?u˗^>37.?<}'Ư]V7sñ11c"ab'Xvrg,LJ,$\3KO.X ]߄.oG=U**UwpoBdh>UC_^puJ{-M֯RHD"-g0 >ȅ+]w r,s'pyyywUv5&td=֜XpPV6;{5-/=  Fܝ}%ha,hϦr|?&< 2j;tAcv.ыfoWT&+[[JL&ss=II===ɥEv}A(7= Ć<T2C!'%YRR ,vϻwz=&J婉 v:28coOks){Stjeǎ-e&u{*`B!BA*C{xOn6NN˖屸GJlCP68{5Fl"^ gߡ޹ތNV-,nS|D:w{,UjčprG+wBHMa]v82-\:۳:C;K%8>lU l`Ԥmٰn=BZw[\Vpobtg<*ow!ǁpU{Dl488X8qXKyy\#7)}kN{GgpJZX?<؜T9%}引C+Cpg{sJoHG T2eYrJfg9N7^ G?9;yokVD)u7.&crG`c} %MYi uoǮөNW2Q,u +V'u=n:@\@婫Req:HSR_cTMQ[+6m^IoShj[7!oZm\Q4VqIiw7LlS@Pp]YweoVI™T'fǕ v\SnX,Mh{drV5^d ,&jvYBAMjKsBӰu|JXWjʂF@;P0~RR ޞ0Ժw7(MfVp\*7{Js^/Ha:>dc-aCH ޒ ] fQᾆuo\cu7SǮo||qik7 fçA8_y7{g^d7 t9sGO|%0~t~5A=f̮٠o5;@ Ѿnv @ɰQUt/(=pFRPOhs.AWy-M,sM}Uыcذy;<w껌w^?EpVcx=pv®V&v<q)mRPPCs e47}2#^Zp_ۉ.^3 47!# [@/P2A\&5&iP61v]]P2 NWK\qᜣTcVpQ?, _]=w #g.~F~ hK ů^<W͹+_]qҕ+GO]rԅ3WΝ=Wpnȅ¿p_NW=K~E{Fm뗾>zSp;=[fpG?A[&ft44:Z0n5cc1G~jT6OEMVX7PGM +V~%`;]`˸]͕:/t2*ÁZ֦=5Y&u 1Qlhݵ-l߾k-3f6Xb cϛ$EcNp]q"3}m ]]QŬ.{J>كmbUȶF˃d/הk:&o:#ƛ2>K5:-Mŧ e2N4dT586>[xۋѝ7-~q[85^V;,.НGsA8h,@{3,_> =1sMϞ$M =-swug9zc{9vY@/^9X#@GJG0Gd0},|Q4CUϞ?v>fMMc"N_ 77 ߃g6b*Ma`-= )2 A#>];Q 0=vjrWwD wM1]PY)Ɛ]np# ܛz>U@*qM&SjQ Զdd*Lnii݄l߼nm6Y…u`f^b~B3M_fX{HJ!IvpAH=DWY]݃BҰxGNt, w,^'iVovFu當n`D%tjeWo ZfI E J5:8N2(hZrNgy9>6ZpGc2 ʺD,p w<alglN8KT8滜E{1*+uH,=ec{"{7n΢pIǑ0kϬ~6%:z(P(VDv#܏Ձݳ_pOM >k~[f2 a՘׾EP@}}$|]_SS׻[]l3l/*J,JtHebA-Rݮ ho!Of=}]Zʭe%  apR8BOP4c'gȍ$X+ g9(U6rN~dX4(w "8JK?FzzL5$A},ÅuIF-K s$tl* Ziv1=~Gsfᾜ1E p= G1p$6{Fj{faW?EY4l,Ftc:YO8Hub{JƷ2H//$^r91+!cf0Vv؃ix@ nL>8ǝfS-FXw湯7V2VWTub^c\NfA-U"9O透>8/_[}ӎ vX۷-7b&fjsfU~.^7*ܙB[ɤ{ay)@:UNtְ.$D{$ACS@0*Wp0Ȼ\32d{J-GN^x6^,0M_hGATZ[-LӶ[4\c+#2ڙ!laUcn !–Tgۧͳ/~+"!@]c<.BwFr O%e:{o&D=G9FϞ=߼vNa%0|d"D; 5?0>^z{<9<3.Ě}|bǯ v^״t%uh&&Mt7ָ)1fTy&{!S7K +rlLB{%ܲn\~sp5dp AY\{ъBоtiͲxisrU2bE{Q$9Vdڐd;xwf`']ߓ\bҜjOD&dU*ftEZ59=aݍuEdͤˇeOxtrk8Ef͢=fR%O%$K?ۤ0mE IDAT1v ߨ({p_t6M䷳gdVɀi{l%kL;Q|+?^QS_ߡ1َnzܛgZ% Qґ'2E&%Ư$VVm T7Q={=p+\a6D;}0f|gMw7RL MB4!liPVXI3\=eKf Dž{X S PP <{NzrJUfl碕#]sM O9:C΂$rmyԆ`onf"iZ>Uܹw۪e/ 䁇&K tOG{Х]q3DŽL[*X Ţi`%JK**vZ--ug, XU3~[e4JO͖Xm@<[R%|酡26Ŧ-;q߆ëflm{ʝcc}%yKWH49;2;dv;}rw*+ߕe)yT]!z*5hj+X2h'끂娄9$<=CJԴmnp^XzVhW:h`E{8Y_jr2u`M5Mչ~2UzC,a> {4=Xhoӥ$TJ *?icyP\gUV|o{3vS׌*;=o'Cu]!G&N} pG #wόub u,LT܈i^z~g M+1epoj//J/, vPh"ܑ, 2zk= ԧjSaC)Z5.`]G+_/>E-9}2=-i;J~=ܽQ;#t ٙ+S2_!ܓK]w"iak=iˣvu*,u] AϻlySp"_T|K0ZwF\WOYi11/(Xѧ遭9ic)J*AҒ {;Y`j}VcW-@+ 5c`"w)M/A@WҠ-pp.ܣ2IARS }졁wܱp=]K{NjNO/t4jC̉ ox ۀ>WaCK} y Adu>*ܙ~#&&X~ Q~ p%'{=+9w]Ls3]ds1½ n3*swwM(15k8"sJKkќiҴGG8a+e 4h`U7;d2{Yqu+WW'{T:)S{j%ܖ̊<լĺv:\쾱]>;VAO.5ۻ">)1pwX3W_O/=[Nc;5nq4'٥M{{ eQ=DxM--ZOcqa#y.sJs]bҜR8u(ѣ̦jr5:p88,ƧX̌< NYcUc9|=ns*iVk_W=ko r"R" KU/l@+<I&\!M})p5InU8v)]+`0)35½:Ј`o*?!hb#?f3XBVd>ņ*NoS=ڞ4kuh9=_ýZ=T(T&1Wu.njyZE4HcmGGظz=܄9@:4 Iתk2*ig -_8X5O%&l{ ɔ6![hDI } Sp-fD=ӱsق :s|'82g_ikJT~_NOr=-GrE=L\teRNE$DfmP¡D{K}NRQ/a*egm$6јEe9z*֮#t#n n"ܱqwh\)/3v7j0 AwM$*qxb{PֻzRkkk\r]%kQJVcxdR٪UC$@{cc{_%b0$ pE rxEa2ų>UeDvn_-_0DkUsXpNwd2'aK8MvDo/^<?~'?f:_懿ܧχ=ԖdႮ?,} Dۇ{)?mFa=1<pomIn/loG˝t{D½ ^[___[ںeKh:m-?QU42|(fM 54q;û-N=}?XINx z1*`XԝUQ0 *!3az;f =dt{ʱ)8qejxи6ĕbۦg/JJVdbuɥ%dJyR]0$ FB8;N9t)!p:|ApW(dۙfW2H,LwvTteRn'UwJH?&$&|JGT?>? ܧIodž=~7.$UP6XccgT}m}+[[J"l@>[[Ҋ)[ZJᄠ_a(q^L kAp]ny5NS?555Z- @7jnXf"{$%{nTc4[ r][%ѾT0^;n]XV+<3~ ]A%;J*;çIr݉bss;0 (UTRhXhhH#Nc{4'$f2\ }?j>*#pR'te&Vb)2dbb/L48=& ^U5 LrSokK˦Ub-[- rTfq--ѝ|Ҵb6i-i_C)>MԽP g8:B߽aU3ݧ MD]{Ar=p)o(q3R OA08q[~僷e$S*5 338[&4I,`cbJNլɐኅBEAăxOJw2EgǮ6XJG6HxڡAWM~RkɆde6fd;cDijwZ)BɲdF$s'}뛛4ןoټqS\{RN&m"ڙd8)AWGX'ʤ{2ё ܣ|p =Bx SpSQno`iLLDd>^!$\v*:%{>?Gw\ ]ϔ{kZR{QQQwdM멿tKkqZL4ٔjX& QWUX<rIAsCY፵=\ Or27dc{p_YB{!ͅ2`; Jǫ 6:5xfI2ֿzs] bC@JZO>9l$qU9w9Ak ٞXihPPdLREĩs;߸kW%;#{6va1v!,Μf5] 8i+W{I=)sk~peQ?o(hl8N~${5,}?ܣp=X8a`Xמ&]%H9: |Ճrm%eӆMi=kגo^S6V78hpOMUugp7L)wz2p,hZe3"X;k *"Í ^^-0fBpkt+wfb8As(5`K@5p\ո{Zsuu!][[BJbL0V8%p\]e]ooMXUܳmE;wJ(J apOH ; h53H/^,{od Sp^ᇂ9Je{HLcpѪ68Pv0عs@>},3m*Pun[N{p;7T; Ӌf'7[ތΞ&tdj{7mommqsX.FW$˔j5j:S6WVD5d-2ЍWٶt+q05\ь1 ܝYyxf wrK!apÛ0wt䚇jU*Uήo, 6 0qվ榗zWnD .;}_Fo w9dٲn֭oޒeSPtzi8켠CC(с?ULt4rC_`RxTȅ)sg½ ᇷcEӠܝEĀLV+&+A溯Yhהb]$;iЮ6-sۓgtrߴY@]ӪEC j[8|j** E"jŪLNs<*[8g2ri UUD a(pe1F<`csr".;E pȫBN5/s^at1pаo$Ylkz>qNX_*uYKLlS/K4mYh~u֭vZ},zBp:S cq&*И,^pKp3X?XSpH1<}ױ}Q}8a/~t{,5itf= pOLU ;'ScbX.}؂ОJw-IR!RW>fCbjtQӃ7prxwPnb$4Oqn' p8Ơrp(>`*\jX X0WFv {{azaatJgp+/zAW)ZSC+~mM-ݍS%>a7gԱ Lê$p/uw&STn­Cμv@T=jl"M"|]RR~r֥=qo@O>L Ç(ѣȩn]E)_=Cp?d;/v+ ROon8{llajSJ49iR1,De"ސ)K <ˈ{tVyqv6UTTx6UT5b-e0(q3 k02bx?=z:0HRkBUFh::C38s\`-vP RO˒ˁ>]P IY\՟$Ó8(f_zNZR]&łw}ؚ:\ kkZ޸{@14ZFwAyIsoZhߺkFwRi*#[; pF1Ċ1 ^P'ȁ%}3Ʊ#իN N nj=apG~գw|}]wlPQ^["9%qe[J1l'Zc'{|<#ç]QQ#(0r; Hp^)OU&3bUM}kT㔨(@dPF!G@iUHUUT<(3U U+0%̴xsAŅ>MDAvtgp^onG.[F&boڵ%CnΥi,-> T 9Bwm|o0R Y=j_М!rn^]VP @݀Xl'<ɳ] υB!B$ٲ}BsE$%pbp0ԗXSG q\X~gpgxpp_?=gN^~?΃8v'wj? {Qj$ǫC쌏=ܵ ОCT4e=BڒԐ5/Le=P#S^Q/*TځwFw_m0f ftN.rwjgge3̛V5)pc&H - x̗{;Z}h cɭ|f4d˄ !]w{lSமrRLpnѦ*Zj߾9WT(' IDAT V lʎdgw}lѐ,QlX."oFЎlKrpO}b-SMj̢3*D&ء8;ѝ?6-T>Ͼ};mbH/vdz;g<. }۟~_!/KQ pVnYBs Tbe;h]{K׶URkd){E+DZ}NAg4]O~W!B[X*٬>D۶bl'of˄|E8@yKfU,~ lKv+>KSSO='~ywAƒc;s]ݸw L8 ڗw6z+1;yspmE&N.P5 DŽp[&sIww}}ٛ+1rgY%^j1Vڃ]ߜa9sizT-Ͱ1;S`*|md(jFIS>N\Td8kǻ|a5-݅|'Y *9>SvW׉2C- ^z?xsFRь@A@W݋WZ'Oh$ezf/hH޲nmp_wn[ea9qX=1P=1 ^^䓃ž'&{ '?S?A|wzÃ{鮀O?pW1On1*sվXD, ܙ>=vF@է\&529--EùF(OJp$o遦wmSŖgÝkVXV^ss\ߛQ]Q;nV*p猙\!CM X)@(7U Fkk~蝏Yǐនl 6B&i(*x?*qۚ>㡷6+um:8P@[]^Ӌ}ZUv*d Hg2"ScVF]p_w ' X9A2}paSp,|q`G_/Q鎃駃pIK2 E8$pX:}ru#eAf)LW6[5VSq⠠ u[٘_jAivêddWQҰӜtw\\<>ptXAXn(*4ܝݜѲq,B2ݯ}m}r8z YYdmzW}qG; J! k ; dRkؠR*N>כ6[g0uzҒyz21Z qmjii̔*VԻCpٰvwoo$+!܅=blxL*Is1f|vۭr:wnsU@wW^YQdžVLdp{/}SZbLٲw{f s;:XD RXTM_J,֕dCX3avj/ݰ%yV,7m%UbZjv;6R7r2xSXTHwBd2#"&q׬_̰;?C1~xgᇧGw!Et lo J+j;WxAZA`>gc7YпS='-j+Ol3 R=.79ԩTndǦ%6!(ٛ)>d*a4f4>*w4)I*go8wH p:,vfn{W5tri?Ve_;vEsJH_ۙ-seu꺒:qIRצ؆um1=u+"%!%-aʂm'4;ݞ8-%uI}X,3 H=G>\FaLg֗_yW^޺Cqrn^Q{[U߁w?OGUԬde|W:+@qʁ:8@eFUV{m)Ke  2ӗm8p#GfCKBCK>*[J۷o^^9K; D&as\OII\N2ORl$vTGNMH۔;T(mV}; T1S7Q%N:q8)n5ab◜0 ׶O=<'z ii|~3UO@{qSkkEuyDT&½8ǜmI8l'=ddp@tU )]3װ(0$N%V{%?[Y/kTQTsCJɇIN˧AkYX_oYSטpa`d} \"cc Uܕ|]L6%;]u,|xx(fy93tf;"YL.gp0@H;o'`ngzE / Ի1]{|+,,:< ޫ15!Yؠ1 \萘hn߄Fmm+OvUZv۪ڋS+U&l]Oʝ (jˎh&fiY6Y:7d&mXL4l_&FM̔Lb~^vt+-ppxݝ!8GкsQN vș2$܃pp KqHrpF֘5 v7$rvtuy5:,QSڡ?EǷK].W4TpIk] z2 |톪*V ne{37ɉ`Y@$/Dp.Gc*hhg"ЙCpQb8~K$_x}vG1b7ɪnu2=XYhMND W‡1>఼oCnwʕ+vLls?~lBWb^{n ;;G } m\!$Mܘ {VyJ@j^0ߝ*ǬJ,l$W?lYa;bq&9}|} ML=Tw5B 4i+e2 ;b= 9{w- 닋#+fbt/ K$`i|{GYB"ֻ9޾xʝR mC/ >KS|j^;ܿҜj=}U2c]P{qNr<(hkkcqx~}ʃw' y%kLp/'cdk+̘"cmX@ᾑs7o=rwb+̖ڧNJY$u\=> r)ϝR,шwYOWНGH4w,u(2^Q_pHPy3,~{,p\@%$2䐪k =m_S ?۫wp;E+XDcSk}(=ϦqԸ*j35 eز1Z7c*ZnqB΋w= $A Xw+)mpczk-|^CC Իhk8b|U'x#,ཨnɓe{1'ܢE+w? Nmk91NX vwv*>QK:s&;z(Z0.hâ,@D$u+W #, S)+a{X; [Rkti @vZ]Sؙ͝*EmJ,c+ {*v,Xᮏʐ%33ܠ܋d2 {j,&ϊ9 CY:>*c^d 1f[ڞ4CXxgPfHF0#(r U:6Ԓ-ڛo/3A g,1_59p N{'s [| 8n޽2;| ~onnW 5VYovzv1Mlp]1KNem6,sh#( %cx^ ;:nϞ; ?z'xzueq=u8Ny8vr+w%ڱS^1w̐e*y*pc1 ,dG"98Rry y2|ڐA7o*hp7u\ v;YB#8ROru^ZL&ܹ!Pc>O83dR4`X *"_>A;=I=$0֔}!厦ylHՖֆv dUpuP޼LnK%3 %tWRtw_U۟Jf{X1{W.{E= dxw1ܩ@@&XapgLkdQ# GEhw#5ʌPVo.@ɛ[F P?UEP;opU=9~ETG|Glf8`Ywf}Wc;G0W,3g%٬N\4nAD`^x'Rʞ$[ORee]KW+{3\t_U; i5atfӽ. ;l辡^#%!Ë'W{ 8]=47^9  L& ];̻ (| ؆*([E.K#mjP!{?{<ru ?a̖WBpgJլ`غ': 3)x*RǕ}c*|i̖^EZrDL AR)dK+_{6qS^AmiN(D6'CCJYG[3AkUwAbd53l^5D憋Ipy< w_xqۗ!JqTiGVioX3gwuuuufJ*:^ qgt *L%0cDj$[x2[FcƘE~ص17oް^\b}"NcՐZ,S!Ju\U~蒐pgeNpC޸I<Ɓ;;I~WSpZP{R>p/WV} jJ -[fIގ6Ĉ?ROE[*b̛Z[ CY}lR3`v(Xh Z;.G<۹f#pq\L=ƉĸO} _C_^ڀ=Lr'k]ɥҝkN+$:;>{"!'9V? }]A 6v̟o܁<#ᾞ ;ld s9'7}N]@85n UeΗQqBD>UʃYғ0GDX&~x8p:D=>PGO}Zvɰuh V ᮎ;zܒjLrhlϩuWs]4rYz}QK-a`V-;f\9Cz;پbώ9l>T.{mwp4"bUxH:>i39,1a{nnhȪNh fݵΜ<|aZFe)wmruNZZhynJgO>e Cbؖ @=j_ljClb(L0*`(/"A$e 2IҪIUM!RG+g]K IDAT۷!Mg3WK6 {]Ź9~BM@8rs[*Tm$[.Ec-u&=`_ T(܋0];:> ٥B@z&i~]GBS,ܳ^DXH.%GUͅJpeCI uteViv_* 68+X#vzF h|_  Ob rlJm ָY6;RjT]9Tii0]Usaj5V&.wcx\XR Y]G`  1>S9Z3-=>4j暚 p痔le-`|' kDn6ՆLRC9_PWT$ǟ[f^ZUn3Uz (IMg;Qf2sp^X 4y)A-k&%=uw޾y ;=bg{~ vv2ttÇnV77[*T9(U9-p:A 3?b@x˓QvP>(?M|4պr<{ESI dtͷ>R^l~;ȓp3]gK *TXݚV'23Q4s9Ю̼'w$toڀpy1uۉFB5f]eVdmR]Mb8ܱmTR =q3'm#;(ŽDSSo0Q&z\L> % 8tPgTYg?/܅M2;IcDLnxȑ\QKu`0ܑhr1p55{e5#ylgpi˛#wS;l"I ǀ[[9(s靺S.;Y6!ofppw0^GU]{}0 T]̍rلpG9aM w@ܜPUh~ /Q_xpm;dឭٖ7=Gm(CE c]28'85L5`xOJ<;}d)@#﵁1:{ q+dU*dM`^Nvʅp=mjl7EZ] fv=`.J{6\B"|꟝^ҝsei-,=u.p3xjWnlPO#ڭ[]!uh[ M=ĵB-c"lCLȷ/厔O5-Ug$n57YaSJ|;@r@,ܳ_p;wឞ#. ƝNE2`ޠHg[40S;٭gƮ}ہ&pz@p p` +;l4·Sp.1lS8 ]{] U =_[y11RK3t:N!4X9@gHLg;3v]syy>fY'-3(:}M`SLNZ"ᩑ$KV&J ގ_=J5+遪CDW=Zyd&5)h"m%wt]X:@كbm6ƙ3P ½,)j(V"%3e><Љjp l~p9Av;?#==\V@U.cm0QejêƂ]Uzj+5|.UtŕG@jx1kU >&kclxGߝkwpSIy4yoN>Nҷօp_YY!ϟ[N#Kq5Fq@gˌ/I鯿FC`ua ,)6!P$uKb/?;l&eJzvfNxlVIzM`Nq̙I$D*uuٔ*j5*6[Z(ܯ'ץb/{tl~pfdឭsI?&f h;h`]_޾C&v7o"ߓlmӲkn!3)wq+j=DNˎcH̡oAɋݺ_?,RjnASTiY=󁪱&M}^Ɏ(tt' GwXuW TPШ;}q})>99?67 x3w$? w/{MWMBԌRA--E*<oowE^pWp wr/;TDLJَӄ|/-ܫ-I['L̈́U˄v⍐NyyW mJA Nkx'wwίU}n;5fg&V}[pO/.p?A=[ݖp?t < `p ?nI(vTVUw;##M5@}FHmz/#t4==efp`7;x&Mwý+CҌho"cArk}>i=H\liewܟũ^l& -r1E: Lvu F^){?>L࿩|^?ܛ&+0 ?;eZVyo2 lf37;?y=hdUwͣs6[UPHnrXùb wϷ=pŜ-Uz2x:ESetip.1 F:^3)˅.L+L/}gp\xOb<իnwR$Ux22dsP T,[SN{ rpwsCPK^{3z${̽Gݟ1^3P^#!v8`)pG/7ldYWOQ!<'G0Lp B +;nI3[**_m $"Bll4U.pg{OnҎƝ~{(H*34ySRϑ|vo}q*vxݡrro\MTB!VU4s @ ܝFpպ\NǁUjQ^NvB O0i1%pߛ {Uˇwt3[2^`awKK&ndACJLxOen? p0X3=޿!Q3 iuzP̜--.h_ 8֖[CK]\hIRfܥBwǍs2ýpdtgxãՕcg yܩG/ SSjnĽCZ͋yhrś_|}a z'Cud{4f{}3ۆ(r&(%_TrdԻ=%xܷV}­_Ν SUpU;/ӟBbȪ?WۡwI=Gj?ԑ|^<׹%,ZYc (ƒAY- ez+n&=PKbVCۻD~Fwi5ju>fI|b߳Y*ww y)} Ae)6fzɄ^Ht:FP҉Lt(KL&a>wӟjQB5Cm|ZUxOGASNx]NoUXDćI]\H7=f{terj _kHI._3.5{K3itɖ. Η{qAY#:pFB66HH$3f'SKl޾uԁpWG%sovQ!ue>c+{~ܩ+,=΅ ;ŏ?>tg"ڱI^HB__Dub|E5ƑQjp^o ;$лvXO?=(}3H`۩G^z~%0X`-vh pMJ<k'~fRoحm( GNU {)w =cm)'`q|wv ̙gr 8kj΃3sDʫME[WM2og442 ܽDDGsjKBV5Dj I)sl ڎ-qnO=['iO|? QGH̱N7W`@êy5@Q>y4YG,=W 0BXbw1'\E wjR}ܯB!:k5ŕ@Ý|Aiu9|t1VˆtW$w! :ROyX iŜȡpt/Nʼ*8pK&E+E>wfKqK>K p9Yg0?bpRlnu>qKu>9#Ёj˹Q65hN?}͓g?}剐O}$]Q ޭy+AS{ymyyHnUZΌT J1G`2]3>0&Z0pw{^f=XhPȪ/]Sxu+oxGn%޻{c`;Hɇy Mdmq~ g?}Wv}WF_9XnI }i{< w- <=U 6%իGAUwr _ - ɒ^orZ-͜Cm%O_-n/HBÔ{[;Q[* |/.7OFFasB 薞-^BDJToPxMv]z6( wΡo{yz{ -fSY{WX鱪&e-o{% w5e*nDЛ7U? xxƆװ[3PQ{ʓIw;)pG]v8fUf][{oae2م3@5zl<p*:eءq756b,P_J|xSDZhmv˨t?8Y'dVgqw*G9|ȑK: P[Vv? 6gk(@@ z$괾og$rlp[%F>ģ.d;6]xϯuXHeg:]y_0]&ŲFMiiu:eq,ubK$b36ˤ2."/77(h[5K!ތ݇}:+ά>p'g|N9!v =>O\ ?Ɉ?~^-:yee&qX SS܅<ׁ̕5?xp6jXUTG[ZV>ākCJͣp' ;e{VnԺSuN706.8M|QkMUPAR ng],ܳ~\y\`jyz&aMQX=="[ZjН:] {lFfG gȎ9}aHΚ$wYy0W*E %M=oSjF9iUM] y;l<(asX7K m1[״y#h') )w!٨drY9Lsqg r9'fVw >^3+ Q KZ͢$UnD@E9Y垭?8 clG՗.l}ūܩ.ܻp'P--w`3UyMV[n?/oFFItV넖m& dU-B IDATG&džfFǂFgT ҝ?w9xSg.w#?p@/nK2`^Ô;wsw$^^>NިృEbIP(ߣgGb <=~4d!^pi&ZN.ջZn {d_i_d i|f!l CC$}}&B+94K 2l6W.nɥkCMl̩Cgឭ| vĉv'NF }ȑn@qB-&b?mtUa']CN1BPfAIsn͖w(˻:? -a nl6 ŮYc Ϟ={ڒO OѻÝkR{՚_~߯~>(~f~a3]ve mSN 38;SʮaU2p:Pzjue4.mp2==;p'x=[Ֆ!<}Ӡ͝ks}!;SLNw73: Un' r[Ԭ^^du8r\9B&~:n w DFGVph|R'D(V $3sU$UdmR _{@wbcf{%DJ>r 7,<ܠBA軗;?uSn3)3kihn#o'^a|}ܧ=Z'`\grI'gnFSgñ9O`$bwgy`h-lmVIl9ڲI~0z?Lwlhdឭ-s<ŕ9q{Up?q|S'uۗpon{P\0st8`ӴMRngZAbIgizK>a\6d~plv} }}zv.Ҧ5Q"Ix2+# *\7pwwwťtuu\;zT[(S[&Y~[{96Fmi\Jh#܁kKhƛ]tʝ=xhG<~~|͋E);H LTp'Rw0|K*ėw&S4*f/ϼT44K Z[M lU$ ]m zNу2Ä*Y_ XI8JNOΖ32 )4/~~,cS:υ&ģ1>N>TԘA S hؘ? zbBQstCqY7J`X&ˮR SmVƷ =˗ ƕfD{t8'}iwW%ׄ{i# x'˱a527,⣋Vq*T}>ԒZ܄Փֹ8vL}mj1&7ONsԍ1E|jINbLW+g d;vDT?&}kCYgo1ȝ]C'ze=ߴ&ot;ܛDm_;$'dCm5%^r h~L|pdYAt5ZZetz8l[ lwӲUy2wλI/{.)lQa 6`vB0QҮcLv=>$F3gƌD+IW ^ܩ.z-ҥ턇0'ܟ?zApWekĜaCvܥd|z7ӗ,brlAgK˝>FwfN=&7ɥ,"}vRl"Se0bm=ì%L Q{|v-+i7(10M=wrVmn/]ta~]R!y=[p:;P}$ԩ]{7Ϝ??+ˋnn}㊢:ܡ<hS:2ić<3#njsr߶oF@OzoYuTyv&; )uVջJm2 @ZJ Į8 d*M]e]&Q*B=#݋r@:Mq+ ?v3~J}v'>'!T-ͤ[fDc pbppBd+Sr+%plh0B~A@^ʽ]-Wv67'AF_ Cpt{ζ̟_W.ŋ.|u p psLonjjx!o{T]n]ݩIKMnB&5`_Z^ꛋr;M xdD],jDkt(}>֧|ڍa`j/\^Q6U\ [a–wVF =Dg̍ާnWj⹷מ(޼Cp-DdČg _5as_ux&s/3{eH /ml]ю9pkG}}ym\xmɊ_nxKfikvw]1嶑 w}[&1=Gw8BO7ql*6wtő]CںSPQQa0\9[XH,vTh8%J1Fܣ#r>dڿd}gXl9v?+3~6~?_wd݅X I#v52>}sّ)P;]O;15h-7PcJ qvu4=e)EN]D-Gic[9G[pD+ʠ`!0x.T 2C.]،Jw q;t//( ?E`gjzdayvn[D"D:-1$rVOxL}gorB .K:w(j1+> 4X/8! o mhwQ8l'eFSoƵ ɝJ&l[x1nbԈgME_HpR w4M}$TR-=Tĉd?ܷzY镝53qYEϫ3#o޼T/jQG~7Ý ў Ygt>k9Ճ= fҽ0 cJ2" B[dtIr-85>:xƆg-y{ P^maF"poOʕZ, w;!LuE4pOo;&v=[Gץbv3ZER%5G1haw :Qn-Ý]㳫RsrclX>4 M/Nm;"`Ý̨ wk"M}-pjs!Y#Mvw 6V@۫QmzpEh pe歇grwu99}HYWWF֞pWBr!ZpLCD׿R{t<&'d%,Fd1totInpop?OnTݟn~&Zޓ-{2IfcuNԇwboN$jNORjFZ{9=1{DR=.!;]cVcKKK+3})  ;ggSz-ղp=Ίؼp};ɇI'{cHx.i| Ww=A d; PqK:sgd3mܓ\" wȌsr@ îV#C ;|L*ڧG7 LKLАrQ-e'dm}Q x^8b~ pmb=[ ߻9OܓK l/++iWy^{QZ)Rlaie׸9 ½ŕ{ˣsqs8 FgcHl|nl?;i1g;xH:) D{:j/)(HD~,Iwɜ]{4wwܳp{Rr ֑C+p=(#J;(Dw )JݧkL/家_33gkSF,.NG;7:SN Oyc8Ŧ(܅2} ķ*[/#3KA7d58͎ѓpf%_$Y[NyeV")bQT*s/Wp Ko2p󵅙~UHnWG6xwjd{z+!ktVHpRJ{AxU+a2XMM ;2I!;@38q`,.~8ǔl,ܳ!nbCGzz!lO͉ă% 2PvcQ!R{ȧgrIx':6QH{## #٩`p*ޏ6lg\ ~5Fcc mV$1Jws(G室-'<{%i]1  , 4{S~sh02!:GNbޑGQ^v93|wݑtЩ.nP&peg"~y|xTnᐔbpXiG85٣Q`R5uy_^kqz6nU5{F 8 +gϞ%d/,,0Ea!d@#owgccd\g3Rñ9 w?P%7UuTW#€LA<\C =.׀8,YQ|)QrrN{cޯ߽KN`vPGɘ*dDnK.8J.2Dbuqܷy&yjr_:!/!tjxptOBDw91\L=E/ 셭 cXTFƆkK;/ܕ@F-wĻ^Rȫ&Wݍ/}Αv)w{RtphsLYg7XܒGR.Wwi g>]p-:dSnEk()p'b{G!kg+(ܗٹFop,>59ُ #pF=C 0;Y*{uFˈa|8so] ztRa=z p73ܓ{=RwLr/ R3D(56x;WAcA#= ܁*@NpN-3h4?p?{~'3O|痮sv{3MlGTpl< r |:$}ʣ C. |>cNM,ڈGkɀpOMEcqls뜌Ĉ'Ct;I8ܥ& JifuZp1yKw "w~:~;T]ݭKbfZh0Զ vIfqQWrI*C98>ɪrJ 2^YFb=\I ѵlpg.ȚĨ&;+ H4N>pgL@e0ӽ^xu5؆FS 9~Lp?{Np>r!u}`9\P  Ճ*}m֐p\YS}JcuuźMӢi0ÛbSԕ]Tr{qKK6cwO&W;,MG&P( tK*&e {+AL6v{Z 2v*wxFb«+\ t^KX̙(;*dntnn^pO,ܳ7o ޑ (+~Qh>92EyՊ{~|E|`|yi:'2tyh Tmz v;;}qy}T2HǦpN9}>DbS*VtD&^4\9@$y[u.un5ZDo1ch-mE=<;{ ܉X…S|~`/N{&txHyj)M;w`<pwvMܗlrЮ(ͭ@wx*܁e ;Fjs&N=w6#5&θanNHn@.W[;Hu`1~Cw2Z6Ȟ N[!vk?{tswϿD+K\Xisx^iRRMp(ٟJ>WU; ~6V6DPfƑ$ lg ܹ |( 2̕_TV\qc( \Bs9iᲒh/)1LEe|^P ^ 3qe.X2XYg?+ET\'PDk½/%T9MV j^ܵms31Fd{`+;6<Ycxchaqtݘ`oX F`p2p'l iWL]qb^IK! &L~S%}ݷH \kZ[_voܾ}ݻM%hʴ# Lbɨ Alp]ZeFtL# 3{Ýw;9LTyw˰ 4g]oC~qppP 7^ p/!o5A~t|| к/~q7,ܳ?Ç䴈D [[[ޛ5&-.}&P.VV67rr;w97P#'"}3 ϧ0paY3~,NnLX7ml :V'T!!ܕC؞N#ZKK\OUq^X S(Yff4:t/L+s i{-Z> ǻ@>\X]^}MlʣJW^{;3eV>r>[zrᮓQCJuٴҮ&9h;}kQQkuy`s-ir +7PS$~ƍWNHᮽD Ej(rXN=[Koc? nE7N+%0(%A[)Jn+J~bW\4nTFn}\ǎ;|; Ӑ2j6Ffg1wvdmam5?C?Y  {z"5 g`%;#Lf+GPR3E 7c7%"mi/l 59|tD h.=|n j^1hk2M pǓU"%rxsY:pҖw<E.,'Z!CE; )uC gwNc^6qw`#i)uɉA<ҳ< 7n\E .A>MLt9ྦྷr?v! l*cҝaޚs;F{7^R A½+:lLE8?r*Ʉ؁Ukjp'=`zdV=au/&20`qq}fziveYǧ|pPB7&% {55Ӏ*^( eߥ3Ol`sO6={BnoEv~EVjDՊϛDri9*q- vR<ַD[fpJTᅓ֌̶ ZJ.&p8L>BLtpo2DN" Kɠ-`wN\oMݖ;1dȻymH9dlK ]QN0JڦfڐSyy.yr pn]/S?4:::'_O8tS\^| 5VMr d>OȍuvJk!;:el!# t z2s oW re HOXd;GOBp֯;_p{w'2G2U݀{aaٳؘP{%5! ꐸ(Tv Lڍ]zScQ]?의Yx?ĖKKuه{1O-m0"{ۙlgp~ )*m6G{PO½ fh?cO w QQ*8e/&|!>C*\](R;N^~ܻ{z6n˗e0-PW0'ap7G+ŘcKh $VZ DMH=Γc {~B׻a yǦ3KD?ɠWo}>:JS#z.c,=&HGRSNpu7qGqڔ/@ipmـhmV-zbYؗQc؎kkwvCQ(]Dn'e@{4jq0~, 5tg)'P*!ܩrkAkRd.r5Q^mcyim8Ąa-8z`ܷxz=qH;|+~= l'mB[pwwՄB5vW4o$Ntd`c;_j{ۧ6,II.3 X cQR @ P4 la-c#16ms丌r]g0jbJUΧ|$qzNJ̛_ w_׺V!Wpjbcc\-ؽ -oټ4k;d4J0=??`3\Oܸ~Iv؏}}}}5EЎl;w)ܹ'Õ;OleJ+_ebA=Dw>~׷t0¥2&,D+Ѱ A,#I5< T{ejjҏ;d iXqƍ뷞[__Ylg ױhY 6eQh#BU6McK\G<_-C;vԏuw춀E>6rƤج;zXi,thoL@*zg)75hZ/hˈép :sҔkSU> ` gbU^Wp?Iof\}[=/#@|47BumxmvD3teN`G"+VR5M۫ҡ@7+ؽD^vvPv"$zj;Ӕw̓lwkk~G={ -KHc2?:wŎT_&t0._uי|NsIR 8Ím MW']̐Gi{nq9N1q{}!EB,S<e6V=wŤ*UZc?iwr﯏ܳwm-a KpMw=Q9mRaɴYM'9Iw`6,X1J rF~:2X]^eE\)_c,ܕLz <>|NK_8ln 釆m x==д2ك\Ny̍n߸5٣+Vsqu}%:,N!yhn[k++)Fv)m66;htj 6@`.Ÿ7;}gm>q>IBc۷oPI~L.-@JSx*ywm/w5^J;=ѣ}}s'\qc콄U3%/E]ӯMyZYzp=J7@g[Lc; z;݄S3;cVaav@ ͻlB}x*U½jFI$!-`mDK.= l6dOбblJLvSiG5>*!9 FTEKOn/xmIg+ds>:z zd$޽{ *ÊpR]GfddLv -JCw5D|QT:)Qv4%=ݏՏ5\DO^ ~qL!b F^\ ~5?dk X ndj>9nLDV7с%:&ݣS$32.ӆG^'{w%tƳ].?R?)/]|jh7z|Φs+=/(v[#KLcW!P5R6:);WCv$ɸ s>>Hp }}}vcp/ESFd{;JLuQ^`-@Ӎ%H e3 ]tQC| W],zf8Y FerO{f2u&9JoPtRGy(d$=n]g%ߑx4\Hv&m2FAo>/+^_'VvNpJO_[;_j%Q[r/k˸d_spj܍1#@)(81)Hwޞw[3Վ>GJ- pW wW';o N_$lxl͟bDr6dj x6=D?Qq"qp ۡܪGr7Qﵛyo ɸ &WHR߾WюT,`;nZwBga;bb^jSGE}hؑ^ǭ UE?$CL/N~6)M~M<2_G'sd]c:ө|Z_5)㞶PQZKؽBg2;ӏ o4[u $ݸ 130uΔ\_iajl}d{b-$ev~jWY}NMޣe"< T]g[9庺Ν;~q$ەp +3[gOo<}Z4F~[9ܫ^tK]gw]-8?EޯD+Ctsdr=>h rݔ'wZ_W]~<gqS&Hom.k}}}e}(OMwXyU0TvA6PU"\崪L=ɡNkGQ ;jc݉|wkFm$'|tͼ`^Bt2u}oa( C3N#;Y 0vQj,v  \ױL ؖ¶!KQօChP8$+{y!<>۩ɷߦ*z<;Z M Tӣ:}@vTS]z|h6,x;C=Z4TSw(zȱr۫Ӕtb`LUI"CȽ?}$1_`h(},M.`E w*mr }lE Y-Q V\ʣ7Uiv"z:0Pj<+n9T_HDBXgwSR^IoAk"٧#EfrPK $B =H5ʊ5?NPw51,(e,hnSc3 [.\ca>;:ah'HL31_/tviPb~pc3fS[RᚆF=1m7Υg-O9zlvatDJ-VuZx̱N~:*,() ~ő->?D܃gw@xI>46mOQv:r/;/:fPjT*rv5gHuI*{uMe~ٮp_~weKŶ̾={jýDW^;n tgpeߗ_~½jrCC!s1kֱ|K`Qj_FA$0zkpi*m]/DmFreHo?ɍd&Ds+ ob, C>ɏ`W.S㷟{j%*q;6N;)cYq.MTU[._\K"\.XvZ`t;$|&B׹ P%Mr)ӫ |ڑN?\m t:S(awN^wvA.iv`+$`Aui]#Ԟ+IVɀرcSu.({XL*|*;d ^91@+pOw8%% :s9dnΤ,*}~\ŧy᮰eb,G1~ccpv[d66^]Iyjjyhtv4u> Bh%rw ߽1rg2ԏG\mlUb vE {^hg+Rۡ?RY,J ar}Լ~X\yQqnC3(xEk2?ߩv 4dB&XPS3TcnhHαs'M h7Z;"!~}NN.=ܑrK4xl_s[edȕnhא \B=%prn0̣.}ύ>hmN }f Ļ.Id{f-6pYp:[.OU^R<ÇFDjȥUu:` Uը?6  sP;wPgi؈77= [;9 lh|Z̈v\GtcV%܋c;w8`E 8jN8رUu~tN.]Gc;؛}|R ەQV mIoܣ7;Yѭ6gz|cC\-z+xX!)0jR x ;j%cc,*lF ƴ~.J3 ^wm;wg 33Og gnlcGW_U07, wß,]KMY{~J]}w}wyys:c6ki|s1{,bW:aC2g `#p-KWsӫ׮.L {OvQ33\{rۯtPO%Xg;. V 1<V.7pɏEᴣ!/lM:2&sdY0*, YapHJ F%@仮mzQ9ݰkgiiSfǨTCMµtxp> h` OXy"#dO0?FZZϷ7m6fSJ$?$pW7RoC=6[1m%n}O_g >|k>_*,M9E^us̱E$F 둶;e(-6u֏t:Ws++m{\fݩ!QD(L:+vq P?T8۵ٵ8{"d-2:Ąn'Qb%{Elv5әL8B/_Ovtt &@-7C@ۃ͢:w_zT]hVfّ)COs!೐ $G;;+8d]Edp3pbpE*|դ>w}*8yzkQմl/{}Y`:yA~֣GѮܟ;퇪J~tT>We@O|7=z7lfULX#^U}$C 'A}؈-sDB6yɽՅ̐G4dhx %N;%SqDޖQ w3>^v5kM(*nrK&y,՛%.[R>~ *.9.w#hn PLuCRIbLPF*9w\0 Gd4蜏ӧ''-#U aglitV3GDF`n,Ϭ&oUtw Tz6Ie ' #bq uj<$~&N@,:lbJZd&+6>j6vyvj':,D,݆֣Sۭ]]s8G(kj^@aUX!ýJW^BϝB~Iܫ.`l-veCFID eU}hːcB;FN$2 AuF]Q;h,ú v{Db;)=d)޴&&G dLjMjsB5.]{w(d@Uog]{@zb0%gs׃ z@V 5X?kZ:w|cn&,h5&p1O9ɫX3/Jwl@婢w?Ėbэw#y,jw-x-NzH&۸}CCN(rz|WJγc~Dw"&61]i&Eû~ܕlǥظ[;1)+ʜV^@~7ڒqډ0bd4FXi h9aj4hXnX"0FD n߼yV2h|B"{5K뗗$7FlylvMj`6:Wbƣzi"w$˰Y$0ļhlLf;{DwxL XtjOeKWפk~"fCΜ٘kDA5mBN;D_&y kccR{ [S^϶,ǖfwt!Zc^.2kni[<\K(cfSlL`p~_HSS%^-/{I,|Rw%)6T^ w@l!wymz'b6o4iaOU&y1i_] Dg$|DnFS\0b뷞ܼ~)*';͐^1VvC.r]ڪfy`N&xCpӡ!3،aLsބU1^ S^F ;N8ghsCKTU*s53@.n_2~ΫKW}=GLv8ER'j/^s۩ ϕ>^>%.iIʫ3[fbg{e;vJ5ѡ550357]v.ީD/4z45՚(.Xe箠˽/^*^[V{~Nj{?~dvHw6uCX`X[L&K[ca o Z!0uӸO Awɭ7` p2=Bkd]u=q{= xp*֦=2NNp9q4NF=ɏɏDg xk^r,8+Qd_ kC~֗ =Nov. 3MqOa;d!+y_ s/yHi\My.OeM1ll6;0~z">eclQ,}jÂʝJz}رE?{f-zN=zTsWu IDAT2/^R/&}O/{, +;8aw' qM<6k8mVǢ:߸A[ZZ}=([l*:2qP킝wtܘrpO{>tN)Sm2NFh45l,W2S`!Tr8f1wUΥ[ *mxgNt'WlrH!;]"t/w:Ox(ÓjYfeྖN zOUFw wP1g/մ<]_xn{B&aGw 9]Wnĥ_` Ƒ{i\\p&*pg2k?pҥhpK?? +BWӋ'_p՘Y tO_[O{j ݇J;VCĻmhԕј+oc vD2}0quGwٯvv\?@W2`#sbx-öoa%i&1r\{1T . }whp\=쑈Ҷ uuHls 0l"];qlleӴ1W JYd֋&@b{pp3fvs pmf,&==VJSphR}b^}Z ֈE-Rq罥s Ak5;iۏs?A9ڙpx%:7zKrp/7Z{^}2ԍ0O´TtlMcc$ vĬq\`1& knʍTEԍ++y!S:HI';DG ;)%̹݀=о؆z~Y>k0 ܧv8{݊(3W63 vNm6NJ@yDi.uGfEEdcځ}k-;X!N<j41TF`O'8|rq˕]y4R;(kOb>"(bKٲkn"a;;ӐnC?1{Uv¥uˊ~:ӣ7>5ET{G`ޫwR\ C֡ϫή Q0g }{X +6eP /1SO;b0fVݸkZv<zHF)cV:ac`z]K ѕ+l= *vqR6N:}'[Sqa{䀑wL+yK9irؽ`! ?8ppߺu5X-&[t)RGQ]s٥OƵV/`jd]K^64sf~v#ԯRڡΦL8%XeZh(;;wf 8A"ዡF^?8h2Yt< m$,G w{lv(MCZuU\ڗ8"ߩ,"z 33SGN@*4wFvGk`ɀlWiv0"Ǭj7S`궎g DC#NGbsb2[шe˺b'Fvjᰨ `RmNL"LB>v :mZO֥KOc*HIl}|_I԰IO0# niR_ .um&O.VO]:B;Z+#"] {i`ݜH xw0Xi\##Z5ۤĶŅwkMlbMLf1rKt^`;[|j]d aGdߍe^CR%Le.ݘb]TP%S^{~zqgGueMz'7s 3B,#N^UwrO<Z~2V=_hBeO1>u9t2x0ZIq('&9 pc¬ 3Xu>%(ބn`/~qN"v<'(/~r{"FAf5B;Pf{~%dЧdZ_Ҕ qQ{ pW_#%=h8ṵ2pǥvw_iӷwӦڰw9;QYiRGFkԖQӴ^휝HCuv cǟe~4 D2W ½"G63qw"/Yrʕ۷X_¼)'w Me`Ԗaqa6[̐bBuul̯EguR<t F S %^^O> U6z^g ^@NbV [n,ܓfג &&h<.(\tN2_̶ a w{%}NN^1e*p2_b1O~PS8Zg&tU"v")`){koݿK'ףgǡZ?'gҿeҙVcİwĘG(e=mԴܹ5#9)>hM3#l7`b?h_j؋C{ TulVqNB0nGSF"pêqc,Y\^e$H.G%2F/##RQ} ^tIyh9}.'ҝ6ICO͔c{,A% X,XY|'.ky*!lr De~>KڞۏS] )2JmWྟ{o;We҅ [7=;utpVbZkDC^_G_"}[O<E~=E`. cXz"0K$Vܐܵ)@RGb*b\Bb.\WWU^poW$G;U4w``:׻Lw ] vqb TzObWFF7DlP2BKioG^ I#JNiv ǙD"CA z t|EZ6'f#!Xe6B,a7<ۍQFj 33ഷ>fvS.b2rnWbpNOx3g5a.W86@h/`/utG֝wʢ?d Ʃcp441 }A?4pF8LNOUۥ1rQzYbe.{L4gSh*Cތ=@>"HnV"RȤ[pOѥ]%݉`hYk9kئz#ρUfolᾟ/ w*p˷e*Q00$=Wk}\gvHOk'x/ɪ\mA[&nu,` Khq.fS`T̏4ȃY`Nn[ 'q, |/=Q=*N=[)MMuc{|ƥNPΌw$⦌}i{ff6qޖ wd^|ms^$Q5o+pO"p'OH|v''mteC.}R79خLw]qRuR4(ČY>/ڝpsT੎ͻIIK i8o4Y%+N6ʘ,|?]S(޽y"w ] P|OD_0q̄]ν^r}2n]ꫯ~?˰k & tZ3η d;Y HblL+EXz_̈⪛3QA:耇 ~xg\DwmB33!ܓЧ0n zGz˺ 3}}$x)ܫM6~{)wlW}:~!xNݙ :Pݻ?~L{Ri@x?1@G"#VN4 &仓}̆aZ1]R;h?ѐ1Xځ\?J T)1r͞rP#pO+ <!K@3Fww\]5uSǎmOaD*.a;Ο:^T??0sN?bEM OU^)i /t<rRҼ>A[!/.E/?A-2tjՙ.ڣAwL1C[߯ nnDb^ܩTGo?88 hvRI}zԋO{=HfA;]YeXT&ێ ?fpE Ds CLDDo"_'h'~i2Z8XY;j)|hML ;ڷ޷G9( d/達Ýo>9b=._QY0ZW4JLz1{f.WU]u!0=q zaQnpz!hQwͲzD.04e/` /qs죲p?_\ ce&&Sh$]qمs5>h<ڎ1gb]v:/O>)޿pRZ ܣc(L{hؒlHȻ SF@lcm(4grLl%"މ``xq Mͤӎtzx.![[EɄwd1!8[Du܉t?#o|{NCuU%-8YMؘ%5Uud6VL4Wz! Ͱ3.h:3%|-uu|.KF"&򵺙퐫-~b'h}j>wZ%X:7wQdA\|H. =|H tl_RQ[ {E w*pԏJ %ώN^d mq0еuFC^U8׬1j&xihŤՄi;'uTslu Cq~ #2B[h ~irSv1 R!W&%O,Šdߔ\M^jT^w9dѿDtz3`<;r:&| rLxmiqCw ډZZsTrfZ2<EIN,2>)*9[/PK {.垌^Kw3[._=eCc =+d5?'lݟ~GO N-$o8Tl,T ejdڹ4e ĥl=a13^|L"]hp]rՑ3Q 6Sn<ݞg0۫w;?A.} b^/;Sxyp`i%e ~(vxY Lr/ ( AW^ww?NTRDSFiDè :.:YbyOOOR˻ *mrFS2Ng%$`/ΟpWd4 r{Qfsx0r8xҾl֋8 O 8Lnc@G'h'KXWooM?7719p`?: IDAT.X]j&K-˴<܋m=.<hMg`&K 6b~dF.yt?)mk Ŏ#ƴ{Q(R;NX꣄;;'FDu͍Ǐ1,@cWf@ܽ42y ddp+ +_ wtEdEw̉ p0AP`(vFweOB[V1yn' ҂mvwu(y0ZsTj!N;ЛapDƑte(Iݞ6Mt&3AYt6,~uD4xgpptN|^đQnƖmףp,"ae@dIKbW^p|11~gZ&O|ؤmc?"JJ_sHVe0ό". ypq=W4l}x{l6S-./7 N{۹^_|u \=z]_O 5Q`~=>DfҹD &zVlk=.dA؜qT74 a70UU -1Ru&bl\ +=$Fr-ylP>? 5 r%,s^p߿+ +WBLԩz#p6n^GCne2ri3,xdP<3:eNu!)}俶wu/''RΡIM=|L.OKۼ]Hţ^0kBӫf5O/_nM{!9b>ww_e]ƙx8PJ9Bf{uAvNyԃ[A,)EC4};v;tv`캸(]U:r{ȓ _jhH,jhmpP zĩP_CvwvNwihbjI7f9WUWYd|j_Ӂb)FtK4vӎW7ܝG ( dž Lq:K,iψG_Ky)t~|&_w٢2pw&M>` M+vz9AkBj5NgV(-0q?} So^^cU|=Jf֘hgk'Hq_3JFٜPFmo=KnvЊpg}MuQ!?4醆D:iXHcTGo 1S>Zdbpoiu&(۹ՎJLcmmWC8tCߩR +wQ8 [_-)I42 PX͈*:b3f B_2M+<7뢰s;[Kt.Znx%ΚfY׹߻rwfD"n /L˳L#љg }|'XݘsY%*3`-6\ tfpCaYF07Ǩf@ȭr C65ٍFYJHw9 74;??tL*{CCءVUO;/#sXd˗Ao0Lp߯Y/?`j@ Сp5QJ/^̕j`xRt\HLn{׋95iaG?/VSӹ8 pN!;@wG;z:Yx`{SH᳿@u 6]TAGw{x\Ya9i|{Wm݊Ζ B tڬn؁jB45tݨΦU>fX/^H駟Ұ3頲QÝoUܓy._-JSW^Kg@WH)օ_d'?@__7۠ҔŁOK+z_J3UZ !iGhMm8utZs!: T!"2D4 {G_| 1z/‚-a{NupgsY/ R]v;&}kKjdch4Gn -JKCl`߹B0nhn3z΄0JvEp=džCKCϑNew!}zg0_K _-)/ëJtpg$;Z6ҰUs_(6>=qiCNrxt)~^Cn99zt(Yf%$b⊦rXKFl~=Kow_~?-[Ǽuښ{[;Oph2~ZvmNRyCu=zgQPx'\ꆚ a{|~@;[U2ldI2ױyQY=΁uv~\l~g 2\ɠ@vtw;F|b%6{ ۿJdpgNŝWFפc$C<\7Oi>泧PϨMP# ~N^L7:``s̳sss]GwڧW`xK{K+@n`^迻'DVl"#?_&ۡO½\޲6iltta*P;,Esg-|B ϒzew^gٹ FMzSzf`&ZHy}+(s~ vV?v KgN"|8ʳrp me@2' jHAu>i)~@i@36UCsQ_s^%-)b<'K^=gKA{+4͂7Üy1V;lvz.[Dw;ɏ~w~El^moYf^JqIP=\{t#9O5UJ(}΢xfQ߹s.HL< "_3 0{2faWMCb ̊]Zts*LƊ}%9ܕ*(۟b/72Sev%]M-F{.˩;EessUqiz?}4q**~Z/.+JOH9^eOEBBV5/Vņ!IirKlo=:3ciS:PD3(ߝBN.8.h}6Կ}ݷ_&jlؽ_CfiEF"Q_)6 4>Q'ych3]oH>XaYf˺eD,cytv֙MII)ݍn ;_F>ГýҮ7xRçCY/Yp/-eK=LJǽJÆTe>%<ݎHBZ3b]RO qLpк9zPԧ*$ ^IZKNYˈ]" gX]g%96;"\2st(5ԬCFQig{\3p_;fcӁ# Ӭgr_^>(CU|$MeRN`xWR.Lي]{^&(3/ӧ{{;5O6NϞqOy(۟Jp|K5 g'/vs53} èN$_!|αG6T)Mpw!wQkM:d/|@$'zJ9_!瞘P: ; ;;FV0jӎ#eS[ @y)ܻ]4JTXw+敤Nk^fJ E e5s $?qN١p?̗.uh?##c.p߃cSo^{p?%[ sU兄',rN԰I69P*pFrd _:i"܉t1]:ʵ|jzz2> l9pN[=؂^"݉ 6ЭOz+ٗ6 S{DjkHR)_ap[}EL}ۥ "+d E\ÿHvz(#^(M3Ǖ~ ; ˔;ݒʥ;]k9.In̮p}7Ju] k^J㽴kxYA*O"|,_O?"f|u@uQ|h<ݨftE|ۭ3E[!y {K~V -#NFӟ.ïa_>)i0sW Uꑨb5kbSTM:V-??mkT` ~"8!y٦lg:|a-^8QCOK-ZYSK5~:j/ʢ΀wn\gٟ4X1m1wd qx.ƀe6].vBs~$rTww\TwKJdAi \`LD,:0o`35ڞ") ^ߺ ?Jؾ֣S0OOShW(%]~mHp{1{rw' z->Y"@N='p'Sז]̐-e[Wł/x>iw.f\ k\4dlm&4ڥ8 w934UH\li`9?#dg;XqJF~A2D]^%S{p 4{3G[U%q``^2Dg=.+OwC.UMM\9w߷C:s{z-Pw^?-p[yQH ſ"vX{bM "pm==R= }m7%Mgf;z3!貨J;826~ /0 t9eJsvp>9`F R4*k a2V/7ƶwchwy+< ?Bw.Ǚ~xDVOa;aD-X;;J!K,^|aNTa>ĺfK8ِ(Y0m +**hg#Aݻѿ=knv=#699;[֧̞bX2Ync$HJڿ? nܘ1e/Hέ\Se {SF4:ZQabt+l羻L iTn ep7d,ÝCFCH~:Fw\1 >Jsn#i Qwnw8\;[YNV rq ^0JXz؂b IDAT +" aMPWe`o9wGGt V rV  `* ]N]թSR{eHiWB{%p"bUB{\\bN͍N@Npey+3sA x40ĜFQxQ_78ݶ3oŘY=@epoXv-mē9x1lc apw}4^K4'3 O z6{kvw$^;0ܟ}pd QDuX<399w?CWa0s,]Νڜd]QЇ@V+Xz_Ts7{wX\#H$w륐B!.Qx. + @cOx*n!%{VV45:8(966;!We_p Snu|9 sIX4C`QdӞLhawC7;2L [Υ3^Fë/hn pjuۍ} pٗ 5mao?p7gGy-oُ4XwMXeY< -?Q#?k0a0_3?nj p>ܧ}_ܑx1kaJP[O"ιh=,ֿ3m-*ݑp M hjTJ;xQqLH,.hG(yg! ?փ!a2A"MMuSMYus[SZ =if/-pJ<*mszR?%A~-VOy>FpZbѣ؇V' 􊚿pn-h]JÝ `7d1_έ1hO&A\*[6 hlN T+pǪ@|]0ܹiI~ O ܭmm*/MwfI*֘9YK:RHn-hF#>7jQvE4ݝ9jEŶ+=DRVQ^]V[Bý*q0D)lkE"qPȐQ)ܼ*7.wHnnhF 0(!#;7ًҭ RCL>_ђn 1HlgmݗPH/ :265ŗ:?V[F1 7]81s:DćCԑ6>mpw4JϲBsRn]9`"`Aւxϙ ^Qgi-xDt߆i-'utH ^ڞ{gVJE$!@H{.:[Q479r2~G0M*Qj4mM wb31m0!WH$,X"7۷^E*嚚rEZH\B}Zn*9ֻũ>{Ҋ#){W` ;if_&$xgE-]A1γC5MRYBT  :08Xȅ{%!*UТ] nyܹ!L.kʛ۪ dxq;pf0z~^FH͉U'! ӨA3S h<2 ^qěwpg:tKv%Y;)⸳p7a;ʒMvt| x˗׬ 6;5ĭ ݟGMcfddX3g0i,8}4>mxmn)s8sﱱ mȶR\c󲂅iZ^ FW IƖıck=DHꉃRaʹG6t>͛ rXQ !'$`~qO2c]%A[1pGC>H_RWr3,=,=ti@@2='y|=3hy!;2CWݘ2cF SOe8pIɤ}%<=ʲORz\.\TR+D ޙw˅{Tx0Î9eGbo _kF#}3K(@lH `G}f`?jfg[f 7L9`v蝘cV8$ &"٢C}ʔÇ&wGG[pkpq{И=<:cKϟgpp}>:ϝ#hXY?ͩ [p pǺd'/E#`0znRnLk# G#q"N(4zGJ! !E*w0isc*hgdeSI]L*jH.iYA ^^8rΚfp7f0~aJ3a'Ww0݋섥ۑx[&/#JL4ܳ >rVB,v;iOb4;h&x7zޥ,1IA8Վ wSy=a;ox^ĖWKD~k#,ܡzuޭq$3NxݗlRR hoܲ6/]}mp\}_|2:Jyygp%0$mfle3+_!>w_XOv\a#!!9t;, 86kM:ZGyL˂yд4V.ji.+TeEZw"rF͹s5*D*kUgNeV^+A8QQ^d6[NcaQrl5wLϔ@(7Q&=HԀA3°s߄dzЁ0|v51sL# ,ݬܧpn_V.HG0Z!Elβv1DbRo8=G/xa0q6mC{wkab43wϟ}Xp5en}]=rB4D!tL[T A n,SU!F)Ѻ+Oۥ 8=6[2Ǐ3Q%Ifp3ߢd|0mcξ}_3+k"Kb!+ʃu{@@qGB;BR =$[ØivC= ZbMWvO%;G[@eA_mkd:h:ղjE톦6i_[;TlU> N~?ׯ34_?>z9сrx3 }B䋲9ܟ9zwOJ Vz/H\r߁t)f;۷-=re~`3 D&S*UYC;s/`Nw# ݾ}HV֤V":XR] H'zgz2p[/3vpg@>%EE6{PI\ K.˾ n 0XF`O)I ` Cwܭ4q\')6 !{2ܙeKF_CYogp71dOw{s3~u:~ tJK/??Օ0N~>/~_Jp 5l؆nIe/䇺"]H7r߆ܟFL.J6<>9Zgxo7ׯ{K+TIl22#9ܧN0zp2qΠǷ}gΝ;[y+"73xodtLٕɟ>iRLwgɷ?4)=&}3?́""Q<͘%))1P;-ӻ&fYKQ97=ɈNZśep7#?ǩ;}xML8 tsx9'woy%&&f=հ #){^ƬGOxtcpzKRӀڛwMXP#gɆ&[(ɓG0fY-?֟:pح^xa ^l=wũɰgt]nnv(Yv 2ւ\v62fbzRNIձJ2AWGrmkZ~mMFQY>.ZVU#uXV7~XV֦A&R.@\]U\8jrj)@UKIق [~:J@Pu\VD%jPJTj|asus%lPT ]d7QԤ\Թc\az\н&RTE:TT^ϏXVל@=XΔ۾9܉;}HpP>*r<Ć]{vol u#ޮE"]>]l;RZDpWp7p}CyA!2ua \eJDШ 4]SFX0ۓwz/NJWzGߨ(}DZ=f/HHо~ t&y,v_ێx(w z4b Q`[-d(swFp7`-EԶn;nfs`š#OeɵkK׮ wto?{'>xw=-pG`TjP E95Qq=ͫ)u kJ;pG ҖޞԬޮ"CG] 634ЖMQ ԝԶ^UC-7 {dT`\o/*{g'npfQw T/WC9w S=;RCQ%]9" .iyl`bo$ƌh.[!UDwLv8 d'rB#dP5ͧ2[mr'mDA!ZU۩Sm mJDRB飲\/jD&TnlOp?;dVN ̥}۶1Ky7ұc//#\IvIؼk(z+a52cp4Ƭ6R8S`Ŷ`nyK}(}ㄎ#M;o+챟\_!p' کpկ/_@rGΝ]L}~Kmj`W|@:5T§ZrޖT@9ůNŧV ϛ@JO̫*r/$R`S ӣfdS~s.xWFQ~3nJ|+84J҅-K\_ĞذIЛ4jԠ7ut;}qP7%~աTƧ>'p@ME_@eu9uC4FW?e,{jj>q\=( 9PuCIn{ ?#L>mm+NoF!,_2/NjprB*+Y;uL+ajZ+wR!#$Cs=q''Or~$ K?nQ' w T`]$JT/R&S*MwJsajGE\H4ufp? ¨k{ܫuhzVI(Sx+ϧ;o4EùA!~8<>$;%C%.ꤢ7C{&Rԙ fE􃎚o IDATbT| o\k)Dtxg8?&ɜ#'D~MuI$pa39gbnML=/11+D i;nDK% TuZ2B32!YqHԕq!Z&שуH%2\'oW4J]jnf+}=.\!%cWfUbawX>,zCXSo|bo=]a:6v+ͫ83G*v`ώ6Bs$qŊmݺhL">={lw'܍=w\zۿ|W쟀r/?k׮=5kugWju' RE}]RzsD ^LLR}u`rRzHԕI tѭ08XtQٞC |ʞJmOQ"xA=YnS}ST`_S ԥP)S25zw uPWGMh-[-I=]}S:39P@I2*9~ ׮qPde1{n2k$O&7+X&*!^tkUz mcxd1щ)8#6KQ|a{C](W)erBS^˕:Fۃ)32c4#ݢ-cf&Yg:>rd3=,v@َx/PH yYo:2iw1i5<#x0?XYƅ{gT,-}=w7;ߕ1~oOg0i1aL pG}=z2trpC܎0|-}&6MYaؔq5)x߾BIs2 %ke!B iH~_jB'`P.v]}ʯ{HO Jkl`BuS=(R> +z N)ZyJwՉc[nN@ 4=ΡITjsWHҲ>ʛ b.!R7N)ZX˩:# PU'( CԤ󎆊оivh D~Dv`@(V o:3(P6~,3Ý5f^p7 jӁ0-y"JTqhWdA@DynVVaAý\/3;$CϿBԬ`3gΠoZܛ!uLKD+SdZ \Z v䑀'Sٴ0IIf,Z2MqL3"&4*Tabg['OǰӦ+V [4un %.զ_j-DobXMvs7iQTpxxGݧ46~ bNEd_8Np=iK޹3*Z2tkGoUGMpyEyWFGRl8 MFrƍ){PEET šG8LQ&tŵ)*\o`ȣ d.s=?T}jnF׍'$rCF*ʩy(8' RU9ia*E'L& C%B"{s\ {;{paQM*!] vg~L:C11`̚m%1P( 2q R˗C ^P*+H | ɵ4B*;\Wdž j֠ T g.@xK^TViM ejD*+Z`D뗶o :z)w:;nB(ye*unγ ḟLz/3nFE:"fH1F듌ӿ8L GCvHm)TG*ư en!Tt)ҵ`Qz^:E2#g$b'.p_ 'pG[~ߞt6byex;s6#ƛ 7%2M*58ů5O`OO-x8GȡQOnf'o)RPNڱ#>Ta.2ʱ_*? 8&5|T=܂rYۉVdyX;H@, D3dƋDHDc9NE5:IUy,+=8D$%{C^a|*,dEM0+(//K*j`㟋ڪXF'kD ِ2\Ў(S;b QYQP0ډptzhgPV("YvYa1&%@lKG9F{ }=ꕩHr;5WyVR JˏꇏN\sLev jy<~?RΥUT(j!y/\ɳw0FDpx^Z:3g@F BK~x)Ư̰N= GJOv |.>>ׯÏKs] pCc?x.VCR%χ&' w;p̩xp_m͞u;bȪȅ+p'Ŏsq/;̦IrN#wjsnnG&RϙAq@w0X,*5, 2b;M<6K.hTu~bg&^"^ $"湫h?:_ ۋۑt}ٲhЭ'8|߰dqSˆɴa&.c;#fqaXKMh K\)^Jn?Yc֞\j#ĝ,bz \ =GA.O .XF;(ZjLXrGBy$!nmv~_ ;fTAHF@cT6mS"P{ep8\9DEg(Hy~lz|؁GXލ[(`FRǠ1J 1Fep-+)=++8116!w { w1 wt\) vpGPDT/ )vkhżAewc3w}֜\Xz4Krd C ApWڼjnnqHH! ]ihhR˄BqcA=Q6ƙ3Fx?R]9!qAоOf%y${ۗCpR2JܗXua4;7>+mlD"_Y{jկxG6nZ'wF?&| ?0P<L Sx.TDw| 6;Π/\o qwSO Ŭ = Y/U¬E_.hJ]sͣ'6!V"T]*- l Kȗ~JOE)z{o5;O X;PcDvD /8)EYЕz*t ;WuJ,g% ]pc[FL7o^(nnQ)ΠQW@y%J)"Vyfсc^L wH/(emZ%ca ;2pgMZGn.џWMpg߈b|GIvC[Cl> ܙ0""&*`C4ԩ_~߿4ٗPIW?ziʣ]xD!]/"@Nb3*d$mG_"k #5zj=Z[[~yps|;}||B~̃FdFY⃿F [̷#_iŷ>OKm?CN{|OG)E RM>z>m [Y}/Esi0B`}`1f\IWʍ tzR(SU*a '7.TRMӀ{__ߙ*5$Bj% V흙 ;ǎ',_u&}Xx:9{1MV3lg}wts#ms6y9H}F#7\hʘ1" /_B_56^@_7oEFr+8p} ,262}Aի'KOzhWÇ/OqiVpeA<7ՏS^B!0Qqo(#goOu1p.H>PvX xfUYqZFt s7;.=:Wjjkh+i4wiQ^C MH8p חfϦb32lsvM̏ᎏb4&~LX 7 %1%p7:i ތ6gPSÄ*nG l w ۹pNƕ2H現)3'{<>Hpi?aGިRY~}=kzq޽{}+XT¦Ng2U)"dsHF{H+][_n^O>t "5)ތZ ~tGT=<]7" i(r>:l7} *A`wtpa-ps(Ngۢ\X*d~#6|o_}p+S1½+'n%tl3 s<LB2|D D\DT5>ӦHXJ67Agر~Utp4jc6䠠8ID'((c 8,ᎄ U6o ]7 BL(Heb<2^UHr5tIRX3UMMe5*R&'GMN 0^)c} nqS<.'3bN n "+h81}ZegȘ>mhړk 'ҽ}x},ܙ)' %֝H/ԦKDg@v9ID? P_3ݴZ4efT ֓M~Hw982qYDVV" ܱ=MEP*u7C̪U"L u^ϽZ@], ʫTD+Id*V&(cFYYMa {D*'CKLWOxg\jЕ/UL-V@rc܍ -ýb!DtpRgk w܇ӻG$?e?P-ӊ!P*E 2bC}~=Td+¤RěwNV;AX ޛd3rTG7TY^/O>>=ڝ.΅wCu1*މBDĘ@rp!3 ]tJy% `U"KbV8TwؑW"-)dRZW4UUW5U!VZ$k4 >Ql,Ę%d"$$!Nfr'iLl]&>f`[d{Ekݨ{9’ wN=BӼ;i*[cz2#U@zBp0{[/^ձ{k\ZZ:/߷wA 'wq)ה]@[wѣ,}MB59I(mhφ}O@' wL{h㜟cfPH"w~#X4hڅb0e2B+ yA@.-kR]J}YUZ#RԴ5ը: hvvTTh55hdf K\] !hxgzbCRv3Eh1g;;ʅ;ӑc%p'9UoM8N@2ݴ5jn>^ 떬~Z,LZ{j*L<|oťU)@;bIF3{~_~GO * 1 2?{ngY5ۑPXP{%/S|^h_]yw;pP$!8=زwv?9|jt`b3W rjKV]%Ygpy},Y+=rERv!{H5wr aZ\  @Z AKEBaX܎B_^]]64TըtN*uHv z'&C&${BxSG~kpg` 1ۡaq*FO5kS.ܭi ׯzc/NܯƱ2W_C:=ӓ;.6zH*)wW.zV$ #wRo|t ]HoIw7w|;7ߴn'ݧuzB~~ŤS<סL,җk%(>3sc;'2ш>IؐwN,  s|S% H*+KĹ!Br;8YtT*4D5yP4/hGdUVbwZYRT+T(1qnA9B{s5fV;FD 4iAAA`㵩ljN2R!m@%FeΝ7šL :YZlv6a1 ӧGhD46CyK?Zt<_+po7݂nl w;2wp?>kX-O>>>׽{]G:}a1;*@'4o 7G@e7<\(uw^gD\L}5pppj*Ň]Ia:y|vT(5+v:>:0L{M[;AJwWFӥøZwGD!@)tB]VV׊pT02;q+kK?++rpF \jwR:i`GRT2t27|@P9q%wʼ.{yݩߖ=WǏHtoϧ.`[\0{bp;smn YLIY+HZ}MMS^+J]$"*#Qَ讑W"#,Ebt|U)ӔUMHK2TD_ n@a{sCCtE HBυ<$Cy;X23gB%&p`pgd^wV/(u:1zd[TƹOF%;ZkrB}-bXMvk8n2ܘ~F {+Vgk8?4ϯ'}-H˾])*}0ݻ{<^w.B{w_OV_ \wkJ5w;[3G*7_WJHAk@P;)N0n٣_o~֡Z! wޟn[4j9op>⚰#+>W**4r$I"Ş&M  "1bpbAʈ$溋u jI#(W(d TQT74вď qLbAAH''x'xCfdh΢ wL>nv3ۈ0nn8*9s>wv!SV#;a16{p99NƘ<.s:l|o 1w|+[W'wC_0-EAD*1n@0g/KJ*ݺz&w/FRw5Io55_|l= pe=ξ6L-ؒItu݁cSse̻½b s`Mn\*ctb.i/槅i[T302? Ͽ#O!poLS ܧ<pZSS}"7 ؝G)Cp:*M%=]uJ_#UhFJ]۷{b(*~?0.[EE#am5m.;ST>Qx ^pS5=q-wdͅ@B t3?Mpd nnX;33HԨ UzB i+1+bT/,+e-gJ՚r.*:\ QiՎ .$*^b wN^:nϱ enfm&ԭ]ŢĘl RMn+B[j mɌ9p+ܹp],=ۏnXDp?8~wӡ[S]"z!<}=e~WM=no.-=&xl8jhAJZj?wUz2d u5Iup/БJ!;#:H*_?N>{'2r]}ۉ cs3gp ;m6bc Pg_ADQTEJU /hAE@kQDI"徠3 2tl: ##È^"Ԃj<{Mބn%_?ϚNc7}DJ ;^kjUҥD.]q4UԮg< 㣲U%'O;zv]1[iCff;ڵΛ6a}t@҇{;Y=~fDD>Zϖ#f{v:t4~!Cv/^bX(~gp災GeOMf'Kc_||E[*>2Œ߆ ka}ӭҢ;oAۆ;l|ҦSީ׮ rhP{eU;Кb8I=*SAUrƂ6w\[L&5zW3p IxBpΝ2lGh^rnQ#ՎvNڝh3KN_,}0;޽\a_ԍYuwɼO$ˮGv8BC ˩vHЅMTk`.veDOb;^aT{ٞڳGwEM ]J'`W˫ҝ.}FG\iؖQRYjMZ WR +D2-w垪*ILߡsikZo)l:'=I8iN1[ u㘵&5'95S'.G0 Gb˨8ٻΟO@Ԗ'8UHG W 9걣Ŭ!h8cuȲV.d7SoNƑ.;nn wGOC7 cJLBNc 7>gnJDxVi|$5t'̫ڙH#&nXL~_n?f/`VIUܹ#ponnӳꠛv˛#__{i]O?١}}DzzYYOpgg1=j2]DB+JO}7Wi5 w1;06ьZw\kА3@iO3v,((Ɩ#c)oΧY̠Tskf[Me\w xȞѳ}_ wZ/sJD#u[iQcS!7Vw+Yb VgڅVeKN+jO'ӢBYKg=}AA{g͚5ebSKd`m4w}7JKvKJN1iS76b㧼cԧ:َ=ޱ.2@ x# poGpjr<0uP"O){C}lY+?Np/J6Wr_U*nnooX[Wm ZyjF~f yՎ._MgᎸv2}%F`J(C)k::HS#ܓFww-FPRRN<˸r\p.0f' d2w?n6ýZH62S>kd-_P)!+83M.VU.xȳ ԜL&^_\pWhksTؚh_yHoŪ}߾YS@ccՎQН{`T/P?΃?t="/&{D pLV* Mjj%m^ZӂNէ+pomoo曯ѓ=ȈjK 2gN%elMZ:H V&&uDUEuH śVk@GS!3#Bx 7m@e#K*= * lU{cnaۇG]$42{ڳ)A/Z<0KHC]rP?"?x{S%\T9doEpہe*iNF,鐱JwT<ݍ'(U7|maʽ >+5T˴͂KlWzKSsGZgK̟՜t r]l MMv.is;GQ3Jjt,(K!{X6̼q /1?F8ŝ a.92zI FmkbwV4NMvrvP(qlаpW9qpJw{\jIq*fdG vrw>;C6F(8Hes&Mb: l*܅pR?Ђqelc"D 6znn8].Tfn@&gs+^PTE{-!ܽ]?>/RXVzRmmѭK9ډ~~o`K!ioN ]쁪9n 7WKVRpvֶu5ޅ>9ӎ}@bJz0w䶎yZsũ5y]= vd,_i RKY9tԴMe. v致,O^Loxr=fN(MN`1 *;# ˇ_\;PN}e"]ZQOgLWNH75'JC\C_IQ8_N5O~TZZkkOܣN!)YG^GGM$w]əgm)1߶,)=3_,M/wV]k_k;/ .axDFNvmp5G”U>j}Snώ#&>J,.IL$W!ː6w3ܡ2W0R!Q5^]M=$"bƱHo:'<.^J1GVorGiTQd5|JqT㐰GW|JEuڱ!pxl]Gxf&g:l; >DEl_NQi] hGl0aN`!6Q/jy&ltPN * @W:ss|y0>pG틟,Ad2Eҿ{ d+2$ЀzxpO/ňދ}:ܥemYYNTQTsU8lMuֶkjh6ʨl֭zYkw D6J ʨo:=g`rjM @wx+]le>g5EMmӼiؐ5|uqu9Zn@I%c$L&5mz LǙ}8En*ۗ-Áe`ធr|Pۦ^^Ǵ4ꨄ(MqfGLH+5i8vq 3fppOWdfjޕr1Tx5X0֏dN Xu+WbGpGOc6ev !k`pp'q;Ŷon.;z|n@yN4,6s%>. d蔥= ~Xo'_fqadgޣVt'$DFe^CB)lǾ~#U %K nj55d#GMbg^&;UX-YӚ ![P1ónqGWOy˿$9\\e>KRƃ ߠn9Wnad>rʕ/m55YB3Ԫ@ wֻ=FfIڱc+> A/p}=3ܔxU*nϜ9׮vHPj322r gxg(35ʨ(44*!``&1v wv*u} wÝݨ̶21Daw p1Owc2$+.EzapM[Dd?wn./q7 Q)yoz8j#kk<x~:)wT<9 RAgwK>3ުtTvh)+,yUew=+li!?leS"I\dyWq3bD.:] txEKt~ԭ_{/R=ݫit| S@& ޢr6Ho_] 7ȢԒgIHC`zάBځVTRZaaS` ^,;=p ze.<^t@U^[>/Y(ϭ!'죌M5$I$o{ 6/ {3;`*)}Hkzd !#pG%![!ow]na'XC4b̈i 6洝{jfrNFѣ8mLrOޠLظ:ftƇ+TqiH $qTXNJA.۹-z4d)aZ2 lYk8ebٽP썸@堎w].d@FGAC#KwH2hz3כa@#~d¼mfgss+;;m\N[<)J/FȢa^~z|= U$ًȊZfDp|+pP2oɲϴaRJԿٶxMy/F-<R;z=Kq!DSG!)2!~7l8"yCc(@%VV#ìc'k c*(!Zs*^v>LId E33D=”RyG& 8Μ2tصS@B`^\|رd"A ɏ|| 糲g8fdˣqiNJsQA ` q5AA$}OWcCt 뵓1%q^ q>Z+YC4 y`Bc=I}lJuzu|{wN)hp5\O DϿKOEtF:=;LOg?>(=^[t7Zm" wzV rڛQ淽l= eޚzS ~ lXeۥΚse>R |7W(gq)dm*LF7yV:{r,z09δ,%C>Z:[ 8rl\+VV:]}p' Cu$W6.œI,yޤILFعsh`ÆxE|||TTTz(2A(FpLg-u޽{I@; 2]=s]wM!A_+CT24/e&B*MFnh(j3?0bǧM֔A^O)WlaA9T7aXwKҖ?@07/l[^.*E")<~.APGF =/}slm]P`UVv8ܪ8Ib%L}A3ӟ?nY%={D[~lP`.;סSl&yzzw8}rK >i Iw}ZEEorp/+bR3ZOc &uQU1">)i_ wr0aV.8vSGx%X3H#~\ILu+U*riLKUe˳iii:>.Jf󻂗\Y9TP$NF-}pa{^1wЧ\_z`Zi#iW|7=;Ý@ K}\^N{]^u"n p&p?vŋ7kQ!9^ K$ :B>=ҭ[?DUU]]>ȷwi}2hcG5wAAt}Tz?^f?*;ޅ.A[I \чEC#W q|U-F ''Za]* coooY@Y֍2hheaepZ*FJ,!$$ Y}>0NocRWM1ÑNAKwagF 1f a4*TKݽR{!0ѭݜU>}kp4 @#DvR +䰁e44Hg/Y&Eb%a,+CvMAA*G_L  >2ޥkAv _oooe4+F4#K3d5"E)0pP$zNɩ£93f,RveAX:m fHSN2X ̙ /0F;u!?2(Rb ۂEn#saǚ w7= ͋mBpt l:%vzE胊 /.\ Lnn=V=0Y4t=b[" #X [ $sq_ge13]"v|r.TwK$|T:؎$zs]+ _ l>ăߛ{u5ĉbp0zw~i53a!{I 4B@3 UZFɩS2Ҕ 3g+Y>c`5Iݶ۬4r$bE(rd0wdzdOwe>Iup7W_}5a ըp:op]Be.I |WJ&DûN=*w"zB;4`#1;)/46=tN -a;k;T0I9VxyyNg*Y]qQ :>PCՇ|0 |l$Er}OQAG0`ʕ͛USP &)%(;N=2r·KȔHãh00{e..XĦvQ22W=2-fԛ܏bc+|v߾x!G./^Juk!|~ڮM~]p>){?:b?e{ wxouc^$|/@|6i:83˝fo!=55w6SR+: VI`;`($Q11 q#;1xni.wofZcXAETȅiܔ;*tkXsn}u>[cDS{7-fORc vp~ m|*=B[^F4- _@?P`oWݺ}p b #3Jw~6$&ŋT*hd& ngd/6}犑~|*{B{!_xS'>sxת4ٱr'2Wζ vG;3j'{ Ȯ;QؤXR,##q&>o"p椋=RhXf`ׅ.ԃLlq_ 4ܾ}qVɃx֙aEKԫzx-J~{avVUUEt>5W駱7WztfC^(:d8𴰉[z?>b$G]vꚘ9zGxƙG|?yaIS' h*@%:#I/9?E1<2h;pp'1_Kvn&Bm4dC' +qvp9zdqS{SLB;?PdW#=@;;1f:o_濰}x:;{ygaxxoNxFՅ-{_lgwv3p?MVKƻHoތ=tȑo+4#8vg'9uNH/_=r$nf;ۗ7G#>Wpx2V*0{I0i>n1dRd~l(IOF-Vj.IW;_gTƒ+viէ>nIDATyq:n|D8 z^Knb vt_Qy*Ov>0ѭL֞]4ߏVeL;0;iɑr3xG=t$nq >ff*8 r33SlScYTT9j;1 xd'M&O$ 8 ;IK8FM vUb$;W1)6b#R}0H'ѵ#pvl7&ټGGVju^o>uN3əI]tA2_㜙R촗4I"^^I kք?&te7wOlΌ`w_wCqΡ*}rDXqjm-CQ];(&M|[f:Kj qgr8 HE`O{g>{ֶիH::f(| fPu٧}v v/dCW`…)) SRh w[1HIZmMo]wB`1T,X^4b^!4tF^Qn /]aOK`@̣~{T{MkhSUSSEEg }pet{[.Fco3#yo ǝ4k4ܡ[du;ik|(T>mzc?]oݘK}gT8]wR$kr3ƬiرX#ŸQTwtŋW\ac ܡ,ˣ zcH?;hM([7M?+&G&{:1& fw%kj <xQzzѥaàGEST~=_$#ڮΪM]Z777cł}p `uPCt:}lt\M 3H#0wmooк1H'DE=.ذ;c֭۾oʶmjG>оsԨ؊ ;B{Du ;a𴜥z {v^ 1%>ܹkS'w~%g~&@=.;=ɼ M!???~q REs[Hvvljloo`.{qC+ltψr wss!X~pL.#=;3eȁю/mxL'`''\vw3vSΐzY wc;W]旅T3LkBaPկڎ־|Ώu0?z?_j]9PUtܳg}p{γu]Ov='~14%|g 4Ʈ؜!^Lu[V_\3+5)^7fTp0ko={Rz',IV]3il9s&Xi<.0X:1:p'AO ;bm:܆|2\J]ls5zknć1И1T7ipOpj\Kz[=ӝqf{z=wDV'/֘񷾻;O/cW[mc`",֫BlGܬ)> Xp3&N-QӍvBw[zP*;wu&FڸqH᧢j*Ǖ2d pwG_}Ȓ?S 8>'Ǭ#|ɿo]yv l6w nC uON //@~3p'_G{J"dn&; :X7qD;7>;7qݹs{OoܰCO@'Fw*_ ܭea }p;B4s ܾ;ĢPw֞sfX)E w8sP bh/@*~g0 #+d f*ߍsy\L' ID;w3PGINOWCT*~ƺp;>|Xp;%)IŬOSO].N/f7 wI:Ξ]UUI]wЏ N__Go]x+ ,]aa }p{sUAG=v:ƌ`ٝepʨ w^$K 4#ag 4.tLg0F:NtP6!)16/mρf'2%s;ّ'-X1m^ft8ɱ\;v/Frdž~M^]>{1aǵ.sYdt3]:B}pѝ{Ytj]`v>c{v8;55DhE 1ezl{_z(o*X43:d@Q<BFQDtxMq$d5-#h/$긹yl|p? 9]#;,tRkVi:L(.l!7j6KnfXT{_U.Tab@ չo>tvC{{glo$5!z'+U/ 8..w'b{U'zЌwnY}λ!w\=)&2-u"iM2{q;wKULѬUOdL<{{6}}v~Rulllܐ^>ut_^A  '7]}ppg߶ed\c? w VUŢzr=e7t>6p75 Gz~rixtQp't wx %4^r9jeq"y] ^ůqZ~!lʯZy4qG-_mقG[|Vڲ~}h2&N+;F6ˉ<vSIGjy)3,wg2p/r{m?`X;2okw!$κݸ b;6Ch5 nEEkrDDK@1_$QcyP$}HЌ;vX$F I0ӗ Ϛu19u D>P H1xyyH4(4>B:} ^G%^rJ^ű.go%{c$oAkps]/ŏI{{^~|c8 .`-=ÝK" )؜A$yeov.Uϔ{,ܭ]_Ob$F<#/IΡ\}$arNڞW ~t:[8ZQyLvCPROyPyADmGXp/VSHH|0`RRc6IYR,QcR?YoQJSCS>ZkR]=P#`s8>zPRg\Qc_W\\ w3$pFП *KU3TZTVSǗF_Qh.V`n"^?eǣM`"XuC@Ch@?лbŝW:JfIdxVݫ^-I>wЭWgXNPRmۡ0i|lkSrf,O+kr=yxnrv424PgKsW>XEjmDLGd^<_E#UMzO^dn~jgy|X^`Z̚s\WDeTUx=8g6KXsx Z G)NAB.q/IXܭpBiijDzy1l b3tlmb*hf˱?ϯCfcYOo`fPb!\nw|LjW.UHW`rz?sQvn-u&-F?vɐdyݒ@T3|xCdt8|?IDATx];ԑ"/U}۞k/Q ZpDy1EnjћÝL}Ė(wEZ! CZqY}kV7<j׋0Jq(4& ]kJke aϐ|F{)3aOA 0Y`&Jjܑ=cv(BE2k qڭTU6sp2x 61Ɲ8_VS0ܞKL*B{|8Ui)x\Ir=adOUwIKE_nmMvPw+R{,&TG|W8_Gts̞;:T8)Z< %GNfyK /ZH/AbQ\hGSeq[_魵q$ѣf8=w?Gtɚ dFhKgwս8KkjG׫Y3ϱ #Xs.k]墆*.}v&L;-xjf\UN@zCl/" 9R!_3W5úE`gGoš.ABoj8BN|W.YfHJy1Y"|.4V_SnBsޱGرUs^ؾ tg {ѩQ[科+a'%.9Aen%=.pמwמqS$m-qt"O1|%$YnQ9]t}>$h~XB NFӸ,^xOٺ !<^9q +b n9pp;}C%w= 9L(Py1?SDw[LJ؝'jDۓ3ʷH!M}zD)7H\6ѐ۞.w3g7StoKE7BA8*OID^2}( KeEƕIzH>]-}w1NIxnT?%Up?s1qc8 i/_J-p3qޖVi^Ld2^WiO[6B^\ Co*Ej3́柕a7mi!Ci1}kií>t#slY3 QEgCgɓ9Kͣn/wSYNȽkS.bg21)bPnmÖЄhu1'q zgЪ )Txx.d7r:Iy;*?iIѺ.4F"Tk}4Kkbk$)U\j c>mǍL+d䮉/z3TIm͸3)ړi_S̑rh Y$p/c*HqcM $y>~(=сWB@v2ῳw6nP"YC@Ww cu|09\lsa@w>J!.b*Ga,zO}EX?+fBRn9pߖ/?^6-FL_,?|DKR5 K`"U%D$/&IUӳ.tq8b[1)du҉{P+-OhN\kl$8ˬ6ޡ h=%:6=mkhn;!82{bҜ /$VMWL1=d<7L#/U|'QOXq9s`>u{DCvlN4ρBq,P3JBuex1]e@Lvti9f4:&}VnZ)TĵQ'8=kZ%E֕ $EKd$r.Lp| 5픃Ut~~uv*5њ[. \ǿr>ΝjQɸ2Qo<|>LOKwLGIpfx!QrE^Ci֣`e!{ReYy"=Ev_\dVC@sGiιwcѺRJw0{Fv]Œpq˷\-{xn:Ҙ8CNkWDٿGS_ZМҗΥq֔%]uQx?&m"<+<%3JQ=EO4IJP[+ɃTIR 70n@ZLm>i.hGq ROFZ]~eռ6CBF,f-Eie DvAP_#z*Zzl[nY|v~\}S|NF@t/K1hlhN rVd*zyk₲hJS?GGG)2y-לyMR|G'~^=N½JMZgw"V Օ,VGr ۵SEo(Ky?vFsyyՀ2h~y`~I{^[5wkxXC}7f",k^JqDZ RrS($7 PK54HnݫP=m B::}nĎBt-h>cnש{`'`;S8C \8[Ql+2Fgc: ,ot:Mِ9#zyLrЧסdWem u^E眎8OQe|ù7&^c"-Ib9MNKIۅ9m _*]HkYoDftq[sЗ=3w _\ a_ W|0BV"Vˮ] *r'=֊eʲ4|~lj&@/ <;bAkx$a2 ).<=82<| r13OsaI)rٵmArt^ ,H:nS`6͢坤Llowt#&<}0G}G7$tGt+j I~r`n!=8 3_̇oЫ*@/g 2o?CLzK F٘2cJvSmxl>N; V<r (a;fМ2U ŋ8vaw} s`۳4l@bgo5KR],nwi3a-1| WWipiZZW{y{X}arx7H%{S3^E4WIVף"`1xr=MY1G)B%}t/ zY>![tyPaUN_\j ]Iv#00Uws{<}>#m6* .}h!;z]`Smw6%"?L3I EW e DyϻU֓Iyƹ]^6qwv/R]R]n"!GL;ylQ CuW!ұ茇ͧA:-BiO o[~NedOmaZX^nYݸ0C?Ýu5* Zu!O <"Y=?)Ir({znIH7,޵]4p 뾡*ʹ=asx]RmjZvTe=]m* '=TZ"ЭVcc5ct2ֶqYOmIc_R=+ȗ9Z.ΘYP<0d:ۃ8?lIn[[NkN~Kw{dmb)"Ft>aM)gAjVv}IgY ,|)//t_<^gSWEn)8W1(f]}o]_W,{7CWG7Ҁ=RZΆѠ惝6f)UUy7}=Ey7$3g83ݑ7|P}>cIꗋuiwJ|doo s@gL'A: aߞqt7/UaNG t z֛Q譨P-СbBvg/v `r:(9:Vwm߯CΔ@Grx܁<^&%VEi1sv˪iNe @v.( m'G,JOUF4б[81;wGo,nb^޼{|Yk12t@ EyX߫o8.^ͫyrL[-WI;:#:_],-hYit?Yc(Y]9QQE"B$ҳgimis]cT7~f=p R @b喾rQrg;_MqmFpt r<^Q帶\yoص bw"q}ɟYo]Yn7Пzc]i{]%Г[8;rCWȂ.:u~nsFҷG@O>_oX\誙9~ɳ3/˻n3: ?z:?I8z+n6| X먷mG3 %Jx)[%ysh>_ l<z'_k~p\+llלٗ΃u}/TQSN~gm3t7{5=Лvצ=9YX-uJ͈pݫfkā<$ Uq@c+Eܾծe0::uA̠g}<@w:CٰM8So@:&7:%_WnYE.+!ͥi qF+x`AzwMlh:jCa{>ӽstDN&˔!Iohh|slRs|K01?6{f,UAz"j;8j }#*r_=$PנRyuDNE,!fN2}//Ѩ[¹ctrޕE=oqX@'t߯a$Gl|N/g\?vhK^|sՇtp=./坁nZ"ːwcm>=guv%W7ң޲u @wos4jZ:v{PqbfbP8nw(֥Q5B{ݝYYo\D)k tBvb)igo?wS>|vuvk8/xc ESoٸh? CG^-wL\wq~jUĖ֏朕oO,zwWK|jPLCkAتo*%|n.Вz=ie"?Z)C%γWugl]}g@ϝ}jVWN}1n{m}e?:9<(wȩk W' л`<]w=W~f-KÐ޴9QW=4 o,xw.,=΢zorqE ϗgWrt;Źn{sd꘯0= 7B~AJ^VņI=Gg(7Մ!͓f@΋gHs3z3O:r>`kGnqN[tbRΠg?NP{ snIH,}{WK?0=E5;Kz oG. C·*K/ wɓnz@,Rδu@?~`S`"'KGwP;<.3ʇr/w=n5^跅_8)u[s?6dY]H#|ש63vuub ۾ᲰxD~遹'?&W4['+GηTwN)ʖ3D́{; Uf@Ɲ,;EWgsXz -^b% VڿMtm^]* Ngvlòp==ע7mcZ{u!-;GwG:r L?5=fgRNz ]W"]jq_xosŸ#)g?{.>uMӮ}k4w~crqw)mNѴv*dVg}=ܻcc8_GN8VXwێ'?D9O tu aib$!wMh2msVd7ZizYkti tN8ϡL4ɷ;gLIpW5r̵4vNu<]fZT6w)3VrX)m֠v_|oG8~>lHC?{;!E] YAUm lPW? Y6w<)3^uUAukKj={j`_ؾI=\J~>Cs?M ]t N NMik+0Osfhj@φ>57#]rx7%5|j16u?؏%\;IV6`hד77ԫ);OeS뤟gҳޣ6AjhIWk_FnnG"}OICKo/Tc(㔪> ?%u-HK^[[T ~VUo_m^M{aiVͲg/mfipJH.zM[">@@V"~O_^tT+9տstvO8@GP=CAXsQ&quW89Z[vWR<ޜq| sOD܏JZ::tJ~7h#sC_Wrt [vt"P9W;3vSHgvBZt(/3W5WqGlFdTX}"ʥY Nz;'S:Ns)0%#o6g@`:)~P}ǀ@ 7?We@p2ff#T#{jgгޙ6g7o? ܽ2{uϼvFBj7]t|{UFlcu|#H%/g+A~9snXy7c 2Yۿ IYEHdG Wiȝ|sqYo^w,Na_E$b)f1,4*XxA"1e|E ?E./Fy}T?rbygfgGq6KMsZ5CƹN_U,Lkd1.%mhd\ޫvHt~֯'^X'="GNMḆ9o:~v.oĬMT>76XUCߡXZNiz僡c0^7zyךݫ.*.Cp\۬6?`yd)_"+TMlMOl.NJvp@;^v{xN,_xl767װCҽh僊>C_3<$/CB5-i?GGsnz&RA=_vnW$]GùsY5%ݿ[km#_Yz's]өNjރ ]iz"Ց梺\ۯ3ύa(t x$~MyPy `w"Xu<76ނR3ЩuVh@R,yHt}cS6o:'ڃ -΍ q{njs諦b@gt<98\fOd 4K8c8I|GX?jތn_e/9=GAdj`xfQuLP$: i8ANWMGtHmUu|KO&s/lO(Nt.^H֕t,aA@'AuMtpFrgNO? jpMN>W~0 T[)[o븲[J?p:3yacg(k؃fbX.4~ѫYCtrH^Ō>,'ۮV0$3I}`t}nt :DGp@r .s>]K yX\V<ʑa2U/{[&\_L ofYr0OO31Gzl7MN#Obz!#6ZޢVt$TlZܝFj~YY9+uEtp C8߉bNӛf^műlwZ#jTm @5: *woDTJv6 >U;@M^t1}]&H)!7fX&y'1GZ_XO#ݻalx@O5|QG؃걪O;X<=h=>sƛT+S):=_5s,z+k ^s# oXocB$z˾A^'>脥Y~!Tg\: ":o=`|h wF.dd, >qA^kvu]C`:LZt_r _P]3F]<1w껖Oe$X9Q=x8WǗ0):PwDF qۥ R ӰnR5gps#ƮFҽ{{߇.:=8y# 'YD~jEh2 h24<04Z5R>aOqn>.%ă]DW׉xdn3o'_Ejhk3CW-0.@ud:8Y.2rD4E?υD]Kw\@qMP$_/7VN%ѵG%zݸndn?%:}e=CG+X^Nxѝˊ_|lUEL<נzUۅ});B^.yK%30]أ_\)e(5ѽ$,z?˩b:K'ʄq&Gox[SIiD=?v̖aދ:LS1hN8!t.bEkOϟvmڪsP2ŏ3 L!:}P'sMtUNubψ誺ڮG\&5i oMA4F*7l+{JQ,P2RA zaQQFZ⡂*W-^Z B."YCSEd&V}i^o;3~l;dg%J ]¸3u^.#AR޿ 9ߣ޶ꇫo{g#SoWO5BoAA@gXHw?7;ЩA9F'qȾku>r4|Eש&\w>֜ .0a蔁9t91Cyw=9f7fpM&ZՓgsNY L}CStn:m}_suÿF>D g;\w]@POc8c_9ҝ1w, 3=ɮ۬8}ЧVjrU5@ܤF:tgϴt8/q'K&!o]Nmik}C=wPy_ˑ;? ؏N_)OsC:T0t2δ]O?׽ҹHFPMt67O;:!C_[{Uvm7_"+9z=OJnCX"]WXNߧI鐹϶&sۘ9$I:A7,p>3[EKgocz,=_IyJ\3t:!foLgjXtt8h} XZ)N { q".:& w7(c¥9'μtiS=ϳ:?WA%.eQ竘hN<;rBA~pS׬bѧAe& ;K'TЭD㎾x/[ƮNԷ{{{mNlePTY/ul"~R3nUq >FVKa{MСG_/ Ѝ/ҽ{)!>:0'?¶atGqävȑ.&Nkm ٥:飍m{b"z/@q4zC jr cY2q^j~FBnǁ˼vh ]*x]*@'"MoN=vyL朠$/ 9x 1_:S_@:%S{jbI1€AWVͮjeFj@A'}лuZMADSZ:QskQc:%=:̀swc̓Ni'w.àju%ֽ(Ҡ,Ʃ,QPf7K ɲDuijԞŔВ N@vVsjq&ׯܕziUUqC̒JIUY)>a/"rJ6N*e]J6jt* <o#6x}X`ϼ{U/mq)?F@lOzt:ecw/on\џeNgtuF3dFW02Y+X nE8nE%gb}d\t}`)2K 5TG[Y)eeolP+)nj:NTC!8~WE٭!,5ݺ'qCY\UߏqźnЌ+!ԗq"BO8sSþM'qy:s&jt!|J5#(8(B̂*l~h jY_4^*U_GalWCO՛qH%g{.KaWq#>Nپ'ef`uc,鿊^:::WVqxmj}Ǩw7pE(PlZ̗)%Ai0O[D,l6Df]ј#>T,RlRpkۼ!A)F"Tׁު~m?b H[)_0=tKJ =s]E9`}~/^3?VlSNv%N7:wG/;o"P Ao$INH0"ґ\i=/|Y`:|nF-,8C:#΀Y 4t3ckQ./HρY3"?@h,8H :#D-:݂5zdlX'j@hEZЉW=t^5yUÂrg9߾ZlolGODW.sG'}ο~m-:)7҇,}o"=o4l CWq#gr~霃{>;9.E]_0(b؝Z"KXz<˩ю6:6p6ඍ|HG9)?9)WuX'\ݞT_f_zN39{cKx^G7X/_.-`g# }_]ϗWz}z$Z^\zn{D2{+WlrǺQD.ΫT6GKo; hYO^,ek'Fo, C/hdps$,(@/a >Ѐ9a7=Ty7*aqW z_܁IJ8IWcwHٯqsZ\|N<9:Z%ͫҥ[%eλ湒_]K`!ÿqAm!N'}םWp"ՄI6ݮr&Y RYvw,myGMF6ZViwl:/M&ʃPLm8.c+&/.# Hs1IyJEe%ӡ{#i0@L[Ӵ/v>_Yq7ew}^\"s|\^xc# ]D΁cOOG.\9ґ2 ˫WVw_ p (;:i.մڜ t7JU}/~u`4 o,a& JRεfX7=c\0GvVܨ5zU)5V1P+i[G6|s\0t^q'(@: }j?^Y@9~ýa<s׎;09։>1:no\镧ҏ6:we :W+!f?b4{}Cyw0 }.A/hB_oϳ=5;!QTa 3B1y90?#Sl|̢0Wn[׸Mp`qf\~D {}@A,@ O Hon l\Bw"H.^ʁwr 9]ڐL>9)@3c'{Y(6n[1iGw2WRVm &-w)w1 "X%jTR**'`mYJI,]L{lTD$}{<3ڔnm/߹3wιg|;{Tq0zȶ-o a@.SЏszsY9?؝)6kml7D: a?;b0<FBH$%Pd=@㖎]R] R!CÖ4躁,E,bښE*f67̢?nf ^H|ժ\mį,y p@[< =+w/>k{Iқmn_, <`q@!ѵ"_cQӠX9βB7(]kT5:$g#}N&®IR/(O0I[۽3'/3ǯϵx^~[İ UW~&R9,o>gjKvkϞ晡0I[D[0"WV_Tݕ:;7on}nn/bHfgG?D>?߻tܡ9:6plt4 :SAgI&uӀޅ4ȧ~+R1:s=&V~5hTՔzo.D]^NΝ(gL]՗SW/}&͉I&24ε* RH@o>8\puX_~C5+s8bUyg[t{6pt>EH0055Ւ=thtرϹDPBH"Q e/Y 4Q,bYt ,TE8zYk<R!Y<7C6>p͛ tȷnp1r.~=>a92Lc%3o8z8aН=_p`tB7,>4 :yJGGdWK_B7?ij b%^XzC^A?THQveq2p7L{h$ <;vb켝;Y&=&"qt%p>tJrNC'՟<7tU}Wes M!GǏ-_skj %=[4wa6KD@'o@9GK]qݔrt34m1ܜM<tu}xvzv /KY8RH;; KYo;wzmh+^q%ӻ]sɲKX]IzuO?}]m۶Kξ*.D}1x'&.TŎ9N1mrL8ɕHK5,0CinjS^@bLc*Y,xTZGWѠSYzT5ytwsdٶm*A9cӞa4(Fypfss"?,7ɌTDc_`oI>zc8ғcv| tѡzl ]bwNyk ktNvZQ{`(v9-~ΪA'5:YC,Q Wf?"$8}g23/8vHpV_q'aH!u\nR@g;>!fZt| ۿAp`Mu?~_Xw.{] 96NCq79!|:Rj) n9'%^'syRYggxIo#}S Džtپ}ઁK ٗk(ܞ]ݻ ?!u*Pj<2Ю㒹-`B\^[kUϟHs#Tݺ[F7azM_3Jrb!'{7q{~{o-e?8WLh:Ņo <3W.GL]WoW.ḄX ^ާ7˗8~ܳUV͛ ׮]44O_}"u8^.}9F/X0;we+,֟; lLNL#NJ.񻅽:a֒SmѴێt8my^P =:2 {{4.cLJ3Qm]LW{W˯xsSaxY(?h3|}}Um@J,{<ޖJP$kGnݺA[wSt}auN^z|W{4$coQKյH#uu 8r=4 =aXǻrҲxcHiDD['FzCJAYcqQCs P(bGԴA.~O$T( \L$$ӵlHZھsgo2Σ8T?07F4j|=LKf:qnYD7,:@dMGьt-џGuf:–!$◧>ّHR mzy1MK,YǵybkW*:KDK ԉVl$Q쇴ެG1pFTv4ʺ]bX͖,N)eEe+Fd#Hv!]ÙMwD'ȫ~t7_/h2W2Wv RtsgD8,|W1͉k:evQ_(==?uHm9T6V'l7 |`"ClV' m90iMLFi<f\طmƌmP!JJxQ=J6[wANtI &<߭hh} ]T;͡- #ɛ9M7Lz͵LwbX-Qi:ҩ9G9EwLۡ~-z|%˅2%ŋ.:A\t5W0}57}asj-hYa+Wcr8`{t-I:4OZPV2skӸ~Vvjҥ(Yr>w]L FYc\AP'aƹ˃ފLa8s20y(JR"L,n-7KZDdžssQPt/Ph{,U<|LkNl PTrW &9gR.sghz u׻8wuͣaX.X۶1P:RnІgēF<OoQ RClD v͊FMr1LE[HaV#)*HYCQ颴0WZ)ԥ sMGewof&>V_ۿ4uմ:E˽aA(nKA7U3pIZqz2)MΦ V| A${ŏX<͙{@:']jh{pu%#4א^" %&蓺uN\tm*s3+hkA-jˇ֊j^PbHw=瞂I IhBt"t:D>It˴531ּڭ{cĆ3G%Qӡ *Btg5 Vp\. wp50NKoK_π"3r^9aGxq:h~@J-i.zu)~g뽰z m[I*q)T9F3Oq$z TxvWUt 2-W.DLc[΢w޺釿jޅש~tdfĨO{4f#TFHɫHY{Vg19T*9.}N4VWt ;0 \NH*ϩcPn!{hnH|҆㌜1NGh 듞F{ۜ41>7<@w U!]k ^KqR)emʁa06`TO{;t:mݻULҪw.MsC'ҏMṟ\hH`}ك2?x(?L-IhNr{;++!Cp,M9藣b 5 2Ы3,:2\-zb+c8&;@{-@# =oo ;vqMHwn`eH8a$Lpe"gs9H>9+.9;]Ú) 5Z.]D]Z. g FCC}g^?*mH˗/FO]FhNpXԴ]ĝY Qǧ(tHYtR(#<)%B"wogǾ`*0_SB{̘'hbbxcҒSOnn +6Y9?u lUOں9xw_`Xc+a cKEFX>GdKrݗEJ;;5sٳ~6'?6Οڵӧܛ&rYB96op1]l^_o gr:=]{} !D]=\& s?(ʳeԿ!~x=cZ0"پ>n<$}PG]., M3EU,-S`ma#INiWR$#/"j(6HiF˖ͧzRЕQ엸(`$utZrG8j֬ƣX^W41I!>\t tـ8*3+-GЪaEW9d"r1/y]m :[ ]#Gϟ)EpoRZ:}QCtƍ[>}q͛sy8m~=ݯ?S."vR~Hi_߆gj0:yNu6Wwh ;_1Q9d{pQX"O^ZUuuE6zװEhx5E]jMUWTMUBFYae4$)ܬNA@rza5$ ԣ /UQ%5C лU:x54UhԹ6',|{͂Ҧ&TYLg'Ga<ɽ̙}F`>=-EP3\G,; &ok)޼YNsfNп|9IOEw.B̿j.&z{ر1lϰg[vɤcGEl )!6iޫX [YZC)Y$&HjB@~4eZf [7QN[|l; tͣjf_)]#63)xNnS[@mb/**qvP$Wo&^@왲 ʶl;3PG }3[Ůt%vr~K{̀e?@kY+g]. % W/^MǵS'N'=o^" {:쓢E"vROrAϬGbv,WܽY '^681C{- z0cUSY@SDU תJfU$HR#YVCt]"tUtw%? BcRQ!NVpm֥K"Bp즱[MK"MF` 8(BP✕+-ϬGAa䙣 dTo@@90NO}Ieߌ̼wf\֙zL&$3@߈SgO6|F37nWL:,b,yvt~ؽGGɸ]"a[!};JW49fΠ|28<3X?sb7v`>v2< :1_v޽+e]@ɠ_NiU4^M2ViU|NE(J2dJ3iFahUN+T׳sJtPGFT ; h&E/mʠqЖ#L=8e3Gt'SЉrZ,KoJt 06d-D{YoA9icGLuZya|<]D=rGι ?fàwMx9{B}Pp_0m lX˫(95Or~x vc$Ez'@^XѕJhB蚅y$) x;AhI͹pAoZ01|Q;ں*U!&1UPT!O*+$7p=놦 l2J7h>@{ {hJЙnn2Cy0 |VtI < Fi7Ahʠ3ݩ@?w1ma7d41i uEĨ42Ʀj& 146L V#P ll(aa|_^윷<=ӆf5r^ɰݝ}Mt<4LA}rre6-s;Ft䩚֤^Z̡EuX;Hz{7ȸ}xl/5`8\@4>'!c0RQvMCFf})DT&wЃC'q5jw -*r!bwe;T}:/GEJ;~+iLhOīo+!AqhwW\򇅕M + ?;oxHZ kaJ|MFԷuv688WG2nk!>KOטsR'! j,~Gs ׀ Eyb߷`~oלc)oxQ )Ox _Q&@jaa<jt(\95ƫaj-;Fav(9qw$+W~״~^!vp;QWnԲ=َ݈8yļ9!V^?sq.[K#]ڿwTƮY]@᭤/罽F˄ `^!'h5ꋣYe> }uz0+4Ӧ0\)ꫯF.7Ⱥ=ўm"x@ . Q7Or#uh-Ǵ)WCtnloo|&>I(ϛ=r\s=!?|Q}y 9(2f'pqkգ5Dd$=n9E;>7zʪH rc;O959);'"Hȸ\=BK#iӛ7Bؘݎj#}> waC?mt#D44:㦷;QOoG zζw7pm|p/)]J~4kGڛmwu\vC5f(0)pU-%P3͚ˑ* YC|]"*J0yM7-_=$MZNل=366v;?zg6H;Cxz:d@eH„4%]inxDMMMGa] n/0'y_5AlO+% G NRWW4CQw8PyU[: ~5_/{8*X' ԩSߞqIO',u다/v7^Ys$~Қo3%L[ 2aԏ|`wdo|;nwz{"Rw=pOK_ :ߓkSz 8v#LNR M 4lw:z"eB ظ-{'511N{yd=iYLy88:nRN.vcZςtN/ȒQ-(L> "tj#w8_SfddSC]]]5c: {/^P]lu<;kԡC/1[T݋ք(~M|o?x/ҼKǡkJgcPS0s4tkngffr㹽D=&h?9V\R\ww:҂Lc׽/*"/ bYR$E1I¶k90OH $xO_qv#;rTόXq{"Bk(Yty7ţ 4tRN-zA |x(s g(/}<(}N4u`>7cyNU~z@_tA'Q熔;M=;;N&N?zSS151]ļH1GWU9 6۝@"j#V^paIթW!ݦ?Om݂~o~VĔ'}u#;CJ Gـe@>V 1իc0sQAc:hAK-m 0%Gʒeh%%B\zs=LxX0Aơ=#r*ι036Qn߶CG?܍A~Cňe $My;h_Y2eܨpDkkR\hKmz5QouM39('RRMκL٦]NyG;Zš9l+jG8MgU UnA_36+γ6/lyFw͍:$PY"67*>C 9tɝ]_hW(Oq (sggy+8tNF)0sUЖ]-WfUEo@·b|k9BVbgq%{=$eљT%Jܔ9#a%i.ٟ;kmr@Y|)'> ;q{nZ,|VM1j VmsY aէ\.sbQ*T2٢Bv`[d"o9xFaK]Z=xR+Й9˪/s/iz:^CSĔK15^.~ի2Jl5S#@׮nOn8s'&P[9OPGG3ohPZgr7, +!tM;:mcv6Ib .ع$k{4hyM^~U+ޔq' bݜA;R]*I=F[\n+&v]dz)$yJ@&o2GI$fBWU'zżq8`f1&<"S8&yr=p*yprK} RT$>`g0MȀlJ"`0jԉ_f2ly(N)‰mU /K pgMp.SttV ;hI9e6t=H)b>3\Ou41D P%e7J(!䢜rDmm}}ӟ _g"%X3sKM,_/~  jK'qrS2vJbwV][kFG;ZO4k9|P?fa+P bOɹ8wР2 aQpA.oR2YNS㽳<2 OCsjR:Xx3k dM&ؽ6A,.T&PJq$ā܁T B.~La>+CԷ`-u.@xRcl.GθYK'@6r+>1x-z[9C:yކ }YR.{G75?ZfmOu'H n_baʏO*$**z-Ž:?92=(6Ŗ#jcF'|,v8OGgs 1;17K_ ̱Gk=0'FlZ(y Nй Wn7{8!5['e’|XH#a* "w[^ e E nUi@LŬ6~ nq(m©5 x*U.xV9Vٚ.YI '25ސk σ%ﴨ˿CVl%*>)˪+On'@/;92n0,A:b`NL]{-N̡m&w̘?oLF{2Hw G )c:Iy/&OgWhgOS_e7VqTj8황~?@t ޓůðlL\! E9hM 9]OK'[A{[ T+܈Cw7ԢѠ۬V ),xm@0]LFA/aGRa7NA)s9;tflB،;r*!:M%A|΀| N]Ia@O ^0kp:г@W@|d1݄Vo,9ClbsXmLMSE-j'dᵹja<٪Jؑ ,*[%Ocy< İq=n~΋6: g!)յ,HH_j'Iwg]Y܍;uƬ>W8e笆3Jm+Ap\YSPx)rc]kK7n9fv@:PGܶmIRx.wB)e Ҽ+kOJFqUTxaoQϜDY^Sէ%L'::C"9Yƣ",[b:4s# fС=.*}~ ; "1unPԅ|?*UH wb}LOANY7L©znkz"* =nU~u?P ބЎ(>au{ܶsi; ߪP Бy(yP S@zeQff[ee$U+SĹsld Q+LLI腵 k%:*9ENБ`qϛáXW^*4l{2PQJxΆv%vYE h7ܔEb;rb  OIoela:SNtp_:A3x1s- \OsЯPe6bs9 %@Kff|[RNP vx9߉ ;POhD1A~ ^c̎hU#bO>TA :y"ux_ E~rh*r7I%xFp0xr=qq Vꎯdܨy wYA{T!6xSJ: }Q\¹i]SdFy h'J9@B1tc|^<\a>z~6O>>G9kBwudo4AY7 sr-x tR}Kܖ]fXjX̾EnG8FUK8XG?{_Z;WlBįe/~z<H爵1tLM;z_)y M~ }QlGz IyG>syTu\yfyQ bwHE~v0}@Z+_Ort40y ^ߜ?IL2H굮 zr٦M{f yK#zڧi<6C]uuMxk3Ǭ[LkUИTW#߽+ݡX(ho׀s7_ڵ`9'|.UtM_SU%q;Cw3j/Мo;}H@ҟzO.JБMVur{$L72I߻g~G/t]迈GPw+ #yh;7a{V'rD[б@ћ ~^7Dtt;N-,~9p> mhA>1o/v_9J0o8"Etm# OG,Bv=L?#QRR; F]ɾ!wn|:>4mm]CNE);~6 [S-E9NWsB4Ș]twAr>+fTG!H ֽ߶ |2ra/rA}%:]uՑ8`m:4QXʸPjxK60{W^cS~嗿Fѓ yY"VLюN5$9k⿰ڙn3lxmêZ轋EۣILnu6Y*vU]o8a*j-' ׋lTs 8ǀ]:#1C<3PNaxesM {gvq$']pF|L#%J؅Ԅ[∩Ht ͈qeF3_DKdJ d109(PByKv DͯϹ{nLOOJ)cLIV;-8*7xEGj*@z+c..C@=M񅌢@t#W֦:Wn7 nL!c\ |ZPpRRstC_Kfjt|v5luQ fU0~G.e5]4J<@VI:tN~tVb]0#m_վ5U|\$.tOW};>ҽck%FAN`2=@΋)19A=ʜۧS<ȴ.mSjo. 諤V6JYwBҧ1>ƶZ9\YP>1/>@6l8|x!]|q0Ldݪ#H9vL̫/&P}"nߎ3-2&x|tG!slyGC}@R>z,p =tX@:ďʚ:2Ukחby9Atk=د@OF/؆x:z@?3>Ϟ;@*bAGLs^)̹=EKvv&η ȗUJF nt~PTEN"6 .u .hec:Cҥ4NV 54[9)޽9Gr/Z_R]b-]$zl9Tܳʫ}$]ۻ\[W/u5ɛSwa<@K?3'ol)t"ȴy9WH45j%I9p z)~M\Ibx] GPT&?mIA%"pwdnnrQQbɒN7TV.#P@v"W򕨀_yw._| QX•7QA !߬=( Ost6H/9>CuIq #g\/c}|DCלKLxs"h!ؑnԛ"c  s7CS Oخ"U[NiSiiei%ieF#_s\cOSazwx`wJ%FI:TkUI [2r۠?:_~y mn5a37^Ph5fVsn{ECIلs%7ބ@;tTӴƵ2A\d@;k|4i*eر%"= /S`YP2SD }+ꋯH@ׄ@3x+;N. n!b[ٙ _E:QKPPnAI82+~}'ӚuyRЉ ,sS02'[0ǚ$3.+^Py1cZD"1<4ю|1F!ȑYΖǀ9vcwPFYdc/ v_ KVMn)gL `YH7pСBSp+ЉYD zOz~M;Hx(n7oCΞ:Р wۂlȓ-{<9.UWٞ#E˺=!?PRbz(enmQR58d 8(-87# B={8d|՝6U #eqvw-9҉F>{C5 ׃A7߹ ;壬 v$ÉxgUlLQi쟯}ژ矧 w%Hޑ>p>:Ħ +. ۻ1nH/6t\ /dWd¹_+@]d;H?묺ti KA;syTЏtM:@'N"n.:){`[BwZx4O0^G`SZ+0uǵŴukKj]B0H}DsCA $]c ϐqahGB Š;\wesj Z\A3aCHy=d=9)(gHH6Cr w=O8ePysx#L.X(G;4VCnrU Nҍc?8a\Au$tKY:^dױD񻜘s7@_Q ~^ށ1SsyXSMZZ@6 v>/8¥Svr~_4He,GlVpӕu`Hpz#\S!m!}-*f3ϕ2}y8kss \[QBlHW}0 (CёSCm aH1gW_T<@/=,*\Oscw+zK{v<8ֈ+ggg''Qnꍄuɽw E1R6n6h EsNN xDǜR[]7].i 1KgƮ:zZG|QygsW [V j9hYA[m^iU5s9@ r&\>믳CL8)7fgm-jl2 wnEv O0\|=!:sHEP8\u͆91?oX~o~ٮٿ%>(0?$CE`A$ݠn1_0mӘNv c%$rIu8cNҕ@Mu`'s-5"r烜Ճ4!V&ꎒ2l3\?g.[KƝ#?);Zw9n=Rlf ށ9,K |@_SZ~u_%H&'tlP.S}$ҭr AFYLrԋcՉSVo8/([nq$9y<.VV].gK2.ϞR%(+?GA u-QHУ $59@SxGK8I/ԹxN(U9pʩtOr 0% <+mL /T H z)0sAL{E kr C6,fq8zN^8 *R-$n t,9A}l7bn6Z=Ú黏$?W݇&4_K <^YRIeege' N\A7z~ лUȎ|,*<8Q'Lkᯚ7&ߖyec<$Q=&{9Oҿ=A7VV[@7nYv#~0`vf @W_w([) 9]3u:eP/To܊:սҮ%g R|QQ .TJN.55򠥿s߅~*\I72{+A sRO'JMt.Z|`AW7s=.47xWESzYѻXǍҼ5T,2B KPY7O_LjQsCѮh5 ' sH:mw/Iu1 z[/6I>8D& O>Lա>\5{=d_ǎ>?R`4~@Ֆ7k(z.;(م/D7ۜ̀Cg9(A X3-]ru+lZKHYee9Ui@?'o¥QKpWh1_D؞su)й|\B3n=j/^$4g>#J{,uapCe򃐘(h e"b \bL1  ɰ>Aq"ֻj)p V(. t:=D<@qx kCv,P/iC>7\R27\!ܕ gDtvF76t Rc։E[ODUV6@pt9A8 `<9O=tpBa6Rioק徾ҭ tU0|CwS o?_[xH&P!l$8G⯭5,J#u0tMR?Si=W,c[_S;%bǷ# Fv{Γ_%FUf¬Ie'."e[^T-nq\C@N).kN(8T`9Awe,e5 Kg~ܳ#@󵅀OjOҝ&ۯ܄$ͽ'8͏5$.,H?.th#j >;O`lN^Z+K,,|wm%v< X,|yidSbB̩8 Py4,NO8x~+Uق~#-gq :@en@iҕ$D5!ϳ4ӗ}\`1N+jFk }_sǜ=퉰W%X̍km.Mu]kdi&Т@k3X+ƏX-)M5H:8 G0N!;~s_V}0t7;?$:y_)[c٣/q9@Pw{hmh0w\r 2S]ƥ `gA4ۥe ; g.9d|M5`I8 Kʰ yЋ{ OVb~uO+Uق~y _C?K΅f9rRiLH7Ep^]>f|ݯйsS8'׏:@OJ:vTM¢vs3ULkN3pW?^wH;300WBW=kj<>3ȤUZ5ud&˔6{)sF:3Pe)בF8pNMq9WAP"xC:!Fz۲% "Q>Bɐa3l H^V4^==- ;ٚڟJU_u`4=lAǡt.ԝ+>AgE8g'!4Nn% z]3ӺI<|՛A9I[L+^cȩS|!GK01Y9~5?KӨBuN+;7]zKgj@|d$rS+*fV5.gVms<-::VPWI?Us "ag䎸YGX8ļQ~-=Vڶy_\5 ςzȑSK CE/CC={<^΃stγx<3o48' Y C4;?eʩ*Ci# ܡ S歝[1~p0m=YI~|t8hネgyHCB7L9]⌿$KDPHG 3ptc$+0fg-\fr>? Yq n8}D:^K =jAD}6T%fɽ&@|f,A,ݘz~Sb 3|Q;w-ײ(Ѝb^:+&@'-Z޲ԕ:uhq]^M3Ĝ bnQݢ픿 jt.Kvژ#AUixCI NONYC'fH*7<\DY_<聾pһSX2m[)}SS}6DAqg9Np|Hi oZ0t4ӈE>{.Ĕ zw=Yà[Bt*QouE:mR bn9/ ڟcߡBerBaL[63ŧ '~(e8lsؽ7, ߧb]~.0s ]9:SFn=]ڐn]h;MdŠnҩX< Y]aݗl[#-7jƦ6bwԂ9Qgw Fg,y9.:/8.kq;Ή4=][_΀?9 Q+0wn:=༧F>#y]KG)&3&E(A9;^lS<׹W3k&yLcFRr|]_O mL%iVS^NqUVX:trie-kiv!S~Sꒅc02tbt\<|G[cޅkǒ ;`$Q֘?jej٤@9jQtKĥeXfU*'z6l1_QWgvt?|WlE.e\sM#D976݁Nҁ@7Kl6U{Z-LUa.^:O{uxgtԙiVإT 0ZmS$yz JN8 Tvdd$~Gz_qt>=cͦʫA]2N[z(L7*[7~,ewtOK;N+HRu7.%IZG9U^/^MTD zJU) DlCa0|<+!8:A8u+no(*o(`3=+W&ttZ:AawHgrceT)\©pXѨ:!:Gx

        Ml#z3w/e̹uf6J?s6A|cQ*Z+3Ys)gD' H[e8R(P'7+R8L?[DzG=OЏ2H3`Q]W穉|X/YWC#DqS)E99W?e)*إIb&k^\3Ͷ+sI 8iZ5ܘUK8)t.ܛ_~C>CcDj+gƂ^8>w@޵Z(ow,P8Xtgu܌f9̅ҩ{,u?lB@~{8rx1M΅y gN;g EQZaI3]-//d7Aw7 Lg~|Y s4t>#wA){ppdE_r7_I*)ho)Ez-b*,~3DOw9g;Z#g@!|<tCaj؆960Jt{EDk™F3e AKrs+3oso÷?6T>[)N8kq;R~o"v,PJ(wV>ɝKz=%Ļ?Q !;i`C- V:K:6n uWN7:Uط-Zҩs,qN\sd/ >"ơ=B7cQ)ÁQX'tMq+X#79)^z;Н:ϓ=IH㐮!: 8v;(d \-:zUΝG;`~8$cD'0qg՗Y،V'=sx>C`ntb*.̬ي^P뼈5B.-AdV%:sAHGЯS?_W7\гE(m.Gc@ogq2[;&_<Α?@=?Efl[KFm@BbGk'"x~<.SU. %W5y*HgՊOz&*R@U}VRIzOK}sB.6=S $?h J* FPiovغwأTǢd{as~޹=of|$БiWmr1n!o3Ww*zaz1{fN1[}M^#Dzִ'@M8z xb ƮqtrutaB6q)~_ҫ)-ѿ!YHW;ǥ9@usBAKvFKKK%K H]^\\s章[`XKTimZzD3KǕS ZSՏ O?uvgrP̗É+jo6e~װqz!z)}Kg'Gt2}\p[&7)F{:x|a9萹@lϏKR3x'zNYqہnH_3r>[Y" tt.@|Nu U;kf,(a6y͈agW.^Tk ܅c˾%?JV 0W7NЧtv! ;r!"笑}㖤ƥl/S8ܵ;c߹xiq a>~hrvIʁ\jiɒQR:o/t~uAJ(zsṕ8zjݝRt.}q5)g;,I?='Źo@G \Bbluޫ6u7FkbI1)|4!]s9|eh\C1032ohH9T-4z%o@@t:HG%e%_U)=q0 rgviLv@ TE>d0.e}Uo e@M9 n(ŊNpƣ|u\7[hwbkm$ Z*!wjBЋJR@W,蟲o?8%{AN W *?,K鸂UqG#nꪉs(BdanZnjAb4Lхc'2n۠=AGN $@g4yK5 NĞ)X:Id9qu\8*M9uFr۞wlȀ[A7<{%N-] %ӽaGW݁$v.M6z%")/zQ sÃ7iN_2>tMaTQZПKoOo.ɽL%=LZ#"X}dts,p`=ȵ+\ܹԻ6 F|]p2|!.OwC$_meEi܇z#UFl@/!n }stm䶶u0UCmàxhh7cq >s~}@?~aw] 9'PvF-h;'S1~Hod "{ k'$',>G88OUt Ԟ!@B)˿[h+C ([/W:)DID^/{(yD'pVym%^܁Μv[π.}tt^E玵lfnWBW>%}~eA\0.X$! 7̰a $DVV۸Z,>F(P[l'"ZXLm«BΙ&q&7yd/_fUl$]DzW1$#L0GKOާljVۈK4p' mckٮ6Í[@w {Xъ8 iMF|}2w~(ձMd)&38rq}e7$f>z* طѪPXfYz'*>9(fYtN6mM}~Co]Y*)_C"秧v.ҡD;ȗXFC6z^8E<&A։$z֏6^DyIzj nMB|o tI`jEx&fƿ pͻ/2d<ˠBzvjG;; XÂCƩ3"|z QNl>Jѧ~%;=rs`aIG'OP<IF՘S"3>XD&Z?`颜CDzΝ"j8ɵi`*#d3xgQP:0s]" [#ښZqsgt^V% \+?DCd`K_^tstr{v5)$xROӡp|\kS=|K]nF*iN/ZFX!\&ja^Aw*Qr:% G5CWI6 _MLH׳s''ZXu]zRj"Gvwo蝍{PњutW |X.)Tu=2vOװ= H;*kw;],}gIAxsL!}y^ϤjN:H?;4DWgwyߑ9Z`8IK,qOӇ }.m]9㫘,@X^c(?яYkmC лNMѺ 9/Yn/O!~jkƹ֟A9O~ 7Hm1Te s7ӨG9 $7tiLq =0=}?2\ŇH|NI'|q61yev<c򽵿-|u9쳧7t#!G %X}bzΣn*K|z!-jx ('L=\~ba!W@.<4Z{:>J[L.M fFjԈ:tG:-C0^:C1"#ˠN-rth6\/^䅚o»qceSAR3Ob .S)%9w:.u:J0I?AN51KYx-24A@W#4nFoFhti:_8'?.h#:ݯ.\ZNSVQ";[:L>*stȰU=gv̙ayE锠$җmO-^{^6*݂t@.3 c@G0Uw{rN#0z7<=8v[?sUz#~=rN[ܴB*%THg(-fҲ~nC5a&S;-BlRo0-{ˤ[^}@$}(Г$ YESOfstss70FXShGH?Bw.OSZnZp^5\UkVziD9>"̅i=Ryo^z'_W`k;v Hy *.bCXX`wnnnzAdB+!"NQ/E%XuVO;ƹc [Yw tap<RߵI8*|"EѠqHoe?EO߼<4xo~A"*NHw@=tqшy)&qnqu ҸL)dt2oq8|O:z'fX`wUyKUuB"@OsJ>*7%n6.G;y My;G8 [YpC,HYȁ,DOEd Ls'S`}`/rlsER\;aEJWbuLvf&I2->~Mk]KqkҋK蛘)po[z q$zFêKT2uo"/U07#-W7nܼyco<?H{g G7Kx[zϒO{;]sqW4q.;eoݪos΅IJ#LqUu]<[NM(sw]ttYY*nM ηn?pt H =\8q*=W ԓs!u:O+lcqס<]M'1_څ; ~ze[<}m[sGXc)T`=юQ.de; |5Gd>azW/7%s78h'2u+X^EWh"KGoX\G4Lt@}ww]m5^)s@7muu|Tze:LQ'89ɢvp.A%y-@m C㈁^MS_蹤 7.Ο;>oK=Y,vlԣ(C|qGCuKȁz<)2w %^rې7ɴ֡g'|@tܜd tUKC 5s^7JZ$qt^tqnve^%}~σb#a}H0v\ù4ڕ4j˕}1vi͋uw? [QWaS~8_M#*0tݓNkj@];37%\h%s(?O@[{u %:J;@ԍW."G/?WJq$gf$T[W_ƀקP;xr7^ ~[neEt|6iKN\{(Gé/q8R^pD;/_PD=7L cQ}$hqN`v-ru7G%^b>q6exsv,%D 0V C'\d,M;0yps۹%ZS?~PA@'T(H&%&b>΁[ ! E $Եg=G9} uW& =s<s.휯Ω+fWM཯ۖqq%'YYC#h:Z<^+=e1)QH ǣe ̵LD99IOsPdѹfM7_ju^u]}꺻7уyB^h@7]m_jbQQ)}1V**mJc23i A. ؝3l+9|8I!qt\Km!9]ڮo OS.鎁^:/=lvA%n3-f ;KSHٌONsG9?3 -͹7eiuEзޡ֏_ ~,@.8P;ycy$+!kJQ ǣIBg+ s- zޓ֍sxa::B2KoiLEg{{3̝^cnUK'͔KG|d&>w4y:U~sAN:E!-sej;>(99oЎioun}EvH^̭߯}rӬBcXkŵqq@']b=ψyxײ@g>yVZ:Q5mʹUCC,}#wĜk3!) Q4::9_nrN3І.Ip<繺wcp}y󬫸K:SZ @tz.3 |)h6ӘSft߈L= 'Jacp'3cnqqηt~ɔ^޳&I' vfk\6"L0U/x;]oDpr*ԋt6;4/piS8xsmZsww8tqXe2`{;:R5K7LF%uOe_{t94*;4œamAx=\@.X0۶;'қzս(`m9͵ sx0ʒP^ )zCYq~WeY33t{I9lQ{p7Sp~ _:k;9nѻݒH媵קkfCF@7ƹ9{d]CmCGW0 8:j~soImtrNR?.ԭms!\ز-xyɸ7Ѝ?,{Q)y(λ˶/Ο}# 0X--:L%wЭ⾐tڥANq ^=ENu?'~|t'_ϱM/+3#:= IL{iQz.i9CHsX˦}ٞ|;}@g"ha/7(- @rmÚ?^{ۼDzOwuDyyWZ٭!8舮9y 5-i9_QǞm΍o6g44JBKu;L@QŊ@8BoO署39%Kh1ύvdmϽ/T(%ZKσꃕD9o(V2 o39;g|*p ꣩ݗUΣ\()z9E_bw;WnFo W<ݸn:}9N4eN]h>LnÙ 6vőل+ɰ *Yl5ӧOGql~{av*=Dh^WlXsgˠ4@)-켛 }F}ָ||X^e+{q] k=oy(a:>)3Usoh~[.ka6[g\5WLw#z1<ӑCvMCtp?gz<!Q^zixK9KNvWͩBNHd :߀v/LWsNh 62y5c6O2̼q1:#}sJFqS.Is!R],"uE>L]Lt{hх=Rؘf_ԟv$" #h+85~aVt+ ѱ@gs;|$^sPSJE6Ddgw5=kLctYм*=2}&cʅ Kܠj7#t/VPtu"-X-t_*2lP@n6xaBXѷXy/T覆&rE:VRoZ.Z[&a(S.EP[vorPS󊉮]ˋl0̊MPra/3fX'ԜH|G{,?fZx&.g LSzNU"~DG(,oޑj_E;~{(:;{P=ry7իSOϗ0/ȲsJtyV讞&Lܧy{Gt\lw3սl| &tz'~;Ju‰;\ye>`_F&Ng}s͏7>*+I9>_MddWDwq} mayQ ﻌ| MRN֮-VȺl҄ΥgԻ]_o^}R[w0#e{ }%\`_gg ϣ@P^JtJ@ʲ/.;h}Ge POnSo"9Ul \ >Tn* z!uDuyn"zzb $ρxn=G|&]kզ'|ׁH~&APqpY,rRii^dN53"=Qcta/o^n)ӥN'.5"e ) IsyXsx^μ7g"=y$; Wttoߞ~Cf\<9De~AdDN[LO%<_/WzK~UJ*jsk3rxi+1wF 'lժX# z#})7~+qo|19C]Q?ok*WBo9pHD\׉U]}V^z^ "}>^>.^HrQ=%)ķ۳dZ@{n*Yї]~wj}X~=hŲ̻=&ksdyK۲ךF'ck<'?=;/T@ů}X}5B]"? GUݸ^\&ZtuJU*}a'VՋ%zf:6q"]/ ~'.!(tXq:FFҍט=kX~j뵡; =*+[n,|fw1]IG^{xlJ 9ٸGV Au߉ 뎗J*zW,;с^#[K";3gzp*\ 'd2Yb% . 7`MM]^@l.![Vu,7_uxe2Y^Lz2)tBt;u ٕjAtNwIRZWw<{Yd4w׸  ѽv3+7>yD=UNNwӬ Du Kkt3tb1u~s6 Τc$: -nTy֙,hhs r6bw7 F:=gqnz* ؇#nx媀s}WJkZKـ89́XfN{菩` _ktө~B/:eM@ޠ1\eD:p> HY-wD=L/0Ǭs4;%:7C(~-mcczJGP~ҧ2t+H.瓢ڐK|]yȞO*_4U38^Q; x iUݽO%ȰnwA:i/ ?gLۋ~#fh>e혏16ǧծcJ>avuRB #+H>&,kf=љ@J"Te$>s:=7,:዗Jj=6?#6hV^϶Qߨuq3PN2Cѡ+⿧_^^o"W[Y^*Agz{ ?m^k{>hߞè\L{2z<<ɿX|wvkڶ;?6$z=n(Jz +NRmb K*^y Ev+/t֬-7&Ƌ*"Xs:U}:]@'~³XA^^,3 au\qQN&otB8c].`ٶP7;Y.}nzRu}n/tz~z 9LZKлuu!zg3J/l&F}oڞE?ςf:sώAycv=a6էv6H~==`q3֥(¨ ^OA eB&, ʂٓX\zR]\\#rhH`ƃuKgaYc:FSU|7T#]ddz-d[s>EYF:OHr6Vj[Qe_U1deQ%F* *3̍*,>G$Fo.PzzzG?x ,%%$!{A,(4sX/~o5Oڷ:0tGR}n}Oez GYv= eR!`e#?~ńRǸ@Øl3(ceY8;vӦN|u/i=S6d([`.&V"p#]0nB0 UՀz]5Z#Z{V1>maCnb m=|sLtK x+g#jG@ YG_ku뽯LrAt;RJ:14d(JTC1gfL/3wrƦ/IkwiGטF~n}vAHeCpĵs*$^hd#xe1Bk"0g=yz*I@苅[/\1ϒnRn2!V!@F`T3-3=wj#+lXIn5o`D73WJ*cW{Le㸪{)MYO]oPL,J>.q=>w1Px'QǾΨv' -\򛡨5_=){<6Z9V88 }Lm>/p#׎(ts {D{U-*5gKR A0StJ^~Lˁ٘&ߟcb0 Q 3Lc٠?q]9! 2T|'!\. JItS,x0<9Z~~Xc8}Olh+.^UM-fM%?Nnt)-j~\fbQ \.iH00=E0@?ч$8U8j wzhߨʳ5=GsxLϾ_3q?h1.Lxa7Jt~χ>V1,a4ӇcE{1 TShFtnEnJ^jO1L?7zOcI*Gw|g ʞ3BQ',(x> )`*/TWP!ÐbQ`/B VmRX0jNq4 б$PcB (Ӛ^D!ֲӲl 8$$4ϝhѷoFwYPPBn>ށ@@oץtpbY|LS Qeb,hl#{"w[P1w5=C t$‹_vE \ɳm\pU}=L;ҕV ֈ6㡐=tR$jIH;kօ^_O?AwK q$@JJKa##kQ{qf&#&_=TaIv.7_1"7{GT#;Q3'3R]k\W8?a"m1c{Kf(ez?'1E?fV2 ή=?w}88@~'KhB/\""Kɚ;Ll9KgY3aLZo'о!||qI9 ~g O3jaL^AϺ/tio ۃU쉮<9dIOJɾAJ)KUJ|S?q#m*簮wg_YՁuc5/}A>ىdv:sRf}Z>[mUEi.iwZ4mbߦc)'}~<]B_k ՙt7'XO||rv0]x>w4'n*149Ɖ(°43G;?sxPA\Ͻ!=~wJuy"f<ѷ@*ux~8Kww<~˺ r& RWӡ\ar{#Hᘿ\pο7Gk;Oxq@cS%;)8 { z5V A%y♔V)hj{W9Ύҧg:+&Q>*)δx͔FT׫_L/?ꆵ>.XΰojRP'F?&Yf?! |b|{iZ%n$+\uEKQxIcE5ɓ1+0t!j_]TWZ.7Kԗ:]K/Y)P2=9tɛ^{YZ E Ь;0G-qACᗣ!XxsڕÓ) FC1!ǑBrW@vX ZMwYK^Lkܛ”ʖsOQD3: %@M#5: $ 3H_pwO3,RH.(8sՠ- fB{Blp30xm.Hp>&QWĘCew]o@IEÒTU}5 ( tM`]^(>5 7)P+/?~*Q*Ђ*QH`)"6$Y1vv1.Ǔ2Lo^:b\WNq?U{|, (b~5 >J)5tyP.}v}$RnCgZ=Sy7*Ml~ ]( DZU"V28ĵW[W=EtkQs8[ eP-;-^vcEi{,) sPh3n2D<^96ӣ;`) r|O誩:).: C-LtvB;p4C!j| Sa??$<1Tgz@Nd$wPl2#ˇzF X?d^kq`!G Z񅫵SL"M9UK TA-ۘUձQBsV=@Ue?;8-@/׫}_5&#.LJSeO!? Cf:DAu)gŻ Q4bQbjԤx3y٠ޑ/*[UkkEk.@.ާnlZ [;R"Bȸ?8AS}31fźД-_*vԑ_/\?GjMPժ|[.\$E2և*p}-p79D m4(h. +\Cx7q.h] EFSBԅd1$8&9RzAO,09 HqNomۛbBpy71ދSgE@ %V-=PK`"![Mf߬#N98MoW2l82;]^ō)[ Ub78F\-9ϻ6sTD[]I5 ڑp|QL0a*+O$JWԮՇA 1_D3᝝:D"$$I~U=94𛱆C,%3a q1KЗۈׯ_u4H=m?);E"{jր!92ﶂdn{|K8&S#Q\vr3~y{oXɝ(h/)Pl<"yzERrnmX Avh* YGQUT&Ӵ7EFgc,j)e{1Z.u)ezT/ iHSqhCh#V&|ן?2>wyWi{WE{\{{8qG~|ّ3>4oh! dOiʟ7/tؘE Y!٬O۴;{v6߭Bxް[VY ߔnƾ:Xv7"Jڳdfhr(wqr.4p`q~JLL^$>0L@=F;yT wBQ8A{s j5(G}pjE׺E($4kQa8fH pE3W=/Iea,Hm9ZDSvwjќbT^er()8&t^ ^o(UN§[α:*Ջiz4)CD7cUv"m^\/+ 4Ѿz*_sgU0dfȪ% Ĺ =%`.ds~6y?H͋Ǧsw*hg;66Xw O,CS4J%T/~Th؛/9Q:C!r'ВAk. wHdDS uo6gUn=¹ZE^HH fHO@1* E4@'2BgSQ&_'N| s=Qve<3>^&vY:f_:h(.?:K/OcC# ^4r*UQOO;.[RbURo? p`EdYA`F6q߾ѷ7Fޥ&^7 c:,_`|@޻E wZ XWrLTgi?v-s7Ecc ؐ Y1G)"ZD$=ԡn-;cF(<ÀذijJUkx_%-D7INj u 5鈁P9RؽH/eY3O̩pZhKОzJ.-l@MMfLyv`Igxuw;yS#N }qx ~|4T*` }t:dPrcj\6^rD5= z 9D p ǧ8ImWF s sbTmŲ .꫹pK+aN?BgL'{Nъ<4Yaޛ%pVfs5eFEy> 0;F1Ҭb)k͉#UiC)ݣaY!9; 򅳰<RN` ¦J"}­ - N\h#[6|2V݄úTdp)0WwiN]h, ƫjJ2h%8xWX?|fo{:*l7cllAX&ڊ(1= :2+d,zZ{ Eipmq }Zq벺@JXT_@c Atj]h:JsWRJ|I7(%0lJQ39-Ўx1-HN T-m<:)ei_%ӭRyMj0:e[aőXEp9VH4P&aG#RfEQyK6."d1ap`OFU,FSβå8ié×28WG1/?җ/Wrt|mT]Ŝg \עiV h̩֜&hӛ+wq\s!FO| ptvZF70*{KW<y-a#*ACБT?bA݋wv7!M+M砛c#VYZ")NꙠVҹ(: &Jm ŗIR0S'dz8 lRZ7:o8"?/R9_mѡ6yZ);/j7HK_ؕ$ %)\[ !ur ExMR5#d\8Vw4jTW;&m ,Eֽ 43#FLHЁ#5]hZ#>@y3_~+c!]ȐUGWInx1?s6DWco U?-ǭpͦ'&pW҂KV%tUP[7&E2 R=+yȉH-:+YCUr 8DiԱ.7WW.I^n&7P*\ؔEgҵܽU #8*v@rX#_+wƍ>M@^IN`ۣaȢyt󀻲adG4؞ O8nд;i: }_pע}{=kwGZy>K%n^y9ܛuPŌ=|UƂ7efJH(,ʒ_Aa,sZVE7(suFS7S^kSPp%༡W{i(ؗ"(5]vhpyD, !қ˕^8-#xbt:5bﮀ8k9KC Fw<ǨPᓬ 9cP sg!ZT*{x8bQlh,qoThNvVzb8;Ts3]pQzD6Ӹ[ҊD-xpXa>}_p>ռg!6#֚^YL0 B><ڳ3$"&9Z; O @1o?үqpv[8wnJUevDE!"JŜaR1Wɓ}0!gz)hٴc{>~g)>Ԩ_SKrUz rKQrda_(qYjmbx!LxdcBŽʁAGHk(;8eP `g=L78'E7 U:HTtݎliڄv{dw4=ɸ(2 EXxn7 " Dia@O^7h 慮4Q>+e`Suh(0wj,zm\]@[R" E8`i"^mQˎd Ak z75vyV$8)*8sMBi9)tPDaX{~i jiUVǕ:tk *h#UB󎈩7MpJxolFx\vHiŸq]s$i Bόȿ:BLfY+(6sK: TV d)hM%g{kn=!TܪNPx2LfpB"oH}"j]Ŗls;xЍaŢj|rfz+ԃBs Щ=3to"Ws=tIFX8C9=U'$cYX"dGf@-fMӸJ#P)ݕ kVZ̆&}G#]-iJ]_j@0yɌ+7,ޥ/Pd8)(mߝtc[=%N_u͜ ҽtF:IǺb/%## }kfYQw4B^\ddd-t;iafw*"ȉ$Z8fq,l(lxYWœg] |䠉?Y ʕ9ym"p/93ָX= _"e= #AaDy$MS6A7U J1Ut9sfڍ 5`U/Z#Gd.\Dl6\.ÜźAVG!ElgT'ϩ`|Pn87{ #E#uX̿i>߾wMhD ;?p(r]C>(( >~!ٳxͤdS%)y]sFFa A5٭%aY;(2s:Elѿ3F>P呡 U8'9O 7Za΁O_qcj~2W@=I0TiY#/]Wk!_/1h\6P oTp7y՚g]o,*)qy11&]SGG*: Kf/,euϳ8ՄVMnjU(J :4^ Vɻl4:#Ύi|kk^@H%@ʹ#w a^F4rB()y[ ji)YiɊPJ(Ι֥D~^dV,Nf{t rnwoǵXB}vDDJ\[3A>ws=`p@jI|N+pEZ݊ s Rؕ( [GHosCn7aD ouEuXP0ĔsdoX,*.gp!S]X3rx¯TUDBX9ewݜ3O$mHMtAb}e:2kX5:Rծ$ɞaOdgٌZi<#MaT/ij[fVx8Cs|x9|BPsŮ"似+*kh1CNXsh+ y$L7{t7 24ODPPpH #̥GA9Q) Szm$uԡszV#0p}*vv!~ fMv#!9ŋs !p19XjW݅n}8QS5]PIݠf}Q!yUmQL;W({))0dmZRK1h1,x)*|ӵO|jSJb6:&OA2qDBWH7z9BCFkD1Ӟb]5ZyQޤ핡?ZYGҒ\:4[twjx϶~+"mja}%l-6{ř9E2iyɪ_lLu&kzR!5ZsWUkj`1؂/uӸNud;=8Z۴z4N^T u6 k{#x8\(\zm 5\Nj%d@[kJFuN=#il;~LE;l$CQRtwzzF/^I&!~Vjt@" L? [%QNk[$Gϟ׌Ƽ}?vG֭?@?xM?>Y5(CP"8Tpb5䍠 @71wҽoxg'.9[/!_Ca{b.u Fd$,H\x)yL`ǯT1k,w]Magy 4X Lzz-@m=ўJ0Z"w=^/U)"WlKԓ ]MqxZq^(Ѯ֋) hjSCa|t9#bֶCBA>;:tqF \"-ZA g<#AM !AX+F\R-=Gys٧ hGQViFέ 8Y,/5WB0ѲǔmѾA[ʵJZ.9.φ<%9z7۳X>`kI~9S!ŽR?GO"P,zeՊ|151?(V71qޗ]lH *--n5hũ&E+2+4^sS=i]Q:_a DZ"sk^U(?ɍS&v{ -6}H_D”K)nE4#Z` M̜O>t5]3\q!хfiّ w=춦ł-UW@_vCh+at<-8xSh;QYi'9k~}n/D%v*s-R̸0:}V80sjwW0;v0'2TXoQ鸈)w8=)Aoc:~c|DU 'Lt5lD;q/@ϊqweL#6ZdW/"-%?_ oP&N:gۍυ];=oksLo.nq .iP !#a\W2"֙8,w!ZH*ErWb@5Zk;w{ nʁiԇO2|6+sKQ]YUaLyraǻV~"oMf#٥\.רcbG .a % o@vxi3ZH*!3$/)nsT=g&4x}aKTxwfKrNӼڋW՗8tLM |۶$#vs-!TEOQdXk(zu BXs+ Ѱ +l=k-R9 0h. čIxҭf3jp鴠(%\WI71l27']ڍe^:ͽlIE_5@VɌTG[s+'/mv1rc֜M^9U)M"wV#:gP-[S2 e1"ImۺT8ܟݮңOnTRRf.|NE n:t|A:/WAO?|͏n2 IL%CJ ; 1,-=@@1 l3ij`h6l,7<ɡ `XoPMt4^Rj,O˕J+_FEt!o,p hbY˾]pRƴ@47THsns ;蛥f=saSM մ22k 緂fGG'Z+C^;pgľZ_W((IZ:B_ ՇR-4dC;H!OU"IA%4 Wfmχ{EK0?sUĉBGz*QAQ]+-7f H\8{J &s*~O2:DʴΝ',G1 0>,}CQg`~c dӧ"w*0ЦV tC)>q+)ǔ Y/ g|ҰY-eO= 1C=;ֶUZc ,V)m/ߤ&jP#J1*B63JVO:ʐ(0ZS@+,%&ˤ <.Yu]9)ŔyU>TUV͉$VbU>+cXQŚ;i˯]\81|f,[O =AyD?wD⟊Aiǀt-yDZ/cID<׋h_)ӭd5@͈M0̓Qr{UF;1}Z}:@ VdajJ=,Q)YoQ$0?{wxn*zc Gy:Ce54-2XkD ܺ!JiþZOT_zuh]>!B$|wsy FB:pr>C ?{r|e K 1#hvXsg5ƕ @K0ߓHEq݄ N]֋!X< uO$ P_# 8mw͜0,&1bg,XlnW>ej8lK*V>hpLu7g±4ʁpvr5 sSr7Q'l+P}SkwiG/T֕vNMb'lP'N̝Ƚ9q| aǴ賗鰋R Ҵ pl>hQ Ofȿu`ΟsyO=ֻYLNӔwX;\c`6Y("M7/-:)U%Z]rE}J\6Kxy VUU+J5r;~I۳u("n{gEKPB #ocf/G(2DGDs8(&PDlP0d\*LؘB~"G/SEњױU/"ƑX0!afzömݒR6@5{XCr=~WqB~Kb.#˜rx=zMCT7 NR"#Puk5wN f^ED.E&W`[&kD[UcpZ "gx39 ҳT+A@E#e_03.;sCާnMP96+ H.Zch:]e-g;ֺ[CKRg8,%^qJvOgp+FBG-BiNGW& 1uxmu #> -?G|ZɵmuDkKJbRjTF[IcjpxG&GsH|QM}79Q||)] 9O1cW :{.ɂkx5,ds?1!3^/aFBˍV%D:do#n[! ŮQ ]6n7f;ϙ񨧦=צLUmo*e~|Fu(- h>앑.>`!AOR$Sx>nr"=Y @vh _Dʦ+M>3@ycS.왲7~:LkJy*EB=ellF9)~V41W3o3eɭa<ţ\b U-kN9,ϡRu5mby(*c(RP,{6 ЮPGexjaХr/]'7@PJDl[xD[SM=r5ErGjo=l_y$ihs,v ;Z3#&ܙ+bMN漬h활DQU};߶M;?ظ'Ҡf*"Mi֦&gO e8; {,66*sZ&2D`<"y/ݽFbF~kw:p0/ߩBlãB0)8P {|W{j;NlG ʯ'V:#IaB%eB4 d^  ŻZL[t+0E^ M{uc"՘7 =v* ƛEY&deK粺$r%PQỔ,pD |\(V5uzX5kbv݌0+w3}ΐ[iX), c0DSJ5m+- Eb"BT&ѼLȊeFN~0Ycvp0asȼCSE7@ b_BPuhޓKln=pJ_@ooY'D c8&˻b9x QqcHN@ΟT*DVv֓;$ 2;"׿SN ̿:F=Pjb\|.kGԘrϼ?*Tk8Vh`7x<< Af )LGh;&:;ŧ>q 2qA}G:HdTίhTs=I߄_Xbž8>W./lsϫɽq>+ivjE[\鿡@ڡQ`Fgz#M=$ZD%ֹ}r2uZRO{ jnr\{h{ Q؉\NQƈzsM):W#(0ӭN~nD:sڈJC mL:{ tcK6vn=`WwY-6o [l/ w+QGR\Y"GƳi"blr_^B{KޮaaGU"{0u R)똴)WSazK^Y .5l$.`mzβ`ܵmiFS[[8.GB-{Ǝ]Uzb}Wjʬ7K *猢H;ʹpmR,/5Gn_ 5>c#ڱ=%^{w1 -ЗvU/K ׸"E niYfvEaR+ɱh'i lŵ `,_bVۉXv1 X}[akDe/p4\ӕ=^+Y FR >|[sE:TZDP֥g3X6hֶ@cdQ"_N.fn`6+]7I?Hbdg-<ƛuOR(z4(zQ&a<%dOv*}'Q!{ ] z)`iOBL:L1%R#\ҕx];}ٻkl@Dk3R{CY"|zm/Tk "K֕SGbq&AE ]M/_iH"3"\ҀB~c/xz#ƿ 6TÇkJ=z)oP%%'d[s7J/㏿?LˍJWbɠMQ'.xR՝McM(d;}*o]u6Elm~pw윪S;4KkZ֐^`2T :F=:DfS9rV id֖\Df8]P8u"AQ_Hd}tiO>"H:X7nѡtzv;t-hPACp7(|oء7k[ O8>.ܸ.z 3qq"~NqV qcp IDATHH'hn쳱ƿ[?VeRvp엷ʹۦ?/6n%^뙹L5‰Kgusz-ʯC9-Ǝ?3= v1)潢e+]"C_^^8/S뉨Nggra9[fP[6~YE`N)lNύ֥eFP3b&Q =A~xt3M!CQJ[̓{zԜwJ^ns<3SDjsӊSMe.:v#>8'vKe+FʅRkq5Vֿ7-SQ\wnVaO;hzu)5i+|(^Y9x*{u^%wQ 0x-w=Xy0f˩j]Th\ nMQe GAtU~JNufQo*a"W縏9i}nᵛX &laWRڈ_J4>3d Op?ή@ʃ|?"Є<>C>vgK dTc#W%\WTPUJ=%c!gE-ʟjK).Btܽ54d JG//88eO?J{kHJO/F< 2/~\;xb=0 ѥ^P ]E0Cdh#n#u~fF`m :(~?^2`U9gz~ݜ>^G0#W j'+֜7}]0uL$ZI+K-Fm܋Cr=wj< SfV!JE zf-óa(э@gQê&ںf2aL(r(VF0Gݲ}ÿzhMc5%=I0(FgQN \ZcBMt W\!cF&v~.+^EPGʞcL{z7tA)5}eD{͖L K(G HY2Ǽq _<(qGz : I0\gzLY/e̾TBWQJ}M 峷LJw<Ս"懋葿t1g wk>!$ۙE 4(&gë% ׯh}E(P.U|x kP,,n9%4btN^b7MIs*RSpRLoݔG>Ze7˗$pP3ǝH|6(zL&RJ#`ƒ:F"U;Z-1z! pA{5pp;Y:pw:Nj$Z* &(Pt4C9/ĺjk{ruJ63/jBʲ ^/ )vg'{un!ЇwzNey$u>7kB&xT)ţ'wyt %mSz{PJP5q_߯?84p8%?p S<Ѷq޴ zK.'lYl(ABg?oN__ҿwR 7ߠ1qGiYh=,f,Dq}'p\1G&Zig g4a{b@NH\I{:&E ].2txR{k  (/i7[8ṿЪi= K~S EjՇAHn91 gҍͼ^;A}֒Tb΍ (|䛆2Dy9ؙ"QTB Ӌ[2bJSR#49] g:tn=N|)u3̋oOs9*FY8}jGk)CUt!4)WOR;_C8^_^v/@pnpkJPY?w&W޿}#1Pj2A[ٿEɐ@!Jts3VSC>{wbҎ[@$X5=is @dut442}7Z#rk"kWw~h[h}`f9i|P  t36o8ΜyGCS7O!\'UJ?UIkMF}$PvvQ_"i ^_h,Qݾ{6TTMG\v-QAIj2Ţ7gtIt½o =-)᧺w89L&CQ2 IUzYT| Wb$ i`fΜSwZVUu3޿o8лjZzֳ2w#|Ag1mGDMw҅I8ُ32D!OuЩU)XVVHR._TOe :ON?Iz)Pډ  Yd4> |ggS4FSzmQ=ޔ@xD$AږR/kU(M ﯉'V#aAE! wK @tȾGpq\A!np61X1 }جi#7FD 3(t%i3#1T) ) U 2lX-י@z-pSDAiC:j?M^f$s6F1 ;۔25̱.q*vrRGQ`mLPhN>LFd:3&PP=Z  TX)xᖷQHH0ϟYHs)R/5XQhrzF@Jù'gE1U0"(=7^/bǰ0Z'1;:8X|W.6dڴeH1j܂l5Qdezdf6Bp**RJ9q" O +*{1a24zҌ-ŕ.(rN(b ;Ɓщ_Bh1,ߔ~` :w͍POLmnoSSS&OC־ w-(0]"iK.Mwd,S*{$#8J|ց"LP5SmœӀ O00%8s"K+M@pƼZ%*܎dL mE1d .{ISm 4Y? e`MtX(ĶIp^Ǝ9#i E~)Gi&+3A|g}@E+5DTbC O im!h)օoyu |ip2|. Ȟ`|zr3ۇe:`[%`}X#S>:X3q%pO,foY+cKjҿ)oIKs6kފ撗E-KH0u0Dπ&I(Amcځrʅ%l}e "aP@nS`r :K퉂34_/+,)Blt@'i-@iaj7.l7Ui;ųѭŜ ŜBZ49{n{'Zf-4lޮ!-@'i̔)h8#e|(]ȩ,h $Pl$c/#V\ "El= D6<uAr [fM #:9o'ޜ69o94񈩷O&&N2kQt3 n<$|=<汗lCX{u-ē}GogY;!c@!g<[,r G,lOQ(A"ln| =kdEq\NT J!H)8#Y=e;c?s򗿌SN9˗/ǧ> w߽ptG9!*:Y! +4\k,1^OfI (Tu`E]Ӟg)ݓq{ح:3djm[Һk 6d1Zs{U۳D)0͹ѨʢZ3c8|ɣaJڬ 2:٥HYP)R"\9H!~D 9^)3_k 9|:kڻڂ` jkȽoD`sHX)&%3$XTxqZ{Vf؅`[^@j{nnpKf=+`ϭ#-sQeSyKSge0i(!/uCe =7\ ډ2+VMOX e0Gs{\H+F:d*53^< "Ç5hWj?ZE8rB\7\Wc!gjˉ.j;o٣_$T|ZD#.vXJBh9 #GwKH]}_{V?#G{)uk:|!' MmONLw=#e#Oʐ#/ߏp B"Y|n34>[mŲ^pglIgL#?c=p (C2k!iLe,#?qje _`cXy4ͼ>3I>3aѴ1Xz{FwvYgX}:**e2೮>D4” tZIr}`,[8՚wNj-Sy>}Ap(!)y |dE<č7ߥTHwXHiGhh4(>Sg2=Zo4Q8p/5e.xJ1"]Kӿ0 bԑR&RsP)H]R\u7dbQVz h|$qlu^uqu/Pd ."g+UGՁZm<ٓɴqf[*@\ `T ˾sEtr۴z|Ηv:Rʵc/R=)iFU9&k_!yS8juUlڴ)Б69g|!̳&^g\%2 1 ;ـA Ÿ2}i'% |xl%%|tб' e=|]e1z?@3 0wklm P ړEDTS?.'.rBI/eI^'FmPܛ>>1<'{ K P*-ԅ<Ghn֤q?(瘋{%g q؍a0k+"*=ҪMRcS (Z?yĉ4 l ^'S ~M$N9J'T^`ݼ2BbjNb{MqE,Ҥ^C:Fmr f{Mf=%%(1/ $) &%\هUXe%h3x^5 G 6w6'+߻lծ@ȕck@6A+bbt+U v1yGlp` IDAT dfWU2|2{^,ݾg,͵irDD, 8f浡A ^SMܚ5k{,֭{Q8PNEަEֺ,)S#+QOԵ)đ AH̩i'YϢlض.U4WijMŬIbh,f Xr V79| ȴ)3hhRg-YhvQL;bu{ \j *s!I|#ˉ9][S.؏w,x:r_UH ݝP˞n\ъ'<#CB;1A{Ӛ"w:5">ccid2u a [ne܊Zj|Q @qdG2Nu9! s:70r^ 29k?^fbpr` K v@C{B< dƨ ұpN%Ȑ5ma 3Bꪀyg鑑-Wk $Gցy\^ϋC\h}Ibt9ֱCTp- Î Q=Ze]=uߴ@Od{ Plk_cK",TL;oW#`׫ X}m5*lDv07w7D+YH~[+9 wi0mDVR ja4CC 8- 6(o8%.A!1a栒3mQ*8L66;w妲snP7h@gg'm۷y(4tJ"R3h3&FKk Qp6:A%Mw14pt+ek׮ō_,y/<qoud5j][>}JL C1, &=b~\Mޛ]b`M]y{~O\so9M;;32  1 f*@Eo(A!Ar-8쳱`B ஻?3gn톙3fQYL_fϚ?sŨQ-׺upGWPݷ`1;zSF\Go+7v㞗cLk',؀]h-W_-avgKbcƊ|}qng< 埓x_?gnܬLes -IFiaDHyo4gk &jOy;iy{ ["ϸYPqGD BA ݸ b|:byXeH$;L7jh}W_1cƸw~I6ure |YgS>i`qێ_w/s,3W_y?(e?>s?G}6sn;,X GUpn9r<`sΪ$TQ{gq*MY )WJ 5y '㡘 U.H0b+HI7USRޛ:1RR+RN\)SG^+F޾ߖKl--eE nKl 4h Jl`$ 2x csɬ{gZyZ y{b?B`##P(iߨn**:tf [-}-pn`+)<>,iP3L!ZFF2V;{zhco۶PЊ`8.(DLttc`pmĖX/o tZbCfRMֶ6-xT*Uցޝ۝RsK+[T2a*CjYh:p)U(!5- tZ7m6vgAk[ %:EqA>h_jbѨ DڠZ[P(6 ;G\AbL#zKˮp@Q#ZkU!"B.ԅt8gwte ˢޠ`!oohϟ?gaF)6ɂ[ߟSѝ2|+(k vXxMQ(ܡGwq"]Vk`;X=iEX;, T-8a+r6d{ei i M%g?NH2PO? 2~ԗ潥{,/c_͵kp_1cQe= 0%}log>$K0ߏo|w^I_{sU$)߼y,Y:< M͘>cƍcGc?^\J 'M8 ۟uz5himÚ7^cjg^nLm6Vc9g폿EW ͭdm݉ξ};0k"N#Fnͫغy->Hl ~sg3\izZmx׍?q&z{wބbc.sTz0a<5=s,y»tm_–M pwrqtTtt!d0~l=}2R_B{6[Z6m(\])L " ;/G?} Qs}׶zB)0 ~]NWgΝ /~_p/\uջ)Í_*2 ܿc֭.}W^y%*\}Uxy3BG{;կ[E _|?G)#ju85k(x߇_X|Xae kf/Qu)ch|cͿ[;A{/M\Sv҄8lV̝| {S 1>~jcJw!;uGW5w-,-a Y7Nm^%cv|{⋷O~3>5oYf6G#Ћ`hP,}Q8D7L Y;a0z&r Z݊e=\3m _Aߪ YYZT(# Q ^.͜&8.\]nn8'Sŀ ءL\oj{j?Ɔ4eƎ?[7L*%P`284t{u(7I mu|mTi2lpȹ (<`=iY IDATR e8mfJ#$ɀ>cDnLM # ?:wB[S! "u9ŒD2)3)n\ t(XMp~-t6\՘&EX-MIr}: b2)9+Gbcdȭo/L@HS=xkjշcsԙm̾Vo؅t&A(LfZ,s_AJqvi=9b3I"]`e9,JmTuR\{kTj?Kdvu%) 'J#%LngUZ$@xx{wftvBk[;J2coohv#L!yV2DQpZvq'eއVi({'JcDBx_b$;Cq)["rcEi%4Cv{ A|! i!jSBqx( Ta h$u+Ǿ+/cs K;wPpCRмる.g'v:>B:zq!cRA{G.=8#1wwI{ݘqp=5/g裘;ox8팳ߍI /{a7q9ǝp28B,|?a"8P0i}E4e*yU8숣qy{ѻs[Z k}z܄ =`8ϾSOG<s80z~XyيZYsǽ۷òb`ߎ)3✋n@1Ut>u_km[G&Aŝu*ՈZ\ SA{8CtD dlh3kbe_o|Xjެ[Ξ=GwS>m4z7[Іzj>8S?6oތn / Y% b?~/_Xm۶fj( *6*8j#w?;Uͷaر5#v71Z:MZ1gD}/CaV™?R :\ѽv_LހczH^cڷMڄkek&wKQ4-珌!>5=ϑ̱u4w>K⷏YFQ=36TqJM;Z਀( &r coP*k½ɴ'gz8rfD͟H1)-:<|kSY54f{܍\/@3X,]%WRh>2ʬ>2 G䜴 6!@6Kmu xmL ; f̖bSk̵@%Vqg(&0*/~y1 J2+CjmB[@jdM ;)A !&'《S'V{PgR 9 b0F4^+HCY+$f3 PSYPk-'$€P,YZf<,}ar ^RM$V @ipuz~)+.SpЙ}23xZʬh)iCcO3fY!S7 FQP¡1צӸayԞ^|p ǔU+C A`3<玑sL{bz/:879UߑE_ To|L/jKiԙj&,ZV9 ߳lk~4XD{qxnURZnm1y"eA@妤jL1jmo BۋӰBC])k,wBaԾz&$Gah)vA71zziHVCM(OiI T_SE!4<+m¸A5Geɹhn{o =n_;UNVI?C4HKXh܉P/otչO%ހξ=G,q*_`Nqh f*~?-:^Ăţ=4g:&`EGaŲ?5|2cOgbNUO>LwJ0‹;wl=.^~i).>6x~.<ݻBۿ߾-b;n{B_oiw juJEcpHZm!f5w9ĝьLFdFWMGWXAA얿"Thoosnsشi ::DmہW^YzxT>c0""0ha|eƍV[|ɾ!`/<ɹ߶u+y5B_:?P;+{FaΒ!)z+Elh";IcƷX0xmSCn3*3F?TVOJWF=)"o igjaM;x}s;%QS~VCwol*Q;rjtǰnGM;p:UAԌgGǖ4j̠_~34janP~Z~T@[R;5_Dw"ao;jcĔD@1Rϊ*peHjQӹl;0q&; .B=1_^!)bp J M bx'qQ\XGiEs(}hq7!H*IuE4PvsˮfSJj + > +FEÉQ "W5ٍz- *}TBCǀt*[&4,8ck"eY\7A&4JxF;{Quyr,: > nH\ʭ?TT1 Yu+OOe^"}YkLQ%< ϕ8Ѫ h!Xgk#Y m )O/No߿;=n*x[L aphXfo73^_ {.ڇjo5'+ Ӛ/5k`?rzmaQ>bB톉S{0jx$JZ*SW"^põSG(ff:(lm8{&NJ߉}q2l}=7bt&4%?р ۨ# i2Ǚblٴ;hضXU*FäD9z4NJhȦ_fo | VqaJ-@%BrYiQ 9AP0XaPA\ܦl*a˃zǾlYcY$,bzSLYV9s&^z%2!{'ۘGOOO;a2I{??0O=jMF̄pFd9X6IuRQԋnf%v3h$)'*(+7/ETi#0+5CgmNQֽUc!+"XϚR+}Cu bT--uh +ƙ1dR,[Eր"0gS-EIeztΐ .VB$[* Fq=#dqUv U# 2wy<$8 rQ5Q&rݻaHh'e%B"j;`;,P=^0aj4K,jD^]U\[( C挻vFô5h(fR@|qֽɂʹ8f άn< ,[K"L,r[AaݔZ~sU2}ϲ5쓄2 r;$X 5Ҕ:mN`v$mrۺ;$s/poN%\ʁX$TPsy{e,*ϰ&+`*~*PaWo e5u)91wސ- 9 ]YoB3d!֜ X?m<;"XkEN7h{~8Oy=bŮ9V~YZ$9h""VXȶT]7 MzVOѱൡu]s͗CI9okn w琬_!;>gESAh>1^-mm(꿕${h`tBmISa:2DF,p2ҁ5Z#-@A`|\) VܿR7˯Di(,ꏟ0@0܌EdkolW 2ګs-;n(6Yq'Rf:, d٫ VXS‹/ŏ]3/}اn'kҋ}5uoŋ/Eӻރ /&Lg?1ض jL4>$*!g% cgzw6|+//V1et|_ =%4Kil$KI9k^  Kֲ M׸I&n&ƚ%umpU>= L4'~++s. cO=wRD nij.1=Q(eAA𣛮ǵ C/\Qf&VRnxץs8ళ8r=Q@?v^~K׷@ٻ =܊+mtO%WLUo6Xlޕ>ޮbE^?O#9Tg2qɮN2V'r<}n0tiL ѣFgoओO'N{~l޼ +W=\|X`!OJcdFs'ZBwRo1"F`رWO>$Ə+z ~ۻqOTw4 C'lc=;W1kVlhE#:Lq^؂ P({N݈ڡ o[{x3A31Tn *u7PJnBdr 4G*R\x0 )pĘ' AC{J>P-,;yh[w(qrYI PE@KiqzO=STk5h mwEv79)_ balE,`H]$D@A&T3ګj6SkK i P'ɠCiPqMSuʃv|>Ʊ3?(Ky.G@1r&AGT*8w#>(oMnXs:ul`n=f!S_KILX` R:h9WPߨ̣]!.`Vogrt]g,[ mPfVrn|Dɴ)~.柑eܾ}Qȶr)) >I 1\̎ R`8?N?WOzjh K?{0D2@ȂqF\VP9PgU-Iƙ@fE-РVkF' ݞZ#V8LB.0Զ5@EԶT:j]]eT%3"7m>OAC'AQGH9h?{݊4R9*= /c*bV_um3fb 4y ՙ9䱿cS}Zgxbq}O.yJGG'>O޿=;SO'Al-s.]ݘ0q2;O=w'g{xAn_J$Ɯp?cM״yva$ LN4osls׾x70kΞԖۀǣ\*3R+47|7~GxχWӽ2~&M'cp)g#{9Z?}JeQX?P)?t+Z碣7=Jf^Hman|z˖-hk_}1l o+Ⱦ7{?-C2m(Ԫ 4'LU|M# Hb`HTP=䓸[}MsҤIz>#}cزe30aDGLKSPTچK/ _p>vM7}fx(2+Xp!~..]~l`4D 4x_q9H)K{cpt̚Wwz8j:L^??bw>>iL>q 6߹ $ | %5Eh$q kQ֖֒!kmET岺$s/܈Llggpdc Q^жMo:PA0)ͭ G9r^̵uLtlQUP KZ/7Q^>[<Q QLZQ+z=a܈TĔޘHeY I<:] rl-yV'ZOA8b,Q :F0 LKR rŠ961>u ^=Pd:8VB>pQ$[s :<}?9%p-G\qEe%EY)V3Ү4e:D s wi)J%zFH2zY/ѷ4˚/w[ L@ȁrOc@!c/zB3Y3FKti7g\p𡇡oB5>au#HKoc`{^yo?aGܦ~ƍZZZ r8u g [(\=?qMۈeF4G92 0@mV|_#}#Xyz^?B!b:Cqߊ&c]E%Adftw>o4N;x7q5K>'MU,2&]+;=Aڭ|%ԑcÆWQ7쎬3oۙm[֢f5 7@x^y:+ k C M ?fE>sɵѝ0, !P<+xF# ^$Il{n0Q4L2Z  R5{'Os0B_̳<"\~ӟk6jӦN#r;57glBz!2R^{퍩SYq6v}qTl`N"/ I65h{QS҂۟[ǡ:Q̞:8rz5ɕ_^_G7SFo1Pސ>b\5y'MsonfN܌IczuI߅!8QHE߈a:MV;;S"d~gYK21ec`[~AAnMThYO,ec ve$ '}ədMiNvfPa˝k4r[(Rg#}23# q?C-Cպ bmBhۖz?h/a6#_@SH mhkivowS"]Ba\ja\V*u 08XER kεVm``}CP,M\ FEj9{BZlGci2w|S-BD<7ZD0ҁKpbUp&A*qE$ }ٳ̔i^RKdޥI u9yPӁACg>B;ڣotg >[k?r`Y֎@ mV9OS:D" B[{b͒"_LkX*4=H a֎_ 0BݔFeXP@o!]d7]E+KIy&l7Q,Kq<Ę[Z# &cnhW U#lب2؏> ahʀ7d{*}ժ$jԍ ݬ5;;<*d)PʓOll~NCcc $o#Ϧ1Ath<\@a ]לfкhI'ՍV`/e&I#6܇&b.jgڟvXأC g?!P;i`:DcuJ{ A` 6}&1fޭvlߎ+~e) &B#P`O @a[ :1x׮^ a}ǦM@1caVЇ &^Xb`c۹mmt]Fy_n n&G܌{=4 J'Ѵ6{J")?gR/=,eLk_äӱpĘY5p?젲A`pm̚J6} -X|t^׾dE=A^R HPcNWbҔ8 %s`۶u;PHKYxn]u>'so`Ŗ0|{wAC+c-cb0jB5ׯ?1y]w`y`Ӧ?o>Zr%.:o} goу|W/s|7~xq 'A2ӝn;O,y6 mذRи+㪫ޅ3< '|2i੧WzLCxes7Zݱz[ڔ5~}K;i1X/OcbAWnA8y:5u*uW'0X HcKuL<FL'w9THķj eo_LX/n"߉c`bw/I8bT_%%8!JjAqVS},:eclA [: ΛMV<:F#2ZH 9 abepH\WbՐ):k!2ϖMKԶkj \{lW@6}ÀQ#cv-P 9$`r6w͌ {WF>HEV0"%J-zyF" ($&T gшtiޏӺL ")rzb,3r|b4> Z0=u- }f[9&K2̷e5:L*,8ގA0MkU(/>KPv,8(s:#NY |?$~fw3vd&A烲Slc [c#mLEs-TӶ,F,S#Jj3CYR1nO9a8N DHEVΌ-I]ky*6[–ޮ,2u"lpG2 WKs38X֏[88&Zh掕Js [1gB<%aШTjmͿqȣbQ\&?f~@PKASXoD1A{L&q`g7fW};^wKh`V AB2S㲜R $q;)ǩJ#岝p%PIP" @B @BCju_{{o~ks_K\9կ=o{[ϹEbʬ^7:O9rAq >ge1+Q]`"nvg[!o._|nKf.P`삨 LY`pl+*e &S˞MN7Z4ܾ}GM =O>÷ܖ\% gcI?/pv ͛L? G>an]q!wc_HMJIaі=- H鱏T:?CۿoG>dUs'ɽ*}-?M7C7E8)22|2!i[ƒMmKsL,w/%}~~V0kB ?co/oַPWpvHp^?'_|;u_zߠ?|ox |~U?}mN?#;߯O׿})w0lvIT=_VaVEo/П|㟡o~"?I}w/)2Ǫ tg=+ߥ~ﻄ=|`KUZড়/.د {.|+vUո<('=~.u,?'ҍ 6܎hzC/xF ?g~7cw{1z+_%AwHj̲o:mUkz[5a<2n0,G6zN~u>L=p&, ej:4`NgZU&H`/h@zݤdDictcfw/." }aڛ2IEden#G,2Ҁ:™> ;`n}֯;MMYZ זmr}Q愚̢s|E#wR C c"uHFu˝c6X [r HX4ݵmm,U. nsgjVsu}}58-VpݼqS>OZy.㨤M Al6֯~rsvZ#xbcd;#0x#d2^sAw/ܩS!.?'֋NF0q=hXb<`Cr;3Ə2P{/M.&^@ߤW~zssE{Bgs:??cGð'8 {ꂒ9hFvKAY0\!(ɠ>[ׇm $GK.{pp4iMVm՗3wam(rظy՞\js< `&PӾyNq<fx8-ςlvohEqO-mws@-ƓNx*p!!u2ohs~& lΕVʴ罕Ya}ڈͤZ_qzNyu_:qtOYrbK 󾵤27ߕ+G;qw;{9 Z{>#~>ey~5s"%Tޭ,Ҫj}otNgmfznzV0JrrdM&C39BA3E@]sA^<\a8Z S~agTOg5<;y`k($d8}wwjk 6Rsx3g{`Hc &߸;$͈Y?ؘg=NAXSgӧزcLksUZlE|`udo0JoPO^/ݭG12A[)#CPamCveXl=,8<Z PAr݁*\MѰMnA֫,2l=;>*ڑߨ4/(OY{2"!πxz.gUAfubJH  VzTِ#?ŵRaم`|,0ڎ$]I=mt~`&vҶo)dDOg\oxxшDl4~NO-u$TC%9U ga ^r& y羐%7 ˢF)Ҵ[pwAݼP:dz8Z*nIwv2[*KPAldIls?X\Hmn傲Pp4<NRZm3)i#ycIc >|Z)+*I \AF3V&J[_Rk ?'Wu8mV7A\NP¢9" I|mR4vp2{#dKm o*?/~SY`R{!yFW<Ǘ7@Ƨu@JߋNwx&2KiW9RꠕEd&[ F lLebdѓ οfBcyOX͛GLQ{$z1xw6!ʢÜ17b(5e7[0Q:.A8 )/k[SAϚ}([fF[Hhfj %<\R2 EgQqH - flJID{fXAVz4@?)-W B+;Gatǎ?8 9mrqJ˖>cuB2 gA+jY08z蒯|nȏI_0 IDATjlȲzAyY [1da=pwh~alNբ1l=p AI ՚95TJILK :J"TEbwޣB8WegF0JK~xs3=[ڳ߅y3V4 9|4&y]?>E $<*]5,%g4DO0ZT X ߲机084͑tX=wQ Bp.ifi\7M-= >4)JLJ1I$#H%}1+~Xz7JM~c%̞LoS` NOO?O|rs;|VZb%+md,l!?#A't#9qj%k9{?[QSD1pcA@.}h !H `9J؏5a +͐4M3Y/IҚpJNX)?ev1I84W-)Ǫ$R_{BNϪ==Kj_3>׼F[Oyo,?Kuzg1;߹2n6h%5yvi0s-@iœc,-C'1w//q]p|^ec VFe9L=odip.euHik-`T(H͇i^mEEe(Dg"32W|oݢG?[RݮuܞljmG}kFz?};tWbpw瞕͘ U&YG?JyspZdm670CV db g'eax@,zJȴ.°[B}0G@;M((?9*j>QL4AU8SWZ"ZW_Qm쬳AJSK8fKjW4oe0Np8 b6XF2Y- '!sF<~gh䰦RFڟUJF35@J9$uc WF(%D`Ć٘CJ_K; Lv7o_2{Iw//]n>^"YT(kwH<!%S430pM3*zMǀfYOʦNԽMi<Z=ڋ&xfdq߁U[4?͑e9Z!"3 v(!#h#}*5КwIS)[d=ulz*3rXdXɇN@Α 7$]5n;akJn 5H+r6o  1hr}vN#k|d[t-Pw<ДJVPriN>{6!P,Y F^?:K[ay/{=/_]s!t̞NHtuZ#mp{&$5w0O.&'giݑ TYJa{ і/(M-<@RAs~VO(u4=IU[q2(<@@d𕄒􌹻eq]a\ AY6`,W n˾PKB{A4pzVFzmqN\>v~f4y1MCx @|zdZXvE˫.j˦hD;h& i I._-$A.`>Y657xS:2l]^ܦt~${ MxiUkB1tIҡF^x>WSO=E#E".Wd*_ӓxRf|}?G?Aq~E_o.=ϥ}O_RByx=Ϣ?gƯ*U.=)7 7#"A 1lL9gzj!s;6skJб r(:\ʘ;klK9?2s8,NFJ:)q2(ls2DVNe*¼LjV̓)2Nܮ I>se/sղb !h;q-x6;T8̸/,ɻO,vf,'uTPkNRnsݣϫ>W7jpC;GO7GoVӄ?̿;攤cK"KGHRSMh(;jLG+9ׄ,= M/zФkS/έ6v[MMlCB"`t}1 XKxOTa7 HnP+[tuLf)xO/vN>"5$/-l$~a 0wy|- gZ^ s;FN.O"9~_F<63dYk,|翠ߣ8ݽsG#UƟBF`̋nYKȒjY/v 7M]k{k35nՈ=7}J-裏=0}?znIT&\ykw>zk^C_7oWMo~Ljc?7=˿+eGx+5y3w?-{m!oA9Ɲ3ϭ֯ʆrn>)yJ3s2+Ƽo5!"0/PuyPtvmN,61NiHX;Rﳗ(`r+E%z\c\,\1JjVٱ3;Eك6U] q_Ը&"20!kb by#\FlؽqrpɎ{! t]Yi-Ԏzg)N8 j1Ӳ\OhɕfDͭp'<P;L6k!/b|2rbؘqZ $NJJ^B%U&Jַd}9͹zI/]5^8Qr58sƆok(RtR):O;#_5.d3@KJAz:-{vEX[ʨ&Y`:JLdE!;!68l HowR]4bc/ u/-fG)).%GL&UϦjj-P oMy ٿdFz \D%v04%qo?+y0)Me r aL$xc5OyIwN;[wˉР{eX(߻}_\/{ TK®4½j]|ߛpн,:I",6CI>A) Q-+xFbX lBN"80,-tɁjqiɮ`R T;vBqב2 XmL%5m Twu9ςFS( #A\YmJ3 աQ`! wz={N^=l-^ ݔkы?gӂ/& ||7*:Y1e?w&9ֻ_0#fQz*¡_4۾rh=݈XSpma\;ѝ;f̗}OF7O)fm梋݈wꮬe0W|8YɈDbExa,s?OO}i#җ|>1~7p}tߍt}@?=sg6z(0'~yi)2:f!daFPFp˗'xG/ӯ/+)-ZP6""m$PјBiu֤AʘmR2(ZjI#ct0zta(nS %ҔƉ&!` 9I~hc#?"Wp U0b/Ɓ̄eςY`eu-Lx묌p oZbm7(k X!Hom3<﴿ŕgqXmJM.]幗hOx*(U4_\b>fhqjzm9`~?G!_11a-f'#e'93ߤՖ{GszL<$%h؋(QANV(!y-~mX 25\m!ڻEl4)$Gxe"RB41_p5P$?dr^FӅl Y%=1 %刡\> K/%8([%"egM o4eî~8{v #ZE&#uy-ЭC _2JĜ& Wlm.v{`nFqG23«H#U#hɛd^)F/hUg_,OtKmT8fYE))v=Vtw) J\@r zyಔfUktKzQNI7ÎYJRNPMmT哉BSk&%pN{tpl#4NBՅ^(ŘJEiݓ2 vPJ|TCOźu5BR- x K+ѭ91ML]k%瞭Lc䋬3*2B!_bTtFl|J]2TQ-N7"k%>I7WFCړXRzT06k?%d1g(kKژ"@QTїE45݈ 2G05\O@< }[@?}l.Xdž[9Ef:Kx垘$q͛T,۝Αvn1?: ku9-NAx}bb^xXeZD˺q F B\ZgmAzِkFT-W/iON(s>ˁ5,O )ZC+vi`e2§x%y"`ccE9ҽL- "]'v~Yz{)wo52b^Ȁgbe=bf²&ΗvNCaN$ -8V;vJd_*s dco.i(!?"%42DF_Bm<%^y脡p (*!2Rd(g1mɔZ0~n$ d-Qj Q bΔ:p~n/{կ~q׽KYyD^%nݢg?)ixϯŅdxq~E쵯g? =']q~1C|iqaR[/$гRf{Vx6mDeܳ2Q|H/P˃ҬFx\tE!г4pȘ( h+a`Y{8 ci_M%55~mhfGb2Fۆ=$P+O\3{]D45LFe~|9N ;ٛWI6qA0Sr8"(gOc-O3>kCDzjA!U*"?3 }ս4 EƧB;Ud0l6{KyӖvo=>.Ge,|}ŦD+q$Z ׳LX fvDWh;9^LAT LZ,sSPaCL֞@Hc.hB@KX2ddzWHUxJjuW5P.`{y ,?2`>2Iq/@"QOcGѦ{2ŦLPɬ&tX*sy"U5gdF`̺V 'd~| PjMKK}QRW9i|.3W5e֖^vp0O Ա{ws.;]\u΢3^K!pQb>~g|>0fwaWywV2ӝOƂ:;#PQ IDAT~rҹ/SQZqrX(I۴Zon\! ,Dފ&[;|./t}TV"{U y~b6f"];w}~Sȇ>$B _O//w1W'/y Sēn`3\hymz'WYs?hhU k{@c3W5v@##܃I$c* JrL@1(aG[s$D腹)Njs6x#mR p2Lz^BCj6GM{2dWsZy[ Z)Fß/E;lew[O !4@ lS A!oׄQ$ m$;v$k u$׿vVCFkmSd/ zJJ2R>Bp~kdI@vC[v]Ema&rt>:f^`ulA[Hߡ20Y du*!Z,7m TJl b/DRq s.3DxmꩱtM9%bMZwݧ%ȰSFҿSInF'aN,)tIZ 5T״ </ndi lr ڡ><۸u;ZC8F)`{X{em*b+L zԙuˌjy\gj|u-?h\*&b@'DŽ?4\z62GE?l@1=p p-o/imp]c0[%BCgaڵJ88> gbG#ٽLVeEҌh`ϵIQP<&tfX9~uFhcT=g4=m D@2%{5Cqf[ܣE ƴ;λ'鷾NÄ9c͞}%*y{nsuso iB>FL$Lp6h pc8 zߤ(dr)tĄ:!2A{N9>a`V1G1{"lmGb)<@KaY>:wװH>  g0qɪ}t~Bnf=/-b +sO\+)*= ~N`~!t%|:j.5,忚T5r']nC* nX}~EO-05ZJ{dƔԊK+lB>zuh7]g sGBlɴ@zs펉 8 ˓.Ap8v:ha8EP$G=m~}Pla3.rR'שH4@w=;wo݋hVz:3A&wfPP? m7QAl0z&2%hz8DNjSZ,JD+ "4'M&#vka'DqݕfCWȂ->C029qg"gJc ʧ$wFhMXW=}{^̏͊gMF[ 'MV &+'o֒{M}dQ8pgyv՘ |@u稵h=Hlϳ KNY&Kt$ I|4RV\6gpYGEP`2ZKKä|k^\I+uh[ɹd+f Hhw :0$fsn2=^ڌTR&_k̸*8?4O}/:/pV(E]+\cQ>@ѳf!e=8ƽ7&vҎk~D\wWfQH5mzXJHZE#o O=gm'VƛO[ŜnS4l"z" 8@^r[Jp7׳jqV[MɺBZZJՃCjeD@eXRwK]]`KH,KhFϹ&Nhq:8bu6k0"{ٯNNAJ @R\{Y%tթKk91!$ϳ¡~*i<,ʎ̔ze 4%dJqW 0=@_c'߿J_:ȳ8Ȉ~d?Y GYP bmݙٷgZO1e0vZ9 ${?Y"tIeZ7 ⨣hIA1>1ov]nV~*`ՓáWz{|*-LZ^,"8"lݭyxWI-çʉsӟ[@95id72?^v2}NAc\!Nj  9 d-P h@ߴd+ pzoB(#K8ngæFWHa<'$`9)T5R^sp.]7z) JU>ᎌ?(PN(g% /,Q^[R{ⵌm<+y%a7o}=֊ 9D~'L^Y+R8%$9*-9I$rrDnN J5[0+X2lfGQ؅)jA%KZ. —K!]&<LuBk ) +l-QǥU'Rţ.5gӰl'_t5rDž{MNΡ{/&+1Y8/G,Zؤ4 >nv,>\Ϟ =ʁޟm?\$JlO=$jCՂNN\,yǪ{!LڐC@*|GXve4VMN31,Qfaeॼ{~ ѱǕNngj^.*]lۂ`^qq~jU1gǎ}@~.Q :860kc$)!_VfyYM5M2 0ԕF?9T70Ri{uE"uja.~M ??t*'`G)22#s"s4c%(Hέupvd}rڜ`? _ ?Pd{HsmN1=)H)۳,B5j~f+jqܑ5_8Z LZmcf:2ƝeUsCP5HϖF _:c"_UppǜP iAt>+>1p ^qA 0aD :}qfsLq;1 Hes G;bз\7tOx9;tf5ANq&dq^*Z9)iל.&=xҳS*%Rλg!k؋ gy1wqҩN紊''P#׷5Ha螈6^n=^ )L*MN:D-;Jz@>d`}4D{@DjaZsż݌^flz,9G[ByA T ZrN BGC ztry!'WAkL\ә&1{ 0^r,ko g :ʱݗe͓D% rsH5Tz-LBWiWӽ}r y yI$2v%9;cK >%q}c|PQrNk=SQ(Lv㣤G f҇@x sO̖,5( skfʩFF0b'HaZ7&ݬTRj*k&%(*boΦjI9H|O26Ol:D֒cOޯ^kS?un{tl:_>PKhܡ Hr((@l0䗏]s+mAZbP =\O3+M->v΃0qV2)[`X(nl0%k^S`FϽ{A+3;p[lpOjmzB[VY(Sl-jR~)3?ǚk8{v]EnayZfa;0ϓ9˾&؍x)%0<\Ffʹ'éŹ3SkRƪVݹ-ܬ>TpZ記 : (~$8X3wy֍7kTLA~޺ vC-dUɽ9̔tf$ n3}5Ml^?0EGW6caNV@ 67njs&JtεCaSКtvaU~Ħ!*%ۍd*8;J,LT!hh79,KΗtBBcCT3d|} rF \S;4i8?2xHq"&Uc2a̰hjT#bcT^YۮoP4uuFbɡP@lX@uolzp^I-Pgz}{փ%<%e^[-sM/,@.TK73U/:I'LWoZ+K;9(-L:[MwFY7̛դ9l-vBrtuPd;j&-7i3f%F-Ɛ6_%Ӡf=2(X&MW4f :Ӟ 2~8WG1þ{kM2 ;$K?Gj?1Sl \F<Ze4G) sfu5Z\a0g:1xG)#Ck)pOvu/C{K2M77#ٕnV٧k!Bhd-=ߩa*chA+%>YCq4f|eLPe>.{rAsKJS=_b_p>֔R`noɟΉY%qp5_\fº ׾N~( y||AR96AcK7,b}BW{ D,G`>'sa񊲁kqtdئ0{qT:1>4{=MAuy#T-/d< E mQڔpSA+NHlXbnRjIzװF#nXW[N/\b;UVr r[^L/-ϬT='`dYރ2qCU<ǥ;1^J VBO *o{_Kn'MHn|K`Y`牍Z"#`lܽVn%Z,B%18VE'e?$D09^k0Z iiҫY]]{kvȖSha(83XUmS+D\M2Z 'ndCRdʻyG Te IDAT63kJ-tP }!ata22mWƴrDGjQZŘaxa0Z`yDVk}QՃ[ bP:&Vhε(3p IUyEZ:vڬqV=IZ9:`S3$E`3C=\W/[?'ZqV&М[Bj[@^5J2{2KGy,>K(`f #Ue r_OAmsx SD%k@C&pZ!G?aKs0m?/KCsG.,;MVi<]&I$"]QTͮb(moNk8"mw.@x[Ȗ֗6u`8 ;(P2!gwLz&;>V@$ܦDC2'Qcωft!ˮاj- nJkP}IڞɊ8Z@C ;$[YI91M~ɤVv93ްAY"#Rt* w; nY%?jislT#Sq5}F2I4A6:Dǔ=X.#49]a.hAeά| azPJY0FZe'@v`;,iX&'чWve-:K[n#DŽfsX IZ\nnj}^9#c PmI_8;ADߝ .uh}՚P dc9o cVxXΙ 8LE}ne)w+n^̙Mƪhc6Y S:QvIU%c@hYAjܾKV֯t{c ҥA38@0-ʠtlwblIHQA WmN+]&?T䁿/oDb1@Cz/`,SIn"AY V ؟& 2/6! ׃]'tafr@T~~gNC8'Yf?t] {65@݌r:fRҾ䥪}qI}'eXDr`_>OG'3UF7'd$k`z7FP2w~5KߨOX\3:_Ă0fajPQ RG?^1ZZp /`#*C?ҷhײ+EJj:EPG{%־w=7y(79`hQ*W)`R}_?yO>FWW.9 p$O kKCuxOQj,lݣ/ٸMFېޤzVx|N X?LjIR-_~H|mj[Yq" ]iy7@=Z^zFȟ H23+uks~q; S'if(u|Mo1/Tq؀bŠEӱ4n,lJYx"M/馠2s*Hv;m=) ١>ʫ8"[u|6'$uL[{Bb4e0~qz>^yPy_C]s'Z4x罌yZꅟ3>QVڎ\'dJLq7kE[->Kt<LeтP)ex@n#xɐGbv-`ad`; -w2 bO\Gą{ז*RjSAf&hҀ>0b 3 gdCwռx;Y>U1ؠ{U1%=悬Okc̹;Xi݄ѮAMG%1|v4#> 3Oq|nl \ㄲBG8\]A7:{- hFwBnYޕj1g\!'tzRG)?ŸD$s0`19^>d1ż!=?ծd,.Wk|WXr 43.ؕ'J%E7Sl=|p70.B|(݉;b0RDD%5gjM^#`56jDŽlf%${o bE!Zrd0))T ܘ7:! iCGk)#&\(ac:`nGM '*sɌ%&Y,}eX n9<}4$ѦCY2Ndu%eYO+%[M9WkEtvl\K48f X!V3Lm)%Rc'ZCviL<0 YsѺ<3px]6ZÀ 3h3P92\ɉKFY@y_y p\?[|Җ>w$̀i98'fkw:2&ڲ&'Xoz3kȴ!>%*?;Z%=(^{Rn&n]#ՊC hzCd l=9)cV1~nj.1#7@e,?k6񋌘e¨= >\2aňbSsJϔ*;p%Pj"pҳgU"F&mf[ԆzP\XZg}%s=z-ާHwߣtb$]ke/ԣUX!.Gs&x/knw_P7aEY8[? p7 uTK xO@G_w .)H zen) [đ#{L@C3fSx$A_HYIkS|yܣd5wJZ\%颚4AcKھ|y~BdO>dPպqT+rsر} $A'%/Vww5p& A#y!O~b9gnXm & %XĊBY-^y B,a^9?;z8,>9~Ot#gleK3SIdy=5mG9.2P+eBYឺ Ľ"P8@[\'4ޢd+ 1DQL͞EHLD֯y42X̽$ X2sqG,/$VXH-aE&WWʕ`x+ݜ~O TsgN ِ i9qFXq~#ㆠ !菡Ej)nZ0'\zegn }HflꍴC42% v83{;gHF #c h/`mx}x/tm@Ż3ӭsC$bƯ@s=BgVҘA#U95 aqFԹbބ{A}ݵSq0f^F8B +e9z%EpQ8oטotƝ+Va.͸e{I0g;9]Dg60GG ԟ7M#b. Z@ycv(0Y&ՍdJƜsgtb0x CVt3cKY*T~ttvhEhS۬Te, X9EIY FfX0vJ7Dd썜JL|ó1bKޏB#OK'ua{Vɒܫk]Ij0y ~āAd Ej0}>[tqq $(\lɝJ<Uۄbsg7aƌ[;l%4\Ѣ.&?. hɌ4xtO;uL;:QѴ՞/ߦ=pc ~iȌc>}gA+}1$H=!ya:`Mh\+TV2߷4tON)6r 񎒯G}+~G:&_h D[gĸKbd]:$buEoц}US[x6 x[^%ϊ=3P)0Ya)N7'AR! j%]|VS=a@قl͇^4J.*l ZT ~ui==M(-9x]'H2'j&l{U89 ׈rXρYaPB3}IGY,=В`y ϐ€%нcy[9%ebFzT"N5[rimJ̰0$Θ&> :s?!w*⏌Ƨ -o R誒u7zQVqj5CPm): &FL9l)>BxƛHz12Ka0¸k h8%#2fVnW\K LCZZM*LD4Qڝ u|oVdiX;I|ٸR2[r^_H-8K8G'rKf;(#x̉q ҪɵJ=U)ggf^:eM+͠L.p[zh'Vty"jbRd΀VPIL.>81&$Ad\~55K {Q)ےP3-V#I/nYc"Ė -i#C*a{a,҇pERݚugDRR'G ߘ=\[*94?>JRK@p1pa%9[uvN$8y)C~an@Nd%(K  >uAOߺK^E,֍%uGWOE@)0N%#\,04=b=Țiz  @6# 5ƑAYmvG r('dck=MgbO޸[|lj =霞" ܗG#GB}JH;t`҈c<73=g{9b˱sqE?r{ J2IWrXЅR*d$2G{eK{uPqJG8 ZM<5`^IDٯFzٜ횂;DAM QlNG (d vgg򿋋5Pr!EƱ:~`D8dy]9,k:>(fK4kF4~/s.6"D;3"3 P Bْ*Bm83IXy%8Rƌ' OpPq*+7B'%X i,Z)+*u>ޙ.,`.Pł> Η:*|dEwi7M0[2C^()1ats4`dOcOk wkӳHaؖسWD~Fz54R`0f)9h{I7j،^XUm#@޶P˒C8|ˌ& J-HnDCicanK&ݳIW6L̳gLyVSS4@Yk-Ĝ,K(<"FRe6%U^K&LZVNrƥƍtqvAw^݋^ CϋھK3m慹XkTj |-5DW[=yj"jIj4&38czrd=XI 㟃cPTZR;׋u-֡۝dY Xs^y-@qV;Yܮ~Rq^"eZ)0 :/zgR0n8rMцJܽCSK1#x8j،e`[p#a(tՈuRsl9a`Lwkpqy. # m.k_ 8B"\=9֢]m)egpfC& SO~8Jh)@̓JNR8HBvkl>'OQbXeL ŧ[H{$@R\S,Mp\nX bu!ʾEY:c}?U-en#N]_ݩW{s%r1ǠP_dޑE jӃF9/.` GvL\'ᶪ"M(Kr3z{6 Huj`6Z̏gVohb忒VӀ+Ҷh=rBJYZ3V{jAoٽq+83z>c;f{F*?g 9E};%$ M7i2q%/Jq}"Ûolhl",z 65ڭZQ๕n‰FX..xed `\g#߲t }B0Dp\&׋Ɋ;dM'1D# 0UV']]uXN-hI!Ե2SJ0* >M(y.Au]S?hl%^ \vs9 m;E)jEIjz6|X| GcMd9nkQDdVUw(ɖ}zO϶))kFL IDATx YՇd]?1.b!Ds OOҐނWR+@ )g<خ̛cȘ鑁 k{7 ާZ_;]$?E6hR~x,L}PKJD|5i壍fdO!t'jB'#MJ7p3@Xez > M8uHS]i`հ0I֗4 ݖYJM0=1Epƥ[n5LA΁<0i%;O"t$TsԬjݷ `(#O 5wAU׺jTwaU a D::;ME(>51Y31`DZ~~aBYn#wzftǵ>,@lJ:@>g5Vb恐,s{vFAJr-X=`%>쬞T98*nVe 8C\)T\^3lމr:#p9`{(->GPu7#m\&aK>][MՊVm`zr#c Vڐ-" j'iʺ+C|M_sxRA&(0+ @jxǿ71Rf9g!PB@#:2AJtUvY&Rq.r{hGo~4D?YSÞn=?IEsnohfSZ9u.D;&*Y?>= ? Ņ?KYXB<)՜tK]t‰t'[&ߍ}*|*kJl{u}j>q&Z14q_b{MU iw_o9>SAaFĎ0xAq] &OS.@hJ;ϴWv{jA1B̲Ž 7nD;*sI2ܿR29*ow9zb(ETJ@zExi#=/+%_ܺx ( 8c⌈JbSGbkŔdr# .j.EYζytw%=%!oٌ џ:梵+\[ЫZ C?oʀp ЫЩXS{^ҚQ:kK3&7x-Nz=۲s $n X9Pq"oRebX*ƙ*33B-;Tk3@O9hdwY;ц5bPx ?F69,],h޵eplZx Mu=[Pv̳ܠaGo߼w-ǣg n{s{d}P=Dt]ރĊ TB`nD=e: l.Ux(!uN-Se" I{UQc<eh2Ś.j gNc'̅e5l3pYSyFh['@*Uw1Vg]Ԟqz#d_K"xcKh)[M!n"%m &vE颒 /*B%Fz7Xg!4[şj$ 2A X<$e\Q ܼ TG.Sq,Jm&ɚxNjySݚrv0bMKWkk1Z1f{~2m+yEoW 9u&+y?Tt_tF&FH.OWEQ` ^}?afBttD.b4~(` )95gkaاLW-H AGy{lG|Wg4Fh<2Ly`#;FoX0OD¢V8z7%`d10[?8ݑfznP-"K=R~V3PPLr)2{RR;~SQ~< ˜@{fL<=2\{Z[h*$)6^uIbPUA:;9D@֑hu !x7 10<SYHb.x9 #{I3nd1:UJ9^d%[$ ΝSOml o] ɳɡ/AL]O(,NT7*!Ʒ`Ic@rڹƤ4URa:SgEFFD@D@s*hGFL5W{Ƅ>z'€o$-ɤDG؃+Q _.7O@jy0&ŝdObXXm,OΚ֖XKf-1StJ[ 'oVm&` 6hSho0NGD93D+fe==}36uA/~n'#h2D655D~gMth7Zxٓ#)h%B6,/+L#~IGz{;Β۲.j퓃=4Nםqo{2f?42Guy @^œc2йB<@/'NcdM\dKl^l sKө( myHyaǷ]nj!' M`i4%VvjHBR%`=t4bk V$vtiLtPWxAZ6mZSm& v(L d@ cn@c;˞=Jlp0 VU9q_hl Gh h֖-6bR_F^j6RAZYPƽU=gcپClpQ5,/Vs.V\|.ħ8J#u l⭅`G :Ȕ@'dƋǫzI@7Ϸdc@e &oZٺ>Rg~j;Ƃ?͖ϯ쟵[}5˾A`-cV-;hȎ߳\_äLϏ<QįV~bTh2ಔT\);TI3[)bd[ ܹ6>i c,wkOx<ѷstq kJ~O6~m=zxs)ni*ag%7Bb=V{ce;jA-Vq׀p]h؅V֔yѼ &0 X9Q1 <@(SB/L?r>B #jކ={ׄc Ph 9,%I1=BsVjD!ҽ2ZgSn\gR>\o1[0JT,\^8!݌°%90r=s}/j*LM%2>TX٘L+d\הhW6 =K_ihӰd عsOApV#@S!ffZƠM>40zq_ٕnAPDvcx؞woNRO>T%VqzwDla(;2c\~'0%eE`:gWX%[BFܧkg|t/6Sb {GN?zCmRčD}#Јfe 5YUXpJduZ3XÝq'nt聕mf ~ e (jCN$.o}4 pFv <_D.E^h+k'['=޵,6{Ly|$G؎'.4YU/s`aJn;/FJ,]O?zEw}B4 :l{~>gmO)#gMG`(DA{c2(lbs,{FexD|g͝k_@ #Fj6yE OA&߫![&`ԕkTPO"IɶII̵:ZRe%Wi=v^FD)pv6}!yaCۧql5b~vYd[]/M&.\2;ְ_.BwꊄSQ?BM@ekhęHR(NK'=M]M7\^o/7l@K2clqfZ.*ߤSk}N`OR$?ߺX/i)CEu onAݴa͌1.oWJY>08_bTD7ֳSѢ\Z ᪒ Jәw8jmE$JN0 %/GLFԅ‘^goATDh:@n ꁵTވeSV";B݅ +":k-ϐ+ t#iC,gz!>Gl/ַ^Jy=[@) ʜf,U^YuKSgA&om X1>ZRBUA@U 9K=-2֓m'z!E{F˪ bo*9 u^*.9X{K[ VF]w.KU\ m6;O>f޿Tۍ֚pZ~Go"ݧ\æ$M&fx9H&T F@DAwF.UWiCCa-;ŝ(~h&dѳ!;3zP(Y@M 4l+6{&7%YP}^Te/'W__~xy IDAT) >+d޾~C^V䁱!V.=ЫL;q`Ҿy?=3 |hY :}$ߒ;߿,RҍZh}"*%ZԍOp>VK=7`[-"6C2}Dȁvض֖"32'Lqi| #KnAgGkm彰 }0Yit>T1 j-I*8B4W>%-^tM;3 j4bRڝjcXq M>Tݗ<.Me'C)kjKe$h}] uTt tH,lw]Y}naیkP{mH! Y{l-kɟ8^paqkg$젾@'QD.>Gv!]aXsqЬ"Eg[801h0Ѱh3[Ro?'; f1(hkz;@$[sp0ep*Jԧ^ʾe}}aO?e`鋷k+djSvtwwGw,u=qȪڸ6AN;@nByԯȚu`QHvS 4MN9$-ߺh`٭Ʋ!}ٸc9 n &к?{YrM3#Bi;Ad5M8 jdAw, z{[Ge.=aYoG0ٵtl@k/" K*u ?ӯ~/ZFlǫ2 02;8FیpQ*jɮ!S_?y4ٌujkP8)g67[,ܟj{;C:˺ZcBh6 bnG&xغ+'t[~VwqEl36d;JUh#nGƩtliVK*sE_~7oV>)7=#cqgٳkǵ7Ao}]1n,Ea}U-d=U+ =H9ȍ?n1r;)Y L02>qs>'} ?Ȏjq;م|omY~aX PK>yyo XzKHsl|ek .Z _HT˝ӛ\r2TwqM>m?cR<j"۾>hnncw+h?ny"e-Sy6gÅ^Xȳ;N=>ksPQv`ɎwL S뮫9* g=6Xex=+9}K6@oޞɇxPcZ9mMU-c8-x לӚF(zVD}"YK|;XՠԲ?<1gJg/1?}O:nQdبz^ |;ӬhpGwdk-AatE0kլ Cp7'Q8|$8Z,xLW|~ƭ~,5+n `gvp@OAzM'@lȠbb&LAqrO[%A rYmoF dw)%v 5otc 2PRyRR\%Ĺ=x?cC!QK`2~&H1=g2}s;#Я?\/~ 6j?ٴC`(0]X⻑Y٬Zfut̩ͧ":ZA'1ݎlVeBkEj |9]8XʔܜQԮ}hsiqzg{sλ^cJJE<~]iJtN/VBx Id +L 2D_ =>=i)t<.r;䣷|oM叞-lzkIN3YJóҙƾ7$/LJ1̵8^4c3 Yvh(g[svjW|'ʉO/cA>m-t}{{fե֒)Cݽ.<|fL'tw߫ zϏz e|ݳE?;a>3cE (-͒uB]J ňVńZWLvlx# ?zd-yUa5L/)^&A;C {rf:q,XLѾF 2os[8=,m@ ^r2Ω)jZ`-nXE'A7,iڞ[aC&􁣻Nr|XRf_ x V*%v7LlD3TMSM`bP`T77kR&.pQ\\wl/=iFn&XLulp;")T"MGjyN3(2}atLq,y /\%]U"R zYSd)Lgd!hHE:fP 9l7ڰO_kl*@rS}g,QH ͇8j045j 2$gR*l}iMcđpS`쳓v{{ ̠ e+mѺ,v4^>_lR5RiKz6kh]>S?Sf~A8!RG[@T*R(maFI>#O{^Kvkq!c|B8Rz,t8;YͲL͞q3N٢It~jd4} ?8Ɂۅ J<>h0s}(OT6`sυ Ӓ?Ě=ƁPFOfH_5}26dzXowL4@*)y3al3.?{?GG3hfX{`H%"utLx.JjHN5[䕧#x>l&Eb^L(u1D@^bW;@wrr"0 ;b@\ib[/-2(ũEYsm_CL֔m6aآ]3SخogĈmfX0C %s}<X9 2H)fkdπPA8࿰Oϫ tc-hO_?oww o acŽig<6&"Wd $sT;#Cf7|*|g$ N B \`=Tޢԇ#n7XmPU̩>T؍8nAœoqru7p"}} DuVL_k_@o:~'^a?),Cgv/&uͺio"IѼY0T[_Ɲw~]du]KýɲX{<(֖NW{puoRk]Y:Ϗuj2-pWuːuk$M)miy,>j/<~螠:KYAݧLV{؍ <ƺh hƼ8Qϗ5*klQY)+ oU=ilRWц+4/f㷘N8 )eNi{asQZ(=WAdrvJRq".(??r>Lq緤 $cyK2uws^Clׄzz4Ok yZX֋AOO'zb@(v+[ՅhjVa5B`Hs9N.8v#a~D]~G>ZU_,ww$8=)[*vɾWtyŰ;^Fk\a^{2y_55yd@؝!ʪ@&R؄6h'ɗNurR[Iwe=L)9O|6 GJ= JU5p0#L!s-b x_2 e _zϸD6k3Z*웷_5Λ=`>Ʀ&TK:qؽf&$p`rIe rya6$,#j'v n*b.' vQoj Cu`"67{|xKtPG@ykWpkedZ6Q-XSD ľ=d>a' "FF4[m=%aw}\?v9pf* ;1(5TB@ܴ͘oͨi!0eKP(W&ckۡt]f[⌗e"3B"gdwK ';՜Q|ĩ؉UoR3*x"sy9=|1D+lñtmD0-{\m Yh|O퉉Kvoj7ȢtQm.eEz٧UdSQo믩%dE Ҧ-fh'PO@}x!+fLAFuR}qWGS+ :%0x/bB}ԅB4.^gkNj ^^ε((2iY޼~?^t@] n:CvЂ}䥄L{D8^>2HƆ#ك/!XcWW,3:z:Qj%c S4Dkŧ̛Ng?ߏO':z|/_o>cm%٫gI",2(<5za]nm/-/5`EuB hw_i@-*ЦV0h'پe˷\yrlc[ c){KqRiF.](Y)`T﬏-y#W/t~ PQ|J:OI{Zf lZ~4U+>-ѿڎ<%ķ`n$+:ܽ74bo'\I3ie奆%{*̫.hk5J2sefX⾙BRT>/y#+0yN9 eMLcxoIj7]&3RZI7I_rl&:[ 8 :V+=*8qmI~9gS4m2NK]Qp_ o54:(p[K-P 뀩Pu-XZ8Q jvh1E͈<oVOϦYgV]iGAf@: zK柿t߽zkduglBXʛ:!ߘ,_e%6/_cpğ{ yJuh'Fo5(Dejn"e~ z8oɃ\D z fL"#ް=b Q2lNvq{%Z"Z+R}M2vM/E/w>= 9<LKo\ 3J=o~t0psIo<vS؆v/l.&jo6ṶA: oO>z@1!m !aO !`Vՠ">nX%$])] G!e`gs&o)6N7P Ш,zMLnu٭jU e^J2Oƹj+jL{6WОΨx\:eG W\܂KBsn66ndFM)HҦuK$ӼW^(E}ǜ{ijT  L&XkA\ݴ@ <4HRwe!-j:Əݏ`+K`2_5NT/eEk`_KgKs"īY++$OT+T۳RwloDlG%|Hm%80_3|*9)kιj4SG/?}g:/~;|/OJ)˫^·j|2Hs|X[x1F{88gD%e7C/ F?$%<,V$t|OIo!*c@ڈ8QqEEýҕ,zfXb5ɒ8"Z 7޶Y`R4$"d h"g+Wm1$S潦"XR g{J3m 0O1 ?~}º"`7%.D͉e3u`|~+G|G`x B7IrAQCJ+,Zw~^QE'dr^·yx{?ktuj5cYheL1.0b}س%{=1ZYy=qZ~+0Pz:1e` -QWE?t&n7Nwbw͛u_F{]?$囎vݛ5$TQ؞lFPuRZZ2Fd'gW4Y!NJ9`9uz$KM.P0i{NʧGNS4pDmtrX CnևۼA"EpAgӇRg9[8[ 6s)JAs"@ʪN~4zRzY(cHn5d)/&`9e :2 *zҶwP@0 #\ I/Dy\\zɨFOmnV<?`AhU ؔ2JvKEb ~ϙjzNP{JPx͂ 5&u_+Zi. 6A]l浛ʺjq2 ~4ibyVS3 r9#ُuj^d٫/8g@ȯؼlqi-]P^ß( y'XPĴ2)AJKJNfrEb6fCLu|cFE]tFmPOMy^_vSl6Ek?|5}td]˅̨DϿ~i*_ٶ*uܿd^ʘX_ Pɔ]+)~Hh,`sm5Z{ "*EWCV@= YRTB/^c6W{`0w0J{$a5V[Qdrf^ϤrݜA+a34mHi'Q A L7 l5~.@*V@a8+?G@MФleJ٘A[M7R@=c,u{Jn]ycF> lJe]PЪNu\161gh#f00B]XM((XMg{´VIBOBO4@ffnA5iώ 8R?oATg;Jg 5 /0^Bg+Xa*SX=g^V|\= n"ْȪ+ g+hFOE3VF'SqR \07\2WG'ZAhk>#*.CF[)K϶g VQ=6 Y5_YµRL|웅wT(/^|M,Bv M* a?\x 4^no J;^wAfUD?n{:Sy|9M1Cf)rO @ȲEB|taDp /)k {QudG7n'#mFCd;z.BZWddҗ»t{BWNrJ;?5n| LZC@} WS̤>T]n]-օzEs3WǿQ]/]qH,10< r ۼ}NP$DlTFlwtw7T8:=GKhk˵szu7+mqFzg'QToZɒjxo6m\ (+sB_mYK!$iu N'ߞ[ -۶ۚD=lњ-~hCP8|QvS#ޣ2r8s.7)e)g U~3%kA3%D ]h#"dӠ[/*4cU{#-/W:ZxZ53%!@Tw YRT O0kLrYe)2?KNJZ2"+VJW|7BG ߭Z1p4-nApEo6q:º}2THM֑Aj%(m=e1\xgۤ:|UP6M J, =?=ۼ^j}1+=u蜡mg'.`e11?$ FϜ*AiF;{U%cЎ`?Hq{ i~Vtԅz"3YHu<ÆM͚_DRͽde/aITvt9{{qܳI9?kdYpw'ZSosseM;v d݃2nt^uȀٚ`37w-޼z--chwǠ6?|%,6xf^g~٧g2`u \[͖ZXzM~B 1%>rS^<~6o>cu/ŞpoWfqg?fr3~.ч~}F_Bꥏ;,S^PKD-lܐ>',Ƹ+%DǙZr ऻX>pxi:k8.މ+cWj`*3[BJu&_q⫩4R f,y\RΉl9ġe5ͫ]=-Ԧ޼x؃<=FQn;_niAxT,(y//QNmld$3R#KI0Wt} ku{pKa[BP(R ewVBpłNfi&g1emحf,oЉmߐbˊ̀^Gu2R?z7qEjk {z s^OOO^BS7-ʮ{eVq'2 ;nz {*sg Wch穋x\R{kCY8 dӘJmjlTP(S>Dϻ.RYN 8ܩ/v3~uOB˩W2 ;/P|/Kl7/p(XWpwOMOo㉙:hF~"W^mkuuЗ{ú31::r`MQK݈>ٳ^]łE~t@D(JO;qirLj2w*bcP@eX,]paZ+z cjG&eG,UY0o8ow%s^>`y7XϡڳC1q1k[EJ6m1i 5fUO0ͣS|whXrEQz[_y2OQdeToZpN2k蹜?ʜ+A1fv\oxjBsB 38(gSB@em4[+`FYVeOjaBs[Nj2[H2E5 l]V:k{\ŀV<$"+P5ԯud73W883;ؙ-7f+hƨ1,3 xl'}춈yƥZ t/pTZ?wtrgRЩTXR6z\n'CPe5m@d7A?sʚXan窶{i1G޽A~2?))6m[R`LȄʴ6ZO ̘[ygWRl$kƅZsSOb, 2DUBr[Wp;G>&e;'Zzh^O{-'%綨.Oe`>oiJ;Ⱦ 9#UI7Ч|B~ fa{'z:-t>-r~}D޼s z: C$' cJWnj`8DOp>|{///ǭ^kI q zԏ P|w-ZLM3YlƤ 5 T оKʷx1V1VJqY]B(_[ⷈO՟?5"چoe#h1ɫ ?6@r$}1Oc\8[1bgmX޲^Gmh2#c# LceFlA{ةp`I.n`%_gqd'S&۵dIkdLYJ8DM}Ni)&E0@ X0A\r*z!M9cM눌0Uˇ"V:8T+vTUH؋+[Z2]6KttTx9TcN,-ȧ>ց~>;e(']J3Vr{FI>멇։=X*4"}Q3'pX3ԦiNK:gEhy,y8)1FØus zzjɵ\+#Ɛhhj].YDͰ¥\.xGTiķz"qҴrP&h_͟}m1DU؈J<6Gk@K*5M@ܬ]]z@GrG׭Ln,0g|ZÔIm4#Elb@1ݳzoCkJ2ް o1ڿ8 Qb-餼)FFk@ 2j} DB ݇)1^=eZIrY&TQ8),%MPn-&8or=C0 p. '`dc<81Dd3d`gpo; s7g 7#~1X]e^3Ė1eY0b2Ck3ZۗEJ@!  ŪnZD6=Js&"e)X&X-K>wңA'yTJlQ_RƓK0Xdk[b{N@Ս>ky *M S/\ l@Mru{UoѺ2nGmZ v)>,eSkLˁV,Gݩ q6w5Z{x?r9Is>6cg$ GbTPvπ/;EY\oA4>F%Ʒ.fI1ak9kG+na]y|XIpW#E=Nr#.H4NRc3l Bv{q6= &X'~Ki l d"5 4E27o-R$kuN|_~+쪧#gwjyxE/Bo?KqhO׊N!eҀeYV3x˿+pӑ؉Y'Uڙj8:%kʏ-|mǪ__, ʎ_r׈k5 Rם,$n^$Į]Z;lsĘS`6#qӃ#@qˁ v%?ix,g"H/⃺_V祹/ P7w[,&qwJ! ݲG7a ,Xm8az_DisvmPg tK=:h" ~ +DfǀvCEiH8JX\W=!A{@[\WiH]G!(gJJ Vz*n<@h޾DѕzZ[R׍1}F+ְ4݅H-p-<|IR=0&?1-L5U \\u<Eu2  $4l2Sז@KQpyü͂qM([f>=ڰzZ)H6`w# I}`3,߬oh9[u\曂YS4ٌu}8OZ_߻( 3i ^1{LZAPMR;IA n\h75PEK8+ _Wnl~H(YWBxvҫWt:㓍~kB=y,? OyIwhd?? TA Jѥ#t5^z'U528T6g>tw4dU۬]s~gA??@\+=:g.eg+NGGw;C܋:?wZ+Mt{tmp*52aɢtd83?~Eo}D^ Gk|*l ˯?N|^tƀIn_}Noh;xMƵLPE.-2Nhd3|ΐZ2`2RNK_?ܛȑ%KQaJ$*Vþ "C .\m"#A?kTmt,%X: q alU!%Ѷ/.k}.%`Cݿ `5h1qk#(G[{|<bmW%=`wa@7l &#y^?:JoncSS3*0'oe?HH9%ݸ1?Pp6׳e<y 7Au8e#p46_8HnE2_Dp@s J $(Z+-&J;EM,y @Hq8dkxA\AkRSC@gΓQӜ& 2/I_x0/z:Wk.yxURjqfeQ4JKBL7:07LovyG hOOw\ϓl X{|VBqdTxhWiakNyL%>[NJIzN&e=}b,8Ϫ …=XaR1ɚ@RGAT͹_>ҁIkuSapqYµ߫^{kي)Tn0U%-۪Zu\ *e)Ϸ]cϵ]rܷ, oZ/Hrn=17vChAn ٪)#ˁztGtr4v Ygu˅~O?Q{u;xMثqy 8e_JpQ(clPy%O?~f0XV|YEqYao_Ͽ7) ]Mh,eeюAMgDgzzc?t.*JtkkW@H/?-KͰ\?$#괃 5dQtK :?\\2;~1DX2P%X6Q@JH1ʎ*5@5\gpjP%RSq562xl̮cM [{ .n`Zx~y mcF'ħLpr, !|v3+]B%KD3Odd Vϣ Ǝ{g.e{@W*^h )3єuB* Vz5ʥ;#魎㎽y>ܵVU"8~P~OR\mk i"{ ??Ju=jGë6oynGVN ?-;dL*)L#e 4U=X,a 'F--bPБ,@C;W+X-6pa<I\+W/im'NŶ^`~JlTJдn c}GxW#$=FL'[uGEINWmTm۾T_lEٱn`({J_n :S?SkϮkŵ2,Yr}fl'w$4JeFE:!!X (Dې0_TUF1 KWMmRI3"`6?Rj/z&Mܯ2*"66ծt/5s)j_CC^Stb˿Wl|-oo<һuKAkmjj.y_dv:&oFVq2YJT#\~W؅`@qzF&&A2R@bVΤ@-5& أ hغix_#ײC@!;O~PVN)W۰:N,QSޓV=9A Ӊ0jA'URNUu{rJYWڿ#ε͢ ;J b=&x q85thUve%325ЩC+IsQk\ ˟K bm=eP-Ż5 4W > g"njɄ-m+(%{a`waqR :N *mh6XH{J@)Fa`Yq#Q_ǀ\,09YXeE5#tFj//W`]?ukXO0iM6tuսP),GN4)ڪؐ a;↯WXwo_ vDV&B 0b̠Rvґ&sWkm<-+XlaZ r&:*2LTpޠ |=`&\$c+X ƪ[CA1уd۾^_#ܾrA>Ķ ;|Xaca }pwjt<FT=OtIK2 ֎ppZo#YAT⓱}'G^y6Կ5 Uқ踉=N?!cq]2x/מS{A`+߹qNseW@oc.7̰/5)$8L b#E}R4ēs89<9( @[ʝ 4 oR蔷3ָؒ>153)ؾUmPplAG`R?$jf?P|xу:X#}qkbq`:@!K}W(JCy/F<ǬHV6TSZ8:%u26@ _Hp@`cd:?֔,7pRyfα`ZI#Qe[Kd^j'x|| zQΜȸ+F:N, jٱ ;)rvИq/#3!MjklfÅw417Sy *SͲN8$0Z` V#I`Ū#6= t ?<\ Ylv[[ NVZT)Yh/((xol܏Kx;Gx#,=ϩIR39wOO>*pDF ٮwM#]bmsQ,`JX4~O#yt",c, ^k1Q#Z5%襪 =^뿓4:{FNh kjDŽVk9)hF!H g1R;C/8>22^e1e,Rb5D[,1}qNNGch)gD驪kQI}4RJgXVIHuc3SmkLWWS\/gi$@[ tKj+mr7wpY~,o{ %+>Zn8"63=Trb8fTE02 Օݬxɞ RBċ-kYPH-EP;~XKҠ;a9 lB;5_^^$ȴŎjq쵽ݎZ! %Ads}c̋ \PkT 6, KO /o*\j2cp=Nݯtib0U/)MkN S @[}>XkFT˪3Gw,<6a NKgX2zH!e,p3c%fg;F$nzW]k5_Mh[˿z.ٮ>fa$W ZKEAxW1@A uW6L%Q8Y.9f fT D,V?BT"Y640ϒ:c]߾:^9MNM'-CH|`-=od0=vXPe4@LRI(ɔeId2%+[IVCߏ?6\3` 0dZh,O+VX #іWrr лųY7 s6P`M(d^hi"g} >(gvdWXc6FQ|NV<-@. Pwvbb x{Rj76p,+ Z#F^[1м?~ /kp a_- (*s _IЮq>&apx(Ui'9vѵxnZù@SDplY M./nqo H!v7[zEke|잂^R`I~:ӏIb$kqTeQyA?$2̺nƻ VkX&!|2Sq夰@ykO &AKND\;dz>77;|ph <> bG;+ j%:@?}G$0p|9Q[@\ٹ_w3J5&a`8`j?RXYu-r \c%DI܃J*JbO3+izY 8pSx<+]gPUEz&iHεr ov%eϾ_ǟ- O_4>/:,UO/0.VL[&#2bؒ p`@U?v [D D&U6I~}{~-GoJWƧ^;Z+ ?/guxWrR^镃\~^ ^xmēizDBley+mW'Z@ ;-]Sb5QHZ,o\x|0&TZaj?k|R K~|6*]:31>F$@3d֣N|םMc$xH=.nRcXl&6 *7)zũ)/;MHAt?Nm@4 <: 8٢/:F\вJP2e5!LYr |\AD).1Y@E8ם|H~$(͚֓\#K$\=VkF'UNfiʳm) pE>f?Z58rtݪUVnݯ>›t=[s5֛S@y2cQSiRyC5^Z 6P!E]+T"QF 3{@F6N={865+: 5 ΏJ,N8&bf ͚Izo -#Q3|@Yu/5TDs'k? V%lO?O?—/p:};A u%) yӪoH+ADs_VzN"#ǩ.gn8[7~JYfՃ؟ XR` T?`3K ≯d#,8n"C|pj#$bԅ=lM{˰ݾ~|7w YfA0X+~ l`_|/!ȄAæϐLg LXΐ FfGNFnb&rZ[v w, E1.WбoAk<9ܔ(_ k}ׂ^@oh_z xzi#O_q?g=k^ S\ ϟkM?F|/Of76-WkRkwU,O"U;D%RՋx0-S$~RҠ(%eA[>*UT)B!IX?tO')lMiN{@ҀC0hԙasDci 9YU&B @ ;OabgeФ9{b6 jxqryB񳶙&7 uܳQkY@ \po!V,,h 䢤>P^ ?5c Uf!&( ?G-ۼ2T&k/Lv>j9` &b}[b%gk1PtS\1M [yHB1?^LsX0fP6HXKr֭jE8(XuYY4f;ٝ,}r zx#ӧ~P|ϊ¶l~IuڨA@w[*=1H CW6z{sM@m7 Lժi㕴dϡ 2Al7P"O>x.#g}yyMSM3K͢~| '-װkN:J(l yo_vwC (DžE@~uh~@ק=Idl:b Qd5h/Zr!>dt-" F°[ӞtNJѝF %̑og闇=^fqSS!:˙vm@:<>2ϰm1w]nÝMdȔsltW,7Ij;Rw`_V/B{W2KKf6w{<+70S&Wo1shuU ~+Uެy8qQ{" n}QQkZ*2&6WEݒ9+eQ {N:z%z%B(#f.F7 +aّ|uD)$RdϔIP*=g"JC.Lځ*^+N:?OٹU':+hip)ZP 8Wٜ9\vQ] 8‰;@V7`:wKYHtN W$kek(DUU4gѸdoʳr~[:|&̺f7,)(FlHh찥؇ow^1{Z.U R\V+(4.' 8h3^!kn ;f: ى0D&򮖁nզr@}=wt0ӳmL9_1= <zokXoWt~̼oF[e)3 KIA6e1VET]1iy?=|yD׽Y<(*<?N` u*8 nmsy<µӕ+T}iID1ZcV5 n$QF-g 1Xr=s'O2оr #P) f70sšxXӰr!6-1.ԪBEvw{o6N3 aOk{8Q ѿ э >v=,kXj.Q;u@b릗Au |}zpolJ-}5?+Ԇ1 ^i'' (S᪗P7dB?`o~5HC aPMw墴O7Jv$&8$"p3eAʛV_OJ Qh\V6U~vZX;RW%p@4/5\yc~ n+2@N'RԅW͞^otnm]5s~m̱|hzٹb=wf7Zkk H^|i)PwkX*HLZ:  6 UR}ӈ){R]m.̞HP 56TLed4aPة,x#VE1YY e&J' `MZgc Жo34NhUgJd%@(j)MN72lYt PJB1ήߙUѽ;i t|GZ>{ AVD05`IJ HFRiC./߼}v)lݼ}<~cN6q)‚𠤛I@8ss1|g%AiPE> ; @'E6UJLqd#{UJ\Z)kp8at8\;I:?w.PQߍt]_}MYyDs%S׭]=|P`4eb TZ#idz3)9< ݏ?+%JNl?k%5'?DGEaZ1[gjk , $>i{JvX@iÞ֎bpFo-_jrbκ%w~wï`6F!T̰M#<} v@t&d>z;G Ddak`Fz60\ҁ-C^nw[xxPM˼a7_C;f?++~eaA B8;2!Pj/:tzBD+fwьibq 4~P{6̂p8q|AxmBTfws)꒵/;~)fA$ruڎ0tMo@[* 625r6ǞHMYMm$)rBg8cG,câltf!GU `hW(+p IDAT˲@bsEe*OZK3jAReMXQ\y 0َcW{&uL cEA38bPdyfN-k5\WUgqkhGa+6W1 j"bam tzy|p%$m>~6rj p,, AG ddu{*2lIl o޼N =9(dU]w :=D'l[=~7_sWuﮰ^&3,,Hp79g(f^.&81A<[-WXb{7D>nHT1`f40::% ѓf[ Udoen%!.Y of{_/p>1 WIZkTzo)hɃγ5t`iEh PYWU;֗%KHnOY Dv CP\r a= GX,*tGkMP5Z=ojo1.̒=ji tTB-:}M='mz<ޏ-Gl)Pn&)%`*` Z/g*qډp_::X ɚXqEo>5oUu+#?Uw^TiKZʁN-6RÐI3tps{CpXu<2k%.^_ 7͓>+~[~JWl=w`d=aBxP^ss=lY۩\!/SsqGٔU;U8(*~,g*oEc4wHxb*O&Wtw?qc|:0e~Gc^)̙4RuL@n+'fk"`eд,ѰI)I)T5jZ>w50/_{`zڨ憑;#\JX~n-5:na)_ϛBiaRl$윢d 싚 U޹Mc[;R)=S|x+pf틃Uʰ>80k{|1ae?5g G-ր-Z4ڮ9B_}D$W: d9Z:K:p6 RUB]2Y4&v鐁+b'Qr L]>@<K9>f޼r(mj\IjcW_`[ s:$8C|a@9NS#L cC~apF ҅^kMCׁfzzz'b#S‹ߤc jc8$Զv;R4$8Sfg9 `A֛-4쟿RW BrrL̃1]0-?QXt3SAHfGA2,`~uOmMeu8%lIA2P\;Ri{in[ N0? {T3 O#1ܐY?m8ӽYR}KW*A_xGG0]]6R߿<~{xz9i}DCT+Y6<;vi:H` TMBifױB g&w-u-aՄI%W+ڷeZ,3C2KKR^Q|:a6?.]FO7! [ྐྵr:>o[a,1y z^`~VA]uџvRHU_ܾv͎U;d `,}rm*86 Χ-G8p:<~ IE|qa1jB,e"[ BcAiW,[W \^o>f%ZYgwe}nBQ}yPAػێ{j { %y!iX/NX#'^58[ @zƿ>L+Kglp睆sM/ r|}$;9 ͱtMAp6(Pu*SNׅ!),-UE\VS*V4'L]/("Y*'Ǜm TI`pp֓45B)Okp1soID^ir>8sȚuEy8d:),p?_^51C(= %#./PD#CkX`)>~{ڎ2k&~ثa-rP{ь0I؟}=Fq@)k+z'7c3㘧!& ٻiyҒ2-Akp6ryҽ3I.4P w=<~ o\D"Jx; #`]G 28tUmfsYX^1{bl( LH$Rdl7G8I ,68qߝj fvJ$)|75q0 &WSuv?~6YFl0&e/%HC &I9װ^(k^c 2V yk/nc-:X,{8PP'(s˻Rp{s ܿ} ar:3ZN\v-|~|"N牮뜥dWxЇ,١_j 3deaLtZkd)cab>@6ۣ&v 6&:>?# 3{ITc66-^}ӶHFmaۇy盢c^ B@JYǪl$R6xGLb3KtSdm(fup>{I,%P/Ob tjӻwͽk$JjLoG8KX.[Xh^w^"=ۺP7O".6qAV<3wΰ./bgGZ4wĸTk,0Ž4R}ɞb?~GI5kXYHDD3`&BQ)g-%mEZ_}$ VP bN۹97Fڄ*GMA)Ptu_H43幟 SXVY^ 7B^ "ki$v$)͍2>;xr$݉3^4l5y'Pֳ*fE^~/óCF+]b,p :Ѡn%:1 xY=bT-{ @=P!^)0Ma*^e`6y\cw}e o 5|7i' RY9zѺ8ۅۮeЯnu>!?S%uuTch}O+2J0?Rlۙ:_̿>,)Eƌ(ۤNYJ[@fB[ 24jR@̂z_2SAGTGb[m*|!v d] "ι@%JOAj`β̢pK U8LIP"`Z]9}~( $I@$c Dn,v7y54d֖cGvg# 9,{M]jk ,VKJ$Ft;t ?=—~R''uھڭ@ ^,e"le-9L`@֜%A.B7+kIR?;[-Ju6K^p6b=*6b-)2Dx>l 4]& 8";[3-2G鋝=iy.Vff[dLdX.G !,9jX-ITxF@8xyjo`ao(u>xL--Eᾈ~JsyXY.Xf ͆r~R;)EVG()*" N*װXID qHR}œ=;/䭣E3F'ϵ@=v< o4?7蟂_Ur2?hdTxBMH;I%^TAG/Odڅ1"zoku~P [?SCUJxēz`[qډBYYCU^%8hN ł2uEaS3{6}[6:ȭPRĢl  dQF ꉩ]8(;YVLG!qM:V]v5|Kߪ]EeJm詻YvJNrcj.3n'.ve:󘚌Rɍq@_l{e@d.;D?g)zP"?p:^m!c !JΨ (j>`&=І>nm٢b톼=c@yw/Vݿy4;0S]s5U[#f̅nE&͢$4PH-P\{JP抎kLQrP,La'lҗQMP+Za?sEqE WeqoowlN9 05{ܱ HNhRV40vTplExtwVl񳽲`l,{X,aO?G HH,d"aTR)3Vl?,k% vVXOdVMUER瀡jɿаؽ@[DZ{v E`rjv 鸇HY1T_%F`K ~ۇ5܌"SVlG~_NG8 _^UnTR'Xu >߽^YqE{`%=[s'^1;/$)$,XZ;3?#ȉ1KXz 1)SSbh~vreDg $ t2"5?$V-8umo3OJ"LGrҎRʕ+)T}: ˚(w|uƓ/مMskZ([e 8b{Dz|%P0 \:PeZ9M';~W{9K0*S3ܮA18 -(JVn /3%zo3ѯ>h`q-&@Nuڴv2nS3V` "Pv/ ݒ:"v׉@~9eU1a7 UqjZHD8IU1 lDfmaSe.xZ]@<(؂"9a~-0t>a h}4 105 ]єUpFS<~b<Cp}fӂ [FWRx,H9t6l;()f. p zE=糪]:{qJVd%LsRz7ZYS~֭GMl"biqEjވZ++)k^D28;2ȶndm5kT侈p>XG@Y<>>ׯ`wbD @ܮ&y`tYPY^]9 q8[_{IzXmp{{ ?}|^6[--YS(F"7TՁdvt"*;@7Un;8c|*p": 0{Dx](\[)g,ARrԺ?O:T-k-Aq_#Tɟ*<(.-PFr@ORL)W*t[ڵ-:8"h\zz'@xϏ3Xi2,l>Cn_|GzT"!-tu2|'6 7@}9.#PvqQ5J-})RR~yX(T_%q3߉,U6fI씚Ĉ]^;20n?N ]/~&_%CPK2jTo_!D|`6X %Wg/b)C@k/=w):DhX IDATVe&03m\j fάBN=@*YFѢ ?4AC'52w8!Fj3L}܅bN /ab^Cu>U`ߟmDkNaaEU`aمMXOۥ98ږW穬Z8Fh@LC!t~P,b,\IN]w$,C?D%{փ݋1,waʼl׏kRG+LkKʂ4Nm ]@ q#'ZdzFɬ,ןqw dEBRh${[o];IB:!&8mQԺf[{% rfb1hA?ƬybkOI!#3Ze+d:%`I=׋**PvC2P5 O@n.M1 Z>aM:Lv`hHQәRdt\b8xMuH?71ITGݐIAP-U0[Щ- dʶ̟2<\ }#8%gosb[44MS7[EgdHN N/{x>p ;Y?fJ,9#YNPmwUO-߿̏>ÿ8Bfd2mO-1rA9,kĥ*g"M4G Ny" *p$LvS3BS& & =U/u+3O?m=`!ȼLުL&,Zl6tbda?Q'\(J]إkV3p֤O"\=TWFx'_ARN l?ٞQş2' Œ ̳d. '4=פ~>ǽS/ݮGD"]Vi+$%G* wzgg3c Y G3װ*ل~[-U\a4 <:Rcl 4ļqE|^wc!k:ɃgOΐ@,@dV ~Z{N-+:Tb|uAf `L[6Y*h֗6sdl+)h"H?ƫ˻@@;IP \$B9dk0qkm~rM48`yTSiUQـϪD"*:,5Qotlthn=׾<=eEw(B3ИJSbDӹC 3uMTMɻL̚`+ʠbZi'NҀ32L*$TўSRIJ`Jg"HKI`*iJoخqKd2dDJܤt"!3\_`,:'<p?p>ت eq:hYS|4>Ua0WgIcB&+sI#Mh%)D pf<-H= O}vAHPF« M>lhM4`jxM70%߽޾rM]$enwsR(+`Xm1Q ۔+L=ؿ\&i+;.+?軍\5~.+qI"xx ӂDW}epT?DEH; ϿW9AXEIBl':v"&!qF\JOG>>RGT]S!ED!î"vẕkY&]e"x6 ]5Oi(m07PjAUuj'<<ѨX2֚qy#e3@4Z),DRڎӬPbD!0KZrlAMP#î&iEWhC)\PL-_"(vj[LS9zj~J3~l .fN*] >){ mD \|cRߝ{v˛$җ_E@njM-nH@vkTzѶ`BF1zx|#mRLnW)mi%BmL=K`͂ĎZ*w*cWjbn?Op81* 5% $3kX Z+r,Pp0t 'fH`Z ja)]aHK$!RS̖(H;p+rՍZf#~b86NpJG.½xzn/P&l-mhLA`wA/ӧ/ BpK {;2y~E=НtuŒ p@Xrr,JQ_d]ZGa1\,IDc1sYZ?Io/ zu30p#( rso ᵊ}(q~,zߒ47{4kQ5; /ө] $>F//Vmر63gna%HZN)3?gL'`THCXv Q*4J6m}DmLA=O#x~dAhuQGN(?lc-ٞIװl"m=mۢ{hq{j_^eb(WobUi,,d h$XSԊ0ܒMe`N"9B'Ů_QIK(G$QS+6`t2N]Y>K6{ 9ڿals`|k簉D)gy/B)b0؁Vՙ'!K&Zeb!m#I q!٨Vo1@Jax)˜vl+)P1!ȳhfYYG@jԘ Q{+ tndsABebJ4g`PUE7Z=G:); Io3V 9DED$n+Q=ޥPh[W w"_\q&lEUi,vWoz"lw˔;; l{*{Xm6?Po$u*r%9/?J}g!8.gg1InF2TW8j#rDrw~O9dvy*NlE|Ȓ&ZWt,0U!"rK/`J/Tх cy'#=lo`o }E1UݾʾƒehOowt(~8+C/yE}G`*f38@h֗m#{3~Y4]X,._!Ar8\r*Ϝϡh>Wfdye_R.8aBBu_k8#bLBkd_]ǣI##'vo~kzyz'>JfD[!ڗ&u7&H~Y[jO􍯿k4Ufchi;GxM?`j,T6RCf;ufaYð ?r:I2FٸDxaz3XP5 &7Exr*985>F7wrj؇zj?SeYC-;k'n5kie'dNg-ԅXYy  B"i{ɬ~XBm Y,7^zZto0&5 ZA usN򷠰oK{ڤMßc.nȎSӥ16mjX)SB-MhvD8`ӑ"SWԏ(!|;훁TGPTqlsȌՠߠrOAPq;}0a;1vr+)x1>3d d40qdtl+5SՎY2 艋8Jqƿ`0^o苬K(&WMOvmfΧCD0qm_Tj6ff#au턞vy}cMZ L)NbUÂ@UkJN fPkК'GEOmeg0unWꀀ܈5,B#0@z~zfs-,LNR;nqԂnjϳ"ʔw% @$+Y cUIzM<5^~2t:*ۻ[8NJT(BJ#)Gx9 u@L`iW. 3 D%+A(pL'stK 4r_^A(0IS;Y"V}{&%W43t|xƓQ晴lVrU1k7ܤ]ј4t-a)S"V_Evd;uNO-2c Xv֖[% d'Ƒ%g^ eORÇ;~ -S8f5Tp'-+B"gޣ/ŏ0>?T)& ϸ?p鄺"KlЗ:g@3ezb(OLѿ3I0یbv!p:جP _5 ( 5GÊsǁ9A|A?g®:KP 9gmCcM_a+?JN r% 2ܱڿ_S/g('_f>krF>i0 J Y[]!f=؄T Rb=RıĖB]:r"H}tZob`- 뵀G#G3oKqFȤloJMo8f"f>,=߼8T)P .4k&kig cqbNtB={?zn@#@)0GTP0[Y.% dRUC6VNHpk/,Ǩ0$zH5j" 4#r LӚ:f6XVrHx=<>|?!ETYIi+lyJKKCͅ$pW]2S Ab@eV)}ӦKc#Af=~ ̳oYtgG rG@R) QZ*AHz[X7##_`O Hb O2<Cht<3 mn ^vu8 <F8,Q :ubX?콋#Gr%W䐒]]VCُzHdF\GEr4#V3TW HDs/"é0d#, Qq'ɉ]:NnU1T5e ?bZ7yw<&=8/\lۻۗGB-]c[inw#b7#nG`A, UƧg]Tzt@c?TNn5@ְʎTx>[24,g7&867:<7$:̾S@8D4 e-4 #wO6 58pəgMTFwb \YW Ws `;}A1g:ha&פ`u 3,.YyMf!{L#4}0@tvzwhV x ^ [ߌ|mS:iRNg/Bրb׋+\1w[&\t/3j#rV`6M@Cp2z%`2mu0$BJ&;P4/Iom T{ʸ/;؃d3B+Id>ؘp%өvfUWswJՍU‘٠"]^C&[n,ИLph!@Tm}zS2EM!+܄ו끑!w0OՂ`<J.M+td:uRFp (c 5#EJe&n$DjHh*Xi)`YY*4ّgQJmO,ٳuI- u'ݢnv w=6+"BWh&/gų+Q H˟@1m?&AMUFU/U'v%d@hσ+8ob-9)Fԡv!|d:Rl5R+:.pRO[o6H ru Tz֫,i*p@1?Y1ϤUs8 ς9lωEn|nA'?/#x޽{UO䨂kzv~;SӶSu):CH éˬ9_# pd{P3jbp% 8q`qk~ /Op$w aJ$`xB=3 IDAT\@bWX'qz'an&h1qAfKV kX$z3LǃIc@EH:Ha K|= )1ZEyے`\nn:xE 6gaUD=KEv:E~'6=16_3 b>O1lds;/'L${ Ӂp#}H|-N){r*<9VYb-1QB:X15:5zOW;Řyx|^'4w6-[fDRZV3g2: ÚT]B)ŒdL* iFLD]2:Xz#˻,lfsT+'(Z~FW`"ڱhTj( M3hN^%|nQò}ܨ%@6Tt>F_?'EnOPp.O!3b[B~@ G4!>aqڜ\HzՓ> y\zU""$cͽa #PyXvZ^jX|4lRF̀'¾!yΦW띓g?9^NGf `[cЗ<$ cS;qK7oTI [>.3 +3Cd4xΚ?c&O_ߺ.Qb sl{Z`V<mD ) nF3<>>CGf+<[ųRP0]xŵ>1D ]:dðs|iONAdÛĒ7; K 4R`i0AۯEqS,6_I3@ ic'I=V5'B+'ic@{J*M:o_er1 YxTN?#' aWwCld 5C#dxZ.lx44Wv*sׄ4@N6=aA*UZ =Du>lh+b( DO W|@{V, Ɋȋ, פy Ӧu%,zS!jL%لb;Dj!NS@;A,0=&5{^{"?$T[h ,dUܯ;K"}M@vwP'8chƼ~$0uc`T%T.2 VeJ> [ȖOv"-:<ͦ;Vh킽ĭ4$"̭Z3m7+O:lSIeei-̝eAme{Az`ݪyp:$"{&k Re}QS_:*NFg*Y?gbQ'<'8l;J|')AQ$<ב+Ra;+$EpJnlw3Lٝ(IDZĀ V* 6a`m U7ӞONT)뮃D1;3s*dq JL="eY]DnOh`œ/(tփ\ۿIJ0Kg좢̚gޛoo?| ;^3ܢ5:7Uv)[ךWWp?f7;]{8%^%,y;k cpaXΕ_o>ujױd9h"+_>2p-]%Mz^hwe__! `{2"NV B|!wf1 qD`t@@=: @@YӾS%%-w񓵃ƺ~`18kre?=1XU:AÍm|1%V_<WKa{p㘨mKa`yAxĤfjkL ȂSc =QXtEqF8H;_y\VvTۆ Y~X< k\mLFJ#̕*+M$}Zi4ZMF%^ɵW )mxo\baULT0CARVPj k(/APf:u5b-%9@9DX ^} Z왓$dkKGBz89`BH,RGA *Q`>qpcg,>ZM͆膷jaQ@P^9Rf\С,}㣶@~.^[9E0o<=W&PKl-sfy7rmg;Sks`j תm#m<1Kl"STIvt$e~<PH[:!'I9cGq#}bs;DN^o2*?Zx. BSGr30bXs@3\WH‚P쨸TyU8_ Cf[T社p G-EnV}K_zJhJ!NL޽;:+ r,-3ׯ$Ib~CLҎX2ѺSǀA._+qG̮SoKhƅr<k~GH+S7Ǐ*<&x~&#ޮp}s plw;(؜ $؅OZEUdM$CpI;HVP*Ux~~̵egnixsȱS^fwU[y1D=@y1u0 No6+XoU_s_ (8G 2"l: ئUDaN e1;)vlGа51#G}f?浆 |ItDy.p@qӃƕ ]/Ad x"} ?yb)8$0Zlq>}Jh%4~`t7ZKv: {mu,zd8hc TVM3WǑf  ߣ=V+~k_b SV||ji!7Ln;;XڝL$3螶R1>ٍVՠ;5[a׶ِ>QȬ{WfEA1u"R q>LS}tv/ӚL莫EKPL뜁[Sg Eb!O:V;;k."&FsHyEɂ,s$;jXD(lۤWBi La&IA`{װ\WP?Q_UD4繃È}Rr.% a`L`J?\tUs}d ^Y7HN\L{2&P p{}*gÊ/ ơ}wd[\qkWW<γ4X"?6=]pvP3άQ=fאX)#D6ܣnd/ԃ0Lt9{Im0zͅ܅=YV=9 cOj wv70 k#quQcPOLӯ"열 ܣ+%W]##\ DNu~N'C6lV=j".wҜ&u"k;{h10C) 8Ԃ}u#5q*N SMTx6p+851^{"^>fё\j~\ ڞCLR}]znZo,yZwnTi.?F >g ӯ{ol)+EoR5MUb`$\/_*j*h2 gT @h h@\E|^s$[ V L("%` Uvi+ ;$V# ,8&$yrmRר 0 <zpUr,d㘥j՝aU$o.O="B Ksu]ho TOn77bN֐8VM `P 2ae>L.nouj>d>k1HaӾxߧaz;6/%@Jzуi D +ܢҤ ژ,HI EQ4.Rq T" "@I`#KEc엯䟧^jq`@L..<ݛ^rJ7d@ac&̺Pp#/ WVf?2 H~8]MXi_Gua-@O|`ڤ`\TO~%-;~Q$y%x3W 8YWet" ( h]h{f٫p Ǡ*,N51CF6JtUł2H7Rvӑ/j6OH=VN#ͻ[-t70k8{gR͆#.&F/lVMZ XIzi9 0Npկ[P5|#xDɜ~NC:gyuȟxh ]3I*t܃Tk@@u=Jw>#<>>4XGVhADä[qjK(9ܶFZ@<5cE,:!haYEG+نBV쯟L۫x`{wݖA\bGܗ}!{?NAZe_m2x ƑZnn6r**Sq$`'!vd-3_9ū![Ljh]Ghb*},Yn7N>/& "j<ڿ+`W XD6JWmi҆mUE5ֺٿgjl\#oAkC>d ݇,QFtXm7"A` ,^c OqPql ~}_l#&@5癰&f=\Y:X/FEC.7 E.s'Q RVz{zklUp{S&6xy=^MכDt?,ID,Hb߂JYY= \@'MN|q^wv$ #;iB4t]IhpMb1B1L,V󑾭sٓ%{=M aXz͚wW7\u)h5siޭK @jJۿ(_kN[,8VqDyQ`c  äˣxϻ,έFC'{Jb_N% 剂Ɯp}zElԌ9_Mb*ej7SE8bEJbpf³,V*m 7k?EdYBVfe׺/o>u>_~& Ht!r`Ļp]߾w ]o ?D^4V'(5̧#[V?Mo7p?\ PEk9ħhGbbAw+fϔP#P}b9iI쬬,ǧW8N&7;]$H'i D ,n5fk,=Z`þ[Tqy _ʹ£4x:<|=1ps8#<*>?abDm R5~f&L d {$`}q]\埥}J;h6+p@%aI|8 W?jLH*Wo1Rݜp神藾Ŕ/{eA? &1 UjUlU?mJ  `iրVƄ|2ȓ,RM$f%Iy{yYJ(zj`̺nfƊ`,n ^SQisT~X#]%Y8Iө?Z@oLuTE=WLr.[,$7z*C{,7,q!z^wYPu[kJfHE twWկ@~O pOUI{LhsZoX4PuMJ"%xW |x77QKZC? IDATX@)z$1b~i>Nc6T"4VCOiNLoxs`&㣇q6X%_.5.qNvm  0bOzAlتDt'(]o__`Z Z>1ֱKlRԲD7F2c6^݀J-B2_v:.%ʈ-@;urzxu(?(ˑyy?rRȍXW=X^):өqia8q-D3)12 ,m؂3tEq?Fpd @5s$->? n݀-D.#pVW7Q׃G"D"uMN1: M&FIf''kF˶k,rs0 NKߧS:fXϨNj]T\h@5aLX_~2hG X&pqf62e%kO,[r~ܸ+f˞٢ް*'U/@q{R SA~ P6Uk_u%a1QUY ʸZY !L"$W\c}* ,/?}DvVZ_U0':HȺ&NxlӦh7тkHoJ aDQ'Gzv@^q$f+'fkk#bzhE/ޓy &{T~fs3:cBN}B~Ml@l+k?op]D`G+cR#%vVqIVh KZnpSQĥQZms5XIB5A P-6# i _& Xm]HS\ Jh$glX5M%Iz\zdP3|frd m:`q}_sgIK.*jMq;AK5 S9Krq9tX[HD]Xl&b;Bs-)AA_S3G"E|j,&4N=T "77ٛ(hSEiIGU^9z?5X&>Xe@Jn}$?TܘYSГ3 5cav??Rþ %DvDSzJ"6Ԁr LweUt=(q' N)_+\(5&EڂNth-jeavpx?[!@.V,(B6 PP77hZ@ Rj$ Fis5`Olkb5 ia>/#.:y")llZLPfSUDL!SkzC%QLzxﱏw99zx㉴}VUS8GHaUǩ0؅jkMd*|<|E?".oOby@*?騐=ohq[Ũjb5taGUtPA@r vE-@({TjW`@a>SBB@] v 2X%9gH7 :7i+b p2+B,vH?' SБ'I0d% Ֆە#>H~?"{{4v$*[^߄<+HΘ?P)ͫpa1)3*yX@!Y*(c{Sz&'<[ nIK' kMs?/f$T{Auc{ ,@ sAyǺLP_g۶'l"zbeB_Jd$?@}aMp)DՓ>=". ` ~(`KUدJr0]b9ͦNFbQ*@+KSd.f~Ab['/L* =Ǫ 7/gLjSSފ?(X#dPU:V_ R3`9NxZq/Gl\4uy67fZ oIlwFfD}2I/!6fц 0fӮM&(CW֣IJ%{>tm?K0+}VHl9t^.i{A VU|TDu&xE{#}ńs^}j‰"?( { qMt_h?`&#c/v7Ij"FiGѵm7R̐C3B'Qfԝ*IΪf=Ӫ麼-(ҧ'+s1xa֜NzGRz3Peǟ##VL箿 A5Q=wtê#N{ 8+Y3ϼrAID,]}d.S,eECI-2_XLȂ?fvAr^Gb&*Z+--OGurv ` n4k^^4U‡ 8X+:p VxChU+ּ|Uj?}TS3TFˇo )_ ԏLS払& ~ iآ h@}AJ[8k11HّKԑ\\!A3.__Ù??~nj#kk[گyd.*cR>D1,WR,"4H.1~'y7C~, 7cE&-QPв [Y>,\aX:3 E#41k?I`6}~ Cx`TT6OƎL9ģUn9O%fz qJpZ|M53\OIw?jj60h34 o1+-B 0=1%wy%A7?k {p"!#M-A{JTA쟒-X 6O)-gӑ) 6f8m8 ڣz4kQ ۦZDZT1Kj.YLefAkr a ~^>Ib4U21X54M{ ܇DI5٫kMh ]e1Cf z%.Ů_"m~A{fHr_?W`.GdʴbO40 ijU3iٖr9 F}!v(N!\I@tFn&8HXB`x-:|Ǣ<~p}w5z鎅ԬQ+Ij B΢]הl/ܢf BYx[U= C#ٖRdZYS(Օ{:QDF<%;v"P+YAXDB1vR;Ͽ|GC<]m~4,T[D% d 09K1l.?Ulyg}Mku;s!f5՚^t¸Ө03pǣV'0$6Trguw7=nvc{)Xg{xz}@D'π?V~ QSR.I“8hk2JyX@+5okwq';8 Q@cGԷ9*yS]gbU-4f/u z8F/6VqRP A}漿_ ^ƠHvzj.f2^Po?wz1(7$"Σﷴkyy7[[J4N Dfu"jVŔT<)MTS{MJa~GJjXVW8+(Q(ued,vLs$TMR'&y ~nz~l, v|A$wOQPE0;#}U)3@J=zjI(@5celJ{O,a=S^=b^8^iHˬo X=N}aRqbX1dHivm@3tn(xd bvd8TajX9Vxb]K$IFiW$7[+r͉)뜼6`4oDn~C~$=nd 'q IUY]Tj.E'n?O,B^ 61^10YH>B {t[g18 _^VWƪsV2EonŢGhu̢r1'5DN5:Bdb|=~ǯ Gx~ʭ:I!>5]Jx@\8q]m%bSgs_ R wq"U0AkvւB3 ^GxEAb w틐-mԖ I{w+9pךPsr=9۽K?ЏxT Za#5W,#>QfJ#3c*\le3 FZn ي_>9_ečZTQbMR l8Vިx=O >5OM )rXPވDOh$۹=8u&Qu M0 :X?j UNZ]M~W'3) JKDGv 2yl7 R"'Y\8E:5=L#! >֊z,syz C"8O҅gWh2P@|8GW.$E n>UH+֊WekZuZ:ޭaC(B~?Ix0,}8ϥ˼]m-܊#CH\N*>aPYLɷA4k~CQWa KQbŽi5__3&KxN8B, 1l6R}3i- IDATwu=d]K؏ r|/5sRdrxk F]Z'LPa\%*atBY幘r0F]_+Tef% D6t̓ҽH Aj0ivņ# ,qDGI'5iZmq%٫9lk/2N#|~ OPNlEwϢ&yhjʛMXl m)BNayf[gFI4hHbz fCO^b[lӁzפhwŕO\Z0EBh{ ڿp90!AY[fd9gJ&&sO4+@P@>N3BMRkXU>{I%{~D ĵk=ֱYx#I[Tt͟X8-mn[)^+O#'c0_lڬ{حG*I*%a p% 8)k9vRaű)M J'f9'fekhLIힴw$2VTUG$6{-zhk9wd #'k|ޞı{Q4JVMX koN▬=s*99s[MVꨙm[}# VqƊqI $^Nen ݄JV_&o[.&9ls`iY.(Ztٮ5YU|Xic)H!4-(V-+?&Rd2P,Q n԰AGA q_JΥk. 7IDZ~c^:'[X[' 9w!|h?G0r`sEE Yy3&*Lahϗ%ĉt0Ax,ф9JUW K'jPRISw#EV+Z]u# R5v50 KKPVR?Q e{R}]xn~}ǔ1bKH+g5V ~Z}_Cۊo;ˏC`ɬ4z&W l6pum?U@Jo΀.* R#Ɗo?~4ÐWp@uYc[]fL!38'=:!̚9w DTu|ّ}7'>}#|}J2Wl5shGZDݘLUIg1 r=0"I2v5k|И;݉փQ39F#5Xsח#ƝG~^g b j,E!Ŗnp!7p/3*GAΟJ"I"KgBWgq {M@+ycKz+fvBK)p{<<+|ο>3s!bp4/ݰn# L,9'FlZtj~Kj `{ CY)KQI/ + !p~&n^5$^HRiS1+oVOȚdFۇjP2# E0'OG+4o{*I)w"|:Kr-s8m+KbȣwU} %8 s$g6R]^wE-Zld Slv\JRBsڟ&8Iaӻ2 ,kЫ 5ĕKoSߧYmVѥLLGr8U(ٹF7?# bw>:7h;sZ S{b/LGyn}FI/lE%1-8 j%Ino`{ͽ5UOH=qq I .|K%-;'`YYD•g˝%T9{~|zJUi}CQD9LJEX.;NSEmUu ESECF' jb7X/Zashd >r-aP3oB@j||}B$[IL;Mesa0h8V͎ onv C' cN^Qt$hE[}D&۞ fש?# )f _0K;̦{sUtϨ]<7$5 [H+~4+5B EF9-mK Yh6R@+ v\9B\mOJǔ_':Iߠu>߽|Gx}SGzs:zLmE~#0U1i4(I aܖjBx_q5EKd)G'@.^D5"NZ_#KW+ ⾃kTTl,7r$## %5gk 8֛fm4F񔨠gx\9?@/Itؒw, gb0THtR4o3=b$6 DW+h}_2J+d Um|$ "Y@.tZdIRmkx5TzrhLS@v* Z-+"S!V4I^ n X >/&H+@Y|  o7#Q8}IuFvU|ʛ:^yfԼLr $U FM'"lpY/d٬pmI *:EK `RQB橌o(7Ky؎/~@{z+Jefc=*?a`G53$uvxL "mUU!궭znnw7^]\%QFbԎ1)@5b /OOיf l:DK|&G_sVC5-{‡ H[5pn&^ [B~b$Jzha~~%ޞDZ! m ۿ`{:w40}Tg5q Mw wȖWR(=yE`U `ǻ= $LE)9Q]E(}A\)Mj?ips~x?}y?~ ú'8$սM "+{]{rD"+;v> ^ QךhzW @8A7hTYZOКZ4٩AR<&x%_qjSl6P? ȭDs`u\썭p0;M 9y]%(q1P[X[T{Vg{JFdz*wG0Rأ޾mo$-Oz ~!cr]$G2*jPFE&ZVڵ Q}$ NIˑDk]$U5w-7ߐ}@c]I|t/um5dtfxzsBvjnx8+@: hZ#;?Op@qWy$L#jI@&$êauE3W3~.XGmagz8 XsCߑw7w+xbgce.;RĘ!(y[sh2 P陨rUL8"g[J nx졭CrԺ3}=^Qk͗O!Sן—dE/zI)6,A [=nfsNSg,M>L5%+D=s:ZךȜYx(֚%д痘$+">VH\ dWNRh(qHIaWυLq~Hf?R͆LCiUm&2<ď~6 ~`kA԰>Ň:)LB%%^Q69tSу^Æ1濚\ڿ%xͱ5jjs ׷pu}IV1FdnIU38AA<|)*Rk.{_h?zV<”Tq2rO9ukI"hWPMrY4|fd9`;B 45@4J{B6*"9yZ)K0W wŴ]ώs< osgBPED")i zϒtfȜI"Õw 4Esgt:mS)6^|Nfr_4HĦ1~ankK'. l%̋RE~vM|6PMN6?9L ﷧+__r}inV=<=^/_a?tNx l7[|LD=adQӜV6d(*@?Hٮ0t+P٪ѳyDjU'B"WXチjárA:S=KAۖ:bȼ5٬ho;A7^淀YBec؃.[ӖJ IDATj@8}MDWC -lj%DK_sI˺ O|4F'ow[no ~D;CN)?G32}+ѩ) 5(˚)ZmTVU Yx<zY\5cU [Α|@K?ף֖Ms)uv=gfkdKڪQD;V.5)t0b%:Qxv撸=+ 5K[f8O5FmES vMlzk^^#,XxotMOiqAUgf FF | *4~d?V㉽}ǻ6c8 x}oЍ#ƣx6ufjgޜ>נL Zr޾‹?1#^UZAV֕4r}AJ#2ė}E:Uus+)dH2NpǤ~uLgK 鐥0xUWPְ5P5y*9o5m ezmMxd-?aUbp㬔RzѻT]@CO+t(@eLSHB`tNVCj&v $e _;첵DONJ(ZNTi_}pgs'"$~`:s=LCÉym&&Uͦ[׭ [vV .`D- 5Zc(W#}ge{[::ddVgL3P$ Cv!ihzXOXס)UԅLWYʑraA'(v="xK ͙}oםϛ{_>YEg.H^Ef)dT+&ĩ,^΢aB"A"}G/3UflnnmjwEB$bq*[u%J\-2$ bc? Ά^b{~ZW4Pv!`I*Ī!Z#?= l;:3Lk,𓳺9 CTtʛWzjI[ Z.4[ۡTj?T֟3Q|> ,f֪]'MˮIjFAl63(@ bW(r0&.N N'`30"Dw~ӝީ5}}ˮT>]ޝgַ5@GՁHofFԿ#$@p]|y!Zn݀;oLP/2e,-@ 2EgRC,]*%F{66 {;pe&M|au p/ 5Lx_L uyP,Ii$*,ٴ*AiM*ʲZ>gsڅv(d_3O ƽEs(b9"1$ HIav0l Ck h sϔZjG {/?gϙȇ^T+߫ \ϡ3d[Lf 8}00^H0xa=lSBg4Ƶ޽[NE lS&cՀD AMP,-}h}9r>>* &ٴyO jwȊuSG [>Br!sH̦^o|19;c^XR RTDYmJrs"]]J_Jdk5f/$˼CiA]/u6(U&=NW|p>;&6d Og_V\F+O:[7S.[ŘAʩ*av1J !I ch닊Kֽ״եpR kLj,ylx0"V $5kC޴W[V!,kDEӤJMȌEXTUJ'4n*MG,"cZ8y"tXki5?>F-t`3pnP!pVy(M,A&< x|o*m?C]CJCjp Aq{.X+ɮϪ3(0@I\2]w P牢K`}8΂E y1QdNZUHV'\/bcZB{,'ɘD̨2O(:#G-^I0dW]^@RxP%_ڶB`#P.syR`Vl"(B/2U*5IMh;ky:sWwj-BQ< M?UCPCGSuER-$ el(h#݆cW=D~fg&OTг%^_}Ș]E?IY|! cߏ܌oYk` Fc8ץ.NP`tlώ`rzw ceyE y ߒ7U%zS`PӴHd$ $gU a^BStgx10λ٘.q {L9LxhB$Da`dy&yԁjR Kj6F6W&86o iO?$P^RZsm:@:^,'*>pHN1C4pP;Gdau .عpVI{/a/"袉1L2FkIjW-*;ZdxRg'˲a,.g)Af$2kfk jpZ%pet_qtO,?P`T"'^A+2` x8!dE%b+^ eut D7bΤ%wL?l#M'Tz֦9jql2o- CiPݐJ<#!ô;*]Sڮ_>+fڪv7jߞCUJG $ciYi .\^ {)7vs#b;}X`Ʊ DF8pa=5:Hy^0nҺϜ4!/*͗&޳:.G>橚&IKz貺X  8FҋC=ե' }p˦RTko4J vCX Vd`G/"+s31]#d}eQ )T{XNN_meb>[~q )\&};_%LH&S;QHd,԰6ET i;xKm#(ӉǢTz-YL ]4m`V;ppK,5m<晜h'VG8x``M o[-` }Lg0r1zveujA Vvuo'6T2N3۞[4 Br8}J&/3] o9{vj\F9A|bok#wf'^@9iPG<=[^iJ&P̝Qz˼9A ϺV{^s=BN?C~+>UeK+Vcy!?VHP$ae;U7:2goIOUeU PHh `q`]X4#ʪ'l''㱕V! dScG63 bM -?6n0lhCr20 ɨkú֟Tê3,H7p- 0sV _j C@ 6^UcoBx=7ڹ*qV 5aaԫJ9cp'\ ~A2|Xl*npTcw;v)Ɩ?V[n&sV MXȟQj̇dO%$џ8kWCm}xޫ3q^"#p*g1Skץ:iܫ[&S UL\5~JX56N|dX ]du~lk?w dJzCF :''' EN^Β39 >*u/A(j$n8NgSڔR`mؤ`[y듛 QL韥px04s5I祬ymE?" ӝ=ٻW+7l+ ISPt0'"K ByB\n_c!tM;)ڥ{Vu4`5=f5츢]C1:N;jeu aϠ^D_YPDC%N ^?j&hϩ/ |-6р 1i ٹ+D0@~m RHXhΈZ$m\O`~| w%>F}-3bJHhϰ_O |=L,-T.W6j(9b,djXJӷnSϽrq Rm 6Nzbm.X \uG$)BPc !W1v`<;z@S]Bv^@ֻ_+x斩B鹯wg:Aza/&$cEVn9FբI@ [ ?=bMSK6БX\e^^ sŜO&o>xh~:;!hjFZ.]{ eP;P1dU*҆Mჟ3 ?YH؁_K!vE=@\ZF^.CˏXЭe.KG8\] pe.OFb3mc -K1yqPCRoz-ru/&{Ja9om@Z~0p|/8H֨\ח)xa6SD}}oaWU>tB6g7 5_Hf\LbٱQl |Jm_#֞~ЍןD&';(DyWPRzCj=d-k".u*7M̖(ƕ_jcջJUG0aOpx=Y;(:%HC<VF7oveՍs'ee{mܥ`2<4d\M:ŷ !Hybx hwVv:}%V;8;T? y:0CQo:&a_?^i212ыYI/J]9=qߚ7g^9N;pפY ةDkJvW1C:V>Fy^slvN v*STܓ"W- k,]2V/k 8@&W븳) Өc>{$){{GOP\"$Y/pp|yأVSc۸P670k)(E.Zί]Kg0_A$[7V_o35eTV} j nyy8:>XMJ "{ HN;CW/Kѵ[)eAe8pP:}MH0v t#PL.pn`e`1pߥe/Hwbdn5>6grWigATܦQd.'!砏EicI'K@Fk`Lޛ7n;QI9@3ׁE~ #1١N.rKI A͸5/Lþw=s0ZlHcl='ˤU?C{^f\}Qpg lJ>}m I6~H"tehY0d1dU"1?J C߾[tZ/|PP49E@#i?`$D&{Q qLR; }:Xm @sڢ uH.UÌ SnP0#HnPhir݃PPHGua 蒷^#<7,N8Ҁ!Wʨ5Ll4R 'GQ"pcހl [$r ~`xQmmXlR V!#Y,};fۨAE&e}[H=(U?+ XPKޛ-hvA(NL9f,͡a3( vttLY(ă}~/ 9_=|_=ۢ1fX8D_Т ?EwX"~ڃ9@E=$n IDAT= ΘC?@O:'*:U|Aؿ|f;1HaMr7kG3+#[{In ]Sծ@Kb=NtlI_섂7b&a=uZaEYXlv_.A)$j\ eIZK% Ց1Q|KH)B`7(+W+!VRn5{UZᒝ*Bokg^BЮPDp;a:ᶦPZ DRL5W`Oc6l KOA"=dU@t) uPSڮLv {n;w0N,sG bk!I.pyWv ,A6!}ٺ3lDrYWW+h+M5./ έk 6Eˍޫ:u|Ge'z0I>L%$j4GqehHuV΄j ZwfH"Ί{!<أ^/瞅يz<2"|thQ "/fʧL_KcYRj%]&LGp~=k@|L_Y,ݨp:c溿~z 58?M [&6),A3kpS{Cuu|CHׁ#%+κRBv3/"+;p`a7vE<,5K׮;K;vHYǻ*w:ʒt=9.].p]e <_W?zj!i(Vꪯ7[/`/_W|)Xt}.ٞYxt3R.D+`kRDpP;+&Ч/ H G<:TڐP]Nk=,0< *+o>3K[ "& N4IL hB8 Rb%)S\.504aE QJ}Jy9s (iVdprz nx֧GO,}d7RE;b ^0ҬΥҊXfDb-NWwFOM'0/&~XE9%ͳ9x?y`$mU̕"Iȷ{?c 4S0C@rVޤ= =Zj顖,d6s-YcsV{{dl3t`K0"EB(@sRw7&CsTMEO Q<]?b@Ov= kk%򠢟"hE ˶]3U(0gi-lKU'%Zƹ$tS,ȊYjcXb6OؽPRlQ=ggUg@j)̾./QDa(ٞsr]k˦T1VO)hIfEs:`zC#N a9}#P_m_BI]uk F!|eؼ\A߆nD5-.qP2Nmᬋ8T\u1 L5Ŭĝ^ym,y x{<=XсZf.I-q]SZI\K--Nt1KokdYS[+#4~Ĺ΅ChvZŚ@'ƨ>:Z~}7:$1(>S%"|SւJDmQŪzEƮ99t(`0s˵sm,t|W_7z/. -338C7_6 F%D)rq.f 5ó3٥6i(޹Wp-dvߥWj72i m27kӖx]8; _G,.c$eu ;&\7RI;BU:Qd_rh9mm:l--`0Yi}'cT _s89>eL9/VN3^v.XV5"8e߇}P*Apʚd_zҎOڒ3àFo^JXO밚>^ pfczvrb 1Uyg $z:냳#8;:)kQOS/@x/sb06|HX!淎Nl!sG6a/('5F4QXjbtoz7 H{f1YTdq=*%UGvXs/VۛFȞ½SCΩ~4y|"/:esyGL0JP^=1sc{ UC !O*:{fc>5s+,`jx%ںv8:>f.o7RHMs  ;u;(eI$8??K"`JAd}l:R4M2fgHo!{-dHY=np#bok 8t1;Tqm{xHEّ=wޣ(R$ߕ#]m$k,>we1.R.~1֪԰~J D$K9ԯ*JS{chQ릆5=&4m$Yj ky瑽 qYe4F'7e2~[}0&ZRG'2&cTºsai D#qBݶY6{IPHUtЉd1_pNcTxm+KVhy1GρhZ5g'){f/g`=s;8tqBmsIXYPVLM[nxf1`-pabWfBP0IiՑzIڻ^2X\Dh-zZ gA 4l-oPԷG+(tkU?4cm#8>m3[1Vf fE̊HPCEZ$XgGz.R̉Hs|G؍G\؋z%hl_ )0c6M!,Yx+w_n~ ]5 vCb06`g.\v/_v{]F¦詮]Ov}4x@!}6F̮o</|aDf}**Ё| 9KB݂RUiqcPOU.] OoO?<}??S?>,^t_b/yǗgMdX |۷~3g<;Gyo~+|W|U81E[?|woߘկx7U)JR5>oSO=EHvp֦ڿ;wn^_.<ʾ.w}x'~CpMxSBb? ^WPQ}w`:۱,)+I -ppx >? Oy᭛7mgޟ)~8q G0EhNOpKfxan<~#_E׽](֥{v'c8hW%'&v'Ҁ u +A?d'{LݳnҸ=s,Ԡ{f晭cm7 kL9yɧ (v@kkkbvɠ ~NM04 > Sg\?`9!;;+W=Gucz"*?XMIVfp^[uFvų^۶iuC5uІƟ@% r)$ېZ, APТ[m ߜn䠁)-[؈zan[+f P-s :0a~N/>} I8j;KJ.kO5DςP.?d (U&],*TN޽a@oXfD2b]|Iy hAmk'hbVJ5W4 }|go߇6W5` |ߣ)W)TEQ <$Ȍ_~R͂f@胪({.h,oq Uۋ70%16A!ܨ 3T-K `j6uDf*T)j,A㥵W`Nodԃ7#hHY^5/n0߆t[{7E5tT>h>yI+*KQr )驻#Qce CnE{x-2rpqfwyV5ߺ7bGjU:wvE̻UN#bp@ ͣh`_%_1G䵟L[ou țR-Tg𶷿ލ۷S'f}1xe{|ءvox|_z/}'G>jˉ⟪YYe>p 8y5_/~K_F{YdzgW፟y[?끇["VH痳`FXC?_g~.lAo/}O3iت'ْMze/oo|Wo܇~o?;`~9JkL,u\/r{86}{W7,tj 0RP߇V_KG uօF.wM\Pt[.ihNe_2g5!@6WUf:UU4IY^ӞU˴d!hД{{K}u6\qD,W`ܣS&dOO>vu0̠O]CdIlHVk,nڸ[)]_|%Mkg7PJܤjJez{%\r8X5dߓrcmx0|RђF4n;-[$V)e:; n\ ཆ`Avy7@mG\OG)xa"!%sF40P)!(09/M ; \./FiYK'fs7wq G, Wcut YCSӈ­z-{\z[@?C'y`Y]+M)FEAGCm{k6*|ƿ%')`(QTG~$*;;GasRǠX]dU1=!@ԡ̿ͰbUBAb6z}6-{|rBTPM!*[99(WI' zr^ z=w-o]L]A3o9T[a==lèG[j3_u^ORT3cck;n[T޵w@ !jW\8'Cl Amm~NUq/mdׂc ;> w߽=TCwC'c alXI wZjRW8\ljOpjPS]G"^VE-›#w5>I1tV!?] %-_J0^CM4\8!m8b&$#QMn3quq+ynDal5B< ~11`c1_ 냜& z@!-,0TON`Z| usVTfETJU==EH3I װXr?ތ1n\\KW`sH`}GRsY}T<1]/Yq/3e7x9|R9xs2ef QG= :Q!;uX$EY\Η+XTǘ[^{$QqZ .7 (5/o_||~QKBu,~w.]A;R8_׽_b-5XkC pv C]dY|;𖷿ꥑD-K;-#Y͞-m8'kTѮp|!|ӷ~]zM_O@eu{V=\r>A8 IDATw'^ _ʟpOi5R֋3n<Ɍ<8*EV} @:.Ԉ .ġ ,Qn2 օ3Vļ7)8SYEs7hC lW#bL~@-lY!"[X!Fm;eN+MLfcC&[o cqriqdBO>*23b;QEd8j| \D^ZqEU1Ū0IS 1W(ʻ :C)#?O+8/ K6qK-R{@(w!m'Uۡ圮fꋽe}n>j<ͱsӌf;!bWNfK!vʶW8 k ' y2BfMM[бC c[ .a}XØhD&6{&Cw&48g~ db~$*=1¿aօ벳n >ܐ>MuYN`:ؔ8gIŊL7 +'(N}P@ X Hl#o&t~G4F6^z,㸠cM&c7ǑRZzuMprz׮߄;wNX0o)6U #; Ԓ}V} TL9gk8g  W-lv^ 됩9ܾ RD(xW*(`"d-qf4Բ=tpa2@1+(7ʠUd.z:e ~Wy)޹ww5Ϡٯ< ę X̥U/fŵcPnef+E-aAbby|ۿ>կ:&/v^'p~XTP <>pW=||!i]IaEtsp-;ئ+]1x1~^KkR.`=_* ?Ogd}[o?>Onxeg"b6ۃhDjIRZs*5-\+0,B:X9{Xd rP^\箔N7-[<y(s{9 =`Da>oznVU@7j.\t^+Wg8| ]('죎7pHxLa6ݗU::4ݗtb Gft>@[qY%}2,#K46&sSG~~Vx نHy֩ڢSJ=n-.&A{xuLdi-\Vk8>|'语{v%7GņKO٩KڭS~ 7" =pnvqc nu>W+#g؄svd)ã}q#!MV`gqt :HoHـ5kom}E;'uw sl{> +E-l!nIuDlxE u0v ڙf$85c5 ?a6h5cRͼ 3gnTtQEFdAIjZ5)3dRQ$jyb?}ON0tG@+>y,|#^)L!3\L <;;7n7a`"Mcq ڥyOWs6LC*&!" ܼb%{}3q\+H$~lmnRp^(46E' tm[϶FxzIHqMmLs:݇ݽKwx /]ݽCRG:#jɴP0, Þ4ߓ̂\{)8;i%Al5H?;83t GNJn$Z>QUiIG)*8|8}?'#u`>qn/w矒9B JEOpܦɤ V;._E_ O=a89>";Q9Y`5S%8#GXj0#CYŸ/ˏ?ol^K˿Q΍WMobW?pz|LYeOY9nûe9u4PE ]+2ޕ(|M\YX;Z% E{@pf5Cs5ֶ@nōZ?O}-dRՕEA D&~h>2U k>CúvBjwݰZ+/҆R]M`^@Z*5HehpRTZ*z'T VoaURhA/[ܗ6Fb`(UB+:.q@GSNR6u}/]砒JTsGl٫0UQfjOkXSdL֜5q {OD1*`K-Yx xHjt6]bc9)=PN*5M] 1Yn@R!BATrC S{S1F b3z)'PkAjg 5JӍi!{yVLPL zCl @z=Og.L19+\gSmw4&3Rx. N~獱%CA :k#ֱARgE8,zFB3IY=T* 4Caj r3}΃)yƖ Wq‚Ls'z耀B91PѸ_zj1#h撜Y`XYSm(uT^>ft6 uw}Q6V0B1j3$v 5q#rCV_K]2a+r`^{^?=uUrUYR*E #CAO~x;՞ 广~sp|tj +,XDUX>,;T DhRɊj%{fGIߋ n<1Y/(]_{-xǗ}_韤x_U^b-uO:ٛcVa1Zixo&ܸ~>o mtg}k}ꗹaeXB-#8=>9֥߇YgQ.;rs??^u6 ZI&뼣r~7%+hfq< ?}k>5gpv{}=M讯g}_O?>wkū5Txi gX %˝g(֊`ԏa>?S M^K0hl. 1qKIVݷ2dm60o|TG܍0$Ȱv KzM !|Lm[uꁿ!8}V:7qrzq$qLm#UPJO +TDŽ&ҠNNeŽбMY^R$կźj=Lhp[\+\ hD!kpe pcxqu!b7J@+r9˪Zl 's%KGh,_}+;LH&}8TJZMm ˬ/cu K8BH:h&Jܼy_`;^bu;cZr}s,L+HcT @WgD㖃`%X,p=vNk}_~.]Lakd4mJ~h; _\(U XPu^@OORpW*O^ītm(!43- {_ _q\zP鋪@EZie޻|')ӟ.ܷ;+ o~[.x(Rqx[_~? p{6=p磖l[OnHwwa @6crt$hJɜD*Z:c c%uuyy:W~eDk|` לwh9{zQ,ܾ}eohR[4׺ t}OM&aup( N, вGPu 6?7r5yͭ16wbS{;嫪/|u a\ob3 5*iZRh%q6mI&1VS7U$HZP2}q]$ ("H AMlg 0]sC0Aûd67N ؤe k͟A4c's P׫4y{dO?ze׻H ,r$ If$>F#q @ܱ#Li7 RݶCה=% cˁ56&u# Q3owO$5n N;Nw(ZOm@fb+ Q6ƞEB\Jns"HDA.|͒hy*w[?tl U!ꨤu^gcniW$SX :P`BlsީX??ʢJ3)*d ƚc)=鵘yMrX$bԖ|9-`2D#)F [ І^M%ARySV"5݈5P KI={8 W))Mŵ tQƘ<ұ8kژq HlFc.єkν#lZvfu+z/zK VQ߫R @֫8~ Lka܎'Ǥ^HIXd`$g/-]#[f:Nka1kZ "Yo{;.xrwo!A?v=bY9{|Cw|&UXbHJ9(:"4@)c;VT+Sycϻ~"/ +40</D:ӃrbAN>\-htۿAx:8IѣZ0LfÏ=W)=5/`y|`_g&f {"7Όv1*2d/+48hVK6ꥆnf@Bna\K-t<,1 pfiLhO[z1:r0Z{0„-ߓ[m9k`<IYK\3^Hܐ3-2t b.P -q/JɹqCk1_uw(ET6纽zʕ)Rݝ0rr y3Kߟ}לICCAޭp$?p#&k҄2*j?xbak?1}~5ܺ}k+/1xُ34VKɨ__ 1rE\̪YKzq>H _YAqOU[Q{4#RΝ= O ̙)RwTf Dn$kڷn. acJy%VG!<җl:7۷hޓ~`?اt~R6mnjь.K%nX}oj>"M89pFޝk ydW|JKldO6T5&YbMƴ.QpџVosp!&B&cŠ@hiZf 3s4lԎ]07訬~@P ^"b,&A"*1v$ޝM~ UoݕQ_i5Ĩue**wu_m6D ,{j\P** .e 5cǕٷ5xhǬ}.i k&m|!":>pjhdE5&I#?MIJ:hIkB1ܷu ~߄Z&kP|J^'N4ymʍaP,̮sJgK7Y.9780F5xMI IDATَjU:|DK";fǭqHS9QLSH]oY?, 4O`g6Ҁ])qug }u)I[ b7!lf~( *0Ol uIN1FЮ D:P̾u *Y276F,K%M`2A7e[D zɊ%id '? |mADY;LLC n xJ&,YS]/U ^ >_V )G+eoC˫ nmYǍ YIvjgv58Ky晭9Ԋ5R#6hY_k@rMJׯn-7/Ιz g'D90PNZ@[ ϟ*YlP/Ta:d= ,w3nܸnݤ \Zhہ{!ggg?\7ݳO=}k{j2ZW ndR@a*nTZMP9ZZe=ھ+NZ4p־w7g-U3o! g+XX"U=s}ںp{=zyK0d~CـJphylZb) mgf|*ET' h85íbHlrؤOo͞2/dP+z KڲmL3 <K)_{&7ߪtxNlKVm]{3$>2ГL|AKUC!2_ k\##23̑pfl֊ {f- \lJ $"AKwUD+V59͑b1):>jog3;G>ZOW1SH2$ۭ]C? s}׷eHɲWC';N ruɧv&4XE$dȩ՚3iVU[`!X`5hP =+^( N};NkI=̱f9S`Ѯ?71ҳUL1l4d_E|vԖ6ʴW-&߹ k{1ˍt;GDG >vg{0!:/]X+!q*ƍ ZXE'^p6Rh.%RVKjj'W)Eaꋱ:^QĪU7Q\PsHk}xla< }*`]GdW6RtGܾ ),d <y>jÀOy N6Dc'5VXxi'0z.Q;_aIƨ_n@ZD]1f CLMlzVY\j +GR"N3jY}K*8JԶ~u9hɭ.jDZϷg<5ТW 캠#~B^L?'[gG_R>l&E.)e$J ,M,;AxdQ׻%""(g@mI-I55{F;vkzksjgR XU#ㆨZAI $Y)Jei}bz%8Pk[oyt!)N#F3?܄6jDu - 8MXf!͞Ͷ,""D c>z֧Xpz:*"$iJh7bI]3΃hԳ6>q1pN:4 au曱$֮cPՍd‘шIҁ{NcXBBM9@9.6EYK"#i33am p1#'2>h˝nM. :s^B \/][ D۠ÁԘ,yn1kkà%xP.9D#>pH߹Sw]jﶩ)+](QüMTws?&Em j,3o;hqr~P㡂mrQ" z֣CłјaJ9Ia'xg~ֹCss"uPkhWVOq $)X+bZ@h͵k^{MA+#K:RӦ}.g%gވe%.3Sʢ f:22@ vING>Vf՞5NyH*i;>M` XyJ͹ID gP•+c=Js? GG'$5&t_dn {rلDxz~Du4{2SDOl@5R =`>r~@$6QIBVVmA-R~˛d9ꚻ=|&Pshc 9irM!4ZKZ\5> h|5~( mUܩWUo^jЀ(Ng, ($8 Qd'6,2b3- A`H@jェWӭ;g?z-8﫺yٔ{ ߯E1 `0p@}?A153mlT E7&%evS'@)** ahOWAI{v#4%7.[EHů/IIx۾ lـ>VDyMX^VNDpsbY^2N"npApsI5߹<-¨+# S#uJ"&Xu7Kx;za*,;WlP|CJ7G S*G+8{荴F[W4E]ZdV\M^V|XYA2?pD[[[/jhįme61 L^n1(weUPO1g4vNL޹Z[r88:zC+]/Tˬ?~J-U&Y$?Z5Ek^C Z>nm G6'nr5܇"&*Y9(ET–oހ{ɐ\ǵD֝,4%,ϬsUiXFOJ&kO|Oazzj@˰Iҫ[K';8IR{\Amx JrlFx4C-!fktӽ܂# EA>nwWSsaVdn y#FQUJhYw.AS QguhPTqc)867R O<$؏i vIه,$ ސm !`g`O{8*Ґ:6thkrcu 2Zhz5P4VTcdOÜW*j*JkPYZb|k,)?s{G(/7+AjRvo]W9tT oS~$SgXr4;g&SzVVYmeɹOjt>7ᔝYtzp5.g-Bmf eɭI4?*@c:)m`Pr/kkZMh2]L@QA?}#JG+=h\SK5ضގ7 ]ܾKg4{0g[-MXPoKP+tq.#)uETڑ-x!B'#r+us[Q$#5&!NsF7arGrB"CK!}Q)MtNZ X}40($~9G>xA;AD]b,A@ibdA oݮsH*oJƯ"Lb$Fc)8Brtb1!*u`7uӳ9$* fE6Rt* ǭ!nYcm7Mbd"2`$rυ(m0*O WBYnaqߗ)nId-clvqe"q%A(v*A &5M]C !oF03u|2hApxt GGY0l:ީaղ^2ZJ@<2da ԅlmn|ɗej`7ԵizyNz"g)Ó?NTͼOս9⮑]iO~Ms?k=` y{;07~wxŹώLJ?~m'(L6J)(SREq̨jݯs#νK2_ WAfom'5m"$' }OmxihOt'@g#!=ծuغ=!u ۬FPJ!w]6 9>ܺ順s?]<=sλkcjODXXr(@ҧe.V@N, _JRM̪9nD{PbλN(gӛhq>?R=}V,ɀMKW:[O>/|dYpH. ~W+2(:F:jDzmhzOWR>R$M/FQ!`hw\ps[m`CoR tЈ RTL N3~( c©i9fus#2񼨸<.L/|P )1E_"B ,&G #(ˋ\n :<4fh4'o^" !&z{F Tgtgg31 Y܌N2Tmf`Ə{g`$p/R?pS=TUt2b \#*gᕵie2␄ &0\7Ik^P0Rg'fL68$Aשr..pj(WxݫJ:!={>GA0j4SY׺P8)זQ9]\g#4.[Ab>5Yr ҂o:p|0ʄ%",`y݈.E B0X%}|6.#nҞ'zbn{Pr-s?:4[g=KkymJg "T9)IהS̙eʨ8"J Ȇ" k5Z\s'~g:+Ma3cRkͮےeA5 M.53̔YIu&7%F}a$$v)ߜ:63= :eڎҰz@IPfEqhtGQd*43M41%mӠ"\"0i0ϳNNNa>_QGQd(H]Cbp伡! G5{Q(S}TU˭z>ePǕiJB͠ʔH .VDT\bl#5KCv3żis?1c: ƹrTNDN`6CDy- IDATy0T"u87RYMl-Vw`0"ۿcH>|iY[*Vh89ܺ$ܼU脡*W*%iGP%e+x\Ka\*Hh떲}f-B5$X!\@ʌ8qwXPwF^理*w lչb?=9BxY壜@Ǽǭ7\^Pd QR#oaml3bzvB`=Vŧ.)v[@tl\D*8N7C= |9Jl*C]y8P@@>eLTC[ļW O렮ɮ¹7`hFmt`q"(@d|kK()2} 7#[ A\5J}sCE'˙)6޻ZV~(m`#nI68ʘ_ (/H"~>^Pp6kH="v}N H0CYj9 _sF繩{P*zo|RP`00͒X|H/Y1$lVz-"m:"vqG(0s'b 6ɭqlx7&-͗ϻ{`('36O8-w^zbo#6Lʄ\~_O{:˟qPhE4qi%e@u&! V-!u!>LޓJq0eVIfrs!rѶֈ 2>rjS;v3j15-]TռWv(pw>#񺐲(؂8/ָ|\ ĺ#AbRmu2p* )uS)a$b&6Ȗ@ Va{Y 7e,8kҦReI*؉>ګ4-S85Yr1ڶ-y>1YN+ ;crc,`ߛgU鵗̱  %٨@'gPO_Jl*LY}ъ ҧ'kͷI;Xgd}cԨ&5߄P"n.{#8Q. Ay}:Dg(GdAOINeso83'D 7u@7F$wLm9 3c .F%LaXȍb< |)95!#,\C`v1)uJb9M8"пfs!mJ*^Hu+6n$k]-B}\VJ^b'rbNKU7!QocK3M** c3e,-  %I I7`2dz +)~0Wb6;S84 1DW5XSkN}e;OO%[qq`F"6Kb"] +(:c#pvz#Tk/2%]Yg%`]/ᗨ:A SWM-Fc54G` Vdw6AVL^ HpST?>);2Ng3æΊDA¡228ONt:ҜARZ"qk:{w|~>w2Fr׷%Ko0 22G Vx>lq;J~mYZ7$E6N*(#S e:l$Z[ebh-\Zw>Fwqt#qg@4k׮ŋ{pM8ؿMc9:)R]K^Ⱥ$ r$\'`-uLXٍh F Dҙ91Dwsەvww<`+Z6gH,"~UrץM޽wř8E&bz`LжE^VTIZa'*guQ20&% 3?]=b+T *:8Ne ( ͣ`κlQ`,O{֣43*9d6#\_*4&/M~Ӕw5P{~ 1|OJh1i?2V֠]{avBF*>NJݣ kr v ht{. ۶>Q0֞2(u_RkϢf0 E#yudH{ ɀm"`yBdt ;/wu+-ũn6VOxI3-B[7]x5H[ƴ}=SbNDTiI,ls89;Gpp8Ų6ڻxC4gpr|n鴂WKWQW0cl lGs.9!T iQqFz/8=BV)΢C违&)>\Lgr <1 *4:1ڛ7k*ŋ v!S"9ӳ/^/(Ma>??.ZmMCk "H\Mؿu\(ǕSP˜r}@A2/43 ;{=%ծ b`,;^M WM*k˰Xƛ`skuUd!od KL8G7Yjpnuc'~g~R2ͼ**E 3 ($%? ?-&g<^coz?W vaqzL9B'8q]&z9J[NO/wlooOg?":GfEJCJ,d]jh^la@拊bG/_ .ȳ1]>K;7.i~-[g;C|4ջµWyQZ=◨hZN q7a2P 쌀lqH*ˀ=NJf\K_lݎ2GkGp<}̠}ĩ/BIu9{GfGI6TG- LOjTϘ)5Sv\YDQ4?#DIY2]~VwE;MO_0QNvh6E=o9"V x}Yh;Ҵ6,XYW])|vh. SPQ'H.#᝻9<!tP~x(Y2bNft-B/S G[l e5bkn@rHili=\IddO`@2@ᴤ, uQ3F,Xq*9\E 2S=E]D(+ydB<+ſ9:Gptn|^d|.]#bggBb5[,ΥMܤf߄Ekڴ_7?9 VBJYQ8?VptrBШGJ/5/ܟ1;96kDE6x]!s!%VBT2DE qSHhp?koreoЮG,926e+ bez>!'yoUJ֞Idh(JTA"`$(*X ! s}3ȊJ헛w[Apl'LJ$ck8`0RgG/;8DZ_.aȚP^E3$t܈n,F`0!89vvs`v<뎍=ٽ[[!$}G$TE1E熝GGH 9Jڿ"dDlki<DžzU8><[k.v>EY{}F J&Tݔ󠸹Q[k9eU/bͱoza9׮]׼zYepО2N9"Ά4}i$dA s"YAЈn.CA+RISLj'Xz^j `Clӟ~G}kCS.`,:gOKL\%M&dȳ[3` @@K,6]gRwsNV0#.KH 峹F6x%-1[,V9P;/v{lžMj{|ךfKga^QRUQj N䬚F<0!QR߀[ϳBS"~Zj,o,rGY} llWqtpH;6Id1!c@'H$`WK9.@K{;y#h*@Aﻮ- 6G;T(s˼p$npuAЍۃ.^%(*fWIs`_L;S8}`zi ޺/]/G,fGz /kRV3]Kyb| T1DLC5+|б* c{M)m8>>1Ahjt&,(*S%m, o\SH|RiolPuQNq4r" 6_s ѿZvzyyTG("b9'])SCJ(4otjvy[nbEk%E!n *bt6Zm9ҢZ9{* %=NR]ӚntnCj)"γe99\ 1Zn~y X, L;Ho n220Oj1d#kMmҖXw\ك+W^_ s*̗5(g[0m3 . 7HWQ?:\&eɄO d,jX8dnMg> —Lj9݉G1F1ˆD Alh9qC?s +{[0 _.]tY5*GSGuE5n.OM(v=Z1)De(ceaA@RλZdCPǑ+`݃8}\.XKxr%z3)JϕlOhp'W@&P yJ{3:&ehCWE(۸ߪՖ䨱 , ȫ9TA1!m)AiYڥr$YKB#l _! 4\(ZU9t(Ϻ䀋$Ϻ_{Fs%I$!6juĮՎ$}0}_ƋXeUF.qS4xTu1o(|_Nj )* $+ ;8/ƊO5H\S$%A}!' .{Oʧ标1э4r^HuMVkK(ҨNPV_CpNmĵ qQ@EFd)r WZ)ӓS8>=&1Z W GF̠D!f`o>!0SQuErN ӳ38#€B;y .ڜ2b$!YAR[M @x~4chT5Y!fIk)'3\:-֓[աwkDQ'[@27;[PDpow%G&Z&/ѱ9N \Sȇm?cX3N7)m pf8gL)1QALY~-9EUb)Qsjf^@Huθ2']Nզ4a4vhCl2 %${'%w @ +~^z0Z060hC1hk H}(Pަ{:K >@0?Hz^4hab%=R ۗz/-9(rYB"qg 0"uou:>&,ogYTJ#PwCzLH&(s S>Fr:}`V`NVIR; 7⽴ԋ#.3SCf<6/ARZY@,͆7@} 'x !*`ȋ 2CwZؿ_tB9nxM H&WL伝 bѡAgbP4l"ڭ+zݔtQ f*M&kD7I,FCEW3A3`6*l%C5buV:Eb '>sw"\؅-E8xΎaz:A ;{q&(yX~Z*ʛpt @:ь2$;Ə@TxtGs0X_{рȂ4lƒ"k mяảD@΁5Uf6ӓ)EssY`p1@|:,8ysV%1D/%! ` x~jTmixY/ghn#h""tGn>Φ E9oNub}\S6RZqߵJ@F|b" ֗`lTGuJY;"3d\nkstu\tUԘln~o W#?`d^s,x9`Z0p5vO?#C#tȔY!r>238H8FT=F8;>΃\Mvyh}.h\{pi[J!1ՙOStzO$7- g-݊Z;e#2'b' 3*9ۃN{G>;VY/IY>UԨ׼g<nBo@m 7aH+=M\A*q,;Iڰ[b7غ?KmzȽڨ]_h*RRo)rю Z:5풛4ck(ڷ5Vwl#VCL"36)hu2Sbή٫BX1kL$2u?5nWnLx9NoAF{\Jyk؎Bj`Q.A /w컞EDUݴ`se`E]}KF`ՇtMNʩL?񝸲izgJڟ:ǙAo~XzsGޕqB_l,V_s wGj{rѲu7o=ir89Fa#*5TM|%=$vN^yN`PϔrɁ￉^<;8v N@rX|%xL%  |ɖ ;XMRفȍoŔQzT3HCjcB_~Mڲfc7`%wc cKDU#mnoQldYLΎ>SI ~:@2-g6iRkb͎Cnҷf@`>_//ӝJA} pEQ.׃N?a:^4ɸ%DC,( ⵝSK@0@#|Rs9E EHn_[`x :@7+s(peEj ٣->/41d{`q~ZXr4"^LP>q:Tbm0`gfx!kjUM dDkcʕj"/7n3ўX+L¼hVKclT/rzܐMO9Y֘ fAAJyΣEmۦQsl!6l(uWtH 5 yl,3^Wowu!>7n܂)7<@M{"uE}1|> ڵkxs{\X;.^y{H,oG|tSI'7>CRJo`52"yd3c-55 ;wes5 F0móu/7#[ FpSnG#3̐6pIsU5huz=lu<6G˧>({{mN>S~[)gLv(H(S[2wuߣ4 *C}; Ed.+hM MZqKy@>1oiO?-7>d~4/FPjݴ^mB,>wT;Xg+R1k>XlWس}f̈g+|AxSI*9,AõޢS#T)t̯ts~ M'k, k5IuIk!=k~ p=fi&5 =ܵF@1J:e.u:vOſZ^RUcVQ'v-[cTjWU%Uab4|~ZGV>;9%l J[1Q'SoYsyy18K+mߜ&`yb6md[!e;*_}xpp :KWW`L&#vcD2?gp:=G3)}DYha01d'`c!ذB4Y| :BLX)*+rھRTUdYn5̭ _g=g3q/\GQÝ]'9dk b C?Ҵ/p:}3-W E+@AnN6M| FDIEd&:A\o¢uL8.%@|ҔssE7ذuk8ޞFյHOmg>DpIS rYJN-Nb8f?X,&Ӓ)O88)=hӕr?Q7PE4F͍ x鋿H/_wkfFDͯ9_qqw~~yO\r^!' (=#;1H:­cx NweƑ!]D7LE0AcK|OJGxV}Bw)1RJiǻmLޤPĎq(4G:3]8c%C 4ntA9Fhv,]gUI}i)I.$"-20(?[!Umׯh.{n^q +%(oKQPRly~ 'rFZ"٢*J'EVsN&t_zݺqxR"ƪ0G0FAtxshmȂn2ܮ'9GQjy LO`-xUwc[(ś~舨[#2F$&-HjB[:S.~/6C֭Qs%ؠ0A%0l _bU@q.ɇH(/f ܊Z)4׶aǒ%מl$74ADSB6hj yt/~!NO@QM6GZ:-Qs?m εlܹ,"-͊J|NO,9#p\5O돫 SЅ0+8YJ xYmK(5󨮯A`0@&K +g=c~*/|FOpLz /{K '=_U/~ ! F0U뼏JMٟ# ҝZic08Fq'Om~wsG?u<3_~:xF,>xGs~})|ͫ^=Gp|tL;kg@%2,^=_ڂ QPbD," *:qB{/4Ωow弎KZ hHG]{(* xThv_۟+9 ~/Δ.ACi{gDJ6Ոs&Guoh[2gs(MpI[f rԚU`KG}Цnϒ6w޲S I,XB6<Ȩ^Gc>`eZSIw~h["N%@35;N=!EоhCVD7Ż@kԦS$Q~>FbkP G!bU*;NPPξQ~X~* /w@+[<e_/N XӘH9,4D=Q,+G`mHܘs8r )W$onZ*Jm?ϙ6C\d"kl7L,dS%VD.ڠtsV MؿyS8mnl6E.v@0$~&-21=#rY2H1}MKVΏ.ͨb}DCm 0f! Q\ G'p|rBQ9ToU 8E `2;=Ǩ?/L\B 2Crl5-<e-=FsxkVI-P C0CE=.dݢ~smh,GM#"24Bt@#'c[ $_8bvSKʭAF&_HNbA@2"(7dU X7 A9|a'>I/m{?)|!ۺM0o&s/ /sjn`i<,=w fo6^J)NiO{+}?+֝n AYJibww3I?w:g?\G;rMzkSl+3!kgG#@nMXsSy݂:`H5|+W^G}Xz};XM#*<&jB%_d!"Nlom3va2fP#n:6j_1 IDATGTKЊ{m[)sk2 ^%l=p)jˤNS%;R?րsWI&^KJ _*U}!Q n5FN# cӏ,]x߹dh$u}?ˣ- i:7tDa{f> QPևCw5 s2Q.=O9m3aj<.G)baǤ +BI\[b6rPUPY&=]F ߜW#qHΎHTYiNW=>B7?lP>(;<5וУ A<(Ur=+;SDyy?$~E:<{|&<9ρ?>g~իWID :+ʯ5҃NOLXd2TD9Rϡא:>ڱv`pQd h&VG\`A& TIײ?=G8w>3p֢|$Z[-`4`2Ѻ9`= O7+z[ ܿDctF85}NhV>qhNxEbQ8T${'Rux=.x] yϙpFY2"@e+bDxӯ{a|7ÓO>'0=;%Q% qb:/C˙8J$a) >#i~w<>¯ڛ)Gd>wi_Ywʝ6b*}}&vv,ƈWZn , L|g@"0jb#f}Noh[P $ę#cf9(k紷B.`y.ӢǢO}RcB YdU_[}KūENֽvk?Uَ+_Qǎ}<ۢC|;b3ve3CO}kGc o0.0'3?pŝ{^ )o ~ȼp+~d7auX]_wh 0)gņ$"Ľ/ U-$X*yU'AS~]Aר8?Vsbq^,d pjΝiJ5 ]rk(Ą|Dhm6*sU+h,JKd43YNt-6 <Ϧp||oP~t4w.  5h|6rF7A9XgptxB e1~8"`@y$(UbdF+T9qx3A14|J=t>()ڼIZcØ fPk O3XђsY1Yxb u\` hӉ%0=`+R=aN\sJr iCv(ƀ[ 565E!e ,DԕMR"KũU۝ESsN#v%5 &CpFchlX2 -_[K2MEEmȵVv0Jee!QP]a\VzX"_E/WoΡwOJ ^k,/w]taa#а"@xLjuX(.sXQ xG× T)7OTa0ڢ\89Qs0 ?X7&X,fN x` P׊u";, j]-wʠ5fHdgwBcէ_TQQs\|wOD9sơ`T]3QHɃ%P]wfr1a.'2}7m7բWE)Aj~kz'QD'ҧQòqj}0zmR.gȢz6bP儭miGe柟b lQA J/K (k]% M@ʸZQ۴@ *W; -b.0a6qd/:gnXG4Oѱ<'^rww7s{/|w_O37n܀?)|?C,$,z(Wo+Aݿ%sG65}N"wX2yD<̽^R/zRM`3*6I}7z$p4ނ 003,rKz. b>e S"Qa5 Oi=1t{5o{f{2I!n3\֊Jrϟ?:,?ۖsmݬ|#쯁 V]hH,A~m? Vη"yز [}Gm]7ڶbd Qޜ]CˎKlݣE*^pn_7 ʞ;ہ 9zV1myPL^ |-%諵\Ѻ=ٍ&֌_ {m6(m'V`)n6"Zo`\l4_*bA$z"raAՙ ffBёgU:. aUk .TFڸB6z e) X_{06v~Esj+u%Ur3EC8=deA rj991mov7`8f&3S7c>krp# TH9TR[V}ӹHQeg)~#U[.d7zdTd._,"uXb 5غ0"IzRbFJ'#vF`IATO糴yޥyާ+"WhlTzCΦn4J[=*G%jX X(&dDFS i`h /96$*ӜRp: 1&ԋGՐAR7S@ 9 _<ˈG QQ_ I∻{cAGȥ( G]//*.mQ?k?z)W<¿}۹ж o]<8ϯ> e[NKD" Qӳ88:ȱYw\|;(iOW54CRYpHcXD|cNx[[y,X½hZb|wRd* |񹻻߁GyOm:>9mᄃ;1V5D|JCcX@1H'#'QD1~A@^ "s ~;ꕻ.q}-P8&/ltotSM!N.D{0Dˆ\2/dhr0Grh=5@4=.h@lgAS!%{lQ=98f):lF!E6ϐض"7>YZxC&J}Nn32ƽg6G; ĹLF)2 {d&E eۓNaug$X2 }#߹QX4ٖ2zD\@@E"MtJ}<@@7zࢃ\ ^<P/mTs0, llL&9a>f '0mP#8==]RY4}2dcm7홬}́~FK'T7p@]\x*n4&z$sHI˱(K%ќ pU0Hѐ7K| /ѭɥQw]W`4P4ч&sԜkb\?8#C4Ww(Fig-uTgrP x劀)4F0҆FcЅhXe}gi>`Nna$pВb@-Fc*hI>͖\8]d&VA;،zVXNEK[(:X1#t+qM)e~NW`%2fl"B"F^o{=%_I݅ aXۇǜ_yStq`O%~; ~uZc.]H!sC/7P/38=&P#Їs<%FKF-/yWv\JO}d\lnmAi:\!8|?LUTk-xy(|~ o5~r0f x3B1/@h蟑v63 |_0M]ggS{?ᵯ?:|)!!c+?__Rػx^"nRϽnݼ?#?V4^bB`_^)Hΐ ~՚+T Fb@K-ҍ&S!@P.5|ʧwuLpFΊCӆ=tP(A[AE1ڏqL5|yB: d`N{[JĵUi8i GZ5f'mK ȜCIV|?,s'ZݒTU\RGzvΡse1_ώ+eNCAF쏺YR ڦJܢ;e խ]/]Tājew{ $׎\,l:0~nvCDN~Ms}>QLR;y^Դ$FZ U.AP\A/{L^'= \+XR焍봀#7S^10y0(IzZ;@TXCMp Y@RKrNqFwjWK|1_M6/#dJrDWh֔|-  ch" hԷr4An1 )h^%V6,nlnx̠*~ֈpZH8y9 Qbvs$MsDW"Ţ\?c !::mؑfa0=A& E6nNY܀}п|llms}m<mt4^v缫Z` %C6bjPU\@A6ĕZU6tW 0Մ#IT e6=Gz@|GdK+WX(茺c|D 2*˕!\HNFGIIP*׍DtQRexC[D1[.@s.YDJRh89ڇ=Y8?AH1PdyZIm tHi s&AcXT<+kH.aPmyUҍyFR&/ `du 2噊L[ߟNOI׎/>xs#<ǾII)/Rفԧ> 6a<S$0V0[[a>_&}g@>?Ε]w.930T+,x8{MN模rzBiy|լ3'X)#ۨXfb*"8먎x'k{+Š='' Z6/W}}co{;:U@{lRibG 7=۟|~/`*وx2m+E$/^d{]K:@pL1+xGWQKI{wOc""501]~t +w֓n:$cT]/ߤK!mAkpA?%+E͚?0Mm21{}ιmZH@0!! =Jy@!MPQ)K}O '6)-J|bSj}<; ${ϽZ}ss~滜}^k9s4O=윥9 7[xe{!h )؏]QКuf{j_b&j¸2^uN1žm+#2:6!%w{J/\| <ŝYCBȱk?$葺9ۘīgAUST{gu_ߧE:PȘ)`g՚!d%e8!T<יm_iMk{Ie[%0d>&]0̧d.xukΥ%t)!c60*S'!h|F Qg5dHz Q^o6㽘2]'̦ʖm~xzC1 'V (e}i :F;BHPfF4Q21+P^x PyqLKYxJ -< SC_YQ5PMldF;uA3`wwN<f,: s;8*4Js`cPelgi_bR[P \XR̸!iCJ Vlj<۾KRiԕb,ӵ1!3w걕p3>t,݁0㝝9`ڃfvp s ՎuJ7gEHfd#D8y hxtGl]4:?? -\@ccQfym/Ζh=@͆{E]޲A')!j(`Q)oېad}CfR@8SЏ_V=G0^RxT=sb ,=L(['ksAT[ّTs!m$xr ;50 T2\ɲ +D!׬c K#( Pz\$'.MDz 1"bѺs@'B֨[F',[ ;=1:!GCKa %VdDs(Kúk4&҇=Mߧ#o/.TLVZ5t=YDA{܈dMf9Mұ^jê{o.v,- vXS΂MuzYziw(z.sA 2'YdfHD4 DzHD6RO:һVvR̨=&rz뇣:|nB?WMvEr k9xR%)aW:UIr $%n7 ,ͳt*3+ps`/I2 `Q\wIhz}Ng3AjarSi{$䝑RLlXNС d B)*}Lj' x#JJdF- s%,+/Zb5vK>~'fźk9n~Y,JP G,-gn J&%{ HЖEpeI¥(LVzm{ 4 uh kp`6ClY]ۆaFK@Rgo\lhn2fMs3^YbP3eX:QWPlY&Tvp` )1=P, -C*j"ɍdDcqW|WPoT$qꑤ$WV "EԹTg?`t93N l<vK>?GYAAgfuip9J bvͨ!%u`b2$z6R`$k z"g+!QV.XF$2+VdI֬XC-AD~Z-T $JVW;[p~F&slֽ.q7BTYTDrwR#NTIl:C[0DZ2Q@Ҹ˖t)j [v/A1#Ku{ƕ`6JU8!50S @kvȉ QW$`#22G\o\0sb`99!`_r-"3e6Ö n%.CSCVP뜾AW?8/@8vlo`@h0f-gK6|x2d#}ҋ2Qt!*J,(WrX'0h* m]p+EaDɖbG(kBFyD4iS2` +reB]uC.fף^mؚ, 9PK $hH0~vyܸVX3؉.C8뾳M(̂bYK'F=ՠe`u c2*ip`@Z\#Y,`DŽĪ8V ܕZDH w0 czlи⨂dum*օ 8l,xCoc€.fQ(.;`xEQU0]Q<%A'YBו23K>Ay8WH&V_ȀQ"e1^N ?U, Q[`"==73֍Zu)nu}S ^) KNS* ]̧f XL0_Lv26>TThf׌^0l$6*yfu?%ޟaCIq/+tzC/ (Nky Lvw,I(0#BRWɁx 5فd].PJS6HNd lj!}f[" B#V-UԟӚX pU)_o%%JZ_k^,rׇ=ažVMj!(|9HfրhAq`;igRӱMM L@\6y8j`'aAa GR-ES5  -OYXB ħMEyEPy}u>*/㬤m:~CqxtTf137B clXz%$jx7/fh2qiUؘ0gqH@6/)r/T3evRL0( IŨմ^1{ks7S,zČ%26Ag{7Og$ȩKG:dtł=>O'bCa6k%%AhdR=s1+J"Px ]! 5o!8+  mC A `זTF m(ۙO6> gXj$"I:)eMFmNJ }+^T@ VA-`xR^+ue Z_ aX])!-6T,VM3J"TY;MCdT੧L,HW I\++8(:n'FHR$MZ\ӂh+:*0]R EUn9n{9^+A| =^lk Jv~L6~.ȓ'B Nw=5¦!ibdՃ`8:Dx]˖jL{8og$#i$s#[}7۵^sDesJ܄wx&-Ռ3 *ĹޕQy@=<_Z[$0O)Va'#YEx~YX k0ga|D,OŲfje {'}]SeY9UYPBCp`\,c:[gܴLX-2Ve`V"Ju]d2o3v쐸/(+z?gy&PF_)[%Q0 @sdN9=(p"Lr(5(%hزLe;sfsp`P} 1ϗ NȊd#Ù#fh2rqr@,ʘ% gD%tU;N |ve)Xو\j~VLnHkD^x }3e;Y!+HYSv1^hN })9#-ASԀSv}Pẅu,B6^|ѺP?ˑUJ%dAFJ~%%%ي!b0W5ee>1xiĘsO ]hp?0pos{O>΅ @^X_bDI],>>Cgwgƞ1GgTD>>`Z`2<  y7&weo{?thǡףiP;ޞ Gƺ}*5[.(HABHL/;ˤrTDB&,xy$S/IZr-/'PYDrl :uܹxj˭i=FCk<.[E˟QO9)}<, `c˄ǻń:>@X^ĝN'vPPmRrBO n bJ&ýh,T PB` +.Ih(9Q,+H!Qew2KR(=U%w6ݒj9 铌t,EųUz[u@]pQV_a,Ɂ+˽&7pؔ6ڔ+@$hhTHj:rb6<.Q9#)qtG'yX6N缍뗶(AS6Tg?D1ۃޚN?xAp?lՎ37E%-,;?5\ɭ ~gX'I[0i=Y&5 6YuZ A6҃XSMbfG, 3C=#~qMPT# ԃWIOP:u9$ءeK6:#ǔ pDH+z>C;h=f, X<ǚeMBJJ&f',>#i^sm[zr KYH:)lrS{2KA^;fx$Lt⩸LH*ٯ(zCTR⨚:hhřƣ׃NQyrP~(:ie> fRl15h4CdgƗ# KkjEq%QԱ/PBpkUwvZI]smFȜZhEﱳ ;&-䈡!O9'2e”LMˆXiZUͭ" )l4|6<)ijmmF &5k("}щLe:~@Ǹ^ Y߅ ~c t n #Y kHf`K3`r-P` 3:щ l#yCFu&DɁNXʑeBnTyJEmu!i/L|>@F璖o *\'2~ޓ5|df Ž_3{l6{E80Q$_JQbVi§BZǬ+Rz%<73~r?tI2O|OO[ cpD?G1VBH{~ӂ}U|p0Pu.f9Cl<\!>fhڢ_,\J/Ћ~S egW!I;A)D8`Ӻfbav;$$f:'F0AeϤp97gGԀÛs䰆5i@ ҖiG0tG#b2G$"( ̐ КG'k}׵S&mm͐:K*"uO[`Jդ0)31' WUz 2If05'7TIb(zɛbUC%]`.i9˺:e =u-uX9fpNH.FLVa9 W/l[7i߃)Dyl/^ Juҁ@$-mQB2 R'o;TjNLIDa b2nE*Qځ Hh.*4D!!%GEPRtLT oj'88){iEftKqu֖-HT2ĊY=V{{dr2 oP]8C]13^aYYf MA?q?s:0H@ :3ݥ@Y%C 9:A pKFߓ 3ڨzaƣiHfY'39|wj BXL=&y_'Ŕ,(Vo()Ȭz]ଷw)Z>MNA@>3sGIU(dag >ʤ5/l*Qf=)gy/e6>o+b_芶-S-ŞN{Ogf;0b 1Wa0I\+X.')Wtt.b68P`^4\1sfNsFmc3.z !b9oNT! IbPpfus vze ȯSi%5<e,,&h0l99[|y ^{<OtetQ~:s9tHA 6xBPCLbIvsZҰF:S')Ypb [pIƫIY{ uheLHFςs;rڢqlQ;DtQo'q}iF)ᘞ-δ\ʵj'Y3L6 _f@i XVFE$0x%>Y1ؗ) łQ)Z2f<jB1WPV '彍lVõ5(!dCLRTC5* ߿v=}[y2⛒p"9@*>㨥ߧp?W~/Xݭq8l8AN#s Ѫ@ekI8eu԰CDlJf8-⫆VrH~-0T{6tN6lԲ6;53!L;&DGcźV,ChKD*ֵeWɌ7\xm2qzpj3/!ZmX2VK!ɣl!ۆt5̩F~V2)Q\NmM(J(0EV+{O`s!7*Iqٔҥe\,-~!$N?ߕ1 7g%9N/L]?oH9ݿje1ĀᲜb18!kSBL2W9ڪT>=RDh+R^͞!Rls=*~^;1օ}*٭.0sn3me_9YPbV}q;0@W4Gh1HLɄ&p`KدGS#TQ'Wt; {h@1TY2iUF?o>,oߏ`Ϸz kdp<߃o(`HA"-=D6H<\!AA۴A-g NYsgcد ls=G8 ҃d;bXsIy>ir"mzF9YgRQ!<(P+i:.ߎ`/S㖓"jZͬhkf cw2nMVWAnV)9D W+^=gv(O/N*ļK,q᠆L`<sR-9[UE?p7L7aLD鬥C 98;?)39P&R|aI!4kVGC8ؘLaw  u)hi% g\Io l!7רn2 zA)6Bd`ve0d N7-pl:#ǚMÊ@@[5񐜑m" T(Ԥǀ{[0Nyr1 Ņs*?u0ǠQ!xƭ8€GK<3lum$Y#i w1*t~uu'0f ;|wD8F (o2ݑ'~VKt0`)ϋf{l+yn>  ͷύ8aYtT(K)H+C l㛈O({^Oj<w>hLg{KmGۭ(RKON0zfT킘}d/.;Us|L3'j'|ƐsFZvᬼ¢S\] }RQ&CG*{UZW?Krz|[Z];W"|0%&N{?T.g1A B @@uZ O3 )S*9([ 'E\Dx|vT(nzqDEGD) .B@zuNPoH7 H N\[?~ҭ^ENǠN3q}R ':o^?(Ju c4wgf1SL"14X+Y궊A_}4kIBb'5Tn .Σ[ZTF1sCX8+UBv?.5Ecݰw.ZtMƬeSٌC;@ȻɋQțϸ>GTdkդk84Bf ┢,FQg(l %!tzuuz,9[led,vyP`wճlZe^H#AUvAGϔ^vsPac `9uphg`)[͖ <,؍qrV%eswY6k%ʲ<"ɒvvxj77N̼hANތ`e<lOgpbw vzF3<1H>./·zG8igJȭKN0$rOmH~|$\_P/< tHW/[XjA]9ΦI!s_ jlF ~og{91Z'TL҈Z[[lnnp_ ʣ҈ j*8xƈH'> y fMVZ֓Db;]mYxV79[36ONQv,vEʡ!xA Ğg/-Cw>jS&ռΌv-ypqn 9N&;[v"0G!eVS@g5 z$ڞ#|Շ=H.#Xx9XDAy,`Ha?ʙČj&=WSPR/q@eMc%M(]gG[5rb+AP]qƂ]Q\LY^GuL6DŁ gYeϝ>ߛme\꧸+ܕ&oj3JVu?9fkǰDX~F F`:a.3|2]}XJ,7\h35D|;Z9@]B?dk j}G~|&X_?| 0'g,]dq ("a:̥f6IuWꭡP׌&9uUKPlu?{ZQ"ܷ= chFk$dWd$\ֶf%l(7S#g3tZ!c#瀊̎ogK<`PESP|Sm{ hR=@$%\h+3M߁F!a^p&S$uh!e#Jl쒌Hx焲]Ȥ!03.}q]EP}6#(DwªmkKtnH]+!qM`Ń,9˴d aaǑ,9^¹ݦC YvA(j3^&{V~8jЪ]tS  %⓿# &XL+|g?#Z$Pswmc[;c)82`^0#|)bjP#}(v"Sh2\?pH=,o4F X]S;;'(8wz&8cbcО+"τ^InE=ͨlVȔvvOJS Ct~ L;-Y>a%ǫX'' \ tK̐a H ' FV6 :pƃߙP4i!K{2s[3|.D#>rhIv2Qt@ 66SwvI^ !;ܱ@JVg)\jr7qK+gQv3B,UIr֩<HW eF]GDI*2LY#gU9Tdcw+g\9Pl_vNـ {uӱXd(k)qE#޳AlV)_W;j VXGĽf[%U)0nc-ԖEGr3A6B}0(ux> e3u='*ʓ=?lWCQډr;"Ę#U" /B $Ӧ88ǥQ3n84} V vl0 c޵1@I1%s5xʥY Yzx@ZD*)&snu5N2--5i+@ih`Jp&~|=I broV(/r!~nW䌑ԟqsZ!\CKNp$"AV>B ~H{$Vnًz6kdXPOiexA1hV1.ԷsYq$ΠW&fGP!lIYcKPN!Gb}-(ѳ@s60kpBPW}bQ=KW.Væް\rvCR pb1<{Að>%*BImTʆR'akN3X>đ)^8a ,x&h9JF-~: ƙr6U\^!{֍$AZy=}jS_dLe l<!%Tu)E{(S{9lIXCA1"CԡV&5;f1`9Maw@r *duĬ*h4$E`h<D2(r ߧ^P`muf6On&44%9y۸bP}+KԆIĎޒd} V)e=K>ӸcmF>b|kZq 7kztTpqJE4KOnuo5uLN)4MUĿCu-W0;{E:gOi 鿵`W#Ls5V`?g[Չ})9`ޗ&u:)ž}9RzW˕ߩkH_QDQKF|?{ؐa!ݕ`$f$sz螨 wkXQ0kd J 2疂<Gj7Tj)ǑǤ"=" bD{AY>wŜlTRqG_X`'l>9m;V}JB%vC-dWYIHySm=.mʽK-/p4pgF0X@HW>2qک{/OHUp@th|U<8Q>Os#DDLEtԁ9Mq,ﺰ^L5hl~MYʾhX^8tmyAe'mw5ACB8sd1D$+ԊI YQfP' sI ,-u Z(ፌƅAa9rk&84" _ ƌ'wF "mCE#Ag̞Y1,%>g΂)'{Y+5sޱCw$]'0ϳ<^]'bX2| t X[] @""T'&\uݙtp'ĉ-dנa]]lIdSèuX\FtȪr]@1G=g e;S2wp,XJ$sS cqyU1lZBܘNw{?% 1ϋtZȐl5;-7Nz%MC%&8l)qj.+VVW @XJZl lFji4k!K}GP/ )kKH0ȒBTv?3TZwQn8ZPk2nT-(֑oԖtz֙lc޷cH6cPy|N Q( RȂk(˾$r6n 9DuSSmhPVymlbo/ÊCga=hx]ݷY!;=Cר7yw lXbi1ur33AԗȬ8$D h0vvaVxZttҀpu|1ce1CMJ93z,)\2➬.٥춴u$BMrɐIl)>ϹUNΒ>Eu(b?MɣO'G_uz&CSʞmU=q >H᳤[fLT6yJeY|\B]lz/Vj@`28S^:'@)Ĺ2,fmA ,$d{SOQX-Rq b)pAfvjG%c k?s+e/]G;3;Fd +鳮k裡VD;Ġ 8}GY@moK=FD e:;C(]K$~ dfeC5޹b^"~],'!r9c4^ Z_ $M6CRb)Ak@#)b!(*ߩk-[.,mXkjvr> #T?I}2)lG$I6:7lrؓRU)(&LQ翱3>"UbRc)ALc%@F:xBiDVzd3B4FCjL>DO`P vJg~ц ph"k$rZ/ Bԋ H&Zם=[(uuYt$%#bt\SVS 4ڱ_f1rGvv7ag$RFN3x/]6H[` fqkJkg; &\& ya5ӈswߐMw\E .ހ0WIa#ujKbmp{fz8Ҏo />l$d17X5x/C~ dgDt:0WNE-?! fBQ<9σs>N^tkŘ̂`0Jh?C+'NHgjy8:B}]&%~ _a'Nlp4?";~j iRc&a vhU6ouxs9l⭷:tNs|cg7نl.\jkS bxEsr.|[iQBz!Ez$\~٥p!١'F=~㯆P83`2IB\.:k]ypSǁc'6aՆ4PCl>~Uc'7avHOybR[;dLΏse2'R83.O'-,[;_hjW ^O3p f =:.3:q/T;=֗TAFd,aYE ;z8yC9ƛ?:qp-Mh :l 9;;f4wt;y< 1/IHZ8zy|`)!]ClbfȜ'_q&_ r!N fX+N 1ad(i r0^C=T/EHۖńAlڄ7ϐn峷<[s8I{jKȞ(;;V4:I?['^ooo3OUcɓ̯@mRG9W~+qx{;=rjbAC|feǫZ+19-/ߡ3 e[a ?/y7slzGK/7|ˮŤGC7邂N8ý=.\Bxٷ\OH~+<``5Ix[ /i=+9QN7)h$gLw bGW\u-; \:Q>O'ߜ;&!r(Hb$ݍzv. ߉4q)UkX5>Z+oSp HgήtRA:e 6~9?/[%/fY_ON- h%hɺpA{tlND =Y/|  ^` L-ILYCk;ُxA&,Jgy3@ug گ FhZ̑~'xb-SC60(rPbu Yvʳ4!F[4dcg>4@.ݥs0&*7}K.Jk|uAed)8ݍ+n|wkn( P@ T\hIxJOQ˶u'<XP_ 1Dr$h_{0aKeD!ξ>@Q%X. L]oh#c>[3 g袭M<@MلRr1#4?J\.M;xƗ!U+Amwsr 1B"Z)YYr}яu/{S(0əL5!<U;seVd660,Xa2͍p)k2){}EĆ9Zl=cnޖvǵXck2#)n8tLGe~M*k9CG Ds}YR_О|l|QRX LC@2F'rLd1 ih$H YcT@F`,Yc;%Gj<xu V)@!Kk0"kPOϯYM oue|I`ɠM(\G`u:IX7d {5ʓTx~ta< _]p=S|™ wq<m#.n+wAJk_/‘g~8<+`2|hsp~_'OmWz?ipѣpM7R}?| OCDF|ܭbq>#|9|>+w z_uZ<φ>;o;9 ࡬=)בoei&a??7&|$֕Oz o؀O㰜/^HN졃|v'c#G'?q ^;ۻ/*zÇᒯN<_j;ZTalK,=b>xSw ^up痿 `2":g=7OZxm[;;pAxyOpaxegǎ K\xp%m_WaeJAg=:1q0.9g  \k3΄c܀O~Stkpŏg kin!>_wy'_Ux ?W;rhQ~~˷|3o0qIN@=vCx '<pe+s19s|{8\sՕpѣ.OS/ Mdp핗/>w[\* χ .x8tMp`m \r)5` \qU.pםwd?zt | :?w}ox*:s}P4UW_ 6=oyp[wᏸǎÇiҹw~+ѝܕp_>a4_wq< H9z[ۿOxғ!]|Sp㮾~ <2m_| +GW)=я=ؠsi=NK)p 7@rn&>:8r ?|8z濁w]7nN8O2asg Gk؀Khww O ϟ `PFOJ8rc'N:\s`kk9D\͂JU{6;PT{APKAxJ:[BF[#CJuKo٫qprﶎ?}#0 OvIN6.v-W!O-80aPj2J _ IDAT6IL DYS 6惙3J "S藾Ӝ"$=h(^\lmp|E,<8 "OWXY|1v͒ϬGD;{u,fv{^eɚNuJ}eo6 ix~DM#hPL" $#>F}h[:lZTޜdGSl__ne31F=%_bv9#l0o^`Jg9d /{kS\FC:cگRId/] t qE9 w&,\n IU$(1Zs!-9HpU>F!6O! f8Bx6Q%`* ~?VJy %V&WkHjM6땩^~Oo1>A.rk +/y)356>?zxCϣ=EDWá#G[ '|UO|* F#npD}^g?vd aK r8p|Տ< o/o!#ww#q!=zgwt_x^@wx[F]$9[NxeO?Trb(3~ԩmg>ozÝwE;oշ^xS }S$w=s?]=IM<-FЇJ66Qv'_p%_GN/Go~^9/̤=<)s<{>x{?o%_/rAK/_p8|(=3aMC "F,co xn‡ _|x _C|e׿ =|~路N<oz[Q]ۿKA ׾5 o_G<" k^ ۿ?9_Uxyi4믇zxӮ /< ~~_=a{xG'~h >8==sݻQZ*B s2&`l  d ILF䜓H,mλ7vSNa/ #z qώG1>\zZ =yhj]O?~\u-Nc 0{?F^~ ^~9~|Btwg+unFLp_v &MGv:\9z%a0e x~Y0cYz0b!̀z?Z?^r ]o _m 7\sRRH1ccgⷿ8 /=G6g.;f9qG3s6;(fa֛LJ\6=/2bsw_d3<Ӹʛ0yX\sXҊME0f-4f4^z-۱dJqp.|uhll솎.7`pp&,ƞTK?k(gd❛SHZ l+ \V`(O,Ci +g_%8]xfHpWv+¦9?e}F&d$cd1DQL(eU{S,Z5"j?g%5l\( $AdasKp D< ׵À~aqi\czH,9G6صXR쳌b~"~ia)J}ߏ=f?sܚsRgK3qUǒ@4 k{Q``H3E$=zci'.dl'׹.#xЊ2l &h1 $,KY^Ha nAB"QQ1%@ʼn"(QDBi0ߴ8ǂƦ[&2ʎ&cY}/5:G RGK:67Ї>KP!:t?%,)sv#R*\# p\`2\"*JDM.d%*@/g} v];;;сvwN_mhhӿom:Zrs :}7 X5sAVh+3m4a mTuXMLLk'"]]'pUoocoRg$Lx`J,BW%~d(HPF(@C0E4T@\֔W{IIH){TcN8sIX҂v?^ :‚E=duD8KOXu{oؚĦG_N0҇>63aė_~bzq yјͶ8ȣݍoMM8#YC_^} 5ľ~Lɾ+P][ilͷwx\um=1ezLyW_{l`<& |~ 7'| 1{[p9@}]XTU '`I5{6_ʼns_?$~%~?$^wmۯcMWqXwq7i28'xp-Ŧ3gat8y^,[fvX^"}'^yqy1}T7P&;N;T̝;W\}5fn;nF BOMc GNv/sx1fm;ӧM!{;s/{iΘÙB~'c p??;믿 |@ltvXou0yx ޏ]=Xwpƒ%KYy8N3=9ǨS/}u~k|j-NN8pO{D(mb-`Y+G3[[ W]} viG[O}?n74=kOpFT,3;C9rN94Wl|-X{WD}C=.֥80/et[ k z@d)kb 7okh3hcZ#tS〃.@svMzSǕ /}wߏx?3e[3~'O݈r7xLZkm@打dk.+W,ŁGgx &~yιxW0,xnÎ; {9D<ЃoP>ƍϠM]O>$l陹Qi*etYYT~V*E( 1_Dw:;އnnʕX˗`UXl5VhUPhm@k[]k1Xo5ǥTKT&PQF]:#1|* 5 8! e(LLk!6r} ǰ),ʞ l=qh9Z$MnG|rá)"lAY$fm[Me]p`kB/ݥ9H2lkTF\2"|t<21x(ݧXPWJA v_f ؒ4Pce'J[SqsYG-si!k)\K`]2oX^Big\yipc}27PT[1-^gG7 'FS!U40XT #تаAd &'jme{͙oZb1F3 'gAK╹lӤ"ql;bo{%Ea ylyt6e.=qQg;v`ܸfr9<(#ԓO/ᴍcFu]ڲ0{ݘ4q2j31熿``܄Ih-[o^k\(`31X,ᆿ^# P,jwx晧qɧ'D1<7|7p }}=Ӯ2%IҎhlk9k6^,SJ%7BAC3x ,s9L<_~[F5^g;O@]C=m51e}CXw&}Xd1F4ӄ~9Owv3w ?K䃄U.fXTuX ,7ތc9{+0ih^{c;=fk|x xQǦ|K3fl_x 8pqv7浳SAk~_m}6[Lz]p(F^{ Mc0@$43bD=dh^!I?qDՄ* نD3QGa=v{5o<\x៹fC=??th?H/K®{wzе} G|xG .U8'_aĨxrK8h׌ͷW_|:X1v GXt=­ _n?&MŠeK9Ǩ@.(xrߡ:AH#M+g7_c|G|M|>vyWg*7| W cO8Ɔ;ڻY:rQtH*&ϻ']i/Kn&w%`HHb#~ԛ_ HTlT0POXC!rj[Á1q3i3Ayωѷ  1s6v&pڣE~N:v QBdÄP4+H-,MUa`t32-l`Oet0| GNYpFq|ֿCtݔ&sS>P~LK{-lجJMݒݜP&I z''k}\*hE:c 4T.pfBԱ˜XB׌ac5kzH+:,&2 X͒6SpŐXp(;n#ѠV'@&1(Ћj뗱צsVd}4\Gf,J 3ؗK. R(K25g\_Qr'c_%@A[4XeN2Ul@1ΚVf7!ar8sٖ[R#P?,`j)")Hlmd`ClOEZ%pTrkD(쀀Nخ Ny"sw[Zv]F`?'t*s/LIEr9o3q$-^Fm(-\o1bmSOŒfȣ~EŻo+1TYUa$) '(?zll ҥҋ1 :yZ8qt44ԱcLFmMur@“ezpeaaBʕfާ7;F Ǟ[AD~OAt/E5Pǒ? [x {{ł.- 5߳ ,Ev ׽hki[g˖c򀯾ZȠ/3>l,[ՙ (EcםpdkY[0`7ARXf{G4. '|r*~ݸcرxOxS횼& va6i4Ʊco.e9WUs &.Lr5\Zqs_}͞3ϡ1m; t#UmetWYyAT>`O ZVcr0q"՝+K6޲`g$xDEbzfGZ1.~(&G\,0(DD__7zAX/mʁA3>_.7b2"AvY]EBSC[/VM.,-ALk" >j(*`@c8;ИL6@pe8GeLIıL_nV_yea(J ]+Z<$ J%4lzC5=X/uK) "61dCPrɔ/r<ɤVa#J_IY戆Rf VbxR8Ioج2o۟ ܆P+6ǖxRnVb_'BԻ=۲s~v<69woÜ;ya-dwWl;=_p!3joEb$%} ;o^゙Q=vN8H_dzy̘}9 ?;d;s6 bR{795 ͓&y:Xg4V?cp å ֟.SF+!Oţo pյ7wvOvnm 1u\~uxѧ1{LlF Cg7vs8`ջ}_ȁ|x㍷qЁ81n ZZ0kx;sXO>g`{G+Gg. |_}iOiywwvp=;ƌL $(md)zyd^EYjG}${O=,S(],]Z3{3[x?rql;h0l>bYw]~}^Dĕ^澂  VZ{9Pp 'S\3OyX9H&@%!:믾:۞lo YbYۛ \lY;`=?? L4ΌYr>?kM1{ǝΛv[l_V3eaOb~.g_™>'s&ܓYgKe_ <cԨ18萟 $T2z|w0yb366n4 [oH 5= c$ǘEFǼIbIwYA%Hӱ5u&:zIBCMb<*3鑸}W*A{m\yN"+?KoGi).| 5mZE"-]8H5KUC2%ot_QtO$v޻ U IĶG ~ + g݈+&cN''sy:uch%u>qx%O`Ԩka>齫D27Ot%Fag/BTWeQ Fg>&W|5*VU:*w52ZsUrgsȲΗnN"=ֶjʖvXETN V!"]9f$FPoSbx `hva$1,[2M ;2c|AY&KJ#i>Ctwj ?[PwJXV>2i`6pw }6}K[Bk^5\g[pn/=0o~0{}`:B6} X<>$g Tl< e%MȲeKyࡇY:~|UD=`=nFV =9j }7y9culU+V?λx_|>}%| nPW?>o`ͶAO? ¢/ rz۫ݨo@um >+cr %Tk/bC7Œ?ʳ3q5^U\NkJEҢ:F7ǟfrO9kM?c1} y -^s_|#8$̜+rz?XD]O~݃23z4p3O#G}z`c2zu G lM?n<7c-qcY{/|O=uG?oxEhN(K~ǝwc]v'pZ{28h+8> U Ύkkzvy'45^ĻomgN qyF𣨭Υ*xԺ&Ϡ_˛Vn^{3gӟqI'ao_{܉nS~0Q{;lw}zԘјwx?ᴟ#κҋэ}v;Zg|gP 9ͶKauýs/mxq.r5:[`XRMFL6Ƕ#Zw=a@d3{ok //9A * y'qGCN<wW]*=imaVL=RǨѣq%w[oU 6n_xZ{cnsH [ʀPioA\n;g}hukE&dH5aSG܉Y3Ÿ N>h45^~K[k^3jI5<ć:9GbԐ5cU%51gwzuKaA-l[eӾG0"LL3>Ip40Bj8Q&&)~²|1D6v Z<~`TSLy~82sJcza:+w_&yĂi&I&ސOlm64TUk?nޕ4kb IxEYsV\^9Evw< L;ԲGp5#X&D-gk vBݡahMfcgsul aj=]/^2ڍ?1-UWAk426$&R؉aǐH &PT&u*Sw^Rnmh 栒˓|86FӔL8)Z<&OJZ,Fԓ/G5IQ]7XPb10f$ʷ^h#1n:o~RߌOGih/Ɨ_ièOM6ٔϛ~|qcƢy,_}==Xku0uꆬA\b)Q뭾>Zq'`yOVeQaM7k_1M3~<:ZWNq;K}Jvuq &M%AGK 6O^ A6v+|+3=jd6Ta= ~܄ ?yq]Xd1jGqD,[cƎcfD#6-mhjnZ&srwW_$G?1Z[۱|Jb⤉Q_ǔ\eV@W^1cFyl/_"K.e\_S֤I,Gb@KVe4w on٪kMj|uCOu}n<Gb1V^ w:798[likk7,`_Մ X$=8A#GQrtUl0u3>|-| HL2 u5lk-d~N6]swihimE[jĘ3$k<ѣ&q OF4i2-_ n'ry1l2ՈӦcF>>i?m<}SnH LeSMϧvK/b;AH ;HB_u8P_l [x7[qb6{ljYs||%;@OGXKC\nAE3PuX)|nn閬;oq7իWeu Az=QzQo\^A-D0~$e|\}Ÿꒋ&L٦qY J(H_ݷ㠍qGvήmLcF1H?1MMffڄRObqP˭B`2qB3,[oq4XlVkMwbݵ&aҤq\چE/{Z|*~ksD'l4N N:)#iSNIޙѾoй60iC ;W -.杙KWrp)u݉ Oz "zaI043F q)vk5[$f}:2IL'@لR_0M8A$+40+L#V=?^kr`M(<+.a [ersx GuoW >yl noϾfC2|6&ɼwMZ2n^]ِfxV-khvx)=&e2 FMPS#tD5T* "pܓ>BSA:a2q*6Z{xMIf՛ sb,Q $VǓ׺C;t\_<_E?U7Ѵ V<5b1,7>6V陂Veퟪ\vef|rT!̚<1=( p91(_ۈ:X԰T/rby mԜۮZf92OlEUBmvP]ZyMo-Q>$Cb%-*kHdKy2q<9C,2y #Nu|4.ʼQpo ;:CEɔB}u<PrV.{ѭ<5 pծEyJle(acoF@/EŴs~atuE`UwdBu, ̌2LWvH{}lFg2٥82`Y^iF,&";"|pM/S3MFK< pBHlDg9 0$ H)xo8=h\$6 >D/;yԺnqfkYrBʐ* نTCa-J:L!/ԁvSKlZuRBg_}dy8R,[]׵CNjR {lFo3>%;TC>@ KJX0H/"neQLz喁&? ?0%9rkKvf* 1Y 9b&&?@d}ŨqՎE_}F g7TҽZܜ,0ILz9gzcNB9Lkku\vY-5 ]vkMbOkLb.MI&x;6Ǽ+˞VQbߏp6O,|ʽݳz?F{K7ܪ(2Yl8[iQ`s-qz?e92B"AbtO| 5G݁&D0È0X E̜=Ìp]dbu h B hX'-܋Lȥ<4AO!و 1z*g #eg@U&f0%]I\|W6gJҗ §bꌢ ,V=aĝZC&:1+ 5^_{^1CΒus^dT4L30נ|?x M" SDW<7q NyHcK#vgW暔? PXa;cT1T LKD5'"ז6Fc4ۏҟk,x1dޕ͘std7:b59pR1ٞpyqVа<,{#;0H-Cm+ksya1K^џQRKOOX Fc\"`Wt݂4nF?X@zJl'*AQ,TRtAEdpc#_W?u,8ĎtduY@jB2phXfC) #^$\4 #v,>lj{,5w)DZuU ` hӔ fP0 #GYə4GE>sj*0 @oHtxb I Y:ə41n2j' IDAT րuSyf\'2JGZ:8:#^x2V+*˵EeyR̎x5I +@[#AE֐m%0ز"1RFP;2IbDURW'3&1QV&ڡ*<>uPzP|<\{9F;*qcSD\ ]V!Cuva%'.ӧQMk2U-f1 =?" 6\)m(ךkGusa-#8fa.r) Gh@Cm3 EE$!J́ }M>Eav܌EJtq `NA&!5))rqg0~G1S8W mi5qBQ.!Y-8&ilH#0ꠕN=Iw%Lp:5~с:|84H?" 6jľfko/?l"1X"F)4y <=aU/rB^Ac61m>KBDӵS{""d\#%&9&CgDKΉ $k-,TYx8cG,[h.iCߝ6AZo˭ŏ89K}kN8rgϔ@Rݾ(zᒰ\. A = {[k"]ROec5Q $&U P#8/uU1l34h,44C>]߅SDe}ai)4bڕ[.̫*Hp66j kE}m~gF^}@|ʌwVl:*+jE*"!, e^ׂtOT;EnP_ʊ+e/6NTbHMh[cE!-C;!~J mk[qw=\*-e]}Kv03rSv$.f喐\~8,ޒ~G9qݛkO;lwy"NWN~V^l;))OE1g.,+9Tbr$4WC&d'> ?-T .$/=_R- ӈؚ=Np~ ^x.G 蝤Lq( zMOdwv vq qk>:h %%kXVp2MwvA:9:IR +3R" J=?uyAla>$2Jq/*t)I|p1g$Hk TdBb{CʯiF{WxgXASՉÂ@X4 P:b@, 6662ںK6oitF.РɆ_yVV{ZeSq1Ø @P_GDU[{H <,g|Jq*Q\q5v*M).s@eHSkhj|U ܧYX|!*ETa+I!* Gayuoi֟IRs:Zh>R)9_ #K_l H*f 2wθe gYXe^ro,(]}fFy2w` ¹1=lWk$7Ai068 ?X|C DQYw;o\C1 :70+q<͟YUy++.bHf)p< TBah =D~/ IWz{2ܽ{ԭ=&FY{4+JM[m{罘I ("c ^oh.t2Ewe*omi-2;(`%7ӂq:Q$5LތUv| {XE#aѤ}+(q$:E'⌰KN.99p6 uؒ:qi /"2u$\V;;6>*L+V/9Hm6Hx>(}Dk:3q"UYcn ?n% L6ALtM* s @ec|M}I+fsݲf`3zQ DA7)DA%9[X*5CNg_{fh2 +y =])}_5'v\g@22u%P#َg}eWu>XAa>gKݪ#]kFߌ>Ӧ}(D zÚUYiQ7rb޾GT~{`E-b q[#T&[) Vm>{xRc&Or,2E.rC .ReD$E`( v$C4a4T@h $A0Ľbml%~5UTPFgO?Д>l3,D]uM].) 2(`cp* ٴҎCM#FaJtklTŎh{ĠZÀJ:KRL50L=_]`)L)3҄R߇&z4ױ&2`BS8[iۥ#4Fqڕwe(LC( *RACƞf* ms ]] 1TV<ė(yV$ ˮa0%ʼ8&pl ̾yAKe]W''ȪHh6"Q{P];iڙme9'lTdYo|T_Ӟ clz>_|wv/$n*o̻`wmRlד IUXon-_+[G^ dX z=t2VT -t*/I\9h.L`,$BfX`F~ZEa5 {Q&.d/ȇ7{)~ѽoźr $c賓g@NR'@Ca;=J% =McKL0b;Ҿ/`N(o%t&6-n/D2ŒŴTŖr'vbIzb)؏p|w ĽRL}ϓQ䜪%d?el3gw_tv&tVhfgȪ7&N3% ʍ2"OYbhbi\Bi2sPhS4HQ+vn!Ô 6G u%е,PG.N%vYs?Alz«QV&=/qA3@  l{)h۟V0^ʻ/.KRYC6[ŁB P,`3CC%Jc`au3R(ZY$ "t3}҈ ok&J^+*4Y[z>C=zZK(}iQ*#U`Y9 Pےm0=)UN1DʄkQ7(Y$4& %C7YtGh+k 9\ZIyY,t=d6N # XۏS+&B)&IPyYN42NAhc*HNԠcJ\R@k!Ldj.uƫݽdB6[fc SEE54A.ri.dP7(urG(s``2g]: )xqd-`PClLEegiU-&YLk\6=z4y.VSkC]gŖE@[y6_bI*Yώ:{MT;78hv Iևs8}=@m}?VfPc xzejr +GhVa]3AL B~2ǽ eGJR½21ےخo&ʃsr|&dJ,dc(1g4À|*J֝|FǶ>o+gOQ%]0 ^Z`͉ `q \M@$I.w3KoF#Cqq IJ 11cJl8Yfr]ʌ'o#v~Ly) Сɾ{OS;ܟ eb3xw8p+v.*V~j2PhDgEx`1p)Xqol"gy%E JSM=Q >K" खCA|,F jA`-dv֣f جuE#& \J=! )#e*Ej8 #z:Y+ZK"NlVY+:2J;08hQ&g B+:`[<)nr{wu#j/5KVH3D|'UjH?)Az''w։ u*^`=/,$a(wx T OSLl2*@yh΍<Җ1zXdć $\I^C3,˼P|kP.2kHg\2CgQeT3ZSM3䴭WS=`@{Y (͔J#*v?]ÎN{%I/c6DaA$eiiZY6MQuO!G{ϻaFƦTR~Z-{,B#4Oehmeׁq\J [7\ߜ/3!u ~ɡaˡEb /cCZ6Hu01W ) (pr]i<߁/b"ʉMчnQ0d!rQڦ̂dH GYj* ( T{[*41M[UMO_ґQӜd g cxTfyfqDģQ6cVa֮O^w h)0Q@"|g, 'F\ UI񶦅y+ҥCg+W|rI +o 0Hl,?F} :V('Zw|s]'_,NѬR)T yT9h m)xsThh]zˁT&5lC+}xi*`U\Cɸ3Sc @1a|IFDmѝ?}he{1N&>7ipB$vhRL`Ю)FC':>Fhp0÷5 YQ\j80hG_o?(h#ĭZcE$P% }9jkI0@XY=^GJYL=qAsOc2cX,[HҾτj5`wޚeK\ߺSM\`j5d{z 4[?o`b"<_~8QʠJ=\bxI$5Ob(d0PJrNH͠ڠѪˆl=3e,=fgrc,:s.etK.։ʂLp)Jv Gs!Cb`\)so> f 5I2E8jBp=+oJѮ<U;QDl-F'5|:;%vY J&j[l]mvTR9g91 dr D"1%M&r̀ym;2FaԢ%BpXgˈ)DæH %.pY0HQ,-rUru#hݜPIz? R3N=tVdeGuB굴V fbc)Edž:8ry%D,1hAM`$" e V#fRAӆK`ND|dk@cW UDŸa.HG))M][]9Ia< 탃h@#W! IDATh*<\Cf)*t{ צ3IELQ@T {&J B}uBlLIhQ$uoذ&w3д3)92"EV`>edN~sɒRU%Z J)WQ( b56B,F'yZeK '49]d#SL YZӞl`WWnFݣd0`9TecY= ==]9* s F\[B2~={:XϝE L䫪5CCs0jj4C)v3!GG_o%Im-4cAJ|DʨL}p9Õw[UijІH9fmY *4Tj VX)#"f6<`+}ye~`W|{=sc|@D$)aKD^iűS%t$qʼnĮ^1-"L`ŀaY (-a A/(lnAw>E`X=V-K=e1LS៝^ 6/0bnYZ{<@">,(T*kp x9 EWDr"vK4zS&٧ۯ9f}-sxS~ bu K(Pa.{"]'܁lcCM @Symnn*{N:@$ s+-L35 ~ ?ɶ[(eOaMZK޽_?FtQSLko[[#LLx%E{o/A%3.VΣ5=oM=rĝ[ ys$$XD-Oqw /HA,I B,iĿ*5N&Hup01uyta ָU %FKk0l6Tzk3AI!ҥrTP/ܴ֙rll.EMA0d*]"e9 t*ɌYCHcqszC]N#j%%9dXg$𑬌$ @&z5e")`o"SYI=_dpx%ā́b 3EvX_0([WUYD I\+^3(w }}&4=ڻ&`ESm"e5ĐnRK;*I8G 9㸤7R&\*?6W 6P~_vƹk L/uHTd)FHۄɒ&e$*X7OY;hubZXN"]/Ebn7hUslʃHLyjeT%.XĖ0EY0C䩰P"lzMj*:VnmRJD b0a$Q(%%Attiz2ydQ'9BS3bD#فU+sWZ\ r4eيm5ۿBcqP}O};zy@jks琍*ڼR?. TND֏BHJ:!{k‘r1-SIaXNUm+kTN\6!m]﹦h[.!TCC(O{MeZii-dS!C 3]f%uia<8Џޟ\ GFO~ךIN9jQ:DI:Ht{D]qsaJz>'0/`-gg*윌-- aJ1\O}aH2]~u Kw+'RFv\)p@x)d(8C 0ƙ 3 q)zX{Ѕ4ګ 3Qqa"~W7Y[~'XPf80蒥1L<  _5/JbH8|$-VU-IGL{þs&xRD6o?eX U?e6P*^̖}*=}>@P1 W+#mPXOEB,rJ2*ީc'ۏ3!grs6,Y ׭s7TSUQP?(oh@}C=('PJ@bLeWL6`Z"hC)3Kơ/ }CYHGZq$!R/n)eg:`k/*\ G F[sR+L29 3g#4/)WӏML(;@cSm`/IeӎqoBɹ&guR"1{y04t`Z?}߹DFM8{n|DlFC6@e,yH|e8?Ȇk͘t1&d2m}Qj{rTsnЉCG$'WKw![hhh6h0I|{w3Z|qsaO{L<]PJJ;,2>@ڍ]s7|k!\@g?0 [pBS lp]"{ȸxe]:`_Zx E C/ Vԡס~Q4Ȟo0E qjnʓӱt6yL2m]};t7np4%6!C8zo*^hؚo>Dz٫񘃉 V6zOOh?;2?xC `࡙Z(k"7WeB-ZEqj+9 N |Pk$kk`IYgE9VZrF8e˂PCZyAvn.s8ge\uoPꝜojla*yZS@*<=f#l!LMYd b\U>9eXޑ#4qY':&LjC _ѓݢ @ PZ[ Bw]Yd(ꬶ)+VrU6#.k'‘̿۷k(KӂX`>VSyI(FX{%441C}Ž $'K7S˵Oĭ0yMc۪gG"= Jѝ)0luNn.+:Cu4_ԂO SDR}Ƕ8昣qۯPW]̕]h۾r 9UsEsEY/nwj[XyT7Nv2j oȃ|oyyl_TlWtY +.*`E]}Zۯ;x򟗱~f\|ɥ_M)&ԩK-1G9>7*ϲin /b _?t2{8zqҋcOTb{VtКk+iT}]&y9.,*RcO8ݻ >kknC■4_~Zuu gia`Xwk`JN>" r}]i3aȭ!I"7/F:O茡$;'T6rY4҂܂|E4@K^~ __X\7cN[paðmV֟Xbn&,_;C5}G9h! [B.,},cǡnDon7U,*@uˡ9#KKIsǖȮ@Na.^n^ 9C2 }NN+д]6|%;2G/sdr3JA<'64 09oAE=Iو8Kr壡Mi2tp$Hƥ훿$NWh4={8Adg<"Gb[b-~fqġrkZ|H.ՔsjaycɁ-{I46 pPɎ1uTUrӉgܓw<#t0t^T)4;2# U@:[iP\ѵh&,\(Zgy. ?ߊE$CZihbFXڌIKTdiI4F3n/CO^ 2{1DBMLPAhP3nm߲#fP ?4a(hت~BtR׮QRtgpOSuukN]\!#54򚛹=eB D[L LA =w7 vBDiRYJK qzӶmݎ>}Ƿ-Dnn=ѳ[7|;w桸~}`LmӮF>LV9e{?c8>wl߱r R2۵żbYύ1v(ܹ XjkЯo/\sؾm;nvC?Lofo?,Yme]ѳGw;TcЫW/̝7k֮Ç;nAm}R?_L8f˸ Z2|wb}#U/ѾC;rm8ѵk7Lz#4pbЃe(~CNƮ](-m#ƍGeE9zAoee[M7bW_c^=1f8~>z7>ep^oi=;c8CrR`ﵤpԱ'c.X| V.A}mehfJQq.uS|9|,ȸrRPG Ob#ifZϟǟ֢7o‽>k-]zfuRw/fP>So2]-Znowuڵ3fS9bĈ}ظq#I'/>MM ӷ6 K.r GF ki}Em]->ƆFFM[&(O}aǪի0"8rXj$T;SZKKxz,0 )f,ʥX#:MU|'QcP)\C|VS}mh:Puh[Nj NJ/3#,ϡSXj Ks@"- CFAL;j^>CtqJF}fD6:o0E|ئ1> %^$L&Os?7i"3 :6cVnGGX's{ƇTnw"-=s}II xSbR 'YG>ͽpD  F9BIU6: IDAT$^}TlńɘP.8pkAQQZ>B~.]y̘zϛcϺ^s=r qzE&wqrsq 73^ v;N;t(Zd .|8 X]z5+8+CsƶKLO_0T~g\|XOqpoӦMU?m߆={bmhRE?}<+}{c֭1>|{Ӛ=z,&z*^9v >3>mۆ|3,]y`=ww76>ϓO?Wtw3GYkg>F=9 ?I | ׾wEljOc]p`-ޣ'/=2&_ n~2 qY'W]GZx`a|Vuo_|671s&Wtr<. L: LJqL<xĉsϿgz 6qJZp"Ǟb+[rzҪu +׳ѹSGyi|zxWs1yG}vx[n\>OwoСa*:wܼ<|Iw}8p`ww}1cL=m7L nE]¢"lܸi$ 9 L9bmM|֯C) $GMbNƁM9g3=0MZ{o6~ a4XBG-e.845@f>ḧnܯ^}Dv++=-"L73jl+ٱ7ޫ-/De7='2OtlnׂN,&V5_SG5٢' d Peѫ3O%6EU6yeڑ鲧'tG02/hNn:2F. 5LwJ MVFٔ9j ZEw9,6R*[3sB#mlPwFz+3CF6a89u%7-kN0,0e<}:Qte3EׇGlB#;Fy :i{͔깑1鴞_A}_xgW' 3((@y={=yhѐEod>wjVԡkkkPHҲ wzߚ^h\O/R3iwzugam2:Dvˊ 2&R_rTBy.~Fc>}VbC--i7j! 5~ȉT}ّ`"'/ygj) 46ԢUU=*Ktl~ldSy3,RFn;3ǙM ܅0+HvƖRF\D7#'-6Y1!ڪ/)к ɗx>gI|'~¬|L<\* 7\W_}m۴oao~p3c {.>{a0s4u<_v9֮駝9͙O=z`„ 90\7e {QL:D.ٸ+YM۶X`.b|Gn7,ݗb^D{ m#buy= 'gރ;:~p=xSK1})!|;1t ?X:u/> ;1CqcU񗋯09eaV8ڛк7>{ ;49`N837v ݻvŚkQڦ5?vhWVAi6X"\ysg>k_S&ac/ 7E%(*nVmڡUi;>WJJ SPD~JZKn+,U4s.@"w3 Aexdr eYDʾnr5(-m#b1?.\ΔXA0.kQYYSN9_}.\'֥U9Anڴmörͷk׮=f4^|EL8Xt ;vFѪUk+~]K. ˖WMfmY|~8q"z\~e?`.rg?@'Ow  ;`TL;tnW\/Zp P@`KwM܇ӡ9W +pi.!&H(#H@YTET10}/wNԵ{%#O $aZ!N{07>C2K ;p3?}K-(a>ڡdc1kflRQC&!bMxgif5VѺ UyJ`!g{؇{gpCTN2ٮtHLinȴ(6_l 'ڋ;E g $"Ykc 86qOKɏB:lO%IySq̓yRd7G`Ў,,R9"nLt(k +0-kF:F* D"/ʺZ+5\Lf:pH}\L-{ݰ@Vb H[:~ξ͑%)񸢤S:KΩ.Q(wQ۸L&kv43.2ߛZ_V6|-GA, u)ե T5$630Αe̫,b)(mq4IZv*a; W\u5z:pp̄ &ݫ7AK/9sշj+ʱizko}5V8/)?sOђ"PL:d45U6٧:wŋk/aoQS]J z0+* OKp),jb~^{  OBQR|[XXB>8 ?sq(h 9{lX}ou@Gmw? FDzN/,ǟ%ق_~ yJ̴n 3'#vڠcY{Lux|um#z67[qLֳjj.ya }?|C4`-8#ѭ[g3{;~O})44qWQUɢ| Bd6WơŵW_U~ヒU-[QYY˗be^uk1أqQK/pEϾ@vq)'oŻg#C(*,m-Z?.«yK.۶mo :!<"^~MJQǠSθ s/ٖ/r465aUxW0Q\R׾R̨6nlt$L21>|  k󠺪˞~>lݼ W^{=1e-Oqc܈Cp7O&݋M7a?8 G <&907_쯿!F1ǟN0;{ňaCqH-M76s>)iAҫ᳣uy%}Uu Z!d |\~%x䟏aУg7h[KK3g";ſgyUXl 9|}i}Qu"cիW(bܸ#l+IqB$,\c`]zM r ho>аE0dA :L:(x';a\7[nÓO>cƌe˖w?~(JMyLRB' @ yo3osYp!>[&}'e[Y?t "?Ѯ|M\hdeewY[S3]3FQv! ShN}w\SnaĈw</!з% vlzc}Mh|+'JLgn&v7s+O2meY.2(@fGRŒ;>a5G?DCt}μCDʹgE^\3hs[@L3rŬW[Nnǖ<'mch jy"!D S+a.rlJnSwAwP"}I'(c ('`gukQګ0 Z$ FtsAGjÞ@ ;fg#L I׊Dg k_,ȳm)oټB"5Jg]J95kG֩0@EB tFMڸdc"@&c}xͳ+sVw會U(_*Vu9'7c/mUV:{}u9ӷU!9G;P{j&W u X&hW{j"~-IvI\ϋ%( Q\J7; #̧Y={# n]Z% 3cPMj1>6t@cMp̷- ^Pפ履@AAwmm 0Ȱ+嵱T0ABec30` L~ _su$nLrz_r />q?O?K x|.%;řD,|m2e= ;%v؎|nǗGIQ;4F۶AqA#?"_DO}P' ʏ;vkAīo ;!7'_PXߖ-V @{̥y,\tV yY-Xt4إ 6_@d;~sעJղXX9O?'0Llł%,΄4y_?ƌ–۰f:U*yٽ N:R;a'>*/pq6}˶x7qޅcYgpOq +;l޼!(Ct Y[n;zṭ$jTq os:s+PUq,՚+m)ADk։n䡌raa+8a*8l}֌{pg`I'bɒ(*.gC ՓZn#QI;Mv—\:2c-&=E:D!A'J+ }-y W._/>O9]p13<#|W:ӤSXv8$Ӭ#l0[,YMѪu)Rx^1Wȶ Вݿ3l4Vjb4Uц$g͡&GYǎ^9¤O)"& SU-:,ָzoiR8+rI;uk$_eKd圿ΝQYSKT+Nu)2ʕ+S N˖/ŦM[t}јx)hۦ\37 86 ^V~mn /AtMk~q<@k;SB`7qwS_|8V:x4RJualHKMҎBM@ʼ7ͫ}|CR]Z\~S픒z1Y~#v*UW^Y>*''L< [7o"D-'caG@ѹsgJ=~=χu|_L$}͗쨗m}4djۙB~N䰝7ҤjI#hI!T.S( Qu=ڴi˿o qFw2;{}ѺC~r,Vkxz CmAȶbq"]x_cՒsmfS > =z ?~?#G6K/\̊ǜorO@YY{ddD祬SASںzt҉x СCѦM;h_ 3^ZK e=(jh~kvɳмpyf xPZU6h|u,Dv7q;Q8g%6r |Jתʔ(tFt\`b |u< |߷k/|W93 H 'ry68u1z뉧ѳ{W\U/9 JO})]|%n‹ \Hu p7r&(ʿuvlܼWTUI+|WXj5N9$LokYspNeXEϘv}ae\~eV/۱hϸ1%֡$0x-7⒋,O=]vp7>|{Ǟ㾙3974M-)i)F%;y$, Nm@7M ?8{2gظaKYnϿgƻ.4ytp 8|h,YUkؖhІBoW1ɧѮC[]Ͻڵ06oaX"DDsrWs0ܚo]o/U-y6mފx w!#Ĵvk! _{7N G1kn?`,~*Ub4΂`xŗ^k0=9<,=3sߧތ߈ÆWYUֆa|551xAVYYG|' :z˭믫Z5653X5rv؁<| 0KTja=cQR\^|_}%&_5YAcFnvt W_v){%|7,[z?/]Sp@֭aƌx3;aΝhۦ λ>L 0a6 6mيnWkPMcgآM#s8"i!Rw>ts^w[՚8u])_N6_P#g5@p;DnGu+,Hac$D,^c* {Tm"GXC2L 0e*W).Tъm5OO<ÔYᖚvh_[b gd̞N|dZ/ϔ4ocSN5 1zIѱѴ3^:310M1ԉ`1D BֽE92Gly=/3{f2q<&Ko\H̭ӾlI6ǹ%ltE}>0=t67u/2SZgh#fP]@)%D򎡺`p*_>&uAD|⃖lÊPƖ" _#@rm $+nڡ3f#Fi {E_KS{s0!0]tBZ+kڙɱt;wL {$v]hhЩGUF}C1qªCssy}ڇb11y-YY :@$H"/'Il恲d֭:a-3:KZ1‚"#L>:uݹu ӤRbݜx"u\mIİpr,m 9ѣ; DsMZѮy*X":0սSj9,jUBNQK.w]uMٹغi*jPP\V9[cֲaGګMI$λ ~q {$\}%矄3>k׭V-&Q2S5X"\I3;);+9Si^_u P @/șz.nV\߿q&h A2PT^_Rbd7Tlဒ"(lhh󦢢i;v`e}R+Ib@Qj+*+.M.]p|ǎ\PXP}{m$ei-n.裏1 '{7K.եASs- $([FqQ**+V®ޓho@WjG_~F2FmM=?W))j#)/,*@]hH(jӅ{, ̡Va^ *0 6폾F}f{@'5TC1[` v+ 1ȫDgɽ)_gդvt7x?}Fs 3ر/j{)rC]3*7\$ǜEj8X D0Yΰ%7}=%7d؏z,"I=0^=lǁ 20.@wrࡉcL!3-u+~ό6vsiEk9j!uuYyZxҏVd/;^]t;`t9nKSD~)B?*Wm~S`N|;g6(r;:6g5j}f4l>GO=> H=C>裡ݺu?/ ~= jwqYU1r (ȼ k4 g;^fj& us[Y 8e+-%r6x餾4[C|oLֈyћ34WQ@0D~X9 ^t׎n2zPCiR6^czx-j|?1"2L5fׂ/ENAa 0-\tG@"t*dqj-/3V NK-}p@I :1"l J ո8 \Qq;XډQs:ŽY/exTYw} ?-gT,}E=U-Nr*V-TATJF_+2KUWOϭ+9u:T  |n;!rٶBv "-~|ҁ0Ba C0q ݟ qHr A:MIHd#X*a3M8$?o:m!1ĔvonjAp?,S : `,cۘo{rȫgŲPb\$Ebf@!,f"QU6lΚF4z=r,3yԖ19nZMb̐T:$nH=4$nVm4[:9ZٽSwDn`Jpm72>E^\6775=.+# 640Dk0S035F,qFΤ#}Gʌ<_ʕC';)§2"#3#H(JdgqƘeiRBLMMIܡCGΠ࣬7+jSzJxV34-du|]&,\I㑕eyvHulN*3NEgyMiœYv#5j[thcmdkɲD|u+8Τة]r]x$t/2-_VAڜiöE-]/rSW:Kk&_O>|H"(0 J- u 89JגV$|.Y2r~hݡbcQ3Y>sgb߶>Ng$|lJ(i֚ >,(.5f#AMָh012g(ޟ<WBi~?Ka4jQW aS5Eb6ٳMČa%ȯm3叶]'g_ #das'8 aA;Pf!+' T&Q~ؽܹ27}? # y6DZFgQ+cYّz ,(h9'Z. 6ƘnRI1?k)ȑ*5[rDQ 5&{d.Y,0)`CdۊiAH]o7w8TI rl?$h}=O.GZY!m9 Zr׺A݀A!"MVyk;g|X L^,!-h$yljJã1X<0DX,V\ Z/gb4D0:PA f(@]W.0=ىˀu줠2>ق4vUMPј4?jy̠ȉA>J"ōh(gju/mC+.:n\u4H3;ٮS=T m%GZq Qw IDATdGe82 Ÿ楂&| @L;֪ |]g%'7;P^C!'5YzCsCj5;ASl׾#KXDy mnŖ͛x 3 Gp &ꅣgz dX:H򽤍Ъd&ݳJrD.)3ق9uK]euSy4?@)L69x'Ppy7>#Xw$Yv t}&L2}P x9(k|?[AYqCUN3q5kYK: bPmL]ҟZ}iduYwds"hؖ_H&ɥ}$n%r{YhrsDݞ| [ПdD5C vCԋ#W/L>_Z M ~ge젱)mHm=&'+-M}|' ؽA=rp@ݎמa^c^l4y3ʁk])#ך 3 ɚȇm19%+-〲zFx^Zr%>XQHBS4!J.)V_jO=cpDHTn7a)d(+ 5@XI>Ӟ*PXLX>@35)(Ihun"^FMWꁗ`iH9NMK"7Gw3B'@EO;z Иlzngf@1i$SX%yQ$UxBVW!F$ sӨ!MB iaК:.3i qhfrijeosGy9E(/HPC\6@ZL5H[XA:ojlH'tfFKduK}Rl3 lnidPd'8RMLh=vQ~~rKgs qpw-8=d,ׁ0΢̆N6#h + , JPG3Դ?c|D߶ srRFGcf=ߐ|ɨ4 f0-K-Ͻ섺S}K-W8g Rj7.7;w z\xqJh>Vgv3ƼE֐^x\}azcDQWZ"υAy2OOZ7QC)`4VVe=9\ȃҲ.Yh`Y)akt mVB]&SPr8hNEd9FcݺXlAF>΃[ϠDZ[A  xpR2CPS',߉RklQLO} {f(,OL5@4 b$lZhMtCsRWK-(X vI4p_e"5 R6<ٱHoYc<~%iXRr^'_;ߞ~bJh-QxZsJ2.Z5L(_tS;V![2nld>^kl9D zj^+CAٕJ:u)]gݑ;TLQw FI'%"\>Dg?Ŵ~7e|vX)HvLg;xL6$65qT@mՒ*$?y19ޠ02tyLHXro5% աs[N]SeX>3DrR%o\<(Mbko;+kF68`2I =>Z2 *=p!L []{ <ڣiL@R?bܯLbb]e-m;٬߁5 F2 eE,slX$6̸-YTCv+NPBc:S36%H!ӫKMbQ Nn/bp6<*Lgc0H+Xa@ZS9zulX)},j8K8kJ N6 Y%Ve88ՙF'*d+]#184ik!Ll׋&3I/܉NTmm|w1s[ؙ6x]A(۱JS'\ӌd f@ZcE^ R/GqcXL26UHc@Tݮ~vJ$S1@\Un7oˠ>j)@fj]BWjR\M*&t ^T͔7Z#jx3˥"4s-b\PowQJ5T e;59~4FPZ48$QVSkI5sт09"zX9zGOb:?]Z'ѩORRi9堣Xg9.@W*LNsRA{̻sms>V  ۻ{tqty#˨)vtMÌ { pIBMdJxJ45{Y+cVݦ\M6U3ch̻-F&dNm}T %$}8cue7wGmb3]Uꐳ;;<_I:)D#eN|hpw 0fXpJD n߂G:G|T9mXa>1hO9g㽱]zllǜXL +H=ͼaP Okpٷ >R*ew1o/k0"so-;)dS_r .BYxUD}rW=.EV`27b@0mƩz TDyQ+{&wf}7wrPyXl4|}W\(VF ҹ9r9ԏLb6Է;0! }&ḾoG9ԉΘ1i#FU]:p5D1ƅ/7xFyDF07q*WS{0G趮lp13@3ftǠqu*ds&Y!f*4؀ ~عe ]yB=ᱥ}.sD6`{U;()ԍJ'SryeЫz4K f9yufjF;r)n2R J(,nXI@ƹdAJZ0!RX FQ.x#/rĮ[6T@B9erx <,cu(:>!*bB1cVVML_.kM~~μL| i5D2ۍgi{H"5[$INsn%a1zֲ> 9``֌1Υ;F&Pbn~SiVTFCoI Ҿ_-0LҒo,0y(g"Bv6kH4gZNdl/,Bݜ"_uQw43 ScvϾ.[ 8Q#_d˷ -uLu2t'oKX$$=3`ke!d{\x*p~Afǜ7h=ڨz-(E#cfVuqнh$ !wuL\;Sߏ,'/#X&3t\|f=h)]'Y@+ SjV"0롮S<:r.PpSI#Chs0/l3OyKM=wbhgUl59NqúMi}Yi4C3X s1gf`Lv"u%H*9cQE_ҋ**dG1& 1‱fGkc- a1Ь5bfzeZ5ܫlNMY]-ia+ #HfW0}I<7"Oo928l]]^Vܞ }ǧIeCiZȋĒj9~48zL++TbFZ I|fmҦ0RG =f&P8f<ږԋ2s,$pu<ϚϏJrj #@>%-K c~>s^A`3AE05Ri0NKE^8zE`x.^+_֑Vvn&4)p .\Qy2|wW5 zXDc֕XwqHr% ؖ&g;W~#+w-62L6JݱU ESHJ Z7W<Z*ʴ7R>m]zx4 lO L#Hص0A==Ⱟn:Cb ։CXPAoJFByH<8g n 3f-v(cS2?ԺوIPr!6ڃ7HoTRdi9 O""j `PP% ͂ftBm2i1!.瀂-8?G^ZXK6gh;/{U]I- BDIܦ<22ߐr&$JL`L_Y=/UWQOLFigkGװuv\H=Qa Z'g[X,_N@TLk-nZ2a$PA6*+9k+K|нɄ(j waӵGGbĀeF}٣NLuQJ-:0gO7Y$%J*yJ]zFPaKDVI2p1KLALP{e5qn7(FXX`2!gK-m"BJsؑh K}GNpuu),j0T J]^jm`n  IDATO+ Z蠄 wzZkVe `FPYvDp @HAf8(!1@Y2 %Z*&eFɎQAhn4Mi')uAb.'vz'qwرV9 wߕ*I\Q9Gjsu&ܙW`'2g_XؖVȤ}B% K5{5LK&cU)@.B̢vt}(Xt)q&%XYrI9vQ'j. kf.,yezIKگ;\NSBLK0%;,9%OĦ̜@ʬZJҴK~JSh6(׶4cql+HKگG)vԆb*5sڈlˤjL杀)볾Kk@aocYf7o.kE"v3'SQD X J16W˜L( R6C VMETy W>T8e9;{ D՝Nq{fXǐDJn3?oT3o q3qSe{)+ fJNUH1 ,fF{a:3Q)=Ѡ'݉)hM+Ƥ4|3 &2~l U+xmJJ፩u^%9l,߄ defzkXEjkr& Xl(3גz~ESKm @/shۜ㽥]IMeK. `:$X?  8G2+>AQ/!W&"CjřN') _D"6f0s6&v\vE'Gڸҫ{S 67mk*pUWRSsw*qS`ȵ} k"9Źo|a:x?A]-zRUj~?]ӘXfn##i*ց9*`T-X 0`[^ܫVA y@*/j^֙Me4FD@}WRiPnLvԩ+ :j[Ȫc3WThz:^]y #R4G 5U FϹbY| @=wam g!F[yQ:ΓL̊^)DI +'BjO!p*2'ޱaJ딑 {d1) ":m@9 6܉ oc{25:d-mѧ]0>w#PWvኔLJ#>ӆCl y<(8~F3-9֐ت璲b]?yx܉8?S/)Ǣ\N )M+4 HȌ۔ vf~}=X[^gGAWp'}amKjcc[0RC{ei=wv77KL3%̸eag;fIk Do%=KzPP|bUBz2[\~E%Pb~2fbLʑ[:"ĀQ7T7Խ% zIdώNoEHȜig%?Y<no౧֚hyw"GKj`Њh4 V6T{0J@(xΔFݗZ최& #7kأ hg=KmCXd[W(^ܧ֭+ ;^ (]@_d3.՛k[bvn A[10Hz;\Ru 4SK\ ^s=jb R˵Y6*{ʌoսc\ZP*AEՠΉZtk-LAΕ;\iֹPgN>Ķ]r |+2,wٔt]_`CWeB(|a:g^rqU9y)eF!5 J4 h޶ʼДJ\JG]Gk8s S3w9z}X[_SfU6tm^Pen9/rnwRO!)Lz:TlAJ D^jienؓTZ4 NƐiZ,Eu* Rtl%OK X^H1ZsJL䨤RICMrg%q"rz.WU9VP*S%SxZ6Z-=Ӌ@3g?{#nC 'U6g }؍xғwaooO}ӱG>j7m>'>7Ylwo~ovs<^b{gOr -/-6~G^>X_?W`4L}i|7{>ƫ^j,-y~z zϻqr>G>{.ww.]|w_s O:j=y ڼ浯}]`x򓞄Gsӟ~+f<Wwr n~ԣތ#Ɏv]K++`^50L"#tߗsgW|8s^6LZ! u "rXvm:$0bmy @6{XT2 Qwn!rBG| @kF;@L@]4((r9KRP?KyZc aZ`2qMd7%RYYH jc!lQ_^Yߝ`|eT䟳e}xgHm6! ,s&7 TQҟ~ѕFR%_sK|sKp: Pg0wKtIY{ RжvG]s[ \1K{8p3.s[T bu)˥JZ t)|#&BSKDngdteD7 L\7Y&YL&j)I=+LǩRw zZFmmF-b|k $6e5гܫ 7q֯Im{iߦЈZ赴 X*֕273 k=|h7~quj<ɷ/זяƏ؏+◼{{8w,O?{?? 67=/‡/x~?ʶlowws/~e?S^k밲|!^٫=y$@뮽77Ͼ9!~/MxgϜc .o117`82x:[0]O|Y̧< k>;kϞsn{櫿?җ/܁OX]Yn[]™O:Ϸ~~7?Q<9ߏ>a7 Gbey ߎ>x{ލEf}SmAzX9o7mX[[.xmb)``;g|*5㠧aVMX[Fv@9 0ٝ`Y/WJ+c/pyxw?}w.q@oO{MbM`5!0oi-{ !ga+ e\D |BpU}W8>R1'd\ a2ʹ_ێ`}#* D7Ax9-;5X;Et"Xk`y`L,^Wt'ds|BeTT*zo)VW,a)4& fPR_up&DUFT!r0Ko:A2II5'ک6U]ݷ+!?{Y)Zj%5նqYp.i *`$ @@ Kp[bPt- տ Ĝmk%A<mfX|؈¾3rfUD֭>/9UkjVDthא{CC] sJ؜DSz冭fifavU6y:k]W%FDAK<,k/;7NQjYm;#ﴕ;m{ וo3K/q*눉nokƑ'0ocMB|N HvMr qܴ3En}NA $FokZ B?/8i|I଩B mmVbga2py@NT\fۓ7/cgJƔ[E4m]Taؚ-'zknJ9](vl1(atL"=cǧ>I8q~so 7 Kx3s?3x߀2WV_p[G=+0n WOٸ w|~e/z~'{<*nX;r }яW X-czWnxc/|>_Ӟ]xӾܝ܆{/^ďOn<ߍw~8~VWW ,/-g?3~{}Wz;W.b4_|+g=ݟ`boyγe{(~7=pӗ? }<ؗ/9 m\ Vpx3nd׼5Gz =?S/Û⭸u_W>O^/>N IDATyS:@/ؠ& 5EV@qoe"/tr pT*&6|o+1lq).u"eڶTr]C%JK}"R y#h`W-NI >DRP ,G!! {,9rׂkgusi?kp0Ix? uwxו?>- Ր2̱2ס#?O!:fkV }[4j TExGQv5ӴIf/zc++G[Br.bgk7YG>Q!/7=EF<b:ϣK*d4̘(%sԹFQ_K}RNe'(UkE͚S\? I3$Vl<Z?vN>Dظz"G$XXNs twY?@7&>gbH!e.rØ_p^qNFOjSP1^b=nFUT&C=);t {{qLD4{FQAI[NT! u#pb\ PS @̵!sX&@(%(2Vt9ˢAݍ v)+6qSTx&Å,i5Q 8M  شVn -guuqH 5dӂaJ/cNlMde߼_ٟFEoob/|wIlo\B~?w?=:Տ}4N;k>sN8eLwv0W࿽͜ɗ//!|÷}77[34pꤑUx:Xks8[h5޺sÉg &:vvq qv=cH?}O&)|s1o޼f>f65hY/㕝eёK館L$Q-M0ٟbQ8zC45dӸ[I?d=3/e$_G-{3xY%RSmEl8%?WWN$ƌ턙4 rPB:՚VƼk @ |epu*rԾϿ{=3Rv`65!Xb+BBmz_ض -a%>|)/Q5 KpBJfs&Q(`:BJjZT ce|T|C4هW6fZh*^Ț.GmS,ߏ0 CtZ wDAIԂ@- ŅYɷ! 9&IcӡVJDachR[jBE Jz45YeZ2., \t$t\;j?Ep+_eL|usZx;1+Url?<Q~BRPwB#j8HLˠP%`HS;VZnŔݨQwՎpR !8 n H&/4_| {~2,po{RF.K=Yƪ,~5|8l֙jsִ?_9'q9丮~ʶ e\3pު`LyuWփυ&Uwh UWcyuKby5,Zô \-٪Hw۸- DAM.@ZDTO*>[뒪o;:DR/eiYf¢z>L$5qe6};`u2_i (aDun5EUzָPfU% dr<g(5򫿊|c}xʓ/ކn/=: Fky~~rg?Ї7[>w؉8{t%]YY'?Yf5;W uvY3㖇W.aVo@w!cKS=t &a;^Fx<50n{ ??u5ͻ3go3a;~Wex#ťgxWa}} 1Vr):m֏kss%MaBm]o+-|e W66~ai -O~BN yp&~bP^:hpLq^uC)ܣ>d4Ț0lYpN糸,>YhF]u4pyQUGֱue*~HAM4 Ff$Dmy M@6ٴ}?FKٜg8]m4y 9|/ U+l;+)gZA1eMue6C%Ie-mN-,51Ro,ΎZ[u h`(1؃?˘OLɀ` qqY:V֣lp؟:u/7TIviC/\3A\F}=~/0=ZاVe}VXNYUYɟڑ7Ze9QVa_,-$vJ,P몪 Gr\!v 'Avlak ^*׹ο}y+kEYBNDE'BFw %`6IZmPͥEcXE2BXS EvbWH2,d-V7 &xPÂ|,v_z*=Ìh%˲ 'Sw2l *`;" +.ueaM/PTę 8Q:|PE5-`5X^_֥L$t_Zp[آ1)tM7?T~+ 'Fe){>Gʴʐg݂Dș$x2`\RNLʱ2Rmqڠw&Ԛ+F06nլ Q)jIO矚DoE ʵ?V-GY6R pkU@T업e4d%xcT#nFW~ z3pe|ST'?{7bis wcck\n:oy7O^F|o/ϥ}8R"; ]^|W7X9E?"|ۓSFY ] t9:y#8vwyMoQ7qCH9p\{4Sgwx ؑu>y*UƘOlzhH7k+nSyix-ߌ{9x|Vx{ދ>pu_|c&|pE{^\Zv2jޫvA9ї9#`l;AAӭ*P]ř (ZiKM'埲Xs06+*Ӹњ!FGj&-! EXQKbO^pm9b4VG/Yc.Kf6d &zxG:G(/*1}֦.LdRq%0MU#Qe(*S) D)9o}-ߌ>6;y^?tss׾Zċm类ǤFtPcmao3w|W_xͫ_cgo~6ww*=gk7[O$׼K#lNgx>[[1Ɠ _V eWwvwO߁'}/省 A2 QS7 y[R ;y/ߎ{=s]w_MĴnU41?֧< ^Ɏkgx؍7'_"ou{Ś}H53 hf #*WhNע޻Gs: u{}zZ KtX&(yޞx@]3MJOOHf03VޙuQG Q VE9dC X$oZ80C.y93|^>"JT "o~+׌6f_5\ġcXʞֱ;z BqtWYX<ʮ? pTɻZy:Jp#l6N:0-^rz8%\p[c6"\c&.,~o8&EfE}cPV5GYe{"%ecOZg똘zߞ@"\9BVqܙ.oRXh@nY @N%^V Bq(2֏u,I;+%Ʀ@%\۲wK~7KEm*+QѤ(THVRlhK'EI*P&bIFcjRި,:C[9E;#4n;Cfˠ{z,KEf?2zG`-oB(@{|1튊@b=G#Y||W*G!P>%,=իAge>Bvt@hJi>VT~(7vY"zmΞqZml\+[z|WAg8FM=[1bw:.ĒHbP/.k,wj4㾝4S VL'KD \Tv8qkKbbpTˎ]Wu,iTϸNrs &ppx{83}d7Ukgg[yrYWMd]9ڇi]O6|͏ϽWq9~dm5Ӊd]$eCe]?׷=wr`Lĉ@ax$~X@-kyGe\ V6U@ۙdP~(0Q^P6eٞL|c<)!YT3]ޗ 2Z&pdmK0Fs ]<>U>9[^bss,D's9ʂ3;tb}-B<g|>#|,z?~?Zh] 6]sk_;ew<:ek`n{c)m< px4Ӱ~I6;>0աϡ "?uw^PT~.cenOAŽ=Wa* syTR)Ej(2.>{88_BIJcڞ!w'`~ [, A"v8L>u'n%Wrc*q ?1f3=~mYBK]ZϟrQCu_ekk _~ny?| %2 \}Fo-(X/pqAá"{je5ɾ!|Jmʱk;/ ߩ}T ]79r ]xAQ\>[%%׊-ǩ~iyUsOc'V;V tVڂ#qtk%a% U[!_-HqjIAÁ= hTȴ:Au4 Y3걣f QlQ4lt^aj_~Fs4kD,pb\=VW^;rkG0ZZVWf&q RZ|HVUR]~D!(L2AELRZ-YnZMam}s TE4x=6GZ1=&Wn4Q jPYV֦E5: !TP-)7< 2V~z%6EGFihW,o1G,/e^ 5p Zȵçmzy+'a4lo\ A /?m\mwClaEiO DpֻDuq,ӶlFV tO׆#͝;?ON֟ZRٜQ:fǭ>{9MDH];180@Aj8tuZ6c}zX9v N]Gv:x݇e ƭ -gр\ˠp'$n!E kGv LK=x IDATSKY`%:ֶ3uX^^SoN<s3 pl=ݟ&R3;)J-Xį8>W6q!qCi%7 vvH B=lR(]K"tF- |Lj:֮14Dq_efm~^ͦ<6snW: t4^s')!bJw>{gaaq?==`YXp"EUۂmLRgٵŊ~\p| ]5ٽeiggP6UȀqD > B* :0u?d,D4  &hB{&mR':# --HM %`ϮeU:H0O+<<>S>_\QYt̹| )Vcv7NvPƺk4h.Ph;=rS'מE;zwEhuЫ2+"%Xic:Ä|*3!,`K aZ-Y w@cl,,Y>HRcs[{Csa3k}%٩bfێ>"c?סlY9Y|d|?eBrW(w H8ܡKJ0(?ǜ,c-90$'hcȉw cgit,k^1ƼS^r%TtvſKNYRZ~ hYz[bL`=]mmb@숲RIt5HvKh7 VVXĖ:`[.n߂XykY DnTNNI i2),B16`U dNJg9XC>MZUAmŨM JHqLT7Zb[40AȟA!1IC.,@>W_g}^qPT0Dtt* zꥣ2e|۬e 0p}x di*P?~2v/a0qj5!9_U=g&\7JeztO}3OuS`8mPjbOMlbCIrm=욘^!!h`ƨd%t,:e ZK=e2Μ:1fILHV*jRvB9h$9':**k5h9&J2ra3 hXcQkz%;u|-N8),s1T=9 @lx$Ws)Codʲ.GQvlg& ) e%cQypqs@Fi]70g!sh cm_A)UbvP)KC}ׄwl|)?G YAz\:b%71Tu>5.uoȲ@߾UU,ĈX|лj̎<e?9B[xKLfLɧDx.J^cr_6Guz4)|S=[o;utzzb$͛z3[҇bfq~ٳ'qit;yJZ%60fh>KL&=pGS~$h Ou ҞشPj 5K 8ԍszY7݌(}"1vJ~%{*Mq0wV֨%2##vj+% Nq ՄTQ-$,f[bc6XE@;{uwVգ*ۏ"&o$ H-qϙI4)#w;{;c/i1ܯAx`}ݸ&#QJS{5= t>9{dt񓳘렔›3taP)!MMSY%.fgdR_,EBYhGzKQU97J|r xm[P5|SZҰ6s3"*|f}@k!@ WnwY\imdY$TvUX>rE:y}'KIUȉR=#6WOsQp^eGW+\Pm"(k# GLu:;uWx,w\~iH+(w'y_LhJTu4†N0eJ̉j4uLV#`lm5 ])Ѐ _$,YGd#ͭV)07y͛tr%cX:4ZOboʶD?FWf,ףC#̪l]Kk9 &/׿DwR2nI߄ZE9ΙB)0k:9p̏Rs^Xݗ }_Ni EЧ^?$WN$&өC͵Z]>$UwS@*Fa+bsZ00V(S֠, R\9kGá$F:6] eQ/wV2*8QD"9D ˲sAHtR*q!qqzQFPo#-_l8 Ft tmxDeL\C)TR>5G)s>&[sErަ9ܴOf%Ϸ@s=^HrPlp~x1dU2R*[+c0Y̽Y%hՆI_ü̼Ϝ>QAU%pcyd>gR232ڵki;X_~V?oʀ#roIFj+3L@3QH ͎ _Sm?3X5de},=X/USGĐ3\#YqTGE/`>ڠ&E|9 *L3g)(N!G;m8*NҦK/(H-t28X?H}m`5l Jf!H!j`]=IO1"sN󜸭l 6YRau`=XdPmR=rUŜ?unUV[X`Bv3/ >XIfhP5{}@ٶO_?Š<wLgڮ@%^Zo욟;ܵy~ 8t43uP50.&n컷+V=%d5S˞ڃjftG4͒h!k_k['L, T186 1&숒 [pg!KAR P-Tz ^*8cs5î"Uز$8 $#(8>]Lᴞ{0RlJ P|n7 *?p ;ޑ|&*ylTa~B׷z\|4ۯwO&}dx OYĹXRm56cjcgςy2p~b!MC&P՚P-^2!1r\08zu:FQ+Bq ԿJMeqP5C-ND/70@ F]')2G0zJ&DR#:EO"eXT% b QC 'xGZ$hi$:Ss +QzqC d4Q D tA #w$mA$)^AN]tT NY &6V[c\»焱RPA [(.yn?;%D $΄Z3IZS^YiHJ:8лnNS=A..`zvF}WTKxG}HH|jEe HV^GSp7< 2[8I5#83HFI 2c{Kw%dDqQꖂNi"J2u veq4Ԟ _BpO:vSR+nJElly9{Mu@u4$d5{WEUAJLXä jdQǀ[qT-C1yQyנkYXp2 'VgaB^|8JCކ4 =& s דV ^޲3`2;q˗+ꓭPPzz:~5nֆM2b$>Sga?9!?I(#|/p?j9VFJ^ݔeC<>$(\F>7tzr«q9V9GeU3nh [tO?៷s Nʸ (wBF ei5HINt 5P2$#OkUuZڦxj0ЀUre#Ajq X:&qHcvHm{r lVPv89߽$7o3R[1hi^E}9 >4TƂ6@1JP-Yz}_9y3(l\ lfv]vAΰ&GiCd΂K؅cp:%& NtM'KnJ`15e8OB0Et::aiiTL#S{*6$0hyOœA"?@VD 3fB'Ֆ8l-WYkP~oMp!:^-Y?w\QAd8L 5D[SH-0Z-?X#v 9 S6(۩eX$5;m_׉t`p-tY&L@5: зoI@SUw&$1@' G9|dAPNYjz5x8왏HSGہ&1j~m{.aVå и8Ol1OL6n䲡Խ V{+89yÎ7Be?Le>|>%[<~9 rKڜQ3uV4{PҝB==3b {X>r.,=آ皅9Btg'lbp`w@.K>[#UI j1mNak'acēW]ג}wMuIg4c iuR|os) ksWlCǹ(C5Ԗy f몗lJ!\ݞ+@4T֛J FHHCڒDA0lr OI'@RwS@lsC5н6<%nfg?sO2 {ZX+5ǎyZ]xP$u5t&ץaGE@Y5Hf.:JQA]QQ]J'pzzN>>ߘz1HVYw^ )DǘU'Nf1^T4Z[;~|#[7-uTϑ 붖&C|| *sZVզ@QK$_ڗWT`L[]jY\=fҗ~ m TjAw̆o5@Qȯয় O{ʼn98/%Uv~(F-iguNno6Q0[rHVL9L7䝒}b v1H−W ToD U#M\)!,EdQK*n@]1{n`^v"{o\ëWfq\6穋 wh^/`@ރ70Sэ>nO J`c1{/N \gI K\C g@pvvf g[aF2+y~Ϸz%$M3wvq1?ڵ`Cp?~Wn_;Y;#=+wӇRBZObcK!ON^A]itKzw 7d7L=Au!ig5PN{Z5(}Agskal  `{WR&t Xcb1J%z}35gj$ v o~} ?_2C@,\Wϩw0QC"X20QLIAϠ*8`#'2;ȋw;gjyfM- %Gec~i;!p IDAT\ײsM 7KAZ^yHKVji|<Y(fTkeUާ5mđ۳} $E#_M: T&'k뺴@Ucd~ҡ:ɐb{e q[ib c):Ǐ-5M$ ,Vi]Ģ~wBX?cDu*휂 5vqoG FU5&|– +V;d }2'XZm+fS0R1];G]ȩ7ܜW8]clwh\[eG)TUj[Dq=J5>=XjqPO(hcXپK/,xO ^>UNDW@+r?[F1pDP3aEYS\~ o~~u_ 0XqзtH6o*Jk/C`NxU8k |i@;p*uк0X5*[ ,=liuOiJP&Xg-mvfW`LGf*R鰡泙gO &hc0D鰠R{d3 @PYۧe)؀]Rjr((_{}.@oukprRo `-Kέ?F>_?`ypm8 aKS,oE& 5]~`A e) b- 7ԭ5w.ԟzfNɚ헏P1fu]aRrA <r75X2&SToo~? vZ{5Cx;;ٛ2!0?a`y>=)ZRGW)9QPIfO`#@ V[wwt8_/AQhF^+.>=خ>k_`Gd"ƀ`8 ʀ~S8D`k<ڠqXau<=ֹ8l9j,T_ߑ}6@WDl 28f Dv:$%cH?jGo5v\Lq&Pi0XZOi@3EK3#*he^H q{(ow ti82h׵PT3f](f 3bȠ5R }j&ErKYNTN<~b].PF[I5/STNceA ! [bhga匽{r6 {l0#1 /BS[R11K{7 YUbj'̀;t{RΙm@(IJ^\h3`I'Vi+8|p&#MwxCa.3E34e~#@{aVs~=Tt_ݏ5cLsl#~;"o ɐY[MuhN;j~Q/j~fs:aڬ;=PSAs6zkfbQ#s@cϲe)ONdq M1{A2 t]JSxU ~ۮ&Ζ&wRB\\H8n˲RyAb8r,UXI#'Ņ~H5'Qχ,VgyC0=Vq"u6VFʌ%e|v†lF4ye-?dT1t-`A-6=9ljf;i,tF٘2 kx,9P^冲EKV Jh2Q(hjx@pD5hnWZRHhF^PW;DA#R;[zo.XԒ,2UDKAi-ufNS13Ke:eIW̊n2}mJX3澃] OzX mH!M/?pyq\zzG߽!1 ތto8c>-s6nđD?.1Ô; =I-f**+HW1෫"8mZv}^4/P{ RHO' v\a. 4I&Mn)s/p>C;(&Ġ@[6Qc>'fb#H&@0XO!G7 I ~(K/;᧊ĩ-c >BmV 57{n#wܩy|=|ϝtU.Cz خnasZ$]K?{|~ hN FS窉d]BI[=!` L'p t0 % lU8l=*:ޏwv}Dqt_}zkUt2ln;o,E>/RZv,wpz:~'8;9 B;dy;#Ȃ Wbs"KNOf v V%3 Nn OPӖ0m/WԾ@ `E0v(;QU}ڐJ~4LAPX{nջY@%F%aL\b:+VޓDCGc 3KYx sJa]h;^+/ێ`<\,865`4,\FbTO%dI+]{*HXB2ߊG.h殶g E=N0H׸&h/EOc`Y*6^rfF#E^(s%N=|BbDWwDّw2 N6)| Rm:P. FB*FVpYmCX7T*(ʒ9c.y`SJ(# EIT'h0lcm<{cb!= dH<\)(F9Oa2d? 64(,pia ۂf'={*wC0 8i^g1+8)~=@jWu^N W>9)5|&Zz"| yRћr5Ũ"O *ug?YU_n rEDnizZ[UXc+(̤H&JE2$;ӢR[]{>aJ+>eXN>20{D. 3*mH|S^Rrl7q7?D$(RޗD䫓"j/[ȣ6?::"eKHo9/`7cڪg"p>>ֱcѣ'{rR^]q =Hvs~tuUƚS>)uB8Ϡm#{I7eWCke"\Q[N Tr`|x篍ϑ(P+0j9Ez뫏Y~1 q#f[X4MëW?D@疉mKV9p_ F["ɓ~{O80S;۸bsqq_¯z 5Ig ) t>)1:&$3*N#؍N/Ω%qۭ[ ' (R- M-[vv1e#_\#Qf%nJZ̓81bCD~ĂړLjeGt} #`mAoO?+@^(娺fgj` Sx;;f"eiI SZz>:@%6Rwg"{q^K̥eƴ&P_ 91(5Kxpqv.` т tZVQ"GzkޯߓVjWkE·J-\yb Q3nFe2n8t8OU F|6R8 |ԟ8` q=bk=toAۉ<%@c#q" 'kTԯ!*͵Tq2+SվT׍}U=y~|=w QRǟI֚{đ3z<ฏ. o@Ͳ֓1=Vř7swޫ3hUoY$&.@ e$$[|;C1Mf=TtNp!0a 1L ]thV)["DG5+X2PbGsvu/IsT <74&wh4Rۏ˻%txxJ8H%̺> ,D +CS8(9|O FTf<5 ۜzմsŠ(}L ᅥp0yyZyٯF5Mx-RZ\}#~~|=_oR 8 \ lw;~zF^INp|88$T KigA7 WIR]0j8xآV5:z|N*X nh3{NJؤ#?bG>4iVRe \]× zNzJƀXq}իgן_966/t P&_n>~?JZbRs}_`K?˗/T08xO%V{zNp ^$/j ܐn;(&3F(z~~v :}J S0IUo.g,N+ە)Y 8/g"PPPJ/o=w@]TzSx*kv|>Y;`Au4N.pkkt9wXt8܆47r+w>{R /37v)пڑx,)~) ;|#&-;LR=>gdLVF$J!9!Z! 08 *^(SjבgrRYYHVA? \p5#z;^&ju gr(ZVS1Mp銪 D4`MhD͸0l~~&M#誔dz >Nh үc6내mQV?J3\8i-?k#TZ4{ F[X~U1ƀV|hCk!7\ @/۷JDKT5cgǐ1{{ɺyЩD[F`.ou6%%! ,ۜdVmw-N%Uf֙hV(ʁn\a宊 W Q5pT6\`lF+_o2Ict:cɄZ(sdJ5fDvTK`O? ÄW;x\$'bz\1@IdId4oZF2 `hװǪs4Fʂ#?c$аIpO({40}QpW+ptd T^Ɠ*)--\}z ˛KHuG[3Bʼ#N ?~^}O-pgE,gTn{HZu 0埿 Ffa:PJGԊKwpq˪-fz)&5K=G}ihOXY!Uv{kuPc'{wy TBTt3IGܦ^mhS5S?R&&!!eVHhљHٜ*B@:*V$:V+RHE4dn<]t@(ͨq C$m),>ϢzX=}hI}y,Tm*P'sߩ6πY*[Ys}hL ]w8-Sx b'YzzO:|*W:ՑR} ː6 H$;|!3],82wKV9b͜Fs> QM\2\gT6LS6c]s 7͐`_LD 1溭; QX{V?m-B@zPؼ9&yΤ1q(ϴYDY=`%_o0¥kxl?NУn\$Qp߂1l}xX-^7do}QK[#Z/>"'Lf@s-– IDAT͌ΨfF?G(SoB{JO3# Pzf*2u?띈To|V9_?m  ?֬*k8w%/u;'3+?, ; \NHLi vMRoD[mag̺#$\Ǡkܑx a%=lsRbTn 5nzYvl0E\86_;;ga@'+bs˫TvGm͟ u;3<ë_GX{,hN9~fGܓ-<{~x>_\s;@k s+X0fAKq? /^^W Se6EaaTnG]L! {Kg:oSjms'D >?p5 EʦFR6c6E-3X…2u`zb(t;\[ 3P-XBZ+ vvf5j]4hm3QʀQhp).m(6W0$ z#cv8 /?, =Wb#ֺx(ݭ&Bt*kP7^B H.h^_z]v\G4,?1yguMf OBQj켶#hiLgQUX"YL^<3D~P{V6IY9:-SKYsy ǧORsz5nگz5+G17AYcMU'͑ c=oSW5яOnxwl0@JqBl!5W{5aߣ#aXi J 0Yzf#gO 9zqk8BVyϱPa LQ `aJlƎAǷ3Qe63P=]o yPi3܏?4frk+J'iJAl+E6 5D _ʊ}-`M!mO nVKȘ{ \Y`ioh2aJ ZAE%kR;HƁ/qS6.z ?t|/1lL׹H}th+߇ T*Q(C &uB> IakC .Y2YP5\[mʱ?OI!TX݁"&k0qj6t(ԣ3LԮVONeh?d?DZ3S?BI]:Ye)q'mfӞ;!P҃|RۋSi t> 70i$BqTD}][!_n{a;JbM^EmPY/`2ޞo@~q+@\__?:x~>aD(ҹeMq7-{CrMvTl7`D6%`Cg%C0)tfT))|`8a}; H-<"IkO{=bNG[ְƟ;j;-heQtUKYyLk :ۦӬs_c97|6t{$ڥRH6C]Ib%3ZPHcx&]]q$*Ps.<SkV$x 29H!,/Q4{& A}AN)>DߙLߔeuIs\cNtYvTEp R(4(H2E _ergQ]W*́}$XL3} N7m4q)nmc&QF]#g::qΕBxUOLqņṗFHcF}1GVeımJ֛x&`)4FL{YYgsbvMPlgƾSj_ ;nQ =r~NS{Eu%y)+'%K%U]P/#{$-M jL.2v=ku$* tyg3?trE֏^ⱜ͜)3''2i?~\O+ޢ4,pKp >/_.? r?1-$dzD"l7CE,:p:oau0 }iz`4 CdN}3Iiӌ{X{h?9"Z{G{G9Ru:Z7|ϒؖev8ЮHӼdszGxXI $vJ(t>hc٢8_5:/Qj39L H9{\O*xl hZ6C4a)㡎gG*1gDC3Y$md2r$2[|dbyDl'څs v"Ee9s~1LqenH`&߁T)jm2Q>{)<}xd쩟YЦ~2g;8={XbbV;/N,80-jx9=?~adʈKR)4CmG3':zӁy|_TƜ^PL\VMJN?5sz >:<uGLҽ{Zqy" ,-D6fjşY< ?zlAaf Z`y{ %L>k4']ϡ}KOޭbxN i 喳yn-h_J8 vǂtwNPN3gDۏIo?'2b{. jb/o^իKZ)W߷:*y /hP]3,Mpvvw5IRmf$, d*d@Cl7^“Oauw>ðDС{?Ψ[ >yJL, 8T~6oTV:bskԲG˗LºŌO}2'@`6?Ia?`,b[2ؗ-+6."}bTgGԱ8cZ" mM2vCAB0eH W@rFb5Sтe$>_% ]r\C WƾR8I}mDީ 3UR|בQƲn"5E4,qSE䕚g^|Nم|0瑵v~7oaZ٘b-zsl>;wD̪Ee~,"x%V,g˗pu~$|1 EpL&?큄:1!Wuj?y_rXhD).C`OSs2fqFf‹_ߑ ;+,zcvOgԒdAe HAA#J+~o ~Gls\g-l&[iѻsm$R\.M8v-|mW`eA/N?ቻCs̞jIc&XduLAD(:gaVk!d%Qy,kssvԉ`ҁD Jگ} S@R`MK5oC|LFs"@AapGtz kELפvGj}jf(99E7`ɵ^ig~=oe:q9'm%$)K"IЁ("-4dŭhC#yw/  %WLj5O`t-DS ':_v<70n+"7:qpc@g~ct]Ra dG6Su_ G[aR`uZGл԰l4aɉ]އ̂$'(yc_5lnG@uޱi:d-,fJS$lu:ꖘjXq.[>P"ozqJf`Guu&@X!N8^ 6x()]xl^E21\k-Z?zEǤ=0Ͽ<멽_}~d8]:_vvC ?J\qW .ƌ7̼24SyRg/]p쌵32)>73dߓ3>e|iܱ!~'cV?~~}1XKuGf w'O,#"qf|?ׯo0 e wc믿 YNY)`PoaY{{r.ZIE{%BNI(쨭~-11^ocMw(.ow$lo&jKl50 &=5{`FڄuO >=~>g,u4vRrcxg(9uz\KJ8@wp:~(eEZ@@ gABӟ}p6 &σP$NES#p } i5#֜^Q.W1:Y)e6@;A34'mLBF _TaIs}},(pJ0 @5UFsY^e,1ͺ 7͌IPtkJ!'g$4;_:UAR+ƀ⠢/ iبy "`_° d[Tٜ_^`6[gq7jN}VY0+\UF@ԍv6X'c4 پ Yc7:Q۽::!N0Jɬ1XF lc9ȖLQ9r9!˴Coe6W~GȰ*(.Lji=d?~ ~5cFl1jܗz0y=y0q>,36.**%fycl"f*;IuDz8M m@i?Y1EiBUDzoYkv:5) DJ?.pҴ] &4rc8@&EUQP3)>3O؄pL(6/|}P4zotmr\"5خt>ib0St02 ޿c# ZMKC`BQwMvx]R 2\RL,¦Qgu’yO2wh|^GOzwpr A@<6tU g|GU\qu0;믷Sc?`T1x^Y<ô;G;~G%D]% &ΜSlH5@Aн="`?%s(FbeC-hnl|-3t#3 wjGi ILj=Y"-\ݩ^T>,9!k{.g:lO@{Wa v|6dɮ0v pЌ|QF/?Ϟ=Tgϟ.͛ߤg~Ϸ3aNeB4:g_GVpvҊIka]V<=W^‡w7'Ϊ7{4Zn7(;d覅|?y uh?Ic"s`k\@/~1|+x v>,,8(@Ql,2:t=kh:;+& (}Sd/]COi~nvgX/Zܢ&ut9$Oc*''#Wf!XWqL2ĕ;TsR+pZ֓bօ${|OײӲ\mc?B2/N&\3)4~+b C[4; edDSIW0 C@%\ŃsCBD܀nl ytU@` %7`3 E |`J͈"BijE8dm Xxt`@PtkHDMp9ʚdܵATWKZcfroR4foX$qҡYH T'DPW1cz,MG &x2v W#Qao[!cbj?r[,2F*g R Hߪ2+v`]}sڰCf!{ 9"6KuCFDƁ+.z "3hƱA /W ?%8;}Tuxde\ =j`kJ-uv\sE؞*X`Ԯ$_~G lv8ُ!酥)CXO1C0{co[1ߏξz\8 b0r=0GBVZG'PpۂṴcQlf[f ^Vp-fƀk=tt%sЕiAghtC"m w~;8BӜS05K仒':)I׎M@hk>x<T5y^?ѧ$+1\;N(3*3G[|6N#؏ 1:I$U9 E:n~ju/v[R0\S\`v)1LʬղH,~#,\,rGbiϞ?~ >%'mp}x~$Mjcs[WwdA'JMـ$և޼Dt{ާ3RܑJy UDl_Vi0EF-v𘘤TX'6oOpzrV1gTb,s%p$.?-|){uM''w |pI):=zH,~rF€bT@99c,s,c{x-k-v %%Yfϝ* ooħ*<5]Ol]Cʽƅ:Nz4ށssN'lЄkTmÖ2z4M!:fRޏ7.H6KUhHQSMbĿN S/LzB7֝bmn9'wzNn>:3nA(H 0I@['{fu)QTjzƯl{%1ts{R{Sn{2Q[wutlm6EQ tU bS<+ # zsJ翶x xlц3(틴$BLOqz#eA-04<[/@&Mzr6p-`\1#N3uTmCFa;)tc__Ǐ%N}5.L@>c-.3ϯ! +M$؇y.Noec=7~.imR'Ҟb D GO "@z&:.Bv`D]Ï?>'7}ai͸gIq|y^~ïo Hda{Ńs34[nHYI|zhř!d8-{qCM+Jb`&dׇˁK6,#lIOP}!h4 iXߏS_g =Tج "wnş8aLZt"SITj`:Rwfs'5H-qo;z53+i oژ7W$a? v/H.RFDPׯjâT3S5/v)& Ԉ2.k N| ~0)S<1f N@|>Z~_CH{KP[[\S5 lt 砭KY !U40ő!DP>T-+Ȧ5bH@͍5{EI琧ϡ_LXCqy5!D c뢱k)ٍýoC}!J~ݶ;lԞQJ֥knG%1ˁrcۮY? /mхQ?i#;HiUz9@r5SL[ fg.)l{3~&z=0;:|^ϰ,(DAX*OgBu`5+z`?jԃyXDq3 ^>CL5epMr={vm@`.{zOj8Ƕ5,j()o LE&it7ueR8w?7o<'Dz7[x o~߿&~9ܑ^%[c`?S5x~)Ua *?1z HW=v~6_Br6b`.F̖-HB1kDp?;$Oj+X<{#Ksܿ_uEJ~>H@L6xڒL,<}0^q`\㟓\4p9&>2&8L>͡dTl7Koi l7km,K# ¼7#^f~o[(Hjv\eUS h.3v|\[eՇLўaϋ324@jPw*NvN0+aɄ(!X{$ g7NOa2Q+fF ^ռ$e^6[@% x?.nDSjpZ%,< 6DBUM@s7_2! ' Oi71Xj},CzooƕI( ͕*YK((%sOPP3Օk&=nr=FR>x䘦dЌ)d)QdC08DUE]R?hM6- "8tcY";[w"ނn7z~pEhh,ukq ꞌar T= dCPޱh (#vTSN`8 U:HͥˆAmBZőݑlȨ^IڼRu4KZ0&j!Cna 2l4`e"kAK9`m(0 Fڝ6?ϱ3ίct/ _Q_A0w;c``R:mV QqHJePh:B]gerhK1##6x|jc%ũ׵?7JO#Ўk^l_AQv[Ʋ2ee"8[fP145A!e9Ocgx7ql +a$Վ@]N386ilj5to{鷾 eq t`߬`:=z}O\ӖHn|=X`Ўt0zߛ[];%SP-dũ (h`}@u#M./k,Ȝ]az[ Ɵ<}Kx)@ͮµ;?~_}wwK8?;;*L&p{sG^ˏ{Jgwެi=[U%{-Ǐ^>)3}D K}o"xCl1}C?3&y|YJF}-.Ā 5 {᧧ C6(&KH$lO0ӕs߹;8Lu7/HčN&am76G͒גGdB ̇3vH hyuJkGEDfս |cavWJ?~)/ @C4Um%UΦOKi*|!i]` uGB\Z̃)!Q6, X@`ArۥPD 19.pDe9c/3 -ĠA-`W7Sکn><CUs2T'.][m'c%gW 89 )Rp^.ەl*|.Z:Y)6:y\q2Y=j\Eiސ%u[C~.EAv m[qJ\}flzWi Ugyb.fAgn _m krD͒i Z6fJ\?ht=c$= jjSM NX:mb?4"ZDөgV1qMN*%^Ƒӊ`e.}%z6ₜ挃ѻW>Y2+?h֍E,JkFKGʹ^M\Xe)ʴ0KIY1k:kcu[R~^0`b:FL1bmHQ[ƚ FS8& md=8o3aXHRm|+f{C_)-iwj46x=l(PG{v14&~nvW,Ҏ&ٱ[r0isK9 5#&`61$(9Ԗ{89z^S7z%QM :K_o0l~zb*̖=E߾yz79&Sj){j0.@NPXCN8<:/|brS MjsNf"S<>|ՙp} _RZUqz!V  $C| wuꫦ'x5>^Oo`Mk6̪ bɚLKmu<|$BVvPKonȆAQ͞qi(Rpcׁl7"4^&rIJ`+IhTIDtnDvmdTm&ҟ-˯O3945O=DOY"y<&'[bJT3Bc<)sxd%w[Ak 񷥖 z]Z߆3V^籵$o͒^',;Q{ 1 UARe6АZ5JmǼ))b LΙc+mLq^!qåk++y/='mfc6B#jle IDATec6~¯I@ǢmT"!ݴ$n,bH`,~7H1wĉt hZ,A~Eq{[[iCZޓEhC:U%d[Dڎp43R$jokڹ(Bxqt&cIVŃgpsKEΉc>F>[ϧNk<a9_`K~ GG4U YPqrz,6`[X[eTH+@Pݠbf+bVLFŧ(rnDQ_[׵<:u 5fvJc:[w?~&0M m{-}}թR<)^[fpp4)!Uv'p '꧄}J`7;nMh?cLY/2hyx]:{Shr''\"FkNWX\~A[-%Y"bg{x [FyW0r }$LG>P^c}?Yz׊~'zĜ#aF$@z'[i;*/`4~s>R V T|$GZÞ>}?}/h1XY1#8Q@kTE l7~g;c,3{\pOK|?lqztՖᠱ`ހs?trÇG Bva=srϺo5:#&pŰSվ`4p$8Aµ% %Ym Œ6#` #2aォ@^df֨hc\,0,N L&luڮyáRGU("=%Y7B_I#Ȥ'HL[l-u62Vav%V &yWZㅊzm QuӘ v32=P=bac|/%gVr"US q>o;A= \\,ɹ,nq%FmTx"hilJ mPTʨAVD+1.:ya@Rػ{xUv1Dox\ ke챯ÂM{=dF"U'aWӤa %vT'v3 e"&W=i_c=FMzo)ؖRNP+>/W+,WK:)(AAʖ+((hV'\M%%Ն.pyk>Q1Š'G8:9q]WdqDE@ r׸mR󝽴`زvP&2_: >qaC 3=_*JH~8(FNkh0ĺ]`rx aLm?M_KX:IG]jiȜbmSi_r:KVdDY>_^x}Al_G1FzR9ޗ>nV6Nrk3(#[#~}Itn#Ѿeפw=bXG,K~?o/X(XC5M3>=_q}}í[S,sCmʯ$[}zbDfm32`*??˗K|浆\ YլH!wO+6 фs4š dG-R#<8`0墑sj<*;APq@`2臩 0C CWRx"%6kl+ދ9@1Mlag`IdmW(fmmL4"h2}NsɯK2:R^Nj3JK{"o:CYxBE"hlK$B٫1iاHA/c`8ޢ^U - 6(yKշLƩXZ UBKGBTRL y,.uȈ1HE> XbCZ  [ĝbŵngÀi3be!%ڐOv)ۼ!$›(Jz2 jRXӥK6, yH{\UKVN:'![R-28BdRFC ր Sܑf`׽ ө=4Yķ`T-~88 *_Vvl=':OO`0:X%/@JW6͡T\]Lcԃ |pssnǸ=p2QAj W?plvMp G¶kby(-.D!䞓ڟRI|'U*`n `:3IY v\J"Xek[JW&7ƞ];o.Zx]gI3$kpݭ10%qʧ]Rj~g$睂P%-bC9o<`X!@몭&UN؞ܨx`F[9d,-z ..0k]ּq:?bj*F,& Nx1ch @E&nude1efLms-is}ML%VK:('-bKږa#DOԋ\׭7i!G)x\mxB{IcH-р*r jm U^©u r֤}|bC$,8ތ fx;!o*Y*dZ' IxD=ZJe4 ;} : (y2%; Cb4 ŧA]Vs9'"th#K:(sڇf*C}F4:jϰYR*L[նT#Z+ U6zjjAa~H/˘R(56އcy0aHP nȬuejb F*g-9Y:f)ۆXJhn&pT#4T}hZl%52ZhHrNH[rXjFm4wG1\!wɩ;$o"wKnضm+ǦWZ= Z?"PJZE*;I3'Aߛ(A'L7xl1 0Tei)'cϹ*|PaHv|k;0Z-YsX?_Ɖ\KJ(>11f kζr; F%WX-Qzu0+J\|H(4O<{mp<599;ϲ=`QJ)k9q[l=FӃ$Yk lS7$@wh?G<)]w^9~e?[ [+UH?i֖&sG~MőFAY*Gz ,k M)wvɮx~OS<-Bf9]5$s^҈&L h%ImE-Em0?3*0pX-̦F4h8d:a`i/K3}~zgg,h5(prr\\`~u)«;0,6ﰭh]zυGSX6gZzM%^~g 8yLuv|c;Jcc~ E=l8P{YXr:`8ҖŊ4{'x:fD ־ xpv{;ޜ[*^r*m GQI{SZ7Hf Vh%;µ3ҙ^iK mik갸U#g6ʪ)'N5:ǞL#}p=dAjˡŪjYP" $U]JVti>@JIHm1H^M[ ͠HInѺnfsmYFE)mHwE5D"ߌնք|V*`a@Bvd@mn$N J7Fע_Dj|ѽfyYJYp''[Ѳ%7}~YDw&*d9h~H7}zϢȇGӬl !䱙98F;]3;* |Ks<&J%QrB6՞v[&&@lȆxFѣW!?X~7 Ljx'&(\ &|>ɲsO풯}7ڽNUX&P3fDeleh+.TjT531 XD]s181&B&9m^pV$"sYeLUFPjv8FG*vy( \c Fl}oyJ𳀵{MGaQs]X3U~Q\]zkֽA Bp8W5-A0oƗ_$^|ׯf[+=/T{֯V@ǒCFcɮb{ ,(CR -k~O}WPbc)s r|`8wj8;9֫^P-Ff iu(^*(C3Np1_RNP,>S.H(AF"`R&bbh(=0 Zڴۘ?үԮG:WT1nq%a=(_p;kWvGdiE *GkT8x1HYp /Vh6]aFX2Qoktso3c6_LEBxV '0.K xh7vzz2ŃG%gg;CR5 `j81)%nז;ba+l1>+<8=d|H oQEgvszŘwﰞB_=/YL4s+H\VnnP[# Nmw=zùJ<5v́Iҹb7{JaE09X,p8 :  em]&3gK;QYUw5)r!$Kn>Ad\۟ViNx VcRr1(&GwxTZoANhM@ dup\bٲ/v`8`iLF+ ~kh/OϟqENzJ!0 ܻwŊ5ږXĪP៰a^:R颐?*]hIȰܢ rroq-/-|Lpֵđd:fƃCFS 4݊X=f>y7nvHOV15gHWKeУ9lٰvn\SlGuÇ `9kc]uX^@yYHҶJJI<6`n)S\$8ORE'P~yJhZ*;t%SE䢌CP\3?Ty~1c89_]dunϞ7U$Ifl̓tmn ئ<쎊#_"mv9:M Phb-W̵@['PwgcpVYzheaG!FO?f 2 @ i"6c1hLRAM~"$ZfYG^ŷ~kܥj;7j7K|mL .jM0-5Fmhzz o-3m \HUT!XBsJ%^=V7Yrv IDATVnjf @*w2[Fp'Z7ƞΥNgD(Dksi} ʓ=~g}^YjA >ek)<8ґ{nDt9`T ]!0ϡKW${3JVܣ) P>Re`$K%{0I VDxCrƶ)Uw/8}86OZL_n ZLp_RKp0 ^ma9r@UvW:t f;mC)F!wC Pmo)_'<*&0r6znJ+L]m:358u[qpK:FFפ_ϲ<}\z _ H_D*䫂S\_=2VKh)m$7_bydOFWvdibu[2kFVSB|c0gN$lJf2@'Nո4>Xɞm$.U۲ )٭Ut/y?} #&=M)zfB\1ZEŹ'3.xv@hz"|\uÌe'VR[=ǁ"3h+ M÷ٗ>}SXSjB{ ˵6s+LFGCG$5*4Rr-::bןr-Ъ5Y}p|Ѵ!2+b8#Se98XmGiy)k ]_{Ż}~|Nc/g7?k[:-10е;Zhi,P9MĀ Ym-6KſĘBZGÉkA(qs%TJ𧓑5?j_MXEaz>`ǀFe}r)LS6K!@C܎CBx@Fy_NcRLA1r{[yENVZfoԪ6We%F}rjGRp& KNm Ƒ bMlSJU/Xe7߷擡mB t&r ┒7m *rۏ]0``&fx Xq~ |iJe-V fc3z1QHNGiPb$ksEP #rlJ6ǁ+LBcU/ x6!oN&ڈ|DZ#p% ~)ݟ4i %6ZC 1 ]B_`+)f]="F~6ﵝ5I,W@U\cvOP7Nb'JT.,k~xcdp=r#}Iq~y!L>h72q4b I0>폿bM6pwߴ1eB{?8sF@~mTO A @ql̥AZ+Heɓ͟109,N}Utr!ՊA_b́ׯ_,d8J,^,䵪 =?VhtI,kdܛdat[Hfwbg[u_H-y׍Tּnj%p=,xp; !^?hĖrP`kf˴%9ܮ+NdT (/ڦQ,"`YJ/>Mjlۢ`x}Bg r9{d҉S2b3T]!>RBbK8"ؐB4g 3mDփ[ۉEˮH̅.tfs:qB-'j*q&Rg=D\{s2,f[Yl!wmV'z.TtJ~hܮ6[6[]wboF#kcj톨'x26ЀCQ6(/Z|\9[/ GӃ1-m"[ np×/PUSK4Ԫzy |eڮԘ'})~Y`RίJPjZj陗wGrlR~ qy# _h}z`^KvV\c/uZK>˻~~}ΟAxfs'c"Ƨ]&{ ^ZVW':}e7i/C@-(Λl9a^?AV׹}/,q˙ .UC4Ȥd~{2ۗ8='`" ۍ4/k}ח/gB% #-߿ rM--٧v$0<5&*BD61>V0_}Ϋ#8$ؕ@E8,6A1ns̨OlmBׇ BzCxY[n&Rjf4$(T)keq2ΙsGLXn@7+ c>W` 6I:ڜuu;wR5jHS 3d_gkK&a@ Q2fShR uk`eӲ ScL1rT )q)U-(;Cx42%#o=!]zomӿhve-XMώ?UJ+eLQpL'3-,8͑B(L${ )ox΀+flA:%mY*`B"\LZ-W ) ѝ6s 6Pk@1d@pBS8f^]kQ/"ؙ@tfmXVpef[C}ښ6pTVemy`\羹lQ,0 '*0>(~n䠮D5)6–'~GنDWW\1gKS8nV(G|C̮kuӪZvKf- ՕG^~۟עh5yK"<{ӃSS-Be}靖\Y:.]0?|>y[bc){]B [ٙI^0>p8yחKR[h_}3ݏxdOh񡁽nc1[QxQ ۠m()M~ROj, 4P5+jk]O$#P)eVJ]!ǰ͍c Ӥ5BEjM*v}> ~lFm}#1^m8loL`EmIxo[43+}@ \·ӉQe8zaNIlyhx#nzʽ cNn6ƒtpG$?,jJ ՚ B (0wc.Y&vd( x=p* JltIAJir.Nv?`{{? iqpcf=T7 e!ʶ6$I' LA6Klc{ջȬbO{ٲb w3NB'ZS zϭqdm֘ӑҹ5:FakI{wA$<%?wT;/?dQι0{PTfbMU]x,{)Ⱦ UuVKED5t.݅]+O8U]aZ 7jV4L6m"&1?Ÿ[HYkbRaCkً}~z+֫d<_v-W ,gHU༒pWիRPYQbTу3|r='?K뭹lI휑td7:ٷmX*Y|&-DM,f[Ks?do &9qpPJQBSe!!!Xɏ]U}#3;LlzLPDe`0֑2uNZN_{sLN:eP\u@!Fc; ٕR zJ9Uw-O`/B{J8g!wAݷ<.F R'Fpg%L })ѫ|wTizőرhZl XI[ZS%JMΜǂn\is+^;9 Nm00 %q!1. tx<g.% J"qLIˑ%>k XV aQ-[oUL(jz'iJ!.sT '8t=hBq BHV̶:L;Lby0E;P/j 7q~=2Et`yCUƃ Z+3T^)62AXBVNc DQ&@]Zيs"U <˗ FHg!S6<=e)Ip̙&RpQNowzl߳ISJP-a@g#w)WY[@ sB㯵ُgL{܉vIs?T}=Ok;<|~^d SֆԙTk$o Ud?4jEBq5ީoN ,Qk B)Ȇ"j6{^CC BY|.cu_ +ϫ}A!1 Fe$ ; MԄ  Fw,;@ _-"iyoyemi5LHl,F2th[-9.1:=/q~6oO{Nv>h'd"wRD IDATw*s.ۛwƞ3* {Ӛwt >:kd InUq7LS&*Ey)M6]Ali)R>_yu@ohLK ō9Tx(RTh l7+/>C S>~䪕{ٓ)ט_x€ UnPm7њCVK,f i FV^ljX"BX*@P9S4?^* ktBt ܛ1o3زtMBxrPuWcn=wcTqM#et8([;DKl ԛ%iAm'1nK%y/bl=5`[r9Ơ)67H>\~ς2 |!xw0KGAi<'5OrჇluWWg~ .H'GhB#Go}ʹ?#S( s~,bTfP@J@ _VcZGԖ\_3WԪdי^{!_˳ ?K[D&R!R]x>y~{l_W`]h *1> /yO?Ñ sic`dtkpQR1xhjartx,V5-޼KnC»fg\]gg׸8|E@NlV_ʘ!gdZ[Hr(?@(M$ rVi\ ~(նn)i`,݊e)sG-m#A Tf E1af)uk#hm'N0^6~ˆ!Ɩ\zX]vw Jz؜3BDa= 1h3AfɄU; {}g2XYcO 8B2e8b{IF$Bb|pg{.7m= 0ɂ--۝'5E RA/T.ھ ,@M".!ݪfHTڒJɯVI@gLk(Ƣ67`vɯ_X+((&J⟒?p/!U,%dXZc U8 f$d>Vr- OXorNA)zRx]h P@cX:CRnZ=8U+srfJO\ ׎^U0g&SѱS6h h"P\' "=C> ?{ \}'ł x͊T-Ll.qʜw8R "Z^o+=F*1N՚srLje=~k RJK%F7)Q@ZkV)ewHZL23_fB a'z߿y>f܋b,]Po1ctqNa/ycv- q+"{QҹcSN 1hz/a<6N(x W=?0omiÇG_ó'τ5!eE9d$mg\^(>.>S}<}U~Ԋsx8cn>r/c˲'xY <9O>ƒ~}tbe**+ө̐Y߀t:›o ̙%!Tq 6%Ƀ8oE-bMEquMB]+ 1lܿw_¯?_3%FMUSbGrN $N8/ +ѣG,Hi0e%'nh] [}TXhq>W>{8DżƯ?G՜aZ [[o}0e+@ͳs$ 0#1 (4yij`D .Pibڠz{ƬD9iU̫7.!܏ 痨@*Bl10YRdL26>"@jmⓈ}ž.QAr*"gʔ3*Mf`Np߲5"oa:ӸBD#8hFj1bE9u0%]Y\i4~9?:l#*O.ꗱBьdcL~m|!v,mi@1꺨cj sGEa\r}?y±Iwׄtg^+=n`{ j'Ub!^5ʂP3i6rHߝ96c kV,:8(-a1)[Nއ 1>8rJ㨩1[ *^%4vHKh[X, ^FlX.XgX^"XbK",mEdPC^ZOkJ" vޢ8 `KS`4=M|yAQcs^cԨk7\I"v$F>xb72?w63ʿ@bՊ#|j8H[\$ܖ<7݃OqEcKJ=YĤۂUY~ݭ0j؉4il1t) V5]r2'*SK_+58ݣd>{I{iZJ5 9pwCdJH)~X̮Any^=kS~tDxG B̰!]f&X-Ϲ嫇?}b}~dT9 tX.Ak(kxO~˜*d= _]Ǿlj:GA޼A)g )y>j#g@]#y 3ǟ>e`zt`,.봝D'0b): qA?}=qq "lo!ocʊH3۞PYL[(ֹ͟v5=ٞJ |K /ǶjK|o'&x^4J4lknRkˈvRw>yN!áNBLhxusAVfW$0~[?3+VI .K! pSɒ% "IxmؾQ툂cQ\܈u2[QN-6f̂E‚ɋ_} 8~+EFdjeѦ67 b6i>Aiu Rm躽l6\z@g{nBE&SbCo {Õ޳? 7@*2BdO|u/B{ЖKȊ /бD)ss]/4ҽɪg<M.cew=JZ.J$֊ڍ<6 JeTAה{n8.=PTe_iEm@-}b%r%HףD[]S3E)mefXfj~Nϳ7? TUJ߽ psv,kr$ & k*[n\_5MmÿpdCk͒ Ka^.xKq$G u;g`lI?k]W? oK~ (RaɂǺF9(n֬s_lpx* |oݐ}P͒iqUmX7fMň{u"=̀QR?Ư?EEE~bvI$6@"$Hآ'ʕD?door8:t>p5?gNF_~ ՒGG~T mAjMZ89+ee'X1c˯$PFr0Tm'dkm,d]!ZVy\@z>}0[ⲒUk-;8иlL%ߗخ..PĪ#LA;-$OA/0ex7shxd_^-lpؤ>G:J{%YJ. 3Fgﱞ}]--©hhxl W%/s~v ѕ)Btj-4?ח89=ekMb!o4XՋ缦?\c@d-ξXw= ⍹YqAM8IZ?lV .7BR.VQ?,L9S!l 5cAVF9x~ojƒr! b"VٲV)noy yG%m}nAD'[m̎8:Gj5g{w vYL\Jmo+Es5}:+ȝ>A!w;Z]CBͯV8ʓ޽nxL洔idhg6~j.Wlbm-E(DD*ʎ/%lk71+$o"t\CPO/"$&@D>BDMU)\m҇dcvoSEZp&n˂ؚ7Ѡm?n»hc`mYrP vQ,A1"r1i7:ⶢ^hpKK~&N,u݉XN`6SSOlW{<;&hzƓ y dv)N}80~ޝ({ 0]a abG0u9;^Neӽ^oV/x3Qo+1NOYџ*dr=jncQ?;My"FC 8t++9VQ P['f{pQ'BֹzPEfA!WWX,V9jomY:JI3Ϊ66GQg|h:qh0L7M42f8;~*S $PؙQL;5g5^dl03j{bPN0d rvŬ!ݾԹu*/}yM,]Ksw#q:SF{jˉh(5gW2B+0{FE +o*_X1$E {ht<ۖC[`-Ozu[<L [ͫ)afiPA{%% %0%%jZ&8::%OV[.77kVDS \|b*0B7qT)KvNrZQhaNb&&t:vKi{斊,koׇ҅86;@VJ ~|a@'bvQYAͺ1Fmh #tq3m#zik q[v⻿/VB\G$̴c prB*l13@f4&G D0XO<NOKz^ ?؊R^IAw%glCHx>pzx]( >޲y'9ZDw7ö5/q0ض(HV~& г}mQWp?=Vb(.V Snk=1J߼| ׎?`XKaPFd3z)R}`1p|{ç񇏸> RBfBzu|* 1Ol-qh<~}tHySFط?POν>ri[#4~KWe@1~\X>o#6kL[B?u~BH1G7<)Q9`ZQ3ڮ h3 ܃c).n7z/- LY jU˸Ɓ-+",{[.RX+}B Iix=Pd#Tz5ʜ ),B,`n: PR=&!YҦT3&Kbc_[M mOT-J0jtS,#f].?usG+m{=KF*=ֺ9̔_Z۷oO|^Z65~=/ES4ƖU\?p28p*긭p{Ϟ=@aW|Kn;ӮQ;E ALG4k7Yޫxr{wE87X-W8>>'\$?*N%.Ϲ*E^jZ-7*[bHK!ּ.3̖3a>[ڵX{- P0Ys !W/7$b:$b%}Q`5a<b79zyTܜ6,$"A1=.[md*} 9PNAS=?rٗ iMJTQq$YH ZT5{ ϯ~};oT"A@="$g6ۺRpq瞳j NO< WE@Z]J=#*:G`|z)0[8Yր哟9e~ym5(R: !Fl˓O:)'Bm3Nb$({lm c<} x`aĂt^ʽ*^ᇗq||sܼ qS{t4\ hE%OcrU񾸽l턀@/k#%`),0+QkYw-AIvPBp/f%}N\.Mツ76v0:w] A?W~m|rR?GL&%^{kLJ1W,2J7D[- W"d#; gb1%q`J(ys``4bJ> Oe`ػwa6rR6yBK?IT` kkk *@3\\fIF2) IDATc*g֑1PJu|iLH[`*/_B~sy" j:aƤ$!RRoLL,[Wl) Uf*Uѥp ob]MXEO $\H7Zcҷ7(?G<{יv;@ͪ~e4De0rPחnL:6g9G|p}O'ܗ?,: H*{uƳ SW.Ws`@=̈ 1Yo?U-TYLؑ2S3+T|KګQ&)%8s/5ZfNEP?Z$ +"{[+9jQV /\ָֽki=5bwQdS`-&\\PuWwRgK8!MEjX'N-R25ק62-V uSO{5nEU{NrNl:gS>*O*Hw6c. `m'OGFLb lvu,K b''g8:>}?W3nK*{ =%?wR;rٴrn;->䯐s̩߾֭]<~G/1=g{^YĂ+HH[@!߾/^>d<39bGrG: r ۻ=O>8b/`,V}/ 3,t:]b}޽{_TPl!m&($W:vak WuDQIZN, K9CeIkk#_y"9;e?-}~d9>b:~i53rWiZ-W?bK]dIއk-y_خG?"sbEU~ϷV%\ .b߂L=9g5DkcJ>2L,dTNKLVUA?T' y]@B()ϥ5h>*yV7J*^W&2C`ܕuybMQuP)0o aJ~'K90X,UBR`YB8iPZE!XmؚCp' d{گ\*X,`>[1!)B%m8 %#2?f2nzV%N4E*sq_Xp]?0O?Jn8;L u{]ݼɁoca5azt=0_5 ػCFQn-ys*Ya?-޾.S J9W?zQ"-fQ% yZHAVMoPLlDJgc8J]Iܛ ؆)Ur%\d pփJ{@AӰn%Qc%*; *Gwn_%5&Q;@P+{v(0F 4Apjp:+Jx?q3N_WuϻU6;7 ш{a;뛼' L梛l̒D(Sf#%'}mzI9p;GF %)y NFG2p=S\qk93Щl@UA6AB=7d @)]+u7{5blO`u`%"gl{)G:st1aa0F'_ĥN[[ d $wӛ`2 @+1@ҷϯ5SȤ!r/0#zUϣ$Qصkz'7>fwhP2< GGX_QmJ,ab9d_5A~~*gyWp!XzN'o:O04=0AY%.I'u2j+,N1PNƮ$BJc*+C N|rUvW%V;ǭ z+|oA,m8:6\`Лb.Zb@[N~Dn4(f/Qg_8Vx糱Mj6&9zkY^}H-qoerUu=5Waâʫ *) DO삵|җ18WU  p` =|xO6NO88< ~"gP9 "Jq@' =۷b7?%M(DgbY E$Njg'ËOgQ›;z qk|΢C,p{Cbw PX Vڶ iQ @OP+zyү$u#T4A]Ȃ(L l6 i~gPN$>ĕVkL$J0TJTS D~3WQ>9w/+vr`tKz] -|_lu U16F*!s֢33MK;Q;Ⱥku &J"hK}*b۔h9>й{P//VIl.P!h:kTg/?:CswgIf!izEgUXqCTԅ>2[C|Y9'V}f*L'60M-/GCFH[z/G|HBltD~V-X_'~Wnx|=WM:]N:СGݢo;Y'*=S2>$(?6Bm*RD"1LO{[GW{"CAJӡz{d(@~J?)hS_cUt9r7Ci)\h36:pR?#l d*Yxy5c?OR[8ciPVܠ6ۦDt#j7:%=,! 7^{ w+0ֿ4o0o> D@.'E_h̏8[ ZmcEGjc< Ewsž@-W`'Kț K˴ k>HNCёWFIZkv~^L 676NeZ@kK-Ӊg> g\!d޼grsi-3tPd2i~Qcks'`QM(k@q ^03kݓ9<ի}Lgl04. AㄎDę P `{6^~K; jTPemULl2_L$ {7ogGgd6*`-vO3{M  &*W]R>ĤJ9s%"c'’ N)vv`OafitٯwoX4w|V{HEE+>W:^FERkM!w@hGa%k9s{W=l` .?e`*Ws$YjP;µZ_HPG4 E͵f ʂVfhpp8PTiqW]uP 3[h",YڊKZ|aHC❟D J{IШ"V"cx?_+ڃ݅׼ ;_,Hӽ&sk6bgJ}#lbFUUz[auK϶#}Z|9?d4GuBZnkpv?is9J=st2CNvy*"GTZnŋOyC z6^>#BZZdnϞ>_ xS? ~'$C}rNmjw.>#}V6ieM#bM4מZ`Sb:@l'PKtI[[{R4$ٙ7hU+86d|~EA:T`!X_čyb1E bw_^3͜bI9>8Ž./.Х6>8^POEKܼq_~D~7KU/([3,ef[vc T``J'+M>w.Kԥ@Wci~ =yӀD$Se,_gwORvS&%*[8XL$K9gRP gtLXzGpxḩUyKМK(uϿYdԪ+Yg_z@o6&Nx O3r-(]!Q[ϫŁlsead ێ?L\-ZZqmI-B[ʪ'k xd@Z?jQ$GEJ-m . Oa-HGē-,$ǵu M` G#6jIZX nKzl[1sjppiD>+lk\)Cg(e.Z@9[;#wj%؝4X48kg,YCdsPXLgd\R7gRC^9Иg-(v$$>ݻ8ragOp SZK1-L 'Ф0_Lٽx./'@UsިLr]>2(sfp]ܽq~yEt}Ĉkud!|rYM=|xGǟe% nms]0[T_$SCNm·jޭ <{YWWx,uYh)LE %jƍ;/wxR[GO샞d:gӉ6DATXP$ԽX, Z⻷k1]+֡,c1`ݕLPVx>Ux !:]_pAs(f 0ܗZt[>Rb^OBxL">">fJ7[KMD:R/{Q#!@>YA9b{s+~҇_34 ȨU))Ђ7[n@GhJ& 6QR Y P_PSth ^p_ EO?,>?饌ւ^RchPUẄ́LWM.l~,ϻe뎕X\BIjG/ R~v|ׯْ&7XarP:<}H'slm6;F #-lln`ccoÇUbsem$ccs O=~f|01JJƴ3Bz/(dcq/ IDAT 9eۮ.aF[sn$Z5Y>[/)6Lg&ڈRW.K6橶Ň" 0K\9jq.#" " ue]l (ugVjӘ}q7Z$(9~;/w}UT?QeaCu2cvhR;Z퉑6nR1fK'1b*}_ί]cWzS%# !y+6}BظÎtg~tȥmH-b6GlO[=x/ZN[5Q%1#ym~ICYt&#,fS"(h13bc0.LHfR'FBn@Dq.qq(ܟ:x?Z Z}.%nm˧{CA,0SbGm`yPBJpmܻ{wHnk&()7!: &3m1M޻w?__ M#GgZ)|3aBӺwgx?۷og"x %WFc9Fȕ8b7~{{ptt7w-@''ʘ Y8ĢJȷ0믿r R/٭dpla`A܍vol} 3+6`N=53 U}k<'D*Z<ܜ_Y@r@kRRARˀbm LoVC"͗_/p^G@d9Y_I Qpy&;D?WpVFS2Q Dv ,pfEl\{BX8D،!S: |2_|8WN[kXbkm."vu$wLee/hol`c,CC xdI+4hI&V@_ cA n-IO^^,$YRE+uJs!%M@ ݟx+} Ld2j̵i Q?zZJ .l.جf*GbBLϟd&kk S4 &f[w,N&3k^,<% Ś>SϣG/8|LYX tnamӏ2V|ve)N=oO?ŝ7٦, *ߴPcRYuըMEXKv:~ -.W#nPOAP{ͱW܋䈶Kd`QE!E[o`KnzۋF諴wu-gM.g_>"i(Jŕ6:MOaIzvh\ⱴwD0Jw=џ|_.pkC_(A{~GNZ/6_v0ڸ Q;@r$ T,L؀>u+AZK2T7߳ z5OO1nE?ȡf5~ډŠ#*l2*Q{t7X]('QUsvu0s2YXZP>4qc&b8E5M4wp_>VoQb{{N~; RN1ZLd[bXƍvwR;MPV f@>~_)^edND c@N_M(_V9> ^c}sA*>&U/+F)ȝ'7f:бLb2Te c)kdzjY_+Buc N'P(>b}҂,[59,ۉ y6c ,/iڒc:A= @ݠئMlXdL6$+h8gCbJH堶L-]xgcdh:(hM9zz m`&X2KbH}H-9eL_Y9͒'m^׺)p}Khފ@ddE0jH;:>7pu5g+G%Up(9Rv=AdXnWpr|&K!,*C dRq- 3x0o1'4E!S*yFC<o޼Ƨx\k֪AO^+/7Dnăpq~ň=%&e/fa6p.,L#C:X4!Ӌ6<գai$7. 蜉G7W&@XiD'gzڡ䜍eL9ߚ-6HaGڞ^01 [|OxRc.=\,4ב+6Rp~dw=V'zĠ}:vO8f?Z4|Nդ'$.TUTP^(BFU38):>2~Hz=o<E.cgk,J?5wbg NCמ{TEbQ[:^]q. w\UР[!.{R.WUt8VN(I;,O~-[?ZZ[Y6<&`i+ܦڷ>7*o X6riH+VH)V@kϓ9~7ϲ^b!Իcui@ɲ.}=J}}UAA AToq:Gwν; L8>Ij ͛.,(]T-~7-?KR [eKf)֪O$2{ od ^XpRP mH'yX癬KWSq>0qFAw8}ʈEԾZN ”j!c_#No㨛bkG`ΏLf á^yצkjly-X`*u #;tE\(EsQix_6|uMvw^UkW! bW)W\1|b p}GOz^{+XhﺰGUZϿqm#伭 1T "Jd滁9['ϱ6խj3Jm"P-;(Q C'\|3%Ɨ8?Vнu2[0}(eKyړK'Zeo"iQ}py3r7~tz]^<#1;}Kȕ1 ;eyXdks{ P ~6B ;s?y['LW-9'5il:Ü\wޝgj(@rCR۪@QIźrv#nxĆ<[<5093Nf76::{=)B S&%+~sM/?ԃ#Q埤Q0f |;=(ްu!tOWoIǖB<+|x̫}xo+B5C}R8Le z+a1;>Q$Ghiҗ(GȤFmEJD0P*\*ūRCkdZ=:"-߳nĺPsu5Aʔ&+a e"EIl_X oUDaiD|!ߪ5#G^~u0`d±X6 s{s/?bQ;|-0VMG#eo&<}{ kS>$7YQX"m=ڠ,/Im{^3F?T6QwNH;]D{ 67xno?쌓D>vLnX1+Bg+ZjF- ex+_l>}_CƯ}bb_HK*)c9 ӹcJ."'鿼%}*=kׅtcEF N;'J*E㜀L׿3Nwp'#TH{4ҕ#&JiuQt+8`}]ϡ}ൗ=iW^ _TNGU+DG?2-)ܦW}$Ĕ m9w ?d8i>P `mm @#^qrE3~@|̛%Fe&pD-[gu=! +Ϙ̮/㹶J1ZWx#EX3n6>^ct\O1_ԬU`11>1,xǏoP)d1'9Kvȑ65m"Q,E?767qrrp}(6Ƣ\3P5T#=@`AaZϼ0(֢[!C %: q zbkHQn\ ݡd,.a/Z5j֔ Y8#a 1pf,&p2^Cz0A~<0+rڹ|UjJdE&\nrZ PN'zպq-`U-}C^M3?o|ҕ'7lj1tRj+AV+> yƄR\gœ5@O4qlPv09 S4])H+E8/L+:X3bDPЇ6aƊY2FʚHڙCj5+a뜗4Fyc6b0}bJt9KM{x9DF.ϫ r#+,jq1cܽ{mi޽" )CU[m't ''g1L}ztNS&c|snJw6p[G kyLF#DYr5ehŭ.%#oGa-K!02㻲!{IU;>9[)-@StsC_CՖʪ0@ : z$dÈsiO8!>}"I/YL$u2>۩p#{ۜ&m^wqQ߼1njEŗʚmVyZd-oGZ1G{\nJA hJ[eP;%L;J͎Ԝh PŢhت҄pqkr>VI7&ո[_5>=,.%V3ɻ|>pv?0,$*mlZXL!8M0:$PqCwU3]Kk<Ǘ8|g:ҽ|fH@^<"BTQoYsOZ___ElErS;_e:͛7X-l(}s}X%ǒ~NSܾu_pu[pClF$F# r1uH$p=ϟrr?0k:p\Lb\^^W\ #rI F懃3|x%𜡽<&+Ǔк+8~?&SnǐKE4G ^`=na}m%Y~@JS&y(ƻmEkc1bEVFt_{TO^GŤjeR?eq>O+Źۋ3@ E89;d6:ɸw%C3gyp@[!bLo%ڻA|žt0jÆїJ_SS_#N^%j\SATv7a+'")C}96[缒$>tQfV=U߳jTi!R A̡z8JhU%UWɍ, TޯaD?FJ!s5V-u.4''$ʱbA/))$B5<70|ʝ v*A m ,gLU͡V9HxCI&5qo)HwhuM4@声^Aptv>Eo[u)\]K Xs#/l=yyp>'[Oxn3;yA|1wO>޼%<DςUK9?9>Ƌ/x o8!kn?c2՗c;4oz8 ,|%1)ZHEꇅݷ~j2|{y$A\ @`{T8en]NAx5bRCyR@D,UUfz{b˒snDAB5[qEv9nO>:EAYEO"l4)i=eXbfmW݇>j$OOiX&.=jEutj fU~k8jc zɃ1'MU+ȗP@Ê IDATBM%'@r:di6x-*fX\ |>l $'ZU8[C\WӇ~KjִaSO,|V~X/89l'{o ?P L)<7wƕ8J ԾoHSh1>y6+Z7=+(AZ-N);\r4Ĺ g|' vSUNg $|X|]3%=5gb&s/>>%t$b-XNb}VXv|ϟ=b9 Yi^f m"i1(QHb׎C2^NټB@3/?b?er5Y^ x]Kk(q&6vP.2\OvRYKo/alF '7llń!*V??kp:_5{+5dQ Ya8»b. <\K(OK?لWjc63׸0U^E۫.GWEUrf}F3EEIgdZ%8WƢ׿"uR->zwT}{a1 eG*Iyi YmQpRLUb;63P{FBsTQ@oAw@gth?JA,0+ w)EgJBl>ݏ^'.%J(ݴOr/q..SgYa B?cJXɁ} ϗZz5mK ýNcc`߬P.}1:\-tU&k+.z#1F9mw=j 13˓'Oخ7`gsWڗV$n_G/O?'$C|gr`c 9*| :Y{Z"J@/R@s?6|9b:)%7fOV; uB6dY[ h7uq/yW>\ffwe{S0TqSmQ͸jaɘ,[&sPĩDǩA֪ؕ$ZVcڢ I ↤Ph^T{zLe_0@~l(7jEv]ID X8 CfQj %^y]%3kW*>}6s=~%2&$1Wxh 2\d|ZI}T*B^4EY&R= ,ݳo;;h_:)$kcV 㛕dY1exg=묒oDN@Jz-8 voncggi_;%nPyb\X ZֵؖulbL?ÜkEv:b8ek_Qٯ3@Jٍk71!_T+ڛktz ONpR+. 嬫crRPU֐׮=&qE1KN<@=ܺy׵7o6j&{(_=0v*KGp=5NNܤ}k*$,c.T|77OKf-M6t^П/fes٘__1"wƗWF1ɗ_l]=ϱ1>}^+Ew&k ߰^RZsܹ{7v♆/'\DXXi@wtfVsM=3֩ffy:oIV=B[saf .UF\mʩE|Lm_-0D]Oj;RaT{ i`Ors]BENHP%\ ';aBM|s̆JJBUV5hPE16Ԋ|tqX+w3*(ސ2#!h۬,:,X*(]L ̫% )/\nQ]`1>~cUy4^|ߍ:Ҟ wT^1a},ugG眰&8 5TMhߨȴVNx4>gDDdHŶ["Rx3;>:GvpcFW/)&x1odYǚ2#iBs|yvol`V^ǿ-)6IP@ Uݼ/a2NЙ!:=>KŚԒ鸸í[{x#+B%C(Zwyq"xbT*2vClD'0kđئp(zmd;}b&bBgM_ Y"t #d:lRNm%Xi-T霤ZaRCգl슁A-臦aAH᫏v.jxZ_tR2+ΏVj pooo.676Ч}i\0rTb'eyVU3<}WsҺ{:]fWCPvQ_ 3?*Tc__\ )$5*-*A|͛[ kp+֖V۠v;^o$x!|K[?) Ʒ[넽~f(JK| SAXTu4dbAP19w4T2rkjQnMAG(K'Vt@rA "UQ~fB<͵B WU_aA|yS$>LoeY W$"!N&Upnb׽"kg9^<`饊Qp\i*-,\u즳 MlX+*j0}I%iܮ>dԙ!;L=czEu'{e7,B!ype|[ҜL1F6|t:$s8Ml29xpvI@ǘŷ,/;Nm: ''Q-mLϟ?;wFO7άȐUNKj]V}#/X[8llr!b <0^1z}lV}o8r'GLǣ tV=gclm?bt9bhoUY*h( ORbh=UONOa:#gw%`km egB"jUV%dhp=B[+CBYlTqjl#]ba!6H"u-2[Y,4@*  ~KZ2ra<)v:|67\pDɠԿƐ@C RҾOOP 6 NX#QS΢ū۫R ڣ7Pxab" KVkhB&ι7Ʊwv)MW~UV.ջɤ[c7JLZ;` STu^>U(F+SQ3\?ؽׯ>R? CӧӹML'>qc<ްX*룁>3& XsB=[fΥH2_ޝ;x9޽=N͙J_}jA<yR//[ @Mr1Z}5lʒD?q:{[2MZƭT%vfo]o[toYvq{|z)YX.4Wn/W* *Lft _uZpzv7opuu. 4D?Ɉp(։C¼^vp2/zuQx/P)5YJ:nt18tu CD/Ue$! np yϽT٥{ b)]{. J_}T!cÚIbiz0  ($t]=QD!+j'THXDB\Ѡ+.YW)=֨Vcz4la±}V9!I,H;YM͛w\^M2ON.ć`$f>5@ޒEͼgagw v;wo~֗D&[z:F?d6.1Nflxf9{(cϞ?]_\3 k~@UZkp\߽u?oh]9s|wIɗiW6>&z=˥VAњ'Ʊ=NSJ6鶾|z&Xo3f=^qNԍ]͖CVWHhVy Q0{:?6sDb_|GR~5Q(aTvV`8-S4V%UH@مA)sـsYH]:=j-M&&!?;{{\Sj:)ZKk!4w 6[.vn^8Af*9>%ڵ곾nݗ|.A=X=7iyH H}ĎnEl M|Mnoi|=wzLm&Rub1DTh*b.m9>qA0ix?Q4 a^B_Y=bVra#"XR:1_bց `Z-m ,Y 6"e%N_t/N*KE;SEH7cvPӧ0l`PL\RhlܯOmzF=~)z Y_XnsgDnT6P&S[/l6Ƴ'p{~"ve\t%^[Il&/'Xossp!#|Y[Ls\~粱~ʚq-m6e (%X+cCA룪֖^yG|OСl8Ʈ JW,AMuݫذOCQ/JFB y1w-[r]UJ{eTB`ϪMRz0*ѧ'MA{[}D0Y.ʻ潟Ƽ!j-U5/N@Y*erGAeBBjOţ\ʢgWtWD(YUxexMָ6VIōlZͺ=ʼnh7Lv nWň) U.j8#Qrh||Ž/D[;(:cEyƢ$\7ʿѣǸ}>|?s_`ZyOĂ+L;o[X[se~?^ok.EQrژS _DwPIMP_F,4N~g"7v75 Z *WWsUGIR5S@KBLkZ6 V5MrAn!뿕5?0cM.RkS~9Gwcۨ4V.[>ϕC|2Ëk5W\3klkhG[.k+H`= H J$# ,c14fd"hwl}Ш~sZrN*&aO~^Z;aJcQϹd;Ve)oSIܲ}63#-Ф.%[wxw fQ7TO Ɯϧ5~\\12֨}:{;/rn_#.@Z.{r@5; lՕQ`>gm!&px;q3XQL  @adb.Wylp||oe/κ٥Ix2ciEt[Pp͝5l8;;s=GHxf {M>Vdtj\NЊ <}{o6K[yߖY[K*Bwuw("R!IsTQա1|A9' pNH륱9J u>9o0 "U3AtRPZ~4E:SoɈX?SaUCD9Rk] k r{>.d^(1wY0*uhHw.<"d5\E"}"Š$BFHt^>&H7UJK;Hm$g;M0Z:v"qT)(QlgiňD c1ӹċDA2}u뵍Yܞi"R%5D92V6U"j%wFT1q`0a"U = A[D}utn%0qVc^QCQL*mlk SKυ;xJ,dBAY|\e-}"rCCA$- Վ8 IDAT8a]7c*Q;Cev =U~QPr+z3?{B%QN[JIǙ =CCH~~N>d!YXCQi{B1-]biX^Xq}!a䇬XV;"P%Qm ]d˹`hX6X*V9۪pm+K5"e*:$1ӄ~FF XgO,@Y~H&F_n: @1SU/H_݋)BuD?|%*iQ+ܮKW.ѣ!)Y΄$sH;d[3|>@B8`k;7'h5=vրyᙩH}:dE!L~O{͍=~PlE}$tJ Xh6 I~* Gnf;$vfm :c7g_MQst:Wq~^wȀMKk&3( ' GAJUN8I:>Osغ@{PF3S^G Np{ϪF,[Gҟ/^l/k^pb|>bKGb8x#NoeNU }~Hޓcpړw %@RA,hj.VB!05($!I#=*\Ɋ,e{kt34hēC%D[*qz*o(>fsZ^r\P/U**RXi@[I}T7>'ȐI TU T KBT0cDa+Y)XT"Nu~WZ=7/W  ժ[_ku**qڋ_w}2,%;^,Ev@khʼ7 MN gbHo=qvo޼`!.\5S"ǟwO~ >&,j^Ap |<18rZp>WO9<;?M '#K'''xoT%(Wh2 3>rkv(1XQI/RToҝ-g_bH+GslHK_*;: Z~9P)P`))Zr/,87kPS .aubf 'W' Z$mXFNGǘNbUuAr+>1 G2`{~y1m:.}kK,L#I 3:nv=Iׯ sU}/jtr^t&Z+fW ߷wU9:P;WӚ%mYܒ{RriINci6'?W}I9=ػag{Եc (qO=Q5;;?&6Ykܿ!>=wsMlպ]:X[=#/RͮwMW (Z;ۛh^68n "XbL){9?!ϻAW΀7 ޽g-$;\+MCaG͵] Ҳ-ҕEȆV _ V@ "Apx*jG|N j,"Fnassaz(c]ZS_ĞO/OLYj+턫* XNc&tҐfd*~|5C]!v*_͐M:xQp:Mob$-(ֵm_LX9+Ә sZvC_Sa4k1H(&4f%,+!;> ZtHؖ''笇 ^٦_q l75],Y @ZA1n:vI:05eF.~r9/-t vLVek8W}'?+R3VQu:9Xk< 2pfC x)ԤlZ`1OiX!iqNS;N ^)'ی[^DT=i2&VC= '*"ze`TWx8R no53K;f}0JK7TDSl#д!*YxFgd?3RbԎ\vUm$P}ht&Ҧ`8Q7%TWIyf\X+.!Y aq @>:nbe/s+祖-VcIsb2)ҡV.~| \Pjʉ>TNPq~UY`866v=)\]z]t?>޵F(>ޥMt-/_lJ ]8OxA4' By9/xp.n޺wo+g@aONϕ?D(ؼs._o2) v t2aBbGf-s"/l_X'?Wl0amNMH:e3nB@ )1;Րc.v0.&KB *,5\<נ]YƦM{Ez+ OupU2Q\I!!+{DB_~,3NG{GV$9N_X7C򧀖8Ӝ{ Z8_LR`LH? /~lDc17wm#2yó+;w?B7TK] b|Rl/he-bG|Ѩ|6wJ בeZN$]XS[(ZDňYF{ؙ(+c ==amR8qVVǿGϥ ?UG I/inP17c97q}x'g|M7QHR G_EZ5| c]n5[q-*'\c {aπW?kKSG{S,˂0W-Ęv\u45t=1nl`S`b=(bP7uCsv>\[hcs+TҒ A_zFKn~1+ǩjVp}b˛s%K$hs~wd3 B& nNjEv*>_kl8TpBd=JRMIH ' 뽏lzD勷8|&(}&piw߱eMF0φR78iUwA%Tޠ#>sۦ21[KdwTAHqP%c>R!f7P;(ኜ{(QGQZS ~ĵt.k]K'(7U"W~TWeOqmVߕ֧̠Ktc6`h9Ξ>Qsވxa, ,~"yQ)h QހE2FUBId6>cŠY5W*sWؾׯrҥC3opş״Ru|6g K HCѤNhO$l-\!ؘzվIDk2+@ 5 *1RaAc&GUgQFהxMDENs \ b-l6 bi|k8?8-Ἒ`R1TXVv4}rv'Gי_"iuތyֈ[9~yiϞļpA\>1sbL}ȁZ@S/Av^8`+[,Jl2OD'!bp@CjUػ<ë7Nz=cn&_&._B@tVrX=ýwPN@ǚgbzYݝ la>+ʹe˜\Eqpp * :8U:66z\6 33QD|EA9kVŁ,>*nym@[y\'Kk9kBymN Eh'Vwx%JO-DkJ.ts^EJBvY$nڥ%Z=mlFfGm!6f*[OQ'FG21U[K 4+ gfΡV9U0a*cZMTg G~ }jl*v#r~7+܊:|hpWAB V̬oM`?uxyg%z\*1!oa*lLd JwkAo*LL jS. ¬Q'cƅ[Bpa#$N8P[#9DMw| ˸NOrcЊkJ~޻O~6etw9p#tsy׏X,#T=x?̦&uFPNs/b<2B/g䓾g 1( O?2kFSs w&Z{|tTJDX}N+4jD0-ɳɿc,,ۼ$2na˖Y*F3b"qfS|] f/EɬSVuH[[?JDR659̎?'lmnaM2١NtVG+_b8GGh8oĞCUhGTA;iEf4>b -Y¹⸿ m}[4vZǪ}[[],JLD(*Wʗ+pL^}ĩEOVqZ@JcĴNs 6 : L/V|=p+∫4Lk$ 9N.M:w^?Td!n{ Y^2I![ ?rAMI)h6nk5$!3KI2Ȝxs `VP%Uu)KӠON2vSPERJ(jq6mwСJ:RD*>sA幂ÚI '{x^-ē?JLJoxTNӌ9,i#BnxWPoh)tTV fL-tq+̩.SEvxQ'v,jC1tpFrN_2W*iz ܈ɽlV1JS=@H*~ڟcTF{_%QC_ J@G]{NOx5o.J;G=JZSلb޽nW_ӧ\OcN4圑Čl4OƌR޿oh8`̒ZXϣ bOz/J-ݽ{{{xS\zvih!!مW,%i\v [[/@8}66gLgq|tA YfAjŸ?~;ED֦\#uq$1ImU²Xz#.ċG @yWTxQK JW^یX$2r @`9Ek/{5/.UsXbǁY絑*d 'ocBO*եŠ;p! NJkߵ"!Oץo+*O}UdMc Kmvۿ3+ e zqfz,ϧտ/ϽN êʊZT%Ѧ: _nr+2\2`s};[]NF(~1(M1$} }iEʮvJ*cV^pRsaX IDAT5|"r±⡸5, \kأ%>"Ql-.ك]֖ mFB\z9֞##PgʹXKnx]_UByf,$v''ߔ1L`P1p]2|ow E)BB)QF7G¦EAㄊ$.L4*O |1cwon'8:=CY#dϟ3՟Zf6 aL@/\'LKsni^l{n- [8z@E}oKUx|j MN)Ĵi6#C'{aXjjI2[v:d,~WGiAl8?fgE]@i0Q+ߩǨjƥm\A&f:&c ȈK.H4iUP+B\C[*$ >c'1Ei="x`b?j8c =+j=~bC?U:؞Lg dv@IP`)sJ9tv5##obG^𧘜C{palZ] RlIz:o#tY´-eh -斯ͫbn~'zD v8Ջ8?9R*Klɣr ڶ@)3U'ѽdkp]V'>` x"hzgB;8^7 >fwfZ)6ڃ*}t77͛x>&y}CbShhBtϻ|2?;c8!-+LP`%+qi E.^#[%RL Ċj vkAZj뷸zA/ڭՆUm[hC5aWdܶ'`m>T]88ҶPع2ˉڬGkW+/*1* 4;2GCt۹YEYܾ@"ކsIBoVjP {UKaȓ YY^rMNBDvF*iH:]SQk͐7[hTA(e%jDC#:B5̅̓| x43)Uœ>@UXR-4Z0Ĵ;Ӿ7[L AlWa/؆d` qPzT06$==rŧ֙j@͂ Q-T”!KD} aK S hF΂OGmG䶏QkZ((cJ8U?:|:K{>F Cd, :DUccs?}ӧ1+Db*fxP g1NO<>~ׯb}c߿dFdBEGT,C\ٿ+_f9ȼ%3D}!чRn e ,֔ocgK"Ru aF6kMq d\-:A-Ҁf1I֘YŁ%z5sAX-lv35 Q]rW>h\OX}u _xrK Y"5 eKLT3@""XwoN<_V?3i0i.5 *C©1VH ,}_؞NE21BaV,2hX*/X[Th&̠Ar_EIcIk߫%A>=&vnx-MGQڒitF O'B{)+/ '+\9CD|q2QqQ ܾu28N/}NExt~} X\t o޼:FZ {H癈 QƵ]_0R? mM-rDt>h86JZS3!66׷" ;.Z89=Evv¹2AH[ o1:|Sg҆GSsFh6&dЂk{lƵxG'-J@ru&VKG6ab(gck{:-=˽L "T2j&I~p,Zcf]:jEqmUտcή~m}Ax4TbSL92 t:팕%'C]SZd9acFpܹ3KmHz~Qk f GUP)bCX(:UNvMRIP*l`8BR&jINm%q_si#c(9=QКlA;!e J(QȣT1n?_89:ͽ]AK4Iɗ<D&=.ok#o:޼b$S݀No05֙B?[=WϫNRb_\}}OR*"11H+w ,Y߹3E h y Xb׋h1eƑɥvZ8De2 #`!l0프rBՋyЦP?ŬIN+j$H6p{V>VQW%|YnuC5VAz_.s?K[KF2ƒ¨ILfK=r Tk>PkXK.XAʭ2XU.I3i *?>iqP uH$ǗOs*T VBj@FZk >*6:42C, \L&\(Rפ*ꙕR4 Uh&*j)7Y3,T9h (K9>99/-a.ዧU Ջ66kBҲlSWeV};WD5J=(18ʩ :*NcXh€wk2f#rZ݁9DLctχ "5X8oq=[x >|F%e?%WOKNϔbA鼉VFae~1H*w leTfTam1e}{h0^ng^&9]89&x4 /ɪmMdv+] N>ag{(  bdmܻz`+umɂ(8]/tֶ0򹽹!JtAt~,'GEKο4r_8V%>b}aJ׆T/;>-Q̅WrcYKbČNg*7Gp8|3‡wQ#C4VHWIRA/Rڰ\ 9LE:llmN8\3onh KUV|+D_UH %"d y6,GA"kAmtb+ X6iRR@P^'u. O3zTT5Q $ $aѶQ%ޔqoPPVu1e/'?)U3iB ̆#Ɛ5|b9@FmODs0x>Zy dyUE07fiH=Ǥd ŞXBԢ >aY,!N&t+ϋTFLdRDz}@P/M3c˗O fo,OdY^wbow9ΎOǏ?*R*ӆF{[xx ҿ͵.&)6ַpxtuA'!U~Im Ñld#cB1X4ݸ~{cM>fv Z=Rv{Wwh#BXz0c Dxd-Tr|Fb0]Vm}8c]*#WyT`"qJ~ts#ਫZe6Gm:merbg10qTbÚYT]3l̏1ѽ)̲Wh*Hdk. Վ+T=YlW=}| ˪^LM\- bYfEO~M&eF IPBYĀ&N[y|#H3_ LzV4$Jϑ >$u^uӵȄE)*d{By=f"&5ZMN677t1^ߔd띩C8愈 &>O8 "x6r ^tO*Ll"Xye Tf'VV6Tt} v}h2"OQ1{nB֝>կT1,%g`OkI,[Z+r$ ̋l:[&&(6J˘`p 3Dp@nhѕ=(7"{Zbdl0)k>~'O?{2[|Q\=jzN5Ls/?,9SElOr2w6=ln/u(!O^+&"Y\x!Awn\Bk|O-/sf#}#2ჿvbq]|t]\\vv‡:$l[76|mk ij5LZNWo/`1芉?B|Dmt*ʣAO?do?G#W -@f'!E҅4J#KET*@絿ߎA.k N|cg nnbØ3f>#ļIY )R-4}A-,+O=WmS& yDR!Vo`ǁ;i|;^XVJNQz%䳘J`ɹÃ>"c~xkAaTeJg[GJǘG+׽t upE=V{#>"07 ƚҁ0  ]"LٔcZ/ޮƓ!^zB] o %A<Qr թ(11M٪o{7>Wl0`Rk;VccTÇ.7xz#L|rɻ0j' X۸z}>6mґ'.}ӌ=z&aZ7ZkP~q >zmSSu\ "hG}{k~[x)޼}s$Q]" {_P kpoV]46gYHy$Im@*WJ DybR6$W ⱐ /aӷe͇K%22*@iz]}0z^ d&4gPR_'[F7y$ߟ~|__Yu8'!bd*[9û˓ mYߊ}i$zHpCJ<V-,U2_8Hj-7 ŏ:VI\5H(†1U|0lLIȰ mD@phjӊ'lKao߾ÛSe?k+8q@ϓzn 'ha8>eGeap>u̩*VTXj8b<L.4@+I&'K{O+V+\,7<*,mҍ` 6ֺ6m12xEU(#IZQhsUV6~tֵ[cP?-]X!Bd1q.JizǝȄغ x>'4ɘx1>lTYPVJrߓ"?hO)]kIq>Ό IDATMZjwq&Շ)MڊeixQGz+R9AV6u=8BHcsNm~ % T*:?DW pXERz5thJ :ʫ촏bIUDqͷbNaidwz:x8`U{H,L+Wh6,es~ ؚEֳ[lfYsnṘJ _`|3\ũZWn.wr78",Г?gG1qp|L㊀pMX\VP&_ƃ{wZMn$8SnVק7HH#)I#o>ڹ?~6RXE gٓqk!O*A Y o?b8pEpp@CQy=UɬR׿{>޾P̛$ǺEMcuO;{t;y9CoxڲBpa69.1+|RO n%__\㓋>i{Zh? X^{1`˟uk̃ٸ̸!7CUcpc{t?yfm&̱7!nlˇmR{KԒ flCmA|k7RU:äL+M֏)wTwåuܽFeU5դH XHxDA(TcCRԄZ.W; 1_ W"vN:Q;--b\*W:ox,%zTZM>3:1u1'=e%j >%[ext$^0ԔukҀ#uj2%@Ђ e4{ZbC{4tGEuk VZ,P(KBJQQbTEɒZ}$h<sF_TĎjEև9޽}o#;":޿c*gX1͔*U7 V ;z3-*|P ͩ{x'lnDŽvyNc#F>f\"ӧT z+_X<%]C_d4^֖G n3% מ\Īt4 ,G\~Ҷ(Ȱq\CHlM: $ @g iЇ!`EJx-=*x0 S5K%2>2jB L9N.ޜo1d?]`,e+C;X XP]ܗ[OTΐc_Ǔ{) އ@ƅI)үZy8H3qJ]tl?jVkUYk^%geb5V8ɦ TL9dRiOsV[%'sM]e K/܊Lt v-4.tdhJ OZTq<J@'ܛ`5RrX"mrKS2BTBאf; }i1@c'Ŭ!y\Dݬ8 5^Ee\w6`m~o8<8ćP@j]:g|pb&"||K{x_q_$]u8=;cs13VIq;$4T+t–J8 o},qsnk;1'p3%&!'`p(0ۦVhm^Z֗svOagjZ?G.h Y*jJ*,f.6"\-TE:rz}0z]Y6\@ "`F.>FN5\ /n\$bL7)[r^/0T[X 6 {TS'\+}8.Lwn9$DP VKj!RsuN:*;7b\p`wة|/Q]W1E_CZ 7*m8n` 0~ XI]KZ PSs1( 'wȗM&dATu!dBu\ C }-Lg%` દS٨*SׄyC):.~׿pv6 ZX''@x|f+Rt Nxc+CoQY&IkEGTv}._oyk[{]a%R\!X}( dM՛7x=*TcEa:U3LFC\vpzz 25>98YiT+z( V>T#Ԃhy﯏EzO7/,V&05!lK`-"դ& `ި_,jD!5͂E+dT59JXW.zZ)x<"/MR9nS$sLh>w~kɶN'm|?U>gqeZV~ȰUUZVٓN˖3XXͭG$s24g%ŇɥZ: ▆0'1 ~Y"^_h2-S2l 5&5@-gRUֱr_,[@+Tv]н@t{I/R(9~ٌ۪fbQ2gx)Wcf6bE wCQ3p趝$p.{SӚN|e&RAX̫vnRN8:&lacˉҞHlΊF|;K4 k5jHP̌FƄ:j!b[gN]_2 qhgZm%.^g~@5(afI9. ʕ=Qi>]0F4:>'67k)<'޻u<{ !Ӥ 춻\`vhw3'w2 3 n}t]~\rRMk~܎ljqq332fӑ(!Xכkx=}~Xy"Oa@ػ| ^-^NN>g.Ъ(䅻DG'D5:|㓹%zOS^M!O> 8EM{p3O n 2û8;;d:ƋoQaH iE"nn>MD(ρ0'/5JŖ^̞Fш4vj&(NHKNH6-h35w6oJۘ8%@x_ ߃8DsE*"]grqo].x++hy(s>R'W!8z#T(BidI;]R^8[ÜbUafAS;;ը$,%"&Th.zCg2d49*(}h:MJ^d*R/M},0;RtTf"@X -=q[kE76{&Ѯ=Ɇv~_Gկ?|;_)!RVa))J>vٝ.J]Q"mf=덠*}zwϽ$=})ϔON8FbAm8 01ǭkw^ا *xbM :mnjD %r<7ƫWݻ #LrYN{h,]̈́ar^N??{]_p 6]3eE{T`Vp&i c6*؆q+;zM|ׄC@yQ0LƶK [ s62..{dEf7mb{,:6h]oÿ;Fc.d3ZG)j3L( odU 1U\`el]sҵKׂC|dZUP%}L/^|V/+HE <^¨+G LhGT U'*GZ M_we4Ks@8-0s FLBf:RrU݀+u^oo%׶E_g _kb@@@}^>2 (Jh.Rk1gy^MjDI ®&60Cre@6\RK NNU}Bĝ Q FqY*hq1ɤ™!2(?{S乪b6l]N<9Ǚ0O>_x4Gّcb!FjE'Rޏ? gx9$TZY) 4h/ɶ lcֶlk8w6FK:?Hfܫ?&0K~F x M G- =b^ GX}/_DV VT晠 c UX!VT={-[h;g=i*Je{Pk1*S^Sztn&iJܗ:АYV‡ǹ*zDE@ RU z8!'UkyaiaF(G;!Xn'IPϸߋ!.RpncD,OzǞ~=iж:Bo ^Cvd*D_,<,$T2EV&U0<*T yNA߄u68o1Ќ+d:JO)WJmױDZ/Wgel:&5֦Yl6smff3R.Z<-p70vү 5ٻ̞|Dܵ4kjYOSNYp֙X^V@6_]c]߫ch2P\X]Vd/HZ {ԋSG JXDkbgcO8c<8w385KƲxO߹s CQ=WX]Y."qv6/9SމuHpn"`FYonma4`Oy1 ȲyA+ugkn铧ܶRjKLv4sdSa݀.|\c?c~DهyI,nC`33,!kq:Np6zk= 7~?g̞i uQ?(fڿx f}ǪJqʥ,)!vwpfm8c ǏΓj] +n=<ѼjIt.WK^_߾ҥ󯝣yN4 Ƴ34~ǟ+p#iFDTx!l0@CAٛ.W!3kz]-fyol'_ 0؅>S׾3$= "̖y, Ck~+3Lax"ziA5W^+`2|Ɂ%>yVc3L:^, nH 2ʩxJL@QVn"`RuW <*R*LfH"BGGA. -׺#ZGB,> lWH6) O᧛Zy2Xccwpԫ&rJV6Gl ?l/鷊g&SSDű*wAV9o-nBti@g߻G?|>DQeؽt \!4lEA}+Vl B!76uPG"_+Htг^`82uP^^+C;E?Ѭ0PJ=v'(t?Bz4#MrT{\ td8|+&N6 ,x Ǜ>kH>Py6q8מN1U^=H>mDŕzAśA[1u&A;Xe4r!!4-DKf[/\$O3'.YO)q~Vk\5pSIFQ1$kI>U"VT. Yڥ5c&޵SrJ [B:*^lZJ7g[7[ ]VoIN|C9y8cXP8I2$jS}N\Et}^LGU')' CkQ-YMo)'M:.O׍a'+[ T',HXq.kkrB߭Z7Ƥ > ѧ̳hX?[.jT֘ %֊%‰.89x Đ)!#ݒĒs2Db˖)Soc|iZWur4Tiz8$:f]=)19 1tx(d5l}ްGکrMܿwh`Ev˪;Sw,M| OxO8D:db4ض j^WooqttE?I'߃sۡD Gc+ ٴKW_qrD4}:Vtߵ|濵ш α?"}0RF*;,fniZ߆]פ AH8U" IDATr|r<+MB/{$idmZx3-DÚ`͆$S2.!q_Ӭ@:eVf%`TQ]B./i%^6ĬZu}Oyk=ܹq 7h :ca4q󩇷v3Nd­= 0Q`Y0#Zق|Rs2̋OO+$ ?X#))jRwJ&R9kx c ) 5$rh@(Ɨr J]Y)5a3ЛK |ݝf=蹚V0$t4onJ./sNū0sipk)fg1rh_ٕk8B`: C? ,ϷڲXh4 BUxf=\y8'+3/y.I, V['~KE6F7ڍ݆ [p,K_]E5yb7|竵#TeVebffx{*ymNebΜqGI#:''3 O Ҳ6&hJA-G?YP<ݝT68U{;Ze>kZ]sT7' 2=6&vĐ?>yƾIg;ՙ5ri|c[)MF;{uXXM|?"\֓UMV)W)g,~^Q6 Y ٛ#ΣS!)RI?磈# r$VT(jnw~ggƘݭt~n w}'[.5%WV7_V qdX\!M4G?ͭIᴻ3IVfJ6~>V-tF\5%$arfc-w$/ kصW?Q]e*yBR%EW|eWM? VD/ɘL9)ޓẎQ'*>"xz}f ~h}}[9UnS0M+٥PW1mDrgJQsxn~i߾idwsX$,H<9CM/K{SX.9 >HVbO\ly}|tጙ-2$ 4!͍'! = CJ#Jі^x%DR dNۍd'%<<^ Ueפٔ흷V@.ēa,A`у8b!UՔÝpD10 %KsyXBak_La;iknꑇT{v`q-TV%&6>~%"%n>z4Pz$>)˴΢goAetoF`gEB]bVS}+}کfߺiS򥇏S>ͤJ$ i{;gݷH~vΣ O#Ѳ/ѣITtNɳ¾&=~x>yN24i$wzh fTDv~ͯn_gۨlV6a|` xMBy6HpFQ2hĨhbɴlxX;eU4li+Cih }<ܬ}(71G!'yI͒q"ު:&?"p?|汳 //|n**M҉ (^ݹϨ|ccANmط>ݾn߾ۖ LA}1n]sR6EC/[oڧ߷w?O/qE_'cबJS&Κ g6WNƙjm<T4!%Km~OZ>LpI=qVNm؝#SN"r@BKZZl/EZemBgQ>͍d-gE=AC^'yz !rXfe)=q=|o7oܱVX&:SݔkuZ{N&ytkUMp< )qӄKX06ʦiOZ>vA mծ9(6Z5qp;I$ђ|zMՊ]9޾EzI4'jk -0T@M3!xěܖkadmM蚹! dX (jė)VrY,s'1o ֏TXCDg5MFjNq1&yN[TI-UM`8$DڳYh m&IQ5u/uBjEB74f{fvfAC;?OD[)b_b3m>zՉ #aʦ{?KrLl=3暷*% UVn_׿sqn~ٽ{l2M-z\vn-%ڵ 9o;%ڻzrRܼ~j4Ԗ@k yt?߭=+Im=kn*C?3{BmI{&&Oim17>xΜ]}CUDZ~qBMHg{vӛv58nݺY;d30K5(_hg`iꂫ˱Cy( YWdT^+F秙xWW] **JPZ6 Ŝ~(֢3'Re a(|ڈ&ҽ:,VQf{{`)۞Ő{ wO>=mЯ ږ/[&%U"i=uTdo<4 t޺IKSg(P$p4LL:mFOކgJݽ$hDVrŏG蒏037y(\lEWZ{zCj 0~:ͿhUZ]3">%ٛU3l5frRSΛ/xehKl>w{)[}[u߿*oSSSNӻ;L뤠}W% y3w4!M~lwVإߴ*ask.xp(BC_W=)m; ԫSwߺpZ PYS L'&IRlWVW N|** 63}n/N_ܳ޸d;;m[;)NY^'D>]I:x:n%cKvn#R[v4r9)Z?>܎N4h4lr2O9fvfcfm>caRe?gyZR ДBn./%C}~X*|( W܋qhqhe#h8FũH{3kXL[gz&;䴽z}svf:e`J\r-ҢWuWMYѵvm0y֍j uUl3ԉu9ڮd雅!5UZ5npH43W:`OebKhBdX%32Sɭ#nImMэ:|t]fvPUvj:kW.؅ gWCڅ= lӕVĽaZʬG۞fIdT4 PII"&Jɴj<_QHՇ( ~diJcXImr&CKa I _PՕS>TF8mR2̱6لi޻?)&Vhޘd>fGUO˄c굫|R\#Q upc^=V42+rmnjәOvLaWƒ?{?Sq V/_,* "?у{,'`Xq޼i{Wmss/M._93Yc#S4 3Eq__9@m>/9`<;\VP[AJνLog.[Ő߃VlvRڊMVJ:/'yL$j% mCW5beQͫ,Xh/*Y#kU:YxxI._`\d.z6[I.C&smR]2,B&j3$| 0BR[Jr3g7ںjk8Hj^VkEl^c+[*ڋtMVTZ)R/CxMv5( rc)o70R4BYxXuD~Ht邝=ܽ XŲj-9D('ƫ9Qjܖ)b鴐)"<@ H wګՖkݹ& W._i4a0*cO>/=rz;Ntr>C{豽ruް'bj^w=yߏruo[$"{ߴvіn׫C=gubJ_$lY]S+f>{Nr&hJv;6N ڝ{ٍOn&.4bhX616t`;[I;oOSVRv8N hPHASU9AX5sfbZڣܔv&Vr_}WbiXU(`h޹鷭x)*I=datl?R}碚+P T*$^߹"[hjIa׆U 18 +vvBR|<Dc۳"Ɔb%7i_ sհoX2>>CbjJټrK$SJGPn֖e`ڮc>cK1u<$u~5&Qp"0vLmҢFiVUmXq]o昆r%|Ӕ8mӔ U$G6ASr8ֵ;4n4- c/ @0IS$ $1?摉rz|V0%NIOS$f9UU[{m! w{O =PcMwHR&|NKoZ.Ξ=gw=L^!gΜ*%Lz7;ðo;W쭷߰ݝMWJ6JRp1x۶_VH? 'J:1n au5s۔gwYP:[ d^P-OzkJR6u|`c[F}(Z\IT[vj)-pG\PLN%!&SgO'oxQ6\e`ܩYgZBC BWԶ^ӓFQ3gmm5&Zqjяjg.]`ת=*:@ekU2 !/ܘ{}m_5()Hbmۯc-oEHRIH eZ<, phnteU"5Ec^e)*':  Xf+l4%Vƕdq I;UyR69>b1Ѫ952QЄvc|]rNZKqcYƨE0fMh$g-K<^j )!-g?li͘WҡN8}1͚1U9hpAaH8 OHnK5y5h6K!ηKVE@̚?e9M3Y7>ͭpB qM w_7?a).;ou%TZA9囫{9]߇'(6?*E1/q8M/-8n_?yh{m|n;[O鵉8i=iBUx=njj~'d$fI1YTi SݱеNy눠kWa-&˽?Gœko–O[9ov}O<]y'\Sc_udk]@5)|)+PW\qQ `Rs@{1X*2=54< oSD@ ;yާj㘻?[K]ZXY)B}熧+d~i %copȾ0FaFaFaF Â$FaFaFaFaF#0#0#0#|`T0#0#0#0WF#0#0#0#|`T0#0KØFa^>X#0#p=:6߱V6]b?Fպ~UWi,#0#0³èaFa+Nٍ8 o|koiiM=E@M|7b?߷~ŝ;q}WͿwŕGaFac#0#0Y5䣏Q mz3jہ ~bkO??ϭ.;}fgfĶ676g[9ؙll;B30#0#aaFa, Q_]YIϢ0?__$߰Y£0E'?IBmƏ~dW^y~D*.^h|ʯ=~UؙgӶ߷,m#?Oo~k}/_~w~lowwgkIO[OFaFaFaѢo&kt27n>o~=~ _xѾKdW] /]|9 |~}ؽ{>KJkl ܼy~wNS@ A8{~~ xQܸa˿lg۷_-{` aFa`FaN D Ɔ)`G!޲ ڲY\C^nG7z~]?>0Yy>ߺu+o7I" `ovvRrk[B! p钝xѶ?l#0#0‹oFaN D1dp~W5YK?goM?}/R[?v…\|/G 9޻}ϛcW_OECl;y bz/QJ8#0#x(߿0*FaFdACow>L$ 3 1v? b)hJ(&R$c;,;<ÿW{߶__K% &#0#b`T0#0G +I0#0#xFaFH! a0#0‰1-#0#0#0#|`T0#0#0#0WF#0#0#0#|`ʥ~P?{8sGqQӎyGzQwVܼsm]iSp@~g|g_}<#"JUbYfmŚ? Ě_Qk/3FbV^" z aCB-!cƵ8gEݧY?}8'=j:G9t|=G!֞?mS6kgܸ3s~sM6q.O3g`@jSoS{zz߶w3^'gc|]{vJl7z㜡{w)_xrx0߿蹎L@ҟ/#onct}9>Ѧu9Jc#:{G9b r& E3kJu>@[']KWNy۹5a:7}@]hKwM-z=jPZkKݣn_2G}r|ׯޭiDr7uMysc3Y ié}0]__OD12 *\wNj3@Ncm>pY@sk;} = R/Cߋgjww7immc{{{g߃ [F`6=8wR rxyN!b8kwoſ1fܫnSl R!ۄ!~1aNFH(!~cm3CD)s5zVy5>BI߽nb`%IPtrQN~O/r*x3n`{bOi{ sL=9AxtoL|9Ǐ ">o9Ոirp;rYo.9.c7^@HT4B]C>HL ,D)cc.4O(Μ9pB׌/_8L39#A/ Ж N {"%#_ EF.P0X2a^-g(,hݍ4g,Gx/'C]<.a ID:B{Y[,+Nae0geL#@Ї 0@CZrx50Bg R悀ypfn]O&PL`~9FH EB a!d5~Ҹ>ϓd{b&x9%QF3]SEK?X'xҙX,S̃0 C#.l`f["-Y 2h1_WCFAfUao΂> LE=wɣ ,)¿ cpw;H8  TƬ+wLϪzHNa)y=!Z.Ҧ'b@T~еs{qU2?|T7UyqUy8A3zDʝ릺qXs/Cq!@%ڞ0]$F1fB1tPUg<`0AX Å-H5`nڼߞkQx7Ԋ^I(x6B6@|?UXQ. U籨Rax= zyC!^36yX'A1y<{4&0iκ>#"9vsc@{lF ]DtUGC* w"/PxCy%I飯ߡ}S̯>GCR`qC9zei{#gD+J:@yLG#˫%$OQ~|QTi3)w/p~F'w['w =Dݞ9UJTa=ǼH(l%9BQ]JDLT)0Qd"/iTTr- ]k[>ʐ95.ZY;ޞ&2gl IUR Rρ)\W yJuRe ).3a{ϕͅ{כsgsE.ʺ)s눵p NTXse[ DY({f208؇e(Ccy+8.DYS//{nEa/m{PKlW2t ̨֩l%CID&'X|!@=Iq]s%s Jж\[lT貒b]!b4ZAihO9< &wKpy'8ony]fAs@Vqpv^5 IDAT#<}uFxXs~=0UVB ceBxzg9u~r|3L[=/ oĎ&<*XPE GH~<>ݜ3ɡjY ~*]V9U\ hxZ dd1%&1gQƒ|([%y.0EFS֚Zmz"tNR{Zzohp :ќ8/wX0 ֐nVp.V&TC_ Nn‚!geyG,P(B`Q;Tlb0&]^, 1{x:x0F=+9?g`YeQ<7SQf$ n`DLr|Y n\䍞S 9Z.\,ty#x3⣒د@\( dѪ2yD.|p~ob́2 EIa%:{x徫Ym^}s%2t%G8Ӄe/ 5x o݃mtq;jܦp {v;q+qx|5(&5{=8F?€c{\&Tpm®qs|:I |{&fqk* 7j> >{!:9AvjXR\ _C N@h9I9.7ǐgP~6LYX{ޘqi[pSH0^/&[Wd{QDٻ9FE1pGbAOPυ-P1qP259 ! 4X# ZeqP"Xr?ムτ:.1*"FZ 3)s% Xb5~ 3H9Ɔ6%X/Cc"HIC )X3=ֱ?YN  3)exr^2Zy`EpW):V=\-Fؓs&<=ϙϫ jWELnz4O>N]|ν_>-La\-L)W.k jPQFZ#d).^Oӛ[I4׌J)í۶}s01L4VRe181fA%*&O\xHާ xq6UCJXaqřl01,ťs5J=WXÙ ]8? ?K] aK]c{$F\8#&e:I] 󹐆Bv9da닭]<+9N裯FʙUY"Ԃ2g V`AJY%ck5ƍx05 x@^S L+ʮʅ)Gby06ХcѾTy(oGgTI[3o*'GJT>GUAﭟhp+ )$yrNQ !˫w2{[W@׶:B |oU)~Gcϭe!;s }ʭ0ղ{93dkaR܌K&D{rn^InC/iPVF|$P9om  1P_C7@}b{24 3P9+ /~،p"^.Qsݪzb9O 坺ֵ 5Z /Lxe^7>޳9E Uss5aa?r!{~pL#yVDh)^r׭ [3SPSp*_!}?B5L) ʀܺA}*_ SEFgvw=>dWnp*HCqbr^ Q)%ǻsJ2~gVh[o{sKqЋ%@vt1}4jⴍSn.k@aOAD"7*QB'ȳ/,XSFvM'*JZ_>3^*Ӕ|C[leger|mU?$UTeא_ȳ@ǚՂ,zX׊+1랇0TICȐycv8ErЧ }8 \v T. ",>&E$aY8*Qqh&g%f ʞ/zegnIEuʞ/Ϛe|[0R<U ³B%I{gt' 8@fR;j|TƳМ'[kAFOJC}Ax`^Ik܏QA (:_o_ 'An=w~ouk^{oq2/ $:)~zf0.$zx~Ӿu3~~(S^P3R.7ijl-D ox8po<_8UIiSA{Sc.gG_c ſ-O]$e iSs糦)Nk΂ݱb*GQbgA!@Dx(,a6kRCz/9/P@TMOY+()z*wx<z?s}5 #I%oI9*]]?1E̍}>b:} 3z{e5֮<=/]* 9}KR9{\̝+z0䄀@@<ʁV& i> hՑ=ǀ<$/z0x?W:;É?Rte <n[uWNh+Ǭ U4C釾?7^la#+NSgx m)Dʷ{:,E.ۢ[C!"z'a($ :*Pzr:Dcʓ8ؑ ѹE5'O3""qJN!@jUs(xր4ʚך)1fDF*7ֆk۞fX<.Eb,bV/BY% r>ȕov#dDڮLzؒ8(Bp532w)HJ.(@&{e>.6ޝ2SêYp>^spGs@\sLN*xa8@ױ\]^- gpճ@!qsUb0Z9L \=}Ð12nP{{^޳A2&YsN\Z !*_lA¿ NFV?[7n5לyEnsrzzdjdQ^=`u=O\[# x|er|Tiy}Y񓣙>mܫ{>5Rrkxkhh8&7K@VE $j:a*)̢JX2q2aU<8.!3ށ"D!wŚG~%!T=&]@<KBȀ9rȂ޳FH٦uX#R֮ sY JJPB#&)&8cs-ԩ˽?upӂ0=n$Y ((gZz&y=PASڇe ] g֥P@WJ|>SI<>.f3P89 |#~nYpRAyp,xgVbd>]sPJnfTc_xZ뚲0 ^{ǻJIP){97ߣ F8ON)d_}UNcѰ orJ@Iuکr&8P `㜘H`({rX+JV譓wvG sJ5p.@C,g>㻹|%mC~NiTO@e=V G% lhⴽ=,/$MX\R%X⻰b}8Y:*() x* o@TbAW R=OE9ukOJk"#~|L}  #e9z%Tkl2jF̍m 2B KșK$WPr?sY610c=ϳ"a@'L)mܙSW V.:_*/({| tg #x{YV?@|T<<Z3'H3C(R PazFUuxq뚋";k(k|sH 3B&:!ؗ57(=9 J$%W*rd&/VCįs]P(kUCY{qkЎ| y _b?ƀ<L(*]8IDq3Dx3k@sZ~aѐs=Ng'+= JLA \5c*&C'| d,?Q|O9x`_=)ILr 2}t {i+^G != )#,z'А /+tK]ֵ:P/GC TMUR--(c`xX=rC)c5+6蘳wibÕP,76#z<95ᙔv=PcO,s6q(6aM|+y,hGcS,Z!*0T'ӻ\zYµ Q$&i0 rbkƃy-7O6|}\Ru8E{zz)QRx}!Xt}>,0T8geA آㅻ>QK/0B̬5"& ,E%IB"+&xܞڮB-޹g89}.&w_ 8#Wmʐtrm(%\X8+Dî QhwF@ O}.懅xY`r9&-9-J8mDst((=o )zXAJfX.dZ}c.C?_=)Loz0St:haC,5^F}NekUa\Ik ^w0XmP6.T= gYP.*ƹ.:u=Sڇʓ]_\0',TJxZtGMeQ,c>.bXHbede+/d)qCjB ZV"ie7 Z^@:=DC!J13D$W ^i<- :[!"2Kd пgBoA^"lsD[ >eS ~0 0}|]'+*ºkL b,0{.L4+fet>'`Qgy=U[jVL00N)}@["t?(r1 }zxs2/3 V*:kcDM( 1wF8_l ELqI\FKs`b$/*BE{O,tz$NߡL/s]{o > C !,O(^$ 1A% 9FEV IDATrWX5yT6Hh70_mﯜ"]' VPYmJ./22+' `xժS.dЋs5gȌqL>_,4KUA]/7 (Ib mBЯ(CEhY9<#-8'{c/Kpڢ= iȒJ.()l"5m"2(DraY77g;)LYDx3^ɁW%}Pexi/7&˿{^VLBrJ/(3p"ߟC'fL=Ǻf9_Ї3fe& ̜˳ZWM'D)𚣂 >$(D9&)*g($NQI80FK.0M]aS*mRoRBU׍ vԋhL$mTUBxxL(2EBqxxxP#FE.3WߵQ:.bh\Jy}@!Bp< h~5vvtM` EP@.9f:#1Y+Sgr(b"_+C·Bڍca e>+,yt {>~8Dm3 sQbjkP B2)}43`Q@+3,- ˴yA8Pq7yn兾;͕I<$ae& s?!Wgث N/ 9  Ёerg9ᔓ^g&\j('‹ 'PNjouluc쩩kqcu3ͼ$ UdMu`{^=g0=͸h흩^RqYq\0͹V6lj6je0v@|$l s_U?J wH@ +0 #+wsp%ādW6s J0( re&, J2]A-e`TCoپsї,Q DžYc8<9uxڶTPw W"ɍeFxw><˒osS ^$0؅_bݗ r< g 7+]~_'rc-,Z蛯x{k(+oOIXs{p,EƺF:ņdgCcќ=(c+9xZ:tMn<<ܺеZ%ޫ"k=ὣmwOEa'y O>2  L](v8,ƺz`r xMT`Ț%]5=Z&IĴrA{S 3wlaLjN3%E"URQImx la1e=̜ | E'4O#rZQQYs]Y( SdE@KWV& CM_ke,U;glˎs. X[3_v #>]c 7|Gxz^ ~F& ;>b1Ϥ'UMONϫ@Yo]koU9Qu y⠴;hyq*)D{L%ջgTx` CQO;,鳹ņvz}zk`$ 8ܟf$U-?b9#ɞ;3<>Cf$\d q\!}(\P2p'z#oC 1X"(ՎR/}Oݰ6/C?x qNx FeL#<Ч꺓B 9F$P|s _v|~7rVRb֣lxa߫ƭ:!T? $ |$z <̃^ց\\rȨX?J4A{Z97.PIY[Ғ“B2 JLh0rʔ4<0z #v4$pˊCKT9 M~>4IkO>RP(N3>h#$ )1G}xrUI UKAv<t.^x"[%m]t=~r뾬U7r ;@Q N>w>wws C}.e=BhkΖw/ys2eXf]exk;Cx+qeK|{8bh?P \sr@%sxeoru|a_֝ =e2Pww;OȽ$qܞy`$sxp[gט~tC 3skP8FWO)񛚴޻y5z$՜<GAk{Ϫ!w`V!:7.} (54_爟,Stsf{>,+Ru}ŎFSEnkD~f¢.ZBI1?(w7[ L-U X4#x.֠‰ǘ!|vgT&8G25n0h}c*㻊wA/ԂeX.A4CEF9%_U.3&R&O6>TḶqNbUA/'^!0A^v+BP̘;N`J ℅.ͅ axDzKGxch[_1/lN> RX1{Ethϗrsu@n h@/+twvWf/7NY4Te ouF"z ՗Lۈ ԩCJB BA@̡"K*Ƈn q^^]k^_zxX_ˮq-Bcm˱ Q#V0pqfa<A űu c`'xCp\187N‡scqrsN r0pN+pgQ( ѐ*5^2P$n=9"땃5' tgNP{r(dPmLLCo<ߢt嘓2ƠYMf/ȝS(0%tЅjx*WoޔN ~kŰ!@L^3n9z's(G59o5R|~7Pv)rݛt]0]px")ܐՋihrݱ+'ZQ+ ]M LPA)yS1S vk5BBX3ƌ@)X,i7q6Kr1c @uDΐQ _Ѕ1 BS._*@Q18zssy˺y[o/"sj9*pvoE K+π=%Xo>㬠$jB&U42Nbs8;z,Ѹ 9eKZr1}^Y4IثJd직yL^ * u L{/};CxzN[fs h%9Pey~~q#'>8b{`ӅXx0%&4&Ԕ킼J llŶCD-P,p`^wd/ț* ʜC?罇5> ,O$= h>Pj$? PmcgH`4xu9>+x#xsW2g;riR'/TR8!H츗c.k]r+y '*0q~@:+dy9d1cy^N1)a0_r.>]a'=`EN#0jc5pq шEadwJ岞{cU 6 Ξ* JzB,;<%k,zW~u˄! k>b S, ~jd{ׄJꙣz)օK}o2wc%%D|;RcW(O C|'WR"r֒&9q3u%%}{^^ޘ{cKP(1p"KO{ Zz.?"P|`:ޜ1ar9۷]q{*R /,Cssl-v`~gM-z߮sзtg:LHdx"(A|L <qTQD&yN:=Ow<ڵ{Wչ۝SU{\{5:r"+,kPQ(EQf-ZՍ; cnwܾ^eUo] DC ]yfb3oA`\M?314Q`7H"L@W joe,j9:^jBB Q[wT9R,t!J#~,.1 }g4p{1@/A58+N )\ OjJU)&#MfLS9llM>*8^֧ ʼFY!,X B X\ڵZN5[ sAW?CݹX>KU>fBu\6ܟ!fU=P0l1uةs. Xn>Bxc너rxe` 5ṠwSe3ˬUVU& B(-a&H 84/m)w +W,kPYElUVJRliDhˌ6Ac u,QQLaC< .%<\]OP;Y Vl]GbiID2"i=l|_xǎ,!E+hCujYVRlrL;е 7,U@K@~$x1fjP9=.e}J;xPǮLgABj ! L3*Gg<<U$6Ng(fi) !LxC@BR]+NB | s$(Felv1\=?n2pؖ)oGb) Ud;Uʝs=U_nLe$ksy$,.z?Y>*|n.R.!ժs`,|?lZ{ :\Q&PeRTtsG?gh@ c1ƣ g4.UAK;kN3;-gMd"£t!' rnARCnc b:5]+fYkѠ Lvv{kP]|`!a*x!H:\ĸs?Nנ s- :O kŊ#U2ڪ TP~-~]̔~лθS(GG,$f.=9֮eQ +0D+T)dP¬2*s嵱mBBbI(zsü` q@b ấ)lׄ7&Tt({~"B,˻vl];qs N<) e0(>F([H[Z$ΙAØƞ۶߱{vʻb 6JP5J\CeV=s{"t8Y ZE/y= BB [m5v^QCJ &qL磡 `E*2J2pS&xx.aR-*+"~ ra,d=Ib$-<+Q h IDAT(mP -O.YLXeThlNL@QJF( pKͅ3@խpDc [- |ZYU) ÍĬż& Ns{B{'H&^c WS^G1:<XZךּpIЏJ7 83% ܳXvK1zC" 6阶C%e,3̟-ǖj,4un*sn m&6 }G!< R_DVh5}^:g(X++EqE(ˠp2`XA2X }Xz*L9, .@--,S1QX3C};\8)[3DT֖CG6}AEbcuq]!weU>T:g8\Mux*E}VeU M-)XḄuhs@xwY୵ FP (ʠ˽־[WB.PN\Z9^bK<[05_ \!@Rϊv5hTd.B1rUo˪j!:}h K(ac.ƨeg@:x<+ԗ`00iiq؛j WYШ O* T >3]eɂ`CHK "LXj* 7"h=sd7R] %f?:P&z]{U 2v^* x|$E@e !\Soz`\4L9$^Kv`FI^h^$RAlY_UpĄh/ /ՖrLH\h*ұrXB^.AQY)gYJ]K0();{*3YP q݌)`~.6.bʨq};U3#Wa>^g{!AF!XeJD|ێeB 3=K$tb^O!xJS0{[NKp?*8X,! LX(Y6`r 8e9=z/p':2 XLB%3br(VKu^ה#w[ٛ1g]Α{FItoJH5az 4v\.ʑkMn8;^[ ?u_xK\ٴ! :'V-b q6[ȍ?1 F.(S@gcoU2d#Ӡ,ث )kTxf+ ﯶa* +}8Ge\Tk-+ǒ@H#y]cI3=>۶ʘQHA[DBB 3V!eQE0t r\u6#\>qL:ֺd7~Qu up[^c1m[ò{ުs/մ"B|3b׸mw<3 `UY53SunwiēhuJr*<*8'AcJC[ƜoP"XdBxf0TyBsWDEIB5t%6a,ǂ!e9 sUevBD y8q2~ Uszw dEShNl)3Pr;O2%e!:93Я4Wy 0$ *U ȅ_EwH[,kGU.-ĞW:|c~-3B{]Bi?JU.ՁҴQdU-6 <"4?ӋW+rlU qG@8ԵqdAnXR e-Z],#O ke;?Dg7PkGQO@,|kR6Z}U(3W<Խx ]2/SvFC";[heY&@p}.Y|}?Nl[q1rNPRIe=|PFםԵ@7ӧ14yoBw=[Vgޗ>X̏5#X%/jܿZƱrG @2~p=>Wf/re^mq 2rv:`MdY)áџ dc۵8rX. }!38xQ)^Y%;Xh%Ѡ 3aReUN3rřЭkaE)22 3ӡ^) ɝc {fO(;|Ƅb^WDp=Lw\q&b'Hax$6{^fY ̾%r `B' ={\̓2؅ R[pb@F4 B4oufz rcc-6+ 9sdX]uߺ.! lW;s D4京J TNS_̲yx@…|KcP%/K zA оCX[^);Re2;\,,8 #+ ֻcUtV!,ɐ"1pԥ ֢oiTF![1l: /]~*\/v۳s*DBw ʠ;N%(fg x5;1uOLB+L~5SՎ>/>յQ`("I82&L8C+gjг5p&ȳb ldc"ka:w[_AK~rȸ{ Bk9ToMll;%;빀WA! ϊ3 =BǮa7eL]ݵq#%$ Ap~Jː7&^ \A(V #[ZI0{&<߬ Yg`bA2Gbi$ETaւ*>gckCX"8 }oiUNLm=;LwUdX)2zRe ѺA@Y;4Rp2օo;[RCeƳ5^FᑱPF́=8ai]G;\C !a|Xό&gkt?K>c„2A2Soۼ,d۱s~G!PP9Çw jAWLF.~,TYmKY}\=xE ?Z!J*Tk:gVưU^ʌ!.=㌣JRo_u `>JR˼ʖGUEc9[{ c>V[; 5#dƄV СV }T /@yWG)P´{̘Ǟ(B s-sWa=9)SPNA CXǡ*UY`TL@Ȩ`݃Y<:*VƐ. Tl>K!Z_82 RlYiXעv!E^FyʌS}ί.se%X;4`(B@2_V U, CdA%BBWY [CPз)Q(Fn֥\cic \i?}/`٪I UlP9>9Y+pa`A3@,\ {w^>,pd@kq^쉢x0pwH5SS!׃- ;T88orAsĂNoxj(Sf8V.{)~ug!sf ~HVW V?%*C^t*] 9!`O2, ۷Ux}LI.X,9g 9e*5ɠOH x]bg}/șR`EԒ` ,1f_ՄaRAfQbl &VµEP C,oҏL1eږZe^k2.ἆՙ[s@UZhm/_sq\;q6vnZ5 )%yZFׄ k CfV kaOA2 Ȫb]~{Jds}]ˠ=IkG c-bșs2zg!eJ+W>WEfh"a\ XYyXJX>*Z<沈Xha`~~<&]oNJbwhVV&ԇxML>Ҥ*]{TR.b&V&)0XAĕ8_V8 AF1ccc겮jת֊]  ̰ٱk}nP`\-DG|#kB[+@LZ9&SkyWu9AO7Zq5{(vE(}W8l6O+\=!d WE^t?UV7Zd j>,Oe}7[j.gU zׄaB}3}}c+~.*XBCh936۬ c(jϸ~4?sg2چBQu'UF9&֍)E']m,ڴ}]eaKuq:tʄa}jnFv Cs \d2Bލ \uxkoP_ܫUϫ43[8?OӶ;U3wb|$+kp ȕ_+Ʌ@hcvWw%VwN}Y@"CmNxӹN QB lE߹, uJd+!Z̘U^A/#VpUdjeNwvN#% abJA 傈abX966FOuUoX3 BL\q4 $dzgʒSv~9S~l~Cc zXBÞ.1fbYyki{Q> CZQsuigAc>}F.Uƕdg #lbnҵv3{֡!ĚqvǣRj]icp9cT3 ce삇<Ң{JI,Yjb i5!)xMa1 ',1âVP%-S) *R+l҆ TXTs_ʰ+ìsWK9ꚲ-l}RaWك2!nN|azUbqЉx B0st?+J#.ļl߶ uQ]کZVzг:s1U1c%(/^1'䆮miΐP5 1 c[h̃GCf5ױBD\w !wi{USn!e{:A));u"Y`鴝7+bJ/v< n͘qc!JVEk],PJ9 IDAT t,Q2jΜ˅cWs1J?lFU$0"DoU&hHŵ^ b P6 D͗f&|%aAWVBP?[JC}Y8qt_p)$x-n$^rF|hz٘v>eyTec3v^L'mQXx>ŒsU9ߕs`cy Db sc?t; YLm1ǔx pa͞*O*=Jc=ؠ$ONw-*JYuyYvދ)*(Gvh"@]a1ad#tŠ &Ͳ°*gO)rֶv4~eIl~ 3U n/0bBlTTeKbl]dDJ(D]e O ++ylv Bԅ2^"x* %lEYA"C3 3ؕwE1PK2e&.>gAcrr-ɵL ǮmrG !M̺S(1ꗀdƳ_X`zm!O͵Jno?4Y ,H5S`P.v*\Ws]#^AAf2J&!%|w>8v;2:[1,<7%\I;e1|B4 !o-ȄbCtLP;a. #E޷gSϽUwLYDHAsG eg ͡cgl!=G}yN,Tқ҃!f W8QxF:Rp ` 4ՂF!1CB-l Lٝ2D)y3"P p"55Dlom3͙u>,i;leV\߳cy.uEWOkCce̤s$Ā:ULR0ޫ0;RVVK;-zl.$ČEZR5Gb{PF] Gcڪ|ۺlұ(in;פq=rj b@gSBaXu8߿^"xUU{qVc tb?5 V)v eH}[KK쬦4zt!"_Gq屄.jl~\A:.ypnǞ̴z*ÔRy>~s&'K X:>W fWQ<,\RXZ0RyGkȚT!ʘx)2tT} N381 ҘȺdupB39)#Ϡ\2ޜ YM0GB3YBEo{!,2G΋Χf[m4?#1@3 )r@V9DQik/f򳛣%c5r=O~U͡adi; CIN3z M ݛ qY:T$gz'w_;:89gA4;"G]3${#sRПGX@ Af w2ԙcU-,M8+ gl'[ْXq,0xT(|B<g d2Z䷱#e[@]]m>@C t}9+ >{,jS -3>33h\DńTVZpCH n[yАFs տAL?Qtahf > tn n;EIŽBxrwN ~Խ,Ő"'GJ`?Yc hkgs!AXVi|?o_(ZEKCSp>0w_WBHhͶfd/p#7GKGќ֢g3Xyz~" z+޵u`s*׀*Bsl,0%&Ng\kK#1Ai{w@]s?g%z 50|;1t;RFpH\;g֗É|s!3"M`x=O} ܲSF" ?|IȈ[^4WSIN~0y+oFN~ٿ-w`xdIO5}?8|3p/Ug'?hm-N}5xh^l]kOWIp#~[~pEɾw0y sp_d량W߀9o>{p{}?g.0~A|w)̅Zw˛;^4s1m왯z_'Npl ܍Z;EV?[_Y7o`dK: |W]y9lNy!!|'0}? Npm3pp9Ur3υKa`׀^q_0:/{Z`C}߂~X0]@:l],w= i/=Nx|8pw!% }ʇ#;i~C{,F"gk; ݟqcv]?mA6~1ڧ nq[@2+rWwz~^gT`6$8mV?Εvn[o[s\{R$xui n}gYuõu"9C">,m_` }k.2`n{x%)/?ɟ;"5i{b7pˀgxoFμXyIwͮ{yN |g0)/D#+(wmpBGD7"Zd7%"Y$$_6< OBܷ5pg{&?C8w3k~wz_pԗv0}/\{p_n3`ǿ\w;;^YNy'pngwйMװÃ溗Scֽ6C߅si *n̬}3sn@{ z9A%Ŝu-U1aݻ 1a! \%x@3t(]Eff-liVRՊiccAXCi9 NR넺٫U^?W866]9噌QXpVl\N`ek~M:sbO5҇[h$p7].7ᓟ{>l8hnP;?k%zk/d\/nD3{[v~{xd?M#B{(\_خB+/m5740\hq}/!˭CWHvͶ''Ϳd}!D?束ǖ&1h`N"Oɷх _V?X=_L;5|^3i[{ncɿ߯<9`;75!_,靃ݻy\C `f?]LS;, q{r-^tŅ}OFI/lz?nC~O \i{`͞Iv~ؿ$NˀO~|R94?xD~s^MOIO03;=>|ۀly}=MEΛkD~|} ]Qp9~=6?+܌?rVOX?.+``>20 `18QX== CLzg.Ekzw?&gN VU?7v&-? սc/(?;|h~h8  J~~[h'/nN-|Ek[fC=3n!/g'd=&/fx\zpzq eКdG.`U@*te`b=0Epn~:6{z(xgMy;}8Z 4v~nS^wΜSY}}wWtpS+]v}ܷ!k֕'9|N!3}k8O˾l4I|99{? ߓ{~?i_B/䙣gtBBU,pdUb>Bp'd$Rؾ`D YƈX 'e Z4_Oޣ%4 T^FNdBwÿeP25Lj+{:ΏrYk3(lA]3ʰYU|Ȑ\UAbA WEv?efV=X8P/G/c7Tr ^Xgk:b/HR`64'J<}33ƞLJL#'JubkªXuH8w3b; M$wy-[؅,L] Ģy~~+.IWk?KfA]Nafw7 hMxƯ<޶5?}976kl)`7yA,f~ͯYGkv>ѩLI0ӿ+LQ<ؐk Nw+){<`xNXv{z?MPZv{0q ŞM8̳]['CE"@q`kƢ1$Cdgb`xW4_^н`hYXwr> Z9_y(q:Z&oBӱy"c]DI#[熇 \K:@"W:,~u`>Qf/]=3{}uI׆Ꞃ|]hb*?+xWM߂DhlMDߝBgP!ϖl|:9C@qQpZo[oWW#m ^Zx/x7p0$YFQ>[A\/ĝVpA8]H\4mYf?ޗwm~lpٗU|+8Z!q%Qt˾lx~`fos׏8gnz}?@t>y͊+E\jZ `,,BA3ia:-h.-[6ĕE14}kw} kX3d k] Fy6Q-CFxf`V߶ 4*Wb mc>囡uȶ>ҳވl|1dg+)VoimAWf"idYdtv`?ͯDFV( ֬0xH E$'OL=mT/^?~cv@%t$ܠCy>x6 IDAT0ym.,f}`cоH%FRcWk6^i uŒxYéV|{^ǨQ& ~!: u=T%$3͆Haon~f37FIPLͦXź67[,j$X7I 7?Vke Gۭ4cA$u"֣4Hnh=\#=|$sVJ̏Y;M]{~`dۻ~Nb0VlW!⊪ {W\w`×XW=;=< xxK(#,r`9fqb--ۋ=ڒ[H{YUDTqWS:taA`~ߏSpk&^CŷDEq6;x5zdbKf殏 xȅ"ˣ~D\rOK?7:c1|f$WxH-pᑮv~lj7xs.QH:r4{ ý7XxG6u<=  &K^Q#9h'{u!/\ nɲޚgyPl:xw_p'H$][-Vi ueD"O݆ƮOudQ,b,=碵2dçz;v~ڝsoox|%⽤O J0 '9}_v'$#W+EgZ @"^:B\LpHGi0v긛ʍIcp )UlnxFTygp寲,.ɧ!1 ǫ@ %ij B$ w-%آZ vCTV7vM zkvWCqu2|<>gj!U^.iүǁ \Oo9yyk%2H]tg@Ηw17u Cwtq@8cB6 eQO/Bn2w}v|W Uy 'Lc͆и]q)=$% ΗoŲ4+bdhnJ%KdÝ\Dl[l`ׇ w^&xO P\uu?қ:gv Gz'|@!2i;7r0}^`zna6 k%<"A mdɎlxDI '%CwhxVbA:]]]~vGC.Y vY>F+-AT}S86,poI 9oFލ9RFH^; lwL}p>W  tړh܎إh_aGNŰL餑j" JyZ]lފDhI?G>$B,ÊD۽S~#e)D781frrv?هtW p;C<;>Ǧ!鿗+/=oHó9]ҼK Mߏ@&#=isgG8kl'_泷(r4xG~$3E-:JPٻj 8!N>O0zj2 ɧ͑jjd}m:wXw>: kdva{굓+$tE%j758/Bvow="Absʘ:8@L9,d& `>GD;&׎g}8[b%SUYlE0}@˲󼪝AX? fU}Sl1A~URC{ 66fhjzkٳP Z99tAy6VU迹 '1Px]gP?{[/;.mq&v=kۚ*,\N;ݾktp^{ݚEX^XSX^Gx8z> !Ky}a*M 8DiD V?H2F,u10y АٻE\%_=4,vIKB;{$NQLc]o_5l~0sW7Yx{F|AhxN4s* :ӏ\ڤP֨Py{\_&ȸ L`vdgί[3/yʇ/; m}A^ Ql ʄ3=$T5`2Ę Gk!fBb]ZZduEm" *BT60eoUiwz.HOvʊ/qB?g q쩠_Hg]t tasr/Ӏ?'>>RmnNDsOvNj`0ْ@LػFK7 yȹ5:@æփd)w30 P$x]aW= /Dȕ5+e M [{wU\j 5"@]@N g@ܮV<[^QHT+z\KEyfNnRTX~P[wežBM~>%$@;OpdXRҗ=^ u Qb=Bo)8qk#gRx-Json_#U"d=pR,]N /c. V \xQQʯIB/J{)$ۼx uK/80r?G&J.U`/ǬHn piJ>HxVEw$$Sv"5 _핋=[dnw!t6 !ў> | Piv?P ZN|:WGD/ޗG7X#G`#}O 7h$^-lۖyDM0`qUgRZCX;U0uީGw0'WqMeeU[7bUFm oV<`z dT*wھO4gXdV#(\G<$$z"n;dcg#eyЌJfJzתjх} zLI$}nO&t&`_xW}4>UbY# ¢)$UĆM({qh_4?:Ylkh|wry].e9u_Z L bWsQM$4> $Hg mo% y17}xo{r~_^>h \ҡ^xZ6҇Ȑ B Dytߓ{.k6<8.V"EvHcv|i{H%Isd8N}γ įxb|Yp ǹsd}GӇώ*+#]@{O*#h0}E¼Fb3m}o/ 䓰c>XvYZH(bZE>9Y dp[%h(JD^(|zݏ5=hl_-}g~UH/GN-{8pg~hy%Vn B]P(N^xT y, S[2ET:0ᅂ*z4&UQ=X \^MYg8#xVyn`=LmUp;}&߰Q(p[Zڰ Y@T %p?U@uQ%/\EpP;)P/ ~]m]+pW=[xtH]zKޣ>V8"c5|o\V[=(ˀڗ5S1'm;)uE󛯉Z3tc˲RsR%\O/ +,.D} ޥPJ0a4nE9Rd J3'Qw𴝖nm/'3-B>n.nH}fu\yd}n3=x'>}dD 68x&|I~<x]yjGd헽 $;lZ/ ΧRm/ˁ\KX\W((!jp5; LM xꆺeLB:$ :ER[`#KS!"Jң/n~87&G} dR#NL>GtL{W uj'>9i*oI#gҍ~@ eg#2r)?ȗ=c,`vк q #rx i-xsseOvqU=ɫ a|p;~:7 R"uұ 8',,cY7z/ yb =]w|Qf]ΙR5 9ʺE%̩(Kư=KwMd3Jw*zA7g(/M3j!V`dLVy u- 1*!'+p,XB 0Nb~H>LPB|'rAUumzd6 n"ھpE/PhR;l+B]B:{hBV2bA'KχBuom?Zy@ђ,יX[ 9YV᭾qc#}[x2[\V8>SIlͭk d>x}a9ٝgnp"hQyxcm㬜[l~y'݁5[8୊|u3w^M܊r\>x \c sp;?CBKoh.Ϲ ɞ ꧣlb"ȍn ˋ:*oVI.jargRb\YSy%9pMQKc#k}<{ 82I(Pxlx8|-҃?@F)n4cY;}W}Enbƛ~j*F |\C- ~16SrmyAWhq[jd(00?|$.+bE+{8y%SΧ$zkK2Nouf=[ٝ w v `# Y߯Mvh_u}Hj( 49 yt y.=R@ZiIh^!S;e`H|NA\G#IG< ?@SZ˘y=u2&% Msuu@6hF\:QA‰4B 1\KYz,<ԏwٜεvG8gcHd]/27um~B6AM~G\$لyCcȨg&J 9V{G-BZ3ʉQU"B}91!uz|´}2'>/nw-b>Ϻ>6Tkįz4<wG#m$+sKk$}odW(d=^q`+Sdc[Gy{B?^wow}Db\~/MGP$.;߮yj>-E].]Dx Q Qz$\G9Wt * |>P`e!+w=_=>WnaVzO#4I{=/N![y)9j(1kUC{p?wԷg#C֌3yl+p'o(pDNHM\N: Xq!0qm kObft oC"BZԛ@#K#(k)n֖p/ʂoTr)JedhhpPeOY{íy|,rz_"| WoJ}D!B޵zZ;8eOW@P4qT9YNvr)dRj5+xĥi;wJNG]ڳ:(zhE*r\3>gC=mhԚ̮6}x%(:9la\ONz|r%Zc5 ŻB3Wۖ =Lہ֪G]k&o8EI\ƶ 8gk;÷x8 QW(Dy9ۥ ba>h4=.V?TO! 8AkFaK,B_>W> nSB&;E==0X\Ƀٛ ^HϦ9Favy!Ӡrԇյ*-t`!ϐ34x+ ˝F'wbgRlݐB?ڞָ{/.mEr%h-҂&~ݟۺixM{ژkr`vN}.'82)-H\W q.lV !=UݻFu J.x'9{{2@K+}=Ҧ``Lb%Pփ% *Z\,!P%X $߅ʌ` "Vd[zm= = OǮ3kgWk ꦏB>_řժBU0P֠jȃT+<ntxՏê =H[IbOZugfoN~O,^o3/3+7"_,sl{gV_>'8e<ɳ?rY# f/i h&UGv- dz?;sZ|]Dh닀OͅF랅dj½Yo!pf+˓XywnwvۀmU:ץH7<: w֛'+'ez;ctκ'#;#HJ -h} pb1}3c><_?S nt}7bv8K=TL"O7P4~o3fQ"!3mbL p;llAv󀑍~^g rD2~{3,wIW~Bwuv ,O@$ "*OAT0 (( ">y"AJ%.yg<ӹw=էoUuOob,tW|'ViQ5 /ROq0r-T5nJ~݉g&8\\.E9I2&K0ǿi@ :tSaC}!OK3ޓp[y(`H,:c/#.u#N.Y_Q3o=LJ{/Nz߸ 8nD}:baQ{~3 X}}rq{&>tS)`#ơG'{|r%Dt;8}ZD/ƴ`u#V3>]c;/'Lz&3EAYɺ dݬ|\ іWZL)'B;. \5xwM*eUVjmhH>]gk8(y#+?yr-QaZʼnՀد4QjɛIrߟy)ME+yZ?>XVLԦ67j( *PrK,dahS`=N OwhM@`~|_-w*hv'[ Bؤ,T@Uՠ|lsLgnk !:N*Pn(f4X /:_\ ?u[71N ];2̦+ ̌B{^MCp,l[;{+Fv,BĪ I߹KZKW+5*$D17l4d2Ԧ'3QV: Q S@62,6XBgG=V=ITrPM3 2B b\8n]:uuyR$Rbv gQRgIQ2;D nz @1Lbe̙_h4d2ZT$>(ΌZp8g9B]~06k<;j .KE.׾xcȬT'x~=PP hbH\%U%E=zib jS9H 2 1(H7gD5'Giw@ArԽ(2kɎKv%DMt7@6jnުf}sj)g5ήY& 4Ka} P( LlfZf[/ƥshjbn)5rM=66Z[mjbOKK]g혂bVͻjd 8G:(K0j9dZNY*.Vn:|zY(g/ K[;'M{sbnͱTs˾%H:(0y2 V6IuVEBCLdffP`<,f#ᏺe,XoXyRk8OZp擬xߕwoS t۸#C j܇s`.M_hr_~uw${H[Dp#/b%u歔Lw6&r2]$mf:9ϳt.4NV)護3JLT 4Hih^K4'L0˞UC hEf#e)& oa"d q_& jn0!Kj0;ɿ.`~uL|dXqseaP?K=Y ϔe Xv_K})ﲄL!bڴ`=؅:&{6d[S(yh C 1;422 i!K]jjUH0[. VohX `X[3JaB-n%ׂbIڂV($ (FrB>rk=,B7dьYiuBHtsŒmbf]]6ޖ٬~رRM~d/&K YZd(5̻k̵̾!6g3ٚ[p?CE4f8ŕ{jUs)k) 4 }1Ҩq*%_V e:`87v/>S}X׷vbBR-;ؼ3sŝʢCި%"B Vy R#!Q+~MYjMmz(Sa,͆&[7YH03f+X+,]/ :u"Lz m}1 -ۃfe|K+[24jfop 2L*s42 v6`yABr&vge@Th¢ݽqv>D~k EvZ 쩌͂\̤]ǍΞg_iA`#Zl?ccש55f៉M, ìv>Ck1tZ3:Vbfȥ2zJn/< QFdwKt-K?y; d31_@яL+ >~CįS{,=0%tu/OArݳ>T8֊ KDz6Z7:5?Y`  lZgZP6tR];2,.~Z^#t1>͠-d5Zh=0q ;@HA %@xg >l.XFj{}iշY[YYsR3^fIקΑtk!r\Nv,juCYKѲnOv7؅^4audY׺l+BqNB:.M%VyAo;Zt>B`-[LUl]~<%6mtxegʳ,ŞYX2|Ys~y~ǯ{lԨ-v֧Sf[)=XbTL }A~~Z)T*sqLa{{ nzӃj%lGNavyyL7~ǿL ?g S`ݚ@ 3Z8y/T-n^р9hؙZ7 ,N/dTPL* qC n˰ 0g#69X['oex-p!aaHKH9f ZгZ޺ $ LmcȚλx,Yo3xvl e@mOb##K,\LPtO\н@H_ڟVyߍ=C]O!w $Q+slvx-OZL[[rBwMSA/62RlK箷 dg/pkkSAiDZ84Y>5\3fP&@k tFm; 셜wg)ڨ*,z1?voLT\ɞj zTŪйT`_̸K&°F!f#j9h߯_5ė5Yd5!`] YgeH>LK=ܱܳ[a-˛Q\=/0@@ih0Vd)o2[k?b@N1([;=;W{iBZО c{/4v gBm !SͤjklizZcyTh] h}Ϸڳ hܽ!Y R Y>e:q8F)t3>?/o~3drPd/mYfMpxͪ0ZWHh/6ՆI5MwߧS>t|ɯ\C}ko5$[]ۯ'˂'0{/4ʸxxի^~[j*Y&۾x uam FO_ǝy>;q4.8Ҳ4u T;W܌|=x7ne[W#߻ݝ]Ni֕=(Wk7v£X-e'ù0ۅ+o<5}n0S?-:v׾5^===޽{G?#GϮu3etww4Fv| 7܀=a-kƒַdp5=yOw~~z\wu?DzFGG8p6l {_*axxgybvR&Ufkދi1Xm}߂hò . d߶' &ˉ=`89B<4ޡ4J-ٺ~u+!k}}!FՏ? 8\n4Мa9?(t L[qBZY|n)u̩ai<+`zd"8ۅͿ dU;nE=ŶLASfRC懞i%@kSiad,M?юL=kvY+Nwy4M7iEq"CYgeRc乱1GO?܉j-;gE>*W$scdI*O贀k.c3.'‘i Osƪ>9SX[%@W?=;I{H' _ &g=:17~GԏILbqb>b3KpqGcƱڹs̑v~7~8r )y#(>~|sN@|WHCd<|s011ʿ6;JhY'?#5J!Ƈ?aqRξ}/矏Jjijj O%xϾ/1y ֭[}sR!\Q|+_Ji'>]!FFXزcgqՂ 4Jm7dd5سҟL + гɺC]W[mȘ{p#Ƥ|7FVוHY Yנ=;Ez7Zs|l mC;>>_'̺ z!͍덞eYATf?,BRlh|'*/YY@!/jD;.@mjNYsP5Y.ЁIQ@}7~27261EXykEͯ{o#h}%uP%<ӚKvZ92Is+i&Pu(jx;!@o}gO?/uM8?=~'XۉM_}8&f+bn(ʟߎ_?MCy(^⥏ێ|P0]U"9w0>3ǝ-+{Pkbm$FK/m^ /}왘g/܈^O8w=:yLUj]Gq!<⍘x3s/+Vĉ"0?S72n7~7D>==-g>7)`ӟ ;GG{} CCC"ظq|ƿ7K=]wN;45(T 0Kg=Y_>b|Ftg^dOD ~w(ۥ?Br(غu+6oތ=q^ei#\T7$l+0O5AZ1Z,ҶZjK@e IDAT0g (Kj}jC`kyyFֶUVHx*Rqo_EOC57vyaX 0G9,7?fJZw}`p(8OYLduYiis2mjS3L{ Y퍽x9AgF|fړjo߱ k{Z͕LLDmG["P 4 KV3gMZY30j]0yH<4Mozs9_|1>OJ~ކmksVNnDϿ {QIL\c;p |e7^|C8;]O >~=h55WW܄˷~&3-^߼|'&gol/t@%s~.?}` yܸoWq^st^n_zS,7wݻwcڵx _=y"< +^?2K4'Ɲu y~uBA~\ve'g؞׽uP ]tC1%%uA0Oگ6\|cBQAwo|W"ҮKY%8-o|6:,kEXacuYZP{5ֈL؞{g6y>s %-p01V(kh`x1e~mB.^,.9ff?NcZP{CVv6ڇF#V dyf ٻZسE< H k3mϭu?7RrH[Ȳ@ݳGKZo#rQ׺7XEҗI9=RשEgڎn}RZ"Kcgbe8 ^n^jYѷ4 l(8+8iAl_zZ>cIarjYZd]VV0u47(@mo{/_}:qnr` #SeRhlpAud#l'DP ]Gqcxj.09SE>̋p[O ny'.8$n4q-QN@L<njsB3wj)X3 H~jZPNM򣐅`M\O?+e>io84'X'w4˧>2 ,hA3}jiϵƶ|i|ӽ?}]Zpݨ@ҺJl˳l筐Lp=3bi݉U% gAlmճ'N'9#y-gz+~mz]wht@9Fo~[Ozw֭-Y*Y˗"$h?BfqCtO{˙+G,jt!ΏI2w^g[ H}h ⴁ~^7j\օwQaN iV fVV;oM^ء5]iW 5k89IV3VfV K=i֢mhEֶD G HM6 vWW /߶"Y?O_Gq!\|ڐh7uc`g-+q^|CvqptbVL=( p1LTbi0cc31võq.ۼk$0LE/ۂS= úY/ vq5 sh@zhZxs~v؁G=Q"tœ}{΅^(pRHPp@ 1~@gdɾ/2-g-~h+Ozғz K#nӐb pZ =o]Vq[74㏜^:BB60ccަuR"g@ZŮ-!k/8,];tg.{OֽmhB7ZY{׃h<:+ =%аdȮ ?&_Y}y0F>ʳMmih||jØ[0l8Zjȕb㻫Zp Px_B5gL0=֣m#6[V@xDs{_-'͈\^K}d]XB.O #)G@*.6YyFk`Qg0T<8jѪ uzԪ7$8͖o3ؘ[jTZzmu3RL m @~lDZ-3 @ veh6N3eI[%kd(;I8vIdO>asӚT[12K&Jm9#˄ЬZ͸`N64kgVif 9t.f욑eeRE[ ?Y{K dBx߂m(``@ Hr?4VmZ~ 5Q4 ^S3X6+jef jCi,n/޼1غZ=B|bwxБc81>.}iol$zmZCe8y|Ʀ|senN ԉiic1:|}X\F5Cx#߷g'v3Z !)X}'mgj-ɹ(@{ \vQYaj&2 –p<Ե3qA۾P{C"ޚ_nϙ n3@>̒3υ2UIۯg=#X3X?Kr^駛;Y융J q,go s{*!`dxgǬC;Y}~>Y7®=q(`8S~"kpKRsTONy%"I.<!{|+qybXv :vYL}Q#Ǐ.NtQ(U![72JݸEٍ~lXs/ʥ@zaPAs|CUW~^+v X( ,t@ Q0z.&H(,䑧UIU*rߺGz:Ń,${US;#qێ;qU_ L`x, Xĭ߁k]NP1Y@<$a֬@ 3axdw܋RGkW kV€"˨JBm}C˩72ޏ_)Hb5o6HPDɷRPi[H> D&蠭x5@lG HIW}@!\ZD?HKQ mGͤ=B;4!_G+EeJԵԌz6mk3M}dTmϗ,ݬʹ=:bh9jZ vdbmXA?c[B|J6ߠes P!V8k-B~-&PZ `Eƚ ն;C{z 1"2Yִ>y` L쥽i_(@ۘj" '30Atu /QL!* ؎ǩ߹;;'("56CknFgY?-"X sL7] ss'+Xj5.a8qb SNR ELSY"V1r VoDgJ܇ JC~nټUׇP΋.o;=ތ\5B-ʡŨ?U~Vzm" ٷ{C<\|(|rmVM]MsdWb1Z=ُM7qd.e)9tPz? R^>*vB]}2>(uXE!WE5KSSEoP\ZOokyj}=07QRo{KX;\mXp(4xjMvGlL OXIWm;z,CmWM/N~3jgeڟ{/bĖlMK[:*Lmm%oK3կ9C>zӔzBsGe޽5>gӃۖ{cݷM{/tzȤ5Bgq黺o J6b?}g/Lɥ@AM >} YHqb1`R(IUHu3~d{%sR.E!ug]8>21' <7+,fggPZ줼7;;[m]jeGv/Յ׹<6 w݅j-n%uT\wy Eʏlb X i:;;008>CN>}kvtl,#W78?~60ЋGFp^RI4|VwɝzMfkʨgi^dYZknF&4,@ `"ُv\Z/P.K <IJ،|",åLVd2c繜 ڶaM [~({D#BlaBc5!$\8&ܗ9FfY# *|0,eۯAüMmzsvߢZބoD͂`?tLpüܔUg֙g }*x +X̓pUH 9>үޥ yȯ-9\y#_! R_GH/DqMܚa~1W`rbS(g195Uq6uL @rR6(q _/c3ڎ=Gڋ%qr4'Fu B_jq*1o?+ XOc)~ttv ]wFErqdj2R2ysعs;Y 1cQ C(i')C_{0.TQV2}Kj2"tȪ0BB(zpo6=H2̊[(/r,@Gzu U(aeBO;%ҬmT&Y }^Bf}ӾX?SMKO:{&k[RצzF$] &d"5-eیrؤiQ3Pmq0K]C]ZP?~gQId.'kw~Lg?cB~Uh Q`fG3p7*9zq: CFr1k{+.}'dzoϫPYlC|;g5 P`g)n3AU% LuZD"`hHa$v%3`br2T+ľw"lb!:wwP%\Na6] ǎM15=nI#q AynVڒHRb|AwSm Raņ uVĢ6 QX@yS^ =q *ev>Hq c]2g29 cV쯏ȞU1@O_F'u!UrOTP&fXE ff+(uV XH;/sTRWhZ*kD i\|bjdh|9YJ)̲$|,83/AB 4xZLVz}m]6b[p)V> m@W3šQ#m)! o+b|_ $Mͻaft%wHr9\DM1= 7 VxXB@/N߾##(Wjju4ދBGFFϬ IDAT[ ?7$\,]w o#h] |Rs"8[qyy8u<&VK*e@b RG@_$A# $jI*MK|eYUʯT8rJ]E䢼|/xAQC#qZ> (TK U9Lye`ff՞nT5 YdTPM-Df t4Km>{{XОvJ?VJݧ7or_7B뀜y_3"h>_AC"[b(%m,6oK(~KGlF͞qq7a{0 Y-_1;Nd^o/co ;Zx ,N}x/v|Ԧ6usɟ//ht[ (U S=y 33^)}hnXs V@q^XW[QDn2b79VM4DL^OUH p( &Y@! NXMcğ}M\М훶wqsz{zbJ}nJ<2=6hLbF8S3ryʁy$B~ZۣCoj>obefа~525N?/ro>LϦwjom2=( ϳ4! >Z-V/ ǥl,-ҩ<,kyRMrij*Ybc@ k< K*P); 깘eGXCIm}9d_0&ZMm &pi$ V>=gjUߊ%CR4o<0O0zwkOrB=hbqTA mrb*Iז/?M͓TsIH 8)QkikX~+d-K? n) %l~Zk7opyMroܰ qYUW;w݅{`GQ,tb!thpmތByI5l\g%LN/D-h Fp(%_T(`0[AV 8 , ;•(v(ʧ/_񁭝P@hL rh]ڠXxpc.3b5%5 L[>/-`p]^tr@lSdhmz%̳Mgj]`Ăo]Ua>hౚk "-_!ʼx.H`|[1-1fH{ͷ-,X.ojV}@PtV[nlFs) 6b1ιl#:G6>exBVHl{^h51} Mګ=gUz3.%LXaB2 (vQHny(׏ή1aڟ\Yant`?t,:=]L5S`qMetiMMe\TsYp@قg-Gdv޻X޺0X@5H ԧ;{*co: 12aYP ]z^hE3`$I]Keؗm( JěriA02)6#oz%wBB/|2Th׋ e#ۘ(!?f}i Ԧ6yA;v,ϩ]g YgBחE,ƎQj&XH(xޔ>Ƒ)uQ4;6ܠ2hl;:K쩀Il ..8z옘,)\}xlS1`yv*5g+ U6^NJ~b.2<. %  i;X^ 8UBq t̳C؁5+Waㆵ(偙1Le{gqAci0߇ . ן&mOZ|Ŝmե7=rǎ\yO-_1ʕ9=r]q/ NEVxI-D8KS7R1W15K ԁs01j9?4kE8ئ/wڔTX(@,I¾e,,8Z-SY5AM@;^޺h8ڦF,(QC-#|Ҵ.Kլ۶Q̳ YRYuX+m i?Y*B@UȗF8uuۨmZd a-쾰AB}Z- Rf29x˦8@oua?veRyԦOY{Ozs t4;YoDA>wυko}2W; 0Sj&@pM'2~bT+ :u{~>59{vcllL|i*^. +K*Jc} ֮[{(gUR`ǝ5sLj3!#cgnVے bQ FU G!_-}uvƑG1<:ãa` {OHP>Fͧ|" _Gf i>xc(u`Ub`MN18p`XwRB$A+b)QDWwӘ$a.$}czzF,,f)H6\}JC1Дk)T`T]Z{|xXIbjܰ2 2x1JVAj)UĎ7Ϻ2Pjal,9絧oTvz9QّѼ6ZRoqfZr޲1qL?`L+`hee2eV!znd՗sA0k<fЦVH, ӽ dI`FpJ=FwA>.bdޝTDiQb`AQpo|tT4I(Z;1{#'F0WIxA O[ܜUov KaOMfɽ$uv eˀ`Ƽ{T.Wpu_9|пJ@qOOGNGZa6a|ft:165*069ZԁUkŬm9v_0r,¿`m[(%)$ Oڹ6؇ryVR Xft}9IBj(k]3;j%Ky S@os[s}R8~Km"ԟYZ@dYBfe}g5p @B2\i-B[@Zl<Rc%gbʵbg1qmVf8kdsf-kӦ6駟Z{mS{yo("o ktgލ@\y~@Fy1ϥ~H4qrItR]Z,&'&-\!) >Kx`^ݽS3.4RD*==Xa{@@A4cNbGSJ '$SE謸ڏ| qFН+[*k\ӓSȡ[pvܾ.9ØB\/z{P0W+׽g:MQs4d4$}ݘQV?8t\DԐ8]5)($@})k>_k0HJPHgsiX!)$aIpК!'gKE//ٞiVMqmTmjͷJH֡1?*͝n+yK.2iʚ#,迡px ^Ԋ ܮh|Cs8J~-j['f+H6;~[~XMyJOݗ|dgy{YA-[MmjSџq?fI{~x>*{G"{&>-o"k~B.1uh叨| A[\ǚ&8fg7B£B$‚J;myM͉9x.>l޲E"TR P,aywY"W(*Xp_, : g?z{|bC8 5v~~hݍ);,ٙ)ٵS@Wwf˴06zS?K7z^?~TdŪ5(u}$l@wi0=RO 8s)SJY*oRTI( _jfGf Ht :;EX cMfØϫ}OZ^x潆6>+@b l_qpuV\-y>`tQ,q4SOB A{(xvZKo,YuHjnAd@DU_NVxhZkkT4Vqr},fAm C_?3VJI˵%.HHZY+(#pb=Ԧ6Mp.{[= *^k{H f߶Ƕ1KH\] y`*ob0<Ѐ'Y y|Ǐ}`Dzh([~wbxxDtpJY@m5J|y+ ›D)91\yV5"Q{by+Xhwҗɩiܳ{~6; ;+Eܰy85߽#'pɅ!q!03N1q82=oKp˸D q$+& 6:D(P@C`jr\RZ)YVE\<&OwJ1"䝜 Ry$ӂ$ 5w^יP@bBWcLJ14Ї~)Oڔk"mZHϜGEXa:2)<l5O> >_9S`הcjA`]l*@8: ~y bg σ]<pHq`#APg!܈9 i:|:v^{͎ t)glJ93օfRw"g/-'Z-3f9~}N"}8jFmߦ6)|h&(JJ֭l=cYuW!# YXBC\ b UX6ٻG '<)_qf jIZ<ށ,ZЉޞ>&B*8Z>xi[#1g>ixSP*ucڵgoޏN[7_tVK~lZ7r+FNBʜdK`5Z@+iфחIY!%J#_58(co.NOaKSJD]gUl75$G!3?b_Ԥ #y. T@|׬(9s9cͭ@wwwӂ MmTZ= Rcc 72Qc fZ4׈zl1ONն?Sd|r>o56nj=Kt#g2CHsoMi`l_Ǐذ=SSSҾm۶OM7݄__Y(n\r% .~O ؚ J8gwu / >CSo~xғ$"0]v=[)y %ϾX[n tYl bog~;T͗ű'?\oﭶf8ei׳-3~_=QZz蹣BrhȺi;9'Xv-.byĉ1<<>yXr);w+_ ^rYl/K^E˱ۋO?rt뭷?~7^c||?e~Յ<9ի>gG< `VZ;Cm3r*߿7xm{Fu߁}ٲNJDq8WkUIx#.iI[Qav }p8oXe$TKkM UqSOiB+d 5$;DdWPm>=Lȟj]@N\MRB:tqyk֮CGV&Krr2r{@o/ -l4RRWAo[-Mu[wukT`[@Y TX UWObƣUjf7_~W#O|'V#sL?.~k&+!~) ("??=Y,1@R1n{iXJhlCzH$H}2v֭[\Am|=J/ ړk_ka`"is=WqWs~_0}_\ڵ eiB}hIr p7q^y|ZBayGAٿczzZ6Ok_Zuhԟg<_QC\z׻}26ѿ}?}GIB#3422"wN,[ q?~g[y"=w=OOxի^%c*N^\N/\wuu A2] ȳ}9K~a߾}M﫱 IDATF V{>te[U{Jk듇˿yor-P'X=ZyB0ѕ+CgCX$91M瞻$%{WVR S&|2\$:Vr޷);+tOۻw/*/h!𡦛ZJjI/Ss饗-X/ j|=ࢋ.k75@vA PAGNjׁ4i:/2ʼLX< >,u_,'DEdT!0Q;:hAA;aߨ&["Pd8vVC7m$c _E,} /]vقC9WZo,S>>7Ǖ ƍ!vQ6Z`I&۷3]6{m":zmQb\|I}e8\в,k MAF,mRj53X]<9RW_qY$ب\ ZsUjy/{c{˶\e=,ǚuq%cyf ǝuSSDPwtBD0AyzֳerRal ǁm^snj=w^%+_J??9S9&ӟz Se5ƹ 5kss/sOxu+ /~/}˳cCΝ_+ x^җʝD>x < lb{9^ O5:s (P{3!s:ul( gv_u G[|GRV\ؘQ72QKݝ`}u~o$b$f3#X>_7F <څbGͣfq{ N#GFu(b=wbϞ݉ y-1cBH|i~bgE ~b_[Pc,`0}rlZ'PM4ڵ:Q1z4~7p3nq+YR3 ss]xp"/BTsCvktQ̖Kl?J8rx2PKy 韎8qxcչy_tUϱcɉ1 BMlDInɩ)\t nʔK,€(DSI((g12<<6c{횒:zh[ՆD͹ʤT+еZ(Ӹ6`(A { %]g;[+!% oE[ojiCl٭ mШ4O2 tp6Ŀ( M׽N!@τaPw jiLooau!'M=2]d`|@կ>Ʌ; j,1dY7]*j_#?y&cB3}??, d2 N24+xqg) SGy*DL J]jLﲟ/)! adɄsX%~_._(`//H=o}[n23%$g[__dzlk~ 2d*`Od-5Gƕ)ͤNǎ}| oCAFks@u?Ly򓟌8 Ǹ6sGXd9k[ji2hA~!q' uw ]挦l/\l_zǷ-2Nkljk{@oo}>0kVA\C2 玠&  B\/jU 7sS>Ϲb˾\Ḟ//}l'ǝsT(rI(q-sN9V\zoWC'<2[pN jʹVg?q(d,h}]mFH}% `F{@4S:cׅ.D)_6qG? *Iܫ^2kz;#㮻-uD>X]x=I|懏{$ sGGGFqb丘w:,Ƶ!UŇ(D׸ \k?01;ÇJր 7#C\Qk_,x{Eq#XI~ՌՍ7&1ưqJ 5 |vs'swmJdq8o7100^qՈH_Z/<*s5ԱO8I7({AyYS42?2$ X #&*eԪsbmzvN]"˘ U<'8W#Ǐ`M]& պCJmm?怒Q}aЫ_+0&zQ;_; ךi[AN:ײmd#7"@.˅U pPYjqq;L2} v|Y"2!d0kd9dnȔ RSj2, =i@!Km 1T.]SlxsdrWJ0`\`Ȝi}cuABFL5d9?#c;ł|ﲭ?Ǒ\f3.2`d,##IfkK Ԟf 29pcy}#H%'_.`B 1Km3rj4|0Ϻ8\+,̨U.=dJ㼳mXpM/\d @&XX~yHgg TP"`%ȷG$S@Qg}G7Mlsf y{ы^$o`k>ǏA749ǘ;  \\'/S>6r}zp7&L?A s8|mgǚ{@cygm{*]NA58G,N S6 -5X.-l?9f}zqsQI_o]wv>.O > pr}?\l'犂s>9,Z˱b?{gUun{f佗JB0 j$"ł/,EUT J`$$)oz?uκɽJgf=g^{[o,c}:s?gk/Z{Mւ1guƹ9p7ŕ&)g& #8'X>sB+{b]~q2v -V#Z\>X4Z0_3/xAKiڮde5\QX+ ŐJϸy=EaJy\ɇ1)k5 g‡߳x7c dQؠ㙼a "g&2.dg&[k-0/l/m\1=˵?N.V?V>]g1q )-5rF!h!y Ъĩ򮷿M7˻.}}|rq;/o?}ZDA3ifG%UT9~TbU*m52}[Yu/{*ew^PE!; BN mdL-?(\VFH!_/Dˋ>YgWi6? J+f2{r)8}J{[uQ}y{, _t|8+' 9 uvn.IqemU}1J>QW|!/+gBFVj<{\Ł]~|B;C>TRg0`i} zz7S&')|&r?v;|C!&@ڼ1p|Emti*,˜pp+ц.P X\Y?<DxVXZ cgL|7@@/ǵ^+I05mufveXK`c.0b\@xogO_ p @`=55w\/eb1k-ݭ%+-Yw苲 "`ЂP pА8fxPb$.GEFfn~bXCxxHa|Xgs3PtW8{ _`n</VMk yZB_<P0?ԇB; ?ddCs0+zt$xE7+({Cڱx.0-'ỏ|Yk4sZ@_;bws!2291ޏbw1_iaF&ryY+W5c>%D|cZH ՅEY]]@o6kGz-ҀU,$7W,z%y̞?-kͤeaiAsB>Rn!3sR)J!W{.s r5WI|FFdOju)Wzb5jѺĉҙ.?(/5KSV:hmViyׄE<~Lf]RWLђG%,JQf3o3 p׼ q3"lh"@$~aaY+0qu(@C]]Wd\ePɖ%JA"woY `ޥ߬>yxo!,c/KDzXl`JXʕ2˞mv0sǃkhB:蒖 $R,C2Z F X^Y` k"Ewnv'[ŔHi y P8+,xdk v k,V0!!aqL`S^seK'>+$=_?ϼgO[KI^\@5\C$W{y 7~|3vbB!/,pWx3C&^F nP»,Q(?V\ ʛsPؼ=@!uPo!\܆VE@ؼ]$tA kXq? Eù5[(0F6[oU ! |.njcIy`]"<֓uf<}7,>|SqXtITR:hΤ5#g%L&^4xu˃S} M!ҒT5Up _ pG)=Œﹹ]ߨeaa^kնFK+?MZݓa}|łq/Rn֥dV~{{Yً7Ż!86T4HZmK(2@kBkiZkf~Xb0ŋ7Brb@` һ2ƍ IeOX?")<*aAK\z{P^JK|/5dLP5ބ,M!$Np1?XZz%-Jv3֛A8s tjExvފK_TF$.5f;;lqf|X=f^s4>ӰΙpu0x4`-'0˸mx X` A\<]'p--:XtBQhq2r /BsB'2zkC@'/yX[H`~C"_%:9; q o³H7^5sڌ J YS@6χP` T%<5e}+,` |.q 4[i`og%sߔ?ڝ<Wq==xk&篅ɫ`u~7Zd|C7 CP7~& IDAT`\X aovw.t/ySb0_ ^jg|cyFss*]x>ˀ}x +#ˑɜKIO횗:RI;mA e?۰Bc+"1ĩV;>k8`U$#wecҒ'L)adjmqzmM={{OҼD2>󿰴*jMA"pA~O8zzzuϠ0Pی(6 yY^]l$C8ASKUe|r\<)e9~?=.w5~MWSQq+72SѠV=2<:8$\=FHGh=NSRRճiFN146xU9P|U"a 0u48yZQ3|Ww{z4zϿTH< K+/˚*aԒ(fdF̭e ܶ>~>tnoy7K 3h~7oɵmֽ)%9|(H,'^}^ohJ,6aBeBd9\$sR!,cEuDaBcs@ ʌ[+cƳ#a֎Wx+/zo<ͽ5= 0 =@JN4,5cX-7d@*.ޡP9po>,8nih 7%?ޝ}&HY hX_XIf߰(I-b7:ubzCW <{1_ f߬%[ր(xscfEALy $ddt  7?90?KG5T7@  =Ax|<xpFv{vqOzw'4_Ek?d6g"<̳Q>IzX;]{bOX*?g5 fתt, {=ebi$+lРe>e䴁7ܥocY *oaD(kP 4sͽxo;|s8H,j wSY[kI]Kʠj6~m7@}n H'1r*H$ VRAKb :3=ﯜgsMw+Zo`[8‹7oj"וxpa$c%2R[/>0ȋ("k<^ZEղkfoH|'Mj{kEFe)OX*H<gx:zVId¨܂,,Ij;[^Lfq 8C [<@0 yH d,@ sXlcEDŽTJ؋ǿ:Y'q5qk?ZqY"lN%vc j`͝Fx:YwMp17eB%ffUhtj->;gV6Ք+̍ݗ'̠|an3-}[΋l9}d0;S~ ٶw #̒` o oc7[ 2`\/1f+]--1yn|oAu)L1zZce\XBaɽ\ !o{hi{`97&vA;\b~xu$X{AI`'Qd0KUF6~\QX>j|;O9 7|PY9?hjsy߲ހee%Q}h1_{84k3*<;PXh5Le!3@ 3 ˳c^!%99>5F¶τA࣊mQlv r!eRr"?ZoV{v`_o.MSi/z lւ_%mJ[*@oQ+ LL܂fG[>f!Xy Guedtw;v.SQxhDP-߅BQc};ezqE9%Z*ż[>jZP++p ܌*QS'ȉ 9u\v`ZF* +-?#[(ȍI~/!2kdlD>#W^{ܽOr]V庿ms-}2ƣ>9*y87'bI'ˮ{54ü&OysY?>Sg}x=tH13,Q IkcCg),zgtrFnƧtG[_;+@{+%,$e޲ꁂj灘@/{1k{e㟗T^p0; ]46aٮsIJ* {f}qܼoέP`VSX Nk3Z#YܫN-=I3kkRN?wNID??rf{^Ċ1K'{'2ly'oᬪWl 7 .؈㟥V]TxÑ.Rq">)țB('G;.SSR ʉef~%w(gRBwo&z}SzJ 2<8";\"33SrqJemMXi) ; Cc;3(Cc4&k5B$ Ez5$. %{zW/'Rtwzz]0 .aLIx/j9?@e_!JoPC.Ԅ|Tdb4Úz]rI u?l1ydsٳC=~:Tʚ}TYRհ@0Ϫ?e /ٽG&OK) -cek܃h`P垮,`zdu}M= 8P47rl&VP,1=6$aelp;;B gn.xѩ.$v=L,\SXL8mIlI$vL&g#S49+yV;fޖwD[#ĀX@bCa,TŜЛs)4\y J8#ȣk[!|њ}AxJ7+<~ޛg^D5%hi>FAm,ϫ7VjLʅ4{)ո*'(Z6/KkRյ{_Zq1fJ2[BGCzZEղd1d]/1^hbW$_ZqϪN(T뱱/=}jfJT:+lN^>3%lJWrr19pˁtTIg`@VWeuuIrЃя~P>s>xղc^9z9y\rj2F3,sUJa,ܦFo  t-6{B;yh=w%e}P}ur~l=G{p]2q%r(C {i;ݭ|@% 2lSjyqajg f"sg6dVDu-c`B[y fx \J1֬{W4x0b.x> Kjvܿځsf@8i|5ObZHu>٥żN!p  5 (o֘ yxŞ\IIeƗҲl+GR T ;q? ĥNK:{Q_ʪ l4[.~hS%{[្oX}I+XM>"#3s$Kc%h#ਮ? f]JT&{>ɑ'dڐS'dii^ף$Ѓ_译ޗJ_bqgWkRgckCX世,v{aanVի2mlY IeRorUW˥{/GɃ|IG'J!W9r=>Ȳp_rVaҐB!/=ZaB{\r*}Gd E(P,d%>veELUi+qS@45)5Pf%KQ{Tw%2;{Fv)ϸ617ȶQMg];w 3Sץy~Dd)VЂL!IVh4'%4$|)="sЀ,bWNJ>JSߣJIipptǵr cCC.dp_Bxmq!+WSI`brjjg5dK"F[VOnƛ/!Y-q{X^Y6 ^DI d21vTHӯO,P00b,;̓?IЅnX;߱v{|χΝxu$C#<͂DʼnvM~=g߉~axvʔ+) ^?ޫǻ'C*N[mվ:څĽ[cm%ؚ)֥j681_,ZZMa:l،H RTtGdTKE0 Sm .c`v!_$In1􈞚V!l$Dwa(۷;%$ZC_y۔zTԧd'`h`X3ɏOM%G!hFCuXT5w k s֪ғHiHcا+)ۆI2-¼2?;#C)X9|~)$nAٳk m9DUj@:9qZ7qZF(+x-еi ıtP$J3 %MBXKWB][ s֐TwRX IwW.`8F-kkҕHࠔQ[yA rEȶ#|IZߒOgz!&Л`n!Uy$ N&h %HZ)VNnMؿ8L&ٵy)Ҧ](I󱈶Ͽdq!h~>tج%-O:%e<ڶUT5ft'g'Ň^= 8_Zm)Vj[wt{]FR",~ ]?oH3va"@UԆ*3 ԍ8KV<bhLgd~fV=h4dRixXFO@f3ZM[_[eq?me-אRwk SӒH(ǎӧKƉL4lZ-ۍ\kKrk9LKRaZVWenaAպZ5W*-;ƤG hiťU]^jb =RVۡX˶1иɉ)YYYz(+Pl)c#cen7ATԐ;Fe~qF&'4W@ֱ'^ ^zU z1Drg#'$GJͨrC=Z/ьf]jպ* RNJx!y6k? KkZCyX,29=+GFfKUj[ͷw7AglY X_oU70oqVRؘ HZN-/ amwjA"ᶋ\ؚۿomIE#byz'd$`OiR+D| $?{S<+#څmնڗmZp[>.)n`fdiռ|D&8IL)I YX\ѝMG%{4#~6lswaz,[} ,Ye3)Ytr˘& qWCxNZ4@kЧBdsENGں Qɹj5*͹cNVRxٌӁqvR4BI7$*3ҕi}rIYTWFGGTY^e\J"j]VV*N,JfCF-* p3rԸS`nfF=*KRU1<:5X,iRHaL ,劌D2;)kU z5WlRWKL9e|I=Ve4~Vɓ[q.ĝܯ+X\{:%yssc|r־/YZ^,Vt0M:H^gPw!RA yAT5N4TJʪ=~Tz{Ԣ?48$^5ԑ>dc](]vPA1`z~aZLNjmz,s$HeT󨦛IS`?=32X'N5ޔeWsdҪ0X*APOA|ra޾} ]rWuN- ^939?uR.%J 5`+.79Ͱ?84$BAr|!Q40J0U?j]虍8DyL"@bXzK=2+}Rwd%^=KՈ3 0 q -.ʎ]jJ0ҭ޶m2{`oP0}&- D-AZ}\o3JmO[k_.a|Khg>Lov/C! Ӓgkwu o)x-onk2BB><}7َ_|y{Y@PM0#?YyӞvޣd]'Ȉ Q*@g_Ɣ}CSS?SYyϤſWI2ĚW}9KС ^QɓZ+L;<  @,K^eғRo~-?яz_̀}ާ b++? =:_2zA!Ox:*[nQo)},OySljhTRQoT?P?VPk^rqp_\Z$ fMTʶA?-͆K]Re|T"볪ZYSB>BNZ ?Tju-Kأ\6.ЕQKZ9uQ`H-p:! "9媖Cy@l;== rs.ɾx29uF5!Fd& F31!8 c٨uٮY  s r!w]Tξ^)$:$BeT9Mo#K~q1BȿkltTeΝrrrFCKJ=JjyUr) VP˲^-V;eBWz,/Nހ5@B8Y}k,| e`@րHR)!\8.OQOI_*2ߛԷ&.zj 6.g'P-gffZʔRF2j*sȜ8qBm6$?K tyu]ѕW^Ǐ3pcG=JFԬ uXѣzIϰ^uBú?V_>}Z9?ܟlfttT_^yaDH=n+* #%K9B7h }źA>u߯fӮ&Ctx.o=q.cRp-ϴqNOO˽ޫ;Qx|/Q&:B*8+ܹS1=x}n &$4t,χGXW^ @珇}@k MNN*d' }C:υWw]o} υ9mr3=xPOrBc ų=ϰ' +L+ȁ:1;;YX:>RѨ*NM)v,329yJ&OKWK Z)r2U+5+dv~AVWՊ?Y7"CJIL UH:k~:tsM츁9.X\\Kᴆ. E}gͺeeyJgx>U%VjeIZ?']cl|f~ce+f h M5g6\DqKFmle <| \sNo8WK&" \ \nڬ+_J]ɟTUwC~GT?Q+5`Uz v /YAE ''*0"Dп;C%&%/!2rWuSak 7 #ȽT]-&a\}P *;c(5mo{Z8swe̟~7O_x<q"l}~Jia:⃗uoor+ x @y睺N~Up(;*cLZ(__@ۿ[B/vmJ??~c1}3¯1:C}kUPh=#: yW~#_rys_@??qC7,p</v``2yOr:c[ 1 И16YV00?Q:1~oIe1_֚ua˿|77#|^卟w~w*. |>/Ї겏ܱ/WW[ 2EWQ&c_5mc<FŪDdzP 5 ` do2egyq>|w}ynЈ=<9 ''͹9}{ӛޤJK̸ZA1@BCߩu>&zc ?wl(7??o+pӜ~ 늷gg|ʜ5%%k[˛oY94x2b 214DqvsY{SY~d|Z1NX|{{߫?Gx:}c%g/s+shMMOa4{s3wԷ}۷s֙usj=М8P)CKnA;/_՟/ "w3rh!{%LjR+Ԅށ>T+Q Qa . KFXGIUBLC?5>j&wjYyRѸPVVW%\=qHeYTdߥOVuܜ{PVpBbWW^#zPVkMT\U9tHMФXѵ @*ĮZEVMTRЍ2eS W+nQ?v\&&eiqA(ӎ7bwAm1ٿrIgrqVVoT_ZRXM/iJUw!ފ.Z!ZU4ZUVe~a^| Հ}0 Ӑ3@b®Q4.2E6Y޾$CۆU\VJZ?lUӕ<kӛrl)V1Xw}xmP~7k`=W0QB|[;pngοPdG"{~A3B9 lQ &]re `!C #t珐&Ilӟt}.6 \=y W|'"}'f!,x<~:ư 0F+^<& ,8AE!3F<B~`q@&tf+7s@ ( 9[>^u @>,U<x`az#"\o՗K_RДy1WRaL+83ߏ؏i(I # #s2xp @aф&(?0"D̓O xßW X75e t*sS8JW:0W֌Eh29~Q7n۬??\ڞ /=Ȟ)` ~gX#^i67@5  c}~g~FA{f6α7/:g V_,χn(DP/(d=Ql" HLke̛3 X${ ese0@>?xV #r3G-0#"{56}|ggl{(n?y{ss /x3!=?X^"]=}r;eok?z>BoEZ3m֎`a6799'y٬ g|7|*8Cxgpw:Û 2e 9hx0fƭvM]qHZi|Vh@,8 lMܫ-:le[Ņ%Kg FrɮU=!aݱcG~?Mo}O˧>I}-ozK&ޡ#GennA2=7#SSrj|J?.3 2,3Rk22K#{]&\_GwȩSrzeVM={5cM)HKk-_"yK_&??&Ϲ9rokJ%{^>g&?(/ˏy<1aY+wʻ^yò,Ǐl6J\^R+7"VdCCrL (ݮ;ee]+_{uOy^y[*}{erb"5 =sO֠.\zɾ,%"@_}40!tr r= 7)n [ ]>$ޕ߮1P7$@/q{+}0QpkaRoۿYkg EhAG*`p\!R`ylo~Tw,%>>P\a\{J!b= (cZȿơYb%1a( -0,]ly.²YǼBal LX(X(;hfViCZ^h!a< ;en__T C, zCw _\,\MEW#P -xXa`y l!?kxB Aiγ{Wۀ` (\P( 1w~R@YXk0'7铽X3wg cL ujVEⳔ1Ԁvˇgػ5v6_0G/q,@YfMЎszpxo$~ >_ypp>A)}`7Dh ?̑1p΢LaĹg)k8-p1dru[ C[ ("=9 =@x8!40OOH*y>i(#Ymsqz(eh˿+|@Q f_zf/3O  ۉ7AS89?A=B,7h|8xǠBȺGRE`Z,?R@ 6@(CNЊ*&Z^U{ٴ `a? dyiQ-upV}vUނeKdY\ek+/e}j]-Ė^.O(rh(JFhjbLKrٔ^#.L/.kfB.kHڲ&c0JMGdϞ˥Td Ut45;3)EZ藥в|m߇r= ďȡ^.H:{{UFe](Hr{$K.y}|>iyR`aqIN8]lJEpv5 uꚆ{ @D@P]*\z@cԪ]s8~%Bbwdb̝9#C; pTGy o(4Q?RQ)tJնo- cV,Β]諱m>= |AI$%[M|v/O{f2ߩ1O̾?XϻPOdityʝj {"|#4ZAPόA C|'c0'@# ʿ^e-8@ +y <AK^ KZC!a8Y/Ysq^ .ZnA!nXKK* WVh9ykT9J% Ens c1$F3 RZ%ܬWY|5J x3ze?53< }qagܔ~?16GZG[3k^쉓Elj= Ao~3z6v?({ΚYg?@ /`:?5x+Y!6>_jף˿K=w+akeNky1z' s }I8x]> ?~Kr"Б?sgyc@C1&%sTT@* >dyq^۝yZN?*3!5 (ʺԚeZe99>RdtlĤ5(]GvG?1Jj*W$@9>ϕʚlRlZdemI6{,./JUȈL>.뫋?qЩzl Mnr|cj,Q޾) 0V`uyJޏ>e | `29YZZ ذ FhʶX_Ym%炌r]sj~nN?l[ʻK6Vi8CP,_Ȕn@լTt pᄎX ot7I Xwindyͻct1` +kοl[v'F^#< a[<%̭ /7|, 5@ ߹3 OY9S-} iG 4k X{$]k dmhkc8"nxAy> h@Ŗ"PbXӰ6?왦 !Exƺ ƪXxӰ2ggE#<k<i,1vl'!x2?@^)5ʒ1.?b {~#<~X8Yp;3;Q;7XCxшgN|), f}rr π(8Xo((6X[<K8<ǚb=8û&;jހv,\I%| =8@CaN{Sc_3w ^" x4g#c`>4bQAK% Q,k_v[,MIY 7sA\ʗtzW+J7*x5ET(d,$ߣZ N@̘i)RaB{Vγvw #͘|+>ǘ4?]}~e"jm X?' u&-t?'  l?4q.XE)*hhoM굪GQ2@-I }SFZ>kGGFT,)0JgwFK/u[^zWʑwB\yգr-GFGUk{gw~䕯my_$/|妛/ՍwV;ƤN&[\Z'dqaNjHyi^VCF\_*5Y\O{򤯽I|kFvn.'?*yӛ*oy|/s;5ٹkXjxu'ż;~X°&=ݚ0HguowyYUqg`̸VJ=}ZБr9ɧ>~Lʻ}|?>!gLi@-nF@©3Ӛ\p~i% h64qO@XޞHkQ' _<3+2/OR|SnV{ӬtSۏ͒onV-4 .߾3iyLX1ͽΔ jNNڹ'np.Dg-=;h@m85nC/@5T+K !k{p$'<Pg<ƣh"DbJm܎-5+(` K5aK6PvƁ J&% ˢ-`9σ>Yzr!$f 3G,O5C%ۄa PI+4 Tb;y(WWB#3kh%[(!fS& ?0qo?`X,m;X&ct1FbQzLb3x>l+0/}єg?@A` paL,Q/ߡC(1aU0C|!-(h6E/"}8my;/Mb7􃥚5C@!5a1J%+|#ā }7W|Q !kݾCb1g`zF{M̕p>,Yh^EsݏX[h - bs~k nvs3O1v^w1c_YiR& +(P=]OXq.qYXsA0FD^ChACU@iק;Y3 Aj(ȸN";dWd3dFJ?Z`oّ/ʍgb\qPy0lUe:Ǥ%PA ihv??;'Vҩ3tD9bιRYuF*S';Șwɋ_y^"zɮ%-J]ٵRyⓟ"_'ɕN'FOg?m{>Wk˼)DD);d8Y]y{ ]KZ/~ɸ@/&`V{%@E Z5<`ļľj}H\"ٵvq[K}1{=٘[8/f<`.-F= s~̣se鷲cɠ ؘ̕>)JA/h 7bJ$#J\Sh+҇?X%(y8 Y2_\lP {7~0~P;EaЉ{\Ӕ~.={͉g&iUN:{/4_m4{%)I~֟֬? ?1rЏ ~s,v={~x8y)|rF0O4۷&awnB7Ŭ؊-7E*cfc2ϕ(nvF7|ff)'%t`O?ү͏,珍kRYx*(ɲd>3Iϣ{3|ٕ@1ua7ںٚӿg?}c|(m(PJ,V{LNl,.MWb%_Ynrm(nV( ƎL$_56Gn~>R ?q@!z(fїņ,׼7efvNJ~~RKƓnRǎzyeE]OKёY\kKr 'v){#rR^t&Ş~YXZL(poxgݱܑVH ~ʵylTqV:5ͺ#rI}wd]=]F ;zi59pŕ2}VM ,iUWĉS)5\AIxEa(=(SSQf3Y׫e_)JrJ(211.Tg"IK]UDʛj]ϰ uO]z@E =wŎm?bZѫImo_.rrzW,'x- Rj{K=WCWPv|? $fּk] ߬꜋6{/qN4,$!$gOKZv J"̄7KiAXYZ&fY2Nhd],`p-<_0>=omɴFΔɵ_s_Rd$cb[2 7u3Wv-~xkW\sdBkr$N(y[{7k~9_?l~ݽx&ټ % =?i`cAmw;5=~lǷI0M1w1O6َ/KƏk7k~VV~~s7IN嬒|߹։WWjuZ7i)W\6<>ŷP=L#VJoJT/Yh I3M o[>_%w՞+ .ҁiϏK<u`J6PԴ*tZk U ZX@V gZ`i>KQ@Ҏ&Awl.ſˣqz'9&O8#KdQHQbFՔdiWa/w-GE\V KES7z!'ˎdxd]ҕ1!(xtw~R*u? (UZfq#Uk4u=~C}`yeM*k"b%4)hRE6]K,jT/"f_][=2BM%|As 2ЪZ IVWT9(kQʼn䓁 G0Von_k[a>f>5  ުp&]ǃs}|%ϝOk 9m5ktfجmp}Z3o3ntbQ:Y&.f+B3ïI6 qMW4;$L\pm+՘#.ooe6zʩYtX:7=_pgȽAWrkYX„6KPlІs5dVV5A\eUZe| p[ N|W*5( R H6_{|+* qqf( K#~-XE6Sbc<\q (ٗdB z `Q7*"R4DC a0*D=T"}tېuԬR/ڷKRȗw!;~}x1?VM`:vBq$ (6kqr.%lNvf@wGnk#C7֌0Պ-K\R!LK!-(d68q\i6#ŏ/{dp`P2;?b Pť[6\KX\?^ztF&$<\X\h) 5Jþ^ j[ͷOg@ro?Gweqi9Km.l&653B-&!-VK/nA\!!1b MkK!aO'!qުl]F}_)-a#\l9$N I tb%4 "/$щ8W1$l !>N1N0K%Bݷ~ER 3DVQƬ 610 $YNZVoL`:GV{XsB_o)(;/W0=)~xPٺ^c$ z5H^)vRǧ|V >agK=x[g>`TPY⶟ϼ5HG(RJ՟k+:}EgI/ P<oVu@෹ KmnUQ!/kux\W̙Mi< *HBZ1Ls5g)#?2? W$8u8&I ؍`rVkkTY[岹>7J!6۷G};Cj6ՕX*22v3ssjUkO37}3A"!ABZji}3_Zc[6CA'-TMUEGqp)~*("WZ 8Kh 95]Ie$IƐg># -kp$;$]qHR@,!%&D68 Z @Vc`Nɿ8LrߒƳe%b*[G_\ V&A WmK"C\#F4F1))RHb Y^(?[e0e˴ *̿l[5I)~W#@ TQA|huq" 6d7N ɇ) q$movV'2z_v7Rk:ݨCH8g%^bx&_^Ǥ`6=$&UVH"E?_,/>k:Kk**8:uX= tVa7Շ L9?@5 `*owZ:@@CuN0-@yd y:gQA#ڬ>R/%=lɖ b1&´䅟#Pc?;^7qA'Y޷ tϸ87wt C#%tZQ 17; r05u{np-(cg; 7_[=z{Кvt~HoE.-@j -^tZZv*7J2 KVfyI%&8 =nYRo $B!I 8$A) Y$UlT[d:K.n{[~sܲ}n\obuB+>\!R?Jԕ+E)R ^Di_AnM9skܷ=Ο#x_^c7/\uJ@X@MzF<@U$ [m}ɳZRvr5JгWDd磅ҳm ,x>ʠ^-{ߘG nSCKp2\' -ZXs(11>}-4<\|]ԺQ?@I9p\ GD~w aIDATyt/N[ >8zs2_grXY!b~jh;٧Z?:.f1P, bݴH]EQ)RH47[}'kҫH@xR~de_sxiVt~^faD)YRy3en!Rc5)ٮ=6˙mn ?H_ {O KD !go=H&zMR'۷Óps.BχY]L+ѹHTiDT7ն?>gub۴5.drL} ~wײYml]b^a ;h4)|$!=5V'Af8w'>Rv"!1k9,d:PaOhW87r Vrե *s(a4S7Bf&p Fe뫘׿3C8_!_@PpeITd20aNT/ʙz{e9 Nj+ T}촰\M2 ,Y5+5lu;}zRk< ٖ$[#&g a>`z7!0'8GNjADj#HŽw=jpv1==ᄏ?_߱ŋvl\^x7n`eSN}K_5׌!"~lv:2QL,/<_|EVfxyfo< ^LMMu!>]4 .?s| ;w9kZc:OF%ȧq؎%G}Ǹ{ZѽL%YElXxuBW^a~G@h6|Nl17::N8u0 14O=z#n[oǷӻ L:?D—WkXh{d%jU' x-"Y>J 8N f.WU+r񂲪 tΛpu Q&2`a%,Yop0ߴ\>q2k&|3uHmܛ MMhH2+M~05Dfc=KQlR c]Q$$fggylcѱЄHg}Νc╤-!׹Qﻭ} QҲ?n#;EZ8V/vmh(O裏8p3_ۂ i ;~:.gsu|W}4 T: {Ρ095Ь}T۱۱&,mCy\p]Ot"/eаukV[I!p\Xh{qF~tt(n9;9N8?K_`vfGeâ'{^V "zV=)yJM6| f9.I3Fh5[O6}r?ٝ{N~>{wo/Ǔ'qA06 ^{@Ak׮4H]+t}Qdy_I^ԶAUԛMph᛹y\ֻH֌sIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/hapticmedia/index.md000066400000000000000000000032341507671574500256610ustar00rootroot00000000000000--- title: Hapticmedia Blog date: 2019-10-01 description: 'Showcase: "A simple, but powerful, multilingual blog."' siteURL: https://hapticmedia.fr/blog/en/ byline: "[Cyril Bonnet](https://github.com/monsieurnebo), Web Developer" --- Our goal was to create a simple, effective and multilingual blog on [3D technology](https://hapticmedia.fr/blog/en/3d-technology/) that could be managed by a non-technical profile. ## Why Hugo? Hugo addresses all these needs, coupled with [Forestry.io](https://forestry.io/) for its administration via a "turnkey" interface. We have attached particular importance to SEO, and therefore to the creation of an advanced taxonomy system. Thus, each author and tag has a dedicated page, listing the related posts. ## What we liked - The **multilingual** content support, especially simple to setup. - The **multiple environments** support (develop, staging, test, production, ...). - Although a hard start with the Go language, the power of the **Hugo's templating**. - The **partial layouts**, including the `internals` (e.g. social meta tags). - The **build time**, unbeatable ⚡️⚡️⚡️. ## Tools & workflow - We used the same design as **[our website](https://hapticmedia.fr/en/)**, recreated as a Hugo HTML template. - **[Hugo](https://gohugo.io)** for the static website generator. - **[CircleCI](https://circleci.com)** for continuous integration & deployment. - **[AWS](https://aws.amazon.com/)** for web hosting. - **[Forestry.io](https://forestry.io)** for the content management. **All of these tools allow our editor to manage the blog's content without having to worry about its technical aspect, which is managed by the developers.** gohugoio-hugo-6abdaca/docs/content/en/showcase/hartwell-insurance/000077500000000000000000000000001507671574500255655ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/hartwell-insurance/bio.md000066400000000000000000000004161507671574500266610ustar00rootroot00000000000000Hartwell Insurance is an insurance company set up solely to service the Broker community. By combining **Hugo**, **Service Worker** and **Netlify**, we were able to achieve incredible global site performance. The site was built by [Tomango](https://www.tomango.co.uk) gohugoio-hugo-6abdaca/docs/content/en/showcase/hartwell-insurance/featured.png000066400000000000000000015502131507671574500301010ustar00rootroot00000000000000PNG  IHDR$~PLTE'*%O_$1"/&2 (4,HW@P) -rLZo#EU+BR !. +7)5 -9!-".Tahxm|!;IbqGTUdtYg)q =JKY .; 0<`oDSP\euk{&'3Zi]l(>NM]Vg 8Hgv 4E1[j?M *7 )5N^cr 1> )8 ,8 :H 8F,9 =M+BQ 0B* 6G 3?Qa &2JW ;K^m -9 #0&5 #2%% 5D6GAN0>0; /@ /< 3B 2D &4;LCS AP8I$0HY /%1-N[ '75A.9K[GWR`9E+7 3@7C$3+ 6@ +;JIW-<=O(9-?LXHX*<EQP^RcJ[@MP_@P5BYgSd /LDU IY>K4D"gvUeRbO`!Yg(w M]YhIVS_2 IVCP#)ly'q'^k#S`)!MZ+dr1r3}㍧d-Ss}'**ITBbmX3UajFIDATxK0W *;[R/ EQqʟ[ܺ_s&1ɜ֦3礙NF;ͣIJǃIܵ0ND^hS"w+bh>{IoDDr'6`VހVWpǣF8'D:m HZץV 5q]̹Iv'K%igr}yN(S=!wE܃[렷yOr?>u/1j=ܥ΍6MY[q'흻EEE/#Zs{\ZBa;"$܉rӐMyl:eٓi?frow.;2˥ 9*w}O=r? R%FAr V:Ջܓvc]t#ݍO'myG{&; n;xx2_-LFKT .ŭjw9][T6blt%wu >FO wc䝎Scx =6ǹ=w؇^nR.fvM<ϑ#*J>tLsǧ N?*Dw>n/r/r`ܱ}6U̼/\xE1-L3|W!ƶ))'vNIiNkGyrΉrW,R%q1*^b1;"ٗ"Y~ȽȽ$ɝaUQW_6̡u /9Hp1%/B6z@~D.NŐܡt*ZyvyKÝ䞩߂9ȽȽ$]%wa}sŝu[-˗/Iɍx=bk(&\47m 7N~ix6hժ/t$':}gf -++S>܋܋ܭr_U*5dx7[~h!xzg]$:|<vؓ'vӧ7nsfBh=c9}wKULqf\} [G4=LͩȽȽ"w<鑬b:,2cP |Nɽ!uʝEņ(rߥg/R9]H:gWܡņP.;gzder(^v܋܋ܷetke;80B篬U$wAŴU jvXɝS( Lɍ_au5= sxא$NGGϧk]\#tQ`-xҺ];x^x#;=@צAbץMhI;n!na܋܋ܕܷ:eԥ(r$nU|!ɫbJ]LfR4ljYsl݂)wn~Q١,Jgw/50NC;F!kmr@L ɽjeԵܦrqQ"},(rD;ƴh0$10ưo|HHݦ$S2aeNj,E@{r׿d}fYd$Xo;L/;7*g{auEEEJֱ]?;SIW-> } ]eB F>L#"7839NF^ebs A3u?b`6uK]=:'S?kB~t:}I0 IAoa.ɽ YqAnƲ4QrwS䞓!rC3])|-"wH oENpگ!(lbW{{iD>ܔыiŠ.7S-3$SJPډKEKޅve_~ nzM;$eH.u,[sr}P/ACEga"wۖpcOY=&+r?ضL{n;Jf}(vՔ#ލԾ_Uݜ*j2^;59N~-hmr?t`Q+7k?J[Č?ۯPk(vb]?*D ûڻDȣʶ5Ńh}z4o[B~|ٝrt? I?}9TolVoma#^}}dv/nʿȽ;y(Yh30*l5k-xi4\q0==>\nX;(rOf?rv2y5 N56] 5GϾH/,&EEi^܃9. r(fNir5nJ)r/rsj*=Dcb0#nYN} {!Pu7N$ Z {SO섁 _)OxېO?!Fw-> 鲑_^‚* BM! ؈Z`a# l|/:7LW7g&ٻ{ىsבK@m޹[B3Nh[緰sN4S" 37}LB(gc?‘:4"jW(I(%y(%%9pXUA+ƯWpܿp_:(}-mpRtCpҗCr->B,ZKU{q%f=Arܟ@-Ou;9uD ٟƴKNA=߹wҧi(xPYT[&&*.ްW psp_ƹ`p"6uʤ4L1سٝ; ܍wjܗ%h{~K-I#K,95O,mpn/aCg$jpp~h{vH!pݗ;aJ)ǀmwa_Drq)l;ȝ'n4*cD>[$7Nx 1Ýȁ}a$f-BPwťu2NT^E{ʡWܩ*YS;p_ԹancW-R$}ݦ.a%~NSXĎ U;vy7p,tD#Q{t8w: )1vmܡ1ν++ܧ9wֹoXso?C%ƃ) ]*4x_ݸ_,s'̲;p-3(_Ar~)T(g8n2NLӀn;Q;S(VsۓXYZl܁8_:[u7wܹ1y;؈(U|3zV}bӝ6ܭ_c Цp? -+l]V;cSpd0΅;3Y?r2+kcNB/ Spy]qiW{܎۷w]Q ν{+-Av4&w6fsP .ECᷨ>] 6{]߹SUg}6'E 2u:]ҹ# bGբCFJ*`⪻BӮ0#woBĠGgT'pW^HgܱxL*#QrMwCވp 7DI^oa}{{N] 5we% CKmqCj"aW=w<Ǎ7f۩sOt ΀7Ŷ\n!] 1s½½l_wM&|#\V tKeq'1G{ ~lgqȟ(p\8P2e`sl(kx4:^| ׽sppp_,{wIIu:`w^ RYiyPX٢c?YNi ~t ~Ț1Ox{X]ySȬS $=O-g ]q~½½}qn~L=ܴ w:T+ܛsg\cbK3:3NINƀ%U:~+9 ƶ⑁6|; t;^#d;Ew2Ku?dzha79tTw < J SKKywNd*+kDz iM6ɋ: ővqZI_(0uRj8Gw++1R 2ܕ ^ڗG--bN# I{EJ-=5AVW'pܺ `x ħ9(()|]w^U%Zخ,J^~0a0sЈlfЎ4cv{8ZvcFt-Nv`p'ndswb;52K=U½p!ZtVeg;dzH x9ν:pV=i2<2UawR1`.:wɵ,iCs9wf66 Vz=b]C+ XKMţ4Wz_~oж]T *`ܳ6:>!yRQ;XwKyRZvwr-ap?$a+1Ewq}GTmi"\7h,fdiҧP쒖I Lv8{p wX?1vaAr2b7{[`T\wY{H UýJ s[t;Z |)ևTCJl+&4x14Oa:/s߳g23y% p=p wa{go}27Y"WpV4ðhz1b7.Y/O= S = pw:wmq8wf8g <\;Giqt{|Q+cVW%BVAQ W_;KRm Ȉྦྷsòg;r2odN'JpgFb'8 ecPIpwW]p/:wɻncp͹ۊ"#'3WӹK%Hi]'DGW'`˞FN{w}mknܩ/2e2NI3g2[:w,fD:By@DŽt cڻNZT-'=GwvO+ ?h  '?oB˶@4 PxD{ ܵ6${R wo%óT瞧zYT"7jf:_t`#sM}S#{! 3ԑhkb9,pwg'u&uνxк؎җ);31 q;ܟ3ܓHHC51׹XPrֽX$t&t?;=pw? ?MU̸sג{T[wv,.;x=;?:Գ{=v6:_jJ޻D;8wwKQ%dR ={! 㸗D\h[R^y)PK炍B2^#ْڕ%.${(7rc#~xgf{Ξ9/n>}{p^/Qnca2y<ʄs^*/T *ZVUޑ\j>wNrSCe?f룠e)܉#H$UV.JqJvz$KLPUCI=^IZwp]^µSdP_@u=2 =vl4oR!Çy9ysrݘwuw^:ý5,-M}١-ɕI91q =qNL? pMlǝwt]݂\TFB4_ܫVthJJ ܉ytX&|w-ÇFLHluM9tfOO:wȍ[~]Fyy&<L w wp/1ADguAQ<[+DdzssúSUe qTߑT6cpRXpCj(:,!eMR4w/bHZhd-*|}x̘CW\pJX}D^Io.S"LIO, =mY1sֽ$h,x~;\[Irc?\a--Θw>~o$wHG (Jc3zK4;9IMPݡ!#W󥦄9{$d0ܧXѣv=~W{nhR]KJx(Euro*H>5][R/`G<;ν($nAkc҃>Y]sN [QO,kU<so9ރ;Pd|Aw7Ԍeۘa.{;vҼN=zv?qSǎq/½C"12aaSp4*#>[ NB.#[FV$^tʀa w wS}ʞ#G-Mq[;N' wW{YM˹SIzV:w@Zraj).+|S\K"'AF9ב\Gq)QnJy$ȴQ,_>r؁.=5ꔅS%i %<ǺCB4IOD^" Lн)B"0D+ř`5L߱7rb = B+ܯ_p w\C,OtlyY3t#+buDN1&лjf0;ͤ-@{1}"pRu%tÔ~} FG-R&iȁ#?tg/~U$wv.xWl:Y9wz+n!OcpWW;xړ ?\%ClaUCFNe=n㸑cǎwY=cתBLݐsP]] a,Ĺ/T\uT 瞅젷M(ݐs|f!CF+ Ư\᧽ZuaZa'Aq> vѷwlͺ{!{ wr׌]=]P']!eS7ϛ6mڈBa'VzZ-Ec ܳ N>Tΐ^s-*L=,mǎbM7QU˕wA(]`o"1:MgT'O T~x۠ڼ4M+Ձߛ'.ǩY{DL09f F6MpLJpO=9hlWBn+ywg/0s>|mhW#3GZeKzMJo?!/x+q)tt!1==oK^EqR o nUoLjQS-Ef>8;v{~ߵ_Y=M6mScESܱ_b񱫊ڹ%s=[Vacn>*Z ;w>ܱn=UN>kE5!p /ay9% 'aX&:TK=4>|̌O?| '9 q;❯uhv:ܷùܼUp꜁gd觇sGѪD&ۡhρiyŲ;`4 'cLd{_ڽ}bt&P_!%'^\5Ͷ=:=?9:ܹ|+*sOUוs浛Y~|l^ z,V` &{t7 ؙo~{}P{~pmG/]E]-7vtt -RIw;w TosUs;B1Y楛Wӕ`,Pr('j%uĉ_~Y\\_fa88~|eZ2`X MBNM{%jU!dBW4oMcDܧo\=u \hՇ콮v{>p]ZWӂtFcuXX=<`S2J5}|nзƎu48d*Jxڴc1 $k]Uzu,=_,qQ?&cTFUsXsclֆ9PzhiZX9;MꈟiaLD,\w*p[{S@vJ-<@ t4SV F]yaШsuccƎAw-,h Jlӑ#jh]'Uw3p5ik\Z_pte2{a|%3G;:۹ӖkFR(k~޹N:z`TWAt8{¹o BM@~Dnh 頮 y:{>ڨ-.,/3]ծҚ>O_@'n20'V}bR]?M mu}} eu{_к.({gݳ ^(?=`FÃs]qNGV3ۑX3Νmsvp'q4*X-@v`4 Z^ TO3Ԑ; ׉YP8thŤ_jUid=ܷ,4)iﰧ7wվv]S`|F@_7 ӾTut} pny.wܹFtw O<^WDVW>ѹk[b]ŋÄp]n-AF rCdpYĠ 'ӑ⡐ K6pY\y }-ܣ d bmN 7َ_ VcDvV{.ɗ)V@x(2ī(~+I"SBA_{bqTfmt@T  I<442AJQ+xh{ߒ|@+P` N eU9Jgo/ p=) MU|ɛ JTU|ay`9 ϴ{p[٠ZgØxXNr0oi,!~6dTdd@qia;ahƐ0ОJ mZ ;E!^s1}7vtoȹ#ݣeQg@2A#l.84~Ɖ'נכ_ 'OJ%Ls̩ʗ)z'&KTQ(HX.0C@Ȫ$n]չ7D;+w#&d`L a2 mCw1jnƣbĮ4c 2tnjG`l6-.W;;_֍+ {I Nndюp/TfeE} =  1$Oƣ {'ɈpHpi0ET$>k++7xg gN1>yR$f$)..x)EDAG{%W$b)2C40y) >MB90Kƒ N00^[E[Hb42 §3T|p۷qVda9; @}k#[d#&-^'vM=v݀np@h z`X!8P=k.OaaNyj8jR**q$0Hy2ÿZ`@K`!VE CiD5>!v(H}{)PqW<y]u&p pOBƚL^<-lytX2P Z{%%X6sߨinWN_INe$:l{"k2ܣ1 ػ2&c׷ $-RDH 0\ |}";"V a鰺MPh"S!4Sj:RpjBԮrdD7ޞeʛS+'lbfX'RBFx]޴zd w˺i@[C<:]hɻNgr giYfx~?Atjתbr:d.O_v=dWe޳.%&p5~Pg\:8mCZېH@cR8FxATz<qkN!TKK5o(VO5KxEOu 2IM+@mF{&Tr;?fHx3oȼ璟9[ &AE"BUHJH0}Rfgv% 3X& B9/dH'"s\zzҹ?G`ҦpObԿe)a[bq6t~#b;3dGຸH;E?vq[m.Cɠ..SwHDȷLϙ/LR!ѡǿ4}ߓ\?$ "{G''OZINǣxC> rpnp繕 514"Q9fmdN[27)X tz>,6d*DRω_!p̓MV<7쐙K;{y5_,WB@_ɂ///ɰykB'&PW6xtH-5L.j=Z[6Z-S9JˌMK bNk`4umT RJ@se*eBV1w}g:b:v[ /]ݟt|\v w0-UklP$[d+6&N%ĽCu˒ M.=t*)^,]D'U/Ǩ>G{[8P/0i+T8:($ $ 9Xz~R*Nqu]O@w(?녦Ra w6 2p  -ODm\D%rN~E__;a{@/Hmvt 2:FOGk:Z:LA\it4rCkjZCѽ"Yx::& \=pQ8RqeeADYb HEyK7nq 'ݍ5:D ֹٱCrڶyreAh \ɜMA# 3\7~Afީ (ƕ'0Q(Oa!`f0kʔ 0>8h!R{RAOF hu64VSY'Q*5髩o8_lf۟]] 'pYqA pg<.Zk8ffTH0O!3tNbJ5a(XЭ]u m.aJ0Aj]C*QQ`p8!uv&A.$ [Jr^zy>v+b8JRSw,p@5/DL~Qxez%k92!gYe9Mҍ]Hf|N%+} Ad_ i{-*᱔J@K^`nCgn*:ALD!#!2܁ 0KJ*H]o wAO}=F1Iӝ 4 3ΚlMT'4VRe6zAOh8fH@E9+>+ wJ 0Pj76JH}LDDoio[/3/t|g!'2YŒk!8&Ğ_R*?$o~$wXCeU乫B %PshHn 'rJ.Tb{#G )m`JRwVR\4nGκ+޸.F7]8륦wvsgq;wQMg'izs!ݒmGMblh`԰F[ڮG5+6: MJ@,t֝n}Ґ"nyykO&P G| ̈I;bSZ?.wۊ?} ly/_|oWW_{obkt_lꪪBlwP(d}Xv%8L΃6 2!Z4F%Y0_^Y!]p1rO sِ@"'= ",9Э~5C\ 6hQ-qn!%ત#q+Iɍ㼮x4g*<4QTh#Q!.@ BŴj:%XtgDM X??/uFV'4`ɺvvedd,XSZV[)%t͚̲ ~MCMIϽYӒ80{xT].{ +"F"35E .kWx7o?|'.J>d|PQOMbϺ0T܍;x% |9GxLkNTR"3}ǂA;Q<D7M5fa@wi܃b~x֗Y$rä T*1 A;t4Z%hmЂLJw}ׯ;,= r`f%O6>~-,ȲoPvE K0V$9ZatRqS4i8V7r_8|,;"9;dzNs4t2:!W-USR,@6-w/?+Zkc-NCNj,*w|[<9*V%==qr!z_(yi p¦VCڍcũ_6vnZ{sñNjUȠiV~ի}Bi NhaHU'@7ց;9^3:)ޱ^D]<7ϣmX`bc=)}C%5{:[yKwKpݬOX!3-n2cqPTg?bڪA~,A8eѶr59J4 ATˮ-+1U weg(US(%MLu!60C7Ј I󟔻LD%wG6?jGwm7* ڬ6^hՈJS*K]R@Rm1nո0!hxJ>b$ T UV2?KOl,*\!G{ }]]̝plz8%wMX qQzu`Jg5 IS >AY}tdzA;4ڞɒZTDr݄, z2=xrPcc%;{Vy{ݙLLYVUU_ٷroʉFdrbp|{Q2nA̵D_e{b!Ko/Dl{ ?΋]4(ybċ`@И EAiP8#Fj Ih{+ֱI`^Zirƌ]p9v+wgck4_^FSvŪD a0*ck( C,}Qc?i ӟaGO©:943drvӨN;h;+(4Oi4J Ǹ Pܺ :Tpj)j4rW4MxZHYׂ*r+ܸwزq[ Mqc¹^ppRit䮸GᠻfY&&B1K( ܾͻ=JIuZ2Qxԡ[A5VI-K+qV<$$q^g^H^&VZj{ <&Mİ7GE5I.F1x\̂vPT֋,2ZH&S[V_9bhLD 4{Yo`ttC=wǂ;Poo܉r_;}:pnyC1ܼ`KЕ߆!킼s_s iF5tkqÍC(}f*]V`&Z0#[w{Lv &Gyu1p$O^|b3z7y뭷^zlkւV2p+n1~}`zH`v-{zmFs ԃJz6N^հ/rc,J,?ǻ_o<}[hOD^_Uʼ1pM|Ӊc0+$~#02ǁ!c ϐ\%ac0Yz.*O8/Q(,Smz%}vx <-hႆգI((wpQ?~W܇/&]vzWĈk>Z4DocиgT %Z -4?2 w |xs(L*`c LQ'YkW.t:_ܻw33{~u/wE=?&1=Y*?:7kߝ L_8'SX0 ģ/h"1V)v6/}#%}#kSֆ%KY٩i)?>Dւܻ+܁d]L>?rqOE _fgl߀ORh%YY to:V=)6gyjq;s+)Tu"[Ab/I+ۃ/}689p ?g?xOe9%iYOdJM-Mڳ_q찉I RXI /ԐD&T>sT3K?Y+1V2`0dKh("Yqo"ީ$b>]>·ܟa]Nv߿ձrf<[V8 %!>R0JCoz9T P{hF6N34}s.P ik; =;r wKr>vw4qr rOCDr?g<_{C5Oh9UI5vj;/%iG!}S/_iΝ)ve)i˞(J6~?%~lzrO99r,F^EUbt"mrT,Vĭ#d0}El_(ʽ?%M"u=a .{^;jC{9}e8,qy b*YdTM]pR':b qdǸ6?kT&vY%w%n]}<"Ԭ9䞝Z]~=~Pܡ)gl`ݻ3K7U޹,03+K/;v,ccj쵰fh#d݀N{b= 1;/U&X;ʢ\e {apy ~qX\ |PpOy-?*34%X\ﲅʡ>)6BsF-fDYɈV2Irղ]go=+Ne/Er)?={'0BMMI}fٞ͵,-vSaF!Rz ?=#3%exK.#yO U"G.-,&#NrS50wr2mbo^;η%AhW mg!^*̺~dH)+5tvV Hw+UncgbrAV zpMH<4orΞC>\] 뻑y:7ugoB2Y?Ss Ͼա(eE9NN}@m{{?@?DJ4PfYX?"4{CZᚋ={MXHN9>$'M1jr+j Nf~PmJ݉IDz^8C -lSP:&Frࢻ[o ۶mKöNqv@=o*ۛEr^?&-T#Wz`T=sީ i~%C;"CF=4T$Ӎ*Je"(-uz&`%-KӰ  Uy\/Gu\_ҏ >*xZu[ԕ*9Uao|vm'/9蓯ޞqz&/+6,MQH%*~ֱPse~uV Lggk?Դ m"uVnTTm+,0#cSZ퉯=-&)^ .J 3`YY 䮏G*W拶=+O"77xr_ϩ!MxM9} LD6] r@]E3` ~-qTG> E!813*fu:$weCv.4\r^[YEuPV~-d[U/}!^#rƉS=r(5%7-\?NuiޱeK9!A CvF3e3w?O>]' &cM՚#vdUo~d;ݝt;T䤟By*r&ք<.̬:LC{;Zej@#w9DQ޷sSz0,)rl m;mrsjMj~m#w2n{#MôKӕvZFnldaeO#%V_C)iاt ˴ZPXZ|Q2 .Վar_|4VR:MD"t,ˠ^_^`檔GcT֔pɍܬqɍ=379ꡧ/+/]&k^S=QoܞVýd=y~SW> | omߙZvdMs#PIQpmr]<4&zE51_fqy-AbrW0O(>d9ߧ1GPY=Te\ٲPeMΊ<[!n܍h8{ذ֡ Q3tB`]hiqdhjLwj„mVY!wHKgHV(ܩ1w FEATf/_|+O<_W65n OM+&rг«CӗnMzxÍnu_y;r_^q땦y0ՙ7S5krUh +BdOMݔ{v̝qwל|Fœ…?yƳ/xD[\s;SܓsrWOa[ç@1D$E'0bƷErǨG_ɽ]i|D?h J=Y?=Nܺ+C[T1jhyݖZNCQ΃!?ഺlUS~0~;9Uii?e%:anW%!FXd v#{rKP2Dr/'씱rgrWJ(jv+VTXs37/-\ /o=܃M-e_yԓO46( ZP0uԍ+P*dw_{{^ӻŒ3K3R`=?|#ddGjk7?'OX|?rW BI[u}2*=t"*P= I*JT**0rtd%իGH2@do:I{> R\~Q;EJѧ 80QBo2mp hms:͸JҀADC$J7 j Vߊb?Li܂jUw\6;:`ޛ9ybKy6r<d͆ GAmގA-wQ_?6`̙uº$ manλلoo*>oJ{pL8Zsp"=RZ7ʌj5v8rtuVT˫tRSS(@sj*)ܚ'Z6#Yx1ո-xB;S{vrj[@͆mgn~_^w|ǩok*8yr'oknn6kL/2P÷(Ֆfdd>+@ŚUVU!2Xo-ꀅ%oW iboϣu+&:@baRj1)q+͓hߔ4t{oa/$x8*&"0Բ'L$m!0@*—Jኘd+?P:ŵ^c p1ȝ85ܱ(/ f%OhA %E+=![ZǦt| #$ڲeCdnn.$+^86>aL=S ${֙lɌk- "لL9Sz@taqTŃap<-6w)69 U%B_Jqܱ'Fr#sw:36[[]j}ݍ݈D F&8o$w όyn\ݺՍɿ)Z/?P ,t{V(/=Tp;yIgqpZa)oD>wd4=uw4-3-3*E/C7`VV]'jo/;|V"tvǏդ/--NNNIn̮^=vH|ۉ?}zqnDwNI]m* *(_b fōV+ Y{f.uuƌG?qr8!;{Zo^]=jafoCA;܁_Hs w+?&wW>WMif0.!ɒpCO=^x>1)G!!/0@8!Q2ԗ&D䎛ܓP;"NǓj#Tv;>}M.Kd),r ˊ3_055cnnV;L"q5;Ͽ? #!r! Νn8K]B|'8[ 8;xǏ܇;Bha}ǭ Kq{ǎQlB.D_hH4̩-xѝA(frҰK⁣\+4z)h̵֤#Z#YEBM'' L~c}Recpwv)FbQ3cAբZ}1~GInnngk7x1'Vpx[Q3mgnoiiozmBB?QQ#3A m$wW#Aro/GPkFey0(G]J~T] _9Û>;ZyVe"\2ZQE18%L~J18K5KI|=N$vY&D6[f . ."$_&s870PTUᙄɢg w9L72Y]T<)vρWӯ;;9ѰK_ݽ3HE}_B?(;7Ok{g wt1`JxcHZ;C!eC~6b?P, %19 [u] vB>9j0L|1+YZ\Rw@L*.rKaVZ\U[M**FrQ!^ijWLW 4wW,LLD5WjJ;CДԔes$vMɖɹ)vz|ׯ .o׆% `SֱcY͋c5W^mtr޾rcbRJݗjia @/HK(6h eiAXPR[}܈wRGQn%ڹ>X+bg'al>g=5\ݹ>}8r~FF'"_kkuھܮֹ}ZaFC`OU=K3G(E\냰YP\\s쬣RV3 ]JZ&&3=ggt~^em;6"ҮULV%4/ ƭݹ. IUx6W/|~vk$>>xםu ]ܹ)J@>_=cxD8ިHo=N^^v G:sgfYSyY IJGG 7z_H8D:J8Z- ]uR^cP gԂH s#C\)~[1,rOBPbĊ{hl4wec#.'S~D͚|jȽHnc줤x~)T;wCGhbYXV>ƗT}h"Rժ6!GlJlmAHqϝ\$EܵKeB/&w#&L\]OgfYr{^h Ow]l( Gm-#I~k}H ormEMpVܝ;G:D-޺r & ''HYaz7eeJ6;?''??',z߶/דggm_;wO4d}t"0ڞŵ۫ VuJu:2 U¢=%7J%'2[Vf\4 Zk+M]x]ϟ޵Q c$B1:P֚ h'FιK-dqJfZmT{z"]j=j=7LN]]]urKZ#҈Nڂ I*sJ[oqª)uD6 E--}F[Z@Rwk]%c#O\;;:+$NFbojTX-uR]Jzָ5 !jN3AL8)`Go>Yѕ,0wg]ilR4}qZ8Txfzo:.:8W+F:^_&MƐ?zht) ڻw{ 1+Įfsrrj .&0+ν_} ]l}qth]CV6X͇c>'&根߉cffg;ߐuzn/ٛ3encY]HH#,>xDJ9uւQt0~ FjD%[2; %3]&kl+pb"k %{t2YHsURI^0=GX۬kmIyi^D-ܩ\eDz!GmP M9ۈwX=M vKo}^ЌeStq;u]6@H@!|ao|iph [SR nU",Xg珼Ckcdo"wV666%sʹ!999 ClmرrrBBBD:1 %J𰛛Zp۰{͍M `Q,s@sf0 o2&***99= ҄i;# DK:%c(j >^ĔѡIR q@Ёw HAMI00.ЋN*ݻD"{^W:̈́\ $ВAւ s@o̥ٳIh<] Š'k8+0H`0W.#G >"at`^G0dҒv{XԽְDcox%}8z;6YjNvxrrH RjZZ{O{kLS *槕axW1l7V4j@odK$b!qC^w\-δ-e#@5'ouw8 (*d' \$Cq bτnUKO?v?/|D {RĵTT\-8_regpw@tG9h97}yvlʊoُ:ؾ9t>19lꚛ vscdZw7>]ݾ$g9w=#)d[_O9s2+ٸlc31 lljcABӆK+#d7;?[r:߿\B9\g;sƛMo_c@>P no$ e j%[eeNeBeHc@#9.ڔsmBmBrrll7HȁDE$c$7vt{r[[KK:⨙9<-,)O8QTQm㖗TD@0m2rQgg0䚓{P6`v u^Fl"V/I9Xp.C~h+CCKK;>jնqmmQGmؗs iOC6%gDz &B-Rی)uwzԵD{n+Q(x=bJC| 2X125?.ƀo],OG;)CC)i8C!CRU`w`KKvWLO_pNx;d ,&89 s8rOy h.u^nwq T\_ byL( .awג{-(8m0@Yx9 ( / ":rmV a RRjnH ?4$'qJ(<x 3\gkaIaq LCS@^obXM.(HzzTɝUoAh*=;@N@yx9_2pND|ݻLRRϗ A‰N 18R7]:VK9rdpd۷~'gR ·\!t$PP :yIQAynqHz{AB =edۦApT{'^m9sjetScsNu.T/[Iubɒ`hpܥ+#Y]ԦʱX]@+PO^ڎXF*g@ß0Hg,6$",eak~̑'JkS+ 8 9[%.\N2'?nuᢘS Q6'6u+sWC!\6g:Z:&¢zqz\RT t /,{LՄ8CL#>F:#{dvD8#.!x9ډ]8j>K5CKIMQC56zP~+[kzsN=SW Ϲ/{﹂][q/Ods(ƴ;f?ZG] W?y|7l5dh!: Is@iDi]:ßϭ^ i﮾DN'ojS_ah[m9l nǭNzTP|L*n]/ėG54tZK%b#)R\ @(nff~4 H>l;]`R)\C`J n7S  F) BaNNaB?A0%xȻ02nz'&yz 4w(8 .&' I, IhAd$R m"(:!o` KV\JnW9>͛7}-6m*B q\nWA:JBI b^Q*|/<') 9N"9orAT޽0ܛݣ;vٻh6L5?(Yܥ!)2ɐ _(ToVr+򷌡iŃRMFTFɘLlJUpG=[Oc=IgYa3 5*ahͥ+??>(,V"cبέh3?D_Nlɹ%^}YLbTT^#Z=:nAϞ]|siYrZ `AEJQQ!!\@z&Ʀ1 `g%jt[%Obхƭ^ioڭHӾΓa{`Ukk[~:ң]Mcs*B{ų:#5R 8kZCXtl/fx4DB(-pQH6;<lPﲲ2p˨0]ހ7F_El;d>U ,Cmm%i\"@n{<$6::Lv!9CP  9}`13XK Ql;$m9t}=㨙E! .ޙ`4ss{{sz;m)PxI&v!`I 9n䵐WěK@-</!FƧq(,,Di (BrKgY<›ŧ O"݌z2/wF"t(n@7[|pf7i7Íkac0l79 @$ƛ (PY_Y8$%č(Cmuwl2RQElvvDNu_:? oH Cj&Gw$-ӃJ Jđz(uʎ&NܔO+t¦tiؙ4`FrⰘ;rd Drl`q%uؒ'ny3l6{FY& "GMə #YАH䉈kjJ x(Dxe09!!f`vEY-! KuųI6;02h 7 AuI dzBF+H&<)rK N@x6 ܉!j\쐞BiPj@' CS.t ܺu.7o7;&ų`w-on@9ɈrĎ HtBKq<N'7&? K!vUk\z:WeB9Vr'8,o7 KRV̒x32F ΀[7ϻ%`%!wt\<b=ᴗzQoSqP)ꛇCi`JrH  U^61wQ:T0fmsfMw[yǰACPv\eBƽ9q{wq9gC@smmAe+hVbsGD}+[p}ץEG32佸"vGI=lw3dS̏ߵ~y,l!.3pܕjx!ݥ*SшAY!7JSyffFZe"T}{'\ke2H8SȤsPMD- S M`bDkց M)"(0t>\Z:+©%85EYgJ>>)I%aGev !8SY$# |2<{(NS^bLbK2$Bȝ$%-M9^DZ >dK3BA_N%4PD!$+^?J͙DWN:(]K/E(|N߶}͌ &:+>$\b, &,/N6[!+N cʓ *ЦWAlSSCCFMޗqoBuΜ<[:(@[?gO #Gbeb h8%%  njPFsƿMNA98FAeA^}Dݕ;ъUroN hqаK 4Z- dBɢZ(rOL&] ur^9K? IźRT sZ'`ef4=tN-OJ * bUդJ?yrTڳmg0[eS ӑNKc( }1Q|V 3nm1QvvqYpJ}Lj|oiBKN=x U5_PJA涁$AamS~O:UT͇78?)?X~GAIPp4Ñ"2NcEeޗ~$"8/rX5vfFR[kX1|O')#$-(o! $0 CWgxw0#uOd/d=NE4"w0HƒS=%2pX%vz|K힙+@t9՞ K̻CC,>qU+ʂM]Xx8wt542cp0== ȏ@XC3d)\4%CBdCXETK BL: v{<1Oo(vʭۡMKN ;wz,@+;>$z9}cbg5L.lއ_I0--!w$7)P9ODȝWˑִ8 K5OwbKH<-,B._g1$$/ MP-XnKa"wt=%./ \k"ID~\Mɝ P /NyfcCt )>PᒉIM#@VCinq&>0\N8ċ(D wxbDh7gt5A^׿*^` ('obQF^ ?<[rޑ%ۅ ܍ptwc>pǎ]w4{h'bM'6uO=}ƓQ`҈>-Rŋdf4%Ei:/%jБ18ވ޲-箓{T0w:jg32~zA"<5[{zfuK!F䮔rGF[4$rO_5i$Lm#3(EwA>/V kZ"YɄE& */An߾X3X̋RTa&T%1Wm+SoWd6{%DOY֥ā mRjr5Xގbt@V&k|KǞL T'[= Ff*r.7“ I#TS%LU/0^xĹHG#&-RRvȻ#vB@ .J6qh(ī6oagGevvv6ӤuIx-q՘ P]*,v@Gb6;šcv޻ Laj(qX{u gEkl)Liur&W$H}0|ޑ42(EE!890),rGq QqL W'4]ɝƃs*rH@+yt6)Gٺm;'O>:v: AG(RlxK>a  ,~B|)-@bN D$`]uQ۱U:Y3='CtBAgD FR1X.kA%Z!rG ȟM !wSafhǦ]-_$ӏcVbNEQ:Ћk^RrgϸMs2ewV a2OBsO癌y/%o@! [f9U41Zd7$# +C2g M S2ռH }5Y} 1YvvB=9j5_trHZuCX8ISh׷p`eTRTی}Ygo^<{QXlFqͳ%_>.awlErQnلTq1M S?Xk*$Zٽc~M!TܧFcwV'bc[7ˠfGZXJ ]]Z~R.-J= 14A >t3+v*i s=F?G0Qdz]f;$ K?!l^xvZBQ|W b҂ jT/IH-r T nFcyArϡ;e2Y<vQwa@ĎxK9x<Su*RѴ?H/ taM,p^`"w!`$w|(Z}U~{֓ھɪ^̙8# F~Q[Csrm" tot~oo $[hL# |PIԴNbi㙋JTTdza+O8}$\p &]68}6ۈdb )ϢxGPT qIy"TRXQ飯^=/xy\y@V@YKsoJ4zN-QߑhMԯBaehr"mQqg Q0PO/,x0{ͅ .?v oW^ ̿DK#||d侕b3Go?܋6ܣؿv rD<~^"u\j$ \Y~GrH RsAȚv5D*ga^oY7twQnxN)\:mALsk h*JSjB^|e_'N2u]s䋱hCߑ.vT[d d55Frw{ $z/- aR;r_0ĵVu5g18VAp/^/< Ҩ'Jx6Vo~1{>Z]}qS1WآxvWg孊ɡ;\W3T`4I˽dۗIhk +a BIJ= =|j_پ}Gm- s5_١Ea@.A\ -8ttO~ O *W?E$ STRL!# c-Cs;&>5 $h//8,@"Ҏ!ҖS)/> j&CS]؂¤WWn'"kڧ7_E,kezQ?2E3{מthC(| mi^^2d@#[YkQbK]xjwS?Nkb}j&Z"Gi&GtTPs/%TK~;u*(,Ԅ'DroZ$GlBα .bWpZl$w{a#ݿ:}L*-[r'[O•K 6!~%!!96~u1zuۑ׿j+G%Q!d^Oɢ /ф7R!B`H~ƒS1iB*r 9(@]i 8l$w91P!r=IKa^*7Bx Ttgd)…ӳ] 6Ms)b!BmR&:WZw,[8Pr̞chYPFgY3$ަhQ f "Pai0KXaXXulu=ci'?kGL.ꇬ*j?/a< `_Ux&Cة XAP<ҩ{F~~. >|@d;,ծ(DtXIO1[$z UXwCwp,q\OpN`9LԾȪܥh7eh737&H?ܝ'P ߍ^a-nU%i+ц@WI<K9*=娩BrzY3r΂F'V00ӴtT+eFCo[o^axExv`@$(j3 44V.>RLUPEq^^|Ex65+N R Ni(Il4B󍿞@n+*N'gg]m<7 |kq9:qj@5u+U`PugTd}eHH>;m`t|.ك 5dȥc$B|ƎnLN~VwXfѠ\ g9Jk?."G>/Ia&AV*Vݾ]R^p IUk@J:JA]4/Mm>d=7iQ+pYwSO.xNr|O~ݽz37ǔyZo>wS)YvEݣ]5ڝ;]Nݞֽ{GC,'{)kV~z]4GEzӧOecɲU-@r 7B8 М~>?-}*s!IQ\TYSm P7}Y;)DIqz\^oa ;1PZ8@8ϜA,bumo͡RȶÇ`gpLMy}ao k^#KyWRbU?J|pj_g@Q9z,1Fz~G0-Qj k5#wSN"T*[l~b4HAVNPBAM0Hv+g82YhΝFR_Њd.ta罻;I$yYH 3{c[M@lMc۶ͻұ| V&r]w_ vIh\ߣGHt!?@sI Cl1N[X5.QKUխeb/24GFfWWuJKrpC!\ %S}X ^GBwO-^^k4-¦ڪ}=a܅,`#O`Z J<,rdaAg w i5UGEՁ铥g9 l궶sJԫ:q 0$ W^Zilfsy" Xl K@rVg2*MggKW߬jSx{3""2ݽa0ts߶6!-d̲sM%Ҋټ@_cG঺#Wut~GM}։"a,WhM_;]PV,(ߓSJ((Hp G3H:֛ ɫzf:::˵IL8IY WnJx-;wU#9E.)ьM'N|}K:Mukӧ{>}\#݃k?6q4G][y R3'<"zOql!ldΚKS~V͐8qHjz(IJT =H`_28;CH.ӝ?"' 6ҵeLjq1R;+P^ WI Od~?E62.̻\syp'yy.3$-b'1lLDПkM )H9jl95l;lSV4{v7FN55)"`?xD% {{}~_/=nYba*cBlD^'iGqvBa evJAgObMeNIIXIuoJ}6 \rEHXVɫr5V> 3V&r1c5YpgfPXip BnU!kAt~O9ϟds&y'<.Eteb*GIjfZDrkTEG2/)r Ͱr9*q5裳{b1<i"LTdWg_2e}rQˤWΤXs&Կh9u 5 Ԏ!}}}^<:;'?K)mX3z/|ep 6wTMLϻCwW:=+{,Yۆ7yO^~QjEN[7{]nXM1nĢrA4{vb@RZzRT5Vab ܥ}u7|~ͯz|SX_ݝ&nK&/.P_rU%&DF]ccQ֗>uuK/r„< ʷ<eD]ĒFd)A%4IPZ M&6QrhGnh@(M. ; 2H)<_m~M[gC{w/|ɟdϵϼq <Vf˅W>|*._ .E3v+oR79.^?}%3pOo?^}r~rwK_h u>Op~:Y=VBXeN99Kh~Т |Q  ߩӹmz;p5q<=&9jKwpbTƘ]8~)U 3UKȠ5:_^TӱC_{굠E6(m *d`w>Jk*ȱr-o/_2gwEuMXͿ<|ϴKnoHitcCln:]]e̓$Twݢ(pgؔjsrz|ƒr[/7nT-A 9oO/7?_?:ُ=yνs+hȈV%"NMR ]/?fͥ.3?x2gESUA3]l,Pn7¥SfLwhs ,ĺ9 vJnĆ8 {KS.r$?9>h]DVةO?o~܏321˻^'5" imMii] 2e$D6lۗ ~nd}m(<&gniv)cdocJҸw:!ѝ#A '+&4c$K$$[]CgZ|]Sɤw(ȽNةT~p2s* ugtX JD ]/42ʃL_ ߈0c"Fk߳E/60yqe3d} &5]%zzO__G*kpuѨӨ%c81 p%>,ЩSTL;L{Ϸ=$`NHr}Bb}W: GTlq*[C#&5]V;Ea&r^G^uv-ɿT_v-K%: 4~9@beR/30fVZiS*s-,K0YsO[6Z%ƹ+A*D8U0UA=݊O#)xP*#ɮ=i=W}  (<5p"2bLxu69A rCW,aۖTѸ<<2%3Wlbc~= HT65Gc>@"q(%)"2"e\<;4;cٿgdkz~x=?^EχsMb峂:ם~s>ys~keyet%eev}7t?ˠV@y X_oSM=>Ԟ>Lϴ݋G+_) e#kWtDrDGI&4^[ PS;EUMGm1Uf4CR\(:ZRvЅ3U9ԝcpʀçlk_ߧ3=_Ň+43>Xb2n?KW?^x }$N%ubfX&TkX˨kH=f祣KRx<β#3wpuGFBEQkhPu9$U&lF9Gt!ːʸi$қ^0\-+Wfސ~Ήjxs-Um\ P$njsڄbV%h gUhYa %XLv@=^\oF uJccQUXaD,~0~'f U,A?{n8nbhd&v* ,\aLGRI -Jށ3.ԩ)嬊nL-'PEE،lMJ bRvL/‚ဝ)֪ޑXR UZiIKpjFi#|Y^n;\#Owů(rN 1ݽ~UP('VT_@I%9, [`:]1g' kֲǙBew'OgrJ|~=Eܜ׀ϻĆ9c8oq/>puf7>|QkNCA4FǟxݍW>"8 77v^X'.m3(99=}/_uO7揾zw@tpK7Z r5jsKq a0zo|^ɍC8I2VN2NfQ!vIw@xC Wơ]r#l':$i^x*/cC%U\SwW#w 2-sа |io?hGV8-TZK{;*yEuV`䒷PiLUyBZXǛ F*RZղ=^z*SJt&ɗI1Ya{8(U Q @52nRBaKiuY|UPWijM,9œ1xO1ñ\fvw&R8XsBzsrtArbdW&Wrktcӝƍ54nԐJw p+@2sU6v)A :4ċa{zzZ!EU;Q2wZvw]x0P&6Pҳ3[=uuԊ*!.X\Ik{042oiL1=PRHݤ@GuAͺ-\ݿ}ḋ߿IKFoN2=,SymcԺ{'r pSJ,*Q[8dt(Q+˽+zssF6c\۞n4@+--WSAh@'E}}~FGGCV0? ^œ9䤹ªb4Θͅ/7*k6BSV<[MAr}%Sa9Q ib{[tE̱)ެp!eOC$w~;\PT{b)POL :+jIu z̻S}eptB?042@qeNc\洊LxnZ끧+4#1Wk]$ [@yH+*Gdl?tJg ʟ%EM/P4"^pYZʹ;s$M4'UBdRTD>>aA0YLk+hUZVU&uz|,!ֿeRh] L|KO4pgKedUy*cC4>t3|p鞿!UTዐabskQUb4SI.g#jO碀mhm˕E˓LH9LqU,+tU=d(p4 &UYأdIG@^q;J>kF޹'%//Te|'!Hq.z}br P]V6IN|aNN'maؑ1 w3gؑ M;IƇ>bpB Xd @b ъujEANB,[aE+]]b?nݬ)7yd) 5FҒfhG3CC!֞˾8'ɾ׳ݧG:'7f-Y'gfZxrpd,WU52ȃZ8Ղ\z g<?}%6r1/ͪ{V˄iTЪL%LCdjigS>6%0@Lj|ueK,:! 啹Є̇6+e\G+}mC} yCQ,ڔVT}\==}6.j 㢝-LzxCu 4k_Y\Ke'jpwt׬NBNBBo8+a&W tV_XLD@)3T_?ȭ6|׷ק'yy_-Y𵧷]_~w~Mvω*fVZ=X)(% t;'$v9:F&UAPNRwK|,78cGN1q֗Ѹ,%^S ;h@ɛ QlSJߴ9,}>sܫrz~d/gtg%d=pܛ3kݏt5ß9u/#57;S^'">Uw+[ #cP%֞sl…[,-MHkfnnuLLt\"j +/C 5NVUy땐7G/mczx8*8&T̓D ve;xAj+#vw;ANOvw Y<CIÏRvGԘ0-5ް1!9"xVͧu\llE)#Cv'W[a+lv-=(F$}´Cko^_,2a>[ipCds4#%B) c ]n<~:cpAcr񆬊S/=zgǗaS]Xݽ]i1?2Plzv%T8AyJRAkzHrqPҸ_Iuʼz_-xx\혆V2VفoH@MN]c[ֿc2C*@W zCzOim01{㉮d eq0+( ٫ݽ[УYD?5յ, ;#=o/aeD'&jQxpY^=.'TdyQl`[a ]07mOܩ^diPRZ["h8@W+Y ̉]m; hXڜiՑ"2JQnYP 4صR̢\|V\ɭ1`sS|B?9Vߵp߈F`_DnoGz =wׂvv"3[$iEK[Bs)d>Aɾ_nb]SG£`a$ q 4;f)TNچduYezy u{[h}9ӺºYc,:SV2qKcb2˜:Mh'}KV̗.K{<iH;!x__[{eKad ܝB`,ӄΜ֝V<^q vIYV!;;ҼL;ЦvybdSp@Xkvf`lה{:CTZ .#Dj"$[:nPD^/!{귎*Zx}V}}M5*Τafo 9DA}?Iڥq蛋ara~DH7_0=-қٺ󘭵_eKA3=槟 [kN Ynn䑏-6 O3ЪׯȽ$H%@-Z /\a'tbpO<}B\. MKGzDkV{˂DQ@\5\i܄`WeIZI11d~YJllXN-_?'M?Vx6n)˝|,P.N\_qJ ÅjF sʊJeWK]SkYI۩)OeUU,:2W֬ܺj;r^Ď_vuXލ88;9*J`Nټ9[%d4!?h1#V"f DN݅Tf*1Z5h@vDqBR0#X^_ol**͇J ey<^MyvgUI6\3۠<79>_&F#RhNg?!u$m"OnP8jxiFzԩ n匍 rIt4~J 3T ULsWbVӽÅ!R+R*duMVVN^5;;B\Zq*]u<8d'ƅMolLgO/MVN/6Lfu;Sve>G"_waa!H+*V3:xrñ!n>9 ZDOmM^] E"/f(޳c\YE-sY>\{V~*;ˣMNZҸs~[] 5Fj͆RpF ՖhoHv )50sʥKoo|{''4ŕngG'? ~*W *Te&ս '^AqBXGth툺&e?gs.#N?/D]qNG\ƆKRHCLS.[]>m*ꦛ˗;;Gp껡;~208>`vS׿bdw DQ| 9oy"@,c'Ce~ ;;8#*掿c4HExauJ4dŎ;;fdܕ 1 djL ]’!&XG\Ḹ4"9B7LEF3i QDnF͑YP=&n0Op\ BCiiŀ]U O*U+cdIaL&KT}T`MGn('~tlUy Pluh,`Y2:J'7zma{q.5"26pbSC3S#@Eꙵp69] /Alx"X6&6yS6)ϼRsxuK܄x/2V+7C+cmU_C$mnBm7w(ory3Lq(h(v .9V[ ֎FKWa76-. yfZ6m % m.,̺r1xL.ss:--B-2vl͂t oZ)72kPSҙXnʉD%y5Uu9VBQѲk9ACK#< $N){xRȩ#.P?Mͫ4 8~:kkRGR?`J1HU?]%;†xf5`2^Go;ehω+?u]D&5LC[r3xlTA9.$7 Z,8^s)]S:Mln 1""WYܲGؚei!`n/}vN ~ܥ3>Wu${XWERyZR**X5.K ̍ݙ z;'ffgf''X١Գն^pvFOiOBQzb[?|]/?yݫ@/=7g&&@@26 F&Vl4$@2LZCNH`Ёm9Z?4w8qyʼ'.B4ЙK 4cL.9裮]B,+#u)p RH}@uN^2{~kQ|&'tF$B)¼W:zD" jߚ[;0 3BoO~Z 6C4BۀJ o† `;DدSE4dsS :EKwhuwo BG\ oUcF![ мƔF\LZ\M  R ƥjIf%X|2%" J ,M +}J=ΔKn C.3XJK\[3Mn 7 :P=ëkz YQFJO"X溥d H-ÉvgI A_0Y$x[ 7SD'R)H<0ͳR}`k 6AȖӖi[f | VEfrWx5 m0aeaDZ-戋EEUt+NOQ};b4 r\-)nt_̗KWvZ7)ע Be^Iv$]@[-`Vvr8'mNoIĢTjTF"9-p-CzăSuÇ%q"NVAj@#Ez#?y_$P .ձ&eBbƂs;㜇DuBE(C86UR()1Lh4/t4wx8sP6uE3pL8]LvY Udnzʤlt1tܕ]!guM3Qwe fr `u4O4{ $w}~G۷wbeoP9lgOԅ f)v{k_Ս?zwhI/ !9Zu5^[%cԠ*渌YV  Lql(hD)2Z }@0NF/7ѽ]M8&R"#L:T=A[okQs׳Eb>d]T2ɝP/K0\U_V}Fz?<8G~# ?LQPcpGpŝB;w~ ;~-L\ p*nnj25lMz tP.l$?p6>bPtwo<ᇴh^Qh9fS.*•QLQ2kS\p'oKP {b3;OM5%xHwUZvRb $xO_>||7^4id 9o9PW.MHJ['bN>{o"Qb?pBt 9DBL  ϙ(̍g덍QrW9/Z 7ɣ c%PCk9bx~\nl7^+hP.T$P/p#֜62wͭ^wߞ8twpP(eMS&:| "/OÎt]}Bzk<) d05ZECa9hbA/5T TD@iUA[q MI[eWWeW W8r r %'صƅEXRJM{p Yf{ ;DMT%;n2-YKXEN 'E'QV0wB[m^l`i3|*v9A\Xbh,T$^S3TU5W617$ l?L,Yj d!I%i"U1Nb OU\`LaAZG51|Çx.$p+k.ha.d8i*5,z"t W Dm> hr^MsV gGN fr$v=Imld~}=Yػ(!̝;V3WxjA)cWO7 Doz̋sdGhS>uwo\yY50-|9>Y}(7wcY~qF@KiƟE`ǧUgF>v#~5877C86oLp_Nh &"_R&OU&5AGj7?zӭ=}Wtqs%I rCdJp`xenekGÇw<썟ߛ7o] N9"TFbN.{_ߜ^ ?)%Vv7=p 1CyP$ W^CׯaÒ u7%^h]:u߃;}hEkZ!J">N3']ꔌ!Jڵє׃>::"Nakc<1Ac7GGD'e OoT*U224TiX , IŃ6SC%wX[ח𭨃x0xGʰ>[OUbQ/xD@2nUU`/밀0U^2BNU0 $;*+t2ζmd2CG0~či&jЦZ0\;l8$͕*FB-]4{;*[n韴RYuһʛDcWs=@_N!zŬMeօwW~ܰ== 8zBw{FnlTB"u4;GQYv v`F^(u"Lq2T[ SII]:/柽J`eAPnP/oeI+30`ij;Cl@U_ؓj 45FDU/1#$zze4:mSatܫbT*ڄ!ئ⪰@7mU^JQ´jRkZ!TƀHrvrD!<_>eJU\2N2Ġ G[q5Sh`21(__| Qkkk![;Syjd e:RcˬaFTª**جdz47DqʌYJ1`4*Vd5 =fB?fDU5vD]O7AJI>`xݙFށ=$<޸o{uGf7w+%++ ٷ.}zG45i$Lm'?p̣m~e FF֝̆T$2asFgBȉ@R.Uaa(HtɿډI6f},],.b'_ky04Ld)*)jѹkQŁݢKD8i߶<ɍL]eaˆ Sb݃ Ȑ /S ٶHCR0(|<,ժո,?Ϳx_^kڤyC8?+2-8BJ't~xUedaz8P'\2Q*OGw[+6On׊ u-Ќ@ :RX2Zꦪedwp'#1QC;,Rw$TԆp[.fQ*(D!~Na,~S2`=k!F*B*MЅ 8Ktj]@'!⥔_`hfR(.AY )o_wWto}xԂ y&9擀Pp3r=F*\*u::0дGI/ .UD⭈#KxzcQ6X7!Ǫ)YNVyKC>[=00zõ>}7Y7>l@}18,,]YVDML of/{)/r 즌]|x~%o3w*+ FmH}&(Z ; $h){Z&D[Ӓ,i+j{%Ӥ!GkwHȈ|Gؐ,UUK#Tm3;WF޵)!>hUmڅ$髭Fe -"Pg6CW{:ҼL\P`wmhЭCsdo + 牑B9P±BMtVľ g4dN17o_,w4Mc!Z& % Kmnx7y7}xKW>{?;~Uڡw[sL%?+n+o0T~EINj#++% /"`{Z2첤e!Nq{a~ ֝Y.'ł=V&E4oVJN*d_̿hh._͋+_̼} ƒM%0W½&M.$gi2bҟ/R-(ZNj2&ҋLllXc d-'8o7hv߂Ev V &9tȘ q >3tY(.\?CQ8@Is0pڎѹcH}! ;f'dJw`y/>ؑ*V/KB̯xaVoG֔ҟMjF8ѨʚGJܝkMM5Zy+lJHKncSQG 6aۘ&ߊnч )NƭݺH䯢nL1VBQOKK}m-8(#{ۢ:q| Oyi%&Ak$6N<ԐMlozk(Rc VeH=wҹp51" i $F Eq &0̱ lm v6a8xxJ1b װiHWl|J\_k{Vkjjn"?Uĝn la#]Opވ=æ ?$,HY=-{nܔiy&K]9YBɛkOxMF`׳4&-?N*3PffB+E dؚT6{$E'GS!`p$4 *.ڐMS 5 l#6i+?wo޴mb`;͇Y<xJއK݇F4w2I G;E%{DƩqX}^JBE^QBZj#=)#;;\HySpo0_KOx:]UCH`~Vݭ>͙cdss]l3808c .X[$xqkP#4JDkq}<Ή*a͈fB?:ậ$tK5/vSbZtS8B2 N^? إQ+^R2!SudL sR0E2[| 4IW=phݨ"MfT+ϠrKCzA늤mܢVV/?:|WoUVxiߺ\/V0+6"⢂&ͥLY\G kkJ^1|?_G':Ĭ%˶k4k$zI'ljQ1V9&y߆YV-) w̙2ն^%0e0Jk(r W33,*l2пB dӡ^wU co"Ж.Vؙaزl{1x0~u3(یlLHJ!J@$ _iT|n hl8֖+$9nN>>k_vM-YR/LTuG"/wB?mxQN>r,u=NfVr!/3yMgjIDz2ڂOz9ا3i;Hfn)iSy Qn zJtSct〔)=,!ʹ[ۚiqAP9\9H!NTKi-"ɉ6~-~;¬tݫO BW ('AV?auY ]:@ZkYvX[#q0R!ىvmuFql@/2W Tg;Åɗ3\ qZ7F AE@(چt ]N=yqbyw΢kxpPk$w]ǦdGh蛦ѹDM藮.Ie["ϟ/'odsZ.jU~] E9RXf:FLv~K~HAaRQ1S\':,8﫴b'^gׇܳ+i^`(p%u<å]:y 5i6 ΐaZ\kaF͡^oJaU׵o5܈YY3l2fndĬ1HqGsE!> X0TPLUjHo;;Amn]f9۱j*~Jv6SnLfM-h+1;Z@!v<beE:)<]MrsZMeӥH6s;#U5qm\f>D s<˅CefBAZ$E5K'[Ct~gف'Ai/6C%a-ͺ ̸.~|&g*j$xiC,܈^)ٿǽh{r9ob}nU#֊/^q~u_-I3[[uEΞBم>sd'PE!}_jjT%$J@%14E{=$KxN'P/.2? ?gÙ3`4l<z.^HPc=@nWA*f_%Q3biUx8;`Vf|PA, A!E^(G5(C=)U s Z\~~yhB²]yӓ=&}t!pRֽU_PPpR'l* 㞖6L gRdUHlo&Qמ[k^6oc)ˤ}$[/kW͵iӘe{r\xbۏ޾~G`dbRf8hP \CݏsAѻG[q3[{3l,j 3ԋ6XzUEIXIQ6H QN\p1a#PwQ tgPH"LjQhdܽ=m9y\VgFd~.OgBXUUϮ(.lkA N'W#)-_幭iz,\Nr8 7و>Scr!=p`a z:HCMpl_F&2MBR6>wؿ=2_*Lz:MҰy ޽:EW%ֳtXOmn$5c?8&,!wïFUπF h(JvD2]ѭ; " V&t&()Ev$]RzRh8  댊nb .9/AE 䀡 UQ2TFI %T)PB](F=v?uz^0sys~V@wݟ`Khc , {o6Ԏ g?F3,Ѹecj?., uIz;t:MelI1eoPAI_<d/#a8s(@ %!>)H0 ӰĻP c =]_p? prAw7=Q7y:f:^ҳmd<3FX.˨awW6 B@Y,(@WT6a~KsBOw77n9l7Q9!Cdw֪k-f>~ؤ}/7Sm}5;P2|]٣SӸGI׮5S?+(g[A s1;YTycǀ;嵗;䑾I r u#(3u;#K¸ A/KJOpԿ1~X̥j+NZa1a|n^zp[.ХɶiNaКxQmƍF)>xCmԨ>|l3TmSP%*eG|.1Ͷa,~a͛vշ*8L(g{Zv>m, =ptTړ 0EqeYdZN~f1 F*`iL,'WS8\j44-W3k23PL ; `k5çzU};8\7SYi=WCJ@B!rَ;Փgdg,_d$[]z &g$n*\p˝VER{pm yUU=5wӱh<)$*婫b-n}NGǙp.W)/& wMmDݲMh3f ǜbߑx m@ W1s4ߠ_R+;^%%\Pf{)w 2e^"]8;Z7cjJùltෲ`vοݻN ڧ;bXf/Hq'"uOPUߎ}Є2Ӏ B?+5-/4ͽe偿CrуH1O N?E4b x<mwt qFSuEѠ%m˜P/`/79Nצk`GT|=.z( ITJ7Jv݁Nm!;_8F[t]V@]i),JX~ݥ% `XHeܯ{v)vnW-cm7mPh2|Yg区 1FneEOnqjjnn4cVKros[4RYY _0V]<#Y qE*.+J5o#W.e{)mEmr@]ZW˦:6ڶ**s2noَ7bEfȨwҥq=[O^{x;E^ u7EIW#Eދ5rW<(^͢3b4 t}H[{h`0/rt:;Xn?j琁j˼ L۩ Z2tV˂))l8Ȩ|d eE :/횹.'<ͻhaWm;3;m+2m:oE*gFwKٯ.#.p{U"IO"zg;T_VXPXl?۞.޿{ovXXBhiN\NQlTۡLbZCbSjÀHH_եN/WmEB̖*L{xձ{¢pѺPn;_ȟg JZJ $l S\ \E.Ɠe]pU_3e6٣̂a{ԶFԍW4姐ڏZ (q]`o)RGQPP(9& wslءkm-e!HzM.饕ݥ1f L"姦dL>.ty4("n N aJJ0 h]VN1* 0l$pJ}C[c_dL2lgU(zyy2ړYZua&E~Ot,}=M-]vqןl뻆%cn7(6¢ XLXV6fW7W;Ӱi0/BsV~XL]UTXCjddcTĶ 'WYxSOdˠ3h'p| QAc%=R}8xoazio-GƇ^ >zXBsv!ūWHf4LR$I`p0A?zÌ>腝@#(qw@pCQN^Ňvɝ7܋=T;':E^NwJDhlË{BA $m]VXf RQx¸+5hacHǏMYMkFS8 !ƖI X3]]K%zjnEfw.XoE4JE[VX81=0]R2!\Uy gyO|SYX2q"/piL `tQ˾qumDFgxWb[#n%YF2F;PlW{Wldd5݂P`iu".޷ zV.o7K4 F;o A˫7MMf]@n,#cvQ@I*1p*1%K>98hhc筠 4٪CBSE 1m^Ė[/DVNuǽXcֱVW>V}!{U5&vDi_V5yFη_LiSkSuWW1su5tU1[Y;&33jUntj؅;p#;Úryj"[aDk d~ !rxTW'',llܿ~Ood[zLMʛ?enp3mfG$D{TNղss~dnIU8( "6Phye?^Nϳi:fL4*H,S'2px{3_8i_O y5+c3{S:z'&{>L.MMΔߊ{fX\@u?0.[]zʑ!I4cqbNj_Ee v.Z'(G;>#[w{->@"H%@B[C|쨞U}[ۨh{ܢ,YĦ \ԡʥ3|zWN "Il#Os4NW7 a )^ooӚRu43@--&U߳k/Qv>FNZ{ 6 z@)C\#}rsHQcE‘2TML`:iQ@.g1 _yYC_21y1WX9aŻZ^DWr0eMQ.l O+Ȅ%[5((nYNJl.K(ikzdVVr'mm`u,Mp \. "= M<S+Sc\y  9s9H?y ]>W<=%%wx>V!I:Ew~&BW2 /<\ȶ8 bł o-z $5!֤jBO_|~d! T1H$ͱסG)Oj[[T҈K].`K⾈=*TXjW({#4*Դ54)0Z w&䎯WL<mKܹ|!ǀ} c gҏ;v ?!PvXS'ʆ+@_DjpbDND~~ <~ZWZK^2ȼCWO==x浣4G^=}ʑojuΎk\ҿm)j2}ulRn CF~VY12"pVQy\.I?卐ݗE yEE/h vY0f"K{ќ=ԮK&MYryGk`A;}JZ ʆ%.YfGP.yb/GKn-Prdh}5BZZ}s6[{oڡ~r]!Vr2i-m(ZZZ<2\%&CWKxUhbщIǮ^;TEbc-سeY,/ σR!UC :kjKzpfk)E+QOlܯTUҞcc uePSrmQUwˊz*'Rw@cqe?;7<5 LMYS5"I3nxxa~) 9^UOV# *# RuwqIG+͖/׷di)S6ٴ%KSέp1h]s1ea"6W1?va}ͱE ?Xߑ7fӇxCֽ;67'ۖ6gg? q?V<X+B}7B}ss3L-H*bOSg7)FX 6o21JLnQ~Y&(%P3f"qeЪPQSS "c/g?w(7<,?"x.L>xB.e5{dQ&OdOz + D߈L G{j[V@HqR!= ,^vO=H7~nV2d**C$U@ ]YIEqR8oZ1}rwy>{:{Zعۣ_NDDTFH,N95b&YhrRUu[fbbEe"Ye冥l2eDRK1K e=M;Ur pэU ?NU heOQL!w ˞_P!PL6KJ9|rN&eBn0߽TЪQ se-\8S.YO"pTK  gaTmmdZ^RR ]B6bGi8*KcBBcӨTw+-omwt˔]R}=qImkhgEZy|9g6Ş~~d${D1gII@~}GEnʾ##}u!?x>M{{mNVtOB l)m[AY^A}@=@^;.g<8K$2pMʺ)㖔nŸKJw cpM4 q!HndX`߿#oPA߽;A|ȟPi36+K,* 'ܯTk_F 7~+5ؗb2 w/'wO5=%Ԏ׿}`C&" Bp2.nx>Sk_<~&%ep0%==EdUTPgNJ}H쉧'QR4"5i3k,r*+sr^]Qݕ5r41h_+_SmZV9Y ZxK3-Y2͇gky35ZL#kcqbH\Pol}l(3 ā.*_VѰ "?֓D}-Įw!I 㽚U., L-.vL 0^pXE2٧}2QRQA9½f;YҞ{G 1>1'.С?疕,6=^hhMdCؘܹilrhdpL(mGXG29&NiH1ic44cwFpAL嶎ܨV"&)Ф\{419;L(oh'[ux$?qȣ-ǑkmacA% 6]^6p?Ċ@'=夎eT<2(-)7{mgN|#=>ɪ8EE|`YAYly>H`F} E]͌{z&0MOZ5{: pq!jO 73FVȶDyӄqAT`z6hAV!>`5&Q- *6RA ~;Rf都S.m7\gUfzڻꭴp0_FjXm;yhtصbPg':g7 Wr o;^Tۚh1ZHǫz.ZQIs5‘ўmTrE$dd3РNI |)g/s/h 53񥕽:@So`j#‰@F.FP"\ȗq[aezz\ZU%]ւ4Α:-;||s fJd"s1?68\[ ʖjIK8D?b~(c χ#7P!C(hKZ*'CWD?'+g#"qs^ =]O O꘩*fܣ6ۃ~1!)!ONLy43_*5vt9!Z~AzR֦޴m`1ax:J=ޕ):f2FI&AACAggORy8;OBi@ FtNϪ/h,wӾÔ챊K4d+S^?/ON9Q4-ѳSO$5(hFIe(#?'qKr@&Wb jN;l0DP giZ,i"6@-wʶz'vLV\m+Ķ܆m:IHEuW;1;ғ7iQw2?c,2tc8 9!>!-U߮ ߅ь@vF\|EEo]410xV"|C#Q,z3"J?<7V~k\q)=BM<{p/mA6o,Y_zN-7+cw.{t:F] CEgd>.ۄQ6& aJS`.-D)sY̋0CjSӤ&C܂4DQ=\)J\|na01n!b"zz>_6q/y`p= Տ**l/9h:[2d#^MkWYyrBG/ʾ0Bnq bi䎴plF[yM/T[qڨ6^n2824YzrMOa%s|Np\\T\/-Z%[ o| ͠~IIy[q9B8ϚPw/o|eYP,hə/hV--1տs萻(9AaaNXFa;}Il53JM_597a$g\ags(h> ] @{N1P[]eU .lgۗpÃ[n٤fVn`|umpO8S"[.Ӎ.لg£5e1c64GڶXAuPI 6XjնjqqmpQ1]H\9gj )W[{6i|briGUU"E%Qk`;kWQ6Q2z1>I7-/Z?7'K_~75)ppu5K<53BӖz,o/n,NvCazM}w%| c[qx6})Ѵ!4g3`etazztÖS#I?1. 0@ix֭9k_ܿ@tPĐ${}}^-tlBRPFM?aot麀Q ۪ `K;>A @l>A.gC^w#rty:`˦ x. X%[OqL0vv DI_ ;~" %0>NQwwÇuW:xK2q Fy+>śx_]odvD>7TqoϾ9XIt<A3\y'BM}FfI$~UpzlB 2 \ )9~_^) N)2gopbFzpoYg_K Ky>xX_ܟQL3'-UH?G ]-J7r욣FWy|. 9~&RNC*z72j=2Kr5K wj;NJ=igK]U]qzK&kT(l W9~|@&oT/nE?\~]!Po>h(()`s1k/0cEs`ux0,7{uezԷv}K8M#^H77G7#DJA)x_)HXso9FrvFu2O~Cˍg%" $ETꛓ%@Lݱ8_z>SV(dYY^[[UPkzdzە2YY".pUqtVpNE@w~yV16(!Gj0{qb٣tW&c&pΚk l|'#VL _R@c₅b2e6>}YYP2glx+kq.Қ8S-@:I=p.N V۳69aaF}gic^*wj*wqwi?/f a4 42;EkF]<%kP%;g+~z=EM*V Qpi$lNWewgp:;S 6 QOUl;Ɇ7+F7j":HzPu7ͽ_57[ㄟt]rq >kH?HN.#a]VG.bL@˙:[nUT@4B9AX~CHkנ@i&# ?6>!y=d3S|b'E 顎Z -ЛcF7{; /8 KNOD-a[*nړq;ȚXZ?ZIHB Mu-#K n}G_4CMlDv裑O&4IXevԬt4~L.׸ SHD3S"Apb^k oDUExRh fW1@uM6-9  0>{~=4QT){ThYv*\zݎݎ1l,c6˃\yP8.m]0c@v{e5 E `IJsO&\O1`Z [F^=;vdn& d1d ѳ!1)6 {v+nw ]m65Wed;rtsm`0F嬖wun\K:.Vi_mPк+>FɘAbx5.VU7$Iܓ;|j8"0c!12#={هx GF<"wꮲ->cŞ5Zm r +zKD^rl#<<1+g4ԣػ1ZjXaFHopތ4+c .4»rVreʧAʴ3U(\c C(r'zjls-5f:33\@$culmFqNX-4=;51ݮ^w=\s/|3|cReSQ}$ |oo!ʅ6 qeՙZfw8r7IvBPI~yf[*aCⲽ"feǕ9 p{* (sr@'>J䟅FiIAz yPW ?3oD5P>LR~6^ڶQM:b?nj`|+V& XA,i" [w-VVD2-" o{,`'Y/ȅ G4nEƶ+/3 Ѧ1xIV=JJNޟ?ϧg_@F{gVqT}gz6r,< '-humrdI H^ujPiObfy;RoU(IY%ΩrrkzQlk2NwujiievFӞU Ֆ͂&6*Vey6_w-I rq6uɷ`( R'?лC[l-a;(' !+ěv/.ӮMzlwPQX/8]Y2zUL!,2duzYWC )rxUGgmm/ok lq.tޗ?&Zx,$eY%WG'Y_rj㊆겮6:WDBܯW{ֱ]yެsl|FPQmdSiPvaYm/(7ڒQSWkR7(j}ӨF ?[iNALf!}z IjȃZ[g0::: XSM>[ ]b7:8B З:j׏NΨ#*~%p;8+i׿O~mpbgk%,?_mo߼'wi6YݱNvz!ֱdVGq8%pϿ5=;pzF#?xTZF̏K'`RP_5>B`VH@S/ /oA.8b6]楊:բbSVLq&gvOO-{}J!`U <4XQ)j#Yr#_ܼq54:C qp& hܑ쇥 ,!ˆ@1X $!a~aPcnY[n]qԮ9@\4ej,V,,g6 {=ͩ1͌Ufqq O>=\y4=>Dnb<I!D5`kNz8gν3_Ĉq}Qf@ј6*GҀ7zӸ4c`nrߢErbi+^J=;JJ+ڗlʧ.;;5Te<-ۦH '϶ ci9Dpaُ Z9FYrkx0G #SiD<ء-ҧ.ǃ }m*4Cy[ Gyo> E934Frd>~a& 4Z?ux|FHgv'[b{ȃLȴW͗p_8:iI!׫ߍ&z!~ :tA]&Y͆ٳF܈25u䔌ehfseO+w%z՘"XwLl47jj е@5tCKc&ȬUplJ7HĽMMMK] ^ #YAc^YjEE9=ܕK?sxkeiyCZ'{ H:"x)-p,~gڏ0e T #k9l8zӰFYYQ3[hG hѨWwgVf[]Xp¹d|otwAx{kƂww>%#<7Xpi[e>~Vayr0P}7B͔M3+KO?oo?ww󍦂{Wvg5:7gt%;;㽗qO$}#Gk/!s+b:?l*Oe,f`c :9=_%HӢ|נQ} 4 i h/{/GF>>_5l<Ӹ l,Ǜg0vLmmhş G|^>4$#ɛEp택t4#Oӷ `Fɤ//R8: xx7 sqv䦁ŎM%翣@-**bL.H?0P=xB'j>eڴ}YW5)6_P`,VӀ_21 4,>Lb$v.jo+.F]Z~z #ϴfJ9]B/Unz(ӳ/~U!๱Qs0:=")]8-W##j` t>26c箯-7 _.?l~^cdlp(OfN~;&+КCh 5d[#ߓ݁}-$S[V}6&A^&ַ̳W雴1 e`%M]8. 6AN谷ɯJϩSS˷l|Bn>TwU[ݰg5rvtC:NG>߶WQ:G=Fewm+s#Zy?o/cquW.ض:8o]F7ѝQ~:lV]l>.C]Ȯbg.孢3q^.^6OlҼ?Or$ZqEbwVHst~V?\1n9ol+=<4t]eW7&Iׯo?י٘tI{9Y im%ؘPқ, 9w_wq>t:~ƅ|200fjք.yIz": uq1[CE83Qk*r爮co UdĢWԦDMXQS6K+2@+ڛmm]y7T͇?ęyYZ.хި oաtxoqGMW-,jd^|Ƨkl~o<{KؾY̥;2lqCaPсjk!# M]:+#QiU7(j/T%Az4vr tJJG/Bnn2?ʑ Xl(? 5>)VGE/}zR /G㢚ÚGxp؇0HMSՓ'w_ywCh[݅_N?2E_]DfJB݈ޒZahb C63pEHeHc2k_Y HwVOOMP[:fu\w&Mڤ!, z޿AiOBD\Ro+?xfJ(Q*<|vSVZuGߊC4* D瞾(+:bn힘I15NbwbSt8YŜ.o^ ^&Tm鏽]G?{hLS?658fhM9d.*M7,UҟѴ8bfPٽm߾˯)q4!CȨ⵬N1 A _ܸvAij}%5nߛoKA;?EIÒN߸p8!^b@ٰDoU~bK1{ 筟4g uiWӁ*?i)ـ-owmE].Aׅ[.7C^( Ӧ sr@L<"B@dݐ#~)r]"wp@?5+k|õWp\z=t!wwRG:z` Z,S 6-.z[b_O4L= z%Gm=FPO2M 3,/Z r.׺yz0- L@{ fylayPlhz%"J:{696~6#sW^preT ^̕>,fyM;.dUӿ]P.LFqYIB ۬w^Z{hWv P!Joiqew^/!^s(GtXKKSrrqɪI-rh< Z}{ӷ6MYm{x3k{[EDzT\o`۞;WJ".OABG+nU]O4P<$ȧ`Ph 6%^s`2?;ٓ'OϞ\ɯ'M{_u}ڛoa5(M;)P~R,m)>-?pp@v})s8<9gF]}`+*VᶝVܵϣۋl6 "U0D hFFL(P*PnLNEߥrE&(+K30cYnm iF=rY<֛+9rB]&3<=Qڄ؍'D"QѺXX/G5.]!2xlpZZr[]:LP  e}GsG&p^(7J؛@24.0>?F1;4N[.)TorȘ+b; \Rxw1:7y %dcc\*qDFPB9ϸkOFt鑕2޿0'12dϴo!e 'iLAo}6쥿/K>L,BvvvwKw xukt*6/t172bY TG μ\<֝9*#n3/5E* oy|VCڝ Wu5̸,u`пRdĄjD{$[<=3#I]2r3hFM!}(`Sg̈́ٳ*gTR0 74TuS?;s`m$:9ߣ8?pAuț_@R/\{l$Z;)-O=( {>uP;y۹dh$܊_~s8YlL|S.WorΕvqlT4H/lg MMuJg߿&rG|(5)k- -<1LQo4ozlfr|gnY#ctKKGu@UH%3e>-*t8g=֬5'4WEߐ;y)%xDr(<,VƉXØ\{$ܪ,0צr8r)N~"Wrl4]URs?[;6O>^ pM%P~Q/~5>?F" k4DMRj1n2NX Rа% p;A~]mSq#▲P_k ӓlm{q4 8A+!3Kͤ`BE'GE5[+ui#|@M&I 8<dU >ƕFF „[~-fعbz2fbqL6;a sLЕqDG\"r)*j`{vcͺ+d9C ^]Cʞea<^2WZVu+,HBA(?BGo}CZcnh{iVNiɷmP *-R./2/\nhhK@G^tVʪvnzjz(?<>av__;G$:X?0|_Dt#`\:bz6-$#.NO3|"⒮T40rk޿ ;~!۪j[U,HeF:*ffuڶ , i_/؃,VcDnK\s +C<dB=P7R}R<0\Hn0iiSgz fՕ`_ᅇhT[*ʾqA}z;V>#B+3gUk{?4m6 VMma((q=q? a %N 9Iekolo1\Eyd(B=L!>AhEݲT>)&ez f*wMՠEͣS:~nubr{e{f)_ajlpyæW6Dj#D 8[kM3(=(HcU ߾[[/wAx To17[. e(Bk{M,'oA?|O&}чBZ} ƈ!-:>%(*t0 Rhg{T[̈w /OqOHև(r6 Y1ؐb.{i247t.cЋGlH- 'x$ ސ\.Ј Иn%Q}/!Lql;֤ (AloLE;y2Frg[\F\\elaJ瀼e4O,l\tJyxZ7& p 8ΣIlV^DLQOko;:VeyQ&F&ު/z0P19 %54w[Vht_=Gt`NadZjdCCh~O]EhF}\Qŭ)+rYjT~p\?ߣS5P=)/>4Fuf[g﫨=Kדk<=GG}_ *2m=)-5KqI0-t$-޵KJFz^96IS;9,0,ro Uŧȑv:kk=-oX U$3"<=({\(4FY㚾ֳ旅UlP|[ /PS)ozizv| 3ޑ2)sHf !?6g1evd~sYKW㕱ὝV=ʳ/7,_3=B#.`o4DS8NKHw5M:3yt{kp.b8_ɑ Njf5h4z 6t4BD ՕX䥧+򩳘 -!OM LB{ 0l)okz k!4xD_֖oN)$k0r,j8R$[Pϛr"9N\yQ8L|_.HD }}(>9d֘,<˱fO혞F]a0P94/~̠S$چRr ?wҪ=DOGp+K..xA*`߱'/T)ټg|SC)|rwc5U@Ҋ~imUT n+*⭫ 1-z)5l!öHZ7:p;֭Px`Ouy)>}㟂thts*Uip&`v@! 8%G>   v-,rcK K+-GFv ߸vEqip@)96RٲS5UֈNuȠ&c$Koq?3k덵08ѻ%1RVvVXX8`[RbhWӊ0 JWMUi`gT+1Pk(`Cs\KOy404bct}U`GQM {TF,ci](YiGEiY@+3gtM0}#7\w0RowU'wt" oA'|8va̲iwIޥu dujP/c]t,V~/ 8it6voH?ߴo Ug1X-s2 fk5dd1te%eety =a|V#3i<:ՕPaۏNLZ?Accߨt$At4qŽB9 ʕLw˿蘖 W$ e\]Z59㒁FȚWZ>p s_v]U807T=L{#DyyLn%?QOjQus \Pl?Ua[v*[߸݌▂k;2"nr9 . ΚȴEY;<`.F9 Zy48e–HŘ6&e%>D(5+jdbȍ\tޕ:jZ[ \V{;)biZ0 (毰O' Qv ̭ArIFV#NrKL' wT)Qv9-[-cFV]g ,>'u'F̑PˤXWܘf:)a>j!SR AD͇T*(!xҿ$jbm<ً!,Ϭb8TDPfAGUl S Kt~5XtWEk4pw9 73dR*t6-pUuǰWu) ўoe޲'\ec-N*weH=XVO.GistCVC%v)[[?#?}B>JxtIJ^H킥 Y٥ehYx05^sMZAL2ݨicRiz5 +*/b zVRf/)|R8pp#+byAF+}l=w8> PA+ɨUŋ?dLL/tt]^C߿ns"ؗp*ؑ<oDA[y;NQ vQy[fε5fg?3˼=N@~d & k9m̼Jg9pg`.<\rwj0WWBH?ŞՒN,?xSvKo|sQf;o}]F,ѓl]'x)7 w)`A%.cAiZ/0u祒-I9gm3??[RmiG34˶5Q8U D^EcqN 2:8',&T$T٠^a3`z%Tz%cVl[>J˼ 8ۛ ]/*hDe$)_CѓBKkz痋*J`g* M+G8FYY^X!fbGaK -$2J&1ܨ߽]Fܡް,۞o.*{2{]צYn0a~Sߜ: -| S>MzBvHd~-ǂ a)ϛzr8Mʼntն{яꪺ2@}3ʹ7O?rG+M#׳I6ff"0\9!~>hu}cQ <cϘ@'At`Μz}?|w q^:׫2Ղ<3WxdIU*Q K\{tDqλ]]]R =G!- Ć4OPwIpȥ+!IqNbBvo|qT[{@$1v⏴ '}>^(ZbUK8dNYfnoeX00)>sOtu.)ݥ]҉k<.W &EwdNIA߇OIϝV& ތ}TY7;5ZYڕpQ83{ u& rIK϶FGR^,nB )3WzBl,Az,zVS?} 6ya2{@{ȽCjW:W Z[Lq^btHKo+탒*ۯ[tRߦ:dKXζC/)\&gF"V;VTt278iVc-c8;\E%^uMϡkhi23tUqLF~o ݁ee 6 ~XhJ!-/MYiUsUad4FLy&x170+E8?_ 7֒@@U֞^-6 @pWW.%;M__*|-Y[ѱrTݭrDm(Q,XB{E]+> )f F~\-6j=2_Y= ᧡J~xuaV\Ps-BN35uL x3aȦEy>`3PT4f XUYE֝64I7L"| F΀ aU([.gAyd+-D -ù [X؍<Pe$܈4E)A60$\+Pѕ1K?sѣ^Un~GxHor" h(qpHSK?^tʝ] ~uڡk@vLjw쑑3w\\@PһMÒp(71Ȅh,*\"td2hc,ťpY&/nJ*Y2G077l -)D Үt""M[ DSo"iVO_=.ħ!!!(\z_KѺ-;rFၜFPQӎbyV/:C>> '֏gd|ٓ:Eyv@ /<<75T@oE~ ek6G됸IGEucu6S GޙޭIUM(,̘ڝn߈0HDŽRoJvzpx4jr jwT+!!q]Uq=I{muֳ޶#udfufͭ( Ay BC`9۞P?x/ynzpmy:02Nr͒n.[*"Í*jt $ĩ)via^Q#-eV$@wk vYtkj{LmHP('0]vJx탋O_\s?p|I>ܫWDU[X ~0kh|+ÏkR?m>oLfD"H̩/C+kIW 썮tw/Ҧdsd 1su5\ D55j`YE]va2) $"PCvu{;åў]H=Lzі0D@rdF|b!3@GGښz,v*C!Mdyo̭ a'k ;*%:$3V,Ԓ W \! I? T?%w9Rۿ돐1}o|gDOKm \)B\A](H3+.2$-uB'/@!zJH?t>?g݅5Omgg owza@27 bX%& c鉭? [͍&O:KT0>eEegdbA|nE`gsvʶ{ml1)ng!$Ts܆_=r8=V*%w贤 aAM[Zk>L@}i%-4;M2)\Պ-eIL}݊x`7 "*-p66J&֔lLYвK$5 )G|aܫTi`'laja;27k_hAب]::apq#w惎h&gk鮃Kh殿]fˬ=%E'5:Z'ǬIQ*reňL'n`ll,b+Քz6W",Vv9֋Zl.YRmϪ-fg3r s:aCp56 c*/tTNf-BnGϙ A3'd(/AF=fʬ$xDZIܥ; A94=^j&~],2k'{⸿#ӳ+-)?.Z1%7=]2͑lʟ۫+q8kұZY8{fͨ.!& j,ݚ]>ф82 #!$O8,#/$$WbX9ubІ*ў܇;6G$ ULoN;UgnL@ò0VBNF:zg1NyM3c|\ 1*`K];I4w{E@j"3OT̾(!E-\e [996eo߼yV@.τE[ q~lbHAs|~ıQe@_\CTuڪ C𣾶HB1whhH(7cL>XPrh9W@6zI2s/2{ &3/Gl|@U lŹ<8#$TA~ WZ$ľ8\ ]3'_ Cu1AUS$U;Bx>-?OYԢrY,[EH]*Hzgj3)$M٣_*McWǚiASgo7j*uR:+@UWRhoelz@0;+aoi3Ȓ;PϑUߡCy8ܯ!^+Ɛcj1J'ObI7W#V4khL$|:u>2L׎snvё+J\vwč\{ +07\x*YfrEoJKvi&$JQMyގ*3`aa *qW|l1Z VY-r؋^Pt Ij.>ުs\ZlD;;+^*-J[?׹,ׄ",|048wѩ˦-捻?U͗{q>Ǥf.;MZ?aYQV&ہq^ѡf?Og|͢mUⷅDo|qlþ|OӔzrg*HbIS?FZ[]3k8 Đ( *HkPs^O}ѡVi,Igܙ /Ͽ^8q4:H=U+ wS[㷬2y6= mY H{]Jv+Xƣp޹@XИ3K>آ\— Ce),FWڊ*S~y C ^(2IM^>RoLs0퇙i&I111u1uJo ،1MQdJϊx)Yf9xS' *ȅS]su#%(8\fh(W[ϛRI!3OЙOX˒6rKȽbHO^J+›shrS!ܻҽiѽ)\t\k6ʕoI$.rX1X; 1 |"<)&̮_̙7xm#3ߘ-e5)%c-FQl] ^cEVbBQ'{]_08!%A 8Z%\N:xs?'wwCدLEO}mwG\E$Xca7\C$n< xC!AJ_>sl/Y̲W$")ff"3+# DhU98kz.4:ݐCt\]]ŋy<*EğrGxvq[5e0s2:Q8iTs߬gfda/ܕЕo [l+D,)g ϏR9^ bS}#ǜa\Wy4i`4>$g<S~ c?1\6)"wH+kg $Ƴg%oe()C/\&p *7R>+((ĪHdmE]V8+?va`yky wlIV%'&K  GFawñhTyMEcA&1c*.9Sm\3_YSI2%F+Z+50 uѼ2EI sn~po *Ó 5NK:*3űj2 ܕ$UX]s74Ɲ\4K9囁<||UYX@Jl9.1g~4k%qsr:5AzP [S'fyG|Cg8[@F\RHr~P; i|UQJe3XZVo3J^oI@w=iUO$&#bVr|LT)|Wp#_~׏Ct7߸[Y%Upr; _/Y=Z c;4)V[,}DbkQ8QXG+AEC_V|$ >A ~aBERͽ&!Ƚ ' ζ.z Ȩ+޾Hqkdݔߟ('O>z㤣bedcTbTir~#79=zyׯ^~zPtMLFc%釾x4J:kB1G !qQEZb2x Kuݖ6fO*b3CuI3ЉҌ@^fse쪀 o*GgR}âg%jMu}updh#6X[9 -k\\3 kȅ \z`i@іT#*#6!'/!E35 뽘..נ.,*I2VksgDfn?7lmJN{͜ BY 6zf/NwGC2@42CeӤ\vtbNn0LLdvzvzzFQb$q$z=zD=?KpB.7sh- ^BC'}hxn{xc\Wz8- \YACεL..9|q\2WmhMD n})o`΄dZģȷiIX%+Cifd2Bb/c(@b"_>)?TܡqgDYq'\u/8BN_\=74! *5庴 ss Xa̅n+[Z==S| *rr旓{ͰtX82FsxYXRS]c=nK`ϊ&O*FT*]>h-wo~'kWΝC «lvVfdedcLOk^I{ݓG`)s|j 7/#r嚁EXZwv ${ ;ggGXӸJ9}T?,_~o&cw`#^o.n)0Ijw2%OܩObAwtӗ~<}˛y84^gwEB_>h׌>7I9 DRg!wU<^ M3CdtXw_ {}u r4!I۔r{&J-Y4 $t`5ouo4!sz2$qg}~mtT]RWwo\W]v];r!y4L!4R\B\ s:yNؘQruh戩Mc\_&Ezbƾ|eѼpuRlQ~%a _Q/bs Hpش#bzpud4Xtc_L]䪲c֥4p{JXS14ySҪ˥;lM<m+o-dvgt`SAjvUHA0K7*)Ca7DNr>}z~yq#d $б]Ov\v)F}6539:: ,OGeq͎`^yaa5TD*XZ'ŲPN&A!sX뤾 FpM*! =y|+qv>=mW;'U \g٬ܩ%c44 2qxni|]m&5]R{oW$kD-'***Z;:,,Z󥅩əaY/7{&=;MJia]FpF,-+V}x y7టKv)3ajW9&TP$fU](8o$:S+fS`fi5ֻ"i)SNno><0W6}"Fc2ˬ/~pnx ZTLNNLL s4"Y!DȀٚsPÓC_Ac J2 syl4> ORMonev0tMɏYlm \[F?2xgay\?&Wt;~mJʣG_ӟO9>)[j>-۴vNVu.#=b2ιYY\<u9 O㰪.] i͊pݱIrDEC9},C}Ym-]8.rt.10mnDykVRR ]EX0T9 1_nѳXUQ,(T롊%dmM&ÉaL._t"+8o"߾~:6j3|N$?f{-go/٢&ҝ,`6fK7)}Z4L3%}pMLڧv#  |ϿtoFN3)x"-i`,_YV0;?;d r9zϛƺoHܿs8)ȃ"_R[ rǎWf\sR퐪׭~]zb]gԄcA?ooVXb#][&N "WG.>5V6l]y;^i?N|qm7ܶURt(F:å]B\sqiEi8 $t.;HSQQm6S| PžxOB^aUk" @llsr&.|aKr8_b[Ҿ3;"5!{xs)9Y*:wpPGq}k7KK5|ވ^^J5 'g,D"3MKKMbҢtmdu6?F_kBbOSآVdw {v:o.'7t?;<_7'@~"Ӷ 9~ҼT_"| uu40SQoqQQi|럃.ޔښs3]-25֤$h͝.˿8g NOqզFHWurrC՛9] p Ɓ+}~$9Ztz~>>YC!7!g֡4xrFG{ _5Q,ZشihIݝj(2Sv3\AByҦe[~#,ƣ_0N5rT1t}4={zaߋQO&@W;_ {jL Դ>1ZqΡtA1;WZV$)6l>O*.t!Ug=m_Qju|] "qRP mByk;_Ӭ68܃%> A K~^[IV2!kcؼBw_7tKuDž/~ ~[l"T @Dl"bߓ" !6  /֬:pRXǑlaUBr´}b q;w/;Nu/-5WW)^mZ\;*̙tm {sj;J&{4A 7;[`wH(naETM#44CC]ZiTil 2{`3* JS< 'rs=RKh"eH[muf/\sU^fq;*ʦ]9fbn)fjH{N2x62" wʍF-sO~gU½8%E[~||kMJ۱ƺݸW=5L2 ] 9+ӷ+Jn+jm [Cnxޫf0i]g1}ԇRrZx^/5E>b̌`ms7̃8joXVՁy=]^t*l|ELg۸rQs]Pfc(svӿU6Օ=t((q*,=s2Bse"Acu k mbQ+}nӀIUqD[co'=qVn&`Cnv j'p~: w&\uѣ!کt5]If7?YbN=/\ _E1sT֟-- /`Z;պ)X!IPE?JE|KAY[bhADj'LWA٨qF %G~ۛ%Hr7q?OBck1|@WP?wq?#.R/T#U[&y],!>/]CHnw/˞\ֹVp 0fq &ntͽydxssa..։bwDž7 0DB~s]<:dH̓P^@?dd vwa5Dstd"|K͠ _S5 XKLf`x/w3<#.m 19t6孎/-(-Nɴ<|<fݞɮACż^^߮0^$ZPcy*ʚc65!ԃo\|k.Kd/ZoPu:|c{ebrexp|Pٓ_cMK*h [8E*ȣma$ 7n^?tMK>Y%[8=ɠ,:&EYٸަM9؆TD߼F R2}fQ6-fEh'7f C)EδMH}Xne90-ڛ61D)XN-2mWǸɍ8N_.·N)I ^䑑i(QuHeBK֌ {77&&]y-#N2[ߔYk_7S%ٗQZL7F&9M"NӸ8J()@8({d벂4Xzzr2"F=:|hZ6֫`9[555иo϶Ùi€r=󢬷CάPW@o5l$Q?8ƋQ=gc_%VZvʃŽ]Rb^MFpDl`@IkBǣG%݃/ Ur;]AK'^s%^}،ۡ\ul5zVv2be`$"qzڥ.*eDj[v\\QoۄQ6*RQT̽G.l[Zhjڸx~bl\;xH=j!Hm;E=2rb#2].gecDomXtbNA@ #.rt˓3d!WPmX)`/014s^nDeoxzJ`94,j>-aXSV?͚p$;nfQ#jZ{ĐɵqAeX[j˨Ԙ<ěW~ Uy̑&w\\R8p;!/KaHQG?Aa0շ9|I<'t/x1s ΥV-ްy1 ^+W\:Be} |^|o ow7>O}?VąvYa2(.**4 "f SAh]CBEE,yn~ȹ`սoݲ%dE E?Lzzf=2t԰V¡!2 0JOǢLo֟Bi'd KSgϞ&xfc|tf:}339u7p1 X Bv%=;zp]mCF >_yX˟>?["ꇗO0 I:ħ+t"~EjRP矣Է?߀ㇵ}BCo+^~pWt 5U=4!!ZΜ!܄*!''l?O>K?eP)_п#wibC^O~W?|_ހ>pUh܋e/g HgE|V-+-nQkE"<-q! kv\ +cAv_utb铓06fH}l!0^MovZl]©n;{{uBxOfYk+ۓk۽38#,/  y:g࿁턙 ia Ý={cT&g f]`b*KcAqf-[ۃܹ4O{md圻[ٔZwf h}qfgPGmhb%qcN#w;OJ߀wJ?:~~OB}Srs@5 N]լ:n'Tk$Df%ttUGזfx<.Fv.˝. Ӫl-M4(hH.Q q) |AFK!weʅBׂp^ʠL{h2O+Ni󸺁Ӂ <)zxQdsWXbrr&:9ۺs~:_ݗg?_{mi>{P_*誡(h0Aj(E H HPp{/Ҥ.U HGH UggL2d7dsT'R~{E34sG=s'֏"Gm4p)v1vͳ=BZb3Wֿ=ܒ@OohԓdgS'hէ_dFC5@psE%䮐H{Dy]Q-qѩ*O +pOg[E5B!%WqU[]_ĖEW9&.19u>ڪAS\PK|4y<)2~ܷ"9={_~z/wk1X7 V}iXj\[][ƇƗWb'ccև.pN!t.fU'>:NS@ \c8>' `M p/[ڍtzN|ki"N! #"GNg򂛙WX~ӽq8$P=+ ћLG sPޫaCѢ 8s:)F_DC}rE` ;lXێ7D(Q'M>f6QMrp1K3#U(JgMPM17G]3 ^<1-K}Rlw!5oN%MXYDvqRQVTȅS//\{ <_AG:KSU37%$uc )&xJL2$m74478wC|y+ ǜ;d!}r?;] r~/rS"iPg"( qQhPRmt~C}:aeJ911:o{Lj jM:Ƌ  v(RE'.5yY@Q=ë&Q\zU}Dc@%Z hkoK߷n,3LfrL.qLVqzIa5lӽ׸[jvzýrKLn-`kի@wI7p6xbiV`.^8_F~;ȆG :lj˝y|QtNlcC]]r|mys,c}壽;(!Zؑq aAlIvz:Sz\U=~d]uX Mxlmee\Zb$WsiH8L=ZdYՙڜb;߹.hVXjm9ge-9bl CCqX@垭o@Ƚ, 0vf>hݿ&l|s18c7S k>]44;_^k˫`K"d'އ S ‘~Fy&'#B_%wAtp cv4B\]I];K+yⶨE祐_/NFoހ*Y?yVd2cKޡ*E[ G0TJ @Px -~ݳ@UU}(B억P_UL4 "n<54߇`h4a(Xyf@h _C̺3V]c u8DG']Y3g+:*#YG&Znj~ѐ;SRH2qԹ rB r?ueg6{F"nrd:c5~|Ю/#&"})1 vIc"Br.FȽxx?@`wllŬ+/4(W|gKsg:.o] L jc?su/.~;)OD>.+zOuL:|Bz]Aйx{? 7d^p}=fM_ʥ%V0,{1,p>m7+*5 15umVawVmdd+gM\HD?MT>sS% Z쐺Ï!+7|=uOHPncA1ƽh2pۿdx)JqNUNΙRËS87['KҾM*z?V JM*|7xz+Ygsꐁ a:z13;U齳)%籃C-N4Ю\-+vU7>dkT8p{P!?qkT-~4G---wwuLR*&))LnG>~jz~v}|}&MW\`kk j)=16~e%t>J=}Q ) z$J,Xukx'f(22"]}ua 6g6mWfqn8P#n^]O76| k-kT߃ _p#ɛ7yIǿrTGDj[Wm&wzb woɝx>lmEDE+&0}KX-( pU1L/Bmc 60&8P)a7 o !WԄ!S 6,rpOVlXxޛԓ1I̶0ZW뿝Ij9XP|4‚~#9;YKŬnj#[;R Ɏΰoxuonna`@:Z<ׇ;$Oԕ;y|Ɍ ]8+`z!11U*ԉS y%ʓGXvq\̜b+5 pf (qXS~ezb##bc $򮭿F%0Mfa:A_ǾwɝpxBs&N:E:e/b#f߹ 3e;pڶDAU=t纤#)V*y%ygJCŵ1rrׂܝt&Q?.vA@+aimUۓz>-^_l]j9 U}o W(2ye2u4$1u Wbno=Y5wgNIݐTseC;LmlLs⫭--b}iF(6`k65Cxݎ1$a`깞&'OMXhR$e{v cbX GA BMtMHYFj5';ͫA-QJEt +=ElXZSOuܽr6W?p m)\ ʣk+ :zrzpI@_U ub'6?h6gOѩvZc-Ӵз/b*e igEYF72:Ć[zjT].998+1O찛Lp:A'wͶ>^77h`7iLjif076b{yoBFHh{AQaT锕Vr@cMړs5sk rW$^2BД(7>pHemX%2j#Hb4qgȜvbuF@òRfoHVJq.pdS\˺l0 -GEWw!xZN?GN '亘|K|(]w 0H%Ng=˿pAVOplSme/S̓˓ ?{`iUJS%K-9ev`[*( ާUնer:*z}::1NJ}k{=֊Ҝ%q;7Vk<{"g4??t[$;d\r6j0V3m]=+xvteX`KW[ʉ [nlz5qEZ.#J;b_GorrLm½}~5թ4ݥ[n!99usZ8@ڟۤmY[]]eXV ccc0ǵ:[vOtV^R?%}JIAMX=ҩfet_te`N`T7` EFMHܳ̅M''V=h^(E޲&GhML`[r_ 6~cFhE_H$D6^C[ QH\D.f*,J#&4V828MӔ>Wr'/~?usqi"d"$cc2^ bnfɮQv4dpKR;k%A5]RxZM55~z >/JNy.r?q%'w@׉p2 1p-dI!U-HDYD|~h5lB_Ut$mvL|uǬTnL2QPRB ^᳈iaAaS@Γ>eNr+ 4e{덑%r"z!$ϫz#469捸^Ida@'ĐY)hPzǾWikSnk<B%SȧWcu}w%-X*/R0n2 (Պ3^TM&ߵWt- ޼.^,|pAkKbsK7 +*bv \!ݪ_[?qY!mM琢(1ϋ8VXӋ`}ݫU9e.ꕲB«W mB+ VAᕂ+a<ݶ6 Pœkyù줡܎x 8 -v)@ 0|2>^[PTV e;vi ;dqspPr)M)( bHH- Kk/%N.CEpd9׿{',UUR :/'=oT,Jj5v~8A+#)(I꾏 {ԅ&ed(Ah%~~+"[ \@H tЇ];u.|f=,H\傑5*:H.WdȃdL<6f[ڌ^BAZwTh"vg?Dɿ(d@jQ.43X#OxmT/։3j:-7wkAfR~rH{n8}L3G8:0@+ʘ!T&jksw9ŰMdTm䱼GMzt5 )Xk,c|Z gVѧʝ CDE}&w. arýxtrGWȩλnXTVJmQy$z0՝{B8J2JrFaYmU#DS%SRXz'䮿Yf_Rۡq=?謃іg^,};S{5JϹ4oJX%E;Ny)P?+<(+9ȩs M&jo޴ͨ Պq#I`qzS,@x>x2msw}W{t*YXȡÊجZr|K'-,JakޟEg PP4hdaR@2 W<,s,-Zrr"C_j8D(1,pUÿ 3:fv`E'RW] Y]^ VĉZo4H=1q,=s(+B?]DG옏~T'^*dPGQOPrw̪vq7!T7qF{p~Fz=ͬvߺ=2z}rV|AK -yŷ IcXWPkkKBMMrX`HUsn2vڝ#QΒ)\( \}oPMA>kC{  Eq;a" d6N:  o38Df>an˨"T]л(U;2tr$e'2|_G>$Pҏ^oBHjmfN' h 4>$k @S duGΒ̝x~-(3OtP)?*bj3N>`>lYC}A++&BFGdɇ%*q~ 0q~*U1Ͷ ouwĉDӑwWf`.H\BQn<(`1^uZڲjh1zV9:Es[ E>gewawJ*BdSKAo\u^Gb !w=C[ؘom} h½|,s:},³i(n!KB4WRe xtqm`*Ѧ;S1>DL28}yݸCBn ‘y<P`~gDܤ[sA;߿ˬAO~V!K1mNnFFǰc-P7rV}ĎP_HUOZ!-x‡ko3"%K~Rk,sb |Tmk$%sX|ӼpB.*㍔H˨ ; p0vLORNPr7H (U*`d^oHyr/ROPxvp\,Yӭ Ms mx5, ~ݓ?:~o]:A9'1f^Dž>)-|?ȝ`qBD 0'F[_|uq!_,ޑD0Js%V'%09B0ab< fHX{?XFv'G*t?vBJ_E{zKiy:/?‘F:Pia¦6)(J(ITPa" j[v/ߵJ:rs4 g9ċ[^F&fxpFJJAu ʻsD‿m_]Rz#9DH[`x _y[Ȼٍwy_& p"֗FF$0H}9q,~!\Ѫ3 lT XY]egopTI@z ˟N/ f╿rnw{k2#IZ*=_!= rǵg7"wth}T~,Pv8+YtRT3vaE~BLOԵ](E9d9Di9͎ze8|A-:h(eeS'j,Ѿǹj K:Gs'lr_r\`o: ~1 [x@ð8&j}?܃GVU {Nm ojd'~{K0H4יnו5}[\h9GFsYwv0O2բXbzzj^̬^rVl9+#Z0g^kRM=bAs!!UTqRQB^Q2@Dh- "^.@>Bԃ8`K~zSR lN= E&ʽOYe/߸A,BBcٙ D_og=F OB $*uS!y?ˠxa#\۽H /N=Bz%檪Y78MJ/ Þ[FE^pA  S?zM .\Ru']95Bu"NTEM0\ˬVYx*k%${?XmIvJE1"$i:n 4@Q+4p2.ؗ>Lo)*HU8<~p,͟b松4j+.NZ~b ̝TAJYQRS1!$)?}.wg:[˵,-[2_$kL/77=}CI~(.xU{|[eYŃ㴉ɋuҹddP[G W;^sL#)ȝr9Iȝ(R#GS[Ӧ*3+*J \ 3ɝK }401<=v= pF 挘Gpj;Zդ=Q6y# -O#㲹#D1G@˂J/N(hb'Nf8Xe2{8N`Rx(uEq$'p3/ 3#&f7\b@T5sz3Ӧ͘= {߄Hp{Uo=ui.d$ + } C`EtL4i0 ɶ,?+-ӔT rmDO-XSR!ԔeXn% iPJnѴp~՞'τ򌇑DԘ&f١DPM <K>h$ X 7cH0\QV6v)6Qgم<2o]vM\絆7[B5c5>J&}8eݛ?{,.;"PNw^! ?%Se$dԐ!aČPAk5>KC\J mevløoVY=!!aJe~^~ᵭ1tV<ٍ֌bƳ wHFR.3WDz'Z]|"qa@p@rg1peoͺ]2Z>: 4Fkj05*d,PGky6H= U;ٵzDz945C{.T_olV;Og{ ut<a1>EϝvzT={J #g&0׿#7PטhR9uB͖ g_N&ndjSv敄BMSx/i8H ZTc*Nx6z޹ǍɖYRbQ͠PN&gRn! zZET ZB嘼{< ZG^J)CH w45i |ë(PPKA!ZN۳?Lw1T뒭qH֮rjw@A2i3&~dffKFNtYA nݻu>(EFJW&QI7dUKfgIKĖ LH{%; b xЊ7^zP'c:YŚI$ԗCq#}ʧTyxAxPOI!Ko=sF6@E~u H!g{U='q9+pt8gP6%WH{xg3b&R:IhW 90bz&UU7Uo]O'S$n˄ܓ5 lŒvh©odR'&` zkmS̊unAO8$%%%wmk;3!sD & T.\<675G] C.Y]Q~7o9۠(wc\Y[YXQX`T9V&c&1ְhWو4Y|f-r39K loI mTcߒ;#[@ݬ?<{WauԳ &JIB.^l6,-L/֯g`L/x(pfyQB*k ة@<@M*a VҥŮR-Sn()XYQj薿7?aXrs3v9$tV;\UP$tf 0\lXBP*d:[3TP=4GA#o:?=8H->v[#QQ8~+^ʭ;  PHGރ䖐;g-7% p҈HK:%5IhP-D !%Xb,«z,NЗbr_:][&z`avcOZW}v_)/ws]rl*68V'u\tVuɯm]XF,Rנ8nr ]VhҜE0"{:d.#SiaKvϊ$OȫȾ}cօ_>~Z+ݑۑ*\\JבK7xSV)Yh^rF+]6=tffkj**g6ZEETT Эo9!smrھ;}}EW{%*wISw'ڌgaJӛ//N.X~ga&+V)%:0Sdـz2<e:EG ]%;Kؗă8ʧ&!ZDJn9s9`?qcvTʳ3pHL]aVraM{nkg+|wR]VV>\8#ݱ>mV[ ,EST@g_]#%6+SG5cG [)/ϽyB'{&!MHXmcfl݃ubX^k^-,/j[Zhi"iyxuZM6P.Jn~pQH5MIϭ$[Ե;w YkD\n, j`?JͼN3C+}AmrwayK,{_(|p%L*%?ޖ9ETR)$ITŸcUg[セ`bMhd}Ɖr:C"QP)[G&w|8B/* _ g+i4<)H߹B9L<yݲSWgOQe>v]|w A8B3EH*Q*#܎q1s=E pN4Nn㓓sBj Ƴ ʤwSѳI-(d`t:;C,v͇VU1%;F^υ1VPnIMmP!侒3ZnTg%1bamR`<` 6RQjnj&;CP[5f k :rUr'cB$#%h"Hێ EN`T&k5oڔǮz .>{Agv,!FRKrw2|B~3kKc-ݸ-0Y=|[y}Obt\;&/$=;sgJY7{4E{Dʵ ?·qmD׌۔[Kқw;u8cUO뱡Ix(gCB )O*N.fi:!-c=|~}W 8z;*!rOŏqIΏ' B=hy=`dKȣJ#\[Ҿn_ T=se/.bD+rw"kLchJ' ZM\GIO^7~dA4D.=\"Ae㒬&+pIOps| -IEozF 4/Eb̐xs: cҞ\ׯܓAh:1_ wCÐhdGbq~a‹X3 Kϟ43v( @pZR{p9n|iSYܘ95gԔϒ˹ U;T%l&QUmZ}t %yk܂+G+kIIKssx_H{6:bxv.Ӎ"Ec3ptxx<ݰ)'{>v\'o݋Ҹ .s{MDrs=IQ#;sn!`mMA$3[cU+V]U qQm~Ѿݚ5wI֘7LiƂz:(kn 4Y6~ ccC,`l'>.N"G&~Xp >$ܤMb3q4ޫ<0p~\y)qp̣DM3229yr ]DQjcd3aמ}n(ww3c*H :m!0ڍ3+_QHԈPbg1k0ڑd^ļkEKCvVV,gNL eOMvl6tp TflweI-zKPo 9kcfcd3Ւ>I,T/#opah2{;A&){f m8q8dE&"*\,g.R2ز6 ,`0bɣѳeM(3k}hs5,N~}zG6NKZ2j¯`;A!5 :P`xgSj$TS/պޅp*o l|3,hY()⧬ d!hoH%J#\2#c[v<<}|nq&3 w??)r7c-,4o@=BeӜׯuz`6SGGlۥJE0&m|:xQE4]1-25m8*Ly ?.}1]FTI}Z-=֍K [򋚬ZT@ez>eb`w*8"27YxAkܞovVVVW=oG7 ?5&PH"/)n>q}ݑ·-E0:FLX>x/uCH;_b ֌/f `DOrSr=gBܺVFSk(a66[g/&*o?JXP26 )6)ց:)$ki9[0d'8T*}uVscvA7b̀K̦@=SWg. v]>ٽ-efwV:l,}EKg_\pFt6[B+Dk6~¹F|o EeU:Z\-^2A1[X8R%ɡ-ff)WyyۯYǰw?ֽ C#w5?&,DkVm;gl/wS#f*+\P#r{nI=͎ \sc޽Seg)uל/ӄZ%EQ=u+A ߏ9FִmvlvCBWv=5.cٽX;@yӠ4?;FLf/@JB| *P/~x$} PN${I"w\_nD:jfQ~ 3ϱhcݽr-.?8-in3<Ű4c8uIV_׀[t6\`-*nr"'Q4l^u,;.[߼Ϳb@Jj~aw.TnnZ$)ʷDx}č7@wT}\n7R= ܄܃b2dn\f: .1/g%`s5-e66`WRRႨPm;qdu]JH/(S'ȡ$U}e9d?ހQ̸* H$w5G@)Sp;r\n\$kGCmy .~mxF'qFF/N.OǬ. z!mM\yz9v*ԃ=}~%py>L| FU"3 z;MPЭP;gӷ$ѐ ;0فюYDhS,Sby]^Iޠ!o޾r?R>R/fןZGdqj6䎘\"1"B.Whoqt$`o#t;**LX!2q2d*%X]^*6`\fvbnG:y׹b@xp;*#7nR8xߨU>e Ⲣi4\H0'^5ⴀ|^77^&pP}S ikJWݽFIJ;z"!EM[usQ|^v\ANEK:Vg 8;+UlupTTTwLZTi/`SN!]Z^IU&]bܑT"caRe( hC}C\2204E "$9\\VsKä5|"= =R`+++sz |:Ί԰"ICCJ鈡\V˾2M5!%wPIzA\)d$~xYu2 XX 22u/IΕkF (|W\iIk}2!݅|#sHm`{& ;LSթݩ_X٩G+5s3%: Bg:mƣဝ' /و|q81benoLҲ%aY{M AZI2mF>[_p G(J=teq3Wܹ|W7 .bⶰw8 |rֆ~ܿPH;Jw7RxDKM%̟]^am=©F/TXb=cO35 '>᧩Y351zcW؃~Ń/'8G(Ia#^,;.ܱx^_ߧOz!ETmC<璼MZM%dc¯HY|yau*@@El@wY܈[acx.{2b[)~R C~:Ron~2r#2LⰙNUd֜!e2>SX#6o@I 1:S/qk}Zy{LM7ss\=l;ǖ&9Q5̣:T Sb&w:ƄrL';?ΗIH/ C[}7Ѷ6G[a(dP:a3zfqƅ6mIAPq1̩qszkW:<~!")m"2#pVmyC%Bv `~$uLE)RPaU:k?vH$E.knMe Cyv`k9l(r74^\98p|Ncɂ_U*+A[2_eiAjKr O=dR_Jp:C#PSnIl3얲ќp#͊M|*bdh.XO8+m1b﫮!G+/~ ĴW;NaMh/Wvc+!&04p[QTb^qI%eK ʎ0˼ ;~X%+YF={|t>!zߞ\,,5`Hrtz9 C &dDO@ޢ%"xΘ3Trȱ揪;R"#kbH 2LȰK`e@WUWK^o;j/#厼^ؘvxN`gC&M+Ad11~"`:\!0 LO^<Ѕ&IP5̈d0xI/sXQKF2֬e>_rx2׉djkhow*m<<5ɏDF2(!utwO;3#_%ݯ>@ 0j.+`h?@v8_>v.7 ;C N㴑64KfϫTk\LB^xA W2|ojn@rXqXPCm죢G\W3ʢwl S*^![ҳey'>"|ylRؘòY4jmF v5'W3 VC1qmm-P9T/qԹ d(P2WryxG׺Y8guK_r^!*zjsu"r Dח;Zlp4GA LSB7SS#T|sP"wLƴ2~~l 靂M|c~܏wǸD6Vߚp xl0L]QG`u`wfCY}uH@~T`bG 9ܢ,rr xDfe1_e䞟]I۶ۢټhlRyM,?{Yf5փ)EQw JM.nԥOOEoć7aW5A ˏ Վptk@ -xng0df%^X@ XoCw;{i犼Cﵚ`O۶ RCJB'H52V\9'Ơtj?0#os@MC~}~r#w;+̿G]!\Х& $4)g6zq.uX]v%ŝt%e_7.L.TI!54*] .4/(|_vmk&pl/WʙX-{>JcYּ"۰.š|_G>kZzoR\;Gȝo$301@u1MVv7mrHݶ-X=WO]$W F6aܾAQ&}lkc oɣc:vp 0ǀg\zMB*0f.B0OUS\ a$mPl r?v skxO!OF۟^9 j_.FU,vhdl|EDgtOG+U!wN#Ў7SDx_4A7)S0%kl%lދ 妫{ޠpD_pF D"])O|e3LשҝSGz& l\"&ć)7d#de]C>H\R' 6~~M܆JQ]Z;|5PAUx/ŀF*zM;;=fi*/oZ65着ڗ֋ϥpq5pB?yyѣ<Vc48ʩ6vc> j茋+!.F]]Y67|o0sgce sI.ԶKNHx S;sPzAD~ɝE-N7:LdGy OJӺ gӤCB7ģX+]ӗaʄsy[iGG/iڳ:Y}5['Lpt]c۷E&Ry1^0TkUnυbz +ȝ9&ǹ6HANDhIn, Klz'"1FXQ>\4HniXl =:}rDyL/<[M Yto,弚fŢ0iލђD W!tI $pDK\@#{3z,<7LMڑ( 1S0MVWrA?H\d\k;sXH 0P:UWt:y;D9J',}|"8ic(feED 3ޒ)n\h'zx+8]'u);۫KIR;yqWr,0I_&VXC=r8ߟ߿`ϭ17oNoS;>*zxycArjP>c f=]Cs)R44 4ۼaZ[[IFU7Y#}XoIKx!mg-^ޝLm-~&th*j닋10PSE}{|}H] +{AUE&@Fh->w>*S3MvӀi$˖PR%|)`$'>-A$Rehu9\+(NMyN2yrۢ3ӑ+Dֶ9أ,* B33WN!ī6#D]eN 2M|V(rQ_-N"QGE?Jf_BU;$1>7K4t*yMiO2]C ib@`Iۡô'@x{2 <"\smQ^Aɤqڛ6b[B5 Ct(x׿݊c>6Z[]fHJ"_yk'qR5WxdQHR3׷t6N RB{^N).~T?2<ΰ)_4uiIX8Of׈AMNwVVV7$d/`K 2#gS%L Sֵ&զPue-%a$ ^ yWY$ 'lmna>{xV?])Y ?-+Go7X:۷2<&rJ6xOpҕ-/nɱt3'qpCL%*v 'D'PK7U†LQ0+y=􋴦C@<\4!84kN8*'So+gT&pIGsGGz/@B7$Q-Z<ʹ`zZZYQǓvd|;TUh#.)k\bAMb^TqEL{Kr[_1K_;@2h@x-a|*xɡ^{x _8{X뗁KiolU JJX]EAŅ)SUrWÇ1XUܹAmWЈTDe+%u@&9--b6ĥ!)" 9)brV <&MFHqla<vwnNWsi#jӕ!(4~'G=(391 R5r!1; s4q}*%ՃH; P#9;FB|X̔kWOĒ,]sV] gv*Sϥ0Ojag4{4u\h|r9u*Z k53 4x߸b/?#+qu,{^)Yϲ,s"2|mGB0TG#Z 341NOF$wz\ }|9 )Uɱ@.,Faab|[)3{n.U =w-T-ظSE)!M{!UVa2}7LQI 6ЧWR&tp=6{sq 8Hɝ%|e{{s~hyBg/^b>yڋ9[/~zxD"TbQIUDK?kr'!w =7-&w-Ziڷ=/r!a9hn܉mCN;}7-$yzM,TTC&nǘDI ]-] :8`Z_OwO`{9 T(tX8,?, i9"1kNty]KsxGKW2ߛDO +XREs ~[2PHl%Ln }ER_őFN]7@/[Sy=`);ǜQةԽ9= 1fǛIAgiCu!CJQ!XDg]lxp,tz Ay܎__;ż`p'YQt`<6V!Y-,`Li`\O:R03co$3`ThB]AߏD9|Qu:S)DG92TH&#^0x;w憼{6]uu1E4!]YaBYWo9*g5#&(3?||mf6[ )/Y%;Y 2 >&l-]TY#zBl)Ң#0]1xm+b${,2DKӪܸdi)d.-.Uk)F=dUk!M>OAV|ZK\WS%.ƅ'9ZCm-Acs&Ȭ9XPPٶ7iqq~S;;bq\W=v6(ر["P7+8O. \d?~\vXSGh&T=\4 ]]yFsF {|XE*Eҁͱ~ ws2ٻTe/w~p] V?- ollp| zkfF|NC<-9@]\jKp%9Plȅ#N}yJ [ +ݒV1NrNܰ3@+P;Ru~HN<{?)S riKc77"PKtQpSN .# h5 m^8 vG@d Mw0?ewu/~Ӌ W QWac-,Ù?;z{fE6<"$Ǚ''''J-4?1iuР4/}1xFgn>o0 ,0QQU_ƈmO"wc,;pUL{IPȏud`.3t!DzeG]r? ܿҜ4g;;ATń6 o/OSD'Eo t夂FGccL۹Ă#T疐%qCݜ1lU@ fw$=ĥ%98\zhw1VZd(ޒa >rǕ$I~?D䀋! Ǹ@Jeŧ%&2}7s}+ЛG=?\b]6'fi @>XeRG~5>SƊqcu~r}b}5ӊ2o` ~_XwpAx431dN:XL!wvfI04t1$Ӧ,W28%G5'oqډ⩨ncӭxV KEamZn8S6=]fWA刬Be}R)|[ rW mxmdg͙ :%g? tv>PidPRs} N\XެwmMmHh2Uş Tb>ɕ]xF(yI7츓s:L䉛=0.Nc9A1u!qquuUUF yʨPGI66)cTpN'}݆ىTg)Eti'&^R/zY Q ՛gGF^Gs B\PE$go'PZi< j2%Y=Aw޺sɃ4:\Vr/ m~[r|9x1.L?0rKJȽ]0{aL0D.(]B*#Omj 4|1q,T8ùsj{k7|oLG^A{`x=wO"u'jW:P^'QjlV]ӧQzD Gց^|Z#ri:N #pBubAHR;!;P\`ZaAJAd1;2[mo$wftGGӘS$ו`vDQ=\5l75INUp)x.CQe.ՍZֵt%ۣuΰ1>on{VXB |R}?VLZ5//Z:6'^B֊ƓC {MvWr}|\~ArnE4߬eQC(V\bꕄٳwϞK]xu >]psӋ(]8R>z8t䨋]X!&:^[ֆIvUA[Fx- HsG$)Nb醰h-X+ַWV"ENW!J$#"!@N4DIp&$pFC"YkBVi="n0YV\1:̈́v3/bEL.d|ohNVA K㐔[q<1`}IɀkM6cc +<Rڑ?{CnLϟ&/ ,׫EX;իi7H] %p# ir? r?~ǩHX<(`KtАGwbhSLӏ]GazN=AM*Rmgq3ޖ)iiwo92x/,> Zc)1&~F9 +wP^3KS0W'wa99f`f$q$_\O󈽏VҎ9JdpP4\Ok kOap~t;h{ :, S7*xq6=9zxlS߰(2TBq_xL#д[ ҺdTy#^WpG@#OaW U ɒHo╾A8H6&9ܿq } hh ;d A蠯5^\+nRՆ#]hodu=b,6 *>,IoxaMx}HVtx﻽elq,"ݵGbI12[O|«vfl٠Pb|L.Z?92ܠY 7G,ܮM7|q'#c\)3 5 @ B`XCiP+ ݱJ4Tʭm0Xt1Y~Rְh'M\% \6!կz%y;:{0^EG*e;ح!sVE1Ht?u#:2 ||eW۪NH` ̵J!ST 3WeО.Yy^=buNf=V9ើPg0wq)|(g#=Fny]'#z譏 QCpep=8 н"EŸSBAnzQ{Qy;aߕx^Ub\30 17ɠO~ew2)EOӟԉ4ަ>Ady8h `vzìjx5gWQK}TO5W,+AtZrϚl[tex/~`8Zh--tOXgg}i׮ Ӈ W*e!-dA~Kmwu!w4ǔ7uV|" WUa&XNwvւ#tp]aD~d8M@i,")JSK45j;`NnqqA<8˸0)xdvM^/_૬ jjD1x%wG:~38Q0!w?`u [ LϠaAtAg8jqr[ !Nˆԉ;iD]-b1TAêpjԇEKEgIo~}ѵG2B|y F|€kY'=A!IsbY5@u_pbfpC/lt>Tt:~8p,ٍeOjjձOԈȩA8Nnd@za 6A׊{r¡ GϖRN&Ts?7p31zܾA ) 8Š;Y8k\!tNO/0{T-3QbM/ş^iX'wuD={V90;ivLы̂H|IwEGcl,f}昙F !.ZZ~1Wp1}[;=xإ3PZL#[qT%H$qF;]59q0F{c -seuH8 "i~MMbڡtvnFq4petD" ANb42M3F룏FY6!p91o$w <_p(舢S-){N`Dfa Y(.0Ɉ Kxs]1#C9Ä[G.0| /#| O20 ?>Ҳ- z{ MWcu2ѵ#MX  y F,; &$^Ԑɍ;+ U+jw¬ڂ~v{R3$kI?NmOb&H_T^D3 8?\TywI lm1h3#9Lr>oHͣV:Q8#59vc<#'t3R;K塷;k [e(#8)*Ĕgbn NS&<$16 />IeԅTSYL\SΝ5TRMNƟ?u[E s~%&Slo+BqOغ}$S5M-ޗz=Xm(oW()i:lNADvxf4@OWr2Evpgp3V;iy>5Cq : e/u1MսsPz+'H )Obz'7dU>JKK{`B&0w 7A項 VtRNq<g,<"Ny2=PR)[XVDqDevrYrY5[07Wݗ@6IEE'~ trG݂$QM=̙ta,@SMrDGj҇ZfANW{x_67-K2mx}AY-- G[Rs{$f_H &@yUɝJY٭ݵUɘh>Ka&ozɟEE Bɡ2?3{O 'S_OR0 SAg O]'+PCI.+9vn+UGǹ4B!Pm<<=10Poִfk~(_E v6o^KP}≘ // Lwp&1HUԣ;PIwIړ]uz^!=2E?6qiJ#+hF%K1%V! ]JuQ~ObZi ?/l*>?ˡxټo޸#u9{v.45~Fx]ڂ[t-CNx鎈3.{7!? X?M,U.UanգM*gD L<mz 2g̸(H3_>R&/Tƈ:7AaA~uPDP~FBRS5R`~k hq"W:y5 ܱܮ""/4t4G+;$w*uTKPsM\EpBM>>3LT(\I;kr7;irh CGL$3P::W$TӀF_]}E vQ#ɋJe-O=)j;Q>|~o2ڧ/d46 q' 3,Aþq؀xf܁!{`=)G%!8m?$ hb(P% }` (E!M )ׯ_G1 [-'E(E u$1L=&G1ԌT9[_' }lJk΄ yBriO4=H;%NMX mvi;/IR8Iטbۚ 4퍍) lIG6|WTVN:.HA.v~Y{4J,..,,+%~q HOH @JNx.;_VRh׽q](nJtݤ5" I%bM`gHbd{`,v4 /0PB,eHۧIfpdJ$~T5Mtt=oR.7$%wWa`W@F{]"ћ)? pqjs=25$!?OB6aIFSE?پ5;N[<3WWĺ? %Y_<;~~u*tKߗQ<)QZZ._B-7.62ZT ()ȗ q[s_mۚF!= fJ\O2dw†/Z_%w?^BJp't_OۡO3\#J \D˶9zv00'? p\zY ^aY\.f3fηF}n͚vݴYzž/ h׺FMu`H_Iv#IzjPnܡPm^bf/Gec"|ZI{Eo.w['UUQWNMzgTTWvJTQNaUᄘ6g}ijƥ.|q^ a{sֶaÁ=D*w,`ip3p/Q,vu-/Wn\:kImٞX]P+o5#F' H%ihh뮌)lj*Q3h/ U3j,3|\9%Xds^&7ҩ  HDv \{gzXnR[o9wЧbkak;iXQ7É;kP~ȝ;0w\wUOU+If@hzNEv &7ޅx ]{*qV6QzOAmM<$MMB%**#X;L0|-GmOuͥ*v\HZDmD"=!D#ݻt_OˉG&\VBblA,x'Iԯg+k`.yH3%.7]b3YԉqnOMuɶxM@#5J@Ⱥ"f3^COR[c{ܷͽ:z{ypB}'Ku&Cdto%aC]B%AHge-~d{}b~W,\HBK#v^GZ2:7œˬ߂~B$euv]|:y%q0zȏ"z׀̒Һxl0nuȳ"*)e~kΜIpSNF^f!5Џ :c}Ғ%K/ׂCV^'.ܡu-??B}C7>~>QO-;F_o =zf7:UW{`^֐PSWW2fe1$$ghz[l#{jylىBzּzJ.vP .cc}CxSk mCzk\Kuq nQ^NV7Vj2`h *R'j(5=tnk<tO&ڽJ,ޜH 4wFX 4A")Aag&-M`pO k<7z}mbxuVq`AÙp& [[c+M.40=uht'E T3)tafgzNߤv!zuw z$گ=YEf͑(@EVi^) \DjÌ;_vY7sq_X@(BCjر]BjLD2!AHvJ=|<-p8 㒔I[{CyO\a~9/ +bpFTs!lT&ɐ^a;TVNĿɡr&p_%h&pG? 34t0!@RR%xɳ{r&YTITv?+^s՚>:^mQqD\x<01;Kԭ)[w6X^syȋh3%M7p k‹֭I|`vn! &zy>Y[7٫t:\YzUH /?A ̕-F?XCQ1?^$G5Ǹ9Y^B7AcPMk50Kj<۪0>᫢\tfD`=NO$rPg=.XӧfK>k8`ԿyDh80ZCӎw4CIhcvJv^ 9B.׈\KW +O*0֊xrn=e*_TMQVVnyWǯ)u$1 .C Ĩ޺%fKYpwFtpX^zm#i[ES o̮-ȿf]N?6:yu +̅yWLkq<^vE`Է2y;}cݑNdlqFak1O@orYm_s RCpD3eO6_r{O|(Z/pnE%;0oGY[h9~"YFE G[䖿|92RP]m5#Ce k=şPtcK<(7W|E wrC0Ϻp/TRr $+\jfwe=wR3{b?yҢi-\&De>i`qG2HG?O^,, 2o(j(Km59%NP)8oΛ]+ktSzTU2tyI}"34K>AM\Fƹs1w/]jLܟ?zdΔ/])<(Q@wbR2l;6TWTW#09>Z3V3E', @ke[Mnhrr])RތIkg"ǖ 2D| 9=c ,8m.XG}DCwR >!teKFS;.4GXbw,6r^ѱujXy\Ux%#<;XYvu[=w"|M;g5y 1;f3A|n%Fچsh^$9TCp/ƶ'W GwzP|'X["+a f:z›YW0c>K}R.Xs6>0NmCt!m8 !76evi(BZqEgn!7Cϻvɋ/hT@0ԡϵ.RS.#6ܹh|Rq/P0f֟ tB&kN_-z:u; ׊|:q(D@KeȌAh!LMH:#V8Sfm͊ZMku6YUI >fFple7`3PNU؁8W7fl˦K#WOdzZˈ1;hRO\*bPI59OLΞR&}P!x mpUh̜ 3TFsV (#w]՜_?Sdɳ3E]ec1%rG6b]nk|Ao /B6浅:oP7>W1]$ R *kT<恪k~0I}rcM_V~ʦ`;}G"lۑ 34هq|xB:vț~z)W 8N:(WU#9EE:{USКݱAq!c.Be֥&h%t&m [̳ ˼KZTL}яxzTz(Z>,zH5VG˽Y_S2Vqx&nn7]o[qݠ]Ϯg[!6d“T-**.y9O ^w8+Jn㚃 >}JT Db}L7.U/k$Fl@,um0Ĥg?V9)m)9rCQ,rpמJb 4 i 0:_^|mGY.'0IK6n\Z:v:VNv>cܝ)#ps?ݐ`t Yvb%t4n2ȉiW"L>FQ-bh|&pc' ^{HoMT{?Jǔ&Yq1iVF_MFL+8_KF\kCS@![Eّ%,96q\")f'$qaK5Kn$5ʘ,t&="u]za&p|6SIZ_*Oj&p<]R.Ԉ)q_ 9Ve1h55 ):37$_TB7J!vVQO [:V]{ܧ:鮇_/n;W:m?yHV<o}(a{IojT l~vfn/*/ĔNDޣ|MXO?w-B'K G oFRCkMI*9wܻb4JUUp=xѹr]J\G3pQ2;?%rLLD<,n z(YmYGHk,{!erb5?uo1{a ƇNЫRza]mUV]sEGǔDv30(U2Yqe ~`5Z[sƋs`dW[R&{^ w㍯\ pW;s))oYxнg3}3VR4qD3s7.kWM~P ňtjX@g&_v0' Px[t0a2?:W_]/s]1qsT> ZV;~3cy!&iv|;*kwx+Qvz*#:S@*4hL_ "= <4Tk7!?r"`j5P;c*+[9vDedz{g;T7HJR!n0!g&hre>fֲ>xgw&>#TC봓ldYRA}#%NNo|]bI.p4f 4Ÿ }>/fcVTI/L𤹆ƹE1MĶ:I[Umb$a,iǒs)*:xftLMKHZ{ c=\vU[ZgMZ@RxDfD- Q 愄p_mI>:xliSSs[Nb>Ѣ4zN4*N?=?z5nHlGJ1;t <nPۑ.,*\mBn[y~R/ 5 [_%0"LrUy$Twx/g=@ly6Æx<׭X}Q4,l>}15i0Djo^5Xcc |r[ֱu37shz}م(F [;E^DUu1U4yA_m:bᩮN/f55Gf%uF,9yMNh*OyZp`|Y] f vk&DHlt0fNp#}f< }HOX|Iߚ:$P38SPޣq 'iOFv ϥcx%. J_">M6T;bFE2}cdS{,$]3% y۠GRmU!U#Hs2y[BW*LNy"2w¹zԅ{i0`\n&]SsjYy(^ԧkPڱ㋕KR7YnGwh}G,}x v؅.|K7&&J ʬX[1;zGՁJۄͦ#s^: sn$;qtAcīv2]\%ANoLo*RDJpQ ߉8o4MR} j^k{.[]~|)2&&4OK˼,8Uz  >ؘ#f#` K^f_ŝ&^B,ڡ-±($F\)lϟ9|z~uӧ Adyuc[MjRJzR9iAp\ 2rs$4^Ii Ud*U6o{6~6oau0fbLqYp;!XFFW0Zx+Ϳ\f?'f[QoůO?!D5E{ڞTLoFu`mҐ.lm{o3V]477-]M=PF 8XnƂ`qы/.!#f0٪wM*9ÜukYa"(9zZoY#)up 6' XB;%-mQXp_bFby!>jZouk1۶ 73X@]iz0~G&( v]c6d]NXSXL[88IF?O#śWmOkŽf̴ 88<+GSGLbH{ ̑p3À"$wߐ*+ƫlFix{\|Y(CpL<>X3k 7L8o]tk*NkB|\}N)ގ++k DؗAv`=6 i6PWIj2{vpZJ,TÁBj2߄?2bϱVdÝ5))V8K敘8{=jʴwZȰ߽SFm9FfHXI~T-\;p ^oLb !E];ӈ];rLs|HAZ?!;A+}@R(U]Nށbl?س礓0}lsS)#YEшjs72RA0iYY/ȐD$ђD+Y%5Bp9H"Goz \8/Cs⪫g#zj@f.TѠ5@g')͢bvnd XfΝ7*z0O1\*rlڥ$9 7Jܙ7~f5$(yāF/s %9O ..Z8fA z~N]iSᾮ}ViJZtb 1{9%8Yұmty-TQKW~RJCt!EK:.uX. b]?O[qTGMk<byUdn &6ty"B#]/*}3M86djCAU4g0??c0_`ls').6k+t]w2Vyg3}Xny^ ɔfEލk% w;PE; g^̐; ঻K.4N))1'; Dg\4jb% ,'}ܼuP}ر'[ M/ی{Ú'm/mUd9I˄7{A yNL rpYM6@lߩe$B_!GJ%] e) D@#"9{r$>2>&F29΂4nbn˜MַO W5y e)r^ c%sz0C?;{$gsMp֐ouZFV /TqVH=V( N槕&p,n XH]; xwQ>\ pJcݎ;K!YDwWx5/~҅ rhAc{ ;:d䎆w{ew5=A-+ n٭o. Ckݕ5H%,\ T:wCTդ]_PlρvXL㹮P$C{>Zw =0%O,L{ʎa\Kc^}M%}cNNl?1dU?&㱌!I#{Zs*q~p  ;NjsϕŝD؎(=hl5M@~7 $I[v؉̀^*4^Kɋ`>/Cj4CBXf} 1P2W,!0ci40okL/~EpŽ1~ƛ܆#441w9^_~49Ыi;~)C.Ae/;/=yͩw@)i(9Zəp9\=]dSǗ9> #$;B{gm8 \4)!e]Ev:Lj ܑbbp.Y|k'GjÍ0u` j[V1#ܧgZOLD͗8 OMJqa;>wr.[js"7Y[*ؒ5ۑs&X)f1ǝBBn ̀m@gx7}oGߥ䎢3u+ IwkOuEݪ:ff[16 ?.~kCFTiki+>7KGDŽdE՜:1tȡ/&=}ڄ/Ѫa=YY~zj)Wal\M_/ia/Éc Dð~KN{w|L}4O3caD<ג.ή Ix-ޫ 2]B4H4K,Ui*ɃBB||zQM9lbgEar_d۸[WقFi2"sӓթAs^ܤx`Ǫ*0EF"cczO^KC6:_9q0x, l Qv*ZbN=+@+ݷ#?]2riؓ^j/tWEH}A}|B2Lk#ȁ딽֗]7"Tȥ:Փ区ޗ5I][Bd3)bcq~=7M62} 5D$Yfw8y,D/O=.p =Mp/:I'>JF,ױUC燡~ݷ [oT?ҥHH,_ן~?8ˣ~c>BX_OYs\̯ w?O*&7OU\:.H*:fB)k32P2~"=Ltf̆$$sKwqa}Ǯa;ԭ"*j|S$~W@9`{K,?e4v7޽Λ]G`h׻{ ,Q^a*]l@ \I+>)TX 4 9U=A}+@(QyP)+ӵ[T_ߊ%Uگ2"k/} 2SLI@%~YGҭcߢ,THm=C|3D"Ѕh fh9Z1A̕ 7m㷠}5`.N?KQ hz9yn&[xO½&@!%֐_`yY:&ȫ#52yDX<!c@F] H/^ wzN&+3s/<&J Bz@0٭h(d]H#:),3Ŀ /=& 3&cUIpu'<6 Aqf Nﰕǯ-DɈ}} VؖD!QLnmb"A9[MMĴili c?._|TV>[̋-B\e6 O 2|¿Bݷ?a7#*Z0I'y ,XY-e},NUjlѸO>KOqEuy [pK޳3QʐcB%=;JWHO]GNq6+JD&B~Wq1@EtdAP^P^K>0hnӟXyYZ>κ=x ٶw>*Fyxol(;dNg# c3XTd1lq|K-b7L,G{h23k^ w7$"2f-IfO6 oG. MLS)3CJȂ>ijM_nܸ۫cwr3#Lv|w"lٟ/2pt'p}&"?`.\aVZͪ*dA·z‡}&ƚ.~dI-g$G,rt߽NT2TUTOFmEOUZGuG%IesN_O6. 0e&N%{!XJIBs#HVOǏz|<7')K.`8A}R.r7Tpl"[_!SeJz6h::8 >'=\agϨr65Dў.V_c:==98B# w`BsS 7p7oMSd\Shs;5H[Ͽd`[i)KYpS~?;V.H^ۓw %[R_5Ӗxn"y7j0toCףOOSȆžfUwRKhƮMiwEy^=me-rI:Jp"mpٝ; oixF4ʊ.EQz ?H…Fbطj@ D)- LSZ1ZESؖmXÕZ"-h@M-1pwPߒ!C~w+C.$ChϥxH/#'lCӛ)gQYUV|k.b6#q'pb|*z#˕qV&auν}ف:>1a)Ez*t#'2$b1ۗVKJ5OCT˝Ig {B4 vEP!%N'xk#ȝ Q.[}XRtL4iՒ6L ?3,0H7JȘ |W۷odG@tgj%aex?0 0MӚ2D=6QJ%cdo8qg':LnLHNh0>] =hc-vʆU۵knN”@Ғ6Vg9ݮn܅y+֭zwhB2 Xp;bD^Ki_}ɱZo属(?=,TX?nVQ,/&[k"e]WCY2b}^mMfZp/3m+C<(Ȣ; 7Zi=,|i宣GwT%v\dG5;PW:+5vcPy%<҂>.d 1N ~JdGS8 1;XQb 1+!f$gALF37zWp_Hko{;977cʇ5s} ^.X.݅w*^4v[dOꩤʧ*-< U cǞ`vll19p ўQ8 !֤)s͹N'&*,vJ1<ļ}M =Lm[8QHp{Is^NN5܍$_P 2#%F'rxbT?kB{bcc0p#=/BtObpG G,$Ē%ϓy:&w<3dod_t;PG݊3t4V3;J"8[8cCtm+پg|l\C֕RLzH{ó zP3d~pVp3i nJ "U=W+`:o/[ώȔl+Ⴤ͇vBbnuY?/} }`wv.IغK() ;yS'ʣ啮{G?z~rCJN/N=߱~zGd^C:|RpKMCcO>M|L.I$> 2ѳ?;QoA}v&ApH&^w ?C /8pcմ0#K:)͠f2 I7}Y*ƲSZ.!>;U!rHsZo"rs>DN޼;2Zo6hrnp^-(jIs6o2J?=T٤m``X$Ȗ|*z%:71vV˩DsnkW#JklWETH8@xZ!Ih5=@5WF6L(ylba@K4%Peh{mEhʗ --:ehe| 9訯1,vpB$  ƅ`:'ɊF LTgLf+SLD ùN.B3|D,r0&\d2;m,`hgS#cýVdP:jg\z L;/&& Njס7'RΆ{a8MX7I{9.c7,w*;ٯ)WD0ǁ`[wDiiZGa!p' J=~twjvgeх2%4섥S S%SjYvu6~K8iN?,R %Ge=jVך$2lO4Y3!}G{y:x*-{54!!$kp[ ǗW|ˆ;q.i^yИIy5z?/ɺ{I^~tzD%]cq#IRTБ2Tm_zT~ky@/<,>ޮ$hR-4 vS7 wP* E;=;8I%UAd45 C L.S @C\+臭ϲ+nECE*$JRS 197+".ת y#ɩJJ()̅))x!_HH EQ/Azv0 q=FSR! L# tB?UQyWHd8Җbs0B;S|l-C=T,7;FE]Uufp>1,"Y-d IG%$EęwKvFNPGBB o* wefbĭPx&6M*Y7A߅;. _52yp9.K^ߟlD|BƮU٬|{NOO=PkK˿wnw^h%7"sw' W/R w]ӏǟ8X ؘcQ#XBBH?x=+gg'y#RR\ʕF.Q̓2I}2n:ܷ`o5PHnIdq ajٞ~"acr,;D!  YȒ3׆R BrK¥ \@r'9 ot;$%kÌM,ͣsC99{QAI U0C3s4QW+񽩎[Xxe{/Š4F #ӵ&?@O{Y 8TD߳RD1O݆>Ql*jj*j$d Lzšoql9w2k!fʼH#'EN>3#qUXa [Uʶ*'P"w[?vG"Qb3$~;~7޿}'t?VϿvjz>*]V)$sJp" ~qK Wݶl{:[ؑ{*Wn򂳢@˖8} F܊R^^VVB󱾪zgV.>!~DJ}]4 mPIdaSC;thq|LL0&!,ҧ2 v+ y[RsJ|`|ʗf7=1(Ml)>u PKOF ;Ҩֈ.>20QWwf#M###CJMfJuMa, %N TL;)=bc Wj,;xsVL7LFy +A."simGz|4PfzI07pTa"GrSQqg0ml p7o'N98rIdE[vV^Nx)fj@TH L7IK#3ށ,oT,(ch!91\qD3"k .Zu)LT j|/ (UilU5.Ð=V!Ijp1G2EvT ‰$AvfI]9>ɦ=I~}O-h6K~TwΖ } *NN7ۚ;,0,"wVn6ʿ6 afirB@H4 z`7bi)(/'NXT:>oݎK¯ĘoHà&&9BqR@w`+$(?6BB@8 ~^X cU+m h|݋r=7o!Ci2iI.r2tY߂O&n38ӦQoG T(TVT 0&*3g5 8cF^rX %fS{t}oY",-qL ܧt˔᮪t˸Q\)Y]{&w67G(gs ̹WlA##H:69҆2+WO $߁!"_,$@#j'zeV'8hܟ‰OP)ԉ_ysݪk6'94૓̅xDe$εc0Lr;\r^ >$$Q$у¤T>A?^FHNDƂFoNˠ,MN2pRItRG&3>஢$ la|5s99pwM/G.E/NTio?/K=ʱ~sfE+/$#"S8$?'p_#Q'1w߲*6l qNb6a}e#2*so6X5VJ;?G.{O?e;v-ޅuqa'2@1nX ggBP V۰qE|Pȇயmεtx{=bGgG213\^hQw Go'! #FC2oD5ph޼Gj) w* wX"VowghvOaQSL٤plNF\RH3/b̈;hw # ,dj4.1b \fv' =N[qTBr;^s"*dYqᝏf,4 j*^g҆t(1 !4>wpwܗS[#-)Md6gBLw龸}/:vmޣTWb2jp_O-0z923x2p' =S쟿Ylv+Og REwnj'/*VY/#AYἏ#كA}^j6еlppUe4Em?x3gu`5vAuȀϠɕb/$[!37qz48>Ol}0{h-־}۴pCu5 ;V SSBRՓ&2֜>"` T3()̯DGX)kPȾC$cbD6+>4(JihQ/D)D Wi`܃7Lͅ0=2 vnx q@1/Whlt <*7***_ h?N` ,BBTj@;9+)e6φYd0:٩Md\6* GU/̄k3H&J=ˆW3tp)a_f]Bj' -hj KH➙sC^_ b_`ԅו pǓk]}ֶӅ7I+iE?K:HVFnϒ6GGS{ɯiLpE ,*snZYTD70hgus˴H8a88sv&q'Κ. ao:uFL3~ y'eNE)Ud%d4jeT񕉟Xg{N؜9s`}mUH%ΕVW0ӹT*q ave Nu$KoBHK"+3grMnnxͦtޜ^ZOA|թ|7N1p;6 x@)6 K\84^2X͹/pٷ٫bsT(G$k,9x%!@(aɤрr{ R=̈́k7PI.[5 OsI 5ԫ#ӤwP )39\`]@N)fso=AY [).띠5 dyCDB@weUe{堌1@緒_KX~~J[JvMDxO{Ike|CCXmҎ];ԃ~K/8rh 1o-FTiki=s@Kq߹nԘOQK4Gu/4^Rj3㒉*9{v@:k焒)A}J!-yx#xS 7L{c{rw|2.H"Gn9z'࠸\sLUvK07./閯+WH6&P ox"Z59!]]<w煘C >(DWP>Mhݐyhw).@~kc;rFH ir%F x'riۍn馩XGQݱ tJ?<]z!wKE<:괛+7p6gOlm_|saߐUMM/1ݻwŻvh*m/WO)6g!z..'10'^ܿs⣥!pG4M bYւy"1Wj pYI+nUTA(]fKΝ \@@z1TKO)<ʟL p~b'a_mΨ⑲=5EQX5&'@ wm)/>6xеt@!vAkO$-Gajbpߔh{5ujFhb+tIKFψĚ /.]8pO:bkOY]!cl}h-)nW{LQrk 5ќ(B^$'}HF* "D'4Ē^Đnb.ܕD}I$HV^=3J"sb[@7, LjԜP!x47E "IrXf Cp\C~ݚ*4 1 "Rha C()CAwfDs{>>L)t6ɨPO3FNGzP8o-FԏxC"+*3ܑO"da@N=^2fw0reHUOU{|+Pf$}o?{ pe%̻؟4{$fS#Gē 57/&[p'`tg uv%?dVih,yCƷ؏#9M_|slE[MAēWfց[cɒKI@T腅hB2vg55g`.P(.?]QyGC` ;(iƔGQh"Dž谒*9\w0DC!y J[##@!8f@$FtYI v:P %]'p?=LgLlgN͹[eJJALY, NtW@jL«R4m) h*x3)ao9W2DXH]S ]Aw]qTP!X>*/F #ُe[sN8(pXQ;ɩ)Ew=!yRI^@zwZIOIN~ p3GStwŽ&b3&'HZ FkjB߱2\_eStto0|6K w+0A Va\gLֻwĩ` }e6 5 .;r@4ڀ;ɱB)A8,րsnnnuq!hhլ FEfHx떇`ۡa(G2MUxn3ZE^>@1\t#n$a<*DHU%U+DžT1:]W#<%D"@hx`|QX2v +DL41"bDJY<>#Nh6sG{9:nQb[T4R( nUIZ8^ى,6&~˿0IJtp&g_i+ˆ;aYpGQ`:^:r"lXo|X=ϧO?F,s/0%u` mY|>@L{~TΞNן[v^l,.<<a9'*0JF0HOS!Ց1veɯOTVS䝋jCXҭˑڃFAC4 8R3汱|s I@Kj>VkG֝TBsvmJ@Gh7$&<duO5'WxGb&fI7>kMjSjC, V>A<\K$%r[Sy l0G-mGEJw!U aaWCc'Cy}/3];ΘfFfbqj.,3ͫJUr4?rIi H w;@lG0gந3pwvT TLjNV$EV%Q.:px-5Q&;s>K?ay`C2ǀd,6Ds vCo +01&Z+:t3O[ɉ8Ȥ5`T09I #7Zc=t$;p(u"`W[tCm]C;9mh45 ;#<8ŷiO{(#yWoX 'L1x}nt࿦ s9Ïn=~}gr-*Jy /ARQˌpئȆRLXyL@' Y]g*hѥ H[u|r}x1?mHiDV,=>_k~B MҦX9|>2=6HŐܝ/;;De-HLW/sx= 6]=N >W2sAWǏB.!+yu Mc ܡIJF6&IbPcйXxYkwMȟHI@[bb @4=*Hv2szRu⌬U`6:)g8fILwsR cvه<8w@ijgQ9g4DCX'c>n yyaTi4z`$^ G#'S ;C+6whh0tD$pEh:n)9&#l;)*WEy09J1Ӝ1F* VYBAoTPa`]0FH#CJ""vE-4-U xdH#%M ?C wWpw1 bN,HQb|LT_[K1'ph*=j?pw쁹4HO&Nԝ͎S5BF,LY t}Xߏ cbXgIu,Y8̆i-STtkr/Y}َ ?_~~i$Dѵoµ%晴֟& 2wnS.$^]^`\8ؐn6M}z - w_3o=!X7wd -OޱRkEL^tIݐD Tymc) T.:骶'N/Kr-낡\VI֢i֮Ҵ S0RAm@ ڪ22IuȔǓFse4J@vnՈӅ`g!oI>5ryed^USͱ;zeTGkkxXD1upl-{HzhN{#;;hz,ՍS&&$xd+tI|`*:_gtlCB-,V)2l7/6 8neD~W)Dz%ɶzdɋ3=|45C~aKZ.Z8<|8]i\?H٣gWJK;,/Y>z|ҷ?ugLNWåkj&K&7||Zw$:=wipgFL΂n|uءfiSRR;މEL t۠m~(oτ;CwY{o XQ_wJ1܍Xpϊ||enlUsɪz'v'&`hD3 xhJJ]L,@[k0l==e\l.Ir2P f1j{*~s|=?nwWXVUL1mVǖsE*傈1{4w^| :Oޝr uP ofkjH*Hat X]lA *G μB$BG' Qє0 0;6nH]EWAn=&,,%rhց9ws ϔd ^j%$rbpIhX |?%Hdܣӑ]DZFڮm!q7F QJT0ߒMshݽVOo*c4k$rMfKfIIML!U+gbo8+*Fd &O,:Vg(ޛ*]CוG.Z=.Sc,%&~1*xmU0%1SEHYǜGU?l yxbvMku|>~dٽmfMCivV8Y )o6@9\g}Vuոљ\٥P5h8֧wGsϹIk}G躰|:T Z& +-CQN.3|*|VGΓ^[>WN0(V!a"s7u|D;RS,{2>pR;@̡jC1m({}|^N ( D[{kd`ئKΑw} [0%ڳlQI$k=OJj57 +DӈHTW]au+ RFwvt`qo$GVV,+[;~UZnPNdcM[O19X1?^bVSS)NC(ʩ 6pN%Yl, 1$w%KZ>mLhľEq+q>&l x'SH2<g^u`7;X&ymf~x}ϱ;wjZiL~y@f \0.uu%;wPP=\+s05ű ܙ[VsքDx`u{sDհݮ$k >Op}m$g*48cT4}.,]gaF(W;VP wcs /4y]#ϧkxFq}oBHճ]jjiEWU\^}n.2.I9 2?êwۉo&ONp ~룴=ڿlpչoH=Q d5~ ܷo;p.H'ـv? w:s\՟߃#iw{p uhAN7uNOGGu'sy#tusi.]GYp2nn*ul܏:~Nz誟9sn֠EC$C=·n" .kLR1 o#w#/=zl<:ۍk*ܲNG~GF( (LLzo^)rӨduGү6ތT/w.s)5U:y"wqzkQŭ_?|'hZZ^JͅV{KO^p7P; *kspR]H,=jk &>K)ܓBvpW$lw)rAe>oxGE]~,ղ>w-uV@ZTee] xBee%/ֻ5~fu¨H =ny ?d+oօ׬,U5[C,'LcbHn6V8>d߹ _Yxcmk:{>`64I&\pӻ}X[ JE]؋+)i\ngJq#s xw1ᐵ&1=G: w YR]+2U4˔6~`]]Eϫas>b*$ƕ []Tޅ3Y/#uaȮ#^{_^L9нj'?Mj{`nJ`~`]Hb,zK'%rB:Z}9ˆBk,8bDq$ w Z eөl0td$ǭRl= pRܕ@Y G!ƣA~X)tq#/}O8u{YO]BaFa ?w#q+h9WKH;Vev#%p%kb" v.Ͱ CAn@pb }s"ZJ DCy\ #ci hS`|ܸ,SN.dDCgw'cW3?oA\RY-)b$]+p^r'ݙ} fX1^%v{X0m!lo~qm _йymgNxvM 9^+m}xCNbz)lO.bĴ.ܙд~*;n.p'G#gĸ72=[\Lp-;r8+⚛TX/]p.0^Ip~Dzz^̉Ɛ6^{M 㗎|@75 +v-׼ܘu5fC;9iA=Z{3Vi|ri'w2qk">F}re-8뗓)|p$\WZ5pWchx0X:+ø7qXImqt;YQ? 0DJo#-$-x>DD]ܝ2Nczm? w}6&rvR4vw"1pOpwP{ O߻\үP&"n!UFC)@yyK[*m*eN.hZ+fnnI7)DaQ9X]D>w,!4Lt`31pf[Wu13$eeѬ=-w`5I[4ol~]Myy(Cp_DRt8KzR]1rtj^Kp!kjKK"//B_Uή}҈_BXʚVޔ^_NUP0ɃA*WK<\aΣ8ƒ zD'⁢p=6Ep먌CݣH#Rw?ݿTLЮ܉gjp﫻 Pٺo/].ɧQvq3pl_d";l\Ƙ%c;h w#_88pV1XlǑ܍@`b*~'w;-d&rl8(QW,T(eZTۉl XgݙaUݡ-1S~'@ז=UD't5j^Z @FI/k76jCv@;wŽߖÓ c!GA2? jܓR]D$mhTRu:@Nw {ھߜHyYgϱ=-qF_7lޡ}m'/D6wy0Iܥ_**.B"51-Enᎏ)ܙhTu}ߙܽjxJq kMn> ½F+s39d=e\]u/)S@zg~vY~xG{_DF%;]Jw/Fzd80jG7n"GMɣ%+RŅYQ8{_)7An7tC J|jη弌Qw(˯0n`F%jPS}k9,RSa-qۚ)1)q̝2u pS>Ge籀OSRliрq--.bsm2Ƃ+|֣ hс؆Ec8)rXeYLd=VZ zPr3zc6ǣU\m|CT04gV '!9eUfOI 7Xr f]6KH;uȼZb% RT$[]՗F CI,V3G. U&VT#lyFK~rۋeӐmmmnlLH@ɯ%;lsJ iBփcq4?i0 ~\)*oo__6-A5NX{s<8٦lW8(r"RutDЮ0#]q2D%6gN [.Mo]vu,=&(^T^ U#KK$f2y7oy}Qx9}b!2dՃv}bx')_ >")w-"sWJ~_ʺpVӗh~k͏=~K@q7\[áW ]D2㗤{ukbZff&̀Z%M pWp"&9O#I?[֖9C؊V@$=Qt>FWyID-@}-m#/(CDhp&9DD&U/Öj[M_iUT` ME}ouctxfh@w["wyG{l266T5\ "6wݔp}w 0 dgpו;s&%RJ"b%pfy,pRe`nU8<^yyȌ:erlllϜ|#>\}f&ƈW1=]ԉ~[urjĈi=8|caYu0#R4D kȜN,_ݻoޠBdtWSԝy46ߙ_XwvσZ;D#(q |Zp76nѸv7Ypp?{Vx-pgen8,V4۽6ܡLVM"ܡpgQ{v沭 ]Uсl {:ME >w%;p';[? wⓡ2}r )v&g<%%[mpWg/.3szGZzoG K,܅BXrb$x])&lp$M1e.f# l`kR Gqx51&oY""c#?/ܣ}hz~Iz]]].; d 4uWSR^vTLϯ+)q@ i,myms\]sms AFp8؎R]ŵKRH"o(ݷޛw;ev R a=1JtPp&]ňdzbcJ te<.i0fn)a)SRr"^3 scScmi̪G؆!騣.[6IJJ{4겲͵?`})0&1&/qw}3xk 1} :JC*+wl6jzxQW*O|``Aky`Oqk|Ž{e]l`\MN` ڟ=3ѭ٘uH6Яwro֌I,ؽF"QhҶ%Fpg,\ TpB,G+ڳ.=%zatHXz9w0&E+ʹD_~%udK~/NDK6B#CNbIvs?N,4Ցsolr:}u=摑krMe!8DU7*L8.$-'|ۮ} =Ҳg'E['DQETQ55QD2hƯZW`]@~`?5ޗrDZ O**D8sZi R/jH0 ~xmxT49rJr 3jp(_ߍ pP"i~@2;ƬXܞ쇙z-a /ʰnyee|-Jo!pZb+LnMwدv3xzWDW~͜; 2r<ڽVPWq[-pW|K%CF י90^Hن]/#岬 9Y9n䬟k"Wϖf:cۉS-FХ/Eؓgؕz.{"X֥ p\pbMEgJ 25+3.ʜUfѽ yyGC{Mq٘avO("*dl)i-ç:ՌRe񡤘,+sT} 8N*Sϥeݫ kDA*x!Moݿ2x> w*s(\D/7 ^iꂉIWyy8&KT~Dx"D99 yƽ"GTXM%LH"3w,U%ՕU|}P{0+äoDM.zӅ) ER.ĢF;p:MPau|<#GzE5ʘA]UQCjZ s[uw\=+&.2 D=n [un_LqU8st钒#ҹ#mm5*Qd^wiL$Ep@Cam_^m l,]pē M-bRXϛ[ e?wpo4߭sxhހL+Iu=+\4#3_+~~ͨ8%&(5ͻGϹGME_x"Z .f45S}0$}6B"09l\:JLrR[Ɖ:#r q1r=:eEBG#F_guU{JƼKGjop'OΏ~tRFgcٰ,.H5OVE]MR88#bᲪĹߙq)L`Ӆ Y11`tݞdL0!qU8_FRzI!N!2Q:IX\LLhHtrPW|ӴAKEp_Ąh4"~G]wʆAqҠ:*vi%Du"]fK{&U;P1{r]T`!(EKڬlzFi?h&&x\]\"đ9}٤HK!njOFf!պ h{5JĮh/›plNڪ҅6u=mC SZ7kfĐcn'`;uBX`?Ǔ+r*3ЮT_.E ~zz6ʩIk-þ/9Щ7Դ,GEV"r5ZQTo6RB$rq؎ 蟜XG!jLOaqϗTvsӭ %eA1b!XpuMrIՈl77qh4oMYyK⦷* cq,k{kV?I~p7t1n{| N ^6η|7C)a&~rV`7ё۵M!O0*!XBܩZS8t8-`Q"Z^M_;9?zl]YB!2_}4Jp?5\``ҩ*,NtK8?J<5F''9V< Wccm]}/$#T7$@ ' Q!>SR8*BUȓkzUqỈDܜM':Cc{l =U<>6%])9ڕ3iq4Yu5*r$; ~;"G6~)i]SbK%QL\7&M=$l\$ɗ@NnxCN$!2rN*\Av$̡TqUnIv6F"ꪤ.\_ɻ``XT_TqK/^lk6)6׳ύkyp'=5 X2G%2/FQF ܙ5KpǤjhđhVDaQqr)/lj.w:vA55{ yAxp/w4+n@Xw6ŸýP}e'(S T[jhsbYPϒrϛMBi*3`{>2hL摖ZY,=m!. NC#/eg$B. ;'$B-„hFV}4.`zmcz/tTFAb@Z;.^7[yGo{TM6>ڪT}N_$(9S!ƅ\M*ġJ2ɬb2Hc`Wl`6^yu/Ҡ̓G8alh\Z+8S D9T_󲡟*v)ǶUrlUR WW謆_̾!\'3+:۵1шc()C~D8JOoM#;N w.^Z%hmxl I.KlzxX&hd.Tw3R\.ECpv/Fw؈aaw3^OÝ>#J2Ϥ{兖 p`mbSLުpK;7Mty/n^ c#,^Zdw EÉ-tm~C=]d $?lrn=Rh蛭Mҳbk$]׀Q٩q>Cc>:?[]WWXoͲ V,.7!#ۜ$ol#ݗ/ԍg~UJ6** &"Vruj`N] >dL4Iu.P}ja_ZbnuuH_DF]kd/&h##Jl)~;Qc# !]*FTLtəu{lڪnE1 [V`|B[%%\n[QϽj?4 RnrjhBGݏxN%Vs]]“{.$X>v77wY R$w&Z(E v[@p7:Es({B }Q轆Ek'h!"v-K,lԀRFw|_AzѾ 5#w ^w݂]V#Fѣz>lSj;dk+!vz-g\ ~y\C3Pc@g2^pg+!AX$~?VH՝qٶj}Tŭ[0#d^~`BB4Sn]5 ?z'N8 8@|wM(@Z,YH"*DnSsN,RńWq [-I 9[,vw`@],되 ^B Pږ^NJ̌XÒҐ UU%}oWzgr)~ytr2cw ں6E5z:z>>|tV&%6#IXL*ђ1WnUW;&}WIVѽto0Hw`&ܙEsKi-6EjDf>l}'17 /޾QG*E,ʩ2[WtoJӓP;CI+O(K}P_6HF&<25B*s_(F{UyOEEikH[iL)P|ў/&&ܕXyi4di"`'zI 0;{aoNB{T~>'q8T93=hz4\XJՀ^46 Jl>&pRdF=$i$ݓ\ȊľQS2(q4 xv9w~{TD) }c+isMA=~&Y?? %0܍w2,*͠p1;Z!] ;/ k߰/3g;vY/N?en !։[rJIVHxJ {{0Fh-9d:\ k^r tA8;CCPՆA"ė#JcT]_~^ $Y|0Iy. [-/%ْpXgbVFPzCwۈueeeg wџ6'Ad1EC|8N#ds EDE=}BH43ABPsC ؔI􋥽cB^JHI"0'FvQL?V5u 1Snۗ"k)?O rȉЄ}TH7COp3b~<: 1DŽM7Ɯt3X\/$a] "r^}^y~5BAP0sb]NB:ڊL\]*·ETPMM.j/e plo@ڃzJ1k;sϭǼ|<ޅ)Jw<0{q܆G2+7ߗqaox;W xt&v?]Z9P P2 ;MNoHyROUaL/|(g#1\q?Nę gCqU}qྞHz;J7E bAS-ImY>WjOپCjh+p{H PQ\;SCPw- W;M`}f6pǪEd<>n4. }pG;?>p%!re$%o. Rwo߱mv<Nઔ21`_Tw[ѓrp-R'I|rJZ#'MOʝr%M@b#2 :df]f"1&Sɮ9&̬$ll}Ii}}ii٪vvxzCB|{I]ʘ̎Y':DۜK,/$T{VXT\|΂U>Wus!ÅFٱ+yc>OkAhvl7=nkwtw B.cG*xGNKll'2\:+(1!N (nUݓ'>{ロnN{}p@Ec Z?b (%.M++ Ci?);׉He=$F $zS0%!*24+j^bxP⪃^ R)xVuw#xtC#dwyآ4\!ʤjF]|d %6ɂZ+.yTę_Ϛ]4Ũrȼ zib\}NBQuze>z{CL|=/կ>Xo-bo`k ?;en:Kn PXEqK@.)Z;a~R(O0=<@hh{kԍ~=^TblGsgHuF+ϵlIKQm?Fn޲Q( C%ȗfTnw?A])}uLڌH`Ý y`yZnZ8w})>{||[\E!?a_(ؕVtAH @EXaj%\HnGOއ])E#>(LF1KxU65,Le75}תj7j~mp++xԱI5܋}=2މ~YҺhpy %)pҿY [?JA7w10x(ʫe qʫT[,ᅱi=R}F @kMʷM*./,//t˾#1,kĞI~|vAבNC>͹~*١g촷[zjkv^S*iK_~V65--VBQ޹T 1dod4Rh!j_?I]һǻueI]dK}ի|늊wX^o}wNQ5p&SPJF['JH=@SL 2pGqQ%Oوƃxi&]"zP`n}\/ź1qA3CK0}$ZÈ9!:]2#^LfWC3mPUWL;=;< 81bo7CCx@ IEg"12ތ=\ {S5ZgӢ'׾23ҏ+Kxt>lU@l^ޅ l}m]:K>xm:;F55ZqڧE\)=5cTMLT= džm7;l,x>Hgn1&Wc~㔆v6wh%q8&jw.=]pwYwy1V"Jo5cc;wD#?'-]#-Q^pOHyzM~rSuMq~%MOسjzyݯ;[\oڊ%CIy}UTܼ5_5'|.*+LMo$֖{eִJuM SԳc?kYYDWN>uG}j)%\Q]6ѧp7T sQ$@OE7fr&,x>k*)3:tt,2B\?.D]h=&(tѫ//tQuQ͵SUŦ LWU_2͉F{4\{^m']#lqUB|VV0\ߡ݂ ];禲{#Ͻ{ 'wعTY?KO9Y]K>?>9ٙV_/ 0yVÁpMvu5)!lRLVjajr.d5U  nL)#^)%knċp6;"W%{,ɁŔJvLjJߧڨkv&D<% {͑#2$9Nxv"wP%I06ʇv<6ǡIg퐑"P@} P^^\Lܱ+4|*T)hJ!Z᛬W3tǾIqZ{{!!mp  + gyU* m<_;^ƗfA1I˸x[3Qb 4t*8,@U<wAK nRh p߽Xؕlb s]9ٸíy~gfXў=$->_,p8?tw L<|xqiuH/-^hذN:NjDEeVp9fT}ښ_(λޘNX,ڗѶbֈăبe5&&(Eйƪݠ6 F3<>[16$MM*H5)@:e cyE?hg4o6a+F+nxVߝ pm ;(cga+xʜ=jr)Ic~Cԩ;=X͇C"Qa ޅ~xDbaH }6g\d?:ELk̒~„_[ß;7p|zu%kNc#s"=c :{p ˓Bk*:He+o=WR=<$HZ:R(Q$-s Zijw1^b|hDZ||0D.Y呑n(?mB! *xA}p:si`\[ꂕaD&Jww]pgq! ȸnm w3ei0і*LME>sʧc'ͷu5?jfX;:MtC//`6[P]G1omTv]*TϜ!nTTbJ-j8oݝƬsehipnAie|'Ǯ6EQA}1- 9I]mcßɉ돾ٳ''upӟi߂{Zp3q-ֆ<pZ HA,2 m᮷ND @r5LL LxgY"w{0ҹ a>jw=-;=۩39pܷbDìsмw5GMH}:ػNx9ɠ DsCEH-9&vY11p_NZ Z)aʆI޾ͫ74L}> '*ѱO\~O67<),_Jk&c7Lg2]C[ު$m* C?\1vd 'yz~|>ُ^k׬adf'屆 ܉ ZܻwB7GpEUKB쮤تd[wV-3cslmgE ZZMVUyrNsqMxIt5)Au;UuD~$ wZ\OK*R]j߈:*#cuFj#.b6g,48NdG%ksܗ 3HœYN8qvQ%γAhsW7DX~ yե=xKit Ge#ߖ ,k0𮊿GK A'N>eZ c=}}]n+L\YKt/?|xϏ5 ӳ/7$ I)4r&g88d'Xy/?}ߐ 1;w8Lqd풤֯ [\M( qcs+ܨ#n7 7OXz*4pbn1Ҍ>,ETG<-,A#ԝʣ(p%ccZEa!N$-|(y^>%ܤ CS\L\Woi un$2wH.%(,lP:.p@k|}Hb0nJ|:Dz\.W_n=j2(Լ/?|Nm(vLԌ~䔈pvj.좥34彏6J5y:4N4ᩉ<rd2/Θ)k4mcDq:0Q9M&51]>ME!IoOᇚeFs(E{/Bᅰxit-BYKɩc]V~HR#6BExlFʄOesI+7w$SǾǿcNyMCW_h(NY_U`~畭ēj !薄e ]Cvl.VNjc.[NZuF &YYTpJiYHl"DC>$͑[1R%|$ƗV2Hxuƥh#ZI+AISNFIJ"N!`2zKf=9T&"((YOXRC1ޡJ·m _pFpiO %^=!xC,g3\̭"E͚irZ"y:HNZ֓éS55~VVu,]#/4rpLi8do~G{!' ቉ɶӹz٫=q$j"[afoz wmqi7-;vCtp Ni48 ŠT>)%.̨:%N.Taľ*pOM;|8Pn bhGg;ddnA1;zAZ\ Ĝ޿⫞f[?+o>=/wכ|v3c~I|w9RK(^XN&d^d922-ymTtvn˜s(IU9(x8 T()z[ˆS՗,v g?wldj4s{|Y{Jۺz[y7+ll ; w၆&wBN*~yrZggHP[wJ_.FEP2Z&=::$[UU.T o3cB >r,7A)QuY]T*dcZIʧv&à{Q?F DS%0vL=U. +Qrv&>oz,0(eIo  U`4EBC%z͂kE_geb 3z\N_/Q;θ}/QxSqإbU&ήo?_=_AaI#wV{Omp[nn/n",j1Έ;d[,QSkw\Mz8-wL}Ʉp"rg}.l}W8p"{zh'ஜniܝHax + x?_;ֈN* ?0˙`OOz?dγ%"k┉59Q=#ڞr5ULhF:34bMORrάK9U= RB77i*zʈ$CK&;`~~l#2wcSswm\c8eDՐE!7ƒ(lxP6( OMsu ΙO.!%qc393j'2)j5N)5kPz^Is_؃7 iOþCnUhPXŭ8d;cЀuhNUs+hGJE0̸Be*{yX:Ante>TQ'ޡڲBt:/Pj߰ #&*d(bڍ1HxJ\)}CzRR9K?&+[[*2`Ir=Bc__4.$& `buw}ITUT8c<G׮SFF:dЍCzp}iSdg?~1Bf-V;: Oɫ-7~c;Ou[uhf1fd$_n? +N2㻗ԟw|Za_4 ք;ׂ;[Cx*tͮ(ny9ܽJ@i||YznDNz2,Ǩ$?˦9p [;UXW}W'{?=;*9kܠ%Ym}[wwRb2*DHzzC#81Mʨ@>N^k+Ze;;s"RF,?JdI8L6C͞6Lwۘs&84Ԗ6Ο=0yf[Ǒ,g&ܣbٴta Q>R-OM 5_O);Jءk?hZ1o gv8WW6TTBW걹6M_h l{bhǖhωc'Ny13U&,B;K~(,I'M=R[d.̲V9K[*v&j8꡹;ZbE\>wAE(p$VF2#T*whi]f ؏ qΝ9" Lq/2.R1VD^@s*U/s jC-(Nt\:LRgK ~h'HO tȯÁ&}zu4?VwF|;$fZFw;ZM;[ OQ*%w x7dr,|5g~np?ёyuZlψupg؎\)lO}6;#$CUΈi|CGev w;wGVO7iCqO*1~UpPrsZ{?;^Ϛd==Mn-H-3 w% E-x`4ITljDg_qg1mQkif&%''$ N=Mu? ]GPQ4ά]\( v]#BCRJ.~(tA,`` y$ `DD|hETk+E@60_ ;Sر>XZR"L+; 5aqxˏ> B!Ci.+ƍm'nr T\;KXW^rA%%[n i\98񵅹Ȯ#G3jrQ[61M=d0\ %.0#GW1|"E"wVj.a_4^@XmCwQo?iٚX_7-V~TFTv&R5J(%9x XO*seT!!xz|Q$R,h32A֕TO|_hEW#?wGux=Ub'ɮp XVuT-{#uoYw̓1GΔҦ_m[Pi{:߰dW<;e;컈)Jo;Dpo4j;22`O½мlgD/Y VT!^*wzߊ"Js^un1/5ѓu}^4W Qo.pk=؈EpV e* ǽWDf칶?!_k mwDl|68miKpuTwxQY,=9z(1)%Ԯ,g/y&QV=8786yP_%8-q5B(|]sHiR!VO`Ml?}C>L! 7=|Y33 S<Ɋýɵ3iNƩѸzxy륗*46iqh:ImLY _)5scLb[B+wjVmqlady^^i\PdT𒧧^wz|$2B(70d7ױ_DB;sMY# Q AނhSƢ!A0\4SB,Kg@e8TBFƍ;bLT*'JMetS2x%Y3q"׊g&שܩ _x[ʨad.H1yK|d+ H(1#P8)uT.p4ݮ{ڄ|v![9akNNUF{/ 7i1:W_v_H2ꊸlvF y E'2+h{aزۭp6oK#b1o1C utKs+Q IJ+fmqG׮xyK6[=q~֢U4Cb0 qMzH~C!dmEa6h%8o5 ?s>М0_W8;QSQ:Ǥ_PgRE-h@$ҭ[JːdaNG|{dBdAb:#H7PPT? +WzbKa_D_lba}9LYv()+wcrC!(ⶢR훷o05)7VC˅s~b8i^~0T=T8 c1V9}DvᅱnAw\ ^?<\T?U1Ȼ)Ygp#lYL¥, 9A-ף"\ tۛƎw`z9U3a#|wZA5iew6*Įd.(6Q&y*+xAZ|g쌼 c_<eFscXt]TEN!P;Cl<9DrH%ӕ="{D(,Ov"̠NUgXBcٙY|qgq #7z=FaA<և~a`s0Ejqڕ$/"!![8 &\r ~!5f T&Q9J+aͻٳ5J  M"޶#mQyO=Ӷ"5rwqR $a;YҁI}[[VM Zvm}]|y,Rl-Sf5|פLjpqLX0 Q`" 3PY]9W;]~Ml‘@{5w8e%8*;2qQ/|s}7ng_@MQz[zg6qWbD&\kqvjj tf P_)W~&l"Įr>2p7]08UP7WWr{9 M˜0T/8m !0݃(Դ] aΥ=SRNse"w]54eqb p᮳/>8NV h&l;b!`Ȳg*VNi:֓͜A@HetBb_%uPLInw6-buaK%n, btG؂=H~Cd_O7q_=e-[eL^c f#JEBYL yzG|mq:# o[I5MOW0n>\CȂȝVpp;3fV퍲)oO5u2DڋU$CJdg0֤wAV)}G+M?%"G#f*_5?d8Nhlz5o-74gey0 y+}mqDV8V:~npo~w6a ̩L?g"wef pگ2AA#I~?&"V$bV(2`n݉h9:&B;:*0>zoл="" .(#TV6Qxs1Q7yՖd8D?^K+ Urji4p[!#O:FƓe1nh{W-LoNa3 ̦fGQZ!~+$_:.jb`fz/`6n=J{v:[ !&Oh_(mBCO1pxsRb.)%\憐VBPu~5rP4ΏuDۡ (M!9Y "2D48ׅFqP.$d\'5sJ t-nywIP=RJ*ݵA\@xg恊<$mcy%~pH,{p'ln|6~x`8tݰ77TďtgG>3b~߽wy{|q3缾{yY;q|8 w: RompÃqX|< HɝM;7pwOӺi?U s7w GĤx``\Acl܏ [Z/oW nOeڈi|7>4ŸRד 3ηKpZ_8D@)$s3Q˅I{KӇphhWԕig.{҇ō *m)%XQ4V$޽> (B+c#&NζH~@ʼk3{ݘZ0b3xHc_o1mVp{LXKMvL1]Hh50&i( xfU]EX4BOM2L."W @m&1^֋Wn #4wqgy!qW}}B&ϑYXzޡ<Ւ}2޲* y1J%YJe}/zԔ[]:*+naPg^ײ-on\~gA9t֮HƲB=LsQ _>rb|.ʯ7r 3cFϚC[6{i|wL0g\/Bw4Er+,d*,Y qJ@3ƻ)MCD A %Uyo$Dȭ ǸKf u[`JoZ=Ww2yα{1Vp/#@aA-m/|#+ kѵ?Gh_|9a<PR@k隆ڳ&Q9Empȸ&TQ=io;uC 2x^@oǺ3KC^/ކq xxtSgN%acJBi<ݻȗ#qʑ y;_ʫC#A=.wut_(ޛZ(?D?h'p!}Â8E ZZ%KA'q]ۉHh}Vy'Ib/TK6#T*zݠsKMP#'^$bu8!-m=TņYh19w5a3:%m tzm8XbqJ1ev)U7Tce,w݊$s;C"g9'h(o*L(҇iIIܑ]9V듷M>I请9/h D*'Ax@G*NCgg#=sL5Mly:8plL XpqF@@VyJLc& ORBa<"NdQ^# t^I8k^eŮȎ'_LC)|g o/Tf#v߾#Sgq>mw0q<:.HuX;NY;auX+dĝoN~nG2;jy*tY줠2ݼ}miVs5C91XwOQQ][}E_hM4oݿy<@M7}#OC)#4< n^OnⳘ M;mf@_ DTBPn&\neE'-rmYg3@\S1~DT__kkjjkxݺv HJDִoB>$XQ&.֑:\$Ͳ~̯y0$55~D37}0aE+$ Gq!*(=k}ׇ,@Qu9A PrM}ѸAQ|J]QX[Y"OJ-+[>8^^Zqe]3"o_yu|\|d|w׃qbDjf'bq.Q,=!|w?4{mwٳc#@}5 HO5{)qb ,s4V3 %xtm(G~Q@ \\vOw]'S S_:RCׇ0Wo8'\{ Eԕtc!4܆m ƪ<ߴ~,Ɛ@;"Tjor[qU0؈Gzђa2\>;@z<2UhiQlʣ2g@#0m"hZ!G^F"?ߏK3FXw$./RgY.XvVB*UT69|9f}o._reӉ)*sd Gl};۶A)žhhu<\>y)w|>bf< > zA{ 9Iaٜ ~w6 r!78up@{cIvvG해n^6MK:c[atWEBa @(.p!"xl9n«ȶQKe^|ƲH5!o/tH!ݽxz|]pt<>oO?>sƚmA5&HWG^=_L]kkYkUtrzIRXQvg=cP8E%ZoA']\HWȟq;O˚P)+=!@wL?)1 $N' xj}%&;֭[('B1Fn1,ؽP69u6?{r٫iv5d?RÎfBTs9L#壕qbp|Shޡ'F壋.EBѢR!ZX8"j(3tJ(DX|Rz_E'9"OC#\}E}@4(e1i_%A&Sw/KF9qHYUu#ruXnTv,?v֯9˳r3Fܠe9%"tѧom-OJʫG5fN֭KU=hW &Ϗ?wE/, }VB0+R/F]tf!)q?qA6Vma*G@6xFȹOr}9S rZs >!<7nl{/ּXD3^z5v9{Lq񬢻XnI6Ej4S3CV<{CnF#w'(5.s 9,An GbqmĆM=Æ#{.]B" Pw~]A ;d/eew%]W:~/yJϐpr9[j RrblhCw`-ƺ|=sL<bZչ>Q7$;I,tHU!9y Dsλt}NS]~FDs2-+,ZSpZ4|>]˜dd0”*##hUϫ/uAhp(HB/L c9 Fި)97tKh "K汦I Bp`O,o%V8DX"13^~Fa(JHyS@-^BwA߫NN֠>$˗!G<89 S)}o18 h,ZQ|m6O,GpeUxg1 X`z[IPP^@]u^Uq@%(AG-Jr[eI[yl'd0PU^gvzҍ{_:"nq붩kz1#IF-w=!x f1K-]7<ۖ )nLH=|P\;Bws[DKoC(0[\[[騨m z׷ u9}*BܧW&o}7/pr"#G2V \W"WWZ`$ѐmW1_q3vLUEzeP;KzTŇc"',ĝMl]]iU#M($MwvgڶCo`^싻O<_R^ytōGӷVqH[4u IobBKeeQQvJBrA#Di:'ٌ6-I+Y76u&MMNA]›=V>Pz}ht*pzK#md9"W(HG3Olo.*ӣD;L3}t,([0ûG2a4c" '-4xT5m^\CZ-1"N-q8|1$ޙsqwC%gF(4ƛ~6)"ŎId 5{Lถt1|% 4\ԢUZHSz`:-yD:[A()Fb'.Ư ,opcc!ڎ L6_'FٺT_ܦJ>(?Sp0/ *%1kmZn,o޺xVT~\!AU99<)'[Jovʂ @\La"K/['/Ǩ+ìMV}=tp?i^qݚ z~, xfOYqs0Dơ #}<٢rBnɦn; N:g:-,zkFۑ9G˸ʟO|_ LoFEDہhXY΄M`^lhf@& ] v=|)PS':.iHl #3^mtZsպV[lm }'@Gĝ2S5#?qG2ė}gNE^_k/_q K(% E 3,{*E-$'+NCD܆$7S)5gg'N&!Z!ELjG9 Ŕ \npฌ#$t5vÀ 5 S`8(R·hǰk)tңft=#t7Pv;ɱs ;zGByXDiP8bbo7-*;eH%O0\8Q;NDƞr".@6ڏHNg⬺R7y\SV7㺅L6Z5s.Ry L0g\)v/ޛG+9YH{C@үWh_20ǴTgy3\swkuYU,,n=sfvVJ&^nn>Y7**jom}q/ҲvVn_`Ol,ӌ)3gj "9$qAn 55? kcD˜ E&FjϰB-z;iB:"f̤tͲӧ qYU"~dTh{U3oHR/$ްBݩ>¡%KO*wkAuWbGÌ<lq5noٸm7.\85(2tҳԤuu'$$˸^mUUOQM 9;:#z?= JJԳgSc0qƄW-rTeF-Jᔅq$Q(Dq} NK#&]_-.Jo,(ΐ>y$BD{]"?ԁ/J&8JH?[Ȏ!,|*@whA_ EMP=poKɿSȲ3lI=ZZV06iQ 9*HMK1ۚ@[ y9hbGd#K P U *µ_c+{U}?4[*r)L;S蝅pIA]to.}ZynU(6537{P&c!^]{A^Iu:1Ą:oV6k#Oy$CQ,KޢlP$4^mp5F#ZHIƏb$EBQR #je) ejy0ZI#]#Bk12dMRB1cC>ek9a}`5ra`C*(!-[ϡ<2e> w) v ՞t>[m]/ǽš6b߇\G֬ZU3GX1 wzđXU@aH@ٙG52)'Ga OP@sT<#0$0BLE*؂N˴K#Z]G'$sEUOtˠ0,.T* P C##N½{ `dppW^qk-C& Pl͇1TYȁ Qf~qk%h*j VS0`{(gӧ_a@%[.Hc$'R_3CG^`uF"v6ZH6Y\FjS %Iħ,75Im)32V匩\)6D3š d}3?B['#uA8K2 @ctR emiC[3UIK5%Jc9lNv-\l\6-k#m]-ؙ[ڐo wq*tjX677o|}Ϲ_8'8z-^Q"OЬGJ>#q tcx<9e'*dD K[Y4s22Xt-F^߅ա!݊"&j!*pxJ8$lYx@~a±wT i;zWLDaߴo ĘYY}yIAwVpڍk6G9;sok'_󽽅u-)) I60 V5 iϘ7S p?b҅?2WeF@t%ROU:6pe>^f@88 Q+N9)n7܆_ŇWϟ JjN2 )7lǃUH׺,w+*,0b$+bD͈j@Raofq4@$[؜ñKjB/Z<X*슠B7Hźhmqk=GcS2Q[=Uj13G.Y^fyI~/8-epW\i_څ%fj WlRm|]4ru{=K!2|' k?=B:mX7˷ cONs[3>k/3x|5GT6:;7 9{鋳m; vY ˼}Ξ};gX[;mmhD"ZR:Iݖrhn.X ޽ "&fE8|xB%OaԀꁻ5wa7$8ƫT4\X"Ӈ3Jkg'1|+rW(".y mGtt4#~b p-dh#tZPb]c)LuQ U'(tF6;">i2D8CH" #:J ŎI$O 6si1rF GEG':;V;acÄ'!~KjA{9r[F9S4D(#nUy#-#5(Zmx Ndz{[y>mq5;eʏ򪫳55]LS .蝷 lRMf)h=bic)fڪ[uS]!#,#7|\53W矯2ظ>jEz Sꂧ>iP=|H6$P rs?؆ 75iWٸќHIn@-}:24 o՟UdҷN L,>,:W2'#݅A'!@Ğ}fʩVkm =CLWCح7o2 hӛydNb7⤳3, ;EnuAFݒN/ :F؛)<ՊPwXkXBu1MO4LKVNpg-G ]w.}X>]G2ߪtÝ@FLWwyR)P7_!ĝMiHS=M `Ɔ3#nILU؉H6#Zm)8O#BzZC/DM{,/9GeQ;ٌYh\oKڛ7֖c4 BE/? %;|o6t01Y1YS xPIv_wS5J\Gsh;-2Neb\L7]|xaaEJŝD\)V$ q{>Ln${$3h`%g&hU7YQ.#҈(_Bm5.8iJj-8DX1ß|JF m~V}e33JS_@2|YQUJЍwL2^ib#'gVDwJHkAdke^b`A-\';CR&P\Ď$Sq!hjd'q?x+Xyp5sc }-\|Š:2,@*}k:V8N*=lv=m]~vw̷0\=)R#:"}&/2ɧ7ĜqqT:J[B.v6'l-i ?*;D vl\W[u7&E'߇(jX{ъq>-5&Z3/PL֗a?l,Եd=&"rd5➖Ny*_wwD?wo*w1lk+]1?w4!\_2TT~Sҷfz\>y'nAI5} KB[p'PAW&&F8E#3g޸ȏP9WxUP%(W4pvƈSn.B{z`,P$[oGR}vG Y™wY'xȱY›> #>L;T#e=⒢1A /V\ڨd%rp(jƎ kcN־ D]lWE 1/bΓnjpgB{H @OȚn-|W__V_W铤HilD՜OiחXxبC`$=#=Y&xG˩O򈓇,O.х(jp\N\Ln;3t7kW1#GRh<He=sR":N$;vQb†MR@g2h:RK wНT' ̸}z-R{~6^xY#pY} 8}\qDZgSx}/=aL9!&d勴eӎe?#=Ts'Uw]o=-;bx;R _so;A.g[\lm?)-aUsfC' +t\'wb]=}mSy'ڼ+?l5_U4rWEyW,;"-W%~~UXN۷ N}tտS8Їuk/e?b S*9xi`?O )}7* ;χM_@ccl.T޸=dy2,؉P>D.{@JB-L_8TG(qg RPSUEEԊ t߀µ @ +r67'S5HG10Qm$1cq,\"rϣf &YRr1?iub+U;Φ'Dˆ h:EM_]gi)ڶhXcnѕn^&IܱNj8& ,p>}OOyzϹ~`xx#osA -UEn4Gy}bR`tPq ;:ۖr/(aē}^_x}fh:?mvӓNy‡a=S.tt=~]a]sKt 90{p憿aNdUrS%6B{hAU;-C~:ܗ:q$DBxf5⮣]Z!Jl _ɋu&XLwş2q#q)wTn9V;Vmh3;RiȐ<`}6n >p Rv.&^uעj/r|SLGt^  ]RR̦xLC] l5:,~ X@鑆ƣv0/ra8ԣY}ɓP dȷOrdpTDp1;Dd5F+q"=`54; H %M< .FGI uGᶾY Yqesє%ߩBB㘵0ʱpgi7 UG7WX bI <ׯk;X~<^J1u,A;'H_u/ܜY쁹Iw#Ja6i&bҠVtdJH_C8ȑeZƂ琸[Gv{F{X8Qӈm `ǎ|+mNGq}8AG?2Dvf t3}eegh[s@͛ dJAسuwL߀!<==dU ``kKkыI-q;t(vw}ʙcCk } T|3 u>r&Q2 Y{S*d}~L)3rЬc՞A{oZF'*R#.Ԡ#q'8EZDI󢰼=9"WBz~\.CrM>j 94:b}fwjN+ BMC>H&zZ@jWdst #i($HD&΂LlX(qg| %ܑBJOdnf"GyW|5G aZ2*'|R8&;8Za|$l np3Gm+Sx0>ϣr2t-8܀趷ٍ3L#BA_ox{i#vyi/nd/D񩨹/][ C¨>< >udkBjKFҳLOO2D!A%2!偂RB%0+m7(d`F!GRQ&fR콎 !G4C$r:|og'lJ`JXdL=(Xo]l-%h?G~4a (5#yk`06"q"T $h( (^yg- zsrhc4._0NGдDoNߔhX_3-0!\E;JQߵv0*٦;ab<`LDb.8f̤Y{1~=iĴ;ӦmamS?`ڴk]iv@FE&8DpDma5AҤx!XҗzkoueG D}!3Sʐq]u-rQfi+Xk{Os;"ͨPÏ΄;5[~&ȰQoŖmIw *Mq.G͌wFs*#|b o ePűӝA ]:QɭREK..,rc+]ƕQYaj= k6hk35L1"`WW'C!>-?x" aq}UDɒ: TOĐ ]#TUO-YRnFމOXr`$ Gmp\@fT>>Eu6K˧OOw=%x'+DY,,+u7nk-bHFZg1(-p'IWysϋtGOny[X(<(KA}q~'Ol3f5R+9tǍ"e0e)y'76l^hf^S%/k ~8'^㡗pF xv4/\rd?`Qjv}ܓoôNFcGy5 2.`C#)vxhWCC_?-Iv+B{!!_B-Q9 w]0~qЍb>ٝlDܬNɓVk ⎏er/N G „ȪW?4b )ᩜs ېڎQ% dx(+-/@b7],#ܑS04~: ur&%q]/ ><(f3˙x5hl_cFxו"+:`/Ӹ%X#흮k!Two W p>Juvv6**}n,@jf[Y_ 2 hqM:^P"4]0({WdIBm(83.P}F=@]/ @(r)2t9xP dk:A?!Y8=T@M'6E%Qb͒yͺv]ͳ#l9}F3rѨUJVlnq KJx40ޓf o#+{OVTwzucq5u&5Y2 = 6?pCf1E*yBT&n>ۘFżuc\,^!xyu;#xq; I?9LI|εk`#HãP W˂=ًא +94 SxUd%);eshg0#"#X?w&uV-V@_,Ɗ.7u+q_wܳr1^r@q)8_ .EwZw!=c(B\;;>ݣAx2VV칩FA[!iBns&D˧iYa5MH%!wqw;0gǏ2SR+0xI Q79r:'Qt8՟\MC+ڦ2FHj+ABNHZS[49pžˀQdDivx٭ 閺k!_ſ+q#[ɻϰ+\O#;ݤc(xOZ!i'z1qc=*E3:R-EI@2&{jSB-qB\l|h4(oXh0mH-yCuz#O/t0џqC3nYpih80Kj${(%:V=O 031z?>q37. oN _,L0pۯe ww'l=Q;;̛ |Ʋg;wg\ţI;yYvM{=lѶ(PdN@I#W}Y+ %\T ݈ @?dD'˕:M-+) r%Ň wbic.Fw?yr]ҍw;5b.JS~qGG]CMIBp 'ۡ-O/Wl0 LKѪˤRv+qgZ pZ`!a p$EQ2#\zԂZ`$n78YMQ…ƅ5/~w=³mèJջBP (_N>isޮYvLۿar*ݑWNILHΰdiy ǃPpsR~zݺ3 {ϔM{ʊ\k'V8-@Tk]#E ?J]ƜJy%oxqxĽ2O#LH+|Wj,,fi?fϛk[Dn#@xY2B8"笈:UsuW\dA}_t#Wf8`咞E@ŨٷaMiF8-]oa/-M_hrďsU<[AA[ gJFɓy< qh)wk@-XSsg쟰e`Μ8lX9MYsaS֫Wz|gzVRhkHvekhiٺ2Y]Aр*Ցe_߷{r`>#H96,> ?z;-k_񡍔XSE-E'"ʏŝzc*9 Ns qՈ;Kq99Jw;uꝻ::χ{~v\ FS&h'-LډQ"ȝ!#L( 6"mژSÈPĶYzςCLf@-ȵ=: b{ի$% )#9OjL|ltˆ88J1Rbڈ6ԙ_OÀg|i OՋLM2{(.5hTƝ=RoSOqz SĀY h#[Ւ,`-QSFdU#Ѫ*{±l#Aa8ib;Mo&"PvJ-'$,[BDo舳Y3FrSZgN|i=(١&f*C"h L+X;GE<>72}a646T5v7wח74y~׌#}+̹˅h4oM p~Z rdJ䰴LӥA( | );s bEn:ʥhyݜׯ6.Y3e~_, qMmצށ/zm;m>6i0/]gV] }gg3qAKYzueICa!jQ ͍ ym]031ZLjNni%Zc}cL#v㨉Q('V亐e5J'pb􉋱n2B;¤p4zs{ʽRCMkwQxNH _ R&#μJ 7ȷ=8ʯPO-X#{eHlnvrjT’2oC--\_>YIW9C6a3hGl\u4T -ٷ9Cl$5{`Y] fLP5!&01f'1Ej(\Õ08zfK@cM|5qn͞9PΈ;ns>8[o#CM$<Դ+pȂk7Nԛ%-Z *B+- $r)ؒt-hRATMFI%u\M~lˤ|)DxA xQ0r ʈ~b\25 b[(cxDUYȦ(,.NMt#L#DH9ros&.lx1:,52K_QXZf5##.Jh|I_,tMv߲'ǧl_z>ힴ3 Cީ;ޢE3g/H8S.sxo x6 ey!hnyAX㿻s |3/`fpA/U;&e悙 _4}'yS7};:#͛J t}Oz{L҈Dì#=zvJ`# 4|jZT݄=,0Z%@^G o/ _]ˑ{(q7b&3wF[ i4%]S]X 0eEdrD8ZܫIuh [YшYia7+MAw?3_845e+|1svؙ8^ɻO`8fW ;ʕFSF:o}V`0.WwNNh6l rfs@RUAO*M'&~ L pyW||Iycc"`̀aeo %\Ќo"o@Ɗ\}82ZsNqR5i?`l@/w'y'w5,pٶ -0؎93{ F0ϝ >.@=O jZxi~rOPBfҬl d)#TH;aC[Ҡuۍ=mw[w5dv%L n~RygTyCܛ(-3Vܵ#+}$%ziheoCʎӹε6,<%w wջ#Jܽ.TG$M)0ײL[)A cS cZ[B À`3$ sPM_PF)=#]`S0!b&t?lڪ)B.ى$qL+kUwtuM&>쾾WmY{ ^E.^<o C^WCy>ydr xE"Ay 8cvb)6i M!U|j^r%fxA"(*ghF99JiKؘR{^~/V,Վ:@ݙ w\bwQHt\{H;A]ieHˌ܉>BHK+)rlڻq'k;m,L'r #8eXIKU{+V])Z,wSFuѻN[=F{⮣-5nK$RwTDnDw2~1$HMd5y9~$gp?ٕHI\?AM#(ܗY60ZTá21hOcdI1 H _~xJ%64P=X wo9վ6t8";c/C/zn}z/)SIdg֏]#LL$mFwШdf&8WUV${?^Df?9*!?,96˭g .\Xs't,]4`v:S'NtB ȱ3dȳ=5vT ]GkB⯿nQRYn&y=qټ"WU`nYtz_j1R#q!q!qamSܬL2y;rBܣk!N@Ggw~C۰%;`q_w]FusWN+xψg9렘F(Y.y!Z _mg$QZ;3C$5E9TwT˺qhsAdh'q+cUw58jيכp@£=ymW+=Vt<" n>r=n83Co#,tęUp <{wNcKFt76>áU) btK'_bm:v\!412Lh`=Ek*Ѯ0]4"GƦȾDA-i8*'>8f 'B:Lݹ2ތ˳@hHY"_~xUhgE(<@s#k 62(?w4kë@owԁX 'r όooḃwTSV4PIU`+i7S(+Ox[?sҷvo]@/j]+ _eĂD;k;1B؝].oB$ys+Lַv-숄+Y+nc74\G^3,e܂6 1w̖(bhlF|- 1ٳӵp| pІw_ȷn&K_hs @i;j8ܓζ/"pdqpQ<'SP]r Pv(҄by5n_(5 K؂F_F%͎!$wtHظsZ("HwTy >#4:Q0iF~?Z%Eሏ&#W)\Y8 :?q;)VLs ` {RGxE|FI(. djiPxQR`d0aRwy9xn\TLDyVawT.ܸf_w<bk;Ľ)0[[aTݗ,H A턀ƺcSKzOGx>νuG(RAx!Ύ\Y^Qo&w7A7q%׆jt$0b_<6i`;xJ U<82" o#!Xq?ne`n J鈸Wƈ;GFbK-FkBc6C+j_{,%a\Hir!F ֊ U2}khku][Pp)0aJy81guZ&F#ڲn-@ܠnfQ=afn` AP#X6A +xJeaMz*O,  sػ1a SUt`* eLR=F{iC̐WsKiPYeWY*أb\Vj6ch!ESc~/F6I8IcꪥcS6KG^휁z^ob,CR5rh{9dr@60S=QRO` A"seNQtfrUѹOg.jA?Whǟ|'9_߯XKI'C?2U^4⎣\L puUK#ў݆̣No/(+B# 4ZfAueLqq2f;HikȊN#K.)d3]zf=7I Bjd@| "IsO(x?➞dr,**grK6+ ڑW8uVf-VjutGQz0bw0*b!ad~ˍ12EHnɐiB,1`#FDP: >`NF'a ӖĨj[EOמvyAbÓD4LAZ[e* SAonhbK4.#iAډTXoLNxhB#+W]VM oO S˿:4@p425BGuSF2% ~хQ tZPoP]O*9gbQ{ 6SaNe9j=Wm>  I[ٰѵ˩y/=_yJgU>o B؜&N+-z ]@0 vBIV=f5<*gD~{A}q&[l{{W[ϐ.J`Z醙[f,Źܧݤ5}i{ȃ" N> -о-3_}F($Z~FȈXwL<[(UX)"1RBA>燇R#} Tbtw"w%] (7wD쵘0ZWӈ;M"%1";B/jkc\9C0D4: T*szLg}2("k&:hޅ1c"wiH;f)%_`1ߢe~dH7RYppg'&BܿL-,4\Mը-ehԡ_e0N&b.Ȏ p, N|9cP5F ]ƴ27x%v4/M[ZIIԼVz]d^!2U[z#xyeձҤ]WZ`gK[HڋVOUְO>3\Q 0:o{8Q]W{1; 4m{&ٝeQ;-0?!sZn) [jV58o X+wF$1'[gz1;A2!aʟȢޙsGR^n%rOq/Q;'Ic]L#Q'4Ҷf-m[-Õق\HƢ5h9 ^geb$Qvёwؑ77p|XᴓGO,@c.t#+2hJ]hFA$rc|rcܹήEn0WC+;#wB9^ j8v!${~.dhz}QBS{*9 Tk;t4QZAb@tW,Ylr,G k.@)a< <-Pl GX4_#GCX5 G5Q*u qP_%ÝsÆl R}|1F64=aԑ'foN$|ĽZO'OO*(???#Xɝ &r+Jw];1QE6p*<ɅᡈGmr*sìv~z;ƺ᜶N.1iĀ>ofD4Q!Rm4kzӣ!;1qpɭ&K0˔ ߏyUtuysI1˄ȽI]5 uSKh|&"qɚr"Tk0vU[FgƗ* d4UP^E/Z,\IH%Q|I<~4b>/zKls=xJΝ!<ׯg=ջ `@6X9A0>]b"r$LT]LaZR2s1|a"v`C Z쯗E 2uY% 8iն2 VB%f~%m YFL̰6 dt`'H.jFMZ4kVHňR@Tw+*_z}Ll8RG 뻯Щ}oq&u{b- vWcA؜hW ,P#y#;gRZ@ͬB,}3~jpO\{>=XH)*|Uq}I-~3f cGv #?<#>-v8tX,rx:Bڡ ȃ]Mʍ:^z}6a>AG\6)4 P}`]%j)v*rКU,7ĢAH 0xAvGlXph Zퟒy0"hG z't{XkFс` d%y4WEƙk+Js( 7Cj ;g;ff#4йç5v3 l 6ahI 5[PZU۹]|쐞cee[-H og2Kn,%Jn.`s{ZB`hn'֭2h[:r}u] 'g3Jb~A#FOLlT#A;ЉĝZ?\aBN15)#'yY(L)TH=N( Tm'3J2j}#} J/Uf^/!4=hps PE#5G%I3K,"< bVm%Dˉȫb8P ULM3>@fF9=?L3[z}^-CH*#th} uu1L%A7#(;#IMߏThLĴ.ib륜] ψ2*\DK$g@_Ri3hPNNavec#@q/ chdzѪggqMP#R{>q/2߀j8YG=yh4͛NHMZ :8~q<|6]cooYy.7YTŠ]ܳZ܍L'Wܕrr>5\G޻G[ŰduppqW﨨ٸQF\K*0zsi/Gۀ=< AZU>wr9| l@Iq_wxW5WzheVTyAJ%ӷxOї˭@a r(h4 t$5Mi&NIyv}ڦ+>y^y_+ ۇbb3%NAAo3`C Q(Ձ+"6#0;t`IwB.ȀHh$a}F$0x_Jkc8U4 CThSK [fvt-uI)rrK(%TpY-4ngLA,AڂJ9GS|)MtAEkNm]Fj{ t}a x+T+\e)%Wc3%gD JWiƆS|͋!|lŒKb#tmk;o X_MDLl;d'8Lm WbSa#)zAކxhu졪;hD;[e|gwlHGS 6%U Ʒ>q-i0;ՈlQ?v}QeZY4&(1@vy^x.R\/;@.H܎ eu_HZ\6VBSm$qTc;͖KǴYA28t$/%Eԑ/lݻO~>%bD+]aS!frpaJ}D.Bh$QK8Wm9@dܺн9s+dw|7lJ9U]Pn⩊z9\`H=^GĶNE xU{DN^UGVUz&hl r k_-h3)85t&6C܈Hp`"M fiHUp dԶI;ڦF^''xO(q9*&0{$]TADA,k#a|[Մl V< zkxali vgPKy:x3ꕊن; ,kNc\4ãWJ'hcmZ; q`ceJ7V,$~Siߑēlskt{鰋5R}nF'N ,*ND7e ED a{S"{_mģ(_4R*+eԎ<"˺Fm+3q'a; CxF\ #/@máJs)U zC3Z)}Jd,"H r}k7=㙇r왚8۲cg݅_&xcv6-yg}UiK`xTXM{s/.UkDQ$E?q;e|HRv?-> Fy'0WJl(龄nG&~ӸO"ǻ@,$DBGGLpFEˏ~?L) v\*}܉ݥ 䡸ǧFxsTnd!gwuzUk27tQ<*JO~ w=?!w6 w0ד&7M0\)*|{Pyֶ^rH݋k=ȝƩn-wt[Q_?<yq˯VQr0exQ#j`hw=H(_zf'PĈp_t yе_8@̵o]*@M軥U`3˸nCI Oe-- zY:w[r ou;%%^@be5729#h{ 8p!Kz} pYs'v##[$&}7 /Œ2.Lb7 r+nV2f&Yx%WR۝% bI>X68l3ҕ漼g?"wGc!\0i葁!*ҵaDlAe};WW[-xSd=E$;WpD#!TTX*Nhx $-W!aAw)tWiPڞs<o]ߑ޽i'a UCC{r^_mDwh+:q4؄yu2P.4@՛)&&;v%ď1LhN#Ǡ@HݶuQ dD9їyk:8?$@z2kՉc@9itUOlDƕ:^ $>OQP Yj !)mG|Oc;>Dx/9~E]ܙq6?9IM@*N##.\ɨFG3}V"w\j=yWƒrr=eO"=w&m˸ |=wT2Z=ޯ!w|+ew!\Uރ ~AAw,Ov'78!GAJ#`P$ɘ C>18Fb@~hњ6з+;tb 5@wy{\\B8؝)zV!t*!@8%ޅK @7_.XæJ^ ɠkRp3J >!Ux@Ũ%?;90ddlyic6;Rޢ&[$lI~a#%N4ymvX4 r.5[ܕ{]b/Օ(\?s,n/@z W_&'& ۇc&-iGm/4M'M< +arRM:($r7kՂ1Pn"Igrg&zMOPMUVbbcpڱեӛL]RϽr%wzÙ@uZWi; VK69 r㘾&h`J[kȽAYլ٭ `ѡۀ A< D)S ? .an :"!Hϱw޿n|c?;821L\IM*q{ R"wo&4Tp:݆BbaO*dDQ|']8W1 F7n!)>7S&#M4Uʈ}%r&wp޽Ԑc;M5vi rւ8zʝ_& 2&r_ A^t>ldr~BPK"w9+ {]^^z_nr"rGKM7ޟ^:L`4޼eh Z%Av5AV4P2=z}6ޘ:Fi\i\QCǾ>ccp+/ q7q"RwDx?;]ڑkrE4:ބ}O/vU!Mf4}wt(xN(Xyi숭o$ 8!V[4l97?/4XcJlO=Ѐ)) N5w`evkŬ[.7\E@(=yQAo^u*\rza: vc/V6olڑ֩ -sFOR?,^fm_NMCfP'ΌL) `roo骲zQZrwl*DŽpHPVbH\y24>1! |fx_֏ں.n<%]Z^ v@pǧvOp㬬|4GM\_ݭ*3bM[tg]mߑaʦŹ9RDEʌ͊&́Tί]" _;߂ =~cl,>Ec̖qjPkpۊ9ϏM"#&qCYmrJȸ6c$헏$kA28ɫuؚҕ&&Ҵ7:_6igO᭡3Z|‹{ 1]d K7Cu)^ J<tA,"[@At U~ va:16+w8z!~=Y?Q/wK)|\0@2OMгÇ,|1~^^Zs3]w(nbg)l_?0Ħ5bo  ! ! ăD.Xlmm&%;#&{W,S< [?A ztC$Qϴ#c;w8  q^xO?sB:2{M Ly$=7m6IҮ6=gtO}%\s|~B@YmE5ڛLcgEj`EӃE:LCQEy r aࢷ%3'zr;J%Dv0RDSB^Al/k L p}|:2h/c$4FE;a=Su5_9 pv.~4ODe׷O}I w[ǚgIS7 lJes#ynY'B8 [[ SRuϮMؼs6Tx;xz ^bX]:}=u}|s#+7q$ w)owFݸ+$U3jѽ"NiO֓퍙K(= !W\\;$vON<>wF/^DkPP1!*w&x"4."bv =9}EuD*Pgɰ|_|ηP&jrM o$MdT9%!؝U;ɢ ? "iϴ- eE:H!4abR;n޾s pG`yZ05VI@3O>n߻иЇJВ™,<%4k5fS}[mif4Kg+gxN(W5( _/Mܴk'm-)WDGB=Gq 6g[lSe ,,Ԙ,֯"UZcM`;vN!x.@zNT \cwzkˡCe>[x؈-vmIsG}c"b]f&FHm8 ̨ۻ@w`z{rw9Fspuo$qz9>Y( dz}[oFs_ w'ZDKe!&]c`KS&Vohgk5 :I8imJ"w-aP).;/}} ovʠua*XEiq"`4X!P5VuWsW*uíg#I Rkq $0ou-+ۺu{܉lݖ0uGם*tP|*'k54<+{Tȷ;N98ŒMt*^HL$۟ ɥ˗1,5 &FHӖ?߽;tFpcD(ZS d4er'u4ڱ!܃sV'1+#w5hݻcJBh=Zud($o r wHի؈zJZ!nuTRpbLlǏ ,1NWlL_ .ƪyJ:Jtnn -'ţ`&؇!jrN B<"viRp;.!͆%[FXxKpwc>pONMQFI䃗`m,]8\8 7Q3:꒔39hw*͵=W~/AnCo3] r7R0-bnP[ &W3յl$<^"wmڦ=$LJLfxlCLٜ?r IcҖuDO^e@D,Y#ܟ/ S2SarkF;v&Tg~ 2=hee-MxA~ss͎ݞg ._Φrv2{`KrAvPނV_tP;ƇQI#(sm;ȏ尊O1ɃKHqzc ÿ3mێ齃%pE[ӉI:\RQ췓Ep&,0/9}x{yn㌸W:Y Uj3WZF kcyɕQ6ֻ\ Y=Q{ɐ23)7\HM:u*qo~&b\侠QKCܽqh{".V&X"w*P4hDXTr 1=+/=w?,Vw$+s{sn@pR`\ٟH,[Zwy. W̋ouw U=Zshv7.r~è@ڼ 4"w١h]MI-O},̳t= AqAf֖6pq*v ƣdL!ƇydQ@!4In;!S]?ւNlE& %KL2ވChS L S|ї\QViA8S9h5#syF|X]A[E Tu{]=؝c{@}LQ!dM78K^o!AR2O^ZF*qN}2'P{\Ŕɐ ֊NU/&w@T2@_$.'aK a JS tT݀z@'0yPYx@F1`Hv*0 3Dkp{-\8ɽ's՝yvsu ݶl\%͌8z_Qc%$ۀg'_h;Ƞ!VܓjMD&;6(h' 7B={pUTC#etc]fKө:Nu;?MXHHc!/ }%q+o {_Lqެ0 p;3{!0]Mnqѡw=elȽ] ,$nUv Nݤ C[_ˀ?~e9UPU\n ij|!O, ֨avMGxZU}|;SF;Lܖ/N@:7;L^zCl1ݘݍ녗nwZvF~'q8]>Pa~ErrQ:PٴR^t:$MW'=0XNNT\MȽT/\ \JÈׇ']ӡE-G2Vuk8}ԎGfjN_mxho;; rar)*~xfHlJ J Bkdv=w׮p\)%r@] %/x6b"(ہ|mH,b)!Gt#82s:ţ]Iy5\-GBa Sۣ r/7/$Zav7 E1CJNFZ/ڽ3,v&AAGP)J͗6#m^`U"B휟')LP&@pсהY8413m.xR  Q|70XGGiBTw'0@ka` Ϻ.&٘zP"!lr *JRQ%3HMh|P@pHK%rpX#˰mü3i|1]Jac3;wxuݻ[jS'5zWJ&S0u32;a|Ѻ׷VP.tT+jl!7f"!6`n&6ziM8%9θ~ܵlڕ) RʁJWeSakz!!Ĥ" aj^b "~́Mu#^rƺ:ڞcol1jQ޾*W-PW/5%PtP0DtR bS@b*{xQޚ{C*0xm?g,PkہAGkCT`HŦRX!e/du<*8#h]|&wX$rȽv!WKf\º]Q 0ovӌRiB'N_rb8\ĤRS356>Y39=fdڥbrhU}WؔW={|w5PywUu4<$.DL}ݣ?bTnMh!OkFЈf)g l+YhVwMw ᒟuMW%r/zV"wh D/%r^{0@p-u9l6ً Zb&U:N!ظQ oHbc۷~fF0m^qRg4AP[U1~o"woc>A:^jrfp,4Rj8R:ߺR_ h (G2qY8Q=&Vwb OĎDlF\ >}d(M&> :gnBY!l?E9j[Pchd0$+_=^OWuMqy X~ZC~o!v%ʋ7(A~.A2*;Z ?=ޢ er&e86L`kW)<ǎN^$ ȑB=c/2.}#? QNo}I=*d[7C(V-IȲMrI̼.$rw|>%E}u-}ַ B&p2 {ŋMmc1>kjsc*TΝ˕z"޵>]\{tVAM |ޛԾܗaT2W{pu]t$r?U4UD ʽ^@RCM7'7Xׄ_ KKwNqX 7ؼ>oC<%T; b4"rtެ^{4Z'l3լ IXF9?3Y=:Zx_@S!/k83B-H%얚"vȕtF;(zʽ{y)(k%e@.HK*k:o Z=w H/X]-nBn.iL XcO0G^VnbDMjO&"jbhC~Qӻv.S%X|\VznrLFbI<4:>2rz"!A{y ;O}y|]?t3$} ބ!&wKrW;xEiޤTߠыK{,.R4@f+v&dOrf45dީU.z^l&K!h<\X",`:6v`eIVat ]rvZ zwO. tk]*P@!u+ɂr҉~-}ZեA)ҏ#Jz!vϟ?}qh3CC)n eⲉ=m%q1]D8Bs JpL{Rej?y86v]NaJ{D^Q [FF&uL w'sKNޙZj_hl13 ƽ -{It6ٝZpBT!z]~v}|goWeKy!30n~AX@Q˘**L¥ q j(C/*|KTj gdfOO>YK:`s#ȽBj绪ki`dS#RQQԐi4u94;ukdAK=Ptj-;[YE hg`A }h4<7?;, )QQx$Q2e io3!@eoҖ@e!rWGϫ|X -jY.sδ2k8 [ ?r] ,1(xi˜nNE0=#tWGGqA"Į-wAʝZ2 w}ʝl1tZږc, pʽ .pXY[@j9DFM&mASI0\yteP \"[Io( xHθFC"`Xk?nlf;N_*2BOt8 pݍ*<@ ~4cUnɧ2ՕW 7Q=a7G#wtx @[`NSY a@c@K3Qq#ZNI]\3gC< 9WI=!@yRre`#-Vz#/}V3P#b623fY)Lʧ:/1#HV `p/R;&d"wn,\4fg]6T ީq1OޚiHZ:$"Lb.`ђ!a BtP $P}_ &g/>Daᔜ@4:'Q(NJ| ͳiUw ^' ok$mF_xD*dT%Â+conHfP`$ rO$jCʨ6co nj/B: V> S^YTොxƊ}~4ȑIlw!;O zyK<aJ !m_Ϩ{(RЁOars ɝ⡬w_\kWr7>Qx,z`u(3L"${Ϛ:Tapy:I@%21dZ|C}[A[_ đ ֻhͷ[gv$԰yyZO$4ȱ\ C MoR,~s1&!0$Ap&hp!E $"s9.=x GSorgvZ wquc6ؚ] 7F e`[iEG?Js]5ʎVF lKo?tGlAZ@\; 1SO|D+ Ppu\0+b;JD i& k[7`@%91Ϡp]kmM LHs2nO=^T8P|'|޷g`i:; eЙ;9ퟟ|;#;BRK8P‰b]..DDe%$igW};}d[NlE1FkF7ѡqvt Rd΋z{_ZL^>#&%e%l?$ݒ41.N87Z$,\xy\ӧK'g~ȥK }hŝs]hr%PޜF{65Eŀ++]* 0 #|_;0 RXqp   hN(Jw#]UHum+ %Gx"|&LScoL'"|Pʡ|x`*boqGqGl(ba{3;ϼE#%jG]?E䞛~*طO%䷹ȝV (}his\Tw , ܨILCYZGvLc/ƴZG7m3}}8liU5)[z Q#!gz$;o9kjL\$/<@a2H7)ą@< +{P YW e Azsh = J:gcr&yUS1τ4IZafEt3=Mi) Db1!'aC@낛h|8%ɛi\$tA{ٝ {M=~DrJ 2;\cn _S Ҏ tpfRDŽD8+FŸ(lL6 xkJu+&&2;>ɶ弆u8oLй3-p~%Ɗa\DPSufT+žc t${d$My\Ѩ;5"ɨ Lc6=9[UQZNgϟ߉ N?totcq׀lBLri 9ش.rw_d,Ua̵ԑ1v[uBAuG8V_Dj@ʝkw>WwP18`6Tu0jn;)lj>o4 ֨{{c.ܱB[G..#&E76GtLr~իgbOd%CRHw/%0KrdR]eD!t-BklzřKS_ugd+{4+%5:Szz[^k$%|3Эעҹ MWxwٽD$P2^ҁ:,i=Sk c+/]<;@XA@!CP a-)+*w\"%N)haE'8gF[H=+吓 (UmN4*hK Xl;`F_M;{Q^FTád.-Ƹ3W?60kh`NSO/3 DO`s*nH+*p}FzaXQۃ"/1JJ>UQ1\7};(ad?m_l7\;|x,F>O{IPTQQ,?S1@ɵ !t T;b9-")K{TR.Y9Zp]D;BXyb5ZIpEiݥ5KտrҧsaTi]PH G;*/JuǡB 4w)YM#J7(] w~c3pjxJ=r%i|pzŬ ح䁚!*zhSƳ'dўR(hm_mlK{ -ڢhY)ݲ?i|(o}H7R (e ^sQ*)rod!C^(؀VBtbVJYUP, Y%톅RY C 9R"W%Yea[ w;Ҕу@.xbv- :dnY!QUT w<&*Ztz `'|r^`P#nBoo>xNͺSᩯh_z'O.>*z:w@qNI[|>H̠8&/_>/H;mj,h,^([1;9+D4/l6ׇ xznpeH-*N> eҕ'<9$ੈ㯢ͩDd"fx3eM90"Z3e ~MܖsSĝ8y*gm-JoWIRRZ0<ۋuȱ I{CUxQ=HQwpʲ_~/cp kLP<,p;7LN*Gˋ!5!Y{qK}~s9!t&g4 0b=wU0kmlG3 qzF)}G(7:UH>\_Bmը'|ؾO ;St#&9 FX:s5_$*|-cI>PrFxΘ^R)X%aL%&,BYRH.(j!HGL a{ >,4xHS5`RE"M۝0CYFAz ЫbJxK+u);>*jmyK`h乎n%BC q!~h6\uŵWcR `sWAZ.z<G@lO 9;|g=>yX|+F·J?}3Td ~  gR#Ê4< L|1T4TIMƙ,S)&yT+$?{7[1%C,xqS&FMV+ Msck~Ƴ0CCg>=T$9'v3 grmNuI f$zx7$r5*JPN/P蔚ϟ' ^/dŅ@c!WBꬶVܵ߈> X|Ys-b뼅 *{3Uk= $"jpޝ"`S q- ;Z wĒ ER| }+YhʑZΛLmµ g6rL6)#B՘jΞ*)671Y}]2}OTKnzvڕn_{ݾVX#8-!] #/0T`v1]44YXQ c-߳B .*䪯fVw7dDl۹oW 3@ৈz Dao2bÎ7pp*Ԑ|}l& ԛvDଁz,fɼ/oJ^wod04 I㪑 zw} eΔXq=3wq75s#~͎Hg|w臧E]a͛`[9df|woZ8+ؕ+ h iB' 2FI%[70bS=S+@`a| [6xgNFInLojz}QQJ(ݞ܍ >`8+q(0$"\g815U~Eqq#?mM-[r})BW@VO\ OA#FW1W Ppaal+r_'|5vp:=fwĘA,CsX3|)6 DmU UZWF>j̏e~)Ƚq/bCZ?huO2t*..bR^J_~9՛s5صNpB&:A)җ%opAjLs 4LN1ed0&0&wXi_O ;JNFJՕLR]@5X+g*MIK9}6iͥ2ޫuQcJ_7сB](JMզ66 +eCa}f轖rga_1--MsRNUjv UC5 =h< w:e5)T=R1x<ܶ\::>ВbQUh훷g Ħltdu P)4e\^] tA@E&ZfWls}myR}oDI?U?snٝˁ̺kd*PH vܷ3ofǨȘ'q; 2cMzu^[8uuNf|hQ0h5Y&ѻTw섿9AWP<91>^tjKљ }tMr)hD:ů|T^lg׀}A8Q^AsWeoJD'2/gĠZ"8!1"e8z91+۔ќ\ O xF&MrϚǘ(EhM|WqrZ\~Mܩ&[Xv /nܸ XFiu /dRs|ƱSD#౨(cn?91UX‹sFsLBGwU_|{39mc[(Wʇ>rHDC/5!ʣbh܃,lYR\"𻳩#/պ@)쵄ͥr萦'b u݌N%&t%;y$t;#JPP1ydeIov*xDQ{dv{Tt,A8*@k]dɝ]yH.)3^&H[EDBx.Ze]8g@S_{3;c(Q"9=2sN+o|4WxY]xDDB'̈J'^?7=J 9(Szgr/#]w~v  "wȀف^rt^N/bMDt UȞ^g[Dv"C>|]jbO-&ChQ];3/{rޭ=J[mŎmg\3>d:!|#(y~K̓‘7J6}*$|Y!B_I+dar̭cȝiQKiz%uYn2_m$*TphG)@"wgg޴T)(?Pes Gl_K0t\V>(<(wWWD"e7=:}%3׷l[Ww▻[.^=;YI҈UBOgq@ !֩Qb1QtqL $F:cAkf&JX n͇4-~ FRZ[EMA]ƧS~GO_|?q[ZCŲ݋nUIm/htlKٷ{-R|614A7RӞaJ+.*򹴐#Qd:^kz`Hr4/axdm/Ƴq:*k ~A?N|$w"*k7V՘AC+[9 qK>H;0:^-g5B~E[M 0o{#VO҇,xؘweIgzF| k8eBU *dRU3C@_?4W)'^cqȽ<X%4ӋIP4{#Jh8333b $my0͟k;V4u.`B[̸J"j^ѡg"cGh6M30lH?)w8/pvB繉wzJJN^.ek0||n/WPC1&XK39 rř@WCF#-P\a-(bm$Q(PPOfZi<= :f.7>JN֬W E\j'$Pd ƈ \ k$SEw5<>G> s߸m{ב{\ܓG ?)Qtv=|TX>_ l͢Q^ x'M@ȯ;^C#Z,]WSH-j蛴9S-IJW6jiFA7׼ DLUM s;d=a^AJ/A0V{dV{fDo>X[ly{xRׯ7r9ۖ.|}CI6uɎ)s %jJo n-y['o rԛ*4-{ً_,1j|ǦNOGhwM90Bvf#udRv1"@3 Ep G%+n'b.ѨzUTo3c7ͷ(?X1 y$a*" _kUF9@1^#hfyJaL ,Gb|7jԋ\Ĺ<>/f1(9 ;Mbc2Čݛkؚ0'0fw9 %w]|3=L(lZ^yP]$/ r璞zS^dD~$ o Ee>:āQ0؅~! 'CEV/k,I2F0/dlvXgcy1E!St\H\R)8"Tmu?{2Ӱ 9L t<?O@哥O+vy%!=6`ѝ;Su7&D4xvs#3O]׽O|͓+[z.@t,I?ʡ)PA2LAw䮐HUH[Gr!:& `gYd6&.`&T8ָmk+\^m2^`U+Y)~23̎KX_!ȝ s2 Xٻ|?_a@ڜc^{*ժ=7E#6z4~hEg3TB#`7hi,.j~Z~܌~(p6Pq[e[;y0 .aL[h\@['A|`.,jE]_FU~i oCFO &C*D;Y /[S0 MdXQkf EO7v h!LKP5ez,a5X~y4\OD{kah`Џ/`z܁ד{Zr7ȝsa rfr(dN}6\:*H.f^Jn BDǥp#O~٢Ǭ .2lP6ա};|?ZƝ.N G)%:%5&j9Wq^$Dq!E^9Ǎ䎉N܅ F8}6IeIJ5XxL/,mj;}䆭ޒ5Ŕi*:arwDI5R.wVq })l}6{˫>u>׿nl^r4@:7\4vM쫟d?,]:uI94 .s!Psd_C%+Z1D,%WfBҿ58ZV2Zp pR'hB`tgkԦh!“7 ٫}oL칡EMM ^,VF֒;ǣR\MJ|'75"Wà }# |nyN;jt@M68j`JnZLnᶊ  J}Ww'{>څn|.9*vY}<8V9a_bT0럇7F6`1# wJ4>۳!EO&=ƪ.=}|C[s䷟]0AL]PP>07MaЍhVr?$b =Qʘ]qz.'xB*]XΣ 0`K(*I@aYC=^ǽ˗߃o~^")($= k P$4bX*)zf(TOl6`xPblnNl߃f˕XȉQURA8Ifl)%[F{7>ij-NwN i.rgVgBSI7{݋auŢŀK5!)D@O ?#£w;uR{I KI3L.3 bc:HߑD"w14S;.Dz&0E!`vQ2Ԕ91?"}=9YJfGgY}493Jpp`&.7J֩x`4mmb0~ m} l8 /ՙNKq SsF?IHvwe^Gx@~JI#IC_ F>Mj]¨|Mc0DX, !Xr; ŝ!ABce4:[I;6 ;! _YWV.[:_v,YbbL~UT Yog "MfK_;ڐ-tFҷ0tpqR*0DGTdHfż.rrx'5x^aF ؑv^H5`G.~&9T^bòcQB|6F'H}X$@6E$X '-KdPOs"ݚӋ>](X4[e@@. E&p]A*=n5;^6'a-9]ًv/H}Y9]d@::P -FĉC>gH8z N%$2Hużb?%L#Hόk/!5&b-AATi*B ܏t)`k y~CX@G5 Xݩ1B:o $x wL,[ -42A`T}Y({!  ޯ\BΘjtKzt.nႝ9^ b&Sd.1Og~ HhLW9۬6Vt7ϲ+y E33a w[nlAĎߞ<rv=~ <cG{V8 a-hanVԸ › 5v.Tj3Yc*ko?ի>[}.[) t=rȝ~~9 %)櫱Xqԛm4 rfը)5-(9i(wIEsF*q5~;RMgNsa W&\%3Po:O7uԥhIk*4&G߮3_|g^/۶_~G]RQ&x\}*7 R8 ,;y;g2r~'}? Ѡ=`V tdHAƄvty6YK9D (t9osyf3Y#1bi:޻}x=9t͢Bl=/.rTcm($rG&ʶo Ԥ0d>K7_ 7yF vwWV w3x k/nO>7NOe'2:%{4+:|q*,t"u Vx͊N}|zuR]ldd};{wsg^@ǽj Rj#bg;8P*ֺAIGuō#޽08WfфaڌԔ:Qc`ԊbC h 6 Ez<3u0uj5ܿ0! aH=_8=Na {KxU4}'m?{oʶmߵ/-3P*XB}#N-7(NvӀ)ٓ8AHv(huA]2ibmS{U j&5$ْl,'MF&[U_J՜fkTe QhoqsQLy 2eW](M> rf(kF9+Q=LjZBb #?IEB#rɓ,#CypFIP>"k;=o&1MW;3:W2WC6L$Yp;@S-׃*vW e=HCu <%861`ߠ1v$(s5#Rs>= Ϟu9Lh׷ϳ|1?3ġڍj}Bo:Lژ{Aܘ7"wn3_/bQi#c?j `EXPw~(@oNfr;Ӂrb\-cYl$--ʹge{7=i=iI'8vg'76fg-eWST虙+Jr94趗ph-\%rWFM֑ (:xtedqchN{s%ZrWgk+ZSWٖUE.aZ_ )7@>!1cYʨvya*7EjxcIRh':[x'}#M˃8艩xf2TѲ>*㾇:RB1CH1pB!=Judfȣb=N8dB v;Az9Ȟ KtR81T,@Z[^a꦳\*l67#ki+vxie.bb! qQjHHb0-9>,4;sJ/_?y˿z#ghז8z@4cL Zts`3p7[_khFKܲ󐭿O\Sn 5KM&h6[+2'b`&t`=>*OfQ 䕺ՑR:.@!f]Ѧ+ӡ ԓYFp3_Uɐ ؀n)H !$ 57.éAOej%(':D0 *~WyLC|,|bqL xCWBeVF :So2(Nnx%gT Z:s*Z4v{wK Ҡ%uExZjj'& m}98<^uU3(2X2ROKeMi>.C.gI.yAOeX}1aw '<~nH߳V?nwxB "+d qboQ9CKՇw'\}z~ A -$+W9P[kbڛgåZIwR*6+*hRrkcÏ9=.gҍٍtJ> n7;ħHʈ2Z,[)Xd,݁Օ#{|ṙ=kw,׃x3[CctTq$frg\Po%QC,.AR]`;{l#`T2zrsC} -=8S5F*TТNKA0Gʗ;Y,olzE/+(VT*(*)]h)g) &:ȄNo˴CB$*2tA<B"Zdଵjڜ mZ!%T̅gM%J8G!bZ VWv?*Zŋ0 $fIpYA_j j Uc_WN83$R^E=k_꯾W>knXH3b݆~7b1QE ٌYGU:g(,bbЃB@օW<Pf%2&SkT7 (͸)0,Rs؎ )C:<P@n?D67">?g*`|Ǖw WGqĠ r~<yWO>XifЦ^[fo"wm#\fǫ FTĝ;qDORV0wή^ih)B@ z(bwpRb<{'#?7Ң䜣Curw̼{*'NZ p=lEfk0y(=;?V<cdT m0D{& !11@TITgΝ &(9K)OTviHD ^XuڢDWGqJ$t 煞Jր@OF^jJ"ZiCm152ُ]freT;qmP2dhlx f && Ųc_6XLɧΝ8M2¡%lF%=-b]"EIO3ddŰUC1qby@RɃJl++ӕOSeUkW63NRnŀJg<~(Өq_`;y/@!ܗ8.9#h7g ]} =RuQm6&/[LCnCvs͹kjRk&AEȽ42X030X\kY. eߨsغu)fvrqe.E6V;.[IhBd-oc}tIPбZR*a{yW~ ~Q}^܉vC[*{ :8ء(ȩ)(QÜA fh% YLl?O7` lU a%{{!]+$fd0\iJbNRe$xrG7?["-N~uzɳ_N?- BD@W_vCv `pAmt藏¡ ¤{W8'-J G\rlm1Xd~N"wu;c)x4$?_Wn6,iG"ܪµSz/ˏ?ɭy󗾥{AA5 9x cHnĔwΥ~Ņ*t >:r'g435f 6!s234 ,8ܘoʫ]M+F[g)ВGO[#I: c(6'c 0)I})'>?J&"22ɝ-sXژbSMqFp4QqOP$grA]>@Ȯ3S>tC:_`TN+J5 X>*Oh-C>OX: 4 qN"2ʵh٭-5U/5㯧nt@^%8g1BAؖO Zfoʆ0rzd_ugpz/Ǽw.M]K|nnMjOMF"WI<5,>Š'u0PMC~P4& V֠ӎ.[^gY-OA B=M;uvEXܽڥ>{g9>Cɀd^o~/0R +#"d01ŋZ$Naz0&A?bd3uPHsa) 6a!%F׿&W"R^*m}Cm+EmgG\z_˟Qh^+  Da@\1 o<=sv=< aUPZ\vrR뤖1䎣B SPz҈ہ~tMws䝑v>7ĴA 0qFׇcYi2bhaL dzZ/˱%|>|q^Gv~rv+c&>^ZMZ M`&T. h?@E(tA9I[|9x% g,TԮ @Tl,{ 9>8\*QWQ 鐗kEAYpRfU?\/j!"-j }tcn rǤ LyuyU՗A~ w㩠!]Ҵ+ ړE/JG/%>.ۿiY#N#} -mם5{a_Bصvqd/݅:XAkД;'l/LhcTc^Vq q {"HY>f߰ӆO{D!Bn?OfO#7πΞg$ _ѩ~'Ǐ$RV[&!o$S`QKzS rWKS3_/r>XNnѢuS!hFi=a<,wUo&ҭPy=ݣDg}b]%H%ڙU"@43/:l%#Tnxvu60Mv$[y& (sTKY\Py7~G_~qꏥ/ 3bbeL;hVMGCm~կ rFs,y];KS|B7Fۧh-ۢ6f,mdTL-+U܀rME3=`nroQ;8Z \z wqxSw8([;^.D\vCK1"V@J.wAAj5N.X^Vm?pAgIBC>b"[x31CICUl ) &oHLU~7DdLDc.8/<$^іU$#hE-bfMWLe,.R47ޯUJlBڿ)~]p^ vzi [.M'fc{XcQ(Nϋ#Dm 'rŋE#O?=8O߾ +5XB%jOLkT8$cE9ج󃶝WxԓwPPW*dƛmVv`PbOA;Ʈ>|>+{Ͳxnէc7sy{g?+#n4ʀ.VQLS%˃8Cg| 0?jVOlI  '$퐏RG)!LSV!㉸\nw&t ghǕub׏ȤpL-" qWmݑ䜉 "p<-=@nkl <܏vs!%~@r;|SmhURSPF(#Q"~Mc1Sq:պ~L̇[ v nrq;z..F?OпPDpG\KBlBeIY ud &?IݖYE':/z],teʣa1V^`Zfq4B}w88*s9gVr!>%oI'F m( hB=^Z{]R)paV &M@b&qdzr|ͣIK * m/TdF?b DB [4,LEJ`uJ8HJԸ `FC:@ Ob.|B;U%yjHe&j20GY*xhrvnkqw 3&z1FH=IZ Ko`.Z8bT_HKluP I "`G/zAL4Na^vZF dL+]G(>W&]*^y@=s|E$HKah]z^NI^iу.hqcn0hb#C[j\/\-FKAHEҒZ Ab5w(0WXLCNn THFg(֖b>>,_kB#c4^,6]BF_|s';c#tZH#{ bz܏F]*]Qj Xrژ W0]ٻN7M83Z..Qe=:qUnf Kc"owʩ"jP7L؍JEҥ-E8`BAlhvΘ@ }xP3$.Evn0 e 0$j$3~.;DjAns#9&F;=)!4$Q*qA&WW0〉 rЏpHXm4ti >gyyn0żŦExZy{vU<))&n`{ӥÀ߳ &Zkp=f_<1f-4ӡ3y㹥J7xco8y<2i\o0-Ie/`:ς9fch`}& }blw2&=Q%VGzfeyF&tJa(ΐԉ^3ݏ/ꙕ n&;C& ~P) 3z8=Vd3w,> p2.B5]}=4]fDcV+iSV˅bÈ~\U*B̖U<0^tI0&p Z)z0)Gc=C%Vpkϑ%Bs=JC4CF77gJ Vt-&0'"4/ƢS8_S&_onрÇ%F'gMM!/ugLW{7xh>}|׶ʽƔcYmD٘ d%1K3 &wRZךqSG' wD)R҈^%nCa ` \p#RzOVʀg'BbW֖(~(:V<0?E[w~a;#Z!%z>u W;oTZ4r7 wfwܹ9[݃#rG |EadcL^IN)I99"c'|S,:N{U%UyQ-=Q;x5VAޫK߷x5ٺ"/$U~~U*`B㜗EÁrϮ'&\Nvj[ GۚJNCx=2$y݉ށ՚L8+-$nc ȡC(@>r=bd ά &9 ?$+J=ƀza acñuYX=MMN~-#!N6-e<ޤx2pc+w¼b9뾒כ2/{r(F$e=ÏzWGN8"uRӲYh?{WXVUwiJ$8{i7;Rzt*'{lpVCzV<ɾ}Z J+PMY/tmo1w/{ilg\,a4R3څ5''>N}ǟߺO:W`1F@( -z6;w:GCf^g 䮍“Miy`XIagΕ}2CfEĆ8uZr`@|RNLQ]~Q9% uO?p*v)ьp֏Pl`XCȧ"VqƑ фVh^2`4yZl`l3^뿻Pc Q;@xo.R0Wp1 fVpKp>J{Qx~+饂 j>3 e6TM|nU d)]i}y*B7v`pդm3υzޔnE!r@YnNʊh|ۛ'f/}6۟ ђhۣ]fm}!*YéIG@Hdxe4 0:QU4AiG;X$Ԅa DAA|:$^]Qo\ zB!z*syLTTI;7"O%.Ք!'dՙ @Nt50hFk`2BG8~ h;0 #Ch씀OJ @ -ۀ:x?c!0 ~>J}| 9ws  q,v @2P-@^3`mĬv _Z-8;^2`F[#fس/z  un>G6iCB rfGmqb@<٣ߜӯ8 xl٢ysTz;)cdl7c#+YO׷' G;M]MǿJ[}{ȽMLέ>7RY/mBfR_ 8쬱 OTȝe^5s.ȕ>ZQw[=/r '&~TGGF.5&O\Mf&:C+rk0K++7DL{1 N =rX1@L. 04vcdXB:&ʐ?ݏ^%C7,!5L}+D]b?q}?INdͯInrweޣf IA@ć rH4jx %lEHK;r G#->*e2E OQE P Jr u>nȫunj 77+<^Ay  y_ ,-O7'eţ!-0F}Cem5+\7"0,1 !0y81ӓӡc7ah'eś(t)La) }}䱘W[N&s[ UV{E[|j3ݡIUM IqI~xU3L2V|$p։J dTػŤ 'ruQ*}".u-Q5BM+kAF}3=,~\j*ALN0G9N|0l! #̊ϢCACC* 4s5iˆtI'e*%c8ܑpO}~ Ì]~ WКXmhmc "YKv}ofK{? &rZt$3TX poI0_w]<̀TG}O/<r/ |{8.XFX@"/w sG'15b^m:ʮ/Wx'X|e["U5e]h#޹ե 74T>|e(ԃ2vvv󸟴D1V`Y`F@4b\KYJ`rrgG B?)e+'xIɱ`L_t@Rx^rgl0$,-/_Hj\vxxH %HAհG )$"%~d$yP ϥb]F/%g,TnURD/ Ov]+bOrO*-Š!>\К]|rU4ڲg'[NS}Aɫ?\ScEce0ʉYؿݿ4;tpNY(NwC:eϧsf1qiր}L+\-2Pu| ? MnȝpOZ{hGܱ 6SpcF8iwc'TW j=CP J揵AbX#C onx% TI"րxZGpQ:(#J1H#pZN$\e+:OqEt]hArW@ p88 ƃȟW͖n=C%Hx Bf8fZ)EDzc>3UzY_ Z^>}~T7 %VEǛ; EY%JR__qR/;sݛߦ2hς@{GatBr7?X}gֿH=< {nc?~*4(!!,Zl7=;RJ>: "ǟ8P<%|"is<â)ʔU@¹'$OLli(7LxӎVJŲƾcpe)+>== cD(gPSTt}p!"UKM{U!hz0'dcǾ>$'tjr*Y$N^ƹ1囝`ZDxDr̗ȝvxECI]Rwܓъ}/=?{!Y&eLk{-C ``= G@ i895RRxJ4$ L`H=JX`HrWjÃzxA\H @T3g0hP3(Y*(5| ۘ2,O,:%iF@/-9ͱ"p ђwWn+ NTTWrEJ gj T oKseoƛ`Ì6zM+A&CӠ¦P7DGu3S28MLc_Xl.h$r!/ ܻ)s_?__`Hx^bc1_.] 2W9!rYHmn99 i>Dt]JSP6h:9w\Vx0 $!d@ Vdc٪ )ttR3p}k~| 6( ee&7嚗ʁxF˗7ӴdrL475 "pTIΉHX_ORQ3 0c y85:cM--al[rrO 5J] ȝU%⤞ ~ZZ[{BN/&D-V[M~R# t ΌQ.rߎH tVv/轤x25=1Ӫ)tgdtRc*޴ #P BPRFD;qBډ/` a& 6ubR&TO@2 Ip-x\3 ZD@9,6j@=tGXb!K]@X Slv Dvʻ^KŦyFW^ZN;ИfN@.˟ߐM^/{8cjnrZ2Pʄ3 wm ^wƽCmn& Y_>.KG/'ɝCh?f DnANݏLpL/5FI;ӔE ;Cлxzg1Ŧdasa(CDx 0| adrb ftdDbk*="vܞ[LDצ!Vozl)^c;JIDx]ƙL,ڡW*  gV@B^]Ń;}PGP٪@cegacxYSQJ\.jU)=LͦV?^OAw>a@alp,軜ȆK9h,i fHT];M.VCeCMnw77r8E(,I<%Z8x@Waz^^<2P(r]!0x Jʯ㷅 ȱ3*5z-kƬW1'kU&F%3xpRKH@X\Gw :1vOy>k5RUKz ^> DLq9'clgaSJc{ȴJVrr'?T{v#%H=<& wۛGˆ˶F9蝢疝CAtڝCW˥;I~.bj€1bRW ck숴.,CZlM?K6h* jOKۑ:{x@$]A􍐷&Rad@ ;—w;q ߷al<0; '޿Z> usG 3Y* YlxӋG/ޏk5.UbBرM K_ߍGJhc]nz's\KFC@!!h*,t (Qr@ 9 I&#z5Prлˆo̸ #^*6NxdV 9Ao&r4l~C1d*f&?!]0!Z&"^0ڵM?EYA.BmBYJWirPa{Ї,74tTCeVPfu\-2Ծ cU~&/M$kGegRF;( X2n^"6V]olV mkAI}X$mC/mt]S)p0X] r9c#4 Hx}CHA֋*ߗ nX#]12$XbSkpq.=̍ gބ(U6c )% -֧gجMB[ ScJ'IIgHJ#.g#)yddE5Mr C/`l-oqR6hT&h^닶I4Oa+J{t)p?"캵z(T7UWm鵃%2#m +|bd`Y36ȮOw9[1^*Fy9pD/Y[wV_G_~@> }uH#LX#I1?W!q8]Y a?V=M~0NCI"xJL.GOnpl(P϶@kt]l)M8 ]] K;Y;_ˑZrb۰^ݹsHGSow,F Gko[RKbW4yD tMv{>~DYkǎ>/7$(.~@-g^~gم.^S5d^s;;ԭhjZ:{\ M_޺!۵&K~؉}{kŀY_'X~oKo 6Q罟FGpB)Ȗٚ{@GRȪ59蟪$LjvXҾall!pr^Rh?2|bZ(ާCW:ü^q0Dzo2x`i~Gqw8p/_x]@"ww8s%{„Xrj`r;{}̢EɨPxЅڙܡ_^S_?v ϧۻ_@7e>r~<\#WgcVNr=Ƚ1URW燆N0'o!w!JR.6zsss{;W(~|:ַ;AFҚQmJQ<&22L;gbn^O {S`):DMV7n  - ~p>KvPȝ{SO#w枻@(4zM4ՠz=mhTO?ZAZ/C\/#TYou6f f*W[시K#^fG:MJD6U鎉E CS~(gUfUF=A}Kcm^5 6$@ fdױ냏!f)ȆKTXh/}}+kٳ!0Q,+MtzAm>n+7aQC'O<QEf:Fnd&V8zX CAKP{RlչS,^{p JX&7OR!quڸ bHYWL t9-U<tۨP2Hy9W fo~NNޝbh=s~J*+!I$o{o~_ߺGvNh0<^<<hN~*GGNN%eÈ}7 =x{cGRnT5cG}btr M ;ۖ (>9Pw :k6+ֈ-|K4 Zpa*O/|xW__OMؑ ?{|lv %;[;( A$ݣr~vo䯃Mxz^(.aEuuު>kϑF |k7;+, e7qc @aGԝk4O PۢfK=gz\tC 2 '֚VFS 2(^;p,u{nCkM1eFՓ%W}XԐS6 2$%T Y<)DHbBOG$r%bj9bF  YR ;j$p}0)3Ue/ɓeq? )ǨO#z̅MJ!ayAdęŬR|cqi\(G_5r#/Nߝ`x2qzdds1(͆n0Jj c-'>"S go2ZQ`ٜHVzUQ}dȝvpY <4 7pZS_NNahpNhkY׭U')l L=t]~'1zjED+ce%{%g'#+(+}jP3Er &wM 惷YKH/[j qŲpF'H'Oa뭃x6Vf[U< TGa͍a *L1ީ \_M#gv'jEy/-%v'ju@.| EdP _+,]#TXٕB OШa ͞`zS)wsAV;w|r: F48݀S"18y a<UjX>-E{n+\zԧOqZY0|pGdasl&=ىB(}G"w LZݡs{ݱ;C2Dcχ-x7pua E56Λ}x}VbZ"ՋAo'wqrtnBf̰'Zr`8PiK"1.J,hLL?)R"xm+3TGPO'w#Ր-WՖEW!~!&TXlMLCzh3iTz$,\ICxlcttaJڞs'<~8:dv!{Qc̪F4ы,/G]7h9] hJg|8fIC>U8o1]CD;rCUL YN-^tVڝ/.C]\2LҿA {+XXpuzBQ^jAU& 3V]h6۫2k2aྱ=֘WdΝ-cz/LM>~>Ѧ֤`=G&ŀn|5x5o:.:EVZ;ΪmO ,gWDDO %A{ЮҚ{K$ 59ho&wL cr+}>ZA$-5D ?&wSɝlЬ[]YnPܓ減)IL8<*Hv@/UaTa}$SEJ E cA=f )U۽ϞMHŀj !d .CDN܎D]ݑ `a܁"wV̌?X&vR ੋ#]@t(xs&s}ȍ{O O;ίןDD=> ܑ6q .?:P7d)ɛBy/3.F2{ِ'by4w:"Oϕf}ߟ;։ʝD'j( վy˴ &0'rg\{0~8L.nǀ w 8΍-Mӓtsgm3 o&ȝA.Ƚm %;ו E 眕Б%h7x6IH*OL"ٙcLMv=­F^DTbm Y:zC[#;x@b`ܨ+h.Pn%i+0Z`iڈ}{{IGעǫO OVmo튪޶FEU|S\ rcB4=L*[[!ͼ4%hbXg2ྫྷ[!pEjgdg<,L+^he`݊MˍA &TCuoiˀ='RS0J1tH!]di 5f`Ћ$r j: dWd񰢘r 䎗lp&wVлK9 iYBe&h&"p92A0PL)LX&KY n;\1_><(wqU؊@me ĕTd1g9;b rre>N r7{vr-INǀcFMܫ`vLsN0My@K$KH8mC [bҽFT 'B"2= ʞefqe9m >'uL`4t'MlQHǜq$4`L\*a/ZN]Kτ_,Ƚڛ?܋R3SΦUYq>H2轼-X*^TOxO·*^!$<޳Yǟ)]+KZ=0,uYN҈\K)_bvSW?xSъ OKR!dkd'\գ˜! )J:?_\D.po}5ʫɃύ/~"tO6`xҳCs5jKzWAVFqJ!yl; Bjo_bԓᆢ0)5 R(}WeN;G梼_8 9>L\{ pP Q@mZ/Ͼx$ F=|m{@K׆:ٯ>]~v,^m(B7hF9AW_lG~8d0Y]/qsA,)KyɋsaGO&6 tQf-"JHe")Ω١}!w!]8Z-p_^u"ۼ!.6;y4?Q&P|=(q?!镀WIV;qJώ5d_Ijw)㟦HVŸYMWj֓z^@#-.ܱӎZUyuR/ `^WKu`fƣUEBU%E p`m\$o2I$NcV;(\2Bݑ1{+w+EAI;WT4h4Cjb LEehuZNhkмٰX 5/梎'#C_L%=?7Xihml82%Tծ[cMFše7UNe$;vzpY7W--<l[@v>KHU4ŨgR7bf CQ'ђȝ^2{Gh9387Hb*]| oI==(_Nm!~n:&X-~C*:e\`o~pP2՛gF4Yd"eE7eMJqeyCyJgmd &/kπhqBN(dAԕ8kft2^۷J"wv'm"< iocC?qvFHw›v< ]>HJos;cR 5ORQǜ.K=}XHSlgs @&w,(DN:znRlsoƽ.54:{kMH`S!_L#ˮv?}]knn%w;7R̈́0 ,7bf?VMݟyVlv6B [#&v;sy !iNmt ţ3SldO%VXs}{AfGIiswK2"@bEiV]{s2gb/5(.rvrpU,]|H!A'}%CtURds]P BF׆ݛ`-pDV4~nKYY.Aggۺk7k+-nE&R]w_;1>ӑl)똚~`j*t&a:q|l Ɛ(V#ZڑhHT"Om(wJO[ȝj`n3hRh j1s.rHR~]}H䞅'!$4i{)&E(SpQ+0驙 ` %;Jw]IE /&w^G`!!nVtN{@Րa.rf,ȗ= me 8&rGFlGFt>, sxP@y;gDٿܡS7frʽǻ~2E>D[P0JRɓ ?(Ӑ}W@vІX ,eYz.dc肗j%7hpֻ/{G v!{ـ2My{M33o&w:݇]ȝ\)pGSaje =: ή-^Vūi!9zr2mdmm~~e2{xxi-_'?vXe4ѶRpƥvssu^_; C--eӏsOCs60pT{IcdYnFYyVd-a=aDDDҎ_:[mAA )G8$>[+w$?2{-*C͈,F$Asȝ{2oh{$rW0\Il[=jmOQ3Hos;r ܱ&EM<vpΈtpg;&T u/ |UNqЄ DNyel#wp'z׻P(C/.:6dv?MJNÖ́r@dFE^xߚ)10@>?5AɻwVh- g$ F5滳a`vx[Ё!cq?/ܮ X_Z/|.{r'8mc/5MOׁT$6{O񶡎uq8;d'dE5u~>]wmyVr.𫣡a kV$1dΐGhrW:IGv9&.e s{ q2{װH\Tbo ^Bumte5ol@? v>*^ݙ3{KlڴS rrXvDD)kxъ:gLܡ+# $TUOX5ZӬ](7WjUdZQRkI:UX4 'Nt<^k<T^iGuvLGy,F [<7̈́ ŀNAhK"N\2ڥ=_045i^J2jQ@[,N)t'pD2Fe&1N6HFrW o%w7{NAWc׷Kw(֗9ŭq0KIQ9NO =2Lkk32:/Qq&3-pRZ [.hMh_'ZGճH. l,AU [ t哕ΰg:[ /El;))LN@ X/`eI}a&P֢xmUbxA6+1.SZ]y$P>r\'{B"$~?cOOAACfTOۨ)/@بfŽ֎y *\U l #&=*!Qv 70M AD}+SLT߽7{,):-=!C1FBJc}h%$ Xdq$MمxYdb6C5$FGC"D5Wahqf~88rg#/q, Mx?~3=d,k{o҆*u#tfgC[MvgapJ{}&P sb'ro(%r}+K4Qj#4DZvبw:f`3N\8v=覈޳dMrJDPax.^\F_N'~)*+ 9d[ 4ojkSwhC~}y02YX|vfe(jA˙S~"O:5 bTN$xfHQCtF'jVŐvbsFZ9ygshps豚:׍wK.?Tׇtn6ED#q)R=4o3sa8? 챧OMMe/Ǽ5Ff@—iBhҼgIi" 'ì`A4OiOPm<ÓxhcBOZ^gr74ܜ vE1@x tygC%J.>RiA_ѭFCNx_+$> clVJ^X Z3YSCNjE5ER0SEؐN}sdS(WdMH6 rG i>D쯸=վ܀R,=ϙM((!0BPe E&D \Mk_5Ehs,Qƻ+!ї{VN6̈ρCIat͢k+䣿Oz;b7CHvpN]x$Rܰxȣէ.w=[y-6Q "wC]X@= KY:^?.{~Sߺ1gIp rG?/*ٍ澶6NIL?E!a3ӓ/V=cpvJ ~UbD+?\'u ,x_6EPa#LD ~3nKz+nK9z WŻzPq#¡aO@ Oߺ[ec;x!Sag kQ*uOGPBcT K6EI4`2"wmHKb_OCG݋}.1x}@F(# L58?/%n)kv{v2nހ5R[B6> ;$lz"w@:-X|) W_GKb§)t__w+;$'9a ܿOp!0'gj*1 23*wc$LݎLl[bl(3x$#bq;z-^Nu" ̯$Kq(@4"_U3qArggr(f̌ч腹w3G|Uէm_٭NRP#O t;em,?jdNEkfXŪx= 8sfdpE}EF5ҬA/^]ֶ٭FaIѓpܱE9+sN8qW|! ym!%=%t/y78!G]G!^_:GڋsÏ<8T:R $C7a0OR \e03oN>o||; 'I|? ~//)Sxx;K OvQY}r9CW2U0-T3#rW¬܏ܽX&E>3.v8o'w {ׯ⎁r Jf1:'8]琱mK3 qF^__H*!HGBȝ\GGi6a}o py3ҦZ"$Jal~xzǑs㎥>,-FKKéN}{/YXTіi,:B sP2 r/,'wܳ._߿~! gFA}[ȝū;pZ`Z#ۍ{J9.q;6^Ts/´bm ɇ|%hb0U;Cl?b&98{/=q3_1Dnɷ6{-l' dDIN5:gR[A,!Yww/X/{yj*\(X!f! r?O}%p:!0:81?Y^1+NI: Չ-T,Q)0 wvOnƗ jE^ 5d1ڹ GXp"] FJpgw_cer,׿.v2WG-p.P:y_\Yɍ9sK׉D7_M5RKV]po;{FnzV,o~};>.$'3 k!N<~[KWগ<Գ`N-THh9?xiDG ;mw4c@Y ciIw`2'wMo@^1H{\?Kc0m)v&a}'o"t](Jλ /a;BrÒ1Umyba>A4>r\!x G^BOetRx|vM;7E[F&\]piL)"$FS1!VJ܌& XQ8>ҎDplc[ ЙE4n88c3!KjsO>?e1+T{ giLHmSC*ވ4%ި;FxP!$|pr]COKT Ju^ݠK+(ק5;zNhƜ[+u,s_U>{OZsK//R-ə5Dv9Q<c#+cZ Up8@G>ab;"k7:F^E/Sro]by? wmp?A5HttOD.oWp]O;n/3 52-&b[Lsunq.wq1D3! wa,HLKo;o}Ƒ0XnvSxE-WF2rWa{ PYgA\$Fh.E5phW 40g}FۏbO a;~Md[>Igta3V3 Q8T[guCLfǠ/ۣM,1jWfɵ V.2khl|jwlD@]O+HDh=npgtoU"må~vDl/#E2D$Fݘم-pϒTvq?2S?n(h/0{IUHRpz ܹZ`PthKEdjho5%9:!yoUdnQ] :u*v$`dN$c6ŗn1!,凖RGWbZs o3194> E,=Y]-)}zcwl1KkCpU!Dl HHO$1pO7B3ځ"&ygnW{ 8@fE.?>. =.Ud)y)Nº_~`+C w(.QK2d+T$>sőM5H˸MCV #}33!4u |Hv)LxnXN݁TSSv&r,T \_r 4!YhYE,ޫC7gg1 %ůِȇ0 q9e|ģYiC&r6n`N/!caw1C[˻T}r8i+f;s$j*g'^9zŶ|U]}'rZC<#T' U^n,J]c_dx<څY2ĥɂg; %1ݯ(mG0L[ dw/PL\//Dtt` G6QqPB-)TDsaٖW$]],)IG6^ql_2p&򁜾J)SM)VeAon Jo◧U=ܴQUv(K&k9 R;zTNaa8"G֒!K\Fo_'2]K3Z`RGoAThY>b+Zݳ Cv}ł~QևjJ˰jYEBZ{QԙUpB9( RIGMWBeH!$){wp$r>qSfݢi86V 3hk1xՉ&"R@g?3a${#+Ygg=hciv.#HsK p:Mј 8[&>1%;CbUs89(bv9ܑn\˼{b7೏f%O *x&ƢLͪRR`Jv7K Fo2y8(6JTuJX(v (]Ԓ 8۴i4]-˺hu.t?<2^UĽ^7?ڜ.,7Yܙ.[XF7mW8,(2n7S bjWiq}rp5{T lT`. Xȩb .H+o4w0%_IJ{iYpn.Oᮁ;X\%oz4Bw;~*f 'p_׎Y,29O ~!: .'siP YR FrK'ciyu.edyZSRb1=/Dr, WG[:W4s^+&"Aa]YghMװ/ dsӳ+٭H37xmD35^.zSL] 5u5[aotoZlfPlE#DGz gvL˖]1ݳgcL>wȞd&:TȔ$$-q;+.>ֶQpfSOosy^Hc=!\wf;x@]s;U4\9TS>PM엞8R;=pG$ []MTˤ p[>ܳ%[wAp8&$ AQ ;0 b[wc``< ͩLr$ g1fTS{{ᄩS6L{JRac~+"\s8L1W? y ݋>vk150d[fС5mlT=LCԘҪ,GlVW$)-6hRs BFćR:9WU @<YSFRQl]79 %Ŧ|]L%%0]\t{,,˜`ɣk;!;cQ;?b0~Tp/H.hq wv w\T5>U޾+/߿sVϠ%fu]g'FEdZ2Ns2cc4~g6Z{p2:7g?>)f%-k:P:~lgȋt`)UAR:)ʍ|og~>)-u Q`J##ɇIѠ7$`sP*۪7D̮.j7ssFTo0wuv,[wzEQ`t}2WO6 -gos},ɸŋ9G:"%KTvghϨ?m*wQ䮮8}Iu,ף`I :zV,-rB,ʡ|g͞^*$ (ei"׻/4LBhu$4>pB-L;{RDA@(E¾8(I%ɃTʹ PҀ*MRՐd3+s9wz)P…%j}"Bh8HmZKI@u"6TwDȺjehv $}Vhr#-3sGkRHl閸n*en$ӣG4Sp`eU!sĻ?>|#mYQ,})nm-G?It.0,^ U G1%W>V4>  l&ӊ#ul~HǨS|kUޘjd\,D2Irvz68y"&pǻH~ ]b !\ב){E wBMcRp @nl|5{/Ʉ\֬ N'Rr 3-ůal{tȍL_}VWqJ&l2R]ֺ+79/ved=}5-lFG1G&sgѿW޽^Hs31eX"+w,.xy=$&!CC/ UB;og?I*1n._oʙcxԳΙ@S"k8Hp '_&kXAws/~T;o+؁C $pwe0F #:a{ ;M xDܫ T-64 `85050ܻp+!cJ r]_1HA2I'KBpm#܇H<ܜw.YF;h$gw_@]*vWUPX{u ufTM#F[#Bۇ3wovw;dC6hH_xgs&%V<;9bѣ%7&xJN{/>^p~Tl{J w"pOC)ui)%/u]C!PݛdJ|k}eeWhc#{llK:fMHGFfzdo.Xb Ln>6kO?y~pׯnsz{Qթ-E֘w[~o6|c|C:&C: ԅ|wتXԊofŢCv\Fkiۥ2# >pXݖt$S4?_^xT%Pݘ DG6?s9 ܗ,'w{%b-xD[2p'uqL~ly!JG˪D)r_Zr/(`M'l1Ea|s'F1QH)mIhԎyRNt,l&sEYn, ݝm/|;'djw S4;Kǜz6}Un:]Ab^Y :Кw0ej;n5_WE%eU!ǐb;PlDdDcsBWɵ~=7ז7"w;bj{?2rQNΨCϣi&` p %w0 D!Uk1qu*U[sލ>baZM^m՞ZT/.ޘfoͯ[Ҧm{=>\dsǮ' [=|ƪԬVTฮ$NMTPaj-9G)b dgQG(B gr_+,nAdlVakY,r 8n&x>&hB\w]fEÝڮV'|'Np  w>X30b|\9-YԱ9aqDYvanxI#b ]fŒQsa[*cUMW+;pTܜ{Y[=r 6O/\;{O' Q~m= 2{F'7K92Ics6Nw>*f{Ȫޟ|;2~Iu.j)D B2cCż CT/hlbU䍵^\$TyUk %>5wm^Gwjꏩ[[ưȌWa1-2s/ssg~Z3'ۚs kff&;.t؜M{Px#Kx+`%laC~{ITN[2S)p;67ú? U;='!mRkydWFwN̈P(ELpOn& ǻ,zxOĻd3 (66PF4&g_iM3`82>RRRd|TdG`5\r^`e",'H`\%ML9XVݐ:eo[rw_>LhJEPϼ}7Ms#gFBHaQ}YIvOiK"-M1pg4~]4w!%Խ\ǟg-qcY+"8-1<1Qyo}ņ4КWRwQ^^epǚh_ J:m=*ll?/: KԄ?ŖQ;oh(e ΁4lw8 }lY§(NA ;$Wa*ܥRN2N՘z,:] h4U)Tn8Q?\U tB kƐd{`6;հ]X}jV SX|'Z`}mx+cԖ[= gZli,j;TR?nV쥒pӧ[h\/|dbN_ Ji=,fDM,dxktYeMhkQ U5әİ WĝEX .qmpyQċB xcyj_ϴ0uz͛pØ+)/ľ@-Fܓ$k0-,??__nVrwmҀ^oٳ5=Y\./;He" opSGUC{F؅G/6vh:: QC}(?&?;r8ă/qJd|[b Aa,Bn?kX6Psm4[UJyͻn}׎~ >E}AěsѤ.LfOvbO~QFw(=*E8R]]sjй,upydy|meD\qL ZĠ{w#c:X̋˷$^8?龳\e xCVW+ʼn>ʹz:[@$͇0l9vJH;5"ȉsЩaؒ c6 (MS%AOj?*c5{D]6`؜a-pjUHp? Q͒D.K!Q]p zmt^h"Q2aLB wN(|b;.;d 'O뭝R lLpigAz.%$e49܉Zx1NZX^A#>:n\kpͅ#{xCsEc/**Vkehm_-NZ=st?z(OY?lX6~{H22a{UG|W+Ӎev[K}v[O)nxQv{ub(+ǩ,uҵRI2-K(î`EIJ/@w`l"A6!:)V9ܥ~սOAzb/Kpp$Ǧ[[[ǂp!~걻UI>cAnk2g GṫHA9΀7+ؚ\^^bօj2S=pI ΧKUY׀5nUٸ)wifdɮSuxջ4ddѱ+&o=~_}g3F63Z"[&>9GxŒ-{zpxυK]N ]3aR l3%[fLZIr(ZB@*xĞ V=)LErRM!鈪aQL̬azw\SH#4BQrM;:=4sBy}+J6=p(dj &^u~]<.5<6S7*6/9=b}SOAyyɩ;_-P8%CxPsWzXv y^SSFeT{b eku8viYvNي/*I8B{sTwHdgFъ`Y8UQvtQ\C&6;=1"r+W܅ߙT#-&lxX YwǼ$E~Bf{lg=Zpǘ0}Aԑ;2EӸ9ZS!2BJkynd{%Ry4% cYb-poaWWj*25?]&+ rЮY$rspri ?$ !DiB Ҥإ"ٚTlEަ˝ӳc|򨻶CXL.d7dEv\Y#rw @ygH( o]wnO#Ce(){:UcReayE1 )ԥ|&%P%%} V{oAbrtGtMW+_%8/U`toK̷=cٹokgԪ#,={6;>}sWTwCPa1O]ZA#8C2lڮ?$bHpdcd9EKgC!j-K=a`tBNp]Epk$tHd"ߎ`e$B 1 'xI26 ?S)@@(ő+˛W=\fBwC8.C1AkWW4tګPցpvnD r}I'ԥFAC*Fyi3JƋt1?OL, WazMC {振d}7eXKl )3*w]t .%\c ʺg7c>&}̵k ++ccЫͳHy1+,EwU_C)t R Uez܅4{p2< >/,QIU #{Mwq:ѺcAjɺ.P'$3sQS7))( aYgG2ľjeKߑ\Vth[bjjtX_>Ӛ͌5-30e Pv{,^^-q a=,UǴţ6re*pLSb;(|Ou n8؍MZU.OGudcg;DpG_ýCv'Y<d_N4i5YSpc q~" ~Ҵ@}iɻ1sG_ptr^JUP|@_^n643݉<TԎ#,o=j\Z9ځ 2Ag ">p/y׵%zWx4,INgU~FwIFblq wt` :^\{=|avmR5h^6]>3@^kfgRծyTX ʷLz8-S fu6 ">?i% dh:'+RVGý7rWD~g#n=nDat*?@z` f\:p$ *v6ƁErh#_*O.+N}B"ʓJOeSG30pG*`2$4!w=k>pK)pռ[0cE$dUjv=[sw!O2oVuoZѪqȚҚ\nm8˺vٳ ߜ;CjḬeg6b;Hˌv"}ab<|pVؾz9IJoz =&*0YjSE`o/5\I⧧Џ9"dv4w9 ct鴓 CB"-D"9*d9wb_+ KFfHhG89 r&NgUݔr/ G/Q%o5.=ϟ[߄;*(I᫖I+ϻVBi< 76A}>{6 ?0ޙ4pbb6i9 ڑ( ԏ~XsʅI {B]Vv#:3͇^sIJYY)њ8^| PՄͣ{ir wlkyjU8N9͒te?9O^{;␤B\e>X礄wMOiEo>l;))l@!F‘OZݐ=jhh p1nrM53ՁwP8_^rxo ?uNl"&+R2 +T%kk-ʪuoKk>pٹ=ɥRzuhK=~OO>v&'/^jsIexF@-#ӱ -cNQ%?;]t?}B^Ifi̹qi pOS쫗  `]\ y\5#-\~2wqXQʶwsHܹa\0B# :J;+]nE}pd0&_̮y ڟV wLDfڙ4'pMu ر ǿ%Q`.:N oW`MKreHL\ƨ %mmpj4]Ҵ1Qg6{^UfYaa5:֒j z1-iK7^4j^.G$5=ٙ8+% %Y+Ɖ"ðubؑjCbcp @󖨐d^[E;buw׸ J6aLY'_RLsՑRs'S".e9Dk: 'QњF ,' ܿ.隀SkQjQo _G`91遲*2-PUoWҚz:i;V Rկ(Zs[K|oI Uvzjb>9r5\wHεlB ; %G&8NXmݼqV6j>-q8s{Ihm O{k -,prܨٚAA!U*Q3wcpF;Z7*&'DB"#+t^)+ xq>*/|-m$=E hJAA\%5O k 3fpYfgkwK5\,g䱚3aa-1g{GXbˈ#j>2RNo-_pWwtrMXi U8] i~h$NejH){L682aфϲ 4wCtfL1 Zk텻$)CRs7#T)tH5pg̍ځr _Ah,KqQ)d(}_B&- IQ.1 wHCa fyţ*} y EVk! NT<>=;YS<+5c\ql|1 6mJ;F|%}vf#}aAq싑￿u 9VҿW?b[kRoU!`4EՂ,X8t,!zR=;YSg2 <3"C54S2r!7a,g$M{@f Fځ{4@3ܫ Hr[JqSO5^'3WȪ| o\/zͦns89(;p QrR\-XFn\FppL'_ Bwý *(M-(,H91:U(jV0#L"$&[c+^^Fg饰ɛhyeYvح {RÅc5?OMl]O҈AJeA{^=qy[밚D(I,h-QP7>L+"t)&uF} .ܫNBn={9 E%' 8Ao F'Ý i-zjiZNrS?ۖ.dp(֙QhkU*΀< n;:w["nCzW]C >*I>a.[R(+V=ԓ ZۆE˽7u#YD:Gn1؜FGEzQKFXC|ՋkW}\co.fs$q. ܛ ڇ#6@)~lPzŚuUV0<@Po9#5-}/np{~+wYOIv%#D`;O]= k?b-Bu'7BLOŸhu/)LwEǢ~bzwk_i/<{ѹ(M@B+;γG_4~$eܛ<'}]889!p8_Lko_m_\]k:nqf[Io^ݣdG\2jM뀻'q)u/,ñʤ%!v( )hwϏݎE =B,s1)=1gb8vVT=cC'% w;V{Q,gU{Ͽ~ 6~ fŠ@C_/@:[ڑ3/4@M@Lp"S[fgT/-SGRhC<$!V"4@mpiVv"/uaHd܍FY,1bx5fFލyvGgI 1~*GG/:<:2٥j~,<5S #h)J1&(EfB~#Kpk7 ً<R̰y'G9¢I=I}MC)%4 ѻR ~t ܞ#'3ZWW{*;hr8. n1da>zioxg@Q|,;N*t:t`+B| 70C  CExwS<|ktӣn^ɵM& {G-5ǮkI~=\~Qs ?ɦHSbwh^Ǯ%%t\x#0ARK'«('Ý?+ VHH |p򃿈,6s%$02 o@DS,P{۽ 5 \]$_Vtܑ>~1Yl(,QG*+[E(+ Row5'~p}Le1Cg"0!;)S8,i*siADmaZS<__Хkǘ染=p*㮝0|9a3ŜX]p:3®?;w1`Qo׻\6#%rWyg#7]}֩HCbO>P]$~B~t,"@=@.My"`khᘂD RPH Z{n^r:pCc,P'y=b2VIrAl^ ܁ 6GܩB'd?O;pW{쀉v7JriY94Vo˨-7yx6{=T_4f7ӰRKkZ,VUST v.❰hvk8sPbX) hlT7lr2z ܏^o #/w֑X~[4CD\PEʧxkwu l5oUܿyxs|"&]`E+t;ހB ^%,%/ JO]_yHv߻H@jnbPE]Wo-ms-xJo{ }*߄Q#śL2)ݑ!RpO\ ~:߲'i*_;ځ}x+:Npo\сF=p wE٫#6T_Plu;$e`I;9GumW+Niم+7?-m1!(iy)>RepO .AVUa8U}o]]Ԩ1Q!F|ٌ˗ݿ|#O/Rbd$m33a-Dg:|tN5l~Iߖ;Lk9,TI#BqpvbM١@hqmbV볅/S--GgM,8$n-XVU>[i+xr$'H._ !2=/B>DPԃxJr= <'Cw}aq`vk.^\O7%W%+󚗴&ejYNYƲ%>Lkx +/{E_fӗ(uj@.upԂNBZ^\BJGu_}꛸Adzv_Y`/!L<"z99p97C]|<4tdc:NCS[-S-֚*d t:QbD&@!1lg"CP<`7y6/aso$vi$] cGGcpЬMV`ki9VԔnvj|w օ&Zjob ڑD\jD͌gz_BI"xQnw(b,Qţ3.vd錴JUyMU)UAt" A{O%G_:_&U%Ṕ:/YһHWm.kI?Bש-(M(|XQr.b=Zx)>C?AnC{GbUI5Z(h ,w8fWtl=^.D4]kwOI+ЭTgܽ0Unehlڸ@ؔpz ͖FlQWvLoVZBlȀfA[f+Ý Q "7K XWXrw &&qQs;K+J۵1=wa$y| iddRgsn:ܪ1Ҥ*%ՐmNr2si6p=`;TNMNwR>5ǔ)H8rXaq!.8=|ѥD v:OBt>AčHV*%cȅgpA]1ך3HZfwApRcH6)u(K`$-(WDi̩9Vp-'ѱtsRnZH tNrY/2;I;J7n$B+ x>6w9 (tze`lpS.nQN%pv@/Idf|a@[BȽE&$r d HpTt";==[=7Dd<1ƹ;- wr7׵١f,кn%+Q(;J{QpGS9Uų S2*\Z@o^!QSR4}R-4i+#L_]refļ2&&fm#aOӗLqqqRYJ%0؉ɐbLa-7o޼It +I<*!P{2.4Y߷]QL;ߐ@(GO/ wI/U.kjGJUepg H 8#%DYO(C,8gGv2y{C|>7%s`ֶ] Yqe$2DsNҿHLý86 f=evl9pj!A?3/|6u]O2dwH 5QdF0c.'=x&U.iZ ?zn~[%wW{yB{!d͙༐%_u'{pc_?sL[ 킻#e@]GcTөSE]Ƣ+s hobzˌ8r[#Ę5#jD'eсVwϋ]i 1t^Z*8ٸp!JS͘^K-jT O"ܬ :cP5YBLL+Q.XN>hOz7ap~.gӄ=p"RvJg`{Q T$f{G[,ukn7 "=1Ui0ӍfڡDғJPe;pD.?4q| қ[F !B^l7\]x++X=3?r2vE\7MҮו!j˖JyYPNddp+YHpt"^uK[Ϸ;~#HVD#t.Wk}i1>J5_цPgiAaν|6=vLҵk.yl/kyN.")gVu*3X9Vu=!('&}+bqʕ/vI睞hXT=::=]UA#351F|<>1 t_{1OW/&.OFVYh՚gJ f~;VqriU%ͽjXSN]J2<jY{tiʢp?MpCBT2r\k~sH&,lS,T]զު$ŕX 75jׁ4f>6b9f\Rkhmf}_Qp笻Z\\pGpGLQuJU/uԧbKTͣ_5E0CTQxdP6;Xf~H5^Īeif]3x"XF.ï >4h_Y@?҆* +E l/w){a;\1 k<-YJu ^?ܫhbL=Z?܃v^5Xv)gpmm s:u!ϒ_+.;6eY֫KwNJn2]h}XlrEE++cI[xno~S~ X҇6hRpwXN}e&7whgL HCH yCXS,H~5g" "7tЁGdw~oʄUIi}G8/a73C)lb]B.!M| 8% Cy7f.osi gFNs1Qhhok+UY|wkKG2)YZfgܹ1ۅp$$Q]UlU 6 9ur./nlQ2hBm!ռUO xi3 =5蹅+ƷE+"w`QkrVn▻ Njۋ Aw#ӽ/Tbj\3g| X(O{1lc(cYt0 L-Ik&D^&J9w *RֆXU4lLmq%b[Ŷ3SJ8a, .[.u&" JޅwJ`@ "wd8:^ {o V}UfӭR/p UkjOn ]krwsm=0'vymDXx6(Lʺ X;FkܠAL‚&uݱrg\l}NR@=۫d31X UA,w^ 3ҾhDUq>7xg8q,D-p?Ro Y90f}7Øm@-#9 ߰.-NPYDNB[+kGnSeyQ,T!@| sQ}\K>pr#4'EN*`$,3k_JcY\Sciۯɫ<ca1XdۂReC*O8_gpWV_,&g6K*#6 ޻7_<ƍ@LCz0{y7B $Uâɉ#Wrx{ArԚuy#O{d J;OӇasَL4<&A agStŠT7}K .dqB^<ah9>q:OCf`{`?y"V6؃JԱ1qe1znV% 줲5HPeۍk,~i!Ӓ*:nVs#Iz[#[Zzن7ƲF p{4<ԟ;ʫ_]\ߡY x4[RS˛mq#KN2\hEz+ 7.M#-5a{_0< `=Yޒj$~ *-2vX׊SU BW7϶nCU#$.5T2ypNJNT AMӇ_~>wǷ0 LvU0! g".m|#Vuf]+, BQA1G*ŁG'KowOE,LT%cq/C# <&$_@h<- ;p]tC6ڢzV/Mp u:NthbYp&ck6u5Xݏ.}*c//3ܑkEh'$K{Pve>=HKdPr M: ߨf3+6ܫhWh. +Otb 6&+<)#L7TfO!"ڗ{~>%Rgk~fO[r"XF ;q;y.2Y(ĭmחYz9܅;g1܁pbO_i9k&qK0iZJ=0G?gf% ؞E䘱o,9l=Y[F]K^6N{NϲI;]\ B .?IbBhrp~?Wm␣0/S0_+Ml.EQ}4+0xZdzʆ|BG& FB`p*`;ee`m18rׅ0v"vZ, c $JYV-pwZS䎔{Pk+~l`ibv-ϴ }ں UmXP` wHk34t2tg9ѕQ9Γ;:=毨ުrKF"Uų8tβ$*}tw U9TeAQXu.Xs3m=_\\5/1@]ؠ %N23ύ݈l ԂU'lEwܣ3Nhr ۇĘ,D}ivнN^(@XYF~?U ӗ˶+;$cCPӓ$NaQ–"l+ %XFpƒҙ:G$ަRncnXLzIoK2O[fWBD a`Dkj_̱2"w̫Fw 2S21cI44\fߏpO`rMMq)qǷ Q{2H^At K=Z#QCzѳQ eBλpڥ4I FN5F69?GEܯ/)}b4-YH嗺4_%Ao˹˻(9NѦ UT/W #gk8CJQ4 R U3%%_x"I:t Tgu;Q ᘍcSp@##qk7.߽y67tV{h\&mmŧND_~}Hc2[F!狼e(5ƹzAmcEq"ux( |9lq~ Y %l{ul]@}(@W~KG% 䎷]dim?r// wF;]vfq #Ll HB>FfgEU TeAʖfhdQ9w}[Jp7UoZR쟖Am.n2'\deiJףqda;6v#ݾ4WΝ;~2{qi[Zgz;h^pbwEVQwo>|-#/&S  p b( gj RǸo9pG1ev>ɅncwjPPTi U!>Ub;_r&;r9)ހ;LtDWkĵRV;VvS20?G` 9ݹĝVqtnbR‰/&u&k$LH10S@& Bg %@XA) MRӕU&n&Ѭ117?9)n `=<9{}{; w;^$"cL>[8 {=ـ_sg?wI{*sE]b[@td7?|u1ǾKzi}]L?}ɧ 0 h2|+_Z#COg0<L*qaP75:F0KpLZH3p% /PJ8G-Y#a^0e2wN^:MyDuiYqIwYw1cېkEgx90JD3,gdq!l7u~fGplPx^Pݎ?!ƈ8x2鬍XV?mqS+7WňǪtKȇH{G.ܫExp!H ,@Bfhd>z 8jcXoYwʾxa1Czθ9ig\Sf|ҏ{oaA6wav_$v#2+ȝ̡٩8җnV{z({A6d ZP0Z0gY4449Yp<m2: C9ŌJl[zu&XpH3y_(W]:|%`8Ԏ}OH$7lPW°u(`e}?Cܠ~ڵ{ƥ)s~2J O}뿽vW#}jMNN<'8 Q6Gzצ~_|s,\Kioܼ|&B|JhNOTE)+}i.ga[b4U~R{1褛Xbl(dd6iLACr#5+ʺKJ=yd8r. Y4Qfal>C-cp$F_c88R)Ea$:ĒyD:[.gYi3݅W^BI$99wpw@ uKu+]"*"݄^wH!^qӱfZɦºk'76F_wdL]j}7h_Ss1H W>oy6v?|pwfV{*bvvpF:ld|0W~|ƹbu\ƒ|wvOρ ~JJaC ߟQحnYzd1L1Hjc#,r8쵎F\Ⱦt7*!{I-% WYXPÝF֕uxm <٦TRvq{Z xY n\bUC k ̇y^QO0Ib1qkaXhQXi{4&$"VUý7 tw=sJ(I:JWJpqpAB:G7.]RpEXk];#NVqI=DGF:@xf<3U[o^{K'|:`ڠKծ}C 8NCYyZɳ%l^jɶQiFfnDu8ܹ@ヿkAXBw,Uڀtφ;E1NpE]8q#\WK:rw5WHHHGC> je#U܌xoInLm!Wo>O>yaoV;mR+wG'صu~.}_֗η'ww{tmݡ.;o|-LEu(k_Ӯc,L9596"3%8ˍ/ۻѤhi6VgKG+IQ*pg{]=Jϟ<&z3pw|=a=[\2 ͠;Lp.$qNA@,wn0VE=g"05wpglo#4&-:wf8ݧw" k`NCZ#~,+3g;&Ȑ>yV~KH˼MpjMR͎>ywmfDF?AQ$ϸX bk$vU(F=g$D>KvG:UPGXyacnٔw_Mw?=|Cq&O` A֩p@Op6i焌 Ul7Dlao>ܜ wTw vpV-4;<|ZE~V[x."C *Cm?seDC{TAiH4O}S)dd0f{/׷==[Jۦ8f1 pQ;-jl1XR!pp.Mغ˩iAKp:wdqp%:XʎJ[MN e\p` Ff]%z;RWRWǰ D) yK'8*Vp&g%{/ݯFB8zdֻֆʝ*8$ 3n?:ܱ339:E2U=="vbww:n|ykj'+ӄѝ*r})6C)B{#._gvqi~ +'3K-TG^/c,d;?eB>\ʎ`T˒|b9Dz,|[XF :㝇p4CT>F3 w#+Vpg@'{h*E2 vq^D4N ALvWAc,hr,1)9Xc($j p0Jaݻk;o4AZqZ+[U!KYO2eOmJ+<1->]]&&LYjm'Fc& KhܙTRXn嚢6ڲ5Im$aNٽ㺺'#|0"!^S7U{`5aNBdR4U,?`.3'=~YFidӁ)8Q-)E-RaA^N 0}<獯g #(.P p/fq *'1Nu=`);k=y”.+"nQPAy)9v)I͘]H4Yeˁ5 f_Pʡ0kY~E״Vt "L8ykg^N eᚺ(> ="<^`6]IXnGq{txΌKQ_;Ymi$e!t5{ww`zt9{d&3"U ֳ%Vic \& Ky֭'Vg>~qk7ٚ`FGY2* ! #JaV5Kq{TEd!Qg@ AiEY|KЍȴ;#,`Jə\˿d*bR &WI xJg!0L@-(!rLkBl%:]-bJ e*WLM-xDD* pDdYA3ٽc1\!N7kL ʺ*ǵکMRK!s~ꃚk?f KvXvai!;6MNodHtjΑNH h)*w(58 ]H].G(cR Vi2QR]Nh+ X vI⠔8^xU஖i9,*BG2d.{ Fu)orUc+n<'UH tJ,gOe! <̆ o@M[_o#ўIJL6;xCzm/hTu"yյT||X2 ͽjjX)>}߀V], .H;S3߾I~ O}cޕ/~׷ovaw1/v GD/]YGpfr *;SFcm*&$=v^jSOS4ISwG{YE&K$!*fU(ͅ;=ةcܡ\d+NƟj2S Vhhmg#G{iέVI> w (ۋdCٶM@UCa|;5tҊe;]wi~tj Uo Lǽ0T;POhyFl4󰩢{VcBg)oPBV鐴(6&@o{~] WIHo!$W%q|˥Lo-dc93}"1X7G+cĎq6hHȒVq2uQ$']-r$dR U(? b4!N ۳ޥN"$tkl4CEs[I/;FЃ|m!,iI4D_ys4pMN+7~Koםvv >|~f(RѾX me!nj|pw):J,bT09YpύgB{E~g_JV,L,Ȓ{ iCcLJH(?#?0 ڼ V$lmŖ1fO+g`:dc- RD!ݮCGQ zOw1VcdN`))vI.YpGVXҏ0 7vJg 8w!spGɞJ\/y/DEm7|SS;鵏⅕A ^~+)*&CסW-9x;15ˢ7ZJ!aTvT' z[1 ZZҧОi3r1TCK;X0UBzCkw O : :JT!CoZKM~ɘ5?P|hhGLMl^w>fK&Dj XHكA'LjNdl8ҎfZ]]JgF\7on D;צ7V&2p/kx%?k.k3?^.Y㱊$0BpGp|RMk ㊻R7aO_9KlAXm;~"\qom+$R6Ϟƀ͗HVZvj@Eiu] i&0^.o{+UȖ~XLdQٖ IB|qZI ⸽T^E~Jҩ&yuA&ƠR0~YhgoQXP} 6 3AWE.k\h,~M$'{JM!L@1-ɈwE%w2ACp!f'YʎL[4k؎Wd=o'43i$ E'Oҙ~W'oNwC8E.]rݓ wf1ϪC1@] pO ]Uӏ5~Ge[J½@R#ܤ   EpOGVЀZ Yo'+&xK[xa1qp|DIYcmW@Pe@w בBK.z<$gd,&XOV eqSl>seQx/~&cX\`}:3==6 +=0tT8PڝD쁦^/tMAFsQjlDR﹅M{e{)^ 0iz6u~Z~Mey#JשE6MepYe `;O'a01`S#Ef+jj|ۜ X|8:vᷔQQa}}LxT"S9yd"9fQp?X@|S|',[<||pTc02=`Q}|ì )/{aݽ^t =\}!pW?%_䛧~G{\3_*Ǩ gKt Uw+My.4.qV &m33BT eUq}zRFj#1n>r*tr@w/ɕ N7 qV75QēE`jbPh-Dp77M }lqjwȅ{Vouė(¬w+V i4oWBK?3&P2}mk~KqNFn|con}اH_q ^37wylj_\Sm:$l^G|;@$ĀcN%n: RUFnŴA_p_a]tgX9|>J-$9Ni|*c>B+QR yPF!Dp Fw#6Pq)Goe Rsu3x~W%vm-w.VE.-=D\|(XTA?]5_Bq svn .%!/4=@s<ȯq8^ظ^RV¬ѥM?YBRK/Sb.@'4GSNw,I+> 1r'߸|rN\X+~Ł<AH"u kb_GMD y?P)˚ZK1QO+) ౴-g]0ثNWty31U DDh-O Rd @{Ŋ\ LL,Dސ)JY%KX%ZDֶؖvj-ct1!;2mi)9Ir_Ha nA;Q7V4&?$Ԇև 2 vr"_FpwaF%o_9}2ΰC<}~6 wMU).6V K꽫^]gE5Ѿ?^Z[lDSid|='@9@_HN=hލ\s`z;6ldƇwͥNSm*nեW*_*vJ+u.r}BAQRo W\tUl*J,mHUUu7R$#Wp/w\A:\kS2i 2uQH>AJ,{#WW\ThrMu`Ht%NIST}UmĹʠxMYep妓/a/*C0~pGcFB}2&lPW닪]AK_Ǿ/o}(F޼s%~&;[Imz^5C#8VɎ%bI_ ]+Q]O661A~v!8*by ݓ nFՊeQ55#O;mZKIދR5d:3mp34 1=oܓ!D=.8Gv]T;wP~Eױ[Ku@v,"*0;6a;9yUb,qpOz :5bQ*Gۼ * \3$pWLV6i$q;rˎm,#ӼϚx^薌;盧Կq~tO7>/_Wӏ8 {ln+ar&fnA΢9nWVpB*s-ܳʆPBnX:ji^+!j^#~ g@$W☓.KYwx߫E"%+KoOGc#\Nq n6݌&\vgFжu G$)( UgIdRw[rخ]MτXD p 2%X> BےlU:x]@ʎՙ@δ|~?ŒQDRSN,,&9Z4"i+-pa4G '4. -RnK̶x5v e ],r:܋uXc@&,kGwq!W#l7qQ$*;ݵwp}f 4+>h/#YTQ۾H1(ڳ +iDp`d½ 'Qo|ΰ'gý!#?M%p,e:RK< /=|NV]bˢIބ8>GVY+˙%PI}tD]^.-Ҧ-hltφH%9 铸_2ҝR%1l$dyKZ^ԕdhpX^Rh F }f<0>39 ꘭X80>J @8`2f]tNN`|nc((~+ zu+W0 :~]6!l3 --ZybNbP J` v̌T|8Lk#ڦWx0fHoac9A'ӕ63CrpCsn2EzXS~5|P֝ݷ'j/RF|~z=_>SR#06ȨW=Q<mĩ@۲ h4а/ppJ'˙I챨+q%:!@^k{7Z]]\]\\eY8k@/F ФsS6&)wf=<w+ ~$;@:~ͻixP פ,y]:eqz]xެumWIiKfiz2̬@ЀBP e0jj1B:&6rJ6^\#c+VE}~iGFOɣ(袊J20ߜ20ro jSPZu0+fQ!Lt,ϻ]~LJMRoO}\2vuaR'K\ 2==YKYjϵ7Sr/9J"SoW Tx'k]$]0 ,T—d%"4M!vCtsn :NM},oJ2ƭwDbsi+{&ܳ2T4Ä;Tȑ;b̂nD(Yaw*,S d{YpwxwM\nQҔfe8e]#wy3 ikxULKɪggEݳ#I%|lh*ΏG1j"*Z´$FmIY|p wӧigÝ~`M &g`4uX/#@qs?q:uqT.ð?Ģ" eVwe&m'VAKTӲn`dp n{Y+nwEw4݌,s`2wX0~G^B6n} ܁v;. L,}y\s3i&Tg&UT'%PjX]<@q-8Gos>&ZϹ.Gdp!aFZ͢:]Ei/M*V5LBv\ngʶƔH^8E`gQzd e]v ܄$. .B;պsj VK)螙 #CcVK"gRf|H;>7F X;fQ{L똥T&'Ey)J<>zv;@K,uˠ.bpN2Gh$U|Y>[# w6:Ch)-da2+ 0y$ڈCptRBH0Юueʚ$h Y}NV KJQ wݨI;}@.=BQ2֩ Q;9lEb&bV|Krq޳P'pyNa;#n}1k X${q}.Hc }+u:S|7aK:^ 8 82>4(3%fzs`tvrfV–uAαi (GC)uz%TA`5S~9-,4-RRƺ sr|B ds[aR[KDb?`qS !ށw`P,IU-.|sPav)QlC c2c6{M?&9lYXT!Õ1!$pg+xb"/ >l!juMFΗòFI:2-^Mh]d?_GZ>vL=깜Ն,r;[ wp:_ݣʫ 'QC pqG]\&}r]d uـG:9 ">AR[;7f]\tBYt#c)r/>_F6FZYE.}o%;::)^=n [X" &C],ovЁ OWpt#l<`bύB(KDCv)&ol]m',d5NQنsRjuF k"cG}?QLdO~}- Fa~m^ɤe8EB^m6)HeX[m df(^>QNK:"?`KqLb,Gu;w|tuQR.8z~$*|tWWOU8 w%faQJ-YV,1{@ìpa w3 s4VKÝm >"T -`@{D $>sRw8'; (^GN wNbeyG 2\cߖ+$ ˍNcHG 8Nwp79~O7>YI$A kΟ=cSx\)~yur==5TRǒaʢS')кHP WYYx/go;@E{q0e¯'} U9YKM-e,7p1 p+,pG`Npq픲CyLCn]&2v氥~φ{?v1:7@w!)Ss,~~ReR@ezJJ{$غ5/3"10hF #2r鼗u"'UG}qb2y4ܭJ((lEz{'DHgՏu)#KS8VgXn3jZ/H1H Pnq?^& |p`RNnV#:#ڄ7|~F_*-$pG5505r|,H$L_t`a[y ]e {A' ;Np7YFx'̎.㫭5פֿ`[+Vdd~F̨ >fQՎV\ߨWn8'm47[*HLV}fZ ):8xy֤}/g3͒+?z?ԭ6Ѽl S=Y2apqL(*W SI5d.)G--C՞ZCWY O*Ѯ(Ud:wFV1Z{!e$i );`J|ݫqx@t;"؎#'w}~;dw,-Ϊ!)*8iV3+S\AZ`%I+ƀi EN<Ͱ8}L}Yb#.NK :qP6و4q@H^ kcܜwoA+b'g-A} DbKd*oH%0$'nݼ'ySpB; %qB9DN3d`sy~4Q2OU㦁QKdU@#pBZ.bL;’~1U6A#ًK&ZUc`>Mх 6َ+P.,社/~`j}U'|`lܼE ;CÒ:a0@ ,|^rwwQqeLOOˀ;YX9X&N$L[pażIO@FٽhC1,3%&cƞlGJ׫mbld鞛ȪK/E(opDp^ji',eƵ1p7*cR:{Uif~~Zx7pBYT؞ #l:}<6Q$D$@5`n*kYLx4Cy<6ajNkE;CF~ ܭ9c)Kn@*hIqw#ā;i8S~;Hj/בwU:+:3:V<=p5Muˁ]TOsnqT+q= + Z JU懻FwK^}_w:Du\vQmx)Mz̗`_rߕ4$Н!f0ӊ!:{Qpwͬ/Uij+R|՛\Pd%fY 9ph$`H jjQp {Ⱥ5C3U/#dW@υiN;~+l%] bRd!<6+=I*(B)NJ$ aɓnߴUφ&')t8c^^܍kaRܝ9pMAcB n-a8.H;ݵ5慻It tV,V2 fˁ;) 6}x+W]v:zTY.`s=[x)hŕZ;d.zA/72ӕ13ld c%8^QhG8Gb)E:EGmtKgq0J@KDp/9w5GyYeɢ ^Y[2T8ހU`Oz|1+P qAL8鰸HoPS1Hׇ-y'm$b;BpYgMɽ2[o PܾζrҙƢdcf'R!sO-mGK(3f}u/ZGFB}yve 4 홴 nȩS0F7A5dBtqp'LqC1 =$mPEeNaH[aBm5q$|#wj"qyg}#_Nin[>M:|Zs&\ދInST  RzNuAL{NѼb.Yz#wI=5+#^DoeH,nC]8W1{Ul'nP.Oo'R.7;7~So[AxhV^\X7TW߾]OVM ˆbv'b A>&j%I L.l&: -~د/mCj3'[ 4`1 8I(R֤be wo0Ι)r5:حET3k![͆K(gᩢ(7?dd=JZr*r\ dXwK G }冉KzB]k7vj۸%MŽǠ\4Ӗg99t}K{-{1BDs;hĝKOBC7!BLTָjw㠎rʠAp s+ $RcbX9p;0ObƠT*,µ9ukm6E jD. _']3"B6> u`OCwwD2XE{A|ʙHQ py E'wpB{22DQ45q5p׿`;]l3ۙvsPpsBDMLZ.}yFQ *S?"JB © ښR\3 ;Gӱ呡/'{e.k_ڷ&&~8 ^6rr: [Y l7GgFlV5tz@68y<.*|poF 4J*$w&b@ D 4ƠbVK+ý0-q٣aqp3rTs8/n_vcxanfCed Ά}6j1p}sޥcpꙞb)QqEݑUhI2b4~QLP琊{tpզvB `lב}]{#Ԥ?N5c..Rs 5uVGR ia6+}w| =&Óҝ$oov~@vZbiȦz o};V(lހ6 1H8~}lqdzzB^{u }p~pnvVH6|Ů`;XS3N-lJƇLN7fvSPbo3<1pp*p&C? >\g:;)d:EY! sЎ )GN$5s7:(ΠRDbR.nzͮƿ쑾cb5#;K5j"4jjoh>R&{- ^2|baZ .-blŚ:tkGFw7޺v=FtӮ'P7xobes sUcDp?Y#{6_؎O#0$m\C6frrЁyTAŒw\>, 籭<{n"? % w.M~aicՅq٪Yg2%=-O}eӫ9cUh*4$Dw*Hk؎ lȉd dc}JF]weǭaB;%I.ʰIO!\ЅR#sD]+vqRh=sθGX }T3&lށjTMASmy;@UG| tXv.۝ ,L^Yz[wX{k=x34^ҍ3=zMd5lTm ˌܱ(e+J~3,\1RZ)8MYWFBd5Z. r}CviZ2>yw 2З!+cJa869@U3KY2Ywh$`r$A45"Y]DL_}.&e^Rv]_͡:Qԯ'`u&pZ^M=ÀzpjNHUeb9QY7.8Ph̓M#@)QbN@@kYYⴈ6 w/?dGkpKZKyɧ < "#؎gN>d-}&+]2/ Rxb\fg+E"i[ޫD h?~,Z~?F}>k܄ 8P wJiqȕSӰ֙8Dp螀z4(u4VGK/:GIɨ-S$25CX,0U.4}Ea>3VT[Y- P9$}ytc<9}AƶjIoR;R%plk]k5Uܓ mܕcQ_wr{IpVaVF%X&m{fW]ppߋ ܡILNUKty1`ږJb=2ܩ !1gpÚ.eI`]pF S(8h$z5 w<m$b7˪@e8)}1O.TWprIZϐ^,a1p ,0.R͟ t%_|5w& \-E,$*cx /jkh;S!؈[0˥޵$HUQ&핑&c*rgH |H rYG\w;`ګuJ^H|6 KڤtԎA l)t\єgAdA6u& 1.41D}a/{khpoj{晶%4fg1??I=Tpγ*[M|~V#p94"zy !tz)R*-"Q3fA =n p7>xRΗ ,6؄H|ss ~\w \5A$ #=G8K|*jh7_1(`<'\~Td].M wS :w3|rԺe$a;e DX =B2fi^tF/z6B\Į.Q>$M7i %Nӕe=Sp2q˔+PbsMy]@+zp]\gÝtww=%`8@qɮ؞ 4rI wf;𚐊fQ$[*'`gǓXi=wb qdbxdnyp吃G^ +]L0О=(5Ǹ[i=Uuߢt-r)PLT{sn zdzl=6vrB^B`~M2>rҬ=m:EF}lTN3lv6 IrW @(lj\݈ ɥׇ wB%Wp7KL1aFiezUr;ݾr )IhמI*J7Y1_ٙ#w= + ͱ%/wup+^.=rgvUC~׏6"rgfЯ9t=VP^l٩^f+3& &\Oٳ_m!Ƕ۝ww+RA6[TW]GYZy5\LL5Ƕ7V2mt8$n_Ǣ6f^|E3 ̣4B$Β~:htA1L}{ !W-pGGգٍaPvxg[k ԃ9ݦp9{=zscq}n.h0{hwTdlYgrآJ;ǤS!Ӟ&3 =pT9h4یf#*q @-+wIG3Lbo<.D?S_^7KxEУ<[Ly%H!NpWG=ˍS w=&yfngxY=($ql 7Pv aD3]bԍYUҼG^\Iw ]nR+agJVR%#UzGL.[;Y#zgin%B7g/_[r"ѹ8,nmsy,<.AȑPzPAk2@4ʋ5>—37/ z}jAt~?W$܏[Pk{6 }tZ  sDЎZ{C6kKhc3y|Zlk:ϝ=Rplsp^Q%!ï4-@FmpO6`2=O-·l`vd8 q,EWfex` upNTR6~A/K q3ܹ r\$J!:B8 ʳn8ʞu +SýITwUN2JLgW$cZ35Mr7T'ٮ<"y*P U3%F[~ŷ4Ofi 9 ĥwX<bv ޑf11|S+Yamk6*'%>;% ]w}tpaE'd04;2td/w ~UȂRn pը"Xo$ qsAœʲ[0 %[8<+:QOQGh!Mg|`l8eהG{ 2 {?E |lv7glٕx%9Κ %NU[qiT']=gG VH)F;Ct{eOmdY)pS],/)pG#ejO*I!ܱ/%z(#tRD!{U!d48{Mf8.#w%-rɲ5ܹXs]mpB|44{'A:DXj)jN- ܥذva)&j=lԍ&|Bqnٞ :w%DŽc4w5UܡQHFI\zgmw_dE#$TԉAuXqZΖtV,w>(Ɵv\ޘEçФA3IpL`#iMk6.28i^Զ':rI;-Es Jw8!/nֻ1gzz>G>0֎xufޏ^~&yOu €5߳&UF:+@2x{קelx]el e =`[? Evʹ+0~'!{Vpo6E^B?] puAҤq%Cm{ô \h%ޤ1\r:Ua8\ln-.I "D=/+hמs]r N7IpUΝ">Q7 l%NJipى~??n7Ƣ'LdE6hjC܈dc=Þ% .UimB\!p|%? <@*p:7ZGy;f ~hE>+p?<?MJJ$*ٔ:-IIȐҘ#Ja $ɪыXkێ0O7_vNpНqwy>@2* 1܇] ϸO3"G7vGKwb߭I2@[<Sp)mV:t#G_sE.R{n7SS wpwGQ+Pi҃,379Alp êitO,6T=z8nH U[].^R!j;Z.RyՅk׌j-$r7AN5a j~.=i>ώ㒇2^TO:pO=×\ZM͕gF66uת-)coq(rb%;hcUI =><CJS!<6AwPKo&x8LLlll܇K)nY4Q(iaߒ쬚{u>suMŒ6I1HN{ϕzaZ[XFXץvMXR>0HU@i תt# 7IwQ>b3U~#X+VMi0d;>:6A#(mےYE2 ,LqLƹ͑&'|y;TCv' ɇ/` ;dZt]ZD]+ήr> q=]d0,:Q.0̒u yW/\z.>BKnx(N.~U0SWS2nem s%B\>«IVD3D(gk=%/u52*Ee=[% t9&Β\r*֩6ut0"] F n8Pzؠ D| M6ii49VJf(ࡆNW3]C H""*]vesdR_:/ܫiz!#8Bξ`R (]"PCg}eU,.*z<6U5܁k-$|i ~UaEC#{ C<~u [,d㔲Rul7K] ;;{ ') n|~ت;KZD}aaHB@o- x[z k+Nv14*#p?Dh_T]̮-Ofu2y7K%8v܅R< $)e@tGs+*4W>Q x`9Qojg!`: Y>ʰw%M _iXK* Kj1ʢjw6O_8!A㡐{/3#:yE4r(r(gg.Se wsl)Dd`E <)gqpZYyU@ m) W?Y(jt$t6&n3W7w4W&Ç]OFGՆ{#(Vd_[LrB mXNm"9/vz4-dôAY9(<Cw3"ÒIbҫFypuŐc}pp6VJqC'L\GBɉvKX炻x+#Nr y7#ofYVA $a"Px Twppww $\p~H^\ژש ]mpOYiLle\t%C4%J,c;eJ5 {*1B; U` q$_s@u5̈ EPH"({riU ؞^21r ;W743)DW{!V!G6'!3SvaS s:UiYl8Jn+p7 }Np$;/fQ-rU; iă=-Lg6M$ LxyΝ2tS$^z7!YBcqAS{sMNMv8x]%&^0K N٭X4?߽ H9w=尽"u-0"U\kxG_7lMzwo*2lٕ컄BpC hB Xp|0 Rlٳ#wiR|HfnꯣiᎴ uqTmGS [~Cڕioؠ;،0=neڗǰRuJԉ{1{:upv8{w D0V`q[d ?pZ{p3wfر+poTWa$\TMq_ud\EEe>A N>7C)Hg8xf7$>>-7s(G~_"'^:Sڢ[b_-n>wZ{a!b%jwNd,?ܙ] XhS*{pf/z!"m w9Va(^<6=jyG'O(qqN}QtQ]d9sݽDE,wm7VQ=._E D80*RU'_/^r7'PJoRq#ppƖN#vpn>/Y+Wޔnwq'4~;{ˀ;c I_-؍8h:']-d+p{n d:hB>kX WJ,6Nv* ŧ!+p~2bniRP o_:mfyK鯖j+bKUU4*%*c?F~4vH 5XU?v]7}+T0n\,# >d WN+1jJ xթhz\{ƓIBX=a'Zz",i99k"jJ0'0CA K}ª\%dS"\6Vs6Gّl_mwJlVk9j\IǶEA]֌g&XLH*)ȃ\'^BJ5rd +φz Ө?{YND<ʋye~:ڵkxPȃV.^8m8|3_h_vʽaÇ=IURfzO~+} ?-N8NNS$rlE M$&Y-҄ۖ; Jo <ɒTA DX|ѝn*xz]I*rjO9%eyv'<)@;ܙ Nre.D<csa~b<0AL1#SʕbJ|$OxopwǩоOX}nr=x \^"xd=8Co2]Bwwz}SU:ƴ/l/L`kqm+Kwu_r ;;sKfp^ =Tpg[=U@=l 5gw^:?{pwqD'?Oo^{g$)r?-G[.FăH#a~ o t;pNB2Bbjj2R%X6 d;)`$uL(hǩ.&v0ꎲ[5.jܕ?E.rK,lD܃HDhgmatql9dT[69Q,JkAvye .,t8gxΉǨxг4dNKzl>yO}?63Ie:8I{R7ڇ>pW"kp8DwlV;{A:򊉥sy32;-Жp.`wE.g1EaS0jtd* 2=9pIƛl^ÒT)ⶱd&t:ڣue(4N}B,&ɠ[M L돕' 9ݎ@V Ԯfd qHc+A6p), #I!^tʜh_f\ދzaTGFf&ȪZuTzDu/s;76zXQ"-iJS,^dK+ޚG% ~ f@*Ν p1[; ^oFyЕ+FmiҟO0Ts_T~3W3?A-[;᝔a 0TrIs%E:ͻ,1@,J=ֳDƂ u}g!OS|tb ]mEVRR)#az0ú:.j dM\ i8}D)0%`njyp`9h?%mUMh+MpJcuQKVsXе;#5Pm#R3Еu;} H)UA]P΀`OV:AOLyOѹw\$pd(x_=EL >H:4M~ܐxf*l[ {*QT8OFI rjF+L1AH\GѽtvNk=}p{4aHKQ ^T|8qk,7Ae똃C=H|<6Y}>v#p7rpbpxrQ;nD+9M~x wܮJ>Aυ㭬a{ Dg*])Z;ORdl$P WbAt(Lr]DVf8+nr2}c{ kc̝j˜lK>nwFNt)$]PDpUozE>rcիhD4dU͛>U/皊e̔Ӂ%Fen.1EMU@#dpkG8}8iТ3.lDtMb:,ոS?.[=+p7jp*W$鵗FeЩa wa5ܡKv[o4;-h:érlw)^;\oJ2AZ@ Ȝ]Rl윈肋P~zs+789êq0jn΄{VDMh˱ҊzL0ՆE\dNz**rXbUL8Hl$sKL,vvgb/_p`>}[1A0{q!Ot ;l}=(w)Oz-yc+ }pu\3Nޢ-DAv(!` >i|x8>Mf&?fw#^siڢ1RW_AMMxF `7ܳ5|ss>Vɔ^n-:!ma0Ï O+e':q=ŵ/E-7=ΙVXl:VfC?z:^NM{?ի/Q Q__5"ڈ94mg}]B,A;Mr x?j0ݬ`ji [qtRiܳrV9ZN֣ k<o -1nĤE&c=- Mv(||*da#MÉÝv6G~?'߽,'|D!TCsNS6ؾ{k$U!A } %zWKy݌ }{hI:T}1ډfݨE>@PS짥AaoR!%22!loʸ &g< H35SU( aIx(*-&Ѻ " =XD]iTslÃn,|ڤ8e)siC4>x0U=^U=J0LMbjNo=ÝQ)=!̅:j!R38+᝝t01{_pATWQnb'p{h<8?!PSI]|zpWi!]"ޫV=]< !GiPIIϸ zLA;ރ/̞ꋟ.'3h././/ǟO NdOK3a~EWP;(l\@o [ ]v%a>9*jZU/  W+xDhI493*-fªlmٻB:ĄNWB4=^f e'Wpzp$@^7+{ׇýv jpU)ʤ塑\O6wBsEMp6+?/ (R f)o21vnK14` Dkbv @I{r$<+uQ5jTd%>*r,,f0D1,͖ VVpWw( ̈q:;ޥ`p] t"wE4[oI贾{W, ܹP)/qpGFpNC2Td2~~ N,lOؙ^XPQ{ю<<2dE3!ړes'`:Gt]G".8-C}V[m2ƅ1魝ڔ'ܛyU+v@ 9bt1Kt43a"d«ccOFz޽V>?pѾf7aC4byjw[=s 8 .M˖pp!uX tkܯJν\8-6I{υN#QL;`?iRbwQHym>K!ˁVpu@Ez8 {]'u 0- l:lxTI֮pܜwOÝFnҌrd(rtIZ_RIw< J3-ہ2RNDG2^b9 z9GCo+>x~vjs_<)ć?ǤFUL|p^2frrv"@ %l[fn$)\,\zPz {fW(ov̲ѨDbfIbipϗC3A4 nXLP] JY)ϖBwe6oACp]9m1ÝcݍWċ%mZ&cP>gmHŞY6=]zc)Pp UGe@xv9{cK%}Ƌ72hvW`~l'Dy ]+towQ5u|n.MsAB6FVǛ~Pidb{EJڏfٻp~'ԕfp+v?/$Jx8Y?۸9pDqA7w O:?z,>22۷Hj46uƻ2 @GkW(U"-aZXÂ[w@pFkRDҪs6~دPExEu){#Т:'HbFɥO.duu9D7b,xFڎ!IbH6B`&ːvB>Y)Jp8{ƊP< ;Z Cm\,a1Ku2d.2mZ2@=Jeu3d$qDZ,-ZVh qXƃqݢkYupc=3%s "$_'"r֛Ch+UaWEڵG l zЈ*.:䢀M8G19C: wQͬl|ޯ3\QDp0wkIp;`}}NANGFw/=A#k52Cqdn]#g+$g OB]!2Cp%ρ 5;{(A4#pINmej%d7. ܿ$dcd_1L % C3ͤ+,6s2D >ӈ?)mmm5_ό#; X}=yP @ksnaggh*8'PrͥZ0]Vװ7\~9Srwݽܓ_ԫ p%8 ?@:&<n qw2=Xu4-G"M hvk,YʸQhpsm0\ws] TFp/}p܇@`O kl6ݤ3puդo] $+ϰ7G+\*;菉8B1";>JZFV] w'48l<\dPΆP\|)Xg R ީXŔ ''˭G@rP3M4Z"h;5";E)W6<S ?wJ1Aj P07ᾸX GO,Ɛ>Bh6#̳?quQBx_:ՑaF ^=q{PɈpO*zپ]/g`ƀ8DYR<;-TsZq4No~vI"wp)5mj36Zůa͂_FXOpaMf_N !wjÄX`;ྠO2C||4 /wjZLH8k0ĺ;FC$]|!ܝ/&O{"iJ'S M5xMr~uP4O,%:Kd$7Iw|Owmg۔̥ؿa*!0È~c>=;5ޛc΍N q9qԑȑjQΑb`p;\\*\N-2AO?{ˇ˽n\+A(pOlE7vkUX)oH1+T06ԅxR9ꪐ#R ꆪ+UK"Ͳ3 w˱E{hMq ؙ|q~:XP.Fe~6aMs}?ae` qD e_jd w(/=G7~7[ M x[nF;(9t&`};_aC[DUnuAI>.wg,vTL\8 U_Z^^}?lpx=9s&~opz~qypwk'nL>z;nmT#uivpwY߉nBZݪsV5;H2@x|${B1 K1Cʼn gKƣHq-4+iқc98|j%&fšC9H> җ{eDBpA]ӭhpcysMg ~"GrU :̴)7U뺔xdJ.QcoU%⣙ ?z}_o[ r }9.(z'2NKX a.kuũ-b\ب #b`ri nߩ6yhi;i>ED^_i5n=JRٳ6y8F''?h F+0 5?^ŭ=/dpWLe&tk&J&i"DI>ruV7oG p/typt_ݟ۾~un۵@~ y1H^$:"JTuxg7S<KC[fk׻o-B(X"%vX˥9,ÐS~4 BYꕓKC׎--}aWӲ;RKk *ӥa3`TUsBUYpD(G. 6Zk?U6N 44O >AkgML>A꪿ 6Vğ^_P q X]\PܗwН~/·{ pԺxi%5 "[lZ6M7;ۋ~~[in&pw;J7-vdG 節$jZ>V-SO/_TaՀp g`_$\g`}>) X<]>jټ ԃdfhVO1~&QJ\.pgasi*{W@0Ho=ŠXctp9~jڿ w eN#,dTt)aQtaFQѧ.~ /{%-eg֪a_۟>Lmm+N>,_6xr$p%!a>q_ }\F[ /bܥ^`f>v/.b1hGz,I#ih J4Fge*9I'O^Nt'_ Zpk n&oCQnmҖiI*1Y[}T6Bw<½]tfюRjb__,~/k_;dz]~5Ywn9  iOD;9|7Q,ѩ udݹp?uXu}ݎnFhmmteNyjmFg>a1\nx}lz;_|pwYN<wWy^Tw0ssg.tg8Sy\.W}iruoke,Dh/w9Kv^ <\AA:𾗺)'^ǣ( mLrY?O\9E ujCx^Aw]w{$8 "Cۨ`hϣ=h{Bwjn[VzmB8=2Iބ{\i9U“>Uc.m UxRa; +%1}g>^rԍ2UXn?uQ}8~fldwdVL{Ie\84ww{GfiU[w0~. /1mM#Z<$Uமj"vwR=+.zviB!b⮀*<j%¬;W_ksӪ7Z*䶟Ds7^pO߸{\&8!f3ma#KK%`eDtV>{ڇ||i^z& ׅuKis\oLk9&w#lpC<" A:adATjtF;bU2,!ثxO4*5/3vs w'})U>J9N~[Q~6QjƟlTm TRp/t^oq j`ly)XW24@‡;]6#b[6s[ӬT.#ܕ>.%}&1/1.+KˇO?dIޕ&9I v.on=lfp ֧EiH%1;.{ ,p7+ /Lw"/5{85ݦ*tLJqfupnʽΆol//k(P40nz9CA7uF,^{yRxĸ ߁ Pp3nZ㡋bOI6U'5xk5PbòxO U; rLӽu狧\OPլrߣ1āI4z|{HVxghUERPj/,U<:?A+1.5$‘2F2^=_HvLHM[Y"{| 54*We-F]1i1PX0#Ks0 Q=AWsdFw|Si"d3|^X,!IOptya*a1Sd7=姟O|+{L_e=\N^N">[yKFwM+խ?ZXA*)~5}QR1}t]f=Mq;l'pwO ZN f5]F{^Ї1>܁-$*SCLcWl.$`( |Ks 툱d3JX0ݼ,~pi<}ĺrmսkq;OpoEWԱ8fS@̫ ᮩ:Rj=a: bXpྔ"-{+KǏyJ5kjxV: m3v˕ caspUxZ)\/̈5"܃Aw8mKJu=v݇(Eq;<1f VkH6^|JE. yϙ#Z6DCCa 5X0#2h?7+/ʲQRE;>ŕJppY=:K}ӥ#w[.jXpk42)`m&9 {x'cC(Rp%%t"\c1EapGNivPIpWGFr7~d1ڋ(c٭?NNOA&_ wU;؂jJysutt^~WW?=lU =~=7@$Ť + wA`(T'ߟK.;eBCT3ÝAui1q@n)@& eqC M F{F{9}vk}{W^x<=EJOWԨlp%>ެwn|Up '6džv/\,p?}.u lm"96T>7Vp<8I%jUVt!TnZJVf<i"?(`SCpW2-K%#pkT@>w.ilv}ZNt_w@gC Ѡa"J} LS|~+>xJ@8a4p]ྺᎏTQGc;8&gi.kG -?VK$u :Ӌ׮+n|W/O1qѣhphYG{B;g\aiT] YH|w,{=V͹|ĽG>~8/A.'.܎VNc&i&ҷa]Q;m{5J[gфͩY ,ZDwfp;q܅;e7%}o#.dDa?}"+/ [e^ZIF,ܩ+ ]%)P^IALcQz&&Ǹ& M7j6>yɹSt=Q%%fQ-i$Buײ$}N~W8^T4c;[WoK]yJ"6jlpiNlp:CSmTkhcD/g[[B(hʅ΋g7nMyp󗷿ƫW/Տr{?7}?,whR!k4$]G8N)II`jt*rn]}07=j>zԔ"posug+pBE at(d=ET9E7΋.}J!)1eGqp;ɕW=xs`|MP!_A"tBh j?-oj ,M\u䒢 .Dk>GGMvSҶ`i{Edo*oaw±*c 6$cF<:d;=e'ŧ2#+OG|A%6_oۯ~M;b"9u!hǥC{fn&װ/ g!ը4Jӧ2̂ҡoh}\z6_-m8O< UjSc8Db 8e 􄠗{,np] xo43w{]}؈U:RmIG]ZǛh1M6Ŵ6$WRM0{~w'Bؽ'_@L rl*Hcu6P m 7N]TEH+-.(tS|*;'hpgPT^h^DE d*G=;~ ڣ;Wƿw{\&@@Გ,/}U.Y.<I'Hu]$5z'''8yjVP'dSY[i.-w㞠0B0rwݱ<1HӸݟ{:i#x11-wmH1DRR-} 5}$42p7@BXdUdōڂi B&OçӛKf6pd^a>8sU`&Gv-T,$ᄻT.6MkhB/](,qJpub%)pWzp] C@]Bu!39Bx*y9 "#YID4(mF9C!n{RLgYG;o Cr>YҘ9HUؾ]J_o؃m&ke hZ͂΢;V'gnnn'8NZbAf:TQyR)=1d~]scg7R а4C#/f(|t#c-@ hu˙%wWR bpB: N /]K'e.< wuD} Z~V:vǛ(3s/`qc*ˑ vXO?,wpn88A*{L~Ԡd\Mũ0"fSL.~3]4^mX$_g^P̙=*y ^0X@i6pOdw{"w[ C'lnz>Br8-%5|93S/Wdb皿ӠwjZqIPsאZ^C0U9r?~r?|r+0@fq΂0y<"ܥU#03~w jb.qd R7]8(h|)N 3L_P ~2u9wuaYDE3-!&p+}gJ|n]{?%op__' x=smU2wh@? bi}4I|V'PZQណ1^K0xt~xo]hS'ߞV"K::=dcjCΫ[N5־3pkS&0=56Hm^Tx)PbK]qg7&ݡpwyҜ ^0A.w%sQx|;f^<%V.MO  r-O=Js(uJ7yp>.Ct.",2[Dt?,{u4)"^BUBWx?@1UHcjDB@Dp>]I-Sw 'DaٺE.boGeK@j LSߗAߝpG?Z=tp7uz;xxlmA6>٤xg!Rv+G,E ^=ܛru2`_D#d:v!U (JXR*^N{VR-c>lUЮu,i/o^ӭ[!<:;hYk͓sd{Νk_'noRU z>^y6ffol,T蘆?Wf*}qAlnaKm7 [/ˁ (S)̻ko(cw姧X^>v~>;.;GmEerr*aL3`qQ򾽄FXI՛dr!UV\ha{SH?xn"uS 1UB??+Ҽ Ƨ=Dz'͐G6LSSC{jU 4nAu9$%EZHC~*9dEA "fl0 m WLkdQlLo,WixSEyn/mWh>ڭ #-]K??zBmfEqmY (cnV\]$ 0%,{ o`?y5eX|Vd4 ;8y8IuF0QX_SkNsw?e AT/ p [*8XX#3x06w>"a &@zZ4-IP^|~r2!PўmjxԚקl^|5ulG)841Jnz*QFU͒;S_(ۿzp# wð%{JsEoP*ew/ɓKYy WhwU\KT!2A=aD)xP_lHLTb斛j( *y%+E>P~oraS*n)1Bbn^΂VE܉G4 t,=n6)j>(ō 6h~ w+$"wR YK:IDj*n2[O%pXo;$-;K$9t:묷ý&!=- N U5>&hM.[.|sQQ8JH$)wφp/Nnukyyg(A^pa wwВ [X`5)AIYʏڣ`۸xTf7s` R(dHu6#pW>;/f(ܡsX.>ހ0ܞ75(5lﯢQL.b_4FiwToa]. {\y5UDjLi%@ȯ`E(JCbDc!v^\ )ڈQnHiK]Y\RF@95 yCǑ'G4<KU9+IZLw73Bn8˒ 1(kJra)8 wͰ*6#prHYc!=2i&džq1gR q=%ph}IL2dT ǩ&_ky<\R~Mf G2>-a YE]4 Vl,0Q:m܆=EQ!F;I Ob^#V)ٵ-~lmYXk Ckm J1J]wj {Fp?' ^]Mܿdj{"Ӏ$+a $k K)->co.e89@/6O/X_}4H MѰ< W8D C= MlSZܨJ"uNl9ceYhNRiˆAe}O[& QѸAuiUQ c=/.a܌ч 򊣄^ux_PQ(; )XiP4[Lg!A]^T.|;@m.C)pFpg]wF}S5Ikݚ1[.Mm`v7n`Ѩ'pPN;U=HZ aI.% XA%FV/<--#G@/qy,U[p)+z\W&;prfK{H?Gj\IH;CAb_;6w#m } uAYadܑ*%z. u/vy#\{;8=c2 `-pUO~fCH)wHJWxg/:*OͪD3CpoR#`'fS4ww*ރ">1xf4ȆAP,ܾ~]pn:n O]"O>Z>la\{'S`b}3cp$+t5 pvgVpK)_-L<ބci [MGA C{<Udj[U~,zjb(X>ǻh*Eʀs0HN h YW5v*U;j&ծM2OK!Ml"DzB|ѣ9O[e$m"6ߙ'7n߾}֭()Q#׻ޝ~0yKnsԾ_>f~# Y}{:B'zٰtrDEr =vkT if6ߩ:%MFwg=7nxRf=JN9;D=4*gݐf'7&?IiHpn19p3t5)ȹ3CՍapG; r v AaUt:5~vHw.ԑ|XHp'w˙>A$ŏD㕠F{{C4"vb-PtfbL=9JEߨжEwdnNTV0#9llDO](&.Kj 4RA],SQBH7u[}lhu %&\x\ohC ~GV!c* P*VTk;Eq:.y$DbJ[ Q^NyiLPQ/&j)ឮ [7BvY4Uc?M}$G2*dpO-Q_[$$)J&wZR_f5ոjܴYև;l wܛ8dE VdI rrzʰ;]j>!{trb h̜=|cScӷ]>ljrwHpϞ5;}~u9?e8zΜ{^.;+^jNL6eY8mXwL1E|z*^aJ P.5]_9KZ/twu]^/WVGJ#p׹IOtЂy~woYG. ?ݑnLe7 q*Bw/.w!K;x+ ʹsUcCU&ᰗ{Rp w'F]#0!n"9?lpO]ŪTNNMz\^;!E/%MpPyhR@|s_25p;/nܸבzNޚ# ! ? ߛ|I_^k 5 t}pO'wbIܫԋgw\_ZG˃Vt~ {ܙ.uc ˗~ ͑ uR6TggQbSzmu!3*krZ32qV7 8 p:H#6FVQo.\dv۵B/~7>DYhnJOݗ{~,t/n<ظ\(golrJW[] %zm#dZ'QU*RHß&G,~ Y㼝犢1ta]Td.itL ?{s7P74y. AT=#=2d|A| '>j^L4&:n%jFD†m["û'E$J{0ёy:\!Ki ILb&jLкMt߇'/#DJj2kJ+i\i2X{VF,=pK> H#Z?mfb$xmM+XhF=seOK r~X$Yw:ztײ3d+)>Dl^-Q)G.kMT}GդBj0iᏗ2DX'84t5zY{:,,C}I^UOȠtJ":׎l0r3f9jհ>],Uυ&}X_"ģBuLMgGp"jh#hL.hT "?ALVk:j]SÉzّݰ,9W ^~]04,N^=yO-&qѰZ/LwW66vv_s@hpwO_ȥ5(5(lφxRdcTj:HxXoӐi= 4YLC)pl{p%qee65Žq}Qa -{|V6߉VFsl}'|@-qσ#z%pww qwq 0 yGu֬gd`RʲP׸zb<#oֵAgt*v½M':.PE-!䔹}.C~8z͔8'gh#8Auk h 0rfzqUڰK5sr'KKK ׻MMF;$ sҨ$e-%3q@tf"~J3[1t: ˗&G?G99Sbc}t 5zpuFFR-|ҨtVd-'𙈁S9-cZV+tuu T'_zOg#w)fc~fGtWUH :*ӨxiR9Aeo%jl.Սզ,0f'=9șN'ܭt\ 6էJr2:ABѨƢmK;U3}T &V3p5̗o/Ѵd?mܝȺ8 䯇,OXhRi&n ( ̦>]dpobOKv$ET'W"e{95ypfX>djP=*:yͶfMρ;( ;ܕ[l[^ `B%yδ+`Xv1N|_>zp"2K7'< vPDkuecE)jfV%{7vQL%7j 4.2Di^jw.xuWZ$pӉAǃ fGn6j/.yCuӢA+P!Kƽ~͢1(^DE{|Vg?E)?^Hq;9qFTMO.u;ʌ e38iڔq̪ CMc ,E܂<2EN{6) p=B*qJKb\% E X)5޸"v G3L-şlw^6hJD[0*^n 3xӔ?ug7h+G܊/?JGyχ4 ;,[vV;!=?~e:%jU%Q~o;e?lف[=J[wR͍}QkWdD`!(AE͙ܫ^\v햍ٕ6]\Nqtزj-ȈU92Y.Ȥkt h^ l\ikB}(, źwa{&έ#=@&u4Dzа2Oo p8M [٩^o=c^z6bv %6ZɽwB{ l_oNOG# #;{ ܕnxk'<2`u/Jc T2H$kS>uU(HU|Op15?1@FXTQ3Bf9S/2, Q㓍度0K`•ܹscUő ȸw.Z WgIV=[hf Irr=I#D5 ҽ=.(Z 1QMyhCW(j"G|ʳ_J2hzNՠp9V٭"qfGY!;o-n`)5Mzͮ.~*>(@fy~ʓl-aMꒄX.= ֧w3T;O.$pf)֋AZ\R$T&fh0[$Axv]qB\$lz{r9:)&QQ;84U" GHI7Ga'T f*:1r `1EHTЧ9MIC:"ݑoV5˴doZ;9m(x!YV3t,ARǂz p4Q֩?Aq4tw52*ޕm`[% /0>!%BwD?#q'On΄u ppw.%/.jn /{d1jc!zPjzI|֏PwhP* hڄ~?6RٗrɩpOu-t6 b ۸^׳xRM!W%7,׋pJ_JodL5Zﰛ/#U+:PIR\kmPxQ0ڡv{<燻A״ߗ؎k yK{}ʹ_GX0 E'I123' tW= J.kn1;& 0Pp!)unض }õӘ=]ۃ%Q9xmbw}htawꛫuR{?È֬U_ܾl}ZmZOѭ.xEpR/<{4Ά7>88MvS?1ɡLX+! )^zT=\]DOmUUҏ!3cu#p9ש6!6eU (ݡ A֭j8xO:בvQ`5V9喒hpZ4T` !HAO.I}FlhS&qGZKћ7.ޖb6$25h,,2EUD;Ι +fMEM8p#!pUA6g60B,5LTOJuý׸SbL>Ï] Ľ(/r ^e72fJOw;v 4YMS0e$# dAQtU~j-By'MWBnib[%Ƚ6L J`EwZѣI$-acu9O :yܝ[Ꮇ+ӟ ;WYyL by&1fY">.ww6\ YS* yS2+%L@T2 VJz wD=of+< 1U]qE2?7Z0g{np +h4㳫k7yk4pw WrNp&ZJ[+6nUpτ]QS]W@GѡzM@)UCՙnT%ޕtnR?bzn0Yk~^das5ez:e6\?#w,`}za {S2ww1l\2 x.o!IW'(UVa?\|?]T8뀇q5C"[ysN?\@\:eʃT<dZ/:-a$2R,W]F("vp vdQZ)6M7fC`*>8(5Wj b pO)6Ev` Xv>3&1bYt{Z]>w|VLF"wϹ C~7ܩu3M[\Rl4i`|0=EVbrZ"_,N#i…Z&6Аl] 4 A^;0M=o%Űe0llO4G!L| <9Bg},u%*F(VY>YDi<[׷_^vq[D^Aݐn4[y/-lw$7r wb82܇{;ǀ{pBn&9UM wRA50]UDwD'V4bwɉW\nUIpnȍ[Bu O cY&,3T3ELHݹtǢ)0wEָcN.' g]z|'#CtY&-f7DZP]hi +ta~-~x mq)^gDXBVPeQvT^M74ݥhb%!{{^ѵȻLJ$tߩ /SDQL3 4J.A}d~-7ASF^ ~V$SgϷrڱ}|Аݢ&_.ЪHVP ۫o߶oLJՏvYG@.5M:Swy`ì(um cR-6~zrҍLJǦ{*cMhZΝey8et5K JQvƤYGeHN+mZcE21]tc ƒpWOwV1{IpN]}2w]s2*(^XcL c &w]B7ؚ/pۚ ʹv7]~3lFߙ8"\2;h6 fewhZ,>M.3<+a4t&} /Y wpmW pf;g/vym5q =޳"*P;P;P 9;*OpckGufhJxq M憻8 RM6\(9S5a[8=)]up~14XB".Y4]XRoFPi`S#1D{܁w>zȻZmwQ0prSi6l(D6=h0h>J\P(D3\rdprD #I@,9;"FY*4Jvq٬wOf5܋,w|(c0uK~>l4j6Ac;VC- pW$Tb5]=9lƼ^c8Z[,PoSϤLIuA;r wx]% 5"*57וLМf8[~\)pǐY|x >24?Z=MF)ENk=ܥt~O!apwܝptuX:!؛Q}:< w&F4pѡJs] f|˕CP۽9|bWB,޽8u`2 =mu; ܋كl"q w )Ol 6# NlWp0q0p[[C6nDMeq起.]޴AV9 ;ܣ. sei*]+4 3 9CyKISn3Ѕp{lpm!"5U .gܿpQ("ߩB5'NЙ _&C\sEjSxfX8&w8q>o~(p n2+[-AGNY:esVFF^;2{#=ɤS2: jʄZ[Cwt^Un{Ɗ=j_ƚu4[z%Jt_~wݥ^}[ȼ:<,Z+_(z=m;;54r@wfJ}hpQ9ʾ Js5흎Qލ;իagUVjo_n%09hyn6>sD+`}|JWnLO`ӽרaU=#Ojb>܍24!JiʣgT20$[xn(;(@kbJfwnx+zPOnr°4kIl5V<5X'y;I=ÊXnVp_g;KRy%6h>q.Iu:0<2Q] 3 ԯ`J w8!ω!֢/^#sK7>%1¯ rnX@ ;:.\Qg{`cQ`߾3~pip//nO}~J% ȹ.Qb`{9|>,Eo{ 4Acp@[}GG?f)X]·wKVL7O9L"fJRW\,py| e*1U r'J4lq5gZ.Lp^(} F-k6M*%cBK<>IJj&BR1a c|IS8Up¶6]=C<Ȩ>HqŭCX%dp@>Ҥ%S%dO!Tɠ_4X@  q`  eS,$?#Dݓu+Ptyc$J0ouHX=Э]^l,]jVE{\uR*"wWtgY DYx~'vIΐjXioUr۶ÇR3m׶㭫W ""~LkZT* >e֔ hTI3YYj_/_`J|aC&5a\y6WGc3ZqYR`B}13X]CaQu^tDTw|YRK$Lܭr*Y''(XZ?^4 E*.5*3e0#'pZ9 ȌP"ť]ב''(*4eꡃ. w503fWy8`|i۽ Cdm3NbA{4NUhYsw{߸ XqKd)Fpw6<.lʶ'+[g#7n{M gn9Rwib4ܭdlط p#ˣf7/6 :`z4 I,xl6 :`>w8G;Ƶ^M`iKx CX䞩ow;<d>z܎ۍ4Ѧ%AK8e6 w d6vQܥrzVKe"e/hNs \F@hޠ))%rOF.|;Q4r "<V*pX;{lw+ku9f=w܇>bv6C\p[=Qy8':ʷ^`Y.O22t̜c1^Xý2M`% -Q oTP)爂pӲYA98㚢,}&Ii*dn9j?m]estuDC&ta3Mw',mAk'ߛD (Y /E5aƒ>&;eg֭dMUO'xPzgݨS@> wka5}ǖEx呴âf#&(wʹN[#Np`%;j&Đw=#^bpYݓZ P>?E #D|pfsĎ;!xjEn} w,UuZ|ʠ{0~#1jhdf..-}M&5pQ̬ Bx!d g}$L.:e+ReD H%DÁFpJ]g|<~2ƸE! ̲2B<Ge tA4,6@lW/( M iYI6="l=e@++ۇ"Kē =&P_/Vpkyo5 "Թ߃8l$8ЍW 2U:X2莏O/QM)NVŃUnP:*W|5*-cp$I"AӤTSW0ZDY Hö(٘IS?*d0t9w ] 0v6]3 v(YkY23$gZ0-kGY]Hv?{ZT Lp+bĜ#TD23jyK8<~. {lSB24(=I=lFmәV7_b\=wl$Vhd4ǀ;(= Z}2y?%Z9tl}ncΕ*]PK.I9L*|p_kwr, GU6dmt%iCP78ftxŋZ?$*w wҬEC5q%^6" Q_ ܩw<,ɉ{obWY2QR ':C] U&&p=|d똴?/Z?ƒe3hbjH|֬pg9j}R|G*LaO7M E;V^-wpw=[ >eO ppGnе^BA&U1O&79X |t{Gō6 ئ  ;{:kx&C*,e.9{Ak]{ş llF=\gO("ڝ'S,C!TgHp?f`/sr19#s (&ZMhvo,3 w cNN<]WP!T\|1(k>{:[Dbwn I\fF!]&73dEG:+N0ͅ[*n ^"G qw v93T؀Mt2Li]V&T=$ti}"X@; UVlrѡ0ziݔK6ٕQeI~ZDS<ۭD([#e;YrÔ{ɒZ9Fnz}52<ƞZ^mtCHJͦŠ v@l;s;.R?O$KmΔ`\+O?Q #E|4W䡟8喃@ ("wy<mp %OojB]?´ {9ӝo^}םۃ Bfg9Bw<6\ZZ" >&+YjkJܦX=#pgpZ-8.$33eI b( ~@^wpT@.g}z"wL9ыS~ҥ9֥eB:l-pWVK1ۡNv0t(ww|nMŖ =+&0%puG%yܘ(*itXbAܣG_6779*Lb ''҉Gf,så^[^M,xlSOǩʒ5r5V}v[KY:(˙C|LR  /^59 pB;a}|K{LPue ( aEJ&\*3=z0^gسS-վ1y7X ;D>:x'߆L;%`ԩ-c>=+"Kɕ 8Cݳ/.8W&xFn& \@OsYluhemcT{cc oUv*&!> W>͕% pEྶz;;tJ.2 b NwE⃢HQjYVUȽwF%tJ&\Zy˗L̬3C1)c8F(P}~ND2uT`|_ h&VN9= YlG<ĚCJckNkKBD(g!iO;<F|6YDpGVue1 {VDFSM3sCP$2)ʶ'B@yIWO=VE4`]?}& +Ҹ=nkص dy|`)~?!hOETk#_ _ nSUT,t#? 1+"tЏ̂H#k%+yW[&DTÇ{da1x:'ŎpE.z]gx\1T*ZxYCErb}IaC҂C}j85Sw>pIv߻8(\ܩy5UQ{߻}!@ 6MLhhMBhj/t}J\y*걦|R 66%4n}OϞ=#pk_@= H(̿B=tH`d$w5 CT(Ȑ9=sj]`P9p *MjRt)>iun#XB?¦&.NpW{3H*B6)5|8B˗$*9ML|u;l1:ܗY]- W5ͲJ'$6 )Lߏ qd̤j .ttGD^q.Wc4%]d3( P]h_}R.#>q*\ut>?lݝnVM,*6Ja1`1 0bčaIqRn at ҥk̙+j)-%NZH$E~;w;zgλwe_#\u{RJ :\ bQ$%1*gNE.N`Ir@BV~xݥ*W, u <Ԣ4)IjǶH?'Z˿Op!=PZ0-#ND9+W3KH[OG%Yuߣp~9믋_C͝¸\$GJ$ M5+-5\L_H e{'cޕU1:sgdߋQ2Y=*rjZ葪{b%8:`F4/k_܉Gbpg\ UJhe޲>ZOܳWhUĩ7,=WLEw"L=O#B@w1ޮpQM VpE0 6;?g%ܭXgG؃G2J)8:mI!D>uEYWE6x4]/0e@_7'n?3J?槶z<+IeМ[4[꒒R}0v*pv_{Ft|=>Zch1LE˜儕GӠVqFhqZF}HwfAVZ Cr jbowk5=h^G1K43;W [˯ܲܨRE&]@wp_V+3"'pG^w~ {==1ܳ w/aC 1ׂW(vɤ>܍$v$Q?+ֵ.N4k?*T?\P- ڡ6O|Cvgʴ OעP0x Co9aq;1vS*Dg<.FQtK-e,Sh@` L&7+Rwkx`iz!xw+f >{ ?^܍'Fpϩ|Y!Ⱥ$ Z@Z wu@`}qXJ_ъs};v2Vyg6$iEhqeo > G[n ͙C.Ҷ͉'}L ]"gg}$L[ K5pltj;*V5tO!#P[KR:OL;}>㛴)amνj߳hwPrʮIoz)rh\ce_D%rTn;{*.7k6Eǟ?;_# Fl7i,fe_֘tqpǘ3lw=kU?֔䧘[}1Fkc6 ESԼ3hOt0m8|&һ{.'PևʼJ"`4m+oUި^ݎw\А$/{7R[XC4.Q w4?λa)Y]Ebc,TϾ]LθΖǢ] ŦsA DA؋Cwğ!%bl#;#6^.Z=i&ef厩rn@?J}<@k^; wci^N\^;y*֬)=!^K{c Ibrb^T-lk~hh*VTAT޶Rۼ,12C'=3~m :ѤC *> pe'kL?(ķi/!܂ p}Hq^2}W_G4yt2]#u(;@k^ȿQ(5i>)0ՊBd&m O~ϗހΓ p Odѻo 4"vUv&`ό|LCU ɹ'* Mk kad@Z'AN,"p9c M^;> )oJgUgx ypEJ,5DPiΜn-y[+_#pw?eG7 :-V~WC\-.á, 22g%IlG 5σ`?DŽGtT&@l>YiҶ; n=!߇ToY|v'\_"_]o&'b8tdy R9sN_ʶ6s` po?BDT3ܝw.]"&(Y]4VnoI&-)Qn Qzԕe:Czu]~yCϏdtIL*ϟ3t*B]Z '=2-2z@w^`Hk$]RUw7Unb- .u)Sk"]G_#Dl' křw| Gʡ܃{UuX-pWUKd*AAq1:p_uQ pTrXs R_TMFY4a=8s_!H<`}տ>jdvGP-yRx/w@79H4ԖTǸ,`yr8RdgX'x z>c'𼐅4+"n7p@~.Bat.r ]w {$I3WE92?חbϰQLEfB9-L]9 j2)SCpMͩ,=NؕM~l8%]}Mp wzīF܅i9*bc pU`n_p+5B{̕mѰ}LY%M0L%R?]tWSB6db|Բ+::W rL^I(!3p7 Vw^fuAZ>Jb$\*^pG<#>: c5x(c*,Dt5ҦMw`ߊ+ h-V S+@t%HU;)uwDg9;2^c.[ H:^]g? vJڶЬ!%cn$vo6kӡ$O7;Bn O9vy@>*7t zTOz.c3i@lګpǯLy.ܹtCZ2EѴ{wUɟm½Q`R -ø[rWJ(E:#/[l z2TfCq34FIJTq!yx:2I.WpYj}n߳=UpfYn]|RM$\9; wW :JQwG5ݨ eah ץehL3|% @gL2Pq)%HIR&)IXw<*25|MwzNY*ۋ{osTQȝUu88v*>ڎWkخT.&up ;rY"IT|3q-+vz"#V)ܝ67=3jLH ۓQ^C?yZ҉~VY kPJ+ .r8]}%&[φ;-"w}?nš뷳G2pgGa &܍hKr-72W\VRםDgG&t)!z3^R/,5f0vȝ_:r:uj4]\{?dyq+ oaz2ui,p0=:5]V^mc5{ڰDeU~uH9)Z7vSkk (9wGYCǗt>M=iPaBmF!\/WMM+rncNӬtV짫!g5Q_SH F\lDJ9)%PvgN(6c &z?S%V<R܎We4[Ɂ]?J0s,؍k:) Θ}ZFYGFPTTIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/hartwell-insurance/hartwell-columns.png000066400000000000000000002556721507671574500316140ustar00rootroot00000000000000PNG  IHDRg pHYs  ~ IDATx|d-NIfYr6؀lLb0t{{/ !@ Z5-7^Ⱦ۾3s7{_ Uц )(R)TLq{>U/EknwnD=JRݟ*ޔRϥk-kn :CmފJydOCn]X1C0EǜHhs7yKחcugkK~hθGT?jԔ U<93(8O:y(ңDgfڦ7cP}dBM1z<~%|%HcX DZT?KFC^j6FZc݃hӥXS+ޜu< TUEm)9MOǀk͖&w,fI1x]XݓP]v2+UhTcwx乓1~kls2VҶʂF;3MԬXs"dMXF5ta*Ck1pZjv^C}UM"E=d^k;j JthTsVMqO,4fx=b*܉Ua*a+"QMc;~ߥy(~i~<#/E|[ f6!q" q{ɪ1 /8A!\WٯO'2ZK >r_oTx_O5zQ>b3A_FQEhe 4*g Չ@%M)T ZBD" AxRNkΝ>E7Ad ֍]XqNxLFք2(p|b΃iYG| F< ϭ͜Z#O~ja:N`Bā"V%b&DtHE3!OH$GY8I +ױBudǺbW5ڶ{ ȘFyzG~,i`v$1|ϳ@# a@#E Q`dA#" |#SEF(*P$(T4y*[DR%A#" }xbFQw Eu k pX9}.W>ꀍpwKuDI(ȄX0sh+ qT(h?\cQ/D4ւFc&"1Csϧvc@DT=d)4q"H}M<6҃TZ$ܡp6 tO 7oHD! ƳJQG58EHDTO n4 5]K)@`| VB#fj}FO[Tk)rqN# گ`WԔf& F  %" ]'EF'mީHCڒ IaRBL)2HCRk6- {۳F>ca})$43+4b׸oQm1.YF!CTѨiLƶ,BIPu2֒ņ|eRC#|lO%ϊA~i$E sFDmHjTzeĕj~-BhĀ!u[b.bL#n~~⭦z`dD1H׌)@?4C]h# F4 (4*Y-& ( 44*X0Q!#႔9*ؗyU*4RKq8)*7 ƝRC#sz4`4&  }y̽<642?4R4KEAF8E-=bYuh똈jRN1pTZA%&(7^hYk: 1aOor2ШG 5]NQĞFNheC#6-M<_w3R˧z4Rmcct2QU6f KBmf:ZLѶ (߬= E%Qy# ՗G $}aQ@Q/4aMJKC# 44 # G 4R /ohTNcV9B\Se/@탨.ՏRj,hgS  jg[Шc6 y)j[ֆ+fDtHNJDIr 4"(n;Sziħ49#L\Ш| 4"#iQe-pdF(A# Ј ΍Q ZpGjHU.4 v_hhFU [G5PvG*(Dhd&{ˆK@W(4{(j4ШЈKOKaCFi11NQH^vB N⡑|Gmh/4AlwW*hm|RQ!|+2чTbz=mĤFŬT5@ |srSr_В(lzZ1"T\2@F142= ɢ1h$5pLШQRH+4IX:i8Q9Cy1{1%f(Q"*hj$F De}HhB#y2Ž[W9a|*hTJśDA|ogJLե݄FłFGQR OZ@D %Tϑ qƼ8jAFd}MG5$l#l)K QE$h!9^i,4T5uB#U(Ƃ-']2WMCJFyHC# 44Ш>'`s@0a&U94jHC|JDRh| '2h$js(ՏvmW0#|DdjFQs#{ᴝF5hFW9SiؘШȿoDȂ=-@v+WMS>ҿjH{`* pчFuV D,8rЋP+_pS*T 2wrh\ y-ɷ- Dž.T۠_v%FZmE60bմUYXY.#(^ aK}dV">4i Up0Ш@P-\#PS.??E@)ŷ w醶 umzѝv+F<$JOð^DRTTW6 $ԙ)EOJШr# FR9HPYUk-G|260=}K R I%b 1Xw@!H;}tSd%l _Y_ⶬ QAFU4*sMHبĨb!ٮ_aMFAc:Z?; 5d|ah|y볥2ih24r# >FhuB#U hTnF<8#E,Vh(4RF(Q,(whEOsLɊ370yBhDH4 mvC#AH5Qg4!S0h$USPV (ȆFTP_(W$FQy^IsR5HC# 44*WPs"0hRxE[msV-,wD e5+1fL#x"0<`MQ6ˎxDHihԃ+?+Gql,hT_)-2ٵV6NtN~h(Tr~IZ(los|p\/8WF ~!Hh@#2)d TVFb;`م>$,3琡t@#! 2toZHDu@#au4*{ǒ< RU4 RŨWmP(̚j3_koЈ}f. mqF>R1MeypqF&tQHQAc *il5 R,)f=UPU!-NC# 443̄EYQ.FYQA$ J~4S^ARLc(ꘀ# 0L2^'lGp]8:ʸQ$IHC# 44&hD<݂F#P~hb hTgyAC"ZLC#ehD!N7#f؉jF:Vr rFMp(a?G/hD٨vZ6gizw}'jo5F6T4S&ԡQ%'4j7Ŏ>QXiihQE!89\ IiN- flhdO-n!񤞘YDMMc=Z>GAT["&:DtLh4Qmч&Su0#HC# 9GFcdVZP4Ď'2>K:&+C(Fa_h)j|VHC`e]&燛W4rWd"GL`B#PH! 9DmY4Z mZϒW8n^}F7qNah){hԍ vȸzS5X)CIR,pil@44HCFth䪤( .ܒ4jQCjf h haDdU F|9ZƱF[p#,xM _-{'wHHC#q(ЈLJ؉X=U^(CF(F45vB#Z~8jMp|Qm%{խ„Fܡ|b0Z&,MjvxF5 7L!Ҿ1BXQ16rї ضC4b#l` 40{4ނBmpD$apGXQ $DihQf5r_xŦ0OݢC`'4R$ЈMt8rv,32xDRƬfih$h2Јƭ_kyi%.jhri*ƙ}˩bB#6ʓI6h$^JШ̈́FuVQCp|f2~3ґFb034"^/# %: Q7A#z@#|i'[AQ "H;F8*l|Gf]el4Xp"QWJS >G5ԫoyBzDP=]=|QH5jb^ d(xa&$CI^(‘<_׶v3b-0LdRXQ$ 82=;NFc1ɨo z'ѠIhL0NW8]$[~h0.9Vdp52 S8_ʭ: JySϦ0y^@Q)" ƦЌ5Fi%mMjyB# R ,_$A  :"9;;FBB-SqBB(KcH;k7d"*ՆFD(H ̊hX/Hp/|9v05XPDM$*FMY(@# xihF%<:/`HFc X CA*Zf=m$FVʑF%F4~G cFI@HF t IDATH #HE(8R=Q=vY4ʊ.b5 4' 7h["8b g/Fv6>hd /j[G#HcD#5M顎TqQ}i9q 2Bp44HCJZngL%Sn`6ԫ :݆'=(ƨTЈFS!Y G bhe ƀMp txĥڙ,顔Љ mEX-FϺM<eC.aM?Fr/qVaVʄF`dC#bX8*Co# ">HLOH SJσkk eXKRieQ;hRxihTШ|Xgq3E#S A%It59$*ЈxD*+1i(whTTVSt0 eXGS>tEC#s;" h\5;`E1?fj.8#25.ij_ Ո*%u hdFa*j0^kn]'2F|,^Bb xr4ij<49".0hdW|[FQk{3`+Th$2k2Lyէ+E DA#"EHQK+&x[@.mdiM&Q4wiT*"qƹhD$2h"%SmYM,A# Mcl0b FF^Vƞ+e$FD,pj}oDQLC#%hHd)whԫF Gx#,0MC`'nQD] όfhD{ȜY4;\)Y&Ш Dh:dJmzHFnQVF VBz3s մQL3iqbhh[ K\ٙ:F"HaA[m\z iTR'v8j/;44*7# 44 M]TrdAʚ%d 31%TLHd ˦+VVT#ע%rF=ihT(W$Rh;kf_C#ii0.QrWLCz(.ƞ3"# Q"Qھx,e ("zA#Z-@$S6ޔY].jE-ȑfAuĞ\nzG3NɄB)G*n_VoihQ1 t0h?84E8~]%FD,4"d]'Ј# XZ<*IeB#" A|᳆F#d̥HF"Zc&"QI1%:3=MC#Uhl 73[/44tއ [wD6vBD6UhinPh$W-m|rf4֌M#0i{ntE\pC~l&m>HGûcB#3q!Q-IEc1&(&(Dk"hI!H=F.hԅU<++Ս֘scq4R U9AѠiĀZKmFݶ13A0}l.kPNz<.h[ k,0# *.#Ѿ-85ƼqβҊ&ёD$r[-*u= XδJF1`uN2]{dE5/Sv yT+|t#A2մr@6շ;<%#4-UP;JZtY9^"ӆa mNycѸ0/!l_@#6 G ,m|62ᣆF*r_7 Wme4A|."Mx R-ڜEaD里_!?iȱ-V2F|RLU,erx?٪H$(҇}AxhְW#ghLz欫MF@A#N˹ˠ\Xp/"ƘƷcC#! 4+A#ACYA2F) $B#hQoARrFSF_gêe|F>ZQd:4JNq2bOҎ EC yvb`% e߅Ƽ X ?# J$:')_aAJ=y" O 8RQk+lGR]%DvOI%@%4ל)[h£Nl?Uyڕ_{hCX`x?hěeա[IC# `}zxn[xqd=]oɎ^Q]h[DzmhihTFlKȆFqYXpěYXpDesF=dhD)kuVIPF|:5 㽆FC#x-vz NR98ЈDu zΞjhQQc+I9BQЈ\cӑzQ "C̉~ :kgQZ  61(ZbRJL%%imb$ 44 FE01`G?w i1UD&hkF~ª/Kih$Fkc܉2Q 0qTɦHF4 H Yy*4#EF$Q " Dϕz&e?d*SrMIJ}Tܑi$F4HC#&l+.zY@eV̓# -@ċ#jV펖a10bҮE`N9 )ʷ$gj°%BPmШ0('#l(b4"TK,4„l*JQ4Ndgb_vQR1*F|LcU|9j4pd?p4X^ F&{O{4e. Q'jj׬QJ䞲iJ~nCR e!QSF}s`eD#m̾G̲ b@2N F n XpD/׈ERF(!$G2Q%-LhĦN)JC#- 44⾴ahc [ ^e54 JbבFihThзkU42n*r;:z <Ǟ|mQ2Fn*3m^CMџƺֻr4RFgfM[y0:44h45k<2SV4jg F7g I5eFihQxH5"@&; ˨&[&RD [ٌC yuK^w: /sgCB"QFNhf"U 4:sHdZf̟WR(kUÏTcO;͟K_Thpg|vJƪkW_w "#/8=JQDGW-sڒ :I7u։36~^Ͽh\\hL,'Ljj!Кo9y9ۖ Ir]8ܵBiC\_}mUQ""^ȿmm>q3\șg(QduVF2gJj v6kݱoVc16L8vͥ?{?"4'ThdGpgdy-7®@h54*4W m`}B#*WPFE QJBpgUXШr!QH?4CX!wu1ʉDrF0=~=S:ޟ&F"pQЈ4zY_0J^}-EϽ 94rrFv5 44 gDC#^ YCi" 44HCFAޠגk4b9@#:~/g^tX"h6q6Zcʖ0h4ghe;_knLڰ}&oQO>_K͠@wޣ_rX:8 -i%b۝Цm95d'cXL:65ޫ7^5t &qI%>MmiCcTxc{f5H<쳱o 5>ݧQ)Rh1l"~ecW3އT88~,` Z|O%PQX3041|>jw4MdW}C  m5\nxg`}^'ey Eeގ͌zޙ &>;&TtdN }G81}nfqm&$S[c=m8lEfDmΛm>C:8v띄&Ch 6 ㄨu1e`j a4{"O)i{,3Ƿݓh;kco~{<6 Wzf,+2h1 R홼A/km0e&E6(#h?40ك{HCM:Ѭ6nVO۬sy35dϧcQ={E"mw;)d_ 44ШrQ>>ܺwlht%W_G@tNvqSq~?{>+G>G MKӟzg.¯in>t?/hAG:<Xt3.ND`A=aB[ut*Tѿoy/В8&xȐ/D|D."htʹ;&Uo=aL%݄gCߨc;>9TQ12.pwGDX{8m,` ~yڳ1`s~ vþ*gBD;mkO<\NP>8skt{ ~;t;H]uW'xDr/E'} 24w=,^[06}Ͽ#{8L_r IDAThzv:1^ jd}~{ϳz4<`/FӶ]x>=EcVPcYtIX+ ;}u t]hwc'_hdv) ]|qRfmAFO2h-D@MW}(3e /͓4F)?yy3$~~giheA#)PSIc,փmf_Th'("$*F\' a&XV܂Dbm(bk^h*Ogm}?c25/PQi ^U*?$BZyu.[d 'g]|5F&3z0aM=Xz70:@A1A=6~5a*,'Dz:3q$ECd׿\=!4~CN4b'y삁$M<l낿 )$a|A4lG]P=koCo8b<OhtzenyD/sjgvj{LNb^6|ۼ7Γ><͔w@x?~CE]tlqbl4qp]dלB_v -_~i Jyh%{Vg<#Z Hv ;1ᴳ4α( f8!uthи"ؾn>t1e|ξD5YmbgEx_Yfߙ1~{9i zYhĞ/F9D%_q) Jz g| u <^8tO:yGLbH5!a(mGnv/|n!^$HE(])0ů5Q @H/@"$d 4 54B< ?B}_P,,hˋ?z='/(4:ϼ|FG%X@.jȠԹ 9KvƓ }V #6L(_h}c5&p d?du硗_{k;*/! LfWr 3fkn`_tǛ\ud[H3;}O ^&^un.auÞ'{jC ؉{Ƅ&]qcFԜuǞpO[{Ãk-Ia!Vh3 ‚=}WL_ny_K Y?S /鋖qӘ?3Y/za> ۳Mۈ@^v1$XK&',ee0nR.S]8OiN;= <}[p!5|-Lb/ }TԎ6H9Ʋ,( .g `e7FM;'>#83gh&sW^W5S~hďcz]m2p׶}oz~P-0$%!4bGn>@7F7wէE?C3x#B=T 4.cOjΒ]+3Ub s<^!SooyHu`==]an(˶Z Leo&چ1o<4"u1H#)prES?%w_6GO ݱ Xݯ^u2{#RƵ:+q!wS`>iA*xA*6Rh 3 D~uMk47{` S}aшFKl;k_74<ШhFa$aS@FF ޿h2av%F<+7hTg?WYXN .ѯ*mw;9)RF$5~\5+o(Rߑ/:AIp)vé. l$IbuȚSB#H#rT 5qX*_}%&^˙]DmȥklډM8}r_}`Ј5{p@!~PeL i{XlJ@鵰@0*q {]tҊjg@}%xw0~hKmp͍4/ L}M:xϿdy45 `_262λ =οZt6[s9wɧ3cEBBA> koq3 9h~hmm웹k.hLϿ mh^(y;Fg =39kFv48{[ 44HCE0*Ght2r/?Q# utV+GhtyRh4^.hFlt+W9Zت(EXfm#X#[_>;LS =pC$F̘̒Ir|b+ &'yX9vtk.h"DrF`MSb*41=8 J+nյ>z%.¶'h+ceL(z4zo v9lW -Ch|ޜ]p_>B7bxx7*<hl)tc* 4# h֒]i7q V[KEwU78r؉{9$Ͽ`y>ih8&F{ VtxfIAokA{,[*4N4r MF@$/F\r}p.486崹2FKV"s0.,4,gҶTeVkhQڛ׺GhPTMȪD8gQ)iF.igmT_Ft'4pDzFajFηBR(m" U+evaC#xDytFkθ@v]8]d|>5tYFLSк L: Ŀu}1~I"h:p/~9*=+>QʜgxA#lzk x:,I,_c?,4,4{M_ z& HWG|jt!5iz 9)dꗿvh'F7.+ hFᴤnCfLW RC[/ h,TFI{$bcWg[o=)s6(MO{㝟2n!,htF Ry HdqD#^1O̅-3p?۸S>8Fh oFR pv%rZ}p,cB4ZHGJl"†}z6 gǶs.8҈myosњӈOO{ZВ8͆BɉLA|.e&Bchit98 xFo :{NؓO6JC%ؾwrΩkHC# 44*04 KCCb#F|v)+c:NQmۀC*ਐh̐1@XzmKOA\n w,Sf[,D4O?7:j€FH|Qѧs}]pՍqGHNJftݭw8F񿢎5`_!*%; ފ~^CZׯG3ƺda|qhIܳv=8`2F #M뙱@hX[F5{]F|}LfR U8 4e҉%6ȵ?r/"L`(Fuhm'44 `lo(aϝ}UzxA#/}"hF2tJF7v=2zugžwL3/;{R^eҏ_GxvU9nBSιFɂXmH8zs7xFeFihF%F¶-F@SZde/vHŇH4`ᔴo]3ͻ[5@#,z&.;ƸF,u}'Rh_oAD]4jX0"E@:{}2&TLj] A__I?H#}Wk8㵀, B#¸[6aA#0~]P -h+,N*h]vhvumݢ|8\zQ}0RClj`4R翠$k=ɘn@Z_QǠ'4JOƲHө@s,f4ڍ\3 kP,2A#6j;rDе7*3}n;,ŌgbNYw!}4sDŽg{,C/h44HKC# 44*4%FzeM.)|VAwthyEU4*TZ\>)bO @|<or~pt g8G74ӚA7u3<(UŷM&dUG:v!̘]$&42 ub?!z>~q&HaRH:st$WwU+:Ξ>K1`N?G ujlzB*H#dxh)j|T |;r >>Ts2;O?K~PFF&2`DTgϹD|Wv.w}v2:TS|Ϸ{RIM ?Jjt X lch88w[Tgy:sgUɡh\t+)9c1wԅK00[~'y=6fyoH4#8wkA*b+/X0c,LNgM e 44  sٸ%]{褳.D.u6a&V&>~;'?skzYιj ogqK_jsP&3e6I;-;]|} hFAX/mghK2h#O@\}#Й_sj`ǒa\:7ފntڅW>uXFV8o ڨcpb>uuxeoqǐp]PvzchǽF'sЬ%F5@}"=+; '\l|NȊNYퟵ1KBGTއqgc|ϔH5S[yxhއ{04TѲmEg_v-u1bOaXd T95`L@ K o=:\atסf6 OmtX*/]q5mF_>s_HC{F^CxxL  Xx<ҨX>ZaB#S} ]7vc먫BZ 2Fu M2"ht)T"J!s)Oh;s#nB-C vZiΔ;YR@Tt)>f=T2hrHd 4O}T('ٮ(uh$2.S ߯$5f%F,8JٰQ&mF9A#~1- +ƒ ouGx/Foe2i=:_zAymv;{>J[GE!P>WHTHt.0%leaPreˍw܇6j W}t_B{7zI!2@%,#[~}W:~ߖ8$)4JmEl,9x60-Y>}0tIA^'mÏ;N@&`mG=Lxm5]~mo#*TiZ>>vg gl/O><ꙹUQLu7ud]xۆ>ѓ*AtiTOIr_CgʈQEAh~ G 61&"`4n@>XNz_θrv{|t;-/MA/mh'hyÏQo?|!Om⬲F{F H4v~_ o5Th:q&6UY,ep& Ah+8@ xmr,`'uY k @TjQ]^6 CFO[2-PHF*trF1+-HAhhQ>ZᏛh꓍ySFá@ K%}z- IDAT^C#c\"%F.4r)gh$LP:44 .4V5crFF /XD>4ÂFDKX S?ޟODed KU(;a5 cbܷF<@ ~As.&}R/sA\PD@4K.^qgh#:gycO? uWyWPРwhF,0LhԣQh=DCC@hB 4*}42RF 4}4JkhQu@#>Ay-aB) vŶ;[7DHuji:YCvcyDXWѮ >+qЈV34zg\4:A+FDe}4KK{'b@sҽVabC#9+^[7캠qaz2S]JۃIλֻ_qdW\'|f_欢~oUO@#kn stSp?Lo eqpa? y7/?hįS,Pοs]hOG|h9j{\p .p?@. O97<֝Wk: Ww9M<4GQ:WB14R wǴFG@=+(9 y^ЈLAhyÏB5: EA_cnJ-eG|&淿+4zgkNE{s\uZJ[!+/(DQF](rD (uQqODD빫̈)4 FrDUDUPcBGC"PM=6*dVCcaҙsJQDR%Ш'%Lm11?Ϲ]<$h}q(?4چ c(ZV?yԑ'XO Gr pc>RyKW()r$i?X0Jdz]ceȷњ3G? shro_3"ѹN^#x aׇ܋J1'}(]|6>v?@ 4Шy` wmpȆF Zqj ޺(dZrNo=?n8uɆީErFkϻuVznC 44\̮KW34R_ШPQSeRI(* h  /hKN[+.A6 B~ۄ?44 E"s~[]c7sk0KOSٱ~v.FŮ?-w\!~af'Q_s=^f|z_D)s*yd ϹY%=aux}[lH5ϾH.C!k֢ͷT4{z><2Thtĉg ]׎@d ᦆg u]]$^;$q/mF9Сgh4}I\l44gڤ02 BYy7穡F"XCho3!ՑFih{͡hhFńF t=S[ }W؛C\r4:<2Vu KZKϿN@Y|W,oT9퟾+!-LxF 4biy?n2캐~j Gg_z5Na''$>Tֻ#Qz~QhGt =g?GvCҶ.]uӝr~2S(on{CZ\hn:FaB#٤<84j/kh? 44*h s RB#Gb}nN. W^}84?ik׿ x$h9t%W8 {tZ+vҁT<;BD#f<x甡tdM]koAodeuJ?*(4l9^txɂg^xD"D@L_A}rSQGҸ1'`}q֜qFe ¨4'NG(4qRFU4򌮫fh$1UШb6B)/d{R5&P]8Bߥt/8ӗ0+< /Xrn~="l.H >ϴ`Qc@Gm/[].sVٗl ->>J˳C =!]J+gXhdp" i Nl?S8D>N8`hIFDPY/]{XYA#0|{N!S,5Oeyy峼RmaW59 ֳ|vBFy&*Pp~ e%zdB#0rQ)&ihT6jFtM\h?Fhh24:Kv/4OOOk64=(h8"\Wj'sa)s.3NQcSKʾӟֿ *Wg7&~ ʟ˖Ǎ(Y\ђrO^쌭=q.<,Oviab/g{@ @$ʋW(NDC# E$FnF#44HC# >? BF-X(!;E/=E uj_&iFfήvEJiA'(|(84b''P}&`v,o2腂F'{Yⵔ"5[1^)%$tt$^`2htB,z6~\wh#G 4W?rL N@ էC#P }̋,H{HCUЁFKV$2;BȳĴ#tK޳Fm,(4R/rՔ%㗆Fiih$F?ꄜ{Mfnm14 ֗)FAШmLϨXﰇt{H ֵyB8!W)GE Q}o-XHhia~RBO?˻O陱랑o뾡wN,4 gN+^9kHCТ3tUN254HC# Fm%4OC# 04jXAxl?skq4Ң]^}-3m7i7˝>*m;(y-_k|JC#h엢$Z Dch_ Go|WF"s@V9B#?ϹOT7x򺋕DS?!Z3%(4wy9/Dy &t/=HCpQ'5<'LHC# Jџ#ihThT=^hp*J⫯THvAϺ@g_{7ut@=S>Ǟ|fIM {UGB#m$Q|Y' †ީ3h;LhꙹD{~rUR:ECꞾ@y 鲯xg=9 4]s˝ MX`Ӯa\vihT0`T_hS!*r򗗹wRCHF# xiQ((T)4"G.d3u܅_jhD`׿F_xk[ HwY3L 7N+@ɪ3sG9V+4Ri Ws$Syip,dm+%B~nh]A#ն`"O]FP(\T{OzFB}wy{g`"s/5M 3%WhvQv8xw02 p;P ȵG44Yhڤ7ljz5JB5mRKZؑ8xt)shTZmO`OCK8m9T[F]SW;\оAs6HwaVinV0"9gT@DID%(""dQ1EDE99 uK{>}f`X]էߧ@_0 ?$3Ĉ9Գm-whnP4Ahا3SIgL7e 4ۣ:պ0:Gt9hnv7ф̸SϲO|MWuMLVGmdݰSˎV`F%NJTn#k>vٻohv{G#0]!VU-bFBiᨲFMF,ʍD#!"J0m6$H{D#FD#!BxlZV_$HBD#FD#!bC/R8Z ՇB %tKJ/HD#!H!P"Q7!DE_$I4B/B!D#FBBEB!D#!BB!%B!Jvu&۔< !BDB!DU`$BFB!ǦIx]CB!h$B!G[WSB!h$B!H!B! !BB!P"!BH4B!UW"!BH4B!~#!BH4B!T!M!B!D_$BFB!Z!B!* !BB!P4!BH4B!&BFB!B҄B!H!BBB!$ !BUHB!D#!B iB!h$B!T!M!B!* !BB!P4!BFB!&B!H!B҄B!$ !BBpQQk3ofe{:oƻ+pd{?/T{?57[HcIB!V˼λ!?j~0T::zod?VVh4_}׀bҽ6yᕵKB!DehDfǓhv۾}q-98 fU~hT.xy{h$(̛o&1MFŧFMCM.=;6B!T!->7-htణv:ؿ[7hi9̰h,Ѩb5F]UsǽH4h$$Uygoh>=a4~4>ln}!;1_ǟ̽=b98SÌs{[:/r ̝_9A>c&f~XhJQ s/b&3HӦ[/.n57(YÎ4k_NqA{=rEפ/{ldWe:>^?X! IDATcCC{sc>3sɂE喋6ۘ6)zB!D%0orzoqD9W,cpzq[Ͽ0om]QS Q~a̺rk 5ʼsYq# A Db7OWߟk4αme ;AcȘ勯Fsgr镩|1&?S+6y9X;&vp?yBoSszs??*Ie+#ĥQ&;E#:H./{c'>DRͷiY_*p]H\"-cQyOᜂeE<O=wV[i˞ІȌԹlj/"omTb,IT4Ыh4EzB!,1(y8 /uaTB FAjlosarؓO{ 'l qC"][C'LYfyCH C@reǠCٱy0Uߍ<~w𑥟ew+b?%@ ^ hex ")K7/Ukغܶ1vtϹMJMK4\l=W;b|Ghkv.Uuwx#EX2LtAQFoha^xZ0(:ų1ϲq'Iۮ^5di QQ[!T48?lq0q%^"~/SB8&JӃ^gqT4֤`s= !*^8v%FnH$u7<E#2PH436eArU=" a,D#OKXQH>5`.cg4zF-r9i# 1]~Xzr5Y4O'm!$l9rFֹP8}gw=N9{ <;;# 7aF2s0(Z4KdQ2wZg6 AˉFBlOT!F_>ǀĵy]\SQ"JM![/{ς'2޸/rK4;F񖢑< q&|E`a8ˈJ(y@s'aѠJBFS0ڦfyxIKF F0 !G [ YFxR[Yp 6+^4a#IYFoa%̅4JQ4\FF?aorax$fQI K(W]g2u.gjDD#)5zUBCBhO{ w7"fG h5F]p/ Au¦<6Ԅ(ʡwh-htH{ fQD#!BH4QD#/3CF +'9*0x NZÛpӔJM1|'QcP N$q5tB넨(9\HKã0 L/ϑqE~c}[MC6޻|^bf-a#MJFo9+‰js+yhCas 7 (j Tҟ\c;ql!l+QIx{ qE#FBB/GU|Ļ 藺^7R4"7ߓd~'Fx㼂 y4hwNP~OhǵqR'ExBϼ8ˈJ,i4#-j4*|6Bm>e#g /d,3㧜ktW]4=Ҝ03ou沒8wQfF\cs}\sm)];5rҙ-0;(7wy5n6_L:cBkwsb3<_s/ ze)!"q~q**vgysSھ>DOhyl]?_ gN_⷇\5kdqX4z5wݳG^J3pڏ?dFM<=ֱQg/y|a A:00 w߹<>wȮchޥy"+=܋m\-L +o\k%&{jI%7ai1xO9wVɃ9;kV4O_+}%mtX).[PX1u׾Spaz q=j74[ 8@% Z˨M>uMƽy?9yBҼ|PaaZ3γ/D_~k:sLO@1XNz#qΞG."-]u{(Ѩ]8]YNy%nEF'7a 4s%{ 7[h^|V;Jz1k.O~ƘU)k0x ىEIUzfsn45|e EX?31t2pal=gW!C-~xpmLT@-cgM^uEǿ+BPqC(NN9#z]eF*}f='zp0x6 [1yͿ-ѨxmM =HVQ7Qe&V8mt5#N WV{{^E3fIEb51%i[n4G\w.s5E/YGY4B$mHHUr RWs"?a.\Jԙs7oB!$EPU;oע.RE87WF4*,%7JT#IAy*x$AB?Dj!l9qyoPQE#®I!D#ڌ/틪6GV2:q`%W8!s=o`8q L5i/pUFjèCHvlAjPqb˛\y`>b{DUVшqp'WW9̧֞z7y7PQ|*!J40vuͦjQ!BQz#On}ltBI~ߑޛ\͕8*(ht[rߩw*墳̗ŵ$7-DbştwNQ<4ioSy9R'͕CfU 쇿kaEW>Gjəjj*oS{Ǟ\>yD# FB!*him""ucv&*9|sO?"ge"JW4c_1ͻu<\ۀË:u= s.K(PUYE#n#ER6UqY}}ɧeM{~T%ğ O,W56ZHB!1xw[t]9߫6/[$tKV5dza1#yBMU4y=r&aݶY\$`>SDqˆn}[C{K^:jN`@ kOr 4U4=6W]mŗos4nye}s7އQ?2Îyx˝$`m= !BH4ψ!aq,Ǟ2r_}]Û)3g[uu7 TI$+Gg_x9Ѧ!mFq = trWe0q@LKC?UzСr뮤q(9 Q5!U"﯏\WD#?h˰6f ;3\=,t*ѠG:W|;ߠBg]z󸗮=T8ŵ9&вCqv<ׁmj!GmĂQ]I5= !BH4ӈ!/F^X  1/vG{1O4!jD#r|ŗI! (*i#o0| Z_wJ3}e֘?(r?}`i(9c໪iW-Yz.]4J69+Nʋj7 K/m B ]h3ijkL23$dzB!hQ=expW9iW2 %q'>p^ IDATcސ)[omTcBٗfb㕒*9SV>**nCSYECklTs4;SFb,0>]F?%UsK(ZX#o9 hJ(G s"χpJ|G|&s<7α~hYB!$ֈA3GzQ6mXxBocw]VNT4,~MW滩,)eoe8>2`Ę!UyFye2*=\+Oe9wiǗ7֨g7FQfȆ%rȂcO43JTU: 5^mܩ~gؾٶ.eӦg~![Luvh\`yT]gd\tURi!W> HH4B!hCc$$xyԄ"Jw$NqoS}fW~o| &eqY\װ+.7pĘrߝ8lvMv-]Zf$Z\Mm$_hj5#Te_iƳh$*$nκ l*('=MoW^{k۩wg_0׬rQUKw׭7aNÀ,,7ߘyr˒;\xҫ3:Ǚs煆`<7搣-]Î4/z1닮_fK㼗z{hhեG(B%7m ]C͝%#TN}+@^trsʌ Lu74ak6&F{0O?^+o0^Bf[okX9`QcYu?B_+~>v]²D# ^oy%|}R(yڜK~G{MJA~snu7m*1}R:?øSٯK4K:u|6jygl_C~8scqlӰ"A7sjOއ1 v|75[w@H#}={]CmyOsg_3gQ>jr <滱.xBQ`o9*#F$ŀ>oNϩDuà=+ˈF?M!:ߴ@P{WZdȱ֨u^V;yȿ0`է媴m|O>| CgYsVT\}M9s#h|=g o D9GG|i>z>5j]WĹ.1;$b޹U{+vGp9ھDlo #~c%}vyA.~v( ΅[>B9D'I?ϓ9~sēhr-f~f>Z[!A1}O%ďgL!1,㑆8Η=!yYmBrソ>~b_A^1fe8Gۇbqs;9<qM,sۇ'z}ua1q'|Kle< t̙Σbۣ<^id< FB!Ѩӱwg_~R`Tx>Kᄈof1, t.߱eD<,l ?@3)x<k%oXnXyK7üuO xUao=00rF !`Pz}]{ݭh cx80(ɵpF4W^wЊ~1 UE%qxf`!3\)a +VҞ_4'<-|Bп<^w+Bp[ wcF4|dy-깳%҆1DU߳_Z\i^=|);O;iIĘ v20 ۾HuL4,0.1/$wjm߾mn(QxЂ4Bu7a^HG~ a5E ^(w #Zw}*=xxhoޣa^4x}Gˬfal5\QB4g>\^s%?b FCnju.7?<ӑ{okt|E#k S~3+p lqۓFIdzh$B F"r xj䅥a 6*4Tv٢kl(K_cpyP.j a'L4{-D#6q] oIH[. 06 a/^qd=渜ˤ=,D >A qm`/Y'(XYqۚu<F4vT2n [B_}Mo9 [~3>$$Q,$ !* F*uZx΃?5ag^BZ{F!y7hAWiAO/$a)}~9 pjZ[N;31110RuxQ孋BCĈ:cO>ݹuD aź01 ^$#@%KQ0D>&&t OziƑkQa%=,D󉰢0 By5pFW^OBf :8qZxGeYo}3fx1v?pp^F zE4YH4B!#(я' yc DCE0_P! D~3/bbi^0&^ą ^'4 r4(-4xErWx:'dɿ^q&ZTlNҞgQ>^FIxVo:{IaсÎ. Suxxk$B4~ϴZ#:GR|r1$2#< iIdzh$B Ff5(VآIDd*xÍvrf%YGoUHJr ?|¶K'/*7յy*1ax_i/D]iTQD#rQ~ W\(2604kxAb.(yf;DdJ?D$IE|Vɟ39+`y! ST"yp=JSR ,h&jiGls }o!'Kg!H!U.(D9X ߢh{ƈ$Dm!1ؖhDe+Ml<um7F یv"4PcCm#~ѯ^.p30yOUdW!+x#S H%yb&Qq8g=r}Ŷo.(yf%e9gGHDdziE4Þ;D+zW>}jIu/*E?"L\G~6R+pxmy>T;dIE,7v #,W1xrT$l?nZi?߿g!H!Uè AeB'| c X=PK59o1Ԃ~VPf:~LJ۶[ofznjxCD~&GJKjJ{ @@"pE~8뼆g^$%y5.iƑ A%5\7O(yf%e9Ck·~gL v :n];?BƂU\0~7)>yS^Y59盟PZtz*y{>1Cx9&<`9DϭL ]c}A(t# B;*Whb1dzD#!Ba<B!$ !B Fu&&B!H!5!BFB!>ԄB!$ !B< !BFB!FB!$ !BH!BB!MK0B!h$B҃B!D#!B#!BFB!D3o5~4ϙYFE=zhǶw)-Dc+n eVtLBk~'/r8#C0VS[Ҳ[g~gsw3ϛS4탏>6K߼AϿP]'uIE=owo{YsV>Ts7} /U>7y' =h2v w)l;+jFRr}Wk>:&!2cO }V>=$UvỦS(ϿvxZl<λ І,PK7Sf\`^~u{}DF"/nҎIgM(IoV2ϫhtѕW;1!EKn,wg>sǟH4сÎC7> 6Q !HF%gQ(\cNs|ʫ΍sSJ4ʘMK0Lwk\4 / 7K-ch55uf)mS̮mZ(i&6V3Eq< 4-XO+p$l]T,ɧ %%/hCXI+'։#>($ Fr/:zӶs¼1Gz-D8D jz`,4鸷Gm~?&{׶n+a^{m;?37 ;v]c,ۥ@sי%jR&c=Ͽ/c/uӧo KZlCc6Q̲U|c4ݽ[i"k}1p̹t;.GX;vnTjd"*~6?ygwRp{5[wFx̹l 9zݦ88EqL_|ݮw~<{Z%Kͻ׾jz2,!hn>6_ BB:;C$?\wgqz]|9W]]%p`pϿz+-c\Z/bEt7` %pis.-}cM^_k Z;i__ #O>mN}}0G108%1!F wnXw=Njy=n?+ YKϟC812g]|Bso=q¨CaY(ͷiϙ凎o~zᕵ&mNr\lǟBw~H3ϙkn\agY#3J83~0f1o^ؾi2M:F~: ƻkrzppCX#vCpADx#"pqwݻ9A5Wx˞}h5jȾzr{n\_ČdN>sC:+w\c%}σ}"R4Bf _X:;1M_>- !Ա, }CS5.@|GQQƟ:L4Bafp\}>DH4BD#Qk IDAT?D#<„;.7L4s;hY *]s/k_|G417{B8FOȉ#3NU}"oh$D#FBH4hf=LUJ L'rh*2FrUp撅WyC3_& ~+h\zݎ:rgUKhe滙n۾|~6d%Ͷb*UfTȳy.7H" F1ylBCXϏ\wh* ORarDyPIGFޛx=x] $0AĈ4ǕzZa/YTO z{ WiD#kk E"\&xvBָv\:EӢΕ>o8qv!;d.Uы55K3恷!,=w8\cƅFiIܾ[=-ohTZ~󚻝-HWP .h;và[͝?d{/'rYއ+%qSU0-hԩߠjQ #advL~ݿb_Фmo~?ty*&Q/B"aho9k+6l{jGH#Pt߹c蒇O|75nv`ϸerɮv'Ɲv/s BXk^['|BIraްV=ǟ~u݃=j%FKzj#g,hf<ؕ0 Np&Phr[4DE G.q%ezcO2$i )h5FIUZшp5'ZXg d{y^AQf=<{^Qb@44o(>B4D#W_7ɦ]~ $iYhu["$UY#'mdУ9!ǘ@t,|_XOBF% ʰ<19jxD WՆnkj,UU<,rm!;':7D<5!&  j>dN]&h"C ] 1&`!vEv3λ{mk̖5s{"T㉎uVR o # s>`p? &e0uyTqyr̹bAin<_r,gNbF@Z1%Qj:;hF ɡW›F(R!D1T4J:҈F#!& e{5v!CޤGo>OK IXJ!D#R&IB.,.%mk(yMhƓ#1@z=kTшz@go[gAU$Iwu-: x DU\⡟rM ͉Ao+CUg= ~ZY=xoۭwriw e1c)LBAh eƋīVim%*ς[7-:u;I8\e'Q>+6h&]kߪS IQIQZ[_sǣ#*7A1p wr@,r$hJ}S>`Tl#!BFJy\e%|=2pĈM=3G ;^n}" #PڕCcu>$v!ROfV}2˶Ϲ,QIWATb`sJ\\-a;; uQᓞjI*qKV^bU<=]O{WCf>㢮-coQ!sC$g>II\|$k(׾,c"_ зa-M6gmR.B!HQix.<*(W$Q9rhxbA#r^.c7W!c'$zSD!Yk\c*ȔC%&9*T4"A˰R(eO(W[Fj5/9\j׍B$rm+j\"FZM!c$`mxRs feGwc>v}"~hDBw\]QD#0sԉ#Zm:9=}ƅ9އsze")B!D#Fߺ{`xӂqiΝpM'ea›z;r F$y\&iE#(cYQXՂ TtsUC/;.wM2iE80*,.͹72^Rg^074̹rQGCU8-h(Gts~ /vzW VZ<(o`Ο7?IB4acA8s11[̹]QD#}$jEc&V>A~Q-=( !BH4hEYBBP;I?,dF8A*W۩UT}[i=ЇgͰ˸̓х_ko+*NR-8ɡSF׸Q01}..[ G_T#Wb濫QTe.bŜUI4?܂L* !BFFy839O6W`?.Oe*%mIE{G{124e7h嵰9KW`9"WFhT\趻KtQi]k(htͲX%s*F=`?N!Ց`$B!*hZ/*"hDXLC~]rY!-%]9')- )G}g BvIKyZcĴ.QÕ%"!DT7[1-#O "XTK[1.jq3)E#5I%0SYUsgEn3h%qr? T ŞUI4":~˕`Tl#!BQEhZRF4"gOPQ?oǞ~ֹ C(QV; 1S5y> :Ք&/u;/\t 28#k#9cZ4>n3ѵ+vwL4Յ%.ABEGVEI=\?|ͷ>SE'[)m%B!\4B;8r4F!Uiرأ͸TMݼEו!\a vc>oHMFq<aE'ą`!>[hh~4ŒxZ<|/%m n[J"o s1B' ^-|_ D7FTFQoKo-6F'COCe9W[tI E#!W!7i6 F$ !BJ E%Wp>6H$D#-:%30+ɱO2]!H}egRqq'jTneM=yV$uY~q%#>eۙρք?Nh#Jp|Si** Ͻ1h JNjϧ0(sf{٭Yn֥WŖU Gx" ܡeF^&K&O;/r\BS5&ns=E`bDIFgV0Hz6¹mXxjT5AbWJJiB!FYN+iaAq`sy=QJu>6K7(H"l\1' ijϧ_H~Mߕʳ- %:׳&hG8W$݅YV$żKUV,"\0#H!BT^$J_zIf F?-^ARQoݓ6<]B\] BU"dJmqj /$C\P2FTd>ĕ@YzP(L.$i7ܹqѪyP9W#tmdQ ]r+NCˮbymHi,~Yb@“lۺfm$ !BJ,y q=|㥞YF!E>WJ q(Ѩ\TmD%I091r%yspUhL ģ*oJ4\g+y@>rD/c o d\rAa3u֜А>}(aG +ha$cO:+y9cI5iA%PsCF$CG46|wͲNT)mUJB!U@4b)vN3wx]?t.Vib ^mƝd"rUֹx[o0SM ymWG-2EFQ~#!BQDB_:A$D!*VS4!B!HȄGvy\}$^FkD!BH4аc7s[B93GBTqj#_~L{|JVlu =!BFIЫ9ɉ2vi:ͫѱwjG2Ą4cÏ?IRUyWMGK4BT.9? QcBCFg IDATͼW={Ts^϶mKюc͌U*#;6og~W]/{2;8lC/z6oJ}j62X_}!ѨpyCf]h$֍v ]Ǡa/ i[1U?Ǟ~֜1kr^]'{GTsg w)q\lO+]NJqiWO;\[EךϘ}6Wi<ܹ NWM$U1j4t#[~!p}/]n]@!Ѩ8^4[l,HQt8;o|zJԷc$6>ш{1K;iY|M ͷMlg憕V޾d7Y|j54vS{%niuig %m'+mѤF[Tw9B f!G7[QD#ڼEI4BTjtg 6+$)E>8]g{swoыk_5wD"u;kfﳭ̟;t-f;50MWf54y٢YzW\ej͸P}!ѨF[h$:7ߖ޴VF>rL/iγ[;K-v7V3r8y]6߮NAE\}Q O5$ =Y)tz,e}>璹d*+Ĕ M~GF`TSD"׍k1h&St渷w-vu1FnXn9xHv9d}瑢QUH-HQi[Бbd˹D#1"hԥ@{{ؑ*dWeuwMB +aϿy߃-1vm2{?6yWsf G5<36Oy慗̸S/y=~z[ec{._~=wֽoN~5Y[VL9pN0(B}ҩmӭ/'l[ׯXe󀒢X9^fDHΒE(9`DT *0bV (9a sĈ9{CY69ρ;3%5M͗_g$f26oca"=m}ǀƘXiǝx76/ØrC݇ w3X&3BSrjѕϘi\jb/Zb> ;_ئ|!$'!Ng:g qɦ%W _;"SҫU<ΊJQ 3}VLyYŦ֔?v8^Tym?rt"dLY73>ۦP&[ZkL˥>e٨v6_ tdǡ-sk:wMw($&7!}vطSm 7}Ro%fN{b޶n.w-25'M-45'SƝ`<>aJfd=fC*9OQFCQbmgd.fFB F,U+O!֧h4tX{p+~! <ԳLvnF;^nE> nj^f_/ڜy6ٗ\QQ>l\z '}WOhDK;1BYzB"׊^i, )'Ni?p@c^#1'qYU8n(+(iaAأI2qNMmdm㞦Ι{ϣg׮leݔ'fSN+"h?l{Mh]c┵9.<76r|T$n'jl7dmBG+/,\5]3s`n}(sǠg>Z Xw[uoI@>Cأn`Ef 4ogHN?"Qw[&9`ikEv!;4ߥަ)goعIƶkfӍ ZS{^/+Ec{f=?wjn=(d.ξG]:ĽClmƆ~vXƼhft˝KmNC37|Ƌc8;aDenZHVR폾[̏\^.=͉3Wg;koorT̃!ˮ2>4w۶,Tېrp3MX;ns9YŊbI0wv\׹^l$>rf}Ɔ9j*MVP};#3ڬN3dNJGiz Kӛ,QD#VB&<1C|ud|_};x>-cQGNDᘬަ:b!@?l\c:D?G?hOgc{O 8v黸+KW闧)rX|"cgg}|bG{g#_ZA- Ǎ*p)\3?Q+Vλ f6#ɃG?f ÓZvv߬Dg!Nx/<ؓEDRX>1W^^3Q c*ʃ`cSr[wmJ#9m8a}ǰ#(뵰u7bE4'hT/@ Z3/٦Qcmv7@@KYs "g+ױL+m@wO|L0 -€/$fM9Կ$aRMn58D]imx0Iy艧vMږY1a5[AC|- ^CW]߀VKk`*UQ&E#B/r^шsKL_ecu,mǟ~;,,ʥ9^&<ž1M6_PA?VX -w+Yi~ri?yym+Kh}꺛oB F/шY_Ho$r-t"=rb*>yvy9]]&E#,0箟h~^l'nwF@zeZ4"?F` l(Tܪex/EDC/$PxއŶ*7jhAm I*]?ֵߗ]x~'D9hm\nMqkN4JqIFžps.m}y$:2l#S(q<G:^je(#-k>rlau*Z/šNVi~S?ƛӉsu¦bъ/kPw."25(K4ʡIm֊FBQD#O~n1qB̪unID#7QxA>F52w?+MCmEU4΍eكX)(SC%Uuh*h}3^iFƹ,FQIS#EyUPA\(ac4Q~s! e@·E4ZÐ8(z(Va6hDxF"bm9ȱD  Mk,*<͗((x=SpB ]~u!2)8~"eȉQm"/ }ܴe\riIF䓱3ڧvu+_V4 o`rir#aW?9 qPë/$;rd6% ˔hDRjVVjW6iQ }qa@|rGɱѵ7&riD X4J[}H&W]?YTfIiD#rD<|QQD pumsxqQ\E4"*J\!TwtU E(̭ Yo<?aV_ˆF``W| *Lx*$&7+%* ɂ" +9;~B03'N9!Uxs\zHA#FoIy.xIӈ OY Kumn0>!%1.\gG.ZQǮ6,`^*z)&1gEfj7^ =":1':q}riIF.OgСCyHTN^1)[0e jFXʆC1G+%7ce.» /Q>Î?t$;C E4"mw.lulp4+#L\jŽ+*7o9VV i#VYV,9!aB&!OΙ(Da&#eA~:m:ۥgd3~_[xmoQvYa!*Vc0IKa z/bqSN3;\H4#P>Cl>.V4'N%X})N Dj2^yF+ ݸ=+e}f}'ռKwsԉS혼%[ @hIMX4rIL|ՌJC4ByruϡZ,B-;LFe\D\ڟV4s[K(d=gرK'vY1Fv Le@Vi]g K;,Q֮6?3cjoI$vKї%qs2ƬpF#X|ԡ~OJp1_(V6k~"?7k]y1BF2|}cA!.,QL[SQ4O$j崤7|'3l1,%P?֮E"jۄga"AW󣜋hDcOn=$KAr¬[ 1&X0|wSa >=BcшDdaʖO';yZ8фaIxX>|8a,F${ݑ\=.|'&҄"b]G{; s:%=s glqɁQCJI4n[AƝ/FIڋD3uϹІ>hہZ!'m~}'mZшcq#s/ֳ( KNI#!8-I3J|(nGV>ٖ(< 6UI#!)Qytú'|A*n[ϸ:Xn<Eqiܹ{JhiD#1{|1uW|^Pq GO)˂hԲk1չ *Dݣz$*nž ǨDѡ^$`Q#yu2>,X=jݵWH+iaG0"1}GSi[jvnl_HZ{$xǸG]z|e;'N[㒊̵JoYjcxФkMmM$?JB6mޡym%ȕLo 4s!^cteYr}-[_D#o򁑝-DއM-EI-m}RC+hrQeBB؎xɧ'̍xH^>N>#E啄dٶuݑ=J*u7<Ȳ""/ ą܅8?<57y ÕFTQGM#GGzi{KK~-h$BH4*CQ^" _8[Rc$ɛ&It9N4ryGQŅ B/)B˕~X4:jiyGq"X&k[/z+"˲%W4BH޸FGG-[?4mAGT`HaiB!BQν}|+q+mK\B$MVV*$gƿ2^Q爃6K4G /v[D%VKA4k#Ct;,r=ҋF?1xO8U\)oQ\n8Q}'}A9F-\ÐDq&!\a҄B!hTr#WW-]\ш$Qs(Ib}@[゚j7V8!^탖ߵ7/ʗhw>8'2>%u <Ⱥ̋)L_T?%_4B+݇X>PQ\?Éj;uBE3cS}e24!B!Ѩ̉FoA_g5d)e QP-Vo;o5v긂hZ0!ϳ/ [ ~nkoQ6 h0萱6_E!BVd9+M8,n8zs՜LVުD|{Mŵ!SySn+Uoh B!D '%Ҳkb 1qo׋[02 ]+hc052U>4e欛K5N\1{nqQVDJ4]4b_iK\ky"L*jg>ɺ8o8'COQOVBʕ7vX+iJTaմN䂫/Dzq }a~9Z/\¥I~.ѨuۤI w.ˆF{載Fq@^Z;v{_>2VEaiB!BQ0.~NNE#;j'!a$%.n[o_,<ܻ"[C`-'JiFЮ@˯:š8lQ8)󯼖8jdsFF>CGN4$D"F\>D;džZ}Mu/lc@ KA !BFZ4Zg7ϛoWZc#<o$IK[Y C0K 4jm.vv֜0::r֣#9h企HxLh^\A,;+I渚| ƪwbCߓU[Qh\>ߺnSm["Fw1f_EqdQa}˶-fXڎ KB!D }vմC'N1'}4< `<1v93CfD,r'qnw3УE ፂP$~C‹X?p:aڹvAVYPa!='HtOb>ǭH- gԡ KB!BB2?)!Ws%,VKB!BUV|^UyB!D#!"+*X\ÂB!h$B$wދz]JzPB!Bt7vRˮxaun="ic#1cm,̅$_ڬ]<_w-TBﰴ K"Gfpǟ"=!GO>5-)kgΜQ~3'N;GQ)q7ر.sSAeN4ں^ {kZ׾ۗcsTkt=B3?lUyPPVĒk93E$/GH4B!UUXs8wh0~sWa{*Mz}DRYs_UEai _eM4:tBuALzw*h?4SϹ=Bo2?(YŗVhѨ_Qr~D#!>,M^FBj62?vۼvck{Eٿo(y@s^ <2k(qݍֳ~;J4b7N)g;vZ(\*h4g>ϚnF.z^_&9_۹㤢c>2?\Ϯ5oyCkؿwxhp<sӂ;lOdϼ Az {cیq#;wׇ>96B%"r[# c`6h?['̕7Կ2B8!F:PȸBoB K.[Xl2'5ܬ\rͬB۰RD;w9+9 Y,Xh"5sZУp[rGNe{60L P;ewSm1\]zX#o- 8>s0BoΑ1t?a//ڶ<<cp%W$0i ![rU{jQ.Yf3{YwܜxGnŭNT{s/1ّ~@4@c<\2ז=5sq߲m#QƉad^vg!0*!ID#~=i;>>x1Whs/j<f|U: f;6;W.Ҟ7 |@~b {8q:oi'Q( /϶h sdޜpY sݘ Ŋp<¢kqk >ߥg{ 06xF9'}7)"?纤C⎱D#!"Zƾ(hԅxPE!mQQ>oW$v0Bx#19 ' x;Qc AP `#`̄cȒ/ C}Fdrdx<6>lu$iřK]=G f(?{P aЇ>_'?@x+s)! V-c|0ia;Ni#@ЛQ+G tB!9 f;6mW輙#x|Q.lDI-" ƽ'Ҏk]sDp_"2q@)=׍ɻ|h?jd!jk`}D/'}7)p`NR`Ha9~c1B'U/c_<m )b:һyǟWoIr1|a A=VAo B4 %a.="HB^x5aU*x/ I#J4xjxD "AÉ$%jN۽߰TQqRqE[Dm08Fxqb.lfR Mh"^A!cGoh#O)m9`xVAsO*Cpmqyslh y'WOܱ0k)xO=bDع7 rq[&sޅC!hxâQ.~u!saZkDž!:ϰ\nL>1ݯ1'('}7)].^s]Xlq!.[XBa_ד/DqoHɟaAP@Haɗh^ <,ǭxÃ{ 9~I#4>#m/=K"3) u4s zQHZdN`R<x ox>(j)B-hGcJ&9cJ^p=ȁğXHG|*G! 7EID7ⲻwE!N# a(v~m`e_q{ljsݘш%%*q'aa7ʼusrcp F4w0` X[*nu2a:-+ % }!ImHp%+ap!%) x!d8Zq&D=(']x嵩gBP-yH&SK0){yBqΛd!q1cV@#{h81,ڎ|O%zv}Dg\y[PΤ}7. deq&ac% !QYnTK0aK:1,Q &!NhMI ?a{Vx4`cp%)>* A VqPT}.q7} r1$y'Jo.$"[a#߼ g컼Bµh~|+09r_>ƍdAq҅ړ/ȵ+,wr,1KG> E][.T7*dm| w˓F4b0 1 zEUqȕFΣE}TO$iD✷}F=<L;v({nRS Q`}C!*/7`o~w] ,.1<D (]>XB ˨ZB . o0o/7qO4gnu|ns£uRoa`"sp5) t3bHpg59bÐbIpC]`As-3-h+OSyö싰3&`$ED>#BӅvC?HtAN*rXa-F< %}D8>bὅE `vܘk-aj)U8'K4r=10o ܍K0F01^1ș̇lHC'$}ƨ.h mm$Y7kaRQ<}sR/Zb=+\*{iE7!GQ='2|Q.H{?)i({nȅ9.#oma!D $<$KsQvR⎱D#!xk Q&oz1F4glW /C/ k WD"yKJ ``%,f?/.YͿ@`_.Qx#D D o1ƂȓAXcl;CWcM!<$ۊ_AG‘ a .Ųt`P8:P'O-)(.$?X2 R3pV HpX\ȭ ^TiD#Q+.:y+[VcnsGl|卷 y}*缹\ؑovhk;OJZ4垛V4r$!Bp ^#| uTbߟ$]C>ѵ0|+9C)`\3Q iK Cae`8/) IDAT NHɶd.Ux3/P8N%^yڎ4A.| 1'.D#!e8, /#B!b ޝ FB!Z!B% BB%B!BRRiBB!!Ġo_Tڮl[}-TPBѨj} !B T@dE6kgۿڰ:m:~ߴFCSyrq_1W\x4™D#!˨j}Bajͷ}o^{kU/1m,}uྶKZ4BQu%9{et >BHQҤ5NO9|yGUoy|Ys_1K0M4Ry*G%H4BQ^*N qznVQY+]NiKQc ĝsѨ|MiDv&':}^+Ṷ7Ih\"mRVFXGD#!ڄy"C&&q>h44mۣr$AP4b\ɵÜ?#O>et=v w6Wξ Qɓye̸;>R4(wmS0A; n4o_yh J|eގrZufwh*wsg!g\l^~"n5~gapK"(Xw_޹`p_L*= +*U5wnʜ1Gڿ̹6믿]n׀aƲ?/jWg`w7w.]f>[w8we(HBe@^FBApQƒ>^+85zBm۠MpQYCCK^%Q٢NSkaHQ{Q7: Q =KXƠ8P6h0BF9W933u3#8,{!+\\?D>FSϿh 0ڏ3Y % -cQ;0$q|eWYc:xpn]~uV mc\"ع> !uA@dlg/+=d+pAo'NfE ؆6P|٩mg+" W\e=s.~X0q,x|Ɖ⫯!Tq>K{Υ/[x=soaǘ2'5Þ /+r6QoJރ ;27=t{ ה$BEW]oDŽ>߸_y\r! 4Q׉p\[c 9d?$Bc'6((,ЇK'zOi%g㤽1:7lYD&Dilw>3hCLfefZ "ō1&IN3_f;oC<ΨÎm QO1 7N<żƛVh0 EB?/2Ѕ(Q.=N{طAcC#uǦIe1,wsx@yO3cw9 O>[]6JBp}-lD[C0ChF [mn=h8>ǀ/nxGmE ״^< g/+X+)IxZiYgM>֐'A[;T˵-Si.;a۬=̵|=˯LoݮVv^O=\EBюe$DE0U𶛷DŽ$'$a#3<*x? #ۄ> )h$+Ba'|j|~߄ f(S\؆\E#<'4x/cTnԪж($I0M4*1oV'Fz-Y=-eBPS(Nw0ξ1 'uR(JpeFEy#O'JsB_<5h9fGϿjbѨ/ ܽsDt!ϑP3B{KhPuQ&,9QP0aks(W4H] 1^qMZÏ?Y4{ǟʵMH4BQb^Fe$DY$m}j?>(߽`]&K'hl}$&)Qp}϶Q9P⒋TR7 !D8cJ^!Ą`h#+dD|F^ QcV4$,ʄ&>f%FN!99jEH)֯aцB>Ιr֓F$\>$쏹 zu7ћרp#q$N;w0j>Bj>6ݱYV&r^%ެNX$g]x"FB!JHFe~HX^<>Aш̈́9XXwFą%no 7]8p.D>Y%%܆ f;޸'@ɀ1{G4JjHa%GJ*fCਰ<X:%o,]-X}{ :VcO(k!j ҊF$ [\Gk(4ȿDA Gd3.(!"8!S:v-?soID{†ƅ?o{wfk5iخ"FB!e$ĆK>Š nU@" yzvޣC87FZD5Bn=Dpy800 9DFx`W1 k9G>g&Fu8u7s9xyCg+gĶ.KTVcv]cO(k!j ҊF.\$861k=FcDX8VF$4+s(itחhĸa&&6uT+&|OF\cxчH_9C$fh˵F4b\) ǵGf̜ 3.[Rz󂅦S~vձ.WXV>k[r}YEs.I'j4kSI)q }㻽 ];v)$ !<=v<  9d51yˋ1e1XRI#@dacW02sڄpat0\kdI:awrH\ƾ+x $'=`0<? o C[#¡wҜX#%(8y *8cWcO(k!j r Kn(GD)~JBh0$^KP4J:K4rj^nZ!vFN`fZ"]IF\iD#!V$JmjXgh|C{- Y !&J4bU4UxoٹYts{E&;4laJ$~+\["D#!%e$C\;eԒɾCq+39Êfl`(ǹRv}qx$u\~$`q\WRHz lT oOQ,A.sk65<ܪx !i :^UH?\`4Tm ڲVDǝxlu#&UjYom4Nݦv14W$$ !B!DVѕOaIsmWc y(#H!ĆeJ!BTPXՏ)+0B ~܉E9x^F-QFB ˨(BQ!ɧ)$vy/ZRBbCXEej߷.QFB /Uoh*)B!6Hdu6iuaەC+m_mo[՚ #H!!UB!BЄD#!B^FB! D!H!D)&RB!"bQ:D#!eHhB!.mHH4B!e$BQV" BBy !By FB!e$B! JhBBy !BEBBy !BEBBy !B|Eu։E$XFB!e$B!Y$$ !B!($Ֆgh$B^FB!"(ɳHH4B!/#!BN,Zh$B^FB!JmjH,BH!AF̖;5KMQ͵73n\mW\k8̵V]eE̦5jlq' 2}Yƞk1Gih-57lv3PD }=fUw*6p179B"Q2@&o޼֪T۝q%MQ:|Wf]KT˙7X&lͿ/SYnsoS.fVJk1l9v$C1~հTر?csZIB2QƇ3ghk[Dq7~TE6tTN OsKa&:݊>Qc']s-ZvlN=B'U /\ze!徇-To^:cڙ۠#v[FoA= +t4yr{L>o4޵=B 1sE>Dw"̞=3>y(c%`U0J#[x;c2ʜ| k4?w'״ϷnWg_zHBž|y=8g?so'lO׮O^y-g*cQsica0uz9E[9oD7'΄#枛^vg!"g>xaӔ@ˬ[Xvz9"lAxIDAT?DApw]#W͞[AF~\z{K{ٗ\yv_c~ b#҄=3lQK|R=fD3i? 9Be`>[9+́cǙ_\p@4 }^VxlӦאg6|{̼|%q̴̨/ēO3] 1:ܳ+6]wӼ"ѼscͲBӖĞ?u9{O!#G7KώY^ZP~a6ܯ>FB!^FȰF<$_ț|-2084 ~eߩmB 9d}^ Dgȴ!Vц B b b^)xn01Uo5@}' m z]`eJY1y>aE0Y^H\E4 C}yO4zÏ̶ {kA a>{x7",_}'&Op\D#P䖊Qo(,|qۭP8, v BQ.HR]KqS1)j.ܽA{<Q:9V6:#ª+M8tvx㏅FqcsWg|Am[ØwKnmco¡[+?$Z'E =u~F[4"2)ٗu͜6WM\^HʇhD%N$ٹO4kC(I}aF\#IE#'Tu=(r߬0d~JZ1e>?k۶սF4ɑ|٬+hy/cO.gPd_z+t:VBD}:1h$H!`E# DEUaJ3HJ>{xVyV:u+ &LG+8$E#4szAaEx#aX91BW4b.<`:h}Ըnr9j{Mm;OSFBH -<Y -L )-ʺvPC;nC8gp4ic)(!,ԸեL"= 1\1ty^he_aý$D#c!i(î}E!8r6y@J#qfӉYV)cFIq6/p`D4z>by7㇠vl?6mjv!Qsm]z=DžNdlsL:n&Eq2̋k5jWkѩ9iYv ʧQ.L[􅗬cU32]D#r}ŗgK/sSFBH I4hhu像?Xx8 G x\B^V0K*KQ3amCX[ʙ=l6䐱֫sFyC/,W»iD##c.aS\ȵa+X-Z#|j[ύaMdqsn» *PADS W8w+E6$ Oz6ē9|t/ѓZ#ݕ`_k$h伯qSNK}@0DpbNRh/Qŝϻ eY*tAJjlаy j֜WoiScM{xZ̥>}Th>i׵9ӊ,^VƆ,ZP;1h$H!ؠE#7aC,GdzZ0K/Li`>t}A% F-yӀЅWE8T0Ƙl߸uC,?$'D]{[sahN:v5~v+q>]ϙg26U4̄3!TD}v"ň'ytݻ[o%=f[j` mI3.xmSqsǘJ4By՗!-, !GڑBx54(D#! Ģ:o0ZbB$2H!$ !D& D#!iH V b!BhBFB!r !UڮBфh$"H!3 j2h$"'/j P)BDBH4BQzB!DKt-"!$ !B!ĺE.BB|yXWB!hBFB!^FJU!S!;r-BH4B_/zzB!Bs5B!ykBH4B!/#!B]dBH4BQRJzB!D.1^ɀBB׃B!ʑwQSh$C)B%BH4B!/#!Bd.BBBBQ]˻HFB!cR:zBiοZs)~Zv5WJBJme !H!2*/#!D/2 ZZlw_CyÍ!w8s!$ !BUѨrV%#Gvl߸̉\hۮ s!$ !(/#X!$cҤp:5VGBH4B>J;Hjih+'lVQkޝG]qaؙδEbI$hBE*xUϢhhVjuZb-z oxY/P|筻nD lowyUШr5i}FP>8XQF@jW_;]ӌr`n5yGFg?W<+IO?|O}7i6;-446r>:鎻o_gK.6l] kDf;xwI|a{wZZ[o`^ǫg!#|iuu#B#nkZ@e Ï6qt ftoIAYuGlzt f쾇o^ymv9XosEXrڹgÎ3"<&?6%M{tu7OIzgrHӖhFfx1k8꠼SNon>t#K 6LOz w\+]e!5<bΘ01v锳~ãг:y3Ϲuʝq*_E/`V=:twW}TDRjji>j]xŕ礁Fq>_N`(ya+OU<Ϩ>i!+4jZg*EUPTh "8/\{B#lUF@eQG@(fׁ]ʏwf6gFo#QmyDƣ,yמzy5oΕw>kMmiB.(6iωkߗ+F_Pet(Q1O;3Nc&)" ck'nbOkݢyFP-_{Zh_gwulB#?{~GhDhG+Tՙ_B#:VQ UU?PP瘡ӚC=>˜VQ .R%Tͳ֦[-sE֞Mv4Zwb&TyhU|ùFhGF,*TVen}Ese}1d1FѪϚҋ+4*g nmMj<;~זkQBB#<mB*6_}-s?*~vO! \D rG -v\Z='ΝN>{yyߚVAPöۮh-ϕV?=ɝweG-WS(^nAh@mMs {C,veF#ұ?7[Cx(J|t{eh{Ė>Q~t,ж8BC#r)~&\2iᜉ9OgF.~4 q/j]qcƥ{u~QnAh@ǭ2jt s[ټy8B[]KlT: Bun[Θ01W0-ΙFEfEUTbcGH3"1sV}yG}Zicǽ??=_B#:xQM Wba#sUN[wmX= d6 Ѻ@e%F^+w]@^}_7Vl)JxB7 4cW5Bw%5H`B#*׀ ժ%Xtu# B#ִ0C 4l`i&0`4 B#*&/n4Ah `YmMktQ `vHF ! `6`4@h`muo7ŀlF B#ZF*hE 40Y`T'0F`FUun~RӍ/ 40S@gPq `N]jB#10ж n#@h9jRl FzF&42B#oMw! ,$0rc :Bwift*#i׀ 5. 4Ekb # 4\*eUFMPm6 0F4kM3hU ִz@mLZb`Ӎ+ 4` PUihT5 H 44E2 +r (5 :}`^KW7Tp # 4@k,0r 5lК4@h@ki}]4@gԽnz1FhMQԥ HlIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/hartwell-insurance/hartwell-lighthouse.png000066400000000000000000000215011507671574500322650ustar00rootroot00000000000000PNG  IHDR] ׸ pHYs  ~ IDATx흇[T\ h,^K=-${sFC,h, bvł!]DDT$(HUE;azyy摜gk{B!Bڔ' B!"B!pB!BE8!B!B!pB!B( !B!B!PB!BN!B'B!"B!BN!BEx7%@BnK3dO{oO鳾 2L ά;HR]]-%%%%?DSFlTFf+.la\Hk!8.mɘe2yx%H"ɃDyQ?E8񄜒Y~jP->=a$$?$i$;;[5ov1(9}K>#K×TcA1N_ yUJʑ;xq~ޖ?Ad^O#2WpX(G9z][W^,][0xmOcpYxl"TTWH|]򳼿>0[<|$^CEX"%/KTԝkkW") M\e52lH%[^~̒LWMQY11~~HxJMm$% CˠMCTTlbD[kzꞈ)/ܿX |a@۫2\_))»%`RKlnC`6&hHza/K[r>CceAP35#~ڡuJ!tF" ^zŮOH7FPw9yh_2! 0>5FF,/$]>8Cz{W-Pv^R e#DYGGW#jnX]\/7R7|'rs._NmX]`HM"BJ:'X)4>L-^+WnX`x":;t^ql\֝:g?8]/VCW&AW)/vNTAתmws'zc)Exy0(~YR@$1+@Yc8n(QQ[#sdȖa*ۮ*;q;{40y=DO"ӊ1ݲWO띬xK-oo$]8bw*^#;^1+ZYc\58Jbhy.ZC]ߟпNɃDbwE;o&:lĿbBBk&52䬑y^Kra;*Ǝql$lO%Dt]#jI2 c{0t[[r&lpmlŇD_IylQcCv-be)|QE*"r44qFӝTX4 YlF3 U#ġrd51 XD73N_Iekz]ǯvs$[W.^B yHo=ڦ_<1fqGH/ލ+=W p>пNORyo]Xk*?/B2 :y|@]w_&᪑Г.Y U!'&}Lbkv߭I`b n[Tn׷e> BJ:-/?lT(»VY7 N/Нu^89F*WĤޒ~Z儼j]ZKl HX > BJ:-QIe e=׾F|@]=yȝ<*W~r|9'|EaKn-j`sϲiI~8F Wi)(+>s{M[WL˄ExdabeSkaQeѹ|0)~*Qe ++h,[$#_!5 "kZ&olvzꕷE|0)Ongƨ!:7:c]FI&0 >ȿ"et8%~;"fj  ExfYv(|K+K_Fk`\P-E+<ϑάR#KRQC޵ynczoO/! r Ji/{ot(yQpikJboAǚ^j6},qq݃#1G3r0[>(e/` i)^(84u|Q^u畝f^K'6aS, k0)_L$>>hS{y}$%rB&%]9ߤm_]W/SknEZsh0Q;ƪa0BF>0@5aH{YXJ(Imv~m_9H Fn0rr 4Dz*=?_(%Dtew!796rZzjzC!ͥZrKseŭ1ec-enp&%< *_}ra-a'cwLP0)‰&ܣTQ;yn-<#a 'U2O؆}8F%Ĭ,gReYzrz= &HBF +鶼~Z_˵kU2lH۲o7^RUg|VZ,1J< Z $?$iF q_e W*!n;oW[G8WBl }eD%_˘UJ/?o4w(?8딏~7E8)Ѳ(Gͺh={HVa60 B|#ʴ3ݓe\aQ%־+7}$~.~FZ4@BJHˊPўn׉Ȅ_* 1n2` yC wZ2K2#RBCcaWկ /)/[ϟ%:<.|B!4@dRbWAoZ1) !0g@!-[_"B!pB!B( !B!B!PB!B( !B'B!PB!BNiu*+B!"err@U3kX:Zo׿eM %oM ys%^N( {?'{Jd:[.RPXu /M{?,iusr<at:"RnPy v=ue܌W2 RR~.xT\Z>N«Wd1u|iϾCǚkjkRQY`G-1aUU 6J*o?:yDKNn?202D0^HfHimyheIf6}cg~;GCeѲU%OR% ̔Qݻ>e0Nڄ](_g:JRuu`ڿg˽D"¥T )F ?IS"spJFza蜼C,R,ghuY;QCzF^"A{}&I2QᦅMRr|6aER\RB,ǰ#+וę" =1վ/~::΋K?d m-OG6n3[ưo`y_DYI]ysKQFt<e}OzbgyO~v ~-sP>o-x޾sݶ}Vz^8aaQ,_'ee/Kk _}?ގ:n(B'1܊xk*!Cx#^#cĒ{*W{7%xu=CBv]Ԅ"Iƽ!O"/>9Qb7Ĩ!BǍ6}$E+o^š*b9!JruFT k#!CuF/;+kGKRA%'W"|:h/'~Gg"Dy>WKʓTy2?s g]'J㸴L%7r՝u2˵u܉SRPXܽO"l:x ha3i.7R>q!j9:}F ^e/(t6QPa<l Bb "U,(νlHEʣ1N://DpXoYNT~"ؙ7oC{lt@czq;D9]`AQQF0_ Es!!`ȵmKMlqzO FpZŪY{[S.lyet!-ƧXDlDBTHB7t7.cWl p:p䄎nx%#r;=|l׫3T,*nF9s\$; :EHm_48  h݁ETi 0lQ:}5hД Y7$]YQո'1ʤs!U( ;kkC Eq 2߱ãsuB"Xۓg-t8~HEy읻fљ>bc)S#+}rBģ(bA@_zC]G:w`$Wԕ~p Gh:]{] lf[uuNQq'$؆H;:k>QJ>'1n:W 7mrj-}#"! J\ w:G|epCG[uvyhmSwn4&"qG[wlXuISFq]ۢJWkߔ{ebM[48'Dwv^T|!pXW=,7ձ*$T獧tA*'{yaH!(z vo-¾K=ȽtLMTEux*5g9s ?>/-UK"zk98PQqld\pKszfm'<*GGÀsP*9lQCD`k!9&pm 7 ~+#+-nXC2BXM66;Y>Lz䱝5ԩlhoםBӭG^xQm9O T9a}9(IЖ)X"3*Ih 3'ᖲ2xu$,W"۔߫\K@`Ja unI t:F/Wt)1/^Q{ڇ!tgvG}.寔"-$,(Y#f!%1E!R6K:G-|Γ+`O/lmC*Q2ۿ~7^f;ݚWqv^8N 6 Zh𣍉uR73+:~>tIDAT퓦4*bgk av>Gb\oW"սpT{\I31DeR-o~W[К2I0h q۔2/k`i.h\pg 窟/V$t<ϱA@c>oˎNWHALDm1_MSQG)Oq'!n^_úcNg&!a9Aʊ9W!;wc@@ڮX;_X'%٣"\%:DRQ"Y6Mw?WlL;nYd_}f;,((߯VqLEvؽ 9y4'›Jub9w@Fg?5rF=_OɍvInowj* ԣr zV繬ƵZJԻiX\ehףg,^q-g#Apu?O@JrISsжo.;9;ż\3N(›EƤIoYcڭMȳ_y}ҵ`1cU BQQ"%"ZB4 Knm"g!+^]~庚F!B!PB!B( !B'B!"B!BN!BE8!B!"B!pB!BE8!B!B!PB!B( !B'B!PB!BN!B2.갱IENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/hartwell-insurance/hartwell-webpagetest.png000066400000000000000000000266051507671574500324360ustar00rootroot00000000000000PNG  IHDRH pHYs  ~ IDATx}O׶/q~,H緶Y+b!(j;n@C qRDą 1Ǵ2ǁ N"QɧY6{g6_MV<ٳk>{HHHHHHg@mmmloom) IЕ빇Ah':oZ{z[x!G4RG@T>D=sa-nޖ0C>;YR^9! n~`|œ&o a8[_@>> ,hE!W}g3禛-]Lb0|go!>uW :KƒOG _ðRRhιm~+͎ix !S)9f]O7~m=NwHHHHHu0a8,w sqN/Ϯ Cj`^|o E36j8_l m3Dž:X@+;l '*Y|mK.@Ao õvy#'+>2L3PKǻì0AqtWyogk Lw!C5 H) 4bI=m,Y7!@0gt}!͝ f֩iܡ2y%:k/>+w xh]Ȧ B'ݓo+`BuguO X4ګ=:뻓E0q`"6C8uR zoBE| Hgy)0! =2f 9xf9&0!gHtkd@Yէ)l4d6c4PLڝq321/AzrROs/170ķ&S3ODFMDw7DԈ,)+j=H GRs*!=cQ%1yv{2֞MVM/02ڿ w@0;L;mH v;1i C|&`80DL\&lX{cM%:E!ڼaK}IEDw;v umLX@' Xy ;N"'Ē;/ca Н8+0QZt͡N)JqymmLls0/&WSczƒdF!1h|f,z\= >Oc18 S.qo 挓y`uuumI?G+ g&b0Tbqn r rDK 5wv +Aߦ`B+y',Qv*xh[$ikY>PRy)Cd.+N@oii v'A#S" HV&cb0 `"H ȎcO5aR?_0178R[HJ0ହ&mM.hd%+Wo\mb2vEV0OƳ>=YiHgDbb# 8SDaH(EB蒜<]s6$ט7Q]M)/#02Jx]ǝz#9,F a ^'sYq\pwt^ܦ OKo]oL>!@# z'[&X Rq&\ڹ& =_N!!t/{*$\'4>cI}LWbR~v+I%S'uؒ#:[%b "H{뵟MK9s&gDؠcg.vdvTܺalNڗfy3y Mˡ!E}(⧥5#'Aej|_ @0ȍ+AaT:ڣl>{[(QθH<}cZjS-k #<PWu5jDH>3&w{?vU#s<ɻs7o%yMr9]Nn'`ѰtD\a.9QJ#?e6N|2Y>tc;l("QG\ Yp斖;0XϊMX%m>Wx }j?}oc(e3d>x_pRF\: 0Qro'Ĉg%]?_aHS1vG0h:|^:ur>i^ؽZHh3HmF Lə4s"s1eǶOdGbEU[_Ys}=`Bk@7CG|]EW YY*ܼ"7)7h6)끑'pSW:C0rf{&a344= A#Z3w:&FayC']U@llCJdX~$2¦ ;L\}`Z;9Cdn[s{ؗĜ&P7Q7lG31O4Ҥ [Iپ L~="RNߙ`u}˶O}|3N#eK޶U~;lZ5>jvS'?_՛°PW[U 6ʃU1S]?ܿFOv86&I'$U[8vӊE?O^vuurמGz/W~glh%8h/L hdbur|J+|uEffEw[#f = +ݬ_qz_`v_+Zva5*;lՂ. 6l=&ډMQxb :V5ĹO˶6x? C6b2پp&pwʛP7{0GTGtalnL&krg¹LF/:iEw;>wv %(g9LJ_uߩTx|- q(er_XPƪ_ n/ܘLڙN9T` THGO1'z5\VsS^D:TOI˼cZ;CMq]JG2Dd`u%%Cܩe=#pt88-rƿc;T/i!ߘYc:Z[8زšx/':nzWUYLnzwKYaXy L,*"0k ,﷠DXX$ kFx=HG_ givE`F4[F7j^w׈||a;9qM&aL}qC6`%{ [B'//߱ϢuNZl9h^/>Y-%2Q^6nW7(r_ N8Eֵ:qXqR"^*ohkuOTf s&w%qN$"ɥZܲJrNp22{Fp.u+:$ƙ(yBtrju0(;1>[ L4C0$ }(XDPTeqb/D>dXu4v{),gZ22Q~k?]`VƮSB'ƴA~U<}~m L4*H.bmeMwaSMRt Lnz<^)z3ؑNjQ$ߘ*,dCSqn +}48ju \HDÂtUE;^0 +IDATLRNP}JTgƊn0.La ^no)Ei$ᝁ<j`B~&~Bs< l gܳD& ^#ĨЕk g0A9_QvLh{V9ą:UۊX鞬c(kwc*=۳׉Ґh|8{i|*k5' b-HGs?-)`^6ZL}LyVM1eP(c"'+sޥMt tͦp'nz5gN穛؟̔~KLp&3>g]2 R;.j. -]Tb -<_:va%蒭 ͚;O3 ˞;(zyxF+>&$dCsۻ05' dt2 >PR>'rtwD #u{r] p2]MvdQ+RH7u4sM^(:&98}92p*L4C;Ϲ?b2uLiDаwY*GE.9WiBο+rI^ & v|/֍-Yx DڬkktqgpJ]}.Y t8rwϓGeAyt>]t)E o0qYȧEm4^X38xGyiZPq(R `9"G1 b+,'k|Z#C(cP]8@l/Lbv<3 Q K<"foy=#wMd-Ҟ6*"l$[R`)2zqyzC`9sc;uЏlhn|IoUeȄʥӖS˂ 9]>MKfR'ƘJU5ʽй_N/'pj/Xex)]B#GpЩ}wE:e䭫TXƁeq760H7O-60q(3]|cGPY𾒘o;&@ڬ#|jyviQvPzG&ty*n<)R bUvI)2a[|'='ý;*PKqV*P $8TI]NT!FF U'.42ǢZ ~D0(nsMc*ۤ6'#{VZ&2јO:d|O_c֦hdԪ`[vncgqrY6xH| &@OqS;qꪍSfsgJZ69UC7sB6]u52`vr،z֎&yG&.nzڧV76 0q gm/a%e% Mn]0t=O4ɜ)q\q5ey\H:~z7&*NC%8zt+P IL_sP0 8Bmn֏E(bv._?"6xюDJ@t]e2Ld^c'"f QwdFMEpՉ vyXʺ8=k9(9d`'Ƽ(qp,Ftev*M /Qޖ35:(g]a9SyV!.Ӝhjȩe#^SD:$zjZE8ɴ-q(Re6L{5Ch~J^ ӹv˗LlY+9:tqphw_& fw~*A>5PxZ`Ѿ9O]m`fmou)́M Ϙ:>yiNN`۝" הߥ6ΝHT}.r~]qjN 0nyD),Brg]V]#o@!KwZ'+?u7 &W'yS2*e1eSc'3R1i鬮d}7eI?C;G L͗,I{j}l4iK=c˻+HZ5k3/L]Z{ܯmnqr`VvcchXTwk>9b[> Qйp8Mݘ*gwM)(zǢ:O ;Hwk'Gf] ?uyZ7`_VtO-^6E)f=ҷ,;'š9~Sԣ_Ϥ#qlgT#D:k߸;KZG!#KGيӒ9FFuWmp oݼqy.eSZ_ўwLjyw2R B2AaþGQ7Q7?IE0qT}y| g <ځerD GDD.=&PP&($#:l&o*$ =򏺉!@A2AaþGQ7Q7L @A2AL`#7? $T: 刄>& `Q0 ,X &,L !!!!!!!!!!!!@BBBBBBBBBBB0` -qMk!g xpXO}/u?t8lY~WgLp &azy8E`%p@J}!l:;O_ag`⏳5׍3G~v7 /wCv1qwfL;#?`Kr0$$$$$HHHHo (J48?:ӟ`E3jppX[? **In essence, a static site generator pre-renders the whole site into HTML files and serves them like it's 1995.** There's no Apache or Node backend that does compilation at runtime, it's all done at the build step. This means the server; Netlify in this case, only has to do one thing: serve files. Unsurprisingly, serving simple files is VERY quick. The starter point was the [Victor Hugo](https://github.com/netlify/victor-hugo) repository that Netlify have created. It let me dive in with Hugo, PostCSS, Browsersync and ES6 without setting up any tooling myself---always a win! I then took all the content from the design file and moved it into Markdown, putting shortcodes in where necessary. This site did need a number of custom shortcodes for the presentational elements like the expanding circles and full width backgrounds. But mostly it was just clean, semantic HTML with some CSS and JS enhancement thrown in. For example, this two column layout shown below. I used CSS Columns with a `break-after: always;` on the `

        `. No multi-wrapper or difficult-to-clear shortcodes, just clean HTML. ![The multi-column setup on Hartwell Insurance](hartwell-columns.png) For the ripple effects on the section headings, I used JS to prepend a `` element then animated it with `RequestAnimationFrame`. It adds a nice bit of movement on the page. On the Hartwell Profitmaker section, I toyed with the idea of using Vue.js for the calculator, but after giving it some thought, I decided to code in Vanilla. The result, all of the site JS comes in at 3.2KB! The plan was to host with Netlify and therefore get access to Netlify Forms. It meant spending 0 minutes on getting a backend set up so I could focus fully on the frontend. Cache invalidation isn't normally something I spend all that much time thinking about when building a site. But as this site was going to be a Progressive Web App, invalidating files would be important to ensure the site didn't appear broken when we made changes. As I was using Victor-Hugo, I wasn't really sure how to best tackle this and sadly spent far too many hours wrangling with Webpack and Gulp files to try and get hashed file names working nicely. Then; while I was waiting for a haircut, I read a [Netlify blog post](https://www.netlify.com/blog/2017/02/23/better-living-through-caching/) on how they do cache invalidation with HTTP2 and it promptly blew my mind. When you request an asset, they send an ETag in the headers which is a hash of the file. There's also a header to tell the browser not to trust it's own cache (which sounds a little bit bonkers). So when you request the page, it opens a persistent HTTP2 connection up (so no new connections for file requests). When it gets to requesting that asset, the browser sends the ETag back to Netlify and they either return nothing if the ETag matches, or the new file with the new ETag. No `app.klfjlkdsfjdslkfjdslkfdsj.js` or `app.js?v=20180112`. Just a clean `app.js` with instant cache invalidation. Amazing. Finally, the [Service Worker](https://www.hartwell-insurance.com/sw.js) could be added. This turned out to be straightforward as the Netlify cache invalidation system solved most of the pain points. I went for a network-first, cache-fallback setup for both assets and HTML. This does mean flaky speeds are reliant on the page connection time, but given we're on HTTP2, I'm hoping the persistent connection and tiny ETag size will keep it quick. For online connections, every request is up to date and instantly live after any update. Offline connections fall back to every assets' last cached state. It seems to work really nicely, and there's no need for an update prompt if assets have changed. --- ## The results The WebPageTest results are looking good. The speed index is 456, 10x smaller than the average Alexa top 300,000 score. ![WebPageTest results](hartwell-webpagetest.png) [TestMySite.io](https://testmysite.io/5a7e1bb2df99531a23c9ad2f/hartwell-insurance.com) is return ~2ms time to first byte from the CDN edge nodes. Lighthouse audits are also very promising. There's still some improvement to be gained lazy-loading the images and inlining the CSS. I'm less excited about the [second suggestion](http://www.trysmudford.com/css-in-2017/), but I'll certainly look at some lazy-loading, especially as I'm already using `IntersectionObserver` for some animations. ![Lighthouse results](hartwell-lighthouse.png) The most encouraging result is how quick the site is around the world. Most Tomango clients (and their customers) are pretty local and almost exclusively UK-based. We have a dedicated server in Surrey that serves our market pretty well. It did take me by surprise just how much slower a connection from the USA, Australia and Japan to our server was. They're waiting ~500ms just for the first byte, let alone downloading each asset. [Hartwell Insurance](https://www.hartwell-insurance.com/) are a US company so by putting them on our server, we'd be instantly hampering their local response times by literally seconds. This was one of the main reasons for going with Netlify. They provide global CDN hosting that's quick from anywhere in the world. --- This project was such a blast to develop, it's a real pleasure to put new technologies to good use in production, and to see real performance and usability benefits from them. Even using classic web methods of serving directories with files is fun when you've been using dynamic systems for a while---there's something really pure about it. --- _This was originally posted on [my website](http://www.trysmudford.com/perfomance-wins-with-hugo-and-netlify/)_ gohugoio-hugo-6abdaca/docs/content/en/showcase/keycdn/000077500000000000000000000000001507671574500232335ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/keycdn/bio.md000066400000000000000000000005451507671574500243320ustar00rootroot00000000000000[KeyCDN](https://www.keycdn.com) is a high performance content delivery network (CDN) offering many powerful features, including image processing that can transform and optimize images in real time. Our network offers global coverage to speed up content delivery and is capable of delivering entire static websites, like those built with Hugo, at the edge. gohugoio-hugo-6abdaca/docs/content/en/showcase/keycdn/featured.png000066400000000000000000012745241507671574500255570ustar00rootroot00000000000000PNG  IHDR Oh iCCPICC ProfileHPS{CB*%&H'(HQ I  ",UZŊ"XdQQł wG}o{?7s.d4[$JHfC<1tX@@͑!!A&;E.O A8+!|Y/9"q^?+C4HMr4LrMx4$6[陜$a+!W DX"|iiaIO6;IӵL [ ߒ*a,_JȝX0x))K#f#a.;Pv6ua ' |Y2?I|fX*(b0[<W!y,~x g "ΰ$%,pKKCe~q}eIR%;Ξ͟'dDr}fm"d OY,Qj̞'K2dg3rl!3  B gVdL. t&a<:KȱK`__wS}եHѬ.| v@#gNz | ԁ6&< Ā AXփ|P8 p 5p 􀇠 W`| 2D!2l @AP(CIB P!T U@P= t:]4 (`-3`&K$x9[2>7kpP%RA,P *JDQkPRT ՆDAFPX4MG[]4]>nFwУ2Fcqư0ј$L&Sه9 a>`X1돍&cWb7cwaASǙ\q86.+ >:x/>/Kg!L [ u6MaH4&É2b#"񝜜"9:2#r>Hf$/RIJBO:GOzG&Xry |I*o)ϒʯo-BRJ)&eD`VXPpRWaLhYJ8%#%%RRA*Oruԋ!fLcђiô.ڨr J*(#JV*Tj2UyTUo~TS+PkRQNWQOQ/RoQ0X[99sy kijԬռ9%*׺5]}F{X#)9LgSeTZKw\X/B/WI>Q_߮?jc`AC!ÐoӰ𣑱QFj,G&dw&5&wM ]`3{3YMs\`˼{.f\ܚ$ EEŀeeeyb*ժ꡵uuu[3M][ZV7vvLSf2󵧕G/g^Q~]>J>>>O||||GVXV=k41`u@G )0,"iY8m `..l CC(dQg֡B;èa} 0$BIU=/zuALk,.62v_b;[bdŒ+K5.=X<&>*`Wv0=JJxqvr^q=%a+<58Eka;?"T$'I?e"5*) vR$LvkHE˝X>*@% 2]HdeVf~ʊ:BqplMs|s~^^YپJwU@kִ_vhߺSȵ-}!jC[V޺~hȗntٸG6n*[pЪf?YTĖ-][ކ&vȽ@bqNۛK%%w,qԮtNNrm_+=MUU>cw={n1)f>s>}?zޱ paPܡ[6Z4V74GG^˽Gۏ157<^uzjnmƴv 8vW_=UyZ33yg&;':7r>`/Xu1K.t2;^v|WW[9\kn 'o:lt{~s.="q^OAa3>w~|<+k7om?HQ,81 @q<=%?38P @JnP^J!D`[[Hmm}ܑ;pE|+V$ssF)toM:/"}|eXIfMM*>F(iNx ASCIIScreenshot& pHYs%%IR$iTXtXML:com.adobe.xmp 3000 Screenshot 1500 u4+iDOT(XX@IDATx$Er(!AD?"H$9 AGP@ "JRDIJP廽|ک۽}{:TW?;]}8 @ @ @ @ @ z p+!@ @ @ @ @ @ ! @ @ @ @ @ T @ @ @ @ @s@ @ @ @ @ @@]@^J@ @ @ @ @ @w@ @ @ @ @ @ 2P @ @ @ @ @ @@=@ @ @ @ @ @uA{]\*@ @ @ @ @ @ܹ @ @ @ @ @ @. p@% @ @ @ @ @ @; @ @ @ @ @ uq @ @ @ @ @  p @ @ @ @ @ .. @ @ @ @ @  @ @ @ @ @ Pe @ @ @ @ @ { @ @ @ @ @ T @ @ @ @ @s@ @ @ @ @ @@]@^J@ @ @ @ @ @w@ @ @ @ @ @ 2P @ @ @ @ @ @@=@ @ @ @ @KXХώk=:T @ @ @ @@̾ )a@Xs$@C{\+j @ @ @ @ @ (,j8Qa@D{X@ @ @ @ @KuULV!P@BGa#@hlQ{@ @ @ @ @'ו˅˷v9&P7m[;C@g@WC @ @ @ @(L CK  !]jJ7pKtt(:T @ @ @ @@ui9+[EHm@0=Y|+'um{A@@0B @ @ @ @ݗ@ HOf?7ku yۖe ڟ@bѲ,~%B@@^ׄA @ @ @ @z/iN~-YˉK"$܍=Bz4|˼>EI]Sa9 ,j5q@ @ @ @ @0PXeכCҲدo,5.! PWSkkY>Ӗj.+x@@ K\FN @ @ @ @zz2%nغ]4l_]z8 쪪7O$`Y2pro K!tB!@ @ @ @ ,,uz2 ^[Ϛ&N5CMFU^*nkV|Q[Ze&;L!@@.(@ @ @ @ t-tJJY]۽X]_oYb͋N '"v݉~M[%BJ"TaW@@'@ 9$ @ @ @ @ |*=e[EDded+/3@(ӟ ZM*t y/~o IhjS q 4Q#z66ǭt/ڿyg @ @ @ ,<y2`{~y2}`T_:W>ߍ^3 ^*Rj 0w7s_5]tYw=*h˴Mo>L!@@E.$@Kय p'o6 f.p6mX@ @ @ @NEܮ CWvY{gM2 ޝxǑ/ ~(@'SݑOh9^*fW'@W"+]M:; rݯP=1sόB۲ @ @ @ @@Z,- %jo=%+%䶽#;P,lo'"mTDf@k@޵'g@L@ro%6;=k-`Fw^92@cY Kn7zl:mG@@" ]LN gVP/~0ϭ{]9jDO7j^Z޿gk1i|7y 9Q6-{ @ @ @ bZ8qhOfZͮ=vk:oy@@! 8m 0zٵM.o,[ɇ {ɱ=-to/@ t%t"VwGޕn@>@@5]ӠjZrWWR%1=1fˆU'9 @ @ @ 'PI:#p/Δ-@Z:l7Ww ry' p;@$FaU!yo:O2;2Tj*$t_XqKs6ͽhS @ @ @ P@,polne ܕ%n8̖H6|#˘B@@ިWzCD5mJߪ5ӏgFv́NE㎱U[ao6v43hthC9@ @ @ @ݑ%={wK97;oz7p^l S ;j" (~mӝ}HACǪG5AV;& 3 󀝓έ-sxq{[ @ @ @ HԞD2w ڵ>87;U޼my KU͝}3ĥ[L7j$F`l@%Gmm|D`ޥ\,rrAnE[5 &zz掶PWLUMKE'OD{w Ux @ @ @ h݋M ٳ pk@ t5  & yQM.jj7=_+W=~MTun~Sphϻ, @ @ @ $}!{@C;*EB"rJetk-}֦LS'{o{]sWϊ"BeCC @ @ @@@1\) ]GOzyMퟖY,HG81 F%Q Pw~ٹ_rpO}z|or W<q}n=/\ܦ솙8XXqE rmЯ!7mn(m@1 @ @ @@ 2hI}oh%3 `s@@$r4s[IN0~/wrm_x&r}BS8r~rAnU*~a:DEZdS99qBm @ @ @-ɤY'bv۴zhԣ po'@@E.$@ '{f89LqL߭d1pJN<Ԕ(s>S +nWymߝeLwŸgL!" 4$,# `3a9 @ @ @:8T p`@ po Fu!;5=bXY5%n浮[y^W/޺c34w7ýay"|-M(_ }onxavM٦t8.~bf2$^g@ @ @ @ p+D:cKFj@޿{ˍ虪a}uӶ6c;~dsHْ{|h uwX)~ب2i1%" @ @ @@@hWǒ tܻU  <OswRr'?v-vJO4's.C{{{npC(t~2oi(u+4m2`Nuӭp @ @ @wYPc@]{m93@Rv̋Ihsq/?vȻ˞*9_Ss}mzk}\޿gk,=w*ͼ<څ+mºnNFXlc&I3-oN @ @ @! poFۅvH! ]Rr"::ۻ]pNK""?`/~0 -}.vO>:4y+.mJ-NAn p_8~ @@ծ(@<{0'ax?1}όE76򅾭kh| /ATo aom?:x]9}sv)q{[\k9ߝwY]deĘ2X"# @~h Ф-F~uM`A=ܑw|{:.j{yVgGl}yTo7cwӋ}o>*DA~=:N}Lg|S@ @Bvnz$}j!B)py>o䷥a?w^AKx| aܺ`moBQO){'K Vm1\mFǎ$]rR,wi V8oRXu˿5M:M+ v%dAnGmrtws͍&e\E?rRi+?ɽ=>o\\ib8r@O7u_XѴmr.7ݻ0ˍޙX'oLкBhp0޿}w;$o{71jxOQ[{s(r~l@XXET11~toTePY4tq`KkX?ў[1ӥ ôZfmѸQn`nLLs['y @ O@[2> v7T] 닀 qpR?{'u;Ax%[{}8q\,w@#me?>{oI஺9sd*9eSe;MB p Ws ~KJ - \Ӡ2m"ԐC&Z}`tdEB#icFnn#7|ߌ\4\ܹ>'NpUa]dZ2,wP]9~Op?fJ#j['gf&E=o.Vs3 (s q)sݝ̩Ɂ_ǐ`c!|C^iQS7`iJ? 96z= s ; r T[~dR\*1+avpǽ-ϷF0;] M.5Ƭj08\'8}Թz9]B"/]6ocV6kN2'W?m?BWسY"WA`24n?pc$78+1 @w!Eq#pϾxܳ@w%^y@;{x>bW٤V7`"G o}Tw[ՅiܳkT&w.Y.hT4LoaC mTm]89s%t?$%v0X(aוD*a=ݱ7q{_YoKh҇%GrβSԯm% q 5"/$>k[^iGitjBs}[Y(z-$\|Df UO7;Lm9Gi}cv*$;en {6HE@Ⱥ62Tsm`؊DݩCSN$,kˏ}:+p_0-]A W}}ល#Kߕ9 W~";=hVEۋp ҋ){>4WKgwS[ȍ՗L$n:%t' @Z5M ow6ZPonžZmet6龾<;yWgԳs8w/1fRM\/}eI\b%XyEt/2q+"!h^EG}!gsa) J{w7 v ҷq wjX)#Zy~z9i5\2(œ[9;bXnnkad9[s.9ˁp&}]tg(-Y(j~bn03=[/\E~=uw3mr Ow9H %,jXґ̬sI` Zȑ|OՇO K[UH&~K9]d:lW@}#MNE%p}nkr*֕jUண_i{FDbwӻC=EϼirC>{wQ~]_Kሻ;a}wI-]m"1cPZ] @hlYW=>g~9Lu,W=.qqy=J~A<}7`X&29k#{Z r{j@ xI}T ϙw}`%z/kp/01n1% 6c p/1~O w=m/{ 'v?-35~KԲE^V:W Tr~ xgg37h{Vcw3^Zܲfc:&gMIW_ޞ~k}oYWT/z͡~#"ӎ?2n{||)[q\3{,KFjc]an˕m?߷Y:bA2!4.{9 N'5z1ݤo~~gҲƕ*ՃQޕ[Um\l2:20)y54mJ1-3%. <޽om}Mu:1~s;rM}R7:e}n?5J?d"RC߯Y:#݇rp_!gl*;ԃ&\0U⾨Hqߺ9[Ϯ!l.,-Ⱥ&J{R;E>|cdT/ww:Tۧvj4woc܄yqyCZ9/Ѻ{iSִ( _nnnLwu\ @G`/s;ZF03Ă$ cIy~63]bxc p/7~O*㖍#pwo~^2h3̜^a?>^[߲ntҜ3˼`Hx|bAnMտ;t۬??_˜xC_QT,-p?Su?t~>}iNϑPٽ q{g. @C_$K MJĠ""'%m9o/lE9}nT0j;6`[qb/}9{hZeZ7Ukxi^BoG )ez}MU}q_]O醊xG :hH7 Wi}}>nA=7W9?u{yIO7I9q(vZOߓ繧m3 5^_,u"]?º?zVFQrtK.unz 61 \n=CCz=>kͭDU~8uӠ?RA9l8[-o 4OlZmEyozqVr|-w]l@ƣv}%kNZ^Q~ .{Ͷ}V~HC-Kj~͔)$ d'>scP[[f/pGt跐>Vש݄݃ e#}S׷Ɂ}߫g5r{:1Ēݣ]tu$;Lg3/Mz9is{keJrҳ܇z>f}gu]ߟ z}W^gaЮk%8Ȼ|>}.(9NJ\)]ƞI eɳW,8CuK4:{pʥqR|eWI.ǝL<+سXou_Zﭶ\v;3힓ayL Y\rcaQǰqmS[tߌW(U @H\{eNj Ef&f"aըmDBBts[^.gm+-=kj$mFEۨjU +pmBo7|X✖v]1yk?\ҭ6K6[]X[{U3߳ r6_6Fs)ػg}g_]]+ZڒKH4ddjkXw[~+ûEK]->!x/"pw1iڀ=\7k?aY73{gP6 @]UviEr0WKSܳ-n!FYz9qRHOFT$ωR3\+0 Ĵ<}ʄsLwR:Jx읹wg~N]6)|iQ=KX~f;|>F%AGׅ;@зw5a p|j?/MebEm'@jӝ 5`"po^N3qU#jw"ovN<|U%_%?D܈w5WoUC'~u@5҇sݩ9"f= ~}Qr^+^^`f~ }{763 9{tm *s`{Ro"-sTz>en]kD滮]x3}[YzՇYR^ f׷jKZUgn9̕O,B, c_YuTk6".=ͮ\W[z~gO#eyZkG+ԉCs4G\^]B S QGo^nn` D e8:Rno߿R~Oe՗nD"NW$=|4D;L!@gT]R WX6l瓣-wVs ZyY_d8]{L=Nrec1jџ!fUmˬB*+6s3R^_O>5.unߝFmjC o3|MN}vqݧ2ȋ,9t}2o]2+3{-QD஁K-cD{r5h~3~5ɈԲ_{l=(R C{׹  EJ Kp:7K8tiaH Ƃ"dm%.\&Gȋ[?YBp g~~܂Wpr78ϵ.2H̊2(qZԠ{kk &9HEB^Rbso8ybrBYĻubF_N%S-lߘ^ XIlsy"v߄&+M7O9 ˩N^z^.W$>NbwJ׹ǚQPk?e~NNnV&."p r~*p {['E\1w,d}~ 7b@e!`sP_ ~VǮ ܏ݤhTU3=[M·:'I_9}Ɲ&U֊X.%$>C֡WD.ǹKlE = Os{ ܋vΟ`Juo˾-u: S4  km zw\}©NKl=R{i]l(WwrM}m% @h {Oo4 vV)p 7\6Uzt$EV;fѪŸ hvm;tԶe} 4=lINyϘ zA>mVBCZgJƻ?e9lYFv \Ϫ/} ]zPٷ j983Q&8 ܕf˜PG펽}%!:)sye}7mXYa9|4@, u"Dz$debN:gn6{8rk_D~Wzw2OlЦV{qg_w}V "SiJE;weY Y=디뗏P^鷉OI;_1i i}*Mqp/ѹc7 9%Mish?r@-!@ڛ@W2yjzm/jÌN2E- a~7ַXm31W%vZy:Bn{ӌzsmgVTn)oKZI};潯q_3X(-L1.vIJd 3Y+"p`%룎3+[9open w]1Lg.~e 㛟~:r{Gҥl@G{]3j @.d gC 7tJg[NX–ؼxƛ:{7:r5 IJrAKohjsb(jp8R\nTq9sd(s-`#sD|˜$zR "EQ&R8߮MѸx%TG/'cn#GZ0$"q.j:˝WggE8t=5WvwO{Och*pJ_| 7eLDc9[n7+y@IDATMM+K{_J9X~ŒN$dлY}6vA)ADW>,WlEǗ[Oss}~J)!2g!=CPsvŶI[۟g[5i=ycM.%S]6s}/17MK| ܤj̞2v>X.ŭ9sYn;؀}N_ÉMNOuh9pK?>Lޫ+r;p -W*;U?˝eon7NMDrM}nsnb9(U; Wؕ[3GͩLn46C,u8[U<ܷ*po8O='p 'g\'װ SmQ{=zKt|h{5XASm>-3,}_9Y[X a{VNc&Y~8S JG[Z!pObA_?Ȟ Fox Po%cwJ} 3Z_!Zv۴֎Lkvɡ\}sXq}|x=[Q&L=i r;vkbpQd=/$pc7I5: _g:)BW>Be ue#,g[tla\k@n70t_]kZj{~ĝ3G1Ɖ6(N} ,U dԳ4Ovq/#pOS;k?gZnxaV2+"./hMRQ^>@YE۠' 9iSQ6V?8xywq=tgbݍ3 @68{ziËs&K2I0FGujeO3ܫf Ym3q6*}w冀ܗWnW@Kΰ0d!0|{>C?M;a(V+ Ô!8 8cl)Mmͷ0M&!p76Y] 4G'¨&p|6F_T/O ~2= c2s!NFDgg1ڤkCk>/ %t_}QXF@](k֨œඞҚ]oƒZfi0'K[ㆻFnyyDC7?W0c Bߢg,M/ܦ䠩N-YqedM>4&NeMWZ;gxswujs*urPܴۚ}ݷHW!N ]{f C\%{VҞ&;t9]k߇0$foø*‡kr <}SXC1`΁a)ty=J0Y!׸,aT<$j|\ψr]]g3\eY;cixޙ&Wq&< NC*pxwE48JFZV~eoJݟ=i*{Lϰ@-Ynf Xl @ q$NWVX]jO<&7Ŀd_˨ u\eUjgk)5u&mjjf7-VtDj ߡUیc6*}w突~cNzguTfnz-zemZV2cy4^3mL{Wbw z9~y8߻G5¶HG8e e~Z/Ç>6 pW{+?3~X3^jߑSI!4wͨ1 QwR.myq/5,ͣ"K[M.G~\̱\PT4j-v4^=l" -t  q_$KS$3LX~vߪhwS81 5"mjqL_Ҽye'HJ,vYp^J7syQKY(vз(/pW7LwjNjP 9AVy>Hp36IEr4 xqsYnDyUo4m{ I-VrDyz ,\~gwJvNxֶyY|߇wqlAn!`/>$pנX$ӂ̐KyZ;.5_KayvgX yIvS7/+r>uSӖV[lۗM|x{NpZFv!o~Cd[e/8HJyTb]HWz^#ήY~eP:8s33ݯ)^T\e11@?ekG_XoXqy^% 쩙YLu2=~r pogiTW8-1IF-B 4~qCMٖ qH%Qʍ<{`q*uFJڔN6ju]{o+Cjc7˾8rK̯LTkoc76U,k Fwe ͊k-K@Ԭ[-ɤq+q\4o:X{QM஬nSG$2?^fvj1߿[ 5+&n@0^0J5\;*eBh\Qs@J]u;^rD+?)պ&>(;si670fO/yLj+Hifs>=$~-IrAYsP˟[2j܏2B1>G1E>uD8$nȽHTƕʐPE"!MП5ޜ':G-w]Un=>\m ߎi' }uꈩzss~ngPc^!ٷv9zD)+sۗE>zzuxuxd/1;WoS]uY|wVй\Ḅ0i=#mN_:.hة]:n"k  5 b?s!kɇVe0VgY xVn؁Ch#e5ײuEwˏmqp LB>b'&(=,CyweQ0~ܬ$-r|;Nx{1l?y1:+^ؐ}w[`} Nvs)w7:O- s/83$D5f 0ܡ/XrրYEG(p"s9:娖9gUK"Lu>;8/ItaY9m+_K&=o++ po&,j8ca`wBL!@žnKswO SYX摋]mnG3jQF'K?:L4:mƟs-mT~:Sk_b&fS{?ZۄM4 ˺ ?{>3ayGn6{Nh5txL538{~"#J)lzʸ;Rw5纯\1%uXv ~mBrcQ?`m"Rȕ]0`vX'2"jy!juĴo(e@q pokEM!nݳȩʅ"rlkO4*R sSPHW:Ov/}ڗ%&~tAҍ>y*fjɁ~;5-#Z=^ϴ" hx& G/w$'[V9sde}NGY4mb"*RV E6]@,Y"p00W5NZG-/nkG"2fwjjb~b2L{ DkK(@zܢ rS'繨1ڽ/3g0Dy;'I#ipg׳ݺc7Jm 11J& r5h<Z:c&2#ܾ (lF|9K|9'Wgxk3}ثtL-{D?6~Vn=iQI9Bho1-ش\5đ%pϺym:~lQ{LBy*6:  lҒ9 . w\; u3-1_ J0C,L)|-]qݸQisJ-GOH]OS@ !G#hbe ۫@N ]A|eSTe~O~j]{j-J~DKejKF2LSxfM0~_a piToiGK&Lg+~l_²r+۵Fv2t;ةR.{pop[jH٩߷~ϟfZ0Ae\{iG s {gy?rRe O2dơ6ܕ~:4 ާ>#p( @1 poF!t: %@#t^::"nWg:)*tycw*mWi't%&~~nJᕎWts'9L (췰T T7H7S[jbnכl[A^&kPD޾嵔%15&F& ,o2H`1ݤQ٦k:ZzqMr%b~NNadK{g56[ZC7H;qܸj;M^lϹy9ȝkֹeapYw<čD cfGp,[Q#*.+\ka|WokN1jVhcNjMܡҗ*ݪ:=ђr}Oeuߣpg ߞ0=h/Wyk.oEqs,p`!uR%KcU[ܜ=vߦ]n)þRX:yy"pR]J¿eqy^c7I6YNibOq#Mn_w[t9KTw^4``={*Ӏ0=~3ݐ @h |D}f_8ȅLeW;_=rY }T8:~^Tm3jmuiarhTZh{\́nȴHVz_ , d rr{H|˻h2_bq Za!qɖM)2&pv2_ [̦v5݌_>3zʒla(3ӇK]o|ʷWF8 Iz2?ZWfA@.]}GOw4aʇ X7'&h%jU!7li&*']GK/mq]3uXЫsWOTjpV m~J"!v/j@uX3谓eN#Q5]SiBN[c\Hsf2=b[LD5Ayrʒ]QiIV$ƛ @ئk:ZYNjBgr!7(w\xdw t5JC,ճG|X~dO{rkݜSƺ #ǫ$pJ5,qVHXe^_Q#ϻwui| bUsN$or2u%`}!q~S)C-s:D]%pywj;Ņvo,ro̧ĥCq{8f֩ۻ\߳:vQ\V O1lf&*}Oz`wr*Zs.B~ܦ݆˦ޛ\AqjBҕsvr˾(bqy^>x)s{\:r`}xo˂1˛vKg#:ȗfY#p$n`0w/r7E)K{w2Gsb  @wꟹbove9ሄ4Qo$sk[%QD'jNRG|aϘ|O ~M;Ԏ_km"3$MpS:u=7ZX ܵ^}S_Y{̠1DO7m6vJݔ@,FJxb$==/MN"0QH }jX{g;Ѵ]BӷjWM,8io*w,)!!&ܕ su< dtWg+M?2'0n눸CqZ}W|KJwm o=8-K~i1Q.߀a]Ǒ;޷;o}܁߫Z ʬcws5p5 Fx~\9؇]&(O~\sZx}|'f*p>uߩ񀟵l)A>9 Tb7+5o\g\uSy5ͬ#:i"JJ<`J E/qy^{_z #+{x/*+Øf.Idu4jn(#p$ۮ`)x~ J0T́]zv~V7< @A .kyIl?>NjkΧe tzS3ݟ诲Ծ'k[SvVی_mT~8J1{V۹ø²,dc:o:5DP^R?*makmv8D*}n2'KD.DYYGfyW; ^- ]{Xv"K4/c"٧A^$)@ k\G@"ah V#Kx\FjJEioӝj=/\{ߴKp޶rP]8ąYn}M6E2?Y`_ɧHwMw=5aNr-\=u"kF޶mr^M^KYJ%YAyu6xC/r-lӵ =Kd==6~[./;%n;/INR_UE7=˽& Js#^ܬ9˱uμIb=] %k+ceʔo!&d}YR_nf/}]bˀD@SQ]̲:<{繋?ޔ ѽGWߙ%қCYyR6+XׯK\{YPO `9h'>:/ + U^^Gw76D׻yO1ЭD HYu^C۵/}%m/c?]ue[|hG)wOyw90$hbof$Nb w@f3Lɂ.x陭Pf e Qp[!y}5{Aa(m6&=+MT@ 8z(O'JWZ j[eW;EG8ILIVD{*rd.9n|wt! _3~DH}:m׷6*_wj˛eEbWEKUƻ%Kj/;R8WeTm4|, ,H2p[!j-7Է]g.ޱgP-qCxwwӳ0=Wܺ$ }(''}O"}.50k2e>So/R{~9V{DZd@H{#^5 @Nd q&:K4m\1=9\4]4oFsIT8 /1fb跉Gs9X_$y}ίH?euNi>c]Afn)oVy K\*i9я.D[G sO;1.sgk5H#A5QzWWRi_u=!p =SAqz7?߶C^9:剠Ns? u|eQ'Ǿ-|8YE(ۦ,j⢁X t. )i܅}(= Q _lMo(>=- 59%4~h"c75oU][f˪~̽j)k."pK } JgۥSV'<-O7AƓPX֗՗*.:@eY.~]8߃xPi^ֵ?l԰dGjaˇ'MHoHYҬ*-{̌_%et/K~C\d_' |ΡOe{Q,C((s @C{\+j @. }9g`mnnܿm6 .qpm-b(%9n~)݈9>ݡsPB_ARLEBnzso[{}?pLoOt]s\ @,2!Q9;jD13րy#Mٶ\*mL,pW}zwUk>m[?gWrh 8rR uTS.t4U>k-[\y~,пJӲ/"p,Am,pvЦuYrCK!挳? ppD8S9y|\ȽZ,3@v]r5/n5GVn=iu.w"Ǵ,p׵tNÌQYG펽'(Aܭf:j7Q#zZ_;]tJ֎~U,Kˋ(@SeC@ ˩l"-kLn=?Nə֘a}/"ZI= @|ze1R^L|NlxdZ Y78e%.9wKD>Ǣn _=*ܷ;E ܵL6εvżfq_w-#يە-~w4 Xdx^ڠ}s˴e){62Ulb72>:|촙 q20IJ&2|nXfhdW 0*?K~Zv?ßr{g_@ pAm 4?uxx'+vY4`qZzt^L8bf_Froxey`_W6it+ssN&G͍zتCsȾmt\qu9d"uLL]-Q^mDPDwUt@Jsb]!9m9K9ʉ}H5k|dڋA2wxr$p~=\9t[MAM+sP'^Q˜7WI3[m*D|L ï&8"W{z+>Vǥ3+$\.|r`5ƮZ5%?v}v"Ur W ߗnulY-t!鬿L ^ežWj?U˰2(AO(-9u['qx5Uy%/T/ Oo?Yѡ{$T~[MQ\+/qӝ:9PZ׫v.wҳBg{\boQi&ozuQGNӓ6m;}L1?"?zٻ8Y^g Fq{Kh>~Ƹ&`$& .yh"Q07FP wߙw3=Ss瞙SU[=t_qbg`u\za{S}}J믿+}{S/ Ǘ{ewA[nZUVqVpoI4?u]j_*?rt㶱^7O:ۋH"ިr~SyuMx#jcޓ/>Ȍ/u^,!^:};/M}ŠW.՜e?滺ſkoQ].rg> @` D7*z. Ӵ}3W;jqgw܎]JbwLq-WꮿDU#pګlss~{0}`\04B]/ɿ7߰ezo.FuM_/1~;A۵U|f;unQ55=#yA|fRiqVA>d˿E]~0*6'vT*?8W;vk϶.7 3c 07snT @T6M9j%{9. ܔo$ߞ.[-mֺͯ?$.wqoQ' /=xܹ^\P|C'Bz5֪uSZuX&T[\*UG+C^NR\@{\H5qhksw! @@C{g=.,L?pg5~`{>Q{]վWbv`8.-)IU^ yL[3?3h/~nRb!}m<w;].^TmQ"k;ڮ|\Q;//iv/tpb $WG8բ .h8_[Zfk^Q{O6#VVsTڻSCVqz軚Oʕ?_ Xun+?G\#_ ɚjq{̨_quEè*O{V<{]?L#O 1}Tom+^Q%GP_m|G<:+ 3r NwEd׵j.͋wd%^˙OX2.m@꯾;}-Wl맮mP~r*m Սrg}9c:noO?8,A 0tAVpd[%0@\q^.U[-:w"֢a"Vl-* ^6_Ox{}2Q"nSgoM[0pX xw53W۩w huo|h\7zdu?vu:mo߼ϊtx2WUcs;*vkWbcG^YG5f=^΋}˲9{ZY1*F6HugW8k+>=H ~. @@TzEw|kV /{Ee]Sm IkqNg|r2=6~ldVgF @* VurIf]nEώ5_P ssȽW3.w @=uMe|Kr(ѶMg~nYxw5]t,ߗYtN\wu @b _ý_|/{ɘ_B'LO=X\m钩/}~WX\t{ȕo|yKons9)< ~X4>Ic#K%y׼KDcٶQ9 @`6gC6 @ mWջxMy`y %hiVN6Qi=]v]p/>dF.к2 @4?{št ooǟw O nvVtDX 0q x@~w Q @B:[u:(_o=;ҍ+\5؋O}?~xQn岑t|+pIJtA=ry76柀;' ^nF՝[|+[WUܿ/d8~D 'zcsl5.mkIJT!}̛֗׸(dG [ ^O+oר:Mg! ,ͿOw|k.I{5W䋮?mnZ!nU}nO  @Gq}e,iܡ.j=߅Σ^ "@N<&  ɳo g=`E#~t`ٙ.U[-*Szo .U3j(W|ck딾CV_)EvFD+&^cw525ە^/=Z7*S==ҿ^^~B=fĹsl֦[}8cU[NJq1A?.GJo͕`i~Y2 @Xr]@c!*H @!pf( >C8 @`H܇:, g]W~I:3sxȊtLZ7m{9l+cc޲%ݰ yO9LO?=)mk w5W y?-*֞ttuO<<_wY5~/]m>wmӶ5;[ xoOne[Fx[Y~Au; @ @ @8ѳp_ @`g[  Wy]S*#,K'`Zׯu4]}_O<ʏ_ɾ&&Ga3]%G @ @ @@U@azq /h  P' ^'z HѨըߑ1=-/}F7u!2GalW#/i09^p_Y }m̏ޞ>xB 뱵xpD{EVG @ @ @h>?i,?;|ň昇D`J}$^չ_~LqGEUkr IA(pڣEX\ǮN7];镹RhVk/zO_vNڨ}D}P'V{Y'xkͣ9P7]t\E;Gp>*b?0ogsΐ{gmHk?+KTvצ ڨޚ=vM`"^ O {?~rFa|,' P\@8  0N:zyYg F]WUptY ߭r}ܵI23NΘ'tYf @ @ @ 0zc~ ϣseWf[`{; >ۧ 0oͩ#?׾jS:ꐙ W4U3^N~U{SW];+Ǟnu.8Սfw?~lnҶ @ @ @ 09ެG5{7-QzdE`XZ*U٣:_Ɂ<v.f @`܇t:@TULڠQA=gݿ?/6Vvg%iΨUg]r޶ڜ @ @ @ @`Lpρ;fE<Ïon;._ j7 L \˽J=suevI/SX ,;F pYc^6V{ӪtjG#7-ɏKS;>-[v?[yˏ;!odc*}Eңk}K)7ٞ @ @ @ @`Lp`{nKxYذ K/#w#t^ݝ 5x 5@m!޶CT/|(ņnJG[X ۞~6  @ @ @ 0j퍀{{7qŗe>}!З7zՊƲFC$ >D'ӡ @`6oܞ"ۑj7sb|gۚ-3߹ay~ 0N}}wczX\ @ @ @7#>jfȽY= 5US}ptk̡@{f=cۣx}"AFؽS3 0y8h>30#'IgńC_"'<=wY+&;?ڗ>=ۛntf5t @ @ @ @`1wxhqGϛX0iUuuxzܽ,,Ǹ>w͎ty7h+;79>w} L} . >5 0tɫ>ƨn~9^opBgnΛ[b$xeiꑴ)W?Q ch_O7n_4 @ @ @hZo֥ wGƃﭐxL8inhߴgy_ٖ^z͍=j[!Fl OVpϫ5o - a9$o*p5 @ @ @ @`=*jX#_ ǺU~קYòlLϊ\`X}L|ݍ6/jl>NޗLVokTt5~Gap3 p}{ QmSo1  @ @ @ @^!C+>di+S3ެl35|zuO`B` '*p{lnWp{+ځo浀>=vs'pYc^VD @ @ @ @T*d`p{[ˍ/Fy[hC`{ OWDrx>~xEWB8` P\@8  06Io}i+߰e4ҝ˛ZGf/  @ @ @ @|$ǫ7NUCql11?L GF@`{C5xFU}|טϣ5I'@p` 0' ϧa_ @ @ @ @ L7UUcf{ă#X$fk0& @dԧhoӆ۫!ꆫ۬7M ]@}AO @ @ @ @ T*q]CAec*mH tAV`=Jнm~c궪mmH@} K @ @ @ @ zcU:?ӽZ[o,Q֜?1|gL}"cJ_L7oHۓL 0$Cr" @ @ @ @&PI7&A|s_ys: 7ӭI pzql";U+73UwI4 HA @ @ @ @0 rod~Om yB` 47^} {sW|ƼڞT;L @ t( @ @ @ @ @%ޘl[ɣo9m%L(%x5NcjPboic֬Ǝ=)!@9ptC @ @ @ @ @`0j`=l>oF~[}599Qf2$-->>oc=9;l 0s| O @ @ @ @:ꍧyo|:kb3'zM=`Ӊw+I`PzWj7e)3S IA @ @ @ @"Lonk-,9u߾Heo{vT1I( >g1 @ @ @ @  OtML,8Cfקh  @ @ @ @ @ 03`c"@\ KӻO[Ti:t+ծX(?CKtؚ%iy()3"mӒ>FSm?ޗ^x|I8h}+~m @wAgP),F?jU̻/3#>cKMbOilTuNk7w_հsÖssMp-ݒ ڞvZYZF޷=]|՝FE,𿟸&ѫ-MOm{;y:9xV\?|}.ϥo?CQXkEq6.I+e9}s*zf#ק~>}^F ee\ky}Ypxwj?~msd @s)B}ivwʇukv,a9 D`ʑ"Ann,_y8'@iϟ36_ǿw{^CE[ޕ~=ҿ]?m]}ԲnkϷle!Q W޴?=[1 \w,>wXǷ|k3tK۞6=0{ky~h:-[jW;u_m7  }Švdnn\<1J&0Ti΀z57б& @P7޵vuﱍa,9a7(@ߙiiqLw1p}^wH,J8'e9H/M|Ɓ.z'ws})8a(p/?CKs O_ߨ~߀_!=\*϶eX:SܡG[ L'r>yio: @!06+Ŵշmv,cf @ 9uDWkssMz΃Vθ lw?= Ff[@}ETpcV?šwyGSׁ7a,8r@TKa;V;JPUK>imNB'~%G;8폟( (*>;X;v}"͊ݧyvcW) 9arO&·%Lr$79TůAF .A=AHA+-:k|3uWKv?PTE*ڌjo9!G>ac@@ @BFɦ(lh&SVhECy@@7_9. _5  -yJVRsk2eOn}тKK [&Sˡ+D/D =Hl'vtDO%\u}}}︖YwJ]Y8XE.[#WkۄoUoq,A@ pW   d}:OqFzXԝcYm% [M,ܝoz7-G0}F:mzF  :*Nw~o>b  I {ϡ/(z9DQ4blu_F\>$PD'`{~J{k=#ڻKC۵=x*ti'val?^Zu^*CڮҐU @E@@}۬ITD ,iLm@ D'?Xhn)>EzDo(0H%UCW<7<.3&8O4|^ྰ6wͥ!pw 4Ib>N]Մ:^D@ֺޱ\'q3    ]F~u ߀C;u _Ww|5ܕ!rbHJK  }fь(=I53~C OuC>"~_>mtH@qeT+XN5Mo(ZpCsnޑ:ܝsGJjgk5I 'ICq$76D2w֒E?,l)}Dc+űj@@@@e5 2ȕAqDzkhJZVx^n] @\$p&Yq+nP/M-X'KL9a<`}W!V#~lyn%D4՚D0H%]L[r]s;L(WA uMV&2 JO|~^}H 'F;JRp:U;>͎o,gG?m) }uڟD(xRΏNz~y+^v'ˮozG,A@x6    pODA@ =6Y|Zpexa Gٿɋ3Y~ιN3ezYl-İ}G007OR+ow<.j&]gmfq(wF`D0o[8E'XgOewDnmt=ԝ* *:gDr `[wDqoa !p[!cpnF^  J5Иcͯ$#ؿ6Ȋ/DGr0h@h}"~ҁ=:~=Xy @@@)p%ΧvUeqC4kTagݳMEE@9l'}ڜ.{۪Y/pq,=z?x; ?Xw4F~Q%o[(n*@Pł  ]DјEM/\ՉWwVK05[JqJ7*~7d *8# ܧ(ჳ trlavo@…Su5P.QE. ^oZ;DA%A@@@ tEqEkSޱ.<:s͛/˭@ i6=;vq֋gӰs1[d#GvN8&E @h jŹ:vyH@@@ 8 g_Dmd>] *)a ܣ㇣H @.:Bw*u:>O)|�t]ڰWN    )J-Ew%b E."bg,}g׭mX$;ܓQ~pұe#Á>S5M.#6Ϧǎ/r ZX!/` Ƒa 9Nۡ   eMS;M,w,RJYlӣ! sF'l,fOȔ"|>e    ^! NE!d_-;~}yxѾ!o0mQa@@ 1 @R@B8w\&>ZMlxeG$w;e?j;$q 6zT.L"@pwp=xV=p t }6|wYeL#YJw.o\P?$w\k.ޜ"b. pO.*(SQmCҺ%Р'n㟮#;v\O?ks+Q8L&d{YRwD;;)'{܃l] Gx@%d[s^&Y.}"vf .A:]}ҷ#=ҐĚkesJleN*[;~ipL\%DrfaOvZZNjڨI< ɀ6]PFm^oHtZ(ӨR{'N fSi^UFwe܎r-YQ};&=oܓ슾|x쓝FxNԶCϢai3hr1-D"r?.kЃ70!vȠHH[n.aɥ{Ṿ/&ЋO6x7ymG"9<}=E# ']Y@~IMg%9(ĩ᫿̘E5GlMnE亦SAV'ܫY 4e}W Mgn:a! c]FągK5PfKȲ7LX$uNY*;XKGDGoM{oEۮIgD!mo-|hJvZxw~ =:-i d;kݚ|o1+[[D>;`il DmCy.9ym3iKv[AxD._gy:w |aED|n{,ڰg3Y_M3-mTum+Jy1cܴ-dL^mf2'9zk,*kܻDܷ'1s(]B^;P=go{c'ouJq"ɽ{Bl'S%icEs9q2z؉zqTmo+Zi[*' {瑈#WJ&tGk&PߧĹp[%Rv)U흕ص@1:@OA;D#Eƽ"ʾnv}ԑw%3,Lצ99`ɅܦF6ɳ8yE+8N..#VƘ2ִkdtE`=td!IME-=h:4s/' y{&_wCsNr-sik#f?bڙ&^qqy4bEP4W'Ҍ{r?EIΟ7a,T,;o^5j;yGw"/Ȼx ;>1;Gi;u !pb@@@ (܃bF'oCVx})D6.ߎuʩe_Ѭ:H Vyo2g~拾Dَ9%Dis.{̾ sKhym")ﶃ}SǪ_sj5TW_uШPqס,q}%5ů֩Zzjy8 Dt$J׆Jb-pMC:{1TkFO[{jB$-+\[ZmfssS5C7ͦgGSw^4@'g,՘ &9X9QQk9;AjK}M +2&V&ZoL'=[ciפ,"c/lEcg/p!T,38D#Q/Y⸭rhyB"ҳ){B:E9v;]"BXlI+Yvzz {,ΡxS,>ٿF1}+5"qyFӳ[3+̀?'rq h[k lK]~)[wQ˟'dm;E }:i,pPsݳM@T p  IEbk)x0iK$~d:fLGNY$aVچS# iQ+WP}vҖ+Bc/_Dx vL{WEYIsB~ ;ɗuf,s~vGtZL_y<!:4@96Vw/*pDז(X+ƕ#F_JP$2j lg93-NvcX@( I(p8}g?M]\Jtc #,zӳ}tߧδy,Ĺ{{b2;BmQJwWNL.$88aPw:&=ﯦ5:oCnՒQ~>8s\1&NGVGbe2[5ǥSP~_̑ wX,A{;ǫd;O:    '` ;󃺼HԹDwT@=8l#`G$;'K*V)SBsX䄉 ]{Xf$%73>nn ~նѶwTђj/EB*MD_/ыC Z;Vc]Df?YoxT@@@@ 7ZtEqW_:@@!;ɀW \64&~!%z\[Y^N  4B@YiHaCV LͮqtPE#DH$&O ƘX2 %jWB}mݮ}GWl\;lsE2(Z/rGzmk(i9)pwieY.|Aٙ'jh9R4703^AWt hĮKjDaK?F!R[э{H'?̌I^@'nqUus^3.:V:Hs%c3WH4(pU̖Ls t{Nv#G҈-uE_J۱)V֧()U%/FjZ3f^Gg߉IxGcފqe$S9q 80Mꡎ-ۊ+Mᙛ:hc "oX.7MiiqJ}[(;,^[߷w}+pRZT^>D'(EitE@n MYLvP[ G?C!{=G5xU)psI~ɵq*]XXdBg3'İ w     @#{0*  E@+b~i $+=Kd2v"ۃ7iӣw =EK.LQhl'mr:#{B)zu1$*Ny>y.lH/,ݪ'kHa]#/,{Nv-Ep1?]xfMڲѥ{fS3ɵ҄+Y7~dž#p`Pwq9~J' -Q&jLfYz3/MwΩnwM4uv*pj|;u8`;lgK=8߁'!!ov2;/Gʵ}KuEBLdݙNt]Α\[N>2<h uFi-ͩHoTAn@@@@ pGJX@@"P3(g3Q"ڥD(`CYp4wy#rk*XXF&rC-2_"/V_+pkUp8RITBpl.\].QZÕ]Zhp~']Nn":i,엋JID4UbV )S ;zPwͻX_]UşEmN.v7sT1]+%EЕ3-9⺌{%(Hs4NU}`$]+d,#":pk+6si^?CM"+3@LvM{0stV!Q\e C~p^":VU5gAgw4+j    5Dp!Oݓ͊J3D.wA]wD)_="D'6GQ [Nkj$/׺dl;J%ele%DL*/2(a# 逍C dJpmDa2nJ[n@rݝk3IdnP{̣u`P`iJ.iٹ>U>I8tE$g~44{eF"Ed\<*(b! +٧7 Kacjr81ȵL$.y(ǮZ;}"oizk|s|Z"]W!p^F     @nO͋ʁ@tN|#eEEIPD zf]Ӟ,F 0f:j[-E^h?]MSO?_^D)";R"YFc'oCގ|H`{2ɯ}T g^",JʮŎ3R3G ]"6!9.;Dcr7+]9MƖE- ?4^cH^GnCGkiF*X2UV*vɥu~HM ]F9gr]F+q?l߭7rۏ9\7qJ3w˙q >ől9{K|8B84A(1="-ʝ6;⼷ݜ.}7]Ci92t-kK➌e!6vG6+lYt̖4l쨞 .c8ReX8,݃.-7gH[fCY4+𿂟gE(ѽ8lOgჳm?KXuWG!w:[q|=ScYWMdg>7덞}Nt1; t{r+[K|?=McȱX?ȳalu =|~[=pDb  {)Qpb+#Ft+'Ѿu/K͉o/8{Xvm5" ?]"O//V%zDG=U> @BZH&&Swy(ͪW Ds/G,vgk/NlW@q`+>%TK,$16Ϧݮ=o/ܥpAzYubt mQ5M!@yB:da}H>o&L^Ï]H6Pdv oEvR.B>hׇ~7g-R_ـ뾐8i20nѭĸWč ǔv6,qj|tS27d'j5C'l%BfDb7&c̫ߩI|gb"v,kvmю˺h.sZvA>'R;t+Wi0N[]n7<+xDol13Q2[ *WyVoj9GiOǏA@@@ 4(ĕqŏA@ >5@,"O[h DU|M?.vLq*]Vc8j4{",ʎWn]O%޻0n43%]f䖊kBj''?WKmdk]wŁWkHN˚hw,.(Q aa7 3<(:,ץ%9&Y#O'.s{pT'f'촮]ruuO霗[ A4{4plb{֐ *i$-3d/ͷMy]~ǐ}Ҩ]E@@@@l4 )@hdT@оԕ|VַSubhK:v`. s/\E+]Y.SJ}j'>N "R05wl pP|*ŗ#)}~Ac,^\ NeSNJD=2.J4wV'Q뜴E|e|wj5َŻ)hffmr3+M=o/ \N|e>;[8\+i}vZ.tputfBhw|@b5n>:k1=R .-9격Eʙ[Lӎ~{a[";iK(^[/~`bns>Wr3?{5ډDFEiMK.p0hZai:KZ7o!v:]{Nx&̟<_?~XA2ٙ5Mҝ69*{d&E1ܣcon'vSt    U @IT((OӋitm&&XcDԘDQRFoD QƿYO׾So~/E% X߳v#_ Mi_KM],%ʃ6ɢ?ߢǻߙh ,yƪ%ʠV˱bZ{*^KL졚by];&zB;QN"r}/SDLTLUtafB/5m؎(#Y.5TPcoL<謸[, ܝ_PyOtf8s[oZl'\(>v{Ff:vrjM`bP(`VZ{&1<<݄1|sEcN$YnL#YJoQVg-^9kQ  Y{iQ1Kh>WvSD_`':ةKFmTM;Bf~Z8\PA+"On+X<@<?F}54k E.XJwy[)C4w,MmT`ICoWiV{^?\!<(FK DnH&wmEVcT%U'GҰzcR9հa$+pkn'9i5aog!}Hg̬V{,[F='9.o=(Fkh͒VNght(ڝK{wJFa4jk/";uѯig3uSa}Kw\u" EK{΀{͋&mt8@$GWit$`ډE81}m9v<t6UPyy7Ew[pxobT@4 "@!ƤI߳cwvʫ=f,G ,yCe ̓huIG#pמC^9&pv׎""vm$Mh5ެJGQ0mLg$#pwvo0sjv9P=A7S4qOٻ+Cl dfIJ?[ LS &eNDЋ?{U=闋tn ܵC1^ĆãƉVH6C[̩.#N+f3Ŏ3[)잯!p>5{EQg@ G ^#Z bPP/Ӱ;X%WuzDHW'ps!t۟iMm7s qf"怪sZ1O4k|WF7#2aQ-'hJ'j82 WTzG/ϚL>k,z;ivU7"+k)n=H72ITkߩ']'-Q *hC"]k.p=55>k%p7BSP]qY+ pd,}D(56ܛΦi#t3x ٨dV*SFAuyir]]0ȝC,0X"@6E@@@@ xkS@#0MtQkکt;BB*pB"ƚX]cy4 [D{4;Sc'],$:Du6_+Sʪu^̎])ce "h д~RtnN܉ ,]DWjmG4U(˨ki`ɬ"2ƿYjՊ_Graj}h>ϧ w5NtZBzf;?I=w 3 w7Zyć߹'-=M|/ͷMy]~}Ҩ):r=p4$1ܓPt5*cԽ4yW6wm"!b%UZϑVeij%E&QFoI^rn%]=/g܌(}j "U]G"<Ѳ=th#KJX2;"|S{*^KXnjTӴ#nJ%1{+El膍#<55Ytl"sKcqn؋0й!0]{>Gi`Dtş-tgWi(lKT{4w | M#}PFYrnݞ͎yEkbwSJ6'^j0uj&ڳ# IVtKeG&klQeCl/]>-cec+!p`      pOGA@ 4C7  Z@"(Z,^jhrG)]v=Mz=#|[%.ip] ,R~&KHh,2_^kLk^io2s1$ZL+pwK|N{ D\&NWt˴\T>*p<WqCфԨ L⽒gV魘Y# mtcFqnsˊsӨ;i,v'"Z,v"G.qcCGqTwxd8w9 p5a     pOvCA@  p5a IL@NRu D #T5;Sbܜ[# ilU3Fs{8ƜztҶn2c9i#f@ށԉ~qءY:Uc}Y0ivT>,puMf~j$It;ѻTц7fujz:ůn,waŴzQfQכmɤ2w^rk6N7;0$½f^ƼVnz;3iToA@@@@R)<${H4@@@hrPO-SJ}tS/^Z=vtno|..1~H?qL!q!byG)C? 7>,Dh%+M緗,hښ#гߙEyoo .-ucKm~w|@~̓L7˦-TaXrV6tVv_/im|os! =|T!eTg<%,twb-Td7Shէ>_K}L6v]]*gp;cXs!tS@&'? pO&E @@@@!#xkRT@%b\/ H"*Um2gLer:V%n:< Ok#  _ozDl8?4"8"vfEx&:7JȑT>,pIE ̯ݦ}FD"ɘǤri]e30a>n^]J_Qyz}Td}2D>_9YIkQeÎ2. .4RM txDF:U5"݄bѶhލ|*P!d#p.T^ŢM#1:u{sG8IHT}{J{Kk+555SKK %{)33(3<ܜ= wgy"5 ܽҒĈwk~$"DfLEK l܍1_;\$iT8yīߙ'lCQJGU8s|~{]_g5S΄'nCn~|w+m}Gdr.c2s_ًwmy[i[#JKJD(T ~!t'$zޭ3#}{0* pfxV#xv R{7Xc%pǾI%p:Iu|/G徧15orf%W;    )?O7{t,uXIdZxىi;o ܥ/l({=PE?x d&c8-Zʱ6}u2㳊Qަgep&8ijo}|dZ>8nŎWE 9 DVj7TbM{bڵbZ .#s# pndKI-O=uA)qN":h#>!ּFoq{Mm/j`NN6egeQFEZC}@@@OUfin'C^X x/JNj<&{bJ q'p( eej~+yb_.*=tw)Q2ݴǎ. /n|!b1!p}.2Z?J9LmIuw}SZ4AyY޷$c6i*pO;UH#4/CxMn)QL%EUWݏx{ɦ|@ggl-p4tut~..e/8:feCsI 9:6xnL{H5Ww OL<&ę {w{$][DwMwm绫g=q)''Qh ݊ܞNyGmp<( н(Y"Cld )BihT@`E=veru$]ZJm*:4oy06}yn Ki39YcgPK|9s51‹4 Q<<#N5o4%4|:{'(Rv5` V8nȢ"dϱ"R8Y`iMN'؋ȤN1, SN53J`Uc;Tr)2M-Za=GDD,S- 9LsºPVF+ƕzMT:1t]۰FA}. :8hcqSO5idt.`ֵέ8{JE(>mt+;f ARǿ'0;!pweG|=cx4{ jj:Eǧ!W Ww y\@N   `*QǼ^G7>⣵oOgv7ӋitN^K~Y8$/F}tBG~ {Σ+SuJ(;C~V_Ճ2m!$ҺL|~]̢1Vy'JqY`^9hov ' ק?9^|#ǭ dR|w(9R[][.M|yy4'af6cYq{,l^fYnJ%}WkJ`2ھ$OSOcg&sz]ۚ Jv)b'!pjʬksQQpٸzb&(O%yHYtlw%WQ|vrB.`$}=''ru{Q+jllJ(ǯ gHd'rl  =NVL^N.'ytlӽd_O# i]43B%Z1b+haEHډ"D*܏"=Z~54Ȏ <q]ۧ%zDqiK39 ǗQB'XDeeNuS{*ߩ"pMMI.UN(#Ģuyfd!n I]'Rj8ǹk;Ln{g%}L@d[y%-~9tY;hł8]D&{xJ&pwy%oo(KSk`ޕf"iܻ~KY03>uӍ~s̝o$Gy4md})nr^U]Cmmm,   XQөH8Xz{,"mH^'oۡ  f҇g?+6-z%h(;g\ߺ"[:ډ=(M!Ј4 p_$JKJU]i[tۡ6Tqgjݺ"k59phRFS{*ߩ"pD4P9*ԞFL/t<n oSe~*plhMǼfk9ed"X3p~ L*N&Z;dV 4NSZ[=oy+mzc,{4;jAq5MT6ܨZwcJ6ddju>!G{]-V{mETd}4^Bn ;&qG3?&]3    De|{u*@\$$3; K}:ז:eJ>6Mt?kɩ bg0/5&Bk?2N~.x`N} pos|s^ ZSދ&"N"4s=@@@R).xkPT@bE`yt1fgQq{wa:6Sxr>>TͲKךDƔn;m8 0ȱD9֤Lv"B-M$9y簂նT,\hMn1kpw{_>"s}cRUc;dm>qpy/yjz~];5ИW-g2gv'>DwъqF:}zrU.?;mHU9<`~MpC-\+18J`N4|6oo{+(pnv=άP@%]&}^nCN)M~֎t**.bg83i <;QOHkka!{J     7T%{<  J鱜#=Irz_}`UQ>|-c{ㅑa'6ݰ,B+b1Ʀ|@XU@x+4~bi=i٥bqi!T `m6;)Æ7UЂ؋*:v;|{ߩ$pIc?o>n=3 Kw}@lvD/6[az .x~ʡ;Lc'QNOe [Ys}2| -h oVnsBn=\4kGlAe2sS6L-i>vt!>1-~}i?2CAM)}Kitc&7HV:J=?]BS*=_`ǼyA@7@@@R)6xiHT@ 0#UFεʥ:&VKmdTk/o6u<0,Zf3sͅoV~\j} L!!S)yM pӍ6o >&:fQbgy1%Bu=G0=UTu=vTQIfuU9lbTALu&zm4o)Dҕj,pUC8YYIELj˫ޮIo9baRhk˧Kv7SwThK>3'ۇ,C|#M.%:k~&8kv~kTڎcjcaF{ZƟy'7OɒϷ|im&QM_0%HU*+d]<_̞Gi%RFþolϾѲ,es)@@ߍ3 ,/55we3L`*`'H\{1$cS;Zi24\4SngPe=(pQ7aJ׋K[ooM7G;9dI3/6ҍWQng\~54? *&ϩ?3Sh] b`N闋竕  ,G@;&ey w      {,"M@i !MwA ӣouG%I,M^ ɑ̄*lY%*fj!pKbaZU_ݞW" v \^,tטBgm$&[0lS@;wfwIeCԇvS*Ǚ:YzQV\w ܥoTO,3v( ]?LYtlgjъqyK[Xϻ iڢc̷<^d.p .|cikisɾ^ǎSv8FlfѴ7uluK(wʥ[2w#x6<8R(@@LfeѤk]U4O߹cL]BrOk%o'~s    {QHap  `i2][TF[pT&&fxD,Ň!oLOQYRoM4룣˥c˨ D%ſGmMs4MB-MQsH׾v"i?E#YBt`>Knoouxʆ؜}%VtQ r spYn8_Vj+?TM35:6A8D(kZ{*ߩ(pB:dYlR_Icȣq{9tbOj;Jt:2ii:oӵD']i% Ջ yV n$3hN~'Sy$~5]3c)RZyCnH{xB,p/o5< @x;t,{;6*`YN{uJ{U5 5ϝ)F8ɈTa4Ç`2F7Gk,Lߢ1ܣcon'vSt    {!Q HQhã   -Sω& ZV!r_Q~T)>x6:$Z}Y-D5y;x xƔZEb=+Oc)U2!6ʩC+pO;ͤ4f6.-2bV;>9q$$/ۏІ=͘XQ p:Fmm>/Y@|T2㓌qV8wxRٿ7>S#;%M Dpzg }>ڞúws2Fp?9 6sj+$#9mihxwM-ѣuVOp &$zVd=wE;IUk?7?=ҿ>Xn~}n,Xc @w # y!'/]4&Ozh2TB:p,׿^7i+fFk]+np>XM9 +n@c"D/]4wIob.L5SI厉$bD՚4t/bk[хMg{cߩ^@'nk.Ϣ*;]I_/^_u]O;ΚWB[i<9ZzdQLj29jzgg=NL+Pc sk p#~Tnd2.oC'yod]YfjܱdfxVt N >j'wPlVڔ(LN ЎwUqeM6˨io!zJw3|;*If-qzht_xlv?Z/؝mhfy2d u`i:!pKh՝es骷#| !pGvH@'`H  D4;bcU:'jH^;a鶃 r(swX,^=ijvxB9D̂T16&D}QW{?tBB!@B@ BTIDcW *6TQ|PR $$^9wvwٞ_ö));{?nU+b^|6dt;kbrZ*6Wț~3+a(8&^/\Z晀{qlw.rvk_1G?n^2OXn |J4tk=+_$lڙ_z}|_CFv.GF ULK!n>k8JI^h0UW Yh.w4ypuwKG&'lN-zU [g|s{܃lEabjy#2 Zǁy#<{x̝zGl "yKfێU<[vj;MѠӟ)v:uYi葷6<-ǑNA=iz>r^=uzTޓh~y nŐ   EƁ P(g @ | rʼnb-fnxS~xA]CjbuMF?=KeEfen?Y<(Xǟ!ݫ?ʭ]*6gtA]<T,A96͗vg!٫{ۚsӫtagFt8Tg,G:-h}'aKg}}Njސg#ZYj7s^NH%2pq]=GVʪ/>o[+ļY;1-H6.x*~St:3z*Ӆ-2%FdmKsTc2;|uͪ't؏^\|/mIJYOoJj;7=%Рu:{Hc1}nZazՖH.9n8 d%Qr(ʋ6/w,J]gHYOa vnCGͩUN4O+h㿫{[6}ZԱҬCnm>e.׀㕟VXrN+>oh+>7JlIٹבr34Dv |^h\ro{ʳ4?t y͖Ǐu9K,7lIX/{ҩpk.8ov.HC 瞛)  w6@]Yw@B&d0, ck{x\f?=2 e(juURK_!H'{}{[C=$I[{nU@k] flȌ6֞\+5p\eC+2حJ+7ҫ:Y+g,?-!b[`eljt*.LsRbzłl5۾G_"h:ryN5X~Xc9P& mTJ--)vlcCiGl4;Ƙ@2%'Κ٘g 9nP~te%…\ {D{Wےd0r=s6R*;g~/֎~c]&bAxYYmlb㲽ƚrw eb !e\{m  @,Tx@`W ྫ)(b m,ȴŶhOh8 dGe{Ybf*]6!9frf`1rݩwϖ-W-nֹ#~d|Ow x(u 2Ț,}yXbo$pVm:E쨬;;Ys  >kks1ɵ>"6<[{޻KUx v?UTEL! 9U>NU@τ+,WY=m{ZǓǡg/ @p/b PܬʤUU[vÝgD@=wJ>hƻ+lVުӧԊmKg]yU\+%fazT[wNp^c ˁڈtcBJ]QHC~gw窔Vm1Y[W7=%;o}{;oN=(ޫzv%{+{donj#X%Uu ղ~go)miyH|nsduBΈyZv]i,HK7F]c{| [}hYV }p/-eG@-@=ۢ@ ʹ@ռzI]:n&{ϻ7gGwyf^Օ{dxA}{N'nT]1"%b|j]:{D\ޑQKen^]wϮʼD|ڌblAVPJw[}`?59E}fֲn;YΚUqUn֫C.%cz16 Ͼ~ {br [:WJyrֹwOwELZm~S|⼪mnڻ- lV_ZJm::̮Ғ^5n*QzĒڭU^rvpZݖ:>rtԫo!]m7".?AƆy3~[S[}ya2-|#^ޛBS*7}}]:B# P6fU @I p/B!!`UF2gϬl뗣~=a7C׈UU~ d|S2xi&}ެZo-iAo> >#w_"t[йf@CSFeoK4_7rlH]耻oEްOk[۞hsk?&}c[6oyK1~yst7)cbWo&&ZBEګ=9gU^ޞ^l '9nz,cd>Z^=ΟF=Yw[:^u鐉YJsδ;JvsӛrE /m]gݮHV;Zr'ہpsy tqBΞ)nh پ#t?nLwJ1k  Ly? @!Ri#e"[SeOQ\Y[e{B.&8_UK-f؏wᆪU,|F}ogillm>ڽJ=-2yd~6MmbC,nf`uv:U;v|Cw*-w)C[Vbm8i_G|tޚ:m*rg:z_r̓3(ŀ7|rd5`zۑ®cW%IY`YsebKοî^e<_yr2=@JD{H,7Ո.v襆B|^|N;iYŪZ\5{.햏M64]b]4IVݟ[^?WνUVo/9Xsg_WhY<͏镋8ؕB%kM=6-t^}#h_"]AߙpB| iS;[۟TٛsR Kӿgm=N6?|RZx`x磔ޜ>qL|p.'m!}({놀{5fǞJۿ6:6c :_ -^:Tpٽk?_eY#rp[!#d(d/WfQW!?.ռ.&j.)M]ܔylm/X\,;΃'T'6țצ+MnKAm3W:ܬswvkw6UpJAڦTQ`U*l^յ|Wi3ϭSa8<*W+9)js|@ ɜ< ׾QޡtDbǘ'^oC|i^v yA*!Mw!wn=YpE13EGyKt{@F_5 YyB.>NޭQ6\.o쑟<)vX,ͮxѣcoRwn._6Z+>3SC3/}C=0^~;>7;rZ" <~vUyk"Gw=ZUGl3^ _ nBm׭(km*[{7ߧxH! +@}]w9 _S A@ 01j?"Nc[*~V o~W r2 3M,n6tڪ=rn>Z0{2BUnM={N/od`t߶34q^v|Z:QXg]ҊS\K2NݿVۻѠڪ ~xs,kM:jz9~|j3 '9ߜ=eٯҫ}c=c;m%< @]^c0cA:0kA 2UVؾ`^ bXea;v YU3.3VybEkT:1R5^l߶][=[=3} Uo1'L5n3;CsT]j]ʮ0`av+0+J D;[u~gNf-eڗU!nӿ3?T>KOӫH4uՎQ) 8 7o.KaϐW~zIk^^TUUiC<>xj򞪯9侜b'ytx @]Sޘk@w@<nmCv[߫Ji5\gj]f"E2ˢUa8#]:ԖW|VF Vb8[ۿ6Zn*ͪ;}*0(jB.)\G%-U+b;^;[ch @1{lqt&F-XLZ:taI]m쫶<2o3&'M<xl.+VGf% <p߱Uk_͂{kU~{ܫav w pw){yɭho8cTyEbKԪ9P<5 8}_CC@p/;SEȎ82@@@@`0mj@F1 }Ǖ'5ȥohdG;d׷y@ UJ1 pOG-{3_>A+ͪ[uqkZaK{lc٥Z|¹Vn ~{yFYv0ޓ=}0n}e媗끍6x 1pvQr᧳p0.xݩ9jx@ p10Gȩ2r@@@@>qL|3>9+nUSiꑓ~3ApOK d,@=c¨<:a8=y!C94qLՊ[ V}L#ݐ6b?ʈk輫+4-otBnnkkkE}}=L08]?Ǟ\(}}Nƶ cF ߖm*׻U V}݆gk[?nV_[=К;{lô47z)mCݖ  s =ٳdL    .)KdbK(d.UnY04]Q2eTjtɽr*k X{b^E@ 3 k {9ں-9ҭUfNwϝ}Xrk^?Kw>Nz&\adRςoi;ﱳp'* @tκdI@@@@@8^wjcb^|PDlݎ͗Nit[;d7sOi& ^"+@(R 6DF~EqUVʶ;ƌpppV)w{F6U*?C#Y~i){j~7poinYM}Ǫ?td8^kLl~?6Ӏ w'=9ޤĭv2^@@ p:)#DȣI+OJ#h5B_~yg-toAǏQ#$%O.Xoh?~&J֒u ~/@@ ;ܳX@ #@0L@@@ȫ G}pgvT?oC.gG#HYQ.y]M~d@ Mi6@R S.Q6o˯խAc:navV˦BW9Y>`tttS. gU-mmKǙN5`o sZ6nwhM rhp5/}k}}7F&ixL[;TGT0  x7 @a֟#   Y8{fz^XPB*Cٌ}@&\ d<8#[yuӣ*NXhdw z%[9AC:0\vyO8^ֿe:sintvրQ ?n}+(#$^ܺmZ.y$-yF5[ ]7 @rɍ@@@erp1 ӯ&;`NT5VF4 nk;*)B"  8V9BU+4`*ĞzBB:< P%/nKW[Szn ae}U?C@p6ߎ9bTV&?kѷmbatMSm.Y.;v5HpОCB4t}p  }B]ϭc} Wy,WY=m{ޚػ=? %@'K   e.{k̸njܶ.jI:5]Ez  @,3dֲ:^]{O6: w2cCn'yXv#Zwte+g7UFh^wIdʞX%yO/޾ȗ̒Jy~pQ#Ghۆܮ*/jT6GGLlmYutii:?+554_@$@=OL@ 'sH@@@@d;+2d܇}wϮƽݦqx4[@HY{Ti 8,P=jDγyN,){>٥ҡu wvvӋê=-,0pqY@}qhW{~Xho /W7m_NƄ-UajUpyΜ׬m*=ڲv il?gw,ܾ-p@r"@='@ Od@@@@|d3ྐྵ}@NyH|,@p/;SE('|M=XwVzI6l|mKsg,55C]=__W'^Pު»mI2iSnxo`r PW[+}ZAW{G#gϔښY ?!CJScDo114?h<x] e[2?#V],z{u" @Ϛ)!d_{M#    P0lܭuwʥl90_g4{$?gɪJ2<  K{,l=zZDZw3_r+tlP/ ;/nce>{ y :s,|:h}eCƳnFY&C^zVөH,afYjmXD󑐺-]);v.j9hƾ@@ $@r&@=g@@@ȿ@&w ?WNpL GFb"+Rb0@p>3G+?]=> _+[A5Puvv o;]65f 70+WKӭnoҊƚή.yn ^eZux|4 yw:2;Z{`k[u_րQsz֩`+GJM  [e  [_Ǝ   U h}kǀ t,u[ڥW@@ @+@= @@@( yZcD}Gi^mu;mmrAG@(\{v@(3i@gL@@@@@@@D  @gߔ1"O{      \,4  P@g  pϘ       '5@@ pϾ)cDȟY3%@@@@@@(KeYh@@ Ϥ@2 1!#@@@@@@@ pOk   }Sƈ ?fJ       Pr  @I#d,@=cBF      $ H@@/@=@ g͔@@@@@@@,jg@@ p/ >FX{Ƅ@@@@@@H$@=! d_{M# @Ϛ)!      @Y p/B#  ^@|&         H{"^C@Ⱦ2F@ pϟ5SB@@@@@@ ^F@ (@L@ c2@@@@@@@ D:  }7e  ?k      e)@,W;  P{4 @3&d       @"tx @@ ܳo@'@=L @@@@@@R{Yv@(3i@gL@@@@@@@D  @gߔ1"O{      @wl~iin\,4  P,}}}M*++eDKsVh* ;_JVv@{s>aykc Z,       @;:[j3 @GgtuuKmm46r2YV@ u[1$       @{JhV F46ނ dInk֫Tugi3@ eq@@@@@@@J?n~Jijl"SV   XCw3](M^Y*@@@@@@(wk[zuuR[SCнhCf@JU==-buu475K}XM$ wy'g       P^pWr/u" !P[[+ 13)(CeYd@@@@@@ȧ@yMתvxʹ@@^[[#UUpߥV3M{ި      @s=  Acx@<zf)@@@@@@@` Fτ@@Z{Qf(3a@@@@@@(属YJ@@܃1< Pc=       P0g  E-@W3L{0      X,%  @PA(属YJ@@@@@@(3a@@ ^ԫC &@`L@@@@@@C{yg@@ b X,%      L{0  @Q p/! ^0z&      !@<3K  T{P1GC{yg@@@@@@ &@`L@@a@ p/=F@@@@@@ ^뙥D@*@=#!@<3K       ^0z&  P܋z0s @ #      @yp/R"  T@ ^뙥D@@@@@@ p/=F@(jEz9@` Fτ@@@@@@@<zf)@@ p* @yp/R"      @ # ^= P0g       Pc=  Acx@<zf)@@@@@@@` Fτ@@Z{Qf(3a@@@@@@(属YJ@@܃1< Pc=       P0g  E-@W3L{0 @) TUo-[JKƲ     d.@=sCƀ  PKqL @37d  @ ̝\-]-Kͨ_~y]ǥpg߱UrZkt4ՈTUVk`` /'\-vjAd{@^k뗍VCz?ٻN?/ȝ3U+[1=Gn[vk3]I@IDATg7k1`W C)/lN}'j'W#GVݺr~hK,6gRwNx>,$x>5r2RE:uW]:dv%#=@%r4T5oi =Km9B~ǜ!Do@>_1,ꅇQ{Q-,M{X1, @i 8wӿ!Wح?y__B:ZD,  @Y p/B#I'%b@ޥ?53Po noMᄩ5[^^7<ܱ0 SZHfS c[F򹿷Mr*o|B &M 9lWFaT }8w]N h}]C,sR߳1}q!~ζlq$5#wÂ:$,/!ok=#9vlMIq}N?RHe+e[e?mmKruŲ !`afv  e.@7#@= O#,n*[^v#{)w\+ Z X߻[~5?q%{7k<>TUO6|vjl~緖d_Vi5"$iгpfitvrXP|IG!#φ8S,;'c@`W({?wu|#L{2!^G@?pOw! \,   Pzܭbܷ UVFP3ZxN>M?W|/(:R~Pƞ,|WG& -^=U;z2j]6~sIp (qsrӉ;^ʷf1S"Ͻտ"r^8 yD~Ws3NWܿGZ-%-CFȋ'5ȁlw]yؖD2W Fiׯg#Wx 0BԫW9fWƲ+%jb߾IjC;vj! Pc=  Acx@<zf)@@A5l5Jn@Kiz\<7RQܖ鿫{GvJOBԾ-2I%nKT! 1TyIrQb!ct~8qgDs_^~^ |3j/F' 7f݂N_#ms{%NɄ YځdYG%!%i=;ݷ[~Diu++{?w=|ݪ77zvթ3O=PȀɛwGI|5]1~ﮜ&y@QV-K  x3 PKvղ` @A#4\7IvdRhZU7Z] lܶ0y_OS/o7Ro@.5f8 1pc ȺXO>5wz06٦]bf=)w]e3^hX]s'W˗^M[~(x6UlWl3 |pn܃h1, @i 8k%^ZA@H{F|(Y%jY0@ }Tn?IF8jmK}{uxqҭzu?GnxlbpT&3ZMq@;6ɾcumk}ſ}ܺ늀{naۻZ.y](; 5 Y(xmg{ 3| p.N=YwpŰ %@'K  -ْd< @i p/ YH%^jݚ"A7#yJ/]*7ۼq^`AV:鴛iw5 qE77ĜN7yd!.r5He=:b C+ϛq>]*/}ٟb+u;Uu 霎nSnW%0;su~.Mǚ Rd|VZݲpu>qDl3oA16v?*YojN3 o2`]plbxl 16[-Ȧ_ wTݬ|013:u5RǻAUO_dB['om-2c1}`G/|73Үd>Ab  P:禝W*?xS1B9?WHǵSK%A@@`P; @,Tx(sT?Q B/ߤվzoYu =,Pf?߳[}rBGZAOv_KvǪ7i ]:-uCS8V?.< nkDvCmn(mz2ӳYM^ֆnO)̀Ooiyݾⵃ'Tə^*">milCBD|X8S˴qUX?F N^i/-/Ӳ[w]=4`9ub5Ua{dgM|qڶmKw//c~[38G?޼h=8_6NwW$8OG7=w{ٿm2H,zUg/Yvl)t;zj-CSm76ȌB^N=eXk3=Y_}TRح{LNrt4}#mϾ^CnT'6t=fZs; ٖX\1ϚY+ΨdpfWFΤ2ݎxfjuU{ź_Xsɏ' VLv?^sC`e*=WY< .Ssy9ƙh9D;s緮3~3qcsoϠh:wjs%F=]s]wp{u;wxp u>R`>cNH}\5  @Ӧ @I p/! $  26Oo7'jjs,Y"^`{61x*)W }W>>$B%ƛU]V3_Cln9#b [wzp004lJԱCj均h8 WZB`FrҾjO>?,;5hisM,dfiX5_C|}4'םg[UÑ?mlz[=kXl{,nw G *u8P˝nqf=YVku@|&???,=liƪHXi7,_W㈻>m||mX9lsGU?GAwԶ?TJxKPx`3aR,jǹcC*CXUuq&~5=rvl|wKS|rJX=uʳjɚ3=e[q~v6Hmm]`=8ao_6ThuzL@e-u1xyW6<=L?.]~ۈ'jvJl6:͎Qg>=:]!m} `a(;Qc~5?9U{gy6?:}o m;:n2op(##?ŚX}zy}HҬ3Tt]zSX:'ѯq3!_E)IC@4Y]O! f@@ p @p/5r"?s\U- 4J/<yM~,}J9.R9Zת$&kԝ51nʩE@9[-憘3 |Z|3% [5X۾UVk߱?{¯3vܩۄocCVż+~FVmێ+6i!<Λm<Ͷj0q[lLcm}鿶 u?'ņ9W `hs y*[m<˚m??Cs:!ZkwX׻L*lwip_.2rǻr!ݴb ٖx&瘝wZ}g1vHnǵcpڎ-(nͶmwv?NG3YG߾iH<+VZ簷U?Յw @}x;O?Wu{aq1Jl*7O`6λsz :U oj+{𴱕=s^i~~vw \x{[«MrΏ6Oquû3)k`"s>o1;> ~P;Ǿ^{ >  #@|5K Da@2pRR-VKKgV6nCzÝbBY3n ̦7~PqbrqحBUTt۟. U^bau]L4=9 q-gŪ&8π'G?va+! TOu@eaAY+׈/np#Vel=y}۫B, cO?otK%naߝ4dy,k㕛#I,@I>_QaV`dww`UujDŽ+@u(w\bw~-duN-uuqAvNvV+`r{nz:m3S7$|':yi#T~ CW<6njum8qxU c[ӦOѪKm ӲmoxkNOqݮp>bni &K4t>[u&x؂wICwnǴ 6SZY:ID7!q*):nDO'c[vܠ\'&?yl6i??^c6Flo+ 7vȶ Wp[Wo[%Σ9/^+X=w?  Z%Kϻi0]e 6.YjO]G׬'^\6Οi~qNn6䑡^ǽZ}^p8wJeۭB~ߙtv4ʤjs:'jn>3Yof9vʰγvXNsfU?%YƉlݝ[]ڙtaq" P2k~nze3[{\Z޾>^-i_ @(@eeTWWKmmTW.\9J}SbH@fY@b~``GaAi݂A[kAKJ[SÁYoz_jmVM Yy{`Ӟ[/:a??}7i5#"܊~WsjR|m>.ի`kǡNiT添u- ~FCXy;fMY'#w~7[g{:ipOt.asvf:Zv;ßֱܢXGg#pE(?NFnϬ_m#,1  ZilFn,sg˘@]Yw@ GwL)6 C}7kՀ?4YE=gL\wje@[~$fA 3£6nM#Zoi߭0lϻӋnx{l! jn{VVK+zI e k?whpju5oAPkĪn_ϞL+<>]ӣ+DO*v^|-م?S~J5 m[~?]8n&TZA bt{x oW]͙ht;ѥ2D+QWۢv =+ȻsDAbZ>/Q'Έ{?UL"ۼ+}#YE}FۺHD'l|v5;ZSLm>OEYxRǍݖȦ$nA[o:;k?8Q[߿Oc u;)*셇^}oέ[۾I;uYwC ;gW--<{~Wq'L񮄔hתn>!WorZ#F7xmցȪj**9@pTֶvj˺Z]hn, @]=GB{jMC1/7b^; P8g @ ses*C|])R{?Z>cg& 6ޤkrCfoߝZmnԞ?[q*B4n;XfnjcC![k4XT/TE |6lְ_߂'m,htJ;bT9tbyawUN87WzՓcmɂqm㎾pOuPѴqP՚}iNkeܠU5 TYEKjg Uu`nM1`Pes9vUe=}m^n._rÈmQ{Lt?ʄȽ#yD_֜`` _קim,ߜmo䚃K2#,8OZw͟ -3^(ưT^P{]R>-=05'#r6"hMV-cKgO`k=9E+8YQc 8gs-0esoʙn4^^i\h'KVnӑ1g>(s&1[~VݶKBd^J])4+̬J5/_U 酱܃yL^nQgUkΘ^-0[{~Z)ͤe $@$@@X*jhV5NW}`4mHHH @^鼬,e]bHH /PL @~CzΓ2D#B|7MGnYxT1E-Jw '"JkFNE'vGk;[w!7ӾiӨgs%GevF pHUF:CKю!ɖ=0zq:ayY74SӃ !hDF{2e|M6,Ö/)b~"_?c 6y[0:_}X_=kQd{=Dn< !<iH(1[; [$[\V^UM@_ a e?$&wB 1/']=f<=@y͂U`˜&gk<'DTCվFhҳyF34iٻEYjޕ/K|:Yu%p%5e2t9#ꢫy4γE:[ql߰J1Wgj$׋΋ҹjGKXUFKs::Zg>n^K9N&S+V䆳=FC.x& ΞCܡc# py3xޞ,PgSӬt:nte\*u8t:A :Xkn8@Y#9$Ai<  E H M J6=ꙥ%   "mŝh3  F =oT?zÎW!o;C ]e|E)(}?/]^D"GZcyGIb &_B8_ o})Oiܾ>>īGlY!^D:.26-;; N b"ڹp˱!UL#Nmaފ.9`(d7J?XBcToV6fTY3}a}@.F *pY: %Dj?ma` ܧd pVy4[m;zR N>g-p:8ea7m/w֏1î4hŏk{Uۥ1sabpˆ=W|)nkGƹ^NҰ#k{ sl^Q(}7:t+:{mٚjwcjG{X;j9In+?|A5v'ݧ^Kor(u3!Wy[d?8^u0{VƗr pz8`l ޅ^R# al8[|9nG0kG5 %ޞ̑ &{II X8O{> D$@OH[ۗy"tiqk'=(uOi"i[pzޭ?[ycH^6}  (-8w æyվoDT%$Az *"rۡR^riGKk;ްŮՂlqci%[CT=6( $HBlX*?,la^ ?])cr}C4Ҙx[]=q(U(}!pKh}3r:f9+ݰ4[M;v,}%p۟߳g+Ⱦ}wj Mg{.Պ.clLZ֕e?f=ʗ-KoD/|6ivt34gqbUtxWjwlL9JoAb/8Jv2e"p%ֈxWZ[&Gے~_dݶ2z3׸?s۴w[e{la[>XW:O pk%IHk A{ ܗXT!F$@$@$@$ e~F{7$fH% |&` XhXIWi" 0!(*5iPa` S4Q-NoM@)&~vEv0sL(7w70;_:;~29{hE|p䇢#Uj"bd]$^oo흣e l ˚VtrLp 8~j*pD#I=\ a+N|i lG*ZD ;YUGw7WzcBjM Sa`Xq-˖} 'bĔx~}~>3$}%pq2g/vB,-f2wimb*qhT"<{ߞ<5Mnvs &rl#yq tGy>O4|)e:㞹jGH;c+.\olU̻q>u^ղ\^oʐk>k5 ;@<wEՋkw$98faS 9)WkGc'@|G#|v&?_ZsEsnIHH8 $@$@$@$@9$@{2i  =y (<A("Aޢ6qη/jd!okT+rV5ŠϗuG#2Cl|ȕ?SΗ*3!5|sv!%I1~IX|[pn"_jQ6;#>Q_ ܑFkdiT>4&5߻I(hȦv$ wb^L=,ݤYwXW52R8 =Ly0mBM V)kh/wAw]!=i/o8kQ30[wE=xtB?uZ4'*i?`; ӿjŜJh^Z{E&{E3/X?f޴I㼟Cߵ8nwx]R>;L3AwBl>nXn6iLmt~^ȞgYDױ e巟8Nvrd"p#9ѕ:J9 &0!crA4uR_:I*o͜YGWESl ;uW_ή<(K2ti9L Oݾy2`}\*1=RnqK$@$@6=w IHHHrDe$@$@}B>̛ @a*pG6Y*~OE8vgx.^lzT|0ƮV*[;38rZTg QLOp yVM4-3HKI ͛cVklqQwDڃZE)0'*H}~^g I.Wo "Ds{,sl|]?nOAr".8ôQ![T ?}I';(svFBCcZUo =Q! SD7GsX!ܑO4] s,"s1 ʆm}]94+ge29chtzoPdžcB86`5yLai8,w;("}S-x߇!u}%p/׮) ;q"wQ[9MC[ӟݛ6>ˏ&&G j-ϸy*_๚wKΩԩ紣oc%Rz sl[Q7˛;d¨29؀p7ꦇ؆fkߣ *OjG_"p hSD;Sѻmxy㏎{=%qvBZ)er?u lvJxO{ULh ~Bf ^]yw5[uY--JyΕ]>Ҙ֡Ȏ)*2a0YlmVPA&*(2&(DJ{㠉-*d~%Ieꨵȋk!sMk_wZ&rv 1a6{ߢ6tXO\u: 4R&8poGx]R>SwA3i^p{+pGm3\:>X#6 fqot6vdA 17 qef]mvw߲",?V_s`sKUs!ptϟ=y~oN?Vysdy^ Eoz  G0$@$@$@$P(p/ fHH P^ @& qDFjc`C 94LD}G34Sl1 (@IDATl_tM0uz4(;m?BUS{ ϛՑuv6AV;Y K w "¼xvY>1{6(ߙ ÊlqXvAD[;-L\cqڣ@t%%AJg D<;H 87ZY靌8ӡCGE_4]WE&o-^ic&V+H )w^+eh4j^+^ہ&W|)SU |+ΤAgX]\/{ 7w؄hc2f0[6qG\##SMk&Zr G{&%: mc8qb1 @%" ^D|P೗pǯ/YqASt2*&\!8oC蘽0=}KfڞѿwEA?sa?¯3D.٫Ɖklsղi^"7Ug ܑMZkXunK#B\h _R7BUDo[#?ްM|'=}/ȻQ&7:XyIH`h%(۱5p?HK㌷Qݪ^p/WǘXyMM~&)M8EV0Y^,yyhOtgжKeIyW>ϰKu?X}2 /Cp>Ky sl+]Y>CŰI58ߤtK'pU;BmX}wZuGU2N+uv=MyAQPA-[Lv̼L|'jb卯]Э=H iJn+b'8]sq^*v~q  (,:j%   B#@{K$@$`ݦ}  @?!bCb^BUj"ɵ(8v]\uI8"j/gE~k`Z"#zd(xGp"ݤ\ zG5FПJ5W,}7.~n>Ǿ_&w%ߚ&\ qQ~PwgX#kvSosWԭm8pbQULjyH2mۅ*ph6Wv^iIkC|FfT7h!pG68\Bޮ)D6Y|w{ro'5 x-pvz$Ա<V`p J~o%(nֈ. dD8wڻ2\2e[g1ѺbyȽ,"sVq[_ qow4\tgmO(F>]cpdUU׶Hv@_U021y^{ILU1 KPqg"]:ptIFI;OqLy*T;8y3.iW}oS $6oE%V^p-[iA&11+"gbXQZ©ˉpj +B'Sa`XqZȻ;=}Qj;AG}w U5Q }e[ՖȚ#I6ghZB]1d xsmHChm{VW$kE] ĹA=, u.Z] eS 3h.o1[Ӟs?|;xW':ӿ2!?`qe{ޕo˚ji ipjǩҞMS'p}l㨟c p"τ%!  #1`$@$@$@$@ @{.2M  "@{_}HHFbڢ|'1>C۩2I`چ SK^c35Dhɺ}"+5j.ة:;>SnT_qҰ\w]-8wTg$~F٦&HabtDGԿY ,"/&feiD·GVDo^圫QϦ7e\O;,X[WQORroz#7Xf|w1{#VL V ;qۭ,ȲgZ`,B<"ʛ[!n1}|odx!V{W~i'*Dr&> 7s q}* Oahw^|m+,r-}zUc7yW>ϰOEI*UGtz@O޶R&VI%pGz|6l3#Xȍkl˧W.vt *p=َ1&Q7=XNv:Wj\sriL8 Dns<-N*U, swĖϸ#Er25/8Q!8A#NXSq7[}#ʏ{Yu?J|7:DR)uTF8|.Τ={ "B貈D#vZ~rgh|DD ;h~;~uRbre:&Tte=<91·rEK<9]/t!:OWF|qS\Qgfwӳvl&WUDQ&^umq=ﴦM;[j ѿVny?"}>6[=X /6vuA mڦ=8aIƖHaFH(}ZKg( B=`pwe=]v<ٚwk5#k@U`ĬvӢ*v\7%ė,[FRgm>^r8d7>Hqhܘ|y߾GODKRYڑ}gTwceX#-V8ps5k+xS:e2?@;p{ w8bfϹ6&l:Թ\ݫtŗpqf/r{W{ZNM8VBHHx Xx ˥^2#;~#h >GyPTy #   ,(YY09֒L81Y.Yplasp|vvHHP^\Ґ @{ZuU(No~gZB__?<592]y<#2sʵ[VD( b$)#Kf#WJ"*VRM186?\X2Ҳ/53DⰠb}'p7G(<w;A`poh#tQQaxx\-U2AxO{D_QpKZ-ueBgF_f[ zWpuA=#M<+52m>똇4ұ7ܲ= Uk#NbiVl<6ƶ\}\##cg|M;Fk?":n o+}8Xc\jӡz:qU!Gt}jWo&HkMKa o&]nIHH ? X&YS   ܋&Y (pR 7λk[5<H Dx^,u@p]8?,?{ dF̸*    "@{_}HHHH(pgK  (dr1$@$@) @>uzC#§!$"%I5*(^?FYlAΣܓƔIVſy`fN9P" @ૐ    "'`E^,     P7^E$@$6]T.۫&rѳykf.T3-<,/w&o^!GHDYV(i }}iSyC   s dYHHHH=-"@$@$(paHHvA%2aT ._ܭpN|QX@ .ݫZ6Yt.yKj+"bRRxp sۓ͗KM0$@$@$     $`>Y7 fAIH( P^B $pߔ:)/F f6I2 pJLE|eI~Ux?? "O   %V 3F$@$@$@$IwO,[)׾"Wt5)+{;y|anVk^痙#  H?{$@$@$@$@@B%HHHT, <:gIHh ~ȒnYbhK͂@}̈Rf3DJTKPA sۥŻ fIIHHH8XWwVg,B8ǰ߭ s"|FQ("sM-RRg+   H(YY0֌L8֜r΂1i֭s 3qq>  "@{q'KC$@$@$@$@$@$@$@$@$@$@$@$@$w ؉ cY9{e u/].>VAZEyl>!   HH P^ȵǼ  ܳYIT-_:Ɋ oUX"vyʺĭ,Z"/-)t? lgIH P^5 9 ܳYA~0GC'YZZ*;L2uyAWWƻ,}BTN{ wHHH<PHH SU( @a=LflfOҚ[bB))uFj#;O&$@$@$P(p/تcIHl$@$@$@$@$@$@$@$@$@$@$@$@$@$Sg-p &- Q   vޔHH K(pH&C$@$@$@$@$@$@$@$@$@$@$@$@$@(pQ ܣ(pϬ*  ((p(5r @q8땥"            g*!pomk'[5Ra--pijnYeuuude}ZPO},]&5UU2t 2hDsDFW"})ʶfZW[-9+^[j],[$^_c~s9P^^&>HokKKGGZ$08 ЗqjY09:8[-f9ٙ-cHHEW, @~`'fom;"oz҂ t"/vq:&plljg2mIID|TWWŏwttoϔh=C$?^ρ!z;ώ+Y"RO:KTD"x&oAR3q,!  Ax* @=彩"            (.g>s!pyVYbB[d䳴Oyy[H s>S   (p  J!             "@{6-p(//u5ιvʊ v<Ә}1TfKVl}OMuwHFzR(p7$%  Ȕu$@$@@|HHHHHHHHHHHHH Pʵ5UcC'o ܫ*e¸M=ȖEpƦ&}wIHH2!@{&x @=_j             (Rgb Mg_ʂoB@{(\<HHHPxHH`P^0UŌ & ܳYo$pfxIů(/J2)/+r(p @(p/#  E50$@$@$@$@$@$@$@$@$@$@$@$@$@Klm! |CiiiuDdfK]mMďSG   P!8^F$@$(pϋj`&HHHHHHHHHHHHH٬BC:lFȆD͢= @F(p/" IE0$@$@$@$@$@$@$@$@$@$@$@$@$@Jll! _}]rzH[=;$@$@$@=CpHH /PL / ܳY$pDd-HMuUoϜ%-cء= ? d@   !@{T3B$@$@$@$@$@$@$@$@$@$@$@$@$P(pfڢ0VVTȶ[m\ɼ/e᷋J0nSϤ/V}1TfKVl}n[9G7_ .mmpҖ$@$@$@$ 3KHHyS @q=T;L Jr?Y>%U *tΣ=%.~I$@$@$   %@{V 3F$@G*euʜ <5]2w& [-Օ8tIɡwNa=DzMVZ܊n'f?g{GN={GK""GlY!Vpn9_3ٻs4aT0ܥrK-^Ky|ĵح]r yZMyD޷Ftpi>'?SyO{g8Q|伬Z7vk_t$O$@$@$@$@[Z;g[->w~~c}:#|ԗ>XV7aG`/e7M}_/\$s?ʹWYYFp =,?*}FB&DHyIGG7qm,j`7D߿G2LlsKeΧ;%*   xY0$t&1Y.Yplasp|vvHHP^\Ґ @V\pR'7)z M sGT;@x==cW?ok^{1KҽjZn ?2 ;r\-]rEUxwQUgkl^ol떣wz\4Tǩ3u|ٗo1#j r9V.Ƙ3   4 s`҄}zG;4    sAi  4C$@DR]qdͥ?뤮2!?_M2gqry/keDm4:nAVXsP].Fkw F] SC"|[I?ڨ\~}Ui\p!   !`F#&   & ܳIi 5 8G$@@R]adͥ?VɎ&"qoY8nc;Vj+b3o/U, bRjI-nG?l>nNEI3YYQa iNYbS}_gl:2}36e ePCJjtA]I Xiԗ,>:mr[YH>? 'wޛHH [9  U  (pHHla-큌BGTش&#*_dq+ncLҒRCjgۢB.۩j#)O?X)l/X%>:j1 x`98rSs!T>vR|sK}]0PTy!򼁒gND)ًOՋH8ޟyo  (\on52$@$@$@$P@(p/bVIHz  {2G QCd( UHjw29'j$BDdsp4]I Wsv>C% B y9btIHH P^ґ @=9" Nx& wj'#o.qDp?gjNSswj=)pOͧP,Q/ܣ=|ps|vO}yPeI>)Hsu@.{2]  (nwt$@$@$@$(pϿ:aHH=8+I$@@Yl(KB"RWoSU6wAiM eAyHDdil-+TY%٬hZA(8%Mc{XDpϖHDѯ1DVh_Ж=xW-qLͅ}Pes-C_2Z]ҕ=IV}'%BouPǫ`E?TķzMX> sOc7w7]İo_>~v0YS%N2 +jpR9iJ`x&ʄi@yrmҤa,[^O5/"(۬7DNҺZbbpVy`jz єݼB[!Tl+AO厷Z n:qRL]^ _'9#{_C9:yJܥvss6erTw-3mO6lq29u*c3kk6ω4=s0u|# v fgi sP^<1yڨm}fB$y1&uI%I[q'*Ӷ(N˜4SDŽlu.чTu{8wjǚF1?z\1X0}Z% :ok5=٠pvҎ'&ƔˑH'?goslѯe 6j5kP>ft܆yU0u1=DxvIcZ*lӐcЧ.y4[D,&گxbW9\N?ᷝrajw{ӗi:i9,PsqĹHsg>N󒽪eh5ydM1e~x`7}mk}Otʕ/_cre:-s .Lٹa/E=rw>q5EޙZ4p-e9Ө#Ơ l=msJ蓭>)[$Nx'V1uS}gJulisuHHHXXAЎGخuX*    ~'@{W3@$@$ /% b%` k!p6TE(It(<jD{@x$ִbDDA`_!~ _]f uң3[9/ eMc_– l{TL;_E/(c"T-*^w ౅^Bn SB˟ol&;ΞW[(S,n1!27&@A ±cTִʼDj}>#4z:CVyr߭֌U(ɈY7&ӿR3 b?ݱJ@ߓ ;d]ohvR򢭡(C:CyNUhĐJw-lڸ02UO$j!ny>u8ls}? SjSo߾pϨ1=NNk岟xJYE@xw^qg yiS\s?Ah*77_O 1#RtTzNp(6AJ~&bRq QA}bl6_tgs u,rs)4sYYeN-pC0F\\#dMwˑ=4p;2(Gw[9ZWa Ӧ{/;FAz!8折KImi38W)\{zK=|\.ݫ@quÄmmuAV8Czfol }N۲/sTr:LHHHNƌ鼔w[    \=Wd. @_/($@$P`lav*% 1HYD$c7-H#Yq4Aa ";'Z՞ijT?IPciFl֨QJKhF'L˙#%[?DIFlNЈ(7xmQ%KT2؊@jιC#=6,"P8DlѻmCTq;D4ck HJk;c_(ĩW,UAJ8k 3ߡfx挝DxӜcoD,zfP%B4>nƸ8ӎmJ,w{\Qyą*~ͮ7?KT158lŽj*g %5)+?wE> mn~rl\Hn^יcyN9̤K6 ߝO@1yF4?j(CZ;n9ϟTl !l^sC)$}N؛c?C=Vpbzbyx瘅  /Rw' & ޘk  ( HHz]nרûmFY* oP7&k:cN[Q7)㷩LnEiIKkXrhW[elF(@7Zh bFwZ7YJȃ~[++c 1KC7S47r-5_LDcaI'Mg 캀Fc{E8(AtFlRr%ҙ|yD}Dφ[L\') Dc{y4[Ѝs׆f6lwsoN/+U4Μjk;,vz꣩vo#ACHkXGwS; jD%[?ˇإ:)l6a]6W7@Ta1n}sʋW߆~am/}81?>uhb;js0ơ?7hRh`tJn9V .'*vG_ۈ&'pϗ5=Oy2GTkldN.91[g5Eѐa`{ 3]!s6xƳOvA}29q:_G!|<W1U@IDATvjpfMD?k"iC|M>Y?C߿:quup5:𿽺/9Ĥi֞a?:HcйW%Bn/lwx'e?;2aD^rԸ$FcސbNO$@$@$0q|+HHHQ, TԚgIH [mNF Qn?.):'m@篭BD17Bϖu:M?F/F12{!uNN| 'ō~O;G c `hϘGuy8dDvz|I6Wj6$!M/3"%"h[; { 3TѴ9eJ8k A4ꥎۈ{ς[Cu> ˆ=T72!b-Oݺ/1bU۱"aDC V(oq}4"AhxᵉL/z?"x/1{F v?=z'(՜k=;"s,N'Өh#vݦ@&ErΓAfdU?f%Wtx|,!G:IW 4֏YesC"]glFl~׺{d] V8+KsRm?ܮR$椡P?g_^OsuD}W~U$98''?2?^w8z΁^vw}+b;zo\ 3͘=o *pO.pIږ=1q5'{.Il[Y8P:~^m c5ڻp5 VY *7- o   ((Tu1$@$@.# [v':q*6j4T8 f MnՈVɎw@gT;NE+=U܌ ;FOQ7ɜlx Le6'wF\*]Kλ-$kz=US}B8o >Jg\+#j8Et=t|^v )t6iLm"5VxLw ab`~ohkPAj㑺U:ḳ%c܎&RV5tg.waD8?W#e^ }>+= 0[@Ahn}Et0fkֈ^}Omʋ'o5fp#MuE0NH?stLK/s⬞-m?G Ni*L%Lw;Y]OWKzߚP`G';vl=;vכ|@DzF37g*;9nnDNv|*,X%S ӗ|PtT߬&W?bG̣}vRDUW`NEW xvgw8Bo nS^REyvq0E;rݫg'6F7^|❤ ?Ll6YcIS9Mxߍ9ĽM\ts>f%  /O{UK$@$@$@YX (:]@$@${n}';_$uVkU Ae7#4Z# |W mD9_t͗h j ́`6s3 q!3ݑK4_FnQ{jN<#sG-tGU- 4:eO)} 3hKۀIIODSJ[LwsEGbyE^Ͽ;{+p}zBύFDE^Q=T +W^-׎FFS}ʽ.ѷN YAehjU(nYnO^+9I>F]!b!Qot*gq⃸z:cϷ DWywAxa\caUh/nU:*vTs?;x&5 :zIЖ;,}7}[~* ώȎ8M+m+E:{D4l3ɛW1[Rʤeo2grNb}rΉy["OơԮO cFpχ aHHHH P^U @Q# ϖuO-0wjxըܜj;Hو8\RUm#ВxdcHnsB4 %D+Ȫ+Jb"mc`w)+-|wZ6w r.i5Mny=ӎ{c2E^\mЫ*B&}u{E\ΕW#GY:'` GiDll#,"fz#p#=l 2>\{Eto{j#r ~xPTiճ roC+c;r쯟iϖٸ<>99ޟ'q?FR+kf&wy Һ@9(,oV"xVӭ6uωz !Uڤ1Rs "pNJ8QLϷți\>;(+:O:]%ca-`v7LCbw^,>oa/Ncc7ƟFmwt0]nx%ʨg䏌Fc7h1Ct5|!Et.pns6{ڽ??ebT-y:HWl{]H^Ii-;=-p;INR5U炇Ɖܹ@狷"JaHHH XsPL|ujq&G? no kG[S(L 1BU5c G3&%: mc8qÜΎ  ܋>Y  [Ɨr ́ҽBc !:b |2G?My#}c@(#bkkTwɋeOn3rGKOLJ6[GŮzv׏x<. |[t![zF}L#\ݑDkdjQq6"=CAD$p#J#Oջ7wbuo^wYp_soNAE&?z6~PXoCvDbφ=&O{>o4T޷&^M^+)lF91DlP&? oAYiAH;%ŮU*#k_t=w80ܙcϺKIL]׮o9dN'ߤ\N.*lQ1C?vh㄁yE9;3Q{d%9/{|Du='E|? n'{nL{}VC' @>S(p7$%   ! sI 9G @۹CFe/ $I#p7`Jkr)/Wk!*_u" *lF.e o7Y*Ý@,k=eef+~;*` È@[ԛ"Oj6p,W"buDB$LCG %ADk`* `=W ӷ! bQ{l~U8l8?OdKv[* 9mYxN*4lBwG7ǃl =nL/uOP)X)(}SnҺ76XsNJn?a>wF?۵r"O+py:ÚՆZ&!\;&D맨#[ ,eM;mXi*sf֧}s6Yճ r0}:K" uoxEA&x^ӟ|')p?yJ&шdS]%2]-1} -=vņyNF )&HiI|%Krg%Kuv:  )v[l-j# GC-5; t_>;i4p-GnRggbkS[8-ała1v:8-Rc*kD7΍}%p]]%e6vP1:ڇQjm mwcm)um{}"vhs>"O g;F̙DvC{~sNb7 +JdmHHHH XsE1o$@$@$@$P4(p/dAHH`@}@V; M$@ l ǭQ*홈\kRD=DTͰ]=*MUYDv]2ZkE3}=<\%ݑ-OFEr@tM޼J #i\Dj 1*$XՌ|g6[LuiURkpD؇ ~rg^O`H {g% *34l~k7Tp΂%L߶*pPoܧSO{>%3oG`jzTzg9ZYcPt}WY™Ʈ It-ZKj-81s${׳x]1gou:fT|V9Q_p k4Mc_r2ߙ-94:Dj6h_~5r W"o{~ƮZ*kwu<9 f|aoңfj[TwcɛEg>\˂I|'ʗ9wB{4yvoUPGG>HBz~&  {F W7HWW {Gg>HHHH`F)))Gg4/G;iź6[wd=aggHHU, d-ΦB<ǚKLO\L=7+MfPa͚*2f̱ [Dޭ?[H-*{Icm*s|ݘj:O =0. H轷@  @16 !wB5 z߮Fz[Iw}ՖٙJn1,t\D,Qsia,"gpjrZHg [}֮6֋: I~vuȳnb$rZfР]G}󷗓/cWaEQH?P,ҷA8wϬ/ARJ6R')pG=_{Y&>xNsɳ7ZO;`i7ads1E!̚(4t#Dh3`۬Xe<9S 9pT >Fo-vFqt:5[_;qNa3k-;^|%y_M7:2u(E@ۀvy#-i>~w%p:'CtG\o0(ILSwB\.lӪU氍}#4-3׍I?j^s01$@$@$@QPA*poim3&?QRe$@$@$@$@ZL{{6u=6=H: ܇z `IH oSR2g>=Z՘WnITefH'Wm8 W-Y3Ryp{ڍh}ɳCO$vp_灨Eٵ M0 ;FǶ [\g27o]RWK=g v7k,N4;X7Jƴ-R7T!("1*`+DViս ŢK}vTgtu1~]Sygk`@ Kc0*fvA}ժ!_[絍Iﴸ^gw;8Nkn$QP 󌬐aX #pwqiMŽ̦qnم`F㨷2g?}Ryv/1M 'v ⧾<۴kh:pA%<]f狙0s2#)"h `>ϚN ~żMBߟGN2Phac1Sw]ƊBgsg   σT%QB$J(QK1$@$@$@Cގ7:%>C$@$Yq7 EZ?_u?Y84L4FHd\=%B6!T}>@jn}]&ʸhk7va[kg(8wZv ocJpFS+~ =vR_PbV;9zX.R^D(Zu͚K"\Sa:}3HcEhM|]'޷9Q?JU⑟9ȑۣw?[ɿ!sA1ڟv7+mN{8WcfΏ+svI:Fq $>$fG"4Qu 2O\ApFAf6sRq{sqgˉȟwKϰl(It[VvO8C/Qܳpоi kK   R#{wQ+**LC}VbRk% JVSQ^ uO$@^Y* (o"҂D(s#z"ppߝFص,׽Oܪl>0C7 DFdk=jf !ݞfd"&0Q!w{_׫1{z a5YH;H 'ZiT*LwM Fc9BZg6\'"L9RD@K/ڬ=!kd\m_' T`= h0uq^iJymnw-D4aJΖ#*;Dwwo4UÒ< "/ڛu#зZR8?{igE>K}oȻ5Dh}KjkC|za! ]/Y QcVjDˈ1:c'!͠'a>od**s"DId-_;WAbk>j^2uŽ 0~Z\\~&gs[Y wK~QoF-32a2q{KTuKxD ~;4wK8s_`8qP?NM7qg퓐N$NRv09tq%,dߡq˞k5}ڏb;HHH\ 6[LW?n6UUK3e>IHHʖ46$*Q^ʵü }$@$Pxת6OFEo5{*<$@nwȂfF"^wHcݥӶKDF"h5/q}ax{JO]A6+V#7IT&lc?9 E,(-gFn"PbIBҖR"|~1:@;BH""5x?5""1sP̞]s#fD#/r}戼By#-f3Ckcőidǟ__0+#~V= .Dp6W +pG:_wi3-RZ?ݝ'v8 rOMϕjV#x]WWxt̲sI>#m*{ YG*<'˳f[}5x_CYBƟYg0a%z?o]4cuҨr)l"{d%   ADTH{ E$@Kϫ @Ib !ylc"# GX,(Q2!’d#wi&`3ʐr"p#kC:=Ci?࿚zTeR.Jmsk(,BJ/NXq OXm#ztg6C X,+8M'HAbmE@(wn`4n}!^3.f ЪDCT6skjK7t 8@ЍBzZ~v&{ݛDw mNӷWŷHF6XVT$_)!6oTэy8g:ҩu0D.\_.'$_ k}#QHUC6J }lǕEZyɧo XΖ m⃀>${3:\8)wk_6ܟ~e.[Eܒi@׶(~" ;9yU 6{?g,\'{HDm)JDr D^N#16ì7B8}FٯJu0 /E:[fHy^㙭[p8Vd=g8 ќ w O V+2~8nX qġ =k Ch?H['ZR?;Z]!> urmǡY^ 5 ܃R/m>2X'uL\$\3wx'DYr-;Ɵ=@:_xW^p;(z4   " /乏,pGQEӋSxPK    **p^]]e*~B{isC$@BR HJoS""֛EE^%Zd; ;n*s&5)tC3$|M3W">#%isߞeΒ ȋ%z=1yO!"~2YGE!p?f/Q86.b\s6 ы!Jw]]g Q ܑ lqE-puߤlJcї9'3j7Q{滏:uyYyɷo`b#DoYE" #{"^RbѴ;̂P&r*ϷqÇ5Ƌ l8a%@}iHa bqq53̣06}ƄCa|v[+#%WRLj yƵfU_r{n;PjU-ΉAbP/K'Vm, 㶨5#jRBBHo+./l[ɬndJ{ "|4'6 bxvKGKYq-qzA '20hQ_cVYDگO[6Pxҳe6|ްAt3~ZgVqI^۷2(^kU{QXRAsz۳=fwLe!r޵/&dë́~'}cScԧf\ ĵ{6$R9; 9عeE$gRIGɳ) >A?wJ}!Sw 1`v9lB_Yߛ{ɷ/_B{s6XvXb,;z5.q_}^WIg3k1H_Y7eu Es묄Yu7O۬gyDž}o l5vBXoa|!:f 'Kg1ud8yRfpe'!b =XW4^[z%}'3@F#   CP, @P^$LH Y8$@$PnbҿªB buDl9oJµ1(ܻ""9"@@x 1eŅye1t- *]}ZGZIa+ D$ppHDe٢g/r#Et[# --@:rZ$/bVsz'"no+4 9?.fQC(t4C6r0O])u󖴷Lb4I /עE4p SHjq^!mʘO>HBt"iG6~wQcߕ[?2lrq>AdEk"-tOS{G_R~ijUkG 8kݥhv{cRZeēq7w3Zw;d0ы Ylb3's$NO1%yK4Ƽwzcb?ss{fHHH|wz ˧ژS    P9b^HʒeYm4 @8Y"o?ĨVI   =/L$@$@$@$P(p/aHH`P>`ya      Bo۷Q"uVyٶR<HHHHHH` JjeHH` e1Ѵqz"| Y8&]/ e@,; P.1,[s.lz3F$ :*eHH((p/ F&B$@$@$@$@$@$0,P*3r0`0cf֡e%     JbQnIpI$@$@$@$@w6  Q6      @`ܺfuj1|WHHHHHH4 ܇t$@$@$@$@i P w &@~HHHHHH }S|n9V3MI B]aH$@$@$@$@=_r<H7 wt$@$@$@$@$@$@Xl5Ҵwn>F$@$@$@$@$@$@K#HHHH`H}HV; M$@Y P              BP^=K$@$@$@$0x P>x%# BP^=K$@$@$@$@$@$@$@$@$@$@$@$@$@Y P    (pB @VgEHHHHHHHHHHHHHHB ^޺eHHB @VgEHHHH$ ܇d$@$Y             ($@$@$@$@nY2 ($@$@$@$@$@$@$@$@$@$@$@$@$@$Y    !I!Y,4 d%@{VD<HHHHHHHHHHHHH !@{!x. %@[H !@{!x. d%@{VD<HHHH`H}HV; M$@Y P              B m{B`\    K k&T+E51$@$(pw "y(扽e=.z6ʺ,1:iTY K4^43I$@$@$@IN`j|, cɔHHHHHHHHHHHHHH @B +!EuM$@$@$@$0@N^HJ%\9 ` 0x ZeHHHHdg?@}$@$P(p/ bHHHHHHHHHHHHHʝ纽k'   %A}},} h^HʌeVa. @<^UF^3j,ݹV/ <dJHN{*  !@; DJ@!z\مmXuYzcuҨHs&q㵐=ecεipI$@$@$@$'>Bс۵]{Wsny(4 IH`}V,E$@$@$@$@$@$@$@$@$@$@$@$@$P*E*nu,uގg/\- G @Y'            (}J wܭ`|^b+BBn6 h$@$@$@$@!:,!tgi히=nG:/EG 3} (Og1$@$@$@$@$@$@$@$@$@$@$@$@$@eC@!.{Q:୅mVܞ/q?__o_    v( *)㳷-=!rW&.ߖ+d^HʐeXi2 @9PRr#q=!r޽G#;~$c_|-N @ hO=};96yCK ܣg|m@IDAT+ @9ky&            (#J Q7E["ōAʺl>LQV^/|#Gcvc^ԧ=m"B$@$@$@$0$ 5ftTw͘Yn!h(2H E^!cKz )p0' $@{ysM$@$0 Ph5'=o4_l|w0}ڋ5̞kV76/}g`߰UAv3؋ d 2 j#>\\U1ǝ*ڻz߸0C1mE=֨2K/Xa.2=I$71/ny죾Q^i @PB8^]c[ig{/r_1$@$@$@$Pv$f ړS+*LSnIpI$@$0P(p(. I`EK~ g[RẸ>;%Ϧ u߆go)CHs–f<>ݽf&oHHH.qV}?5 =yK - P>㶨5[ǒuS)_].W`^3q , zi\!;̊eO"FqpOysUb d$@$@$@$@l92fnڣ,T]vC]pLH# cL$@$@@) wXv-n_cx".n.oh%ҦSn1$  (p^C̒tu˜xk>n$$@@IHʓ{=.jg+hnv3˳2$@$@$@DwDrw(k @9& $p> @)r$"ݥ9cZdlTR#m6z~any\|Uld27@'ʐ@9yapGU1kU Cﶫ3k,33.%٫c(cޣ, 2wJlNRncvgoC ܇f$@$@P_b'7Ǽ|1n Swz뽲9fZ'*$Ε+ɵ({zgz3C] DFc欭] +d _H_YT+\% H=+$@$@QsbVhyWb/6\S]|?V ;%~qut`vycB'_Veh0ao9CSZ}^JA||m\cvZ=~Й" jn&!I/7􅾏~aQrgoC3e|ߗClqV<4}h;KM$@$P]!2+G{O=F ?-6&%   r!afD0Vn\X HR)^&N$@eK:fHʋ@Tb@{%?7 K'pO5ʹ SkQ0y ~MKo(- ُ)8f l$@$@$+2ǣtɨv==H.]byU\x    8u9a3[{BԮ"~=!pg. Qe$@$P(p/cIHlD%')Sd5DL*0$0 6a,C=-=nNo25(hǶnL%@{*~"  #^ne=)rm]o1/}    ?,k>v-rWQUv x%  T'  j*Y|=_Vg80`WĐ ࣭+L lsZ{MSG4B>.&|7?g{[!b6%+Lsg7LɔJͣ6L%m&盦0WBҾstiWpiS7pX+]raª["F+ 2fi TUFK|n=S`M4|Yn30?yN ts&{ӽ^1>2IwEcfVŲlc렟l(ftwۂrV,)wB NmD!*#p=9Ƙ=%q!N쉌Êk.ⸯ?P{Ƒ!}lMmRƱ8~{Q.$ce/㢘r ܋ )!/}?}$/b%c۰+xi4*Rbr+Y{Bn#ۥǬzei8 @QݏnEeBr]st=4*H$@CCYX ȍڠƬ0Lo]ķ//fp6iۭuvu)~ V>ua󑕞H B4aZd=_kt|W6~W`iێQ#*;E{ӊLUiƭ[#ЦeYK/hyFOnxEc65ˈHDUe٨KُIma =@(y!aŇiҷMAXum|o8PB? ibyVTmiBm{Ym^T+NLns})C}LK3[¼] ڽzd_vsm\Jd4ykO-Wi&Wma{zNi*M{o6K;A-5̜U;R7VƠ.=q~نH ㍃ D#7oiPߧ=)tpixnL@ ʁ{}Iv6fK3cBgg噏|Ǣʏ$tuq\s)otW Y 0~7#ۦN*Y&s8_`,l^{nn ܗ[v0KQ/YsLeϼL ڇq-Œ.ک,+`'?=W12.-W}c[^kZs `} }Fz=x0AwG,$~gM2|Ykfv(|ZAm 0Fc]I T#ggo[g_Zb ~5የ1X^$3 {lTc:skޔJ">`asP">i gyי5݆\&b#Y :Dzx>+xY8CNڪl6ZB4vr_hf!Z¨#[.?fCKOR _Wv2%DAmֹr \ ݻ]3@zƄI˥@]@sֈ;ͤgSs^( hr= 2=Vhe.65f38% 慸ݽGy6s6e{seE߲en4T/lQ$! `PTi ]V /'/{?*bT8,i0Dk:?4p\DYNw5=g!l3S>+/>*h  >"}33f@:nxcyaGcvf_o7+ԽVù!__ʭM41{2_6óN!pN(ǶsfOmLi=K2ƕ=rayAlN=# /clu1cLK!B2ۘ}K֨!uOmSe)[_Ⴇ9s|g%ħ6n럊-qufcqfO_mlO\Bskr? j`A oK]^JDy|]Zw}pTHHH`%w?z{RnviEVNk,  ˭Ƙ_ yu)?#ܶ^D]^HJo xSⷛDRm\! ;A"F qrA:M$H?ý!,o3NPS0pWKgo|E% !|BAǿX\6{H|1:iT } ְG6vlQe}]-$@$@$@$PR poȽ XA{B. X؄=91{t6 / ˷s {4H Ë/gITt}ܕ/yS?#"lIg޺oCx|wOWS"/.Ob1{]y<&"y"ܯ!HPDEluFlׇh ->%,5E/-tw8#Bk"It_$&iF$ ? #Zj"\<ȃZ*>}6?4Dݴ($bA"či}HFpb^[^荩ἎF6t+Tx)J[ D}5-13+unT& \";_%"FݦqyXY0o :7MG_:yĵ̦.b./4.MYkd4p>!/Ն|ִPm{3GLm !np7"QѿhAŦf 'viHzn80E-B/#RxI-eҷ3`][,G%<hhZiʹLa9&{8x${}Mvx3=HsLW2^#F`Zs"ۘe%Ɍ-əg|xu [I&nyyΐ5'Q?Pڭ}tm N0H1H/Ž7|=e,gߊpt[m{”gM#RZ!\v6HNJJt*; [g~׬n9F3 #pQ7AۮBxZ;nR{ k޽?{֏.is#ixnXƭC((bS J`+1Bxj3==S~\|Rޕ!c~.w)Z#er⯛Qu=d֜ 2޶~7ew3 P4x<VqAc@{P}s Y'@D"d Җ@b.)p/&ME$@.Y ( NH+HQ;p{5Ƹwc,'~4GDikHA"ѹ!綾Q];<@\tnl%H1O$H!hB opȎGWXZ飾:[qՙuABǠ^|䇤 .1}9 TaqK oJ,> }5D?*`|[ c(1}YnLjmaIu1Q!QΧ Q 1k<&87Y !]w&L}pг9z,(J:??[fW5:p #[B\ @&ٲ#+'n1K\ʘ  +Y'1. /{ )pJHH=+"@$@CeB` Hg*DHAP5vr_q9"bzp_8nO̊4\ RFsbn\{n2*f"ͪ*9NAw-F)oTZ|mId w-txbi3='MVp1uBcBGJKI6!252Kݑ?a"faYn[|Nsɳ|{FI1bPH1໚͜ 0ZjV]U3^'DdwmSڃn(Ĺ߷d.fX\D.sc/l"[M: Zi!9m֊hY >"p3F"[ⅶ vDCf 8C4𯏶,OO;͟$6Ea+T:RNywDL.Ű'mp/*Q13&SD1 +Ɲޑ>Lϳ׳"ĩoHm7lK= m3kdƮ01n2ˆ:?<1=>Vof9hrmc h@u4ь sGu⎒mõRC!Oa^tzyKYv\t8/#NڢCOWvz8S.#N(ɰtKخzG<{1.rC[tyu 1{c>]; Q N _Ǐ'jO~i    R$ ݏ{";Bw.mYݒHH? Pޟy- (0TĿ֎dt#2Btf*A u_2s4 =e|2wfFOb1|>־teB䭓0"'oD%*AwDogHۍlUwDI2RMάѽO(f3/zIn$KW ,8KE6rI]ly} ijQDmEF𗚊ie+?M2 #ę~>m۶O*!i%_n{?(NL3މ{xt<6(Y?5Ce|Lp_Y q cnݺ3{Le|z3r߇@{̒i6!(=9->tca)l ,,[ȯdƍ?;3n}Hq]f$߸OYEQﴃTS[n+χ#9aMΉ1쇱f.)G{j<HHw_ܽJ㳎܎uo @iH ݨmvb/NI1+"|\!?Aɏ߆21>{+G! \(p\Ґ @QhėHTG?FF%gbLbl #1/9CG$RRM߈֢_z3ja_dIGk!LOX쳶/;Ë= !W;ZeY}+bNGŴ Ig 1Ȫ?]g_| 5W|DK'QSYq.WGVskI?1{oɉSLKg<.5̜]R]6>.q^{m\Ti?6r?^i3u|=w6Df_8%>B0՞61Bs%b}߬py3U j @rA+G!i-LGr!/1`kA㢠ʽ}9Ⱦ۶YyRg:х ܣ(;fc]Ne?AXȦԳy_$RC<CoF !ihۻ6q' {}Hqoxz y-IBzyF}^#k0wLK' 3>  w򝨧/ R6P\TdKlaqL̴Nedjazunc(pZ( L2   @@%IH @X| fx:&oϕ1~^V쩯|@i!q{&p{ /fB1I/~i.y6)VƔR0"( ^b ܡbX\yFet9xC_><]' j#­WV0FLw=:"#r|M?/}åυoXi[۲+r g$x@?Y˷7(JzX&aRk.vVཱྀ<_D g h}_~hGpı}ʹR22ߴ;BrmD3pX{'XcM:%6fp Wz̫3EΧLNYkJ\ ڴ3nWѲDޭ>]/=ӳý&>Ñ}iDކ@Z˾yp}iL1A1# e.3 Ka e?]Ҭ$=e݇Du3M=QK۪帟8w:vQt[g?1f-j*O{(d<HH`!kc e[s9h=g)p%  K>  p(pljG $ kT%" A_vfDŠ=6 -jaY[m4 =afFRxmm-]IT )1Xw@4QSە5e,^_Wz?5Gw_.?ɧɮ`e>Bp-W;_ ߦՕ.חFrHk%R%"}\}u\lfϲXm˵,a-> C{ߖꌓGmV"=bY2oI.ܱެ?3A>]\Ly鋤w1nWw5[c(ݦrqWQaNڪ`LhDx/ԎY ~&0"kapꂐVcfY,{a{6NZX{Q߻!1~G$j:@ X#A1PN{ fIg.:LffHwL8}HTq1j7_O[ θj,|z|;'.O2}yyϘjqǬ&0    |&pqO𵰝HHHH  c"&%(-JοC.NޞrtL&.M,WHۆX1>{+G! \(p\Ґ @$\lrYSۻB4l13Edq#D, _~l55s$ү DŽ E}qWt&ᔽNIRGXۇHo[X m SlN3hTyfl!$6y~_VqslWP\E?b6_Rfl!cLF 2_1uooxMfHn9LEcfD^OQ2zc|}/}zb|[0~,a 4B^ k"gDƶN<5 ttUS'E0Hڥ^ҾCGbf5iFξ#+{)l]<}qBX5'{iϸ𮄱Җw0b!Qǖ]Oݦ\rxMZ1n]?swhrL,{1P>!  "C%|,i3xvs̴N)F|Kg$@$@$@$% ܣ˴IH"@{Td. R19+UIˊhzb+pwŀ!p~S_.iM%N+"J3˜X[ӋôBiϲw\JG7f ?juu2ftr Bgv?<c+~#WIkT'4vK@YIq4 u~.sׅ.WvˣקoLDI5y'3:.p˧#zX;"iDnoݕEaC^iܽ,p4vrpBWIE LƱڴPկOӘi巛h4aJptaWZd;SItIq/ eGȞR9)Qrl/u8vX=ލog[0% 2^{äM޻2KWQc  X6rR?%p(ḓVzQm}żu#"?ʾMTa̓o 8 3}mCYZI#f\[aӴK #pe>}HOemqxg]` }j|ߩ=i{,]YRe9hq:43oSg  "ǽ=SHHHH" @{P$ @(p1/@$@"\zA?9Jz9~48]rc"$L'&҂9տ?Ȗ,nW0E/̄+et9xC_t4b qqU_ h߮kgGS<:֒~d# vpˑs0|?_Qrփ Do1- una9 KӪU氍X0XC\7&)uqֆ]0u +p.pdDkfek`] `ݨ켚ߗ×ތO`3 4N8?BXY3A sqьT. }lco'kfsY{  qsͱQeL1=7 aBz]FNزl// rL}_Ք"d#pˬ< 6KW0c(]b Ka e/ _7M=aYqd>wG,!Q:S\`oW{HTMt{H"-xDro(s; h%w $@$@$@$@=bLHH G @XOq.7.3S~dm".h+m ܵ({5{m~VW/kM'wi|173k1L4wnX"Qgf+6\e+py~4ۜp8}5!,Ć $l t:>|u8}(Qavݚ#3lA)M<-pQ3y-o l ,/HX1ދwKmsr[{I]SyԲ8qU| 81}Vfp;]"\ ;v jgH U7e⎜&clWØv@qFwA DYv \w9_:X1sNJa eFட8ϝæ Y=>qm >w0%96j|wKȫvLq2 C9/}:ѳj}C9pc*)p d#g$@$@$@$@E$@{a2)  ~#@{HH<Hta#zNh*o+b=b^:Ueh< F6$BŕDh^a%|bn9Bc65۬ Ҽo"nwlAF|m=)^].QkQ_$GWl; f"!d6zE)lLz+~#Uhˢ˩YZjm1 +qC Cdx-TKnې藂|X 3yֆ]>]/aֵۦx:sgBlw]rs[L4_GwA?|eҴ ?I}R;W;k椭2{f2w\S =3ca-T!b $_HV2qN޺lLF3hz䔐ssK0?1cE2/id֐! N֡)+_ fZ)]lї\)zB8-;Nv [ҷAS@p-kwML:{F O 7 q)3]͢ ~z`N;[i]0Å;%Ʈ8wI!O7{{|Day {Te^gp:x0c(-F.P`FMl'l޳iG>GՇ>"Mv ЏW"t}CT;8ڱ3e.ٺ܈,X BI 3{yuq8,+e(p4N$@$@EFpOIHHH" @{P$ @(p1/@$@E`+_5.X§Z#+C!02Dm?%8(AϩFwD$oA0u#-拹*ʘW]4)[tͯϴ$|d[.(Jz'm]iq!+bq(8l#g~#/l 6:f Y;  Fw7r1C{;9UxIH}̋i#cuDEؾ sY1ۂąÈr."lw#3D>f b5dٜ~="{o/S|R|.LȤ"KsF5.xռMc;ĵGnVmaga Dg~Γ߮!u^7MhMz&%.Քc!f@Nɧ=v>˝U3~Zx.{=W$p`y\.s%_ӌ;;.v>S;5uʼnx-y6DS`Y}D\>uKFea}h/̺᚞I ҍ G~$p?K_y懟IHH`#nxqE{)IW1GD޽"|4fIY!=+)$n&F,È."0wK%}'Ap lD],M7%ܑv+W#6Mn mlDฤ9aOJiAj/Z"jIT`~і;8duVKJ|(cC]}ƔC~>SeaõB;5`?/IE ,Gl3 ^KEaG_6"躞+Z:3->l`k+"vg =$Fy,V/t1%w 1@q^K0C =Kv:F{S%rYO-c6ib60v̧Es"?xΡ:@`DtKho:>B>^ګQ܃6A20m$΁hl[#Q~I'pG:],"w7mk@m" I4s(}ż!E<\E"+~#G8O rVooy@s7{P;4j /n2pJ^&bl0Bp~|8<>*6e,l NuJwΐhmLzӗAH}|0~uT_t5"+w#iyV'~_;wdVׁOe[Ogyϒt{A|duT=ϳ}g{!֘ Ⳃ#ȯ582=$  O@)p @ *Y!#=!@F+(e2Jٔ](g6$R aRPJ-{$a '޶>Nd˶sӍ>'K"!@3bE@,}N[}ӕjViR YN@cE_EA&(nNuZ rkVX(=!|X-Ͻ:o]5e`v>f}V_}1Măƶܚv;yXm sߺY *Vlгjy+^mX,8*}jBo.>y>{3mZȢ80\mZm_nO[99_ {h';R7Zvފhwc{>k+Xu⿷ ZIj`U<C -3 ]TVxW3Qk&WtkU&}S@w0YT-k+ޯ:Yw]pVV5-*eM᭼Ύ;D`I^A]֬w;sIe mw[~!4o{pen %b59_g Eu`*=C;N>U`wwkV`v|tN}zﻨķ@˖wXaTytR(I~?X`shߵd'=s7yeYvnt̩nc.j?߽'b޿~u]'FCyhHq0zg j#;ి~Zssv'~ԥۜ;{9i|c;\39n-@aiAa/wW\D?,c}of?{6V-{4ww;;Hr jhBl@ ZOnOuԵ/9o@C_\$]  C)@}(u7 P p*Y2 IxZ)5]&[pdIXiS ,Pml];v{ftszX:-$֤琫fAc]3ߝq7>Xo.t!LXb"[$5:@GCCjGLknٷ6X.ئz~aL׽Pt`6>m= ny8hH_rMҭ{u kx \ceĹ~~w{mD}iv :Mѻ`YMo(}}v>;lmXáŕ~mA!>ļ}>Z-n_v=m0@x!qlclBCfh6au(C{`ߑl LC4g;f*OF ̧ ד fiL1%:}XlrCyHʦWuӼ٧=L?^#zw{-|>0-:wmg䄆bg@PY_U}kw vWWS6 pl @xKpϟBO@@ ^SDFQxQ9%@(<ZǪ'~+WO R9BI*͙ h,C&Zxg[hnd\@h\h_-6KC\[XuRks[r  ߡS;E=A@0u,\|Zwl]2?*k"B3 ~ῆ  uӞDbe_j Yg9e ,khjӁ`,D.=d2Կ슧@QPÈg"g  P 2sXil\mlL4TIYqQ}#}Щwhm_wBFekɔ Xoc7io{2X$مDž)@0;g]{د G@<,["mT!}a[Ӂ~%Sk | ,0H/tOW!GPV)\I@\@`}qŠNpr̓Pl\_ـR w>@R0_=>\܇K R{.5  5e9kJYq"K٤oNKT]˳YD (#<*|CEL Y7CJKd\lؠO  0 fSG)IOn}=ܷtsrrý)chPQoz]{ ,HefW/K<ٙs2iڼwG[pϣAWV{^: F{B@.0H&/Y"+HS[|GSzQ-'JfV*"}:/*3Nr|8 0t|:[ ˀ3/kv+O{ws[Rwcm*'o|mr-ɋGw#6H\ lX@@@@@@J{V\@H_Dn]["Ui6P"V-.UH_y¨hĦG~&>hBv@hq@@@@@@@@`1G@`..9`rd,H,Gw˓3䞷2S}ED~09)?/'7kk_v;=V+m'"S9=72CySU^Xԝi)v*7{{Ϙ+ʚKcd)mk0-}ޭeIߠ ߏ;`u@ZKKyqD˯x-Sd1β?U-jb4WB|8[fŖ˕ʤŲdmDΜ7&}7+p7jje2YsbYH>.}NqNܴgofm_pE >>       f#6qXq|[։Hԉo_=~x6o?QMThߢQeθi]^3(,jv7bfwYд<"V-Z&TGnyCgnZK䒟TIWڪGjϙԀ]}&RԗҐ!w/oSP1R%yUy/=n԰5}n@{u^869!3L8 3m~%_Rp}~H5؇rHw=_ebajYouZO;"fܓ}x@d#A{}D@@@@@@ x#kIXp^p(} UO ۩n5ԛY0#VC{gc Eݪvל]yfz2i[z?/p*', ۀŏُگ&!lt\2(8f3(n+Ι z\}Vv3z؀oX Y9wCJIb.9:Б򻗼#0Z+y %@7g      . pv}P ,H{b0M=ȔV2ij`2C͙=9zdɋJgw3"#p/րg6fw{ߡҴy|Fbe}K# $OL ;#:nc 2&{dW/0ϺǗGI$<%EpO`A p/T{H/F@@@@@@p˕ D`Jj}>^rZdۻ{*pj!{ܺTʩ?W_#>V?)Ex:?sNX( u}HyIOyUOpY_ln{Aj^w*W"(>< tLd'@YltMS3"7U#U-Jeőkaϖ{G42 =7O?!/$t9W@`p=ג3A@@@@@@ N!#6i;Tvrhʃ\pVr֖Ud?o 7:[[ md7U4?2|*: Uw[$_ysr'$|vy޽5j^A.=ʳԔE!}!G]]H4tV\X>_ߪHJ{)Uȅ/u<'{@Lg|-Ot|=nr߂z֞;^mL  *=uk((o!y iOŏڶJjS,pz]! tvg_.'oV՝SL p/k#Ah      䱀'iIPFl*L&1',ש8"S'ڼD5٣}Fǖy: i9y-pUr>{_\Bo`Ŋerյڧ5ⵉe eo1IO,nL&v9pw~s?^v?Hm(pӳsrS [5Oz)IdftAw+ٻ۸˶6If%+t/u0DrV=? [5ISUϴYBV_yEwi`}U%nOn~z_*﯐xwK~-U"Y8PC=@ pﵣ        OтCq$ ܶO쵆? 垷˶'&Kgpw5~3߷Udϵ wptLx|>>jt8k.)nL ߵUimYsmPpL}KM}嫢y^өZ=ܭ\,ML}9R3}W[*`mN%yk[UwoۼRl?=GhJ@0^5      !U2 }ۖUpU-+!ߕ/}\gضɭ؃ֆ&V~:?*Un~],=6@X?MӲ]zCh=U0ʔ~LS$x4c%bmi&4¶'*2E@;@0 pU       "!XtN*ޗʷݥOʙ*~rrۻ|ivW]74E"e͊N%TV>Be$ۀw7wϒܷT*X{T`Pxgg<"=X~?`tcɍ{ Y{!_}^;z       D'nν3 {- Rd [il&߳Z+[,W[>[Log3nuj+Tk/9 Nsp@uWgO epHןh}{p?v rGᄈb}ob@M*8U_{u<BL;@p pu       TtX~|oym=2=&֯4(Cwʎ_:^^2ie |{[w}Q>=M O 6~5e4+6O]I?ۓ@6@ki>&7"<.d*@ pﵣ        Lt iFy) (4y2kn4=~:|}LRk[)UN{ool1}yp0|n/Nqxw&+`'Gߩ/A -*569?SZ傤uR 2 ,B ^WsG+@=׎#      @(? j( (]KmWi pvR`my؃ͯkgfςW*{.zGt_c{:5+4v9_@`tpב@@@@@@@0{YQ#Ϛer5M̂UyjW^¹bv֖rVɋ/}傑uwUdB9j /X$t do|hUD^jԋU-]Nv9)OŪf_T)Gֿ:u`)sŶUqR'U;*h.q*J"bAgMsT_: pORw}+;%ϞT_]|rɀw.;Qq?[V"5i;[U喅޷ kBj7Y-?_'z] pU Faj@@@@@@B$ cpud'pr.Ձui8G[dm%+hptԖqlk p{r[H;>S5 r g<"= Ypraŏُn=WC5Y[5wHy l+kvZrm5bp_?^VY,d+L' 4MKοօ[~xJC`U%/+6 9V6_Է/\j}`;!dA p/ϩ#! G@@@@@@@  0\0;N~TIsZo25*4&˖ݝ|WMQ]-+圭*݇S{˹vǝbA~P.h@ۛ_˶Cu?J됻萯8f4ٍ-mp)U-~nv~_(hfoCfZ&/q$xټƗ:፯e]] u6pZv?@nU=7wWW_kbyz뮯==K{MVVy 6`֒ۗ 5IpEW,MylD>N񞫗6~z'K Tp5 Jlt@@@@@@# Fpe @iJؕǗ4u>?8AmWqws~XV]{~=8>MtvWmsW@wM7MU۶~S^!Wض{U.j ৪ntmW%'l⯾㋟vl.ꝟ{uڠ~ifvyXH=hgN=@$hTc9Q rN  >1g      #* p+F \[%I/VOoU nW R>|pƭr}t=ɭ깝cEIRUX`v9tQ?vJNZ ݪn}raGTD$i p')NlH[<]ݮ{'D=iO9ꓗ{5zɻhtj:#g      y+@=o/ C`طFv_,m8_[)m5msGI)ꠕ>[~tza4Z}Om|X{/]G@@@@@@0pU U9o*eRS>ۥgueO#t;B>i 9FRȍ/d}K䏻VjJ|m)sg l])GlP!cT[k_vw7[|δddjWc %r2XJvMo}]Yڵs}gv^8ƷGZ[}3]pr9kJ ==K]8*erV)p]){ܺPlC6ͪ_]ny noЁ kh^eo+L'f6h÷1 eGt@ ^ D@@@@@@zt^8S{!<8lG-gDu!|OީOTS=ڷhTlg3nڐv#0*&h5/Uˊip7p?--%9.[DV[Tu#uSd~C.@f-HoӢϛr|[mz-иO9G?(mtҝ}'pˆBK:~>7 h="Z}Kv`νGfi|4xr&sV׮kzάln B-@=ԗ#+@`/='      # Zs@@!΋@ x3      H{.]E@FQu99@`̥D@@@@@@@`d;GE@ k@ x3      H{.]E@FQu99@`̥D@@@@@@@`d;GE@ k@ x3      H{.]E@FQu99@`̥D@@@@@@@`d;GE@ k@ x3      H{.]E@FQu99@`̥D@@@@@@@`d;GE@ k@ x3      H{.]E@FQu99@`̥D@@@@@@@`d;GE@ k@ x3      H{.]E@FQu99@`̥D@@@@@@@`d;GE@ k@ x3      H{.]E@FQu99@`̥D@@@@@@@`d;GE@ k@ x3      H{.]E@FQu99@`̥D@@@@@@@`d;GE@ k@ x3      H F%?=:oh|=qBt9*  P@A"D("/4%C*O)>T;%=Yf-ۯ_` 0܇[!      @ cAwt@@ C{8 P s       0! F*[ G܇@@ pϭ'{CQ@@@@@@@`@@Hp/*HD"=?nmPʓgDrDz"ET;%=ؙ:lCױz5?@[ps<@@@@@@(0pnEw7.) D/஁XHCnݙݐ{z]  )@}89      @0{TdTe %)# @hzJCs( P s       0< ֓zCpw4isT  @,n#RdAwr;u+SwTpw%" X       P%?|@IDAT3QS{t^㈴N8nhw[rGdUowr}Gtuos@@ +D?BvHϹvw+@`86B@@@@@@ ;-g՟Xv{vG/- wO=ǫܝP.ӯN7n߇*Oi=ң&ug|,s:[-i!@Q!@}T\FN@@@@@@W wnj}Aw7~s=r3{  Pm,r↱b*EfLݠ.t 9#%@=A@@@@@@Q'k5ؤoڭJz{c[=tgs@@Bdx=j{c 5wއt>^;z      w=V=V=;{'{CqA$  0[_[HHM37NPo@ {9      B hAug{\w콡v7nv>o=yg7  0B.#rOcAu ;?nv_Ƚ/mx  B       0 E_hBxݝzμ-ן9>BCrb  @ ߸H]E_p=V]BNQ,v7 +@`8C@@@@@@IݮcvnaxvwmEO\+@@&9}S *.#'      + ;eu ;S{>el"=:uGua9= [N*Q7ܮAu=gM"w#ϊȻߋosv  9Yy͗푽VRup{r=awj{9 [`j稿A!2@@@@@@@@!ƝCX<wZwIvX.~{[  @뤧ٗKuR{<;[x;v!pB\vX{/]G@@@@@@0(nTqwh@?;^L."}D@FXk.qǧnX=qUۋz{r=N7oΘ0 s@ Cx2      I7 [M'DaE"Vܙy]܍7`UmDSTowN7Nlc *ğw  @e2I|b ugQm'kwŶv0L0As@ dCv.      M7 [(k!vv7஫h6e%Tqw8ᑻ)  O 8OֲŧNP 3U-cwُG#>]3z       [Hyp7ߤsnxݝ:v{.}lcg<2˘A@ x"'K} {C{;K06M2@B(@=.#      @<1nK|[I~|,:էlNi:qOحnv@.<[[>:Zc@@ 3D{@( ۱l>!.'pFlH{.]E@@@@@@0 8X-u {e@^{ݐ=Ie:  B@*fּ f,nb߳h{ ;~I}9 N@@@@@@B+ j[[SI'>|Te6ߣ:uGu;{~Z'Pw]:k{?@@"`_(7v+2 [K5>_v5bs`@ s       ~'"; [ [=\>ܭN/!wgan=]ֻo[{Zl|2&  @ $%ϓtvי0{&>\$      aDCp7}, > ],      aGAݮ@,9eIW+ry  HV\'U۽gJݫ< +@ݕ`       '>J.Sz-S@@ {.]ȮDm@/@}_c@@@@@@FT`]lw ! &aT-3)`cS@w       @X  0@x@>07V@)@}t^W @@@@@@F^3y@@ 7ja '8d#w^       ƼE Rs@@Q%@}T]NNșQ#@@@@@@@ H{ @@ k@ H{ @@@@@@@ p%;B@UGd@ p%;B@@@@@@ @@@ @@@@@@șQ#@@Q%@}T]NNșQ#@p"",V,-OTEQ=/*}-~-<-"lْZ;E>os?kIIȗ zumJejYgfwƛ/W*KFK_wёYP-UeE}X=2snDo%:_Be=cŋeJd%JdlMD:Y|6߫J#򃥊DW,s폽F>I_7k-Q^̌/cgbK_X~z,ϔ9rvזpX~F竌-,v~۝ٷ{jiY|]K>ۺz<5S1+#{JdEd]׾}'p) {hϗ w}lu<9so⾯e}ؾtk~rkY61Va٠.  0 Vm8S{Ǣ?g֩td6B@@ աo p9{ZBU&GnP -4_k>+j CCzjn;_lN쮁k_DoJg=#{eteazyӞP"6Mn5Ē6?*/~?<yuǗȉV6+JCE5W{.vtS=2}TOtZsABV-k`a+nxcd7vRf*P,ٿϚ;hh!Xo=gmY)w/fLNq\m,VsDk_uɔZSׯءJ&9k/|%<њ{ܨB[k,z],Avw:}OIno\!6`+UkP8T|t ,~\){w8_!hxíխoXnm9/߮JK~=t"{t~hO;6ᘶfuɁw.ۤ}MwÓ&fױڗw> ;6B@2/n| 0E@(d|9w@ 6< BVPa͝_/n,;Rm{ ߫! io9mگ=gN&aEFZ~ CyONkqo.{Mx?`'fR~pU@@Q%r2   >8?FFze9/@`,PkeeOHzˇ3A RUKu.#pOhIN%F໛SuY\E~>vcU?תjuLu[FMW=>}S-;:Wp6Z}]f t?l/fAuA.X=cυzG}.9dm~dr"LJYu.NgpGoݻF*㟫smbfkl5w+7rV=OnA?0i=qqr^,ۭg˾Kջ'C_4E{3 :&_*-*}s˵@Y@o ۼ|lDA~qubwɦ=o[ 7,LAUMn܃::p/V:dTm2@@\ pϵ(C@Gu,@\ pϵ(CF1E R]׌4K6vx*z:lbf'/w60? wh굗>.yշ XpJ?X*S5m hVow} m`@}Mgo? $x:ɲ%͊"W?._g8̳ fC 9D>alwӂdݡ齓I6nwxK?#.A߷Ȧ:tʤ,`u:XjwE_1Ej}ps@@ <=I=.A@A#ϡ@< !"i V9*T>ym=VL4X^LUM,4vC[IOm/~k UԵu{جELyU*ҳ ƙܭbgT8l֐:a[296>ATgg>f˛_w˧P4,N+QLɾ:B*m9IIcڟX=6P&:vo5xIs5hgEdY5뿼-_|n47P,wiH[yyS_''l|SֱZ(ɿgEsZrYNu?}3=9DZҶ @ emdb_bzܑkO-pӞul}ə]bwX/?Wߓ.S{T0 ^KungW/K=)qp}zYTz,{<eCÊފg<"o-GuvR,z#-CkXXl $>~v't6eVw8fw~/e^agOӳR6J; jYsuJehfo]{}}'A߸B6_.y~p ek{-Uj|i#`G}l 6#(tf4;gKu`ʉ]2^MF?}'YmEF_E>&']i]&Hnv/'M:hg8[Z~)xC' @@`$n?MݜYSwNKT[_(;ZQVX ԙZ hulU}ZCo,ylA} ҇򒏛U"m4Dh۳m>}[cZaX`ڻpSennjr*aIǿۯL=[+姮|hZ=>)ӻ1;lXk7& q[c֥닜@XS{+gpw=` 9['ۅ}~mޑ6ҽgڙ^4^*gK{ڧ UrJ].ep?Sg٪2a} 隅ӿ*fwL+ׁAMAw0 `'&  @^ < S@@;/@ A*,CpR ZQr=g j}-?샓ĂA[ keܗъտf@<ǕJ9!t:{b/Ƀ dRA|r]o_k@,{hAOd?l叻! qꃉA}eV-ue+rdYbd HAZf!tߩoso?y{ [ey&/ >۪BwaIYUG]Irw3 y=`]ggʹZeҬFbkG? uq}*֌ jk,i-}uӪ{e%`7{k&:_#5\ .vq Z}-)@֠}AA$ j=:Ϙv ڢw"dNۼRlMr#K^4Wd$ZUϧfw)#pO@@xpE   @}9 B!ht. V-5m*MsT_yu=>OCާoغ\X`5w [Pګ_tɔZy¡wū[MZYV (>Mw;WR׎CN鶌w3ɤֱ.]"gi?cm@& /n`VΛ3tjglXAgK:wEcuebus6XvfwYqbyW xۇm>F{_ G܃X Q߉x3   p"Xv\{/ GR1RϷ;Ro}5Z=vXl61VջN6ۥ[r ܥUzW||+ƀj^.?14ʹp´z3 j\7 Y1nS%Q\kVE{0*OznY7U_k2MzC~v$s$ RN|yaju$7)cĪ&6m{[q 9yO_+maTjb}ҩ6Ӂrl 3[:8`=XXue Z5V6>TEl|l`nZ~V.}F{-AIqw_`v+}qz\4+2/8]{Ѐ=u:XY`U.Y6{}>ZPg @@:0yĩ˝=ֿ֟U,q{tGuİ#@@|}$,@P @R uBiX9}|cl?xHlyGpwѠ?:Ai,mEy/UVٵJ,ΏowsD;=xÂ%vO|}}fp?*eΆ]DLߎsnyr^ ZaQL_^'TfOiqUͤY\?&?j#uH,oi5t{ by& 5,k@vKaGv[{̗>M{csvRAO/{Eۀsr1vG ܙe.'_.|6?1{ {~nTN*AQv7spvo;? w>W6hm_/R˓cm.Kw}-ܓEx __p וs@@ = 0:Y!y/`IZ]=Y3mKR%'nqy.YİkLNbc- U`w[MYDn*ޜZ}b7-*7Ӏ~Z-/7}XaGWS<*I\GH ]yɋʷ̓{XeEԮ]G׷w\-Glߠ s[oySɍ 䱏: iН' I~2\8aZw<5<_2kngk_vɹ7Q#5At@mAߺRV_<X+6x!s(]lAm)s mll )m|rImݲSwb7P"O??lw2wܽ# E;7G5<@@r!@=}G5@ҊV$KowȞ*kZrzɭC-\2W>,wjy6UؾhZ`VJPU&]1o)'6;Iv fG_*![U֠+jSLWA3o{OK{^]˷$O=>T} W@=uLn-i@1[X?{uղhu寯wdŽrr}n{]~3xnW;ȭG+2 -IyI}.֧[j8fGZ䍯AY AG7Q;/b-ۤ{{mgX1W:"w]w%pE}~/0 $|4h]6ՀM;V2y_Wy@@`xۗ r  9 DvBrJ @ X BpZEG86Y. A;NJ,b`~t`֭Z,47^iҢEUjgu4 {UlWҵV=UzR9aL$~敲ұxM 1,CV٪kάẇSdZUUj;^YUn pK扅3iY'_p|u&LA'KF䳦uPL=^_P+ۮrE:-tޝiƧ~AmrG uaVUnÿڧĀW [_w9Ay{X}%ZeVw[0}Aе(s~\Ι tmGg6Y>钇o~'&/vC]yGU-|{I( )$ҥ "Ui`)TD+**I (H@J齾ps4RfNs~LV ~~w^RdtYwd2z*%/,HOr󥲡kN)Qrp4CZ&oY^Ty){w^@;((O\[~n}mS+kT? %|dL 0&@U" 4&`L 0`{ rv&@%*:-&@E%p?O<)`,-{݁!ZEiIzMHM=d,Xr1>o~DD$&]&<+(2#w*Er(mmG Q |jsfg-Pf<ZFQ#kk7G7D8'z@cgkF'~jvy5LO}ۦ' #7ƶua]u(*#ӎ@[3`"oz[i/؆9i߁&@VQ_4"SAh\*oLΐ@%^;i};69R^k&p=L 0&(O,p/O\`w@|B"w>ޞxOEw7 -ͅT񻂟zФr2%5ΜMFa ,#3 3Aʻ=\X^GNq &(%$XY7[SH_puBA$Fӓ/4$ - w b$NDȗutn_; D};½3pzV0c5ajyn 4L8èVh[P:kOH|]u~R>ߧ;zN9zˆHd^kF+]_ $S(mW< :-U/kb>OSF'yÂɵ(̲8?yZIYRթ)E:\Xvd7Kw *SZw.))6Kϯn TAz& A xA;_VٱV٢}ʶ k C9Nv{ @gChn2MK(>O5iOjILۣK5 &EyHz'5; PeQ<%OGϛ|4Bk|qy9 pZl#k}P5_Y\ni^ۊ?LoSL 0&`eA? J&> a:҇Dqk> ى{t^å@)A? uj[5nH-Of.nzu,ݴsݡi ĜVB ld\\ ^0B}oہd4BW2&`1N 0&J@ ."3EoaӒډ| heX\^_EL* A|Y-~S4U(2dW& J /ur12Ng4FAy4?XVz<: Б%rmNKBj ( /hZ%`.&1dp]i}7s#=֕ؑ<:'&KڣM *C,B&`pZЎ-U#4a})CsbRSenL3znzK+E/?3?S=ioĝrƵ3;R9r  CJSNwpI|:ÌU0"2ຠgsWu2_3&`L 0'@bFvZ>2O )9Z(`>)[j{~-$n>$poѬ1E0n2q8ߧgBnN.Ԭ~e\>tP_Z{d‚+ 3@ﷻm,p#3 0&] cL 0anecg;:B"Zi1|ƖI~sdBe}$- -gL #/QҳQ5;]tR9븋G;m {*lZ6FhԖJu9ƣAFʵv<[ \ތ-]0QU޾An=+-V48 cڨ+N1%Kj eP:^{li@#+ ֎l89?vL`HOT%^N[ҥcZpwKZH0_M'zVwڳokZCܘnh!EU:DHlL 0&`L}Ne{nQ' 5kS#ȅ\EyfprrN&;Yk\C|Z4bVES 1,pX^_}&L 0&`@;~j"ʨi4jz|5$ Qؒ~ʆE_Z*j$bOzlJOsSZjD~~x<ȰWIDATSV^ kFyi !Ulnm(޿ZIѱc{IpJy1*D qcUI'x[%G$[&m'G9+m;UFH?z-ԠC)WL` Lo̷9rߤz`L 0&ʟi?~ X!S;@6-ts]x``kO" +pW2&`1N 0&t*pX1vY{&z lª4:=L\ Pdרc#!o1RHC{/'éy= r4|B>D|h$|+["NS|R 릡.TC~Heqp]<~륺,C^'j)} ;]/1Bf//=F1CA)$h{E[.qtrNGp &^xPnB.It剢wuh$jߊ 9%~a(rWڏGaԲTmfL 0&`. +иpS=Ǎz|MXஉ𦭂u[VTNX^oLEՏ ܫߘs`F%N`lHs˓SuR({*ɆXVY}Ṏƣ$4)]WNE3zAzNdN#!Wc/9:,D?6gF3LFgÚw!:ljpqb&P n _՝(:9T~кCE7PnߊkElZ-39Hк|Dc`L 0&*.VWaU[r ^0i\ 8'QHNI|ww7h٬1tlJ\ks3;'v;:PsԮ mZ6aErF-XiЮUs ]k@lzwR㢭ojnf.{"MvK+Ca ꃖ`ԙaNܙdfgeDii...}mսM^ v7oBnn胟/69:D=;> 8(zu N1 .qaD}ܑx(˧kmxRjׂBGcD>5ͻ{kQ~/SuũnЂXs,@!@Δb~;QNs}f:M✤o4@Z*/rq*JQ wGه6oEtAHW xL 0&`L Ⱦf{yU$*jH׾mKt \*۴h=vRaIvVTnzЁҥ#[$ճN@m 0[!&7 ^zxoFp [S#ձ[(_nYw EgtN۔ ;t/FEbraZa :漈vOy/N#)Z=79ɇ 1j9\-nj+qtppzP~Q(BFm&ύKsA&:H^Xh2a!P~y{?~FCe%pd[>R׉bI)WY45 7i9(?,p/?\`L2`{e-n+`LB"z: t{Dd~@bVoɾٟl\џOb ]H$DXn -NO"?e\N·'ET7bb>:#Q<h %o6#ԈKVo+({kG- -PsR9f;?>Hό>luc/XOHYYt^~o i}^{=&P=ɗMVׯРuM.64Y_#N-QM84U;i3AÏׅ[+hO,Bwڝb6&`L 0&Pd9)~_nGGH?Nܣ<ǣ˶\:ڋ+~^/qD˱#]H"WB\8^Hqr XyK"<5RdTħFGr{a`^RqLIMEqNc"\JD.ZmSƏDQN(Ozz$P_%;q ut)Ep3rA|C 'RDpJ"KY.\.t- αv0ѾTGJ.s8 ^4V=IX^GjFtL-ݐƫ#SZlǵ)_‰C\zJw@`{ژ`t+@IDAT`և@:-Q!b޻ػ~W\{ T`CQ `CIHsfw63dl6ϫdwgf33IX,4@ZY@ػB]X s_G٩]ee:xD.3ۆ͑qS&lv!k'o s3.СPdbDŽ6ᯅdEaĆlnޣBߨ$eSR[_Dݪ46EcjdԷuf?N8#e3<-_Fs2rpY'O:N7/ߡL.6x9?X(o8wO",1=H%sk['tu/g'ru78$M^`ە#:KIaYo׮;7O(t3^Xjpw*<HV#WY7~vF[аX:_|]&j]W-QwNK^&rlmNq%  ֵB C@@ =4V=s^g=_)(B& ̙;OngM6\Wb/ rJ;}oŲr}tw7{켽9p@l|it^z|e⏓'}t?Xi=yvRXX(nihX(~B4u=d^}55q3ǟyQ~3c]nv2q}##ݻ9˿oy?fȓ;s]yd^&9o~<^c5Yo5}h>:)))3gp]~soGꥼLN;pí<,u g7Qܛ|@kjOs7['[7k9Pvܻp~~vh"eCR]ݒw}klŻ;m}Jmm,gi fۜm_U-U(﹋wMkwI#_@ eyJXe(hWΣ3qʮўFב|Ey' @T(EVf?$5M3b\dG=dT+uKi;p=ckO6py=|^‚[-#AܽOEVN{.y:p4&[ŒzE }νX>.켶߳c~~o ^HF?:Ź'L/]B;,5E e:wݶWÖɳ9AnpuJpyWlwԴs%ީ@~%TxZnhA6i?o&+V$8C.S-}'qc @@x~mzK%L@fe؃@,nAwkA^yC{O=VyMw!_g/jB>#Ö᮫r7h=,=WraC%}e~y׷Ao(la-:1w/d]{Y  &J"%Ы@&WZ­'=<9UC<.7*S+Z{S X8m}6#:|wvW0\P;gtU]]g*6l\@\w| ]JEc,V8]pOMsh<:+BmE5AP=~1^#о{V/ MSUXN}ZSW؝,Ruyβj.DcnDMmp. sOv秠6l 9rtA{Y'[;Lo2i  dZ{E 2/ypS:v w~`̘5[:vsN;.to̞3WS ϪJ[C'[^SFnt۶[n"?(>V*5&nf}g; n3{紿w(Π";_~O=nM+=_+/3} -wʯˣ#NLw}?WWٚw}[+m~>|>N<xۮ^~lO ; |A ܳo@ @-%CdA_f/ ڹ[;Տ*iܛ4/۔'x:l[6 j?X(0'譬n\ĪVBܭ cO:'o\~S޸h2t}=2ifbp]KcÒV^hu|ip{=)Pyv*`w8ZqΖҿG@%_Ur Uw(u~]:Wg_;_;_B K䎽zbe=[,hvGؙo*[',INMnm  4Ms K16YHpſIyezpw+AY'nv|xVHp힇e;tH~m tp[2ngUO;TC|7'y1b:tp*t$O=3MPHyC|K9/q}cw6m}Y3NW+tת[wkfݻn{6`wjj Z܃@ po}cEmq @|yzWYwbnH%A#θ{`L r]x0>TB@&UVYxճdz|-XtU{%[lϒZ5wIp^cXm˻Կfɬ؄#mC/h\X>z^b~Ep@@x] HpUtn!~BeY&8F8A 2 /ճsPg/7TWHNNSGj e?q7q,XP+]t94pKaZ譖*Wpb/1V ,hnc@x`H'9dPq,},v]kiU*mF`in  |^,cB J?k@?_dv@JwM(*q>VkQZAX,tX*j[(}D\Oh5:2ߏ3EڞV~kL+4rt؆@zU8^(P>yf^R)ʺ7grYZEڝly\{ǿ|]ľ_;זc_kVJO=5\nǵL#;_7#ܑʋ de˸G;2s6[!G_ EхWC[4=>wwj8;듬篩[-+A9hPԽ0V:[}r|]!wP ɚw_ſ$}oȵ%;S-)99=غ{^,# cîQ.ʼnlge_݊^|Ӫg(͙]k,5澏N; ڵoEcjy_̺Ry'zN_xOykYNjӓ/C;yךېcڑ,~ ]X襭Z=y] Y,Kw.]tv'GM;@@ޅ{~Z&/ Ϛ=WzQ'nm<W;,׷J7G뮽޷?̋_ '-%ʼn[0Sr`ZbwXuHoq~g饜穾<3:O9YX>sgpS̯[~l!Ub@"_%Z{C;,:xl`ZK7n=w8%yR= '*m&z)G:$lV ٣R;m=?!O]kw=QZK6l㌙euזyPoxmp pϞ5KBڒXW@ ٰDܻ"pB3kŁAAL-4@_j8$1(j#ݰ[xhp~?<>,jfd7 eH}*dNRpS]?)K?N7zT2I:X0_o,s.岬B//d,,6<2:@zgYxBAgޱ\kaaﴃZ\?h,tns39MK݃;}Ӝﴋ*cAb:Zw<sLgvD u4q9~9lWڜ䕉2b\yǦOw^]Oeocz ѝ螿瑸ەin=w%9CX:rZ4rv*յڷOcUo6m ~sձV==b#[GuǵR] [xGy pDgi@qivҾع-mW .GNV>it>v'oŞuksr:7 Fh.xZlߧܢT;E>;n0=xÂ;y z~[51Wޛ\/׿|g _6 AxEC  @N xZVG-XumxX^HurrX)A m_~-^&{i^ [++-S;L:[-z]UW-0nG힇łEbsknx9,_G:Vv몁*[on]?O> [qep_, }M ppwGw;mXPcޔq|LbUW^A3f:o֚pc2}FX-By㱁't9ogʠJ9cS9w N9zwY3nczyaɼUSɝ?yDSufTOws'Oځm?,uuN'w<@ 3@| /{@2,`a= 8jh(B-CZ*KSaK_K qoG: ~3*i&,~֥-waN&'lɳ/V'm,? im5(h OO~Uw^U'> 1́iO >Xʐ jàrܭm:V9wXFzts2ߝ{![l?%O rk,yD#wm[wŶƷ{6qo 4l0HZ}UڵKB{۾bf7P"s͗ ?a^aasqA@{6Q _PP>r: 8闦(wR .&ʗ_Om$o`<6I:npSμ-ȽյD}bc5fӭ]o/}Y Oír6?wD8cR\T$\ϸۼwsX?lw;*@ 3ɬ@< G;MA2)0Hc?o'L=d5q,iaOmjƪUZeZ%Al~>/dGƒQrP }[&Ʒ;V&SxUQ /!k7ojMZKG1,Z9ʕ;;ۆ'9q=tľ>A6}nuKIܬՠvex]UZNذU5:eqɧ=\u/8f,nL/n47[qIbtw*{hHK[.2`ߚho([׬{kǞ= ebEͮY$Gi'K6/AŊc{Zyj.m+x/4F?;ʳjg\*{ Or@XgP8sޛH6Ǯ\goZ(u5 @ZwmN)w x[ꆆH*[sd5|Q8; {s/'6tdc2svEZhRAbx4 !4T,;as磱_8Am=y)w`Zƪe XLq3N'nZŝ,qU>LJ?K 8 *n ZU{~,}wLmO=/ͿI ߧS 9c2+@= '@ *+h gRlOf>zW !C =Ew@c W U`O'?Z9>R;ܞ倻-5||VݵV3։^ssBk@4gˤ!S*θ7ENN 7C:ޫ7v`}ج3Kk\ [н%m/ݾA폹dk+Zb z oIŢ[*[$ԞN~,{6=ԐQuD@+߆sd g+8\E/Es!x-;p{Vvq9U˫o'hU[$}|Oml}* >{$۬olnY7JK9㤣Dfi';md5:σغ|gqll;yAaMYUͣTv {P{ñ*oFҽ<::wpmέM[;w' :w"Z{1Z.kvkހ?|o4;ll0h-g @gޔ9" @="ۀy[31hZhbU0\\%AeWLWX:eRUm}~wg&ӡөxV]3Zi_5ܠG7Tg"8>W-R|6 ۷BzVT?PӇvrŒV7(Xsx\x,ǞUI8cV$wH*L{fpt;~:Jq`fɜ:f6_z|̌TNz *4<Ծ{J=Axl)*>gj>Wxw *)to(A}!) 鞻翣 =ߛkw)jcԧ5U~Nv 1ZPG3nO#+ lvn=jk~⹵bN7nۧ\b-b͗"sCvYJmP&l_۝qb߅gᝥ3ziNi Zm񠹝]H?['m祠kqA *߉^u2( ;3MהaܢT _v|K˳Իaqdi?ƭ]Z|w%I2pvCc] N5OC@[~jH^OZtmxϋ@jDly(`-^K5$C;hIwŪz2UlOw"ٺUK͙Aգ{(DrR ߗU,rSuV0.;i>wV3eUv wtv̜5G}t-o3gIQQV)Y!Ul1?sp-&jg;O >O}Y;ms a47HN?sHIdh z[ϖ9#mY{[{; ЊV=B"AB-lI_[;Ye[6聝Ī6#Av2׷]!VZѾkD0Nno5Y Ѹ?: ܍UV؄%e/)=鼗 []v-36A v\`Jϼ:kzjrVw?*rׄW>lB>A6yH>nW]gK LTY+>Վ,ͫѐbP}AdՒm?8O^ -'l}>~Yd>k\845mNMmSKu%Ӏy:>X5y篰;QNP}gu_xGKx []{\[z~b9LQh:X{aBiplM 4nZ*ۯ`J}Z`wYq]d }^+<ռcZ:}gwKYPq O;_:?EK; ID_k,h:W'vםT_W3ur=y;%v CC#lxLN:n }nю P/<:?c;=  @ }E^pwAxDUtmg_ @6gSe!mL`  ?֠ z^}\lUBCnKY/d ΅ᓇtΑtGUunnK7D67Tgy/l핉ur` [5W>!w /[e{\x~ c:#BhwcTSmv Gڼ\ޝ1v_H]m~;p8| *8eǯ6jtڇ'uUto |S+u䮲Vk'=[%?pij(-K5 B3^n|:rSLX{ UZ1잿R۵Pn3D`롏>V}{e"OGH yU6y$l]M o(wW-n^h]~>=õ[Xk]H`֓_%[Lغdjx6/Y,o7u㓻f^.䝗ew6D /;mtoWT.v=b-YWc]K۵u$}/,džg2WSRޱ]G$ 9sw@@{Vsy<rD{V19CX@ N۬T,֬OT[?7VM ׆,/,.2{!dh{2|HZyua 2I,(4sZ{n-yV0w4Y p{3]4`5u"9yT|~m; йPNl?j)Z- aF|U'>5?vlj[,rҬWWq&ISg_YX u+ _7jtGt$ͭe3nIv]'St*ԯi, ٝ9,0N;YqvVQiҶLukM|ͣsPZl_%;)ʜqzyQ!v\c4 |H~:Id{w^v sn)kGi;o?UKt9}~ј긻Ӹv~Kh7@|䶦{䱃:D[M%v!;O҉yȪyw{vv nXG?iNV%W5~_[g+oVa*퇵')"sVc]A^n$ ۝#lE@^.i FyZiv{7k;G3  mSs}KmBhNgXܗ:Dڀ6XE@`I L '[/ZOj巀{8ikN(xUH^mI -7HP:Մ[b!4fڏrۇxm7TmU MbMc翫s*[ 6mACɛ}'k$]ͫ9-s7~[5bwiI֬C"+;w杗;,qNb.U:AI3Y/m=5%nwG8fHh߮Cn( p?WkGbŎrwϬUgNmI6%V6v"ij^Xe]]v{xʄ3o7'}?)u:=|sq?6^klܭVVOJ[6cn`g(wٝ h {;o:5}.wLw$׾]#YΚuy:w36:?%kɎ+W.5&ՃW '! /]! #0clp7^_*2@ܛ+t @~ p!-X[|a _45-lԹlOZH3P(OtȰYFڔP^7DS o'}_7T ۴* pomw,݆Y,-U(]KHB٣N8_B+d!d cS+6N-۔fUR/}'7O9񪔝[mJuT-wIHD'[g66h2~vmFNKpv8=kCq3IaE΅ӇZ63ScIPT`npaАm$wjY p{l-X6[-J?zdU\UwddG GڿӫU% dbK&Mz랭a_UB?-peg3) nX"Uv0?}jE٭l ?X5h-|dj}r pW;4Uț:/czv"9CCp枿p<өzΉz)ZE9U:;;Uo|/<ο9NԀ{e#.nvwx/ ok4s3ZkMXo}k1|^9l?OΑqS||7ﵨMz@D;Cb<)ηfwTzk,iE=cë{}-Ğb/5!ZS*{fS@@ 4Nҹ]/'E9Z_3̞/v}hHu  '@=='Bڛ^@~x7>hl&ș/Tݟ/&j2jVQZqq*mS6=ѿ}d2n弭#$iw+:V Z;ޝ *?CAVi es&iҰe$[K/46ڡcʗćOw׽u+#U^ӝ?U|<ӂDyu.{J}Nʢӟ_4{2 lߡ)hya/:*$Do9q;H fZ\[E#_.·ki7^eL <:Z3>nfG؝ukvuc>?v^>gtuZOR+dǷI:9$u]jcS:H߮訧J+5.Vj ; | Yت,]ofm  k<:@@& po##F{l( 9 /e ] 6z_X/yFM ZdnM66TNzyAm Z[e4`;ɚ#;?^ ےhq={ XȱBÿl};h*}4u8%W* ʨozCOG]1LZ:_/ͯ_?ZhXdpzŲ25մ-jO߭ɞMKjMrQs|ȻV<(I;#l8@IDATX@!6# mO{g1  @6gCe mO{g1 SVh L'TEt//pU? >:6}s #+c6-wUNgאFZT!݀`Xak5hTΠܭ6$6%҂Vʝ{ -XZy~EҧK,={:Qj Z5}Z#HRZ6td5dnzuWB&:oLְUK}Q /λ2072iڲMz "nӪ,i) 8ڱ}.k ZʫlVݵ\VxjU'v,i:Y6qh  @ x~"-D@H[{T+jw mE`ErFZ1s/h8^`oW  ⭅ e#,(ɗdۓ,Tj֬#dfٯݥL6rV]< K<:oFx+oT/7~kV+2]"N< @h?k8 po?-E@H*@=)o"V{l8 @[UW\[ii ?ҪVg߮~ҧK0c|{̪nscO*$VBy,$ls !hG,K:9xi jBz=tNH՟gΣSMj=@@ސ{^@@ܛMDŽ @^ p! K*KIһzv>lۀ   `'   4&AځvD@@+P۫螰OS'<:?a8@@@@rQ{. @@` p_5@rQ{. @@;'x?|.a8@@@@rQ{. @@` p_5@rQ{. @@еe<T\2Sy.7/@@@@rL@GΣ_g=_y] 5˱mbu@@h2@ ^e@@@@@@@ `U@@rH{ V!93X@@@@@@GW&@@ po!s@Q{>U @@@@@@rH{ V@@ `U@ C;UA@@@@@@| {mB@h2@ ^e@@@@@@@ `U@@rH{ V!93X@@@@@@GW&@@ po!s@Q{>U @@@@@@rH{ V@@ `U@ C;UA@@@@@@| {mB@h2@ ^e@@@@@@@ `U@@rH{ V!93X@@@@@@GW&@@ po!s@Q{>U @@@@@@rH{ V@@ `U@ C;UA@@@@@@| {mB@h2@ ^e@@@@@@@ `U@@rH{ V!93X@@@@@@GW&@@ po!s@Q{>U @@@@@@rH{ V@@ `U@ C;UA@@@@@@| {mB@h2@ ^e@@@@@@@ `U@@rH{ V!93X@@@@@@Gf tŋ_\/a&@@v.pBW(%ϝfu38' gl9       ksm>  !@=7k\#      @ g6@@+ [vsܽ:.mLl_h y,@=w.      * *F;Nvyr?6Rt<цYH_-rq  @VbWP^:ײaAvչmW:6¾@\{`6@@@@@@rU #wܐ =נ37Gl\g$   B+HX]el\=:Ng/':;|Ecys4@@@@@@uO@ݓi ΰXݻyx@@ m\wV;onw gpx       d]'[7'㾎FKZz[,@@`\uo׬GOUwֽM4xDgw6@@@@@@h#n'PFy,Olgذ6&  @]ڦ4<6n\3;G@ ׻C@@@@@@# +Mh'wu+^@@%)zm\ 7nCxs#      @. S>nAavoݿA5  %T.wJW y,@=w.      mQ (ݎŝ:# m[ ɥl܆#p!g @ po;MF@@@@@@ F:)ɬ#  @~ $ Lݕh'G@@@@@@H#[!  .@=܆w@)@}w@@@@@@ڤa6Xi@@vO@0@@@@@@h{>c@@| Ğ{B!@=,@@@@@@@@@@@ D           Pf           )$b@@@@@@@@@@@lpφ2@@@@@@@@@@@H)@=%#           dC{6Y           @J)@@@@@@@@@@@ ܳ2@@@@@@@@@@@R pOI            e           R{J"F@@@@@@@@@@@Ȇl( @@@@@@@@@@@S1           @6gCe            @@@@@@@@@@@!@=,@@@@@@@@@@@ D           Pf           )$b@@@@@@@@@@@lpφ2@@@@@@@@@@@H)@=%#           dC{6Y           @J)@@@@@@@@@@@ ܳ2@@@@@@@@@@@R pOI            e           R{J"F@@@@@@@@@@@Ȇl( @@@@@@@@@@@S1           @6gCe            @@@@@@@@@@@!@=,@@@@@@@@@@@ D           Pf           )$b@@@@@@@@@@@lpφ2@@@@@@@@@@@H)@=%#         {6`2Z }qʁ2d"ɷ:8l-ke;  @ Ї{ʖA @ @ @ @ @D& @ @ @ @ @ @>P  @ @ @ @ @hpo%2 @ @ @ @ @! އe @ @ @ @ @ @@{+  @ @ @ @ @ @>- @ @ @ @ @Z[L@ @ @ @ @ @}l @ @ @ @ @ * Jd @ @ @ @ @C@e @ @ @ @ @ @VV" @ @ @ @ @ @@}([ @ @ @ @ @  @ @ @ @ @pC2 @ @ @ @ @ @U@ @ @ @ @ @ Ї{ʖA @ @ @ @ @D& @ @ @ @ @ @>P  @ @ @ @ @hpo%2 @ @ @ @ @! އe @ @ @ @ @ @@{+  @ @ @ @ @ @>- @ @ @ @ @Z[L@ @ @ @ @ @}l @ @ @ @ @ * Jd @ @ @ @ @C@e @ @ @ @ @ @VV" @ @ @ @ @ @@}([ @ @ @ @ @  @ @ @ @ @pC2 @ @ @ @ @ @U@ @ @ @ @ @ Ї{ʖA @ @ @ @ @D& @ @ @ @ @ @>P  @ @ @ @ @hpo%2 @ @ @ @ @! އe @ @ @ @ @ @@{+  @ @ @ @ @ @>- @ @ @ @ @Z[L@ @ @ @ @ @}l @ @ @ @ @ * Jd @ @ @ @ @C@e @ @ @ @ @ @VV" @ @ @ @ @ @@}([ @ @ @ @ @  @ @ @ @ @pC2 @ @ @ @ @ @U@ @ @ @ @ @ Ї{ʖA @ @ @ @ @D& @ @ @ @ @ @>P  @ @ @ @ @hpo%2 @ @ @ @ @! އe @ @ @ @ @ @@{+  @ @ @ @ @ @>- @ @ @ @ @Z[L@ @ @ @ @ @}l @ @ @ @ @ * Jd @ @ @ @ @C@e @ @ @ @ @ @VV" @ @ @ @ @ @@}([ @ @ @ @ @  @ @ @ @ @pC2 @ @ @ @ @ @U@ @ @ @ @ @ Ї{ʖA @ @ @ @ @D& @ @ @ @ @ @>P  @ @ @ @ @hpo%2 @ @ @ @ @! އe @ @ @ @ @ @@{+  @ @ @ @ @ @>- @ @ @ @ @Z[L@ @ @ @ @ @}l @ @ @ @ @ * Jd @ @ @ @ @C@e @ @ @ @ @ @VV" @ @ @ @ @ @@}([ @ @ @ @ @  @ @ @ @ @pC2 @ @ @ @ @ @U@ @ @ @ @ @ Ї{ʖA @ @ @ @ @D& @ @ @ @ @ @>P  @ @ @ @ @hpo%2 @ @ @ @ @! އe @ @ @ @ @ @@{+  @ @ @ @ @ @>- @ @ @ @ @Z[L@ @ @ @ @ @}l @ @ @ @ @ * Jd @ @ @ @ @C@e @ @ @ @ @ @VV" @ @ @ @ @ @@}([ @ @ @ @ @  @ @ @ @ @pC2 @ @ @ @ @ @U@ @ @,gM|[=ΚYMï{Ѽq92ѝj_]e=΃w~LG @ @ @@= [ @ 0F0żeo) XV;AgYm۶Ȑ"7{6vXGgӻC9Y @ @ @+* ྡྷ;f @ @ $YTHiRi8Չ/,Tz~'k}zV}cKf㫥ȀF gv}oP5 @ @ @`yv @ Г@B :&:}E'$y^ɳ mXd۲pg?3zqU?NL @ @ m! @X@lls@IDAT1lw>N‘ L& .)iϫzOin*/#.*rN9E7W;$^vʲ?}nN/4-@(~{ң @ @ @`C+։ @,@;[͋ͺ/mMRE"Ճֳ [^ͻy '>M[wojЖiW%U?)|\Ui9(̂ @ @(͈ @b`mPv$.ת~z~ԏXd~1_ήzN-;#;kT6i{ϼ<0]{]l=| 1]U݋|u7WE6T谟Gn  @ @ @ ?ϳ  @ @Z $о=j*ޜTh5H5CU`OF{Qy̻:gO.cJ_H@~+ߥFԨhv`giu?4 @ @ @~- @nb{[eDGATq,R g7vY"}8jU2ͫaUP?JӶNW-7w+e w O.Gn"vt5>p}؄ @ @ 0H&!@ @nR}*b}>>q7p;_Vޭ-@^ <#ZueL"${:~:݌rqd7Ld>g1mǘ|tDw]L @ @pS۲ @ @@nuG(n9:n|rb?J<{Q*w*xچq+ 5s%Z>.Q!  @ @ @` V @,V 7{Ϛ*6=Bt*G?5.,uux9,aGo E"}DwW:$@]ZU*]LK @ @O' tL @/ 6*|4'e Mt{¡uǷq7C]*rӜV% @!+]c?ϲt:eUB @ @X"- @ @`JX좼^fߪۄٟ?/㯣NUS=UZ ПU3?_Vkm'@c9"kL @ @ @E/B2  @ @۟v*Ua00 O;'W'(Q R"Aڅ*ꛎE )v6pʈE| @ @Y@}f:O$@ @) ~;:nτܧk2Է7oO󜇦9, @յ@C'@`iq'#]vgܻ2U}fZ @ @xH@! @ @HTw]AoR kn;õ+?2,QM`B52(CF!qtz};ϳ|qFx @ @ 0Y@}G  @ @lV-j RQƒ`>/Y*CZ @?|nW}:ԿC]܅ܴIයM g_N^?u9?_ @':Իz1Ss[vHǦ eW7C:~ @ 0$! B @HFs-DMvK2AB2 $о ?^_T]0^tH&^,V 3G}yxU ӁR}ng3%e  @ @;  @cg_ d<]҈܄S4pm[;0RE2IEɄQYr}? ;ߏYY:H=fyKeHӄw}NyoG{%2ZF @[@oq#@ @= ${\E= pt~u ~?0':{S=wiV*CJXgkM*ZFH [v;1n˾[ @ɲCQ}_V>z @ @} %m9 @ @`w7Tp׆#*8Ķ[߫?6*q+<ݎQ?wW:8uE3=+/pPdp[: ea,  @ @9  @ @PVCzn> 3*U!+@3 <̓+9+]#lW{FH]#@[x`Vh`u(s3"0gz( @ @ܟ  @ @"xl( .sTMǴʺ$z Rcs  @`6{r. ]Z:eWFgZ,0ώO 3;5 @ @S?y @ @ _׆) ȇ >ʹۥ?-8@{B w]fEVD ovWwߩ6eә/G-_t?$x9qKlըj϶{{c @ @a kX @ hTH}-腚Agz!j &J &Dߵ LQi`gyA!@ l߬'u[ٽ:bU]}}__ՈigY*( @ @`4/ @ 0׻7Uh&t7kK=[PaM*pҥ%Tpͨ*YUg^]@p$)[~v_޲l^U%:~c6/ @ @/  @ @ rwr$lBӶTݮ}T k @ @ ?V  @ @@v+k$8n>Un߮*[M5^*ħBFVM lގ>?Uӱ= ] _yu:s1ן#@ @Cp~ @ @`J7U=վx_U/X]xGKx>!zVz~ gi۷ F>9V}ANA, @ @ ᄋ @ B{Eݣ $2j ޝ-~quݜ_6yϿ]7FJ a[:h(* KF}\|ХCxY  @ ˸׬3 @'[w*ȥ-@B jWq0]%g*> wH5t{(^tۙ} Z3ĪtpgG @J@d͗ @$ٟ. *Y iUrVZB /<$p?Na*ޥO{Wn矰{AXop_vxv8Y @ @oh @ @`ͫ I, O?j}vQlil @ $v:.qH*/M`63'dٳNm2Ƕ @ @ǻ @,f{RKw_DWUdGR=S]#@/zwyp:n^4Y^$N霼n~Gu~K @& >g @ @Al=o{VB*j @Yt߻nOw?-F5 @ @J @ Pࠪ\*sYT{ 0<<lva  @ @ + @ @ lTꏃg#2VK{o 0LUywir;kX}__3cϋU:v|8*v @ @pja'@ @O$.x͗3'@S!XkU[M@`5Nɣ=j[ @ @x @ ZFsw +wQ ߫l8 @ <Thޫ{~Ԯ_GG  @0"@ @~hv7%&"y @F[uҹ9_/RqzydZ @X]ݷ @VXF\}wM#@ @1NjԊ1к.yk*j/n @ @`s43 @XUSQyt өfo>GVu. @XM!EU?Kڽ~;n_"@ @NLL @(zVUKm k;)vB~lOy,k~X'x%ݠ @Z0Wkd)/|!'O+_jO#{:;>Ѽ؜pQO.nUs%@ @p6 @ D E ffi]YƼ*nϮϸl,DK̠ @h+TޕZ]F t Q ǚ;f{Piun:oG}1ye4^dg @ l˶Ǭ/ @$UW)`iv>{.'fO}=iKyVx"N^KX+y"MF~P:4if ݯNu\{{UT}:N` @ @/"  @ @`ztҶkx\ެs{ztn=,*eW-7w.WQ; қuQ^ުྺ֖ @>nF0{K;dv(_Q<ݴ?W]5p_&{ڳ!Fmuiz$۲/e @pKr @ @`@3]7nn3ڤ"gT^T̶~)*~X w參% 2 зo~'t{/X޲ `WI *.-mL0KGyUen @ @Cɸ @D aQ =iMzpcTSK'@k( fF L=K_k zWGggJרҶC:tO۬ ~5n!u`/?O @ @`6< @fXd{0闩^"?T}CZ9/w BB  @OrPnF9}ZF R!wg q*?=~3P|>stNX~^#OqeXv{>%Ab7 @/ >Ž @ @.\d }w අXػ<+\P=~m6t-Ŝ)w ,@? 2۽d('!nwX:vJh;9/sQus^?k @ @`$ >pK @$ؒͰuf^g?wm>_U^{{[럅=⇿UUm;'+DV[`*Nڱⴠj&lAf~w|wO{r^~u*Nn=7ӮF*~{uʿigQ=t^Ƣli @ @`d @ @`r1ͷ뿛ڙ Ӵ /E΃eURڲ MS#\W.vulVG[[]ݷ U {]}gv &fd U޵^vCtT׆!0m~1KaaZ  @xc= @K(B3mꟇ.N?T2Ur= O}YCS_2ԛeÃ9Kp"҉ ~,rX6X{|oOԮA2T~}_qw飞ψO} ] l?o7{UAa^'ytiYoU߻ @p~V @xR_^TU ̣Z*иSUa햑j/<etՔU @f =gCت9}=^^_Z߼^ԨkyMFFꦘBs1vנ~e @/ >Ss$@ @@/ o>uͰk峃 jh U=}b @ `$0 p/ yحciewQZ1O_r8A m5TÄ<4 @xeutOwJ}̩{:bڊ VImW9:P: %]9ϕjy w @' 8{K&@ @Ri*^ޮ ݛU*Z*mF˻9 |uS #@9Ӿ͈V{)`m'ߕQJX]tRN@xBtߪ,m>HκhG ۮQDruS}9?-K{:o8Eݴ @*]F @ɜ*{ۛr _S~TeO0u~WU ݵ{I諱嶂XWI~K6X[VH _jt.E{[v⾌g{7a䃾r @ hE'@ @`Ja 2{*8W$a- n9Kxu]B8ߟ]@p{ X,,nHǘ.-GY g#.r@:q4w5[sfpo{ @pr @ Q"m嶆Ţ:rGsq(CmR~rѩm{`ݷ- @ {oנ{?W+^ntơN+D=t:m9to6pUȹ4y#7s1.K᎛ 3/k1]MK @@}[ @Sh.~֡|ǭE]I=}kx`SrS `,jiRy45 @ =k[Z W5bܤ`k湈5U>+R=]qU _R 鮅4m|̲^9y^wEBMgGS  @+'_ukR;cU5CxYMj_}:Zj,-M>s)]݌P]8UݻŖN_ևǜڇ:76l @X؉6 @* 죡y Tz"5N}} uD[:嵛sW.H B[.wTo_fm  @^ro \{& 䘬m}y :fH>i|%N<Ū3Ϝ۹ WUNA:$X}|7˲' @up_l  @,@**j 8|^ $liLyMj4&#(T[ MDo:B:uL"^TvޕE $Pp{[iFȱa>Ė eHؽq*맢łz O =خύ:434kQ-? }=6 @p_ik @,!uzYrqB ](P Owꦶ O|)s r)Q]hOOr> @ " a @xSg2tQWW/s12]lOؒ"vZy߆'mKmU'=c ]'4 @n 20]78S]`:.'Ւ Mtp2}wQK\9!o'Tt?sNe'9{: eM|F/V{>真%@ @1\ @% $蚠Aת?U,Or,aMyi,Z 5p=$8h>,՛Q@~=2荲r @%HX8t^5Uܩc_\Ƹh:xzu7mu0CGYs:Zn[u\WZˏ,:,ƤzH?Q=hswq 8*H2 qB @̮! @# ":P #rs18Th_~ zB4]Dx Cq|}8j.U]k @A :VX:eV]#0@^U}RA|O}s\0;gYIɺ>t3'U|Z¹vY XWmx@>,T2ZY,# @<$  @xP A\ܮuhQf8[<@@Oca UK^Bݪ _u50a  @:WTRS#0@B wNj'k Taf|v9/2BͿەY3nMNpL^UWKGe4: ߘx^Tx@  @rL @V]$ݞ:X.%٥%h eH!gٞ\f5KcVU jy @>^nt|?WǣtwW z1kR˱]:/84؟l?suNW"M=??(qd'ǵwW>or_*⧓z]ZsK.j]v|Qaf)2e @pf @&v `\(ͅO$ץ&^ğjOu4\9 @Hdozp$,UӡyRKg5*2 ʱ世 yjgEqנϏU}Eخ^)ێ# ܟ矇7; @M#U@ @O\ -je $̞P{.0i_}>}O"pQ'7<ϴ @*R:4-پT@):N| O }T5N;eoy^ՙJн>3D^J*ϊQ ak܇8F{ @{  @ o||6'^6MbX5\ۻn[*beO&Uת؟T @H|6w +;o qI)L:HU=x>; sw٣!|U:NB*;!:aK.-ih]LK @`Tp_em  @"f/ n/LT:@ ӊnYrQ.Y.n'Ԟz 5~Y0 s%2 ukAhnn<S\NmmnNлɧnjS *껼s. vr. f]L*ysEUwݎfN:gjt>g @ܽ @@.dH؜rnT %{VTq!%@ 2c @ "Z*2.NB[U! xp0 = ] 9$Ԟp@wwM+!qw|:)IU2R!4 @ey*RmmNx^?ՐAεz?C:#}6ꅲ_SݽK˹WDFࡑ%ynsL#e @p~ @: 2{B;>]@IDATnYB .0~[yoݝ[*彖CoB C_eZR3׻49p2~iXW @@|ONykBoU i]V H'TΪWsC uU, ͩuUМϜw^˴6)>Ǥ i3T# @S/5_ήM t9p#C ;s*GXfochg9^Idm@^_wQGgu=JV Ӷ3I9_ @ 0\kF @y~uS.0&!uH샪رZ ~ݜhTEvOsӔտsE*NjyͥB䥼$& @I A*ܾrpT-Qw\K䜃tۮ-s1QqywO-[:6UYߪ/:>rLK @W @ L~:W=`%C \΅ad[VC:Im;H]ZF5Z>  @r $Pw]_u:~۪c*oI#u;Wbh*L}]ZI`;\t13-qo 'ޥ%,y䜡s# @/ >Ss$@ 0V 'ѻV8?BZqN`UjO}`{*{l]ZB yd(gmzzֳ^>k&s>5 @AO_b{hQ>r)vw_rCUht?'0]49g M sګk—븖6/17? @ p+ @ @ r*G( X9Iu\'yf~_zzxRy)ո׵bv2~U& \և/^zZ6_*nHģ @%@}3enϭC ؍kj)*d/DŽ9KK="Eδ ͤQ9=/>RqK @`6< @Cw'\@LUÝvQ3 $0 w5y 1MjJӟVg qdy|οޭM-7$S @`{k)vW'GkbOuDyܽ͡57qU-ӽA,uT]'&0N`ޛo':9O! @N@}:'S @(0)~ݱ`wML``,N?RE.緧 V!cR;{  @0ڪ& j/Nj9Ԅ'>N96ut5=ftݻ0ZDW5,pTST}{  @Lp1 @ ߟ _g;r7AYEߓ7 3m<) x*5:"Ӯ @D`*.A7#m`bF& ;+ZO UX<+^VE:?l |Xl3. cz @`{z @.F(񮆟 & \?T9&Dj gmz >R9eXΛǰ4!~<"@V*ij(6F_j_uN8$i y~llz}±]qO=Uݻv @K .?TaBKsrahju6> \K{^TꦟTIc:s|z5[ @ tY_3ZO>9!YmY3np:,>'9o9nLi[}',,ҙ%#7dTtPQ}^ V @T @x?yh\ITREw^vtӽ:x._4Lc[[֖TlOǤ!u^7#|* @`xPSa;6@#3$:dlҁ`#5MEÝ* Vk;jWW`{н(k HGGRPM"UOa^G m3 @`R=ػs!d.= |t .;]2 eej6r!y_a䟾T=a} @`x9'tm!Ԝoxr%>.LU@n.rjL[ǵtΨbc8:{*9~~{'Ƿ.u9H|/5c{Hv^<6ɰ}Lpձ2[-x©gH 귪ƿT=5Rvt$  H@'}qvR$  HG@ax^6 p(+jQû!a;Y!PP^leU.Rk?M)b!ιǬ "ess$  H@r 4~ qbvS Iq;&r#K#T綜=r-O8FlN*T.4K\TV޾ vTKD܎?$  H@<D. H@$0(d~( (\ŝ)߮% _x` 6O`(5MG'8drۍߕWs+8O 9C0~mdž(̉H[$  t>l XԚ <9 ߗk%^R}%ԍ!,'@L&Eq/˿E_L&?>KrnrI@$  + H@$H䃰=?q#J @@^:I"]3iZqNPy{_q>w"=y*`NGbd! S ^>|!b9O$  ll6wjymf8rӽ: S*t^D4_U./cܟbT%P* M$  H@}#o-J@$  $ =iڊ#q~,$]Ϭǀj0'&n=mUwGQ>Ѩ }\4==BtB=dd ;4 H@$ n#r\x7@$ԥ\munMvi9CLN|>TD%ƕDFw;jvYH@$  ,DrMimV1!2Xjt-dfqRtk[>1 m!~zGJ%I@$  tN$8xTZ91s]5koKkwɦ`U烨_4vݶ\nHC`nX~xFxL$  H`=J H@$0(#)SWA_%/ ,B Ba"2'ֵG3=ڔ'>BޭYܐ$  H@ yT|,T1VO6y;`mݧ!{;B\Cz'`?ØձqV¸(y$  H@C }1H@$ xw=!tZsFEؾHkGS\'<3Jېl$'KBdrgM$  H@J 5w!GZl?_ JOWf5K4 rl b]h{{srktF A,$@`W ɀR9g$  H@@_ (pk˹$  H`&c!dg22G8IVW`Лn2[CL2*dM[/`dsQ$  H@7YPO _V쌸Om;e'!D66EFRN,齷Jæ[w@"A!\8Ֆv$  H@x(pO[{$  H`0N!DC`c< ^j,Il!Zky2{dۯAHx&(ήճ4[$  boG\s(Ux|Q#ZQ~R?A_?ȝ k?8+ƭv'PdRO T۳ݕ$  H@!} aH@$ +mvl<^ ,>t"@Nvbld\ؾn]7jMw$  H` q;I #2WǵHf~.4 |z7y@^Ϛ3XcsA#Lk\h/+Am J̬%\V$  HZ.+ H@$PL`7Ց942oy?* PzQlU.i6n΍!=$$@;;!&> >5 H@$  ,J@$  H@#8;i@яc)*N @Qz2xU͚|@22QQ6D:Y=ɲXmI@$ YdA-^NYm$}nC sո}2Lд6<XZt]Θ CؘШ%  H@J(p/$  H@I88v'lMDD(E) ۧ/'&HbWo-13io[=Ҹ29t5_ p9{=gw[!, $  H@ &3:Gn#ոraQ!'oTJ^G{~1;߈;H4MǸtaS P12ju|lZ%ŵj5{, H@ G_.醲> /r:;ed=G;t;Z.^i {\T%Peu? ?3}V$$  H@x*O%%  H@ ${fuhb| d-1X#ldk p1Ȭx=>r"H) H@E `Sٴ;yOћJQ)#hYmLL«8ڛ(#sil]!3NTQ17Dj$  H@w H@$ 'j'ux2@\Z2Ĭ Txr3 foSzX76T#S~{/ H@NlȤ>eM qn c6ouT+ImqVX7y'<_* 'S$  H@(p[{$  H`D^Yί^S @֛di'[y-󼉖6 x[ m=AϜ]ō[(9O$  t37ȯoq~dfZk'PNjϿj~@W?zBs'IGpG-J@$ P|Q$  g &^kf^@#lqjp`pn#T$"H6 ~y”%I@$  (KV]O#3[a MM4Yy ІA <*$G~ [_zg$  H@#}}ݒ$  H@$Ȣ5 ὸ?[oNq$3QIho2kȈ7XtY}% ={5*> rRT$  H`xOEܞ{MEn&AE #x}4ٗF@\F65|S*~"rK9]$  }1~u+y 3v> ڴf9{:"W\EQM.6US{НJ8M$  ᴥG" H@ Lˉ̤Ԉ$q8ؾ&2wq} ".9wK c qB& H@$0<>O5aT |nl0 5&el-Ai! hXQr,ts/txS$ Mcn̪n?"a9]$  ~{/ H@Z1xdznL:[u! *vcĵr=2F@)RR>]xNʗ3+8O$  }49xyR sg/,K`3S xWeEH8r۽J9DΓ p8;h9+Tm0B)K@$ ~Pޯro%  H@@Ȕbß8Xڅ%rW8~w-_Df4K22x#*N#{#G8Ldmz< H@$ H VPiNLv[sW3w j 7읲;})0=Lx>UWA@yd{ƏHI`M>n{% H@B@S[ H@$QȖeIǎ6% #h[}Z5A*8TSb^)7ΉZR9m8ڈ5~N{$$  ꬪ嚂!$>LL0{0F|4p*OI8YڌuQ M$  H`8-= H@$pGX*bXO t{a{8ǿ%\6CoOR!'g vV. cuWd݁Ŋ$  H_&e/7eQʏBYrx.D꙰;ͿC W sd&6\6U nz. ,@5JE$  H@@'(pD3$  H`yDV,V :+*~J`sȌw/lhA?2[iX6ue?Eosr^qoAƊ$  Ho潠Tw\'!`v͈k k7n*GBԼ7ކzY?BwȗBw27/%X'5U&-I@$ 5PFnJ$  @NlF&뉙nC-0؆\3C[}hYa!vc^}(kdr73 U$ xBxmk~,Qv.=jܻh#D]@NcK}jj)zp$  HCw1 H@$,1S_)I@'Pu(׳Y9}x,-`b85 @>qdat8[y=L$  H@'^;B}xwxCW׾_,"*A:Ӹe^]|qVOLqzI{q+th) H@C@{w=$  H@lgP49G(ty q |Wel7jƵ>&`y@#"ϧusf9S 껟$  H@!0/M0\!iDqSS!*\.?uyxw27>(~vND'HwDUp]][B$  H@(%  H@@>da!"YrǧȩS#l‘3STaL: ~нu t?y_ʄt. H@G@X& H@$H`a;+Y_J+ #cB6kIaZgFZb3w;mO29}qJ@$ @L{.BϗwE*lEǏ&wG?r(M6KadtĨTFe`5 H{:g܎#$  H@(p_[, H@#h?$)dFN#H vf).$@ӥ8w $8>WمE H@$t^ul"nS"C(蹕".@˹> ʅBl.+oMEV"K@$ 'Pd@$  ͠MN̕5ί' Rp&  ].#֤d͏ @K]J 5 ,Ji:lקV/߭.BTb;9/⟷r.+h}m%  H@'lwZ$ 585B.0P ٝSt&@y/lkljrA3mj1}nc_Kc7v?{'4 H@$ h㿢"vM V{>,@Je<{]V2M]7?Dr' H@@}j:+IMԆMtkJpt(9,~J1 1+Xc*d 5@ T9wC H@6O@=$  H`, Gb\fia{]½kvwxdr|ΞGF4 /#cgBE2d< H@$06}xŗ{QMgƾGt_屹f`ד˻rۼ@ P)Sܾs;p$Ե?EӸW!T$  (pOsq$  H@H  8qh.NB`a;fmVuLp@v޸Cq1"{~71sXӖI sw) H@$PB϶';Vq12^'" ߇Ѷfxӝ;4Jj$=JSR螢4 H@$,K$  @t"8` %؏&aeU>t~%w&^EPɅo_QI q/ߌȉA~M$  H=|[Z|R86eG_ђm]ߟ#F\MFͽd.{BY- H@~PI@$ GZ%2<lfc 4flQB;ݺS2gz@}JLxB*VȉCM$  HJ9ey:U~ϾxY$I磁)2NS J"Ws. t@.{{jw/Ei$  1, H@@#:a{CW$@ gF*0oa^ @R!2Q: lȽ)i Q]$  H@'p5WW1zV9s˛ԻB2Orb)KLt$~˳H[KiZ/g!,^Vmnۺg$  pv+$  @}0>Kÿ%=y|DfI^G'j\\4 lSa gk$  H@ lG˨%ly;'"Fk/n\2 {ݛK+\.P޵q$  H@ }i)S$ +1$ o tȈu]bd<:f>*}'ճ bM$2Orf,Gy$  @~y ~PnO"wwaվ==G,!\?N 5 ,*t' }6*h$  H`L=V H@@K&&R0֙4Ok9g[a-YBeB )}d#C&Mhy{tk} H@6M$T5W{n.{4"/X#X**͒ģ^>(Lݣ: ]"jBwF$ 5P&nF$ nyXJa{Ž@) G&yh$0 9Y5 tTUu$  H@#q~C7]?}8z ,SfuB4އ 3MEӻ3#c\/LFv%  H@xO%  H@EIw[čmiVO^p)3;7 WPnx1e/NȈIK |M!r*G$  H@"Dۛ2JSrx'[od&!e]H$lн8]UFw+Cڴ{" H@z (p_/o& H@ 0fv@`C!lKb.&hrNvfQrޘOәpvg1 =:ynOҗ$;"+4zԲ$  H@O!`ไ?_.*>$H:*L4Zv2! N.j:T<"y󞙣< l$wb5Ͷ[$  H`Soە$  H`cDV!l?OfQrG2ו?#n7PHwQq&p"w: #Ȃ` 4@[gWY"& x;M C2pEM=!!Lt< H@E}\E!Q>}}Ӽ 8n1S˵wGQ)qZĹBGO{.96U Bw*`Zclg;dyŵm!& H@>ocP$ *'I`u?5/Dq3Yd0.xDUd$ j(v6@IDAT$  H@X6b}nŴlײTCئ9Mx 3k1eEh$ 3ݏDS]$  H? C$  u֎=ގ Qdk}sVy~rOw>؜q9!LdV) H@:3 gd<5puX]}YSfeI=ItPbTI 5@wWfL՝qO$  H@(#KK@$1d"9؝L>cMHg1ORaMd$ 228#m\W<-ҝ"p1gW1P9JΓ$  H`Yʞm*2!L$W}݄/(WQ-mn)I@]"PU'UphK!K@$5 ܻ"$  H@ %S'K8dʩI@ p+KV(~q3zG3$d3c]*&=rƳes' H@S >aMiImAcT"4 4;dAFx>D#k@ $kI@$0(p,$  HWvC<s#Dٻ $]GHD& ,N0L@H@:ۻI ݙ$  H@K%Ц? N.̲[ Dȥu@.0ljRQJVK" K \%cm. H@/_J@$Fdj's:;GK`Ԓvg tԖI Od.F|P$>@s|=U`gS}jYU$mg.hjHv12U"8PcN]&z,:pѪ$d~,۸݊%\V#@yǴ_D-I@$О\R$ @y++Pbp}֒zh(7))8SIņdQb'K@Bfc CAMC"@qdro& H@A?V1|kz2'v;fՌp Dp/~D'= d)\_"4 ,FI^bK}J`=V&P.G>2T[$ MPp$  X$ˀY8kq:Ck#c!UŅj.#c X*D6uP=ܚo]Y70 AAН{{<2&MO% cu>tHFw8M$ uPnnO$ F1v^i~C#wmJQ7E$  H@&}-%  H@C9hsb^5;C}82I<i:\YS$ E ϱ)2o j)'w[N}EdMUd$ a=v ?}\!@W϶'sշ[@ #q]H(d.+ H@ (p_!\W- H@@;l:۟tO{O)ӈb5UG2۬܊$  H@7"r H@VM'(+0rMs-%&@J1R_W*Aig. H@hG 1dޔYhiCɱ:]Wm%ܖ r;vZ{ 6@Pʽ ;,$  H`0)= H@@ PlIoOqɄR$  ."HST6FG6݆sfD1K@d[-mKE8ue\OQCu DFCMïˋv]EhW?rQ HRa>9A+$  H@X&ˤ$  H@x2K=+2t73.LJ`u:~BPӻCcG;KrvgW^99FΓ$  @.t\=PUMk&Fn@3u,AۓTOQɅuې@ ʠ"ʕ".+z\& $  <'$  FFS%1 #l)̬Ày 8c Hþ()# $'WQ'y$ W a;w=ȝ*uC\[}^!]]@•B ;':I!p{N +Fr:X$  Hu H@@ 0ǀb?".$d@ֿܾb"ydl7N-"gH3%eUj2o TKSiK)$ >MU6Աdt\E |ƞ|G۽$  H_[ H@@g PL):>xlc%p=EJ1CE\X#f5K\k̎k7 <+g&H"St& H@/=o[X:+rWܾ8UvҗEOm_O`}@9KKZ6Okʹ]$ƕFvs$  H@}$>K@:FGƫg1eAcV #%U222 s'2%bSffI17F34woF< H@΍৴ZS %4i@~7P:rvh$oT5.I M1% _ _4[J`]{PKeM$ q @*0JY{5 R}<:915MBwz[}GI:;Mq$  H@o H@ 솣edLR?F-?ҥ8MK'éfqX+ĸoN~ h@莣ӠTC& H@8 Cܾ..n+x)ʬB"4 T@u^os$b̸v<78+"c$  H@s$  H@i8&%caY,7 VDgկK$  H@@I@$r8b?0E+!KuZb\kJET9؛|Tt;OudrozMJ@J d ZeTLrhlK׉_G\)Fn"蔄+-#V]#p:D3NumJ`i}kҰ" H@(p\z@$ @ISm:s_0I@%* q>ùPjȵK`7]_yu"7Oց@OՖW$VrYʸFdB4 QƸYmt9]$  H`q=4 H@S ga!#%IF؎a_\?AbfSBY;-+㰨1hCfҺBS>K{Z R81&ΗW$@ =75GKN{M$Ro H@@? .G&AKߵv+$ݎћGS7G}=m 4=k& iϛi??0/]%}^*'vO\$  H@} >J@6HѯrQ,k,AyYef2g%7RXV\ s Ո ]|I[߯@.PCdcX>b ( Y\<#t H@@ TJ;;KBt5CDYR A5*rHk]T0KST&X*B+9J@$  {, H@X;8q} QbƵ7[0zJ2}{T۬e ?Zh'MX-Nۑ~;\/& H@@𮎸wF9v>Pލ|{CO}źy~O`ýdNIJ{I4 H@C@x#$  ,Lu-Jlƕ,1 /S=,̜?<Q}vx2$*MrV.h4<-<  q6 jHmܤ$  H`1Ҫ VnY"ͷ!A'¿2ST&qo|f%FT$ 8n5܎%tm H@* (p_%]- H@$0: pnϜL,}r֋@,%al{a^(ӠAlb}? b1;}8WJ~Z]qo2͹vovx-M.sK-8U(!ȝq9pZȭy$  xwϙUrt;Of_?Gi_fƭKKEN9~>ϸ#yoe^5]x*T)>1nK@$y 7$  H`mpMlkCHD{t|ߍ̛:Q)18y7ߋA<>!o7)9ߦܸ~ױO?LMd𧑙||0r's;5 H`&ɳ>gq~!r$  H`^F۠Wrc. lnQy7{{$V_% 0V63S% H@}j-U$ JLK;NA,x0@A dOsDE8*a{^[ky"{EI0 SaWǸ'" {X5}leo_Un Dmh$  t^sIwY]Kyu݋eh#r'~\"#3R&I@yOjqнJQ% ܟH@:K@{g$  ,Y_=۾2]T<,ef|sBIEU7s%ԏɄ|j(%0=~6k<~CsCMȀX:TRq=Wk&J kA1(̓eN K`Mn{]E%I@Cw">&(ry@/ۓTo>I4 H@)<>w=$j_S!u1-ͽ%  H@&K@j BDLS1 S1rr08Ǜ2E[V oC{jv7e&&xW*SwTr+y^;J߳},$y3ӨB& H@fO ,M,U@fҭv"ʹL.}pf̭J@} Xh˿?>*ÏI@!4=U$  H{ H@@@*k{juWlL7>ww F=LEW=;q㿴ޤ A*#_[Kw!觋2z1݆ ,SdLXI@ @X*.{w$  H@}%?eTA [>]g{3@bgImvm2D#tçOUq$0븐Ȇ/VY#t H@@(pO[$ FQ_2oHA u?Lݸ6odBE0^bifﳽ~:mI`xUB`qmc쉋n+,p]Ds_!S& t}(, wTx$  d@OBnA K98_TG_ K9؎f$E|$0.JH(=u_`O$  H@X-"nQA &6R"wvxߨbj`J$ &W'TI9̄owYO H OdLlyΕ$  t' H@h PΪNévV(mgK`N*3S6Hٌ1+!!1Mýtv>30~q n-< H`yne \׷{am_l}y Sdt-Ei\D {xvMi$  @O]m*Dj'(B@)YRze#t{3٧N@q$PD4J t@MX.q>_/_n 6 H@z(p_g" H@X Y< uZ6Q>dec-n8 2&Ĭ7 J5 H`xTm y@VK-=Wg4D y2tou{2i@ 4 H@@(pA#$ YO>ĿG>Sr(Ev@*6uCz(Op@̒< t@u/+ _3͕J/PewྔKrtʑ)}j]~J@J>~NRqY$fnUc&FHjAB+@sQ n҈\D$a ;8$  H냭 /93k{M;C`.#3,%E o2ƪwe 0L& Hů"C2z[z}4]EM߇~"w=$  H@eZGܾ% غB"$Dw I1Gh?nM$@I@!@|5Fe.g]$  H@%rY H@@G~;ݾ&;Kf_%D!;!|ٓ?Hmm>1(SN&s/>m[q}!lG0hӗYaGl 1 X2jw?ND? eW?'gq5ޗfKpYsFo!Qr$  HO_e> ϥ&oSNIՑR)nSd& ,  C w ,FJȹ$  H@P (pjz\$0 UFX]c(Q4Z%2H?9i8Kҡ׬t\$0;ߛ2JӻɻⒸa]şM٠7ч@_RicQJ`3+6U{ՎȝoM$ 4e~;=v! Eyw t>Y/ pr$ _xJ9?(!$  H@C#}h-H@ >6k}m$,ّ^vQ2~/U\$lGy#zM?0GO[cЌ;p|^߆`IȒ#<(cG/4 H@$@w鯊mnT.i*3`Z%K`uGq}F& H@y "~!n$j5RGkOP*L)*NE='o~l" V})X 9|+_]# H@XŸ+ H@ $6Cұ_NF(2[bo#s('h #Ul6wi,Jc]:cpY H`{1H%׉syzP"QJ츿LMyTi!H@S uYG ;(UȾ#8;Z}! H G=+)?_<HӅdBtFXoo e\w$  H@!}3ݪ$  H8_DfQ"Uh 1dۉO҂E87Y `h+ ɂ\elu"4 H`/0H/!jwϧ K)d>5~zbo H@ * FSPiά|2$p(WMXK4 H@O%]>3jBPuQF/FD$  H@%}ݚ$  H0S2y+?Ž> A;uY?8/[ *9?q C|AJOU5 H@]"*qoK@W`a'*YǿPHi)ȶAPut tQփȽ}18O$PJv|9m5 th,/DWk9xRv/!r$  tI+Iߺjw{$ I*DuW$ PzV$d~B9 Vhh"|dE^"xN:d~{><#,1"Β߹$ u·@ %F?d'|Ƴ鞙ߴ=ϐzrЭ%#FYw 3UD$ !?(Ok!86ώߣRGȻYj=cF 1% @>æ=2A|WMK:_'@uJ$  H`k$  $ :tqg:8#}VԾ(:_64݄f24<K@".KC.yS#8ꦠou !5T$ @vUi}\-y$sT(zl1۩7v_?>$ xJ y$򡺛& '@G(2T_5%  H@]&˭I@}9bJ j$ hgL_Y@ AU&>* AqRfh$ ߙ܏UbPsٱh[]G4 H@K@ry6 H@% z dlGps#Xۭ6{ ڭG/a?:8'H@ @vT_8EkܶHt= 6)_4;4 H@@_  IMC $rRAs+4$^JGnڨK ;Bo H@(p_DW! H@H <]qQDwk%ヌA"ΐEEȝ5& \^*]W[%lor?>@D#zyֳit݋g"wsK N 0FՇ[< H@n/Z3g yYeCy\9:Γ$ @GR UJh"&{_76{_퟿$ [ď& H@@I@$۫3VwngfJJ~;inG{/e% 䑱}?@E CϜC!ν"Yo>ΦóaOpx % D$VD$ .Ob7< tCSfpon-*q?00f% FFw%Ɲ1Dsٱ/l2wbc; <^ H@X'$  H`xY>R;d@|όd%S^djo*O7 Aikix(MT;RE Ӂ1,{K]ŚA7t/0*g\ Bu< H@/Bh|nV ܐ$  pu$0bdInj&PX}< 8Pdz*!@oM=2e8o~{RBUbO@Q:%IHW4N "/e 5$  H@x Oo%  H@$\a~"1fΠl?u+vDrc,FCv:NdP:~;MP P {~7!GK%a|Z.T& <"fpjO>D& H`Py<+q"AUi@;FV_61v\JN@_$0bd'sOi9E~>1m/q& H`C}|Qrbx#f@@NYa>Y/٫|:KrU"8m?TH$ ؊Ko3PeD$%'wf#~ \+ x}{k$0[%$+_:Ս1vkl7% H@}#o-J@F V*AodGh+8">D KKZO~MO'AF92i!=Ϣ_0]q߯T{VlE.8~,l_CP9ܥs_$  /Y n'"hJTLK7$ ` F96Vq{dpa H@@4J@#P ?̘^ֺ̪H2K6KK=\'%#~al$  <'U92h# Jl q?*$  H@(*u1*z PQr4X53㕀$ %r$0:8_{6C"~$;_,̺4 nYѮ8۴f̤ޯZGy3hkd.( t̕UwI& H@ ; T/з;%t׷YGC'@"6|UakTs_%  H`=j H@1"J$ ;o Qv; %zs&Wv(q`:8]Be%  {K/ֺIM6{N? reGvϝ4"wˌ/듀$0#n 9Omm.BH,rAo{%  G`'㪱&D[/{ދra!I@(pSk{$Ha;N&Dr'ڝ_dE Yqi TJ??S*$  pLzLA@S$UeC7!rCힱӫ!, H@'p69:s'Ha:`Ȣ22]$ <|`ϵW]wJ, 4 M-o]7Qr$  ' H@1M֖!mZ\BmR;D[2P1g+JUY2 TW9'CDIM`pAyV42{' ܋v<؝4?+ݏf64 H@@63J5 H`yrAley<]A{PYK$ vZ2Ǟ:h<'@RDV=$0& $  $ B\kSͱgIĦLDpu;0P T*ӛT+dk)I@xL`xvQTu?vB}|ik.[ܟCaܔ$ a MX><|u6\ٝͺjGV&*[> }&dbQ0c$ & ܛ9_M,6djxoau]u=a#=8;#j*I@%@ Svxi'3-ʏwyeG<ί }&p ؂$ F@5hlu#,eo$  HVZ׉ؽps͏G A [S5mn'AB$  H`T=X H@%P&<2n+#^m]VO݇ K=CHD?f H@[Ĉk2i#@%x3,=W>ɿ;Tؽ6`@e{,)DA`''j`3}n9:Γr 4% H%Tߞ\8&ܳеI@c$@R%KqYƟ`sZ!I+q$  % H@f2fѴYE{2Qv!Ȣ6 a{ÀZn8~$  )Ϯ "Zj&@~PnҵQ>~>qt)3ιo!r/=st$  !n'/gV)qOKܵHEz׈T$  @~Q; }5ת]C#@enahH@@[ ےr9 H@d3r|qZxYVK69j 8(~ 6][~b2ͯ&2PΊd.ޙ7,m0 $}{0$d!|uBi-m˶S0eYj)Rw[UzDbNmYcW^u_=\?w[Rn:$ @)~)̸]\s'ږUϥDSoc :'Q7}ܗ$e[2EeV':3Lӄav|=6 H@F@{7N% H@!Д8D2|̃f 0yN,^Ld@؞8B*{>ܚ$ Ȣ :BT@8M)MS$|]^>\p#)SEr$ i@D߽<MtmOC>'$htӺ9&~y}}Ip4 H@sdtOD|U [s蟣Nz$I@{&0W$ htz]vU#a} 2#l-x8 <nK=E} g)4. MRޕ <>K2Id[3e%  L@~ bӋ|}1xt Y$u.vA4eT%8G$ @{BCu-ϭ8\ qsMz8$=@t$0._EѲ#ԕ7r2)vY' ;}NTdfb +ē9$ .or~$ LMRh\2 HE}:k}Z,"DjLUTY4 CX8n_%0dmN"9wc%>& H@%p1Ud779-M$  H`zOzD$Ё!rG g#w jDWpD}3*ru2jelLL^ y# H`5uehϹj]}^97?7Y?ٷoBwFKI<}p <:!S  H`Es\uϧVRmA8XG$  H`|b H@2Z? YnsL2uҶ a{nW~07Kpe$/ӭXEN'Mh6/"*$  )AN-<|H@&1yj8ߝ;y^Ϩ`T.D N6u>lMv7DVjwKLo04+ ~K__v>ڗQMk$;P=x1'9r;V|uL3.뙴$PP^U$ f09Jdq4zJ3NG+d +$  H` GsBċ&M(/9݄bxbuA (^&"wJͧzЧ VO{ˀƾ շ5N"s6U%6ī6I@s$@sdܳ9RbU9^98"hMn8$ iP>I@iGcB-9љBr8p^,s6MId98˭H>ne~0`VYXLK  Hq$  i_ D#P02 H` M_Yj l%  RD̛5QSWdtߚ㲱UTVGB$  H`f H@Iڋ(o(/HB_s&B'&,n+vˈ?\O Y5FPMC%X~󋸦TeR7o\'$  !MvΟs$0/ZjU'5 H@M%Y T1P6 o^yȽ%  H`6 H@h$@fpF^~(dmwܕD@GE=#j'& H@$=IhNQqِ0Yr9c.!ͷs߬Ƶs$  BqNdh6; H`lz F瞧I@0 , {5u[k"tt)*.wunE% H@uבq$  @S{a:'dL=#4,:V;dj?z݄Z9ڞ$  l0Ʉ22)Nq{z1_oAqd}=mՈdI@p Z?& H`*Qq-eRT\& H`x<[[UjYq &üCkdA ^ H@%}#$0ZMYTz{vbh+_>+\~+1ik2e-+W%g H@$@\&]$ʇI`4dIg\W%75GۧIz,* H`7>i,ZE $ x1ީw<ҿ{뫢$ Aн\ KCqх @s˧܇vl$  (pOsq$  @ >8L{X);5{J F 3v$f"㲡@~}HT?d B͇&HdMOyTݠ& ̓ D7}׵G- Lu HvG&~Hp]Udu#dE&#k&L~' Hw{'&h J`4r}~g5)}|4 $pp<2&I$hJJBHtgH& H@ ^$0x]G)v* [{svd0qcLp_u%  H`H833e[!u~=Ql*Ar]U(hES("+& H@'IۂO#e'4 H`RB PʊC% i(44RGq5 /*rɲ$PK@{-$ !@ }ȔG 0Y:aT<8DG?31a;׷ϋ[$mMA mlm gj P2fʥ60ZDK;aM6Gg5&Rz <܉p8Ǒ$|)6NIM2})*.$0>ΛRqy;2y[>>M[0]$ P>seK%  ̎~N9& rK1!qΙpLirݶBA&S[1'St\& H`gj긯#e\zx6~v𜆸~Ns$P2Oϧ%ݪQɂ uMA`a/ocBw}T9\w&|Ml? H@h#K@N0R2}L:}V3ayNzi]"f/ImPȚ$  L!M\oj;. #nBi\ S< nεoox=& H@&}K@$V N"k9NcvZ_:IoȖ=ǥNI@.4 M˞~olLlfu.{c!t$  H`}'!l\ n@22i|&T}2/ҁ` K@b9FϹ!$˩p_$K@{.1ח$ h+uίcES[Z=L_̗e&n a{o:BC)CMKуţDbo73A廋1Vo{< ] g'(S4 H@X߶u߮_J`^G4㇋P>Կ/& H@%?tJbA>LjC\fj}P%$}t;$TpqnM,q“ьX"Yۄ8,T!^UYt73O|{D@^W>noTM$0T ܇zfl$ H 4[_֕⮰= are8rVd=Ib2}WdB H@S$8LIoo\& Rc.lK Dtb]~6B&5cCg%$!4ĿV[[yfjUbE(`j~WGu~vm$ <(-{?и`'[ p$ЉN\IvA\AB!Z:OB\}m5h/lԠI@4壧23 e&@2d;~X*mmdY?\2зE]#r,N7Q; H@ qoQᘹϫE%g/_9'@p>bw9FAk6Cu%  H@3s>$ @A s7S.k\1{+LG!jtVM,_U$  ̓y= [$bh 6{1M dqN{/62L19I@/<6im4Iq$O.9[63cNBtЗc|v H@#j2ί!tק1KÑ$  H' {f$  H@}( ۋm3!Wmsȸp*f+ܹqFITL}|jBdof72/W[64DVNpx@dFTS%ط.f $($  H@X"{D2|/6! &k?9#6C (p9%  H`dR!ŽLǑaa~lLt<Հq$ NᔑElҚ$?2ZkPI:QQd$& H`D&#C&F~' hw[66~'5ֱې8 H@S!(T1WdtuC&HJ`ܷݽH@;s<~ H@ N$ffl#=G!lo Y]Q:%  H@wu1){%2I;OB2 FDŽ"Uvr'響 ~w۩YyCKDI@#JuςϵQB$7q>tϾ$' H`:jr'dtR]5$B^\k$  t! %ב$ $"z?Dv(K ٵ(ph|t2+zq0; 3q1C9$&SIz̘O%msam{{ʶO1^Ry $ *T$  l@9 qJL  ^']$   `]q"i2o@J^_{AW H@"v%  H'ȠS\;p-O? `Br*gÜxJtش"{6I@@f;e:}ST\&;T;V~8}zO^Ϗ#CI雌T nw&$ M**^NN4k$ &c~gJLE_yJ9\w]E˔ض _%  H`o۔$ RN_dn1$ "`*ψ a{w{G7&ɃfL)?͉_(13!;v 0^dW1~|%L`/*q/|`gٶK`|Nqq2V\Mq$  ЏgβB]<_3gmx< MsE s$|$ (pۓ$ D!suIdX#ʠ|Y^[9opp5_o,D q$  4xskWv2w4vO"يT(ZB9oF "J@S!(?"4ky^^FV! H`{*f 2|svnnO{$02&Ysr3|QV!纫@@PF)row$*w$HI^pn.L 6*l/_9eSO$  h\RLϹD]_%@ݗb"tWP |qp4FSܽ0 |-_0a'VI@$xFK@< 5 ^> t:kR$  E@{_$ݎ$  $@.QM6 dsm(lorڿCBI?9/%vk$ U GF.GbI=j2h}L|%({/ܙ$  '2{wGq|m$0D{s~j$  H@8sje._]DsՁKڭI@@A@{AW H@l SD2Ȟ!~SV`\/[ S'(z%d(\`gݮ]O"xRLN.r$on>0o Hxt}H@%%NDZ٦u H@%4ϗ[%  G(294t z"Ƚ'nF:P +I@@M̘eT^\D\2kR6}9\WhrF&729kx 7~ht"DRɔL$  ITK|&D$  C&}Δ92 H@XA*WȝjWߪYh)nŸ$$(ZYoCO hG&^n&`]E`I@&<&SAWX x]+I]}9_2= vy|kzuj ̩.X <0ZE_)L}vK@|ϽG. Hmv(*&{r)n+HCv3g"v H@X*F){w~),I@%.>xɠpi e T].c1DG\m-ʊDcY.E % qtaN 6ߧܣm//71{} [~U) !Xedͯ&!OuxUZ1UGX=wt^ˆ@G6ۘ%  LXK6t`ej3׈$c/+w2fA%  H I 5ȊL.RIߖ܂ % )(/t1 > V}l%&|(F1K|$[44|O-v}R=O]X5Wohj>9B]woQθq`\T]V7[aW J`#= ]֒ SLR]gu"w|SԋI@@ pJ Q܎C,d}a8);Kʰ;zg!d.SW$  L`/&ǔ} ߩL6 ʆ~+ H@ R"wS@hV֭ހЯ~`g "NW8#c\O6Aу~!gN l۔ I!/}` Z"jeyl][XU5SOC(3I@C _{MD&'XOwUC4RNs/m=W:vi0]ǼAqtMj=ڐgZ~w:?Ųw{y#6_.a|@;ER ߭Fg(=$ (p_$0{e;kS#|8 -] G;;tG᠆sU'd1cY%  H`,xYS9}ڎ$ i YLc/v)chwAW H`o?T]}4S$ִ=$*_֣- *O!uݱ5q*R S߸lSy~QTe),W\?D.]O*y&;c f$0V؜com^?m۫,S YSt\օ@JD_γ -xlT*Ɩ}}oR^mw*nl;cy$ 9\W$ >(pې$ efjq=a,3/bw(3t5S:r# H@"1%O .QR}\Ggk% m6r̬~2d5V$&v%YYi7% t'@P[@uPUB$`=w GXFs*egcdfQM*loC^߮#pg{P]/?@7ϼ֟Aa">Ēc/"W.R=וP (2PϮ풀$  LSH2 0'[V[b8,: *ͯ8&fSk"(a":J.$ ]h|[e2m% B6߮cr)V!MI{2xj"w$MN!@PSQw'$PBVև!V{wzP#"T~ȼoWqU鋽%T-8eL/>wtDfNme%"86̧vP__|{7؊mv}7!pY{HqBC3zC$sguv3oB:B.$  H/ "v$  H`rQ0X'sN,RΑc?$J@FIl&R .$Fl-]'?lZZwL"4m2Tܝmw@Oe+. $PGUTIH, VU_w6o㞸X<*)g͐~!x8v]0SN0 ˺r݃G` 16Xӥ=#Rdtf7UQ4 Cgb|o$  HL@{%  H`vp y<bAvhq$  H@c $vϤY4 H@}`Dym#6KDP\?w ~ L9.UqK`}L#n'i^..o; H`j-A9De_,maGeBвqϽhGl&$N.2ĶG,hOS*1ߴlM; l mT{lAI nG@ιG, H*֍x&902 {!9$  H@c!a#v,gvJ`|s?Z$3!r󉀂̡;ݶ)} ;N5 H@9? q{*8~(f@,*i >C nރ4ǨfF߉*pkJ;#}¬jN/G]m%0}􏸉PsOE_T2D5lus+NpLƽz4Aw?wĆxe#@;Tʱx1nnyʼ ^@*?K@9HxSqd_ |:ک?D4K ;$HO~fJme0Лjd:ƅ/C\P*x}l{. L{$0 s=R H@bE"sd#|PGFࣺLGvWYFiqϺQ+y(Y<*XLOڋ)$DJ $0]'kz&hpd! +;,UQ$v~n*1U"~|<'@l:~~A&qڝH1:j3ZSҳ۪]W<1YWZgQ7; H@ }٣$Hy27{#(\N* l'{EOV I@@+ؔﳙR\\& dTphHY!I@!ߘ 7@?Zy,dޅ^?/r,}o܎8~I@&w?kߞ-SAZlZgӺggǷD_9uFo|NyWm^\w,DǤW w) H`,LN H@ *Y͘ 8(\-sLL Աu8$BL$  L@%v= L@zLl&6ƈs.5l=+)sMfˌWL@U%YZn~@LȚK9RƸL/ Y,##^2G U3]lyw7h&J\EfB&n]6ƴudi9b\~P4r}(ry$  t! %ב$0AS$yz3Zh=ׁML9[%'igncҏ\l^9LL;2Z;4鋢UPLGG& H`O4z&Vh~m\9@#n5$  H`#.e RT\& e 9Vpb(nZUl׿@H@GLs&胸ۘ2{|Gc $*kkL$kc$  @`v&d9i0,01i)&D^Z l'" $  H@L$& H`~¤cEXi]0@5/Ƭ(MI;Tk24*XWЅds[C?C(jpTg H@C PaݹQ=`Q| }AC}P6[H=3Zv /#A."/b^>^aO;o}$ P>sf%  dh(58E"u8M8)Ԗ1 3AbG$*kr }M 0Ơ*ԣc,mSCIMؿ,"ww$0.UlPd3jk%ߓw]X%fEp38ai(UfxzOO;\~@#ѣ @9r~}?w;ePygK%  C@@+:GKeH,V2dncjGDk$  Nibdq$  ̅<q91XMN"@6A 5D]{].2EDx{ͱ>ݦmGd&&R~؉{s*hs<;2ST\& ̅@17"8icm~ÇQ#*[,OG*]>^6^_0 p8H44U0* H@'}H@ ͽ諣 .g4u?)gflG\AvYb; H@@`_sm$  HQ)NJ!z~k"p1ULk N..nBw$v?mW]Xh,^BT^Zm}!d}u홾ړl& Q]REIAŗC<,O=F9ݳѡ0Fύ$  lmv_vL]^`![~wOC",VU$PKKًh$Nq]0S3)ϳG'HQœ$?[˽ qu}#m) ޝ/M?.:.Lj` #P mi)3xݕ5M A+.W@2x 즃|=y1"4 H@K@xϝ-$Zc<(őڿI`a;: :(5߷$ 8 A ܀7Q& H@Б=%Ct8@f}S1&_F$|x 2K`𹐹IFPqA2Q!<\.|>*PрMoz&@ߒJu7} qځOsk$Ѝ|5Eyܱty޹^_kYy&8}2MLB1yT2|!$ aP>`+$  HBa;@8ob(8s⇰:/$  H@ Hj2ŻtM H`bm Ȭ5%;6&Йo2+4; l@Sݢ5d/ho Pt~SWRKB]#tߕ A&U#Md$  H`{{:ZnVهO;䇙Bw9pK$  H@C&}gǶI@Gf9`<))J@-/"a>q7eꂅ+© _e,uW%]M{:#p_%"5,2T$0tIS[mHK7yzqIe$7'9z_Y̝l72ʍ"WQ5Ɖ l4y)[@ܕ$0{܏w}xf( TM=`,X㙻U\C~\z|u?>*m.kԭH@>%  ̐QDc0]o W q;$  H@xIY;si$ ;sw }qs'u_G~2CBM$_TWކ*oiS㘺 }P&̨C@G q%  UDTI[pl0Bc8;l=.M$  |T7fX2$ U 0.*8g!m2DCHF7M <!pW KR^k `$ yI{.** a&)h *6z}d-ڠ $ W ǚS&彉Rq\;fIRjSQ)H* H`\|Z H@Kt:UjI<2ұcHtlh2ڳeh,OԮ/!ns4m$  H@(za)Jqj$Bw1J.vq4 H_-ܛlJ*Tԉ-//@Ȱ⺶H4W WN̶JU>ܘJpwM|e! H`J5>IEn{K\ #rg.`*~{8mwWN# ̂YfRPDuY۫`WRg+ɲTGUݯ$  H`2F~I@@+?V>"eXxSdrgRU!@_I$fh# %,O9nO!۳a%7E>%u)ݼib3r H@ :.ay(_ c,/&.b.rf]*/lC솎{$0N yl$0c*eQD>ir8uʒRW8֏Bѥp;Z,ˡ^$  -쉛i[$0md7*Yo xh&^C{-Q=a$4<,Mt ]+; _iFI/4 H;q=[>lS9IW¹LI@4 0uss+LzGŘJ<ϯ&Y}݁$ PULz|cUgLt3mcYd"ڦ,))ߕ5"c{Yd(dl.\G$ӸE[[$0>Н {ۘs(pemi2*PGxQcCtX\5y$Gy"cn5psObf͗C4 H@6KxeT+]D24+]u1#޵ahK jyURL P6:[e@[ Wĩmex&hb$(l?rx$0$MY==xHm$ Ɯ%bi Fa5|5 H @o`y`'66X)#[s9<H` {aIJ:M/VY$0nd~,.*S .+xy_89&qhoD?*i$0l ܇}~l$ %."LIt_>/敵.+g6b$  H`^P&!. 炌j$  @Y@D3 toYGi'Q&Am A;U򹰷gs/TpUc#}!$b\4YAH@-#z'^,`*W^G5r6uheyU Xm\ƜqAbaHx[9I@p (peFX{~Ռ#D??l ]gDX +p:gYj+ H@pJLS$  #&WEN@ITrk2Ƒb,MH@&*~m~ !|Eu$Y%cfQ9KY>W0x;džwG^@Sh\& H`gsaK$  $<1WgCWx=HΠǠ?kF>H@BiǦ)! Hz r ftGȽi2')I`HF@& }:2̓x DYȪ|m[ @I@@)'gBe&Cu6zS sl1{(!(~'65T|F%e]NϧweD@ΖmfATѽLX\Wbd4`jٱqgl FJ@@.u8߆cS$ `ٟQ1~Н鷗G)-u3*S?K`*G\~]c6M":,WQ*$ qy{onO(w׊> dz#Ȕg}WOINq(b8m2;)tπӪ?!& H@"}XH@3'UMЬ2x$RT'y8>J11> J#r$  H@>dMBI@uLd'clG7ɪRm#9Ms!@46NϽEyDxt_1UMq|J@#.*LuexgI@@A~sQ1<Яw;4I#rYgTwmPmgf}XN:9/wmp$Ѝn\K"F9,Di8;0JTX (oו$  H`DQo.xk$0~B!ptЬ<W׶Tk%.$!4}\C*}gZӷb) !e?o.W)fwMEy^In[๸q$ty.rF^fwל1q؋G to)wpvK~;h7, H`d H`y~g/,o#c/0av7qJ1QzvM$ q+ଯ 5 H@.BwoΆ;o *EL#UYuJM< T3@( @9K;9)[%$}|KLȺL&=ٟH8lώ cC}x$F9wϭb/jOXܩshMZ~' H@9$02!z?i7LF&(>Gc}x1Weٰ߹$  H@"@\fMe$O㓃r &LixMw%lk)Q` >m OwtL }/$I/,g);Uܖ2 H@<ꪍ{u:DG0ϯMլb H@,(pi % `C"00,Dd&a;sqʡ$ hr֬=uL@//KHodn$Q tAu]/Dн& H@+,3#6[7Y>=O82\o]^FH@OM$.mԔ0'[S3 dlύ'2`S< H@@S[~zH@'&`W3Y{oD@~fE*?屮t#|].H}OcTzsI+ xu\߇tXřUND~;}XWouncl$ ˧`P8Cؾ48XRlLY" H@4lv1Q$ P3D*^2$;۩wC[ o~[]$mn N#HYy6Q /CԎcj, L@ȜA6T?'锶SUI@(h^_9Xs0F#PsvI`8zr:&]$K@{.1ח$0R g!)Jm/2`A,Yr" s$  H`{] h H@##5_. {[kj.hDXN/vVv+~+_yh]CN\F o7e0Q5d5xJ$0EyxC>]g*Hl7h9F)t;?8FmsHjAmk[$0^ {l$ L1&d?$_bpђ?w[M$ (gs-)ݚ$  H 1uU#NVg*M"BwMC%2&:`oFF\}%3K{ o% ,VȮqo}}mrL$0yW, 삀]Pwl 4g`n /#&K;"5{]e&obI@$0u?d~l`>WG* H`=xQ*_"¶i]mܷyfWd-*T#6G??{Z%H2K{% h g^Ȧ<\lT`\"CL bkl9>wmhDZaDZkk_& H@'}݃$ %b*ٍr1~26iۭOORw 7c]"K@&M\Rs2Ee$PGn ˘(%|B.UX?I`H$dT@`O"S{.oBcEbM DsR^=X<)K*>?_6'ıM H@.zuM ƛ͎I򗩅`<bwvEL6KqIëٜ$#M)iN|dr .>Zh&j>Jebn?mܯ4HpЧkγ)"(e?j$  @#q9В0DH q<{Ҍi w#r&7Hѹ)%k_Dž1}r.$pt+2+o"ˈ +̄ClW2E).Yd'3͚$  H@(h $ &eZ$ UL8Z]m[bL|"roH;jM& <4uOg|UC`I EJI@C'UMp\?oAg.${M< N+D)_@G~AfEU|!O#~UЃlkuR_M1֋W@S_mJS"$0 q=J H`vY,Bf+E EtA${X#;Y 64Pݗ%  H@/&,N~K $  H`Md; {1YZcwxݦU-<yFjT:h2YT#'8\R KBL}KM$ K(D LE5 H@'s cΡh!TdJ߆fq-ڒ+^#tF}ɏy>B}V+  ' An~hSY=e0wV6>Qn LEvZu\. H@@e$ m IUjv-ut"'K|7bH?+W˞m=^$  ̝/cΧ0$=$ q('b̅a:|Pǡ_\F.L,og,w/_^$04 ܇vFl$0jth_P7 ͌l4cSN᭴hRY [*k%H$0[%*l+q=p H@A3&qҺdҾ1bv}cɬSO[Ŀ;e ! ,MFp oYWeJoC4I@$0pR徆æ23~D~k#t'@[K}WۏKDTMuG5oxk H V$  , ez֛)GvJsYG߆9]+ H@ T[̹v^CQLބH.s]t0mRk 2UIY}4ƶeη#O%$  mZxs .6$(gGnjK;xv{Un3>:[w7A{3cꚕ;B]9dH@HP" H@hr8u;ihYNGg?rLq s$  H@Mi| A 1?J@ {bIt`b2[`rq{]b;d9BGў]7y#S{!k:2.$0>^?NO|y*h$  n$e{Ƙ; *U,}$uܠ:Жn\)yu>mݶ$P&LV$Д MuUm?E~U0;A1&Ό۔$  ̋_w8%u1xFNC Fڧнv"v9մIL>=xZBmds'*j/_a=[Xގ%  H`^=H~'VH@*~8;D/~O$GV@ svHVoV[sڷuEP">6+qܟjn缓*ܫ$0D ܇xVl$0* J:~X;8ar4StYή9": 4 H@$.&އD .a/ H@$"OlN湊!n/}}1Q34EeBOBd"Y򚓩ޞE&D~' H`4x>')چ$  H@_VK2tLf)-;$mMQt^>JAU3o yfMLʟq,=I@$  ImfEIe$ ub'|WaL !}IyC~> PiP*̵y[&v ed|/ H`xF8%#xޖK@G`?B^'jٞa3 4_76Q(t,a ^x~x`<>]AS3%3Φ"aP>ak$ ` 0]f[&rN-yU6ldeyBh)l, M$  MuL ڮTg H@@ Քɴ_oWߺl}j/>$,zM1~"n mkS6N_!C~NvG1KvTY$0w^co"Wn_>ƈ;B "b *.sJ@[$PL4YrՕnc|u}}fUdlfIo$  H@#@}?" H@!@g\+ط59 ,*Z췝I~ &PWq=_#5Y&%  BOf$  H@'.~B~yؘя|_OȾN^tM9YY\&e`PG@=$.$Dtr&DWEkJ6e/1۴I@$  B00bо( H@6|Um3=L->9~]LLr? 25Y׽8U|w)g]I/ H`5>Z_nLѿگ+% H@;=1 6_1`񟕆s8c#Z!M@.\_@R%:z|/SwiL lQ~.Ϟ$  ̓Ji.d+% `4LdPr<& ec$  H@$P _>8zpl$  gvg\V6$*V G"9.L]t-%Aq̪Ǘcۥ/+ H@y0(sg]EIkeu{ H@8 7tݣjAyHCGߒб>?O<\S9ǁ~Su=vדV#}5nJZ>?|tx7Lf:w2$G1 iUm>I, H@ }8= LDw$  H`*e ϸwoQ9[0,>V@AdZ54hqVL h$  ̃} Tߜ.澎!/g/W͊bJ@$0~~SAwMGJvu{'U- .&0TI$wÒ=& H6B~/ Hgtnl2&**?Dj$  H`C藲eM$  H`{Y4ކzMC،Ƚ/< .ӦCtO8{frW2aU(_ω\$ 6c礦κs7"\)]%2 H@vK W!t?hO!B1CuQ~[ H`4 H`z g4&h! f$A?DMum3:\zb6Gj}d]x$  H@#P׍mW6C) 'sb7^@M65 H@uבq$ h"谟F@bq'lK'E H@vGgm]/& H@:܋`{ FMʌ}i=%lB;^lspJY}g*´T;]& H@t ǜIQ]̽0%:uFB<~urO2$  (pOQq$ 蜓u ؾ EqA &&S'P `PdVZF̞E{2 H@${MER-~O-$ ,&.eۧlwr~}i-d]ո/o'Wݶ$ qh ci1_2+夨L$ ::ɠcO"Hз roӏA >%n~t4]{׹O]2߸D;s<~ H"c1AGǹ:!9`.$L6󏉻c& H@Lуe7FFM2i$  l@Svb}Xm9e'qI"ld;dg8fv]"iRG $[ըT> J$  l@]1.nE?q|[rjCWagV76Me\;>qH7 {C$ HeZj͌87R4OGm`Quպ6 j'׮ us$  H@(WLl «qL$)wˌ]T{ ! oWQv;8XnI!hqS;8_YM4m$  H`ZRsK+D}, SoWȸL$ UKu<&?^_}3x|ܠ1$  $|$P"(J$)jf`I*Z]F'&ݞe\ ۣi4#J@$0L8E)2'|ST\& H@HwAtMo&L$д[>%2 Dvm$o~|w͗12nv}/ H@$ДC}xbMBD_M$  H@"K(^Mlߏy<{ԕr= ̃ygR PM /[VLX3& H@FeTyD$aѽ=SG H@@-%]۵%`l~{!n?x Z=dXE@X5xOt%$  4\8|vqޝ(g\6>PrOC~R 7Pxe%[drWj[ݳ%  H@h@YQRbwHVw1t-2ytmI69I=&ǃc$ *+q=qQu,|tZ$  HO44REN`Yi\[TFWDžߚ↪1Ï1yƿY 8h*c/>9޷5''%  H`bMvu٦{< H@#=3~-jE*^e.tDE]T]C{BxmM6{/ T9y+TbfMm%Yvg:;dBKW֡{%  H@+L/C/Cg$  Hg^EE%D|!._Mib:v9D,׶G@WUq'Ci_xo6-cj$ M@¥g3_5[(I.[~~V?! 4%)9?' l@v<> ͜Ljj/?<ƋLώ2jƗ1=$ee^g;+c F^-J@$ >TwFöH@P z٩ܳtR=<"GL0ߧ#@m Vmo!'G8eCy$  H@&pӸ6Vǂ&:i}ήI;$  H@[HȘiyYgA cP~BsUX]̙m{E@{\ H I)[6M$֯f!v|ܕ09-fyvgLU4h|1I;7G1_MUL-]$k H@NȎOO$  H@{< a֪F^fQoh#8ʘK1ڦq.;D,j)t1- H@"REL,'U͛cSU".$  H+|1?Ǒqwd پ !tgUVٟmN@?asv~Rc } h$0pAb]gJVwVcfU2'c*+Mɸg2&G1qOe:&"^w^O& H@DjNϥ;4VECA1>eGDNk1M$  @vn>Ɍ:iU?UYC"tgah룝yVn o1qģH@u (pKK@ yTYVNȎAi1sW1]Tkk m˄ˎY2A`D-8J$  H@wSZz$  H@XN,VW0B#N+6$pXnU_=Y<+*m$  H.ba܉9e,yMzi# H@ T%I`!VWO#Q$ 4|^T2G`GI`OczCQ,>Ϯ,gᲉE8( Exz l7W$  H`*}7{j%  H@'߂`e,~~uX K"w}h?e>_l[9FvURs|yTk$8^ $  NsM$  H`ʪdCFwۿZ lW_*L&}k$-+yܛGC΢CvUFՊЙěA{34-$  lUoppP,4 H@'YEpa]-q-GUfSNkN>Լ)+ n;k~Ƭ<=O$0%/")a\ۋƵ}ĸ~8m*$  dO"P]TUVwU Qc xTGCu?Y_.Tm$ P>UKo'EܘLbUX]VnB~#rc(kc6^ H@$&rI}I@,J8}'u*7%j?/!r' U'KmSfI@쇸USDž)2n$ M?/6#6u yMfq_Golw#%T= -RNKߴJ:F&#$1P>ѵo6o*6ݝUo۹˄ p1v2s|M$  L5uE%"_K@ _dW:룝^1] _"22}P7^H7 H@B\S& H@ٵOyȷ&?ߤ=\79'OfEL(f$>1?hB[ja%=3,۔<ٍê}e52",!mA'YO$  wMͩ FI@6HId|H ^V .ጹ.NsO9_C|8gzNc:4N3Իgfq6 K@{<ݛ$@E" \ "lјr6V>l9$  H@d z*='s&Q H@2VZF 2!'n#~6ç)*9} +B,̺7?' H@:*aŸ헀$МTga6^bU^;CM S-{I&luAxv9WsQsxV9>6j (pC lu j'WX1N$  L@YWDcD2M$ xAgO*kj- ~swݷf3r]i3eɂO66 B4Q{NъX|- H@XQ.5_qqZX$ @܋Xir=@ 9KUI&T3{,wt(_jV˘sou?< dHg}?E'{/ߒc3sm!M$& q Rxjunnc|":-&蹡$  H@M飸U$ M#f jW"q2OYjG/n2I0>gugdz`՚/! ?a,0\ǯF܇$  H`h2be)*n$0.u{-"9BUxYkFWߡnM sllٍ1ވW6)wU;hγ<ԏ b L(1J5]\\gW$  ]pVj$  IOKa~|OUs$&QaYrڱ=]Ep!}}1/z, Roc!ܖeOSgx}M$0&$B\m#hbļwQ H@C"45>cꞪw*wh2:Kwv)>2_z l?G~^XWJ1^79l;,w_VMRگV Huh^ H I "VN*_ cnJhM$  H`u8pF6eTI@$dtEqm I dP:XJWZe/;"z#t_e?ز)~$ 1JY%:YU~Ô}$TIm$PN{''21{J^Y]/U?4}-{ۇGK-~/A*T.^·-`QEU1}#pvUr{@ ܛP3ooqD/J%t<:J@$ *ivo$  H`L~",`d*AYCUUŽ,| U, Yk.К$  H@`S>YHj^l]V'@6觡$n 8&Y_DZ dۇ{2p|:~uU3isik{*NՒН;e%(:FvzY$  H@hNaoL$  H`[R"ZGd>{.s d6KV Ȓ`<>MpA[ &!g%  H` Eu() U,{o*=$;?O+WV;vEU/,j&._%@ x# Y%#Clrķ2܅>}2֗Řm0ԙ/GRPs H6;3J:k32SU5'* H@V!M"KBH@IL`_%Kx\V=BDhoJ j>ʔ Zq5 H@V#mdq/,,Zwv=wI@@3m f\G) tG "ir\u|uO2~uM,^& qF ɍ4G!G*=" H@ T92߇SҪ$  H@$@/M!^! D> M$RxUe$[ }[V%0C[ݏ$  L@86˯LuE]ļyAn$0d,q ]5UVY\?ɂ&2Ls⦪7 T%ˤj|#{ʪdqX>bNklV%}UROxD(:†k1)f& H@$.KnӽI@Hd*do3jw-DO颪M1E4c!‹W@O]dqg_V픉M]j6 H@c o- a:ULeb:|}v @j5q7Lx]!{%P?Qw;Gb I9i!p~U7{{"qP>w=n(u-̅d2)! H@:%d/=%"Ns H@V|qPєF]_>34]&\#\j76zT@o E̳2{ojXeh~H*[%0LowbcZX4j\\~'>L  H@J< qRFAb)2n$  "vW3 X70P[٭4|. H@BpTKXFwNC0N_>oHMK?Oҿ:o+I@"Cj5^N7&&P>1hY(=&)7$  H@'@pm8SG H@F[Eq׫d~U1➑Q$/Ui#yHeTa_B9@¦|- Hg%PѓU؛HؗUY2߇}.ha{snI`0Zz׋i&7[-8ۙ=Oc 3q$  H@h@U6VkEH@M(2?/S4DEieۋlpi$  7Gп$Y\+.B_=eT~+Mm$],eX^eQO5 A-̛H?~_^J/EgMO{# ,X{`N?PP$ A@h-e:RT& H@& L1-;$  H@$p~%::C\MĢ춇&D ~;+͸dQ.y'֮J@ SN1Mb(I 4 H`<g,:'gXon 6S$  :wOf׊fPH$ i8|V\:<.B g¥|$  H&]˒Dїyؕ& H`?lTJEQ˪Vk H@)bqI"6<V*ޘb ,#}!. $ &"p*,'_$  H@@}U>^WU$  pWQbê$  yN+gS36 H ܧ퇨 DTorF *Wh!**F/^.r43 q@'ap;%֥79, H@@ 8ܙFhdZE.$  LGj7i$  &W$ۏ٧Ţ<#lALG{L붘Z ; mnKC@xҞHs܄ qVN*$  H@!PUE=d$  H@.pUQqI1SS>ѵo$ <ߙc{ﯾnuSI~1|9w/Y~V7;]HBolR# }h$)Gq|͛Mu[_3^l Ǖ$  H`"Kt >$  H@%`BcovL" H@*?f7GO XI@@U⒪݇6~DUʿI@5  OӢ{}%ܖ9& =@NC~R2P6S$ µEUK#E.$  LXw _1O"ۡ& H@ޝ<.sC*ْo!Ǝtv=,_%P6',v&~2)G.M)}@Md$VNnJ:j$  H@ 5Rvycvqj+m$ )3[V~<"[ՍYq$  H`X}7Z<+ ;^ںՏ#y޳Dxb,=5dm$  lm̱o*( Q$0  c;$  H@FF7%Y.6K@R,-ko~$  H`]`6ȴ~HvX jH@?G^_n ͓@M{ՀUt$  H@X@ܓld%$  H@.D&ri$  LS +;]X2D$0-T*F]$0D̅E\BW%x,AP>aʇZ9,}vTȿH@$  9ڙ&<^o$  `=^Q1rebkjex. H@D"I"Տ.uZ"pvhT'@bO,jK H#OK@x֞M鎽=@mq^82\B$  H@hN`QzbBT$  H@&jZwH@NIs'G!j}^ȪL?t>_X W+vQ 1"s6Eq$VZGpS 8 \f닚H@{G6Ǐ|`,-g;$  H@2=KGZ>8& H@ Xip `֪|$  H`~\?I syN(¸! ] TxhbEH8ۏ5 H@C%PVfݏ 8}-:CA/ r|m8]dm FFJ@$7o#D d}k푀$  H{,cQVN6(7 ,'_$  H@&PUJWGg{|l7d<|PdAL h a㟒G& H^F%z?Pk4*k)=% CBk]d% {(! H@zJ`l0NS%I@$ gtנdՙpN3jU$  H`ǜdNTU9#@^eĴ;& H`l.[ПT)>J`yt: P(p%ů 7Wr$  H@ T>3Ҝ$  Ⱥu`֭!EϥΧJHQ$0pUTwu^ER/\@IuTp"abWwmChJ?$my-ڳiP>qhL _ctd|NRNA$ 6*%,A8YY`%  H@x}9@P$  H`S-/&Be狽+8Yb,l:Div]R͢O-/-P>?f4oMȜ 8E$  H@X@bZweQ$0vUB}gzUS}$  H@!ѓٓDBR>b>d"A Ĩ4 H#R?"s ,py4޿" H@J6#tMkخ9 lMx nOvf8ȴ4;THӟYe+yvX=w>Y# H@FJ?m8m$  HS$a8 VN.J /$ 8]].)w]G ؽ;oϲGզ$  +_Ejcuk6F$ 0=whCz|03Wxpl$  Hu#}}Vw)`pܥjX5  R4H\o&F KPfgdĐV6ڹ P>ȄǑ*53^N`lX,Ȳ}ϫb "Y5V$&quvS$ ~x@M%  H@@(KB T& H@4IMě>Yf' zfm$D"vQ>86"JX'pݩL@KXNFiFQ {%z$  H@@7H6)gU8K$  H@y$xw:ߔ#nGI@$0u$Uј=|QHX:&}q׍ՓM;%w/  ۵iN^9z}V P7d':)[[$ j%mx!/D8;4 H@$')g]ק-$ -`Ybu,/t,cT5$  ~"I Q7B4 H|G#l}* /߁pˬhaN$}=L 7$sw|Wۆ[]dH F&x߭& Cvjj$  H`^yI@$0M;1=%fWYKɥI@$0d~QH]TKќvWʪ',k$EBeD`?CBCWq6ۃJ@{_GvI`ʲ#lG~S+ހo{*|@7^LԳI{t:3kqVf}ƿK@$ P2mdKU.60Jm$  l>E0}d+%  H@ueqgy_w E?& H@bUHD'Mh@>.{z$  @&h瑊~mZ60Q(h'k,`$0N 9J0QD\t*&vNBD).{MUYqDi$$  H@@^<&QSyȇ+Rmv$ m)hgRоͱs\ϰ1|$  H@Ȳ/ʾ=&8wMϯʹ?2QT^GQmn_K@ARuS䎷H?~>c5 H`s\Մ baVZxS(^FALVA֊>Н&m[ݽ$  H@TJYRT& H@ְXZ-Qk,DUOw$ H@q12G5c s#΢ҫ A@o teABFW;y{dG:D[6w71ޟn*&W (pd dvP[ǢD!ߵL7Y$$  > 9D꧑{I@$_B6PD-C7*|J0 0; WUaVK@y 4|.gF,YOdĨk$  1?Jsm0(=JomDl*d%{&%07i9"%m;Z qs,C)ُ6mgcvS5nJ(fܗ$  H@!x'FأH@O`  Gf?ZWsgOUdb*|2<*xe$  H` ^Fﯙ4|>UU "W$  ΃v #Uv$Ym_DXpR@IDATNmG@7/ۙ]DPkӫ "DaȊ?S7-dW\Ds$  H`XD0S 3Q$  H@d{qO'Q!洤BLG{[Ddo2qL-DoN*" H@# WogMc&@|&ӷ9I`:(-!hw! 0 "QiWaPk{:@/v 166-lp3}|4shBw?e+t^kTpqA8 H@ :.}}!m$ >ؤ}|fmHMO{N4ԝJ@NK_iqY2>66-NY,! .[TvK@hymiO"Ɐ,mV:DnYgܱ$|6OLjL"~7ۚPz#fm7;m}I@$=ՉFotJmod<$  WYޅqNfv*!lf%զddxcif~:(댗:|$  HDVTy25 "O)|U#|q.+*' H`P=Kjز#*-_ Y_ck#>!*n86G}'#d&IUl!gm=[df[ߌ (p@h }q3~.q#䄵I H@6 P֒`iC܎S$  HLȾ=}m'ghM1[̜#₾Y^Ya_`GY[}$  lX!}W%~@X >B z6/ gﶬhG %.\MT K` KÖI`Oc Ĥ2닰Qޚe--\z͝dev3O6LtI}I@#P%8߅#%  H`s#2̺}ﻠ=տGpH6$ñpr"`|O H@ dvvXVNI߶_EqʿXg(OZѶ>9GCMo{; wFTO+3M54xJLEs ʻkJ٘mblUpAo#J_d|& H@T*JMobڧ i$  e4/Y;=6Dhp>WaFDC5y~^"$Α$!; ZK@܍$  L@Q؞<F-N"Mc"4,._'⺋ܲ7_K@6nᇸaWU!n!%yhC?% (pOQqzBŽO (S/ed:>ZIT0[p>xvg7`` b.D鳨gr& H@ }qpc $  H_XK̾xU ,ĿC&#2OW71fP|ELp&-q,mX$m\k̜2$!(; &(#髉Ҋ\|- lاlZ՞Qk<WTMU%:=:I&}kNp0>?ߙ83]+%|{|p=$NٗXuus.Ŧm,vk!]NJ!|q9ݗ$  H@ Sy}a=_ H@6|#yAnߢ JsAG2A{$SnN/ ~v? H@:sY,dNEѬ3VY\ yC~qcv\& ]άmLNׄW1WrT67Y4g$0V :k48q%dUMuC8ؽ,;|;߄s.e&HGq^nC7f->400FI$-\ߞWKd$  H@S"xl?UOО?g n_Ohj:S<$ qX/q1ˣ&ǿ$\ptCm$0(,gi Q odiG;_ :_ELmoXxٹQ'D`%YΙp` Pl*׶@ LڟD aԓx>|h#-*/Ue,o;mb)eo=62k$  tC(̿R6 H@ N@M1X-,f\ >CI*;B2QHR@M bqA #ƟԦ[Ȳ{@UA*iˆUlG@{ 8l)>C/_FR<-PB',lc\(OcCW 7s=MyYv1:?( H@$22]p. O4 i%  H`\XOu2aB "<3-t.V#ºr_PCo#m'X7x f${?={՜=|)~j$ MXŝ8 sڢ,-$  H`%~A?*}k}6֦19g <&1H`m8^Nj&:eL?DY-|w+ YIwUgWS Fdf7/5nc~P$)#4 H@ p BWL(.E_~ߢRV3WB'}Jw5iw,x|??M$0UY܉GEQzT&£S,0QQLUO_mQEfOM+cz-T:g*Sy jF]TsBy l^Ä_ ns8a&xGXЦQk9fo$ ZTP` I"iv<0!SNqIFv2gT(ć.M9O;[No%|ey:>$ >H5ld,Em&=Ͳvqm@_R>$]gv}݌aVlF{dQI{ a9VWQBX]l:B<qeGc<tj*5ec6gV Trwh)}$ xu^& H@ '0|wP^M{|7)q{~v߾~!ZP>?, H@N#5%3 pIHQYmD* J' m'Cǒ*KҺ%P+ۻ7XUWoX70o>#t~? 7)QsY7]oIn >E/oj=Nv7m"&wM$ Ed$ & H@#@dĸ$SG3m-njn]q{(CosfEvz3 V4J[%  H`3\1OZQ"i❩>m8xR:w1H`H2A;W?!oy*vߧȽ]URw$0~ ?#n%XxKC22`,Vw{C4n.ކ0>`(_]!m-'Ln0.7 f H@?R(eN\25 H@@/(k/WDSYk %+`O2x!tKSm Q;vχ2a9]-Y<K@&Yjsײ량 612֫bew$ U1De VO='`/PX<;Y%}gGγ0I]#n 44{q3;,+>F6eP=ϛ1Vf0!WYܾ0qo}s峻["l93! H@!PV`g@ H@$L ڻ;9R"w `ijT}{ߦئBZ l\B{ [( H` s]J-Qp}|%[ء/Zb|- "3A{o:~@?ZoZ{>ݪtOcM)nf,dL>?EN7EXm餩tښ,\ "3tS H@LT!& H@M  ~fbvOBrI XMp"LdkJ >jEu?qPs$SʤM&P芑WEDt,reA*6X*}=@ tU[evu*ݏeG&D]<դ(# H22n@@ݻ9`ڗ yeˬ+˄_X@MYbwfX0qr~_ؾO$%27K?1/"6 H@hȽ㑅me߀pL?x/1(nO8#)S8Gi%9".yw'h .(O H@#PŽƲes Vq:J$`q& H.~g0Mˡ )1naW^> _>CRH% [nA,sA{&8r^l7&_ba\\!p'I`ܠFjUx\sO$Gowfi$ 6 ǽڇR_^Xj~wCD 5;=[hcWAX?1cM•ĚM$0QeP85IήLtH[?l)c+Mq$PF\-khqxe#0翨qnOm9m*g햳{ (pNfpڇ"F* ,Ǫ?Ú$oCWeMdeɜ̷9jK&P5wn"& H@XPWq$0>,ٵJb!W(GeUS=d{6 H@Q"X\Z/IhؼڔXyQdך`He9C?)1P>QOx+fSKtr`g*eLbȜb~n@X;[ƾYof8DN۠>$  H+™GLȸMpE{̮۷E@X}Gm\mH@muIϓ'3.Id%uR{DM@ʪCCl }$>c!K;յھb$[4i]7=C=&ly#4!)#9I4 H@ %"Pl]8kpŖRsscR4XI`Sv2 rvlYvw˙mjD=$  Jm̙ɂR4cE"$ 1{lV,Nj [,$P:|oD?:%反 /%yx|. H`HCX,Õi3>G`7|oXfgղ]Y\n)21J{5`^2,3qI@4^I J-@ g%P cTN8ۙ)Ǥ͕|;XI@Ejnb1-c+ H`l%|. !֙ 2{4iQyS9bqX^ bţuy H@#g|c:DP%{!l8VͳcwO /}I!R!g6Siy?]fȸ]#}zcnsz;g|}(7uI0$r}S~TbF#MM{V >>C V2Jn$ 4b5FP"ܜS4$R-K [K:$$0m ܧ==[.Lr)[vӨG)C {~=<>{5 IsE8٪6mm}I@*鬻P$0,tڋ\K]Y>0 @vErdH?}2l$}/ع=wVz H@!)7mVNq$  C sӶ{)/h7S:gjhzeIHU{W1L%͢&`[% pu=$A\>Έfd!ϋ#mKlZ&b M;!Wk{ܟ$ i([@l k N oAD\O~e^+TV {

        X6¥iŲ31Q؍TyxvD=nD'de ReeGɳ+LղFl*#) +?5kb;U,us\3i9;F3E!bĞ),g':ҡXgs,to@GO<2]'} UYEm|枉'VR;Ǿ`:$yɼ,> $P<~YইpRR{Z]EsQ9$ TY ɞ(N1Z U8Zo JﵮXk%٥7'h..nT"58LϑT\S O `1_SK'3|sτN=`M$gPs /`MRqG s29f,1$Oza3r Se\L|Fkxns 8LTz8eмEEj#Fnmqe~ymRP'3ferw>qğfGd>|ƃ~pߺŻ,2˿dy)HbĚgO<\wX[G< g3TJͮ%D@ nR#l gy`aqog$B@9c/+C7 vfGՕ33̔mcx|0a4k_tűNCJaP_@JJFL;+\ 8D.b, ]GlpƗ@f`Hw2X\?:/7@n*uh&g*]A?[Kp?W%m*3?3` |g,r)St)`dxgk󤣙tEl?VHX ̽"8J- |;.iWdKZ?q~ 6:ye\f.< ׊sC9C'm> ~Utptu_4sO!6>Q^Lh}'HT8hW;{?kOvf(|qYuRQ(#1mZ>lSc=`ŬtY]RgE]6N |T6iX}zK?<*R"|y>~$ z{ j[38%.\Գ 9Pjwjid_2=62W׽^`#hTݯ/UJrxRwyƫ91.j,_LWʺ9vȪŎX%[]ߛ6t> MEzWbtӎL݈|]E^:בO8-_MڙI_!ģ(-VX/s~ ( ~=yf"H{o\O{˟*f>[}t_s"טZH:u \|/s :cG>NsV_y1u͗jk*雯f.[#t.Kh=Z=wy·Yev^߰EfDY/,:.2_)wsc%$?|W|i˾kR'HV. Aڱ@r!{Yn5Ko^}5m@k I".;Jvp\R`)/ 4W/{0u]ﺃ ,V.ə L|82u}w93ĖYɯw+/3ycKz}Mr*YICdz=6ojA;O<_AqXOp;Ϡ-\_U,Kmiڿe6gq}-̌\[_m ;3?OLLo΢+=cd&Nmʥ0TSΔDYy;_m%6XTVMJ~wZwrhmܰg1HAt0pϙi V*SqGa,@]-2-clowEVx~nre`ŀi&nvJ0rJJ|2P׆B(ay8NBMc-$ͅ05;3+^$ޢd3c+Z a@q5(YJEX% 3O!:lI4& oooq04q N2qOrW+UL>'pPYC`-ڪo8>?Tcap{dgob?O{~VGC-E-eFn5誆f{L4 Zpg4Qe)Z ĖgXɮ'7u/)u)< NE2(;7J?$G*|ę߶= Jϖ |*Z;Џ0-G5`;no_?{ǿ~Gff,xמ6Nk+WgrXx˜,_I3zGxy&f>egZ~&-}Yuq'W|h'ࡻ3[{O*[t֣ǐb[?gOT ,(49{N }2+̶möW_pbht`%Vh`ZUa:߿7?pV:v^}O~Zf!)آ j- cw3RWtW<ÃJU]c ||{;'Ľjۢ&xLj6x?(چoq6V7[pQvң) aGt GAB)Z{ üw`'Sw Ho3#8Mqn>pLEޞVE( \3oY|Oh&U̥KlAP-*!sϏGmC_{[]:]GSHɕ*IL̂t,IA8$tɔk^1C^Q87JD ܓo]>7̣n΍Z.YʑT?ȨfABu'my@᳗Z%li"99s&[ b uy 0fu^AҀleK\.|H20XH},Di6`)+$"L#!T :ca4D%{-Gn[T(m/w,3Q(;j5"hM y#a }>k@珽SF'F_sf$;Vc P-zSPEevR<G#-qqQum`[Cqpvo +V3A>pQΈUcxqE{ g?'__x{l:s;`"(u/ xWI"fuvLzҶ*oBB+:Y DM~[+`([!G~.iL@֤dR63TI"JDe%k;#*Brim; JƫR a"̕.ɍdr WI8w[W~yHrvxG ')ܯeD6K]R8pS'rvmyR!kN֬f2ϖ3-yiAr5횞C0h/+ ƃrSn)O+* LHws~mu##1M$y0 k+5bפ;yR쫻w wKzs͖^ɖa#<]F? &PK 4B\LORf|VLpA8sགྷZ8ȯr8)3DLLwb$d*tdLD*yz\1X˵3H<:3ޣ1f eb`k>s,1Pl"W谱h[59>ThmeI}]Mb Y-`2"bpL*~Zɳ7ڐPU֬BhlRw@.&e"%Z#BcLԂoDSy:91l\S+ NgB+?IV%/H4טXec OZGh3`hqmfN(~ͨh~P)c*1n= /yBQn-s'>&-cQ/Km:ߣH|T%n#'D!Eʖ;B;'ׂ(b(cV+qz{ ;#sz3 pVK!?>Đ/ 9"ay`:ti2xȲeEs///6M:"3xR L±hw|3rFπJ #JR/ tSm u|Ţ;֏gP4uC4 %R IDATtFē7&H fӑ5yz)h-#\"1UzQfd- v ^hc"md#uS8 ?qϐxfd&:iu y3|HR ;o^Q%~9Ζ4W\ˣxkVay>ہvv0ohUrͳЃGhN2p YkTW!m4 ,^`PP0 (s^{ Zͦ(0A^wQGG(I﫰`{eR %x.y B4X|1 yCu|/%&(f֘Pga9TdpÓҘpNi|6B{I.q) UA >lcg1?w;'qWh!H |kT`qTr= uJGV4U=gkd'נ]y)okIfs5EL*ރs(|놮:i4CE}8Vv \;"Sg[t vB*==ryvChAJ9H D yUqC ð-mccR,O(I=Y;!HHPpgpŁ|.P0@ ;/+A>X;E7I_hX uoe1QW,w>_=fX,9O$2'j(%C{S~R|ҥ8m/wܟgL}c{>Xnhd:WtxV}ul%>sqE#j*R`epSWKGCVo?xKc#صDnlz7|x=D;ՙty^<4v\yǰ;4dA[5q} uG$K}0c|Bmt0EbDr(ۆ~O/ 9߇Ӕ yT*j\y8RKs:Vcy{~X i^)L{>^6$g<' 9"Qt!3XȤñ`Ҏ.uZˏ4]vsIME/`"!e (:zt^48s p^a>x~2̿Xl$yD{+}93NZ91u3tȀPz;#9"M4m3Q.2btbhѤXNy:864pD:\ecd]􆮓WE;MYM-F8^/< < @313$WY+,"ϟ_2\EV\ŠE[Ax]3*cv9J*QdxP +t;=dnyucZk1\bH3>qgo~]֍te~밾F;O@YKT`1[|='Q,iiǴi\7Y43c9gXRW_)mٚ#O @^]g}y\uOt݇ T텆z'2DgrcφϢ7/538ŧ3tش_.g'Թ|>/yDC:D;bd"zywuHj \_W}|uR L#Y-]q}>}/_bGgW}k.S"=%w,\k%_ ԀS6),GgzCdϗ3kDtU"'\ċп||EVߟxuK["#/aïkuQu͋,vxy?a*m\<_@@&v./Eerr']f&yxg\g% KZ~Q>7]l{uEV-s`םgM[:s8}?m\5gVd?]=i i>u]ׯ,摱'o[f 澮u]c] VfIAY _XKHg߹e,;sP9E_i>mU6x'w!~y6^d@*$ko`)?x=8<]kxmX ~}pǜobBY٧}O&avҥW-"G;cY0M3)y Vrqe(|c$厨|I{[bYAo#_? qc BX;H@nx߂Ǭ 5Zp"D -d}d; $BUp9R:@DIء ~v?D=e2Qo||>ɻmɃ3XQųw֟Q?O _|aꙨBF՞:9S{VS3ttD9P7Ld9e=T]L71:xzXU~ZO`ȀYl42I>Kܬvǵن+].9R w!sɜ;vvN~(@vٳ"lXt/*Lf5@̀n6{Xu&TpU>˴W[7Lj[^HdDp@-֪uD. #^tX1w+ @j:|[h B}X0z#Ƿ-ࡠbDC<~"ҕjiP-tO=0(wAf'"^*¤؏jZ1KL߶LjN3mjV7=:(Rwg`КRLЧz+3‰}ö dD M"/_xǚF'qD%B߭ +@iyNg'=uZ2^nn31/0B[kq?юgC,o[E -y> iy]ܿ |8tX o@xvG <96{tۗ3o//}~' -^6C)gr<߾HD_Zko߿`~ponu- &m5vmp<_$5dd-a}@;(hE ln[~G;Vtv `Ddaq`TTG?_5 GzcX Bj[bPg.^g;&HepC=#϶ vd,əxR\ W["(%zxfڗs̀J/&G>CpLnIˉA.+`BVdD;fUPgB7d>}h,x$E:XP އ`b8+K'*@ 9pLL+83YN,y*Ȱd }P'XPU,q@DQ)bczi,Ѝ䠳=?9&x8P01id\Q@1h;C0x206 4Pw8iJ$0瓯0dAcmN[ݒpL¥|wPą="G#xf2Ik|ɤ/5YHDЩS:k HG튢&ZlSa=0FZQuc{mAgMJ`隺+gp ~E,mP|2ߙ4^JW5F%RTUHn 2 gX#ӻP\a0ɘ8t /O6B/%Eލ#PFo-q|i˗D{ٕ0AV eS@^KW ʇ LO6QTU !'6tzfpUxKL]DHS;4鎍kդoȶiO=1]G@ihEaK7#[6ͰaSBÿ@Ţ/,elMXzKIC5d& ̕X'˟8j4:gL@_m;vǰΜ”r9) ?߭p2胰>}p'#׶:ʸR6':\?`Οr (-u˻#ƹ&B3dŢ> aŠg,HL>釵=6-hOA4QX*ݒZW@L>} {i0 uwcTϵaq΁΅ӝ;(G؀;ll\߾Џ;T\GnEl;nۆvVb`(<7X-^#N̉r F2[CޫnA'QnK+(j CY4!EPgJI[-kbdy$Gsxo|Hm#_XU6 [7gQ@pWMB Fy[a۷W';E3A)px|4{*:+q|N#uw$+vC )ߟr dt7* %2A>wW#8pux|t^Y69 DPFU}T9eX !7&V8pSyBGHC&xsvNN筡*G:z Qi88Oͽ'B&W`;Rmہvi~<V:PuGb\GЏJ-8ۈG F$- }N<8B59d+l0 =Ьnu8>N<߿LaiC:a2Q2 J1El"۩NRre[d":jiI@ B}p63#É<Ƞ9lD"ƮFik vRO8q ;޿Gr Z'?D %PHәr ~e192`RT'uqv^O̳h?f=g2"B@x>>pO@*1HjaI(pKx2Asg,`ל1JBk\Pp/||Fɩ)Ґc"JgvqOrWL+pF8I&1lDthj Uص %Uc gZ;1FC8ӧZAk$ LPGt"tHP; QC 춙h-1N|ϱɤ IDAT$ &11zaaD*)hgG&O8?yr!U [sd_=J J˽ )@ `L .I2_f0=ܦ_9.|I8Yem z[uQ1DX3 Pt&Ai29ւ Ύ"F? YH0lgb&O:k]0kyž Y7n`Msak):b8b%Zs#cG:l1&v[xK TGagǠ_,Ŗh:K51_,vqǢ 3F\hRl#c٣1Ԙz+.<T> 8[SBc#7(OTLeg,#tq\mQaU )ԉb@;NN~;3-%zLɮw-c fw[ogQg[XajE-n=ᡎbleSc2 À>|e1zܟT$sOnhN"8sS ")+I,K1MNbZqp~֮J8 Jh>Pbʠk}|JTI^(9TwLmx=o8]$̡ƚ!'4VHILv1\ x1E SJh#p :}JwtFv#|ʞOt^a ۹I JkEx3cs'γCo< ?Z[h=f~/юZk_߿ŵEpg0LaG9A%_1H0zZG#L2Ί-',YA.팜֘;-:!MEu=tG33D)o9g7>PYpV{sFިZ'v{,AKHG&|PY%i,s{~@pC)&gRI"ei2#GlgHjzPVۊN@(SCZ>3ՔV9)N29>h&Yk‹sh\D0rH8l ~(+g9sQP>1lf8O QϮ=I˳ k;ڃuhJQf=xmr"ϱ{+ EچikfRc'"ch/X;7M L0Ǻ%[WY 'd'Vz3Iz͎}lʃvf䙜3:>9.bcc [> .؃TӏKݹxk`yKF)\?ų-EW{}L6'鐿4}DpcC O޿,?z\sHNAzg"Lu$N<kxJZ϶ΘIl\}>j% ǯbL"6z3a/Ե$uoR-!ID%{ʞk_"˼ת=D8+%os:w/9an6"|ܫŧŧsnNjw?Iƿ_ݝܗ|^ݗ>5GҜwdWDu=s :,1X&0mr\Xy*|P ŠfGbϡ+9CYcyE~w~zVK?!j,gȶ-DD}ڏ=ӽן3Ɩse&Me>zO/|;-c`3^䍶?/|mc&%L]V/bڏ :5Yܹy6}t2]ֹWgCP9eu``d?zb`Lv빾yhrvGbM[aF;f˿_N5G"s)]ղ~Ӻ A5[ -8}XHiX"/CRgI8MwɳzOz#3p߾W޾PE\ 8Y>!r4Rhl(=mJ( '-*yFW2dxm;~|u gopn/Fsp/ жU|p݁RpugD2v~öm9+6ʝTLNGCtuMJ=1պg~al˼g,Zܘ%'I9 90~vc/Ϗx Vю 49,M|S&m# >"wajr645lzcOٌ"Uh'_IXI߻{&=8p=͕FqT.m N\RŒ<;T!KG?OΩxd38Umq?"R' G :~ ۾G Fطkѿqľ|&,8/R uq^A%9zpeFU-5Xjz2p-lpІf\pWJPkPwތOk 12*02V4Edc ♵,@'[eu Jt^!39㑮Ӗ/.!]8Oۮ34mCa_Vpat& ȥ3ZHΓǜhƘ;-_KAwZ ]9zk<#H߉cfN@ ^eH!Z<^)o hfqh] ;_7/2P*-:o~[|o|<x<"%LJ/̼,qَ@-(bL1JvFE?vtXR\c 54z%OcQ7w1;ޔZ80bNUkgάߘIrq({ z y{C-G;=r:qvOݠl?*؝^J#g+!ȓrm5DO逕4EKBPJ&S\QN4Jh=φmm XESQ'E{Kb2PlʖHI ;-L{dΡtny%G[LtfQK6UVgsPA1('kpY((U?;M-m1dz(g0_K[A 9/G,{[h({Dl4rFF8mƊ( }3\S5g ӗ'Dpْb1č~p +o".ɷ"Z>u X* F w ss.~ 9S[SUTL&ERȀ^yvc񃗤Xt3~2%^љiQ]hs 8EYh `;'u vm;7mHyx4[=WP#,Q7qJ6.rlg:>") ;!OUM<ϙshp I;Sjv? vhkmx%]FH?.Q>oam1hњcIUAm:\ܩj&O{Xpz"uЩ1k,5ޡ~i?T<ˊ5[C9D]9u+/$\"7ӏ E`3&?'2#1N}'|GQ* M EcρZpj\Cu,(N N #ZJZ>]YB{Ś,T͸W;$[7oe=9 ŔZE [&B.hy %Ki(_k~Dj3IL@Xmitɇ]i%6pEő]D[Z.]7(Z` u>wJ:" ~\΅s>h@&e1h+BW̙#{'A@!sν1,6VV3Y9!uĀcۦOG}DM 8B;K6/94m&wo(@ #ێ`Ƣ8Ho`av-䛠MN&^ ⇟~5`C{po[mpGȯE'Ѵ:}18X<%\jR)14(g{`D~3L3?Smcr"@n`g>eJU=;HLL9(}u{}E\hp?twIZ a3 ;Jju) Od8^8ǃESj lcS 4)`pTsdŝu}:!GzNdC$~bX/,+D6!Uʘ hUl)4<5&4xԼgsrv>4Qv]|[(wQkA_Z9κ k`,oDc`IRfdyS˳CK_=|Q0FL *X!ZR $ù N>c3|I$՘ɵY`rY~;t8z]ԁnGPlvRMB tZK-fq/ϜKlsPvyphX[ dб(9'X u:zo'RԹa,N]`iZR3Vr^ iy6|Kf GʏJ0"*ݞ(o+1{y1I0wաRvi:pOW "NiTgI kB:rht ςPBYēN|Evz=:^+ȹYI[7Qsabm7}[8`߷ ǎLJF 9kh8ދd:;% vԊ*q߳Q>y^$ "HQEWc(љUBe =CM+inшnցzfDxؠ@rδF$LTz`1hԩhZJ {5$"z/:^O-DZX(nTgQyOzyˤOSC1(;I'[9O鐥AȄ'j XO"g Jr}NѴfgka[H5K'4klLlH(#;7 0 T-PN;:21&Jd=3W?x=;Y_n=[,JGh_l :2 Dy+At ICier,0KWJ&d:q I^+xpؘC?D`NHx&(D_槨JUxL IDAT|[),Da te3B_*NvyPK sRY_@zVg;& bto#_1xv\tNXc5Ð,0` :C**:b@BK=w3! !o09fnHe-4zʇ512–2`Uv(e.bΘ- HZAy8pP(-ctTΒid'Eny]->*Y+}b{] *u&9㈁N_8`ɹ\zىf;g1 K,n~#8e(R_{~Paggfa1gt034Y` a{P5u|GkIځ}Ў->Rh=7n(blmmŽY[8>PkD;.~>x|>>2e+6Uc8g:=XCse}H}N&YgΎg ZNf8ϊ!Gڙ>| Z7ܖ>GO|Rx~xG:s/z?S zS3c4KT5_q \*UQ40K%r9* >axLȘ+ߖ_(snJXDl:{\fJ6{zm!-y Iӑb.[>w~i`<@p\7o/Y:5ߓ ,k%oyet\%h\}:*Mِs˯-^a/тD:Q? Xj_2Sm]8u>᯶Dۯu}|W,}ZQ_VSs=|Y%)l yikK" -Ws|9'89~QDr˷|v~?B"V2,=Z(R`^`|Kb@rC2w׫b/ Z-8^et\ϛ?ۻZgz 3ײLkuEi;̈́U5[bSivEykHy]g^BD]+Y왉驇'Ǩ 'W7WOs {G vNn͋-W[b{Sf%63t2G1O{ǴSO>'#ZȵX\|ٵ(."LzfHF_d*7y0و'?3`V%w^}MHWmh4ճ\K/ڏuyNXɔKK?msS6\>*˲]lhJPr: 78s/#; =I ~I}={S']uY䋮.;o= l줌ZC5_s<.IIvY[lĢ JwY\k3w> jGC[QR2O3cs|{ \Uy|}_#|v!eg0i~]l } c>n}zU^V%}&S$D ^uָWw@j|ek#z,( Z?:nc@ &Hhf)aMmSUHqr\ڬCg G dsg@_Rjڷ[{@Oڐ>&W . ~w׿xB5aðmwwo;}4_zGuGqdU8DjWkm~#l98:퀕8 ;Fӹko*H1GgշJgw"O d[D_7/_noh[Agl~ \uRu .ZQ1ߩlD+] vJxx%[o=_z7E! dsQ2CVn;$K{dVpf%>?sKfF]*f= u+3LM?~ sӝ,QC!% eHUr̉Ѣ{At#BCII`뭇 ]:XA47RO\#L_~ vB3A<>7@@XNR |ya@Z #%Z7@g 1)prN~ 4L"e7g1^1FAuEΐs-/G-8ZxSŗJz }OYˉZN }t\-:Ux2<^ImlB{t/@dRqz&F%vx6[qJ`qOB3b"54N1v+|SRq#KIөXj&Lv)Z}f"'/R>]dt9ykkH=V0W:|CsˆH?H ~P)UzfG{yyj _>rI,]S!M1=OwE~a L{!8S X WQHB ?tvLJ9h: B9P9^5v_vɜhDq !yf|%9'WBxGAC!3oVq{,2 NRcQZtdNք찈%:V ZOn/㓱Dž~Fbj&ҵ¢tRp#@X k vaEE١OGzhGpfh9x}}Yx<>*~E=O牯˟˗eQrp/xBwg,M^`w߾};j1 5mt<wZ41b-+!G D'rCBww4 2Գȵ\}'g̽xqgxׯ9u[q'z|yqWwh >g?:aj!;2p^-63 γf't?,UEB7N ۉ9L [y4U@h?op%'&Ee>{@ඒ 5iixw@EQ).Tނ/Jć*P(hэU{D;1JХT% y{wBHr+!UZab v-3SCD# ~THEP֪z3dB.^ -ZJDŒ v Lj 9;ik|"1y UwȜ1hsK]r=y3=='q:,&!R҄V" !nkea1iO^bX:gnko&D$GױN=jh(l0k QI⠝sD,_zR[Iv%)kbm+J0өF"J@ z.f[-"cb ȗy/ 2YQ⸝PGF\me9ґ[ۨ)0[><u 6]ڏIaaB#n KhإGhpǑATok)L[m1DP-x jlLHϺ{b>ctRm0IaֹƄ ?Ϛ(,)pg0%< F>`5BjpdpG0(0klT%|iε,,[^TKaX,YAg؝F&:[M<ΜP lˮ<9Ԟ$su42y GiSл0:.Γyd<őR+K&ݦg7K-K+(Q`V'>[ 5R4>wCk7 =s8/n%lǩ\z8fQW4De*Zާ?J|hn9TK1 ,9cNϟ3l+ĬG5&Tc{W'ԧ(Bϫ͖Xz';{: 3 C YF{ϱwbZ L(p_!xSY8%#T!>X+˛~ƹujU>E+} lshFORY}srfO O+et2gaN:T3ƙVL{aݛs|cK#kr>Er̡Y%:k`!b/ұH@LAGм꽬DW5a=[&;3! 8crɵ\-:EgXpm܉k \3q.<;6@ &v,I3re+4DŵiNj`ce=y\F9-sR)ֱ~o6F`|Oϖ>Ϻtܞ8. ,2B&B.Wekb,4g UCC\aF,rMW$}G-go:kW_~AEzۧHl d5AOń.C _>u0ra!:$Ga#dC< y;HIz5g ±^x1;<{Gx_ [ Um֎Hz;1głzĨ㨘c]7&}c{ƅz xW ý:߀R&Z{Ɓm/Lzq3 .va@W%|ws} &`>LLX2+W3?" ۠aCq(|qo3ɏ;rЖPfR:kb`@RN'"=-_rdT/4O|;{wx zf"|p߄R_Z1'JoaF'B&֨!ҏ[+ 鶯VN%r-T=@t1,ۤ$. I.}G8]Iupd"(S4>g$9Զ@)ZЮ;u>$0;B* XΤ^DFO-+uWk``zC}Dvдɪ Ƕ-%|Uac5bZv xa,rKLʖ"6Cf!@ lr{3hׅua ww0Cň@sg%IRG& J 0YD@〷#29ZB)w!Oat6O*(P0T"(E@79q=.F! Pr)e(׍"⹆ iϊ\*I= !#b(! 2(t bK: ҿE'\ S] ' sD-8(?+?(ZtM]yک4lO,fkmG&D(Y]~.H' ާ{p'7D#H,c7*u*&f4cDIɸA]ؠѣ6跸d毸"ÜLz> h^+#:o(۲w;*Ib%׺,c⚢p')N>Ru.(TŮ9*Y|N%%IDb97&4rsWZQ:m#yӜ%%Sa |Ǡcn%@tc,bxYwT%/}$/$ijSA{Y05s$C=g_63# /c=ǰ9b",+cDzt<$B/y.(^ +0fgWWtzߐ~բᤍꐁv V Z~e'fOpגSunϭNwu]yF7Si'w{ЙsBg O^8ε'%,dCK8  "Ap IDATF7P?[2ZE׾d\i5= Ӎ?w|j6\r^"]ߢEڈ[[rgu( &f=3gۏz+{l l5Nӡ_wܿ8dXӋ{"0rԟ.\zN"kP[ߛj/{fVQpo߳?荔_~hq5y5蘂/T,=/MF9e9@+1wԾr:3kӽ:{9߭,Q/mMg[s;D]TXh:u=r-&H[yƷݾt&>oYuF|-~'beLm8w;@z\9w[OCDϔ \ݻvzuv;1|>*:-]帞D϶7@: ׊ux%X>~u:=M ʇ@$%vc;Ͼn.Ovx&Yhߛe3 (l/2? P"~{9O&iyOmiouͫm?mK|rt?\'}غsrl;4vgcx?>`{}_Ұ'=w^d~.%Kϙ>Yf Y M_|_?\{'AGZ:6koY}NX \u<4fS߯nqe[gvk;LP\I?}m=b5]~t>o8&.A=t ?0oȅ[6uvr9> ͯ@z^=b6^+X $S3#d۽n8טbg^='}BؚhK2\ID'|w>hg_ЮL<ۜx~}|]d0w$;A^KEE62<7Yؒ-{gI^>?RW` t1l=|קHKKNCu,H='.`ۯ<3uG/څj|6T2 @-9dpZU`< ~0FUkpVr>Nwؘr֠p0)D 1ɯC n\-:80DSɍhBPv![܃ DhA1ؒcXYQU$tT(h>͕jG(fD YLphv"eâ@&͂ڎRQ 痯] ~ mwq_+O8_nos8R]DZo"&p8e7$h6OdJ^bپhD XD2 ?PlmwBt 7_~___W}r&4;9YkI|B# 54h<#r|tPV:4/:4">BuBjڭ4BV??ѧOWb[$g7^BD Q9hE655} ?jd:kKJǻ'zz {̈DV:EK/6:|tq}q{ dˉdZ4B\d;;BHgt*;YG9%t>5T 9VRlΞӷ3ȅbi3z Vty |X]-|;&j=t~r+;(AD(J:R-A –Lw"eoxx*`1k(\ WoAs}7}qaScQF8<9:~~߾ |X(WlcDW!S{7cYPnY///(%x{'t>w 'f(9Z'<H]R4[gbhX&, mV ۯנ#6-Z} 4e )luo}SN9w$d'pD{s:O+E5ԣ;X5VB4((Bocb _:Ģ; K)<=aps:[dL&LJ=x]a/u:Vp4"0f[=7|S8jq8soAMd8* IqWvk [ZO'uY}X!huLJD]&hC.j;E?]w8C{f5#}D r͎Wy5>ȣ7zhd'Oϻޱ( Cv#nHɢD6W1mђq{$L*iImJ荺>-ZJ\ qb5}ܜ甝.v8C1"HW-ٽ|GɢNYIr%u&-)G:bƁ`5xlƶl&zT>cWBvUq^AQKbAmcu j8#cH .0e V/s_w5*OQ-7 unԴYf^7l2tR'kQc>wCآ([-pⷢDlTIkfhNʑT"P|@WhBKAq#(zʧ91'g@sXu=SFݑqF#XĚ'J92~yvȂ%?uxvm)%+5yҥv~?LKQ|$. 톗ח5cgUy qwU Nb'xԢ,u6J>gw;㸡n/7Ei|P Ӏ:lԌ-rxy\it.{P1#{t֌6z0gܕW寿?}Jׅ70<M眐 _`gY';CmU="wu]!K͜gst5G{ >1;.v4Z9N>xߚ?1.>VL}< ]XTpݝo-9bPAzzKkV WGihsю 3^-4//+^n79qٷ Sqxm?zJ}vvJ&le vĥ;z4$ۀ©TV&$E8I>H ϟ ! `fNpL\ h;QT,8!4 x(L*V? TPŷ}&WTauoىe5 C*Ș-kWsÉw8jB$&j!o7ŜT+Pԣ;=XZ:z||:V-8TBh$h=/nSZSOg&lu P <0p}zNJTF Ta4dF!#c:$o,s+`ۓbD5b#Y-rMUH {\Aepċ@h9}@&"d^-MRL: gxHCcx5IYdΎzGtEg>&VdxkɘOH 0IIcζ*6|%RtM@moUY>,=hA=@N.3FQ9O :gg'/Զ;0DqHgL-z(K-VhDi^<6:32^#=&+T(ߝOs_J꣇sfzc9L[ڐ1V&L|B>hu*_'D+1A ɣin5 ZkR1_2\CH8H{ٱQ(9z(>ęo0L:WMPe|o졳9CFF [%J ԵpwI`ZәEv Z100`Bp"L$Oϙ_&9X!]+)Ac |mՙ׀Y׫v],~ŝ=`Աu~ 6UBj#}Wsw젎QPYs10`[x"C,0'{lR`N_2W+MC߻ZVb2} !yV1ˁ "$ 졭3O|+"k)X҄D q+=6Jn}N%}Zj$CceYDR_|oje^O][xf`}0i?@ڋXj5i'ϣq` QAyJmܤhJ 8ʑݥy>rvnFo*YAwCi٥&(\Z7jţ}BiN~J_Rx)/pcՂ(e e<,i'f5磑ZogfWq}f s?aqCaj=8$z+ӱ ?|>JGV+FrY Hm|^l?7Tb RQWϒr4S=~Rׇ0-ٵ(h`#o uхl ݾl > Ej=_EYyR7k>YJqԨqY ca%L)\crA G;& E$՞&BaהYKY˭3XqG/y1h菏 Aθ; =c/8_oT^_ nH@o }] y(Fpw3|װ_گ:WGZPo'kε91v'Z(ܢh",x 0=xt6G $&ɒz҉# sAYE=9Ezk)jk($09ųͱ khRҡ$;/ũd*rPZVz83~]B%sǀ#m4$sg$'0;}b^gS`@֝r@{c+ $BwΎܾ{ k\;fhȳ$HTTU8OL-m%﬐O Ȅ}q?nf8a9[w2@w|;+eI|DһI)GT$%h4,mOJ%č@Z+-qY!٣дPeXdL|n\){}>>[м4"+`@qagơ ~e |n-gOxQQ0q w2?"h%V#u%dAu #Omk==$ЂWnB A 4yw 9j"} cXQ|m9bnv&7=MJ33C~*19+6`FX"z#ud9@M:dL(iǣz|v`͸0|ZBF_]n\vȩ)Ҧ LCJ8V:~hLmuD)ep%: #DHP3>X% ?񁏏p١{a C=k4Z##"T&:Y~IEoWW''gkxv=^*P(9Pt/0rԑu1~ P#:/\xH6 mNFwO^EE] PrkrsUwڡFr%d@P1 mBJFsս\j:zPz2Hc yש-YR AfF$u0 -wx8A]H5s܈LzuZS7L`̋3hLXїܜLlfQ{ b!j3O 0+FMBtM'jOTKpʀ<*fщO7}&0Ȯ)c`NN*3'yYO˙Oba7u|0DP1ܓ b=1Ak|;8?ى)~莈k.8 /1ydx{>`ٟ>䪌,yͨϲGnS|Qmɇ} V ݓ(c9QuGv9]bv*l*cgL_aD_29Pm UwsƑkR뮾FniunL :cPˑz!AufԜ5w0#:xUw}Zg!gzωq9QB@wx%ˏgn΁zOolx3~ylsKS0]-EL1Kpi/7寿O_3:AKy dUbY$w 98Q!=o{\9LnFz `wn#Dbb3S$Yܢ9d4Eƌ_C>BBZ|OQxWj;p~}eF!F~d uac<M?zJ/Pl)@l/LA #vP{ԁMsY 4(oyJjy!DֳZ^sx\,@~fWZ~u~l%:b{X^rsmyO{}`ޮZ.rƋ,+b*V;I`gm&"0+茨9 Yc{=if6k8BL{) y.$c?!0v;&Et;'` a=m?;=\ޣ$2PsMυ&i&6z>]?~[Ckz|Ro2uOrι޷'X CƋϕIOsIwX"~JȉЄs׿'~TRA=&7|oڛ}atjvv=mQ- >Z;e,ufmkYS#L}힬iI,ަx7韵k7}A.%0')0G"G ?}>xeyHʶ= *-JiwX7,Wao^vO f }owm1Eol>ԓhyNsrܚ{O^I 10}_ḏdZAj{A{nǕ{k霔y |~l!qI7`0e~ ?zTY߅eόþ%.ve2E)C㔧V'ٓX$b}^?JGYg~1RdB7%LٟgjSP:['mӿs;;Ƹr_cDѦS9v,Y:ooW},}8tSY/?m|w,]g~A+iseg,$_Y(|)1c@1u4uY~5~~=Xfܯ]g=>[>Ϝ$WȀ̿>/sdxMOQtAX[J!c0XL+S 畊~E0nȅ&:ɡ9u=b±9Vf>x)[h49 9u{!]@L"㞣51ɩDGr*vהHݹTQ.7rK䝋p&?B0ApJȶJb(AZU= ]'HD'`9}`\nl0ErԊt@߼Nl翠N;>~ĸ_ȘsS[9q/_~ş~;~~=W>ۏ= 4L 6h-ěӃ]qlFXAɺf5ώzkhxRCw+o׿X d*)DBH^j!̳1عK98(HdҁYrzw;׷t-ˉ50-u!wvtgSRŀ۽詯i䝼V10ۅ~="+%QЅ>p]@npVo ww˟v{X`7i|}[Pact8HjwN=K_ɡ29h^>f8o'nǁ/_`Vw|qdyz(ï4C'૟Ρ*s1K<1u=p=.*KfcĜ|AtLEPl'#G$jR:z*ܬ@m7q@~[n{h6p=Z&p#'R&bwhMoWѧTvEn~9ՏUmvA_fYD7T+Kς+h?3O¿QtkvH HOvF[ cLvP'QOB+8/} !5zc1c.Mv *egUgpZg\q7vuֵҺ-۱Xоy:D ?a$=FkhN2/7 q$w.b]ӏn fnkYVˁv_7`z(0!M<8c4c 3ij9& q8o,ԭ)ćOp=9D>/OY@h ynY]-%QWgIՖtUJYgJ9P]U>>4 Jiy~b} YLMfitZ͗θ.8_ZXq7@ŎD@n74wcn]rb$dE١ƟAݜRƞxQ:wڨ N%eIP ej嬪R q1>>>H:uaԣk i=."ct5q&3+pD/+%Q1;'6j\D,JV!SyLD2y&=8BPC k#wZrOZp >{ ќxyy톟?o& EqH5eR5'ݞ#8oS;ނf9Xr.vϓyPn%^W7^j_H\},;u=&xk;~z9 2ZC弥վ%ލV1z=:h-0 ut{noW|7G랹D3fr>+fR ٰAY8ע _p]-uGC=b]40V >Pmb:_nu!u_<:`ɒr'^^_BO`D֖W<(v'uUCƌ*EgDй{ާkbjajg.N yVK"`npqn VPUa)k\jaH4,՞Fc1V8%UM169%_2 c{(`Bbpt ,( oT&LQ`מة8HJ_+I)e-&#_ߖf¡9HBx nLGBh&uQ"h Cj >gPeMҾA&ɮ9rVgJ-aTݏ z6z:i8JQqB8Dk/|Ї^v>! N 3j^ l'kM",>% &_B:pα g~V 5?ғ= ̭e tS4 ᰆ K YLk|=^]{ZH@pG#f;Zo]}Qɇڤ/ef!sCl:;ĩ!DX +5.}nH :KݵZM]wqvYzn_C!qi{pMWQ։$ζ!p>أps,\'Ml|jgMKŭX 6:,ڋR/% [ϣ*/.od;!d2EQ F |JgI!^Wp?:i1漦񾩍D:\<Ȗkd4 c#:T3ZFH;@,T ;dG$6 F) ۹QmFPE y?9~B[ "i(8Sd(#JCZ+u}c̆m$@ A4q HRy3w7}p59~J$-O꺕3&9u`BY 1w8#6L]C&M=JV/4{6dNR0aɕ{̖)kv7$\Xd:ݩ9A/+97sDрH8(OuOکس JOB m$ȍs@;yŜŭ t*ҺroE`-v|]/R좤D+,܇xzɽqQ-)/39-C.R {f6z I3g$_;ÄAsG9[=̄|- ,ԋ(Xv|M΃5Z=p5$Kw#:Dtl%8)qAKxg9Uc󜯂eՉ)c%"񬷵7PkNm;T<״{t'}_pF(rIԗq>'ܫ<v(VӖ36`jA=(w1 & ?# @w 1=r{9Lt"/TWIմr0ZSXY1g#bv()?bt{)p0"s : zUaë́@5@vTLGF>>pFYW^_fI 1bJ} }gzk4,sa>I5v.|1x|qGѡa01L:Ck]jP|b\AX8*GsDfO `8FĤwQ[~4q")^TXU",:Ͱ[WS{VQWh1  dxms (:J0*D TH2 踝} @TvV;+2CרV*Ъ{>"?ҹ`BA2 BqȤQ:.[*dJDoOVОɥ.(} -VT4yD8I5㺒j07#˜6;as ?p]* sd`42QUϜ־v`@N' cAwqOيQ~'n۳BIP [>p sC"P7I S@yR4'U٣=빣y!g1bjz< ENwD!L>|ss䊌q$F_4xoh=dOHN\ś>Zk<h)a>~?Pd q$,ݶS!UrJw]:M2n%`}33}q$}gF|C)  emEu@{ }g U aq!)wDЯANAG~TtȕakGd N9*~% :Jig٦g0gh[KNHV˙^6w%Cچ3c̎6*#䑁Z¸jx*Vs`F@ĀNǁy|oo Q(0RPzJWsu }WR{"m;b͹(Z0X $ .c7vy8`|Ub-pɩ°@4Z1Pr1p 7擌+h1>Ѐܒ!dT:A$|>x/ ml8s\NY> >U^!?1)Q1AqzaQ:d̂:*p֌1{|` `p"o"J΅U.e&bt0--dw,jBƇ>KEIһK `_9QFJ'9,V#u+ —GKuHKFKeaӱ2ȯ5Ǒ1\q8P:põЂ*)־c*hPL*AP%}I>qgaKgPǕ1>\W͢ BV*n@Qg[ƕa v<_Vckw-ۥ1 <**JpVE>pFzJPTj9XRA}lLL\TX*ַb:}Zל}w`΂2DgKY`)%ܑ$qϖg8"]qf.l?qRךȏb !ꝶjPfT<0Թl8N蝒LXji}JC[B˚Qf$܌hfX(KN6(Id5x}. g$,bH:͕p;X) -u006<eA~u.H͹`sh&t~дus LI4,h)P9}Gq6 G~lR?'S z(5]| 0Gc\sKa{- aRXB(TarTZ ٹȖK~T2h}jRf ĜcfLifŚ0fK3|rju)(hxX8x (@@duzo D; *%יnsC~OӏKo/o!GFAw ;s@''n3-;m%Wd*)]J, M8uG) 5iЛsیM8jmkkgf6]P,~A+ç-<ض.})4{#Ql j]?oGC)LnQi3wKyr2]jr?``O:xHώ_ɨrᅓ;|=r~s-izh?zHY߳멼w ~KS (28mx1 w]).rY4 ݏ:, n$4@>~kHf\4T>=mȶ+Y{ZC~5\lɵd||;,4lKoD^vm})ǶyŸa7|[yS}y1쾾ͥL5ڣZgx/@u󢳼/4M~_xĽr$7&9I-sks(YmU IDATXc3sZ]U$3#^/Ikk2p?IfF+w)%ktq"> 4My+2јg892Sm%)$`<4K/V}l?8N6'h>f(8֌4 4obEY/dͳOD8ϴ:C4l'ݘNg|t¥v8 #,kY>2A[Oi-gr\ddM~uXOu:^&\XIC 3(a';CGR)ȐΧ7) V[8$(d${|9TE벰y|r2 elϒ䐟(;+Til2A̕b7'R]7S$YS*B4lо$[d躂D!om<H>'9g$Y酮:+: %a&sidBl1DMlFbF,\Z s'3)6ޝ? #Ex5m^`( Ej8F%ʋxnhGd.RfYj31~ ہOlUj֖*O5Xt6aLٽCj`ۊ{haX=V#g }IF#k Og(uԙ`*gkr[Bub =뼤G8T\^#h&:>>pή1]UE(ut/R_ël{lq9^L;*S HvOzTi` ݭI LG;Eθ!FRxGmJcc7@W`{#T(;9&'epxz!>|MJlVAԑp% cw 7RdzhڰuINFG6<,q,yó}3-l%ۑxmRӰTu3n H3٪MZrՌaCvTWnq;/zf5jU)8t߅G֊޴p kR2 ќ~qH9S|i-z}y;>~G;Nu$jŶ]paL/[@i,H")s'Zmþ]=el; l@OT}qa HEup+@mp}ym4ԍEz89"%1$;Z$5q1_ <Vp@j]2=ԓMK9ɩ'MܕLիV@?)eG跭2sT50`Z34siSC ?*RE.g!+ RZNXeW4j4Dm*I fkc54vZLv/6=ʆZ6- n$c)d=MSYOXZ^'\b2AG-Kk~Cdo,3yqC, O՚m%0SDܙ4}B}'̧u^2/jAkauU^xi^8C'K% !:Qgr2]Bw o(.34afD "Z2Nm`ɒQ35;́V b^^S7:2Xoϑͱ+X턉ebDzr,gh ~n=I~__)5KO36=IJmÒDGղ ^`f - nrHN?O/m^)ZFtmZrTd[3T8&:&à<g)qJ>EG,@ǃYy6@I|Nńې۾껨la~,V/DQ{B! Z-Y"Gh.~G2aaڞ4mV>qH__oћqp^qHGtr}&E7ox}yEѸ~ݣ~֏2&@%;-2}ξYZIO/%N[ESl\[pqyHxV'z6ZkvuOS=~yy_~7 +yy|%C~P/f۶n{AbSI+ 0c? ?j__v (g7 ?~ANd&(F"64+ hO$%euR fe^8q>ˉZ("l}ދ+Nvlێ}q'n;y &9HoQ!l tQbJ18``do;TQFhM Svvp+#bQJv\ΞrIV'"v;~3+t ERDByʽ/hʿB6~o_1ǃ=h'!bшأN>$rvM% ۼl ˁvn)}~* @|NK>p︽8Kh>T+2l2)G͙u [@ \R(ޛH n:_ѢMs~`W¼JLP39gM#akT?#$daKekeB L7d~ {PA 5(@5?r"<7 7pTjFgKkKq<)BΈ׌76gk<@[2-+M%Kr`XV'vm^\F2w)p㤓L u1Y7/;l,;k6g9-ʺb#`Ȁf.* ^Avjr ya ~g',8 D0 k kJ5L%`fz3hgz?&W~6IV hw;}6a׭:AJO>&It<zpɦ쭐Øa8&$> 6ze?1q•Dnw+4Pޙ=C;I}o!+8/x' |pַ1|}䃠E7h@$"BGqufpdqͤe+f-:\GC)z&4OtPK1&6ǦvG 6qIoXl[Jq|2__P^=q%7 sz9I{颂OE;%OZd/:>%w̆##Mt7z1-x2_(1^ ,ȻB酬gU-Zp3)?od7) J)ؓi S.}fp{HԼr*(6JYYS+<y=fH kd@r&w \#P{rᾅk _IL_<-cDy6 M`Ibs౤|!3_E&9.(x}`+dZMRv6|룲5 %)s\7,g`ql`˜)'1HO(de$˱͸惴Y/R};'m:I͜l~5@tknw#mFc[ QK%7wlEe>FysZx*09k6>QGI2ƘkU h2 !iu/oe鳄o/y!~to'ƞk+4.޵UsЏ;Z5-'uN[rWe|#3^Nfh)of bL7XO cTtWCv JAIB#43AFgM@;~Beh'$έ^o+_`xPG~ cU{u$ü |Z6pW}dqLVZHwNNd(Bl\㔒rҒa8 xhiEتƉO2>K}wa@;7b=1*MgDyl"唂%T1&<<߿_T3+Y-1}r)0S#+BԬo>nf&+%[IfoB4Lip*6&쒡`Ll s<TMj@ m&AY/>vvT ,;1SߒBU?u|_P:B,,9WLf48Í[f1f@derht,?Q>Q&=L¶T<8Z샆ߠOeu&lg9L0XV 7)O53|Lʼn=hlB j>>| ZJDfY|Q~n4ߜ|e|?xpRP}G4i7,>#@:le2gp Bi% ?ibB+{@o]0]zN+ao$o>}Y :)u^FA.S'6- xx|7N#ϛD2-2d[nMŜöZ "&9y :N#2lԃ^{L,}a #L@s:ߓre~x5#3y|ΧvĂ4HLogSN#H{b'(v0[D5ٗޛF=y7ϟuS[zaxgZf |]Y>, 3^?臼y&b,`NX1Iu^Jx>ςbK+$o6{/~b6) ;+E~]XC n5D1;f\4P{J&XG_vv'lV D'x92'o߼kt(XVk.eѝKC%wJ#2,sP]Q|b .0ZP"HQ3nqImx֦ZϺڐNٗ*J )SЌ*gY屗 5]$? dn<\Zy'nRj; Qj9 3b=L|Ǜ}nつ~ٵ$mΖ FV]?B%+~?TYX=`gkhǑj#2K0`l.a:* GmR"y S?  z!7'}ȩ !7sڀď_J+-(`kM^qxlB:- /hgu֞͡\Ԕ%g"c cdd0_ϛ,%X,g!$͵]#WJlK?l`E咀m2}8Xxo ס'}ρ]$tdmrIjbCw}#u_0CbU{Ժ:Yntټu~HI/}ߝ5$۸5V}F&*UnqNW *y^ۛɇ]ʃ -,~ Sz6B*<0k^T  Fx{w +6oc垽 71ҋn YU($kZß 8\`4881PARgO ?.3~'O|wǡe^*dXٔi,KX tw"P[$!&-$LfS(TV9jR^R۞@Vyѣ.RrT N-%vMUXbY-aJ汝)h >lM͛3D5*\R*s43;i 6. oȍW5v6h`]pnIz&atq ˆ uhc& AyH-(//دlۮyqN1O@ -}nHwANMNIZ2rf&s\2l4d8e9)\㯍28Tes|f|E:A XxɈ똌s{~}j04.Mk5ysе*6Ysx`~:;&B[3un &-b`އiddkAv&ldz3w%c}<dN3uvy2YksMo_lp9CK@*A^== ̓I9:LƘ2IYt9~;g4BE)FK  Eds=J>ԙOɮsA!)bB؞^Y~ˁvzW˝( *aKq%WI4: aof!F܇ZJ"EVȄJ RA/y Hٔa!C"}^yWrϡ짭gf8vrA_bogỴϖmG?NEp%CH2]e4 ɴd;~m1ù_`0HL jt'-}3Hy(JB#Ɲpdd, )uI5)5ț%hDbLy*(]i6SUA!M")iDQ\e.y&L<: ) .&YIppx#o8='3LgO'$+m\m 7y[Gl~Fo7$hQ{4<%"0)_;VZwCw M(qK@KhBi62[W3Ôhj >yT *UɂViUM*͒,e!L$x?3eK*xhyaH!eZ[i9P h' 'G4_Cu `amq~@}(%n[h<.I-#lU?}" 6\\3[yPVxAɣrMSa~8"`Mfi3a$`@oԁC;wW0m(uC!Rז[mn1 ё\SfZ U  f&LLFHWt+O\j:2@ZT3鹃+pd+GfPɸy]mC yAN)͚L!i% =s0H.Bkg" dV6Bzy n.5W(^7԰S;c q.RtfRnc;@9>qn{Ȉ}Qк6 jPc7idˆsZU\n@{#;&F ܛcN4&q ~ }?:F rԬ3KCvFkjsID ,Nqq6s0Mcl& ["sl4}p3La >{f 4ˉ=I~V)gT9cCr?3Ɏ(sR0lc]{r9x%nԙ`^yR$#}AdK9z)M<]@Uiy%.$8&]*7S['55e+5 Ec>"+CѱJ^~Ozͦ >?,lo-)'rz_p2m*CzyLhP'^EK2"EOfhlZAp a/&[vJ w=qN67UU`؋Ƒ|}iWͤV|hMDY7ټ"@Eoۆ~p*x4}&PUfsRVM `Z@sP Z7 o߿\?D\:X{ʎqr_x{n?ԟ+ mR `nuyBldSzgwcHv^c#T%y:6mU PB?ݒbl)qPjAdK,}`wa&B.=+h^{'LDh+ Ik SaeɝJ}:Y$lWT:G9!-ÎBee4!kDs*}L3@g"hi: Al>'ܘȌYs`c8}4ꡍ8BAaf/g($gb@NSLg#ѪtvgG14-gB @s.9 I+jXY0&i ~\,)#5ސOߙ.D`8yHF} ԙø5€,ez8'L8y9)T0 ] FD`NO1wWq Y{VWɺ@:_~Ie$ek'?3/Sp?-0?;=d<.yt|ӤNuӢw9zFjOtq\?r?3Ho?+b ߘ&ی u\ Z1u]CluNbf,l@K2`Gq'ާOJgs*8a"Xh\F|J`ԈO_^B=鲅?n7=>W99=>{MɷM'RAtOʥyI L&Q,yVeֵS|2mșզZoYaOO|Cfa>y탟, Ȧk(/7 e>Om&/qo ?Ø}r: %fx9ݲ b}ozm 7X7$ep)ST=؄ٿ)_ʥ-׃HbKqUFzD>KڝOΉ=1L¢*3&,T56}q~@L. Zk8w Z;$\QXZecG?~~6Sq%m W.@Xʡ"vf(f/]/nGFtQ]?}v;hG] A9T;lx~ &7jG_3kZNd`uI] )W092~Z7pJc1mz:/l޹xx!tmҤ`LVǦ8j.ͼ$<O(anNӓ.oKNc؉ zJk W 8opuW9ϬB{%q|8}\U&i:L,X i OOHΡRpjS>2"'G~cEQg0F2w&霕4ԖH2gM9ͰqIOLX hey_\Θ^l8\m7&kbiƾ^v bv-˽l a,th%%"`{;O,C0HHx3t[ɖClP'S#(Ogs@m^6NlJˏKY,yҗR)g~M?+rPzѥO7\.Yib}ꊯԪePd/Ԋ9}j@Kx)Rq̸?VFRb- ;>yoq]m''ržoب8owhcr}˗O?q{w9}MkֺJU ="Hu e@{O߾}ohĊ@Ѹ:/O?OW:P_o|'DӞR/8Dצ/Pb1] ֤_f8Mc;j8/sڶMyDhh wՕ'\..vQvle_ ;ha\~<~hez;#PYy$l5f]bt*qQ+(<|ɪԦls]|J@4`@Jt pa@UUh!%U@;JR*"M P۶ QLGAa69.FCr-n``R)kBl!b@ݚX  ZR^J$:D>ь nTXMx vo 9~ iYT Nc8"!erL9In: ƕqCfd)cꜙPjE&JtϢ%Y6ѡR@ZCl0 Fл527<;yt׮GxL 3a&MJ ]0 1CeOrF#9lOpV${(%?6OG1&`?N&#ʷ@d2 B7&o]N9NЮ2k" _Hmf}rgg>0;DـM?їjL2`N/)J#ҷ<&f6X^s\>9;22+L9 Śu&)ak@'>1-xViNɡis>;yAO=eNWJO-˙xyA;X;첂i# ЬѧMy$_ؾ'X8Ik:OBc=1;zXII@l|ʁjU4ZLY}jj|‡99`,'AF$fowͲ%;8dрpw+t퓑, tA|[2M;래FHkC;,1,7}䉀B'JĢ V0$ldl5F Iq #byCa9q;L:܍i=c:q=aRI1!gÈ2cw踼?6e]G?)!0$'ə)'.etd2$XP2z"I&y04ทIMzu0dglk'{=#Ņ\;3]D*Y_t1'^dh]Nx8Yךmb8̸[⤻`Y6"ۙ&7X.GSXd:W]35Hf,)I2O}O˰+&`mg ^?ژ|Nba z {u5l ONz2Է* .$RO]|ܳm)iB]ܥHOCYk|i%UJKu@Eyv{xh 0z7i ɡ7d^kf4mڵ6"Ym̏.u';JjB^B tĪNZƶ4/ߓPJ0mj{}y/x^pn}q!I-CMVbe?M5?6p\qDX xIڕ,{ib;f&mvM&gGZ|V&_ ol1U`& óR IDAT="K2*Ɛ9T4MF(ZZj ^Sn&-ћd+A$ ]dYpⴲØumyhU(5"FjdId.6Rњtd4DxsQ9esBk@AQwz3lu,vXT0L9CfК3kCQQ x F5Ku >+lBHXV~gwsՊNV7E8B;GÀWAzz@k.UaVk~ц~mUOʍuA]ݹ=CQwb-e 6T̫$|~NXw#v <0ډSi!N|rݴ:yx7cm^1ƜfҌkjosF:aqymH oěhMw3pvZ \0Wa~rfV'UלyQw=R^84q_#=FC#6Fz( - T˔&&7i8ĩeZ3/g39 y)%'ձ82x3ݘsL;<ӧK "ޑn!s)9 mp>xS-NC p#YdbPK3ѵ,M ,kjG? 䡫p^W6͛dHƯY^G)t/-Y)P`k0 >N4t^/Li=q̋9tcpc}Ny:`2 uRO:+Od (a{&2l_AE90S;5aDAηv@ߟzƪ!e++=OvOv;I6 _vYY賉IWy̲|~UϋNvy7L3rN ,6S;iʔ:$%Z =s$=V/C4 <_&҆F5.yhy?$@L3?`<| QʋFiamM@' dpgϲ`w}Eo TL/2ۆ}F!C7m)5du p$[L;^.W߾J5Zw03Z %͘Ɖve+n߿m6mC%6#i6}Q FByMVsjKxqH8`Вd=-,1GףJ6i=9M}hMQΣ}ۉ14Z7~ GkM~xo3%'ⷯ).50nvdmJƍ5/vA5Wk^ ťhJ,v3 iS,:QwP^3ВҲ,$Sr92I޽w&8Ȍieگ"+Ү } (1#"\- m֐+ pSFRVZx1w-F1kP윍?kţ}cA=epm2nÕvr0)Ɲg|ܫY+K5etlgٯJ.|#>oY91>yi̷,g56Lˤ'"3*#ؗt ݼT"my I>%O`eB:](טC=$Nxkf#|6wqxD[&5KJ=O6 $rݜhJR5}yh d6K@ cyq 硁`O:?I~2FT^>ݵ`k?$뛴 ?R@fJ>]&]َ ng</W$ PzՆYuylOpDb@6\.W v=%`Bq2TqЀx 3Rs\4C" WB9 y$IVqvecC'<``(LN@lE8MJLC :^AfP#`gmr>fEgƋm"iӼ-I9ꆣ)9p< eʉ֔3'OOCanm,yCJ8:_XM㦷&|%0 <Ó1 nKk-$NkO8% 2| >?"7^<4cd(VY2ˌD'YμM}gHcM`}"c/[:L$OetiEI4W*WݲڌYZ?O!PS>˼I>w%AO,]&7$hާUsSy -3ѷ)9 /ym)xcńkʹ։4YvVzddqtRLgMߙYiʪ7}+|2/4ƈ>:vE4l\XI@ JDn_\_^%B).\}vkbkYXvKrxَlTgZjFT>7]$吷.6$#Mkk|<mQXdGkwm0V.Rýn<,=P T'o?~Rc%>S*|Qba{,>( $$Ӑbjx=A@)/5M A3.d?v^U>l'-: 9Y< BJ&bܡvbɡ^saƫ1#y< vnI<̃G3r>GZ`5;3f}!+[gT\Ǽ4B/p,G)$y61}4+JtbcO43AVݛur͗V긡r+iK$'LL2aMwm4|>))o,X弜?JxaTD/qykFGÛOs'qXds{<_?50D'3`Jx9"[G_Z\K3=vzf\H %{Se :f n~}DKY;̍%Xdx}~lJ?7ÁnXxV 3]/&kωcgk'Ƹ{J'~SJb5G#"(aQƫNK)ENv=ZIN vL7g?,6I53O<|Tndlga8ך\30 pb,ş oi_>{g8jVb;u@fmvPJ%m„lR=FҘ~y,vm.*]2;:NU?16Z@4X(3z#p+jhnfKkűl!u\w$r5JlJS+#Y4 {ݥF=Iٓ>46MfK"'4قqvl;ʾaJS)T](T@1NIv]kʆf#KpyO*IVc@d^ ud@bkݰmc,pn+]זhg`-=RGUў:{wIvJf9G)~f9P I&]Rtcw 3NS@]:ɞȦP*pC߅ @Px0?Nbn2l'J/R .!ƲNG/$N3h>$ʪتE1aYBf"$C%BU Raݕ;*?R俏]Uѐr<iv9TP_ Z|D+5aJw+[=0}˩&BܥN)<8p?S9ٴз]Gӳ ūuxX f6`9Of4Mf3aZuQHzM_"%LON $R pj`A6։ӪuQVIY_sr!gR+]b@8MҦwƂye6vjQb|uNK6L1՝oŋ;K4g8E.F*XkHlYy8 z@w>1cV%XBo͓%@abdAMAgy1Az\7-, FȎ e M;׵x-zR־:Ϗ`3}$ . 2P(K;]fz}M2"7 UxA7$5<009M,ĝ;@SP|Sd-zg'!Ŧ0F;,0i37̀Ye 7SMnegBTebSf,QOYg{r>2(O: Nnyy*ISeMNWNWg~gg+)H9>FD͙5R`Fw9tyᲒH+om m2~jjivƙLIS X?7 /z&O'|l-@ӿ$cCޥ9dKBŋe%j 9d.3o2ȉxseӺϙ1(&\h p_:Vg̟'x$(`mxmDE{W{ MssЈCS78cH9ͦڻڲ vsh] 2[ dUt%6 ^N(ГRcSwCRNH@|YUOP`n&u\g@֛[mlq<p`;p`hT!|aQ/Syʱɼu5.;zڜ~*Pakik;\N;qu"T~M(lє^Q*h{zFNɳyL㙳4G6Y2МK%&bGgӷXX]8>f6ܸ_5)n &fWVϢf,HN";տ<&dE"ʢ# A:sTI\au;'HɡJ{f>nn:o#A8JtF$ZD7}Ɛ4: f Vd4ړp?7Ɍ/&|4Pl& IDATG{j#Eʔ+φ\;L~3 ~F6|J"}{Xe?'xrg El ?KvVβ'ŗߙXv,.g|勏XdQ?ƺĄt|<6^7S"Um$BI͓9L]j+sN?թ Z/Wf&h^Dy MCXzIReS>el֗Gv>f='3wg҉kC'd$LЅ7I*xz?WQ\˘xf9~4%At3pkdI,ڟ^3_g$}l +; /x2'mߡkN9T2d ,wj2ƕ>m|cog9>ӷOcyS5S;uZ}2 Zڟ=2DAMySBQS]^'}M7!U)%{J[)5F!~4 [JI.s/;g"]Ƽ@pz[tb߱mRtlג}CR_ۛgki487M)Z&BI_T9Yjq?XMSdYvg\k8,Rkbi )o"${I"~V D=Жqmi{iO e?4b"kj*(S#  (}ל_1P(JMtSQ*Z՜v%.DyYb0k4ue)i?< ?_7|x (UEuqc7y<VqmqU#E`ac:haBb+jYm .*A2FLnTr.d}Iݠ:fbFrDB"r}߿sJ .rHmRw //~tC)1P&@Y!}Ǧym!s&yE z<(T n ͏luZ<8wvν* z pyGLR:YNXmf ̳Na*_n͊ӚJsb׳Ҽ!bhbHt<-o88/4T(YhnJmY# 6K-y! S*28;=?m˴s ;jn hݰάQ ?f~e`(hq}3*f#`eʼn|6l'cE[N\=h>CL->3ׅiM8RUJ_1od]N',oIvx,8&uA06 yucT֯(pm6ςy]aomj)ׯ:&ODe8-(10+w=FOO&g< N /TTdgcl;@ˀQ&qhDW&'bRzrg|>}^"6~k"kz_AYy=&o\?\J8`ffuE RL6;@45r2vldC=_d}b,`2=}ɉ~vEv 3l̄4o xNpSiҦ+>0>yIӫ_ n#3cݴ<ܾ6q |ADVQi< Rn|Gup{ameC0V]򷛃 #xhƐS n7^$u.554mڐ;]2RsG3po߾VįxG|h1#}$>hNe__p{ßFk"u'kԶ9gK M*h6ICO3n?o?TUj`l&'  ^>_~Ams<,۷o%HLZ$}?NlltM<۾<%O-RP=A_/(87Mh+~}ǁ@ qOA ǧ/_' ~}mEZ<#pG`` $*дIh3Y6evRDs<dT}@Sգ,J,ԱmB]FQU5IN ώ__ݮEr9u*8`f~;[CUBcEYԒ>nEʢlH8Pv20"8yT2? DRtCq"#0dHRSo# *PQTegv *m XfsT&BjAVVHV;ZiЌDX;\X @hCw# 4!NBE`NnAf CiwIjUm[ (! Bۓk\p1fX{I͖i̫BNu"L#ZpF[-@A ;+IEi1Nߤ"`BS9ŮWV=3e7~"P~cb 3aou %Oa7FD+Vl#}v˄+\bȂ(l4fv}vO@,,h Pc j r$(D/lmcgu2wXkn?TCڤDKOc+WbBJEU_;ZAZQ4 S Axb{P:a\7>^ uہbiQPRCdHm{`> Hsl 6u^Z!BiP{.{ h:,8w2m<@I5T"oKΆš 1avlX>J SRߧf ) \,PKAS`$ UMRinM[lFUUycD^:]ٺMҌ<] *hF 7MmtNi#fYJDӖ7Yf#qFG1{Us>|&'XUsEvQz]fN# ijX['0rKbcc$lFV~yю$3zwmh]O^4~ |ӱ vdɱV-)yǶo QH<%ִ-ˏЧIg1Ij3YFC:%4 4D[m]~gi0k/FD&yHkig@7icHဒ 4!=/3H6MzR ZUzD_y.nbMEEz#k^yƹ)cwY~XIk9?^rLL|u; I'6L` L@~ed38="e7l۔i-D} Y0]r1D 27=˞4lw"W8#vҝ h; 2ε@vsQV:a:>^gff9)'hFx㝄 x>18LV '[c[Ada`郈p<*U%38ŧ[T r)+i8MҎ.dif,ڛнkj3ORYu3SPTÊ@^M" E zyX J(⬛N1m5-v϶mjIp7><ܑ,L (5 ?ٱ=7`d1hSwRqiۊM&'w y!@5admhJޢ#mWᢆEv -O?v״6MN`F oݹѱR0{DHGݚ;  FY"< 2lr Gb\S'_:ՈpXnl1!ΒG}?-0,$TTAZAS&:o|51jKKJ/oN<yM۱8usn)>@ ĻKO[Z\kW{&'&'^\!u@-ӧBrNw6ilkWy<6{Z\iYW=FpH@ <J[܈2lL\lxΦ/~)\ȴ`o8]$9ѵ!D{NNY_%ƇΊ.5<|+Ƨl#tI6̓LW/h l';@6[KmM[^wLr&(}Ej@gEIZf-8{?鋓ׅW~*N'O;=sw@ʕYy_>zYeWޘOا>2:} Є̠:==%GYg֟mA,~@!όݘxS"lxd[ƿnu23*]|Oˬ^BDnt*kSS# m qp;ΈWRvi;L 4ya/|HR&y}?]b5l.D3y<9x3 Y#<yEKQpay8S96?,XmQ5ENNqj˂Z!Tg$%HЋ_4ݤ"}<]o;75,崤/⚾~L?1X']޲l0@~;[@PMh[k1O4x fƾI~)\DPEUI!\&ZwDR HyIw<{ ^_gOs H)k]2FNDTJTܷS6BBv0y ¯Rx`=c@rp2o)O.xAs2̶d;b'17%>vYZa1l6Knlю>I>88Lmf:]O|.[ ƿ/4:(Y4^N|89d {.tv%!TNDg̈X'bK`]F[a5B. L--lNH,ym##l;EE&]bs@S.ġhFr IDATO%{v,z[Ǖa n6D=4!K!t8:& ;z_W{nX1{p3IU1u$\Ÿѫ"vDiS& 5̷nרܲ~2\)$(h2H#y6G_pxI&_oLM6\n Ɏlp^ѩʇ?fw8 6k20hQE*?Ydgq@KCA` |Z*ܺ1L7IO:*Yd XyHFHmziO%/erkiq/֎7/2*Olێkl>xxefPP@NYF^>}__ _ g;}އl ֨u8qw<' o7%j@ o?冺pHC6zNt| 7Hrq<g`VXY5?Mu{A-7ط q.0?+ĭ|_g9v|AwZ*y o8/lێR y1*gWS_h8ӗ/ jQ@_n7}oox'V1Hl^_;Fo8h!w)vfc70WlMT0q(On_Q_?uC6쥠߾ ׯ ҄l®%4;C--`^e׶mĆGk 59ܻFanncc؊R S$],nCG06#$@ߍʁ<`63ӝHAn Z>z 5ܶ *- GQD6 ![Z(aELiaEM?NM ..szteJ*Jǚwmg94ojq| cO1SRռ39"G9eG2)^b%p;RNK|`f#[QS8KC "30T3tGi NՁ^̿u)m94 et@ Mb-zDD, TR %O3L^#3LN Re̓qe]̓"8//43BxBrU^꧶Kqnj/+s! \L{sS:ـsAnSt#%bmcVAw^Xq ' q7Qz5'4 J[9WI|KA8<&QL M\8`ΰ0Q܊wiZ ]iո$ʴӼ^}4nMyRCGlMYH*E!(Bƃ3:?3 8d |,ȧwcM^M_,Cyzǧ>«3%ecweYfΊ^eLG3'qgqR ,q'sq'MĵNl$ IļORd~9pij,AȆ[Im<M5PHS9jъj\0{%GʓؤReNu|{zX5t>ɧYcXA]ܟ6?l  2ۋZ$-LYq1_ÛAMwljq'Zy.IYF;*.-({ed?:cƆ юYtAt9´0$EWφi,d,]"Hiц R8DAF nU$}8M+Ka* dVCL nhUȶw7Z/ D`腮No@]10JhU۷P,B .J51n!'("-(&pE?pn`ON.~ÇYH 6'+Rߝ"ciy/:]>8ֹ(N?5W|jb=*U.;lx2>QУDgº˸6r2ڼ҉\ٕڎ 9)?ڏlL1َ-#?//ϦKzʽ 6ybc H -m#O)Qo<?ֻɋ<ӌ|o2ecFrrG[١LCWJ7h/z}neT4ݎ'^ g \ _ dx7tٍxJWK6"B.`2!{Dd^͊/Qc̃hƒLwm|^1#BL y#`/ks{ cuPaz%LkڨŤM6?0 +m4N_1Em;Xm+Hj1vo¥3 3S'd2j\i0Þeb X;HS5+vxyO~Kr|zɛOǝ$( vU,xӿ9Øes 3B>21گ O*lO-BѼFg'7 P{wElBD;j!()xR: $:_ܨ(m1: vde=&ؓWdJRsa)Oj4PQDfsK'QQMpӚ8 yޟHi@:؁UwHpU"-щRF_剡e&Aw 0 0] O3>)3n{c)a!-=,Zm(t)?i2N@IL+ mEE+ǜӻ2j@c]T>[4L?~MF2GE@r2R5;\Mff׫Ε/O7I{}!M^O㦛bO 4+]f\9vC3ui].WRjt>^WYg42Eq{b,,B8L#Y> 9/J);O޻2\tC]S''iNXS>d-hvY.9i3l cgj<3G^Q>Yo`3d2*Y-5k@tz|:@, l`*~ýJ䑢=(کvr̷nARrJT=ЏOEI#cմ "oxR5.k[!Ղ7řOؼ.Aq|h$4ՎC\ p`։1 s,܏f18Eo/M&5 kKD OכJ79Pt[7?AZ#"3҂u F.)'"E 跂mvpaQ鶩0D@-p_0#lMb5hIOչߚ)1* ̌8PM"KU03߾a+pT3tҨȤk6ɍ BDT@v$F10Ě}` V [ogTbq <MRHy&amFovi*ͬGy9*HB 'c~e1Ic>@j<%}!9Q$}PAІDqFj:**Y`[Es.( /gvЍcU"14є +avz2F3zdTa RZ|M hӼ"KpDZ[;Y ){sDi.HmBT& _<Qa@տw0~wgK9bm."jOÍw[6M)}sw$}Vh2(1!5;]7䜇 ) 8|(AﻤBR\Ѳxs^C,6cm]_d;~_FڠР[KK1})0KkR-< d0|lM5ӎeޓS Ϡ6SW{Z&.ȥ`/_M}zljKz$8^IFjr22s0cUFknq7]]Z&!b#;~2z$y>j֓+ڂ%Rf:C9vX00Jՠ\TkDbf${MOӏRˆgM%?,~hxm_p{Pyx="vs[xyUaIt7sﲮެetv8xqȺm3^>BE#kD@x wS6Xl1PO67߾㸿&Cl ?" f'La]5 Fg^/_oN2T'DmPiϟ?y[mn}GKJ qVRQATwޛ rClhB2 nط MsVQˆ}T2Rl'_>Wxϟ?x`/;y[Щ3 ­VnrBZC' ̒`6?U6t B'&w?mǗ_+DxX#Ո9-8`ӪٮN Sk"tUHaLAG UԺB%l#BMvD)]XxlHwS,EKmRMҩ Ȃ* Tı,MqYU%sC`2f""݈0pQO)`G` `ȋSԊQ ]wQci&(- sUW8%#͏v1@m!QPYsS*pW,?RfDDL"D _g䓴6dHbtNh&V3R2q v]%MEX6bD9ߍñh(od[ۓ ӏHl}O4FuzbtNVv_0-xNr/M?2!0/xƛi7?AFdFݼxEDr'-]Nȵd}КNp#r毫Z$:)(<}qBy۩؎N2SsC旵g^riܦ`lr(wĤƸ, HkޞI;9 F#izVޙ;7ɍ0\ $9 . G09mBA2a`O!\⻐܎+\+(qi_xR±D"s3>=<(і5,; @ ^N.4 yGf|INe #"W>,N0AWo[?N7>]4pF[H}i>Xcѿi'4%Zl)g>CMi]hX5ip[3{7F~j&w cOʉʒef&:b>9H2,gY,? ~r/C0Z\GiMnr/1O9@& /:)[5ǩ2`$b`r4-~uǑmldsOǕd:HC[z.X IDAT1kyq. *E{2LUB%*[(ccЍ es'2WH"`n//hԁ/y}ci .ao7^eBVy8B,5 )$[P8C$5! jn\*6H)d`t//GM6zm6R!s~j, e umb|*qX._?~(ox~pV_Յ IXbvrĔ隌 +P C-R!EZ6ln@XRҾDӤ @ҳ=o8TƤxwv,E(vDbyKqX x`'' 6W{F y1kS ka?CV!&.,ȩL;Q#"/X`O[Jji)pk_$ya _- 84=i&l9˚F$tXtOQCnEto*kv` 7i#"t 0mܘ!:lAtK`DS9R9񯍇<Ǹ# Zt%K(X^nmlȇP/2)39:?2"2s#O"3@,#/:pf%9ms|=a֒dFXq4AfHaozRORbsGg!@!un`vJPkB{=}{=!f"! `s[YrckPx.\&8`?Xa1pVjj P!W3֜ fz HQ{AAI G4Љȶ%HzT*U{+ANS1ACVDgd|GN };'L]9u/P_%j L/<OuYߣ$=K EUNCF+}aR+_4v鴩g^J |Y6-HiSREE^ If^,g6wF:,{TLj#˓3n6ќP2:A>1&wB~47ݫ59= }H.^Ik ا *ܧVPG>kyU/nZ_f&}G@ Jɼoq]"F]##ui<9zԨD6FjޜV˰V`Bִ+DK\G f~"M{ΰUJ8v'=fiw "T}߁8CS1rLfH|4UF?%8eK*8zNF6Z q c"6cl%C[_<#0(K gB ,-O6wI1ԛء}󊀌? *`kR `ÄL3H4.%9(;%s׈q`;GP+}\M;0AHѡ7w{yA$oV`u>L;~T8C=ՄS: l$8 IZ ]H=\K$DzZ?q }/ $ ȀškJ$2 `ǒiA?QNylF<'7 u17Uycn:RԊ1?aǖ]bGnO78ݰ˺:,tB/օ€XR{2ЮWXW"E< J޻JIQ:q^&M^$@{:+ 5T^y^%N|9nR7`A$BӼq<WHR,5ڈL~xlB8M'~[L&C7Xqiu)Yd:.4TPaPМy?1iWק BQ3 eySyfkƞ%3=kIt %{ukpDgiSlɐ_a:(a W'#AFu J (9xyA2_[m9~>F2I4p@/Y)M &\F`+2š|M^1Lu-2~sZRy1xx_cֆlqS+(P\3N?ٌ:D[BRw {_ApMrVo| 0bfY×t=WfNmVr27`Npe}SwͺZ:G >'_ y fWz `8@S{^ DgY詺},iNW%M)Y6M?x T%ev{Ŷq8_l<#l^BGqI<::.Mkԉ,,)CӦlʶ}O+^^_~ooH "Iܽ}d_#QQa-Tpķ? 㷿iYJB+B*?А|11>JWd6߾x?ٔТ I5T_HF=T8Q~ j!G!9)r,'*Fqzjn71}ׯx}}wԭx}}žmgCoMq(@$;~|p:婲v;CR-|jhK쫹{Mӹ:ηҌGch I *Cҭ,! cjYcfԭpE F;vo{ۖ>7Z>wcwmnm#'rCqd$ !yFB^@"B(BHA1ODNGcݧm֚sV Ƶ\iVY5j_ 8-5"B ƔΦu-Qe (QBc>x2B3%@E)兇9Ė,’j{06Lӟ|gI5dU iaB70$AH)"XQ.pmxUT$3D(ݒ2C3;&pC F]>`ŀnV8`QBC'8S L`&t썙3^Fزų]4pp~烔3ZcTG4[>ſ/F`Mw>}'e +9.ĉp7_@ [p^JQVZ]^6a&xCbԑkG7N"I:?bj"%hStグ(cD&91g7ϧ؈ja;]{[FuINJvGccq4V=T5b2[ܰJ v&% FF yH[5,LyZ M{U?b=dN4َ};r':fLʴ`We E?ZoadrI7Pі]Dmvman-oQG>VV5ۨ!]mmtpxt/"ajqcbsW؅:|n7B)=qϏ{欌bx,G!q*T̎&;j"2纮_໑$QޝP1ڥn# '[ A."DL], 8Sy!JȒ&E{ײ 1% YTK&uVqhWMèub%w$Pr)c 4,gz"S&,TZ\kv:nu2E6.+"?CxUeҨ@ݬ2E$R%72w@Lh}rL`xM5}qRe8g+ @F m|\쵅E3f'%yJzJ5%DaLZItA݀M͔ٻ I.)j\iϲG\~E5; Я==5aA.J e[4txׇzV籽1-^C_Ku1Q8eXK Z66\ 5O6Ur78ܽbRl~mԡ<|NgހM',<ʳ:V46J:ઈ$FD6- ԡmϹȭ R(Wt޼!l p3OsaGml:Khй4F;sbs\QE%l$V^1sæ~+U}kɕF9ymw@=ay0{r:4ly%%gI2o3:.Lm=MaC*׆k-Jc;tesntƎz-~شx 2#m]W +yFp8M!3;c< !h9M$1XI8yq B׌~q2Torv!sEWwl=сWۏk`4[khajKPm!YJc&G`3,R+ u2rV ׸RtM\#wWQ*:QyᄶܣNp@m,=#*jԪ`ɵ&tk5 6لw{o m3rȰB-ET#po8' v&UEP-eY0*.g8u]1_.Ýn EkkMs5-k9:c6,A|+/8:u) IDAT=zY׾O{>ePQV| h˂ˌ,X5E֊ڋߊnF 47s g;-YS%v -+nvP4kֹa-@^md$'b.*_ۑ 0[T#Xķce( `Me  b0[Y~#ܩ l3[eBq˂*xK UKȒj#yENqN%-dau}}0u4QqKɝ&l+||o`fc|8pe OP6]Op oW$Gx7ܿFTkLj>wpNk@}B86 }m5bA4ۮ =}~_1KzމXC.VÌZs-{8Ko̶Ui`;:̿{36N6JOwuM[t<wy%bub\GjUrGJ!v0'GV31?*bsf0E)l\' Lku oW6cEg3Cmd"ݐd6^MCns[F=*M㝫29hɆu{K ǕM/uSߏ0\G:_7ouIJJ|g}9W9")K k%Wvm\s+x3yӧ |qb&AIyr12>}H?yq/aD1ۀ 5|0*wc7cQW-^lD Tݫ*˘=VֱXLEh3*UyK!Pm1~"߬)Ԋ49m) #cMn]7 Gcld< TWkoxd CԂtЊ?* c]|t{ڎֻ;-_e2NۢCm%rHGk-B7ҡͽ :|Z'ݥJ ,Q4"ȋUv9g/:Xia`42:u^w4q Z#7d»sQW;bٍ%²Xշ#UvM{oIdn]K7($U.'I*ю1 R&uڎ%vUm\6| |ƙk- X۬Y I͢P@X ɩ 77rBg^Mb\u @;@(|J35$l@+)@W}zFU}1eݸ.a0l`1V !@(0O:Wv70<`+2440FIiw}C] jkNq,Z?]5xQϊK*8o̠$3GsDr͹S8y.E<ۜJSwYP}:%B'Q&Gm{}浡q1a}m}S|f`ލBNW"q7CJ9<ޑa\+ nSH1nc0B\`aзH+w1pʍA a+=Taxo*h3/7nD$k}ky^ 7IIߌ3e|Z9YL"oH: [<+1!AV/?Ϯ\h?aOP{stv3:tQ;=ψwqQpH J`H-av=j7Ii9vɎorvx]HRXRiljudqw^C 7PAGa)(Fdt| s~~vqﭞtj"8]cWIt*!";Gb?pYF{mΟL2Z}Oqh؏lNHC5HO&\&xWL|m6כYҘTxjACo?>ꎸ#d4}bn8y B Xӓ#|͏H =ϰ. a͓8o1MG`a3XVu"<x ts  7'Zp+>w/gr>NQjdmmcN2t&?ek Z_Uxr}m8= f]tDTQnź6oOvYLLO>>gӺ!LzXNB Oy3zcFRYHVAa&>xrgh*m+>8ܠnUh2 Ͼ ;g>|`8i=!5Vt"9$KpGN'O7xWd4Ƽ,,o#Kez|q >f *FgXPd9X4z wK>I"[C&E)WErp T2C`;v Cxqh\Pb٠LuYa# ٚ =[r(K2TceFB"+Lju5:Q?zd@!*E8yEg"8E`QXZԠlvLcˠإwus%J" #;Wn,I({gV`&\JƗn}oNiv:Q:G ](le}a}mȔ.v7 K*z SMxv*\]Zq ȶ&&*so/H;HC}~;0E0zgBD:^SokG9j|(|e;KE#w i^mUsmVQ\uJD<l]QFn܄cdqgG ;Sc9'/лD9kq9wD1SD#ϛ 6 k\wT ammhvj96:?SiuڿE?*/7|Io3X߯Xl. TSV>&[Rc+˰7  R}NJUΠ6إKōLNغqsͅ1T dn;9Y"/GbI0w6=P,bl * $[&F+J2&ai85.e5} ͧ}݊nP=OGL9>l`hp`A&a [s9 y79KX[>`]6oam@Fz392  >>o[䏌r\l,:0mF>LF( x_n7ոѲQmh<}[֔֒*/a* u-X(xʬ1:+AO f(MKZ|I_^-hM2v0%gZUi_< hˌV5x!|0t0`5f-"<.\n_hB:7Vs~1pz,dVØQp(pmhԆu0oy`#5s|X|BtFY^sʮ o 踭Cw} sldㅲ?ka@`6y.ޕUcwlaBm;^}q|֑` nL17FUPa>#= qY@q9#L[k#ߞ6RVe?O7wDO[TI/p://],Duq/XPcf\R8IybI7w0g+eeHL@fshdW8Y-Ő  G.om y Bn)pWg^OmZ.fc2&;.im؈u+O@6qn3뵡.vu3dJq.A1#XPde{ՇϜu S}reMd hF4៫Cװ5'ٸ*[{񸩓V'/>!>)w[ Ӄcǀ,-+vX9nu,"oapmm43|y0_fE/hYO YPu@w t4~DWeAci+[<{[>&5Rt//3zTh]"M'榁D{)G.lߖE6:wq'"{@Ę\ F6Wjg$/peA&ԾݯԾx_{ュQF"{,eES|l:k! Tt.<ܻcI2Z'`]_,i&/9, \K%Ժy1LSAolT?\Lu/k~$CX4^a6!M0[0:aAI/2l p?_dw,&HIb\*/@%G?*(|D/`: ;?I~Bsq'vdy(Ɣ"zĠ ;+ˣ?(o&PjU2Ӄ#Yt7\s*K{vX )0mv)־ 5*ʜt 8Ƅ$J#|uG$tŻ͏}Gĵh]t:-`,(4ўJ+ig6_+PMg '/b*}s -6a3jڴw?d$B7ш!Icmy\FYy4sR4Ѻlއ` 4y^õ_)ڟ4odt㿻 Qi1TCU[.߮mp%G@}l9Io%R{ڡ|=c[Q#z\^/Ge~|G /i 傶be `g0ХlOk|tYlV$N:ݧ]n;ԟ@(7UH[|ToWqѶjI\/@j P{dz;찷 }73;=Gm+9ke|JX\ʓ6`<||E1#rom7Mr9kF{`:pnw xڪteƽI$:x hrը&#[hDxX;3'<&U );AB*RKٚUkOF>HJnzΟcɺmC5~c^ƲRYz;dor)~:nfW^?2Vh}A+cV?GZ13?lNlM o0yԼjX R &Pcߜ8 O kB4-Tgxam‘JS4˺9űRn0(|g x)lX>I< %8RvQyoQLiˢ '21|13ˎEУ h DKRC-x9ʺ ߎp\K\/I4|R.j @ZU%FG{;3ޱ*ptЛvFoiu#s[W/TX !stzL;{pSP RRT7d׳qS^y|YL$Gh6Zh'6YH$LJ@eehuhul׬u!IıY{Ɛ;tO'ٵ|d6qA0b6G! aQ#M`D/^!#|w;tENJ2ޘYyx:e`-"yRU݀`zfG޼K"Xd/<F4$Syo"(z+(S|IGCw5>ɩ>qzw'==7p?ߡ:pvAVB)L,"'II=|T Nog~ oW_`]Wp#D IDAT(f $G!LSu@DXzG=Wp Ϟy nCX O>y bnHwӑӻ+M`AMUEp:yt8ܠPAk+eu%mSeNH}I>|x+ j!y~28r w#ⷰ2UP#4,\#+WKJ@`"Q[wEw K`(,]s76ŸA-5qB Sp*f&m   L's:)dĀm# ZKD|q*$BD ,*5hE8 T] t?=1פ=(K< Ô%w8M9UH8:cDg[%HO"M#7F7Bƣ@֋֋(6B@-n{3DĒ4 m/ lIq tбJ7?s l1%RC/tȥaG :2S$B#_]0 R}ŧkפAL}J$I9I抇K`Vo;]Y6wwȒئZ?bB0.?Olh?- sdA_ÖZXe9ɚve ؝[Ό\6fguya(ٟ2RtRd R}g6]ZrRLe܆ԻYG)k//^T$xB[.#~z7\s|08*S/h$ܮ`uYzUNw+0hwursVuiB~l#0>o͹΍12t`n}{p ŽCf݄E,OXp;U&ʏ:pg!bGrWϏ\4f;NTwiPMU5?>̓ # es,uFZVp|J1f4P̣щlc4AlI9(9 U1K.ϯEߙT?J=/8{}^=kK~fsy1+?Y} pD7iöxfq'Ak;%T4XqY)oV (b@7LG"yA_VGvUt֍Z"qbm' t% eԍB)Ĵܻ(B ܄~% /獌TjbH ),Z^P>\Tr$Xxur>@$-u2j!,s4f"su².hmE[gfu,x|@x^3 B:k0g94:^&Sy薘`&|պiԽvݴ>aUNnŀp3:&JTv2 4V`]pwF3&m ّ=j u 2%fCNxe)'3ж@|Ia5e :/arԱ@ :mDzlo8~-Zƌ8˲'*}j;h] B[qg$E|d|>N7]fx95wV&\5ƫiGlx0τI ,cbQ}cDy!<&LN<ݿ^ߴm6ڒ`^-ׁ3`"8b, עi4lzl-c6ӽGR:Qzi=*AuPKź/ggvpoE\zAx5Ei+VV, Kدv_0ޱ y:Zcm] Ec)Y[SX,#ںb.JAAR3V'qzU>)x13ުz.;_y7~6O S,\' EFn G](Ph)3||/諰+?03`Huo Ä3J;\/C]6)C'4ul:uY i:h.m@iΖONվ3m>BZ ¤/ysO|3p/$d"9я I?YMuG`Ǿ,nH1B3uHaKԪNvU$lIؐޗDm@U+XH:R 93l@GFp|3#- kIᄵTv]Lu^pB#Rw ϳWჶO݆hYDi3<CU 7*'[ev qv;}ϧMNKE^}/^^/z _m؜u^}-G?eMdEbDžGՒu0XkodIWa7pӽ;L6m+D.em #ݶmTm`l\0͛X+&"$9,xo^uSr.͗DiXȯ6 P1/.(2A>Wk#U?|nR Nf`?S%x`Anj|e>.ʚ`v(r08Al:Nb VqlV4,OUBJZ rCl`ؿz[ Ep_YmL%<6X,iL2]@e´.xWw<rCu[Hb_D ] @.v \JT]Mmu:b:W%9ladJ4 Tb69[oNl96- id:.r+iOwCm릾͎<݌uq*r"Y ?c". ֶڲ1mv?VS|׆z3&|? ]NqCE:z]Xc aҝ4z:"M!yQZf֚':V#`]%+4UOGXCwҙ2>|D-(Y&ݯZ$Nv| i]A .ڵc]HM%m GF;38!y"+8DY 8ZkzzPUXm]A]SSf3MÄum X J0sֵ.w6Lv6Iy60K,:zdm+ExNnn{t˴P'PoH4BnJPr; ŃXW,F8}2//,겒8'BAߺsʜS8wt]K " ikq9 {4'/:dCsƟ}؆hSyLGQ-%م}MB.<4^.+G,y{,tks Ơ+T\Ӷv$E>SDyC}@lʩ]QWq+?㪧SL*BzπVjiHsu+kc<@֘bܐ+z5( 6N9{fGO_LzyǾڷ`ٝpovL\d]KFaip8p<q8p&Ձ g,yZ L]d NQ4ћ/ظv&Ɩ9{|6Fu\߫|̘ps" 6.يߗdLf̟с†[Qu Jn{Ose|nVTj2:4H_{sȨn-m1?Hx ow9oyP'׆ᅦ|6թkʊP}Ee`S?-wrnݔ6Ѻ(agwC'?*Vӓw 2TNSxwt(XbݴgB$@ )"p4uX9eSݢH>(Fn踓+Qzta@0cñj, TJ|U/}W=a;G(7ȫp4fj=s0U.+mOc1UK1E3O{`v][勯QPqAy^w+-#tƅnض iZ!Hܠml0ezy>Е x4w?.2]Q:,\z2jߙ NeS V|%i xD*'ۺbRlN눫&);qңGQfJ&`< úFV0̌yS2?G|)` 0 3Z 7$&+r ,n >ԏJM[DάCUМjp4V[[{MT5bcGc3w.^COfe0&&̏A&_w"@ƋݑCWzXx{h98q82{ѐQOi6׹n[/j=IvQ+!N8ɗ?ٕcBgwKD{cdpTƵh潠['p$kfEvo=.q*גSy&6_m :..|m]ɺ^UE~0+1fA^x={G7}[> <^H<O~7g%?4>}O7/px)-,}Sߍ}xxxl~GX/wQJ'>)|ow;/~777Ǜrx?~㭷/(o{џͷOiLӄcޗO>O^{k?Si>{6#n ;wS)csb8{/U}TNhkc-⓺te K8 S_nпp2}ic; : [R,`C41ƻ%$ۯ/0cv;>fp%(g^W#*;[!hJU2ǸJ2gndt5ߍ@:+_:ù4I&.(ɰE@$"&PdN/1)K$%k?`Qk+ю.+0b`fǣ6YM)C<?F emZZ~k_f a44!fAqr@@XfXQCŵ#ej$+ƻEƪM1wFkOx3JL_G| ѧV4|چn_H[ioI06csۺ9(Em<6 =N o.tOH8ylEE؜6acs廍9Qs z/|ǀ?ǀ|1? | !`3vO~/4>?}w >(~#>ƛ㝷nnn˿x_~g.&m1? ̗ ~]گ2'O'~'m㳿ob?,>;-_m|?cN3?~?5>>/N77AWO|m᳟򗾈^?7֡n5|w)~~?~:~7 òկSw+7&>ⳟuu^{ ?3 į/aYk:vs/|~O‰QSd^=NݟѲdo.r&KUg4M8w&YOyPe]/˂{cqDHi8XWe[O9'_gYŋ|9y ?f3j>aݰ3!+},&;<(Hmu̲:1DpNw9ۀlh=ezpn.0DZm/Ɓ'(`??籜{|oWQhr_Iq]x{AgZ&zp|<qoz$a=Wp{sBwϸHR 'Op(9ֵa]ޛ5[vda{n k@n&ŦlR&`8r?8_llَ$")9dzDc*Ԁy*Tխ{;3Z9s nԹ{!;b]aDGȁ]@G1l#En6ìTu&d1֧2Hb 2È0cz$_{sy;;R$1aD1l9H, F4j߈$#IR,8RJީ'`\`GiH]S;{cޖWTYl&4s7fqIP!0@%㯾N'lRH 8 ՈI%4&9lu@1='U:PkFXGqP.2?'dL:Hl9%1ONqdy!1> )\P';>"Y7߂#G᣸- 99\{Z %{N)wܳgNG}7׿qΝ=G⦛nzsO>ùsg}"6-_֯m;{/\6{03=}N|-?x'>Y (W/o^"M8x{<[;{سgN|Ͽؿ#q|˷:Ο?@.])%9^CE_qw]>yQ=i`+2SQ[Okcq猖<$~nvU&{l 9 [ >P1OrV8I}>#㜗q Ks@L6D 勵л>N;HF q0xFMDN}͖|Mx|V.0"`Ժ:pL`ȉƘQxbp1| }?C# c@ )Z$y߁=+^a8~vHg=zxߡgY&#hNIj .ϋI;GPˆqHHplY|IcQ\=n)^8[RLp,R=oF̃VRe$G$m:hD0݌fDY"8DN( L%Z]xW~ ?1DOg4sk{!GY9=`gT9*$7K19aZ#nUzX Xie|KjG=IA>s;0"ze4@w31 zcĉA,%pH1f`ҕҀ0l@#fFr,, ?+Q׺A` fD?6u^-y\RZ`=Qr'm6n+om;tTU25tPꓚ6U,S)*jDNe@KWӇN? <0p灧!w?P㥿ש/{ͷ܂gN#ƈ'noWa>#~>ok ?K^p'g?N䦛qÍu<~MoH)+_8tswç徹|#_UW_ݝ]u=ػ|aolo[[kOgO{ot͸_#={.K^ğsgψsټ%?_6|>pÍo}1ߘ㑇ģ<S'_׾~' Ǐ߄7^ }ĉ[3O_s Zd]71J L6 +5.*JmK]2ﮄҮ' o u%y~7̨s9Yh3y`Z'Lflg\lu'jYfgv8::ni'|{];0KqPryd뭮;XDIt#%aE}Г9b#8̄{1f`b eͥI寧G-4WcD C1WT:KJ`'@1.W~bwa$ 7q-uJho~Oگ}؍{-\M6kF}4ocr]J19U,QȆm"ъ(; a z]tt0,9cEsTrOIE2.R@5̱iVm+l{6_XGqvYQ-$c/5:g@I(.S a9 j /^#_}{=컲EDټr:5TAc%ͺp VAT6c PhAlATIܝ*2peUK 'P9'^`TS6lp|0e= =ʆdml͠U}@/O58A$ѶJ@vjk!zS63;32ńӤ *9aWv1DDP@M"Q] H9XR])O1o2bY+B,q.> VUF=hZyϕJmjգU-/Qr!_\WG~$? \{pګx7p? n}3gNQj1ʒsƛbT.Ȁ/K8w ~q7q!ňGy߿P8믿#Gwލ7=}iګWO?'NW~8r?w~w3~m|aK_N_r GBOÍogμΟǥӟ5=CckkN<~chY]9'n=={pM*i,gSb,K|.tbθS0}:! IDAT1,|_vHײS.znG`3@[`p?3,Jr8 N+*{O3r^qkz/4TѱJֲNYŪ-|7ݤ[8L-λ{īTzQ3&WnZ!-]Jݸ J[%gQ%CrΣR8W˨ >v2N!F%TIz\}͊1UGThVX?$U5G &Č+y+ عw1ӴT?r:-&lol?ғu 9 8DX5-ƸP,rp -MdbuN1SFC[)6C~|?C"L?X9hu˽ JV2zw/qqsyWԨ/_AfĶɹv*Nbc'wr! BmSmi9SgQ n|g34DX;eڟJ#b3uQCs :7'\w(1ul=1\cu% e(ʙG2r̨A8IT"KT~X4\SEQYxƉ1 TAc{֞RoNgf־e)csxw7|IpAe`ZgO#8|(Bqu}&{{y/ݝP|1|޽[)ԩqy'zmð\W_g^}0ϱ)H)&9qSO=_9CqAٻ}:{`ϞܐFڤ^ؾ "6ro #vv$ k7ވ0Įp]λlo_¿?{#ƈ3_+C#^{o|ʉf.^ /<#GرkqQ\}!|ܳ3]7!cǮpe!%[cB>]\cȾ|T[׶|d`f'd#FHދ|) ff{`>{xK{r I89Zg0Cq<GRomm5^pQ;k}pw[\YkFPU% yܕr ^g̲їs'X[zWتG;proWrɾmFz.X[4<1綟N/!G5|V_,0QSf_]Q?*SZV=9 V}5iULW?s9j ܬuUI&,P0`klHM1dq$NqۉMPp;?e󍽘eo^.l_a $M9bC!3i ;b|!z76ʄ1)D- Hsg3 vw/5$v;Rw:fCܡ$feČEf,^VJ pD#16`) K.bӈYQ3f85>Y qE)4=PS":ǮqݷʹpyqTZba!cN{/vaHXhc ;ĔtΏy_gY)\HH18 1lc~4w=bX.Ref1"#v/oc }a=ܳ1\E !FΨpb(cl\9=Xx-:wlcq@ :t] !,%8̍/`[6\氷}h\q0ߜcF߹#}&Q~5wP'; K$dI'S~q``OpQI=bD{`"1aKR8w@7KDIf\6`8s<9Nlh b-\,0#ΒeP7-2 (1I m!Rc2^wf-I$&m_<1FD1jIڮ~|;({b=z9mf'ؑQ[`T) U} иlĎm(&(e֣(fB|@ 2Lk(;t'P*3<Xv.FD~)Q-XhoUͩUU=r󵾯Vw+R`%/VȊIy$^o3(Ԥ}`z?d9+c~H*m*omж[~Z\ rj0U^سM2&Y5Ȁs+W!kʴX3h+#}6wb-rԠ6`*6߷mI=ƨyNs:TZ @r6AggQDnD[;l& .(M9j-ZUZmqmNĐKS]U9e\޺u8m2NmV W-oUon=>̕"£ǁ^x 8 p>A?&7r 67x'pSMtzJ /;wy)%ÀK.<~"It7ӧ6D/}VoWW|BF4򹳸t"n&;z-aGy8"Āy'% `\b b g9o}l_9Z7?w1\u8܎gy O ܟ\.cJ+/݊G{<ܳx啗sq<8{ǔrQ ,=0o}"ָqeUIOQeʿ_2f K TF3UOD!DIjƗB;]1{#h`zշTB)1 7L y?5&hzވwps5>RTk*?M5x]`jgP:˾nvcNQQHVi,+okys%Vjg.}d{or ʹMR8X+j[ 2P[ ϣI[ո1ݪ+R5x2e=5nW}Uf%j-ͨ-8/ZNFs3EhZSG8kJoWSգwj8eP̱fF䪹߼F1hSn:t[׫SECyLV*JN<%!'ͩ00ҐOi]6ἷ(s,IccCr[װ\"&X\| 4!*]׃|a1܁Զ0.X }`"nF{GD(4 5 n'R6КDaN ΁Ŗwq>:UY)95Mq P $CW[PbJ މ/2Ó1ibfڒ 1",2C"Ht׮a10cN˺b [y3 E $h{8"鈀$6 =VƲI`[Z4/ ǸڤRw= "\y5!$h]FjBd18Z2Qfa,'fBlmyd\1 \߉#bn$DfNHA<~&< Al"n&qbolnùqGep] ;c<9]B{EĊ*T_ XX=39T]rR% A +s @@{QhIJ׮ټAEc*"oS) HǴ8CJ) q&b! ՜?ňPx( @IOÀ%)tkJ)ckǺtOTZ)7Y1ޗ׳bT &FČ4]-٨*QyV:D%ȓ8%%QP)$?Zz2k`=;B&M3l#8VGΊqcUz4=M rTt|=&tq3\ָKDvU*4XE“:UH?cJ"#dOs\x̻.>e/'IvBW>܋&):J[DT辤QCuK`_4e,YK_K}=#_n ԩq|۰qأ`[#=#Gk :\ 淾]i\3ږ=muͥE+ )gYk/Q4V0H2'uY1b[+ZKr&&@ex+~=yײL,RRtd*՘Mo%T?i%^DETWR  s6*Z 7R-evPeD1kYTIsjIpl=˓ݳ_DzdoKfaH6j'-@D8QDRW 0.fpD 62_v> ~1vc7F 1'dNJcBnLM%8RrϽ*tC;@ȋSXh6f}KؾtŮd19`jKowJh@bNIzvdqLjdن#ӓ 8[!FX8JƬo#0.<&:{=B*"q]H$:c0.c@:aL #`ygX|H)% ÀF7gS=Rȸ jӔ=v9V‡Z8d9",:dyw1 6A,<bDLIT-uAӿ91G,t PbD*nIN^Gх8jz$4TԆa(IG1μ}-͑njTJ(jJ[f{Ƒr%\I,ɜ y]x(!eN2f+BT0aF/muvonWgF!$R_K7_VA/|B4?(mCT,K' F}_ P虴V`3x~27? HTfU (JaU?9Zeq(x kT#/4h_A9k-]ѵ*lپw] +sP Pm?$ewg8TZ)^)ԥzzq [`WWmj5URs[+WML@4GO׊q?N {UFKJ?]t(랳9jP^9_&Pr6njy[p~VڏeNz 84p cv%|;}x_&_}GqmwD/|V_{ ;?o߸ O'Srw-\x!ρ}9мwk wu~vt޾ŧ +ð?[o^:]G'";p;/'őpM7k8w «zȑc0 xs8~D>_7[owſ oĉ[p_'%x1|_ƍ7ބa#Y.xpyǿ;zFw>ZF(cѬuĥtqV`_QzWl w5Vq (u)#t(T4z^:(k%e㛗EI!iUɎn͗>l pG9^L]7)ݕh5 ʨ"_^5|Ϲ MZ8+뺖rSމ2}7}&њ g1e<6*7UeM)f9n:sniuwӛ{3VN)ViMXt%(L]Q8JCWs)KN$] JRҨ%Ӹ\O9$1DثmÂTt,9.s j6N9;AҸfV\1#hl=c@GP0٨ZҒ,(d;Xn!B;B@c yGOhm^AA 1J3Kژކ8R DNW2$(hx PVLJҾy)bXEe 5ްaΧҘC'pQے(C1awADHy,tJ՜ ttiN&&QXчG]aFxgsb,|P1b%z !qL gbA sf:ieŃbI$ ҍTSH\%PO%2^"t YtxN8`u1\g>(dg31N0'!$hQ:%FB#Aw0yGΈ,a Ȭ}%)x0 !Og-r+{zp9'aLw#t%# ];_!(s2؀s1H}Xd=q)]Gb Ѹ;$Wg1CxAY!𝇟Q30g#Bd8R^Nr1Etox9țɑM7z(!Ϳ^ UvU92׀ @ X̸z l"|"N AZަ[+%tZq2Gqi{l4>:{' _[JFO1gxQ஫w^ז_׾W~߁O8xՈ1ĥV+]K㗾b/[ou}_7e67Gc S'_O<ּС{^z$|2a>a\`w~M<a1þ}_w[/<z8w Hݏ;ᄃs]y|CJ ?yI8x^|y|p]̙>Uj^~,^} Bk8<~||ዸ{0(@ ӑF }$MHm}KfP5x R@\XF ` e?CCݲx/M>,䦪雷Ze ;ž3um?ZK ͝X[T%'ʲ?~Kgi'|6}f{QdJIu+^8oM>ﵝ:y\j՛#Ibk6M}!"IKhu"m8@x7HY[)ArD;d5_>IHNZ 3bdUYh|-eR9݂iXc3"Ӧ0L1 F$'uKq6nň G\z`ھ-E LEş}<8tDV-.ʎ=厶zl񚾫a%O]+eV~t3aU=/qZWZz592YİMfq">vH%}oV*kVzLe"}֮^\d-T,TB|!p* X]i6Bi5u}+%`~|7ͽ差~;/F{oɿ$;6;LiuSn$y>4b,1;;xG|se۳g/~I<1ܹɏ'NgV+5|q;w6ω 8ҩC/~39'*bf\yA\ wwwgQw=y`%?Wxp,`p\쏱k \bssOoa߾8u$.o_S-~KIObf\x=g?;ヘ|_:~e<ox{ݳwfTDA0i*j,FqDӨR.hQl'L(@o05u%OL"?$mH1݌QRVTVw15 `/=]k`#K09k'5{Tiɜ)z)%PcPD֎d^"L; ?n"uݫ:Ly Ln+tu?7j KԿקZ"Գ6McrϚDKն`~TM:P^K8c@#ɽ,)kBj-]J,\ֳ⬴{~:~VS2D"ZG3ob홝i!AhF\81] &6&q1.PY'D'+&T)@ ՝&޴~ρ7PJ>&p^wzHe4ѡ0]@t;'6٬ 94xBoIyS@"mwI#%H1k@e1=}>>?}G6IR*#}˱ jB匵E@{}^b(\N+=Mj&!RYJ2lʒAFˊ Y3q+4j:)]QUrk@ C6 -)|QԺH(p3Ƞ8 "RcL^cIp # Q6eoD5"^d =6eoL*O@5RWunO^ެ3)W'Qp٨k w8HZO )jT:h88o:Q=IҺx*SL9( X]߉qVW*H o3Y񊑌QF ~P@5DT?3-cry lӲFP{ZIJ"boFn*-E4U"f mRVs[=V44cEf0m zZݳjش?6Ue}S3F󜴵AW:cSzH%1)WKWzŠ[MSrUZvjZUD>Y.s~S&2xj۰,bd8kCDּ\͉c1T,~.yFDv0ʘHQ+̵TzˈÏܱҦ߀gJÈп7T!fqj ;+hAyFW5 @` QR 2:R(vk/2pom+!Pa^mKH\j(xza+NJ=ꄩ̫E4Bi;q`p׷ i" oNZᄇLN5?XYu`Xm>#^WꢵiuwP|R_(Um ^3P`6O䧝-be {z0 IKT\ـ!C 9"_ٮgLNI۾=G}?D%]xrʛS/ZkMI#6,h$uJoBaMrZw]&f9Rz2䞌KC9a+IjP*/VAEwsڇ{!ŀ1"Š=@ª v3C7@LBc{ԄX!;gWJu>,K}c`g`#xu@m:S:Lv--e~8}Va7 uՉ J#bqґ1d eQJay(2FqXbXbd<;V- %Ɲw/|?j"܇6OL1O Yd^D]1 lS ǼxAVk$Rg e-4xAxDFZCȢBUijɚV8SmI[f7g]($FTr(Ae#j6iD %%Ic+Н Q!$Q)YIrm#QpH@u@r}۫$[/@Ql_F)B\NǓ5Ț4!lUML0G+p^ L!ZwW* ) e@~Aǩ}6}])%X%ʜ[E?5@2r!Щ!zm$nn[Bl^W JS&e뫺"TLdʒv.|T&3`œ/m Fl=oCΖ湼FXzajpRܛaW5L۲>E: Ui +阮m}sD RRMҫ%1ΩϮϮϮϮw1x%0Pa}{s-(AVFu*l\T<2t?P]^jR;Jߛ8_:WOaN X(鲱2ziPA:,׺wX UX1?O׭ T78:jMtw=V*iꯙsSmͳ1ߺ$“WUQrLd[#4pZjW+KM}e R{):׭`Tw>vB\ ܞi;%8*'fs"dRu3|^fvFwMH!@]<@RZxivigݨ4C{e R2t=8u}[]m1,w(T*׀ՠz)E zaR'D @"ͻg6녺Żͺ:)H{嫂%{w͐9dUCo' -/ī1ī8e%R@"j-D9|b'p.9gJd#6bO$x !"%A8'1bX"N=6`CLtNq>cc>@`N9rA&Fw}Xx%nnûrW^wyX=q̉{K=Ey = ʋ>> k`08\t @׺e ]yYU1 Yk,f wWPpu-diD7JȮdTS=ũɨ"Z{}Br*cQՈ=&!%iEF吣Ts:{L,5M?O:v װdˆ$*mcymL ~H՚g?8+:Y5d#RĠsЬdk@uϧ1j`rhe.XbºF(N KjL͂ [ƳUiu}jTr>wYg>ct-qCmBŋ\.H#Y; ɩmcвNM$gl#! A$L [[[fpLKl_g KIj='$<fɾF&yٻMDw=81qIj;5`GL\g>+ C^җ$ʮPUW_4x7p /c""ǘkwq0.w ֈ& nǘN#RQ]rL1>C.}/s9߿[[[ ] X`ÀN:/y0,3x0O7d,`wĆ|~cl.}'㔀8 ]w fӓlsDNUHоېSN58"qΤD t&D;argaÿ'w[Tb QqD Xxx6Lpwb1șybc&/&c+I]#aP؉o-H1E)=7N=ڕQ $el\iBC \rLŵ(6I1rD s~8B25B5W6~!?Uo կk"_3Ь Y ¬Zɰ^[LUeݐ1AۤTaΕH^+Z) [osuV _SoLj y͓k%:@0}8VJESapnSo%ԐTnLfFaֳ::$bVQ)>+Ccseje1HU'MpQx:jEl) kRʁv5N8Jje{hǦ!_JQTj֬5ﶀz㛼98d.5tMUl)ie5 *+s^j\ GsY9hj7MeH3ΰ}i嚬}F1JdL\Z^4eR7b(/y)`(i\V/&asiO+=jC:P=4vvSoN3WmA6y=BenpҚq1? K[T)677 jXgN vR^|u֔7)]q%@JeO:A- l9P։ 4Z.픫{/(c5X2Y6}" ޫwj/hX9ędă9¾>8GXl_ƸX DG6,4ڳ\Pu%| IDAT;Bs#E8 D,]D(u:$Q>[msXBV6!\DlÁ}`J ;I )|7[bL i8,4!m^P[9夵wB`DNYP9%p,zLT: st[W]- ;ؾx ;HQ@ aFFdDX![k?[;XaLtW?29'"LYduhҫ܈pw3555}*. \v4˳D33TT ͹`@Wrzם6RtGmLp& reQ k\b9kΪLD{Id(Tx3kԸba;9HF1zͦG̢;EE`D>[q^ l@yy/6 Gi*P@N%M)OlXoK,}6c^2s{S])SSHA]+֥btMF)b9TaH qw+Ԋ#eJF]E7G,C\S&`N;gM MN)(ld) `7<ޞpպ:uzku)zZD nF$i4*ky0+ N~O7(^˿i)az ꑹ)J|em/BrANL WTEy ${l+ *w6.0Ӡ6m+oz*bʜfhL* _~~~޹X z:JYWQSGDT>?sxZt-7>:86٤vd=4G"xB1K鞞 }.s먇F)|PAa%' n?`}<2˛tMM)xI0xm}UhW ZOze)VȋNՊ `j e~B[<chʓ;,Xzۏ?~'jlA\vֲPhnIS5WnP k  "63;n/w>]q>^ummzXWRxBym-lul+ oq^etƶ˳K-e_U *.F;[:Ş.U+Zkض58ܷMV g)Pv /@LZ|<[ZN@w 痒 "+dFV4%s>! K=zםzVԙm}89;Z{Z9̊Fn.& #\IAf`m<6@oM %>)m)m;klրeFl0|B.TNJJ5]WDʐy0 Ll3U`6 ebP4|J`ZQڋm.{dM6ˆ`<#M";H['hG4ATLNI fM'=.k?)Iٔ7i5+ \5L3Q3 M_B?5ӿ=s>v%Ɔa8hhv~ y>\NYgvy<|xȧkZ|s@~3 A1vE<NOk-+;m|yQ6oJ45P 0?T_JW.p*̙qr 3'`xd?u5y,`ǵLGqB"ZG ҬE ھ*iwO Hf1rȌ雍e)xZ* 7<^p{xoxo^0u?C]r-6w*V ԍrxö1}EWOnC}AEI7h>]`f_W<?mv߶`usEhe mB}@U c`yII(vM$tFjޱ^$p .W\\j 0ak1vz(%Ұjf?KbpXWܰ6 l6Vp$>Gme-|=6uK t5pOm mq+¬T&X-x#)i0FxH NֵVDqwp2G3&ؔ#ο bvᜊ "^PϜ*)!G3JόƇM[QRm#S>T̎fYgN85pբ26(``}#EIJ<#"\Z%^ss밹{b:Odr+_w )O>c[r4v :XӍ3<9JϚ2ʜE1A>!A|G1'lK0#&Qǘ"k67 d\OtanxRl'ٕ}*֯!r *ю"hÑ7傳6ISt;`8i~x'4.ľM: RF>`:NŠ7q[ D?lY_z۠+x^ͷ˯zoqi{b9 es5|}EjE:2BKZER,bs5[PřYEۯ7_j7n77K'<_. qD\q\m+X]}Bגf3T.$v)u9%N5O3noozz-ڶMص?Jb)r ٛ)iaO޵P'PH)wN9U@v?**Co\X,eܕ ΉǨ,Qeg}cRpcAQig~&:Kڭ5G qxc<dr)[Qdp(KŅGQ4ߕ9,ʈFS8*|KG y%Ǚ(~LUtu!|IEQ4hկQHB] IS &lޮ`Gj]yI,YTIZ pa mGx#1 ) 欴Lq7ŞTaɿCr{rHT]CѨ:S}۰ }C[W]-_X}ŶjeÃG&l[2Sn,*m7xL Hta:u1zx)k52]}<۶o(%Ri!ȹ(4Y<4ƣ=xH`⎶? }Iv` M]kp".6DP5Ge${ʼn +ƼzX,܁]ӗ*Rͳ$TF(Cw uhMwJ>3B:ţHƅ EXku#!d6!G_q E09g–{7&BʢύRV|Vwjue7߱5fk8s|kzT?;$(6Mȿ&ئ[fB78d{rDa[Wa‰9] w }fA&WHsd1tPd9Jm!;T,Z[hO=.y{=R6YMh*JmJі+{{Pj151 1$5| S75 sNJ+&,} 64G$m ~G Ѽt9߳:3py>t;ޟa$ϸR>:8c = 9M&vNƞ:w$ Q&W Մ'SֺO樞eӒv:?؝'ƑG?L<+ * 2D72Mf9ÅX{T%zpfbUHskԼ k${>|7=?78}$̳nR0~L nGdY}f-imǝ(h{O2><%e$HmIt[ḐJ`Au!J_&o n2sGϦǜD@BG =zLr5L݁`iͼs6~ =m-Z4*~CиBg5NA`CS ';L0sw##hz{ U&IO_|$@3\fC'l/f"6љ$=;xnjqTUJU_Ñ _/;"g~{u*?|Oְ=sۻߐpZ,A~ R@k{qB/co+zz)*xS89W}`v fu- .`4p۰,+^^]NR)XX D IZ+]'cSWQT.)?|Fv"C[حWڙrJrrD۶ᱭh&a_7C|+/b"= Ղewק'ڦ+!)r MP)L>RlÍ`ǗN:QtgL vJ)UR1-KxveRQ2-D8EHx[Vv\)$@XDmGLg)L)!1vKDқ }[Xh|dlƀםSH(sYԀ\r(TQ;cffvtmJUd`tm =HQAOj [i],F~/EKk惶c_xp:rQCnh.i&X1Dꄦ 6daTK7j~䦝z;ܹ`:״y#r*>9] {ڜxUYYxAko_4$wҨTF^˒m4P  :k4zfsY IDATXwf5RZJ% j$@7t{6 qz;3H5߲k/% W6Ixw]Sɖ1ï1/It%ܶK墓j**_BT{q,^{J /0}UڦQ\b,#\x72YEYOB$WZdd9 WɄw͛RNnzª/K-RsJCפJ"]d=x%7>9S`eA%)$`DQKE-萹Z &ZIj F P2""dHG;0 cQt4?1*yuwj DAZ; Ah';;1*U9 ĖI.KC$kzt59 (G_g˲\PwwZHCB\ӓc\Y{zd'_(z%Q?UVணRa>D)J ao 1 D]&y\aPm[Mg0T $%t.4S)X. 4nEoFmMYt}N bCx+͋c2pޠ$u*G#=64ɝ@i`_+< gLZE{p&t؍M< pŞJ(9p [{ܛas߆7Iرw 2%뉕sEeQΥw yS&x AѴq$5hXsV(װ?/o3A#d/'"Ap"Ӷ? H/ ÜVzQO\v:ǔD7<32nk|B9,=3<ݹcD Ԙ̹X o!)ӳݛ<)Mx=y}¤HEINdwGx㞿׸Ys^M|˄d軤5@`pԸZZtgVǡ6VFsa\ o5 vC?3|GD)/ @-vGlrKxer}zŇ<]}c(V?Q]w<L ^^q3n}öoR,LޛZ79e}WCV} e)^LTz[C;J]K|+o"5'=5 W\NiuRuTF콡ů~_WxMu2e\.a2d\ ةظ,FC@#O !>l=КשZJeR J%M ?(-aw 셊Fk|傾mް=V!"?|@u"ZGx}~˂}q *?C^*c$awG}r~ֻ[581H70?xc)G%6$ূ;\$'B6M;v-]lo )n)LQD_5RI.P7ȇ)VY8S:7e 0ex4r CN]^TPo=w@anL]Щi/tv%p)1' H"*f W;vRF ֝4:4) Cin(::?bn<  ٩ }B|7VEz+>/86Ќ&7Hеf egj8w῅a ~ ʆ˗ vq2#ցXAⳗRk\dX3ynF߯jKwbXqpmlIIHrٜ!`13a|1{0qZۤ00::8ܝvWMGpi±e*o `9v')8r琯qǙ[Fky;oJhň8nљyگqkO=hZNet&wEgQyNqu'Ol`M%o968e;n-Mx<TTqe (]Mt9 # 1|+;4ik5a&6xĸTD'd$XIC `:*0=8maOg֞Ɍ'1˅/14:1lJpYN}h)񭳱3B s+z0\6J޼8 遧/~ĸuV+\˂E۶b}ܱ=mqE*e`b\ U\ѹe6H#*P?"w ,2VI4Гj囹&#L@.$`N^, Fk)zf8?|@k; %"/Hj?UVS78%52|%x)́p x\e{v. i[j-0M W,O,>KΒzwK-.pAq]j邥T 7Nlۮ|,,WTv,ۮ^\p\ܒ/єvM-32ZBw)95Dzk' #c*jX7e -ĴvgIּt,x1) 0'6EB`-ij,hu^- ,]ӹ8?<@,u{B )ZӰ1w~{o2BuBq!f@{FiH+u*DxM+CoE$]9b9oμG DOQ45(3~/;b>1!YdΫcjrp@ *ȆՋ&].zAg=]T,. mu"lFל>ݦ(&c,pYb65~-9TKF (#oм+ϱ/fFlcO/ Y-S"8=Zpeu=8X@T@{8Գlxb2w~r漸g<%}$4͘K*zItYBA,;k"0V1F4{#η'#Hg5aDcXuEr7>I2}SN3kި>sF^$; y3Lctϼ.I%~tRj\;M*b`'09m<>j;ƖY4OM2u#?Nkv9fIvH#xuYp~%5d#Y]Vȗe8M< gӤ :3|@s&@ZlHֆpTY]e7i8Ea@Bp6z0!'y J$l7DN& lSvmS9p@CWbIczYH_uR@G{G6l  :Mn(}| suV`ޙ3/>]>@3Ou]v'ߧq\V?H|/>_ʳfOnHGi< x;)r 5^olM2NW<0wq^Dg(>m7θa_W֓Z\:O-w8y-ǮD'3/1CI+_7U ܵl( mTo۲alʩdO6k0aˆRo7(,ſoֈh9y)9R:ˆ,UXͿhѻdzISD4S|`rm, й^@}3'895,nb&;Qw(B[Vt8/8v"]'C)+#fTh`JpY֞ۙ{6.>.˹:$&O=P!˩L@eF> 3ibڠVB#%\y+abk_gOlm9$\zv:E>425q䩁~$=/Xa'Hi[O {>6HϢ3lF<#'q2l 6֐E#ǾY '\gzn]@.'L4):~0ɱ~6no mpNޘqnן2ys\|%gX})~ӾY=v?9󃱍 lg _QIN/a>|~ίG5|Ѝg1b&sG;4.']$UzǶnP9zڐS*DXq{ۥۦj] USc^Wh6{)bm.g~e1NkE3J:5{@lo(9gᨑx,Q_ kHВ)h`p`/|/PSe`!pw$cxoQ8V: **'\w*63Oo;KoV5!ϜЙQR0* lExKz--"d&k 'j#b7߿W T͵.yڗ#n -(x.%MspwE󅋃^r,+4˥A0,©%Z-\a .譕,hBhhf즑uFo\ՅmuAX}߱?c~jUc'3 cMrTR#_W1#cM0=+u, )y혇0Nv!gMP0m(VZ$ 78,Ul̥Qd4$,qaH1 &{}(3;LlNYMP$r?֍fq)DfՒ )}GV! ̜n$9W! r3CFcٽS2*tlIƆk n*z76 `TLy<9g'q18Y#"YNs\/|8E2+2e"e<\~0}7X38u ܱ4N7k6hilw${\G(Eca7 <:S{hѡ]%!rA#f1[?cH2q<h-4|si<Ɏ]~ws~I> 4?nn5i;DYmH0Ew c ~a{O4}Q /6G ܍[v@vI7L WJz0yVկ _ }Ǐ?"AǀfU.#kmǺ?K|x~ Wm7JؐzA)l11?7Iö]rޣ| _/ܛdM7mH襂;hRQ/^YȞr^|_| |K| Xׇ!\UxzYp\QEsW`!|o~k]=wx^^^_mza*wI^x[k *vI̩>}aw u{Gk)e< Zt ~Ѷ\%\H~GGub LR~q.r'UI{M{) Py{Y N<=G6edY$o)hFů6x75@oМ7}6oxY6N)? abcDOWvxFĺ<ƒ`/kRۘJFXNEvY5 4[V#9ᑦ3}ʤs7M^6d78iά9@f-lYo4,}^%g]nm偺%rDN&?QEMw?Ֆ7ތy|1ceCϾB1Xg>%Xr*fN4D o `4kθ؄fwF#֨iRHP$ o2prBJhGT޼hGYP̫9īmݓڌ~2/*45L>[; 5:6[ד6f> O0O5xtmQS"q *qXQkyvs?y[`sVDa fg󙪢:䈄q3쐞7" gBlMNbq-֏b`ׄ?u)/mK mIf_ mbHyM8yZfGxpdA ǩ:8x cbxuڔnM8J @g.7h(3"$G&hrNT^Qӓ:8}p0_ץ +!wHôa"T4-t-$8FnDiۂ 5VH^ '0!KS.#򳓤,X &9;s0 ZwwIEqLC_8S<MOFu4 @eK7nׇoífG] o {vIq@Zh0A izǽ%ek9Nea #sENfH~2*dB{rԃ!RW`}zcurt+q:qGwB7\I0g6n-o CWtrxz<0ױcBۊ_wRѤˡ]iDw* c0⛆gJQMLm 3&N70Ea:U#sKDŽa6MmVT&a>e]Sםt9F'5gEYAԼy!_RL-Νi8s1Q4t1ޞvL =;dYmLvXX3Nd[+A3&,xaYD=o2elQ#́5e}໊Ov{tF;a,`&O`Bܧ4޾?陁dF}"1Yk*)-OZ x;WPgZa2d$ ,H<̱uG?86'6CܥmO#l'WR큾k WqW`,.+dp8W=ݪ'#|3#*^^A?|@)6,yѾJ M6kR(x,xx(DX&~u}}0GӛeB붵]߶7,˂mx<>Jڠvcw੽T,S?"NZ+MǶ߱m!Dv)#"rwk 0ɢM4exBf@d%N$]w" XQ.lC1V6[qkQ㈟}&2#qb$bd@vp8r 1||&9*؀X9eOzLBޣͅ2U@8Jmƽ93!nzؕ{' II\"lA@Ҩo(~(#c0F;nD(ƄRckRYӊ#S=EoPhu i 8W~:3ܜaIe;U@) U}CpDמ0B|M,ʻ q``k{汼34hLl~G}4$R0iOf=gLaLCy.{Y <%`%c̈́6jo)/6.b N2Q?RqQ #8Ȓ̗%:} $5'$0r3; is4ya-dr;s_\.c[F |#;4֩L#ϕ풗7'u{{@M426WXe$DXwW *k_ p opVb;m~g* 9*GYKx5{*&5[_6 ԿV4OܶMsf7tWvo ?|;_߰o+nXЭ@@mT!rW)WP+>ogv;7_w\g+4 ҀBehn:kppkX5Z7~;ټ5e4m>+dhx1\kRdHOK6طM7=ZQh{;an8KY%"IRp?!*|N5 JU5f&R d[nDegP)XT K N.e"sgm\,뾁{Tq]v q$<=]]k]*Ev,,J0#/,)p[p;MT=aY.~oV<ㆷ)"߉fZP/R,#p֎SϘ('=x< 2+^vqWDMΫ=P<(>PXN=j<K ;:Q UQ[jVZِ^Yk1OD՟3̀9L)Bď O+&k0\bd?3:#jAzw3Ӌ'~t ]'\:M_-cm&s4HЌ=A8Ӣ )0 cvwRFY)Sl\Dt2{5ƾuljJU,OO~//?w[[f0Mr`|Hz7FgO͉ޙA>|>}Qž>py~y(ȉ}qy_ۺ&X7nUtŲϵְ d0q[ӗaԸ\@Ǐx>ϟ*,}\U蘭@9w o6PkJ鹱Uh O>{vi^îeJ]z5,T?*AbHvB57oGA`?X# F5-=2iE]a`nLb7%bSnX "DѻPEQBR(Gc j%c^RS`pe9w x~w[vo'o{ʆ.Ͳ$IЧfq#oGucf-w?O 2==U]Y{^nfB7(`s"u(y5|u?30tqCJ0Gm^yר7D&ѱ;h=S8oaXC\P9\veJ|H۲]D߻n@] Zʚ#DϪטi:tÔ'ZPU8E!R&0Ue^a̠48`˂rM,tt`S,CW\E[V;q&߫[ ۯ jU_Y,WaQjO6&X4r"嗀m_L4xa>"%s'U&(@CRrkϮSF!YCL+0#j ׫Dd(POEb`[W !p;UV Wpw̡) 1 2"W`n8,00&v8B06ULm9 ҇*O)XpV:"Q7@}Zې C"݂η^ZS+u8kc>]tYE>tC<QeVcs# b IDAT(gwrgm0~i+޸&:8k1,ZE_G!zGԅ>|pb2 Ukq!*ڲU\;6qܦ]튱.;M&t(dJK[]w6f mt.C=Zӝt8Gc1g=̉ᓀ!hATT#}l*9ъL6u0;g}8'):yXS6B`5dқIBl[Uӄu{r8ܰ.RjL 9g׻+0/[w>ZC*(-1maC)u`܃e.:VV3(NME{gŵNDX4m/_dN#HnH팜I ֢jzrn=O`sf6ֹ&ǃxfe|ƶXE{cO)#O3@m7 LfC 2yd}VãϮV颸 ^|jR!@}$IpD]{{Pn*d_u 'RF% x&2*  kS!$ɒP1#}Y+;h8xDz@ړւR1K2hX聊~S?g91e 4tl2V*rzXz->DLeF)9=ߪ|41p "z)ŐƋ Iii X=PkF1Eo~](fKj <ÄőCQSm#=ԿW0Ϯzt{F:zfL7G =O7n)7: &,~7M֙Yg9t5RYtoN F~Fb{ڸ5nprv=*I3= ؗ iDe'>Fa0\Ӧ&٫Mnºp7/+&CGnp njl:lB{I= V`āx ?;=Z"wjycG/q(nn]붒}" dž:x6J}oʌ]l [xcasDq^e5{ ]Pl0>]&n*ysolyݠXɠ(c&'ۑ'o׎jstw8.0No\3 G`A"3`/ow-Υ;o7mh6}7:3v_q[qߏ?0& trЋP{[3H>A}[]f/O~;A>}޹}?6,\hʖmۛVz'|5xȪ*/ 2YZU"sW`;P 06ȡT)~ԹD2#GoSK QJ&A0ۺJ-#MmeDi!7<T29@V+il8!3#{ۭ2bYxk;הi,*J r T3Z;J^tIHSF-j9Rvd> JhV>ruCIBLyQ U".mz8q̗}7$圝l䔅Q{Z5<!ӯϖ@Mnqu4Y3 Xv/Rsn= 3\¿h0j+qEXVg&!l )x: \wıObXWr-?SBS Y05#Īb%_4n#|Qs ;8,!ɩX#%!\4)IN]3YZf/Ea2#DA&dWڸ`N@4TƖ:9l%Q;+Uap<)a=X/.օ*7!솆6PJV Q$ThKh 1;mpIi>HSnm7j|ui[8`nډ74EO&9fKbҽ8Nd,Ue?Qϰ2{K@LEP׻=V~h3\? ŮO85FW ؽx m{=Q~O noICqYm-Wsc2xh,ʜ9cuxz!#GVFT(8}%0]^^ѩx} 1ُuPk䪉2q1Y۝ Q¦j8lY]^uIENg^x&=m\~_2.o}l| qTbZrco_:%2Ys#ûV/uyC{^]y}{6VW~n 쌅(5n6$!{7%P/;6s]TۇMyCFy2 2mrr޾nz6~ESeGlg3Bg]G:u}۲Z3l|$1s$@Xn>?W>޽{eH`Fe`f ^|XP˦գ$bw23 Vd'Wxw_}0W&$N4̼͞ |1d9{\xIrJHpHX9'FX*ф|?y^lT/y~Vpi>Hؒo?/|e໯ @HfSiND8d7f,qVX:lQbmgrjh2d T9S:QBVӌ/p:p yԕm`]Wl ,,nDR L Hdf99!`n2u+LZf8vU֚Drri&"e`b `C#p:9g7e#KYT?81XI]8Eex<#g]QqX1yϿmq}]Ot; (pWј5Ok~U?J!}:G>2=xG }\ ߁LS4lhoEX^N&j_FnߘG,c&y\37P+fG)`0yО`}R]@Da- t=f=]דAO sw1vr(:q2F+cW^<{whcl"z|}O_W>܍3f]QA`bķ26eb0?$v] L.vZm`D_ъCe1i~/;g>c&*_}H(oŞ)8S[kp*9%V.lhh\4u4yg׍{ V(:;Q068a w xJ@9pSBkBgy&90U'5pA6 $`:MTm א4eŜථ`|ۺ`\z?|3%] 2Aw=qǴ{ PbclJaHTf?k՜!z|.uu2=^B:V?h^(UbWn[sY$H5gvJ݃ˋ(74޻lzJ՘8# -+մ$eH3@u5%%ՃRh77`s?x 1.*.Us(J t{4˾` {Un܋rOIBD?2db`CSک&FC)dM"c ǐ:<1mYy; /oKYRyڰ֭y<]?;Юi8A&rɽ4;_๩߷Jaȁ)M"8wV s9BG~-q$}k(@kXtZ$)xhp n Sn6.ei/7lm= Pҝghqg]"@r39$CZcASta3gxO䵝<#f{yjw2ԛܼ߭[ Bs1p}`Mm\aGj5^zğPa^EL=1=uayh\xs3E&Z; r埏 #8$D{K W_/6}|œ*LFGr;_kF` aM +68DiÌ Յexo8Om 'BhҦզ0nBN8,GG/lT[z(vewi|l*D=TX` VZۂn#Σi1bwP8 S+q( ^79ws>1p䮃t~wd\ICi^# 5qN~_еN;Cq vx8f鶑С~se/ݾw#}!ߙ T).tǵNuI `;Pcc:i?x/VK;w#ۑ(<(f}~r>c,(cF h^Jqy lX-xglZW/&u\,)ۤ5 g-bE.n5@RF&%2H=Kih03SFkUbk agXVĉqg~l9%v=SCn6o.a G莠6~xOi,gR'IF( ))&h5Jd )$ p`Ҫp@Jݗ>ābS톛Y>P0m8?~+[EYv7#=aXwhkUkźnUWnx~oq/t¤vYpӽ3VOMCqfNl 2{Q2cAɻٵh x1Ӫߦ\,f\#m25K  "$=EZ"eap #v\70!η]MÅWb~ꙶi $T`%4 1pA+R,֦յڈWOS; CJ"lWb.|ÜZm`ၷsLD(_!W4X#BjjJ"4yMغp-_V_v F3^wP.xsæh-mB34nw7v ` `2tB#Vz;y ?X G>{zyjSBp=E&8tv~W}Yu<;+ZN|_7׆z#nn`7._8XrFQ ]хu2OR6W#xƽ&k2;'/3}iWǽ4v@le {P D׺Mc{A'#q2o'f4 c@>w>,$c.u{H%k[gw=}zo>nAu߱~?Pp>:Ρct}tKP8>Ze\c@ۧY+]747y.GxpiX9|rn=ۿxK A_]4 ^ym'uhv:a|s3|5؎e0ԇ ݈]VF'b͙}Wjk7'Z/x0ݸ;캕?ڛuokoұ}Ϝ܅cو>,Xu"m t!X0mVhmݖ{9ʱ>O?m8z`/ˇq܊EHW&Brjc<@d u0-=$6Ƹם˾ ָr݂YcC ̠%L&=Ue9/Y޼KpO8[XEO,T+U0{Lx:,CM rEf] gIZ7̘ yAu_ku!jzYsX^zo7 ]V+$H90k)\Q0si;Aب_3;,lӭyB{JMU~@;=qcac {5p}k8p%lBvz n}Պک}YmW~X_kӍ}NvxՍp؍@z"~*iuo]D ^19Gg .IL0Sۛ}Pax&&yiT`6X"3`]'}M/}w'ʙ}Q6~@:cl0n#i, rz]越ً&oW{;}gۇ <pe9ĈZ} wuu '=/Ej6Ёˋ 7͹9nW s0s|g\[>ϭ c0Yڝ5Xyѽi}*wzxS쥨Atsj˻/n솃٣W@\ !HɔaNO]&\{'d^~-`IDǪۤ!-mWj ׺.+\/ؘ+v+l3lu(ygn? 1\}J~tkFh"75aM=m{<~4,L׽2ڹ7'?ě?Oxzzƶ3͛8N |8и|-e[jSƶ8?q^#>|!^~"|xﺮX Y=;'ڶ17h{1p$%4bYJ™Bw|L~7yߩ~]5-zcP0f0F-PUi7~Hm6s7@d6VgLA jI㣪Nޖwص+}]vF(6.{1ΫJ=l |MnUvs|-֊?ఈ`kn? vu|uo/Jr]EƳ卖w:y6Wne۾?a\FMZoFnllW (t};?<ؿ7ً(/| 6dr+eu-AF=c\0t>AtqcW!јgqz< ^ۮ^x#:gU Av79 %D&2 P(r*tm yb8qFsc>p#knSXS#/v^gaU^x̙&}Ey7rwMo땟Ieo%xnņGJޢ._:.cy X(Wl^}'n%ˬphz%I@m1YOUCl4@:MB12(Mr/uU 0I>ʭ Sk jM2J4j ZD2iij͉r nh(Uºض%LGJ ƕ`EQXN[$Jh'de!'BxH^uurGk 8+Ο=#')J-4w#/]"1Iǔp6u= DUI16*h=#tYWZ16Ϙ8A@7möUn$n(ZG-XRV3↶%Ypr-hk)xZWl&Eq ֌LJ<kL]P@k; ;6p@uWa]|*FJiNdYI!HLz3zX0[` >TEN-U3{g0,f%Dp"FKzH* u0E1Yc4u fu>4$IfY=˸(ܺd&]GIߨ!d-U9Y.4))6%J^}y?9%⧨I.6Բr*W&5 `#kXvzmgFnrܞ!XIhڊ;v/~kzlX׻0IW[n;1)S˽r̹MHrL6U pf0p$\]k@~fMþLYwqgHGV}7a,Ϭc!WwGLYnZqw:8^W+N/0N7lSCݨuβ+>: mX|~W=\o!tӀuՊVVmA]/x>?w0 ߼{r%Nj޶uf7n3Lz|F+ סLq B>>1JYeƗ͔\K(9S⁢QlT#Mf| ي!ԗ0ϳܒ )Oy=>=v~\uJ]vzUKPMK_|k=}>cb.|}aBgPm_=y;3BHEO"jC-e٪ c'a~= }I#ƣ&W`@Dvs'{~d(FܬN+A4תGлm[jxzxpĥn qH8@뵠./c-8m ş#1xOk,eG NH@XQ//u :fWeF~ʨ2e2sraEQzWeQwXWcq_@_f1H~GZH&t&k  xN01䐸ILGX&&fISZ+!'$rx֪"1A $L-<뫊Wcl#e< +'$6d#0mU(Ph%ᦳHZĄ %a <""K}:tU=1c&3Qɘ80!+Zu3&r.bXw.[|k4r~FY7AqG, Vċ:^`a\F.k¶-ضYVhM42JZ`jIZDFX iֆ[A7۽\bƖKĮ5$O$ck[`Hl9eNJ mv;AւO)r~D2݁(3:V; $z+3~N*)YNoRh{tb(I"9Dy0Mjs ,_imZJ9>e =3@9a[V"#`mu;#};eú^ .{<+rփQ+˂|vl0V m%x= <̒8x+~g%F0`vV d;ao-vj#ʜ>xmdIuZ;f6dY <jhH9 {ɭnVfyϮ 0w:fº.SXwQDb5RK CJ=tK2saI56ij=M$1ZZ!o7x%ih}XpOU3 "TF6FwN=f a&3-f&_㺾[AP&gyXd/^**x~YI0WPc?g՛G7xyՂ˂wwɏ?G? }#O>Gxc_~|z ʖi4}5O=\,cEJP}+F m`cf6L" nq|0bUF[50o y׫vCTYIrzIDCg~oq^>~oW_ >8_}g O N8\OOx,ت%j<D7xAmzӏo оU2rܯl E)\5eހ{ F)agW#ZkXW1Y+~!. M Nw8ߞߧܾo|ƿO?JMyśqT s ,I$ J,DL_IC 絀0Vt@+CNIdsΚok&`!N2  58tw/^"A8! \0 DLM@GN jx %dR <;PRclXLؘ+Ω03p`HIpj!af`bor8RÌ X(ႆh*Rr7SF`̓$,EbfeomfmSf1(e?faicG?r| , Zk8omC+q޾ab~y'/sqw<`>@n?f4Ͷߊbf ^ZBޏug̍8pf i,uJYh1+ʼn=$+qDaՇ{8wqV°f6x?zԉ^ ˵VVw׿—_#=W;~q:yދޖx( {!PmSr{s/pxhq]M:@yLXX Uv9xiQZMl7!q&ƨ!)sc<5u%d$%Sk6=ALhMʼ;Q/̝}ntmyӔcq>ՆS0#+ !Eg"yex?;?,/]ebY{'?/#{?«m?>,^ :ɞ?@[&n>2,*6  J 31ݳ@ 37L ۝03mz{ !D82I.s$L PPDg9pvGl"TA7U( ޳:N1DQL*} n IDATB&uh gk .*f^@^S;8{5w c#06`C`DIK]Ic<%EٖwƄoŶ\,|@>6/%I>b7WEB6ؔKD90w J([$%$M' #^~/^~{Բ'0$!=m| ܝ^[YBVV=Y^k|԰,g&6L fy ; eŶM⺣V79p<0r;*wOfۆm $ 7=A<͊Àp2gR:`Uv4:+ cwe/8jJƶLOJDm۰mV)p8b>r 9YOO۾`~8X.gm[99kW8Yʂ|VVL D>}~~ƺ.Xe|8?>cۯ߁k bQچec{ח/^p,gýT9QIrw @ )1R0) $ W>UU=W4;0_#N Z'jh,sHtĪ*&6 *DBFy"BK?Ɵٟ͛78Ey}>3}DeY_/k=K# `]W,&>p<֊g,IN) ]drp@D7_OנfYovԂwzwImf{_}ߑj=5o9ԹBzyц] kysaKzL][0( |/E]١D9{]S&0rZg}rë)ǧ/քgn8Ղxyn0DOxy7ߠ~J׵=Ͻm;f ah*KׁILHn{ $ $,h˺`d DMPI=X@ #1 ,,$75LȜtoV{1dF &tzfvpiz+- g2TVF. 8ʖ Z LSVT0.G"ZkʆNIB,a&lۆUV,[T^)z4^ȪʔgH3ZpC)q'ٯ\" Z up?? 6 Y@/jM\O6πKpIB[KB*dXHQ=(%{|Iʞ\ Bk LW:+!wk1I[J9ĂJX\1l*% ;H )4u g,M\kzò3'0 XoOYydޔrISM!x1Y0ZgE2{"WiJHۄmLZ 7nMI H(No ɴ*-g n9"DT` PW&}$JW րomRd' Lo[# Jx<%tVcJx*.7fj [Ȕ7[`Jx<۷?Sɟ >Sy}| >3Glۆ?)%?EJ _5 ?wg?˙?↑POB˻RͻG|{|880M'PAӌ20[,˂ׯ??xG|O91 )#5NwQK=rKy?o^x%p8pˇ?Oq|Vm#<5Bκ]_/>[Wķ߽r/^~|)>~~^~W &';io| ݥ_/ݷ_ۏQ[|ƛoe࣏: y'޼e[o J7w~ |%~o_QH~޼qy}(3_x7;XUv "V%X(>N \anBDZ0۾''"b8Jl'ueqy"{o, , ֈW/I0/o:<fQG3-@@P.뎋yq!4u y1qʘe=~3k5<X`}e8]5ϕ ~!rɯ_k-lh7]zGyK7 :㩱Ovs'k9; 5mYy?\|3(u;m_wo&:ñ{>T]oN \ߗދWO{jlx଼琰op(I8` s=dI8-ա9*-U^cp<9*6Γ̪lo}NRJ$_JO PJ3Ǒ!`zٔu~%W^"Bm \+E=hq>/CT+NQP˃>zRU VA%1Q{ [yvrNOW!'0xxl3CT˥Da4KC6 o`/B ޯ_1̋a%NB24]EU\LOCT(w VGJF$RU96`Jq_wV4/] 3ӸbۖҌW! d|~bc+ h{Nɍi`2E!Vȿ(!C "ˇ*\-A%d Z;gb]Iw֦2Ad`{O7_u(+cm$"V,YCwIf<%<Ւi!)j Iނvj>c pۃ}v>hϐRx\Oh*Jo;N/ܯ^nrIAG>hɭ6ރ@.--| C-D]^/3AVB.{w),\tAN_,n~AύZG艍odJVQΥD'c?vNه2"҂)Deh{+2Q#mJt^:Bb(TJ·a,G:΋7Z4Xs$1w,c?Y0!|?y<8ΟS 3&cEOX80Rii ^G'qhr9Zi 瘤CbckY]bAos*ooZKeeIe@ms]^~tk)=3͘f#_7:P!2n\Gpx6 edyNEIVY!qqJs1Ϲڎ,X.R*vwL76lnpzżR]\PUyϦfS,tIՒOndv>22m$!TpJRX!䣆_]-8;yʇ_Ï?CXjL^0o{nK/q]^7oߥoᔬ*P|`7uvL'*/v!>].mG_Z2NCMTf8Sj6l> 3Vg\ۿɭBW+SO\^`Ortrp}ݍM:۲j ; @4cqJ}{}}aې#[6yWWJSVΡP cJ%:,؏sUe8.;<)//q+ Dm5@A},+k*n(xPJe4>{a>o.al5|k_8:̕?%_vL5௺O'w {&2oM9lR2svޣ(oPγrrW[ZOyN?"w(>JYP$AFrc_H}yԟ.Ga!>b\Ž5:b,EJ[Ek/~EY.U?xƃ¾ 䤬C%\*CO3FT9.R4FGw4@F 8Ø::TTtJlLAFnyϸR rt}{gtVq(d@zBAe "z^t P=?J1Bb@h<@ag^ N 41M:cB4;|1CR%ҋ~{C>S/uAhQl蜍HA /KxYlP*k^Ɇ|sa/,rdT!0*FǦhzIkOu*VlexB\`It[İϲ 28jZkIb]1>I1>Ȩ{9; P.*ey$adVqep (e2A\oňE: h7fH}tNXU Aɣ(C׵x\HE[Qxs20MlYoEɻ5mاgu{Z #EDE%GIaѡ=A6t.DfګA(eM|WR!zBK6Je$ѬV^N'ǀ9=B#+ QN9,#mZъ1)K(nLٮQ%N2>d}6p+[T%*$I|:ڮY]CHi2rDQ g@˂Ӣ/8׮CUM| R\ךmPmSbD)`Ԛ?*(ůڎέFGkyE~d{G^g9w*9~_ѣGO*ْajЪlGOwlk׾ W; RP=a@zd0oˤhXX9;; {UUܺunUQV'ȋoQ_VܺsCpɘf,K̰Zxᅻ<=zD6L&2c5jb6) ]=''s5bMJNvdqFAJZ%6~aXw1h<Ws8t]~0y.ڷQ y,K9߰<ѡ.@$R'^Gc~bbWJLA9y?fk:pdCM7._u0wPa׮'6j`_i_ZS~>~ռry?gx(%I 3FR*#ZJRk+Kn<V,;ǓbR9v|Ԋߥ:v/|MLn&zdqt aQ&31y1>H"crmrkmհxzLj ulێ|. )rkی6lL3hs",ْ b. Ʒyx먗٪xdo|2iKVG&$+ &;OP3cR@Ȍ4d(,C$R km틸ɳOTAY|GpI':^wh k%K 0`ԠxN_, cd23J5h޹:7& ?k1JeFG'ON)Uʝw!A*^&4*oYҡ oiةL+K*!zYVlTY$uZיBJá|LW4l? 8X+8[F aK(,TR|>9КʰiS)xж+ͫj ֱP'γЊuƍ\vm뚪BѣGܻw>svv18[k???L>Oyȉ9(+։nym4EDɘ<7txʓGYFYńcr6m1FKQ2OZ|Wtߔfs<_nl۰#Ʉ==yŨ(D ;;!bõ|[8={ǜ>)9SNO8:9aXQU-MEq׷>=Zrt|̃޻߼׾'W  I!6o s۷ۻ{ĖrW`2߼EY8L^eX4n &[[^öyb{;dF&%F9lѬ?)3=;#Ƶܼ(XɀmꆦiS= `*vm޶}ripm3JY<_vCLh;=x߶m.r24gLmp93+`O^` TT ç w~vᄢ7H@1?a.Aweת%XOdzb˟z !(녻Mz!XOsW;"+^rigW#6f/x{ S7y6o_gc~IQ/ 6}/Y>< g\p˿M|g; aL }C9B:5 " Fo~э}5|>:{}uG/~uvUEafk_a'I"h~p_xG`OStF1~62ig{l|5"GxbͷX̗|Wodrv_ l_"ӏr7hww~!#hm_"O|u_Z,)߻G93Y- L6*oS~r/Zg?rm7YVK v_zbyD1QQrRnld3kٯgl&G?9 y׿9:ߢjJdxʒ7߄1:97zUb}7`z>΂Q`}Eo낔/y2߹a Q@HRE5!хE8ź.SFُDZ֙siE :j*,68z:lJ?AZǻF@Kd$w$UgBVAbqxڊ&+Uwrs)e0mFt֢U֡l)Jkf)L$yu4mQ Hi C32}b{/6"ZqmUCzb:/YN^ĕ%uSQ5]ۡFi'xItMMxд1$_C|ʆ4D[*#b$WR b[٤AkCx )躎ֶCXƙ6}!IÆںy8$~.M]1udKG0AEp!eQڀsضIl ԅBsC]Z; 񩟁mD-K[mC[!jB%1@3jJJ{VxmKS7av8Ea*G-5a=~ya4K_*u!ϼ~ױێuaB9r$M4dӚ;FsCRLUIf-)Nc$ܽ{/~\~SVߧi?&s裏wZ8f<|3YQUUb ٔ&g=峇tz/}lVCcAd +kfjGS1.G#L^029{ܼSM+~\B(vL"0z%ñ7c22I<\JBe]m>]{]ׯsZ(!l#bcc\2&jcL7 [ّ9kMM\Zs~vcjA!k[|[[tmC44mjUSUunu(b>ۗA`pǐU^g25Ch,Nx>u XşY=Ѷ}P@bɒeY.|ΆCؼ2*Ux嶈2'$ {ꙹ6p ,&p%_J_]엿L ˥ {T1ba]IQ [ ʯ~N ؊ޞ>.Y(J^mC`&;=O{"6q 4xfB՜wᨫ9k-m(aKY^rjY.֚;Q*/K67ƃU ?9ҫ<' 9'Y=9A{ v>Ymy_nq_quzc>x(hwp|WIPqK7/͖LzA)6?_yӟ4]i`Ю*^_9Gߓb ,:5Ƿi N~K#P|woxt_ޓl2>=J@Z4YztEzBaUH‰ġAz\^[_i8ɷ0[;!M{_6\|{t9W/k坻t|t)`A)o M_oŔ23Z9<*/}u^~ݸɵ/ .]ܰl\?_R|GV2+ emcwmb[}^ч{= 8{۸wƛ|ٔ3k~v?+E'á%1 {E^aR'{PlN(%md1*)QQ&> Ǭ{%^gD2G/F aL8NAfPm%uQ(,c$@pr,8 HFi'HLV=;O׵خ6ڐ4] )iYy ]?λ8[΅Ĺӆ>F=i˜zg(J-;먳zsV]u6`&'t%&(WeRrm'ߩdQjiJNE:lj_]nayc .þsykSll>IZϡsd8j`YEq8]F2ZUiŶRYǾdJqoCۖc;0?ޡfwwK_/]1IY5Ů쌧O\.kvZq~~#о& +>3 V` JKA($Y,.0 zRHZj+03.3v6G9m['ǔEIQge20"[WZQ_iFL^JiXc,fg|/Oϻ9LJKVjɬѵaz0)6+κ5#_cb5aOޜwBgbNT\,,um;n8'Jv23>Uϖ rF@:8'Y̲ו)mۦrqe0 'd P*'ŧ9>y[0*KR)5e#ZTǍݪ]4,Wܙh3ō1bwWIxWɭ<ͱqVFioPU?sB YR6v68cSHYRn[#%]`5NDyj-|E;<=r(\Y|tL^N1;mzR oy:ٸDYmvj|vQ6b2ܻPK*ԋR" %-\Gh+h-C1G5*Y2Ǣ89arzv  0&1:11Έb4fT4!c b2fJ@D4ˊn&ӝ(Fl_c]ے9[C4uZʐ<=]b5E(td-gF:)˒( {|4YZe4L6Xzun6Xе.Ex&#,i5t&^6Q E;'JdFƔ$hwsc c${&IjZېT}DiBs\H!J j'8 b$b"jm!cc }m  ؒ$YE#N%󔭛XDvaU 6dhh-x| 6("}G)NZhmrq8=)ƻ. EmcxL%d&=a`"+K0 ObTz(ڮMq .0J t`҉Y^|nڱ"6tvBZN5{VNеDt&تCElKgmdNp*揕q!ovrS-cl>IC[p!8Tc~^tq!|A Xyn˪^P:/|y {Y%k^dXd m"EYD"hbN e9AyuZA^6.S+v҅ePH:3僆c^昸*˲=@bmLieYvX':kF43 aWDhc,!m|+˫N8{(t\la4.U%n()A׶4u 񪵄@fp1M'm&F&$_4yںQ2+`ZK^8&4^ӮjV%\I2bmS^)1\o #.>S^zp;^5s: :r+aS3 H6c(fxp>C۫}Y~[l>[o>"XՊdf𽵵1OhKoqmdX0_9=?b>ju61Ú:,er*N2{P9%^e܇ZkS(fãzoHtM,~a9,eUU1L\ u:C|GGaw&\UgTOp7W@ q7?bOOw|V8+"%2T>^~zfX.% g܈*OK`d"ig{2"B gTZ¨у>5p%EE}s<^[{96b?3MZ Ӛ 筕Ďa^v_h5fbe_xԴxrXU e˦Qi9wtf/ÿ/N9._ IDAT?#F^x%>&VaջVm;UvQ/]b/x'  C{_+|Hzts EgƆN~DOr٪-|h56Q&RUhMAR9t KR "cel}H0# t^`aqz+*<ٯLvvɊw@8 ԰&-VIz>ǎ6PE. *:59‹~xQ-_$./! 8QL3RZҘzqNhdE0, N!0Z99˓#QDpJQMɷ6v&.˒YrU\e(&i0J}(r y1A[3?<:=;noҢw'zz *a^9YT b Z76xN6EV}#p'# 8}CBKUgu5\:wn>ېhd hgaG&SRAM:M/A7L*z|tA'؋" Cc- AY]y A]0TxVw2:1AGbI$E"95La,<qi0 A+E&ɂs&m-b Y0yU5޻֮t4>lcjȒzpe\73F wWM z2[5eh˷ϽP{8uҚB)6v\Swq ּulh0w=\bV"pFJ [$8?w<,ƍkeǏY.Et:⋼6lZQ>,˴F#]h4b>'C0D+^6|l-FHXE{ ȵaS)sKՆe>dzZsCVyHk24s3Bab#Gp҄.*eΣsL3K,g47<~0eĉft&aǹ%f(R>h _C0 _#Qi9V)c~/{UUS]2 WĈSzsy se 功g!,E^3'8vnsҢׯR =t(aLѵFc>}VܺqxD׬NOy|xihA@ +2hW̵2#;<>(䐊((}9ߋX΃蔋_/gC-hD?~?Q\O4M&F-i)c888`{{k-O>M_?ݻܾ}-%|<`\b>smxwN~ 0~ mu{]CzeL6 f !^ N7vUġ\z* Hr{yFtHAӜ~Ks^fЦqM?YoM /ճZxUmطj͉sXК=dvy ͩ:[KIb;\`nQ JdcLYia*qNpu!O$[f稞2=_մg4*OuE<!3"S"Ý­V',@Rpa,k|c\Ymp̲\=l"Ca ?R})%;xt<~vt |BmC̘^Eu-,@1.|AZ,zv-2ku&J(6wy!h3 ԏ0>=p0UX,n@I]`1+!ZjnBhw1XɱԢhRnb3j9;gKsZE9u & [!Ŷ-ފ:Z@iQ#Ya{vkWaF)|J OEIߙ>lY,*|;B-~݇ⷍ;q׮PJ kG A'/ϞJԁQ +x䢞{SQ^}=c(dnu- rp zDK%q^@C,nf"p xPڤ E|a;.ȠȤK?hZY>x2ܶkcBQf=K0mwyGR8‰>D0mWĐ wh$:'}0CYv 8E]BVƧ 3N"~r/ڲ_* }V~qךktVE ,횖V,LD4SA »Rm ~Anx'koX;pZf(*cb`hlP~> q7 ]8Ƿ'#ޯv2''MŽ[eYrpp@e t: =zău9NOO9==eX$ HzE!2cÇfZ`m{Ǒkumh)0^d2N 310sJqCM[XȔD(֊`] \ &3Nc.HŤN~aO=w=/O&ܹuZ>~r)eYRcQI0D\`(>NT/cCŵ5rj6'hp1Gm 7͛L66p]tzG𔪩xw!<6HF~O ekUp.PÄy'e !A/ufǟQ>&>Zu݀$E?ʿsI\#S$C9xM.&u%I,SO:\WwY|+_ O_|ƭ[7MnܸUUq}iwyccc{Yg&℣Ԝ,(Տ}b߸4' >?uodIrrͥFtc! DpHl$E&P2=d"EihFF"1$[ʬ̪~p=fe ̼֨q#<<|9;|gcqt|*\q ퟚv]}+)z,,y}Ok>my\siPUE\R}OULJ -&l3 HO]3Fʘ+N_4gw^r"ښ,dݱ!eϯmi'Z-=3o)[Y>:>f<$y#;^;<Ʒ Ux @6Ͽcڳ ]O솱Xot~m ǟ\.VF*/?_u.qx-1:vf/1/g 7rY7jG{s2*Fcb7_\/>mE{sJfէG?Zwf8`u$|p*e F!p\qpqKq5!,/iB<[bdB}?<:<*[{q&[OpgٳrP?>@@&g%.p~,]Rr=z (oESLzl8=x; }Gxr7ӞqC'I'좲~MQ@\ѽ>Ga$]G=?{GR;;c[ ~0 {0,96WR $< C|w$|MMX4g'NBV؈di>W.NA$N> #a70Qv|7dl'H$h񲼆,'!/YᜁVY]'Ro=dsr`@=2$2֢8\05hO1tgteTdNFP75 z`Xu۶jq<"ɏI ~@c D?6&:I&C[;G 2<*2vT'P5%oXfҎIFYm=!0 pÇpIY U3S7؂#1J*T*H.i Mw"w, C6y&T+L tdSC FΈ1K(8.JVeJ$g_Ȇ|Hd<u~cpy17)~OǼ3q 'GK9ą }L x&O$X(l}.Ң0IK=|Imd٣M>( HĔSdkRfNU4;s|F*ދMg$biT44MCuV+|k/`T,Py麎cNNN8>>0k>z0:aҕ$m&¥*xjz^I}]I;3Y+b`ʎy(g(M,2~yY3ی*ZÀs 5ۻ[輲w!|A.X4[n Mb+rTᩩ"_`Ύy{?>f՛VP#!P1+W7 X>G%:q|tK/oƗo׸4$AUf|k\}?MVMXztTD=n򄣣3 K%X/s!xNOOx?rYgLBIm9} ^e$O9WAP<3S}*ҧhfOi @\. ;;:SD7AtsE=}i0!2;&?K`*\Wv\ۇe\w<_W_9/7nu7nk__yxW^_FU>GD{կ0iPQ,odyvyM,\T)llB8毪f6紐)#ڶ؇?mIM{\7[^;Ωs!RQ.V8kT;ѱ]91UzxF R/t==:Ϳ; _%YSGĈv [6va_,Iĵݠ ˎb9#@Xu.B͝]nHT68erW>͍[i'?jf7wʈ3HXwUGzKT0v:)m: 7g{S9p7ɻ{H>zrLm?UX<~rd8u0_ᏏPd R#CzP̺w&TY{Fq?]6z>r#([{ԏhC`p|t}"B͸w7ͣ}#>T x>:>ɖ|۬V45U/E*#c4q'az޻o8+.=;G+zb ~_1 !P%_XQc'O#!H:zssvrBy9Q:MFhpfp]xB&9nfdFޱn~O$ }OӴ Mm$6`+ZDLRX=f^˃Mg>]^$YI; mR*Y%GҮČϤA,nzƴ3 f} h3E!`ď]wDžiTjޗZ0nZPU!a 1$ RjT YCuHc&&l?z|q0 x,5NMu%9RЖC!Ǔk´ѓuS&[1jg9fRE17٤B+359Xgb՚Lx+V};eHq;!lLY!ˇ4عU,ݬV'| ژ6U! U$ 1=^lj.'Nhj9tbuR49cN18Vę{>F@]5MBY:.5^ӃTSvX1DZTS'*'Q4$EzdLQe!8?p"1It|SȹiBjsb6^@HPiQ '!IH5n!>1дU*0_M]4mƊZhg5mb }oIDZXﭫℶmo-I-Fsؚz}o C5dY[*Jڂ:Nin㹋R@{Oc +X^$ X=[p.:gh&+A9aȾF{%XAAl.QBa?x՚=^׼f$ Y4-"cdu´25ef ,ӂ2.//z'''0g(ocT'iSsػkک"LYrL`PTD"G*,މ ؘh$J3"ص fЭ& 8oFMdtXFJ\z{ks > +O9><`1[p03f IDAT͘53꺥F dFdѐ du:Ưpz>O xxFY6lNqf^Vy;1 X^^{p>(|Wͻ/Xc']=-؝dr$B;AFpf$\!nEwy>`c6X&_oCE~*%ڶ-E5s{'2őzFfg{aLWk`~~rI43>g{/vb@DxO<~My=zT_=^x/o~8׾Ɨe/c7`E۟ø6nrv7zsp?^]$̧9(ge'kpg ccJՖJf*٤(!Fbe\7@$؄Sx;hlݯʳC??ݮfoF˞f8V2ZA4k~{-u&-s04QQU+75U> )lO{˕_ycSVzg̫2f=&1B寈yU,hlU VI&}mf;uuGX!~;OIEU7iMU#XX=yBJ ujv=հƥZk_SꨀamPΊ0xk;Ɓ@o W~mC 8rI|XF)|,PZZUo9(χ gbOB cBtrۻw ~`{{T!Dc[uEsk jU.k#I%?(/F|R hϙ!MKu]'{@Z*gP#LU' RP\1ZpDMB&\7-<q>i'w# 3ɢIٹqm\!xQ5m<0~rsf-&a,&#*Pt懫j >DL^RqZ%1lC2 tQ3T ]wX, 20Ua`sV/Z!a6n/4][7Y$$sq`{ժ-.@Zkʄ+~c>[[̘T[y(A$u\c ɩ\eXsI'&+cM%#5Պʪ7G8ƀZ%f6eAMzU¥ 7ČSESz5УŀHʡ* ƀB91rvËwFppُzUUu]Y\R޳^LP\Tu e|u0  $%1}tjhz8! Z7X`Gs@9Jcp?f/dhKLniGDS"Y\q ijWAtR#)2/rRh^8%Xr݀RwU&ʐs+796O1,jl蚉fKf!nꋐk~Kf>\uVouw> @0"OeǻCő<"^%Nyvւ>p<wvnH'ŌL^^fƣG|ϾI/˿곰vۢˏCwCdI&u~/W&q͠\\g,'Q޳%CwC)S{TÆ2נXڝm| 5DO| CC0?[zJ,@Āܒ~ҤU,&v8L* e1֯ Ig[. 8fGLVi\NJH2Ob%eDɃr^I85 򷘖0Wg(mSh BEmfGa%guP3_~g@pleb$ihĂ &+zq|!BL X`dg(gjcIw& ^[أ7Q? F$D\Tr¸$L"}5(3UzѬa8>5{+N̆Ǟ@[e㔻%{|AΓoH]!UCuT\ $ UIB10nc]c"[8Dlv. CnŘV4Q WoW0ʈ=3RlUm2+!zML'P9g wmZ2xˋ3Ср9ˮH^R%%Or$c_3+XPQSfJY BY7 D߰*GLg]p5lNۤOIQvm޾`mTXǺBtiNa z " RUTI?~)2daByՌ\W8M>p庝RT"GcY 'j!lϩM t$XBa0f+f- O^GUZ,]bP+e`KSU1栎+i(X=}iȦGFT,BK&Yv )ySQZr !/ȹDzXM,Xqnb}DZr4VLE ҳXA\uscb5^ܨW0Ih*7FU3S^3$mNpKJRXSࠀ;c4a %ىgލC<94"0y!\96@h^1Wqv©F4#$3(UO=>NRT1cxg<2>^/Y:#CuZ 1/e-D^.к,UOܡW~|}^{?P(J? 4M5rŻO wŏ}~ǏSU1qMˢJϷiFҼC$cp/?d,S8;=ptvRdd!w> e-Ҝ<[8jLbZ^'x1$W^oa/>lӟuhTNBD_-Y#С!-~5>j{{sK F}rۚŬnhlXO=3> ^wn+d`hޫ*i!\.YVž3?˴2axsk%;;;O>s.g 'yݼ.~ܑ O/~??ݻꫯ?k믿N۶_%Ŷ۷o9|+|G?7voLLgV%\h&,GɉR92XQ6%U%8/ DCB`9V{tsoGlc>tϼU?xF ltW3a%bl`25BxU>z}opn l.W% ݦϮmjLxi 8eCl'V8~Zkf9:γXc<'ͅ+TXZ`4$ ]6$50"L|} EQ5FJk=[%5=rO4졒*6/.U 'TA+NR?@- ԬMm12BSPGҦǖ8t5FZԚmli◱`J[٘CԌ'49yi362R&g&߾hyݘiVǔ/ΒmF!Dj!>'s X%FIFMz Tg@3ϝ0i&v} &cQ}eBfpU&mI"oFᬪ`x?x.CHLTfYl{"^t`ؒR\/?5PPlԑ-$o錭eOJ\5-X-6>2,+a38s.ږs6?c\U53N)3GQ> } hY秙"6]Uӭ/Ah*@&1r42ZʊצDpa[/Tf 1M6ɜ@chuadcqlXj>M(KpMDJ8Ս a|)E6,h2mSX $"HT:sԬJ &}M2ї'{BIsӊ?E1E&ZS؅g9$$'"S<$¨ dH+GM.G,c҃ I(GY4(Ht2SWOC褴L|p*b8(㗸#D$36e=iz1a0&hIgL ] qR)B1g$ӊ6T5i,eO:2_#FhBDM7>&gBw;U/6 hTsR!1r8Bx?QXmxN,*i3&òBT$CcwP l\ҟ1eL@%,׭iX,ʟm[h2{O۶t]WˠU_ۑMU5A򃭟2h_.yMR75n_& =?z]h9a6edvw:OfVbУ`ݚ{3HI*+:@Ӣ1FWU_YIv'IFx;{{xӿD̯:pݚ1u{简䪁sj^<1O1t\qok|^~i8;?>o 71KMkٞ^hۆiQj͏83u] r,E>̍7| q3 N57]?X{d{^o03;_D899)Rh"[lj!Cs28U9i?s?~;w}6Wŷ-.//sw`:!%pMڶ._WʞaǐHKouY5F p1c//y_3V2e])ĊV]tF($IH,2DG-٭$)J(Ib@xR3"ٹɬw\qWϛ9tuOT4) Z΋!Պ_idpp5u~<<_yqE׶y<K.h\,d̂Iɽ6Ma3"S< K߳/1$Շ s/(uK6(hE~P,wG' tN r!$l5-f3̂:=ޯWw&lTq@N@C"oDe k)06>C+6ReT(תG"6餒ISp} >}]8JiP11 Hmںɹ $"k1 9늠Z/ld'5i2 Ւ*bpD6#xO]ik؋EעU`sUપT&C6E&)BRuUDE a He| $e=ID'* b%M<4*5 YY` G#h3eMAiWa|⃱泆^ӧ ;7K˸95Ѥf@(3W$@R*G9c,pe䴢̕褬 IC/gQ#}etܛzCu}J,`<{`鎵XJs-x\W|r,ϼi1uͅ*ߩUDm'߬jE8=Y>Q䚿3!7tCޤ2XUUm2iۖm 螋"$0u_jz!3M3c6_12 =MUk*7 \d胱h~"EON.xI||>py0omc|SUV%FPYt݋CաCǃs >C3rT'l؈V?K݆ 3鳉qj={ `> /T9?Jy{R\3ȃGӣC<8 }ϫ/+J3qy~CyG' mKrd IDAT`z]W.no6oUCX~(Ŵ~|AafEeʘff2V *]ו#3Χmf{,w`㼼6]| v^Y=S|^SLϐ״)=ՃYUU1xw:o??-wvv[oUv9fʯ ٌO|<~F!rWSU<m%(SsO?~.Ol-2p$y ]~)x%溳fO@ KM8bcomHo^}#|!g=:ysگe'fWv|tq^S4/RUmv!XKt3ީ;K>n[ v|j(.cUϧf3>=/-ÙL<*?:^U<߶qq ĺ~W~,2m3+;ޕ5^ B0mɽUjM !e1_sgN0IuڪJd„쇫D-}1=E]^T3ۻvF֗+ {DwhP9dJl#a:T%`Q4KQnހ$ DaϚ1_HG-;;X4S-0`q^wc:}o@U &"bUИmQ!dOTssUyW=@V`GDxxa!=q 8sqAC$T艴̒7SIdyĤp5UJT@0<I `AFi/l軴g |b9i4YK&EĆ|! YW[/|{%oP G[b t1 ~M-X3 \O>4ƲBY75h5*3],)$cV7U&R9Bf V_5y[=V0awgq[3]J2e[Y. r&aS D]i2BݴΤޡjii8=옾[! O޹ՠ4Bq^ebWQA]MۻԳXYV 5> ']\qX0JD#TK"B =*J8iwY2bMvn`}qmNxlƠb(Z:xET1̰USNrg=ޓ P埍C8%a&3ʮa MzߢD$  *~ K@q-W$M &@D#N਑&*Et洒X EDEe^Z>R̳(:.9y$N`A.7P$ƥJ*4g]6޼2e3qIFS:e)%iE "0\2NĀr%<p Af+m$)ė 1]1Owy!i+Rz UvB]U36X1{Jld4OĨ'f`|NےgES%?_NHt8oD> 4ѡC`M F2,*~ƈQ$[U'*9n3tHmO&L t ,ul6ckk|l6+`RMz.r% dg7~"&rs]XF ON*E[n޺'_ptȘٌvjG'3!PМܘƛ\^!gx (+L |1 t[^jkmqQ )_5̚m 1g1OE2IJ/ү}6卐O+1 ~,gPDv z ay>%y>k,8޹>O eVlo/M1?tL7ʓuu _})s}7,ub(-S)̔ϬZpF dO so^3 S5X>K~|iԩM0އagUWg~>887x Gwg>ݻwoloosM17|#m/s:9?WfL> UFh$T^Akw O@J6 m.L?vm j[$'|A[3%Q!(NjDP$U9kgz͊6ոFU}q>'^|bcT>{摺jRcѸdmOM$ $XǮ7.{>7oYnSqG>59aƷ.W <^|i#|*~.;fUqzR"}x(ߝ\JcbnanG;/])/P8OͽxfgN~uCiB.8N7<* q+j(k^ۙCߓ_ڌ=6XV}RoE1,wz4&j]-N"QjS'vRcrULdpMc?욜 ddq8bCfwA#LZ%aQFT3%6#*K&5.YS71M:F$Ih tPHT$F$:Лz2IX11eq#b4`EOc0ߪ*궡iH)Ob*Z&}i׉ %!1xZzU !fvE֑P2UB{λnB'OlˋS$dzNYoX2\λ #-(w0@>;n4&U4eUb2T ;pƔ~5S cYtqԑ*N8UI+rL04эnmV,\'gCIX39)-P:9XA .J_ŐWIRFYLȃ@ ^r oH$mQkl'%JQU< 6ǔ-:sT3Jey,d`C_F{ʦTAkBܨ^ƻE00te1@I)&$3mrH$x34 HOzo w.0#8^OΘO10Gg8~Re!<؏o#ǣN.b`ණ8#~ǔ=3>ey2fYaf̒wqvvs~ N5BmUm[63]>#{V({ $lnO~G?yߣ-?i)\k㭀O9<~GEcCr=k91Xl[LĖ,ғ@ɰ 6f>UݘSI_aCFaJ4Mqj>L QEJsL,XN%CBiXj*GqԕJ|j(DŽ@̳$ErT~> 8MZd hKֱA2D5/;uËs]ͽ~YEn+/n7~q{C`ݪŌI{kÿSy%/1aݑeTY U[󧬏@\z(Z: (ԧắ*bn*.Oωe!Gz{֍qrhqd /uP Mm! ,0 J'BHJށ$ϩ* k^c7bBJˠ7ڤHltn$a^'K11xߧB)S4} FdY/y\,vgFHCod]uW=hՐGSȲ0#){L*vN{Qih1pr,m7`}9WFYHi#u 34I٘nyݪ X~p~V'y\6bSȋAL*`3>%L2ɦ, *P N^51TCC=!RD I]#D}!P@.vꃑ5`A ["+SlLMIz's1>A*Curqvd/;O|Oe#n[ǤJ?r!4vFE~,i1;_SA P:qF[W0di2[:jaXgZIESD p#gqzL= R6b,'܀y64U ä(h6NU>.͌|#eQoՉ[:yf&~r Fh)0kT11v%0sF`+MUk02E Ϭ mF-`׿֟0@*=l7-n%HEǣ,1m]h*Un߾ͧ?ٜv>ǵ UPU5THL '3Xiy̆<9:|*R斔.wUtQ*WUNebud>^=ki=JUˆd>|_>q~wn)=tM6o:+R_&}5'[dmRjz1yt^rq|Ǐ⓯;ݚGy=\vA}:Խ$YvFDf֣3=w|HJMAŲaؖÐm&@CAZ(Qٙ~WWWUfFĽ?snDVwwǻK+̈q||~ )oUzދk;=g~L6RלqӝDZҸ:Pu]tw=0hv#Q3g |ZU޿ߵp}'7?)~\,'{O~:Gp}޽[o{q9;;~׿'|Ÿrzzł3ݻW3nIfjZ_fgguQxymO zmPU^fGl?ˢ 5%MX,4) ,ȢR0dg)cIH!4(fH?d9rHFɢlJ~A~sFkw<.f.Ž{w!>?~gm(861c~ ~>U[n8򋫎'NA}E6pghj9[ O3<΅m/w >ڌ G9Hy~¥cx?+)/x_'2fz3.)>suu#iLqm6'bZSH]3.#3nO{vѱwе͠aj4ػrщVLsLU=ֵ=6Lb>EЊ3JeG4^SFj+z!p**``BtfG,dJ66vNyqM@BR"l Ja#AK4)m>6P0MOo2ӯEM#(>edc,Q65ݠ y SU(ƲKD:|s X6PܳOmZ[nmGQ{hʆ2XN572?'ňٿiǣKp}]Ī@Hn8 ,|,H:>R~)Y_A, >@L)^D\ɱcUNߢ>b÷?WJњtpA*1ҥRXx޶8Hbn!jrY P#^Ee"Do#Hz2A"0 JǽHX{fo8׉ F(@2ڮ@ƁD 1BhɊ$; t&WI#mJ2nlIX"RcqJT#Pl}Bp>D"Kq`J1EĠ׏=q(E6O" %SJzŗq8v.v >^uLJ~H!T>@TDFXt˖Q}3Ćش@!Mٍ`<HdF&L%5;8=g[n<ڜ>Xv):?BSltR ܷGmFØVJS!i e4)%Ϡ $6x58NfrHsL%6q@pva1ҤDvbjY9b]%kgʲVAĸ[b nuMۑRSE!H}\D8:,5P>9ҧ&i9[i^tO CsQ=z nxؚgEfۮz|kymucڌI >kE쮋%q-%NE8upJajPBj LXm/;֔dd HZH]K!Ɋ87w}KqV@L ۶z~hϙZ m%kw#3#DnI<6H+-cix7y5m>CN?Aת{P]ĮaRc_tgO0u`TKԍя|k2`_4Tm}xydܮٜ=~θ91wާiZynt{?̭G*(&ZtCKm:YiB ׵F^._y_9q9ܟ=lsV{@3@mzPw}4E)~;}W6cje^OS͟x@߶-O<֭[.]w~”7 IDATw׿v6o6Ç?3~m\zMu*0"PH2;gȿ=֢zZ6m=G3Jֶ盧p$\!ޢXp#mY-82'?? 6Oy+?37o~^u/Q?2 =BM$`ZJ?=[Hu|Yj°;R۲\_<VAZ8/9Jί{b^>[o}zI,Y]:x}$BɌev-PusP`06TMQx\bmf`u 3Ml){iD us "(`mPޞδ'o"ql6-e'< JZs0iΨ{q%K>6"\1@6~r9)(Y8o'QO7CԜ^"|0 ,_[txJj"-S?6ey|]Avg瀻ֵ3ZH.]Ԟ<dx}dk"Ah#wѵ ix׹y&}G]B%ՒHMk վ5P}ٿ}9ԉ|r|ٹ%YwkZ l63Zh @u.%BJBw=zw->_WY{_&Pl{{/窃SE8lקm_ki_:ĮG1%Wf7_zTcj?f`qʻo 2j٭;D![;|M!=Se?9#ei]9$-U^9P찘9\f}i aRjdqar)dW:]F"MTF"S1iv`hJSx_1Q9RӀnw۶1B~PA`*HMSIoAƒ |%N)tڴ4fU ̤"qH!6ۉB 4m[c{,XIĦl&\5DrPXe] s-Kvc<(H, Z, 6A<{64 6;jH.p"Msegw8)S烗}I{Ь,Ԥ:EhceT_諉PUO*P>'c-u5EJ)ɮSdVIouҤjV-3@b#6hq) 3Ppn扛rhG11ū+b5Pl,sv7xD8c播a޿E$ϥ m<`M6Ĺ8 ( H-z&H|^kMuEv;Cs{"_I ~p"9){!pToY/v\ A\u|Q.Vecv k6<xTWqQTq}9irժ,*)〼X>?W)EdDh慀OIR)ґژXmɵrcN(HAFkvރGt1ܼy_ynq|VVtm$6EnɅa> ͦVEc{RmVq&z17R3o*Eɪ>vc;IT]Om#Œm؉3}ϯoLVخG&< f9n9挧Ost'ȧSNOy7y Rx~9w3IlRjq%W RmPrra.4Ͽh-^7}^9>H +8u]99;ܯnO-%"ܶ̓ ~/s}xksy.>h[n1 o&szz͛7qwAD׿οW7|m)ެqY/2׮]ϧZC5xﺪM)ț>\3LKv;vf)?{:$TY@.cD2%^/ y_ DIzȬG#Hυ~iRb1D/iQ%^t.]=զ|gyKVR>F9o-[o#$jjłctt%WDGl-yd-HG۞.;6%ǑO>?U`/|d̰MjUBZ1ʖ$rE͆ʫ/sK7[6wW-B4{,]fsxA6{Kګlqva9Ȇ"p^tjÄ 69AiܜaUMP}+Q$`X;QZ%Ӟ!k/OV,P.Wٛ#?}n`vm' '2kRȣV)&nDͻ9QT*KE+WL<0 |: pIk}r2a)[rS%sjQYG\b%xLWR&3RGjс联BT0U=Db 4c+&jxo2Ϝ23P0@{6Z2v&KhUdcO1U4Xєa0UG)R)%*"1%~J ~Ts0X2cPm|P\Bӊ{D'{ĊCb}mCLcaz8My4RU~cpwγŎ(V`Y ֗Ńw-Nؼ5&/^aݍ8f<3Oh'u8] n H \hA^+J 2p *`b`_XSSg9AkybQY&=MaZ$U91!R'uh,Q4=9hm_f'/QcZ|A.+17+Sϥ&|J (hSNE1I ̈YS@IOJ5c[t?2Y_ݚf#~)*8nqwtַmqw߭@v壏>:?~L۶K$"W=;%7UxGݞ$ew> |缩~mkFEv fqѤ24E3-뾐Ic9GRmvцml[6B53`avϯp>g>#΋<=Z)AW ]DF>d9K^i#;CMfON7+FWڎ{M8ҋp{x%ENFm~@2|p?88?_gᅏ ϛ)k+c&D$xhiˆ3>R@/fk)6gקvY*Y@F1J:?vp{pM 0tK D3>1QF"QDX9 FўE2;2"~UJg*z%ub^PSЄxivGl mm@0 If|@/PI*yNRyLgGВzG~8(it4M17b)%pKMmC6AxV)!12~1 %Rd(uDB&پ&DOZqmH%!%3_ޫf)HibV&-SOl&otwl &micr!Wlf", (P%23BFⴐ}^fᓷ>s2?K1#e^Mٔ* } T-&T,bީ)7=dkpY8j-5 遻ڈ)kfo.k@&)8w5& 4)$`qo X"PGm0cT8 KAT:*cZ2iR'&y4;ӚJ <M3Ak)SqM!k3˶K!I`Ѵ-:'܋zoѣsV=V{²߉&vE]p?ʼHL>e.9TzZ QXR^-yh{mJh'H#ap1D[>y?(l3HpRm#{8tXy\ 8K5;Py+7l>#<9r 6{ˎ'rOQvPkbp^PȴMj :$eκXa^e4;v5Pks݁tJ A.Zuln}>Ţ@M̙01rT};>o2A_0 wg;S{?w,zO$ًvp;bV+~4~)%y?|M{>}8+m˧~Zv]Ǖ+Wvdž/lb{& c qJ&Z3%j) IDATB g-%V 2L\ Mbp,mdxo 6i2"pKaٚvkIAF&3<žr?\gK_v}]WY*ʨXK1iqл-Ӂw^Z(W7ƛmCa; 5.OH/6JL1sɲk[\P~G}U v3VM":Bϕ~`8]#_tSy=0<]T ]OwJؽRaxgڟ=/(Կ]:`uZTy#i'ǃ*ytq"]&JK3?E2;:|F"DYK` B+&!b mPruLOk=PDh_7 /iL%o C6.G@C?-tJ Vmhc(뻋lnɜn=h$ήX8&TK$*4hb*H6g1"mTRNH* 걻Xr%l0 #$U;zZro\1>jK7fS1r1ͪv?T01;%UG/ "_e".uǂJ.aY`lINu#*9"E g=zPsE2ej2IHRLvAGS +ԀI }vjp-a:۶)=O1[~w>MfB(UߥcOxJ Dc$a-Ly4 6Fq~? 3/O&\lْWY% VplƁ&]&gQP"H)X''OD\;P>Cn2rE۪_ZBuecN (YB4;0j_i@1%6Z#@׶5I&yZ%PmŢ%..wW SkJ\O,\l_ut!?yȺ6m7~7r i2پ?q"wk2_7=+aز9;y.<`w'ܽsē'nEQ˦ciV͂#0C>%O՝9+0s|}שo_1j9իW9==e^Ws 5k_2ع Ku^? RSTrHj/9//l6:1ԤVj8Z$5 Ku ۂj{&@C`M7OuEc > yZZ^᠝ |S/"U|Ǜ/T3`h 6,(9W-m50+Q.ށ ė v\ Gϯ l3cl֎M`4E굥;ux7\'޻ɪjN]LYyNHqڨ9#2-B 2.}~=I5M?W4]˕4K˼eCʲ#=_dʅZU Hbשt9\d>*}ʺa|L,q赼 Vhww|LFștrݱ[Ptdf_ωHLf ƩN<Ƚu?f096:ƺNG!ڰ[OHgu=;_ls.gQ: }咃ڶeZձpn=>f}zfU 4j8eS l]niq$D cϣG)\v"|Çr^ԉbx1p Boj&@XdMv'5VcgQ%gRe{ .ax!/q츴ku_a̙͆r"%ȭGOs.M}W%@f 'ON8==on`?`Ѵ)'Ops?:=ܿO׶;xOO8sÇcf[} T9[PDdFDT.6zqI d2;c?ԝ3Ln.""0m۲Wy`?ǙQ3=!2/?Q 0`EEv ,/hk_{G4UGX}conַǏ8;;//v*.V=8;;{s&/qhvl7d/\GBpxg7&ko:st=p-yۙg]pNHXa~cS$<|.@/2r̟:o-,TvQ OD!H^.6>glZu\no摇cI.4)҄² ,.ʲbq_ 5U \k#'E%<ٜ=~kVc3>P'*{n Y(۞ܫB 4 rAZ!skZ$r5;;\b13B׻#wqHՂՕC.Ε0eV;X.@ zI0W@HԤޠ́.8kW XDT~Ŝ']6 *R&6IEX#{ _d.>L>-UP , 48 M([3YD[J`Az=5IMڊDdA`XOXA*Ec5PR= b$8PeTnKa Cƪ P,8džjpa]LCf>yՇ !д^7ӹSU{Ɔ=q&n, m9P;}iԡb.ń .Sf0UWq`c;[q7룋;@QO?%UlLc b2*X||YKvq_l}~D Y: IqK~{%PU,UY1Yz⥢pP,V+$n.=èLU= c1a{{~aqy,ZɥtǨLcקDh0=dOǖ85&wv OrjK'aޤC}nՀe2t`zdݦ~Lw!( :lrpI&^6jz/>^I7#?ZmtqYqH$@V}_eȾJՈoS PG_kn5aQʤOݜoL6E2u)+z/CYpk:QA,AX g,q7ٞv gϘv! ƿfLOJ>OyԌ AUchk&#YDPMrysis[R{ Ś%:O_[Jfwkz!C7s>jndSeSӭ Z)`2#3>}͆+Wpҥ 0u3U}:`N4v57z],^yN 1cmj윧0ID }{ƒ?]SH*֪Vރ^ܹK b+Ƙyp9{}=ve 1N>B2c\:g2>"Z)"YjHu5iRdR 4h8X4py 7.Xn,ye^:`rɲMɦyXm6,aK.;pos長k|\tUY@D!Q s=z۷gqx C<8<čk//WxM.QGgǏt"^-9GGw8{f^שC(h8Fer4)Xu-%69  4q%Oֵ' 3'nN4K)>yX.R8??'Xr_SŢڑml6x"eLń\|<7ׇYii|k}>n}}W63t8`| }g?&=q~~Nobb`oއ(aS"Afua^3ϙno2\w3R?YU>2}ftWŇ?{_ 8̆ e)Yvoj 6cttA6+kSE5ە xioxb@hxmFCq <FrF_6< >+{ k!s`y_e.}QBbu2B 0Y#*AA2]?6q6.*2N3>0*Ƽ3/ʎAPmJи^mDY7)<:#~̎!Fr >c~f@|o?lf&ZvTt>i:b^Zu]rf)8:VUs<OWW^:Պm9;;cnv6Mv8iYBj22C?/H)o }O۴]K#"*1`Nk.~٬{ox`~>Xߧ[hR!~6 #̂J/_o+/] >.NX v(65qR^˛׹qe˗z._$/7YRF6]KjNҴۑ7;DbDp~!>ܹs;Gs|sqPM'coojKyWxW8<\^S<8f+9yr|B4 qv?mA%` ȺnLqZnnnPszkrz~7O47{K80 60QL![W1 UFz~̫P*H4c_L;}VUM s@&z;~͋Ţ^~h~O_899ww999AD9::I~`Po /6pfDYw'&{ S%\H[_q ]#'0}բ@?B.|щ(0%L{zJK^|]?ji^(kV*f~lI5{h#2dẼZMGgg g'yAvAᰉHhxgbI.t>\,"웬k/uov}53wK^(IRS؏T1 F3Wt0Fjgͷ|^ ngoL-.>X3{Ɣ~oNu({5TGs%\[ZG-:$Ui91O릗k?I`Պꤠu2 K ,i A"BH5H@ƬZpHPe93F8RwR&o}Rob4+912vlȫv3J ʆ>`) l_&ūƤj By@iɇbb~7{\6M6,Œrw]QY$m27:sDƵGђp:'7O }"`E#8B08g~q$v|L!XIBĈ2lWv}GZvMg/ 1o]6ٿ _d2DA1ۣj9% ~-˻~Z.ӌ'Y.iS.q͐ oIGڶH̾/7 *3Pvف [D2og?0 &SM߹#0LRrg7$R,1!b}ETԋC Fn!͊9vMmjMMby@ 5a1l65'9%[ d0|xY0xop}q Kl%D"5~%'CR/u*M"[le=*o4 M}\Ҭ' QB!KE2"QjKI6q iYZCL\YբM*o,DMlqqw !wɡ 8n?E$];6Mō4ܣZs`}lH޹ y/aѩtג©ɐqPg;wUb`0$9#-c6#kюf!1Y%́BlRXTSdL6U_L 쨎=̈s&L3}%dׁ&?47T9gb~a^\\g#>3?~v99ptt_9>ri@e g`{ks¦`b;#///n&ibT軎з&6\nt}UPvB$ ,f[|oferçc7>X xT{s?y>\Ҝc;}ΝdKP\5IvEDZ4iC;xK>Rx&bj56uD .*}߫&AM"oE2d4\jOHYӳsPpjb* *=J(y$%6OQ^CX (F{@Y1",nR} GhUͦsK`LP,$+et,e$&8Fb\Wa|d7} WHԲJ-k el*8{^|2VKR.L}'IL1#g[%j2I~%VOQKz$(CѥCQHZڤ9 VӀuM)LΫ 7b]Ǘ&ĤrRyv##n'IW'V8Vw+rd|:b/e&gqPR˓g 0~$VwgC%H .nF!dXxdfKc) R}pU%*e&pjvN }[D ?4߂+6GLugƾ7̂RrFEڧ_evl1{ʱ~4xꧼ#͆J`TBS;sjg\-mݰh&# ׬QC,6 yٕӺ NOqu]y)`d2= ׇi])uv'Pϴy~ey^WblR`+5t:9pnibe9'_'n*3zrU6+m6f`u~U`؟m0.kt$'v~r36@ @D`q~'dd:9M ײNb z1:|q͸`|Yfp: hjZ@Hj_QW\{iGhb׶Dc"]gM%IEw?g/gh: wu[T# Qn~SDas~ײd_t^'9=D*]O>W|?\oi鑦b4wN10Sk|0 8_Ȫp0{6˻KN{n1yz/ `S-?]_ofNQ4VnYgH#[p~|͸Q:ZѥXAҚ^4׀+<}u*x")&bDSaL-@Ǧ.yi'guPiG0p|+AK7UhZ&zKM<Z1{3Sq$ݓ;oTNy*pC f8fc[pO@KUf@~!a'1+=(,ֱ`PRq+ l+Άg^yG ؈I@tR^Y-.w9{irz#Q&;QF>2;ce.rîbL#nV>jK]@j՝}#`mVIa% C߹y.Lmm«r-C'FrΏ }q|`18i7SHve1NWocҟc$\ϹhQnJxBjϊ!7]iL,4jIn5T#2:nV\?:xnW.=l7 aGo1%#>[ԇ6nA,ل2$\ț cp-"YS?SjF>*}a_ 4F8W6"lQqe ]=(.ŘLsz^d0H/2SVj_NskvG:NEi-gggt]G۶/myll6+m\,dnzbkj}x'xg7!m7,eӢC-~C̝X Mס:ˆ/oCK^~5lxsKm f/Nt4v4~@l*^>9/aw up ^}>&*Tb`{̪ŌE]lbS/hz67*(m44f}-]sB8fSa46.+~''htS Go,wI{vv@wi E/@'oC~އ\^}ggWW̴[J"}3IEioFڪ[3 1UB̚вNsoyg@2s}|, 6 |6rHfgp>9k0s>8ܧGߏE`o/9s*6 4MSu̸mϚSt=yk-QjdvoI{a@Xp,? 4ijsThT)EDӬ  f*-AE<ה\P"j+3"uV S d T5z}V AA'"|DdRie&c k$^+Nhא|(2/OP>DM'\aPpj:+`֊ ئ:$ 5jN$4 8 ;t- Y@TuKf~L@vF9>R.o/עxS=  # !rqRΰ<~1В([sQ5 ɄM54W_2%c\cmF`A4QwBDbI/U~Vï-3UTiS6i86EI݅rΥI(S:73 ~ gܑ$բW`Q4'X.uCTa)Z:#)5/ !Dҥ<ާ6_.rMa$]X2 bgbB,QRa}@ 3O  yԟHދ{'-G) E$Q us\QEɄ$ #'#yO膤4NvQz!&}oI)ƘJJt|*V i\YyO;_P7eB#" 9yc='a\ UUǭ[8==-`|>g>4 z dA%>X4 }?V,% aصY؆RuQ۰$!F({9M3w~$S>|||ZBڌejii5-_qčyż~uCo\ Z1H5t'J*E]s4ou|#Iѵ\TN_uÕ㊜uR(cwW nrp^ō$B9(:}n]! LO`ڠ>F.B4U&ǵsQyM_-VC= IDAT8ʬ"^^r-w* \7 RQ17qN ȟox7RYmdN^h5p,֑!Ux8(s7pxb,&5`Aޒo|KT>Î|m)Hףg% rCƂ}+ut?}@z髚+Gt?}Ʌúb6cG0n!DFJxORw Ë^t.Ehz&)BJ9!cN $@ΚYrzx!V:H)x@Pk#\ngn)7"}Cqc*¢PIǹ:iY$ll1!W._;'b )ڞEqѮ֘D{_ȐL6bDl30ŸgBcQ-Vbt)*+1C8LeP\ȅ)ƘҚ~o&KcF)F`uIe=d݄.U6\fkڳ"ysJfvlR?]cj1&_̢v|BD^੪e+U)`o0d<& ,xХsWe3;OE@eP^wdl{Wqo|Iaw.KgZ೮k9ӧO9??/h>j۷ S>򒃃s4m>{{{!"3͸ӧ^u !'-&m ju[ڶf1kC׫S:'O;h[m/Buٟ|1gXҴ3{#!#2R !|`qp`oܿŝ#Nn0??Ӝb_q ^V<]lYo3 ~9M͝_}>>7iw .₱d7Oг"e='k~ÿ MU%Asi- ДfkoR2!6 ggm13>m*4@oM[qh9[4K55Tb9lv[ =@#mOd+I1\S(9[%0>qqPV2>Y=K6evzfg~*%3]˪*EI{.̞/a ^ 1}۶;$jO| RHٍUWv`M`NlN{)S`Q2'wp เnY'ϐI[{Yӂ)1D|30LɃsı8~O0’ɞصZ5VɫlM~R I^;GrISI/>&9=O 26R_9}iT:|N/a-cag<6w̸o[ڽ|pIfvw WFu"Cɖm/:!Y2eBbR'LȾDPZs( 5":'Tj،iZ ! @ܙȁ~Eõ 'q&3 P #Fd!飓g L2@MF%DMYª(HK3T{m^Y 2 O&ˈ!Mg!Xw?㑄\)'I33%pUo%Nx#tsѿm*0@ۤD旯 T%ի[3DRTQ-x,|{ɭ R1RUC5o60 :Jy(%hҝrmZ;yZ~^@W:p t!=ᥐyzšhO+ΎZbHN@NM@UU)"itFEn/?9pc$͒@uؖ9iS>(D!ieT KvٜJgA>OJ,b#dNtֶ̚6c;b̑1"br 1&ͯt!c (+0mcS_.F;5!m8hZ qh1GFItqQO+oByIq/d"@~'LELc#4vw|qFGД2:;FY1 / nijmsjLwP<1(QQ$f %6kI'Uzl3u\l^V_T/38TUٌrΝ;>=988`>cd\rTel?3bszẎ ZVG>}#1en*um!6vk8/tÀ@{nf[Ϙgl1VgY.(GK(fm6=z[o|vf͏Λ,{,f+Ou\1VDig5,絗oqz&{l/n޾O;ki 3>Z`uF]Յm>o<__9{zfw3$Қt۽3D$:e65g22H钪ӟV,뚨>m}U:řtr>齣J,'lȦXforkɬqVV hֶ,g3͖zc,hR3mpW&=0a;в_4U >gyYVene٘v٧sy,8vϙ4>jۖlV]kT*S?9.A23쇜sse~ů;62G0E< Cgv~UoRF]rj^,(3Ϧب" !GaJ,-]0IċȓaLH B`9N#^"d̽~Io|#0gg5Xܨo-ʇ}\m{N}hB1pcy*P 3'5뎻kn9<_n[>g0CˆZ`.p<ᆏ|2BjgOw>'J,=Ι}j,ɽg !7h\]Y8`_A5-mw>,~tCDe,3;pmu|d<˖,f =`  ++%b^;&+vMRD+~娲 I)s5ZeMWBMli,1|{1 8C, !D?I 5ʐBT''}ějtttĝ;w8997orttěo!nX,8<k}޽E;b \,(FpI6'F'(h40xӄ$9q`X_:ŸQ;pЅ((K=&d]ٿ9Ciٲ^oΌHo9r+>**s[ϬiR}׳lm@?`>Su22# iG;Su x:/zu&e\.߳KfO׭5SpzyXjfu]cZ@>-;})p;܎ivWkZ6^UU;Z_~"k@g=ME7wcɮ=w)]f.CE郒]l^PsS;'U,2c١gvSP|vpQƑ2d'wubfaPcUl[qTvg,䓓[\MfzđEǧ+nVrx!;0V!euzH.Zxdcvݽ{sPsB78'uMcqk#|"KTױ_E+1('7pz|D/F|^b)[y@vUXƷb1\ P( ) Ӵm0gs$ ٻ}p{@z\l{VbIV[G^.hs6yC}o{yQ/ׄ&y\d=X%PXIV#և|L,K?)fQ͝wYݝO! ~aMK02LИƬM=}Gi y'BJK$A-@b5`FЊ]Ϫ1 3֩rHAxmPmò:73qk=[8vա>هlC`pqk$ X S֊mӻԼ+_v!Nms_dZ%=fg76uG-)1֣dcfw AƑ̪ r !lni!$ӑ.Y'cYF+ 2lPzY f+,9 Q9@RASI5B XբdKɳ9&i'eXfєu=.5PXt4{$xZ GUmu甋q%;VuK{7)$;Mbϣ`[?_hs:rң\DAkIǨIb̃JÛdne LH=y/ :/bUu͝;wJ :qMnܸAatn6nܸiao۶\/P Bm6r3#Hٺ]5_=^{...XVk۶$dfS@6h3@U ˃CTX׬..uU_wVN>9#} \|_SZⷾwB{?cܣqm;|]ٓA9XڼT; |K (Cf߼훇=嚽Eͽ7xWέӴU }QTA jXfF1y# Bf\/C8=Xҭ<<`5CI )8$f)SYIR+l/H8lR3,85ԕ[HCRYn"?<-/j^|E>ދ l:崂 ȁxnێ!*,PeӠ 1o `)FRS8 @q =lƻ!8J}8aIP>ȇQ"|Hd͋=Hw?&[`Ϯj¢lgzXBtD@H5٣I/<)UNhp JǦdAUcK3ZXut9-bk@D;\1;"*O3|LLo(H$_>}2i} Nw;w9͕#Зw]!êû'ISM00qJC0ecc,# 3M:K]̄r^X[DVj]qq#$<aew.FE>sQq#E&&íRe=O 푟\a' R4TNF(b,0kTb;DQjZf:X IB*I:2F*_# cf4M*cޅKFIF.jI1ZyZtWEL+*m&!N32,0\/( 8D">U[VHv4a= $IZj-Ɛ h*9c^uNUi jݼy/}K;/MӰX,X,4MSٌS 5Ym[.//qΕdUL;&)u-"  Vݾ}ScZΘ) $ACtuI]7$~'"3UX.Ch8!!X&0`0dlȰ,br#.lvUw{̌8q"}ka3cٸ]Kfddĉys88:b, ]G@=}v'WY#OM+D=_rp0z1ӺQne;͊ݸP{>f3@]s.kgݾ32:-)m՗sY $#GFF1'rTuh3d Ӎ׋Y='*uTRb>ғ_XUTJ.\0 #OB' w' _O; eD蝀xı>뉱P:|Gw֑\n[UW&YD"D6-& ER䦃" sud^c5?'7?=;7Շƿ#mGd&fL ~6.T9wJi]w3DJ '5nZHk`{{w'\(&Q^n좀Gތ#.,Z&edL&"4(9B.&IJy%%gwBbIXYa)rj0Se2Rϛ"*AƈQA$RIJ@o}kV !_F9' *蔶5xkJ'_@ lHR F}CmGp}&(S1Pȝ269-])詤%(ζ9KJ*5cu'O ({*ķHUөtn"+B ?I923ji(EsQo4VR,֘Blb!*vpIySsZΩfv{W1hOe'f\ 5hʔd7lmp:ȫ `'L5eI_\SMS "RyD.Ul*]JMˢ˜ MJw^׵"d{+  >@pc<~ !E.MNrR"(I>HK|݀ 4i6+t^Sk< z*\롬7N2.C l|REq*urg0XVxP'Ƹ@99K4iKID{5R+6\Y`=qFE6 MY7z+1 ( A*YM~{s9a9$eh[X_Y_"I1lヰ"y,j=Tݏ-W* &7Kٙ1~0kx`)%%H!V4äef&E6O};lӿ:$8q*l9UVgpMb*~虋c`q=O[U*h1vث>fٔL Ђ$WWWE>on۷oopzz|>bS1Lpα^sy|F۵L\baY 1.,0S<}*K`4ϭfn 7dYfwӈ3i,c?[m3XﺮMf>\.쨁֦iho: w.{;M9=s1v tV2ҳ+fVP.ϳ=dF}lzeT1Xc!81n\>_;yaR3!,oY"i7c{@7{ql`6؊>wi.K$mc*)=/47}DX}9Ohh4:MpDIjÆq8p}l8C" "BϼNL@E.ǿ'7y&9-}ek&l\wT * *HXg9 ٺT=atƚ(n{GvcdlF/FֲڿUrr ¤)>-:ACbFbNE3@[U*j!XqA2$e ْ&PP.OZٺ([9GSA%  ֢5뼿L蒂2O>\t[*9@J~}R$ ޖC@Vm'T)Q>B)W$f4G LТ:">E&$ue Ec˞uEcv$=/v8Ĝ"E\{Ul]o&]v=% Cg [/F)lo >/-N]p,{GL5I3 $]7 nWFa3<*~XRtUm ,1"PZUpǀ$C6LHjPv䎊ɥ hk*]ˤM);)NW,΁P`km!%U*HPD4 \-@w>eYh10L1 wŀ"QAIR4+cŞr q2w%i(4zdiY+xIJa.;Fu8,bzheA2'2 dI5K kYD+=eQI=($(AJK)2=NioSA .<ybLh\8:ov?g9Bg}:FYUx]GM9,;*cP?q8y <̳喯pb.1ͦaNa蹈=Mß7պ }j]]EYcVU٬0553JԱoMӔ|ڶm t1ƍ1hs۶ܽ{$jldR>6!҆.F z1ժ)'Գ9'Y?]H%ՕiD-|'%I}\_ߣLyͯo|2ݛSM&x_8>Uޫ9~׹L48Y8^6D?#)'{a˫+L1Qb߷-]:ʓ/vao6`N6-~!=]zʳwt@Uxqs n޸l2"8t 2!Yye{\TFO_l͐H&\\ N1{G !*&͔1[73bL,Ż٣t}}`#2n2wf9[m[c+sc|-ٲ"~rY~V+fS cu.YFmmP`m[fYa̛Ͳf?>wͮcMEy];/g]I W?R'gk11o0t4/vvч&[LЅDۇr٭ tMٍ4W2_JOIm,笹^<=nw߿a$.%xrj3up|mo˖,V)P ~+ڢ][Ǐ7|e2igmQ$t1AզıbGp>j]qs=z/Oݿ_c8;uh3GҺL*\O_>|B$vźHCV>򸐆-W [PnP;eBv}:sm0 99X+a>¾kDPP9CyU^PIUtO)c0e TI>KY ei$}(a?+k1sZ˩bwQ8P]圎Q? .}d*sO9x`#@U8͈v e;H4F>1f"#|OԕflrjsNMb~=,0RT2 zO3;w Y['֝u`1͘sJ*sֳoL&SmnzdEgR! ;W]EOeHт V#)DEL3i& 9"Gm!B+(G0@m[qUNOypQq-2RL ʅB7eш^YG\_t# 35(eKYkjMg+DխJ,uos5#TƉj*"=x6d  1݊8YzIT|,#pݞ`)$*2} >XB XL} ~$2OZCkÕ@\SыrC"vuZ` _qf:ғ鴀Gm gzqͽK5UJ`'NXJWuxt&1")F†D]/w9}ʓ'O Sz Bm6-Aq!X,|\]]ꫯr„7d$&mŶ KQmK9NNNx뭷x뭷8>>ޒw]q]b+>z̦TS-Fm߲]PO>;|[_}w7gvgU3 lV%:fٌߤyt//Z=|qO3ߧMy-՚S>iQQj߻׿rik_yTZ,/.Tƥ5X+D]M u.@&`SÐezedq~jzOι9e:7pT{jG- IDAT;ή7T^kR޹tJ׸lΝӛZ2X.gM䀖 2ufXR$JĘՆGwzf3px67NMź]q䂷?]..$.7W/qAY/gy6a2?l6cZmɫ"b`JSk]1L YPv1m| Y=ՊNV+ڶ-r4vf̱6R_^2kF(hi/_֮ʄ[ml{_tw7ʋ!/11ll_gvkg F;N;Ym:1GsY/i(x_D9MH69ivOMԜDЅħVP-mt8κEy/1&>!p1?ϛ?(2V)%R Denb0@ZnȔ`k*=ܬŦwhf86~(a]N= : LD`.0hx陔Pr R70]E&ŨvkØh9X' "h]HSXD c{AЋT>FLHvlcݠ{(bRuҺw}`q:.sU*T+Mwp74FVI8"j z4KaEcKaiФAuӶMt/c) \AEluM*u8+ұk HiIV-8LF. r>n&4ke6L)Ʊ*!#l&cf& wc^S ƘJ&H&q4v_BܮdD2o2]+8cVp@y )cwmM}}djԷ=GɺQR}@VW },i0E_5x_}MUNi$FcH5C*ٸpk{h2AEC7Nީ{զr>m}YyԮᄪ&wߛ1\Bx_)M[&F nfGq{ 6)T2Be2dAJC w9d0.ZW4;;e&)D = Nf硪ߡكɃˤ@FeNS2 [W.w&! 3;B8 l64Vrj;3HȐ3xII`f۠?4ƄA6@IЅBШ4Җ 679eіj2#vR."uhgڳפ0F'舐R i3l]-.u{$K>v28PA~ :N5Hͭ8zfKhmۿǖ# }Q?%9v*vq/q8& 瘈2> V ٠Y.]R'rI/b馣/Xə(#}L&f3NOOyyx V+... ;{bĸ_c,K˥23S!(!"uJX7a9e:ι-) c &c^ڗaVU͛7?#prrR0nɇsܹjbZPɓ',W6gO ڨڹ}T۬<|\_/7kr|dss֛G73mlJEjJ8 =O./y_2M>]_|>sZPOݺ{|;L+n߻t:@Unf}y#R8sz>S[܇Ʉi3WCbP;w-j)XZ\&UIlI||qMI=\]#7Ý7`6(~딓}&NX.Vur̽7yvӒ\)|t5.\qV85OMQU+ dR^1NJBǻg2M~w|~[9>ѭW α>>WKbʥNJ$>lMv9;߱`wAS t`7+ij*}lvǺu䄦i<Ƕaװ߭k9uM4}_ar^kStZ]vZ}m}#Ww$a>Jc0olk; R>4| }wSvmY;pɲ.C_ 糗u/!B.^L ehn0kqOnrr9WLjϲU,6*i@b&3JJ;3LƟ1U}wFOYώ?m`{>uHϺ\/99ρy0YV I8jg=`-O=57=I'qI\Fs```MbAQ޳2D S^Ȼ|_ n?`oZFx3|)!}2b"]@#BP7+ X7jFl* >8%v*1U[=3,*){֓5ʦ.rYX#ns]DivG+`)p-ڧēbHxOWyɲ()J!HT+PLP&&p"ddk:[U}kqWD؋;1ZK ƺaU'{{ԛC{1,`k)lef.M  Ku@ 0F)#b#-[hyأOf4 9E.)jٲQmݟ"^ \Ƹ)W gj軎*3gL8%p;|U4HJqJ5)*<դF*y2nu*ڍ2۶'f%>̄2YL$u릦zHʠ<<+ňefJغ}9QV7/.+58}qG-'@J/vS x\=cwʽz"S0ZRn"i"Ї"juJG<)͂\_܂-}(_$ϵ Z"Vt4 Za[*H zH앱&A\twIǸ2yM8 flɠA"6AMJ45~ *bS!#CdR& ΌS6Se YܘyG Cr/!QQc؛HzWIgRKƐFd(΄dLj2<8bIRhXTX0G3)#Eh诨cg {,]Vd~&9E>Q\\"6b^ +@rNOns[fu4>"ҦHrPi%>R7/pOe\ogR/ۥǮuJm Hviz&׶#&;ݹΑCݻǽ{x7 Ktԧ)ٌsM⭷boo<}]/}߳X,,lNSN.u\|Ѐ u͆fCu,K+.bᄊa|΍7x7~11F./x!^nܸQdp...2V^/YW.&lHG Db?Mױجyܼ[f{L'Sol~o}]׿`7c:SW5v_qbV;&My˅z'TUE$"Y[Qr& IEK@i]Y,7JnU6h*ǍH$6Rq7oɍc&)Uqr+{b\n[z6>2Wv4#(zUD g(_wtFL:5aorppBw\?჏>g;>baө娜nڼ)qhH`8pw>|͙~6wuso,2fp[-݀xkG],Kui 2BX5n9ӧoMcnye{e@B4f3ѣG[]mRE/?3 7 [B~J myd]4t/3_w_+0 axϲFVm\BM̦p2oƾzeuPeEzQy[S%i ~w)f`>2%q6cL@P(3k(!*Mu I`,{NoΧ$Lf=lXR2#{0}䱞7L}|vW+nTW'o~>ܣ}TW6 _f8/al六H zn_6D d#OfZ5\dv4ヤ Yc 0ҹHj܈:a#ȮRI}$́Z)!8u}i`kՠܗنIfV"&MJM /ZM]RxpgI+xϫ sQpVI}(>բUgRAi*Dx&(MkuL}WcA"]u*gbPi19 ZF$fa1 PTRMBw}r 8674tBLAFmˌ})[ ~c ]0'ct`p {bb&SZ i{{{Vk@ۋcD#^pAk>D"Z̶V N6V]ރ D弆Z(HgoPx]P5U1b*qOY]uun D2WOţWLX6teasBZvXts:sVv!!''yi$tlk A΃=h'IjM4爌S") ]0Wٓ}YFz曁ORf@J2spH;C+DpO >Q9t:hF7"f}T+=XIQ++ER6TFMN,g:jTum.La_nxfhZQ)h?2 Os#Y]_tZ( 6'VkUm:-QEKV4 t63<927^eT@(} <̚g}픟ˎ{ l)zvF|*L<c E'nx?ܺuW_}W^y^}RU<~tɄ۷owKпl;ՊOrqqӧ4MǏdK˜!R,Ўݶm7Mrcp]y]5""07]w+ܚRbɧs8==e6qttT2Sx0 &DNГX=>~w`yg)g>eZBfb:h}ϑw9,-ȦmygތGo|ُ~#f u ތ]+fv@=P6! X1m>Q7S7-՚?{jEh[͒zzfC<Ϸ[]$uQLkU{nrz{npquNf#^|Eɫy5!CCor2B뺌?Oϒ-Bd|.lx|ǼG|uKק5?>B+PI DkA^Ǜ<\ x>[6_L>g+l }߳Zl6[ \{O4,Ry|cI̸?,yAbf-߁9,hl1_dxeA?R6_(r?)^pP=gδ{?Ͼ]@g`~Jѥv$2r.gny] oZ54NXZ԰uKy<#pb7f~~8g1|pܕG7nI,J'^􁫠mT P㶏*"DYw\دym:+YEؤ9IU# Ih18~%\۞.Xvu?ޭ ;j_2a_컖ЇgNRzu@YCs|rMh_s|UN<(C2idjFԓ"S$$˰ 6ه!:;"_g(Ksx;aD"1) MptyTs@ Ԧ #}OLHL,Rb"zV H/*2pķĭ9&LuR.pԒS򽙝r"E>5|29llIDNE%,H3^!0F˖v"PxN1ĕ?@l6FH{bRBJJq:dYiꆺV⋌RϲR0w4R%~?ֵÀ395~ y$n#z)7ni]Q !g-HZ{nC߇,3^]tY8+R5Ib &A7q20 ؘ@Ɓ[81 *kJy&q+{&3|d4>o{đ9MY%eLU,g 9EI]ۓD =h7k1h1bz^Tp6i 1b VD>lAFZaV/ǎ B̛Q1tHL vJ$Y'!32UHз[\QѠ>WMn]Fe!FVk䧪~.U'J񷐵/$2 nqH!})5x4Sמpjbӵ]bW~г-Uuk1d0 ]d\^-Y_2Y {fBX!>b7ZL/p~#?F#?e|rppɍsk79<km dgG =锾yaaOSn޼)'''TU?O?S?~̍7x\Q?1 DYZ#A IDATʚn5~ ]zyūɍ;|?cBүT:늪s44k;8Zzlow}G{uN R5oZnS 8P]Y=&ٱJʆwY5L]kίWH8ox-^zo淾lo?f|[OC9::M=zd#]CNCP֫UfR3YIkwLHvz윇-Oxr+6].=ҲE,yAŜ!ty g@e1͉46|>/Җ9b53V²Zrf+Jjh.(n>PVX&0c kL&ݏƵ&Lj<.q'B>V ڔXy<ǬNRî([Ѹ4yխON y~k~#B2{1p_T"DNbb/HLJQϝD賁g L¨(E@e2RDvy  5CCR9lЃ(إDI Qb7v+0Ĩ8*kSt*@ukwT#Icf=~JBBY7sf w\]u,VHTuEUUlӽ=锺iT@KAr~S{ <6mnU?11#_ɟ~H~ D۽[s4D r+# 9eyh e^2QII}VHdQW WuChmI-}P:Yn3FMHEUZJ|!BږF20w V;UU2C,g.NoH4r&qxuīL@ #E21?d!>3tHJuY+68̖w[jD- %ek jh !Il- _ "S9u!D$KE&i;1!.2\HR$%7-nÉRԵ]+pvuzŇ}Ĵ3s?;}~o#_p9BKhUyhpZ't^q=<#zm^"'>GI%>=qiCH{fn?y__yuϭܻs'㪊3@ "&Mɬ0t*|xMzUЕw<C~\5gCr6Co3\^hcyme=)slVz{=r,f)Y0k CX, Z Xn6ʊ `Y;[ݧ}VD9BL&ENY,k,}k ?==߿ѣs`r`ԁ}>J)g2G'm6ŗظdJExڕF:!ey^[CSY._ԥ*]'n>FPfK.6 fRh u3Cb$uThCR/5mw?^r+4 O{by.sųUTq)qt-EBwĐ3o8s?}̕rwW(7pOY|'?RѭeΉc?*H1Qa2RQz/9xj%*t O@Ow6P]oVlZ(|buUp.tS0O{9m@2u<LgLs@ٸ<&yMHDz5")**K6 26FfóGY]9ՂfoD:W9Of7&5>oJ8o J2^KUv+_\CV!e+b.>1#v-}/FycySܼp}qyH+kr6IX S9bg/tb TBuس3(@)5`51e k$I|n4EteDpH%pn96=Sta+[`6bij^])VEf)%( ,~}ryR4e ԥd ,q1hs!} *Wnkl$C02!ySڞ.n~?Yһ|5ZX= m>aw5L8<<$ȣGclƍ7s׮]+`Iٶmadpxx {{{ܾ} B5lpuqqQtՓ$>GQ5{{{ܻwW^yzP=͞Y>hű^x)~r7~_k7Lf}+)kiPUW *%T?NxxdIޯԿuoRՁN;HwO>4Ta\dr"J}UX+gF;Yc6#W@VekTUŵ#탃wx-]03;f.{>G,n?gO=>x{̦Svww$@8NM knSZ5clwi(sz#TUEp$I<=?rgVY&I``:"mDUmpj f@w' Y-sbk/lzYZj\n9c{`,yc[]ٌrIJ|r,c}$Qoz:2N #}>X,1dewy QFެ ʬuM+f@Dlhy5l<Ϗ:A>|+Qp^zilۣi79YW9O *Dz?ze?a<~q=D i$QGW}8V$D%Ǽʣ/$ yFS˘$u癉(+pqc)*ᣲ=B>+Di S5!bߧ ?s.gFq=mz";!:a1G+ٚvAWOUF+sri'LQk$$2^:mzRGI*!L& U n_lpj>17_r-c(b=z1 P6[s_0h@yZ=E& )}NRBlos|Jxc`b߾ rrĻP}Xc~nN*[Ӹ98P yPRbvcM79 @G^{֤h*o9T)q.o6hAQm^PE4ӬX.%ds2 ɤDmtV?hٵV^ɓ",B&.SiǗE"fm:\~U.__\}ap8vh 95R3Bc9Te( ZH}~iУrQsdA.usU {lf)YZL8U(2plL[c2F4QᥲY}}<$)v>n}l6>}[nqMc:5f0n GGGpM... j;%a>1ַ}k`{ٔk2dG !8 u])=?!|_Ws{{{y7s???./Ƚ{O8o_,H^wĩN6lgٶ|B v-L琴M^{|2^"~gg%1*"bj^ "ZY7 BM3#1Jb> ژ^u| 8DPDŽC{cg">Tm.5ad3(stJdB4sfYz4.<)%Eic\1~n6Ϥ}oAIo >Km0Z =*5^^m MFؒ,Ә_Q\mЯ0r71T'=|[.[fAjs]Sw<)"x|C|Ïy8aip^h紫BMp6T5y?Ly!el6.l۳mB4D>^q {/xgp CF)7%0ӑ3b,(2&]yCI8~^,[}©ftEL<5_3AˠLx6!屢Ŋoη_|1Aᜟ$$O|7kHa[rO & ӽX\cq:o.@8ZZ)$: B2]j2A&q4uHcH 3>RM3LY>cdXնG 3 }o<ɶQؖ1ۇs%ȘLfFr=#߭OÀm<_ޥLp~B&Cҡ uUi9fQBQڴz2^xtr0q3h2˒pwyoܸ\YkGRL)Mbz.4.cvK辶 6eUͤm7%uF6^YgDehta~P*pE>g*CR8D% {/}c pF iHrhš ʖ{<)2eØr,_;\~@c,rCHJlpQcl*)&f{DԂuu=g{'|9;T׷l([ه OnƐDl#g3=Ib.c >w٫N<6LB%^|Li9HYHK?;-g>Mz%%դCUO׶y4춌sMֵ}<}ױZ/Iϴ 5. PYoov\ ;WcF̻$1H djm1h@i9 9I٨r LRLTuBs!wWF/R[,.N9ZEot9B0LURiMǙd $M_o+eΏI._Ku㳴]'OH"E_" IDAT5j7-SQ9c<{=y`OՊGhMSnݺw]~w~|;T͌@2:Ǡby̐9FWӧO?~{!>!o&K/W>>}o&nc<Y"]_U3sTfv@I]OSN3os_+ww9"Atr3O*b"qo7oAp2F*]d*#?r夌 e䲿=7L&wa2`2N9V@3bc&֪6q̏'5}E=e8H)ѮW̪[7o1^/PuzE&UCzeu` ]tj&Mн(Raw9^4*,cSt D^8ڴ}<"ӕh {hڭ@6^ϖ0ֶٙq3cBCձ|UUE7 M;1͈1Yls4֧)"RXՔߤlðG,"uvvV4nZXаlĺ,.ɺņGgµ}v瘝Ӵ+rd{,TQK;d??H {~GJzKh{p!qp4&ݯ{>m)+1_@` T2Erl8$7nyI Eih0i4fP" P^1aݜ-c>_2W:tn/ɔ"O: Qp:s&_UD4Pm闙2MSٰߪ@Ae-p++rM줔Z&&HiIWƆֵL:^vN6z/N)&QכIuk9sY9\s]ByW9n@ OD8dym({՘9 9'2}瑵 4R igP}d9a^Fq]|֑RrMDǀwSH(MWtAɥ) M >Ҷ*TԵg2iL̦SBh)}yvr³ӳu$XBq$a Ϙ*h >p(uxTX)xUR;*9:sxx@]M8}Ⓡc*- jJUMpUErf>gPrmm3ݬU56Vzu]WqE!!cqsJ>8%->KU;Od P*%};h_pύF]BIrP;Vl6"nt d(.I7[vؔ$ bAJ 0 3hk\їö9^>@ƌ۵\fX?:ۻ0o`oolV3`KF= {DdvwwY.V{ENXܻw}{|_*pv4Me@i _~}5uvB/[DOmy)7np]߿U:$C2k׮o@@.M!c>g]W=-prOgo&7nf:q>aCR^uђ_ ks Vgψ1sK)>dhRG-!IFS֚$̨50d Fn=?'S7hv uxf3?8 Pٽv/IՔW'3]d6g:MM]9$h"8y ͉|MΡ:#yTr-Q@.K9M&%LFhua4^RE\(69Y6w I[cﺮ_N%]ya~[o;gu6i-GSkr7m۲\.c>(mYoi;ŪxDH쌃2\ KHŮ|AO{ϧ͎/Ə:ղ n w>b&_ޛz~>i+p(d-n'Eo.^ 1BΦ%nrR$ LI)՚ld|ɬVõZՕV$M-Hݢ6nk1 ]6\w_QPwOEpDs/]~wX1~؟5r$qyz"3eK9y?[x R8MuJD4uL 5 ¹2&"H^dnw;wq z_e$}oݖn=.e|ԓFc9yjk vՂ{Os@w:0<0]1\t |qyPiCuS*9=\6mNۇǿpW=o1ǵ! ܣ.bi"zӖ8sO82.Ƌˮ#vzM\|d:I\ԳdXp.)F@²˲~ICQ0ydyG Pi_,Ry穛m_:D׶1*>Fb^I9.+ϱϘHk[^ii})G~K醪a=}{rqd2VʲL1vt .}%}R\+$7U*IXT#y?[7#bSV UʂrALTuMLͧuM׮/WWs}pdEf&wp,ؗ *a,4_ֹ+с>d6d>ͣ {V*0G>۞0JSq:L]q;}_>=0SnRj7CR3:j/%'gj<^ H@@"@Ӎq,T( :zy~$ͦis6,wM \s:XC\}͕"R[$ fy_fظ m>Y/?Œb6 490'6h$] k٤D rc[x2y_a2͸y&G׎)-`L)qvv{ǃ躎dRّR₋ }B{~΍{tff53d0C dDZky.NO8;;NY]Q;apCr|uXY_=-=ж3OecS{$dfUuSDU{:<&>rL#3ؾ8&J1kħ'Zgkf ݒbfwL}0$m&Ogoo"e_enR*=+k$;c`礱2=)ƌfxsݮ66NJ/ϷqPe˶o0=@ Kc l';wrAYfsIwYS1>@}q2wC\(HeS;;mbSvwkV=M>Wwgv&_aBL}!bmapohWVloC>%$TxjHؽ]uwGp';W +H#GV8<}1ggufg6 MOF(8{ľgǍ.K{"Z{d:]9=)rF|.&j9{@(gH#a^1lP$ew|62)DȚcub&1(VBQUbbZYoُ@tIV9U$>7z۱Ջ3* 0;L1;6i梁c9WHz 3*d Up{b͆FIiH Ə*EWzVeQj&#b}KÂ4l$^rɵ1hN1Z&A7;[E Y>EM%<VЩ=]$v7]̱]dOƌ8^zn8w1@ rJ NWPr(_B^f:vTF X'/dhT ::>w8lDIBt9w0qIq`a=H06TL8sd!W^\,@x#+:ScJfR%&^w&l\9l+@ƻD#+`ur.3b~28>s4M9>>V m}|?X~z͵kaXƂHPD >zrYag9;;㭷Ç\~C_K/yW8889/v΢g<攍pq m/ַ1ofwwW벼khv>7֚n2(QGœmK>JXL}bo7~iX>|S{j) V*V7_~|_3mu3!) d_4Ȱ Rڳ995ra11jߥ$ľ_.Yxg.Azu&]=5SdgPsX.x뭟x[GܻunCYrDnݸɵ08Yw^X0)?sͦR25&TFн%=}r,7U]m]M&sAJUc3od[8> ۿ `oT^@cpXל]fYIu6e ժnaIBWc0}YjUw.c<ƒ3{_a98 s|S=U;:\ T̯|[ےq ɨc^. FXlb'U|tb5uLaw}锓ՊSo`Q;Fc5v/;n_p2(y~] Е'"UUqKCL W2*wc?x/'CP\@Ba2Ev}$lD+a[`ݍvlQg?!Z_tmygO緙6 @}*E)we *XBEȲY|cۓjadDVjȸƊR\=P$'Ly8vI%m3p]zNF$H[KI{b!j^NhJ?TSF~`/G)zLչ 6&Z_w~YJXCМP,Lk-01u}"Z,ցM1kѠX-u WU *h9wj,kɠUn7* (ו53,v1 \#IDIwLWUM̒˘2m\(Z}cJU<GG!/d%8}{ՐJL=>k ӭ1Z@(l-H6Z%{rRd RYrEUn(hpZ[y,#U]F#.t kI $?Qn ٨x٫1X,;4MP^XyeqqAr>f6J6*]uM3Pgۘ }K00vpxh76-@l6ڵkikΊT504fj۶|??fS1F&Ia0|֜i *lW9+>kAl::)1+1kdi/YK6!=,)w}N-m,*1Ҫ-,;s5>sx:wo ]v]gR%V볚78 " 6r Ѝʱ{Ϡ,We/7QcS\꘣þ7;?xwoǏY/" eHm(d'lw<$)JxD%{AV4ۆNq˒6'2KOȕPe jgOεk;NTvM+K5r~J.t{k\w M3T;Twj&lgG5Rb{VL7 <}XmJbI\'5{oNZ䉨-aG`xQ$#Q7$y>'>Qt9j}i-3]\]ac)GcNM(Shxv(^Gb>wu /O0Gx!x> *0k9D~.£2ީV8 HOcG {9@Hr|22~4{.Rb62jCł HV4hLP8^H 2sΒ'qUb&/,28ofй!\=s(P:8O+qn4>,։V8y;ˑHTY,lxǕdL\jRDߺu4]+fqqbqPl?W鱠b(nИ>i&SM3a2BYJT{8cKcPD,>Tf"H>t{uj+nP[oTYzEllKbdz>+Uyl~>T fyY\,X/ڮ毕$ {س+IPT֬ W?tlQc2Ƶyh体*1;+&Ej{}R:z_I{Q]7uCL>㮺RjX-Wt .kop+I<LJIBz,_ies4y? B JR1,A2|~0jY]fl6ȠcBiV".c Tb+.j')PP|$pUdNv\3+ϙ1]p\NB47"YAߝɁ9tPMq'yiOp&:by-)H{ 5X{вĒ7!A'fJВ5\ r锵bN "֮~rI. (E!a`Ӹ;9./qb|ts8LB D $-jСtحI:|qA3 hE,mT$w[CтgڊKf2-{!(E?d& 'GWs{59p۟ \>&B`>3 `e, NOOiۖ=nܸJp,K~_rYةϞ=ɓ', `9:RIH ̂OxowW_套^b:v1MLzɨ^lW1imy?躎?_S5r9?ÇVKJR;+Q7vm>vkv\t#cnknmMp%65wOrE)A>PBx1waZHo{|+7l5Oy[ɯ~CRˋw l{)/tw<Wgh۠K>~>gI] kxm~wOy/>4m̴}Kkoߺ榒G1sI$=jʥ|ʪu=1 6z f~_<.XCostjnvރw$ S-:H$@BR$ց4Ue঵YfSԐYg?XwR!Oa6L8I UcL{ oj{3U^G _O~K*qǦFG^UI]+; :4='i6@u_[ЄJt/ LEAsqt.LJ)]5NMαc& ޳aFqDZNSG1n]ǹ p9Ӛ,S繎xy|' ]/#WdŒT) ؈+QVw&!*qt2JZj6 8:}N8^\2P5 .h+G *Q8xZX:gMv8m\*2F8hmωchȬv%\ikr0)![ԟm;~VgO-nBX \nU=>f歊V!emkLBCо(&+IH,Z^i&)ͤniCUʠw*o Oux!@J}OLnéM  @pVhɇ$S>șw)X=eXӵkM3 )s0$egvT.8?l{>Bn0B j&L&K>BMyhBl˷ Ǫ$Kzm\EFUR!di;cQ@7$e" NHUTvڄIRZbKW: b2*Z$ϑ}$[ckl_$wrOH)%FxSSySSa1E,g8œƙV=ZݒPI @l ]/ܔS(YT]d@Ρ NH`*y@n(|b,o;R1>,{4<6Z%˾0KFz:%s(-0ʞ((K5țن|sIIUAc;!4,u 1|ɆőqJQ)~ˀwkwjfebq>bzM z^:wMGnp漳97Fq((ѮЕ qiص_;>[u29`a~0/붤LS0₧OZ1͆>w}}8>>fXk>8 !Vdt:- 7nfXx^Zl6u]V`}_mۖۗu?ëXc`c?{T l/~?gS...x1ܾ}wnXprr£G899aXЮW#S@(2kt|Ul6ڕ%*x!ŋhㄮ]#  MJ[nhE9]G"st|Tu]!*?- /vׯ14Ķifw>l=Xk)mpRb`{SWf|,K␏yR5k#}@Рb0ry/DBos#Bi~%W۸b3,x{g@eخ},upp)ł9::{>={\U)v﷚Vw>.Y9d uzWwZҸbxU_ |_|b.sz3Ϸ߶_xvKo=y L.p|ʊtr~ :̖.2]O=T$l e!hMf9a:ycλHTٴf#:ppx'ĘxX>~޼f2UK З9?Fs9 Zs|g|{owoޯ> 7m,BnYK1=} $-,+yֻDS;TNbf^(Uk^4ΰOD%Rs&.q/;9µU_Cb 2ϹȦC>^boڈ |G5gq׿KwИmְm&@LHSqW!5peL&Mلۿ:t7qt5դf n~ ^yn}ΜߺO3_rszUP{^yasRaoݧϲA}ױ\,?GJbIe80ua,s 8;Yz}c\bg\Z"`^+S6%96-?)iVpED%[6|u^+67q! OuĽٯ%u[{G|sάdIHQl japmC@? @nhu[Kdj,Vry3Ekqnf(G!+o'=o}kI62c2ґ`A*qL @P炦}.$݊%؏=(Ef)Jdj7qk@1,+bRy>!hQ+X}c:s7V-$KJԘ\u3 <.*^)dRe2F8tbD^71fSbS E&:F XnoXd cdWq1,,Ib$>I#2 S2,`ovO(xLg9kuTڤ\oajʈе̧a/B~H$:_i/򠤬29sq&̸orl,}~Jlޙ})bY8 .} bㆆ !B2$ߜBaljx Q2 WMŪR ^&eT#F)/rq\Q=ts:{V֢iQ. +P c{c^~T7)\$"yA22őBCӭŁnbe8 mrsT^t6_R tMy Sr_d`; Muq%20*kdEJGg|r7|6F1p>/PI41Ӕu-R} N6ͩ-4#'2a Tt~i6a[bdn[-L/O)@j'ӟ3ڶegg먫iE?:ԛ"4SU)%NFL|^@9888(UMwؠ!+WsZ)&MJHbph,>-|cpX, $4YEBA)3D*+͂wC;uꞻDdѶX/\V|}xƻ?zγD v uBN~Hc$  3>ǫՒvo[H*4MA$чV e: }s.N^t\UC}4,zH5כ功s}k_ l) 陮"9x1?bo޻;ٙPWkj&DlƱ-I,/jV^f:u=j]X0Sċ/)(c$&mkL#g c{z; _y?sM2e| [+yEy7FضkXƎ}wggdBJ>NYV}WWW\__t:-m[3[Mۀ:a`t[CLJ1ǁCvY4VZ`w{ޱ=9>O~泎?;yo~J[ϸ>U o׳ɭ{lOr_/^IΪ:EseV-Vl[1&gW ^C]b@] YUq Ϻ+;0WTNI8׿|Kʍޖś?{P尒 gm ګ9w?l̬ "(@ 7WU6AYS>FDn>6fT'Lrn:Q@%||sB'/?VUs=[q8sױJٳͶ%Q 4$ ,Q9)L ѾH:JS6?E76i$K.A" [8C/$9v '.c1K^91Ɓ7̈Vf,fU+ڇl׎U51 |پsgUJ@bc 0ˀ~w4c=o,s󭖟 ofxL%t8sFgfg[lrڂN|y#.^SnC[BάM'ցfPJq fz6MyHYfm+^}Ґ)!ۑV@D1ÜA*IZZ*lk->WUAyP6F6̈́N2BJ>tg/流ʋj*AV(Dth/s HYIV(A%7ƅt;ϓUl+sSgk$P7&>Fm{q/|$l6+_ ʷ-ݻWM[ ټ4pMd-6SF+3/NI]9^A{Nc8g&w\m{_>~'/NZv=B g/黖(G5ܛ##ԓRL"ZvC{D .%uЯ7HTNH삾9|N32LfnZKvnk-9L3*_eGCmOOq݆vwwNrk`tv/|P9B6lr폢N6KǪ/,tNWkAz;15;_S^%;W*!`Zǂt&NHrylayrn16L,@͗,bwu]{,4;9==e\ agg}VVԭ͵&=ؚ7n1ˤi,h/ˮkaA>E:>o<|(1`z,d\fV<(߂Fϵ 8/wynfl+WγZ; d?Z޷}s Ia4@E}ĕ\^<;9gVWܞLo&wt ԞAMwvJ;̦ )&Tyy#Ywc}u[}ʿxO93Dnb;{PO &L*~[? Zn7=z64]кDI9 Kinp1!Ӻ>>6kL@tvvYyTzb8]*p^Eږ#O޿7a>=d:ΉQSlc\*TCV{ ɿakza7e7͟ڜP;EBV 1!V/5 !oZ+I'UE=깟{4S l1RPǎ ڋ@KzTISbG(mu4S&zq5K w)žs,S>iFDMkvJ)_87֞h\稼r0\͂f3IRW/sp|l^0zzb ! ubN.Kˆ(!l"Omtt>NwTfR;W=1lg|3cL&cSV׷t>}i%ej* d>b XY\Q R0!g{Bla[]VcGeP!Bk툔}Ou}y* c*5dBl†W<ˊ$\ID o6=:D5Ź](J?՝ɝ^_w1;6 ׄU{Gٴ%1Sj~g Yŧ˾j9 92[+8j^#]aFni_ڭCqҌ<&2!sY?=!~]d=')um̍;鈧| ^b lz\)yOR;}:|W))D):]sm1JѢ!j,zbn!Y+*_TR(faU֤"uddUaCBTrg N?S tAd|:*s(X)т2*oetrUOiN[I 6Q6/2R5o!fHtc I7+q7wEKY3?SWr&4'3흭b\3:> #{W}훠y4RJ,K^|ɳgݻl6wDt7Mg LS9ڐT1L%3oؒy.te$ M)ٌjt8ժm{eU9䄏?bl6cg{ whl`M׀[@Hp)"%}eXz͚طĶ;-Jt68 -~~qyMi{oqٻu|N6Ň'/u!Hzn߾N堩e߭٬,.hW .YU5)i窞PW\!kRwӑb Z9#] IU,T r¼!*-JC%lx_~QPF}>.:n:ۺ`,o)%umi)|ttb0@u4%HySe:Cy7M1hٺ? cc9t̸}S$m`XޱY7 ~b^7j~^qk&%6?Rvp^}A$ul|d`Ov.ke /.pة*&-.+@f-鬎2EȅY{w∯۳m؈aH-/_:HRALf U2 Mŭ _čd__.L'3|٬x=iP!ઁgM F6΅zH *KŠKցkhĀ|Q6_*4[|ebiTtkl!f2k%bR'p7ʄ5JipG,n`)X  mgS2'7jc-tR(B !+]t(DKl9Y`cj"S*Ύ +R58/CRnu©h\?N11`Nq:5e)rH,d~a;I1]Z6/4AN=}u:psKҲ ar[x24%z`#o"dSa6+MF?@aA|Нʻ<~|%'|z7`6ѣG|쌻wopzz ]]]9!=7Çh& ܺu`dI/^prrUy|oo8<3x7}6ł?#w|>R cc1[PgA7}2tUUC3 r%pj9^Zw^p [)|𓒙Pby͔f'UyBۜ (IUEkBFujAtBh3yys\\9;k%=9:g3!:LT¢.td6#,YTMCby+9)K}85sL%LިPy-hY0NiB0XR=g%[T@|4^fNm:~auk lIdnLʼ`PX״$@u1yלCD8>>f^ol^(@8&>ƪLӭ׌[ۍogl]ﳾc r07ݫ0|J[') Cidך 3Jnp>wS'1Y0;ٺ^gcRTXTyΦ|[cR {wJX{.:yW~k=s6K.Wj_}{)NlgjnV >o2)[,O7s*w?ϏgNʛ'l>KM=,(d9|^|+` O9ny&_$XF")p"=)ka-AJ[msϮrG{zͿ;5u$[y?')m^2Lr{N G.!)U0 ]yI=nKvJuJɀyqy$zM)sQ/8Gj:XȦ <:"11] ?NK5H@A>I @:9*y#N:m4D1n2̋aJg@HBv)T(K#5DV$˝$jv!Ͽwٷ"_߶Ǜ-H66};I+gF3Gُ(7 %JACC\ޓn<>[(Yoo3*NJ_N ~)9 bG1"D?A5O>UDuI>SİM7L~ݑB\54&]K}J2vqȱmjKIkRQp)xXJ5 aU˗/mTI*w:PFd:b& Qg =10)f lTtB$EߍKR ybN*zi>K$hbEB$먗/.)[=eP-kBF?,]D avI W4NY"W(ry]jE~w3|QVftw#"iY6uKqNTlLyȜbhb)ٕRNv3Eہ!J[DT9ĥmotlyn؆#8|ye;\fQkuX1fLCUU]D]^^ ~)]q- mG#B曼OVl6eO&߿oo}SqSsϾlX,K...8==ٳg<}HEbַ~iX,=vvv!\.999:if %ȳg϶#]ױX,JqT{Ǐ|Ǵm[,bP;MjBllKvbBMU#LSx@\Nf50{DS稪ËW^n|֗\(5 X7 ;t:-Rag)o-r r7`vDukT2}G1= $S~ӗ[ܽu04eb|F[}:6ƿ$e26>Oy*ΎʾgSbҝT:q}"ice)qjtWѺQ!ԨFM>O)[N0I%TXUX k1ҦH #;IG$Lˤr*?˨N+T|KD>Nm@ؠY| 8 &΂T! -sG-ʊhZNEXIAKx#mJLEfx *R\˾3@A@q9,Kr%MV6i4b']CBn'`2THe}}=z?׮ia_`\Oj& ڒuerPF/Ѣn }j5 Ro[:{<"G) y*ke8ԚꉉPWuLcʲ2M_"k ܶEZGYM#N;=f3 }+qĤx^|! ]V6cn5dAѓ Ah,[Sފ" IDATF#VnN lRJ@~!^GRv\s]ƪeԛ g ~‚tbsN*;?Iq4&h>(7.2ѵ.bX/so;{EO#g!i^qֹi.a,Xh~0JTn@6vD5\N1lވϛOO ѵm֘7UfsJt鸚ݝ=e1'T$ Q"Y\ R+ `l{MQpm9W@WB׷lM.穪 W5WyM$La??hu :f2Dry7`t(7㜦n}]PJ*Djc!]#Fb00?яxI/^ٳgܻw㢿l24>Yi~yyY$p?y /^ Q8y뭷ߧrk]R \]%BiRR۷o ;c'''9' =e ji}qW.\}G.Vz x&g<++&MM!zdB53fӶ MK}bJ|ӟ}ZO̎ı|1NlvYJQj3IAze|b21ݡij uE=cdu4=]HQ Ei Վ]/^UE*˙9fg>coí#wk 8 u9lϿ)2lߔv{֮3msNܿl+5NNNuY_Tn~ ?Ɵ7M0k[A04"Ǹ-~ه#B+}lTPSn@Ȍbwd{寔E+١Ø˭Oc0|v>3d%u?Ÿp}MRb<{Mͽۇ􊪮)P T G;;Q%3V?+5vGOC݊[/\!淳N,"=}+?~LKB #̲tTP{Og!䂊B,Eǵ$ C-Ưh\"{"T)\'8j5jTbl)и Ζ!r/t]?~Gw0mFͯ.72 ZtΜ_/=gќ6mwz:}WUM)S{֐} sq=P R7=Sao I*d~+$PJfZ k:ZI\֞'Qhgm$Vz$.NDX8 O9I'1O0O:$%1%DX4 <W":At=3eR:5pM# }q2."%ꘘ#"#L.>kygv)YOȠ)&k\}k8 S$)E%*Tߣ~ d8q%DsJY *N0ng@zeޣ-_ -e])h㝯o>;xl6\^\r}JUQrO)'Ak$k ֛1LU`q5d-,nWL>f]QU5u3βD]{fVV=xce5zM>2`Uɀ%lۡ h%3==9$e̡ >R &w;N5 EIr4iMIc2H89[$9 %"}a'92ӆGtDe) 5m2+QٕHbb7 m3+R]Ʀ2e'K}p`y"dЖ0JU-]ŹܯbO'WRZS6U2 Ce0@ i\+hчDDցqcUa'9uQ['t#EG5C^\i#}S c;nibgdåTҨ9I60|u ePZoU}@BV]&/'!^.P;;;rz.zi~A@7Adݻwyw_u=zG}T@~|+_at:޽{,Kq]~m&I:_לm+>#``c޻wө`E-WWW ?^Xϟ?}vrg^g1nsvvv|[of˗\]]lV+...xyy >Ϟ=ժmg˜}|įu /Y,V+떶LJDx]{oTs0%8zBkM k̒OPTЂ|g|;&娚 cR{ZDh@f5dFT?.k-#BrBrNUS$yOrQ5W+W_)'%_1Yg .>M9i.5{G$<|˫+.qM9HUKE"AWO^shc#Ny/zߐ`uQH,-]RquML<$Ib>2=`]b ϻxn.3v VZl]>صJ 1FzAϳp(ׁ/zׁ%>vc7߲j4m &n?Ӹ9q/sMTj(YG"exM/| X?{uKs0n7QD-NOX{#h?Āa ʆݝ4ܾ}Cڧ'ZXv-NgzN]+0udٮpL@4|c<(>G$J\({Ve"*TݓT7ܳL!^h_oZW-o ~yV/vGχ6NoMc⚫'I+߰9_& ),S6T;Sł6ԳZ!^jRg87wFYh{\%%Sd%kM҂F("*?(k\evg]"wyRx'ᥫ*r:EN]"ZEJE#܊KJL  "g*%/iIL]E-:V@PwtuG"LS{ ^`JT ݎܢR/q| RDR^9;&JM)G}S-| ʖOy O$ =RTy$(rEeYǙJNe\@;!D[979?VgTr;inbOg3v_W5UJf֠z=#E'D#:_䪭p'5>)ڎkT4kbppN,|*15!L1a[bpYKv(@DGڶC"eZ"Zf TSl0ue#8 ףּ,ɓpTkQ QqԈA6Ču {U3{KCfxNA2jڅ9m}˗/ Po븼'?IbyuV)jz&#cR5&szz \^^B(7`j>s}vwvyqu]&I=~iۖi ˓'Ox岌fr$ȭ[җDJK5۷os]t7"QOgH]9VgꄙN ͏αH^x A{ 1Ja7oʆ)~fT Ŵj}~h:o@ZI@ H3;x}BRkUz~r5fRMqR1R uAiP94/%j/xS^.]_!'GIMoRNtCHeyvbNxΗYukolHho]69)5 wwytkۇ;8@k@Tww͔~OzM7c(z xTydY+觤Ŕm$WR{%}"-e@gI~}X=d7MYP`]VُCWucY y/zخ -l0]qg7W⋆df{jQ;iX[n$&2 IW 4/a{'*aoZq]W,69=igJ ";=1 =O.8lX78giޭ]&;Dh,\;|?5^o.-/e[|u]`KY^nx7Gch'=PrL=pm۴? O:ƕx|2)DldTْyi@12U&,o|̀_SJF$<%?7&s1RO;ܽ/u_}:C nR^<,O8.!uE+G#+fvd6T0s[MO3b-oQ5*g#m|kkaP8D؉ݙTeH+ QDGeSf)%\tUob2Uj?=BKw4 jNǮe |"LtIʯoR^7:fNjHTTFz/8j=q8G r]wDx{ٟNQ I|] Y'I(#3_<IR.h39IR9$De(HN`BtN @@Z)k GR|j3s̀Gٰqk{y&>~37}idR}$}s$2CbO(~,#kDlC)̨.>2TuMiM%W/dW l F Ҟ1H[n&HohVRzYی9_̾늤LvjQ_̫ A*ϛmJdcju-ې3_[6 X{.R&l+\1I(6zmiWKr&w^ko-ժ3->^8A5rqUØ"M徳os͟0,yO; [>F=!*Eb*!L6Qc.VuL%FMafŐVf{g&:!@2$.?YrqN%i=]gn 0 X5C1zD5nWnU}6qDĎ_ ( R3pt1XF7y@W>Ӵd/ [\NYvq/:}lS] dֽR Z K y $/"2zVdM(0q4_ߝNJC 4 Ʉ>ȾZ8 Yu<}m9>>CP] q9_WN\x*^`S 7t?0].ⰼ8up5>=xjeo}nrn7_W^m1/ƺe}ѻS2\66yhTAq]&M4Et杣&B>UhM^OfosWW;Ymw]W[cy{YNCl|^mݲNM7(/%7qe}[s\YP麾8Zv~8ԏ21} A߯Aϟ_] Sn[sd0 6%QP2eɗkwsƽs|a0H bڝ*y*D'>6Lf~f)ip":S.t>9] +N+*U&ӆ=&Y]\jW> )*L噮  ]kKfcaic {|es"h?|0i*'Xe53fE ʘdbΆQ'#^aع-X#4PVF4!1dVB~!jX^01g{wsx0gg`, IDATk)_F Cb_]ٝ,ON9zeWOmu EaQϦ)qa#}gW4uMsc"!B'5n5>IN nXovDN"⨒"s`Bb&A)GoJG}R29aJ0K8I4hB.i( *)FNRAN8I `e뺲R+Ձ1VE&nVS]A1HL󨆤9t5'ЫdD+B} bQƮ~`x VD1 Qآ/á$aiԠER1Z7a vp^'wmW$^+Q!>7_`^s~~e:G'zm۲lX,V+888:.+ca`fa\X,X,EfLr`т\:WK~_ݿ?O>₾̭[9qaӗǩ{{{0Jڛ#b bp=^~eDheI9 okve^)>,r9{;|ܿH^Ɯ5+l6+ ǢQ߇d:W֚nspt'Ws0OZ-ل:: pF6}TK4Ca\2%$ jqԏ?2x}?|7 }е?&oz\#<$mB%e}knv{-WΦv>C~DžՖŚS^+mIau:^*|u77)!9v5d>]. /\qK47xMf>zf~|ūQh+va%0#AB';0@tk7o5i*&K_9>F@Lػy^|[zY{Oߵ$P`O+tZAV\Ԯqo` Lj[n үFv[34z^k^q^E7SXjzY֟Ppwɩ7_w'ഋ'ÿ9ӟFE?OAxA.m;:rqh lYr=D$620OqilPUOY\)ff4 NObG| u0+uJ*OI<oyw~/NbKU3Dh *7~&B66R1U*A+XsEZQe Y~",(5&sI{A)/Dx?ۯ'.z>ջHӰtHܶϑo߹Eÿ"So8} dJ=PO/) 2MH$GI]O;NfcYRo$QK^#Q1qLRA{Z6,e.A00 87cGPx/E y9ISb nJ z H©)QL^{D+`R1q4 _l7rSt2e6S)O)s/uh9'5u]45uSN\{n&nTi[-liE$e,Xϑy#X:TN0ΘRz"}Mƅe|QQ7ڎmۢRnd 4ZґjETyL$F1nNi{G+}!$!ZJ>n&۪qZ,YV4 \qN98e&)?yrO4J,kC~2ĘCA)QWV0A /3@Fey╤*E)tWOFf׃ݨDJ庺x|9< v0mچcZ"û-N~^4]+A΄!QFV~D % h )noOD̞K7bDCତQ crp햮t `ܽ97XB0{\rvv|>/` C ܤVVu]uO>?TÇEfEb L&%pvvL;۶-XJ/}KL"3`Xלqr]}SUUS35ٌ !^wy ~aщnHдmkVX7n(R-KNOOyWWW䩚גz5| OXXW<zg(ĨKdk ]3/,%rM qTUN4c0Jۏ=?d\LL;o|ggſ|ͯqA>fC -Bk͆3>yzUY{7kN.6ܞ*G{eɷ-U*/2u3϶q0Mopᠺ Gv*$5&O"/& ,u1DY¢X 0TuO PgRdTΦqg,&F-Dڠ끲ɄÌ H.ϳ`~,KeiJbK"H|)JP@лDI*ySؐtϜy"vA^fhO@ٵ{qac{{?Z L$DJ6-k#^I4+}oQ*(f!B1e0YAH(W#)gTGSRfU)^hwj9c xQWH~.}fvQ{cFAm;< vG&9¢]&us>8o?/~9GD眝R\KޙJn,Wk80o{;ﰿ\iۖv['Ol7iа^ xgߙ%0nl>}q9c;bV߿'|:#X6/,' O/xxz⒳UϦյ' 0pPȱHl3؂O*tX׼<~C\e(NgGOx!?}|;o/./hKbnŊS]Ib)p40+ &X,W<]\5|n~פ>ү:y.0:23ŠϷww_]'x;GyEn Gp뵷|ٰ|ɦ˲m.|}q}sjyx79rHIcO U3e~tw_g ɔAD+69KѬO?v\n99rL&U }kѫժHun86(r>o.ōY-4Y(?WltmDjgiEr&"55=`b'=i=-ԕ08n S^ttb6Z`ʢ>j'LLdʺmʼ}`uqEZwګ.U^cf ftGY}2Gham46bAs=Z`*PGZFVΩst8uhKQ>7[ [:E3>7pH\]w¿/r[\0~GlĬ&XC_4g012H9iǰ]\-?.Cn;kv cI$$Q]>&!lP=ꪄ`465 nsܔ\/Ļ NE8rp6Ԋ#iW{auPPF2>)sa*BJwQ8V[ecE%%С ^8H‹ /'TjI2>xLrAY BS"}&`䕴$:)SQt]9kBƔ=Z5M<6=1a]R*vltH)bvvpzqS4"2ʿ=kW&[p oso؟Ȅ>$))nQUuml6{T(]nj(3Fy 1QqXegJu=)uCygWp/٩wp1))C5Zeswe2CV hى;m(j@=6w'1ɂzjCCc3Y=l_*lߐNl[S\+?u]k]AW"]۩ PU 9)c$ރ}m(gsAdsQVK}OQP] ): S a}0R1XAG}R Π Ĕ4 +iǗ6*i GncM2;x79UE@iZل 극E F/`~:dC6 4^h Drzcmw M"Ibc DbTØvU.r1ܷ ezFyIi \ƉdŰWDP:A݀4`P)Z<~Tk.?@V!!9*`鵣|u[fI6/_6 z?f6y%m۲t:ax592ٽ&ab7FG}߫dRXd—e^|En߾>Ee^2Ll6`=:$7xzF5."EfXh+T ucе\.֭[Ȳ PcZ{p{ϝ;wqF)j5ł"Y.//K6k]\|rq6j[Q+52K7ۄ!ܰ8^Jqp_|G~U2ɡGG|GwwdSBui_sɌjjqrbqɼ>z|oxfg~ϣ8 }Oh|5s^eEU+sN$LJ/q~rg zenp7ލ*Gx>0*6},kClްhoʗo! I1ºҶj6ٻ"[}|Sj{bL5m_pxfݙ[ Ptݖyl0c2ȟ:`AYl6ΞlLm/RbZ٩{3a0X[wE?ъ12ŖL65x^Kz i@g?lN`b3rO\14u׾#.?-R* fy)9{nѸ ֚AuqP *Tv .enl7&摊͙Gb,x@ B *LX&)ϡ,#dfx3cpqt0ZdT}(P$AU 2pSWV(T|7C-\&zcw Ryt!G;EUX^C=9=S=E:<2؟EztMk|]3\pyyIi}ћoCtipTuAs_Z#<+]$=#@p B^#nEbd-7ҨVLQ%7}MI !*e$ äG @CַqUj-x)! V,Idx&DrT]e 2dRu)u@4=6e.ڙ+]5@@W4 M=?yqrtM2/@& EMza=Պv[ڱZ(NEK'OOx?fSj*ٔc6m& o7޽{ -L@c^ڶe\j (QRtc61Lh/ x n߾]$!,r~~)'''yɇqVmT ğkN(EL:L0`vbdZf/Jw@mjdC tEnx꣟ogF{ְmcf+줔ynkx(  izNR䄳.Q{k4~1~<`^4% 4Ze_{[r::>q)orhl=đU8ۯwMٵ isn 9Ckm9hei0V)P5in[f5sHWoݳ .//X-'g,k3ndP.cpJ[ڮ=ίq*{k7_\wCIR ʩQ=>Gx>N/\TF&&{0knEUv}GEHъ71m򳟽?9o"Ƥ1~yc@W|)kQFx. =GYn:[$X`o.ž@29O0D!D&"\J&:VEx*uJlLD8t*NulRD@J,K%fLeJ\ā8P6}IleKRI$T"G+(hDZNZU|JE[8#i Xռ /-@h*\%deP)U~6Tz"[PR$){}^v~FPwO0 e-OuoaaAi>'pg/Liw6 \ 75Ci@q1nnjh3۰dg&G=S `/ ޻૪h;D_Ux Q惦 [V'_r/Ӛ{imƂS U L&Ӛ=fLrMzj6-͚kKV1d|U] jC"f{cDŽWbRl`z㶛 Jb )c1)3w*qZ Z 29#`IJt_0{Ak%ECK`DD<}&]e)ЅRGL)#I4h䧔z2a2:W%iFfsy< Y X{Sliw1g;Zm{b-]ELBxՎ%j \4I·fKQ#2:0c?D*9H+*6w9iIgm!]HQiiҢ燂[jvf-DІʖO Y>D$:\/|d2ӂu/'.M x+ eH8bmm"R";1jDaxFˑ-`ĠcgOay]TTa̛-LɊ,hj Oވ"H5L걣r5d~`0}S9B5LYDu`{}A,MXD9 *A#d8݋Tn襅%J=98C?w &F5+i.e#f}ϝ;w.Ec_ X60}puuE42̤U裏k"c c#@q;V|@{W^y~kZ NJ޺u,,Y"3LxhpzzJ٨쌱^ Hl6 pfbÇ9>>iy{uurdZ[{ yb{G,]ȡ` 2y羪N&TtY&~C~[Ƿxw>!l~ ]?ɟw2Լv%=ov\,O)mPJ+лJbbuœŒf2ADX/{֛Q7ڏ ̉%TÔi1B>.R :Ξ>a|H t3Wk.k-W]Ϻ $JH!J OBLŶ oj wT}^~[cv(=:co;./.4=Oqd2Dl-ޗ5 tźe p>{&13^okPHcs;2gժ1uy.7 1^9ŌfsqP@ӌ`w~>_|OW?{C d&>!\[G胢mL@nߵ!*52Kpve-p-z4zjt9ܫ9]mjP;'_4 mpiQiaoR/֬ȦO=W^p1!y&_GW3 ͆ӧ'Hic1?k{dg׷s@3o/G-Dm'Ѕ%gd*=B&33uy-FId>){N0vv@hzذYq_c'Jo@\^^ݿ!]^{E~ ;f@׽߰}sXuI,IIW`1Nx~0Q$[஝2(؟20Kb"N0|\0z>#KŤP'DzޒECu* *skG"()Irb8u>z ' {r6E1}VBl@PL 1BW1&L 4-NJR"aQ9G=Q_;Okq8Q&d:ه:B&ΆH) h2!isݱE14%3m[@kf,Ih m黖w51h݉L&5uS1K3j>@\y5>fU_g{]ާc!WҢ5cXΚkR>mvFY}b+48&lW)d۹ j{phپB9m.8I%|Ɣ i=̐=$ca) p"ޤ,u&܂96!PCt=q^Fc^5-* }G$#m΃䀒M m碩xG*Y8ʤ9Vl=v@mWX)Z;-,MD^Pj`tjTOqO|UӢOnq;e`>bʂOA*A?*d9Az:sM,,m- s[L6w$k6jtr)'O ! #~Hw5vtO#[S@@p^灡5j"nQip].Mc>P̘'iʠsJj@ր|q e s @wX,xww]>VsNM3@/E7ygk[[|>__:/2qB; d2Ν;ܽ{bQ駧X֬۷ fX fYfDYU|rqqsjUà?2ڳn;L`21l;ks>uL9z8N&P3#]{5 %~3x [~S>㢉k!sK<|q6B)^'tw}u)t!dm攳 ~wy!?g7h#[A, PwO{SJ{Zdi-˫KY e1䀪g:Ζ" $G\=ϿpeKOVVWwevR3;.wg'Ƕ ?Cig> !:t6ڠΑKb?^x'XV3V+-ECn0-QƋ{i^9Y)E^loڇn? Cy)9j#p)+nOTKŮR6:;R$ 8H/đs|G)q&T.Ks1DBXps>Gh17N3ĻSd#NdR7jYHRY%tZS۔x"W /9^H4)Rg r]2.{s3lH' CfhԐ*QM^ fDn$JF;l^fi2C8]$%ǣɡCsπ=\pS?{1W'Yc:+OS5TB>2~@gvV~f'9;EU0 lV*PbqrT}T֥*/2Ms~(@U4u]pe'SRu|eu5bm5JNiNFr+US10b3ǜɟHfԏh)۔L#(jeM;ε Ґ'"EG@ /)M8/d̚b"eHc2͝Mb2A 7̮ݪKuO}j1@ sC_B3) wC1upa͙ %,u%49sRaj=Xf5|1A[-Ą"jjIbSd)"0jfH5QUҼwYn,͒h;8XLW#oNLQ&9]1 M@DIR w$GqYȁSxFRos]@re!0nH!vq;]T} 7^@>>Hp s`+_UUrtxX,X.ܿr-˲#aGłqFiv- ժD(NAG$6ssJ~ccsT,9/е6Y| \SuNc\xu^Hc|j_yv1W|@N{ ]AI q`,[LIsvevm<\ IDAT18O6 Zqqtf~H,}ܫ4rR XDj;7|7k?Jhcbu?|Č~jy %|׾ n~|fՒz?`uAl%ِY2Ч*u0 >5;*'?{m:1qHAFTFC  wDYޕb'%`{- ռn! i$!HY5A_wbgWw;+%`u(P2Xg3ܧ9, Ή [ŞߙU+ *HnOKy^NBs?"؊Z۠8^ws%5:q<IuaWl#B v|=X ]@!z'Iؒh Q6(}8 ġKNx=zn@rIIV?k4ou 9NC͒r$%=ON`Cd- .DjMhN ЛPN>f=+ s8^?KA Fkܵ/B]5L3"ɅC +uPe2f;8RTBqWuۓh&Uy"}g ސ;OU xVNͺfVOlד\מľlۖn4Mj|4@Pdr-Dlkk}c|lRRFC] EܛABn Ș5H`$FBV00_ 6`qI\u :UH$1m=agJyxIq*+O"n5af+iBGn]]+~DL Tj ؋hVV0Q *լ'/vǤ6`=2N+k&kEMUErʆ1R)\Ge}!jjn_\5Mym8B#*ItUmh{*uȁԊ _W[V ӓ & %SfNQ+G4(k9PxH2D}=#қ`ʌ1!@13Loƅ:H/LVIR׵:Y3Ŝ%u?iWC;T7{dI~yZz}uf8FQ"$#AHLz:$`$R 0h ` 3w{,zgRQm;-On\(wJZӬ;5L]֣ڀ,q9<1!]\BΨ:zXg@Tkm;^Tf &Bq&V_-:F>@lݕ?4'"}wc_~]x7vZd2֭[ܺuwr- s)5yP0i-+2|l6c:`W^y_j)9~!<a6bj5;wewwcA76dR$.AyǴm[gڶ]9Hժ$$Ɛ^6ή)I7zЯ jTe#'%{zObjbJ+'MQ43e|G;\^\5'E/AMyh@"-Iqk ݃I[St{MIxtx>[oKϳ|k$;,A.nJN[ӭ-{ט^c<ߥqrSCTшj]yѽMMrl,S)91ޔF$5nfZT״8i "loQjGh5֦`^mCy3Gm M*JfÊ,݆ 29|I_88NK^{XSd{ t^y?' Kh>(o7BGmoJKtڂι"M Qsk%$r-4ǣ C{MIT.x!/׈s?r*f@]qrjEJB<޹(hs)- D./wͭ)dܻXskՂ&){nu]L@Y^-Mr|'''`\nT=%w}gmqO1; lxG =t?)mz{W"KeG4z_ \[`UID<^w4-!͗5\u\jGL֋5??ŗמCXs>r~OȠkV.:_J䯒H 9&I-cooxILHSohSosY|c>{QxCQiSԈm,$q$I h ,:h$13.-&ںؗsگo$ONյj*QtXZ I'p<<{.K #ޢɀmj* _>S״$jz_6Q鯹4Ytȱx$A%iVGn^PO)ش` |ozع z5f;Xׅj{R ]"1e ̓uU=ې(*^L1ez[W=[ *ϤUXj*d#ͺ!8Zu4mhϧLS& n, YZqCk.ת]C|t1KCun0c$fTuMl[./.3riFu3Tk|s>z(J Ⱦ;tON=9??.P,Qᨲ\\jV ud{g:=D4Q6 E~ ꌉ/o9[y ^{ܹuQ]k3EmjcrВ:uRK8ۆx|tg>F|U%t/TbTՌ@;'@$R d4`8/7vx~wtwnuco]#x!t1j oו֫EWY0i⺋U\fl1G#^3g>PGb FFdp!mޅKMǺIbb@2XcѨ"1jzE>\_QSΤl5qΌsuC"Yd8y:VPmT3tj66\=$6*fMy^~U>|}/L<t1T^מ\Jcwx2x&TU!$I2'Oۆ\2>uX &v-]ijd>DPH*O$ H u)>3#H-ꟍ7Y|UVI*tR cLƮ?(yiذ-]LA#'e\.>m~.DŽʮmLaR+D@{sUHQ?W{:"]c9霪gis@NLQiEmYw6 NǦTRHWc&k#\K^Lmnp??=F.߼F1jH6dyL7{ & 7U)8[!'F)% )909%,="7x:g9J`e]zͨ*$/v]ee oy}XFdqA0ZJ׆XFGq5(2`+Ӕׅϱ޳u>*]u0vKlp^xKo2PR:iI9aSho7^W,3P!7'!^`EQ0uu4c2˙՟?R[o63J5{!6ʠ7}{<65mQ6{{{\~}goo7npma6Zvvvx7!X,8>>棏>y"9?яxwq[o׬el:u][că^{5>|ggg|'|G_ld icL۟a &ٌh$~6RUU]z]McdXp+C1 l30r\.۾QpIUT 1nիob۪Ԕ9A@yZx~+B;rqyNJBgf{{k׸q:;;hO?w?$%t|TӮ֜/r^1=zjчǟ5:_{v//X:=]4bE׬NDŽ>=F9h -k\20멂2T$/#ҷDqwtAtXOxcbZWlmm:v Gg<8|g\sr~Ax;d~l_C6&c?תsm4?JD6^7p~F9ٿCtxqu^Cu@[9a곺Wk?~Ώ>oGl=$l>eSVRj$6cvמWnҿ ݏ?fDd=2EeCWڎ\ys(8't~ ,P+B&gV71x8v)|,Nm^W);+.Z2'Of8|yzkrXzF\s*ڥJG֌@HHuo9]c6H<(AAp`-gNxx ׁ~# =&(5M] -sӠںlڌGT8y=ˆZ>NmLTaV(!F%<1/دu2`>6޺q|ʙ3ǾTPDew& e7T̊5֬.OO,5l}+,y?ዻAXO1mVgkkl./wly\TU,:CL'&f{e x_08 HXŃ:暳LVFʗrYkJi9zٽ1C^S4ӓԑcu*w}!?~>J]&w=CZrIu룋Qp(T Eg .Ikyҗ řg ?bw*EgbM{+ ґ";1GcdZ璝/ȇ$ 0\IGf=O>w썢N^6F?zPVÐp66c=ve!HH>zeAI i/S4{nv{{{\v]vv@oݺ7 ~r"'px_toMD@[C|d2)f`[o >>|;ܻw˟x-{[6N5uF@/3<ݚVUUmNi9縸:fEOigZm4!T$y51W:$3|>RW3 6֟|y$1jD<ע1D>Çܼyc...HQ_[9888sw{67_g:=IX.B|񇜞*jRR)R;l7D>RF@_qe)?bg?.Ӄ;Ͻt ǟ9~!u4']i+Ffk>g4z2O! pĮ#I\/(vV IDAT?TZ!jPҵ6-Q+qxF̷vsnH8_.ytvղl|u{g"kk\ٜO{u<ßM*n@e3PFpj[ˀἵCxZG&A3C0 j{-AasՆ lzm_toO{lЗ}+`INf\O̯|<{k&VVq4n輥c #UiT&Y/RgEUqqb˦gtd2맏Y|0XGt]bnHJIlW-?s:17t͠t&cPq}2fT'c`R] 78K@&*ʺ+, q=sjr⢁K#]ׁkiY.F鱎G:Z!|GcMfaBF\0սW]},J\yhw" cpۻ^gDX9EuZ25*hy&\^ΫfVuWe,T///躶îղuӮVU{HׁfgV6ϛ1AI)y~ɭ>ߧ+v׿Aٝmq]n޸.;;2NeՊٻq.7?c6+Szָ>ݼŭ^?.>P3+/@$w|{w~7ytGI@Fﳽk7hRK'4,O)5]"I|R3UB=/d.8t*:.-M)TE"%>;:qEWj͚ut6jhUmY/$XOf;ڶof_D\ƚ/\ӒC;tľۮo()c0Ye3ǧ>}˞GB\b&d̓=C 6~#=ۏ[>GK-)ZX].ؚJ~cu u (\pʈUo^Me v,I#h<j{Qp&8e-kVG'6)2s]mQ֘EPoO -\#ko?ׯmgOȧ5ixgE#GٓEDXq4 I,:q*҉'1S;G,4T$,wc"Rw p;N3Y.cvB`:IʊKtuy^k`$.(X%tfNH^SD%ӹR `l4umi$p  `w%3+q,EhskqJ %>p_\b&*iӡrr}QבhNbVıfBɟp8eTt'OsՇrCX<$92V`j_6sy[{y/H &V'S(e(+h_ϰ7aփ>\1 1;K}.4+/&UT>!Pu_{k=r0GK^ENʾxXJD *Ʋ]גZ!Bۨ|MeC}N6g䎹LBJTGYv-@b4 dW &^bp75^KYXzЕ<('FP|2gٵm!>?P}\OS؈]e>s,t<ڶYp>**P5k#i%H7 5Sf'bײ<$MɮuߍH!IU-im Yt$FfE`TWsWuZ ȚmIG.TƲ[62=.dDL&0P Y cΠ/~!1#IӔ^ɷdk]?Qs3֔Nwkg$YIA39C*ògWڄ#@,h_dFI"yr~2U* . ;特ACvht^uÍi7tdl`RAO= $"یt^1tb4M&TGԬ56(cϛME2S_a$&F<>Csf!VbZS)nAe0 [ r9PR}>W]; vxkoſU T;fi,g8?yD^nqnzY8[sƓ ۻ 8ژ|6o>g M8s@JD~|{xhxʕI+/MMG/¯>58&'V);S+AzycTzwPlUbK :% ud,챑J  b>;?ȫ_f4fb8/3ze1J99{)HTv\0GX }xGzMp);F.IvvcR%y-xcV\g0v&+v{"mNT435֨|ʚ<[_jq9(v& ĘݚX0ʟ:w'9a%k9V$.+cP&z3RyY6\mg`X`g|[1OO ЎSE-/! Y%dS{P;'蒮ːhp4*c+w}+IhKX<*7LG }zeINe+TmKj] tY9vmꪦpB"Tr:+{:h2xgxNbi$` \ 3UW|0&at\$lY##)ƁumZfB@7Jc֪$rYAbj|BLI*rW%ebt(>}? ]5-\ۢU%Q]h^]>P$f P`jRE)7NAb)"z9 5^ 䨈!@>rFƄ-3S|LYp`% ΀| En8eW@&Yv|\Yڻu5- @grD)L-,qAVƪL574 X^|hKs=q) g܋~sVy rqp:^s7@E:egl`EßllD}wp}"ߞf9Ji/nSo?}2lqs< }+Kkc:me@e_I0UW|3bqhv r<|ooݒ6pc|ܸqCEEDtƬNwOcC$c!>dlooouk<!쌏?}{|C [!>l I)q=߿|W_~Ә[WNPU1qڮcԍ'U|[ggK_M^z ^|5|ywYV0^kß([/n=s3؝no3lAryr-m4 vU!:F \-F<>9ǧ:s19V]a6O\BRdjh#.0k m~۴_ Q$;Qyi;.V5-%6vt4l:nI2gI8[pxlTس`iƆa Ak[& kbֆ,dlӆҴmgm ;/s|{ h~^~g(j1Z6mߌl @+.L-DLBq*$9!̨g<1 uU5aDTʤ6A v ug!34ڴ+٘SOlz$7VcqdV6l-zg]P ƠMfqy}N~ÏY^^ROѬ5;;[ܸyxf<xŗo}./A{ l#[l>s}+۠M#˥Bk W9s_ bA02 ;e5Ȥ V67F9pʉ\h9{~u{*8M=GOH; ʓS.v*L[qY=3nטʼ][s͗yHsx;1q*BQksl:ޞ>Qcu@#\Qqи3Ѧ6< pc<]9:\TV2(.9%d♇9F8;8mkI9io!w0u,XIfH6feCrq*Ž>m83ʥA* + LsB9)ryf211'Πkqi7Ue9WcIJTjc쳵C'ZyD{+(AgRA@^JPf"gm%|{ᜣտG?!B_YU2ڃ)d.wV17X|amzmelv{_ʀ#%*A'T)dXQI+BnL>k^J7,#;rd ާ$hixyO5bE O1WޔUKJV=I dDRf{ߦI3ףKe%#2# ?f-Π[/Y]Ӭ2RڜHGqٌDPq8:V|ZuIKIz+}SI0]2i;&D")'ZacpOXvЦsY) YSRђ΍e cg2O(IC~0vkaf ђR:)mxR{?`vrPzyϚ<2^] Q=3& WY[f]!KAl4u . ^TɌ [SP{Cے9.yBQ- 93A]HI8\LǞYE#xƣ-Ƕ#}>$.kbX5.ivMs21*z:d:C(YęO`Uv}-PfäI]emYU:(Wץ~57??-|=dRu\bɯ}y _z0wvo(0WGsYuW)S~r#I/U{*1!iXZOTCc25ѱHkC&Q\ru'1 ʛ{8>&blAԷ9hEhDrSw렒1*ܜ2ѦDTEñF8{{ny^lh$.EeB 1c0&1vTU`:w#8"TD'Ga"B$/KuH#nƿ,E;޳=#`-1گ*ښ~Rp8vC\<%Z.'ﴞ+c KsxspHMs$2a{ㄳdrJ3I0mMi<_m~ & 7 )4W)\+ӯBل,gb~ﺛ{H4աhyTUM5>"JȊ5FSikmJY&$ /).%A~"KdM+;^g_A(Ĥ9u=#iZ)RLCKEDzVJ*pO|3'\EEjHJ+ޏ1Xmr?eD(2-U{E@,6g^ܒ6(TҼlEu]$ /,qk‘$=hsO1,p0K}'}戔xImK9j!jDFSI-'QrkIu!vqv!'~2lt-N`=i96=$bxMmbԅ*Ӫyb:>Pٶhĥ4eIR*imXU|m  4J)kϨm جh )cW@e'sN3LS`|X@LKؤ! ^2S6rP}ӮKɏMΔTR9NQS6&K6L42KlL͠>\>6ApyPE#ah]*hjqPfd=9u>kǬYlଃrĻ&wnS"h6SZ-qXD`{UY@KzfUXmӨμi;OB✶YkÇlM9Dt-1Bh<iyV{?6g0ΌC|WǬkNOOyшﳻK]׬V+=zν{ca_e;^e/AK= 8_^^rzzm9;;+Gq||իUṇ`sƻ u|>|1]וr!nIa!{՘fڐ-1FKF׮]͛4!OuFl/osrrz֭[ܻw$ 4Ν;P5d\cX#Aʜp;Uע>WaZBO*Ⅶkӏ㏸sXgu HlN`=FVԣ#^ux p#Fc"f5UkA( h,H k' wlq_#uHsf{\6I.9zTwO.N{yˏOxhY4-kYuN8؞0$h=k/}=kXi;8#mj?r +;jYv̴hUIL$=.p1K|؟mrUC@*^dk~ׯ)c^f$}l_|1fY>F2&ۿ ?~1<|Poz^njS K{Ő}<V@l9tv~h#;ܫfgo7n$P_9bRs6+mrf^DhUJ,Tuw-͢!֔QUs\\-BإM9Ie0,Z0Lp*531s*1EUS#>N©|3ܖ+"̓p*t# T^N&y 52@tENRqs z+ |m1vQCƒ?I8yDfG]}s /I!%+iԚ~mV\j2 A `0G{z23"G[sखfʱz+3^8EzBϥuwh*Jp9yfB5$rBKN/W$q{Ig\'B:FTjb+id`WFJsCRƽ&h".DH\\Toh% (C Dm"Z6͚nZL׸+ M}B_.bWT&#S+:b K^嚾f0ie81%V7^v!l+%}~,_AT&,.: !KusCVAW ,vҁIՈ ĨT8kf9zFJ[Wl6-%N{6 Syi7H ^lBNw3$xWw|ߓ*{(fAXbL*M;39k\ WTfl$8D 5HЏs܀uvN@&NC 9'pr[SP?NjZ%Kf㡞RMPOb,uNRD5XAҕIb bJ#I^8粔C쉩5|".IZ TU-u83_ߣVKY%$깼g%A:h'R) UTuNӉJ-+3B#_ڭ 2^ ߿G%)䄐"U=A|..NBn:6r㧓8GΘw4@*V1?2{ta8^)g}(@%9vxmTObϦt=5%Fㄛ}c6G@jx~>JE]~8f})Bd߷߱?vY?V0պz2{3IٟE?w> XYg@W-jtBiz(} 4Ph[eg[L`@׮]%eN}6.tssf~C]%._ llwFU7&3>(99S֛"fղ9[i;V톺nL=yC|zS9K|Kw7*Mӧ',yar~&r"!BOmX,Ο:{B:+O2HӅc+luFg|^е zlΫ씿˿fՆlF,vNؙM5Nf|;M`űj[?m-iewe4M1L`8___ %XS:ΖPu7,J](P̕'aa@by9Br#G |TVEu@Ut]%:ڔHQ0Q9ƴr |Ybu^9>]Gae_|4rg2!35ɟ&Y%%mkf$!fM;FagK]W7B^VZ<*Brh7G;f.SU' L.YٴTutJU5ԓFmy_JsצnL*`ӮYoBh MSw"k뵮JIM3jԗ ,]Iԍǣn*ܮP}nНh'UiCWcR DIa+osU?=lJ[kT({g\ W۔zI/,!4pG2F JV%%b6"YmD8XPܳy3Usrl>.y !eh(:;8X'[ &"Ӯt튾oY/Wm7nj% )؇?3_$2I|Jbe-X_x[r6Y'D`cn{$8dO]h" RBJ)5-RPagdHg)c.T1D/B3lZ{hJ-*ϨT<Z M?c|{4:!qO0iD"t-1^o2* =_$?].)rJlJvBtHM(q9\N9],Y Uy\D+$R%Fs乐:<}Pe84fb~(|(ؚê6XO |}wL&rppK/W{.ł]^~e_|>9)7s#yatX6fl/*3njts@sqj+ͦӟT&U}:V! n?di׮\7o|W_z۞I)Y/I|+<}t̳noBa8-AtkNpؙvfd~|T_+ϾʘWkָFc✔N}|oqw=hhw'QPoc>Nɱ =\g|m:;bK@ HR0}'%$ R:ǩMR阉$|^bJL8IH=1szn5q,h=x=4S+i$$,'$;<al~*pD(kJdyH))$\`-)8*[9aRqXRThɲ4IeO\z :6O9ED F%Cێ,ݣ0?|*Tld L+L&Sst}jRX57c?S%[Vpu&\I*U躖Lf}8+禯9v黎>aWU^'7RCPxߩϯ+'jݗ9\˻5(DJRwSd2.~QEw&!TF~w*22z&mk`* SH tB$={Y:ϊӰ;Vy;WpyvzE;LdDXf~>|lIӌ)`,H&t u 0dCeRT^81n+mHܦH2i$ɬ>۵*#J!>Fbt0˄-ڲjL6as%ɯ<lPT*&cd}& g,:~CU;DB3=7!EW!?l(99LYG=e IDAT]bl@u\Jh;nh.\S.b/Ʉ1+\lMh͹Ys|A˩+):D>yoI Ü_o c5ce66kx899a^3Ny&UNnv!:@? F`{RفfK.qm޽q>(4ǤV@իf:?;;;f30pZX,XVm `k28."s)1Φeݬڜ20I ²(Ka59yxgyi0{ecmK۟zb)%kĮq};ܺ^w[Tb ?W*WmC~GGGo?h vfO<ʑO99ݰn.WfI1 1P7 _s駯U5Wo1BJ4uE/B/:ڠRwfiYwZN]ϒ5&}G&e>!7%aoGLx3P7wl{]ZP\.K?ܸ߂ͦ6nlI2k4l,k6m31}l;ǿo3tY.<}y 81OK~1ޫ>-I~__-oE:o 5ՂkUvf:N䕧L,W+Nɭ;~S ǣ}'!׮_%GmpisN= m!{ⳗݻ6Uy "U;]s})?!޹Au&u|\yݏ?ï/rublzLj^k/dm6jA>g24 41l[vf ?+tN*Rsbؔv}?"jdWCe vӖw ԮIPUu!)S&3}{5 ) O0({xFyo)?3'ƨAn:)|rʻo>~̕ԈM&mdQbY*d뺶Vvw~:7_\A{$=FR@dvY*EDzvHǭWvF 2ivLf3e:67'WĪTlΥ+y899ǜ.֤赩gCZ&cZ9^}0mȤ1d.tNL^d4w?}؍z9`f8i4fZ+"BtA+d4k]e  }8Xb-[fz^v:d~$G{؏4;lh21_"_4~|2cOMDlm\3>xe 9snC졙pq 7 W.ꫯL+уܿ+W.2JOE}MMȁ8)qz6e848- -TbqSgow{HSϤؙ0=ds GS.Wu-{yG\ؙMy/r%rayvv-m߳ٴ&;L F5y5苈(U._۷.]g2ݧdIIobU'|:7ɲMN2]DNgoͭ'Oޣݴx 'ϗrCL)EWuh,\vo?? aBՅ [g_X̱^s%0uBd"rRAjg"5 GؘdQ PPɋ*/TCaMHJv$_A]9w']:$|d6wBë́Dt{4yz=L1Kʤ,cs^שcM'Vı*Iv1۱g}'%Zgj?b3ϚAhĞ85IVD} u\i@<,[^GeijU5ZAsw>ks<0Cg䆭 2,[sģ&jZF]}%^ɥCaٰ\, ^J ZjlX׵Eh|łbgu]QWunr5r~D]!DRKxm6}k>6f d5 TށsUمY+յ's7 n-L3{BX&Wlڠ`]V+؞qir.u5 ,_׹0mmX2 ei|V_Ue"lQqC(UJWnCJ KvcAz^G\&}"ðe͇| g[]4c_ 2A%)9b[V-ysvҤL3Cѵ:z!]vs$ y &洚b{!qt%D%*Z2 c$Ms(JUS8 )e!gV-MlH1i'=w QHcw 9l ,~b \1NrsPW@$O|:^Q"féSFbPgYr $hLLs[O);1dǣR: *F A٥RI1h!3I۪w%orE>c1Z)Ҕ96 dK kNOal {wAw~:7o|ӧ\<.+Wꫯo2͸v<䤰Ǎ9f7#~6=TdqDZΊd0 [m[fYav]W@wǚJ mX#W*?u oQf]"l"f`͡3yO7e5/T0.k.w~ć?/2G|UlOy@ƖDN&\:wpmSSv\",_~&o~5^|9BDC|;c^3L_c^@,'q49)){;7=WFW~`2NsftK=l=u]Kol8+~z~?,a~7WuA pcbZKX\ /t7y6Ibi N |IswLI) UcO+5DƄ2q DcHfxIĞDv]#1=iK~E_fz0-٣+=j]/B DS8©8&IgH$6Q%{J' Ǟ.K$9@} 1$Du'pDK8A5+QrZ6?v%YcX>CebiϷuFNꤲ3U(SyP oQaj g9ٔhS$\q) jJ1Fc WqYC.z hw Qe6Ie05­}5OR<[.e}ز ='|‚8OۭG'%Rd\?f(SC>tZjZՆj|g&̚IPK'CS ! "`ȑ,db;b@qvDC7B#e9 #yT3̾k%SVg!8'8N{Nu $T#&ZQv"l*O]duJJJmZ :*{N_U^W+ )i֚3syWSLqAȈ9KM0ddl2[/DVkF"EekSb#%Eͨc xad75Edee}f̓Ѐmi>qiHص54kkPLQp |'fkpxu"PH  HS^ $s(>h {Q&"r?dBcO9UFև%L@#}#i a21SΊerSz_0ؒ6:=[X=`˨*TuM3i wa}4V]lYaoJ "6+N>1NbD;3tKnY0;;*y:b'f:g7_sYuW7]eK&4Dr5]n=-OιYOՔ;#ggt)DXF'/ 썁6^GgAniw]7jD`1F%6Ma7MS[nXa6bUsCd~c |1rc]zٮqR؁Y;C{9.pPDI]_]8ƍگD ͛7?G?dX~bO vޓbw{HDf{=x_nES7/rrzk5ZUbĤbJ,j'7o{1sWOɕK#Xv8TfW׀c%pUa噡K,ӠB(ʐo20ƞĞ <<>!H=>{IRگ""vX"$udKGɽ5EP>iy)eYЗQYQt dv DЕ;a%?z41`0y N݉z\;XD@"'܏yM4߸`4evhErkXmQ5셦HY&FW踩& g,GP3 R7|˰ 2k>=Wwa2Y þX/7 >Jꪦ]L~>1H /F>3|Rb>m?NHQq1in4,KJ#}} 9e9\cd|&-41J qŶK!kZJv1n {-RUL(͈-LTGTɹ bNXzKiWK6堉o(4 J@ִﱞ)%Ze0l2 %;;Xli(㡒/|lP\/_UEZY)R&@P7$8H" 's IDAT 2ȫ*7Jհv(s| b6Fv hIc5bw zJ/F!E#sD䊽Mkȶf@ٝBYhQ"^uEX)%pch5flfEnJQv-fȲI%53n8wAu熕oweKǏ42XU46twg0L8::]s|,zpn3 Ii["n- {ywvvz*sA19W$@=^x/suiyC :cN&xƯ|;Ν;, ܸqzq}}]޽[B( j`޽˭[x饗x #65nkfْvo2YI|m|u1!1\bnΆ1DտU_ABPqj/' 5RRTS5<{=m[l4gi0z8B E:T&K|t ymBxv.ys#?z*І:f (R+֛ ,:'+~]WCIf"tBӇеĮk~k#sLeDJe5;7>Dُq5ߵ52Z4[Ҷmam[l81=_)c^8qe͵>}pEI_yq<8Q~3kjS& Ij<)fB"׮]G|׮jzohd'V9&r[O!p!'g,ב4'gjr~6}Jt9v5D\5!@׭9~6l6 gg8f9]ʱ7_[OnXy׹q*w}aу>K@uYx|G9Zۈ }wҳKZaG6@cl=z7Dx^a LB`* *3%R-;&@a" ‰q$LEAQ8`/n TgTg TIa%!eըN<T,7?^$Ofai,\n#"1iZCtLYk)d|/,#N5 5`CTF'SJoLQ:e\U;1w\),I1dfiYZwFe(;r`α-ɚ[ 2sG' r@stƘ@YWe GNXEǘ$.ɂtX0kfk[ze9?ng(~oUFWZ6 -g>x?jūkƽ{w:cldk{1y _y^~ơv>of-^tαo׾5^~eO>e\2pe"qiD01&smnݺL|ζmq< UUX,u%n!GGGk$Gc/=_ULg(8o.6Pel9p)6H9邧7׮dt6jQu?ۼ/pAQ>DiP\V9Jf, }G N6L&p6cCQb츕h# Ǔ9UUwt_|_>w]7<]XkR2,4O$y",ږ'g<~~>ËʏŤfdZr~~l2Fu]YЦ=3si˶Hm'l[2rlSmOsl6+:𶞦iIflmVF`ńg%'?KVZ4MkڏYal}>T1~!}(/a !UCDH׆U$W*zONgs"C_{?ĉ'@ג鵩p3ie:m8_.ݙseI5ɣ{ܿ+>w+Q# }rT3N !n8t5k*1蹛/ޭ;ADi\@Ⱥm'w)1i~׿?g Q;ӮX _Үu-mm&wfSfӆl_9>X+ &SvI!fS#bz1+[nB/MNݰ$oy?{y^8o%$*?*b"+V7vӚ"azLa`_ 1tt'uaS٣fҨQ #<.)AzU< hdy8>{cd{lR4Σp=IYv|'Ri+ IMO:v>P2Ѹ)r9F^OWfkQ,!ץi'å*9g,'̜e"qg!Sg㮃'p"L MwSnH,R AsnjÖTurwW9GHwa>7)Y =<*"`3xz/ VZl5<3 8\ 2 !Y`4-"Z3 Y )/[ YP`2%1ƋS5Rɲ Tv&˂RG9Iuy0+|WFF4T>75CȍQU.!؅ll}6R5S74 >.RɄ-P(@b`\ ^ kMssppf)2>oc?~jbwwHXowgl{i^,l؍ߓ8uF$:y?9%10#>'R5·u2 t^X,Zݍn9G~ͷU@6v{bHk:-MFu&&ao޾#;VmqF6po37i=Ij7.B`pU )뉋ʡlۓکJ<"ӝC/]nګs'wr̽O1ONx z&l7$9~\*kf& i `f843ѓLtѼhFE Hnګ2z03XZ EQ'+3nng/}NȼLl 7 RcjoU%tNlY& â Mo#EC ? ͪ]*ZIQyޞg}VoÅV XBg  pcߩ16SCs1KM7dB6 1*1=#I#̚kuPFIЫP(c 9)y4k/?۳벅Ze(&/$ĐTB߉09yU+; p.l\ܿ$ ^}z}$}9WY3eݱi[M 1K=qlwB솞0pxp@u4mC nGNmi i\8Ru :Uڥ .)F.Cr4Aq;D I]uAzB4ظsaV"CM i(P"ڌ6r>ms&$!4-M#˿6Zı?QV7 %MqM)Ç_'㡟ܟ>y^Fhk5ΠiupqU7Kc<8ζHB陕`bǓPv'B{-:Į'˙ /5Iftagf J-SA~[yŚjSxe9_d F1ӆiVee^ qلsyr6_FP熨،׋֨]6c<t1͠@#7$ ^;Aekq3c%Ao@Pfp-R?505[i*cs5@JeڐŨM-E{wz|4n{`o|;1uLB>==:prYiZ/gN#mzux x n߾l64/ٗׄ]|~/}KzxxHϟW-7j2{c\ryyr~-SvFgz_{q=7ntO.f*'ż~'?cZ36 mj×ܜ&+8Oac3z3+4n}1Ku܋-q(ٟ+i8:95bg?kkZ3q"ATofo(4iۖ |[o޼z$~oκ-8Ε+_f$pŊ֛̎N)ϰ~FwqVk^{P^_I" E. iN9~W?_z򈋋l΍#e JVPj7O2m+439Yg|k™Uu7-Al6뜚f9>>sB.m]inc?!4z}^~>nG\>f/%~~ڟWI f\ /@zVϘw7 eL /xq~QxX:Vel~lRQKfq4xb/۶3ŜҫVٲ4Kw'HIy!6uPI4Z^\]0՟4l򒣣#m*(aiCKA+vK W+_{1dJ2_? %x%2DCG4;.=tǭ:IanG4j`t=uPBEh.7/V|_7 =?6! 1i&wh>|>*(Cthck%?xS0T6y 9S ^06HD{9YR /ЈTuA0֥".Rf 3^e_L_"\ ;p_sw_&4/! l"b de=BAݝ8̺DaM T0=8UTݡMf)R) IDATveV5,Z!PB+uZ] ubu߿Ux:д-M 0'f1veyHUk툁x'mG fX]NE'-Wbk%YI5) `URg^D ]۱f׮]GiaǼ+U٥dkٰZX{Sp6dŝ;w8==͛8#ݻg'''s0CKb{K XWuNؗree3WOѯgD>ݬc6IÂ:g~_=ηs@c {` YJ ʮax/p>^;Rj( W̞>? el ba5n0jFb;qVWJrXM۾ )4N1 >Y^KoS.d޼{VVLٞv~j˵;d7Tb 9Kꪩ_ƙ/}*ݫ?i68v&uXw;^yEܖ9Rמ06~iEOci &=7e2/; "3WU[t5h+rhK- ZQt pYYA(էURT~h&d &t.N37'oc< }uM+VXńVʓxqq7rlJ1RW %!1?Qj46.1",XEK|/GBMVUD`28ԤB82Pqg\ `FY!>ҌK0K#J)JW|Ep!unH^؆=F(BCi"MDlyC3 IOM[Y`F+po<&~SKUo"<QI:r5F | u۴f0P_sӃT{_4m28bO@N(mժJ1 #!d3O )h&#gg{3̔s-)4vn"]0Kzͼhd9cn(cqKͫxg) d κ1((LJ~K/qs6#s;X|qfVFpLbo|,XXe}a` 62|[M3.={V^xfݻqqq;!?~ic>.9<<죣#NOO9;;舔R$XVl `u\| _:c`3O}_^^ٳ8ػiX,Uf3.@dQ۶EDxGGGyjetSmh|=ag7orvvV)b:.//*QF'OTp>Ċ"l7[FM& b`ZRSC5(N4JFYv^G %[SMvLi̤zb(fk*XNߛmc=%6̯.uuQ*/Ћ(ܸsoo?Qƛ+ ƙu{4I_PfvEFo~tZ޶ B6mZH0YU*Y}E˜^ @I7N@)thȓ\x =eQ ŒBc?:EQR{#Yߣj{ P;ÜQ@.}& 4Nd$!-86VB;7.{-\ZT|݊_Q]əb @? tsRBBK}4d]aR%CK;$(% c/x%+3=?ȥEbO"4XI82dZmfCl%Z~(>ؽGB$ƶW!?y1&MXVfvakzJԛ/ 'J1k"]2zbRB/888mgDdzh~%F\ A%%aoݬ1M4AR)<9>{KJOc>7Md4iȥsm[ɬ[b^)iʎ312 r9Y!w3%l\$Oo6㐑.{a@A(n]I4`o rv]%JD$|qsoYZvQ#Xc,)NBrW{r/j 4(/x-JPeeSKd=TNRcxbB5" `5!6beW-%:.ZgR hP,1NztMX@ Je 6 XTyMS 4(8kIOb%irA,gց)},.؛a,hĵ}<࣏>,jU$=zē'O*P926Fuil!7oΝ;=n8vbp4Mu#ʶ463t `G}Ľ{_w4s>RJx񂋋 t307nsL*4sNNN!kSPk* 1]V"z۶RJ7ngcSֿT#>?{Z}>;KcONYN(nMNWy4h?_x}`7O"]C5ib˝6E6L%0 <_&V4'W-@S "-^[}U<p^4K=P̓\XO#$̮$9sivs,!pW"[9dFBIiAFmfA*#rC8@eYJfxnEU)˙,0Is# ņeOQuDei4F.$Jz؃@u{=h e'TNf'&RUDd6˻g"L !q?=U@$Q{`S^H#>±\=-JM  c pAe˜1lw' _ߦ^+qyX4biaR-9ӄ= P\1R ͖~=)JmWqRyN+ 3 u>P o˚Tuu$ҐAIcQL$R5ӡSi#sp9{PeZo,V;7횠YW}4[SQHڇ'o$+% qnf EBԪ}j}rr\W}0O&e'_em!FĊPQB@G#墾*O,r{b$5EZ0 c3lU6#Dզ1rIГ!ߗ,Y=ٓhH$rW Uz Z cIz.^,`) ,N|Ay01s`xl}N"TVMeqgGgG}ZꆭLt슕]M-81)Ќ1e?At0ۃ _yk6yn\/k\TKfC+1kd!P?#gJeؾ06 m=m49xlx1?y)k$u EF>Ee_;pz>$LxϚ58K%\cݻǏkR?u}7|ǵA988.kSJₓ˴jgP!?wtijJQ`ѯ]V뚁]b>cdٰYo(qr}VqzzZqpvlw ,[6Qýh֜*?zwet}ߔ+at~R(Xx v,/.h_|͢w?wx9\G4i&`Mxt^4Q3ZMX[88вײ1`[7׿ͷy9==Q lF8궱,Va3'^lR:Z" ɄiTNk|^=|?=" ڸ'"P7O)-#4nm~rbHzEߏ ?z82{s޼tlړYl[...Fލ>Ꞷmkeہ3ap^2*<2].,A |i 9= )&-ʘm7\O!g|_٬mfRNhK={ݤSh6!1l{BQa(&@ s>MVC"jGL}cOV z!|˿͖*ɂX,TnW*73cC)+Pv!fA8pc&m00E.~.оn# I>>[7q)Wk?8 ;:`k cDAЪ %̌±t\؉ДT+2(E;g,ZȽ-Ah"Gݔ8'$$:$JR8 7yJ1EV[ʞ y̤p7B'ÕeͻZEzDE IDAT 7hϣ|G s$"s`#)zDnKÖX D%cv6{w|_z0x3S[D^ے#–Ә/s6OhCezςKӄ*챾+y%v;Q'`?>~Oﳾ|ƈ3M_{kwY1QVX'Ti +qh0Z9LP J,lJ%\ĒԎ[yI9W齌 Fƾ}J^*D{ ֳUdPԟ(21KQY? JV@9VuÕϟ4U{)~w)P <5f9iqQv9&Lq14\?߱mQZ6M-ٞψdR%B>:ԓZ `- SMy[-RaKˁ'\]Bڦ#SI:Mٜ'* e2P&:).B22-quRלPwP@%5xh;f%*_ s.d10SycW9@Q)cFGF`D% !#74'뚇~#{-_˴W_`hJQo @ۊm:ڸU&3u0):&ֳy}@'V6ϹflT7u@|ez2b2)31 2qn,f԰ȍ;,}svߨ}<90fR%Q{pp!n ljU1/^z~}σ8??_2Jm / NOOy9"K={Vہ)_@fz*`.Ҷ-Ϟ=ɓ'9pŢc l6bAs;Y,U޽{|ǜUj@fSew_ʤa͞*`Qocs9m?t~?N]: U$ZqQ ?׾5nߺMu"? i/{Gܾs`Ů̌ lW:mz |)+lNSBM 1qլ+eGk,N\Md9И9~KlԶ5[pb|G]"t]7 ]@A"o^Kg]:u{v)5@n|}0 9'3}{0Մߘ{zL Bj}cȉ!1h1(6C䄯:ڶmh: "49G'׵(^i]E%݌D<;Ś]ڼ5PM(fŀJ C4PB$6 u}ȬqtxH*sE躅M Jkg>k'ǧoz9!,4HZ;denf3ONUh,4 =fi{>֗88F-rŏ}/ !г٬-mhK%׾hϨ\U\{L M(lKگ:ŏiBFJ}u/LDMԧg?vS!ͻ{)߾*.@o©1BQk ](DᴉD8 6rD$%BBxnv\ X0sn\FASBX̟;G7g췘-|p꓾g>UmM>C8&҄@M9Pig@p32sQMt cÚLcqպPQ%(,JᝢN^>RhQ8Hȣ .yG`iNI6ע.-p"'14fŴՓ v( I"&ka@u*-5`XBCA#p^OIlN^@[rǡГ9/¡( KM3.ųoT@P ۜ84~:A,&grMPHa##q725FW_[O^{M  qXF}>భ1Wh22b/J(RDfV_g=b`c-ؚcLOlf%8HT6-k M0pRt!xN8GՂD4 A6jMŨ}G$s%yfb?kzѴ#88z"(=&9ac c3 vNXl5SYgb覞ul :sЙ\~;pqqY,~qqeΩLk末dA% _efM`r}Gx1U#ޯ?ӧ!}WyTy)6łv[iUw:KLr`:m"; ڄzZcf}s~~r+Ok׮ժzţG*;ܸ͛qmyyp8>>2=nfS}ks8vag8_0u哟__c,r$6*9sG_ʯr||\_u/L@Of9ׯ_' M|iqG7YmM}V%|Ou}< 1. ^l6m[*z]+iZIɩ}ރۂiRlhꃃ:OU]? p<^O:~^0\WNo~6=К?1͙|+_BҎ!'ܾs/ʯpzz&6k>ϿW3>kmH@ H_Kw-{=o:U[Z xQ2.뒸*5JJle)$vEhvqDKa.d 1ó9bK=qPMu)j,x7Ki U/=xob58{r OsfkdhO=rإŁ|P#$ ۷ؔRw0p[FƝ}Q0~tgA>UV6fE=n'sceSj(*/Ӡ@4 PJЄ tb E Ջa& I:ns~ OkQOnߡlw?00qe5OP ) #+QZ6 q}Mאd~YJhp bb%EiߕS8.}s>%#h28I׀<ۥnGtDZ bYqǦmf9%R2-z. Ê*/^r%nwm;qвx84^kɫ\7 _P yT&;aGor!4snN۵hN?*pJ2Y9:NB2={M#LزAL;7fyRN5(%gkCWy iGm!"pc&~h-jʾ ȓ߳` rcuY$!̈&/rQq?R+XZXوofX]+j3 vOE;S&Dh%z3? . !3Ś8.ČA,Ld, j,q贌!RuB`䙾1J y:+vL,DYWgd߇:Kx9/;sq˾x|)]zy&v;h $7o֭[a3_z;YR27]JeZUIo@m-ǚv~wl~.?ΣG8??엁&0C-< _gggl6...:fUYgObhbC7$͹s^-ǚfܽ{n?馌Tpw ^aX "<}޳7esvk-T2ddS\Jgv[  EQB︸`azꄞx9]K1Xoݑc%Ҙ0hb~4Mõk8:>V`fxxux΋a 3@{ ~_[tfRznX]fFgi2iFwc\mj+XL^l>- M+o7O?O񽏸ܺ&HAhM*^%uV@5;M}At{O'鵈H}Ot0\M4/M,ۈ=6iyv/H8VY}ڳuU`22ܦvG5|\9Xuo}KG1tM$Phc$ (qwsV|48ʹ<;sneٓ<}|^P} SNn~%]->ɄicG5LӧO|?oMHi``@Nc+ MS% V_*ڵ ݎz\+|so KJ0H>&je\G|[?_rCII*e.4XG&(hϥyYb8mHT1Ј\fiL۔y4ʌJ'6)ӣOCå{D/7|KI:n[29s^ 1v{H6^%GRىD.*)@}mSUr(d%#9aAINAnmtH8p#FVED}Q%ܕIEWD.lsfұjvT2EάdϢE9<4`@yp- ('bnN kQ"P60ӹLZcNS r@VI,h]p>@),Z%`@,(:z]Tj' GD6$x%Υs;2"0ԿIvm(^}[J_ EIozDSQϠeMYH0_SdW?쟡xb#b舏J$JU R89[X՜k X($a*;2Ք0G/Ԙtu IUV4*1<6$B&D39G%4$]w5gܟ )Sro}_u۶YgϞ駟~]թ06kzV_4MivezʰZb;{lۖ۷osrrRee5WWWUVKOۓ]1k(=3 u>::ire%O%|!?~=C{3Bt ڇY驱")@!=c4b>c>_"%hUcwRbFR6$l1c3..x)z̪4(ԴB. Q^<)ܣI9vAJ%jRbqLkɀl*?O:;ذ^AO`hu ð-C#Z"!5oS7cʠzsM+ucy|ʭqgހ]4S?zU5ۙe}W]S /^u ~/%볏eMBdgYN2D+I G&o.u)/@,%pU |a_4gzX ꟧w-ogtdU IDATz}f_ 14l|$Z?7W_N+L/1wjƖa5;"r}(Y4YυBc ,Bx twAx3_ <.={8|KdXCL/{B *]1t4)0AÄѮ ЅHbvDH"WIt>鍙֠;yLXDCCAi6Ae@RL=&p !*u7DN0;cBڣdhK4huIpl2O%6"BB4љώ1m%l`1~UWqWo^_>!^L4]O^#-3Ƀ$U_M3&acW`߱xT/ S,19ہZaB 9[\ ) > kb~o1O!Z%_1L߱۬nV=ڴ=YJ41\ˤe8hsc3U"IIIY ۳/vrDZFs X;t V;RG>Yw񤕒xrj[7!HMr֬J$ֶErx1!ƭBD)N!e-+ 0iɚ дxĈnhr%%}ϻl6\\\Tr11F=777\^^rqqUe{TVQhMٝ-nR3o߾n97y7f v;%9vs4fP+y6\.+ o~z}}͓'O䋳y,䤂1ƚ_Z{d*0hpY o'\Rؤ1^BQ |E9:bPi ^\6kꋻbJI _Nmyh&;%\Pb (1wkB`G nw ˾˙`NCAɶgU<M볖,͖o{v@pŊh<2y~?_)_|[%ce_ggq.E R[^Xȍ(K<kAchCd6/mhE[J_ъ9Mz Q9+ n.%-Xp yi)DL_ozN5HQPy*7EEzBPFЏ/!ecA9(ޣqpw_/* sBNO(\eP٘5C1vL陠϶|ȁq*A*-sDQ=A(*-"uM:lZ ߴ sjY0Csִ-1D{/ŁBa/!MJ~O28sh=EԸ*t #PD'V+)=_c5N]ϳ)cb!>i (S6_!yszա+ͭ[H)ZX,{B =ggg$,K(bV?w6v?).? Պ~)oF?!YBV|nu>v%2V'x[OL%:G< T_{8ȗ&E˟7{Xt>y{ ՖM&>$2 ŗEϰ‹/x^Y&@#Z2 \˾%jQTȞўlIl:ފ9E.62=ԉ6MʠO- B(v&Ll2qj9|Gl{۹GX0Y5ybd|FB1k!j89/#=s2yƽD,.aW#ݻ1kfrUH)ZUxNXEq8%׾HXal K~z>uι1Ip)!TϦn>JYׁ o꒭M3Z[sZZ0|++C_p) hMREM"6Imv{Ȱ]4=Eߎ~`CԴ*IP`ckK0 0TBBo񍾟QvFY*Imj^lAX/ruiJq$F7g{n4E݀!&u&k))Si"Ėh>2|F$ %=L j`38^`2UF PM$^SQs sMC$Pm(IKa\JHum|edWњ}X-5X 5%ьx&6dJݘi Ϯl"غ{(C(ϔQɃ[)y6+E^C0vHRH1YK9+ J.lX7lΧxC{Tl=4u-0 2&ez"m?[V jX,Կ}.XOwy Ze<7MWx\r=e.//c-B_VU}cܻpgg'LvǏw}fS+5͆ϟ#",zXz. sssMpΝٳHLV8U땗jw:s,ju.=ּhߟ?ԽnH:@&[Ih10g*Zyڛ_cXelb2R8%->ɓ;AEMٱ a'U)ɛM)N P|I;ƾ1V MUm%yU^ 9RK{\ _u=o#G:Cȃ+mr~~׾ b_dj½qz]:TP)UI_*ּ&:!gTq,@"&6?gP+f3N=^5Dmж O bml77+?`ufmW4)_LQr]'5BKP/.x9nbd ڔ8>ZcC;t3|$Ǵ9M(ETHIbAnH)ﶄI{ʃ, FO̷nX,-ܹ}w^ق7޸ϋ۵f݂onI zRiZ3/Ġ1|~Gz)-e+s+WyDq Ok?| ŀ,VQ &%ywچm˓AYy.4"5 >>>=QfdBAs2nhPE #܌w߳]/H&,ax1Y|vYO_^]R`hQ`c2VJ8p2ĉ\_]9C+Isy> AB@BmKb~r n7)4ߒ;j|>bT5DS{>GwDۺK^R麮&=y}E.eʪveV׈=`M_{דeDmJ #Mۓ^w_mu_wjUUL͊+ycVRV37!J Yqu|$u6/^Y.A2nMfcCJtVxAw4/!!!6@)QrϾѴbK.͆^h6'ĺd\v8;Z*IF\N99̉QdO!&Hn7&[h:~&J:VJ^=ePL`9>X<%n.w N΀o7 E͜B!Sh ;lxB-40 b0 IDAT˙ۮWY4I3Au`_tߑa ] |_ |a$M]0sD؋T(Pq:R|@]'ʓȱJ2%zN3 7ۆ yt1A $Pm~?Go[7"K_&^,~;]#St^YMO@D]%pJ K5i )1iDhJA5t_hT̥H!MIIsbӰ3td T D0+4:pDnփ1eBDr!s_`kkj.#"3 +QXI ʳHX_4.mP8I).6ގ6B{RIQDE;!ppl1L" фZ1`^%#˾~B(A5oi?~m8LucjLjk83&Ic *6%D:o@ƙҪۭIQ7u<c'3?q3>a^`\Gn=T|9LZi- $d\ԏq1”]=*Q̞6=ƻ-eFO*?kB^biՖc1L#cc3Ʊd1F,n-jAj|}Řᥨ ))FhUQ%ȱjbUS] ;ys AnS WA:_{jڪ:.@L6hɤ^8`HHjdbJ8be7-Dj`n ]ױ6LY ;5#( H)68XˀkuuA%LwxhM|)ŲRV@Ҍ f1-3:cB7il|`Eu,}N j.T΄h!X;9K䑅_u'cJ]"jtԈYu,(jrChbgNZc#(@(nFߟ)\P'ndUei?u?; b<˸Z&Lh\f9?&|@pѣG<} u`ϻ|>޽{s~~snnn(p]ݻW777 zm{ԙs3\%gs]ַŝ;wk_1h>oR|~Ͻ{F}_x;vu<,0eLQDhۖ_cݻLJ~ȇ~eef \fucq||̃Ouqֽ7b1)4Л0eO] N]>x7~<:>}~#_8=9# :Yzޔ>>Cx }/^%AKj] jf ΏiS  1II E5?9an<@!8ժ_{/6u,{$sn7ZSGm[J)fu靥Éz?<6s_: Y^bԟ32hz1 {rBAOAٜXeOж JEc@1-I/ h!JXHt)yijf%Mӑ\~կR(A堚VJܹmm /+^c9kRB?huɘcyV,yg,M SJ)Jgj3@8Yl'!ҥdrp'&:27٪lUvdny`W GdϞ]ş-^{9> 5LQ;H#js "vzhP9&<Ī E85IeIA7H!)QyJN |;%Y,V.4 {2z1Lto`^iϽ7a3)DZ] ܿ{

        ؼ|1h F|ndpGt\H6InPCLo:"R㡯zwL 6-CBp6]MądPHILN4KgP2 ՙ)Y5ԐHSʠE]ג H h@S+)62:/.X^ AyRCG1@i$@? ?bK j9P;:XsVE'%eI9e py J)5ˤAYےʬ 66Xx3eV&WA*٪mg1C܌Q\ibMZJM<ܶ۶#DtM׌R TʵԆ7uCJY.b ?B5D?p!% =+C:b`6#s}v`q F|Lji#}ԀM<2/hۖ??נz̓f:Zlf0f)YMT0:wV}l83]#1FNOOkYԧCP ~O|Ȼ;sK_(9lyy^u~K!C;z/+/\9p&K. wnAv{Qr?߼O0&X}G^n6'?u͊x7MlqӄB=XaSC;_HzjCcC7 4&]\6{Dv[2NW|q&dx=?MzUܠ `IAZ}#m^>\p֭L{.Ki}4 ]QDoL!& ft V"b8`l6\^^~9<18?{\jϹ~~0_,=GGe!,΀zGi°aVV; XuM;?Fkh)(SRfߟ&|d&izAp$_DJ?ն _}_|~>Xu6CԢlLMzB&D8nEJI(SeĊ@m9.Yb/Z5<|Dw)FF{z)kݯM2q㼣* Fa&"i2c0YG$ ŽB[XE@ɜNy+<[4Iѵt2kۿQD+w*TΔ*_ H!DXDM,%sٜlnE$7xy'޺۷`s(R7C$ 6nD0raЄ@Fأg̐HapB(D)qBpX3 ABeNR'ױh!W"8?`} BF]Cc&Oa*32/yp|zn %X,-& *{+%2 ZqN+Y*v!N/c/L7'HQ]l%Q S}b~&r$QIXew*c9 P-R=X)p\0#D3TK#4 XEZqTC*?UL~o3L=aaSd02ڮjR1!bN5L+a$YseDӦk;{n~A\٦JX ;GPX,*=sLU,T/ 4s6Tcm*IsvU'G~yV:N;+KPº5dLx$㆓Vc@xzb3u l՘NXC*-~,ee,.& J2EnY., Y=tRFfq6V)F3zE eČ~>  f7"4HȸAt-$$5+T&Â%*|ZRZC~ͽͭ% 舂P$xTm[Ykdk3bH|f5MaG ƥR'|RA^_7ϟsrrMWd\6f>W0wEv˧~ʻKJJ8Sn ꢯV+mQNaZB۶kܻw;wж-_Rb6qzziզvԤƯj I?`d7Shv4:~ˁ1;}'{Rn(##%>#}]~~ӓs;>f+(9Uv z9~^!^dAN/Tqjd% µ9hVAgyP0޷L뻄L,}y"R4,XjX[vRK`OdoІK0z%?я㏹uwt]Wn2o:P{9S=}M\ SZp  ݎv;.//YV>>_rAk^>_tN_%#/sS6l Oa@n\cpt2][be/09XK lۆ\h\9]&Q}0( P 5P=!Bۦ[Z bMǼ[,3rsV״pv댔:% =L‹泈òhәPe)Jm!WҀv֌ԄͶrljAiZk n95>{C71& 0K2y ;9KFӘߐ[s5@1_X<}?c {>}Zt6)t;]Y]>pÇ+;#]1X.,K6U3@%1ƪ veۑR޽{X,8??lqטn y *ZMFT\^^ŋʌw0o_kkI3gZHP*X~91e!F[Ki8 f]^JE&b#Vzk Ff?!O>c]AQ$Sp^o? '~uϽWkΏ,M8cJ#< L'Ք.nwcx\qv}bN|}Lu$jiKC`HCf>@G#[5Ev+#i b@Pb8^Oߜ5^۱n"b`X#W> E:a7GU A "DC`&ʐߠqHNb<)o 4^74?TKDr gT"{qшs„'rௌc@| y_㎛qsp∓w$c#(FR_[Ync+el'5:ю[c ֘1 r53߀3ʐb>F i;K[R/BK͓0*bҜ#׸^e0%jJ.a0G1xLm]GFj ?  +kW U*}U0}@Dr6WϻjC6yRhwgcp\\TP_A/ ,b>3ラĺ()hCJ:2ukNڼ34q?chg)sUY3:ycC@*Ϡx_זHEfպ۹;{8${l G8el~[ذ% ȶ,C5yn֪Cdd4٤㑫}v]2##hYǬCM y" P6S3CNe$X'_M+b7:|fݨvwLFs/1-P w@)VhfTiO LRnF& kGK h -A";`:`s)Ht=!Ⱥ'Aїm蓿Xxd+V˫|nϩ.T`L٠sO?rɛoYfSsqq9;;WWWl $///y)Zi|V{g+R $ﳷ咽 __T!@|^ 4p^W䌱 s~^srrRswϛ:cYa!b_+gEul"ȱi_3]LWS- s|?C>~ߢmZOVlS^v1gOZcN\Ky9:cCb)+,|]+REVXSڵREp{ u[r08esDP#r]ؿf ϥ*mRUF'UB?XE;w0999R}s=VO%KfM$ܧUH>Ngr 6͗okldRqsOY_DsOpn5X0y3X%7&ç"rsԊٌmJlbdOl>'m447X\zLi3m GsbH=mj|W dKO f<^_sss `ei!T7j5nT/Lmݒ^gߓ]OPTVV CP$R ;mdFs6DB*s nRǬi!4%!ۆ6_Fm-CţQnUA)@;kwoݿ??P\9K6AzYdMfLzQl#Cb{}ʬR -A 6ihaR˙wϼ𲭰l[~G|ֻ2!d ja)yV9s!(M\5)b }JuVfZ;R pYa"*K[ g$ Q[_jÜ8NJ8䴐JfKR"C۲?|HsM>=cimft[ m;cDm6*O|ٹhg-ݶ%zL$/oo,@\w]׳ZМnlߐ>o i[M[49^J7"4Rt,oO.k,lt-?`}}uQ-##Y1@RĮ9cnHM:wwk}2w+c M;'HFȥj)1d%j&HْnBPtJ _nJ6;S:c'udHHT+hl׮zۨaJ~esD'aNc~A {?x Lt"`\CBfj#lFlbdžCZ!8N4o7 "Kb;3@-8Q|EnY}JѧpT< -Hݖ}*NփЂjו(Em`\CH}Bri]# Mlbn4K!e{u/׃?x6 `$>BC cɊ/!)(ii]n !By(J> }5 Tv~3LPmbh̐ QsҘ }_mmS3ְAU3VPikrQ^lR:9ѓ1WƆވ57Ӫ`셱9]&sF0rvÍM"M;,&HIbO'ܸэ66Y\ϊ ~xhMY:n3_ tcy96gy-:?Oя~ )%J޹'{mՂPzv6*!.GbS#wʮcҰ/֪+Lkw>e<B^gΩO W]vꆗɚ &RVI !ӥTl'+[TS'w}駟$k;w8==e^gp*rd=W&`UfŔ-k峦 ۉթ܌/ lW?c[qP) 媙P.pΙz677  .vSgnm#g !\M/!5u5k 0 \IVHK81&C~ j)lkr.릉@?]G+E3#I{~H$z4A _!)cdcbhd,l%0Xt|xQ4(w)LWV5 ?C~p>ƛuǔC%lT6 Lr9=*ʧ]a5K%pp?oK Xml!Qf͌u{e/+e+F}QSZUO䇢<ϩ4?g[Ј1ޭIoᣏ>`o7~ gnw~xAX^#!|o٧r~vw3^{7|nix?q odz/xo&gUG8#ӨҢGٗȝFAۢ3orT.'EFI ݶĀd°+LJ+0!U1lh%LXB( , d&0dE1fn 1xы78SP:wy)֕q͊T֮8:&c=f13D5|RbJNkSMjib;O]/׃10~15-ϒR&T0,!ql2ޓpB-W؟.:1ESK9NR\кĂQp//Jlkۇ,!nZNv (**sz0XdqF=E" \ӭܓROӴsB3gXX^oJw}f53[X%jl>3PZATR۶%6 WW\e ae{}% =I;#"0~ Lj6-BhHhB(Kπ@wuRKǦ"!0o8񌪒-Qu UKI*M r3j8 < ^bb. m+ؘv8]U|ńzY314M'JE{ڱwdhZC5MyddSØ*nm)Eƒq>g@Kc&d(W:BE/i`p2ea20"iC:: f$3gנ\Kx;*"#,A߳5򬆶YA,@ϫUl,/U)fyj`{0x&>'hˊweDOc^A}N~mTe^& l a qDBեYDn:~  \rڟ lO VGGGV+ݻW&38999)*/o~<~rYZ9TuNa68t@6cX|ݫU3އafI=6=gm6_u`v5P:V- * UQWL_:fZU9Sj][" ܶYy/e|)N˛T!~iD|Y,6?OxfBTR#Xf%C>3IƄqt)6a*ъފYadӖT5 !}mk}fWE`1G<b9THoђZobb>Uc`>deĐ,R9Y)vjX$(w #pٌASPe" ,Cd|N//?Y[͚MsǓĦ yov |ɧCaGKN.x;ܻ!GO^p/o 6gnd22y9sahYkY8w }͒9"ARD6M2Amp|cz%πrʾ $UҷOǰV}xxNPǭcٜh&\]IUPSD#HT&5jo!hr}FFDʮ* o{VqJ.U+tʎ/)qL^KvɒB8tƻY!4*aHsu#NkRىk++.R*ܐ` S*dTAPJz Mt\ީF@SM ܗ꓎"U z6ێ(!6,+قfdw{8g(c#-墎RzlulT @N Zu=ibVMeΌKD,:6O/X֊1yіW' O>N#[8ہ\DK8>aꀖk1lPchˀ1P/7$kA30& G`߳/K,v{ރ={7'4{$|A֌#Z ~F` U:!H)o) \FƋ"vzΨ3z [_rR'b0unMsM`3OG&h5H5JoGxiUjDK| vfmn!Zmn㜾f>'rߝ{Y D9DU W֪*Պ7x#ϫ.: O>\^^ruu ǜ}̧l`GJ/^S}ݪ fe+ jd䞲SCrgmŢy=Ug\.LsfS=LA3{{{8h.˳\.kdTߵU bpk{Cۯnxjsb;v3Y7lMSlu/IkzQ͂~XAd)>^mQoLcȟOX,ʸUOnM<"gg'?'}ӄ/㈱Zp]5RT6Kƺ^Wo?*{+О119258V8 ri i}=zTp]ڶŋl6ד'Ov~rT.CPۀi%t_ro E_6_]{};)nO__;xL>~*Lܺ/m+f%2)q$JY'2Xt.- [K Lj<1V֚^H Z!kA-.Y8-vZ$XIK=VjT Hyd)Q#i {Y`?sY3E%b[J׶lew: ki+n?%a ЁPHRrMT7kc5ct0k#73.~TMgB*]6E3Mo,φ ٤,>3>7 ~YJܨIR [ z7\ewsw\56`2tq{#iP:s6 =vx t1_]]~w:wRzSaSlLqhOOXo6||lN0eNPG+%"lyzxy~1}WY'I隸GaOx#MuݛlKr>'Rl8E(?dWܿG1x!]q~~g}g}YM+'. j\|׿ٴrm' f.//999)w:lwܶw{KiG*6WvBƘ^-SjUoOݏ p<(ܿU"IٹYvAzYU†%g;>X!!ʏYo֦߶TʔefKMoxBxD¬%JEp/B@W,)!4M焠ߍ3qM[/& dmXл0l/Wl{GnϫƟ^[_?'XwVF!t!IF4@RN2\r< &' Y(C>q#W\iitAW[>f3l1 2O[O%YPF0|/h\]o]XcjD 0} *tYJZS>Z&H2ڠ=UK5=RR ">b7J$22>\HRP *Un0lBҗw<\eeTf@mM*, $lkw=N,B$Lt!3c6 j)vboR6o5 EY giŮH: ;yqT) :G J=1% ! u|Y ٧;K4l:m7\]_0_[1͙-j =g;O*ސ!+Ð6햡 %qn>HI*D&ۻwR(T8z;y{}äT4͐@-8~>\m[.;bl z6Miwcj/Y)9a@5ɩJbHIo080:H΍^ 96)6}gסUTMXJPC+-5o)zi ug0C} !%I}]G@۝,g.Jq maiHÐL]K5*p%s x!D-FpRBJ!Ѵ3ZV.xh"6jH(ڸ KFXE:tH ,@ΐiۻ`* \`51 a(A&܀J4Ⱥ-?VB 1C]h+8`P3~)10:ʔM׏Wʏ_)uA;WAYEw갻)>wK?iTeZ.\]]qyyuLp7z0 rzz믿^71c:Z;ୟ, VٌaX,988긞nwٌcnnnXו9?M.<>WǬV)Z>&`c1oFeOvĦe>_sH t.qwob2_'Le>3.E^T&UlNT+wvsa/`b<@VkD vA,Pn"FT\]]X,jGr!1m<3ddL7Mr}Phvsp*%3lZ)s?^\1pAa[*ȽJN>_eܿw_'{M=ѓkUPv4k%tX#ƀ'lBh5"}~ ;YHoF ćTF?(5eb:'Q͇ %ǯ]d%EKqDJN c0EbKH: '灨3asn#.3n*F=%g>@)SJ[$wm7TEjve~_7}zG{wćdc^XHagNYΜ%e{yiA6sjI LW08s3]N)@bҭqh-LQ{d%Z~.7gp8Q$Hd-FO&xg}c7pW$H6Y`FPZAL=X^09crD(=Ԩp JS]6Xeءl)L2%.҉X½}(xiۮG?d~t@s|rV`_ m\^ MNZuK&p'wC]e$Mlarb/ 9;Ri"4ܳFDTI\`:y)8GCab;PK9ȨK_o#_aZy{?SGW'KY9UO 1sIъYeKcyFR {-+U- ɥzVЖDGfa[z6",s"֓%lfK?$H-gsB`<,K=Ut4'mv36ghs_kODjShTո|qM X&9 Xo{ͭf4nhȫz~cpɉ u 8H1<J(θ^)'2 P޹9frΣV7~rr"@ >)ye@)GJvZ W{+A̠g TNf0V:_=6 iCD{ LP1(Esڬ@[#Lv)3FC)ٴ%9h uUXBN\\ d5w*#1"1j +PXh8)z$T)OQ7úv//Fo//oNJ17C~Lj7`䮱~pp'|+woؼJ֤cn;IQT6@kş` MY巙S]U 1Fx7usm;c7|ny6|-K߿>cnnn/^ _:8₦il6u4wՓ9NnuW4nTw+_u XUи::)\d_azjMMj>s~_boXSZ{vyy ՂO|I$_$:>;⽷Ν;5D8KaK>fO?vkw@3rVlZ# "4x!i,{ = QX} 6 )%iE}g\4MMzR^v6jʘY:x 777?WFʴߣ7v[ūfWד5ոTa ޼ 1,GY. =d1[̐z-6(e$Y=o "CH j3ql:,jgMr$H`opã#b-kɬ cڳ%=$5V3V,!\QǦK$ΐrZ{mҗ[ӓ@w G$X i6<+ҝɩUj #oX jЬ׽rmXY".?=~g\|Bp"[c5~y\ -`zm-_ {K%.DnbyySblv=ԝaO7ֻZ^埥 .2BlMNS6F5\=(Y6LB#v} ,3̃`2+6-RdҜWTXi %P$&@P?!kUEHKn67|<~sgD8??ef _3N7\^^'[Rtujb>7Ҝ-pp 0SJH!!̕*k-I&KX[Y&jBQR8IBH6jR>Ite~kIb:]bZS`{;`׭oXZ]caE)y+5b+2-TKRcwcR0Tqz▪$?K{t2 *TDA|;Z'Y!ŷJ04r>%Df0EIa [lrޝ#ܿϝYrIm~k6*+J(s!*x} J&g6!&fiV|s(%c0>WQ{='P9tykk \H%S*XSB;D k PF(dFAW:@#م2yl4 0A*QPE|t <& LPd;ԊXb7030f#Xz!Y sIV)P}-c!H)u8}`F1F=,uvz9w9G e1zMJfp d!a|2{U7zKr?Zt^b&:;!Q6(#ᦖzbDc{Jr::eVﺢ>>_K}Iќj69nDkd_b<|sxx+{:Vo6!|!|O<ɓ'*>ѣGTY Č3y^&, (?T+6?{}L%"§~y7y8<a>YpXpsկa(4Ҡ tqpϳ{w_;+_?1QLi%i(nm?? Y2Y q/)vvݐWi \m5v~ŚԞ ;~CG1ka_סŇ]}(`7JXJCW1tVbӜYc:)Àɋ`d%Lz IKzi0)D{"xRg5V L֞HIqv5q];SG0 E̪wM(BŧGd~cp_,%>9G@ Py+!i"mz8& 8$;݈E{S;;U>SB"J5V2 M\JSbD q˄I 7sCeΨe  ;e}1_N %H!D3]lPGex'4×UiB%C1#Li24V92 P1 59Y=oe.;9ʚ pшyh# xX^=;&8-rljyϞXPoET205n_l8O0}[_DcI7\V4M'''<{8hc;;R*9gݻjX,f\]]{QUwxr~6IJ:f;7ݼmdλ*"ߑsܾsfݲ^, y>$q>PYKC1=::2>urR.q}O*R,|' psQm/g~e :p>o淘3+%.srrzfxz}SAX;Ǘw{oCfB[׊12Xl> jT w|91loH"c㶽c} GpOVh_SOVERf{V٘i&1XkϹ3U&2= pyyY'aqJOr}}]0L^2u |^|'ObzMm*v8u^vbi]vڤ1_X\9mk;],]!kb6o/[>1bXVk|>-lDT\|ߧgdtݚ2֤B).W f|6#gќȽx | {İa}M>=&f"nI قb\sb^駟u[bG@ -Y;Xxu󩽯, W97Heljbpi, Z|ϐU7[tskҰ%4-C臞ƛ|s]WeүkN/ɗMx~C?&Vɴ!m*FV1d͆4Jm[m{[9X^mp%R/Q9?4ES<3?|Wwiga hkAX-\)УlU'p9& 3CMi 1 Y272{ůNSb7㌣&"%Ro3ZS`qY2( -U(s#LS`py ,4sn3h&+\^_a`9ϟ37_p+'R ?8m*N,*Gͷ>XB20+ a G溭^͞ (YltY'R:~Lg'_daR%/84v6i6Ffkʬʓ(<3"5n`\_ja+&'ӊ9^eQ)w#.#aL&*C%LiQT"Z)fT1*wxIg_%VrSJ2qJ=!Yw]B%qLi<|s.A fJ!QZeq@o|nZeBZ@֤fKٌ`A]N )-qMc"HgSIƩT5#V"%0&d'AL(R5K fs~BztתK r=ܹqw9o6=BUNגH8Պ NOO6 f]>f?O V 'c0hMe9Wl13[,U:e^u; ?_Ι}o^x!q=AѶ-0f;3&sՏ4)Hg=)FGm(Uer:B9ց''0 lke0lGKݛ}r\睿3t(Nnɓ$sY%ٽu{-_ܭzeݒ,KIH$Ž5Ws23"a0d+ u<;'#8x{q@^3, y= ͊kKC!bĕK<ܳHh[8A*hOZRi_+Q[V$cG6v#}Cr^0eTXUΗ--lxM cV`od<]>W%MՎ{͛ϥ1ٍދj ?Rטn/)%>}ǏKrww7npppf3n``^Aڹ4Χ- gP366vjuqIUoz Ve?7@T,223M}&"c'|yȮ5~bg5 v;x?a6[pVsbܨMT"8)ܯ{;VDY_R®kϊ}$&3^]:?dRQˡlo|E$ة>nl="{6tÇs|rddwtFK3q~vB]@3r3tأI5a:<݆ě91æIGI$]@LbXgY\2_.WI̚@;F XANd72M)Ј]kP"I>']bz}a6/ vS9i^ǟ1ިsE1&]EX,~?ϯ֯q&8ѱWy29^'M3N'}4FNS,\xm<]`eeΩT1ek\_?޳7x;pX\<]NlR&ht6w3s'U)ǁ\>HML3LcsXu:TRl4 uMco2-Idi#Ss_S,Glh'qy]*\`=E"TeeiJVițFdxYLlϱ7Y#d]Υ9d馛xm]fki3HYz 1.U?Ȉ5e<{'Xt~uKz|j#BW4ITd-0j)-,6|FS;h7-m[B-s"}`'`$\PYeyŴ׮ UH #˟481p?T`ygF86|%TR𝢔q%$f"&{<~R!pj>w0L>>[A}H\w}\D@3K/F5აʃ1sR)U@Nzt:Hsv#_ӕC QMTf"@L WѺsb!HHpgfB41ҫlsDPb=2ӡ$+X֘]Ҷ(ƫ%G鯘Hd:-oKv&tBL{_1[ol@[)҈UKVb,)iؒ!rNS&!a˓0I˸yUnF"!F3^$i- _4Oc 7ȃvڈa c.PU8Rꤜt=k 7`cJPoH+х{M pjxsTlYP !;ꄚvsO<-deMB5t##W6:w/d\G2 =d2SR7r3}39G1m &E)3]/9 zj[0[ǰۏalk> y4vM:zi_vhXsppn7tJ>~l3<Í7NNNxe ui_#0Ӱi=;~_;f6~^4{vvVbQ4 ܾ~:]וƯ)UUU@~Ǡz.%/Ra>[$jNNNx Ʉ|^?IV1vqF@#t|vaEq:7ޕefh)[s xV5{Ų_9t\q^{Ç8;;cuyY1}*84|晻ܽ}l!F/2/H9mFS221,I+|@Qh_]2ɶMiD]"4NҿÂLh5t[o&weI2j1;g@hdUFu]\.Y.~wpp@J})iaٔUO:tt:-%*tR8W?g|k~c<~EJl_N]1$b20Yu_:gLZLX.w\8??g9vvvy43V|A*ڮQ).L3NQY}TrnkB}a}qB8U=A,U0xbz)^>e{7XNYf}IـP6K}T͂r2ԓ)t㓣;\Jg{ܿ1p>k뤉e`Jcn|EN;rlY]kKsYzb0D.qM7T$0Syrµk+@-n,%<.co#x˼k mlp\̪R氏ܬ*m2>_=yg?gHW&la./8IΒR-R#.&1H̓g~k-'9,.\ vN@ݦ~epswY>{.sbMENɬPV{Ls` g!1'$LT I?:ɤ@{,wrz1?/,#xf{&-I#]֓u]Tj&4W+vMۮN1ͤMs"")ݚ L+Ď$cTD%aH.0ͅt|y0Oyf)kc r{=5,.lDlL$3&^z>|<1m7[w eyޅѤ3b- ($Zƭ.|v(|`g)rX x/1 o92Ab,Yc>_f[eꭼb+d>NZFJ`5itm[ۄȓNZ[fƋʵXSZ*@K.mlFwږƮWA*`s]'bזa]zŞxMϱ\0&c0>n,B(UMf4pi6)%}6~ڵ%~rr֏d­[6' t7G5+c}q{X0NYVɄׯM|i>::*,CҀm^٘?5[E su]ZUCs=9Ǎ7 }\ZQR`AaU=Cyd$6CUKcQ^<7o^oWkט*f=b_Fo?|NOOh59[u!r;<>7]U/Me4 WFۧ@;c]f0avMݬ!N!?\;=礥44N+66fEҚZQ\zLni\d{VNLft]W咽=ú5eJtZNSISdh@⪝>??'OpuJIYCc-]-812{n?㎏̟?>6ŧoWu;__æ=%4Sv/os^ gsa;39K=n\OF&9/Zn9穛K_J֜{_bwgtL4R 8??₣ҵGl̯~Kܼso9{*{x,!?|5vv9f;dttv-ƒdyזKj+-CHMr TU%;6} M=Hִ}KBRCCB]SJ>29kÇZMv.` wxN@!j;`rqo4~o#ۼ#&2k%:P\./Ż^,djoW!8Wc ]Ds:[E IDATi *||Q9*qr2h1CٯNտ*6YTE]M30cJ"ᙩS^oe^q<$G.6'MCΎvө_T*\,~qh>z~Qŕ%X~>cl*8lhFL㊀2NEz<5ql)vX/Btc,k5)2mV<A_\ ^·ڼطJi|%u+..A Cm}O{Ղ7ꍏuԵEŠ!8_iC+}6׮,S}4/Fd!B6p '6X,ZJYgrԥ) B@7Y>-ʚe@/B4hOzuI'$8:)<ïbT(4c2UNy4:מu7n}K>|cI-|H}\+ٚZrnʩ}訰 ԲhW4[@{h@|ν{ `VCc̏/ӧ$Op,(j޳,η ۵Fվ=D߿%7`+Wn˕ۤuXRV~^~߻۷ڎr̃_7_)%YYW\{<{.j~'cמJĈN<`& >?Q zE=Si:ea>kXvI]|PՐ፷ޡO6 >pyq iM3/䵄7zZmi^Nzxkў{Ywrxxt oe2 ֶľ옓HcYsvvJyv KBtMЂ_B<✳3cYp+6 89>7cW^*3-a9R ڎ{b\hXvhsqt.>EOVAlo(6K߀taaG)D"ͣOByf]z }ٱ9[ʷϹ=n=cC͸]74dT(PD( ӢrgvT{{G*Gcz$^,*=="E'מѬ٤"9`c3TXȼ[IN1rz*e 1#+]/NeU3ڼϺIFAzh$E3R +. mln|9eT]9X)cܼ`'Ϥ5!E1rt+M/mW$ [#PT͔2v9Egu(2 {;+1>C`;FNeuLlľnhs9ui7)!IlEk1HkPc4S$Ȭ-SHx*-!;038]Gf0-|deLyAʷՆv>KR Zy^a_pϬ G-\kvc@j߷ńf }nOkseY[Rl{OlDNH]b&'TfH**dV$#mb}yf}I΂]=RrceX۞AA}6ι">&fpTWb8E0R,y`˸ AkV+bmQK`(2U_9*04'eQ4MHZ>xP Û/7dNOX.(T}Wņ[7ۀ| ɔP?C]vUFuY{џ6`k56g988(Ҁdb(/ٖty&/nmi;E1֩UζIk?~L۶ܸqH9L&./o69ݽǤCLr[z6ǀu1=fďgewvvsO>ӧE&bZe{>1ȳ--QU5d*U5HVYJ䮀9o,1 s`R)|ҽ@Y_37Zn_<8E~\3x]^+{~?DHEz)μEKΘmy _~!Yc02P|:"gBH#̥4F# NW<Í_ ="6i,'u] G@V`1³ϽHauk>}B4Gp-go?&n|s4%goGs9Ϣ׮= Hզعk%n L`"9nm6tQodB=P5쫽҆z*i P}kokЌI$PUQ?_&w$V,ĺ3fPDȞ^jR;#AO IY*eQw@gQ?mc(SêGcJCnHz*MCd:]_,+zj PsҔ4K L ս綞Tz\@EB!YtDܫj̋J( F# %S', ,!p#F.IikZ*3N&sx$! G @ұԬkiMY+ ET[H KV/:H],>aբU8d,CXBm5cms'c{HU,Mwpy)|>/ NOSqe, |cX,^,$e,<4f਍C_9Eq.dȃY"wX"Q27^遂垾Գ\ҕ^ "OBE !T놝BQOECZsqrFKH'9;?iP/~$^lNKr6q޳\vlt2#45}ܰ^]p-vwLmsell+1LEꦡN-4̈́I|_w\> jg;u/>ǿ~:O~LSpD{z΢[|6c̞ƉDբQaF.K,q2; H4!":Ү\e1>sHn?g_ /smyVo#k׀s\"`NdsN yR3ʗ; ׾W=~Lv/}rvz%1r3!CuiSAN̚9/}71Ӛ6vÇϾç,+i򠫮HtIwso6'o|>o)]{F3ޣc!4  WY]__}?x*}3 c|BiuePvѫךps ƓH] ٗHqKyjQ?3, 3I1ꔆhy+ɻAa<)|<Mw $Ov1<WUQ_ pZ/E!YUL}@U5UYS5ϐt4,ΚzHU冗c9ڪUT!(&;%SVi8$.gTVBaO9V8' #Z=)9w%BÁM=aܡmWg-}ߕ+/zBxyr)emD 8r?{ ]8g'bR1_#NASֱB%{Ї+.%&p`!r]E*CB'O,P'5]vc{_ơkθdp||L]s}YLŘX(3L vgp~~^c߹sCʾ0\wq~螒/cc0}36YYb}k)dp9A;QdrŸhsz~V$3w|7Rpup[8iR:'w n)j&sfT<^;g$g9 DB {mVٔњj }J#sX(=Ez6]zfYspiܴ\n:V̈F"caw-y4Cl}؁6ݚ /KyYӒv[?N=7E5M=& O<)6%)lu[ c,ϫcw]' (xciȏ?uv]Q[~ [op@t bGfggOHIllJL.~N g5jc M oCc+$BS|*/|# I>E} $)v-ͥ%%yaU XHNgrԿBZbÚ4걿M%Z=՗2ﱤSE+1u L)C\o}+čܰ\v]ٕ,hןirYk_*Sq~~Iӧ}2eM;BF(W!Щ!]J٩Dm w?,t9m`sψvz0(79Jb?/=ϝ7=X 1Oif@Ή!6$;a(O 4P IDATcWɉsM&4nNɴLnbs/Cb_\2EvLsd%<%3@s6&q>_jߓ Q'`$g&Qy=ܝ<)g|ٜ~yv CVg'TY#>sF曌M=iv6} <}J{bF 4^ Y̵ܽq_گ+_U61!կ7?)l:z pɂY$ ɳϑvwi_iyE/>{񗤦G 1+p+.!dȰ^Yݻ,ܡ^.r rD%9- |*xoWׅeΡp/OמqvLfZ+.؄\ݵIM]!^fkJr|Ui%+˾bF P|5 C5X8̙u|l\yQbüFo1I _=wl=X/x>5#ܠS|S"?#gBH;b߉A4}2g>jT ]0Lߵt튮ݨh^87\NgӮI3yQ-U cX Y{>uCǮ4Av-SRWY-L HԵ 1ˮ֧ gt>HA]8k)+ s*)٘GZ>`ɩ41*O,H6ee2DC@$ /@qm`8@x'bS"+mD$uBx(Hf_ccɬ&, fز 8|s#Mњ2`ו3 ƙԠZ,m1JLJF$/`k]Ɏ1HyQLbHׂ'Ӣ) 5Gm>"3hn6a#əv32:_J|oG6˽Py 5(MOc4M)ܼy]&Ia]ѣ"`awppWvvvx78::bgg0>5?*yxxXjUX6bLS~ِR7|s hVUx988(@\ιmLY˜4ضfڶ-Lvc5'qaZgϭ2NcքM*;c`D'cgEH5'6R,(0~ދ͙s`Ѷu)rnl\oU۲Q|ISվĄNt[ cC ߀b|&Yc`6m5ML&<zm˃8??/7n z.,e1[ks1N*-0ٯWQ>wbceq#ˡP:d 0%LZ 74gLZdd72IudrqZ|>G3MNL NZ։43J5).6RGΉl*9]f]T6W/BE5„62.ZEr] ':͇D^ƪyO亜|$W9)50JPv(%kBh+Q 1+Q]Ns>/r=9O!rp ܟ$>n\7u8ku|s\ƤK))$b|VL]s/ 8:8u Cѕ! l,Ω̂ixfa'LNr|>‹_gPsy^py8Ovϩ( Ncaa< h")B YӔ]Oӄ؋"{k2\3uLRO4‡j&~*}dLq2oWYL'_q m/1igHtPWG軎'o+ >yuo}}93q0ɞa2kk`^5ܾ{ϼ<.~[|w_sl?^VtI@v^!AT9B Jt#%#x{^o&{}'/x_{oN2щLMjVWٍUt!?#I2=medUǟ000/H}Oꥯ$n=1ZskGh@YU9[ok4Q6gdV@JA @q0K c{>sFv70XqmD ¡HTU)VFf𡦞̘̖Tڔ`JfS2EU+G1%&lCopJ{lň7/YK9/?3U^a}"eщߔR*z6ϴNHRg}= pw$~S9Չ9\t߉sbTROY (h|vmGm G\J);% dv]["31GwD'~҈l1iqqV kD-ARK9K%ȔRx RXC#)d2. R׶x &\*9N 3:h&[C`k22%K JTȢ.@0]Ԅu N.{RML-|HB-͞{ѽdC,[rKe$0 ,Or郳:%'kLWTwȩ&1!@KGhǞ3v]iwg34뵣$5W5d*z˰al0cD2=  @|qqQbg:r֭ž >|믿ν{X.n74 ?*vww j0 Ⱥ׶my(k|rPaԚ+5]ױStljd5V%e 4^ՙ7>g)?mq899ihic/|͜nm9;&_N %qjet~jh;}G31\~ߪmNNNNش-X]~o}[;TGv=22_t{r%,i4V\i3qCސ}B))!~u $>*SܽIw;O%$\$'@'iYmzV˕Mn wi*`~)I8[*NiX3c{1f)b(9gNNNxxAY盦)@ihn6wwa^(fܺuRUd7fvitrQG~O 8CH0h?$_3?Ϧ#hꆦn.>!)^4Nv 0,1-)UcI*j20{^ma7H>.O6bgP77(w| ^s+ PF_#TuMk&m`BwnV^!\q/~KhWx^|Y~wo>k&Y ^}"R xO)3 eI$}q>YdLp̎+U.H'>eջQw7&ϳ//>cOyN 'iދ~ sfNsOs_1گH uf9#&dϴO,U7HL4'@mD I.h9\`*\<}oG_c ;;|I 踏RdyhMl I^2rQ^o,tOh}%>](4-ΌIYe{f9ޗ!S,ttqCKBR*'[qM5EXh)_N Z4-f<]ܡr3T@#|Ju8'ݤ 1 ^!+T/澕 w:;?yN}t!|(ZlK(ӏP*$G8bпa_ֱJ+ҤhK3f0ǽuꜳ?d橺=3@{V:'O7M%g\j@㥩iGy)$_P-=As˕v/5?va pN^vЮpz{"R5%~zzZu}v فf)O_$P(W@v[.ښ 43S${,a"P0O=Wpb֕': ,oޭը!xh5齈@VLEk:PX:)D.saS "l3D 3+ -l__/{n߾ثR٠YH+eC|A(AHRFwe  V!J0GJ" AhVKbJD]-D!EekWK,(V33)oFP3fڧw'O؎#eCRͅH`h$-~w;Dc4+꾏h5ld:tۀJZ_\ӳK]hCGo; ]9MQAjk,>نLk;B^zVЊm:D7y7@캎s햒d? FtL[eYV&|=k'>;^ťb ْM#i ͢EhAAGMbLdz}Ć땋ɾ׌OOkQ!nxL7\ $e&( R⧈keZ3?VW 5zLo!PAb:~/ MEiPL([Un Q+1̯Ȯ0K.xm-(>˿ɜ0 V{M2Z(-!Fjmt/Ye6o]SO?w%';Ft(ΓKR-[)FPIT\jpP䬍sF)A9J?PL$q+瓪b)Rh^ŠV$!JLg +ƒT뙾W{My%C/=יRzNj"S'߮\͔Y#Pax@ۧc j|r]o1A@MsWg{7"z-U 85Rw9Vv4L' e A7yj0SkSV}fۆ)Rfc>ySf0 =82qb%m2욹,{Oil'?MOtaG1Y;oXpZS\isޮ듗Rd͛7v|Gܼyiq_Wy+ ρvǼvصҽf*k*`A#޽ v:6 OyBwY}rrAҗmI艢"= n`;")ˊ mc\O6f'fʃGx6|.^MPV B(U` )3ޘ}cqlw\nv\l\^lG[0uL)UxM%kZo &"*4cs{y!|O<2nLNfaMl]m[nݼoA...躎 Sa{2h̓ sݯx&6eg]^txmg.%CYz+p-e#ٳRYa42y2& j5L%/I@;k1كY? d !κ[bP6_MU14 )t&V#MlT$b$67-))_I&ct iha۲b?^m+RR}+T7>!E!U5Hx3<䡴d@Wm-R rͯ~kܹu㓧_]ИT+i_#^2{@? IDATdc+$gzTCy{c>3M^A[kATG.)54 @7xNA\F (!%p[+ {˔}dN~W4m]/a}J50/KE(FZ -TGBne)D`EacPI&\!hb6HK#F"H$J(z=^?ɉ00BO"\P2EOTR(S%&V]) %EedLW`d=ƑS Hۏ": uǓ38Falٮ蚖ض6%sr +Tt/VѕĦFQ+"0TdlhX&=hK:la] 15Wv[8 ـHY t8X L%ޓj5Ctlgc0g>e[FPg 3Cf>Sɍ{NdLqߚL$_]V ǔM#يߝIL6;Ge.(&+^[H @N;.<"6辕ROuR,fj38\D+Ģs4V<}Y)&3%{WZ@sVnz{Ld(05P2&T dį&'?&^TUt0rsMo, eݳY;х\K;KZ+/#D\_lըl:~50ٍ;ł7UKr<Wf+j,̙9*ٗ/T@u&X_:&#op.1gEB [0Si~7@o0M'3Zb쨂Ǩk#Φ&TE]/}Фi&抍;C?w1T]\G 'l?kƀ̊%Qpw ]Ǽ1ZB*1?m];?֒:<(?W|vFvg:` zܹs3߿۷9<?SZ+̅pz_{?`{ǧ,d(ib{MYJ)HʰݒO? [ȯdm— ErʌH bb(ٴ]gn\\vl.;.._/6*1z;{ׇFIy0PF.{&G۶\~}/2W꺎>#>*kڻt}^kqswɟzV }'ߞ]w~ kԻܚ3_ ϝNj@Ӝ?=ϐ ~'-&&&${o bms54I'%Cal6Z@iDRRD"y>Qr@1-tT:"h7śX̓_bhBmV@ҍ*u@. CC`D9nikHp]X{ Ԯsf,ָP b,,-R|ibcc@m͏jWq|4AX.#^1:BcɉJ\@d`D5]Ƀ&Us!Yͬ6~?ok'1§,s7t>\U_.~{inIޱ4_2ܑY* AfdKu7RXʡ4E[AXKT2ۢfp]!r$p iNlf ;vU+ n!W*߰[+sB:ܾ Qa0=f1k(_ DX.hb:=TY"z;a;7&K!uԎ0UHpIa[V9;H(`R%?GdwRxZLB%.}_J= (:ՂׯSm]Q[d;ކghs]&eT1:ThoPQ [=R2$b.9KV)J <~j[;/A5KeW4}Cˢ-DXr:zvEQ$dpP%B[&0>KZt{&[hiۆج5kZɁ^Vw^^v:N0a s ;x j^4xa%O9z^g(j!3(6?+YT"b~Y!羬bW5<[$G)>1w>5!e Ю 5q*%;͢:<2Mz[J3k:J!]l~pz2y4+qG)uU"s0M|e1Y>Ǣ (bbhQ?SG˂1 6^VICl,%%FhsNP Ҷigr &U)&V1%?~er^!c5DNO9!eVV!Ćfbas1Wp*ρRg:u]BDZwՊ8::7ި@u4mLvO>eVbgُ ýs@\w0F?zBH7gu<\ǵ㻮<՛%\nax6gΙ>=\.Ǐ999czppݻwͮƱ0IW2$eBJ/aSSb`  1ɦ3;d۔`)3dߑN]|?WoLRYz_[]c逗Bv`pF[_Io1~v#>n*r2ӵrxC\|%/&tH=v102 #n`ml.h nvlw`̀WMjRMLG[sW+b\S5ֽU6~ȣGjtxxXv #>sm>|)K{zkR%Kd9>>Vx2ѓ{dۍTm|86>> h$M3zmDϖ`;Z#l/]Lf%Ա{3:dPA}{C y鸳Ncƞ7‡}gl=gfRpɵD]2so6xãkWMV8PMHSV2}96K<(EA>&yP7U3=9Ftܥ;{U쏞ʬĨ!y~wcGG7_ /g2QWᥗx]l5Luu(Y%7TCXr'hH0VJ8pX7ylVQD][ "#!^;}m'WrΡV7bE+ %Em'Ծf9 ȁ>gŗWi~[ůFgȒD ;),7\ R#BHĚ\̶d\w FSӵLRHo~⍠W"D­RhhGjC brAh$,Z|uor/s1G?tHI72( N$qs@vĪ7GC%bM)&'H&C[ (49R^}\p=JIu8]jt͍E{☇V, " r c+Ԫ0g*B~g”,`ŝAq}|}ڸ5 =yر8B4nNqvt.)YsBm8{z8tTezڃT;Jj&6H.5DQ00$R,VkJ}fA83 x^'VK -wWB:9,a?7}!tn r@2UkٳCU$d%RRSH_k_$/Z2!cbFJ\n.llپarTffc۱v%>9!%Ut.//y]nvɦH7^n<}J6l6զh-k׮\.y9997߬-s ͛#PrrdXTY*s_=A ,Yoۣ>g_wPg}M۷x1~1b4 bX_Q y~^( 1 *SYQyis'C㏜aK.#MlVchmHy !smզ7ۊU*EmZ-uƬiԛcD0r;֏&V})9],Y.W$"|+_CN^*,Ii&oI_~ g<=OPԵ7`@XLtV-2P$JfD%jVQX!,&O+^jE K h&pTmkEQp" }rr(IM 5z|oĕPy߇tm$b>I~=c}6՟Ȫ#9 -!KQiJ:T-slԇ]"Ws}QurpRԤKΙ4hXyLnMNxkxLF8NVFE<^ӣ0 H hv{@Nhdk2Z28Pl7h,I)\&?eN'd:Nӳv)8UsR' EIN1"3)e*;l{sgz݈-8mM7Ku$'`/?`ųHL,pRl~gZm7͹.`kS^ VnѧDԩv/')(>.( Ζlg{ 0GMOsI/>fW@Pqe'uW]`;k l|OF˨w|}NvٛN|cl@9},y=Vɘ3w]szxh*Z׬k-2֛ͦ ...jAyܜo~ =t  ;xq1ƽkʠIMD78Ư=g8==wrzycY~f~@:ArmvOw>*P+ޫ弪Z,E$\G3+ƣ;ܒJ }vcѾ [g:lnlwn!>j///nSگ$*@gMlEmڽlYVkVUܗ%1'''WEuMX,ċ'܆ܺu;wPJ5WWF5łYzE E@4,wP<(y޹ \?:bhj&4rEK[Y@*6+nm$(:DՙUU]M@T Tm̤!R=1`9'PȌc8îS[K!L o)Z]*L0,OrI&p!beh Ƭo*<  rt/Z'{~8c/8U.ib[ .w;gUZW̰WwUY}1 bI[8V[:͕~U_ +x?\l4j{H7aXhz2ރ{+&(>F::F00;m1iJ& =CcR^J4NF T i_QU< =:Y1ME]/6N!4Z9[ 'Kj::dg bV9oG--vQ~/1ANL߃Rp<%zl@J`x6*sݚOJ(3${:dG[KK\]F9پB4:Ry)KͯfSJ`k z1bT"uk (P$3 ǜE71vΈ/xwb4u|scmsP&41}Ve:.yAb_Pq{9emwm6Q;4{u"Lye Y"Ì?#>(:pr5dќn#SYy<:! 85S:Ȯ2K)HDZ2}̖%7nΝ;l6/, l$޷^u-uq%!Zf/ZO}pK)o}=H615իf^+jϮK+CnwmjBVƑem^+d*'c%)P ,u4Qz |C) zc^Wv%ݖm瀻t}OSVیag?oL'"mAe;#ɓgz,\=\Fڵkc֓PV+=ڵkwީx~=.a3-ʴ1K>=$Y6g]ڿze'zTyMٿi1rZmXHl,KK."dBl S}ɒ_''}'Q&Xތ $̱YT>z-D3؜~yOض4"bRc)Vs&,W yUoQP4Q^5صAYF\eyuGb$gVd7b{'!jE6:~ZK/+|ߚ6UR5_tz73Pםo/o3vJ b i)KS%`ttue[Į(I)RI]~ۅʊƗ*Eeh@@*@k@e:GW@JZ8rՏ8Η8|#:E]1q=DRh(L:g-aQr…X#p3ۜ(l!wi( NbD u({a1I 2Cֆ`E1gVnp? D8G8́Ų$$v%3\FEuSP]ǣxG\JDPPГLI6^{m#p*pQ1+,^$rȶdFu^|4 [aV$[#>IdOśǸhL4 F$rCŁ}":Z50}g#_,VcAپ.OY"DBL䬪Fv,stBz}`]`m8߿qb7 )u;)>ڎYDjsoIW=ug5"m0lyg>q.f{D*SM6+Ffi=yr))ї $XrxzUeGmşw!BQ澞^;45QמּQɌtDbPC}J+e.&z_=wJ!+ tN4Mh?iǣ&_Vh" ekO21QṬw/Yz5`ʺʄa4%ToGɩE:ߪ1k0=th۱OtEb˄Ʀ%!tQwRJ45%n\sI4 $Uejo<J$0%4f`Ecm8 A˄&b0 !xfoueF.$ 9UT=Fst3H-%J_"&.P -@ jZn^rW$N I63ZRC Er9'+2L՜OIۚF F^S#R28c٘u ܝmH0]XToK?? F}em@Rhf?3|vxv;7>u'k_\\`RMrj0{2џC2c*X,X-WilOku^>)iJleӿ srzCmEiM R!T'Β|3 TJMS<9nm98jĒ>SmIQJbwPFOdFɌXdm,'0F؉pJ7J,Ɓ0vl%.wlwnKtdd\鹀{8z_Gw]RTw=f94zEׯsppP]RJns="*W^y޽{{%ܙw.bsyr*><|xxg:j?WO]"yG$>P{ i@E.XuF,1?1jP=@=!v 4&ONJZkGhSvALs8HP?qŒqwd~ ^2}[ƴ#J[.om}9%qFPۀ]@}nܼo|kkve}Ȃh`N1s]4|׾ȿorؚ@ vT*6"A Uq ψT=(p pa{W Vf4ѴAT%gR6cN?sx鷿NXr*?B]k COF 6w)Ψ, ~# iCC!0>9#I](3MRV0qǸ cl,vu,P~S*93{c|< y0gEN5Jf&Mmm}[owe7 lȐse{ L/W^ ).ȜB'q)Ǒf@/:.ed$e_&d,͠mӶJ#حm9vs$*(&$\.Y/VϤd3ybJ1i v|6W?+߸͛G,ڶ FqTB IH@aFb&jBzm;r1)iMd(PA@ֳTi7S{Ld=cOT7 RULv`& X )&\"Fl|4Pibs,)R 6A+qi_lE%-|Ll41)q(8FҰ#˧Hi%׎nq륻\b=7]o JI$σ ty'A' Ddp_ a!eƤx2('aRyHKm$ b!(GWjJ6J2hx?naE.hچ2D" ^Gڨ} WC7[%g +Wn12f喹Տ]IL!S`2Ui|aK[=h Y_,mdϖiEٴڠ3/`Rb[D@e!JNQp17ޔP+`ut 2uV3B׋XF*70C ϒ&}Jon&Ř1&Dx)%ʘg뭎MmÓ<YJ vؽq*yXɌ2P-)ʌ j݂7.S=h),(47x['Wp'gr|rOHɔ}1 ;/m67ҫ p  n 6 O& 3`fsKIqDB )V ,ڥ&3B iwip`?Ǚ 9iRa"F. qbE ZC\q?Fj%^}NNf)=(%!}GM~O/tTTn#{VS:,w#5A8 ºQZRD2\ d N$,;95cg,; pD&ɴ&(;隓َO:%^k,3+Tul2J E\b-p^ EJCJY5֭ /1򘐬$ d ɊADk7?d8w6NPBYёB 4!Ҷ0coR5pB ,}(>{ 5yZ5 L ¯ylj88)'RiBłE۲hV9j0D*YI3WoL؎*?*WlZ Nia 1^0~?3%=TLI*2u}IcC"h &Ogt{Sfh[cgI}[8(]ŦѾG ,@PrWI.<046߽8.Z4+8{5iurP`\b'M4͢?F=qJQ4k KE<={bl$+0(5PL#.m40UHD3`e j8< #e1oIuhge%+/L=~0,Y8[Ӻw]izzyfx6iB7HVIK~[ʺ^/@Jᛒjs>|(8{~K* X(;y1xR-Ǝ˔UK_]י7E6{l, %~}xA !^)7Dog;|?Ljgϙf"6nѣG̋^$`{Ja;pPߞ0tc ͢<.=ł[o16Uљ^:ơ7-ZsR甐_Q88YtO sZ(<2TMϥ,) 堯Z(ˡ4Q=QԔK͂Cѽ15c@X";ڳ+g $X { {N2@_}l(Pp~IҘ #ݘnnGrdvi9hUN _CWq&ی {C޽znW{JW%Cvmtg^z*uvvVM\v˛zbsZ?ZOعnz]kh+=ۛC|>?r^z}g_fGGU_~sqqrM}]>;j7MܹǏq}]3'|}!_5JrGG{?_I)ko}~;?x`Ipsr r"M&%clDiؘ)V(FcC~%k8Ǩq̹W O՟ B `/D}/p4sW\Mɐ8&{1f:qk9~.}(dRoVckFse8 nQM4 Dv5* ͂خMM4͂W^}/}K;/j1g"/~VAW_oO_te&k 6MgAH6)Vj(b>OpB'*m)41mrΕِ金?_"?'leFvvA1ؖ9GmѦōRi|4r&h̰́c<ɺ4$r(q^b!4D \p֥0R:;UlE8,}dH0u ^߶$y/2jcm@7@xGR"Gzc|yp$ȡ @w_c4YϽhXJks޵2## G_]AE(AAi$u3ujj%jdk|쩆;b2yTu,0$D0FT$!W=k+z&Y[YI{h;&@Q~Mm g!EEu%^d|:_|ݬ9J/Pago'CcoNo8BZ _]eB 3yqER̚(1 IDATԣ'Fˆ$4]qK@

        ̑ɫl{©)x JB3"}'g07r~N{Awst1 idfbbdC{#\Mϓf~ɯ$m8QF][p]7 VYJ9 mV%:#8釱ϘhÌd}T1w]G Ce#Uk&5i- Œ^cLPcU+ĪLXUYbh7F-XiM:U^~oJtBPM$f2򡐴|X1T6`bDdFl$&ɖkKSm*cp'?gځl ELa{2CK-ٱil1 ,ONCG``S{$aA 3rދOz|U*-d#)>[6lWER\BDy0y.*܁z_9He \:FS7P.xeFef̰9A+Bao9HLן nʢ@]T7RG>Y:)7DZKv[̔g !y*HZƦҗ<ﱸ?㐝̊ 8A $g=!}!.O>ɓ'}d2*xO5YJI| "ÉH-=Hn_ O8)"S.D]]id P%?&o"R@MS^3$xo/9>xl0c]}b5IMRFڍyNJ f_؅vypxtC)Aiz<Ò94n8yCypNbֈ/Iٱ?ˑ]Fc<"9)kDTm̎)0eʋ!d*ii]ɮJ(ejQ@8ˎ$=wȖeɗ|d2a2[@I3kա_.qVol;Eiu]siY (rNz /όsW_}9}4Nׯsbqҥq-z-|o|rKICfgsuկp=2 1}˗/#^}U[_Nݴ:u'\t_?1{{{\x|2K|ˍ73^B4ZO\?g,O V[a| 譱TƖ j*[;d[[̈́dUKߪTR } ۛc|sO,-f]BPy!},zOnpZ2# hC&'8Q1*ƢM*Pz"B(T>V$i@ڵ4FXLzU]+.%Lj0zG0-ƹ\L8.YG$g{;jLǴkXW= I(DV>amtܻҿ}{8ݸ*W=Qe:4Z{pp$i~ճ2.Y&܃E|G|'EfufFd2)̀|Uo,%3Ni:ԝ!Ÿs1yggwycΞ=ŋK??OG;f*^›oI||>oϿ]n\ɩ}2K?x/~ ,KַŽ{xKx ]۱YoJ_zׯs-^j"oxwkӧO9::=`TavڃLݤxRIQC\ R4N Wd^+V!b$,1{f.S,y$pHQnERRRfGO!ʻe8&ty_, ;Vc֛cmv&+&CwmKۮ{jTs TV6I+;;+;wrg1u)/ݿ_w6Bą24āxCa&6U k3oƽguKS'̊01B L0!Pp7tg#}L$ j# %P{ba '2A >E6Z PHƳ vEZRtDy"84;A>61op\!eʍ[ >DxΣEx#DP;bH`귷!n1`+.*z_ZB#gЦMHc#drE(1~>BnIlʃ)pDN$qty<{g[!>U )1}2;{;ߓъ 4ziQx1[V@8P 㴯eTCY>3sc3ٌJrI~ECႃ`n_z̍2>p y~#Ϳ_6~8ܚ'/ct=1Ԏs>%%q\2 ڌ91TVMDuzk(Ԇۢd& AFzSþ I6G.FipwA ˽ਈ`VnJ3]=]%P6K{dbh 23+kڶ-'֩b|̎٬hg)D5q7n`<bTih$`{H{iTe[׶Iגu*7yO ,[Rr)x-F 4K:dXxvIם;we:r)ܹ|g|Ǐyo|\sV+Ξ}[0m{woşɟݻl>cg6ǓO.%RKv;ܸvc^N-;(ٙp5^r=ٌs#VU a̷w L)k\ԯw I>FM5EwX mJ+ z^"655Vi1 0c^L+U Zb[s3\ZW%$Ub@uԯ } Ě2=(艮c:o7)``,F*Ѫ(]uЂGiI~ic0VS%4 Mݔ~/.5M+y+W' w\nD w?H=6??w.$rn:(i%C8ߐn܅H= l2s[aO 3Xp6an-3kۊ m*@܄γp#J6gsRӧgh/ !

        = "8Thug+ȉTtKs䳺!oPоi߈0q,FX $c-!y)c}!Z{jbؿ8]YWHIJx>Y'+iK2<:X,qU2cPܐR`>-AF2bh1b`RCSI۹R44cm: eBRs@d5JQTP( Eʷ`*c&ӄLtIM4D ku=!%D,}dlb7M]I$c US!UMUVnꉒq&D |c0!F"tj bl 쌬=Cf5 yC9lgĘmʝhs Fl:q8 f@"Q)2(CiN!ͥ4%3?2,d%' |0ԥk/;Xu\w8Eg `l"1=b@d0( 'd ogecUZ$Rk4-?Gg`P j}y^Kq sB)z]v02`eFwfѫnj{`2"(7Zx@=}YKUdt2DO+z} X}:x뭷׿믿ǏsNYhs-;Fx1 .D~6ExZbsFp\O1sje<bq<43o8gێW5q]q,71#_-j^l1.lV|\^T|5s<0Mjżxdfm+%gNyaqDWMtn߳^q_ ;imX S|bUq?HE 7?\q2\sO{y/coaxD@d|zX9qMd'/,ʠz~|8OXĎ-5%gESUZNPhyOji)PaQ=1bHKZjz25f*0ߝsx1jdӎ6˘Y%'`+`{sl1͛|,KT965M0 ?N:޿ׯCn1U "S<)s))>*y)C̾$W,A2 ˿ 0|Xybj~aIV}#27n"RU44GdD+4Q,"8~"̂猃ZT®e IDATDI2VNzv0Î1+7kSEbSG"=V YGME8?kWܷ¥s98B}oJDؒH}̜Hl0Њ.b6" Ks+K>`xzCaB$e.*3Sr%|K!MÅr/lMe{hAyL0aa'j1!SW\-d/Z>dmOĥP/JOd:ZssϜL)! c"oKX.UUZ&^pEvϜt-w!$'8qeEmk !ޗ@_&d T{bXE8#+-t!Q4Tosl{{:эV6a6f)!7PdUXYZelTgddDVv,1OA=+,lC*Uʫ;gdӊ-Sa0h:c&=BbĭŐʡM#8s/I+HRGccVBuu􎘌 @L v:YC=LɍL f#t5l`3[G[i2 1I .ޗf`{gܼyrYc:1:U Ψ.GӶ?vhbd;~˘j ;I<> }O@ D>w x _/?1~f%h]{^#T +?`g*Z^9>Ւ7Vsd)LOuݰ 3 Y;>ZN⯜Z;Lrʇc7.\L1,Y)#s1RR1xBJh-R`󀴎Z{{{0͈Q(L1.`{jn}nE$u,k=ü`rh#%o]|>iKYrb0f_OcٷfgLrs\ jYu \c)R@bA(P])R,6x↠9KeOy38A^B #?|+"sKKk7_7ڝ =t04TU,;LgT})Tuzjx@uPMj{{̧sk߰٬جTP@A*Qu*zmץĤs`c,u=QIzJe'Xc=^{5vwX8}zoy߳8\PeT1Rvy%2&+袰X|hJ)Z*Qh0Oj{㱇L͹1Zm@S"D y#[6#Vݝg.o~?WWʋIkC"m1*{D΂l$ b"HXU&}|+yyp"yp2DmJUGQ1Th=]%k\ϵAx$2Ufg^~_ >y.r]FjchV?3)wGSJɇCxb^y?ט^3\es}K Q%ZNIkK>rʅ/S g G1D$%H\FXEj&!bo50AXT XǐtQ#9Q 9Ch^,E~d:VuiE}bNX?/&,-< aV9uUS!j / ;vtG0a6w+Lb[$C%:Kߩ|Wez2\x*w=޹$6BNhMl}ԏ+ڸӦպpQLSjdc,^k6UjG壤@r""Z* vLUcʧ԰J-ާ ɍ4P2c҇jBf'#Y]T)HM[&I$G֗^ehT8KQq d%`&|@ݾiJBV0$Q5w\iɗ$ƈQ/93%9`+IHZ:#]LɸbJZ~g+[n CBBFnRyTSqU΅$y*IPQiv2#xf %1L%QPjizi [nz2 s-q"#/M4uǏO]<|bQ9s< ,k]_$YJʮvApE :U9[q#iRb: fPJuNbjޱ>IjJ*39Y6qA#}r ܐa#k} "} rT 2q]ipX-C {c1xjЋ+"*'x)nMhT6Bo̴m@}իl6W\z^z{qmw\zbӃ.\8kƣGu{{k<}{S75>V%_oŽqM?`e\8>ʕ+ܽ{OSNж-MC EL&\}u'7oSWRpx1gkcy^#=:rw=fwoy;ǪX-dbbwA=…^`.7?InUl=GجV8k6 bd27xg|ƫ >͛ Dpu13$)UVS/Sld{;TcN> wv'IY,vzq^-ƲojVp|z7Mzg55Qy\D'LK"ԇ@?p?Oa?*V$\G͒/#k\ZC [%+2 B$NSҊdrY[D|3;8 ue54|@׵LiJt,`d [Tu|dZc†O9<:b:*Z嫜)ik65; CR#XĈ>K]#& of{to&gϜxp}1ڟ= YU /rnY ʂ1f*+ݵJp(lDʤV"*+ZDMVobPK"l.g+k٭-5#50OپcӚ^7'__W_|gZ(IGNx9'1$nI_1(S%69F&[Bfni7UٶxՒk}qSr@5s8TCxêtPʭl Azp*j]tD8eςsSv{騌&ԍ'U;* /\ysu= 5?q\Xldz_|;o˟`<˟;wnqk9@hek9\=~~uv?*;W.Uu-;Db=KA,kc輧waOYã tO *3c:*!9=<Π$IĎE"-y6|%GH R S LjvkrH^眎OvqvQDmLN' oB9%m) ?Ñ! &=\wE5 V,|%^>IM6Ityڶm7qjFfŏP.x `;Tƥ S⠙k.bpf*54q>a5cTegsϥ>stN wC^1$pmK^ѭVXi%]9%ATF'T*&JLZ;0\K޹sHESO :ab {:&HԩiO b_AycK,0,ˤNɈlX@LWƋ,11IO^|uif [[CN bQ_#) zFdLҌLF6$듳lEDtRdY<6FGÒ^\-|Q5` 'dI3=ꐩ= L7MOxJ*%OD)zqHb'Ab'iVdT°LH~lucL~Kr(Ms&<`zوK665ef.SJ3lFqt̑mXe"b+2Oys\5ž}`R^H2!}x=]3@P8yhD8=>*~.6m*RxI jQ&BjhBd/DG^I=^C%z)޾u|ˣ2]mKe/6G׮w9+.]EO B3Z9s<ׯ]LJy98:X1n_վ=oRDVwݖΫ'gd1T%$Mz>ÆGO0aS ^8Q6)EAsIBIC7g~{Msb:7 )OE 7vC;#o*ncK&ߤ1h̝D 9ʏ*bLH*lw^USAMk5qS c6WN 9dP5b~LeVOgu5咾k5Mu`mUTvig9e;sC94S^ye^r_|tCuF;9 [g9p޽_;Yy ,Bt+TʈV}ИJs6w"t:D61J2^ Qh+oߩ30 .+40uO٠:=}|__ԩt}ň{+[1$*iҎd=u]6wOo|7{rEXq/>bIͭQh8ڄ\Xs5.ٙstBÃk/;t_14wA9<gbϿ}M;sB޺7n~߳"S#`j x?^ Y/';o#5ӻ~ij4G{H71#Jc~s7з*\W_H5Qk8bD+NDt 9ω ('ɰ&lK$h}h'#c%)x] P@~RtȪIIkZ|0,!f8gRA˒pR"X VI?f43Lf[ȤUsK{/T6Iivl]jH\ؔIJ$N"VY6;K 2ԧUe0??dX'yfݴ ܧ~5.:C?;%((F%6o*[i@yU]S+jДj׫JA_dL Keb{{DV=Ðt3)5ƈ#%{f0q 8GJ)>65M8YS䌪hؙ>HQbX4@#2Zȯwl_/%3[ _݁*Io,;σ^X,M)s|.7%9KgVr)IJ{%Ùfs |F"'$RC8ܷ gG V \n83`LJNFf1yd1i,˕T1zfcQh^n-`q($bHo89qRfH$G-7Ь? 律Hy_NXtPfԗlIG FGZr SW f Z\&7:C[<|ؤN~^cU@3=>$eY9"H2^~Xc1<.&6L3 ks8YZˮ{1Owbƹ9bG*6| 'BUy{^u< IDAT͆l2&X7 \K c (cԈT3>f"Sc!"S9;u[q3u(שd>~/}|Çyw];;;֫9k_.Ʉ;w#T y">ݝ^uNG/}3O\.9KHuʚjۖ^{b~ 3+ƫ/q8ײ?Y7 t>5郈k[Bo+aX.]:nms.nw o\h']qx4vC<=^ɝ{<>8b3FYcuMLf9Ï>xÇ<~tRIa$xOqK>]1&dI}}s-n߾fj|m^1.]keID. ?~sAf)JzŒʩs]9u!}2ހx-)˕c#\ha\QoTsHbd_m(״-j }fieu̵T*  EѢ$[;h }q~F[!%#vXDY" 6 T UuvZ3Zk{QejUiv9w ;O>궃7f xLE>m/iwG0F zr? 䏌l1gI3)fgIer1XTceQrqNƍsB]:>)x>J.s+VL*}u^*,Z ㋍p*go|a0k}`4͞OOM&Q'i\aɐ4e0 h̓{RoZNo}9;_;MҝT)ئaUYD+b-۷~񝻜nS }eT6"<$ّe*[mxûqY;y4?bNkbY|e߾_XvܢI p gAe ɦ$7 l1Ŵ[|x|o}ԯѽ{l7fgCӛJg5͈pߥ 2y}J;UM?s;㙖',⣌YK2xHH?}mF,/̐{F|IN@ 탾2|(c5'-d,(G( 5cpc-}.g㌍9JT֒/6LdXp;k! kDuΥ>]y-lYL 8^0#G'?>,q WSX^nY0)"c%=bnGj5{7Me~ţ>Td Q~Id^QU%I8֪'c(F%L0+[$4j_]/GCir9-3Ңr$jY>LS|tð&pL! do-㤸jL&RtY&S]NQM2A=JC^OjR7wAbUl KMq-e8.\kdY6O6=g%,m1&dfnR72&&y{ncx-|nۏL^kT~UZ8HWUI.}2)o46M/?Stymslg^4͠&8=Y9BC +? $ Ѵ-9 w9(* 9OP@a)(^FC#xK+a}WY9}0a yFh"<~zKM9E=:,9m @(q̆uW*KӮc"oUwm FXfbry ??qSr o`4|桇: !pxxRrZccT/qrr@u\vNOOc\s=2"ko&~Y.u|>gED$ ƾ+h'lD8zj|qn?"WԵY3u%v˃Wxpww\,{{3V\t;W.qwǟ oCݳc)Cʕn^k>̣׮ᏮZy?D+g|-}l7ܽ{{n9Jr?mp S%1׵|ǔpTUUd_ frα^KrY<{vwwfI<YfY]ᜣk%0s)=(N\7ly2Y Нj24@y沛$"4 ) 'e& jGl@Kbr\9iqдo}%@@l\a%zc*IFH+y*4 ʊ9{APlBٓ E[۳ވX>T47s&XlttRj9s4uC=CZ蹚7_z$@ۢSϔg>Jqca8fۺ$!VHۙѶDMUJ?1T@DhλݮٮNh7KXa`a,e6if)bY2#b2S9_x9?\fO ~7?x!Fzpgab:kE+eG "G$cO@cb(*10wWp J; Ĭq m*`9t+{|~ۿ—,>͢w{,Jh2 e.BKMDP9'Bw{s# ^5%ݝW+`)AY#bU䄭D^KKue.LK;osвZ ;Ѵ ?#X=LR=wѽcfαAXj`UMD2GX tby"Syս#+Xb``XaOಳ"ok䭴GwjNB؋F(BV @ʁrIV#nChڟ 9gMRU-`b Zޞ͋t*Mh\!٥[(ST9DRtmܞ_s; %;vI@& J$lVBez`JXj?ʞpWKƫt_&vN]Y#YhJvC Hn1g?@ٯ 4ʔ|3co/IIo i7-}cLڪn&ۈ5HDBI3IU&y㒽kQu]z_ێ~k;Egٸq*A#>a r6Ty#%_.KԞ8 ln4hy<PIr63"$?*Dp}gOxܯ=p20MMB4,}tztx_S TRgfFM:AC2 V 5{L`Fޛ.bj@mi W@PgTUTɩ :@1 i@L_*gQ陆!$ۀb3C'E*-u# xW7q.+diHUjI+qX8Uyn7aLU٩>ݪ Vp"/bcO(E_~ڢ4c֖Yk?HM,=$"l6U_Z3x[Ȁ06>2͌q[b>5)$AfKWߏiWUeWTozU]oBQ~ܓY$ MbEKKRU[&9Cxھkixǔ~98f\`{_\Qk ضl1ikp;9O}C(i ֌" =kցm]s\[':ھ;(w1Tsig@j)I0Y/aoW:C6JUٿ\$W\9`uģ-?o[ssG=JL:Պ&i1"QݿٕKDonwRxm+\Yair"O=WH~߸nS 41|5ǧV) @9 >DwF *.i&m|X#}n2cK.SP"s33<o"IXZ?U! Y~7Grz|f|DbBb`҉#!̕SsTeT!<k \pk;`"p]wgx訜jSNC|/7oί쳟awQ'`c޾ɑ+`Z$ȋŠ)>^'߮W5hZ`Pi`"[)^N7I91`v6{M,&Pr`LnI[A%"q%lQ+`|E xM("|9aR[T8Ĉ6ʎ{wrʃZT mTس3Uvk=C1a1*!hҎԤۛ+\ t}_̫Ɠ6l=|r)VrPflj@a{lWȁy ĉT瘡I1"dLOYȱS@>Sdi84Eux*ҽ+Nj7=YBlMilS*MS'cfOhJ 4x-%`< TyԂ%h.t`9#& zR9+=z1{'|r ;fyzFXi7TTz6cgwhZL2YUqa>_$f}*x+Fhzj"c#@lq~d+J.07@O߭MQ:%]3y|ઊ>mU _†"C&[CX؏l91ڈ5*|NUY6@ }K){F*_ln зeIk{B6BGcU9ZƯj  1PJW` Rv$M@SdaĊ8Li4NSl""{bybjm+}@b5؂Zlgg(bZ@0m /ѦK"gŐ \; [';$ ZU5 ېbL.Ec yTiLD{V1erv11?ʦ$PIg!7WBe4}]lARz.q˨kdm0˺pIG*eܼ  ?A2XjP 1i &ՓSJ7Gr0Gt4ӏM~m > 2 X+q੮Sy;T e?F>BSSgm+뾧{L{!(VH|i>c*_[,䄛mQ)kAp˔׉:}oluNvvvsE j??ٌf믿^D >̤CD`R >iXjOЪ&DEy=üP:ɶ7;j_s4f ǜnɓ5}gEY2{nݺo]2!Λ׷mQURl.z.[Qu]廅iB<V׮?4g'=i#R& @ t[7KWOvh,9> {͖'Cή! `s^=Oϐߏ 1/x{3۝~@vCY#ֈJ20V4ı5c"#v=c+hQ3 ƠB}z > \y'u2ĕ'I^F'¥KGu0*)p:bܐS&11lSZ2|戫'ARJ\]Q|૚nBTj(|EE)_Ւ'jʖtcIH!\\6V[{5V랽K3+nV[݅s9|(vkorKvUwv9 {oی>W,Գ=+ֺ٧n&JYB|G4&|dxg(oy EPx8//|`|@W[jql#clvIŽ(a/8{# ]Mǩj̼yfgJW+GzH,v~گ"/_O?F]Ui d}1WKP cKMS #0VL XuXF#+5z!L%ҧ>KOk5m~ELDǜ{Xs Wa #mYӼƘ=$Mu-Ԋf2aۧM3r| IDAT\ 639#I~i3CPaqv$7N0}Ơ&EKTJ3"KK$l <N}HiDjz9@qQ$t,QL_/*){^s' _My#Ͼ}볪BsMÇ&Hr3Ǿly)9cJ̾}"JE]4gt+O4ƆU=lՉI*ΈIm!!r}a}ϛ0=C }Q atYedY3Cc:ڮOR-햮5WUżiB^մ]ǶmmYm;Պ~В+8A2SZ q !p]m[;52.zC׶7kៃ90l,3t#= !"Ί+_26-=-V|&5o(gc,@ 8:72F<ްRE-w~0!GFW e`Bjz*#j.S11˘B9;-zª̨e.vS*ʄ#3`,g*1Χ I4.,Cn' ['v%ZX9 Y5$EnQ.⸶b\}'V} 'fg̩OK0ym8KBNgҠ9vV.!Rƅ)EʍZ[vjM{(SӢɌ|/ ]Q|^` 92e!JRs1?g9 BeU'dl.ɉ>:yзEY/Zd%...z hfnl6{{V<2#e6 m*NlGeNTV)mꚯ4 ? TF!Z#-U}^{1g:ohQ@ʹ$\"(\Snr 4Da`5 #ݾ§3nݺQa7O=ԧ?ϥKus:%gSn޼ɉET._gG>r̽_4b,&3NZ`UUҶ2[YJN^*_a\x O i?VvD!FML %ZƿhlF4\t>A~bHg0Hp;Plb4UT,FVITeʪ~vۍJ^p}0n׵윝ѴɡD챙5J5V:Ro[.xK\ޛGQ-*LVűլ "E'}vUty/bm@QkNx@tCgvQ׽1c(6__KfPt˽$CH-hEtbĎTN[&Ull@q "xam9urZ&Tuq%q>;![.Cb&+AXF@(Cݴ$jVWmL [%Ā]qj*bgs#0ca "XP9>̬c[97E9k!޲vts9MpaKJmd>/֔e:Un@mTfi_ F/ VA`SjqAa8Oq/* x(\񑽺bWk: i'+ Q,fsfy/\z*>]V;{XK#F 䌭lOdfOjR>hR@b~`8i*Dq ȧ{Q3P\aC&U|\Ls`P-Z/d¡܊բMD*c!j| XL2338HX Ut¾X`&pG#g<"%K(oKxjI2/m{o2z!I8h8W)#\:0 \+]e >||dywfǷpgL |N\6^ǫ9"3>s1=ش=| ]}R p]1/@IwOdX9>CcWF`L!^1 4L (o9>@NLvOco]gpj$cpv>xu7.}~HRr.B4Łk=-@ tM- ҶvSqqvm C1YƙB9`tSƖIwnS#㵤̌t.hUUsvN06lweP;)D |ؙ}:u|99uσNd. atSC'~,F19D"Ba0yWRRSbP%ɛ)J})J*bCei1 /nVH C2I؛mh[!'S}vjSߘ45ɫ΍)ę҂' drԒφD3ߡ-pwYQ\+R?Z;E1bP"Gy"ϑ4^dɞ2 t irj,K𔯔+l#,ӏclS Tm&ofY~Hpρj˺ȭIum7y Ss$)jdM6G `W>(C3_>{@/|>gX_ҋD˗/OYV9U-H睠 a`jl6ڨJ#OUWӼ Md,w][pUNUy;ܭ+g5,mRFz$F߉Yu }GC \O &Qx-4 ̶CdO#uת3<0xWܩjj"[>ZnKݷ<\qGzn&CI?w±*_O =mxG1a! \vB0( r:aϿzoy~~^x1Fwo+pttTV|WU~wG}>ם9JKOOx7٬6|'~w9拝+=^Km{k7os\Q _/kO|8#cui6kں^LA.x}/G^m~aac/ߟN>vqYUUOHrl!prr»a .¸Vf{_߽2[9ݶ-gggj1f:)`(DfPW̺ QVݸ:\b'mx 1tTכq2 fX*z١Huol_>z6Ga e:Duf*W@/[{?XkLkx5[7"'RQ\3[-K =R/Ɵf= .4w'4 ?0éI^ڽe[SrjKMT9-BԬ՜L3uɏ8=tr@A|rs$5yuIj !FZ-!陆Re!ہ u2V9RaÖ{ .:CPг:=53vgZ|O+4f"/2NT@#1/qp*l\[ ˗Yksi7,O~ﱿ~{ӿhfj5´+ThQaF4p, @ X-C[!ʮ4r7kŔI=qXf?cW"rXǣdQOGcH@J hx" kRBJM5cicHXqT$SjLbG(O9t@ُ&2c3sՏJd疽|L3eJZM:EZ#NbGkdK4&ZpϫF*b@]Un#aFLP.@_*;<(8ciԤ_5 ߰EJ*pj9ikLgzFá43rƍyӳ˴ fwtd?ѧNrswqd 4fN&4X_ {[ơld![Q'6{j(XnRTo\Yl>ͩ놺nFR,jmku싁n,sd4Lf+'<(KE4$f#a2c!!CœF|'aq>c=$u _yQ }Gٰ>[<;{f;_:`6jݖnּڲf fYk\/b=ǔԂ/:g\9@2n BK.,€zC]S2CdpLj"{eA " 5%ݏZR 0 򞺞% 4C &*e,JXw0 3QLMko'"k?4JaH2_;ƘU*ZZ 1 qlH2v%&}gI1 |5zo^UƜh Į]1b(c癩YsT[{cӚ䀄143@-!$;2#9uE ` 8 q)*4 +f;X^BP֫er=}*84@.;VNɋ Wyk!ؖWf'OgKd?t, <iJc&Vp"Uv/iKuqct>4lzR>hfj6mġ/)aC YJDNOXV2k5C#&ZJƈd!ԉfN}sз-۾/;2A Rel6cgg}ʕR42sAIKF4d+32܊ʇxm98D$eO)TRFcTl$9xA$r}[#T(kWRSrնz _qQnG~|߱q9RDz:ijt{<Qs ]QyQWx/F߫jv:*;88uJu=-s43+p^QUҗ?]3z_2_W?CE pիWsl$[xgWCKWA=DˤN*bNGE[q v<CSѴ} fHQvrA T⁘1^k5343cv^tA3$#b5)H TEߵdk_%:+XkʁɌ숐r42qpy:EN;" 0'-B"8()i{_QU3+|!@1HP q"ꐚ|'~@S{$Vس>N }IFc^*FLvR@B&2+.3e3p"d+9*`]Dg~l1vzvңmIl|bgG@~fu)$QznmX!Q f1a<ɭjɎs*1zaW !3=$w߃C<?%~}q,Ęe.kG$y;e< 'T$RFeIT>{٫՞k3h $rŽjAqMÃ}~WoRa=wto9{%d0`y5>I*Ug (4qTL| jX֪ehpnԯ& &% *lhdeV6jD {V6B44NL5crBx\O#h,,X; @γe/aP>$~GuT΢X_hܶ UX", ge^.h%CDf{@8 ^l'f`rj 3VV Lb~`*Ϫv2[ΔV_{+Jp+w0e=3PM‰4{In`l6cgwݽK4yɚRpn9==eA9t80t[Nk$1IԘeHeu{lo)e$qwRзtۭf5u=@U"{aT~y uC]۹,+,t\O =9S*qu*i΢{`%*p1`l9Rtx}SJ!Ę&$7UЩ S'TlIvhhҮOw$ּf&F41]!鄚܋Hd`(i2ܳC tNLGK02]umrT o$ChA sDni )Eק{R_4~E"i2LT.R[CE-'X6IďT 4es՗~ޥubA)Ȳ 1xN\;I]iQ! 9MOʌxRYj8ȏ7bccc.ME*W;Ҧ_@ܮ}rXV%ku]8u6+r岓X"^˿%uFѥMݖ%Rbʪm^8F!pe8pZH^x'8 ˃1~÷w7<ҵ\|PBYyP#vcg)ϟ,Q=K{֞swa? <!l%rNT.+ 9Zy7n8<<_իeߺuo}[ܾ}~_|GyK.ǣ>c=F4>n"F3|GyՊ?יf|Orf9O<$7?}6?o?s_gnz^}jsfͫ?Mmy'>xW @>8+_ >hiS>a駟./;3?3< f\z_|?^4%G˗yY,^zo~?6v{5L^{._l=iVUEfÍ7sD_ž)iis)+S~(\,it,Ϗu7/LyW}O=mB,Ffm!gVz>i=H?f{P<7 <9Ē췈j FJ&ƅ3O4ðŘIBHǵ>p IDAT(L:w4W5✯b(:#D poӗ5˪ XpZ&mT#U#YFSk8#.-HOXwRrTȊId2522(y`NyLc΋r2F{ImuoIvw9N޼7FjPvn/jal^6Z‚nP&DMYs"as"nf h8*3{3g?{pN,(## |3w0RxX<^U1섅(ATI,D km/ɒ-;L{q&yl`?Kg NpKae}C5_ODбxB7Tb\Vrz+i\?H뺎oۼ;m31{9Tw}o /;^M[ۭu/gJNcD"Vݻܻw/n>?RzD0is\.KO޽{@oG@_t{MCΊ>$+xr\nkhV ']S蜰LY7MJ-$F&GQ1yPwcs: g9jJViduD:NY5hz̢GG\tZaTV/_NXǠ9hQmrh_pN}t*0ۚZC"D+q81 >/ @۵N:DPIp<$9coGx:nFV)Y.HП%1,HϨR*1HŐRHKCۋy[7ΙcB"wVtqX!4FŰ $;{ 3.Ρ#IAn:f UG۔F1zTLZ%Lk%1hlN(19>lJU t涱9_evK !\ԇꑟ_?jŸ%Tecs§~~ ?o/P;:T`%v'Y<謖Y9S/-aK3pJu./#;&}w wR/2ډb~k1b +t HgG.2j`W+DZgADԊLI81!TQiHX䮰{;R]u@EyεYE 8DQELFԊs9Ɂ$=0<!Ȯ *<0Q,Ğ"TCƫH )${Ԃ` l Z o#)H8,)=,t#y5ub zFi޽hƑY=3 '(!q~?qJ 6p =3IT$j31t1/9\ 6;ýsUM]WtNz`~hp!,{BL'-dBV[ { neO&]; vֽ`}:[>A˹iOB>e IĮKU? rr!v1նnJ_-+2%Sݵ~\H~P{rZPIu`X;s&DiL ^ U5Z!azcM<ۻdb$BCrř9 ΡQ4߶T! "޳w287-.(M&Grn-۷2::wT[.3дFP(&Aj;ݸvs"j( 9OwK2+5^ťf d6HJ̶jUڤU(2 'H-R ޻ bAl8̆0cLRhaĤH2Gsx#&[hɈfsf>Iuˣc"CO{GuٙmOW{o]3ꇂjYWɧyx+S6c@Pj,I!hj+,,5ִQ8y\UrA8-%:>E2 Һc(Z^ 4^1hn.l)#x_3̨kjumYXv &wIdNGu-ݺ5JaBh̑>%HYDFD`vDbˎm6Fb?vE%QraR,V* A k#eLLHlvГ`}J(o*S*9:tUG^vTe-ny;^͐'[lRnƦaCD` X"i76,[{Y;fY92#@a碄\̠I\3>~$Sz(u\U٠lsQHV95K'lS1bPnzZp%/|~v>B;KC'lv+jż]3ApMbU U1"q   8^ʮvw'qld,54A }؟={˗/3kۥ j0w}CEj%3ݯ\͛7麎t?ΩSwyWu9A hm mf=K/sٲkTv;ӵ߾}q/4uykqU)O=9^}U.olO=։yCn߾{?{|+O4یF#y׾baqΜ9v}{߳`B%~XGץ@_Ҳ\Lŏ(7GGGܸq .B9X3NK躮LvXVn^se4߭$X45b0nlbY.K6؄+@IHU ]|e4 tӉPB.  uq}WIθ׈tzo*Gm5$6hg  sLLg>D 튆hZ͏Qzs108K̈l#Iyg"f澰+͙d l̦L USv-镇h B\|4;[w 2W$I -S3m1:Cs+ojћ\&tmJ&S|i&ܶ{1MN|5‹#$f&t8& km ļ\ʜҦiPf >ll 4P4L* j>s#==u=fs4X.wpMvZЭh vhwL9ՂzI5j"_SO>j{!2Yzy؂;yǷpq/c#f]5d8Xˤ}'pṧӂ=<|_.?O} C+o?"_Y}Gz`DCUwQ|&&0}c`2=uk H*nCht1I&)ALJB*ۤ>:Jf Gb5"+Al,u2H]+C=|-̪c<:%Jzr_xF9>=d%L-ͧ:Yt'kڂ}D4IH@ eX\-SRɘx(W?29dY=,n^lYϽc]Ig:]%LHٻ,XP^$Iβbd2=3jk)Ad2P7 ɘW8%W-$1 1p61~5 2iZ88fyxD\%Z`v^:$?d>ihF|ɷHx@C&.,WK֫:ڐj@G^_Uԕ/; O\  UϮ*W*ZҵPΌ2^1Uee\*+(U`l>E|?,{Ζ0#\F8h0-Y8 Ty2c'SPz)&%N*fÿ Za9x燯uv |D#+5Ck \Zw򎯨/OhhQq[O=2qmvylvB[浒%鿘avURPnJdžO`#7b<| wtaիWxbRU~:GGG'޻\.77NH\zsΕ?|7/{{1w BѶ-{\Dm˭sNg̝;w8> -8Qш>ϧ>i~x? uSOUqwyI{{{o6/u]s&1FnܸW.]ď؏/"Νۨ*9s 9%#cن>Ty(9::*xߑ[4G#ڂ#Yvf>W>X.Rn.>Sd(҃{쟽><{CUiqt,٦/9\&6PVT6'9ؾV'0p9q T!]KfKgz>/)9%$[>-1ai,2D N2-p. Nd?n _;+R٘X!D@u[/׬VAm)b4}"[7Yх =s8iT iiez-?_)I;~\ yO]ozt<$8+JZp/onm."]\5?HVq3cc B^1fOdR҉Һa,Wj#UPvzbW`[> ٻy3OCd{1+|8U[HTNZ./{|w^ f2mV|qMh;tWXݥ[ٺt陭7]u%˽Ohawhg~paZ vNS? { rCQӣ:ZZŘ"FbZ#^ ;O$Ixgöht^|8U <׭{ @T@t:js "t Sql:Ge rv>L L@e1:]X5и +,9gYv).ES]F`B%ST)sƠ20u4cvՔ9c,{Q"b TS>ó WvX߻Ǒv*<%S5UD q\;L)B6~Ot"'TR4d_]8eְ$J= {` 4$1N ýKu/W'#HK|z>e{QN&UUѨƹ %凘T4rCH@LKrevmI۵ׄ&2Sp}s uU3N,w_GQ7 u=b #NoBmCgicxpbI"qƮ V>c0?-c\ ղV5qF mk53Λ𕇭0IIdؼ ׮JxI]*%52UK2C3YF1R$5OdKkIC YQԱRbjQ cшEZ:q [M:F2؜<;eHi!Ni'=XGBو}Ste{ 4i$2@OJHMht̩0a2 7]- .$^Il _-Np"ᘝ塷t8d@ ?//_F^,)WN3Ӧ$%'B.ʍy !zg8K.c6iZKL=qGn`c!1)}u!NPcGhr$Gs YA}=C0X6|^"{Bͨ(O?#T"893n_AfD|Gםcj_wV ­oj܏U˹Ud[n]W4!;[q=F1_*)޶ܮtp+uQ nܺ=\q"{vڵk\xgoy)cx}kktZ sqe&Iy.< y)/||ܹsdy!u;;|2_.[&Ȁǻ8h4N?//pc/w}Ν;ǵk*={O~Eܸq??_z x'f,Knܸo~~O}7xjŇ>!vvvpα[oC.ڷn>8,Sr Dez 9~dteƇTy*L ;cWz`ӽ3F{?0{3J LP@S${!ZڦZkoޥ٦], v߸҈[43 Gwq Y}Ŋ@TFX2?;h(eԀx h>YioYGEY]I`{Ֆ:F1%hS.b{{{%pOa8(cmul9@al T/i`Xa& B*lǂQe$&mo$X;MFRFҒgӸ'}wL~nk4 H*еz?\yd0al@_S{a r=d= O킷'XwNŷNF]& ͋9ޕY2vuU!}$DR:VBEFK!aL)6}Ƃڲ'|Q]! 2*B.4$H8;Q!/U.:դ'fBhL\]BCH6i{,Tq1BI.q0!K8=D@SsEĪ1X=!AVgw/܁I K@1( D!+8[P=<N;;Eʴ)7iېC7V΋'go&VT+g)Ml6]rUUyol&VD*rjۄ 4KMpɠ7TX;_*ŀelrTf  =saV@wet _ã}>oet3Ut`s=O1FT-5ց=<;by<,f^coXy@SCv}U#V}9!bW/Qk>#ϢȲ1a4vV2΍laZZˢ#͡}r Z,WUn+$MXh}ކ1<$󡐁>.駟.Z_5/8oor֭}Orݻ{۷os5s?}c1mc~:w}d ~X-\gccԘhSNQ5m-`yQ4 ٬Cٯ,u]k]ױ\.~|8/)%;c'@sΧ; Dz,x1=ɤ+JюEg1 4usdu!nC,11H7/F+{~R*Eio}?\UeNfd R]4&_&qt{86gSfSӓcj)&@qB.a"ן`KG \z ޾|~`/~tݚuJEtxV)NIf=w)/vVqjD=!Ĝ^XV5rgG \e?jM,eZGp%0=3V-{ɞ`#CG f뺤M߶GgTqI=7Վ]ӵk4TKuF]hY/i'P4t'j ENS|pw$["qݲqK3C^hY7yX @Ęj.SF2$ra+5-< 5fTbXLއhB8*oW59" ghTޏ6UTPlhzsBh0M\"6IAEXԍG0VB;ة+ 1rA)/r4ٻs݃}twEًp((gщJev*)U_qF*v)s*ݟTt^c}I>7neBMwLdl4yZl[CJs=>8k: *j4M6W >mHź%wJ$?|QpQ5UU5m䟺*KR$ID@ޮW k` !t"CB$jQMSM/۸ zqJ]U/j_K5B.֝K`r?9oBOJ Bvr>}ꆪj8cd1_GΙu4VueA 'É]$bAׂj*Mׂӑ܅ Q {3PQB*޶ta)k_lggZbq4R]kNyxa6"cש.2!\hY*C&x.@9N˼xp ){G#[D,N-pyR#m.旅um"|ӳtĀJid{%B`=Mmq:5oYu#˜LYo;샼?<<j7M`{ngΜʕ+lllZ.E `^xSO=Ή>}~PM)ܺu|_O5sp".],2U}~m|^/E_U|<;; +_ n:^}YN>}b^(w_W?p}Yvvv޽˻rW_孷^`:r){9Ο?OUU\pQU^}Udk{ ̲gdUUlnnu])ޜ֭[,Ѱe2TUUXZ)4MS9h7`Ÿ!̦v#ɠ$5fq4\xXLGĴtD8; BHd_sM7Quku|<).6\4[hY5w,w لY M&6 *G;[9.>J5\ zr{Ԉ(шӹM.$]@ wD0 @g!^>c[̦RW)jIELUd{s@a^sbqd6Gf4}pEg4`kdzĈPA`I~ sgP!$}(\M=# LMcc]90L$`r(g:1 рjerv1Fy{,[ˎw&GƓSs"?rzdjV^#]ޞIY&z='t-O_ >m$jcFT &~ӊã1dQSTP~t&vhc]U'C@-tJlY/٘\2ޘ0?Cs@Xv|$y_sqi>3o*nij reHTX!Ƚ8DB< lu jq턹*؞ `T5J 2'2Wc%e+0VQRl;L U"inLh9%&r^SKlI8j" q^m)9UTeC$U)s1˦eFո IDATEccC;-T 05sad`r*Zyyq[K,@q 8 Ut8@iR+TQi0N"]F ;B9P`ZU)HW^'*kL0;'XҐ~6 7'85gɋt I8c H{"Xilll3n'D7P¹rNir Wu@tT!VynPqC|q*d[XΏq9څz/ }s]h&F1Mc}=طU^tK2vjJTԣxOuTˆ q(I a2u3&rHcai]4٩$/TFXL1t.Ced% HMUO]zp0/kKM,U ,%2GJD,5k3ɀ\}a1fÌ4]:Fbg|ڀRSP a;[dƥ)1oB|_K!dn듬nxb (ewo!M)4 Xʖ͛$10\4}~N6\(d`Y!J"Vpײz ʪ'B~hԔyb{UV|UL4BH,tH!tA!)`q`3IKM,M 9 4`!Ƥg˦KJM425I@f$4 ԯ3]vcmFfY'y8fp*K u(5dgx\Ldl%=idS1 vdbR!%aS(ZZVUX!}xh[D_l);~9~XzG . yypO!d2'<K/quӟ4?xzO3+R溮SsEr$k߾szUBD (?`\gL&LS~i~z =ׯ_w~wxWX $<3'qZqm ֭[|}Dc]DxAU }\r||K/>9iy駙L&;w2]_~xlZ-Ϳ!cΏF#cX۷Od|eҼF'z ^wnݺj*y6аP{/]:s:z27ʅGqԄQcZ2 wT[U D~:GGJ>֔m .#jMJ1&"3 gPCt!бQMO9WUM4PwAχY-W^hPa>HvՊ7T籷?Cst` x<"yʄ=1g1gO:F ĊE MfeM^ʊ*u Φ[GcղBSˠLτӓhW-!ٺlSmL 1n8PY3ژGӬVkF՘ͳm]*]:K5lmŭL6fTQ)W8~d<&zJU43 ݥ=^X}E ij?O_K#sլ ڜZ "q4bR2Vs.:'rTx6sb{A#F`i|4QicJgl4sLSQ(eU%&iP׌VXTTYfKQ&9 J@ j~?=EIU - @X0US4tDGݻjr\Um~㐢+)Y !q A q|~qA L۰-;6")Crssu^~(DV$g꺬__wN;c/c*N\EpVօ2M` -{~Fʱɿ *IRet2ּ%%{0#]JaӏvX;.Q ؎j*N 1/fk`mz+者 ß4$ ۰ )éOW7-l/MąQ*) 1թ-:׆*Ĉ@ׇy?2Rt2e6Q7 Ue$_WF<>I{TMm;6}Xr_;o5mbbcC]LT@UА4<>d1v!Ւ34L,p>EV@4ryxI6KKYJ&%fїkI U9XTXiO@z)'OtɫN (v}a6$lֆuNLYrIeAt>$X0lbd_|_V{xQh[A_6 ]AgH1~PȬ띱CGK*d$*oAAIIKa<)G]9X3muhÀgP=%3d"[!-`kxgSl9;>D\1+c?w)'E*EOF?yϴh6g-\'/\YYC}kQiq: |'?Dtv3̕ltT lNg 1$l?' 'b0QFvTL Mb7'м֦XRB@]Ѓs17[zomOmRb(jA/rXWU޽9>>~pV~mn߾Mg>[_+)?'Ν;o7M^yV8uj+5sBb ܹrdaXpi>/5/ݻw/rGGGE6e\|=}{9m{q/\t isk}VvAJ|;vp/uՊw\.X?O-V8Xx=_?!~,S4. S 1S%vw#SLiϜg85vI6yyph:}r,[M2lnXXpFAFF[AgKcn$q_ᣯX#[[@,rQ[Gt8rjYܹ0  {bg|65`z ˿a,,KMiB*pܾufBn2MvL4tN3]pMaZcL2  \;͢;1IRF1[0O-*Oڢy\_R\ХCCd\BxQ#]k^ZGQPȤbFDB#> 9("CV_Q5Sfj>@]*֋Od ?|J7$_ڬޞpw& w)۫Ӌg뛚>vtw2q|= T)O_x<llMKLX^[L b,༧PMj:varnӟ_/bzzgJ>؛_k|6jM-Z/12*hkB }n;g`D*_1/F]"{ bFa;j1F FLp:JzB+ZaG,:5Li [caOZ"TZZ쏊``3U&ap#88F:+g1ik7TsG!D&%2&Pfbqfs|Dv49|CqCH8:F1h{4X(|c%¡F0ݣLNLG4ֶGd, \ދ*rv'fV,)Y* JY9v2#IGw45u;ٶs=2DH)`>~\ﯘ0Qrrii=V?c&x`M(c}f*g,w3ZI}܇qplEӖqԈ0˻AS-!Ltq!Ө/`sf9XocPQ*IXAy?,{ G+G!jcK13iNMXC#͌9Cħfl#ct/b:¹ Iq9o~L&^}U~H\tlV6ʙ3gr)fyVw[ NS<\r=7^{G4?ϖ"ٟ7f)gS{ .*2}_|3LSN:Es_HȸpB8N8h[+:͊fa\rxxfy윬M!x3*3D7to9ɩQ'- `Ykl6ݣϒ#$ab;& u@*(ﹼq>4[П6̮KX̹u2Ai.t2!=3w.⃲Y|=ܾީ3COۭlt]OHuդ̙6;ԓ woz2'f ^h֋68c;f`'iiqIPIJgWpk\qf ?r%#lWȹwI~`=E!0!&m~TbdYѶ+ w&Aq)R~=Ź%Q_VM:[XFRD0;B,{[r~jR{,Ƀ7a)Μ[yM=%{̧[tMs;ayջsN}|SמvI?NjY\>t > {+wLN\эj>ٝ\b`vzkY/׿UOgkmV@TDXEب19}{zaȷqQ]gϙZ8suͭb+ZW|X1K2x26*k tjKU9VL6LLw=q B;I. v&m s,CJ`W<F("Cyғ{1xtacgYȱ^j]/ƴ~%a7vPUg5S)ǾP˴/PN a1£QzNh*T9 QvXD&* 2׌)GHejz!3& `ȖH6@~=Ԯbk@ -p^'zM"MpoHal IכNzN:dMnM"[ BTcl+vV3;Nf}$wӵE$=(&3!嬴l%L%ĀjvW"_TMf7Դ޻Oڹx˪[r@u]Q׍U 9:>ri}\84P;؏&I$'͔lFUլ7kn a: u qw}]S YE+<L'I]} Y%Yl` )gD. U~p4w$ЄVH3qLXQѠ(=]Vz&x_}mc!c>ǁ$jҔtmjW88$]̮Mб͡H3^çǹmL]UtuVL hċ-n!vDL<(x{y\S 1Rզ}-r|JmX+9zal0A$"{ 1fqr$'SZcLq491*P2K<{ j:$sWsYJJB0!]3޳@)ևPYO\CE\.aDZHUIlt)V";HΎP Қ }hIf1UUFKQ&/)br4F,$*/;*S>GT פ.|&dy{ʚg:Vc*u]k\Bιb[ȇ ~cdS)sI5n,~ d cwcLzD_sP (k#uL9 EhSJuh\8m̰Zӳm8u_Xo_۷o?iM^z2T|'8{(O͛}5ܹSO=U~穧-ygrUfY!o>|sݺurYsi9͆??mI-; /"O. Ļq9_Wҗ>>7x饗y7stt__|˗/SU_җW_}ռ)ܥHfy^<˓k:ifY h fmvaٔ"Vw'Um[[:0UH usVpTtDZٙ; sY 8=*VӁ"T].\}NsIvs}~YXyҒwwqPYv}cNsOQS&hR{ڟ~y&gO6޺ѭ;_gկ2;Ws>W7x?wyJcU#bdĩ ޱԣ,cQ: ܋ep08U;N{u$*m$9Ji㐗? 7rE0={U6X@ъwֈ3UZ=ΉpXhdFd2WaT%IWP q g13c&pF&NOsʞ:+@@ ^8Z+,*=S ɡ`~X5B9`2*:`9\Sނe9}q<8FY}/QY6oiyO 0 F'~PjE ̶PH'!5vC)mѮ)+TD%]N>"C1L 'r1N'{:}T1> 0& s(XE+a&3͙LE}u|lA>$<5)>Ff:9d I 2UHUf>3۠32XT뺙Q5df5MdMTXjFm9zpoޝ{d7r,BD*OL@*v&:,L2`شvX5Lfް:>V4;MB ^!G<qX?ЬP)%>aSj?@F#5#4ClӢ aiCF4Aт"_ϘNxgWUPTMevV h HPk ]uY|gYJ:15.;&[+#[@<+d3Q*g:ت)75\J [83q(\1i%aav&@xB;p^a!1*j:PM@M&q`_4ZTSL<9gޜ$$}"I#mhnr4 1^шJ+ wpNK+,%X$9%TnAq.g1X-m B {VH#W7y)@.R,2MA7(Aͬ.(1X8[qr4C=I%es'(?frg6tS*2T$LV2 ?ƀ '1:,H_F?~{͘Zf| S=!tѳ|  IL}"{:8b8>N+q2MUS]ÍJUvƇg)ڹ֘؇Μ9իWY,峮x׹swgkr2>|/̫rk>o<<||¢sϱWuͥKxPU7ƍ0s}{~ppAjo''{[5/Vxwx~ww9}4+‹/y7KAQ/oͿ)2YGW_}kQ Smds0٭S;K6c@B ϭ8Ru7n(>cl$P;9F>+6 ϟ-})t4g~G1HlǓw|\`g6B3#< M[yD+mx?̦d |Ysy:uesۚOv%B ja)dt>ؒ`Gwb)Y3ʬWϦǘ9@{E,,w t?8:N={SQϧ\8m@ Ͷ(MΙfp|?NGMC9ya={ly__?/뮣Qem.lk8 28Zb06 -eȑx3Ӿ#>a4LD$zPL'KX5JFqj #,G(̝c5 ;.rO;!Wq.-@,UFeX`W4$hkVH x1bm)T!D]3i&L;L;$յt{_t:|aܻdNKa.'v4荹?`v!_oZ1e;ڶ3̈́i"pNޏf2, v^%[~ t}K cd:iUlyGߵQ>*;"M˒ F{f ^dHv%.$濸1 Xʥl>R%%MGNx~pߑўɱIef0zTX ktO I(kP:7Ha$Gv垊z5ʌ EM͚G.ӥJIb'^%n)20p3h5;#2PkAĤR491WhlLhHqs#`U;JSƛӜ<6e[?k(~Zg}W)U!oD)=^g;񣀁 iYΏ1>4c>1/-?߸8*$iuc -vG=?o)_1:Qn:9 X)i7jދٽ ;%)q4*!#8cK6V%TmÇ;K}7a?F`ҹsr{,Ţɷnںk׮~dC]Giu-4vv4MSkжmaŐz۶u73XfM-ݻw{n)=٘qm\ls)+b67j>OI1 ~?y>e]Ҿ:Gmc{#ؙuDdBzdSg4Bn\g:1Tl̜$k R;mG5*}p1_$bBfgrJm*_4leLɲ)yGU9B軮@fd^R t}5=HVĮ : *Clx&V28+zbA7`d{Xu񕥝Qfwg8*C K*޶y%[Dl.{aq?)s̽cvjΌs:5:ٌ>"lpվ<\L؎eSF{Ia~OW8v"$2P=0evԃ[$9}֯q˯@D,4K#L@sPe!w{Lwp ;@FK߾;. Uz?E1n9'bȱF@+lQfŊNh&84$ƱmbwCv8#Žs,p&ᝊ㊯cLa#U,e "t;{%J2L Ğb{+M;$*hUH$:rQ-Qe_#b O -d=\ԅ}`L'tEA#+,Va|i0TXC'lTX^j'1Q:1 e=OՊn& =|ebu7Qݝ.ͣHÓ-cFY 7Aitc_2> ִ}9aZf( W,&:cQЗ猛h,g[6q~f18)e_4|*@: l6++IO$b 86izm2&ms>[2xi-a7M>; 4VȄlV)"HueP-q9Tn,SOCG8b,IY^ 3gRtܝh;?ԢӀs}CsU@l*z2ocZMJ [s.q!͕~~$c4kP 5HM-eBT~| L"h`G# }Bo7Ѩh0HS4CR K= UPNgLщ"PU$b v;9)<֘S*iIi!0L];jXjx*3Hyal}aocC4ͭpw<)gU>$0ەɪɁciM E#Ƙ%EZR!}g J*+&-%Kr6>I5) Zw1H$ ,ْ}zGviN # d9*iשvA}Jq o6kVA(I:,S1qSVF[Gңz 79͹Chht]WzkjA*?Z#-D{B3BElBЙ}u\WU 8a%f.Rc=S{@{E],Ht>"\({A1Gf/O?4_yg--Ȭ}se.. >O/^zT,qZ!7Wʋ/'>-YDg>?w8<<^!"|'?riկ{ ׾3<~}]$퐃r+xж-7ַի|ӟ _</"|~Xd&3<ç>)& ?q:_麎^{=<<6_Jp"70~; a!@l`XѰm qj:1< x!oޒ{]%w9fs=m?C9 wb{=o`c?{sNگ'㉿@fd R1B+)/\`:b_ }V"#2#Hwslj;|wK8\2jtti=EUOviW݆X ]/dgIb7ʨ8 H3CUp^C$J $"&KhVI^ Dϣx205{ˌLpNo}_ qUEU%9lgxKEUO'3|!<9J˰5E%&T v3۳"Z#դT?<;_QF Ӊ*.ӻeFmdgnyu*uxOy^{M4ɋY8D@F/o& & 4̼g"¾sz8#W7O f^dtw3lk7G/|ujhIBko̰!Fz:L%WA s8-wEw0(.xQΩ4. x[(wQnDX#1‰PP`Fdp}N8nh*+l Rer3=gڊ╧8{Ӵg._ʥ+5e/S!Y)MOղU$uNFXp9**=%dO!)@bs7H,ЯVPnDqΜz9$Ҧl,c ]gÓ'` 9XF?.nu Gm|&7i3c̉]idX`8g,"ʳH&d:SbJBL׊bJ34}vNwqxޘqiG8 nyXFf&b@(&s4UzPMlF]fK)w=}۲Zt`SM':8ӧq&Ŋrjݹu{6Z 1X Ѹ q*P{\3Lm2$bP.i=mrɚ!Bi Lf:|gz25YqU c]V&z<0~v.Ix#H-lކ}_@ 4\U1.ϛmY3.^D:!>Al:*o @UTK{|ՀROզSQ$?}M<$  Q:bEDri{iQvi2SOL۰k[-G- h;BO-윞adQ\,eU坥7Ę-w6 맧,O,PO)|nVt5hHm>)hPU֊NUt4caBcc(bb@ۊibNà{U΀{9i1 *QL'L|%zGaGMU[Aзd (+X0#ؤqrp.B#)\jvƞUqO!ղ|_K \[ueT\is6Ҷ4[zOd$bp?ٶv G`'ojwC&bFi*&FF Yid^T8%-,yNT1֐:A2쐊(umyk_|??k_\pa ><;~w~ǘUNb:5˿7۷}<\|\OD|2{͛7vG^kƽ{DիW?rttdNOp9vvv_2'7nl|\C/G1o4/}?&"I(.e'WyQ?85b6bo&#@ IDATB1nqϜ7#DA%Y&9-L g37Ow޵ ({KcO HUx gg`w u=x_oRdsUEcMu<$)S]5z5]fZ s/x^&o?B(=LsEل@ʢuP:9äVQ9|.oy_|#-f:4-o@`kD< ZgUT13FP.G.+^KuLI&@iPA@ 7zE1 &jŝި1f8::}>$UpuI6&Ȯ(=гx.zמ"8agosirɾ@tpbukkW*7yJgI&;S1UhFa^b xQ|Z lKwd{^.AL$·3MG ڹ*EvMҢ_ (6A 1OAbz2L]I껉;ؙFw VS@Gf4wİ  {ɔɄ-޻ԪGj;I#Vï*_4&- Q|g3f; &ɮZlpq1M3N]SW_j9V2wgo ˣ#v303S`]n𾦙1;`2X찛d$cb]Gw|6c6pxx4GTLzcߥwɶ@U)/uC0?{vlx=mߧ:q7i&N ؕh511e>g IRDTMlwo98|gbach{%>>f\ҮY--@JLh#];uN-㍴ OPoR?bO!Wɖ>_yob69oz3 8o!b}㘘?SqQ43^'v8F:%nbV.is8{GM:BSe<γUuxe:5-z4 }s}>|XDDUL(E旡}܃ F-^D.6Kg{u/T"mvx(Zrv6=|@ۮfLf3GC"R`~呾&WKۍiq~4C 1-@. JznlS ͫqIyCy7E"lD#TQiԴ x6uNe["c!̯X7/Ӿf℻}ƚ}Eݰwv=$ST5*L| 5ƠN=#xL DZZ_PRM{[Å ƜW]Lq$ղr!T;}T/ƼnVS9T"Lw6U"mGf3@02<]k/0umTZ og{WE Z<fx|$LF5 SiU1LLgL&+a}X/Y-}|,bZm߬V{1еc5>Iz.s՚@[l*,2Ԅ Wl#'$gQSש|L8'FYW$+bHH*#V{&| DĨOT|aQaoR0Ƙ5Ie!$Lqnް #6z{ |]Q5Y|6e>l8:<$vHDOt}odrLu+!BZȘDж6i˄ѽdg#3Ƽi)ڕ85'6 g_ pd )baÃ1eXIϕ/Mn\f4$i7 ?2XyQ^ E@"qߧhcHZِӲ}'cXHDq{yDغ׉H5jWw!&K^s ,9Ҵ;-4R\06R7H_m9f2`s9}'3P?ej0w4@iQ#L AQ-Uc<6UvUy7&^Gq n2}.OFևݲ>\n֞? ؟n/bh=Ls}n޸=]ƭ[XVĨTU͵?l:}l޽{/V5`o6_a:muDkW^y~[BWի'_yw )!ߩ*z-؁8Sڵkwj޽{|[ܹs=sP%ydw~6:>H #%GN㚪ɽL&fv|>/Lfq|y\s1ϙL˜of О4>O ӮuEQDzO~'ۡ~O:֛@G[*\g^'I1'fw}Bl%5}oΞjHgO¶=LJwY> =}٩*!`|竤; 1=S@$v)J 6g muNb 5]#2X.E4(Lm@>.g@C0n瓡RfP@9~TYŢSn] \yhL44P ؇dFܠYSaQ˺g503=3l?` @i*q1ȼA}]XK% *Ze+ Dq$Fε1}'BGxp8E#i}/lC E2Ƈ&[cvxGǴo㢳=VuTFL/brz9=;Fmm[>o;2s'o?5U~bu~qg/!'BVl۱__QiW2Du. ?}Hr0k>~ed#:Y%nI4) 6P@rUeٔ`ͫ4 ٌ"#WUU/c`?g^u\͜[.[@X99}S%!td"w fS^ɉ2Lg +*+k&EuudXB*@jfkÃ]\ےL۵~PWK^F6dҍ.שUSQec4sR1FE|^UNcYdT'"更Bh;>P\oM{Tιvh&S*_n6wҖ }S֒#K~8ίP&IzH2+Cj<{oc~Bױ~Ovuj>y֧/xq1դaͻ4;Sdϣ =b}v{hˆPyגt߬!m?y46+jZ9(1szXQ6D ?`=nq;׾52eTvPZMSo08Ԓ BF1.v*^ALqm9sR'2Ux(~%RV5ei&eGRW' b5iث+zb1Gjw=MOLjoN?)~oN՚?O3p{ܹ}7M.kf 55?aG %LL Z^mXa%J%L:.tź=q&?:`Ure "]{F`Ed $|JϢ$q(\x!?:؏FÓ=o->&`9gÞ6al&ӸެMW({/wHʔ BwO9viz%X'm689g B:"$C)]4XdN3'册]y_Q&!X,tlZ'y?`.كI9>,2X ȃa:u)# eY#[WJ!&-t]Y*L;`xhD23RȲd%<.vSV dvͪIz>g1Yqb*+])Fj"f_Kzh|eƷ@m '9Cߙ睥JŅTFM>X65BSĢtVUe4p~o@ h ck;t-bnRy TbP LPUԓƎڎZR(zҀ>=ܬ)eR~J>}#\Oz"T< ]d=kKۘR m-1mOkI>hltVK9%TSU (HF`;R<R, U>HBbL|2 9) PDQ챾PHHJ)1u2 Nf W KhrlӜj6._̃;[ 3rf1֖ q6ӼAP HT5euӘWq'3yoH}ZފZ^]J-rq,=zRa&Gfva2]UK,u{||+רs`gk@y/r1^N;_A0oBʺ ]pq]W"|婴F5g u"m @L d`}]f'<ٔ<-j6jM*om [Z n +Mct{jnx\bIg‚+\hCW"v^V.@@,($Y$X/>L9DPL]E嫔=­!RUftC]Oeq7"ͨ-1+]{)%7{MZ!Rf\|9Gy$sex}`WpxFnjX+lg?)KƯ!V r?1;SdIMMw_{ᄐf{Z=7wOźWIJ5,5\@mF Q#1 Va؞yE^T<;oyG?K6שI #4|`JdO9P0!y y;F6Q8*a5h`z%. lhV#((k@HO.EYk01Py5F$([UM̀pjw9;gmźŅȤJLka5)~٧5l W ֏RՎO޸G78=PX0$:4ֱs`ؠrHdW@D6xØmA IDATX(+"AN5JVU5`~Ϡv|?{~T$9_Ȝyncy g= >$aRO惄LP$ ]!eE"Zwyqulg=t)~^^-q Mdf@f4ԓIa-gm3M. &m}O'4h zj[wmX׏^fw rw(ٮV?zL3gOY/6]QpjDHZC1e{twq|<^P{)Q'هY&($J|JTF+XdUQ,Ŵ){еq|M!ZIakѲE92S~q!$vIx9rt N-zѝKQTE;{%gT8֔N^].,Hb )"5U x }>ȁ9ꓞ=bҒHF&7E铆~R\J3tc4tolp#KV}.j4R׉d$Eh{;΍RR! 5 0ZEks$hUӸJL_*IdDb%QXf..e@0!ϫi:7L܇%S$X',_%+hp{1pLC9T*xV8=uZaՙx9VtHRP j(R] =A٥%1&̏/_ۓ9dkW{ Vajf]G+ّq?>XR%_c{ࠫ˓L{R}ưHPT|h=iv_!+[Kl}c'& κݿȰHA&o>{vwwNssE^fXpzzJz̼cƬ n[WmڶeQ`uTzwε^1/~t(Œ|BZsٍk?zv=Mhb:\orCwFk6m'C޺MiOϓ}vFU7\{u^|L;gvtHtWY{{{3mm|g^y$e"1 U"N%¢y"S` Souw}'/-7Θi!ڶr RXtۏtqI]P{B#(+ tX)x5I)<1l_iTYiXhV#ƺ7TL11jD{XyMXU5錣k|C錈zG?{̋8V5لq}pLq{Tª>߼ߺsOiB U3<X 6#ґv:l)Vu$7䂫 1Ks+T*85&!Iχt^MCRO!Hs}/0/:Jgd'cW. sbNLNF~2d$f?@pMk˄a}NWy\c`8 ٌz2LLuSjXSL2 1cZ%}7T4qQom~[bly~nfyyff;{s㑴DMݰggt` YZ5L[ZK^=2-09u 0Y~ $0tbG߮\!1Z?W젏WO_7r s5D؍:^P= Z#KxSdzN8 QHYV}gǎоqoKLBl5a{u RRaׅ#^9wʁILնueـs *^j/"nx%wJ?ˊ,53ZO4a;Jɑ[%D%-?2ZX=łϟ$[fV[E_NGU^;oG3i>d(m9=%7o;t] h5XMAy)vw>DTXMLjyc$?175͚vb],՛$Hw΍Ҽu LY0Ωp:5%>š7mTbo샲tmV&%i >Ոjf@e2Bw*J^1ώ!Iz8x .5Y*4Tu] ZFf=ᇾ%} RԨl\~򌝣\{l-JM|Sw6{-AY]r{hw7-X臭P\߽ ?ۯuۺ冋Ǹلk&1FN? vekV;G~_ɡhWmۉ/Ȟxpҫe{];}'W Aъ dk3q,Up OGal\Ee_$e*$%bǩbsF>cZtF'<Ŵ'b]4*OB`>81s9)}be"tjzZ=pTyb%Sp6 FjLw?:GTGHHEMOvQj>Tأy@(%Kfcw>)H!D 5!x5\ x>o¯I/R6 |}|UzI<;2c~6ʔ 2^ )q@>lL %6b6 W3sq@nɀP1z`8OL'[ԙSX.,.t][Қa ..Nfn1,@*p ~Xt?)q(|$O)&rθ]&g=}T $A䚗ad|7E-sAYz6S#jqbOc|֜68v < 6dLc!/m7nsBW.n0C0)'9gKRI[ iotN,@ bsLpw%< + *dHM:'y!E~regkyJY01wlk5 XJ%C,7gMښ!/D4A FsJ\RbnB,M+&bQFMMp&=Te''$/x\LX5CjMj{ $وA>=1`IR[àdܕkΛ %l\Zr%X2.&-&-(VPfG]CܲS.[ObY!]fG#拰M!kuU{3vC^Ƭv}ip#gK(:8GŘqN9 qҞ#D\7)A帎zh9.; /bda]Z.qQ۔y='G qS|M/ (e e.)CJUUTutZxE@.V'BBZcM<i ݮW J}b~*W_L~a008u"Svx-|| )2l:& )_e,]'o{toump,YV~M0L{^}oIʌu$\U`_uB~b#Kթ`8g28#vn&/}VU҇REkgt:ɤAwقjCTI] h:}b!ۆ߲ j1ݥu/a1i'YufMHIh1c.;y)bf}W\1F6 whO/nA@{"lZZOL\nIe:/.8xhbI\gS?y ]qLޙxn:av&}B\٥U⺥?_2G=:ӘrUoZٙ}E{~IIB~i^מo-?G?)?eLD~Ls"\h$)CZLCr?考7}W}v$M2'UiHlrvJ# ީ46Il7$cdG|rS%#\e~RkdB\D֯V$41Gp-~.ov{{u{ez;N ZWC؈fsZ#@EMUys4W\.<\mG8\ExLRw''`ܕ$0SoO8vkdNT**@=ll(&MQ ik"h[cĺ`xz@I:V f~A Jݤ}qg-Eq üdPL뼦ž7{ +-^_[m[0\uA$nb!T+ZH< RE:WI;ɶ0in3q oy3|31<,Y }0A %UB78P1a/0e*Eg tMĕ1 6x4-C9՘QA|ZVԆJU=%fc3F`X-rU3I z~ukn>WwSQB3W#_KFJ8=VeȎK(P>.vqI` ? QY cPէp+'T!u3(fNϗ d{S ۰l:dͭ7ǏsyyH~"~Y-<{,Id|J37 }ً} <^ݷdoo3>%i()Fـ|ѽ{ܾ}gώXW4PՔAtOpxp?{j:o6ϟ=t]ݿ8a\rY,.r\͒{Qxk׶[4]_@K#g%9hY咳3+j12}6YAT7e}_d9~cV̕+#16~=! (AjͣGܹ7p5Vbgap D\p[D$7f7@ 9gvf`Ӯ }_|L*R -( #a W=Պ5b(Uٙ{lz sh*G+p9aNvƻӐ욻ݐ5F\ b]\˫Pn&4)]ۦ}Jfe"s}uM1Ƕo;u'OX<9!vY`2pYqҵe k6;̍dӯ:6K4*s6xX>=e~-k]~6j #q7Fkt!,, $l.T%`rsݽ;??O;<`$\m $4RH S^G;7˭7n!Wl~Y`#-ѻ欘8ՈȮs4[U& SuJZ+0! Ɓ:1.e,JQl$p"=Q]Et>K$F xpc`ٮ9j#.L&>k?ed^3czm%=}wϽz¥lCu֝;B hXv|6ǹSG<<}ƎX#oԞ՞dBSIxk27xO5.HDf 0HЩbR VtuX` $DڪäY&`ϱC g0y̰F>Pi߳jP`EZ[mh`rt =65]ч.i!lٖ( I6#ZVo$O H+XOsfLgӂFumaOfvj'kYݒ nTۛ+ !\*AzܡaBS;c\r~~Fo A|E/i&4\&ݥj| gr =t/^0Q._}:h'. h@>T] 6 wӶ-₦k+r1[\MQ4ҶbLr.즮@LOm~j D*q n]$rAOD\"}G[U'E|suC!8gOec&hOh Hr~!VsD> {O IDAT`6)1ЅPT'D{$աI/Rȳ_mq"sk*ڧfhsP1ce1*m]kw`&V 3Ѝ#j ԠTU֐78ȩ˫QYg9,mR< YT#tK+ԗZL@Y :g*q`1lj_x1)Az+|xRVn$ <(`RLPa!m:1*gߎ& ˵ՙ ˠY, )-Sqj$L҄c$A>b+xy-|SӨ;aT$, T>4%%+c7ƖA R\sb6TlQaI:`Kq|$W#{_Y,lsl)HX.`5Z*9\71Ob^*8`P)(IDqL"*kDg(O0Fc1S/bLPZA$dr<]}j4^ٴ||xS|_|=>Og:cfw壟|N4\\{~NOOywyt;;<>y6sz->'stGq}vwwyw888ӧܼyzbggQM[n3f9<}~گ}8??㛿Mnܸ_>wnf2p~~Nq||۷n};o{b%u]_ӧx|>緾Ĩ#te8חJNc^svvbx 4Yu]Xl6L&յf_\e.% ?EBG0mVl(.|y78q^{ˋS҇hNlM @ P ˕ić qn>tt yF:*_#umr">9FӌeV,h2jc.%ŭbjSD0Xfm R%@oʼn/LF2?#wvX'&!$F$2(NWOqo 3׵_tjٔ3iVD$U@OaݛL㽧Ϩ&ur3zXP!]k|UyzF0q@\9{xlv}m/T׎hfS.?~rl. ^w_}>_?+f$K'7^`G (]3;n]7k v 2;y$McO})Ј0%U@%Ub *BJ͟!,YTq)/NDqsNGC z8KIYNP8ڿoݹ˻7nR {KX-if;_Ʌ(zCtTh&SY>{5e^ة*&; Q"]}h+: bx򪸨~5Fbc;{o@d'=7o6 oLsxQ7D絣0/W)(!lT E?3h"dS Ѥ/ w 't$%F~UfCQk u 01Kfd٫(׮wrdY^i.1uFJv| *wa&o6ԍ)G͚r5R:'DêrMύHjr!]HTBgAn )Ov`ދ/(Fz4=u,/8?=;U*օSg2vI$|NGFmg? .u]rm79V0TES؜u(h oهƲoj$zqb1ⵄMV8UPV^RC߃S4k0Ma1ӳX-}ХtP7iM]/Y//i۵I-jHyjᩂQAhDL);=akKc!d-/OKd9!-Xehi 0Y 2Z& kXr:1|$E A>\QDa|4Ew j$@t38"Ǧ0M$״gHmX:EJA3H*E$ݲmJy>crԇ1\pl@g,h,꥗H}{KEںKDdT7`K59-eǘ@4:0-=ꥫ/ E^ntڷlFcvvvf7͛7:KL&k<}Ju)x*.6L&|><|wy cggxw?3aoo=>ݻ<:',TymΩ*vwwqq1eww_scpmܼ͛y|;uϟ?|=%?$ <$3N^nsM{>ol6lzlfC*3f|>/g]/K 0o[~m>|WYL{ckb!I%,19΍d3Pkt$gftݚPl7ib۶l6N .kX@5B"dmPlkƅc!$ p]Uh(TUr#܆|DXƘ!9jBe#$n3ͦh2g;_l6k3 ? }J J!gnl[1tf :J=HOj KO2sߧcLw_,{s{ƞ_\>|cfGn 楘89cM2\2Qe3gC .>|H~R)P}6O}_p7kn۴TMC3SMj&)sTӆݛ&}9k_;xGӏY@4# Tq,6-?ٽ}d3MJ+˵4v='I ,wEc 6U/bF-9#67; H#iG*oR+( 3qcfJTuiȮJ#'pX1sGܸyOږeT?zB/3Up9C.6L j5`5łI]Lk2=$[QYh"{\Ecc6Ӯ͆6i`¥j}0m;QaFǽY`>Yv=9S84LF" DL,_V4k;fXf-XaXK'<8'4JjE*FzM>o6ڃ_vy4Be<|e[7EGߧ>2 7+xB^#t/8 ?ضCİ+*sef[ނY"0H~7=8cs}NKc(`/U/mخNhܲ}_zb\^,sr"W𴔯Nk6a~oĝ,\p|b;c ,X1RPKπ`K5܇&e9kzn׵b)$)Dt\X í}҂lSfBpKn/~tx`5ZLS7t4 TҔRq rZ2co۴)1}b0Z@{-Νc(Z}=XUCɺܹhYUDpg .QQ-<&1K:RKr1Ք d2RkL!j6O:i}o)#y`{ wtfi/xcZϒرVWX:b3c΅Hr?y 'p>ZVCv>GUl=Y _"vySUh\vp5@aވDž.Sg ia1tnEuc@Bf[TrzT(8&}q'e~r'3]И f^Y[n Rʛ西 1s Ӈ߹7 H1r%(ujy^c8lcG4ڈS D#=)iCT\LB"8Ve% j] 0R2 }68}oFrܸq#}6\~~RfndR>ߛTcaߺu;wpqqrMu78??g^ ADf\^^B޽{18gZcnܸA۶[o1i۶dKȵkר3gϞ>?oX,8:::d:_{?Ju[rQ[ƩdLA#*?Խi%u3 wG %Q(۲HӶ$?Ў#;O#LIJF7z]C׭;s2sa誺瞓'sk]rRz;nnKE7LuSg-O궹9Nk9jN]47=2 McZL^ 3$%gBZӝ7\V&Тm[):}$(jSA s41By4IFc,jAU\ ׌Zxl9vm7{_?`x|l^C>-?p9s ﻴ'G:97?@GdbuzO9?;`9 W2=@ ir?&Z^7ؾx42M9=oš|uAT<# 5`H7wp=?. 䉾VHReBpe@9`z-S QhSe Z8#TؕD&1@v' I3=JSJ (j^leIV(ݺ wʫ\$xǬ ~} f ?A;FBF(! Tkʤ0"uRrl5L#808]#-cS9. F(nVbqJ y s'*PXy حXi"ύ4hɥv*!Ώ.v) B[Pu[/5ƾwy:szo.I5*v)!JRǝ\mL.$d󧧉8_U蠮Zh Z)H["VìئA9q8RI p ]W>Ml$V?D_켩|1f4{Q|AL2"AHE;M"glzD׉ԈYt" ETiiv6˹T*K*X\uk$40"bZi,ċ6XjPӭ\mzl0ke@ӵK2A\#HAj2%=">X5wI3LF*(Ң(M,0U@ :HAh"~QFS ̂Kg:I3Yz;bM;C?M8,%]5oK2rs-bmK,̈ձtǪ :S_NR攔]躵ϻ&.xѱpԨd5)\d m2 ~S׭tSjXjmgܳ=oE1nЉAr \c j xRuQ|p#LKr[,%1"dX( ֦$e~_4_] V[r>CDf@*Rm[>|G}9Moӭ:>yhʊz!8Ҷ-?mV@֭[[ v;O=O>sDw}5cJܾu~~Çw@=zOKx ͆zͣG899ܿG}n>|0 ;9Ӿ}]>|8i9޽{+>>|=vˇ~{5Պ~'v_]˴ qTdT> Z4J<|8>>v`P'anݺ5[m } ůro|w}d? @7hz536k;- $CVF=:Ɲ^|s~ǟ|x!44.ɍɒ :ɉ$r1R;;\ B3G+hbÁ4&leUVYuur+^ FqU lD0Z-s!JV+4Ĩ5e !Ӫm\Jr,ĢNjRsDL%#ccNdL{z*wUP"%ft~{ y-^;S?f-8 ]j M{?c.H삣['Rzjxp͗M+' iOXQ?{#^zosۃa}hN:\U]\ڮ9wraBkwy{WhVW[Ġ;w_Wo߾gMOgV3J Qmni1d?_5'ȽW. gVe7n'IZ3-XkUFoe̓0B.%3+T7[v&E35 TM $2 vg"b'UՀsI4 M||-H\#cT8; Ķaܮi{Á~` աgn6H`m 4$-&~zEz Y.ÝfĎ<;TGUR@ζ[I=/IV6ZÊe ]E}99l-±F{@hTO|?V0Z?Ekf9Lۺ::Zu+juāSu ^~ Dg@=FQRf׻aϡHA )`wcu$I587 IDAT q&y tB8Zh6FPnK3e71h)2ݢmӰBɟPU֣҈Df1PUIC&eۜrze^p-nvg|Bӽڰ\jzC'K`}tvs@l[Ϝ6{`&'aUz=amK8\\>aP@$FgO8>9Ab`w}v+ػ}`s"cQ 4MKZI(.cr& A2MhP 4vm<*aשr^3MV (6jj%9AL:ñD^%ET3em&+eT9ckulbNϊ 9C__kvcqA*R7Z2LiCܺ #;bS *Um%:`Q*qלRL).6OOBp6#cJB!Si- (#NQqPuP@(e0|* umT pq65GۖGRI#5:]KV6FyMka"t@V#6`Ս%:{Iךf[?HulXAhNT'Q 7n܏iOEarn7c r6zGMQ<SSՉrХdƾ'4,:o2F?k_2m^ox:'42p"&!x ͗ۧ8-+Y5!lY'N*VI$g+ *9zd#hԂ ^)qPeEzޑrZ0s0dxA:}(<: d A]à|qq$~y|)9\\_#9^/;1ɹр8U:_ c?On74OY瞗/٘.n^edbu{Y` ʷDy!V?p0YV)(755] Avc{}ALiĊv>fސT [ҋt&9M~ggzKJĦY.  +AWV mr/dHMn@m[ 9g~@4-]4,qBh`ZTr0j-D2j&"SQKluZP (ϭZ(OҠ'cdR?bb]ӭ,4,P_R&͖v1YB솆Eu4Y;iLsZ0&4MӰZ:3D#]aOX~d#ðwT>)44hpU*^'hb 7.ցsYdD Շ#`ś%d;2Dp\+9سyZl7&4وkxVg$9˖LL`ciL~\Y1x;/8gZaMKVo-N'y﷎Cz݉YQ^v(T.pb\@akxgה:7zi&Vw| z5?GmݤnGsWpO_koSS|=f^}) pqƖ"ra#A]r!nG%)ĪY-3ayX'\s .p}}͍Œ>Npp}}̀Q5l,P7 } 7u);[Ssn Tk/vgƨg}9OYVW8\Y01///1nk7Mz`9??'zf^O&BI"/H@C %d;JZu\%GtΒtu<^A?;Rga#iR8=(MQCO\UO_nK%Ki;O);HqMoW 8~T&"Vd2 1vQ:ofg\(<1j?ZԒ *Bz-5P<~5r--5vϳ6EY4v1Q&˞~uAzjp;A |jEzv^}y׌mOֵԎ qTؿ:*1÷>op̿?x]y`3MoUG[lQ@B\QLZ%pE9+Q LR:1tAIl$r(47f5т%4 }.$F,#dVJZ+ډs>pPq3rzc'gOMHnZړ#rzayN\sT֬ZA!Yi{4a66]/s2z/l^*E(<zAإOOUy_#jr-*Qng9(Сti*# ZL:8Fl쓚dMQ \?rIplJv}u'' l:T_gPnz ~f߿}+~9 ǡ*TGT pEgk%S 7?pų6T [ϟYzn5"Sey]pujmN*$V\8쯯G+Z.b ߟ6.j"[}&|dx=K8ӳIcvIlK{*ɉ_^ee7v9:RqAb_5x,I0yPR&VB"5ϣʡw3W;۵ծ^bN7"n̩/+ݔyerEDN 2[FUR$;,ڦk[O`f5Ql+ g{N7Tg\jTQL4рZK5M=65h2 'EhE~kQ$;[M 39lh :ڬX7s-~?NxZElg$H7hAKR7cJ\^ts)szjͲp9rCL H?3{j#R=n$WHW3>b4@U%i̒2e1nsaq)+\,dOH. 17кV)Soa< Hynrq-EaF_U^*qãFazb峁VR05ccD̘31F`W2@*V(sr,C)~R2%kjUNG | /ݞ;`ԋ4S&O}]ךIJRNo-V,ʾPO'50oY)Ղ.//s|?6PV^YS_[JaleDs8& 襔׻a(??nO+YU%?k'3~%<ٞe0__4PPnSfSBJq,<|D׵x1'bv@Rq[ecUv: tv,Ygǻ 3fW7_G1p>c!i"%u}R}Ć3CN!gηZ$e9@oT2iLlvkXhޯ(R z80gF%a%,)@9i;vqQ ,ֽ{sI\RBd'9+hU |jOxy>ԁ Ja#p (Z?X1_U^!b6wK 1fAtT^8jV-}p[ +o $rU<`D:Q 4Ťhp =U-01|%-Uӥ/ZxfCsՋ/Vl^Iw=Gx 6n[~RnZ6ml\\^ cv۶#G|wZ>M&Or"=1ǥcZnpˢUe]l 06m!ح:3ӷ"DQdVmU8v 1!1ޡG*n~ 02a0R1S2L(+*B q6nnf*Q&{.4cHPXym[͆[Mz4 ްrLkj 379YVJ?0 =i,V34mG6hPz!.V,}Ƥ̞4Պ8eչA)41Bc~6Y6# @gvMqPW*lx{\e^4dqޫ볪S8*e82gW4,=nn*D/nEJxlc041u iZڂ)8c5Clt0s M`@!5t;m/rPXΈm-"DLFRM7/H(nBkh/~{%fUN)c't< 6cߠs)od^׭p29< ;9F'׻-H}.J2$ETpǃHWث>𴫪UV)jBBiZK&O<jb:$[hmGhږi @GT 1ít\Ӫ$M?z%jۜѫWdZZ2M`*iA sFBsSLuxkJyz.li~jԀEn1gM%ˀ*R!EhB c̏ʀZaK?1Έ"dUc;[1y*!0rUxʠpi+iC 1֒)&/ߞ =x CecU_ W#@+ͤI)#M4>k5H"jbq){_M$6+ҐɩLR:k/)e)MѮک^y~I:ά@IVљ'TleęGBhQh & #iZ:GTtgR17^/ZsNE \&y!޽[G<|xn pm&pL"p-p䲐Zx<**Վ6O79;Yt1w)DRE`-ʕdPep []Yau - fl5"D%0&+bs h>{>qUl:"+Q"TIZ-8%2֕J"Y )Hh聏ǑNxu 0 !%;nԳGǜpuAwtAS za}[ ?h1Y@_(EA]PZ K"+J Yh%^3lj>KRe F9RpߋFyI;VT'_e:_j [') /LE88H]Y8 1)nk "1Ӛ黾Mp9#tue+nyD ]r~~Г1lYm RezA*yO{bWI3: p¢4Zɮ4;T3}:c̤R piG#l 6mKeN0)P W2it1ij)=ŇG k6-([ҕenjƈȹ*XʤGZ r*w-BؾESA) "~"Mugsֈ8\~ZiTw(nܯ%Ku ff9P`t]%! JFڤi33'V"bz6Ӕ\$9[D*L#sq&d-3c]bGXV >jrJlK=_R%oͥ9AN&s":ynRKAie)Ć>!g9(A%$vs4s+_Ԣgti6w(jS OcCL.?=0D _1]z+oOW f ]QY1~ߋ\:>Pc%™Z:nFVI:)xa`ϘT\jn1?J IDATBb U<돺V9bk=)2cQKn\r\(fΔHP@觃huϟ/5u77W^}߳9^^KTLWվ-\ZY\㩹Y]w~Eƾ0mwe:uzP(^>~HK{^~|Oae)!%>klZef/z߅{Dpt VKl\~GH[OWd2[EA#y$њ& aiP\wW-J1Oī& PI)|A&S8?{@д+m QYQ<ñ8^Qhl2umLf++S{j~.jBiC:?Wͳ|jMȧJsS8O3A9Y.+g6azgWк6}'t-lw1]`c[1 6g~:&f2m!;Ϳ (ٟCN&7.Vz8T#O(_=+DhBnl+J&ۣbH haBWԭXa|I4 f(p3@B9K,AրeGw%p+{xO5VA9F٢Qz)oՂm҅ aw~0=I6V34%B &-0cW־D|.O.XjD-@ Kł 'mNM=Y{F4;S S[21"L:Z*.S\`TcSfQf톭,p}7鍿cә9ozPƾk$Lr +V)f[@h'}ߍn^O`58)3m͆C4eI m@Kb8#OgC iY@cv0cWǦ!"Txp$"OEs~<#Z2{yLv{vW6FZx➑vˣ#.W,Ch\I^T]%87ZJ)VI$sb,RРhfZ{9P ݭ?;("U?tV;TU&"ɬeL7<{Pf` YpCdSiT7lp'Ծ4>ԅbXܷbaKa-v:Z8*b,hxv]jt!󄙍:/Y7_XSMsɜ5%gXJ6 lc64ŘFk+:Es?;XEUn>}SU %^L,6^醒"M4& rВ`lc SS3麩{=Y:FUh2k-%H ỳ{b!,$ڐAڞ>`?yiˠ|/Ծa1ZBfl>w"#k>y6oӶ? "N^pfUy,+k" LC3Z6q\ ! /lWwh/a[xz-ZE|JUg!rup]Gu^8|AA\^n8\_&ѳPSpFG?_[@!KiS2F{N.\Yؔ3қ41k>U)0T]jWAﳾ9 &q b*RޥK[ΝO >`B!,u U*FYw̘cJI\7^7UIN٫6K.2'/ *f0Wƶsq*mb 1z1wʐEg,}++k l(KcRVьҪU7Z9Ea-jQO3teӜL;0R'QuZD|վ S.1# 74SbΥhen8Mٰ8&n?vp]+c eJO ,b_K-f,3 #bcU|spxDlF8 SiX~Yi&ӿ؊=̻V\PUQp C.:nAjQ[40&4`7;ГƛWDd("朦zFŤjM}>qS7lzyQL ڨ. #p[ a{#UAw]nv&`e:^{E-=O9/h`1Y498yÍ̝P=Ƭu-mrg7-͚FJ*Vmhk5 MDy[eR2 (Mz6sΌPsl23|l@N7YkQ /@mVcj*=֠hvJ^Pl\ _09 vg= ۴|?/`.Û;Ӂt>~m>Mk!7wpUR}xϡ?.7x>חfEAd)V31ZվݖZXN&2̳YҴ+BvO*"ic(Z\QlQR& Ֆ0г'LlT_u^顧11)1 hU g%j1JLiv<|!YZ uXԲ>f{jbYM' pcVP@t{B9KV {{"OR?GqqAB%IN_r}w]^2#O)ۗ_0[\}'Sqy | OKſ'țcIs'UM@gK+2H $A'gW|#@-_K^Pg[2;\N7pqX(] @+'jRFU\+h|tX %$>'p\Q*3r"‘Dk_pB`jQױ iv(X^E m-xpO>yD7lC :\J!V6 D8pt}0m9 ۜyawM؞p|ҿdϮB$PVA-$v֘ϱVvq VFjKH:(dP5[ OZ1Qq5Ls S:?q U׬كFyeV{ \2ɳT-4k$Ii  }vED58RߓGvϪ[qtthi5EpxIq5MDcChl7r5@0aZ3"dTR T4zY~_۵4]H^st| ߗ>?py~9`IUJtڦ5&)ׁZ5~n5c>:3j]DJ92̗ƀH MxH;GbbsDV{h&D&i:q Tr $x/LPtt!w]RW`y^+t:iTU 6KVXLc-L])9SH94!>ãXFI&]^P$")uuۆWv efдMZ2E!4$~;Ě@[*@v8雵m1Ď6Ɣ}&n4AT *q[<-Hs!L͹[ꐘA1#rW&[UҺ: J) E8 -cQ~V% /hؑ!?o bPA LCjiq0O)i&kȉ!'Ls5s29˜lӫY2@ ^Fj?{`7}e 0G=<+_#PKږvܵ;y ڞ 2"OWSĻ>S FښJ}"YWa5kW0kZM%u8899z-`f. V%av vWJ+VZ b̒E9Q[-b㝎$:U3`ŊqυyU+h!Dbp/_JܗduOar:}kuvz@ӶmlV1ѭ#N(:":@ Ď3y]шբҋ50+DVV̍ZPϟ@K圅T^*Wprh_p~}>~|*eapVjf?m- 6U%뺎fsMQ*KcPxz~>{{2esJ6*/+6ڲ71Ό2ߓ"@pБ~tг]o˯|))yp-@cuT M(2}fK6uO,kYugd': [#ڶ#igJhbr" MІjCO mQUfәn>B H2 0и2Cʌ )1( bS@eVbJ0$ K.\qzkje4璧 //Ӓ),B5'hy׭-uvhA)&"Z[d'_~3""ƿ3\Vm$PjnxWy#[ex ڲZl$Rb2]Nw%gÁ}0BFk-l'x!ƑW@;Pn~ͭ#cІȱD:2F{,Ti)*th$f6 +U.J +Z  _' nc&6d7{%I~KYҷl &Q$hZhzQ/z҃^$QF43lUzp̬nJ{Ru*3##* >F̉+1?ɓ@LB&'<ڮ&Ff*8$Jq15Y,"hr$PAz1F֍ =+47*oA(ddL\99DU]GZӺt29ZuT`)4Z N'j|sn8ᴚkFrῴC:1oŖF[ Q[ޡ lDFh:ip9ϛ~l՘?FƑ8_Iy%ޯs̠X_+{ ^U5k=kb"ED41[ڮjs~c|*m)m5R2ivB&윍PeL ;^WnuI9l;bRg052%t3jr9ؾ~Fq$86T|cu]7'E`_9 "SUńlO4ǯp?6V.:l]dt5sA:7_۫w Z$_NXVcT/b_1ϳ7ܚj ZnK۟Kdkƃ@9aszn1iЄ `2<nB>8W/*11 Q0B"2Z1S5o _Y^( 5|&ӬqJb>0qqyfsJGyfӜsBIm^KE=%;WߛŇ]yه직DN#fKʘǏ;oo}ln[mpuQHÍ Hl\D 9W!oqi?J(1HzbW!" d7#OSN?z)?''7/?ޘ IDAT???HZsNӠ%Ei!B፶q|0eF>vÿ5GrzI(2WxZAP&5 hȠ ~1 P$LuT1_v]19}G1`8oZظn{m{Z5~ SmZڶ#3nnn9;;ooiI-l68ĔLfkp*%+ݴMwKlbTMZ:]fTO,*-}f;3Y9;wY///XSJ v 6Oy!X0ж_vulkYxU{im^ݶ[Wy ,2c!~0M|k_ͷ#N}1 hHZcOga? L Bü!t=mד^rߜpzvia,Yi8qkF1 DƕlbC )3 #%[fVeIEq8FYCӋŅ_"eU2-'a?#,D6'gt3OQ͓tDpBlhdRX]-Ҵ>~e$њH鑶)tCk9#9ߚ\*55=3=BmONJ 2<[mi %e6ᳶ  Vi;eo7tb%# $4 DkT՚ ;| e9^f+&Kul ؊YI %&9,%(D ›"tX)f7S*Qc2&J[ B,DzPk &3" (l p_ Q#tw;>Ox?Ql9zvNpwWhz2lU#HgSG "En޷@i?,& -0hA7% D-^SApz<B9q>ICU5G6@ 5VĔSi_A,JTK,{ZuV3{E$G 31c5.azLD(O~f2~yc>asV3j^.5^s1_cRq|yB_iW4ucgZ3>78< p=qW...f WfI)yvw̌T@V+H@J%PR{ :=fO$psNo]Q̾23:%x7/y\r:9$i`zz&-ۣZSƑ۶wza&ʔHsvۻ=ݘ=Wl؞]Zl $q$t@Ҳ9Mj cuM'/V JI?5 .P`*0HlCHK!t-rqJӵyZwU8,R"a"h Sa&ݞ0 a\gNa9;c{;91m mGh }K{~Jw&p}C>Xr$W_Ap~q_DҊQ%:%Tͦ(R8o#_ZFOS'AhNExo?OW<]/_J-XQ(' =*(g —چ35sJ4 4sv})P"[5\ Ś+_6%> XAMvR\?ڼjJQDy=N1R c5 'MycD=21OĴc%i_\rq~F׵Ra8Dv)5V٠*ܴ !'v7W<{loA1m{CkSS#9'ǒmD _$3=8 hє))aLzǑT*#.f'GYe ]1SӢ_+XT7:kb<4ֻo\x>QL!6 :kV13 4Kx|)`̞d& VR6brZ^Tc`nZKLΦhZN5#_WܤTҸZ,`1E&(\N A\:+NY5qW 2pl;MQgeMk tm6 MM̀{K.ow'<0N|}^N'>9^sq~ ng)J4Ή`'cܧ,L)y$iNT".I uZtњ^Ukغ ߽\͒Kf&SroXŹS:lll6G<7rzUשJzq^uw~rd?!EɁ%6:1Bg:8B B2DkIh.Ęfy%iV#f)1aq슻&N\<;Ab9L0ƽ'&ryB/5lJC["oTYs%UzO&I{3f)?t-e8ұot?+N}b 42%~Il]Kw~rCboqs?'4s.X|}98<)Rcbsrƒݦ~p}=4tkllG&O/3?PXZP/ݩH$ycFvs/BN&M_9Wrb> ׄEl Q H@8M'} @g {ɔ l蓲Cib~laJ9XYH:g Pnv})p+KFXoDBl|5y-9ljdcw8 2ӕ̀Ԧn\RZ DVQE:v3Uٞ≒*Rp4PِGA ߫N2ߋ.;e/)@vTzaT Jդ}cE덶_5rÁ;6 00 üƖF tݠI*$%!}1ܹ﫿[3/X9f]x/.L5D%rW<,V04.lc0O5A׍^v}GXTmƟϹf;{3Ε“Pske1϶SLq s\"m(̌uR^7/Vnս׺WWttl<^O:AR9JDݗԔU#-E%3W裏H ^==EU70~UHڞnE,M kv7_tęuLP;*q*$W.{YN+;s#(9pduѨWNJ (q! {v7vw~H6o<8I36g>z{o aMo4e{?a)MR /~{ N.NpC 6-k9<~ y4ymG1jjp[ɷ꟣35hDc &v' =-{5'w!ۇ_cTZk+s^2ZM1H$D+6>7^s4%#h mhIjx3T]6 b1o0L#a£6RlXF"($pp !EaB41J IDATre|IIBྲྀ>ȕ)LR8Zbru=ex3D\(D44Eɚcə]0)t ,yĈl@*35ݞ~J4Jjk&99ZWb}2&PgšZmj3˳IJO_VUI RIs,7Yy+{]'׾/)Tʴʤ15a@V1 jP|{L_X z}F3+JlC$a`wu4 ݲݞqTLUbs\'ZY)B|OudT*ji{S! Z&]s#)O.Al*.6eu=M96Uz0MۅTO 65='B*a$8yJՌj7OeUku:XMeAOSN3 Q Eר.=ƨs+\kf ?o]йQG~r@ x*ljpg+ȭXaf%nt_zss{r נ s32daڭ'δ\NuיPe-˱*#"I jN6T`׊l6@K9ԣsבTuYlAjުYJSxٌ?T1jFZ[,eAu2뜲gTsjUS~U591z{K϶Gki5 3P]79z/_jlŰژm]Y"%' Ž_!1W ˎWG*1M1N)qssÓ'O8==5iP^W /3ظL $?ap'p婳KPvkO/+8̑Ym^_s~9w~/ p7E2ڛ2cKlik%b p?nM:7 i"!BN#? @@üxxCnI m ȴ67Vw@ 1??5mx>s?|ZƎNW(>lDKDL*#L7Zh.Rx5mOpP8™.XQxLz10|tC oj5.(CpioBd# yV "܊ 4Eyh8Q9cz_ /fn}ߜ?۠7{i9hDآkp $]Gwld3I[h-'bCl^.FdgN2>UH|#q5tPAT_:_Le026" 4 aFDNuQ/Jдs+掺aJ>?BLGH!/zayU k殸,OK-&Beۢ.x2T R+ 4Qyaoz+ރhXôR049=GB$4V.kTVQHXv_?V?\1Vei$}2iNiw}}8ܐs1^뻯3kN>_"lJ1@"B*ثr"=%mNU8sF #VY?;"`ct!H>@sUfl+<1lYaJVr48a,Iк=V }Yz#ĸ4;5ͻg:uoxj:a1{Uur]xstq$qϓ|!yǟϟ\qgߥ ~ʗ ?WBN%FZ4JWGVd&gRA"O勨E)auS0f Y* XPU!5;V'U}nο1&4ۻWO$~9^l?{E"B#Z׿1 K 1̦i2RTc;z QgڜI1ߢ V )%p抇}r$, Z]@ 1)C бzӤ.p0f6b;w;'&QU6MkqXS" V?F?=OiY۸cuf&J@1xRLARaGv[nq9Þ\ d Sq?{ x?h#'aJsac{z|qqyٳn&88[UVdL Gy{7rzu 'l.NQ)M^sx|OT MǽKW?[vO>`{ 9[n>c9{ ^-b͇GW>yF9Zճ e&o_?~"H|;/ O~!B!Ps& lBBk iz/؞d*0R!oJao*N <#H<NG1: bnr;+Mk/,QAINRS8$³bz)@I`_ f;faG!S4IFp9Aq hl)֦PN'A4FkLǚÆ]A3uN0"7Ӏr ت?N]3㏐6^ts~vY(]0 ^-a=ȵfvb7 ?l(U$5cg"xygU5ژgtQ;Vxro]K1443p"_h!8[{gBM{C_B=6HXd,ʭ/X鬚KqKj]dr0nѢZ$O|QΎ8EM^č o&⋠(!jf8mKvl7Ħ1 IX^TmZv'.xP>0-YTjQ29H 0cJp4_K|xQK1#daM%sǐYmgWM)P42f Ә@ٞ =n$MU+ 4Q7 |9wb%7ř5B*P-дA?b]J֥l{bljs%Μ5clix5Hը+ MK-Q3PG!T{~}H%k2FdU{]jR&2 $XEjO˰Ϳ?&b{İh-%7˸>g w C2MӬm;p.wBD4Dy#FLf~Z !(I*x+<ך{75 ¥Z/Ŀ?aj'WE֥:¼O Dt({_r@s Ŀ<&[m:Ti"M7;Y!;Sxq-_Q p]>r#a<Б'7xxs2?fj#o4KY?z)eE5)y&,d1^]JqM r/39 7?Jߋ*UX?#_gL$B#lW͜nsOqq=K {ϡl{I }]&H2WWÁsNNϹkH~9i A,i)ܫQpsrf5uOTo,T&qalz5l6t2\R&[d9+K4M8ZcL-Plji4~.g$<_ Z1gNa'd)%\?g +UD)yDybv^]b񛛭59$@Xesi~ nwߠ=;p}G*صS؞|]_η`Q3sor["Ě-Z-k|t}=zw\|MWZK|P/N_}^t |pGW2&ɓ! B9D&`AW {SQ%HQ')=ÇwFyѸ@A `Jv  Vk,Aਗ਼5ܫYP66@hQzΕJV:p* wj j; \C +JLaHb@s"0R(!E{!r/k%DlU5k \Oq\\)6dž<&9FN\]_q&ގ{DŽ2I SFWh6Rh\H lG=>ȈCbtҌWT}^@ RC䚈8П@0`U b/s W DƊݠ?[v}Գ363$X*ѫ$\:i_Um?5*hsNN!j'~FPL}q!@uFt g&zUGq6hԊԄ~FkP3ܳÎ4Եr`Ā4v˽{{rvnGJ&[]{T^ܵ-m029/R0Ը:'\D$8Rt2W3x߲qBBt}*@ 愶|xg80{8)!~m%ySz#֖"4#6//V_#jTpت&_b 4]}K4l^PKNM\琑뜫8Rv*jdRV.{ѥ<6.`ל`AieYջ[u-:ԮY?*ŤHb3 fNj/MLd&q,Mz bGB1hf5ZlL1q;NV,0KP&t%K`˺%K٪eYD3P 8V3E?k&@)vR*Xqo4ҍ7Uٱ A%n+EAch#jF ˹.Z *;=2Ug 4l0U X?W]dy~-9)K6v [H[V\lBʼ7Ot[hOϨr:fq1:aB5 lYZO4= Ee}|/J We 6i1`9yi9'"+}p&ՔL^F@G*gRVlTY1o|3no8L>`Mb쐚iz弚7/kG:'OK +ĥDZ{0(hI;7ѵMkk JzĔ awiyt{.N+ZIٛnCi UIA PLsJBi27|AA֣ ]#2]v7|5(wokY=3!̚MͶD ie'G0/[,%{"U5fp3!bZ{ߛYCuލs;vĊw͂3噕_7XJ?oV {=s_{{Vm^cZnUEMZw7CaJqs Ĵf%zi$媦iitِcmQ;FMx(Dޕޫtj`T/8~ĝ{:wpt.Mml)ĐV):jiڲOev΁1=%-XE% TՊb Nˌ+ZW[~#4iڊJ@cy9e Gq Q!SgZqBWWs#81jc^]uiV"V+x,8Aoc VG~½Yn(*Lm6ճ?P'ZתY߽LqfOTuhML1)6Ǜ͚Y6'wz UͦKЏ{Xݽc?׵mKlȶ*6&{CxkQyh];` 9=UQMf8M;d,# 0woq=Bґ8qБn;=C^tRq [8*x[;ϱUBIZ#z'EYB"M+cJB ;#5^>лĐ5:hA/CpPz.F^6vyU_%\KXIQ@rvnhB DB=pq>'o lcc \^` KQϞ IDATqCHpu CL2G#(GM/9)&1{GxgL{er;%,C(De뜮{ռF拓,xFxy5YF9ߊ=%I稾 8賯RȪ(<0U %d\Xi|DI6Q+bLt]W\]$A+CnN^elWK3 FNJ>ay*IcqbIUFLФȒ Rڂ;&T[Bm<A)y#\LXյXLqFF81|m&Xa:24Zi}ek^b}"@e+i\<GLYLfkO8@G P. >e:@R2Se癌@  \5v3X{3id6YdCAFxm0L<3*䬟̈eF~X5ĮeoK%q򫚩]Xt?dgc797|Wm:M`i_r@,Tf |Qts:s27=r㞮`w/@,sYz8&[sucϐpDX@.UUn"RWYpyߞCE8<HQ'ux^Tq-B$>p…_đi]8lEuLValIc{-gG/8{3./ǟG}hrU{]P$;y }Slk Fvnxw#| y5[UEλU|E&;]!x͡ea?Dv<8ox1}tGsւzO8ѣ.?1gd7ev=2-Ĝ @ԤJٟ0JMKPf=ɮEdnK|cv]},/Gxo{DV#4͵gy`^n/iO`_z)qBmے\|yc¿}{/~\/8~V9/Pa|T^{;MUZ,|PFACNZiFbM۰jZ!dm✧/nm,vQ$LZTe?XgްZo3Hv+FmChByC?w^jBmkG$1ߛ-V]='% SE~TY.8+vgL~%۫-NuE4u 8I8Xr~ԇokspHKVf;7I ],n.s:ŒTqε({>EB4G'_9Xwoÿˋ?cwR zL~|ŕT^%8Tn(IHD袒h߼Ϸdlp/!lD5Np1`Ӱ5zǕfxG=QhEαs%L=%*ɴ8(qe5k/SFͽ[:P_djyL#9kStфŒ1E>0%&mLrM2ȫw;#Eg=//$'Mou~&dhL`V)ʵfGah׮1O%rnig{}kbH JNbzo+# 44Ƣ-R^7_wt%矔 Qv0qL]M*FUWw&%n$40g2G&iaDn[܄z<& &ѦՆIb)鮻n>5׊OBqxW}smR޲ 0/܍R͢K2r*c1:@ f"v@Fn6BUtLlxr7y ɒ% ˂!u8jS(睕MiAǪ+1@$F2+YWhI$-#Q7IF-52sPXġ:$3JN1Pf+ Н.K%8e?WUӴx (,뼍W2yTR]IjB4XXcYLIpMRnnŮT=$GʠLƠ$ʃb)7 %r{^N7GE^iS] ㋛X0h2!ZD7m]X~ȡ<\ '74n}u$ad8Ao1$e9MXW,k$vu8TJh*3;Qp6JorfQzAm`4r6n0D*~ܼ)߰oB]G nI"ˡvG&i0?H(KRLD8x!yў{o{Ts8f 9SIĮϩw0He@{;΁1O]M$K+& AM`"{ JCbdި8YN}h&dR(1MZMc,Mb6eҟ={\pwԉL:[)J)/%),L1"17Ɖm>Qe_wNyB臱+`sZ ^G+BUBl,k00q7zLuLC$ ή@ʴaD _0њh0gV胱%ZɀH)2jeMc~֘G%m咱‷kz߮%`B(@Anekj_*0F1MqԄ͘"cF\).]<'K#=o QM|mbMr  W q 00+'m ĐdݕE7ÄLKi^0vJW`\D37yZob\:~@b2iA0j4&@ ͆o9Ax%PXhBavi^q $3Yej>܌Tr{o?=*kI@eF~%{35])QhL!yGui/O8}p_XMʄL6XHB `c^8hyPq\Jd&!P\%m z;99u{\xF^~ءm/Fwp lcg$Q1mfz@0`<8Na 4^(>!V碍Z[Wi$n㹝 5G>#qiJ:O}bbLJgH48\DȮr#My$#]/Xe&pXKJ$Bԇ`;{8-BdFcc+W4gTJegpȗip[rkHqAP hLlb2(_,hڕU]o(XW^'pvn[BU)# z$%bm"4{Jˤ-LX]*\cW᙮_87r#Q0<&(z!ej"G~m yU_SmZ4@X,T!0ƈJ71C44mcWp/Cz]@:bFzybuBuS鎜Ƞo>r0@"-8.WmK#Zz]ɨHc:\R{UyABHC1$P8{B=zs2ūԷZ|C+Jœee|yLWErrI-c0Ѥ\rh`㟫UMH?t]OcҬg Tm·;h۝xs4wsr t$:UK;i-:RbbduS%y=Il,S@Ls6?eNM6ƼBCN#@ VU|t` =y̞wakgNGqM')9/7?DZoErs[sZye$Nm}h]":+iPG9.;g+;/Ƒ߭*n$%!V]4%j]0r\!)H~v{9ݡ36P],hRۣl]VUU̒tFgb&ITBZf3uENPHyntU1bVdtб=wog|r~ӆ]>|ʓ(1G;톋>fYlur7x?9|֤T-aݏ}:>ѽ8͆lu_W<¡ "491Us( NadG<0Feg=;6\lY2[x.}pWs\+>7'seO4tyWSr闫/}ܼ_q'@_qsOu~3TŁwnq  A%{4S:9B6٥ˊv0ô_&GJ,Nx; ܹ[ /xqv0X *X`J%1kFDHt=CPUR2K]7,ڥ ul:%M15UP9 = Tf) uu] jW~8Mp3kE7Of1Q9ڦ)G cd۱ڒƑHC{D`\qrrba9'w9FJC7cxL2W]Q~n4e8b 7̼YuZ6z+@lVKO1rܑ#F^- k9%X~p#~'U-& ;{S3LO_yе;:!:j 8qtQv_ny'~5V9yxGe _.WwaRc6 /$cK$Mj]J$$+9WI䐄α³$<799cTI#Bm@1NX:Ol?oQ{֐9fk B0ؚDQ :pkIq]Jxq<'"%σĒ}GN J%A}ȓ1yQG 63k+:at*). vIiD1ށ8e͂J0‰gN,ih-aYdP;Y]=FB3RΜ dϫi,S/Cc3l 7K*9Y1rޙBdKLoktp\IFφGYh:%Wh./aj)Id{U88ޣ];Ix7++yԮ*XbLįY,,V=>%ZBb](Y(p{Ž`X8cTYL)~I "pd8+ɕ1% ul3N ^)kd}5,*mhԑD*eS L*9c%Ѽk^EU)sobWE?ߌ IDATd'i?WͰ`.C6D֫7vf1Le0  53΁d6n1jɧ(]]Ohʻד_^*kfYijY1Dp3 tR Z G.T&a'dVyvs -M 9 R$kl4*Fd{z2|i}(Xi1],1sxѕ=qb|b55y= jDbHDJ6:3FftġgS7+_*<ɟ 4=g)I֬uxs)Bmr[L`G$ލqy7t]QYC;&]Jty? ݵP<>8D]qҏ$tL l%9Ię=T!h#Z'P:\g;9_ksj߱^p[ܩ=]ۑ='heIr~'pVG'S޹w*s:p/!q>Dλ]bUTQW1zRmnO~JSX:Pl[Su(d9+R4Z7!L-dlk6g&7햶mY.EZڶNǫ@_pytʿDn6TjdY6ԋʫT"}?0Z ^PbnWn՟.hr1@UOdOoo~U򵯭XoN_݀Tk9)=Ue'C̶t~0 @],K]PQ7 ۽J9Ը'l6K6 ˥]4u~ij (rTU7Hw˪?|U)W1&?1- N6'#*8:ɓ8;+^[6.ږwp}8::Y,imbZ.Wǃ5x"SxBrsquu欅՞?d7dmh@"}凟rGq߀ r9-?aN~퓼P=O.lcyo{ͥ nר682I؝m98sw/c#Mx?')=*j[<%KLME* t4K{%Q;"h |7TXor/rIy8;Ɵ#R,~cOsM?YsBtyQ"$˿*tL#G;AOV9j7fg,i",|/(ހcӆGuˑy=|IAs^ub bLM@g.h|T}Ǒ*Y#+'T"fQ隩1B'B <;,Y1H%H(lD%*-=NfThQ+J웪#3092@b]yij-뷗11-/c?.rg5u:KeD n8Y/ V5xe,8 ۚ}~aߡ])PN(CqFR̲֤\2N4sl/*B5꿋Zij<6L315H@F{SThXNw/4f}43Xv3KdM{3>x{)=Lr&JLs5^*l^;+EHR] ͏7*cBR^?9鯳dp9⃗璾Ee{l>ٞ+8RWAiݨU+,0cee8zS/25H+=UyXԅly p&v싮 PIN䠍34qܧe@ `M0`OJ }oRVPѳDNч|]V6A@$Y#I7`ŔU[gPigQRk@ j4`2iq1:nb9R.: g`\Rœ&q c vU:oIǔ <2𛵶R s>~3KkڼtQbѩ>~ WKԅRcfzjӼSje\uTUꦦk* U3szYp}rti "T%ל.&]~zΡq2by-璇b9ɟ/D],tMe7Fd}iOQW[M kj/TaWG` ,'TVhEҶ ީ4T2ꊮݯ}ή=?yi8]m9OSҾgk1&lEaMŇ2~f\5G)%Q s;:%VI-AY1M>[mT 2UH:8m=U`5ퟆȓ|?Gԕ:= 2БT>lH"\2*~f^ 6<4eZ/J_VIs껍saH59y@؉$@ pD,8֨N gaG;}q`+! =oxs8IpnO}٧6vƮq#GLb LD/rZ#zX3NN'MR{c^K'I%2CSatHe`1`ڞ^%TLD /:d!<7TǡPrczOhtH1U|EʙkxGneN")u#Tʝ` $^MY43̐QDg< &6#+8j*~Py92=cO8M],XU%)'I>0檸ձ3c1'i%LZ9sI(Y8 meLYpHzb^hE1LJ{0r=)iG_y"7 lP *wC!Q8 ^+ DKJ1lՏY:'|tHY[.e>N{U]I8~-5H^h6䉪e\5qF$\T}^U8Ǥ@jfzc3 UijeC^ur$xhByH`. B }gZjƕs˔LG'|僖.4 ȚK1!r8βI0to<0^q8fTBͰVkBuUqhb ./S"W׬WFvWWƀ2cMd/mh9 }CO[@xF i32yU M6tCGSEBi6b,;iI񧔔%'f9>$l{K[ OY9m/QG@p91^On%=KHQuw=7&vSY*BijU+#dt\rR0M,zD.-<\u9.s`' K&5gg\h.HcγXlyV9wQpjݰZ+eMK=GWO[7$jqAdxM۪~߳X1N$8(qԽp.m˜us%*TS7x4<͙FSӞ ~QxqtoV=4?g8#jEe1̿/Jws"sxtMsYe3Užn]mYl8sʭ۷X,HwHcVHpІ'"rӯPQzrڰYbuaYS-^߃lNNww|FZʁ#iږnK3t{XMӀH)@rOu*CY/~R5fl={r)UZnEp3=W,X%ƨMEşJAdО'12[7y4iq/@HCϸS~߀{z6;'5<{'Nܳq3>[os#8B5]U~.xg? >c͒&LⒻ w{!D)-'c.>70g&ťk@v6Ϊ)2И72j'6۵gU9<]L]E>{|'ͮX%uQX:ի_- "sqZe)g4vl6s)h?#9!ĈNL 2 $zI\E{0X`\D"S"AP Pv|6F^`V %} .#NpZ``5v,^ j7NX"4voDLZv!'֩RA-P >D7.}OJЦ;ѱN֍>gMSUJ&Z%I`?1's|g>7B62Zb0L{z9 nTB @uM+傦mTQ`SrILHӜ d$!#ݡc2=u,Z9,q&5uƕgrL8#Ff5<[BѡG#d=èU-łb~e"2d$AhT^N1b[w:ڔ Q&쮮]^ro4킪hȰ:$Y8uzchVŊ#iN?" F*IF]ש,ۖi.KjMMRē1is\|Pi^Ʃ4>BsIm 1 DsπQzZդ'8*OI+.q"VKJcv, S*":鷋5;%Bs˘—=1j4%$Rk[yRn`1w nFD?dZ) >J hl s>Kka6Ogs 'le`RR3m(S!redKhlJr]e7ὧ],X2]oѩr c0R%?'ܻs{wg|'<'~ }i}itU*3[{Eo r:=eX]^󺗦>>l}ihxZVi2W_^iyש%/b; ܹ8:=๸Ǩ:%MSst|L,FQb(%j گ"K8`S%lĠu }b#Ϟ_qqyw~:=`\ PN<:٪JVie0/ͧ =K%%IDaÁ'!kh)Q4h6Z.wA+wN9:'ݽE0{.?4[}}uelexpx~rYz i=]]dÈ8A@\S!'Ib9GZ#~ۍv|s'B$]KsƉYl,DvɧX8v7V .jKp#q|㇯qzo3?_v˳vwN$1&k@vDV-Q O͊AW !^#8TV fDءr5VuS;U6I )ȁ|OqjtqN f(đӣuXr/<щ q!I4l'Bj^ԋe3I<8$Eej*3`ص0i@o䲤=4W̾V;R29Qcf/g+RNι_>er*xF+9J&S8Tދ%50fo9Qׇ? O{b_6hdb#gw.^ǦvL2|eJva=ttw;WP֒)7dAAmo-h UUn`BkEfd`!'QB%?'89i} IDAT+Y3m\y\qc4~zd$Rf沾{m6Ui &7`S̏.v)j"]_הA$LHvJŽ4.Wt3I`k}{ ?q]{+ d,`^22_0X`i/2]cL*Lf cD̯Qh8sLrɱG)-ͳB;LmfKw3dj@1dix}Ԍ,k&DAMbP:!UU)cSD"!a$Lk \ﴇ" (ɷn ȵQ枔97o~' Λ}=Cic&k6 X_npe|3i,s ~Lϗp^\b`!gڐI?I:%3߭Fc#!nHjil&&#??xšČhIBJ$ ުw̻973p(Btwrsys&ӧrʉ1Z,{h,'90ɔJsvQ_Yu/f29>%s%7lb*O L7eR/^ĭY\?q,6=9/笀VdVMy'.gVb2}gϸXs1>_?&v s`Ǐ>wh;g/_),#cgzb&g"Ti2a#mix&˼"MYNq.ڣ6Er3J瘞kZZs9ڶe6 /b֗|~, _`qGFblM EJsoM?p 4ԓR;!$|Xm.$NN[{+fWWP5ij_}\XWQϤU^쓵L!x] K#AUϸr&m-AoCNh&*} Ѷu攮Y3)kJceo8= =HrT޳pˇԕg{a9}/1w;ԕc x(E"UN1DKfeiZTIF}x|G-[ο _٠A )OٜJlͳ52lF+g'h+îcD;9#nwԵڸQ✴=?^Yv'\~x0Yv.xWf^~o3Y޹ 1ON [RAsqs1V82Wo7Ͼ'$1=)wƸ7}T|'s6ܞ5\DਏYRLІg?+r\^"jxd5"ԝ;WE&awp5]rA 4jG"CFd̳H14H%^}je:Dݩm,:5lMf;p5X'S"kil3,6#0˙]M6dCEz+Ɇ^L(k$Pa!`%}IVd5.af 3+[]ȸ9g'!\YL ,\eaCb¥5C2g94p lڴy͒q]!9/4K~M: ^lK^ijΞ(LVN/h xj}dZ ^Q0w͂E1k(>[^4H2xrHQFyP(O{ E:&I6Ћtd}^響ncXO)Ir?=} XH$gDZT%=TaCəB,&q&U)hoT}L&eLfT"kΓAyĘ ʈl(fwv<ήU1S^&GY,Oe3e?qp~&qʹ\}~, 8l Csn(%C n|θU3i~$Y̠jQgP&uVA+ 7*j١>h Jcg=1*IWƠ5UrKܾq_߾o͓GQʖ5QukP}-I+JH7̰3TQf|CژM_qg2WmO2n6Rʜv=m Wvy9ޱj"u<>hK{^c: a!OM S>bĬTeO[)UL2:^RANOO3_1R4g8 3m[Oq t&{g(xu_{+g,lϕƵ?aj? n2U1Tt}Ϯm 1<Vt{{-/?Xrb|^pr *=۟[M?Bif\({x6=JnjXX,,W+Y9㴑=R!hh7MåKZ-Պ螧EncO kl`O[510Ja})bflӉ#ZoH=ՊK3-0Fd R. sJm*Rc1"P66$"6;VJE07S.On0Is|":ip:=¦{@p]* ^E:R+f=  >z"-' mrTyV~e;ǃn܁uW? ~]N><TlLШQ#ь W*ϵb,g1pᤏlcPB,{?•W5? ';gJYZa6#{)h5PeGS; `p`Ugd7 V+)U9h4/C$<%`ⳡˉJ2"3bSyrⲖH0=XfRkYf^sli2T:V nVj%qo,KD%\X kc٥ $nQ4o>L$$Bƭ`GbhWBlGZ2U'h_37#fx9} 9D"EpBl:f9Œi0NR~^И11+U?>+cP΂w Rv]K JWJ1þWg` WWu! ٔ8ɘ;+=bLL BZVslDLDަ*|텨坨z2 -Z}nخ7ff}l3hg ̳}koް2~pfMܞ޸}H3/o~C̓}KY-j^ɬ1۶K|׶-vsa}tFGbTĘ=Gg-x9=yk%/ϵق>")gXI1bcXk QARԜEPL(i::uX@NE2~gt^ (X}y/JL?zmO:ٞG>$F]ӏ5_r^%B+n9Du\Fz$amVZ*穜exf|joť}\=+s5nܺ g/%9|~X,qi<Ϙ>$9 Iulf`_4,:Š(O(ijM` ,+!Z_xTmo ER>>_iHg5 6o.v=.4p@y/rm}\U#1zK||ͬYzr #[(1dOJ| 32pu5l<{vU_Erg8#Yf~GGOؿ}M|q[yrD0zv%?~q\;ZXtc-ɼ:ewݬg=cV//sv1cLkM<{7yж}HrxiS+ދ>>jo7ɟZi723 )2r,Ri]O]6t U6VTbXov? 7_yE~gSY@ >%h4N-$IX 9-I@^tQd@N_V<]G`=3B 6^~%^'mn2lH@)R|Á-#0WF}CT61KoڂS6p]$,G閫 3hUd,{*`3 rGLY%x$".'UϴYXX^h3Քޅ#ho,_uH0}wy<ɔDȠl4V"M3FaNP(QN%_Uqȸ_ޥKK|y d<(1)Y+JR C&MJUtlH!VYJb8lgŖʿ#U^[+M^,Mi_Nb{/jq`'O|5iW@٦c~~|܋3DΨnI:u`l a K#`R;ڍɃtb`Wx-^{n\ڝ;6ԵSmN# cr@!d3|ةm.Έ1l'Lmh fWPW5eB?S5YE]N̚w͓ߜ4q+!O2MMTRl2]w!$`~H8f=ݧmyx.on޺C`y&lsP%YݮB *r`słK1ŗfs5 i X{ģ׾7rm|]Ӟmp\Z~O!Y|Ct-n1c[J6\bDF9]..8͠}F06NYH8TIbVо?o MXCb! r3> >Z`&149L`KfiڙҐTa%#xAXE#"TXd xb0ɯ$zIjR 3Omy IDATB Th&w-S1RG0 ?f0ڇMryб6>HA=l$~T6Ub.Y9T&(-H#GNIƨ} aH3ܯy%J9CyHEIs%-*:BLdT2v} eݰm ԳV#UF##9$DS)qq2V$z&ݑ 0G> Ή|ZRU d(]GE"$̈9`(i$-)xUfbd-h!aA3DTX'To ܪybWEi4 Է-b]eqDłX֊2t&D],Lك<o}{?[JB2g@eP RŠ |d}9;Cs<yqv4*iԚ|lfqHZfd {CR/i6gPA3;wO䢻qjS$dzLR /H^y|52dm^0l@e1"ssc[36zot,O{3R}kP˘|hqd )o;4涬(v2oSqY5P֎f^BC =myIhr p/@ՋXJkX܈QfK$̈́:*C=oN"ͦkn*H>8c4xy60~ukl63v 'vҁ|0zm/*ezTucXkky%CG˒Xm{aWuu˗f89=ar|oދë(+%X%tH{ )ry'|~uv|;i/~7ܝg;k79d9Mf5|o-N0c77Ի]˞yj,WC5Kn0]9)>[B'r.76/s)7nJ==*8@:% xt!29Y鵧ߝ2/w)u Y~R}G +rq0k9{ǛmJ̰,kC6O=] ՞Yŵ67?ٚ<ϸ}=wnpp[q/կ}nQ+kǜ4#rnuPʀcRP*̓3 $}vgK=zիWiFQmGI4.V`bv|S[ %l)b"!eB,͞ng4z^M}#[TuMS7,Kj`mq3>zr9Ϟp۲nn:bL40o*U]ڣn굫ܺ}7sX4 U˷sX|K~F>ނWM==^*+\.Yv;~XYp&MD%wjb\YI\1C?)7\cZT%tCⵖ?=8_,li7=cFX0CukdkԖQF$Bgc赓Z.8E&Km@ɴ_1Cd?cOXz[c6s::&l$PhOOjäs%%Zmoq+z BߍHDu"YU*0x%)1"3s߅)h15?q.AV~9;},AkY?㻍6d؃]G'ؘa H DE+$7Se<{"9\g_a~ 4)Mf~{8Vo^$܀D> rINdDjZz"v}+ ahl ?ƙY.U据:Eܩ,WPa^\1 S"=*N˚6E&zFlq ۶Hte%c,cxun aL?KR9]^Y3=oh2E4+Yn2DŽEe_taQu,ƗL<3bfX[IcƅnuS'dIJ<R)ABtL _%O 0c4s4(Y F6$hj6/I.C5ALR8֪1n c&GvcrdROX9rO0wLc` ł}*y~ӓB4UUBOC(yI(L6eLe3#1@0K9J֒0J6MaC2!F)M4Z74ޓkD~EJc-1^Uc5ץ:aI!==3=nԺmO~d}' /,gX%w jf7*ƭ]K9kO!oL,/9Gaf S8u)0zYa768#\yu+VS78-/fav;3OپIOibdI\zW^y}q?Ygnw\UܾK}ܱ ѯ.qT-9XϸW/6Xt0UɉX㹏*CS,{u4eV qJ|F~,vQ`Ve`d_yS;t?Sw}.~^4? t4?},ı+lOR8r6g=)F[/7 >>% s:sy/sE)]Ltm*2O?;?˷_:*VZ.ڶ\#HBCn8%cRJՌϘg8i}߱lZbTFP9E|剪Y׵k+;fMPWN!1xH %.red^J<:Lڀ Ó-!fUJ#8yEPy*Y.l۝T"ϽSkh./Q-잞✧;R7@JmGm~ަkL,.sWJ}x@zvroE7mGv{\ҫr;7ف4@?W %39&  uZ7p:;Y]?Tfx =sܾs}7d-ܫS:Q:e!Z&'f&33'ɘ'aD8+ӷ=zk- |1"))Lal KzVWJP;g/RX4Qo;3X-.21.C#(`Ytխ1cY5,A^ߔ(|Ƚ$L`$)LNv& m0ȳ"(@K,rh1睫-VTf`ڣjfm侭} mK3eUn81F54v GGG4l.ĨTz$ }MRmJ4^htmGLTUMNoI$f62b33MwzFtml>~֋}.q`ɣ 9۠lcƊλ3JZđ/[SS/%bݔEHz?Vp d•g^TvqNKڕݝΔ`djXS8fq:(:D2ғA>4ÑRYE4.Ztcv214"̀D&Fn166gь4bЍ:X) 8'MNJV@? /)뤔|ij924EM[6Ӆr>y|)|Y>;`g$kX^M˜mk%1D69CF( m1oi6'``3ֺ]1s"Sv_Jy Y/|3"d55ǪgTMC4TU%zckojlr3V%g2GHNxCx)]yCg6CwA4i l8Cl8!`l1,_>>aIRbYgLŶ,?v)Mire40l~?j|)0(eHvU`=ʫa}V1+\|yHxώOڮm6;<8 3NNqrN" PPlZM l8OX\_L};*}c$9g~uEp#êrܚ{pKwpuo&޼w>|ƒ .ʚ$해 eݚ?Ûo\v̯|k׿ʭ[j-V?|o[m[>bɪ)1BFzlagV/P-Hjzr|FO9if-lFxjɧX7•B ,.Sʨ- r!%6h,N$23]Qd]d}JU>$=C* <7\9X}v$ಒ<_QSCe`MfuŌnR-礜U+rҭMe"#cauҊji ٳr>9eW4yg՜7 o$\㩫=G~&Xdпcϡ{[,g|_~[<N<f8582&&NOIY)p^[$ GI 2af+o?/qx:/q0{l8VΉʣء<2 2)iXaruxE@#LaYkTrE}G' ]%gca03Ew^"刾zga:#qq/2\U1)n̘OABiRi T\.HGlIXd%$Krޓ*l\0?8d\amhg}$a̗.R3H43YpƬRO1҇~HvΈ945uhH3_PU3/T (nGn k= 2J<YeS %)S ^zafҘWȸ)I,|`=8V+"E[>`oڸ5侬 X!E)($kV~sT* (,>eCkZ!Tx^JV Dših@r.iP ,T RI3c/kdI: 9&20j> \|BkrQ3vF 42VR-fySCVzu粏909L&*qu _jߓ> l{vJ 1N$"c%GXU$s=Mn$>}sNNǨ7/ W˜ifUWyC=kh9#-M-@0TYbԧNEaN M=ǻ>QvF<7ˠ58X]fĔ1(tnϏ9 ((²4el(,& PڪHYQ45Oo ye Ɛ`5 ̐/:~U||1w[76ej[J<W_}f6cݲZ96 (:Ȇ"v'bV7\r/~ =awJtڕ񐪓<1Z/a` nDx -]לLri]4G6q<2֓j%4+vDRc1_W7g4횘mY/*=N,1 UOd#aP q2H gB- ˟,BΑL$@QY+,8g/:'-ʉmeq87}_^/Oi59-şy1q޹HcH~ mbR;8k{~9:9~Sׯ]kg蘣Ș&lq}Ntcl} w|z~uw^׾կp ){}G|6m{*+ֺMH%2]/,S V)q|-Ȩr5uү*zt!R$&oC(P1m*v&KBмO 9Ѷ=mcz8;{<<=zήcp& ݾōÖtq׍v}˜k ꊦT͘Q"kzXk9n1Š r>meVt WMu5(1ɠ< ވI5KWNNl{c+-~W?~]M)S9撰#ql'.eiF%sHXژ9~'pxȿ-y+u,7YufQPH* I!htdqk BGg.~DF"CtLx>+F~l8Ed$04 Y: ]WK{FG2GS1G^0lC٠wDA5DDw@ IDAT*leC3CIZSEgפRh| "@z&8Bf;q/ YmcxiΜ3v@&F!opՌ^G#֗&. _MS6vۖb,͵KHH4c1rTϐIAɹHﳼҜks&>@cyRR*X)I5 FʢS$zN$eK=9Ojr@IAA+է1*,qI$ɸIu= yH1[`x)ǎ,$58&U #{1Qw4Yq$0zQZ*%>l2jbsh;5Hd]Y1Tk&iHLIUHIލfToQ|LF01 D豒);> *5(g )4 0 TB;R? F`-p44)(g(P㳽`Dnra'NG[ƤN>^3agϿ3A3+ ivú+0}OF%skŀn0E,7df|WϿTGl4~ԘΉq\Y珲Z7f"bC8a2uOh`)Dl{v-mۊX 4p??1:ub!tj69]>~T;ωm\s1sη4a:b efd7ݥ:.j"v31<\ ۭJ/pab7MLSihC"8L~"E]-Cf Qeն-3ԚU)Fas}Вɼ)o{8nRe52 :1p|߹˵OW}6 1%cb9^ðȱ*b]fv`Pu%~`3QvW滮奯ȷwkop=c;G& e4l/2;YTCۉLߙ,= ;` z"YT=Ҩ-:#{XVkYI !ם*bِ 8}*[ lj'Ds2劘G ]"K-p-Pn~1JRo~6 *& \gom/3aav9.⬋_𹴏Anе ylgIY_Gޞ FeL[ݱ=oܱ S;l1U ^,ɢ_7Mž2?#B$%/%@.J4猭I%eDJQys &||z?rV~/V'̨DQ\cavq5Br֗e~;wNoͩ.غ:}~_$Z4ڢc_ \HzXMI^^ ̹^ybrV`~ mӘ&@!PQ 9OeA!U_,:1zvuy0Y4d6uC()Uu?T3b%eCVẽU7L~stb]cM묺Gl;|Փf qxKӐL\9+F{Ή]`Fċ:XQBS?bcJIli蒚4G^ A%|ѭLw^e| ރ1>yvU ^ļbR{(ca @LG#g-Sn8l'3سߙ};eK:Gs.cssЪ3ciGGkd9Gx~48o4 /xE"E<ϴkىa t9M'SiU4ädӴMo\#<[hLO-Z[jh8V)?KaSa"8Gq l}e8ݰ&~ AVZ ԡseDŽ#I |> !p[^EYM%Β7@՚~u`N@ v3asiJ}xfgAcޒR"ǁ6u%IYypmi}"Ҫk:Z߲vkڮ :汳d;\j˯]{y~ 2н8BU[~)긗Y헯c]V|kؗst͙SLozk}5?x>1Hѕ8\`xtDO7S` 6ϙU&DLO Y5E ͵H&ՐԴݠ7rgk _zUk|~q x-~Q݋meNM\urfʙt1qt~o_x_{TO4md:2iUVʺvNVS#V#5ikNmX}#b};;U^*ѹPy}cGtDwbNƼ%/#Qَ e]ZTRd].A"_P wsș`?8 ;?jpכlf-J v,`}ޑ-v]n)ikyzSRh63ܭ owR i51)1VVk5DSL vťDcaFYVՆQkiqm"n_I 3E^M1gHs.jEXjd>ֻKiT.'&ohq]sN ]q9Fͷ4fv5M/Qbf|4=fc8YCZӭJ̴ݰ۞j[>_u4MS/0#f8^{H(hq&GyҶ1WT=,-6KLGVtףE"D =YMRpFJKzef!vmG]_4~L Q&ഷ\2JQB܁QԇC&+ԚbbG/1Ę b>|nF}q+˜ \%jXIUDohho?l+i4-'#BwS4 43K<.C/w-8MyCa&Ti|{.נېjƋ-mq`7%:h*8cL4aPL5xma\s>lI "Iysܾ~AK}ry8'w1Mday'~$V#O]P q ]lxp35ħ8HrIqB^kŰRTLTT<q{O^g }q4?z> O.I'>'8̂;K~OYi[P,XGTYC ^њC%-ܧVE?e bZlkVqA< SBDȪڈMSr uԳt0eC\v;n޸jmypꭏI ޑ،3P.J)zQ;/\\l|˘qcHLTLL0N0bxnxpzn8&љ\"M9W3FBs&+.f}(M׼3&xpb;r~b`QjИϼ2!0-gۑnu7ٵi%'lT*w[{PUg,~Ґ3g-/Pͤ+֟4IHV{=+80.D?{o>ٝXIIcQ jE kgrMA ?愷@)s̒a /2P@ĔgLc,@| $ 0 dH3OLRNWue  mv*)T&`LUgXңYgLFF?fEƬ,%S*Mץ!3gf':_n=mm2h7dyŁgf{< fyMX!T0::& Bۭ ӨVěR|ӭ]o$ ʻ)B7 H4n2!R2vuG0>α>+3&p{nPr9#qZW}-u'i[6_y'h/"O=w~^~xgS`,zsJ-w5"NX,U+D:ysWx?W8;?Ƿa2:u6]= &0vn_rsZK9[I;$]#=ӪgC|72Mٌ#͖ ;Nn_c<ȝ͖aGXnwܟ"2b)c!!DeyM_v_\e9qцGwDn1O8ANhдZ&*U{+]aֿ.Kw2?^dq/,I*ΧmqQw9XY|_zw G EQ>9iIHVArnGZvc2 wva x]zY+1e"1Rfݠ1Zl~Kk-sRP\ .:gκHxq|KvWmVlggmWM12\RZ[9'N3"x՛Id+ŀIΚS ˉc=eOZs@|hKeEǤ̻1FBJ4g V|[D,j*Q5_ZJ0F8*{3knt0S6PP\用-_ }11Vqii2c*f'ȸSdycRiBP-`e\+xw`Y:m &6` 1Fc"DA8a- a̙8fx.Ͽ`Ssơ]r-GN2.y>VL1tKof@%úd7Y%vbeǝA dkdhˀA#BgXRnDPvLSQWDm/33|]ٹТe]Q=? \2Dhac(fŊ/[Yt ݡ2۫MeM-{BV:*k_{b+crZ\ʞyRr\gѤd!>g|NGbHaG #qKZӯk#*økwΊB*,s6?K ,KcXUk'-s'1UK6zS!W+iۖ=MỆk2F[ Ns4. ma|,gPI=Om&]Sa6(q܌)x IDAT>#u\8Z.*mXKj`Pn|q *hi Ǒ8e&x`#)$^L>]iizNh}FBd{v43ZA<_mS ϖ]#\*F ;2,W.SlIY\!zj4iWP7?m_{ń(TlNѽ`B!dpu\Y7b+ois͡Qmg։f#gʁ\mū3RV}hX},Y#v7Q 1PR?3R8:br+3eQH|=jNr2 ]eLU)2fj|Jգ#\,N)EfݢHI,(0?`%XR= T;O/3.l`}=Ο9gy} -%'  W:fݽSOy"2<_/v"{iLS"\[2I%BU}b*+O4 k;o?^~eͯogy5#6=Պ^x_|'nb쑢4j Ϋ_ 5H iv/<gsݻ;oAgJ$FK#1eJ90Fl#Q {ON &'3@' nI2>LĐ8ߪq&R͆g:-Hw֝sZ:o:1чyl$qϽ"7o=?{~99xqx8]e|YW8 6ؠyg'X}:DW\gi,=ƞ)W}Ѧi`Id']#"ۋ-1Y;{?ݾHߩXB)3Wto)s:ƈ5+b/| Sll薲ME2#*%̙m-D* -f̶<)R-|ądym_(dj|+ި, .b<(2EnWlj.JWlnC8@@ciNQ_w ޢ\nؑsi< yvǪ_ɴN%ŷ>]!9geMf"Rl sf̔BDAMQ$c]#2NlzOcfp^sL9'a {*Ò5PKmsR>Ԣz.>Aх/de9n9d$=ju}@uaqo{*Wn:Ie +y=Vhx_eO3}k~}o0",ֲXfm\9r%,P*`7f-} ;wԘ[L9rTnJVPR٥DǠj.cHs7 w::xl*:P4u8Kh4册 亂eb; XugcA+*S?H65bt-"R9]E< S0иHO-J+wn3p1Md4]zkq3)D019F oZ2[Vk]Z܋sN1 Q ,z̾h;Z)v=eqڴ`+ڶbW], oY'K9j5-72yV}ų(NPh: G٫e4/\ Eɢi֞UǪ~/[ue \ǚ3'M}]+K}nE{_f_/G7V/R\ņ?`6HXd+i{yf6>4{<|?=gx嗹l88<6+.kxgsHfv#DXYV:AB5^O-\t ‹.:8'g_ ׮wGNuߪ^ sd;x;L{'b5jvm1 G _^_~~r׊8V=0ӂܗA;:.se A_2pUPV(/[vQS˸Zw-gw,8+ $QQ$w"I6s&3@M7ԋ -({Je̢2f9Ze]UOg:Ov^khLPqu3*7Bq JvYTzZ"`~3yŊ\3$m h<&6ΙR2I\r?T^3e-i;GW}fN<|=r}GZb"FrRaہ!40 )ӯx9E͎4]}Va(L[Ϸd/ Mm74gg%ɜ`xXY\&8؛/9￐x갠VOd?U[Ͼ̿/~&ӝ2gQG!%F!%B/rUǻ}FIU<.eAA˰9w?KWяib{x !9qe;V.ybk KF}jl j\O\GaEn+K-R)e=s21iP`Y(J).g >e{4А-s)W؃ ͪŮ,x*;IԖs ! I3摔ًfA)bb`0RO[e^"(:9J@}۬9t94L|e5E+ uU%JiqqB9ZI;-|nuZ؈8,d˜194˖2M)e(3n"XkRP)!A&fuշ1l"NWpʼYLfvQ 1&{)F x]-ZǮ3/O,/vS.e%w;uIns׬]`{R D}+ƪv8}941o'r-jM>P`D誥lLv g..,s$#jE*8Ĥ28I5YoXƜ둶^%4\5 EJ윖"TlLJl~u|ԈPduOYx[vʸuj~lINj9+@BD蚖2X7aiDIC9M)%Mm[MW|-*(k?>`E8g : U& 7mS!b1:f8 ʦRUD pv҈i;Vi;4`vÀI Ϥ0NqB ht5'7y'1b&RbLӈxo@hVZ"}ۖQõޔB Nʢ$w]0Rz3(MI1rD1E38Mɥ6ADLs\l̦[o']-'p-E'^m嬑ǒ^2=Vzwm; ̐K*i`k7HuO,|K\!o \14rq~oū?!''d4sLJ]vq-~ii\r/l{cUstyUDLYf:Mw=OܸWE{fOu˘uI)0D&f !h!byᘀkZ:㻆v秄Ɏ1G6#͠2Y~e 3C(7'ҲBQsn[4qtZ]Sܼ?g?1x_۷y׿=x/_^}GƉ@93t'1i% DX\l`??G\\\ -%?ϔ%5̚ˠǁ%S.~U}US/_(&'e;B&qӴ_&[y:8Y*}^!)uEgDaSqb]BЬ,Y߀Y2wt"p)3F7Lyb5"f`ꁋ+xG*Q)$E x|:ޒõJ1.[myo84s%7%~=1j5i_3KҜsO&#qҬZo\#l #hʻ=8PMⶥ3o|za覉4-w UO^cv0ZsONh׬!4L1P2(sm=tO߄&Y'T5^I)LFa sH=h&sG.7^fh%[]̐)koaD,t8Vީ+*5$#-"C{x+>sܹkXY!/.gɐMAlz:'/9-9O|" T*%^j48a=Q):ߴ]8W }ajO̺>׊12,f$&j@9Bfz RF-!B[-Ø/^se-M\q]lX*S~T.g^>\Eڅ}|3ay~WخrWf%gb al ^ ic00N;r3@_Zppt~[)]H%W1 p%ծ(M`rp{m71p IѴ>is*LAmv׫ pYHoGIa$2nm;B  a]ӭ֔5<'׹Oh}jEa3@V!vfutLZONn -ꘃ[4]m2bLk `3i xal'3uMo=Mb}pDwpx8"dLĴ)VZu1)q*y& &kqk73Vnw]E=|!1t<$&jƧݑS^9V\ڻgi[\K;([Z(pI3(,:qN^(`oF,\-!e#svW,!RHep)EN ltޢy_Yi b)t JUxITWȈn3@S(ra, lQPi.]X QFFV.1,MԴ #x.rq`{p 2ED iIa"eZXږ[7ԓ^}=^}GIu-U8*sqZ87j境Y)\RB>YsΦ7+FDJJKўm)%s(j f[7n& 3eޜlJEѬV\,!tb1~\_ j{pq_*~ś'?1s|flKRW|}s||3>s=R&XK4=@4Z!Z{OuM`[&{۷oկ~S~smq 0&hGI;a8͓ˮK7HTysZ ( DF fX+i9C ]puܸ37or||cVGm!'ܼuO<;o{pttė2_y9<LAON´؝] M#kXVl?x׷d{nnյCc;v>`Li:tJl`Fv[-" #9f\̄i7aYdvT!ti7(h6$Y}"-ۭs858qB aGkAwrH 8xNÞd!xif/=ǿ;~7?0Igx<9zQ4̐"r&tif,SQ $8B7Oy+/VҺNT12Ԃ͒oEsu* TfAacfXJޚØjI.Ԍ')1yȴv1' 5淫tr5 (UYwl.,rcŗ` ɼ>yrD6;`I@S *U0-w_ -JX2:>XR+[zk~\/ ‹P@ӶV LÎݎa_8W_51 [zx/X+ٹ9klpT [H䦒Z^c1 XJ\wfg|gזF.5XI)_4Ev2}9d⬭U#NoCe^pK'(53]ħib[{N Ĥ<{M&;؜ヷ:3\:$ gs [pb.GQcB,vT%24 LȥK-he4ՍfUm&K_wx7ݻo_w9;; IDATˀ\۶sΓŗyWv hN28M5iVR+{NY Dž CJlR&XO\}\V84Qm% v^y?47IJl"w!BgiP$3oT g!Ida2?4"Y"\8>0 yEo,B[]ǚ @4ֲ&|%0Ћsf당;p%"Q|U =SDlE  QjFhS{*  "KSƩ,n1|!ed}Yrǽy+7>t\sZ>l,?x͟p7|OXyϒdYeвLA >usn_Fr jv/m;XrYkX;-K]̲J˲eqj'|0ՃLl GrAuޭ̰}Mn5Fw'Mr?FR,+FXOnkgH ?໕aRe2ܞ]dX`66E`XyK{~V.AۤYWxL:uS=ɧRPӥnyI1P,}'G 6=-ryHPzE\j1aK$i@<1\UQѴƤǝ4Rt @Ǭw2' }MiZ}V -Nj;2˚ ^h4mvр\,2L c9KHY8XD4uYp}Bh ^1څl2;me2'e4p|&7:f1yzbEb,6}T"٢X{-R $Ѵu]oIViZ.ޓu]s=5ҫ;OÛlcϮ96_h1D.9Ү-Ktky5ܼN{:npr׎i+n5L?1a1v-wn?A߶<ܳg^9O{er&Ie Y"`t3'B#tܨw-F=HcZ1l 5*.ٞ)rDhc|ےT٩$c2)Lw*赈\ۀ^+docԨ8Ⱥqj q ԁ: &E)j]7Ne W-m s*!BCZOs1#1Π2e1LG^}}xq s$LvXd&=%y[ɫ>Ia?:oG*]N=rx_xEu3lOE0&CV`!ĬE0D1 e,MRݫne`oȺYE3x5U=éOXQ®N Hն/΃w„DԯC*Q0㨚/FJPL#omJu*Pۜs\~6"XkɆ~sOf,gqJ%T&N!h4L{Ti*ar&MԎQ{UoӀXE(hge1ѤC-䙒qۮ7 ]23ٶ mֵO#cb@)1F8M ʇ` |RiĜ8<9ڍ]Ki"gn2ZfS4?ެɎ:}2{FcHDdKI%¡s/?;>R(R")∑1uci5dXY] ޵22z׻5R='4Vb@V'(QYʈ6rMšibCj&1j1|$ EYjJkL]Wh@ lg )ٸ% &4i2WD КX5!:a]bg}(KIG="ݳw5#cZb:Dc])<:Il$ z6*χ/4I%bEd(h6InŅ%G{X|tԔRSlkɴ i0JtDP&lxy˽BrPZRX\-.)|PP(ڦ9чĊV);^&d1Yi΃މEP#ޜsEV{hJ1N*I,ɊB"Ģ򲵁  AC5gxZؔ,mL$|&Beg{1|S,~YU7DXz_"#=uq֢mR2mI70!۠ Kէupdv(ՠD[)B^&Ĩ.${ 2"hT;R5/G*jK 185"$c8>b D"ٗ"߫w>|~ٖGW_U=*%KE.\+WF,.-rh}ӧOsQesd8.@q:)Fm%i&O!eY0byÅ z:x͑8z `>iE.*MӲ;&]vUN[VTVS[dEKˬ xOfnuť% )bXV yJpB%0'Cg}(Y__Ν;?7dssJ9RaEJ$1WiN^kN:}Ν;'{AJ.%FY>/{H(y+f}?( v=w!Eރ{~}??gxXDGm|kK(E< Pή*(Mư,9zcfe(zHoa4n97À?f[՟|x~%Hu㿿= .{`SOg됄&=v{vX+E F4S)e9M]U :&˰mK97 9&[; h5q~.sliBRc(S-/# '6 1Xk򌥕y%-v4A`)0ufȋv:\x) 0wd,ryQƸB)懬]0F@L u87?x[|7Xt-;ZLhX#vTTUrtoL0(2-E*K79#R-}/9y 9:^'f4!JX|"5|x.yCOZae-Tq+4&{ aU3(Ъ'P4}7 Uki5V!y j%bkS)GLNН߄?% { 6b%)2A ^aV;Hq"!DnkpwmuZFpTZv5΃x5"aT'xG8PK!3(&5+d7L6d*)DpM+/y1( ʲv5e0j ,u/5c9na~ad6mY]M]3Ox'"_3QMFx`" 2Se"czQV׏R (pF /)*i kw3SdYՄI=AghY>ޑDuP0ϮHh4ȳ<\ -躪(Vөu9F`J07=N mfBAk< GY*D3{v)FÅ.UǪuiS4& EȌ:ղ "sxEuFڶE)~=@Gk-`P\ۆ,dIǛn 45Na1&`2#UBtL繀pX'@ĘN7w_FH]Τ{xaRho0d3I۠LpqmpwWi#FIX }b dGm&lqΥl6ZUK쭫*,ْyi]wm*J6 ]{v8ZCKvCIaFjƀ5N ݚm,J<EΌZ*)*X >SM&[)j-){8]y؝9zщktƈ~ F~>P)ݺr0i? 0?< 6D':;3 . 6>M(΋m> 7q~(}}ϑ9ؿcQg_losQ^|%YV,9tVV(o|ܻwO?K.)C?y9zeYRntAm}M] 謵(r@ F+k@|f<|gsD+ !B)ܘlneאͭL#"n5Kpk,,-vC9zCkZaqyr~HQðdY&VU7c: E]Geee]=ֆ{+_7n4uJc·!(dSg#cCN7B]|dqq1eѪ&,dꩧX__g:r5Cgii k-D{"˦dAZYRAHV"^/k[ĺ?>PHelmm튩@zطA.|Ѡ1^JCj˃zpӘEUlpg2z+;J?-C̎ڛ.ZI߆sվ5`ۣRV֏_$`mRC錼,{-V{ 秭Vrq5~=~zN juUCnYQZj"+䙁ց_7IOa)i\F$\ضbOaF%.$β\25iEZX Mu`4E!@'`|/7ywWNk2e84'2)q*Fu[dp+aEyeQ<49'Uy7ɳ?$/tO}i'0hTNFx^Q6*\/25|WݛGO#`';^@hӪPl4.f|^;rh˺oB{,21D@Zv9F:']` 9ck{ƿOwc6J&^@&W6G=V)Z-e)6鼒y ȅDw>J3TURG,aBNYͲd/Geex/ؒz:Ni< ARm/ :WL)%1K%صm]WZE‡V o;f5?`- {=L/lo!0*8z.rq.r02Q+% H\z0>~W9i&nbKC]ePȢ26QfI ]z8)q >g\^3tZvPuWucr c )PWsaPslG{>k)#6;i)cbJM]qA >0z3G)ES~i/>hm=f̀~t+G(/ڗҁcv ;þX1Ĥ Cխq3p|;/ͭ/}7³>z}7clku&ouVVWx){uYEpɓ<4M Ž{5 IDAT~N=R%Μ+|cǏIxHzdY177G9QU! >TAK;~-~׸){,⅏(KS'`ljmtP7Ck(CnsV | rV8rGcuiyXXZbqnA9sܠ2°ku4cvvwYoB{FCkf<=^}Ux 677*.1PxchZ4ͼg^~'O&m]Hc"_ J)9p%޽˭[8w'Ow4M>,K>C_OO~"*[[[|_gq5?'p"KxxWx?Wo>o~\r;N>o~\BY /]f:׿δD]wcq~?3gPǎgee_|;L'S.^ɓ'駟rEK'NXk7) |^?̏GLS?~Gʴc;oWWG?w9 y=^{5^|E锷~N<ɓOY+6H #yNgl`X:2PN+L eYˮ8d U [KJ30r_ 7g<4Ґq c8,qM]`2xc EAVR M跨rv4PJYn@8_ P9ld?bd|(r9'6NQϞ{E]N@\`RaTud:4"Q"S^ñ(I7]QބƑhhnl =}k{єkgrΗaRPyU "#kZݝ[䝉kigw4 1(L"-t=:OQ/vLIQ .)2:/Y *1!21(+.G!}]g^*iw8P!J%;QXŇлY,yn%RU1ȗL_ަ[ qhۆ:J'#Lj%< =R$:qN8&hK',FYN ZK2#vhچcZĨ}`v) IQ4cb[4oL&ϐr0)& Y0Jc< loh%S]o*CuѦ,pd Uѐ! 'VUx2n$~OF)D0.jp-b·h)LFSUtozd)IW}531Ej9SF!恵.|慄hҷMml-0 q]18FqG OdҢbV]`߄1^6H!uڶ)TM`k <#"Ӈ9ia1y!r7AɅe13yck*&nӎɇ̭_"_^4"PWic.NvA:x;jٛhAδecB+с+rsdsd57Abp.p9Ż2;V `~f:p093FRrõu'w'N]{E{|$Շ,h ?#:~V4^o|»_Oߋ9{8'0??O>4E^g=<87~7o_;XkYZ^#={{}?~BR2id2E.nY\XNNX듃 9/)?.|1i3m*.]x{>r[7o}d!=6-UUѶ-9 9sҟO<4x 'O`yy%0]@1Fֺ0 4eZMco<4/{eIcLsHz 󬭭Q7of=& |uBN1PZl0dm4 cՋ\董?_:u-쏔QWa*9~d2dG~]guu?[7oܾu|oeYK.<'Og3x~Ϲx"O?'iFyk׮q9۷O‹/2NxA:ٳg9l޹'/S >}c8277s{˲6<4eQ2(%lot:_… sY^xz)^&O;h2u"MxiΞ= CʓO=s,s[2%x _ʼn ;KNT&HDSC?|>t:2D@z_Uo?םNs0%+Y?8h!3:boDow־D-za`'.&uC#X"lbpL^P,,dEIc[AVV4]O+Ô0`b'V̯rhlM2R'̐:" J;MHSy歓+|]]4!FiM:62<(֋ddnGC<;th<"wc{ko, h9Jt((,XP,&+/aEnu)ɋU#XX^iZK=JtR#naF֚aQRdy"yVۦVuC7GSM0Pa)t;|kɍMYU %Y2)fYNQM4f:0eˌZ=[.&!DvC=Nd>41k[|9d+PKB^  Q:cn~ Dm)6o,{r(R͐%Y^fA> p}GfSW+n!8mH3k|cƒZZZdZ+X <֒Ex)˂v^h!XGnDoݘ\S&Lސ΢İL6yVDpinسB :xE5Ufh]K( FiVgbilC‘%}ie F,Q!Z zC fY&LVXt)=mCqܝ4!":;,(mo,vu'C8 3]Xlju4g3m0YN^B_HʬmrCkK<ꃭ&TT; Kǎ0\^G- JiЊxs58T^[>)s2{V(=&^Ejr( GZtg…O>e&g,r|U<},+Q{rQzxtgSg09$35Uz:å{3_ԉ̆G}׿sPx_M0 a<\`dzpi݊͒"3훌Ǽ s5+8{ySKSYЌܼu[nrwsmr щ N<7 ^z%Ξ=xLYAW3F1.?ϸzjIYc$8RwfyX!Cu5hچ7#YZ177ϟ/3{=}.]`qMLW1{o...2cNA,/kyǩU^z%~1cq)^x m,y,׷c=AϵWi,BŦ;B;uT}z~aԨo]87 ZB K><{dxSy'2C>7A::$i=L('0C?fr($TIA\/?6:tЭ6ӓ)HhD <2i;;O@$pci:iːF^M { |@1XiES T<ϥ~D=mض%9Y&ҏ&BfR݋FZZe sEt k3[K5sρBՅu(mB*HVL3p䃁ZksVHd"e m +2aH?D˚.b29P|x]٦-!D<2x'GgF+Tf9ʹa;{(eU@@qmmj̩*& j{݄֒z$&)BVܼH-MUᛖj2a:0 C\t+tr߭`r|@9\$r\cqH m;iT_}q B JR`oDVxBҥW[|AWa aEq3h3%L?|;YL݉(ZIr< G\yPc2Z\dYs2s/ s&0hi`Rԧ̂x/46d'c|bۘCtC:u(qB֡wt{52Mx @S , Cm#e]4Uϴ`:@g%T@w%iEkჾX.r2/R*#qbf@dZzB`ՔdWօ (JK$Z؟gFg]`NZ y2ˮ5|A6,a/ 0jbDd| md.J0R]@h'GwX'(O%/Q+M>Ws٩kZp |[3~ɉd}&;p!̋]N:֚Օn|mp n޼=wlllp9>"Oszee7oG裏X\Z yɄ5xXk裏H:Zkڵx?O=? %ͅS%ʈcymܽ{u>}YqX^^fֹ|G,*^bV*HyoB`vǣA޸{ŗzGo%o_8Mgc>xAw6jv7?CϏcLKG54㪚,A L+j7(KaeZG46I} IDATmį^U4kue ħuԾ sг"fgi) x ~ca~,/sMݞ Bi.,\[8Zhl#R 9Q@ ~p,ZJkW=P!D g^'?(E4"1PJ%XX+Dq"cZq!"p`P-W CNsR@!(<ȳU*ʦ( :Xz1!J00>̋Pj@y$7>POT"\Ex.'GQߚ܏}TzWDj%]J$gb0id[ՓSp82:3eΎC$in"ZwQ77AE_KB$hii" Zi{l|m%Ƞd۷-;K8 ^ IOs.09LPE)d6Λ x\3i+QA:@iҞC TS CmE9F akɊE24uM[74h: PXߡcTňeYq,)&9MPUU-䃽 V: %d~#XޔMvB s .ӆ[(d:'^QG>J@t9,Dr:dnzU6&9K+dJ/1`cpppqfBp<,FanuFk4;9 u PCzL?VM7'kG)իNҖ2!>ko) "|}ڊoN7|tfx9euAʅI9\3MuDާS0Ӗ/Ҋ{!ֶOFT3ޤ`T]XT~8uL>#*:H1CeAa% ͦIy7(ݿ{MImʗ9qlE[o._&,t^2H/_7~۷o_d2aaaO>=|Nk^}UWW-;oƙ3gǼܺuݽ=F{ޡv`V#ڞ3o_0nWoݿzkroS:T@ມTwga9y*]s5̾"}O6vkA>=rO?_hWFvv}'%юhߦMfG\j I&in1y#,6&Z@ h Jk5 K*U*H`|HV2=1ug0)/Ow[y4܉`vgFIU",η})QB^ʴ{Y!_ T)@֕_[(a6;gJQ"`K DDŇGΈlXU.d,c突̅kֹ TuooFC0xODy9d~gaz3+FO$EUcHZۆ NzJ9nv5 X6Զ]z&!{RX+`!dwsKaOSHٮ' Nf8xJIҺ{EL{JeA}pi)R@'_܍B# 8(R`;6 0"󩖞V}Fv$xjGt#86uQ}yanR]H Bk kK8s_]~.{ϐWLX=*OvRu2ƀI! {<`7|cp?vDW]6#Ui0Z:ȸȠɠf,o4Ak* &MmwQ*+ x:hFK&D*Q-INLɦ(2Udޛ&^\D ^c OlH`:V{HXuf<+BYo"-Dm2zIN[{EWԟЋGZ`qw z'r MlM&Yn<9} @Q; 9\:02d^ӪEq :[*,Ƅ@8s)P0*7imEGi+&!24LdG}CK#ļ0}3^hѸjZ4mNGW{y0Jit`gyП dqv(iVJ<>WĴRj4ak>ӽմ[dR[IlX,Q&gaa[YG:Ւ9G8ũD = _Y-aغjj˒塴Uƃ ax屶RtB$Z^c/`@\T 2D;b@? Sҟ :q}c9 &8*Gt3!wHētS{d&'+/S_a<3LFF#ƣ阺ꚪ5uUS76ܽɳ=:Kˬ,3 ]R)ɄA2aM y=w< _}3gX][ckk{w1%yϴV5i/`޻>=JMxL]KY*E$ hCR[ ݓ@ȳyeISܾ} z-~nݺwxD2L(h6J-,Ü?{Oիud2ƍG#vy&$& /BUUP0{E__w^츜]~]~)RF m7j|p'Q;G 9q@9{$kS<$L(RCtȥp< bUVt^fP>BE%PJ@'nڔ+ʼn+P$JngyK2/ m߇Tg4*MLuQ b>Y)0kd]%)*%2R}=ÅU|ГI<ڠX(l`j+gChIu19JN[o<0jfH8βr8ssԭb(sshi._ 䜤Tu^/F~6qh2[: E31-޶-;vwõ`ةYQ2U vxYCfDYgY3 d INg;;m+fJT gS*2u¦m8 /cp_Y]K wҠ4&7xϱ֢/3r@AQ!ڣ:]aV?{oI}NDfԭg MRi>`?+6.~ä` ~0hÐmP2eC8CV]]յ̌?߽]i20٨~Dr9{|3LiVFK6.V]w`V%4m֘lsx19ڮRPghdkz"/u#j%RNix\Z卪*hu]r}xcDN'"{VVJ^2 Rٔr/1;Ѱ#.ch7)%!3\۴9{k< !.(l6 ^]E5%͋V 15#WzLvI'rK xC:@S|b3D.JLl1ѓ:>ID}(g<N0Z7-oh,6ܾ}0(YXZHL"iBH1CjAc~{~|ĺSn-µv؈8>>X9σ8_;^G ?;yYxPag3ܼ7/|vX>I=ێro/*|1!4$w<)_6m>()e5s;_["V} /ylmBmRDE |x#>龠)2<=ٳgT1{#=SOOO9)Dǟrʋ|tQF<<޶m>Z{2G1MK\1(mu]nW:GLz:/Ǐ!XhK'Oslh&SnւCs2Zb$'6 >$gw-{.K HxE2{뻲KLSZ}1yyێawN :gnXu}Մ0_"A(UC*4h +;NSr'?9>ˡwy{_' gkr:)j:(E D)?"))G{-o~KܸuוMD}}N@ES3()<4Ǒg9$G66eD97fzpjoDbԽ DMyڒ"f[Up!pRdߡ2Fզ4ďW$(Kj(X .lFy Cl+z D* $}534PJ죔yXƏDS$F~$G"˺8RFuD!K< &nT@pNZFmV63XW@1X#QΠq`( Զ:@SOOMækql00[̹vd .oL!Q8{k!Jl7h| 93Lm#UrY|b>gwg'fQckcz6G -/[^ mÆ2FTUC=h|t6ex{7DуٴjWH^Mg MD|IsfI^'(a*\jW9@˸W&i%; еN>$`f! (wtE"4D׈jha.,GB=!h* t-x@,U5nfԓwq}F|O#A됊wtŊ&GNp Ę HV cwc2z/U|Ir!m!(ł9>8*>y{fR6 (W&8M g!z.*kHuW/#he⣴{ j"+bzc&!(+)yX.XHE$Wa`{)`( ?~F)kC1t/tUg؊ "-B(ј!p^߫{.q8a>[-y >cK 3"E*m,TT:Gr1H=R> !n'KExc&BZ|7 ~Esܧ !J==׉K圏Φ8IBcƀM/\sSZKY<(71` `=\p(d яys*kxo|FEE#e$w_3e V؛U̚ .*mq˖Moxr'c~`a:oxy8j[6?||abg>mMIô3¦e ?`yz|fJ -rsQ̮1f͔fKLQ+vU)ve_in> r6$%ƨ$⧔y~ @8IEO "c C>u`tbS0Ꞁ:rha2p~wzx艮ش֛5՚kCÇ˾έ[|7 Q5??ͯگn IDAT9|~x H|j>zo΍7X]\pxx1)~/g)ggS9>9s1wXW#vٌ7x9<:?!>ݻZtHF#S}2WzxK`{BȑW]S~6Isܳ> Ht0\}h>âls*6}~u}>麫 FK6Pb[}h,tUzHb8\d$~y2f*6t9FOb|$=x:d+EJϘV>f7Ov;y3|.7ރxiq?}^;b8inqViLt_>'~D^Ia]_:K1RV#rJB ,:=~x˯SL'U2F\̬&eUtk _dT %oB dbȵMd;kI ,xz¡PWn~ꋲեڕ`ۗK+tKv椔q7G| /$ =՗K2%Ҿ%atALZfo])-Avf]sN5q+06B)-K2C]\)-`M V=U: @1֢uuvP9eL S^X_PNF$ҩCekOuJ6M윸Nld,Hd?,W4y-=5VRczw..8;94fQq'fF5Ā j;c$'@vT6.)棺9*kN"Jv-℺1{zcLu } 2ck L=RU$j%6"0rv/e ;Fr_ Cg9F焼 Rbd 48+ Fw ؼ>ԃ$p<`Y0n+I FOsNB>bjEڊrN$sZd$DB`GᅰBTlzI06Tp]H2c1 Y[U?+;on#*l@.H<&)_m!VOڜcB9zc|-û4}Zp`kߓQt/g 2ތC9Yy\؍TAxʴ^CǤo+ZP>eb}^C]Og'gw#owndhtwvO}b~K wܵawqpc;w}.7^{+ {G {X*{3LP5f2QﺩhΑIN*̝A$1đ2y~2+i^i JDrӬ@y=B1x?TKbs_|)!3R*s:߰Y-sO89;%HDt ixqOJ\,%=x9?|*ӧ..m9;9$S^)㋯4v\\ijzbybgpt|1GG\.yp||t:e`6ϵ>kVON՞fzanT Nz}ɭNд#)IY12[y_~1FX찘Y,, )Q}Ge-T">q?i7]Z?ogOjf_Û_z|w{?w)^{m%ОVt"`6nG\_x>˻v'WEt~F)Q89>$s1 oRWnM(m7.4R{fhOG }|Ѱ{{Ki*SM|B𭵰͗ep~NllB!Al_q`mV.E)q QNzZ>6I(TgrSr;<o~My罏x(/~5L0uI#ª u17X$/?w~|R-X\y|\liQ|F]qHo +Ƨ|qՐtpR;}>/y#'H5ے/ S셭reHnh s#_Az>!vI,7-LG@E)jR,W=%t0N2vA@)dPMz}C0HgYeBY9(%ŘL":\Q%W .IƦһ_ZCcw5&ՆHAO~}OwȺS´y@X4֏B! XÜ!R[b.q1J,΃a^]Zu$~t/SrCg` pu0 XoPҭURDMbNiN˯,̣#q\41(栝eTuM4k{*[!d^; UPIMIv(zl4 !zi& zn*d&v}w}^puUD) gЮ53Ețt7HO# l҉^mV4k71u'MDQ L,HD9bSUԳ ;{r'ǂkK+y#G^B@. !"G^Ea>yҽRRZ:EfS_,ԁ+A=g0P7u܀}^ϩLc.TbN& `qTE!ok{`-nܾwS:~twv-LflΟ҅w<9]qt kJe yON|\{l͝/ޝWt/qvwp+ x]nܻsZ/wat%/oQ)B;v˥;?O" iwk`ȒΆ:J3 U6yc3D%<~0 Q~Tn&y;t%su-13E}~wUd:{T9?gw~/w[|_oͿAV곳3NOO9<<ѣGG?ʜ!8?n&ӉpzvJu3i&92{: }vX8sӶk;Ml'OC>|ē'9>9go}|׸~:键i;>9=ey^[14uMLbV1r"++޽W[_~ (tM jq~q)]]1"TF}9??Ǐw~;ܿXƛo~|qmfsw{RvoeYlUR QdV_m<^D<?αl-6ՒBGru$euaW1;/[7&QEÛd6Z*(!g-.ZB@US2V1fp8Ii} xfTAbW]wceVi9ƫ1Hi&JxvjwG3죑u2&B >-.Zw[Ɵ&#k u\P#/15nAp%|ҵ+kЯ1?#%"6MΈPOf\H8y!0LZ{w%Mbաm!a,F ra [T1VvG5Md2L[#3̦7lw*bROLpoiiXZemU#b Y;@I1M Vy{]">R/S 9or;d`1 6~%P'D2b.fc˪Vk@ 3|11izbX:U5a Zi͙5{c;\_QdRyjcIE"+Uڨk4sv3zEEI"`jZ*Z|bꦆtt87u B5}Yg\vz2u}B;-` e>*o!8<"UnKH`<!tqAJt}ѱyX=>r?T.K롢t+3DJO2AEzXN IBPuRȷH;87c+lLY8nlUkx&Vؙ4л@`zG\<%EC3]sWrGp)'lxtZxl㩧- ;^#m{yx*J9==tEpg/{&l>lɓs^{v T`, Գ@S/ub0<"Ri0^؎K_4R8':oR2P/ c"p~_/Ap6B*B ({I}X9]_W,/"rI>;Gﰻb1g:`ms ].'DE$*FҼ2a難r1Mdcl\55R8715<#{~il<#\h=|X1MuX.Cܺ2ZR鄨T2W/~UG2]iyݷ܃%-l<~h(7W1e^FYJ%K i2xnhcjɹmw;$䵟@T$,}fdJ:f(d3)5MvE6bO!6C?%br3KN0V"srL.FgȲ:yÉi[vm g<iU{~o.H+qy\D]a$fkA߄jȍN.֩60 w^n:+@7NeQco,* @ĂEoƿZXOVv)8CQ3@4k5h⭣˂\uZT|R9DžsrPB0 &;*;#M^⁎`A4dc'zO׬"LTyt}*Lb}#Ay&;˞Wg1\۟_a+!ChWdj<-`@t\0$N]7Tѓj$+'j4`cxMM)*i1J/FHE}[׈ g{^ԇ1ZZCmiԄէ8!iԮK8Ŕ[xbSGgwrJ}QP^ } xp$y3[CR։*^9ļW#@c&7fN[H q{-`cގUGUe4@%|s嚩p&>{<{9*qݯ}I3osp2X:6YmytȲmQ#yueh{Ԫr,=ךNSϸ“ofs Vtp~vV>k.'gGWŷ)[ ngm!+Miu-ȅY!)X"P̛H)[iތ6dls<~67&ΠI(d{!ZD3x#@́8^O@9ov9̱OqNAgBO1')'A|,L3NO }468WӐSa[6N%]a܆BgNF=LrL6@c$F}_4/Enm"#E\(?`Q>^'9@JI%i0vVz\3y9 {S0B緈ʐd'e7YJmN@ AWDq9DFa{6<6F5Lz-4G!ET vӺܸ >k@NsSgӨ;bGi_ "+-lO[`H{1rX5,-q K,J}j{"tFUȤߊ^Ԋ^t6Z>L1=bTMg5֨WM218*ˤiF =}8;=fdZkV1.5 u>l b*Leb1Wij霺bEX\WYKQ!a_mVuH ^:;Ht;5:\׏j0vb,P[*J:$:`~Ҁ([AvHiCp.hl1`? J'^+<9Β]}1*ڡne/U{nXD-\i'T+;D a2fjC?E/)1YRD*$PdH`QLl2bI J䨕1(izb1r (,# `'QfVO|WD48,'0CW O6}dGP"B#OQ0vac:="[C2 ܥ}xx,Q>Yj㨬7=|ݚ3zo0ԩ (5JͺOxxxN;7o`cWk>Zcfk VNjʭ5kw<3C*TFwcMs~#H vptBkƫ.D8W`Mt8&p$0JdB'zV%7:~ې\&HD×kY- q&Waq,dK`lR twsoW[>K^]쐑t]?rDWu]]t`IIx[A}u{EQo/'ËڡNO;TxP䊛_ټB5L].˸q0jS(8n'k %W^fٖ[A鯼j^^);T'{S??u3xyfk˲rm9)) 51/|P2>=w)[N,pN^ 4U-Twidm9;{D9jUvܾs.5" A38 CE6$s&\&oT?OzgmU҇ng,#֗l,` YeęiGQc\kHm QVA5ѹ"s"[\`.,LJV1Cp1{Ks`xD4 #T(zF/ŀ-]a[mI6Ȋګ#Ѽ1Z9ţޕ)ràQ@,< \ G5Uo> MDB`Д]pvRT9bXSB*WUytI~9=ZJ=|sgROUp0y!yr`R4m]l:6N"{t Tu|>LcS!RԎ1`"z6&/jKUQ&Oa Ck(X]TR>(Tp13-"?-DgF>5Zp)o-Bn@uR%V&nK[6k1?$HO67m]kX\G,ԇG{{X5mY+8 1 7pfױMX+~3p5 yC޻z9R5ZiWvjv`>]"wbݝ|.ϟ<0]i;ܸ}+*+珞19ʱ\9n߸ݹfCdS1d|WC닱+2M _6k_P<3T ҇Y6!+26~<|>$6"b+oŜ^e3/eD W&$CP װ)k}[neYF|Lj m*E2$IW+eSyM0@0#m 2bQOZ;F/V)aOÅEJ|^]Kפ_u?MM~`r"7=Q[ȴ:~6(2^ۄ"lы6īdP3medW#A͡=sTK1u׷~F^#Ei:RJD<7˓ ::E- *k x Z)hH9ޜ1l:h*N]/`m L!ᄮx/ԕu4 S[87 Fjm0bbLZZ#mi2e\nnڞpU1Z_\`T [ѭ׬}aS99R@I ‚J!+`!2j?#mT^ z"!sŃ H"+S5W$lzN$RڠN.DbG׷8OoөwB*F$@Vz1+U!$\]u۫dQ@-{f 2;@ǚ}q_5Vy2=+n5}-J 8w612>&E˓)w؇޵:f!sI{w}qSLfJke]>AkUek"Z8?;;:0V.]eY֓ꚺn DIMK۵>昺VvZ+=D |PZ\ RRzGڬ3$E-u\GI׵XdidqN*ӹ Cl]U4i.|ٖݰZ.DLfMw=͚vukbhƚ"ҺJ)zA$:"6B"DZW;LjRU$Go6cl2*9Fu-&l]!6*J*gՠ<`('1Ǵ/ X[+k 2: *kZwT!y!E*,Z( Qo.AԤJ =ZK]OZ7%5XS75N3RWv#(_ @pS~:RVTTU^+1_s5d$MT5#tclPޔQ*JW轧k!HܱmP! s8/`CNwj :BPN7uB'ZuAyCCVUPc X>-}rJ OF r9?$3O%|ǹ c-_&Bs*v3~˴g`*n0; JCL*:E?F7Lpwђ|̴i3ߝs޷l|ypV5g:A , kkDnp/G4£V# 9/:9z`.U@ʗ<#w`uѯ[f{{TӆЭ9pGϹ8;gMTLg0Y6O4ŭg[_kx  {>fd;n4^0ön!Z:l[Mˆ9wťWSڝE4z"ɦG Agʶ-l8e1Q*۟<)]cA)KmpƍѫW}kr[.X5Ehs)LznA[{$B.TI)Ų]9BK?{0aIbc6h"I&FV_-ƤZ21"6kؚyM  AN ]*ilGo[j4b$FI!͠ r/E%3;KƧ-i|~-:F*28砶#ͽ\8-^:'eD`I̓Iօ/r'W_oRټ źo&m@a/KTyEsA_iK 9X+?#2aLwQ./27(RڵLHb` [u. AFN k3lfug 't=ߧ!Bh0)B76YPW;^XoNlsl ou3ABr}򢣪' ͜zRceԄxH7.` Mfӝ҇ 9Xf*ptbMPJrB{IY.0& GH #qV#Y' ȥS*X0sv9[O$j9,D}QBH|b^9J},`逍 y@cl4Fl|7A|0VmU JA9%xL#FǢޢ56w}ދ뺢=w.>A RFOd#ݍ\0N3({CHt14Uk5i] ZF*1IPjbUJh&"Wƶ9sΦ *kٴ+aM8'9Q3ltghX,LF}{*JX GHAm vVnX sZ*ju?P:>W b]5u5Q@T#!Zǰ'SÙ`U>$:gmqޖP +F!u3t@S+߻=:wuc7f/mb&3 p1=dqI(D.+7+h>U btG.qD&EϛT-6E@CzrCT$)*Q@Qo3=&T8: N9)Qa5)ªa D%wWQ:4N ƃPb9Ċ)nlAuE_"4W){JS?Fo/*+WXѻAUF՜|}jvrCSA>z=ηq~^}1W}6h|,hR1EQθzrۤ׏rD!)"D'oCV@{tB(.cy%C!ya$(c*8GBdCLla5&yvolΟq|v΄[wo0=F52б~a3Tܻ3Wv5-p]lqxhgm>|eʳO?`Ɗ;7yU>:O8|~ʣ?╻10k߹އac8sOucv:ٜjCUO=1 ۆydltm1+%TBl1nbzs ʈ c^A]-/L gj KƕS97LzϷ:o}^S/8$prry?d}b_p0co[o2Ղ`͌YǬRE3۫ N~/aw} h'7 9mXҹ9!X<6gfk2DB-cFbAbMPwXB]qglE(DEq^(pa۞xGooomgL=k۟FL1ЊuAa~jHOefx=7y3\2sߕgзk[;0C IDATw'=d?bw3 b&%l^C\T87_#6ƘEn &Uv/iTIҤ|qZǒҽeHui)P3ʼbY8-FPٌWYũ?d:#Ti54;3{cR^Vuٹq9,jÃ6jLU!W9ogG'Wf#0o%GI-dn/L:-sH˾~neLᜣ!y^8=?#aXDSʙ؆驗߿DK?~ww8y>swW/I{|:0A( qRiFŜk": 5¢ߣꆑZ#Nuo0DIT0hpILS:iX6A8%ʂz1K8]<]XU<֞546 NrPVsTup_9cφe(;?uZhmkƃ>w+1l_~Ι1>12}2ߧTwhW2v: :OEz STTN|J55594zӠjQ"T?B$27Y$Gxa8޾fZfjQϭWoF.BuaO._VƵvQGP5 #gsT)u6IʜƦgGH81lCB0#DI!b*T.rq=㪀1>Fwuئg/:BӵVDo0Kv|_\쳘%y< !x5Q;@>5툺FÚޯh@;1)Ӛb Fr2-YqxH&EbgE%h3˶CK|:<`DE_aewqk\5sjY8Z, Tup(RQ}~U& <FcY@\6~}ƌ:i6$kߖPl߱ҵNtᷱaYdgNuzOHT5ͬb  KS#xߡ-szJ2!# J6&&W jz97o!$ί<`j'Qhi, I0Q#JfR*(^L$sbDLY0@)^@Av9D(AseBq6gjI6l2L9e1Z1l]hbT9}p|x!ϽW޸I wq^vens`@0%!kjt^PFt7Y廏;w~ ؠMmVQ'p$32Lp.qmy''Q3߸Ε%.GX8âY*[8ڮ)>a*Q%5 b eu|1is{M-YbY BR- S ͢"՞cyK QǶq_k6˥G0CP4%3yYJ_e!a0:e ɷONO.?L+Q:(fV^ߎFnih򝟗Ӷ‡?3R{.褼;ۣ{e? 3n1xr/E-8u[Ƕ!QVA!naEX7] __?^~Ϙט8q#"&&um{1@%Η/Pkڐċeى?"l@@mAm1Uh 3uAR*s & |%'sEC=i.a3'>G6(hL.+hq_W^Zqok|'9wpߗ9<珢_ο6s2 {' "=F{&R"hw5,uZO4~l|\ےXGEw|+S]K8ah@«;E~72npsZGyя<]JD/"KMsnmjEg bHqI5 BGIu߬bb]@H 5= bfS]*KjwWI98ݴXw go9jfImpvFmfx68q&$}SĤLu9Z٬\`]ԡzz-/Rn/}H6!SIA-TtxP%ƀM;)@J)Ms@M: fro 88ЊD0ǭLg]6b,@-&E6g\="%w[l˾L8>̠uؚSbe \gD[ޠ`-1L/18 g(oҭ} [cf2x"z $W IIcr4*T Zrˈ(zOƁ3ds!DbG|1`+۴gC@Nz%?_k}c pK|cU"Qc$Dj\Le :&-> l{OT"& }7HpeeHE?7k˼2HU./P BM)V!bmp"'*[PoQ=""P$Zl>O^5!]J@S"f,gX[;&3ձHgU-dzV8Pѐ&n[p˄KJ^$0f jc}Q#2L?`óKDa9hyԃbddrNgDGjFrՁ/9 I+n-@'U[ RqZc"_\53N{ 1(="_Q rl~C^~~c6]Ǐ9^+k7:/|铧4yͮs1Xa*EIȋ]t>Gp)cq"rԕ7_f6?`wGxg_a`,ޖQ $"2Rq}\pϩ6Ź&dAB^b-TM@uQd>&ύsi2liSi&98=t*?>.`r ^x6?ۜU ]Wm 6>fֲ4vhE8bůq CrCjY1iu]9]q 7ؽ?n[o_<ZN*bP!X\SU ٚS,1Fsd4JxO{ԘA{.Ku{))u -p'<ϩ%cV2佢/FF8sk])Rntr-9d8uXZ5",2/G |ȦKF!I P/*JDCo縯|C d<1 1<|EoMHC<<h1:F?!S-ռ,4^ó{8O Ln9_=\e%*B N~ g8Eާ%.Ag\%n74lǪ,׮MӻfNTb~kܼ5?G7[{qpe^yo6os|ӮOz7:'G?!W9]zMN5 NώqږeA<_{oRWW8<`)G1/ c`LU$uEVd6XW $SFIYuCvc^:DY2CDwI4/"C%dqU..À>+]4&or7@T{p>_2kj1zV:"fDCkB0El2q0V @>_(bkKYSO5k1cVBnJeh2eq^`sF/QӀBQ eS紋Y[8ivxs{#֦{&{N Ap&a`Mv{2nQ >#!њH<5ϛ"C"ƥbnym|{^4q ؖ,C&*6O^:ȓ9XGq@ǐSZst1XcHEA듁\4hPO6FRH)nhU/[B(Qfg`lIMd AYW9}(AȘ̛5,XOF 0>`sB5G1r-+*,qX`u\db#-} "v rwGk Q2lhZFPl1#gقW^}'8x>WoZ|ϿÃ>/wV}ó;a)ێFLY>06;/yσSE"ȥ[x]ٺnM:~s)L!BeX?R*=VJ^K\>~A3VmM-tp zxs-fSW1P5z'klSakzUfU[6Dx} cUUq.@ :ႰJ$b17=ok2yT>t彭|Vړ?ԢL|l*n<ʶ\B7M~gPd#RBey_BEY(z%/^ҁ6y95:f$ӆ?'3ݘexϩѝnI#ƈ۽JۜcBHSNU* 8[Ѿ"S_yڪ zNAⴣFZ?$}PT Q%4$q 4X"7 *F*"cK%\d~](d)y"/`6O@_OX>)Ӏ͟s/8_g5<{,@ Q$0Ad]*W$D Q}Ou &c_)=d%.MBdɜʈEVz>cwwbc] q&gN$UUZ̈́z[sⅶ+GsY(g'DЯOb}v@ D ׮e=gmϽ|iM~D#B'1_~5^x>z?qgqܺ~[/AptrBJ;{TNθ/ƈ3 * k›oS1{ƺpcٳh?CfWY>舏>8dy CK[&rfM~+d[sib3Se{m?`5SFӥr?9}إ'^lyŭ`k1(c'Ɨ}A]tm&Za=Sna7~?SLӗe*(t=$?CSDxH`4*9'P#:4X:gNtQaBey6T? 53)W+BCt+.:0h c `/#jܟ~~kϤ " TL`tXC~CD?x>be}r\Z 0Q8XT>:KOoz}i$нlyoAqkEuB }+U;#hSН;*Ș38%DjE-w5S:cBL%*Wڢ񌾛u+5;~sF5IwJ,w~zk<{^fgUbêMbv{Mѣow1ֲ{׾f.bafG -]q> ڿOS|(KLOp ۴ ,u|ߣaI{=׮foolZ_aww?K]XӶgx }c}XlѤGL4)w'$ Mԥ)z=c7$ `," x/ C ໎v~+k+@7r`:u r  6>;$hqjQI-UVKD@ [t43zqN-Sj7 L 3@ɸHM4ͅ{1E3 ! d(qhy=kxiJV[&}5-?E]ng:>mrMI<kZ>Ӏzz *X0r 4\>&8Hg)$T?fUCc̦4g 1LL ׾q]/hByJ{ӧ/|s0[;/T.5 x,8lC8Gwp3vpٕJM32HmmՔrlKB$j.~,B.ʄTM 1yLNB3Lnx@|HEso$劼P׉=4GIVyL>ԉ6PY//+Fl Ma'i܉;49PB DĪ9e%u¥d24L{UD '"9B.wCT[u:~_w=// jl3X՚ ղaK]5LT\IkYzkM&~g'+(8`kثoh;1^;Ɣ|a:QɯnP M l ξ1wT%Tk;W^4 Z2\ה}Pf/'EDlrqYj+)ճl# v+;ӟuGVO7h4 Нn ƷtE* FgG-GN0^lwqi?{ˏCӄpDөwHkP+lŦ9~=o^էucS^_#^ŅH5Iw&bb=YcbЪ>QQ8Uc٩ @}u7b{u5"s1Ū:@5RE4pp t= ݷZ½?#dUҷ5dX!Dbpj/F+rc ؽ}7K2$(m }N g~* H(Hispu (g=45v%nF/5D oO ?H}-7 Y)&I,C}B htI*[~'ƧXiQ=>pI5"qc -Ukp`Mx6 =*Wq v}q>B:aƍTQ;a=J$BI6fvwhڔ2Ub?3:U=6nEiꆝ5L#rh+bfWrBӁ^uzzXdgqkvڮE]̰aI:MkT%=cB_,GıܹEzF|s#(};vT-!lOcB$bM,wOX~Ox mA^OPUT3zS1k|Y{b9#'àCުh'<.YNMQ l;fhb-4bgP.eUu(X$j\5`p+#-L2\e1W&p @}bpNN'3fk-mwx6%gQCq`y>Ӊ”~5V$U2SJ7՜I׺ guE&5SS,wXRjٌ3YB{1҄V R~{vv" j$;3 D08>ɰĢ.B8`MP*k8%S'Lt4/([J> V"d8 & S9|1Φ "]Gk }f$wM7{L>ɞIiGeU$+kj Z!X4Tg-M`D|O>@Mi.G2p&K\RTTu^"!(jF"fEzeRꉵSJᰒƦb*>'pidNsSDLӾD (21u)jy3 BиUDɜR"=9ƌ)黒[ "siS4^w ?DfZl0^_ >b;jx-ݔӧ*>ZD 9lP5MT`-FQ2JM;/Wg |?6Oͫ4u٦']•%?֛Գ9_b>{=KfMM>#T0C%:7skywX,὇t]ǵ{k{W~6??:q7?t~ٯ:oamLwdek(Mt2fcH4㵃˷<_sN(Lg-O6h 9+y#_Ѡ5&)Q9ܷ{qW%N8IʞWeY梦YShkBѝnMJ4T |LT4ҝNz UmM3z^9xWsZ _?ԠNNy}@"{Wweee9;];o N7?ٿqi"3O&FI*)#ժ:PA;am= V-`,48^ڽpr f"f7zN`m6Ԧ2-i-ʒ21 G4wUwA״8#cPYh`#J0TtJ=i'kM+8 s1{PUٜ0ntz;MkX2a$8bꤜʰppibq_fk؃bj詋뉢>r#> s5"GӂlPsgj$!T{$.6D#`Yn]#iaA4dSKde1r/oaHYvvY\Mr1s8BLzz(``%MѸ"4tjUCt7&Av>.}VF͔ z܌dl !7'[9w<|o#$!JU"R?m>+>F(}x.E LO 8;0͘P hr `s| LGjnxzbQ 06['`ˤ36vkna5giNB :2~>:BH,g"T4NLNP~ b%Mu 1>ćSvUfAiSvoR;ي3l| Ѯ355MC3h5m!pr{xRw1 QǼii?dyRU Gkٜ&'w񱣩J7vP'w9>VOaufg:n~<?C{k!W=#Sf8/QU11Vu[f wSatўv >QkP$8س#/j68IA NI.svզIl!J8%^3Qc|=H.u=i aJy!הop6!zFD,[d>:8'[%3f<)$H.lsL,#T}dI1K-6l:&5=ާRoJ;VJ%Zg\q+W:|~KkBv.h::NOW aXzNU4UǡJ38KњBQz vġl 2}HU SUQMևK*W x Pn\ ܵm*T6HGgA\g0tJh;T$u]eN\b-JIxa%v;dCf$8!zFR=B [ո%LJ')b9ā=S/GL~rd8V8z5 r^*6*E}@f~*+Xx~'Jk-U.r'F*QfMu.SgYY d"CL|**%[ &`/]'PU$#xY 0VB, bSUBUyIcL bBqq-SRKH/aM)jI̗wL2-e0f4!qiEey!,)L]|tnज़%ͥpħcގ)=像qxOVOPҧ`MvԨX?!~nqXhR4OI[[n޾y=="l{N} ?×~KwwQj>+/q C>6=֤He]0GwltF#w<ߺ\?R(){{WWBwz»&UTv+aV[Yc0 ->{*7^y7ۣbd6H22>XMzz;vc h_uLSKdcQq[lr4U9([ >鄼=~c^v+]ڿ|h`3 jC܀ KCׯS[jF gGurSYnCdm lN]_ e!OG#^ub& $gz-OS}WO[߽ujOdDSElt Xd=}>1)>}B~rgo3ހ+:tMxe:NɆQ EԃIb,9bAHMBIbD ; ;>M +W_*{/ݤ<_~'DlŜs- /SamP.m84aQ2ީQ}e*pSu }G=[LTwE9Ab1>S҇"%Rtم1F͑i[o4}2jcF<*!3q+tL?hAB%||s#iˏpY v|֧8*Wv_{ i*Gs!YI:er$ҦTk?=AG}ZAD+X1^ s7@  쯡-%Ėnc8ú1?!Đ7qU4v,DS#)jS3|Ӈ]S ՙ8adwqo8b:nu:lvwޤr>ubo5;_΋/q9)zC YDpܹ&W8:~H<]QUIuYFwU˶^=Yy%HM&>`K L9Irb xukBĨQq&t51e(`l; 425`'R"!o;9*2|SP_[Xg f2Fjsf* e(i({ ##Ibq#FM@.%Vg7ASP%gkJ@;T=[du2 -/ae2`felJb7#RF~3q2̴0-YybPdÐ晴N9,| P3DM@q`J0Ƞ`2JQ2:,坳as 1Q̥cP\v QuSUeKkG|L?'4FLsd]x^f1780& >$8UL]>nxȅ]8MNɗhkٙ!<7oWoGRpe+?oWxX^zf*"-Gg|'} 45-->V!vr\ߟGMN\95Z=;>{jǏ 5;re֮9A~Nxl)sl ҥ<&ߋdDrYv;B>7yV1 AQ [0C[{l8q 7\o~7$~'"2ltm;IqFҢ$K ~a?_3^dx ")V^O=]23"_DDfާ${s8q?GFD%+ @ Ԅeu|T;4if ]W!*.e IDATiXo6 tq[ړxp"O ]9H@(ЩIR"Tұ4KN6)RF(Ql vefSOI;Oc͖'Ba&60j$(]ج:Nx]tQ]~W aBnNE`: &>eu-89?du3~]T ^D ¿ nN?\!m[%,fH{Ɏ+?Eܢ}6O6w=o0ى>;"hXQ)Z=5F\<Z#^rko󺭈sX͟aH5 RwH,(&]g#eY {޼DXw<0Odc;uvw{>9xa HA=hriѐyLHL!@LF5FMgU!*5ɧ6s&Ovȳר/>^~K+խۘkr/5zg}_>_a%@6TA&֦IkK|8}}~kdD} O",S ?UGԷϖq>/> ygLua0`SAJgRAXMv { ϶>"E?~Oڗ{-?}̨$-B4a][/\fA915ztl%?eqH@i5}KhϣLxZ 1C**7Sqࡩ.R7riq jK bT0b ?7<*;8OBc G3Aa>cRW;I#7RT:b 6 }ПA{Y~pt.^79:'Q9JCcbShl t(w軞ui6lxxr;Oi%.O{M5v\*cpl`;ӌ)1 "FM.JiR.QjӹxL0a#x|ʔHcf(HurB8vn@_dr6ψ5}?ТL׼fƀm~eM"߾P\rxЈ]Mp6e{'Grr&1Qg?R2sa:f9xFp5b2H0 <?33mٖ2r(TH4 l893;#Cgbۧ_o ɩ5enF0y[-e,7y~(vbOX" "㼛ams"g6}Ph#~'OV֐y/=|/_UDl)V*;}N+&%a <8m3B=s/sƕt6M,._;u;wYW^W_E^Ń 2"r:>tS'әgxD~,Mx/&=7EE%y0Ӄ H֚j|xDH1I+46ӕ"t %P!$+Rbh7KNO[DX\"mhftEn!PkD`s'y.?Se: 8 ,T# YG3BY'ǫʍUhdy.UPGkhBA8iɂ=ܧhWypǙ%gc^rwhNbg5BFHX=,>,lGH_1k۩iEPg )Idv$[܃X_& U˭ k"?юq/6lޣ9ȏWiGy8W#&I,^Y=EY?>݁MMmo|&GUm &cb8N&!t6N kU")b:pZuzoθ7[yZg:c6&Q ֐_ch8T8Uy#t=NѾF\@j|΋= Nh!?F HL&}* ĉJGc"J2CML3frFǼ}Lx>QKw~g[o[-_ǻ*GeNkz5{ !I)GDR49Tzz T :Wud}#wwG|JreS//~E޷[㋀>/̓ӎQI;Jì4-1$y/BAW~_ItL|A cnor_!*|x Y\"9G&>jJFZDEBbCԩ~2zfn=?f՝ΩԞ5bon7tÓ2Iv3.fU}sr/,?Dc3(gccX֜M0/.oѭYз+$(tOu0"#Ѱ>mBX$t={NNr]튓G|3w~KW.RU3T]ҙU(7Fr|g'D?슴VJp.bIG S=1"!}O( /pj4fhy>*:(&4oy;ubŔhx1*d[d,l6+$XjL$JDIbYCѭv1 WR$g4`u{ &smKf ŇB H,;w|18GH;mvu͚ɒzM׶ k w3LK։Fz|9#(8pl"黪J@}8=Q}l)Fz2#63RGUqUG늳g),D#;eT}K:e< %b|ωUD>ulR15fzPWuNa:ԫ*lqֲhvpUEnZsѨ1*c jF׍rL]Jy1p3gSTNYd1灈1TPc*bUu ?PP6&xa6y#wgD5%!o2^ug0W >sF'2ql`NR#huUZ T\,RCaS9:y=iPЮB'Y~Kq7F= !·9/R ¦cfxoIyB35R%"Y|,_[ ý`ۓ1,YޘH⬪h\hI@WUuVtFj]#U;a\ݽ2B;Q;yџ fpqf٩+Nzϲ|tsT ,^?˵_^ 1$=V5/]as/᝛߿9.^zKW[fxl 汞ld[V.0I)d= 90g*Ւ_3g|?ѕ!> 7)Ձ(󫤜dAQԤ1bO*ٺj9=F=ɉκVXdw=,Rd*B4(JWi clNU5͜.Usr0qVVow\{Ͼ"^{n9?ZxάXԁw3nto%{FyUX8'vM9v 6r6kvٺ~:*BG ]ŪKƍyp-F̿/r$@Ysu`׀o=;~s0Ƿ:_ň @OCrAgP)J'+ m%t sYȽҭo2MCArRl[KnobW.#.vHӁHY;9ht7Vo}ӛoOh!eJ &ݻ=]h}@d {k%l%z2%_2p\N S^Ⱥaz!=f'@'c,8̵`H =Y!Qd!Wp3jsG>A}SUD}G >I}JA.kƘ0ԝb"D5Z-9Qd"a&u1WU 51*1Dk 9]hlc-"g,]۱>]bWJ#ĘyISONz05U ]us5>i@O]UnLR3D!f>X;: 4 ZTk-I  Sߌf5Bج]5LPaZf}[9BT.k2}s*Cpf#&aYU*ծāTnf`\lC[D>g493#9vژ=Cd[^. >hĉb3\<1G'JHE1e6EsEi!)'864&*! 1{TAKV!DR0 :3ї}I:O'{P0Ӭ3pIo 2ƴqoy7@|(G阤Ne@r+>;yx[vR)ȪQ;$+YH/`x}Ij۞v>*Q{4sPXI^6iX8Դg>K:cN**/8"#c=ƤwR"B>eGF lqsҫDt?d|ILQW_  D%3ʟT@pLΡ{q5k,/1aKT%)QhQuڞ#b^eOD\.X8ѷ"'}~?Y* ISc"35R :RIG{k]:m֙泌Mbf!{_~p.>ff3hr&+n9ƞӱ%)ut;h3Vj˷60RIgS4hR1"= 7YowUui8֛5mWAFRMhJH> qؘi@A;a]M'>M& ft@ivv.`l6+ڮKxɆj@Ze8k" zDЇ(-=KxED!.WF㒓>XZw$ɮRYu>Fsb L6ldʌ<:WAi#s'?߯hS<3ڠh,{ݶ3ϲG&m}T&:Կy` 3oV3fNqSUHH^B-=$&|%SS+&A((it(^1YO+OTz<}TNf JoOϊ'9W}US&)3EFLXw<|YSD^i7NҮV5] cCdC@n ڊaWUDe!lB'cBi#i yr0rLk jM\bqbQ[RD7C,oM E Mo>BBLY^RLIc}uҘQ96$5XA .IΒ' oq 9-ޘL֖W( ~TZ)sobʍW6#%VQ`m\@k|3blc#"0kDFkT&Dϡ4 O;4/2b r_ IDATcb(>4&JVCgMWqԣo7pOXܟjKO˷S0x)=NWxH@(o-)wǖN;_L ʆ98S%Ԙ- [DJ\ba,eub/n=MfLti8l4u;oEO9=k/ܢKdߵ@ Z)Q-*|#OkFa6\ \9mOo.ƞE#r/Q.P,wXh}Wpz1\Jq(JFgz0).UV"uӰ֊?O\9]ܧ)V ;\UѠR-Nd2db"L֑cHm1f5 x7fT̰OBĕEg{2Pn*Nɖ33{>ArЄ,(h6)ĞW?-Yx[E)CP3_;5BHu`DLtڏ31w/QAv]S{h %-}>M8'|oɛO1EoK8Qe2Us4OfC>W>{<)+cץ׬raLW_}[k7?|teK߷\٭x 41PHzCs/o'n:6nMG,ηM\ YL NٱWU|-}g);a ڭ`"T0xw&#=UO>d\u]@5 bQ,M `DqNỲ I6ד2.eY%aJ? m@yg"~3HE ec'\ q Ci-M{U)-%OƐ9! Z1ժa EnHQJTK@]g9ɻ/HEYu$+?l51GC,= '|À ZkJ4 6cYAk.GGcc`|Ju.ǢrB&=v@Q4C m5tKbp>Lt{GĹY ;sMfܽ}Hz.\ܧr Dg_|;|;?|Ӹ:hGaa}'޳ 5̆ t=nST;w+~ڋ_Vu grE\Z*AEú\ę }zsNjbù&J؟az'RF6BaN[f? 7iR!l pO*JSh sy7(nRݹNU'غtR$ҝ.m49;~;Հn&T 3܏=w 5`-MSq,$kUKf#y~77{e_*jc1QՎ^ߦ,Eޣ>2YJaC%V{ȼޭYV~9S'U~KҾav| H2P'#DȅRtACUsH:\Bǘ>@{VCR0[8 2{"E%qZxwSf?@3W5rSXQkI;*Zυ>1hE"GmGWx3Q:l}x\7 "a+Ym/wD1 /x}~{|;G-YՙĽD2fSzlZaHź۰l;ݚޡ̰I̺"nm,!T497^$B΁ηV8zCmP]̆FfNmﻼ@-Q{187Ǚ9XEEAA ('i.PD:ԤH;h.'4k&yh1FB6:Nu$MMc8NJj$J5z4I-9:LwR*󦟕+Y ɾ/)@d( GÌ)PMFu\{Մ>Q;#\0 #C[ڗ$^DǪ@ꘘ"PUM0hxMj &Tc P },`>=1`!LRCe05b YUPfF3QfMvY;eQmV+՚~&x>|O~x\XC]Ukhێ f` c+:cCbI.= ZJAC.K/2Si 4;ָX7hZXC#[sXp0;S:6X1 b2Cvl$ !^Rг'{HtgTW֦I st%m"ɄBŎ3) @}c^8. {H;slJ46M0L)L\&ZJՂc`L hmICEqa56t({biKJ/D #xulFt6 >Mych&MYbTK*;$5syJ /in TOsu[LI\D靅PUSڮť) ; JlDReklzr`uf9/[ y)-%{eF$-|cM*VO3"S%OsDVvQ EW19ܤkqBA)4esdӵVX1}a `-Nq0D#0yS$6}9 ^ƨ `z |?c -~wF UQRq5~78=:ݻֻ޺f\5f/C]f="͠lT-o [8N[w|7*SgG=]Qd+e9S`loɧU=r~Q+w C@dxVFHfg G~\;]9`oi 99ܹ}O>nt|bhf |~w{.jMEtg3|;`qǢa.3x+/]9vf9Cر skqr !) t xJ: Tc04ќ~^%̌anZxqB"jK |C,]7ٻ`ֲ+sf=IE  ]@{Գpu|̼kX4Հ 03v\l, كWo}ȝMņ@<4$%ۻp5elE%5o#O!FET!* Hܠ-~ՇX5t! o}!]ߐ=]u%qlij)|&Z+kZ `4p(== xγݸbW\8't]>:?knZCKH8ew9PBЀc |$fՆFw~j6vLs;\x)s*5KV0 T * hHtO{F$>Q"Ihbz_²|q6Sǔn3X'pc{F*b.S| | /F#F Dz$Nv}29>Ӷ=I1 &{&} >\ၞҎdȦ%0baWi+8\DlgP.Es]{m{ϻ); S1$5Bq_ 끮Je#hN:D܍OX!>vfT ȝ&|17~u'4Ѯ|%Lt4'+$ZUݵ̱ZAtnVuC\yD|YŠ⩝b휽)}P;Ovog#.k A;MEruPv-_D+ae2;O#u-h*FխD$Ҹ2_C!2CC!Ҡf fugC )ST|q`q QdMr~ʜYӸlM쎉!J9?{Q A Ql$uDJ=2ޛԅTOrAҪkf:wNs;H8ؖ^@6q#0e lnZ"5`:W)֢in*AaJL9k3-S;b;\+9޹5 cM:ԓxkv[gLrgpɵIZ\)" %sg$WCd< Tfs/ls]C:Vy Р{w"{P-\]#6ՠ]LIUfgLzI^N ! Ћ %\#(!q &[b ٖv8W1`]cXyÐ=!iWyOTJzƇ,wRUM$i Okd j*E/VdC|fߏΥ \̵x..wl3u dĨseZ @E N" HԠ-~m[m} Dĩ2ݍj<֒(wΨt?!|VsyO4: {+ٟkÇ[S/o\qSh7-TJv\1[X,m4dM` Dc d*GSè1k:d\2>g 욊wW,[YDC%h VmlMQ ) DfC<ɡb \Ӱ>?m>~:;{ē&\{Vߧij̋S9ekmsP.Tsbխ?B?!o&K1O +pYþ}QĎn-<[\ (qA2 !GQn{x#&:6seG#HcHi40cfsO$y#"3x>0{`/H4HQ%?DKLf>H& Hqb9vgz:2##2avUWUf? pVdqDq$7=\Ewnz~n?|ig{oq]>x ܻf8i m,*QHRD#B)y&*QT&xqc#|X p +i!m`*1tm D(b޿ؘ훝}"Xn?c|3Y~A$Vyn/#.{G{Ζ#E%J/V8m" k-L'JR !" Niwpe0)^"1nhӨQ)遾/KFOX5`y0-NQy4\+21ekqM.F66өzKKGoXu*_fE}m[ï IDATe$r.,5h[Mzu#,ɲI899R/Ij`9T"We\Zd=&g_݋=OUzs@D  Ly00 .jE#DeeS'j(HC-)%+4C̹:wև{K#qt<<+>eD༌iƪ+85܀},)hUUDJ(Tڡ66b4͟mBJ+P+2&N?}Gn|TӺkrLl#Ag"ϭen0nȤ+ :PՊ(2eFy' l,|0ٌskMh!@sO$ <Xi#.6=~#lg<"=+f};ݰߑﳮw}P]ƪ5ģ~{d~[0/ܘHﰶ{q(ٱt]wtMqFO0hKFVEű HY0g3$XTPN7}^ 9rzlQg}] ~'J">&ϽaI ,1W'8Hفo;NtCi?aK?w˼%9bPVY8N%ӷ{:<;T5IFXuDK 7/mG(+Q:QY=ω\iܒH2TE˪CU5qPLGY4c< 2ң;+֤YČnPHjNy@r$Il(n`TPڐs )$)+?no].XǦexG{W_dɏ~ ]o G sx30' BF708lh,qt߲\ls;):ltN;YN8X֘׃wЫmx]&q>m6vGLCn,pͷ̣1K)֕ZL(ac#$l?^FIDubvS{ W] USY7!0 ?C{\]my֊UEk+1VIa~WaoեA8g5{RxZy}F[Zw0 _؟=$ 0FCۧ'+ų|54-b9btc!Jk.u{W]&^z6X:)& > <Υ[:~9w$NB{%_nIZvzr7ֳ+V 4u=JfKÚMUv|@ ;>+s= /NuHk9k7+_EScL磏sC/=^Nx;o<ˣ5~e~h8K6%f}7|UQ S>%W<Y\Dž $X脻qa!J'BH {wf5MzđxVQDN!S8a-QN>D7׷DlݒALf^zboѨ)M4ƱPv$!:c$^=[kyuQ<ȱאuMu;9ap_f 72c ,h(lwΑipd &wHU,QMƳ<}? ܼL}3M"k?*u^_aQsJP <Ѩ){D7_" 㛯͢&yNg'%jTxZ=sڀ"Gh[G9/PE2yV>m * ad`mkb:yg#`êBU{r\-,$IüP-G dxڝyvƋ yN nzU=$㊁B5R=[tMyKa[= Woe5ӗѫs'.a)? _lnS 2&7NК6ǥW=򋇄p&GB3 (196{Oh[& 8prD/i}C$9# Ǹ51ņ_p/p P5&\0$%%]h -Ⱥ+~*C EȾߔ07`gBu@&XF>n =I (=ۢaOn$O_yb?>A AӯegU0ܦNp[loD}R=av\Ţ|kwpo=Q=lTxE/(9G ==kmϾE[>]>skyspX/^I!ϫOx@?4c% :{WZ#Я6'>"gX[Jz2+&B_~'8BZ 3Cev֏nPe 6=}ƒDRppf(2eh0PR5Q#]uAw7rWE{{ ''hay4rխYk lqY-uzŢd>z{qall[ <#B~?O x{3[l9B։a&]3m1ж]Hs#6Ĵe3 M Y3;>b`Vt Y ETrd/kȹRQRH*F@@ő$D!Q܋^3p*"yL|NA*{*)E!,h5}4J3p{dYoX]L>aST~3ݜE]< |hljS~;lPUD=KQ^n+KaȊcVYz?kbǭ&r1r2/,#0QJ8INwҚW[^Ɏ3.c8O%_={C!*m_JZ=|{wxY7 @89:ֽ;p" Bi}M[oYzp1W_ǜlAZhpFYEy{z喇3eCh,4Q HY0@(WhJHG(F[1ܩh-Xs$Yg"Dϣxg" -s71܊ cvd+$K?p"BJmzWӟeB{/,tGA0pڱnv(]EN!g 1;'.*۾>"]d{&ݷ:roI[#d^9c\Wh~a{byvS іMJȞ6Xo`V2.QdE7yI0#7'(s<*:ϲKrXE IDATIdqf/-B,vNdLy;H킔[&"xGgjR(N -gzOK]s618_io*NHٜ6-1f䑂uTکCS2_'Wc+Su⹟$"vj7V\P0F;B jxԓ9kk~F ;C`+PI1 ;mǜ$eZ6Ur͙4Dߤ^_quy~a۲oPh 9rKyFlbTqHCKL!`x[{?Tl݋66m.yO([q*!YQq8:\hlH1C'}(!B9kl?e9KVT^+xVACjuo+WǿqR@;-yK٢NtlsKun+y\ȑHFhΓBNyPi:D% X hӽ]I9m֥n{۸IU^x._ڗɗ9;;/| xq#ts ?wrzX=WƳl޼WӿqMP֌P]ve1xYF;(kR2Uol'%fnCm'@?$Hh:EInX+ԥ*NxAaLⵜY,Bj /w;lxojcL[>*zcCά\Rb8&yU䅕/mH;_9ݚ_-ރs 7|;w[^ι1A/unw~%q6iy^*'C,V.5t8N|Kb#9H`%ZW n cT1?BU-deZ!b`{u<(3#ë'hC >Y!l^)?Emzp"|GgiŒ%۞={,i4[kq\GnI9Ա|HnK{W5> BsaHxiW5sfșC)Ml*&^x)78~*?Zs9yK EG _UmBs4\XD+Bpgrfq:ǀ -z=Iu H3qCn?yϿx +0pOw&z$?c^_~;틤]Կrī/Tȇ'dҟ&.GX"p097K~O}wl=gme [\P9m<'mY5rU`L(9_T>];D}o@-t?ҧjGaB;&-}&#BI(:Вt&]W$$R$~z%89*EBτ:b D#nc@|(nrJQVP($U}ϚqOJ8hvlW $Þn{.(Z}<,D$ q* R_Yϸǟ?3LcDUOчpPQobR3fSΝʞ^.Oα?yP*EO6{>3H(}S1 DM)A a$q6𡹃Y{>|Wnt2Yޥ 70=A$ϛaXEfk>b=uVfu~;Oq>hB0'5ra[B&:󨊱n^HoD;7dfp}<*+j˜%/#P꼅p&\])኷O*^NC@d>6ٹ_B3*Cm,9]=SX]CŜ8$ qQhgIHlͷQ f1}g~ '-('d)rL ȣֽh@$[WJX|Chh~?.R|g5"VGWx u 31rV-V=P=xlu_͌cǬz%O7N'X_U 7vJ+$*7ոWi7>AqOyb(}Gr֊k\ 5V:fbܱK[,rEcAo,.YxO4rz1Zʘ8Hγ@~86)ruy?s=۰ZxB3 LMӰ\.ڎтժ|(e)0fXZJ_尣qS:U^x}~x|4c*"4 d؋IGR#[Nc-JMc^5`0Z<ٗ !fP@r@BnirKH 'Ć$X5;ZZZE=D?"^ /ӫ|zdNKY#N wtIm@V,}Z:8ӆ/ qB_AŠW&O'EԑJ`&b!'a]߽=\_鈐 kb?̉ sW&?g5/#?]Zʿ8H. 7tΉ}|>xGՓݞב_\.xҨ7#>#w0{(R|)^^j:Xu{׶yF+0cZ;M '4s~CX,ndد"lY/k˫%=WO@O<>xBwKCN"' "a-5+vcrq$6Tr։sMG׮a99 CPlGи|,zݰwxt!lȔ|38Ycs?$ $-hn H*`$$8vQuҿq˜}6*x Pu=^bNUu3u_,j|%H) ˁ %HCDSKT1iFvMzjeR4"e+2: 2[2To@73n@[dg_rÎa(;<ph܈jx<#t0( /5_mjѯ̓>)٬^],3~͝v-/B*MVGB0~3YKDPbu"t1ټ\tx*Z2ԾF?+R*QJ "(C18.vji;D~ V $0X}6rmZEGvOʉ&x4g|hX2u;%F{Jh 8hn4BT#ưL̉c hmI<8%A)2+ ڒ1[(_`M[4?,VN } Oͮ&j3!Pl Q=C3I^8t81Fb|a;P9Gڜ^y4 ИXliMJaяsqO ١^cD+#Hp0dy #HR {NFr̀+g2vDɭ|dhqݲ"cj}3CR_2kaݔ67?k8\j9z6lE߶ƛ_pk5ߐ > rq?ΞVUM^]'4a4UfњŢ -G]ۚQT)d'EUq1#4[_՞۾'jcxjvf&5D"ޔbtwɐe! ww M-SS)iiW es?Ҷ]/s6v_Y="ѳ)8op{z88wp$Z`bܐ C %L5G;!K01I$(:CnhRK;Bji5vzaMt]C6db9~@5wEǜ+8ڔW.i6GS. !iZ%/R6ۜ/9 & 9RB"筂 - =!:QSbq$)ƣWi{3퓋L3yw#| ,LQap.Cmϐ&w-tYS:HWtڌrXRϿ?#JDonym^",4^g %2*O>֥*fx˷1|c~{qU,RMs9۹኎-~}] /_|oŋrdQ$;吙L@ll=`E`?Ǽួ|ι]9j9]68_tE铢Ɂ?~1ovt"3}NBE"*| #Ɯu<(*@J(wMZ6$=:j;M:ff4Y))2)gJ rN*#$@8Tf`^7Znhe˲\*h;fvUЫn2ݧI՚Պkֿ~z<Z.,Q Pʡgk;Ш#q8 iAZpԗbG%_pm>"mP$ۖ7#VOq)Oi #grXgg:bg`t@O٧zUVL/4ж E"֨f%W,)@W"Ы&# IDAT9}DXu)9!>8!0螰O8Ғ,;\x@4(k7{?b{qCrx<ݰ!8yIʉ! [vx_li77"1 `e{Dp2 ʪ9I9ze6ľd9V N,clw0 G-9f$Yw 0nF/ϘOkJfAdX'%W؛jb癱Y֘Sver16h1gk "k9u_SUHWJ|KXA4Mˢmiւ-q-ηඤ Q!3TTóJ ;[\|irPx kQ:jQ{cdJRj( 9P1) ;ױ* UpnA+ F黶-j~]Gc.γⰕӂ/ZFK.iEaQTc*e_MChZB@D6l6XTiΙ D{_C)W 8{g.,h@3d%J! 9pPoRtNcNcHb (pIё9¹JmsFע5⽲uBٓG{ndx,A-h2MMJ-vjy 9'sxiqu&VP).).UV|QLFT X>VFLX:&>NɥEq J2 |V|j8?I0SڭQ +C`޷'_UձD 'a:հܧORMc1:s7? YiYӳ$s*!.SG.sSuC=Ey:OY39q&eY;?lZ?_©M'>- ?G\ܙ +!vw!T~{T|! ^Skᮏ EԾ71R?9d|_\s`c F:9FtUTOYcv[A}gs1qhZ'UQEgFu>O?}zm2Y^3(a%ݵH0-Y@W ?sϻGu?=¶8a;4ƙI?X]ݘ_?kƧ ^>zvHZdriTϩDpEGX:X:hU"IxE}bZXwEW[y-ЫX18"ER(5ř!=xA B<4*ׇ7傛tkL%F JsszE\$7\A^dG4q:$W[ݖpKګzs{+3idܒV@V S) (/Q70HO/eTs&C^ܼM*pWH{6t5w=b^@"NAiBdGgLɫ/ȧIW7}޲2e`WVE^w.[0Lxf*qgD=l|im^Z|;4yٲlsL\$:uIT#h(fqf$![ogGo]ͭ?/oe% yӁgqwƃ7~ENvtfM$ɭMhPٸLXڤ>{\)@]x߽}}嫼!GF[0ClMu3~o[:lѯu멼[7N*5+TG*^$NC7'Ro3ZKC^I9|95g:GDfzS_ թ\oNvx&gSmב}w`\Gz17yO|oa\U5kxZ%oϔQ <e#!@oh8ýVbdD8ֵ7`.H(dZ lXK#\ALyGMex|98{//v\s=wbi\3HK$HF+OOh/({Mt)Z߻s6m@3*m%"V ,HnpcU*)eoXX9#fQhP)dwBj!$b|=r|*kyGB:n/%.[yɗYq!8Vu$iyj8nsƅHnY¼,C8ۼѭ ]ϳO kt!CT-uv붌MD@K')΃zf|_}"o>G\7-¾<ƿ5r<oJHI%N~~-:u}wMG/ӝwlR)+sPj}(sδYܹv ~Za|w|ዼJJBvH*(Ʀ=k<ŇkR_Z/5!)TlͶkMT- ]䙥F+<QbfGr"o?.ucvH:j\Q{ݻ? ?畣' d}?= őgxɨ˩f`'+7~#w۫L͛)OHoqpW3᷾.On;;n,MI3y&ZUxM}t=R f}>~5Wmi~g!VAҥ%N88wtFg`Vhj>;*{tKcS׾bfC[!ޗbg6tX.h֏XN=7=?.v 4}<%-9YbMOjh\b&4-]7ds+UkMˎP]d!V.sfV$sODXn9Z>6 mbNhUbvݞS"=1 1fq Q͂eku\6O!)Ic u3+f%I^Q!6X&3P{Y#&5x ɍ:_ &H9 A.ypXeؔ#PT8+ y`Vb`дGf-MDQT\(OL"Cד-)^H݁:YaB[bs_F*Mͱ5oaru蘦]/̛Rf66< HA<1^p "' ,ZqMXC>5|SN-uhY,=K@Ӏ+>gV׎u Q꘣㫸FJ9c꼉ˉıV|/]W,e.nEg)ÆE&8ygR M+TR191T:oP:Hs ~F >hu+j? reqy@"θE EiQE<"Bhs7Jm)뇑d}tIJ]XލؾhBCZ۴ny D+QE 5)s?`)Ʒ~9%%gF$a!9b %GY#]xh{4?"r䒄u5ϟ}x+aiQʀ>JnzqK|nlh:~oϱهE>iO3V?s^}u_)?rѴf8F{bIK֧=? UڧH a|%fH9Nέ٘>-tڈԂL BC~z%àj@κ v<}!o?ŏoͯ?> &;+)ہo<nd K$; ҕ;} L2o7ȇ[!7.2O@W>~%ziF;w|%+op_qmi< |}}W9u7F2/}q~f9ߎbA o&W_gy7s+Ƿ?''"}3#\ r[tt!{Okm=a0~uFBIq8s@p m6~f vMmX,$R4aESs&qxk qOEs¢Fh caKG-7IY/6Y =]̨daɺ=eݶ4?DIaQ#A9ߦB'\vBVVGcmjU p B Ɯ3*8\4Jfb(V7PT!13ݞnKLVQsh Jh%Xр8e r43&K b*(#+մbޅqLoa5O['s\d8E!~A8fy|XIt.@2.J[Rhvlߺ% ԧ0E|loP!H Nii- 9%H;2s=Vælf0,,GЌA`|hs4`N4 !bсT4Zh 0 ;qDmѶS'p] s9sN(zr9*e'g%:ۃ2͆kq-0_'G4O>D?uωKEbŸsDU,jZP!Tk7˹C ،[[>ZD$ @#Gkw?  H $)gbJX|̹p9 & @MRQ ԑ NNi *MFZcLmT}Rulx]`+3)6JNq|-XyQPs5=xNzwRG/ۈ:֠ W;Rc3Z<3a]u1F$շl g$G;.QǣgQh((g`{^& utWqwR#&y};5=~^}?xkfl qP4$J|{|Bf,ѯ 'u_׏ߒ*m=aU 2ֶ>St7K U&*(Pfpd2oQle+:nƍxnւi RGe•R?DE /Kڪ tP?+hκf`ևƝ;E=V3 :0Ӭ"[)ǧ,YyfG387Lʠ2EDb"&vjr:6HSA̟"CËh7xWCwயI NyJ Ein9Dt|fGd t^>6[б2|x9qllR՞37[olo北`$\Nltǝ!ѹu ~7!Kׯĝ"-8-y#z;#VC:\vl5}zG| _4$(2o*`y9$_$8{LrRb/޻]|5u(|p㍛~$y;Wփ}L,㎡inC.oNL_*圚}GRYYwo;ڛom%tw7n?Cu-G0/&=۞; 9]%-ZE<#&{~*͚rqtݞvln8XO ]w XHDӆNr ,)xI`'Ci_@޶x3%bvRl~߰iBxsZ IDAT a?|MӲl ~j9a{ rX bȉmNa|sT1 $lZ1ɉ'|CT>Xz¡3M+0i2Y:P1B2ì8l[C[|P4;TOlnS'tP=G)1PQTJm@:GӚվ/=J˜qj 9 >,W.'f6qMC`{KVªӹ_5Z*sE q:8/J]얊e-#58Ë ۪Rս'Sx)T ER$Ɓ!l\tCF'l!25 ``oӐ2Dhe%8дV{1%sZ uoN b93Ҹ_8NƖ8o\Uj.e0WLO(^Id#Ɂ44hr&4Ơa-DGj"zRӜ-^+^Ym)zƔ"5htd6qԞ|oufqZ@_=*Vâ!)J]68HƫUQ)ڽgީ\I^ON<SF5Dܣ:8g2䝯MWUc{q>eT?ϥF\=Eaeu\"d$Z8z?rb4nZ#~j,c ԫ-R+HS}as&$!ыs6 $SuM`@B3]JՍgqVf|Z(;xO MqJ@6B )JFhu.Gę"m;$my.^1ӌ+m ş THN4p.Qq<:|-?Kn~nQ>_>y28Nq9#jI R |K,OPX8UZIrpx~ƹ3H~uyd{ r* &VN'Ӕgd,Ƭ:zRH$^?{W|x.WkYpoرL9: UǨIr{%Ӻ*T*/<ߺM!WZrzq{-2yʂW[kEК-qYȼ1/=wW?P0F'Ċ-l4bsΕeVF͛irNT TlItnm%T&_s(i~Ҫl?05"n7|~LJra[ dZ2#o}ic9~EyGszko SZRg kdդ )P ǘ7R7u,yϝ逅zz9/#l{Eޟc"͞7kWVg.qXnԍ\ DF=Ѣ(XudR#eE|"o,"̓[9>F:1%Ca1F6Ӊ?8l\>mQP0!-b*ihdqjKnƂ-Q-xF)}+5M.PBKU!!Z:H"fc W*+ u;WղGtj|#M)[]?ѥq&9۸H- UX8w89[Dw ,WTxjU^SjTVa; FZQh1Ϊh۰>T0n^PkS=cXx8)ia~:PeN/3t`ObڟjQ7fM6D9dء1|\||/Ulj̠2?ԟt _~>&>.Z>):}6>JԎzQˆqa֤EJKN2ܲ j|gp|uxA/1O>owkḓ_=»{$+G,=Gyӧc~Qs.K6l\C!bPzdK d\vݬ@vxe*'pX=Ugy픳g\^lpkup.hKx&r# +lolv}V3gs`q,#[?ZǧoZp#H 9wCfö}ȍ"7hʟ.i uJBpJ=k~zW=LHe]:ߧozN>sOyҫF`;󣋷b AQ2H:̃F}mQno _&w_{ģrJ\qp1wD'RE_{߻]~W9g7Ot=yX~j#?[/>{oV-+pϔ+W %\yƨ ?{<ԚU3MĽX ?{>T uTR3[߶t3O gƯ* |m ШX` Y;w{l%[׿Fl#;( Yh'[v 9$s&wG=)>DG. (4]"xr0 dDL qGQuvA,Qf70ùExJ58׎dU0ZX7튣k c/~ZH.6lwD!}-AhZ4 )Fq&(li;)'`~l P8$U?lu@ ['hrǛ|((SW ᜕!Z~]=@qm nNi4:t < ڶA(N)E Œ]JY_j+Tڜ, 8 Ş:DHQ́ZTn3~Ψa{*j98ׂ!يǎ664{+n: !ȕqoʮ:a\Z\ŀH,r8X 1vC M Co)%*d|}麎nߍvWUf0tSh|9Plp4-l7 P`v-b5w|s?`daθgw7{ZCuMնqCدl|g&w|{O'k[Γ6SbǻB/fg> [@9`0A&3̳2Z=Ӧ`Au*i zH3/漟yv/iПZJJ=;vMI9-QYEG w=*o: ^ _:eȪA>T=XV_'3j(`J)g)8ʠֆ}%|dIQд*L/^Mw-]́ 844Rid Q^xc4n |g|\j)Y O@ [ԭ+p7z`gU54;XII>9m:&8W85q1w $>Dzip-ӥs[h=Ng;®WѧOṛf#"8^H%<ɩa2 %K7kc]v+|ixyCK7%<JZ=;q|7x˻oW5]MlijUgy/į\6Gya'E|K+' o4iw(:#xn O-J%n#7?x+/?+/Bt2 _)ţo?x)$4#B>;zrpOX/_&?gkܟ}H'">S[ k%w!;&QSjhUgC{JqEpJP$\bru;BGߟpYR 'F# mY.q K$WXRԯ'Ɓ~4(-mXYF&a݀f!nw/o3D%K݁k,0jyVǜlW8#/Ç]g?(c\'%3 &Xtl wElZ2*>ZYZAE )zKNF@ ͣ[-U`}4+G(:Pa@ 3`B9 ȐlPF+59-4EuġF*[F|htCƐiO|:8 xipM5 &jy <c4L[r @ )/ɗ )1| iJ*>W(SJEp# 9n׵Ϝ,>kWY.W}NM IVUd ÀJ6.~(\6ߵlh Z)؊ƍQBgcօ9,oaѲZ8i-}O ^:5$0Ej@l{Pи M T!R,{]~axS H~KLy+\ S\B:#>bV7grlMkyhL7mV ޻ G~}c  B2lTUb S='#8S88`K94HYRKc6b"Q#givR6Z̕GĀQ1L2OH\+I>Vj%87r(qӔby/{C;4EfH9GѪX"љ@1a*R'`SX&tԢ`.;jeΙp%zZQhG(Z*uA!W)R:``qE`*BvԸW@Eb*W!;_g7b~0gTgQ-*XZ&~\3}̬ĨQva }>f f@e`<kܸ^UsN[QhctIqq^U0Oc'FsM߫2a4S[DPAE_K_34D"_F^R6sԾPjͥCYXy]ӕ_\ݚG1$gzEF ̝|!5n/-zJϲ cߡ)BuR2AT0rRi flܥ5Tײmq桬{{wkFִ̠✨R:6z S k0=˄XHbf~=3(;i.f6Jkb|aYur17woq}j{3ށ%Q-b[%햇$!o<I tbh˖%QEg^w:oCUkmGemk>F4+X5(e*v%kڛ3)&\ m[qZlP QtJTjWMU?= Vn*EPHs>xK Ns`_} XJ5'9C!܆)I> ࿃#u;Za ZYyQ~xey!XE W1-CzJn8xfDGa=ѹYyW48-L=CrHG2XÚp="}k~gfM'LJ)͚W'5n@ЊFEyei9Zqwq6@:(1ԧ" =}󼿸iQF( VFo=tQSĥlN<{gcG'jI}؝ug#k+Gܺ7oe#ol,IwN7q.Qc۶׺Ot 3>18x{s@A+%UTǯSW^{A.յ09. IDAT"l}Q ޾RX l`mް` 6%UU{tbSOY/t|b>Q]9Jal6+6ZQRO'h: D(J:1Jh܆i;G6xߡ4%Ee) s'-^ZAPbx5t4ݚEsΪ>c9xqƢ^Zu6 B7CQ[LDCC#-,<߰ "PeZTT.8AcVQ=OKD`=bɑkIf=/y7mX8ƸeEzݦWe돸O.b'0Y]1'tkVXP9\~mLb0>t9;.BKwB挧h` 2i dl(w?cp=l2D7TgP"cDt9>Ek,.". tx7F<..:y.ɵC;)XYeB8)wxp{sw=Zn7!kMwX׷.fZF_.* 3뺟K18wz U*2>wju0W =5Xd'`Dw̓J}KB?:{a5;E7VsV\5JE>s<$`عж5墿nWׄ&b-ݣ.?r?Da>匨2I(mZL""hX-9mK۫wW<47]3ў|pW R4CPBo#J׏2?7HY||((LepzC-w\C+vXc2x cɷכbO_|cԻމk(Mxs m-ګASe"h'V#EGQx N؀0Ű*sn.!V(}P,UO7\zBЬ>OA_koW -u<7~͍i;ӒiUPAVyy|?Ut6͐ՄKe]F pͿ{e&_"Մ.gͯR\L9?fzT\Cx3p+D tݣoB_g_ֱh[C @5 X,zxuUhۚ0Rw+-PTtŹc4s KB ϡ!PBCBR8&R Y45Z ` /)eM P1>Au|sEs̺>^ҸQvxqQ *QeAYPQHaPrCULmt"}*<l|5dd?ȶزIR6%ދ"KzgAvHfAmr #!7)8Tb] 󠂠Ep {){b.[g[6f̧ 5dG~Fi8ɶ>3w:!y.3֦]hcijlOz#z֫cs usH"rS?_~f?FΦJ`ӳGDW壅3;E^Ԓvkǎ<'R ;ZN7øJܟKjI1w!t_SkYS*!$-ǞBG\R̕ ~.`0x1)Ŋ=Seȍ'Eb"cU_eV`ZE1lQ "E)- 2LU"LzjĂj$ol8&!Wq X&zPFD ':7dmLMS&qErq/S6rl#=٣h75͚kh61:UԎ7B,d.l4r,d>`c(g4d?z#uވM*&Gz!0p">Re',$HLҺ?lR)1!q=1;FNT[} hO%S&z{ɐAY6ekL1:G/S ϮN|q}%:b2^Q3Bq3_&c>8B1O_3~ur$~"1,;|qk3[JՇm ~=c%a}?Tcth;Y%Q0R|{YtJppQ^H9c߿ëzŻ7wnppxW\vcW45^Zny*&uf!(֮^WR㘨A'n6βR㑉ZZnPt(btE<>X{FyI-TVDs2Պeko N 'JGI͙3i5Sx,;x՜v1z%<9uT60|Dp^sּN"\6&crt&thD.wuEࡉc=Kg.kprL*xqLh}le8=wg; Ŵ䠗RT6}*VШ35Pp!J=zV&5`Q[]}F;V)R*kF9uLIiKVj59{H r0Y $ _J^*8q5T,lGGt<*u#:xMF,qB:}kp*@wtvPJU,$!T/=P >D}tfHˣQJ~az)N Jх@s 7oQyޭ9ͷ&35~zBm`$R>}-"p,4EqgA\\[ e:b>N(F%`6(>t0BZ /7o~)%:ޚ wRK%gQ7٢b06t(8GͣwXu`0肍%ǽAc`Ӹ9[ϟ3O:V 8xc飂| Wx]PG`oטߝNY7K؟U&3c4ܩ0ɩ7nĕ1ѮVQneH` "hMMxk|՟9½vI үPo×Y}o_Sb)g}gӫXq{o}eE1?p5Marд+6XX (,=k6 lΧhZvbfϸrx^|.rCTfF8P-*Ҵn5U3bhff{a:-#0Mm[\h\Ka )cr0Eσڬ8]sͺ;'HKQ`Tc vbNUŌ"J- uX4V' AG.x"4m"`:u AC9ʒ-0ڶٖ&bb-EJzFI.ly<^\ :jg!с8TZ1R%+g`$JX"ah(6ô΃ŚϜ tۊ¦@V hp#c Fhyī EQOǵ-5 c:VϮG!b=h" =m'C 4UZ;;1&vHCjo65],E5†F&8\"")^"ck P:Q?Gl21ݥ%td:fMZlG4p.+E3sč| tNYM̡agvM}LCTu ]['Tw?.RDK4=~T̚H$=yٺ.'xQq>)k*)#PHӣ>䅮u5]'m[t6;JT=ӂȕ#!*fH-P((l6d#KeDomĨ\RѹCo<SE5f`R*S(cc_PvmDcmwRU4m p-mD ƍk4f VlaF,p`L)էWDS|}ZBi֮ 57Z?T"I1C^f5$XU"|7LH lZ*9sm\""S߬٫=*'&5zD%Z\gχ=|DgFoy-l_"Z';@E5s<5:Ug XHf (.Y•ɈP-h4Fwo^6?Ijx{?D{=>uF؇^3*sM{vݯ#m;^|ԓdiS3Sxwoq;?O??<ģ؏Fs5[A!M;ԡu.JXxf[*_DiJl+Jux<<3w^v72|PƦF#࿼TW3^Yj^[^q(u<3gM[75%t͌/&8 ]|PWU[ޫ ު-_ܴNjYWZiZ~7.mbIU`xl:+ <^44'nCSgWܼ1fƛkJff·O'w~NYIOngl+9 p9hK+M2j$`m`3\/Om|e,ρ?)e!- 0D3AhJIܐ2f" #Iz1V1Qlп>d3V@ahlK/|w#DOtH+h {NCh"%cY:Q(-t#Auг<GlTXE Nwۘ9M "v-Rp5_w.sѫaP 2Q$?7BlO=<_^~^b:]IK U՝c܂)L -bj% <%1:֬MX"{_)JU1jO'`)SS=D>?gv|,/`ΗhTY“O`~5^1 RQ* B_J jxtqHN (g)PըnVtN/WwXwtX-eJ &e,5a,(ʁ5LmjhSl^zpX;,&XpeS/ibn=6:zɦ^Ӷm|hm#޶Pa8,iesrsrBidZP OstKPU3[2*}xOx chµ-jBCZi#"fmCH9:>0\KAeSb^y#cpې/""1K&qOꈄY 4Bp)8cl̼.fmHJZ1vH!,o>'8 SaFEY FEQ1bBmM1LES%ki5A$F |2@%\%1 YG\x8 D|%JpP2ٝqx2W.SMX]X]G٠YIXk!LB4W\&19 jXumZ-&L;jt.)KTmNOkЈ(fD)̈́Z[k[FZDӼDIY268&εԂ^@gLq-F| B%3.7f] XSĚ::4t-})=t][ tRc}XQcMi[6fVER}XIHcME(!$$wOIx"\ tt\IҺ2n뜣TA HOb6eajT)B?sbC҈+Dw'+xf'-[q?x<9-!C͗+IQM# mu\h:fi{/<,1&z^{j;$8{uG8\-0B~4C {L{\J H &ځ +d nbJDOfv£QeFvF}B?gJ}n `< 4ƤHb8h+)JLJw~l'gI~- (}Q4{3H7Dq&.0S [e+z~_N7gyǝb{|-Zo+-¸r~ߕ1@> kF_ 7o{m?}'j{|P9ʼn7ZݙG߽|g ?ٺ䭕lew8t<6WtaE8YW|uBcFFn74A8hnwyq] IDATp+GӅcQM1c:ł ,}Ɂiځ0B<ތ{pͿW{%Gerk{ܭcQ(ÏL ݬn=:[qk#|Zx_Nwy{o(p1Y[@0LlpV'ryۡŇQ`~O?C]$L QĂ:inR ޖ#pٝ" nPsP)/S\e_~4Q9n̾{O/&\zF_]6aM`I~IY ᾢTS]$ bQ i H^O.7 b s&Cp wGDO[9DlB3[4LM[-(yg8{G?{tx ZNgynIPV==^4=OM`^|.s'G8(#Gw~8&c6h1ųcpf8UI5,N_.qlnڝq-*[ri~ VOèPk6\K{-J)!Ylm3~YVl發*ݿƜ/b9-@YQS:6˺]߇=m[[ kʲ4&-lAkc0-`jq.ffs*Ѕ5>xVK-X׆Iv%{iz897;tIGV)/]ׂQຎzM]%VWX3luk ,]MjڰvY |Ѻ I( k))3N(TNشaR{D\w mqd?Yi\>}!)&HeEK,t;;F$]dV=A?q+RxDʐHW<'ٔ(@IY!O%|f<3<4)3by|fyd# s>[FՈva1}T_>9GƇL[W%Xlg~$^Ox>umzv - ;mY9xu pӒGg *WtE4 şVAUnkmjW,xab\bJxށbXV): 8 uʷ$3/4}A[F| o[Z]|wvLHRS 9{JX(.(ЩH(d~ʲG-*R{g:Dt,ťhEAuBIQ j%:2H6\6\84+;Y^G0GAw3A''y#0} -;a!TXKܝ ݙ^M Pi]:nSm\~]Sb*zMk 뷎8_P4ox.Um.ڨT| ߉TG@P>̊bǐJ+GZ7(O7Oߧy^秼_zR!goôjNՒiffv\*`W_J 9Czq1jd.tcku2,(b)/3LqEch|֏y=5:SHe;#ZׂNбUeёN:hk"C{ßƛG> (l(x^a+[J=B!ʁkE= Di*C0AI*$lP!qgha44K;%0kK=zO})/o~g/E?<;(Ѹf>`j?g I~ \yg!,''U0˿KA'xUQΡCQE(QR)*DYBszzud7%McB$wJSwM(p+*vju)wtggZ0-ao:ab.>(kn;-K*b @ GLjJBh0&PHM"`Q(Y5kOk7!PUvN9cw;tcŦ^ 3s:Y{ X,4*(L-]+!g7q|pD}cI8. ݔ;J< eLF{|E{O;邋r&a:ZkC׉i^>nqގ}atp Xwm}U Q=ϥ2O=N{d_(y=<_Kj>9iy(\z!c[{\%z恫{rGO>%U^Z k7gܵ=4>җH.asmަ],9շp zp Y¨f/Oa9ڶyXqJ1pKІ1kcvޱ=#ym p'1V'>"4lT6E,Ց3/&dmxBLuH&y7QPeUყ:0 n ((eUR6U?w\+Vyoxgxr^Kӽ{<&"03x|yMCcX:/*pNJՎ/|sQ~\/$pu aI,~:+߼TUɍV)J6ƞC\ZWrt.—=|(X h*^ZE) =;`kuyy];; CoW6;l\`#~8Upх?;/BYR_Z1R\Q3sSSOe5Ophk:Za ,˶ژ`,|P*7b4NFZٕF`0w*My-A`PFe qu)#&rgŐH] =urD h(G@PECQ+6TF5ܵ&8`_=ӚKְ ElcBBAI ܱG<䮢VxNk qZ0%wcr9xJǨL“j)A{Q׾D-B!=TZ#fm6t'4` :2}s[?|zP)X9/*('%-Ю9zWC:h>fm^b2 Q ]tAulj&aVo>^`- tv*K @V/>= #b6Z k9g. LeΡ/=[TaU0AX0QP3Oo`sj=5L)e5Ś* & X(q9{( BM Go^93c "(v [,YvWl=fFN׶0(( O?4˛7QR]YG@x0T~cxLpܣ*:T,݃@ TNqZa9ƄsߠCT.(.YӲ4BJL((KÏ_3NW滼s'wX_Ap͂KT ,[ͣU-P> SC}kJ#w% * :|ؠղ9{pPHsL's;ᏘNmUGML B `jNKf1(mњI,Ѫ{.rhcESTA]ۡ:LQwQvIÊyaՆZ"o0-f3)=KCh|j6iŤ,cݫSONh !^0`s !Dg\0:% d1%D\$Zt@p][S~12dh+tmvZC^չz**GH|NdPmcB>1uS ʀ1d2I&(R@eM&bA(miBڃ * .lyn"L(s•R EN>5>S.n8ebjH t.mha20鼣kqn_^2+~P.30E-ʨ%v:TLEK!.q+ʦ8̾Ri1Gpmu>VoO RUy"$j8yvJO*zݶ$c%ª`fvHp)u= m% 6Daeˆf^Ҧ|gEQGFN\c)>N1[\c7Ns:W^!dvR0fL5MFE; 65팆*rl@G0֒66iɸ_#!C]G*+"u${ȨX'7%~+"2sgy"$ nm5ja#p~bnI`I$RũDXϼ̌凈s-E޳Oַ5d#Mo2i`\uSdzNzgcӋ][SxVs|Ia2gWh"l6㥗^~qz脇<4f~!DV>gawU|y^XnpOzn8Ԧp<-=1[i<Fe|DQ U:9{l4yGs-'Yf. \IQ|gHڗ*q0lvaC@mEepL%cة0W"Up̩š]nso m#\3@eKkc8"l5g*KA=r`nm;\ ׸ov nK uj6vDrݟsnRGcÖlK8kS3#;K L|V$Ba l:q p?qħ+AtC?'{9{W7yƌY ݴLgT;3T{K!V&kje𣏕 s-:;I,M.g{|3W&OԢbp[RsJkLlaQfʍ]aԉen\?\r]W~-A^} &9q>G%s8\=a>󘎫min䂭93DSM*W |ŃOP%9 pc3Y2o*ϼ?Y<{ekIL߃3`H n wq}gby8:u[p2c^5̛fUkZ,]_QC{J~!P IDAT|o-]MRKOV\lO8Y=`۟чs b8hpl/ [ UeR~{N3TfMtl PCTWCv7k8kF+.q6"=T<e$/\ZbۊOvyIhФ2p)1+w:!!&RrDSIf6 | ?<6pʝj(vue $x.ܙ)\ta\, N5x(&͟,v%_[F cicf߇%;!mf8y/8F8%&͛U;e1/Q1ԲAC_%y<*w6tfhLAXɲPwn7hB `=+W,f>"81&hBўte5i4t֯>3C..0W8|So00ڥ19\x@C!6X(-#ǡ C3 Ʈ^~;T;wc?,h΂aa=^$r66?_m|avk'r၇0ʉ<UvE&QZFi#4LOOD.Lc"=\{C7w9.]!1M4 2;\S1` qVEq՟PD 1O_}<\5}axՂwͭ3΄w>ᚧp: aZ#3*$<>٭}H{δgVƬ3#u|a=e4XLIYECH,:œİl \57em^*61hT|H`\4Iޣ#ҺV;ȇq/IH쓝dE&Ls01WZ[>̨'57İg AhIZQ*lQNgX ԜhB:(K;#PDZ;]Pm 9VlsC,^{zOυ9$l?I#y(Ϯƒ 0Nw̴Ss(h)/i=jYcב>s=# x9g4oH+hΓ* ə̘:o~W>ki̢J46t|‡Qi$J7ܿxUSW\Tp&knrY^'F+[pTueCu}buomPnFC|1}`GkdŤ`qN|wQwV&2s>?VR)?.?M'i.lU\α_ {ao^4s*HlpeG;-6pa#)BFyXٗ |R3(!Se3MsHOI@(25c#:j;Xȉh FlTԺ-2>m2$f1i]6";10f1E~7Y-}"zdQbgL%rWcM*G4:9f6ku 8RwucZ8~%Ʌi|)sĭ4%"yXO3CÒj7U|6\^5KO5BioIaw T0R!}G=FyC1&3m0RdDVcUB&=kp;%}~թeǨ(c"dgD)L*t(J;c=o*1 b+Y7&T ]1;ԅs&?jY$)yqLf(᪴pܬQ 9C*xSϗWti:Ds9\<8mF_0J,!cth?1/80>y#w ~1Zeӽzr23!s/mϸ԰ ~ӓӽ>=}gj$?|9wD_&@8+Lp+O~5?&ý 3 ܗ-s [ UY6>Wek~[,z:-k=һT:g'6ܴ{N"[NQC'>5;V}0ъ#iQC4C=]%|x9V7=}DBp`_\pr Fׄ׎yZL`k(`✪ߧw0nނ%'-k6`\bf˶%Itʼn>D8ܹ5$b|y*$05 I$Zeod#إT3OYH#eXD͂?|O6/Sk5lMJ_L%oz?̟"Лumsf hjݲm#V-U8nF};khAP\S_dNʈr~Kwxxzӳ 1!GV pc^s}`*W;e5=?O*p' h+AA A"W ƇwװԩtlU[6bPy/ɌTIkʶBwg;ul" `Ic||OJ)#ț4IEaGo&fqgyOEm7^~mX4QؕFU)2 zaq@`صJcvw"^a۾f& Uz>9>djqH0uZoS? (Fm,Y =1՞,T#]aխ8\ޮ bqbnyCԈaopwHiA G-ľBH-v|rB rTZ<-7 NHZeȨ8t7S6g21H6=[hoM)10Ѓ7,X8x%X!x02 {O~lxOθt_~<4no%P7K T!]Y*=P&NÕ IҶhkB΀GM~9\rie2ƣ:ضz'29%p+C@C&:V5'`}df ɲ 2m׳jO)>L1}[dc .1ګWץ S= >x-q7#p?U.A88HyW^g73/;ҰMi|o (E!u'U5)Kɪ2D`Q4|;J%-Ʈu@萴0>y1dX;2ӭKǴti]1 $$E,=c=lt^NI)Ҷ-&?c HNJF1t1òyņr>ćKX$1˘ԢSۊO1Rb3c=bcƺY,5gγG }grDҭ$DR69XtO2;()3#y fv"-ƍ P^͗6l@ɧ.L}} uasK_~W{ q sR{ߕ'߉6dӍ.5:\Q-ß\sM6Ὅ<*|͝kpFLJӷuM*\-HK2S,> GШX+>|q 9q5eOmr쀠gP^.8y c%t "XvrQj$֤u_q:B؀ }H4 ؄6b"ڍ "Q򾘍{D"@DXBGi<_{sroZ\DvMýro:jIs$hQbM6|lɟ,ŝ3;/Io>£N*4(3ZֆmHNM)I j.XiEh2}F*IEU44Fmb$vZN#[ :>s#ݰ1u!55I9jaqse2̙a,`TA;~-shZf1B'DT"4ybB vIL 5,b s*~YT:Bl1qx,''s7}ZfmipqeC=m \DȾD"'ttNhI {sPȬ 4uǬ)8?Ƽ*bjpBFl׿xrr`%\jTs/.v+}!av1рǓhlQ(dͯF~d>_Q*Zˎ1:Jp3xCGb yp=Hs(emZ'M~]]u&{`fZMS˚^cg<6(H1EOfp!4_=}Aܚ6K_xڻZXzןk/GߢF &0Fq[Xve6:^hxgA"_ƛ5gkV /جnACZ{f!' 9sfGVIn B<{,fDl#enkDƚRQ@"[lܠ~CO}Ç{}cbF_Oٗfw "#޿|BoĄYP*&!%X+w;C7_ýS߸E ئ$gthyEfML Lk)^Xr)M̚cfl7ӶYd~ bK3?Y >> F7hчTwA"Q*ue ߦLwj$:%=3#QnLMTh[vУLcĊwɂNv-V:E|V FiW~]ׁ[4ُOQ݆Ӹbtݚ2#b dK$ \(L$4* dR:HLK2 %{~?ٖIx6]GaB!1k)#*>yRq'ldY *521%(@*=zIUWI8DvjŒl&麖~e[4\q1YzTIrZlUX.9ܣ2p|vuXkGn `{YYw^c,[QgH:Hʐ$D6m&[|IT@:-HlB2#@zϚ14tLRAXm1 Tȵ-5+W%KkmgMhڀY@PLs٥-P73B1iB8@H*u=\}{p)yR4Cι\mr@$\kˠ3تE1m!Їm(xXy9 hB3J*P ;G֤7RYJڍIUO/16sԤINFC)^F- *`ɓIK4 H,2rX`[CLĤweM^\w7T#c33H8'/L5F#[>MGrV* 7ͨqcD\l6aXsQ81R3< ]eLxhm L[+#Ѧ1U!dL+`% Fѕ_0Q쳙{wfsUqH\|dv0:rz))r0IR㣀 AaL+-/@︎ ie\RHzOh}e[]ƞl#NfU.X~v漳=;ey^̝2 RFt~K_z~b`S{mÓBա |닎4z.k)vo=Yp[ιˋ9o} IDATUAǎ HTA0ѡ1j#XMp*Al* K d(6&TF2/]gn؆-_91%o-#mG~ɗ'\^GA#Wx||p;'>s|a_u[mˮI8|L=5#x}=<(mZRR5ݯ3O@e,c!,pX*1*B Y#DBzo5 YOO)dd&|2aac^r"M.kİ#*}۳zL XcQ͚PNJ=jQ0|TV<XWMU9F5Aẙq?n83x(kz^ ܣE +f}|u6vQ<.ړWޛ/-RKvxK?y7Dv=;#mrd b9`qh3@"u#43kv$-E@)&2ڊy`ӑ(JO2%ϭExrrƦJ`T{iSaPJ#)rW uɟ|'ќoq}6Vox{ C[_ni=i2INzeVEӱŲDu^^s=ǟ?Uw8 6m;wvy_IAMUZ9mO Qs^BJK;gi}g ju ފOUY~~9׿ T@T(pK|'H6z* {iԱGm,"8зvpsv Bm31cp "bzf{w1g>a̓Gџ.3@c*b>g  hTRM瞳cl?>m?ḟU2n &v߇ &x;pʒ"+t]RQb{mOszW z7crHE簿 Ǐ#ZGJ'cQ|7B5߹K7/=O%Xg4wbB+I1ID~DE넦V3ڞMrv:!aM*]ƪ)2&Hc$MJE")ȕ_]~㊆{Vdeݞ2LD T tIMzYU ȓU235HLl9*FVp/mfIl \ t霺0]*14)DR qKjAcZR\"/c6`)R5jҕ 1o3L'$lM ??1eJw_dzB9H-GCN}n; v ؼߺb2}If6s|84v'g%7] 譡/O:^mZ^,nЊ%؞Upݽs^*5VpDCplK݆$֦] %h_ -GOx}Ҽb$ #EI_ucZ_<^RV8$Z>wGϽk]`_TWcJRdRp_RUxL멍r}{r7!!dκpqqF۝2i6t+36[fb}E̙jx,}tm4f9m6TβAH仺NUK !D|HdHu *㺎ح:y㻝ʄ< B^džkLϟ^{8%\UҼIE›Y5^ֹD<*O!Ƌ5T['dI˅ʚYdM#Wf23.%ꐄa}\bPu|~RWSD.3c&rF  SM̝M 5T0ĨMl&Bq3x`y]7\>зA|w])溥m}GZ`1ewq Lkls22C3a?`*VsXY{]@C&'LRLH:PkD= L12%d#88Ts0-cSEklш= M56:@=fF 1a$h3zTƸDQtz) 0loiQ)ȮO}^ht4c9sqL񆢦Cΐ G>7z =KN ta, 86 (78ѡプݒ]Ш+WQ<(BMSiijLaSKEw(]xը#ÅRpgb~xͱgEf1>pɛ|8x|>q^W6T_n.Su'CF~諉YpΥq?./\&\zҞg]ScL,gci.1|˧?=fu>=(|%2i~|iC0̆0wL֟Ng8;?ny`|ڗn)W^գo5r[g,s?> l~aw ]k|=,9υ-_3*y׏ ;oWj@M͓󚿨[3(|kGxnSV N,f>cX{Ѐ nVث={@"^]WzlY6eNl,Z^+N}|맞.HNoʍȫ)BaԀM>!45!~ 01J@müf!E+aiP$J2Jc4Pʩx6t*{y[`m6Ei41T$ TjXbbiS6k(lyhz\ *GFK~xTsvXdtN[g#M!D.ԳS!,kr&b`8LMKǩtC}a=T:}SޜsGx]ڹ`u ho+>rpQAψ)5LHYZ#:Po3vHna.ѝp8_mX,*ꦦ `GͰm }C5w95„tl cǦ<9yڌ sw0 C*XdK4o~U 4iC?1i8~npݽ/]砿÷~D' 9tR2tTpq{X!@Cë{orllޒCAlUGusrG?ŃO 8DeO6/V=ͯUOնQӑe\)xW3xboA#N 5uYhx|o>向S7*".k7?oM̸tYu=gr9uI.|I oN?O!s \Fik MChCC׭hcO窽a+LH+hY1E놱Zi*+WG>DCA,b2:"1gTƱ%; U7ofqqu@ 5hJWM!F&X4_3/)#ؗ5 'a\K`^A/ˉPD tb jhSt"dqD Io-=ɉᔟDrkgVgg MS)#Jc& vH ɼ,]siOJ8$:\69!U>ӷ6N\i<@3ji^6&1Qy2AEx.Nk͊)VI_x393*eRE{ mw8l6 \}YbzGQ}hMN#KMkhV~080 NTK2G\*^C l1B Z#tZ۝mNĸRL l=P<P+ 6~sʕ^[wR=ĹpS(kn] I$hjes rFG_AB+Q廗 09RtUq`ܹښr87fNKvUJ1RdJD k:Pxʵladn0'63Wg}gN[;~YX۹~߶|vc wwOpil8>jO^TTLηȗZP}l}kosY^}u{[~se'dm `F>w8 /Ze~/--Ox3 ׺o8Y,DYUhKS>iߎft|nH'4qX-2Y[Qs:,0mn|i9ƽD|: !$-'?<5jUp9BUO%3sp6, \6]b_AWI|J|ӣU9~J>yw$,'Łxr=貑*c\8@UIM퀧Њޓ\i"D ' ~ rSy6!O+nݺ{{5]_jY{WK?hFr'^8MSOH@g2(.gҐ+Bvx֣G8l_ ]-2D[\AߡcKLpWUZD&.f֛+|\_m ?SEn%ߤ{m~?߄?#n~6%hy~7?!:ᯯ.}u;|/\@` 3Ci}tDpVo| Bz_~k ȣC ~& C>5fpRCl|MY2m=n~8593յ E 8B60~ ?~ ?|O1 ߦZQ7G@WO^K~w՘Gȉ:VOq6n,HsP2Y9FdNݱ{ *(!Λr^p}y|`h&BDC_ IDATJW6[kC$BIOuFWG뉁EI@OϘUji (AnNq'>Lj󹀜z=GW<) 2>1Ϳ&<#hTZ {4zКm1᳟߾]`-ގ>F:&Xc 0Se!П"F; y=Ґ')ohװr)~?R-mF'/|12F+ҮVR+f~`7WWdY{wk?xyqdMIE R#/})>Z)rDpn-o?iE> 79eRkm ~-quEt$5'nƁ^%&`<9-VVp/sIxXn)\/9R6̜T1.׀zm*\\̕PkrTը:&kTYSv2Y'Ⴅx"(SRRq[UV[HjLFu]Ok$( h\Fl^V Pdz͞0b4(hYClZ>۹ 2ĸ:؎mk+_PHE̡X S54>o/?OXm^v59-O!rSDX:YP ,Zt tXd| :ŕbJVhQr4mIc21[TS%Nm'|ց, CGtP:+0#"8x+hS2 @l3 !d+Y^]X8VpiFH Վd{Uo㭖DIQ#hjQkEzF\u>!*Ivo33 '9iwMq7YؠU5%$W9`E9Jf֢ 9~3 ͒wԓ4r6|ѭ|ur6l$+6`=i!3s2J+F+w\ay'gNc9u7|^Nm?s-0FQ㒣žZGl֚ ]N&:3`2B%o"y8uWh%<+hԢ>riIlVyB)kN"G]89c|?!&v}]߽BKད@FZYJA}EsC0GhF t-QyKrhۀ6+b1B-҃8QMIe W"H&Ĥ\^ 4[']TlZQCߧw+o~:Ok4U׹  K2[`:D(E4}q&-N8ؗ#X)/}Yx$Q!A\JՁg[U?HƧw=iuJQ6:rHrhOy>%]SE~L`̑YGy:{w_W7UMu#glj?w>W'ƞ+qy֫Z`ۧ#XRZ*H)zPLrB'FE| K}{{>R0J̕JbڄCUvvhZNmSn9*`0-gaӥ]'oeGut#B mVq5CDd#4;ܿGZ(㲥yp$ݼIj @ٱQWA$`L`c(8˅@1cCM>//Hhbu4OH LIqp La i$ 2 wܣ  wyiBsǧ}?s&5ma/X.FI 90 BM!xA΂%Co@0$q'4p~wK_s0488*.ԍf~U:eErwf_2*N PfoAuM5,׼=4+g9ҽ q$ TLAN mYݬR-әhf; ); ρDd 5}q`H%GaS }1P"G%o{px^ST7cqichVoΩx"Cꆜ2`̆"9m8|.YN ּ]?Z@-s'MsRJ%Ra} 5('CC nZ? ABYθݣZR[#K] GމYnYqABMXQ M@\ n1ml#JVBsyäD|ȪH)Zjz\R8*eG3B ޲ UF껪iZx>ƃ4p(M)wOHS5O\*sTxg _x0`wkZ}%Gi]UxR-LA(<>NW*4&3$5 1groЗƈ|5οLt8D㳌#9ZðhL+9ˇkc3pNgbEȤ'oÏBIHþW> ε'e}Q.Go)Sut<|ɷN?==4ݒ#d׏~Dእ4*f)=e^4KrxEboE\KKOH !!CCLk2B̹^q5 ry1w|v)E7Vw~ԓgw3ǿk;71eP8O<4IJUӊnE3SK>_$F25| DKzfcZ PjT{!˹"("N WjA0&Q%>& pJ"6Bzpƾjx pp GGᎎ7$ۺSkTqF\nO/{!EH`o".q}qg3z8# # G=I:ơ81C)bC+jlر%7g sX_lˮC<mX!?ϟ=Az9_4ɑA| f弿HWԓP;8+(HiV2\Z9LR+!LOj_S!N)YVϑ\'%IJۊ!!Z b*Z29;H+#PAĢsTQdoS֓a$VTKe PՍ~ ȮvQ8bBX^6hJљD%9 _(֟ ެT% l68FQ29E{\;4Z@mϢ{oYySp"ve}ӆBI r!$'.]Zܗ[LޣyjW|XXNx{N x$mNV:r/[n־OF\g{Y_/o;ݗϛ=_,( B1_:˳Êci94=ˎ&0핗ekS!qUj+02a;D` r?aSI)eC WDGQk5jOtR$]~u<&*(1F䈖t{xޔK^>L88Oyx\={^;;X6-LḺ8lgnZ9Gm^S;?Cke(Q<*]V^("-_Vcpü)ŵ# 4hW|A !:1-,  KNE3=V#y+7syĘxmKfAC!H+:5@dB\ϱ,Sĩи3H"WԱց+U!-_a{B<1EǛvH,Ҍo#I"Y`:GSӀdm="vitA8cqwp=c|hwpp!0v +x~ -WɌpwћ7 7nq~-6fd.YĨx987/ƳVԁK40``^ m$W`_z$D\C6, `l]z$ l;Q"{ tW@z-] K Q^c }_qS #ZLlR[{%3rwbr/vG>)ɞ|mhq )U;FE;{UDzEߧw% ޫ_5gc$f(-h<:߻OZ,5g{88l~Q⨤$xCw~}ѴtCڬSՇt{h; ~9CQ[a(E 3#*:dž4Ispv2^$s?ݏ]1i CXhq]kZY͒v<}NN*@.7ZF꼧iZ#xGY3N931&ystt ?A֔LkXlO:|WѰ] 4Z PN* &\T:o wF8%#. 5b-1g\HDU[-{" 5t8 [ގu6gN%LG.XtlSG*sh5~Q SSXp"'2S#$aIJe+&+F+ B\Dh{\脈r>|}\) d^%[Ic"FZZ"\J6jϱoxC5^2ʆ% {aE:WDF%Ns(F^̞|få{(W< Bɋ,gtG֩1]e7d.25@vudY,CduSP`q+k yPǵc,+ y'IHW| D͸}_|1l-E>>—?>(7N"imˢ7>KP {LQ?(jn7 jN@|Mgٮjҹ`9sSZR탭i⩬јF&)32#7.R)Jlȕ3ӧ{xWxV~9o޻ɽ=n:_o!+@;TAB͢c]de`ʓs95͙( ~ˢh`f '#peTLGtf(+Q&()_Rκd߻8"dqX28~U[Z,]B48}:e@;%;~k 6 -WYolſ# z]oz-89al[1 ЫZ]axާ4#}lZHӞg=DZHDsLaOr wGaٰLY5Oi:Ng h&.2٥{̅T!RRw7 W&GJ3BM|UȐqU[P,;DݴIt65sQO"Yc5Mˉ Bp>";SG6lg'h6ۭ_굤`Ҳxs WO|;;H.xMB-1<{G>`X-;a7SN!<{gqq\_q|W+^fJǹL-Z G+)#D:ru9 l]u;+RjA[yz prOcZóx>y>c/X@\&ņvgc'Mn~93cWe1?`1/nPx)p~~}{;ß}_cl;;_s,b55^^P3Gvٱu@=eOLIt)Ǐ>+;K(F5"[k+s"u!pШS,gdFA28+\s7/H(_ Ίfj_Eh$DzȱGA㑫o<$i ^ܥ1&34}w|>7_[ߵ/ZW"EAF[ZVŽ 5' ĭbH2<9H.C1ΖeVm#U'8$r/P))"/ը3tB0쉭m6jɪsq_i &\#o~&PU'{䎝nÀ di1|'3351cK,8d:Af͘ή`aaA}wZAGcf{\ٌ=W(ogh]br'_T-!C{jLZ(NaBk9 wj5m8Lu\k sUe,YMhr~*@lK1dƼu*ǔqMKSj ]Gڽ.Dۍڇ+; wǿ" HD3 mu! d 'ƢZ{o-85x2RqS-*!8M8JY;8OkZxRxn !4,Y&zJw=C$+mK]4gBRrLтL5%Dks)[ZGhhAh=,wѶf\Te-Sy(g-Y0jUZ7^sr?;)R ެej bo![LOݠy6yV^k?z,i(+ l^ۙ^B.{X:3溽90Պ-ަ6AgLkcso2ôy9F+ƸaVVDY,Y-:UѯSZ(5B$4M@q=?&gqĉ=!maZԣi;aGӔLͩIuRA;Ӗ/"~N<-dόRiZeAHWʦgY,umdw:ʂWK}K_-0~wƻϓ'O8;?g \0_&n}OKevw_ev{XQG#ѷ[c։ #ǏIZ}Qam{M'g̙HCJ0hH$,*(hຎú7_>ܬ o!ܟ@sbW4H-mL,C_'j^:R'j{c,\]gip +o qhrvՀ "€+EPd {_<~Ll3iyyW$\c)fҌy%Id͊| Ѐ-_j5.QlAMYJ|o+Yo*ΛW{,oήdm<d ,1s#n^h73` GH 5׃_3<$rw.F~ޖ_y.z{/t-VL("ʀŎAO@rՉa#p%o:oEEqZ=fs'cN \Ů8Hj阣ᛓ/ИCpWǑqښtua!e] ۃYlձMI'@´+V3ϔkA*9\J-=@*TPc4ifظ]]Ř5!9 X|UE qRI/89b/%휷O֎?/@UI@&q 3Zs/s(kf`]U$*`]ٳU1 sR_MPױ8FNFhRhʍ&T-ТiEԪz]9ebp^"u-p-_f3koKxq}C9|_5?](G͇«Cx/i-d-9ųz׾pc>n{^z_9{Խ0eqWLh]p"-3pQ|pt]K׵x_Jr}5X9n>/qa۲ouvFV0HZ+T ͯsw>61nw|_É9|rUFuhoE]N2@Z~/Zҕ _$<}Tx+JC`w]98i\?&9>gNV.>Ο{>۫):% lPe?s₧ɧxp?3ղ(-? #w+$|KHq)}+_s.z)jT E=YrbtJtB tw+뙜!#H›Dz=VH|p^mJ.L=;(TvI>M@=* Y;aLRW}g5\d} x9ItBD:GJ 2$}#[ِ#y)|DA;wI#gGvhFƄK I4"1dC8vȢ!A:r}#/_)*عRO 5 _55fTGV[}EoZ֒)J Wo7GeH4zN#.3yx_dVwM$Tk֤Jd{yD= }oɩT}x%a~HaA}H=#0+;lv;7NRL0'϶|ӧ|;SpRZIAPoQlj(1?"?x7֥ȏ穲H,KvpOPBkZT\Ωh%>iix^q{vZNۜ\kI9dl5.ő@MO B`R0 uBe8ȭl߼Kj:\X_,k9^bkx&OΞ}"m깺>9_pz늦0hf<8[! #y{aӕt zewHjΨ`\qˁbPI$SHE-6Lw7XdL\9)ę=$zcFDʀ:ŋx@*iY7ӥ!4??6 ?V=Wǟ|ÜWZM~sų|K3>;9ϧ%M|2ʎsל:M׹sW*(@ʁa9Bȗ2T؎i %3J"yO 7O_g?㷗%ccؾ@/Է9BӔwֽ).JrA=1ٖ#FA{8}!E+R.vca3pX[)NPzJ?vӺK4D54n)oȳUIQ{O9_{ZsBj99iiIGyr9Q21C#qdY30poV!ۜ 9WXeަC \B$Ύ xh{6g[Rd*LH 2PXʌSFBqIdJɄYRt[z4-g(xcW)ub牛^׷yd{0^smO)~Ƅx01םKՠ;4Јkp`֗9h;u.ð8?"s`5Z=~4`p~ N6n ṢL9Z?f:wNUe?ӏJkSU>3./~.ˀѫRT^}'{e}=s8 =nyS8н;[_E~__o. / HOeK!M@̚tbkI%rݖ+pc9Jsh"d-HI_5" T_"@CWUD)(WؤD#+Fp5W)XjǼK= k7=v\s%=HRFH lP-_@WcvjϘt6젬PA@)S`qjsT! '%S4NN9==%@\r1H#c &+a}gY@⌆st@5B Ԕb}jz1`S+Q8-`?et& _i-s*ҪFr%?RL B NLX4LEt}cEyq zԭVi (9Y}35Z@Sfruysp8¨_{YJ!j΄q{*͓,"y N4es+8 !F(f{Otߴ1+ -j>oG'會vGvB&dpsZR6 D[9nȚ fY7 o-5m]<-j^s6E-W ̡#3<`@m#7X!,fznV)-YRd/3{#"-Q&㑮ig{ה3ϟc3{niO{54#pSlQ9{?o/|_7(Dx#tmϰ#d1eڳg.W{o?`im)5we~EF캪-gFXQ l[lpXUT϶X 648BLѲkEDJYHȚӨ#[j < &1iq #2Mx2kpK?|ǻO*K[erOSQo3; -nEH< 莜Ieq"ҫlp!ݚUrz*x<昞TRνo2alw[#Ss+s)}aBەl )4t4^X%x (A1'e,C&m#ݡQ,8 sq=!1Dl4wx%tJg,yGΑO8YptCO;VmG4: Y᝵n\0('㫮9"FURբ,*$+~ db:3L.jlK&o΂$9&Ԭw dtvP:H76958/uh]8%sg̭ w'}ֲ{ؖ.DuD8y\N!Rcb۵x^M.Y"sx2?RrwA "h5@R 3vdݢ^NՁ[KBERxWEQsOc^r}k)(N *g5>);o0+˔P^)ذB){yo9jN ;j!5*_ukp,lMc`w H5uT|OS3]0 _yRץs*)Ɂᄔ#9-k}Vm'e9BhY/ʚ 甒1ͫLvh `hxTŧkoknn'Qe,e: 2m,}oǞ W zf~a}{jQ{\e( ,0iUWOiZqPpR(2(O߹َ9g}x\eu|]}l}͞1][?Z\%/Wy-Q˚(>M]\+_08ܿM~7ukط-V* g}~{ͷ~闉ɢt)bT)8g<{g'O:6ʷ)>viNǑaG2Ce∴)@3Bbx7=Qq ]{0 cZ-*ŋ\\>S֛ '5f^6Ϟ>7 +.Wh/^7JMu};EI奲== Nq?'w=_`[+K}v(fdCT^g~)[l[ʙ Wg''U UCi 04g 'wOs2ͪcztOiOJzue_y"(̬\jBhsAĪ)TB," (9٩i:A9k3 G4x@҈ON9ЪEF1rZAFܳsO wRON")lC&-k kMg=uf~L4mxnBNEMt{w`D2lpN~Hp~Ҡ%[FI@Ec-|2\YAHBuѺu):&ZGGF$)!~|'ٟ?_2=9 YaK }[=-,2={!F R +9c/,]4 y:|Lv=h(]"P-l@9T @9AEAoOHrCLh]G~`#O[_Ϲӧ0P Β:,̈RzP"a ݚS,#BΞ}I2Oecp[[WGoŚ!y񙵑UzRV>eGo.Jaۗ%AcQT)U<;|ݞʕ?"RmzL.i]yd"{i]-5g;:2}aKLWtfAcK&Yr_8RtWXvUQuVer8RwL)1 ﯸx[ܺ䶲n-Kp)a4 cEogw+򒚕-)s Jh95!ƌ4}p`ƾa\a˘g) IDATm~ڏ͑V b@'SK Cb@g4*_3s&8к* sj>ZC W'bbrQTl^#P|oX(aG 5xe W3 $ZjˤcD8%D2C6"jtCyu/l5oD|a/Hi{Kx_ЙuKXy ļѣG/ܾzD͎X残gVa? 2N']QSj?\9H_Q`"hk+49z?qK^Zg}y-17|%X>/{3Oe8}替+^G#w0DBEj4Tc)&K(N蚆iɚ8ՉK)N}׹+(9BX8ٌ*JR[ U"C+ VG2yqjZٗzк•Tf:e֜S\\VZRi?+[509}FYgf]`.Q &0R'+X.x,ztr vՉ93 jvW9c{vpQE6 #2RŢo8'2ϡjה&X[rͶHd?\uʉ<}%zfC]y9ei' 5+SU}>juCՎ8M޽GkBPBRqRe:εtm/I؜xE:^ӝx_5fL1xiyp61CY,+LJK`7翗2fhږz 8>M߿yqy~?u]؟7#_gϞ駟^Y6=kn喳 9CPnDpE>hFZtexr:L>jC%(Y[ˎ+{b4]Tn/^M#Ŝ<"N0t8M\O{^\x)'[e5w?wAHz)5L[ۣzyx)%ߵlQ1jWd 4t wNr9cq]X,KU«W}saL͕@6p M#YTz )#9˽baYTDR EEWH-;Z=_<zqַ怊#Cf—"٢a;>AB! vȘhN7<:;TJZ.^`6nDWd'h(pp0j&ЕϠ32%/B#;&BPb%Bg숅d5K3QDLpPlҝ8|TC4rO׬pDi5j9ц;4Yl}m~irJD'=)i$$5k }]'v}ELG5poqQL53Vc iGl`XC,*@dD/5me .K g>9?$2'D >>J"5Mȸvh&6` ft<)/^ޝrY5E&{p6ϊ$ӞpAZ" AG_<'j CJ_^s*}:oMn ?y?7n2tD:dN@Gh$4x|۲>;[޳WFѢ3frg.ԛX46(-_dUnGW uZo[Wg͜>'IOvӌptl=XŃmMm<>G/ᅠyc'mL{,&i[OҖOxeQdb;sn )4m6MpPlߪ`uBߗ35t{8LJBForkr-iVO){ %q,f%K;*g?\h3s4']t<^ׄ42]0aM'ɠQ K5s48%9MJ-ۨwTMSIXFl}f.iTS'.?&'dHY v}IS ;${$ $@ԔCL9!D O\"u {ږK7eoT;^ONt݆n}JT)6R4R[ Jځ4&k;6^fzbg5m.J0+qX Z*vf%'-|;Mhh@Z4+a»nSХjVj%YzV\ڡ/B׵]Gv2՗ mC-8jۖд f8p- dRa#Hs$fG&i֬\ə97:adrIΆ0VW.BKXvX06iux$U4=*ɜEZ1XCR*`} 4Mk6o,PWWDbm p:`bҗd~+0PC"`M1^UgO#"+\Ѻ*Dp1thv(Gxuժ)c)eX'"&Gw$SI B+<st6$ j'㲪X5]o NOL3.{\'ܪ+"̋Z8R΅^ -9AEIyV{K%ggZ3wqF\$ Ch$ =I|!" ݺ,nz08YU{hTg9xbngHJE(nG(2TX-يXK&^.cX;cgB ֌%]H Fg3/s8?gruͽGSS 䩾 7=d &\䨽>eN3`Rچ;nR&0I#RћW)eY4oGi3wu\v<26#0͗o)o=ͯ&~'c櫫+Tiq~sqqɢiaև;==CxPb~IQA=Ϟ=?PMK1`'\otcºluˬ]O%7~,ٔH\#u|Ȓk 5WneMT3D5Naͪţ'[W~O/\V=4\I3ehϑ6 "dY醁~`-8‘|T$^^]K/{{l}C(Hk 6dD`FÎn0&9?uVApѧ?~Oo:p뽻WO,u_I^ h.h\<|nzϿyQbsՊS[~϶ɠ9Ƞ9 l(р#gcC4\\頥Y\*Iqlrmz"c"ي\B ]ƌU(l,:tB,5xrA^Q }]SE? \Dc&{PԊ"V<GD4K4!#o7k)䌇^R%RNs{!9q'=g|9׌ˍi}F2Zd̔q"jVFNI@| /(cr@+G !8=s݁?д1vIJ`'cB\" C59!J>Pꏜt .% z^@@d %-X/nY7lw}~?[sA\W؝rxe0du(ږFʌɑ 1NP1hFs󁔇2BW֟17uxBרo@9f5[0"`?ˆl(1x⧉#sk2V:rv Y3&dk9h8"R2cMRe7ίANU&딤ƳHI“ysXc )߾؍h"!l{KӈTn㪶Ffڞ(\Q,CPM͒͟Kv9Lu~+O)} [$5J&wY&Rp=WܥԈY?9Z8a58)Ύ Wy|hA`RǑլxqF6C79X@6DKjY#.D?.W'a`XVu rvʏƦQ.8[ł ˂ 1Lo(󾲣Rx0B8 ~7N}[]66b)tv!&jB-B}>u0uzN2>+,*M#MqVc솂eentOhKn {TTwgʫNJ xeh2{ӣ*1\9cg09k>qVw2{HKγĘm = Au󖌓.o\u=9r =ơ}sYSnQ>j[rf{7f9;^_o;d~ /KeUjdlP(qUk-Raz1+FuDY4@]FG.cwa9C>ʄ1)`Asg {.._SB4Mgψ随?~fdvjAJ@&@@3aON6kHb~[b<|D ^ڱX޽N 6' mxT6 _9o{G| $ڦϿb}D֞&x۞gO"mw2; o&z$*QOUrf3KQ}qmp5[~ˏH2}|zwV'Xj'ˋK-1 F'?\~ɟp^zݑ5+V+es]7ϯX%\c<^8\o99=S{R( )؜ȑ({hh3V: lӈI i&؝u >PRS]QpH6jQrÖs4192r8`KܧcwgʹK|;yE3FU~Gz\ϸ>u"[Nwj٘ w}θd{NL4ع_]WS 4:3"ymny`H]B,) BzUl4* 78t'Q]MMD d|v$dv=-I7hN[6)?|'Oj@۲[읏AZ xcw| (cTM6M/`%CbZkw2-5MM,JיBdm`Ѭ4+ @mLI)u+eJ-"|pfΣ:h n,/^ˬdeqy4BA}E9㓽vbVqg-b玅q->\oI\!pƺ{iqrc6k9Z^؀6cDZnjwlȜrnvtM, eh>~@]'ҰZ~ kp^ ŁK"*)-gq␉1!8ԝ5k@=H{BC4>-}/@3 i=>׳{v; Cy IDAT .t,Є/U[Jl#YB  ] D f!Fv-+i8YK{TЌwc(5 bFKD\\]gRb5PGf[c!@q+NUc@Ui9 *}JXT=N3"q"F/bys[g5ӿ? Y#)S`ng7['=U߀hٳ?Oh3{8gyeGRh~sl M.y e_"gK͇1=/mԡ_xsҼMwKv@Z;_ܔ֩鳫U};pPXuaqessRz-캔i2/|JǞ7D1݃tЏMg܂"dӄ@v*`m[@Kn@WMI9@,{_ݼ DOC.o"z-vpdӋ,[-RJI*ÁCߣ%]θѓ[|bk&.{)Ƒ/8S!6nE@q@P89gWRx9*7Em4:r6տMFLTr֪Q&9o\%E?X ۗXs%FǬyDz.ej*d(cR9vjq>!giZ;˺Ruj4Gvc6gl)X-;bܳ^Xt݊a~}gqt orW5/_~wnn?.ǟpu}gOќ9lМy/^0|ns+.^"\4-CL?ŋG{'#Wd./^q{UǧXKƾ`D{7+>8S]K'Uy^b_|CV,䮌7pν7Dhj3~>ȓ/eF%V+߿Ͻ{Xo, 5}|1wϟ|ɿw?ɗ/aÇ9ׯ} H)OOOl0<)y؝_4tkQiBK,GqS2j ~' H& /"A.8U A2MDM/뀊E2K:ERߧ8{ :.Oı{1z>M?+$q;7I8Q"Ngܒmx@bB0yG';'x蒕_ק$qK:U, |$z i泀K˔5^D% ѽ ]-)+XZČHW$F  GW!# hYᵒvo'=SpÁ{lw="9xp n>X(} #)_A/6blpTbJWish=5=0̟U|ؚI9 ʳe.=RW"(R>.75}›>=vMڃf\VH=(AڮH]o0˓MSn}l ݫ S& ~~f٤S1b%3u9xW˿FTo /&y~ W5q}]nYsʭ6 EW8X$hczWo~LG(*$Y0 Gu&@[cc8q[sК_\TYt VO7ZiZ@ȴBbbe]o#Ϻ[ ͆d1dt{,xϰS|NqaAJ{. !DŽ9ڶe90D[D ͆&8bhh ֜1h5}`tҒ| +s-%=P0_Q=R4yMy ʓ40 $O2Z֔uokō;-|KSt8iCЦO Upb!` u#pG|FP MC.g shO*{d p'1ιni|W2[FH3))}ϟr5?:c|Q(+=\Jd `6 BSZdQΕWDl0,cRڮm1"pسC`b(2N̟)*1VB-M<2o?(pCʺK`+:R(:oy%=9R0c e:u$ cW/^_`! 6ob?r4%^Ļ _|z"8G<_gCNҖ5'pxz _`^r_q%'J"<}5ݢ{~ȭ[g\o_KCTLIl/v@0ESbZ/xqߛd+ |B? rdH[>~k@|7"aU$ )_ lTR+_ٻMyw8c;t,Ko%3qk)?s=BH92ār{qm`E?)/^K~_/⫯=-bfv}]`^skm=4 |~0=F|%v%r9BDG0ZM0?)+܎6^J̨`ܝb`Sͨ1Ox\y߯ID|B{etx@Dt 1{$Cr˕ A?1g|Ylwx qdIds_SY^\H%tA/J;+Ѡ'h9-.-\=~KPMʎ>Kz>.o8CrfM9=)nImrҏPdW&ؘU)yPX?z^ŖF+^Ҟ_] |p&,-Ǻ^MmO ^#nQ>R2)"'b_}I&} enVlNȸlכ-<WnðgһhBQA)"}&F?c_pœ !l%8Q l5#Q Db@hm˵3Ly,7|o4ysflp) >Ճ8Hga2+HS..X1# ,!, n?έY4kk8ԂĬo .ZfqL`Ny?I"{Rz|[*gAsN<@e9ج~YAP ֲ5\RX,X*uԗ ĤrZ0 wEpqDzesNNqpN_ӄ['B&5Wۧ3v442lфi@}Xc }*C<'u٣bXֈF'Feu׀$K#F DM/< 0F#!$"ST`AK GEFLr'<'+R} e_v% ad`֬vMyN 1[ ϚjiѨ`]\(5(f#p>9d=D k&ł: mncY1x~9"ypXc& NIkT6,;+_ޢ ݂)[W[Ci{!S)UNNZBΝ42fJ`Ş1[e#֙)E[ ]fEk Pj-d H#nt2F\18DZ Жډ3GB*cqS<pQ8kZhÕEWnp2Es/jȇS<؄Qt\%Zjeg{r,lnVdyg`#cCS]vz6>C `-B9̹=%"D"=/蚊GgBsZ $VarLT6:Lu,>JAQݣwZPw > cᗯG=-]a½i /EcUoT7y^֮pN1嚎7͗[L߫?"ft/7ʩodNsSTcev'7k͋eLiNV YŰ^ .|vɓ ^ufjͱ0F+]Ͻ;i(ukŠøzc|m){)oT06'mӆqj{/4KլfX;9ݔ wzlmQ6}9=M|eƢ o̦b̼}19ج;DF0~R{ GQ9]ݎv~9ӓ OSgg7R, b)FN6=z_䫗(V/KNN7V?kq\}),-SGuCZtS8?Mu}>W: T~\#|m]؈gȑ++z.5dMЋ7_+r=2#tx7O-7~:P":DiQ1SoT!Ѓ8Zu\@$nP:Erl%k.uD`C`'L,#h@=w˃|e֝xH_C8z65f"b--ܝ5f,ɀ+9$a@t}: U8;ƙDV(6gˎϷGW?!O/˿0x|֓e{Փ|DntT.߳27g̻jM` zۓObb)!I|,~-7r7؀isD\^ӧ>uƝP۳ϟӍqQG꾞( }O F+V+&jw;`OכS9%cn@Xvl&sqW`k?%cճg^FBKA\9oҶԑXz^_o)*^xtͭE[o5ʢ$űpй3jN IJm%#F$AfPFDBH6"+(}@hqkNpkt\SDNP ppKilcZuLG]B\bp#S[D2"4))C,[x ~7pH{OHp'K}[ ?O_⛞9[OP"&pPfk_3ޣ%21@Lrz7p؛KVSSD53dڐ%ۑ`eY!YS|nĬ覍w Y4l|%/z$ p22l*BŘ,F͹lV?qUy_9 W֏g{q6ƎUq.V$DmcepS"< A wQTT@6gHSo`g3POLv 9F&Ѯ*@7CoQSr$[n|36k5fM14{*kX=~ϱ2*K_(_jta6(X*K[N{cgJr*h-Z+M)bϞDQv,Fm܋G jI܎G/)=j^={b3܇x YS%1g;^b]PS+׈nݺŭ3NO׼}>wd m+#"137QY]ve/wnf2ՒmY._g/, gHO7x/K 5tydpuapqb}QGfN?@$Z%?T~RG=Lux2:T&ǹ$Ns*:Gp+Zm7 c`[?\B)#jYh"~.AYJQY31G$K72jdлLr)dF^2rNw@Rs4\b"%"a | D3  b{l?]z}Of6d^ (!噲@q #m\u2 9G$T| ?nٳzq{_//D_gi<餗~, |73_&.KS&dӾ#G[<_H{xW\ǗD鿭f@Ao2O}ֈ &8:qN!p |K·!f{UچǏ>}~xzТ IDATӮVt#,V]v;.zf 7G5"hf T+JPIo:82g>:[рq5,A imIh9uyRN-j<* h5e*Ef gvu4~kIM-YnkkWp -["0s͞! FTi/Ø~Q>ý>~Hk\a㚟g\%{2gۃ׎a;#.? -#^gS\&4JnѺ8w.\o\_=g{F=M| 4N8(};{˳9jb.s4!%#}| PM #i3U3=b_a{Չl nj~ aFTdP|S`p{\ xLʋ\_]q޺PGd|WTBh`lA&o{هpռ.u>'JՑXCtK#gEKouTչMh‰q_/qQmCskzO|˽Djg,w/Ϸ\ BYuז<\^ӿ@78܃C]CI=O0p]pu9 [vL=CN+Lji!g V~ak4=C@H]!kHuQeƵlZV'臞[,,˹:zxY,,"FS]]CwTnʤ '~X:F6ڷ O2gUA)4ЬG1rq/_P 7K};`5 Mpْ`"_shh1LEdKisx(┘ck8#^9BR {Om/F [+TRpf;YPYtoI7CRxs.YsF1~FESֱ3s[5f>)Z11qϒP_QB(=rU@d;bl񕧧 hB-b+o1]qpϚlkiچba`M!qF!2 q3n( /UZ*"IG9k1~8燡7p qz: ?YGEZGLmt[5c8 ~H޸6R1TWRC Bb"A-3f=8?rٛ ct_n&\9RaEV܂EQ~ʦc{}?'āfOR\'u/'jxH0nzrƩ<7}mvo2n?kB3 zΝPGϼS73{1_| r #'tJh1W曋#M$oL*9R/9n:4/ +eC~ů/=zğΣLh#[=s8d)w6 od+E9s^p-N^8YoxC?SNW_]pu%<^M@w6~:{u*p#;E|ycpsl8Ma3qHԢ앲O`peR٣:$[qjL Mk0J:QZrMxo(96@B}r8)B+6j= @Vi9d!)EU;Y=%,C|^hHewpDXd@e.EIH苞y!Nh[N2WLE:{w ܆椣psړA<#p+D"[ T[&i![OqyQ鴋_7ǟ.ܓiEk|18~2:ˤxSia߼i2S=@x6 ev(q-V YGJ^9/>?srvfup}c_~9=S~IKi}M@ IxGܦ#7{?fw9S7qu*wO6(c9ߦӾy8 kF 2ΘYw$vN:"j;|# (/K ԙCAd(զV7x~G2N|hl[oYwk`TĆ9Ydjia}jw]4 " 啢DNOՖn|k@r4b[RdH@#dN-z:(" aq7MC6XzdwOD5tu iO=1zp*RH## 8 H2"%a@ tqg½M{'B97Q3Rݢu~6U5۷AA":qmD] h:W3FUv7֐7{$~kgC]]n pAP)hMKd_G8l~Pئ *$@SMw/ego1Jq)/'fޕKyL«GF%g( 9fkV{6Gj_O \ѶnhJInt*S~:ϴ#≌6Pf7HBL/QV. 00<| Tu:F$Nb`pI K1YTrF Db~?g3;E5d{ɰIOb΀SkFV'k˵/{{HOPeCU4J~ui4Ѹu]??GOٜlpbj1 )~c쭆~Y3!F^p~qA];߿ŃẊ^x A[ݽì]G|jlV_ӯ[?r>W5l*S5W5~7~L.L[W~8Z8}xS˒}_xwN +ݞY[}7A~?艸 杝aMMz%(E7^ +B;v1^4OXL hVR zqpFIܧg貙 "b1lXh t98YD }{MFwfCå DY'Ckn4!r^FMEóٜA| ;‘%խ%ͭ%RCLwċ@<$6 'B\WD vMˎ:G)b痿vHRf{,cOw3lI}@0o 88ij*q٠xͶ zH, n߾W;L{?OüI%&'$?ɇڱ.8vpp4r9+VV8- gPX@"4`[{%ONyӂcN.DM $ 6-xc~_?Σ$RbLE%FNjegp`utL'g`& pxr&ON%9Ʒ~o |;ŕ|,C[" t& %'$(n|q5jHUSڭ%Y8=%˄[1Z˭E97/9 aGIK穭gAbIH$ҵĕ%DӌP1c61eFd[:&~e,f9ùU{o*N8 )&uؒh%)ma= q~WQP0Cꛆmb2? Gg8!$>=kokvg\b g+fuCS/u{%nkig`mC3W]зo!098gUULT\J3c$@& r !*=z%cn-R{l89!,fA8yNa?S0^޷ˠ QG^SQLcfNFaaҗ:jB=1 )j"F!XyfPf(vS|O=R~7IeQb9g f$jRp+bL~<0gL 9,ǚ0$[bCp؏4*q?S+U A빕=-1%圪iQ&nf댳JB֤L* ऎpyº!u}Σ6UrOM}C :bs=x ƘqNHZ[eٚ@vˬ2.El'cj)eb+$2|'EOBnlvuI&ޚqN7"T &0d֌.;ZS4{I9cuebo*G̪H*aJZa'6>CQ~?baj!0:Àtt BKF0W/REztPϕ=3Zoo鏷t1MAJ? ؟|~r{K)ya+e xL  J m $ʆ%>{_'}ٓ qr탲׌덼Ҍ,U' X>c Nw{yqcO|2H'kjڻˎu'P/8uut]=ʦo mbP`s. uf8ˬnrEn[PVhȑn~ؗ:J=4l2H@{㜦k P7W]gl|U_>u-<nm/φ575!TP/DSvYlv-'ܚ/yfZ!'G>f7޸ϽZ֚%4(L c , [3gg\G=MS]s?qP73NOصOrwsyW/~-xbf+fF*lmXܽshmޯa5j',=eSxe_'Oksm|]cqSP*TX*,3 w0V5R¸2ld!^%B,$6y^Hb&v!\[("TQSQK,p4XZT*fM Oiy;(#lB. D I<} ,11ɰq̎&u^6|ϋ -ZK/:тTeKo M IDATkgxDdc"61c>ޠe߀)G(΀=o=\G'²w:ݟg5BL1ba7^&ѥ5F8 .>y_{QH!Pk"ܿsO5pu=)2&2mӧX>~滳{jjm9MXmՆ۵-w5wW w刀LHzl6>#}]~ӟnGv3'l@߀#eT43g c%jd}~c1ĵ*i,,JpX '.&z!9dDr0Oٽw;_ fwH-&@Tjӊ႖O|6k0Ð/&dpA"OO l&9VѺ(Tyc1Z$-&-113KI(Πt~dPJM"vi9d"fL4)1I(d)vPc- E9L0)Vof2O?91H F</5"-ŽDjMX@vuUDϭDc])]6a5 !" #Xh|17j^[분u밮bݭ[57ĸ3KITI^L4Wjj1>u-1v)H 1E<c@]Ϩ`_?L|`-0~Nq!3E*&àyʏ+{>W܍$gRُ\@cB&*j1KpyX ӟ(Q𠛠F]R@C"711ؿi' 8A2bHLF0f`+ksB4_k b/M0̛V&4F(e l W5 VYg SbԔ rb`zg 2̃Iwg"[]r*f|J[KSW')7rwbǵN|cpܱ&NA#c2[XSCbPp#bMN G !p*!ΪgBdiJDNˋSYLR5VpΖ.G0>LNNF|lĤi 8=wmG ~&K$ڮm;R"]}dNJMA1M])?PU2>d|/^ l] "Tu]Vʈ, N%bi7y3`*)*)\Jv>AVGf2C(bHZyNvwFDҜ Q)|4,ceH_ pP( Er19(a/.Q^Ƈ”;/G)BX_Nf$6,%fXx.U٠(%c4b,+l_=QyQnldfOxGGGX.&}^s$Vr~z|6j:>NN^5 vu]cýuMd+Uׯ./?OO>~Jjɮݱl&,svܾ}c, wq0_Un oQU rkW2g<~Nnin*-ɓ3SKVܹ{6VoO':$;/b>)-P,жۭ;Ѣ rS [ɬ뚐".x.쵬~sdFjnI}~?6}Çܻsֱd䌼Lٜ3 t4ebnz–$ER2&.@4y2I W* Xdm 8pT!!9\0+<"!}8E4V&{O̖3(pӸ?8vSIG .١]'Fr_jsV4~˶T!4|ꐳ|t/%K-".o-ΰ%FrmV̶G{̅iAQhTZ2}/Y/R]Ɯ5%ڭwuc}Guk)gɑI\wO/F8 R? z?|0㭪&H7"u}w GlWXzt;(crLH;~XX|HFD =v&Qgo,#ӧO?>a`uUKVlF3L* UIVmQ`6?S[K߲z802mi*gi@]b1f>;o.xC@uEUY CU9,)#ИD#*u&?+OHv]pM?ٿYfg?%y>`no~Y;`<$r*oH#|xJ '\SRzq&cv!]ذk`Qy3kqI Lb⒃[B=6ɿCbl.)Ț;4h#eŋ5g 4ZCD,MMB k9mלjbpvGfŽ6`Yd4Kj Ft@۶1cvn9%4/P[g"I*ߢFTB&LB[˼t@$T"2IH $ {e6biϩȍɏlr2unꆪj@ݢ]~"eۛ凩;"}WUY&C p┱2evfsqAN- d=jc49G 4:٥AL#0hEH *leva`ZR҇ԺӁ?c^pPˤ/@]ժcN"](1&ͨ.,ϖ9"Zb|HW;|.nj%!̮ź{F(Cu1DB)BP&wo+kS]y^B#b]TU2SVV ;GDA’ןGg 1Jx) eIIfR/.YҠ#6e8vqX$l|1d]\DDk` F] u`WCILijLU *׋c4'^^|%_{ϤqrֱnzO}~G=͚ݮCv8>>z6'f3A>ܩ#+@gr#zfж-/^Ur}o?x9? OS1B|aKo1\xxh))pAS/(b] ݮEhAq`9x]){n)|jvrKs07$,戠A]qض ֎@f|r;wx_}_zl`_ G|ߺ%45CڶURe\ʶ>݇kpqL ^q#]b `L l-5Z&مD*.]3;tɲ[ ǸPդ`zr2,kjhz}.>|v$ S9l$2'],Rs^)&-Q/ HVl8=w.m7(ŷh1S;w.>8 ˴fycel,,KpbH#nTWȼaZaCړ^&m:2se׺1~o}ȡ|ْbY|uG4|7/(u~@SX眥Z t&0v35kwߑ?ui>W-s"]Ç|u~?g P+_pxNvJ y{O?ߦDkhI9]B7~m ѧ.E M4s"//+G]-?]<9Np`|8g{q,gyCڪZskLb2r1,qoi!RzɧOO;ߧ];Mևݞ^Mk~#MS`bD"H }8%3B<#5x$>d)Pl[>za]1_~@чK3..:BTV I3VGu0rD݊cd?7?fG-Y9 cb^=$g}סPK@yzc'͢4ZU ˹e8XSQل^L5-U7Uu- \lNYIT,TL/ӆs.b F{|2wd[n vB0zzQ, /! Vnc92j >l(`W[;2zCR{le}n-)[],(]@_rH b0No.R[>2 bv~lMB{ݷ$%u`Lk}?$3U%:^cH(uq"뒉F%#?e$)UKA]D kU] ,ד\؂,.˧;ijRc|'f 1Ƽpf0P~!u0%$4wĎ *1!NQ *l45TMBO]̅ћu(bak萵2+hQ@ <4,K)[W:{H1Ddc5DLF H۵HcYli 1yc%ƤTy1BJa[Jaʰ"ieJ5`b0W"a]if YW*d \Ŋ{-N`>vوcN̸·)z,],=L.0kS*PP"?v`\3uFmuhYITF$l>P@"XQ\:'8:k`8;fqU:bK;9JAnqh B 6kD &%'r3.I.;qcǛDCMfÛ MK$Q0YǩKX攻=^O$=fNM #W՜2; ̽a~0w;C?Km9`ܕ#v-t/Z`jXU-]Yr4ҠS VP r2L~5fx| L7(?V`ARK2#+`/"wpy*e޿ʺpgE_.׿7>y jȓ$$c@x2JTۖNI3ET6g,W 0mv`ѹbXZl7x/rz~F4B"-,zbPɟ7~;w?=zcf8W\.=]| l NxN2f,W';?[U!<Ǐ?Gåȋݎo}Be\ Cđy XW~ksӖv]3X6hv 18#,0%!GSθr)Qxv# Y/v/ˑYCh@z k?#I1^@dLˠmBqn )#wH):Rf:W- 2rS7F)b dy} op&Hhk951b#S0[ŘIOCRGv};0r6,O'M7p3Y쮟d :`Ef~0 Ux4&!6] p9B'-ڣ2@#FkP&@,{;Q{#bN_1\"mWr] }+`dMnHL%>n~~o8{-si!(@3łe4Fonlqe(쁋SvOY52ÚawѰgY:o:Ξ8lݫN a>2 IDATs]bT?{6_+&2:NRf?ɜrJ,KF6vXfA95PcLwtߺ+ }g9՚>:=ϡOh,qK[O=KcHK:9oZ=[w"WMĮ}%<$(l6BJb:iB.BV6OQ oI@v|cK:_j\ 0+~~˿W_/;wX,@\PVC>ᙞEeɠm*R1c.M,It'wҧDv;Np9cٳgl-C;SeH$ -3x{9Ws{ipUq8[2d^ͮ)"2?\%S,f!'M_G7# ߃Hq{2obǯ&f)+r`n/3֝ly=#̐eC9VpeEFGp̓GnVv$Q"x>?Hk#@ hz|ѶegkpbrT$*T̛ٛX]KA3v;2k \|_KGhK?!!|H5[SW 3{'J.i/.|n0p%)u*@JxZv- OU`$fj|\͖pɳ)vP'qV lNW<0&},r̚9l۞]{wV gvGHkH>ϯ+UpKPp SԧNj $%z?{-ђm:m2A* ~]wrE|CJn~v &Wsw[~O;h-yMD&d%E^8K 3qM;rܳ|÷ˇd)잏>&kFjy 8z_ pSs)) ;1ͤdB>iLcxå#ʕ9y|'{.8;YX7#8UDbý O]w|]O.;h2G-wU=72AkI A dL.5Qx,L\Q%[51m~H*i1ZgyeZke2UB|a* Q}6ga q(~QJUCTZ \0dFT(vdJO9kȒFMtC9lCVؤN_4&o z1g: l5Nx߲\3=C(2EA{ gi!*Zi$\p~G|{?;kkYC6`)]ȯ ץMF ;O(!V_)e𽌊WAW6ɽO #jհۿ( =|6ȼbgzxrY8B3B-O*f[8S'z0!"43xv3>~1?WWq3s6ovϿ&Z- `T=!47 ~cUU\ZI!w-)v{rv ZO [MGP)QŬR *+*xODT,4ҲrN%gIZ^ % :ڻf~HsgCT $,$j%CL_χnH#Wq7̸rV+z̈1U}HIAo`ԜW=Ф&^i%m4\r6<;|-hfsD$Bq[*۱zvl5G\sory!hA7 qӒ{g*XaV\> OI >ڼH~緿DFve#?| c~AdTX5V~㻏~~5Ixc@d^o"4u|>WٓYMS74ʭ̚|si 6i?+s=+دrj &cYۤ|#\le"j#%dϬfJR ͜٬1)&k4hbaLgpvMן TO)b;[[ܼ|Qv-\{c1[Leqc4̨c$Ѹc,G51mhA$pmvƽG=x#mALrY-n u-ml=]c{\؞mń"! %)ɨX$ &?Ed .'/S ɥE} ҷ<11ūEE亟J)4Ź&sf8KȧJo88,l'dAAÔoEv섳ӧ礨+,pƚ$h0UG^]j9H(FInwJZcsd9*kw-]K85sQfv|Y Ƙ%-bEhoULYqa 2- 9i%ǁUi)ksy~v}N JJ A ܊!JVֈ~{qV:'HӀו5Ȫd8?>Y"P\)\xYṠO3BCw2ٓ>NxC[f62Ϲ^}:``~7yG4u)-~?Y^ bT7{B =;s9{vx̯㻷5)kc4ű4tEDBŅKFdz+Zs**ȲYZ[SM.ޛ5Y\w~qͭ^6F HHfD6Zd7>>Ř>$=Q3Q&3.E;zʬ̼[DуG.4Hh {#<<|9\LE XfXBX8V1.iMV3 d*<8wl!]BK*mHqçJCS6s*A Kpjx\Y&r,&FNl<4TfeXKD8`P`F3 T{.B䬏7n Ϸ\۴ECW~{}Cܢ68߈-z 3hW,ւ8WFz1tdI@z?*Pb( N,[LN! rՃ%'r!:q]@e: .O_ QpO7=k2hHLhͤT:XDI^ԃٿy^\Xf٧%jaw;-c)MSKc͗_~< 0!(j4q,l@E&}TXc8iI 5{_ՎycݧZ-)r{@}~7igfR,.Uv-x8 f5r p 3d-+IDJ&UAEٳݽ(aOz\~we~Nzɵ1D&Y%two}ybC?GJ, @RQ)-t}doVq5o$)cfjEe-Muaї 9͊zNw2yGCG[4 ^0f-Q{0`d6pV~K ,IzƦ=-!ק<ڼKnwԋ^ǺyqJI tD%@[v51taf=װ0BdKfT9W1Ol 7ehΪJ7H"b v`t̆)Z^>(aD F-%55kU3SӉAwIdo$u2i/GmDqFpr$@+ɰZt^aADhf{4H{atpU+k+8[ݮ6e·)ِ4mՈj?S= LKٖYE^v"Xۤb6"8>Ĉ cU3/W9YCfd 21s,N;})%MY:J\瑘 >li5Գ=Էt}Xd{h GK6i[T &Su02:q3+XL]KgꂏcǬܾI$&b,/Vi^㭷^ |p?;?e^oWt!0CpWr!/ݹٟxp.N7Tŵ9fVpOxS.6-Ѭq?{~㟰_}>۷cEĤIcxilXڎM1SÆa->'Ca aOk`yőysDř$˲{RN5)qZ(D!HG+a [͂w\G)!sُ GQ8y2h6'8}a΍Ѱ%>ykVޠCm5 lG| > tUler^Oϰ8Nΰ1_QB_;ָu%N `9zkx+?|} ʤO9kkܹ~yfMA-.m ogB}mjABK]I{lr{Tb)rMf`:̰%ځ1tBYl=om#tl$]l#!?MU3 6)r"u$hmsOPѪFCl\rb*6B`2Baibqz0w5(>DT^ ś q}DM,ɏm% w^t>gO/X/=rI[,9fHj ЃuT4>j*jE{\5{7{1=#bTzBHlDMp2 \;m*Gwe>8BP~"1djf{/*nb͓= ӈ =޷}Cnl+m˦kt&]Hz9U@EcY_y#)?Rg( aJ>^NcQ%efRa]5+ůdYLΩ)ސ,4͚?6Riأ"v*qʻ$48pg&?j8cw$&|p1^KMA3P0k'P$lUX#M:ؕpXW1p~2c{| y܅Njȅj6˅gI;WB~$ ] 1A@$?\)O|_3\= *}ײYoܤئI$gݲn麎еH,cfзZ4:5Z4~6cvı`!R,Lu<7%ږ1Flɼe >u`$ pb;.ٮ2e533;e./,M5G BѴuBʌ3\plmpৌQ.x{wFWa84C[XQerĎ_a|N& w,>;_;?a(P:|o<8Ӿ쎿\)0}ջ)Fyee|{EnǧLʳM~>jC;;H?<ӏk]Wl oKj*7}|\y/ IDATå|rG/ 3.l͚O ՝ϫ}ZgUcz9b]"BnY.']|6SVO/8!t S -Xx \{9c3tr%ܽs޿σqpp+>xb>7ob6ox]_o{rm>|o{sܹI8TdS#!st{#nkO9?{#vr_-z?={׾\u>HϋWҴNi%yI` {D>-}!>#zQabV.DaEY,B3AR˞&0"mNafjT sg%9e)?yuQL-}hSb+9D^&1$0)@* EM2MtDkpS: [Jc2N3 /9{ҙE5pPI5r;zͼaۊZ Vm<ӄWxro׆ NYўᣀ>Z [6v &XcCnm &@bH(׬yi !И'۔ }T|Z-dhu w5]׏g=@I@{ڮM6Ƚk/%V3lU(Y$Kc,@^04mZ""!n QѺah81I:*jfΏx)wK&=\ dʫ\.b8-:bS6h"fEMT_@ &vRG+0Lwoi/\y&ǧr]&ټgJ|g?6D7a/Pm2J'j;o)kZZY"b5sAcg^ BEot+s1kZo2$7ڞs@e5=@L5"1vDnи}Q!!hͬ mj#'57LsKߤ1x$B쉱C5 6r#=lf1儰Z;ö`dšq8-]iۖkٴ[m&t!^n{zp`Z $}aBO" @CQ%'jD?YT]:.%s83! FE{RUo>Ug[̅/M1O&C ) kkg\+_&^7 .0n̥3*fI$2S*}B$þ!sb3^f7_g[Ȥf2%1vlCX4Όd>kSBV`jd8O ~u޽;ce^k.CꜾa\=n#{ Q|>~fJ*{;\%_:1qgص|>'] \Od>&i*77YP][*fĪTX{b&MP%,C$SF1XL>1cTSG0 'EJJDNʬWUI-tz=]E5'd=SJM.[4]vaжhfּ5i4,*X80QӁ.4P kUUIl) i1ؑW#=>(icrfF6_б^IưNq#$3Ys&:= e3ȳYgd ]4|^x/F =~vO _aMRϻ%G/E-5m~iXwʣG?ޒ7rx:ÀQavnSٟ8fM͗%1)톽|+1M7 khTc`{^K_x7xu`'ɶ1NA??_?bo[p5''G=z pG3=G,??~|p~B pM~ۿ7~798<QZU5lc\þw&"}C=kh<{q+̸#6{4%31TSDt֘ ^ KFC0Bg1Ba, hPk$yIF#.z)&;Lgd>VJ$3'NX5iıob < K/: w{*q sAnņWlÂ| VNJL5tkUΎq`{ v &y lst #b#JZ|0QQ\Lv)oTu"Ǟ/.wK6𗏶X h<_V(8ٵ㴽@D. EMb3ZY,g͜66ҥ(deP!Fs{rsjV]KȩtY}/̳D B4^c?]LI: 9׍e_4f"1<脓4uT: uf橉MUh,b|& "$~FyK|E񒵶5 }оω%aNh=<'{zqzTP4UŞI":bտFB_1Dz߲Zq>Ćj=65~\ŷKD AaqzݼGɲ~r}Σ''-/hlՆfci8ػŬIĄcUZsR2v8Y?]qvO.0(]_sZ`:ھm;zw-w1{OiWHEmk +aWLS*m/x@e L@19b2/~h`(IzBRlNSzbHYbkgTui3ئJϐq2Y2t)[l$~ ,%2'Iv$QMjmK^fyȵ_T3$LOTc\<ݣ&<2#?TG5I _sHҿr="I h$_D@T),yom,Ju \MsDC/N9f[YBdA!(zi -ElP5R$fU /fyA'2<͠cO ]a2MRvd ,Qv12|`J1FNHeBT(r%jk4m.B4iJܻKiA"u9\hPi !NN(zHᑔvcօs|$!=iJyt8N#®\MIAY '|,xW\L&)&#DHld'<6i%:~&ƈ3cYRZT e#d,L =8(Nu̸,dԬ7M6I?3Y2VG:?vH[*})oWdp^gFCM]ů1\æ\2?S;LSt:A +/+2h}ҵ?#7o Q>2_6l 6mQl6O~{f0þX3ưq9=}J۶3nܸνoLfɒ-wa>Q nb6kv7^{kk], :73a>?HnyӇ1{ *HC>ϒ6*8w^;jʙ1L V } -׭(?2[bC-&CӒi>@*\dtQ! d*M,c} tz{SZ΄5cPHPB7,;cHMـ#ĈH}^ ޱ 1tl7-S֛5 mxL]k{~u|Qhf7̚l?Sqhf Otl1XsXT{Vݖ<Vj46!F4U{zhƚF mx M5ga-ַDz+}KnixSE-vMEɒ6 nUهKh c ' ,"1촍~W1Ǫd֒&iJ ǗfZHeo J=%` v5LJzUtEOӧyYo ,j(3vy.} g9ΩY H&dplHF*7g6`P'FjvKYaɲIZ5(dHCh5&&jɀ.-p&<M*[]M#ǸDr RDJ0k%;Ͳ}0ys}Of3RU$j"R햮o'L͵+3> >v8GU9`q Isֹ)/4JAg1*>bdɬޣuhXLcܚ8I I_UU9x״;`0)#/nL+ фʺma#?wB27 Ĉs6c]KKﲐ>ΒܚIcp)e\ $YdU;,ny lesHIDu_gݱN°ic TUeVMKR5Cjbx N|BvL!q!$pA6Rlx FFjjzst,kKr0$a, A84-t19tqyCϛ$ַp0  Y/~2qI#%1>>]0S`"̄IŘ'3N1Eg5CWA0N؎t)@yO)6ѫWp=MS >租 !d6EZifPUd.ơu#$B)RQQwgR?`{1> 즫:&g|i.9:`wyc]f9^^3ϼ ^jo Ui*֛5]Mz|^_etϨj1cKq: &KgH<}431bab2 hێ*quRUY,𯵈Z**ؔ=fa3݃>u5OyS^Ywְy|Ω(͞2{e}͓%~7u|-j{SԌhg9x:a)`A,N̳}Z%Ҫ<- 7OM6\2;1(Y,5gl' xzx C4QUMP+v$=fSb۵G$[ǖkcJ9,(XDY֡'J5s+pGɁ "sw xTRNǚFװoB{,03 9۶k X- kAy=ZfM2֣HǢr;Gm ,HO;yU QJ_XTcBԚL*Eg 6E'v_sC.ewKZVǶP~'ǯݕNmpo*Z*<>X` l7g҅B-P7j:m񱧞;/$@9$>(Ҍ)Sr-1JQ#Q _;:'m?q\TB@ F˞@EHj`ur_yb+lAˆ$5 ^V?h8D7:'x+G!bU~ŷo*R9X1I>jA^Bz9D92׏DBW_-@_gĞ|OI^iYe~^vыd 3a|*FLGBv%vZ@:e¶8LBI-9Fk58a=}hf6|h;G;BL59]o<]=@0)=z[ۖ*9V Ng]3kTՂy튾_3Lٴ+..jn/8ܿNPK>.դ{i KSQh=bָzMD r2Q$Sfo.\|Ω,hM'PB&J*6m'6>s$\}jvcnpw4ՒͶMҭHβXQ/"KCI&τxt)π(1gH"?$#e/Kb>KVĤ`rq8eg3H0bxv*cV)_ES9,L%I%6bJ$in5"f (y?+6uyoġVTD=]%Y@%ipFȑ6+K*[{g5l`$V&tzF4+ؑͶ9|"1$Y=pP%Ds.*&+yRq(6S64%;)MN&g'7]#ȵ$#>L~э"7d>k*]H1j.[XVa&FE;Rܶ%pJk,ZE.4e<%Tu{?g:Ƶ&k@Lg00`]F4lC%J4huY/hFW7ݽu-v3 Am&6B +jr%!`m&v!)Ԯ3biP9~IvN2Z'רb IDATjn,X1&qBCkČiR;kţ hW/#)djJbsxOlU\3<2 Iϩ7q&bBۚTәӆr( V|lsvMx$;s]޾͝oݥ = DfxwC1tYEa ]ز7hm$֊-/t7X,pcd▨+c?d~R TBGv?QOJHjI -"to޸oܜ3ש'p3sJm`VmB w(*.La-?WOtys2X{^M"f,t]^ $Q = DџuPڒu0 0TK`(@[WRY$$Qr&9ٜIRFk1}5T$** <U4r={Lmtl)5|b!x;JF ۋ&r<]&9є,(SuuS1l$C4 :Ҳ.qRS:IK-]צ3YEYu-!$xW)&#` !>ȶt}cW%$d<͚wi{-ne\ (j:$`e'؉J"%0\'Z+$+5ɧ6|rqwHWC40EfAR#CҥާL>lVR0)ěgzK1iJ˄22]lir 6/_K璘u&?3\D5bY6'2q drpӾLI!&#-?~Ine+1tgʍm2ɞ_?Űtin4}_\4_]Vrwh4\0f!T"=1z5XkSZIZkF3XPe0%kt\@uMl^i@WU3ĨX>WͬAo6t1uBJ˙f,b !Ɯ>F>v41FXcudݤuL|0%=R:lC8hLfњ q"S45Py|c A՘3̸rtle=^L_6^c $)RtKt"H/슒QrKm 5ʻ !%1[֫t8 #4=P p. Mvn.IfGf')~dܧMXeϽ Cir}rW>|W?}Z-hed抏Wu|?窿>B+Z\8kX4$2b>cʈPU)EPS~|fi[Oo=HEY[gSAsRN6 3RRYˣp f{sgc{r*A>"הjir Ę͛ôjaƗUxJ,b-&fsa`vI\TjTj*\4Ygp\UelJ;lD$wٔ33=0V aԘ\6B̶E"8 XS3-Gj975a}8ӞG|%+5fjuאiZƝ4?`ҶOxa:VHhGzcA01*h8\8ԬiD|퇞߿y[ƥbv61A&6pd{5῾;cwXs~~:8Yg,@e$Z(b\H}kHn{iF }ag{uJhrL?"o!ߜœ iw6C>2&KB zG~O6|ѺjD+ؠx#KՕ9cحi?qs7$\Jx[_2w?Zk@1lO^H HhA쐍8ר$_oy5boi!Jz!ɚE#%$91Žk%+!el%9$9JODzz6$@~yiqbWM}cBf<航ڎruM]7TM|v)Tv~5K-Kfd{ _"cFY 96$681|ӮWlWOٮL \VQ=WS73f+Kf:JhHDJoEul>g6 E9EH5$a@&6|uxwII8ZUMrkVUfʏL|!c Hx|&lVˤ#؄U͌4?ΝoJY6?$ ﻄ}eAR4jS }Cfp~{ZB Y#a)mVf3l͡dc u fط{#1MAɘmТQj b<%O;  15`G0> ;uĘH 0&gZ;Ő4s!??/ zHz.X3ʅRL(>hYGu^*;@HW-AuH @5I \bRa+,žSUi#6M\AȼȰ!OlOKꍚ"bMf=\N Faw޿<6ѥϔ, 0skGU xkvCH/DmY.)ٮ;n޼'wǻ=#Dl=ggg<~rn`aTcUl]GC+#OѰ=Y^:k{JS\lXܸq𨥪*nr2Ōlk*>y&LJ /B3&&`'+^$IFDu>Y"R1 ;Vs4[d-,fT0TjRmbSaY*rYbU> i{.$gy tCZv% J@B9hbU HcH*Ҹɑ?1akS3BM:q8< #J;b9IG!y-gg{\f+THMD"?~rA:eӟzΉWz _mhZ-`^i}EZ$e$LQ8L|3l%ybyw:y|G['-g Q-xD4/\21`MWxuy\}zoEgTem錰ņ [H `RDiyt'Yw:χrʬ6׾gX; _/oO?ZC}H'"A+2iJ;TN>u]Op(9T>JG4T4zɶ>K'HU|%r|ңxR2Ɇ;70D%4zVlHEBȸѴȆƟ!Ӂ1 $@6xӖsYqm!qneAnmEa('s(ᒑFOn׬ h0dl9:SЁØsB8d=]4'j)ќ)+0p8d5RJ$@$T͉JNЫ0EC$.0jɥq*g11ה&WHSJe*%=WxB6 f۵R-AhBtF׃Q&Ձ13QcZP"n5) ӝ-0_-ӏ2 _dGR?\ma>fkXШ6`QKs /MTy, 6r! m] xè\~ RxQdc)NSFwЭYoN3MFm>YBKVk Vm[--s(flp~umqd8HI쑜P[< fCWx}xt -k(,#c'#igB c0> XqԥQ)셡fޒ=? "Tjli IҴj1JAcJpɉrq:xo952&F $oԉU5jxm{(+]5UoqXs;̻ZSIc5!^q4.дʂQx R(U͑b\8½3g#9܃3 H\j8&^)RxޭWX+< PyʸU`)pJ10\!/_qR8p5/T(ުHphRtĘ^I xg#U(D#m,9wL82ؘR+E,5*i!rbV_KC2k+|q-\F@!/}^Zo. MՁg/s<2 52xX,4@]^_3=RNJ䒷LY *P<{δ (Z/Y~&蚕V-y שhRc&bx~u%dZ"sj8#gRl.곙ǵE3 ']p.iĖ}ǴkϦO>~M?/uB]4CP7 ^o)zE=D׭x)Þ'O3>|ȳgǞLǼ|+or=;Ӽ x^+3ƞK^mQZʮ4'KI5Zư^,!O㭳4&jʽ3ur ^gMbR$$րO/MnF[홍"#W$NsS{ðg|в=Epx5fh&Ï/ɏ8e< aќ`06\Ij* VlSuٞ9oy7~ȟ'A$Vtdͻێ>ƒ'2y><0J)U>MA ]|cG_0dou{㣜^\ % o4[WOҤwÍJ Rٸ3 W/GƏGW~rD̖ $ un&zTY)~o}\*q 7n.mw<g=twxqub`+aaHLޤi"_}#I)](ozߘbidN,֏Fu$=$$ `MtRO\^A:cK*8[AsG?8viG34~G_0ߣqP꾩CC=1`: GR!">r{" lێoqa=?_0ƞ!]1feTa̅+[, C"фI+ОD':9Oѭ`vHRB*STOXntBi6[28HN=ǩ#TQ*Q Պ S|5\g{aU9͹h9+grNZU{T]rpO<`2#%s1 dSmKWZR UaR[#Zu+BƷ+oSn8aObϰ<zJ (MZmǘ&0:upcAΉa}!0F+LG@wR6-Lv9r6@߷ 9+nrjCS_¥#}~%@8vR;vKaogT4`8XU+* zAU2q%fEt8 a/BΑLmSdlZTt1oMblՆqvaQ[^֌b}LRI 4<͗XAOsFwRW٤ʵypU2w7ql-urhXrL2_[D*e͌= m,3wy4K5 xTh ZO ̇A&w"izp/.-TkL'ஓo PvkSvt^D3eq]_p {q8Y`7B]%3Z.}c,o=gA Ilgpjb!y'~$\sqdmt=mRoo|lG~Gv 7glROʙɹx@4-JOb^2e$\mۀT:є; y~Z8b{T4{v;q8nR%Zr// c\NjEfjRxR bV* `\=XsfTsLXGJK{QjYcaԴ̄Y&%t-LB $2o.k6trH_9? t&' 7]δ:^ӡ l6'8T?&Ҹ]z:.ưltE-L_,c#]sB!}pLJ`ٱ?nc>N#Ur.NinI睧u|e`/b yjv;} p__lq߬lk8?Ol;n߾_7֗>ϝZ^uLjdо `J0 \]]Zi[UKe<\w">qcdmXݺ 8Є cӴ ahZvWn-MW˵i,8Sķk))ey?@.ۍ-ŒEhPq@j\ߦwU*2E9gKcV|Na4EĩeR19x*82RcDd*T0ДF+ ^7*_N*q8"J6칏yߧgs"xHxSiIDu g$:>nM>W?r{eV3Wx28< u`v݁1=>hpHTzm +nc|HBQwH M˜j4~̎PGvZeě rcKGQ+P[(n|F?MNI$v1Kผ/ğǪ4M':w}V&\S0 , HLZ9J%"q^͟"«?G ._+>z0XFVc]gX7o[;w^yB"JO^ާ\qƖ:M q ITz|HȖmrQUsh4HN4XIX 3P?s? 7N%hUዝ{!>x b5;_+flk++,%/T J7NT|T@2 '-B3TABCjH!=yt IVNہF?tFM=l}Kp3!#]ὠqבr}i 88q4tYiL11\]enܾMm d[!V c"WΚ%Gnb8K. Sb;Ƒ'adH'-M8Ňu6xi- J6} ZV}Ι8*zmD3Y2I, CˤJ(V4J%HvѡZ2҇1}ɢݝ |7_ϿUS:`"0wlJ??EX}rkQT)Dn-}bpd0NC"F ׄ ;FZ a=&o]T-@2q*~r!WhJ34 Ʊ^~>r HġxC6A蝣irȌÀ*OTҫ9#\4M @L, c9}?Mo%8e~T5IqT|Yr4u%~~T^|o2G)e?#zu xtn^gNNO9=;oyG6-lyzg~o'z~/~u^Vq]ҭVt]slOLiҢw"^^D9wvH!%k[ 0zlEr 4[O_"vOf{ՄMfZ/HULLP^)BʵZ*VWGecƥDQhɃ 9PrVR1M/L0uLbu 9bWh1ouNu:?%ۜ řըwzxM61pWZΥgꄓr>f r=a'F/ =𕛟#9#|!x]1+?A{ϵ؏oOx!)%-_*׿nݺeE MHt:˰WՓ_۟gO<{v*u@|FҌk|y[՛o8f_2-<)w FRgǪ9eBH?<\p۱"*'#%.s?g;פcqnEBx<~ #'JXa Gw;BT\l6[6-q%V]g2[r8gX]]hżs,`zhw!R5F/3 Պj[|Ӕ ι 2∢X`Ř?끶WfUeYNk'D(j=R JD hYu9놞?X}֗*Hbk5gө:G({̇0f > @r-FaR * -(' 9m1x%"byGU[ц(%N;MNL@)@D*iʼO^]9EW~.TAڇ :lɫg8DHiƥѾ?~gZМ=6'B.ٲe<'v/{M빦5aE<8M5汚4xChrY31k4=:y0wL_}.h]/@^2=3)c \O7]-"΁tǿl9b_1vQ'5g'+s)m>G^C#_|9;YѬ#oSW_޽W_}vÍSYE[϶eµm=OG{Yo9 δDhGs(,#*҈)Yh5-pJdI`h$f2Rt7zLh"@+-]$* ޸&]6ᲧQ+*@# `b׵zjpU6N#k ݴ"Dq{d,8qMjyزґ^{:k~,WNxzܗ3rDnA;M̸$Ftn4M= ʵl1$^EEFHa늭Yp\ӬA8"w| g-MJ|176;Ѹqg?ړ?'9]>\9xɞ!7jqـE!ŲLOQN|tܐhO۪ƍlONx|nǓG;׾5x ܹzi6S(EXןeDdLTXa׷xO$ټ]n=}nj`_{bxU$C#Xdxdy@.) 셐G܃w7nߡV8" dye;pPB6"{ś&DDA> gӧ m.eέɚ¡ox_S|/M}0=FV?bs<(;Y!k{$|ώ)UACxQ4tڼDuBi0$s'\Lm-}$GO@H $ ;\nphJV}U4-bIǼ#.m6x ~p1wݕ/n1c􃒲GE#nC# %\HCĨ! I,8 nT$$b$ggq3=ibA3mVwU q)5$A "͌=?9"ѓ|/C]ɔO?xvxBj )Ρ\ @< bN Z(f祜'׌3Pj94F7KD6kl/q΢/5Ŋ g1j,27,MX'pZ4,pԬ8&\JDӞ~,H7Ħ3PM82l@!ekGV0F!,tƓ?"9X68+ve̙ui^"a*BI+ΐwns6}'0T7TK⳴#'?w&0d6ȘG'Hn#lhz#ac1T0fzAGߔS4W{3a!&<"' .Oϫgʚ;=yZ>˩XwZ}pԱc`5 %S1h Qw7Y\׾][/bͽ g=_د#۵mPaV!Y?~ɟ f-._hhh .ҏ8yMѢXV O6J\wuD RfAw8" '9ΑmTc&i Ɨp(q$0 phRm_9+v97ne7nq;v9 *Nx){\ƁesŊumv{wWJq[/;wݤ+9FDh$2Ю8}pde`mrbc4~lDmKF8PB$iN=3wk7u"+i@#B @)V Es978Yp#EO4~Ve8d;yOw﷾țZ ٣}KX=D:HA.3CDC{z6hYޑ9eV|eZw/|.=a/I$N6m@!'b>~` IDAT0qrJ2#)Xtx5K,`l%5)s8woh#O9aP¦^]qy#'44-$q8ݜpn+|V v)fUwećv}CRv.P5'nr*&|ޓ%3AMv6iʥ@geu%EuSUrqyQH\@..Ak&4?#}n 49ȳX)'~s^j.|Vlgi-rI,ABƓs3;&9=|<,OݒEy43t{\Ku@Zuxlyzױr؋tFO:yrJ%72-1]ݏurd9aLYPꮭ"̳v}>ju˵/p%: `qפysSW9iGo~mJ7 ޻rPb!cHwmRsNd28JU9SOpKƱt_NjDÀUU(1m֏xqq4oh1ϑUՑwD(a.&cL Ӷ->xa qUhԊmYMBJ1=W\@~MļSW.9Z4WEwȲ6_,T\j V/R[,H̛lL-$,K/kHʯY-7{SA DT T]įѐ1m-Mfױ\[%{*f|=EdVS3ړ*LQ^zh^ "ZU}f٘zՏ+%rt}~od1O˦ VX^{EC-^R)ϗUYkx[jZ_jL9PslϿ4E<ʖuiqYߛ9ԨTXoOEr2lOqupu89u-^}UάHJpZ OCko}[ߦ'{es=)6:{ r3'CB+?MGX5]DVն}bszT/5͊L+ XbRN!0Ql8$y_W݂㳁HЖH&S!E"d_gBEIVo5yX($Yu-\IUa!}A*DW5m?:b.gnWc[čzF͌dN!өI]d #[ױhi~@NH]p5>bׇd,b FGb!Fs34 2NGи<7%ڰKmናq= V6th7;<H2} u\ųn֜ZX5ɀ$V (/I9"M 9I},1uK-m=.C @IeRrJ. ;᤟Q33U'٧98FB0n-;i-t€,zi~*E*C-s%8~+lNoL\E]rProMRF@P]s L&H¨VH˅>U, `K$gFCNBhZNnqz.3ڦ>,< L[1F!Bݞ1%͚GjeeCobf o؝wZh"'JI,S6?ht:}dX"|+Z\kJ<\=~cFmm SHg>(Qjm6#cX3+!vʴ̗`+RucD Nq!3Mė\S;oϊ{sB֬$5XaګSvxsVܺ`61MJ8SF0\70;?M;ܻnC Kte" $璒\y d)^pumIqz]Z >Ī-{hcI0#!*D$P.PJNu| #5UU$/i!別$-R.Jc~RJq7m C?P#gec0X Ԩe y4yzF1z(MED'U P/%g!sqxÎJ31VygFY!RK!_ h[4RT@sF lO E}Jy7P0xgPdcJe揣x\lHpirPuGxVR5Gh.[}QTuo1{eYڌx-LcZG*yrYy3H$&Xgr2@B:]ۅ5Z,L,%;+yEkw9s?E(e7Ø '2vJ'[m\KخG`ϞV烵cJ=;M'wS1lrq,z[|KovVFj>(~hحΔ]n޻w¿S#2?Cƽtfc|>ӵ~{Qsj@LCƧa>F-/pd]%u [OG> ܖF6 xǗ8c WD$Ql<r8{p(zs - DFs#nZ>&'Q?r )NdeZB!O 0$Uw;7qdRB M&&Umbzݑ5X ZqރntޙT fiiW:,cd{WS)RYU+YM`4ٚR 4*_ZR d: 0˫+7~;"3p*ԀB 4Iͱ)6%ےV%kY~7d{PH b,x3dfDl?uӐ%#SvNjB*M 1 `@* CmtUm=r1{OvYP75 vfygJn $Z{3bfߗ#LPfmnZ}7G)<8L8vYn,]s `r9֔67BH ɰfr%Ue`I >m+a%Q |42)ѤҨ/M PQMpĊ\1Uo&z穪FG*iz> (:4*"ih脣5>怘wa ˛vFZє!x牉1 Vjb9T@g0'&&h 3((,n}^4|fBĔ5094U%7's+δcYi"~Ɇ&4Ns\Ra%%3' |zSQ-82tyϺ;Ɨgr`+dhHhf%9c:Xkjurjeh&#>Y%rQEo9ݘ+,3Q?68k3dTU1VΗ?+w׼6Lٛ&X~t/fD+׬[6xnݸ޾*bZW:Gu햔}w=u]39ч;U5z۷w^f91*͆n}6G[RjS>cu9yl>l[oF#j엄 I[a~ɾG*1<ӊV&~GM  )&iWS,V4‹ËIն.NKl7cUG>-D58Kv6^ksWǚY{Z9jk(Ftͽ~rWWҕD uײyJEcs)\ }X[ R]i9۸{Db pĘYtekM "J_M~S%kE.–CTT"h0D*|vP(k+Н`c!BBl7HP잠em,{yLJzNBb[WöId=1\1qqJw?ׯ߽yć]49xxx5'ܾ9cf/Ϋ@\@)= JG7IVq\ "i* T1ԮA`1[8Ht_$PMRdDGJ:3 ZNw` r8,Ld|!hF֯L̄HY(V$˜2$FE5$E-~hߙ }m~c}  h,ѵݠ#^Mk7A_UV DienƆpERiZZ4ߣ3y-Q#9{ 9)X8$ĒP10Y^$IR/*1*kzDðXaCoɑޔJU#(fb]+`}HqK1B'Ta%2vUǭ9&.k$j|ι!fnoΰm*>c#e<+^<0܎]oG^v T?zu0;{.`xپ)wϷH'}rSMF#s]éC7e:S)%) yskvv xj紞xN.s[vپ?x`z ;ws1~X$ylDVg'âre_;Wh%l05kM@Ҭ%'>2vD,,|˚qwJ(YRMr1;S1PN]F@sĤs{l54m}f$;LmqMC`$\p8VLLJq{9qj4: ݁O|gnau~27^F\}||mJ۶]oꚇn[bXwxro`gmsY1kfTueLur||s'''xgoÁeg+Cn޼nMs½Hžgur[z-+{O9hj1`(,\{*7ufe|o,bQ2'=J։vZf]lcNl\)+4gU-ح2XJJUVTʳjdd ur36N9gd:> ?;N" 1ClcA}kᆟs[$WTHH@a>P;Ϊ2541qT3fH@&? G\p}+ Wb/ Mhٿ- 69'("6nXJ'Sr\ti6ulb뷓\MQdߐu S@}mk~?=IlD+)[h?]QQ0ᜲ4_2ךC>,MW-=>F}"ZtrMi̪+Dkkf'Q;lg/8.qbj~YLV=,]CrW3.q}VNd)SNrLl7/)Fc4wroNqtg/IH ~2V:՚cMV] Bϔs "ٮ| IDATxxAZxTɵU_}jq FS) ?iE>Nɵ\:b[K;%1)y*tɞ>drꐼd‰7p󦤖2f#{ ^Ov^xe89'Iu%JEleHe"[!*8{ɻL&eܐ! 28I`b֘&Hch2wƿwe(דRA%=dWu|wx~JS2xcs~,t%_|qCD]`Oxy^c`O}JTub?")9-+uggg/,KsNO8>>#>~x{\9<̠g2}g |L1XFN{osv. ^WX,CUݝ`kW8{pDٮ79ׯ9>"r^gsL֯1/(ϟw>NF$%ܓ~. VҵTPQc>A@Pel<X ̀Y`>zKT9sI%%:I,tM5u6t5O u[ƒShE wy+mxpBs3r4|UiƢ$\bkts6@!tqCk5:+:)Ц@KfyC.loX*s^dEM! b5FU<$SIN}Zq4 xwe_Apaidqt-wrkR<)rv>qw%cX  )"9T*h5SMKv$e$xplNx}䭏dt.F{|_7<=3Xql{᭏ŏN;'8z+s`نa˹N3R-;/,Kx;|/ux[;64 Zāw5)!@LJBH1텶uBWʶڎ*D\*o!MHG ]* U~-JN;*;ۍ:;ha'7ڑɜG1R(qsޑ]]FܖS](>#~1Pe ^@1)qUїqz' ]yH.brNJUUro[oarL]ӣG=d:!~XDȘG~`̇t;ksb3ub*W`eN@ =0:M9żAeXXCn띧fG!mTb2J`F}UWC??dG+_J^s|DŽXgp3CU~LAV"Ls !*_'.4ijkN,D~ _*%> oLpjȰVMYa c(U!ƪ`5ΎSHcۓQeVU5ӔX_"\*94j0ϸpҁA,Z TMJ7^rLcfM^k`:2$) UcZa֩M|fcIR61pXĎǢ?f=6CW80Mi>nשitgϮS'/աLf?h}U: CbV,w{2ٿ palGI~6#] m1s̴Ovҳ=qWZJ b]5)Y3Ct Uq ˽)?*@z5x:y)R6M@.''Dq?)c_e2&U*P 0;Иtγ3#S,1iI#"$LO *.PhfCcŬ:ly@3>3_yO oB)OQ^Gxqpÿygn=/spp|nACt]7omyg~?m'4Wy+W,,gI8kyU_{ܼqEj8s f~g-/˯h/[VW7!!ϒ䆠%W[2rP.*̜{}t*oǀ1/~J?䊠bSX!9TE⌺!͊t9/Geъ$[Ԙu^y"3۝5ˬSb{ZG RE%\rO8Uf}EIsZ m/5w +zu:hn[Vg9=NS/3T{T3R*-YnVGpHv'WSz:"d wi3Y8DyNVhqC$\R ilʽ@:Si3|0Gێ*;eMbkmh^׆~ At5(M \=:ջᷛ dYWw=d"47>E%Vs ?SBeMfNQ r [lf1`Nfpv9Gln" nbyw~LKα=IZg˞ )wp㩚Wd%jkBӅ9٘yUL'cp{88PYVyZl5Y,a>oA0&Ol-uzaqe339ۮt-K ;_Lh4Ԩ ,u|37+p(8}==!sBYٟO{Nà u5l_޷z識8 0/jsb419яij5ԑ !m3ZepBO0kOØHJTkgD3[fN釜=Xl )6hxDd̶8≮ JrFL\ID\٧d6}zSӅnK VSm2)0' qy69N x@5wY:n4%U]{kk, 4e덜ir!5̬E}|mm4ɕ|%p끇7ukق8 fmnYvR gڶ=Nd4 8ms_9%+ٜi'a6)D5@>$ ,l NQGD3FYlWT#y?ńj cH Q'HbU*4 qC?^91'*+4w1Y )ET#^ )"ވ4> YjqirB]CU1ÁAuS GbU& jn!(:ʂkKST=uiEsE/5])jO'u)6g!, x3h?0 5 XT%Qf]~sʌjJ;f񬣭 /+!j 5$Y^ϰk ]:ؖf Ds)k ԠM [Lf8LM eN5Po JÛ^,}5|׀ fmyw20܏.@8ʄ|LiQn*kw$uc6bГEq Y1( |O pȤvㆇqpc3 ؑk*t'P9ӄG9V3 2Ι΁OwvvɡS6=W%{nL `mGլLާfMD@gghN MK9/U%ta&Mq;!Q}J1CY794FsR|^vʋ<'q_fE }M@uZseCXF`, I,A#)kk0W/h w9-G|wHǧ|xͷ}^z-rt|̝;wج7|{XΙP| _xWen߾}hؑmѤܿw~|ăwvX,q:WX.hiҀKDR^|~Ws8cXR3;7?W[C<L^Lb.({8نUʠX~|]NG\pyR܇af=B o#X dkfmQ%FbLZg':kM"DeĉxVDzѓA33=$`=g6 -XX@+HZ[W9TaʋR6&XՖ|]>Ǿ5O , Rd6>sqK~u\<$Ĺ9K9JC_c#Y2u8<= 8W# cm8%8}m8m"lRH#`Rh D;Ŋ^jbmiTՂcaQ]3|1SXjUO:%/=}smOx"а8ٛ/oη)O*}GT-8!bߣ)KRLap{O{GT#4|=B H$h$ĺM1OyeH`ķX\/ZC\L/V+?0-~bOXwޮvZCI#xC :9V_v4ERd.nj2lMDK8T6b*r<ZC8-$ Ia =0sDr m} )6UȄM'{{b#޶ۡQy#vKz$6w>i©ɲ.L-XsN׌#X\2V!cjv]ӵ1|P G̢_+E5f-)j sYasԮӪ*LGG3'lq_3U8WNpɟ T$.Bu3NLó ˆ3N1ő*Y![UO/h{†)1FZ;jŌ E(k08{9";"XId=LQ\^/ޖaŽ^Dtxef n4| Uv?'po'|N"MݽLt1څ[>s5ř/_t& kz͊4Zɹ36 ;WVr 8@ӹqщW1~kn)gv?!Io}:ѷ*,s2߃?3KhKs Ր*+d(KcȕõPZ>7^ovJԒ&.3Geh?c:of8̇&ʺDdhjc~:.6'{6΁x~ɬ琪r;5\hKƋsyh4j̆nל we]s~6=Ļ ls n<4O߸|g&o󳟼Ə~ nv}re?yo6''gF}^9Cn?}O?͕+s/UeC0ffm8:9{!>ziۣiʍ]Nr3c|އw_Aʛ3~C~/%~f>4ܳIÁ{\UԘ827+?Zك)$N ]9[֗8R c6|eױ3{Q-%jMs[seӪ!$ G>rкD,e־`WIًQG%sETI"b, &9OY4I85S:`VXƊ劳*1jcf %op|پ!{K~~U8I!ih*۶|zêݲl-iPNR$xI$+l\a{ɓR='gILfO78sK Y$Pc^t[J _yJ!iox6o?:m~ouٗض?[U ed˪K$7L H>=4?!E=Ux5PRg~uyJ?]W\m>ЈQ%IHlNUJ n@hD.fw7iwTK/~oϩz1YRSb .-%qՓ(?O"G+~..@bS.,v>+*1 O"=87-NeC#$K/veSrؓc&s +[(Zp=8.R*Rk a)ֆ.x }lY5'{G=pJm|,Ubp6Il{646D`j!UR;%KΔWwTu߷y[9]#lqO{<x,b2 v:> xCF'1KPr ߸wUvKY:ta~_ʱm%&ndN9H&c2}r5L'?6P[v}r#>v}_uEtr:s2Y۹'TbWl.g' v!b,.#%Mf IDAT h~ϼ0ݒS1ekXPQX1;.ɥyN!Elvӆ\2]JSyҒT&DxJq*d8|EHqd}EUe|UX&hV-3kQ۶17Aغ$yOmAƬif|0i|J*bJc :?40#!Y ? rvv$ۧBI5 𸎑0b nN)@Gons+9o3,ik`P`de3N{ɠh ( S+0]4_$Hl8"̰\Fe Xmб]G.Ql0*cS`^%e\q/8ގ3> `i79_q~Nv1td*RqSɥS6fضrgc).x)3JtXs#0ѿ/̗6IfgiM̴aC=O?6i$?o ׹VO((@YEgTt$ǵ[ԿYבrB0zrw[qZ $em>|[O8XдJh[6[ 1Я`ڦ$ oܦJZMu-i87.;Yy qʆGEkSޭr@ɒ6ι>_q9+~aQc~le1-Ig.R 뽚b9:p5:|e 1ar]ũ$p!^%Bl};[h:RQ¦n MXb9=1<#a{F3|Tɳz횺XĊo޼o%??Xzh$Ҳ={zO*`6 0 5vS-Zz݂s+|fx{89;ö>% (NLJBLA^ϸA+rAEu8[BK׮) Q;~C۟!&RYV4,s̗(\L>ReBwW:tRan<O ")8ԅgd$\ֈGшH]qg' }1 ċ=>e 2}iܓΈ!gTU # lMS}X4qY~Zs-!LΫHD]kҋU")nYڪ2L-q/>Pdtsr3|qP|vJľ#l=])A$4Wtbnn{(7I uW%i:p0h(ư"TA"{/nH|V͋{]!F,79{󯄝jC!9nX l^}]gYhR0E]ErW_mDʚULDIvI֯'u3LĢ9U&yBoΘ DdЖڹ HQQjJSQ~[IҔh&MbP%DcR"R8ozteP U=M(Fe"Bwċ 3qyLM)pEWb$e>3 d]PΚMZsBְU%ޮ7T;ffஸTD5@!/J]ȴyӅ3>8ģ)Y$) E[O-mW27`1h>m3.vn|9$/\W9GU8|9LQ$fy9׀Skq+xece1/do`ZW݌,ŀ, ω qΧ‹Cґ䬾՛7-H:?G65,Q͊_oݿfEu07=-L26S|w>ߣ<{}RJ==4O?}+WU5}(Δ >zx{GkY?y_pttBE;]ݨ*Kr'd}̇lK_/hNsTMޱ.lwDiX!Ԫᘫ> D9|#[soN$뺛35+A `@dݚ nx% -+}opx4 uh)2IEk%D(6/3-durB$W ‰9]EF\ޫd%P"D^o#rֳ|z><7:[*kWq3z9#ud`;lSncŎ}}UDcOg,Q4|巓 Ϲ=ưUP5rCR <\ɘEH8 2$Xq/?w[y;~m0:*/ˇçkksSݒ/e%w"c&)X*8 ;,@J-5'>[#NHIAtUi9;%.S\wyWYېR&!HM-\j\鞺'}l+Ә93;O~v۔?q  kVI\+Rs1|}7~Xp q_Xݓ10o`s8mcgr3dB-qM4i%,H)2qݛS@a!Re=giʤ^ Vp1s©.@P- B{ HxB`nr0VK._G.u֑W g *\. +)U6ke:*|,B1XCűzb0864I)nodljQ:MGVXҫq11$jy0ՌOwZ"$ ` a1.v +]St' #:aoW@< {5 e//cMD _Lff P l/l7%aZGTR1wxdSg~sm7ǯ$ 9cАd2yujŪ*4'gn%M{CV㼝̍ 讍C({-+Rvg b[p[\=_oT BM2FN蔳5#7oo~??9>%ȄD"}x7x~*Ns톺f\9 :&KM;a7l$<",b k擦aUǝ61 +ֻ-*nAjwtXn2(+n/o6Hhr;8xC*i[$2"86U ~'z囀PV8^X=Z\H W]4B9Y@׭}GNJߺǵ[ c6$ ehVQ%5|/|e^!='|^x#.& D13?=ӟحQg 8 DwIahΖü.,??䙷=BS_2blr. V#d=:_v:1i ;א^ 7hoggej_~ߕK$[wn.ѯz+>]^$űwD܈̟ZF+e631ٺ'4pO20zF\0m0{!vX]d(Rs،9ftFGлoCe0S;(`fd4ԴS͔.vEtBt|Ե뜜4aBNpαۜ蓟|pOݼ'bRFztDid>y:iAjHj(}!|q/)u[<̦ #>NnI {6")VK(#= Y 0c+&aL2cCUkMt{QQvyGcλGtIKqk GV`~gW`]tdhjC~3k;K6b 9蠤V`M*ex^kL* F({`鄜eNm&#ڶe6Z dnkD \4c4m3E"뻡MܰYvy+f_{|đrFL բ8V}#=J"]cvn՘bD1U3ߑaxn%] RR}AG,@iڂ;f;ORwuT2R}l ^\^ERLLݹ/uhS+6[VHűk!VI$WvjчOɲ/8bŭQeču*>}tԇN5.{^xCU["@ `ĥ׿.|Nh ٲ;աcunu.{6Bv˶ƧɅ7>&ykSX^x^{MA/eSr@Qy  ~c/KP'r/}ą^v=Xʳ؟}'}ب~NXA_p4h3։JےF) 2HWT_)EH,mj}vCv:gv +p4nG@v҉#qa5uV0/=<=E~?sƲ:\ g#XR.7;iG-ᜳȷ3es-1mD&vKnᰙt>M79,}粿*y u>1盌7φsL/LPū\++ lq߹swyd׾5=@:mEi!󛭓>^E;'Ϻ-דrfQV+Hs\9B;5yA0iBv crH{gÑfb x°|;lb7 ,fWq=0n7t#érZs~~}BF|3û.&b\# ESO֌kTڪN9 __'ӯ0, yo;>9Mο*dcGe"JT-Eu׵RlJ1 M0N3|kD#;-prv]wŹ)4,HqK]s[\/S򴀡}~VFeImjlDN/ɣȝvS.5(K\:h>kH~ vV$9`O^~jSgW|psw~&e{czDIc>]ʰSW_@7[IP/_n?1A [yW! uoأ4 ($}cɄƷ^()/g7ECrjX\]YD54mC3nCwV?8s6{K._ nP=.cY$EN0)vBx Hi Xl4ٗ*Q7P^T<3}!4R8OMh mR!A3}oR*Ι.ȹC黝o]-h^z- p 4N[jZ C ZHC[]<] 6ԉJjXeʇkZiG,SlvU˼ܷKsgA[ݮuGy،ZtUn2A*b6!o736:+a3jc9Ww@J! l~>^7])@*Q TBDyG!-afHZ"BS0RRJpߦjEeDը#48~~߰/j Ɋ26itcTvp!hp}OOy#]GYpr~OO~Ϋ›6Ͻ> V.h9Pa /N]5e' ʠf~(ZҾ# R=5YRk? 47Kcċ޼-]ߩY&K2ٴtCz͎Nӏι[*_sዯ<dz`< -ܻϳsn̟;l6Z.I1G߾j ys&x_ /b8ig8>Gu!4xx}l麎.%+bcJa0EKql㝩{wكU$'h EwY*M zZE#;jfaIVf}0G> eèLWe2AL$kE NRCDPC΂F^9 >"va}#zGpB0ʺwDJ`uOe;?k{YQEÿ}dwCv?)NOةHFhד.Ѥ8<J);ߣzN9$6 p#fi 7i|.W{ꦘw;+||E#j"c,>P4]{۝7_a6qm9P/'ܽ{s>)_җoY1.T650Hꈻ-Mh]}R ϫ՞~k`-NōwIqөα]ov (ޛfߙ>y >4Lf3}uldEi- BC0B>L 08F|PHGye\ھ1i!А˼EJ q xߠbc W'e!8;%,&+&+vyzmxaAh K ,0.enD$M,d"a>?d61nY/=ۍ#'I20, RΛʈ3O){vmR\pdbʆ-/s0';At`KX1SB 4+BfRmvBq2h3c0VzU,Ҫ]􎋞{ѥj`L!8HиRmWgm!_Ro¯F-+\?ׁ(M5\DLh$ N9E %B.ƢU*/B|pø8^x=|r!X1r,¨K^TyL}wtL3*M/_)S]@ZpvBOJT7zcUZ@|W"+c &_Ps.ǹ0,<Fk\ۺ߇Uj<~{G@-+/˰QGg°Cj=a@vulO5M.Bň ߯fTW.:M3d+XQ ȅukfR (WGM~=t1Eཐk~O8yx7_̏ c4@h(VS螮`}Z<ҙ0CqQHo/25T;G5^ҊU7]yUuoax;lR#_JI,"^ET -2O4_6Q%ja"Ց@[{KhS&w+µC,rߠ?'??sxyڧf>{mξ|ʍgQ-.13޻O&d®۱Z.CJm-7o}?&0;Xpxx@۶R\u\l]C`L"?ˉ^<:>̍*p\珌{̞Q 7MCBA̽ڋlgB8}*fԌ^V$uݍ`, V= V(h@A-r-klS00@wg A߲l3dPن3ߪĿ:\*Q]⬍@$%$30ʕ$r`ټo|{CxL&S&؀zO8:轰kiiJ6:B3erxA [rM ҟΗ֙5{`e6|7B&-툚hJ͓DTf!3kpi/Ϲ_ <}G[n/|ْ;gkXvko#)#򼣙fv?A(Ĉ!|ɉ@M K|<{)~w= ?W?<.>Bq")s$T'-qEǷC2|{?7 Αvn_i'8lXvLo4,^yï/>M#iȾt]b+9,I\8šv&ۥ٣ΕGf(0dGf:W=fW~=}Gq}y^u~mo3\Kc*S`k? ;}MmjQI)I8XpaU@9[%';C띇.ӦHAR~5WS Y=N~3" n'lw6B.fBTmG-(gެ,C4GG9Ndun<?|-7Prz. qwLO.>&[/d6gٙ<};:Ø2Tj'Uؤ >NR%%s;[qh˃9==',dL{ h鞏Z$vVqo3 S3n!,vNZ%T"l5}dkL#9[o92)fB`s)8 ki9mFlPU)mZ&L;H1Ȣ{#[&iLLyd:i9  ɍ`МM "Zk)X1@Tk_'5 K x@OC#w]w(oUĘ*k4TLH*},Z`jsJFh'p&<[BcpU}] N;:b!f qTI 66SW)mw= mfS]r)Q#R浩[xdX|q8)Mdj9i,SPEs4k|upO; Mǖש?§d};d|5 %fSm{Kv._}}"rk/\HVA=<ͅr']z.u\Z0| {^|5ixϲ'O|p`Vȓ9UoWg#l'SSĀfg4P%'K'_-}GkRVctye/_=9v_otq%XR(, ?<6gNPV8W/;,%aWvk p&DIa@|RL#p8Kդb.;\cɸn*k\ [TƑ2pށ\pCR=k3%[qƚ-j},9$.pqC'dazk<4?{8DrjN<,t^Iza(N! O]M;4WE &fl(V )5¬!4 w^;1rĭ|qs%d.d֓%& b+LIB'[ւSg~ﭹUy.u=s@| 3[Q>ܝomG6IEr#5di- GgZY1 .#$sL@Ȩ@%u>?:Wr)F#dY/yhW!ӱԲY_;k<Ó3|D(spAڬɛΊ}e;&%K(Iʴ-3ȝ_q}3x3G3q}|;Í7?_| j)fx xDP]ZeKKjviovLLmK$5ma>X^Im"+L&B6YY7-D<ɨWBsBQ yVW: v I;RbJtyKvH $t $BTEv==pذCwB׫HB!zEO?o^\=F;>9ǝ;?펇{ܺ!7o>x$GS BjG IDATm E@\vsc$1):%^(+tf+YMU#htQ%Hw A88"~tֲXh'kX?bY],G[>\;y7lg DkR) Vc6VT^d#p~;%RHUʸl EH]W3 ӽ>ٗxBXzl =ǘ5$ʥA灗_QX!xb!w5ZeXCBhޗvhY·rFYʲ`WU\eBnL |6m7`'Uc'Ad@TJF(cܨLlœ+JaS-li+%jT>@,/ 7ֳMȘ“ ;8%:R&-)sΊ N36-ʦd",!b@ȳd38]ӎj:júq{ pUlQyC UȨeqЬhXb k'=1j^j6cuE᭏yyxO,+x m=MD y9Jdqeko99_4LH-7tS?Mgm39B;Nϸ>K1}L?O&A>rGR4]\u~r?D]Yϙ3w='y+_Rr/(K_qJ͇<ʷm_aj'SfGHسΜ@2 < @ 抷EZFp46mw ǔ 74Zt֢`hIlPJu,mT#.wH; I)ĘRD@*qikʹm 9@#/^<>se9O=Ա̉Y7IV8hƫ0KV37\7A$|Ls4)~+e`ykN\7W :kZ8tL6O! ɛ]l"7m S^k+X:OB#QLVDMx-!%ټ%30WqvHLXE-O!$`R% pju߭ 3'IxY&; r'?4{rTx]M>z"+vӆk_?w3$xp>U3l씱 p̃?[5Wlx@::`# _ܛ<%6Om\/0S#ls].]M|醷^½wɌL*gT+ $[&c&Ib#[]7|9_|t^`1攪r-zTu`ܿo|_孷_2Rks0IlQR{}>?b:9"4$o@rV+aRdb/g~lְ^^٬W70FR+^ ,"+d]*6s<)q$~QT gRyhv;+>=t6/{_CkW^~bQ?yVV>nsxnq1|mk{YOTHJBmG>5e Q]ggWաjJ P#˘؜v4\/??, 7)A<31v'~d2YOoL6R|z?~u#0/΅"g>3t{;:`I;a-p|.91/@qlG(M)̀3ڣ*DL&^a~p $sfa2:{ڦ!HL1gblhEm@aXB(xCyhgeNCJպD3 﫼1HHz=~|vy(@f42UI /X/RFPhB.gݢ4Ӊݾ`Y6@4*chűnRΩH}sJNJU9ᙪ4Jljm'8lc4V.Aj3Y%5Q/`\s,cQSNA1WNؽ>upE&ѤR-ޔ !Xx@5+>dbJ4G/ &/b`zL|an>rIaߏ kLvM3އaIр*bMVР4CMo{e1;_MdTlPR]F(j8KZ%4)64r7n( iEe|EFC:;{yGVEl(w> C1<ϞRUKT[kk-Q+?mzcW2+NU,p 9~z4G _RJkn޼۷˿K/տ_(5C11YXe @C)EikB#ŔMNVvte<&JO 8gelVfQHI;GLzGc3dbҪBNֆGR1"9ޜ^^l;pIBľ Eդ6+!}v }K4 aǬ5WM4 W_o_C,!d~+)~ryN>xՖ.|nd5Ȳ{8J\q tw~*~`w12.e3 C]^^ V:U(ST!-})`GʎMږ[Zcʸ'K3?4E|aqK ,{])¾XLk4v2oPւrRduBܣ`/.T}+KGpXm5"龯 Pع[t̝/i's;IK{vaE=ފ6|hiTfľ:R؛4XoLaqpdqU'P#NyRH~9cE]!ƾ$GRtsJg{Tji[w7[q-S_@ogbI)Ui%#CvbbFN7t.$ChqbGK4 ldP|25݀g-b}yϱ U|-v)ZVU -Z-`RgbߓXy218NLJ_΅XpŦk׬IpE =uQw恵\A^KoolCkd+`ul+ j:1ƜJԢSA(UtAYRo %K(4.k eML,HnoLqn4;- ^Jab%%K+)!95 oYQe5}$q-L 9[l{?ʭU PR呡RN~t? /{F_.㔆tFP= *fٱR^g[]0{H);>Ө_3#ll@3`͚,E2iQ˺C Q@rKDE~NDܬ3bOe]"=!Wa Dbt$~H +ICVv+~M ɇBmKL(Y,1 VFIحU$jB3\ǫ)p1hK_NJlٜ7:+J<͗wy{{jZܻU|U>x!'[Qta1w'Ld 1l$93;0ۛ/o={_Wl6QEË#Rt>/pTe" TfAtD$:0S~O%bMsSن@HV~󕰎BtE1\窄X&.6T:UUA=CٱCPR5 §f eKEh}G"1 KH+R>]Θ J϶y97RK}G8>}j}js“OC==|vi:!b\.ny~.CTR۽>,=e䇤VP%9D27)&Ri/9?{9)zY-.X.N{=(UqK]cu=g*Y;|ѠDF8AAZbd8w2P-b9"oS DL|k紎_+b+,Lk!bLJgqj|{ZhU=MӐb$51D3[\30k ǨL_OqPڭr(Iy:m QC }mHCIxhQ.wkxuԡ~:a%Jz2f;8sc׵=\ ;/7\tFzKute|k}yN`߉fN](P#\S#fasѧrrvJ;|,? b5ػ}$W3G␀$-ٷ8YIWHk[Oѩ8 ۣWTR$tl5I ܚ]"O)WA;l!{gu4/UnteIjte%A&t-㹾`T#avZgՖbNڀo=i>_nB1~h!H`XW<;>cmdHk~PQ_>?p#R/fL&]KZy]2}Qȵuϔ92e+_TyݬX ӛ[c0 el D$p̌c:I"Lr!&K]ܓ6FEX B|XdF PDDTFkHRF7(ø{:DuO%SJ$ fJQk4[qjiXUT!V\uj@c+:(ƚK֝dwh ];M!'Moy߭0re5jb{onjϨx'?7{%aAͲ=zBj1=\U<VᗈRH 27 UU}i9R{:or޽QL aFUHg p IDAT+B IvpyγfaROFش[35BRt22cPU-m#x&SXLA,D8sw*ɾ$Yu13Tgo; M6lhH)$*|b$RB0{,oK?{+/~+KhNx<|k>y>c9<}''<;o6; T0C!/buGLe% 0fG/$ڲU1H.!Y0)Q( !c@L )(ӁI6zkWCfl{fRj4Qz I'MeY}qo7XFw3.=geRSi%Wwx]wdS>KN >Ԡ1쳜Go|>Yas;eJ߯^mEyvyu9's}vʶ3q9)qN*~ +..#ܐ54jkls賄kwSҎm6ty< 4Ľ_/t~OyҹxbRYdFZ#5G<~+K69fGφt'Wb3J(SB\QvȒca"V1 zn}nV.GGI,xFʑnhSdl3xiĒH9h4l*c&IJ$D]B/zM۵,enRo'hb֎uC7( cr̎Fzj3MeS 1zҩҖn IꊃPՈaÙ1=_pFȔ≺?)B_|Os)|e:+ߣI\;)֟4F`HSs>&@ BK'LIC{fbO>#!멆Ⱦs-X̙LLSBLtMGsqI;l9zﺞk|^QK+S̰.3E/ɀz?SXBXIX[SRe; @129@A3y)uga\|1(|9ǣWSPKK(LJH}!UX1UWia_̶XGRp38"D<[ќ\`m,4j9ǶsLf3u,T nll7_ՁҶc}grymHO__Y\]_<⵻wA O>8j6!>D4 JAJ:;BU ץLʤDhZZjWk*|M3fE߇X 8hT$f☹ErTx*p1MbY`56)ՌMh 6S@)(,9m/Zƺԋɲ" \$1c"\VʠLFV 3Ub1p"#D~E:3!no- {|ZDչ cEN_T ܹ%; <`RM9 .[4L@- 6&oLƷos3 &s~_>^T/?888q&9QuhIGT?'N(J鐸E Zbj@:޿dvJtXD&q׹s gi0V(% Zg蒡L'J;"]d"%.4j{#,fd1 siث-wt,&me^g'j.:$E֍,!F6c0bo:xOxow33|X}Ϲl8^?Oxr|zb lZ0Vi4^LAm,,2f#o$T1;4pdJ|@)>2KhNʶS*(2/FH)'gܼ5Ź4`@,UsSD >tt9ڸt4rGF*\&mڒI^埪PcS+oػ1<Ӛ qc$cIw>f.&B]ېf%dнl{{Jcz1"V _η~6b;e 1uj申iy*k/Āk]ڹ\c6rrrk1\Gu'1и=N4$GEGG;ФSp )sp}kɄV[W ל\n0ggfLgMZD"1zTWl*HeƘH9bIWBNqV}fS1-aB[سBΜ1W94M~igd(98E6P>083uҎ'38>Egpލ=x 'MkbԖl7[2 & ]HHŔhmTA 6}I%=eisL}g~닦歷>w-?GMkٶnRQ5ލ1k_°vXU.NnKs)Oose\AƲ6&j:ocSk'Zæ#PK̐YqiPZ|fΓeRṬZ@ jFd.#;\O 6> ĩ!(43Ӕ,TyNe~)H`F<\)8ReiBHPed0^1,kb-D]VKIt}:*k{ݒ[r7s^"|ŭ7)tMBm,fhس5w~xçѯiC#23{7xazf;b3˰A_'"lHB.OU$ J*2';t(Fk\Q0Y3ͨsM$j4IQ8GD׳"j99YzO`,%M|7Bzdb s0'[\^ſYnWo.祅c83N꺦r(0&:qޚDA3Mk|UuG@ϺWig Jٟ>%-M*J=(ҩ5I<{S|e^{S&u3wӟ뾂sGm:o|~O&D$f}m`rU "T'O;c6.`RH8i|L"Z$:!tgBe mXo#Y/JcW%f.iKJ{B K Nn=1jT  dCHi5aH@mjƋ7ǟs&TR?↦{çǜD]ͮ$H$~ݗ_#͢K?)i J6p2O\wq*+?le]_Oާ=`:exhw:ZUY+~K\7-V-Hd@;8Lg K1<,}6֢a^I!(ELUk*>`ZKqB-N׀=ݯҡ fXk1#ĘJTn2gB 0'H>ѶfpPVcLiB*7kZg[-΄ޑsRU04]S:|wU5Ը̾m>`] *btUŘ`7 7b1.t_EOl`lX tr 4mqQU6r\R#Tq֨eLj .hc2~ňY'n@އL˓3z#j_&*;A*C[UއB=I(r9bN㔠ԑr>Gv/s-OJCuG[XRF,XQ:ɜGe`F-6ݒ71W-_6vI!jY#>|9Sm(o$IԂ*%?An`dlfNQWcmU"1(t4=K V>yz(,R@Yw8]6LB*Zl5d|`Dv`b-JKo^I “_i8 X]AQ+TvA[=}zҍ (κ];<ȯ^NPPpr P@0z 4]сF`Ly#Ow_6pjr~QDYcK ZbYWLfFgV&Fh7]H̅HoᲂiFK\L.|!_%Xc2ߟ}a u Aee4%W3&u҅TzG0M˱k >[70uM}l `sL+-yZXVc~%0 &Z|2&M"t .:n̤!w_/'Ǘg`]_e,v$;?WJccu]Zjլ93䘈Y)ҦY:O%[+z)T g^Η{Ր"ݖe=9`xeϬ٦&PXXSv?x 5ы?!>yOaMg ?C ʭ?z[GS$Ze%[#} ;Lln-ivܗ%[v׹>k\V_>,ps">畽<*/z@$5A&C{xz\FD?9WwJ7no}rIhTeڕH0qX#IVc gyBV]&1x|jnz09G?rqiS6# ,{hZXoas$b+x{/9ze~?eV6L#D`bp#;ew=]}y+UtWN4mZy`(9&Wd@9~ft4#CRT`ϬEӵmBHճ2R@{5\ϯQY~\2`Ŕu6u] k]HZp\TO1\X6G;k(1ci71/)j0ic 3.;P-GO (3o(蚖g?!`|IM( bȡ2YjTt`:c^;/~>0~JxXp [] >AƜjv@̫/Z6j0%-(p'vWY}E1)ʘ[C2WAtmd4FQ; W'a<_W=ɗF~v뿿;Wqu:ps:|uO/Py6\H jy<~uv~Ôf=~^2_0a Y=fixh-`['NaӮ ܟ:;# bL$ـYhמp^@XV cv{EVEl6Vk֛exnL <>>bUPrY}7?>x}rt2햽EvO1t>__DWX_yr˳}t -l+PC 9.SbE Ns_ #;qa L1.rAN$dpeg0 ,&:LԽobтN0K)WEb( o+ŤLˬEʙYE2[ *S[T?U,$t;32A&%< ʰhd΀76^*c <[ߑB,yN498bug"y\֛q,B:R?inpm^ ֲ:y$)gniM4=}X>E"2=JP|3+-KT0i".ZaYz-7`^<^ča^/bz1s_[v[OHg9E\TtHcKLFϒ19.'O?~g`l6&=^=>Y>6Im?%yKh$j]4 )ELRy,h=>ՄszbĠ>_icĤhbZ̀ 6D2aXE DYz>?sP/ aMg7\&aE[3hMZٮY/ǻnR{|U>/(w ).`df>^劃|`Cƭ]sypfolێ!0~Z9_tWRZ <)`|;3r\ ]|p屺e>J͘5gk?wm2qxF?T*~r-ugx4lY{ =?3fҕ7{lүީkW^=pp-n ʩ!1eeŜ'2L%) Xk𝧏<ZØFS LW~a]C>WXԳH>dЬmk1ʹLc|^b1Z59!d CeVۦ!|E㑢2u.mޓB1qDqmWU0])%'kg2caI9,umSԣrQ9m* Ԓy^su~J(HY̫ ڴf;(U+dH4\!f{Ԗ# +BΧzelSrbIqZ_%QT"Z ){P|Y" <|O8nΦM*&GG\L-um9S􂧟>%~|,A=WLqPZIԽ`}< 1w÷ %k#7obXhd\ѯEYW- ^@nr8wFWQdW**|)[7S;b(jEnR¤䴾.kVIc,մƦTֲ9>%I:{/[|֊̫iV՚v,=)V.\j͓On6_)ׇ>׿5 >7nakP _jV9pmG?'t|I[7^pz~SՄo~(Ei'.C`Eėsa "ieS_јĉ%M&҄*Y1KIih0& V]Zw;%iw;'28 䑳k|H`HgCjq  XlTh^D&e*nVAX[ %#(#|oZ0-qtE`ZjV8uWy~[ HB&^u_#>}zlV7DNC{Dfû{_1F9o&wPJwǧ`Y/=z|Ϥ>v$۲[kE|l 2{¬JR^t?N,)Dg"a`pfެ8[y=j^zbY|!)X4LdD k⹵8ƘckOqm) oY9b%aj9 LguQO D;Gpc 9ܼ8;9SǽW^Ӹm.ĵb9/ͶTfǸh .7F6t/]GR-)`[zQ#cmH1b$tSV~jy÷lQ\-ᅯ4B^2pvkmSkERk|&oؿlcEV]i<uU+@U*3c%h3]VJzCJg4sn"KzZϲ6ҹ)c:̓ޜ.PR ]Oe}q l6H~kj*7hrcT[Uj YCDX*B -E.X_^ o2(b1BSd\1S7.P!dYR7i#hZ - ~l)9`̀. U.X֯$@27\l9?>gg笷-<~f;/rttG7y<)YNP%rP>dX =ad+~i0MY[T{dF50t2.Ny {/b-)ERJ -" U˳''lO7T˽={Kc"m; !$ڋ߹Mod!n3H۴V+../n;=f錦yDmsJX/yYv^mÏ~#~ $6-rab.bNDY9Suy~RU5ͺE=NsX-y;/pxp% {}&pSLC$Iܰpi"8h(3n-92*DAIF 0U8ܥ$f8 *F4BJPbҿ2Sbka 5e?fSu L䍯gL#G聼**l/Wt]KkI5XϪ w.rYmH[z0gɚY ݞ#Ƕk98Ç'|L+& <ϩfpIItxbH ˪b_@1m"X0e˻ǡveLбц+MHִQwǁO;fuO9&J@24|ۑ-}ɁG?wl$l"@- v4&0 GIn17̍BdO2~-\'˔={#㕏*qv9qKLb:W^g->}b_`d A(rxXV_畻?ȗWEBY[l0)S`go VVC{Sp30Sa6&645B-h +?#=9g:_Búak< o&o\C*@I Kk-N|Qlm>RH2Wecc%!AV5CqcVfFŕAϥ˸D5Z,]h/#O%Ϟ0[0ΙO[^KӶTՐnYW~UݷA-b`6snꁂmK]8}rڶ]] Rl?/|I_Տ8<|' GgXkt ;eJF:5bLƦp|;4921$ tc{c[,/;W[Qvt\?̱> t3I 4cv~?pDkY(Vl8Hn2<&v-ĨELtmTZ-\@W'v{u'n0f+~g*Cߢ@-Up/L!Ha2\x qw04mB@Z+q]l'uCr &bAܮɀCTs} 2YexX9B⹹t<]dlà3TA01/f,./9K>:}ѓLjl ϑ^3%pG/0FJ"<h# ѿΩ\Mi#6Z&ؿMɳOkRZ~t~LiӜh?.S$ K,gEs)𨛲G 4@8FtK).k+nʼREāԈ$ >|DRоWu em!,$Y^x!k'O8sGi1!QǰYNn8o80Felw`+:u>ǚYl^_67qװx&E?UgɿHceMD8gaao9]X͹bAu C۶4M믿Ç9??vS7d<y˯OC4K9%&Uh1A'AzA=z~K4gPPr1|+$] l^Ҷ&&XY{E \xk1>b*>ҹ$$ѺpVw W c{g_m+~Qsrv \T¡9(3>|.Y..,Eږpd { v/@\6\gFU-YT 7pd?o`w_&-T!!$awoaƑD3Y1~tL7=4{*Xf)O}ƕ]ZVlͧ XbX-,ߛɅkГ$r!bѿQG|aJGNݚt畧1 ^m]' IDATMB;b7'qI#/~|7~W2Rwf\\\2/i*g59ct>r6'*uۡ\ѣ'ɷK[!gi8>'}ɂ+J,YY''Ḧxv5xbcs!\>$tcyꕛd|郇AX e[4exvV0Jc2FeR ܸv7:g3u°"xaEyoGwyn,a,"15oB2DW'5t޿f4<?ϔsi&pu;&2eHN06Rbm.d5?v:ҁa%',G㏙GxGek*DX.>9d,_!Kfb:1&v`gbP91a] VM1`5~&-UTn _C,? 1u5&(xb,G¬lo}c1u]sqqAu/2/2>ݻ*iB6r;CWGkpQ6`b BdR[pٞ@UA0eϨ6 ] n7Ӑ`DŽ ֨ej qab·!BYh,f &Z5ȥ16o+iЩ4oeU&YT9֬IX%a-8~ùZ`PsD!GxQra1h9?̗Z w\>`xɲF ɈrbHq8xS@w &&B+AEM'\Iiwٖ߇_?|<*K3o0&U3_; i5᧗O< H}#t<ϛ= cN> XǷOV_NC&prְs=_!am9"{5gijEY߬^ϷӚ3>Xq 3qƒ6NC\|RmW:Ucg~\[͏3m ^|mpNLIAl.Y195!\(ĖT,@aCHŽB ^7YNTިpF\ F;ߣ ; lM܍Zam5Kn]^ޙ~pEi#äU'V_Bf;R фb` \H$9C5psk׾U~w?m_W^b!{[li(,ӧ[LPvrgApq?>c?rZ7e)%zq}A3Pqi>OO `#ٔ[`0:bdrE0ct0;3Fcۣ' fEn#7Ne^tp ̒Ivb a/ujp=Q%N[ E,4>՘UƜpި:@v٪))6e ' /YglXfCr\!j}& YK*d!Yt#_Yc -kV˻8u/ncF[D[qquff륛LwglE$/˶8F%~.;{]^ͭC&{;Ի[!aԎT9KPYq7 xϹ6=M&]L5^gK0*%S J yz|Yeา,iqLnV|Olŵ׮Wأ$׶.hj&c Fw?\>[,?: Fnc2.ryxE1]:9B 0#~J ֌VJ˝y0ǜ& ,i_*R>2h_q5T$[C"aNfS'j`Ռ n}yBPgqev|dibW+ՃE={i M4BjV:MDX,{|{LjǏstth4⭷^_ƍCeMT=z_Y?Y"UU1}MiasCZ fSq}&а3>faq2I:8lF䀥\c9 ] ,E+ B hU\64'{E2t,s&Ϩ8NYmzRZ%`pk/FSd1oy3K];c,#gӓpvb),1ȳV0\<쐄d1)兽\JE1zgJK'$t]tm!YnTf'E(UParj*&JnxGRT)rrKHPLSH,m+C14C 킟m{UE]ה"϶J1M΀UD2erPyEGcR>t-BP§] 1kY4MVc@F2 `{[%]QLs=5cJZ$=T`M%ωIZM9"&ܩjݴzv +A>RԃZe ;mx|.``HfU5'S$MVVc0YcYh;@KyEK|ۏ%MzYj(Ji^{?.P(_+y韏IY-X+>A)g,5psm^yc6ĕ`ʓX}f^dADVGW6j`T8`Y|͞ΰ9Z^;0`$ɣz!HTiOI;o3ƴq; h 'O8?=>l_?`t@(\a]ANW]NUtX XY:ikMgб?fo8+/oq0i :ak?9c6=jٝelR*+5!YH RM̳[j͸_ QjRWŇ)3ү׳Zi5uoeux/" m8=yUMF[&UfR}FWdm&Zspm7wy;?MOon[gd"gs7o=3 zmò82J3ei5c ׯ]luvc.92qƚH=j<Ქ1js3/OK'3=y36\VslYVӧsu>c4{tҽZ5s0XYhI$hc:A|#K8j%N*Np? <~K,' }@+3myxEOJ aL9A D[=0Dg LtB$pNG0l8S#p;*s9 %HO5:bB B RJR~΂.g$[yIɋI Y"Jxr] mE.9R4caQO@^?a~wSU+h |@=9{>Ͽ?9A[,pttw&lmm /p~~ν{㏹ȾH6 ׮SH=1Wʗ+d+/$Y)TR1i`mSW_J4l15*#g' nR.>n&dEwوbL-W3I j FǫOTb +&5fgSж QwA5`p.֛Q}s>ANNf O7m 蚖l$! @Ebڀ xgY."QJXao׶TGKqb)=]-oŀ Vq"iKRkˬf .w,VO>;P7N}뉓3ΏlO.2Pyr2mW>~b3dh-A QHJkѩiʘ_{}2%-@Ay\U!W4 .D0 +!t¸z_NDnȠsEK]4&2<"gwR )U+ή93?QI[Y9Z܍(uT!фpxWZk@%vlg[#bg?޻Ieɵ(r\0= 1SɁɨ-rlJx?D:ibHuw5S[#ƠrUx4x_/Z[_UUXf0f0Abm1LN2k$Df*Kug4=!Y5 P=Lj8!)cL]GP ږ?O#-RjqLnVK`p2es~_d{5=L**zD,̵YS8wxo麠`e1n`Y 9fgVQ$Yeɷ1/k  -T BLhX.TuZs A68+@SX٥6k/o HAHDJ3>ر.ó2tECVVuY`^"~8?+ґ#ʅU\ ۶hr鵮wD!Eo7u6Hyx':S!+5#>@/=\q<9s+ZsReMf$I^V?2, ]6"]> 혝p0@PA5J׹+FHY.qp޵bɐɄ"mqvqbv:v$=dziTT-KRF ").3?Zx-Ʒn` KS[ sP9w\x>0Cb9__57 ev $VOZY듷~-@}f},% 3 d`}ݼ̠~.zɯ[M{90J6mo+i,f,HY,2! @[_·?}w߽\ 5&A\p脽Pkc )5+ʞ*5x>#0w;7G?:2Y|<÷fHa\xo`2XلE٭jYb?4hYZK#\cqT! Tv*&c6>=gjOꀊX$+%O.k5%S$6}vMQ9 kR?5y̬Lid!Ԏ'4*Iȶsّ:i6$|`GEnɂ3tpq0/r!/0[pM~̵?5\m86a>H1Qzk`2n{`3tf!3wˤ,Jqp8]\pg'ŻL"hɺZ:smM#d2]`:s De9B&"TOjM^P)mC2dKnr|i>x'Szu#Q ::j֢ ݏG='9ms݇pYe)>$1S-_بѥc ܋ز!~`IRǣ]N=l M ajU31d}3ҿA xhQ.zM/ॾ !` e%(%'t N&uNF3$y-gcd qR锿yw 2˿K7WL<|s||LucxyWޢi|p_\v[I[-l/ r62Lg0!V!kQr F.p|L-k賑5#V;pL2 ­˷`KcvPk:x"6H[,, Cߝdɒ zH3VjP&q\"F}cQR]PBߕ0+VCcSd?`u1KHoZBؤB²cb=1iwX_3&cp+;%%WXa؁ޏ_/u ^u9*^(IrdM sqN>% D20HmK0VUv I%cR ҃UkĠz/7 IDATێ먲OzιRJO|U}E #ڬ<+^uۮCbWk.[)xk͈ .e1Dk8%tK"9#]BTXei0Q簪FX%hopde^2B?f@Z^Smxvum\g=Sf^9vjRuV֮RR6`g&6.J_(Ǘr]R>1V2 OW^W)-<'yyrm֟mzy>9 C?f&\RIAUq8<>qtzB Zmk 70#q{ یݒ?bAqv|G?yf4fC3J&xb$FS(-5l4lP-|煖&^)xRUAhKlAJp9?˯̍oSH84O]7 ɬkpͱŭd>vZzc,^[%מWk%J=5ʔybl~|Lgs9{}ܡr[7np빛u櫵^y6[[[wɓ`5?k[zl6ܽ{-2ZC Ǒ #G@''^pmvV F,zf/3fӋ𤊐:Z 8X:8H[ /W6.g+J<0EN5 9&\2Y+o95dřlt5FN6!/d#KiV1,FxEcg `lAR?O%f!96M<'?0x߱Mnyk! #-΃Ů&9'Njqeh:j$Wyn aM+ffDQ!,,Ekƾ 7_kRx t\]SBl麖kMΗ4q .ir]I` dhqɰcۿǽSK`c{敬6FX\ vt/O<_{y$pmҖNo^Pv2K/nn4d[<r|pŰ -ZЈ#S᧌H!#Z6-Tܟ=D(gDY#zn*hPMx 8nu"[]%Q63gj4LLgt~x0/< w$1[΅cwO{iŒ3.//*~!o~]coo-y㏹7W^ڮtb7o!DaU$Yp1dnfа4w}U)t! L8ms\8'4جy"Ĩ[²qSڳ;!._Lq)1%nm1ij- # =>f\ߟP!>kK}nkZQ!N@x}^bڒ՞Yæf#'K>x<ٙ3O8q%R]~XO;ĺDe o X̶|- _yM ՈO;^9jvybk6|jt݈bBrr'32>ǿi=~Osn+'ڣ{*EViOn\ܕ}}]rL{}ƍ#<Cdɽwx?+su!z۳g=~B+(kW[z.׮} `t.q\[_7*> WuWgi>B.vxeHʴN#)(3ThJ4d@ =̨\vbCN}!êQ)fZL08ښڙ1%A$^!keR))jUD硏FiYH.q \W%bd mKMJI23tx%*'Vbk_UY@ mbqpZ)E9ł4݄ÔOSY&bKsUDJ:9j‹qSc`bQOE ˸[&ƒ6;vb/kfmjz:3Aӌ&rAK.+S=$/kº:7]p7뷸mGM1EbuVim]ݴm4@[K$$^ߐk~.DN u/"aIsm`s C\帘;w|-٪-Cժ Ԗs9?xˀZOsqv"<~s}8b{kKosٹqbVY.Dql+ ,vaIwmI΁lJ9he;O]W KG[<99a<ŃG¢s!6C]ՙm{P*fMjfeZNOO{\g 1*zeU=ytcԊ'Mz }qm!#$%-޽ѹH-"[2kcRƓ$g]xq;b")8eYY D !xâi` 3`7~k1rLLOr?{)vJ]}a ײ˝%,t|06NdISXYg=S_{Cd0q6L C An<,!"f:GӾ61kZ!'Cm8h^yX Ld? 4"`ONNxyŢd3z`Naoc?Ǽs{x<͛=K^;بUdk'ߨ^w }(NLFBl 1acX`y4cZ+uI0Sk#̂1Uh06F*_;\{gvsjIWZu{$ aH`U9hI6HO>ȃ緩qxs;,|zg FlJ&!pz:"_lg q&Po[kSnuB΅Ĺϟa ?X! )$ūݻwEn/szp,{:E{AF` l hڃmգؓ;eŀ{^wmab)%s4u@)XLaI+: am4V[pyvR9UIUx*&ڧ#cZL,-J%bai3c{Ikch@a<[=sU}e`4u-)FFǏHsp&ۻ{r_=*%b u1̳ fJa I !Ӌ .Y,HTM E#Ե,g,SB 89jZVX_S5Csa ,s04uC4;?UΘCue]*z8HEP4cBPlnY}YamTêMi. :o$ĨKb"U-MRAcF L0-y_0 z4:K#ieu{5 (P H vj)!~#paʖM$AAL*\pw29VPlQ[=e\]z>)䓷 nFDB!ؤ J `I+ٗ"aʃ\|R4kM1\qB ijYq`V MHuھ)iqkJ]$[.G$\{ 2*U]00X"A| ҉ J$t]GacBTC[E#D&SE(3o9ϫџGNs)*m!zeMgʎvuqDYX9f8ʹ&N)!ÜqtI zʒd-Â%@'!C;9ay\0Nh/?Vmpbh}m y{T >Zx 9G5!"}xɛQ:>Se .#>`z5d} HUs`:o-lM8{ v'P؈$4& lL>Ubqȑ I(]Ӵ*(gv<?"k]H+4t SԿ?5/>}G\{W.0F駟f{{|zU`UYB,ev17O&b7nrvdB5r :n!@Zk-8q6_.N&&Sv܈~pq̹whӼx̆*ο_nj$XT*&6P\s`Eeɛi f``7*Zo7v3:\{2kƈHɠw|ޏd h7kLrR=T` c9qP@>Z ckD$P%}HH\웚[ s_yjN:C(KGp[ך"De8 SoX5GƱtVܧhEkHN#Cڊ'RYv=!E7B&ac4cPAmÙ. ʊ/đ,eÓ##T{l*x>kv;h3Uoq'xhD,+7ʆg#^;\Y&^x̽g"`$⭡oVd| L&;;S&[ ~Ԝevs}m!c=lvhZm U$c}>ӒS=_޻$cl1/]zkܚ8+;i,e@IyGL'uU45)$lqy9L"}MNAX$} y7a%Et.F0[C,xt_2ߐ'c&"xx㍟ln. n߾l>|JZT7o~|;a{{[nqttD4\r3 W,z9pd"FQYGa,y}Quc^Cb4D+ޏ}׍h`GglMd Ad #g_p~}cv|]~#7`8eUcf 6jVw9=d0XGV/?sΕf;3?wWQuo x2jJg!&ƒ3e޹6 ib #ڏkY*ʏޏ&ԢK~=^R{"O=05"-{*Bl ,WLM\̃^d6;Ay(YH *e FEPUǔU,Y9EMJHY.X ő6p)N@rTh& 1d`]XQc2:⚆t1.d,z3u* ZH&#F%cHRgzY>}3Y.f`-u0a811g&V\*]D*$T2(d z;S2OJZo/j1,Ndd7R20Oֈ9c-Ik*sD_ӷCQEہ+B!h@ ENRa_ܭ5ËtEU} 8^dG:|ߓms'%ѵ^+l5-PYX$BțO__mFt~GJNDmzXU:륵u@.kT4P8dƷP])ϲF=Q2ړDUuR Lre0ڶͅ%7P9-\w +)ᶺaU $]qn޹sNcĐ5c-> TU|TGxy&f[Wx}X ~V\:Y: d貳 TIdԐ 쉽'ZjeKہM HW$ {02BUNG}a7鮌|21!׭6hKYU ;l͙wWX :W-BD%RH]8if>"DkI\Wo~t[CJw#qD$eK*!lO.MhIJMDñ+D#o1]E'#:UWbw0i6!k&hqy% F Dž~;K+IHd|~rବE~YMDO'Y{Q L}άy{a#~m7U^W\/0raulGיjkOט.a:g.x}J|w6S2p䮣]7w@"ɜ^Q|5 <~ >g]\C'%(p$0z`5G*1MΈSI|N;S49\<2%K9DO!7>` I? IDAT z1TSOj |E_`ORJ\~`%C_fMcxV!/۲2W2Mz3p(usUJT%į"Q_L,V{:0`,kz%(['ĀsZ멮*|ƀϑ8^nLߠ실0{Ĥk}5ԵQ{} Gǣ݃O< ȚO^aҔ'Żb7&ERU6G%Ǣl.V=`I= t΅_}R2LT]R8jZV%xjsTtYPmtR$dLj$ڛ&gԑH!i,,U3b]4VIX%DvdĔȐ5I U]Q>8LzN$ Zf XWSJ}P;ӷ _S?Bkl|Kc|(?уgi〵߬[&Iz{ۧ3 _]FZ~Ԟpwkb%'~э.?g'GvO1&iG[6^ǝlcm!_suٷ9Ế}ҜXog0?>ʆ[RQ$LEYFl*ǙZ!x۷Ofx(x+q}f33ت4H"'K /0v Ym<}ɖ!@@ZbujHr蕔QTH0[v|x!o޼G=[Zb4Zxn]5G t3;Sv}ЂQhPH!D#1֍SCB6k5jFzT6<4=9kxY5TʩX(;~Q#R"msxU7]_}A{MCZ6\cB 7& ` ozPX?7[:ޘNgyr[e~_ _u恵(B׷ Ƞ+M4⬔'BAB69s\8İHG\ej|uXtN"&'IY4Tv Xrace)&VW5QժϔT$}Bд 紸bMhr ] >xzuv8ƨN@,RbP&~7FL&TUI1N|N\P02(XO܊)KGĘ^-DѢ,RniY<PJdIJtTp.bl{%3#:>ZkO 2i&'5Y,Q1T0Th^XKbi"}BH1tYݓ)*"bϻ䘫5@U@!YC?5t[x `C% 2,dd nOVh D *3[)Ka%ݳ^%$>ReMHPڑk,sDID ]%3>s]fvH::!w~|=L-բ[Tl4 LOhf C#ly# ,a'ZJKpMWf{hAӺW1BE0wC ੭LE&icOsrMm^:<~e~yi[!!RӋ2%XMZD-Ϗ/o6~͒x eR}];r7KgKT;ܫ`-} x$ۑA#Tk=L%Dì6k~EDMh@.PO"@Nx,tx < }kp{S vd+֯-kv`sfu/V_)%!'\bW.p\Žدwq!UNJVlKvz廄w"D&{))I\H81]@Z/!b;۸-)$-y麎-l[n޼`|ҽ=eḂ~ȟcUUtpkM46zޣ w#r e9' EFT^sqIYIgW8 }/2cY,np޻xqpCLS}Nœ2ϗZo¨jZj-L6P5U% Q$p.ݾYqRG`M.BTsUWcYc \֩*+rɵVx4|vd, ΰ"u]LRwL!1-0n4E rE֔ R:9$%fGi, OU9Y`DT_ d% c6W r)eVw0e<⌣5#R t'5&a:0`#mײ/HQ%iKRL8k<1B#})+\eF#bq2S׬(^UUk$ՌA|  v(kQU#h 8 -X1yWkE- XK8Z߫A[7ׇ2F&k]BP /EI FeJ:beJĬm:ΨALPP[M#Nk VZ PH Z$5m44V&)"BD)j+23ňx;aӴ޵hbM.d[n h,+|X8o:$@fh]޴)d>X &X{#ҜwV3<89d"d4$k;\kfW5O4fp|a *^P8JаX.NW.n'uRMFȁo93\;bA#>y]Ey!˶΄{ׯs%DA:@k*Sw0S)kQ9cN' Lkppqo6xƮ`1INk{`b躨,kCE(g`2!h6a^cXf/|S% i`PSNA+/OzԞI[g~޺d:t\g>_ж-!DΞ=hjKnCb>[Xtj 2Wg3>'&e.0_,>$òHf7cj~%i9ULS&Rf/ o\/5 t*&eK j$sN9/{<3#LA!pLTC4BD1Ssfh%OU&|b6HZE`N$(Hթ^$+~RخT'B72vDe<"uNg9Ջl"f4`c:xԇKQ"ZVM-ib ƋovoDswO$gQJ&0$6T$䚄^[F%gB>'Dzj؜̀BXAHA#r=;s~\\hI8Z{~^KF'^ッOHGqPsr^7/|׶>G,ˏ] Y{*pߢ2*پb#$§j+3HRҸ8K 5p>^$$Gt$sRdP1 g_^븳ApdHӤSzBRI$B2=KMMEjƶb:綞er-I* !(woK}tݢ2:sF}Bd vȢ%v='lhQoKMMi&zi<_޽{!}6} zi1Fh4Ga xLiv |c'x9$M"$A?goQѳk9wac&/*PIU`-nh[2*CBeQwN8Va8>3+)k|4o~I*]}$o!UhdVNǹ[g8)zZl;Ϥ\|Ռ~FɁ T,)NpT n$޿/>gq<| >c ='Ƭq:~- vbƬH+mЖVd)Onsͪ]FM*Fq,g %fpdYb$O!*iU. Al2cXe(u4x4* gGFIzz,Eb >!1DC?1RJW9lKU=MOfy;hPx(5 >Tp,1:'adEyGU&ɒK༐@]%RT_}j5Ԉ5Jn U3XiG2! SZ5]ˁ>abuu1[%ʅHu\+)1jjn>gdD5Xdk>bLMTr&&E^I,/m2>  T) 5K+eS%Ycq`q`\?}CZ+zzQs ;"%R^2w=" %0"Q# T "FaUs' &}_@'`LgՑwd)Hܪ#]sC K}IY+κqs`@=H>bP]% J֕R:|(Q'.d6):D92j9ie}M5cX[)9f}(cTDJLȊ)%2DJT4{{"㔊 V4֪V*;+5@c5Wj ˡFfaاTSVOa?}V jZ:H+cbɠyk~ƀu),OS#U1rhm6ʜTcG8{B@\,s3dv|>!3eGug֌ q{1'mxnVnf0`MPE0mR6mR 0`$279{=9v{IEal3rCY=zG IDAT3[+/(YtHa;UzGZF.곉fO`{vjVB;9ܯi`6">ڲy. [/_o 1tIҏq'hn/#2rb~R!u813r'K̴3c $tox,>W ^ 絚! V׾?#XZp501rdG|4ӹ{r&CԀOH$:\nr_zoxu ߾U~e,Xj8'ulA:$鮚3/|7Fj &gy܋|os\]vLW2jvwߧ !ـR3[6:-)B2Vmx| z͈°^$4+tV,b#٣Ar`na>1'&8Ɉg/_]n-߇IɵD`_n^ $WɱUqn*v9vc3يd b$T9xP,iCfw19sz$_D\lO0ӑvzcgK\߫Fp !"}D|@Gotm{\ cgc@b\I].[G?ڨ}(Rg_l/v|4|_~RR7>e۰oS"!Ғgtܣ[RS" Q6$`cLUyBRREQsge4`İč7~Ȼoû716q܄Kרw?ʜ @F54 RpG-~ CDM41Dp=ܿoU\}bS7~۴TEe"0ˣ-[nv@M5ó쟛1,Y)5pDY}_|*O?گΟǚޮ|Gwj#Hsվ4`GF48M9kG]}/n|mcEX,aEN*5 WD!T+H&\ӷZ>w|ƯUhfEUڄ|ȵƜS^"tȎj;;/dzgm&O)}\Z-HEՌd#cN>&gUoI&ĨdV8Ad7X'D,%kzDkT)(~hZ#nA}d-oS您)WVˈnDeUAJU!11 Օw*ͨ0;vdtLdP5,񹮞1sP-R5 @L"WK2g29V'w=irFE!B 9HIZ7R97daԤMG%FBC5zeOvNHy{+O{4&N[::O^S<@ōǵ]g#˅N?P*}BP{?IU ̣Y㌼GvvcOV1ԘQ6'MOp՟co\qߒבs{9ݕ_ӧ9~vryǕF`%Ƥ¬>ְmrxG=Jut -B&SaeITquo/]D Z'Rm:Mog˖n1g1;SOJ`_y&{#`6;a4r#1\Ⱥdki%''ǴR `~A55WUr-3}"mr|mcH3 Pc6Y]%$1uUC0s%+i]۱/NNVkcf!))49%|^}W..nka{۞t~r?I}vgBABZYlS1j,3&t='1=LLűH-t&Kࣲ|O!hN *[e@,)DYĈM 5}Ol/C8fk2m x ?jDϹ3GL&//|\z+󸠤:9lrT¹ 73z$EFnB&Tё(IvՉӦ%L$#q3lz!bqr{=|도+/FC'7KAۧ.@ O|o<߸ѿM # + )dclUg8?}ۗ9u3L8Xqf![OQ~p@nOj=Q`owȢl8UÝ`\"C=2s᷿9#׮]{Jq1rxxȝ;w>q5c ȥK6e .QEQۉ4]ζVz 0Jij-X#$4!dI6_a$_eٽ2prrG[o oQ3[\e =DLuRGȇ|$kxDŔHn7Q ԷOCj<:QʄL*=-8 <&s}Kl]A>Y;PYaK%su2,D&Ҟ&}nR*(.Q:9=V=혬w_3nt90q|5%Ο/Hܟ4 úA~U|4Bv^?]0"ip a?<$@IDR!LEBuSv>kU0e39fD;aRV++}1޷ZdJU*]-TU5gihFS~|jfvd"#s!qmlDT+E Ӕe "rA.Y,5]5'fYt^5F:hؗɫ:9mcYIMNFJ}QJRi"S!)+:k#<A5Xy]*'Y{*PQa~i[{idF 8i +4 a A>4L'#bWA#*-ט}*} ?o9>A"^iy֜ӷֱPg#<,K՝SGfk4.:>uNh[O3E o-g*ͻCo}̵pѱ?KVjDդNw4kɂdGvʕϿ\ b`l# O}|v(5Aơ˼.V W{G霒XNup)eHL͋p)`\]UTmv(wiʭ.22s7 B*Y9W*jzY<{ryJJ=,Zn:.L!9ψqR!6ؕipaBRt:gw>8_۶mQUt]R d;RiZ{ % jÓSdʍ[rtt8f܎U[)iS+eTNH{VggOOXW )sL|cuOC̤\3) }׳\35ig4}c)~Dh M-͹@2=CCۚEcISpRUti&q޳l{DRN߀CDq,W4`,[vV;#VJƞGaдmx7LU3Bk -aݏXwUlXY3)-/v4Ӵ c}:_V`(R؜)%ź( $f`ۧO~6+@2\=[=m6R@D%f  W;#ωaS 1^gw%h t'U=#O OzeyC٧ ZY,D*Wl2W=L!%qp_}zڣʌBx?5ŽW>y:{>m gb"B6Grn$8|K`z.iHj xPJHH26&?&}7e-λ އ| ~k|zyU.6ۿ=|[t) \to|9Xopzz㇜Sro^{%-y_۟6MX_WF\AxZw;=PO攬kFAWC$˄&{2=c>?7o~@k\`=͇dj.H@(Qv̠9~znȜu>v 8g oRM5̧0VޯT\m5`{n ZSvQx9FPtw#TVYȷǫErG0~4p/GCe4jϮø1FG>F 0S9& BO1U UC/rp! n~!p%I IDAT < &QqLC˭}9u]oW L&\w?gg Gũ~t[SPXdc挦L-9%6.hKj6 a]'WcNp,nɰ^1- gfM=-i'p0!g03lum`9#Ί6|_%gLM+c3wDZmT1575%DЯ׶ Xq_|}5 fө\͛|8|lRfNsPf"Uنf)Vۅ-𸼫tV|xl?e褬ݘ!8Nm^FuD/$0G x~pf_TDX;Ú,s'5^-0*Ԃ>kv_m/}=ܳ8yc/V@vBa ^bzXhĝtt?=&q>dq8݀?]3=%,L'-x^]'3.zE&!v  *lkWL "ExB c{g$BT-v%Tj>;}<}ٕ_|۳Mh*[Ε$e[QcQ?ϙE4hJ4n7=K'd(G~]<]<(Sֈm6ifZUgm"3#4/1Xɨ%X#&w|rҼ1'xÿ!}NE'nJp!~Lջr ml}ikRo7^-g2 *i/}+ׯ;r{_=gw|^_էDvfH`F&M K b6z oж {+4 w[G0p\7nEOOpV&qe˕k.YNJ: NBG3>c8;o _'Ꜯ;B$C|xl Jld6^йHIEoW*$lu`h򞈭[ŀfW]FrV`;٥5PmGeJ̇vmJ@* nWѻ2!};C {! q֫qB >i'Vψi()9%r)MY# Iv&rҞ@ɤ9_2 ڈƎ~∁!)t=ڊ5P@IW/i@bsuhD1&0otL&SaN]o]NEH7d7m:4 iӀk~o)MsOYomL% 8U՗oS9*{f)G1)ӔI#6hh"5w[ y_S+-x^bDeU),pxxȕGmfK_zSLd5#77xp!/~0\\~~Aw܊ ̎Wʔ#ӭ,//OM{Z wu7a̘p9`hb!`Lքl3CI@wIU WE/sT HĽ4 w1D 垠SapyO_;kqYvv-- w=nv_Cܼy@$kG^]G98xqBeW)zhW8` |Yr~OpNٚ")aȈ*^IAbX?k?L(XLт93E0GIoiQFNQ)0Ek?a?GpA¾ ^MrK01(ӎ^I)umˣiןWsz=*(S7tֳ 3NhSfZFJ\eMAƨ/5p^e6X@w{Dr۴i Qh Q( -1ٲ!C"K"{cUSwwy(j;pl͖Ye(7%u慗R[ܦG>8(?ǽ{'45ƧZ ?T:x#x]xsHd3rvd<3>}67)X/ϸX#w'vΛkm czwO={2BӖO)8q?>r|g?=Sݒ|գ 3 @&Ĥ,W<|]f'cqk=&Эפ4k<މe8ߠ0i,95Qf/`C}ovugǍiIRIZ :c"nde9Jbj 5k4 !x\..6btҶ-v2&(o3WٛO9?;';lԶ{Y^yy>zݽzӳu^mvqNh͆՟e[ՙYNH648$)!gL@ SdG= ώn n2A#wNq}6(B z' y֗VE&ur0Q6{c IVǀ~+ݸOޥ:M~K8w%`ˌƨ8w-zŋGOt~C9GN;pQYϫ Kp+@G畫l8=hIE x4 9W%Q2|a%Iq)^"k&UʪdgcʒH{BVrT0~^9ONNOxu"_p|/虬=zW\` ^{W^& 7'H3,\>銞"@b)蜩cDqxo:5 |r  \g'>{/q.; "aS<: *@8n"BӶ!4-iL6OFAK] :2cb5uBbwG|| |M>}'³^M>ar4I Nge(v& *'Qla|_pu2?:ÃwLV)Ӽ_^+saE-YwKV} 9CTT1NB fZ 40)~- ړsXEƜ~/= $[`aFUƧ5Ԃeb_yx~r~ ߁ 3Z:h+2%FT"&YWI49O5#V;bc`JGvΏ=}! CzΤT:bWHᾏTp(FeXZjYO"d{^kZ 5(jod-Y݆䄾[3 uL tB%y9p!.LL9B0ɘaX.W40 X,ʅ{q_RSjhvv,k軂=&sN3{NO9?=1`/xi'=iXov?!Ҙ-S )Ѵ=f: L׿iAȖ)бXZ-GdBŒ"'0DS+Msqs۟K|)9 DheRr#e,ő5;9L)M3ε!8:Nlji7 ؀mt:ʫRyORoL/Ro%aRJ8HEiYoHji:$)U*ɀ^Bbo6wz,Ѣy&]Jc|LX-_9kV-b$zqjy3(T{|L=6 -hT rM N2*N-`˾]gVĴnl ?[A DzZVݣT9' r3%TZXWUlZ*0J` e|Z7&_A\Cy+3:R+v..(K?(r=N1Cd8>)ubձ:7=8:gXYIC$XWŘLj. m>/={ /䘩τ m x!LZ8ڧjM0G[o7C8_qrԶTW/4bNgL\l:>x;pS9k9:| ց+6M}$昆I@e>P2wď|;ήSt%!s kjRl..ъX! TG_P={oh[^X|lj)u5`ͣ#^zr_nMhۆ? w}za7;G!%hdZ/a+&$&JT2m 8uZiޖ$p"U]J/{4ubN܍I֣AK7cXnig`֐Wdz< y[8GlJ ޙ12MFh-< 9Mnvv"0@7.{?1ׄ>ˎ$C!#xQpx:c :g徐StEO3I-=Պ{X[ WdM-V1'.K¤Rp;b lAOY oO_&y3>g”6FD,3=xxțk;WҌ_>Wy+>STby+XNb:`6;)(gݻ +~f nV0o3|]ppGWn?+^|g%h$ Nz:ł>w~xgޟ}X.w&U|[^m128-k)}0A%KVF~a)l[_y░ cý;[9SWY<9:^~je(=,!]k+X"}osL_{+84U;Idy6kzX;fLAҦw؋2mO#۴+Gp8oLEŐٜ՜qzq+.(b. #Zd2$2[HaJՔ$%)ܡb[[DFmuW#v]1fBk_{B f8ЖToxɪ!ӯB3i&Q!m2dYp&%>/n9~:H%qŎZ\ɀ(WYmh@RhDi@{YZ=6 aZM g1*^,glaVKyaG:'h)l )ӴXIʜ?8_w3ԐE]d#>*VȪ IJcY+}p`bM{3^ 7_?2znkOIIh',ͺ /K WH 3' ZD'JCP,fج;&״` GCk"gvM;=3DМJ}KE}\0 M5+*a@c"4٣ek,SyKw !m;9l6c:NѰ~Oy~wI v20ɔl򕯾G^(n _A#CۀUqP.m;Z:nj Z gF $R4*JL_va*6ZI  V/!ĘhSFГ52d6W٧ULr%!;K n}a/O/>_ @j`33y9 Wfmp;r;7=[63C1Kipς:I9(BRrl2l͡v9te=g^>cRjX1hEb33'MD;e6 mC~-5j[z|vD6,X/ܞ&op) EJL,a,. \|N߿0goݗ/[LAZ~^=_d䦢CŞCE.׾Aڥ  ^fw3 XMV8U㒾[GdJv+_5&_2 ^c#]Lyz7z[7­[!w<4o__6;5~}'#}2X7ޠ<й%iկ1=-xC~Ľ;?szv = ٻ{vCӌh[$lz^T@@\q7Ìc<^=l~̝]!<<ϘL'st0Jzc~{6rD.eAyߘ\LÌe&;ywens>0s}OB%*e\VzK?aV sҒW3+%1#>zU?YWdQԪnx*jE&AMBj߼ws ;Gd)vͲķ#VdlW۪8RU~)˂(uSD{Ađg". 4!g1ZL"иc©ek0Rd,2#M`c1_pY e0";WzI٬r_iQ(&9xG۶"y|c* OmE `ibr:bJV &*NsfI!cEkSu3K[?Ǿf p/g J$0RNj]:?C=F]aֻ{r۟ϻV/c<7O:v5~ ѻ}i O]ыT둣 L-t/OOݣ@;qO~<9I)nܸ\I rbm&5\&y>*IN RŁ4X!Rktܑ's@9@ n⬇MWKr9)Aq&kPh+h% չKuak|U6Ha>D{ѱ<;ǎH)>!N.7h>\vhْ3@hRc Ķ4Fp(!Z\yE<l,e,RXI4|ZS7݆|ᗤ.H2I,) B|tQk!nݺs=t6e`mM5G#s׮4?obrf(v 1tu!d2!zd~ݶ^]pq =OlVLu1+q3U׮ig`#)L^Dm֒`A "DZ%ʚgŕ)>8(.W+`+$S. hK.eJC98kt/r{i5flW .s'~wlEY%gc+VpG9R8#m:h0,W/<+@3J>YƂI+!˪N&0̄ HI@sK췧m#Z޷\#KN|d75Xj!HVz$L{Wȯ ]2OaBe(qg? ߧio)mLitN)NܥQ(Wq*Q^I!l㗛cl|Dy'8/Ƿ|#KYVZtϓ[`J%w JF^RBC8:"Aѩ .J0{+]qOzH[(N,XM}e7N_Ѳ_}.wo%8UX}焾7A|l;!3ay'߁י=,{/Kn5z#y}~ n=O bC j`ꫯ; &pztެ՞<wGx9:|6}]2{.r}?)?dy|JWX8rc>KޤqH QMי޳2s} iQBnC/pDÿ_vDGZ-YrˢD @Aw[9g\29U%($S!wk]bIvhH&gh$uB#rt :S,UhGT%ᬘ .vf{-9#Dpe7S_l"v,9h,CPl |tr{'PrR>n'4.4FB\>xGԚIT~&O(6$,! \1D,zrСƢ.Bf}gyvꫯ|{886P}H,ª<<<{tڲ5"R}sd:gk{w4pmoڠ2<m)lZ-l&RV7Vcގ@ZE{%!VKΊ7ۦ; ZqD$o,#4GV^ Xn2,`6 }lA۳a;p['r5)͍$|^܉xr29YAe-ЗZ^ɬfz)wi,~O׳j FAۆY8u&g;IdMQ$ [ rƗµYsaZ$g 8eYqMgh $Mgv}el-~_䥽g wߞCvf[aѺ;]={JI~O]w: ~xߩ9AcqIx򒍎,lIxyINoq|7u(Q'qsv>T~9(O2܉.!̐W/m\΁\WDR5bS!,Qq`Z0K oAA=L6kkſsq6i&[MH1;>7rpZI,T_(h;] !|s'#?ӗ_eSO Wo?zO~k׮o9?ִ;;{jLgdDrGbwO2WھN:K9>w9?&Ge>e{{^;!L\O@ rHH j2FtIN 0#I4LYVO;5&6?&"=U|aeGτTq@%[%m(X2fK H6Xt"\fyYJ߭ ,R:-(<B0ITGWa z3}?Qm a9[COJ5aYrP>lM㋭X]tl>I;,OOQis;;"iuư:e2[ۄ0!hnNhц eRo]goWM6|ȬV+iY.,+\qƏ9TYZ_!14ޱ<;;'.^ R+8,hW9д>x%m/dV6 <>ak`8%cjX kjwL ܦGM(Lf% Nhێ1yP #N8K 8GpMלGM:LV>휣mZ2ZnwV-RP"\d: ˡT}s3KϫQ*+lq; 4u-g`9R"3 %SU\^?g)ՋK& ] nnL I) N#jQ}ƄZ wP6>m31ʆKوd{V T@wm:tޏ?^;hm^~R(`XIZl> !T%F) yͫ㽪T֥ݬٸfXB!0D crEW6Bdj36I< }߽Jc!plNzFzO2-r_2GB):R1 @@|`h5hM/kbuflo޴eg>c2}OYO#j MDvL';$z SPC|@P}ǖH`,zcDz6QV<~<q2RF'ڢFw_ Uڶ+̷f8gVjllͷyz*YA]>sqzrjg1<}[ "h\.Fʏʺ,Fmpvn!EluCf3o5=QO.Ϡ5zG&:.x4iL&" B[:9ΡRh 'X +WNm5i:""vLÉl}'y&Vwfݫ q߹ǃ)UzçK6´twWK d7x}+,?IRwᜬ R7p:GrªrFBӕqf3)Zy3uM,|ig9]vhȼ}oCFlqVjm+~"꒿ߞoS|ٟkOjEo^.?V>茆 &hx*TxO{8YKaGAJY9MQ>7FMOefF"Q tԏg=MpKrx7A :NQ*u-,OkiH9ufW[釭X(m1s$ H_a+_MvB+,?ĞrYv;C%Gr.ȚeT*a`e(ŪB #CܛY]ܗ3<ONyӯg>R_:mמ_m%ވlYWdr>ˤ}흗o]Ƿ=8{nlk`u?nY3WI+.Rqd.t'8 lM?|4)o8;7WD]2B#ٚ U>$}fR M2i=[;p7E d-[[7]2Z41lNxs{7ҧhVd{qƏd֗os~fGɅߋ#bPI&xJ LA=:wZ_ٍw9~zǍ#eoZ BɆ{}TVW73, lIh ?6lhH]Hݩ1)I8g[,s{d25`iv㛖liؽE IDAT}RĈ Z||Q'LTsUR͈ɵgm %&QBJ0$'\Ai:Imɣ| Db@\Ec)5g q07fk!VƽLyk1㳎- /@9$Il-N֔+W9O3dJ;uS&SqbҊ55fW j MTXxOm)o5L'eٞki`XzBc~pE=@Lq,k2iChl>Z :!rIMk9bLh79‹7RX+-%>ƕ*8?]FrNXb@eJ \& ġHӹ4g\`\K7h.^ Y9Uu&6Uӯ)h$[tU&. ٨Kd5)RնZ^FsV7>c:1s6•^텍cx͠ܢUYg*%8.jo>#9ͬTZWs:Pyެ4Gjg͖)4vPur _7?F+]Al۷G -#e^U2~}0?'#d3ߦYBmts>)^Բ,k:')iGS Ό #m,W,kO3~4N'XOH,X +=RJqCi;!Ǥ %,z !+DzRՀ(1BH{I:h4124S A37ߵTb2ܺl#Ӽ7\nVd1Qi3(g ~Mh X.q3NiӑX*չq_Ç%''g ?sj㚴SOdMA/}3ܾ{ܽsgnE_ rxp0юk\Ι05|Wǟ_?I<%튭^wq@ҡO,SgxznC*ox+R+04(pe]떑WnHtAٯkdadiC]EMnLE8jݝqsOs˟`넽R]ѣsaz" f9sA.i "tPc)e6UH\ẍ́\ j K2{@'G)b,"h,8/YHK}m1:):{g_dWճOLm^P^-a8Sk}7QI$ǥimbm 5#8Ʉq =xc·ߧVtkYb%M sy7X5E)mqU* &Es>Gߐ@o0c}l֌4ef[v"l:M- ){ >;(dH"Xx|tzvyZO_  rD5p3RvbvCmy2>A=iЂygoIȼŇ P"okk /wMdgUlx)A甔z˄xf֜Yp!1.\twe.Slt4)xc)Mjfa!8a ZѲ2Z 9WIǿ/p{\/zKecMo?xc}&WG <%;w׿xqY\엛[3NF IWK/GO>I6Ň{zs>Z>E׏el.΍' p+~.vr|e#xQY7DαF'^m&ɔmY,W@A6~f [~z{)ޕLNB2̝ˤ\ۅor?dzn5-]אqttb'4Mɬ!0 L 6Əs|p}S\lE cԭ Q0˔Ic1ky)5]X_$IELɽ862őzƛUe~%V4+!fl Qjd"&skSY~Yv>}v]<)={#߾K)[g&+π4]Y*q<}㈍'5U!s14醧ix=|pqFa7uU(~H rTﵙ[K:٬/QvVZ{m&SL'/фmۜgĐ~@+W_aV3+٨7TWΑ _c53DH7IJtgqㅟezErά]drsڍLBsx%H]lk#9:XUYl#AK0>8P(,{|H7y~Dɱ^tJnZ-?Ͷ<;d߱('dc/ꋔzK`'70~1rUayH"m7ix!Otן5U2ksyA7cыzj(y `&] V?f좹l7MYy3.Ai*x }Y3O_տSKG (Rt빰J~/T#m[%_,ފY$:܍:j͗tOid釞j5_#)Jc+/55K1$!F*9D ؏9gRLI#YAbʤIi O4R;d'3k&=)&+ՖjUʲV6p&YB@Ţv=5gW bM[+TX$M)"!R-T{ZwUׯchHǨ\)KYRlƔ.Y3+(KZGŊ-EZ9X賍h WIs5%JNE{u##cx.Ywd#1HE@V=,b5]y7WFg_t-qa\{ R"H(ƅLKO& R.L^+/A>xdBی:_lʃr8w?{L\7f?W tn trD<i"une䁂l |[0{x)g~/BY, 쌁̐3{0{OĬNOvT6RE*xHFFj:b}MΡ@O9S&diӭqD4ܥd#z!G ݤ뚍#8RңxM^ ܾ}>GG#F麴]΅xQ57 $l^ֈƴ%$)svz̽w%|_ş?Ͽ:}tiͻ*@+#DCqBNԾBͷٽ2n'{iO䐩jTot'Ʀ@HN:8; N8Dss~fb#f*kaZ5tMӾ~0TlI|o}\}c,?̗|YW/F?k qJj 3`;u;Pe |!N8ڠVeNCpףi9"&ġ!̦^D m|6߱/. ' =? 7[D'`RU̹2I24y|av>"0do U.@.kCJE+{z.z3~wi@YA[?0_q0ndVn4<6g:[lī6w8^xΕQjI](R&c; Ӈ,K lΤk qu>K')* Ȓ#V1Ap. Re=(2r6s&~$H9,tPfX&&aL|hõb2MJh>h71m0ͧnMӶA^I.Y|e/ wpkcX^$Gp!e9!Gq&m!Q1CTTp @۶PƈeHsIH 3C6i*ػrҔ簱jbH,1Y*o5[U4s6 Qc݅`B3͈YPڍkmY7ۨ Md2dBL_ McbA2q1JZ1 ZX.@:(LSs,KR)BGł_kP9 !AP h^NKu Sq66Mv龤z'}hJEM(yMCt#nUt[œ7C rk7U1)ȌK VH.YчX]^{~ނ~0ZNdj CmXQP}(+qB3=Nt0.EK`Hq(NBlǩ _QNy\*W鍵|%bi1R%r؏EA)UNh JI3We<_Msi6 'EXI 2 Eo4Y#y`TR2&\oyw 5VF︩͕|nmܾ2*(wΘ@rpt4e\c4%2&І|(r2:k[a11R& wĜ 4Rw͕i+qegĂ`kLB1!{|3!I2/#%CQE) -u<߬E:E!p*)&<1cĜ Ӵ![ԡh JJ?(Fh8 ae:a -EAZ>1^Mj4e}b:V1;dF@\Khjk6OkʚzO2N`wqlL1q-^{5^_;-6t`s6Xcs:oXe|阑=P}HYI2'~Z"Tظi ݥvv|sGݔ`wojk)θK(VM6'|I׮ :{ll@Xv3@?8wK,$Z`kpX$đ#dGAqv-{cLP562ӚI9ze+fs= twsLTU^l EX8i;a3Oqϱ>/6{0_ȃoD`G,N'6T%+, }D&NHٍ̰"Z]CO;B§ayRcT9%#PZm [M>Ȥm .[)VA&B)v]_#z?g{]~׹Y?o PҞ7;W6{Eb+bɁNQ"+Y޷ܟb`n<&x7Y#|r1WVh]&E?G*N<ӆ;pD326fV9=~{,?@Ba\/AL-f@[{ W{)z2;z8TeH_(}SMl8#|~C' Z?o'sׄW%'xoكhND* ?h?˫*PBsO[O!bߘc\bU]%~`y W> \*Wb:B4rvv]])A 4[C37v!w=CRF%1kf197x:b6y?eXex>E%0k*bR~ۦw4R  IDATbr,o!/<4 {7igp /Nik|7N<-ũ+hӐAI,^'x12E[O&^~؈XO1|/Z?+]ԕd(c_~d~cN`X~+QF❔z/O&x5\ᛆW J_8lp-Bk-$I"qSFJ5=#Zݚ8D\h"xhڦ\Ǟ vF !kUp!#Հjr5Ft.|kc'Sl RdtpTutέvV#-ǎ\p K#er3 ږN+tZ0(0Fq/Xp!5 !F$*D˚SOɈ:$  8_ѯlLR)灔,K 0 AD9xRBt]|>c:.tHX};f@uHZ亃cjB k%a2n wD C'jR>l*OؐQ[8C^U$n8kr]-7wea]s[^쓯?ÍgH;WmkZ?{p÷-f9N p'!F6`MYI () mEcZK yMݕaVbAX64gbR,X\h m`3f;<@FR+"$yr}c*Ml6gP'V6լwwG&f8]^4t]Չ٣ƨ:n \_\t+˿p5MV9RKqS?uL {)c ΝG f^pOk<< t1ʻ3fZU?F7̵#iX!ui397V|]kS#M۲,Ϭ`[a9D>?G|nἣJLePERT;[?O\ck{mpǵV\^hfpvrB\YWdw^yi25WB).P 8\0$4 i el9D؞M-648EOEO¤t9] ѬZM$@.Ξ==K1RBc2 )C_eejQZ"Yѭ=N!&0 裻 [g }dXŴkwu_~x#u}\I_X;yhNLXVV}˫\l ݻ{t\ڄ5Apʉtl$P[/)tqu٤kwL:& [L p$a(:6sq.r)yzʞMN8%3;S>q<}6{rB9p ,D40kG ,㣖N=IyΒY&__}d;}6{S\X&嬳Ilk~9m4{_xO_ٸIguÿz)׎P8@bڡh 4*D@LN&8rɈžq,@svӑ^wg5yw8a>Ӽ2zc t&Ŏdz/_r׀Dvp;|x??^Rdf=szrH<]2 ^d$tn=5'+l M'4TXA#NkcJtXUas<`&ԗbj|2\l >V5𭺞g14+y獙YJtU(6+{~ΙIZaN*dʖU,FdTBσtSBpMpǚc$ zE7!AgfCp]58 )N>7 ZX, UJtSpË(qEw7Na&멵"G}ce$x5`<2 2Zf2a>s8Z"@Nq#9b4)ԶBU8\ie'C$ロ1$%T2ILCYK;n0=+](Sr?as;89J;x< /Ϣ>huҖ>W/ yN9[]po1yЋۋw8Ȟ.7H uxa^z-'}y6e=C.6}1܀9-V@ P pU"37䓚a`cSV)z[]֌٤ee,V+:[N&%2qkM۫Ae=k#Ǥ \@W fŐU \XJ!b,V\ }dL/¬iDj"~6ep.@KbT4Lu#=Uz4,Rld8(8U~<"nC2߯3꣆nSrq8pP~*jqZ]?5o[->>կX!aH%fFcD;L&-M̦Sv[[okj!'4Du}}L,FU9K!b`紖|Pq>Z,{ eX a"5-Ea`XZ-Y,PU]1ndיo#"3ϥԭnRͦHMnCs$Yǂ4/1e`Ocab ]g{`r73g_[_k:8}AzQOLFyǨtLU1x3!l0C';ZXHMe>qh$oR-l]H9Y{,w~PQ'cʒ-Y:qQr8i99[ǖ4x ̑В%!y& `y)Z$KQ2R`%1ijT&ֲOHmZw r Or~>m<1mG2Z$kP ZsCW O"$};Ğ{^g6?n63V%wSVa%pTJ-PKֽT@Y% 5Kvo-;K~5K^?^Yݗykܺu&̃G {gtm aNNsxĝejEf;#9spyK$$ і$ J$c#wUWiA[$;9{% f"¨"Pyn h%5H$81IGi%M7BV]v 7_YѯWEtF+3D*lY<98Ohh?0G%@˰| pYdgz2)GD.*2G+db˃|Hٓ8[S6_(jD1I_Zn|ġ? >[0ϲ%cnës%7rЛX奔v!&;.ɯ[ںG?+x=w{v_(vtv]'>pv+u{[xӿEmwPOS'm}M->;S6S[Tٹzikw7.lyxߙO]n|ǧyg-hbk94g5pcZF2=qI&8;4 9q(9*n)"Y[j D=_r=ObVB%'jAe%kY+i8H~oҶC5D2ɧǜ\wuB +@ꈦ[AXfZ2蟸Jϲ @g&ghvv|&d:ő9<,OkYB^7D+z/ 6<31}Mmi܉WgH_O=,#!û¼>`s\{̞{{ &o~7~7nέ7],s\g%:+ƙsItD?8R`Y;/bB 9"xBt9>$eNJAc+L>ęslR]|9q鱫\<:*$I$oYSH 4+uHQm)OIj13R\3k4Fr\C xoZQߘt*/b$F4'u guQ3 k]Ldoy?0J6ϚR*u98&|7T~BTM#83҄eZ|@'HƜ7oOG,pq7 iHhl$RpEJJVcԗlaLIưqX@MǷR? hqXjzyN5F&$SպR Ow.B+s99[>|?q+ tRص8PR|U7%LQ T%"38Es,)'ˇr+P%ؕbINkTtJ%^Q%F)LSBEjE5Tc?Po8UL*j̉i9d eU5Ijt3hWYËQ1R]jI̊j20ч&[k/OMfmbsOl1 1A5c,\Ya_ PVxdɚ5!ESm` `glμmpFi& b`q&d_)H48X\6pGhgfgܞ7S@sSb*gd`A&yOń/4PeㄶjG4KE0t) LJ_&|\C\н0u4o߄saOQ{)fΤRr=f㈈I?MhcbL8\9aYV}OwYWJ:f39lFHHQ!cy/<\t}Kn&WmskNPyv:rJsƻ`G0-?N-x[?)AP1MP]ʃhE7[Yr)B&p& IDAT[}Oт(.i e]퇁!8̙X Nvğ9ijۗ@' aV2ѲUЦ43>fU:eϼ͍#5\ZOlfcl$ow''i?"'}f=N[[짌21l y\Y,V!*ub;̀#iO{[ qE՜$fs'i"Ggf+^5uB \G0&k}y,9493?uܥj>! d 'G KBe,#13wؒc1)9=K':+!;'>s_cޟa$1mBc<<qns<S'-zO@*^W|Y^K^&DZ%q}.*.2c)ٙZ}';7{I-AZpOwV3:OWtdK*cTmfH<4П5Ył4fⰤ'qܾ\ '0.gy,Žq.UTd;UIA'yHA3c`51sv9)I0|fވ:>rrn/0q7 N:Biy1YmbwQcZ2X(I\|.Y6q(Y"WJVO3!48t-#Nl]! A^.hJ6ho *R210P'㸒8 iQo5/H\/iӴ{H0`ټj1V$3H`ݴ H=$'-'oM7f,vRI٫ L8.d&tj,n#:䘈)㚁vO3kӜ%|J8Ƴnڤ|INCV+ZƼw0<@ ELP2]m>Mst]fy B s".YbE2kVDe7qRuΙT"#4 rLŨxƋ3#^&Ж@$%=]ٟ̚@xL:2c CJ_O t%:YŊkm:Uq;eT6LmSϭs,'%L 3Kkֵ\I)ϐ[8{!•L;Nyro߳O>=GƼG 0gݯ,39ӦryX8 Cl0BJȎ,l~>2t 5RꓓSo})䑠Ȩw4 혙{lL&iC.7*6 Y|XxS Qqn@gR:R@ EM4#9* {dKȈ,#)VKx79^-P]052?yD#M3"Bt9wL;O!.Wo#ii}Zl`OKuzO&NX#v2?r_9Ǎ ȡ?8Ŀ}hY_3(?Z?V<la%{I(<'Op^#)t HZK =MT6I&Oͯ|PMnX^Sο.<F @Pw< h:(~| ܸy3W88X.<KF2I !W̅˓HPŹ˄*.9,WMR>'ښݣ- 1/ƚ $ ѴUWՀO) MIrlMwH)^/2I)EKY?1bJ,8j-vEfMj? #ޕG/=H8ɌEw{=vWl؀h]vΚ\#FCӿ/i;U1dswCn|a۱s<펆 -G?CzHnd[ezI0,W+hEVc1 &آTxO`U'Pn'X5wR D)UIns ӵXqE=R Lý4Ja*Tz`n¨} C9],Ǒ持}_GI9]ìmM2 :b_J4T㽥V'"!I@Nm3C>nWg/3_ ^VfܓIĔcd#{p/~|͛0(Z&T*Uc{S%dbrs-Nww~~h['51% 6MS7U~Ck@(A\`nEQ~7Ίl$EcxLuM?1mK)2/?/AvƯWVdj>Ҭf܈%sg\ͮ&RpiZ޳n+f6L|ASQ$cdcxL-f<"Rzш0&fzXSh9Bw0z_.H͉cyh@YkFrfLAh2)V Үv.=rRz)`/ d0 yo9'ra4asUKfZəI[ĞH). i͙JFƱ7wy*?|{.y}uN⛧w+op8ֈ$TD@7߹$G>ȇv~?}9yetٓ<8"uG>Y&|m4? `>-/㗧.[\3lI>?AΏq")&[h,: l2ӡ*:_~?=#>Py~97oܿq"{4mo2ْn66@YݖHK!H:Ç,Z82c:.& u>+2ħY `9" Oӌm3,SxWI%pJ a$f!24 C0IfɄNp{Η8g74N7&1ex絸Bf8TqhrfG֟[^X=nL] rM>3f%7F~=YG,}%o7c{$p9-ke8'!fNO9+8yX" beW?p z,ѺV`<$:'[~J#R8TwXF| ($ĝg+:RcRݿG-]lbZ_w;#nD8܊ >Ln~R!=eOnÆlβ{vɧk<4SMF7n(yZ.mG[\Tdƌdؾu|'  1o#cMQ*p"YOօFbWY&ElљH9L>qh #:trH0,-lӧrުCLAm4R"zyΰ-kAB<stWVz3M߯I.FgkҸ/B5B}(0Ԅ`\$-&Xrp L.h+hoڔn!e39;;poESk?U24usPIa#t _۝t .Z+ӫ.66&QYDwwPƏ\R!J&Dn-4M 7*$ )-9C?cD8)reR4.^@kq ۨj8# P4zge!:e\7=^trVќOEC]KH)Ak3.3 1ohґ|gn6H5[\YԌQH͞L#cha'U 1"a8q~a۶-Wzb#_ lwB7bHqsC |e~g~/~E2?!a#]|`qic9596 ks"[뀰a5c轷M/ vaJC$YV Hu;]#I!DrIQωi?L_mCn;LxގLOvЬ1cI m PP#LrcO'hu dSnަ[x%`r Vיo=8X΄A22iAP)n0 R-NsD\qj\iFrb9R'NU10kfFa>/it!uifb;>YzQm[p>^Fʕ0|оM?W|S;l-5(3y#/VC`U3)MZg~i>,7K_cϐXLjF{o*pӷDߠ"WwՏ !8yTN_"MIN#/WrN6pm^Z9`ts9IrmԟrC4{iM$b, iptfKƅlh|HKdT.\41EFl,VV}3?IreSU8fd2g,#ӱ}Z9)Xj;2m:2a(a 2' ;&$GBio2Lc6?YwlZ 7{6(\z.57meܩ}'L_pu{)A$M4Mcq 9F%zɰ^=;nN7_} WfXs^>䔉/nlFr2nkbM \V T>=nOط*NJoM,j9@1a/23[_.kk:UƸVϤ_5[-&*(1g\Haճ:;훜ܻMNmM;w 0IÚqyدjftNt._uo뾱Бq@lNE^Ɉމ {JS^iDi U2O,{ ݌bp9zAm qq &!t3\h CETk5 iCZb]puqn!3B;ўeS{jd'HGZq}NJzxkfL!bFEG 9H 4 p'YQ:t3&wK!)[g8gy IDAT!+eh$, O/дԎsmWFAwut@tL|Yl!a5}z3M`8!)J@̩JXEB\y:sCV;MBRt&V&82-jΜܚ3)&s;Iz!jmRL9&(DUPJ{{#vd$rvLpnӇsJu7,Λ.P79* m4{ҩczmfHTN[R)粙ia5isZW=cL?{isLX; 9Wҷ ƌwƒΑ]BCDQ&}KA݄ z}46QeNuCbh)0kS lĐU|2ac 7x.EȜ ׇ@fiHFEK"1#|Cgݯsr[ǧ8>H׶<5z:]W)OH_ƆOVT8⨱s9'MbNJS SfLh+Za@w8pe^jm484!qb51.kDpP8K,F_.81%{._bqO~ _O}SqRkm4J)8YLހe ھ*[cbcow=РJfBR-:T&dmZ#Kfݬ5b?/g_ywn:vW"\ҘDr8X0o>|HԱ e~mRF%=CG6q3 M`r^[Sl-FNe^BͩF ~WQ`tحR14B -Ž6L`= 9lU>|y߾{Ds w:w_|շҝY6.@Hƙg04b:';A\ps:1ҕzEuBHRħdJ&6 G:%X5 =.xًI&m;`̽&W<5@:? |U|/{/Wxsy5#H1N.Mjuw~8ւ~sx`{mKo +vaDL+63\e\ Oh! Rnp(P:- {{)P^)0{Rک,7|`pdpأ{t#kVDZT^`E?COX12,i3{NK HJ#BgESʐ84mǁsW.=ά#dF~ZHjj³"ȋla5A!M#Հ=qT[NKjѫ4eX^$]WБT[tdESY9'&)E>q P*O]G qk8a"M(}jO(X7m!6&'c' ǵmKhL]id;yWd %qll*^jn{6kdJ.y x &mW#A躮`(k+lG:\{Oh3|*9"hƾk څ5S o1 &x#`#ӆ3d!4aq`d\qvzBG`Rӎ#"]]!o[nfٿ5lfRt&ƢM˞yj D#)ET ''FQ _˼:K%_KdK_dpB0;C54͌#!Dh >yIm;s1(i8f151fbqdoL|TM9ׯ_`-qYY1:9m}o*i2}  ĵ)w䜓o[, ygZ67kSYC~$fwn*]zP)2WjEZT 5maj^)QY1q]GBeLc)Fܹ;x.{;qy:b %@ (u/l2HfϨsݗ7NgK>sa~(cmUe}o?h/x4̋S t&$xZWzG>3ԇr棗={pvԕ9'ѾOIGKVzw_J|.*7lXd.n}JʸՌgMKHPEIAw_7^ ;U"JW%$L'.iV ħ˼+R3HT|EPcut.D1۷3fRE+׍Pcx&ojU@Ԏq}^^up׿ȷ=Zg/b΄ʺ.L`4QkͳOsy20z[.o,wt>8BuԖ)&qYpbk g>;~.ǹ19 9z&9Ο gw?j6Y$jîumtCG{TM;l1M%:'};͗*1O.SIFo]# ~eo;_x8鶧taCRM( ќ:EGY/Ho>T1pG 9 qaG4C.)N<9NgJ ,)3A)4!2/n;TUG:3($+ &BTI>#nyr eoszIr\p#mnfdx)΍[O&GNbZ#'%%"c"-ɈT8$ۻKd'ϻ7(>;D!Ja]ڧU3̷Q< [Oe+vC(7X5}ՒmclƬrVa0X;#!aŮ1ឋݞ5x- mI+.=kAyY.3vp=-Z&k2X=N"Y9e|%TK ɂwb}lLD7߫k ,T *00u[WlbY}5c*E,ZJ:R4E?ʌ0hLN]$7eﶌGg'3bNHxrڎYҵa⊮$TPz}VHZT%6_2)J)Z*KuBVW(|ʍcXy\)&S=SԒ}*ʀ)U] :yvmd!o ^INja N|0c}چϨVSSM_k;~9l 3joGg;hqO"{wfӟxϿ'_`\6F3XN\uO~>;N@C{g5o^g8 f-gyAlQ`hR/j"Tӓq`ZYv}tVP.Қf.ή[E,X\@ՕlD+^4 vxS?")_ʷ.oޣMJ2DÏSn㪚e>swa+[W) j4v1&3c&P]Ŧst/^wnv=Kx:W2}PxւшbN۴f7o/^O'83c{{SO1rP1/0Q]Wq1vbTr,SF `\)]kp8H~qR+ŪT%PGn!5Vt-+ + s?̵׍RmHogwfP,66 j-y4!7C{2Z5f[3a.G7XSggby<`=֘YŹוs{~zpn%rtUm;sXsdd]4Bs*31Jeߋ )1@=\ &'4A9K2=K8;GPy7׿.:m= )! NL~"L+]f}6~ƥupegr>B2Do(8%u-nЍX,b6m BB&X&TЦ&ƬNW-r T m2I3kWqG) )HBe#)dseY:}?WʵW7x-G ]yH6s&Tu$y $7#h4r6#Bk U]Y e2Szbosd-X%7ݸ4ϼG9p5E*HC*c϶Tn `O\-HwSĨ0/M5ww&薥KW9 zGHԨԸ|ٟ@!K.=E$ic[.i=p{ofm9waju sp\\Gitd|")laN{5t:#Qѳ*bKQL!^" :M?lGLβh9|b@o`.bKa6!l_Mc+ %^I_׍樬ȹ gJKRR䘱xY혳%R{Q\j#JٺIG{׫5ړJIjs*T=9mW-@{,-VU0lm8u,5؏l}K>-1_شf@G\kC'cö`Vo<}sI҂xKK˃v{o|a?n >iG;]rԳh0R]̨]\``%1wh|s?&gù_ܔ_ r+c鍆?ݶ2]ו:{̉eE甎チ<(l3 圇Igh[P|;t%Jh9}mlȽw8/C&aLj*9::`>?Y5%ܟe+j265Sh_SbrO~mPWTiD8`Q?7sY l9m6 PRU6 _J1D}QV5D@ʫFwTRԵ blƆʫvl/Zg Ph+!f6,c+: A,6'oE2{`MQV.XEVD9ڜ'LFmM%j{GBeˤ9=A >89QߡBCHq,lati]Dbg(=E. ÞN_!$ՁV' ARM"P2`VU6%ڎeב %d0.'6Txw*MH*LyO^<|w{;voΨgs?S[ؐ?sf<댬]ٟȹ3PTٶpo]>3R퀜-sun\d6cz&9WC*OR9+U0NKs68Y}?Δ,XeHX-}iN}wSFLwkm[-;X؅t:Lї-θ1L}n̦+80 Y9ZF.L6Ҋ ՆU;6q8cvQhNDQgphCHpМ'8#nt@Ƈw:yYf\/JS}}Y盳*ao˪W6=Çv>y7ڽWyw^gR!pIYY^Naeo}{e7 uV&.Z8t>R= 4sO8'1x8lm՜? fW"le )y،-dtdI(GTl B 0-^#]/c%db|&$YmhCbQDDwfz.*WC懰\޿[߂ϟȳl"<<,:|6GWV ȓ}/;+ IDATPY U2I΃ T-~![1o i1ħiB= =mVUl{g $[nrԴ%LOg2RH 2E8Jaˬ=$i󒃒9 x"1j#Љ2|KPa4 y|Dž0o,e~K}K‹CeAtmMwijAkqωǹ@q,S޺@zHCkW(>,FxbUM#ʨ1g\hGߧ͙Sg8{"hbFkq-VG!EY**Tb40U8 0޿LӶ%khָc$d1>T%kPhMJ[آthĮ1jlB%Yk<2 U^,ѬkVE-JY*E٘we-YX=bxU!Yu3*d:Dzm9'[ md8(,>nLo->rm4J(iێG{<ގR?`فP@8)2A6e,[/]zهl\M{)N2ڻmt+Y}F@> YAr^4@@lC5,8 AlU"7~/5|q 8;˦ tF#MGMӐ;o4ҞRYYg$" Z_@!QD䴄ˆk;9q6Ⱥ,r -=N/gyEv3lMq5 ա?Yol.>Szxs=J߭} 4cHp\ݐ-bKP@]m:35:1P>"[3{,=lh!&1U0C؋Qn ^۾7&Cٛ {'\^`U] >˻|MϰBrhCS^<ǹjNc\ 78sr"7+2oo\}AG{kH8e˯wl2YeF gBWAaᡩ+FWNsg8+l=5%L+C[ n|\@Gݏ !q杻j ٥ pkdg y2[;߼1bnML~9Js\Cj̾Clʵ>!ZG rn6#6ECoФ}\ YV!(ըdJۖKf"@0wz:ڶe421)5P'?s>ƭ5tk[/ʽ׹hKxY=Fç;.Ϝ<$M.ҮT27J!!T3M`]ђZC{ 4pz>q1KY#9wUL2ZPo:3qNӵaq D^cB Nߓ2V%|UBh:<V+vv9vd4¹U BYuUX6>_xv=rj*kjD7'5 *wcT4mo-sdIub\`(>cRoQgoA:`renbt2&`ZW0-6(ĨEbFPh-E=Z2e{ [kPod@wG%kgєC\7Gt%B9|R,9Hsdj@zJƞpBeB!]7KaK^ 0҃}&EqM`2 ɜ31u4s3Z- d.zc3 }DQ `ar^6#ƃz5ϕCJ-{mk WތhufСxildp 9Nkc^#q(tW!RSql:RvbĔ:v mD"m)}g2ZU̶O+ّ8I\%_J-0 wD1cBc䡔J%H*XĺYgtF*\={6&])9^D@C4~_'Jr%YU8\8jV,c*F Hɔ1n r{8=;1uUѴwnwn;̻L oUP{3>tq-h]A^ 唭)٘Qߪ9t3d0_8tˎUg(] CSL(x ͍bgUU^!_7Y,WCPRJfm4o\6DNi- s&FuqCPl͉[wK=?4?e5&(FKōi !dk5?YQ?gJ Lj|7YG3&{ PԀqDazeX[oR;ngbV 1ssm -k]c{3 B#S4|lO'z8iJ^]e%_\ , xW TȄ8ܥ Slv?=b쵻Hj%ި98j0w&,TF1qhΓ g ²v^smREu%f2eSEfWpc .us >GߺopĻKvHJV(Q-?>sI"3 Ua򁋌=VϞÿ|EJO?_ s=jw?>?R|^ZC=ѡ/Ujܸ ϲFv[O{*1iqk FpJXOD Y*Ppw ^';BWk+p-Ο?>9yvvvP3sgvg|4oK׿X&yQ.NN!{m&<*3 d{7!nFqqJʊĮ[ؼHFd #ۛN'ڒ\h࿈n<=B$ARoP\=v['mpo"%b>xA<)A9Z̙27CŖ&%c/wDrjz(ijR.۷q~η?tfbx?n{͑6zDp)zȽ[Wwoq A|RG3鈱&XD]rxUOG}i%Q"}ms!@D8u.~ vvrʜrL.@+=;gT8ԧX;f!Skxm݇W[\Ò8tr(/=4Ʃcv 7ٖ/ WayagbA稺BUe\) ЬpUMNa;s,bl9WcHx&F\ xVy͉%ˑFZh!RgTb^ȪjJO*vZTARwAj *J'Ioí]t)i#YBG%Z(J0gjmMڋ8pŮ7pJ#.X"hYf*$"j];R'K"M-xbӮޱLu*  (X&Xesb5.X”f}E 4jAmе1%Z߄`"![yh-T%m(B`Ug-1h6;)\-Y.51cZ TPR '&ij-9B 9*&[6r {O>ԂݚJeBr]Ӷng+0HD :ìE ɝdiU?ɋ@?z~~w ށnPßm_7Cŝ?Ž/8:c7 ;ra7d }1^'s>=l>z{]aۣ>8ygv{-ʇb4y'&eҵisDɴ1ѴBg3MѥDTa3E-3#Zc4s+ np2EԲ[ aP/]#I)X6- BjNaĨJpp`(h{11ET3Am vF3Q֔q幽Cx6rќP'BPLE*lƕS3vg5r̛Ľy{|.i aG6@\n] Vʵ5ДkbiBFԓ1hYoiĝ7in\E-]i[m]TDЉɂS iX.nVv+\y_෿nܼ>D(FW1sZ]sq`|>(y??ܽsbOԿɩӧdA#vI*Uj/``H(ݵp>jAoiWVT@ba]W׿żY!bb4t9k9)Al'ȏP30y耽_9uWw8_k[BjqNԗ:v؄=@[3.f,c/EdzmJC=w#JM-^ )tSn `08Lz)+,|Yv>qzS Ό6|ի5^3zKuCp@ˍT"qmaqt`-bʌs¯1]FUEn[# oG wwVc4E;ی_E<=!%A&۰za=m1kh+E_ۧ[FgY]qt"U9@)ebמp[UU~:[K/իWi[Ssܼqo~\t_5D1G.1[۽|'7xUV]fd۬Am8ؿw> cҳd0."΍SLk;!p6sDgx K'FGY';T܃eza?A!wxw|Cܸ` h L>Nseweȩhv7$. FzZ&W0#]LĘb&k$KD-m" ' ր3+{Nx)VZbggh䁄URu2y"\x'ng_rr~}XC{mcP.m&Kж^/!YQ?YVZ&.&q<㌵Gr+rb]O5e{EPk5*kС8)"%{c2͇> O>ޝ5$|?+pIݿE=\6_z / ~qy#^-4Ɨl. %S) 2Ț-zEJdk!J꼁(T:ͬkix{E*KjSZ'+1hzw2Ѧl4$e0÷qowh;"f{k@֘M:a 8\t FMHJT93_"т)// kGekHA}>GlVtySx?hBJӲ$I`KSMW# ]\Z5-rf>Fm)]2ԶE%#o|eB;Ϊ,ۖ(pn2[1_%oy=26w@Z?0g\hטiQ t)ZNV:fS53hxZShGa<kKY.#ViDdg5!2U522gTIXT _27Y,W+dMAqhnO`\`d;u5.i$K;twH5bip߮ "O͆`7MR&CE̐Due| 9OJpT*?=hU.r& ^XlԔs/kJ_MxO=S&)T9+6rZ4!gR\5+b۔uȃTKHU*<\4/)p0yV}bp¹'`a`qgßy H%_3koZy*9SN( j p Jɰ"5CZH Pz_hl WŠ d͐ @)DBPv>ደe/I:a $dҬ!tGqLoeZ2 })Deh~ N-q%׺h(v\Rgqn *LJYmvxsy1 ^EO,2dpijtq-Ъ'Dܭc)[] @/lPu'1ZiOTᰋ vww8<OYN3ݞQ g+5X3~;m;F3IaTyr I%aGZѵ HV gOrOqYZ: Qd3fgє8)qsшshAXu0O#Aةc<ǵ#)@*$ dD%&)QԸb1UKrgXM}m8^aD2ɺhKX^"sxOF#eaLdm怰:J͊m颉&YjƲ={TIzwțo^#&HL۵E6akMdx{"ޏ덛@&y޾z<̓HG%3cLhM-%qixw6c}qH޹_KO)Ţto2q-(A_Z-ܿwrYD-8Q6{JvI?kiLm[w2yJ"՜*fDSvRٙB'cFeUVގ#FCζ 4f' dۨ!wlX!P^T ӈYn&:0rNENI/\8C*w-#o2w6oat23JXJv f8㯍Y N^ {$ДߡGޛے\y̪ә3A-( MڲB/ ~/>/%9!28'$& =۷ggUU{s E=Ueeee.#lt:eX[jc}|'ϟ|s}_yG}O~|~p-8I$904h|_" S븯u'{==I¢ג 4{:LlLk6)$:8:fs̙6=K1Z:4T_U@e`ed?J.}&&Ɗ% ԥϾ .>~i _' ɉ&zfMCΨQIv=5i|r b ׈0 <A CKaj1~aRĴG`#rt[2zN}bwS&=XnIln7'CԔyס[~ qVRn \P8Y(,@Fcöet|^k=e*8;vm%d)gh7)wz䫾LiN%1}Y?ں5`(U1ƚq(y<$84ZD]P;2C\ރ{_  ceӺ2w6ZP48Qid>q)_`kD)&ƴ48 %ƍh䢶g੩iꖦX3vNUɄN J `\ݹnX*4o!BR-i}RCW+GL ܲf:B֦csT9MdÄ34}6GŬsW>Bg.LtH:^i0z}eߪ&$-Ptc -,#l2)韡$Di7ĨXdJ'Y8-QJ0Bۥ1cGN':B}<=H+ Q3##BMTh $+&a]++u .ٌkv,m.ٽ6LwWzUĠXĕ V$V &ˆ:7)l. B0 MDж 44%YmC\0o2a4`Yf9zAS/S0C3h_"?1Ջl&L&l@}N|Yjd9c &.8e\o3,%O߮=#4BL8DD-HQ:W+1]<\l߃^Ҷ-9L ֮(S'mwNjأ Jl?E Ng ͎i. t j,Oި08^:vx@'i}@dUp4vdrȻɢΖ(EѱB cJۊ30Ң |@UXk!7ygX+:R.+Q3 c霐N7z)H!ScL ~rikLj1,]tVẂ|w[pw[3 ҆t sHuz#9Ҹ9"~uzQ#&fB<t vbg@uج4{wȓ7In2MҸ>a&ƎҀI`PkRp+єlYlp8Ӵm: 7T!W._^K-(V#m(a4R9AʂRK`*4#տh GljM+Ň>bT_5QmmQmL/f,igKƴl… cޛvW¼ )(l ^+-  G\!V9=iMpP"gP*N*-W0*+FcT9\)n/| Qm $ץDq15q)m; -8nfÖES2:Eٟ 779I174iEʋ4z- MiR@%x01oǩ*yNmaaeLu[g|܏jft:Ua1_p@ӴtNފe}ڝw:=~?OxُQbṯV$xs.0z13k~8y[xZF{yGbcͯ=h͞ ʔ]S ӜEpKWbfp'h4oeu5TT@`V4qYq,iP(#cwj$y]o˨dipFi!E^ߥ2`F[*bұ@2]밓ˬ9X`+ehl=eC)D,BvN1m!X"Ey&IWJY.9."7v+ػax##m4F0mL ! M Eב&uiedL a,Z4}59gPS)@ O12 *Vy/|??ҥK#K.vs[/~E^΋|K_ggyIz+9DZ߿x,moNUF+'kU4!zb$4""&$86l /r]$?BiǔW(%FCm*نa_i~g-Ⓕ*կ3M~S?ƓoctBKpϢ>i\VlR*ܙ/h"Tt$*+ JǠ JG |>jΛ<',5+Y4IR Y33+ ZF$M mea sF1züVfuM]G5X E(L6پx̛c"1Ɇg2 %g4 /vo1d-?%Efz `? Zb;cSks"vl`4Mﱷ/̧?lnn u]lRctk1k;RJ+]C@פ ڣLS?s/p|<˵<%"=*dz4ͤn켒y.IzV{;@kT667ަ(D>:goNz8c3fWQm=Oxmӷ4ۅ*E2Ir VLG+0`X8((JBXz; CUZIcLܾ4"^cTԴ d?| w%Hx6UIs[@ $x+)kZciؿ\1|-ƛ&x7X,|{ϝ;w(dfUV۵̞^xWf,wo1W_9'#IrwxWUz6&`"8g4S5sGXc9 !ՔT"8=hAs_0yޠob0~(]۸n䉼.bt8 IDATe}Z>1+ȩ  v|vt9~(YVy*9k2;9#͑SPhPY;ˠ o}k_rͿoȣd=P_kQޟ謃t2Dq [n6K/F۶k`'ډ={sԢkuMR=(ҏ뉫̢Q:ǫ3 wؘ^y[`hџ',T€0BO4SX9r36 |q̅1VR0SmfEYQLlnnSQ Y=NyW̓O>//3N,'{ۉkMr"bA_܌6`osp{,oxYl#^'6?K8f6]`ۇP^.xOpz[(6VDޣcLDzG;X_K__y& Y |{[_ _?g'ܼ}.(ق *Ę "j9QDMb^skWkS >96w)xmz߱99(LD.G/4 a4m| vX`$HuO@ D6x@DCb`(B@}DWh?NFM;sKb3CBbaFlw1(K6$WAiK'9?e671%y{8{KTU…q6T,.yu{^'wq.>pۓGvH{ 8Um0dnH1l}:̎ #3LX2lqOIU-+,C5IbDΙ7btYS/u[$l%?5!]Oeuv D\tCHT^\N2W@ 4NoocƸ(,Ak螲@53o"eB~8V XNeW`8L61iQMfMbZ2"+#ԇ"*h$ɴ"cy3zsIզ@q%)~HvIN _VL@ЍogҀX l 7q;; D˸~t볧Zv->$6r3nBmXZacO^׾rQ<+ia !m&_iP[ .kH758kw obe5-ݛl@yE 1k~?O8X>D6:$pf uS&6f1J7*&{{ fh D,wjfwp(I[9_Y6'ƕcΘF&}HgS-RH:qB LYUK*4-AEdsxkj2B.3-;T;[CٜM\\ܚsa4s}f-V K X[SJĊ=Q!C2K98/xM,7+[c tk84A/[7 G anV[)ʅvbTf jPI1`V`h@="e;:c`zK׮οG>AF+AX[S:֍/QNlځR5TE]t,cmLE(s)*+4=9̠f+fvtM.yߗY sF8clΣZд7c怰| %Տ^ҁ 2f@Q>L,vK hM˶l,-*B.(v޻5H %3U\s+?`*k28yv=gy.bkp Q 4YH0jR[ DF(!X~;߀üy͂$ˬ_^\@Cx oC6޿|<݆Wc\/os[4e1. NA#91~AD+죛w-,ߡyO\@3,~菞=BYPGjfle \\ mZWh=![<qxau 8:0M67&i鬆 DM~H( QҀV8<^p]SnYK 2*[#i 3̖W#a_b 1$ZJ" ]$/+d@[׀BIEP=p:zB[tM4D!I՘0a d!ClogB]eOZ֩oIz+sKh#)fHG-RB\0&N>،cuCˆV:A)3]oH.Ċ&O`80oP آt\_Rx)+7>jC֗G0$\rDq ,SٶismM89P25H -Hx})s=7 ^CrU >{eb|N=zxIY (јM6-u]U*|`BJ|TJ6`b\H! [(Ve !bU:8M$݀jH7kT:g)$sU>$uX+)s~44 Eµ18{ɇT0Ɂ#D(\j9,ܻީܭ+MsXcRz>4nUH+MtVQwj"p1x+Ow8|sgsl2#jVETWI"@nN!IG&Cx_ZՇT @p\<{Xbh>&|Acuߚ:CQ tXSOW.—XN ?^=!3c@U1އ.pZ"EYe9] dl1Yc*RJ/񻌂^Sb6iakө)Emh9irԼ;~8(5$>${IT cyi$${icV5 K p47mE6uKzy,UL%w2K_: l.M|`1j@舱rr#&5<~edDq*aznrp/ܞܞ.u@q5AAiic&Q*5oNymoA{rT.\ΘKCE @[GS BjhGKEtΠs9(4>`2ׁxe4(&o]D#\Q1bc9A$sWo]^,)MJSjN9nݼo\SH P;;<8<טm]ʠ{}9=uk}pOS*?cW^gx{g~Slmlu[x~Z>J=TWƯg?zU|bz )Q%9 N7UVY6u%ݺ;IfwA `e]SUUZ_o3|k&HܠBbb~[0Ff_'-ciXڳ1C5^5 b 1\mo1{3Yk=/$X,g 201Fw-ؕkH@ov8#a-(Kgi m`nx@nO$z[COvi3 pF7T -s3^4ecK.jd~ mK4kދ|w3|#MpO?,EQ-$(1gX_fk.>0uDY)+i 3 "׾EW,~ Bk8(* P4`@T~'y$k~z1jۖtd2a2:;t!Ŝ1o mr63UfBOVJ~IOR(,.5kx649Fh"T`B'=99A.rⷾo'>c㔠wFϬ55o[/3.G\lqe6b̄j–)cbZ1IcThٝ[3PaB4I9Hfη_7X'س 岥m].dwbF*OQ [ܝ8#.휫ח//n !8ZtqK:!TF&2 Az@L609&Kd}oJlA;#x+p<}p~}M~:$J=cC~`=~AW*J!c`f@:v0twbLI1&D>̙08WaBA91stX0RωaWDf{inĠ\6NT)&?Aꕟf8BHlf39lS~4d F 4m6ʲ0 5=*+O ȩ:rEg@{ϓ׿HEMWP-EϺ>"t׶77Ou/cG[ۻ=z_ /]`]i`yր'c2%';{ hL`248SrMU i}"bC:!gB'Y "OdU3ڕ^r1&y DU%ј,WKq~MYEIu[Ai%m[ӱS l5wUS6K>X  E|1B>DNz2᭒F5TȪ0ƗhMShh8b8L$bTeS|Vg!Iv8qD[!' m4fҲ@26Ĵ:ވ )ռ.4!4`)]*簑n;PĥDhۚYEqe"'eAL/QŢ6]b &:N>@JZg@ooG!|w}S%růXƙzw>g?rFg\vk~xvs~}PÓine]iQ ED6|  ة Q.fAviqk cSh$Hr^$f@A]!vP?"-&XOK| *a) LY&&cibnMe~4].99GL;S¶a ^ԘYM8^ ell0[})^x8]Ҩ,LMDv]%v tPDd`&<.ʦeBhggݴ[o֯uxd<9lb`64ϩ-SOԿ`E<*YKF1( |cyp{GSL`DQ}"H٥-&2Ǽrm>g|>џ L ֻXI}M6´=>[1[nFɰQTn0Ҕ;@ 1i60Rġ䪤<Z<6wjy1:BWt;h(hDiP,|K'*msw넍m&7or<_HE!<`(Os|xs4G Rq DIA5i+4[#\HkAlZqtkl`}Zx/$]( /%%?R(@ ӂx"5Cp϶bCĥFh&@wY~S *K*}Bx5GRvYlc`J#JwG* l0ؼB3;M g-/$1dLs ThbKK, H ]f}ͺnмen:D $Au>dۉRx5jvPt?$Ȍ<$Jl92lsq3k]2o:o[όu|뒆{HJQTe1IjnRzou356eY&@24k&Uq?ѶM4gubzbq>Ȫq # tL5|\+ w btU;xcV`枤b6meM?>KIZ1k5Y=?eJD=PY\59rc攬tOl.ݪcBtju˵ t'_4$3 dVel BdOʾB uЦ,xYrxBÎ!nDi;!w_I"_uHUYhh>%66x[W8sVMZL*pک/X H:. 0eNLl#sgCLJf eٝo;!^LYCfVeeWUvqܶBC_% @f1bhCWE2maژv`C3r޻9g|X{_DdVfuL˧eD{ggTHa27A|SWy!QIrs%eBPPB]{.LF\8ms%a2N5('Xbl:c=Z62[Y I]SbN aXKrgѹxN#:dKk #btC(xt+WpUڦ#9V 1{a.[Iؼ9'֛ _ Ox?{ߓ% v*J'HX~"9GnݺO_~ᗸyv~wʼ!%2QO2 c-z5Uшԝw Ih 7n|z)Z;\k2d@x:e:>3\M:տp1.^,4~>p{3m5=w 6W6j \ا1Yt D\sv4B0:u GSGq+"SfB^& p?&᥻نqHB&8p;Iu&AiPY{m&6o>>w,87ǿpG,OoiFpB8[6 t> y⾥SVOM)ނt2ʷB'7V43o K8[Ă| .ь*lDX̑WaT%Ox%ؠ"ёN:A%|m6nX\Uc\^{7fhۖbsGs3exwjŃun|Φm''c._׹r*Cڲ5! N[d&D р#*?(@V5oW|΋cOgn" L~w)ԤѳhM;OcٲYݧ=ƶbkf~̥є}.XqFeRLRY;'_ %*HEHD$ j۷<Y-:VsHjs_w˔^@*qQ65l![807{ܿk8[nhD'|5f!>xKǘ?Y~w6v!س1rN! &2XLTHP{̅six<>,YlޮCHB'j.>[`M # 3 ;xXJP5p!C2cjn匉Chf$2FO_s\?v4r=vCʸ5@*X7!fݿFKnrU“rNɆDQ,p?2TEKnr6g9s(`C\caIP?)*ҫR5=>'1 " л$3NEa ] *8$Ne_׌;{[ƊvN¼3` )7F69#y5ƽL)㌥2mYH]Cm _\t]ٟ`mUb'Gb 5Q)٘Pw9ӀQ^n?ee\9v{yagLH۾[G_0F"IƫUqNzjqJn'{.0?q<: @꿘STgˠ=\didl9^L޶*Ulbt:$.Mn-MMOUWUEʁ )%}TՈѸFtS5] B;KUOgLjDvօx*Cl4zL Z"S=bzJBE9YLĩ@B.y^skЍ%sGBXB eUZIUUaNVK.L&3vȊod;N5MV+X 鞡 +Ob, ':g 1[?_i#FAzỵ9H(,)lXqyL2`6 1i!L0fYaϘ Ȧ!JAbX7(fpirms*@1'F%EK.OBARG:laj.b]Syw`3gWXhaJ;yz`9{ f*k)"HH,ٚͺCO]CT{ljf1vAR2MP9QYGU{&1se:;5u ׌y9Bt1ej/Sy@eVM`:_[{c>3y ^9y\L vǁYuwq*kiꫯq}|Myus ,9 L?缓-D5Vz{kPCO/}t~a}B?H|So'~NhunSavMևwۜqV c˹{|:?e_uHTu#t-b#Tl4OW3l̇`Q碃EbZy87p," x{e2 Ix8 G>560;騻uFC$&Ck 'a=]}I8zb(n7I#cp_|-o4ם۵_ PUBC]n##+X~w!J-f;۟P}6owܺ0 $&N 1[MrgWtFYs4񂽷{ױѝ5Rb4Y%ŒNs!yfq%f]GX E,#8K7dqYfm֘l}<Ţ7nw&1ٓl$O^[Y?6΋s Y.l0Yfk G\ySTƓ*H֕.S3 q`V ŗgn.?ѿ`)5x1ts,/k [1.#Ϯ5>|+#&'_^{F`VFبJv Dh Cx" *{n8}WΉX6"mL&=NcYs} IX30|ߏT. IStU-q=oG3XbH{{p2Ylډz~(cznN" mNI \?}ҊvuFj[lJ-Bg+$q3Ikɗݧ7.=USiM}]KޒEjgVqax֫+ܼṷwYl ՚.:\>c:8yb\}Ol[lAF 6$]lx1Ll\n%əXd4ߘ/855[ƕg5YXmLR z͒0QYF玣 y}[K?(K>`>_YoT&ErH;tt!rv6;c9X,v&zL"[ u=*;SiZ~ܾ}7f~;;FX.I~Mf<$RLv0̹ܵ^QifӔbwe;`Xg/>/HN!?ǿ[Xl^yhOɼgC\l{|̛駨'嫶4[l6;̙'e4fuZ3EVctaWGfpA53m'xM6Ѵ:| nz4pD$8-G(1<Y/r?w# 3-s77ϸt2['Ym]릿Eo $g^exzrc$~[,,Yq MڻmWe6L̸Krl3.:ZD$#*f'kbHgI}LU.Kl! &iD]$cskϑ|®_oXp||̽{ަYk?@]7cm[~g_}0fsE,?1Cnx|/moa Dʱ`k s&%H[rT"9C ,s4Nj|3wpgqt[1{p"K$V%l|Zkm0"fWS]<78;m1"ɓe"KҀtLO!rma~b4-ֽKQI HS -m6e l dE=.~7ׯu^RdI9%>/}ԩ5lqKGs k! fLC W4O=ч?z8߫2&0`CLc槯3g8pkvvdD%)eGi`T#%@֭=" m *{|/2vX=v>v*" XH!D;h;b&uGs#{h)/"V@1X;"MБ Y\/YRcW =xG IDATNk1=Kr>Jv0AJW@>ԵREm:[ Uǎ{5J"f8>Y%QCN{~[nƴs\\V^t瘕uX(Yl8FRѸ]YŃ9` )rLF\d$-L6=6"9ń!D4T VM=ҜՈj3B1-GmT 1+! ayn+9fb?9ia&R\X0Tb$193 qryQ;vۮZs w[HcL)+)Ʈ5cWT' ۰YXOI)Zε{b̨{F;njR~ՎbUWYR൳B2XƱƮ#y!D6/$vx_NdlJ qg!ꑑ},5@/FX'Bl !Ωsk?oY0ÕG^?z->O/-o'7?p?/;z[]a{d gw_\]oy;xg#Aѱk?=.O !9BptOk*G c3ҥOx b|bm m9csU]u2/\@Z)uAY"?F}(s8 D L5jĴ^V0FVAхz39m+2=ʨv\v"b—@k;B`py{ Os貂qݰ7pē?ǭ}6X4mbغ݉\[,#]c=! rtVV-7L4]d?#lg>eip&macoW]M,dóϾ|)n޾z7{-XXt )8c4aǀk@$Tͪox+v>??S^u~'|hv M?/uPZ(@w `g>)K×ABYJ'vOv_pZtQs}).я~+GG|s/+IN =G\q뷙c1xYG]yQnlZ)Rj+f:9:Y2zqV!p5W9D-& TEYM5;xM_Ex0"R`L&8(|Zړf\Uu&19e$7}w>{//UH `bĽU& 6Ck*M צ$%"&r[YC- 3ĕu% ܏\.fM}Fj26'Ў=ˉU񎶶 2LVs^Զڴ9gΑ:XؐmC,ZOYX22k1 .wn7/ M9~Jy 9.!گO}td2… \~#& 9-hC$l;wx׹u&Mؐsg>H*~4V85t`ڈKrЎFQ=r*(P"I [/CP)e2U{&T&aFXI,5"&q1^H|>=!85t,)yl0yћ"pG@ #&yE;ؕ8廘)ིۍQbcQJBw]c9m؟|J.cR]5RNR=\.}׹sb1ȃxoM$ T AD>H{2G2x{pb| 7G5*qCl0a@W[IR"v[G{;q9C5<]>{_vRGrз=';uv*@9??_keהnx* 򧾫y 01ʮ, ge{紒Ucax[,BRIb,W rsd͠6х0>]PwszRLx_C6.hO欣R-1EMr2WBYӮVtmCӵ[)l.jxa`5j;/\DjbSR"kgś#ְlie]zw䤦bK}a m{YeSdbYK=ͦTUEiXV4Œj u]/rN~rk֫_ݷ ۝߳,{~\;[t) Vg;aK9#lBbTyNrွË\}%l6j2sivloŝw9 U dltBhUYϽ7CvC#! A#mjirarWf k&[9B)l3{sʘ7c{ΕFdJWlm Y)e`2~(¸ȵK_jp1%tah beXYpFTޓ$1&2K,@HZtYuElI]63ړ<>H b(awޟ\<gi7}皆 \=z޽*zaC|u ضSq!a>?c_{7tא<1‹_~?{N~'r}1 PK/ +ڹklotְE;Q߹KVU]J3\}!%%JRħ| 'N Ӻft27^{ϽTp`wyJ,hp*LseO~+s B@X0`vgqȕ>UB+p)[@fTό2KoʽGqTY,*ü6pm8xIzNP 9-N8_Wna3N fS^pg]Ue]A`+a,h,.'8:O&s6R51¨MLH4ÐƎ:g1KZvքIM24ZxJ)@*pU 18Bv4zfXJHYKê[2zmjU!)?݌1|svc>f{܆5^fzƹXy 2v;@my*u]3N~M<䄳9mDo_O^Bal\@Դ},k*gF>3[GƬYǚdտ%9l%D8c*LB -J>0*pcE[a9$6dh ۊo.YDEHrƙ p`} SCڠe͈vm{LAarD1$gv27K901u{Lg.- F!՗?KW'wC&%]O&;INA+W1{Y'e `ߑ|3pUI<?`$toݻ9Io9?]VPU#K\ѮK fG-ꨓGU[Ҡj`M H)N:ouN y,[ Z2-1&#yeDnn wH^e=;/|Ekٿ]4wc{Q"m}ē3VxSO"I>O).z4<v e[X #+*o!z8-SD^˾H &II&YLجRIQ9$`k\)H ixfWTJ^([9\V5Ѥȑ3'ýX)nIVXLalLsJp:xFUq),Y\6\dz=8ʡsILQaH"^Xe>Ȭd)ۭ3%ba]sv[hM1W $CU9JF0)Ьeqvk9OOqnDʦ53=_SsM=@z2[3ᬮɗ;+D5V"Yq"TRxkH@ضBрl5y9WXW_c+)2<1nxo kMC6 :U]?g?ShCѴ-9ii5b1Xb2Ĉ/:BgСxi,QR^WÈS2D\U7 &EvCʁ[q3rs”NG) x;hdqS [LY8E["q҃ #P̅RgXx߇/{v[ ݇?'WZ(&]s0z:Wjm'er襋ClŃQ@L"ye0咅bI]1c(xQZ2yn[KZ*?AZ+*_zY_R&`W.%2]۹=Rh1/Fub'-)c};䰕1ɩgY-@)ހI.xAxIQt{2 ATߪ1=шdL]U:yPQ{JroJlaI<Tݴ@@Ͻk,߮@0UcOhcZdx*ZX׃{/׮7tfcʬ}[bSktbX1)W\x걬{CrКHJ+MV͜/13\2X {n"H88C¢[2`G`|?PO^¹j[a1Դ3 H̑.vX^M wY"uC""؆o_eV]@>!|ѸźH#?SNx{/mBgA*;-lk$g4ɇXE;''7]S^yD*r, ER&oE2}q'U!6 _HN^Y5 U5f.U/Bha1(@ zDA"0!;eN'ȕ+e0^cɇ[lJ7ڸP0!ERzbƥrkr;=Yz4ΪW6JE%vYQ7C1Og m(Exho-ߣQI"96ZbÊo|\1 Ry)~5kBBύ!%F"2vTc^[JdDݵ w-kgl6%!\, }Z*_ ^zUU)9Jɭ:}cĈK۵8I 62r'Rۡ6RU62轱V3."}EjܥMګQL.FN -8b)Sg^4 m4̢:1HZHgkbYuOtBҾY]1Z5nqj jȬ,6XiWo-[Km,T1sزPh>QeXwZ|\I LBլlu͛;gs6lq҇?-D->yg1i#*HꭥC.6Cg#ẢQe4; [OnXwvgؤfҴm;x#[wYXļo-[֏~'oۛm^ʗ ;pH&ܸqqqۣs׶?>3T {~9s̏؏wGj.{9/vzy3{MI6 m <5yan12b0NY.4mKLT{ڦ11A]<9=>͛p2'Zr>9{lTSO-}ȈIɄh%`|zLŃqwi0>w#R7J/1 bru 6'+Һf𕧾Pqpm/ IDAT'gތ 6K/ދw8}&ݛ8XwL[},ȹPfN2$gYsd봝*y!XH`cƅL'uL$\$LL:纄o[q&n6YJaq4-:U L49o-0Ȱ7j #B!CuldZ0be qtB\.yWUg$nrC6p+mZۣg1HmQ5XJ2؜,D`fq {P^mb16$hՂOBg"eI263DjIO(h ^,w GSƦ Ӥ{S& {8ǵK}LFǐj Q6ky![m/tkjb:cվJm}!]{I=_c+4wO B5حz ses?hwK:QJuO*TQJcB2IȮA$m߇a0c v[7`<6}ANO(]UnW`Ν-[I)9@b|q|k1U49&-A!(a&*LGsE̦X/hU8oc5k x 4s{0u+,v $P:bAm{楇8lQԣ1Fx QQm- fp͐ȺqOr\|`G*0w鯏>Mɴ!΀?1lȿskAm.0G}`?܇/~|QG >ں16|2PQW4ؓeH߇{ 5-xɫx12Q,cՠlF6xhJ1d(ijiI4^,%ycR .]W_OWuolq;=7>"G~5x]N~p !,>׮ʶ®:':ڽhB kˎ4l+ >gh-om@ayf,Ϭ-NWR議*YΈ>)OV %{+dICo%QR*@ng|<:Gg'} ~'P'ݹswy#3lTlP\ c7c\[5:.˒>fecBQ&G.-I pU>= .pz0>Ha_+>yWH`J"kdtq4ҠLt%8 &oA!v}tբZTdӊ~Lu+Y(-s7x5<@xynff+ތk~u"BNXt҂xwHpQA4uDX?"뚙,Ar&V#g^&ܽ{m7ޤ?>FtճrHf uzԵwiv0vf{5W9⯑e`]Kr2O%}{;gkf}ñ/WLªE戃fiB;]@H :}_k-A {R˪l/ȋaqsuh ȞIl3YHFأ)Y {V׌FK醩c l]c3'x3љ2ՃQUɧ !pv 4mmY2 qp j}0?  N|4vwһv^!=}zGm!{1pj~e't{܇τKg^܏YCp_DvE W8<8 fm0П^ZiDZGv[%o>y U1>'lT h ]UlsEzF#Zİ?l!MH@]5}3FkS[%f4g)eJP 51YUa DMӚn4}RXɊ4Ք缥d;_ΰh:ىvRT41gJiȻ2酖Nƞk[iU7ڒkl7&wՄhLEE}Zhio5,5s)ɰ|Zdz]ws8_t3lpk̺gn^?õkW]Cb>r1ka7JxzQ`9k@a2h5m&ԴnZT>g>q|szBdY*jq)cY1?=;}0wWlqtź4NN{?) )8ҧ6-M˪hpsGv\dV\}bx'?>l!㜧36BS=NLEg#%2S'3]OOlZ\"\Rg0d~ ԟ JӶ,{X"!V7FXDQ h^yNMƻfoa9{4 mB,J63JX@7`*g䐛e`9i]lXDOANgzrsgqT}p:={㚔z\xpsL )V4 @YyJ;qo@ +T }P3VXAS $8%m89Θ-LC[ &WMT4A?se=-Q^$ hIΊW!sdbcOc~K8L #<ݩ^{o/Kw@DSǨkD4"$ -\hf&X3c>_44ټ|GXħ=QZ'&jI@}|Q`Qun534)hDِX6 ?[q 6CAS`3,۟,d^ʻRYM~+N RsֶRiD1jC;Ѩࢍ?Ҡ9ӯsrr~hK ]&$b;dF 8&H//S[—Zܴ ZQd|'-R"SgR0 VS{nMhX,/ޖ)"иSGv_ g^b H|qdXجN3)r0sKJyjs.BajuMCĤ@cQ-5=pxB1 ?(ZP s[3;mi0&cƘI GΉ8Z5$w=Re2)3)6Z>FRάVؾ1b"@@q0Do7i2l8MZh2,|@I&ZV &L CUKmBmChJ)J)Q Kq~my$<ڦeRNKD8I ux2V)8IᴥxFK!Le#[AV״#@t]k>׮-sjͽ+]qvzʰ9gYѬV67k6l/Jm5y0܉cص"G#wNc38hgִŒ<*>!99]#4]CCC{Wٿ{2øwn3{NN9~pø%X&g@Rǘ#1 RKj3;_G޸ux<{|J;%fi`z^r;nxuqR Qǵ?? 5-tҦfڇF4! };w~z.%vD۶0>SAq7W)|̺SC-.2~Y& "uQ!8FaLLZ_ˇ[iqş5ՙf~?sg?ˍm<8_xow䘰pMZsi֣Zd!$iW՘Znbt Riȃ!s{uFz•9xqsry ZNh(zS2?~宊tgN>.g!F)lץ!?wv w:hg V@J+0v\$QӁId+(ƪ*0v6;RZ/=AcE>M3CuwmX]o/yi#K I8gR)jaOVHHp {=g@foY B, INyW;:y~~39Rgzw"q5<ْ"ƤԤS? 5QGMgv>j50u\X@a5`7&g);0%qD OBhJA9W|Yk*BN1+cft R] @,{:MՁdwyt~;k0Hʀ#H.dלvB2e }Z.-Z  )OؖQ ":Iզ'QXtTYD>ps) J)1hڂKQmh!{;eϫcb}GANL4i& #9eI'}kp< 6;x'e&X$F[%f1vM1[,LSi9oq H%'1rbq`uJbzSI]E \XlSEacq [יeva!YSyO2aKNL6R)h(Rz0mRkmjLjL;u< ĥRCE `;h'<.gǦHJV/űh6ٱմEk KAk˜_č{Y?(i̥x+В4%E M;}Xum&R꺪ja8E*0mGy | !Xb>E+ 1!T*ZEˤ+@%4j@Hx>%+R;Gh U]vAd$x:llxYrhv'[2b ո,3Vl{DMEΙ @OFm`+su/_czɑT-E%-\\wkqq[}gS߻dնlON1=l>cm7LJPևMhhjQ/*6Ĕ{ۨ2AY!xa?fLbl * e)&g-c2s~2@6}h_tٟIʺEdæƁalf&|)xO[ @h?˒IR 9^ (NV_ IDATB?$<ɨ;s0:e1cy:]V=u4#!y91n֜ۼ֓1ylkԳdำ^h[9_st #p|~wqx/}X9a2fM>AW {?Ə~7޸ }Ia'g6ZWa |}\kh:?lwu3:咣ܽ{?YxghTkm)1.RD zfU/۞߱uLGg/6{ >L.m?)ʩ?_+>~+=3ǰ؜d~Wy7p8-?'?z{OlkJWJv[IKw†oh*m7#ঽ *s-{`GYr*e"I&GpY][g}02dnJZow_Ku|TIT3};OC љbRJĪf7\iL^ӧ‚kG}f,I{ |CH3m!d%-r(!qa$ $ce5| 0oM'ir4#>?љB 8CdVCnS+\URKHhУmu3 gE$9Q)ೖaG>,5o|k_X]7kg _Z'ITQ 47{< Vu֪ ?*xYY l"AlI+[NufWeNVY53*\ji\sCBႽB8}$Ȕ2T ruǼs:.Gmw.9YеWz0)q M5QDuE# 86xՠ(VƵ*'045zW+[Kb R-ZMC0}7Ҿ8.MD3.A0pTIXcٞ;04AKG' Vʕq $/ӄb7 g9C:TLqdװyWmɩBa ͫ8OJП7_?=&IMd0z6A,HI:@;oX:,K&Z{taVEuͻWKiYXhP.-HC6dHٚqD2 p0 l}-clH 4v nvW5nʠТA/Ϩqq#qz^Ó@2PIqߗe*aDSRy'La%` *؄{`,4ZT<@J1@}_JO}X`M w}m43=&z A%0b~lĩ/)`+;Uߚm߇Z-g8MVM[,&{VvSmzXvvŶ*Iv8 uٿrRTTfsMt3ŁA՟S4GGGqMh;o:Q-/Z\ifX9Mϰِc,r C[/8:F̘đ3R6HN %%!5"lr#9/rpG~IUy'1aٸ?~VҝZ?^W>dW~}~#o=NT*<l:W.\ wevw2OЦ~G\!}.xԽ?Ia]ayz??Y>9Oz pg^ΟT"Ί H+I"Br`ˮDhaޚ)!G?lPd;a)N3ظ["%<$8VL(Aq; QW|PIM%E7PKCڷ]a[5Yhu 1W҂قxuh_+ϥ\ڳ'U~&':QJZ^%s`S66GJD̃]h>/YCHʾ@8@?M[;Sq{0g< ̛l5ƒhU']+\LbLnd:j(q,'a Qm1o,x≛< n\[r-w3?I_ޥbt0=ZsiҚ.3/;V8ъNbZOdقlFpLX C+ y֫s&z$Br2/DZq}9{yOH>/ޤ}+O?%7ɃYґ=89$E{kJP(})N-F^@32goTņgҟ k~^ Q3\R3)Rs>Ys8-N~tpҳ3 o< 0q'' ]*D<8RIcK"soޅoi"Mӄn"FNrg8c;ŤsRfg,dx&Z"Mh^ۧO}L~H̑!( u!^a{ati#.eϑ1˽Iib^G\efŁaΏ H`EhΡBlɣ?8;~ zTK_u|J.P< 0o糭m #uh <?xSUKnۇ\:_)VFf5Fȥ[E@!G@A \6k:ש:v*= uзrɣXf[RHda:D@tA>r 97}6vbjkcd!M6r)hiMK-[`ؔʊ eZX\Yp7s\ǽw^6. i%5ۆut n%^ 2F4&IdyiEwYQTrao`A2QwnvV i# ٬B8CvO(?枔zo bCj1FGwX݇j5ahG^G>O1؎OP{οH_זyk=$|/}+p g|W? ?iێ*P"TN{)"#XS43H0!/!)^NTnB)r[Z{a$-JcJs^ V-g7C[XWfXNAw+ʤ@kȬiw +"Iy˜ gy-P)qE'Z0||T&\\a3ʵ~B4fKp_/p}Щx NP~ggnj`䒃Ǯĕ'{Nn?;Hrp}h7xoOk?ӹ`pw9 d:BkpK6~LN3I9<8>hV (+nO78|*jK Sܼ]ρ>^s]z?|WegYGhi4:8b+6- O]__[*wy =Nhg n9'\װl3l`V ~8]zr?M[ yf]1c։|AD}e_~VWnqӍڀ^/h͍%eC4в,2̈ƝFG8I '8[3!G,``V+cɝ'J&r C jLmUrWU~~o~o˴.B AN &|/W|x>;ܫ6 8}e>g?p$@-zž :^gXLfC_$1cOT9΅iѯ ]EU&v yg|Ђin:v*%lnphNGG{]9 eL—U嶻)o9=?m/)"x1sήV-vdT-f891 4A9>ޕ'$#!򎺕ljw_ܟu\Z}X=.3Շ~k;w{{Qq@K?{v],GIcF-1+1fHڲNEgD/Mc#MFy,GyR3~D# poM]R(dIT\ yhG2wwY< HuۓX8LLrB\Sc>3sle#*)i-Nj)&ۺSu;1}aɈ;Uݮן.f!3$[؝ήX,'ٯ.?Ī Pbfz\ ^Eq 8\jĘ+I' Ȕ)ERт5첷?| m[$G02+6 P&+' :Ufs5iɩ'VHœ0'x!oV4 )₟p2XpK n|yqpwSSҴE<Qt9qX+'GGs_8ۿב=`BLk}ܖ6;gs.γjM tD&X3hSvZ&fڶm;qd#gghH96V@זyr9[Bu32|0y1#1YrR~dmВNd^fx_Ssku9>sL`{w[ئöH`u,8hKi$KR) jFTPTd詁V@1N;m.fw)Wv}xxr53"i!@X!+׹{wMΞWZȨɎ|hX[fMbzDs0ֹ¨HS~gqf{swXA: ˉj@աt$t ;!Ԓii:Lexb('~|4i1#hFn8 HW^zxWa&EhB˼mΓUy_zF3OHw@L /d±_#>8HN!sr|o 7߽ͭwHk{~#?1yOʐ1-{]W ma>o5fE:9  ch=o0M06Y|N|9?Rb*SB( Ӛks }hBǿ-sVv?&?p;`kځ:^ <7{rxrΝwh{!qUr5۵LvURG8vמ ]v/~~m'8RJ!6#FC]ط׸=}8xl /w=M}h',F{ oF{l՛G,ۣ[˺9W]%!|-N a߱ ̛toӿ{ 焐vqrIAޣ.0wvxc:9Uyj:dYqBB>V[%5kMג]̼-ZCguWi)6‚IFR;%gu͸6YG. *쾫."8Iy/Llmm?!}/ӻRi։XH W 3g)v@@6m+W2R=7*F{~n9jAJ5 t"eԬڏ}>ruN{n[wE=f!x[zɿ({^<1L(ТjIfҩ9ewȂKO"&[1 @-m5,L? 2N.{[NFGBk v+8E{RLLOnAf+[tʼɵNZfI(~5c6DU6|rp*p$5jpmR.;7=j؍,,QUhɶQݗkB4ϙBuWNZˤN 4eNjU|- ytFV Cq̣U`Lieva-c>jn&|}n`]0/Rj)abnY7^&-8~pٹuyzy)y 8t$2ĄWEBc!RF0u/ IDAT4I8i0q,EW4cxGZjVchCJ4dLXMSv3cm#WIkyCz+?,60O3STFX5=B[dO mf{g鴾T (ъ:ʦoDZ҂l6 eM*s(FjnwlQW>ԕUSը8Ӯ\ٔZuo%veh,=w};[:NQN>kzqΕL[~`Fi]tU hh]m@,yޭSS[1> wˆЮ/W 7gczy[|lfA|[Α)} -i1p5Uz]XM0F cR͈lffp^Yʘ1yd6;wu( "xTsc*J?&&| )2 #s4͂# dT#a{_[7ѬfndstVـ1EQ#_ x^ࡄ@UeeFvδovgwcFZN[*R'kNJ1c6c|OpY}̝^;j9==':]{0K깧]łjuֳ{̩Nx4~_% +Sa8[IA>Y=:HÐ f~;8Qć )em]7wgl?buC\V󖪪ׁ/{gӞ9Rݹb^sr)06 &IJr<=K̔|/GނL  q8`yS/v0^:\/psɟʐbir~'HhcNDC@g8q `xVvFV(9o2S{w~f1m @F@gbY]#I>pWmGY5J;MJƾ9q^ ?aN9ww 3TmR&#Zd0jHr nEf4$#LU O a^?o/|_ =C.^7vȫ~~:6QO^_=]5G x<<^v󣿍K~~6(hm_qz_uF+rnEgvm%t=Umib>GaTxlz}YGe5d)#x1BUyKxucC+ ni| G="!N)iucJ6*-@A(G|&TtZG:Q9e\EY@Ri^㻎O)O'X\ekiNv'FZd~1?O[NWK3!7%0)QvPa~f{nlfM]՜s6?uس8[:[⚚xsW^ͼZĘXtf`]fe}{=>O=OdQ Αx'6]ظ'=#Oz|;̅;=Ft[C4 V, NRaMUWPE=s4]IwvohԽ UdgI _}L f9g:>THU>fsi@$AjqDdV $]ϖqbK"6Fpg(q)jzKLTBL >#P GW_yqYпʽy*%|u`m3R6%88`# {67,ig3)+Qit1U5I;e<7 $A}Mz>6wHK[)$|D=K;dP#ÒQڕ5Y\agrxx|J^CUP=Js ,o-] X2dž=W`kC6N΂`0ɐM]Kʐ 8GU -Wq)Q],p*,w(ZێOppZ՘~K>P1ȷ6k`eb/^8|2J^8^aMR=nZUTMkU$%OT TMQy @45<~3YؚqlXcJOelVNcǕxG ubjOibɨ>}]|XMH0&d,*Z@#dE': @0гݼ46r\4 QgSƚ1%xlD>d'9d0[VKL 3eR7T [8gt58*w m*[gԠ֨|RJZRftwhk }BP8ov]S&ci-bySCL$ɽԐcU{fm1_>:t3GrL]&D=BfyHFS8khۖ.*$SX}[o>:ܼN2crvz9?GLlwZh];E"+;VU4!r ^޽OێvG {dIqF{RUh~2l#g<^z(_'o3G%8W'osV/Lʉg=L!:O-ͽլ S_ m?8zGC~u ;iz#>ı=xVɱnn[Vc bp&rr W_\_3 n^-GtUֈsK'cϳ#K$C4B=W|bmÕ_^d2 ɐqn^V.ojNJ)hFƃ}%R|EuG41pN>5% &[% M"C3e)L/Є?dgmPF3>HFlœup)0]ɂHJ ;4>#fѵum'lq)3:q0u8OM{k`h]*r6)dbʘeCP?4ANQ3+ҴCF9*73|9"ĠuC2u]4MYƕan1)ys{}%+BU5Ωgo%s wg1%7@lCAHjtF7F du}T qp? v|C.Ɛnpn\#֕48B"k0%1Pa4M[D!mɨ0jNC"IaNv"Vg]]UG i*skAt|"I`غ&X!\&4ǚHTg7?"zՐ7P ɜ >$9fHLSWXWH8]oǃwlw\__sssmQ#*<z|lv&{e9cf)di4(B)G/z@~xy?atZzj-Um|p]~~_},m=gMCO<يzMb>g3nuܖĄ}wTq՗~3Ctc[nng]jiO5G̻'̖s| ~_1[mdl,K\bښh w ِa8ތ142 #ul4.fnc&lęȎMbo/6eWƑն@!n"ii7=iL4}$Hւԣmָ-9ĝg£kz̪f\YltE5p<&St7[s:F%t @  ν*nH4H I.\`?6u!+^KP[KorC] m3v =b4ѻdȹg}srG;E惍:_{!kn"}$ɥOs;2|Ї9ǧŦ+NyGi Zl3O{'||w]~lu ^1>D;]H| ÐP gtjHγs ^rŚg޳=&>/Z\8}`蓐y֬b~5XLv,ΩS\(Wd.R IDAT6&9owO8|?"X[AZyDRdAr`!c(xBN⳧|ɏX_?l5K;ʜѺS $DP)88q?:Ct35xSp:\<ҿ(@dL:ʾb1w\0z4<tp̀XoOeG]G;n_s2`QZpBL;>@*!E,-Zat$P$UP.!F]P k* \n)zJAE W; P1?Qvs.y!ﺮFL]  VT/KaTS{FTj FwSAVՈiFf*]mNkj-!C,U'F+e*;bS) b+1Tբ1i_-]Yk2Tl5 Z,^~=N_6-dT'QbۆfqB=Sd6ׄ'REb0I|k-֩P>9CV ԺpV])jqYuMܗwƔiuc w W@Ja) )3[*#bJ1]ЬRK{1_ڤRݭqK$'fL)H4`0XM cNDcFZUiY$RnjkBbDRF)z߳n~V*՟!s<`3i+=D*@|ʐUF07qgE],V#Ā1ՖLnOuHTFrn'KU܇@Hq\kE%RRh ֌P ZeMՑ@cl]'YÖphôN΅pE(B̙>$BԿ5j&.$GEv'a}*rL\|񔺿fS&B;/a|~_o_g?8}OLӏO/v JW|NS=aܡKWCӶ<|Wx W59d sHu|OY߰:Yr=m~r1`1 kt(3IysN3|xɾK,wh*e:n۱rcq͞7Pqʳ`~> w`>mכ-!{3dm`.yk"B,$'j/y;mx+v1Vt7a B@"MDgyjG3V6GL ^0֒SƋ ᇟѾ~LFldZgmw b)w^Gj e|D\j+ͤ} mvd'iC޸}ms>E}[#)2pގȌm޻Z_\bG^mjQ4/f܉-*rJZT2FZ|MvM0;oWdBwls6?~mĭ!GGGu =FD[t1@ ,ZsB,!g`1t5;8TXg b`[N`q-TUm k~u>O1lTB xL clЎ3S 1{64HW$uez;2h,pXTmB+_NoCs>@=Y2rԷ{0R h֯jijs~;4ˊ6c`_OfS`Ķ~ }bsz'D&Бǵt헲xiۆ K}OTޔR"wrڵLjU@P\&'[o@5Vٱ2lŭ*}LI'i19KN"F2M6Tb %z^GTpⷺdc1.+TRh]UT+ss>'`}WiuV{Ma׾NJ&wVz@RO=5Q?n/x ر~zC $ AF`O paa3!lGBR֧Q'e-Y53le5S +FWT dF -VQF1m5AAJO̐5B6N6XUI|׎/|o(93%RHH9 )u2 C|ao |l.NoؙE͆޳j'ΐ^xݷyM>3S uDP>Mfc6 ):)n&7d9;[j577/h,qUfEv[d# l]Iw# P':#ܤDo5UeFŷW8~Po0,$cJ3=.+V Г o`M":{-9WtI Bo-MEK5ĐvbSvmCogA l`#L]c,g91&r-;UCeŜudGϩpy>6e,1Sm=6D QT0^u>!ޙQXHs]7VsdfQTԯNB(gIDiɷO'ZTOΜ_ܲ B5$Ǽ}ΣC͗xoU{mXg> } y҂ kڼduFdYs|3lI\Y%ls+.EZ&@/=9&ff۳7`}ϻH6$Oi9`Ǵ.Q 9"rOOmLȈH$ba!v|T߷dpU'͎@# !1<`MOW>_ai/f̌}> hچhf5jFu>gv6#{i.24̱]SXiR^l>$J:{÷DXBsF> sf<}+|vEYa*1'Ȍe ChY3rΌAnȡwlZG'Er9ǯ3}]H ^ˑ[V`"?֟!3%Y#zXKـqipA .Tb޾LKdC{G/%$"<n__ssu9'=&UG;S"]ȥ ꪦk#z%8[2{2pu.Sg\} aY%H6cØxB _~ỏb.L ]C{͜;GOop_Y^˻W5.v/~_{ǯig~ܱ*P_~ ^B^ȯ<oiDB2NA۔RLYJ&6quN FS0)v"2ha#8ΓIEɨ)A&$r6KVv3f+֊J{OtĔ,3}UvfAEΌ-)z(:W ᚳ1jǜBS9vh=FW}_BAC]G_=}ǾF\I)w)&,IC+C@fàW >eba42"i9+EeyOTUŐw8i>)dFLmRa$kK4ECo.u_Ԟφu12Gߓ !4qyp,W+5$>p}a拊{ՆgΜrX9x~|+bt*<$oW7QDsIj+NNZ\k {OBiWO7{X9r` }ǾvߩLMcXonH5GGʁv6H}EX;),ust;!F״ҹ6[eֶ}O%vHRaQلYSVVUQΓcDu~۱>b*\T.NJ xHO.ycfMC -mC{DI<#P(\u577V985gs,Fvxժ%>|:l9rMvIfs]K1jc_s|?Osݭy3p-4,'l7gw>6U|{چO/>j}m0k[k9gomwcCeR™lKW5Ա>9]>jI>{L yCU;|vlb8H4rŠW]dT$(f\~'CˁlT}` l(wb%ⲞW%w:O^}$o3[2<357,{C%;#$z] lV'#DCy^ûi}K8k  d0^0>#}T$"@]49b/s 5;ͺh9aAk`wX&&4g3u, ջ'RIny)9o^3B/R2c:+< wA&&raAe1,Ŏ߳Os;`j0* 9&  ρTzagW袧2jg hvл}*G~$a' qTor8~wo)e=!چIK36dl.V&_b`ŋ1,X07s/=¹;lN8iiL4ȯ{]|QdNĶi-K2`L:fʜRz)8>Hp fo˴GYʅ^;CPffb&=)._W5A3]uFf[ckB mm TL}<6aY|zbiX9ԩ,@S۞?r040_2㰾)Nm?~'' w$SsS7,' >XF@ۧsmTL Y5f1͠8*WC;WQe^q|vDiqEQ9"\clVrr2S1#? pFALje[DO/@,OTf51w;b!, nŧ! Si6JbuRl&ipGCh۫l3&AIstQQ 8 Ib[B1~Ƨ{ >X9)fߝ䜴}ڒ1Hu 2*X5)ekf|F=o뚜lE"'vF638'dmo٭oح]OKY-i!v8gMCεݱ'CęMI RgU\ >?q`c }m=d ALCP( STNX}9)'0Wy0JФ hatÊhz+))9LjƅI3b,i {}1G/00jiȡ Fe4>:v\{ Fe`"E?gnE$yISPO2kr,'* G,1qSIz"ʸ)O@&iz~hPd,#<#iѓQ҆2E4-(M1SjH6]s˘Ѐ>тJRSeØ,?8|0R)3 }١}ͺNum+rҀNztNufLUeBLԵ=nfASrۭwTଡ5?RBn*'scBMp˧DZ\mzFZBuXcx{ܒΉ[nk^߰Zw1% @m||93 57= QϞm! U)gFgqWUC f}KN<˳3g9V,7Wj,%ŝnҮf6oH #Dޛ=[\}gcUuh4HP E$ Ӷ$v~)G~#H G2G\Uu=U@"%*B{3sgo} g]\=޳"1K8*6'@!eB!dBB/>xN+R{D kjOQ5gG_r,:oa*pi/"_F;}o}m.^?:"›_چӁǿ?`V|/oҤ̣'swËAL IDATsu=>O޼mYkn-4GHQ#?o{4b9[o/9w|o17t|Ҥ)ɡf;숤¨\Z;\L~wœGit%Əm\bd^^8sȷei@o89`烥`F$i EX$VףLlSqJm5bH`IcsY1V֑ؐiR8@6o,W 2,)f6:%eLȘ.f4 xq?__9UIqDBd-hEZ7ĕ? od;-.`^Z􊫫K6$HIi $vGnnnX|B[b6CBo3B^*H2y0FSg̃b)])܄k v5Κh!v{~`9j4~]Մ-g2HH6e-34UZ~2j[2!mqTIl0 !+jyCD;zg98w QtCe]NEʾ5. 9h^{`rTX*W6e?rM0ջh XYMY.}XXJM`f[5)R])ϟRh>.gufyvDlVZmwX%>ʌSxW^ VvOz&ɹqf[^ b} "* fn˧btN 9gx:鱂S%7I.O\IVРZ הHAVi Vly_xVGKM~4.mEA(&ɑ9^Oe`_/_!Ş?. G&bU :-khU)=x-NvBKEu2$.A[sԩq1FQ`A}<ݓ %)d(&2u};BXr:$zfƾCARS᏿>_|'PnOAƃycZ&ȪLA5n=mf<\jlMmF$V6ERf>^є U}?*QmJ՚u:lkQ:HLԊIeq -㼎S3!"jPfU;Rg5ڗb}oh |&h1vEbgVJR1Ȕ)r="2S Kۙ"-e|iL`ւJ)))EbF}STZc1x33&[\wi޹:SȘRVJHlg [`L9jMfh5RǞ b8"N4V.ִWkb)ZRQqM&D̂~]iZsԩlbߗ@CQi?{?U[okk26Xs.\0+@%Z8 84 {!, Y a2}YSm<547mA3y Z~0JuPOE|r\XL )Ik[=ۖ10/aF 3B9i`vTFR=]_J޳vH"IQ cpϗq4WeVF}[EeF9d79OC6ze (_ϲa 9@w(๙'5ӝK6u.uUC92{7djW㰶1(8l6癭Ȇx1W8i-]7rs3ZN7 CFX=77#>8,+gi 2>C67;kͪp r8tX 㥶3 .m딩QoXV| XNOOy Ղ~| ufs )%=zLGq|zO.x蒶ix킫+>caj-Bk}5Zh4EbϽy]n)imMa ZtQu  Ljx'@w @Fnn"1BlX-U>!L0&:K{|.C 1 =|'7gt'_owNچ1Fl@~ѷOUheaZ|v1չˁV+܈+_/qd lXچ'O>n0>䭸dJxĊ1bc$|j`gx29 #Ur ON!,HF7F,vY gc"t6E{l"O\>Iy $ǧ218"v Z81s5v !;v.)s zB4qCd >FQ4ab&1l6@"kR/\&|jQG*8aɨIy Zk+ޠr6>qB.tt%aZr HE<:iKY|jO\w6-lH92T0kMkpډs\۝qo-5/4XoV]] Zh&pK pZg@Taʾ76C3D:l҃zlbf0b,d4?S@=V3Ь`H LCq$xӲjAuɜ4E Y^ tbY-,a#0lqbf7?"_qwN=w,9[闤t F(.&x+#!c=cq`qP3KrCZїh{ߒ_]OzZx7wZ2*Y[K H"fI_Xm -`rmsjHV?y;Tc$|y' J6@R o#쉔 Y<1[L4Nf K&Cʎ4Z2L\5L"2o _YuԔa9{qg?$O_ Gy*A4 "e+_d{+R"P4ŋ6?0ũwm|'w=s{>ɏ'}ڵw߳|s۷]_39nha3'o^ӹZ O#"*ҶJHQj]ԀQcIy jeY9jہK.Z8Èu51ɛoNߏt4\aZ3|7y{ȆvIя˯Cg{ˆE[Ew^NXëĮ;!8s;B%Cdsz̋knaY]Ik GW%emo!FGpnANȮx.xk #)}:8vێqsi bY/t/٪㓒eG?hEiX`B#v vl/f=ƿ*+3;Y}~NJ׀3~/~|gϽ?O#8~&o9yd#)f>S@b1 ~.ל8ox2~p%`X6K|n?GzM^9~傁=Ւ1gwׄ?ors"Yz32,)/İXxõ26OdRN@jP9>=w`kV!q m.2N)6 =0Ќk힣Cd)23ߪ!4uj-`XKU6|-,xbkV @Y۫t))$!Κ TA\4v%A&[ -LJ:NA\1D1 ! 0^uo^dkH;ƼpN΄~$L:pl܏B{v4ZBfweȉd߶MIVaQ =t0Z@[mILIxڶGW2zI+b_dA ?5n^r?w{_dž9·-cz믿v Au!~PO@$0sD%b]W.ah2ntη9:(@_XZHCV8__}/*bKR;{A䤴[Nzȧ0rARmC*;k>W{bIMm%'e L.eX6,ʚdFlp*{~%v>@3k!UK is ]?99~>6[aϝĶv3?|w8oٮ~vM/>jT?*qgϯ3g6y>>Yf[׾n_@_XޕZ'Z9\jhZ8p;Jj#::B%9bF֜"{혘 M2/EKJEx1 A#)G=嚺TRIV-Uic'ƨ1TD\k κ"nQDCaK$*FHMwJYmJ"L%b4匲r/:ZvF%G]Nkw:ݖXFr T`L1m~rlwE'@:7t]~Ad9hݒmd٬wFo0 K2lq[ufUm44Ee{D{\3,[؜{ȑQIuId}7D^8e^3ķfq Ccg5-9ezwMZ@:~V븕=8qTRVC{=fϰX9Yy*@ N1|{9%+.G|1?_惇j ;G[:t-C?G"%|S6INirK'/{VǬ6+c8Kr|ޠIMq=6 }$X/$9FDwg~ʑfy]?~G'' f=pD-y2 ؐ /%gy,e,R+b$+c ;1" )iAv2/$#\ L-DzU h.m `^쐫sa@ \bz'0EC.Z궜+F\Z` } Mӂs7w1C5k jM3/%hچ=<dM"%h>js27=1EOxg艻ԏQwlaZ?R.e-EbZ5vnl1B!- =2!Ȼ2 #,68LgqcW˭-[Ⱦ<@nVj*$5rTڙ0Ղ2R`!3p.D<|`@{n:-h!x$3PtC^f7siFKqNLT3 >7}+L&+˼#e^iRRTDeY,egY9;eu|-E*PϾk'9CFf[*^f hN2j#"QA}*[^u뻍fՌUlmD{s7_ŗy fav~eKH6I u4i2%̩.,7#UDz {,Z{!ĉ1drqp-KW/6/c\>٬^e𺘘-_%3lL"e/еca4u]Gb +m,Z >o!;/}Rh;r0IHa$Ȟd!6O-bj\6H=ݷy2"#֬Ӽ9u8$B ~ba ՟ɪ dȚP?f6K.RGk)ڜPQ)cYH{ʾkuF ?;ܿej-VZ}[T&~S{0It!2J4gBm`zZr^yd3h żb.Ej'\N<6TI{!;u [⛶r9QLXSJ(֪^+NvWN&_ЬNh'4킘ba]배VUʜf0+fjX)MR2٩nY z i++Wy{hǚI1i)r,I'plZc\|'첞'HFr*II1PK q-29a IDATiEC`G}YH%dxgǑ~1~qqԶX7% :j-P/ر{ٻR'lw7lT Z2}IcYYI8fAX!#$%N}?Sdﹾ~3 c4 H֗2*2%Ux9GLQ }pL5jtBt8b-9'1Ҵ 1t'4%i񪩖f(L T)Iy.jgvLiHcP*`!P E4UDMԉ˄bKn:a^ƩsĘj餭:1Zq 1iLCV:FAiJ8,Hy2y\t$/@q,Rb50CYKJ4:/(}bv9 os:Pa֫+]NuZ LBt黃2ɠErK!uU#_LgĆáP;t6xoM-=nz^ְ>nʒ<|tbݰh;M9{b,^Avf p0v$o,ˆ#1<|tœku컞Nj!A (o4-18rRD\o|G؜꒶5,K7{v=Qi0>%z۳BRhEh0"t] cX0$׎l,ێ'oX\\^ɬiνsf(%#4a`=%v|Ɵ?{}@w9?=͖s~mypʞҺӻFLOG<;M{ !"ΑӖd=ˏ8ZМ 1,̒l&cW ƒ]s9=;dsL4Bo>s9:(Y'ClBvKjDGXҺ`={M =cvG ,aHhS9IU(G\Z iN_N}khʜPqS> Y d׀XL*EߍAsTٕUn"'$"hˆlD_DBOD|,=n^l:a;^5cE;M(u rր6^ SiPX9[c쁖p1c-T*qxYZ!cb* b~cNjWv갛 1sL1-=0;W=~0ד< 8S/Y!BZ-M i< QfCfAƒ*1"ZDt"'ٱ $v TAg.-6.Y d  P)ɕ9@"_"˖KP~.CBt)Yy̶p7Lle}&zMYΈ"TC=k))\saUQT- P'jմއ2UL$ `NTk;d9YXϺY\.Y8?!-<4,*Rϲ*ܭ6wiAch[:j9UV.7uXsjU,ԶA=* Ymp*p&TH&UcZ%=V p‹/m89 MdD^Hť*HRrŧb\J B6zuHWډTo@i=z* ,HGb2x`[f9֠62̢=.қp6 :`P7t VȦ#;wznjk +0Afn+[@t?bw3MqP+f(l )|GCjHNpb _s/auo<\wsVPFQX*o~ RTb:{W<5Y.![d0$I%tQd-{?22 xw9^Cq>h:hiʔG闉FYiuAd )d~|8)P\%%blIq>Y2_R2֯f/!k8dT_2H;1"#J!aRVM1!`Y.Fq8Bݞqcۀs\R\Ts:@uB8dZR7)R0Fh|P V,m۰X.EgSucz8b`,Nv,0E8oƫ/IST3;[_ү|.( K~.ʦLX&X6MeQbe`ԅQ_۩F E~R tchI2q6Skǔl&}5Luy#t*nJtx& e*5O}?s\>U?޷jzxӍQg5۩Qflu.ЈcͯSgRB2[ ״ׅorny/D }FȊ0a`QIvaqe6IuCHt{7~̍X=wamC?sBm]ӞʱX6dt!vѐc&0ސGþcdZ"D%cZ5$6KĬњ#Oq b6)ڪFX,Z@5 DvBb{"W7[mu1>J{p|(j!O9cB>N!0y 4ˌ[8[k([Hl<~ս_iF.o 9F+%c, cLÈaѨLiu).dM{.>>e_NCΞS~?7{ώx+/|ޣx+ I-7l1]$= SxYr,F[wv\ =.bbӏ#0Ͽ/2+-Mc9?sX\?؇G,TXcذӨ_A2LnZKGI(040cOժewpM{䮡+/9&Cб995d,VG]7Ag1ѐxL̑|܌ MbܐH8<^k l  RjfǪZ9Du}fdLڒX1;;{zA>n-W2qO%&gqHc Gיl)#3ru|3Ӽ}b9U kKa4UAqeKyY\$%1҉ٶ>,Qz$9 ̄1'U+[#* QKA/㽬%I)C^1RɔZ_)Jt֑rR`~m0J˜Z:rŁtUGZc)g/%%SPLaZI$'ԄJhLIhJL`sVLmy7s !WƹBc: P%kP؊*t]G?ڦU-| 6VƐ#DB>ܢ%t1,@ ޸ّP7bA. Vqd:ơgaf$ssgn;zքI|ߟ\?Ike^rlݞ=Ǐ&c^Q~1y_g lw7+O1{NVhZzxH#9$VMv14Mf04CcLHf(Xx3􁛫^qk8>>舛gZس98FJH?e8͜]D a 40ti` ,{l;K7W%Xgl6kБVvKMvrvd?n 㟾}ͫ/.f0gD2-b`e3w5n!9p<.Y# D–ǻǬ;o#޹^1g6p9^t|>hsV0k#F>'WnCܮm,n\בOxEZ*lse !?]Ҩw(b\Fk&kl{y-9'M}_~|e}uK;k XE !B3DDF`9%^׼v>p= Jf-6! έ S\X5!;9Is&*P28qW!D fᱫlILxvrA1cgSarÈŹ8@Na`d٩\s8efTN-ńn>MJ-1mqב 85[+#!c V[r{[xec%ÑqlS1qm% !2!!1kbT~}O|5t̲-DN>%AH`9se$RO%+jd>Yer9(aºɁeT0 zY@?"sP dEeTRf.6 N952Мg eUQP/$bj;ѩɠ 6m'u LX n2ߧa.iJ[ªrVmSd\˿9֫c5[RI?,yIb?n(}v:`eS~:$;< %gI%󡞧'cqȈ4RL8'ozD~U-P. +&Bߘ[]nln"S1ҶZ`C2岧kzz$2ĈeOJE6E+(y}q}|w팛N3=scJk_+11^,58tƁ1nEVs!&hɟ*~8)Zؑ y_͓ :w ~z&NsRJTtƔa$g%`L7m uh;KR[BQ$Y89[o-jZH7AwI""!'X+E"MGy7w2T'(z.y0G>ڋwY5 v}7} e[~ڴ.|{όWyuDڰOGBm_ڭ77gg__c>}Z"eD4t / *" )-2E'I}S4e0\9bZyw Sj[qX$R jT]1R wepSM2bޫLN#!-QbD;̬#ID"Bj`㪫4jzu1Qc֕-;Rt> #m](khL i~CZwo veud2״c-hƑqOm[T3- .z(!3iYZ&ժ܊> 94nJ:oQjs¢/хv9sWG֋WZu tʎH@o;B&a<$Z])isXeXk5ZuP+HK߻Fٜ~$87=݈wό}dw軑m~'C {' rVJ4Zx|e 1q׏ 1;rJ\< Gnv{)|͗{_K﷧8sEnvD "ZpMA~_ڀ0'  ڦLiROdWטUÝsnVUE7ep4:sk}[ZZQ x%?|%ɔ_b7"O>~r1䀄mN*Hnv-(Y:釀15C߳Zpttl>m[ayⓧP7׵kNN&7D47+tAwԍø=W7!0,Xw=Sx777Lr JG^]|錛 WkODdh 1('KtU14DTHHs jEe-MdY_{fPwy&$THqj|o򕯿E5uxD+%JJw,Sϳqw9jNx 'xbrOq_^qtX15 >OozC֋_|fs D|80iQԿ8|9~*x4A=&͆(q0AR1γ7qCe*̈́~8cRYG{zhtv0 hXyc6y/C~!c}@!(ΠI(e9 ;mME='fC|cтr*b{NcYJJʾ%4EdCRdTPReP^̩擱Q IDAT ^~5I=b~4s+؃TŁeb'jjc|TAi^w-l[mia$/,onHn:恉D A4r. LtOSDGHb}g_CM*>&KZbBd$DyCg@1*nfݓfxW˞I%=#Y?5Sa (Z3J[*밮jfar:k*K֢^5u_. *Rk+xW.K޴ZBX`Tr fuY9*ERUXIM`rM(^Β1 ^嬐ۥ# b*kZ)a%#l$Ĕ@%~ M]31=N#4.1_HUO8݋a6sWb֊IubT\-q~aVK/FQг-nC+\=_aDHzu<୷N1VS WˌҧQYV)m~uMgTUMC𔄎U &Q^qd,EdاfZhe1v5Jb >) 9kwfUJ6YFFB0,wRMWboiWW$߂N$cѮ5sl= ֈlL91*REQQ$}>s )=GҸe=|IAB+)jP*  .B8d\OkHrU )E|e8V0bƾHH(i^)B"sY={bd$:h#2HE Ę}$R) ]S=17_XCT"iM? l7綾0h%DhZzI/F-1s Ooo t/`;OS6 }bUܓaA @R:7#)97ʧXcPR&UUKA^:)ڮ%fa ~gdHr 1S?gwn)ஔ@ &o,kMn)](ZI |gtސ|$hicD;U.Iy|6`v%/EX7 uH҄aQMnAQ ֆo TȺUlFEB6tJTˡ&34"O-&T {?~6geP5f)#= dyDL8y}袭%dyTWyoso}I4}i``LF)+xw%Ś:eMώ81yo0P%n Եaq`j)crz:a_8$mSՊj|sێpUfc`Z3i>i֛Hb>LG3$4Ϟ f|t:! 77 C ɳܰ8yCRL-mi\]_s)O>~ k{!x}yc{5{!ҵ9>9a8mXo͜Pϋ/wG野g7 vݻwiꚋ+ڶCkɝNgKT̎qc6pt4!%)n(햗_ph5WD>]穫=|ѽAt~11BRKzbU!xKSZQҸDOpWdN$ٻ$ah ?`ڂ#=!ZB'IRGw7g+VgӶՄ6 gkHId]LG|Ejţ/ɗ/p~7K&F6NFs09EׁcqMMc&op> s6aG%OM)5Ҷ+BQ},Y^9?g%Ο]7'*=&UN[/[b8Փ[Jj%8SEA5}R%Վt)&5akhcjsAPS#Cc>R6mKutaMrcYTs&Lzϓ{KAlE=T$Y]k(HFs.%i` ULTy2XHwri"1jTy̐}@^3 n:`LE|}A/aMwZ4ib_az2e o`7Q}9 fG y}b /4P-6Wؑ<&5he ß]:(; R׏02x!W 4ɬ@%xFuR x5cP&6#BzDfl'lc(^i\.D>芠<&tTX=Nv~E%B~DQ`*sf>,GrOifEǒ5 Y$F酢~CZM~d2dEd2HXUJ=}-RJSa4#$s~MeXQFrqtrnx+2ƽ3lNd U SHܰ糕A/YL*Nlyz5YH(+e3^55v樏*`$8$7.%@{6lL#6snp7ʢeHIi26|Ӕ+r |> :II(Lu~q{$8cچzRaK-e Z {_rLّ`IkI=pc>x/9?xcmv劶RJY5!j0)`ؓ9P ;r,jɖ$Š J :e[(-Щss؈VJ妵IELAjh=T$)KTBNʹROFqvD*INdw'h+2U̔):jW#8' U9˳я`PUvQ$BrCT=٭fnjv(,c²hΧDimV 7&bc_ '.p.E2&Y,REF-dR$q`?c'R62)a{ӻ< Z=xqE,E2H~uܭhE]-I*S a`Hee VDTll.I1U-#͖ҭ6 m1ijm '?tl[vM[Nc]Ģ@el5;- ^ܝuTb^%s a#ߌ[i1:3U٨66k:&ya7[3-0j9&VZNŌzt#i:)b\҆03޹ WK #%TLE#:!EɮdYRYhKRflhYH^ l}HZH36J䔤M  ?9fF=9bfՋqCG/lwB  9nhFuRsl%#\28`ԬVmz>&vKr|}໭U@WKbل|^֧4fgNFR*[+;֒@~}8/̥c cu7BqpGO1߷S˖O^RϦ7+Hٴf2(z*.+O[O=,=/^\Z@%gՎiH)aVDQ)\e4I5f %nˤ0[ܥڶ#FNN֮fsrrz_|.ٜ-qJfZizܼFl޹@3R꺢khqM11M*PYqDx\d_~/z9ռA1suu*կB} 4ӊfE:,1i&ɔprv45fSBL&3^x*q`zKu"ckinsb2I٫! X+'1 4uLFnH~5[@ 1ruu%3"8}x9:EDy,H$ֲs}咗ϮdvtO./xy~WI\* zV ,fxWx6 NVGX,o=沿*_nz^_{HJzZ"=ߥufG.r~Y8[wi >~r3|G")˷f_?'8WhӳrOp}Ӳj{&q:;. @ !ca:X[d+M *NOٚ'/R@.q\Ұa'Lȼf3f)zW}/ӆj:ehӎVVdMŁ r&G@Ju" 0SP(!D;Չ^ʩV42JT5A$M0Uc ` pM41,U>SŦΦP)lqO֬?feTOݗ6k )_Fz\e=c|orٜCf2*qP}(/ VϘW$qp;;8D ;]7NZQUd4řrERGNPpPӔOQ{+$IpSqWf,ۈ5>d6=٬LCك=RI)*Ъ9ލv|gEw[Ξ? .H)1ɶoeJ tՁ J.ӗoC<3d%EJNZjjY-I{BX1F-**AK;@>ި Ts'k47?(%r1w>̞nw1H?i5ƽ4lwukMctXe1Hr:%a )3v:)I %;+#+JfE$H^oȿ)q_iMT *lGk QZZ횗QEicƼղ#2F*IfSX2fđF*!Dլyh!nfbWN1NdOZ1 n)ˤW}RY^/XQLq<UNg,Z!\Vi$ZJehs-}bf MmDMp˘!z941+RXh1\uC'=DynZer!rP;IVhـ;@;-^0)fa*?qR,_7*SO}x\nxc>9>0_L W- 6m=͒ފxx;k,{H>pM GG QUtL5t]rhJS~ i׹XɡLҔJt^pdOK0pxtL=m#"@S93ܷlzH.Ԧf:ᄘCLj@;D*Wxt dR1cɚprz̗:Ji|E6fkHZ+ރ~e}Aը1VCd@9EM}O=@i⢔Վ~lڞ$cQχI߶YWlqI+ry0 f98pt(sˁtWϮI6qxxH@\o9:&{LH4J4!6fkz)ĺ߲n _QCQ/@M1098].|^:63amXuk͆;}r _6޻i}p7~Zb:u<ή<[~ď)[/'?Gϝ;H:˛K.ton{fFTXSC/f\]^ ? qWaܺ?c İW"@iͷί'V*]d aglgJbH[XoݡqTS2lKA^%sBW@ޯzEB,0,w3J"5sX;D(cQ'M~oB*\S&ڊE Ҵ1S2jHv]+ֿ-b('Ls9gmfCd, PY%zqY4^LG2jvƢ}wóg?w˗($]fCaL|[+R1T@KVgRZx h饀@19 %un+,vXkA읠O!Z [Qv 9)G2JexO9f\hA%vr4 ilA9M{ag6tUU4TS%;?ꎖDcYK63R)Jq@1X#hnhhߦ([F3 v04"DJ0*NKe38,ֹ̍cf8X1;8eK94z4mkzޠt~q# /BaJ\,AiR7{[t'{YmV }}SJ'%fxW7klof*r]AY-1 HH4S.+hd[8F`tTO ѳapx:&KTF[Cq`@EZ18b n&Lgq![W3rfɓ9l L]Wn% Mņo77L)|NwcYswn8i# 2e۲T5)j{.+͗=bX.?|!s7kbaswkU~KܷG|ooD]i);wh_~ >z2ܙf ?x. <89U#ZE" /9.)988d>?_o?9O5X&Zrzx_?|9mD?$MOu$Y4O~!R5KAo5!|sՔH2cΚ<I '3iVƢ}N %b$ 3iVGav& AmP)IKObKp|@DR`tEVti>@ $cƑa8쥲e^c0\e롾ߠj۳~93 v#vW>F;2P^uהV=|hhXTԖ*7!PjIÒ\W.%v1 ChcNZzimKX**II}%!h-L4s3;&)ȁTI 폥$H9K4Whe'Z.dxu?n=T(n*O7qMCU8b@4C@5K4spQSle_*Lj)/?!$b8K5WfKTThmJcs(aj]QK?T~lxPU3v޾\㵻;+R9ylb/8/˿JXmI ekh1Y&Z-1)vRn0ցV_[X̩l%nksuƾD0з++c]#\'xCec̔b$\!HYv%5RQ: xCjM:!,C2F4޵&)e jg3Ɍi0FaL>W'N{ vL*[+Ua]63rlvvY$3Q$?7JaX"#i-vK$Ѧ8#!x&B쪱FN1`!:Od9:9#\]9d C?K./n69w1nd EJI )ˎ?,^Jr&6,lX(C]@ρ$pzU _%_k>z1]ƨf +_O3&c%6)ٌ:=:ؙRtoc,Xg,)s#~ߧ `N*",AƄ9TXp@Z@x!jtP(E7nv7)ѨI4tTaW긿aC0 \Jؐ F(v Ą'HPv  e#!*bj +]ʑ^* p.>f޿!ܠnq;0 )U>3 Ϧvu #NAʄǘ@<]ב_t9['F3t~ ?&zhPizn`GLf⧨HFGl;@ֵa3]**% j|W@ ֨"hPɡfa&h&@ {-*VtڠF-hFa&J͎ 1)oȃ 7 $r(G {G|pi"AyȤ"'"FIry)Zb(DvHFI(m Z_ʈjو6|9k1宿Dc90p <{SJ);PVe̔<3@ic8B#913X™3iBtcrkט<|wb~y}у&=vϙAXAQ;!|_h(<( e= C/R¸( 9%F ­Hk-mn3ngT $2DŽM{?ST@^7ܺ>$9$Vt|hTT>_uf~Nk-H ӭu/b;I)^#CP@_ys"g G]-$|hZ' ?' vXU4b>L,nd[0UW)Y 46ᇈ(pF9I>QNjx%C=_|7_w7wN|ﱹh[t`ZIF1C~XU|7P!I]0%Hw+{$yigfX0~̻K]ל7K _Oyҭ<|~ٌ~hV}_/K̴%ȏU ӫ=N٨NJk6}KJ!a13"Yaa~ʬQXƃA{O7ͮ5(IJcJʙ4K)4& 7(=n&y/ E11|NY29B 8"Ft9OI (.,TS_|@ пXqs/=^.V ~ æA;%$sKDTg(.xty!Mp3KctS7fdȇ3Ȯ# wȱIM%a5$Xz``Cgf adb"UY;ι75X BdeĴkcFG}Rd̸!F|T.Ҹ,lC X:ӔoĊs?eu#25LG͐fO?<7{ya){)(.cb` L:2vN <"L )c-{'A(=IIBĆI ^%],H6MjѬjij9gs~t!9;?yI+ypT4w!{W=u;\e >!A {>2y^yPnagX.xq1n*%ىZ((1sn$ t(@geNhy̤5[P.Z$BevZfR)rKKyYr)&ѡ}gнR(מ] :xBpARѨS5)ƚH)L1e'O> >etOnՊ]خZO5awB5ف@h/gt-;MfEB9u] \-_cz^x~/dNKLXH?ͨq-2T8H2I2}~а*ںA.|qt:BGmvCOi^ FZQIFH~]BΓyǟګK]x!Ni{vf39 `q3;%$Uhz uMU4}Gw1Bs8Mͳ"烪C,v0 ?/:0r# zoR.]XOm(0+ww?LE)^C͑Oh|? hs{BUჃOqćlD^H W7M`uf>NR-]Eg}cBTUjf34HҚ^Gk3B# 򚫫\=~@Lݸ'#c977w] ޘv  ~\cb뤮JkJw(jA\] vwD/ں AqA!APc}+ Kw̌CYW IФVKq8]dα!I(JL9t7`L *b5܇> @?\ezG* 'ڳ&GvjbZXs޼AQX;\-PwMGvyDwSw7^mp=q枮J,#o=y^s:! mmIDAT [7{;~y *=?ٽBCW}Ko79{t_[.|'_p}xyyΞ3^3[Txz} NOxx% iknooYks4MSL o?1πW/woU^]o9=?[UULEONqd1,)(:RE`ox%:E%6 ^_Ib].x VnAGN#l#^QWzt2d3C% K1XӘJ qIpYrW c>t!yW^/@Pc'@X4kb&LD0 rOQ5v  h3~Tȶ#^m݀K7S5 GXHgO Imm2c3v}7.Y.kv޳Z O!ΠP4UXS VtZ75J]QMzlRCpн3 h!9qu-Lh}fm 1Ro*Dc$L/po\@aQ0FE@"@4bv!): wDŽ H#[~z,s}{tMhO` +\cq`Knd)qJ˷`ˀ o\CAve=x1@!{j2V~/&)duǎꦧ>A3ںaٚ nOvZM0 T2J=1KiRKaҏBp"`Fhhۖ V5AYNy1nKi\/ߌ L Sra3A.>>ƹ27lOv/\G#Y ~R-zseK6ੜR "dI1j{ohﶛ[rEfyr}ؽ>d: yzbqesY􂰪q}WG9 xΗO2 w|9~C~öXLb0|B-L!x^ަb4'du]SU5vRW5 p.i:)⤠Gc:QrP4Gcupƴ5hv?óz}7Yϯ?hE Ĝ K۪>0N1jnN'FĔH൪S+-,G1 lSamAe-2Eê:$gHC(l b"Xe$K&[*zfVhZ&P1i7hEYIJaUPJtU+(ߛ;ir[<&/q]g'+>PCul25}߳og5he)X*Iʁn{K&6T͚pN,MF$o2׏ xՇ5M vN>efx`H6j4q99kS"Ho:taLn Ô{wtoA%p0ݙ G跙ׯ|Եۿb }7XEt{>T˽w,-ӷ[Dgs?$bTv;ٲZ f#cYUchY [%ht4uHHI=1$c4mi[qO>壏~Beyv=wweOȼ-NOOb6qY,Y} o`oG!3LNJH0=˅psSҘY7zP*qfi9+7ֱ:ތ\h&auўT h2tcUu/]x:r{3n{a`|ekƬ8zփOU;bJyߡ$uGjDjVәI0,ipx>Ie}Ut6gW..yշ8!M:ǰy]fo{+LI&z"4Kpce}nhP/:I|KU]]"m6lerJx2i4W swۛ[BXszvj0vN|3O8+Ȍ'wӜtMEÑtLb(q CoGWqk.!ETp߳X~Z3}hgqxy?#$래U.B=?e\RWn戯+˯j_ nv-0`}0fq߱pw4McZk#JP>9],~tX+ǒwY 0 thȾ# 'K3iO0P0r0t\R6SUDyوuTUUYP¬Fgˍ U#1&T#L@RPt|&Beo1ycu|x2uU dC&Yc`nEM+e"s& h VLPLIf%+p=2Aͫ-<L~CP (* i D809ٔtҢX!DE mqjOr\XHZf'0}g`;Zgm4lR VSpbAVa&Lf. !Sg )r3KbZ s^07~٫΁K`_{)N!Knoohk^ >yz[ȑDL#7t^/"{>=_.1W-[ S~qNjLhOOzu0\\jemkt_7\prNj\c,Hc"%l~$iꚋo_smUcCH_dňHr8 H2}׳(T}%0xK\frOwsv$ED];6,W5^v@:Ŝ"FkӶ5yug9b.YPZl"LO&&=ji,g_zǁnx1lumݠzo\w>ximks?ۚ$kY%^2cMN@x~sM(<+\>:8^_82qK[.NG?_<{u ɷԾaH|?_!v|yU7Hq>:rh6%Ճ1|ϿwEwRF2-{}Nt@%&!rɊ'&8uN3@$ٜvg"T!L$HbjP$2AQ=E| >9RXٶnzhiMfRON9 7 $uЧnsFC&$~fUrXl|cu~FQ mXbkS-ybL1}Ybyʑ&=hy[S%&sȊ+j&8 N\WTi!w+jT#YJG,\*a3)Yy͒?᫯p n} J :#8XH :I,dI# _h{p϶M&+Ϫio8pN !:%ՎbXR;o9uGwa=A*/*+J@O~kUeLJTB?}[k:Y+jrLyPw{TjbQP<`gY))%h#`+OM%d)GI%ٓY{ XBt|Mq )҉cB&uʊ<,S,0H4"3[PڽO4ZWwK|8ؾ ȩ08:@=I"mf#fBo |(YAEJTNuvYbGL8F&!/˺Z#N)3-0 Ru')ȔR1ve69uNѰXpIqM20R)R4eM֙'0~`䘬V3n`Bv5#jhKf.iP&4j{>IENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/overmindstudios/index.md000066400000000000000000000020431507671574500266440ustar00rootroot00000000000000--- title: Overmind Studios description: "A fresh start to make things easier in the future." siteURL: https://www.overmind-studios.de/ byline: "[tobkum](https://github.com/tobkum), Co-Founder Overmind Studios" --- After many years of running our site on WordPress, we decided to switch to Hugo. WordPress is a great CMS for many people, but it has some downsides, especially for those who need a fast, secure, and customizable site. Plugins can become outdated, customization can be difficult, and bloat can slow down page loading times. Hugo is a static site generator that addresses many of these problems. It is fast to build and iterate, does not require PHP, is highly customizable, and is easy to learn and use. It is also secure, as it does not have a backend or MySQL database that can be hacked. We are very happy with our switch to Hugo. It is easy to update our site with new projects, and our Lighthouse score and loading times are both excellent. We now have more time to be creative instead of troubleshooting WordPress quirks and updates. gohugoio-hugo-6abdaca/docs/content/en/showcase/pharmaseal/000077500000000000000000000000001507671574500240735ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/pharmaseal/bio.md000066400000000000000000000006131507671574500251660ustar00rootroot00000000000000PHARMASEAL began in 2016 with the purpose of disrupting the Clinical Trials Management market through continuous validation and integration We've been using **Hugo + Webpack + Netlify** to provide a scalable, modular design for the website, complete with Forestry building blocks to quickly be able to generate engagement pages. The site is built by: - [Roboto Studio](https://roboto.studio) gohugoio-hugo-6abdaca/docs/content/en/showcase/pharmaseal/featured-pharmaseal.png000066400000000000000000027373131507671574500305330ustar00rootroot00000000000000PNG  IHDR Oh pHYs  ~ IDATx݉q]1qwqMԨ(c=&DD ?af-r+C~?34lo8J_-^_ cYѝgO8"FȈ .pQݺ"a{,GVhA#;z,/ܿY͒d;i֕8Aܹ3?~lذx'Fzِf#'{߸exノ8}O?m袋s;N@ǏOvؑl޼99trC_4$r~uxdkht^rd{λߗ, [l\%9x@in}2wW~Okjk8T>.\=}7RZ`M̥?|0cQxd,mM|eVa8>7-o9tYvm._.˗/_}zK.Ďl'r饗&7tS2a„dɒ%KsM[n;gΜ~]v9X"}/SN}.H֯_ogNF;!\}!9d˗ w>w|YeZ?+NL}|̹ yIK4a i]ڬ /pzղ/[w n r?k}}mb/|lڴ.{;=z4{/^}_O~nk1j̟?<˾!'OS;s ٸqcrWv|%>GB~6w{w_::\yrWvWE7pχeEң5pIߍ͠g˴/B6E_ƺc q)9cǷdb"yAy%p_>䉼'UeGCu+my-O}(Lj3G>܋^V^f;ZA*+p/3DoMhQP?\æu[⳦-Hc׳%>o҆wh;U[wbz瞛X7|sױG -p|*馛j 믿}eƲF{,q@'cqpy%K.mz#GT1"1~<Wa+7 ig_!pȁ]+N"Tro1Z{}i8>iw21>nN)a?51{}mt!{tГCŰ=jߡ4x{{}x&ط"p(&f\qY{wt|Dz +pN?$W_}u?)p/=5'|g'{i{q׿u uv=&ʕ+{<*מ]N{1y_ T(J8;+=/&o*4{c8'~*{vv~DL-_`M)˫s|w~}Qd`Ƣ=n-N?4}'ӿd͛7>pk? 1 wM>d֭=m_6lH>dƌ;ƍe߾Clcvcǎ%ӧO=xvl$2=mɛo>y>~q۶me˖-gk9^S}ywlٲ߃I>p}?Ƿ/Ӌ^dɒ%{hv,Zgjmp1jժt2yKsڵk[nhdgd|Y̏ukC˗\?.#Z}Ŷg]<86\k0Gv5:'eTb'<}L1 ߉1p/N.N?J{(N ^HOd^ #8/F6mZ>i\ sn{ /套^j:p_par54xd͚5c&p߹sg1ZOӿG8#9g83 .Xgg?Yds,8(m.2eJ_煮ny"l_%=gqΦV #?sq5 {omZ>ɿy43iҤm#{0 ju]~h<'U}Y;9&Q]FtL4h ܋0] ' emu'#ppѱS?@;>Rϛnb{,yl;yfUL#D?;b#k{=c-Ar1(p5bN=tBt3e̶ b ?FP|9]:Z>*ʂl"z֍^;8D\ 6c]guV-bћoy*͖~{*&."_i[ (gq̙~NO˸}y# ŋbw]g-1 99;ާ*38# 7qG'R0D=x]z~eefqF?GkU|g5ĄwH6q p9.k&?Cm?.=6BJoTѤP aa }?S}ԅ-ދp.N&wS9 'A`V=Gؘy7xcrСmۖcywo޽ukL~]zurȑt7mڔL:nܹs=xƳG?/.(Ta^6-7¾x cA>cQ7Eꎷ,،%{o4xۼys?qqq;j O}bBu|3™gO=k>Z뒏?8ٺukމ5oDZgϞSE`{\}1\f: K.$sG߯J혍|׮]~׵FHfٹ)ﭷxcE$ I򓸋Ĺ;&s=]_t4<_U|})>{Nj=?սxPv_JRu*reɑ#/+po6ż)p/F5TV4ۦKϚ)-tP{>b0sdMօӱ DbľgV{Yd`L͋05tam+= [g델Qݳu=SM7,g>#lנe˖;}4pc5?Q:|ŎqRqahildup?x6'NXNSg1SLiVJlGM@c1_{bx7:l;I=+._ׯ?ᎃ￿}RYxluAD޶dʟl;v mg׬Y, ܿ\.X?U[7tVFS.v.3t7yLhom/ <.&(܋FPo׼Kfjw>e"n!]l;wlb.8[jyf\De}W[WL-:QkjOY>X]Ĺԙ|an}}ݵ߿K-qp s7tqoK {q_C^f{؉ ĺ;'X1/Nc춍S 'ӽyN4 rfΜ>_ϗg}vmj{#1?qfxX =})poo9\^4p`(+p/F2j4IY6t7M? K܃ئ^z'c)k>t^ sg_h{,"nӎ҃F|cv*Zrsme"Bͦ!_y o3k֬Zd3.kX"˛3gNwO>dumذvN==oU=ac9&G7dQg,zj 7/c}_ݻw\7|3{#t:u+&W7DzV{Nq.o ]*Jzk6nXٳ^W6!>&߳)ٍwgku֝P5\Sj<]*|oA3f̨K/4'v-RjsFߕKyFKϱ`{{Kݎ2q)bbLM=.h5{q:{םAL毝 v=A}^Ogi'0cQ p ӧ7MLL0L>p豝>""߽vv&T5p'H'(Qp>po\}uC=< ;+4nS ,(!1Az޽'1*pk׮o1ng /0=ZS?:So[/ܹsӟeFT'nwȑ7d]wpXtwUn|L"n?4RF,ֱrq>- Ytߎ}A-p`#-euϔZ;EL!/+/7p)emS}Mo:>̟u>n,[&}{/KwqW5mm?wBLGǏos9}E9w}m;fӰ-l(\DYyѺߝȁ{4iR]K1y۶mcoGL>b,Yv]`Q YTquֺ/-pksA}OEzgֽlO0!Yj՘>!aKebv=N/).qT^oGl[z c_'{HlSd=ngOqߕGh׵)>$YtmCG"Aqo_dV"؎;mazj{ݮxa@Yln,gqF:u6c{;17/n=ƝM%2=GA;tGnu1SNJ|:m^qpӄ=?.|pasyOE:o޼c1_:ocM'{; |زZ{yܸq}mgDٺ&OlŊ+"y\袋je'⢆o/Ȗ^zi}YžWٟݞ/ #n}w%Y77J}X6^:"R Y"J.#-NmuDډRL1&gw~mj5U_~P{vr 'w|<;_ev?H[`MtrމebzuDd]DD&n.7avr^r%C~#tk'?|8=o۶m]qcqW^ye#yww/Ji$gs3iƍ{e/_^7U:R5vv{!lsC?xΥ_}I&զi'~ǹ/<x8tPsD\??NIu|YV7^xiN; IDATw{nOT>~8vhHFd[ #R.#neFܗ}2G]fM!y\D^|tWd^Dl]T3*GN϶%N͚n}Y\p1=4|~]̙3kyqwۮ+wqǐG~ԩ-׵k׮ɿN_+?N͙3v1He1:~QݭG/~hgcwZEsέ>'wTg#luE`&#"p\sMkvm׬YS{7|36q|W_/`ˇLQF竑 g͚U]ܧχF{墟m&pOuܷ[9oAoez^$|S;N~\uNAloȀ&8)T)pimYƎSخZdׯ__|˒%KZ+vu2"Sco+~{m]o=YhQ'NlfҥKkWL?쳻>YKĉ:NF2p/8&o[2eJ=B6ߺ ܭ&o߾=OZ w)=3n/Npg cb{1u}/;kӦM*BncdbzE퍦{n:C.ҍ-[1Ν;oI<̶{~:vDͶgϮ3"~;OSlƾ>{qwO>6qAĆ 2 #JͿͫ{O4 C|Cv[owўSGi;Ud}q}ׁ ú`)r^yc ť=^/uU%p/e,2IpxgjլY޽{kS#r={E%^:=BOEeXwLn|FwN/^;wnt/2yӀ-|(p8WU]lsm=㢂O>$Y|y뗏c[Ō9E&7nLO裏>ҁ{q7H_\bE:%8̟'Y 7pClٲtb"{l_0${7 c}guVm}g̘|W{p9B^Sq{45իWޣwf~/^,pŋQڵkcʕ"Z7@qL1+69] xsI?SC=NJ #F8 B|~7D믧9 We |1?}]ds^w_-.wy~߶ C~"|{qc>s9sd{2p5[On@MmlGXO; MK18+F:p/8x!Dq<",Dmx;a5\2pqK/sX/ؗ޻ş] Tv!?M](*p8qbm!^yzժU ovq;"".q:Z'STY竲PK|e"oٗM7ݔ^}6 M&MjY\Mqtǒf,J>=Q{~{ɡoE6w+F1=~Ƥu뉿]ieN-{c״|kFiȑqX#xUmϩ%_WWwShYXa/bZko,piW^y%o~SETyUW;qȑt*uL-aw^V6`^RǏ?$T뮫M͇hL.nSO=Agwim鳝q|c^0%'UU>cK/4uc#.zX'mӸczqؾ;jU"RΎbTm\tiOXw84FcuLwq{5p7|sǁ{co[_ᾎ1:&7[>fLGq7;ON0!93n[<OqΏlD?9 xOO<9}m6 & .`qLLk7n\ Fj7<ܷg=l .d2zK5Q,}kV,9/^84{ge|:Ni\JVmI^L۰}ѯO09ôV1$r?xdװ4Y`M拍e_ ۳%"~~nE؟<~-z*g ۿdJ{̵? CkF)scXc~Llz|-p#ȍ7[ʊQ: ;BnE<_GcR}Yϵm oP>P~t{qy>^LLt#}e)c񺔱OʘkDo-imö~b\-rdpa2,%Gݎءdޚ %$Gv&WmG {{nIvdG JP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A@%; pTJP w*A/{wgW}{bԠ=DIpB/(R)-x!Jlbk'!<ٳg?>w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w ;`@A0p P (w2i IDAT ;`@A0pFj]3pF1{u w1pwY]x}0pFK[M[-!~rzkjbh;/>fco,+w ܷYAb[LݍgZb5TEuu*%׫sU;߆;ny-NlOZW.USY7hLH̪pu؞BtB[lkbIq{~^Ye*J,모JGM6 & F7GfZNYoZȽaKz~˿X9Uʪzz_ڲ)_/WMw'nU4"rUg't^URR-zYYYVz{ & Nͷg^q6/Ƚ=e(ʨjZn^S/ ߧ2_+kLoWԴ5!}m55 -vU:UfUVW$߻,<"W:l/JOjOG쥥p˜7o^̟??+[>;/חPa0_gP׎k ﯨ(+U^QYeIuϫ#{~IYUV&Ud^#},xkQՠWUu-V|2]QUL{E%J+NOj/())F=ϙ3'Fi;;I!,|k ?liawuՒk4^ӡd% WUUSWe:O+*_WU^*t ;}Nn^ łoЄO'4qM)1q匘35f͍YsbN(09 hnZry1gNYb̙eá{:~ȝp$2VPMU5!W} UK[:"nTuU*2eAc\QVZ%UQR\YhaE,_JhnZqVz{䱒9b1kƼr~̙I ⫯bʴ唙 O&GOŇN㿌ߟ7^x~/^; odzϾS㏿=Zyߞ6VߞLsϓM{{},=|xg\<ԋg^5^|xw㭷??,>tRL0%8-&9#N5e2eZL:5M3fgNrNq4p[1p`9q=|],?o:p.>j+*jJ,Wnx^ݠt|^ZR%Q"-*K*]| ˲.(O*͆(=-7X/yseٳǬc1#WĔIsb'Ӛ45>hr|0x ΛߎQ/F<ԋȣq>huqm=:.o/o+QsبsCK]rA|yq &;7ql>8SN˺]rЩuzpCj;%|aG8_%7qigg}q\x?7pg?tY 1/O? &ĉbҤI1yl>}$(//ot;,+wjMlq^-{)w+k]SϫYL#ɿ+/Ǻo%TVT/h5˩=B{5zfsjDMʪ5MOOOʨ*ꚺ?%߷"d(K^־~vyEuS+s'檽/UVߤ'˒_\&ﷸyeQ KbX08[󊊳.s b1}:eVfƗ_~_|ULU|0aZLtj|ɔ/ߟIGkn oϿ>Z<̫ӯSOO>R/c>?ltq߽w=w`~q<[뮽3θKojҍ񻋯^pu\xUq9W9">8K_^ܠ&]<8s}zud#N#?=8q9->8pj;!{cbݏ=v?2nG|hyǃcv80vnf}b-ηW֖[mK]mkHb\}ccͷ5jzbm/v~A'␃O?%N<8W%__O~/''$ 'bWcyaITT]tJr۠)Tӟ~6KW-e|ҌĿ?Ԛe;7KT7x~f-<W52"Y;ro Ά5iY,j++vΪ}Ap*?`+"^k0">UY`2J*ˊthް([X%cQX8oaEyYyQ4gI+(]KKbQ҂?gQ^sf囗(6;Oެif/)fėǤ/ϧ&gMH\}21i{xǛoon;Wފ_z#^~xWg_gy9#O5xqOdwq=w?wPv[zqĵWָ?W_vS\z qſ6.ss~sEחg];ԋΏMsԙِtDޤ8)㨤Gfvm_lվ{oGv7=6l=zllY7%)=jƍ9F1!F >% } ]lv1tȶm: jVu e;&oQFD߾~6*$wx;,zmx&1pI[$mYא!d9-}Çom]cw'>%cܸZ6tc/cQ\0˒+ F [3p/3j:@̷ _{7}'C0N \ ׯiT:oZT4) ksAz:/mTeiY]JKdQ}IGQ076O)Eec% K fEh}/yb1VQ͜sf͘3ϊSgbYӓ~95&1%&}>%lr|/ӏ>?,>xxkл+o ϾЬg~.~xⱧчq<{ϷܞuKuu7Y]ve\ / ο$;q9:N=8_Ɖǝ{J{IqӠcCғ>.6b؎ߠb!Ajր~[D>E|wѻfu:2t]: YCS|64q׾ozձCfu\v/ݫQ;G.C6Nݻ6l5r_~Yq 7=/r?>&M"f*.eݸo-or7yݯ;A|i^s?77o~X{iXU_:}r,{ UO#W٤t]U$҆UUVZJO6O@8Wz_Uyut8^$g#t-EbJ?ga͞sf㵣Y ʍȿ_NkV: rńI''~ ?cwJokj+/ŋϽ ȟf=؃#<`xw5޸{o#nmq7ō7\s}\ꫮ:qWƥ\K.ߜ}~:s_:_4igi''ZwIqQrT֡vT|qǾHgc==v?vueޱ{؝v=nv;V[B;ǖ[ͷmscl2z5j##aöC!Cȗ*:LgN58iР6ˆ幁OFG^4WQѣ&s=Ffn]E.ó5kazswM^[nީÐfj׶̀?_edo;+gRzPF#{5)N$ iptsڐkg1(%w08#w5[<..qםsϽ~a̘1=,eeeQUU"aྤ1K;0_ėu f| ǝ/?RK1^OO6h^UEM]ՕK[uTWj9״)fĤϧƄO&' O?,ƿQxkf Ͼxǟm<{Y;;o'nw-77^KxMq575>wK/,.. λ(?Fwqi_xZz)q'IG'u|qqчGzTqq聇{oޱn{-vqqö;Ŷ[n}lf[nŘ-c-b1ǦsdMc[dO3fcMcMF k4,ihrF7kMb11t11d&1xD I <:E>CaY oT#_ѷ{x5,z={ =&sq螎& n]DnÒFDNC!s6҆fn]&o|M:$\_6R_P;}CM{~9;#Ѯmtr_>f6նuhӺ2'mzG6=]oۦGRڡ{r#{Oz/rq϶_Egѻexl6qA_{1y7o^>p_ړɸ|Y_V-]ia)\7`״XeYuTDEIuVYZqՒktyy:8_48;Q_~>5&~e>dR|ާ;7ݷ>^~+zWǟGz2c{=wwzo{֛5ӍqՕ)~wͺK_&8gi'*N=8SCm!}ps}׽bױ{؝vv%Ϗȷrzmx: tY<-5&69:F#lְbCbH1g`Vz}pYz=F}gѽK:G]cѩ]侞uu#+}NNru=?-gY=ҒQ[{H3W9jV}[Y]:%ЫYuvmF]}n{ԗggޮu6}c:vթSg;%ND}kO:rѭ708ƌ:<సWO?&L9sDqqqTVV|#}{󯭩Zj:+޴]!/U7c_{qO&'7[Lk[e>tWQQ]_ڏ?u.ꪚ&r&yoUQ^VeeeQ^^ߪzer_zr=*+]ZZ%;=::^R_\^_IE6QU8?2_(_N^\/]TU߼XXTN+^Wݗ^`nI̟[G$17=|ºΜg_M4;;żgŗŤ ScgSb⧓O>>bŇqx7՗^W^|5^zx<xO&=OOģ==p;;o;θ/_n-nkok.;O:?~U_ߨߜ}^Գ'Q88ᨓ#Nh1xTqއ~{_^Ǝێ9jvbͷ6۶-7&k[Ř[&i7Q6aG5j蠑1oh ~Fw~+𮽣{-];vX<_.ѡMhߺ}6jm7hmo(ZaFnmmpM Z?kګ'/kŚ?K6i5׋v>7ik[{hAжSRh߶K}D]:4(]ۥwK{5ޮM{'NOG&u/6jOo~M=ݟ;y<7v/_OvymۦCu?\|;=澾IEOmrKKm۾:y-׫Y #ɟ^WhӮwҾW}{f);&Y:vطrtޥSn֭Ku@>(o{g=|Q̝;7nI7o{{Ӂ/Ay e:}}ϔ|?sϙ kT7|n~^zFUGUeu6NUUUfiUU5|kct8^RR}ڲ*+WW kUQUSWyI˕TgWUոh~y+* ˅`AI̟W7o¤EcuMnϞ fCY 1ً b:evLrfҬڠ_|'hPz{fLlzLdjLxJ|/'fi71ƿY'[.8}xk|4W^x=^zx ϼx.٧_g|!scģ>kf IDATC{4שmXKW]뚾6}MkݮWRf#Zgֺ}\׶i+WzIch)#՞؞/ݹSOv٥SG.ˁѧ׈5rwn7|;;}ѢEٿ$,fxtl-%~ǥxwGCϣvKU|evxu6NOo'72s(IjiUQZҴJKsO2UyRiEJOɇ'ě_x3魤zW_j#{w=P}q[o7|=quwM7\7.&w__ty7ggqny9_:N?8_Iǝ'sJwq'ővh]{~p^ǎT;[[mVu6$1zĘ5l6dDlpύۻt?߶;.OK3fĂ  `9j|}~Qs?VzRwee$%1>X,;-j=?=a2yzx'UQu4,_iz&xzxMf/ʝ8:T cἊ+jo7-ϟ[U4oNiܤI= bԢ>iSƔ/Ĥ/fg7iF|S'7|y}o}oyʋ/}3OO?fވ'{-Ro7nknkʛW\vC\~ٵqe\^?E!.l66ZulFYAZ%뭽^v;\gckfv}5OO#_3>v9?OZq?]#;5~6/},=(~JXmU?X)VYaXuUV.WIZyUbV.WYyVYqɥZe4+'w\V_55C*~Z{ua|Q -ժ,qjՖ ىI맭[_ñ{m;6/iz.I]uYSVv{Q]]Թde_/NzoRnѮ]|= {F=k}uh3:t>޶Cu̝zu̝.}-{OSoܲ{4m{59%>{rٶC;=W:'u霫SIGNq{C{C_xgc1lྸ/3,;,G-i cꯩf9~-m>ϚB o&?p΍ʫ*b+*z)y<W'VPevJy܆_S_ir_qvyi,\X4_Y~\^2We-(hvE̝UެdY3J[ijP|ܘer9iN1Y1MG'7k_o|ڠOxx핏^}9?_0^~~|컹Of= C㞍l<קo=X{ףMz,n˸şo_}O\{՝ ;w.s]›ss}uUu?/O,~qʥ~rIvo/;/N<8#GvzviqA!wBqG{{~Xbt\\^㾱{n{lvkMXfvMGnom#6*" m:h2`t 7*?B }{EnF]E4⎽SѡMhߺkKOޠslnXw6[wͶc%MkkA˷nub?I?OZ#~'~VQjŷJn];N*I+gt>j+zaj[5iҁOZ-]?^-=<=| +ĊX}/VbWVZ1V\1mXa\}+ݗoVkWʕ|UVZY+X_zv_7_e{ϗj槬7|nJ]?jЏW^Om_I͟k|oo\ko[o֍'mX쨽k].g]|sѮ}\cm۶[۷^lޡgVlp޽y-? _}_-67lϕ$ړuX{Nٸ~޹F6nGcώ='N(++{Kߕ X-q^?YOoy}W ۫sUWETUdc|Q^U*xVIES+ZxQeVIvjyʒJc^QI榧54/8iQI+n֬c *Jմ1cOYP״ cꗋ&~67>xV>hf|xzƫxY|i|x߭ލgz=\=g;ެ[of%ج SWo駤#siԱGG8ⰃOpRq^G7j=cw<(v~bۭiܖ֛[mWlY[36GcMvtԮ1f.1j9t9l礝bccQvoM kcA[Ġ%mII;2{n Ke1$zv= ʗ\:$Ww J<(#Sѹmm${D anucwu56F?zYz?^7~jq5?VovWJopş?h+}լzggcWj+|{+_r]qlWsӯOJʆ+׶b֪IV[5~j'[*=uc74&wYӰo,gG~|ݯdIo4Fux'qJG{zDv{X!J;m`~6vmOl^{Ė[ָv6)ƌ!F>F6ۦņC%m޸l\YȼߘԿ{t핶I5*id}=Gg,ࣸ] q&kI6;Ū@*uwwwwwuAJ).E933ڽ}>3{nh/ϼ)¼(\N_E6Ac9Y,G6dd#UBΔ@pv݈ N SnTB=&21J VXHr碻 Iv5Z8vkNrOgdxܳ|F];đ{&l, #[#řcBSݩH)3u;vT3-k;#ŗҺ'iiD!(p͎MbF 4HɏU礝k!\.og{zB1]酚.AF3}ٲsE 'w>ա-.wnD 222222222222222222222222xn͝ɇSp6Qvݧ?;ڕAk͛)ޅ;x5G'Gi3qS[uRv;olm5GlsZ9[ZiiQQ7 ZݴhAiEK3͌VNs ;U!z'֦v.sX׆V4Զj4loOPwb;hI &N~lݼ7afV{e#߰ ĺ۱nͯXV6/U[ӊMXZ0߬|Z|q'|J|r|{w;| ox xˌ>ŋ/~=!y<ػxwo 0w˸p[?qtcp~.\umpkqWyqʉ{p/9K㸣ĂcάS0ȓ0sgL;A'O87O;Gؑ1f,a1b(qư0Dm|6>/=`$cʊ yɇ @>y~$ y9}]\$ 3i%HO+H+EL*ᤧE!Y(D5k#PgǕ fGl. AV%ڒ9${Bm6KD"ńT. \ Hfے 퉱v.G'3݂(kJhh4BBHlz@@0#e4Zڍ%v=EC{!Cex׳d?׌@Mj3;!&%cwI'-\WOz*bj=]oMlJ#o}#HpWvMnD`!4.oE j=c<?w[JIӑ$oQrsrr`Ox *TY!D!ױR}>wxg"݋"ӟ' t{123؟CJNvYxcOb*ס{edddd) SdOD"XvOHnhw j ldlnZtc>%x  $;-hh&7uOv=nzչq+54r=Ԅf/8;tʲQw jo㵇Zq+oƁM_ըuUFzjxkAc~ض۷cb*.oZn_aݚkVoϫv`J#+~ʛ=_'B,w{oś}W_/>^z=<;xo٧O'{?2}EsӸ' qGp $?W_q.V~q7syg_^g\3N z N=brE8ċp xXx8sq̂1oR̙g-Ŭga`ԓ0ubLS&q'`݌;DŽ1sx30b4 <CL!S2p~8 `Kq_XTFEh!'Ƌ0o rkB6^?Sh39=Ȅh:'mtUzPr.{ZWj)']+i)%"B: 5J-КI61=GC>vزfÞkac:, kU8%TF ouNqdI,L. K8Fi%9/N ݭXJ{I!v.G"<<Ƌ(FO0 0L7ŗluј2q&Ob97(11zLy$F#X}̨0j,~$aC LG`)2򱨨~$s|qoFl$*JɇXJ/0e+9y9>Nn22F9UH"NF N^hp"8B@ד{\/<حZ׶uGsLԚNԆN8pm[:%9IVUfW,/6XUA=Kci J%w9U݉xUn)R{buXOD'"NGlT"G3" E 44!!I^%ksLEvA/] sߋ?^p4kh~ \lW9|{,[[g3$C=!Yݥ7ut" *ykMpweY qFfNpgg(OZ~NkpohM%wnF 22222222222222222222bWv;0^Y_{vG<λWm/^w9oPpWU-vdOx;/ZZ5f&7FsUZ4[H2oW`׷A]QIWkCMmViqS݌E?Єq`z쩪5-ٳF.C~=[q~f*l޴tlܸĺu.ڵy36s~^%XrV+~X߻˟+ |Jx5 [&H7~nW>K_| O=›cxCy}֧qO<ƵW܇.՗݅+.^t8̫ J~%8 zE8i8qXt8سqgK0S1`QaάS0ȓ1kIfN[#铍L Əqb̈9=|6FCt31lc:g>d&bP D3y1,F&8ǹ<>E< (-erU$/.B` /?_<_!7p3IY9]p I-3C4d \e2P`sӋb䖦 :5HcR'iT/ AmI)ɖTa=M#BsJ*]'U7e%w{vwARDph$jE'hF#""F# #44L'kޙב!º/\r%{nܻ rɽwW%w.w "wz]yӋӑ&  d+i?Sp{ e,7gq^z5l޺UV7J]FFFF̟~6l0$wh;h\[)wޠhaok*y2ҎIS; D62^[Mj?FA`#ƫM8s`=S`UuثoO*ww[aSa;v`j~ m#`}-[شy/6oVƖUؼq6(vVYXf,_ WlÏ ߯ŏ[b B }K/kW>f|y_=&zu#{4{x os+ŵWcDs} 9V(WVq=KO!<"ɂ$~S'GL9S'1&ı 0~\1>3yfa԰5H#30|0IGh 4 *'x؀m}Ƣt4*JGq*F1A2^^2eţ4JFp`(A\u J/G/+9iHO-յkd å@9KK)Bnqz z.j5g"IKFX:칰`f́59IYHILLCRmπÑl8Y0 B֋j't z{ϿTpgD!W]!}Apw޹.nQt4gO*Rp2Y̬Rdfr+QT4gw1yCc;opEskO]FFFFFW.###################.I쟶a?]קq[yi2|Ъo| ߙ)Qic? ۦע+ש:t-m$19{ڍ7oz5:ue~Ҹ텏cVoeOh2 5;6h#*jogЮ7@ ;`Jr7of6aʡvpj*z oklh444su7i47kTkV`sj=֪-uOMSW͖ZPslEVTlym? 5bS寧AG#=l|O]cG7`jn>aذn֮ݍuº5XM?);rfF?~__~/> ~Dm+s>G&_ᕗ?+/}_/*xS'㏽Gy= 97w?Ϲ.~糸gpmOǭ<{W^qeWwKnòe7 9οs!I\>jYK3`\2z2<,ֱqqgaIǜ9{=4,wsO#OČi'` ̘–ôjLt L<ı0a\9?(5cFQ3GrƎd1mr9b*C'cIC0Mb@߱[> j//!FrʊGf",RSxg o/%鏜ɬD de@|)d2F)K9Y \/Ezj9ǕBP(9 hFzbσÚ 5-ٺ-mzj8bphجNvLåLea_HNvp,Dxv :| V9.޻qhpNB>zh.N~.KKF|\b _OOfa4cA 9zlM.+uv :5'1ncfluOsݮaaeoRE''XصNB|Ż=2@dD&&}=8`*{׫WwBR`c&R{?o]1{=:* ==zqz!%wNpCBewU2蚤Cg!]y#ǵ4mb{l0EEvEpWsMRMnLJ~ ݇{w 4 Z\pw?SS9IpWjBG+g 2 <.BfR.o4F|wع{kk6.####H]FFFFFFFFFFFFFFFFFFFF5.['-m qZ1-w$ltWpB|9([hf[owu=w 3 Cf]m}Z۽×ί=i=vyM$hlvDfEHVN&EnT` 4&{ Fo=Jw}];jUqھkpP A4V[SEzEUuZF g99wk~ؾOc۶*l޺Ge76olڸ 7ٸa'6fvl_Voϫ6ciJj&a#f=z/_!?RJ|r|w(=y;{:}[7^xϼx >3|zO<.}-<x5dO/^Ҹޗp[$nIx#h\{}peqayj\8qkqk8K gv9N;rr%8Kp e8 ϗร1‚yK1o34̜q2HcڴEʘ4x4ƍSYqc`y=r(!9|6F gb#1Lc``0hc TQQ1ʃѨ,eQ^:EPRH Ap<8yQ4 0P*8#*YHO+f蠦"}XAi"O+BFX 8A28d8MvvkVؒLv8ٌ, M [R.YK&-lH꼭Sib ;8Xt$[\xϡI\XבB:$&99 a$&Ձddu9\iO"8œJ۸^-1 ɜ$U\IDlt11 MD*+%$!pb؜h8]A7,fwJ$`sk{Ÿ"|߂SV&!>w6N[p%{w[pO(FFF 2Q\<cw>+Wj~54? -b222222RpQ"VM&4IQGۧU-{J-$w@o"Eh)߇o39/K6zh",$ipr* :{m^WfrtwGȞ] A[6FI 9>6443Z5u -o7b؇CֵѨЬ=VS`gԸ=$ Il0ޠ{q`=_9boUk .Nٳw`رF~ݲ6c5uSC?V͛vam^_ nf6Xr+Yacc=~n~|ό՜X/?_/>3G77_\ǧx>|'~]5<+xW^C{xw;n}70nAxp͕¥܆K/qEny9g.֋O'-Dǥ/E.q]c=矍9sb0c) L'``ʄ1iq<L7*!`g>gy;r.Fg:x j@A_>Pa@dʲq(+1(-#FQ(NqhBAHN~>[@ACnPdAv`dgDV@d(df7/\HK/*+QP"mnRJ,F)B8|6{46S8YNnR*YLF c$ Y:*X:Mµ'xg nMJCKB$Kbt̴PO n[-I) vSTy)#u&H!8FLl2#ߜxGzhIb/8na$+$ Zپ$&퉺9^ϣCCɖDHQEx 4"!P6vFX8^XX/$$wBLjR'ʗ!!@Mc}SxPP0_!:Z%L9y1o"M}:DFn.];C/kmG 1h.>=zp<%?Bp7[pnq@o΁K^<~F]}J\. \n{o7 $w)n=-8m,AvN9G-ONFkhR>Msumvotw6vV:zں. ߇jpуz<`Ac~#{ՙ@#ۧѨAc1={֡jo{j4vu~mUF-%|]Hl)ظ7llf&6bO XrHnֿb| \>^c>z|w[.w'xO>/|/>] Ͼ~O=:|5?2/)uFxw(nA7]^ݸ;pɅ0nV / ]p#.<,;zu\rWഓ/ɋi8Oc gb%sN̟Mƙ745T>d/f83cƔ8b:XL4Əc0VXqca蹦0ltf`2ZƧci0p*~ Z(?PUQwr<+ecQ^:c AYh(-3%CP79P=ك3Gd!"7?r3!;?'X9ж RʑRƖrip)*4=NKS&`"Y(^6,bs)D!,`p8\F[V=lؒstdrj&[8l9ʱ9ݥó]<ݰS(O)|]?NIۓ]^Icv Ϲ$'ĥvq1)Xo8bl be$3[ IDATmaⵅCw\lёB'A6Hd1A-s=  Np ;Fé <*/x KDk0BIfs7G2BLCr:OBH-Dp";  WG*sOsCT>z=sEj*$D@"/1 =b݄y ni>̧O!Pt~} F=EWs= n!mw! A|zq.D@ؓ="{_QpLv{K\݌<)s@!_B.ðaStEx}GjҪv;)t7Rp[nokkA"עuFjkuz6(ǵu nuF"4>r/;Z/%j:y5|^d`?{UcC:H\n7bʾF4j/:"*!P"vٵ;v{; n' {[ lُ[a}شyMUظQegÆXnckw/F~y+VڨrU Xr=~\? Xͷ׫+5jr|>#~|;|ɷF>|K1~S'7? CkWsϿg{3ϼ'|/_#>y,zXgƃO{]w>l䎇qm[ǭ7=~tqq5q+ĕnKoeߪj\6\xM ,;J,=r%]θq 8bOat!O:\?.X1I?]c٧`'*,̚3-S&/f,d!|-\eyll>8[Nm7fƌ:ʋ$~:B4 8Uc)TND S>}q*Ƣt ƒJKFh$J (o b8( 7Cy39 fBn@ dF6{5I 쁜t?gl~T&=U\"}<éQ#Ζ| bWpPxۯ/RB,l=qZJ_:mypXc;qF–Dbx.lÞnֹ\feǰL$%e ɒ$5-l¶ 2<`cloRˈ Iq!yE:5 I<OnSx]\kWP'pAܸLp./C$`Îi 22ʋh6/**C跑-> >wBVwSN-Rpw)W $)Ko%4iAǸq3q啷Oƞ(M 222229RpNhnomFKK#^S{5pz?bT`Q [8T˛ݭ \ԼQjPEƞvU9} ;a3{Tm^T*[hlRۮ7 v`F6n:bm [zn1e:bϿl5 XzΊ嫈 $tب +VlrbFq~=n__3nWW?/W2VBE>'Don>[~>@wû~wo5|+o|_k~.x3G^xC̚}Vr;cuϧaNz<::ɔ(o#-4=YU< $$"44o O< 8D(}>> }3QT<Ӧ-=b>G|wDU_/>zM<[O>Oy\'^cGu<ثq}j}3;zwqw;í?o0!tۃp#q2ݭq͵wk\y]⚻9W^}.v\r-ؓnE\lflE7 o`\Ϲ}5XrUXj%Kb\ɸgq/98t2,^|E… O8oǝK9t̝Ĕ:Ë3OŴiLLSbxLrXΤI`8&08Ga0vl?c FQcc#i =Ջ`؈2b'a2L f :8x ~FQGa((S6eCPZ*()1x%EC(&HQDR(I5o# [ ("rMRyHXA |[=ۻ9cP aXFLP;G)Dp9ƉHю$h>g F'yE7XRh|c{E3<"A?XInz+?Nd$5+SD\{/tEk8`כ]Pv9B&] h=}w$sQ^}'?_$sǺ@[ ^/3G%1[t_"AOLI`K^Tےu'*{kvݟqVzV(HdvwoD=jݹξ7QD"b# {^Gp$.;! $+2z=5`PyW$ɛHZ] ݿGOӤo_{/NoAxwK|'i?B2PZMEv?v\팞~ l;W'~:YCq?v<E`C(!r^pK^תb{Wwjqc?'C" .'%{aݽ[v5Qit'̿BbO3 [p7A/;Y8}$%7En y~oJZ@஗exA $WT NK/?o՚.#####[#wܩ{ΝQwvَ;`ۯ}V6wmavY~\Xxʫ_?OzȰa31d 2q[KAqA87}N^WLBIxơ3ƢtdGEa0P!/ :$/rͨDv^hr+)d9)CF6# R(f]@hrxJF_tWoHO+9SRnwk)B ^%8p$+6DuQPݒ #aў͛=en-&5\ipCc6hMoj'靓,ИcuH-/I&ǵ|le$Ib$Z}RpY,HRIaSнIJtrn]$E9뵳F{ Z{'@' !++ *&+"Es#LoVm !FDBJOyB< 5=Z ٘==ʣM\/O(b<{z}ⵆ ‰+žl]: ZfmMj ^Ď77Bv,ڶUH8' {@sɝyqMfo# 얜t =7t^\pn.r}k1QIڵw#d|Hq <Ⴞr~&>a\V^=IoeєnUvqCk3$(7xkuw:. W%xS xlS#.V@\ȏq=>Ew>AaIr;C QF|$[HKVws~FŰvjWag>ʍot%}-&[-ۍM&$Z}6w![L(3Cn@w \raIp{wݷE''${ '$ >ρ:7 ~悻g*3T=_/j{ ׫;r{;FElxhp!%wC!+t(w+\/";2-eHidd`8sEoiCSK+ZEedddd~K.##################?s͍jl߾ lĶmeFlܴk5kWcϫ_ؽΧxS5ݏK. s#N?*,\x!=:3giӎǔ)bҔc01qϘ0iMcb$1( 1ll#gi 9CI3qN30`1OST&dܟ-O2o"c[T F98V J*Ƣ|,((QK3&Q旱ye# GQ0}'E%PXB.`2rc8 F2F1Fe~pN.#/oܡo' O7X fcCb '{0'+d FF NV!YNzfdd3ʨ`P4+uB!R\D/]I+OP>K=\ ЋܛB!@NGoC*8ECo]lLWdv7n 4.<(Tsp*8Ybe{+SB<.Ǟ.t¹ƒU!Y|w5IlnMޒPrRIE<' x/:o3lH$1&> &1F'(9-Ř"R&&iX,ZcUd^ݲz\ˈj \JU V p8rh]DAXB( BB{‰f*:ҧO'88Ny;OUr=T9=N!Vad(jHP˼YcL.$dMTַ{*z1LwMAϕHַ]Bi=h87y&p5h>ނ{Npyo9ڒ~ާNpw8>ё:=OB9}'#u$| |MBn" St'XNN?c6 Оʮ{At珡w1N!Ymb׀~FG@o uD|)>';H7S' a"لj`#wo{ޕ^~F=P'wIp!sw?Bp ATH⩽] RpK\鋼wjv`USkn?]QS׈vi/edddd) M8xh?6kV㧟Waaw/g/~7r]p5N=<TL=XLcGa؈73M@n8 FVPeT 3OGn2I99 7q? v98~k 3M6;Fv.O#+$rdd%#ˍhWR!s!\UWi)j IDATE(a*gǭ0˼qk#DrޙGZT"'f. ;S|S%rc{8I׻*zUbsuܞ! YIpJ:S8B}B}Ww(7 vU q}I ʓm D#OYYy">ٜDh F¢x; d.c[%-jЋ$úࢺ^LAl^ I$nePH({oD9|!Z҅nˣfsPcM}7G il&qxE;K:Iq -2*F'kM6ARv"\wISܬ'jczaL6cy>&Y!'BBwpp[p $jܑgk1c(}Id-jr;sћ'ţ" 0ao, ^_:!T3w=6Ԕʉ{LSY@ps3]z^"?DܓoHop [& \&» -'88 N3э} n4PI'[3` B+N6k |3Ʈk%:}>&zV ?Vp$ 6(خB^rwI _r;dz-:݂{[rD.܉^cSr#Ѐ`DhlD ٿ%1ݙ&~2Hp,FNvbŸǰ獨WV .wF 2222222222222222222iikA]C؇-۶`5qŏۯwO? ]u5|,l[n.g :16w#8{4;#w0G"NsH֓5Yl~5}9$2=RÕ&͌LߞO?_*JMI3 M4/dTh2NZz4.s}ر]$ಸKi,DjFAQc:+W!Ok<_!ܑZGJz*Ae]ޑn-%GIl=f-9>Ց!q0n!\9:urC|-ۃ7vox:܂i:'ӀhpWэw wWp$x4+ڬ b*U!8ML0Q BD[x Y44@h/b=Q2'T6- DУ1GPe a|L4GrBB" ;˥{HU5HC'ɝp??{'YUJ]9眫$fiA2&TU\Q\00v1+Y@DED9ϼyssa8Ǫj9DqAM+O*%p-coEYFG9 J]VSU\ Nt0.;KL$j:[HԉBpw):"us:^w^]3uEnⵂ; ò8r;JZ=u  (.8B*Qd hwe Lw/w p K|ʂ{a.{r=00Dw|">%@%=)2^Mp@G xs=lنJF^C.dHOaSElFqupb_C#y]+{'4;!X zɝ l>J8} utvg.wgMpw6o_4_~oܕΡ;#hH{5c%G~?VwYr(QDI ](QD%J(QD%J(QXۺ}۰._?y'▛|_K.8S^qwa#aCaj01~ #߷F{10麱n.G,*x/i&HI<7Ay_lMuv:\O9M]N4o)p>(/`,d˓YD L%W@U`UF aU6~φOiOAc ) cbpN)R9gJ'ji*foAiR?K iZZc= i8c5^G9} ѽ.я^IoCp|N|" >il`ȏ#4((i||穇R>Y2W`A]h:6=}0?-){CIigĞ*C*Ssyo vayD3hP8&K4)K᪀HN>Y"{L&"Aq{||AO{')՜'G ]|x:O6\jH6.]sIZ;@adRA:̔H"U}grj_S4 ?Lp;:!02:KL@UBb:>> M܎Ow<x邥n+g{ ^ɂ{Hb:ݳ[w :}RpG.!vr{o` n.3;ү>HB!$O>`{gIpO?{} F!I"HpQApVgWpUj`W''q]Np78է W[aE%J,E%J(QD%J(QD# nkׯg.z>.N; 8cC};/v{_hJ4ڋH&d"]9O;WF&jo]\i,"ٜ < %`s Jy*lRL'/3O>YlM(ړ4-z5L)һYxb] Y_:]Mp1\|0\j[[ώŲRBGj1ErQZ0KX kOFmSҹ5m<}7֭׻͟ (^\q8+ _0yvz-8,gUٍ$EJD㍀/&*CH ' |q8?^N@BHUAaP?t:Hg W?`r aAdn(" Q& D WL]Q•ߤ$\")xIub$ѤDJGV H^Cтv!o8iPjVfFrgLۻ'wX(.1,ubItR$q#HYw6%Yv5+EvbNJ IBq28T+fLB`݂2ASc7`t:=1#͖defDY2Fԫڿv>v{~ =L Mp$[ TAqhd̞$v$ixUpg,OE . \l`؅\(d>hK1<㞣&˒VpWE}t;U$6";9vAw['>cPJw=CNܹEBCpq^ldο˼ ;"$9aPnϱ6=N+k(+N]K%^eͲO[O3˂;>IR{2ɘ * z>Wr{}9 S׿^ |QXf3lڼlrE%JԮE%J(QD%J(QDחi6Xf-<3pcħ?8z__#sBgl1F0iXuJǤyD=_`'jRy/`y-H5_#::1z$95 $Pn!S&)0?_'[ &ly愉bsBTzj6u).kaʀ^lvU׃9%[ ow0~ZcNOMW ~" ndwy7T%v#^葄v.Wlʔz1=˓P(=.-=.{V^.[#(z_D -He %M6`Vp c{கnVǃJ 級^.c1SJpOHRjYp uE7JpO͂.Upiw.קtw7 8غ=C+r *TP*ry$3@iSǠlAX`9j;'Qg bDzu6=$lB{iǡD}D:N] w/w)y.Otɖ%# ~R}MpW;+q T$wNQ|P=Rn)h/{N''4{[e=@hܝswDގ)v}wFp);g(*R9|>Vn.n} ~JoO/$kBpߛ En/R.}-˯4ٞKsϽ#'YrE%JLJD%J(QD%J(QDk neV_ex Ǟr wa0h1L-GT־%+QbW)y03@nU{J, )n|NrQnOX㘤^DK uR|)ITr^lCRG ا* sz+d\MAa\N&OB|kM0v;=22;}=[ &Hn‰6A+Z]o}5ѽlAEIhe LR3$r v i:-8,J2D .NA8W-w'J)YIbmRqN2t2 TlQ$G}ӏp/`X2 L"l^$1&* n# An]+6{AMsCpw?%k!737[g33 }vNn'YYL4L.$10̮(DV۩^/Zk:Sܓi(kSpw!n.n,6 ^GiS h8AB] R:ޓTJ-ȳ w.{%KC\-{rq%+rdd{[;v?Na2\btL,rr%w|~vK}YMw+LSBa@%[>JF$NpӥDpO0Yp4 i$^ 1%]C0Ipw<wGW}k}Vp߇ۍr^);{Hp;1=~C3]ܓv { W>ڗ^Ύn*#"e~,\qŧ[n'Z-ۅ.J(Qf.J(QD%J(QD%JRu|Z#~r=\ñ' ?PۛsC}| jPCC}{Yp\ptDnI֤ey,]q؄-ָ:Bs1 ֈ@Nn'!}4b}֧>].t[&K%ܒiÊ\J7m>|QjА"<CJۗ+h`IX[i@$`(EOg-?H$y8n;P NByJGS;x^/Α N0rP(A=b*ȶ?@SӾ1ŝ#v?qqLw+஑(ǖwynٹwr|Nஞ_*ϖwPr! ؽ kېȚvnd5rNsy{GXT[ ;wnͲʵ ~u[I$Db2ў cOkmeº [a&]D%j&%wQD%J(QD%J(QDՋqxn ࿾q-  h̓*rD{¹Ip7|:[\K*6{ ҋ'+{க G]D*v؞b{&J(cB;(\!ݞ0 DŽv JZQ$& x3 $%b.l="bMo^BKJ0dYB$vSz;r`8Ip}~| Ni(ЎYp!JV_ӐAnWug/FQp!Bp߳w|+5=cHpwdpRR8(o{Bpw.OGQ#c;* lG#(W˂bo2 ʍO`{$+ĥ6.J=Ol;gW97X g%q;&(Ked0;Ol=0Epg; BmNH2/u(pK dy>%Jւ{#5{Gb $nyz|ܾw_Di#iw侫tX c*̛A=I@ݯvEp^kV'/;=ebuuNh𖷾 ~z?kmÖm;.J(Qf.J(QD%J(QD%Jvjo O>~go{P]mK74qi("i6,NykIA(('by18 Yܽ^$#lIܮٵRo 4 QITpw=\p윱-w/eEzu^* z\By]';x*6C.eoN %kvI"S ;`<ZzRQpAdۘgqG`pxY壎:w'us<ĮA6ncl-hwBF9nv$F*9V)9r$Bw?_=Z\NԵҺ띊|Ұ^DSCNyȱ ,s$2t>I8tu%wТo#{H`;i$\rX ';nA. ΢>Qbgwdh`Vn7 <$w6Bpg"rZ `ܱSih!}g܇v{ {ϒtȒ: {dW]0>FP1=m''g.2%Ep}f{ۂnrit %q$W' ^wòPM(,mh5Ep/ơ vTJsI8숣 /g`֝mYn(QDI ](QD%J(QD%J(Q{}YIw7O=^'/<F&}$]2'^mOHLB}U*-6fo^P%J#$ReiexUe1&A=ML%jlݪ64qIƶն%Zgֱ[[Զͧa}VuYbqQ(6]J$NsZvپȱa' 6!i@6]lN95Fgk LE(Q*Z$Ȃ FB)%',<<)|]PNG zP|x`cHBNT)7^뒐()A ih N dQQIT(oV,(2;TBYQvD?EH@SP+ڄw Zڧ(@ˎC(Ų} ?¿e6u{!H2]|Ht랱預2} Tɝf޽稥:p8 *k:X=;ҸA>wlBԆ Z]n'=+~>P[)wt}FD(;PhEw8 p4>{L0G1¶H"Vt(`i۪p14ҺӰ~k4nLm5D%c&&=]|lAdwAW+n HܱL0} ~?L`7@>s8\ a`hСKܮ$K*J, vQvעˡ&;DpYn']ஓu禷nmuhv;ݎDw͎a%qv!M@cܓ9Ks2+{nO 7P.vRz  sT'-t.O ?v ޜlLZZpό(jl4FOz-|< شelBp%J(Q3)!%J(QD%J(QD%j/[}s=pc; 9KHr&Z$}^6ݯ^n} m BzƸchD;!IQ]"9[/3G BwJBp=# c'iivɒ(l_'ǣyaxaf{7$DV05/J9Zl C=<ɩdQt#A*n$k%wEjMp'quB"'m-H2I]]qz}ډDLJ]x/t@7=I)CC\t0]U]ݘlcxg>Ep'wuHP2^]I9\Qd=J^Sp |_^.Krt(R;ۧ*(3,o \G<\*>/}@= }7 e4bf/܍B;IyN>k(O8 _wࡇW-vBp%J(Q3)!%J(QD%J(QD%j/k`ݦ-$;~|ara02r4@- %}$OI4J${>J{Lq7b/"OX0.c}R.7 c}0:zܧDžྛl3(y{nBpg \rMpϦJ:d"yDIr-wGQb>h)hR{CG*^ t.Gs}2 npy Nn&2d,ݿ. ۱Hcne"EG#IycX\ԄLuv_=QNqqwǐ'j= 1=k%EM]qB="= Iz4kKzfi(C zRv(A}`p]ޞvNRK֘ofns\MS0NG MS Ynq|#x=Op|Q۹x%]/^;$]g"[ւ䎂,;zHҺCbp{]]\pYnWowڡ{(;ٱ ]+2 }y}ւ{2k84>'o"A D6b ZdP,vCKȌ)qeӴ>&Izn>ۂNhg4sU,vޖwYr'6{Qe^_c? ׮w]D%j&%wQD%J(QD%J(QDe%#l'zn6xyᇿNh'Jǚ~Zp/x&[c>! }F{iM#ƞ&g0-V'&Y{Ulׇ(8!ƣb ^?Q@;JCN3@Bp4iI$bIc5;wC{=rڳhyc{$\Wb{hI%Vԁx! Xrz'Nh~ʂ;ʳ(¢@霱Iq͊%=g}]ZS$=ᨵH+R[a9e.K@ ~m} TvUnwp]͎L>49sP䌢6#ڤܴOl6:.Y" L o/[rZ%c%wKoLnܵ{\"OKI=YbIs_p&wܹq r#p>=t$g܇]W2vr;vyMAp׊Z03r=QlO9I$7B"er/7\bNt{IdlXS.6Q^*(O eR{>؍#듒>$w-\pg19 # #O\9s/,7ö;鿿78!%J~KD%J(QD%J(QD׶lOYwEp''w! ]Bp i{IqNpG9H~qwLw{ $&j&}6wWJqR⭝)%wFp)~vLmv-{=ܮ D~} tNٱD3hـ,[Hک=GpiK`'5:enLKi٦B!e:I,kC|ڷ`(IקܵrC/&}h S D)8.B.Wf'W;yN%O=4$P0i5 ŗTpǎJm[w5}w͂{e} gW&'lVpϽx^nW%w.7 wp#! (V:,/@+vς%[l)Z Ǟx \(,]6l w.J(Q-!%J(QD%J(QD%jn<p9C=Ng?h'{=j{Eԭu-JO%}BpCn܅2sM+]#Ip:΅GK=]5w.U'bzc!. !s$W'1AXJ!V^CpwxIpaoJp/.zpaIpgD!I2 DӠ=&#5Up)Ar= D$}H (.qI*)JyI݉v# fLΖѼB\󞐦̐rJy9;k]C"V6 ӡKG;U%iU tCO<ۍ~J6 NIpǎ*TuU"Qɲv0R9vz6DLٌDb˯l֖ +kvU(: Q)uj rLBש.L/w4bşp!'+lwi'&;y; &GHE:-Nb$ '!˪ִzE>#\AI18\ IpO2{_;#)Fh P%w; x?QǶ{{@i%.{rAefGpp%oYvV;G5e';y%3Ne7J.%mɷ SC $uޣRe!Ёߑex9{`棓5J:8:r\>VpO;!K$sx*^ԎB;jEt\:|(l(Q2{Rb{k'ɝ]oP{G ;0rEq퇦.ݘڞMuRUFD&j#nC= ZPnP(A c" <1X܍ޫn'TÍ8}"G)`rLgw?n_|(I&9 FdA[*N^L/'m?MA|Z Ti0i;FB!X/G+J:ugUd7I8i( m)ե\$Q5u\zhT$*X:%I\6k+&.¬MrRwh'z'r:54LkSyT"@,'/sPyr;鵊YC*%d\b?-\US9Ri Uۇؾ)7Er^pGWF+j1 Xӣ1}pM| NE;}NmIxowpܮ`ϸ~Kψ,` &;IrGq@ ["kҹ^ȖwUjb%#v{2e]+%w.V QrwUpw5?88`WW{ Fōw{8g-sIR, ݃ Gx<~EnA~ }Fٝ)W]Cf 7l*!qSz9`= X%p(>8in 8Oy8}1O:dX͓H1{8ɦ [`^γ{u*-|zyv}=S,VT؎z\'ʥezê>˳C Pf/+Dëo{Xpjm>NnBeux6mYN<[VP[x,N-iqLmW*з\Ixo0p7j:-*Gu?IͺJ1`%kv-Z]IpW~L~'UIx729o<2XaH ](QD[Bp%J(QD%J(QD%J^_vmX|}Spqo%, \nW܅.w! . +gGpGi8أBq,RXX%AhgNpM௉x^@܍HB< 8;.s U{SԎx|\n'r`uiZaB?|E'uiLpGqp؉s!P#_4*a<_k1=΀e퇟Lp`xLOr?d6OHbbyH`یי,S Lo>t+`[t$VuB%\JpWo'=>.}'|>$bAB $X;O$qzqZWcIn_׉Ūb;IiQpX[‹&Gݹcw;}]RSqVZ'=ZɝÅv#(íÓO<.l_ _9 惪>Ć;sTvtbQr7$y.M7q~ \'=7\ \MJb;d.Ǯ 39Q`GUbGE$pJ|OϮlAePfERJBYPjZDtZc0'FG&`ldGLċ Q6 _'&}ajbp [E%2&,98C#^mWǟp xҩpɯ_zx)oS_{ o7 xgg;x8|xys^8.RxEa‡> W+#|W'?YW] O~>O_Зu p²a-mEbBp%J(QSBp%J(QD%J(QD%J^_ouWS "huK*+] ,W{[Bp]pDjlAwl}IU *B_HacaHeVwPC=ː4^"撻Vt/tMzG YpG)SIng`JCsHrG9' (g<֮.8C;(¼^.Ok7ub r jj h5:0::##aFƠ ǘs-y ¢~K?q,88#L1G/qqǞ'kN>T8k_zxO7pi[Vx|Ygwg=]p޹ùy{wο"x{\| \ŗ\\!ƇUC]q%|q+?)g]^_W׾ |[o}ww|?~SO~?p 7 7 7kW_6o~{y;yA??~'x71_zcp7=8U6J2{݂>wYlGZrNէhw|bLFG¢}׽tֵCl׬Hw* ](QDͤ.J(QD%J(QD%J=yÆMw#8aLIp_ }QW(஝^+ZS Bpw m{O܅. ? NxQ<' kA=13Q il}H(2{wd* 6=ʏ{$/Le΀&U1s(A6_tgْtŒlE^vYp(K4${Ij{(twu8% z0rAxN)^m"y}94qCc; s10+- Ox҉RcsaἅdpAaj8cON8N|ͩp򩯃׾4xgggp;υsnx{/ w \|.Cpه> _~X#^?nnn_~;^yQA<>>_.[+W-aĦmauNر3GZ˶;QlؼoVzݶl1agp!{\͛v|~cNZ}Tb\.Kn,7QS$wFe06=8x9ͷ|y:Nv](QDz ](QD%J(QD%J(Q{}M7- /_[âE) ]Bp܅e܃=DHl%vbs R!Dr{wRO{{[2Pi2F9% ULM|F:?x\;ʬt*MZPMTʣP-) ۊΥBRU:$ˢ{ZMV\^&<>N /iíczxT"Fx}2q>1[$$϶Ivz 'Zem.0t$Q?Nۈ¤vW^=c)~HKDIĎJwRepcĊHlO(}ws=@$fY ry[BJ*uvlBքvs$I#&â }%XrrС!L~apG8G 'p<ל;dx_gM&8댷<g;6xoq6]Eхpå\vp>a/|*s/~^s𥫿_·ok_|k}^p?Ɵ@tƟH_~mpoogv'ĝwwqwpϽ=<<?zğI4qx''^ԓ2,3~n /,esK.e˖Ks^`ظWa5z:X~lذ6nXO6k6^j6l՚5 +WsVּ/_lJXj5^֮_G+Wqh8݊Ujun Jشq3l޼n۷NAw!<+c{kO,O|#|C;{~%lٺw(QD귄.J(QD%J(QD%JvZ@1kXz#wpU_#:&Vg ͑YEf ^p/[IZ7/m[v{!I fZ$s&8- 7e&,)5&YQD}ZTɽܫ\m"hR[[e%q+:Mpϕ6d-@D֝ͧX m(,7S*\poLRpo TQeTt{AJn.IpC0QsyF9Z]qVPwyy!H_C`nE{:I(&M,i]Sx&`4ud%rDnR!D*["VYQZPӝevnMThPBƖEu3}˨ÊrIz&WcB-ˉ)ebaALisY*WFqfy)+2_&2J3v*(x"ģcav-9H(#@؟1眐/ _I%9[f8\%aŴ(^Oyҹc.{SqڹخiO&LI$6:HkF%γq,q۹z4wl'N/ `~ol)(g2dySQٹ|J$ܯIeR()5d5{^'˟ި ="T;$vm9',(KP)jj:Z-t022066FLNN¼S0oj ̟ ,E K`<8= (8W G's,tqpq''9$xIםt {=N9SN778 8l8 s.{^xϻ ]>K/Se+>1G]q%\яÕ8\O՟Z|p]_ok뷾Mεw}-wu?p/nnFM7_m w[;޻>x?? OaxⱿ?\'e?+.U˖+`ݪUaضq#l۴غ ۶l[*lۺغu-lM[$¦[`Ͱ~&MȦ۸iyMN7 9xdz# HåiQ^v=$ɰakQH_C 8\ʗ._ K.>,<׿} -p c? 斛޻L;r_GؾY۶$!J(QD[Bp%J(QD%J(QD%J+ 1ikㆭǞo_cx  HroK{udT:t{Esm{7Y}&nۻa)iO2&r{Ҕ-y_ܘ(ǡX K}&TGt/\Y87 N_؉Lz#Y_; ]fTIxz 9>3$wY֦IkoQIEq/LFivL50B8Ru*dJW蕋8D%J(:bhs|$0GҜA*i1d܇ܔb"~Ƥ{+4qL7y"8*D:ڤAvZsq#8I>_P}$,N{#Q ֞`9\r+,DAb&_LB?;JN/l_9\^!CRm(7l.9p4,I\.M(Q rxDd`62(kq A}>t푗AU|v$wDnY0y*m#B':)CӚS%a $S# uLHc;dN z2RۀOI"N(wcPn/Y{'s9*$ʖO# OS{#H# IIfo^Fh;b{[P}(\VJ9=].%}.!Er{|ES1cZܹ``y^ (ID9YMbVp?Mu<,j]V9%/M,(H"<.T]?}"=ZHv&  .Ln'=iKy=W8}:B:Ȟ/+`2w)P.<]>|vb{_nSȗL\l^?Ei4*T*5VP5LMh69(˴m;s51|Xd B z(~pG8N0qꩧiozӛO3<:,x;{.p^_|1\~я~Jꪫs\}կ~7 w=F/n_[oonxx/iyoO<ќ&a.ͽmڍ(˔y;}\ß{oE%J+!%J(QD%J(QD%U)Jq߶{v%[ z06q GPp_! ]Bp!Z \AJ.WPu( ?dzm2w+ip~l$zEpwغ=ҼfJ©Q3V!N+RQp}R'&W#nNb\ePM1q@ JR;$ʑEp8ˊ􉯘Y*~\-JZkIizP6$zqqA­n^Jo“x1)\'cr;! K`yL' 鞸Dī$tZϨinJ~qY(9 Ӕ"1Hs$ Oe7b3n˵{'bsɽg:OsSPgNc (s;/HiP"N.Vr:&Ʀ`r|Ʌ`޾0Jϒn_x5}p1'qǞw2pk൧N{MqJop9Ͽ.|pEx/P2pe#\A\qqg>9g8?/}L|+_k@Q_:^{-|{3zq IDATo_p- vq+qp]w{Gx?O?D߿#<>(Tv,.b*UTRuK TRJ*UTRJ*UTsG,/Ŧ +c„н0'&7%esӍ*LpHpE JpW h"Cz\xILD$N`0ptmD}a,w^[7=Ч(bVO $ S;'[`H5t']9v'T`A:I].hժ8v% ٦M{tl$A³ğ ֧6(iI$F%CK\ӈuHr%ay69v{HSontbdZyX|oYC;LR-Wkr7ݿ|NR$CktMlt|a]X^"g%KѼՅ<2:u"S|eї."XXi.ަ{fHzbr(߷.; ϣg|/9t$^s~]B|BSv޾mMҿL/we'`@b3;ؔ?]nI=Iv@oGPB=mW Yp?oYC׍:Bvj]ǶIvcGNIz>|׿}žQJ:-ۡ]5y9 tJiڠ-?:4-D'gU 3wsکLod]7M{?͂#P+>[5$IBRB:$b<)1))ݑFwz`Ǿ}qIރѻ`?di 4 ucĈ5r,ƍK_„K/eĤWד0v=z,ƌ' &]/S\뮽787V<6r4~t1.̸^?uH{t&c:Oəg^0x^| 6KY{}}>J~sqy?bXb5֮Y_֭_6`ظa36m܂M`v)rp` YYp1;v\C8I:R͢xAA$Szuyy9W3IfmNvK26ҮI .Ioe1Rڝ.G7VJvS\7yA R["k28$55P; bosZ$ZA}mLp.}V~r,w~+1]':CHRkTn# Dt %|n5mYC]Sf)0$JH%H%IG;2_Jh$v5ADq˛G(/OL9ɿƯ P¿8f.&B7_pw_Ke:w 8gOft?нѶI ' .nX!s>-N񅎁?ީ) t uHǬ~]v"[}G_/7{{^u!hu &š_WUuN+ t_Gkz.sy|nՖ;XO9%wFh!!a&NÀt E`@nBe'v~cGJlX'=-yEzxHN D\L" NiLNzG0xp\s,?ǣ<'O|=+.xw{#|Wjη.|=;< Z~ /e+rj^֮ƍevl߶;gO=C#TyE`Ne%VZu7/K,]恞M6P]:1i4hLmџzʳ&Mv_:mwq]ߖ7Qޛގ{hB;?qIfѻæce, b ?䀹͸ ́Rt,Nj'u{EnK?GM("Lz|ݫes} gK^{:z>m;vaŪXrVW* CĐ'}0W&f+./{b=Ye]:|Eeqr8r7||>l6r /[ {=7ZzVC Hϟ+B|l b݄toro~_1 g 7LpX.*ӠwUTRURJ*UTRJ*UTR*6?ڒ{+Wl?FZ $ElRoDrܕ[pwO  㜄,mNil!Q.\`WB!G .V $}v cHbЩs0C2%/wӏp|BխZnŢ, ù5."Hou+$$0N! Zj:OeDNrJ/f'n^>Qz:%T)XbՓiYNȴn)M'N[&!8$J;T%,wwt*q/hNJ@ bZi;/씉%R&9'tn t.t VnrLq3!F4%O,2;A/It=HdoJ&C_p!wD$u2&:~ySuFoH6 9[;A-N}J Mr{g_ܡfC,ЕEyZ:UP[Np޹5]%{ 7o9A3A,CTdq1HO %)i)=LtGjjwĀpz샌ӻ6X0CdK/ɸ+])Xv疩2=|ڴs ̸sxЃ⑇c 4f|y^z/:xm?x6f{> ̞=s|}%/,2 ~^ aѢeXd/[⪕` Xfn&_6llfi|غe'vlߍ;vcvĞY g?Gq0 ']8z㧙'rqdr4r%98}:(((!QXX(*,GIq%JKP^VʊZTKhk$5ugj՞N7] cneR)SZ.5Rx`t"ߍRě~ćM=k/۰B-tsMx;)1+2Fݔav5oJ5m8gkN:%cFeY9KJ%n-)r}9l}?Nױ[m+K`r,]/boaCo)qq0t(.<ƌ Osƪ+sx5V bT֠.1NoW4/2N\{ 駟sn)SgҒr_m~9 $%PjꈛBR=:M .7.e3YpON!Clj`*d:@ TR7-%RJ*UTRJ*UTRU>wW*ڑ^\s;O#S3.kz&ƽv=m{]GDl cܛ[*s$d#;m;#LByвa7l f Yj}q<_]p f kwwݧNӂ|\l $zM ~e*sMpo۶+$ꂻ_9ybx m)Ic7MN"_䄄tUN̅t:\p 8Q6צu`ѝ7eFnErDu_ery'X4o5ɺCΗ[q۳*%2,Yta\]4|n$>2zr-Y)-gmHmÂ'66#L"\&ukift ^>,ɽp|m4,{).*H/B1wI0>;ߥc@;!!ڀIw·.ydM>FZ:Eut;sz.58V8G?&;6\?Z_8U]@0._Y$gOBzvIVr>WZI歧}Kݟs;Ivz0EtqyGi}kk,(+dZ?C; Z.7&Xnn5f͂& s?ޗ7DFZzqŽ\WU)e%?') (O2zmm-c"_S9+\>zNjKJG M>￲ ~Tm M$#S999b"sssQ$U⽙W&t>J KebX}Z~٧qQf8s<;|(-)j>~_|p4{o2Mc{:2ԋX"M[`|;o>~1WaK͗07yቧ3pmc?`O?ê5ke6;q5 wvG.ܹ ?#f͚^x%އܾw~YCN+#x'M猞Izj*Oa@%҄޸Mj&jJnd=-n2o)އUK B*UTVJpWJ*UTRJ*UTRJ՟/$F"@$A\RO$tw5i&ὥIf/kScR]og>ZJc!7R ] ċ!ӽA.8 M^w_b{c4WpϮMlw͐ޥs:w C!>.g9[s9;'w_D ҭ]EVNRIpwt1NiN%]e:<tH=!)Ih'ݿ/:u}{~yĶ"<]+=sԩ헞U?T@>zݺ3kK}.thP BIPPi Bxx,"Y JDD1)FSx*b8DG!>. )HLJCrj&2B>ї AC=x7у&W3M&*2Z\rk0YL,M^soӧߍ{=Li }>+|\{<'/^ ˗k9IDow6oށ{zadeep͜:EBxigഖNi~~> PXX XdIU5,vYXLf *,."4,Z,ڬ6Nsfa\O )[O&P6K2fffUCnR mz "nR\_^Lo M7&S 7F оR[ʯi]:$-SBYn7wi'Y}1>CUY9}.58w֯]Ǣ;'Yj<7mق۷c˶s.l۱ -Ž];q! ψ CO8|\RRsʕ+4֮]}6lyDI[mن[c,9r Yb):>|Yr5{~Fu֭[M:Я>S{LSǟ={aUŘ ,^ V/ۂwa5X2,?o>/>g_ RlϾ8q*E^{COIϧRqUAg8Mx.SQ{MU 9;A6mѱsWaڶ?Hf $w%w:t:ۗ ODGtj唰O;_!kJ瞎ܹ$AA}-$F"<<ΒlN'~u4H<!!֏E\L"St&g"-;{Gf} D~1pP 6 F%LQGc1=jƍ)WNLôiwbw;{ǃ0~Qç/`o0y=Xh ._uaF 1·ƶm;l٢bُݻa,de68(8t>G`iǏĉ2u<;[OkFRqA~Z앢RTJJ+8Y%S*yE2m"q=jZ#E*j*TNRS[#%Z.M:%GS/V-n5[vB&EK.P[v#i&ݜ-k DmhSc70i3o$r7h8}ؼ`wIvMFfМfI,LW[p}!]ڞ}$KYoǒŋqA>|޽{ųp XY[oþs؎bԩSZN@?#G^VFPn{q@OiHt?!L%ǎ?EÇrzxyy Y/((b=77Ǐ |o/8qw~\E`eXX,[tW^k_cÆؼi o!)حS&=Y8x;{I:!a:rGljSS99>:/,Daq ST℄j5ke8I۔,?ߜm2[&S*9 z^Y)rI:NA-m7hV# wIfMi:/or vAHI\NNu$m¹],wAWzn]o4tWӯh%hz?(/8+{K}αk~m}qdx!T6N<ʊ ǩ,Sz;=v ij4sA.>O?%(_}>$[ΒCbgi]E;N=hVZj;rvž}79r<ߧQIBzNӒ}I1<z#)ƌ>V܄">sTRw)%RJ*UTRJ*UTRU&[ < Kp?E!c i}XpNd\LDdGJ)b_̸~s=z?4,OǞijϼ}х^| !'_cΜo0w<|͏|"<9Ēūt*Xkn/6c/[ql޴I9p@ q7R7R 2%}r-%"$KhfPBm-'q8XYY mJI.֓R䶼:-,+WTTE$9ҐDZίYmJ דyUX)M^6jz-6q[-j9!m@}솼MEBV'Ml>^:Ǵ4R@^Z>ż,&_SJ9SzCIv4M>1R%^axW%wojUv7K͕Н亝3B}s4k.K{~w{ӂ;W9Zo!7־a\7y?HX * %ee՟40-oўHx[v3xo;d 7K ,* l4O<qj"֩Eqi*-H,P=ESMvrqJN?z83'O"'PV\E\7__kpv4cAbsJShkn5+yV^ٰm^<3owO9$GG!2BE{Rbo$ߓo|]ZTx*UT}J TRJ*UTRJ*UTs7D,VZVM[ww>Ƙ W"9?3Yj7Sp.1$]^KIW  =߂{d'!(H\+AP`0{wbκ-RnwWN:" ڲ.ުM;ǒ{9UnyCkJ.ou'ni u jN{Xÿ+a"&*SHOC|\2$м&99=з 2ÆØCF`1{7`ܸIte1k$ix5sՔpu7aM߁[t1mO3G#O`g_+/_{"3|jw|E,X %lZZKU`Ū*,Y\ W׫fz[7lņM۱iNlٶ۶ai+m/l#؍bs~ޕ}{!kQ:C#b98M;|>q9zN??и.kQjinnQXP"(T \P@+)DIq%PTX*(S։ҒrLSVV$WVV'j ATu QUBR`)$]P.SMn*.oކf4I4OGJ2 p!Rah9+ V&hºX氳PiohG#7]O)eP}Iq<$S0( $ӹ5$tYpdiCWCXs]/HWO%5[5/[>7|ݜn\ooɽ9p3vS;=gv%c_\;sQN2=gyKUWRLBuԖeѝ 696uctXo)?MMua]Jvm6iHr{S kihSLjK;-/Ա7 C%w)ӵ{׸VlKt\T^QjjKMSGAtKo# QQOal\&z#5?n>|";z<+]*UT֥wUTRJ*UTRJ*UT˿5i]ʃGN׀I .DHwA=.aLOh}Hg*Gev)v䞆T&,ΗN !qb~3DXtFˉ-& 4ZSt I3",$,$wX'!Q\! Hpb OIԆH'#-<Bc1bc~` 91Oon[A^yR\J0NBHHFx@"D@ I}4ܥ.a`p8.{pH1Mr{P 0IP '.b>OcUI.#B< a/ѧ.6'kpR8`1?(|>.ޟ0t.+;ϿBxDDljqD$ V<2ٽz菞=W{ c̐Ùa¨Q1z3fƎq.å^IeMa) ¯W߈믿Erq33uM#wC>=̙'(A|&~Q<9i<̿3_/_>}==?xc|=K?/> s_ϝ|=oy?~a%X`1-\ŋaXt%V,_U+a X㛘-wbؽ¾uLFZ#NG^ЯP_2p0 (S|l|>+|jI$?-f[(M\v/غu;;sn;Y<8tL ?rǎ1?~N ';+DAA 9LqQ)**8y[%]SS'S2@$:fPPzxqqhuv1;$WVԢqJ_%UV԰tNө=7]":UQUZt)$:墽Fu-IX2啄lu5-Woqh`D9]֧'ѓü<3cLm&L/_ziC3-3HsGrnTvzr; 45|T'"cN./GNNm9rٿ?V\׋gqgVlܸviwƺuxGrk֬U+5شysNEwekkI˺zX-}-Ә[MW/{'O}s[ MC=I_KC>ޞ36/8a92G8ݗt]p'̂;@74!;djsc7~y}炙`-]oԶa>_mv.;V-]{Ǘ$n= IDATŝ2G%V ^$q'$O8(b)P|?s us-4S<) s:'ODN2r u\1-u+!t!waƻ,}o7Yd.'6))ɧ6MbN1ON1rD[ر3 Eŕ➳%J*U~R*UTRJ*UTRJ*U%YPZn߱$@BJo7,G%k4Cpw%qndѮEJD41N IrDw){x|LrפP"R}בd'bH$'b<$̹ C˄&N4q=%Ip0(oЃ=a)=$r&(I$(;rd1BppAP4$$DܧF` qe > rx(=c/&a„1qdLj\Tx-ze>C3/g_Ͼ_x /&^{mf!3>ss_}on|={b߁#8p>Cđ8r8z䄖Oĉr邓's}*9F8[EjM2'YjI0nSw]N]RĮ%t;LrH.$r|wUpR=vJK!JMt6]6> VW)W9XRZ,[xyj7hRDl0YMuX2DƄ,6b2%z֧mܾw^ڳstz)dCSb?sIJp!<ښZ>-/4M\ϤO]rV7lr"sZ>qFyNxEE4{گP&N&9 #ӯ[.g{SZ>&|~ָ14ut.)t~uh#mh޾m B.Seن& @$d,noFӸI-ڋ5y)f~Mlۓ缄1@k7ⱙ"x߄Q|HL)^~| xS(+ΠiHTR(%RJ*UTRJ*UTRO[?!6~1Lqg=b2 Ⴐ87=261^X?L A\3RhBxTG DQb#>E}L \a&4/MkǓhZXOl?Tτ ,, CIFj \ 5v%,&]@2FFPcd "'"{iq!*/b .b 9(1 0AKAj0 #n2G"3~42Ɗח"=n"c%3iz^>0nuq`ڝwi1}ݸ>{}0#3cO'O>O O?zE~EʛxYxޜYoyxG{?Do|l~3k|7j7rշF󗸰h!k]Xb֮وc7-s>v¾=:pS8A$ 99yBN^n X /-DiySQE)zIK=[ HvHmB:%4O_]lEPa񱌕 X, $\$rۜݮ xOm0tEsEs]ER} :Nx.[9ݝ*qJ+Yܧה.٠vLlGV]!N$.G I JIScsNع<;8\%w̛x/>gG5 Hp'al $S-[}vO:ů> paIj?~ Nj'ѝ:PZ;-G$S[tnQQ!JJ{.l1;д~qQxTpjws֍uw'~؛վ!k1ϗjG;.: FcӰa>O,NA\|gsu ao6A?@E+I>OܙM["8usSݓq8L|ޞyǟy,pâ Vջve jgT4_ЯW{BLB9 (aiyP^T^\Z&Vh:8u+QRIX$r7K'[-A&ք]()(*!Y;H2Mni̙=:1LxTwUTRJ*UTRJ*UTiK&I,(شuyM = #1fѝRܣu*R))Sr#N&0\f<4462t{!*^@DDEtd =l '~r[:= B#5"4"{Mw 4B3$q0 ➈c q#A 2EDv%#":JI3!GElD?G G| &It9Q)b5)1üp1R3#3iѣ1Ȉ%.Eq.}@ߔ:Ү41>0(j y#{_1oh7h%bl[0gFeŔ1 VauXr=V^Wb زm`;l%#؋]b#oN?r'O!~>@t^! ە,lװ J!٨ނz%/)[S}2iۙ힚'gȄ:M:]57>OOE?:anL,E q3=܋p+nOC!4H9w]^eovWQOO9Ih~iZۯn7&SvI']ej\2 %{%wλ~pI` ^E5S[_lju⳼Z\GrxoՊ$旉t/*)Eyy'W!$\R5?]1W7_+i&[{aIQRRR;mšCi M۠Kۧ6hsrrx\}-sG;>r{3AaW6s#jqTMmumN} N,Mbѐ_0x?JޯMQ#5ͦƸu wh·L &I,PGvi\jw}]b)Mܩ7uX/_CX%F8Gu ⳷ZCGf)k?Jʧa3$^)Sx! Fڵ|.h{w_]6IӔ:}'a.Nf68#'Nl):GL.ɖvNgXx>"%p3L>r򚆗sh[P&ceb۽bX`8.:ގͥ-3 xo_~}F8)G' 8:\'4y%8FITDDkF `b" >f0bx=QCy HA0$^$Ɖ 9~ҒG#=y s 2SJƢGxK3uӋHɼ{^Wbh1u703f\2f[1n5.>G{5ǕiQ13p qbK<0n&Nz73T o S4 K[ǿ$xS/y71y:y1yys8U*֠%2UThI3u"yX^Y+ahJG:C\gQ+T"X IMS:L5x`%, r9mIf);˵ tjizꯀҸ.)"Qm N868 ]7h˺ |I].ʼ׆Fܨl}%va)7hJT&%w#Z|B]{Cbb,߸ضc'obƍq1|D<>_t]|Bmm$V4+S&iMC]XONesڮ0/g>]6$zX\1 mF_Nx.Os1}K9ק{];u>g9ܞ -',M^Wl$IwՐjB#_}GUJpk] j$&^RYJ(./g YMThW PXP,_d,Cܧ5H X&Y\ ,Zm}&hӼ>Wr"'_" ӗ3|2ڥԞ";$mlOk)z:wz_'wqMwqK^.xҘXl{[G qIǂ <,&$2-)r{OKK'Lǟ wM TR/%RJ*UTRJ*UTRO[>2ފ ,\>^ޏ%wJn']9=$ǧI~e$9 #% WnL&c{"2'~Glt?0}}#F?$  eA;A41HNI)BwRpQLj$=q42t.a'CϔK5&3Isz].}2O51'^~=1z s3߄ޟE߂oո #݆Qуoǘ!$æc{0~]w8^Ly G _|/&FW_\1ALָrC2R Gv-] )ӲzR.ÐMBRro FLeZI)ə$Zuaΐ5)w_&'w܍e 8z8;aמ/,YXl)|{>gXb9O`ͺ|Ηx1lݾS]7mيܾgzV^m;v1l؈[aǎعs'6oތ^PP'O8M;}4t cj)z4],~q܉w34snu,_nzf\w?{E-ϪjqlS)tJ@ (ґ^BBz}הw5cvuڜn\<^˩6I7ٶnP7\k BOxn 6'G3hk۝py Y:]D܃ eM;ӟ}`5> ѷ}()m]! DݱhҖ}hYV+-&]]T=#?j{-O<=cWPP\Wnbbt<>?Pvܻtg2ާ {W 2xݺ41~B|K߹Ōz,v%%%%K pWRRRRRRRRRRRRRRRRRRUs^e Ï rK7ur W?8tI=_qſnLvyj}%t1={=>YKiكW%#h9և xaF_+~AcחG0>]O?^hro⽿&xI)JF~|s/8_a=cC /C /$/ Y/Ƹ%aK1!|&F| 4%G}IÿQ#W:F _Iþ_!2+DQᚣ"y]o vh2ȓ#R ak>kd>&d%B2 )-ai2m2-jM%Nk::P*34V { ۵JXr.ONIY$ ~toy2  ) z&Ϧz/N40 4u`5Oo7u4sZySRx^<\;0}m)`q=nuu5l6[0}Ww&6Lf ֆ NIpf|_ȩYY9{7gϠ\ƶ1Bzw`?R_cm dڍ[ePIuq$ߗ쒒Iq|2X9͛|ff cʟ_x`; 4={ ?-{g퇁VX?J{D|F}-ΘxIopo Jw !۝΀z%F:ף_34Mm oJu32Ccߧlx{q?கo~M::v zo04AH HMm o|gomQYy94 0g? [[a!v $gfLo .?Јҳ/ҵK}L0ܻvmJ_/WC0}>s $wj|KJJJJJத_&:ŀnobw{1jl z ޣ m p7O^ާ=^F^o~ooĿ> #_ !5w[9iL#Dsk{6F Cv|a 0>|&D,la0.l!yPZk.„Kt/Ƅ6/m IDATBu]{k|_rCCm3;Ô l$KBpt%esRvO}~+55?W^Ž<؝ڬ_X KMZdkywL :a8_Z`pnvl/BMbHb;WҼ1$mPv'k.ll7| m%n &oݏ pp:~P0ʶae[_g#UW`v'fv['ټI v\ץ B/34ۃm6/FJv~<?v3K+]XlNzXpF&l=[$> B~bH(,XW݁)2X[JJJJJத_w^ϩTN.ʼnӗ1ϐw2za&7C/<un^wყbT'=t.Ƅ|nJ$oC`B" "YO`Х [=ly0U9lC3~' z*zS2zʡm;~ގ[LmGɼLׁ;tP6-NOۄ6Fu^gw+jmKil2=>;NW!7/A;m(*.BvN6rZKM QXX!'DAA |q^^@ i ;' ׉hM`zo|7?Ǝ';v24/o|{n93 kP!GnM#9!J [k(/Dm بCڔKM ZWeߝM~VopfwMTV[h?3ri%-1+^ycrB]SGu8yOdyPF<m}2o1Ւ3g _OgNnl*|[m~=n 2) s:3MS7%:r@/Dwzکzڀ$[Ar.ڹLy~1 KJ wK+{Kq pcO+?yZv!˧]G{.]va'?1A ~vg|0Pە~)]IIIIIIIIIIIIIIIIIIV5ht*Ӄ;w f|;GWZ-pF[t}cyk,Ą0q2LXȈbN'g ,q1ydFcp .4 v;qܰg-SZ :,%ha;iP_Ruk7AHҐd!10ӚLx[k@vt8rlh9ɉ!i),kXټ>!b܈67!izS"Z'S$s1zL _/eP;-=)XgPLC*Q3n$ ]NkPsҺ8rluDŽn$on9Qt_E 3S(ηekEr{Ir…rnΔp/t \ ^ɓ'q)\|p,s8lp쨫c %5/=-;c1opc0G5Hf{. :z'ms*w{> 82kN6H$6R9-!Jtg_K\O~6 || ~VG:v!Jc awyQqۏ0PsG%?=ۂ̀{Kapmmwh=fPawoHۛ'?YCMϙ})0wmU!7؆wo-jj8._X(wݰSf&H]8PSy'*mnRG[@w/nyh[w9`}h\9_(+>y5ݥ,Ν;7pOp;FJ}?)]/޲N+?m{Iy@+/;tC#W~wK6qKk&{x̏'P\RM'v(]IIIIܕk^ؠZ7j{Sf|~{=Ky<׫il՗ܯYsϽy < !JK0i DE ǴI2YN| N؁cfzM3ȸ}XӓF\g1ロHN9aA@7Cft'YKbÀZXUU7A?yqahؼu nܺWė+C|*n޾ӧ"n*qyr8_ܜ< PEܺu 墠>4V n߹L:7|~x܀{%4^WW@`Ҽ vg/ Y=kwc]hp]'2ۀ.<>fVʻ5 Kylg;ݴ)t$4Twᩇq::~PZ΂ŏ+% JoX[k lz`w$uc`xdޗNpo*o.?3 UTnwpמ;jCqq),- ;2^Ey(,(EEy SKйlgW+TG>,\ Br~/-‚*::Y.,(uGE_wo˲\ZRkWoZ y~tK pZWW3D;65Vpow+?N׷W}ǮڛoG*k9 m{?K%;*]IIII鏐ܕk A746uh@Ņo`U{#€WW$%t<#?xwr?gt} =20XLX :4 aA7"ٌ9v`QOH{韝3b(W!f׈ IR0}THcX348q17r'f&07GY#mņp:9!bG}Pa E' [0m+SF=qG$ӱ.Gl7jLz _N߁cS۫i_  Ib }I~~ +gҩ ;|SG0`R<^=>;39Nf` *?9u﨟rM?ӏ`iA:_;zBs TonzmB('g?$s ԿtjӴt{y5?C 5;U/fJTD~t=ǬĂY[qd9 ΰiq"P77͛7qyܸqUU]x{ދ~˗Q\Z . idfe˺*"pqQpv6rVQ[ԟZ-^ZZ TUWд ՖJ8vu>^Iq\"{{wGCZ!F-9I\ (N? {[Px}]krԖ¼okv!ø 6 .'iN$!za\mӦ L> at:zyd%=^2,$Z~@Τm>?l=輶# ]oã=Mڠ'h5l$okKTJ;l5탃uri6*~[s=` z09YE]*;쵴u&>@J8lVK9 30nђ2eH"zdZ[WQ^M#q;U5.͹Oj7kjR#-.-}sj,6IWcrí[Yu.Q=enUEu-/@II)Zz.ۏr.ߡc-@޽R唈shAuP 丌dus= z^wpJ&]2ܿW"= (_c UTdݹ#!;$ cnD%홙Y!JJ$͝ݻ9\6ϵ{Izv{ ӵsR]c!w[Z'g n)[qQ:kFʿ zo 3[M*~ɩo苿tʏ7ݵ[qK%ޖu{ݺ{gKØ1X-r`w)ݨw%%%%'/+)))))))))))))))))))fˀ{#P_8de##c;ƌŠWEgWн@tt]{E ކBp. 39~I_!*c=ArOћ0?Gl\x?ᄍ3Ƭ;ty9> Ǽo\t߯K.#y1̝FN6Y-mD^C)>>{ܷX> ɰTwS" +?GI;٤ ̍;cy$3>+4,F b>l^v?0u٫ W2$޵Yط. ;aHw ~Gx:GOtofat;D’)=1JSKz!$IW ?kLغy~9[3|qb>$qzH QOMOkc3H'seIHN\B}>a;qDyqTC4nL31\>b-'F|7; s2tFS hmBxcCW1B숯iz9 %9NHz.nÝ.6>)ffx**V]R+%ٲZM{u1@l U 'zP3') 1rTasu͒qTZ V紵}mBfAyg[L:9zeA)-a߶RjpW55u5Y ml7`*VWWVqqQ%J-❝ue5(- n! -()Aa~~ꥻ,zjK;Q2 M<8._3'(,{Tos8J/ْٗ$^XRwN83e>.N,gnʻW$u1π pgqm:* s囸~O j\pU`u;'?\ߝ}Xl^n*|n޸+3t] w`z\\_T)sT-"/ wnl\I|ӵ˧ۂwd!+OnEU(+Ce)몃ƅjX-.V3n=};r dP :t ETN}D g #/I}b hG_>0vZ;bTns&qRşh_~Sl{{uMB9;Y~g3]{/]ZI9;_B$]>_ūfcPJAPwதw%%%%%%%%%%%%%%%%%%%%vpWj'8;}n={A4e?޵ʀ_ww#QX|҂6$Is߄ƏkJG"ix2MۍK`W 4(af,#Rgp|{%!=>t S%%>zjܓg?`k׉KWƲ)?c=caU3a~H3?~L]/`i+霮¼mع:v'֥|^l]|{SspxC!S#.$Y<9gł=rp>rEӏH܉aح9f3\Oz$f̍ډyq{0L}gSs"wbN5qF{%ڟ9[I.>\K@o Q֐{vYqIcr5FtNtg\^` 4 IDATt6GsHypy8~F@vݹ-L\Q^I q> WVҲO TU$Zss9;gk$I>R9پv4^@br'fsW.};.=o#ɞp7Hr#ॿ-:lNeߝ6N |^蘽 S6'վо&ݏr@ڦݗVzXwe pv;vIx[o)ܻux ={pZ@_&~}|6+|%ܕ)]IIIIIIIIIIIIIIIIIIIIp3g^]]#lv.\U08t,z={ phg?k~AѥۋxKx晁|v 舕`4ćۀpg} IadGyv$D\tF,_lÂ4-0{&{qCpO86$E! _9qe _6v_:M 3FdNeaO ˸CDžs%wcqp#{=:_C9>E 0Ni߈yѻEt1jYS0MxYN.T)L=Iҹ܈?:SGdHC,m>Hu1.%5s|Zw~oa "~NVŭ_K~50qIsHTo j3>exvl%[߲-=ƺi[ wWeGZoISn |Y=J780u^zfHmζ[aدe+?ʳ- p dee*qbWA(G]A..*E~^G9[(,(\*m+ ӴnP.Yp]9% sm6[p E8~^ʼn&ΰx޽Al^CJK*"%%(+SKK+$^"K˥kmUaVU ^iIJP/mrmCs /i:Z)8'u^]U#Zᥩ[O/PvlR*9nC\KmO΃i@PUn`M60xмVW/^gH=hZy&2l'Ob/^A{SۃѻtŀKtt^B r_ij]/Ͼ.]@__ޟ ]CZv|Z$'d#x>M@oE40?~;]RyVl^+ž;XQ| SGrjjw$G^C4r:ͧa1?':KbxxM2!5s:l'᳘MX:u'VޏfE:dw>_Mۏ3bo1wv,߃䏏c嬣XTI:;;joܟʾSGdH99 }ʹm;A3<7tOs~,t_l>i0@Np_أF9U_0 Z'H{,կ99/ui;)vh6CR侉:"rR;w6ER{{u 7vѡtNFƂp]@SƐs.\{{f׀-WQ5ݥA.=AqS]v4Ap؃LnXn; ɶw&Au?*`y poԎ?00Wz'^3dk-r]Ndli\)ùl.g3> pWn9PJï^w2{yƶdqVp6i q3vMCR9YmN7<9cޥ'k޼2@t3毤hҒPb h;[}v{Ht>+>Ӏ_8w$roQwep/iCpx[KמK^n=^@^/OWu}0s9%oM/dW!+)))))))))))))))))))ZF=Gy]ǬOBEޯH )]j/iBϋ"繁4}}F/Re pg7#h3Ω<0{ܷr>lm,$ob2$%gx~"8/vDI^E5|\q<;$q>>gW8:.D˲yH`o!圥Q:4zO?nڗv蠾Gv]BhO@Xhr;D&PaD$Td(ޡC 3,Nse)2['S*d'0 4 s_{>VuM:^[[+`mii- ;=MAdgg477s9ټ5`wK`}v]`R _~}k|? ?royo9_anCuz_ C2'4|cgmZGӵ:nhh{_K0~@,=w/J6syv7֛}}ȃm@瑧_O2׼ ojM_ }_pg0_ͭfӹs\C=WG[i0W2eN[#m+;ہ۟<^cܛ pWVԢF$<׽K p7R {ރз &ͿcfLU&+)))))))))))))))))))Mnvӌ?ÇBddlر 0{uc$܃:ln^䁚{C/ȶ .@}C?=l FAl M%#&dbE;$M7CeO%cQj|a, wѶ͘F4,SGa ̝ _M_N݋E%}ꈵPkpZ2N@c O3(pxiP9;1|y{$''$FI~ )C~yrog 4)'rzz SmzO3Pt~ol>328}k@$DZm 1\粓)Td>r"_ks } Ncp[1b?'sۉ7Ys$El#9l^SGn11T:<2Kt5)I|qʪU8}g !yIz~ג^Z>.=Q |T[G_ ` ˵7蠢x"]&:+W۸s 2~y:u gϞב't,szg;`<\'o~p)ـ : NfԵk pocs9Or[yO/{(ZhXæ/(c| 6Cf(+oǹ~#mݡs*[OL7ӿj￀'ky@z$Mj=>V﫽}ktxc#ǀrnĮ1ǫϛ2FC}dt(pk ivs*.;'$ >CuyySx2Ryh9{V]~z8B-QP+-v  1f<[Kpt>=79{KgA` &{hx|,W/gR]Ah5Sp!+)))))))))))))))))))u #Jף)sƛAoWУ7'&kuSܹɃthDמȯSB?oGab1јij>؃cц^O?#>i6& ;w5窓S{:0 ]=|V& 6%6|~80kIu:IEG 4N 46n<q.=U=^?6qJj7" 7C}f# ˗/ ~Uܸqeee3)~\7 @{Ν0y+ezpgP;[qq1V; lhͿ&{ZL eϋ}2S#Biߚ[޷rsHae {Gk_\._+1Rεwp&:4jzm'y{y^R^-y > w v4\{v|<@Kwo~y7\ko#F\6?l5nX**JwK3 lnتm[4uB0 O}p^+vs;?Z;ert?^iq2Coe#mf{pvg!m po72zdu^6^zغGdginj-ήHJJJJJJJJJJJJJJJJJJJJ r;ݸx8::zѭKO uU/n=@_ ~ć380f$Bތ=;^y~@ csy)|o5'#zH2[ؐdھZũdS2evlH R]4zoDM  \ (9]OdO5Tf.:n'nmaZw[:~o{xq#g vp/kf!1p@ȱi$N|k3O٢_ b ¾#vcfNG0MgGĴyjL ! ]4lfQ? ؽ1L>G;̋>ܦ zqQ,| ⎓OкXw|Kbbig4ǝ)gb{7V8w < ӡź03-85XOAx.Ay?v7vA筗W檃᧲>u^O}$XP6C|ΰÇ8u#wއRF-ISu$3  nXXfH0 uNqgun^ޏ󼴭8^Ս/|4AM)ml7 mI0i {_w8s+LĐ~ 2  ^v^.w>zauu2~^Ftm/Ky Ph=KUӳB;ft 8d{t6e{eaⅵڃJ'W^Vr2 PWKbvl*~ =fgm֪{ȹ[R+no n:wnW _o+p{^\O5۔޿[x_p4HE}ȃதGIJJJJJJJJJJJJJJJJJJJJfȽ dϏR[|W^{=z&{>h:P5ybS3seܻx =A{oE"2t!bW".S9)a--lQ oBbf$oB{)|5btqT!id^^+NTv~NB߄[U 'kIAGl-bm1ef=)[LSi#vQ?މF¬f@ލ(?b{d;>S{q ?4}cNϐ s-|_&ò)OXs7ϔ]@p7hˉZR]]-5(/BeY *kPYaAe().GyVXmzԣ5(_ kO6Ń]7PZT*ަwwB\^fQkNdgv7@X^Pwq`:e^;8guq:C|os6}yxٜXm9? pW~b;=.Lᐴl foԃ6bfw8Y'[|t:/͐?'T*K$͜Az>ؾ IDATڨ(sJ *QVlAuC<_IY.㒲Y.+ Y.@iI5jknu9w>{\rn ?%Nr9ߣw3Kߵ7]ee 8ω6EERhKY8,~sgOݤwzkqU{ G*P_;eq%7|\<{hoѶ{i?y/f\*swn0^ pB_*k\ rxfIswaNw'(]YY܋iĨ1`x[/<׽{ }9w#0v9C.x4i0FJJJJJJதԁ̀{գڊN`'AnBdJm7=.k4{гx;x1:Wc·cZ'~k S}Kަ{G”at'f){bF$El1c6U ߊiy>b>f=-G$?`ݘ1rf-8aGY1?Ҵ)Q\3'v1{?ӱ1tml 4C|Q|>(L/?>ya|1(M:y0? cᘓXsB'ŋȑSX8$͟3e/OebY̯*ƜɋΑR _FE/u/6\:rshiyYdmYGivMXܦϴtN˚4ݬm@= /;Q(Ow#ր\(F2^vQQ օs;nf#/`yW!\֢=u+ȺSLkqUrq^%g֫ pWo܍f#  ,igP%nxФĜnnh[BΨ׼ϖ9(n=Ÿ冀9{ڰw~>4V;CGmnwXk < F68mB\v7l5vZY~N8Iw;b2Wa׀x Ku--ݛp/H]^b*r% QV\r;+WpF.8RV/mK2zxAm zYVe rrYRTqyA5@aARگ8w ;#O(-wwo`2޺8G/|\̔ Y8|NJl:|ϐ{MMPܜb9W.{ϯc}Xf':ATG9v} 6ۃ;R?J踪pJN\?uޕsqyڿ[e8{&-r).kT~cotԧ,Ftom`A@ü+pImV[ pWVVCjmR|xu7)nY޽^Wѧ-<]N@Mo2yMkhDc7@JJJJJதԁ̀\m:/{)uȽ[ѳkoxш3>܈O&ƜCA߇q?>|1>TDz_t:ϛun\q}>6̏?saK6ffig w2̙sz5(-Ldgn ^1._Ƶ, /ϭgg38}@tG>K,T;b X~MQ4Av+Kȹ[ ~-!.2^)rJpu=sE@rx/ׯd{4Ky}8:2ҿҟ[Jr**vTW;!cW[fu%E/+}ePh}=~;#/\zWj< tsZՋYȽ[;e(_ k:ِ]| ʋ _pPO8pf~y;6;N( s{@ ww9AS)]YYn/{X_@^? M{/kIqb$lܰK񳾾_G~WWѣ =5]7=]t:#ȭwc`a >H2G>G0a&ĂIa*0f.0y1ձ$$2{KbNip{i%՛!w}Vwkf"c e a쨳\s= 9!]Oo>&є=al 6E?/@5 [8>A7K..R`pEm/l]Vԭ 7mnV Kd?\kq>/~m-ws@wEn>(AyVDžV^sY&`Խqx੭r1hw8aEEU5rs_ P,'ڬNIϭ C|N̂ +()FEi$VVQ]EUQpE(-ДSl9m*iW zJm u3k}2]e{Wqyy1Et1Չ8il$nl@51Bظ'qÀzAPJ6|~[+!18z}>j Ip8 h`MMap":1U}ƽ/Ǣ43Iq0agZN`p835Wƣ=mAr~@nu7$GVw93˩mAn_3"i#F6\.7O:abxȊ07 4mVuX0@wbdž@*>GkՆ# [wcG#S&/+C:\8PxO(.6rz} y7e00m _lPjq1pc?oIN<v#Ǧ;3nucY+SÓjB[KТW׀^+^W!vJnyJϔTXڮbηi#- _A>N~xJ:. ΝmAsS>gD,٥>Nr>T/Oa}^U'>l[ ҂wOM!M;e<.H$pD"H$D"H$D95y:>>9 Íxkn݊k`٪ g //pgsz%aO˟o{y{JphO9Uʕ\BZ]? *ݧQvrEžkB);L5H '@$hNzx1=2D(A)Ֆ͉u-hlb`}S[(:۬jjnG^W6 >'88Sӄ PM1ܩ舃;=%wg݃._9<98ٞ3 y]!)qdxo$_ZO =Or:͋Nw9^ pןY|Qs$b7B,CpGxsP`?c5dg/[KZoӟ5W8zw=t'wKVtb ;zrz "g=X&,Yf}Qjܰt]+}i gݬAy݆|;z(J ]' H$pD"H$D"H$D9 K.v㉧_Ŀ6ܸV\oV,p ᩞfw a_ UǩF2x 2TW3H\9 .+p?t''Pt8@ =',Sɕ4ԲuȽNg.CqxY5=Ϯ@2N2E"uGsc7r { ^+|5pny-n _u=u=> y:kG4I2A Gp'Մg'xTWn TgLpS/Z\U *`{j ;5%9u0mC) N'~;u{ W$#ॎa$$Xt:Шw<:ɩ^߀urDO)O" \|qx!58;'X9@*TUQ`ޘqǭ"ۭ>Xv0 axUqw:|njOqxTAu/iP>O-`w˵z<&F4R-57;裗L$:C=7b>?EDG?I1=Lϙg@uߟOڀM$F}0V8aTu~DBQg Sr$_>WwbNOWãNj/?? ܾh*ӒU9+o["k6~;۟sYI==]wH$}]$D"H$D"H$̋'0xZ~a;CϜΐKc@yr^{dsDDw?4;䞄Skv}h8߂ښޚԭ^;.6tˊaw106g| /'NKZ6m`}6t, g-.ݩ_8uD[kbpNM&V&\zSgJQ&;uqB>Au!Σ+FꉙXRɪZrĈTS=H)acDpxgr8=ݳez}R= /pw{p;A⫝pn$wX~nXRWᆬXlunBnf\Vlƪ[]9{qx}NbS9H$DW[D"H$D"H$D"ќyjp'?\Y+ p߀+t}XpW^nƢ[,#84 wV{\pds CjCp MV9rыs 7z`o‡iKj"=j4J`'n|j cxN<~_9#j٣Cgc-xj< >~b//<Ҁwh3ËlBѮ2u2ܫr%݅_o:>P2t_{'PH#A^N)v,' 82쫃h !5O) 2& 2IO]|vnfVmGU;565Ս8}ehkeЉa/ep v]uF \7ܙvm?/h %gq c A$\(Z2 Hg+pJ|N):osBMF{X7Z7_'>A~ v{<4SuVuW 'QZ|U͸p_-'PVR!ò nppT@G0@7RK$qrmhiBjwʝCW]cpK̓iu ې->\J IDAT)m>Ew;)[z`{mF"hjhs-z{A_$1 Gxd8B3]'orh]4^2:$eQ}9%Avؘ״tH 4 4 j[-Tr3J8Ӡ$lS0GCst /1ó%sS4 *X,w;;q [jaJ,.wl`x#kW߂?^L$E"Ht%H$D"H$D"H$ͩGs8_}sn-XvV|ـk +߰Fܰdގnl19(!L>kZ?>>6[th#nXNGQ ?ٍg9ggUA^|x/v?މlH㽣(˃W܈Ns9xu_^U^RW]ć꼎ݧSCPѻ_` ~kgܚp/ʩ7ڻ v@}rUS#{KO" #2# @ \4h|'gł '>1>pkIfJݍ 0N;ʙ p'5B, Q ᳏Ow [ w0sL+j?,FA=8[Ʃӭ|u;QUրG4Np'6dΔ`χVZ => wzp~Fp:ф2UeN2FOαs .FK ; 8Sutt 9wFzuWp'dgs1tiYbD9T{=ޮA :Pj탰YT@ >G؃^;Cn @ǨjG%j}/:F9A0kKKۈ#:8?6q1ЯRm.KBσi^>_mt6o umqH#zȧ~#Hp:u|muMOjY(@ǦxC:^ >PzNCo^߬k..wxy *Á\r%TTT^7gQs][oxz<O_cUx5xU8vc=SCwϪkqj =Uxj=5xϢhg +PcX`nՂ¯B^}('kkU XL׾ ju)P4֛;EjO<M#  N D46HlH 9OL qG]yQ72P2G:9x"{8"p6ؠk8X 08pZj_1U9OS<<(ޣeW늨곦P4]H6CXm.* r9ƈR˘ NN@dM} |m64+PήN-c~iϚZOm6?hH3s0(h4}>U@ Ny$R"o(ps-a\y z1hձp_p89^:K߂+7 eW%CusBӽ O>T>ێO^:g}DpH;_bN> W!?'S*z-C9 /g9R(UʻJP4ej }y039ug;Ch!{NMk3 ]=+^pr- URkn.GNAlMb<:xl $A 0`x|!4\Nn/xƩfr;h]xTvj#S2{j:lW|A_NGrJhÃ1[S t6 Qc&`tR0Gϭ1V|1vULwaoQW}}4M6# hLOehU:39z=l< Q>Y3~3靣hFk([u_Cka~NX{':` gm&>^ͲM ydv5Jk:1m,BP# &qLs4^6;^@; ^@eIs+RL뫌验eT}L: l/Ȯ3\\6{NwV|~a0;Ma" G?bbEgg71fs_@,ãp8\z:6lJf/=5R;񩀻fȄ()%xS'Ƨ8)M ~"@3rG2͑2렮 8þr``GbHZFb v\SS>n܋Е\HF3w̥9 gӏt= 34_<@(z?IOWr"wRc澑ۄgCv-Lux=UϔX$mK<ij qwmr; E=rkFjQ߱ǠeZLzҳ_;?0 S'pHxFHvAc~.'m}h[-B\:sYM=ڐϧ1Oo`Oא:y=~^O#ns%],e; ryPRVWX Xr3nZw+~;p45tW~IpD"$E"H$D"H$D"hN]pŧtPW<)7+VmA-Xb L/^v-U7c k1<PSz<='Zͮtgb9_ ' vBbm'6͎RsY)J@t'Sܓ:p7g},FnIW/pO=4gzr_ 7*q`i}ь&7žI5`<T ـgNi0g~MisP/ 0zp;|Ae~5GGex L*[՟=bk@VSFHL1jbJp7ۇϋq+ܜܮ_;cՊ7(ӵbƮG o H$pD"H$D"H$D95)(;܋ww`aXr _8K/݄7lŦ?/n{(=~E:ۓN A~vPS2.mؿ;+jxjnIq{^;;6S5/pkWR= '4bpB.^<k@[ !A|M\`(޾455M9h$9g:c e u qu>Aޘ0Eʛh ce&;GGTY)8֩f;P.?&1>E"HUKwH$D"H$D"H$Ss'UZHl;>sۏj-:nxIU p_KT96cGsz;Je*A:^cu<%}Nߕ !o{rYJ3 9At9=e>iI\nlcnl*;g&-BhOi / p!œvnW>cz{:=5khpryǀ?-)&''wOx7z4+Hsڱ_TtNcw0L)}=hGL=$;ysBSQp./F,V 绗3#8^,N~_j lT{!^K}&| 8#K?S˃i 0xHx7&yhІ'l^AN7(~pr@QyXRеDBz8 Ή΍!`73M`_7ش=]ڇQtq]i[6^Oφ拝.6pJ^=|I JKjЎ^+w_ǢakBy08`勉Hu-)]r:gUg*s*/}ècМ@3u wtr x'7!s.5kǧF}|)ўֵ>Tڎz;T=k7a =ΐ2AW͸i-?Ϫ΋a"65e\(D"U"H$D"H$D"Ht?NNL KXz ڌejrS |>Su6`x>-#̀śfweϐط`j5 é h`{5/?N^Rf#ITK2)S09:x !t}]N|><`GZY}wm%X><_뚟}; ?;;9J]SuYu|z}:^Sp%Rم_<⹡vS0|4㶧9!>T&8и n`H0X8OSSSNԧ/t@Y@ˆߧ[$S Lm9ylF&gv sd ;؅!X,>9P_߆3gZnBcc>=S߂&b4$nZ6bqV6>or:fJU7t wXbp;[Diq s눛m:AGkJkaS¡IĢ>Oawvb``N׀'8ٜns9!B:shlhBP92D_YiԺAX-ͽ8[a^ =|1VSss;AwuLM:*åѣϫ)CczYV}S^xG?'q''[,Vuuu \4=d &9P ;f;AIipxNaoC@8X'+ÑqhO5}ԫr'`<n>pWQJT2 L'~y;Ժ,4;˸rOp: rKPS>V*3jg{Wܫ }a< p:q W g{E8܊H5}  RRY8 IDAT{$h8j89"РT AdblHXUwKgZfunW]>#;rzWhI3ydWOvXViXp8xxՏ>wuv}}sH۞7c&$O 6v)]XxJA20tZ9Iggj܏^TT4y uwrZF&]ee#:;l>. !¸:>AܝmDmyػվ] y[GO?x!TcRʳkW=èit)}<> mLկݽ< ] MT=8! <'|OQu<α׭b:~Xsġq=jޞc^/1M09ATZu^v/ a)5>ryS9luivջ:+3LNC lZs)A#P u`\O'uJ\{Z'My4tH&:3b;nEls;v{ oZP NڃOk;7sx}y߆n2R jIܫ w,{)qTu/]e8 N9(U=q2GTeNb<~oJ}8>?{*gJc8`v瘟 ,yi9A<0ӱ4l pOivt_0mv~!ЛAzkrR9M~%eT!3%FCDz|xO|v_c$~IRT3^xGӦ\ϘN0;[m@<<(sxb4,"O&GaS L$g2tX.4/a9 }ddN'SG 8Sw7)5!FJ)v080ʣrp<ڋ> a@f^Nŧ҃a'aqta ׏vuTw?\.p $3NNw e7 7݌nj}5\lw:fD":"H$D"H$D"Ht%q܁r_|tw؃X[FE6*oRp_x V/6,7w o[WN{) vD]'p\<9R+ZJF\=h=mAG%hzr ^x,>|G{'Ty{z^Z>t/<ԊjCNNp pJK%&_U}^OZ0[wAvE=+-c=յ vp@qNHO/MqBB_@At^yy%ॄZG@M^G6$>ݮ Ë0r| `a$^@6 @[DųR~?S*:dZF0%dd5}'6\^U^D\v?R;حnjNL (4g MZ,JsLÔM@x01rw41@h:M@7{~Wx do!mD`R7ڇ'DRF 2(Y<'v(I>'3NϿ^>n>tJP7O牶MtPgciTWJӟ *w&~u۝.9p_7hEIY ~Y+a5_& r_jo=̾xBGb%H$C .D"H$D"H$DW)pq80fy4?pӦ`MIܾt/ٌUo7|?ݜ~ W.3QQ EF;mUﵩf"> | >yV}n׿߮}N4@)5f!ep?csk2DMOṽx;{ޡh?>8ڇ[q*{ /= _ z^3's*Cgn3஍c"6e"T q׌ۥ{0;ch'4rtxq!3'IH4#eatΧ Lu|"$wݑn&߇QNRG8:}GI1BϱX܀)-^}t8|:,# Orkh^_>N#Zx>F 9󳦱p'Tz3OZ>u\.p_>~_Rzo_X|-,_EY W_5}iVf}ziJm!(j*ϫgԻ|J'u .DID"H$D"H$D"71 Op;9}Ͻ~X6q+Vۊk`٪Z*df6g/鍜Np- }-Xտoo!qNR?š;G]7F"Э]8#<BOU}ֆQX0X;a:ṡ!';5̰Ծ ]j-hZK  .=p9?:4T3< .$i?v`40,Qs$2@ i:ثQkF YwJq j~ɸGi ݥ gcXz,>8րw]ؿĀ$sX&Zv!NS S'QV%jY4:䭟G*ns:¸3Mfn}3ln{ry3B l$n^슌טW T.-\tf*FS82͗&/P; RgE?Xh8' qz=Ȧa Y8k=jޅQXm<=ğiǢ^o= F,v'm#n`W8|\ߡ=1klYBx>?'wfMGܫü)Y:i9s"|(ttv==lXeW#yœ݋iJ`dD=GGrcŸzm2el0lGOq$uyD>n" w{*:7f`Gq/ľ;f{y]K@wX{ȣ;?Ow|~,co~])vyv'r`z0$^i" o/ rAP>^w·e1n=m=̯yxyt4\M=3]O/Mwiy6_ ))=)h_ɠ8%MH-׷6LT,wV Ny}w);p䮤Sr +UVTGƑğNrB LNLq-%E>6:0C<:ݍa+Flj:ÏWp< ;<ĝ?RcXlFp.N>Q9`4C80Ùd_&Nml:>;:-8vrahˠ{byt[B S{X?U Gp'~XV!wwбY3ೕ= ,޿4/p+i wNJ!x|#X,JA+>?u2p_tn4kWoĆ[q={ч_z8]$DץpD"H$D"H$D/I COso}`۱zݷbV,_} ڊ>'=ݴlCpڀK7`MX6a7nm+;~-y9]\t"}R <=(TF1cۊRe~L-ۿvy}iV^jD^f@j:|~_mo8o{U+ux}3%*暮f|4W03<^4Y\L!Y ûrgZovfr‘;kGf5x^OS\|ְ̗Uy'S)&VPxjo%=X'VIsxZMUQj!Np'p`b|)= 6A_No#薖/txD/sdz@@8 # v4lKb G\jIuOMrۍޖe)K$+ꞤG>$&#.м+ܻ#\iң"|_\-͑Hhgv }];+4㼮ߡwb-xq[pCJ|crӒKMx^0{֪^t5.[, S5yӭATQƌoqE"HtJwH$D"H$D"H$e&bspT50n~XsZedۯ5/ڔW,ބekqd݇pOTvJgp4 R >E{QSm[.RskԴyUO甒NV*rW/-AdBUAE.dwϔ轳FեVS3(Eág>'Ç(U$|x}Ķyݴm>jZmZ]x:;jaׂj_^uP˼a)^F#6wn@m IDATFGs ݇~NKS2T9{|&==@#`PbTB#s@ MGeW ~ŀzg.}:NSs êeݐŐ7ƀ* lv?*:x.<$pD"u)E"H$D"H$D"K]0>> _0.<[o)}jr<qA;A&cF\7}i}jٲ Xt#V,ފ7|7.1~evvpn Dر&dӜod FjLՑ` 6`LQ PABwizI}h${_ǧ9sF9}#_a9 \C) $8n{%"G.FRD"JpBT.y7KL SwsByH~`Ʃy|cT!5CYԨr:)e 9-U2ŔK95L,+K}iI&ZJ)q*i5F*E@5$"q hx R~HoBU(^_Ԃ =%smpO%u&@, >Nk'IlFT a@4璨epSYv=6ݝvߝ-w+r<5x)K-٥d/mn)~\:SDaUI;RkZPMBbMzA"ruZ|``mxp![;$euz0oXYK_CH:-^+Ew_Vp _[zW4+uX:_yW'D||$E}OJȲbqd5;5BY,穥 ^쒿ːQ* $T %>]s T.Ӫ"11PG^8^ UG oS&[a q8B-Ft0Nns(7mJ*6崟2lhHi2ړ!!U9ң~X S"%'[֖"v6di.9=;~b.NH=}lږ]Tb: 6'Pw`>9ARlwzD<)ёQ8G1njb19$]^!5EcQVd%hkkLF ׷ LhmDi}^5W"kkYP]U*#(/DNFU^ L:+Z[ =hoBC]:Z;>?$e40my9YtIs2'){:y Zp?{mPOC,3 w5&9;sy~A}x [f--Gp9|yгp8",s8p8p8- V k0? ^,LF876 |O|w_~i}ދ'Xpgܵ,3 4Ӱg-]87S)ʂ ,'}r\%,l ~w7I}p8/vXpp8p8p8y`Nַ ӟu!$lxj_{y {# YU uT\P&܋\u"QG $pUd#}S6>>pWkZ|q!+9)$HIY̋#SyTӼ$p7ض"]s{B1/i#[ ptk\~9<&gvUy8P KprGժ\2ɑ-$:8؎ZދqlkNmp8 ǶT2mq$ !C^MN x =>YpO-pr_n]D_T%nH)XJfwo4aa6(5:<3.dHN'yz}*,2Oz><<,e3wi8nQ1C i&j8ͷ[:Q:Ǡ6bO+>/? V7zN>(ޒy,3s'KmܟNpQIp : 0|4$vmXb , RvI2_ 3q=8pBWbu_\*:p8!,s8p8p8<ʰŝ4'U[kkE`Cp_ AAo?ĪeoƎDb4I(H HSHC_#}M\jAKFUcCgbh@Ae>mVmqhWvD܂T @ gv⪺g{_oG|Xs{pvo9>KepwNuʥv\JxOJJOj|ւ['zR9}=vWԇ:u>6h]58%4GJZ;mr no܋.l$o,FWfDv-FtuvcX00AKyM-Ԛa Z!_&] n}uFpwLj#mN|Hqvy#6GNҺS,(%>[$Ӷ.]~Mbfwy4>7ܭS?79J,m"˟= |o@N|~6, H}t> >@APa\b`9~O܂btv?r82wp8p8ÙxwhFM]3vOKp_%kx-BHnՇ.wۗJ:,\: ?3 ޽Ęc;.Bá<)HW{{tbn.B] -V;-nBf mcTervxKpOa|Z HZz#>W!cs /ߓk.{N\N~OIJZbmbr>QӄG=}Ցn1'WؖRI1~aoNl,Ȃ{KpALoM7pH:aьa>&\bsdbhHv)wvv!:;7~tu mhknàoԙP_ۈftNbFqiח;[u@t"JRûf1$uܝRp'qy*>f6 Owiw5L߮AFtgipכ0*r0e`0. [q7H[p_- AsCaqJ_cxT͠#1K;ap8p8p!n0Ɖ3y@ҵRp ['wՓp4- ] zIRn_iq_ ,Z?#ogp Rb nɽj\)bb9wqv_>򮴢 g0:еۡ3m&Tf 8 G?(x:^Û pn"Ğ$URrdC#2\?*?c8a)N(IĶ8>_M8%ֿnKqJjZcۊe;7E-Qضgv>MEH(Gm8W2Ip/-{KO!}G)L+_kkf6CGr8Ҽ 5"bB4`pcLj]b{ss H@]]={Ӈޞ~tI齥 CRmknG{K;IJn)PzfO!YpgS%[ptwIuK3>t2yfMi4;dsvܭișS Abp?o龤MMM?ޞg+ wXZiw1fabڀر~& nυ}Mp@bB=r{KlۗIB#lq8pign6<up8/xXpp8p8p8yw}1Q,Ķa#d,]C_r -[ ?4K} ~~1 ;7^ErL6R8%jU)4)nYr9TG Elw9*Faly,Ð-.eh:+( jp|q)j룋#㻳 tk0fNk嘂ldܙ~UpWY o>ϋd^O9h4jτ8y1<"uF)u&h5b&RJQR9<_ ph[R2dq,oXJ>wutiQ{^G"JzQ. pS$'I4)Q ~"< KF}E/1O͗呻vDZ+Iƴ+ M:nIH,$zmhllB[k;t: CjP0tfI(z1ދvMcOv j6I:ۺ#F]MĶ]lАl!,_[|gw76 }`wܿlB50̼ӯAwC5KXTno7!{D=%/)/_o-M~ÑYpp8K9p8p8g-PgI[;,Y+܃OW"5W;O"Ai\:X"a) nʑ:u"o!!n >qx {ٴ(MSI*)DR<7$q;Mpޏ!r=} ^nL)]Q]IB,Y!+3K.$y755ѣGRMx>Q3zPZZ.Úz?jA]m KQ_׌^ܿW4=jCY}6vU/Af4ebGh"'-C;d@ԉvy֦V#Çuevnp}6oдto3ݽ ,>QpYpgfFW7 '`5X,l$%v?`q}Kl'MCVHV|qkw>1Ar[{QC6m0.a6>6$6YÂ;3PQQr\w$.ENtw]B5k} jҍ!1uZ!5>NB;5>lfY2doMpX vo-oߧuϠt>( y9‚;p8p8<Z! 6gHР!g FV94D c4X`CݰQ ʸ^gfM|Rf!mK,F,8ᴍnssi}K-fEbZL'*gzc{{?߼>KV>K+|mOUpw&wFa?u=C8s"~@@R`a^Y8w]{`THr> zf&HD8A+k!vo)qyH\.-aKZ $VOmN-Bb}1R61b,&˕6\iqųjv#I#ӨC{ᔶu_$Ɛ MR{ SyW,DbT!^1ry*[˒8:GE|O˳Ŷl~STYblA#}'f LOL"= 5wN|)rG+h\^C^M|?iGbː!qo,A U$=ݻWj^Y; لNf;zQSۄ6tsnPP[قa8שG]u;jөB7<6-V }a3ub~3rs,1)IwT˫[bӴz?d᫹W#Y,Q cT!;A |h &E h${<-Ouwjw; ;|֢-a? ̃7CWҰv -φ CS[Cߒ IZۃJHnWW_T+~g=}Սwi+F1W{;p8/CXpp8p8p81ޒ@O/~= akx B̋>>'}Kr'Pl%!?ǯ؈^Bbt&baڽ=B"COܕDU IHF*#n!u3 ]u\2YHɓ{JLw"''&W /-ErUX.Egh\NG+Sptk&W~q=yйr`WrPfܞ |RXOߔ'q:fF3|:<2p|{N|@,ŊɔpJ@?zM e-%b$vq qdX.;=qNV"(yW1jqrGW>/ >W~P ꍅDsÒ^ cpZf1nHnw` m(+Fuek؃!^#*+Ps С ExXՊ4SG׆.1 N+fTWբQJ$˂;3Mp'i aM\ʷ$KԲn;dl%ŵ?g6HPwK4=MlZݽ> fU>Ă;0 ݽhnƶ CvwSJI֮~F*-]x۹p8/IXpp8p8p8>ܽ%wf'J}A!( Og+:p/X~-r n!)|)'{KBI܂{ʩigv|(srGԍh_8B[s{*r)Z,xV?>KnV(6uq5}ɦyH<gvTMi\[$g"!&Ϋ Pr Ny`F6 vM }hj&47u-]l@GK?ZR߅ƺI_iCG ZЃ:5bz@Ò~X bۖv@3xڬYpg }6xm nQu N0S4t:F+}ւoEc߿?$cwHAժ"EI=UyRNBŗGλHr_F.]C$tW\MmBeH\(}ɾ%w!=5.[f2>م:ɭ8N*Z)\Nz p|G'yj\YJJqp.%TXv~o9>Dko; q ዴz)}wNu+NS.p37+ X+>MǡFd]/V_Be.e+)\9։}5 px'>S7jpt/.$ѿX#xRvOʔ(M9RK^JytFHݛ8~vFhVE : C: a4aZ՘a`X|2 1uV9Fa3?9pLηZF?) ӱ$2ܙoBp}&ݻd2'vmrw%Vt81:2爼7InANN)u ,3g}hHÂ;0 ONr< -0K%LIj_d$locvtGYnp8K9p8p8ff}D,W굻?^ $O[܃_EhZ,Xe~?;?ۊؿAM$Eg UuT=)1HMp|w6.(_Ї<#j (7{]O>\Vԇ$Pf 2qd[.J)NWygVH=l/Ncx~dXlRqE'wHćr$\SXKǢ[p(58.KߒIL'I?-yNOy"ysh=9}LKi]:WjFM9\kprG|7VڮXΣid["{_méb[r]r{sܓ#s'b =%ﭨ|)#خyH`0 ՁnIZ4h4h`Bo#0m n1:$f F%;`dAoC)QSfM*^z-$ [lpP{ݩb<ӵQFp'iNne:C j2D#b]1$]3Gz{P#|vlRtWYrg`0 Y|n9npgaf!Ez# ;}TUcxOߖB`Q $/CHr &NM+~agFzp8-,s8p8p8s/ݍFgEA|+ ?yw [?.ؾƅKrZ-b{jtOf-?wAKo'D [@"pBE9g#9&)|Gwf2}ց[(у[}ُcDǝ8vq[w>VPǛ@K&] c[ }XpQ{઺3M^IH~zgl3O۔CqrS̮ ـ|R/3#V$ET8*In-t 9Hʐ@<#b|~dK<. ט)slj/s̖m1b̒vp)_i˓mI\3z ,/=wzRn{T΄Ir'=%"Oi~b[pqX!m0;0;0nWFVj_CʶFV6Sb5Q&= b}1Nۧijl&a.e*+lp8= Saɗ]=MuRT^nhhmFMu=*ʫp -`==Ạ^ 9 axn :;؉646E[;d/<)o_ t{ z^~&|_w\0{nīk^bI)EneAGn" %v7%e \.Xb` $#.C\vGnO;12y‚;p8p8<׸ǮIlAv%~`7Nr ׹pϛg۟*B?F^ſ}\Ek$"iV n"):q\:]O qC^G\?^SK8'w<->ieUlIR{3c|0]0ONQ93gkZ)`3)"G̛~0Χ栾B ]vf#lV&_Ip`~mfڭ8mN1PDwE`ں>la^r8- d2+jqw7NJóu`_Ғq.}>zEhllC}} *+kQ]}Z)W>xG[QRxe3UQQ嵸+PVRUM7㍊٘[||o~JXV.d'!Ygگ/a7ޓs%{n[$.}$F 7p:1eYladb [l6 Q#ۭN)n6i|#[d'!W(// 4Klw<[n^Nފn6 ދ5 -͝rއV)unE] ۭEw:ĸ8G DK-,3s2T'cAoavG5ūx?C@}aS+! X!k|kXQY^tmp^p8p8p85Oܩ7kThfT4=/A5&vjd_WjkB< O$w +(Kciٺ?ۇ"!*C7H[R$,x)q<_qz_!N-)-%#+)Bs&;.v"CrT$ٓ咜v{S}Op[=g O^_RD8>3 Bnʽ2~LboLܹR&=$-pX[w'aIɖ&':++,F&[> !6 wItxjkkN>.wh4.#%v"kԊ}a{< 4jtr1P3mrZ7a(>KZ:zE6Wk7V s'\ea}zfU?(~kYpgf>(,TZH)^ PDy--K=$p5%-tv as;p^°p8p8p853 h;ӯǙsWF lk*F Uw_̫> >0J,\Xa_??E"o,$"9< 7(: #n#):1b]ċr[lWPv"ѫ}]a:}bk{*CrTȌ9Hɳ>/Tg̹9=VMSק< LLߜlr4<=z*=}^D=1OvN(l fb: ! z;b5^-t-+b}sPOYpgpq.\jl7 >zB 6徔-M&׽9~_"?*Ȉ<b[Y,i;N>6r|A/= t,xR1 73| FkP r; <{_X(~Ilw0W=p``%%!AX*O߰u.@3lvἤap8p8pkf'c`W" [+%5X^J//XKv+B#,`-V/~EīHFu5H?1I< P 6faJlRPikDRt$QEHTq{;i:IsքsyV{UӉӐ3:5|"gnT6{/"˧Nr{|$I5d@}ݢnͭ6,ʼn>-ZP[݌NԉaEI*+jqZW0}6]Np΂;3y-|&H%ŝwセxHa.Hr_6Ip_^_7hkێhop^̰p8p8p8'™wcXh`8[ ]P̗ V dHt_UiP$u^.#!pR.TZs;޿IӹHXN2{BT$APؘmHNwS6n=)e`D$wjOSJkwlOܐyjfHI/U]@jql#ő-Hɓi8$ᮔbI4M[iAnc_rW{;8-LN2]--si/crٮFu:oBiRO7K]G7>⎀dL'aP.l- sXWC^CLqkqIDXqj7ϐ.Ӹ{^t^Gv؟sB; mP*ߍFڏI6XW,s:yE ݛ̞cz߳_ܿM:suuuAKK ZG\%|w]>dlV/~>>awa"c@w0Uc[.Ip_bo=DJӉ]PDm'!A+_b릝(+~FGoXpp8΋9p8p8g2}LL8Fc`Ѐܼ2ٓ5.[а G@Bp_@^KC߽ } {#:y\Ծ )3Ԯ,a=yUX6$}xk!}PT1M"::bi# =5T$wJ@{tGZl>7"9$ HwIYFtEX'irj?OjAw+xK6' .H~@$r|7吤Ը][Y=-6v3u#(r!IZϒ:;a).:6[+m]et\U7Y*ֻ+%8M\Ǹ,MRb2phK.>:?,=OH\{bUb#u> \JnRheڄSJiqO/G(߄ħ8랸ŝsj'=!~q?ncȸZ 1e$h`Z٭c0iD6;,yvuT6KbtӳYpgfIn-|o-S <. +Iɝv^W0lb[+ z+:|&>MB2"e[] Db[gygzpt_^__6y{,3̂`Đwa;r;ً[xo A˰pQGJ@0ܕYHn_U)xp!4zo8y‚;p8p8CC>p4쨩m?7V!CV!($\}j>ۗ),Caa[!oGk }vG^CRl.THǡ z-ُ]pd{Uu1_#%6Hߚ)o!u][J;>I*űmHDZlZ풒s\q e;-S=<ĕF\NUuԆN;\ <AsoۋprE8UlCxl_3OoIYj-EMR\OQeH!^-u`.p)gwxqs~$?¹=bX';*֯-_?ysl϶L'=^.o }< EO 4qԖwbvqF,FKjWmQ6)i¸LFl٭>aInR.1YV[w\fb(z#z܆Vvo]hkAoNkVc` &+4Zs$ BVwj}Xowg{E{?'H>3,3,O5#: v=,3 !C0ѣ}rϿ`_Gp'A ^H]ܗ!(X[]=sM0-T.Xpp8΋9p8p8g2>Žw9xC,ֽ.EP*"b~IMX& #fbѢ{ KC~w;" )6 9R\W'Bwq0"C'EbC|րO*klS{spbw>K«H%,}zAȎOpn.RBJm)tҮ&|)ScӼ<)<:хZ=݃ <ցc q~})p*M-Ԩ+q%m*dѭybJ\Ko:ٜ~~ٲN 贏G;qnOOl/rg)MP6jN/;b|%_Hqm8$9-}p3K#qwNue; q_m474㓄*\y'mޱƉ|_%ε ımqwV~ )_ᣃþ ukqL,O\$<>)[*w_y^<}M7{vC$E|OOQa|D|pc\p(=e Ͽ> z:n FwIh7^`R+i`;[Ffy-撰NАwOnv#x:6ƽ{38Aw hnjǣG Cww/J|qC)&cϤKܙ,3~na/XpgaQ 5`oWRfNp(R(!8d#.v~Pw,ap8p8p!sG ތس7?YK_ ~w0~ae/B[o?Cb׆kqGʾ*'B2x$!*GJCdҋs p1Wzzpn aT1>4oE~|Vd5ޑM USbrڑqG6>ى[':Ѿ{I,')I*N;5%[%WLao+~]Ǜ?oJfAL?kk/+x0!K+᷋wJn|vqbW\E;=?o?!_xldd8"bG!жzj6_5o}>`6Sg@ ɤ[L) kGB6>ךL{kw`I91PL$r=jH]%Du9PRP DbL(5 Ĥn7G;Mn'|ڽYd2q3\jB޽{q9)X{wZo/gwGb~2 3?c~`EAּ$xy`D;wZz*S<&|lzۡFa))C!SesIJ] ILb{ЫEȯ@b@>OR3!EaElzJI+:.455.S"1bMK'۝N'˥4N{Ub[ M޻Hj^'AVJ'6+w#aE{|.p(*F .7k|,3WDp:7M{Y! xIHp,07S{{C>E#._):-rr< EA0q3(>稪lN&oRp8?,s8p8p8UȅF_EMb߁x1z:l< 2^8ɽ;P=o09EI;ơN}`V ,,%vY؁7c$ /+ߕeJ++[8F:7yn|?Z]`%pgfX=os4by[vnC.gtn?^dt b+M 馔ͺ񓤟_)Y#}rI'V 5ԙ4ĔMvc^%)Y5oW7ht|{M|_Ҿ勢CB7t :K ̋}>]^za@<weg.ox=q߼kM h;*K#HJ$VWB^M6ZpQRWB/ )V =D]JMMԈ}+Ÿf)SSe(++qB(Ϟ@CCGPStg)*㒬e:MIZ{ O~ɝޥܫR\φ-Cv^O)=!n64oKƆ ,3ܻH&2 ̯U1_h[pC,3 sE!vjo÷6Ή_X$r[r'r΀+"ϹL=n ^P8F`ܸ;1kƳXn .|l *9swp8p8ù ޕd2s_>Ž="%AEcQ{ Oh͹ݏw/o-ۀU aX=g|wJ, zl dOGR{v]XbݔIZ&ﱰ[f)ޙU/K6qD2Kb7[ߝdOfy+ǮKX-ucZ/ ̣k${K{mŲ?eK&bޛS;t`{w_օr$85s)y{f޽ z@ltb`gIyv~x:,smVT!#BBQD5WSOT*Vdk{yi 6߁unw_mUNU;QVZcGV,;}4Z; ΅'Π 'sǑ#'p)-(;]ݽe8vZZZ!,1d\[XFi2nOM4o ~Z{wR]Hdǂ;v[jORRrgazl|Z,3 se&8?nޕEp'N m݋W,m{ T{/w\ap8p8pB.Zp;$SpnV<|~(: :w);~ :y#'w$(NQ?`[/6U/ ѫ_mZ-{|S6%rfo,؃5.׷Z-"{wDqj7)5|[L ^f#g/>y}۠ Iw` 5ʅj7jZl̩*uG'q)-EAY *C8C&ahK@6WES5ͨn-b*TT" uDbhq^lE,Fm drL'vjzw'=Qpu_k;>ONfa.,h&0̥ ꗂƭ5f މ\+vGд>hhL0>8iDC69swp8p8ù X1lG$xɏc؈[ >nK 1\0}rG47!'c#oc⍹K;ݝyq7>^ڋ/rk=_ L"*_!"1P×vKId%b^/}A;-,!x wbs M}Fb@ݘxx橏oܭx]xxr{ {şz~'n^}vޞ5| ~fF~~Z{DբZE6z@֬b~l6Lj3[3,yibSwfgo6k'zR.ނ36ct_9cS'^/d6!-)i+o er,xR$˛s"z&зeS%-w=LyC~Mwwx>fmdWxgGPsڋ҆lD'=M鱘UI R06$v1 b .ō$X7RRlP!j4nvhZB伦&`q)FI6p8-I̴dϷ/ tuMѼܞ)gXF\~>=_k aXpg4kt coC~{cH+#1zmxz΋صs?<ڑJ-oXpp89p8p8*tEx NWc]Q8h c-}ޕ%A> y'g(嘀CǴ)b _b3mxcNAzxkn̮4o>o.wHgu}byXh23ڻgZ-u2g%/%-r-w/9zAIMVZtZn1Ē;0RXq]ŶM(EwM]εvpi9h! ZAZb)WS$SuĺSRbourF#k*PW$}5E2?TJVɽ3{Ypg F `kW[pq"Sj?>40 baxl$r{{p8;,s8p8p85J^l31@}}ya! 1e Cv1&o,ݷ3Of~l=}{%X1CPE\ao9+,/LRQr+l=Wp%w>kZ|7}[jڬ#϶)ҩ5lv$ۑb; )뉴N{*&uj8chٖ!Ll|7 1FW'l >h">dw:A0QYp7Nr;4Q^V)ewok@ -=#OY)wvB 8Zg5Mho{:Bc ǏJ*kR)=zq>Zv6^J,΂;ð0̵ipohvOr9!; '1l4|&>9.?۳:,s89p8p8DNa{&a`88 GI?-$0YXRc%@1ɹFƫ_aiFKbߖ&{3cdٌMX&#lѽ++g\^K2RJÖ?[{o .j%6`c_`×P[@\m/S5Ķ6K$3vi]MȦk5b ֡DHrOd`dHFZzO} 5}!s S5ڞ;]#5Sj~&7Z!Y ^>O$w}3wjz; !!C#n okUhjt(-طN?Z'JűåkZhwjZ]4 |{p7CВ;_r.,΂;Â; ~&OA?G!~?}S{a7\}# H<o.=(Ypp8΍9p8p8%S&mZ"zoa30lm/%%sGk"g F Hd0K|må?w4rsn ʌϰt:,I%-=[p"bX+R[o6gj7Ǘb̍//A,|/v8a(2;]$̫.vBrI%q\o )I>1%qD+%I 6 q, I]JXEJ$‡1)Rs5#q=rdK6VO.~_ev,w)tYެ%!OPb*C¡ÉemF'VڪFqO>ҭ t8чBlJPDZ2u{;B; si"~o{^? \Yݭip1np'rw)/ƕ/Fn?o{~  0 H&Ri,s8 p8p8sUpO:DD*V|f<"> <HZIwSrvSl)uqhd5n.ò-)}%w܋Kxsv/qo9_ݵ0bM =!^E'H|Z]a9UcO VUgQ^Z#8S'*pX^^Z%Wqa&1x[Bb>,ϥ{A_{wOřj\ghm4

        4B#o_0EwSr'^n* 7}o tOAI0JPQ>A*16O n9o2{WXe|[(=S/^pSnG)vr\{"b߁'W^öm{0R=4w[(9 p8p8sUpϔܓ)ډ/ڈ'#oGah;F"`TLݑq^}qE^>ʋc[bctw]升#s= ÊYrfW}% +P|>hFތQ|/9V"ڝ[.<1Y+~|˧`G\%[=#Ў Sp'1˖t%@c] k[k #SnIƍse8~lo'h9+ܛ[q t8 %%ۛ\hw!!%o#o ر7,%vOKA1.K-wِMwbwx3w!y  t*}끆HD^0H!6lB;aH%xhMn RJڍx:t)$7/uir7Tѿ鞌Knm3C7tm1,3*=JvrYr{K˺ \V|7GO?Mo;L|%6_L;@0xpL^~>rRǶvv9sÅwp8p8ùF;NS/K`JL}2 H<LjKp7ܥރG +ǿf~!+fmb\pmItַxcχo"ɝ\bX{\6Gӵ.*IVNzh5S†܇Dۄ&eܸuME\J6Nb&KU: D"a Ԭ0d=;sQ؂; $!D"%+[vר5rݼ7zo={Q"IMqyk15)n˶v$ pRo1xmsұCnK1F߼W;vP ΝdLR ܞ \TTTIֱ0GdaK۽i Qc~,XCI 7OYp/8PX8ÆS>gTmmmlù‚;p8p8\dܻJXU.Y< )(cQ8p5;$LL=`dw=V9ń0sxmX>[ ܊;,c)/u5w[5WPpɻћ/CpW9\2wrx˟ XGQ6K]+fnWIp5r%+Z0H1D ݀in&4O;5Q-1$KR0UM^1y m{}ޯsCP7|;ɿ!{SHH"aun46ESM-hu&۝ >Tm8z KP_AKS5眨*oFSk+\RX>B&4XɣسN\W7 UbgXw gKQ}%Ùu8$vn=(yN &B4=v ]v^]Ivn{ϔYpg~mFwa.[n'ܭ~5:nqSNDs\K=CX ;  &aqX)|a8ùÂ;p8p8\(=!oƸwc (ryl܇!!Η79bP;0֗SY_ax VfQb 37 6H8,ܧJ҂uX\>\%_W" =j W$ mH& Hq݆dJ #)ݣ(ݐZTmT M.؞KtŐ4%ѝDH0$eadmeK[d$^R< 𙂻'=&S?‰gPqgkP~ e*pY)™SU8~ >CNa8zנ{NBˍ5>ԜsΘ\>Ξn~nt=Oc)źoJ:Z-hCرe?vm;{\\K,lJpuUB$g[vqG]UQ]ח|2{\4h,3,ۂ{L~ Ba)>Ypg C?"8yZ#JOnlp( ~{N;08>\1*+{rp87lXpp8p8p8kgKTĥIT4&?8FAEcQ8h4  Qjb;]+#IstAw9 wAlq}/?) ۗoȐ#gާ}xp%}{epKr>mF,Ajf|C/ K"eu +"!ؓzJӆAJm )Ǖ61&֧FZ4nLzlt']t %U蚚nm Kܙ $環xv>XBuF"S"Q`6^]>ɋlrou5hu~x\!8}b-B> AVWPgVUkmE]z?Evjwc(k9|p7yx8A7ƙ IDAT ,*Qhjwm`0S&X'g Iϙl/7d~/t]7N 9Ϡk;󬨦Hn Zוޞrfei߂(3/]dφ-;pT^ fRrϔYpgkS{8 ![C` nJżW^C![w9.nBy b8G8F~ EѠ2d C Ɖnw`Egu5ܰap8p8pYv$Y{JG [/c-wbPh +#$wi8Gp0p[1jw|_h7XV3KS7]\ ;y7^OxƫدVL݀bznd-G,o'=RH % MXXr{LE8D OP+Z ' T$*tBq[U<{bE$!Wqp6ftLmBM­jI]%망^–~F`PܷaqOFV $KnIr CGC4B>}19E{lHEr 5-FCW!1u "%$1)gkn"+]w]DotqDfsify"eyvZEc1Iec<5:[ӱ{>=FM͸6oJtNM=9Vϳ!q=5-[t着鞦u`54wG3Hp7,]C(/!0E zHrEӋO?O͘yܞ'^pno'a=-4[s2󨹽C>h0 <#Q` qpmKALy)w8g65ܐap8p8pY2wۓv1&'֊!d;Q{܏cP8hd{+'t]?J0RJiɝ ĺpŠ0<cѴo_3-M8,~ ? c3~؂;xX<3,{8} z8=Bd)Gv z*kp&?|-Qx]Q4xzX߈Z< Cp߀Xpw受 Kn$g4-cqxmqtw#TR$ƒK-]J~p)nڍvS(?Ur'~>p'VLAJ8z,N*kZvNVOǰq̝8y̔|N-,3Ypg.Ntewu|"lpw[n1븸i?[z'a )KŔcX5:eHVtkI!I_3kj'D15UZsOr'cҵ L\Nd/]?{?{9<^4JBP%Z˱q#~Kѹ +yr_y.1.&~z<~x6 E:%nI] Z{HlYu:Rr'? ,3V=!^'ψxE=K0$EvTnqv?uxn| 9.-Sk;}r ѷ)[»jg<C0vm;q{I)OGcNMONJģ1, ?/!7s8 p8p8s{hi `OE0`&g ȹ ۗ׊ҙai:Ri,gkڂKb%wzy̎h ĮuUÈ%;ds9M pGNx:Q[قqd-=nAs(Ε5M>x][bp5QWFyi *#Q]QoˀNb vYpg. ;niZ&Ib-Yږ)CkiM^pg.[ɩuiBC eUhn ;lax4OnnjE+?PPBe+qe{%VO^og˫QS݈V1F:''іKrfq{F|jfjkn8ݻf< ̯Wp&{XH \9¢tslm'bwM}MIO&xG1G$LzOt}>i?##8sCwp8p8ùfm=%%bܩ]hvy͘;oFEc1pX 8yp䏒rz^`5 G'+([00.f</(Y"X}SWS X/Xyw=뱜2jBMKESŢi_b5plW v MZdzB7[HJ"*4m4W]9H{ SnBÄ)\]0T:_Ѩ"&s=ryPW TLJ&qjp7ۺM LO'pL "A AU&B~Ao*?d y"F %} @&9, 0 ˦vs!1ʶqR)?,I^71b==>{&NNsqXwD{:%"I/<;|Ng;v)gp8_rXpp8p8p8k{WL=f z<_ wV;a1xX 4$`;c ƣ wM#w-KOf|f|' }S{FrL /?p~~>~聫yu9o62˭Kb񴯰t뛰{]9TopFL-"R)$0aZ5ja&>C Q zLڥޞnqOhfS~P{c[pR ǎ@8Ţ*|ހXIIğ7._Zp .)1Hp?s)?sgpI%f4k$ 'WMu-b[TQ_D+F9Uao U2x[hu^j=lM=I$)ME; >N7m6sս#yjFx$S{XJ/ɳhAeR ' Wr; $G'֓Nǡ$z>:/=IuNyM @CKѐ.Mh_iJM Oc$ıu>$:4o_;AL!>4 +blTb u MhQlc Yܳ .cX#SzݾŠ˷w.şwCnga^{`2 sNb{ d{ϗк(01vLc"wڧ<8&?'ޥ~)S;qKL>d0yh:^] K)7m{{w܈ap8p8pY.,ӈ܁O$?y #Q8`lo'q t]p8ƢZscFwpx7xmz,mk6cfۗL_ߍ=,~= qmbOB Ne0-S{0 誁hH2z*!ǒ\j(յXBk-Il]@5STܙKInw8{,|K'=n\+%wb߾Br\(w܇S'QYQӥhwcJM ~˪k@SGęSURbW =11FyiP]шse5hu38kfV5-__$MΉD7"q$m1"{05fXym4mn'|.}hi [@$b!0RKXil0{Z}CIo :nyٖWb$Z؝1%w :5zi=s)2}-![ōh\40[5Ü׳ FY/ }P'wa.Ep"gK߮یs0pH?ޯ@\Kn'C)0fwI)x`x0yxPLiClڻ6wu? Ǹw gX7O<6 /ԖlR,s8 p8p8s;HpOw0Mc7N 8 G欂;IFp)e$r#p1`ʄW_x,&}fk$O݈%ӳ ,Ċ MN }O n/\gy0:4%*v̩Qv]MHU! %aڡGۡ۠FP"q(aA(%CJqDen6f ̥d" +'OY6gi!SOq$U7vl[ponrFXTCcV?$aF րhBV"aC6Z#>)zT!RHAIaqp b~kBDߴ@W-JxL6b$3RcP5Pbܮ*s6rj'ziѼafâ?VFChK :5+)]Jɱ5YLPWBЫ.S (kBF1:MAT7jI':\ >TG8y +-Fed Ð{( RQp'QywC6G1)1h$wrZO; ߡPDJ,N!j6wj>vl'?!?L4% a=H|r}BOo[HkYiIq-7gJvӚzv{Mƍ$%ratuޞ:NNyCn'ɟH_@g=Su/ g `ZpvXBۏ3Ux烵+>Ӄާon@N°0;NB=:q`ZbÖ>Y驭]ws%q8]މaKϾ'ߏ{$D{{ ù‚;p8p8\\3IŽ_~O=5ߍ!$7@ cyς > 77 Ga[p?x3,.o%-/cz6dPp_ ip=dwoS_'?+S])T'$s ضy/oه®Q_ɣ(pXCىz~Qo>/Dcǎaˆ7q*}{0f IDATēdy%ٖ]^'.+:VqL*p~MS"rYj-g9)y'M@wT/;OkvNWKߩ-U-gLKV)Q\Qz[2̥)ޮ{ݮ+,to1cj pw!i{:b"8>z 6>v||S kUk>h~'`%Xm7`mNOW=3}Mw`ؠy㍸o}z 5M'1ɿ# r]]$DYD"H$D"H$D"%Z}r^j7yB\D"׾7݄%MkІōk؎EHm/lh'7U->ot_r>> _Tf\;9-XWa+XV| A18n?N)99N:O ʪLgzi2GfRiC7ĔH2Y`u@`W0ɶ5{4A(x"rb .H,QO'|T#VbXӺ;s?o7x/o Ocǎ};%߄m[o֭7`˖뱙y޴q,oX7ހ?{~GտwDNH({H$DpD"H$D"H$DKBw>oU wa11>{XbFSZ`Qj,jl 7.>L__X8%]׌kWuu?¾=>w=/L]Rㅀpp]Ŀ>{<ӣy2(i5rCFCI " }!F1IWxBjPhp #c DPaSi) 0* 0Mܯwˮe&gJnVw -Dv`o,?&@s-CW[.EA}ʒ>ԥvr2ݳnڻ;e//\rtkiSÀsjS{Q947rψA}zVtRɳydr|x XNmmVتm]Is!8>Vhŀz2!L 苪gMN=kyQϚ1#P=!K1 OTƂQFDC!?ΜKϻ0z=T,|! S|#cy12G\]5ɟ1 .^zFz6fQG bQQzfSj; ?g{ bz XfSqYH$7.wl=P2]ix?y_|\F)S.FCc3;Ѿ6܀[?v܊npھ~ؾmˍغŁ۷0ľ}no0}n*z{'̿QB.>9MD"ʑ"H$D"H$D"HtI<ȽP@(SO}y/֬يeڱM+{c}}Aù!p_D ̛ V647lŎO{5طGyp.w;TwƷ>=/>; O8l.p)A*Ӻ J*')͘ yKL -n2 ɹ*lM>?WҬդuJI uwpn@.n%6q-I4M-zoUWW=C7A6!d4D$%Oc%$9u G ծs_ȉ9Q8- ugԹiԹAIR|d4x8t\}')KD*JGHr\tJmΓR8CS3'pJk\x;?dZ~1J[Yp',uqq3VGG6lD-o;>>m[ob}f[6_gp oܰ :63~MbG^ߓTdߑpD"ѕ'E"H$D"H$D"Ѕ$Ri}?l V܈K:f ZFGu 9F4n d8FxN?ry=S@\Ã~?>%QU7H;BW ˻GpӃ@ ~:1{G}vz5@@=[N;c;A/,i hC0'=rtϠ?Sr{4ƨwc N"Y &y׻cO34р&$"Yu]lu]Ɠ2;>A|eн/` sxQA ~=_#>78Q,uFV^نM Wm\BP _N0mlznlV+l_p$*z2BB9 n3f::˼=n')DȦl}1D ##M 8g@= ;byٜ*q-[_U s_Ne jyhn5>;:{o73w'%[{]a!ܯf}8گ;_7?w:xP t!rrRۂHN׺],P.a/27+)ٔLP  [vRݩo`we'a{ @z ƿg ~E0Li%i Ex;*oj,LڨudœCo7SC!'p> T'HwSA{ û8fq v §!'E"",}]y0!=}> ":c! >U@9c$`8ǑTuC$0 2!!ґHM$#RQ[Ϫ:iBg2@#V#M@C+ț 'է0b)C/rE~UYzY]/mk<%e9\2X\r: 'Àf}v_<}frL}o7㾯_~ZcEU}oIs=I$DYD"H$D"H$D"e(Oe?Nſϱmmh^q{]~F)}A+/P}ZЌE Vb|JpoCӼ Xzxgp9zC8]}q~>]|_59s> $yJ"Mh)f(,L a|LMb0\`݅ [ζ;zAw["#]'@Ձڋ J*;`$u-Uf+מ,R ;q܀)FeM̩dS+AS2X(xH0h0H 1 Q3!gEx(H= 닩2$&1xzB"6X ;EI>?BҪod񰮶'p=xo}|.<ڇ.:p18ҏ#o}j*߃w# 8jͿ[@w:oz-M%h73>y_Ќa^+kǪ}_ 4]p_Dag'qc?| l%\D64:[ˤKgg4vJj'T2)ٔ'Ħkf.wt۩>DZXz80D^̉g D&xww..f&񟒹-93Ep(]4n7۵ e|#a  bx |qxAc=!}|j=Ѿ(<~t?r^t`HNA|'v N{18n/N ۋ3' &`i%R1*8Ǐt~UwFTc9ٽˇ3^u~؃Ό2T?PiIzd^BiI ^Ba)t9̴ͭF,O@:W~j mE6<`X؝\p_} ~k rL=+W]C-މM͸nb\~v]׃k}شil$sR:l_׾M@uq6|/?zU+W1-}D"J"H$D"H$D"Ht ?]Fck͛oDz%i=7ui-Ƣŭ-py p$y6,n 6_0 ~ 1j̞Neh^G#q{px'=xNvCDR{qڳPL]p٤<&YOnXj%=Q {AN.5G{pJyPۯB#8Cߩ! Vyy :NӍowqY'ǻOq?Bx,P@1<@`43( R6"c(.틎{߰j+t1F1J2zR1ۦTLG*-cCWb*Y S@;[}t=hY?|.ήjU= >gf ϴ;n6٪w=^?B wW'Vi]wX|p{2zf$Rzp'}<{m7q-ظ iC7~zㆭؾIk'}䵛Ѿvco|=^<3fT O@wH$]]$D"H$D"H$.C .-kO) IDATޣ_囱|&,YMK;иd ڔ}.OvC,_(~vIqwJmXtMښnǞ_s<FKf SyLͅ)X6j۪@E7>.hs3n~#K>꟞-p59\ /Tsʔ>?;lzlIoOٶͪSr^{07~sy .0{ɌZ +v'>pߴ ;0Y^n3{]&ttlD{k7`Uw۷߈G^~m'Mb'ԾL$DWpD"H$D"H$DP" ^,h='| j\ ˖oдKVnπ; O3p_H WaumXvl 7t|_x_crskpH;*CŁ=Oc <˿HNʕak`)VZ-3Hb'F2j=`0`Ɛ;Kv*؜q;-T22K:ե%o'r dL{2qv.R ~  > v!aJqנi:CNYY_fm6vwokʜ+iؤ74y-TNjv yjh/\c`NJvIAq][,&s;mU۴m>_g:bT9g똞JUx`S~F}ܴDܧ' gSimT!Kp?.XdZ wX<7ஞIS9=7zyU;݈֬u2ܾu¾c;.B6ng5}js>ςTnۏyGLC!_O2.H$T .D"H$D"H$Dm'4Go}7y3-_%Ѵྸ}nȝ$j}Ѽh׎ }.yw;ž;~}ǁs]|hm$p Wʺa`c߽?{zK`4= a9McP@LFLd+뚪KfWwRii2@ƶW.mXzXmrPrʛy+ Uڱ`ΰz!c'a۞gWiVf xY |wvL hܳjiuۦqIC3hݙA㒎јfS9lǍwyY/ ,wa]`xv .'2e?)Iݙb(>tt^6 ^{Ѵ9 ؝2Ti~yvGSqZ[o PиpWϾ\;C:E"=2Oh 7>5-[odov6[a]u+{tp=6mQU}վM۰qV;yfkf:n먚|vף!ori8vE"Ht%KwH$D"H$D"H$EI]7IE^KEha3ZдԊsxQc[@ _>!E*n*C|EXָo;k}w>_ 3Bl~#<(}pvε~d;{?חpc Fb 6CeB7 hM&0R+id:fVu] { >np{&MT>v襂];p:OW6wFoTrywCA>YuϨ&T?(cUR-a' y r<={lgY*N$PPPm-BRߋk!x{ZJ5c칾2z>p_6nWk٩D:ǀ{bbu)<_O/~ <|=6o^-w`m،g)e}6n8b-5IfYڲ+[n_wy{X.{jrvH$DWpD"H$D"H$D\2"~+෰f,]д 7wrMr'.ΐZиp5hnE|bOasb?}%~k{(Sr %``H׀N*f4.s:/ B-Q"]$פsl]v<#-ӚOLZ.X> 让-Hww'z-0,kоOjm7څ-/lFC8xx: Å]]c0: f;g;I.hMd@7\P3i9U4NP8 >N4uiW`vN;Dg۫m4^S/Rm.)N WL3)솦lh׹-:/N|*2nz^˫6 zXj_+oOۥRhcfa**L}|Og/ݾ;9ɨq?NR.pϨg]2#VwJq], "4b,Fa?u76nM۱~VtیXf,Ƚ}Sr߂ NiLf'=#kvZ+Z٭-km x_ޚp"H$R%H$D"H$D"H$]Y*O 8v4~aѼj=-oǒvB.辠ija N) Tջp `qkJRxgV}`s/an/{2vsOr ϗܴp-GvYAj~TR{R6.0@ \N0AMDyҁ98p$ۼ^({7EިSouR g]}J-$`/;5څ@pca|D"QFOSsp7)جl[s@Odq3c5cަeJ*hUJ9Wm҉̜:n9zXU9 hZʕ  p hFE0yI--.K;ԽK[`Nnz&D*P"OirfcY"x1<8h(MM{&O\ɳꗆD$x 0C%˥lORD6c!>-CiM]_`002{v aU&5@L{->p~:;bܧzf%s$S{r?>cInGRƶ7srM;no،v!Znv+@ &z[Z[yM-- ]ݺ ?tg/O]$DWpD"H$D"H$DP/'fl'&ᗱ{=X~VlGCc3T!ZqI[!w^v!y.jpxA [Š{n[v>~Wطϳ!pŇfU}`׳?wy?\?$1|O?N̔aiyO _(ô+fX'`%hZZ,(3J ElPYn\@V׳SF0Nj<%5x=M"yS/뙌l`T}S~Sb4FTRB%I'~.]Kp'`\NInegnr;Mp @LeudC,%xq4nܗxy\1XOih;pΣaR&꾲qp΍lZ:X(SLƳwOϼ^|'cxʦNXFqX(#c8yWÿgpӵkF)z~Ѐs}W#nXyrSi,X|9M!"Ϫe ?۶߄Mw`z7a kgBSpip ׂvWƪ۔[^ق+a&| _~cةΐtf m'Y: QBsh<>'caO ?sqn3C}P=#˯ctgx q  zv%.UTRGG VKNe¡3 5('1>;X,[HQxǎauy rw=HqH &14{028P 83#xS oヽA tqn=}cn^ym;3@'<\?A.>QBV{8C՗!x{btx ]:ՇT,Ǔao~uNj}d0xHC:f#MϤ#Qu/{sڋph F"{ wz.D#iFCp(φz3Ej5{Jg~vp;9pb| ~Etxg 6nбp;}wlUgSJ{-6 j_ruOp׾^{Hb<=}vE"HtKwH$D"H$D"H$ 5m.3Ǐϱ{ҺKFӒ ކFrs pW^0ac]=ľ=Obg}7.|rx/[?]W6_ v'o7GzG'+ gNxΛFV+o uսH@$3}aUvm]=#rE՗Uu%DDxIGTԄ.edyN&muFOe#te7>s#5"v&ФK@h(IMa:a&}%}wuw"l],̀{:9]tW,LύdJG$;GN?)ntۂ[8݁7U!s&̐`ށmJj{%݁+I+[rEkj'e+| ^f|ӧN?z .DYD"H$D"H$D"e(hRveW@k45$>/74}a/Z2íSPـy- kǚeb϶Gpv>;w=}~>)~swnrzg?J;onUf7pWh BK:X, CB=;(7o}7fgn\ۧ} kVdvٕtv7@ua7,ASR,]uF`v''bD"'E"H$D"H$D"2\{m+۱tjܗ47*/nl:{Yw+^4M7˷;oxg;9Ypr+;7^~ 4P0˚iY62D: Q`p^ PS^4kڗJj S2N˴?&W%T{Ǣ)R)t%Yw`WC3XL,/iڧ%p:Λ' ޗKUR#jG zinz;%zttq5>jlQ<1k&Nڶ˦iΥMWL80Rcl"l~ӧlڮyk]9gŶg&,vZ[W5>W]w .YS HpOݻ?՛lZ,YK֢i3"sE۱eݸw_ܿW΃5 p+;]`=g{?y]G(@ G0jj$Ym2M`z.KLNЮTC IDAT1l&*r׫%juU:NeluT{mP=\O08O`.X,>Wqv֬Z^s`;%Z9} l_lU%Kiyy%Xڴy(^e}G "H$]%]$D"H$D"H$.Cry9-ÿ}_AwlŊX i)>KoĪE`o;+|cxapY?plZE~{w>_==!R `i"ch :R %Ӻd`I0үi!@JBT}3A˼. ܵ`ct|n* teަ6%y[L3 %g1Ҵ'x>RC/4Jmx\Wp46ոֲww,;u$T*abbBI?gsIW؟nԷzӧ 3@q}OK~^T]+ p{'o+/t!.M²&`hiTw0|b; EN>'qNӾ]`;NYNTu}ͦthJ6+ e&նSi΅](V@];vҍ-ӪI/n( ^`kT2Q#ã#u3'w#tͨ@Y So+(T =cL:ȶ6M`;xQ rvp ;1f@wg\մݽs$`z}]|uy$:b=9M߿}Uky V媖v6mmmznk]^ݲ+W3^kJo'}iӊ]q 78nhhB&^h5SuVjŝwލ'xP=VMo.pH$& .D"H$D"H$D&0L >{y[+WDze}462̾p_Zp auo{ng|}/_c]]b߮߰i;N>8vϞw?z7{b۟w<$^FfIx jRe0mhLFG*!Ҡk^V(e0| ( >NP0mٴmyh9Qbu ٌ?jeƲQ}uhve:6Խeu嵜::ί긦Ƨ3tNP{P%E]ϳmk&_Nxl[oIpL^tb>؅ܭZە7&+lMo]}M3[ y/ss7ySTFcHb>^,YւmXj5V\ EkK ;nWעeZ6JUvܾd2,zInB -h…Ӷ}TY{K#O-K>99GIE"HtIwH$D"H$D"H$TMRʤs8 Mxhmلb:45y Ks ^PaQy& ߰@m4/Vމ6vSxM0g? %q/Oڗ)|'pp~{uh2FupR:'j$ &aJ mLV7Q2IF2[KK2>v:ZIjs-@[v/]s.օǞ/>Wys VHR4휠0OX4xh#1Ydt5^MmR-jlKc(龘@2#T6ɌraX,t:}H$P*x&PΘ7.Egۙ _{|}}8׽s&(Zd;'1gop&a7i-k|e{fʫqrr*皶WrB;%Oٔ b_ /ou/]7m~#;zߖԿhD".E"H$D"H$D" R-nz~sܱ hkaiZ4,laR/X󶠭3ꮟ ~~Fw ?Sc/_ Srz^ݠwy#8qǏu;9-S@d_}_w<wrbw[{̱gV c};W[gt .X,8?o=u`ɲUXVVwrg}e+C \p{S㲊2ľ ךRkr-N ʕp-SO=!ψ^]$DWpD"H$D"H$D+H{PX +}c] \˗v`5UXπ?Z ۱ XqvlY|Wv'Wx`} . O;G$#E"avn&29C>I NwC0Uu8H#A ǘ/@L9vu߇p0x$X(igl n9هhDeLH)wn׫w9}.`zs _3!aJKPkʆ:䷖ q?ODO5 pr;#9u}PCBG>z}@WWw<~c}+\;ý.nR{Ke.ew\hMzgw[T3u_ fXQpϽֵ<p+}.Pu] Khђ3N ;z}.ի?WgD"1LLTvE"HtKwH$D"H$D"H$T Ӻ_#ܰcgp'S%XҴ] /n8{+EӼuhzY|;vn_'_Ob.'} BVweUj kܿQ|wA<ػtXZY\=70x_k x 0<tc+?{Wyk];q%[N nc$;;ug7qSwɁ1MneuizEs]34#l=uךY֚ђl=zܗs~S ܯk\*4Y(,h.@P3ѵu:}<е[k5ni뼰vv(A-tG~_Py,ɟ3nP_c}{:ApbLvjzl׮l64L1FcLy_>#w:w9lwh3p]}!>S~{T}PMn/(\Mj/]l#'ː=Ѹ]y2j.@vV~ĞY McɉrmہÇ:[BHB!B!r ܕ@s/}~ *@ym(+e nEqr,2'Y2 o2,̺woC}e573prW ֽ^3? jl:;vRSܵpl!2 բQv -}-ǝNWdZK9,Zsmd&`O)^dӥŹCmQxoCD'|7?P@.6!#[@-UKޖzH)5+$c t] e ve|Ź/YL=sk2B\k/>2:?BV;θR,p?^ .Rʠ=^mdĞ=3Y1Nhe!==S,pFxrg??OP[Swj !awB!B!B2 fuo~_nT,]p_EP('G-X%+\܂E1U>]N~Oф{v98GNq_;p=>wu.<9\v }5Ƚ;@qKQ5ٶ׽=Ŕ4Gn' # U8W$v{#Fg>];!:Y,(DlTh`+oX8`ں=.xopXׅ|Cν~: j{4rwoLݭ~_H]>Ƞ+ 78Ranw]NxRw_ڵsy\_R~&R=DNwY~o^ρ|M>5Iwdh_Onȍ nOf"#CS42zG#B|7/>aKq;!"aN!B!B!]@gg4tB0ЁxlXx'K[PRt3Vh=j,vS>rN|-‚e(Y[Q}?زi5u/ ܯ^)__l\Zj-vW'7j  ƣ ˭p8"h.Na:bb?8W0nRSٝ6'Xd<ű}]n]6[.w)Y[,شxD!PETc8}.UCCԺh|,l.MUVY\˶w6q=kѮCѥ5^<ɪ?9].g2EGcd}Sl]y-FѩLkZrdz79ůq{mm-?zGwFcph^끻|/? '${&2Mzwv~?{GYR)K+P2\MspA,jQ2nʏ swj.ctk@\͹s0g<̞=W)ou]Ņί>E|PMBB!B!BG$]n*W>%Uq8b\^X Ң^ e(/GQ"e [1ߏ׿~ke;?Qur45Q_{Ofڬ=pX}ٌ֖nۅ-mk5ӎ&qM9U>8:q76:yp+:oʈ\ r{ss2>nOt, ө>a#>ngNldaN)M o.EjB.nˠ=7$b2'9)@v1+37ffF$hORyYHKˌ"v-f;WsY35gcǮ]tBR{!2aN!B!B!92p8w|ۈ01J ܋+"q{a-VW(s ʑ_6y3'wa/K]g/@A"ϻykjװm>n2>4Ws~(u`wywnA|qClM^-.,Niv;.ԶLT3 *յ٠k^8yNԡL#/~|GFKzq9c9(pT=y0>|]'8VcNY/tX?X/ԎtU7Ĩ75#'_=~'$YCݮ=ۂ&isbS/`һAҡ?wOF\~oqD /~88^^V'={NzN' ݦ&h;t% т^ynڊl9]Nf/MjszBar򑕝, 3#;UNh.7'sFcvm:{|>{>[3g~<(vy>BwB!B!B}hm2y۷;V,Eyp IDAT JV$_ {vV12rU2/pϲDZ=sx|x|+x\0pg~/ɸ˫^ײ6~ǚx[0HjAoS[L胓ʓjq ?TgTP)mb)ԝkFN8m9yvG@Fmx1>xN||NjZd5*n9׀&={D[}8(_=GcF ܍f5 ~p7N<ĵo}oL8i:QΣيN[o|w: W-{Xl['kֈ㽃cGj`?&h^r>p~%8Eソr:;wJi/vm?g?֬$X*~>.(j[p5okO788vy9kZu[zF)u[d~m_9J)ӣmQeN)pq_=K ){,nW+[P eО ̬GEYs=s}v=1e4/'/Y OiT8@ vNo'B !B!B!d٥&%v2f,* ߊŷhܬk,Z=*"̥X\o:6T.Y%Oޱ&rBs+}/jp?DP'>UbY)]"WAq{cnvf2b$'a 0Yv[QwUv}Y.pl:cimFe{ :FuеjzAmg[cS*N&2ո7>M&3zh+n;_xMV5_'v*MUy-GՋ3s׮Uzdn cbk} ]j ~%Qzc- DǗ=ށ;iz-2l1++pO*wJ}nqvfw[w p>22Y*b'#dDvgfanz&Og3''%#8WVvB!tB!B!B]Bp:k;K|e nwM-pd #7 ŝo~-kcssؾeX 3prJ{;Wh}>l]>^6Zk=09``ַhhIAoTek`5TlV{k&5qhjSq}u*Վ!' ffh`T Ѩ׬MdDfgCU'xW*qbLt _b7>(a'ZkCzA-Q$82vmF{~ T+{_H{ @Sɓ=嶿RT~?K p ]Rz33ڔMmI<&jq{F.2sT.MFFv cq{Z:fGBD&ici2r>}ڮ ?oכo7mvv !^0p'B!B!aA:;;qq+^r/^/YXu +PPP257o-Ml_{n|e8,)SC/ʵ $.nώ ܵ}30{^f͝e>3ga챙 3/-|3{8lL6Cݾ;~O`z{W B! !B!B!dXOϮ.45 V?KM/Eq,n_¢  WA f4fit}ne fZw|V?ǎ2~G<|w;=i~09^;]X)Hk;hdlf&pXBw$" -N[@<ݢV+ 6'G:ܚuJ+  1x^aN!B!B!ÀNa-'2|yqםkOuKHunlp~?WO#tb[5.x= 5J ted7.t.sܽ=OW#PĻ)j,oHkj|G8wv8b r;AaLux}#w]g5Oduؗ;eNg6ҔV7q,vd}nzVIKWe>mLL>SNiӦ)g̘ڔsb1Tuj>g<bx*~uu/: ! OB!B!B0 >pϝdzϼkEQ:V/Z*p/*Z¤.Ba"=`ထ{|ރ=ËˋLJ/?#ښM8Cp0]hiԣBt1 tf4PwmFX$BcC;Z6fWm~mx9%btnc@C^-ۚܜ}[Lb;5_NSzchllD{{y h?U<>B)O@O%D$_+ǯJב^/{.ŚZR&+j/4w߷ !#'se`2]Mkw朹>kΘ)ӧaԩ4~@wPXuhq! ܟ _#vwaO^GY|~=~!Xv_hgq4ԵCfSۇ?<™U^[(=;s )mfMŤS0qLI:ar62)iNgq֬jz{zz&nOMLOgN!dxB!B!Bxj{\}qQQv. JG&_-{we/F^R/GQ1۪`êj ܷ3pg~=uٱz?6|Z\OOcxBz:!GN7|m#=F=tmV|I>YS'j~q kf~_'.Mz8nq䣓8sRONe{V .ԞmsumbЌ38iWA;HO.aܣ܇:BgNSnvG.'33p&hn$G?Czv ܳr H.fGon܏u DӁ'ׇ`0 F,f7tmԟoB'"v"^;"ˠŮ :n47fRVq|dn@nVu&^O u::y{2 ܇{3p )fC M )&Oxl6e";*lԦO5'.nIS}tO05S̙7߆CGGg B;!B!B! wy3 ]_. J O܋*bF'&tOq}Q$p_܌ȝXX$vAlv\cPq 1pgh~@| i?_ !wn ;;T.rCMcS٥a8ԥvR!\C*6S}^~ #_ܖwmqm1vrꜤnO=|&_-;?p=ٝ;eNxasSJSV-g>J9HKϚ ܧ͜)gFi8eO1p8>'OU{aa1~P}oTtB' !B!B!dXЅ{ gO5DzşAY-*pY2pssU䞛Y܌rf-GY}Q { i] )wJ3pt)6=amw"#'i9'p:w>E'_}޼t,]/45#,9 ! OB!B!BȰgթMqooW_%wh^EqVY܅¼2-a|>Zܞ7??7KPMq/ʺ ~>-rҵ *#cāX쉼!|Ves WҪRW ;~'|:@ ;˫ˈ ]!a܃N5=i],h=P0P(wc$w'bv/b?3Md8<^ʥbACCaْr;pzaNwْZN)>>7Gئ(,YK3Ys0m,L2 &MQN<&It;a2&OI‰ L}R99Xj57`ԿˤwB!B!B!2܈ûo]wVtr5ŽRTݵȽ <en|f/@nXiP}/*ؼf?)у۵!1MjO!;ϡ7kxV>wVu ۶en<]W> !O|n?^bTNnS;]:cB!q_bUt*z*`w]p:<*׶n_=e@/z\r_*zc7wi[[?"w~ )w~.vWNw{TndN)M[x<^koe%fMÜ ge#+;7'ӦqqMR? u~„ 'l}i(--ǖ-'YwB!B!B!23܅ƚPk p/"q?KOL[;q}?{MEGW.p?H~[aggG҇tw" >wXTq{(ܥ@R^9](w;^"CvخC1 ե"v?]уu 3p(p^]u~lZV5Oah>6 IDATkށ wɅcg9Ԝk@V47U~S8v,j4AgN]@&4^s>w'm6TUrS'phطYׂ :8m!4pyXM2pPǑ0cwNv{4ԕ֣ ~;S^jeN)M)p^Dz`5z,Ϛy{26q};&q̍3fL瞨&)e͛ر۝:]] ! OB!B!Bp#.pTtjWC۱v,";k2k{Rg.Ci=-[c󺞑{p@=({=zF+wcت'aOgCq3|0.6%]w;׈SfvQjz{MMuMFΜsp:p8ű}ݡЎV  9ׄ ZLh0ƌOcOs0pc:j,ƌGNucxqtҤ)(--w=466?CaN!dxB!B!BC@ߥӿm|'. aQREEr,֖1J]K+y+O`|2f 3ːyYKEY▲g  UƆ=Z_~p]Rܞ+siK/rPH=:t2p )Fw mV{\ʸRiaq8aj|#̉S_ZMm9z >5bZN6s2l̙='O0}tO}0!{2nj"1c]No:uzf1:;:!'8cDB! !B!B!d8]@gpY{qX3(+]EQX4/s"12O"&.׋}r*HU.ngf.ŢЪʟ+wcKӴTwmSõrLϟ4p \iCsޟ3pZ9)_+bشj6} {En;wʉ2$vN7"3W>\8n.^<~emM\K9u+h![/'v] u8Wԣp2aAGCD4>pgKSzmr ܣ*wJilw~Gx?i2>=r#"+3YYHO31vXp>Rl﨑CKG9r'Y3'EѰ+0=>p'B !B!B!dkWS?pm=/w1r /;2dV4\ o?cƪH^ k=ؾz_=ل!j_b3pOcl/6ڋbgCF|6Ԧ\@B.fpSE*rwq8 du-B"^q_ѸX*3 ֞C>ǣEm~_PȨqv܇[4=>pGSzmVSMe֙ )=ԛh7[?s_z777Mg!}^&23U>kL8YMqRQ7aĈѸ17v"f;>xDw ;;u3p'2q}rRyuj/6ك'ڋ}wPmUK?2e]Nxet.me (}n_ףEj>_PWء`Zux`u>r{X=/!x>(pYAk\2ԕ- L&F2Gp5 )wRo3Tn;_<Vv;Fh>f8L<sfSqt4L6MJU̞8p+Fx 0e4a;_ptz;T ! OB!B!Bp%wvt tf֮}8/K8p/3p_|9=\, TXE(ξ߶ _>6 WǦE"ށ~:Iﻬ^xz=)ZۿqzX\C(=29=]NS;=\I<Πiaa bp.cw9 ^ b_y bv&sF68^g,UP/7h7Z{|.cu e4pmd2pgNSJY.~/ȸlEoW dƌŸ U>g>|?CsElcs-8yu5Mxf{]~A5ɝ xRƻ2Xz|#Nx; )ןF6=: a&tw>b('Mg=}^&231cƬHl>:AdzFbMPTP/}a_o:տtvAڿǤwB!B!B!2C#܅@ `v5}wJ.GIRWD"%,p+Sj{y/zYE9+ˮevnd݊%a_#k59 irb>o -tU2NވWc$=ʜUҽ}ܼr =o=_+MqzN^?Pn7P4ȳBAW¾0h4pY4l3Νn6\;GpH-Pw ]sMh8Gs6.{X-/qT#ǑNZn:&uJN<ֈ'p9Ԝn@[[8qw U>T&q=z?ĦLJ{R2p^GZ5/4_ヌ{_vmz|4U>cnf`4dd 3'sciq8یa~C G&01F~ҤXf?ɓ8 !wB!B!B*?";D(7م}_CoBŢ[lK#/ (pצ H^ܜ -r˼r5=7knEq}kV<'xtذz6TĦ籹9lLծL3m} ?Ndt$'?Ε0~ zmz8#wk pR\ӫ/'߯GفD!nKEz'kP[ۂS'/Lu#jN9~XߩjXgԢNmV-~8!mXQ_ێSM8uN4᳨>Z:q_l;ΟmAK&'']L{/TTm= "WZ{ 2p;W>tFN:g78='L`^F2sYsaiqxeDnGh~7bXr%^~e444v !`N!B!B!Ý.m܃!ַ ˖߅PP(R,,Ztwͼ\)Dۋ97#{XQ>wտckņZܾ}hz_Ҹz˪=1&־kܯd྿gUq3ض)v!@G pȯl[,V7Ռf3NEs Vn[vS獰08sfƧ˸']q0;68=ϢacXB1\ ^9Y^|T#we ȇ"Pg;pFo.w2p )eN)ԙ,hҮÛヒ;v 78pD7&O5s3=/ME܄Oێn$ }LFn sE0 C !AB!B!B;;B ЁgԮ}3+QfT EHB}I/S/Dn^ǻ9YKihVu9];^_+m|JxKiq{o"MEhzXWʄvq{=>VQao| S2p^ܛZ_GuOMq(5}Ԙ;^gΙ&gf]Nr8e*F&':PѣGc?>ٳp:@. !`N!B!B!DCE@8ނW?Xp-wt̯@Qqy$pVMs_2}R K#.pIW +isʅK o%\_C_w*-ǂő=:=>p_‚%=.)p]D{92`d.CIX2 X_ᱪPVĦϩx}ئd!{r6M9<^;p߰jG~MAa]~B}p{Cpyppˈ_S}mʺ_<.'{]HGFnyhinCU5j)zǭ`P s'2y>Xܟd{:2v_F=}R;rSդ{z<2\e,pqljш=:=K{2poTO>q&G䁻 ۵I0ƛbSӲl̞fqv}=#F(Q'NK/P;!2HB!B!BAWQ}O>k勖pa\ eoQ>Y|)2=q̌H[ܬ˺ rPu7ʟg{Z%Xo3>\z0& eW~}Bݟ{~?$*uO{}jśZQo'hƙtpBx:դt xϵh tq$v ˃? ӂum{$RhB:Xa5]ǒʀ'ƫnqn2qqj ]Nz+# jǫzdH'TDcsvPݖzaߥ⶷K@{vO[/sC*vM|1Kݧ3zV zMhmmb|oIT2n7Ll7>pS\.'wk.prl]SJ5/mƷ7qC]Fjz=zXވQByƱ1y4M@Vf.%Lg̘ 'nˆ#FS ]*#O}Z,5{~SRI&_*ywv !`N!B!B!p'ZcaPX\&wOq/aEΚ"fW 'c2}+vsڅ*ac$pܧDn{R{W>\ܞWo;sCƆUO=k .]l0;=X:U4ya59GG)csѮuԴw8VL.XV4[k1cvZMy\n )wJ񊿋?-XRK;7%0f,>%QwVDw 0kg"++*tOO̙s1a81Tw.󀮫:? ۸nfMs ! p L&TaH $L$BbziSw`ku۹]]ɒiG|T#J\ʇ?a>c <(//G{{{? !SAB!B!BH/;fwqR,Av΢S s>ӷHM "szolnܾ~3ؾG*F^R>r?D>SX}n|:a!TmRbEKuu-zNVԣ5-hit΁&GPU^ +I(G@mU:ƉjDZoZ⇫pq%&ʏV&!~8P'*9y{KM++P[۬u)WVw?^b+/E<_'jף+X5DUeXZ\O|y%xͣ8x9!8NSՈOup*u꘍ ~T6Wiǿ-q-Uhjlާ+ܥ+e^\&q IDAT w; R=('4~9Spg3[pChR }ҷ>2!wܯb<&Oܥ.% $-LÌ鳕>b:Tk.#ۥ~\Eˇ>!5J'?JB9G(B!B!BE0CQ8\~'?Ǧ;PP 9g'˅źl$'e 59ILK> + ;q'cOT(Sp7={m?}M'0@D@Ԋ2\f (hosLݲxNCMEoo*^ }b}3*ՉԢI%78>5*'QU^NǤ*0_.Wa[?1x}:QfԢ%.#SVnÕ8$EJ&m;)R&ٚ^[ӈc*պcUb4е0~C-76`DkN}uyP_ת8lp:b[CFVy;dy9(Ќ& /@鱏ݸ_/CPb0/.{.#Gb+Elp=Mĉ%Lf 3][*f$ѣNJGv)_~GU.C?x\z*RpOJJg?Y[;Pp'B B!B!BD*n- !;{U.%u)/!/: ^x{>sEԔ\d#;m%?wb Lp}#k{sjݖo_nzPqEHkY0 )0C&;Fd%ۮi3Q_݆m:4_Ao^gk&օa|n ^PBz8o<"bB !lb>C#$KcfF,]_ J\uUSˌ*U-3P.n!#uC-xxy,[uc-+yOnYaP(6ӴT(=!Ne RK 3w)SpgF뵮$~F1z%>BopKp4qg͚ZܥcMr܇wr|)s%$D/ c?D)B!wB!B!B!}"5Pƍ[b((X%^Bd]ziKJjRS DrcG|r&!+y2\?*no؋lxwn ضIl#ﶈ-X<ܱn {*<33)ܾ)lq|up:x X MR֡ALBB (c ුH.x|^C7hBMCJa5Uw@Wa[X6L;D8l!mݖG2nJi`tn:^ck[cw3{Hjmlo?i{ןk܃A?w;Ppgf./?n_bYN: 1CK})ۯѣc¸ɘ8~ &OSg`X0/YJr)DNV>R30{"e9^ޥhzZOFSS'hC~B!gwB!B!B!ޡ$}o}֮ـY%L_s܋PpGzr!2EDqz]l>l[ w'c-P?F$/ {Pp ߭.Һ݈nYvAC}=un-br(F$U n7kA)eGbq>j7ے-JX J.b Ƴoj.?Y t47hnjTJ] ]t#Hy ü_␟¾HGa0dh Sp> S1y-O> sf)HKDVF4%%-c/hݖڻv:[|K./)ӱi:xnN!  !B!B!OP(ɏOܼV 'ٙJp?>JOH^̤K+r?%uq׍Pp>wN?Tmz?'E쀩Dt)Lڂ&njiL.AX| וn7bLL[fyJ;lIĹXy }S"tleBj*!}A;Vg+*+v{3&;&lݐϯF0y/Mhnww1JgnމǿKR̀#q)ulf%-u[JkFRqJS ] A_X\CްjB\jX[QoKiҟܩ+ .ijjQS)Y?Kpפw2U]r1y-.4ڟRrr 1vd%_ѡ}S79VL$ܜ|!;3II={./C&"~?$|U߱ʲB!wB!B!B!H(Y{32DSb[PNܲ;غ1]ض }vk93ɚ`ܷd v//0NْtCS_ V|>M ىƺ.6'\NjkzJ:KH+j hhmqx-tP~pX^~-8v-^} >Sf?rw6|_l{wYxn.,4C=cf$_=&?y? wa[Wm.%;-ƓO 0jx}0%~{\l=s p~ R2\5MODgcG>2D Rd] ?*E|q[lgG;`"B B!B!Bz!,3 G?~tvf/FNdeRr4܋$3_o~[7<-%4.Z~ %8`M8n%~47*8&Y__j#o?}/@eyښxb ^z-?ܳPunGf)_8v6R q4C9Kwu][}Jpx.; ^܃k0L]q/Wm̘=G^CG؂ș2EƌܧLiSg*]]f$, %'dg#7;yy-@zj&Ξ &cQСl?q}#Ԙ6Hzg0?"e7Aٺ'Un!nvGr.0 y_n]NŖU^[=_<"{aNA󣮮weɅFflJpxp:Jz R@r{4Ҏp8'EL)˩jv܎ A_H#WZ\*'Ź5&Stw Bjmc$ػA5?~Nٝy/ ü64:ռ̯|0yڥL>Lbc1f8=㯘c'c)*S&N)30},̚6sb,Tr{T,LSӅ R$RxOOFff󐓕l,gLqc'bȐeeݥ>oٳ5'kQ@B9/(B!B!B雎]O㚕%(*\쥉U IW!?yJ܎AنQn{\rW)+JPm}|C,߾v G l]#"淖?ظ<,AsGaE-ǚ].-=",# S,%/(|nX̐jpet m!16%xb|hVg-S(qF(&Fv폷,珂;3ooKp|ƙ-!;.[tOa50z :JŖǜ>nLO S1utL23s1w|̛ &#iӑiHi)LAnvrS<^ӧq1J[SN7o88BCB!B!Bȩ v]7-,ò׫~6 u==I\e^݂O 6܇z eJpGr~m@%w (]*o+y@Yas'9E"20M-"Vy w/ZJnihn'b1:tjoS4Gp0UO<31}N\nOQr{ZrS4%9C5w.v)#2rY3b]w~O}/K!;!B!B!S[l[f_p,Ǣ^"d=b]@ >1g/P3|}z(۰e7 N=3Kv]-KuOc{غv'}|gDB8؎r)[bފN=E'$ƇB|,v7np?K|7]7)ȸ.1ŁF5>>ށ;-&>1Ypwy(3 ; #G_aF%v;c0rX=㮘 &c)mfΘw>? TK{\nmRTWn{ɽŋaqrjuiB! wB!B!B!glqq WU-KUs /CpOK{!22I^y7kM7܇-wbs^ {Ip^> !R]x }Z"ۂJLa}a!x&-A8pŲ.֛j*re5OlgET܎ǡȱm>NK;=b^N[=hitUۻ7-)}m]=n~|=ՔUpPpgSptn+;^ wހ9~+CGү>Sp9r F1cc'a„ MpK=Ej]WEEKp򫱮tĉJ8!B.  !B!B!2|(n\ .V Rp,Bf w)wۻ z$C/YP| !?c%J.6߁vJ{bySr/ӧdmMg_Xf.ʔJT?uN'q 9DٺG/'4# !bt(]dszZ<֊#*GߩG]5Nx_-ǑwjQ_Éc-8$^WP}‰FoT>Pƾx元8.~$yUpp5^~vjkik{W]4w󁀔}N|Dg0z[ r >%׀6yt{w& aĨ1 ]I#G2#G_WLWWqc'(}ɘKJ4d*=3=GIv)/Ba.R I<4>~'B!wB!B!B!gE8ŋl(_%^E1ι )eb- 6/KpOU_Ǧ'Dbs*ܙ޹m}JB/ݡm7ޏo)qza"aZF04p:*(GmG[պ9o…V-^az˝puDRu_8oT^;$b)տ^n8MK;^;-XV؎wov*K ;Ca.~=w _;Pp!{܊>ym!Æ.v)c'b„I누]~{ҁNL"B B!B!BΊh~{_X*-Env nK;o>{ IDATP{R }AÆkM7 ^{(?j/j:oV+]t 'U7_-WǮr1$z*6}KP_ C%s(z].os|L0 py(3 P]S`U+0qTС:bD, ]fT\p7^npW0 &M)0uL̜9ży pA !%9YH 9Y =?Ԃ{XJ\y `QGq=.Sr'B B!B!BΜɆaTUaν(*\E,<#=]l떴 .s47עt坸mxl*ݥD%c m%YpZr@}f>g&;g+Vp)Q!|y.鿡P BDBz(nw\ES~x&4_AoMo04;|b|k_ժ cDy~"Q,!"L.U`T\CXWG0`j˜޵ݛB`ܻq]o&N0z;0 ^GOb~RFadsXF`ȑ])vQczeI?i &M)gb٘9g._ R0) IHNBjz2 r"W♧'O{QU(}B!gwB!B!B!gLGH'-Xdy ii.K=S$=IRpܴvvܶ^ܶQl{.lZ [dS;w ,;9̭مkevll)}qpjDDM)[04! A xnA|ni0Et,!Xf =*> Zo"b{Ңގ q Qu~S5J~*Sp 1=(z w ]Z)3 w:>L5SIC}Z},)g܋ )/Y|%-]k]o~?"iGGwB!BAB!B!B)Cxuߛk ?o rY WR%g$cAҼ\d.uKo'~#(6}ށ]w9NILm2k]fksڝ]g'w}tfkcwk=C Q a a3SҤ)}0aoªe43 ] 2a5Z8߀3ռ)'lF4lEź&4]RlWr{,g,bJEpӀ_C}]-h/kRpTls;\<xR3t ^9)3 Dskm&OGŐaC1,& #Zpq/)_%•˯Fi|a+o"}K(B!g wB!B!B!gL\pWQ?/qӍP f?|s 3i)yH+Y$R<ؖ\+ Rn'3Pd1aظ^l\nYn1lp*Ao3ɚD y>sy<M%үCDM)LCf!0jxz jY xJ1rla7f}jh2kر5.cĢ!d"D4.iN7E˨]m;tmPpgdjZa! ^{| C.:zb//]du)> Ç3bF-Up3n|"q'dB v[jGUW^| σ8r\~t !r&Pp'B!B!rttipqם_ו`Q2dg"de,"{a߂{rw=#Y O+nJmֵUc]]ܙs"x%Y\OۖWEX޼!l,/h w j1LDLKLCJl ï+i]Jq= +]%n)x^h~-˺prun8[x8~w ܥ.:~jݢPpg\pw={k@SKN;܋l=Z Cu #Rp }┩w9^ ܙRNy EpwQpg *u MxcܿfϛF')}>f3?O]6f$ '˗^UוhjrRp'B B!B!BΎf5o EːD5K\cY%g,XոᚻocGd'ֵ{U(3Jp_l]n{^sLXA#"<NTBME,=f8qMm!q'U7q#ux,,?7^} 5w#8~ը;Yf 푨:O~ jp1"vD#jޟާO䂻)3=(KSpg :%9Έg-O: LS, K{{a}QR,.^ed{˯қo}'jhN!\p(B!B!B9;-l}˖@]kp_|Q EXXk-_ma˺v{{\p_Gd'wf4ދ2,߼B(`#Rr7R@[VZpxuLDCQx~%KqߣM-"*y]%4w&vUdl7S76Lq VM΃] jnWfH-zBr3;0Sڜ>+UkK>d0 9B5.I0y*LӦwgc朹=o.H,[>w=V3ஊ:N BYAB!B!Bc YaTUb'f:,[z #;sI?"vOZA,HK)HD )}D \зܻFJi W݄ +6eleklU.[p_#&}6q\(PB_-vS|}땯Ǟץ^[LxOgXj??h5{>>L s3чpyNaq8*RtoimN<|_PTG¿ !ÇaiGm*c1z8rI?q &M)gbʴkƗ3?' )UrF;"fDo&1BjYZ@fLJ[׻=$ew?WpD5EaG"jjI\ XB22u5L5cB^,yLy-c1L==W MOGL5sFS\/VTloW!^<Tcy $ƅ$(_I;wJ֕TRrbbznWWKWφ`1zj/CaNn*f/Fé]n0y%! Cs:cyJjCiO}ԨQ*#G+0Z"cƌ+&`¸ɘ8~ &M)c>}f͜3`֬3g>[R  3ld!;y9EK`-+.^y=֕ވ/w: B9[(B!B!B9/:::`YaM|JQwEp) s䞝m§~ K浻eJr)_܂D6<.#}xCmanVnKRhb06x43!rGDR\A%pAMۦrռe#U2wشt..ǚy9VFמ>H<d"JanPBvroCCGSpPpg \iS7ZZ^DQ8CGTbsܥ>y4%O2ӧق0oB̟Sܳ2 Ub/I2K]ˮƊU͟SO>Ç#PlB! B!B!B PDQQQMx^%JY,Xwu\%g,\ >V~ J;e%ۂwIrN\ٜȣشl\s/uqf-DX Vr]!{l+,%xo0oK팔ޥ-mPļ6J&R[=*a{|аɦrǎmĸxr(jcZka` N]GZe)աO= ܵas)3^pkA;üwU6=~?/b }g% 'NSbԩ3.Y`^ibue{UW^KK6lv׿CC}3ڣBPp'B!B!r^p8 Ӄ}Ƕ+ 7{3";#ʼn\\{R"m~!eb5`b-{N9]Ru3IjuH=ȥ-eo3D+9[na5ʈesfTA[Sc5T+MljFw}MRǮ>W$v}BkD[a"!Ўu b 8r >GsO)đfTw~oVrP,uwXGlj5<^T;)TᄘVע GSfZwXH-Zb[#1kPuGTJ4;V*KW r|].ܥܵa -򹎿3wf0 M{QpgqN[pohlCM]pw bĨ12l܇H}ȳ')2} yQXTŋ%+ruXc/~/v)B!BB!B!By#%wðPq(-ĠSʂ5v5Pf'VaEqՏ$i#ؼ%=߲s|@o]^x5hit4ԶF6:r.R:j6| j#8|ธoՇchmt)[ \R4ql~0^-Wl6;٬p)u b[]LKV5Ŧ8~ 6(?RGQu~W/)_cMx J4V w1b8r{X*ӛ8vQ;~ !!49Q}^у'E.5b^%C bߺpt8[b_ z :wy=iu6)Kɷ"pW8>B*Ca(3 s_ċV;Œs.w>|=J qɽStGp;&L)3tڴ1}gϜsN)gg 7eKW*]N-[ n=߻6N!  !B!B!7RpoO~_ز(*Xܬe1} 2JpKr?\.E",\Y7_§W}OI›՝{1|?@r0׮$Ճ9-yHAMk `<1<_jXdcy0Mpoo Ͻc+PwQh%NԢ8^x ^zUhkCmuښ=JNokrt)K\.Ky{ԩu2r_)(.ҷ<؏P"ŋV%K ^N)MmJiQBNTŁ7WAey=NV;T˺lq7*mM~V qZDc'4W]6zZRcZba ujhھjoi'E&K-]A8~նѩ~K\/> lG#we:M bf\yr- zt뷇;PpwEm~%4uG0,UtKp?n-Owfa9 }Jp_8?Ԝ>%(,XEEWbk|Xqյx1si.w)!B., !B!B!uқŕ"?Jdg,S{fzo/?ѽ?=%)WFzOY9J.F+QZw|~W?-wtZA^>b˪Gay< r,bXq5U᎛=_![9LwGŽqQq5UiRvՉ._oxٗTӸO;s)KI=5t^U^dn.E 1NCrJ^J6%cVxN[zΨ -x9VCJڗ ^W0S IDAT[4][7!;v/AkG(n3ޱx#AHPǕ>~X˄`lYfq}Xz @@3g!_liJ赯MV3עPp=b."]wl=HaqJp U'k{Erj?!!С|ls-Sp0n&Ow>ujo }ނ{JRRr|dܗcQ ,]r5\~ V\u֬_GsHUXN!\p(B!B!B9ozص Fvr%g/SrH.Bfr䧬Յqǭ1lYȎ>Hw&̪G`Ll+}ޕ n]u? ~nwm淔n J\x 5LjO&.c8pzdb֫cz %|K'ckhlɍ@m\_]_Osj~#& in2OLRqDBR7RXەޙ%[Zzc:!EmDز 4.[i!,r>,en1Vq[ %_blp._KHZH |ƙ_pSpgNÍZhiuБc&c+0|( >㑒njOSz ӧWpOZ֥ޗྸx%-]Zow'?gě)B!wB!B!B!naAWƶ/aqѪ{J}wRl=-)IK|f݌W~jެDނ.G،$]^Lش=\U`151{g ]%w0F\7 ;C0`J\pwxQ؂>>uF5FT{ cc'bɘ4ijo}کLd#3=/!,R^KPlΝOY}oJBX(B!B!B9odL{{,;{ W.-yW3IZJ^{,,AzR1rRFAJ J݉[|Gaۂcͫ;3Nܕ~O7}~uc[?,*iE׎&-vdKyW]lC1t1| ",=eeG 2r] !cV|RT_k9j[PCHl ǚBqFJ} ^HY]ޫ!^__Rv=}T-񚩄n4mA:S[U3}`Q_gq-xLt|%mW)bek].<-&ЗN 0pztPuO=#\fGp0n&K}4LHpOOggt܋WcJܱ.g -~n Sn'B B!B!B.,ʊFO׬X쌥}]n ɶ47 K[v6ܺnl\{/6~W=%oe`%7R5RoAܺ|caEsWRelUWV؞S3dA#֖N4cL,e`P.rR7rH!vڭΖv)|wnKbr.p ݯ&7d#g=ǴHgց:'P쳔xohm:睭^x<:Z]uuN#&׀g5Mb}k44u!כ/wy]Rz]p~zPpgடr<wa m/-WMbJn>r$ ~Ƃjo?&NS1elp{62l=!'$[܋IJWcps=/'#@BCB!B!B9-F; p맶c됛ٙaKi\p*wܻKyg~&e#eA62 9 WKMk–ղq5Cn[5R%>wZ)g||_: njIOmv8,Jd2(vq )o+ . VZ֦Vכd8M&1n2e8ͧ6rX ]YkkRV$$ ^S1fx{ 7;v@Je(+Vס%ըvi_tt\uEاER!/-DMN P|RA,WJ1^ڟ:1FS2ŵÆZ3*Q\P!W@ :Zq&1߂NJ>tbY ʊjph! QZR#GWg1(BRS(((DQQ JKPQQ*q= KniPfK$wvEp%娕 ΰ0gKrb?n9`:z܃v/Auعk/̿18es;wp%\"_q=&*_pOԾRnOK里>YCp1/:,&x<'!p8,s8p8p8i47{fo;PZRO"=?RIPePr{(vto{jJ1-Ʀ} ALO@R8ȁ:ދc޸U?y>%9{*B3f~2$yY9Wve缒YX K[퍲FL6 C:jrc]>.J1ƌ:1UFM$;PUCIqbF6ieŵ4u Dޱb(?V$)+,CeE=܀AQanكGpPv~Hu۱a4s76{K1҉ÇĺwXnpd9>*J4Rij=ؿv<"'A_O74&c87iU(/i NkZ./h1:߶Cqm ,k{U^O~^ܷ'OA̫GqQ) QZZZz_yۭ^lsx4|;6هjldaax6ZwsTPPXo݌n!If?/~^XW{6 qJHJHGjr]} 2O0AGaxPVV&7.p8 p8p8`&:=> 6Cjr_$r{(]Ϫ'&}${%t$Dg!1?`d\,1qu?n/AG=/kӲjwA՘>|^Y z67<.OrwۛqPȃބ2(BQ~>*9qyGp`>9CN +`;^RXb{4$9]:~m9%PCçpImRd58f)דN|Yie빠BNC`vGJ$W+({I//u(/Qt>4$Kyc>a]WgB*J|F+Đa1Źah"֣j,j׋c6d>݀@kk bخ^S#҂h5+mB{C -ꐒ; =n2J!Rw9;8l [nؖv T\re>=!GG& .&ٯ]mo%:3/6Aס9鲰p8p8p8&Pp f~?'ij\SI&jմ}Ii"$GmqP#:״7ӥԚ-RXt,)rIRZV~.-w5Pt|tJKStcAۃy7XpJ_]O]GݹaanBNς;ũӡ. .]p!.v .R\z˯+wLpkqOI2aC())7ɺ4Ypp8Â;p8p8p:@ MM(xOc39ի^Đc-P$>{z;imܓ $Fe#)jbF_Lfy r+khNp7ruH:CJBj?h9|0+g5f, Jjයa7a7a# .{3f89vݕqݎFn1%\`XIL)Pk$xZ6h\Fb3 ܴ&sjGWӕ}8 rNN^oR8IvF Vw\ A7NCIW+^Ni;jK*X+y 6);}ؽ$S"d=X<Ex/{I6]VVIjkĸE#+υ*n0X:eXpg ,+яs<69Ta V~ HK.{ 7z $ӑ%V>P1YCg8n?O.X]Gmm\n$(< tqXpp8p8p8NZUponnᖖc'1nDhqoi`?֮63S=>HH1 0-grG/ѫ \we9,_3M> c9@2nLFl8Ve 6k#&"ۜb9ܝvZb`萟`c; bhdLvG&'tV va22] fz,mnSkKnq>u::9QQ^-)MmR@UEn4<,vGh b{wnu7ؔO8v$͗hѴ;|7s ,2,3Qp۟XpoPǂ9%S"w(st礼{ģ G\+pwXp[+UWW_ymhG/=wvjnOǑ5Y$+}G`۱7pT~v7* Mp8Nwp8p8t0mEH"ݺe'> <޹; ;OpOGBtc#9z"cXY4AL$rsca5#Vu)s΀6mO.K}R>u}U=NZI^*ס}C ՙ`hQ[`aly5Pv j0ӫkГnv 0\ԡ :TUQ.y'PV 7) *Q VRlCgڌjUèSw`1;PQ^cG $%$[U?YSeR5d3愧 .[6%pmrN=o?wd4v&oL5tl6h4Yeul6O`wYp? lf̚q.^x/W++xCOȐ{B\*3G 1++~"ou\Ɛr; tnXpp8p8p8Nsz y4)^&MLpW9 C0 u r w5zgZ#X+ЭڭM; s'<{,o?v \+6]' "TqXN(e5rZ!Vb#8r8b_NAO[-(+G~A9eRn߻8(*1SrE52niBG찙UYJU b*IIe(N}qQ\`aM ƌ\tb‹pv [pٳ=w "InO@\L='CF"* ymEASS#o,s8s‚;p8p8p: M݌j6~5n>!g9{OpDB8~=Y 0<{z3sae, ,gsGl>sS1!|Vpl)U[۠A_g)7ԘŸf &SUu&u6X-nٖ^[kDeFk#776:a}~ v9n4XtڞN3L(ƛ%v=e4ZMb$GFp 5+m0nqq(w)pv(,w:x M 9K4sY>}W&'}eg55]; m9{W_2\~яcoᗯvnf4f2M5eWjEw؛Zr6p s)K)4]NRS,vytZFiH9 mF\M>q];o9Nj{(ۑC[O+yܠFi9#GL#=[~CALD4hno4;p89p8p8e!I@ ={a1p0$%dHbuX=̂; Tx, /zXt68IH'yZЭnX-N)uv4`m̄ 3k*7*9ЌҒZ^/[IrWw΀SPSS'v_]]ʊj)08P_-vdɁ^3nzIF & {.If?NaYpgw['\[{EU=+(J^XVSRr,(#OSA>rҏCpPq?pwQ{= :l7oߡmlݶlىچ Y<ނoU>zOog_açɆ/'_O>C#Ax~z}aV^+V٥3ĢgOOL>kpŗK.Ë%$w'=-Eܩ}qرu=moWbgp89p8p8%z<4BBx晥7vR34"H(1l$Dd"W{1-g~FG-nj$iW$Q0m"^%c5U``1Z|dGyY-OBߓJw~=߶rO!NQzQoziN|SSzZ!l6Ypg\ܵ΂&ӵ0΂{ Zj(/БwX$w?H$'Q{w>˯Ǻ^uas/cڗXkʳvF%no l++0}31 <+ط5ueMNX Vn'lCz--AlezTqd% kQ]aBZ7҄JJaPerAM5u>xb}CUnW;"uJњ<~.j,/_/6N)t .'Zk6Ҫk  ]Y~y]v״=>eAEL~ t.[WE5%u%nMl%o9!?-O, 4O,cϷY[l'i!޿KMZ|ݵ\ Ktmv=yエקS>ʧd`,b`Z>}x(KΌzu~Mrkee),1.Jݷ8jh!uL>ZίZUQX\NdA Nx^!8qI<|bϾ#}Au;v*vm_ď?o?m`7??Wb6OOـ?܀[7+m^yϯ{k־k^cʵXb /[ O>,>4<2\(G]~<|><~஻w+Ɯwb;0;v̚urӦi$ӦϖL68i:&Lb)=frF7cTc1hH#1pɀAoP7}"#?Ji=5-[ILǧ!~ǎNDtT"^=q#I=zƞq͵$+\q5JW_?W\q+qK/;.q#~>."OWHW'qݵ7z{w(DAtdb|{RB:Dwjpϝ1/[Ĵ;p8LXpp8p8p8NG.*;|tp.x}4ۣ", %={hj')>*EJ YN0i1),F^}uܾU=73; w3AGx}wl?cF\J3G=| ~pY<q)ztz fIM2^#y6WҼMBJvv(V=@F{i<~,S{wYB .{Ϯ6sQ[ cqtv51ςகC Ɛ; >-'XzC I.W#nJBrdhV $Pw]=L.P#^H6kjy󧛿|ϙKy_ՈZit>$`aXڵ+}W֡GS\Z⒪RT2^飰/>qr$ÁCDZ1bC-أam^mv˖;R~Ʀ _mA"O>?Gxw?kċ/^|=O:Z"VzK@ڏg¢E%OX.XԳx'cOǝ<;ߏ߉9#w֭1s'OSci?y2ƌQ9wQc1lh J8?3ibFô RS,)ɩ}#ElK-MI bL$g !ABbRfQMP:*ĥO6*:Q /Dq4:W=cpS()%wܯ&\+=|.ewʫ)I.'ɜds.oloimrE[/B\|%r )kwUr'o jq'ɿ(-~r{ZJ?d}<juwpp8p8p8Nɽ'@SW/H 6:I>&*IBCpW%'*H1eØ1 rx9FC#1`05gU>5i--f{LEO͉dL|bZ IHLʐ$ҤMb7O%%-~JHExLS|$@ŋBJXN$HvV[UHhW!]#RwF =:$$?Ђ;(&<&$wܳ2E˱{Av99ap8p8p8o{KŁ? wu?2"!.E;1 b8qlqQHJCRKI̜=5jWjܻ Gx{V>r! 6nt@xXY#bvr3m=. 6 6C]b8ڭAz @lt{v]CO@gL?b44} OT۠Tn36f? g 4۷858‹Z<|;*n3p?&Fx{ssDbO0`0)^9d&[dQZ1 z=i::juk@:VVTRBP.9uN<)É'q9rw^ڵ lق_~E?㧟~?ol_dMOÏw[ޖ[ֿW^_ /*k^Uaʵg ĉG<?xoyA̻N̚{dC3O[A >qTLt 9m$k=n"FPxF!0h(K>}Ov Y'dEP IDAT~%Sm+@jN3*rxjT>E,^]+kedy |Pǽ"~:-OmɈÄU8IO  3V!.H$hPEwt*!)K= Q$K豊-%zܯ ݵ ܯ_; J{s%INBFj? 2&JKMN,s8Džwp8p8tzw?fM}>X ArbZU=&6#$yqLQH샬1;vLys>ܜ#VVq. о<!!-NgHg*> }j\+oʸ}2]Ԩ푨޽;ۅ;vb߰uvV/l/?o?oǗ_m7Ͼ/ŗ_!gxGH>h» ;#_ ^z%[/y]Wʕ+|r,]/SO='x .?{ < {{0m7V?f͚SI&cL| n4Ǹ ex9j,Fx:JNM#KFTL Q aZEJ^Dx< q^:&.BۧD&S㛯#یK:Sz\><<Ği䮮VfOhY&@pR-ٲ=Qh}گ߹$kw E`FkVwNRw-zEwUr'm[$?NpW[#zE{[}P[d ¤{046p89p8p8iUpww3JJ*/pHMɒ=~ '^=.J#* #0$kn0f{3G F.k 3:{xO:FM0o<0g9~}*7"-~X.MN)M+NG }w[HXp?7:*Fmm|ݐNCUIpW[Ypg?^poQ][Ij븖Ç5ܹ۷o?o֏͛7c??W_s=ǪUhѢ |)j4Æc!7}Jr*I$2'"*&1޽#ѻg zG!2"ڋx!ݻ>h~TT␐ ? 66VNW _j2?iQFѱmOU7BO"Qr?$km':>7 &pU:pچ a:Q\mCVCCطw?٧w/ك]vcm*۷m;E/ǟզظ+|Fﳍd>!z}{Xxm[xXkx~X‹Xf-V,_VbXd/^gYg^EO>O< #$?! ?os݇;wq'nݟ[o SK|̙3gY1}LLeL'M$ĉ1~7vs gh?F F İa#ϞC4pa@Ao ~Yْ>LT$IgŤd$$xD!"&ѱQRp'=Pxwz%D}(DGljb5$ >==^n+JCw? ^!>Q#{I̞oq=E Oą؂E+X5^84PB|(TY[645'emdϒ8I8)9!I֐" M xjj6"=ߧh)dqLDWN!hI N@Z=/$!9S{ ?\~^^ tCkX7=禈Hނ^+Bo Уnq7q5⪫iNeRj}{{hVpuKwޝOޮܵ4p8Nwp8p8tYZ7+5/`͓?cΒ[#9c2)0fЭ:L3F<#sBaPjy[ZЇ/ "w2;tYe$Z<|O+/?vgXeaUg])XmuӇ-!0mS6|n/Fh$FMvTQWmP[cB]%k*w塾(v)Z,ۀ#G!D>*/?*^R\F)[wa+;q{'q&{(]"wy]{,bتN*Ӷh}jka`?INr`wJscukDӴBVmLy!Dvn!9;I6y݌Y*tc^gcnB kkkQ]] ***P^^.8}$P[??I G>}bسov݃w]c.lw/;mNlٺE ~}6}? O7?{}w}o.|m_^}=^}u+x/bzZ\K,ǒ,<̳X $'§prC=ǃz}^~ݘw=VLϝi3gaꌙ]Rr~{WpOד-t1nD?8UPp~sp89p8p8e ){YRQQ sކL)wgGEadaDY0~L( _$as535$)5 `_o\GC2, F>+>uxu8s6QL_v& fPUـZTWİ%ŕb>2`1;PWkNgdAuu-ul^R\6ۤLKiZ9Xpolޙ==\C:=o~R$k*Bu׮FkmޚĮ[{[^w^5fU6k9 nF bOj[nǯ' (*K^$y>Ҿuyz h;F/&Pf q/먶A~*UA7XǎqQ9rďÇc߾}\ˮ]e I?Jƍ<'JY7xӏ_zUˆq O/^>[~}߽q۝wI{[;g.f̚f`Ҥ[p$7!9c1rDQ\©_mV ~KT8EVez!ѳGo)OB:==z {$ᦞg/4NөȘXR{ż#S^r{GIq\"m^hZh{mQjgP-D8Yp q޵{v̚5_=*+Nh΂;p89p8p8eiMpxw1,xI?XJ$S; $wu> QS'"gPlfho d3G,ƬQp_i#>_NيM<"%[ md@mf轍V"ӐӲR 9|2Wej){_Un aw\|{`xaDs_Cdގmm@`*;5Ӑw Ca2"6Muu ~4NB:^TXbdpdcصknݎ-[_Olڌ?ۈ|CQxXkx~˂܋ k_X5 X-XyɪaٲX .x}:MĔ)S0yd9T'Hny"&N'c„I;v<Ǝ''g Sr4>0"{dԬ ef =3 YY$/Arjz0iHIJ#91U q^)=.^'INNAX'21 }\m Wbj-oW ٳ^馛=}r{+4 C῝+[1!=B>ʏ$;Dq\=ۥrZG?;AhжUA_r2TϿ#R69 %GȧmF 4;"b{$) SZ#> htHvDpאC+'5=-5+{81>9OTEq^X3㵐?BpOoRޔ(6}X׮ /CyO;{F(zϑ= *.Eo݉ *>bD}t8"l{3Xpp8 p8p8鲄f9t:\nK/JQt[Ϟ}2QɈ%7e"-v$f-#Ofl}=|`$YRr_-Crz=d _CBkD| UHroWA7tai0#Ps>T=wӘ1 }[ܛᶻᴓnmʶ+_cx,m9n|jnllmjHMiiSu(fujw'NEtEN$l & f 4^_CmM5u(ByYTAcy8rGKH?x;ݻb{]رc'o ۶-ۥ N8=_য়~?o7o7M_믿W_}7O?ņ 'ǟ(2|E<~[H~]9|ͷ+u`݋/_sk_kd+d2,^O?,|!{l}qƌ'nqL_X$Y edffffcbeI-$g2dg6 :!>oAJݲ$ssz$W-Q) !';OGZj$%@pn/cbbns$Ј@TR4JVH+H+[n-x-2~:ވu݇A7j@HZ@.Hڵ㑄v. m x_%Yr[y]`%[m ($\hY7"vexxW÷(v5|7_߈R(Rh^9QDQZmP`Gqex.7DhfS̗_[v'=UĐT߯qщJ^W:xC/x8oB~(/rlǖq{j.K߭˗… T9s<ٿݳvlxWŖwq \Zls ,YLǼy `>q Ǎ!CC8p0w/.]@qq1t|dffBrr2|>޸r8([R,F³BrH\Il:(ݾ"B5Dhڠ#b" 骥Z1QH {Nx $&2v"t;ybVvm\,\zz.xGY kdR>,Q'{Ip7%VG#}wޘnLƂ5Nno]usNp9UACCwj7yC;BP(/'$S( BP( BPv% IDAT( e᫾6wO௪7W ׾xG4 n.7'(c3A^os5 7I.P1 g@l^=rAi"螱ʸxS'#ogRp_ ze/,MeF2roֲTd "w%a]$+[B虵Oe:}υez܅!y xpq@OF/LY<=r)˙˘'&o6{aQpa,>3'gW_W_?|{Oϰ-)<9퓯௟~ 5\DǶu%qANؿz,4sYO gB66e >3|1GG}?~~{ =-<x׿G |߇A]PSU^y ߭V;+:._gNq8r>tC}GYoF/(+(- ݺBݡsPܱHgоH1}Q1vB-YY9:22 --RS!5%RR 99R 11TK/{<>Fa\؝(/8nfv6l,w˲j;7o6ϦoAy*q]QR$F4pX Z,ZKȘ$.7eB!Q/~Dz#:z(aDj AވT ۜFnvoDZ5\|^s#T҅9yԮ}FsvP-́{CBQl>D֎N=:<1(;U-[|eѷpxn֬nWsNw,DžxWmx8^ #֗ \&VyĮ\+)3 ~<>ᜉSi>H,EDAq^ J Xfx.:ΛDZqЯ۷?JQ/8JBʃ8|(UJ=;Qlo #ѝH}EY(%}EV--,lvbjeJnW4_Ffܝxg(9s]e?xݾ ZQ\GhF-Rpgx.hv_H=^@z?A'Vs|;/V~,f%ã@yB2e6L?'SrtQH7Q\b$}]h~.ͣ<J(s?w6. |c{HVAs /́+W{o₻誓NP(  BP( BP( Bi(w?opUoBB|2#+m6WvD[=`#*|H3o^Λ +,^>obNFm 9dT\Q2Wӫ`  1rsg#/Htv 7 z#S9e= q۸4 ^{I 7 升n8]std5K9ZS(!P>R(.;e|,6rA0X2o=~7l߶޺6l 6nu77…a0i\2q̘F #MI3ai0nd$9b, 20  }^=@ii޽OKJʠ[(.,7w v)n]xkxIйsw:BA~'H+B{uJ Xr7=(cc4s@3@9aEkB%2 p] زOO*PXGqr>Phw.Bױcc1z;sBFџ;O <effl߾Ǐo8^A;BP(/-$S( BP( BP( u})<_ b;aps'q\F '-q\pwEBt %3,o é5= ¹|H=fRvO^lY\G~6g&޼-+atG fC KY)\$&tR >>Y`$:4-o\=_M a EJ&@Ixvxcck.2Bw!RAL_(@R@~RoN#7= +2K #Lzl7NZlWHxpdAnvG)+bF'6 !#]S!5% 3|Zj6ONrR$%Bbb2Ajj#-KDveN9x.&>ۇ/ adi|N,\DFD=1";^"mssVQK~xmsBl+ H|ز( dnS6> hCQ])J/C"QmUno΅cs8LD"&,TpPdƟ#\9=ZlsA@on=p!VIRon,{D!\fx!Z"{8^@w;ea f q: n&|QhDr/ra^/[wx;Ԯi|b|||T7.6?{_z9cLܐhw‘7^oz$GZ xe-V T>llv> ^=XxDT΃(((E@iI~CR^ے𛓆 6l1F N&Ô)`ٰhظq3WW_=Ow$S( !BP( BP( BP(W~K?CCŕf۝1jaTp79l-dpYk--w2tdžق^̠]hCq`>&E&BY@HI=gnc+Sh(8ЁHFu3mNhvE#d aP{:SC~ K ;d%Fb5 lOdj q ='Ɍ+c2¸(gv:A\$N1<.0 2,sdd7&N]O$4pF&#"HcQI˰۶DpXKoDXZO-(L6h23dwd;}lKw\D6ov #mq;Yp}tˉ8^N=v9qD {qDlj{"GrpIx>-Np7m(bݸUS*II1r ;6;AVla"WR^)exeC|n1-f.IoM=w`{d;K -!܎o0w#I=~ƤܛCpw)cKܕm鯀ޘŖ$I K*S<R >1ɩ"IMφɃ9\/PT:t(·(wNiǎttb;wӵkwJHI2 K~RyV&g;-? aCG#aQ0zjƌ&L'f̘f͂s¼y`ႅd2XlX&zs Z֮Y6l6sQ}Ӧ-y+»;w{aoؿ :x9O;ᣏ}=w BPZ?$S( BP( BP( c$P_̜1dܝw_{Ojm(gךyI}8kt¦P?J |oǖ+(7 䎄.9l9àsPN!P9:f H@P &8-9ёY``SFD].loy=,%A#DbJv _ ceϱ2l87beǏkXa8"E)aӚnpZ>8be>c|픸,mπXv8~|M a8r{ΉDYjF)[Pȓ?.#4܎#.GA'Qd)FO6qAvqaml\2;'%3&KJv+ nuīm%6wQPHvYGǍO:'J)Qījش sp9PR6͚׵ 퍡jyc `} ҰDw Qq?ܕm{PwKセܿN!U{U?K;j@;G+;Lw´pw7Gjnn(afq p525p_(˲:6s9]$>.IEdHOё¿GKrr$")ib@j:emԔtHI -(KHy.EW(_ОсSXT ;ACСH.Nݠ{IO()G>w 7`0d0dH$.&LIg¬s`0o|X`,Z,Y˗UfoܹKǁ(p)8}49yΞ: gϜ.p5v\~nܸ͛p{!ˡU~{Pq *ٲ pY]jvҲ@Cmm=]SS˩?g}! v7 ) BiNP( BP( BP(V1G_6?6mzzE8cnQp4,A1cF~q pےcK8G.$8 !!Y ɮv=$888BQ(|6'lL"bƓH'eMiao6#ID[%8vD"آ$0`-F DFƃ%"Ljv>C"%ވB0`pl^򉈷 h@>mJ|'6f ߟUSո<xٱ}j%[l[…zBnxU"]tpmQsHqq[\grA0q]h`3yo ?̶>#|x،Hz\2țnjPy .:"[wUaҺ66n6۬vzuZl6kSq-(kH "fRxd4a ̓M65Ͳ!#!2`"LdHkd s!׭jH5V6F(!zTHycLF }.-Fz]~FlB7BDFWBM||[7Kvxo.*xEN6q;|"l|Xⱕ7%^)λc3b1z۪D\)ɞǫk.o.q$ĄdYOrx,yN eBNV.dqr%r!? 4t]tt J On2p :d8c ǎc0utsfσY pX$pR΢Uk`uotlu6r֯7oު-`ǎ0]ww}{y8!8p0:t> E9ǎN'ԉSpi8{4;}Ν= Ξå䒎+.vܼv]7[:nߺ-pܑ@Y$Cyy93v#U@%PUTqUPU~jT+$j@%We~8ǏQnSP( mw BP( BP( Bz;N>y_}N< Om(rBr({\  .lFݞȦI^[*xa\.I1(G0R" ! <+cxfA<\ȶEe.Sޮq휪XDDɱD!.7ñZ걲"mgab C3;[\2V*x?İ谹a@ofee>nVv A($r5ֆVHvfSb.m/}#ClH}V85ܚ[y4ڊM1mfr{X-n h@WޗKjoNHa8y,"T[6*k%Xr D(ܯP^ٖ-l kl:-"\ gSo̰3~H*7gRj7jGoHbElo 8<s Eu)K %I-u+ 졁rDPru>wAb=%<11ShQ7)6gg@VF s %J IDAT O _  s E;A.t񋂵ۧ@_ACe 1|9FG-Ș` sƍMiS3T̜> Ξǘbx%²%a79o@Vq֬Z mԱy۰:oإc<𡣼y9~$8~sioPΩ3p…Kl$7ҥ+˗իe\j/y6ܺun"Ewr۷wΝr;ރrFrNey{ E!5lY̎[-zeU5:~ݫ(׳ij( Bic!BP( BP( BP(#o?=TVaŊ7yK J&(ɬؼvwEɝ38^[x+p2\xpX!棣DjuDZp3\6'XmFf[T4NJm"Qng1!188d,Vgp:|k%2&Dı)Z<Fk\l,A]ߌ h5=4c, &ϟ$=PA=*"6Le!nt_޾Gd; DDD); 1""|(45DQ] oi_=@6Wyݥi)7Ai"S.{T 1.HILl אiOMR–3Ғ3"}S2!+#3Dr`TlgCбC';C׮ݡ[ݻBH޳goCzo <bԈ0nA&N SLL: &̜5[cٲjWoTa&غe;ž|I63b#ñI쩳p9Ϝ+KW v:p y&[2wo݅TWTݫj BOe_Znm5\~-26 juu@SS[ϩjo_% &S)gc$ QjhM-網Z;ZK~g_O5 BNP( BP( BP(Vr'~̈́iu 2C_@pw9u bd=(2K$hlj"q 7['[lATC@njLjsa#qĸC[iB,%{T  .Ë Kp׾"hw\Wsn4~Ipb J-lnumsܺExu{ G+6P f44/\—ƎbxJ %%T3imuK@ԥۈ 񉐐Sq%xiFFe:@\T:3tꪢ[),գL>`Ѐ:Pv c's& &)0iT<~ f̙,Z˗ЁVVzYVy;s.صk IWB8DZ#GOc'3\8{V pE69.åWd._ W\[¥pƍ[wܺ+ bxZ47֛邸-5U5:f(u.ݖqUM;DdW"l^h djUx ?JrcVJb[yLjHp/܎q~_|={NP( w BP( BP( Bzd~7o܆q&@~^x= vƽn$7Epw8nXrwb>p26/'hcg,n &Ab _pj-/Ip$wApw6Ipަxyr{Pr7;%V^_E]mta|̘VIp'w!&s^eZ%}]*ax\"'OL4F*$&IIM \ׁxN]T ݻ(+ ={ѷo g@AAC`࡜!C!a0rh5r(1fIgjf͜s׵ϟ-ZK/K+aUհ5fZoYmԱi-:vl {v{w9ٿ s:p:9>9y:\$p⹋ /¥K,\|Mo޼C)߹]. %JIWTU2PQ%PhWJѲ4mWq$ر#!HN7[/GڗZ\5֥ǡo(&fpDs/Lju6#lt_%ln)6Oe!Ǣ̭V!-GY|_㵛_Cgϭm5xse6%NNC.9݆`#xx}q3 66vq$552ȞlbdAб}N2.9ҹsW())V*P֫8XǠ!`ĈQ:ƍ'OLw|.%Ke+T`kUkaT[6o|-oo;ٱC`]k]{an‘u53\8"˲0~Uz:pM߂7nsܽu#5;h%ݫ4ʐJ!`\UQn۬oS:((kXBrU\TWW1qyPSe.Y1cV855jF|+U7[ݛ"÷-llU_ϟ:裏૯gϞNP(J  BP( BP( BiS\᷿-̝;C/D][۫wq삻U!ۢbB wI\a-4\Z"|=wN=nڠc~~m?3& ~dTK%[덛kW cy0jW4m2N9ڗL7B} چn#Q=܋rZ#!!T$&&Brr2ʂ<PTTCбcGbN.][nݻ['ӿ@`Ȑa0tpÆd&OIpԩa:̙-сoxհf[:֯7c˖mmJy\ɾ}C29r =9~pY]Y3 ]+p^*s5Y"quo$uQGQ\P *r{?L\I-OS[CI5U7/Wp7hFX@On6n&+Ƃ_>|1|wsC BP(m0$S( BP( BP( ۟OCP( Bi{!BP( BP( BP(m"ގi8o0e Hτ8_:xݩv&#:bqmJpׂ#h(F]pA A)I6vnl??Sv8|a Ƹ2-|kF%vsa?fu3.##G8z(O<)s)JgϞn@~%/_I7oޔu떊۷oprlBF+͙ɤf$?&B6B$˫o( %ݪPɜȮlAW-״=fN)!ܮSj("{Epʨwck@dc-֨.["cTBS, 6ñ3x[$KݘmbbG%9[jF1N}aAcnQ6!\ftg#A%uwxO<xrϛËx4: qdq*…oI#%9RS3u1HRxzR(((ҡÃCbرcg(. @nPZ#H)=g={C^}8(?Pn@!\)c#G`K8JJƏ'O3g̚5OΝ/ K`!g),\.]+)"Ț`[`:d#cgwwزe+؁uݻ;CpgӧϊQKmJPz[o~&or떲,}߹s zɻvoA5_m,R6$(ZWr\D  CqCX[[юKv,(νܮ2Co.s"ˍU-f灀둿&+ԯ*QD](P#l.W4WwvIf7^m<0.(1} ܫIpo&G$^{.jw|>|/$BP(6) BP( BP( Ҧ"IW_=knà# $gۙW&иGphˉyd-ڲpBFw2D|.Уk^GiDCd; Kãfzp[9^%\Tg]"(:ĥ-FsIg\r%Q۔nQ6~}D=&fV7r_ʱ;/Z<LjM%A| Se!99RR2&KGzZ6dgCNN-"‚P\ :u.ҕӥK7())!4>}7cPLj%cäIStL2 Oc0oK/3l^z-]N[oa&ظqMwFoI޿ H!8x̡G8GOɜgGO>oCP(J  BP( BP( BisO`Ų5Pҵ7$'dq].`ܲ]x.GJ~iayN9TUvJW e`.,h6l;G.xL~p,l.c qNh7jI2WHύpYJu'4zq9eR2 5E/geAfz.de ddgC J}Q'^3c.йSwYM.%н[=DEOҒ^ew~ s), IDAT Q03d>l4g FѣØQTL?&M&3ytδ`90s\sf/sjXě-ZY,x,[&,_bjk`ufz8k׬7r!\ [lӁ8 2;ݹv{>س[`^>t#A;Og@Q2.^\|\&pE1\ƕ…[T~={Pr Wf-RۧC/ӧ?P( Bi[!BP( BP( BP(m2?a^>O xIIvyq{Bx6 J9Nإfo5*9"ྂx4`נ^XWq UD~~9sy +$edI\OJJ4HIaӔ4HME!--ӳ8ِ!#33!<;r 99ׁ݁K6wvQܱ+tRjH.ee(ѫg?{ 9}A~!0PY8` 8  #>O>fc& SU2$O:OS3s\.ϛHyaY.Y)t%,[|ʵf 6nѱcw퇽{8x:='q%8åK7T\f@\~G" .5+s\D~SYQe5MhEoeeAjgWSwM`V5!Ҹ8¹vX-=Vc4(CbzSZIp {M3$^~sհ@rܫIp 5$ʂÇO|7sNP(J  BP( BP( BicG¢ˡSqwHM$i/6kpTXT-qb:J 5x^M\ {d\/h#.iq=XFHĄTt.IJdԔ M<[GvV>(^EA~1tҁϏRY=*zAd #FQƨ=z,L01YSa֬90{<|+EPvYn3l޴U;om[v@a{׻ts; 9x8:x:i8u<9yQ3(m_qMz嶎+o差߃7ܾQ!s&ު] wnWqA2w_:7J*tT?Ԫ < |j 칮 pa:QplDv{6xm{Q r 6F._xZ/C6<=`"H[Ñۛ&^@p7*+q\k%tZ@!sSr7>7fMSxQhc^&j_UHromgyk{w BPbHpP( BP( BP(J Ϟ~ßNQs|H;{Yhx.] rU\A*ڵkpun7͛p-s6ܻsޅ{= ףiS喀?(9ᷪj3YX rj Qw_%jܗB {x`y@¹Ln][_fqb&p7|hוy8ۇKCg1:$7.Sܿ ++ /2ܕe24…pEdQ|s Uƴj>.#)E9T[% ]RRWr~!"f1jJPEǻ_+P"zb}Bs>DO}H\(%h3Q.3~3D_A'wIp'w}RG; ͆Z۪VE%K?XhnǐNP(J  BP( BP( Biӑܑ/>#~XrR۫8M6u:5w/?xmWu*Mk|/efN; $N; ?v=iqIp',#3Ç駟w}'(?. @r;BP(m.$S( BP( BP( GjRo/ CÑk_f>$ܮ0#o7xn1"zP}4 >90KFZAro 3]$PldMM@G 95mKp7@{Lx&pv?P7 =PURAɾ1r~3Gݯ#1}XmuZ1ArGnOpK ^?_|O>U y{Vw ;&kwmu_[lV[Gօ QQDE8@eD۪uu]Z(pw䁇@$yzI ;BB!B!B vFS6Kzc]5Nwק?}<tSwqEdN5]9ٻTZ~#mݙcx16CS٭Hk{]M.Zjuř t#ls;nwUrW 3yCCw[o۲ڦm69p;o/--?N D/ԉ)N!8% !B!B! bgtyy9Ο?C9en.DWuG{v3pgΈ;w 7uܭ3pgwO']|1+B!`N!B!B!e;B?~}v]mMt^[C%]rZmw]ywl9r6Q톸{wW}ߢ2gN3poʸ;ͿA;+rw GAQQQvo !熁;!B!B!B|3g7hPG8Rhn[0e7O:6p߁mW-"-MSGpNPUcY5-)egՎk&gqב2p{KȞ={߃qg ugRlh"nӖRN5⦎Uܮ Y؟~5w%n JKK ;!J0p'B!B!TUUG_1]K2ha|֮ 3pgN)w ܛ쓾S }֭*qr(^#3p'BB!B!B\ZLq?urrrJ`(G}eށ{_w+oZfR 3pgNv{=Bn2pmz۷l">MLp?p@vFBqAB!B!BqYZ-Ν;};w{ Lc%Wn^[,gg_lF S;w ܛ˴V7dw ܛ[n.`Fw~zzsE1]|73p'B\B!B!B\_|G2+roL3pgN)w 3p S܊m[`qm r.M !焁;!B!B!D{qq1N:%b}̶`14E 2{brZZw)+khZMߴdNk]Wĝme@ޔv;v6;]%rgnBkrwVfXkt/M*+àܭ.Uv떭qU^vܕOt PYY)͠;!0p'B!B!({EE7wTS|Y3zҔqmAk;†đccx{G_7| 'an6ߍnp^/?XzC]>pw [wۢ:h_dqqXxuqNBqQB!B!BqI]w\_|GAyZ;&3pU"w 3pg}wkw%\Wt]Yq "ltV !焁;!B!B!Dh4%%%8wrrrge!یYFwh(Aqpw6w )e;wW3p]}1r7wK뾃fdq4nmxln&}$W۷ŋQ^^^o !焁;!B!B!DUUUա{QQ8`1kn)ZeCI{9ٍё5w2pgybH [ǝ?pwd߶n-v{L>ٿ?;\o0p'B\B!B!B\%pW>~\|ѣGJ3pgN)u4w-9p{sܳwZm'pW: ߶zb#Gp磴T[No !׆;!B!B!Dܮ⸘&&+c];m,m)pm^W)p߳۲3pgNiw'pwt4튁{}]7d]]!r=iv]![4o#r+& [z ve.oftT.4]?%pϖ5]w,#//%%%vinKBqNB!B!BqINhF++wJ䮄v,"cFv w)d+]F; v!p϶3j~3BSFwSu:vww.I.56ޒVW5%7t =nWsP񦮉3i஄ydTUڷn]RZήr~1=s.r~>ʪvӿ 4VB!8 !B!B!$hzbPSD(;Ε.;wJi Mc\ 7.pWN 3p9p7}j]o˚רO1l۞Zyn.dFd۶=GV]K|ڡC7?yΜFs/,@QI JQ@c6un;!0p'B!B!Ⲉb'.pݻWީogw6 SJ3pg^_~5w 7ݖwk υ5ԕUqb{6xQT999ViJcp^8Y=v09"{G=}FQ IDATt_P"c^&GUZ-4k|x B!wB!B!B!.Mun斟Ç1A]uLk S;w 3pwsQ]kՊ8d{wViXV`47U`֮+MIת+e*vx+-?s1[>VB+CVDG[k&sѸ+Ѹ9glnn2\QL"WO#WO7UD"W_mAA V[ZXdvMCZ"RUIܜf2TvSՁں3p'BZ !B!B!4 ;+++BD"RQB 3p;w+ZuؾuVYq\Q[Z]as ZgGM8on|]{P:O=,QʺCÅ< >[)p+psFbpKQ8>E<.I UYڲ~ō ;wN!wB!B!B!V+"2J]SKv3pgR #p+zWOekZrKӿx,娧W빜j=9U"޿-j͝o:%\=-ܜq%~8NV[;7z#[8~.+^3,s[C J 3pgN!瀁;!B!B!f2]L<3pgR ;Kn9Ǻ@@^{NrJTnǫ=G5Hq9 7BӐ$qib"VBoSsos0w yF.[5QܚL'eRxEŊ[~5wK׫Ny;wB!4B!B!Bi"(EdM@;wWú~P +&triI\ ~R̉gOBӒgdωgʞ?+̭s~-nsӺ.!Y`ڼ\hn)V榋~]&thqMа4PwtsS m^__z֍-][nzcp !,`N!B!B!١;EsQ9|RRuhe)fW&ZWՌա+0q#~Θ{Ì#HSWtmg^oɮfFKSF’`ܜuwe/hvOVY^]ǖк>gֽV=j,W+Zg95'Tyh~ 8X2.ՓM+nr.@n:\6L$w"/^2x DDneCX6\.ZxӋgQ~U[&gJxCCvۢ l"i}Jf%_"3:hRcugql-d{qI JJKR^j2BqBB!B!Biv(;Z#_MJ."BGLjw怘q;#wۺL[~ٺ~VٻcF[wWܕ7I5FKogkA˓m _4Bԯ sWvɩ9էCq}}>O@~a>ܷZu T-E߶zhݞ;.{Jt󓧮՞9}h.BWB疢t1 tI㶄E% R -}₆_Y& ܋̛/w3ں1pWk Z K g^\Zj%u%fdN!g;!B!B!f[">W+N4;w띈^unst"_Õ FEѪ&W ܕ祈Փ[K<${Tءò#O=Zh")I"6zVDޒOK3g=6rU[g$OߖBp[=\ϋ/W*&_$+ss ]tʹ5-MWN3MfN7Y^e;!`N!B!B!VWI\\”Iʤ\[;f}kn|jHDnmdi 2Ժ&֛ W{oRܿ8P{ҷ-:X; ?zV&;\398|r(~ 7N1=l;$ce.t`޲,v@mw 3pg;!B !B!BiU?O݊Vut^>B:Rt(y@ /gPyFAN\ڱgS?}?G%9~)r9_?\v_bI~}_n?~}cQZ6\Aс(?~Π 8qp(<{@L}7z*;Tkk-m*q^FB%%r+B_ i:+% z)_ۚ`ڈ[gMoKQ=UGߦS[^W,ސ ܖYkc&7uge5r)W\oDXXhUw{EM)w y?stLʁL5pwvRH[Z^Qu !bOB!B!b4\}:lWvc.Fʠ//8ڂK(pE'#P.ށS?C_~kWakR_''13b4dOŒ@d mDNȇ$3$N29Pm#ksp?/?aO|~ACʿh%uu55 a\WRo=~uGNW+;ԕtwa.Dl&YڜuՍ2W3n`ݐ >ějBocռy,p@QcUQ!noH{S{ ܛ"noq{wB!8B!B!P ᶈ-+5@eP^ CsgQ~0m[/sFrHIX: s87z#+yY0G1艇;z?p o=W==x{ڿ9${M822K2j__.M43_š?"~ /@_Y L~z}<^V^'m ^_{D^ٖZa;#wW}LvvQJ_2T&7Tj &,-Ql`ƈuMIz"s{@nPjLFWֵml(UmzB5a_XNpg;w 3pgB! ;!B!B!-e N|9B:"jAt* A; ?{#P}[,' X9cǎC{_³߆o  uuvߺuQvt^/: ~n}}Ɗ1;,J2ՙer|z)[/VEX6.k7"ǯpT?~ڂ WU%k뫯FĴz-5(w=4&Ciw7wy^_*2*++\^Wh_Ea:qDܘIٖB/GOrw:bɒ#B[td^b{1@g܆>f]%p/i(kmn!&zٴ|+[uwܛz;͑ k"wSB! aN!B!BH @ p]m͜q1\rY5t+-BUe=Cq1{N~9׮IXQ6]L|<_| ^&9HK šXr6>X9K3f =u:23"3- KR0 "?IQX; Fzrg$`dܴ"_]?\o/Ų0L{L6cP97ԯ(<"*ư-śEը"w^g;ea;w 3pg;w 3pgN!;!B!B!uzTs8 8s'O0e&f 1.qatZ\,N9r0KayF"V.Ǻ$|.}l w_Ĉ}DE8o(8x/B'mGTUJUCw*p3|&~0p[ޒwK:w#w ܩg :k^T ]"$v#qGovZ" ܝ0p2p'BH0p'B!B!tfԫ/`B:s!-dbF8e+ۏ3gpvޯwØ9Hob3ͿM}f6Σ5:F{7F[9`o״sG.ѱ;:xinڡ-'wuli/k;H:_1ֳbf{"354Ӱrl|&6$bDdfAjt$")1 HԤHDcq| ca ,qX4+3ZrÚl|rl\0zA<|uxkWM?X]6ߡ`_ty@$KUJ7V xx]KvVgvF*p4^Sm #lEaK`RgcQ;CvJ] 2|RJ}D^8ںw{E(7ZR:B.^ÚԮ52wB!B!B!44pWiq)5)Ūoa6#EbU4dL0| xy1?w݆o [Gt״sC6(C:]_۱=_ץ#u=pCWwzc;<ϛзØqX> +aQr &MAFJ(֮ذ>7,DfO9Hȉ>0l~}_~IA> 3& 2"LAܩ`̟p$,9H[+c8|a2>޼)39':ޱnqw-mpkVީ=:yAE*9 ~}@IPU" Zɚ]xaRe)e,;wBqzB!B!˜^+Vjplw^fʸDl\ϖWVዕh"[8RaΝ@/DLIS>'3eh|/qQ1 OGGw+n۵F7VK[֮x/`fy13?f|sG 1a<J!nDΝK CjFlDMA _L`_5s"DNFԼ D#f~'#>i-1X5X!>\a@\VgkUv^̴($dž"jDL)GC߀W3 {a$o$N9aXO3R͊ |6_J">$|a[=5c\߾53~x4 i)AX0#| BCa֌AHHI돐ޘ-AJL' ,b<y!0 S (d BB90&LG\R/YtmVo&bͪO=x-wo?{]pW<7\7o&ӘHr nJ֗n7!jT Xa;2^e,Ki܋m( ].pwB! !rYl޼ڂnB!B!("*הU <}S2_iaI6^W/+Ӱz,NFوi)1vtzƸao!`;:zGP!7 B&af)~ݼ?lXMI(,~1x;pcָf)L0s|4񱾈葘7IHLüo̜Б: `\4Ӧ{!"&0;:SC}1v0L BMyC%LJ`X<)xaC"w^wwl i{ lwmzvx!t` OKa'p-П$wF m*Q덇a3 )m.{:0@oi{1~J)E Ѻ-2p'BR/~-{j8lxgü !B!4z4.pWFkzU|<?¦eAbMKEX4W.X|!,Crr$bC1o*"MAdd B0qPy1uL7A1ax?`w5az>]O'˵dU*֤ *x y}?W^Əz3#텨y=&n4` c:c(&N}&#z B" eYf#2v&ycb&"$|_h.^ڪJhUA#VA5 )e^KkG)2pwݑq;wB;޽qqqh"n,'Z=z^?3olB!B!MCcw%nJVj/@WRgqmnX +byBLKũX, kcT,YE?3LF >k"%CbdO Ghh Ŭ` {W:0 &tEcl\W-ǫ13I0?l<|c[ x'!1{`̎9F : *[Z?FC^BϣW;b:)X6)Ki)!>O c2{" ̘)q+ HJ%3ᇡ_}w]nSvSG֩Ku _sGڱ=nrk?ko F)s|= 6?_JTR_ }j;qC;wJs;wJ);wBqzΦMjҖ1qkuZ+<<76!B!L3Q_O hY|d-'!3~,\̌X$+bT,^Oii!P?L ¤#0yp{aV/fKDoa農aw8f fÒذ"lZ/>HŚ9H |Ao (7B1g"cGc|oG.3 <^o "FY񓐶*17>C}1.p8ɣ0~'&{crXLG<LAј9 c|0o?ӧ"%#۫yqcWtm :u׸.ps׎ wt?wۻtunuF ^ǪvB9ˊU\W!Yum]s1wO2;wJM3pRJ)wܭB!j\u{bޯ_?4zn߾}=o^˖-B!BHӠ ܕ]7twtF/Oo/?}gec/բLlKX l",\$^ŋ 5= 7!<"!3& (lA`&{b¤?>`A4Scd߂כޞ1F:>f&CHklZI> B^67BC"| ̌sF"lp7ȳxz) ix0>dSBt.b#('0DS q{@/'c0uS#G#d'fż$$MALD ܉[]ڷB[5ns[\ߥ=n| n w7wꊮnnnɣ5^.x )cuR}.eBWB)Vz1vy1pgNi 3pRJ3pgN!׀;i2Z-vU+2e ._;z)ӊ+Zm\wAZZ^uŋ|`B!BiTMv%p׉a:-t^mh/-C<}'~^ҐX R29 3RbEJ#69#|nB# /{ xx =0m Oų.cbgDx`?B^ Si0-lƄ5ꎷ?^|/0^0^~q#xxo>09pq_P„PO_'!$zKz"t'f n$'"l'^zAuGWt ۷B{ax6v쀛:ucGtts5bo7{=״œ/w?o|={?ބK;Pu)"鶬߰7o&Ugnw:kU " nWs>M)6]S1VB! ;iRbu8땓SN ܛwN!B!8fwZd mtNe%(?y n鋱hbFH2c"5˗&ctdICjfF!">1! B01;q| tGᝁbАMx 1}FyCc0\(|酩c׳Iy}hW$_pϗ1hѧx{̋. ~x敿o>ocj/"b `(xQ~9~F&)c8sFH/b|1#"f9p; ~6\ӡyB[݅ :wwtjN<еC[\ױn('ָ; ~aĎz͛ kpy<{ (.*VXRw};Tsoh-g'qs ܭ ):55ޥeaJ:Rڒqg٢ug {C5QFc>fim B!.&YT*B!B!JZ#4<!>~}eGˑ[~GQ=0j69 }IxizcOL ƽ/ `~#Fw/㭁O7‹=s ϼx~wxǃxI{ CFSaI:cw_ !ҺFw1j@#< 뉐%Gl\&܏]ڠGkskC6[CC~M;wtmE.'ußۻNǬ`0X'25TP)gen^q;[3p{K K2pRe[_ u !b?&YA1pWB!Bq0ubzFguz**PU\p͂dyzbS}w݋pߡXi1̈E`$cfBBC0y^ LĄL1a~샱? ^cc07zxI?y }q> xoo ߞ#{>?ߑ a15UL i;E_CAtq}x慻tBWċS# i]__S14}{1hdO >FMk@ )6g!tp̍0-xzp:S"t7ZCDn ]ں[{7vl;;ß;Jsm~鼁0`o UCWX*h4ZhZhuv3pgdV;R;wB!4_&]<9_j_]뼂lڴ =z4 &_p!+hzԩS7o^u j+O>>_>>:t(ܹׯ~~~HHHC5}nn.`r~ IDAT}}}"h?w\~Gwq{QNNwZ_+^ YK^^~W\3g%b[33f̚5 }#^t+&n+B!B!.]Z*n+#(pgo))a<'t#z?1}pņ"3u.f"*6#'a,L=9"a,? PoMτa>|`x Б};7D>KwƠ^(6h15o#=UxzÞƈaOk3{_W0=7fo!pj1cϢכW/ ~<_wW˯=(xw'0xD0{2Ue[-7IVeV3.fFHi{,qz  ,B·,5,HBMnz{Ƕ\b9vbrg=xy͞}e#{ ? UNu-J:FkXFF0-ZqJj[z9r0[5QVVE"|T]g*sg0l6QfXYE#y|(IV')ۭ;ܨrx y O'yد~y'8'N5X'ZrN ~Dp]SdJDp]"H$".tvAAx]\ /LuݡuC|U߹s'Z519{=g?׿S'C$}<ox<ƍy/|0V'S'>0Q۪_X1 'r?y<ԧ>uc||1g?Yuܒ颞*~}>_HWw;    uyخFϸ䘲 1^ wr+9|Blws}'n#~[neˑe90ސ?L`C*7SSVYӓGR5;6%VXh0kAπ =zz Z322df'WOɶ6:Nڻ5aud_ޒ<^ű!$m˳*B{측[IkS4P4}?;keۍ켩7@ {@s`-.Yx>aN NE! |Z} ,3aZEF+ cM\ֆQ[ ͚~} F3sq\*A޽{Vͯ5w]:z>]n ߋ}brbh¿   9U}=c G_~|殡:cW4gqa3J\JS=}vnu+Gnơ۶r-[wvݲmG6֍l92C ap= >-5(,-u Fe}`N#m=f:tX07hfhF_Q+;wUjv1A[v=UZ<90֢mikCKs,<jM4t8dvFkVWІ73V`zs]{c+7sw#7gx#, f̞9Up3Jg$2lvHrO8-GF&2yY${<nl7;woؠg>=SLc>5EpT"]K(ϊH$"_r  \o.\U.Wp\ZUxgB*-WUU~'_xmrTl& _Wشis?OתV?U(||=P{;vLK?]vMd2q}_GGG'kJpWZlohۿyP;iTt}Uǚ*cOKjZ}y7Mަ|#U-Fڇ}lʍwoMEm1*j}nm.z7v0u7w(=Avnblc: +"Y0o& jD>{&gFy[0g1ݓWsY6Y3)\I0[:͇#Op/ߎc'9y]] ."_v߈.H$"K#]-iR"  "" W<9չϠ߻wm>]X=*IOɂ{CCÇ&C'[_]?>!:ą>2*i?`{U/--=ϯl \B{u4]LTB} 铫;N8q7tӔ8p__]AA:e~Fr?oyGwy11,53 Anr Վbjٺ;Za2Ɓ#=8}=lzٸouZǽ~*ij(qS꠪ހO_] R\Ux늨i)@C@gb]4ji+U]le^/[t (1,lt,eBr*kM)6$1$SӝKmkC13p6*c[ 71mfʫq -:Svi3Ǧ=~morndϾf6oiIrb4QC{$}^Hn?Y%sg,f1Iqdz*2$F.$)2 #}ae4rw_'}'O}9Kp$j%c8qJ"OGMwEpHDp]wD"]wEpAGwr%}]8vFqbnm>Y8ValDb§{gW~p%c*rt/VP+Og=o;z###}V]AAៀ˜ GO<;bS}mkcD͜Y>6f`{9rfg'go7[ug[㡾˭CsOM]4vxils+)#b^ۯUY@yUJ%_6e<<T7SӮCHI<|]E4uҭe`6eiOC][uث0{л(RbYƘB!"} J(ҩ{ %5Rb_œOVm< x -ʱv}cnU0խ[9c}]]lRO֮$:*,$ϛ5ɂPvUpFܪX֭[Kr,aG.$9rQXdp")YŠC}C<c ; ?9>~Jr|Q]w%Ep]"HDpK wZ9"  pUOiktttb {{{*-Pqb;UV'ig Ԫ=Y ?~p{]cǎi駟7[׿>}^"   \Wp?W|K݇2\ö>u"X1cKg`ɬ̝M\MM2zٶ[{wܷn]lP eT-x&*-Է VRNIM3 P|R*j)ZͧVNϢYy}5˚^HSϡ@9-b]&v԰` [TpWP ]Q9^ [ov9lwF.gd.,[A/(ϝ,YUZHX1$FE~b2bH gY"𡝛wW80UG9g)}|T.Mn]wEp."K$KG. Dwr*O`+)[ߚx;T)}'iۨLkFphS]]=O"?:K/4cL?    OΙC_ݳ[_`ww2V6X%f$f ͛Ab\RV6hjv_X=;tpwݾw;wp cvhhu[M{O^[˨ojS4*:5E7`HQ'Xk;PS*7vԑO#7TQο;$4d)S(0$SKTy\L~Iy$eO!_nJز}-fO&eut4!=mbdѭ5Sγ:rJ.V:Gmt 37haxEon͍V RXtJG̝93B{YQ%shGxGĜD+YFd]L4i HIrƳeC;6= >?S<_GMwEpHDp]wD"]wEpAGwr]}wە\ݕܝN%{\R?>3SG=G?)m}i;fw=f޽5.Gp/~1h4fhs 7L{RwAAAO !I18y|]r>VˈcY,73Y2gKfN8<*+[i猪- sVu~gߺٶ-MJZ 痢Z=Tt4Xi4*[!ހݛ>ʖuЫi> M=GCk6-T6SVr d4dlI3$S!=y"$rJei yze!|j4Tʹ8kj),V1)!L'~ƯYĉr p\jR%wU8y"D2 9Nߠ7E Vory"K$ן~Fl?Ip#+NNhz܈. •Dwr]w5c=ySK։m;;;/i[u3sڜ-颊ׂஎɲ#V-]}w}tv]wAAA5CU5<yrqVdP*3א9-},h-5&%uMx0V$u%PH@)\},%q{V)=MRHp*QRB~595JR( IFOV(&w:fWv:*kri4VJ}S=&zltZ7cLo^ =6;,֗PS (IĢ]Ӑ,ӱdb+Ʃǥ/¡+\\@az%҈DϝˢٳY2/L\byD8 I^DFnLt xp'}/WCcCOg|~hH%w%"."lJ$".~)DwEp]A܅ %$͛-޽{۩Tx< z__UUU'x ?]Tpw;*_Wpw\t {]"   \ǜdr1E^x{{]=] s[>kfdY,;kBrWuQX6R_#`ES2zthZ=lm쿡7rˑQi=;Vu<\**r(d*OY2e?yg_/w<~=T:::&ݺu   \gLC}_g?C;w0`YÚ0Ug`,3'Uv?#g&`/I#RSYHSA7e;ieD]4 IDAT*OJU%J[;etu*\45ioO'm} z`/74?uby9|S2L*i(aZ{g{ijO!2KIZe >%3I #MYri fmu<ڂ<[/W3_2fJN*O|(|{(oEp]w}Epcy1)UFg7BsJAA]Ķ@?jgsOiNG>7\p,_HpW+Oo׊N$'W뮻.in[*   \xߞ ocO]-udF'v,""z^sX0gT} ֭TB}U14tt[h1Qe СBkZ-l F9s 5fhܾ̐4|&a&PWOV-uml,MO{V3~_U|eYDҶb*l,4*9!Ny=4lCGW;-MZJty 9tSWgGa 먪n%J̾XtqVg\ՓFem.F-.O$r)'KI8[8%+2&kI&ߚB:`XO? kEzkEhJKq:@c}С1zyéesm 몯@]U 5y4i/Z 44֘h24P$7Uٗ]o9]M%^6 ٻ{1Jgc9 6ēEz# cyOωߎC)}~:oψEp2-}yw*E֔Ȅו~ȵvw~(o%][pus܏;~NBR" z]\?irSկ~u۪'o67y?LKpW1:4q`ۧ%OkIph'gr "   \oڂ*O?V5J7ZpW'~ϴSB}pg}N'   58՗OW^>i>sc.'Τx D!jEjExv8+YF9-ϚQd,TB+֠B*2qyRqTVg:*wchnjEreSNWV 5 :Յ8+1;cbĔ֘Fd9%u WhY+lsiYiT4,QA} mѕ+V95-q.8u ey+qrגSuѤ)I-fmQ4䘗XA} e-|fJUqU᪊̷2 x+USIR}iO%GBzJ608jexF}#eSFSF%A56t쫡:+5U%&kl7i ࢽE|mCAnǡF^jҒ(!oEJlY>i_0?c'Ep]w%"I$WXp]"?%".  \)Dp*ת~|ZǸ\]xy)V+ȫyvϞ=ݿfws=G9/| S J7q=k_5*y?#I٨{s*_Kʇ?sN?~ν]AAZ"dsQXIN"/~;<~in0sb,5ׯALV*.%!r1bHf]j d 9 ؾ*ض͖=j*غJjص]{]]Ao yѡj%~64Dg:Oj怋 ZT\Z^#=2m]v[sxMr {8yfrGヌm=;PnS]#".rD"ܯk]"NIDp]wAA>]xQ'2<<x ܵcn ]J2'sq8Jӯ~_'BB*JoψkĉssZr?~ljh(Q]A'בܼZDwY%ܯ~3 ,  .\/c=礭 ^5y<w&*"   \s~XwU8 '_> 'yMlYh/-XLo:Ga4xJr*-o(TTH6]y=V%uFa7ᰮSIIXʒ(L&X@{Ul]ϖ=A,'erZp>-*)0%%d%JYDv>ԇmKiYz°ԄS޸HR?KP<=+(o[K޽B:)uē]EFAhYAN ru3,GNY^:6- ַs`esW&oҿ?]ilNq$@"$Qټ:TQۑICOME4iP^He0om6,ܾ ʕ~q:c4P\Gn22/!;cTr`1)}i -˔^5+k*ƢkgGg{qj[~m-16?7>/=$'_z ^9/BIe?G׳~ޜrݯdq5d7:sxDre#+jWK$R~9Bo׍~2%Ud?vʅ*]]AAEwA/CUϿ/oM=<|K_ ݿ*zk_ URp%Q WU~NWu"Oz=?я-_P?C_:8{BW   @sӥǕMQ^_^wO^nk ҚECA&BZˌZ<|Ь#wUqQdFI<3nW&f.I3IY:XKmiOj_ŕ՝^XH[17[n=RASN 3{6TQٓA9c"ŖDJk)q%sOX@w9TFa .۝@jZw{P?K ?O[<*x,Uq|q+W/7IY*}KY\s5Frlj U$'s912|> )91>.[OUJFRj4- 7x9<;nC6*-\듰|RvV9#+G{^V@1>Ep?~z>&]w%"..".  9_:DAAjs>~J,>?weտ/=GaKn 3^ M#N n]W2Vc0֫{*ѳX30TX6PYݖپ kY"kYJ׈QmCl4X tC{UbpafPdKp?m|<{#wy;ykOsU e)i!;o >$]w%_DpH+Ep]wAAGDpA?=Ep'SAAA6p'Cr1' GG_aQ׾GpG3{ܿiɇ︁ݾwsx[;65spc#u 4[iu4$ac$PfqsȊCiZ4nM2eY8quє"1VRY>}1}f:Jq7lZr=  ɳđc^IyTtBp϶F* Fc6bY5Tt&(.!߹Db1.aM~ KG܆0rI,R^_9!)ޔ>sr;[KZ}ɔuѾ{r 04CW7pJj"(س9eYB1t]Jei e.%$eWi9k2:j$ ΍%3{%9(,^ޘ^Qњ,љ~uj)x*T}&tJ.v [=7nw[ûyρܷeex߮]|_~SeUqeP N(]wEpH$".c["".  " \nO/1   W ՜TEWo|cmd݁Zxm|C|n︉ݷ޽޶9}7K cv eQZ[5XW-]M<5MdU?IG=3TTvP\>%T \ ɱƆLөf%d, N9g=;] IN;{r{Me4QƒeY%qMs\۱Vzmt8KhQӐ,\K2dr ȷeRȡBec1Ս6j[Ki+ϭ{g_-4T(p+;F9m}ax8˭Tg)dy)7^ ?oۯ)ͻGޝ3x/J.՜杻xuxg(b?<JuE3Zq{}  K$pAO8z/b66668uׯ_祗^ⳟ,W\a֭l_ۇ?$AAAiw~3ps&~?oM͜X3^n<'SOϜ;73x:W/183¹cáƞVs`C=aJ-}F*|p8iHcmk#{@+gZ 1S9`[-Ks"GSy׺ֆ` X퇡c6P;Pjƣz@.:rud8H(!:כ0&{BVVeVoQZ%Sc `JzÕ׏z4hJtX{)r>Gɠb=: :u[CiR^EvmYUdH/WƊH2ˣ( $F[HaCe-z+cxֵ~ uuRQMnQ"h yq)JR&elQVFc֞jZ:Y,LL/Gpv,we&Zkh(&?2t/oL4f90~s+ޛʑwZ*J.(JT)(b %p]wAA>H.pˁ{qjj~   O.yKn֛o/=>ϒ\S-' OSxgO3'6[ <:)SS%KW #Tџj?J&̤%(45>jSUF!5a껑{R/ҫ+Kx eá؆)lTGtv0atIn[-1cɮ"&JEG$w`T%L 4?[vV:kED d) +ˤ>G "*[n-quMTU[rS_UHWKK߷wpb 6M>Xk U,2hH`d<̟~͟q7p(~ %p]wQ%m7WDo=]aRwQs%p]A  ٳgwMMMOAAĽ[ݿ\߼;?)orIjIMaΉmpO_]xgLrdO/뫕MY61>jfl,q 6,0:SBdڕ6Nͦr(tzRݖt`J#^1H,ߦ#՟6;|)7P*'q(X1^CbBOBs5貵fjkN+瑻]l5!9*"W]=3DyH{'OR1|\ylCRNaO2Xx,]ʼiq]ҵO !TʻT(:M 0't ة7c&a*Jtk(L +?CA<9Tlf*-[(StM88j pS^fNnqV.ɉ]+]d˸Jʳ$RAV`EZ\|;oD9o~4K.(U~o-LW1/r.]!n]wAA AC/}^z'xsE^x}RAAA_߹{`i ֘k+8s'< O\G<>|sWKg GO37ָ _1>?WVyxr\I6ّ֚z4&̤w4H'-LR7nz@H *􊩔Pڛ͙'N1V1kOE0,]!ttSm `cܑ?2Ivh WdVhO/⻑k5wt5&fa*bƗkI@nG 8pE? )2~eП/deI'`nG~s"dwSeܙDMme.7 ;h.RN9 }ncfAd*QZ[+Sb7S\jZIks9ky!{ݫ\avKJq>Ԅ{x쭥<55g /??~kO7|} %p]wQ%]wQsK.  H$pAAAA{:bܝ[k{ %'[B Sm\r+ SiQ+EJ:L)zϲ1Aߧ% ˀ@b־z)Iړșڝ͙FY_b l]ug5Q?h{ƖpPVC%dS()9a"ȏ"=/Zc0Z((ϠDI V8lӇ9yz9ux3Ǹpf gg8{jGغ`T6PNE}8(hJ*(-lFiͦ}&ΥW ZкC\-F,=6g0~6D1 Eaګ7@JF( tnwܞRO\7jU Mj j3=NWʾ@ݕu*)ђ#!CK9P8mԟ =Hm(pe~*&(M֗BItʇ2qV7)c6e=t=9S\cԴa.N&LB M:Rr熓^=$,FlbM~q&T9qvpxf~g;σgrp =LuQSd #: FE2jդiIdǮÿ/qx1+!D(Gmy9DQ]6n]+wAA{    p/];w?k3RYE^x((fy.>~/>}{/1^>~ .s4vkK G'ss ;7:X_kfz uU;VHK_&؛(o.0)theH먉Q#㙴ϙ^ͣoKMtdӾbm9E=-i4-DjpP>A`(%AQ2Kр5V_EMKpf&~{vWЮMW5pp<7ЃX'>ah%͇n/ }*]2@ᐯ;x/Q>Ep2deLlHO逞4X=Mt.3LP|.L*z{2͡mRڊzZv$1&hJ&.3 dE`,&ךEy$,EI%ls"cE 5p6\:̃gsl*g{jbNqv Ayy#6PGRi~Z)1ljNk/?7߄$p]wQEQw9DQ]w %pAGwAAAAA-(rSm>W8J[r"Ckuv<0uʓ|S\=ΩS1mN~Q*]lr= Ku,lgnJJh0QZŽ%hB/ d#OAe(՝i4 d4Ih*-tdӿOߚV2\I}%$Z[iv:*CV`Q:ũ!EFMݓR-ŞXTr=xhey#w e{<6@E"*J׬ВV%A S/w^<u؏!wt_6JH4$ezeΙTf(N>N\ aLdu eR՛NUW ݹTbsdNLrq袵&xK|/i&YycȵSPŚFaIk:9yd$cV(`f3{Q.ÁN;oFnZ1AwA$XE÷Enӏgo(-zZw %pEQEQE D  !     C^Ի߹u(߾[z)Rk0^3< >%^}!>{2m16;پޭN QveZ K.2Tj# L.04SJstZS(&"ldxaTm1Tw0NX2mzW2_˦otܜJ8Rvmv 4/DS?ID5 JTal@_"\M|bO 5DXT SjlR3zhPBoVU"XC|5<у25v5iU*2d5i0jϗAwn@q_0eCQTP=5KѠlݱTeLmLFҩHS>,J1Ox7!>}%2чT-rC1EG%d (11&Qd͠0OC\8;غ0@ՅB "ˋ?e;@?әɕ+W7yߔ]w EQEQEQw W.  ¯"     C~߹k[7|>j%]Km^<|p#68smT2Udֺ9r`ÇٻN72R= Y\ken*qZiΦ=6=%u䕅YCٓl 9aSݗLD zzV2pnJ{5E1-io3] d1/&Fvg2[W%8"=كZR*˵$y_%Φ%[їBo Dy.(ZǦVx"SmEie74x(!CKaw-uË.?aT S5Jx;l6R?M\]+iTnOfѨ:gk6` IDAT]zz K2FOX7a>DƇ觨&9ӏ,sr+'ߒ^b+is(cMUClZdyNX᭜>Ƒ]Kwl/ #>-Z ~O== ҒŠ.#cs#|cÿ n(o@nI.L((( aGwAAAAAܾ}wy;nwx7K\ul $yEM&.Ž2pULU1?QM5coaaK,24[t%3U V28wbZnˤ1$ *"ɶH%ɨ!NRTcPYbK~,ޔJz;<±|VXYT6|61Ğ,Fw3-p#v{`nԨX%nR%S5zh_vTErcȩ ٥&or4Ը_;lRסNjA_죁AaslGS>/4꧲hͦeLr> fډtwޢTk7Q̤6s~I~D{IPШ@"トI 6U06+FC^A$@> sN<%;, s}[gؿ1ǁ nne|=с{ ܵh(F{iHPj{/]:p맯w#_@")x{UbxQN?L^sQF=wn%pA#    pq ݁mn?+x+tY !KEb*sK}\سɍY:*gf-6c3L-7?[si;]t>buJ@!ꝹvpdPRLae&[(@R>gJ "YEJ/yUػa2zLe复elxתp9[/ZrՓ,13w(YLqE݄}u)PKn/ >dxQIzt7RJu;C7:e~MXڃ(ĩS T}v(텥CK^sr[Cq' r,`e>z°E*I~*l:Z)}LL{㴁Y=sgm+JW#6ړ ]]&MJ:9ac΋#MFf8K 5 5m{ΰs$;6<ʦA:1# !WK-AZB==HP+KDC8x3A({K.=(zo{]e~Z]wAAG$pAAAA{̭۷x&]7G{ivѐiDƃo9),sf4zSFZ^jnGq?eTP7Jy%NOe>zҡةt@K?UTMbW)gAER933}kVM:ʹ/v-p(ԴR\!+ A*E5!Z#}'*D Iiޤ+s(r0+M#1Q]iX;+=l`Ұ- ,)z)%[V_{@O :Xtfqi"xEoG %p]EEQwQsK.  3    =u9֝;ܼ}[n_G,.Too"5yPbev,{}9v+goEV 0\qagUeydEAQp.}*UD)Uv-='&OO?[.ܼ%(ѣ(J.r]w %pAFwAAAAA.v{7uo:_ϳXߊ%$o-I$S[p{)l[._ 9|b=Lt=UKH&ԍUP;RF` ETX܁{UG9؛ uQ۞ɀ*ܲ EsH!VEr skX8Z 6bǕ&?:uK:Юtw2/YbሑF2q!CIlMs>L0OͰ7~ =JzATQsZlݾvLGts4M8s4 m>`Zf Aܶ,QwȽχ#M&ӶIZےOZk7\ʡcHCX {Z=VCbIq$%KޟSt_32c` ##3 2"(iS޳ژmcvDٞdzGx"BҪԨѨUhTn^TdҔ_v7[ɏM %p]EEQwQsK.  5    +0}oO+5þN*еHB"-ӱ8q{Y FCi c`-L30#Ѵ^K }n#_S(zעh_ qڵ{j#a6֥t7eѻňsHߦ ܁{ 썱&*JE\85I2tƐ!;:2iAHrbYgPiW^rp\Fg 2 S//TR Vl(_0şry[w %pEQGQ]\/K. }    pqGo͝ށw3gxhc"l!4R,sn.^9tjX;I 19LX+/*BuQٚOE F* TWGNq$9(w^ZJ--f0[Or#v&3qH Nj:lّsk=) o`j&gVN[OVl5NWx9mL.dpk.s)ԍF r(zZ2{ҙ?ldHbd#1mĹJ|0-S:ƃUƩ(~&օ$WZNùܻM4col'=ۓ *դ%kHWMvKJJ/d h)* RG|{wCF%EeRUMKeE: (/ #L狟ZO ǯu}: L˧׿;?x|KJn뺂 W)EQ;Qί(ʹ^"3*?K.  AAAA^rnn;֛p3S МBK%wosKC<\r'kݳf|c^z蜨u t٨l/Z@]W1Vͮ={S.-8MVSP܋IT6riOͳ$+^; awÈs#mN]L{[t'ӷ-ѝ"s3[OﲕSUp.q8̭0`7|sv>G9zY>\n+| \ʢ~,@:=y*ͱ0*yM'ۛƷ'1HJt6~nd(M3z"vtm t-^̢m2 *hHL !YEbTO2ҵ”84p8Ұ+͋"JFZ)=ڋ`IƖښMuLS K큧ZF֠VTTxq O=xMܹ-G%p+.]K.=(zwG  |]AAAA%wo׿|fffs볼9>#Ӽgu.fby -c.\s7m_[v%VE;+Xذ1OH&qcvUGF/FTWx۠˗pF/W?3OrN_tz0$K`xSC5-) )v$ҾGl uaTf(xj)i&4D4 1jb$z㏩ lp*oN@[Gm򰗥JJi#w}}p qI!1,@^xhUww/wj /tt؍i,r}7y %p]EE EQsK.  5    =ߺyGosg?'|Sǿ'W>|sO=œGqa[cUv2uMC3|'3MtA#sٲ7\z2iI>rF?s12H$Er5*jMM$0G;xq7>;σsri`f{&8+=&E3; l͠K:IԏEa 'Gw41UH&"EEtD IҼH3a $(2394Z: hm/B] K^z@b}I&1›0?BCI ^F@Oo|Txvety7nyrʽ»;pWC~B$"n⿾?η%p]wQ%z%pEQK.  ܿH.    w~{~o~,§?W?w?'짞S_c<̵.У8$'8Ɖ+G9]cl޷i& 1ಓZkeƁrܱsvb|8,ݑwݏ6ʶ. z(:?0:ݑa/WqZ.?V9tΣ,lN+z9%~x"^Il *UDI $XLGz7EjdTjѾܡrN(U^CƙGOrI>|vkY9]+;^dhtcմV1!ą yO8էrl;2&+i/zx#Y$Iv[VY~d6y5nn^=FDz+p׳|N>ZΉ+scǑ\.`r-hjI$8VCpaj"= %=/XS)oϠ302*I-WKP =Ml9VɫN~|O pfvx2t{~ ŭJ|}678BQ](Y~$D(s IR5Z"$fV` &efPmtePۑE]F#5Y8YT őBr/1A^D{K֟m :/4>"w/V5xTF/WR%MKIϞ. ~-p.p+ ?K$߉ȱ-%Q;*u}=(A{    pqn['|xهx?p78gsNΞ9zjGإCz8Ç9p~7Ole&6c~8NmcdԖ^v[휻G8ϜgNp.Tޕ:Z*R1Oh֡ z%-CK0M:{+Y>:|' 'i_eh[*3Y?idazbW IDAT\v6e,11a s.&iڤ4c>y===py2Ӏrfsg^O(#XIK h[H0WӵJz~y ƃ,+`hXCeFKӦ8cYtLI6#w]k6p A83fAӥyp$6݉Tgb]u"2ڙhB)OT]ƌ&F0RUCQ} $wwuiXSY5UPLW35. ].$L!=~V] ۯ X>\"w8W#B@ @ ]Fۯ^ƍAΞTno.S1 Q:!8_b2^dN^uо$5,âM1osi0 |eCU?^eb35FOVb$YpWcc4`dLs>c u8lBa6&IjKBDZ^xcgbjPTcTVASERj_*Lhh6PYyW."t![BpE.""""Bp@ w ! @ @ w7n2x_oGٸY)M8 i-c~}9uﬧJ{XB6mNQ-4Q=yy5RHs,ײy{/ZCOlcؾ_Ɯy3ȭ%0oB[-Y8g1L3<҇*;&N6~,Q]hRtqw8'U2*=)j3b%}V/ww WxбЉn[Jlk% IX`**heU;VIG1iSFcd=KIaSF0[ @-԰Q_X]s(qqA41,Ϫɬ9Uے,OJj*!:k1Xrw5ƘHaLsF][!"`VA m$"'9XC[LRdBvVQIyA/ҩ(AZ|V@WSꪌPUAMEUYjT4PUWCMz^]M 55F##T1_~ͫ_7n ]BpBzEDDľ^Bp:yͷ[ϼ~O ?.@ @ enސr&pGYQGMQ:y䥄2+-9Y TG{MմYKcӾp h_ü*+k)iMkEs[)]Y|-Պ?{vu+}U4P17XSCh~NcKVxg[=4S<ı8M[Ds?"=BgM!RzS:lsa3M˜^΢ ,tj#Mv$;s7u&=Vە5JZhiQUNPg4 g51pf=4G+/5,\$&S:7:D|skwaO"kw&ѿ:ޔTےgAxξi2T ]}F0r4z{xw<U$æ`:= p1>Jgi'4r2ZJo,Qjez9pdG]ذ5[Y;R[ mAiM2ٕQ$YAP >xgW>Rr,a{>nSv*^YzZbFd9UDWN#ޔ|Yn_F:?o g/}ҭ,BjdMT4õ0vRaBp#eZJh+"Gʌ$FMVf:48-&yo 6cq 2aH1͏ ߓCl;ەͱt- ə ;s,[CLxLbjCBdwX9FEJm .ƙKm_-iNx9+*[A[K,hEOk1eKjI= {PBtTSHꪪ"WoWTpu>JM Z#1z) f{g݋%]_.% ]DDBzط}܅.w/:/,_~MUsW2W?߆?ߎ?mA@ j.ÐKyV#&@ Íץ]ƥc֮ffАL}v"ÙOV?qSD]E=sYkhy ٵ̞ǜB;i鮠}r:_E.KO,K[hṇ! J$SEZE ,$ȉB{| l͵/ׂ[3bLnU6ڐ\oMj%3;l)sn7Bz;Ӹ‘tn}uk!p*.#1tTa2'(1RW -[#4PWǺD35k2e46>O.t<!:i7b zCX)3L>́'3H:%ls4]CӗY4Xw &tZNg9.-T[ŎsR1+J#%-ėp2b)JO`ny.^ڍ,YMZgSR=Yٔ͡RgQT@US!sjrI]m.66ԜO}Lˤa:uqdքTOt;a%X`%ŒB BKYf϶ f 81É/tjk|)k|ςVԬg:WjVybId0pVfSǺJQad L06>:5=i8p@ ~<] YjK8? >zwz{)^s[y.@ wʗc‹jo.>,w*bBiN1?A$DBd'GRBz6mYmKYjJkr)3t*(EyLʪgPPDv^ YdDSPD *gPG{G 4uRߝTcȜJb /u t+)XVjAx%QUے`Oz3YnQȍe]K`Fн9>u[RaHaEM)YfCRG2˟sܔl>j2+3VU4E40Uy)8M)l1YX,C'cD9mB5 LGZ=,ÖC)x2Ϥqd>#Ѭ! o_Xx$]NӪY䷤?+Bo Eބt# x%: x'$Gb^0!129YP[Mm ZZYW͚-\Ȣ5fIg -4W艥dt5MYp RƩi2EM #U &Mϛ=x7/r܅.w! ]D""Bpi2!21C|NkCׁ[+I.p%.?ųg8{"H9{ V?̩8u}N|.6Ǐc_鹏{ɏ?' qӏYaF\6ےeOne\ʏ͑,ڝHXRnMNY6 o I5 (w1x+3NIQ}M04VX`f; ǑX_,0~GE1RȑFiKj!U. bhv>O)~~.bmQMQPtYj/^ʥ ҸKKrO9}cN}rO??ı˱;o=o5?57o?_~u|?9[mޓΜ<'xSiN3p,W/gp27^Ai^IGގe~tǂz|$=ro?˟_:qGq/[, a1owU.^,NNWwyѱ7΃QIh!KVH#;ѲzlE@-!΄xKt~ !_ARq,ɭbV}>(oEmk9=u4w̡9s󩜓CUe7 ;簰f3n)yĆxae2q#PWACC M55TUUUg&#Fb.SPVoy₿܅.w!މmJBp8 ]Bpԧok ^skW.qu@3p.3(*=S'9q>}6/7?^Kw෿~߼~1^x~ˇsyC_#ǃr'b퉮U5Z[mIDUF֚lFZ-ݎ>g*{Q< qnNfD{n$ɘRLo4&|*3uqI45G;X5̬&t3NYC޼RȫKgff1K^W PWKs#˻\FUYNWo#]TR\BVz3(ɍjV ITM"JwXJL; 4Tn jLBKQ:D27,z~'w! ]DDwbE.""w! }X1y *CRՁ CtgOqIDI.9Ss9;|?y=y___ ~Q~tƑ8|` b۽oR]z\ E|)+[ˑy6xx<=}(/)~³W~_2oG>z N~N~/O3p\py5[ H㚴let]>rSzBp ._ۿKwYʼyxtӛb#>Pw,?B IDATwYlbpsǿtL}.,?{7}_7yB ~IN_H}Bz@iJ3M(5ĐM^n ()OcvuU 3)EdRq7 q5M^6lOl7h_Ƣ,UeSOP2RN|=qα"ƚr,Pu$3az9imdj6i^{ѽ1e{sX;!d7[G| oDt!E>ZX|kd}c4 #[5mзSF_sTfSnJb2QǏ;ISz-M³uH.L,-e7 ӾӑvnOvRݛM4mO@+g#>F׆J[/&*ǝ*:h^QA9/w6s*i\\_M>oY+Yc [ldöլٸ?E'͌PR s$*܉JXUM}U]u䮩&EU]4C|ʫ_)P.!y35ܯE߂y=M܅>>?|9*>G\a\.s\>?T}©;ŅSp1N>gN|;÷?;^}9~<?px&Zػm9.a~)}Rzپi(6("۱][{"l[,K[,[Į-ع_j[wr\š=k9=mGv{ٓxCWOe971i~>9& .93\~Y.Wy~*7_:*$w@ x` w,nIåPݛC$}_y c߈1ߗ9vMu ~)/V+-uLG?W*/JevN 3SCN &3- ''?8JɝGZN8এNF8y+e"TgD9]EcW!+77jG3 ̦'ȘgjH&Άz'ǂzꍉk4ܥ40ޔkZi[ϲ}=RFD<*7$|4BYaHXypO%^J.Nab; w]0qVWTn7pTfS2Y _5ôp-Vτ/,mJ&+M[y- +]Ev);:۫)/A(p&8Ȇ0{ܙHc}6V4rq3307Eg஢28h2y ٶt&&쒥|90x܅.$wCZZȁBp* ]D"Bpp u_>?r 0p".¹3\<{ZKgOq).;'tcEso]Q^՗~o |(O͑=8c{,cdžEl_ֵl^=Mش-kH/"?^!V:*߶~>7,`ޡlj 6Kﳄ}ۖq`r^=8w5[cء<~d Ǘopq.~zb(N*DszQ>0xcHp@ <]0lAdx|߂\vC?~P~R9d8kUNY.pC@#_\kWiu^L}6֣02ޖz̈h:U '=ч/HJ#53A$(b碇Dla=p0W},&cf?K xBbVmmdɦZZ1#^JJIse݊yV$5ZJ9^gD\fJI3$Fz\cNfKY;Mнie BCK *JiDYaLD>AypMUR|{Js$fn:(JLSUxƎ7qqxiᕠO&3FP<tYS̙4mta 5XkCZKfcMZ;8Qҝu4oOar6?/a]lfA6yuqwdҼl6=ѷmnjgіڵ7l!~Gps}*W.YnpN,Opc;=/?VI2 x2CIJ$6֕_݉w'>Ƀ~$o. .> },bd=k]mt0mVVG?Ji_G Hs"ڊ*SbScDlBl#z QsߠOR!5TWaDr%=!tob͑*P"ܮ띈 tU&k+s‹NM 9b:S-=41rU)3F J;a;qxD-rA*F܃2F[4Zc ;ȉꕮYLJGf-#9-^bAR f,Z;PQߓˆ'9R,fŞ [X@rli[;g>_9.>}zǞ>C#{ٳw#/avjMxnF=afzA / Bhm!tR0oΥٽbH߾R{DÛcx#_>^)}+{z]?S8{+/rOƭ] o.6]pp}F o[p]7r;y|Yw^~{Mp3wƊpow&#_[Q.&m@_A6.vL:TUTqIEAԔ&QŌ ݉u""ځ(MIjfBru/ OSkm t$ Ǡo1ZL3LmGfDfI \^HLʻiRTpO ڌSj JHxKu GĜIDUO#RR="f3˄6Zפpӵ5&e D+$Z ,ƅ4`M=0tUEZ>Ϊ90^ɶJLVQswM|G%E[?%TQ#N4-" &VcV+{)[D ِgI R{̙r,H&s#3=(^@þ+x|j9U3EtKߦlfծ~6ZîGpPܟ#O'g&6lZʊ]͡"dctǖ`'#]s%(΅$܉Mw'!݃,_fP]Da^8֓HU%ƨ(a5J ㉞6bWVd=8kC]t\D܅.""w!]DD.w!?(]y}I׮]ʕ+r\t~Hn?gNrǜ9yS|ȩ;o~<޽ݛeMkvfI;zq+X]ǂ*h/*TJ Yq2kf47TPSA}e6M5XHOK) ;*X25Yl\Ul]# YM=m8(ۇ"Wy?gOZϳov'Ow?^}?8{STs?~UQoߛ6u qZ k.6]pp,.߷MQV.o~oO"Ip_Bp0 %w[pK'm @ z 3x/qm,+/"Ǎ8ja:JCmUi`X=[̜IDCx-Qv;3=͛LS 7O#m1X;O~26ѷeH&1XISb*d =N#f/>׆1$tE·P?i8x*LsVb2SA }E1tPYKl}Tq T-\Zx&1 $W2قn l"ǂn;MI4'Kn35'KHL|O*E`,=~^_mc23,X3;Y{1e#[9v®}ؼm9PFqA*C rgGc'ОpgB Mp',ѕdR܈Iu')͋ fR^GӴ5euF:m2FTxx6o<8zO'܅.w!iP~5!|~E.MǗA! [.i]**}r\t˗|&QTn?wBn?}Nc{yO߱-YXʲf7^MGl .e0cz8ɱĆy5N9hxIu݆0GbI%=>gRȜT3iCWc1,Ê:V/% l^Ķl_ ߼8}9$塽+x8'n䙣x=G?߿Ļ8|ѻ?1Μʅs\卫Wy nʷp㳈@p_#wAۑeNwo+"g {*o/ߪz˷DHcJ4! anw|ہ^p\.>~KD54-%t"ۘŒjΥ,,RS=HNv#ii~$&{i N.S6㰴$,&aj=}s&b1VO)ʌ$ehb>$fVDQՙFDJ")h'k 5VDWY>Y9S j%%C):6dO%k)${J8v?2ܙ>ׁJKL.3#z&DmF@!1p :Hs?UL0vW]#g 1vRK M6AYD't2 UHi0"ՔR;H4"X!'tYm-ŒD)pri]NdwyPFVja7oou,XSǜ; YR˚렸聯~77\"ȏp8xB0#Hڇ \ Gگ\/0p2ϝ墔+~SΝ:ƙpĻ||__^GvwZ6cͲ\,^Lgk-MTΣ`f ) aDd$ c8Y)F2itG0^[1#;JC7K"eXm &b2eS73_k\$9O!gO 3xjJhc~S)e\P%Ml^ml_%}z8m>E^~d"ڵɃy&~~^^!~ғr78u}ϟ9iY_ׯ_\5$DŽ! ') wʽe]eoz!mw|wc?(~3D^E^. *=޳wܿ[d|8M7 ogqM oB<"WWo^ɏxO ᤫ F:*L~"3bʏ: +(. gf 9 ($wC,1e2Vc16H)02Bca6 G2NO)*LRfx%(K*L5x<׌1Ҏ8J:(j $Ε "f?cq>8 ,5#b[DJi]ʽ5;T4HrAŝ1SzmgW98ۖk⊬η$<یiMw.qpS(CFc막:vx"(aYS9DO$l Uz$2F$ԦGb>$tiE|+6ˆn'һpA$u+5ϬoOdc s[kcjlfΥlؾzbNi1b4 b'E Fj v8c=!.GIX"pl7SJ 63 Sƾůo&.;DDM ]BpE~ ;!.Ds!ݹϧb7yh&Sr".r.]#Kn9SΞ9O?ıxׇGww*6WH {je*Ajrx8lg>Fz6N*G2JC*hhGkIϩ9CQZLFX&Ml$ `f^vz;AJ/Y!ʲ{nI4g3~*XU:.-Zɞ ]4r`mݹGv/ѽ+y:>>??k/?ɿ2|?9{=.XZ֧r弴.._VBp! +&;܍JւY:T+ߥei ޟU|Bp ]Mƺo{ȷ_ۑp$;c}7wY,7Y }5nGfSMF {[y>x+~ѥ=4GhfQXVz&V IDAT,+8U&Q3;ʲXJb(*\z<'Y9^rw)XٌDzjL=MDh4ƺRdь:IhOTfxeF(=F *SMGce@|/!̬ !>/;oF`>^qU(L51_?MLGb0&joCkԳbWΤ?0gA]!7z=ם9L/s Ȋ\3r 'e ٓ 1L;VHmtHLBe&W{(γ]5{o {!!l1`mK8~ĩNĉƍ^Eof%Ql#@ ]׹fvvwv晙gV3st$7ʦS:͝ipp{wg /7_iX4o(eC/-ׂxfбOcK= Nnˤt`f.Ϣe17RTNB0q^!f&JL *63$؅ObHH&%=(2#IّdDP\C]u"[rΏ!! S=T)ɴabj*Ιs.v ]BpBp܅.w@Bp r]ꦷb{R?%.^ܹ ;{3gz"VmcG8|ſ_ݫyy-G{/?y[j/=LgUɽEKBp#w [e_{ߕ:yoGl{# r.} o&nҮo>Ep~nmIJ~=ﻀno܍y,;w5߷.*߉yC^>Kp4Pp0~G^߼xgiBڈPSr"}h.g҈\&g|k.P@Cm"1s7’Ⓗu'p>&:caV-t0T`ncfֆcic *s] Tkcb6.F8zjAD E~ԇRIv] ^Dbg P}l+qpPQyU<~,6cΒf..gޣ_YG˘ 2hL8jDžPKn Y4ؓH~EmnsJْQeMpG:Pk>6.iv.yu=sN,gOֈO8&qG/9"7_W?ͯ~qȲ,;&2al+5'0,Wg;L(1EO. $=Fr҈J z ]k yRW[xwBzɽy\@BS!X ?+B %ҟP S#)͎8U9i,fjMjb٬VV/ټv:Om΍sy{6/-K4=OTt^}3o>ko?7_|CKm}sp.!ȀEDn Yٻ2\.Whn%U?}Ǡn- w#.K2w.=zQua,s\du/Byx".Cg/]8?_Қr|H1'\E df{)ڋےCsm2 4%3-j:YCx;AyqZGS]m.*S%&P_z'HndK},es;i>6:X;)q6+ЄaqNDzg_5^fqbKOm|HXy`꤅ SXbe4ļ%5YR%Z\ŅL^˸NabUP)NH;#MY+. C`&, cHeLZǘ\J@Qȗ%TIT,b PKiKi\L Z*-L[;ջW'9x}k7-}l1~P'rPIٻvYlDD!{<(ǝ?5{B0Mrc΍&?/H"̉<94mU$ZQœ"^^'NJ;śyGBp@ w@Bp.wx%}o\Tm9yGh̙NN>˙g8surG44/>_.xڛ/ćL\='TF2vxS+7esXt,WNa,?S޴ݽ\ݢΕ|1^8ʯ^{%͛w'跟HW+_%w4Bp0q],k"23 VӸr +C}4#$bKDFimk`c#>15{c+;}<]ް2|m7Ljcs%&= a(al]TԆX QnVC q#0%^cn?_ ]Bp;e_̙s>Y NIYn~1i,_ _|OoxV֮Z̢S>e4-Քe'6)(uJ i\Cqmm%ttu=e $rew=i^zZZ%w+eQiaj6j%V p%r; aAY^{suc6Ӈ|(.džٺf:a<gbݺۖS9 Yt_Onw?wo7|SN?$m;w \Tr$w,Bp0ʇ&cJV:DB[A ֳtpfuTސEea4ŹTڜCkK.ÛmȠ4aD$0$w?+\X;WcfBmaKϒf5`47/+ڙ .OlLg2[S%iD<EX4'>ԯfY$hXOriTƮ)bfiyd\o_Ċ폰6b??y'ڰ<7FGPj/^FZJӍw3s}, r qdh+!^=6~\]F '?/ )4̛"?GJhbvsp,H(|7>/<QHܥ@y;\ $&_=6svv|wI!_& x,UNN8Qg*cTFFa``J> ]됧)JA" J] =Ȃ = t4]]Mw6ݒbj=-L :ؙjقaĆJnJ8QT'REGK;Y0Gf l^;6cǦJ4Z<+7곛x}S'[??]#}i[|_;#*""""S.2`"wyw!: 4FUeyv;jCF]nv$pG_^] """""r7" /p.~˝1bOblM)4k7i#۔Okm-#s9Ɔ,kҨ(,M 57"=t;7 ̰7FR441XGzWbO3| ' Wo5NzX*0ґޯnBiAX ]Ah_Eԃ021^nf͌HoH%6]•8 g%Jt$2ю- 3'  }܃E d0<2OzOkbw2g[3$3mKS6%0qclŘ݂{MQ4bF`|ogX|}=Ɔy]<ƋOy/e44hm@=c -63w=fzXcic GWS\综سg+V-dΜL7lfƨ 17@OiRB ~ JܕۿOp1>WO+wc`++4Z`3|_tO>3_|!si~cLDDDDdF"&Bp_+~ Mފ2H/6=5I~}T]nBph|~7ooB"y}[/}1IDDDDDnu\R3}~{˛ "Îp&T2%tZHi8Ŵ4PUJII")&CLZ0 c#^غYadfX5e].*S%6x0,ҍx/Bc\jg%:kt1bAуJc-tT$Ukg6*+Lu1A%=^g\ [K1WF 7ΞF8yU{Wmi]Bm?{o-tH,6e!Y#;e5bwNaflgʦ8&=ь^QِHdž$F>@Xe#X*& ObY~gˁ-l{q;~x~*"/o[ B[yUpWrK2WPJafcJjopHv ub07{@BJ$IVv y9eEHn!QJK7rxv毸a.>˅s5=#Frꖠ.w! BBp@Bp+oS/k6wNΜ9s)?vD#r_޽ef3n\ 荓jC t$UQRE7J=ZEN2zJܕJ  m2n }l,q7a#ѡ$Jq~,)4V11I%̛*{X&ߨM*?K߻[~jrVnoo-"""""rOrrK?Iߙϟ'ƖIDQ# RP̴r3ɋ438Kh̢4rs).KS('.+`b =G/vK[s̭LQV3X%KzxH^idAP%^ l]rVJ`s%=((̵QX Bi*{fJq1>[K-,tԖuQ`#Az[G= g詴0P13ӑ#Oz\I~֮ZRbC`fIey~UϕlgsLf8mfhƯbhFhnLbOuu31 2Rl=Sp`)eٶiÞ^_ċoodJ- 3^4z*mU:J@-!vX;qp7 ok\}l p ȕPOB"}#"n1$F4L '?=@r"}<ԋ/&ILޜa ƬKc&=QĔeL,m-2e;'fB6]Ó/lv=}e^A^xzfG0Olc` Z(zw iX;`bnr|8=Ij7½ '2~(QRHɈ$#3ԴpSBJ !7>@*b$ILJfEC9o> ]Bp@ w! .w܅.w!i]rE:;]W]׻*]ÙN_܏=̡o/??vm[2{xKIM&pNfzrFDA!T\[b>t]pד++{Z5^O[!^ 䮯u0a.jC]LT ps2#ǞaJy~ ueɌͦcx!X0Gl[=gۺ-ӫxaZ^wսyA_g?ݕϞ㜓 ҶxEpNJȀ,2{oz%w+:k]d\\c//b{/{yʧ?&{H@ofm Pnsj?/}GcEc >^u?ӗ;DUew~GnA t }!|VϘȄ"挪e^G=G1mT5cKQK}Y:UY cx}!RXJQy&e%Mdra37_\]prlw^-CiYIO(9 2Xbᤍu00uW`bJfzLeu1Tu jk-ݵ@@FI`|l.grm)b֖\obL٘ i雳56e3y}6S6KZX(#;gzb6}/`{^v OcVΟJTL N UGneLlnn7G7K\{W 4] !{Opt .^r~0~#n3~&xHρCrw ?=^~/݁&k7Fl's.ybcfFl70@_W#ˢRF(JB F_R#}WpW Sez ݢK}TxZHB?9)aPSLSEm9Ln+g&Vkg l~d OήsٳimYmKr?;Vq`^|q^ٻ_[o~k>x|3N?$m6yl/IeKBr@Ȁ,Vk@DڎnXNF,Kӟ2o}>Ł~v3UDZ[l~';)mu3|~opκAp_ۗ ߹ڋgzMw'/qYN}%bkY4y$K1ol#3FhqKiɥ8Lk 9jk)(J*<3HΊ'&)B#ziv7og w>xa9^%3~R 0fB #( %3ןԌ&oCq Vfk.!清ɘj5#LwC$ 5+\P= 1_ 0IFRy 4kmmal;vpOX Ãh ,;,u5U,^X91rOT1[KIyn[}ټ vd7~~2{^s/y/f-,Y>̜ܽl0Vik$n)_}yۥP`fZ#9 ayKdb QIĤF,ƒ/)QZNYEe4POmB8%4F0Ƒ>=sst?wss+\(ѥ>ǽ#^UH©TN³@jݻ.΃[B;Il槹 8-=s3;9}lOkS9q'NH'4;;;9{I>?w~VY*$$4[{3 BW^~ʺ zzz=Z7|Fre]KC,U r"6ԏ̄02c.Lbxe V yl\2msl^ȳ[wR=Wh$žu^eo{ٿơ?ovR~g8 ]x[vEDDDN.2`0 U:S[~[)WAvk&ow*ς>V"x_w~x] zDDDDDD\+kWt<'هgvn Vϟ)mgfGGTVO]ieWT_H}m!9PPE^Y6xbFщ cH?Axw7~>O;.s'#'r,ɬy͌T*kc(*$p⒂#<ޗO|Bt"0ޅD7&8D{ [$HXI K $ZZoO1ޑFx=`CcY .J =\-]ib殃.zF[IhF-(`mme&oi`:?Q-Qł'*XE+X%[Yd++Yk*zvi^xyq? c߁gxػ)<_Lm}a>9T꠶J>N*< tXw?B!wTj1i=13h 풦XC*e%)PUL]~2)1ESO}B 3ٻv5W3N@B8b@ ܅.΃! p r||?ܮO{#8'k9r/7sXDW tuuS^'ߌlܕT]@ZJԆzlcP/g"Aqf,q /Ϡ#ʘ3SY= ˺%{ܶxϬg[x/߼-}~aiΟ܅\x^""""(Bp0ywY"rw|~m{ >חgK}Oe N~3|;zUp/@y7.σ/_ҟN^;y`sCK]\8w᷿_څSX$ c5t ԕSYFEQ:Օ9TWQQGaq&dBRfquLƢc=&ܖA]c2IWPXHN~,9dN\F0 D@\s}$,M•lg ' B2llBhDcŰ S$HT;(_}pLaϰ?==u!D;*RK4*'R;)i4Hbl&-cB(a棕ZU Y=y[Y[flٳyv={c:v6ԓ<\;a6&ژYKi1fx8-m/?"B\zgEErN}HϏ'$LJe*2(4KS$Sc($dj;;>Ա9}ZSYiK! T}oBp܅.-kJϟժ-Fd?GǏpa=ķ>%l"+;^PutIhiw]]]IWd!%KWQjЗ!Ws7d0nOz0S#Ok\̬*OibռQlX6al^Rw>_%,"?osN?$mc9{3ѽSO."""2@"wYpI ^}V"[O rce$ey.;>m[~onrAL/.G r׊NDDDDDd@w.?}7b8kbZf0\j)Ύ 3T*iuԗRROnqY$-'GEDL(!EH4 $,|9Ie_;my4dQߔAeM:uY6RYE^q9$焑^Ave495dքRDL71DS"Ld&D[[bGBqeDYfXY*3O53N\x# & I5%(ͬK  {ͱ 2[N0`wy66I=ĄT}I/ bu6EQCՈ8[iK5QtL)gzSٸe)welټ'6,fSF>ukg3PCpv66:X*u0O;B݉JlR0aRFCzAfQGVQ9%I䕥PTNyM-r4'("ZKcn MI4&PIGa>Mo>y/ 9̩S'9y:]Zb?BpBD#w! yPBpOs@ng;5rw%S ǏwOp!Gͻ?{UV^ƈFRquGC__m-ToՠBпWj~.JՆؘpTfCTYESHSImYmgzG95r(/5ؾa,`6Yr_sO/eߎ<^صϮ7Wvݒ?{|Bھ9y(NS\xK/~7]{! rY8/}+ϧ7oTc^ "w2ݯ\??yu}xw9}n\l$"""""rOC.4b)O4BKil^RJ(,#$ r$HJ"%#XMU${b8 ITT3nb3sL`Z;7 ;VVMĘ ljFH^Db'S?!kH /JdI#ۣ)!̆K˭%ZzҒr3BKLVbX2s9[Ikv'͗@ۇQ8:1I&9 B=M=cl0Tp7vBq6Z(-yf02tj -,tSb稏ήj<<#4̃HbbuL"-%(j39ɓ9E#w-%00{\ ppVJ2SA!LBjIfE&O.WlH9T6R7#Jϩ}t1mpLiaVGJ!mH"hJOeلqi>З__s_*w]O~!R]! .c(j"!r3v[kJh)afD[_mGZ-.4;@L;i#lr0$DìZҾƙ%vIL76ᝨ-p=jc⭅U cg A AK/=66FTLk lm pr0_KB\HL 7?$M K&./_.yq3mNt3BI BDzn$v\T\Hk{9&71fhcΌVΔ v IDATRtI ߗ 6̟ۯӿo>C_̏W%B.NB]0P"w8>% }[{$k[EBp_zAYlgjSNq)-Kg{vI=ѣG9v!3{O<&:ƶeԮ}En+wp7U@ݕ:`bR ad'SKUA"if"fMffV-`ɚ*SKٿ}/|Tb%9k>7_~wˑCp%S=NMuEDDDU.2`"~ZY]~[ۑ1ݢ\\6w[նnzEȧ}]8` rq+w+ߏ{_S2{EUpq w2}9_wCpsrpBty@)-_;Uz|9%o|U3b̎:W1bڛZ:u40~l3Ƿ2nHڇk$ T7URZUHQY䞙LVn4-Kzo=SfL̛̙7ŋx-ʢeSYt sgҬ6Lmb̴:3zz#gHT6MHdT ٍ${Y@hyXYlIB#d$Ճd&oE)@!TrfU3JR&maI,19&3ae FNkD:g_8# GG#Jܵ7AiRەWQJK 06g@VbjLxZ1,̅D?ҳQV@u] 9aźo`<Ҹ9Cm v'*DRDJf(i9dG_OEmU)̘٪gN*F4QGNd^$ؓAYTعQ7χH ?ȡ9rOԙBp]BD#yP w! {Wm?#ĉ"?& gzۏr=|.WpOa;6cYY)8:ZRH$w}ݒvڨ u65ْd&RCeA#x5<*+?kow__|GX_rai93p/H"""""w=Bp0[UdvUv[ѽUw_p;*r<./oޗٷrƒUpq ?!$I {q T^޸VkwֺٸA5V<' $͠nDZHn4OW'e{P/j\CMa^~|ۀq АIܜ툞ރnvt|2v"m&k3z8%y2ҋ}]66ofMz:k{I-E_V^AnD|ZUaiZAZ=mR˕z=i֦էKFZ+RۙJդ@uiAm]mkѦc]ҥG3zmEPXGbz<,`{օ=ѩ|Ѱ>Nzqk*Dmh]ϥӧȽt .}b{#yۏQqߊAQpE wyjW^P|x~f/B@2nι|gI/ŗ4\Fz`j ]njNZz J[HUТ=:6"g3"[>r>.!,?uǓ|2VOg4OgϺ_M 8e [|\<%?*pz#+#mEDDDD}p)1yɸϲO-p7vjIOdbnɴ?Ip/B䧉ONi ܍/"p7ŗ=dn@&iI9s07c: 24fgHeL =c<3eҜ˜4z̈!y?ft؈auhEc?wutV{;څV%0ٗ]מ1- ݜ1 K8_'6chC\ZGf y~S֥0oG*,b|+Sەzj[f=*SX2a oŹ>#g_ < .*AQp~-@Sׯ_?>l/.nT7=_>~3?䛯2a:U+k˟hpQUki*[[Z`FGn4WҫsC{Ƚ}>nX铢Y.#_2ضzצg]:{I~^WʙoKSf_ /'¼\s~u|JEJLp/yƝbGO2iϿVepl-HciJ.H%C틧KN]"}mdM: F1i0Lddj,C&)=$#mӊQt U*BnƉ&}`C'$ajOGt?w!zZG#jJ&'fzw1uHʃYup+dޥys}雥.! 1M2-#R?:=ETM=q3].U@͵uh,*]k+z*Rzi5@iӽ!e޷kR;Uj;R3R׃fm+ӦsM:tctG>tQn=+Ktֈ~MΛf*R< TtROuhLglƔ[O:o"YsRGA p*`ވ .*Ep/]ڝyV_<^l#qrדI#C9YFY!#cټb;#]?{y]SƟ>5$yw9<_Dn6]6pu{m1+=)5p1fSy'SEDDDDJx 7.]񣯲b|&Ma̙1X(yG1} fNdF%E$$yxIâ<,Njq HT\C Dhd }CǏLDRgOfްT5 Yls3R1yҘ4.pN/e3tsL0g$җeZF ffĴ(G5ԏiG`t+z7c@m:M4hAQ250qi4SW0qE47i݈ڙ)݈vwgݑuddkXsx .aѮY6M#.K#I@ĤNތα04g\k7nj8UF3MQ.6יbaBcF`mX {7mp𰥴kFc/uKǞM~w{ըBձ;SZV6Vn\Sjmu]h^fħSOWk:Xjk7hJÏc9g/_|gO" srOaAEڍ 8e'2{0&H`ڏiả#u$oy} {îv66UdloӤIL]&ztFg$LE@L[LSfpJnm`5n6Up3e\(W UnjҐnͥeނѼUՒj5 Ԫkwg5roYۊ4oE6Lz^ԮArtAi9G ̰ՙliJURNocGF~n=N Ydr-7y\ի\~k7p]TTTTTLf]@/OsypG7or5~bsӂ_W۳tYy9?䛯3=u2:`V'O7C6jTmQr,^tޯܵ5Z tZ :<\ 4A;jP^| hΠ]Г#I͢\>ms]7̒:+3]3ػ}1;_r^>OA% sZXLqs'iYY~<.Rb"{Qv9BGuu<'xI]5ai G; ]>pϞN.}|ݟo"c+pr"""""%( 7dxrJ!YYwlٰ269z18"!2$/b׏@bB'nP NXD BAև~N4 DZr6n[te,^9ًҘ1w SggrH6{33&`YKΑ7uir2w/eÎܘNƊ Oā &apo}4jIZxxZƹ1!SXm ldfouI_GH'E2r`MQcur77vL6YX{k.fE,91g]2i@$M_/E`)*KJͥ̔ z;Kl/mݖr^nNeX<UAZt_@Kz7sW6@vP55jQDž hߖ4+VӞJ,@v;p՗MoR5*Jt*j8оJEb:'c(^ټOo??ŏߟ'Bs| .* .*swn?y?q@wq+W Msq{nnܳ.wge_6&<2:uk`gg(3f [Ѩi4X[jq0h*cQ-w:NώKTPʨ!LݟSbYĪ#ٴl[VNeTvKgY83s>,`}e{g!g_@q<]]>"HqGw?Rvqn6~e܋ixQ}g3v'']%yC/G]1Se,g-{^ic>BLtyhqEosZ}.V>e,"؃$JTPWu'*'QDF!< DpXC_p/_h/%dڬ\ʦXy+.dޢ4e$G3| NJ+gfc.aܿ]ײ*6Z̚Y,Z9Y F1cf2'Œ<,X>~tKӦUZ2(Wӛ*vPQǝ>Q혱d(KOa)<)LY9q17F>&c(3OgŞd}bNb-dYǺ+Xo _]7Ul<5{SYc"G0yA,үec7QܭͤCj9,;/mc;JsLEWW)grTIUiƛV=лg"֑Ѣyjvjװt+uݨS4k:S xVF;.6:ZSck 2`n7K ]Ũ 2c'/92YS .* HZp]=p/n/((0*Ssss&'ޛS8GѼySKY(Wn[.v XW#-KnvZYrti]. oFLX{b3&3E2wZ}m;yȜ+u>;U}|7_|.?N{ٗ(ڕnݸ&m~]DDDEwxӈ<͵8nX8oL^<r>iG:,_Tg_Dn,ء>yw9Y?ir_Y>5FDDDDDh.vo"Yp),[76e#և ֚~~ َ};DHOhHoDF9P E@ۙ$ b ߼[z-Eq OTlA$ 񃙚6y |lgiR\=}`-eǾdXĪXbӥ/MԤz ʖFJm*S* v54nS.ʂMXu"7&uU %3qq2 eݐ=td3ێ`DZ]8G&8 IDATyxb|} ́7wz bt/Jf^iVC+̬MQUXhhmr,-NV(WW-W-/TEUߺ-|܁~ !fp?B:ӶmuV jrUZ ժ8YGک5֠Nҡ9ȕ4fR`ej gkV_ _f%'L#N=N_l/Qǵ|nrEp2 Xۿ]p]w_4G.#ܢIrsr+텅\t}22Лr1J)]Vݟ4{.4m)9*9i]ў+ѽ7ӿO bwdX|O&:!\0&j[֦}Lvl͎9l4mwwwSd_َ14%? 09I*G0ϣ_~my˶̵̟9#0*! E|poK@bB!"R## 'Z>/"hO Hf˺Y!+I=a# &"0Ys'` /Og٪Y^75~nߴP9b,2MeZDI']6AjTRW7  z V5*sS-LXJ6ãm;S2pnMvd‚&-ͼX{9gv6Fl:װnJJ_fCoul>%3>UZ֮3Ȱ]kR\ X U"VvZmV-Vhԡ!|ؖ>Kyi޼&=mqqP&pqTVN6d̮ ZJck)Z CNzmk3kh& cL|?$ Q$E'1.ARb‰NEʀ>?Jf؈y]?2e0Dl|C0apR2mH&Nʸ ;>2$/}zEۻ2V[K--К0W&,쳴:iR˙ν0xT0VfѦi,ٜʂM̌I[9u_k9ko`㡭l< ufذo=fUzm N7-<1wdRӴ}PPͱעw+m]mwӕJ*QA-֣QF4mK-iזV~mh!VЦo{t_\"0 !4jT w7=6z6s jT-NkKJg^+vMiLe' RKeGV$cfMω|{> qkWp5]uEp}(ZwEpS]}?|]),qp]w#ǿS)&˸]yyyW] pa<]>ξ/;o3{Lu낻:K#`XUhU8(m0z9[kko4"Կ%1aIaL?yCX:kNdʩdl8K[7+ݹyv.|1#. g;HA~׮pƍO]DDD#HeU).n2,.`xֻ\?y1v=n]7wg%ߋƮ// Hߤ1OܼysI5LOIbLHJ %~ C6$q)CfDR2="};Ыgs:wGیc#XDXzd̸8,4D̡1$' r?ի-ZѱcZKը["5jū3l.ƶ0RmNѪјj`eAU6ٜZ>e kǸD殜3Yy. 6"clpK,dΕ޻66*uL2l$zʡ7vq=ze#`%LNh'<8w^% JUtýTvoiBnmԻ3]tk`w/]CzEZ"{s` C߈ DUq-m@oV{Q5Jm83Xad./?zSjsU&MMW(ݝ}H g >rOo?_ǹ.(=r>9\/z]{]wQEEEEE?]w7pd%_<>ޤwpt!nR^q sss=7='7>pxr(OsWͷ_g. f[ѨpN]gg+3h4voKyu:}_\:w gwiI1_""""EJL2ֳߒ{. ܍ ŝߺ,ce2&511f/n{ǨZ^nmݻw2~}}v{!GY@ަ 1q)"""""wo!.r6o\y&$%ҽeSƿmKb3vp<ǎd,΢33c" eȠP؎=ߘvLOe1,[6ٟXúا=ZӾmczЧ*ժQ#S˅K鈋%Z^:3Ji)?.XT j-:sT+qFVgB)ݭhܢᱽ7=9˦x\M,ۺ;Vv:6B+|x-fxEXm Kf`|?6RX;X`fÞS ^TFfhޗ;އp"DM(1?6''$!}փkQۭ-UQ߭nXYњPy2?nYj4*RKLqhdoo* c߲3:=Ip1`07~ؗ-_3`i_.n42~c_m_2-Y篋 sϣm?s矸s7 9[0(^4VFU*ѪN-ziAx 8)#3kL=lCݝ6".#i1dŒ' $%~]Сm]Z6IVٍequhk ';sʹaGt UJmaЛj.H.mN%ZK4VRF+)zs*V-MN ĴdɊ͋Xc9kwa dʶn۳Ç{{E˨]yٜ;vF\B ==.Op)OJ5wR>c.&,^ۀ߼qǨig^ކ>uTw6> nNL""""""őGw%qw~_~< LLf.N^xW@>ܙ A$2$.؅vdʤ0M gӘvȧ,ujRˉ em(`^Ag)3\5TtJEg<=pqhg[sdc[Hաamm֖VXYZKSJJkVXZற4ْʵ=ԉ\05[Wiz6dm<}o[=yTRA;8tt3^@%̜;oT Ww+lp*ӎhڛ~Aj':_h/zG%8?Qb9HCcNGBE28P qqEn jSjtL 껰]ޮT:\:B^ V-T8hԔ3|388%9c3s>o;~,r p{«\+pz:p]TTTTTwp]wpw{]~}C@#_{Npι\ݳ.)=/?GJvmX+]V27Up]#-_+"n1AkJyWK o4!ԿaIgTr(E3sϓgʩ;}Bm^¡9NqN}1|G^E G"qMntG.HEw7z- ItqGO܋g+nn 51)rX\􋐗 =?[}pIX:5iD5Ҹ*VΒ\UуF+[ [{ߊvDچ͇*Q+RnzܜJ)V7uGx{Sۓj]q-mg:k+6DwT n-[[Iڠ`wNtZRZc)ukAlr$SgOb%lڻ`ϱx}ūԣRۇ8||;ld5^?hJ8X쪣t'mѵO" ot?08d 1a$D*=2%a1$E/!~сD3Џ: j`b@m!iDrwq<]~sT:4.}N+nwi4iP"1wx\Wчŗ/S /\"/;¼+LoV4]wQEEEEEp]wp]w_.W-yۯ^Jaaس~Sc<]{Sp J/t: f n7WYV޹@+Bf.rwTagInm\أA)Ƀ(SgLI`̡,_0˧m]Rewcp߿e)ya>ߜ+/#OZ? r*7nMq."""R<]e}{ p$lj1g²Hɍ1ؘu蟜 ?d%󴟷Kr.t}M{~n+E?KSo+]x}6ox㬵)jsKi)hC9g^ԪNZhQmUcZtn뭴o5֯O-xUގJ*@Ųv/ eTraJJ,G9ʸZ+]niWNllۘ)6J jR5R b V:3Z4:S 4hV1̘;[W| scɉwؿNJ'9&Cxm'oa޵l\HQEJu7\Z^NkX3 "~T#72:1G2tM&&%F$EC(a'=uO5lQMQLʰ^w\V)ZrJ:nPQZ`nY[a\`6-Yʑ=;yS_qw;{BrEwqוo߸ynq[y{]FV+QQQ b0~T+/3Z#}S۷쏼/8pVzNv3k2n /_Qt )ٗ~rpW&(/\<'ӵkg.w<]bER27\A/iLq-Mj{ҵ=Z޷a]ӛCC:.99#Yxgum*;Mp߳q67/ޱ68qdKK^n\*#[bH1FwpѓDYpA1[?wuy3aY< 1]'E^X_{Ƌ<}Cgwtyg,NP.ԫ:&X`Ppiߥ&JfRцjeQݨU ++^e*gO׽\*C6 rધJykSOTDXfEw+Ji1ؙb7-:`['TK8ꈃ=z[zVwV*guTI@HOϙwt}{%N6'o'ٽg#w'3s B>8mG'jzWeFӉ ˈIɌ¨1u$'0r(鼱1(=qL#3,h""JhL0qD7<}R^UiS3̤w]NLeg.݇ҡ RxO#F a޵OG˧~W_Ʃsy/e2prw]~cX&o B^x%z% ?dⱂ=z ,-*hI>up9_*~Hy,!!!_WKxrG埽Tٗܞx7>cmwožޱWvU&|u7y8_G=} R|"HqEw__~w~O:1޽ܸyM>-kAErԬEfuХ%;܃ĔhLΤq̘7-Hey6Sǐ>)XktkC-hӱUjz*Ur6S(5W:anuw{sstTqrE ދc&}Z8 ߏOߞ|"';ܜ< 7w]TTTTTwQQp]wKp7]sq?AE=2ywE>/^Hzu?vܟIhT2r@c%7ZY(렣 }ɗm Ġ [4}R Ӈ:c,Nf p߹.=qh2\=xuxm?M3Ν9K{ao]DDD#H|,3?/+p7ʟT(UL~bS?}܍{/DOrdn,p.#"""""gy,.;r&w 9W̸z4hF]< YXP [ssTؚn-O1k mj4fT8+ܵw ܥ.s *JZP jUY4'kyPCj:IUVM}[֦c&t՚ѫ;5eF4j\zթZÓ^/Nz尚we:lI),Y=sh;9q('<ƉGx^vȚ 1u4tҒ^ӢӚј(Vf譥欧l9gVnWtkKDghJ&0=u3'3exƌΐDE0 :oPwz_tښҼe|Y>pWf1=n/% g :i\*};td\b"-{oO>/>U7xhz<,''Oi =#p . ^իW8dX,u={VA2p^f˧sp9^}FJBtFv܋kШ4h嚫TSBAk^gi=V{voIvĆu!9Ɵ1ILiCX6{O`i\&5=r`bXɡ]k9gG⽷S\xAyMw"%& <֣'ų=+n>G^nWn˵石m2Kx{`V#UܭUfXLZW0h褯[Yh`MzUրgk:iq2pQSɊJ_"-}в7VO%4Jiծ>ұ[_۵ ݺ7Od`t_bc֛}׽5qSjнPײrN0qXVmXJuڷk8~_?ȡ}Xziǒ_VxN K Za%CwiyfKJe[6mлW'K7:AIN#iHt}޼qĭ"&~׷~iw`M]6$2TD% ܣ.G[mjuuo[{=Ph~{n" { *};2-pU]{]{BP(; Bo I[KJ;8L^ 0v.6-OOu! T`*QNzp\ `g^h۲ "ڷ@h!횢mXS^nl@G@dlb[#11C%z$bPT ꓆^HOO@JCZCy:&3 ZGW_7gsOǢų|ٟXh63&Cg!.5|J:sTvM &+q^zgr;;eUa38ڛ3ɉ1薞Y3 3R1<=^xXMmCмiC8ؙB,RP.۵!Vb(cUuX%sDd Ǝٳ1{%vlٌ{vC8}Ξ9ŷ_z 75m{q1 jogh2BI A$+Hʛ_  Dud( Ipw ؾWv6Q\\w0q=7753e2]&ˤ[گ_ Ln/(Ο>}cǎF舡L{5 0LrW " *pGK_7tkAH AH JA]0LL;gN]*~Ӑh&V/mWx sccwQ|ؾ_P(* ZoɟE׬&fyە+ܫgդ"|ZQP[AR3crKLx~ ,7YݎovU󭫂;ߒNP( |Tnǣp<xoЖm2[NJF>p7U RB$<+"RVXU  *6҆>\ w+#uJT`"Qp@HbBѭ."c"!CщGZ4H°>]0@>ݯ+2ztB|R47 Śosu4#څg4|/1}DϘdm"~0 #Bjby:FzksUKwYc{yDd;M!”{nmgMkvhАh77i[+#>Pcb;ܮLj*󘨩V6 FX4lX6bm8w/9yΝKqܼ[xLrQQY{;[ ~e{ ;NNA<iyqM}wwOo" Ip;{lB&er;;_&3 ky& \ۋXI@>:Cjr$ׄJB2 ]Zv@tH#[K|[dvT|qOo`L#S̙Tp-Ӑx&V/qh.\8s ׯ][QPTq,) :B;ք)# VwjB#z]M HS3W[2Gq}hg]޿kdY']o5BP(y.]-~(~ǔc=:A03Xj&wEEh*(@;VR,mrWHY:j0b6\l hW;=ŝܩ&<Ԭ!"Z!2"- [uhS!&-:vD(ƷA\l0RBзG팏_ZꚀ{4tJKBT\{n@_x5rl-`d _l>gBrL4r2tp4!ۙ^Qpgr>kyW/KDрX ܩ!kvhۺڴjӶUrw4vAn<^ aj(b.59k!QXƪ<"4Fh@s H_~yfaزa=o݌]}8u(Ν> y֭/ܙ^9aww w wIp' vv>`r;`2b{{U }˖M}]( TV" M(:2lM^a(Q%BZ >R;EN׭/>솉_ǔ1sH,+LFiXx&,-볱wΝ>kWH/,½pP(* Z.[-5!S^=GMKw Uayn'o2Gޱ>7ς;]:"W BPj:ӅI!޻7kzL;=b; |l`-Pz Jf R%wE䮢] %XkZRR sC&DO Fjp3A3jֈjȘ6lЈ Blr(;G 95X{ D!-dcD.c`V't;!k :uIBBr / ofAkG8z#>1 t`qÞHFΰ5C_S)khi _" p_rC"V:tj< `cm7Wkˑڙ胦t`k ~4 HT^%Y{"BRC :A3픆}9Nǚ˱yzlۺ9۷b]8tN< g ƷF1=_[͘.+N;A;AA;A^_OU 5! $?el^qP|\zLpοٳg"22k@pW"!TV^&!`*%EsMm11v CX  MǸz|?~  `XOu˱{f:~W/]۸_'҄7BTqHpԚ^7wyey|K-$H6kAڿ1=lwyGʳ _?O] }BPR^*~GLrϿOhK"%^r˯/) R]WI/k*ɚܟJ:7.na3C5P{k7vC|l;Dž"..qm:#>5 !Z]FH BHJ2AHK퀴.IHKKF<)Ј6 @#?/{9 ]cQ>5 mZ&be!dM |3Tn"; R]b Dt}#MrDVzpq2|nVt-l`mgh$E UvR=2uL#?_Kul9ؾ3{pI\:W\p­l|{;[ ^^pC;Q%쩣0ѥp V- k"gz?r/G\ܺfbشf ܾsvڳ;w{q={.^kW[.kog-0[ C;AA$N$^łN{}_4l?.llnq&>#G^ 7o];ЫO&\ݝ5!. IZPbKw%e()(BY5%h)P o7kEBT:' K$e%ࣁU?L85K+L.kp_b֯ZW=p r[8u;Ew BN5!n Z^1Y6 o&ί#˵niXԝ0ɸ2rruE]=Xly>Q:o]o˫o BTe32ɝ-?#&3xPR{wpE[|1񅟕\ta7*+C ͝ "UEB{kYam kSM8k aHHATl0£[""% LpOH$&r׋k)1 #`hV*23=zt??胁CGV::u@hDkAC;8mxg(|` xZ3L5#VvB*ttT!QD]$Eү خ!ejjdz[ IDATT +}8ڛ >rDzn[+@"( ,$zhh- F}?'O aJ}{Vܹ{pΝB(M~a^tscua B)&$ߨ?˜ 'kki<5!R#1+۰L;w|; okonK BPj,Lp/].'OBBB`nnKBU#|ӽ!BTzCUUuuTaocAQ-a?/~39|Td/ + }pIȽbn#7~IpP( Z.o[jueMHpu}AOXjm)u'(Qr'IU^>YO87yDP(~ᣜTpxP qU\ؿ!k gWCOA%% -T ^jwsԇİ3Մ&,ae{s=xؠ;[6BPˆjѦ!6F@v Cj$dJEޝ33uƧCaW`003}{Wt21l|4b= !) B%0T{#DFcm:!<ޞVpr4ofHev]5UqshP_ ܩF2]TpøLnnom7;sx9٢%L ]n+)܀*BXjkHט?{6/իuض;K}8v8N9 l-b-+ 4DN^^0"q R wܟɼ/-Ipςoygsv6pB L(?~3f@`` HpG`r;ʡHK  ?=#0)0o7X$Tp_|֭\Wb8}8_".~w8'BP&$SjMHp;V8_eύ ʕ+ܫg[KW^ Z)0mƹXaݵUө eKUoydu f 9ˮKiʧ( RRx?x?/ q߷nի8i+7|ٷ-`+X]Ha!| f w D7҂&5ac,) 8 -YsW4@PD#.=ҵ{$"W M'C`ʷa`Xث+gIد'p =K$ķGXX ] gDFi;/\#Ȯc0ԀK.E}OFr hbm7 HYcXhAWVn䃔(|Է?&|5: k-llZ9ܾ w#G8qdY{;[elb{LpU{;/J>ww w  ߭dc]9 v>`9e2:۫Rpgaבͧ0駟 DK/۫\pW+%Qw&(/wՕ`jFNh۪1b) _V,>('Oi8fMy3Ų9?cż_pV-kkW`}]]{.8/6&v$'Z`cJmw! Bțy* % qX O|NnߎUfaFhlggC]X4`ĚƙமW3-# >Xڼne кECBPZDPDŵB\pħF#s :w@蕕O{awYүzegNHo-} O 򸺙" ;ٌMLŰ0瞓>5MepRM49xLe06}]nU.񂻾PS55XEp16D{EF8?ٿ `ڵظf5l\]s5߃G8uN> l1-Ėoo//+6<&  HpO/ww(?)mo$mogۙ?{,Ν;ωTScڵ cƌJɽw%xo_.2X; uiVA y=c[tO G|0 >wbʏ0=W\45+`ذf܆ǏȻs S M;BTuHpԚ^{ɽީ}nn'fw&5TfUc64SM*ف?LD1]dHp9*;oU`b㑍˪{Wer( RWRq ~1 aq!}rsQt n>_@HD6m.47 nffhDGC1laak/GjȰ#4m4ADL0u@Fz,J`97 =;w?+))a-мix51lluaf K+1]nc}=u)BWK }8;YڊIHvS3g}_*KEH"`c*1lNFiC_Y *BXikΎl$|=|?Oǒsv lݸׯŖsO/[=[m"[r;[!$R$A$ $N^;?}^Iׯ_v6'?s E$wv6g"]{m69PSS#. JIjBi*]بѻG4Oħg}ġ1> +ª%IXj9v؊c u;w {A}LP(B;֤MyIp1*Joʮ6B OS;Ke7=LdٶZ'E =݆ Uf|35K5wʮ76o#fwyh8ۇ+ӌP٘guP( &"['}]xp|ϻ{7sQx2.<V`0o&"lᮯk-! fGF"K4`#VH ܩ Z!}3Ą "ӡ5SduK@ <3ƌ b؀ 蕆>=:wN<=Ӓ1)ծ9=lkή + mt`go{{#p?X uDp?Lu׳oÄv&[rV_fR3s}mv07cux,%-E]G&mŰ3Յ7el) jB;ք/3m[M8K2aS٪Jj']Wr9ˮۦ2mѰL >=]p} k1Z_?;BP(g%d?R{_R{Lr/by(λqٱ3|Hjn5~h&"؉`#R Ehb! Gxx "S:vN]3=1tkCѣa@dvKDxtht C|D+DmM62׆%nkj@]Mȡ uUү Qw+K1lh{CN.&| L~g;ߙneáci!9ysw =XX {3]ۘ &Fn#1_4K1g̟5+.5k-m vıc\q/\^+qZ.rso!ܹ]b~XFII Dms' Hp05uIp12_N$?+Wlog:9q?GF.]F;kh]]"z+/wPTTfg@ff&Ip͂KPQ"BX Cd $Efz{`̨L^p}g; `߱jXS*[׮qR& y=%8f%BP*$SjMHp;myuJnA{oe\8VD;8uiH{ oac&o}فx) BkyS]%b^rW\(̿;wy"q<=+Wq0<==ѱM 899"^f:F,D\M=mѮ‚!YF6~h q#n'Æww?—CfIH A-:m5DS/Gx;B&Zcrd G'3AW!+^Yȝ*@[S&Z '`߱j|]W¶My}{V}]8x?SNӥqg;lEO[C;A;AA;AN' kއwO>GGX;_Lrg[e͛7 {~m,]ݺu!xN{͍hvm| mѳKvG:ag4a(~eL~Np_j 6~FpϻsLpSP{%%t6) R5!RkB{V#]$ ܗ)u?o;HpԴ6c5󭏂;ox@;) BԹLp/[-KJXwʅ|mܹso]Ý+s2n]sGcϦX5"Cm`C#|Ln!6\LEpЁ>``[[CB,RPCCP w^YDhv}X6pw \ݍa78ݒY,%6ׅw_zp459NNoQ ?üS|Xd>f/Ƶyvl7ٳ őq)brٳi]nۙ^Ttw>mm'  Hp  uMpgl.Y;'1|#a3"nq]+W.q׻7QX⻅hBte@ P($. iF @J|kt%x,;%byXV/%BPAHpԚ^w֌:gIIp/KMU&@Vg1nN{D{ͤw2b5|Nr;BPr^&/ ~^18WX\7Q7߇אw*_k/ٳ8{c1j`oG|&H EbhFG"i> jȶ~h!!M{@:4#?=#)m my! M ma71<,ul;l `͝/рg2U BWC}Lux9 .Vp> LjG'#ֆa=v 2S=؛MѢ'4i6!蟜1>/_~?Ų9rY֬Ė됳m3r#pQ~,]8Ϸܛ~v>z.qr;  A A;Hp'Hp ;ys~!^vg1"U%/X0;v^தD{ܵ0Dh䍨v~Hk԰ k%W.HpP(w)&$]&ɽA+7ߥmwڰL?a2mmIpyeKrVO; BGpIJQ|ELr/GAܹy7^.*\\8'x4|JFrH ĵE'8XHV"uk-N"8AMH%ƈnx  O wVuBBT05Bs'[%|, mLmm /c8[\ sp+Q.TRx%E)j5Tx fw5UEsvh_{4Ĝӱb\kaÚUضi=lƎ9سg7؇CG1~Ϟ9utY&֭w$&&>'rXpW.RSD^nhm}N kaٲd;7d{>  R-!RkB{Yޅ.8X݂ ώ}*LRWq_[_ߍ.;l.o}Y=|DP(~R&PѷG"wB*wY\fh티>h۴=|=lbݗmDz3P 3=-BG$X] 2ki6WD]P2*w{5eh5^W:beT6p11/7tFgx[6pwGSFHOIGCaد1헟1k4̙5 bb^P^0[B {]&W_N$ADu $K$W }BQ/w6Aؼ'aǑ#GEl~o޼#oܸZ=)!z JT^fwߐ x8"8?/)-T&Ϙ.W/z^pߴa5v؊G> O( ܸ Re!RkB{˿^%DXvCec.Hɞ0ѽ:ƿXMY_ydpv`лxy=fB~u~Z`P( &Z;/]wPTĤ|^f-lի[ N‰'EC(1Yvtw+=5^r7րFjDKǵA`- #)#[ UsCFNjVn"P ] &+BKEB x1]Mb.6w@ ZJTRῧ" 颗XVho:w6EB\F ߎïS~f`?p<,]˱zJ_Tnߊ;wEKer۷/],{r;  A A;ADmټ`w6G[^YܙN{Օj3 R=&:Gnp`g};%|lX,ǖ kHpP( Z. BtgkC(yMl,TBUI)?lkDf]&UǭɐvkOgԎ퇩BP(1otC<|T=+yVpgLrgw&SwڱK{vM1wo6B 6ڰJOj7R6Z5rBRhLJKTKǴBfR{F!/B<Т#Z6rFOuGs/x;TݯV"I`$RkVWVXmTJW/EQr̮m1w@}} U0PH:ZHs4@x@$p#>]; G:OG c/?co0?h|,_V5a:l޴ 9۶aΝvvz^&3QRR.;-/?hHp'Hp' Hp' !v lƍ~q~~jݼPN>cUMwv.'*%ºs~lXHpP(w)&LbUmG9ɋoz!֟Ez3RQ&J` =ƛnK+;nc7ҩJ=FulO+ρl,[-yPޯ+l;{0qcؔwOuޖom1yU-lĤy6eۈ) RƂ?OwP{Tr/ Y;[,d"5XX;[,dXLr߻{wN[ݻfznk=UDݭӲ!zć'GfB;d%SX wyc hMЪ Z6tB-|Ll ;}uԂX UQXIZR4ˡ e_5VG=e)+DUs5eXjFG=59!'"ST{J!ɐ|(Ln &=~6f`^f+qZlݴ۶mN^n/:tG}^r;{B/km(ooww w "j0\Y1+e`$ldϞ=|l2;v ._H{# T* ]Sڣw|8 _Dp_L&/+o޺;  R=!BԚ0I?ɐG R}au//b21_]G0f%R]ac^~`Ŋ 5ޠPwAP(yG`-Rɽoqg͛7Z"ŝ ׬!-2ؿ/o݌b¸6|Ӻ:,%jW~hm0s4>HCpt B&lȦh4Np6ԁ-`*@:J +P,w]".P*A" ` +uDp֗؀9dV =2)ۡ{|fvCa`/a01ɘ57^l7/,?˵o\7m@ζ-ص `ۗ5>ZyΚۙ:v   w$y*6wϩlފͥ0Dppezy~Mq;X0:&%HߠLpW0]Z-+Dp ZR];=?ybX|.6f/ĦKy]6lZ=;+Rͻ/!BP:$S(z&ǓN1.Z) BP(W. JRY璒{iG徨ŝ-={Npq:| ׯß3 $9\mag"Xfb!m}99>얄Q}0,#iѡE^noah` ?>[ ͍a 4Ta*PƊ 0R(D((X_f,P+T9D^W }  %p5ܝѪ7š#94=;`P4|ҿh8&|1 ?~3?O'MĴ)0cT6m f?ļyhB,]˱f*lܸ۶mΝ۱g.#e8Vr{rs'NNA FphM%GRCpw'`rGwR6 l>U96k.l߾Lpgs*0O.ŋy+|S;yn\%w&_z/]W.vM1)bu ^Ր^3(P@C(XU "!<|PJ0zd~?|uKgbS\l]9#gJlZ[c8v7\ 6G;BTOHpP(*L6~S1y΄(er |BP( Bț7tQ[*?g&D31wxy>s'N'q1<|ľ}cvZ)];#6f1JWZ0C-12 dkd[ķClmv>h !nhMml7."pւw"-؋ ͝OuIDpP L ca&6ASGzp!MٲCZKLz&'_z|د>>Oo&bϓS0icL/,\XbVZu`Ӧ ܾ{Nnv`+Lng zerwj#Hp' Hp'܉z"#OzQ;fl̓B6O>eܹͥ999سgرcqr_>m4 BP( Ry<2ɝwZϞS-GOcp&w֘e3̞/F~ah3#8 ѪqCduL`#G1ᓏ_ `OI?b#A9ev4 R#1q1HBzt$}R;_YƨaG#0/1qL |=M&M_~Ɣ)`_0ש>mfΘ?⅋lRX +.llX[6nVl[ڍCđ8}N<*`Ur;;(A"]&Lng/Hp'Hp' Hp'*_   ۱e};6{}7!q3t4M=fӑ6MrNwO4mo6{キ!{z'ò,l$>}+{Qq1QQQq.m[hKmr*{}}[] o_>K|fnb8fܾwm_UƳC5{v{~]/OW /!p ހHAFRRclTZdꂻʼwB!wBiC:v(wdmiB!9g(; /GVD{M=jEEU܋JJbB|vW^~[?3?)?_V"A*)QH')&a E`D"<8aS ߉}+n9"[a شz 6Y-cƍؾinֲ[7bؤ}oZ7`uG}_[6cv?[v`] @@@wލب($ũ$d!'3 y(.(DiQ,VWVZkAM#[ۏ%; N20 Ppg rʡ eQ}j:wivEw%n~ZgVF܄Fu^'&z]mي}V\x0<) E2"\Ԉ$Z<|~}o[׽IHM؍hd!;3 (.AUe#̹xN! wBȬ۱G`HN3v~8B!BȜ3ݏvvg]pZECEE&X{ k.-(Y)) @vCP@BC \Kb\OTnNa~;Oߘnfz?9>YIh9+g]u=%%HOOW_K^YQ*Ίz՛NUDpjmhWwr~rc;(!{&2E<*߇g7W o[mBJb6⑕ܜT䧣 Ey4Y9 2e~;!. !,yVDۜ\ܾK;!LvIm;B!rJ8!}p:-SJMͨWɽ-ժKeQQTc yt,xX-1BtLJTt""aaٽ; Fp L``Q넄h!%#Elն'IHINCZZ82B{k{}b֠6twӥ.^vg}*;wa;w0ܙ.O=P,Ԩy'o=Q&ZeYr(/W[T񀴸ۥv=6Υݥ~?VѤB} TL%|3[~6<˟~_æo#t/g$!;;y((Bqq.ʋPgEk['3N!swBȬ(;&v E.Wd̸]Oe<a?!B!T2Sc [ܧܥqMMlZթ-Yd4͓@-0J{nneQ\$UIIIHHH@||8-"ǨF+=2RD#nOXXˈGDv=v=L HDGG#6&VI jTM3c"KוFOd hI@e{'v%"˾vgܮ (Spga(Spg"Spg(3ܧeFdHw)SpaZjqo9I܇U+nC5OWp00.d1MEGG.OǢIpH ߸&<o.OŻ>kC DR\8RS񗂜tg(e2ACmEzwB(BfwWq-"ɋ,"zd;釴O .cD !B!EhV M-hr-%vWUU)[Zt]ErwܥiKeUDtw!>!֞XdtDEE|Ov= /:Jl& "+-AX*W~Yd.EvGԛd2D_jm#5;0 C;Ppg ̼} ǹ*W) ҏjr/-)AeI& #haN?<#2y1 Ap7icX4Oc5_ K}7G}x__ AJ|4Rܼ d8ŰXhiiDWW.+sz2)BB2kLGpQ=lUE ;|dvH&Ƒ\~b$9;B!rJ9Y}:-Ǔ-R"zKyyyj5EwY|[eQoqa1rDeRd-HJN@RRT{ll bb1]|-G֯3K7Hvy,vy"Z۵Jlכv9ܮKq܏'Sp0 Pp0ؿg"N&ۏ%\HH1܋P^R TQWShmƆۑ8oR  _p7j4M,/YXvn3kWo'o :dÑ$dg,䡢u]d.;!> !Ɖ 2=W7G'B!Bȩd6wW-M0#B"l(+ѽ]$wQt*"Kd1Ru]"",˶v9ؤ^VvYh61]lT w_vg]sv"!aI[,;w9a}* w73tu>W}8.!2G%C9 2/$EI|"럾ȼp{u59I *^_cA]u {::1>4W?ӪhP>?wu[٦EKqe>֫p=7o<Է?<^ |&mDlxjoHI@Vz6=Ey()-@Ee)j-hkkUzQʜBf Yc l>kj;B!rʙ-U, ꢻ.c;뒻.DwYx\Vwu]"\,ZJt]sg]/# z:m-rr(/b<&Hly|8dj.FIJevꪹDlm0 C;wN;w ~(`p,aJpy=22R;J2$s=2w$IEG[-"7(ɽ~Rrw +:[Z1?=#B[s ym|[ Yp8&mzy6ϳpR>wވ|vO?Un""ɱLI@Nf rs2PX 5/*zх xE]H EFRQ\ҢTlƣ6jܨGyABdSp';!d(Wra6B!ܥ{*ݹ]KKڎ,袻|..|.dGew]xtM(}Blll.y_%XcIyDߟq3]UCX>G94w0̩8 :m8ﴹhqUfB=V(3k}&q'/w.IIHKMENf& PZTrg˕䮚fUWZ[z6KEp "7 vػ]ۍ{ ,[ʗ.ǽw\wxNw1^zX Eną#;59GEi1UJnfE[{ܠ̓{vB(Bf oöW>6]v(l YެA!B! >Bs.qns?讷p]|t]`GsgQ৊ȮDZ~mѣK펑!Oܮ.~^ojw%2Bs).ɉJOEAn6J QVTʲR%+QSYڪJXPWcnA-zvvbld{024|ꙧ+oO#L0 pww'> ux 4$wIn`hܽ,tӲKႥ+p]k?|~?_~GT.$F"=)9(P{Uy66*qR Ղio=ݽ6^c{;!! !sFCN.Rܗdw!B!B|d$wG]ݥi\ouwewG1";Mһ=]ow *Һܖף펒D_خ7;rT"vǶvuc; 0)Spg ܙy%N} 7/I  Ů];mfl㢣ddf 7y(+.T-"P-{U-f%஝[ڊ^ blxZ\>,2ab/xz\7Eꔂ|܍Ўx|>|f|[WOY,EܲHKT(\6vd8Y1iC{{+zXtadxL8M!swB)Aᚢ~."'+#$v}{q':%?#CB!lJ>p􂢣`,O%;,Jg].;Q*uK[%۫7vWrڏ'Onכۏ%L~= 0)Spg  Oe/EJj"" ۷mMm/v܁ DiߋFRB<2R,硴%E(-ht/CuejTs{]Md{]M-ښۃц8Oel%)|F,6b^n8 W_I~˕x÷?xൗkFfą#+%yJn/-CeijjVoEKK:10ЯC8=BK(B>Vz;(A]EV*"/$3 eȸq5d !B!dsNӎjswݧݥ9 ⸣ܚ(;YT?|2DWl<g1jMxr/a(Sp0);3IpXjQUU"*:رc+|7ߍرm v!,4ёJrOIJDFZ 3Ҕ^|H5WbRj*܇Dbx_/kV &F-&OuJ}~&%xg;.]_Jwux_O܍g~~[ 6"1HBQn+JTf[,hlhPs2W(sӋ!wP{>| lBC(B!B!2Om]ũDwWFw1KQxw|~,9SIǺ_G]US8s%;KΙ"wa )3 w w ./2/(v=## 1 JnHߎW{dxb$d"'3cBtAq4*ѽLܫT{c{͆ atxPvO~-dd`,+Yp6<>{kބG ?|ݳ?#֮z 7#%> 9 (NEI~6ʊa./֢--jQƧ.0<<߇&;!B!B!I&3(;3u1"¸,9Ʊ-}:q%;DZ}}8blvy]w~q)3 Pp>_ZWx09x` ;;w Wpw]}̫܋.KASS^\\(Ʈ];ܾylݼ ~;!(`B;1QH=䮷OH5 Z}]Ȑjr&W_7>+.'w;Ev93ݴ1`SCӀK+W^{V?{3x`Gvz sPrX1!MepxhCCRa߫sywBS(B!B!q&+m&VzEw]wӍ+AXхFow7~TfwE 0Ǔ~Y|vaUgvfIpRff,O5n(ϽwGݹWOa"* |9S';_>w5t'Ѐ3JK8DEE (7mP[7bm?Bu=#5YiGHy(S{iH%*/Uh C36ۚ>wq*}*i FxnFLn*F7c?s)nJU(Ͻ>U<4]~tww Eyy)r(bFl\NEdwG=(`jr ߍH$"%)IrD~a]K P^Rb+`A{K3zܾ;Z[K/믁qJ\ =a8KK\]^ zgO}WHB^N<ʊ2QUVVJw[Zم^ hR===Aᇂ;!9 !B!BY`W]ܝ}&quSe},;Ca )3 C;w ܧ/;'^QQ\$!6.Aukթ ض~;ow)=.: I q{*r2ӑuͽ(Hɽu5f4Ձ atx#n_\ ޞO.x&ww~#.||U_ ~? ;@L.dǠ8? y<,Ԩvi@o080>a@}@o/z;0]wt W9L1GK!dvN!B!Bc&tOT"?Vf[XIfSnwǍ1q>TߟKLINVt*S(3 sr2Dod~摯LƍzoPUn \G?FG\~y$"c ((GzzەԾnc&lߺE5휔ܣD!)^$&!+=iJr&¼ =eŅ-57#CV{ue֯[o\r!L"OSr?fRh:5y^>5,,xqɅK/~_zx}矵1"4kǸsjP_[Fkޮ^ aTȠCoOz0==iz0Ϫ !dVN!B!BcƂ4ݧ] m|.l4Ov; s&K % gܨLa|a')/G\>C|x9%#YpoooW{m(,,Dvv6RSS!!غy3֮^+Waúݸ [|}m }Q{bB,R㑞8)egw~ŽUeVU adp@ sq5_oOxN!;ldy L&)XK5{H;&|_u ~'?+`?ur3՛5WZ7סm#V`_vy7z:Uc8/:"B!wB!B!B)3;w a(SpN}> ǒy$iqw%755bEEEAZZ;mWkVƺ5k$-#D$dnrBAnJ -v]ܛlVta|tXˈjqBwO}R< 0lmpF jp[]%Uھ6zabO\v/;nW_66!>6Z;().BUyja uV47Ҍ. cth{FFթuw]Ke< alx{Fw!wB}(B!B!3]>$YpJnN Pp~ w מܙ S Np;9%g}ddCCCGͰZ0())Ann.222pa&_]kVRmv}۝%݈P{rRRTdE| &sQ^\3:Z14Ч$w;QSUwzx~,Ƀ,Gvn4b%2voO]W}3kp_÷xz' +t;XkhGkS#ڥaTeo^{[3:Zv%DtĨv1ml>>gC ga "v5[?{//XҎm2 PYY0QSS K h50ޡРz#4D[s#Z[ڤ$wުdwiv]}X6G&dsz !ĠN!B!B;w;Pp8H;0 w ){CCjkkQQQBdgg#9)Y CB&Z7)}(]7_]aBrŎm{cŽݥ=%YiFnVvZ+JQ]Ykz14Я$hmn' z)|7Ep7,R7ى'|||pۥOLM_Y??￁ yX,uJnojjV㬥Q6t)}t.c٦]NJ4)!^Nۚiվ.{W6ۍAQ5)BȉCB!B!ȬH>т+T-TnNtpq;Pp8H;0 _(Sp>'OU0>>a _ hmmESSVKKK4FE#",!AAع}Ep_|֬ZZ7mX$794oGPj?lݣh%TdF\棪 0ۣDEۖ'%,0Hw픂=F1j1Jh7M0LΟs9YD&>q>o7yoBBLQ*Jn݆&:#jBgG Ѫɦ6hӨo8mjDiokEf~y3{R?;!L B!B!&L%Sw!O)zM!uυ>l~\ͅ2Dla0 w )3 ש (23 )w3rd>vg ͪbEEEBb\w!( 6lT+>X-%-ۊ @ D :r7bc"h$"=5YLUtnV`FOg;Ɔ︒E6x {7Y^&x,`Y wwuڗ-=W~3k{'&7O7_AЮGfjvrPYVZsm6z4ڐ6FDl1"ko+ZӺؔGovoRZ>@ƻCd;=wB B!B!&Pp{]5b 73;A a:E;3Dp YwPRRܜ$%+=:2ضe?x}%^ܷ֬bv_%K{HQK)JrFL%K7סÃطg {GUw~N^%\}Օss:ϛLܧM4/m?󖞣dws|n:{W7?^}۶ 1NOAIA.+՛lG0qWy- 4գъ:_pokmA{{=]FwBq wB!B!BN>.dHӒюT쓙ܮ?Na )SpgS)Sp>]EkEDnllTlFii)󑕞$X ;az%K>V\$ M"oĶs/v܂@ CXhDĸ($'M6g ;# E"MW..잚Oq*}{{jŝѤۗx/JnYDLwiw7i_{ӟ7(wG T%KQoA͊Ɔvy3Š6椹}ؘ01[}Qivl]5#ܟgOG]ot<ﳋB&N!B!Bi)UN1k)3 C;w u;w g$,".[VԠAfZ:@l䋕WwUY{ylݼ^I;mߎ͇%&6wG=#-YTdf*t6c#*+='3旸q޹gbxyapgOp2yi{>u `4`p[O.Wsx!<s¦+T\^kM[(] ê}(FGnWr{j*a V~<]ƆDVG]!\ek!&wB9 B!B!&PpPpg )SpgN;Pw  7YHOIU-!Aضe+V\wzK;}ۅ[|%-QrW{xX0"&ErOFJb,RKFFZ sPYV. `oɽIxo_.<%΂ͥ$n\'&ニ/XvXx=M"K/|J[Ѓg?>^sعu=w#73y(E]u%hknDW{+;ڏlnƛ.ذ]nj׮:TRX+Pg1ZsR]t.קQrg;!;!B!B!Ӗ$w=H){T`y*vӔ .vϟ D$;ѡ8xX֛nAWY(L= ÜίSue[ jA?{j}*Dii)=7HNJBdDe^y-[wV`5ظq6Ö-u}/ `;6訰&X$+=+=y0WVΎVtbld0=DEn:En'vvdP_xh1=8xqnMo9w!.О%Uko'/[<&<OĿ_;lZd(!]ץmM6t(]] FGr422؏t6vJ sPRJݪ2ܛ^FD&K9^s]ƾ.ݳ>G=(BwB!B!BNK-Za)ܧh>Qv?FvfЇ3gL.eiaSqi? J:f+ɽ999HOOG\\͛7cժx睷曯+>5~jl][c˖ غu#mۄ;|o ErD%&($G#)!JOFAn&ˊ`FgG zgl<&$%7z7\{ܽLvadM Brd<*3ەv7`9ge`K=Yb'/|?pчS?>^xضecQʊ{ú͂&-m"7M ]0vntiy(ԎoveEy,EpD+94˘/y>C72 !g0 !B!B9 N; ;Cqaa:Ef444jFBRR燍7`K`ظi |7O4;I GED!N㣑$p02ԇ{F8Iq7^w .B% n*"{za2yOv.%.oo }/_EsMx{_/o^ks3`(Kz - hkBwGd{{O7F1gt {DZo 8e()@IAZz>ja^ɈvTZ[u]ƽyFO;!Pp'B!B!4T sq''7.^Spg Aaw ".2o__zzzեZEmjjR-ըlqEZZ`l߾ k׭ƻᆳ7z o{mX.֬] W ;!GJqQ{zZr3dhEoOFG0>:<dG\t^?7OӨgSp6{ .:\zŸ x < ΂",]\9y~xsR"|^UV&[Z[T~W{mRnWƕ.rr\<g!73yYi|UY!+`ԠZw.m";x.cC]##cطw}(sP!3 B!B!*}/S`0 0 ) GpwG]oqVkZf➒8 lʕU{oxExgJ}_y&D{t&%&"?/ r ׅ^ b;ZQ7^=r\pyXK5{l']e瞯dwOwhX^F\v酸+_wߦgsƿ;h;Q^|UVZۻ:[ݮN%]PƆgLS%kǨmRn,-Dia.ʊQd-)J(WVZ';J"wvtCػg\y̏ч2˹oBșwB!B!BNC(SpNPdaNQpg(/D]_[kjjT{II %D IDATT{zzd{HH0v܎cŊ[o_kx o_AI۷mߎGK Fdx螕\X+ڈ6 a=Jz}Ep߽_÷xojCZRJ 2a1|۩\զ"m" `lDDZgt ciڱ˱q]ˊrQ^RD4|TZ[zk luK- JrwNyx~=w3-hmѽS{Nbp`c{|wBwB!B!BNsݧYOag =MJd2ylNA} pssEh_dd|||&%w/O-MK]k"q鏿?WxFG87եE՚T`E{s]nD_O{'>;nm76\U<+='#JCfjޫ X_W]EroA6.oj 7Wj?"e-GADt*}H{b||ܒFwB wB!B!BNs(3;0 0 C>wW-D{{;Z[[ Ѐz%Ԩ ArOEBbK]orM_9Jrߴi '% ؉@?aDH1Qaܣ$䡦ц>"w|L:BөNJ4֢ C=882( @g[b/<,nf\v}s.>,Ly"iJCgO? N3gR^^z;o1< {ϓ~tp.M3~~X @R\+JsQՠV+Cs} Z܈ΖfZo@w`o>Op;YInR:%S#%)1(?16 149!Th gJK(!][>!Žzܖ]`E uWj&2L~ dS@o710/pqvk;zJ|s㜳ٔ~" qiXt8>EOXtY8sgwƙķߊ->sw /|1~Kp%WW_j\}͟n7ބ+ X|q[8E?ޥKҋ/> EV>9@[QZ}k`@ks=:ۚڈftwFSb{_/FD/' :0">twu &'"6:ё1J>LC^v3RE$ )6 a EM\ѡIKDYa.ҕ)+A]e9U{Ɠ z [AFW@jaȮԡB mU5tZ8^/E3[목CsS+:%Ctl) ;:ŀ;bX,bX,ujڀ;̀;̀;fl6wr6dK ]u%!w )哓򐕕T$%%"66a!|;8c8oc ?\s{]WWWWWZ܎oߵwܽT};kq//s\N÷/8DYރW^zN QHߗMqJ^[-zrт.a!KK{14/RGH^Qo0T됝.p]^5e3iJGvz c s@xb"2J~/Ex)E]E9j*d{Jz%^ZL65꫅VHZ^UerN[+Ӌ~Ҕ^_׌֖NQO]8Qw Bc XE X,bX,bXpg3f3fl6f̀B{{{ r윔N{MMLq) \dffJ=9) #$h/|nWe2yWXklZ _}3<\brsm{cJsڻ > Ot;'F4,TCW[Ln!'Q.46\}i>O<8nF+]w;g}6N?tiJrLp?3pXc~\3|ৗ]_[\᪫\w]{p۝ē{U<Ӹ?;gPx7K]_} [\7<CWYV&Sz{Kښ(vcg+cl7% j?4(aizN`{wWXO3 Lۇ͛6`ٽn;o g'ls,׭][edCq~6* ɱn/J߁ d''$+srP]q!++d;AҺ*VPWS pt 5z atu5SZ ^{E(*, JXw#Z[ڭtYY,D,bX,bX,)* l6fpg3~,w5>44$MP. NЮh⮆5rGNNR!%)qQEXH}w-ؾy\9N_cAN_aڕpuY-Vmjl׶ _- =:=!74`$F"=%yYi(+·AW֦ۏ>cP^AfjƒC6lg*xquu+#+eW\6 _W_7o_nܹw -}Jwߏo+ﺛW__rj~xi.=#cJK Ֆ@Ihin@Gk[ľَ^c'z$?3>`ЁYG,u,+Etd8>=y_? .5Wc/*۪_9>|nDTXr)Cq^SAlHEG"79ii(FeA eeD}AUjE\-LZG D{n׫ wX@wV V<4z ,q<$^䉧{+?{y去q-woÍ7ߊ%.SO o&V\///DF#+;ebrV J_߽|\Kp7ṿ?_}O<أx$dBl>ذĆ#!< (L@y^>EЗjP[^Ce% ZkߕUQ'hkjߚw஼&ܫzTW~AnnДTJ轾-{8~zM`q6(8|xa+fX-Y,bX,bXST pgpgl6f3f}!Nw SܭAeeer/(({.ʙrOKIBr4Nm f%kL<~>:/̰Jtwugxl[O oN7v^_O)M/d{\Tb(d(?Ue7Ԡ}=&ȝ)^=]FrJF*QZZL X엗5o_;9?_~w>/:sX䓸oru=q_/>koހ@'$!;+Ws42zZ= hjCk[htv6wӉ^Sb;~:_TGvJuoiGNNݍm2=3m\7=?^{bs-Ə~}kЃ<{wvY WBTH P"hKKp 1<)P']YP]qK]]E(q] V=S pզp'Lu[*R\_]vvM8>&S;:Ā;bX,bX,u> Xy.0?l]HctTel6fpؘ}l1j[+>en=LLwK} wJr/..6C992==-'行0SNxpvͦD ΫU_Fo$q mqƎ.2}Wx{nV>oFDD .* 1rOOIDNF%^C5wa@/Fatd G7wwvd|eEJKEf4KFBbbb(ED 84 /ooxxy=w`lݾb 9%Y@ֱJt@E9܀ֶf wuvlG%wڻ1߃> Sb;jLՉ&Jk7Z#]5vKFGbpڔ~b\𻫮-7\o7ӵ%2}+bcQ^T:]5J5(AZR2% 56(Aea1Kˠה WHWK]ABzOv>Q\ IDATKZgiy.<ޮ5Im^c~Eu74$ud?uP@mZbbX,bX,:Eu"@ 3΀;m 3fl6>V;C'*~Ȫ6鮮ttvD_ɤveJ)}xp@BP/ ZQvrA/S[%OM*0rᛯij<o ~G??臸Kǫ?_G\{f'(3yEiP]ZRTL<L }:j> pK][Y#ڋ D_GvV 4= mE}whT<00!yѵ2:ŀ;bX,bX,uwpgpgl6f3fX n pLq7蘔N;ۂ)rF=6*a*{{N }#\7%y%6]MkvuY-V,6}wlt AdD 6R#ThrQ]Yjt4؆C&ЁA &@pJBD kmMhiU܂~f7YX'kmiR/\7mb}S e-ڰGgh^ 6e~x ő#c|Oe^c)FU2v l ]ipOIza!q-77]*t6t ~-G_?gHDMa12RR=;}с!ȌOFivt%erFŹ3h>T>wK^Q^2J+W"wJqהVF߀FhmN=[v:Ā;bX,bX,uwpgpgl6f3fX֒mwwwwܭO[OrFVf&Ґ!6&QQGXh(B}dM.ؼq-6wRzuxn.bt7%o.OWrmuGDx"C &<qAH žHdK@Е^_F=glp7wJs؁a>qP=" }]=^hhCK+-l[TnF{gxA,cwppzd:{EP=(=<<(ږ!88$2Hˤv +vJko^+NS 2N{eb{_)$zi '''#11QDdDC@Nx{;SIxo mqVgxl[ .>k lv@ƒ#}qH Ajb3)Ȅ26Vބޮ6 t`Qpp ҇.)^C9/܇84:Cc}v?8źmZ7ۈFu,H0/ДV؀FNp;9J{? mGd(AbPJuz t㍸__;Ǟ=KbW_͈GU(G\Hl?g|ו.ڍd痢 eTT@KC[UmHT홙.DEy5[er;B_dN ,D,bX,bX,kƚoB/3ffl6}`6ͣ3<ЇʣSxlFKmA@-!wF3t7#55UGA8 ::Z& 8(@:(p/. {p6 psun`6Wgo1[sZ_/W lC;B@x"v!*1~ ߋĨ@Ć!#! Y)OKDQN*ʊQ]^Zm9 :t4ա=-`/wc@/F02oJq?0CE[S4%1xxDwH҇Fqhlc9 Mp9&tJZFoOz(ڦZ]h 4%(/+EUeh+jE5hoQshgJ6'ô2%^&ŋ$}cIݣwc8BAiyguuum닏?<kpuw~;w}d~ir Q^R!x\ꡫ6J J_:t{}C'}p ӱDFxd XU X,bX,bXYvw# l6fO}l=:e}S{fi;M[ p؅ܵZt/((t0[&GEE!22Q1<,!?oS[7`n]ƽvt_srCVnGB@'"w!2~ GbD(d!'-(+̅5WW hoGGK#:[ъ Ã?7 `h~ ,?"H f' ]hmj@sC 5ѣ:j :]e;RRR[Sd[(}K끴H}coOiry<ø[qu݆.C.S?^|N_^LLEAzc#u;\r|MN1 AIA)4eߕ jQ/5U:=4(ѐ)ӊrziuB@87mTG X] X,bX,bXYw6ll6f 3΀; %+%>I@2 S[d{\|,bb%A`#~gvt6x{k+s ;ݰgV{oC;<g'BB"w#:xC"^l71"q!HBzr vJGi^ʋ PY\*M1t,C ^t5tuljCl㸻;crX-b=hknn^[biMqJ Q&u:hn3ԖԮԾ MV@w5ܮJ_wuwA<.'>lݺ/vn}K#==%w܉wޅlZ)(+(i )rݏ؅}CaAo%(.-+Gu:AUZa=*hDm!a.;`pvuwbX,bX,5+1f̀;fl6wpgpՐ+\$!w5Ns/,,D~~>rss͐{zzLVI xFTD8`E x]v&gV ؂]۱ܽAb=!{*~ Gdp"cThb#B} HIDfj2R4gg07Ey()̇%,+\]ep9*P(mjRZWUJUљ,?+\Fc]-Z$NP{Ggh7Jj'(ړ{'$p}mxFmR?ߵk~m,[K\Y7^z[=" 3s5_{z.1шD\Tb"L{XPB-A{v#p|vaN)>^){|%A{/@E#!&R8J)Iq1Hžx%'!#uSܬLgg0/&𽴨@SzyY'tUU&k`u5hA#%IRݻف wMp;DLo nWnK]}}DGGc+{xɧ`{%~-㶛nÃ>_|\TQYyoZ ~>ؼi EIGVv.r WPbjPVA%nDq`<}9],d,bX,bX,kVb̀;w6fl6 3΀##Д) ftKJJ̐{^^Lr'vWNw'=59Y8IBIIؗ8GG#.*j##PD#"0a߃=~1

        Q_ĆuaÏ`]KtɽXzR}]2͝wy} Mc1%N{ѱؗ\  ekBE}<`D}@p;:Ā;bX,bX,Śpg3ffl6̀c>rGmw܏%n tAw5Np%}$F3^WW7tW'[Kr/..{AALsW`wrtff3 dI#3- HDr\bc+| NOtb\XwR O' 'IKJBjr e!=M9RK(UUPEAZ45֣M vcg;z&}gL5[I+VOU*5 /O?"5ZRDoێw~/7p3nXrR,[z?]rzi|G AVf; uW`vc߾4>VMY諍w[gJpEoOɖ)âD,d,bX,bX,kVb̀;w6fl6mA 3~ J=SNj] WTTH]јAw%] O霜 AT O>"m~/)Y&%SMN6;c>d!kHOGzZ;+3 YlY<}ŅhД\#v 5h5 uhiOhoFg[ hhHk7J}C}qWZ>7vŖIvƱcvkcbXY_ ""q&xq߽7݊[o-l掄$dg"&:{8 ge堤D#4܍qOB7`GD]pgX'pgX,bX,bXl l6fpwp+]ܭ5Ƚ 777KН^RR2!]Iu 2Ȝ̌,dH[{?3%cvpt^8>^q˲>о>UVV@v- :j@;-M@{8nٍ6ʤvsZ{Q}xj`vhWl-]]N 벏;us@xDtՈK5k/{ᮻছnu FC~^t^^pL'844,)j'oooxdţwK׻pw 5u55Z464~!vjwcdTыX;ڂQGmL)l1eJvp8>$cbe:pp3u*CQ-nxO?^]܋Ǟ| }!w #=KN< Ƚm0Jw@VzScbNF1ZPzHzʕ %t։%:et]}||lֱLtjb6 IDATb(57K,3<#ydd$WbT 1 1w6fl 1>8}~w SCjN&N:]N;%Dw5N7Y3\RZ,\4%EV`eL}kJM)l((F\<׊S:@i}5..vcw'zcJkHkOl,0Gk8"=vx*;ETm#^ I=(<4aApxq:֑&>1GL;#AC-RSSs.|x7ꫯǦM)ۖo|.ڈڦWGҿ6&SybX'pg-їe 9 `ACCO<֬YÍ*^ 66\=f" rc1Xoo&+=--McΝ'8ŀ;u4zp*>ɘ,:bw6w6fl6w6[%N5]It'XIuW'kkk'jݚwd嬭Oٞ*6W'[[_C]-jZhb lo! `{MVj L >x9w+ըR"=99AAApwwի///$&&ʤ~jkt]2ivu*wւQddp^3C+5L'nɚ+~ `*,29瞓裏reX,}3΀;̀;fl6̀;ۃՠ;AjНl tW S~K(΀;:yŀ;knBοo9kM%v;,#}0pp=,k:>[,4JK/bXcÀ;l6l6fl /omVOmꀱ>> ZYSO9:ccbsiǗ<$'fN(=%%999())F;%+iiyw_:tPs Yxŀ;kA() @~+PC렓L:U脉fot7=۽1G'j IJttC{褒No$yP9}utg:YH?,ՃǛNQ^RoNNccc!C3BLL 5ܕLV^[~%%%2P?׎lokoΖ$h4v*p9t*شiӤ>ղNh }@VVִƩ8Hܩ,>TTXPӕ@ר(YOSm|YH-#3Ò#--M{|i?h{]Q)uu-8~;2o軕gjkjx5KhTt1j.?rt &/55YWG:ViإOL`s~OBOOO46Y.Ly_sun@#J}TStCV#wcOc8c*9>\a!g^ρY,kawւ¡A'|"A5 aN,x s=u+~%6ك3W_5-[6<<;%l4_G',Y2i=K.e,G__ zoۤr|V R]+ SW5h PR^\vڪC2):s/ۂ5}Ȥ}Gڵk剷-M>nsO=$mAió>k[$!B}Omg{Mm/>]YԿIKVitim ꫯBoܸDa=\s"-_>>>rtQGy@D1x zwb9{Բ߾ VD>w}+LXXLGDdžߩ/1H]-'QbD'[uH4>X>M.bX,'pgpgl6fpgwGwK^twK] +л%讆Җ ;+e3jK}N>li?r&=Q.{]ģqԯ* #ObT;è!E4AG9'[}gSٳGzL=cҞ.jOZr8@t({B:/P{$E_n&'PD蘢0B$=3tc~X,urwll6flpg}!ݭ%S-NyLvGj]-[iJMwv؁N3׍}6I&}qdW/ 3p,ۤ# XSJ KXO KUjdK&&&ΨӁ4,2G';̖BBB˭^z{t[tM%5xFVJwRj(}ҙI4l8?f (~NH8vKIIv_VJ*j49a=]DR iۃmoTruu5&1);_Iɖtvڌ@O=CmRR{2ӭeJVi_"\Yƍl8D *&t ]uZBPM jD7e=6l; lMtQD=@m= u.1_x9qĞ{=D{cp岹egT@qY ;G0>jZ뢴Ok %`NI.AdkP\s_Jy LURiTR3s ۪/E JVlPllzˡ}.L?lȳzO* `:Tjg*jp< OXwfl%=ҥ;#lI X&xLRMEbK]}'F]X2_y˩ n~.Q}?gr0Wi96ի STTԌQNiT I=-1GY,uwll6flpgx-!x%> vW@w5BV>x`{i ]q/w X,<wq˳w3t3He j l'@IP9yfVddyyJWR˕on󴍩P:0>l~)Q==r|K/H5}/7|c^n5vzҁ(9m;WTmFǂNk&Ro_ Z:E9&&fe3CR&XTy)wx^]~6asxc/,jժ)S%fGbK鎯+) ,s),aM9颞-ՙ Lէ{zzy9itGcPbXSK 3f3fl6f3΀;'@JAw[LzK+Me[]оWpg XA ?Q^znMfPmI Z[Ne:P%nMJJC=4Gw$U!鄔ʬ[RWW\i|UU`VVVJ >5lJTgg_F6Le5J?x`sٗӦMN{{_k:'TN\PN83grk3U-i<.jK퇆NڵkOl ƎfIP:33SNrpq],Pweϳ>kwWfX-YM !&gggpgKj@N={PT`?,=L zSGzW/**Xl|ǔ! Rv V)[&Pn6p#l|OeJGuTf Z%qFۛ >KRb2׭[7cO3sնsu#$ 2s:xܭ?i m݉CxVlrG'GP-]] bkd*w{s1^%N"}>Mbt61`"O?mE``zQXb黖e{f:Jj޹wk<ױ%iLn8,:: ngPfl6>GlGߡ븂xDwG`w{ӂڅVUզ}rWׅ$#]B `X,Ā;I $i*kR|i:lOISGD'ܔ^f͚ Q^@@ښ)JV}wcr"ıg_:O}簧!8GҀgۗRIb)Z`W^y| Bܧ={m;WǞ#;M&*mhl[5^__? I޿w'u" +r( ȡr 5 3}ߙ;0L2/TOS]};tuu$kGeN|1'뮚 |ozM>pgN[/p^v:p<&("~_bE?u筷ޚ_\ 8{G+u8'&(3m_w8~ovӟ'Hdĵ${N\Z~Nw I$I A ܫS={{{ZQ{Q춨5Z{w4wTF `(»z~21oeG*z | ]9{<ޔ6bcz1d͸+ү3I{QȖl4P7DM(^0zGpuv\^'b~`3mD;{k6vkqsBѱs:1mO=wkz?G_]Tv^S͛猌ƍ 瓍H{>ʎf$_qt*p^v#pϳvtt/D>22R8}cnkǵN?9y̵yiItK,)5ƞ8'pō]N;I$I]>ȁ{C,vE^f~=1Ld IDATvjZlNj>p|'p{J7>,= ˯_~^7"BFUD4ofVB|_*Ǜޖ#m:f#"p1>9%O~D܃fЏ__z=#FM7FTX(>;oFvDE{yЩ9 {Y=B}=Pߩ@.p$I].pG-cl _vYܞ^/NoF#;ldUMV|0q{+G؈Gy2SO=U8M&,z*ϋQX[+Ӽ{u# 7%nWАmoT#0׉,^˽[]4qz#w}9^ٷ< 7lP7\mD?.r/ js9ׂn^;y~Xm_\7pO\l~X2f# bt"bl^xa{|+-?,TryЩ9 _.g$I Wݛ0>?"{=v ;z+7\y?o͚5ǿoםWAҗN{g&;v9mٍ /< lW^yeeY"r-{Պlz衆!~+QZ+\vex饗vNEN~>{1paѨ篅\sMǎײ^'_k܈^Qc$zYcv}ܛ >ײֲv+noZO pGIf%޼|_8K+<5w#ݲiTF>!y睕<ӅE 3NEiW1b6m$Pk2GM5K6> uXu]|?"Ql78y}8^N{Y쯘O=vޝϿ[ޖ=?byql۶-=F{wi+obZO~򓆁{,K6vW^iG e\G6Јm-~5:kqh$&{};:?!px9וZQʮw  'pō]N;I$I ;aFzx^l^o;zJeV5{D37~ˈ,Y\a;ɏ~_s=7 /l^e|t4] .HϺmS#5lo߾}NLzeGϖ)> ull,YjUxH/bKcܤNg:cz׿ury͋-pog}/tgw@'~ȮO ?"^tizEzm'Ͻz7H5qsSq.97*Ξ,c?3~uۼys:Bt|usN:?9=Fbs.F܏dzkd=x1|,_\bbC13\o:c\/yO? cmu8+ߏ{[q-q,Ȝ$qSsX8^s9Sƻ8?}0|$I].p_ޯww{<#M??Bַa blTzF#!?*t.Ы5B3#͇EmP`X(ʢ3lVse^gVwƍ'@;bdҭ=rG5ڷ:EQ\i~K|X\" {{w$ky}6 ܃7|3Xz^/e3בCVK٧k^zqƍ{Na ܳ}2>ލHwX$I].po?pF춬q1}zօ-; .wldوQE\z饕p&FF Xa܃3no$͐u5?ո>Q(eŨA⚅XrDiWc-7lqTo0nfPM ozoJE ˢM+}FS^}t]tQ+[{vUW]uUe~Nyb|l7(u+c2{7|sqzsF/sl:҈?F1/D>\2{n$e\-{SO=|߯V1{$etjSOTlN]Ç]N;I$I !po^EƍFm5RB]Á@J ݹsg2FXoV{M4ᣏ>Joߞlxcu?L#t .[,Y|yecfÂ".[zu{~viGGGɾ/,s+VhF~{02X85q4 cZyt<[Eq]+KVc/atZHߩHۘO|ްnː%_u(f4=~`!pSN$Iw].p@fr'LoO䮻J}?LI˒%K? 7ܐO^|n`qw )p'I$I}>?B ܻ3n}:55oߖuzJ.p pw;$I$)p9s!Dݎu]@-w I$IR.p wwm!pSN$Iw 0 ]N;I$I wڅ| h w$I w:X,?GRB aJdEd>~fϾ5rv(4ךfXuLg엓u>=O pq(v$Iq$ɮS"n[s滛=a[wy_5O/߷ ` pw]NS.p `PC]N;IR.p'I )pqyb*=6*p @ =w;$I$)p}qw; 2w` )p'I $I;w;0$ -pc\qsBb}OOS.pn#pw}EqX\qsBbGܞ)p}J.p pw]NRN;w;0$ww ُOO/߷ ` p:_3<ƍ_.dby#G,7>>^[nu@w]NRN;w;PX#$˗/;]ӟ|3Is?Ix駟N^{Bn,x'L&'':qsB-b0l$ww )p 0(܁.4v>묳շz뜨O믿>5FeGf˒9_\T3t= =4SC ߸ p@|_[l)f핑#l߰aCƻwNݛ[ngY0ة=F?x`W_,m ;`aFd'Iq:Ųd?E9K8w V8m{ `.p@ i~7לGD>lV^|L'_0ة[V:5^zi}-ͽ[Î]N;I wYR.p]h| uց^V;wVэWÎ]N;I wYRN6 '@?DчDOw IR.ptΒwiww·oߞzȑݻ2}7CtyMV?|k%W.z{zǎK.JaÆ-[>O{gM-[Σ?\k/lٲ%}#q6o~رpLLL$oVSO%Q3b{e+ blڴ)yw}0=55Uy܏=$=\ty]=Wj~-֮]Kvڸqcss+lɚ5kJtj /M#qX|y+=::Zj>Tٶm[eʕ+vF.p$w;I,)p'w _*AqDX((9׿;B뮻.9+G=Oe|P5\S8߼V/[!u=y/祗^޽s\w}雠ᄏu֕wH<̺೟l>7Yߟs9s1~F1g1gߗ\rI%馛ү?;_y'DMweZ?ϕo|*@5?wsPwD㜝r}l*p?)p"pG_Vųa7mT ]'''sFX·yjg??L#hɿ(%W#Ft~+Q1kO?te>1}c1rsw?ϴreyW>zG*QLj?Ѳcb}3ʆҸ7LClmm7qrk׮MooߞTsG`i~tn1ύ7ι!==c]Xl+bW]uUkvNʈٺ1۱GGG+ׂ8#~\P4}ƒ%K;g+6ΟwqGu5'G1￟ѿkME#wbnw IRN;I;)p].pAA="FΦկ~U8M2E]F{1v>Vs{<3FF;?ݥ^:g{5b0գzE!=ʆQo|x㍖_/Re?яj !v~;&ne>>䓕n9ٳ2y8QDH'F]w]e_@OE#٠^x-"*F7Yxn?a]k0wwRN]}{\+.btle~=Twj' . .Ftcl>W^ye5pwm8NwuMe~5kԝ>|g܍^;"lƈy"aÆy#w^eD~%H?p@eٺuksc:dd7Ĩ"Fd۝ħ d2ۿWfY?wSNRN )p `P/t3p;/Ԙ+_J /JH[/ 2۷y,FkǛl~\rIw*pχE߷:%p'w.c5?GS.p@/t3p|F{gE],]W_}ue^ޜ\~n} #.CѣG͛7'###i3Tsmuu2VXQy-pѺ{={[|y@=~1y<75nիWy,FkQ>C'o*oڴk6ٻwojժ70tWK/5uur<1WZHm/E$)BgBNy*X|";-:bތEA{wS<;}xbЋ}op~ %p<֬1jw-s} cT2 >Fw+1w-o֖_Qކܹn=}3HmDDFj"z裏<g>o}ks|j;y ׿n8}=n2/~gyfطo_W9^nG'ˆ} 1c"HRNvsDy/O9I;B?Æ[( *E~+ >[} Fe= 3=t~$]wݜG\=k#*ۿ[S2Ήl~Ezʞ=~7y_<e5>7sOF IDAT [9瞆7 㦒K.drYg7\z5\xɅ^X:po#gٛ`!p IJ I S.p  +wf,- g׶C6wo喁؉}Me˖|n_zS#{Ĩe۷Wꪫ?~+"g>!hMyqcA>n+8؍#銎N^s#MmN].p'I*)p')pSN].p0+plta ܃XxkkG?ݻN̓_p8{ʕ5jժǍȏ_4{xK.Lw4<|k Pƍ+ϋs{c?qyڦ? ]NURNR.pw]`X/oDO/l8fyS={u<۷לuztr,w;IRTI' )p'w;Ŏ}ᣏ>D~{i~z7|s4Bl>1{=VX1g_veyHtܼzcW_}u ׿<֬YSwkn]w^K/}KgyfcǎktsN/<djj~~饗Z>F_y啕bZ_~=F??Ϧ#z w$)}+'SN{m 'wݻwW}sxtF|;́{gqF+4qWo(/k[ϏeK;G~Nyrr矟n"W_#Z\/pG-&(wLww]H?*#ųi#_vm㜙1PD;رcM ܃{2K՟Щ_Wdߨ].p'I*)pw; wÊ}#M:׾Ʒ{M>Z*_41p>r=x1x6KC|+M7T89Glx<ٖ-[_=ywyc=ެqnDq%\Ry+HYkx㍕+FfoZoT~7y-Ͻޛ_;wLl뮻.={$N:Rx3Νz({n:^X3/"lX}t9s6lɋ/yʾ9&nʈㇱ]v\>= ܏=C<#2fҥKz*<]?gW $IQ%s~?~|w wbGeDڳ:+yגo7ߜ7Z}-k ?E>#Ѯ輛k"t Q*pb_H]tѼ>}'˗/kqS$,lw;IRTI )p].pVXě]v%K.MG+I=^:裏P7fKz^+kELt "d5::LNN.}lٲeɞ={|=FBQ =c8G֯_h_[nsC \sb{7{ qfڵ2n޼N8 P]NUR.p'w )pj.pwPzʕ++{ @w&BH,֦}p[ ; ~>&˟;S #?oy> z  7w1O>d%pm@w% )pw Aܛ]N3 LLL${n%pߴih]ND;q۞wS.pVvڕ?H{4b/bڵɷJ~M7p $)JSXwwP""p38#9/8+'Ʌ^~=&Fq-!p IR(pnSNRN]`X@XxnK:dZF.pQNs޶dS ;w;A$BW_}5On䗿e_=پ}h]NC;=7$aw{ y!].p w] "t>$987ˆxOwA=b ;gw;I I].p,ww$I;I].pY@ $)p'Iww]>#p IRN$$wf}F.p$I.}*R].p ;gw;I Iܧsz/E 5pOf<1]Q>< ,@ $)p'Iww]>#p IRN$$M/p ,T@ $)p'IwNi]bz]`"p].p'I;I wE}jk:I;I} {i"ww yV-pz3w{q?p$I{z qA@}F.p$I I w;"p].p'I;Iw#p_Q]5}F.p$I I ;`Dw;@]Nw$)p')p 03w$$IRNR.p `;gw;I I]ޛ}#x;aC]Nw$)p')p 03w$$IRNR.p `;gw;I I].p,ww$I;I].pY@Yh@G'?unG'IRN$M8US|^HDzrza/ufJ9}y|I3{]]@ $)p'Iw;)p 03w$$IR.p'emh;gw;I I]N w;"p].p'I;I I].pY@ $)p'IO5w:Xo kABv;#p].p'I;I\tw{mP+ ,x@ $)p'Iw;)p 03w$$IR.p'bG]Nw$)pw]>#p IRN$wR.p `;gw;I IȽZH{7OOs~#p].p'I;Iٝ/}j ,v@ $)p'Iw;)p 03w$$IR.p'wf}F.p$I ].p,ww$IS~B.p ,4+c[&o<-yƕ-M~ÏHiKqNŹ?i~bLw$9<1T ًޏl/r +|/U#WbO7|#c +zX7"#75@ ܍Nw$HNOM jE'hŶ3Z߃@{qz].p'I;I I wh;zI#b@.p$I $w;4=elQ1G]Nw$)p <wFqł].p'I;I I wh;z7}4A@o $)p'Iw;I ܓ ,L)w\TdL8A.p$I $w;4=E`L_@o $)p'Iw;I]#pGOwX,w$GwR.p_{-w ;zbA.p$I.]NR.p@SŤ w$$IR.p'9,{M.p/{ph;zbA.p$I ۊbϿFs>󚵶C>j? +XSŤ w$$IR.p'9ЁO6O wq1)pł].p'I;I I wh;zbA.p$I.RO8ubwR.p_{w;=E\L ` p IRN$DwR.p ,V)bR]Nw$)p <wq1)pł].p'I;Ia|?*مOI?-P.pZSŤ w$$I wwG".&X $)p'IRǏ ].p@=E\L ` p IRN|{].pI;,w;I I $w;4=E\L ` pE,?8"lǖ & m?㎺P\c[(h[ MP`O;uHII{sY)j5~?W#p/tiON , )bRzeI3QG}A hT[wj8>67ETubq߀h?v:F=^رc=zȑdrrf3t=zemNCyCό/'mcxSN\\@i)ywmLOXL g;8ʒ$&ꈸ4"h;|pgv2Ϸ[v:t6Qx6z~kuvڊ\f>ۦSz8p`^ɁmR^c  w;zJ?b#N}fR=C.p'Iɉ4`x8",v ;o/Qvo׋aז{gϞ:vb;{Ek~;im~u\,y@5!nQw].p2)wR$9?p-F=0< fv3Hl'kn(h+Z2;#ϳNFh/g:';a}(o6:8;sW{X.pS.p ,>)wR$9׈"\-FpZQټ堎ߋnnA߯ aA^;ԁf'OYh>}pG% p>!na w]N;E"p'X I0B"#r뤵^vzYmᦈ~E yt@ρ2?׹sCNְ2},b/[~bƩw @' CK?JiUÛ<-yk\|fquɓwO^{tk#[f]r>G׿U__H^}tK/VV<|y>.O~}rFF^˖&߶&_%޽!+%Of]֓ۓg_N~7f%K3>Jao&?-]Xw>wd$}{7&\"$9"lxfA ڋ t,ۯ {З߾H|0}=>E{_c쿃w$m2^ BB@ rQWv%'>.uzo=ჟw[:WKwL,_+щr|:e u_?ɚ}x'GܟociztMNGV?G^~Q웷=<wo;:;zva}ljvnܿy˜әetξk0@M IDAT$nck#}0~ۍן/Os6Lʵ֫3۾vhm*i;{y~>v2Qf']{{|.pS.p  2wA ܷæDvy69٘F?vۚ97Lƶ{uFx4뒻~^.i""n4<waU ΃︬x9rtu9JzV'iGPy/U4.~TgA~mub6NV󋦉(>{?xp5$9?p4].p͏h~__&F_{Qާw].p@=)g}Gxu|zx^# =ml:85u߻cv>f2ךv䭽i?>2]gGW݊bD׭Ƕ^s2;톑Ӂ}D!pC.p'IΏȽ||kz.qrcdW#G==Gzgi^|'"$.ɊN9QusV/W}rb||󉸻 G {)w]pSPC53CD@לSo8 K PZV75G{3VEz_*p].p)ʲ8Z?1zx˛h}ΣMǎXae[_ͧvT]t}2mՏqe_Ǿkf[?~ۚ6 ʴoV9|9{ Xng.O(HokLv:P㜪a#H ;;⻘}0w].p,wA mMe7JÆNRW5cMͺ䙻7GHq_}}M[VM4~廧GBW 78TwWRv?_|`/hc'J-WvUÛ\=p~m3^ٗ| ` I#ga{Z4zij^\#f=q\]d͑KZoTz/]kEZB;-[Yz2F{^g(ЌOSa^o oXC}2sr@IKxsyN,ĩػ=ڎC8V?Qۛ9X-s+xڶV.p w]`"pGO6yU&1"'Ny;8虇f/k[{;v`[X&>2{M_OmP~=~j_U MmSЁ3qo}5_9s.P^lב985i5M3g[āƲ;X&B7e}J.p w;!@2h{>OO,muk'v=?M&|x$ټP>xzF{^^oNs>3FW3p߽h}r|mX.pC.p'Iܳ=Za6-[¹d=PeSwq_{}t}ۖmyc:޽pߌ{x^/dϞ}ɞ-納2iw]};VX#ߞ:ӌ,~~zN{tٟT__vZoO:ms!`oop_a,)w_לk\G#tnx]NcR.p ,n)<kypȜ}ۺɳܘݰ|2]J.p/?pc{v+s}aWہ{6{kw^/ǻw;xAZ6r{5?ln4:g+w3Ά'{g>{sɹ{ֽXlwe߻gjQh]ٮ{ޒ9fϝOe17۵'ٵkw)w;ƒwͺcWLcc{觱 X]ɮ38r{%yeΙ玪o9ﱙ=}c3:e,ێS}ccn9]+qލ.WeX57 ol2wǤ].p)?Օe0(xtHeDa؞}ʴ{>H?69Uj9?|u1 FwX|d ۄ0{FhA[wXHnlO.ݓ;45ݶм.5ŝML/q{Cwƶ,g;Y:] {; ݾ}{Mi8+ϧ;Jmdmq˶d˖sݜsK1k۶eltqvYjTyMmǚ1?jc~o4Smάö]q[kn9e,צ*7W`V[w[-fY V˭ݱc{Lj&GcƑB?#w)uyw {7_މilqjZ1{LPKSyΫl"G.p'{I~$#px5-[Tܼysfxͅmio9㛛pKܲufY绵Ʋ.&u閚۸smf|}Kgmٜkӝem˶iӦdƍɆ Rׯ__0 7mp6oie~=Zu㌛0wuqk>\Uӵ<6Xv-mk[a̲nXf;7n\ި}}3&G'ǎՁB]g7U.po҅ay;Ŏ=ep֖}[15svU}{o;._vWsh˗ `#p$D:i4r.F|}]~d㺵ڵ5Mv|#[~mY[vf YiD*0^e_6[[f\YY _lvoڵ;>ev͚y^UryΚSVͧx4WZ=׬u)y q"Wοc,U\1գ\^i۵u}͕]충쫛]UMgsת]ݡ}g7mڐJ=z4(tbwZn w;C2\|zrɩ֝>{^>k zzGh?I\=?:>>udoykˑS~(F+ϋ7}?"pwr8p cD, ._g]USAdFU+'WT\9eMbHŕ3K]<,v׬W:ڂS?&풫FOoג*sGf]Vep۸WIe]'kިL~>>#gOfm l_K:wNwRN5={Q{(rFGG#u]FKg]Qb_lƥ>i3яNN7]\>2f^{umYٮ%-ghI<6]6\)::c ~X:Rc[揿Z۵H}kȊ:s][9*Wvҙsjxmv[r)w`ۏe\>ҹ}7 mڼ!ٻowrxPONq25ܫCwZn w;D$S'˗&}, Ձ{:?tWvs=rHGmV=-; 'w;)p'zdll,!H 1l=E+s!tw8:.҆pGPl=2Ἓ‘2_.)o|c.ڵweW)-N7Xa|n涯4Sm˵=s=} ;ZZ֎Y O- ʶl)vt/_ pߣ)glQ,e^ p϶Y,߃U?i|f&pDw*EUpW6[?;!|CwרR9kC7`4TK]O6 MD"H$D"Ht3}PZ/ pBj(~-ge]_inr5o `fw8.ew+!s+uisA_aݶ]&t卿sBSxYƔ-?6b&({V %azuqՀU{1_{gO;; fd/]$ޙpW p-xD"H$D"f]wb=p@_p)۔Fp{PwpD"EWD"H$D"ѧ*p],A, [w .{qW^ =t],߃ .")EUD"H$D"ѧ*p],A,p]w'~.X,p]wE"Sޫ.pD"H$DOU .X,@Xp.Xw?M={N]wb=(]wE"/Cޫ.pD"H$DOU .X,@}Nl/nwg܃y|}]EIF@s{ȗ gU.d:ݕE}O)qϺbX~ y!H$ .zX,]$D"H$>U .b ;nx?~=xc],G g11vu~,-.K܃3CwX,p7D"ѻ*bE"H$D"S . ]w ~w{5 .X, .H$eHw{b"H$D"HJwphĪh~U]ٛk 2  dk]yb;Kg+S5}U"ܯ9_=nwp/ÿI˷C;~vreb=('ӻ-".EUD"H$D"ѧ*p],A|3wwyve/e[w!#_lXPe%W4|yRl 3olhؘbܶʼbX~,"+EUD"H$D"ѧ*p],A,|suB@pwm&{ɀ{ܝꋫ]%YwX,p/")EUD"H$D"ѧ*p],A|{@o . p7 i.dK,«|а'~]v|LO(5Sm{yWKrO(]Ƽ6{-5wy7a#{{Po޼-]$޿pW \, .D"H$Dp]wX Kܯ%e~[{>m~+#Jܯ'C͵׻Bp7Tw}SoHBwX,pp]$2%JbXwH$D"H$T%4o^R, nz^2ko^+u[BZgfhޕtny \<ߕ׾]K]E3`٬ߊoE"~izmVf0By3+]=hV1EFh6Nz=s,߳b=(罿"HN%JbXwH$D"H$T%4o KNi}#>7]ح< II IDAT)K[A`|(|p{Ay3ŻP .OWn]u<%B>Ǖ{=YӠu8\1Y6@~MBsac_5ߔ'BI}gE / s .? 'E"Jw{{0?1E"H$D"Ht3 .b   {<5߻KKs1p_ Rp n/ۀ p/~n:pw(6x,> ,xyżKśWuǫTıV:}W< k1b=(D"QpW~X,D"H$D"$4ot~5 ) vru{ ݙ5x=Jpc{}젲,"˩nYjZ ~ *θXGb?dد btU=N|?]fxo=粚Aޚ6E=^pq3s`z23gרs M;c/m:cxT]l:@)?+?r 6 )ex-J9=> 1pTm+~굟1G]'`kkZW~/Խ4kqG=\n:Ns}#Tu!5^k\Gկ c ƸZCX\5jgZ_Wltqb~3^Pu-^uU_xYVWz9V8ʃ1R^x0]pc>L@<ƽc)=x\mksp6c_{co| >Ħϯз6mzqVer6V{ s?Ewً7f_n\j//^ԽBy|~n|MNߦ<ϕylN;Gi]#{[̭;;==<]|>{Pwp]$}]^s$X1(D"H$DIwphptyyF;;bۥ)x鲑ù¯N;W ء0Y{p. XȀ{yf'uZծc_]cr6f;[g_0a#szA݀2 S}veBVՕڦʵi*7b3yl6ؚcFe+,-NwZtM."ٖɪVV,چv-3[̟,U#53t<꼥eFV|Vvnx5v}aiw" se} xE.Y^^αՊgˉZٸQ17EulIO^e7e\E>aQ[#Nmc1{\ڳƧ?k]^XC|\. x|a\݀kl^r;>w*/X6r 0<>x/a5nT,γl1{>奅9nPsKS}!{l7oP<]\&]wpD? .z~'X1(D"H$DIwph݀7AO p><ž鹴gfS0%@\M~7ȩn  ɱqW+466 uqI\w[ Yx6NM@_tذpGixp(AH{hui@sAEWwGpOu>e|TҜQz+c#lIe"ss3\Ep7uu wjp汾 uU]zU{pnG&u&P=`>unKK g2Am|>^79厶vOWj~btHhpC#ݙlGrܦܮlx3;PvVoov`+` bkfϫYSzZQIϟ>9z/OgRjGX`[#IGm*OmMU5pu*suU55/ꨮ;Z9WVa}J<`fu~n\mU4culrSC 57mcw^|UPWܡXK;){TY:[מ.ȈnW1߯ z.U=ӊrϔTl^?jն ^jNQIWW7uwwSOO8N^'xy +=~@|#֯S5+++T =zDߧЋ/hddu)'L6lOE5ƦܒZ[ۚmѦx;uVsAOn57tQ+_C5p\} p{Pwp]$}]%Yb.D"H$Dp]wX].;.Xhp**ыϨ&˵u ʍy]_הƴZک6ן#4V+Smmuv-54]zj4Qmyk::$%Z,~.] hVk&EMn͍Eu7c+1><0=`.'ͪgnw1P uj|T]k?Paf_].(DٮN[U% FGGiidzٳSs0k!"{q~Iٚ@8oFDti_ٛU]+++XY}a,Xu]زDo1K+Ț6,MB!S٩I{"v.תn362S=x2YzFw6!B ӓX2XāL%1D*lRͱ}=z[i O˄-ݧeD"p0|33SA굵`!5uXTVޥ͍\o͵7BXhR  ݻK554߲'%n[-.Z]1Ha˴Ӿlcc*~\8OPZYZ l!+ *r\[O;"/@.玡aמ0O+E4;p!ʹE;zossSm(cVڦm{]Zn !nl͐RwM,p]wE"ѧ)EDC;s"H$D"H$p]wXrW#TWWEL#Ci#3ȈDGGR=Lyb|&ghbtFGƆiq~v 'gԎ]D^8['ؓYbU~qq5+6)u*>UlNxfz4(_5r0m]\ϩxϬWT:ȨHlа5;\~diϲeiFƆit|!wdqnee]wzz3;*ޜe5վ>k^ lzpth7PE;E&wifXNqgW~Q=>>

        d>5n dL>--[hxxX6't|pN#9;̎D"E)R4>w$m&޽:?ʎbtvdrRgʯox,إj[myVv5CC:S{O;+?ąKW6otq\KRm~AĹrRퟫRKKjaT ˟2O;;g9PP׃/y}q~ UKZ&xF^񿺂/Ӝcm{c*^Xyu}TeHk\/m-}|yfVe}ޘ' "XҟP n@K- .DV>$X,E"H$D"S . ~7۳[2U'O ׯLV;oWHܿ{}{yh|d3;lv^VViE%ge[ϾVXZWk.w ZN~KtvvωdY@>wd~9gkdťɯoS~u}שL/_JÃ/ZkW9lnPu3вOtMg zuyN^^z%ST:[3:7}.碱0>jhn) go(#G{&2:gુ/,qA%,%DZ9\΍Pf'ixh- [ZZV{8̀*\8},[h͎T9)eLPK.Zmݝg*w)>Q>eG#aF G2 꼎&t4c5vr' :==E 9bPzC]=tu1n\oҚDQ9`pP(@ SMFqO#1 lGT}E9j[ `w1ߡ޾n,+e>3-,817[+9pB9_LxXpT__Ot)bR|h&'8PkfP #:y.DUZZ Ffby0}m4nRgg7MMpw#?5:=XhʱhgƘ7lcɈ+k:ZR2;V/?)c-pfij0t&}wlC̓\0;Oudr{-y^U^,p]wH$^>"1|M#0X11&D"H$DwO6?b {GI٢PO>[qӵJV"UT'8g:{sŒ)^y sEEսU{dxꨧ§ 4L$<3ٞg?Hʥ ~]dŽb$5LWeҶh8AZrwm{:433ř 8D9F<^KT\k>O'tfڥ/^Poo/gwݙ0N9K}L>8vsۜT;E8n'ƈ{{jwPcCOE*+9jvwvSa3Aì;vjx?>x#gC?7?Do#?xjkQe@,!n72] 'oEcJ"DBD"H$D"H$D .(p?|n'9ӧtt|@H8#sL:vl.@Yn'tƆftHLC e怅:k (ϸ&Q (06hhp;iuթ˙ R04ej8דmMSw괳C=O ;v?٩TfipNd@ Lbdzkpg=1wыi`N;y.fjkkch&iC>_g^P5OS,8WmlYc#dXȽj'kUϟҳg͋Iemg]jG#KtçQ}6yƿ*۹n8ǀ5;l{kYc#3ǹv8!䁁~jmmUMOG- &sHI`"܈%#79 8"IV:;[U~ ^:Eg7z9;̌䙀Fl\IwX'8Ovc1w5IPi:Vg{d;AcT5k۩-*=s<Ѹ>3/I<~''a^\\3sGͯ? oWCS=4 x"/$[YήvzRCܞۣPk;c'zdh_PLLLQe35Wxډw5`1O7p7?)%n@o_~_Dh>~1Psȗ=ڼ̐;nmAyzv! Rss+=yRN j3gxjD(?D\=Ѽ;2#0>O^(_2yQ6~%~rxHXhLs_aiOMI\_ksht`4gCo\ .DpD"H$D"H$n!p], `C-C4(aX2iۜ! ܗ\" 82#cz>Óǀ'#Zb W}=UQ%wr/]\׃#g8 $Y C8EONN]9|ʰřwwwf4dGc QuuF\gi>Qmh8 fd5iO%e֑7WݻhscO]7[g]N LѓɓG pdP0``do^^{n`pM*Vppbӓ'^ryIH䙀j~^<295FN,,MwdE ײdpQmd'z+**fj#spc(-cly| .^lhXm.)`OU8D{خp7/0S*Gy{{7T_lĮg8+ՖpO`!ONb,V-p{1t]bwdL:^,n;KwpD"CD"H$D"H$D .x;Ғ3wrrLH4fde@ww#)#+/[}^_H˪<.] us p1lqYvQ]m7/QOOof76(Xg7`F P_o4wo~ke=;nOctzxH5:WGt=q1CD ,NKM* h ^7C] +[@ lReSNee7icmNi=J-p|`f}uJ3]zv;566R]] 1xnڱHbssxBE--ܭ OM~+j-p??LB-^p-kpkuS߫b'FL HI-C}4a'p;`d?(K[nN.n#A]*++6 P㼣5x.?d0VLFyħ/( 悵 k1Gb1 ~ 'bC5wp>w!\_6Nd/ipj>>JgppH#u 7R1}[  ^,nܳb2g@?`Fb]ϟ]. p]wH$2$H$D"H$D"Ht .bX/..pFO+nˆ #,@ʓ0C@<?m3Dj'Yʳik$erdnii*Θ^p0QyB pEY kàOg. pGkzU;9ngq rK@}}}쩩)n p_82o2,y8Pmbaw@`뵶Nۻ;t 3\P*q3vuPESz^uEWOV؇NX.>G&cKvР\.et=;t|ӳyp~cR<K ĀBv2Mѽwރo9Ig76 ;{fl#ဋZjߗG4vcwdoni$2.0Tp{~mj9 c.ѢP0dv8X8#c,Pww' s槹|A _Xq.M1vks?zH Wg j@{{ScyBb=> ^w%Uubʂz̓me_>(1=wlO@ vuu▥{>5t'e:pĵ^~څyOHTSQ̀{G pW=WfoE &ifqRw|UT<85wXwoÛ<gFvu{? .DpD"H$D"H$n!p], `q?-/r9iuu-}z񕀻Ht9=d\X2̉p"54(Y{< zimkk;UV:FH˳$].Ohwsv׃k}9y{kArdt٥ GOhPi8B'ar ЪauU;0ŵqH&&òڎ}@6[ $Հ3dZl,bX^ZJ8Nz}/~>4=p;d\񽽵KA: #;opu#?Ș$1FOex'sXs|;wib|y~zC$\&5vpy> cd$1ϙPG `.?2:>==͙\=n,ɤ r2>::LݣٹIr8Wh٪<*G~wj(߱/b++vbtwp/pC?|SC0:gz13cMAv3Ιs'_ ~=NH[wHs"H$D"H$D"-$b,nX޽{*f E pw9Ku0:&`8g6mm ⶵvå o0;2c3X^8E0 /Qkkِd4Pp6 nLvy Lo[[[&}\n7uwwѿh{4GO#te#%H npٶw9[RDObQ rkEVi p_~ pGfv[U}p t_k-Crc'yA=˫|A pG?pg_BHR~o pG#F1.Xh⒬KHC8@v - fo43+r1{yy%3,,U p cQ>X1 ) XȑZТmp3`{<={oo54rkgƇWT[WE*is4~%31b)@vΚl쳢w\O&cn@7lx}Za'*8K3ྠU p?Rw Y۱X߳^/XD`}>pᇷq67톑.]wE"(pD"H$D"H$n!p], `w;`N!h\ ى77v8l 'R.fQ=˛94N{{ǴG۴ʱ{DѼ;g?Q<`=E}:gpKa>!xYfC''a K\!=411NNwuҿ?Ȩ*!d<qߺ껀?D?e ?^ۑ[-sa/^0Tm,zdi2h,N kP @0_")XTY<=zL%QD_vwFQ.lPc} 3n[)FOug?~F}#Udu jP1?  [DZG[;0yWŻtn7ȟ2,C觞nr4:6ht|rHh =On0M/z 07|zzb\6w͚_'R89 e:hǢSn,yT3 wd:q @\Un߫wrG`L'%h H./Gh 6"|ڱ&^s7po܍>)\p=we“$ԘGj4! ; rdX{Xl #=wde6}1;s<9kkkkE{NSe޾&@n'pW_]]O ܑ=<5?ճf&@} T>ޞz666x8ﶀ;gp? d9|hAYd C\ mxCi8 Ͽ{ .1vdxIFB轳i`iaꩯgfn@-=eIG;mor:W}~|| %Fv=477NsU1g@@л_j Flb{qYK6㸡VVSںLh%5c}NB9Q1lo#w{x|Oa}\z%==&p~~`[t=I:$mmmஶFlak5ܡ#76jjjR6?L8ԳC0L{' jY9 0%@N(ۻU9 vuu?L=Vpq1_0&UڌpEp7d [@3 }pp&;3u Ȇtk1zL^o3s򲍳 regep^2+J (\ST9By{UNO2W- Y|jO#&WEU\NȖ~ր>O>e@X=]mw΍c]rqB ш#ĞncXVl:h|b~%'e7"Z&p-|BUxZngReZVќZ׿? l7/v\cړ*jxA9=*Ǣ1oGǙ9fX^l ܑtjʊHF?!C1ڂad=>e~0v(qUVVt| 3*2թ>?nvH=16D W[@SU oD[Pq8 p7\~3 Xus#P4lnnAJ863v3nZd°v8KLʍBkl$#Njjn#jȾ€{Tܵlwę*y./ʍ p;3^ C:r;2ca wXaOhh_iTK `lX3Ɯconl pFt,888E IDAT mVV>OK)0Pи͙Sq pf?kd. 7=% "s3p&wdqGw|>Lѳ4;7MGk bNC9s"?:qĵ* q `vWW-.Z$_?8+7; =(Y2Exblc10 <`{6Zf(54_GJ;gf>=i9 ;:7`o}iU~2#yaa 76F`7b("yi  ^43ʐ!|^|, -b8Qm{#|Y%--Y8m{vbr0o@ݱͶ$cu{2yAW1'̍>y}isX$zʱŨvR3Io |/_Aw3S~AR-H$9HwH$D"H$D"]wb ; ?nsggldҠ( D~gf=ƹM)(554вe'CSTY^A5:{ŸOډD^]o,sTb=U:>rpaо{Izv?:Baa=CsقFfrE cP蘎iwk7poփ~jom>Z^'3I#?g9.l# 6bZ5@W#4^v= 0'Ϊf@)<55E_2 4eǨ+|q*.w95Ik uttrq į#2O>7yovvrC{[NAU >򹝴}}Iv2/xZYI_}gh ` R 嵼s e$_Kexlq?dnPcM\} ' `!ҎjcռcoohV wvUo8fd73jW}Nüs2^W'ez<ꅲ2lő!+VWπ 񤋙)z>bQGEvyݚUNJ'dnve-v"۝TSOXTsT_7}gj5S8A?#k<]& FeܞZ;333 JsޟP嬡?b6VrFq' `΁qlCCCs2; #qx\Ƶ{7lCyPk57bE5r;qb <56ի~Lmmm܆de&ƧhjrPLe,,5vR;T688Eዋs?{x}-{ܳwú߼)pL{nVx]wE"Ȑ"H$D"H$D"-$b,n Xplz-#˓77Rgl@ 8 j`+j ׃ArWi:qhiB uP_Ou &q/=77୔{c}a荵\mr(2tutRww'0Lv;9s@PGG*Ow7~nnz! m_iH9q;-d]\:!ˡfPEe*S- PYTcV@R9ZeQ.nlEFDI> `޽{ S&{Hk Xhr5xթJ;mv>fhiJ{~`42\ bY` w8@Sf@6WV YҶӂE_c40Msg&ibl[576"2wwu1D]QQ6#ʣ9gGx=::x,m4::kl[Z[鳧t Xx٪8/--q~/c<ýV2`nܝ~iW'"`98Ƈs+U&S7{{{3M*؝]}>bTfrO><2@eΝ/*GjnipKkr#5׍lԡIg5uuossQSS&.gꩺ C>{@3S**CpmGCCz|h1l-&\Ww ;yf[ z1tuufc<47uFpy, 0 ^ \76g^ =}kf8Lmm;ltt1? g^;{꯿3PJՏ(@m++GeTVV>S iʏуgE ``π;{.^ a=i )pgho& p)B{)ۯku7or]~ ."&E"H$D"H$D[HwpXpxldF`upYsCr+[ZZ0 Aj`kkuPr]M5AM3 s#39nF<m 3L`F}R5^dmdӮ(+'1=,r 3-#@/ëmF}]IPc[[+߆UmSWQ(=Z>SB9R +˨#z=y{͍424@K s6ʶL q'eû ߿ǏңGRw8@_ݺv Y, "Pgds?wrW7)坔ukm`nii1Nmgo&zbٳJ-^<;qz FUUUuB**+u06uv3;]6XT20c| 5|}ēa߈>, 67 |ın2migsQՋg3Y.SSv_]O0xFG-//.+{hzrrFyn^1`ըKf}4Q}y٘5W+cή~{ijz-V{[vPkk;kwdtpKvKnZ)-J]m O<Ps491Fpfu@m_3/_!3>}h[Ssc=]}=]4=5߀7) uarFCZpzzYGwgW@(`GMVvePڳe Wx| iJ?T\n!a0v cpwg  /88(]~L~b6M ̯p{{vBƱV8Z~ߤd455q`ט#@7ሏ6x8Nk>:;;l!{6:d\ȡYNKA_y݋VNr{Z%v?b,lP`jQ356SSsցԪƠQlDcʍ<9|Z")g.Sku<`tw,u_[ձN+r>#!@Y]5^l c>.($Aq r6OW3/tڑ4&l|  p&˕jCwUӢr b iS`<@fg{#Ҹ? r 7 |\Gvڎa߁p/ܧOS91!gy>/=#'F=OH@Cܘ( o`@N0O87Jj'D`D e {֧>cFs~2YqCa[Ĩ1Qh2>>#8h7O@_}Z4c-@R0p_W- =њ#th1 X, .v6 i@cqzݒnw@@zZYѯȫP({.Ч5 ~3]~KVjn^ͽ!a [!ߒ5u!%CP-07cr9V+/{ρC_95\(pAa \%]O)㜇A>Rmւ>_9sdwf6 lk38s[vjrLYjތMSar$ r-t웸s_wʯsDcR͟}w_^ןOun0`h߇\; vxR\ēAzXswoZ^vo`w.qQ׆y/g'f>;c+fq~=AO+ּyms};~'7cǘ's88ɞvn( x hmm*Y]]E?}#G)8ۍ  6^ /ߓ]Kp]BB?#px]wE"W/fYj`fZ$ *X+x  w \"pא:_#ս4챎{Yl_ `l;^so>aeW׫ڀB/{Dy} VXP-/Cˀ > q@j"j."aZ hTqkn.pF 1TׁcqP{YRW/z$L봮^ $!6VM+j9`(@2R^߯ںK ,\q: }8nQpG@9@u RfmHdC)к9e>cq x-c5sZ ʽJ}PʉjH)L#Bb " D_[QZíܳPzV&hwBP,*փ\ccn̻)p¹XwZ?}ke-^5 lh370 :Wj˲_{5/|Yabȳ4>/z +~Z'30d*_Zlg s |E~r-Y<(Xrg\CK@ܗu;=nnw6~K\x07?\9;Nfɜ]U^M Q0\ mG.l^n3s>zZ1`\'C\si c@?Q'1~^ٱ]҄:8L/֞v8uZ On}4o {&gL&EggW7ڿxq w9wί_Uv'~]=+~Hn'p .H$z>gT7 `o-D ϻp$Ϲ g}nzZiJif&ꍏ-/r@0A>/{>1K$k\il q[cqQK#Jìё CDݙ6;33V5::4D##Cꚹ~۟hH P/@_/M$-Ψ6-2lvfݗ\iu՞\ {]!uA }}= vӠ:< -`ȃ^_:{lqnPj6 j6C:;;xpv6u>i>]]].uC3NuVkkRVsRc?5Nր;4sJOfs ~檵]E۬5娅ۗ.6u+]/ ܡuFjjƦ:z[-:}N]5Vgsj 7]<_La1Ws-hGשתk׳rcܹ455QKK ]ss3kDqWL6`;^0 IDAT)`BhUjnVj\47ύ-&jT}kn6f56jyQ({\*wBqUk}BЯFOw-^}nlVҠHgM= !`0vCW{qqn]1~8csU}뷃jS3ڄ9Ug}uu9UUUPEeUVSU59b |q aρm8ֹ{~NUW(ժύMU|>b<#uR!xKJjX[_yy)L\>Vy>VVձ J~E&41HE'\PȀ'9M܏(Q*`w_.=w_ϟpp%忿p]BBKHHHHHHHHHHHHHHHHH'8q2cyV[w# 7}56C"B!<b~p_@(Z➱1~{@H zOOQ@@ 4؅UjO~J;xnAgcRRR{Y5U s Wrc;'_S[@7?<w'/pJv )=m~ \ә/~~p^S̿c.%KHHCw gp]$ `;S8.->3ݶX]50 kTokv*ʨz;. wwe%өůݻ{ݽYݍӕ;zP}]߭ʹP9` 8޽{t VWwi p7cce~d&IR>2J#zxo'nv[fy6W~}^H9$nr$Ըx;y`]d w屜QkzCtwV.Y,+Sfgi``HͧvFK\) @+ ? R ʊ%U-к_?99P/  GWiyiQf lS@amӮzSgmhw򴵹jX^n'rqcdHjQb˴qOgkk6kwwAwvvhc#B*۟c4dvVB Ȱ/`(V<h4roڛF<pH$K%C3S:͜Q&}F)%)V2V:T =QR'R2:t"Mgx1՟h8 ej.?+b^p.X≸/@SJ3v{񴾷j^8v+D"Ϳ;% sus k֭[tm7J-fNRjޫcJLJI}N'O)qL8zHac{~~6W~kX+J'OCwpnw Kɇp]w%$$~!3 .xv}%cjXJRXiM pppAa@" 1@+}Z:x=,[^. q8 YYþqu !e1Ν[ lla`]'mK܆|ͅO8 q砕(9#~p>πӧJf(OR̟ik tK:M~Ig,CГT}~Q9Mevwܴ/Q4C}vT8AS ݧp)ۀS:ߛq|JpG֓b1N݌7>c2ngor'-)ӀqC (MBn߈:y&sa=WMp cyT*ͅ<6i_r777 9u?I'=$?9j72a !<\/6c9חB¸ZgO(ZB ,>>vpGqw܏Qw p .]BBBBBBBBBBBBBBBBB)i_+~UӿZ+KvH$ſpU,8Rl^S[M%p^X]LS Ɍn|vzn\/K~P4VR礒3Kr::<`ٙi( 0 Co:Չ ;Ӑ'TaM#>cO,eU2HFGF\sz3\ ^u 5NY9Hj6EDR5_cqd}bl^ hh`jk ;:'(~3`],P 1\S] C4<<°3?̋=LH 8}oS96 X!uN B)Uz';^T<N677R[[3M4\z/uwvk(y8'5Wz1oUNb?j/+/UsUO ,s 9jz R1}ۏ433Cjam t8.`U9c\b,Ģx,eP8T[I36:)Gpz:[ibt/C vpщzM|`o\†l;>K8ǹ藞G=Wȹ!.=cσc: XP07N}~<~}~?cj_Qy18`굵UjS26>JK0Q7!xN:?g /tS&\֔#'y 6V!yk oVcG<61Y2䘥`' ; ŤI7 $wfw۽%vsw=ܿ!wp/ sj .ܝ*_}q?b_o)D~T%3祿$gp׀uLrqy:8.į!pBSW#@"Ht ;~W^heEp}!;`É\Þ]S0ހu|xx@ss499NQ3O2sy 'kK .gOk'*+*ٝp2dpǏhBݵц$g̥cjkka1_h &+!ySYgk-S8P'q8857jj>&W?>(a Ƹc %*6!ws1._|)H@q -QvYǠI† wkk Po/OD쀤0p5_hOz_ U_%aи箫T^)ȝY@ S"yy}a^.Ƙ9v*bmd^}:>S?11E%4;;O[7?ښz~RQg2gO+6/(iOxd&Y1}I 67`V)sSMu/o4?]3c `\3_7nRFC!o>`w]s7N5xss4p^ "pG;#T]UMee袃㘵>I8Թ}y cZ.466R^>S ^39Vͭ54}%/',sT*`a ݝSrc;_O}|1ni{㿸 h}W;OĿ$2|KHH!BwpD?|w 4Ưke +++ 6Q7d1׉;mX*tS7c ~6` @>s k`ӆs/K〮w X1#Ap\fϗq728ɀ(5e x||>#*))Yn3<ܧƦzjiibP. 40_ pl.ȓ,; 5+̀;ֿJ~xxv[r5=p7{ '71Qee%lw7sxU=vaW"'Ƨqc  'F,|BQ .?tGZk5zfqQEczhfv2Fy3(:] YT C֠= ],σ6u {G5556n`5^߇l3=f2gi_cE ee# Wxk*fpUK/!aakɽ@8a +uuuaԍp?<< gܑ1mmm8cL0om1.Wsh6 㤺5414:55A> 윎6}Hd+v__˞[۴ù[p:- ܡ.>VVVsE1GHDe 3{npwܶbll=*QͬV>(f? ?a6z:ɷHy*+}D|4=3xKSNym'E&;ț ue͡dUUUـ)~qyC}m j }k@q ݾu kL2No}1@_9rkjk5OX qv7xph r{aܿy]wp]BB?/pB."Hwp7̀#irrFV0=;dA"ю9ag;wR# 6l*^nݺmg@ؾ.b xF| SeE5--z]Qzx3hqUs9ʟ pO[4v߿}b ͭ hF\Bs:'m:eܞ%ܑ ^NS ݝ}Dw/R]]1ڂ~@Y.{1\=pwb v2#B'\p7sz\1#cj{DӴqQ;\b`A:ȽOf(;{ kkkCEy*y^}jLsh667x`/(34$@yqpT9? 83G=;.l c?K6ྴ8Gޣu3eGGX^i̝qGIyk. Ƹ`40}``z-܍goEx43~9~:ua%%t}b0ݱP\V\jq=~BwQ]SOf4TO 9է_pLh.Xg8Oo¬Z^]_nvк .I!BwpDր2=xpݻg9( 0!Cĵ@D"yNpL7pqp7;Jv/tZD9ۘbp:8pSpэ7֭Z ?p0@n} b_\27_.ҭe`^p4xp,SC4EĜ# d H 8\ZZNKK;z4?b-5oA(|ׂc`4n ;ry a3vr7 7qTn)mR$sU[&W,7.C-YzF0X?9O hllvO Py;QE.2\g<m?mm'>cw!;onlSys;O8ᴏ|}w1䎱sAэ {Ǵ j`#NkjE׬jǝ!m/rs.N)}}-VxuVC؞ /6ྷUjuֶ#.Yv&ѧPho"_XUkg߻ p<=.bg,M,}<~c }볲*o$48O'6h=oD ο47?c9/[Vx=ə o`|}/bS?|pjWaY@S ..į9pB."H"wÿpUv  Z{G_pO7n7oN*h'ORmǏKittIGg}, J"34Fd[ KP@p.ě|&- ڀoQII\ 2iWs,'s NMMMOO6c@hWOO5><4J=!% Cr/invINX3z<aVWؙ0=?]YYaoݺEov~tU``v3..~*y/Q8I;jVޤ8¥|lnKr-0|__TUUkmw7k{1'h4w{@ P8;+1.=ޅPlc;\ v`dƜa\nܸO0;!q 'n)Cg߰3zd}GW뀓M}^#8kGjΖނ =>A "O[4?VVmhC.X :[pw-УGw~GpGn3t{4XWfC޵Esw7 |OTVVA{{vN\jc ߰Plbr{)/--.z1G޳M~Q.,)8@Iqوu}=tj,ӀnjNBj(pn܎9;;a{qqjj9!ڝd~<__~o$ pWp]$^0ӻw+5C8؀E{pwa;;pOX;z荶] >Gr\ݗpf9r  [u:gh5RcC3}m}Ԅ0&?|+l8(g 1###<K].+_pǸ)dGN+te8g{"<_&ܶ]p6ON̫W?Gء&'U_=*&onpog5, _gMtgq}7@X7ޞ^vf(+#Mv0Ga'\ WQRp1`84;\?9QP111OT@\z!m8߽sf8'&okw*`m7| _pt?6~oO5;<;"PPyg^s_!E6ߔzGp{V'J'ԞJw^H_Ł^wp]w _k.!!!!!!!!!!!!!!!!!q]wE"i O5>V!n4cO~݂&@WO p88@aD{@WIr3ZbE"BY8Z`O@Ǵ(2 gWWWivvRSw!nF=]zjFqt?pE}_rwwwhow1Ƹ}:~DjL(ТN܅zjjjɩq` +؀hWz ^YY9qlƓjB oCuwT;`h_2aL+9\.7p*w}O\491M*-)g'q3xB?-[ߓtpߧ%Z o8>?@UIAZKTVxjͩ?.EGP{zTx_]ݰkKss+\[[O k<9b1.rOOϪW'pMGܹ\g'ǓڽpWoqޑg76vOjj}Ǹ`+=>2޻E u~'Y=m>;7B;ܡ >3Pܥy?돬ǹHDwp]BBe %$$$$$$$$$$$$$$$$$ .H$=~N[w Qx=@y 4P ĠgYI 6|:]pw-"駟3LB7;څx1  ڀ l 7vpk>JJJx ` ,fy8`ܤuD"|tt|!o+p|'g!1ܣ1F/!n@ 4׮_owbp>0<\uc )rߋVO8c(b@a{Cc=Oyiqn7Uz?Zp7k9dr:^xE0& ~2kP>;4}}?_}FG gE?~"Ǯ#{-P><<{ŒR'{fII]|׫ߧy9>h_YYEˁ>wCyusKd]vs硫EKp܎q[/=op]w%$$$. %$$$$$$$$$$$$$$$$$ .H$(}e \@K={n{S23`,pŀG% o{ooo~,`JV2:̓c,1p 4^ {~VSS ݾ}***p @XC14>- + Ss~]=M1 +΃3O2,k!}P'4@cA'~ ]8ao5HJݭ@c/pQe93rpp{SS԰#9k9d"1$7;O8ܗ'l$rwuk9YvLx~>w外+=X}8~z7pu5;Awg zP@9n*y\BwL>7W)&2盂-< [sNNb-~s]po&='C]wp]BBKHHHHHHHHHHHHHHHHH\!p]wH$Lߝׅ2&Mߣ{ Lf{ ux>>5I44CΎ,8n̍KN$߾T^,706;pp[]m󕽯]'|b}~b5=ą<]cD.Ez½MH 1N9WsO l? ZB;3ys8_rχ۵+?r^E ֺFc m)//S܇T;i=n.Okb6q'jrX܃~ hwo[ͳ;Nh=s5"@n\XY3O_/^X! .KHHHHHHHHHHHHHHHHH\!p]wH$n@b܃_|~7y}K}]v#4w k`NN9]5yr,MMOPOou۽Xpg'mN1^L Z$@ǏKih0p0  9f+N8޴"y;` x``݌nFc}4 x\W\ltަ^>XF83 to!n=G{./VK<-.ѝ;p0syZ%zWsw v,<ΎY:>|ù1uѡ+~20!ӓ pc|0oW †X 4P30~N峋:;ۨ~"5Ş#K29лRoxǼI ++>^,{~s| Fq'OQ@_ɸ+jÝ!t) w| ;k_<)oBTp]w Wp]$^]bH8p?+t&_p7p/'.;wsw{Q::PRp>}p`] ҇~D7>WkW$>1lD06Qkk+O@p0ݸqhKd}_ON?Mum^ pϤ <>>RSKKʏ>.,@6w=C쪌sYߢ~NιcWg gޞNKgtOT[~vRSS# Kj|^yeR+b8 w1=/U^W*oo蝹MȦs\'Wvɽɉ9B_oTYYŀ0 wh|'333pG"WО]UgoF\$=|5 'w뒒27bmnlq\c\pOXL u*M9*y^{4;;ڰo?OOW [;+>v@1dIꥺ: 5}qbw'ϱ^` W;ӂktu* Z[[cwOQװa@dveqˁF:w9#~bËxua |7wsCkk!wM_,~%Y {9 Lg  :t_:p]w %$$$$$$$$$$$$$$$$$ .H$=-OVp-/܍3=p,fcڈf䀢JEt=ѣw7plN2Hw}}Y܍9>;; <g@xqq]!܀_#-plCTV/p@a\</-{|jrapaq?>JɉZWF c5Hc7yT~A6Ը0~xxX 1RyM2 ^-6hn'tGGU;S]]|"C º (ƅ pG>ܛ;rָclvwy|~?(\־[始= yLpREE%y^1?`zz\Ͷ``U ;w1ps>;`p@9 p繸ω.'up'mdLTa^?~ IDATtewXO{{j5mdCU=,`;{@porͫZ~z?Ric'"/j}N$'Yr'co;}+T^^?@yr{\*o;wX׸uo)D($-*{@o\ {(pG}xx>{=ڟp/Ԏ=2xu^\ sw? O r!r;VA[EBVwxnS}{.KHH$!BwpDW_&> ?xp߿ǀ{,v!W7d0433E5q E=N ?\pވl1Xl Ʊ@O8F|+<8lw@<υKKsa7 ߿rk'&& LD"8d 3<9z1S34]\;w?'v#9ڵ8Epay$movrpTA斂;wh08epoO! p@qm\k'7sB}.Mv(s>€; ^/W!.Њ??C^ﮅ%^QX(y>=}B hw*X5Qǭ܈`?TR_O,S{ Ϫ8`yccC hOrv3waw?j8(A;@ ߧ֑r֫TZvU[Z~DCVXCЩw/^>`-tU{:m={>B $@ wv7wu5߷p=b{iPۃfggyzV@뇇?b TyYjPT8\2kp,㧙'|v5].WZ\\T:bxp&F++Z|Pvy"):q8^Z決*nM55&<>ڕ>Ypw-o_y# ת\ w9q`_pۍҊM͏.#jn6Fo56p_yo~C b qsyl\5c]̕q/' \pgGl+Wb px|gTQQ333pW€;FD_?V=G܎B_tTܞO@ 2,pyFGh5T;k!Xpp{':m0NNjÀ&,/TRz_&Gluw>x#E \qp̹d,{*8`n\c o 6{_A7w{<-/pq&y<,}jp7Fԯ'w`r_Q^vDZE?]ss3}7% s{(^C+j/:@#?Ytv.<?+P/ .Bw + .DO g7Ote%.. A P"2{MOOROoC=7uuuU CϻǴVv{6S@NN.~L||3ҮG_ $Wh!# +3~lkk{2r3\ 0$F'`\cCQ 9]DngwxE dlns@>S"b\tQkƽ  X0=>||ppQSSN݀tp;  ~}}aa>zˬe<%2>ֹvp_XX`= Z;@cL ܟpw/ p:!o/ ./S.!!!!!!!!!!!!!!!!!q]wE"i\}؅7&ͮۗ1>f B*\ tw:OMMPwO';kGW_}A]@ۏeP sY`l*꤮A4 Ç}pOT d:u-o=8V侅e@-[\pV`ܹ10$K`cs[NYNq"lD[~?ـ;h1h+A[\R\YOM540cN{m }~ k܀`4kܞO՜C4`^^bW^y1G;\q.'\vVFq"7(8>qj75pa¼;ڻY1{)e{S 0ƀԃʊjvI}}駜ooUn\ܹM1I$O]_]k*>5622Foe:V0'0`^t%lwo$>JW&zzjAy\oscFz4 x^{Uͤ3<r41 w=Rk#O1X0n;;hQ/44725\H7ozhOgvۺF-TN"^3هI(xjW(p$GΧ)oK^~= mS x} nj۷씎=uxxOOO縷绹;U"cmnnpd YQ`=5B@a"$> P5z N' KSq]ӯ#[sշ?\ _֎p{.^t3Hwp]BBKHHHHHHHHHHHHHHHHH\!p]wH$zA{EOR=NCƱh2^8Hm65 +\B|6<rt477bKK _|pM$ %bepx8A {⚀6 hnh ?d7n|P8r0u~>nn{d}a=v{iK9s3zB>bϷsfƋA¡ "j\,\W{{;566@{93Eqmٽ=΀;{-'y܎6a߂}hpʡV[ZtQpq*ݮ77>׽^Z8HONN2, HO+9P`\sUx*>5~ta(ZA#R^EG~]pGXi P8L\Vkkx먯(0Rpiz?E~Nh)fuz Q\hc 'sQ}}=[ـ;ٱ=t:y-КB#G0>c^<b~AyՅ'TqPǹ|B68l{8Ǒ$k홭SoLkI$BkZE&*T@=t7,Q-~%&9gc@?7;pc߿ϋZ0c3p73\ڧ --/C3aQ:3<o~fAv yrZ9{`/ .KHH|!=BwpDTL | pO%|K)κ x-M;[40)NwwpsŀWim422.}O~dP>ć@>eT+H{{T[[jIo3gktO@3>;}H;ۻ͐zSSs#eeeݪM~`2Cy_{rSmp><Ҟ7'QgL{ =n0Pwx=nq"}fΎ>(WӦvo|apz5%=3]A\Gמp/**Oc4<%6ꛅhկNggW@ss4ɓ' ,F-qno&wЉE(9=<|(* 8b ZFy~E7c8nwSI;[* 5/l(< 3`ӧOMl7;`xZ]Dש3zwp]w%$$]BBBBBBBBBBBBBBBBB!D"gO5>;7NPn]Aɔ 4w`p9 Y{WImhǐ'\f i~[nky]05}[˅a4jlSmЦjj&~M/_ 5pݞON4N꩔ Va`P:557,.Ü `O8|NyZ\n,(l^{Qzaa+A8O QzKy@S 7t@'ݦE^[sttHUUTQQFݝ4=3XMm}Xj=U38611koo/;L}SPP@eeeo=LyȘ¸y>@рlD3 #ܶ/zN>׎CQl -'$'';55E}}}c>co1F#^KQ-͋2}v/..P}m5PϪy=xQ3GcK׶`]sZ>)//\uv77ya^0p?~ch7e5;r5p/.)Rc)pbJ2%Ў[Ӗf}zAbnd¢y ~ǰ=:>71܍vgNMs ̂"38ǸERX(wpO]]~00S]{ .!=BwpDp<=i{A)x[ˀ{ wi`ꨩ>v#@Ms~333 _ h B 0-/ᠭ=vUF44ֳ?B1ր΀$>p7vvS:vrcc)7=Co:F}9Ly73A%o ՜pjƑͳ=nS\=]~AMM-_cJX¥lZ^^9;ܽxsױ(MC\ɧxBͱPMXZoC͛j?k uۀP$=#C3ht|rYxsw‚#& f6sXj^gXf>0ɀ}wp]w%$$$~].!!!!!!!!!!!!!!!!!w$pH$xD))VUU%@?p>}9ҩө>ay8#::#"56U+PwO;C;::Z\pSɱm$r'c8&Rmm {z{{F.ؾ~oJ++X>>9-\vٵaw3sx?RsG=:}(UVhU9h𴫫JKKGȋp}v]whgwmT{tSMMc REE9z!9D.6>I0NG97h߽]Q-@}46>`yUu)}FXuo\ƾ]=ہlswwiss679 vĎ{TROoeM:vuw:km}mڮ6^][Zr.2߭kl݊kWhiiǸ&ؙ2jZaao{[pv/ [ť9u>J/,5۩)ݤnzVWcƆzJO{.c#hV2(+;]r9rgTͩkL*WP4nNx;>>QQQ.X1==ׯΤRv+ǂDb1ojOhfv?r[PN=`^Q[[昷j+w?tQ_:wihpX|FYx}anVP? C pGyttDئgjQ[HyQ94hZ:/Ȱ:>o48u1?j5asx&k;<')ܝnAN,'m$2[3~w>Z@/p]BBOKHHHHHHHHHHHHHHHH|[ő]$D ,}}[8M6chr~d82L UF.%.u-j7VhumV\,$4 RAAQss+/ ¼% vcn؍8Q] (//B,3TZZLϞ=7|Ch?jte f-I-cP{|bۨKQcc,[8//ݹq_@p, dJ1@ Q-@ 򩲪:-U_dgGM8\M`2?!Mg&^q_8Q_ q{z^z0v@{~|62pij1AA~ԋ`뗪/k[:.՞8ށcͶڛXmمmexܷnKJV=GC0f輵!k96~AcP9ym;jkRN;Q?X_/Svv6Jͽb[ZZ9#C{\{0ˠʭTɳg./VmOż`*Rvy*2@ RVY@PQQ2zyc炱a~[˗O w%,䌷PiYQw%|)*FVRUUoc07m\8>q*(|OmgqZ^QvD{Vqq׫nlQ}ެR1N1?8sVz[z:޼I ;g&/[ lpw}6NP/-lq p;@{gZ6WQQF9٬LwO38ڣ(3}WjsC63KU?w@m3'o7nc|mG4;wV?/꾟CywƵ~~~yKW)ݯԗ4'AyW{8Q[x KHHHHHHHHHHHHHHHH|!D"їM3 }}} aX0++޽{Go"̠2]&2o ǵ2- rLZ]]J]]m46>lApM1Wy@ɓg㧬O[zFϞs֋/l| =%@YYxtdP;ve\8qgdQZkz|>cn?XgKXzGE[ocϏ77u'ɀ{_jA}~{/ EOxtG;Л E")c{x125~ڒ+]{ 5í}}05++|=jsݶ/^>UPًǪ]z^{R՛g< ?95[SrLg1r6cjvhKB)#㵚^ ;clj72oXZZౄ ?KM YFZ<.0Wa0 AC ຎW53mS[W ;rVׇdr\ egesC򩩩ap'fpxa5\`pTPu^~_~~\Ø-`` )7'>l,юުvfy Vߵ<[;A{TTn{s|𡲲wEUe5T1NjO>pq0uvt0<~WTT1g%<72ԯ>Qn#0^Y¢~n=78 8$ m/<@Pze6`;cLc[4gw~,3a { 7o'pKͯp]w /1p*CwpDp./=5 {${ڝvsO3М5WP.\BUeIT_pښvLkڦriZuJ***awb*--sM2`RPQIo:>v1tSz_0555yUՀ%+(.)_bQbc̹7/gHJURp;g&inNӶ<`K_ #CֳvpĀkQQk0}l[<Z.Ngu0Qq69Ru?% wVUU0}Z=wOacfЇȹ=`keRES}ARlu԰c8 C&r_(fgsOHa%Q(USɩ >)ϲþvGnعgDLYI*Z 0m1kU#K\38s^BghT&:f} j6caA;p/,=v}}}̝(q?Q;3~܁:F>٧gY\3V}A}8_ἏI1:s]JtN֏5<ǰ;ž~C9n\<[w 3Rm9cn1ͫםq)Ǜ&lXs?C,}ݯijҚ9ؽM}oLZ) ~AŸJc>ea_Z\QZXXc8Y72ucvgۤ>~H 8n~8v}=V8sZ |k^/phpKSIϿI=g]wp]BB9p*CwpD/p@ɩq muu\.oNP8 \>nNve wQeZq݆qMx.Xc}y0ิph`MpquXߢMrq_|oqD=p<+@~ʼ-julyAۅnVV66issuV߬>r1m LmPFNҜϨuKښ{d@r lk es,V㲩[|L1UivAk.vKN0ִ {ffmlG3רUյϱhB<>P7h¾mmnv]`Qg`i "3q5,GEwz5@f0)܆Zk3 ܛjq r3ꌏ gLl>ܛkbc c\ɇixX4nt?ྎK^|q]\,418p0 Q_"x0=g-1 ^̜g ~hǡAuASFNqy1rgG;  @>#>22Ǝcqu~ nƀi{3919ρc\ѦCLŚfA@;Ù=m}v]uʸ#7gCC"vpϡ{ }Op]wp.!!!!!!!!!!!!!!!!U .Dnl]^]eH`$w,;:AMuttP[[󶭭=^hmLmIN]vթ>w}Z[9mֵPut%\s[T} I&:xnjii֖6[#ڸgMMJMoof566QCC#֩ m^kxyaO<Ő'FuzjFF& ?CcC565i544P]]𶾾0j~bwuukUSSKUUT]]guu:V}ƹw- 򩮮sZ[[} tF7TZZFeezW2 VUUUR*..3nYzG.UsWWXmU)/ :ԫ{WcP]m#5j-M{Q/H.x;BWw'54kVsWTQU5UYYYtJ/+vö X%">8ίg׸>k\;>lWTb! Wj+OuT~+-ryZe|.5p}Wrk>m>UvGaǫ*uUUuieآآ #COP1rDG@UU8^9O1w 74sf@~S[Z0絩yT{!_[8fcԔ-<]CCÃ|S+:~ۦF!-&׬x[_hAO9?i s.A$ovQ܃ rsnLco hP9Y>#7>X}5jڼEw{[{ wmVKj?vNY,3}_?b:XV\G7{pi dO.RCwntV]%׵S7I_}Ewp]BBK %$$$$$$$$$$$$$$$$]wE"@3nllpdr0l 0@rVI8&z_mKJ5@mFs9u+ʫUB,±τDZJ-uBT}ܷVYiwE*2*,(Q.|!q>@{f_]HĀ;\[P˧<ϵ/ȥ<>?2*"RQu,_./E.84F$.PSW\uV8Yqlw9|/-?R}25nN7e|>˧LxKo)--LszP3wQVV۷,} u4un: Ǒ3j৆rO=f ;7]ZͦB5~JX_hz-((Ym~ulۼq#> 췣?-.ѺkvDO?Ln z-T{Ct~ .KHHBw 2p]wH$2wd cX8(kflQ XԵj!DzKNG\-81(бٕ2 `)@f̀3a 6WWM:4AS422U㳬~tD}? \  0._i{kMG'{tL{' ̱C:rtzCuC')mnls_G\!Gcn:99)o>9%OS_rG*ǃ#uc}gc{|޲j_Q;f Qi]: v&K@]1x<%v{T>-9s~3't4ժ9&g^[D}Ϫ;7?65ml-O 612\<r@q}9 Au<} IDAT5YGc19<P} P0~Cn7s󰜹ї_\ ts  9]W11c,6u[0P0b+AVbhp8τ6_[[cX8~[nݵo yyNv4\879#Rs /|%"/aa.mVm*?o}>@Чйv5ϡ :m~I}pw8?Z5S__*]ľpSp]w%$$]BBBBBBBBBBBBBBBB p]$~2pbC;<.*kyYC :/ⴸ袅u keվS++.Vؚ:q@le2 ӀS.^xI5u NlΞ2}H[u1w>k;9y\YY fgg|FmG(-3zU{K{jv> (| +@\zp>ܲ&^1#@jm!sPw!Ȇ}#j \`}LCT\TByx}`ɉG]kaS2icߙ@.''mw@XguamP'dCɧ:"/J¡ / z[ih ] U/\ pA^lC-08>W8<-/tx. Nk@<`i8nA-[PWWee5N6g,P,`Pr C`r5 sN:B۴SeE5C;B~-L 6-? @p/4;i`lye-'0k@QM35uq}MY $ܼN C,PlړAC9;L( oQuEϟ"' tA wp]w //p*CwpDd H`_s\4.!>bhԖA[ :zmyc7lJda_Rh3 7@e<`Ͽg;rmF aʧC7fm(֯sm< p7gϞqX SyP62c\_<ݳ2[1`e€)!% q7h NMYs{N4iO {N=q`cϸ+ /^S}]#P3j$Ǎ5I1eShx8M,SmPjfH[ у=ON|, :=VO~<rzg(נrb " ޏkׂWcN]"7#G~=CP;a{8,Q;F}TPKy9PkR\#\+Z1?`~M:lSKXt}~%GhoohOMNn8?[ԓic,(܂\qS?zk )svx`؋kgpΜ7ϡ~̭U?PqQ955XlTTTBż WW ڎYtw! csAGx!+PCF_3з;3sx9Q۩ݚ07"qi?rFsy&N‚,̉сڞؐqp>ߵ`}l[L?8Fj.6fpt~~Cg׶mz.ܯ~o~u ~' k . .!!%_e."HeNl]w,!=}N:F[>1 :!ib p'93ld2;@Pmr|{sOO/Cў醆, ( Dݣߛ;ف=$ x뽽HsƀT \s 𖀖6zjf?}À;PN. Y/M1 W~|mx`g|EݪjoUN}OOSLO Hd'>;cdddZPEyr- x6,%NܹS͸;88Q*((0Lw"wDqk: IBo-&‚*kQ0h+S<qͱ7YqoA;`*^21>}3mٍPuk[~>ov'#,L.Pp!{c K䅭U6}ܜ|vH񡺎)=^=~ O{|\ci_/ns\RU!jG~v puR%s;v ?TT^psU5~}yq.o .KHHBw 2p]wH$rXXXP6ݧ,^bӵV[p޺ k=eʫٽx ǮA59S{N4d]6gAvonݥ77933 n3wfB0&Dt-X.'(e ,ܯ!8ljjǏveyUެ6@ kۡx9C444@}ѣի속~ ۱U3>K؏1@r6loP_0t\F]FFƨ~MOڠmb Pku@?E@<w[{8ߞA| ;AK]]>;&hY0@j.vܒp}fO~  R/L}v~D)tk}Df_nOApHBy4~W}9Wpcpkk떋/{ MkfLp[ZZlwz@_hjjx=rON xرNX `^U]I]]4>>f=J-SA(n: K;X}s>92;x/qP-_0y>?1cn5H}퀸[Zp(\&02v@ jtyy$'= œ v~ =8o) 9::坝Cg}xh 8f6@ҺIUa}hgweyyN`P4Uu7p:N&[ v1LQڛ W]&f@ڠ]oH `| ͂GvpǼR_@oA==}7 z[_:wG}7/^0 $:}v>UV(ONN~{Khwgk9y$w v 㘎$= a(##JJ i&՘y槟5${bXk w8<< rK2XCCC>rcn<\a!3o=4?~/Ϟ>EE 0'7 o1NáXwV~SW/09qS@ND!ttRvfNM-/wp.px ۵{y\_hcmJWm)zֽ:tAoi$J _^ZNWV}Bt<>Jg8еzƛyq ?@L!?]t ynkNnSwp]w !p*CwpD"ܿ =5n?A\C`gg;UUUv||X?Vǫ{gQ9d:;@?p1 ߽Ug[|m 0' Ӝ=gg穾God`d]v`Xboo㵣!\ 4\h~a7'Tܧuw^QQE~-s&w#')- ;OO馂lJOYv#0y8oo2 MMWinmo@a\1w WA~sc{䁺 h5a73h_z7@C`0Bڞp;}RyqG5ڠw=#Ȥ0ݸjPm]f)y`6)=QOo'^U?ߔY-5׭qbGsS+C㓪]7 <m ;CsSbwkwBpbr .s;kJ[ktxշ#p~p]%MJ@{<aE|h:D"N&"&&.YWKĠ9CB霮s\FCtqtT )q~q)~/jBGt9O]'D_D9}p]w%$$]BBBBBBBBBBBBBBBB p]$ - LXqw pg[ ҿf\;N| 0`t+okkRjooep2|ԍy;::ʛŀkD PyffN6>.].C<:գO7;* _\\fxhdྯW3Cғ'O%:>:e7h84@j@Ӵoa(vdx*ʫ蛿}GS68} R 3> ޼yr駩1,JKY>uS@;ƶq\Wq?d+y [}旸F^6V]봽og@0GfeeqmŽN]]=|+9o>::ts. 0\ ^/|]l̶o cZ 9r8?Pc];T͌Qq)Yn'R2}yEcc X n;Vk~G=0?)U98/ oo>Cs,4ܮJ[t{f>= _ЯYW1_%NjxCJA[g!@WӯlhF .KHH!W .H$Yx(%;ڛS;'|w|ftoo]IuZZhtt`G.mnL7&6vHL >Љ8ܔ᜼w@G+`Ȍ{ӳ|}pood7޾o,}AImp†6#8wu0$=88{yYe}N=A?C }fozv;;US [n ƕ0~D1c‘#F\1~y攺p:m]ϗ kU#7Fn"QGօ;T`]t~u/yL=z^UA7{)rC (F u ͻvjnҧWcʿFM9n~ZA . .KHHHHHHHHHHHHHHHH|!D"p =na[ ( }j0d NN{a. jpȠ[;W;?pfw{{%B[2ݸ種> $ܝ0qok˵p-ؽrp凉>wӧv>9Q0pYwq}8abSxGGk``Ap70 alvǨSճ^_mՖK  pX+,,wSokW IDATk艉) 1x;Yn[; c\pScG7&ݶ_-p}51{ik{¢jS2J=j>.׀~^L [md_g|\f^NcٙY?w80G^~$Z8Ypw:oR' v啕1uq榦iU}2n{tz|nܿڞluN:d=UEju@/%ֹ"j$J/@nR>FJgJrQ>{8~G;!ET~g("t<襋z#:?ڡ2.̓{f|Ӌt6N t6W(-0Z\ fEU nSdwnTۨO!wp]w%$$]BBBBBBBBBBBBBBBB p]$@O}}}mD(<90xaJ< p/))l{J맓SXߢ Z]]eHI"Zape??>$uoB rWUU17cm8V,'xO&UvxVː.*Kgee"3w?0jw?/ܧ#,ԧ6Aۺ. ke:;4ף@ pppmܾ8p:sQ%@](?qddTJhrbZln{^[_Eٔ\v vc§!8}E%VNh/ccgʮש.>@pO8vhhiH=[dH c J]]=;uwG>OA-_c은qG^XaKo ǵx@8c?3X딮=Pȗ\.O3=]ϔ:p%O?q?yN')@yEi w Fbol"'* fzϫ)9!hks[O<';wH(pOܝ5x;>>Q!w y͘L~-/^p76~7lnU<^<e5CK 'V Xauh(LQ-7ԹjdJ?nny.(Պ(]] }8k!կjNѡҁ>En ]ѥ!wC9C?åns"Z[ Wɧ7=GE:_cͮܲ FEռY^}+5/gwէW]/p]wpBw 2p]wH$wzpf7dv3waqq1555 pgP)\q} uC u44<Đ{}}x=ߡ;:tjkkc(mcw䴳cVAtjr!U׺ZCT[_Hpp1DV9=Ux wVgp} tvv3(CIS .Z!p;(wey٧Ύnjo&Ok[)y# oj\g(`청sּ\t]rQhe;Q_"axU :O]wp]BB %$$$$$$$$$$$$$$$$]wE"!xܻ_ ΀;scco xmnO\8#ajjn¢|jniQaǜ'rfpdzmmme(7nJ^ְ0nmtWW M&?X)Ap b9|cc݀Qv.1{8gggSOO'wydw=Fut1^"z"0lkY0yp8̀8!wWTN '}6b9N CxSCnn.+o ndz6nvWخn ׯy,A55aXkqs'efWv "+=UTT1ݻ,|̀;?UwP86C6p_h{{O!u5z ;wuwz޾n*//'Op?79}MZg 7z!1 v\u)SiI9:jg pw;?SSc~C ~ -o}w59q3QrO;`{ pE3 F#Jէp/Q_vIKaakBkY[cE?#&lcCIo(B쮲9@w_V:rƐ{2=p6`E{R!dwzL {z); -Z]`м^S}@/^R;C~&o1p];\^Mwb<.6p:șӥS2~[`:iw'#5hsUvVooY[' XZC:[s%hٜ)FхkUGWs^1~qv@{mܕ"*HX/|> GJթ|e:n:飣ioJ.Oϒ_BpaVh~s]:W^)lUL-RhEWAe!pKxhwsmg .ėKHHHHHHHHHHHHHHHH|!D"ї/,,؀{^^^RWv">99w4-s]w\dX__2hhh8ponnN \hxܽX `8d'tjo3r;3=ǀ|e 4~rc7qF.m?{Ƒn?w_zzmٲH1L0L ` H$$r l @PUU&`Ba(g <6nA++Nog3Z NRy󠰆4a݉OT ڿ(ݰ?սc@3뼥X4) t;/NTr*Y4ζ!O%yvnQl@9ܧgT}ǏKb:01>%^Ox>cԉu"*+ ;'lOxQʊ*q|簽BJ„' ־]= G>+ݻʘ711v ]V?@3  ]ݫܞq4j}Ma9 ׀{_@ar293?8',.w>o)U)՗QiՆ }Gk{^S?+wy%v r e6t )7p"Bʽ^&wmQrnBW,..`~~^׿U\m jNv/O\;iBv0sHDz<==ypv s' pnܻzcA8<~xzd]ډ4s]?48,ӊߨm<c2">::`sw +gn|3lfAzq7҇1/"fygC@zKiÍ]V[YǥҕS-.d2[N*ŏo+{J@v;p7M00a„ &L0a„ &L"@p7@p'p-  iXX*η8=&:<=ZWϴ6Owtz9s$g գt& m9PԂy@D׮Ƚ=А 3VelZ''>lmn#.> NRN>?G\"ZEfå}Ԧ9wEvMie YNO9H-s8Gxp49(u'<2'5ym= Sla:pg{'N\SQSw^CP?Јebb%ѷ~'@3AR^{"eәܕ?8CM 7CN#<3qD'[F|i憢y// vΉB-tۅs7[:jWpT*/Ko} :p< ;|}mj!OW ;qCcCȨͭ-ĥ{ݹ̮/}re1ѪZ\Eʷ0~zo_K nw݄ 0 &L0a„ &L0a„/2 nwww;QB .| vko{ϣqoa\0 w۟Ԯ~5h9!ߘK^Ly%L8 H'\usU,ok+:.vvRKֹ,Kz;5\Ç"M@, #Es{S ޥeq&KSw:n3|~ f ր;aa^vamw y(l7a`wZX4-\O.r2pw{LόcyeSè}AGg+)+ny-]~I'~Ygmm*>==-owpp.{; 'bf#R:o?zWXzc"m{Y\݃@+AtAul|;۴׭wNwV76ý}}~֓8fQWSU21;["BG=%n{)ɠ{BT LV~aOU_]gaG3NFq<܋| 49fGl~)Qtqg/"v"*Bd(㗪,?~++_ _KRW_U;>W@gj  ކ@;B8`7jG=~׉͙Iba y\VxϮ.!ޣIKs8W:#~! |x6/w,4p'p7a? n„ &L0a„ &L0a FFFF;!;;N k@vMyy<>}{CC{:ճÈq>Dcg^U6]÷<9 ԨwF0;FNS`F :՜2%wDt-?n b],~5h[βh=] kurYXwu9 Bfby, ۡ|613=4OCa)>&&8<44\Y>?ao|+tn༯Xa Y{"rp.0ƙ rF);\&̳|逻(J^eF];*0{ppv瓜zIKS99AA쬴{' 򀻀#NN -llOssxa =Eᭀ; $hOm"n''QUUƘn5v-agkkn<~T/@pҹ"_A 9L2|rD, 뜀;wmT8*N-Mҟ98,KVfb986g=9y ];::U/eipg~.!Q6VOyMNjoFڬc4ߵzxdnH-*`ıc~{"_g瘞Dmu VroNi=NpY;Ϲ@:sJU f? x7#ux ' 0@hA͌ :;!w-rvA9r^=YN;CNLrU!_Y>z\*gqM!sa{ zkAv;BdNq oO Vt rt:'{|a) ˳H~a ѹ Df'Nחq~yo_fK-~z.b}oT{2&L0a„ &L0a„ &L"p7o/R;ڹ{mm4 ol5Ԑv.Ux=.ppoeqk'89}G^@߄ b," 7ZL P#st fNoy'aY+涸1(%MW w,Q(F֥R*.\„Y[ZZ%\MA؞)G&  z\׀;v%y]r^% N/ N=&dPOp>$OYGwҲ@Iq;Og:X@lw`zTwCӍ|dd$M===ew 댲`ԭ n*YrT*x 3 p{. {Ms@4vmTi Dyt'HXCp:kzNa$l_l~_@&A+ζƶlj ՝@='h}ߥ ~6>A'ɲ, Kv粗2]=2 c8)ɓg"].α෾AL&'GD0=$#a_"^]]QPD'FipAtez '?07,;@X_t'{I}xN 8Fow 0nYN;5β-k4/&ol{ppc㨩wĹ]"v\XwW[pq4`;#=ҍh@ܑO":;HAQDƐp J"EWspy#u.T_T{1Y`~սԘS4;%vxv^ hA6 t 2h{p]ݵq3*OC*_Cj{~(B 3-\ ~~.^/;woͿm nw݄ n݄ &L0a„ &L0ap7܍#m1  ЭCz55KqpKXAg"N%N~ReT) GdžTG%{WW՟D4 .Sx=&O q] ZB|FrҀ7Fz ?mmmr]kwy[ #sMD@j5L\n;?g%5:n_\0hg4,c\1::*0۝ޓ4AciOyxc-aZ> u)rG&KДeY{Ӏx%|,.i 2s s Br1LLam}kpJU1˓DoRlǦ2E$\ˑW&}/E\'JfU4fFTߪGwӆ܅N{t"1ݝCy^rulGܹ#Ck;V8CPrn)~-@&" 0 ''~UG3&نt`TORZ:zB]侹#fyؖffP[S^.81 ߟථ6s2}K O!}wX'llmҟ8}I Bq<=9X~{pb' #{8H=H7!w[nl}ya~(M /4Kk pדm41^.HG'%nLkjdAgiQ!.cQTeBrRZ } TDF;+5$g7؋.ܝu!ӀGEUтYP o]ޙӑ"t2 c8YT9śp.7+! ?fz7}̿}~G%?&L]M0a„ &L0a„ &L|awrp܍~Io߾@JIN`0&!9vyOPفk%l8XAstܽ^W_n:8ӹ=9Uup$l;k0ǜ-7htgK3!KFB@Fŝpנvf~5(p*CyHA 'A떰=̵;^"XInwi/B)Il=?wYTDȹz/[Pz,a>x:S-@<_ `?"uG9x:k(i*uRi0 'ɲxt[PtO#O"23a-?;é!NlSj]]dT~1$Z4I %/,ϢDH 6hNG-۪p'JJ:p]po}roBX g-v"roqO=:E:Z@d1NU~"*I^="3gx ᝪ}$]z/Oo7 nw݄ 0 &L0a„ &L0a„/2 nwF7ի+ON p'XL7f.64H]8/vMW@vZQэ& qgDOOZܰ ӽ!A%ϥ5XLh9N(P9\ky IDAT_K8X׀prjdT%O07On |ҹ@g4z&YT~j0(y-$Oq@j3p" sQSS#Qm@osDXl˪Mބ9ll$fx<.QƂoU4ph/!&>rGG1;7ʶu*}=1=3ίplٳT;NY~^S_ =/..azes?=_})_.9йlkrggNs[)ZOIH'E7}5q[{+*_TnA&8Udzd!hnwng_Lg7x6%o٢i[c{{jv::6-NtKY8g=La"TBmmcMX{;L2=9-Fpw?pD0uf~d w7iJ|Or9?܃ZT ֧>ǡQ m@ D[D|,=:I}@ T?"3 d؝ٮ .TPmܳ)?r/D9DQϞPV7g3l7UY N J;^W@g-]5p#U>~SCuAG%<@+"#xƹǫe|mp<Uuַ:D0W'~~?p7M0+M0a„ &L0a„ &L|awp7 0--lm_ n&}rrH$"6u}\ >׋"6}7 )?*_I8B4 k0R<q[ ޔFgƦn;?ݕ='PNl:v KttBN/, Oᄏ!R aAWlb{g;[l˒ןAKK#UY˽*G_cvvpN5l垴rb{ ۻj{{QmtU0܈EU%1j3 .݄wu-fvյ>IRnuS4cR[[kx!Vخ9qm75-1rpoDzR>.W edbK-̺kzs $4g$%_7N,u-Z㹤} 'TVVJ&s?p%'p_]] uv2SS$DBN93B牿q8;44(I^W?$.]_6Z.VRײ+ Oɹ`i͹,ݵݭ"ùzwsv;IC6C=mT9U">XFsvG͏EEmU.u vǻ5эDDŝCdʁLN`ҁU7qK&kD=r,Qn gW&/g8OD.N8W|G8rNۄSA ?Wm{H)]8jQhB~G-Nzۣ׈P+:eTyˬNbgo|#8BB*k[Hm qQ&woCp7 &~0 &L0a„ &L0a„/2 nwC'܍ ^ v 4GИ ?ӭVIZ"dE0TCI]׮&‹;Ngnmii#kk+=j~k*_}ug &J҄5=00 .Xgϝ~~ޛeo\zx YW&r<\%nLNN\^{#K+-Ze *k"&Xeզ}l\kkr*]]]Ak7_{ZZP]aH$*z5ނ?##e4TaKCkO-T; G_,.tt{s|2{y'iU 6Onl_"Rx&luXKE~6?}TzfxcY^}ɺuxZO(<ʤO3KϞ*JoFUU nwd|07_^a=j.PZ|Ǐ?yXBgҖ8c=|p!tZՂLؿـ:'nwUԱ붩k4]#w ;5nYp+!iuڞB_H%YP)B[kR3cQCx&f ǝU8骅F7l kw!J^M8z-Nx؝r,*gN?Cr/{&yt,y8"8A <W76Wb.vS@>uqBpWC=^-^Yr!O ~L]Xmp:ۋӹ~wg&Q^nj .XrpB' L 8mB4==+_ ҍMhimBk[,(12p[&yP]Vq`z+:zT{-Ru~LpLsk+8R}9酓_zznܗ>BeDzLC,tg]Xy\5akz.:Unf;wT/9eE~JSNm.>{qS{{k[I y=mg5_nP]:pX{6QRnQZJPuIĔ8#;G p)cXh7>aC5>j"ŕ[ _#8lAd PD7'ey6މh#lhl!=E.p{:utO®̣ݍ/FnwbxØ´.tො]Xr.btl8n]Q|. ~ [B,Qw,,8-}cc]7T}mTVi'{އ1677d9/Kr:91UQLIS㖦eT?==!<5qX>=;907?#"\~aV&pҍ77#,Sy%wv_w:\Ro_UfD\絖<,±do_-|iC6wT}m5}ճ|ΉX^_mj~~!"Pu ]W@}ewS"=whOlODT<-NQsDbgFϐD с,6rcl?nC6l8iy_*őWoCl(Hщ.D'%Gnn3G:q:S3VJy])ع߮R=P9! I!yD4PQg;g^cw8zz']xkI}!|-?X>vk)}/:hxOcw<}5 4XpNjq rʲ8'`Px5^^}@vWp{Ӡwn`JϳmJQ_uC'[aCۓ.m@[:/hx^Z/s7 8lˆc;Dj+x//,Dl{.>e_&)Wk+W,zJ5 ZAv]=3uT1v+\Kvܕt&%xoq.*.xG'8T9ک_c+l| xPO%B}UTrʼnZki@dMGj^WC-*W8Fp܇Hm Bf{].:&)V1Юnk5dy yS.v؛p歲2h'r @eGhh58X AS ^T*k@KӘWxNC](@Kzr:qfM0-A\o5|,0>ݩݛe 07KWŲZ,rSך\ g;m7kXZ\k.`vf^4=M"MLLizjp|AyYHq}H;b *7==-.fMNallC8sg*kw4l̲ЙNx5QjH֋4jkBOgtm6dܺ5\Np|jjL]P,]c#ctY3lɏ/R?P|zfBNpu߁~ bxˤ2MN)r-I=kj}G9{y3' DAS㲤<+% iG~~ߋ&'TfdiNK{FG XA##cj||̜Da{W2><Ǒ0o_\])wyqS*ϙ'T}IDc Q"a۩Dp A¶^CxJ:v-Np:܊h;`Fl禦z4ٙwpo [ @hˉQUd2wܵsOK IDATϒ8սb8j^jSOup?oqT}޺{6ZV"Wjp[tv#4؅`_ƒ>ujٍ)&o>.vEi[Hm>߄/Ne =nw&L&L0a„ &L0a„ &0 ndw X* Y AZ;V‰v 6 h7rS#DO1 c@Ɂ^GRGE=00PX2>$Mj@FOO]]](ǷU߹r1otsv uYt9ʉ׳l 9?Woo+k'k^Xx,Iy:UY:"uRggց֖vu@AD œ@mm-*|.#΂--Zu{#i\vuL@ak`P=:whhbG m9:WOoSn]7ˣ+K*O_79uFb'oOqE6iktD}B.9`{1sZ[B9AsHKK-.-Ȓ_ =ek~~`y_9XWXҢŅU-W sNK\/l[H,DNZt9x)K0Sy=O<)$Hga"!n=Ѝ瘯~WCl7=~Cx[]OpS  <ڎD'ΧElXܗzlpcsy= ,Qe#}*A:)'ni^*&(HpP A /c/"}]KXw`V} ׽?cG[wG6?i{VpW~;ح+ǭO|OtV"x]{XS&DUN;zZ@r|YտV\ȭum".rۻLm"t\؏U] p7 nw&L|r݄ &L0a„ &L0ap7܍~{+owA`hmAt%lC@55Lk֖47_Mj_SڔZԤԨjnn*---` 5jg M~S[[J</^@MMMAը<{LTQQ!^U9[%g ju , b666=yﺺ_mWCC q?> Lv⢮]݃6unR:]rͺb5Q6Iook5^=kX(LD5юvAE7ԢM % yzu:nk~kTv'ͻ@~Bmes&*ejjQ[Wέ.RW__+kh,v uVmG-9`aq.qw!Ei V.YW4kExMD:avk%L<NzѰ,X[l55GU*- uZr8w74H }T t> 8uFhyqqQ9툻ȐL(8sBǵ&վ KKȔSC2##"I46Ų(c ~'_eyOu:ӡ||bTӹof_ (v \R>v蓺u)njWyr1ur,dYei)OX>%Ba_Hऍf5~5T .U߃\NMMXX&YWϱcgܧBbMDؐec۶έprppϡG;^/j߉Z?GG~#<=;[Yݙ.1]H5!Ah"eH$2(ѻGz"Hn3{ϟ{U 8۞{`ju{_:1lh8gO:zpp un9O >_?K8;;Ù n~B3*#1vƓ%R͝pC0A?7ш"Wm4 ,~ˑQfq5)mH/o : s {'{ >OjKp@F~+aYB<ξ\ Nh1w E1VV$DI\_= B'Jx} p np`0(gxO \gvveچ~wr|b$D_("s(E0:TN5U3tv#R}6yfCyf&OxirMXz($ vg[0bt!D<)=,8pI7hB$A岲RYX`ɘLlGGdg?1¥28ɓ'ݶng3?zcpeߨ|K%\Ɣx,)q ј[-r(un- s@q>˨qL=K)r;d~ICޗ2d$.: xsYGy,^;GR#ᤄ#U~-fg8fAi'AsmƇyq]cn^8\HSrLdrm˃֖vTaqa +bszey E,\/#.g6IO$b}KRqx2v)f0k ┩ Y@糇"~}bOmHdc܇y`ܘcu,Hz1YYYŨho1}ckU5ʙ9s?+guǨN}ُ X\/;g8E.(Z[U1Ua&pwEB\n"ngh~|rxEOŘ0ĺ]>Gb} *U zt:^\}9檞`Ap {Sܝv[@}Í6!0ނd"v!6׋\OO#=' {`j35&̏8s-!IqǢi1/ܿ5>?B^7‡l8tM1,^vw`~쮄u$j.aS뫆R6R6*WZ-=Y*-/FXz)ƾoX-bxڪj*NDѼvMmm dk[.`` U~zq p%)k]pצM2 kӦM6mڴiӦM6mڴi Mp׀v kϙpp&8lJ}qтήvO-Lt30mp=h$~#„Kh&MKpP^<πNQ 3핞n: S P.aXBTX'L@@< @|\2TH\. T0v= a b1;==ze~Sc K#%^ߞȾT=ϩRY=˸Yi8tE,RrcԹ^[5cST7grSItJ.'6Tyv8~&rم%"Ӈe1g% +(#K`Woae[XBUj]+HEuƆބ͹qq<$Po\:HǹyS!k /l|ف:*}*9ww:Z[LfxxT 2( XEEO%"};U2N舰#ǩd޵H08 TfەEUTuXY];t\=<ۙƙcJk5w s,`AwՀ0;s¼>5rOŸsÙvG2)|ưoq^q>Yo5N5 n?܌"#I @]mz AabCv`lM c6a Z 3{|}U ?H#|cMO 8ՆL'݈[z#0eiGsOtI[*V`cE=e?-=|fW,3zp;t^mrSO`yvVq{p=U5£M7_GW9;GG\]pVXE<7ʿj-,|բ[.׬zS)vKocοa`g<\ܧq{Dlry.d} gobz!N;[DlvA, yźS k]p׀6mޛi]6mڴiӦM6mڴiӦMip׀ܵk]p?k sk̡ _~U H osπ~9NӀ ,UCp2jѱ׀oX'\JegB~r +**9AX!wKUe2Q3؞@ p(.)Mg}ìȑ,,pߖ{ii;D[pDfKR)O2sB>22*mp'7|ݵE>`cu`Td#ڤ W~f"'(vPeDt,3TWJjn.16`T@7W)*i3U,yxэc33s"w8ubFUYDQ[S/7X\4ޒ\#x,rIE]v+}ddHW8dU>ob|$T܏DB- f7{}y]0lK|pg\v_\T^^tp?PhkWe=:9qUrd*0nϿ7Pne^L؀C9NkT&5.xyZw8/5#>Tc1jblpYoW9};h3̐{,pKpz{X&Gigo 9XG0SUq8w# 8PWH툋&gjeI%([Xze`׭+/0?ai*p71hA$f&q8*lc/q܂ xg۱⥈gp׀5wmڴ7Ӏ6mڴiӦM6mڴiӦM4w k׀5g^I^ס[[Y]Zۚ_cuun,fV5KdsLjV|^7o+葠+ԙ N^*q?|P~Vjj}Rs Yu0.a~j,HegBܩNPR1 ȟ??rCڀdXZ\EmM&'nGkKۺ%,FВ  .<#؈rKcw`.Rjݒ>0Їҧ"^ðZyE^Q|U܄E I.$12`Nȗy6b~U*`?yR~!mj#f*/dzд۝=  chpS"g6}uu-k?]Ep8`ȏ@/b,BA9wxVʩJNsYA7/&Jjx \4* odx»RsɹsW}3sL2@~D\5/| p;7՛1̮ސü(!\g^%&'gQ_,Њy9ϧE>?~\&o(&Lb,V*f p2{AGgJJm*+h^f Ţys$>s=M뛲Og_ \9?'&(}u@i[,N/s`sX,y= xg^>_ܙ'g"gyrr,T·$D̘ɘ~]bz#ToOJ]b<y=9؟JW f+`To߭,] vWW@#<3'f:FbqG2cGCpONu#4w_:jQ X;BU yF=YWgVl-6? ѦXk}8";BzGh}Br NgD[lowc; P"uE8+ҽO0?`_aGv6\w[pw߃bScHL iAz"bE{rU<yiZ{Lp׀5MbpצM6mڴiӦM6mڴiA5wp׀7UNW{ */:B_,>w IrL2*z%"AXB, IDAT9mh|#Qyf1 :ǒ{0>k*ۃb ƼX\ϾAg@*WؕP\"n|8`ttʫ1;(we=0޾-U)^ YYs[yM{ ccX^^P.!?@ÆZW~}o۽>Tݳ{tk\$NrT&'NEw³ccba`hWp1jR]lwҴl rsnQ lF#9 j 5_&q1:IΎ{{{q-CϷ%W|̇1\W (w|lFg7K}qa xP|sT^vcF2)|{r;"2==f<ۓTrZ7p+Ue^L* W06֋,Dy{9ྺ.3-E _w#ϥ_O=}u\fDH%NW;q&2-sU+[W/^gT_~zr,X[:%ok ,J7XF='(csq!gM=5:L={}gwh) guԉX!0 @p|1$gET7?祏Rp:)wl:&&Ԁ[,hTlQj@7 lyxl~7s蛠%j ? {b *y"p"+5{‡ lP_&.$`800 m!d899>L±f!Hh@@snY507S?*+kQS];(NC{DY d*!h9v CငWOejܐӍBtuuc{ۚyVK?Tg?ܓ0q!Q33 p_wwIvw&վz(90;N uߎAtvvcxxTSS3(-- s/_{D+.ǂPmWrew:0BRp'B 9|s=lg|m1r˂THqY^YY)W{}s 2Pw"*ܩfw9_},`au1!1f s,X VB,XiD}]|; W߿X" jϼ.cf RKx26=PoVr7-޾1^T_83޽dIDLsu],P#W=kTzcRw*aaa'QQQ'яt⹈򳌟% c-I&51GIx<>gJ *,ʜdᐠ:T|cwEUO_ p9* ?xu/'&Lx6 '"ӑ0 bn>)!!.Ř{NxbވG#X7"b]bv6Љٺ,V?F#4<~K!\mO%(}57h-M!2݁l☾jɪI},^F&ϖ[wc yx@ٹ*Eyt'N1?6ض74n,VbV` 2D+CL7>ъT;Y\b]w"b1aq<8݆T+ p"vZ⿢kl~@[u!ۄpƒKw n1}L &nNO{O"CxË<`{?s]\Y5wmڴ]gpצM6mڴiӦM6mڴiAܯ_X.ypOnCO?b Bip%;==%?\BTT΅s yߗ_N`.!?`9!XT&a 憂q=BT!P}}}~%hw_fs-V(lvC! Xm=::2 bnvQ~@MM=:U (#vqv"K|f4 *;::%JI8`OeUs@;ATFUq(JaffN[5u۵Km09b/PG ~ ~l6 pȨ] p'l(\_烬 5C^8B Nw(PwAAz/y&y-s9 nߺ~ /--TB\TeȕZ6!` 0X.fLEE ձ*ku{&_2k̡#r;;vb;)6Q*+{5"W2 S#cW7*`\ྂy?yDƂks}}7V%3%>i>*jz NZTT,۲y +օ3¹UGy ifYs; jbFomZŘp}`1^|usQ }1s;q0Gs߃|%Dl~<;ypB܏Op&b\L̫ߏGQa1A1|bbtM'QvOK%S-Ϭpp1j?`!Tokv3.ذ'r~w~-{Śl53C| .$2Ab^DtK"sv"8ݎT6'Ev} hg,w[- j+EDlBt G <އd{GptI$6Wpu⧓~z{o| PjT|׀ܵi2 kӦM6mڴiӦM6mڴi Mp׀5p?>:ܷL%Y†h )~5E}{ ;"n i<$Iitp_~)hKߦ- :.MloHpm}R [,XPXX-`qqEpW{: *K|{;M {p:tHq4lnnnq3F8B`1_ ?ȵx44K T"{=UHxj nmZ c3W.2wk:`pT= μdRcsy  /bکbűN{";Y\¡e3GF'lpYuz?_#ypñ4 LUJl՝pgJ jD>܄h bmHLu 1ӃGK8Zap47xphn/\s$p#|UpRg=m}η]Nn:aފ[kr {b추U`B#u7">"S3pOJR܏cq,w#8ۉLB툊kF]}+43ݢ}Pk wW!"b {L06!=-;3 |>vq$֗p$w k]pצM{2 kӦM6mڴiӦM6mڴi Mp׀5 p?~s J:Wj=̀;!@ +ȕ!M3ƽX&q I@"קڢ 8U N S [RΤc3΄`v8]v%DMznp2sQ)ݻ. G{!X#EIIfg|نBn9^^+kn<YV+J}``@ƂT]EYY~X >"as~l@ ЭhV*lLj⌖$Oᑰ 5cΘy|~/,,kcgoFuq^Oolqó*cz|t&ı3nOq&!<S8Scd !lwvaˍMXnjG`_نJm-^\pm/aov-eպ-p p'lmA| N$gz㘀tևq*"5ӏX-h0|KkH ɜno0AJ9r{ցĄhLs‡( E|Ղ~:Jh]p׀ܵiLڴiӦM6mڴiӦM6m>HӀ5w k ܩȬ\@*ZO l4<$̶T*ccc/Y]mWV$FUw‘<vAAzzD%ۏZ 3l !3C—0e{{;޽+b! yng*焅6"2s '\@t*S- ٖZ ݄=y{sLSA=7"3scM/effFw'¶^C=߲#e\N<p8t^kwz 㹖ʂZTվ?XdBIօ Y<#}r>۷CEE*o\#DpW9qN0+*P d"{_3\};ה⌒93 nyw:apgu9Ws< TC1ezD 1rnppLT(]i=K/^gxuJϏ ]*Oq&"!E| (pw3o|}ރ&,V`ce0ԁxlN`HG`s\SVzkjkGxZ /p{j I-|dӊ!؊$n[.ج67+WݭoBC ZKE} 6!:тT>%ߋԬX pO.|#Xy-Q/ ?`^~K,CDqoqyq=bSAtyi?5w k]ڴi{wmڴiӦM6mڴiӦM6mi]p׀u5 _s`pOJ%ߋ;I *wƘYl‡ Īv{4p;NlvW ܫjQ[S/eMwsΨq wƆfCCwX1۔m@g<%>w+ڴ"!_ZO\[2{ pO1ڴJ@j __qs= KY޾J]>ƂoV[9s9R;aof;N #89yL>5-ܚwPQQ!}c+G7ܙ~gVpgU{:7Y|g3߽!.ޓoԐ aP76m܋TjcQqUo\oXp7g^ ew*<}W$ND8n[;\w!10u# n2 =*Dד, ³?x|^=.7q8"yj:CB|َ`0_~srWǧ0f;R<Ȟ;? wBs,^UU#!w1H`  Μ`Q]* R91? '+w߻w--mRT0}vA>ԇQRR" 8_ *;;;Y}DݏhS+v;,\B큋l3p{H9x_q}޾/f˰PgwU#}3tpN=&00 \ [%NUJ~XEEO7"V>T|Wc|\j!vL\glӧO;svN/A|J=qU䅶O PP9E@@'݀`i As 3{7o}Uq ?"#v潜|S@"p;}@ZTpoX1.lw#+Uqsn;͊ pgr\8f!=MM]=rw411!X)+8\ r}Ҁ{1`\NNq"bt|zlߧx#m;3 {o v*Zw`]hkGUxYih%ka1aDV8&߈Xwr/Pq杖;U ȽDG$lCz ǖ~}n>;kNg39l`@(@0tQ=+\η%tKvf]e=XhTc5࠳x"rOLw Fb+NM mz=3V{O~T܇ p6Z o31U "`#S]]v; T/'qTp׀5M75 kӦM6mڴiӦM6mڴi Mp׀5p'F*!wDApW!ߞÝw*Jy0^OB~@+I݈eWnVR[[pHqd|ASj7Yؘ1&TΘ\sp~o@Gc7|;ibddDܜ?#a&:|~lVgn s39Fjz,iٛCf7xQŝS[[+w9uo0$Z8Ģ19N[lGxo~.7 ,HcǺ"$i]wub$Zgb+ړ4#M3%")===+r5{:t*-ۜQ޷Ln?OQ\CD5UUU}[ܷ Bb$Dn{DpgL~r&RL%qq 4 `'ݍ8lNy1Vww૭C FDZ[kolj90URu͡ۈ}=:%]G%fa>{!EY?hy g[YV[}r{d qC=5Ӊ^,Hz%̝Djv^mE v^ 7/+.؝a} ֙q,u5c)*apc->pgNDcs79 HR^$:kc?pHb8[Lw1c L8N",k6&q8ߟ\op@w k]ڴi4M6mڴiӦM6mڴiӦ4 k]p׀sP{.>33 Y_K<:߫MH<nAOO::"ڲ)|W!i^[P*A`XÆ5!c=B"~lF祺r6a?# L- mC̹N`U)f3-sQ傊5cl_ G"`DfKQPYFי}ƞ18F{܇^1DIh:g2sAכT#qכ-*t3}U!y-?mUokkƇ=Boo1'8p48}~8>;~rz4~HőYan{-Y_'XpUPPk3"m{M%+aaUw7\Dض#uF`),^Hx1lƖ4?*;U#5gw#iF"H 9Cv4ф.$ Q?>\?fq 6l{NYwA7U`,UPR  }Dڲp;Ʌ ';q]]8Xp#UalBP3<ފH+p 61ei /O/ܯv k]pצMզwmڴiӦM6mڴiӦM6mi]p׀u5gXG'f]wM_^SSs pW6PB7NHS.xcCggq|K'tx`ޓ?$aa_ =W-*%(MOT&N9A&cQޞ  ;;{rwWŀ\SY<u M*|Byo(ݍ]JppcL= SsPPPp'T9Bw=b.mco׀ {3'QXg7Уll',: 8GP>Q{AܧDl;պ#:"C`z}m=ې/d~=urbx0՜Q{{{JO>;S+ƌ-cͼa@e \V q ¬N["Bq(eu;%kwHX^dbY4A7sp&!m+EH-qu[Xµ!QgDŽ!j}e_|!<*pSܲo/6!摑1Wj}g|ּN_%g;,X&&GH}CXZ\F'5Hխln> E8|I5gȷ`)ۺP 3(/{܍DO+<5-Cc0{2q"bGrkK2{?>6Jopրp`+ Rg8>M8 V;PkmUc)vpP^ O]5B- mmDYcRl?Ľ[Xsx57W\ ,mb+zcv ;uO[o.RGkYpn@d 񉖬{ʢT{;˓sMv=[O3[_YDB#/._ ( `vP~; `XK=t.pׅXgîX-3Xj a췳M4 pWpg{@ľ؟R..!b!1 O{%z+Io0orac[KBzzF"~wD3"fu 4aBid?6)؝,.. XSYǨ^-;?W2RG"5ӣ jx*hԺ }ڑPK000"LNNyܻ@*conX%G Tu9}r|E~4i>0jXJ>Ѻe<8F/U%֎,3 3 pg+rƈP7w72)|Sc6r|=z>Dt (7`Jf]GP{ ׶/JHzxxDe,J( |!URoWWU9T?8pbGFF. |pglplI-ǁc3Gp}F]]ܕ;,Шk"j#̹ѫONxr>8%:eݲr[[ݖ]uU=n}{W~g s$3 q[2oT,gx \?9u3mbrbep#4w7?ycudvüNXbC_5;@T~VϠOrXK2BT/ +=Ӏ n?;;~*GTn'~"Ha_ts,Uب*U/+SV<J GkAl>~e<<+ Oa-5Xn(;O`}خym(0pv<j!w6 :ވTs]H=H{tflw6`%]N'NuoHqm7_Pl|˜pwuW싿x;sܺ-fߜ|}a&j+ ABThAd["o H,!ΝcK}tO.x$i#_rc wm>ЀphWh+c-O?iowUc ;]lAȺ1/grpͿ5wmڴ}HwmڴiӦM6mڴiӦM6mi]p׀5wWf0$aP pO&ah: }$XLRj_)Z'4;J+ls> z {6!R*TTlGp`&Dw`JX=I@'aO”KR}|l_| :9I Y|*ޗ<O1Iܕ;AOs<3ǟcŅ +wG45HsTN%MvZw%\ px3\ +upCAAT13ǓPrN0<{F9qmnncg=tݺu߼7s3{d[[#nsA L @9cwKd~w`$(u\ګ꫓Yg7o)0 k[rla~ mm3;?y";jص3^p'8|_>Ѐ;r5<Ɛmˌa*HO`bz:QYC/\r_rrjf8U IDATuUHT*// yri?uTpWFG#ttt&Ye38Im/ٜA?oYUWVD*>|w9pUچq ~q{qaIbI }}J=+/VIT2\:Vv9&z<(+£r\C2?.˓DXcNYO M9yxz\%~|B\s Av~CМ%[IފbW8qV6܁݉BcC(0)t04װEtȎ @*6_Gp?"nWv)F8 X(,\N>rlMXf~.X=3 O06n]hc˱1ԇ~Lw1R_eaR0U p|urp_i*ZS!6Y]HG98G_8jbK5BM6b?ElEd"G5~^$˫o*5./oV B5#_{ z0ݎ f?dCL%c^j]_pא{J#3`yhoO߆ɧ}U"춖#^-`GųAnvo=bp`  +?~' nwݘ1cjp7f̘1cƌ3f̘1cƌ34p77pOy_ Ͳy bt$IX, r[WZ\DŽ&NK>K 5@ wBY٘yՕu-P* -´Kb|ܧD`rF,ˆ ^"1 ~XfDw &;cw$|3;atN ܾ|ڐ`pytx_O$;s@ `W'*g29qJַX <"Bi | Ng[;239Jl8qƧ~*hx.qXO ڄ쇲</a346XXXTt'/AQKw-U ]?1~pi;'$HY\JB$U}9p:.N(CzT*5Mk⃆Թ<<}t|&ƀx+-!z0<4NPT_ֱd}ww_*[/Ɩ $vxCS3fR~5peoU]8]ށ"5q>Wc^U}.`)'xp}pqGx~Edm3 [PiJK0_| ^ռ<,gea93kYXSg)%؝k# >@i!6A-́8C`cl阯bM6rҘl89+o`U6Rz*no "}Th}DpvT!8"+K\[ 'p҂k"8mKòkT/n`q|YN ߖof`4.NBE:;8Kb,W qeQVrtꇝJ8iye׻#v-kri.[ҩ hO^Kų߁6;kZb l*FU >Yp?З_~ nwݘ1cjp7f̘1cƌ3f̘1cƌ34p77_="J Y ~$4Kx-A֕)ޗ'H jГ.w't{^;`])2~O p?0ժUnR98ax+ ~~pollImwb{}ض/K b[ r?>S൮tMH '/! Ywii@ѽz ;y@xlOز1& ;;;Q__UŋڵoykFK :\2<0N wwG<κz;+FO>ڏ)8m/gqP S19~ \80ߘvg{| jG|}J穮xa_hkkCNNĆ1cεk?ߍ+}&<>oF/a㝝d%&Ͼ|!~vSA=ߨ'|SH17 ~B /8#u%W"\^Ų`&39X/jn>23tߥŔ'>}y_S-z 31ZQ1UPaRp=\y+ұ({Vjsڐ'&wQ![EV"Uc+>Sz,VcYpg 6,svªg (*%K2 m~_ZW}Aifa1腷=Y0qG/Vflq"J[8^@ &4`Љ!'cpe`Kpw_-J~O{1RD\~O#{8w*{ ";؊ȠjZ{ 0( ag[ ߟO/?~ܿ* nwݘ1c܍3f̘1cƌ3f̘1cƌ}/p7M nN/21~zEI @/ Kuq^ۆ~s?[\+{ܽVwaެfn3x?>9n~~AiEl=Q>' b< sɜv\ʒ! W^=Fl+3kk7r?<7C{4Jيk;V+ ihmmS݄@n?*:~侯k8moe'1?+8~wZY^/[[;|OQ:v"8V9NWRALMZp{xʯLkWv#pk/^Hܞ??gf'1ӧE] Ř( g`&=y E[޿o~C =ƪۉpK=ƫK14L?dC !\'`fRRU&-}>MrbT[-E*Ǝ ]H7UTTT'r[ f[k}gyQj"6VVW*k!wVla=k}a~sJsJ3/#CP'LtT$gT^fJa2S_~ p1{}W3jPjN. SP%AM‘\r!R^k^X+=3> wG[pذS!\H; >:u K\'O)o#s76$%k7ge}"a:֓ dd X}7vnkyp aUwƪ~[:>MgggKy Vpgq96 +q D~ɯ+&&+u| 1ommvw#*#@v _š}}*6VGP=o7w_pп͍-~~gTΒ #>5FiInݺ-؇N' ם=_Z>τ&1dӧ{9y9ܿ nO3."8r>G81@[F0QPqf tzfrŌL,KwO{ W?@ {C[XjAYJhv2&a2>By10]d̖<|3,*a2+ՙX=yjǦҖl)D]*uWb*tTa],Tb+ؚagij䌕=.0+j+1]`j{nE&̮ ρB ?^툎cor Quߝ<5`l{q:?? ?\ܿ nwƌ&31cƌ3f̘1cƌ3f̘p7 sp,UT%HSth]XW ||](1!<%=x ;;Mp/w'^PǏ,UU] *E?|>azclԋ^ܻ-NW ^< \~ONUݕʻYբN=;Օ(=(--FNNSkkcwV Uuu'8|SNkN8XAEeddD%//Oi]_C3ףmeoϏ,F Mpۤͼ1ᣏއ7s=1÷I{w.9A1i8¾'5؟؞[9h{Onv<(^1#շ-(/8B+ȿʸӓ+j윌9;۷oB7(oov ~sm8NrrPU]b#zpII+_r` ).ce$ eNkr1g_zE6.{8s>_M8ca+9>868Acƺ5a $Dc{I77g}/bqֱ9G2T||Qr4եEx:Q[]w3 fSS I5ʥ5[Rcs|8RӜ;AteS=nU`4CNdv2JtjfR319VnWhJMݾ>/Q_ڇ.DQ3`ރ7wʼPms`* 0SŖ|i STLlYFCh)%8~G:+-JJ7bC Mbgq+X[^}eyZtv S1]vjNg+M/e bj"1X7PΜ݁?zg#m%8R+Qvը}Jjƴ~wꬲ~H]@?@tf pnpND=XPKUmO0|=aMc:6+:pv`o^7>ԆVl 8ߌUoi bp7 nwcƌ}ݘ1cƌ3f̘1cƌ3f nwpTpP%IpWW*v@u+A'hbEڃsxy~AxŪ r({ ~$@?Z[]p\VEJJ MJ%cVZppߦh\>/n$=yVSOV#;'saDwgJi"i>3Xytaazv% O DOpp?w/^`FF 4Ai r 77Wr_%>@/K|X>`Wt||1Je}a[UT[w{LU/x* w%'$'' ̾+x}/?{~&|3`ArOԖϟ@0R}إpLBctii(Gg&s~\W:??QCǒLy&sc)9M1J 4.W]]},=+GYa[(Wc~[똛QP tzI#C2iZK:7ۯ"kݍm@9pLff:U& cƞ3s2cal ܭxffp4 >%x QKKjsZ²hQmUhI={5ܿlN]:s|QWVU"fj҇:45ԣK^>L}MպSPޒ*{;[p|{4 IDATM]vUX9F͉ `(+OMKE #LLeb&5iSZHMŢk4sԼp~6~gw0F)7)i70qۘʹ)x‡ 1]R]mϫsg,}z+N-:``AA{ƽ!WOf }UhgTpT Q JD:NS uv@wK>FDtbo.KRs~s%}ټب] 8R (zJJLxn:s#:c[i}ču_;K;g?}ҟe1'p71c.13f̘1cƌ3f̘1cƌ^ nw Uu)©K(^\\ҒT>'KB&nIc).>;E-`.{f.&+05eBJTUU*jX&:3V0P:Ǯ"g/.%Fٻ;jiq(=]jۋ-BAYgBr9! bkVIgq}pp3 VYf"i?np8,KV&Tۛ?k& } 4p߁fdۧޗes/8)3aNB!y>SSB N11F1cut/ƽtHb;*P.eVg5nVfuƐUY};pm}uD$gar]eKSRRbۍI4~7.`tlD#2Tc^O4:2|hE}}@}tLwgINlr2f!x6?~ST_b] D_U??OM+|v ʼPC8fb-‡X*IR,%dK+b)aB6SXs%ܷoڂkqypW17PpY% jU9&;-AL`~ yj)T>`]HG9v:ʰYR2lT!iD]#V^`hR^#7Dt%poVVށ_c"*拞`1~~<؊bpD6XnZnb׎N{; }8\|9_vKp7 n̘o73f̘1cƌ3f̘1cƌ^ nw]W`:L1 iP,NMNnsc<'xpnheAy6ɶ)Z]R8MP1g28UyײM99ukmmg_Qߕτع16&\QY&-O_,H/ 33fsbk.ȂY+Ή kRlj%ThS+;5Ƞz6 ++K{V YuF SNqsXGagϞɳx.[R*b5|QQQ) <ήާXw*TmoqMS]j`ɓ'R]>EjZl)JV>IxZ3um*3NƊt>ֳe ߑ + D# O/?ƣGC|$K?R&s˒_W>}r|~w,-?<ׇS]>s?T+W>իuGʷq+w&߽IWCg{S{c:4tk^Dp+2Ft]nnbg&7΄m/+8 gXS=#<}$L1#xׯoP?A+j1zn{.nb{&@5ӯ#yۘ!;/ŢX.~$>)XHF}&vtb͑\,`0!ྥ_ U,-}&G8V9Bpt >O'wGV w0zS\/ a?حu GY}j߆KXp7 n̘ n̘1cƌ3f̘1cƌ3f{ip7 nbow7w ֕Y.aL©6 ,6CµߤSxKP1322)A[Pf 4*fqBw"i@@IH7/[)Ņ(X`TN'lmVvVt/-+V*C_I^ݬj}W[쥥*qtIiyV>ʔ,ߋ9צxf;O:G Ts#Hkخl/z9+XcO$jjV%dBV&L_XyCP5nfNнA(_P}kX%jĸǣ|P&'}>cN!dO?tl8b\'JX]^/c R}['p2IQwԻ;8qUOhrJv]Nwz߳GslB6).^-[g'e!rdsys̱0odM`q &ch!I,[E-4,]ʏB mV,g::cc8Y]bE|Uqhk{qjׇ0:8|?9.;uwjSl7b>kuXbMV,jKy} X]\UO`&f8_A5{XSHᴻ"@)(AP=tH@T B)YCUZŧ* vK,sJusƀr::2si }4Xu'*f4KhX|j6Âb-ut:UwP.+{]'P(4>2^Y2F]eu':tu񙝲U{z={+g| pr?s9phw/r;000(#l'{l|>N '߫ԣdw벤޵#}ݢ>|~}IHHHo Ŝ!tN|dtD&-03pL:d}d:վAKzȐc$>B^z2z_I A?#s9ՀkLPq2Ȑ^(1WX|jJ,CSN$ҿO sc`_c t9$Z郱 Ci2@'~ʼK~o:qBcrҀ?:*'#(mn`{~*'oc@mRC+J*ʃ?3 )"wS14Gwޛ70wh}h鿡/~h}]o`o0t-=&ɔ| BS!+G0cL?<*Biob "uQڨZMVj2ڐ":0X*ubSHw,̮`6Tog1ƘWicj,Ä{Ǔ;yr 0]H=ܛ ZmW1JV"ѺڷZbEYޥoTV*#poހρUޔO6@-,VbYF:qtp?߄uuuVc~:4щ%ڷM۩'ܿue@ Wԟ_Sp7f n̘1cƌ3f̘1cƌ3f{ipVUo̤ p8,`15̫+ z;5DN勋 Ⱦ/x ^?9T~ .~~yo3cAm•r3Pª9@P(0yۧ$PiSAKw +;ail|#@\!F:2&S>ߘUw ZZ)e`>IGdž`++J%PЬ4vb+f?/]a?\?VY\>>[?t^>s~2>>$333 ;aUg(=6" 3] p?G~'}̒O</r[kK߄<>@{˓!Zǀ2s9we/p[:&?[qetg[#"Y[ 41oW-{M䃴1aBO,!7)@e}o{wL(9$4>%TN續!]|}ϳ炎5q2O_,OĪ1HKNJo"'ΏGNt}&?3;-1q"<R"F4T:<<1NbUܵ쐻yKz".;O+k#&vVʶ¸STcS9gb" iJOt3l3~a[q*y `JxGG?+nMYu^UG!V1P]mXW}J+k)sp;5?ē ̫Ř?)aNx5?DOM<}%c* lǦ[tcEݮS}YU+"KMX Dk*lwb^] p2Ҏ&,5{>@ 6SNG58qpԍM(:v@Wx'o;?}g%˯/GG7cK5zϯr71cƾfwcƌ3f̘1cƌ3f̘1cK3 nw##w*k(WCq&ֲ\{w |+3EZ@羋@{Bفx%;jO(:^>'?1Yu ؐZ'>(?&KZNer\*uVg~<$:vTB&}ѲOZ3~FۍAR9 TU2S8 e9r>[k4j1wӾpzKW1V:y}x8'ćI6A_B֬oUuwKEN&)uu]빟*쬶ޭY9޺'ζ&ͯ{:ۇr+y--.av1~]_0hw_$[µL1^zuiii?_ XEm+{k\O~Vfx?.3w|1zy/E456ɶ!W=DU+{ ~_8UMu,Q΋u[\I͙c: RQQr ې/JpBc=@z`gg {;؉laoov=/ϥz*;+ؘw7& 57 \_pETpNDj &S"RTRL=zz=-߼CటH IDATFst]5z> :O~?t|tޫ?Э_cb[VC7eQ-C >c>:Vra16Ja4kiXHZmV \t9ྰe~^ Kq-Z]S az*0ooG FkKyv}1z +I}> R V"t (:5'az6a,ib]`GRe*6:DLt&,Xh=ujp7 n̘ݘ1cƌ3f̘1cƌ3f nw!u#lhh8^"X,E MhlpĥUWנQ/CMuS`Ihpze9OެLUOp0ĂzunJ*zDMMy%v=.垄)kkPW_ Gs. gI<bl|X]Bup:eSSuO6Y=_~5KonvJy&Gܳ@__@SSVyVyg~۟Щ/~-9@e{0/yQVun;Uw˶kvwSؾ8u\O0!\Jjl2TWWYljSDMq*9d]{f\mW?s`8X²l+r:ǘF5 ݨӢ;$bPP&Jm*⃽σvB3:v56A%kU{Np X1۫rS k{^ڡ4'(|/9"mh!Y9T]jksIN43_CK1OW 't9io]%}ZZnw,]m֤L3bI>['wXbI[+&OOI+򜕺Ծ6xrr]ܧmg'}`bemj^vN. y]^pߊW#4҃ɮVLnmČ3*-@ /)H}ɧxR(E#܃u }!<-\9PA?P@ϵ7s7 ]hSN=/0v}S-#w~cӯE޻Ľ7;`?[Xʻ'X)Jj3a6po,VW)S7g2).0hvv^5Wxz,&3MLu0261ƈe&M__O/_?8nwp7f܍3f̘1cƌ3f̘1cƌ}/p7܍ 766TWd T5+fee!;;999E~~,Okb* H_xf(@]wF<^TXbťqŗZUq8UTQ^RQIII\eY0LyG.6Oq~Ue *+XuxkQ]U+Uujz~R*QVZr }(FiYjr$.TRۣR~ Ī\/j <t,%`OٮfDL q?NOViGaaa@pyH|uPy] eee+akHXCp=+3G z͊?~ŗv`H* \'!w:z/V"̀;̓'OoNtvtItOgsUA XG+*?̇ƦzjP!Ig>m.ƣW|swJ%SNa[Wsa{ 8M؞œ^-~1祫SV(Ƈ9{c$Ūx.sY~}c r}vٿ@Yvw?Y>l'>yCYlOL?}yLͥzۉ9ɸpރm>c:f$^{p]W-th3c}|g}S9YYY̆E~O-KH^ISoWp:5ILz_0pLt21)_?=H|v%セHd{{k5e5~N!66WLp0ބ:4#TQ,Ld_c}{߿W0;OQ]}Bߍ73[!o+ c%:!w.}:'o`,[xa::` EX-Mjeƙ %mw5>cyvE>7gZE,Ӗg$*ϧ̏a5~@C%ٯ9z-lnncks[[#"rή(H$~}6mmmE.N¤>B׮]@({ݏ?cwd]|Q=unD9Pύ*Zo:=]j)Lת >)&}uJK1<4cˁ\r[ \r1Ɓ GrgPKJJqA+}|ÃcY&ZOp|GչGqX0cT|\>G𺠠@r1BqϕP?71{l :<2(w<^mD_۳t1I^'8chm/}3|>/'0^kkkH|g:.;Os8&= ]5'sng~|{l=[,3>tpߑe\8&sBN s4<7Rq﮿@(K'7wsu ϵ㤏i';lgϞIf_bhg%''Ϗ-i_GgLEQRI(5vxH2Mߪp^2vcN_xx$m،>Wv0T( p?]nlgpg|5.//`iq3a/&URc&̻0tu!Y}ԇ)n#|wo`GpK8P PF7迥t-t%W?B;?@ۻ?DG?_{7?h['.ћȍ_HUJ͹$>ze6jsQ'sM%sVaӆu54%,&Y=& #⳵]2?J(ϸ4iƋםxǖH~r>K_90~{^9AA\i wOHT÷G2[C;hV&hϜa?b"##C4]η}~D]Wc 5>\utt9vm6/U?=d I^߽|9^\3'Q756kp+:dVW0QG;ma﾿=|?{vvό,{d+sbw3s9 `B`9nɒ-n} ,$Ais@E^O=-Du 0R4 dš/9ty+)~O`uGCnU4^;sPo_ ?N mnDC?x5~oh:N9x_Dy-E0 o'X?&C1a ʼn)Jx]a61 `h+.q0jWo-0za6Nt45]hLFU;BxOb,#DVq,s\ܟ DV2C1.n"1[8,&`2sq"JTbQ|E fs3ilM. Pզb@J*\@epϋru{k)˱Q- kTwWcP uc̑bg1n}྇5pw<)@]w:t,4pסC:tСC:tZk஁N}ՂY͚`𖷄DDݓq/D1vWݑ[X_9'/]kkkBYVR:1,a.%0A䔬笾\Un<<(ZPW(ӎJ+p tbmu[bgGctO7DDħD響E-a!Ljsc *' +36֮s@mdRB| rUl___/+N7N+jUU{쏗a .¹L+pnw^/ l/ _Z\rgpnsp-eP/*ƕJ$''!;C&|1&le_jGQU_s>08>^9NAAAjd1S^3f[8F\眷᲏zU_(&_t3k W2b֊~9V M4IIIT[<&׭W;k 9ϞvsW\ofˀ_pWya~SHk(B_u+s1T k^2ЛS?<F?7t!!O펾x &`<;MhZFD{|'s(~<#sQX(RiV+cS X$'Kȟ3eI.KtyfrP"~Ashk U=KUXo.6$1? 359Ung aKE\oi8nj஁7 kC:tСC:tСC:^]w 5pשSw _E~tAH5W=>>^Vf5቉) F / icC jkDĸ[Q\T˗U]KON1 2 &8_p'CfffbiPu]KMXʊr䆀4polXPYwVo 3n#_6>>)222z]ύL;55%ի>"pF_V*u#pwuc֏Q ,g[8F\眷aaaT_\\yT; ުWWȝ 5}p- kWܝ7]q-Lcjl]an*@m,XK3`)HFf zR`@Oa0=}>A^:ӿA;@~|io3wh~r5>D㓳h~zM?@w$pgvf#Vp?/q{nwϟA0"qC0`I>OfK=WxLہxQ*}\ b:aa`مNt ~o1=uAh kF|1`L $_%a(NT&zcDdF "P0Lb6/EX*'KR$Y}$S%I*MTEk\_2h𼌞 >v^|7` 4Tb jvܾAeXm-=[#"]w _A~5p]{_ChC:tСC:tС 5p]w:5pz>!LE"Wί Vځ{={E 665+'=m)?VaU 뵉 ]F]m3}U@k[*J5nm-q2shjUդ UpΖefGnDp 3l}>G[UULp'OHM}qgy.+_ WJ;nddU IDAT.Ut=='&z]B%\De߆-`8MDF0s"1Xc$%I/NpI1aa2qqwC];-J:6hAS}0.%`(֎ۙCVd'F0T_ \^ "Xa1UDԟ V`K5̎DK#CUG>H/P<49rp-q %Xi-rK1Z Ժ r̙ewg{3wi஁k,=]:tСC:tСCkk஁:uj}b3B;~}'Ė3  {D%'aSUsNX/̯jAmM3*+ciA~^1>D|sіU܏C5j{G[_䤗U\\pbBX>1bo?Wwp}mNJWW*oVVꝝoIPsRBeVV=z$7p=}yb@_dn+&pw5GxiiEAې}6_8N|2;-14lj?}B{v 8ʒSApχppV`خ; u<^Z\܂_x| kܔA};Vl/$^SJjmo=?7s4p nd>vہܬ!+77ya׈J`$L Ökf,Ca1 {cLAa n{0y݁^Aӭ3:6 )2|?BW^z]aV˨u-} p?6hypʎ} ({sz{e^%:Aa i`WoNH0(ۧDIFK0Tsi>Fĵu|a,CZnGx=@7Fw[ YY !=Ɂc8c{=( zy*wX'Ɠ<9?`;F0Iq̙ 1XLc()bmŹ~ayT?LFa, 5ˍ.pkXam)pEo/|O6-;߻]w 5p]C`u\Bw:tСC:tСCeh஁ԩ  ~8ߗvܣ"%$vãiǁVeϭbFMu#*c4#7u[Uewunؑ&??_ӶV455 //IIy`ܝ%+ȈDj%~%e*xHHab'\W\'&:4a)6߿_n}mmEbZ 9^ s8 O܉wv[bkGn"X\\9v^w 7$%%I2psEeUpZQ7ǂȟmAAAȐ]YWU*guϩy a55<!7'+V(gwBnU-ߣ֍&$$hsY!^yVg{󥥥űxW` * \ 5*YŽ*tְ۰F܁5ꮬn{ '{a$A̍LA4fEa$܋S0VLa cf  6؏]NW^ gSk bd,-1ecXk439pzR0xoآŹCQ|,?9>,0㆑wX"_yX&31a Aw30_*qI񺁊GO}4 Xi(zk6ſ ³j݉Wۊ) yXlۊ0YnJAw 5pW7=_]:tСC:tСCkk஁:uj<}"-BAV&lU K >Eu`>J`Wdg??? qUlwTX,]۟'΃lBLb[j>%%Eo߾r +tαa8Ojƶ9A]]o:IYGv ܿZفoYݎ7 "}fR\cF0oB_C%LɊGfnˈ%5 ``7+o{ ^q O"ZAwQDO7'~CۧaNhfKhes&}>W}=^D[k;0ރ5>l%?`.lgv?Ldb*7L"/KI)NdI2Ɗ%p+Šh_?-$`90`_^M2 CsVVƬT$!@ DH>;+yX@=Xx`&f[ Du`\ G=pc {`(é!Ίh^{2-S9Q)I~-Xo-V[EnXm)JS ԘoOo)n΋ͶaT +?c|&{s|s|4p]#_:QСC:tСC:tx-Cw 5p]Nb:JEJ <^*Vݕ )]CUORNz~[}CMM_\y9) a6[Q^V2100‚2sz=''g7*P'SDe%FAA.pJGwTbJ󗸝(| 0MHD ITuvq]VsSaY' %%eppgl>qrrrd ܝI*A t+.7lna܇ʪr $X&t2>onmDܼj8B;ew-CmD Z~NH ܉?]Pxjsǁi/s y "wr oGwB|f(X?4v|1v;lAu;;72!/17I jq;+ʿ(pj%ew%f ?^}MEnX̐#].AWV<)K CRaI 5Q^ qCW};|n:<%?:gQ*/S?E/@ҏG s18\ym>},Q L5=5=x 1GF=%h;<1⍑4_ec='w8,V$c,3ۊKڈn[DJ~0 Uv^ۻFGs' 謩CCN#Q鋎X2B0PLs,7#Y`#>J!a M߄%l\ÀWw|C!0zH7Xb=`M `z8Fb1QLb8 ]1^r:k0>H&DrX>YXmzs"lFSD6\ ݗ w\k!;J1k?=ğ>->=[3?d7?L?D:^h uСC:tСC:tkS_?pWp'ZDhH(S` rޭo/Rmaݲ/@пO1w VkhNK0\Bej=~}7$nCn7.z/` )$z–썡T]0Dc8FD;p/O.p-J0Ew]K#{{`UDڿuFvg:n@gC;:kQ^DTF.=) Xn(&s0p{ S1++%c,`𼈾kx]e> {M Fa$Q+5̉p^ Ƌ'a OQ%ƲCwc$5XiZS̍|lܖl*a-X,R!݂?}?}1>UU]w 5p׈WmF^'Dž:tСC:tСC:^]w 5pשSW1o _ow WKoM=}sscSV _]YxlHXk6[PVVbю> ;3 ['<15ʚ<םhkmCnn.ka0eED^^8yutNHKKLΪ؄w___:** 1!Yn Pʼn<67SwlCKKuF\ٲ H@5=  +HZU])׺2O Ul?ԺV8VUpWe @Vg9rBiVaqscۦF!}-ű17 ~66ǝs9evmBn&;+9*}s.;TpWjv?=51Y$]o/RUo#Y"30 {3S֧gEAY|.|Xn yJVM dZ~^F{5`CfC|5s9-XEsّS|O5p]w 5pѩ̱:tСC:tСC24p]w uĘGwV߾r>"@SoF ܣwdRaQgM\#&8%Xw9J̟Mf`f [%pA]] :;ތ|7onq86Z b `&h1KOOGPP0DY`8;Q8X߲lB|0uj[nIN䬀M@"wq;I0lK:{A\/ ;q:8n;7$| gF=;7CJts$Va k6)|ܜ pUxwBdvw &+}|-r~>#s^Wy_V"_$85\K9?>}*>%n84p?O/ܷmc}g +Ox{z@7 I CISԇz-0wt>AwcC00B'qe>V h~x^{oBߠ/"'EBPpM= CmD^GW noz{0߷g}X0$O R{D*21Y}0JX,&`/LvYЍVno@g37( FU:aˎh^e(HLF`]<7&hZƒ1FhwX#H]t^Fӣ=<~OϠjWa}j klްH` yQGm {`DpLe,,33Z,ldc6+̺ll,gcA6b%Oȹ|̴wv 5p]w `tE:tСC:tСC24p]w u.]QuALNNp<y:#Bg$P£ x{r\}ffnns!.ngnH -mFm]5::Z${TtrrU_4_Uhghg*H Ѹ+ ^ursԙUmWioҊ<~/ |WIQMjÈyUU<<<8N\Ks7 _s@]]Ingwe{۹g'0eè-I( BmT l ܉;;du]Uh-*DcF J"Q`r%f,pwVp]hna&#% axqqKk/_%}k l [ fc$?%gp%8vޅ9S԰}}!s6+5XX&3sTTb: { {1f؜0=]w 5p@WE^G_*4pסC:tСC:tZk஁N]!wx:/kFuY[׿pk{yIL|7wr5}v^S>#zz>྾ΕpsJgı9>*ʫdw7緶vdrļN!^BN PS[CW̊2Ǣ(Ϟx{И0Vpg"UWgoJm4vyr@233X- 6A}3í *l\ɛYٝc,0Hwn*zTW?G!C}prq608dE]}O]hnnB@ka{k[biY\Vo8#wgwQj܉D &%%T9oP\]JOrUed\]JoPmq wo汀TԆ~!wBDʹƹ)"&&FV Vy k}C^ksެKW-f~kyy.ttǥ EKk\Ӝ+j]'ֵkUi_iuuD 'G+RkվMXk{*}mQ w_Ɂ.p_ZyIY̎`]N AQCz@]=GmB tx]GU<2 <Ahg;{k!2} c~mD?/ D~ݡw` Л/r w0s$q# <@SaI5 cUwqT^f"1_ŲX,c"IXH\yR1RKaLbww^ z#u>{a2H)q; bO}z *Pfb87*dFJSwxya0 ,+,ZϠ<} }A0 Xw [v0D["aI B]T>:ga𾋁0w H>8,Tb& *2ޏeɘ-M4, IHtuf20אl6a<~tk஁o.:zz]:tСC:tСCkk஁:ujwBAVx񢄝PaID.3n?"ᶣJCWxx( {ZLLL]ݖXu3s[U]US#u :WB>܉cYOU߫Jͫ0rs%nxsm{#QT\${Ww'TUU 1)^?"p_}KBg]3">M;qLtG~~);+aY/˫rdlN 9+ja||\-V%Wp둯cj_?==+γ\V? %O&GX<46hBK}jC0j7jۓ݊3l2h0vQmhmiG{s+:o.EU|JCўSz̙a͋}fK.r)0[\q?=S%`$֨0}7~_fO-n%> '#`KHV0sDÚknx$?=<s;b0B.X$,Tb٫wɘ+KlqfJ0])(K}Rg6 nL{ m(l?O~k஁;N^84pסC:tСC:tZk஁N… 3hs*DDL'vpab|k;(,VX6YfUeE#qo R+qcl M-w~֊OM"h܂q}-?D'r9VwB/z;;{Bb %TgggeYsjJح*Zܝq3XZ5,,Գ[,BHHbcDN:>6ɉiyľS KG~+s-Jபp'6\X`0D{UYYY̬<9o hC}C҈^DAԤ%%E ϙX߀-LK _~0m#F?'ɟq-:~gL7P8rs@jjuGnbkX[z wy]%O 83a -( B^}z^AVh6vv?@xrFfi4?;.jKoß!7!'3ݿG v{ 7dEC$n7'x%Qmz;q-/Y}2}˜ KS5M ӷ[ ^lgvutIڎV45UըHAytC<ЙPز0gv).{Qdz2yc8c 92QO`pi~*sP$_3$^;`Xsiɳrћ1Yb\*n?q0^?bbpO9ۋ0]/2a"dLץc!SM9j/2|ߊVDvk஁뿯k]:tСC:tСCkk஁:ujM$4&,,,tC(7Uʪ7S:ݵug^>ā11ч;/-cvv cK_׶|ݪNL*v[1CV@Iq) %C^^!>,*+0;$ڱ)e&Y-մYtO8}퍏UמIྸu .HNk0tH'+ۡxFG1:գҊ θ(^A}*;ᶗNlAxX$fDDâ=DܬϟrQ mUd`ۢ*JHLL p۲jfCXLMk A(ϐUw-_(A=IlXv߃  ?їsòD<ظD jerN|Ly3 >!,'T'edddHut----sV~筫ckapo9'cccern`?J"wVrSoٟ/ ܹqK ~s7lʹ;붷X|9}rnn:џ8I~9$pɶSX_37oPsv $<+y]m`nrW>(=65 UtC5{GE4\E5y^F듋hv;{h~p ny;(/7*-q{7ޏ"'6"-~o"2K&Aw=?ݚk;20pϳH̖Dc~/T,V) KA )h[\^!l7p{Lvf{['ښ،F4Tנ ( AeS`P6{;w Gb>'3AIDF$jiGX/wS00Yݲ~F OvMsT\?n0c00pL\eDa8V5ܧLVa6S ٘jT{ 4p]w 5pWyq5 uСC:tСC:tkS_~yGwgۥY#W%[*$RX܏;a + <<pXψg17,XJ$H(MTN<-A뚽`evB_ggՕ} OjFNNDa0X@{b|JwVf;sU}c}n evvN[>v 抱tf-n[SU:*=KbNO ~ %p} yhjn}~pg{FGF r=Gu;}  p} +cϋUzyj0|/c?7FLj?w^$_\u8|ȬOM lO\\<==_p;/.QUM_kp jkr]zڰ"_UQ~nvA^#xz[8!ppY9ani྽[c!*!AMp]g;^' R{Hwrs bܭbLkkf%y=ݞθoB}Ay9`vbCݭhKFud_D]EUx]F4p4{yJޯ\|% ܛ BoAϕ]}ݾa x0Ǻ[l^tt_20 hN0&rB1Y`sEX(bAܓ%po3C;zŵ$a{wwn7 q݀6 uu+@^ w?1` gvMcg vDa>?3Y !J X/1苑D zb$L djExf0FrB0Kn#m9ao S?F?C~A%pID͖a4Ɓ'^\I=.{*&~?p.pc^Ok஁{_d4ty:tСC:tСC24p]w uΰmrrJVqV`}hh1 Objr+˛Gl ^11t W` cffqbGG@;Ih JȪČ̬J(..݉~x5M1!C[kz 3y9O,gXY% ҉sssduV cbDܬN'!+z;Wn'J&Vf*,,A 99Y BXX;sUvBlnN$,~~8~&χcBX\_ĤKJ;2oL&֭[;A;$o-Vv+o\cY'U 3fcs]"ֺ;pojmFKk' g఼eqe{s}YcݱIbmJDUUUuೲ8;/Fbwb^Vr}ޱ %Vp'hS)J ~>bƷE |??ѷQ~=tޅIG.{?oo?>bVvYܭG Y](̕Ƹ釀{_}:[a2뽡[v.hnGkC kQ_Q:{.+ %ި z-%A tnf#$bW}z+.3_dc"=SJ5S`<];#X&Ȟ|,>o$7Tws^Lk^8s`BUĿ#d9jn}GWp+Olyۋc$l̍`  "!=SMN}Y??Oo2r]w u|:EC:tСC:tСC:^Uw 5שS_D sx;wu<>btt !Yy6>dUpՙ"ĕs?ޫZ~/ѱV]ddjkk$e%H^QQ%;`vfc3šD.?s ggD_OJ ?<<ɉɀս(**C~^Ĝb;{ Us,|"x1bvj K֞9>9ew^Wa`B%9@p0zKK QYY!+;~||[EjIo4azPS~,cRhVU&m*爘ÛRO5H^"ݢ;%}.7Wק7o8\} DڬJy?66.xU?-1GmO?V fk%x(nbiqAjr :Ÿ}=b~֏ѡA,͈=X_kj.uZLྰqh m%9( DQTAM@4<:G$poZo[+T\~oJwDzz{7B𝿁pG?_QvCm=q{aevY=~[-*4o2|1Ꮡa"?a.}^}SXT ܻ ܨmщtv͝hohE{]3k*m՘(T=EcCt==c Th[h[^hcL"wb٢)chLgK>Tq|qP{1's0* kA pn:BHg(,e6:!*OO*%p'mۭJII(**c㰪<::2%Ϗ-/5+/UizՁ+Y}|ռduaY}xcc Kӧ#q;{FfBB+isr>sa(-̪24_C$L>24*+2LJTC.߹sG15ϋ蚸k9׈ԮANо-ڷe Ub;f}%p&hg Vc1Zꑈ`yTU Y\w#VȔBDz#=R=l'+\W~6}+Npvb;a;7tt{\Ǚ܏|9g3xQr0#KV&EeR "99׭UhPǁ}N]ݵ)Wp3rpWaL9sf[ޟu*w騫èk}HIJFp&mlW66{7}:YH}{׷m`T.555{<%k 19'--yfY~lw~˶6mpxmMq\ I Rs-kws'vt\?p? ߻}k;YBL'jW)'4,*wGa'b7;Ӏpgb~1oGgYR#Мp 1u 72:{Vw}Fr5:/K4$^NǞD ?Aӏ#WAOo_4?|"/sO<I >zc.yܳ*ʓOA8 "U̕b" .f}1kXTu*/z{0_p @p .;z:DjXjБHE-,\ ! l^f DۊbP"VdNr_L: {R)XNJeʒ0_Xc4Qԝde.r1^OE&0!eB'[m HseQ"}jc"S%q~gb" 3±eq}Ƚ!7P<̈r :,[piքx=G w kWo',ch]:tСC:tСC#j]pzw<_|E476 }zî1Jss n6^ؔtiҷ ߽~p']CBBZ%}s]lLcjb{%EНP?I( ќF;[E}dăzUv5ݟyy6K]S-tm,nw%J}~~QNtY&K௧%%%hiin9szuOٙ% 6Eps8MR0a^Yr;qJ0*02S YI"!F~H ۷4qGlw .HڦpCvv̙3(--m!dMPʽ3rh2%P}k+aG:x(7/8y( Mnyyy2}f]͈z2 (;;!'QSh?{ +0x<ܓXLzD« ex2B1u Ɠ0s= yX*.MmIru&jTga.ͥLw#fm nM⃍U]>|Op׀o5DCpסC:tСC:tHp׀ܵ>"Eȓ+)B p/++{SSwHxt n ~_ZZ!lIk}р8!{μMrpo:Of 6'+ʃ#smnbጼ2[rCeE5JK*s0J+ /K؞X[tJg }ۛ< ҵP1] 2' pW6MYY97Ap5nVW7Dض]4ྐྵi 簻%07?Y,//bk{G rqǽ7D9K E@xy #<CNN$,M@{ee 2J\mZ{ddNޗϜ}9ޓyKwynbft&m+\3P9cYg]%ζB\\cu8 p̟"Lc!A8]rϼp=-\!ںtp]q%l.P 6e{*KO}=$X,=mK]ollZlao⛨AЅhijKCpOEb|Ю!$~Pc!?̐EG=.js06oolņ>7?36~`8\N +}r-]Y׋pW;`C|oFZ1t]GSrZ%~ݑo:z.GOЋ^|loǟD͋O7?B~YO> W|sڧqK g?qk~Mџtg0pp%0;\g㙗 DA}"7 Sy.taf{,}= +uX\u&<*Gu 6-{8}R=68,VغtXf=6ZQ E6<"b0' }.GOh&?1{YlA) ϊ:J1dYϵXyQ{FSgFl/4\g0w)071=> UdU0^`ފGnz==֖[;rߋwwp5w DCXpסC:tСC:tHp׀ܵ2/%HP1 wp5Koސ2w3w++.a@E~]gef#9)55u9կ`c}W:ؒl+r.avWVMN=44U{iiܓ3#H(S(Pw_r{w.:P0@ĀϞ= 4+@/j0 Kn_Ŭpbo :P[]Ĉ1L0>usgϫ&vv=pM/~tx, syn\">1Ff>r; '1,.{!˭M  Ucqƒ9<=9)}` } W`lA/H/(E/ꓨ=^~ermdGȫpEx˘}"iz20QMr,u7`֌yk+f ;:cgƍ{mQB/5w jw kpסC:tСC:tHp׀ܵ.wœ(//K/z *Kk F{]qv`-Qޮdw2g 2p}pd}ˀr#H% .%wd$lKpGw ]ϮRCC.TWk’Nmzއ{=_|ܖ.rÞfwlpXӍF$X YjǮت{q[Wx2A;;p7nܕ`;awkk7$J1·%^^Q*x S. *zMm* 4ʽe> 1+04༼<{ŋ滧\ d0p7vܙݽ-1v6ET2tv;ULLtpܠ-(]D]swn!^9&NZ.b3p֡$y ϨvJ Nt/((@GG|>j7~{ _g9/$%F]ըhX3E.amu)YJḃˊ2 [,>ܙ@=wEB#M={f.>nnH}cuUtm sanC1=1.r!sqH[콻+'wO3 ]/-YP^[}>p}S|Oކj~/w#CrykbṬ w52k1/avOg#hM F >k䛰{+_~S? ˙%/PI ׼3T>coO}S/ }(|hpO?>|i0v%g\'#W =}.^ȝNEc%Dh+RRu 5wiSa+LCc%C%6M. z:,nDwS;ZSSKi:3Ph?[ pY"h`8V Oʅ~*EtdϋDU.8)Qȁ4SyON$WA9o鷞AW8X>`LB0 wVܹ1p`8/NkK>+'rY3'06\1PgFa IKha*噘/ŠkV,;ڥЬ^v`{֍w7񇻷Oj]5w7%\ԣ=C:tСC:tСC:Ѐ5w--p'NnY58((555 ZUζv[;RKpq於氼`DM V`ƽwt RE'{p'KBlltç}{;mIm/86-7q=,.Σ UUbf/$ JKt|Шo;;]91xPCp'NfA@Kt`muM ۲we?oV >lގ[R;[Lڄ$VKŏ% IDAT](,˗%gaMpkp+8%AJB/\aZerӱ?xx nOp{wdIet[:Q\\1n?0HG1'qxN>Ȟ}w "vY]z,9WVrR7 ۛa\MYǧt핀;si]ľ|G<)}JFJ8a0L6aڀ;6cXl_'уҲbՠM-ϓB__hhpwѵ!! .Ay?P?KWYtu&_`^O;zmGeet9Ŝ"0̺ϺXZsPj9 mtigن іRV p'܈d8糳ce}lP'3'Vǘ?'N9?/_ޓ`5Eț%kJ;J<;C}>sgBP\.@1^66գ@od-E,y4WPDu_~%%%hnn'Ŝ6X_]g>muos;nl?ݹ^6-f?Oql%Pl  wsDE%_CIQ1꥚LϵC^ktgR6KB1L㎥zN39 cIg<壶 R u>56 5H555z$k|--r₋VZ˸TҊ6y5UehjKߎ^K Rq= Ţ=5U^UzelV.T}mv}T샹}8؏Fo? /j|6EP{kӃI|C$7o&8!s]hjۄ{%[6Fl #1 mfv CVװ&]>7գ;7Iah>|pn> 'o'@ͱWEõ~I"byD=YD|O|Fwp'$=xCtqnM= aZ'(/˒"NGr9Gb0sEWPEBeqXJ2tLb(ɰ槠}uue:NKw5N|UV3/1(t ^EKpDa *ڞ뢍 md^$ :+]9pnL'I}"I:Kv1]٩xϋX_zE:w^>3"1-KwF<9W1.tfy=iA?#EXp Ǝ/$I1r F3#1xxJ1SWM[ڱ5Ё́NZpcȂ80ş޿?}G k]p o#+?uСC:tСC:t<w k]ZZZe%±1d\\\Q H-A}KؑgIY93:X&PT@7ASS 'V4߄R:kN.--(vff& % K*;:-aX.()).ٲRb~!DTE%A2Qz PXֶ&n'hݍ$"Z*6%P-'ݳ\H_ _^s'}V@2\.ǂNhK.HOOGFFSSSDy ʠ3Yʖʖn99q<'7K,(0@bP^!r n܄߇rE911qqqD~.T`("bw8&ʸ\񫈏'># އ2_%&{eJJS,x95G])3:s2g䫲mx"ggz b>1_ч$$$~r &N91/_RR?Y_TT,o>/~e^U.Y'f8Xg[.6rl3,x v(q~慀;{rnv0[YmBdxCv%Qb ^A\x,c ʼn+$%$]Ssws$cQJ/9N xVv|#XWFRlL4Ż`(1>V1HKGNV:j.vj/E؝ YHNGtTľ"0DEPWDB ADD0¼ST<Cy+.&O/^#MeY<}@Bɉ1( Ut`H<3r K}2v6vs{6nV'0oP}گǣ5.mQgoq}n,Ϡ㝧/P{'z(q=}~H ;_@̷>'w:'@9 &=nI9wy_ eLЩzN=-cB颼v q.rLA抢PŒX,p0e)+N`Aj[G;z::a蒋p,]n4wuMsOY92sqt\yѧ1B=))I#/ Of<ȍT~ + ;~7\s;KK=?!+lxV$M;.=$\"%>+KOvh[l J0 _Ich=,ZN=xQo|Q%uşP% ^ +\H0U-{:;ԅnl:-p`El/9Xw77O}w k]5& Ow:tСC:tСCdh]p׀+gr9K9[t{.--2ee%B Q\|Y,@."AAaGQE+̒I^k{f!v> \ V ,\pwJ`w݆kgJJeۋ $HƵEmymYy1+$^[[27T6{7GozllECC * 81 2Q_|Rec"4\T VN\.v1H0O.n`РUՕڧ mTU~[SS%KX'][Z}肢9NwhNtm.|utCT}tzn"t1Z-c8XSo(q_ cS/s}x9SnnN-2'mٞ2VVbn# r&`l\Rs_31xP<κ9-999/O}^>sqyNe]9+x-|;ۣ6{({϶0'lZ0#=Bp{D"?!;z{wGtkh6~76I65RK7tY8>FXc-_Y.WPTþZXWsTFj1;zD{1V1͝{gG :Sv&YrOon5M[7mQPWfZZjYz5yT{k=:[ci)5(c_E;+-lb}e 7fqcjV9)1A<7a{{+8_-9X/< guixu//=_} O| ?w$| ga8M=o/I]nIݝ$4Cܯc";9a t^$f 0_hKRWIW.,bVW[ÄZ|܎F1։w(C}R /Dəc;p9%_`gb<; p>]x ;NrN^XQl &zࡼ;r8?%n }C 1Fgܫ*ň}qLK@~.)їpV:woBs9 @o {C1gwi!peEc83u4ᶫ 7-Έ#vlڱˎ7{| k]p - Ow:tСC:tСCdh]p׀ݓ v$H貹 V"+ U5e>ZQںJym #ENܫ~*$M54*ESs!dli1wJkB NVFdžvJwc"?l#&/ܬ C"Hnnhb[ Yvv 5Ҏ :tgJ{C>:[E[`B%s{{!M%!2@v+ amM@tx3kHʅ~fbm6#[fE{${GΒp8>&}`(ڦc5N@~W r!ŜN:{@]r\qA`U:r/mK(`| |mr ɜv˼PlyL+ Y< h_cϱGʜOLL`rrRQ,}Rje]=OXGW5oVWךvϘ|5@RuS?qL<1 mP.g*l sޝq{D!9p5 Qzw.ޟ~zb [/DGAQҕ}@\Gp)2ngIɝu]C}1)Ӷv w{pK5("s/ 7UAHR_o}u.YY|q},D]ޅp?UGӍy,NbaL|t6Q0E_@g)Dk 87e8B_ ^|=~˹guh}hx=#^({(~7W/!;}_ڧO!p'L=zsw:rKwExŶO R/H}eLd]dv(r09/XX,ƛTL'mUEt57-R#M-hG[e5:Вu 1WPxuT;c;QѤp\`3`<>h `+y/>]+>) G EJ)ȝp;=&ݓ gro=8'E>C0-LtiJ1U8%6}1"=(џxs8  8;`@{cxM½6~_vKk@L`Ͼ{8z-R}6VrG# &KBuJxd%EpAUs &8:$aGCFh+țy\Qu<{l794')[§| Gat L@ NuZ 3\q$v9 a9},Y]C52C, iYщ}s r31.׈^>{/$oh:q[S.tx}b V `+Jzٳls.c\; RmSowT)B -qHB7]]c^W]>QYi~ݢ.~,G 7wƾ뢎q< ~:eQ=21I-?patPo~wYNF }p+]sZzdlR̝[ '+,GR`H=3GH}nrY}< cʼn>ZYZt65M-RmMhmkFku-*YTxTD\@ :㰄'%>p_ƨBQ{, $^pUL̉';B|֐ŵn!qwfų~_m<%`,)KTQto_(NBi ԏDEo!'Xy^u<֓Oq Dp]y1HRKn wF5ڋ}uD6ҋ?}.݇p׀5Ŀ<`;ԣ 5C:tСC:tСC:Ѐ5w--p'@IlT.t ]v;7-nm%tCn&8ijps@jhpťwԅ;Zyu NNWsNGH, IDAT$>(ɩI<5ܶ>vvvENmhm+z7I8𩖖fQ8x=] M2'cc\\Z]^GvCWh1"界ykK kBSSnmmWnOp<N4Q:_=kLj7u^>hhhR68ހzQ_}}s&Mqs۫yLFlxc,6UUUJjQGU+**P^^*++ (| QT\BX/*()ÒviilO%%%(**: yu2\ϙW*,,ױ,((@^^,qR<͟6gw +u΅|98Wz"xsҘ}6KKy,dk}?!u~t{ԋqV&W (T~ȇWх9aC.520W }\;'p7z`}ܗg0$]+s-+D%-^c~ /{᯿_> o=E>P~\@Ŝ@N} : gRBēR#S.`"2&C0oT&a*)(KHQ`K<=lCx?Ќ6Cb>߁=j@}|*Őӂ0κONWa'r ݧHLFaJSb;+!.4gt_ʋpeX#Bc)r|SY+lYf+RfJvQțSq, 0OV8\)A>kkADž1_x1xδ` ]XAf3VG+npgF$Ö|&ʍ '\Ÿ>?|>~ k]I i]>Fo G=ր:tСC:tСCG24w k]KKܕ0!d$HIS "-(ۅy* $UUU! ']R#MsyބKKK$[QYʊVUuP/g ,WN*7tf; 8H",jVa@fWk 9+np&pE~ {gl?x ,.r1}GI 'K0jN9S;6qUhnnuxܬ&)惃okUʷAļ@T>OCr mJ,xf`=J+YA-@P YH_BMb̋gcUk3 kk2ST.4|ojQB{/`-|kHC+Wsw]-~Bm+I߭O~``@1!wk.U:647IccĔ3jii3,JKkq?Z$$ p1 wpkxH5`#u%&@G]C]1w)ll7kH^ o;P'<1wZ|'4סY[->j@s`ȵEv[:;G> ᳽,%N(5h +꽮t7~{lwOЩ~'ۏُ@%,`f|.'*z^%4zހ=UB//Jp3:KOPsx ?==m7א/!{_@>B_gƥ~1? Z.ŝEE%E_ǝ`;B{|J:sj?_%Lfc* f}bq JX"Нc ?= 砧bwkl:Xc)yݛj]p׀A+/pסC:tСC:tH5w kii=;c* Y$ܛ("--M_vMH|JOOuuOKKۇuMP&23s'bcdd cBMnW\AJJLgiT'CSrppHCll,%6ЅAۇn!FyNvj?K`=$t|0fGAA!$dn;'X%;sTyya.!-W;帡:vjjnDalZ0:617އ۳UR 4x:mONN3!{|rcC݁͸΃1u|bb\|#]y&yF19V˿o_>6`ya7ŀZ2 "w؞5&AkW+^0aAw'N@|D5݊t=1ώ "E@PrWNm K⎋p5FW7 ˵_,g607oCtNHHHl#eAHe Ep+arQ£Kl߹s$M0@#|.6w+wworg8M!^s?mnnܯaEcc37(2,v[[;ؕmlYrཌྷvhlҖލum;;\ 3[ V@xm6x\uo̩:y?^yضzʽCh 5jswNw|׎՟\n+ς嘟AGG3Px 7Q2}VmWR9T cqGGxS]\0…&\H_^ v|R{Ϫg}ދb_w)g7VV`DAۻ%換R{Fn1知1ʅ%Y/npTyy0}\ #>׋\mٙYXY\®M1Q{{>Alzݾ{7']Mò3Y]R>}Ep9]\jeq\$ݨ,tƇ+,޺,z.< _S8h}gh|+=򗾏2?\CϿ7~A<| p;!x2~/RI,K\E8L`$?qd%,uUnoBUFMY js2QKez^BOq D1pDEL\ xvہCRq:+w`8bNhx9r$>K%<Lvf2#0)P/Õu=9W1ZkXn,ƖN▫bI݊Ձ Y7vo5w k]R?l_*4C:tСC:tС k]p;!HJ9yɜ%%%/3er6uS7oyu>uOʒe5uYpb``@t'I#-Եj_ ^c?trf.t+@hh8Vx=O޽'u]ܹ}'űwߗ%y֭;R&{eMNM͠2'.,HJJAyyxF. \|)y=x\~+~(-;O8U3)6Aa999rbƪ, RzE Q>|wǨkvvt4SJ 8V'й@1f@AzKB>}cp/7@m3rW%9gxQ5?_]Y} _%u+++sCctK-4F8 _sxq>"Aw5<ϲdЮ[;-ٗ@j< QUUaBCy̓=ctunCC] r2%lNQ}us;LIΟ^woZ0DQ]ocSS(.,Nc#R1 \|d~]Kj120_p|w–PFW*W ,l!/vyX3BI/~+^> ?=??MdHH ǿ"_o> ]r_OeLc&/^X,a,Be,ѼgǢ'3=y読F[M=PO 5,-EEaӓPo1Ԟy_#w3O> HK Df&C%>HYJ]Ͼb0r9>nL Bwz)4za"]iW0%:'I R ZZ 0#AyOFSB8%a"+MiƮ{=5ވC^}{+Lm^U[Cp׀5T=G{w:tСC:tСCdh]p׀n7 o;NYR͸|2ñQ.[,v W1;NGG{:;ۏ!XV ŝ. NUGG9ICfXuNۘZU^T IuHV|͠$)dj8IXYyKb.BDdd4j059#]2>} C;D[GCCk 񗧑h p&*<tW8pE^e,TQ +.񘫈Ly,m]@oVzK][֚z\jDcEQS^BT䦣4!š>(ZhA_@`s>ÚkN0,9! E(ȝv#r %L<Έݎsvc{ OdplĄF74[;BWV9l_X]{pk v:@r?P 爇ʑ(t18a}kyw~I4~Fl=}|NEJjsq^ pG,|щ#2p*-- )));m<-WW˥t~itRtR } L.a~\!N.z!|ͻ m]ώkʊ<* |ynroXYY۽ƂS68b:ǥSMF&[v]ǢչN_rlc`-wz{,{xv9Q kQ ,~sI.-`~nUn8р;aIkk_+9pq"cܷw* Ȉwm@o.pR7ީvߛ܏%n߻1~Gݮ{}Cr'zzOϡ (yI l>bsb ?9`oQA0><EdFע=3>hx-6>lȽ~-4|NUTyU3'dHYH~Y$;ľ;D[2<1ϑP70Xw(cݠ M.IWmqw.v?fÜB<@a,tqn8,V$`* ,%0+ΊF_z420XYRtmE^TT&F,ޗP~xKЅ_1L11ʶŔdS}afh֏:b,? cᰰK&vYA0CSvcF(PRbsg 0a*% )0]DKBL}EнXi,l%qd WdbXzo6Z6Ԇvl c},FwppG7~) .J(QD%J(QD%GY ."""˘L:Vk˱fvv6_[.:w Z :.-`nvS3&'mBՏ}kp/J)ԣgSG邂^}e x]U'VN$$"++y5pwp94/zyy :)ܩ9ss(**CnjW@.!n-PZ`Y~˫|^pd㾾 vO'!qWVS ܧ'1n48ԋkhMEC'/5<]w?4_}jϽ곯.eCD7E:?W!{8p`b0Pbb8 1R\:24q]ͻ]cdb,'ּܧ"{9p_J" u@( S*PY WX^Ag^'Zr7{|j3KP#[=};0%{c44 hnnd9 mۍ! 9-_^Bۇo~.̤a.+ 91dc0qvӶ}J, 5Tϑ,%gb& MeXfO61؊5U6bisCX0  .?m -]>2䰓sGG-|M&3 L#e #p1崷u"8XIirssmz|}Ve88rT~{WwTtuu .^44(!>44$2p}(Q;n[*1== Y4/o04?{/Ynlna>ZN+}*1;3Á{{0X_1 uǵ wEW' н]p+jSP+(}y޽=@6 R^ ^-^ />~ `zB2BW9nE P\`/`]{pP'@rtQ4fKRU2YeJtyЗCS ua&TyPc ')l Pun /a8 4Wv^ (.C}' I^0&{Ð}[^6>b&nutS)PF{S|c}'&0LgGb2'hI}*/e>U㜢Lq`,PnrOdI( TLTbZ)ӄf` Xg,7cv!Xnwwwq .Gli~](QD%J(QD%Jԏp]wEDDp ܯ_oAMM=8&G tOLPVމ58wy?R']ܾvr_]G~:B1Hܕattq𞖞&;p{qqӜ.vgMv,X;5ŗCqq }|V6N ֖)% W9ZΡ#x?pppvlk< #r~oiI/?~? A)b'D{a P`Hቡw F]eKr h_/0. S#n7fae.},/*{,ra:9XX C~ t$c8#ajq Mg9 nEs஋*2 @7ݵ^%@}? t v#peCl 2BaL`_|g?).dr(f1Ͷ{*#YȉDn$^>] 'b0^ vƐ(6l}1k{3ױ{k&t =o.:8Ͱ4C.(QD%J(QD%Je .<.]́2poii‚ ..p߸ܫ˻"!!iii.}zd}-\bxx u5HOOP[agK>rNbnvwn'.#H vN%<;s<dྵ'Nۻ;}:m ]Ɂ{Mu-H9&Xʓ~G{$LJww}p.N9op7{naa5ەJ D!55O|eN'N#p?,y_[[*G++콵q;CϙAaaSJ9-pA t'Nϓ_ns<{Ii}p_;y4nm' uhg{{UU?i̎~u{EW Au-2dI%.cLzi, w /,y ދ){ ]-O^ܭV5hL@UGKp?Ds3H{7H~H|iD=3'z'}_=#=0X (1`/?"#.`(s G};un1{ʸK&;sN=;֜` Ea.LI0_!$ۀ5/PSaSRsQL0ÐeJzcp ƃw*QW8p=*4q9$xBmiЧ@C!@p673C`H 9=-Pymܛ..3fkdJ0aKf8&"1m,Sv.e!,Ep/;v Ja(./ e`m}:V{} +] XRg溚|2p.ϊ ˿y i@ܿA#@3Cq;.tҐD%J(QD%J(Q:? .8w9&'9h'!A/pU466n{v;wwD[@qz-j9t,C^Np#7/ հHA"m{n8-Уe+H WVVd2s| BGKi}:TUUy'~绂OBvWcsNxd'loXڦY'Vp,Gxx({v.伃")Ih~apYG ܩs ܩCxJJ ?Nbr`)-H QY^ζvGk0huuZ{}71ip\٨٬iTgn.e  f{'C<tEx⒌oܴ4%3m Xh4bt%ߦѰ/1b2l9*le@߰/ ]˸E;ًώ/H1=5);poCM3p:ΐ Ja>b^+(3|)?WF䟟B g~qo ]aW:7 D^fr#q̻%{;[%uk G=pLGa4屘|eYl,ւhàN 9?)/N 0d)0m}=c8*t^0zK=]yG͢f 7hql$v= T/ӼY|aHq˻>ڬ=wr׳YFsؘA⏾ ϼ 3|ec`M$Tl2x&̉dn"`e EQvn.hI` DpS)G%55qO>33pJxp7="p}yvFjp0GK^YYɁR iѽW{oo7 ĂCccӪla zh : } A2r߅]^~ohMkν^D_9BBy anA_7c0`W0u Q/xOUpOLE&K`.!;E1UO0ƌhn 8n3l.@SL> NFCK=Dh=vq{ uzLiаh' hXYг2e:쇞>x FGl^He>&쏱dK%-ateڒ6qF9ge1E`1?%Ξt A KYf \*,V`Vjۀ"JK5{شZp?.[!N]wp ܟ~C?K=LภiF%J(QD%J(QDz"Jwp]DDtw_Gd֦ .pJ=)) =:pi{I粱pԚa?ZN}hh. F"?hpxt}rpnw n?N.AI{+k$| ug|ݡvgnS`0Sܥ|,w4_~ l]Ͻq p}Wz)? D]dUtK,9n]._ּ( IDAT{d~o\u|ThL$a"=3^ mz$"˟Y_!cA0'a4>+==x/\%g^@ͅwB/AXo}aJ֝'T6l|ӂ`IŒ #[-ېSPGc^ y ?9'`<Xn)BS &jraLS1+1Z2,4c:{Ns;f6{]|wop]wp5l I?n]wQD%J(QD%J(QOD .uN:$h{C=::R{'>00 -pfN`;x?S(*(DeyZvNzDtt m-hhttݖ=igdwurN yrSYio4<<̯}޿/]]=hFWtNjjjzS 񫥥=֌F444HKKcǓzi}k4jh#P G__ ]ҍ.vů dž{]fx]2nbmJ:n7wnwX]]fs~N4uo?.N ą LXհ1iA_mw{G~D˕ſ7{[=5GN˯x tGx'ptp<pTq}23, ]&s>W.`-J&5n }Rx0`J1X 8FpIХxsnd?.i/pO%{l?E-[U"˨w| J>}MnQ^SL3$_{$sJ FSY҂8r7`>3wpC]nSF#8nWep>Z+۩<p>c4]og yL4`}d}sk;pZwp]Sۏo;f?niC%J(QD%J(QDz"Jwp]DD4w {C5LOrNڼ7l]F(ZZPUUÁZ{rr29=^>^WW>èoAzF*"8'c{݃^؀{ܵZ=aaӉkkGB~WMh: ~Q@'9['ڀ{0z{sOMl XN'ہd e|\}{1791BTU:v ]hnjµ\:>ҥ9(\kXid)JscZ[Zy'~jvO+**8pW(c究v55uīz g[%JK)+@Ywk/**򐙙O8y:>"?̎#Mц~REww';u)]Xضfs S028 划av~v{[t}b@݂4& Σ-%4 2}aإ]p=ɋg$<8pWek29pbn <_E/S ]]Á{,[F7 1&uHdHaJfI hZnץAˢ!`mv$9,1dGC.c͍!?$\KY&*21S3Yƹ,Sl)Yxu>&jK;7w·g . ~qQIw8@Gp%J(QD%J(QD%]wp9]Vޠvu[:ྱN|#I”frwZܩs#pwہGu5R9kuNCdT(no]B  CN TVTo z>!JT\\\̱)wAI ACuГ ǚ͇3,FXD!}r䤁Aq5WMM ?e%ܻ`КX=)}3юn[z+9s uc3BX{o)t9 吊Ϗ]]ݸvN%#w:TUU!55s1iV388̻:ȷiޛN>lii]ܩ{SS?i--l?)8oO!\>>> S&'y&'0;9375}Y2ϲ9attg&b?KFF3Y|ec}8 C, k8C` .#l =>@ֿ^@/?p(7c; 펉.)xO\o;&[!4 k}m*-0޵]*3 Ca0q-KZ KI F%^1vIQL/2ؾH8lL4VcMí|s+|ݷ%: .?r8lj%vܺg[wQD%J(QD%J(QOD .@}[•wFIIItvi}v059} p ŐwPU*v%N'pZX]]'܏ ujZ *"=V^6 㡹1̳̲E)sKX]V|9oRB6 !e#:jceߔ:$ KQY^Ł^cFAc}#XW)vĎИ"b;K~s۞;wxnnb&Η_=6̣f744eY_;wBݾn}y_޼_yƞ_ˎ,_݇$VޕS~Xa/<~&pP<1aU]w #l,p/&'W%bV'w>_̔`6"`"x2#1+#^͖e}}%ꏱ3p.#w'nLx7TԱ=eJ] %# ^h <E7Pyh_6 :p׺J'4 в$yC%KJ[':+ڜ(ەN `J(ɘr$DU&>Zƕ@{Rdo B^X})6:gswwNwpG On? j?6'X0g.(QD%J(QD%J'p]wEDDN'pjUN K=ADkno͛a@gGtzeNLn6`K-;3Ar Q7pqλn_uqY$~uDV::[.%4~q5WMO͢5fS!a:z;_:l/vecek XE ûӲdM8Ν8fw[/oa#n],biBэf3G~XFȳ1;/ܖ9;l )76rC' ESS;g;1 ܻl=C 9z?`9E_%p>Jo=B_B O?@K[›wo Gb8pV\"OޮNr]r eQJ)lE"1_ y4 ,gc!덅ؼ^b,b8 cǰhX E׏},/ON݋g4XR};]Y@*e_(bˣ(S|ѯp5(pQW>)xoyx)*$7d;xwuV$#0/Q+OtmξLVgZ sP0鉞 b x?1)ƖɈo6🯿op]wtI'H~QCӈp%J(QD%J(QDD .F|]FSG]^[>p Ӳ)cbbp]7pv~}vj奕]adpu BW[;VWm~Sh\ڗ-7%.}kmǨpt=;;_{W7oC; 1n홛{dsdAA:0>1.;u){tK߫_߹ɷ3 ,;}vvˋ?Z.i1;Qn\{^:=֫:Dg?#gH|p!⹟ /'54Gӎۇ=HeKp,Q`{%$PyvKiX4bZ \La4 %q,, ) ܭD=ipO%͏{wColyl=їq#|:=>@kg :ǁ.E) P&xBSU)IW1`S010%n3uyp4&@ mj[?z#S`0-|lcݵuEwp]O?,lAq'?9JwQD%J(QD%J(QOD .V}55uN:me,qw߱wq߹k277u]-u۲D{Mѹ钖uvtۆ'7uS3(*,F]]=9t~ 99وqغi'9_7w- $z/p>$c{- /.. ERq&dL~#{M[NoKN]F<lȱvƞl~}CI 76d!83Ni*Ax.p'olr4.wi`0R6"99 Xc쳶q['oܱr>y.s_!e2lΗGEY%ܵ*-Qs_?tqNl!NxxO7]<%_Giy@=[k#o9sCw:bm FRH-P^^ TVVf?9B'ҘHqBk;:VMMMUGSGyZZVLLm*g[추]Nޤ:vCƞ)onqN~fv{;ղac#wAǑ;u'N)w{q;e/nR y ֘Iρ{E1h /v{8a8,~}?Dhs{ϿO^AѻFC˿Bun __p _Od~ Z@vH_{%{q XC0 k~8& #1Ie"vK.dW`63Ҕ<vYR7b٘Jte f*1U^7Ύ 034r.:`=ǚ@ Sgtl!I:U eN]Gl5j/Fc~J;4)KOh(SU1 IpGn6@ /9#Zƫ. ,ϳ  Ɏpk_FoeD[ჾh 1f]6~ρk. c" ˿R{8S7G9g.J(QD%J(QD%(p]wS u]mNlw&ظ5ޅ 8bnrnc3yee5{022nkk|ٴ++k6Cӷwx]ٺ0a :/M Sg^YmzkfQVZk `@[[Lo[Ҳ op_oH0w =guewŗ!)ۻց‚bTޱ Zt}So;wesPv}ںSq9N"|Bn7q4Mxh9egMʍ5u޷c+n )͍߸ ;t` rmurr2bccaZgmv"+4QFw&:x>1`*ێ͵uuop2#UEQQRywzst?Vܼzi>{.k6wp9%46c2a78\!ܾ%Zŭ7pƶ8] {>NgfӅ*hб8-ٴ 7dؽ]sXE#:vQ7~[LzXl\cuqg1v,G}sP w yNwrvMT}* y-R_% S.O2?|]ㆁ8O'஌ * ԉn${pN𛺷n/dq4fxKDc, Ll Tץrܾؐ,5`[E(ah+zk)Vrre򟟮Jȝd1KQ4o Xf i>K5=@ o<+ȖLdb2'X6Y2`JdϣO&42nIḽQ>:c0ZܮI6.&^aʯb.JQ\İ nwB=QP$yc0%i6?) k,ܵ6q>UA`r0/ W0~bЛmC)vf'|G;;|ݷ  . ܟd~ܰ( O;r](QD%J(QD%JQ ."""kuJ#up;!ȵ-ϭ`ll KIHHXtpq 133KPZ]w^;?u-gĹ-R'2CyY%#? M,Sj#=]rW1>>u>Na//mpN?GӶ,/eSwR;wB0"wy.[?;=y~?8N߰e?nPj~8ph]]]A͕4/-.ajrߦ9*2hޡ׻}+65Nw/o}}ew.433S^ZLNc;*%{oysc>k'7VW05nĘc-9yIuz QWwG.w.Yޑ:6Ar޲,Eq{Ͽ>گ3oP3.o/Qxoh{8wen,wjNDsB0VQtip/DI 0]t\llp{1ntb [e6^",5b!\U*fkNa~q & "1GX=H[ vdN0K.n# [yx#9y]>Uܓ}nh }>ɗŇwꄯN TWY.C1(.pKbf8֍gxw '$zb0ы$'c(3xUa.s'kra.ɂ0d2#7*.'*|Xh+}Kw . ڏv?,v? tD%J(QD%J(Q]wp9]}zzwpF]] <<BC%nlٳ3lL/KZ-S0|=255Ϟ3fqau1|[[PPPwW9>.#w~T^r9Â{!ؾ lnsNHwo6vnԱو$pce6~_ҾZes%4-yhb|D[tI{8<@s-}u6_\Xupuj>*x{kl.#~{&nwIh>hlݬ]-mf/pWy\v$N!Nǘq$[~R}9pW#?? E4`"oۇwl[g}4j{no˸pdWXlFeځ{[a}8S |A=_~?;j>y }=BoD4 ڀ'Cq&@Q]lBƌR0FbDe6N)֩LEPZ&Vgc%?{GI=ww5sj{Fh{\kM;z$AxOxޔw(x_ c4zo|_fVef;92###@֓oua }8Ta_[rlwbk-XmJ]:$$ĉyqk}4grq~~zrFkp]K |Q__sDpaE_iEAa‚8G]X>Qp?~_oT w:/hۃEEssTw\=Bgf$ 1Ws 1 uE}axx1t. gFͿe'GA? т ?Zї0G5 $S*x|qa=/8|K5-a*f 0WŊx,W'Sb1G PTL`3;-aV`Łn_%vzŲElF*f`JSIlg$($}&>C{]Z8ep]tF|KM8)XCr~Ip+t 8q023x %*ѐt7џpw`z`E|i.Rcs1_?7ܥ.w)7EnbI '__6Uo.wYdɒ%K,Ydɒ%K,YoDI] RpD"yw2w͌FܯcK ֔ >&òg/(ܓ0??b&If. S:4c Lϰht>=E~9loQ?o~)Ƶ5MhnР%(LVsޏK$|f&ƔEǧYu:#DbH`ov677yQPP(ka11q(+El6(A΂{0IY csJn`h/"٥~ށQc>'kB4wNO.q3C3,خ.ƙs-CO{bLKPSU. sΝGsC#V $i牮(]'_N֮h&Ͻ+·ݽS ;|XܭsݭM-~_]ƞe_RpwcX\qC2v`m_>D{F$ozs:aA`:ǂG0G|3%'\z~o9QpOBե<0m = Xj'0Lp W]ec"! "1[$ܓBy,Nw p8PgCՂZ^rXnPܛZO{+p(:a0)X\ȬԐźda,%O0Vтxmg=)!2#1XW[5m+w)K] RpNrˤ$Ե?/O#IRp%K,Ydɒ%K,Ydɒ-)K] RpHN=. 5k{{nXponn7PYYQ7ɾde $#=NJς!fXp@UU5p8`XT=s$oascCc+X[]Yڔh8SEG׃%fvR)x $3>E>jԆa/Ntw#? #V:;r &lll"r {, M=J)A*6 X-kjFZZ* 7QY&'vE{vE/ ̎;ྣJܮW$l}y}GG`zcƖ*/,0>{̬tN¸:ck׏g KTЅ/bys_ٶ*/̲^RZvH$'DczzJ 2\2͉s.N _4VVVYZfh疖<ӜF6[KrTUT]'ٳhǪǃCs1IqR1z@ NpW~!n1\dAˋ.NyJ&$WW-pz({g]^As?=itH 'hl^VZ.GZL((E|\ 뽂;K{ ~X%]1VInee"^nl E 6QvGImYZZ:O %/'aїt ;)0\=M/y'΂5Ep0F)<,/np50r]_{]~oe  +ܣ# )o4|Ϣ?0G W`H!NC'LLJ&d#L ^ْ̗+{yߟW(rRu ҰRb;5gc-Sw{JWJz^p?ܶX~-9Xo|x*$TŢX(x< ;O=X&߇=>lk=> c FGߠ'7)xn li+,/ÔxOpv1P܇%]Hїw{pFa"uXnJSF!!.u5UcsjGo?},Ԗ%1~e'[Gݭ" 4^h>=`q{PJ X,OBvOm*KXozK66Zs8}[E.~_%l֏@t;Նtm,WmU$S Oq4 c!231p,>'Szk{s]c0[$ʏD`L,ξ%^guӮIɗaLx*}(2 WaI їrC ċec03PbbmO]?zيT̔`$%I/MXYܥqpZx\[iC7vfOORpܥ*xS#ڏ}ZO# Mܥ.K,Ydɒ%K,Ydɒ%()K] RpH EWp_Rw$S;Dw)$m"sDRT ^׳+ֱ$ >44#҈Iv66l{O:`)ڱM&e%}u]JՄM?(xgsS?>|͵u4740hBaA1 0Om'}ks;DcJ>&|]Ud93PUӘ}iл{>]K^XEgW `4R===HKKCY IDATY Ae`;'{!DPlD]]h[n1XM8&ɓTNaye%y$-մ#b#KKe[v}>Wa)8{,`/d[}쟘TG O~DpW $!o[<`ݟ/%OvgAxo}65ٹIW!:!{|haѝvJq/cp,J^9m;QP^ۉ'IHHظSE+b ~n1C|l N%'mO9M%=1fK@GE̙v&O~7KKIJ^=*EzyǾڟ;~ܵlqQ墣 .MUHKIB~n6+M?Q]ĮwF0'x>I<ǧm-_L.{ྩOp?"^y/Rpq91e hM~x~Ƹ 0ő~ #>Ko ^zHr)Z>z%_}9_HǿFwE o5~]9|Pl{0,vXE*~otFPͲ;3}NhR4ԋm$)qX,VSa!&kr$Yy]";#)Dޘ hz)Kb]7GHpN LJN1v/3#n#^YU)JŒ{O}:kYzJtYJIJI(IxYWpwVKy:lM `̓?~1 ߈J] Rp&HjIbHD]YV1شiō#/|]H@jxr}z^ehYzAu/"6Mܥ.K,Ydɒ%K,Ydɒ%()K] RpHzC_t%ɡKFn7&n{:9i\/($d*6KԛྯHHρMNX'D±19N"ӎ,]6֗Y%9?}TcESu5fL/$4g,O{nz%ȖfNM7MDUU5 GWW7VWa~k[8ӧ{xz$꒠IxȂZNcQ]N^XE{G JKD;whkk ڗ~;$C,-Vj n2d/%]Undu<Ծ<IѾ4x1@Y|Jco;1cG{"tx ζzƎ7CTa[a˾hM?=gtl0:M !]|g{K| Ӆ]((_:FFPS[ł{rJ_111+ sX,xK'Y_|X`Vtze+ݾT#AP(.cɽ N X[`csUwkXXa։elnE?-/bE,ˋ%ƆSg ݗ98VkEFvXrC(m М'׾[q,st`uen'nb657s{vfx.ԣe<|pHl8f}_>++9kCc}5z;Y.1!6:͘l. ~#^__YPJ>GB{nQ|x bK3\{I?E #b5U5=͉h޸k菻0 LJpD^GA᛿A_OPP'F Ҿ?BbQx}t1$a Ķc ꌗ3G%0_%) }$%WJ PW/V%eћ2֜ER {=>n5} ]ŜޒU.YgRx,`?=>(%dFb1&p%V g{-8ԏ:%?)nKɾˉ K~uJ:_ښv.1,Mb= $MVUU`x3^s{ch-Y\eaks̹ʜ>suM-eI\Ŗx~avde2APɳ+bsYfu~V<,S:c'(ܧi7AœhG b*s $>Jibg$#7/M|Qjfdw@#2_rH Le1(#V F8)b4F>Lbn0YFȢ~t#44Ԉiz'\UwaJet}mr-1eQ?33FnnK+93J)u02؏de|Y,e@o氶*ʔ8&7ey.sXv3- rQRly0?bDyj#%1hL `Ilo 1Wol.el`{gE jcd!8/X#p vt?!R\-  "> VmIlKc_K 3~5o'1R[hǂ{_M _HU{ 0=: ~W' o~9?_//RHro!;B? 1wr]G]K,FSx3 CNr ,\%q+g8v)=\]NR]Wp_n %dc5^~WJ2(F[> kXmJ{M +)ri XTp'1G~pghr]8}G}82lYgG0?% s aH/c "G _`(\r,v4Nd,Va"se)TqJ,&KbhyeIpT>}Xq>> RpܥuECRgI6ؿĶ jqqIsvLΒeɒ%K,Ydɒ%K,Yd%w)K] ܿkrNB' ȵ58&''rsN'q.ܣpa| ###,<Յ:Ԡw:XBcC=*X4 NQat@6 uv2}b`(mM|ֈ:ԢUŨ*EOwJr Chhh@uu5 %chhI6 nA'3᥯C)ՈJTU^,bbϊ PRR2?|{( BKJP]Sa0Ă; Kcc=RӒb.y9 ٙH J^LO ,ze#OAFP֩{-W^rdy)*5_SA E*!9 :JJ(B\H(` 8Ey(/U("1(vRU/y(R)(Q\R㶼T<' M&wtsDETP#!!I$'C &HI҈$$"59I%i)xY$==]Vhb}h18#Υ4dg?a?/?r3\ïw|:W>#jk$vL; $Mr{mu%3-hmn4꽴4uhje~K[k-RR45e2UyN̹ⳡOnH{owXo*ı,繭o+*QYYy+ hm9VP㥅hE{gip' t!Dh6W>[ 0܄*S.>s*sSJ}D?z "")-󃞣cZ,,jI|> O"=}~/Pz{̅I,//k~LyW+`qi 3ˎQ9>T4FgM'`5]!2 1a:ǂ9CvWFߕ_Ov-4~c^ַ D'RowP"cXlި ,DEo+RuP={r^N˽A_{+Jn.QY,/֦vVHrw",Ga0 0+= >O!wI(7ހ+7'b^h+(G_@ߢo!FXreE`0{Lㅲd,V$c,Q<xL(ј,Ƹ/Np/K*L u`{iZ9K] Rp7Bp2g/BlL? [,D:mFjRݿH˖_ռ"wYdɒ%K,Ydɒ%K,YoLI=qz? .W$JQ^"9IZ?-,N?_U_~^]Ϟ=mOL=HNNDgG;Z׋ hoC{[XKxӏ.A{[IJzZ[[܌V񸵍^vhp vUaB_o7Km͂ZEPP㥮 5_Wr/55e^JPYIRc߯ubzZvcdxfZM;f475SH~l")ZWJ /uumԉYn Ui0YܭV EͲRL A) (A㳲Ju,ct rqЅ |Ԗk)(V)BMyaTJЄCcƷ*5ʼe e w"Ma JR71l y[#/<((EF~BAe 2 V "3Ņ$4\U]Ms[%Gi' C,kK =Gby{k͢ims%sei0SOe1m1$RyPj6qHg!HrmiϔzAmM G<}>Ey~omk\AT\{510΂nĨ̐R{O̗moH65Q.g]OMU gT#>[k p:( ɷk)q;11οܿr;WO(8{pǂ;i[ X^Y(v5$I,wBm &\W0F+Y#>'~C7~kBߕ_/[P@ѿ=rw| T<Q~1g1{}Bc1W2Ay<^HpOR]*Byl+V` ,}bWN˯6`1 8O^G^)%X,zG!ɝ#U)xD}p.ȼg}Uc8%1X" >&ughmܞv֔+0'D{9YZyt꫿@=`JwgcLGaaFNs6.EbKc\UWu&\5cuRpK?9lTܿYr N'lL|mPP}&KRp%K,Ydɒ%K,YdɒoRWMdiuOHϟ}sx탉/EBmB}İ֌NJW)`Jo&e3LΦa/!uuӭх=PjB?FOfXsh(ЗE0B` N p86+ zq(\cYf[M!5 Ƶ~J ŷg~5m3 LA帶e$輫tf" vqpRw>Hm@MU" $m)`=tr:n;(uNumtW=#>K\h N/ݡը>,̰s4M =^8_S!v;fffs\z~R:^ldç?66Y`aiscb6r&.>36 K0?K9#>0QD`ϙ{h>6~]TQ3_PA/M7E_$^P" '%39ǂ5$[.r;|#1S͉se+BU<t$b: TA< O9hV{QݮbڃARz; Ě`) i,Ԥ`YlS%KwاYp(Ip?~W82}IVωD#x̗aRɬނ%&S⽛;p߄u۩OSe0FDǞc1}V9&tс8/P~m1wִ[7%cZ%<ۉ̻/.iƋc,5pWbi5?F7dI(w)ݾxMmGvb{ /Dϓ&JRp%K,Ydɒ%K,YdɒFܥ.w)K.Ip?M,//azznw'Ȫ4'jc IDATNU 0XOy"wuDd^FB޾nNui$GJzl3RGIDtJ([}Pj TܲDKI+'BI$ÒT:2ȢO0<~zXb30؍!{ }0DXaitHP -3I&a[-px"{=$v8n$Z,[0*Fhr;wKmf*@B/_>@(ee$Jt(Xt?Wme\ ?Q#vq0QȿVVu Q*hL2ìECpLa3qh3 !?aNYvPVn=v;]`q:}vQM(Jzyگotr6_T`Pd$zCУ"=s~dPCP]9ͦ|#0NX-bbHlv0\NuYS夹RA 7o}Q{/G/"\`yE'Nx<,=$sf Ŧ`c{X/-, n{& ѨO Gk]t%e} :cT2̏/,Hv; |Wֳ?Eݻ?@/_||KD3,FNµʼw}LEQ~%W/4fќͬ2$m^ٝ5>b]vb /)99}0Z +NTV3a쉒>%dA$;=V))Ƴ#z~'7|:]/N)ұ}nKo2'hcBY$GDwXpQ4-e]XNE`LxYjs1U1ao})R%w)K] _&^Jp;}}}<"4?"wYdɒ%K,Ydɒ%K,YotI] RpD Rp}O?})Ϟ`oSg)Nݛb9r"a5XD' ZIfދVXmfm5c=$ȇ8OB1ɫv o RvkEt-N*_Jq%j.TF# ~ϟa>EҰ+䰍G[/M;VV?BIdbTL8ɝ39 n7#-n{L89M[ϱ?g ~ I}F 'vO(i@6&ecyі=mX99JswB( &}zEǣ͌ӡ@)XKt|$=9~HYmbf)>QLNN`nn~RO`z,16$/Y"%ψ>s6Ќ Ԥ>DC= z?6ac` %2a{tևgA kFwدzghǨQ7Go~C _`/" ϡW'j` EHIqYwX*|ǂ(Ur'$%56+=jC:V2ќ'+{Wthc]C,Lp_o !ŰDm{"R1I|K;=G; $S^pwe trxCIRu/f cR,K;݄-"'$w9P6/~t>  1Jj}IDCƲμ1_c1.xH˓1X6|xvo )K] RpW*=;$9{7Nl?.4i%`7*Nq,Ydɒ%K,Ydɒ%K7.w)K]"w)5/;cs;;[Q+ԋ}v-ۢnt>b:AIٔ*nK(dC^oI$beØEw!T@&9T j. OpW$`WTeb@;l:m>]]/:-e =n æJvk,q_ke0ҩJCIpW` ڸtYBB0Pd0$bرr8KsSw9Gcm<ם~%>c֠~;Bpw+ܝ-^n3za ]}DvCep_ދ;>=𵀱j=rya>bp¿Br뱱Q_XB횴_ྲE0?Ƹ}4%*)IA;%`5 ]A`kT/yGg%} -zKrhxǨF_%~탉י苽 R>ξGчCQgacEz [Ϲ-\q抢1[//S +֘RzOsv?rJr#D*S\~$D{JReqPϓ>O +r;'zϕƊᾙ4tX=|9}F(ݔ$eY5aoҏQ{hݏ`yXĺ)id#dg)wxrLpg(rK#1)l+ǚ>gRpܥF d-7PNݞMōb{ ϴZ?Qݵ~%w)˒%K,Ydɒ%K,YdzK Rp%RpW/+_}<⩚⾾)$Β*T~$'sBJ`8%NdNSuB>,LĿ@;ju h%ރvEjw2"ݏI2{p஥K${SJ?k.o>$K`i}L/N~iun}[ڭ1qׇvKl]/u^r;m&_gpXOH:@` 1/hΫc)xoۍ|ERO~_`}Z|Dw:̧ E[*969%[%'C\χ1Mcii++`gw'uE,yYpw[0VDԤD)%YpE9uo)}Ưqhs_zi>s4) M~G1tїp }Ws+ >>s0^%1 '8{2>f `19Dn 0+/a'/ׄ7[ќIf_ձҜMn_ihZm=*/FcQ@|c,6ܾZ.$>%>qn(I9>Svڧ(^2OvJK'.$_9IfWޔPr;I$5J~Uaoű1ʒv[pea^-5(Ƃ!2o$`qrY`ɋ {7v)Rpܥ.W.r=AR]9>Mr,Ydɒ%K,Ydɒ%K,YAJ Rp%Rp? W"p{'b{{˘8c.E֒5]ijR>X%;B`Sߣ $kIz\>AUH.WTe(YRͯӾYL,cڽif{U}bUumml6EgiߋwNmpWƘ~`7X|.GL(M񦉫]x{Al=E;^ FSb1oLAdpZ,SBܠz?Fl2A{-i01"֧ɤ8E ^N`_0*AcQ/GK oۍGM8_xBO)qb6~:u~48y9~.x&{A ʹb‹`~.:VoPs}bҍɩqNmdzUlnm`{w[=4] Z"f07R 4&6ZR#Е{苻܍` [8x|Sm !LC_[hs/"nUB}7=*zcs }QXn|g1}>Px>swד[ȼɍl?MphNoג5])wј/QY,dGQbzuX1N 98ފNP9}Ia $jz; u.uF ] 8o n`Oɩ$1ĸ!s0ĝ9؆h[m {uVL}l}y~5.WşC w)OݯBnIӛ(pv ӦCλ_Beɒ%K,Ydɒ%K,Yd%w)K] )Jp_KPMpXܟr88ގWr_eG]rqءSox٧ ֣t> ҚP&:R/ pjI~)>DQ0 N۩q:_ϔd}e ǣfOWg 8#qUO'[C0a8X~8#!: ##a/fOvuNj|5i0vY,%0;qܞ!m0;G>yt+#/4 Gyw_6C]tppoObMEu؏@c4Y,`mm [[C< :oྋ ,z0;;%Ӆq [\ԇhM@wJ8?n`+_=\Wጺ ㋰>< Ӄ` wc~?Eۨ(}Pv'8~[H艽Wd~NowMrs0'\hMD]LfSLe?tC>t"{JbXJ eqE`> J FsWphVv5}1Yf]4,ե0dfZ@ +vMd+m+Ji}iAJ! H/~9S dɒ%K,Ydɒ%K,YQ%w)K] )Kܕ/??wJo#;Ip$ONar̍Qr,;|)q{ zi8^48|Io82P-=>:` ~EhsCiSs,8uۂ]eGW#D B_Et8(IG,յeEnoAYjr=obѳiѷa -ɨK9*_p5s kΒ;Y#>!\ܻueE~Iz>kN%K޸0 \@y D 'ϐ> ̱`Opؓ:zSI$G,L>WEhP#;%SZ"v=OX#=d/KIb*X(lc\r;.Fs{Iԧp0)S صwKhHnrx=N}GrY/>QwMr NQ}-}Jz*r{yI'ik/.u@3b`0#Ĝeݘx Iwџt,u4 Jo_Rpܥ& _UzOܿ(&uJ'@}eH\|5Rp%K,Ydɒ%K,YdɒFܥ.w)K&uܕ/D ,3鋸C>I[[$y4'1=1q7&.p;GϏaL{Te\4AfK=4\zk ʲ6F}~6>micc '菞}"ȱ zÑ}p$t*771rciw0Htϊ*OLR{^$ 1WL X*'SR46<ؾRuiAHeS, QXDCr{YgIn3~G!Cype b(ŏrܮ7H{X.Ü@b{Q%bL10Nho+콇[SY߶}7o 0nZN>n1p4'e-6qgC1w˩.7\cpK1ǡd#iQ6v3>.;f[6:7Bzl㲿o{ckbo1qJszj6ɉq£xÇ}Hc!s>}*v.2kmԂEp7\ܵy!rЦܳ0; IDATh &=XH~h>ڐvTAsr sQ }~4jtH@[Q4tyl[agC/ )>Vr Dv) >03= df( pCq-Q &a?e:ۧSqL:rDK/W1nrJ\*/3%wd>Q0;o炻.3X(PY Oi.'֙D=E$Es{zCMr{:/n+K*hA +~g\ бP6)}؜[ /ޢh[F*fj {p},.o $N; YrekRnAQI뛅;[]ݕRtw[IpP( BP( BN; $$ Wq%O074faY ~9wۄ=ΚۺkoyP>ߑh%p:6&Ŷ GG$%Z/yߕ،؞&8{krf7ymZz^mge}ܝ`6m;[=7ߛ_LOr ko^߂Irq"+ r$1*'0e05΋q`b8zc|r}&=&Gsv3ONM(vN3xdBH-BO<{2+x:;+v+ 8& nu}cs{w8]$לGeEpơ-;H(1( f/=ݩHAC!\ڋ=ߋ#hICOa,z4.(80Ġ z(wܽV̥v<̂{hqɞו.t3z҂ћP 䆳P~AFA`HIty"O%ހ{gp|6&/J"3ke.|L^33xpo_Μr J7+h+}Toۿ% ~SsΙ'unPp"B[w>=-Ϟ+8'1͖\Ȑ./>,L*fyJrgK$S( BP( BPv|Hp'w b#-Rǎ퇣a?MO>m.?z!\#)=tfxd^l}>zlz<~vonwv.>"\f1;U;@^ZȬ>}_Ӷ ]bhȞ}j@ 4vK~}cjNZYcyy~_K֙]}lr =[~Lm6־]r%w xs>%CgĈza y{n$w{Jjq_KrȹO;BP( BP( eGwIp' Hprw%w sϟ,>[[{ƘӤ]?ϱCs<$ޏo1-$S( BP( BPvtHp'w žn .%ٓ_S1b$ x9eu Xb(΋g/ my!xijwK GB|eP݊W6YF Ƽ5lĺMr/LUq}w\6҉uۙg;Xƚͮdž?|oh? &rS}yܶ۝%o ccNzj (w$D;K*t{Bё cV 3`dp'? %<5.UK;{~{~ v[Ӽњꉖ$wh"p.- nh6GeĻE} ͱGЪqE[֠qVuXZbU}z!!\rO@g7x{>Z­㱸śOu'2N%W`1$O{g${f }|./Qe TqE)\*deܹnc0XRޔ(ו p!wv~iSr[IpP( BP( BN; $59F%wI U uNYw:t̫d8Zv%>7vxVYNlMA7Xx-]{\Hҥeغ߾Z͛WbmG߾~w߭oY}yq\΀'h_?{.Zw722:پ3~}ٌԾS_~or \pn+!'Asca̍BO^4%z^Nvّpt0%ɝn8 L`$D"z52 Ƃh!s#`E[fޞ4O9 .hҸ@jqGG{1n7>r?~:|[,)z@1{Ò7!weH-V{q$nDFihA)WFy #ejFƓKV;op/c#Q,@_!ooFWN;Lr;o66^GKu۰]`4$s m'm7V\l.wvdGc=PXTs q.wǵD/T*' 2[} `#$vIp'wܿi1c-V$/ŝw BP( BP(ʎ $N;AuJ]5-e vy߼\vȡLMf%Coo &Q{-a֑̺ւ#˼5[Fk^S,aj?{ux\o3x%x3cxѹf^5mO$;WpoB_q]sƠ#/=6ۣ`̋`=7]:C]8S0[NhSo; ٺ#a3.Kw4&CcQokw4b{}!ԩ!z46w.悻-ژ& Gfܥw+} p cxPI4FJb1R%j3RpLpt*&&gfb\6f.Qe1WH<\?2%Dho=o2_!Q o Ea-FO^:ўcnnr{C<ӸBrߌ>r2mɝCejk=Ouq{ Ul^xv_'j}p=׳BPSsVwa-Ip'wIpv#}j1H>d;k>$w/6*w) BP( BP(;:$N; A 87N™qp۽oV!aaa~~ Xx@4!n[{rjlfޭ>{myEv<q$.n5k;qopy~|$lݻU; =sn9c^W+[3N%ߖs/1qsc}ݡҟh(Bcn"ZlIp̏B{n$ta,AKc/Cq5Oj0 {\,CGQܹ ߞ Cf2{InhCuQQ5PWvcA4ecYuM1W!DhQBtζ%L ѽ/?, #.Pa׍b[ej.('`dN:9/vy= c.jormåQRS{Q?d,9 vvLFv|4/SX'1>h`h0煡0yK{Cqd2nJ ;vl7ؾcH`ۋT_h6jwTEÕȃqW*"'y:U)IBwY<9^gV[^,pɝK$IX $69vh5sss8$ǜzZ_\_KN;BP( BP( $N;Au kbk5nG,f^bۉ+ k,S, oyl8q9˫XZX,^' _.< ='7Ď}yyE' }_!O}|ct_=\4%Y *sŰB[nZ]/!vqB#?jv YFGq,pCЖO. )hNt+7%6j"6|Fun!sѝKr{S},VrMAIr D_n zЗ 1C1pDFaDQFTѸYcviLJ縉:\p'$wrs$(Wa,C%&0Ij21h0"gv.qֲ1n`PƄEKQR<^hKAGV {~hf/@YH;KS0g)qnyJATF8W\xz'jy{z#x:x=3?}exXIp\$?\֓/\(K7I8LWJsHjq'BP( BP( C; $N$;_3zX#YR҂6;f*V<6J!!K_y/8ker#ל͍/,,a9$o^p89h*fO7b,fދ׊;C; $N޾.m۹XKgρ,۶JnErT-$S( BP( BPvtHp'w /[pߊtF4A//׍ܗHp'wܿf&&1ݎ GK^2t$ơX52. >Yp?lq(E{Q4 0C }ft~BpoMFKYn@p_lxE IDAT$ܻ2ޝ鋞,? } b0+#!Αjf$7a o q<4{2e:&H: Q6\lQ# YEOEno3!O.7%?;vsho@bևkpT۹~L%.oI3 %-mAhMGC\P}ø{ hHAC΋vda\_,r*}E $NW(j}Vz?#q$zD Gz-[:IpP( BP( B|s!wIp'wNr4A=J_"wIp'-L a=;mޝB_A,0P" }'$TV jn,U0 mylagCo}К-\ܾ9W!oUp{A!;xޓ-Aq e`8+D`3C Ifqn8>[5q27ٸqF(H$ ! ^EwN*]hoq&>YS=ў H8D-,-}L";"ў9$_k<^GQqCs/hbԧGJd 7}~VvM} $N; _|{=3N" y~֒ܿw) BP( BP(;:$ N; $ $7!owIpܿHIp[yւ{~ T)E_0x*CS1p*$ޓ!+q*XCAu!e@njnOBK'\ck{,KEr?W1i]f=Mcp}(3PП@>ZQQRk>\HIaBЛlz6F5ւK[G!nlGٜ:f'lp,COA:sa fs쇦Do{: U1GQvAc'Z2њԧs0 yg K5b! 2$Q;EpO; _gsۓjoo8NbZ7*w) BP( BP(;6!ćC;$߲5 wv]Z ドe+_l}ݰ%w[2vX=/smw38XXّ,:`s7^B|wg #+0{r.3͂gsx4 9/AwhSƅ*tŢ$弡=& !'D`!b #E) CE[p^<P '+p]h>-nhx J]gk1s17m8a} ~_'n5zy5=ry w]Xߪn.Gnm. wz{{GrO&mPS<{}~;?O5^|n֓yR[IpP( BP( BlͿ+Hp'ɝw u'º [枠eo.$/ڮ9:/C&=( Uh/,\`O{DnLOY,aDQBgI4y{{^t9!h.i&=D7r=Tq=r#2W\ ,W ɝ[Wpo`3\ro4]hO1S]Б47t%+~åw.s3  n0jї상T?kE0 cp r" 0\.+li'{@˿@`?%wMВ[]aHD{:z{BWX y>S͒3pa{ ab{[F0_?{& ^OFc/ifAm " NV[bˋ X?=VYJQ6ߗo,ߢn/$/Qp߮v{Yn<{ e$vow_X|1sH/>w<9ZIpP( BP( B숐N; $ $$N;AN-?#OOۊUh+<]-{Oy4,Gg]Kb*DF8#۳.To +72-5Q^[C= ߇h>i.sɽUsHݓ˜삎DW!+ewߜN<НiE/wG 䇡?A@W:}Wa5^s5E,7r}?{[0tv.g;/=+咻'pT%=X!w ]'1)~Bloaܚ [VXhK}$&۵X|8_ߋ?N; $ۂVv{oIDy?O1v|u) BP( BP(;.$N; A) _U=A; $_|/NU]A۩bAo܋/'0p2 e,QCgq #ZۋQv!/ 3voxDw4j My_7 .fתk{/ >Bnߚv {ڸhQ>ڸ>~Ӯ.0dŲ\]7xc 3Cy.r{BnA{j ixTGEUn~[jrwhqO-hKBљH`yڇ'b](Ӡ8}*!2ђ'&9-~hMgAV(tlr#͉FS4ܨّ=7޼;:k $NW$[ko'ԃ.hďmǏϑm#}-[7N;BP( BP( eGwIp' Hp' Hpw/?,9z@N; V#>CpԾ^"+R5:b`,BGa8h6S{{kZR⢽͡h#۶ ]DrڣIlApc{AB+6G؏wYloaFDDBh=v=`^#*v/WKpl|*C5[$l&Ah5lܡOB[/3БptGP$Ƌ-AoAy{{3}hf.|\kh)IBۙ(>?o_;\Hp'wIp8ݙHptGO@nzc?)Ɛϕ,;ܕvNP( BP( BC; $N$N$]r;  $13?O1|w) BP( BP(;"$N; AܹhB=A'?+&6A)c $ }3Ocjffs{ABrA;XHel!ha2tYf%Mۛјj%7%YݵVתS¶!}:v&VQȽhڹĖ"yO ޅkB~A [>uz7ͱ+yk{ghnHFGhp7Dkj-WT EPŗXrZ5.Bn79jK6 37yȏDg~D^:0!2O6 O4'Ayy*tX$D0Yُŧfp}Q $N; قhoo$b6gS#Z?Fp߮w) BP( BP(;"$N; AWLsLcܝ!NN&4 sd)>}193ள /R6wCخ2-wC~ZВޒk۽Дv74pvb[s.:g=z/jXQ%b!l*/Λkw?#j lٖAs 4 i/ǹnH![5nhQBQuuчp=t*w jZ$7D-ڸV6|\7 ~0f ݘȍ`DJD=+mhKTD2Kjtj0%PSx7x>qKOa {xgWj'wIpIv}]=M{!ܝO5|l[ܕs)ZIpP( BP( B|!wIp'Ip'Ip' Rpu5/z- .ۑh GK? 41,7r= Bpr{CQs*=Zq\f#ampnKm/1.QܫXE-{-Ǜߵl_ GaHv.mi$X1cBl4FAmTՀzeBr{}= i~h1; 9pF`iХd?h| `1ȏGgA: `,J8r0Pyw;06_be {A; $Nv v|2)wn;[7w BP( BP(7Ip'w G# Hp'ߛ$o,vc-۸;4n!+CKa:t%"MD0YpoN6 MhP܅.w~fܹ^kv a\I\rɽ&\| [Qw sZvl`gOo9cBjo:,<}*Wm׹=bZ܅O>mi0 CVڲBa!ЧAInoNASlhor{Wa:Ƣ$SG!n^z|o[ N; _ەQ%g{ $;1r,9jqsn+;ܕzw) BP( BP(;"$N; AlO; A;  $ig<~&oZ$U!9^oG ,b,CL42&ޔ)ەr.KIpX5wA̡u_Q**C~µY"]I=x헽,ۣ{!ֆF}^EGfTqrev.\݋KߏBn?. ܫC~E]>4ɂ;$7ONH>hK># F0t!\nO @Kɾfe t䆣 J]jtZdKSy+17>s%.#/-/RHp'w7);O*d|~w) BP( BP(dHp'w Hp:#Hp'+_쳧x<=Դ$OL`LUWL$穡˵:3E57=0PTo4K4y9E\QbcQ3Jݪ]!+eYjȏ?"Pɏ J] %Au._/bzL4bƵ0o`8`%E\ ލ ~?8/qiK가7q-d&K.t?FZђ$h*O 1+y*DW~4EW]E$tux=}/g+'$N; $o]pߟ*rRpRpUN|sܕ-s`w{;  BP( BP(Ip'w Gs AlKZElMp_X8$K>{٧f}ܻw\p3ћpc-:mqQ0EBυv%\n g)5mҼѐd$6 hLr{]1EM!4wNUФq++e]HRꀕoDõ= BnW73W,һ,r{%{-rz|+>_^+.q =*g.k~= kEm>4DIb{M~Tef }=dUq@,_y=WBjs? -K-$d/hSќ mIlgw.)\tٹёtD0]*tš$])-=g0Rw}roeƊt,% $N)og [moikwmoWOvYp?0DǓϡ,˒<|jq= FwG;  BP( BP(Ip'w l}e;d jd'}\6z)ѓǫ1ݼAhu$窡ω.K2h5b"فf1 \nOrWh\ѐ&jL{]QoPH%w!7%Hvw=Fp> ЯGm蕡H{\~.!K.Wb;_-{U}pi,3.(v9+0݇]ys{mv}ۯ'!s]? &ccs1!kݡM4 )㷓О.. "wF8ejtLEX1]5foa,u3$N; ;GpwV{;])M^xa~O.c=Tmq';};w BP( BP(ʎ $N;A$A _,}'x2Į>[064zt^ڒ A- hɑpf1B!`!sZAc'MjԮqr{d( = IDAT7V[܏ ]q1A]])oVp-?)E@.vWLm\jQܭ$w. 22g!+;_qBp?/˹Έ+Oja69 $hS$m_A ~&BpD'K&:$\ TtK1݄7j+ ؿIp'wIpwYjV ܷ!cL\:jqW $S( BP( BP(N $N;A|ؓ@B;A_ ANvH;Qp>>۷0>߯Wnõ_W%upSa&l>4l=И ^hHhaHB;WhgI Y \t\9#FXZ|,;Qp_"-wIpy+]E3umS> mqwnOr'BP( BP( C; $N$N A; ;Up wd]?\m^x ap5ujd]о^3ms^#/z[pܯ D_ܯ8"Ae/ QB-S/&y@6Ν&c<g@'C^8H@oП͇X~77|=? $N; /o])K^xa%?}}$oC>ǘs۶˂J$S( BP( BPN; $ $A;ANN?y s}- Bs 5Ơ#? zn[ mfv.sҽ-{jp]긣Ž. &aWpW[%pJKfKb{~^W4W+] ]ٿ[EႷv.w8Ҟ䮔yHb̜7l($ Z^\ ރ_-;[2_%̂{e&زTu6}u1ǩsAmjPyDPu1{LD`%30D4'? =ٻCX|^ׁwXb߯e;$N; ;Bpߎ6*39̬>=yDlܷ >J]<'!=e'BP( BP( cC; $N$N kkK?Gw>mܹ#F1֌+gP)wܣ[ewnGpK'Ӹ , .aڕһZGè=$v{pUQh%gוsJϸ. >w%K἗$+QJYKy/g] aWEnϱ5q߂?۷j$WAenvlٱjTB%[W.($w y|]U{Qעb cUp5l?ۗݸJ~<6OqhN6s5;Be 0C:wٿbyeI/2%R; $N; _|"sssI1ܷ)k\s,Ksw BP( BP( ʼn!wIp'NIp'OzFN; *?yǏՂ[7~ЂBpo.H.7QP34g9ӟa#gX ~ IOpCMfԮxVw$F]AԪ]v._ YBWRRl8 g=e%M*Lr;ڕpYre﬐ei^)J}=$BE$sΩ ރ=fׯ*DwΞ/J.!EU~TE@UATIDDJ\؃s\ޏCɽQㅖTB }N"^ cY"ڎx7Wlro_<`?/~Qjn_y 7$N; $o3%ҲőߛpL!}ƕϩ0}Btcy,_`ț݃~H{QiܫcݾBR>\ >#Q>ϫ;li D{N^,sx4ډogٿ_b"cao,-^>`i= $N; Qp_}ԓ&a྽uV;  BP( BP(o:$Nr; A) AN; $)!n@m% ]6o].KHrvNurB\m9wྲྀ~L yVpv~?_p;+~ Yp7$HQ1}~=t]%+q5l*"wA Cuע*s .uG}_-t_!CЖC~ڋ48? 1z sC{a++{,eH; $N үwĬ|o"sssP}ܷ1sl9s-Ky pnwsw BP( BP(ʎ $N;ApvJK_XHķ#ӗbHpdU $oDpWc['&&0vbړ%Cmz8afZ ڌM mpWR{{-c.fkܾ^ W~%%pI ?-]_~, sd߶ܹnOpev.r,ɝ=ߖK6 $/ lw5(.[h:uAˁp1'\6 WzZ GQ.ujwyD]A?B< $_ 9!v94pωYإȏ_"[Woݲ$uΓ׺S-iP=T=b2ՇnY}뵉 Nn#pL汕s+9 2p#wwaaaawwwe YeYww=-~6 $zg4*v{ef^ p}S֠eCwī pYEn?١swٍ3pnL 8\M.M [Ī+{x~zq6NҠMƚRu,rDf-@z~P/߄kT2}&`fz>iRf8wĢD܃ڂlX<:_{:߾5,[D&{f~b_o'pL汕s +V aaaaG Yw%pgYe ܧ+pommEkS'p?14p+kj 7}-nG/FaB0C>Y .lr|q}wvo~hr?ڳ'tk>֠~DvT}F QK<_ 5p{N:KPk-~9u \ܬ `4Ը-#UwĠ-؛k}?>t?WeO^p}3ACvwwww=QG %py}3VXᐻ2;0 0 0 0 N%pgYweY}:ݽUe&pDWnc%Fion_@z{"s|rEv\<?? l\ Mƥktp}(>rוUy_Uj~rG8e[ m+ 蟫q{NCE{ky"' s}!Ǫ nOC:wr֠"m^gV qK.6p{ef*wġD8~yX{ // /;? /10Ѓ~^ r7KNNOun 5g&ʹ󡀻aaaaa ,;No!˲,;uo3poppXwAFܽ{GG ף48q!஁TR7p4pwt:W{q2s]p=ҽޮqz dn57Spӫ=qB6>'?08vNBG9a7OpFۃmn.rv^m}ɚee_Uz"m:J{ufsCj]yTeEjG *v&7vJߎ>/z{?n߀FBC{;bwww%]^ M>c+VP] 0 0 0 0 3!p'p'pg w xYe>W?|;'npMZߨ q.TI¥ *#UP1Wu%)kPjwޞqKm=աY.nu>-n {Ծ.3vG>c ۏ܃fl\l tsU"?zW.AaR.-P64lKy@P/q{޾VWs|)3;6jGj% U깲#ջlw" 'k[Kf00Љ~vwU(~! p'p'p'pxd_waaaa,;;˲,K>)]#MMhhyw=ޛ=[PYa%B[8ɽ>pw.]>zpݵ0[=hF6>uۑ±ƒ,3 ԾaNQuy"py_ ̅ p^hB;n\a\E-v?/n,;ZsMV jvzgjn͎\VϕRǡf6T|ߢϟ<2p{o7u-cC܇XgϞy}!w 1ylځaaaay'BNN,˲,;;T܌註[W$׏}}7U5pwf#wAԵ&n_nKnCq2.P@]s ޮ{/^o^lW=~[ׇC#+˥W_O35p?Ig82>׸ f׿ gUm_o{nb߸}Jz/q{;6ff|Kpyg$ЭΈBeV57t!SAqz\  >z{]=j1rd]]p?eI?qr₁qy&\r3 սQ2W՝hGŞT\;y S tq\}/, ǿ 0 0 0 0 3!p'p'pg YwweY}*ģ+{jgW>ܝ7p{}9b 6Cܸ\, fjT۽pKÍYݾnX^m_a{z8Z?2ӛL\ s#|s]aQ jZDnn-~]`cZr{:5Y#Wv!7ƾ8\k 2 IDATqmG.gF*+;ܛl^+^twze pM>T-;0 0 0 0 L@ YweY}߾cyUN>} k5s$jۅQ; {E&@ ܝ7‘^hʼnݸ}kY|$.=?|>!'tgB եg}Qo~vG8j7 YTOtAp?dv䮗Mg|>c߳@G۵~<@=nYo1z!t^pU&/z.=n%m;nϷ\{]gpX\Ѹ=2Q%i9_?z~U=>{zLno({%p'p'p'p'p}o83yl3 0 0 0 0%pgYeY}{X/O? Fx [msWų|h.=[Q# ܳB 3cj0*os{P%ɲ.%v.=ۀ B?C~u,ձܞXcvA |Knxz{oޭAw\U Wϗ88woÍWGكJNNzMb[c&ʹw3 0 0 0 0%pgYeY%p'p'p--hihD{]ޫCǍxPRgwF}Q}=#]X?bxr@؋Pw$.nnv l} nSk>IUYo.kG|,[ݪ  vWpxW+s#( /ѨKvYuϓ_z]yrnE+۶'pھ2ukAKy -9 ь=Հ MӠ}}:1yl3 0 0 0 0%pgYeY%p'p'pѣG@kk+ZQZw.Dw;P/|(Ӹ} ܋WH@u2v /v1w;n?wMn ^?ġFҋVeݪ@CRuIU<XǮzna{AmkPN rVgvP Qиl{ʳػ 7ģ+xS/{=0_Oum>AMh۔Y<yLFd[9 0 0 0 0 3!p'p'pg YeYe ܧ;poilD[C:v.Z.W~YT~}[}M(Mܾz'pZ+P qKQۗ /M, >sp@悻^m_Nz_v\5prQU_]n;f"#q~ǭ҃vnUqBNy%w]d[r)=n:'zԵ꼮ւ/^=UQpfD-(ߟ\t}?>Nj~4'p'p'pg ܧpinWr~F%_[x䱍ٸm][ƙA-.=/ onnPݼnn!wU>AUs]/+pێzt݇8cWSs\B|\X{:V=>n]ۋS֠,m+wgZ(ˈBx+ wO=߫WoG,ANNN>{ ]}4e_Pym/v;:c+v"2;0 0 0 0 N%pg71fYepeW!pn755Yz2>or #35n.Oو䵪kt˓WR]޷)ƚ{Q mYez=ܪ{).y rOt/ v~r]=nYw](^o ,Nv샐ɫyh8#UAqz\ DvFF` ,Qa9JWX(ݶinnw߰hEF؍(LD8IBhtf'sW^tgC50: [M|㎧Sz=k GS5:Ew5kz Fd[9]n'pgaaaa1 ;;;K,˲o;p@ܟ~?qP.M.]cv ɂXԟ8bw _='re9?a%\n[u23ܧ$-;b6/w|~wSW}_x^|qwwɥxYUw~A>|N_V1&u\Z}(n3 0 0 0 0%pg YeYww?{̵?юֶV467 r:jJpATLG88wñC5+L pl z}8^u9 {/F~ܡ{,n3?=*].ږݎ܏|/;nY>1zd`ȮzXjbwyzesXp,ǽhvޯ+#;j屌6u\waaaay,;;˲,KNN6wk5O>Xq!܂F44֣:p3gh^+;3CQ}0p/OYr>z^dF6 lvYm?#^gOU v m.] NQ]1Yf 7]O} 5;ܣ(ҤUힸ}iu{Uf;saWz$N1X{ //z!/?SKԿE~p^zyw+ j׭5kj&9>nU 0 0 0 0̴ ;;;K,˲[짟~ގƦf?h@Ӄ:F *<#(/P#p8}3iPdp.F#?sCvsA4n l?C\cV@prz^ #wYv?Ҭܮ/[w8>Wo8f}}xJzH}p@U`83`G4*Jƕq[Ws葿CccFܽ_^V.VU:dW9vnw;0 0 0 0 k>b%rgYvq;;˲,;^7!X?{}A>7W^˂?Zp:؂4գ.Zn^½<%_mE1( GfCL g%GyZ/n_mRW zȏܾP69<1WXo?%k>4ҥx]z\PN޸Ͽ\ e3SW4whqt? kV_o8޶\?b}| q ڍz#w.pwYɏ_bs,y[7Fip߀JiF TdlFEf3Q;F]o=?K=_=ѩ7#/>_ǤC p'p'p'p5pj}8.zD2{BoU_ps~L pWRΩ/n=^Cwaaaa1CW\|'Bgw,˲,W '{/{{w$#_~E# z mhkFh-"\:5J'X툁#3 ap{y4n_m+P,}'l_Ů| l]5sy Oqa.n{Uu60wZow- `Wn7Ϡ |h?5n?o8zxq=9tr ~| ݣ.O4n?S<ّ Tx]`^t7j1KMĕ.^f r^@P!Mۨ&83ߡ;\=u\Az^AQUeV}=WؾF(O?}Iv$p$ֽݞޗStGjk>r_Xc8r.ʹwz/n3 0 0 0 0+e YeYmϞ=sa{{c;Z[z 54_sC(?=(͊## JǶS‘b!z2&.Ep{nF~ܨ\͋lnՀ6Wݕrf<ܭv ؿ`OorTcax;?^cNڻ#'L~|LڭZ]τՐ]{Nu{7pȒR-rUnwz!<+ [Q7G~q1~mhAR^ct/=c ܧpW派}*f2Kz;;0 0 0 0 Ìs YeYe v>&mhmFZ޽5]t vxVd‘KY`B;C#wۗ2v!7zȉ\W`{NgiV9 Tv޾i&puw?6ѻՏu3t-|׫ݒi.k]0c5l_gי^ }~*p> 'f^l^mqy n7w!w_B|u?9 CwAP\o^v92P+_m]q,:^C?῿tv}x)}hF=oCNNpGwonwЏڟC&ʹw|ہ7nS9<n'pgaaaaM YeYe fna{{[ڛ-h_{wqj٨9%_%dgѨH\0V+6z ܍w'-G%KXdv\]`gG~+=;|\9FTCݸ]z{rƙgAFҿ[s[vn3&l׵}mygi3f~{:hFl= bnB3Yh֢q|u-sȽ8Y]n[^wgZ ҂QοsOB呯Q_V_ #/ͥvAӕ^'p'p'p'p'p+{Vc uɡ;?ך)Pxw!;0 0 0 0 Ø!p'p'p'pgYwweY%p'pmڨ.VuUꅃ(:;4p+;"q)3 CPi pAy*%8q[n>ma4{w_Xto\@w K^.-nwq͵oP)hM٪UoѠݹ]zv⽅܍w[,Ѹ a{4uBP W:NBGx/zkv B}u7r.]: is>r\9w;n z'pgaaaam YeYe ܧpR- =zY-RwmoJ9n@7(H83Q0To)kP~(NZĥ%HX/p׍su5t!M3z\4 ?Qٍ3p&`ݽܮ [3'|c+?ҿ#z|`yƚLwgI';GwC .h=; cF/Rx:-$FmPA sj0BP]ؿ jSKJNN>0K~xtAєis>r#3 0 0 0 00!p'p'p'pgYwweY%p'pN~?m&roCKc#kvZnTn9|=( GͨPToڙՃxro1* 7pD6. kwA3q&p^C5e81Nm7~<h ]\r?W͏୏/ vFzG4.>n۽qwe]k~b [Vh.}0n_[F;gz U7aԩqyz8J2cQvT܇+gOr ~{؁?@z>[Qwx}je p'p'p?Z9 IDAT{.]o4m5QΝC;pγ[yn3 0 0 0 0e YeYmhiiAh[5[v3Qo+JvE\`gX=m(OY2;pOt+t\ہl T绐5wy8CW.~:`'7|S>ra* [Zm?L]ct.> TNMT k FۗcT2AV?pKk݂rYV/)T:#XWpdFe"jSGq?5<@?kkvo  F^(H{~]>_~E6wiӭߦϵ&ʹs(Uz3 0 0 0 0&,KNβ,˲popٳA~@[[;ZZ[U7͵z ;sQvx'J'lw4;Q 7=IƂn2p%,GAR2 9^]0|'yk]лwh Bg75G,\dP4`k݀l=I]묷//X]ۭvk$y5JR֠4e-SÙ+7i^}j*Tǡb6M<'޾Apu}J7Awy]~`˽IAӏ{D;9grnGzaaaayBNNNβ,˲,.ׅo'pw v -mhnmAcS<@s}޽ۍoSPTl ˒d-| ہkYn_p.]*O+] ܽ=MԮ r^n WۥۭZ]-.}w ֣Vz2֊ҎIVd5"Iom/}Fϩ:frάv [ܭ<' zn3 0 0 0 0:,KNβ,˲o+pѨ{GZچf:w@7}uhPuF ܽ_Hkۉ۽z47~B~NMseGϣO7n.7aaaaiwwww}"49;˲,Npc(J>,@&뚲9ponk7{+y!?s?gΏ^jWkc\ :q %Fq:$GIv (ܺzV D#D؍+gSBow'z岷{Pܧ"}bVG]qV$#l_o#>q9nܭ/υZo܇z3 0 0 0 0&,;;;˲,G { w9qyegDၭ(=p c&r7\\ }ln!7j۽?٥>AٺkCTgn< ">׸ r^ m]-xw w(ov7p/NZ (I6`uK҂P3E_'P:K6tj}=ݺsXVܟ={6hVCbm}0x}9Gr._u}h aaaaiwwwweYe5ot,9+]P\GHK/x׎ڋ,ו~Ƃ%S](N P Dɶ mB:%Pz 3q .^!& ۿ5wo>܊u쯸|ϯ'fpz 0 0 0 0 38,;;;˲,˾K\v'p;n1 Yv.+=:Lfp qJ1.Dٱ(p3#pw#e-&pOS]>$p { 7$r^q?06 ܥݸR{lRC#L/++s#͋l 6nvuP].1ٗYn]bY7[(UJp_¤u(Lޠ@ mFyfP7#=7JOտ. R{!/NNNNN>v?+>AO{[믱<>ׯ#f*vwaaaafڄ%p'p'pgYeYwi;:ކVpoD݃z޿ۗPW q|' oEh #373i%ʓ .ݎ}ɨ 'r UnAw;p\n7`7n/ T9>  ً▢8~nvM]n߲|%@q-J WP}&nGXF׉p؅%} tѺCNNNN>Y?íj!\bs _uaaaa6!p'p'p'pg YeY}wӧO5r =zvQAsV;5hĭ3:_ pH83C GziܶΔ5'Diڷ,W]RŲ8X'Vmp.-n?Ņٺ~؍%ws]ڗ-,7rWb'5l=J`P Uc~/ c]~D/]P$=ߣEI+]^Zp^-ũ(ˌco"$`&jYgO1 z~C_SnhY {}}},bx[]~Sr.X}" aaaaf,˲,KN>.h؆f45AKjQ[oe4ޮ]g6j}P7/ #c3Apm@E pA`',Cj*yRZwx%w-r!'ԽƂ.gc}QuOVkar > c @ n/xWܷx%؞rbYnO AIzvu*J@S~?A篏t?TDowǍ{}K^%p'p'pZ?O>V'."s1 aaaaw:,;;;˲,O[ބ^z:!._?"pgYeYwV ܟ>}~xGmhhFS[u{PP*֠RnGš:1 3#p"Ձ/ <ܳC@cO Ȯz1ϪRruXwk]Ls13U./ԟw> cY'pW{V^hkQM(OQ0XNA7;qU{{ewwww)izcb< [W,~vBI{ ]j?޸}*3 0 0 0 0&,Dο ,˲,;t` 6u4 - k2{m߻滗p wϠT~ =qg܃PT'drc\ɽ:$v7WHcȏRy&t ~lR޶u U;v-nWBlD,] v/FA܇[Pu%& p_{ij yCeV4;Q/ _ftܾ?|ۻ ܧ#^Bc܇Cí[k:s W{9v.Pc ܇{3 0 0 0 0.,;;;˲,.ܿ{WwQ]*#U(KȽt $,GIAV}Vd h~j6Wv%Q ݥb~|h|ws> W rhbw^`;>p7:pOCWrOY@o gV8*wƪd!_r&=?wvwwww\qn]k_dOTX1\9n:o> 0 0 0 0̴ ϳg YeY?B'kz[^7pۭeM YP̾:*^ux:jUVy6._?;6hLY G*.Ƚ<e[\c(nf.5$Ѐ|fLѣH!7lrBz47ԍ[>'\W-W`.BF EUH]_ܨȉ\U ; Bvw\}}rCAKQ}33Q+e<#}@,wShjyFap0Ơ/Ln{P%p'p'p+#!Wb/vU9֣SeaaaayB>= Y"wS ˲,˾uDpԎĬ A}ԛ+wW359Qy8} {ضK܍$܍ BcTp7ƨݡ{Vd'#W:;8LbT߇+]^xg\_.i'B1pܭ1n 0 0 0 0̴ ;;;K,˲,QԀE]]߻7*q*H})5rM{K,uvm޷Woc2'6YwYx4jq%"Y޳Cმnn|]7n!Tv% mBpCd8͒t_~EOgzj.INNNN>&񶭸[wg|BmT9Cvv{> 0 0 0 0̴ ;;;Kξ)P{M YeY%pBbO'OvwMͨonD}ܯ{wo WjIT- +Ū% . =qfV>2(֋_0jzu=z_GG~ }sn/[Ѻ {֕N\i߶ۃP; <'z1:> ]sWp{7;;;;\qF^ߌWdq嘾.n'kaaaa!p'p'pg S%nkNβ,˲,wkɓq;Zޢ& ݻ;ok{ jp DpfiܶNu'#I5[tjyruR/.^ }X$nJbUy[KcV cxoc}4~! }0ލֽ`nuUV {*&A^ pC95.[z2z3{wwwwۺncM3r/\rv9#v9G޸mYo'pgaaaaM Ywv*~X,˲,K>z_E }Y.WceP:pnaދ/z%ȼ>2pwAX7p\9.&,Dž-u%ryݶ@wusV(2umWf+k窝=˂wsZ[Od'p'p'pg : onmBޯcf߽{È_c&[޸]j?G#v Zo'pgaaaaM Yw?t,˲,;RpoC[[+[ZԌܻwnĭW ~*spר9=ѨpTd=m=PmFz]U(} ݋pF^nUU]`ZfRQm%SV1׀\nUKVW$ nhYK,AQbn_/ٺ[<]bR2yF{QesL~1arM^@ GDT&z~~٫qoާ3zܮ{?;;;;xlbW܇Co[[@=QVpt8>VߠZo'pgaaaaM YwG LJ!*_%p'pgYeYw whކV44u{WVܯjܽVKyq\9q;3 GwCU٫lخkоU\N[5ٶkh,W{Wn]*y\DRz>n)Jb{Q`^u^q^o[qWo[-_Lxr%,}v;pCw ' tϏ_\YnWOp{^Zz{0Jv]*Mk{#R.7n{ ܧ&^Պd"wyMsv*HTN0 0 0 0 ü!p'p'pg 9t|[}.=#~n.eYe ?~}zܫ;wnέKw݁W p;D-Q4WV$ ؍vR~ [0^nWew W݅,ؾŲX/.AknvW r%,p/J0pwcːkV}|NܞyP=E;BQ72p ^C?)۳=CF,;;>xÛ w뵍 ؖVdQ96qC9c۽8&zaaaa6!p'p'pg w pjp ]c;vP V *waYeY---hljF}C~=ܽwwn_ƽ\;Gq.TH8e#6{F۶ܿ}zs{1nf ( X bA }u &&fcc0$OqWp|2}Ԟ'89l؇NVere'n~m]7]E_e912:ݏF[? ]r%k+p{?P}OT'jZW@mQB h.KAL4c`~ch=n!/8F'N;w?į4}=:=wcP{F=:~ Mo'NP( BP( B5!N;;o㧹otGv` 66kPTB2m ST*Jn?.o W(p8Ű و!a0h1k`W#ϠyV4ܾƌO9p? uaUJ'sڿYmaUqH䮀(\4֣9n]oQ|ǃx7OqǠ ׵D[o%;o+oM'w>=\gCؾ)p?Q7oA]^Բֱ?huנުg3#8׏e}7?pH;wܷuaSwc 1N3_Zׄ6Qؾ=ܾ) BP( BP(& pp'ྒྷ}9=Wy9 ]/2䐤4 b_$H2( !|}Xe@vsNvH[c{;ERTOdPppL>eô͊ ccc`xqC 0C MUyuwsД9Вu іq cPf=u GLko?rCqM7CG~tNdQ?=~{l{ +5C@tuG=hOaIfυ-mb;[WGn*sV=DG|-9YAM7@?P_^olZ:~?fx7?Q}/$AͽO݃h=BgU׏0ӎ%Kn,1ay}q?0biop'Ng9G#'~~㪭 c!w^eLl_3ڣçp;-7QܞVw BP( BP(ʮwܩ o9b]7C;.E{@w&yJ%?B}" yX!V}'&ȝ;JR? pp)nmb)fs`PomC'hh̹3h: UU~iYAvmЖ=s΁~o'sHO@.vx.'{ gDOt rS=+C]) t\ǿ.ѽt%ڐpWZ{ tI n7jEm>܇}h`ϯ98Z/$E7TafcA$p{5!N;wsyOk_ktj;opvopP( BP( Bp'NJ!Pˑ&NC  &p,ˬ끻$c=()e F5((eX?zB~>}="NJRTnĤ&l8A 탮&{|$!W|{KƉpoM; CQ9oS#_۷ܣ3'kmȝ7Ubb{6́ҿpo''VA!k{Pw}nGhH>h>hhsrp!}/_ N;_okOAb#iM~g>HT)FԧHS!)lr1*ήv1~R!ҏ1 n. oa@Xc[,=$Eߧk{*} p);' n7ݍ6T$ Op{n=;BP( BP( eׄ;wTP' 'dEв UZwYe>@YY%;Ҍ,)^ByCK.^$o ͐NppRT*JW3}rS/U{kOFqtfa=Cb{~1=7끻XM`&(ܕuD;2gCiSܾ/V؏֔?ܣSΗuU b帽^F&szx {#9ngIBB;w) n{?j/|XzXq{p8lS&XXG L"!`43+}}#pRT*;ogggwmp׶6(MyWʽM{Wp{ZsܾO k pJ5=zC>(n@ʴv1}_+#= Dѽ.wez*2SƟྊ/]SiܺݕF}^r iDKY]^.4oaJn@܃2eT s;=}s}/Unq@v n ?7s*l}+}'pVL@BP( BP( +B;w*_4Z*Ǝ?#NŞ'IX!"v!uceaY ${Y}JϪp}>n.v;ygMMgUvVycv+$Bf+Q p Yaq/-C !c"]6%~wT*Jp'퀻GNψ'0=a8F,pWMW'*hߡY9T9h-U%fAk8~'ЕqNoO݇퉸}rpޓqHTɖY>H99z]>">nw5;"S<o`J=(߿:]=1ޜW GېzMj(u5*/&AԥFcQ4׽y^, OJo¼eA>1wʏJ~kq ppLq ooܣJ[9RYQxFP;{ls)oj#ܾol^}3NBP( BP( kC;w*_o#K஠ YC|Z׋ۍВ !!͊ v/bŻn"(!K(~~sLkgDqqȬ 4?%<#&ᛞȝ?Ϡ? 9W*"NJRTۧ>e8Fu Uh^yPL'ƚz-vG{;kG*p*rwwAOat7kQx2vfZ󵵥J=QސG\Ƥ'֦{EnC.^ez nO>#bz{CI4\@kMUA!Fٰ+ aBZ"N;w Lqsy{3\v5hPxT` }3= 㿆`;o7;BP( BP( eW;wT $!+A`a=K t8 !L?ecP:cBpa!n'^~'>et;n76M Xly A(#X<8 o Mz%_?*Im#wT*Jp'i&>2&yrB[~Jwu1@[2]H?_2}=C9k'n$xmQfJN}MQZ7GSrn?h`\E0Խèg5'\!N%N.=_-=Kf=OM8`ի-xeBE .Pt^|z@4:_oohOD_ 7+v BP( BP(> pp'ྦ!VyYAAd[05=(a9CZSڃYgNOCAY!ٺ fLbGoٽ ~s v'@`dMQ^¬ye1#31LY~7Ve &NJRT p3[`1}8p/ Ug{>ֽ αx5<*8Ñ#=.e=&pG[|:.:TA*#U틕_VUzC=qJ[9@7(ץ)8NY4_Aciԏ`R?3H>FT s:rt)y )vOD}lC[Mm݂ S( BP( BPvMp'N%N}춡e>Z`Տ! sY39Xf]6+Bq㣐#Ƈ5mĒ s/9t-Ar ݐ M+=0fC`5}D+4 <2ro@`p&<yNJkZ~ܩT*J%N ܓ7ǡN=ʧMpXlF= Ť-~0p!f_p]@ږ lU7֦-p"w9t=0ӎ9ZO) W1݆|Qfq;kX"N%Nn?g]rϽ4@OMu onZLmIܾp!w BP( BP(oKNn ]p"w9wq-( a9H3LADxf+X‡ Vƭ"h1C1"0j2QY]L&gv. 䄴~>}358j@5lb٢4lzYu}dÂ9I>HRwޝ? pRT*'˿.prف}m6TA-&碕OpU*v@{a7u?S) 3=#yF]#nsZ5}vGeՈ,Z[ez*pf:3ZL5g(=[FOT loI>z)mL9$ESqdDki4]@Kq2%Z|d+~ +{ޮ8Lፁ{ %N۞Sܿ'rtJA&o7k}7DΟN) BP( BP(&?pm0[wwb'? Zw>kOB챗% V8nwᝲ?9f Y'Ght !(B2Bf5 ݆m;5p A\p?뀇m<7 UfK֠iGx IDATo@b B# VKv8X ZxCX7UA'&OJȉJTn7?[VVw:z{ۡnZ o52TgZ O@~j-e\-u:2#:3;Ҭ)fRsx'G*z1߰vsN(doM 26Oiﭓ|+:כq-{c)c~)Ye=&ڜv Mlha*,Zn_DkI2Z+ `jJ2Bxoȝῡ* nrp]7t,G;Md'-SܣP[ͦo?޿ jZ>KS}v BP( BP(] 0Xsw9O H~!79 ?V+d֠>e Q 8p`n[zLNmÂшy}~fȑF+?N^-]ݬpu٩lG3lMmn&}3N;v*PM|(p_ p?miJٯ4y[e#ACW~5"Ȅx˧sޟwbnG̞x9[Q+Gy'}J=vWQtgEWtfUƞs[R 2uf="ږvTTv iE[ҏCA{|r;s@}-*{teQ1]Qtf+`G۞Z54(1jV_HU٧=[Qx(Dד Lh᝙=fa2w*wa /9)U)%s[wjz;w BP( BP(ʮ w Q  nI!eO? sB}bC7M*Y' u8dӯ4؋ -R؛i1nD V Sphۋ%]\^Ұa3MM75T9VGSf1UWf5k4eߵ$ڏk'p1J7h*m q]i]9rv&}=pVfSۼEN7j"p7gߝ{TLp9xrڙڎ̣qOvf#jm{9t:.辗5LDJ;[Ms? vZKP{>;VS5NBP( BP( kB;weܿpP( BP( Bp'NpX&)2|8qı̶Ic2IszMX<>!p{v81HQH|}x,u WK bI%іSE9faS5րF̨07ZZD:X+n;Q-a 1:[϶վ {05itƦI}NO#N%Ec*# /xnN= poCsI2TB{mY8(p?֏V~miJ=qYc]7N)SS ޕqPuڬ#GIg)=C. {^1`*p:r)W{w9󶳯#~j{w@wv޳ĵ;jo]@ w]:4i}TX2 "WAvHUH p';ajKo vOD;쳵/[ھp;w BP( BP(ʮ w Qn=8 cOtۥ$ُ+!| \ZsbA8&H 1QylAVHCÐF탧 K&81_G0-DoN*^;TL<~G{̷csݍXfa]lb{ XP:V7}{+־lkث_}LKL} ˇ0y 3,.FEOşxpwTQT:Rg[V'NqzS.2^ZJS* uysΠ#wdDG1tfAkGU o푶e';q;ooQrA}Gѓ~]l7'0 yT{R4 ή}:(pǦXSZٳO|2ͽ7_m;!;=Pdawed=]5eܾ4Y2zBSr@RG}A )?f=$.p;Fwwy݂w v^oD.lp;w BP( BP(ʮ w QkQqC:~H# ywLcb\u:x z  =4(>g>v}o?>xzb퀧 ΦZ,Ծ̫0'3 ͗OIJ |ޖ..k0zVsUp/a!:[Öf^`3X_=߽IwP pRJ%wF, oZSFwUeT)P_C ;39:zQy;3vİ~6]ǯN?Np? ml]ηCs>pog0Vt?QΗa<[#q~&E9.>F4cаױy ."z .@ZvY[p+k߀tw̄YFvLρJ .pp'N=]ྒྷG@a?Y٧ ۿn꿝_NBP( BP( +B;wev# E%'!>퐭dɇ@ 䜅grsF=f{{0 7[zX.8{غKӍ%>v5Tmp6b KMp57`OVKkgx8tɘ~vڛjn-wo~M/hx'=-=4{׏1=۷u5fpM57'Q6;wT*PnJ}752mh/}~UNBP( BP( [;w˨e'%~Kpmp0?ԇYm'fۚڂyuk#xjbkP_,TXb}iX hz =W/l|_GܝpuUSw{,uT}ssM/"}Tyw1S/Y_܇ȉayrSm#(> p'Nc*J}ww~>wwԾY9nA]$t\FwEhCs-o]6";_פuc}MoەOZ]@BlPEy9\w\~U,\uQnካ,b{O.{N cK_ow}Em+}5cՕ&EzWÃtȎm*8iſ>/%v A>pp'N}8 ݷ޿E5lM;BP( BP( eׄ;w˨w3[ĒJЏ䝇{Άʼna8L7h1f,:8UXlb{8뫰XկPoaQ9FFM4_:ެk=,|ug{̷^`Ohm`+`]z^۳yT%~rMp 4Ɂ:Q?5s~C%';@AT* kj^]\R^|=)ނs62=#=vvۋzwb+&j{u nPxʴv^v>Ž=>˞Gv_fW 0x' 71x7YP }wSXӡ Ãl =|b!$ pA}þ+20w*wE;1};KN/}~%E})lq;w BP( BP(ʮ w Qw p/k0XbB;/GrPJhۗ%>$K6 pkƢXR7Zw[-[bXly{X~w0ObN97uZ.$5:8;k1z7=l#k`>=p^Whk+a}9o`U%zZ0+D_E!aJyKSXL^{7==;[A J!T*3>m' -~mKVɁ{ :E+<ނӬg}FhX59G>#|]\>"ەrخcp~L(p9!{IS:g`Ok_C%/ah\uu߿{70RKu^pq[{8f/Rj(Q ug;XvCw@/ }UJc ߄n *RYS0غU/ xǹ|} {o'sv˾W’̎Ye~|U{!7?Ğ{b p'BoݿUwb×~q;w BP( BP(ʮ w Qw -c V6,{!y]:iNM=XiRwpVa8[c_O0[{*bͅ>7 mW>$ԃBkoy77L3L>r;xW[U K0QU.c])oK0}wwUv 0 Nm!v> 0/xf*NL|'NJv;fff0==ILLL`ll DA mC5ԯ-*΁{-:“647zo}q8=F{s+Y{5sN3yuF0\QZƧ_rGxedv\tnW5$ ߈4 wʮ)-} _&:Xv#қ,OU{i0OAbm c# ERПPdɃߜQ,h胫O N nUXh[]jb 3 a{{M%f"υ8ݩgxsЗu?TsLV?&VޅƁbv]&bU!f^c-L?΃-*r[;0} FEf8c(ph׿k`;+GX?``m|r@)w*(*T?X`N6TA*sVdt\]WttGW[p}џ)nBU䞓P?OAJNƪ;Z?CtRbj;Qλ /`Odҫ1n.wo[*o\qCCwo#wvW@R>}Mѡh˓1ħML=er;탏ocY!_Mo1g#>po!;w ӹ:=?{;ow BP( BP(ʮw 8Qw!pBp(  ʲOA y8mcp`ޞvTXlZZm~;^>]ӵ~_7E{Sy r/80\WԿup [3LT=;>Rt˖lK"^"g`{ɇ٘L DOq&wr1XN[G1?3Źuh=Q../['#w~G5=?)@J J?*w։ `چwxYUd&: .ASt/:IJ4Eg`(<+/`?#Pz=i:`ksmϱαUXv;WE̾kHbɢ#q=~=1'62n+Ci!vl?(Coai_އ=;1>}#?K;wƷA{N@_線q;w BP( BP(ʮ w 8Q]>A,R+ARُek(EXĺ@v/ma^Mz:ԭSw{ \F,ձz/p M0=tM`{[[0U*i'/b8 l?so`oyw*Op~bs0Wwvߗ`mVO IDAT^$cs1~/ c)ON*KQ UYLMUa#9eQ<>7\~nzEnb[י}~k R)spRJǡwۦ&1>1>ȁFCG;zޢ]4UfA]psFIbi(9 >[t^t.̆p}mO5ڕr>`0)5_` l%vyv۳1Tv0޹*˷ʧG1{|Gl5}m5V:|/ &Vq"Mie:3`z 0=+Ћb_.?Hku 9ْ;;w+辝 ٿ3oUCBP( BP( +B;wNԟo$S8(n bEAWbKހOߋՍK#[fnꃣ_ym:Z1jBs-j0T鮆Xl|gp=Lu%&ޖ`U>,Os0t/ }WёuWrګ`pֽk~ٖT+L=4/BK,c5=\}WE=ʁ2 #噰b4))LFka*¤äQ80X q/=ny9l_JQ_?m_ZX<\|!Rރ?)*|'N%E;-IƬp7L@^6Ar4˄"eI,mE ~-ȝ-@_:]oO}Gv_d{z>ѝPxŗpXtL7ECwcDcR10m]+7lsre:L=OoaY>e~Wc#aG(sNJ;wDۙ澕?gZn˯?;n!NP( BP( B!N;'!>]JP֏nBK:< sa<>zωᶚ1߃nvbGyu30so}ٺpq:ާX{G}So0gb2kPAm!:7^]q*5K-RUcIUG˶ͫ޳mUpۨ`3U0̈́, ބ.&yIh*HE˽Bbr؀LO1k)l/{9r_}X=^>^ ~KNG`fTl__/t"v+؝w)i]#;@JT:%#}jj  abldwCm*ԼE)+3v7Up_|ly}ŧWZxg?_^w[הox}0'6 ΧFqPeAn`^}2W`,= 7X`,;(np~?ETc18ڌXR`Lfxզr?f+G8n'y0? _8>^aűpRd{0SCrhc p'NpgB;ݿ8W[w;}7v BP( BP(] pz(beVI$#?]K;pMNkmk|K,Y್ceюuceaΑLwbBdO]hK-X{W~'~'l#,T?|}̾-y+wWzP|< vv?G-jx:jt7 OO |5l{ܝby] ˝,J20Xݭʽ+h*LGdz a1:jԔM '氰 *p_’),s]۳{Vk~ޥys;3 IHq DM?|ӐbYw?$ُ@|=Cȝ;@JT:%u}rr +,4a6wZZFke:T7Ύk 9p}D@'Y+fh즍uc#lG{_5ۍ]*CeY_6\, 7a:]}}=Ċ))yT> ?Qj}4jt ֬XGf|r08槷a~TU#{bj4cŊ׍AۭVq4?a{PPʱߊ p'N9ױ{@[|~{pP( BP( Bp'N( d r߇>/V޸ pigXl}w10{yɆ8[ɹu4d^"}}b SS{t{ Fx9r_˳*y9l> IzO?6xBXcVxGN@b3l ܃H/TQT*Q8w܇1[  aA7(P'*z@ǎq%`(>V,:}y ."O *_/`5*=\ns] w . >Rvݝ$ ' Q>|O/*S.&GngǮ ˃d=N_y9v{!C+}QfY٢w^ӃL-sa۟0,JĎ'Ž=+=n'N;wt;|侓{_~όv;w}pP( BP( Bp'N($=@:r!yց46qxG-ph胣Oav9 3:5fuӵcQ[_w \o_`)Xs0_uso069J)O,ڲ.e?jSA[4"<Ўec.uۉ(_g:"GpsTO9p KY 3˽+hJ|tF51>i$gvr9~Zwh r횃wi~21 aY=fx-ff͖XeȖQH^v;: >RI}KܩT:q(wv<5iu|E!! po-sz?mwy:WzK((YX /F~.ڣNeX= lZ. vMtj߹SaaڣM^J bO.{|:#ۣ}1[>KWݾkynI.F򼐵~uo*`~l43 w p?)rI5S~vlq;w BP( BP(ʮw 8QME1!rC_6: ib1xMp ۅn5lmdW+N,4`vx{дBnBAu-$Uomz W,|M8Hs;M mYׄNz 8E`H.HݐxSëk' ܻpwx-pVb ?hMICi00[069 SӘ1p1?E8nwGʁuKN pM;;ar^6v\BЕ$gf$-&$n'9dUzpRiGu(qĢ!DB~/vFUE"':1 }wan[mmon}l"C~q*~1gV_1o]aq_C]QUuwSkqe.Ob T:xZvѡm`}Sx+=xx;t77arTٯb(Z*p'N;wzf# l?;츝;BP( BP( ?2n'?wwW]3*U[B[DX@$7[#.lI#{|T|p`<2nԇz5 ĔS#iV#c"kشHTHv*l#oBѸ~o5k8S-GqkIdVFp<׃׈4! ׿@=6;,u[ U(5(5bz;yޭ@;JLא/" $׆XlVm0<ջɻaixZ]6x|n>$#K}$u!Em @\Ş_>^?={? 5̶%bX5ˉAc'63)8MgfϱtwsGEa?_7rWDQܩԿrkS;n xh1ɏ;[LzX*W[r5b>=u0t~_`k{[M܆OvX[oʎsc2w7ޟizx+>׷:;bkooz*On^sh}/{|;/.C' ֋=8ҀH#oPc 6!;{}r/&okox]G԰^L'܋2 {&2p/T{}_ubw{eU}~U9p 5p''|(|O}yS( BP( BPJF+~siÖJ( GCCEG$&fG8q$q FPX!d8`_c2 #΋zd**dJ,(qjĩnoΠ>(s 1lM?Aoz_0{ }xkFɲueU/Zb-5EU>wP06m!k\Gڰr%pO#ԏLƮp~ [@zUfxۃR$! +X@wݏprG*ŞSI|m."ru$4HiUӞXiAΨf‘zG-$L:\.(ޞQJq&+@%^2LvRx;%*JތuMO=΋ǣǪ]v6>A z`{ ;}O]wwqVV{Em6o ^; ?M-;pR]x8^o)v#7IWCQw#QyrzuRE] מ >(JF_ 4KFlje@|C/n_>Ew7+͚J_W _t?ci}_[Nma BP( BP( S pYs,l/f&<áa D _E>GlN# YPtD N=N- 2v -(iQV.5 `#-5 ~-hN8coԡ?e-&S"oFθa *2ҺE4H =8YLGe| ]`nɏbb=gFlcq~ÃJp kF=j7Z2,bs[_"[+i6ϛUo"ÚbǪuVł7$ iܩT*Jz_[`a+aT.Aػ Gb/{8-q;w BP( BP(W Avܩ R!wr>B:>칝8yP u{ڐ0Qpp׎3 Eܵv^<62mdiאS-#\@~cId, 1݃ݡV_~|LCN-jY l;gMe!IDAT ]FJ#vތfI,q6vcw  5.T ?`7A5p'NRTZplck0 "!>tlǦ P<{=:~;:72p{G% <@W{ @=BO!UA@:5vrv_?_GFk*^ao#"爌?GXn_F ps_oFJWFJ;wZ^t\~.%>O ۿ5n!NP( BP( B*!N;_( ((9l,A)qt<']v]Hs#ih@fAύw~ݡFΦB֢DƸn Y*;Kl!1K#. #1ك@ 0=v'PT/mJshpj^*[qLq{RfIH̊p3]Bx%`l ,>VfVom4cw @ /{<9peeǎ C:-[,M"<vק>)-cwN"NȍOcoz{3(bQ޹QLbomAv{"jr=%H%Sȥ3 ST*? zwIz1@9֊ ]FQ}z`!d =B_n>Lk'seO]?] ˸ st٥'r}.`_sq\ /p"w>]F/%<#}x;={w%5Vv> Kʼ J'G#8`fĞňV+vvV3f+.;'N=Vn NP#oS!gV"kDVzE,2."8 ;m4OoAY3=oԸwm4(tzE(+]f "i3y3HlNxmG+8X4y ˟{,=V[A3 5<&3<(]LY1BO T:!>(*=01zC*pR؟"0$*j_?54"8(OWUT:҈0|zKɶMvE@|{!4xtbJ[k|@MgVG_w8^HC~E,x{;w ~S@7ej~pP( BP( B|d'NJܯ= pgfQN%Gp`7"n"n`mtj484pb2 e1!k7#簢ZaY^3)o"YE^ridǑYAv~^F) wa=E~g[e-_VhV"g}I"$YS*w1,pi ؝4__=mkO0lpju$D(=D㻈؏pcm4L$lj]ܺ`mr]8{,K1͏`vCc۝`G|W46ދh>DfXDt~ w)Qd DTyY6&;w*Jpbl! t`[a3*aYfi;Si p糖,lkffiSoDpw􌭁DC#2N 5)dv~yvX\=E`9 #c/E>^=lA|YB^-hbyɶ/FmÊ++TܥVmpgk}0nwKݻ6]g#f8| rWE%p'Nz_wׂ49ׄ7 pP( BP( B|d'NJ ܫMQ<>DF ФÁv ZٖuH XM-(8lW{ѩFɮFѪBޤDNf2 [ȮN"4RSHu {s4O~M=Gά;G.EYsy S%1=[),[S8^W`eK؛B|B}{{'ay ,۰kpl]i1F"8 p#w!ڂc~t֑8{8F8!Dz䀽E]vF8X'㝐fg@xn";g7#vK nu^0)QoYEqgŭyצ[T =ݏE[hXmGQwV5zmr讕>pXwP4o#o\GZ,;iޝy|z,}DcxWCXvwXPtKh`י6; CQHH pqIA0# {t-L0@ÝL 4?iiADY`3}#`mCh $phdxGعQֱvH&;Fpf%(DwS2%N;JRi]O ܃(|0 ._ 1-́ >g͗O `'[cTO]xzFρ܋Ioox&KWsO-l1+xXcm5g1w6ur6}Kg/~5-p'N^ ܿ$tN~][yS( BP( BPJp'N%WUZ~grst)Î'Z% jdIYՀ\-WOoMJuZBikŵid燑+D:jH-ESFLk/ >[jn/[g+9p$FpߝqWwaoXlAa1pt D "$ `~/s\m|6DpB?B}rX{Nm|rC "bx[ja7!4t?b[+H( :N N#{n'NJR'(A vVSwi&2[;NB5Ӆ&lc14]p7{j{#>q{=XU^*n_ˁF1}*lPa`kf}-8 q(Zeh獲}/d]tAEMD [?} x;="5o3W2w p`xnn w BP( BP(W AvܩpQ";_<[((e3(gR(&Oٍ‰ňAv)io䞷PQvZPrYE0 ηASϪPdSle5n[G^j9&hv^g?g$q[i EvۂYUWFyi*vނiWS/<[s8^;ׅd;ޞ'pr GPM)`چCoD+! # ~nuM16'{=ЃB71Ymp 5= @3|/El? R_؆_"8|u6'{YC*Ga$O"NJR'!E$?/N,6LmٺS`k6l=v@˧w]񚭛xg{]BH9C 5Ҵ^v Χ;xn@:xuvL (jWY@N9#HNp5 ?ֆmDk\[6f%J^0uٷP4m(߬tyedKHk^@bsGk_|3툎5#4wX@#|?aqmz3lF+v.?| ~vAFaCԨ|SÐfGdaѥAZEpnu:h%#nE`A_"F{y]]6懱W"!spѱY2p [j)/Zp'NRT7kqvz{+`arXafkh~ƭig{PCHv ]vTr~vV]upw݇!|ԟvKss$xxRvLKdD!K1=hSE=:^>p/77,&7U󚾸Mq\C2^e}mEUT\Gko2pV Ns/pV~y,ZV5[Ay+?7+%N;w~-@?z_뒀;BP( BP( 嫄 ;wT'szr(x[H,uB<ώ˄ÀEQAN)10i۲Cޖ2l/EyNFbaT(Y1o_GAr)WG\x;v~r'(pf;oYOM( ծ7_C^v p_a=t;biB:b{4Z_sS0nm3bjqnwuq"h· Bs+_d]E|maDYGxb/" z=v#<i kH#}=8=NwC~sxGZ`[bQ$ѓ 3 ^ >n'NJRo"pn|!p "pBua٢cu'j=m`f߇;;W.ؚ>=D=2n}1GU^-G}F^]Y~2:O4jȽvZq}~ɏ=4iOu破i@Y h ~Pvߌ}{KYg\IaLb{JG gZ v(q/5K 9}R(º1|(ݩ+ExҔhJQM A0pʹB\ NK%k.W/QH[!6WdBh=ill< a‹1tH {a)!kەd<*2W8kdIE",iȒ&,iȒ&,i"K,і9Fk2sv;<- c I!cJJ1&!!Fz*0`!DfBJ ma$798N"t @0)@l.\p.a g!BctQg)euuL!"- ZΝmݹ#FR@&{ޱ]fy!) #Us!BZCyygS@ @ J4H%BpǶ-L&tA!¥!8gq1vyܼs(Jinܦ @ &hPAsB"D(E@ ?`)0gDkx" rH`B0I8Bp0ma3G,B$K)eYG%i\;uiKW0`hUͮeڹ\DU-D۴k{MC})u{/y3wϒ LDBJ)9~D4l#MU9aܗ,c1PR$EPZr8\8,(17!Y"gsθulVm BP^v)RJBV)X!E"\WUCNRU|*!8iô- !jP]>MӸ@HcD)AH8H‘H 4խu %1` !?@B8oXAoSLT4|u )][SUm3iv鴑D"+")90G:-a[r%UOZږŭJt=nTKU5EQUU( n/?S!wR TEU]UEQ*DW]S\+R1Ř/kʘ@ZYD0e3ƄRJa1!!D4@5B& R[UJ(") QPiTTDհi@Pe[^=s<U _{3 2;m_`83'aϣ(;Vt]u#5pB4- )}>¥_w뚦k>5VJEQPL`\0.8BԥY9c8mۖr,#?A)aݭ)(X4M]4]QT0GDZݺ'p!I)@`!D$& H #J@6+te'%2 KHIǹ(q߯jT`(XX/'JLL0`R2GX <3u|6xE.;n&3I9?дڼi#+u3 AINj;Դ4)*涭@@W:ιr11;mH¸TtɶB Hp)%tdI`CP\nMӉRJA\HG{}b{mL1H@1AcL@PMxHo  @XJ0'\nmۭ-T)SX6$,|K$pPp RJ98Bڌgнc a!Bu![̾a1g>g8tJ+n=W7AS׎@9νw7k*J%E0ilK[fܱc7s\HAJ!c۩AU=^>UsM#B3˱l[8vN8w׋ 66Eg&iL3*J)&@HL1*H q!cq8eێmf:m$xt/ׯyD"8UF躞Jn&M'8!BB#,BMa0^}>zuYOysN1vu>gr[WW۹SL'ͺGpx:mUmZSQ^ڷcEzJ%bO& ኆm׎훶tL:P+!UUMn@BHy#$R !$)AQ<:lܾiÎ͏KϿFƪK/`N6c=wE $Qt㤎3n jV<^CSA7,۴Җ,֖ʽOι'rWW̼^J J;~ui:AL6M1hPzSO\U cBBa2,+$|+ee aiWm"a(ׯP y7v]5H":7ޮʦ;YPO%őIkIJ)  !spٹ,OԓHB6W9`4WuL'o+~kO7Ir! ko*`[slںb9S3S-V/^g` Jr †a(F-˞GVU6ȯ:ᦗmږKSCSg^7VdfYT2asmXc3-\>핕0ځN+O?$۷c]LJF"e6ǖٵ9~[͚ذ5!@+ZCxR@ 0k ߭:UbB l3*G9`|E`\܅Ko}$3>: Iti(;#O(* ,Ͼh+/|/AT*ɧ}5o㤩m\nۺ-_|I:8B~x|\NϺhʕXdS:iD…7/ܚۣx\Pס+(TQ(VU2MLp&ށၸM[0G:p`B!9睻u-+p1>~uعsn"j* "'Feu!q1­uxB ٺݹM;sv)ZS*<2 s)2<<) =0LDZ:6@OWPӍ][߻kgY-M;M$Oj.@AB`9Ӹ-ٻ̝xpa~naok2{А 3n M↙4a 0(_o;o>7 Κ8駷;fǫ[>[G:&}F BHH Hc,DH`pQK«OW')Ёc:fÆ=!!%m Rb$BQBx>/si~pYxậkGvɕt=*ua._^+kwwvɉv V,i&)D% ؄kk6L=P*q*vGOV vG*[=O3'{bWsΚzٯ1~tА=|z f 0  B9~L& ure\CC,]<`9 3ԧl/wVUGa]y%!H A@@ 'HiQ O`~ wmު%Uٰc`.#/-']q~(R4Ck}iΚi\dܳuگF)>/7q撀t_cuӮe'?|m{nUFv:~BvLiQl3:zá[ieKk=n1n5L/32=zIaai+ a Br#)R%c1f[)%>1t]mRcB)!B `mK.߀KەH).56tR4ڲ᫿mO7 fn\rʏ_8p5 <9?^stۚi>UW_eN> m 2? 6lܜ9mH6w_9/hjy3r3woےlm7z)Ǎ;bޭ?У,]z-ߴ$v)8[]Ѩԉ澝ڝ ~qu$LY&\z靏DUx(ޭ+5yWW=+?':EaڞGC27msV_[{z]incFN7jl" rmXWS[kiێeT`mU:br͛֜v>oN,Rf:-hmmݞx[@/C:.0i] sP{+;]ޯ?h۪-;vt9{ֵƌi[*n9=¶-/pC9yJ_Mw^]²y֊:Z=WC f[yVS/;tkwPb`4W%! Pultph̀w۾1g8\DΙ B`hnmiliMwm^4Pe {ƴ tf_NS䝏{6-l闾_qt>z}SQ;ö͸`ܹW^vNBeOƱ]TSRkJ24 K P\FǴ|S w"`nm$y텏H$zt,nntԺekWqc-ť A"^1?̦h.RLII3I!YUUĘH)8τ̮ʈ1J)]d oٿ~S]e}7%Ͼ|!yqt5J@}ppLu,ˉƾyײN?Rz5zM3n8fܸyQE6o?g 9[EfL_(m_^Tʐ]`qKsލ._NeϜ~̨7cg3{}\JF(W1x; s.xS]#HyEﮫ(.Im/6)9p.,1}49ܭҭP4’"l0G[Z1% iZ1aEQcpFePJ3I6oӣw6jo Q(Pwӭ/?_+o,v{O<[R~mCg{,_^ݟ#ӉXSk^ i5m\8TXp5MۊċwJ{woٵfHkwmqu5U$L2yHͦc_2,*!\2 QSnwiT:ٖPʸKmv;B de. $v8vî>K]tz2_x3ٹ{ϷiockD!#V87[OU!j\dHŭTf&eƏ1mV9Ga8ſpWX $Be:y̶;+o@,a3b̰Mq5C%E*,.O;عMQM0eqFrMGZHKBJ%R -S;߁Dq1+&ynjI)=X4}yi8biS|LHIݚ`Y-U1H)\D,97Mqf٦6X$bF4xǟLYqՋ{>᣷:)zCMSyZɊܜQE m^.\RㅑQpAU\6 #i6!Dr.ďI1g` D BUW |‰7a$/kXQsnj_Z֓Ϲѯ>K+gSE+:v V%"QB(H6/((,f#͙S۹BPڵ{ӮRgA:mFFD*z܌'YܶcW_U9m B-+&WT5/-& LpqYY~vojݎiW^tM7_~̊zT"Q$zM8&t3ozooO>7Nd*sci238Z 1 qBՁ|1}e3 RKs ssϻ7* 8hD<Ӹn✉S%BMjsOwl(.io `07h_gm隦8oMĹL8ι3H4aLک0-D;";u/$GjnnZv 773Ǩ kvEy❅^s>ڋOe^p_u²g>|i}l?4ѵj:֞q4̲Kι9Q|rl (,tp[ՐN1>c]v}X½(dMڦU;;ۗ_fKM_>{ qpe8Լ556 y 6Mђv*ЧGKUԌ2 I{o K<7b-Fˈ!+ep۶ƌ:%$xRp IHٶel$]ҋǍ"SÖ/گX9?稱9Hټy^_C,xe;7x{M3uKZ#x,2iJөNTw@.~5ϡp{ \2{,/q׎U{k҆Ӕ&O-Y^iZ0meKgꍽxw硆 H t4ᛕ"q8.ES0/.VZ7L3KH%m0I0IJKJ]C!j.d~%Ǯ`<kܱç"23Qq{\=G,Lo8W>b78q0Ukih=F )#83I6-8$FǢP1& ҀXFV-^ܚ]7Ft?}N<]箫\UUWFU)%Ih^m wIDz듹>,xXHԳ[wm+42iiMX6-+NQƸ+tۿ)E)Us銢U BHDP^AQ~~R.*3-{E^ױڋvJiᾹ/xwWUVr6%w=G% \6ݯ^|z cc̶mql۶m۲,9~mA@e"@!% C^ӣ{lĜDCèFyyLQ^{~OIڢo֝U[缘׵GaExஜvp^՞*aMٱoaLf1J)p@TeHsL8^`AjuD6)NUU\{8 I@u!h<-QosҦjz/*| Pky􉧯fގ81b/Ұ?j=߲? Zp$D i[ DGm6u` |[jO^iWm (nwk߯0?gyu.o΄S&vνz˷ڱvcVz~c2H}c ry*c$Mcռ/?~oX]5񼉓>T ۗ90d4'7T:`D#n߾e]SUUT4Ro;t}@ "J2zؠd* i6L{6;#t={c᰿%bf(Uԥi66Lvi֍.5D"Ɩh4s '}Y?>'}=?U^ mW%cLC;g~v^ϼҩ2SNvO,^$)Ld` j!H<ƙ9C 度)|÷s}_}%2t@}ӯnvq#,O"抙0n,VwH:BrC}-a*;k{[L&80<S6Mfr#jbc͎={TsC6|7maoa<0DzcYc3Ƹ`nwM'{?5lܧī&XIfָϭƛ[\^KqZ o`o,^vvcNj 87i[Z&9;@PHH ߹SwEt]_iپoT>iPa'KYvTwuHG[-0g6ED"ȶ,O7^w=s.jn}S_*(*. 56u8k7Oicep-˶,tiRKlQr%]Kڕ!DDZ  ol6M欱sa3.%PEe áw-W  >S Qgv;x]J"BHH3gN:EĈsYt u[[=pĆ)  mP`1GE:Ңn2,ҫߚm͵⢦DQGJK as*]/(l/6 G^҆4{WRm9MJhkEyqҦ!9Rd\X6 'ЧwAI 6sax% rRJǶm0B&% )[c/I,.@dԹsfLڅl՗jpuwK>yunL@$,yɇ# 0N`@"s{Q#WoJ UTa|߭.Ɔ}A|iit@~$RүDX¶?/G>ݶmonNA6|fLJ0M* bB0**F} %HbBLRıWTTaLUEQ0qRB%Q{s( )L%6/UϹ\?y7p1l)g#_hX}w*wEI)&C3' r}jhm%Q-_ ¡pҢ҂|~+ z9HaYel $,Yv"\pJp!V@f~8BHtEUVȡT*B2Bc<+޻涘r[#.8o$ARWզ- V'tݱ_B߰.vFR6IJqFd,n{4@öϢ+KڦM|0C~[ha, vS8(kN-)'5<;h]s~i gζ鷿 "daI~J qBBA˟9X9M -o^x B!Ι,RvXaZ[i0$ 0J),SpTeԖL(׶L+,pg})e]7?_tqYyQUͼ1': "ԒN6SuҀ6##8cGi󉁃6Ґ( `;vڤ1n֘~b=4}O<4$A atu 23.PiuJp-X]mݺtԻ{rԧ˷-V r v=4O?Ϙ2__QX~Gڥ84\!4NDʶҶ3s9a2 ds)A"`;eqIld%MYd%MYd%MYdIE4YdIE4YdIEYd%MYd%MYdE4YdIE4YdIQv[uXm3(?nޏM~Bz 6oDomڿ>cwr  \rA}K.Fہ/4sk~?Ae*H4ayz2Ø/5S3y3sppX:fBjܶ)% ](32m4xLs2̦ʟ8i׿.ޏgϛ7U l+K.qGSOI)ΡI#_cպ|_]dվo|ӯSCX1Ҹgo=sL:H`G)vܵUpyIsxGG8Rl޹"3ba- ? ·_}GoM:7puWuGO1s6e+wԁ ݸr6.|oFe?OWH4)-*7kuiϷ齭iϾHd?M6ؠ?uDnutV@t׷ݎ=Ov3LƥGF0F4èFBCE(SR(TY(,xx xB%kp࠹L\=jSX1ӥK*/;oRAmpa@q+b-Ie hnZ6(+~LˬJ߄ՌC룙|ZHƏ"2&#dL c?97 ?qٵPۦW;?yu;y8; Ysę 0})cSi?WmKJ-N2r R~ @Vϻ^{Kw|S9bp益cO>Ж9ߞ?nϜ0~<4ϰ5d[Tٯt_L:j.|/;aU?x0j;io~/}ܐ3{~ݺfy4[@F01<Wd?0+u"]g"˘,"˘,"˘,"5? B(cS?RJ0D#0cE %#0)nZ(B`@:ashl%Hq%RHqsH;sƅ~4M#9?n800. oZyQ͉BS}wcOʋ9;L`˅-uMEK. mC6KBJəam19PYp`K!%$9Oc,!,lc8`!J$B(A8sS,A DA`1Fmc@2&R༂-va$G8)0,HӖ6dfu !$H1Bw7ϝ1+J35_YL-(+̋DctU^_CCCX^ʙ$cK O0&'aXB:NuS/`7a, IN9gi:H^_Q4qgϔmWu.Y%[{SM1tLz zsz )P ݸ۲-Nq%}ǻ{wy< JRs!9g !iǟ~WJ9>%yBGB N@pnhopHI @)1B؎2uLqPJ@{b Q4BR)ř B +M'T ba 㟢pww;$N¿?נt@an:~KjebD,ScBnx,+!DQ0ÇT` !2/+a'c1h !B(!D T`.c,H<^af B9!ń$b=zXXCfI4M#FtTZGL 0^;_CJ)ǻ_p>e*~.4ʹH4I0Ƥ Bz cjń JJkF4JtJtkdwʰae̥ie@Ua +s5Cm~w9nIx}Ǣ(`e1n2 tT'J)MӥRghqA;py/ki\J)@ gPM2 WJ)밤k'=K$SeS7,utCHHKٶDzz"dMtFg$ p]7O>B!@WIە R2PƬQ~*)m݅&RX֮D+uww/Y_zY{FĎT<_T:NWhvB?^1iaaJcT{I!QL0 &DÓ[}絷?SwwXܿ_kP~k]n.v`0d3:xb <RL\#2!)J3Nm1BnHYA\JuI$L20FhjSBp Z)u+ھ^cGSKsO$ =\*C'흔h민__- ׃.!!|TJ$R $HRR kEŀBPƝ={x펇ɿL-7ģ@| mU{ȌS4'm((hhm%# ioKĥuNw0v*tW^رxM}myS2fHrt 邋m;{W,_zɧ7w&u )Ok?p@7$!`a dtQTS0 3[6 S3RIT dFsloN&Ii򋓩d"%nmX+VԽzSW+kWl\;BQBT`w+$D7ST[8Fi]I%%()R @TmP|ӆdOv]ɓ'@( 2]ɦ}<1g:̞_ͻ%gp_y9a-k;3n[u =rieǎ]V\Z<^2u#L嗕|w>psJݴOʴ|/`nxMãu kǜK5QiA)%4]'PL%># kB&(~Ϊ[r0Кay?ʠs=?NX+DZW8w-4"uљ:{CoM43b,v%.cs5-Rɮh1 0BR3}Muߪ Uͯ:e yd"H1Efδ.YG06=2mJThct5A#B0{yӮn[A\z|sB c`1 aiuHAH% &y<Բ5&J\ӈFiSG$vW1\"@(-(@AqF<r#\GӑTjؼБ@ }ȌTJI$AqR%ffi}' +$bIL%$HrCu>\[? /lRTp۱WXڴ̘-b\~N4Jш+?=k//~?]_7av~NHt@ṗr1 '()@Af׎aT\(J(1CC 3Ǖ23>~_QwLEȊ’`ұ5`0rPQQ^~>xsr#OrI: @ ɩ@'ܴJdV҈EII`huSשF)Pw0k/:wDN=t-J3V>``;nq\zGO7 %d39xCu3񷏾%9 ߄0v&9mTWwx~B$sx㶖D߀8ףXE<.Ty /eĎD jR 0\+  }l2:;zISc' *(-) }>Dz 4j4n )I _QY؝s16ook?rs~~~wBO#@b@*`HR$HQ, %%{\[/&CWZwqRV#fp}O74$,JrmDگ=es.{{o.ΡMXZ3ΜsE]g^^_ zuөnb' N@>.xm(geN/,՚ל}U޴}i)=sǟV^EJG%s A&q5tJpe^aY[K͸g̘I鉭Z*O0DZv:ǓɤN+JHy+-NR+$_5n0Ww:cbCM9ڴck~{OXֶ?q'4J0޽;t˟J0޺#N8[=ɺ#+7MtlT3:3b743'M•J~4PQeS'۴vkﻓ`o;B>o i wՃk#]{Wjnu>9"IvϛT X9pMcfSIAEE? Jκ X8vRL 3O5 [v#.s9u_7m$!drѧ4]Rr. kqFRI++9*)-Fc8Ɋty˃,}Ų㟼"~eZtZڈ1q8kst~bCG3tɠz{jLնM[ǟ$]}mJC`{y֮'{lpg+tu؇tP,꟟ o R]⁃(U,4YӨ=&K8~{M/m$\dS]rG딵=o?.ig9Va%e/2* $/Ug?`E_eg\3w}ɿk6H{,/7>Ov"r)(®ƻ"tЬȤ},dU o -WARr@:1V`r[Jd` 1 B.W BӴ̚W0M{gJIRHv^xs)Tb;MLЬGr:)MVDt8/?bȂM?P]pHt$9ޟks>h&Ԝ~̼(}\vWn\|[C}~ni=ԣB%qi鎵 !ɴ+>/sөO8 EU}¤ai{^?p  P*&> 4sN tHē /[^SW`=|pM R*zvBhЌ<"A@ů/ǘ*PH@eL!zq\,mș6)MO'}_ZQ$6.EmRJJT:ض"LI .uHRH$bt}xUqgV;y1A`)gXYR7_-%o^__]>sRXx|A'm{l'e'! mg9Htzti1rĘ5#Fw5CˇY1bĂFaPuǽk7n.XU}λ >zMWvj~HAfnXJEc]hR7qe7^ &ytuR!)Tk@.+3Pe+۔N*lѳmTcGD|gNkPq!wOY⑴vJI%!DfYa%TVڤ"mڕ04aG!-LXz΄JJ1Y_ J W,ř$^AVڻOѼm5j`DCN(qfwQ[D#ԭZIj['F;?]̷ N1^4o/~;Z?Ʊesl'"$cm.BRJ)c{csw6&9+8g( F- =j Ѵ[num})h+zbiN)m !RT)R-ҝ;i7~v\DIOwO~*aLR}~7G\^_D)`|รN3dӎwI'H\'dБFwRWXJ >:pf;pj4bҹ'ԕ|daͦZ5 bJXrgfY5xP~{muh4DbDvt*J%d7"Pӫ=R;ڢP8妆N2|#:"]~w^x%sɤH #;.d]3ܭ*P+$iЩv66ɶV7()%w]y !2.g|T׎q<0\ 'iۀ9 ޽cG>#(|̔6 뫷m>7;L{>bcN߲nI3ƒB C+x>7_{mo :&rglAH;$^c]Y{'bEb=R kUkn oj/>;{}77jؒ2F*:R ;oEo<<WXf?멘0!Z00 ]W;[P^vۚw 1SSj=(!R:R>JBvRx"NlE̓sӆK5 r iF ƀR }"hPvXyή+M!{] J c_v.ZA4B"a!D\Wv%Śj6{Ƀn fiu߬wkD4M\j?f1gۑثw<ԨG*;rf'[[}ͶTxw_z\2U2c]ABD| +ZLh¹W}zGG.2lڕ_lٶPJ '/[>_!1_LL2|3鴋aDv6?NaSP,9hu; (Դ;=c \ƔeEy/c\*Ml&BRL#dG0HŮIW 8#̸0queY24}g$HB1cD?_ѹ߬8}gyvPYKS (){J# IPvBRqr)tѕ;.:׭\=YS8Q!vzj~%хcc'_w{^cQ4ۚ[BuD\PLmM6'Avr8 aXᡶzҔZg2(H۞-5tsy/qB+E"=]];zzbXe_4c?n~ Ngr@]'i)|caXF*\{pqbٝ{pJQik~[JR"#pe#$@&TaL)a; )xgW!vQl8zLn:Շ7Ntө7r׉4ƌq[:ƘFqYiwGאZ(W7lw4))4wTJn `eBL*]2DE{PO$*.phF|XUZTϽj.8Ƹ{gcx&m73fK!AAEUO:jֱ7<1Zdj|a{5%v*j1aBΝi%;9N>{M\Q۶{H83 IEu55\J!Dвafu$_{p[oYǟfǺ@#DcR ,㌍.d躝#4cc\ȕmHq!)7a&c1ØΎF!;Ƞր%e%hla:vv'3!.J2,.$ާ_O@\pl%:0}a .L /aR99>ة,xގ*cPdt# h4+eCCW)3N}o'.<;[b]6c]u^o)#tlNK03 [>?'(":u5~q-lɔRwsssbc 8fLH3ٗ1nJ^Z:`%=P&D]ƜDOO$\UKRqQSJ;C:_/9N%gظP*j~M^iHYA+ˣwؑ_/n]ʃip2{)Rq nQ'Ѡ ZWs܉V#ymk2WȄ_iˌ'eF\62%+4٢㟼 ('&cЀ{T"l/H7's}v\aPRN:2tM62Ag@Qnx !NBU_|Y:,cLu$!@1?8" !2q)BXJ!PI154ʹ4C R (1R)]a$jߴ،KS)Y+οkùA]79lh|um#y*nV y=7:aY՛JL@}3Rbaˇ/ T!W|aIk੥]: @?m꯮l(oy;g<&x~OgM@`5 ~tK FJ* [꺓t wS*rsBA/}g6-_u7:MkR#ˉ TJM˔R"6+3xp<>9g^zO-I&,4 Cp1dbJ !P*8Bptb!D0&XIPfu&%u[/;n5E[ůuo?x!rCljyYAnvgw/ ޴qY_-]6u)%&B+w3=y)vK ,2  iQGsG$J oI#v3O3jAo3f2->䒇pHy眢8]s_֟|Ps UFm&ɄRh/cBh b:hH!](RĹ̌"1@XJ 2:T(n%]6KYiG{t ¹~ P3)6εg{wDg} ^y{>sx&5i_MBL^O. +?7ڥ]3y!F &R=tb`^ 9y[+P ̭x{e{Odˋ B 0YJ * D3Zj-x =`i=YS*)ljSX"n_y eC&-h |Z)YfcBHv,~$oME1YdE1YdE1YdeLYdeLYdeLYdE1YdE1YdE1YdeLYdeLvxq&a{A3?e"rqFVeX{}Jַ;wl̜4seuݾJc~2?j[ZiZE.k,' 1Owߗs~ "hkWdU5s_\0`B/;@Nфb?cW>){у^fO08M"N=v*(I^wÒ._'~o^I[[ۅ']O` ޙ<7qWtݺA雷ݝ鴔bAaO.ߙ1kn?+[0Xsdo@麞cQjKpeO?#Eb Ww/p3 OQ_-RvK{zPUM=e춞ɯn eZ??p%WgNS-.*spǓ-xˏv~u&q mYvWK48u+z_z^}ǝqggD ڣ:n;D{Z@yػbhoA{M҉%ӌ슦:jp ^ =R2%Ydo m,) zXLUg̿g _|e0]ԶuY)RV ( e/ W_  'ڷl߾ٝẘbW!SSWyl~qP!o p%<*^{ߟS@)|զxaC8)܎[ Cmy}8ϴ_d5W@ڛA1Wu=`PnQ!ާνGdG⧎|9EX,=e/,I/?S{-v,a"Qdw",Rݖj/[To;l)@)U?}^Yd2?c]CN*zg; -#/zu[qo@nSBYLk#K#.,.ڨK6~F^1˶<7,9qXjGM+- X6m~bW/@-`ӺUP}P75-_K@6X:x蕫mPuEg/^nW_̳y֝;[?dMoY ^vЊEKŋ(1[r3|r;vlCxwnŋKcplwh ._7ooxsG"H "gɹ'w||ٖgh8gɹˏ_{7m=g<*GWJpsNQJ)RJ]v>mb:ZW9JJ[yoq)]~¤sPԤa'O;&(T5Z)1RJ_\2theeУӎ7):ow?!_rtٷr1s)gC>9gؑk`ICˋ6-RfԐ 3nX!UI)5r6lȢuJJ&?d~?to<9dp '|~pC{_4lȠG?G9Gg2鶬՚Ec",2YdEVdEYdLYd2YdEVdEYdLYd2YdEVdEYoaORJJYm!1B!mȲ_v9:_a! #$!2E  3=E)P!0Rl"I3w^# a j90=# Ѯ'醙0B韙8#L J#;gP +%R)P2FXR G(!Rs.B*ߣSJa@d!ιb)aB놥P#!SnUTk][r5_VM\1iaM ÌFsBX[يO9R_]=}ԈS=R#T.PJq2C3=^J5 c+@՛6rd`]W)@s}T@5Xv-RRI%gu!HӘQj#B*#/z RRIť)J@0M¥G=XuB+ B>BPJB*d`R pܬ#Ȉ`3Tu1Bi{̷e1L`J )@x|)20|>aL\] $ADPi P!I$i|)P@R%HeRJP!Ŀ@ya(_$ q;L;ݻOҬ;^rjK3g\p῿!cd!L@ē 4gTqul'r@]EZ}SFx<2 4SZ u4J=R 3mn~;;K)QJJIs! \Q@P?@~>X.HI0.2-ӅqVJQ*7CS)RB 4M3LF)(B Jѻm*TR`TRJ)) jiX7nc3|M~$hWVP{Q][ H#rN D"IBD 6d t&&6l,2BEI<M9Ap{>q~t]]]Ug^{ `"€̈́2N. j(yhKB@$ǟFI 'RLu Q %QPFu0Rd` :Q P)DJ)Q@)GeRUe'" ̩.QD2[}xOlPWcgt{n* s t}W UJ@PNPL$ Lvd2]Op=˱j+ξ;9Y|K'XV7 .n!:d8眀jқ̀*ZN.C` YQK)r01c.Pjk 3:aaF"h4BP Ck(z]x!͞_'J* 2@"ZVb@R]lެ AR ~ K)j4e3Fَ5 4]cu2EEpBˀ@DJ\I%TSBQ(mٵ̸mlÈe|D@D! ~A)C}Oʫ7yke=HXw^FM *ER?lpcUPi g 5`Ԍ'#}iz3O-`{kλ[V͘3ah/RPc@$bpㄓ;{  `R^i{Oφ5k&NNJ "*0X=-;'OZ'.9cFH,9J! !f nRR u_0>Ï<<_[_v=cf;q_y[o%ʫG}tF0ҽ09g+V| L_ɱ KJ:Haݪ Ry T Ƙuwwg P"Bv+)ƌB(D)PJ9uiфmƶ_a$}S+D k84`|8 sЛi!O]834?ӤcPb\pd)HƴRH(P(SP5|bY2)dr IZi67Ţ4e, 0B 975)%POCAD%QqʐR bII1ޛϷueÉk0kUUz葵5moںyhC]]mM<4!EJY$&Uc)\usi~/~#A*أ`6@4o*$+*F_d|_>?fKp-{w𜷖'Ny{ڽzY{,+; Zebm?l"X+;ߘ8'}@)7y__~… O=mR}]grɚ _=z//_;aPE8(˵Ovl'ݍ((\ı'+\P1MK դ4VJVW,[2oᑮn|J(-!\TCƉ_*,ٮ:iE nЉgtļcQJY 34NUVIt}VE)o nO1iBJx[x@&$izXJ8,(0e q߬B)?pdro kkjk1ԕm?oOPlq-/[rl(ڎʗJ}ϓG#PF4L=6#a]q 1Jq|E*INw >e#>`8E CIYك5oiC RFO)X`z2~e@DLѷ~ @EO$+|w XdBH䌾y!0hk^27 ܹ;],XB0Pӗ/{P㳫|L)'ظtmI  NߜY82}z(6x29%xϹqpmX0 Jg/0ZdXgv}lK$]rw8[_x풣#OK㖯 q冕'q!{'RSWqFw=xݿC0:l#O4yf<䣥/\;>ߕO?c̸\"J&B<O z8DSQ++:ZZBAӱd􈔌-7rw_8nd(כ[z B#WuXfW] *Dq48p6.ܐH$7R+SPF8cP2J5@nJ9eL#L)d{kB:싣  EB*JY[һϜ=w\ʤfGies_h kp0h۶l"LsFݓ]*:Idqʀ APCd{N/\QgTJ[P*"@\ l/@I n"ud2Af4ߐJ Toeg1xr|7@!xxճuOoN=2Dl/L&+2'7VM2uO$߿=s5'|_U^xui?n17`ɫN[dzO|"~{`/⏡-OwݟC.z0s#O^.~Sb{C^{jASI#;No8{?:yAC|ṿ|w5yTrBvn>y'_~3?㓩{^"<|xqh}awx w7 L+Y:k[La3DJesBՍxMN2Wpծ }PQ2&|r.NnXiNȡUu_u7o1&%ze@2`&s[d}' GB+)(!k0] 8PGO AO($e EYuEu8EAfiisBpuE"iMcmrޢ@j+*lL0 F)0_B(4u,R@(תR1J|=E" 9{W?%(H]AT]ޭw0zNTۂ j+(5e bυQ<~e%$_x!6C.TU0q܍s-EQ37uwp@pp8tW]^F]Et`Eݞd{> j?~P[gn᚟/%~&GE$'~PCREoGvΗr];[}RJA4U k#'3{rLJGd@AHB" !{hЦL5羅(J)]P9粶" 鶧l:]JPFca$Lc8+RUsjYƭۋ4j!bw iG4e:3IDuU ꦗ-PN\ I&K)HP(E(T|V=E(Vi]2G%~1Ɨ&un.:ŧnعc'Gcl_P@j(@RhGJFaF{ýpko^t:f~8K p雯 i٧z, ?=y3!` BA-nj ;{>.xh-ztWU,TrD4FJNUB<:Vw16/pOQ>>vn :]m`vȆ nP@??`;^?wƑ(RBCfI-!sю'q@@ɁRD )%2Çy8mB~Z_;1Jr '# 9"FkRAƀ B)וB)_+5ACXTׂ}[{y˳l01 \nVV^AćKlټū ;w4eh͐yuf45~71e^M$sQpg+s8cqL_^xӯ2kvvPFAPPי;YNi!+ܸ䡻6ŏr>gLՊf%kV"ٜAGQ[Č|V$Z!o/_1T)7i O2QDdR* R}@!$~?qON2W!H*>sx•upo<IU3gi_DI$!;}gŇHUݠ/;+nb0iL2^Lr]$M?拯7\sż~y󏟪<ܝwmucG@)z C+bS(lf: A,H{-J-uۇ8elw UVr+8d-qMضuǛil:9}/:nRh;e۫gs4uVOy̝[YSM6iErJTy(|tGzk]O)%P$0l0!""y% x40Mױbjiř6xPiP\컆I';S:'\88O؀`:ntg7C5vT,>wﯖ~ӏGl,!iT*te:º@v3w4"w(NM4(<)5_S?2?]'|N|oҰ#Ad0P_?y"I{ѓ'nK/؏|=~ơ MMCs@0TU3gߗ9*++M#zak:2asgs?/1I<5g>wneuzs}Lڎ $|kۇ0 ]ziNBM{gZ>i[_(awRrϒ3J Ej& >X<~ee&R) $*<_/Z~ƱFKBMSغy#5饌cLJF\5eeFWlB Cwt66Tw>KO^#N86o3rtmy`æmcF5!y7#l*ۂv!hu]dKWǾAoELtt=˳@hJ rD"IRNaml6M#d #㱨8#*%]C@߉OrM2")w"iE˲RR)(DD!=)Pu]h4J%D G"r8grXםӫG֠\@@ǫ*]pm-bkUQ{O)vh^H;Guus"o@ۖBo.չ&ARF(R{GH)yR*XRI)  Fdt?| \ ַ[N#wq.U6׎9bf;"!g_÷h]_'~U1UUw ?' )HO@0%O{ٗ^|w?~ڶ??OՎ=V[ EknI8 UdK7}-e5Fs fj֛kn䜛{Z/?YWS;b|i'C Lw~]]FWnyȜ?7{iٰl{:WVoa33kqfGg\I5FM9]+zZŗݐ))wmn5xI/\kW9cacmC]UP m5쮝^j*mT拧3ʉ{w&қ- Eˮei ƾO^zf挅o~~=uҏkV }_` 4 O/>+W*/W0)]F u,TjYb9Zw3OD%%hPJfY 놖MwxRF1$K>> ݻ^S3qWr B)c_Ƒ$cl\u2G JI)??eq]}yR0/{%˲>C*S"}Q,bSui؈S24LZŶnv$ TP@|}CGDTضc#"CBϱE0UjH׮['¡Pn;e*b,r~rխ7"|OO8m*_xh}hʯW 14KV鈃]]tgU4 &՞Q2SC`S7[[3umwUh3MjP1w?zAP"FdY}+c&OT8ap1_y/r T F͚2uĎl L0!0eΜR͈R랔&hul]z죿'b#(BЏC$BPf2@`cNBg*ܮ\]ɣbFy3S h>HOwq~(~e=W,)f:(3)%EJ,R!sCbr&R he( F+ӔD˴5Ze~ (}Y0m1Ӧ샷5k޵y["Yūdstݵ,0W]q+ܖ?x*v u]t[reotvm?'̘&O~?_qUI3bko >r=лTSSVҫP5}Vzf,"2MaʌE ~ⅫL#hDX"Q 3Bx1U²-UKv<BB ?1'ҳN9 ԐTϏo|z.>s@Wo̝W}mߵl܀m ԫO_@7K;1S{3=]7H Ly b7Lf[HE*nF}f|Ǎ?*UuዀkxO>l)J+\/of#N?qtwZlP[Y2}ͿK~g~_y%/sl_~dftOX* tRX,w))PO_|fq?3@~F블R)e )@)t]؎d5݇ *T\h[vlAWRJ]ጣPD!0J%) " {FL7yX 3 jigR!ZqbyJVa9_ *58M<(~wqy% rGI:)R@`ƴs9 W9S.rk?x?yۻN}CgOF#m}y5mUV=v_u :_@0P?x(N4\LH Y*8=9<[JaFlbIT PtP<{[֮(J}ª-~p=!_$(TڝIJbs/H-ٲb? 7=;qօT?)mi9"vѯR"5n󜒔ʏJK"єCpHR]]NkQx0Q(@()HeKұ)N#b.k'n~'g߄ݽa6i|]2y՗ZB}v$ c;{҇Y#'M8eŜK_zIΌo^aRh2bpeLJ "x1&d]* #F#,ET (2PD)kBfwB2B6Lzv@"J !_-7.sIB@0b2=)4FAsD)h3A[̺\>YD),(IJnqK}R*J}rkLCTJiٖk BR8,sFmrg}G7>g{)Uq:C{}ROֿo8jmW7L*9+}Ԗ _MC{>}Dquu+?oH_M=^xn+wRRyRJzJ)%r+OMa뺇/Z#pAD%HQI @$YǞF]WMŠ>W泔K&~ͯsĉG^u)+7omL5 7͝u @TUA ;4 F鞹 mٸjQ ?Y,AX˟ӑ'hIv((=)wi'A(p Punb<%EvtZM5f̓3Jho]kyrL^m3pg۵z߽0ӬJ|/9D8Ro~ҞPޚ]c}Uwݽ5ήWyڦUuw\9 yG#]?{U.YXܣu7sI)A<”kLDI R)!C$Sg6P(=5|E2ULp@:rM:;bD'[,y gu/?sI[?=a)c7lߒeN/[tȱ]`hP(SXpN~iƶs;z{>yo}JI%R`׆QVlgK;өS'Ei0er2ʳdv6rIerQA_VP ?r;v4Tvd1֙ԮCkyUcv/=exQqh˫o{{B}K&QsT˧T-w;[~X=ɺ{e׭߽ÇGx.믺iZ[ ,e1CS< D܀Hmst=R 7cL=Ҋ;sWʖGrpZ;{7m\_}q{>|=O<'~cˆћ7OQ?k_<swy};S6]uiO?r-\ʃzmmg~~|+/W̙سqjYb, l[ .46RP)7m^1Zޜ֮4Sh8xI:yѮB3Hgqi9+W+ql&Be\wW["cH{&1cڇ\z4l^+V[_*IԤ3 x,V3~*%,Y &}5(w='eRdgs԰̪֜Rxg[kp5/smAN*x_xCW6Ut jw0v ~X%S;}~/\FA_Bay;gG3&vxV]>xk|"^\0ªBuݮ7h/ͷoQ*Y&\SYL-CQ@VN@4arfY-R]Hޛ9RhؼQ*8G۵|饗 8hʕjmsgyvwҨCv4ucuhY+{L@4t&g3CVgI 2Ս9sᵍ{}+~ݧIJ1VtU,嶣x%f56s Roe'Ǵ@?D\^|?<ǝzŚ[oE{Og:(YTʷOu.m4%pL5vCzuJ 4@(id׿zeXfF7Unjdᕗ^|ŵ?/F[蝇S~}/zWG.`n6[3ѽsMu y V%J`>!L:kU庮B> DTW_ε5(6Oh^ Xu=E8}ƫK[^{ 'M=3fu9J@+eLbNRJcܖbڵJ)?й|6䈆1ԕ$SA1AxmyǫLG8!`J0Ҟ @oB:1I&t*SPPe#*3bԸ_pCK:>yYϚMuE[UJV{-Z=Gn*M{]}[jiS,)9Nr`2_鈱<J*߻Лoi얼lmuP j2d˸R/ h:-WdO<.# :{Ҹ_{ؑc4VE[^r)OL2f@ 3W!cJ)@$C @x{5#Nٳj)- E0hdHWpasn?dDzzjTB>bck9rML+.)!x٧Wg?g{1cSkv`EC GK{AP8ڶo]=v{_8Ge/]ӥs+PD0K0LC2v/ M+'/o德p |(7dP)i**?LA4@ò5k:O{nt-׵6[~ٿCG=7lLT:=we%q[P>{sK,qN@_{JdR`$*J~iс"ҁkk]_9YB! S]ݽ5Lx1Wd;/Vی'njd2k[Z6ni1DmL<59crf u9/yaK7_^xذc[[czwI wYXi>SΧm )Wr5a&s.8 234x(bc̐ `]F`  }rQ?;;@~p!hXMu-v%f>x޻TURD :{zk?(*ݓw{]ՓoRג&PuRnSRA‰Ju}9WhE]cz;`}_;K.a Jw#0V+f! J:eM-yq~nh W 8`D ݱ:lD" hi9k/X=Ȩɻ_v܉ /xݙA;Ar}N@KOڐuێ%Z65[Vq[IN{2L{BK&k}mY/ E{{wM]uOw1x핆S:o4-@HSCRY2˕t^UC2]]G{߻k>9k#9c}b8s9_"  K,nJ)g "m*"ed+F` *ydjn<3 oq-T_όдfբݫj(vM:JvJ*LX m&P)WGd[m0*! *@e{@C @nJLlJ2iYhTW[Ko6qǂd }wxId6jȵmxXȑ1 - ʃewRcvqѩkl^> U xc.&Qh,Z8?+l+[U|79:eeɘs]uuܾ%|2*S /~?q {rADKTs)erTS$LqFC1D,+POꓛm7?`[-՚"6ѵؾMt """"T&""""RHe""""T&"""RHe"""""T&""""RHe""""T&"""RHe"""""T&"" +mv[Y&m;2_X>BQ#KϾ̣"@>;Gޛks͹\O¬vt䋅<]˭vu=7󮼭iCڗ[z~v#67_(-\@3.o) p濆{su}sϿ [.:'Y+/1mt5_ww?O| N(t\ \\?><{ʥܼo&ܞ6\uE~7}m9t,ذ蕋IQCkG^ zZp?yr*ڸtUr=w?fYtm\0#S.(@Ph^6 ^}SNz4زfvd8>vL468)O7:Soq`Ԩw*StKUbyL'Ĉ^Q#R/4YU w^g!#bBs/M!h >.Ӥ胮%rqEX6EQ=J)[(ERJ)!d8f )CT >&kh G@w dJ. F*q{ Y+6zc /Md˯q|M_~j٩D\JizV(.0dCwL%i7@‰3Dx聿nr땙Lz֚~ʏu׵aSWً:sޕ[]8TR]w\ yt\ߝ.\c0R"<㟳莝M6%l%ΛuNҋ Aue+t vtMAeo&=nM*yݏOdH4>8@O 6vF )NC wfmKS#"c es+XZ^=e>on~kFFkX5npFLH4kkn=绽b6.\wu|GyEӟт2]s͔k1fŒ?:oUWWQC3]rOrՔE ^ x}x[^--7eE,= hQzT&6oq[rk:sm\V3b{/\s]FDTwMLvDD&4#؎L2we<-2ٖA*DDDlG[\)""s@_&"""Rf(sLJ-^ZwKTQo~ۨ3veZs+˙[+_y ZQ;<5ot/[~H+]I_?['̿uʚ+ cF&wˁ o~\]^_ߥ-~W{PG ̼d|).sADym3Mxkяw:査\:ܩ?boΟuD~vb~/x н LaKSam\KZj VLwsڋN=c ܞ{uh͌ `ɲŠ=]t5ubnKWOucg>YO^OBҲ.5ȵo--k`u,_8̙ o7jO:[y0ry(wmk',X꓎_n)?|LPwgٲbڴ^T濞+W=L;f/)ɷ}i׿9 u#NLW<3s.c1ݶÇ_VL<&|3OwnUꉓ{aN's:{AO&ʒ!cN'3G9a\MFutz;[V.ߵx/B |1kdfepzSz 96Ϙi$-V-Tw{dID9""װILDDdDDDDLDDDD2DDDD*LDDD2DDDD*LDDDD2DDDD*LDDD2DDDDD*_1Q:"FS'j;NDƘo gAb־#[{?178r " O Ѐ!Cd !c A@rj"c!.!` *wsH3 h" cH+eT`&tr֯xUz۱c1?bkZ@@bFCD`Q!Sn@Ȑ 2쫯Ȑ1Ɣ51c0VFmBpΣVد-G)C: DƤ;m kJf25sJg PLH5q.2۲"BB`@482 2/tsl FDVM u*1Q&:H` hCF뭦cdB3Őq h B0: ֤P $ Ǎ nPy,o>Yl6;=.fLTmcu'tA߼\%;fR*s2t6}cJfcS]]iKD:ZM#T:M&TbMa>r1H\WD.k96m@΋KX,F@ZK&0de-fY5~P??RX< Jm5y %WANM ua3SJ!@i*G~>)|(ҠJi-KJɤB)ș&9g24d8Jƹ`ƹKǒM^v+7utosOq"0dH !p #NDaWRJ&,[ :jLmI0`F_iIx"2HkFD} RJh]r}m ԝ@DF$d ~0c Wa 4c\yNMP1x1F  &8G1䜇#a@d!#Zk߲ۖ-y̙8t&*c@`HhX0ƭap0"C?,1}p, {R} 53ƔR+l۶,+fSaY!KH$"a/XƠ&AD!Bcʓ fSܒק Z3~pG1E0lnp%?rD8,XqmI㶹xmG}|eӭF4~gv2H!!hC{N+:liSl [7c9\o7v\]|sdж҆!b@d۶﫪*@$RLu)( (7@ 1!0tHfG%?sAƀ V&=3.} M< 0ք3YN( -#--\ $璳0~-ѧz㔳BTS_,l ~ύFPI+z{oXѲr\ռE:;ضI?VC] */d!S%rR c%m)mi9$DMc̒lm ̶lj;J≤qnb% }X(zzB!/JnSZA@ixv!Ø%.1UhCYfTFWVyNd?iàs$g\`(6Ȁ3.x@qq 8qmj ,;v̶ \m\2dˠU2DDe @0$VuBPg1H`Qޏĭ!c|c(\N)IkC`24,G*K~"5KZkuG۶b(uf"2W@5^m&vhj=͝l6mljgÝt煎dlu]q6lnOσoB;znXz*L2b7ړO~ϹOde|?Xbis='NT)8}@@OtyCGnDqթDQwSO\Sd*A|+b2DM}qi[K'`]Kyx{1c4~3^xi]&fhoT:TՄƝ{N9S*--B>}e;5cȘB՛yH0ޞܖ1#G/I i ܥ>+"U57횂W)#v`8aja>h#i /2TwgUUU1B5ql.8-ȓkۇRIJݴF0|cq@a9RPTRITR#?QJ(Sҿ:-e=-gx\H)'rg/?D.Y~߮#O_rVzuuD, e P0 pAk(X(@@Ǟxeo"_X#bks e4hd-noر-ڡxBJK<.$ (@)l%( BH%cZ0`>7[)B)MJ14JI E J*BA$)DB5I!v=.}AFP_P@'f?*P R$Jh=9> @~\I% 5yBz'wqq](;Zf35B(cP=Ohn5BJµeO=L4sq0u(H1j篔~/9bg)B(""A!%O̿lvJ"૯ D.>}P'Ś k9jڢ?y/S;7uiB 3Q6P(T AiF#QƨJ)m3/m7ZU%@ s. O e[r"^{c.H4!<@"\2-aTcLPc2JllDz}hh )a@t]$IwK%T*^N46 A(*B )hH$*HBB@JH$j¶kO*V,~ˤ|*rbvlr20!Lc0MDuP_O \):4q>(P\> !yoJ'G5 i@ou<Ių}NpSRbnPT:ܹ*t}r8"}{nm/+ni[gQx7aSׁgxvǍ0"ڞ Tj玽l+?#yWR8eH8H}w_?P=Grʹm#"E@M?H"os.p=qkùPiמ{JbQ@tlc箝|dC!2uMáHH@,F< :0X0lZ9W$8T(P{|Z+~ǢU3"\WǾF'"H$ .gMJ*dL!@?1!Z ROoB>WBVpbqdO"8_ /̺oݷ~)b\o~/7]yoJgr۷2ϧ3xD$r됸>ld6cG:rcI5\П53*ȐWB өf+[~?FB7nBDAw~H;َ]4oܙ#m~[/ p$ @=0"byaCH,Hdɶm;RpU RɤWUc zTE>|BZ*4T7-]㣹 u궾"@c`(K@ ){ቿs5aa2@r"J)"AB NP-SbxJ*%!k"P: 8Vihk<2󽥯˖/[ҺӫH$ɘ '빎+r%;u2;oM 2B@fϾ-;m޵wˎ Zzں{3u *Q di"@ҳs;˲`p 'g@"HE($um 2%L9$@ѲEE*>Τ'^ia M+苆qC`.8;HDVi&D<5p2ݹpS_nO0EcD"U6@0?[3Y|8@M3̫{י(&V,ѝao}DE $H_M,_sk_H(_ѰZms 󣘷/w($Ͼ"׎}Gfs)Q)TB}ѿYպ}{ 7}mƭ/=7{ɗ~?w #M8fL(%ūb^XVp$lYtLu]g:c0UU5 ̪qu?Қj ݅s[O=brqNƕU4LZ`LgTDDcTGFjtC'PH=C)aLfZ$X21J F#J=l.#( (sφ02]n`.mܰ޶.1gJ1%eXTB #LɧKMB @ gTp0M Ԟq(R~rC+@ӄӹk(a~H$r8-|19˞3Kgc2L]ӎIo>pWvgKMSttqnuO;[:fOO$`bcc~ S #G5ؙr:LT'S4x`rt'@$Sw.> >%Sͨ"_x>WmA_)3>]j(Yxo 1Ǟ~̑O?iǭ\k=E]/ T Z+QcR]UJ)uJy'՝x'<}tǵ!\NGe =Yx.9ǰ,Jt-J(!RJ$k6ej$fJEߜ@*:n:BCNZAQ2P>t][PhYP`$8ibCup?S0F0t*@AK\ J(2EDB($8 W*,q\."BeBP PN {ϗ>+^lky!]&G8P|ZÖH>psg.$/h9q[; \WQR ]0mIӎ'HǮH4Ezv$  ؍R>\XNn|kQcZ~i.?g3FA IaKa!Hkn<ƫ)$²޿Wش'_םy+?|θ'MGz;jdGm۸g`S@(nv|BsK),T\'ld(ԁ)~O2]S +Spp᤺c'4=eeGPP2׶w})q@+ŒT\A@816kYzRR3"TIJ(DE ")B|OruXfUD!(K038P+8H D#RJ MQǥFIe$#sPD4P%RߞsOH%B(a9Fdax[3@s{'fPB4MLWxs;,y|Gcۄ~SqTJ(oDJe75%3pͭ|bP:O$`0L3VV(ǥ)4ȱ~ S82I6`W^s7COozH*>UXJbaL׹mvt)U `}^̰Zsϧ2l)%J)J@))/&Ӄ/ ^iyG/k9]G̙^SYiӺګyl;⑐"hmETw4Qh)WP *#,]e&ITV%U0jH\fO/2!3m%#G35;rң "ٱeU2JڥxM  a€ \GE" !BBBR~wF);@C1&"!@ q!@P_Wt;;[X 8,`宇Pe! %RiJɘA)% t PQtB5Rz\qQNY@Z) L, |[*r*Ĉ&nKP,yFʤٙ׼Egj*O/s-M R@ I XSD)!}n.Sg?.?qbT枕sjqSyzhiդC>+~G= t z c5ܔqCZEM!4oC& 1aBp]Opw*c$ǐSTJ {豇{y<qԤ}Zyp~y˂Oli3TE4z N=fDUή,_: qt) (` VՍ6kLu( bLz]m73eRoq<>gDaK^8.-mNhU;{X#Ӄ0eĴ@ V(غIF4F'nihݲy!%@7>!6' ']PM,!{NA?~ )5S) bX8 -&JJ5(RR$'3Y$H1ls)Q!H (D1|r#FN4vRds}ʂJLvFJ R(I! #ܢKQd^e/>S*Ƣh ,&Kvx%Wn8hs݃z.Wǎ)_}Y Ǣb>N_]uh8Hղc{km:_|eu7]l{f?~ H$DQ> љ@Q4IW*|BMϗ  RR D!TJRLQR0}Os))}ZA4h4lUǃaPr<{wk,diX0 ¦tK!="X"MUj t!kO3 E;[(Bd :an-]N%|Z ‰4u4ztHݮQ jA"l^џ(cCSeӧje/_xEï~{qr;~H(F5%ȡ"1@)]{=u@Iy^ŧ 믾 #*hT:wхW,zjsSF_]Wk"@0dE#`4tM33==vtK# OW-IY%Ϝ?h(]vt``o][UؗGOyjjزsQ#-T'ߑ|!\960*a4_ ۗR@E$ PJ?\hmZNq1c Jx\*Eu) ri C҈C3'`i`~; G"]&SKD#d`lrȸq ݜ6h}l_g1}]ͦE"35+(I R!-=U(QѨ]pHSD%  HJPKw}(AJE$2( Ȳ=0ARJ$'C+=܋T_8KK㟯FbA"\/bc AD$CP{(Q Viai|_64 cB)q`Doqv9GvvO]}E׿K9iltK<"LoױyoנlB  j;*;W47Vׯܼ~ֈex@{}m]͹a M#4ztǽ{fO!zW_(6XQ%wgn3u=2u߆ rPB#ؕW@!ez<Z"R4P<Ɯ*=;Z#J`s8*J)!ǥÁPb20h*#˹߸ALCB@ b8lQ0m:nlTr vNL8j /Xt =7Ѽ*6E=,}k2_1I0$HhӝmO8n(PJџۧQW(p)% (E*zr̒C3>]"Sx]wM3w}m}ㆰw\D2%k]LgOYhuS'Oho9ftb-x>88kKwninݝBb̐#Hݴn͂=XgVh̵te|^J PZw?H.zADMg!IzJt66Zrx74- jzvַ.o>+#pev2Jl)wrq_U_!\δ̣ĘwqہX$EC8X]x!04EE"c̩J۶u3'Ѻ)I%ܡTS JRTL b`sfE|KаN,BJBz]%M$V*K'8S*c1j`Y1Mn8~誚XE[_:׽}A[<:ּi;Et}ɝkN:f1;+,\8;վx$V_$ J7!L!HD@,_LO_~ K|k+/0 DԐ %xR woxdE$xXogk54(A+y%!mJ9J )CHUR"_eǭK;NEԁ'Ks$*}D|lGUU<-5|oތ):"b J*Bc=ϳ[,{^hm|$!!B pX4ּ1\vպSkH R{H EqJŢ-ͻҩtݨ9OmYKe1J4ԧ}Ź4q-[FDiա3 ۽s+.( ;lWw돿5p |U۹gaz IGtumկ;oMaTD izk凊 =8` sǒSA>aF&^mEDҲ,J09]s&Ҳwطeĺ2C&(wJ)',_*@RJ*X(,m4M]ª LݠL+_lA C"jӿ 9]k*B)m7~˗8wp]}~A[R¯AR14 **++*L,*=6߽ϵ{&LlҬI#jS a;"2ʐ9ZCaQ! T,n Kţa;a&;{*C}{D`(;Yѕˣ^qjٹ/~xSNMѭ="(m]Xp!#7`> ?t^DEB2̝wS'OsVBȑ 6zMUUx8`+>شj]P"KJ kAضC(}:コJ,s@ V067/ j-xꩾ]=km+QCkk|󭺦gziufM zVR9Y=,kZ6R^DwNkݼvǾEOJˉM͝waKF8Ep zO?u4{T Tvt+z?^~)¡SIQS/>+W^nM6qr!7XDrǶ $JR( T3LP1 p縎|8\p!YQq]۶;āe>J$:(?|#!@I%iJsẮm;s)5< rgj!|r@X\κם5k[>b`4X(li/]2 Pi֏o2yΎ>Xn֚ E"W\[~sߔI??_ AKgS8p5N2[C$] }+|?>lO IqW'KF7@*_jݱrOoZNI e/Ȇ+#Fҕ߾吮*@˦7DeIk:rom&jKo?=_,2[JFOܯ|KrDU7\-  6`܄ *>2Up]Ies)+`04v@k33Mmm{tkg͙?_{)l6_,:[z} =$g~S5H48WI4{(@TӈS_D(̀nL8. z{|lDPRʲ"ј&A Eє\r)׫ !DZm[arsZG'F̰W>_J5G41|ΒVEVs2IAu^(RĹp`"\R$@hLg- E{(Ӵ>|CyߌTW{tܑb?oSG'],[Z/}{;mf @Jb,z7?~}Xe@@]m-nh)ȞZ0_:bm{߾$ Y+ uY26=/ v?{`x%(Wm+şfLzwXxsWaF}@cK;ib: Eg.^i;wL6әhr9k Gs[,=C`sdHs\xjœtǏ{襗[7o7\ӽO=.'/>L:\k_ڜm f" Qv1P"<%iZ>%G (U-)k3PBc_TH0ZZ|L}v3mR|_o{[qc4-[HR=)lJ#+(fz{-=G}S*M%HXf4$J1pZ3\.8iH8}--B)s3uٲ#N|g/}^y3z5>iJ0uĬ>Sȣn<~}\y;|,y~o:*KuMh]pouJaumjkXU^]ߚ={B_{7ˆ6:AzZ~tVnm|z0Q_g5r vR8ѕʞۇHq HĐ6d$^ |3 />svJy󭌆D tFkgAʙI7dAs km|(?f$AJ nͮ []ǑS02fj29ЗռvƜycG.m.kHPmx+ SS \O`12@眓a(J@H1M%Q<"垐 3XNEQX;bgW 6VWhc_ʣH)Q)qݏx.Y;I!^|ڦcƌҩj #ICMfl߹%JWUV麕/[wvw )(Qmgu '1p`!f{hjx iim]t)p/:mVuT:'z+Wݲ³/\l4vzw3yǞN ,WDLZׁA!ʵ7E)QH3 9=A L#APRJt1|9c=*˰)}Μ:}2I/&=)  `(ҫIZ=M2]τXw?앵fNfy'ģjڲ-aTƲKr#lpthKhf40ai,j3j[v`dgS_WY[GtȐ[@ sʅ RS(uDmaКgvȴh$%dHYCaB̮n%1U&J0}a])Αhƴ}YeS[t-76^߼[?CoUw5ċOڵŤ65mO?HT uϽccuE_v֍9eVX (]Mss߽OE}Cӡ'eʳ;/Έ['^zisg{?24!kqmaÌ8hJ)5L}-5 +R(#Q#DR*Ix3vͅp}es35m>kISLw-۰6PHW(+?S'kJ ct94c*Tk$ҌjIF2(ّSqR`UV!D0 d y5)NԧVL.WR%7[8F([5jֶF_DJȗ/~roGOLۨ-mPqBB\2.'3H<16qH,m'Db(IQͱ* 犌A+CqQʎ[.Xx~Wxc~}܋īr,扇^z_Wio^ɖu~…Kws8o_|ǫ>^rٜ E.5򝧟ǝu.nm?>kHdTGlm=`]ˬ~)>Y1n;_=77<,@H$2vb!Lt2 D!i 0%ZiX* J kj>^J2kM͌|!oc @?J*BApZ Wtv{tmJ(h9೵# #DQ (Em e!< BZK,O "0B .{Bp+Zi.Dw+42!)VRSPZ*/X:@>EZ~ï2f1J%bɃW NW_'=^0ESb-EiŵRrf K$LD7̨i 3b6Ch%}_p0RHE"¼7z_a]_V8aڭ3ijlˀ'ozӏ3a'_K@H)n?EX1_ZpL?wt.n0:;"vRz7.&͏no{10 x}xW_4#Vtu=x,Qqד+)`|?K|ıUզah=ǟw}Oo[.x5>TWD'P]>6SXٶ"il!% Ġ 4/<)4JJ1 Ԁ1 Rwt z]120MƏPհiɸRRvvz e^xhcsm8D"m;)Ê!jlhBR0 4VB !A $+*s-W_{ ߼=ʥ_? ]qΙmsv$5+hݾ`#,'\v^`J|޲6Nl#E}䣏^ٹzGgq፷+/?3McL'YQW[;-ߟ764(ikk6uI͛VỞI|7GzZ!:&Z!Rl>&(1!QcŌ/_)Q^@ ua+2I"i:?ل1X#.C]"\54jzIR1 uL5lsC?Ĥ5Dl*cYay *B`3m-aP V4$S}f#!A)A#V hoTx{OrO -aދJHXmO?=5ߺYTqi7}p sk;iSv,JǷ⩨ItEؤTRIrԂk=66~\wIMbİ !XJKPPXJI.9c,]!\)FZO^M3~_LYDo!M;ikظG^x裏O|Lc"m޹ 4rfT2yZgwc /ݟL }v"G8.Xr[p=Pe!4$c?}~}GO<[ۓnY>L ϳAn!J~;KТ66Y2TI ZqZr΄53!BWZ#5cῚ{@1' exT%y<}* FJidDrbj,x7oݜ dg&߾꼋zT/=&<` ,!&F+b'Nb@klB )A{TPo )A14! i[Br(R3wl~2??9X+B*ՇeB#BRx' I%12(Rʀ3-RRy%J)%亮ֺX,1mʆpup\xRJ* !T,˫ʨE_*9(3~'&\Ʀg?zUiw?Ơ.1y_~yΣ8r0;/f=F\HGO!gO;u;53>MK>H=յxl܄?Ys턉 ;*S5c*&g@nQ+0L 98SQQ1QJ*ZJ#dPe؈`ZHf-JMssrb V}q )%e22-4+ JE)ϻb#YNB+Ż]t؆*K߽mo*4YcRpJjRk{L˸ܢ,7l Bmi -,~@ s(x"p]\@xX(d]ooXs H L#R0i6-òM%UQ%?0m<~LnsL,ǖY{wasɓOVqom̏3mM5 W$bL39W>j(mOE/:'߬g~ 6SoTW}8;T)IG´P+|P`O} BҺrΝeUi-4=28] *?Ro}+C/-Yb p+ϫhly!fTvdDҘ ƢU*Ԫ갛fB>9{N}1HJ"%T\pư|"Rkg{\p T!HSX!cBP(5gcRjmmm3_RHd[8, 5<Bvå|F2]kw(*SE9[朗"ĠBLBH c3B vBt3͈|ҥ6nPC۟xz׏se[H1; ު#|ZgMklw?tWwO塓R.sBE4D"/Y1<†wOk95[;7pQ˗i߹bˤ f|7veuVouܺRq)Vrt!Z [ `-2Crm41,1.'zcBRJP0֬[1c3uG3O9vohbMObP]fuu]'v L=uܲ[W/g^dݮ X[ge?иzi@Ԋ0`Bֹ\ R-t1I %b1Ƅ9Jq)B 3J lc,ԟE)gN!ʤ]&fL2'XBQJZ{L@*!D>Våfw`uCJkc(P   T c8aj&I@(A+ᾁaϾ:`{! kW/0;ﺷ2]**yձcO9OؼIVȌFP4B Lfj~po>!gʧJqڼd2Oa9 +0m'~|52cyke5p@I1{M:/}q}3sFHR237 b%!kQJ)8GјɸZ0}*%*l{i]?s?} Tm֗ۈZtaDDrFԉ:Vɗw}祗\2qpw>{{{.X)g=UZ)յv` Xdۀ_صyD.j\)1F" 9FlݼqmG#GŠXJ+z;P c0@:]Y. 2@KR@JS%+@)!$sJi_L8+ _H)8aR<.K,f07V$JW(BȎ8J<2x^$Qnh,Xd*|XB~ڐ_KW:cR;/2mwʞvg9*&"wc?yes%R{ws5HĪLg9bTq׹ms*\ѳU8--zv7̓yécWJ#@ J)ſ2hM 4LlA )*j9.Y})UvbWOWFHV}+4+.: )qL_xk]אӭ)lq;if;3 ]i;cg+2tmemv`dzQ_A]UcaZ{h` 빝#\hy+ MLZkҟu|.5A` 8/MB D0)"0 ҈MLe4{6͝RQ/=y15i7HJ#Da)."  "Hf*X .8 ㄐm}.sȕK^{՗80(݄8wdd̩Ly)fԢXJ*R7|޼?C |ּ}xu,OYUI%VnXSvc]}F _|vgvݯmѺG}ȳNFJ)-,+et9P][/&ٟ6XLÅP;H#ZBJkǶHk4ŢrҤIe\wJy}-FJg~v0AfL}'|A W@D#ѦLcxO<Ҏl:s1bӮyw71o-&]ɵ֍{N,6y ?gݎm$ s}μqo~zAkn11p.Stu&RJ+KVe7U($,$E6K%`m88v 4 P rP%6 Mcӈ45T&m!@# (!44HeU5F8u0IXw!X8?5yn4739kW%cK/ƥBM[ r0長8Cp'awt=: %NeZN{u{ٱ~a679nύ+ =-9UoSrd$^yǭ/4ilOƆj5:B|Qe>֠?!@"a{pR@Bj4PթF 7#A!Nxٶ RQݶiy\]0kNo(ݼ};~h`y.;NiQ~ ,˚329CJؚ4>v l|͍AD`!XVP6Сb $au" а'{E%mn }.߲u`:IF~bGb*t˴q'7_pΩtg>? _W8)ʥD(,믷!Ԝ:ySvl8;vUXrnNJ)zW(RIYu6u5LN+%G[Rᾨ2ת"&jtG#RZ~QlbTCun.raǎD,T*%UcGHw–-[w܊_Û.b"Zl$FE,62N.[uךPΉEQ"X3uSPDM}4f l;bPWG#^6?Aq˚5 cjgåhb@13^g];{8\1/?tfWr)m .g\9 .ITi*#CDl'BLm6 SĶ K0(DaBtaB`K4@(-ĿZZ#PڶhԑRq5RB+J[ NP2Tv 3k߻j} 6!D ӹ{k#K7ٰqCgƠ9aL% LԸXq]m߼R,rVmouPoD+U _?anbI)+Yz-"VCem0 "|.}GHiBmCi}.rDLkTg: 4)Eb)+1!3&K?` qTIwPЃE !=_(bۇ;`I`6(|P*ծxwq0.?4J$@J)% %Lc ɔbm?~XU "`LR*}/;Onuk>Ym7ړ(-<g2\XJeXB,K1 !+i pJc%iԴ;g2Yu^}n;o/5`)t*$HcFar则/ϛ~hOI$4=rzD9 mvo8e"A&Q'^Ҁˮ0OL{ 1*Bw%~g-^v>ώdUQêpgc\ ?'ve6Pwov)c'޾C!"5TIMTi!&B%AiVix"#572I)kQ}ڷ5]DcuTԐf PJRX,'bs9`YV0Jh0/PZkB b J@8P  ӌUbX2TWg*ɴeԠpb&Op|$3s1¹Bq㖭{e_2art:FJbgW\nhL7"Mt=ov) 8~7ٸn+ VZhSK)RBC ݽHqH$@ Xv7ɺ\y~%_I ̛ ssg|y1w[ޮC{+l2hmJĒ( )-CA$pZeJR2YIW{N&ث8pSعWͱ%@Xx,ko[9#۩)@ s*# >V>T璦cLj#1 $!2VBeqfێ<277M[0m}L#J/zゥ0rVVpdr0iKIWR2'$TNS(yE~dC~-\PQ޹nKW"WS_[}ቧ}D*C@-5)uO={D$#1̹i!%0rSPR!_&J*Ε $39 #paA8 EP$F4Lh*EB)!+D.M+-*\QJPTHxS" JJ4!W~R bY2W&Zv}?\hŲm+&wәknfJ!5|7(KRm~= CEEhM0Dgcz=}x[Ӊg^x-7x"ʺNNݻdqh3x"%ٿ` !(odļIpqиS쳝2*oxcrN?KcO zl.J Gd,+aֆM5M[6 a~t~O2qp0R\qy`J@$µ\:0TL %25²bIY_4j-fq4"a,eӦm`: FNid2f03 qΙ2IFsY@pF=FRH!%IRD*v2$2 3hGhGYYY$mӶ> TJ ":NqISx"RD܀BHJEBJ)@J!uM__=϶kn8}_|eTζm_fK)1~1 C/}΀t `PltQQA0M]X\N92Ƹ W_驧٢ᒶdFEXF-혆U &`O8pС{{!EDƈ0@0hH+g? 珶OVIvΣʺL1@Z-[6ŚXq\4x2J&*?YD"T*էʪ ~VVUaGlPg塝Y> Δm"Gkq,oI)өtQ႒bjDx[0.)r`pP8H$mOܬ-.)DuU7fA'F@^@JI \)$#onP车+q-*@.2,QXTX^\ޣ"RX m!cuS$)ATr94` l>\`B%0JI!"j)P" 6q|d炅#K Yԕ'ҕR(a'_6N|KĜCУnj*#ljinhw`{'#Q+ʆBhD*  WQjHAB5_qRغpx/`ˉ>oXow@R: !Ij;z7T; \q @I  mn-AۇQ@iD˗J75.)3|!0 Pw=Е,+Sl s֍*p!9;e03ɤ:1a!TLƙF-^Գ $)Ӱl_@*:aYctɺwڕuu-M۲r_jsn9I%SȐ9 %CHB$bR- u=EeK* "¢H$ZPPXBm18]dSHy[ID @縮R@0%TuVH[@It"4+3/>~UhsH؛nmi)*-PTXqܲw62Ӱ:tÏ`i#dbDk[jROip^*vm Mǖgs/yQϿ<[WDD6+Ey F+ 6mhX.38{CkeٔK,H|X*̔{Z̼w/|y|ƙCN_j%UO8oxZ$5ފ~mTBb@~`A-ֽ#Ze I"3.& Gr\c~}}w,)r\gZY9^]]`;~IȱD#78,!RcؖhY+r\7e-e<O;mY0\appf (lzXmnUC-7M$(waRir1l>c"E^}%bJ7 묭oUzg{;wv.bݥfDo 3zkHsA Ѱ i@ݼ/1B"28"" `(pu2cC6b؅gqonl-)+yy{iӗWu)cHljM cd&ʤ9!4j cg3dN׈y/܄/g3u[,Eǟu cKOڿ958w6L}_Һ#~sƚ/9hWJHWֳ|wvzD^3mTz - uXw6~:ׯsWVpSWP]lvGRGAGm\.wJی{:"\ ((xDo~wK@vePgPԭ+/u8_*P57WJi~vL J9㸮!J "e0$A5x  lnkްb=vZVH !(WH krC08I%AH9!~R\&۲T@K$aE~?J WYt^ le:JZ.ME\MoP!I6ɐ!txn]W+ ᶴe+o ߗ+@`p xF rad#2_/o{j[;9(UnMGGAv}WZtkTd. >G;ᱻ`M}k2WTk㊇79DN:ƚbS)׀;Pz.:B`+ hI">O _rS3k2L.̒z;wׂv'~4/7! S[6b)inyڧ//Q{;p'翐n6*F ^r OS0r?TXyh|Aw.[yөHٖ@:=#o01K#-ġ#P իԾSD<O,3c"87/ AuY:J\s~(þX#޹W~K_yiq e(C~g3us"@)a!Z[J˒x&-04hYdJf0,*.. [J7$ӳ0b.[-Ɓ{'[Ds"J![VEim[ )ӰI9+\$)u\emR{V{d {=k9A3FJy+`Oo904pD"%T'>,Cv"A-YhgoSCb?7ޘ7iXm͛TYo01p؈H hFAa h%PFN  m@0PUۜLZm9DZnjbs 1SJ)P7uX~^qj~Zu3.gۖeu#f/r#OZҾz#I 2#q0 $2 [EvyD b( 'VÒ*%ecD&d ۯj& Nm9̾s;;pA;_pE le׶iXvϞ{Ɩ&@۶,RX ll!oJQƹ˹L"4JeM_}(\,eeB@,>?Z۳rߒɤ\)$RXTXl If''tsŋ?iz:8F*P•R(בCWI)HARJJ%ds8J)Ƙaisy ި#3sd^w#o.p¦ϸC89gϽg&RMUխK375WLaK+QTH$HҭohiU׶nWLWg~eɚ^(nN-GLX"s%w3U d!JLjoc Sv" od~JnaoP@) \ze[V"ljnnuRپV.) t^0 2-ƺyJ8◇rar\fM6hZ#xX}A> 崴Mf3fEHNtGK +#E"M_NX=x0). CE%bppݺ|(d7[s"%4 + #hqqv1p]u'Y\![H!GNļX[ʯ NXy3OJ%lUi*R]}(L% c[o`/,?!IqO8;o}y{sKߙP_ʊ2|s=gN%=ؒUOZZͤfl%c "ƭX[ GU\*-9nNqA)Nu Wr9&v8"rd3ιsQ~a%j[r3X 3R)P y3Wv8. gnWROVzo_4eZ}{Ӝ8.ut*ҧG>*z|/[r drlj"=<˲#_nԣO5*!C);g3$zVwrvz4 }Gnꩺ>C[ǤT b^>-59ι3-@8$?h|}|P~x[mC>8x^׉Swol >7Ӫ=@w DL?EӺfC:)$xp">p(gS& ,wGk.:|G-ENJ٧W8,Z7=|OuKSc++HJřRM$\#J&BIRv+FDϤ3i `&"":&pOb@10:R9ORIPz RHCF9A^tӤ#|*B[ QےP9tKX{1>s)D"HoyS c A̋&74pMra'|I2TYqdnk.:EKC!^$[:s#+zĔ]ƛ+:{ 浅Pb/q]Ef* RhA5NpSģٞuۨp \WI܂PjARYSHTsM3(nL8v}Xk[241vc%@ R%e/BqY=Ϥ}C/qczɳs[lKҫ 8pr`^mv DͧnIt͓4DbNA=} ئWKYH8f2hQIg?v`xHE{}/}_OPe tH$N5o-T,oprnCKcϛKV2u(Cd[}2K[$oB_Yzae3e{3':lc/gG˶sӽ/{~lѦmmDRċO{L=bb/t^CoA+%[uUtvC?>V%snJ m۶8.XqȁDd͘]ri ~5. l/%r]'N Cm:\_T.>~EU޶g|>"0;nc1~7>%e qD'Ǜba{7Y;>/ QQ y@$`̀>a}0XGv[|3 4ۘ-\#H14ܤ/@!\.!2q7Ʀ;^o fϓ +%fIǀh;d!'qlY!1?g6=&{Gf<=vɿ1iѕ]9CS.??ޡ.:+$[bɪͩ컞o&p8k9=®Gyhn#diw}:O8c=Srm@W]}zo|K2]$agvRYcn?Qcoyt-=}8X,Lg=X, eg GzN◟~F;X,Zpu)y򆇚LiT2XC:ﶗTzws+3{^Y Drs,>\wb7x ޻ܖL~S׿9VhذVR^kҝ?uT:`}\izߝ}%K``38tXK,1шwq{?\v4k3w;.L7Xm+K,`H0#o]YE>4;? O3Y0jOPe~cW`QJsȬXf?t?Ig3:4F谌Fh4Fªh4G]>d z6e4F3q ޠ\ڔh4րhSF$Nz-Sӳui4)#v J?Jt#g,屳~ˮwI~ݶcgN|ŧmW]%olc>wy٥Wkl܃+$+5g9W]T24McE_ҰkocvjuS W\t: /䦹zƍ7Vvܴ\7n̺[i 9穻 c'57nlKf;4SOܚվo2CfS+VWYjSW;EW !9©O㗩«mZ謫n)-yIOhO}7uegIa9pa0ϗ.ʑWQ֑Ыo}6)DC5?t\bIc+gsψԌCN( .7c|xu\7xȮW]|r0m=Hh4?-6uU>E[|Ġ9\4o+?jPdcG9oDd3 uB[ J&fpioLBzH66e4GnYW!3pHiI'qj%Evک_2fuip/ω(뿲rҭoаh.9R*7cqڗd/zW.s㥧\rp uaGL05y'[wW^]70 Dfׁ'N8+^{sb8sƐ9fk{wجѺHh4? *Fm4\|+V}NmASLV;+)ru#I 72^}@s$I9 <9!n+d*$rޟLJ"ob \A"w?p' _Vqns6*Y1W_nD~Ϊ2rI̍C~VHԇ+6֯!өѦO6o&!^*qRY-*870)uI o~הw0klpxFwtiw$dN)5)u;\YYYY9.ܶ!#w|ڼ4C_ ik;\;gkuvag%OΞ?k* 2dMɝ{]Dn5{M x`e;YYYY9lMw=+c<~2Q{|ҳ TMl~ n]FwU_X_~q_q@Vn_ѹ'DM唻MK2}wּyӐVw ?U'DdF`-7p oĸ+NWfƔ<~׍F0M3ia;rK.{ v8>?C+Gw1?6kܣ'7-=zcSǾ#V,_~]KF=r1t8l ;Dr訉4vƾ-xrRm;}O?6]wwqc8hSzԤpG?֪>kݞ}!CF,]>]5x𰅋?jq]C씓Ozyڵͷc#&z/͡#U5Ŋz\;]zv.*4Oι⯪PKg_=Zk.G˳{{zؑ-o䃎~^3KgZ'J ^tˋAZInې!_zG>;o~wŷOۧ>7:y1Frŗ-!CY}%2^9H:E ξV̚QF 6,Nk}ev$ly> ΁Bҫs9!4l4,J/8#Fł3L`r3.'F\ID'M5I- oI!7m.aEl}Ǽ/Λ馻Av~}5>C"*Ykks7o?=fG#R8C詛Vi|㩹3ױ/Ϭ/xs'8h´=.tr_Wl 5?s G@"N8ÏyU&TF|*ڵ+6|֛sn&c>f^:_2q^K}įG0æg7&_W~|~C|>}C&cɁ.9WG~֖n#Duӗh>̝yQ ri7qҬ%7ykgH-gx''̛+ql3F `q?c V녯x.gժU("oMy S(ܨ`Sr&rU.@gѢ\G]󏏢'6Έ |UKgz9g=g_2rȡ'ReuGo Ѧű? `&W14@jeN(_٣#Th4ڔpDrY} h4-+MӬt:h4F2Fhv``lFh4ڔh4FѦFh46e4FhSFh4F2Fh4ڔh4FѦFh4mh4FhSFh4F2Fh)h4FMFh4mh4FhSFh4ON#͎"Dhk~ڎ t׏޶.sCѶvOOq囈RԎ5;PACDDdikF횟{Mۍox]ړ v#v?;sxgxoN "0!r4#ί!"l8<{cj`! w"/!v@_E?*0")R !$)AIRH KXKKcKs<\P e-MfnEDPmVuRD,̬%G.a Q>zK7#r߁R}؞)_8֞P)FVVѵkkF3f<#Ʋ,f8*#R)EL *&"m;`JA t" dWEEkS˰zd2e<#`qlqƕPHiq&Y%\q}amK-B%E'RR*@TvSf3}0#Rx"R "`خ{baZ,^Cx㌧j Ca;7M@JR$H1c$ }CC;oJQkmَڦTAR @TR +뺈R沀`&lNH)_boZzA*餼{6RCe`l;MﱫWuvkAA϶MΑ!2d@yKIQ{~kv{g kuXG,lu.g ϩ 9"3b*@ W"*ǍVV!vM+"Ϛ ("BNUCJ")"Ӱc 978oW2&U^]+濍@cSb@q϶F$o۶eis9r3`FպSJGaG0YTg|znvMg1GJŎd*HUl3= +UDUFЈ, l/(iDyҮQϖOJ ChmǗtP{c7 ` (RJv!*2̛ f"E1B.TRJXEdapθtW@@;!¼ +a{x,H3t ɳ`JmmxS@[|x;!ե=Kx>xV-cs;a! Vӎk֦Tɦ/ߴy ;{i<៷_yE7x:cs_?2iW* S={om𠁞ǟ0MZX:+2D 1Ƒy-Ɗ|Xd-FJBELEd`˄R$C\*I= 6gszo'""#BR}e/76kOi^@@*"!9aap8猼2%lE]]EÇ 3b#0@@Ĉk!SM0M3-sθ󦺆ߣARru6:?^ةo:9B@E~w $.0 iҀ,nt àaǎA1;[/+*Ez<W*'W7PW/ȆK\ΛoS75zcF5@T|'aFoYC\& Cq}ξuE1O^>b #.%֬8C$ 1 KG(t.(*b֔~|N#UavMgW-L/QZ+ZEeEd<GI)QF*RƘ\,;k-!*ctS.[%{ö[AP2jZYy8'$եz  Lv;|{0ÄA1 +p ZO.7T U!AElԕU8?Ic!H2m!baqluNHGd )32D'@yfiD!F'KXsHy}!"PHY/2Yv5k^O>~M4cTKfULT +IQg!@ܤ II0D7P֫RC1;k9H L /'AA+LiP**&{:Rd6%AZJ:QR@ @9 aɆk&H[m}AȗU,O_'L8Ikc$Fm+ܘ`jAP'”"I O`-j "@{~5цnl aY6Ib8ri x {o[9Yjf)07z!k_"'~-wԧZY?Lm?4uL< GϹ8|3OzDI2iG(|JșLaHDJ\ݵn]š i2aG-G`b'\Ry4A6rb.$"BSuuI@.RT"Q$ )HŽ uL080h] F0HD$DZiPl.gFh Vtw-Xw?9v~丑bSmBa1mHŒ]Aޅǵ6-^d 9:v@,UпԗFn8] RE -iD`͏RݻNp "u-;"ʐJ)JBa(RJײzڀA+o\ZETZQIT& @RA )|r[l?kcjZsԤ6)!-!$MIӠɇtBU1 GtR0 _;@RJR*AdJmo^؏2EUͱg[]ڨbIף Œbrs"X Dz yGfFkRE)BtֈWkCTq9\\~U/zڮw nTU۵"";8T)Zkc?c:mI|'LYϹƉP͛g0%\6}\/EL`0qϝwUtqG/_; lx赃va&e@d]?!4@}ޱ?1. ";JI)=>G=䁻\n;-5L\ O!̪|vSιs`L]ͷ$uiZJoϷySN:]szb&ߒf2ͣ##rxˊTD#[#v"@m]ҮOHD򱧟{ܧ㞚 "߿5 c<6Sno^zq[]+G˖|Q*cRD*UkWw]GQ0ZQ r\z D< Nl>[&.Mdb$v涫Vo=mR[.^d3` @T.+A.HiU#`\63zԲ+ʥ8L&z\8soTk[[a G&Q\" Y$"kmTtVD7Pz6WsSsub`v&)CrT/L "aSc]K;'qR* sa QE+MkbR^;JU1{`̬YF]URDpGE,,Yߘ)RJk"B=HoP,("/p" HD6N]af)BfFϛPooI'xyֲe[NyTJA.~lDYAynU0t" "-FSUa\cyƮe4j奲\dM1 [${$wQRBER7P%Rz_@NDO'L"=-5*R0Hq+6p^ j5!rQdӅHzFPs sIz_z Jĕ+ Ԉn3H}̼vŁlnqt͹Lc6˞[}"n/njѼ . cp6S&m6y3$+W^jyXL:0o)%bG,w04@͹Om3#zѿ6k;_O#0u ,0LLQ;Net]6\f:T>fsZĹhE*4FXCZ9g0`<\F:شd>$EQ @uܩvUD̨Tel$0SÇP&E X8H4XpPA{U C|yIfƊvi4; =&fg:5Q xFe*pRJ;L/L=}()/ *KeAH(fR> YU`9UOςPdԘmmϟs!aCˎHeM63Bn|QRE puUC)(J$x3{bD1  (APUM7!=T_:Va""Ҩ** }+*i<]"M&s\sU8IJW`!GDM6fP'ZM13GQDD9O*HRϡDWb\Y;r*\ɬV{KZzdz$)A'btUJaԟyƻ£vݵFn$h&η&TB> Ov}?^Zf\9{vuW?X('xUkv>& .1yD].2DDJh:2~s띅'eF\aĈk" H6K&~s/~oƒh@#A)D3sp@BΦKɒ6Q9 l.1Rht-#'lB@rֱ0" .;M lr|P<-p9aC:8BoI!ՋHjX-*`2F%6IpBn}k@ubD\.aaV*‚K_BTGTY=p9S,*u>cٟ=. v?8۷1? u/}f;Apٟ_~^Cq헝drX}?w$t\O^EScF6T֣67sQEqI;ƫHi6]qEN=Qo4h]ʣSw7ǎæ ž޹/?~NQw{xQn (Dl-oItKxz|NbZcjG f.J /\hA &L1s SO6q3V.{٧z;{{t>qfxOls/~x܉w֞Ἧ~ьEWcL_Lq,:Y! M6.׾B}:̐ 7U(l@=X0U@m5A.B`i#Qtۅ3 0gwLw &@GmS4YEQ9lL L&cr$.I8IqI6pg2jRJ"D]I&ܸfڿ @k6A$E8\S'k7v5ǰy=_'*X_($ rQU(0ő?034/Xhƶ6 *&N?fBKS ;4P*1*k:<#kWvoXeܳ /瞝p7_u}w*?y\{kjZׇlVGQ89fp@|>d|2˧v]7N9uswc2ΝQJ'_\ w} 41kCE/`Qd9]r,IDq)Kq.){vQ+Ph֢K$;l a bMKZy'pXSube!BژP)&KbA"ʓ@J 4T%q E+/k1ZGǢS_A9' A6т9Dqhc1a‚rWIImcO;!6UD Q2f]D+^&!C) $ Յ{@ |gvi-AքմO5lV;c',Yգ< <|(Vuq8ݵbҨTjjm|#FRhP {3HD:8k9IZ_J1V+m؄jCZڙ~nj!MQ(pE`EІ^-^㉳!xe%rMR _mupppt-xW_z鵗 >zwe8*0?0cʔSbߺfCɢUl=SIHae)g}}㔓_yÎ8Nnal lVJ!%A&0aĶoڸ(PeK Ј'yS;Vˇt +UXk{{:_zM|ȡhի -V&}6IrB@Y$RD֑8s_` ?)vC"*'CDBddvVDPcihm@!)JOji?bK%X|y_\d`գJ☉YXkca(Ș ;*ЁEzqVT ?L, W|RPEԭUa$OZ#ImS$@);CJie֨zufb) YRF9j7pak-:眳u^$rKlbʖ$sG$IqqI!s\H$MB6ҙP0Ib7?0u:s>y ;&`m 0u jiX.I9,r NDkM'Uۈ?y#H Ԣ2Ui#zT5&99-oY1 ߫O8ۇۇ{o b/`BRTWq۝>nhL9"GvX.{w{ٹ;'WK _?;s?W[c>KS&M?q´7[gyVLƄ!9gf.IqƅaT. ᇔlv EG) m$: OCĘLP/p$0y{8J"RO ո`Kŕ.Q Q` DZ@Mn9F,1DZic jEZq=?Q %WũSN(DR@'лT/\ CD!$ V*A MŽPiDFv !!^Y8`哠5$B/)Mr8jR}6*z@ @95\Ys'Q#A$ӣ6'\D#wb<9g|=[4-+tلI'OŬ u$cGHյr)[nNz#r.TP=دUwNu+o@vwuu&OPFcD_4.I6VQ@P2k xPVPJ* 9g}F @Yfy6±/ [K,^ z≶`ͶL1[/5 26Ƨzn:!J">C3HHe2BrJ$d?m P}+%@F%,ʠu6" 2=JiH{TCƐ& 6YdI{sڸjܺ()AC] R#M$"ֺRw-WiO9<r@V/q,KrΥ}f8kTsDž||W}3A.K]jҴISLRZ4)Kaad‘}}Ib!lek YgFE8ҁs.JW %,vD"( 1X""H~%Fpzt%,Q1,$ @K6.e]]W-`޲ժDXJS_n5VFʃu#K(kM&H[Hmx0OmH+DBH)!$!Fۂ XfUiD ڗ&C z'zi@:ЊA"q!" i" 9D$PTEHRF+T>V*>e."Wf , ٧(J-]\3mT6]`8n (/U2N0DT]5$eqqb^("hQd}F 4)^{ Д B>R)!P`t&@DPZae Xb8n(s |[kq %s/|kcT>Whrk%+CNo䉡 6jj{ JW_5dP} g@B )Misŕ?[)lxX+bC}rHȩwO/_?]2$7 gyF!.;kޜsK ̾n> ~qշs*u9Wtwyi'so}σ{BwϽ^7+f֫箍X̹Y~tO4G9nim?=u#FGE(ϟ{Ɖ/wȘ3vܥ3i)x'.KVtLk{g1>bm=nB-$cK?}7þ2C_K=}kqYKV\yq'\՗Py?:;찻orYoܳ2KзƶqهمWu6s7>X*7ӫ;o涻8ȳ8?X҉gҧ^4B-?Ga>K/S r]=]l#>fN2}k@?MD/ᴯwƖVq1Af>:vQLPʫWJF v.x-d֙ޡdm°K"DaSkuwikm?~|._(JjGX+kբʷEFrF2 2896!cz_GRi)'OR- [t窕;:^VH:@|vɚr\vR[>bhGX( -łNŽݿFD*e )R:PH". =yrWi&3F+M 3orj ӬHq4; D"pRmaŀBDIymq}(A":%胗{Sf_{DWjժ*ܚYЧ=Ϛ5 ]=s}ǣbcuuQq3uL\.[v0 C8r6̉uāE1WN℅%[NvIX$.iǔ}QDFPMHVZ)c 0: ѨWBi)\&e0$6,ʽbyQmmBF)%ڵWx'Wr7vinikhlonohd(vƙ~֌o>=[SZCK+ҐZ|H(@8N6Iy]ZG9h_<.-RJ+QrFl,]US}fzV051ɿ>b:U36GgU2yt󯼡rgڣY Bӯ~qwIN-yfV$$*y7N=z~ʣs>a>wo|>u{a-3eGXc;A{=wOxe*qחSSvG»ɹ}OwGv,{!̵2xGu%{j^3:$Pa_t?~s%7Kn`ⵏ?|/_pNvgvșՋFm(a7nG!" Q6i[=wX{ N{*4p:eQTsk?/l_[;{-l__;$w䲙|'pc'~cX˥:/\hw~ڪ}_|$"յoD1rItHXku6 Qa`bgU`ng=Ib28P\Y(GOn'N2>j—_}}Dk'Olmm: ۣwvl63_)} &cO8ǐsϽx:/~(uک1k}3";(u UZQޓ(68BB'o>\.fL:qI^K~G[hefKKl5ubK>#8*GvuW5k[Fg_gbI*BUQh`趝eVgu(㹄tUD(@G(\s*A沙LƇv .x2朵U"QTMΝu$fv&صlqOL.#ʭTkh""&VcڏaNlkI +(軻{O%.Ƈ(!. k{.+̙lv”fnELj\>,GQ׺Ջͭ(sԚ5{a>jdǨ-ml4ٹs T:8a6dR t٪r$씍c'MEQ%.+scEpC;52RJ@AIvVZ& C%a) BvX ڞihPMѡ,OCk!!.IJQ{jF4c'} >/A*pyox.QOZ巖\rA?|lC˥qe7_q*6oY&א˘cr튯]\Wo9:o>z̽^Y?Ϳf}L2m]3:2q [2㵓:w@5ꮆwl`GctK^wz^~nT?@H)gv9_?pN,F;|ۛƖlz=?hVtv|uk7oٸ{7=~\ݻ2[m?s  ԞW^zz쫷C68ko<Ǥ+cߤp (7tbeY;ճ8ᔓt'a;[$ L֕gpAT sMͭcƏc?Yjes^{cmW vx" ?ѝ[FL׾-żoZUZ5m|&t!  ` =O<08lC hR A☣$,"2&)F}= ~G(eG. ܼ5}E}7GH\6a.ƴ6n9zD1 oydފ΢uq#MguGh3@+FA ҶTRH`t A" AED  ı2Z H̏W(.]k{*AD@)aVD.u7;DԤ8A4AY|/B^%BmH+& $F&v0W~ٖ*m'Yq#A4|dG (<1[\bBjml*ڨ!_7&C[-wQ=kY³OZՙ8[0}'O=zt}}C.DQdJY)  iq, LL\aZ$1ڨ(RxfBky|SD<-D3 T7rQ;UTqf3{+TV?f~3[MmC!}(ͧN/7e3A{q~e!,D4 Tf/YIm  M;}dO|dk=z<8رWUw^A?L,TiӅ]Ǵ_VM!C判œ:sJɅ|v0s gySO #HW,}z}I&/Y||EX=j.֑?UtT+6}1Ü^ew^x)qu}4^~st= 3ÿ~E=7ߵr ~;k+"f^^gZн䱩[4gBxs|:㞅R&0s|6s%v (iÐ*?mD D&?Hǎ{Y|w9o0X3/\s͍?ק^RuM/kGQ7ml[DRP\s2~;89ߧàxII!/_4dc]9{jnk7ICaHSJ B|+}X6h[蜶-M@fϚ|iWP:_˼9ĉc͔RcUiLbȶmBBW#@̊`af6"aB F'#u!?#RX <.FxR!@ cBTj8(X( 82/ )%JJ30+1CkeM!{> ǰ$04͐AuMv,Sjo tJyL8>Eȍeh:'/FhDC?{>#gbm=O0}NWB~{//ω4=+k_ypơ Qxmŧ~3˓p8N:dB|ymNSuu?K&=rܻ'}g#<㎍sy7.jC8+䐭C'׵@|W}^ea~;.J^{1C|zŨy}%$/% ڶR.7O=T4ȓBq|fh]U&J1!,EU%%+ݚf JJ Qj$&}_;x);s ܺ1'}ؓw}g׬`cEas˦O)6`z:zWjt MjkRHhza`Loj;` roR nFuc%QhiX8l} `E]#NAz+;sw1=}Ꚓ!<- V([3cuBg$ׁHF+7Dj QDWmkӦpӂp,慦M cb9.L)aJEDh4lkAT Ps122TS)Be(B +lZrOx`=.܀,M?{W)"18V.*d 'Q"B=X~:޹c͇+҃a/d~55`SiB "P5 x\ tp'RSϕxq3E϶}!Sӂ3%lKgŒ㸾T t4 ])7I@a445 $RqΔ=WC`#oxZ)*a=O7H,=dFI b c^ [o͎TY{ @sAxH <(P빚OJ hkP <&&έ+6[P~"ev~6ڌP3UД6` pR_ GΨFW*ZgLS@T=L{ƞ}Gw1}IŘ3x%V Bac'R!>vY |<yRR I 2#al}0(ƌ H`HQz=ʙnoBS"hwumަ!PQB(E$ң ɓ!RP1!PIH)aPKӠ\ʘp*nl4d )4Q J"Bri`($,FDQM8w}.קgYJr!K;|h(AT4<׷0'TU,:>aI1#D$XjJ%`P%_㖎=昋/&H /U^y1&R1[~}]_7QXH^|wJ|?/5͛G|-#9xWuu^Dg婢zk C7Ƅ)&̙L]I{>/BT()=qηϗJ^xy_HL!die~I_3[_ݦ)-jIU'"%Ź/(`CA`đ`>Ζýk%ķY6 :JIG-Ʉ?:>!:Uua3d wv~hi>\;1aD,]sT+ GF% >Яic+ q֢-M|~5k77OiNdV"deocM#L"0)BɱhG˔죾eTuB+9`)$4ggֵֈmT•P*6 eNėHVw=h,xG7 LVVBlQ|L}bD1K#UdmMuUU"4c0 xJ3D*s@,xT16( YHqt=}!(ˆ膦: c%8d!Ӥ"qsG8\He JUWYÑn!UUUejaHCC MՉ$Wۻ׭Kp#\ǖ/.TRE%K#xr$MA3hRQBJ|&4 ƌy G1c~5f[ SeRPyS rg&1}lK*t@<,%Pd"Ep%=@aِrUp(\Og3ݖۅOT]~ُ̜6urٯ=L9  ?tϿߟ}|O/򲙳5O:4Чi[R $<P) Ƅ(j յnMI&tw Tuc,H&뚆%@%Li,40,RA5qQ[D#U+c$*ev>h݂J_Ɠ升J@`61A b{ƵLNPL $FH(4TLƄe4V4)K&$qK58A`45J M(gW\BBI VLI_ Rp MôL]7f E]9B(ھڎ'< =qXaJSVUGB!R@BTæf!`K̖.=eBSu*aZr{?"ѳfyz¶M&H6p. G/ }hh(o{H:# Rz$Ā=TuUs?q҈B b@}J"5GGQFp*^ʷ.#ªFJ`Y+ø&$"Vca끪)[=U=cdǝ[6oqϯ;#k\׆i_pYcG{o2(C>XP Lc eE/_aGշyӖ\6[U[e=P+- ˝t>=2btgiq.prl.9VNaBFx^}C#,FH) %D1s)\)< \vyQ4Ml=Գ&LlumwKGzڕ6M6&!#_`Im) 8RQƮY.FRI:Ҩ&%`"tBZjU6xTc)=>R|}.ΪiցJɍyN+ge[aE,l3/I|~ '[WHaL@!bkVj揦>xr}DVm&MiIg&Tyh&t⑰AX!s/pNz"JV!JI%d\p΅xv-~VIU @F%ݨ0$Űϕ2(B &hRP+ \8Y0S r% RK1_oɥkR@ E9cATLH3&8gbGIgF]}x3 !„DDU2/1V:A u} x0ɖwv0!+.$1BkllnnJ&05#MtB(!iH$ YAu !Q G4x劖X8j&a,Q\T^}$Mjs&9HzJ{jܐnKxpQ{_R6 ѿ]2LD<'cisf.2{}qKuyu[?PIh<4gJ;52T1J*vC%nˬ77bWUf+@=֞gnv;{wɿR^zwoMOt~q7t/p=Οwnzo~͈‹p;˗z62o R3bVh{^tm97wweF2wfr"ÙlgG_vɤjQ7 AV͞3{J9˸DžT.L!l@ T@ d,-I҃4NKeB$Mw}7yfQM#; E I$@!2J 1{!$ҀD)8dXJc48"TqM64.JLm.mh/,Ab@qD(Vصcmh\$ĝ:a>)Nc. ,(1Z]sΝҘG-](X#:v=ݎkc \:'!K7 BRJCclF( HFMS7uC4p%ňlQ9 !Dp4~ul;MoܺuO̞;{d2*\+I&`H>.˄w]3ƹEdJ6LX()|TلFшi?wS NڟK PLl]G+֬_4{6:LS٥lڞXiJԞuclfo?oppCU6C>c'1ʳΤq{w+:\wU$JPeB.ERw {(hjtK~8ur9گd=s֞g,}J⦺V~H:9ywo~k2틮͛>dͤ6vog<_rq*f[W(P"}bW&<>\fI9JހJ$m܊,tC0B`B h"jVscĖ֞\>z}3A W(8‥ g WZDjjɨ ELwoӽuw ߷ af{VH3 L5ʹRqMV#ŗVS5:D 8 k3jQ\F rhpx szRI1ҤXj <$EJj9 ?z&&RͥPVɚPX2M*$(벁BB7s [s4 ABHŅ^϶@mMI3ms B/lmYw Œ^}ƕR`B(b fY\.O6{f$5M/9Hwmݠq?sm3jCaqƓNFh,Fgh4f$2TN"SZ9hiF),VJ)TRq !JybgM]N<7yjՅ S7t(ㄑX|XS]5S)-F]=9ʒK]@p"Z]45G7mEye+kj¦s #C>>u҅>iO~1yh^A] #=h"Q{㠽Q cF04N2!H(G{ #'~XҌZu[<رW!7[#d2ֻ(v*zGRm?]SNM7Mn|Et^`ZoO=_,,ޫ7`E4]Ic*9$S  ˊp;="fFd`W΁JT|l+FbOMiYLC2u2qY_twr_X1<TH6״FU)L%m5ՠP_O/D5z,/麆0ĔJ" \pJ uP*AEH(+ zۅ_*( 7JQuragv~HQ90J(n0/t_BN$Ya*ʤGre&WWT .P#'͡bQ(04\⎁P޶\6 &,:Pr,^ڶ㕏\okd1K) p Ba G2gᬪXḁ* kW* vѱ[ A@Tb(QP@)ՂRPFyMQY+:A T\DֽNhR7UU`1!Y1c%;ԤﹾTJ(@aX 4MSѝ!cJ6̲,˲4] QSd;MJ}_ nuR r9i]Yyqw/~{Wq__x7?IŬ+[>쟏:U֮a?8[H=8> & baK}) q߯:EH!]|W=%<7;ܫZ _R sd"8XbR$hd*= -&-1d`PD|."KYh,,]hw]搌.d`J .r<0?&cч ~j'\v?/ZAIƀ0%NtSEd[( #Cb6%g,U]_3e/Q@13=|"ܡTB* c5>dBe`N鑁Bp9K!JJ.B(.璋g\]?TwX[Gﻵ;K˯شg ]Ygt߄?|G(uھؼc@'oYj|6ɦGNuپش}|s_=[_L"|< gxǟqUϏvS ?]qՅ$bυ?rKg`t֙go\w>}o]oL`QćWܺrժ³uJ/.?]]~ymP}i Oel= nP}%<0oOww/Q_'^wI)㝦m6\~wFp_E{&:7*P;eⷿaU5;#[OE׿\z_{مÊ(ؼaU3vY 9'>.Xa+֭dͪ_gUMO=O|wŻzgxdX$_BVǖ`8Hذ}Gkwtt[䡇~yxW?XƶMfz;:^7n[nӊkכy?s/􌙳=_\yUOe_~^7W\v_>cNgifΝv _Y0:wKA$׾3ggDžtE'7M7#!EYJ{wDUa ZNGfKfRIpe>w-=Iۮek gyc W0육/b¼ytS<wБLi(=ؐH,[~[:NJN65--#WWl_|g_X=};vtld_z'{'˛ttum'H Ùp&RĘtVqDg0PF: J/9E׃A5dIJTi2]LJr)qoHB MFp&D4$.ϺaLg!4t#隡T#X!.B/@v ܝRmw>,Cosx/,]0FD){K 70)n躮,T 3Bjh7(OwS/`O^`;0K=/h߸X5SgOR=x7(%ǯpʹk$}qF Lpp] Z{ _fR?U|Sz‚ &+i2c֬c /M!SH-e>1zSλ{'O͚=m`9xBvSf./sO:?΅XhB%{V@fR5MhL37;|֭\9m(&W5~z=Й::{ JHl洖RfGokY;L5W]ēdӟpw/:ܳ=tBA 5Ħ S~=y1_::oړ~iYH_FÈ֫ÿzd۴D$[t~MS&M\{/{ችdӹW q.wjDc̽~uk_Q@ Ñp*nisO*2 %Z"otAZh-uMs/J55ǦNuissءD.١HLUz&'k:-H^2)1m yɓ7X!M j۸Oŗ:+Ϭ.T%]رkhFښб-.K>#έ/'EX*PvtXf=K! QDBіlHĤ`~OA1g#Tr BƎe#v{_zI!}}K1 #sII,mJӾDCP(BuB p!z1Ga3n†"'5JD0Ʀib!=} JBP* 0wcM,rR"y9W<`H!"hf"蔗Bp)3&Rs6?;\Ϊ|}V{ٽ%;z "Mz+ "T@])zKHBHOv.eyZxgw<\;W_=ٙygf45'10+1=)Lv6 bbP.@m+$~yh뺤 'uQz V`݆޵k[j X2+3nJH.?04TTY^ @X~Ra(Rk뺅b._Ȍfx2#Q˰MbSV di)jFP+BD9aZJ%@V!R҈::esJe;% Go=op]w~k_kÃ&wTфPpg=|ٖ38|_+'=(Ow+.={~һzu1,%8K -xٟ;tNwx[ז}a7t/|jogTDXCk{HbhESsMswv~s/Ѽ_D;>o^vos]:ybCRz~w/O9YS&\pP8g޵F'ƫgyOXC#;~|cw3Vi\k|CDsr|W\uQ5[_[ӕY;Oliy7F45Syt ;/?{O>ֶuڞkyy_R'pP˯C*3E#Jg$!O$֔PT:T_d͛΃-o枮X23>^bv넷V7.5wRu >yxpNŹ_x۞z%A`ɭl+'>s&͛`k?Z{KZ^t\s^Pm$^?ySx]lÏ>ߞ{3wDֳEf,6ϟ+<")v'}3>팳:n٩g}ްϿG,m5mL6!tYo^yj!Z'oYclhm2nzgty`|T+Mgs"…)ʙ!HP4\H%Vġ8j/99ΈnГOOjmu'?ع# :ox{`p@|vD _|07_pfB5brp.L,n TkA K5A@!N"MATP=iX߰2Z+C,`L*M}~욆h48eu]{>"/}R@)K%Sv4I|s*n4L3]XdGS s̚[[S(w'ϡֵuum !Bב8|) Q=^K6UT lkrvخ2.ZҒЊM%Mhu_H:m.=2OIUBD1s:Жm[@CDŽ u7CM);-ee3YQ׼Z&u%W"Y̖{ \}}JŜeل`c:>8u)NZHi튮gRJuK`O͝]Bфseb}]C,0**Z^T Y`AQSv= 3b":BT*il6-q3 S1H5yӕWxǃ}]y 93o=ek]qt˾eo޻p5oԙ~ȣ|:<לB鸣ٺuisK/9W^ya}yg}'o_y?;㨓Nͯ9W5s]|ŎM~/o[v557^CP!f%ZH슯\q)'\t>H^pSӢ %iرd"%|KP.e|ucJ%2eZ!v'lܼw9B`PJjnàWY]rFXY)ّ@%!8I555ezFjRJʐ(veetc  sS5TJq;+ b4DۚV4j0#tqP,iJb9lv03ą1QJ^`4yeߦ#]"u |>Hn %UT. etsG;j@&",1IM ֽw>B͍]۞ۋb&1FB]v5rV=h}&MJNcz?y X[<.C+!4g.! A%'JYh[֡Uɖ6 Mz@lM5gPˎl:⣄AO ARM_M29֎!D 0D{}XPnR1-3c$:N&ٰa?^.c,݄U@0FR0=!jAPdƺ~vQ"PAv!٫va@>(0,qwOLؖ6(4I^Bj?~•3ViV|OqsB@)r{gEmDv4(ZkT,r1(z! `#DGiH/  ~ La$&Q\y5(OmrDyN172uր@9P V hBaq"[ʠT.z;K]wt RF(f mnD V0-Acj%}+KR9ܵ^ק9{ %DSj⵱G2[̝7뽷ޚ=uvSWpᢷ^&Uߒӄͣ}{C#}&.\;ヘ3\ϧ6`hj;rEn@c1GZ2R@@ Uű@Ρ>em[`E _촦HTIGYb݆[)8뺲PF#䥯wBofᾎ'_{cłhiIrF m9n[)!aRZRV!I e e >z@j1 ,"qfL3bYQۊYeE )ńAXU ˣ}naڽv4J( X+hEvՊ+쥇Yn붮[t):n~/̝?UHJ -?㢇;zG78$uRYIirR8"_g̍ƭz "w3=jŞz c_,(W~1O"˓wϽL<)]WN]H4 qG sH.j=+;x_kk-mm~ԖH|s9|~^xcG 23G}aGɓ/\tك/u]OJih鹧A[}{}KnҨds^P Et:d2x O(nYf"PJQ*F)c,,fhHϽe%"q0U<܁5j(7jm `0SP4b. 7^!bX%B"fgG iۆy ANP x\m5C# bHD Q*n Ք PFԨ&EJ D&RD*:ZdHTȒ [#2BUxC`@8iIJ)`XDÔ_6Ti  ۀl%$ZaU5*x 33'U,e M ݄ܳGiB݇i Z} E:;&Dg&-miJ\#e2y~҅-}B0c!`3Ғu&jynƮEKyVu,'e+$KKBN2&VHvB!BDI u(zD!UhD%) 4#ܰ E!͹ELpf na^ Qj(0T4Av7JVX2j-r#;e=yc7͞3sm3!`ʩDrɎ{w@tn#vbBS]M76M߈2X>[jG>L+$FGGWy-O,e_rg]Jja4PJn޺}r>aqs/?oHEl{͆H ?k #º;vєXGy$edyݍ?V()s%537" Iɽ%;S& s\˶p.N={-]hJl, 3Rʘ0%wR!PB)saa%,+'C 5tcCc4fqV! HXٰ+Tc]6ҰljDʠX2;vsQPGΩ]q9Ɉr)&2tEs`%\)dùR6kb|) VfC]mgohblxxhcfY }G Ayڏk캶=u#OZV޺‹N۰v"P4iXEH²-ӌDm+jqC\LX aPAʑ28w1@ Jk@T*L/ Va5%@Ih "}hh>6~XZkCtmkn{t9W| zߝ7Vx那^Czԣw*M;a788XkS5|q^| ?Ysgg6w> ?cm+.˲.g*E[۾C1nkKĀ7Gs:vRJePJYv%|1"%LP&8z J h{'-=^2(JkB(. Ryh֦ehʌ=!sr% 0jYV17LjMw3L#EQ0HP(mG,*,ByRi8am"U.{$ G:~" c(9 T-B1( Ǐ[/e;gn6csJ"  ՜16L8㌌u!B! LPF uSؿv3"y/8=< Tu$ (!fɌ9F6$;1UEՋURCcv#ѲρǔF~L Ism!\WvwU?46.sۢ-9}X O|aFuzW@!04"Kh6j3Mm}\:cjti=oFGT$#\"`(TȣZHj>q?lH?ny-&s)%'0@d%T#'r1_6 `<6jAh9m)c<r$ сAtkG;OD˾'(ow Z+FsY(,ӎ$L\c;ƭ8Rٗ',wy"ĄiJY ǦN) Fֺ u~>"˲VG7gAG+UʞW8)*eY„='6ybJ ~LS?!d3!D"@Tl>p\훷*s|o6iCBx41%ظiSش,+Bx뺮0eܲt-4̰BÑUH %|@*uH)0"YQqޕT'[Z B#U$@T h`@9RƁ+EAjMΨ0J 3XR #"*`+m)"JcTr|2n 1O95h Y9NqQuY#hH3hU= >q5Jc7q@ ܲn8t8RRس{k͠n~昦7k|;od,qcW!Yڕ_[!IB,Uk:LlL&cn)ىYPJkӍM rh4bΙb PMAO`/?xgA@罽C[ N5=Q)x/9yW-޼iej/0Y)_TzWe.;)\TqHÎR C"% *TZ#*'v Vd@m^ڽv JaEwR6î0#lkjjkrddx{Ow1?~]LXfuإRŰSʸ 0m;taGM45?uNMjmkLknZh+1p+o-z]t2i* jjSǜp&puﺟPxD>)lcQ6Mrx~"3f40 ~^T  P!5Bb2jgO !Ī-]ǡ2Θb,1uyzu2h zjh7{`r9!R!hRD L0qZfT=OA`0)Ԯ2Ba( !>(}F+;Ȑ0FrHޗH2eQA0FQD ]‹wULDkdړ"l6-4)cJ)Z)7HW2e!+(cLFvZ/٩ftOL%GW=)=}XDUni7.6Ik}:7\;mkqrgHF4u=iF"F[&Kϧ:DB4դJ٬ƒ"on{ܶw>HᢷO=y>C ?𸓜(+;g[f/ԣJVՑw^s}\2-^ r] pnF $4}V㷴؀IaHKJӂH3=6Okija T;Q`J?%( ta8R~4RbgiSfJ8 MfΚkƦJS'4゛!x2-di1;8Իz*GX#^/ i\6 TRsRxWgJ\o[ 3Οp;44m{"=yԯ~rp5'cq g9I`+8,b;w/<ӛ{7otƷ8-].^Y7(Ov»@UK ]7l(` J+B"D]E4JG,Q )d#BH`L#ABeV$pۉXX&bv0j@4a(B@z7B0rHp=2:sH4h6u]4R\ لqr#-M1p[ yůꡭ:Ȫl?ce!RJ4P(}D(J1c:$"3FB% L!pFA$pfr>̤+53)纞֊saa2Rlu]I0 dRFI%T*E(\ד{R*+B#צmp4E,DD<BO 3|’mw}LlH ߰lmGk2bX2{SDV]CZoػ]˾ښO=(tZYX O>{iӀHԖAɤb Ji1vX%ҠTJv@XDմsKVAk%^MWeG7t׿z=zcc{mސd̼OL0eoo}ӔI௙_?{qÏWu.92dQ- \D,5RM耐=CkAK$DZi5蝆]x@*T {&!$f4hPZ1좧(6Oڜ/l VLId(!2jDlΨT^ 5P1?sTjx󍚦 .;z݁{~>}b H.IlX~K7S)ϺZ@jn;R:?z Y=!c:sF$JgBY5?W{wx/O֑dF2(75;Vd>ˆs?[ Tc~'a|R~ @H#}~uǜxC%TZXHH)!Dz54T)ۑHxIǧ{AaхKp]7HPθiƔV2MkD$PzR~@ZA& 4 ˴ߺKJI injҀe~Z#yiygtGOwCsK.1gTnC4=+^>9ư 4"@(0 U'Fs\ȨT3 >gheD3„i@G4&1ɤ(YH9ƄF|?puQ)0F)gP+U' JEBJU0`Q{2`5Ӳ@JJ\%UEBԜ1931 Vh3 DI)Qk@x%Ohwܿ)_9}7_WZ5#iHW_6ٳ/>#?X]}$qlvx ,^ol}yP~f3S:RC0=sӯ)%Z4\5otO~޺Y >K7|KU uʁCΘf/؃{_zuL/~ Z[|O>uS< T@|)m^aָ8FV إ9|}Y!e~{}Vwr .kˀپMʕAԄJ}"e$Sv$~P(DkRE:B}k@:Lfo}sY[X~\hZ6yJFOԻuk-=Q>nm0,bL&[qs#O>ng/?6a)S[XZ|p`GP07냔:id:[`VqLS V\]MkXwWU"@E2jdBWV@W8 5"C~fi [ (t%(C,T!G3V ǛqB Th MHFD#Vyi$J*DH))e*%LF@ "A&$ԷA{ sk};#٘|qi=H͹#=kŧgg:\sq6R.r(|FQC^UF!3'n6~2AD(d񯍟<9qV(K[GƩ>|#w|K];۫e@?2*٭[9-ƽO=W'U;9+S'>_x ݒZx/1ĆzK4Q əԦ榿mۿRl.p}UD#NSY+V_s[|-3mٵu퍯ȯ}ݛ8]4t՛ރewwFtԿ?yF֒-|" !:u ~#tLpv(so˜B+ ȥ%R^P8ԅP3fo^ ə}2mCJذm e 0hbԸtYx\fX!T2=əo#nο}K.Gw׽WB!H aǎ퇎O~j[~6џxv:{5Bxy]Z31Wl<7g /+̒}[y$ {nXw;Q+so][B4*v+NG$"XX@2Edu@6 *7?U^YoO:6㷥ftY" Y a[ZPagFP \pщ6XDK*@H#v5hlI$iծcgx||ڢsL%xj?O~佇G'{ vd7oZ3鹻:ڈn9>mY:Wշo{E[/kDkZ0Qk5#Fe-3fǗ'cbJwV[{-,ጯ̙ԉXoTjmxgm AmT\;>;߰\w8l0LJ&r (lzUkVznn',544OeՎpJB9/D[_)y^ ̼p, ei+ VƎ4ȩ\pk3h'Nyt;9/=\f`4M۷cg}̥$HB2DdIGFCQDրeҚH!Y_)0bB {kOҹvDB9@(b 4"w>MjMEJ:TڕR(K K{:]ͤsSmiA -Y$,aFa[M:q0J68s&)V{egwtt8;J.[7 e~*f%P%c@XKkZ!cc&K"k(F# Q#"sp*_>qrtV C]+OL9i [nuC 8LQ9Lqf0W(UʅRi&gg |T, |0===;3{JDL!kV8y|~rPJl~zzrVZMt  tTkvݽѝϘl{'4>7nk.K7}+ϾW_HDc(Ӗ0dON>WjtS[D߻ummcX tN$,XL se&WCn[.e÷Ȧ_.:gbv/j>6nb@+'zf%kzzNm=x )NeGv-?q,#%M ɲ=^:SgQ}. fᷴIB]3,-:"_6 d2x'( P()a$vbRM2hTorb 2)* G~Ξx÷6P|_gSpF{c+{{7G:܁o|;:2?VUCիGO: tt%~|^;dp` (dVU2dDB]; & ݑRZ Xcd#B~Q)+ DBJdDaQ[[Z2kxjjzӚn~0zeK,yJޣDQe49Q6nXֹV|EaD/޳ woYOtηKG?TZ좪TBHt=U鹨wq{g٩;}oymUJ*JeG%|Ֆ{w~7d}cQuA%XZU4:ܓZƅg/gLoH4H{iYc T0m%zhk"CDlշt?m+1AD=T~vhxPN*¨l9JW\{;/8OG翼W_z{#^ܖN;{hTG{Ͼw5|C?@ows#EC? t@_'sW_oZL[7S*3;2+iNJbjupn}{ 6aR9@%CY\;UGn6uhg&784Й Փq,R' C;JIepZ_Q+#\Hą{n׾|W޲l%i?%kl6+dllVb qb2BB#"K3>clerZH[Kq:qrZk3hVjI711uZd2~02KFQ@"DTRb烖lg!T ($k5%J%YB)R"jL\l}N B:∨q="Cc !W9 <8jV΃V`)@pa*$H O$tSAh`mte2fP@8@Jy)o8?_<ݹW |mk;bHP6[,~^c?ܻm{X.>95|tߛo^u~(4T};OT}OW?]:}C]y{lZppxOf8iӧ2L+l)qIb(Q[3u^~VRbü(rVjX$Mcv *!:aA%g΍yv.׫P,B!ZV֙p:mY(UF'&>n\[mJ=__wNMko?u\K/?xRUɔrNj?>JۑK;]j#߻C^sRN%T_wO}f"(^7/]ѝ>x(ڈv jtem޸Y N 7ЁUw9PZ9x:=R%uEX7>+!ezC")~3?x,TݸTas=*yˆvٳݳɷ={hOTg*Ik1v+ww[6^VA!׷$(~YξZDž??m'J ؟Z'{Ǻ:xy1q7O[9χHlbT+ә:S/@,i ~bTB-7Z=` %([ld s0JH$QK^WT3V 'S[shV8kEZN_s;FE.J .sxd{R,]qf\v2Du;t[=TWzȒE]AUu]8>l~_/_rKWXvcRML=ܞ_\5|2Y$בQݐosC?;.=5 HcVZKggL'%Ò$vw^Z*n,^a 1EV#!Y W٬ZtrhB:KPk4JrѨr0WƊ;܍\x=ў+LC+ܷ}Oo zCo8.qZ0P4kWٶtgo㺖(͠us>귾TdۏYu].ل(DؗN5jв--%4(=&g053hTkN>3{1?a{hӕJ%BMB G(9_K#,LkݏΜa[ z-dFFl[w$U0-SK+/9gF)Thʗe idTt5YG F9. VR1[kd]tT %2]2 `lh"N5@#3 lэ$ #@D!*NcP Ffm8W13@)xDOqoD@j}Fb؜6PJ!8EB"d4+o؇O#UmGtu6Avc1Vʗvw_I\LJ-st%CCC3cq%{~[_ǹPwU%ԙu~,ڼy,_S4-p IuCg%9fcNH8pR-l+?dJ^:馒񹹹ήnD hT*َRԻxёۮҬ˥ ,Q["Ֆz8R(k)˅FZy;s9>; "G8f| }m+zzX '^ﹻ'FMIsculf>xM_|^MRY(b{ۭh kVLWOf{d)?[0?jߏ(}7^xԙ:Sgu}RA/{&@Ɯz<$^lXg*Tp5 k340x`% VkUfNIϗ^[=0QMRww>zScI7Q%ˍMKZ~Z _y6aL?7 -ݿwO"2:jdgU7cO,d{od~hy>@OͶ@_V-TO4XBFy hj[zZ!Q\Z[s!ҵj%򝄟L'C)C\㙮{OaͪW,Y17Wm~5_,7M!6,@0ڳٙEdОE z)ʰYWܷ/)LgkaӐMәt*R +ȺRӖ(:8ǞbqȤ#t"IBH)P.D 4"Z&0 ( X"L :bD1Y딇;pLǞ(DK~%$%('^Ґ 4n L:e=@m$lQlfBTQk6D:"(14;! (P[٨۠ &2-YkTF׋o&^b+w䤒X#cFR5Zc06@k(d킛[DuܳC?ʽW}L$y?>>Uo7M&wo5{^t:O?d#lCv[.HҎ+]'€nJ&Rn"d5$Q@pDY +ڲpA"#FEK):)AUJR""$0r}O(8_*&UK2KܢP߻'7I4 nZbwޱ}˦s <~t2O;v~?{^y+0O%pSk!i͙:Sg%1~)s:Բ:mQ?L,t'T΅}ԴfO &=9ږ2k5BҙJ@adA Z衃_v;zCg2J=?{#z6mK$z{ oﮯ|_~ྐྵ̱`bջ}v`q]k]?JRMʕs#^:kv/^zmmyQϢёQ\wJ-|ꉳţq Ӛ֮^ p6H!\&֭^d5z}nvr615lf.KQd cG]z>orKgw<p'vHԠȑCw݋.RojלwѮ^w]?ݗ^{EAZh߽{e2ՃJ|ƨ0[(s10c/!Nb$P:ݿaK3 0KdRpidP a.@74ָSU޼avtQﺉLZ.+5a)J8P%/黎/yP'g;vw_ j 4 PQ*%6 !,ZfvBԊsZ׭Aɺi4T*5s'A Td@PaJh&Yڷc&LgVGSYxO~rcoMnH&B?ƧN4pèJJ ?+/,zbvzC):"f_:SgL, /ҋ{N㿥 ЩX)!-Ah;ƎU7}h]㺮˵DdQ؆s/7 *mfGV\l n?_(pMKKs3[HS)٫{Wū;G׼\Q@Mt⢮؆舌!kk703&|MU2"&ɸm&KJ)6Iy *dHj)sE :HIܢd:I RH,Kq>2xSX>l6hMuirTJC#fC$Gb6&!&k[y/ @2 lV"Td hc%;8;?)nݾZieIV,K.70`0L7p(!!:Llrw[O9<sݕlp؜?3wfΝ6e d48!Ð) iBB@.8s.zq| 2l&r~&d pq]qRzBpD03w~a{w ,U$1Ӟ 紵u,WJ/A/̘Y3V*"sneNqN}mo7޻sGPNnCqm~ݯ򦾅'y?wR~-jCBLTЕX~fa,ޱ-{.p@QAFu'q$QQ`E 1"L&#OHs(ˆ1BE0Q-Foڿc~Qw<~0$e^/{g{n&>@2^7h6w rc:}5םjİ=weMc]L.sn)^eG1fWjJ}FNAu b0q1Blx|/{q!OTR F3Qp%J'~\ dFʥ8nLN2o_w .˟DxVgc_r?uC; wTpy"Q;?R-}ǝxGh͚\G빒 mh(ÌҌ5Ur>"t162\a%9"jm\5L&(ҹp0aL0iSCuI.k.ZH=!#.eWoa1ڸdܮfeQ7_7 Z\O6&Jm"B C$PLHJCU"0!V:1D͚@ZejUF2ƀ#j:Ik$8pwd\:s!HW^ຮ뺞ﹾq\}tc&,"I8Rvv {|W2SJ^WqRhQD3 [7ʴt LlKA2>44 RЮ-mu׿{%آ st.Z?U.{˫^%/(1dBE:J;@@0֙`;֨G+~۶ZّK8µ##`i*@_җ r}Es'jl& sRR:BhMB"9O!vtg{J;\?ZcaSOƗ޻[*gU38-d::۰am&xe7j^_[0y0L2+V VF< ,+bi;b Eπ& [aa1(٣-Da9p`˖,y`~g^J Æ﹞5\JR4 W:{ێoUknZuљ+0  Q*IGȁu:z1_ $OE 0\\H!_:#L& l0!B$2LE1>wi14U\wa @7=4*0)tEjv}-L+2f&堸4$"L[kGcV Μ&BBCyr⨱7g7 6V~L+cYK \t$8LFi`̔ʌqchxg?^py3NYx"oO~k};C,<|qkHܻo$Rhcú kU(8ne95!c< @l`~ ϿށUtv.Г wu' =`Znn&0QX>߻ȕ˖]{_^u9"DD/JǗ1Z~f;V-30d=SIi+C$7͘gQi|fg KS蝷`a KG,_vKDN|6exTs|F%cԣxltlЙ+V$J1!drVot B!Ј=)-^yݥC۷m? 3q'>c^s~:ըUp?V @VJ%PenхBwqlj2hJΜ'IW_W:5!MFkE@΢Fi:.17( GQ9e3Lp (ܹgm[媉u"@!b0Zr<&f=M01` Zk,Mh5%å~}̂ݵF#}˖Ϋx\( 8 L}{<c_lɢ|b"+]7p\:@yyvx+xL'ưh|J/h4vm`|8T"vzzXUW0ny+ bl=2ۛPKOwzcOG)ss1Oɜ[voekم&{M G}I7B :ĺ@cH'X\cyYdљ-F1ИwYٱYG D<9&:-Diʝ [u%KD(\!UM|nH2i?5JfoNw%]8mmks]CF1һ*["5UX `08Fh*B~Byˎ]WkoXzLaik}'+YҸ#&>vRk8>^*qTGI0#y12&B"DLX0)P.E6L`$ڼ#W(T"Bc iu 608bRsl&" `Lq\p;0w",;@qڤiA u01 PJvN7s6t$X9XRڀVJ3P 2zsp8Bp!1l:CpN)ҚƘVI1JkLd(Ƙ:q Ldq' 2RJ!tț4LMڍ><6y떗?EG.;bղǟ6J)gwu⥇K/kVHʰ⤵#۷)hhfe2T|plrK !a#FDHC@0 2HdW~hb0$NzjNæ}`GT;Rd;Fi+D& H紣>z[6lܼk/t 97=53 !QJOիSSjƑ#i"JHcC.44 ) L10N0 &"@#Lŕ6:V*Bw*v)Ԭ2/!S8" jhvg^i"n:fxvM3KcCF@̔fi 1h*q)Ez )+9!G &_4ʹj@XFdNU6cs=1+:yxH=o芣y>Qٛ~ iuZ׼O< 8V*I*A5 &m8#5GzxQ癰tmcUQ+N:mo{ࢁCW3Dtj8nRq*%JQzA6E 0 uuz?գR5&&'r%;DHK*ﶛD(Av㎭ÍCTنJ[2N]&E8Ҍbgw򙧚$6F Ōa(;k]NV3fRàQu'w헏Z7soiחvd𺁵w\3طUo< PږM ID9.5k!J(0QB;-7j >梑뀒ݧ_1*`hT}}~@PJ7fs-9BO[? p^rI6.c B)mb@ZqcJ%*Ict5 !WJ(wՙ/*>AdNGf 8}B:ͺvmN2klR<47]472dҼ$Cil70K xIcr [yp/bh*b9.F6wMmOtݍ7qT )ɕ6*yի܋^BQ?/o2F!0}]ŋSٝy;wjF!cte<+`icB!N_OgFQXG qRk )d f\|rK`jڽҳ 6UNm%־ߞȃw4br?fbƘ/LD6m(-%R9Q@q3X`3J܎(2FNs$Q7=v4066U-M3َ|F qggad4KTh {ժގ֞أvGU6zúZ(8A4]ά saK|h)`\'a@t1`L5qz1UGzʩ9jx &eca#i B,HcڄX,M =HHƨt:ԩ=&paO=jޟtDE*RѴjs-1i3V:0=P&=aڹ?g%Kk#W ~O=m-~@޻BQ 4IT_GOV765Av]Ï[(8Ⱦ}xy\!4¨Z8~VjJGrVh2I wܑz\둎DzF ?;tD=`pbhnQsܮB^1.\w?cuqLrVs>g=)y){3~G4x+ =+9s`&]`/l}@3z%t&6={-T2ЂAG`D\`s%2i_D 40{:,1Sof"0m$O(*cVGmҤV}aM=H=Fp c90^DE>Gvm42ή2Zpި+q9ng( w c728?V_2|Z^-bV|}w(ͩY0\0/}FaF La"W-_:?=˕{~+TXDi$ %$"b L6`X4$+1Z%t$@ȐC{Nxו1!RiDtstID;L*RLM4LL@2MIK`rz8k#vNg-23:[g}XZN:}Nvь9=V0Okfa'^z[?qӣѩ%㍤ص3+?/dykZerr 9Æ~}M^lٮ=Mw4l۴uׁ1=o?狏)y_k빮!#c㣓JOr4p3m/*iKSC<gJ1d3[%L{%ZpcE6IBmA.˳!u8YײD]#|⩉  1t?0:F 3xUx5k7jy/G?o1295%`SN`!-zp|Lz \4YVROh'X5':QsƦoL[hil@30R3teT0nģ(tuŸyo{_SaG.[L"LHs9H8;khRH=قQ޷1Fj\~g\p!X?M_ .JS,nw_" ?yӄI_vӏP[3LKYftƘ;Le5HZEFNYsOoX wya5B RH& 4!*TAn;~`j)z{0(:Gq>poN $JMl VTj2]RxfsRxt˖7ݹbOWa~Oog."8'60.8\+ɕRD'*QヴfD!0$F%FCǜ? M* +CD㦥pvL[>tRi^dKq&38OeFS4GMDq_ac'KǭX64L05:^u01ֽ⨍"Žc -o~k"Ug9CXf9،Bi/s8:mZV -892OdžeU_sv%#Wv~7>mM{m2{ּ$;99!o5{4"Wj@Is+ph}D89?S(3.޻ޏ˸e" A&q!CHˆt=ٱq&ѕn!8|/:7v@T{9tޡ/e'}{):IޱxjHk]s'JaBV7$qUvo8NH{ $0(nvP0i43SQ*J Q *q (ce )9 {oj,.hו1IAБH#PW&FV@ iRJ(c$ jRVJD%ʘDF=oMI|b ZS5J.88I 6<$2(hih|qyvSO<ڟxN "Cوq#܀_tԞi2SaV4_k} sdf8D9LϚ[[j ]A3룃LV9`.,od+MK,bu?ٝQ|r-~Gx}tH'ܑ]d6/r^/~9'W^Fu|ޢ%}GŎB>W,vܑ JWH0ƴ\2!ZM"FE)8PF'*Msg"6I+3٬yB[tnm@P7PWh.`4007Dv8NVO/o[ݛĨ*6A,02'P2m }ôf9`PNп"tGOiQd&HC8RHT$Q&Q+51>#R 0Ιw=wM58<>><>ޕ  HDHQ!\JFBZT͉L4I6@J`PZ#53TyΉiBIjm\o8 D,'MZ:i _P{Y, afY| tt*Yl079qjg=S&ClfyCCD dJ'Hx:HpRfy(|?;e1%aQDxk/5M~J=2k 3N*9n o B0 HD ; lW3;̄}]>ә:LBfqhe[\i~T%*hY6ڧkotpRk[2|qK.HYc0]i19 O41ѭC}8+c9ݕH3Id1%}m̉3hnhgճc/`˟i4MIZ,wls"[fEz X~=nonGbec{'Uny&]>-ԧ: bX,fbX,2bX,VX,bX)cX,JbX,+e,bXX,bRbX,2bX,VX,bX)cX,JbX,+e,bXX,bRbX,2bX,VX,bX)cX,bbX,+e,bXX,bRbX,2bX,VX,bX)cX,bbX,+e,bXX,bRbX,JbX,VX,bX)cX,bbX,+e,bXX,bRbX,JbX,VX,bX)cX,߁Cc!""DDD9"XQjV1Ƙ,?s0}(X%I<ѳXo+ƘҎbO=$X@kbROK$Ƙuǚ-qxYAc;cy1Q^(#oSN?;s9@zPmwIʎ/{K;Y0U/xJ;zɪB==ȯ.JJ8{c:y_+t}{G?Y<|ķM:h n.= ]۷<\-v}DNMwtvCl_>VϕoR 8^ǏLD߆Ȥ^6f_|]/fO7%~6G.[H0z9,Շ{~#?W3$IO~[Q*o澌xѩ+}//+W>z LK3?~*C9wr}dz;\y.`o8繮m4UO{x$m&9õao%K_V>׮ﻮ8N{aIyΘi_ \ϻ>|pK.q3'9'.M_p9@\.z~=`Z>sk_|ҩ/_LI)bueiGx?kxз߻o:p޽0 G_w]ۇ (ŗ 'B9]K2ި^9Kg.{&'&;2@oz9:84zJD]}}#/a\vLR5ʘ( {xݛ<|+޻uㆌ#O|# cD6Ao}cW]uUW]^{Fkg?!@\wŹQظ;q8 L#÷<ƽK/{م2r0tZEXPhaw^z%u|>IJ)Wҏ|g(_=;#GIbČQ @Ŭ(*0%`P sx.q6L[>/! y{M\J*U-ÑSEgXP,UV4WՔDQ/=&YM5 sJ3,e^o1__̙U^5sNjX+_n.o^غhr0) ͫfGi3kʧ=uai9w~@T@0,lȡv?6q}YyEZXSX۳J O^$*ڵm}ʛc8W; C!C3ˌf9rȑ#gx/ /{C]K G .hWcoۢ7޲SQ[T+|veO>2-@E}Xwo'̽XowK7um b"x6e4Gh{}^?%YYYnxY[$I:]_O|dsVVք7Ê/2ex9m3afG|Vm_wi򯋰SSI)7*8աi#4{7Z8nO+/wlyuOOjɏ-bFrfW=P_)%Y4S$xOm0,eͭ 0[RINNbScu__<0,e-B (o1ax)?X9~Ls"G ose6ȵE[#D̊^.w0r~(^?u5O mtNNJaW8w(^y[9 J}'0K ÜyHE-W-ܺs2 Ü#}ni>نuW\SrxCsC^=q=TK.;ii)-w x{̘^,Pyk&x  A_Ὶ8w kƿ^: n>wEG&]1edl fEq!=Y+7=w=@^G/o"·?7g_gO;Ynڔ Æ c+AK[LXۋo/GNIߔfYᤙ% k'>ڸ LnWlוjOǝΊCMNc/vs/_q3#Wwk/voغωw\zy6I[D՛?v7]{lZ^WłYjPrޗٴ:mֱ2D]}juMrn=TY'v9wu~d-I3۩k׻?ޠ^Ͻs͘θ)Kܚo?WMIxo}s?#^k.qٺ+/;o7kZ1kɞc6nεKkY99ΤQ0w'uFC+qQݖ?9ɸGyPU/#^N{IӴyQzϿu %9q/zաhM7$N/~\,ۼk_FgokJ|yL͗N\}u^-9w/٭ݜ߲LiE.>rntLGw_y;..:cR=V?X?ji :%n4wUKZkzϻdYws~k拔zUOֱZ io9&_K3[4H,;YG}k/n-!JpOZ ?:MZ7i4;r_W]vျO7^qoyMa /:gI?@ͪMMHz7|'ez|:d )]3y͛V~|[v8}Ԡvg~5Qzj^wk3R'z6]̩Se]x}ް;#_芫~]cMH~{[9cL#גڸ'zw.A>EDߙegVx_7/{~؈?{e ;T@u 24 {>0he\1xk 9!{_4M2`y7e}uD4h7m~07XZ".,1yOZsiVaLѭ%D/[lߙ*r+l.o;u.MjVxʃSo>[[ZsC?z %7'-k]^~qW@D#γ?n~ItCo$Q. Dy 8K0?N|ޟ͚;y^xG.0ev":gI~E \s_y xUzu(P={n֮Ѱ矶}I(r'3y eo;13v˼gm{#zwꧣ=e%kQaz%|YZDD#r/E3j/N3}^snxitl\8x'zos߈!"]o~.*r,o;{pCA~cD_lo*&aا0*^CO?O~ۣhќ/^z~5πhϺ 3\kG)޻쇽25i;f-9O-Ypɲmy-ԨJki ]}̩qHhX;573y/a#\סSGou_QTk.Y?-"gbکGvj ۴//O='3u66r닖nشUBLͿG>8ޤAUWqk>Sڥ>lE[5 _MVnyŦxn 'y9%-k9nݺ\Fv5=,.̫S?ݾe򗳫ulU;k.r9?/wr)2sth(m+mz^{mԢkZv5k.FA֡}Mweێg}ɬiѶ H-9kq:bi"FSl{Ƈ6x$+y- '+y~X۬eX_X !$-{ay NM/4[m* v]:f;]8' {%ֵn.ڥUM=4bM;w.#9;Ku a{~{Ͽ4hյyc͚삢vM22*A;S5-Z6JY54R\aԭyNjMg e3mz^nRgЗ=">f5(Oa)ÜZQ"_TfxZsJP{k~&(}u.|dL፝/Sp}zTGI9!7.n>iBٻ/QEJYY=~#Gv }iN}22222e;uѲ)PqAh=f@h^qHFx{Dt.O^yXqsl׶ Խ{_L 9Q>~׵ ɯ<}Ñ|]7tu֪ڪe;W,#3bc>ȾU 5n԰Ax@qf zWq-ڕ>ХZ0~7V^p\qp~_b)J2\Ќx֖GgaXrk2IїilH;rwL83f N<8=џ=0g6{>3PY.RFT˱(.5- OSNayK_?%)Y@ܻg]s2ڹुce w6zץ%F}BTSdRTAvAamr[4K}tOj W:bK9a e]EfܵNQT-/;kɼGv }{Ƞ'n{E0n ZFOz|IմNj0.i Ljsz(JJHv騞⎏a1~&5)fU7Tw$!H^%STIhռzcTOm0%$;Uqջ$Co*<^"K毒L<(jpUNΚ),޼EVZjؤu6G/mc/ Kʗ,Yxߍ)vP#` "2Me+ ,p?yF([̚G)#paT'_W-iw?}QCrzKbcOȷ[$!UfRyלw3V 0|/7A]N)1HEBHMJ)cɊnY^O*]?ytD9[=5 02  Ҥlsz[Iue tUfjmR(2`ْ TMԼʎ|+EbCT&*@κWVJ@ÜNlư뷼R5_۝ QEf\WݲԼ&\yeT`zyc'3GS|/ `3{/5f@ǫSLCjs5 4M`ccs^x=a@EQƒПyP!l1jއU_kv#;^qISaM :l4#_]yROkrĤ?J`yxBPJ8 .*,Kb#9-%%Q$ KKbS4,**3tJ8뢬,DJl4!DG'Ei+)>FElBO.'r#Ka!4o̓R4uZz"_Q@~EoJ+g[2g!ӯ,zۊ!ݨ?XxbMaaKo~a9a 0 ^2 0 ÜðWaP1! |;Óa{=+@ ,ea~~N\cpa'!P7i 0 ÜhV`a\2dqaas$aa\seaa)0 0 Raa 0 0,eaazm*ey @;{,WoLR&YfH*/t&as}N2.kǖEDi6qjdcU5ܣ̮Iasʜc BC @W") o#;Xp4:-w$2 00+st{,WJp)R"H)"EUfP*:ocKL ]L)0 s.^s<ѧ9~:LY@t„%4j+BAAlwEvڊT4h ؅ 0 ÜW\b{aJQ)7;/5is փRoq,WF-"*ٰ Ü=38oa)/d-&X#1* @d=nR;j^u1z_'Jg/ߣ{>;}xG t7Տ{?poW }ؽm-G+&|/=.>sumվKyZ#Qx5}}{_/9lШϿ\u7\{{8wՖ_oھ%X%-9ޥmrjIߞʀOԼ|⑊]^1ib]yyйU|Gni9BE-;uIΘ,gm WzQÞ9zwbH6X5oV-3**0U?97,i{q5o~<oO 9iS I3s?M(e}iժU˖-_{5nX0Kƛ#*evNHe[ʎ][Pnh|ۏ7PcY[rࣦ&]4aJ3i(ߨ LjɆeHĒw#sUv!"sܤ/))ݪm%u^`2(e8aCˋ_?O{ oN M c+1g en[\vyAz:,>/{ڻ731)k^Y멱NiZo۱u&m۶bw/>{G|f咚8]1ogtuϞ3l11Qee˧ϞޟѣLzO=rqa/7_vw|/gϚyIBsBxR yb+}I0s=HKK>uwF #:-5IKKpչ < |=z9QMs\񢪍.TO7mҤI?e~HnحV\EzzTї^}W:|P)25h-Vauzniסk\l,FpAM7m8E#Ym79SfNz@%iii }  6IOoڪMM#hy#7F.X5--7@ 4՝WOkҔ TD?M}i͟nYظ?Ц;?HeLOOz㡥m[ C^`ǥ=8p0 0*ؕn[:pd{eleHmE_1̿ sK7"%A|G*E*"}nڝ&X]=mt̆eߡϿ|b?A+K|͇cygX0!&f/@!Z7@W q&2eXN)2ʓW Tq$*W Lԫ&ȟ)ߓ[P\f 6R9 ^^q\ I* (2X1@ | '=a2gl4 )cSg0 0pE@$Y}`aL$++XUVl a0La 0 00`ba 0 0 Kaa2 0 ðaaa)0 0 Raa 0 0,eaaX0 0 ðaa 0 0 Kaa2 0 0,eaa)0 0 Raa 0 0 KaaX0 0 ðaaa)0 0 Kaa2 0 0,eaaX0 0 Raa 0 0 Kaa2 0 ðaaa)0 0 ~;"b1"F`nۙO\4 aΕd)xÜCUE]H$ iBĖMj."4W_`)`;BDT@Iʲr A&QΨ(XSLwe,"LLիTqF|>a(BRs8>Od ,H D,%Z4iCsTThYfmiYX^߱OSBZ[5Hj@@)KPFxlpRBHֈ({^ө\..@vgY HWJ@v{7'W ]]ءf;VTZA) E(""L0$DB vU ?` , !l!u.Cw8tMJ)j5vobw'i5ܵ" @DUn"!2NT=)_ڦ(Q7-%Q] +#' 9$;DD憩l Z!NIh@%"]$$u%H)LR" ,"RJ)3(//+.,,,(//פ# JӥidZ""Ύ'H-a3`0 W *yGa)\ 2$+Xq- nl@7(e-^ EV,V36g$$@˲!"jRed)A *zN\u)ccnwIq{Ȳ2hwtjj ko>3Z4[蚮;tM}^Sፊ kBJ44]C@˲+8=sZU=jMo :&4L@ /.9r4]{J Z߮}ll4"Rev Öe۹ Dt: ʠ] BFd|wt;6.::tD(, iҔR!I1?A*@XYjxwU*M1 ­"TThH,RJ BDn~af+"G8]{^ٵP'A)+X0U݁ D;eFi&5Mj=24c4OCPH#؄vx"tctM3n$;$HjJRi! 0M+td7Dv$4B$!4)l.P <0 )B*"P[%Ԁ  "rj;3LhH(pOJ @TC~?A@DhZJy "ժ ShH'x+*LC&RؘXi"y<M tDt-iN0t#5MzeٝRtMj"A)M*>ž̢Ғ];w4J숃.JRR)@$T8^X B4nI`h]I2.gՔBQh:N;9 "܈8EU&1TP)$H]ӕ$L2P1B iIQ ! qb?h '-"D $ Ha)KIpk.SsiBz<>uJɹ2NH)CA a 8c-"Еn @AH*s]SPdiQH@@BJ@ oBi.V }Fvc{!]2MBؖ)cxbŢ~C7a/RnC/`$C.6R)-˶%)E@r#(4!EP( LS"X$PJ $IY`)KXRha KYd- .4-B0-4}#ٙkՏvJNvP U{+$UH/-+դ&54#B,0|a|!GT1D5)TWqQ:M:vtsVFqURk+H)$$"a'RXhRL qP?2 v' ޽2($ @)P$RJ";X812_"<*&#:hO8N e[yP" v2aY"r:tRB l>A *0i`;!!T0E$EԤ锺&R!@h";+sɲ_vse*NR-K2DnjpL9"}#R~a؝v'lPֲGTSs FEfe;;BeB.I[U Mh=ZX4!qȳG0աu "Ki) 4ͮBjPB) 4`I!Huګ-bq4B *$T3 I@4=)_YF7ArN챝9$!! 8!huc2&[.omu|k~L|839/9l̷^([uZtT){v;xݱo1́w ,(xK$iZB!2$PHaI$+:.Z~/*KAqMxGרQ{t $P(Ub|^_;ˋ,˲INGԄtE9tA ]jjxI qѱQv)$Y DPi[B X7 JDHK(憮ݻ2-C'UYa(*t T( oJ*xS6;rEHUEh6EpJ4RX4 B)%dD%GJ)!"[&ْ@ ";@l iRj t)~ [:xA,Ӵɢ崦5%  MB !!m Aa.nUcL9 f$REc*0-!PjfЎw١6yQ|k ,D\<&S=g2P*$ Ȗȶ#Fx!SXJ 0( l #"Y$ =BAN1'jnݰ*Tf eщjOHdd 4DCŖMXz=]CID^qukn.iFvmxڭ:vtHis;Nef=?~pOw~3][8NөiF_K^_z_YBLtbeDB]C!.!I(`!WVJJA D~>v$ ahRilݽvnǣU$>"p9]aOM>qM114k"vG9! J|ʲ He(r:>RO4M3MܚjBbEyYy iIIiҤ/$ʰ[;C;"eʶ94oԞaȣ,鴀2/Z n,Kah !S);Twrcl!{GrkoWPJ%E@Reg:ZJiN0A /5SfF2 J= { R "4Mjk J)%94`ʥ1 W^y}^32Rwj/!|aaR򷕊8VH]N]KG -2a816Z9k8&׊ZR@R$U C[YܒV (k2WH T{5Tzff6N8 1b9U733̕JqBĩi\@!!c )a 1Uz)]k%[w9>ۛo`tG Ew,-uZ)* *-oXfg"z@D`.q(eQ o@퍮гD]pbN_X¼{HT$/ĉ8XDHx{W#ߜX/)bEPFU-0JΑ B !/ eYv;瞣z[oyӖJ2C&Duxp.ZY mg*aUF +]B#!΅aw cJ;ҩu9f!^L[4~'t(rU|(5 @q+bàTꎪN55UPtJ*겡' T(\cSUKc/Lt8螊dWyPY'Lg@O&GN=Sϼa=db޷YߠĘMRV50fԉ52'.UjT菚1f#'h%$%JZ];jH5FQ%ͲZIRk+ZRIӔd4JSκTqDsd8 CqbCfd:g p*Pߠ*ۻ{jhpb#表u9P@.ӈ⡌UU6ܺ=l% K0UB \fjt4o|U8bz͵a[ O|=qVP`C̦ (x^R"Xl^( ՛yU|`U @&0)A7lǬ?vjr_\S<` ѐ!&fq??2`^1#iy  GwA'}ʽY1ZSXwWj( `#2z?4]\HXd`κD;|pE\ieYe7};{9BoP ܕ5H[] Rtagz~ "j~_ݴwݷk^~6}f]{}R/><ᤷ'>~Tb|ֿe'޽mdAf;<[_h"a44xɊ%'b Þ:T"P@h$fz}h~\Hoh&16IZw@wjŊU+WU^3fSezASSSiM&7xɒ(X禧VlBQs~PGU"2lah`Lxm7Kұ(=?(rDqbe2e6M .\lԦ*(N!nqz+]- U=|z?L Ds9qb ,<Bjo{/y0gEODD@W͈r=BB$cL( 6p [7ooz#<6tm{b=v2')]tzAPڀ•4eVOH ҷv"#;e)`,:Te=%y<&jS&L(/ 1v27i!^fi ]7"m)UUuly+JGhҹJ X=|qŏN(OԻ0,օaHZ"\Q y]. K۽%mpzK8_),sZT]ٗ.&=TSA9rOmdr<*\7< ''#NOy] p`uϝ6LTTP!ΒE0c:vZ,z=9"S.BS TDe&d a$FbdĈfEd0'B6¨݉r6OFRDd( J% DhH1i-kC5.|<3>1˾dݹZ:oISk\ڿdo|~[rX99(oK+yvǞ[7\fժ>鏮"AtwXrzSU$8 j" #U/XPM3IXrH 6 F#/>(]zR!hf -Zx1"6/^ZKW1PwJ) 1(a2K|KzqmƧ'Ir_D%H %̊u&~N6̆B6݋.]UֻD7u`-IOUhGhġ3)`%R]8O:$NT:@EHH ٷ(aEЄĹ??Af$AaΧ"S8 0#®[oK=m;wܱgыMKnҵPa,%YRiRV\SI!@BoJH`v;""C0՛m}QVXY1|p[TA0wW|Ѝ57R%Uu"eJ¹ho SG5%7;BBW m(v= +˳xJsj~(|)s:{)=-Y@hD3vu՞jKg @v7*/::m<Ɇ|SÏ8'Q2F}"g'{up;հZo?ya߼k{u~W?~uk_{C:'WޱuZ*~K)/} =bp߼VgC}'?넟]rK>ϿmR{oz/9_ufBL ~7?jͣ""bP`_1WFGvaīM,P 4m κ$I@(05 G-^za_eht9HZ(1\'KԄAVs1:>6aTY< LMLMNN1l ԣj`L%4Q2(NLԪU@pYFDPwwIB Ni!@D@Yn.~DԻ*&e0axXˬ\)^:2K&79TՐYAFyVwUU=l֮1BDD8j˅Mθra.6\۞QD%GĄ Þk3ӛ7mJ쐃Kmv-7*!)( 0 C]+cGK5΋r:i+ؑS:|B`%).< qv 2=uD<+" *R# ňFY昹llv^>C HnDD ߼nm1S<\:HQMJWϗ@x^XG9Q12,mcv*w Tv ^/,YoELy{N.o7'T8nҳ!t|y1'k ܱ`UuT^6a95z߃%_|mH`r˴TAAִ ֟GPU6 D'B׿QP+?y|/vgժfN;]DaS{Te 1p fv [ӻp۶cccN-j7U͉qUk@5s":I*˗QyxUo흷zپ2ٚ^һh>~JJQ%Ήj0Ի8ٜ)a  BZ˲/UB@ ЉFaF1b*sci9u@1Ri R.Zݱ9k|$(yYx,o~?s3!=LBa"EcbJ]f #|òq 4I%}}+΁;o|J׶[w%A xj% "Aj,C4w~1,p\ ʞꬴ` HdiSR@sAs~zLa,D-GПXh1Bg:YzŲ&gR(Dl7%ysEqxuthf->0|4mzɏΫvW7敕ZS?7c}uA4K  g3 74ڦFw_;pt#tߺd]qi0\4˃n u}f=jzV BU ~ "#0).ؽgMإU\V kٝH *,lܳ=dfW_%1O|ons>r`dzzl&8T+1j%$IL%DH$QջQݕ~"ljj&> IEU!em 1 0 ЫHf /+(YLgMh82 T>lI\̳蜵]\;,`cGIpU=x uyyȚ2ч`:pm75,fAE1;W<A`ֲF(suV;C*I@P3xrg>+̊bU3ĬHZ"YGWܬnKQAyplJne-"o(to8c<Ө3 LY*>UgUM#(I:#N4FyCC@Ywj=ڢ!h6m7N>4M%Gy%޻?yG륃{+74] "iV]t⁡{ݴmdX+'eFGTajёݟޝuQn~ѫOJ]gzV 4VDƨjV Y=a%l44ꋖ-ln 9' 4C&`$"b )@E,Wju BARkQP:'$!o#)03"R Ű slH¨ R9c9ǞtΠ{{8u-wStX0lČ`Ӥ'if(s.YҊ{z !Lջz tR (#M 1aaDD!NT.Y6[iIjŭFܜi6fӭtܘjLƭf+K4M,sVR+T$.6Ƅ}Kw/Yh*˃L;]svM7'"*Y4=`OU)9b*0l)g\\#zcac b !%*MY\+IT;BGB@l5[]ZWVZRuC/ eԩSМ$$b %MSԩZbE3r.G>  "X?΂pDՁwTD'h=3+icftn{Wxs>gs; +uB}:gONqgT>UYZUܲqvwHIŶDGĊyWi~xywX5O>jdġG [}닎(TC}WWkr}Aaѯ8FƋ~gi<{DNTCL_ @c ?W~_}^ֿpc?߲[Y/0,?"2aFjVժ(0jZ"Æ`% }pA*ǵMryQj#eE3!Y_; JZ$+)}9rJ8_.%W4ΙPsTJ.J9rDBJByg3Z;醟jp%9b0[,<$;) V?ZPcMW9j֥"bEw\?4Ozxӧ*ﮛ 觯o455 Xz˦㍥KzNUOsz{r7wFu5xA=owjq ijPA)4 zz{zuwV09T/_68?{w!ba29UabFDS\QGĆ z12ZaMx?Q&C{:I$I0 {U]ū׬1 >~RSTORN|!2%oGb{׎bQvNd2aw6־uL=VF O%`$04IVU !36HȌ D,"Z pEO-Tch!PƉ|C \^}y65RPitzTDtIr7|s)SŸAw=7+Ç._*&eꌀR}G#zٿQͣ,Ts9'ģYN(P-ϤY2 hFD:]d$2U@2҈.fg)9bUPvIJD*螵)-E$I郒4Ir6qaOpu#Dq'J]$+:΋Ruo9㢏ݏH2Ib=ezr׋rA_7tyF$I;ȹIΠ4rOa뵯~>q|?o\/jЙgW~Z:^(M$qE&I6)o_cy8x͛NENwLL.[t~k 5 I D|k_}Í7lOMVOfvn>o^kQS?s-}.y?EG>WK3 č&ŠZ-'HdbdN/Zsj@oL jDNf˹1 1];A~ukħ14W&obAl03M;g 0<#+XfYj)`5JEQ}wqa4ƨ8fx#X17AUUs97ZpKs.0z3L13A;ᑌ,ܸ1J4@%H**9XU =.|ĀE 3J^Eنsy~xй8,v :o/k;W}@ `C%s6zל3k+u:5׷y6YZk@ M,ˬ͜Ym3ˋ^kBD:XaNsͷr1őA&9^L'^6q6)2gV**%Ko`ey=J(qݷf]g"@tYW' #>Z$ CfܷeesI{ʱ.onYܣwU׀O|J߾ڻ^B[?susܭ7WWwʕ+F-DTZ}pp%8vNzzzqeeǎzX緾}_JAfRLqA$I\VFG W_o'>{h<,]x#LlA~TmK4mZxl}}0jWJ+Vԣ.k3&-OPᾷk eP@E]#5oW94D:Yy*0lak°7-x)~f!4.EDA,焙)nIa 4[T'պ zqtmލ&m LPI2;=9fEo(k ng6'njeAF )"yWayfΜ<{eː}8&/? dYih';ds*4Mf3S #d`SgեJ l>KmI91fɉz_ТjFSSz/S ClВEg(zz,XhfQ,@E{S?, z__T͒قWvpJz(s6naB fDHo#Y+vq`oyRޱF\+ d~m?J1Pl" 3zl֮ zC}œ.Sd2S)T{yA7 j7[+a؞dG>Ϋ $oLQPd^7WƗ=XIy8vSND]E]F<[8F%9̶wkHiq GT;_rsIThw(I<5o6TUͲ4NZɱ1MhuPF54&Ald9'BH+h4(02@}FE*@4:g <;XfD~䖝ً9#eR7nGw&f HPX:!_6{߶oL14۶kA9#W?Nk?^|BTONNCI6qUDQxcjffzzzz{L##"HfA@Ihp?Š8'P!-d"4QP{dj F5{nCcL&G9-_YՁJ`9x]U+=bD-\KZ$s>cL`P\7EK.>*]5EUpD#*װ*(1WkxZH@@le)3! !*2 1ǟaVeyQ>* wrɹyŒp9UNelXN2 4H}.<0Edxy,RWUk:kKO;'YlN$6˲4M3%qe͒4MԦM4,ʹ#Y2k][ڜDTh6 wU*xݘD5,zƪlڶ SG]\:Rzm}[ /bwھku[ӏޮe@'Z5 ¥K]:qD~߸3_'^x߽}Gys6swjb=Cȣ *dAԇg SpXmk"8\h U 8ĉAUj9QZA4'f,hjԔƱRXV(ώqVDx5XBM!w|JLs= %t5 VnvaK ;3-gH+LU7E1" ]Б.kyWzF^C@*9Ձ hч+#-ꙶZ0t ""8'WlP$J9#ij6XD1B(+TEZ;(N6ۗIDEș+DI:%I!J$i&IeY 78ɲ43,Dn։$2A`s$T) <Ȋk}w߹c%+V-_3+b3ÙU_Џ62$ 3DXL묢9[SəhE6%" ֕vZ:e EChGPm?rm7+Xw=w'< ?/בif|L{w]zEˮzw?ȧ?wU7=z[^~Ϲ9kUi,:`Q?zf*u׻z{$m6g( :gZg4m5etk2h0Qh4Z e+ H1 xfbe}G3Sg PI4m P|w>TՂfB-[-_IN5{]j5+ XSUp ։u VΰTmݜׯ;-OzW~z?F_go~3 EC]W.s^NŅJ{fb: PF@6~)n[lq+6lbIKuܱ1 v:vwvfztJPE£?!+ݻ^PBdN5IRՈ00WZ4T3M(%B"QbWWВzas۶;oChag|*K; CqNI< ?>=س+~|Qo[emv1OZd_1\%y3*hl u:lE ;V3MWY{xZV?h}կDOz\!/|SvޱCTWȏkՓ z@o=л;6$Oӟu11ONN{26})pǝIMqO{?ϟ6wSr׽qLcdd4oeպ5V-ϒĊ :!fcƌ1agw2]s8!8p7xc!sFc5mq܊[`fb>P -wܱd2bv]˖Pdh^A C$R N fPzt`lcM  ׍rW/_h[ pCm9="%n&UCt 'A(kK.IVG 1 \ 4@Zz΢(<=n &)N`0gR6KE% #@msRu`%SJQyV y1 !4œBzDgۨyu!u:&dYbdmZ$$dXE%;0JU+AP!x%[#yanU{IVsC 3CtȮ#*ŀ.**bIFAɒsz:7sVu.ߟUuֽyZfPD, &!Z%1uKgiPlX'(H1D) HҢ涶<Qi MqL%aXlkho+au}u܌pd1uy/4`ư@#0&4}]tT7wAVcF?`SnxpݳAm+6718ՏB:_?uVJwzj󜍏,Y%JMW܊%]{Sh*7y:_P]<8L3\'xg|mTPش۷r١^߽C#nX/|<._^ r M3L%xm}_+%\r5h4HNӱ=më7_O!@)\ua2[);A\uu:/]YY 11Dh)AC֖V?C @BaڜYC@$FJ%ѰaDu=5<ԃc[u탎C[eRDXBG4)aQI‚09GU8e :IHJ!p:ˣa & @`E BN0T@fD d6dPpǫ룐D `=EQ Ydڶ#v- *)( 4Eb' ki}9$QU0d7zu*ȰCJf1_:B !E*s61 [o{K8'!1V*u $щ@#|O^ƯE{B a_6Z H%8@ ~tD&i&vE)'T2>$YKهz[Q/nG>y y~ȴ%:yo=bKοŸ~gՉ /kŊ?|ƚyG5@&֫:'䞻Xl:)KŢ6Ƒ265Vf"!I$bT(u eq*N0M'ILSLƐ1h{1A(cBapum4c(qKӉ (n3M;쉰8>,ؕASw֪V!D)d\F;2xm7\ut&$Q:D8m'MZkCؓ][>DD8]nǔ)>#MDua1"4`z:aMT_<)A/lwV3\T3uR džouۛT+$u9h'^T HX F:z$`Bsʩ2`Z%%k$c:Iar-֢(b]GzI)\ǕR"$Ğ'2 i&M !QҬP1(ܭMu;::!6644>2.f㺵-faj81Ş|6|Wݗ񀷬Y}JkyBQTIi[{fLNAD/C?m 8^sٮ=Z=7SNm׾3O[Oo1Z/ 0}qjԳm`Ƭ.BDMMMvRZW*c I!W4GajAҷek])WJ! PZjF8I֮Z$NqúM6[8IBٗ]Ę(DHdNN!Z0bV3gEIF 1QTRj0Qڪ8$(IGte!y$CdA ִ(H.8$A\oBR?,d2;( YcgǞr3VF(bު[Ҁ!8E[49둉&^.#Nڅ̄6Z"9TM&Z GLj/ a:a% :F{V飙aet>EGBۧ1x[?uGZq?tOy6 m]{g>}plɊC.k=zw.Eꃧĕ>tƞwSNz- ~{o>}OmxߕGxs[?^Ñg> ߻ZO=sWv .mnA$v yqo]Ht﷔_qu^ !@TbŸx['w8RE>`Ư{߼xT[>^j߉z<_/ï.O $WUzi>`VxC^mr{Ikr>wE|3|'>&'-CnE;ַ|Y<OzIWg= gں>W.yXbhL/;baFdxw;?ti?u:IZZۋr'ĵoyY|e(8 )PJƐ5`Xq%]ݝm,e2n6#/ڃ(7w=kfEk ]0Ι3wvD ֎QJUUIdLQJxnuOֶq2&uO'{;yS,σX"+H p|wɑg#% zGE ƨZQ8NojEr f|3'P;$j-"$W8L"t<(&Y.uf,8 #.0c8 囚;;s-,$Ia{=psgZ[tI:$N&QFL]=M46)pTv\Xۘ:Ajw N!ȬL#i ˳s$cW7 tYI=qxiEܢYCU DÆ9@/.ڇνwik%?:LZq2EsGJe<߾?s2U0$cٶyo\uϩeQs~WsWU~d.?{Ͻ;( B }PMl<+7( ƪN%nDj5ym;yzsN_0R"ghuoDV?JODq}?۝0$ٮ|Ɲ-g|MOă>VnS3nbOl/o_'I-fKё qUF쿧OkhxƵ]mWm| ]>(cquk]vHn6DQ5vK29ŋa+c$e]/ 56|ϰ1 X4?`9kvwb}3 AI9s@WtP n땨.E($k7fjj|KZ{0# 4twOBqBC ٦ 蹃-P58aO?N8#(.!-mrƿq=/ئ߼r޼lmjh̶#ckGjQabO8R J~V#'xoζtOe8(S RVlH $LHq @t r6}P'|6س~nGy G|n^x7^s ϵ/_&}ƕW7Jb_~[^ s^K޵.\J{ Ud8 u_z2 ̧|?o/ &vѬFŧO/QFSX,auvλқr]^DO?v0ct:D/~{~3}Q,2ɣ$~OYzOzaȩ_tՋ9r=%g$f`SwTkr&@En~~nT#TY_< |vt|HI !D)ut;$PJt pyt'oݵ?{o}U׬9gv;县KRAm0ʶ\&3.:|u;g, {\hkɶ4e |ܖ%Ktuu8se.=/y2\WJ!t)8BaZ 3ZZ2M|[Km ?wM럹mQT_r|oX=X/Kq9/z2RiǑ3kur&XH#]GHIuA$(P <Z ݼ܀{Xw= ilOU=MhBzLߜ F05!l$nPi@rwaC HNDip]֘x&N1&ѡ$23f/7mۨ.K+ͣZRmmm\;ITRXVTtCHBdΰTduV:ItƑR. UGu~GfA%4hw5 ! B6"bf @Fc#((-}ҪBC$(1y^LqZwK_&p -1jF@ ?̷e_[1竱?viھ Qn8>8ЃoXZwה;֟轫`n)d` ^~yxG{ c>ri8ϲ(\hA`e1GyW\yŃ߲q3[8٬3{> ϙ7f }t1'r-Gf [7/g̛3wcܢ#7ۚs< P~ .QJ+@_wc]1Zclf zny&ww|w۝&hp@+ )Ko_ : "z-~˷~}'T܌'oy } J~׿koزyY\U+>cC㥑xq޼~Lt?>uQZE0wg~﻾I2|*INi8Q#9!ـ&c8ITlRJHk֩jktu}pYC̓t;5A8 :lB_X@,s>vfw4e3 :Ls0ٌ@8Rٺy -HB4D,0o& 2pI&(\4 4@ D %" yŭ%#"Fir4IJO;IJI@rP$l<۲ `6h 8I&"c@p&eQ+ۥ\L] Mh$V*:f[|6eaWGAYb(U(ۦu577syq@)%" J^6̊,噅fzZ:N*fX%:I},CJ0F4ic R11FCd(l9uܩlEwcR pb$B%55v`b$4J:Y0ЀJ" !:]R6WLc_[I|I m [b|_vx>'g㊎B~Ef̙-=׀1JGpbOo4kpPpY{\{]Xr*|Zn^`;;1I$@u\&) 03q]L%3gF QuG$8 AjNggd}  4$TZ )Esi{l rV\$J7m޷T{&B! " qt̚y^= 1QZDL")d3 =ղa^S0! "4F`!e :ȃl Yw%t7 &Zd"[Fh MLh&ƔAC@ 3L6NPZ}]sx֖Jwphx\.;Q(<<ϕq\Gu:2) a#Y dKLZՕ6arPidc0I`z KCF@)KIIo)ͣ1k@IVkdz2*A :6ZQ\ E!c1(er9Ԏ+Jš6]z-8$g ")3!mvwwCT8b'6(S?h~oL0S Pi1uI ӧׂjDes;zKpGRU™qxW8__{n_u*эA-:9\{[/浹.*)U[? 4}FХ3w)ʕd n%Wɧ~p|B n-$r#ԓ~ *\ wUן<9|`ae[:F#a<ցC[GOxmݿhḳf-VX}4`R]qulkIl2 tM\!P ¡a"C=S 5($Tfw@"3̬B-h i؀!`B8*Q91$ RZܝ=~k9,'&64\,+\﹭٦lTʷ4@LHQ,yz\=D&$A0RJ&Dm1M&h#ղXKA˙`3 jѮtc"jp=QVz=6[_z)c fbÈL}юFd64 l E0Da$"_:-j̀Zil}^/ =Tpl|eyf͘iYq):r%5l,Q pDF:1Q 8QBlje6x A"?gf 0 mT U%$YIJ\킑f2WF߿{Y$&XDBC,t0(;g4ܷu=wY:C"+xg'I[~n{.̭W]|)/]r}SO{}c{?Yo[G&f2z'׮53=WnGLw"l{owͯw}΍cGO5Oݐ]`skfuic}}fCr FRmi_"Ky+ bO˾]DV_Six4nd)u(@`iqn{ۏN{[y8RBOnD\UWx7?[zztb\ -Ĵ6V,~MKܫm(gX粎D~ьX ˸#H d )eDZ%seΓN>e=;qZ= )#H!d@H`{vl#nkVZ+e%Ӫ]Z`!bYj_"#$!(}@ADFk5y`hiM aՔ< aXKA@I)LT$Іϼ-ߙG(@@q)z'L\G`l4k x'+p]h0h6"{VWpn=QI88ac; ݇70VVkcQ$x~xC ?rݖ?\ IlH%4U"Zhȅ/  =Nl7 ^A6V_kg^식fngM~2#B!$@!IH+kº & KR4\h"ڰ1/+}amOJF`Qr3mgR>]^2#8nٴwll|톍o{v8GƇ!J{bW㠖I8N( Z-Ղj}TʕJn%KrRa-kAjT-*cX\ٹ&PHAE:( JrM:4ͺ>ɼ#\;# $&N ՊDe5Omb#ܺrɜwZfX{Ϛsozl߮d*h6}6mmҳyS捃}A**2A5Jj]lcnۏ1N :)Qj; j@Y @ dt'My"2 #HFMfYQmԭpb 1I b5!6&N ^4Q"Gi(J{V'Du|#[ sGUT$1}_ctgsq!'%\/Wٸvkg­x ZCһ%z0yS?͟~f{xM./ӭ&!\׉[Gf+|}7wԖu39_|<ן9xXrY'yJ=9\0N9.?K˾lꁻf};]kCB_z7=\\񲞉߶W?T|[K[IMBK!zoO?הkNzQ\~oH׵^LL$Hh6hҺd  N`;Id`B:~GĄ̸_tzWJw97xx^ǟhW_qsGm6۷r̾1ZL@!j葘&WlV!- ofJ~6Ԇ/@4峮终IZRe:HH(6l jāVQ.e&*9G:R0s ƐVQQRg͏o.)~i.YA1:8*drNsZۦjKDlZ7ݷm8O@KdzmBV* LsT1& ˪0p(X۳A)y7=*REQJ+Cz-U :$p"A"3;E ]262vcg_$#0`4uҎHCSA83 ZaA@wOcuZ q?-wt6Z M͙l>HK"1a`̄"0JDi X3H6%pBHDt0L s:3aΘySD@")7gYI0V@QS$T4Qsg̜%/))ǤH $"þF 4!GC,I'*:{/+Q֔NMiQfZ*Z׿j&3Q0EJe4pQ>g] 2]g|oΞbߡPZ#z6 ?hҬiXq8J'qG88f'8nOg|O|0+rӃ7 NOCqڳ8Տ;nh֬ 7όGofhR$(aG$5>tEǔ7R[wgFs5戢8cyW]^!OyA0{9# (j5t_my.$~wD:Q{*6~_ qsoܾ}{{6l߶gۆlгmS֍==ۆz{F{FGG:6R8yofZ GО rټﺮW x82^+b9rȵ; VOkM)UF}v8w|i`wTŁVI9.e2/c[&7T ~hɕg desr`X.Qhm㤆d Yn&gl6ǡlv+l [V*6 jQ=M^:u3q-PAƤD@TLZ2)Xut;V*لgx|8PUwܻFCӻq`/^pԳV-Hk+Cr;iց--=p*OeεtL|чY42$Tk¶-׭X,O<-4 1\*/r[sf 9 hGzӆm:#,j¹~]=ShIۘi'nQZL"rA/r<])c#Rg Gk b+' A>IkY3!Ix#IHeI)>ABHAh%f@Huזà \UXc{,…Q4 S.(6"d6S'u) qj816Y cZk`$NleM*d=fvw4m߸5*lnư(Eڠؑ@L$I$jDftmKrM{f]S`wtS7@^ e6 -_| vfr MWsmv >H3$c5:}Z{+N=!2pQi ez?jIշu}6 MV mzcWu6~C$&Gǔ7U¸VJz$IJFcH)mthR0w`fHs{vjes=\YtB "Ԇݎ1/NM3Ufx+T}ba_vhH)(u8vݝj q[mCū.ݺaʺyn:hy'^tk00J)SO8xxyK*ձ'>Kz靚>nεB9>}MN֙4-Uj+'M^ AA^Zyc˯)A)tk@$O{ "f?$ ?&/845?ܳk6kv{ bCJ9Gt;FKr\VJ+eU PD^  /[nH|`LTDݱuٳu@쁑7;Dwl8VVRPjZ[nF!L WVk-&mؑu_C7؟i1tܹ^k~Qѡ2l~q>4G-6WFZھjC޷idT'O;sgk^ %aGZ{`(MJ) *dKkYzBXJ$YI)9bm"-chTzbs Ρ[]۪@GzDccy֯%:3g]"--{v5N 8VV~ѱoWJkF66543[jCNQmP) f"km XAm+ `d@#y"])$+2PurVH\xɛn*:g#޳wʘLj AV, V`u \\\{_htxΝwJm]&s]7_ezn{Se_xZ N-  YpZRXđP _߼}ۼe# YEo}};k: }&g۱v#暋0nz]!;~8*^nM;CNr}(o|V'>l|7xwɓ6n0y S[+W|[k10ωIM}sd r@PgA@QsT!""#gͱ3{:v gbYէ^;NQm&yM062~yFr33@!MY87~?zib_/,Z0sxKKg{ b3E~oH2 "\&)Ha)9dE+^\j1աD緲s֢ m}!"a b^B9,[/4()L9lzt\˥R%Q)5P3 *P3x7x@),GT^*0" ?;-(KIΦitZyaȞ$AJ)$ CX!(ϑ K0,("ԠHe DM)*UL34 pJ!.7&l6Kf|`RԃlXF nAA `*HT4GswPX虀MQp<d.oڸ~ӧ:{v4p-^kvEaT~+]1TD?cRa&"ޓJ!BrN$D`8v#殟|P"BIU! QṔEϏ>WԚUZcGlv̩CSSCkou TZqq]-;0hS7kT9ȦkzI9"YAĥx"2UzWkY5jَ΃uVJC ,?vcʭG|sqDtr~o A)TPT)JHE _V}7@`傿< ʊg tT %B,B9{PKQ;A5 {4*!ܑCTKfbMcdl:H3g0-\1!xyzƵUD#) Xʼn82 "_ UÖRgȵ:R8 (tXL EQX(u]ߺ<γstQy8.i{8zQZhL12aSU~8(^/9ydgB;v}ʕd6ҵ1q6:ϲ8$I{v¹hj PQebsoxwRM`|H-Icl+>"̸""D kV[ % wQ f hĻ#OSJa)ؙ(дVu}Pz5uyJͻrus!gN:)g.{ݣr\FZ,1ZV6˽cQi:̝2#PG&C#s$_(xK5*+k (ow=YRe 袢d 4_>p.ϭk_q##zӋݿ?(~>jzˮx"zTN|#@Fzb 7o9Z?};v,ϥY$Dʲljjjnaި+CΞePl88VSku{]Ve,?O|?iB  RF1;/,ͭMOoY9]s/󥧟xԹ>;s8|{ݖ+~mw6KkB9&e EȞfI?%0KYF-R# }2e+R[/}msjl^r5 lǍcfcxn~Q&" [v)[L7Ώ.,ZƱ0 Gjؔ۽6. rӨ3K'{nfZ)5( ]>bъ-X<{ hSKl˳FPˑ+_} v0I "-e+q: FrA<$uGѮb@0J0AbXVRQB4S$,,@t[B"O̊]ZV*L{q~)CPP¤h 0T HbLKu>Nmfm446: ?ϳiEN!,U[6߰~H)d6&&;3'z̜ HR8 x'9 ,ͼŤdI+E˭@A!23*Lz3 °&hSr{Hje>^s[ *=O=GZxznqhmXmz'}gtfE4h"{fNai)2=r\PP^筏hbtrftqvWDYM֤{jMS-۷B(߈x!7[[gXbV|~- =x^+3h.t4?W iL!¼!0;k;މSGO9\*Wz- OV ͨ3 8Y`y)X w<[]TI*tEB4Z)@M+de3[" ,Aĥ0 CĂ9[YN2I', (Gaea9Ph]35><\2q m޴ٶj̡7mb왰 VM`̜zcknޞ㼟tzn9wNJa3(p֏@Kc|rxdFw~ءv?*AK蠙Ԡi#;|9v(@]I^/%˲qj$gA& S|IBIR~*Ϟ[k,8wށp srY1ЁA+9g=@J44TtMkJ00JJb R<514Ynp^KaiI+"8"=}8qT^شl< _,&۰vy}^j%գg;wĐ]u󦵋d9n+;ƕ ӲWp{~I|~~Wa17盝ɟ=g-l@UmEydOyk^?u| ;Oڎ+|'6m$N~bJ-h̄ĺI֯t`; wH("PR"g=@ؘ{oir'[8|#ue ,"G0BA"f~Ӛm/ذv|lӴZt;ͬM;W}`5߫o| JRT5jB"`[:gw6OTDsLà4 IjwdR-=RSI (AK fƃ95.͕X|$X* {m6D52?$NpUW՗8|`ݗNd+$YE+k#A^/hK0D sY./2=W#Gyk}H{x굯yyT|Km={|yѽĥq/~ēO6}mrrUd+hayW=7\^Tm}6][//3;?77>:=ߞZQ`p\UCgV)T Ѣd1 y(ʰ0>E ##'ٟˮ,)Z7J`Z_7:wz\-}ar2fhLpW:0EڻwYgxf ;A&BŽ bH0k-tVOXGc{xŃ'kwz۷O%U 3Me;'Hr>ʓ$zv/Gq90e/mxQ*ȶ=7:@yf>;yb{oy'" 6sγCDZZ{I']ژpw`GQ -6)aeI ,2q]84!ogUj}V*a(SH1&.Mr(HϒܧY'͙Wyl.-T2;6u*Ce$BMJ1*P:Ji!QqyUd;*R$@KcC>}p~jbe['FJqH" Q! kDFxEoP@,[.sYFP#j|o;^#kwrSvo?y\ց64J'=ow@, z6?1ܰIB.{ny`ρ^jV/8;K@BD^% 4[9fv]WRu\\s9O!6{B~ٻ쁓'곧Ϛ@ ]o_}]O{Y;=o]z}\ /cy 6v;dݺk1'GS4Kyf ^Cmη֬6aRa`FjmF!{71fM Znܴ6R]ա+~7ܹjlN/vfZ 'Z'džئ¨Cp|fwK)PE !$fa`aE,`PxZ҅=>t2TL@@ܳm;4XH|;06^M9\l[GϜAH y{cEZgKCl:Oݮ=gI;mbK^wSG*,Oi<23[;k⸟{A819V.Ξ`0kP7Ɨ1xCEXD &'l\nDcdB*i@@Ei {ssgܡQF@x݆MZiJ*꾣A&,A>@oD橃r@(}^*T"܉Z q;>UW|pGgZчE9-GZGS  )`:4~|k^#~S*՚ w=R$"Uv=d +F_zϮz+^2<>mw:&),E:)O56CŧxjtSc`A:]˕"T{V7Pzf ^'wGGd$/[p!豉1*WӤ,[2̀ S_D^R^D.GQ۷x&<=۬0#UK$9λu 4w*H./)&&"cy|{fv]=ĞnYIfs(@Z&^3:y7vr˕WZq4;N}]l3sgNՂ^V*b7 @֮%G;&x@ qu츂IG?y* YMvKşD,Ԫ͛666n05\4(RR)[?P;CGimoܴfڡ c ERD0RȟHe;RxHhK+^.H" Z -pΕ˥JvFW U˥8F+D8oVq 9={N{L,M^jsCrN249"MQz-k#-|{.K|ߓ[*m3بTP#N:>:1V6G|=5N>5^>hjM\*1k#b3'N\=%;J>_R5쀗 Þdϋ>{ݞQV7Jzuh0>qL.$wRy8t: \uu;v~{Ow➯ܳ~b͋o_6sFv=x7~ T"_h$P6E2(P&؉gG>^IC>{İI'y'/Q8w6 jDڔ=m4:U G&H}#JsQXڰUNb`=hEr<\-kRB(4%(=I7A<5#}lٳB$'o?Oؚ)a)Kj'EmtBY*s)) 6C'h=ϴӤҽҚF&vdĶ k&zs O;=s6liYIABL}ҭ/t1$uy=뻳y&&7){VRzv#x>DgeDXTq]\iV>LH//epHpej& HHc$B]h{؁"UaT1pRҔ4h떭7lhMyGwK(t~#;+>{%Z.%_v 6m1@(ZRV:w ?pzHXdfYj?o߾v$IO{vVȄ(*8Pe '<wǐjjNW ,yݤ{5/849ܨ\֟}K|G~MliMZ1"@ņ;*[.AX?_!jY ҦSp)+4-DT wt BuN!h*˕_ B.nX^s?`?yKYjDմON]JAt;cVn#=çzӁ'G߻ޯͿ\y_m7!RAE i.(TN{\)eݙQg{T,FK:A`W ~l޽7o_f^ٮ'>WZiǞʓ,1A<192<2K"HYtlr"xF*5ı c4 d(0j:Osv:yol$XBh՗Worzv9Z,6It\6:moNRQ )f欗^,:X6&4^*qLUT"&Α3 <DҼ( Sx!2ZxbrQ( NVh"H cZ*jyl*Ej1h:_4=`V B%+E9[I 1jsu%̅Pyn;=෼sFi5kVl K(y" MͻsOS)[JNٙ(&YT}Nyء~Se]_hSo;qjⰛ?^y[l8qįwM=.fNsG r FʕKokfcGN gN-t)ޛ{ΎKشjNϏL8a\kSg41u;3'ћ'W^{Ӎ6lˑ6 T* x\&rctH|369y%ce՛m>~c 9mf3UcR)0*H% 0O{8L7fԄ=fv|M^_[kfV;Y&BEJH5GN+ue,vۨ=2z$?59ݏ<̋gO:E$b.Ix^s'{n5[Z8wݹfkfUC6O:/޻$Hg~곃v擻<#Dn eR4`q '|QWMeN$v DPDQG#R.{<@SE:(e:tR) Cc .'DRg^3t&*pz4c9].]ܬJRNUE}Q%! 'y7#bodCk#*Qvr~e]vkȝnjuMkFyaI9+.%hA,f ɚʸg To/=tXtK`$}[Zr9#9d]]z5Y/+\r1lkoQk9 _sчcڦ6̭E9\ME)c0)D00ZR^Z;clcQeEQDrfh?ˊB)TnX/O?6'` tr֖7^ynʔu%.c.w ck1t]00 A=v4JnjpkGl"'%{kR-!V Sqp$"s3G&BUs`9q󍃙}h\]5$Yشr.$)uBtի =*)JrX(DDNs s3f <3$},CsYQcȸQu8&"JBHP3{sᢒ2LLs>gXyzi't*Q 9ITdiwC2mTs?pƿD?IΫ>X+ǻ2$¹0@ȣ`q>'#YD$baYn i?cvB 㧌y纔:@$VUc<,*f11H#.0sy.N&'iW;jdֲT)J)(2TXq5͘T5 WT);q,acQ4\5M36g0uBG[F!bݙtt/t9g%|zin:޷r]s$VGCTgH,IHs|_]N;30RY4U'8h{۾)?k!C߲a0Fۛ`~Y',aIW(+USS_3( +1`~El(3/8`0fRSwsu\x̫rMih\vf٨*=ZA02 3Vdr?BuȘS hjQ\.$RZY=W1a ppoC0tCsSЇ6={- vWa\yד#\q_'_>Z?8pUrpcu폾 >l~f{^Y6xf䞅o?>yG|dѼyY>|!73kR5[;ݽcZs?Hjno|K6uyJ#v}lμ%{HwƖ8).)]G$]UbxZʺ9K&F(L"8grUFlo:n|< q c-[7l]~U<5MSB\eu1FR!۳T8]7jtmErppM_X{mK/W6ד_Ɯƀ\Zz\kՍްaiG~ 'lY'/XnSSH8TS]I$1vEQJb5e:!yAsdE*WVTfnN"P0hfrD e1CR6 IAe CzaiJL -,M`f2˪̴p9p9=M+O;R/12ݬeڔbˆs) 0XbD9}ڝ0 %B7sVID/ ccjcUUՒ$8gKKO?ԙӧF#Dw[{ۛZW-Y klnokZ Ac}6}ֻko;o{}s>mjj29˲0AN.皖[v2#pͥU",cV*aCuYNTmÄ ?!Z&MzrQ@@nlLCv56rr}jDG浡i VR?_uW׶-qHW>5~Æ '`qmhnڴiԘF]FBp*df(hNǏB|_പ-*ee[3c1)6Һmĉ_-YrÆMo޼mŅEK-tuƾ۶www]TRjkn°:f&*JUr \掍;u]r=LvgunjTb/k&3a9R9 z!d"N.͚N49;c0BR3V!8"* `$z5/X_R$hƵ@H 6Cx jL)ӧL2c6x7LGB!M YAd;5@.k\@:&+FUTɚ:aiY8(2"\U]r*U7(֮1nߺy¸1=Gq_|`յm8#ΏfOUsԬYg\wߞ;wn[gۛT*M.DE=о}ǖ-+W|-(P^2x3d{ҥyӲnmzllZ{onjZIez|xWowkw4Q qrŲk9S/Ɯ>޹W?d.}▎%+W/XdE%E'ӫo83z;u륗WZQjZfD%jr!vl'1^rɬN!" WD5HRL3қ{ s;VW4"؎+Kz̴ ؎K)@ĥn̝vϵX:R^v qōkH Zf*>09ie85 Ӷ֬Z9IvtYq{GGGw;eQOֵl׼Oz??^~O>&zVaB`Ӷ%\z-.8i29䄋TsO{}XEbG XUO9U0'~MI遳{NG^tGui ~2k ck.<n>Q4BP^]QӦ韡޾UO G tǃĻ}gLwBVv҂B02cݑKO=ӟKfQ3{Q7y@۶- S'Vzz[?ܿ_,ڣ]3n2Ó230-K3 D$"Ieܣn l̶퉓&le]۴̱޾~Cs\8.j)c_jǻ)&.ꪬw`FOx{hdoT[w/ᐙⲙDUMMnʲ+):=ϓٕC ^xPY[m_?abGum%mî۸1 `(tݩWs"S3XG ほ7|sij '`wGal(=vtC 0JU5 PԢH3-ic;ͷ߻K|>fB U|7_u+}{HW|_~쫕'{¬?kv֭K/L% G"7?bc?YKsI?h+Na!hVDzzdOdz7KdU;mرj':.u \tguġk6t,ӥ} ?ɩxi?SdGѣш Qs{ka"/D&uجѰ`\`  9!P-L%P.^ׯ((`s0f,cR\TY./I(({wբF$ڒ 9xBJ2/nM ʒO(59 B  (rβ.sA9 Ljp9˜" (/z_`g;刚 uՍ}?>W[t!@tVL U==e6lzѱd0ܥ~=l9#e)pqpL3L(1_|nxltB2c41ϥdUuCV~scmYc0tIeb0A0$%} UȒD ಄%1<9̎r$!IR$I JN;ٷ<7ǿ90qDv Grw婵%rw}{i1`W?\3}@f"9ڪ.T:AX`v Wg\k%ٴlQrnvo t?W߼yWؾ\օR/>Kc%Ӊ`0RJ cErq!HIAc3 E]5MKVN9$N?㌶#<$گ]ߊ%l>|:^[OCX?80L3tcp*m Qqi.rjPs-KrIUۡT&u!֠8Cb nТtC Tf]dIJ(A' 8G ]@ 'ə+k$"Bh`)AI/cNc/߸do~xdPtu}o߃ߟLxY~-[0B l\B=Eq.pAWȒ,ATY:cr*$" l"$pN0LFVq?oP&I m\.@Up8<4tDbLӔ9.,a"+bԳ\yTӴ`0kJPXU88뺜sYQ0:Re~L|ox}HWd@QF egR7_[[y- 1qN=\`ڤuuu"r>tC !pɤ3e*D"3D-˂Z؎ FκͭGbUX8m61TRZ)=N ;8ȄPWUTd "Ir$c381m;93Mm+jaqY0TC$ɒ$ 0Re㜢~}r!"+*28R0' (q۶M4,RFu=v`qyλҨ&jί`^|λnT`"#ɒw{!x$«oM~wˆf>34`lQX\|9u̓:x2IC3/wlD( Ҝ{W]yMl{UyBQ||r5W| >O9&ו7ΔnjBpݍ7z>%O<&2G|ɇM~7kzoGgǞvO}98_,fvZ]mPAо]n۶ym_o;L;q1KwgWIEvUl9{.|9qR(h\v5TD>O^v*#QJQǒQ$6mxYO?gnڶFTOS+L'(*xKdM+zmP!-mgje bGKj’D"U4its}f0zX\Tt-rȕ0 "YS4:.&ha # Ma-dNy`i͵^03++Z{|*Kjj:7%3/_xK8׳9e~ajzcEQz{{ckkz'3YO`]B@=I\.8FcQ/_AHL2eV0#7WMDEV/s.zb&qǶLq0EUaiؽLq\HUuE%"D5]״Ƅ37XfO*EHPB,+/))5 ٬eY$C!EQ00cv\6O&2eYPO(+FqQ~_(W38DG3$B y7^у?p}f_">[hD"s'$35s˱H)RvA2NdE!sཉnuia"]7lh=;L @BP\Ƕ\&JeoԼ.LEáXi(T]UB<3m+< pG11!)j,F㺮PB$I͜<2Fs\*L $,ˢ)DKK+JK*8p%Is w.yyu'1W_Mٗ'֙W?8t# \R5fh˴M+@i"Զ {h☱d214AQIDL$$~-훷y / _8s>/=ڄXqVZ\`ټ:$V"ek`zߛ3~tE$N\: }1F%M #MM$,ɚiҝm؅uzWd=9:tZV 0sDaK B1CXUP=_7U^D8L-.ĕ="IśGKC$$aZnB:Q !*wZϞ8=i.HB$o6\'XUP g@XU$K`ɊP XD " 9g c%qq$#FQu" Quk6l}֯Z;i蠪57o .--)+A8@Ngm-'z/*,tQCQq<歛{/1ᤏ_Ӈje繀r1ƀwKv*aOٓ;Ao^'( NMAcܺÎ᫆IphP\(M fmшIm:vуFW^Z1K4ϥ; oLk@# =#"/ GLoo֒ECb?IwvƊ "HT 4E 2l* #䗪`L@ȲF P@Ȳvr dY%X ϱrVb`p7r=FlZDSdƼNȝ7^%cmy_,ژU.F g!q˖n-*OEҁwkk*?-ZJeEv4SXT;WY=jǎ@H;У_}YE+V4S_Wc1,TٜI09 ˂[>gtQU]vҏOÏW{CHD*9PqM\~uK̟q+[oe簐)zV^Z6vss|iUV2/. 뚬J\|uj~puU%+l9y&,kӜvLQ!ITHsz3>]sQ z*E\Q%")paL($T^j@H!^%*N9wY5S eSJ㌙tg`4besBES 7oqA@0BH FX:Y#nxSVYl?Θ2%IS{(_, !2!H0`hb15b"E5{ul,IgSO 溌 fu$U #I$5!!4ZXlBR 2%IePxkk!9.C E*s!!_H4MVu0!.1$zHL$}5L$,gAH0H!ɒB)y 'adXGrF){׉k$qRFP_fZA,66 [ -ˉZĢhrbT`QQ*02Mri <.4= $)3~t- `I9͌s uض992!/Nz7ӥF0 Ma蚆xVs,)LؖmBc<7m7KgT*Ũ#RB#@QZQ$ "MuqF;wﶷXc#0u[[go r 3;~gY3zBUi~ya]r瞁uGkeYٗ?xȾ6뽏uLڹu}'?۸괓^r2iJA,^+ lް;8|1?{՗]|EyieҲ>\s]"* !uuUZ?FV5VY֫gf<o)'xq/oP4UnG%$iQiaUI {Jཎ˕_u&=cTIVZS BRI Dvm,EJTt#q'ˊ  u$YC(gh2VPUGBDB>!\T(5E!4piI 0 "U#^?1Ѣ\I qL+TX e۴ jZ$[!C.j{`!8`$xyg7BoܶtE :c̣:B.u* 8 &ժ"۶`u=Ҝi*̹BҙHCQ>E)`͒uZ jJ. dɕ|dw$YOha@#($+D\I@ `,ƆBv*or%2lv7(DGFTF Bv1'I81$vs^vTFNjafWDB‘p5MbJ1 CCQ eFt#98F?I%ˆ2Gf?(B7;˻[S{Xp\Pd1m]"i7>jJ% IdAqBpvA۹Z۶iPEpBQQ)2H$$U^՛眽?JW>[חGRR}ݳovٌ<BuĀdΑ`J jNiYks`x@Ď`&zמi?33t:su`X>(OC'B"-#Pg7oGG,^'s:h~/;_z{r)'_z? MVMY}7%Kpo"_VcJitd,~;cfɑk\OoՔ(Qэډ56(~tݏ7ÖOCs9N*)Qfܾ`_ ȭVW_ʫ^u΂m{{{sF'FgO]w:կoF%K:H~*S;r|`2s gYyiOrj- 2U$u ,XXtjv傰hd2N O 3_LX( XHD4gܒyWZZ5nOu_4ۮ\a/J:b6lHYP2[*REVҪ?Haؑ6WΛӞw䚽=Zf Fms.]xe !GD> 1:[獳3IHR S7hd7ML;ջ}ui.vpoe<%=,tCȒ:9h`ؗ+D! $(!OBJ1BDRgN{wycME߫#%LG4-BDzS6e efo,42E53 BFО_מ'eJ#șt9JDҫLNbS4:=q>WziM]@Yl`mwll{'.~%W~#S%C.r~1itDN02!iîT`%@ s(c5K_Lg=?@]2%IӮcBցu`=[)Z l̂D]-_xi;4[ꗟ蓛oͧ޹LToO}럿}3_Mᡳ֭~1/yK]2>1`i2D&IZgVToMi{oXzм \u}Ȣ +E.{jvSN޸qg|]/ Q'a<:^1 /=xpVkOm;#;栃7Z'vny[םO]qu?5\ƓKowpG<'[[hom^;daS^SP:P@˭O*qk11W}xoofqg4*sTzZi@hO>3cJ D96)&^Vrya{N\fI>0HΚ0qqOK%}JHOsv+u:lNTqNu7g=Rĝ]E:Ȇ:XrТ#9| W<_G?ɭz,;K.1&2!RvgAЪl¥Xͬ4kJH_+[냽(|ZR 1I ֛@J!B&Oy͖3YC%J:R\.W,%JR(b{ip:.=sv1Dn~o+Yz0}daתNT# C=dh/o[F_t|{ b3ن+D4)%(!")A fң;m.S^xEH}%{=!%"Bi1@)۽utb 2A ÌAxJ=lQA&+5p+LHOVӇ="762z.;xR 2]{ \xώNRqKv~mMvs{S۞@aA(&2`ZJ숂 ;oAՉqSLX{/=l7ynݯ6<ǷJeE֋.~W%Ƽ ZscC VZ|Hkon}cdN.)X(%'j]O=m͕ }a.wϝw›棏= F]v[㤻crgQlq:Q%qK! t4 Q8)Z^XV$͋Ȏ4҈pD!P< TbA-$+ d }R`7gZvk8SgPA89)Bۘ\9lLt:Qc˖{Gʪ[VZWJFhtbJ(?DJQ(;* {m۽sbtuKo-}8@gt JSݿ3;`v,4oŀH85s`ʀR{f BJe|?yTҾ֞B0cH`bGe p`jn]o^Sɺؑd6IK ZqGٴc]N:/? .X:9>88׾5sϹzi鲥B!{眩;x Oܰ_N-v:Bך~ɥH, &[lk\@mEDGO?ycO,:lǭ=3hz/>_tY<<_k^`ogTw܎ IFG&6Ug;x1/o;S^w G!Ľޓ/䜳J{R1 3r/ktI [6mxǿDBП?w#?×;괢 -&" ~BM'p,yOc#>;Pzy-[jnl۶~][핇/owL݊ZF-pA9KLUͦp@Qąz%IDq r2X$ 2ADbb琺ED8PJWHfL S #;"b@%D R" F+YqiN *@d!f[!c7E$@Ւ)#eՔP]L;ʤH̴ot6>5L$3e3YH3uRϦsE1k$iTr%1]k8Փ1_+0bTl BJl6jKEB=?c[ 8Q)EN"c+5q+jLz'`a S= M3 &kZe{*ʗҗRK ?RJ)bf>iPΒs]eL%<*|쩇oϮޥs~[_qٻ.ĦJfͅo_z;л;g'/kpŇ/9/|X=-{#_xތ}ڻ?Ws+.84x4ҵxoƳ<BlL,(__A.䲹|^T:QOYmpq;W_X )T0e</g='v0%673Z;55̳ X"x@Hdv,;Gir [f @ LOl 9RtO.1HY$ep^9b& ;C 23!qRjfFtLǗq0t7%GDBJ)D@i2RMX3D3n)3 zȼmm6ەɧwAK|b̹쪏TZ,f'J0$T1ٌO`|.;=B}:;0t?MZ{L QF5ѮWL{J +H zNL-ߘ6qh!?A6 B~(TR PB*~D(@+}}[gIh:E{$\nM嗿hŪ9zktg,}o6j0{pNǿ/?~{yWwd7w+5K=, "g1$we2ǯ9n2:3n1ANQx幯,{}YF%3sB+З-(F3^5Kf Sf3rS8"{x4V%׾F+=wS"["!.ad3=cd#IyaQ*fNj ;s=} 4%DhEs+#{*QVvenIw$1l/h $ѩ9retdTՆnYwwGnXfpőpǮ`w;9U6qs'"}:f(^+h|g}/tuB+B Q " ,寈9ri58 3W%t`_f/nk++8x~;]Ow7} Fy}}v65on=?ˋ_;G>s\g߸))]uDLNe3κUƄ鉀 P( xTk (%I'1 kRJ)I!9F$vC"lG&N"aP ` ۗbQԚ5v{O~s|Ymp^[Z%XG2Bu:P_T{rgk.٬B9 FE;lB01>piFl$szW};~UoO0i۹7T* SF՛OuXuv<6lu=}?r[w<ak3j  "_MtVdo'mONF@qDhM dC6J5"ccc&}_[z9G{=z/=U}N$ytg>8jIM ;dN1*9oo};pK9sv\zN_5W*܅}_(|-/[=hkXR?}?mdcd%$bkg$1 P")Ji`!r,P NX\yJ0Ƒ(`E,$$ 9 /ȕ [mF[>SV/_~xozK_Ƴlß?>~%-\k߲񵫏@Ь#bH!NS-6NXj <܂d5?woh3U-_W3D.8S"2pU$_KnX$ 9bw&1qT,&y@0 CX . T A[ud`;R f f" )|<{=Ԏ\ٜj'SmDI$"ϨJu QJń!tAIh(iF219FŨiHr ѰB#i)LR B %$nT^'o3{!K+H({pmršD *Fg)ZdF `#rI'F) 1k㾇g``XgdB_09>n|K}Xǟt]wҗ=}[V!֧?tYsNVoSF#p#x.׉xMN}ӻ.;mODqJeYnoub"6 ?l5k| mYS[?TmOY+ ((DL aNN/J !LFv#A(Қma"ABBD`-4Iq+Sq HH*-$I\ToIT.ݱhoNXk|+@31v9HD86VDa!χٞR wZ۫h cijtGs18)ZҢHW:z dBl1 JFu&i q]@{(ZBf*m4$$|}3# rgRR v][33iHBh<8A+-fF!Pi%|:i很i@_"B)-%{זv#};7-aYgDl/4yAmjNl9hQB.00ÅlV p2aq frdPƪU (ON -S6vźΓ{wmc/yw}}];w[pAkU QH))P1etgFTڡvu=dYKfGlW3C 1+_ҿ.wMs=h~$= ]#~_oW Ox}l)=$=x>9d㛳|&ri_Ǟ0>gx׮D8 ) ˺D# (n5H$L2iLR+/$g}wqwܞQio`=}ShmLAWp7=zq YhB_|ŒnOΙg?N'!1 'TGR ,_hNN89U\ATm㞹ոሁtdY2۾p(=9w\ }==w"zgv 4XUH ]wM"\5 03&k-iOK)B{sK=U vo×9-z#FF"1 {#&N( %RA$hU("H E Vgtj9K% 9y^w~ë/}Բmo߸ٯ8~'. N^H*ZTBT 3ӂ++2wk)9 bsLZkc爝#r@1w_bZ3w>0]W|[W]y% |_dnqA(q)9sHerlKt)G@֘&rRH2T_z^׊Z t=fFS;J=l&ܳ{d4vaxog麇Ә,\tٕr,fsQ ~nqǬݼaÿ_}MlAH\{ql՞d(%2)%9ZFO_ߗ0'@dN٧f"VJ6j< Xc0RZH̬=/6 dcMj%Q;SUII\zS%gϰbdro z|z5ZZ %a&Nbri4I%rjr:I+&![rֹL1 D$)lW2&Un<}F!($ ARZ";B!DB4%.Ibab"1IR, 0m#rr~ Y"jFJKYLZghV#~ ]~1pk~<pOFM(  %5u ]d.zf-oCOm\t/Y#oJubc^n%߼RCc#lbPA% ڭD[;%%0x/[8۷.\CPA?;{OxzSg\co|S dzp>NdJJn;y+VD6m J'D}PYz] 4^J?KDZ,t#vDgw^"b%?O ,.IL'=i|1r*q [tduޑݻ% 8ML۸ɩsʞs Gz -%9+(Cz1qɜށjcdGM}=~-/|%ve'NuLf_mЭTRvⶵ6NY3 S|)v䅕RnLiD|{|Lpiw v;xZӮ!+/˭-_u83)) O6V@RB%" B*AĔ@RJZmgP'nq\3P7SH쇁$hՑ* i/n9(I7Tuʀթ W%4T|O)1ڄIٞi}: I?c<=|?_󖏜uOЃ\h-ں=c @ v_Y@_9vcUz[ey,z_z SO(ޑrSn;?W#ct TB,pA eP*Abܮl_# عhaDB[cX9&NKYl>o:X-&i1qLIly=A}4Qع{`ŋX=20OW'MfuH9>驝O3a&)[P.u?nhedݺ&BI3PҞg=#T&O򙱑Bl6rz/<;8Iv,Q:I?Y F%B⬗=tݵ |Z b`$AGfMwmnJ>NGJjx+^j1F)eiϾ- @`YH3BI'Q#q$I1.'<|y &:8+LkSUayR*r,qT GͶOT=沥RT*el2XmR3)1ϕ1l׹3) fCG]<1WAbıѾRZf.mڭąSϼg_۝/50$r^m\}ǵ~or[H`~INS޺m3,+.?nj6=7<6[T~_Cj6ⰷ6p`\.(CIԕ(՞_8'O}?-%90ė匆%ɇ0A{fTi+ܵcUPi@ATYs+&nRa@E,V`p039+\5Z&0>qHA֞)MbX_c[dZ684xqjjJ=ŧxR7Xuaa3{vq5#Xk+DZpyY/ i(-֬p:ajƃO$ b7m^] _Nںtٷ)>׽^ r]ZMXk 8s#^RDL)QQX޽{q sJ#Ѡ"ZZ1lf*O֊̬,ѱZ:7?j̬&߉UpQ(2^2@\k*djJc"nXJeQԕ2, BJQE*M-C݉W(z=9[ȎB2aY|` Tdxhc 9l1{8dT @ lSC :BiZ.<]h0~J|> r4u}f\b䡗ExZ~|$w{ZnCLe|xrػn5j7Wc FҮMz\X, !o#nZ¹Vo//NZ['__/|7.KPFfAĺT-& PQ zzzz{gfXetPpY|lSk4a8 Q$8vM R7י9Txߞ׭ʄnJ'AOb3K64Y#f ( Х)@GC6Cr@r򻉍}CRJ)YN2l@UNRX6FC1y:4lj9]zEp ]hAA!8|/WgfŹszˍ'JIg9\_}mo+gS*ٙI;)Ý8:|z{mmaL3ub;<>~nuֈ^QSH`(iI<2 F䲈tmx'ڰJܢ* VJ1SVGT#–3ڌ@MwB 8NCS(/ОrZ3͹际9;7m޽` Ko<k=˅96epSQoJyQ*$Ȩ6~G@IQ&.vxH@D)1B~X &L U)ZCD ـ@`DJ! e ?#kBJg*dGD w5ĩ0s)8@Tucܷx V*PO^\~csdNmv+18$Z& b )mk|DQ֘QK+V}?q (=vssw=g>k߂RczjUZV?xzӦk|;ySu7a," 7.3P:,yd)}ɭK+%j+uH@T]:Cbr٤R-wHdUZretVo6ikђIZJ! }埿273=w'[=w|G~˵dg.#@?n-J84NRgK=f^ʕҨfU_:lmt괢Ԇ^l1W:Veo'dsV#R%u\9t'] 'AmzuVE)Ein)" a)JZeňZ,R~9gz5B܎Ν8}?s|OOedd[o2E-̌J#PP0 f&RPI2U`1Y#^+=A Yv#2(!'q$JȨ!HZ_bƘ >b&/K"rIȂL.̛|gB\K^fJ)m$N(ꄞxU|\b mpS˗GZ3v6wu zKW3_788}ћv66o޷aU`=~ʩ&Y<8x a $谧ő lju_ҭЪg;߼}=_24>ґ|/q]TBFF;xáS/ŨsG?z]?+_=v-K:yTWvԕeʴK 2?${e+seRW굊r#}/;eY\f=*JeYa}'O8rX_ *~'{ع||>6[ -7ݟw kN^.jugO[>'>~m܅fk!/>ul>y=GZhnRy{m!FEL 8֡_^>L$j/;^kS, c 9!f .v P郙YfabfP1RZi"\8JRX\jJi([98,nL9;Je`zRifz:dP\$%iBeuYaw'U JeX=܂\\&G,!1 ":R"@r,Dؐ(9f2xl"jX@N}aP*,H$V6)h 3,%5bF ޡrZBbPjR]ְLhwڝ8֞ҁ ҀSZץfiQ, WTӉ9kn+\UFb皵V=s3CŅcX{gmj[5zȕ'4bCQy(uz&_:x hS7u~ r?g߷R(yOE9Y|K_zUi`܅mbFƃko~đ!Oۻ}WrssզN<ӛGZ6 `Yso|;_[qvɗgVDR Q[͚凘r/7J7sԿ>_z6Ȗ1+~^,zǐ{n,ƧJ$z𲵫W_bxtO5;u$@NKzˤWi+Ã΢u&Ol\9fx]ws1S\X)ȱOoM.ZIX4=gF7.1Ce $@L(|ɓ{K:aT(x~S'& B'i52Ja`VZiZ_1be2,7]}75<<48<^D+Qb@ZSv4,zzzH\3qҎ(I5.NND}vAn[a"D4#cq _G N9Y"!3 Eh"A@\7`B" *IX !r ?_n N)bI.M4q̞hYcwf,(<} }Ee ["D:kVJ{AL3K$fkV$@DYZ4IӔ#"t(rkF*1ިǍySgׅfqr~ƲT}L'k A\*vk|+*=wvt5 CNz;ͅMk+Z4{=oz=БSsSLÏ=Ulu}2%1Ш|=y]=ʰX5T*a{}nI0Ʌ OQ\sS/UV~Ch?7\ b9/||a烟|bdG1{b1D59爴qtZ-P3u:Pv|30mZu{wO;zg+ȁ#;z?~TLَ?W˥4|cO< AسzC5=i6Ll~0.J,=YBQWGCu\C /ԕzGGꕓ?A哴=;u.?:׫ sν˗op_fV/IeÃb:(M `vm G{{{Z'6%K) e!uB;1/F㵩h%oJj (,; Z0jcݸm}_FW]u˷}T~gQ'9}Q 9xHQK:-/_l#_o|L{AS'Gǖ=+޽/T^{-wQ?7?>xY+6f֍F]kMOͮ\zouVho`5;!, 􎜞|lPJ 3=#/)x8"Қf%egia!vQm&iJ$r[[56^xnf& X hR X<]jNlǠ _kD3>{jffv=xwcoۮYfɓ?++W,|mq5Jɺ%Hܥ8^1_&^dKueǺRWwrUy_)e1UHq&IQ5FQ- ]:k *V^|4r|Tʃ Te`PJ={٩3ӵmWLxany]FуG} ,Sn)9k5[Nȱ'N=gO|_OuV'(&u."5rEdxB,މ{{l2#):Fb#k$Nb"J˂_ #XbǦ:ʘQ)e$-;o((bb$֭;vnfU#z ,۠( uI';gD44 @\ jʮ'4aba$"&Z+TYk2I"9 k`ZeGgvYb˪hMLyrNqDZlj"@T}Aq9/UЊZazkź@iɒZ "Q7-J-NB5F| V 33g?6~7swlY\9?|虿o,y)B/_43 L/KZ\}\ȯV7RߞD}ωx`Pت?s7Apz;Ơb'aqGl|?Gdol*(#ˠ 2Xaa~Sa.qvnB;y{֮z_*=F!>sftXٔ ҩS?hGC\z-m*mkBP,OѰH=?.z /|KWv:ѩbrǎ۰a Ef̫KZT=\A)aUW|骛nB 8I&z5|IgU6g: 026.(07=s%ZqN-KQ1@ri "lf 3?64\.8VՖ$6KP\D8fbΘWCR.ȑsX*[rN2Ky@"Fi&Z"#p/.kDD+vZ1)(Nm4,jg-0ۊET-`u:55E"9 g^RR s~-(ObJ"Ħb1 9r|VwqvC%&i/4q&N'[byX$E7~-sSz'OI:9ZT-Rwkp0];;5;A!DsS'Ol^lv?Ϟӕz@u7+~z*J!t4`d($h$XS-2Ww7/ <\'^;Y?!|k߼ɡIVMDӞYq$ Q+ea&}Bav~QZmA-?p?Ia|ؽ=08Ї~Z:s({* z/lmn|P{Z?}=ə9S$%I">\rtj? C+i܉:V6qB-Y$P'OVd{e3s5b-SF#c26=͎Fڞu ĘyeNU$-Ν8YNZEi4 ylmҺ9J4 lIB Ni ].#)V,mǀ ZiIdc q'B9duU YS(/OQ[^@w@b\ fn..q)FNjRjϊmSaD0Bљ3 dB6Bfl6e*4iԨ1&sfaTJX:rNk̭vkv^mҺ?UycJBFpI4SsS靷u߷>5T8;R>|'Nϵ sC=F`w߾׽uNi$sxfnzE_-TbxO;nOR؜>3S[<7{E~kկ+fDtIw} }4\;xwQ+ҕR_qe^ey &I\*g}k(Thg |>f܀L iwGBJ4IЁ;?5k֜?-v'P~~陙ёBЉٹJ'gO~ӎjO/6Z7Yw!_׮?ԣ҉M/v;2|q0,.9~=V#l&iE/3O> BȹU|F y'='TJ U:Qg ՙId;.w}!D6:(ԠP+v"n՛F7n$ MDq̞)0dDajS"ֈ.aʥxkV& $*a1gAXwhADWڦ)9"Gp)fцC-fQ.K2lI"&1h&ȼ5 ^E(o@fqapb4iEDu&֥],%\'1f9Yljm8fk-3!T'U.QRR"Z+b"ba% * 4 \ J%U)PZI7ZS& _8-w>L3d ~*we*լl?|',>u+oۙ/o cnnwcwo`qtSUXI0 oyϴ#&J mw\tAAwd1o6c3~VES[D|% ,Ă+SL%eӱ֦9k H)$f4HA4D!$֮6|~? jz(*徾٩=_j43~_N_d3#w9wփU( -˵hz{L?MkqG#_pF=) s{ʬ#Hưc]^^^\\^l\Vj.+_}wSOkuFKl;:]![tF\imC{/KfRIX:{ N\)O,bo•x AFD' Rbw"!-mbK!%1?heƉafq+dqcGT6+QxR9( 2Tl&o.D>JiDq,-R HY @N8I,e& Lv"MQ5Bj?ГLQNc@Vx߼+eH(N4"Q16623KlSk_&&bTʱ.Kc`(Q*gC@>1V'::znFqGk&!+"wr L}af!%@`ADvw {#DFJ[іI0 D hÝΙ=@|]xinϵq{환zzGE' 4+~>pl?y|ԩS_/ۺ92qM'F;wc/_)fۿn7lw*"<$y;0 2ل(睘zj<[oؓfn&_[8JzZ߾}k#r T~o;vZuikK=B6itZGkٹ_/|R A R?˗w@<~flw&Vأ` ȮZ׵+g)(uE ,0ݣRTJ%Ib&҉cj5qVf}ѣ7~DZ{GxS#?w>} 9r܊:LTm5}?N7#l/{9:Q 4|!ֺʐ3'6VkaIJ)]a浵$bmS;g2I"%  !,PltQި:HjSuN@$I11U#f6DĬA!&7Œi0Q*)#6e`+ LgջPf֊t=e2 X)$v))̂u$ tQhK$n%Q*@muJ^鮠qYrX(T -0Ir2KSuQ@"u`)L̏WS@Ox]ǎ_W|sgݲk|54ч_Urtqk@ɬՕ#O旾c[3Z?t&S8WϸƴIږt cKaA]{*;wI4d&#ͮz}U_~ݏz.WťCl߷0YkG7{P_[;勋vL&Il {++c zI ȶJԉV:CSDew|I`bHT.mHQt rks(޷>9u64|t /\sTKs:\) =r\*g A#];wh8#:[nxfQ*+0#"JAq*Վ6å>?;4P(+U/Zǝ(Jt8@|zpbv^A]}[k-+It`o-vSt!(mBC7Z'!` qW?\ȲM7ĄݱqcbSUj&Vbk- J2f}#ɒ&Tg; !1d5 m)"Dq9Qh0"H 9>D~Պ?Wt' \6W D0pd p"|_)z䏿OQP}+s`_^rvLn/,=ZYZjޟSa{|o$=}em6?V/oAAooϭjZXZoǑ>~ѧw7S_<[,etUj*E @~ϟ7蓏Jp>:016+[qkX_wVa{ZP׏GON0:{~~(к[_ywo|[_\/\zE/wq% t\(=gx0xt?4ތWhe_B}%uÀ9B.wީ"(@OdW$G zȑ0֕juw˅u#GmٹY\]g2 ;-E>Co_m&vpx: M"Pp аTb!DFQ|3G\>5nڭMkKKIh2 op),~RY0f,$vaOeO1>_)e]ۇlb2J08}Ę:# Rʙ+LR kZ3vbw|QZǝfRBҨk˗&pf|6zJ5vk+^$Njz+u=- BB:.#8lNĮVm:!R(("`+d%/ȂE/ݸ@".> H-@d"E7nKAl-&K@ n(E ٘{0($]{VclhY lwQ)p\r߉vDKKS`X*KF}Zo㹎+%h  Hp} *eT3'=xn/>u)&zGTeu&(/m/W_X̗Fƾ\]SOe˃}g̹6$s+~۝_-Nj7 ?p3jQSVخf;adVYd|˺KnGR7US6Y"c6c3Z> ֞WG4au ]bbL`q]Ha6EBJ$TBH) 8jQ4NcSF֮._w-c+KsFi}o?o3_;0;1UV~PivK_#_X baG&a;`xX(S\SV[m)d3uSOX>35'Ϭo$QJ qݡC/·އ~(fp-џ? 30/\(?hoνZ+<7:5vf~9+ZOL cCRv}t\,JV9(IJ9#=R*2^Y;PfIf3u+<|?JSoֱ81SӧDKdrTKT8&6q^D6BEt=l#A)"_J%˲Q0 u@3#39\%d/t1Z2lHJ 򤋩i: _̀3H :8HQB$$:#u\4Ii-R(@I Du&GRGAsl V F͐*;w  !TB()8tZXm%ێV-.Gp߾VZ ͅ7;>9sO_}=NX\gsJ>p`Җ\>DT$:ɞ|h'NDD偾8JC×Ϝj6A? e}c\\)8TJ /RIZ `cֱɁb/yUa5=ޑ^|`bg9T eF9_(k 'ZIY%e/&TB0*3_-%xO&x챣;ƶZ WI{J#C~)T/<=fSNUˑ5[ @!PH!18RJE DN.%&]vRFX#-J;u95XkS$J%7,YKI 2%Dg ( BHdK % K J)ТG@v#\uCWVđ9#JVJ7EI@0}'a֊.t&v軐u{ @`ٮFrRoo\(SC)q6 U\!uIXAZ+Z߳xȟrҿev|9ۓ.9B JAdgFv?al.>ԹUvumxPy`㵋&n֭#O5*ry}ʹÈo33Y/hch4*ߛy.ܹ}2qgg.M籣$%%rqwbr\h2'Վ9nrrꎝ`SzæcjKg.L6k{w}{546[&3Lf|@6cd7?Ż`泌(73،_չ҆caJhlk>HAAR`I'~"[( ,$lչ. $qZ3+};c۶7.Kf3f\ϟH(|Ѩ&Q R3 ;JqhHj%6@*fT/nmlĴ€_J&fnqitdPO>%ƚ]w܅f-W:Kem8?n["G!T)dZ/ƶ~t"VTJJHH`ZƳSgFznQL|M\Ykjl5sr蹮xIךV{OL[BԵIkjW:t(rc7+lw/U/zN L-F@Tʂƒ; @jC2UK\BA! !0m$#!%($ #hDq4*(ԖVtZA$D%Jdc/ݝ ]D;K%"uH%Ȧ+\dFfRd *Bک(R" XjfԒ psO oL@y蠢}]w>wsoKS5"vd'7˫o&%=~GJ"*df,k*[ԅS3礫|6hwIH^ip;#N)5D>/ܹuaXq>W6߾oȣǐv?V۫Sk݂˜%T LWW_mbzJ Vzv '2U(R!:YU5qB6Ԩ, kQ %+sW(lBdޒT&v-Y_]ko]5FF旖K~̓~?6;5KWON ВZ&&֪g/gsru!tb{&V'lkKlT3+c AeC2Z^dk Zvة5*-[7r$Lai]ItR(MFı6jm5v;| DL k@mc7؝ٳK/nV;,VV{A~ް.՛˖۫|_bjzj^4 "-r~-1 R:Hj62ٞWGGq,3v{'wl5lo--$ӔA`#Ζkێr~sܰer6zef.'i7ZO|Lm;&ƮmWzpdAOv>>5t6bDv^L|֑4Ca_ɴ/I+Z>ie>~rº,rT?{q%ֺh4[ $IXCDf3jw&X -̗ŵ\^n7k7O<"-rFNĎ˅޾յ*MX >|[BrRj-wX(8akǙcGJp\2&kHBԸv ;ؒek e{^*Wy(dRfjd2q Gz٢|[iDM+TJTB':v.skskOk 2AJHZ#P ,rj't7TaHB $ J!׍#,/) [`NɺY,PtRtl@BrZ2֬N@Lc ,m)_zύ.,,{.,,:.=u*Il,ELi5myٙY (rh;$Ė'+ȕ ^mԛfX( V$kQl.Q?=*k,깾$6Ir)㾌"~qg.]$' R9v^nT[;^,V?78E]zxȰV=nfO\\ dbTQ&Ѱf sK!#0!}W˓С'N.gϷ"Q%^9Fi̬%b`N+;Vl2PtMf;;\ kZƄQ޹}l>1G F%4lbNX%1̵fݻ'OCT÷x8:r@|9|niV{3}۷Pd'n''h4r(o}~ DI!}dFW~ GV\=[:9wm7Dy0l8}ʛfl.99K ~[`W%39$}חBDX7/Zg}UNxr@Imm>w oSG5YYn97sa|n[f7WĿۿkat--\]\jZx^+H)("WGUljI2J NNg~֗Q 'I d #zϛc؂F2TRrd|\5qn؄F˅Nc.93I۝vcM26`]R s-3Zkk"iQ 3'Z-Z5_w}hvyERL 3/I)RJN֛-WrzZQ=QLAq(QؔnڵdbE0/0B.e P2Z N2$B H$Uv )'JL1,0|HA1 6nFS,cI1~QAʺyknE'\W0_v56X"(bWXOTxeUۿO}7\#e}qw8zӁNX!D EL61Ym̄ ͇vb+:q8J"RUw gS*[N/S/% "})bO "3b!XJ|HTR jk@ +d:ԍČ(R[c)-';"@yg&N4YֵG`T-J!8/`@"uÀM^>DGu {^c'`ne;2姭̇BtV.NBC9}qk_}h疁 ZVg-9ԱS3Lk(".-v"rN)p'džQJ! 2үWCeM ̺7 Hc^ջ۽sW_w|iFڥs+6jkεC-mߛYoz^A+/?-$;tj&_!I 9Бcf ]'FQTc6HTqsڌx jeZ~gZtz$UYV7&Am8XDZ\1Edqa yLFk]",iȚFz;8Y^^hx~aabrK[^}[~0Qž3gm8lZk$ .\.sYdL!D薁, tƄ͖Af3$ *G0i]u&*|R v]mTd{JU9NqP({rOߎs3MS 8\YRՄF \jˍjchr2[1ܱ[(6\x6t͵ @l4\*f8qIFaQkqXp s}le\L*UtU TIGd, 3k7 D.6 NJHF!S.2#YDD AI9vXL$$D3B:1jPZ1Y2N6A ﶾ*n暘ە>g[iiٕzA<~UۃCe߼fRԮ"5j[|ϕʥPc,C##*h~ w}׭mʼnVSsFȱم0zž$j;+F{5NG@F()LV2n9wgN&Ap^\꧎[tJb. c#{"۹w׌g˹wކH9i Qk k"X-{*\_{f?Rm4{s{ye)V \ٌ،F c >_sS7y+$F {[4Gtzt%RD xKs9*pPFH45&K^A>../V֊̌eP[W8؎zGZZ|oemkk=8N8Yj5(z˷>jzz(G>zJJeDH/ȲvDZ)$B:6n-Ly WNL(C$tצ(BH!BP8R3rF{jVP iJ*!\'kaHdΟ>5<:DWoҽ)zz r\"2hɒ&}1 `mwDMvÑ4 c^ m4U?O桧~2''7_B۩v~gBgodef»Gk>K] xzcL/u36c3Y vAs#p9!zl͕WBC)܋w7-_٬5aL6ۉCc)j655VsݧO/Vp^*u3iks]~w~C}OГ%jem.خV*r4&wx@x^hGJÐkW?繃"Jl6@ạ5F}"Xb.V'}clqFQ!3eVB&q]/ Hd$F:N਑Q)TYz/Be~ɄI(RʹYc][\TpcOt0p&t pi~a=MzΖq+<$I aY]^:jg'B5˜nuTn-b>|csn rE7&F8l"(I{"Z6F$bk0",H\EJ9Q[kύ㘴Bhce󖌎#"K8Y_8lRY3A8P2ȶpPBm8av=88(\_SFT,a./- @tnē'H ij2EزU Xİtcep 0DqĚ Y˄`HD`Ibmb5OL[.]?&"Ȳy32R R@H!U r!UE q6_;]k+:s4bI=6&\;p/.@ K7$!1G$H8!&1,04*fFgNgZ}4"y,,̻ijH!::$ u1P꽍1u`u1c4Ƙ9F61rĨƕlsͅKsOlZ-G{|5OʓoٹG}_8/wbUYdEP@Ssy׺D uY$.F$ 3$͊a-C*$&C5$gTZ?GV-jff,KHA/pV-?uf4|˻@U%$xG=͞:V+:( j !TUQ`vvZq@UXzx}y]Q;[kk뵬%ӻw#}~_b|WUBU.fv>UfFk suꏷ5&8df~[M7ƁkƳ@dT[ ۯ{}D2FAOqZc 9(b%g;s3ڪE8jxzU;p8G!Kpiu5ox# 1W5\\_:XV]pYb@yXu]7jU5Fh1 XI[^)Rm1ƨW\,QRT&l' +Ц  e'jD2ڤQQBHu "bm&1f&r7b [Bfaެ[J MsΦiO,F=qTTIDq'ʛohd3V99!!fVC807U5""[p[3nw}ݛ~#?x9q2z~nWru8*J>FvU4$h;s,7DkS"H*1VV4`}jCU"|]>e%$_Bŕ W>~i1;;O~7}׮G߾e&.2Pa?CR p>sn;S~}ߌ˩3^eqn /w}nȯNWΧkB7mUq61_V|44LL/sXA77?_a=!UԵ+kIS CaZ/N;K.zhc(N-_#IzV;3ztPlI?$iƀ֐\B.-XVhmΠT,M3"+q.\\PZ"Kq)ji8#sQ0cS.""<鰨6ͅosy{W:w߱c*o~;[g#0^s~U䩏mBICl-$ʱ1hT(ƓLc2D)D(O %6 cLYIIռUX"ڽc_RV8ܺG?~@1g?bp\2ˁz\lxɧOm!&'o 7kvupsu]]_}BW˜;^跳;kar6Zg>}^u4K$NAEʲh֩3j:tMwq}e}mv#-IzkBgg>XFV?=}'uqlk. 4VDAըW"XUeQP%c`IkUPsg-=/M5@,fiLRY-d"L0@ "FX("I *"ڌ@AYB-y(4b,,QEUU1DyR8보Yfi%>I4MS,#)+T!.q}8\6{7OXkԡ ǗWVusCxpQ1ƨ1M#SQHd`jhVi@J˕Fڝۿe]o}Ӈ>/9u?= w#+SpS+]Og֬qiNT"9X$2Db!VUm-ˢi]@D,{ G# 20ULMZQպ3׹$ÏX3LSw|v{:/;>ڷ>O/jwWPu]]XI[=v4o=ֈ6/4/mW:8 wu]]/y>ArGk{m?S'\/^q sUYR$U 4BqʃI!!(OSD%BRBUj9#6*֠xgCV{ U,e0VZUXT5WAK˥q${r|v~۾mkyˍƹVwugW\s'u1UCqOҙuU_m7]wbc?흷*~Euu]]'3ON_a|cgEյ];w\n ˪/}'TRx򗖗m+{Ĺ}tɓ][}{.]8W[mEv:+˗<چVA`5LE##2M)dc!Ӕ 2XBX"cx4JӴl^;3kZ&IR =SjZtvaiQ&YQ}6O8}ȵ9ct[n7;yKFe,Z24;?g9C,("D +Kl-1ruOѰEG6vg.|-wUU!*b0: {(\֎.ipLA:HU1`L|X1*p4FѰ0IxMTu4d PGEټ{s[;̮xǣ};S>u/~3PNy'?٢5 4qTll[_<{skQ] 3sA0ˠIbf efV&E92ME}aUx*}y*QTP AU!oQE"9[ 䜷&IwIMR@Iiiy}jJy:4u,̱V432?/⁃sr$,/A{k{۷ՕC[nKwuyΆ:1HK\_$M|y:uZD v}-#PB]EY&y~wZAuR MNc W}a?NnLo2 7v;O*h\*ֈrhBNצMxRgUY1>ZсɸWu8g۱g?Zw..uZՍ4yfYMߝ&$2Dk )cBjQCj1!7??caa+' TV!f@$4>L\j(ndhPEBPa&I8" +2gky Lq8n2d\w[-  Cݶ,L=07 /-_UZ,JBHϜ;N>qWݱާ3'ۙI(5VblwuPi Hh*M#Z4,$r\q1۹qTTNvB)VE1菇#ͳC?7>[_s1\^-{CQQeeI'mcpXZc` f}_o l.WtTy y{>G~{GC1 3+hYH[fKy7Ѡ57v bff[;.*S"ڐM<pldHfYdOg;Foobgi(X2<˒ Elاe[3 >S׼-WmzL`l8گbx)d$^:|~Us^]z>BԄN.Ơc^ݾh]U,5;96!Flbʢ7뙹*DLg; t._cN-}:=SOB ~?"9oPlm <cY/Ea2=M[ ԡ1z82ldY(j>3?dic֋D!g,y@U Gq}}ajxQBjWPWu6Is gB7U=NNHH,4ԹjQ^*+KFXˤ ^/"":k$m;y6e$M4OK,qI漳 ;VD)N&vQ8*7:1pl%MYQ3zeMZ&0ZI植A/͏mN )5jU~cO7~[N[?Y_^;x3uU}펝nq4! ))P2(ZKuyugli/|stή\2;LqgQrx_ِݹ޼;ҽ|+`UJXft:e'yޮo 4W&iԣO}8??5e_۱0{h칃727[N?{Yvx9K.,ٙkffvݵg5 @i^/ Ӣ+d Kꦮ‫?h2^ЗT*r8n#fst;vf<[3ƥiQUPXI@u v8vs'IK]2/_6DyY,z\-s[Z`ޝj8{wޝouPpw..޿k\B$uUH$$IQJ4tx׻[X=rw-};~ Y_7 wmXŠT!7疗x`߱gi6d f5u.+,K|Ti&^.KtTޥO4X/ѓ?~;3ћn94Zfɝ֛ɾȱޢVbΜ;?l=4_o<|wW'wzp„W8pA qr'5^Rz ^_K%yU ^pڬW&E=K6@%`mfرc -)]Un鰮7zV%2LcYVqcR3W|0ӬGUm"p6w[Ǐ?W{n{z7^k-oKKer"5pqë(DPLȞuC,7f'#!+slmQIZ[X0wua\*1Y]*KhH(z"ٶKf.Buݾev~~B4K45e K]׆"jhA&Ihe!sXVCHDTQJD`$QHk~X%2sQbt^t$qcR%ޥ(<ϳVeV7I3oZ h&^IW` plj#HtRHj~C̶L&. #2ͭG h&m"e?)WND5y]ADTxim`wT>uxwo+Uu Wϟضu_#F/"1MӲRֲ?2̿G?aC}{>?[xͫw&$Fa|5(Co(r^^%*,]Ͻ|ߞ]Ksm36;bBbQCPR;F=nٳ ;w>wd4涵};|uO(@j@ծ淜:5Ǟ8qNeS养D%/ɪW2W_ 4 n9`eum]0.Tw0Y_yZM#^&<&ĪI8qk~$Yk`!,,,gl+meu; _0.cn[{_z'\ynr") ZKMPjPD:\^VAȘEbɉ ) CHEc4{^pTu֨1M#[4 * r623@$gp%++n\Xt~ i&UPWu4ie BS BuU0۬iǐLDTm8 DdW* Lng6ۉO,M%>yzy5f$d:4eHdqz޻y+&QFdt"~nJ6ƈmZ827B]QUVnê&&ڦ)"gWgש+ʉ) m:;=m\ &yqÍU{Ƹ rd gMheu8??7{?)]\|[__w옚l.AݑڭvϜ^qF0(aZ?rG5K/?bnvs3y5&"@leʊCS֛_~O ?+OJ pP4k۳n}U];ʊ18kL!R\RC7jZK(lIu,ʡƠڶ= [Qk?}n_Z_޿s╳|/~뷽{3l:ufV?;!l;u}WTXcZȑSss !}?y` ̳I6 $@H($$ 0#i4I3]sUխ߳e_]o[}9묽Z&\<sw'`@[lh˯5-*&: n8ic 4hlR=餚"wvqTtpCyv~5HğSX~1/ yXߴ$>p x߁[XMb=:OA.W?4DJ+(D%fd֮\!H `ĜQմL=`z&'ˇ{v='dow}>_ !Y+Yv=olA-ߺsBLGB" 2 lC9J'qX|/[c8&bb)v4Ji !$$+H|X)iYIY4C+A)bkbbɹ9XL[`Kds^7`3_S=x6EtoqJuvėLZ>&%Wi lqϞWO/6w'W=3?s]} W|SZ&;,3rr﹟}CeUoe)1pgp,X:'m/N{ mRȚ޼WWmЙsw:uJ?k}lpKkJ5p N.n=&Zϝ7`gu}7xS^KN~FN1NK^O ,#fLHP$ @@tUA)CXprcP@uJ Kuى#G(i4s97%(^b2a0 84ef֏$dVrhPԈ֤qrj4\RUj3GV=rhYmX;Lar]w[Y,0,ڲ):Me!ѵdB)-RJ]%Dl5JB>jGkH=7W|P.BHLBIvB03 :kBla1I F=$㺞ﱱdR? !QvZʕӟ-[V . C*UuIZzȢY&NML`w`V*J%(G1,tFNV(Эj2l-Cvm-aơ)P\Yj&\QJJY AgzMQA}kQ)%3`M:1\*H2 L,*&YT4v>:!غ79 Js 'ȿ|]=]{_4ڝ[7>Ц2J%A78$NҞVp4.u>kHUk~ꃯ}+?~};w=pyʦ7 AN(D !(u<`F˗ V>ﻞLҁU+k_YrRv%Mb@؎嵢0 'iQVgn,5p| $3a GtY.Rd(fĮ1odYgy-1sx!yś_s/}mHˉ{*/Lgdykk@wP(S?|2;uoQoO&3_?rݕ}4;5 O;8ĭw_7>9yG /6?miP 7(/ v_K%|䶷AjuY/ه[{7{6\8}qgޏ懏Ŀe}}~F d>SAJXoMzI%OpZ昰w$xt+ON睜\ (M8f:[K@N6bfk]lN1IZJԦ\-Kcv6=4=+!^?P~޹+<^1_^>N<;5F"ntGʮk'4d sڶ^oysE!fgQ7 D"lϗ}j5kvq$Z2+])VLD+}GHmRcG&7i%Q)TYw4{'hG|Faj@ @fDa&!1%-ӒC!f~Slx6IcG2b)MLO @ޜcෘ@ː^3:OYW8HYW!`;]UE,tG %\bi6ȭ*۶c+-kWuƩBkO`iBqd>/SKP.v~߶K. W ډeF?l-h+/{?iFv\5#P3q7QbrF5Ƙ4öTw 8^@MxLXܺ5 BJ+S-8K?xԤ[,{ V3zp:M=xmHPLխIb^XpnEgtfV%;Oק_w{7߿my45{S^]'8\?w(o:w7kTny_KhoG[.leAG\Jx)Y[;z}nJ*V-1nm. ˀ(BG^>eTEQ$Ji)e>5k8\64xosI0N.KSO9/^yއwyƘ'?׿s=|{_^o3 >ԣ$QB"Lu6;=Pt*bYmMiT26m8Bö8X !uV "F]@( R(S 647[/W+bRKJukht+l#g֊E|ϳ3T2iڷ$Ƥ@ly@kQwd2(%Vd-cM֚=z L0ר7[7(#PVɝ2_.He.M>2|G!JN]YW y3w`(KHlugd,rQvoB{$MwgƎhsFi9mV[Aa~nGpG%wQ9AJ"ơh$?nzfݎlbf ʭ?nvad?Wl3u{|3k?rGf%vրE;9ONPytA W]}K_{I7D%9P@{ `xk_p@yo/5)Duoap@W;?K޸k^ wգWB ~kמfCOS 銌ϸw},?Kv Jc{1dx): z:btrᱜ)!vGI&bcMc#z:}cLcS!rn5$iR+IF9c ,TOO<_+wׁذq#9h+ljv޷cS6|qsx~>XȚX  )p / OM9=ۂj3+(3 ~z 5^_3X5}?%\G#ws" ]EXqbtXO}Ps/uY7oJn{>2l[[ jsc& ˨W?<PI@'+%j|:/<eݩV]g}xׂ?.*?}~ѱ'0S`'.ƈl~ădxTwκd"nɞ #\WkMl$t2(B! #bL$sa 5\)ah%LXyR f.^O*sgsF41r97 +ǭ# KE[JO{n/<ܧrjDhצD@R?_;.@3"@lheb8$&5i"pG ]%I$%;02b0 0s~;kMژ:>3J0(t`pp0py 2Rv{шSC@QK^'n61W38 [Q'IlRk-a'{,+J !Z_ "4 0,vLȘlX8&`6{~0=9!Pv]tt]kż .)Aόϖטփ(TY;xoA=h}G\ddxTFxTex'zsʁ]kV SPCa;K.9MCGvue=:ĖyŲ˟{oG}#Kp`:y.kG'q|nV='sfl#tTnq$)K!IB1f4GL=/z`\c.ɐ(i>k7zj ɏ)lRJ*EiaLɲZ-({Kmz>^rZwYYj6;x}r`GMT AQf;4* l- '+Eqک#n Esn5ϳ` Uq w1|V0^iٙ+=:S(:4T3ւpC60@"X@ 631n\_Wn!knJST#PbG;SvXXoe#7Pl2"DQHEf;erkyE?FsFynj˥ \K~ҞlOZ-DPJ?^TZ*: Eı59HZ; ~}j6a5qhY[nRJ,<9^p(xegn޶)']xe3w֧_p.۴Qc2@D0w ԠXH V=)U} F]$|%A管ZM¤iRuR* I D!eV?&w܅aBS8JQ*bQoZƱ5 (ܻEqO:rxs_T:x0MFj8-`IIX|)(9u2$Xqnk 8)w=T:~nt|;7]_)Oڸ꫿ JN&f4`2K+MƾcM_312SJ˞O?Qċ3f.V.ɏBcT.."L 6w'˥08EE $!Urk_9W\n5<h}hׯ37۾o~F=p{ヘ'nn9[-Q<ϓF2`1j8uyTJM Ejډo'a0(NHwC`*i]m;vBV&epܑwp<1Y&H$_.z9,E9 y Q&&[c^(s({Cd޻O%{@w yFA r= ]C1v=!0ВwGhcKE(TD/ť~"We`6QrhzࡱիV>2<26S=~({ zҁms 6I(\0ߜnA,KKbPnqZmT'Ypfs멧HA*ы?ebEw0>l=9Oit_vY_ʵ85og>>yמG}Ksy ڭ$n{و8Ƿ`1 Sb܁efMx|JX?bOR891Cǘ|/jV:|<eD3KIj%Q#w4&Hf"ډNX,wKH=@\s< dOnɴ20U!SzORq }OAP. RJی"aI(W_źUrabzr*9D4!=RٸHuϚ/=ckO:픟]={* o8n/*GMMM5[O:|h_qdX{LP{Rc+`]|}Lq!t׃_goް2i%cԎLj(M#b}P( A94"֤hZ󔔙~R/\ϓR4a-=%_s7l*$0 *!;* si5Di١j~yr bܵc7<1sɎ֮ID0,Bh)$̈(2ƥ3KY tذu"xUE7A .(T*@a*q/c /^g/{v Ƥ=FǤWH)޼UW v`GHgfС#1yz0! 6_{~Nشj˖-־]v՜RelNٮl}l8-PfVG(_=jȎ5aO$Ф)S8r~A`llbZ3qԆqBx&[ ڪ㡱=|͇w(*OIg|rjب S74o @LTd71K;Ed\'dO ^> e9K1Mڱѱ 9g?kz~}vR?WqL3M#ej@P|Ю74f53[Cv{tznʼn9/|l*,_948<\ܳwg=vNMSؾk6];{Ǧm۴*"Ydl|qKGFyHd!QRUzûS>7qe 6VK[Qh/r\#ԡm't4463+MR+DLW881ĮPi k!RJH){dVd`kHl;\o[Vd2p+ `=fg˃MRdRLJ2W)Ed]c!d5X&b)JnfyP $,a5kEhQt#;zn<#/`N&m&D A,)`x9:ﳈB@%zҞ7 "OċH;@ cY0Ctܾ֭kv%;eSju\ٰ>7לMRDoY=ޱwOӓ.xouhxtҜ[[6 `kuB85ӳSz[{^7J&&jGr e늫V3;@v![߻ &,AR;2vimQ848G>23}$F<ܻ֐2Xtd K{w=jbB O2Y$'O=v}%z`y(İ=z:+6$/b)|pd|Q"aP{JX}ia$R(ި%k`ҴeI)}`lZm6mEDJCu׽/[si_Q=ịER4e(ǑR2T(){¶;3}356i_Kv_U(WLDhisq<ϙ0nR9H'M" Bq7(P l3߽G{&=op桝A22kEQQi!ʗRUZ vmV*mjL3`uZ% c4R`KRQJ)0Xuۃj0Q')MfD&b=y`c&(0KY,Ôv}$y_>btJ!:Lh,EAI`f2?H3z@5Ⱦa:rT6%`P6,8''Y4 ߢAdMDexͰQMjB4–D+~b)G;ynnnfk4Йcy/8M <~93N^w*^l:˨y'z\!#, 7n/zpxhjt[{#ܨS5Da+[-d $2ᔙRb7RJW%cGKQLt75|5&ĀL,Sj/䰛GZkR @2Xo\LY?1lt;Ѩ12G2k B ^"@\P_D$d S@a;nkj(U CtkC٭A{wjv{λ"afY?BoϿҧu``͛+?P{mCB EXFD ELKQMaVn=esAxZ-b"b!40@\_o>^hT<.?9u rXu1A;%Đ_ E K ^',DE/ԚzEۋ9z< ӓҿE~Zw^>u9 ]G)^_7pOtyK zaPԶ;VtDH #V;g0j+%%u|院L6[MB\"`axk?rwKisCC[Jh|VM׏Fɭ:e ݮE-XeҞ&}[/x"ik|GTRV !@$){m6f;2l=kͷ{Z se1pIR9BʌMNS<3A.W1L$n'IBdA+LR0NWJu@uR3K) `H!P k PédL1BHt0 [ @0Md&eDK8%A0 >޴/(YH&@hIcd@AcoN(z!:<.ޖF'f?+k%:> ϵ-;n^yΉO]Wa㳞|C}7nۺg_֘xs.y;]".woadhg6^fbcÈ= Ƭ[rPɭX}ܖJ._ XR)(Ȳ!c@kBX#% )O8O>+um|ݵAyKo~Z5ǁVg<xCIqs̙iQ)&ADQd%ಟwy {g;0)/Mw01"6P5`[wYg}[8q]me8M|% Dӫ/I%P$)xxrkV=OzʹdZ CZeÚlR(6n: %\._λn D"P--BRKĮd)e)&Ue}>8o|[R;?R6=5ssPf敗GB< +jb%=VRD-tl,3 2>^AĘPjIձVFFs3v{E$cLonB@D2l-kڔ,YNM*Ӵ3)<0r VZc삏KzQr>JoYd{tvYX#<}Kw{OT8_> _Zl#&&gڲtOJS;~'ii+g?K#W˗g4n@=i[G_Ɓb9$K4۶%Db8RWʵreR+oZ6RŜ8'W$ !P1(2t"I^oUmG/K~K?ydvp˖80H5% KaރWUSt-ݺOňKy*=1fʛl䢏mS–wT5#P+E!>lJP0t,f`Bbsml5v{=bcdu9 n6m/A ihH)4 Ƭ䝲PP(M rjN-L Rm [bҊP 1,H)Hz5PV&5B"j%B;]]'ZmqwN}>x?lƄIH`brʸp+(rt%0D|)đq4*gt0BZ2R_\:![cڍzFIj6I-?z]?:5n#>([a.o|e%#9 M_;rlӠ aQQA͢D^B <N^j Έ(ݻ˯Ʀ'?Dϸw<ĔrGrl9qe[o;3<oE}$>\tHK\惡bT VҞ qRAi 9BN!|٘EmI(`U.WN8i{n?kƩ5? 6^+t5( H㖯8\[VԺɟ!eX]gs2c?{mo1֊,Z9oz݇7I0Ɛ\KF]^WKGUqtup0qR2c.8kڭTD于QJ8H@C֒krLD&Q)HH<<8&6vuY9O: A i  iljb/}׎ͼͦ"&6D`nv@ Ƣ@{, YX@LRGG+|9phZBYZ]LB ЄL GXG f'eLU+2Bn۾h(e]:?Q!R@d!JKD É$1Zi-?[7*_rBl}njMW /'3cAFfdN±y~\t #^tO 9v,[Z&"Ҷm'MDi'$6Fvh%eu=ofnvVM"D)9Z0}ҍ7׬y3=>1aHN&,| AӎBt F:)h|2fL$6B9lDCBI#О@`HP*xFֵ)2A@ s5Pyђ,ki0aC' К\}#׹d)Ypg4 JMxٵ[Ç=Vr݃R&z)16Q^>.e:,HvtKK} LbvDnĔ * bGTv{#E]}u]%,[ I]L H4l@S'dǐSAE%>0%c.ش,M>>H"nxڲ&i{$R$#Ϛ_yD `  ##aup.yeTu(?<Φ9]f] B*RJ_=K"%TD)!$;3ܹ9y~ܙ1`D>o׽gs=(\R<;ou:YґQ_|EJ5WdaTtS&ǩ3EX,VUTEae9ﮜ(h0-8伎 ?w(J.$UUّr$gdT(*;bDg:U?u)1t(-LCѲ=ؖ  1A#=K.'{ߕ*h4R $!. pߞ4TR7 o KS&΅2"Zͻs7T'L7̿&YN'$I1ȭi4lLr9s|n7\V0I)LR% cbKmٶ? A$Ĉ1Hҥ"BUUS4Mfҩm>HVi%U" =\7s>n ɔD6SNKnȫJY%L"*qHgdErgǔ< $tA7N$ڗzbSH ݙ&)'u/7rf{r]n_IQL2rsܹ.[7 >$fru$nWS!=u),d&#]bD$3aBp'1΅$WMθ l|!LӴmW,upBB) ߧa$&"/c@q(~L',(`<7,ɥ˖{_wQJo4X+Le ,Ky'q^e\L P P3#a9E$I 2[E}Ek" @)tds +~Ui1w__$PƾM7G)Ͻbñ<߱@CWm}I\PtWVEŞs~^8^ [ed\_ߖA 4F,rPtodžv.P1s\nEV}.>п/'E(CXL[M߻}3|wD9E{WW89ܕ|1 xYu@ 7eΰO"2eB2eB2e B2e B2e B2P B2P B2P B@(P B@(P @(P @(P @(P @(P @(P @(e @(e @(e 2e 2e"sι"/`$ƘVc +8U2M0˗8c( 0LӼh$) Esίt*EQdYF\JUUI}s2p//A4\J\byk2Ya'BNni(Uau &I(U2WfpX_nA*\"B^‘vI&z(ToܸI{z_ZۨCrw+zY>}>@.O)<}=^7aug[ C2cç,e2e6h^x;תQfCN#CUdeΤ '?UR\W@Vrˎ6}%Hs̿f9/akǣG9vmA{ѣG:v4rǑ,ڑ= $&_яGY >dB>)V6pC☂êOB[-.{>PxΫ$.iװpU,[4MU^Cfo_k>x2Cu=8ψDi$""4M#bvc}^W-ˏ?fveI$Pޱ .UTlllDhj>0z]VUT_gʊ6n돝PRMUsi MTU%K7%hNW?+a"Q5Uu3|.a&-v%vic~3v{vm.|o^ovM uhQ+^-aW$Ic;ֽee"IVs3]U~ g~;f u`vqߞZp @(kǿ65/-vhݒ$ǛE9'6[,!"5$jmyɕFKDjxRgTq |ܸ9\w^\kl%S㝟(_JEk[|0K' b>j5af8pn"WIHZϞ=z٫wo\.oD9 Lj{g#?]7}9f۾V&Rr !J;/tΆLQ2sՉgFm\nokjX=k2Ӗ1铅 =nUjFp[}˪LhӑTE񕉏Op+3M/-eQEW'"RU2]|cՔ#ǷWp:>WE#>\fzm>i;OhHc,+:b07xcSIHyӉ3C> VI얩nߌs2NtndWcUWrwV=b_h""bQqw;~GCɉH\5GN?~SY9bd \u>Ra5 *6ghQZV?5)p|q"Jؿ]?2y{&?;8س-z͡dl==II !l=Z8ӵf "wՋ4LlJ<'F\!\Har]]& ܪdQŻ#_rrg/XTU  n՝c43+H>K_.3/JJ"=3`߭;wœ_~iN_L*IO0(-##H>AcQ"9_OrxG6Oi񳪪.h-tݽTUd=PP&3N 7[h4NHe_lոD_.K| BGL5Nړo^.DԳMo-8פ)")ʚ.L\zVݚ"_ɹaH76MvPDitq w|o6b"41(;]ׯ)18ʠν~q iW58Zv;&s27%1K0"Q82`fTI).q]c\ܳ~c̵3}[dqccDWZ?^H*@(sue$],erه>Q êl@lZ57T 2EI ;Ch&/bc|RwG3cO0]>L){e %./<>.X+#3i7=o^e -i">Ƙi(yafFKm_%IRU%p %S]Wrɷy>УCG}1ܒw;"NYvK/ݞpr/o(Tybe4 ԫ'M;%$2\bb:On&z'ݬظD?U? 9f .iYISs4Yc.{X3iIy 9wqCTʡ5~YztwTQ&_lh֦]rO&"^R٩KlHŦwhJDpU˗-`b~~)K|_}?5^tmO=JDV/ԫ='Sf㦽ݞz$[lmrG,^'m#8NBq ȣFB)$/j,Y*1'"↌|dr;{3$fYeRd|≞e*V;j;=Wfj+DO|rZXF1Y7=)7GxMSM'\O>շrՊÇ֩Sݞ~bO~VsoX2䴣;$zT,w핑ЬS>C&?xW "hZs*h0bԄ[9t:І_m](-'N *ò._OUKGKJdܢ9WitL~/m{ڱu[U* :~5wϾsfԪUHzX>i'>."_ihʬw9࠰墈ȕqbC?G:>m~]pQͺ=önOݺz3I`5FxiTVw%fdavXMtFa~%(Hw}ON9:[ 5l}< 1/W\#:V$]JK#L~}ʌMP$ǟ~b2ޞyW*o;>duf\ϫ+4|생}ҙkLGșh]y'FWկwis?/[f1՚ERϾâ_3q}}-V{s[6o!r>jEǺў3Z}߬U=/r{Ϗ(]wQBlߞ=𽖭|⣧RS9Ӱz|vМ=LOsǁ}{Zb_;1a kj4X>cImw:6y;Yc:ݬ֑/ԦqS6o}!OnMr k?BaIGg& !>}w\R5•qt{sΔ9N#L¾gfge9Y_MP0_M>cۓ~G(oB+?>}_{'kÅʋ =A1aߝ 0!Dǽ>$UũBֳÄukOWB !ƌ|u1Bdҹdsmq?SWD{SRܬfV3I 7 bIwiD, I;#M,﯊l3/#ehBSnk|#êZƿWydeQZPچLH#U 0»?;yz .""Sz~g;WHOy򎕃ƎBoRtCNm^ 1kQIHQh'k'v[kjZ)a2o9s%IDtWkj\寽9_^E!"YdsV1R+&Ԇ;mU(Yx}kw+6J^dݨyamo1)1IDiyϝE&n-';--rVulޠg#EZ5M؝1ȗsQк4s絳v-yTUUUVxoޜ"*_ם]]b Vg{K C/I?~cv0LAD We_.끋-4~Ͷ,1OwoOrL5L벿plw?z?6R2U#UX&_7uÖ-h̥eemւNTb\rfv*qDڠnMǿ[U${U!,HD5xۚe3}} !纐nC)M'_N8Ӥ~ Vzc [vv."tKDZc'Zvæ2{U!J*,+8+Ub  ΚO8oDH|E^16%3vX"_tÖ}o CZՏ{}´[w„+av֟܅G6[lfjȥ+5v㟻:&T|͆dz֭w6#\#ֶèٴGkj3qW>.dfjQ=zªu5ib>Y!RNկUͿOi1gcSFQ#F(ݝm U%:Pa]+>X eeSSf}/MYBD;}J媧w5些YCDtbJ{l9ԮryJ.[HO>Ւ\ܞQj2\?eKkZ`*Oh*W?_.I>׫^155F:Dt[ۻg? -]ttiW$ (gIOQ-ʰSfnsOL|l'lHl9FؠqinN1kvFZlj-h=d؍{oSɵk%3*龡Goq{n. SfwĄړOf7uEz_n2Jg}~2ӠV)gկBDI 6lۨg%em %|ƵKriDؠ-8 x̕|S)"_E\'6}ͤ_#Smu~v~/noe\7J:C@R~&T*+5 懤 t$P Ifq}a0#ÈxQ8$ Ux/T$r 5uYqu.}ϘV0Q2psaČ3ISA%pyHHDOH2p ePRHM$K7(١,9?'{ධXޠGJEpI/웞̫/D |W|hk)$.8)Lޜ=.Ưf1!ącBpqdYba"1"-]QnE?s!sQʟ7X'Qp0&1F/iI--O hqC PMẻ\J|ͽVzux(k+{1c𶈪OJ%7~ݡ{e K9{zї_? YYfw?xiVUO4|{%g-X8[Ufx%wW%o$X{$g@bVp%;+AN6)Eڿe֩͢ TK=1A*oe7>Q6Ӽ0! õz{Ofg9׹Ze;f^ wNPfW)O,6`L}UC ~^a*2Xk6.hGKs+)m]xcϽܷtݩ?" )X&}A,*۲oמJHN[çJhٱ˝MjrCGr&IiDd;KiI$EH:w/RE Nb$y")# 0X` &3,Q,Et皝87SߓC:nI#2,)~qi~Q|7_!U##NRLoo͕ Ib$8x>NI 27 "M>͗}iM f V(n~HGe7OMZߓDr Ƙi/dCǍPE6.;߇W5}VUeWPjёqڔQz԰Q,X0ᆵ8_ lع<@k~㟌t[T헅1iϰahwޤaڏ;HVLg#7Iݓݗܕl<"-SRv>^_53TMKc}5.$WUd%}}dS"cˆF~ihGySÆ:hh;/f/'x{} >Y$# >^m<}|~Y4}#Ǝx [T2d٨CT4gFrWqr-\o{8yό@Ta5rڎ&mQ5M\ @Mq^%ԝSNj&sؼaxUGoI'vͱ؅5)5EťuU3 KrˈlUN}ѤT)RePS|$lh^Who-۸&9}wXWӒ rs2OGUh{rq4*9l?cd9a<$Ef9\o`Xx@\O٢R!gf Ўr-gN.‚eEۊI/_)=cZY5M1Eނ0 cHj Uјdrn&ՙr`Ĥ>'|u%=#yI*$o}΅ϘuX}k/"^ "rsspJwx V%%ӧfg1νM>0MCDLӉ9'PWد&+u]fEB/>&12ͼ I{/>Rfp-c&.[Ԭ۬-3tp&׮Yo5]l4=.ID/MGzX0WEl߶97>_Jfcl>B=rYh\гFYɧDzl׾߰G^#ߟ15-rjpP4)k%㪜t=e/y/Cm!LF)חoew>! 4K3B$_Fۂ,+Ĉ\`k+$kDx)%66M+M"w[6ŵf"2'(s~hd=謰DDrP@vb3f  Bxd6L79[Zrg91iYmܶ^ڼiO ~{yM uI1i0yt%_~e32<4-SNm ђ0c逑c*Dh&DYǼ?$uȘkcP &<{w4ytZ-0 "J\zb17sgLmտw;3 cpeM1A$:33,Dį`;o""dH#7VB\҈KDD#U!MˆJ!$ry RAd&I3"E6+/3ܢ2N܄Srv2U/ T:uu"99;{a!"tBb?p$Uzʹ'&zri+Ge[}o{MB.˗'Hf2ך:F7Mn6^5ppZǁnnIB&~λ'-7TeZۺV3^7LYO+|M$fNu9ewpwT lWU~Nz}fA11N7 Is,l &7HQT[٘(7= B>eOw|z O}ܩNRt4l E^`ơ3?sUKܵYS>\+Q z6,wD*kV]q흹h#˄[MΉ~V }>^$r>8f h~KeNzM5kdچUje>x>y II"mvu$3﬑ju}a,+ ~{sʜ_զA_qŨi{w0tSNz{Vw7S^ҿ|]hң[hˤޜ8%mmf^!PժVJ%\v=˄Yk"Ŕ$LM>si~x#mAa1E6I'Ą˶{O;mp22zdo[=|̸a22"m^h;jΌ_,VjRGUa*_Ot{jhsջF eBd&;ru3ֳgpKPXLLdHiҪM`{~y>GЫ^Tt2e&9rM3;z@|]GI'nZ4:XE*I.aRFP-bgF2ND؂$gs8$LbBK'4U=j=,)Z[4sBIy(U9gES<dr֚;sݞC ;%'7tl7ͼy2#Um*gC*plv`S!JTrEdNa8Z5àjJ,'$I$1&Sq 9> )J̥=,ܓ%ؚ];e[[z,CH$T N #Punk +? +8jIet3al|2y^32u]dY ITɹN,3Gc,< ,a*,F^C,IADv$Ie/AI,12.I"K>PUUb'gMTEz}LV,*Yd$Q*I">ɊUz>a&, ~?%)6+JpӔLI$LjCI$s59#%I""ι%q~bkBLȒ &L 0&ɒ%A bٚ("kLb'"Y(1&.KZ#) ~K#RMI%Y&93%eP7?m퐔( S_L M4l~pT @W3Y!#2GCK w5 272pa*$JPǗ}z,wɌȂ"^L:W&HpKl)u>>,!$U"%(QE wHʙtuƄ( /HHHH &s}ezݦna fs+tNS5v`|u{:eU .+7gs !L aij wspe3pexsLa B)8gĈH"F cL"ƈ$bAI\a쟂OCD9wWh՟~ I]ᚕNˌ$1FD M?Q~AZhȅ)f=ؖqM2ȕI*4r5U}.}BDvI1D$&?=z~4aKWADB;?#OFw (ۉ}+278bgJ*$oS\7c\gH]Cřjr^@T>Sw:܊9'z0]wL""O.s !3;o=6c Qb‰ů%,{(^UL]b$HsS'Q3<wYZI$T&MdF࣏-Jcw綜y v,BD}VA"&}>1 A)H"6#E7$7>KY7ROL╬'%6'- NE;wlDDWOKZ"[83OӉ薠 o:zu{)~@|->2KksnM' &FhgZЪϫ>+6g-庛84wT[I}4 $3Ip!8 '7ZTAFB7,Sc ߨ5L 8>}׶ G֫n#w~[vwu_xw=MD_S IPI{"wgf%N9KH{wIdMd Fd$ؘh0& ,NwY'mٝ /yxlOOwշw0?et]і -v9h-}ym\wxg\& ^{3KosUێuw_~r>_D.2&/gNyf/Z^t=rF~VFw}-g_};=G{nx6W3c|m]G ӺjunO'y{%)Wuy9T'Wp_k#?5ׯc;s9Yz-6ݼ⹧^n%g!^67ab(W\5D5{o5G.Ko7RZ7;p/^&[omsb7Oju>gaop r#2kWeVٷzཆo>i[oV66VygQ)߹W%<כkW?L[K.#)MsXɉۣ|<uwM)KZhMnn=O3>jd;e:~Pm{Ur0}uS+^4ͺrK:˳*Yf@Re˪.v|8sQ""`|1~vuw}wkGv ۼn;jx#g#Q;v7>Yv հௗ-Ęv/?KݶjN:m}njus'lD"QY!Ǽ9u[%/u U}PbQ$Gv;'*Ę-ҿ5!Sa[~>c&I$Ǝxџ44|qчTJ$woElBR⣷ݲz?28Ax37Y'Ęqc<Һ c?21vVyч;YY2*QpI,^O9w)We? 46ȍ[oCLI?}kD"Hr⎗x_[ٖ[[?_xIfx?}FJLc=`|Ue2QY5cNѲeG}۳2~:ko=~{TH$cvny0-9}|.p*':!b[mInDb."hXvVDonun}n3IH ;V~5ϧĿ6p|D/s^ƞ+>lso4.I 5ాnq__∰$XF - ZtvﲪCna@:s?9|دA;ENqG[Y8 (:?Ӿ{o=}Vpͪמu_X/fI=snQy3/W ՜lj[6~ݚ?Jmmmܹw!^H$nzClWusN/O~!'7?SN%8 5?s"w]UESs.ύ=x_и.lD8nxY5:2yK8s՟.Y<#+z=OyfIГ e>KnID"~SvQc=WKy-MG>xq2Q4q"v{͏ykk99Sh嶿~͘;']^7d~w׋8wNro?TC~^ל{VG9wnܹx/^ƻ::~wW>T~ϧ=_m]~ ~|{ʯ?šVWW?&,!DZm#'O\wE_έ[sOܿrSKo?{~߲+/{{6׋N?G&|?{/98ʿDu-?Y7w;.ϸKnu_]笚2yw?ߝ:ugN:6+ֲ~>[56zg]rߴ/I !UKG;oCϼ4mt[/U :j|G3ں5yן/<͘|#[[[[[w2p[nIiRQ ]'uuw^qZ͗3tNw:>uڴ~}w]{_2x#:g)LZ;h$&D"@X%6kkk^y7y]wLs5s?q_Mq;;nu>/2eJee<>0=הaO|޶4Ⱟoߪh^}6 %o~ѺQGoOjnh۴ hҳRkXZF+=tcN>ai^u}Vc{+XQF+UP<G(29%WK^umcR%Ǝo:ZvF^aYi|9,bS* zIvxI^'7>{^?W64 G')g%hL7 ijHy]2jK8cWl?RHl[~赗s5~3qXVnϏ{nOpM'{ wN=r^|ORםo{_fD>J3ϟ~^'[ϮsO|Qy/O'S/|RQ){vuOy~~٤?;Ί:i%J|дky~YQ8]}I+/lKXɀ~Q^M{։zg;nklkO^Q۟y9R}w-T 5i9>3}.n?;O66[>hi36nEfi|O^睰_|뮺N6)M3O/.y;ڳli?xz5+Gj=mfm3YI+L:)__?nkKNv7n5|$ts4VGO?~{ ŏ?Oz @|Eǟx.[6ܮ<1̏ $"n~9쫿<BnYE: !?̾)]^*޹ ?K/S~V<)_;PD=\KxҌ.vUxC0mT@u/,aHefiQ4bLu4/9wB{ vjFG\ӮG&Zp񊆁GWfƚaVcQcXfx+R͝9 Q=8bW`n͊ 7=ZԣQXlᒕ 3_͝-MΙ]Ţ 53SPY=$fpZf̩aUV+x̪I>~,W;fVScM\Oe 8|! xS=,?fk93V$$Jc9TcFWw`y+ꛇXQ +Y [Tӌػ֭X0gR,ZrqK,Xa1@뚥Vm9g \^>w]}+,ZVi?dTb@s.Zb̀a T7hM{=|qݬF]Eu.\R\1r6s<׼nUM݂e}c%MٸfE錊W.Z̪Hzlָ̖zfvuk*l^~,l5/UTTޯj̘MnӑDUUI NgZffSoQkgNwK9q֔~jk]3?Zaz9V6h=jh_EIs;];bRcD^Gj^;cȞ:o<;.b(tdp^w3_m>b 'WQPtw;0 |^g\Jgh|͏?̽'ʴ/=yͺұ;vޤSGaiXayNq%rEN[[*$}*JKJJvixAgݟ0 0 0Lâ Px 33*IƩeVgIV;[4e"!`" BJ(Ba'o_5%aaa,0̦޳򣨰1x4R+΍0 0 0 Sw_bMDMN(:UlMU{Knaaa,,0&⛖Kkr騣0 0 0ON_bMDFas;0 0 0 0eaaaazM0 0 0 0 aQaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`Qaaaa`QaaaaջaADnavau78^ <3 h 0 v;0ݎjν 0fXy@gia 0v{La~}v73 0?6n`3 0?Aژ=7#`;ǷWgٍG59k@ |}Es0s ɷXD 1 }?3fD!:Dĺ 0Ov"BH)֝ESB Nyϥ)@`; |9`q}Ix3)¿#@!k |)t77FKds?}_G-6RiЦ9= aVwŦyÆ{E4 tۭ 9)ZHb@gD$Ƚkdҡ"0)|:vw085($`GkAe (LS!c0`p>TفcDaa8 @6eη3Pw uDP(nT@SB~O3u|ڠn6̟[kkh">D)$LDZi-7VZl6tl&ٞJ&d{[[[6Eb;Dbqw$mDz#ҒR8RZB"F@~ PЩ@5}a ɨtrwCW:]y+x? Nju#P`I "ߨ)w~KDDQ(w5n$ӿ@.+o5nHQ2 0?]u&nޱ7/Rrރ މ-H$ZD@>{"AI!mێGcD#8V]=gܴA""RD$֚%chyr۶֮߻|Dht:zg&L˲f-˲, EY7kI BZSX\RLDmmn&@+EHJD-( pRt]Ը|k֬illI))d<+9RFlWyEEEI{G@IZ6Z2d6=ɶB1# ȠzW)ž%klW2:g&Đ]NZQ6l*yL !,Q_ W9" j4,pP%T*niiniiHIJmtv۲mKJ)DMZkZ#D!P@ ,;;sd޺Ɛ9~3\ @ iDBBaaGޠu"%!&.<:gw 8SB"cR`S"c&ck" ZkuJ B"/ " V14֨k%,dhkMeWl!0?h,."zH "3 (вeێضBH)$JD@)[A}'/$,;ZN@[Tf]kԱL;T@ ,"rS !ׯCH~\i^\RL-&cr P^Ќ]4~D@ y) Ah KS̉Lg?A[ӂ*MSbXB,#{YŊ4o]bink%ņTVQl{ e~2k urTZ [րHg[HH|BE"e۶cK;j;Qێ8i 3āxD)eENfn_?&DK +=f h_?7(ۉSwŎbX,X7"3tsZ~)}eғ 9/7X6+w?.C@qQ0.%.=%&"453Ō' :u:& 4 0?)!.X|^_ZH@! KD4)MZqo,!e QRV< Z ',ve¶ZmJlq_j]#X &~_gwQC7yi) f;/!)!ah0l" 95m%m*($ %i[QJ@&4!@![s݅Q9{ +@W[C }))'#U ˦y R*7DA502c;O(WҞiP&B*Hi$! hg/8.:7DuW/bDv S +lzI d:RZ²,˶l˒%BڴfJhv#&Ҋl˲ F 2X'w1z=wiHҢ.&;̏V F-FD 7J̅;@MCu#xtpt1PPSvY(ņJ ˅26.4 oL`# AG ԛ_; [<ڌw QkZC})SC J !-ёҞ\<²l)m!-a ,!% @?$_ a:E,0ΓQ #y 3mfta1ޡA@8.gh21{B|5( A"eG2AZa.u)j̱+\~:SGg0 h_J)DaaL!^ϧhKaJ&5Q(?KJeY6&kzW8b[:J!b&qe[#h*F^B˒TWYY:%IxJ%IsZ&-RD/#1s˙dr R " [vQQQ*\7<QW>ʪ^%4 Byyy,bzz6ҤƟŦ/ߕ X8džT[ska^PtlZ'RPn1s@ Rr=@گ!,i-)JSʗcW"`aFae/_FkFu2e=| S?$BBԾ>a&sG#?~#3s ,KZҲR0) F1""JDB uks˒%~cv02ksLڠ^ X"b )S~|I7`GWAWGDLC@(Loc:s0P,xʻltqO!*RA"E y܏AD ivxL:ȢSJQwyv'/ӵ,rB:M3ED(4E]4hh$0*DB@nQN%D "h@R"&`G+R$BJ) R $H $T\E.[#(WHD"GL7 2"Ӓ1HwҾ( @A/@P @0(1s:|k.3(Da% `a; c)~l?ˉQ9_E',3b?\A7"ӃP:R?^4@&=oo[/?{-sN{?Ѝ?N{ET7ĝ/al9|OSe¶Ah  4@$@Di[h K+\`!ʘ @BXјDrݬv]R C\ϓ-PtR{+j2i3cmi޽K_zސV^v,mooW l֤ᴶڶZ)q4钒t:]ޫ@++J} tg8"eLbU԰ΛJkDh" -jmR drނ7kb6QF\AuP`'UYluȁ+N H0]: J[M0\k&[bN]־!H+QJ*yhB=ݓBJBAdHP0'+M*څrLx=;H~%6"X* OI"t[k!D@1frI!=kni_r… KKa\b¡X#tD2L`>@?MH\R +R u4 :@HlC@NxPp) 0*Aٕu%9X~ `H.ћ=~_io(I$" qB|V p.S& %<$ ]] gCݩ,H_A @HL?h "IJ"xM I7X?cNgDZ ai,2WȠ_C]jv5.t^j ypyVԕl$X*2|\(Re(n+ zXO"Z?.-(DAUP񲺌_-x=C -خa8b4]!N;˽#7#d۾]|ŵ?ԔNc=!vvje*b x\pvޝ|6C.=#iF~;9>c.셧9~/|4y2?1Њ2'0H\A 4[X!,6hҮK'=Si4@ēJXeGcE#uU6 UD@JJҐ<ŨBZ].#WW""(-Pl\_:k2d膦˖R-DԞN+EQ΢"PJ)u]q<ϋD"M%%htڵeeeMkcel&c;x\W*lUκLڜHk,)e[ҒdsmRJ[JOHD Ҋ IK?ĖZ)!Dn c YBH)RcI)ʤ˒&3i gtSS[*V)N:k}wl,Ԥ@IpߐHt\"pQ豈DZyMCFi(Jj uUHovCJV.lqu6`nd b;[S"QP`*F[i4+|_ U,mL(&Ҥ4i2W&]IH!AmUQ+6H_|jXnS4Ω \ZٱLNd9  : ~ ڗ&$>ҵ4ұM@C4 (%Fh I'Z֭_hA}}}QQCvXD\" H*MZiiDBXRXg* v">.QAvkGL(.~ u~(mDy~Z4v7 &07sQ`ц~i>KH)ZHiZk)@JS;oym̛ @: AMzGra}OV. wpl7Zb}aayvi9m۶h;3ж; 7(:y%e%ǒGmɺ2o[ l: sLkVP$)A:!.LW^;gCRFL&J+H)&gRY`Zja Pr]y4i$@M:ܬJahhQUTdH)" "BʨIN•mcg:ϖeYZYo1E5{{jnl8`@{{z^4u]/28i۶LYyucX:*--MRee%LFhOiZZP+]B۶MQO*2UdmXC})cF.IJve_l "]," 5jnW` `hCUNQJ"ՖI66[nK{m[_kP!j &m `%7S,ʻoߠ~wWu* ޜY$ulbQ |ÑHhoEڙPئ ~DH>@R*"3`;"FSDD\jO "AHUPH@Т!+M-Ak`"w~#R$aPWJ @榥K445:vSiQQ2\jWӧ'i躞8"Zj7tѠ$B B$: c ?7O {TNO)%D9/*5̥7$ظb\-r"rl۶lۯyl ('}9F} 3kM*(A z Nlw/IB_JkRJJeY[_$|IB8ڌ[Ҁ >5D_MXT ou}[hdqؐ) '+woWZ pun7$3=<X7`8EǞcOw ~{￞]IFxm;ˉ;9l@8mu[lLNaN<SZyfےt:u֊4!ha/d B"[jGg]͂5h $P<'0cIivVn*՜Iuth,bKqQBƢѡCҩ^e˗>}F,O>mm-VFd<dmu]#xWVV*..NR}}y%UuZk]9ηgIh&B(đBL4)/qS|1`4Q!*(L3|3Uk?vU:ۃ`B~~ϭ[]k}[jFҴkIfneY Zb9R=n'Kr{ 4ju1(EzEv*[GJ1cEI"ٱ"5Qkѱ{v-46Z޻{ain/n"=s@mG/1:6H̔ jeP)|SQhCJ!O:\9"[Ƶ$3ɾJ+T{f`94iz~%hsb<˰00 `n웕(HJ " ~ؘ[Q?2$D䋻Uk20[QRrBQE彊T60ҩpSŹS.S}hE/ر}ǶmJ+Vy䱣Iݹkmwn ˕>GRG)u ZWT*B@J0*}s/ T@QB:@ `CN0"F$$P9VIΪDU? R&Zc>2qF10*Q i1~ipy{3(OZ8OaQ^'esnKL$yF4%j[*JapI rZ`As "/RcͲ4I$ɲfK39Ne2[f'D%u{ x5􈣋Мis"}Ly#e@RQgP0[`Iq@|CTv1O? $#xo, 6\鳞yɎ[2}gu-[@SK^udf˝/zeQz1:::2Ҩ8>ܗ~;?۟6AgOjqV7FGGGZV5N?kn۲qV_r÷?15[Z-kGw`6n;+QX΅_rz_ёzENǯw^]t޺uG^JX͗?m]X ᙿ΁^ua+8"4zGW]1:xkjZ\_^e>OŻTʄ&n4F'֬^sȡ^jrr2ce 2 ̺Jj!900iZM ($$Fd'.cJN7k:VF'Xvze:FFD0kI&"j@:4HGʌ?~>lƘNP,[3sN{ݳsVnw]v.MS5!)Rav: $AZ>;'l$FHFQ##q\#ui4͹vn4&''''& %0k/Ws93QkHjZGr5ǒ4iyxOk7mڶg׌VUrRbR":@(`SGD:qgBޅeRT͖vQCY6y`"#j*2Qy"9Y+ iVwJG$/ߴNQva>1,*Zxy\x;nR( -=űB@.\F=.=y[w -QpM=]d4ox޹օ(N\/|U̧{?z[Qd@H#[zEWFۼ}^T&>woM.t+K (B(K\!ǚTlF=z@۶<֝Ar{Kg?߽k CaGa֗=-AYEd X+: ,x/{|~C@e}7툌6Zzڞ{^rq@C8ЕS=O+ &?_y3/,.6(bG.g:La-R#֯.W1yÅO}T !SCA`~p?yVT/ػ_j5:" .nzt67w|=?1Bya Q;vf[f8֓;2"($$qlXk]"!$f ׎MONE񡀪I\@!¢G̎];kq0l];؆A$QDZ둑/b!DFQJk8YGet7K&&ڭ63ջݮR i' (6z9g hcmiդA 86@kssaF R׻nI&&xBR5~ ,.0d0VGwl:IV\0# !F=9 Z8{ٷ@Hί0~hiD$z!a@I7qՈlm.AJ@9'u])B^I X9HY[oӸ"e Zk:՝֨Gw6 @{ȱ $ zWΈ-eJyª4c%=UM D Œ | 0UiMpt-/ELL-򧃅{TGJ.4fؽk:ð޸iSsU%+@FBI`[y-u)k@4;r4 4b3r/?Jz5PK%RN _T DK2#pBaѴGyONQj] f\@;{T*PV:Pz:<9eojKj)R:Gg?+Ur??E .ڷGoޥ7nᇿkM|EgT]~[ֵ|=}׽}3Mʒoۿ ;vY0…9}忾?z+ܽ/|Wk I_~}/f_@ު{ޅmbGC?/$y/Mۃk5O;ѕ/CEfĚuo|˻y);ӏ2Zw ??_6^p{BC:m?|o·mދktwo~/k5z_|}oՃORLH K|'v061amt PDYsIu4٘8N,P(IQlct0oqy$TZ<4;rndJ(jRE4)YIȠ6(BM8gAb<'EŕLm5"RSz:=I[vn,Y{CWN-[6QA)Cj oIR"aUɥ"j w(E< "0(γIq41* BSKnWeX:P| }xF4"WHlKY +q+H~xh #)7p/5p[Q.@S砟sK9PP/D$.|NļLuHdΐ2M ^Hc«)WonI(]N@s[YT!3z?;$ !v[ͅ=wڽ1O/?zAX皭͛.W @DRΔŠ~$} *Y`OkF,z"rJ.m\HP@jШ*: - 1*]p 5JTA4kGLQ?c{m8#ll_}gmʼnKϾږ'5ۅJ's}d&L lG[LRғ+TYػ)*zE;PQ%)zP&OWR\FSz>X-*Vi+Cai,☙2sKQE~x0* Lޤ^0˲=33s3ss3`dl# Û79S/)Zy{R^*6"=8SFJh9AW^(ULxIk(o&HX_i[WR~{;40 L+ t~αL:=1x+NǷMGUP)pt\EG`-Dz Gͧs< 8RmQD$ny)Jth<٧Gp~Џ?pXH|-BFDv{+~(s&neEU砪w#J@ʀ6yu,[XWaԼZ o6пy4.Uκ}EfH/|_ONt3^á"v4k߾c=k~0gu]I~"`]M?¾<=l 9;1zѧqWX5"Bcoyce2>u3諴;_a un'~9,vz,qVXԸo(o  5iNSV1 ]~c.#Ʋikn3n/d.s*rR"Ln&qifDvZ5S(35n/~.~{n7 fݧ,{ǟ +n:赫ZͫW8f^n7uVvi&Zfh8c(JӴViZZ,˔RFeTF(NW)e,Q{M%HӔYuId֖ezevʱӤ4ZCc0D9fkK{Z2ЪSP'&0iz$&A@Apb)ZiMJi9f^a耪E9W`Cz(*s\tϝ.;h͇PГzՂzh#~?A}8,6S-u3b@y@*Lţ!^`/[Uz9Jp˒vKU>g>=R흯8P3,^}!v"Bf^6`-3̲|RGffVN;Eyꉰ&\ug>_WaN}o^<ދ(_rp0\|qk]G>O۱cRTk8Pz㑜P"AP( A4226=lͪBsavnvffi::6HQac Dv:|m1 xH% !Ԓͤ?~sF"UVV*tAӱYFJB!4ʭL041AxIX(|I3UJ -`IFo^x9H>gQ]j"Q^MFy' /EJ:ɍeq|& Ô#Yy8Q@Z$z\0Lc"(G«Zf%j͘ Xc`"x\oT,n *TX[jG^aLE: -LB6P#nQgW?l1fKW^~tSO85tКoVxmXYO:zGSOp? =|x9#jN &__=\=%mG8h_AfuQFqQ7Ł12R@JQe J-j6Ǝ8Hf5{m{fger!C2q2:h|$KZsfk!'2 Cnz;lmcovR b5>iժV [ o?=^;/ ~YԴQ#cnX+"J) fn{3R^;N5J00,T)t,LՂ01H"9$dLEix U4:cc#N h2Rʇڬ5(}YgL2Q6("DPZAŵ U2FRX 7t_^=Kr%=(xc 1e&'T bGdmPHJ&4BRJ)Ykӄ )iQi,{saX1\{U,C[Ѓ*<@v^'4 =C '~$ 8vezLV΅a@R>'$Rsf|`vp}D +eշ,0*[ptAגc5:y# ismD"o+I3gdIQuvvǻ#An : zQjRQ9'rO~R(|*" ҳRTG V$ĉ2-3C^k5 y|OqЇTF?ҽKv~]Ϊ&+TҷcGNTEb?걧U׾ԛRE{6xdDRe،;c( =W_FEWjׯ7o凿sKD.]vzo.@I3YW i'yůyΉ+xkܯ| 2Q/||4]GpㆍǞv1?iٰ?^vܥ~ c$_;~> NgNo_ܳ;*k^sxw8 ټᶛrҙqb."bmMBsF jQ}jbrdd$AdVJH9)2)cR9crɱ#BqY1 :][2X#`Y.A% 8य़!ڍU"w`bsH>Ek)5Xz.^"yRUˑP\_ JkGgT m"ޏ"au3'aٟZg~wf}$ @e@qLL ξW˕I8;*?<սxTkqy&qk|{<σ%8'?o\$:zaxկxs|zDAxݗ~sԓN9遛o;lFl'ܗ.GǟV0zeo<_qDaxYu1gvO:;no|hیBM/xWOdtsι$IZs{0zc|tlld$"BmtkdYFDZE$A Ha092z$M[];wnȞ9(l t3^qhg섴w5SI;dHL_={]o;~˦y˻.~ޅW\{֥ǮYy\RzVs:MǜfM 537Ds R%]Y H `"L -Z'"TѨ7Po  잝9 0H &^r՚5kV._\j6eIZVjxEd6cl qZR`Y@e-Zs$˘9\!WBi/ s- Kxz"]z Q* XȂm4WF:4[9eG}Ժ* NMPk7ܹNY[z_T1oT {D(WY -u UY'[Kv9fىC.4dpMvHB|E#Z^prO&7 a)8>%E\ʷ_ɜdy$/$,$F&KshGTne^ "@TZiV"1WϤ\`La" *D.eŒDBBrN. !חP!@G*|*d)EX9Q3 #'- 0HAZ gCK=zt LECP!#G@ SGy80vqI_Zj(P-}=RUm%[O+Z/T6u&&Ǘ Daž8j+𹵏AEGNICҤڷ63u;,sGa33bEDLejf!s#oaP*BKr"(JF)hRAKp~z?LykZK/>=}[ 7lC1fi|)}O[&xݫ_ŏ~aYf~#O?ex(^+n{σ7 HAvlW]Yҍ&Ws^ AdC{}xr׃uI\{5t r9W^sM9wG L7ΛZ5B|/~/_8 ?שC?}y[ƯNT* #]CW^r Jۭ/_?|;H,,6Mm.tQmGF6Œ TDShLRtqb ǝ8nm߾mMgdk9ͲTu$ܼ‘ܮ]=矲Eg| biRӘsIn::'F cn\H+-Ȅh4[=!#S:HA\Zdfh!8@QNmG恼qQ QDITeܴ5*ڛ+I i`-yxOr̢Co¥*Cr ;%D@($ &uJi3r%~AzoPF2彼Z|2@+~r줘'T B|*6v T$(wLa//!TyHJ")0CRX=pu'Q_Pf0Pd(I\Tx$ 0 (#}P 43t ("]5p.]?_xЫ?6xm(B&U_cwm ";7bq_rmܽ7>$A4|'4%aڼ])t ]wuo}$uNp!kOXkڽ{ J!;7rqGs?eR C>j;жPk095|c=nxl+lzcyͷmQU4yIjI[3qLdf=2} r;gPW^w̱O|ۆa&O>鸥עN>+'=y3SN8z);ܰ񡇶ܭ9c>xq;<4MFcDU㣣Sӓa`BZX9̽iXk9CJ ZN޼u߿kϞ;(uh(v{2xc=<>>2h?_yG.]?SӇ?㴳ۿ5P=x7sGzN'?y?;q[k}$K0\l9mp ,iuVEDqǵyNc˜#SZH YYQkq.n[numn'n4<ӧOi]j Na64M k5 ,΅AvAǵٽ{ώ]{v7q#۶\O^, *U8 !* b. kny#8D bM;Ya uNG֎a +QQ,9N,Iαu)SD˖F.c-șne]e`a!DBU"̥b)L/><'CA`GWJesbEχ].K}E10~VD5nH)eĭQsΤP~ ^/Z7PA@BSh2*b Z0zb+"ޟtta.f)pf@J<xDM֧ԎGߺBc;*>g n VނK ͥQ'V9X&"B(yJ9fg1[8w_v(, ~w)"Xe@=?UM ʔ-k^ͿKPhDĞ<8NKS~vCbyH=A0BYֻ +C~(@3(A1 cYJ~'CE@-:G|( sNnomܶc[2pI0YͫsHg,Pc'W.4Gw4;"_x/V=~+y5k9^uŧ>鈭Hӭ]w'=or!$<#V\ ZGV+v޹s'c(h]M;H*\`2 j}&ؘ(b9M|#m3l^1>y}‰'j[bEHM3KDZ+E$옅E"̢).cK $0;ty_Íw~C_N{hG\ $7itiPh0e#"f`X؉JTD XS^{6ιf6sZ:gA^QŽ;gf)IWg ;\:v>``hJU-DpR }̢hpot8;+ ,$=XH)kD@z' fTRPcgE_f{LME V]CJq6.jQ.㡈aDf6MYAXsM1AbHD\.ٱusA2ů(aX7 $2$ifw@2z_[Kу*7ž#KS-CG+X?N!I=ă萯Wao\^zG9ШN,' J" *kRt-d@JE8u4ˬi%i"&0A1c"|KR¬,Dav:'vX$s֊,8=^#.NYhKe@kGVJy8EJQ0%KybTRcrpkQ,NX0͜MΝ;pc^X>5jʩi ]6ι<`LZ+T*ز3O}r>uӆ޼Ggf_nj<$gs~;fGf~}?<3+.8/};VON泟o?]koc_zݖ;o޻;/z]UEȪu7<}{VY6byVj,Q%24C) 0IRDL!adLD>v1Vu^|޷ &&&0zH*0 jgh3 U(^[JDH‹jUƖ-<<69bZ7FV7 ESC蜮@Ě Caf3Ah%䚜@Z+D,KvjfIYh$sH7:P y;-M@$9dʭPK"VB:DPA{5v^a#BbaR=+"BT*b&tqs0k2]@U9rP&`x'2.GfVOe@)`\̜o-0}RTO",LPbcK I@|+c,؉%B)F*ӑ(}; Wy)1=PqH{U*HW-аz_0C&ems8$ @c~5Z&6@T*<)>rY0 WH,xAf1/ f <58`h]ŘSs.ֱMnV\vL4( FETK΋qwxQ'l}8a@)l"(}NIM@ *&+%k%/JOoi"$,\W~= iKUEk3S }}PuU|O·Rd\.ee,jRZkEز˗LMMQf3@0TF͘QJn+"A` @IlxҚU*ܺm̮ל}'ǖ ЌaTv޳ᆇ~Fs.l?=M=gw;6޾cܷeőGԓmypKf3KX38æ&3k{ff\I: C.0&˲fE, P1drTU@Z6q޲i [7oJn;, 'ړ|ҊUjHޛIVws}f}U4" bK n1FK4Q_pC qш[Ԡ! ( 2[uU{9{v7󙙞ꪻ{]vr3c/c$i`HAWUU<<սžcf1M۳6>xwv5舣s2{z/<7neHuyt&7nvSEuQt" _J#]ŔACVOƪ&Y#"JmHEFqx.ˢ/b/08p$$.2Ah⸅Hsy?Gufݖ/_!$ sHUUuKj'>.(6X_XD [C|FJ_X86I #rq6j 3`F~QO8(I|hԇ7간p vx|mQSVm;3P-CT/%tRU kV<@"un3n۳NX" 026^{HHGf+y4ށHRunًpm 綞"LT2UR0oݵ~dzwG$uw]c5v?)Du3+V /[tݗ$QԳN( FPD `LZ^Y78>'toʟ_3Bɷ_yp#oɞw^̈́V8\pw~//z _ y|p<xN:,9W߾FD|M67kWѱ hpf,^VSk16Z J"$ H5"l|zzSJ!$I<:6Gܯ|?bVZpCARHa{"uC?:J ? Î<7sk֘-[E C aaJf_FQ8:=ŽmqN1uv3=3yK ;a!JR®>P_Ӣ&uhX0$P]  XF?PT]~ؖ\\g) PW%7@foGSXgHG03pu֋Q[ksN(qcl!*aYYg֊s̎-E3a0@҈ [Xym64ɭo"CVZ*b! E',g^OAJJ{2>Us#e`%_Qe<)df,fbWL޵y2f+TuPn+`C+9XxW_@@I= *]p9yzXJdv]c5v? SZx[7l2j=>6^vmd\wوrc;vQ:cҘݲ8mIѺns>[W_{w2?}ʺ,ϿމO=\{{_rљ|[}'>s5'>;+z~ rz}?iI'4jd=$[x^t:ƹ^6&[ILZ;g0 0 5$i45iZk$Y<1$qh\*bUP=A9'"YvZGFF0$$Dp~(kGKk!ݶm%n*CU)LDř5#qKEMH7 đk϶Lieش5Yu{E0A"׸8mg)U, .,;0ye6)H άL"B 4PU_l8naqbDDŖ' Q*UU-_/PqQUƗ(.Q\ S:UXcC*be*oXPv{'*! d}$ TƓɍ *L`j9nRT]H!1^Jn`%z_~>kD' "dj1sث5d9'WjLuC%m;HA$/ ˙7sz+\αֻg9c\* I͕`& !9[C2 (/YαMI[;ı3Zc[:w/x߿8gd_?~/?OxI\a͏~zUn֢ёwu3?mdl4t͐6nQ$ցsY: BЧFQ<7F@l{ƍIN{4-E9臄d9EqQ)+v D"gy=ernʳljj gCs~G _:,P4PVGVXfd6obsc'vp&_ 5c7۞mLnٸf&˝1ka D&ED:I3n6/Ff(d3p߭~.d2A @b$ =5FO8ЁBDlY/uƊ0 zH!᪉@L}Zp%˲ iݷ)%KP. JD!z0IQa\ZQ|e '5 2ثOBӎH }97r㘃@Zj]by/J$@AFϕ4D)v>Jlzt;W/PS@$ QSJ|9SEQ1TH*.4à 2aͬ+@̲f),e~'?v\8X! +b2Ri|#0c ê wLVg\[XTϥfJ`y灓//tYcuƓKu;g+ⷝ+PvWu+*L k"˥DL;+ KҺoMU(bՠY@MacȻQ[H3h54&-.6a\3=;=y\z -J8uO8/yf6Mx]3i.8`[PkEsV>Ә( Z(kgaݫO9mC+V{ •68g:<Ը7=o=~?'g~?~Yϧknx'?s՗='E~/G?箻93̪|o~1n/~ xCc&ƭs^7,*Ripd@X""b kn|ttr:T0=ӹλ#2p{.[azĸx:8d(6d.NV+CdY*ʼP}=x㭷t˯{B%ݟ)kmF#FFBq֦i693u:@LsR)*A4M,e`Y43uTmvdz)gMә-[0JQAh|nvf8Xk()P\]ٳ3"4)`}\9hB'āF@VU=bCf恵SpsCAΥݱF$3nN=3GaԢx_ oQsQSa)J%_QR k^BL y=]iG[QBJ+|n K낝"X)JdM@<°,j ȁR@@)? TntN3ƺ@J@Dۥ Hh_\<IW "9JkP1: <8g)nְuYR@ZWh<dAu/0{&ȪHW+KAE R^S!*HA y,ȑ]4Ix#: cs1]ي$Ɩ7.˲n;3=vfrrdte&v :afvwaf aF:ԁjTLV ԚK!c`BY$Ξ|:-ևD/0)ADHIP*T KD+B&}GyHds[Գ~( V}s @&VƮkƟ^YG&"-# (3wx@'FO<'(I=3GX#tRƥ!7d>.lw{x;o?<'?o]w ?u{nE߼>꣞pk^}߼E߽軗^znhLmNx#:Ҹ͡EcFȲK4sŢu(VR>1ن :j7v**SXt R1D{hx*@)';gU0F)J]5&0n4ZF*rDDİbv>? @#*7j"ig禧B6P!"0@R}j^zι^<0@s0&%U;nXXL"'0! dy1[`kd;/n<.|\==W58 vicԴUQ8/Y=rr+w+(,75y-?>Uxɯ=U>?9vʕ3.j wN{2È(lFN4h?;k^R&V~̖oZnڟ=#{^Q bDMFכi7ei4q#E w)_?|# \򆗾?//n5w\gN_o/׾~j9׼qS/̶۳s,ϒH%KZzE(:Cx8RZqA܊s(BLI266q—N;3;&-iќsl^jMGuJ-B )wpLzigv$4Ӟ9]yrzzdgr6 QРJ+Y\)]6==e iS-PP&\Y""h" D!&`JPzҗyOPq;hxёaY( n Anٺr U5Zz,,h9 js6wnzIFCc usßC曾1nAɪȡt,vUw{SS9C!p6sm$ '?'GAMQ-W>yC%`fm]2o)N,9f'JABƣ#bmnI;33SSyZc5!gcC!Z$>*P)0thCƠѪd()uq_"".3R2% ci6ȕLPO@+ORP-\7'.d@ZJ` SZW~zo+ o]< s׻aP=tL=Eo?[݀nɳ^L*΅>//\sC"cGv6]/\]Zlon25OwS $AXPx=3km>2rG8jO^/$I/>#MLwݤ  H`z*˞LnnosO?eo~~_?O>u.O9o|~z-wOqJ?([&ҾUhE|#VFEdDנlb‚BJʼnul-T_cUFM#s*T CF!D`ow{-H, )@HmjA{j$(CAPH%*SU$p:˛_)[6R_?9Jq"rk$vi HK@ D,ܘ3ӝVgbL䚴RxIhO*T]Wm/QpMd)\mHaY`E U|)0z%0 5\rplaӴ"Pk5i$!|"O)`XQDJK`u !89c-Kc~ ^k@'I1<<211=36[⡇&&'&1<4:82 ^sYu:3,Qj5[$((8PQ:Ziaz̮|H-{Hjv*⩡zjYԲ02H][+dQZa~Gg?Qe*qԗ+wazd@oÇ}I9gl0 8Nl(9kҢX !X 0-VLp'vrb`+Myc-̉CQt#f;YR!Y:,Dq4ٞcT Ln5MAQcc1 D*6s+6Zzw43ဃc,;pD>[ӑ7r(o 1%~PZЍjfzΕ @"JU>  p@};!:S*R ,/>ΫrS=d´IPHAs)~D|_mdIH?80,PHUPx ͏05$gW[W;@'gskMe4KETa Q PLnrgY/ޜͲ)Z|*VÆ0;EwB5 `MP9 FJhU2cB Tu&;kluyGTDBK+8]XbbdABH+<w~Y_^ Vya#EZ#Rl=! TAG#ڳS7Moٜgݹ+ҡn6[آѱ`hNӞuD:8( ðģ#CF$"@i ̊dn.mav|m͚<\PLNchyM^j &S~NvZH"T]uH6nO딙)<2<*(˿}^koEX ^WX ">}`ԈuG5H)(|mZ+Pe;Se K8&,[вc BaW~U%$. A/;.G^*LWȔU#2-|M]L?0' xg;;zggBPA2H漰#7bk^vzX}d~x\Oq`<:\333=5=9yfYGCí@ HMnLa q6(& 7x)=z ȰWoUUSS(p 8vվ c={tx7aq:Ge^0!ߨ$U!vl1_9)YJ~{^E!$!("n^q i+l5&& [O̫#`ڟ{s *OT J*`Ka|۝dxܡe%0D/SN d OL`ak9m7:ӳS7ߴn9g4Mq#i4 :k )%$l5I $b L@|8( 2c,+~xDDPNG+P ZyJ,f'" ,bءu9줴`㓟@YWc[kXٺ[V'U-B DRPk RZy"[4@Za7(+̖ !Aa)QVZ@18!(T3.5]t4IQQT51#47$svwp0mŠKn/ 83CE6ێcu?oWX*![ p)#fs5×_y$Re6פS]|z7Tƭ{g LD/nsH⃟8@@k Pt s·.֩3cEYōC;xK󤭯oyW$fv)7]}SsZg?93?;WlP Cu|_!YuaOzֆTV}O^$x7^A-"~K_O; &V*:8Nj?O/~4| 8 )]٪eO~=`ɇ~y12c |?<~o_?~3F?\t/{G(I N>w,C{+i_/wO|onV;Kx)GoQe:Wrѯ۴a ~ ]OS&=3ֹV?gп}oo C‰o=_Cӷ%I9iǟ_8C+ <%Y><};;((_|Oٻ^[]Hp?]۫_CW_t,?]}%Go\{Wn>+sc^so]õ[fNKǞWzd7*KmOveEX2 F!e?_GuSqAH@q,4:$EY/ bM(;;kz?+O~ܞDV&o*aW%Pʀb5 ؇V=+.Y2lb|Pk` "D@p|blb|~l, 0( :FE ҙn4t;ikl=̹se<ḿ8n=*D"E"Fnl[-84[(}k<2_]|]-J()&afҙ8$uDBO?킵kޗ:{fPM@!*QDVa$cCcna !2XLQkfv6N[4'?->+oi Nw9vٶFj٢dQm I dlc'K9tI-Xpq) /}(C˲q&ۂ<Ҍ $[oap/σ CoARɗ@ʗdX'-ЩԖ@,PHDF{.;_ uc,IGokQxQ@XPD5 2R #RM PŐ! ElARTpx~iA+?}Ֆ_eZʜ#]D "WY?khlɔv\wnjfjʕ׬LXg" <"-ڜ5IK"Ie!t,ԁf4E" Y 0(׿Wv鴷EAFqdzx%{hEXj#Jas^^ZwOW[ m./?}NRq (O<!j~ ڣh(=M* 5t7:Uw.w$08h8R|/|YP#Q%q08> MhQDZ#;,6#\W?gw/.w7 18G8q/|Vsɱؗ|/{'Cމ/Ԫ) @~~Wg_O\TvZ1T0xlR:( r_9ͯ;뼬hBXn{6X͗y\\pqGkoW0pBF]}y_3?4Bj {?g3E{gIU{Ω:w 3 AĈ" k\*9]W]"0 $qTr`&1D&t}CU?N3=]?u+s}CҬ7\ӦfSxvԃ8I5qHz?BE hDg4I$N$Sy0ע HQ֥)[!ef+9ec@f`aHɾnq"8H&c判+@ 3`"Q(dOA)^M9g fnSZn$9DM>slKf[(fxX@ ]piX0\=kKs9|ͺmFb~7߸0]Ng .|=8wa`Λ:>uSZ\O_ ``/zsN:pŧsyW(g^ #SǛ=奿諃!K25/:;F p{?-_|3>6FΦ׽o~}(eox>yɷ?(j~}EQ&S߾oBg .rxy;2I^ne/xu;FER_G5@d5O_&vfO{Hgs)Ogӕ|u/E7E vZ|.zK۷Zse/{wke%x> ޫqIO;_Q 'M\~,?>g,}K##;~7X] l}  ohӸgSrle2򇝳oеk^q\f8,wg>_{٢(\&E ~ɘ܇1=g8?q@B$NP㾑^yɯ/"Z^+W۴@%I3EP(%6!عX#N;w\{Aئ4)K9u2 KqO<~8džJޮήJh].Ivnf_)Rw_oߌ^F2>>6>6uΎNhou'WbhrǼsf tuvϛ;k@c R1cP¶:^k4:UP -5B͘3=8P,ư *r7jHp_y},Baa$@YD08gS&&;$3)o30ZDY6*XaB4s}dw[8H+x9G>ϾiGiVw?zL^8>H&-Io}?~~}T(0)pŒC*'y })[ap+O{9Tt#:wuϾڛyŚBhqZ6>ea)mg~#Οv.8Wp5>Ͽo\Qn;~œG$j]w|~vݽ7n%'UqZ^u?\u-{G{G(,t݃}3:;:+]ΎSrଙZ+ Hm}fެ OV'ոxՙgJŎή $Nf)W*:0w`|g଎Ja9,Ҵ6js˞m}QhR.ަ44E;JfX+M>7|qF\AVҖ?}Dmy>Z OU閭slK4I3V:MFޘVL"R\ ;T9IKZͫ,x%B)ReLP!;ѤEVi3RU(ZW)XؗxPmT^(D!Bqr!4a8);6jKg3[eL,/Շ&<(b%hG!$6?PO`  )D9ڗzhfm}tXl`r$@8Y@!Ϛ&&&!Md}{ƐuąĐj"rեE4yo^'TGj$'/ laxʗX:Y*s}|@.AliyTE)seLDY<@i'}/hm=ST\l3Ni1AqNޞJacv.l041SmU G'6q#n4I8bT RGU)W02A)eD:kcW0Q&jMK3<0Pр9NH1AC` ("beYr8Z T P$^"5`]B@ !!8QPA!$M[JBoc/Ȟŭ!*}.B^@f;gxwd&h;("l&fIcG΀ѱ8DĦIf>(`--sm.ր(VII5r'b R$"cȳĺԥiDͦьX(wbgD gaଃ߷"xm1Zd:?9.O#&oav̇CK*&.4ܟCiA^ZɽIcM96x$ڳ^}}[}‚w>gz~wGRUIv0{z`@UӮƝ^C|(i 2{SgOd]9=>[s4cpphQT&L}Mg ڣlJ_ "E`g_በX~;ݿm;)cԜ?'[jlsa+uSW} SQ۱o9qjD?a3OW?Q6'6n\m;m۲eǖ[kڦ}Дw׍5vC;h Td/@P"O2-O5%+Zr(y$`/Ap߫:Wuԋ^|֒eCj;MpBb@DKe+??IM]|EW_}U#A CBP?sn~ӛ<wrտsCz߾ݛ6hSJRGX8n<4ڨr\,s{zzҔi3nIm6"7 " xs;fJF^g?O֛oFbў+L$ikq^q`f5aixMDFZ2Yx37._gfvRv>@1+(B D2(@Iib/1oo b(D֘?gucXY+̨0; "),Af)bPyO(b ΁؁ؼwhxmZ':FJ ViC[.2$n6a{wY}φuw6"f12ˊ f6mcO4mLłO[q2@/εV"ރI(5;E #"  "iL943(}O:PmH0dn7QJ#@D #|F?6#HHrZi -"KK .urN{WQdD2q8(}MZ>|q҂iR|Ì@0ɝi[R^mSI& (Z(0A`h#XIزOU8N #֦Q:;z;;: Q)>,ZNi@94Υq[ٔOe&!oCC L@̄ (qk e"E䈐%IE:Ǔ JYE1k>UsEddcf/  !bm&OmeQ)2& Ԗ% k\HVu:xkI6[ hRoo?ѝ_GK'Zi5{?M,'n+X׼qNg/iTJ\”v?d#P'ڥ8Ae0:UݮOϳnЊhb U-|m&̙3_E/* 0"f3IS" B]dG>;yE?HZi@Pl޾#8S,Xx|3Unwku6nԓi:iQ1lB\(@APTzzzzDa61Qs8$N[,/7pÝwԧk}F#!ZÒkK'4D!.3 v YiǑ)ճ=APC_1lobуZvzz]E6ľ;O9rӏۏ?gZ(lj|}kO|3{;6W]r鯚Hs s* n{U4e'@ʯ$uKDdQpJEꚽ>iK/1?i߹rm!ԏ7;`8kDkS_g uRa YFJӓ.h0l}Y3_d.́=/y," AD4z\J!au;{{\K/V#ViRcn;5geKW,\xѬG;K ݛ~zRLxǶfcz(?4u˶Fu"I:6֬F#MF @ Rڮfsxxl׿+U#\3QGx}TCE&pFzGzͬIoSd؞mA-'e8)'(\!EHRNȵR9TCC`KӴ$$N1ҪYسRy! (hq'D20P,Cxvih;*֛,T+*Z)BiUΥD1U 3F)Bq x{EA$"ӌѳ{v[cϾj}o=36^w ,@ZM&Р՚mЍV8RPy-t"B 2*E i6\XSf * sΚH+j WMm-nv3y(DQ@R.2Z/ߒd"]4λcwr@,00cADp-rV'SfKɁu?c a攂H*CK'@e(HӿRӋ_G 0&d_{ZTY>BNr8EV" K+K2 HǿKf:uj0 Jc쒋.zi84qӭ׌;3~iguiE _pepJ.W:V, Rsq'^ăc> 2K'fz/UAΫ/!L7nM,yo9ϑ@Q쟱t6"/~q>mmvT?nw./ ƌu_:Նv Uft>#ë{D$=/;Y?=v4`+scF$P,\}2& -IKVQn5৵IbSᑘɹhɹ̒{=`{ BP%a/i4 Uo- -Y٧SQa犅DK*(֦mWw?|S{{{z&׬Sg߷v늅hf߂,Zhyݼq~g $AwWwtvtvu!b ΓҪ1ikȬU, u۵m}}==ݩ`ub|߁!5>h4FnӖr(X4:6 ǎ xn 9iZ(ZwMJܛ?f,+(U CU(DdBBa#: #[ ,c 9I{ocμXc#ZLz [MR G)Bm*DiҚhEAs {9VN)174IbE( Ȧ(7w֓=r޽w =~$NeAjWYc`ƨOr6?Ĺ++`}7)R @_dqY眷04طgWRqՑJqw0 aHicܬa<6vQYPYnefgE)TZK- ҠJ  (v[DBR)'{޺ub?k` C$%;<=.Iݠr0ڮo?D;7?Wo%P(so;{^,*~/9x1CzwݻQ1\W_AEw[' QfFhBD,R|>>Ă]7kK;k=Hmgs:_9Zt ׼Ӯ^Q^Ow~G}SN>yܙ{n>m0  iG+}߾n(??P_tܲ]z۪5h7||>=}sTlLa >y3{Ɔq˵߾leLz>rt[>碒Rv\:Ozғfwntםw޻v]é 0lBߢg;/b(mXN JgdiGGڀIa gG-ls3hESoR@wN:e,YDFsVi "Z)A' {[ޜw;Vk7m]]Y-ZhނΞf[fέIZWA16Z+A5iDh `L̛;أWtWp:B)z}TnX*{uwwٳKQؠPdTFry>O>ny: rˎ031@B҄Z0 9gk8RIbkF+M,D&'QךY hx DUAո4PHl]h PklBA!K:05"# 8aN|9f:MdOmckZ tfv  M5YKfΟ;8k֖uJ5XR@O'=WX̅_ϕ3Ѽ9sY0̂PL@j3N:4&i))7.M.4c @)7z%ѤXF*P 8!I-cA^DD-J[ƅ tteJXpouopr.0S 3U/cA/n v]ЧK/p8s sXX]|Ȗ #Q6y.''LZeA@k䐁7h=%&q|hyCmhcD @oe"b-;fC@@-WsFu Ie'(PF #PAL#YRZkԤgc->]mhJ<sXf뜵̭23#"*"I q"aIYfh0;#$ԝpϋͫX$XHeΘ'^MyRO8me (S6߈+=XOٖ)ց!$DB0^>?ikg,IγٺLGD80AP,l, =ls$Q\8f(֦.gQfT #4M!I ^P(O|%3+3;?܋[@ vnp S6Mbe͐Q<+_S/}gP elu'/{ㇾoڄd|>/0{ǁ8;f._;y<-> l9Go* H*Y}@X%zʉO~Ҟ#Aoo׽.}-2ٲa͖ k&KFI}Y'.>4{K}>{wa1~J$WobPx]?&?Ws=ۇH)u?gS'W{_vy{_}_G?r{G ߳{V4Iħ_̓Ŕ&di8kA4(-eg6ͬބBT~Ja'Y,Nv!BxP!bzSKv "[nZhW'trgl6}5ZD$c%aX NwQ/8[nڵg2jۺm]kn9gYW*E}=]Ad’1A{WFEJ!d?R"bmqJ9Rz:AHBTb2QT90{v^so_owG6QAimjZil=OE8$z/EAʜRa3%eV.^ۛ(6Fw$}F9ՉBI):t`6zƩi*agƼsIP[tG1Ʇ:*]@\'$dD؅uW4IN1cf$f̣iswl5U*tbH>܄uZm@ F,LDh̊E󆪵{7HYRQ07ĞZkExâ&j-U( t6SmDtIfMXaϱR"){cSSAhY2kߍff I!3zM 45* )-XYwOm.ДqSQ,q45J̘<`Y+ 74HM䀕HB"$)BV <*sۙS:p*1YD^>*gEZ47;gΣXC&VN!p68R4IY۷wݻG q3u:[pbg.( Jo4I&$iѡ ZHPϗ0RV(h5 %6qq<111>>6::h4ٹc0;vRuκfj$͢@ QJ)yΥq64$u9}A)RJix]Il#i9x  Aha!/#6->\:{<(3_c*#FvuV,_:w֜r9aAUXl٬7ZZڷgێk껓Z])C?Im@h0 A! ˆthEL ̎9Ris/\8w`dB{hm;zpb;ag *hpiBDفK'NE3,4rX@U 8 |2"mݻkTYOzk\Y _^ܦ|DLkdK Bڏ Q4ɏPiúPPƣH;@ B&j׹{SnXk毣0w\dCݻ~S=NsrCǬ07'׭߼e˞CfSa_ߌy X|xS;E0cs6x`mp렛cӺƲm/Y1/\~5ccVDzIkZ}#~<1|ڍn8;f2=ݵ۱iܻRg¥GKAB@ZvԱ=0?ڝwk]ŤcGTic5ZJǭ9"ʲP=)ʄՀ~ eDr|/[vM"V+ԁ@HFV ڵc ݷ ۯ6PT,p I3b ki2a&Q.eA6X'u,HFT*J_2zϾ=}]]=0>/)qc'0OLٵVhk(ʠ̙J<7'I"„HB%KW_}%2W& Ur$ (JP(b\*JAx;N.@c!6MQmpQ},! &);hR5l ԧRFv2 8E3mnO d9(gTV2u2b{j(K+rƵFڨ޷k;Ɔ\$ðD:nɱ.( "M\ڰIӥXa&2HJɅH!K1Y&:1Mm\F^U'FFGͺ`ޖ[ue\$Mf6uL)5RH4j &F3$M]Z/D<̤Zk#YT! \GV_欔2HH*$Z2 q?k>T[sw!|9#̚1\* 1ZkDtyfԛ͉jg;wql Ȧ8N\s&DN)& 0"m "${ ˲L,39QŸS=S`uFˑڈl7Kx}cg *p˅C'&5$IDMr " x{?+VcI9 E0\\buYY!,({~'~䣳@Ƶ^zuu}mgw?ONMO`;Rg *@ΕT!` ?cO=_:Y4[h̓d9b&ι} G 4DmXk%c3hS$M4vfI:ɺV+OZ湥IqJ{2 \Ya֦aWkr`3#ܞf'?-g[D[;֋"G^;XBFF\k˳[3Ѡ*xg{v`y *jdIF!8J 6wz܉|۝4v6CcϾ4ɪhP>Z]sɩť?|b;Ξ:G?vmo4sƎXCD>M*}As~/ 92,ڄ6,v55LK[3s6`?\|9eY z⌱;|gڽTkjxb1MA$I,# ]uΦN!kQH'3{}]uEaf1 sm9TfUΥMvBNUTQ LYc40InrQ!H8;SwʼU& J#aIA/7FQ7rcDCxPM_HwG;S%gN'"gQclM*!c c&4Qt5=ENce:-٨"fZV䎉]QtqDI`*A"GQ$eD<uܯPTarLѠu!VQ>&4#HieM$U AY\aKTC* ˡ͸f5 x8wslM Dlo < Dbďk?TU53=ԧ~'u][4H:3~ ]άSO=zΡQD4Xc YCh!2Gk:c.}PswSSvzkk^X*4iyV+RKvqa;3}3NǽgN'>rmPH`$ig<}ݩtf-G~/+(*PWeRY9bAA `@L8fP`1dr$t}+(UѯwGAѠM*@+ PP"%L3m7q?uY`@$~~et J2juqʇkyq(|fWV | 5xr{Ʌ.\ͦ3l%bS ۘvtj_zb?{ҺaztzyrQcd7^>lnn|z٩%ML髝KK'L+lTVol67 R6Ak,*Բ!jbV$ˢ[1D" ٻ3 /_騭 Y!!a̎fÍ(v c C0x8NS1{$>{L`-jIFb<.i.cRt[9r|O 90"Y3Z0 iR AHQ)NPI\}$@0v;O3kmBJFU{KNQP D!+no$uk;ngY8K3dV ETY1Z6(-Va`hH!.#F[z5?a (12G4p0i ^IBNAD@eI'Ib [caCD&;j3UU{8W0ХIY%Ƶ,KRglzd#c޺n<K+u;yvr )_~; 37@k'.ILKBk亿űqqq^SKKv'ۺ: .ky;R!D&1#Ĭ*&v"0 !0ǹBֶe&ߪM L2& 6FYTH "MbB`6& ^yUN?c?я/+!M{O?>_ۯxK*d ŴZ4@hK Fy'vO}TRKԾ΍;9;Ͽx/yo:k_~%7;ulnn>m_$__ғϜ8{޹E0$)dK})f8DsHA~cn|/Ueb][,cO zB8f}±Iqqq5gG;O`jmu;mPeٹ^GA"y㵗_z#U@!f ܌$3|Cɵl: ;v[xjEi#"UCjI,(h0QU!BDEӟ}.g|wwt*"X4;M4* Lg;>ɏqmv'sIb]jyUwwu+<[EY*@6=ݝ;O+Ov7 E!7=-疧hCjY4 I  ( ""Yg!QB/ 9T|((l'ej+/EݐA2*޳Һf_ը pT%"&Y8&AS2ڨ|x7U7S!O^@cG`8 <ٷR-Q/εfzfzSj4B"NI@ JlX2h Y @u%3BV@20"{QD8,aFIØ `؀dAzNh3zoPL?GC)lH4cٕnPύ66"C6.0 j;,z;2SWkAX1Mn,wŔ!KTjbM6k!~SjDZ&c&!i']sQ#XB6G7#E"5gCuʈrtwtr2GAI!c/hz 0e~cǣ*DØqfNbc8yITG!uڝN8kmq?7w.N }U8h( DJ@BPPpXW Z L|w{gfvC$6m'U !ZQ?6MEQ9ghQTWEYDƠP,RXu%()!dI<M4PD뚥ٮ Q]3gO'Y?*vv׮^[:}^?UK?jXV0!Eĕ="ԡmٮz4i;/HgM4x=MP\c-I7YGlq~,Gcqqq;+EBfjڗL '~;뉧D,CU+Xd>}߃߷z/>{TE< fVk~6ل5$j~{>67Z3cDf:fu8I  "!'}Hk'55+_W.̳s3?CЇ>qbXCF9ciw埮n_ {Zi"X1B @d}O}gΞtZNANO?Ts{-9kl\/q=֓ݗ٩_O//&-4 f{cPI4N9*L q$ћ Ԧ@hg)` U+Ĝsf RUZP ªH3j!䲸޻xkk[Z 4 sk/ҏ|SKլC+4TW XATmgf8uk4EEDAuUayemcsosgN,vD0!EC X2γw[\k&t5+buɋ7a5 ; JCoN:SoOӼ,آ,nҥa$,uw{z֕4sU67v̦&gf.>^W[=^Q$idi6«/llհjO_h76667VfgqRkWvo3,5Q ^7J9 dkvlixfDZ(c$HcYiCFrpa'|k[ʰk=A=4!!]d ~:8sh|YqM'A UӜ@>j_̠`]jMͰ1Lɳ9g!n)F"*(w w@8Q0v 3? :afʪ, A00 VM ޠ4 (PO mȞ9dEb#Yk!$ k+Ir0Ћ P&oFTC14za%@j<ͭ OiT;TDHАIvv՝V1$p๮9x^EE51%T=daD4֞X5AFND0P}]HC9#&qIPաU8hAQQP10G&v-Xc4(IM3$tYd9%AuUEB!v A6sܰ,zյ[hAF9Fe/U@zh*vAV pY H#2okBB4mST(׃SA#K&8qq%vyY套zC<_[]}'/._l2[֣aYIx-Ow;/=O/͵ս] xhgg?'}'@YAB4p|wmpnkz UBFDVU @-Iz4"bȱ0Gí͝[;>>'?qw9k1DA"eOȏؗ{/9V 5d.L@50 _}_gwykgZغtԽ?yn<8ӞjgIZs?~2mW_}}ѧjn=nZr3Mғ7M%s+ Ci20!ŎIUFI=!k(=[縶ΐM5%TUUY{_UEQTZ| LN9dTI'~&y \LMwʗ{Ϝ̻;;'f_U#f&dQ87uVZBLjAhwvҤR J]@Zݹ,apSv|f*렞c8m$tI6$xvׯo}>ԑkU%,+r2iVL<8}}\PWaʕT3իG~~va=<nm~',ϟou'OžI찞Y$GΥi. jUُ||_g炯=ʶwggAcL8 <1Yt`샇hxgzԋKWufmoksp c=缩Iӗ&94cN ui~QH&"$z2Gq/jJP U͞Q5si|ZVLzv'O3c, FbK=g (bd%""$z}"|bϐ1D&q{ j8 $CUeċ!*( XUg!x^ḫ.:眵YcZ$D'؂"DJ4C2D@c3QPeYhdA ZFlhǬa9%cvAA|מy#g$Bc Ad7diw۝Δe2 "}UuYjj(HK, yRcbVޗ`wn.-:3U$ I{-[Z ̑!eD e)ˆJH "i%XJ6 @ 4#(((8' eJ{Ub8DVȳf_34-{Ē)8!ż}|>ԨubO\MdscRa)K*)/QB9$>dpIcǗi7c1t8uMҮbSqqqw*UMw?[<&m@?;S{l>{=w̒M;++k¿tikoc۪ه=o~㵕׫ U@VYG>km@U&1 j'c\O56E1(3S@"F@#8CDQ"l9*DDUB?}Μ9~x򲪺ڭ֡g @ qm5;$B_:~}Ꮭ:_tzo\|~yױY r+?u_.>y[l\_-y\sO<.&`TٹZ4Θ(͘,*^2H"!p]Y\0[;"D fz4*+OHY`BZ3p@$56#Y&M\YUv 1θ$:s{-f:sW7WL'9C.dtyoo?9T Inwv{;aQ lᙩ6HNuڙ`XY&zY jURVFJR4C"Y|쵪ՒEJBF ׆Yk^`1y eV6UY˗QM'i:53wzi*@v6V ,-oReKSk36Y몤Z،Fֻ~SyYX0&d DN8qp:iwQ bTPP;gu&G<1 LpiFY!4h'3SBX  FI&OlkIޢ[7={oG%nrK憎#LxEjHQXYEYD#+1K\v򼕧Y9c `t% KE~XpNA^<4Pk5GRWVQa,f/n$\OFӡc69cc,Yc%C 5hDQ XJYJ!|G:G1WA ""210*p+OX,IgsѰn!lYxg-"U=*e1bYNOzVeYFΩhTlm]ɐ~a~&T;[éVNP&\ *$׮}tUYV!1 DV)5 c>"CDE|1(QUfOdQ) dme-sYU!T2sUGUқvA?,67/ñlf7MPfhQf>É%x J#CzqZxBj!z,9a#u.舘IcdCqqqwUa-Wr?t>Gg~?G>w\g_/7EҏjC9;{?ZZ:9*G/^|_{F(+8KE8 nuO:e˃+\Kkvq h;5'U~]<J[vD 3sSgXZɟ:N6IMB9BnsW_|իkYG+sf[+흫u=,v>p\;?=սuyad5A 6% XrϓiY>5`-"EXP$}B[&-P8?<;7Y&XB)mG(3 6cPdEP%BYn7`s5]&4ik{{.enws=nksokfDEEE5Hk@XZgTYW7@HVWcl+Ծ.FEٟ0nl^|yʕ˵{Zs?κӧO8qڵkv*ٹ \W6g<4/}ŗF3UH%&Ia`0/TL!kDEBuX'P@U8{W^}& B/`&PaB aQ(\+|C]lȵ*fM=ݍLlHfjR.Hm^۹+n#~W<WKGqƑ8a%oဠF_@8"r O֢%CA˲*,1|VPa*Bcsȕ'2(fZWʼn٥,姖W׶| f_l @BY@Q&zYgLֶ Ayʪ(1dv+LyվjWuīWz酥^.^UU.ݲfP笀80 j-HP1u$k[[pΠS?_=%sٞI:ݙL4NgH1e`1Xk@Ekl@ ̡Gܩow:ZsT%t MI:FΑ$E-MSP`hb;1p^H@Q8ErN8&fX6*uĞz/V&);FW=9%t;3kz ‡jUC(r4*~? ڤΒD(DnD##IXkdPT(GqXKwBQx7 4*$UMD<4 66ALMՍ81bs0&z|7\Ƴf g8}DQ4j$Sy5(1& _+*p"}B$CrXB` އ$.>|'oIꜵch`1@Dd1%cgқZZXXX괲,KG,"҇ n=XY qۥ^|9_n)ֺ$ulU!0jʡTd7YbU,*PÑp0د9GEA4K18%̊hrye-U08AK\:inѦ{+;W}xុޛIv]{rnt7W n )DYDɫ[8k,{g&-ǒmQDY($S\ ݍF/{|xUIȖ?Ё*T|8OӰrӁܜ^},~GIyw}z%00T;EW+1:#(SF9}cKvыwrA.a]֟}~~~YQ&l?zw=k,藮\@G8s/>ܟ}GW? g=sw+/ZI{M>o}L/|KۛшJ+Vx@Y˜|PtZXU$JZ-Ryanvڕgz?_"t}":y*ŋ;o˲hڲFcgKp+bܪ'gkQous} P4=(BN~O"xTkyEg4/][ eit1ZdWԛחuֲn?Y-CFnBI<y1".]YꎋE dKV,u]jfo@VSCz>N@٤(.&%pYF9fn9hPgkIz(uNޔUޖI)e[@oL}KLŵç<}σBh?JؚeY &R޳ifνZl@FSnH_[`[v%r3%eOU;I8 M7#{6d?]MڡN0Q FXًg-/h4~Ao;/ʸޜ?x#"x"+LD1oAuҤPZv3XzD\Tƞى8ybfavgWZDO" i R Ra+ )TH"!WžK3T⣯!WTrQ% Y4c*?DJ14* J33T1fX9Εuı9=tV|,Qi5I-*zI)-QY%=a(PGNš4b_D .ff;f-JjIE6tEZYjbGNiUiCf6#V+`4G'ns:gYH kI]\mo9[ @=^QD>ndT G,4L4FaV @fcfav(tㄗ=7wlϓ6pjhM̂ L__g:\\X%u+/gxѮ}{~3!>|מO|}įM_w'ۏ}1{di $l$`kKK[3"2 }6!f/֍Wޓ2#XAb Zi6S__i7ۊܻ3'O}ǝlv:*,{gw^rѠ*PaV :z- ._87eӂ Y/]70I4Ldo=h0vx:|^*7*'c/N 5&D@%P@P B4U_B"ɡCD bщR?׿'3ww8Rk4D3Sc 4Y`^ +YeETlQtV ڭv\^b!MBs'dWEX@Q@.e% N=lgֹ–0""焹։jFAIhPV$;sa:oZȕ{dϼtpO鼺9/]}_>|Z(LLٗ띆e ç?x73SɎzOv8Ea 6 4AD*I\ezϥ8DAp]~W6VV',Ï~}}wW?_/ml+H>ǟ|/|h"3ƩقWPIRݱxΣ'+W/I_}GGW|kOעoyJխWϿg0&"!(E~@TA|p͝p5.\þGoa*.TXLj Y[ W2LlQUpxGHa Pjw5"z{կC e Uy#[v*'w{r[q'CSMi` <]e=rX›,{ {;[ PQnvP٪%E2QT6?xt8l<`gUBx{kӗcx;JT)e"B*iO"ZZIHxr=^viP`4MUΗ xd dq~e[x2'B ! -o|?w7ȧv#c,[knt}*-4*JeG3gH#ґz[.sP@SJwFZFi\[aNHI*!"ー Qʢcz$4ޮ76fFs$ٿk-Ӳ cYZg(,Shco}ǃ(*fW+az[V k+H @V $b[YZUzgH* f,Kw#YX$kaG 1&"c~4d~gYVґ &ޜs7aHRUha/,+anGj'i ;^v*P4[[dj{?tf2iSmMȴې㝆w&"sE ΩFki)x0J@ VaY4Z#0MZiT A R|PXT(,wΕgkLˢ(2ϋWN{g]\1ΈE)$L*OkmFiVePdB%z"6!"]%WDF$]@vvXO4hK$w"U(Sn@seYQ]___ZYz}ifz|#\ijq\Y|0xDD)O^-, *MkZ )x{Tfދ0;(ڧ{ mwߡ"<W[ϼr=M|/EyaL YO! Ѩ=8g-ɿy972[_*cm^w*Ѩ)ghN-/1*?}W.,ɏ}'Wo|bI+x`t7TFpdW~ocG(mQG0i:F纪؉x$(i,(Q_!Fv_?O?;;ᅮ(k677ێMϿ_xϽxˆP H^tRA@X`2[,ՍkORu9*Q"U]h0Nj:4//vZ q~m"O",s(eS g}Ntkv,/w{Ϗ~#"꭬ef'nFIF&4a(B@iM;ְ7(U./vΕeYZI"-<amthc⃁Ey(KzYյF<˥s~ͰT6HȞ*Wa'w΅ADaU;QS#> !WƊ,4gHr;WEQ6g(M`f.OwڳxylUZ("0+@O5" *~-_'x{8jq9"ojB0YfX;˂J qN!ɕkE(*w$BuLJU{au`<,s;[ݵ嵫W\_y]YZk]KJ)] kHF"BQ &C|#f#t`0IaQ(z`a[-Gưn?v:I &jRDwx< I=ޅ!MWY'{#zWO"<{`zN~`2i#q2̛ԃww2Z 4){3xo7rO%H1{FE(0ͺ@NAHN3Ӊ880 ܺVgB Ę0hhUoJ^+\f/c3,ufٞ[[t:Iah!Jҽ D4şb,pL(D7ÈpwDlvz׉\{<-`%yչ9;΁ yE* AZ)R*Ty#Rcj" N|>e4gp0,9[:Jk˼Ҭ2kmF}nf( 6Z#nȌLPbT-o͞ͺ{6~p2ǣ$bpyY0ο;9:tnm\VKEa:vވnk מ~x[מyOrW{4_CB[3w{w.ο{>8!˸o-ג|KמR L"H2[@ hQifȕ𵕥:G8.%Q_QTkgVw6/RGLv3O>bMp" s8uuξK'Njڱc8s;j= c*0Z Z-_Kdž0:\>.9 g2`V2fT}G#p XS"j$ ع I@(Pb "&&U2a:km5۳3s8gZvUo&$)l=Σʹo4Vmq#fԃ Qkއa>a-H)M)wU1e78 ("PeZY{qWs_ٯگگ7u."p]|葇ѿO.]_ -jͦF;̶,}Yʵaf y(E$:Ya%{mE":,eLhVW_Z#4g_x'R^}=Gkk.h}>?^g>qYHK4ɳqspe7_yc߫:۹)Vi{k+O3?Nz8t_?gmH"/{363XI\oԛ:,,,.֚Z& iuA/RNEaD&$E">iiZ6D̜Dqت&%X%Zk3ѭ ,HFk|?NiKhM^I]7".(hڻ|e4JsP1+wzޚi.u mN\x$T_ c]Oʹ0V JꊗQX_ WOf"R̞Aٲ("+l"G:>/ f_jAVE8 R|>˚qCSȠ$Zע0-|RK_nbӚoҽ߳u3/{w`|ŗ{gy닀 =d2a@Y(1`m1 wPaeI5zhZAfYs(΍f;FA8)3K(ueYfi`Y+ҕs`!6QX͠FͭޠEQ$egyK69|YuV^ ;V؍}u;O_ N K>Z LM8Y M;M 9ctbJ&J'ϴ3DhahJ*5#YNW(Z)H# )TLe& [u7;( 1DaaZkRZ)uoWSIU[Mfߑo*-C)֮677ՇwøWXl;/l,]y>{h( V|ÝԨ9|V^((RH߷~0QL"cг~<^_,RLs?ٹV0(I".;Oo_[_GTdFJ@1ef܁2 H(('?+pnf88#x/;,`Q4^jDMAeP@& v }>(NZPn" O6ဿC<݌{c߷9țy-F)B;ޙ**F[/CUɍ'R+#˭L34~___Qa0._+o8RJEךcǎeg??%(}-IHp{7Z+cffgR0E]_އq?-B+c-ڍl?_v]!հl\jokso].l|p<_*rsykC6GՍ旾ԍ ?,}fyq~ެ.o:|¥'n;:ܞ:sڵ=7X_]^_~1xckΊ1w>^xsޖeh 4ba Uad{(>k++[ElDszM?|'X-JX7LDZ)fTZ@(̛0oQhsvU_]&*,z}KenaSͶڧ?ڍh}'6{(S[fiaEĭn{w^+ZX\8x#G>h8ˆH41qZwZ@֨E{"ȀR,BDJ+!@!tPl\_٨jqvl3 >CZ'>\Z({m'Y?(]=3sYT׎H8qJVtB=eeQ̊eY;B Hcyf!HS܂ V}{6d,/w,2e8/]դ iV @&LCD=*dA9ro~$tZ xPS? Y}Ϟ}0;xk׮]Gm~yºKxg~C*ĽЄmKHĂZP(n5곝#8~#l$6E!on@"+:F'OP72eNHQ%! v&1[,o&^]T^S-1 6̬Y̚~$BLG{OkJg`Wl:]U 6f̦RXr˴ۻ ]3\f[λTD>1c~ŧ6`ݰci8xBQe|n󺍾pX$6kj_b3MRWWgeZ.1η6}[6o葒D** D6ȦDy,  @[FRH:OjB0v\qQ  á`Pjeueu".`Pe=ɮ6vf&ؔRrAtWv|NRu M9J 0Fp=!)DMBA(E#űX$*)Ech4~N0TQ>al !1B|A@a?'͕RzoR$A 9Ɔ0>Ӵ2guL"k:c$ł6ـ0 1B#0)$r.ˡ&=:0QE)G~PF>BD[N_,{Skb/$BZ3ϸ+qo571"ceM cD@Joe'Q0}N̸ ps+;˓? 6WApƸ|W @!BP(UgHs9RH< AL$n4UUOfp?DY1:(>q)'5ʇQBj8Vv,EaW7w\8V>owv&= 3eLdÄ똶"2Tv~+)  Bt7gY<3ִh(:{iئ5C $m d jIOp%HQU#aLQIհUDŽM_݇_'"ӃŽ {o;d7gzw=;.m[C Od7~-^c>E^{l?zê^;iXInשּ*wvp%z) 9mV<߈gk;+9nwUltOw:۞;n64ۆ{ܐ}t!\;Z2"7Nfةsιk @ܸ:`>\߹^SGMWs.]pH珿UJU'_xߜ{_a1B/=gտͫ^?3~MVZiY';z埭Gz `8qOwn~&}.8.IGo< apqL&AiEkDa Ѩϧ[rcpYW{g1VUjZ*bѺv9B"ՕUUM--EEE5C$#F}L6nƆCw[A(1iʓ>GzڢH0[8$oP笮x: ',t&SI!`hh5_{[[UE9Ƹ⢦m[m,.U5SchQ44K=TTG"LSKokm|q:FC!NN±ݩDWܸC3DW&¤+XQ($l[HDQ\Ifba麙DEWw:nnH^Ø\Ƭ߼ ZAk Q|p[{2ͼc3nhm$ =ռi: c ; MRm--]m--MHnк!8\@ 둈gRgbL)B4J4s\] 2V,gӹL.؜s T ~yF-׶NFA7PMBPMS5M'jH!<.{z92ue&3fNki(V]` ,")PcP;N:XfBJ  ىoӾO^J!Y p.8a^%y'¹ Ӄ`k a PJ(\r.L!TbiPC:iᒒ$q ZAo1? Fo{#[|MKO8T5wI _?O@nu_x%3.ةK\_3&!%TE!?͸,/%G}ٯf延]rzQE@+f}^{v~ާ;Ld=YvOFOY3&)?}TPJǨE7wUyzwzg~e!EGCY~@Ͽ'oe$ze_s]>mܴ~ /j"ї%?(`ԟ6BBRJBHMm0&JcKS: #A˲:;M䮋q!@FhqyYQqQ>OfҵuͼǏW[U矙=tP]]] &GT&5749~.'_|6fذߏԷ6M2^lnoStC;jq=/@0r]TmUU&-.)@1U\&y6F%X- pSل##4eƆA]ݰ}{mmG|2y69G űXe9ss%kljh|']|zW64wA"TA\LR10 PREcŁ@sǴ6-K˶4n ,\Z^K~:V9bpeyW<o!]Ჲ` ) m d1Ȅ +*( qs˘e\&if83nFumY=M:[7m¡hihiY ӱJJKb8yәJ%H:D2]7ljDDTGWQYVQYSlIW&Mf|b1a#.`3h=.EI`8w 7m3gn"8|̐ٝm:A$L辝R9I) `O| wL١_aw?R@'Bm~A1i 93ܻ ҋ!,B-3v8SV<*"yXeE)⭎"JW*3& 阎5 tsmmە)4oɌޓ͞l&cZ cP!}|>Hd!5e( g<ɦs ClqRBt2,;>]!Ea`F3`PTj̶O@\qE`=$BhIM=q 1 w_F(/Hveݏ%!8fKG3zFp~`DE"LSb_fqشǞz% r#{{AanT-TJW\xyO("Hgz 7{+|jww^:g,wtN:aKO;,Zpzv E OK::<8Ⴙ!{ܼW/=}ǾLZw\w_y/׬kv-fb>|H;3j?af*|hoχ?q>v 82C]ZɈg62؋/=o"X2~Nc^/;:y67݂%SF_x1eo~%P샏9(xn3كO2WMM]i?d"A2ˇI%ҪV؍a-_iJ:.]{ؑ"솫o~y?V\mGUkC<~Z3O<`8d&<#*3rTwȊ\9/lklƶF_,9jvdin=eЉc?z׹g_H$z/ {p ]ra[o OIN=zㅿUao?ܑ)Q>jgT@w}I{ol#|zٲO75a;iΙ42]S\91?{ڥ:p8L{y ?rŧ;l<'MIQcF͘?Ǩ1mM=డCo9ei~Q;N'4T:N5T3ᄅB`U2@`6l Twu.6gU3ttika-okq҉'?ie5nRز Zr, ]1fy3קO0rֆ-|xqSOmw)> JYM1 @TE#5=8GPSQ3c= dz:%`Ň=]T˜+8Hpӱ@!T#Jg]mL6LaL4çk1cf%==tfuy4mgoߒ@QeB֍UEdmvNdDHp(F$H)wt) g\raض\@U$ " @<, BueL~ssI7?2Ɯ8NFIexyehhcgݙ͸@F HH,5"mK&**5./vIag3RY;cۉ$BOpl1\U F("+HL 0B;pA! VscƏ=Ydc3a9uĘyԗWk )3?(+]= jqI9z8ӣŲrM]ۻ,;4F2RZ⎩eCUhB"N.y3d,r`C!LTP$.%ABt6&8UH0:R){-c\1HbLy0ŀ$TVfP$kgOUBb$0` #TЀ3v c$!F(&-n R^~w`$nA.hEb%O2#~0(ܘxP7oqB *Bz5 Y! vi-&J&X]]E!(8n,ņqpmK aMMQͲ+ LMfnβy-Hƈ#jK+K#_cD&w'SdcEEy.gw'S9NTUӴGT!_2JeI˲Q#**3QEQ' ӶdQJ*֐:\KK*~({ .X5w@LRDhv;0 Sq[.2z7&?"n~-7 X%wnx13A: ?ot Wvqi^ /;Ɣu.%=pn[g]y׎~ui^qe-{^g,I5=gɝ']zǜO_<+6ro`w\uuM=מA"+޸ t??.]з?~s~ϝWpMs֥EWo]t{爘&%kݺGߟUxz'?pS\]zIާu#Mp_tCt%-ͷ^p7"%w<;46նQMv;6挟׵?؅ٟMBl]p @-{o>p2Mv.%^ԷL/8;zm/3}a{Ϟ|uyUTǮI2걅GX^E}й~y7 ۂ ޽ﶥa [?zcԭwsOe\NG[pܛ!ZtWM^O{%ڵo?T#I%]M5k%sO\te=z⓵rm-jQу;;ߖ6_>s5uNw/daTRn0}CϚ %Sr-[?o5`3'r_LWDҟ=]]2/ĀʤO7K.zW'gq9v%KmXz57.g_z-9Gŏ?…js[8/qNB;mbB@νs1eUO=v7ɋ[O~/f$!ݼeDUq>_uiU2$ i׹tZpNʑ}flٶu@08nΖ;[~> Xiin2u/Wuu Z7bԈ7oJagsd3n2s>Y1k^EJB~֦f^nÎmHEg,q>s?y^zIJ'2ou7/>X<|<ߜxBceRf|<0WM5!ozGk:P D*JRyqĄP,)0!ޔJ(J U M{z,Ǖ 6 *J:J%˨Fo搡U_U$1e[T2˂"jT$ %w-x (;ܵ9Oe.(MӔ7Րj:&:X80&@O㧌u2kATkTVj ؂2\ 93hDݰ :gu*%SPkx,Xٕp򜻮5f\8mRQ(s8^KbB)Geq8.s)U 7H@Q($u6턂ogxVǂ{K&T(SoH[Ncg]* `N#zSf#oimy]KTU !T΅̦3l2ۄ@O6\ZBQ.g!B\I-=ݩx.\ H 2").2`Q;mw9/d3ƅK 1 c0!TLb n`Bp X LI%RgDhA'm GTfc[9Z7#a"?Iܗ1Yȁ_gn.zI4 J\Yz 1!dWPfW em0M"p`\}ud^Yس&{Bͽπde7#2ࠀu߬3) g7wN )%4l~V(})%r{P%(yOb{sY R zɣ y) b@~+{P4scה7 ڐ=al޸gƮ>&K$ q&e.t-]`\rەvSmɸ- TTBXxZOJBiZl&o!QMDKk~R0䂁ZL*ӝ`)(`Pd3sWS4Ud3\ͳk߭(yCgOg3n嗁])R]4Of@% ~XwFAJ66 d;o `TB]ҋ﹛5s-ӑ:V| J{1*E!JS;e)ug N@ 6ZZjq?<)UPOܭ)53fY Rr@n涫쉇<~×}o˷w[;kCG>+jS^3|ƜFz=/}[Fg[⭁GwjJUb:}āa-+59AE{n?z3F-[ןo;n|f|O]X0q]).W$ZR=[l.ك$tve`T'Ov E=yNoիa/V~þ_}Wx߽-]Sv眨(ƅ@{C?3 O'wCU%NXә:~m]}x]soT #=(w?Frc0p])an,*MmL6==9NPFJէQNx CWQRyrv=>Xcv gomoOu }RH-1cɒ\aƝAj\qJLeVE>\ =C_'m5a~{O[\^- ;Sl 'rP0W{c4qLPQ(sp4R[P)*ò;rL0&TUQs]0T-HauC3nZ %RE'Jue{CU<܋Y:_CjJJJz铎? TE^z%;caCZg >r7|۶bU@r9<C<x+?:}aC~+]f9pСCí{'?gZ (- _|ʪdAu[7n\撲Ftmɹ.?=p+>:^$ڼc!,U%&7aԸ)-[Qy஻*:;^_[WWm߶sẮm=ݝ7ojioѣUݷ~-Əs?=rdHbOfw4'Ⲣ f.h5]\G#꺪ru55 5n`4BUŴ,)i AWJ1EHHG$R 0HB#H1 R982s %.9"cɤ \"Pt(Lrj.a ݟ NRa>}R"r= ~r3KS tkqӟ}Ր`@T6X74J0St1>v &X%sA"Ɣ!ʔi3-q .Tf mƙ+c) Br!@J D-ιrW*;nJN +UU $t*A5UT#XA1MJ9s]#Qp{B!n7*8u̠zm40)Gئ'fI)=KcB$K<p?˝B)<\Dxg,!_xF@V ȝ!/sh0 \`$-! FyumBJ0 Xb-~zܹl0]4$0QvJw)/*T8EG}")^ O7I"~s׻Dێ~~nȝ}|P(**Tse>EN(ݻssk1A3,x:@ە,!)IB dQ][5J)٭B"%!Kd*}>hCsG[*ܕHVᚪ}J8hOLXf|&H{d2؎|Ҙ:>]K&*ո_0`,RM&Skg0tԲ򀱏B(J'Th9g!&8 wgMc@<.ØFF}a;@DBU^ޕœ󿃁P߁<ǽMwG(a^}^}ŗ?ʰkٿe\TAG.8hpe.w"0~ͯi/Lno\q'BM֜w zH -rqQ;#'^|M?9yՓ#G3pҭ/.0~33zb@i֡RT9‹?Hqȋ.Z-$< X'.o(6wϡ[֬y'۔H±ҙ9{6،Xr 3=gU b/%w=8yâ~W;>ojkAz233ޚ?&B[o󯫬mʛ+#oO]rέ_r󈹿<ګ>vi|$@PQ:[࿭]he汔>ͧ(T]'Ae0 -JBF`є\&Q-38TWO6}=&n'G@,|}ʍ;jڌO<\>3zXں-r9ʹ6gzCJ˗|}As[?#J FRbP8ͯƃ~` yU5f9SW,{'̙#^tJ{>zig/Ϙ9~ N_eW]~/[ƛnc9* <K/ѿfcpM [7 3G$+ RSYD;[׭[ނ(p{N :znYg})յ5tRk뺹l4-:r _}5zȺQ@8ͭݴW^{;hD%:f$2 sQ'ttݸ~ @pume۫JFT>O&A PTE"$@rϦ qɹ@z T`D^#nfv֙P}:i̵`q8 UhqtsDq>o9ݾxo8 p7igE 5u47U |LeIw&g"qHW]Q0ru-ˍb(+QBV2pGc;.ɫ|Eħc`qA$(J0&+8HgR&㺮^I%Rы.\D !J|Q!,Id?? ?%ԠTk>jOv2b_'Z!ULl&3{d7T^\J4=RQh:5O765-M[V5sк!H`:c;m%Vz)%``(Fk+t8ubA SH| 4 I &!!AH\R {:]"9}랜L**&X7 rue;Eakmm4*nI?` Ɛ]^O2L3$`.c٩,!PJUea9<$lf+`ܵm[HPU(*Q8RpoK OhLcJW՗a \B(Rk ;FB5U0Ah32.@!RZmzUftᄔ| OyQe@bK YJTcUd٥{z..%$R譜%/SYp f RrcsbH05MR r'@9X"%*  P#%K9+8S7R-\YK ν]%*.Bi%U@,I4E8Br: "MGb i%UA[Ww+g>ҍtO.#J &05Uպre7/̥M$lttr\ȢXqy ]KCW(# CX(O/1xX˴!,@޻?fCzBx3q\vq-Ƕg 1QUMtU(!SL0%xX #y_Jz"EgI߫ <"Ƅ L TܾH޽/&E@<&sc^ -ckƹZ$DxcBJP*3~ٗg,9dReNQB^uᅗXy'ռP7GL硿U'.\rťW ί|6g/>]iGtW[Vt[O>]:eax ^y{n>}}? +u :ཧ}On㟇ox$8#o;~W^z?Y;gg. .aqgwpGq|iGϛ\}v2Vu9*4mk}&;Z.Ɣs9aHv6}Ԙ{_3sPɅg@e˝ޖ(u)s`#ooӮݥMU~5%}AU%޺-g>ܼyGaxۯ?aտ[zΤ~SԾʏ99]%\!DG9IH'U}@[j מ15nllU=-YM&>q ?e_v⟼va*+[s_W+֘~q]1it4xgʏ?XKS|fޞ焧xiSsme+tbZknNuO>F;_%C[oY;=*gݯ4a@ VS= )0_Sp\i W]`dᰲ0t7m~;ԉen=d6CBJt_+*V7b(Aqlgsi*1thQ%K)á¶HQ,.o<VUa,rN]OFsJ%S t+U5k~׵ Fr @ I@H 6wuM;zN;hij;-{}K>‹ PU)ٲmk[{K.O_pŻ+>_2Ҿyt_}S8G0nn;nKWljn?jؼ}G{aO>/?p޻f̘uA|{8Uu#O;t?;ʲJ;9OO$͌F9"dll6`/`tLx`_6IDA i #MNءv>'H֛Zfu9gڵéWid~Dڶ]}k_j}?j]&zࡿ{>/|oo޳ȑjrh)z~]w޹?mcCaKKh#jF际99fq,ڳjq|Oݻo׾D#ŏ~fZY9SuJմ՚!@X",/@+'NPt;ƷU0 Y]JDJYlSI)a3ژD8viZ CV,YZ,32զcbPlʚ_mA(/JZJ#/2i03{rsztHYZ$ _Jic~cG{^KV6O+OTzWY4XNeS)s6#N8$XeCNp&:˂wMNC2Xo` 2Hi( =zI=R {G6N]k-.u߼/ߟ`8@W @2V![b3/~KvjUBYcmu}~zəO;#i$**!Y%V [ &AF)cxsgOIdme I+U*36'T9k\ k1p 0J`,'[lLL|J: ȉ`ӂ`ѵz𼂱: ZŪMA=L89AJicF,%%n &lOWcwe*VLe4hss(mф -Q!aR(c6 CtXcRVmA„=/(rD䌅AA!=B0JJ*U.@D8Q{tDBd1F+H:mG>>]N >ll;H̹M뤷[ek'9xn/{:5VkV mSi6}pM`7uLt+ƶ7rNg#ݥR)|8r[v)o6f2cLN!m [nsʳiAu +?hJيVIe -W.~p9#΂2N.zI7( -Ze2C$q&)ޔ8Z/,׫궾J[WZIXe,S!e$05: Y~ZAB "D2 VE_FXʵF1,VLʌ0ZxϾV| v|sZ,˔Yq7ꍵՕ(j9AP(+Z- <3.hN̟ Eζ/F+c3:"iCnq9k' 2z\]w0;Gn`mݓA'yn{//&v|Z]ztŹNę&O on$3kV33'Ov혘,cNvϓ'{ӓ懶\mJxV„742mqemiP_Q}ydž9=5tw #/5JWXYn?.-g}fɁAFVww\J=;v>}_}qᛟ|{Z߹/{Ȃ3˫s OoWg&o?j~e?KXY[N3ydWT?~'?؉>t9Ͻc'~)OzO=SYя{zޘI'Nn<с~};^bttG)o}eˍw](WV5W_}7nӌ`;vɁ{_˳XI @RkM5&]kuR_kzӓ?ۆzo^K ={>;/[ պj0=;sѥbPr'=V{ eoxl}/7dxlD0d=|LO_O=aO`#;Ρ_~zڹD(jP =ZV%ҥj֠Ii5&g8fi,QҠQ!)@lqN!WNm)T*  NʊKZTTfxjL Bt{wʙR^HD?8  aT<m/2},[Hd&Ql!@33aJf5 4x+_/PDXG2#&SJPh f2!6+ZGF,Z 5{wgeryyQ*uۿoށJ8]9z^'i0BEx`܆EnbaqJl6) 82F(By 9IGW5@bN[Jmg2uYg(u1&<{Qr;$B ,vA#t XkXaKVu 솟Iy:SܙG$@uyl1Fkg-RFv `*<'$J)dQJc==s6Rg) 3r""V,SReR|L(\aX,wKP BMinLBi2%e*eFD(c[] N$IZV+j%IeYi*3l*nTXuɯ' l Ѧ#>ڪ'rxΗw ,ۗΧ`aÎi_W4Af2)3R}.%;"'!9p)5"MZr9 _B&&9c̲FQgYŒǨvA,WѦBht"8)a!dhg/&JlV+ /റZʒRf"0-Jg$j- % U6ߌՠr猭7be~2SFxs_Ю=ן\p *S*SLeEf怔XTjrX,a!xcB0 2JƣCHɭԵZeJ,JuQhCk6V+h'1.Tq\ s:JkUڐLRmXYo82M$$Vٌ8jib2=y~TVjjwR+Kl+ǡK\vn}z;88:>8:8 {e;UO탣/p\=st/_͘[#y6Dž'wN7“g4rc a _q|v_~=?|gkk[__̱};K-*dfF.8*Z˞D:r*u\׽FL8ې{>oǽCFFӟŹzr%E([X\@K믾/}4Ed' VDLzjnploSӷ}38[]-ѱɔDIAXhJ)aYX\DfKfZV+UeA!T 4Ï׾Me.u/.,<ϛع cG>rQ`w~;gZ] #~zRw|S թ{԰Gzpygt'&_/F^p볮+8կ|5}];j}w-tor{_z|4RBO95ӧwTk닳3]c"ttoX记W < "EӒ=+@N'RrƴZYr-)h?ԟ{ `Hn Bk5'F5-$\^IX,j]:rU}_jW7g3RD!,z}i;?x@T*F#{Y$8+x*J;LXjq8Z`t]}#ccjOd,j(X9= g]Ɯ&M"¨= y 3+]7?YO{s#/67W_95uf:q`m=? \Oxد \`VP rV*XͦTpL*˴iFRv Nֵe {a)A@66U)۳P܅bFuMY]xy?Ge`}yuia!RJ6R][jGkLp|Aڼ6SJeJfa"\D<)|;ÝtTIiGDQ8k Zg-k۷Or6 *`Z$h2$MS'"k |*Cq1z}nac'HS)eJs[i܁|ОNrHw(aF:[,os qԽ5r )k~-Wn:ߩmo8:ք' _9Z^!k0bvn O#0o++Za9st̯mlTqgp;|̜C.6gJ;$Zq~qi) Zk~X9K(i*$K1ogKq&Nby==BLG z2L$66 B߻ދ7h7דfp ZCX)^vv=Q7scG˥jWgJ +qS /,bR BVg}~!a8#bQd,,9 .q.K8c{o|4 (Q0jC)3@,PZ.IRseMϡ:si&JC Vr!@JA^*o)"!PȀ,H\L3΀gR+ҵל׾ !H N͞^Y_ORZYk,[3[Ghg-jͬ#H=΅J;<8ե2G2&/|jգV=j5(NLkm g@Ypњ9r"H.#QтkAq9ҩqȁ:"q5vyEb w8(h Jr-OL `Mp:aMmcHТU6SЍYkrcr-ա(= X؉\p@ /[c5V(ng6T$yL!`Vʤ[e:D!<3s`嬁JB q(6NNӆEoMBp[R]X:Op)" l5wJyө4;ˏti֒/޹5 т}bcMYkZDRy*|״iN^ҜsBsNk`s頲}O5vHJ<7댠T0@`hhd0gA;E ~w 2c\FY0Z2M4Y&B>™663*(SJIbNR@əF$\?կ/L;PHI٪...i-IIzudIUKFQ9zyBx(c1F(3{;mtN Z)t(<J !1F+IJ% u@ø(֢6F-iqՌs@ .(H"N(jks<ڤRI)39CrBF"J8E#2j+U1v]lFr8\ls|āE (V&VʥeL;BX.ҕյ,7|3~'4wz+.Wĉ~DoTɏgLUC0'ku~mT,/̿uWBP(DOާW\}^UwգT6,]u:pfV__S2]XZطownJȞݻf $L,Z6X͜!~[/{^+oz[G3^P(:5u7[E?=,+a +>xNR!g% N)ep/RR$[1xe\~@V߼ǎ=Kѱ׽ϼ>YINM[r1R O\{s?ߛ_Yw?ߏ\KDZtXjFG;=vر 6J+"a3giZI:`R~pL3!]e{LjccEZ 6ý=Ki+7 J.Pp2 l[F Eb}i,/Wޔ#BL Fʔ8cS'6kKHXX,A" B~P.A!X%B _(d@|k.c榫hPe,)\z.VΟ9p) F !ejZC ~2M:G=t]u,e%H[aAM3JTY=WUo~᳷-/,yRRS%3uxD@ Av䄠81U2AAUey]Zވ(2)2TNS_e*NB,cX0FVpny8Fvƹ OD8&RbЙN4urnA Q݂8o皴b2SryL;dq%Jݽ/;y+=3V)r^_oduwR1}Fi֥0q.CBFKe2iLA8Na܂~)(A$pʄ T$K5b!VA,KV.]vMEk7VOBjZk*f\mηVdc`%k#-X J:%${n @ Op[ 9hc K3)-3eCj3VkedjcT*ctnNm:K!ez6g: ȗ#-%B ""mC'Ea iY2n*Eev]l4D ߧ@0fQ]~RA/T-,.{¶# Go1kcpx?Ї>~Y_x^,A6O~3~ի^_;wM7?_=9sfzb|?BӫKu{|3V+_cǙq]22zڒV?# i\ Eh+j9y3%/][w]_֮{hM[]# UF9K6d5Е'>SHL/,@X,doVTjF'Y:6::?5?H<*a!hk,FiS܍~AvRR)I'y7U+kei՜F ju_—qL׾)kvi-_X(~ƠLP^)USezsu-w퍒 ?Xes8NA ć(EAL5gܫ yG2b-(Fe9`5Rpdr%]j]}׷ǕKGq<_Z-kX2Q#qY''F2E % VeOe:r]9dZ1JpE O~/}=oǥՁc"ƂCbMFi}onhXXy@IYc A(!R@q匯-]rORj1J09@(C@$*S@ *B)g~U*,qLϝI H)-ZZ |:4I! R8vJ֍Jk3(w0NY),z+Aǩ̤LYJqe4Z;4% X<V+hE\sw Hr5^(vs8HKK#0#4!BV?"(èϩK8j(,=~eS):` 6hs.g^Br_4((^q&Ht%>F<̥6$\K\qVYDV'Bl{ڗVk $:L#g7<(Pnq~6m@XI8 lA.Xw[v#b84F Op:&Ԙs+@X3c-8 PJp92#Wnhe!X(- 3i, !< !@$)|'ZdL:(8J;T*Y H^+KoA}}QΞZEMlbgptjzyyS 3`7ge˺C PA@ TVBIm'˶ لڲ:gs@n;9+]tpjGGIo )"8cPg5JLeJkgGsV+RZeuzG svǐ{B(aH)3A ܣJ)2B)%o\;֘ZL)4)Xc\lv]l?D'~h,'0Z H3چX^]^X^:ym&Ƌ`ԉ/|#\y8|7Ƿ]~e{.O~WS~C>zcs e˳'O_wϿU>s}}^ /$ 򕯹o}_回]A~0{Z`J=֙3Ӎ53 McQmUQOUF}nOV۵cc{F]󋫔@◿#yܭ,.kɚq벫\Y]3 a$,T*4m&уG/{=ιjwҦ >eiAbZ*;eYY`~ui~e[FڶO,ZWOPh(M$Ӊ2߹{^g3}=8P"\\X*_.WvOl۽5oxT8ynmyi.߷skz!r Ozu @5Q}@x,2Ӕ#pڈJ>tB+s.Ѿ_dN?T;k&DvqIj9tR_2ɺ )YLphOp֡嚩RܪUkb1L)R<u698abr,$9Jrh- {DY@x#*$7g`a,4=/-,(Y!À 1@ e8g8!AP28G)m-eR8NHE-2͔*ڨ5QP+UʤݍF;}*kڱWV,SJ!X3)cb3Jc6YpKjX@o[^>U8dH !ƹյVk}ʨR)XRY28K, ZvcB Ui5p&(!@p5u~ցunie,+Ҍh(yykO,d72:8A=X 9E siXMt6Xn4}wn&c~#,Fn:l2R rm1;;ڑԘmmKj;'vsÇO]ʟ{9-oť+Xig 7>}T\!Zu笖 k-UƧ|s*].J%g .RT^}ucR}?TjiC F+iTGr?(ʬQ˧v==cZR#1Vk~LeX9-oݷmeC? _\\^&"Ψ6ī L_9E{Wi+ <euefȶfơ.s$ 1o+(~ftWG`TU踕4VWdlRUJfh-ϷXBɞ=O;F_+nΨ6[2Mj5C4j6eJe ֠SY)%T,q9~Ԉ8? %āњxRF Hh#c1F-8Cj90@ .2 ]#ь>1Q)2rX]Kb( 6:,|9 AJey6\zi-m[A9'2F)<E UN0u%ILq =MB(D2ĞKW׎|؉UCBҨҚrFii /cIʜNc4o)N#ؠ\C:s+TWBڮi@kXtü乍zsT)n~DmƏo-S\XD 9'9ZvYu>p[U9G[ $ϋ+9Tx,k5dR؎jm4(v1/ yYLk\8gu dh.-/9uzj:NPATuA`A7~ۊȸsC'i#݁{|sV.2lX*رcb޾jR q 2vw^.l"GOl&t?9`FLfJeYMbKD+nqz3N`Gم'Nl*{D0BmWTZJL%J4ӌsuT1DŽR`q%͕5`J*pV)zz9pڿsSZj^α X ʜ;(ldi+kͥxmAF`$n6` \Qft⭭S6tsm:LR;>mYi{8K>sﭪ=[>e4@ ɖXblcmp11`c%Ŀxv0! p` MB-{[u \gzz]^խ{x'F "/I$BQ&)i?# EJVZkm EJ@]\i w6zeYmv:Yk242ž"/<.oxlg2t2vv. U=8In;^t0#g.[_^^Mc7^sm'~<̜egk;.>u\ "/8^R2"5W_wU?O,.\ 8 ȥzc[]Zλ)0 L ɘ@Pt^]^@ťR̠քk_.KJr_ݵ{{[CNgǦƿr+^][w0>1~eaGmW菔k|frj4e{Çf$!Dkw]?69Ͳ^&$Il"&祛ngKnS*{^jyljrlHmt$Zk@X]^9}Lܵ}ظwc>O?qY"Ҩ ioYϽSSvs䱓nskRi<wՇll ߼͍ZrͳEQi/]X=;{YvYPՎ8{h{(R{6O6'pKД!efSX$ժ++n'IJDXC "jQPBduq~)5T{q sTJ(2ZkDINAn='IDK岠8BisNo*1nHl & ,7`}{Bl AXh bBv)} hU#AO0zC3Ey]l yOx )O81M[_;ZVW5j$"4[Cx):g`|߳ >|if ?pTZ1j~.bt$1`r5Ws]#5l@g} u~ y#s<ϭe\#Ci O==T3IT*'vvv8||txR2n[NnyP, Rv*Sr{YJVR٨||kՖ'{W=?|OWN Ya='^? adDFr`K^p)8P1zώH(<'|jF( XY&TYVJkI)5iM(mĤ42:*V:@0RdPiZ)EJ#)D0%Nj {X#"a䭹/-7h<.E` B5GVf[+c:VCۤ鱧Μ޶eݻNOLol6Ͳ3GO;w|? o9=sC]^Zp._i.:ٽg5|w->-~ⳟ?ǒ}CΞy{f "YnbqbP9s"$2Zcuo۱I|򩃇tiV#f~r+^p/=wOM|{;6ziiR6=kKJ9PӧΟUJoڴw.RmמL?߽.R)䥭n}cxlccahTjm)29O7]sxA ^tGq$Miw:Q\Jh@ad~VmTJrx5Y^Yl4zkZ}uZ_ x\{5W7>罤v}zqß~^Wu~J>kQU*{v7;͈iw2ZHG>'ԎB#UÖx>Zg]怒j5F# !߻}ۏV;H+dYZ.VT,+KJ+Pb h """&$B 3CAnK CG_)*b Jx0:5y\2 ݵv\4{b-T'tD> ^ذAypD?KX:jHD"љZ]#)lEq֭6Jy1EQ[_FqT*$ȹm{vR:DϣܔDkbH@Z익iuHGIdQZ)P= ñ:ucN Xif$h 9Ps8DTCUDt-RTHL䆵5Gp6?zRŹeمh( *55DTdZ bU(  r@f"`[́A ^D[;cD?HZ;&ҒI8zD KTFDIT)WhhiMS%sdp6 ׷B%{]px] i bY7W.v)KvrY5/wfp N>(h}묊[r)(_4x'sakvuκ%z+_ oj-[,6-QٔDu{=< İevvV;sd0/ 6w@,Ql\)\dV)L\ Զz$Qh,9dq>l4IT~+O?:.b0gv&F]\cXH\KL$,30.  Ȏ,ZIb4+`_ZTTBB)ePEJ)4Ҋ4>5* )QG0 :)RZ'%. {,n#QqϽ\>!McSV[]+YE鳤@y_ʾZ=xP%oڰqcc7lo4~5F^uUz@'_{ \{ÓdiM($O}}g?{dl#Wm;\8kw5;LoN{=}<B/r_d63/zІ zQtڨֆ"M(_??S̕R5zW>uzVDFONNɓMGw/9nܱsrbt4g~{ .7q1\#KCgzs RIkh27Zu~a.ͭ.Қ >JJȘ(ZNZj. ]s׭/|ᦩI2aaǹ˳<,KSGjf*Jy##7Nn έ,.:uPMoVE[6oٰ]hm&nݵWW{y`a±NU6o߽o9rxqvϳI\"M̒|9RQJɧfgnhfPXB+@()*#I^J4xFD!;ܨ]X9~ȅm=-[P6rK{vRy^TH*(> YҕjA)f&DqLep?fR`@P)-4 B1jbc}|1TE= 8m\\a KT4,P`DVHE iF$i"\)J%j8Ii 8os<S-1R$R9J+NLim`0 !"c JorZ3NrH;f8Qros:pџSX3{:M (N"a/"|vAa/" |?o;$b"$^P):E뱿5fǥođ JP"=qXdK'at`{x‚$ . GWD1AIEƔR$NWV~ :QQluMS4󀕲W%An E|3~GC כs%HY-¤/O !N'ڳ-Yod5DnSp  )@!/ 2x<3DN79Ǟsg.,|(zx[Cg=?|IӄƟ~?߻y;}/;y+_}_8؍O}$woa >xnngOnd%yȣy]M,Qse>5kDj;wT>p}xD]nus+7_f\fkjf.,S'NK**{ﭳ<]-=sRLo?~ջ/jkz YkY>F눰TRԷ{@x!K qiAD@޳uWpuRo({>ϻ61qTJE=U'&\F &pgEH`(hYl)jsev܅Cǎ($EȚG,U#Cãr9)&sEGyGbKs0lUA<|\qL1s "J&O?vOLn߼}{ctV溉ٙs}ޱА.7~#̏%voc=z荛' 3iM#SSggV;AX jJ-O0BL\o4wz|W@m2BQCfm#)-5[Y7ctY XeIKiEY%"/Rhaλ]S)cH4YA+%I1]#2R DA J]q>l<3)H;djdJ= ǀBT,, RX1 rwPa?FH"f`)TѠg&@At} FQ"κ syƔ*e!dcgN{]%J{?7=O=m28'ZujDMV41hS6QEqREIDƴzVFQ4^{奅^{ ?A̽ϭTA]>ԓ42AHZdZE b_X 0qXg9گ.@e}\x2ĉ'ւY*A8`i!龜>(<'0AssPqߡ؅JiF'H8f؇y/>ܔ 9f,L W](MB߻𚷮5MPa-# XiZgD"A~8\BG4x0'@n"E_,:T}##(B"i;mߺxޔg{t)(B,wy˳4;^t^ZT$J+̈́*Օ=ub^i.xM^j[V3TcKz)%1F*WV'౤˽ڴw(4DwY;hyqX8p\)Fj%E k8nZI=@#@'wOǿ{wlڹe8#A;/$` ( 0{8,n_^1{su]ֲivQC ;a8@< ^ Z.@^EJicL2VFHHiARAJҊ҈H!FTH "`o0 a_) "maҟ]wJa]i#b.ovyn!ٖٴ7{a> wl;wy7_Ogm [퟾׏};vQշ/7W}o}W=;Q‘ԿwN&/4儴v[&>(MoT3~/RA`RBa+TZ($ Νs9wmDJ a7eΊ0"YR;/ B+s-.nA!dϝ^ 4p엷 ʀN/zvL3qQSՇ+! x0C(S"PQ!b W5"(䂿2H8(\LG,`#3!!`ރ1<MJx $)`󺑈q)TNX0 BA$bf'"<%"d|pi\:" 7->‚k,[/}s=2 e0}2;e()(JB>`:>8b$<3Qo^ =L0]fJH! \kf,ui+:+K f1'Q416~+:OWo0^_lDvK\)#xa7sTJ%ƺ|4դ'@y!B +2\1;Xp5) B$I+abhq8 b|~n9}܅nj/i҃]m>tlb;Ksh4$>|[vLU*Y-[GwNOo<:5956[+sya)mg]vAAP3"^X:#@P $w5j IEHiTPi H"QJ2D&T A `8/  Bpe]Pu >׭x~1Iױc[:H>#@?W/b7[d,փVYk+5kv$t1µf׼učw+=wJ᷾k/o&=O?7~Hg|Be˖`h|k9{k_jxO~u㛟ss^lp\_߆W_=xUW\wǞ]۶{V;^y6-'Ϝ?\^$o SD9"b'm->>QJHqG1% Eq\tۈ.j2Wx C³ϊ=I(a3q$=8j@"Σ"4dT@dE/׭X0Fq;gݶ{ͫ_ ?=7;q|zێ@T-72?c'OSnڻCw}6=1:Ed%bJI8")u;đcNgv*%[KW^i)].FFr饩m\NQ&5YCR u^/˭UHJ(ټ>rdeiahbb#cw>_R ߋ7fZh?]$6K/@tzX)CȠd͊ TZ.B#$!#P*Ci%!Ҡ(E*GU0."0ʷa>TY rTFS/K jBBP }D:,<818!_=t o>M G֨KXq#fX٠*`DD?~]~" @@1J76r\}7uxp#^ ǶqU ܋8Tp߱X!zP ѣcgͺͼm[s+ͩWqX\Fx詹;om٭ۦwi2}hӲ^KђϯN]kQSŠH+U%Zٲhiwy ^y/wM3 bR3$I̥s&FJT-: 4hu{ϞMR}}́g,tiƕja4)M_Vs9^[&񦫯brw[NOwШ+7tm:QxdGPjT̄Up<{ DH t mT*Vh"#"AEZ+EHQ & '~BJx&.JQ_2PB}! ^3{f_`1ޭ}ہ3 ",@"{&qyo31Cw]*?3o_/c$O{ S?m.ݸ7^78ā]^4F'gCmFE׽^`O}+?j|y2\^lbsk=t];v޶sjrE'%f'Ȁ11AAAF"|7Ru֝4[ Uf)ƚj;53Y#G&rcsn~??W;&hZ^8xO\-9 w>.07stQnp+'p,M3E%ֆRHUw<ϳ,f"UY+JZfsqae(G Sw:u$ƌg*h~5Z}=1ydyt~=kTؼy A,ZGC3g=p QVݺw#CCfv|q͝ AaE+rT^=p*K:_*W2Pylce|%5CA..DQ4424Kmh!8ǥ$BDhB^QX\)P4i,|#. ǀRH 40J3GF﹞m )/l. j>Eo,kײ"Y 5$@2={Ni@9V:(דZ5.%1}leyl+Ԉ(bɓ(j6W0NR努 E2;Nc%8( ז>Y'eyK,K'ɆM7Eʠvݞ[[^JmXćG?3[묵.d` gR  %DˆDp >Nxq(ꃌ(dA<aW&T$LŨ @@}2B28Ày{B@'-:SP"-CepÄD(ѫpUa`W1&=(!!8 HH]S+ 0XRD&IU$jFj6fD$La3tmDwz_ o$YѦ>B *#U&e"<eQxLp Rt4P*Fn}.mRFCv}"Қ4}/2f{ Aq(rԦirt25ȧngBz׾vR{TM\fo~iyu| OR/ur8O3#rxJssy1>Ւ(u:HnX(n+"Iwynfij@Х˫T6wN*;= ϟ۸ikgeśhrkT{?yjbA蜟mش[ T4@ $k@HEQ2DJkuDJi6ZeV1V4&H 4baޏ ōLPTbLȡ .ƁO  | ['(3'3C)enU[k?[?7YA_GRudV.,-u:|Ɲ~7N}OEDا;oVۉGv釿o}}u_>~s^ݏ>?7䇿ON-G_ f?}G?ܗ BVVݧvl$jr;G>E3}7hLjcr| 4iӖщZi>؉ǽ\)km6_gMLo^dǏ0w,3f[I~ J$hsV C3 fߜ6Hfw~߿|۱' p/kU:sJN7ʑg]=~-ZZ>[!>yMmL O|Cl۸qQhsy9zŧ.)7j$'ܺ}vӵd `85it+s¹'fw;5\XǛK7OOO^lsk-9q;zR'޴rV#>}o~/~W>o;~9q{މ-xjKcֻkSʳ2KuRM4<//_X\^Vm`RXSS?Q8QF;Q Hτ֞\ pz%B r]'tƶwM*I2Tok8IŹVe+5 Zc-6l,9dyoT'~f)$1Z܉+;1>~nj鉉+ػsφMӦVr4s>{O=% U_wGuyȁ}5Z޲7s3X6J _}{hzy|l64疗7OE <ș'9͔c%hsykF:4kwa8ϲ4˔1q(zW޾˜ F4qOpf(Rp(Rq{(ˮҘKBc5jLH1szި)RYyڶ6#0 Ӝ;fp`^,WjImt,5YfqxnSO0Z'@nϾVay@)E e.2 3:t(evETtPZVH V 7rw\@ᅲQ@y=hF!!CpFkE f4ʬ UbېH!jEA$9Ϟ*NZġ^^[4wyyн@;~{5z@XkRr#k< =KB;MygwPhY s{ͷ_sqO&k~ M>fb&֗:WϞ]{͕vW-u*Kou>#=FbsՀ]ݍIgf:5QQ#2RdYf4[mk5ArcMnVX' $++՜[TY蠒Iԫa^>|{i9 DjUDckO=d% ĸFyDY~ۯ|GOs=sD{8pcnkzҥ'|;/ҹ3?Gww^bsm}qkWRyOpy믿^ek=6OWDHuT"QyƳR vy~4 AYw)5zQ%kQyOP,qR #_Tw ah6LPHB\ImG~ee]{vĻX'}?WF;<>{RtWW^/̓Se4&~tbX.],;̬@k5"R g&[NED)j,*p Snf\nwn/sgzvX Ow΢t,Fa{Z]\," %AK:(  u텅ETցVZ;(K )f;WMJR,7V+wVkɱJe`Dɉz]oJD㍆6kzBkSJ) %YmV˳^37ھ}?)ͭ,s={}96ukWOڹc5]6>3a7?˙4۽h۱m[)qס}(N8~d6@Gz=h1Fq&7yT (($* GGW[7o`f$I8V[0{rȥ ۷P9j*)Wʕ;!;^EQkb2` IBvr$vx*"Q>Z ֱ9h#ހ=ypx ikQ ߯Fnx4$ʪA2 ZS,RV Tq(Sa8/*[g$R\k~ŗo_V]=ܕ$ڷu7|?z&'N_>~l[9ZWɩ͛O<8Jpy!}楩el5ygV @e++.뗓kN KnϤ}6W׫zZKFcT#㋋ycK+7_59fQAdҞ2cN7 tZliu[XiYz}$CflDIYDR+v?B+ݻ{v>pxx-os.v8٨.~e6l?{'j\ITiœoȧ?^ZX\Y~7n.~՝JmЁ4^MFRD,kT\!) SvY f\;nl/ʼn`'15Y;2lW$ݍCO~3yɩ7^ 71l.,䉦JH!!CF%7-@@͛6*ei6[N͝c|{ y}ak*̻n| º" iUy{:B:ڼkΩ RI~&՚N7o73ݜsXalHi,Aӓg|ߓ8 (m޸cˮ-[b*#s?˿r$J};gPooǯ߼y7~jI*vۿܬU*T ??ҺNt;c΁`䶟X"eɡqT  􍫗vٷo뗯 *cc1YT)|ۯ۹%osE.2a.Q$ZKne붌)a()(yPbцy t:XtZޖsl r;! "(:~=m2,[` t<3gC{fwZkEڂcE84CΠ89;-t;v8H9k@Y(*agQd@WPWD imm."&1glN7PVZM aڈrj,6MbjUGR AZSM5.}(RATN t i?{Y9fRJZiaE/ԭsi4K3Ɂ nj- Xc@M쌰e6eDv+%bBVPD"Ȋ! T"7 lV{V_fʐ낃A"TJ-@œ@A!_ ## zZA\{T@$F} 0$9!)P3 yYFѤX u/h**$ӮnbOퟏVxgCyjy{=Ѿ{?;q |Xs`>EA(@;>d ]#)R  cV-sFultWnܜ]\i][Yb,_>y|o?fz{~Hw^kaqů|ꕹ2j1>V3 )z11,r;W/gvl&ۋ\Kՙ-[LJeKQ2gnZi[f&USJHB`{.t(f$%rD "EYfNiFJ(p0j7_l]YvۢZ8yⓎ:P I) zL[e7,U*ӣci1b=D R<>wB)IB$Q\.jTTTfj-[6ONA ͕Osy<5YVf#8\^Z+GjݱmJ6l͛:iv7纽J6߼tqr/|_`ҴuǮw_yXc$R]{'Jsli/퍌yVJ|ٳ'xЇ4;ǀ4crcEr`0$g-Qs7'&&v\7E^ulG>͕t}"htd@`@(rtF!`'_{}P|^eqoPQ|R^NB7.?Ԟ_V huV2 (Rsn=hmn QQ@Xr%Y| LcJG[8`y0}$.Of v6^^X`~_kTFG 4iܠ( B* s4mkR[~﷡ x;+䝶ɓtKJEqq%QԨ׭]fLt;aQ0#&h-,|;h8RDE[LB0D E`xt!hv",<:3 :&!^V" @(x B38yEA@'2z/XBbTͻYw)"@iq V&u̽ x{?v}/Kg3G:@sfH W; ;IŴX d|03x< vֲׅAh,ŋ& ,`da.٢8cX էg6MƗm[^~n^v]SlΌO~vl9|djߞvge♥wN[Zv.\:G?zDf&vlm޽uמZ%7r4D޻x ImKNԻ=FRC?Sj4U::6:>1Z+/%ӓcR0ŅZMa1yԘZ\4\j:^/ύX 39Q$(Yfwɓgϵi@ͯO|^>=9=?wmTs͕Rcӡۮ?;u&':-j:w3_lp-O/s /O>'˅&Zh/ݾF}nT5Qsr7f:m;&f5~c=jNֱ8aXνQEICIвulTg#A8V?zv?4c~Jabً!$ݜ4{yߎ=W]Λ74qaqX#ڴQ/6LCFF*a:,Cj),i "hrgm㠶y:N! )0{y+F3]Yմڽo׾C^x>Ν]v5T6=_{`CgN『_54c9{勗v͖l+{k?ٿ_Wklv +c&dŕWgoid;}xvmٯ/?}KL|OɪAhO Sʣ: b[HV,l,4֜,SY'\76X (0ຑc"EcĎqglfӬܘU)TFclӦIY[Y^n,ZNYa(w!6R0=1s 0IBE (8[޽of˗nޘ_Y^PԦ'5J­{Ug7Fqų{jݏl7G~@x; faa@!P*sKlM[H i6bFA` 2n3˲^F0NȭyvJ 9RZBD%xVpUw4YoV|8r7رc^έi3Ttqևn{paLx4lMAĉs8G}Z4~XUXJb}&s4Gl|ɭ ~y9 xJȱsD=s`7y䑉zօǏ[ \7 _8r[6En{IJB+󗗘:nqNk%")Ez+Q#WJi# #۷^FLTڵoxt}GoJ=Mo^8ٳ)\Y*POVXJ#Lj96q)RZ $"+ͮ( JS,YJ?F̭zuH^Zꜜ<|nuzbה~_+o#BRml;xV&v[gnuKͣ#c:psl{{C>̀g?g?ܵ8mK֢DX'ews~;kDOt~>?_ٱk*q $xE/}H),14rl 8f(ĺ<7e⇫``3f~gZCaZ^`Fk6X(݉ݏphAEh0{.r"%MMAǸs˒a1bYnwo^!R*-Fl\\^XX\v;N'X}/@bW 4`4_D΁eւˀ ܼuH*IM6o?Ё]Ŧifz=3YcdFԘ0 ~j 7RKg6m߹n/-OozُF/?t~VMrX b20([Ƌ񧞒.9wQK%x?sFwYW9p ,-.,^z晙  U#}'| }MceiaHfS]Qd-$A|tDly/2nwv=^^~'Tۗ^ܵ+؏e 2 ﮝp*=6 Ru"A)3l3;kARԧ7%I̽~:-⭷,ExDvbsgɝbk?UJ,x,n+##:C% 0FECC;K Ӑ  iL)z ,= a(p zUbVBc+T"H+`_&@D]Ƃ| DP! )jSŞ[j^Qn| AUVxWa,ZP NS0 á uC*(%$EŊ  ( (ןR;30c['I8WI2HiS´( 7vP/;B:@ X'$(03?Gvyը_G߾yu|SzyL:m[xyl8wc&74f&;7tW2yt6~ιsCvIIzQN3m*ZnmB0:h9u{8=2g_8}B7=:jnRt\ GkV~Ӗ'N蹷O7pb [&|s>c(zI\li CEawn)eΉq1`K4A&%wgs{#cT8{6Xkcm?b$,JDc#@L~EYo`/~΅,P5NV ⇋α6{gΜ^GF7u:^skҭ>-Za@ r5ZiDG^a,%#X^,/ 9Yt.^XKO?_[\y_^yRNL5FKKˌKqccc};K޿>6::5YT.{g/_vuV3R\m:NsknZc^91b: _Vcmf~,RNj(MR ,Blܾ"R륦S%$ 1yn aZâ@y)H\&~g>c~ʹ.5. +2Xͽ~jXh #^?ç>Ç@e5^T<"CW!A 2crU4iR) 8%Z˭^wf'ZkXf0&Bb4(677溝X$igjJRZ"B@"T }~OM.$1~oXd 1@fmE8%IRV&zfflft97xBZc6ómzFZN,DwWQMCBZ"w(X}DV»͇,Pƫ@YEⓗ@y$ТAJ;H w,B>0@NAy 5"bǫPg:Pxg&BDHj$ AYLk#YŲ1@B0:`͜cCJ¤Hi5HY猱381]xp߫\kA+/R*:㸔DQEh-4]Zݚ,w€J+Da% Q'IDZ4*.@`:c ֆ\gݏ,_O?#Xpyss׿z;Oݥ>U_|͕eWꤔn[|f=4R;ʱ4G^{o^ @"ߛzP4dSc1X(UFfç}r`\43> ů/uڿRқ [+ ,Tk_9'?k" XBFU\oEZVJk i@CɳL%"tȠ9JZkYuJS<^qܣsh5?5VK_x+|]tn-]=K?t<['F*#yi~vxeZjMNN=^5[]rGMNLׯw\}?ӧV4n?gGK㺢O;^.Uo\Ⱥ;߹k˵+i WBDds|9gqAH#H.:y zbM};gm0Xx0<@Xkcm*v~&F~ >;CtH&ke`x@{- 4j !CV/tx4-eƳVf` :!"PtM)\RJ:tiiXrĥ׿׿wgc~7GF*HaP-\8 xh0Ol)P XVS<X!ƩIyW(Qx7te)-n1+ & IǠEZılزӵYnckY[1ֱ3qs^kD1:  P\) H; f0`yR/w!RIǴf``v,։R*J$$$"0+笵ٱ9gn1 @ވ|R: 8 08ID |:αh"DXA{DR2CݩI;N0C?o,\JQt-áZ_&E8?'_9?Ņ3_Q'4핖.ӉIQ-ݾ1k/o?O>_/_T;t~2#Vؼ6!UGƏlڂiM~Ňcq/aHH*D@9[f\5 JnLR")E&'03gXk)0kulO}['Om&[-#x^.7o;Z**yRzl{}|116ti)IZQIqZe A'74ë'n9nS?믾z1TXr57^yMLMk>DwtTl޽3QDzۖ'zgaX gn A$AvQ;@:r;"Nl;cKjc΍Yds B={lڙ_곣cI\e H -q jG Ei$L` aM!Y@@q!>OuYd,[Κ/@VWc3/yM 1ଳyپscrc hB$).[}h8T/@^$$kݑBEaJ %cAǂDQQ0B5*dZksͪCgJVZS <'faqK,[HY0b=Jcà4W`ſύժ^c55;U믴Zjj)cY(%f/N|<wC|N2ࠗdi֥x9uauu\*KWx;N'"]4پ_|㫯;ƣ#._9t6$I0n۱Cx8l i^ 0OɐDAORDUQ^xa[\DVAV`'2X`C5hVU[6 @ h!K2ƆoM 7c7@@HkW};BAO_\_Yաz(Wλϯ\|Lqga6y#$inۻZ]mUdʢYYy^ 8V+I8h.q=g*jL?Jւ우YOP)c"c4 %dK tB?$KBT26C@YIIڤi/{Vgpth?ǟ|j|G= _ AMlt򠛗Vш* N{cwk SWސ-Na-2}k ,JNcWA!Z_#+]'-@~ᄑ{LS'Ttz_o(cf+?Ք/xFS͘kʛ"EmUMh5(b? 6N5cslC)24DѮ:m!քpgM$o#͸@Z[w*`_)'0,EZTZMnۻn΂d/<{W+Q41>vCS;PMY ^w}ȗk'g.b6Ћ2mZErgq Z@(\}jwIz}2T0O☌(H~T)kRH!=RyRay~Q.x 6Y9g7kr0QT.+Պi84`vafg/R%m5gdCWVLykjefysCfk5Df*f pQ!w /U`76 Q$+W;+cwm6G]Mo;|' &7"D)Yd C:t5bq$ $ 댑kc(rl@,DBbT~b X!ֵR" dђ` Ă@Zdfh2 Kdh֔1 EV]& 3xQsk v (@)D$"cX4XbK (CPqt6dN0;F8v%ŚHk2hicR0*%e?PBWJh*? I-\GE(-Lre,,kVY_esO?F i{Ʈ]_L/V+AW??~'7L4@lqCl Cad{\վV㐆oQR o5̛tͥcslUna77e; "XH!߫jZV+j:W۝ ._YX& Y6ƽ'vܳzʫW룍ۗVϟ;LbYl% |衁ɿ7Oz݅Hv/,/Uٝ|'~gV}YT{ >g=mJ){Ll5byy w;uzI듓#ΟxСJ(FFj/wۚJ1>>>5ZZεVBI @yRKKJFI:+#zjp% ߫T͑ynWA:{`-lo*47lVIxh4Vܔ@"rfj}|^k9   Q(G{w|t!ɀ0HH@̖|89{( YR{B)RH!PSҡd\Iڌd0 sB(gG jud|WHT BY.GFG#M$!ʺ+ $DPXReU1Lh-rE6}PPkYJ%T3RXk}lY 3K!1CJ $ȭɲ,rZb0+6I)=ߏ0Ֆ1Z>Et =wQky"BcS\ߖS6$@ Z,y0sB&6Z&)ulf .y~ee K"8SQA pҐx1 j$0_vPA8 02`zQxA$=(Ȳu%2,O,ld 4lOIDή̩/<|ȷ?@ǭZ7AyeT+*^a ]ql, ǎ("X&J)w5Ej YkRgi&Z4rbyEE` [ N]+ڬUqd`c(ύ11y\޺uvtaҒɲ<r|GL#x׎#j?F֭3WO]<Rm;f2%"s#'eRiDrV]5ye'~7 O=\CsPv0{:nx8pDžإ);6SV|⭢-止096cs!n[JA!f\"j蚁Xӫierk z"e(556o6Z˵zmbrbnaj=HV2!> +W`Z*/U0:jFgA 毝9s}C@,RUW3ZݕUZrµC{}?6wGmԦ,5F_>I$Swca?o/>W^z&"F(@h 4QxK_^ܾkǎG''?ٿwض{y6=9wп߽{Wmsl}\[ZY榔rCd&K]G* i2F8om$Xs|g)44a\ۑa]LZ`5A=\EJJ*OH#!i~UBO 4]zdEQP)q1J"2&逌a[]AHhX/$*'=YBLlscs Jd@%PZ6|^?{ 8rW ,( Sh. t  P,S136%fyf&c"zJyJI{'RJIHOJ*/I .vʲ@,\-t}ei~u٭p5ZfYcr2܊^(&C1 2,R* B[}o(+ Ʌw%0Qҳn1q7`BcP-TKr)@1g;ePs#P% %0D@Z"X $JRvzX9F5 ,@d2;ī{éMukK pZLFHD C鷐Yy7 1[VdKU¨TUU E'XakYzk4CCd@)aVEֹ:a^xI,Nr QX.UhKrZk-[UT{%-mLDm=RJQi:k ?uĒ|`Xo.%*ګjU]?|'2K7e]ǚL~#9/[g_r^]3g.ŗW۩6pR7+ͧ"%OGk-e>^-`:^]; f'&Μ8}gWץmt5\}Wͱˋ3jL92`kB($'b!% fdlcI?dLxc}aiyyi<`ZZI\ZuqeUH:!VAǿ5{ۑ]?)f;|ᕓ.*?JE78]^ȵVTƦ/^2;Agʹ Fݷݵw?裋Xsttl;wtC3}۹VPrjZ|lwѢ]wqf|$ŽyfqXc&Z6enFݽs5f2í Zcslͱ9ٓBgޱkр hlNOMUc "e*Mhjcv K IXVW=KO`<[^Y)Ka)4gn5 R2*J)X:JUBa OK# -CH "ϵI)_b`#2Id,t˭,ύDib[^ aպF_2|]bk ^AZ*{_ V"Y&BD),dL j"B)@ ƐV<ϵX*$dlJ1IPas/֯Ŋv}w[2.8@l-% _0kjT <ϗ!yaehGcp|W9vitkpƖP@J)7zyzanՑh뮝qҨE+W; i~{k]ϟ9cUK!ǯ/=w)iVh^"r4|qnQT>uTٽsQ:Kè fwn oǍ)%oבٽkwo]u?b(7T[g)y$4@ F@uk/2|&cS Cѿxr޻YY*FkM/:[ԦQ ~W_9ըVvU)*zwO}w罯qK7VQ׷gCJ2w2:չc$[g/߷3\?}#GޱW[ϙ]ilm4/{1ə}ĭ*L*}y}cx{JRcqBnro5[Cr7i8_R7Mw[?}f9Qf96H.M@o5s\?ě wM`_,͠m\; (49n*“`rv]E(O*=juNvV,~@fL(:y6dk*@^- 0=utbh4QP>%;FvV }Z;}Sgd4_9>cl8:~̀>|q(I$Y\a,>w.ԙsfCO9Go}ۡo>_~S(l-\9qs`mGZ)Mܛĉ=f6fY6+r47<=;$A'F@,U+;&F[,@XC ,fst|jJx8m^8w.`Q5^ron֖M7hB8P YDo{P`r3eml!5l E`KBPZ<Ww3s dX^`&b,_^%0FRL1 # gHK5)Ȝk˜&B²¥2A fR@V}{IfL0Px̬b!,%΍h_ڀ602K A?WKA`@r5KՆL!,?z!:3Gb+OBdPHK:r<|9`BP&@  Qr= R5-e϶'d9(!=9V+{Xӿ|p>$ lAerRJ580s8>;KK׼ҷ;lM-B~x{VAZ4o%I|okBu1#"`Zgk,%HVt%} )zhro1.ʓDjG)`;^TMm޶kc~oe5*O1Vj=, :=d>00=5CwOl ^%<Y^n|Q)jAܺx5m/`Dנ~pOx-;^C鍭&c@k*[F[7:R'ڂ )TS%ɺ߻Ʃ[:zU]#dm;*B"v[Žl"5^W\,HdƢe-)c-c$ }arcɚÊ"D,3XfRER ZW' =n`1O / F"+@q7,t-MygqVQ2Ɩ , ,8쎭50ȄRNr&\X !uӛ @H$\9R.$*)%" 9 r)wCl@@l@ 2@呐1Lژ  YAJ"2B0Ȫס"KF fi$ʄ儎&,Y Ď.׋L))tG@1\|#[csgIbs ]%2ݔ 7 aln'еA.Qf-ܺyLFMJj^ʳ/>|%^wvA~Ts۾ڶ=jtd̖I}R|zi+WOŃ)+&GKW^^Zmt:n-;re؈ACytn^[VG1O<{] :iwT'*WN;ڹI8%j;7>>\6VoLLLJeĘ@H<+`S^ΌU[ۧwZ}]ge"n+KK9r6G YCbw AdvpߊuZKͱ96;̋u 5]7Y 0k  +JY%I.QuBHPʫTA,diu>*`aQ dDUKTIh fĮ)\*(*QBߟ2e,{ &g8]nw^|x'm:hX4Π.\tkv'CyxuuO} AFNMηoݺZ鷻7W$U+^=wWX>o>'Nbb_Gco\߶ufnkۏVUxqer5Hj Ȗ\y*N'Jvܳxru:{gPU RsR &H Ehtzc~[VAzokLNo2>::&y{y499 +5bC6d`dn]nޣv7dS+]#cZk!MdPz*,=;/.'JeVt׃dFTj^[A6NZ=RIAO @C@ aCy,ku/VHB ,ˈ!ؕYAdދ?ZHmM@R`aFR:gmILF!Xctt|LsD"{a v7u QDh%CǯF"46vn:WQ-0! B.@kcIL%m r;Lʝ k +JJ :7I$IyIcܭJ@CQ3L =Xo9TB@DȾD϶h"ZPQ"X "30!*3(YWD, ^l5Yiq4N%DCQ%wߺ-6<z̉]۷\ZINZZIW{2)Pvځrԫ7Ο>]Q9ZJ!t{%˨݉Ϟ8w/] ;;-Ja5 z"COIf8Q&Js)6j54B [YZ ϝ⹫&G;:ұcypA>Z)(X`RVEGy`LUsqZ3W:Gr܅ۏo~_F?梵Pn/o+vجiϷVkn,Sv? $Z7Z%Βjg>;^#Iz[ܿ{Ԯ,V"Oؖ=9-X 7v_ߐ-=f C͇|ax{*k =7cslͱ9o˯&׺fMuc?氃 3YʉUJ5zIe’@g@8Z !RB D 5D 7jX+˥ @`F!aD~ RHB y֒T*)oэ=, ĄT0T>>c__V_[(]R)U?It>NJ@I5+ՎrtmnQ6FUD hT|™^I?K+p HJv'DW7vvebB0kI0RjF!U EfTRm?~H?B%`M];o3H%F9~)!T*4G'É3#351p03XB!%Ęεzk>(|v:=%pq^GazJaȺ}Jܰ΅Fֽ5]-dJOyYZim`-_'B b2\yD @1fdI fk X#o``?@`֛;6TF2;eD$&h!2Jvh &v2`L+9-vBK i AKY4Vkkecd2"L 烕rW$TQ=!beNgrmaE@4U F:bAݰSR7JZ^;RaQRI4D\ikaf2N D@k (\Xon`Yﷻ8Nb(CHܐ4,%Bhy R(]1[KRT((%\9Gx^oB_,O~嫇{={BpcF?e,M N׷YهR0@~co]=~WV}k_$ɭҠ<^$,uzݻmaҢ/{mbrl1'w;n;TDaprʊb 6)0PKGƏ< }%H9 C1Vj$͌р6yZ%rB)^jPU팂,crg0UmP:g/tzu~zH]IYVJHtm}t/{o$us}kwuXIwRDr,jЄ/p#g1aC3eY"g$J$JH b#h4^{w[Vo/)ACί:QUQY޽|[lිd[^۝Zw? _~k%=z+NJY)oD|]ڱFA~x{׻ []=w WQ4Z cz tV`rqlۅk3gO~w_YW7l]hfFq" 7-V՛AE(n:7/e|c/9RzHMvmvmvW.Yυf478+B"8څ*/>FFA򋯽'>/|iJ(_e&zGM{k4gFrsVFFs}hMORZ(RlT <"Ss/}o]~r{z-|aXK|\ d.:uŭF^۽sf-y,.OۥH C+"ĩɩBw;Τ//-\oen]!)E)ono;Mjm*6DRuTү)3.M,K,5yyhǫQ'rϲK& )^)ZY hǾ}Ac}7V#E5ӜJLH @2^0MCy "M,uaYbcrl$YΐCH&^)*~Adc6En,(-iqA J@$D̃P@%d!Zs"E|dNAnr@Sh݀R nZG,H2Y CW^;VMHŏ~莑3ٹ{f;@bv5s+5wwKf󖃷T˥ O}O/]}.r"ّ[=rkM:g\]kI{ݝ{wF_w\tz@ tVp䆕oAYi *Y}qa(;}WMv;'v?Vt=\ĭy߽=7zium9=wW#Q1pyEpV[>kG{W~)s/x{9w}Ng]t˵zYhn,U+>`߿g!=Pݱsi>ȩ9=|y>Q 3ǍեɉƻOܶљUA?UW6:k сC/̮\M_|_}MAqŎWp|%fVDt˂l@ԓd[7ТAf 3kkk~r׹~%esm:K(lq$A0 Pzw__{ΝzcTNÙ@P8QC~xmodTo4}:fruDJQ~^U ȣ0\nj6کr62d(F\9)csxKM5m 0ܲs@+..EإELKA_,P˓ƭ6Z.6i9&&,; Ik/ TƘV )08RgϾ=[֋t$"G=͔!_c1y7" ;cm~\)GWJŞ0Q=_{ n i.Y@R`XAb'!bEW>DkpZ 8v~jlnqmJnk~LD@ #+|L+"(luE8"Z @a|vMb j(W8# @SfI8.@q, i`Yr!,0Y s"LD0"W!"TJ oPs[OnYg  iyR7|׋UmnFNMQT8܋ ט+"l6cH:  #}$eyي PFhn~_>~ݱ:sV6f@o~ٓxGK˫- S5ʥiJC#4i'Z{iuy=F4G G2*}sKs_wד%_a&k(zn.]կ쯅U+3W^>u.׾T?|C뽼֨+>wjαV=Jaﭶ<[kcf{ fZnW֗4鬯~v Kkm2O.Uտ_ێxg.|;w_w:LȪ*ONOcգfՉ-.z򹥵-wo}cWa{c6FzM;UBJ1~~'wmva|jt-G}ֵ^x"_)<7̼7<:l;? 7o[Dpm2۵]۵]_ nVh&Rvrwv]awıt)"Rgr8Ɓǀnv)!ځ` o:D",*D$0kӞW.UJx2f0HnU $Ra~`-ot;DdscdYv痗5KA5M~ԩ~{%$Jd|ddyi|>wΝ>Z?r~泟,DJZW˕N&ڝN\\@[zvku5wiwm}3Z/ea0}}?[+_:{.ύ ~?OӤJڋ˕TKqQmTg&s(04ݍ^=}?33'/e=q _9oZܻ/BZ~oImfSˬHT%-l5u|*驉zcdyu#[-A*_vˣD>)DEQP@DH.1,) kۛ~`\Ps%KKF9U+{dV?`B&3"BQ3Dr#Ņ/~?]sKT 8H(Z 8э#@%$#nQA;'!Z -&( vgiJ (52YgEP,&M= VY笰&sO ,mHaU e0S`NCm) , Bi8X6=űA"a)u`" %Mw*B"6kY"[k hyiZZ)̍aL CuxP( 8ij4O,Oɬˬu 0C0gA 62[[Ƿ9܈~o-)luRx9 "ZkonL $n$$PPhM"H<}889>7{iZ?s}ƻl hcwyxH=,G*r:T/'WåoHmRYJs}yqBmDم>O]JAZhvj9.d\wO9Y[z+xw鉉׀(\/ZLRh? ۀw[Sr(" C;$,Q5Y~Eq;vic̊xk le;0[?}34'ٱ#mbz֒Č#嗯\{هywYpfW%jhmQUǰX-ϛՙF^zm̥V7L/|;N^]^n;_ͺ=~W./.s٭Cj{;wҧ?~_{}_kjw,Զo XokMě oBH'(ݤ*"oR/ m3ekk^7*|,N މ wn]y1KUc`0Is*7[k77k,k!'c{6v Y&ưuJ# k, $" ˃I13lӛkMPR(H\xUdK0PF@,B9 [,0!T< Q E牐u * O|Oy CtNHr`-AR,BJ9آ*NqǃN *o}˄0a7ԛF[Soaۄ@Z0,ť0abAkugIe8pV4Ӻ)@ĞΣwG~y s^9Wۿ&+MT*Jڰ٥K֒Ě)?tn;TkQuB; zg#xϾ΍w@<å<\gFZ>td峧93:rQղұJcϮWνzVH/>Z/fحH'OVX#ڿM6=+?Qćo~tjj'iv; ~v$ Y#1ݍXclW뇝nTI{7Bg>Z2+{zިDh#rgTJ3 OWQ#PP]ӣ3{ɉkK^ $;+kn;rQce-~죧T^6'qY2$^b668.QN'ЎtcCb8;P /'_8wiP~ƻ>1Dz+,-Y 5d(AeJ{GB 1#6*.o%沰>RV+0zܾ{8]X]񔯁R/Ruȁ+sQS#5 3 œws_d}my4|>dk~wScS#.랾0|髷wܶsLM%IW]T+QtNgOteYϿ)x}󟮎4So=VkOh]wU@.v&(#ӂCm p熿0ނn3ekk_nF@@_A1?hN2f"k1 s~B$ZRE@^y{"}XЈVSm 6cD 3^7CoSJ2rQo&^?mqYEѻooLLMwyi\X-W*R^15ug+ww}z<΂իZ4[Q~Vׂ N;2h\_Y&]EX"Q촴:iZ${'[{rz:}$]fD@Ҏ=] J f?YL ,ƆoXel|_`,E*JwꬷPYIfϜpaʥv-8`O?(i\xx4cy/0O(|'~Y$0XkNK cFDh'JH;F4g$g%gfƫMy#zB¡ulxpZjU@AYZ9R~5VVK?>R/E|GXoVw?*ʑV*s2pa8<ɜ&L,Y%o7;nV z<̻O3ڿ\. ansN9aMS V*I4͈CjrCgkagXm+EQîo"d 4NH)Os63yjmg$gRdY+Қ:%.ˬء R*   n'S^E 2 " "QqH)h zAP:gs o…&Ux@'F( E8ވhTM=M*i*@@G …N(HPdq¡våj 5!b'JK Wry;Gȗ@RZO: |P1 Cj9AY{ވ*D:@;͖yD@JyTKCZ-l: &(s?r2Tai(K *QDqAyFTHDKq:t8:mbZ' =*U~0p*ɥS~F͙#|+g^ο}WOr>TY^ۨ8u3]Yʝ]_ron:S2{|ii^|~z{`ttsk*+a܈o?ٸə@\{c 0Yۿr4u;VQ޽㵇(XoWj U~˱?nbK<f{߼~׮M0$KKK$ΤW)sf]ѩUJQ'&IVι3XmtGt\=83xm60rڽsk#?<9q}!$Y9k T<0H紐>ӮVsܳg}=xȑs}U/M9xaJx#_o>4^*a|zxRu Z[_^_ٻq{V)U=Kv߽]\i'Ǖ>~mDd/kC{{??ٳ[j)bu7Ma$37?~h6fVel^:۵]۵]۵]?¢H៊_43]60[b}Ki,rf`drrrjjHclzz>֚\1.sͲQTʝv Qј:y벳XDR;rtr{Tk gvγ8О&xRQ#;?|h-/a|ꑏ_ߺ>,W?FZ:R9zNg}>O +NYZ9F`c0gzu69N}]ԐHbX2QTz͌Ԣ ux.z%69|a$<+ 38EAbTGvo[}pn 'р~w+KK K˵6,OK2 i"Zi:|Y?csru1R d5 tIn;mvNw=Q^[i[G&80" $_@ݾy5GkJ)\USAtXAp~ (脄ekgԺWϞx,b'=.Q |0 YjV f2Fr+Ι?'"D 1} J"@pjF 37w ‘R)O)dF-c QईβЋ-:%Z!h܆_1]x `v!;mkȃ`EqT*GjR)AA :3 YR&C&K PTy^*X9TSBS{ׯvGOWFG\jܱ0WVieawa-\2 % ൤+x0W$[c՞.SZ͐|tV]G%؛kS^8\oĩFEz/vڭkin;nyf{6v4_^jz`&:ïK8z? vVRŴ;8#獍$/a.3l5ͮWJ{9R{;Tr93{׈vg.^8\-kMj+v~65z܅^JZ.|;'Ѓ;-nI[0݌0>ͦܥ!-0?c"u Nqn2۵]۵]c" FR{3卣20p-gQ@=ҵ\E!ֺ Y0aa=t)!DXVVV/ffҞ"7p!qL4)OkRʜmw;,I8{-,4餾"^u`{_~DNW ™Yt$*]?zοBјw?Oo˵Zh? B,ٱ(^L"Rsw?`P.{WZvqp&I<F{=g_i/ Ǩjc#NQRs8i6R D=dy-+{fLy!zZ)$תQ{jjY^xb8F$ ) ;q#6x$#Z@(@XǼ:7p߉{#kR\.%?T+Eձ"IDpwL=_6cc#,|IH5F,[ZlL~@io34IUEd,∔Yv^T9+~N`Zka&X󃀄k!"]觉eJg?R#"fRF*(MTGH]l$~#z¹vn֚M8"_+]]kՐ3LF"Xs;L0(=3Nz$G'iRA)J)3+ <eY°F حO XWح iA:vB)8nNReG?P憢ٱ8'PT К&$I end<9"QQ 0Y1) H*jABA!< EL ,XqAH*bLz- PA`54e2  "B$(EYy \[Z֚L |q XRcaZD Ro*!49TmͲ7t"[ḞN]F~r''mf=x˻"={s/iƯחG?я*#vMΨ)(obv89vsɆҺTl5/>{Z/DY+ry$]'O+EA7BIzi\k--!᎝縪Z GʵE'{nVX]][{ee)']m߿r~ Gn{o`IgO=z֤)gJ#7/ۨvmvmv d`&E[͇ Y3k}o!*fsv Z" H[nj`ᐈ|˳vYk&d&i0qY0n[FԚęrs]㓄j˥xrj\+Da +'OIz45}޳cϮ~ӧ_ oo핵VTw{ZF+x|FemwRkO3 1r\)fvNzvcF4IbĨ\0LMZ+MK1X~m=㮯,/ILK)E_FԥyNXıl5Julʊ`+y&B•#^S>!36e)h59!-6:mu^Fgv@nd+<}N#e&9E*8Ji Q EDX<]*h*[$6uGNPZIoyl GDéɱ@lNH>^=5_h56=MC׍Wg}7VWhzk7#atX̷Ľqc~eZ)DNFaowZ}rJn.i͆u* Ӟp?L[+v-x⁓y0Zԍش4ɶ7kk3sg{A.r=Bdye}k+K]8"n}mf7n m4cZ0,:מ__ZWj5}37V_zrKL?:.ʮNA` Vg ^cX*2E|n`W4Bd*'⁧AAAJ2 @ n}x|oL+}S VYBB j V{W|QE7`ٌBj(Nm! L8A#R01=^(.+"hloש3љ^Pf޺vDf7nNMMw;FNkƵ GԨ]w6ڭ~泯~ݙ/V"ix 6nB}剅N`v yfV;^|0/$uV ϲA`tgjn4K;ioG!5jS8vP1险C EyV D€$KL!@0]|$W޳xڵz933/<  Bγ_sǁ]_^^><*MDkp#W{vώV\6DzA=DB4d֢ EEWM:x%A)BF"N/n6Y;BBxEi`zsuo#RA1pl\t<xQ6PhkGeQ(Ǯh5Ѫn;y "-#eEZdi)_2zAf ">O|D xWAX2N7 \<919fQ'޿.\],rBQ%:BXphQX|H?`_rC>Ԫ!d )|nS JpPuJ `y8# LJPdrLlj}23UGe;$9*yHJ!VAIڮ~F"һGE,FOG@ 0! D僗=[5Pha|]ZBʌ*$=e (@FPݩT@ /w.tu%rqp3wZʮp} L//b4泍h'/~gէN5⯯ݬrzX-Zono+Knf ,y:"]% 7F) Yv!:Q'Ny{aZpn1nvXn{?]raO:ʹ0'TLm "Ϸ{~n]3#7yKS~~y.' knwW񗻭yHљ X GgWe7C7?'l iiP$F"fڍ1R3NhV laYŵ퍵s5ca=q;ҁ;v W(Сg{_slĉ'nD7WbE@⭳x*[L26T8X_>8{"46޴.ӀU2ڱމgpbM5t`F #2!n/ ؼ@,XkBA@\FZw ˒xwWA/IWXBS;({c5dZAfgg)2E*$QB{ODToڔ( E{,B"';ݭ4MRA8D+E Hl+@Nj//-yxm#I68QIEAnvޗؒpF+RZk-/HZk $͊4K jm4^P"c0RJRz(#{9 RJ)ݕxv#> F ba@\K@MS [fTCB_B% * *p@Q4@ta@AAޥ3E tAdDA#(qV/ B2vmlgf.i$8)*E>d? R.Ga*5af!F5 떀,{{t6s~$s}.fJ1w]|}k躩cx3':\|s B=fkX؜zPBtCv#WLnkH%扇"C4a09 ͱxrf M3fmzz}N:l`16^8 JoY'h };=pg[k9thjhBYYC3ynӢ@x$`!EQx؃gsi ?#ܥ\?6#epۨ9 xk?턪==;aUYnnl馽-W1k>x0\?􅝠35nw̚v b!Euv49y_8ApV(O{?l}3'LA@;qYƥW_yߦ/Zf_{tjv̴ `%fx[6W6QSSWLNo/]x# W#K@"2pےkZ"uUNv+=1,͚M,za_gR6MsTE+ # A> ,%/t0 0(+.f">"20 /& QU @e:g'͈ % R~gKlJ1)@$D  gI.̾2[(!)86 i߰"p.Z9;³NJ{x8 Hi^/zw`ۃfnwb?qA](@yצ}c]iov\SPrXG~~;Hbsc W$ork_|+w{z[M78pMvֳaxavjgpeqPMm3f=hHC8Z?ڝ0ykl4'ړϿW

        vLkAAA+Go 6F?2#½%%^l6k,IQjZnD+!S8\)tzLJ+,fFa΋b0l2<{7ͱ7yjY'@C$ܜm՛λ @8n;ߞџ{={__u?]S0Q 0AQq-fDL|=^owVW9<53pk5}\?'omlJ yT댵&&/^Sg<{W gϥT٣6[ZP[TCw8JxbWD͉XQRc']6f0ZP! Z`J RFxk-!D<sYn7$p4s" zc?x7o,n~~(m_2==+/ُ| `;֙|τyg[ϳi~th6q@ ;< zo{{meyȱG{͛;V]kVnNOqsmuuzjJkk_{{ܿp$nohcYp/$I~o_E;I20&;FÂtocO>٨[33&{OA[kщfWn^Nc00fiFs޾x3g΄Qpt~%ZgF 4ӭV-67׽sF.[$H1{ݛ2qXo&I;ym"ʩZmfaZ Yi ($gaVJ1 j"UhE*eYG(+\7HA`Э^JIΩڸXiRhB `4mT KF>4wz&E:N:8Ma0߸xiky &''!.$u(A\^(e O:l;,fṹ0sRXW؂(]8 4Jk"$vC={fVDRasYt&E%i9eVbzخ$4AmVԈpK-/ʼn##R~Hy јE@˞Fe82<}Z%*U4b}2DJe4RLT:J&BI4#*P{Q!" X'HUZxTZD a9MdόUx tĭX3< Hv؋gqֳDК@ زsZDFBtwMD YF[*v_e_~~R9J߲AȘ 0 "}ˣ=xQnm TUM8 4эxtd׾_Zi==psn' /]8w޿*:sqmNQQk-9o:hM7v njah7'C';R\Mm6=>ziVy/nl7W.vϿ/}=>ԧ{" l[񍩖F3 ~ΤE1˭Hh[Y&PJp( '<̟W(Wo\Yrԩoun@78\Y_f#+t6Huhj3֮ǭ&u^\=p;zVŕ奛yxa:Mӭլ7èX\?~ޯՎL)P3s^DJ`f'n}}kca㺅W,AAAVO@0SƽE>xa*{0(`ls/.k=vi`<˲Zt٪75E+ ZdL(~&)J3w4A@{y?(zȑ IQeFC=rޜ\[[FZ0 o q}Oʋw=pK5ֈ{;ɉYȊbe}mjl|r-7_}{&iG0g<˚R+X;u~7a+qh@oou3vF#:҇gpƧ']QpaUzֺN\ Qe0&$;ʣ00"x\sRҷSDȄCp(uΖόD( E)R̅z( Auq(XgCf. ;lZas.v7=iM_y+a AλTƍ˗hfx@HkG1 z}[/H#j8{Tȷ66!ő"(|0N !")4DD("/_x#C% )ރ(DC%)Z%(HvQJ6003cmB%DB(#Ǯ6HR)(q(M%VH<'qE{;^@+! f *M+OYopoȝwk5a3!,ēQa`!7Z<#}#$5AqXE+A)@ۼVy[]K$]:#IiP(HJH- eV}ۏ!r{R(?!!6cM-i!WZ#`]@Kkws~&EPVtgjg#; N(- 9WZso^짿=֙J>_hOLn{᥍wquljGOLM7_{9.֧sCŒD$+5\6kIET"5{-X9i.܎nCuPuP=(I )0-׷SD82""IvL"1 W {Di@Mgy`[ً\"!A^%2{VE`EPZR EQ)(2VJ^bNd"Yd3./.=y{|SZV' Ah{~kf3d\^9x;'_{ŗ6WWO9zĉW_OFFl/-./.͎Ovav76^:r7Dqt_SZo6P`Fk[Ywk[ݨ7CdQj>͙sh=41>=Dzta5 z(sL^1&t٭i>nEZYcHP)zh_pa B`_dIך28/YЈaf="iy$JR|Ȍ Xڊ ;G$fK*VqEP  9[W.I"z.  ƺ\ًYU:A"9\,:1e_Ty{I(F *,lPBp|omBos~ͷ^tH(8i=xH䇃NIQj:pi3yG?%v"ڪ#xImJ?qK=҈kW/]?=*ҳרϝ8~tsckqe2ua|7cė9l6޾2qF>+/Xs~s{_&s_sPuPuPo(zZ\|;O9 _Eb/TtvޟNLMHtcccيij3SS+=^R,?{($qzkQlm5ljq- blFq#?ͯ=jM㤂(YZFs ׮`}}=i- Rlsic ЄQDZkf##NI22ċ0{qE NG0%E>h Ic./qy!cFʉ1ҧLa2#avy`d8 Az~gLZ H=p谻SvE`gYoma lj|gEEyfcff& _: ! iM 4+ bT6JˆgH/`%* q,{4ae"?)D4{[]ak 7ԯ_43=@D0AR4)JdX$ʒ.ٿL(*["&MI@DD q8_pk-z0$"KoT=7׷@{= є @UD :G*F !eIH/A=JQT94 ~p"ai`UU$"Qѓ_*p@ L}3a2e" VS-`MĄ8:PL|* sL/x4Cj`Qdf# $SPP@4DH<" F 0)2+(0 ʫ@h!ATSQE`ac,b28hF`Y:m$? :cPT1Kv{\n̑13X$BZ*DlEEB$1c<YU\rT#FwX6;x2#ۈ Fox}OYFY׼xjMQgA[&7:z7x{7=<7y۫ԣSWnnq;:{擿ɭg}noط<{_ڵ+W_|1ˏ=SVǏ/(H%a)KHњZ)HK DE" Y aUP { H@֒3@ !dP8$ME:Q5@AEȲ$5ME*(2Ɛ e}0dy,$ Jnw ijGdB xE䴝&[].H]BO} 淽#MO#zsIq=ϻT{O<{(n wMU}OpW.omiͭ;Oh]KYz;)ʢ.+x'O"Rw"j LT4^7VfK,ϒ4Ms&% 萚2 D&~L!ӈPËݐduFa "X]U1ƩjRdz}T@D#Hvi(ء'ܼ~"dϽ5y{xu}ܓ<0-vsŗ~GuťchzW_Ám4'n%zO /bɤܤ)9k,>H&< r.{=%l&SB RADlC)`C5S8k}|4XEBU 33C8"rIy!R+CɥC,k܄Мu ,,@ 3 xf(_TRK`4KOu#KRCo~V=ܥKF x~{}{o>w=CgXnզIV$KSl]*Ƣ.ƝIM$q֚N휫*8kf["!ڇd2y񥋉sv鶲2]QTmllK= #GN;T3 ΁fDm nO?|kB" ,! LaHڃ$ƒ1.hȢ`#!*ѰvKg٦d@cEC`BCa=1Z"b!BB$@@\uw9"D4D U2fAvdUw ip7q( b@hK`I $6S@E1H C ( J4PƲV!3 `/O<U`l"as6"gXc5169kĬu&E=.Gh4G_3DvLGюk7B_ VvIV2\V(+/ꙃpE1GMv^ӛ!)] <ʾUzU{vKUkKߝ=qg96k_8z~#vOgM{iѷ{/~鱿Ct/\$>W,t:;~\r{|2Eɐwn?_6\?#:򁫠b-O }"&˪ yCd#tZYk@!3 kCm. F jQ4֚xQ/R4AM X:0E +V.BE,710sǤD&K @]iME6Db< *HTZ!a:νth=_;* >M\GΌ'_S]|>/ ΜG>@ycs;7HO=Կ_}jȳ'aҐȐY;KˢR$%VqVC}<lj aUyrnBwhݙ6})`vofc3ݧ,مdOS=^^^ _QzLo0o@ܹ΋{}8Fwm)?4m P˺G0sR VE9ʲ@K sÍ7y /E1haIYZkˢ E5dXhhgztXϟ?w|o<5/v:*'=;u>[ɟϿw=g'7Xw(!kbT@//O_/ѢƸI5ڜ8EUqd}WTUe$7-KJfTbZTխN;g?4ܦ)"pOmedБivU0rN:u(0 Ўaeg-2huб{WaD$cIX!,K&׸9D{US*2Biy5/U@"r22dʺb 2D:Jc&IYNR*ˌyED jSgGF53qI eY|]nnXGUC^Bdu\ ?qc'`{8noEY8,Wֹ3c"[{_UYעX۴b-YH`j,5=}ܵhh੪1G  `ipJdL#oFFGcT%(DQKL "T0bw !l`%&DA4^FI5Sh JBHLF; cE"x8cqZkXg!2묳Wq#P`PhR Gp5 FEYL@4f2Y8k1F}QvlEu~υI ?[@k?9|;ػwd{U]Cj_T?nh9SaĠ- ~ys2j ZJ):\]1DPѢN5xD2F 8+#Z"2 \AQuI$}qຮZmKc5I=<:g:^'KX}ʤ@5QUU6J Hk64ǕYXw{/]N@—,-coW?ʧr=qYpҗ}4L&7]?L U k%K?e]a%lK3֢De/Y,Fv1AAmD29NjL9rbBUcAfAlp.,Tt{s( _נ`Eԕ#Rc:P$YBg۽5('i1@Hں! g3VU0߹s]C@ѝp*D! %g,Y ΖnNfb6s f.L#2B Pc2 :GE5Ȍ!0D YcP4x%jx 0 8MaBYh4Eٜ3"ĠQ"|]$ KiqLrrvɗdph&nי"IMm 舭3Rf2 `̝(WQ@&dPT0W+ `eIlEhL;p(7\㋁"*!$0`ZCdRX\3Z\j#"k56" c Yc$40D,UYrn{lnlѸg!4U҆T)Inz;)$$ !pYD[*3iΧvLd|$kMÓU/)"%h­ ~ ZWol.j6;\ u7/y3^<{jm~{WG*07_sӬS?St՛kGKb!dO&YhX8XJlZY9ۭھsNZ+6u©KsJA⥈EEFBk-Y"+XA!PPc6u]X*!@`foCK YBBˉXX+B u>4VfiA8A:x=Q}fWwD `mD:z٧}D,r!{e[3Fs멓|OoK/&ű|6^{~/E\_wO|[QneYs9H "2E؋2B&w^xa([7.sEIZզ]_{~[s=UQPo'C3S8MnQKfjjWB&;-(-zO OW2j^ŚW`4#HF8|dIi9.A666;֡GN;~hk/,d$IbMjgY$gʃB ܍k}e%Q3RYU ~jg-/-ALZZ_KN:rd'Np"8Wq= ^ptwNkR6I@1YnUWxkYZכ;u Ͽ;~؝k7:eIt[6n$.OR-j)(md(AڈF02"TXR坘W| M4ĩEP}#$ 5fkC8Z1Z !E4*l3ŴVBGT^ׂq*Ǔ(n{Svj?ˢF$Ugyê,,M#, R-.D)Uk4"DRіWjzUᰪkcMYUJ(KLO&\diIi+u,oeyfG$"Fk8激)pB:Ll1 lY |HMciH%"qPcUM4xٍTCc` 4Sqݮ`h I-:C ԵEPk#)1ac   P" ,P7jcC x G"PI "15dl$Iui$Md1YcmXK$~ T4k,<[nЛ ۃA{4ƓxRTu=TU}b"sPuw8h]1@Up O! @Ҁ$3W)eY\HC6; 4C ]] x:rWW>XiQ5sQ.| LU 2iВ+ +%h6wr̃mz֕a]ʒ+?Ͼxp0${gwrDŗЕه$$ *04 "QQc77A@vч4(gp!L[k"2_֯|5xZB8몪1̺\_a%9D ʁCģ+e`G @fB`aaC($̢((l;Ҙ`q"2(+HlxvMb¢d!kea_TLiXv"3Wqv8"~%ˮ^]1H*2dtZ՛O/~~x{΍~#?3v./aE'cIDI1aQe™3oI\}-wKsiLIQ hbD2sUVD$|Ȑ "h)"IHQ}-RU9g\[EJYG7V%x_eMQKE:fͅ)VEP< R /j'=[G>s MmX?Tͯ?z/T^tj~߷Mʵ~r`ءO c;x:l5^HKֺf_`mCUVL._y}}tk֥NV 7/ݸqj-EK5O_x[_^T;4vxׂe^y7TnX>qRon}Z8m(bo>I\"Ig4u%, +A`ؙ_Z- C z<(>||i $ ƣN=vsΉ#G޺Q*K uM֥iZ{{m5KsݮK7nn7V2ԊpjRkTEq~qAU;'EQt沬UYAIQd"eEDX@D (5N Rw}Rłh(RDJQ@k_c@d\IXcaL<1M/}=*FЄ4]H#)j$k(("s#AirUHQHH;~7m6 l!bLЪH jOf,@Q)sQdJן~A3]R4F5?HD6& D2Z Wۊ1mgsYk1蝲c %l1g3-$N )2D\c(M@ I$)*{g; k (iZ@  ntAf^.3h(3&Gz~:])wb̚qYkGW'?^_L7[/t>?Yۃ5F߂VY[Z XYKi0\}ߑcoysdRGLPD*4 $m# TdjUI Oo .]7nRqcM+\'qΈJQJ䘱u]C`jRUUTTX=g)ڭV*} Ukq8C5UU%I4M`06eIZյ18P 1hU,GQ*I1k:Nw;m"eegv[J/vG%yY~a!k[.W. ]~[ӟ[dž#֪ZP+ }3R'xd\`WLiPqO>vܿ);.4|6{/3~߻gj#C_{Z:Ai`o5xK$Xkwvk-DO_qmÇ\X֊HifYIeyW?D-YZYeZoX)k:B}4"z]x׵OEiuY 5;7ܹo>DPmw*P#u&OifPKEI|CT"wO1tzMQiP_EWvpthC:Wlb}kB^zF #(;W:`TU>հ3lɳxCU}]3 8cG$@֚ C7&e֘,K!T}"k {sYc*cZ;kZcQ4!Ml˴9uUJ< ,2K,KC`JN/y3Gˆ#d^[|g=uɠ_㱯%='N}Oc]*`eMi*kc=U$z\1T8#l&!\Ψd-ò4 #@Qz|^Xj:=-be$-0H("LDPcdf-*${矣[~LA{WV^ {,4 "aRɤl¼'lփ\~C{W.x_O)qgݶdh3VX3qJ@3RPQnځG6GjI."RU>P@HƤ6MM훫k%Υ6p?lۣwz]4&"I,<ڭ|{ݿI:v+W W^kcL> Z-e"{.jW̪H`ePQRMjC4f&DU%pP$KZFc rZU 9cXXfFAҘYTkU*D@i A MҺ "f8s"@{R(ZTuĄ1ꌐZk4AUɄ,sIQbIN"L }MT-uZQ1b7Zu5)#SdK$MS\yMNAUD|Q $JHdd F%wYc] C b:AκDˁ=4R]N""a4]5Rx9rv *DCLӒ g~q !!@`(bHlhwґ"I(FHK4a`b 6OU8& : Q AJEDYqaq5Ƽdsnʌ!`a")PdW;4e<)T:4ŚNYjP&1(ĠyއཏأfT%mYGMl4UII eWGcŻ%v9FI@yEyMr,qwԒ8LT (#n~8; CΞO~v{qЙ\ڳI]ciF/>oluj Zb1go3~ubJ01Ɲd>2z!Jo7'W uU9a"$R)36୪tfW*qܘ.L˥I>NKANsajvپ /#.ݎ3w4#4:!s1sD^aS;74ݫl" x\kN~F{qX$.{#db+w]u߻ۦ`EDJfYͶb+*q\$+~I>&c+.q9'ʲըjQ  hwn9eV@tᇘr=sιgۿ1VD%v/@@WHχs< `fǤ!`ɉzXbVfq[Qne4P=I@dfr!i~?7FJxehC$CFONac^^t~=;_~;H [j\oiݵɱe xJYdf( `!DQa\R2`Tg@a@R4EǎeŰ8v"C:IS-p5*89싲 T Zk @0H h]I}|T5kJkR!JW/2˽dIRIs<&SNШI$^5uX-*&|OwS# j#= "ދ&SA>ι^WE#>x@Eч Pd%kmT712\8a:!TBܨh𡏧4(ä6*!!!izb&%EQz={Ta.DP" Ӝ!3"p "0]9*yj3q8>8D|r!gQL!A3 h -l A/ + ` UFScXc5ɢH I QFpV"D1ϬhCe(Kpe5Jİ30T,Uvt$~<L\_|@x=OCY\ ,߬  }]HrP99+8)bM"2\Ҧ.3T 9QXٷvj}}ݻ?r|b'.6;W2}78&yx.FtKBҘrT oN$s CQ&frgY1ƖG{-G瞻"R )ˉ;$m'ڟ;|̲P3/;'+ #..{ʚlffħU2R7#M;6ڬ'=\Ib5naNmmW܁``,"a"iڰ.xv+}VKƞYW~"*5,@\_+&8DzL(Wuߪ_X>w'zJ=5Y_ﭮ.;[?]f˃y0L 5web2!/A!< 5`ҵ*]A+ H ʬ:ϵ:w)ᵻuivMVI~tY@gQSlݠWyv;& |=/V/Տϓ,,y =g/z+I, 7ɩzy yi`Ě4UZuݬJj6mkiҴJcOw>pi]QZ|$m6_8u}\Vq鄨3۷=2Pb-QXADJ46/0frEW0{VfۮZ'>.ت" |0HP+s ¡db>xATF'zXE(F7#GG*弋FkLU3㍙Q@n,\7$UъH;$6ט9`CPիDH)m4*V9,}^*Fk 䮸=Bl6QhW;3 k1If3SX.{ pUzKɊx?r|X*Gk]P+\]?i7>w,ѥ2934[*u3Eu6bL((J_k]* P2FH|bt3+aU4 5іHHw /:b_gɸ&hCuO=*]*A7Q J6MA6p߲xbfR_Uw{|0UR*0F5|_1Oz)Ѱw iG ifùbFu'ћYI3xWsyY9o}# ʶ5ph 6ssמ]]Mu~&_uZyҍcݷjJ+IzّgVS^DXT`& K"@n&FS2&w&N}7h=ӟG?rX^>Wt.+zةf5>es۶o:6@y,,ZI#tYhd < (ʓ Xc>1~]?2Zogmmb|au7cu4蝾3rjGu\A(ReDjW@B3]Fgٌ|<Dl5?+@ $6liwV۫͝;>JbT"VK3)]e5Ze~T2pK?s{>X?9PO@́;Xk es$js(˲JXoYABZJil3CjuEED'>Wp|z LյϢmvOOY~ȣ;vͶFl- 1xChQ͠$P<*D5hhؾKbeAm!pT}o :]ﴭHlV%*j{(|J`  RFIZ"ȎC&IHaKB^oꮬeY=YZZ*5aT& "Fi/ 2Q-lEt.M-" x}*(521Z#I#%ČR 5ikcH $F3΋ǥZT?‚@QC$-EihQ l}be.@$@4Mkiȃ9 *hW ndTi`A!1-.! 1A*x8~3R$DT~XqčAnM 1HXc1IIMM$d"EL(X(A~Wٴ))kcM=Co 1\\'{rVU +TjtA"%h Y2ʭيS6jQpl4@&f8zKDp cZ33=LC(3$Is( .ڷδ {mߴྃ枺p~n߽ҰO,2w}}C;vdkU*+m77[t( ў}pB@צ㣈֍* V _;޹o> "/ɓ'{n0Zq,<˦v4AF/v ^ۧ_һ>ߧϜzp=;9kHikS'T 0J&+mC@F`FH4z|CEvyQh:ɳ [KPiD H"10G&E\UQ.&mDTZ)ҫNQv[%֪R ,8#\R%s`А\BDmHEs 8I%ڨ `W~Qt 0t$@R !(Іx  |1TaU!0>gnljc}l|.F$ TPeCGI/t(EƘ$ZH&1*c6X]P5ph"T tCͤ'TKБ;޴DQ0ƈmN0[D((k&`UqK@{YB5nBGG%A8 tjyat$MіJx`ܾbN_atĊ >xv:rUnyg|鱗jW;wkB)]5<}T>O>;"j:{o鍯[(p\hM A)|NY6*xj70)(RyVfi~ຽc }a}cGݵsv_}?#GO}1DJ{&Fґʼt:Ʒ߶"% i}実u?ϳT:q^ k vBTO6k3##fC)E6FbtR4R !xF[:(d,NZk >z..;33ik^|=G>3FgIEGƓXP8^Sc#kkAS5{Қ_Ho)0pfL#)RiVR7Z !Lfwlݱm?rة3gN[p#7؄D6"7`qؼ#(8" /g]!JWM27!:enW7G/Ѧ1e4? z rپUK;I<,l%DD(Eό_MctĮDfj'NMvI M(eR#هn{4 Db":CI.FePU|wuid|jO= Y/64UZ@^[QkUX[KRh;61Un=[F󢻞m9{ jG\ZZСQ7ߴvq3Thk~|SO;NMwܞ}KE?;p!UK@)n$Y}ꤑF 嗃"H`5c މ֨nzyh2/|HdĪ@3F@B68j1,T E$VKFCH2hMLN"VXiH%8+lU`!jcP)q{Jic6ID 1΋"`[m)" @1M: +|Y{+k,gݞ^_svؗ^ԠR𴘹+N=QN +V*"蠴Rqy2T4BʲdNi6Aj qUnrXCm@QmL3(aҕL'#1>kwuW]W|V;pHRLXeH@R"9$)(Th˒eEV9|}R^ߵw O?Ns~=;}+^r뿮(}osg]5bfWșgfIIԻctîрvi;tf2>:mh4ybw_HX'_N690E/_\869j...8$p<Xd&EV=ˊ2Z AVR3:::>>6>>$ŅO^\^dןo6uyW׭uB.I"jnW2Ws6\ݞk[~Boh<_)wCj{ t 󍱑Fkdlttn gm_ZZuH=qBi43z,kmQ׮TJeYe&RyYE/@X0c[oXQUŕ*]q6&"$0צ[f#əёȶl6F&g޻=u"UfĶm{]/ nI#=wff׬֚n<1= Chܜw_ZPH!2Q!rvC >3jm.,.$EDIB`|?e՟B3Z::6E᪅dT[C*lP*@"h!ksS3bc&>WU֚RU Ƶo2Zi$f`f@J " Q $cFZ-iΞc~ims+kmAxVؗ5A`+EP DHX@쪧b3'g(~Pàdx2MH$D8 jR)6!UO1$ ! zdiC 8m+ rP՛ K"zkjb61hmtDJFQJ(heHh[` V7"m5BtYK.o\/\Zl /qQ+Y2(U[V%jG* Vʃ3dΛr ou7MF@:) ,~7~jac wtHc`%cYbD|Y;fnV: ,{<9q~>9>j6[fYU(kjrB:Rk`FEBH Η༗2ƠX^;,;cݻl9}‡>Q&a.йzQSh%KE) "n9M\~ljY(3jH! C^2Xd4eV-meX˼wnFK_E cd^ 0  js`tB|>Š( rvٸ7FyF_iU-{j\qP|Y 7$@,{A,|Q7vYLosEcz98yTOMl_ Y@)ʲ4mPe9GD,H KLfe`^й֛_t>ϲ@26J R֚+`|^(Rhcv}@Bf'tY^0qM7x7R/Ge:y TD+Ns{h?21q_羰j!5:xKDFopczVF!&'be@D$T^]:P+2*, @LBBrMq믶R*0S$ *XWExH¾,XYb9{k mcjn e++s$j)Nc5baf% Lx.@Z kK )}xfj/FI v!jӢT4Ry,˘ #DTTW-xi8pfv:f%Z=6>H !8_Ee (h6jlMCƠi,LS5 hS7{+Zkji]Q1+Hl^h ThbйVRʐՐ6T}<7n}o8e_aզ*)yk'VlQ0tW%D@P.YTldA{Ж,a͠3W%-qa^6ǿNM ! T˓6ڦec&h85taAEUWDLT`xD_?|,gV;+Q:VEy睷gEQlܻ,pF<(]ۿb8w\sC|-&$f4TyLJ[c] b[+6"sKW gdftnħR묇n%Ï}شС_]WOЇEKuן~{[oqr̵=> [fGwݍn=-0x~~O~϶&$~gn =zﱗo}/ e7ꫥ@??35R}.4;抷?~?7M}_?Pn#K׾]՟|JQۿ^u>],_OΣ*᤼~_}MYެ@~߾ck~/)v?r~_潷#}N};׼b?94%<owk;_|;4~m_s>Y 4/˧R#yOQoЛ~Si///w*Xr{7ܱ_''<'SUV[%jebDT:,EjQ"&hv+ǁ;sgJ`zcjMZVFF* Q 5`~NC`; P@ C\-KWy$sX +{Yĉ'ǧg]{_B)ޒm$&Q% uxDdHD%6ޅ+TY.xTpO=392ov7n9:@ztԎvõ=tN}#=Ι78ToQR[$Il\ˍS$Ik/ T6ܰl^E ! `Ue6Y $Bd]P jDQZ)U bf AIJ$)SFk*8b'@,؁G`9LYك%ay"ivT&ZQ1Wa6 iУ|HZ0+FʇG~cC\!Jj/dm1 !1|>dUZk:Hfw{Н^ e΅Bp Q<< BP(hMz*Ho`,fQTE`h<"_Q=VWzT gU4(9@DDEsJb1- 5"$ae f TeNb }bdݩ}ktbz҅{/ͽVgή-/-,|yy}55-sPb" 1 A"4"HƨMzu8/8w}4\*="O[wXJ`DB}#9r ;w7_w-Ǐ9u vtOyBf96:HyHѬ7G'&:Y##&֚Hj,;i-uy@knZ$M6sN=xOGggwXD%V+CCo @ǎ^Z` ɑy)cf7ƴ GC@;GVZŵtVJu>E"͢DZ s8\#&jFבd,^zիncA!E&Jp_+d?E=x "cM4ē=pe,3NF kwW^ĭfOo_HɃ/SKǾqpoOJgUc'ǎ?<&}v?8-qꑟճuTA#[` B`?u iM "iKU$Ȥg~w,t2#_غ7O/s绿cY6hQ-GH[3 "TY ܔbcޯ#¯|?>3"kOʏ{^)X'`@&k>Nߟ!_ng_?-~nw?-&@xɑ}'׿vzkao!;7},AkW|WeBRI;{b90 }Q@y۶Sg>[$ֱ>rڱs`xMۃǦy\L`̅C@ Bo.xSC<ȿs WWKږrŗ]f>}]wőNtr|"xg&'[g|` /}2ۧٱОk _ھcjzƛn۷l6[5hR{ݷ?{Eڨ`k$M꣭E}2?p`^JlfMetj 8wqY"wت#)6!J}33;CU 1FnW󍖟Q].$a-,"! G TvP7XPDMD pF2#002p8Z#XRʛ/lumQom"Gߗ(211Z=Y /C!U1MJ "])v;)]QLyᒖX^N6FP4Bsb.lZ@,8F@ÐJ} mvnm4 w3ar\r+vpjg#qK!Pœ2H''{"kNcMPMӚ1@*yQ Pe,P$(>C>n/cf5|K4FB)4j:m˳n!^|:=t ?>{_ޞ׎Fk옘I:(ݱ-1!4Eg_Dt*kW;k6*QFhDǐKhc0LG28oyѾIkfQN6mP.֗Ȳo}Fk dZ^<ߪ~.D@ӯ܏|ȦHRvSˏo_$>a{уwwxZ>/۾w;m;NwO}xossj Qơ&jX'^@@>,?zЗ Q{w_x?\P-aD)\cGsIPC8O_>_ʝ+\n GAX|-7 udn UMO_ONomq;]ӯ#$ 7?X`={coWo}ws 0YG~{+9Xvywڟv`8:~:t }k{o6y` ?5ڟOo9с$. Kh&{ouX_=s%ֵo-~`v|aFčtww>#ݳ?xKЏY{~4C mZ,VsP"^@XH?'@?z>1bw.~_zџk|u{~J3e4;GjANrrWnj`aR3MGM蟺xNY̺Y^헙 W愸Yo는Rˢ,hiţ:y_OkFkU 3sN)lj@z5 sΕMxk^|zyySk)I@0dY>4pPZ[D٤ucvpfcimek6 >s޽7` 17~۟kO}Zg7Z͢(^x7}<#Gnf`fvZ3{mHb;`bx@! \;Ag}~׎ԥ\e%bVZ!:/V6MFF@P, If.VȄ H)L@nEzVoy\U'xι%U))VI]\vQ > @ xfh |`=1re\.ժ5L/"22RUPWo;EP2@Vy[$ 4K gDN-# mXJ!.YJ+<σ*#Z[Tahi[&h2TH EvlnxѼʫ9{K T>eZ@gڝP(#FimE( :qk4MIM4J)ۈJ uEJ8GPr=3{M3ۢR((Pj2ދ#Fyф,ǧBPZA_Q uWˆ)Y~cODTOY%NU"TwA 2a\&°)5X󭋽J'[r:. |]$s7lb<~P69 R g2}@@ .%W2\ d5өukX@ğeK`';jKyBj4uX v|&eSW%жf{LL3W~GoiWȿM}`QPoN +@ T'*\N~Ȑ#d:bQen{~7_+R3kzݯVK ¡Tܕ 9ͅ_=66*V+'NoY _[>qW_ug5 $?SL z{}z8U?М}~ERՕcsyV1 uk+۾w>ٿgѷ?[`P5(FCe˙~z>vݿ}Uӏzv&7`VhH"_jN% ۧ̎c1/ٛ4M^¢8ϹsY=QXѡVFy1αsgcvDi{<ϳLD U"R>ȓ<0=5$v9jBx箙`|buBWU_zqhS1ըjWzlX`j?<{x^MM]tpY_/^jg~1)D(x{~wC7'Z~ףUw~5>qjG{[8/|яw?7sO'VNLOwcI(v*[`{kG(-;wuN}$Dy߳g៼< _ϼǤh5{Sÿ~]'\1W~R~4i䏯ٗo˛ CW|Gi3Hjpop̖$탵q~No<ڽwhB_IWsyy?|1ſr71cɹٴB"A@E.Mڒ@u(ʁ:3rY< +>tnjUccxi0SzGuAhJy1{[0//,Sx|$Sя|{w$il]?s{F&'kG# Ɛܳcf]+ Yz\Ç&f6^mb^T}A@Ӡd=iB/$0xjyĕ_?23 E5sȌ3jfJHv{fvKH}RJE ߍou6w/PWmnļg2aL_ͪ&VcRLhC4FG]^,=m=pC EvO*!xTI ɺ`βB0j(0}\$!2LsycLTkxtdi 򙹹{v1ZkŤއA0RQ:Ro4a ޳G K |&7Ozy$)%sKRl-AM0}{>2p(qnOA_ #quelvhQ:į}"we8}Mez%T6`rqSzj[{{|/^dW8qy4z29+TCmևoɽ3íӥH!>kK6ݼ29vpT$7Wv&v`ζJf/WШᮍv^Wݾ[E'{Ǟ49Ê$xrq.yUy& @ w\]ٶSW;T6w26>Dtcu_}{"I93aE#C!~W0y(ni @%Zwm7xD:M`*r{GV&f/< 1$k#يGXw v]eI/>:*puWMYVR>yΕg8+j'>|cն{~h[.MxvB|ya /hu 2[g[m^ '@uXI;33;Fssё zi) @bЁa'"l۵,[IwY]Yx_z*,"^/91g{k1*ԟ_qń0yk_.U6O΂j*=wܙ٪AUMU){,@@Ny?^`w=ﮚ;igS:' 'ݶx*1ZaE<2hH_KRiLx.+#ӳZd A셁v; ~b߰Y)Ui E@T/VXKz?|sYZD# )0>뮒h .:ί5UpZ1#P5U9pҳssO^irRgpz`@4ThVkG"mzmx0,i/-ѣG{싢pfYk gEırv({Jt眳J50F+aFqa1=P: y {g sb=R{?\s3h= CFJ-#@%,Vxc'֓cmV+]wϕ|h}POݹ3ژ| 6q.6&<[#C8d˅7'%ϻ-e6~wU_?ucSA{C|* `2Bҽ$ǔ`=)7SrE]ջ|5.!0P+R"*=ӏkfʹă?pnňzٜxzi p^Su(In0T$_Gy;Zyk uDy'U@+JC" @uYVL ^{gٹۧo{W?7wSO-egV-#*_+w(đ1 U@61{W*IV+DXĈ P) [R`TrއaJ)R4"4FR&-(pawEagYαgfqy7nم궙{&i$Z[ Jm'Uލ5˝ȥ55&/ hcLun|{HYYlfRWz0ܷ@&!?] ^F$ϧl9#\e^RL.K5۹ Yfx^[뼨zѯKVU֝~҅A,ePf*T}yyVZ+I7Q1vݮ0000*a!G"q~e!]"yn&fI sO]U*/;m;R1Z Ȋ<˲,D"ZZcE,y^ajTk VJ왓Fa|o( JZYZɧo6;|\[m6AS'gfuy#hw箷 Sg~Ms'yvڵ=i|PdetT@WRbA..#K+gOw;KR±(=Gkg^+orδHS\*V'ʔ1)Ee}[k^@sf,V*0 /)^[XZ8095 ,$HԱg}i$("9^ ¸V Ȳ4I@:fVX 0AiOPH2z⩧+h1N"|f-{Aҁ&EJ+RItQi4ZZW:C sVڝ4ϭs Iԫ;g޾ml"n5AYZX8vG8gY\lm^X:kcA)MÖYi@+(a% I$=ܻӿ6+u 0!h0#EἳnvYa&YEPiWa ]X}NGjw4F7x eEH'-قp,b[)q l mWϛͧak(=y2+Rٷwa37qS}GZ^(j#¡` 0} ơ tkiy•L9߻}_|N>ˏkruq=8irjTY^HB׿mEr1'zɣx-c,ZkM^)=+@)}uCCBwI:#g6OP.5>5{#<iٷ{_v݄pt:Uh8ϕZeFFyamel 4k4w.8@h$yk"ynERhcsYeY ʞRY¨Wya[HfE!sr^V;E7)&kRfUpʶW XZ[MBNTtWGGNvyܶ\on̝FtXںVʺJ23RAh4uR0]k'޶}ggOgyr (&M$KiulK;kIؘzVXW8Ս'_kR)ŅGL$TdkHTjeM(-ÍøLo2\𼾧MȦΧF2`pi\ sO~5ד9o~G8lt}% LDә:;=_Fgܹv;2Fsf򎉩m;~zmm5-2)Bú`EX3nilR]^p[,+J)H+Qس(/đA) O>ZmxOlG 3ydƨMuu . wq p]mcMV7?n1' 8 sVg5vtWO-) ']}e{4I$K o]?S\=k|lN&nٜkX<䬄_|g۝xY4 hv I΍+BڨTD{iwR(ZGDYaJjҕբ,J#I k)A*(M$ ! @F$I$%rLAզLTqŤ][[đ]W4a"VyGٹ=V+ٕOݹ9LX\(G&hf>vO]>),#'>/k[i8Djeɧ>'WZRJ2=9O_jK!p[xۗ`lL 4.K.y[7$ ?N^ .kicg7|۶M0dwZ_6@!Gʄ!ϋ<Ʉ9vZʍR!(sctE@)B TeK+$heuerbV:*ժs.DY1^&F=GeF"71;߬{~衛o{MFPCW_'[D1;gxs+p5mEQ5 >SH/ˮfjLB*\ 8a" Dh8`OBB Χ} g,e벌AOܯvQFHwtҕg?*.Cok06  pn@"jE"g =8;_ -π\AJ#+,-{+hcT̅1Ȏs[h R;EDXdxkC q3'?g0$?n92\yfaEJk&K``"A8,SiZuC)# Ah"- kR֩s+AkZ!db (0=Z*(ULH2%N2WJs7D3z u{m "1&.m7Pyt:yAa{Qe-6m2cX:__>ez0nz N%`PHI1V}RL|:5/!oY4Hh ڠ@\K3\XeؠeP7mc6la (Ի\w:0W'g󂜛Rʴ+S;"h%C1Q7_?~;^wO6 (LJX*gO>ྙ]{ngأofi (+ OU<9أNgsS&0zW00J+EEZ1t9j9.HZyv hx ŌB,Ge<+CZ3)`6w9F&L5'+F5lbaŕV*P ={EQwžOϝZ&AnY] / ˅?v<胝4u( G˦E.{՞mNߡ' 0!*CՂ#ؘc^ 3sL|Kq^Y 7 n䑝?lYkM^]q&sMsII] ʟ./RsMp鲼$ ? pbC/T/H^=͟_uhfo/yF3C$NCFMx^qf݊eD榛oȲw|˲ G^N^8H FX<6&H8s)|7!T*nE,jRҔϽpPB 9<;N)I cɑ_nVa\8Iy~dķbv8}dgiZoў)5יiNmkU6ʣ&dҁXxP 0A)}b>iBD@)8?g>t6sK=W]'{!j=FQ*]ievyzWXvYȝ(fNt;Yjc{T~//Ͽ[]qU%ent=oH{KKOYY!JBcaҮU,5Wש*Kwb= !{S`ŜJp!ηZn7F/!w:K{8LË$;Y4S>‚P6! k`3Yl2+:/w_JeCgzI@W6TD%76) \Ta:,<\.vq/l}du -HMX0pQPzzyP"WO|o->ٳs6[T"OE *9~Sݻoy\uk`O xij> ݃{v/YӘpJa; ڕݛ ӏbN%ApۊJPġ-h0wokE  g`xڔO >[2Æ)L #2,5|aIa ^e^ 襋Ϙpi\PC޸C \`k-'Q`$!6jmҋ gd"hVqYPY@ĕJoz%xMp W#E4(D&@T^1s5n\rH@TgAdR+˻ffZ-T!=(Ryj)RVɽJM+/?46 ٳ=\%ȹ ;wٳ;kmW_uIٵ,` x"ۦgvJ-IDDaxҺL}?3b,;uҀk>G|h6}Vf,6=nWD8`$y̠ĸg>s+2StW]q=ӵ/\A{E6"Ā dvnBdY|sfLD"EP@b#8C+\mNq|CG=-YWGRʞx4R_-6>1mʪKwB33f zeАJ:&AwH XR`"0&4Iyv,[d9O53#ҁBƕ@xa!  RB"(R ,A< $\{ K"m++FR H@ 3 :ijxDZ#ATɣaϞ=Nހ Y N7}Qs>?1diI;>t$ ד;mllt)< ׇ(E>15!A@8c p#ĥssE3czd|ȣw'b-őBe49DN%RԈ<eb+BHHH*cD( .6)lQ2 Z^kL4U*5jWQ5Zh֊QzRWfK%yDbt%G@KPbrr?|qD?9/#_^Z\8{塃sOgK+Z3l^YqEEr9 W"GQYC;(P4_mM= ]H)q&&m;z mH!%oФ ӥ}i\eեS񏊙\4n'CęV‹|;2i Ap jY9iT7n}/{(4y_;>33[n˲{f06{u0BIBH!@( -{r*ʕݝNl093ciin&eւ!Z5׾k][G'Ӵi %eҲsN8-/+ֱ}ypH Ы_sa DIw]/d‚.]ڗRAos2 90Lfm aFPJkM BKNذrO ,8Wy("WTs޸82M'Yw0HwĔ`HjO )ιM德b_ 1?UWC*uEG7~>z/k6,OlҩܰlJ^cc0c76"_t`V- CBh2$ YzKg咯-]vMJ1O[GsaE430'b.ӝ K0&$Ke )/fT_]3z`NORJJ_IIDKfA*\kRZ3,;JJUXXgDTPlƗ*2-!8Kz<ߗҕ\F4oKB8!0? -bmYS>c$I+JbJoUQWȈR*(̓zTssUSW7ҥ֤H(+4)bTRIΐ`2!Mg|>hJ7I{\qo$hzv۷Я O5I;]`sjvޜX)+\1!S*/k Ϝnd#6`*Mxk~ڲ6"DY̊0˪V12?̊"͕9Ŀm4&folmiyRӑIw[nB }5۸|qmN:}]Z0Sqm%8v% bXEk<_&SMu թd*HljfӺbQn\|*1:PJ 25gҲ0H4~\ϴ t"Fݜ .9t܀}4cD'SJJ)}FiK7즦jYSFܴ7D8.))}u=M5&DO>y.\˔f+Sh)I8:w =ZiLD,9c]0k^2V-7[PYdc! Rw7׆)H I""O3ߕJrR<幜s2m_ Mq$R&9c6Sh82^ϓkL6(gM$әԓ\qi k=2jʇ-`bFSVy0FuxqtV e#QM0ASpC&JANl뼲çx Ͳw}X`Z5jbL3LV֚;ӏ'?U[/7KK۩uEVYln*SyQ1's}mbzvuc1zh>s,) ,۱ 1j`5k#>W>}K ah_j׾ݘÿzsBH~YY(OxBeiiٖrŽe`0 ΃Vs.Jw0SQ'ԢJ+5#R-bwevr2ƵRRi+-H}EZsRk!8h`R*Bln߱K~}yɒ ѡ4/N^5Υ%V֥H]ە 6z'Mc)v~aI%I&ɲT CӳhH2ue[V~fJ ஔ JgnjV9bJk:tFa6=ns$"2Mtyy}_oYJ)v#99~ko&qu[7NLj͈a3w'h"L)87 SimFǎM!ap"|_֦ah|!Ip8[Z"I^ЮgiŔ S8pa~ SpΙ544x [34 &$fS [6U͞;eaauk^"x<9'z17֔C)Θ}aXAs̐ ;au|3\taִb%^)9fL0ٴt "N"'H)uPY3ҕMTJ1i87S\"U:'@i5 E ƃ%2F1nZ̰&!,J%֭^ID,qw$';'SXiaVZz%IH-D[d%"홖=2Sܩz ZsF$"D 2bĤB 'eEX((IږWzDRz\ kJi㩌i ZKRҕRJ}鹮HAP6Ϻl KɄJG$/bQJx"<|WRkYpCxccC͎]DX$bklW3WJ"41Ip҂*eaBكkT8S*h5Rڗ%qA&JjƔJ*v%Jyf2's JڸɞU+jUemeRd_kWzW֭^nPULejjK2Y'$F4xjjDU{ fL!/ЖqmV&nW7e>P3R-(xS"Xea^NJkq\~qowƶ-v]fVdҵ繠scH2aA*wiYi;(n`I~;oc^1WE6O-..ZhjÕ5cvD2fլMmTkU '[d/{#0ʾ-1[Nekmmm"lm#;Ԯ Z}?U^.]7o3}˔мN[bQhl#/mD{o# n{|'hpmVo gr8'wČ}=n5l %!(29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29 @ (29`%ݖZ)ZkwY< ^O=Vl৆m`kR]ts!HN)%TJl;Aȱ]G100ocWbsnh~Zndo }w,a-G AI)} V#yA+B@M@ eܖ_ ,Ei=gG14C ||v]xSO;ϸgqok'}Τ#pɆuW3<}ٿYa^ F_Ph֑ܐh2gћ* E;+&^3 x1kCCRVD$s7jXKpSWlu==O;_1yYRuL8~Ҥ35jT-y}퐓_Tڳwޭ(?f[.ッ鿜9dϚqƈo*W}5gu\M]ذsgsYg轥6Λ2ӡ'~82y}Ւ~s酿bu"ižd؅~pKmNv-I)34M4MC:fʘ}oy93:)wͤ~g"کsk87`0Mğnt!{7~mB W}[GZ8ds>@])~Xd쩽' .;.]ÎܺM VtGw>>"Ms~Z a?_w׋{r N36{?\^TT s)zlA{Gߏ<_YU 9z M{qU>}mSN};mZbf_v/I/斤`'|]٫w?믿—䐉]qg~Ea+Θ Db\9c̓]0̫nҠ.nN?oM;S//f~yuc5gW.oz/ { )=:`!12nR;7)2]uMܩ5ј al5S_{~6lWJ ,š5kuϾ)rz .:`La,+ًRoڡaL_ju+.Yt]ôJ;{駝pc^'.OtYxxl#&%ٜŮ+-;4lAW^e;/ꏎ&%'N?ؾd\;-9\q o7=9):EÀ\'_U N;ke_v~{w9yLf*vqfӻ]dtUN<)W/\PQQQQ1>33/]xɣ-0ۺN l &#]:vwz{/`޼Y/K=^[9w֬YX뇜XT&Tn=q:"8lĨѣF5j{QZĿzY_U,[ݽG9U_7k֬Y+Vo:rٳ75&HIwy - rv=j֭|է_S]|D>#on~˫e6 @H)❙ʘ/_|'T_Tr)8k?k0ܷ_la>rIGɧ /{!cIkW,U1kVŜT sɜ͋{˻ t˯;/>pMjpe[~zݲn#Ͽ𲓧\Խ nfYf͞[s****̛טLw~3+iIicǍ?o-L9bA#:%R:Y~ÑH߁CO:d 'J"Vg=G滖W68^{q1/~8+"c_ڔC2:}#{^>[כz/^]h>g/;wa'q]i fS "{}"J%̙p;}Z" tlϔ<;s.ytvݿ-#w+S_Zݪ/;p-0lZb֬YVm""?El/)?nD+hJJ r3oӢ1C{D#N~ _JjI#p4DfA7]vh2RuF n?qW/{`h,/-yKϋt狕 ZneP3Ͼk^obW5hO50 |Bk,9[4)( Zn0d>3w ,X`E>_md[7U=oHs&֋?}tPY,8}'>N(4سZkk=kq,.5i;~K-;&wv< Gyzí|W{ 93 7*Mev8=3O8+,~ZCu"E%C>_QtÅ9όT:=Q^_Kdm{iKk} g+)厼2kԡ0vBYؓZ_q8g^ZпK$gGJo'ZKgj'wU>t򜼼X~! hqP8bEؗM?_^契X[OWi~u 6G_[_`WڗĢNQ'nLiן5mT(bM7[#Xy ~Dcih\>K lj U{s+֛W|:]I$+uZ88ݰ]ScHӫ 7ǞrZ>ZVˋ -\` Λє=z;H^#nV+|8???/ZehgObL=;vıg.?gWhy?鞣X~y>U냺&t}k![|o2(Dbu4ϻ?aҹDC)7'~lMĮ!ݯ.xsƩorΕE܋ߜf oEK5&BhqNu5 v?+ϼ { O~a휳./(ck֒}=dطt)7E&PiQ]z_+MY_1m=;EJ;8J?׶4qFDu7 t&>P~ϱ{wvu Z*e`g}ܵd2CDj*GѳC__JFyKlqJJcE+Kw>wԦ7Vaٝ ٢J-ZKL}{uHha=)%%Ȏ9CjE/N1F1ڜʊ(qAinZ|W8Ƈ!={n0AĈ)J62s+.)tM7}o_ꂢX˜۞vGň+iM;zLurz,ä}7Lk:R|ݼ߫LYAGe$:WW?.=;xO/-sDHzT}֨,Z:N>n΃nܭw0{O3{).{7d}Xn"v492Qw~cܣ-3>Ա"ZxcڟoZxsؑacyJq}Ȏml-@9ƪJiy`D3 vln?] N[;ֵw1;!"Ғzj>%Rvt :cP.mS%!~+|3N?阞]L.z7ٷM8\onW8d^~1OߣK8d3fz~=wBA1GLH)_ОS=cٵSᖯݡ_J]rG߯ސ{c˶:v~y{p˳hڑǴ +ӶC9S&q_X6-EQ5d[n.]:ѵ08N(dwwayG-/$jLweW]wSXZ>t}{xݗnNxD-Co]sNz⥻K'N;睷#c?ݛ9|czpqu9N:ģ v8c'_';T{WanckǝtʉG/q8c#EVpV~YAJm^{G_b%)IA ̠yhk'-@X!e}J)wH flܾtU*Xcc7vqFxܾuSˋ:x /<_zvZ=u)3KIs< .n#q zjEc^%8T#"n卟0Ge-m  [﩯,`^r?>i{V ztRm#q:|u/Y?hĐ-{:/n/ҩMn^k|GNj_t͐w37 Þ0-R"+~677|ʽO־Q"Vl ca9-=^>hDȢ_rʙgW'ل-W{_zS)x|^(=0#ŅAD̻c?kUzႫ>]&"',(ng]<堩a{Z>''kSѽS~~CRV@DNd\/?p_’UcȔJMÇ;{ⵛ6.ؓڤat0 ~eͺ~TWܳK‡럏>az@2cj9[u<{Fى/0 4!mO<r"G|QB\|yx|/~?,d&䞔r7ٻ*@ Jy&5 cA]7%@Pv wG{]iI#w_yoʺȉDK;vzN?0B`wSFHs8&;?7`w H{Ϙk1M,i~ng>[8pXBavq1y٥j |9A8fEdAؽ0O7/o^<7N\Oc&'f[Xt-,:&x?ձנ qy~Yѓ/s-^JWnA%y͟|^ѩne;0{~b#.}Gn۾Wb.)_&e{ձ{;"4EP*15X4{1%Obhb޻.e) 6. c=?{9gN3X[KQ6?+/m{+JYMtTz@ْCl;F克bZnogagKfNaGV=zň?IUWd)Þ,#AdoZt!^W#7bx Y-fh;ژd_zDꠅJx{Mb;[ ȵUVD,ڻ"hkzZ\;QKXp3&$h돍PY2s ?c& l8}[*3Ii ͈&A/_AhY6c[ P; O7P;BQ[qy1+_a4f 7W?fRSSM^ MS8V5g,';S3 %+-3;fG1O8d_`O]sȞ[v״ Ee-5! ܯ7֕@뛎~L/2rY@@Y~f|S.G]KoI֦vJ3{٦#]OZ9Ə1"RU#P9НٿB7q^o^ϔM81) :k5%ُbRZ;#-/^LlBAY 2mzΚ̦@q^ o?/ZĒ*Z HQc EӝbKjI20_4J?ZJpQBdrz^cmpUa+3.5իQs K=ѺRPQƘ@ʈ4n@p|9Z'u<4 D/Rr"Le2+ihF&ri,xGlԲ##k!]yiV_`.*& l+ӜUFQ1qtp1AVWZܽ))Cv=u7WUQT"ged H[S͈':1HEl7ʪv:98[[M@,39)%1r,/S@`~8Z^^~ߞڷ8A(%'dvV5j*ʋsZ¬  5Gڌ6QI<[~lIR[\UEL։/hlGg7w(`*@ EI$޿"$G(UۛGD>|IGҷwL R!+~Tπ'|}vKB9S{; B ;xBas1yrX# o^ ޕ]×OB7B4K'>V١]>BXsW Yo,L+*9w'Ҥ?^lS=޵ +P?^879O$!۹vGV}_}eګBpeO3l:`;+(22LgUp;߽֢ۙ6crNvݑ%߫}Ӌtí+'W#(Om?yM=/iž"_''R[EFPкfY+7j!?̢5Ky|| Xu'r2V9|i¨\(XZ!&D8Ұ#|1!_gx/ ק}q[K]/wk nޒKwe7n)kC[+2Ͷڼ+VMv5.Yŝ$Y݆8^!$%0h}Z\!$(_DM_TI$epO׾_~nU~CD\ʋZ<4\.nA/N5W$zwdyiү~+4B6-н{ B=}'y W ¶][n'F4ߪ7З+6[])N~vmgćS?]'l*[V.6- XS' y~ދ%?BIm /ɵO~y+Vg~5 niŽƼkqE "xgJzZڳ?>DyU%ir?!K+^PB+]fOǀRvOLB+/Y1^n}rb,[V!+]}3P6'6 GHܱg[1p3ǿ!ᝫ~o8$6ma&…n-YsK_\д#l&ٓ(!):c?D^a [7Es[*SVBXA)Lpl_ޑ"aUK>,'?;܎Q¬WWn8.̰0!\՛յKkGImAk7>t`iiޱqݤ!{UTI'%)NU,hgrk?u㥛 r7m .hf>^zmVl8 P2  :ہ;, h3gz%Y]F|2{~snf7_~EQh"V} *:\fҙcJle$p8s|jӤ܇9"=2Q-T tc߹eۓ#m5펦O')i9e5N\Rl7[8qQ 4Rk>b8@/w&Cb&) &XCEA9\8c ڹC-蘯+x!&8: *-o{{{K^ z.Z9g<5D\:!p/'fYmUm r7~ l'9,)lh%b!z9 4^zN'm1}de{(7X%@(BIvߦKheIBܡHC FM[.G').cUd͘<:l,5]c#Q,{ڵEΟW)t.qcX9\eptMGkJZM5GNMuBq;H MQoPq/ySdjF^Ii&Bhsw) #K:7jݖ|gHm7"7y#h?'YXbuӄ4REZƪkd2bJj`F'BWYVsVu ?ދq_BQTTEhؾ6ABIcĐމNPъz8A.뱰Nl6` 3;*[ t2W_3p4xX eFx8QBw2vV/\"O@X6o޻D N"]ljk':zLBSR25]S[;)n2fuVVd{Κkү͓[pXE՛S X}Zk+kކ1)d4P &$@ralU32cbQ3bTk[+{Q:1m=M{{>L fO[p/N.k\8+SP(S\_C$\L2pa[{:$-QvR4({O _#tTfZEr U" S)Cm&K pM89 !𬣇;l:}R[k$'$FjЄݤAΦ(2 r*[:ĢNaJP0HʢvRtዂ~"z<`cHQdKY/.Ox݄b- (Io|4l-AcZ/yBSVW4'M,WCYM,OP>y,Z^Q6MdTRa]\KBϞd>}4VA_A%g.^t|ݧ,jjnL)X{ynUH>OIL+LyX .;l!AclX8ch+HB!td`pFd0XLw!hQ 3n/V1Pߴ~Nӕ/LGiF_yH!}N8]\Dᣔ[/e=3*T4J%jT 7_wV]a nrkGփJ\4Mf1kZϑXjӕ-6_8d\@ 8щ aZ@7Wm Zi5o^t9tQ{k7͒7k"*,FuQ~iϔcgP;E:v<0^pȚЭNɏZ2jF/~dr[맪e}ȡgO(L BD= YeqYuz4uN *-\c>ћ:?臋s:mBRtxv7?xrY'O~f*kLe5vmԻGo۾izizI >h9~+ךp˝*@ Pev`.o(1ne8KNa8NB0HB~bb?{ #B49>vPڳ4GP:::zܘ*k )Y1 c%>ib\~=衍ZA+m^,tpHG$09ZtrnJJ$:w76u󛢣2 Y S N,̌zZС1LNG_2oʭ { P"8UI9 Ymey8?8vIV?EfXowFBl1W I¨NYX0m1}][ˡ&ft EPL?spOIVSY{|0g*m 'g9H8hҥ>fz =>EujJ(IzvI3.8#iXP$S.[D:OX"AD-hiimeeed9sFJζl*ʡpcce|s}ƪm>}Ѿtyr{o>Y'dןoGv(jp]( d|FRbk:u}] H|7>] GkS6[Lcmv:9N8Ae1 3aYFjUr7aت N Rs}׵פ{ ""бYƢYj6ٱilϩvL:U]Z02/xW GtõҌe7>k'Θ7q 9M;#|zH'p3^Rq|`Ԙ" AB]k+$VڲؔY~S3AP S0 yߜssw?4iBAW3'II$4*KUM0:e03t?))@'gmXip0г,912&>Yo'%='k)yZS1vfW X:YX%KWL4jmOm5d`e0 L٩3~J?Cs [7a\qt(}[a.=OKH]~C僸"w 4-ܵa K=~ɰh ]jo7w+,qQ”ج^JU4ŤbHBڷj%t)<[(313R&')9ֈj K [jw{KpTyﶅ0[j"H HXuYqBjϿ6TgR6>h*O-ku|OkhubӍіZbE\yIV4dG$T>REAq0lވJlixwSf% +P$\^78z M~2@^邦}A% 0]$(`5*D7#HQȟ]ycD{G |##w|fy]aE80w٥ozoxzD҈b7$U^4 6 ,(.Ul; jM1lcd4"8Zavf:(ayQ6TIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/quiply-employee-communications-app/index.md000066400000000000000000000024631507671574500323600ustar00rootroot00000000000000--- title: Quiply Employee Communications App date: 2018-02-13 description: '"It became immediately clear that we would use Hugo going forward as it compiles super-fast, is intuitive to use, and offers all the features we need."' siteURL: https://www.quiply.com byline: "[Sebastian Schirmer](mailto:sebastian.schirmer@quiply.com), Quiply Co-Founder" --- With the launch of our Employee Communications app Quiply we created a very simple and static one-page website to showcase our product. As our customer base and demand for marketing and communication started to grow, we needed a solution to easily grow and extend the contents of our web presence. As we do not have the need to serve dynamic content, we decided to use a static site generator. Amongst a couple of others, we tried Hugo and it became immediately clear that we'd use Hugo going forward as it compiles super-fast, is intuitive to use and offers all the features we need. Our website which we launched a couple of weeks ago is still growing and new content is being added constantly. By using Hugo, this can be easily done by content authors writing Markdown files without always having to touch HTML or CSS code. It is available in German only for the time being, an English version is in the works. Huge thanks to everyone involved in making Hugo a success. gohugoio-hugo-6abdaca/docs/content/en/showcase/tomango/000077500000000000000000000000001507671574500234225ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/tomango/bio.md000066400000000000000000000003421507671574500245140ustar00rootroot00000000000000We help ambitious businesses grow by getting more of the customers they want. Our new site runs quickly, anywhere in the world, regardless of internet connectivity. The site was built by [Tomango](https://www.tomango.co.uk) gohugoio-hugo-6abdaca/docs/content/en/showcase/tomango/featured.png000066400000000000000000004277501507671574500257460ustar00rootroot00000000000000PNG  IHDR L pHYs  ~ IDATx pV vl;{LNimm:\F$NAEQ9TP@rp3}ȥn>IIIִֶ; .ճtnW p@uX=:_za~a\{rj^Qh50W8G 3۹oUvy ߮u[k2q{ʧqֲM; ѿC7p*|t]tfg ׯmyA/[$n%x/5"]9sƪعvWd7o^ȇ?سڊ+l١̚5˾oAP/S5mvefsCOXn^B/l-0 =39{ߓB`Mzejҿswz tNg: F!aύG}=n |rۼe[6Ym=1xxݦ/<*1p[ƌsשtiດ[2ZSU[YzҴEk*eZ{@{n:;xt#ۻw͟?6lښ;f/ Jyyzc}ۿ-Ԫ;?ی3l_ѣORB?i+W^f9rg…r-6ew?~Al2[z>|VV6/_n[믿P^F{&W=]?l/4MPGBTO>9nS_VDz;t}t=5` +T32pvn=v!l#}^g{>kn{w]`u6wBk8 ӧmǎ].p3}[ l󖭖C==C؜ wluq!ϹXa.ːg\Oz ݧ6W/c'Sْb;w;:v*&Njy˦\{ӷ͞;ߎ?BNϔi:?'p3]E $pYzGk2\3Ѷ?NB+++7|:tZhk"m} Ms!xMArtTզ7ވ؝-/ G̙{qѤԩS={&L`#jtOJ&Zf*jWOpUzk3yveS fƛ3l}$}\Bg]=&{>ǝ&UǬC\^?w9.כ3ޱX,I x7Ъrg>Mhn ]VML7=?fm6"[߻(p·Y?X˭?DvJ.;vp]u6W=N 4·sg7pW BW^anj3gφߟ|Iwg}6tx̙3/ ?3/X=gqMk2~N&MXft}pԼ;%%ŝ`t7]~gɡ)\פëvv#W_ {)w 6p5zW1\ONIc*nƃfVqS O7͚=M^ܹ;+UՊק}Gs\MOf?OaM gwNK!)#GB;nd+t4`[\%Km굁X?3@3q:=M/\6nd0˲_T)co{n}IQItagA.׸t|mWy;3/eea Ty_)F|v_pmpm4ph^]je~_dSeL^|E!86nܸ vu4jۡp û{:w#*IKoJpUd{r O::Ճ^5.[_a ۶s/&r;E^Ja3 ~59A2u7kBbˣX_^ׄv'r(=Gn_ U ܃ 磏)}U6T(VWaښ6l fZ-\\֙Cq^m6g|۸qSf{OP ={]!s#F`G&&Cgi_o/sM 5%*fW'ujB;~&*ewS)sVJx@]~ [fff w!~މ<;MkOapS4oӦ[xUAL-+p${x~17~yyqUe#jx4 Nʜ͛7 ?8)Ec& "v:3 wJ_fu EAB-[ImMkT{`#FB-[MkS-ӦQ<45JUB*\Wgp-N_k/f &>񴕗wڙPRFjwn޼ޝEuXM8x>3M߅ ںpng4тZܶ&w{VʄÔ7pC?okgϞ( b7q&w-Ԫ~CnzV1| ao޽{+\`H{at etz]pъapN']BcMk*<8q&p/۾}[ov&&HڪRٷ tW{]ZVn^( / M뿪Mٲe90dsvv;x谫ѿҫ\g.ˮnuM|w칡=t]w.kr"x(פG&W]gߘx;gـAC\nEŖ Z]W‹/ۦ[CSm^׻;'vt&-*K~ ,`Ip-Jt"2)))6}/ ݲe U ܋oW^y%3WS1cEwuׄ*Ow-#@_W=9%Nw^0zmBvօiH2#ۊJJ]|V뱾֩˗/h۶v:#΁P[9wu>t곏v;>~v;tux<#nʷqo+xD.S$t԰n;vbk!pW=JIIIWqֽ{w+(,-[S7l` ,p &ӝzfxnPSX{ [%[FV.oqw5;=9%z@"e鞙ä;w I4: ݛHDz:qW5NN,&;jK螜N w ^IIIN;w ~uZrjed&;@;wtQ/^n]Ko2st@_/ڄNw@"Bt:ӛ6;zZ& I^;=9%z@,I3Bw@ܡ{$7鞑z@2)t p7NN^;{]Kof p⯗IM;НNw@27t^Nw@|֫kX8eP/HX{rJ2;ݓ,I3Bw@"B)i˛@2t p7NN^;NlBw@ܓt p;tOJt@īnz(92t@ħI^;T@)$KoB;w =)%ZFV.HH89z@"eҚ4lBw@)it pH@z:q[5l¤;w ^uԱde tONBw@{DHJJFɩˇ @2)t p7lB w 2iM- pC;uHDڤ);xխ[6Jf p:uX4 t$f!ն;Ct:wqKJJFS,#Iw@ܓtg!U@BR$^F;'5N\>tO p=5);xխ[4j̤;@ ^u9_/C;@  0;PK$ݔd%[F;'R/HDްQ22;C$KMkj9LtojY|x7 p> IDAT~Ftu 7XtīN:^Nw@B:ݓt$"tOMkB;@ ^IIIְQed1o]ɩ@wJi(z2j&rw$p=%e,au:{<wj 6V{.zKUFvs6w*QN\vy6g;w;p5NoЈNw'۳GkwlWn7h̤;PSa{<<+)-B۴y9wjet]#6'Fc%V\RdK ض{!d&h&[;RTw*SҚyw-_MW k$to(2tޮ}G+]-ۊCwwto8za{N6oB3‚ѣٲK/ k%tפ{ƖC4ޡ-X"mBwwZtOm{C=lo6>ym˾ k0to82r0T:3DzuQcFڵkɓѣGm5ްQ Ea{;.TSrQW/C\Ó5hdms: dd⒢PྤV,SNyG!pep ݙta{2u%V̎?Xt ۵hs--[\W ݽezt5e,i.,/Ξ;k7mt FĉCt:p̈́:t UϜ=k7+"voؘIw\52:۲+"Nk}mJTt'pPtoB6l׷:ߜ1ssنCUe: DXH&kаeR/,ljgcǍŶo>mSBwBw9~8;Nt&pՄY6zX+.)rk;s挭PnK <R=u;нAd|0Cܰ=M3JJC{.f]ޡٳBwzet=ٞo&Nry0lviW~N I{7tѲM..#Gebt߰!jN &_W!bܼζ|EY(0?Qнdܹ3t?{mݶ5ib 52l_pEÇtiIZ}:Gt'pP-ژIw갽0z0t8^|a}Nz뭰@|ɩI;jY؞gS^}>S)CR;zƙ3tr!UwkЈIwԚ=[aW]fj;qg`~A+-^Hu׮ޡٳmV+\R@nNXV<3~]굫=S5ti龞@ oR/ˠeF`OpxqɗBukiСݷo;;tKɲ|x't?}V^^ByM-ZHU.I~_MS/OO}U+--أ{&};Oxw8x];;KS/s֠Qc t@a{6lҨaBwIwMYS%QNtAC̦^ѵle:t%_ؾ}$rнЅt+_ISNNG \N4R@԰mN[Bнw  tNtt`Nww%t߰ed mVQ(Kt'ppY]Cw&ݰ}kVr!DWgNG ˋlϞݞ0|}y^?W(W/яti ;ddl;a.ۙ3g{=C%.=zwtfHrQ XBw^>m֭uBjnYf;m}~3oQ_Μ=tQ{G{i碌:W\MŸ נefS/pNuBAhAw^?t<%_^dtV^Χ}8q:t%EꓧNZʲ{Qk=NwM{t_&r;;Z~oӁWI޾cW[RT1>q\U_/wgn7ӽ8NOO{MݻNS\92XH*>3>~X3t/__[/N(R:wYu!U]uk]8O tW{#"tR<7~([nyݪYvt{v8٣媞 [ֻ^f*;~8;+^~L\qa{ 'LZtRߠ[_̚k*LG ݣ]tWTN wo}:-d_ҥ%Gy'N!t_;wwtYhB;P#l&N%`ޡ'?t.^{}'K|n`ONr7} ˇYZu%KlϞVѣ^4N2T5gt<֕:-O~#̦^vdYn^'+*. ;vQW_'|Y/\Hϼ;uP/S>rN o%Y[:j[]pIq/p{Qw~#Aǭlw5vN&ڔzIi碌}MW,N{7,:.d{]mj ݵae֬]9龮|B ^T(W{yCto8*#zicv[o}q\Ԁ:8^y /.?q(t^gMu: ܁Z믷o=w 7`w~鰪׾5w.suOu7:̵0Aw;(ʯmw<7III5Veu֭կ~S]w+gz^p?'5N]sQur[L>$"lͳ'y붭vY}ΝBeixرc *t't?_/SrwY܁Znŋ[AaAT%%%֡CtW%˳[\\lO=TC2|6mzE7999VXX}?F{};XFFgTp=ܹs=;$uРA$<_;,Yb~;+ȑ#zϙ3v7hl̳6ƍ.u6l ֢U[>$=OZWu|z#G;ݏ}rw}ݺ_Qwix}@mJ=w.\h7(vm?43X,+8pu0`U;vO|Fռ[rmL*n?W8)sˬ(+Ϟ;g&O-3 d{8J7x~#~V ѣ{.kƒ5kָ+O^QF>qϨM6͏6}Kr93gzdl׮ :턫LN&p#loס6m #M+ްq礻]v.z~}2ICw'ݽwH۶mcoܸq̧-|޽{̧){uem/Rz A^o|Anw׆};@ u[kيK{V.߲u̦p{OW/sBwT5t\'pj;Î? |~*lKJ"V,NM?=ZЭIwJӧNyNt_c{Iԩ{7e!pjMkIMS+ٶm[́ӧ}lAB v tM p{,]^&2p[LS??Caa߬/X4a{NVRԻG݅уnu{5&(tw2%~> WO> W-t߲u w{tRwu*Y/t/PngΞ<{zv~l~կ_z÷7xt7o{)7QJN+0Wͷ-7}^Ӂɤo]-Jz pGdzܪWG?&,.Zg!/lh>ٲKȑþuV 5鮁{3}KV#m~zu{(t9YuS\BSz-)OM`z!C|b޿ p ܵ`sm A!oepmP#H[KfNȥ~~z8y)zk;lno'OvS P/[Vjǎa}oߤ]ޝ >^;t__/m.XvY\@mZ@{׮]&ihkŊhS .>@+hHN}8uk爮u]wIw_q/q=u 4 8|<~zzuݶۼc=R)Ç׾oɒ%O~NWρo$d^^͵޽{s=g&Lp=z~ׁ:}^]ugnc=Uy9qw]UwwРAֽ{w? Oj;u\{=F*mXZc*;7~ui:tV;cW[Ec뱥E4Jq>T*0n;wNs;tAELt>=vM-3w-Z\`^{} >ºu؅2jz^Bއ <ifo3-Xh ̲iߴQcY~OZqw(di{n$joS4RRR\i{]-Lu;v|/qa6vi۰aW^oב6pqwz[%%%vQfm6{lftv~m*"8ڡ`qVI(V@N9r$&i+<~=o3g8xx}eƌ{nuo9؞={/|mܸ פPMom۶m6+S;nO-8x3%;uIo֮]~SNu{[/碩*Kzm=YfB eoWd…À|O;=VVV滾Hp;|{k9wiYڑCvOi:^X/~]ח^;oߦv)333P_;.({kBe˖`;v^L?W> ˣlrϿYo( ݄Yv4y+/Cnǎ}fu}jM|sظ k6Xާ:mv Y:Go[,GvnTg;-~O}xNv1߶u*7|>ÇHBf55KԺBlä4sjn kҳ) Tc,KpӢtxk[A_G^~A&rƶ'NB#=btXʕg*o cYârpeieM5m9<)Ԏocz\j[!FigPaa]DQs=1]v'~7{~JT9-hٲe+Li~8/w,}z^(+p8m 6z|}Gת\HSIsu{]VצPz} =߽S.|>Y̌{3l 5k jV>Zז\MF$ߦ@?։I4KĦ516U_hr4ˤpDSBӱ~aSuwšTPh޼yվV@ZSGU.L8kt!vV1}72zTMW7P)((Z裏ڏ~#NJצq}O# ܣUzo^kt3U.U TABj*l[Ķ_;0_筂^p>{l_>A.rߦhuyݱiӎ}3.e}w|+}%t[^?Rӛؾ+܇QոTw۶} 6پe)WE矟6swly l;hTwbxW޹ $伷lBwM|yHv<ڻ_t]d҈n9|2;v,NUe囷lt߾coKg{ql{(t'pj)M7}}VOz\G>VI.ue޽U:]jo NQHy~Srݚu0gSK=4 ܵF;,4XXO5i?Z+lR-nZ*M$-v9P]Ӛ ;Map)pcF5VJ߸j=8_[w?~ŸKۿϚ4iN|WTm }}ynk6U 1;~[IRk9af͞mgϞM| ͏ByquW>_u᥄l]{V(<乸}iSOFχ ^o)ymln=z&t\K/M"n~Y =;ݷnt6{';݃2~2ܽg7@SZo+WL^u^ю]W~Z&6]nA}&,X9a_CĦkRw&5kܤt"^LnzhgCuwM5"z"[l(SRUw=nZc㵩>vB$nsEBXj]ٴGI2(qc}}aC痐{kajC3Ue =ߣ#~:{oT^;9|8A_F5V(ޛ[r׷94xhCelϙO?Rz7qrXSz}.ghI: ܁ZJ°ab F* ˽BBZ0kUPU;UeZ"|b0I7iW/=4cpOԦ ڤXU޺u)PM6EŭTuSH"PO#\ӦM-//M2ѩ)c/peѺm/B:#mU0*EĪjoʬ[΅9cY4Ub8ET: ձS1N<]/U64O=_ukSݒq4!,u10zh>D6Uh G{>UksU~ U:P}{Nޟ瀪^G5R:޿-xNƍ#_ӎOK{sU7Kۮ߬X5q&X=vB[56oB OX=lΫ|+tyU-6oiO}nhQС>K1>O;s:8䀋<>J]֕Q7m➯=.,* ;8ŗF>֭_oGh=޽{~wߥEXrxMoL |6=0s7]VKc ty R=/Aߩ{G)*0~O0og͚ev #'֯ykBNH}C;5uk/Ѣxj~N4L YVw^ߢ}E4]TR]j3MVѴv#o߾U #~緣/[oi~>VN.]VfO)Tw-|뮻<Zi(ԁ5T;]S |9m /䵈ok2/T~kVΝlr{X_35eX϶Y-y겲U>.0v得C߰ԭB߳W쩯NsB*6Yl|w3թxZM; <"X|St:/}zb]h7m ݃^2~G8I?#v1~^gxS;׭[[/awSP[Sb^{Z!d6чv_{>kC^"-탿WK{-ک>ےPOW>k; Q]Epw~m|-[>G X@D;k[o H筰\Ʋ)pzy.5pכXv?CnJ+=ps5Xox[c~[wz^`tvTEr)'U?N!)S|OKu;?.wo{,C/\Wk:pW7v]تUA~6i1^̵&[&Ӆ^ۆ܂^5!:]l.oFICtAoW?b}=~-T`G|he1ukt,^tg㕫VNrF^Q&uT^O50Q~&>j;m~]ň;]b _oLi\* MO%{Q(Wj2pWm=ڤצ u;i#ԪA1 WQ}Ni,G46v؋`*@{ݕon+=pСp7è;_*YVvm ^3W^etcLoJ-\ig 7R#ثV:j2pWwG.z`oSH fMp|ighC#.)t5fs{ͱnB_g =ǽMQ2s]Y;CaYQ|yؖjb~-[AC] .WBM,~~[Xk`և67BU@|ܗo42~.ub^# {M`Η;z&۳\%ߚC]_ر G9 ʕe-}%t?p@Be}'pj9MiM!N4B( iwqGīyȑB3 -C g{mk†}bSdP x7A0g-1zKP6{У6c<`@ڷ8(ǟ]Gwf'wU;и^ ѣǬ~fcG0 6-RT*dSn^ABwRྨݷWt(tweYHw,tk2([o]R<3 s @[XseZ'gp5^W?{'A@A|<} }3̙̿;>*flN£ rNXM!5@Mkݗo7-8XiG⾲C* BkᡇjNEmq3Zz +ʩs* A0=w TgE q-6llnh,} !;VVVڱb;ҷ_>fT6;Zo޲ՂՕ~\S%.d1zl+6"AsF@2бXyls=cV}Cy}98N1E%uGƺo_[6H b3V66m@GVT*թާ ,!0+4='ӝi١岧A?Owgx$Xe/"]J$+X? \Q`; AS/Yhn ~}pmЌ_Z=0׿pƊ)1Æ =sZOeߌ;69U:xrmsu֥Kv;1)k7jaWJ۷oY9Bi`^;IL7&{\Gm IrO?_uLwF1No@Zܷlٚ@1[d aJJZ:i"@6loFvo|! 2=o4DOBYbw^ZnOϏC@}붭b)pW:.O[따FSW @ >9JYzLNXer:u6mZF6vรw-%8T!0x߷;Up7 eeeu%P4 -X9w;FI>٧:pwdOE2;:pdz\*J)+]+)݌͒k菨ŋ<7|i}׿U,ݍZ4st{(ۯ_?[t{|R հ:p\w_M8 p񲼢Ҽ?;5%K̸ )r43ovGwmMڭgRP?o^~52Įm۶ޙ3o1ظPUG`_R31Gk^|Gޣjl6~Cx_msSBT*) nr ںpK ]z=^&.9ϢGlM/{7R .S]옏 {~Aٹ}AgwW&X0mdd32 ƚCfٵN6p| LkCkw%e_Xy!5WJᴕ+WڀP;l[gqw%.?ڵk6Cf^X)|֭6yj'˖e}{wm \Z;;sHs?6{-Uƛ(ESu:'[o5&L|Slj.fO:v¤1->\]nϘzd?nl&yy͋/j}oYSUmπ˯`c`Kߎ;L}!/ot=(`;H ^:dpm>}{6pgg>{V-=7m@{uU*Jձ3 {Y޳g)*.tWUW9Q^E+AҲR7|$ϿlܴO=΅${Ǥ] ڹ2A zLs"5|.,}i40ܱ%`0wSO&+&s=)/KRS@BҶr(+poQW_}ť|~N%%%^>D<I2K._>d1EXpOw& ƍkUN=_~eq/R$u* ɬ_WW'~/%W^} ,6!G 8 ] pOkCsӭcSA.X],}w;D[a?WfY|}y޺)k`i[K7rWT ¢s4]羞:x)?Kߛ Ow!P;.ؗD]@?~s R&&0W1{&u&(AjFgZ86`$zm?M~^vm wԏw#CAJ_{&Ymܹ'\>!!<2w+T_΁OبR<;<푱/Hgs֑c;0/>TҪÇ3<&OW^cJ9>cE0voqMB5fD[3 %/$>ʲ&CG& 0' {P}-]ͽ?` ǥ,;KW_̓{H²-} d3ad JT*U'l= a Cl7ݵke{}vSXT1 }PNݖLw[]@!J@qixG@Q $_6ەLD95]};$>}1o8p׾U g7GdK~}X(eK2`[j ~ܹoKå~d\Icƌ dQ l\+" 91E[ I\߷>\`Еpa(M9|򹧥 jУ2`HnصN6|2(?ǞLǞxLg{&Z(HxuKهl6ACFjdK+,v/?wY%g`6©֭w>~Mw&}Oh_?S1[^^<ܼ| |(\]ml}JR%Ks*1=3b!U'pS\\<^TFree$OwFI U$॔l4im T.TIkz!s9d#cdM]`:@r|%"Ã.YߑEZ֭[g3(]ε,i<ٳ r:;;[_MmÆ k׮@7F@)o+V۠skw[o%$5*Ræ,>i(]xI}X=Xp5Q{;(pZH[waaǢL 2K"AAơd .z[*D-e|@xFiLJf+(K̺b!ڠ[lKǎk~&ZKpl$ gnq.ڿB.  %phW6oI K4ȑ#=Gp~S*')ǂlg1 (2$AFED{,pg\SHq[}}00ʅ*D;;&`I'|z0}'E;2%x,D'ABw n4?obcAiYyha}m3y=hr݊1h;&(ϟ|Yd0/*^Y+!#o|`!|>n]bqZ: o7nÏ> =ʽӼwl+g)7x7-G®oh(RT۱{ϵ`87/Ǭ[NUT;xݛejEtwAw>;$Ow{t?466۶ɅTQRu0a,t_(ϟ?a0d"SO}#FXOa,gAG謳ܐ9|p[qJCz'Vcc%xJw@ra2kx~3V݉ oTV:dqr7~?w`;mX4R Fo!(ƽxٴiDj0'sRd{({kAMu5^|=/82pO"%/Ђ37ϿY;e?nz&KǞ{\d=~3޻ bF`ۥLySxxK73fv9SRGe:-@Rd9eNh/*UӟgcEH%}F&.̶&`R ES5tP [qNy晤L[T`W^isOX!d`%]ѷ*p8|QV$p'K$6)ܚ k:kԚaԟ`N0ΧZp-#>5KR(9Ä)#sv#V]\/+-{+⿷=wV܁؞46k{}fq6)|oAL^~8pP2'/ ^[U]kayq=sB],f;uz [n=C뾟23ik6{9y֮59ysQӁ=CJRu"dYP87/zG2;vtow>xYCn E]=s{/EEbr*U< oA $fy ےhdIJ>S}ޞ;xJ\P  7n(F}:N!UQ3B 2}w2YzCjdpg僯|kwDQTçq?b$Cz"V'%%%;j·a{沋p R^,銄Ţ- 쁤ʼn.c\kѣGQ=ȼ8iٺu[^wԢzQwL0[moE{XTn3Κ=7iSo$+U؎}L=M`ңW?!ߚmERT*UggրAî];C6}&BU螓m/Cz{kp\/,.te(b*EʐL|m6*UgѾ+.K}!FNNw|,d6}h' YFt*4Zkiذaix_~eo+vNj|#;>*`V݄\2}u4p2}aFp?ьQ;xԨQ } !w& O~ie錱{%\"p}xg1с{d'}h544Zw&MnlٚsƸL"z9Ƭ `b +z~ъ<{yYփ=w7Yˌ4E?nŊ,{\aǭRT#/wl'Awӿ@w̱&{t=y7^&҅]n33ݱu=lnLn^ ! U(įL(̙$ׯX ͧ ,W2 0r52UǍ \ EMl{̜~?QSA_#c/T{Tp@΃'~$-Sɂ(6cav+Q--Lְ ok!aɀ{[oլZ*c L<=| )*?J T;bƪ'ۭd3cس3>:v=][Okh/{+2f%v}i0xO2"k,E^%|μfsAy徎}oC={3r0 mWJR:l8d)*nm⥛6or>m{M7ni^L}2{g-..rf{y7֧]bSLY߂A>"fk[}q2 @]F|9jK%5eG5.r3k,/Iqxp 8ەW $f:c5oqc߿ž5??b?p ^>1p '3=>1OjE]d1Vc5ts/IώؠF* K#q4̒%UI5^-`h$óַ\ph=w;϶N$<:A &>%&c_N`\j%eNh2rh'֒%*h_f}bV%>{=o3,sh[`}@nc~m+ŀΝ̒I%Ûlt_=71w'|0n;?VL|Ylٱ#U`}|ǭRT>hH*$LҶt.'xKTL0^XT(;8nڴQ-k)pW:R %`g,t2&2V0s,At#QdKO{dTӿ'xIqI열Q33x^|Ŧk׮YdS H)E٠}E5ݡv A? 5ϑL@f73f̰]/;SOs9:/\',7.3&@0ϳwXwVr[*Ņ^hf>?Ӯ< _03rw/.!C،w c,|Ob@ǿ{cѣ XPo%?A^x_}ҳH 4_oxKA0~ <Ԍ? ;7Ќx1y[0tӦyD1g8|oZ[^}ؿ `@Z>gf9r;qx?f;lq(E;NM<˱Ai\>6>;{2}y湙f̸;-H91r8Ïw[b3wN>o .y}OپN%gcf 0?ZF;&7Ekׯ`VWd^IZ!JRu|Y˳p նm&Bŕ@w^&, 9^N(^nmZ `9.Ҋ[^&}QLwJծaB Lcʤ9c&,]*!: ȟ~$'} kc;kkC)%՗9\5^:F%;!'0 E @L9>  'f{~ H L;yw}my~+{x~-3>9K/V߉7ܧ I=h iGkxL }v>/#nj7y IDATaߤ_k{laO4=~{??4{f";;na!#;m sl;vNl@@qY*Jy`;sX[\\Jϼ\gF7ݏZKjL;7y;}n]jg NнξlٺEJRpoKRT*U{AkB@m⿳-d|g{oQ*Jչa;Y_oΪ*_%ZRēq7otCc~Rʲ{/ME]BQPX g8`J ]tg?\Y^Ow*J:eWmRT*U{in򚴡JRTΓ>kl"T.Ƕ5/^򵢽d/u!ENòsTt'}#; r{󘬿H{3]JRT*JuofZӽBwJRNXxq_8P$#2u 2kt߻Dk2@w^Ft_+ٸi/]RT U*Jj]~e$OwJRTC0d).)dZe>^Fd| ׯ3twn}{lV 2z`//M2r!U2 Z{T*JJRT_5EeT*J:`LテLAQq<>3NX^^Qn},oYa3豣6i/S!Ozs_vKaqٽg+\E]2ݓRURT**JR{o+L?*JR7-G1UNM}{tt; se,],wn~︎LݻwLM=LF`]RT kkk9<T*JO;\~UPHUJRT0Ηk}lSRRlqڞ uB1S6mO¢BMϛ dd˔Ķn/jh/n] + T*ؔe_N 6_*JR%x_sݟ]RTNY ϙ;lݺ +zժ2e͞_.ޔ. w.KM>GCwdӽHt?鞣ESU*Jպ"s /4\sꪫK.1_WT*Jj~슫]RTN…6~:gv9IlkXٹsK]TYCC3+O(w^ ]T%d֭u#8۷yR-uKgGP{*JRT*Jn=O3W\yzT*JI`{sZoCecpgxK2tqRٻYHz׹=kjJKT&{pzjtWRT*JRTӝL&{*JRuL^W߁&ҒQ .}^^Jt߆;]t<ݿ,OieН k}ꡃm/S_'Bw*JRT*JA<{VOwJR:til.Й t߲etWWV8Wydo;!>qh"tt=wﲅTYkB5NOw~Ϟ=^c<T*JRT*U˯Z=U*J` 7EE}wZz_/Bw2eOwwv9i4yg/<ʘˁR;T؞LlUU U*JRT*#y_u]RT3%e';v؂ ؿѣGt %{%ӽ3?^ts  b/t_(֮ug;g=ꚪ*JRT*J=)za7t߱6mꤙY$OT% k0({Ӿԝu]RT*JR:7W^c' 7T*Jj֣-:{S]찇z^(-۶2ULYyt>k\๺Jt? {z7umhwXz1ӝr 2H<(pWT*JRT~tWRT*lϙ7fh+*+lj/g2k*P{.{ L=d't -ec/n]c7~i ={D^UwJRT*J:5Y=U*J:ɞ 1s=&@d˸@tX]jСC"t'ەQ5Uޔ.<<݁;29^|E[bǾXO U*JRT*{v+]RTdfR{k鲪 wa3]273_/U "eݻ'j2݁p^f~}{>+mF׭oev)Bw|]QRT*JRT@POwJRN!#LAA\ WtߺEt\S)BC3w:egy+]^;/{2tg_ Lw^FJRT*JRu"OK/2 U*JjMu <ܔ* I=e$cP{fO͛|GeUk&<݁x7g KY@}^\Rh<f+pWT*JRTN~6=zJRT {dKN@U"t?zHF<]ggk_b΢ItdS ;EFI/]RT*JR:!t슫]RTVlo).) .?|<<+^ƣOln:6l`u~ wpm\ ȞEf>=C 6d۬{w1k#z)dtWRT*JRT^]JRTlh tvf.>9NL=Ӱ ntwdy.gݞvR;Н¯so<dx+pWT*JRTN~eW}^FRTLd0̙7f?o.^̪U&+[t?Mn{Çm`%Kd/C9.KVeOw~V6mM/R wJRT*J2~]3U*JJ'9sL^^y~Al9r)[Uˀ#MA/>;~ӝܴy+=vTWI}m~<ӽѝ~S[[kf}^ U*JRT*+-0֣OR)LQT*m#3g\_woݶ bؕkO5mS^&[fTLd/S&Zرtӽ}h/VHϲ=<%]eT*U'/vg__WU+UW{ 5RN8ݎ5O`۟7=n43~jJRTIԥ[O`N2XW,Gvy̫3\t +PZVjeillpcM2+2t}=1zL {Ow*JՉ㏛?,]>[o:KJ!ܚ5k]˖-3s5?OT*UF梋.27t2d/;ӝ"2&HtoӽڵKJR)pW]TR׮] \D؉u*:p'nq[> ]T*Juy[]+V6.],D9\Tz衇DDwկ~Y_W:p'pW /3@JRNu?̛C%Lw t26\[l c@eUeڞ;v3IrYkڠ KT Ax{B;cLwJR]1;Pg?/i?|_sR"륗^[oV /47U\ozFRTg{A7jOQO0sXHlGRȺ=7,s[ln@yENֽ=7?W ^SSc1^!Q\PRT8p TT*Ukj"p:thӟ~4]qޫ_ 0L6!;FRT{FU͖..Ow{O<"O?1<,][nI^.߶}/K55ա9~v2EE1Iн^._T\_2lLVUyf޽{{g=MkE%%ȿ^V89w\si1:q>ڎxluN!?ϭ~|EEE"p PF@%_i=moҭsʹ]{;۴JRҴ4tX]y .K%eDnBJ^ti>YDE]^&tl}sgd3HGӳgO3i${MN>݌5x㍶/A"Wr謳2^{ӧ0aݟG}7]ve6C=61WBw?|=m2Fx ;%Ckڿ9;a2HQcǎ5O>o$LA믷 c|^c=2!t)*ueDKLM7]H)]=m/S_olBnKb(pW:Ϙ1TTT8lذ;;\re d_~G%DI-b{=pB4_?OS]]-Nrwe7Kðs&xBKzɒ%IEzvw@Okݻw[h>vf ;w4=F$㜄]?1XB(Dp\a3_|qF?29,'!tܶmfٲe[om[;l郅 Fu@_/Y7n+瞺馛ߥKζ,y$/5=z46 8~|3fϞp$cX5ǽ>0g~~3Yƅ)_kxB)j`Ʒ^{9 TX|{.xM ~rM֭[gwi'/b/X$q10{ҥzM7{VMVPP`arCx^Kkwߍ|lW_}՞Vgի͛oi|o\}ԸǩL8?ywf>?.7cOJ ~c{Ǟ[kHEcG+̔{ZΨT*۳}1l;3-vsrs*d/þޑy<= [K 띠R+D.߽[,.﩮sSHLB'{] "3id'Y /bo}իs Ot?1uMyL+#8-gEt^j L:dxJU^(!=V)2MNT_VVz^ Ӓ~7nn۶+S]/'j@NK 0l]嚩{7cNtc2d=d:,\K W(pLT0iiibcd@Zy8/b"\}W2erI@ʪܗ4Q> DV~ 2N%>=p8g-F|['`9t*0+#\XyZ&S`\Ί uwfʽS-<;pppvLϷfaQT*Ud} 6 cs%]b6ӽ /~<ݩяF IDAT%{룞v>`/Zt =3n~TWW=<=~{m(pWڱCHq`93<=*O5@2G0dAu@cb!dIYR)O8`H (`5Bرi*5@`WeR 4 $I `HV`h 9S ;IvxZ零 M!zeЋ+))IcsaCV{mժUJ\Cw:U܃76MXLG}t\κ/(O^I96px!Օ}# lF{XALw*U;Q*&i*A$P?,Zd%Rk<\+*RþOZ,% >ѩBxևCL;q5yw}X!-i^H d5kVF `T2˵Nc eUL#ƋV6R_p'+K*#Y5i؏H6+ӬzHwL֨upKa{.Ť7j$+T x+poـܿѤӰ_eB&>o9޾mduWT*Uso7~ P|ݷ(dŞ};}]ݥ} ͛7 g$=H2*1cvw I1o}2ݥyΝ;L R]JNft ̐Z2NF'՘,c\)ZZz97ٻ}nDXd6p!iӦ9Bb:s12@CYxs[X 1xI5/*pJǜj#5Tۼ3Mtkw=j^de }#o[w2ۥl! dzW2<&)ƪ%>&s+ sΝ*(Vzsk|\-/.H=;pySCk_UO|}BYAz3|֮F!JRYt n 9eeL* d2TEOOeOwLw,]Ow!Y)]t߷].yJ@JK^}a;$2TPL%T&iw iyy;b_X f FKV2idʹte@!Zpg5=- 6w@6Yv$q}JAć)e*oup3f*2_†dcĽ/V?A  zZ k=׶M^1Zs-(~ +%닾%;k+ XpkXLI MᓎG;u:+V@ɀ;cĉ1/Ķs;6@R6fBqS{)1X c D<}nܓċz?E)?I9̾Ǐ}s̱+E|{&[ػ>hH&v>4 b4[oǟ=g M>4T*H5C6~q:NL)]r)eH4W;>̓|<݁.н^r^"!yxKНCW;ݥ9r~i )pWڡ;&` .]v3 pҰ? Al|B?mH8ɾ%?%&B4@=l î튊 ZAoq7oE#Ծ Ĕ)Sl%J{}XĪph$+|ۀvEigG-fO7>ݷqOqLaVWsPؖq;XO`q&fO5c=c~߼ Ace,h؏T>$O9vx pY;@7-uo>]ҫ6#{~2^Uά{et<ݫkV7Hs }(\gd(`w=z]vF3ɾ&۞`ٳ UXHYdVp{swyyb:^z9sWU6R#@'|83) g) pg$_WN 4c?tkGf;>J<ӽ֥ss vOTsWŋU]>U60޷vaV|"1>񔹩_*>3cfRpRTَYEEeP N(l==b"H6O\=,S%?EG|f2t_^*ӽDtO Uv{eTx f6xJlhH lL]s聜l?&M4z4(AoK?H<]x ܙ4cS+xgqu5n"Vtyl_)0@8>ɨn% hzĈ} g֭^DZ1o%K'>cL>U~;SX́x$XEY7hϙZ7X$%/I f̘??>0lذ\S>"R$w>'d'OvgyfE\ϩ'wjHGKqmɩ >+mJR@uԧ6lp]Nv%+,l$#iE[n++<ėQ?w)`G 6 pOa:lWFgsFz]6q>+lgˀOPZMZӷ` ?n:agg(ޫ SPF3pȈ6{)RTNo# <cANKF^Lw:XOw9R t)e׃<ݽ >l**Vy{^uL`;7:)e2$I$s2*U;åI2YXUD񤖲xNڙI˘(*Y30-7Ҁ12H(J]w Oj[w·()(X@$/~ X䖬ɼ<j|E;'dD*^좞3VxHEaj:>p2N.a5tM2_ bBoҳu]&2 AcI4j?9_Q YEijJ_xVNFgbSX~KcܰqTLV[)Q[[g b):gP4eF[=,ğ5ǝtq`sה4]RNCyϊ&)ƕ AK^g-vf4G>s`(eKdW.w/]2X8 nRv9.֭uB`Uݣ=ceENxRR#Mj(Yi)xe5d >v2Qr4DM E)0<挷-q5}JJ|歏ՑxɮE[96GKXݤW S_ #wkk#d*.\%@\GOfUqw7PC(UzAm܁zҹc?*H`>I:sIV<$2z,$Jo,G*IT+VH ITؿajp'{{bBՙӟD5y(K,x1_ب41`+γt]q9Հ;!_B?sL jrOʵvJT*Ug ۓj'1UYl{{S!|.t'f igc[Vt'+_Zk_|<ݙw{yEyZǎOz݅&{B%w $pGu?3@ĕ~wdd3aw/^ 60aŻvڼ+ţ?]N" (Ed򀑶u4 |["I oLxNQ̙3O ck6G%~?ʨ]*9+˧?jC= JZUZ{"~cȲ}m8Pw%RE 76L>:6^}REos]JRu&uXgmR$>ni̳$r[ ze9<.2ՍWuTLw=tWR#QLS*"P $S5;~Q*[o5dh!e2`A6kY0I%Yuɲy0: GX=\Õsj`*gm^}⊂۷XV1@`U2?x P Q, 8'FZ `gCʚgTliTt >R{ꩧ"wۣ<$9HrtWguXq`&5 *p|9AHֶǤLw}-"{=ݫ*)^,&{ .䲽L}F<ݥ9۞{B, UvV4>`=M]`A:u8)1bDJ+iIU2x2}׃As@gݼ=V $kxxE/p'*Փ[n" KX[I}RmۚDu=(ɖD_  }H駟>)@dcwVH)\hj{'J_͟?߹]i>>0gq>d4n_X(N*~N?D>cã=w <crm~;)pWTNۇ 8lY6#2.lelugKW ̧?.x18m۷<8um.c/*U;駟nħ<$]XjȑGMU:Fp߭K0~,KO~3{|2m +&V^ h ʇO>wUg|ʠA,tOv*@1cFFDPd+gcLVzǷO׿׍z?3#D999bfO|`sEE]I&39P4/SXE!vWHj{%Y-1HkUJ=ǿ25,eGbfwwJ$}q-`{sB] kjcCn{u N<%{C^F[do$& *e$OwG}/$d9k)ӽ &{wJ/]0Z[w)sFB $x  rsWo4b?8>jy*Q=԰fqm[nq=sYw^F"^yyODETPgϞm6&)pQL |%zJm λw E;cdIy 0εL(YȆeF)QY=דy|G^ɢ&gB52I%U\ dIۢww\l P7Æ Kγ'}3 {셀\݇æN{H/wVYK'1]k&JRN ndKO8AwNV#[__'l2\r^9?Xt-]xt\t3e7e/SZ,nqg4gL}ϞNJĤH0PlM6(R_[:U# IDATwXy &sѬ쬤Njbi\Zvi)6ﳽs9G|Ф; {).POqk%5^IpH%lO(E[]ivg>Fcؿ\'6?XDoڲe"ՈLч{%u .t/Mް!e֒|`#ϙ~X̙3C 3wNDZ~'Y_ $ >W+J7 X V =^_g}2˶٧; Wfӝ},]lQײREZu t |k/,t p?#нFtx%2 Uv(,%| M7d Lu]fba܃XbwU7,2loŶaoر M/8=X\ +A|/mQ? B}㲯m4+5=L p#)Ib:y sNLZGB|~}LCT*Ulƍ3_לB֠IEz𷰓Y R&e;9s洸J?܂ v󰂵^zf͚):^{6w@N'#>,O@+k<箹暤8mo)#Ns%L6_=a56^Rc\-`2AĭY媁ܷ (̘6pMt%w.,؝x}㬺 {'^XXꪽ Dׯ`Pwe;566q`g{ 2|6 T*e6ҼxaK7Ҳ'ˏŞ)fen6 rmnd@wgJs3t ~!S}B^#/+nzKaMBL?™f ]jK^ҾU ;zW}fJAh"^.e038~_84l{&RWbb˥ܟ}`m|{{w6dXg &+sοsX{oIMvW>_ $,X#eܹ|ܙJ{)l aoƍ- 4^qsjxv^~>ydN \G73~`{3Ҹm6n2Ltկ 2фIM*q;ȲS\T*Uǃ#F=3^EDΪ^{yb]tݕd/Ӕa>{龺^& CG~ѣs(l۾ m/ùnȵ/0wZj@-x{guW03~s57p[<@/2ewn޼׿ӾA d w((-olmsHU^xwFfx|WO> R]~63)2j[VR LC`&m>^_RgG?pgz-:βZ^z v!s$xV=(]j?37W^yc }Mwy/Z{|%0yW[3ƾ'z3d[^TP61X _;{> b['a|1/V|ecN3nݚݮRTL]yS'/t$u{׈}uwraQٵ{{3]t߸OޙYfF%Lh * YE@D( dCdOHHwD@q7e[jzM-&w;N'd%9;7_vr~SO᤻=η=9WfLw uTn<\v&aeD[5?(eL8&S M@/f(?؆;: t{{6a2yQ'YVyÝx6 h%Bm 1Ko9"MO(/ w4y"'H+5<0L5Nj D&&1n5.;գzq-c0Gu8qXuc25dloB4YR&g'/ͼ2L1evW\}xgmimq%b6 mTuNw/Z\o悺 aKS2WRИt_-gw( uN;)pe@tXq::sbG{n2}wb~ ZZP 4cFA8Dļe9d{GT( DƎfcЅ ~B6#A  kGPSI2RhuKƵAc!}{YbF`d2a<H.[,ZD>j{v{T[$H6Eq︶( }G.8K._ऎF3 jGLBd wD ⥗^c3?͘iRM&iH];ty[{b~Va /%}t-*^aIwhNaLtIo߾!2^Vltˀ;w{L~?!e֭UgxfLc* E2K3%Ra!`RD,)6XFh>dη΅ӑ,e(6^2P".q Ci w g tjH:%(G?z?٘ra(˹܀1o ?} w>L4톑tQGHӈ5Ϥ⋽QxoiD$L~c֬YmƜVch{R$0hRMa:kDf\(&t5Vh pGن pwsFj'㽛e2Lc~ٕ׸7ϸ-2e}bҝc#ݣIFrg`bz{h'2B!D[@Hێ]mmh>װ]YytS2w5 ӝɊmJQ {omkljt&/ /p A+;{*#K)_*+LHOk7ǵzU/f2:چ;)0ATsz ,\PM a1hsqϹm*5]gS/cfφ{굞PSo'j{0n3iɝ{4Ǫ\'y1cB$pGp-Ϫ.GC3WH6^xpc6 pgr6αB6ܣ>v]Lֻ??h%fL&3ۯz{g|{ne/#z!/#aT]/ `kx*\nniMwfk!m[BR{OOwl["tO<566{ڪyWĤ;2Mb`o6d:tGxx -_O~l7^0bҋq IA|ܹsնQHӦMsNEL/ۡimeA!ڪ V1as\C 5n,gh?F?c%駂}>lgNaHk;}W_~OjqVpw-B p/D~'ҥK 7|S,VvI I;\gh[6fqn29"Hhm, s…YBޗJrL,6 qm;=媫rZɚ11pd!ChSOU#[^z膛2d2Ƙ~Wyڛq rD5?[tMeJ-rk׵zn4(E];ߴY6ݛ =u_6 E]5{}}I1Ln~ַWI(iԽaÀZԵ;^GZI5 n4]3a2瘨sq0*R>L/\Y k_Z^hD RebSO=uDlDRڗt3hV`j2ۜnr<`L?V_Ajl1i9.P0wqO,lNö6/fF>;kGyijN?sϕh2<3Ygu]{1n~+!50B/+}R9m=vo8k2_A!F3m2ez.Vtpd1MS{/PiJ53Xx87.t'Z-K_]u(, F8u2MqLX crGĒhHZiُw~g?qXH}}/<^hv-k<rltÅX^yq7bwޅ3=+d[fWwO=+_Qz'tO2שLM*}Xd92MZC݄e4;mђ};φ|_S2ݓx~Iezja犗q< wQATϙD2ՙa B^x`h%,WRWe;/$ľ^,煙%09FI=Cy7҅iA.ǿϙ3'+\^= bؐƄ/B`ΓФm+ <؟YHbQ8C=X0~o ͮo L&&.E b2)ICads~_ot6DŽ 8DŽvs0)8ҽ =7k]~<7{݌vd{`7ob /ĚH3YKk~ace/#1S JLf+Lu}vW#0C2%J{(^^17 /ӝ}LuAwfL&l:,&tRuRk*l{ӡ`^Uvn'O6aX %LiIP[[.xp ąb(Td2J`nK==UfZL&v ܦqg" /d7Glڨz#^&OhLgK~hГ^ӽ4icXعHm)Y27 =iR5d*@X5 Yf N%SzTL䎎s(6کa"XX Ba;d+))ⲩ}ƹ;Jӥ^4Q?C߷1rSyhcܪ&P6l9~7Lcĉnfd2]* `aotKڵkzOI:o#]TOW;Eƈ61M&XOO<͚3L&i2\wkljΜ.ǡLwjEJ5Q+^ںEgHZH5/>.Lt_e55բYO2ݵˬљ[Iw^tπ1d*>7`tcJG,\LHg[,4&:;;Gux0'L&itM#IO񦻥M&il%/5>n܋/ݭ$5;ߡÛԽt/G e4ӽN ]b^wezԶt'P$ś=J~M:V=IFWT wi,1$Gk# TȆ;邉'Rthm;8&wgzkș\d22SL;;Ē&4V^~[R5qbtPMf-^mQ#޺U6wvkST,Olܨ')*fI5Gt|FF]ӝUφ鮭`@i]&H~ wMJ^uy>6><<.C^D3M:s0$xoLYLqtO\Nt9Lwd*lw5׺yڕ6t-trlt b{E ^F6<]˴x,0xct[߫ee;|y?>鮵${|FLr[^.:^&bn20oV_$$.m̚y` wnR$]s"tjiÆ LdST-h,3+++92%>uߚb[Z[[]`'SӠJsem[+~~Du2;w{M8tdXԵV \eUtVRfLD`b2|qg:X-??YL&S*^f7sΥfvL&!ԅu 䚚[[Pk&2|.t_t2$%s'{hӐttcLs;4$.W 6(&ޯ3ݵBuje|63M&d2L&4MS|݌wd:4nt--LG&2 Lw~ڬe4{^&s9f'3 FF/QRN[`iTsceHet9/cOKUի2 KqLm1d2L&d2Lt?M~mLwd:foq-;ݚ9tT.*^RmmMa.ѽa0?LwE F7n ¿766L=[t2[]M`&Mw_P IDAT qۣ2U}Yjju{gMfL&d2L&i0ݏp'Nl)wd:h9n\{Ggie$zUUٴi[YR4׮]V2m2.M55̦M"^.,*eT VH5.2ǒꦷWMkxڪec2Q{DM]}r[lQW5Ep7L&d2L&ӸL< L&(뢙sUu=Ofjx(r<@3R%鮵#V+^J=/#/atLu*}KW+Lz1u϶t%/2ݙlИ[xr/C" wd2L&d2S#In2LY y َوؕt f 1CL}K=t/5t+*+T|}M_q u8ZҝԈB[v(;~#~;E[ L{\!դJ }hd2L&d2%^&td2#sٕ׸g{G 8g+ -;:LXKQ-ӝ]:=n3+WMN>\NSssȗ|ҽ$G[j!Um{ilb*+,uN:_cǵ坢=fL&d2L&i&O4͜cd2#=>vt_ӰFM FtAjiKt_B%d? FRLto.ӭ1e{ ,,MEĵEb07o,It7d2L&d2L>՘&ɔdnvV LnѴ ː~뭷Bҽs5=tϑiHH4;whxoRRQWtooS}}}1&wxBZ V%M[a4b? wd2L&d2swɓݬK.3d2F fvoŵ]"!L{Mw) ^f˖-#6CEJ? )9)r-.~8CR64t8/#%ܱ3g֖;]uN&d2L&d: [d2F`_`kjip[1эe`gK2f~lW]]]Ix-z^bVjHQMt}n:t_+ Eӽ!׷e%O)m6Fրt4`d2L&d2̤nKD3L@foqͭ ty[3d{G1DLqZ-_L!紬mLto+t-$5ѽmGL5Lɞ}x-!x<ÛY߿3M&d2L&tXR%nƻd2f5^44*7?Lwtߵsר3#Xc3ο{p}e@/#%Sg!LիBR<(-+Ωj^e@1jbLT wd2L&d2vL)Nsn2LR]{{n{-mqHH}[L9e<ҥY4IkF7+Lx󾥥E,^lK}-ƫ4LwV,HLwZ޷E2K=ݱ;X#y`VԿ2p7L&d2L&at?i)r7L헸y.r//}ٕ"Qr[5Iw X4LiOHI]\CC.CCt3QRݽGMH=]><<,rw&t9I:^s]L+r_OO.) G]`tfHvtv㎶H+,wVhxd1r3M&d2L&te&2ʹB&ɴ#s%ϻu cŊXӽG5(x [Ba755Ʒ$ϵ`l$ng`RZ0t9Ǐ Ғc/eJI݇e֯se2Lottג0p7L&d2L&at?<cL^̘/\{aںtRVV*"]4 kCЎckc`oykK]MeTbtt$tI=JoEeE^F35;}ޞs.?E]setј=LwKQMw3M&d2L&t؛SnLwt׻5~Mh~t߶MaLnwķ%tWLwt]\K3+;Iw/Hțt]Lݗe ަ93Rx{tTcS:L(Tm wd2L&d27seL&W ou-kI6ԫK)LwiLwڒL'+*t9泈))vk>KЖ{9 2L&5ݏ88q52&i7r[-uUx>]t22fuWj Lw\zҝ~ ak;$wlܸQGe==/slwe ӽ wd2LDsp:;;}d2L/3a:tKLq..WQY`~-kjܶrfc~LZ-h#bqͶuKcG-r[7Lw*R|L6hx8tokL|EPP7lvVL-+/q})e{S]_e*b wdJg?YwgW\.RwZ_[yn֬Y|t\yn|ӟv2;oݺufLy8}tW]uU;{l}dx#S99g2ƕf̺]su%{#SRckKT#ft',2Ԥ;x8CwU}}7~Dd'=w;ӲEe̗La&z{{ј~-}z[Kگ`Z[|ҽ^˰B`x&ɔI\sIh2s-Y wg?xN2R&i\$gfKy_-]N]b9V 0t9rR[vڙ@-^&BB;[ZtyMwɘ/rťɶhIwL"fs5Hx&#:2%6eXՠtvtg'bn2LikelW_}!mҥfLhSAf~_&SKn2ƶ.1[=’0 G]3bke=dx{SS7t裡r00J]CCC:^F@--$wx ],^ &kttvIw /ĉfגL*ILd!U=^5`b wd`Kwn: w+n2Ro3ML&b)w4 un-[sR݊0+5s-x)r^N(/]U6)CtQL{L:;4=. .;H9ѽ}votkIw /ݡTn&e Di=*^Cw۷@_3M& w w w3M̤SVHd2A 7&16ł%'G|$IYcBKLwpw2^fkhlMaءMC*rDKL&jI-CE{-vtg#Lwxgw2}:^hIw<~XK J O20/fL&&&fL!I#p'O:Ř&i$gv7|kkkwH*)w RXc0L⒈%g;/֙+U}͞.oNQI<}EEm;O˄$ݷl٢ejjU;Iwޣ2w% wd2d2d2 w)}1M&a/3u|L2)^*ӽfZRKLwR"}N_2MeKLuܢ'ݵ 7Lw.|[d;;Q7is,ӽd/mޡJ-~Vf為Aj_Z㯶Ojn2LfLfLfn2tf1d*\M12Fw_7ce*ӝ$q]}X\ӧӝikoS jxtW2+ jx6Q/ټٷ9t/.)kަe/]}t-*=1-m6%TV^&~|-^߰?^ wip5W ;j޷x^}( _~Ol"`[ -/UN1`2eteLwTf|C4bٺ& GQ.[mU1IloxX#uww{6;%eZ׶TIKm3<C#EK'Q7-bQWtQRR[<^FK$|\2I]*Lw3M1~ _;Sݜ9s 7nxb7w\7m4|ƽ}swI$Btg˿KVIc9}K_r'Nt3fp7t{_.rohw{_{ߋ-R wRi$4!mK-.w5׸;ϝxSX:|nv};sݬY'?3?ߗo~wGyd^ӛ}|7.RwYgCЈ>_;?{^O|׿uofo!/ɿ/~g3>8ף151}lԮ7qP-}uis$p'?N:}}rwsvw\Pfsikn4袋y1I㉟䚢\C(2KlDs<:sy1SNq_f_s8}N?ֹ1o!>y%]6oe_{22ܫՉ'Ys /c2 ~7bWWW5LxKYYO l /\Mo|0PuA5EYMcKQY'J\VMT`tt'.m't/LR/{jLݗx03M1}kh{1qX3y?Ŝ~ 7׿uFW`H[1{074C|wHJP\~DPu;q*..E>b.))Qh?# /to՘薎>7q-=w>~/?è.$?S~!-ӟԧ& 5̳lg޼yO2Pbߞx W[[ Ww|D,ݓ6VX 9L|rD91X8Go}#1?cWWW}>} Lb,\=nxxXLiTWW~}; LdB(n,ڗdR\dX6>ҽ98'xr-8c.'VqKNϽIȗs!y=ODg?f~U__. _dC=&L`b&Sk7ut7Lln Kˍz= -|<ӽ/炖Żt=J8pR>=rEh}ZҽE)]Q$}0^)&I䙒Z؋Zҽ&^/$ޱݣlp7ƈ00_Ƹmڵ[oSSڦؑ0?y!DsWah_W2~y[[FzY)Sx3[3,6%0cCL3twT8Kr Э,DT7>H6LH醊"B2J wMt1ij*a@12CsO~5ܣv_߄R\s{{{GWˋ 2;@Si[QQ_m6vx㍬'?[sNW I~Iomjm__#ݘ ]Զɓ'e9߲rL>w:F{| 96&዗9M<͜s~&鐙,rK^|O8ѽO6 ӽZ}#`nkS 665LcB{"r$ N]g+ 7iX6沔oQJG2qif>C|mt/]]qCj ; R[3MoܯT wӟ\7kpN>d@[UUgGb2E@D]%V][10Ԛ΄K51d_]j|$?I Oz*+ۍ&E i{H"Lژ8ꨣFm"IFVM k,.b|Js/V#|ÝIx1\1d*n%t7LG̘n.מx&^|L29A&j|@4ݕ{^&\2akb9:ӽUaPSCC海T{Kk p Y 2ݛI˫8;5}E?/۶0݅%ejh3Mu]kk\;IЍlRpR ~bóMs >hm\%]310omkC6!Rr՟pǥU YX#H5RHIVm)hzz_b'[w}Ys:dK# 6י^I{K!pt6^`Te6܈Hyp#w($]K3}W\&NYf$5Ý !&eyyz .]N^}Qs2%5IcmD{6o۠+&Sz0x JU:.Z 1R#51x W|׌VMi﨩|S/7i{Wpfܹs}j7*LeM?6dʣ~5wJS*^M |Ɠ ~Яx \]]<, mIIlzzuW!n-MJQ׊D[(::ӝ\-v<鮍;Mjg'Ym`XZkrx21ț}ncT:_,L-H[ MMs9pv\~媉 |K/F FJj8ÝT'?Xr'2)<9R|}m-=J ÄV;f2〴}/cTaLopApg>uh:00GsvɠHL@6\v$C&`gZ-+x^Ǥ {`+rW_1 ʁLx"IP3Ea.˨YCq7Ar5d*L,cLꢙs݋/ ekc`'MwpW߻{d{]J!I "ӽ3͞(AI=o{Mw/%+*Ør~}!ոISWڧ5{P^dE]yGS{ʄx{_&S! Y5?/O/4p R&2}Y7sL%y z4 /}KӜ7~HRPU0d5ܟ~i9!8P04cZ^cesoe&PO7/V?T ccls.ri#mKG?W_N$S2\:ҏT XS>=Xm2s5u|ro^{ljڛ{T߄q75h4 zΤOJĤv- s3MCt?i)n\˘Lts3KWZ;Wӝ(0tWx2LZHh5u4;L2^YIwIۺRp$;ƾ6كRmE]w)xtKLĒ1d* ah1"3-χ p`n&4(= 1hNq@mFGmӌ6Ll [n%Վ &5kxьO?}߀pHfӗGZ'/B wnsOp;(jI(SQQm8pW6Ýn䋤冷t3{%/:]ǹΦO`r ӎ}ԷY!B|&)tNu~QQQߥ]?O3쩧ڏ[NJ6s>ss88dS ^\\DZ{~F'p7 tঝz%M&SV7JJJKA$[[A45r ukBӝј-Mjҽm$2ēt߹KY4 wru|__p; $Iabd%ᮡ|0=FsV̘l w X19l w eJ7_{`-ko9kÝr6s Srx,1'Rf'>Ԯc3pZa3A:H7АI Y$m$UF{M0iŒqˊ q>u"i5bȹDʜI0O=;";&Ee3M19"9R3M&lϜn.ױ3{ѧt{٫C2 E$d-̶a@}j).2 R=*^X6%mC]cwtLwm V 6x<^ nT@_m9 pG?Կ ݒ?:M:`$3 I#  gM CHnL\-]?EhlZbRj6p%mFa<C{,.8!GcXg2DkZ )}]+xtaVΙ&(Vq{.r>'󩧲O0Fbb# ˀV:߆;⊥^3dG%M&l;]gW~/tyIl0/# ht1"ӽ:tڂht](;?ki2+u}xgghItw07LwtB6ɶhxr0aLwދ3 w]})#> w f٘i(O||` >F R.iփicpDŽݡ^z'p卧 1=+DÝ gksPGkK/ {x:AZ[AWԊկ~+q f 96)B66!L(c?RÝ-fL'^f3ܬKn2Ҙ3f;3%6Atߺm7ݥ'ݕ\}}m}:V˄oCc+XLVtS2aKtIu])g+IwVfK 1aK,MXt&XQ[+0K=fLo~KyHq˱nGh A ,djc iEABԩkL%Q/;/~CbOEi;Hq$C8٦z33't:[\́:JE0+Z$HK^zߍ㷃˹e0cr}Ll3atۤ!p7LY&'Mq^d2l[DwdxLيR_cK05vMw~{ˮ[0bIG3Q2Q{xoxɠ^UUe7._!RYCCM[% NXx)maBB҅ds@ˬ^s*^ w #Cи7ܣ}M3__f\oi/H5BEPG9<{!1EIԦ25Ýҳ0xazkc~p f\shm~G_ͧ0ɥ?&H3A yùBiw.rqr/ȩ维kg eee~2sϙn2yOt7t뢙k.v/RYkp]{qtLmB}֖;ψOTb~0)z%1}~Y:b u.ޤR%鮭$ /R^fO-c1ݵ PfQkLmT]H/&wfL$ҀRz(eSNU0j|tW]uS Y.TNE%d3f7Cp ^x=a=`V;>s>gpc}WyȔRӑu1_ qCDB1o~."K5k&ix#S<݊L>-z+/dZUz晫ӛE"҅lLZtߡL\Hw*xRGb_IU]I?t`;2x^Ye6mC?FX5t_SN<LPWx9P-/&svK2p7 HOO|"w3!?5ܹЅ0ʵ-pϔ ׾.2o&cb@eT,ȇNU` g;F:udx3gϞgO,=]`u0((L1TVP0ɗt#0_ETNjD2ٞyQAhHee0ȵO mB>[;&./C=R[wUK ~X#f6ldm駻t7K_~ɕg54E$1kub~eK2plmg6u1ݽ)r#T\33֊ 9ա-yf-D|toUt<= ^B'QLu{0iKulA3dT@!yJ|ogRyy; w6|:*{&١"l yh7;o wځ)J?Q|s(A pgXqpߪͼ$2Z/IL(JIiӦTwUknnW{X,N3^ Hҿ#>ռO,xY6^HH?odB'O5t%.1(|`V4ӽKEk2Z*5zř555nձCQ6Xe%<"5d2]_H2˘i2;vMjI-Dt㠂x/#j=]jK{G7seֈg^;Ư.O&sccxjIıT6r,J_;x&t߶mΑnT`:餓d4F-\ܐl.ܘ}/9Fe룎:J^̃-p=Rn&JHsa 8f3O5g.U|cCKqc&9 wO˸C6 &/~|F#g/cr,/-%4 5'7<&MI߃&XaʎDc=K3Cg|As3<3}jP5ΊT(v"Z;w?=ۙL90Ox=2&xvy[Sha8p=JxrbctT2Lt~t߮ReAxKtiH;L<0W!]gs/viL{w#g.M<555D^=~e)L w2Z:e횱 nBcqsμtMAF9/љ0 0Cyꩆ;15>>q!,sőo1$=JjHLFih`hvwЮbqjZt!8$c;)_(&:浪a>S$5Ýk B71%OKH љզMCw[,1q::K{{X[Y$)\F_m'wu:9=8 w@h[$چ)ov&S.LiaIwisou]OLV,.'{鮽#-R=tQۂɪ1ݻRz=^V^&&)2ݛT̖-u +]+dttaKbeZ 9zDLw3MIU-oiK+ۗ)S0z!J7̲+Wfe752vI7I.⧞zjl\K sA]lpi,IHʝd~K_r%%%p3/;bE@H?I|P=7Hp?b!+J>Of -Z2bhjd{>k _{4Y<g㾟'|M`$&;({0WLXdbK[dǙIƵ+.jLf~T!B7pDF͌~]y~ /ūS* m3d^fKͤ4Fq]]ݙÛU3V}h O]JkLP -C6 L6ue^!t_RN^QѽQ:a IDAThLwRaxM`tKL垣^2-*{z[p7 P/b@ʔ-ͤ5%L3cO[2idK5yԿRoL4ڍ /kT㝛 J"om ?`0ydh<ߟѰOW5ݠKMRǤooi+L kuWL4 و>Z5~]xq ?Lq02\C)uXKkjb"Szδ-Y޳Hߓ&~BӧmG?ꏙ&&XFg}{X0т ka2d:cL@w\2<^RVw2E"]|W| ]D$M$LRqIBbRg-2^]c>㋺fhIXQt `T{4!ME+&xvEx/zn2(n94kӌTQsA o aTS\/d#''nq[$2\q 놹ǘO;ȹn31mG,}B>[oVrhE%UQ(;G>W5FzlBKPvP9![ssX'tLi+cO (0TF wVbd; n2ZgYd9ot/OkVFB}] }ٺm^Jؠ/&*{O=]}lbWtZɊ}XH?TIƝaB )..ʸ `^FR~k־N-&5= JMݛn2կ7nqK)꧱ߵ ,$il we47M7|ɼLbhEr9Hx3I?WS#0X=({K Tx2#ڵkG.XIPm|իcz!"6ʆyL[ċEoT+$3MC N4͚kxi,&ۯ&e|E>O37oVUU%f(W2j\3m7讀эQ'tylߔkit8s$ty*G]3e'XU}Ӱ5DjXK~.%%>v%¸_R'e|~fL.  {e! w94eiE75Y}o|Cw8$a# \RNmφ{dQP+>lMÝ 5)Ӟʣ1 wds>73,K}pà7~;ZE%f/ڸe;鮭%]^JXxޯR!բ|y3M1c=Hvi{&3_lOMeAMBpLٻ' 90iҤ~ǐ`ȇ8bƌo[oi>X SƒtH86٘~6\5|!+"f7B6#yY!eLL<3ݭTnݽo"ǥ|CL :]J?Խ3Ne{:c[:u{^HURegLz!ZmRXK}VFM~RH_06"JuP2|Lw tO}zpp7ƈx%]7%7FS6GqHIEhٺ/)d.\w@BFs~gpIv|WU0?mcU5mC??#dBu4vMk+0E\r%AFq&{'m<<3ܹjB9cRN<Ġ{9s2чj3m\d%}7un1Mrt&<bkLw֒ B1Jn%ݥ/LwVt/-+uJ8k6%N̲2PԵFl t%;u;+{BҸVX`;Rt&0i;ܢN&e]Co_ wi 3EBxu楜$1ƥfJ sgfS/,CFc* tgŇ _)dXqs 믿tj % s < /MHdcTΜ9=q7-rַE@:(Ĥ@8>SK329З1 WfIu,]MOxv?GuT>:e]'؟q`SiZ.k2`S8OIrn ܹs}=sg}:Mhcq-C1 .t˖-rcdXee{+b<q1DoC&Ҹ>I}OQ>gB>c*+Lt'&,Y.k$Vĵkƌ~L\_q Y\aٳ ܗ@l7o<~ޯk58+ɔt3^d*d\w?r]]L{&rbEϜdňxi0٫HtkxZt;sb>ldj1tDZ[/e`oҐ.C($!]0դ{dr IF7{ėe YHUf';ɜL wi'Ov{ `N3Ai`RΦ ߁ c&HE[,j7bPThn${GM)+\aR}_Is9> O~R䊛401? 3Z0ni0}{~so̧O878_9W oa|3~8Ldq /NwC't]8q|cǔ\xr_BL&M&!%ILx39Ma~]OYO37mTVU ǦFt߳s|X-Lw'#::2݋Et&b>BQ!x(3*=q t5^uU!L!!^/#e`GLM:^&&uUfL&d20}, Awb2Lt?y7{eLC fvw{f{:B52%G3Z+!Iw&H(*eBbfnn5#1+]KYwCMwK^&.o-2(=IIw 1Sbd2L&!P<7|׏c_p2%d20nکgXd:-pg-$>]ሩ3W&*K.l\Š[c'.:ӽ]4? [Mޣo)L[4̆W^^&2IH$݋Kf. T5 ]Qd5w龮MF,Qo*ĊaN[J˒)22? 1ݩ[wn2L&tfDf;Ϸ>4L&^}7-n2duotԛ0ksO{]Lؔo(ftO2qR|./ڋLw.&0C2b!Ւd!ܙaTttT3SFE]AHI^T\;VtW2a{@1ae/`j wd2L1j/]ֵ>4L&S*}3Kn2 fof{zO GRZ=bso lmj-]"ӝıjtv'|y թehm/(_tEdtoh\#3ݫܖ(t2$ I3cKWCǘWt}*ܔ8ޖF ӝq7d2L&i cd222'NbIwiw}7s 9gOQV3l,|w&jCiK[~1t2^tg==xiuO&bȵ+H熆L~Sh!Urt' /aw&$46݌'LwqE9ӣ&ݵBfL&d2b=F;/h}g2Lx{pLw3n2# I$b~vtHnee4d8RHUew(L=^FcwttIb$Ǚ}%z!];wx$^FKtxobk|P7ax!OvIwgp/аFwI޾>3M&d2 U>Ovdz8a˾ :˽=~3L&S^f)SݬK~`TMl/˿d2LpN5ɔ/[nw=lt\_\3gwP!U /1ݥijnr;wke|-WSS-DB"^15}m*FcȦ;u5b[T} *{$`8!鮙R-e'WXI1\J)&L[d{F&ӝ3M&d2L&d:uN;Ò&S`}EnҥTM5b7o٬ה k׵;I8##SB:]ːl$[52}0+dPFwtטވMaZ!޾N^ˀ)m&Im)IemܨeTtń[se<"ٯR]E=$}o fL&d2L&te&MfLwI1ۯ&ե|J744HFwcSjuuBLM5QFg|"\~ޣALwԙT br 7 oRM8{,޶N5݇7ɫ=ψK+^c׫NL5*6It7d2L&d2LLit7b u}, J5]cZKkHLk[٢etyL~*^KMkm۷/]jKqiGHm%ӽho!|e@Hmٝ.xU:}xH^&4Lĺ"&˅c]A6u%3M&d2L&d:,<^Ƙ&;:Y~'H67xsn8t|It84ӽ]`!]njj~LwI[05#V3ݫ<Gt{V-hTW(Iw jIwp_0ݵ _* ;qmIe<&g7SLmk$fL&d2L&t S,n2-z?vCCLf3)qhYR2qfcYc8J}}CoKdGE$%vfSHu*^FJcjT /4+Bb2sJ|NtOLw9]^e &{ mRLwVk PLX::->/ñB9\13fL&d2L&tXepL7֌Yx[!$ݤ|7*F71^h~퓵rWQ2/#2iK\H5Y0u=龦^ewuuLtat/) &2k~YPKRҝo]ۢ'ݥB%2k{H][4ihXvLj# {$31 |1DLwЙ ]Ĥt_@HO+x!x*Jx\[B2Z!U!RkK*]w-:}&^Y!o2|F\߰aC^f9L˘n2L&d2ɮm<@S00mmy%dI@xum)((~%S9:ʜvyKK[^ZT}xxnFT0ZtT7%KfCݯ%9tT7nQӝ ufBws #Nt8ݭ'tZNNw4NB!B!{^۱k2]#^~3-_t2dx)skgz \?\wee%t-GN<&tXgWw'Q ;k3 s R?u7ANgt^ݗfuOᥑ_`Mm~Flwvu 6X0 v+pB!B!Lt UN}7 ?gMw+tcemyYK^FF7!˶--=5|@b R2ZS y^UBeMwH/̝]GN=ttN9 IDATf#ASt烍{ !B!==c295a]oo/ ۉ^&rO vf=C;88WVNM1[/3;ݓ fb'5ȩTl 'i<'XtC4нl tgMw4=veI2;^e !B!<򶸽W]xQ546:Bs+v sĭ3 A,6Z|In{qܶe>}1E{tgztʑ3AK e>#>2b1ׂuNqthT,h)n5I]!B!Mwet?ndd4 &'|~÷ ;j"eMrA!0J4kY: +(k!Md{ucZ<}>nzȰv9S467g){w'2$i ^f,Jp6ݻ=Kޔx(pB!B!DrAr+hd~O?uãн|5?7kӽHjg[mՙ82~'띗P{mݗ^6ݙeaqש;K \44Ӡ~~;͵{=&<7ڈ^uJF8P ܅B!BqztBܜ˄9{t#DӚ;v9L/vΆu< O١dtO_V`{vq4H5q]1 ~κ}nXz6K $tl(pB!B!D@=s kw/$Ad./[!/)<2Sd*^ZC$ ^6ݡtRZ^›\mm.Oh]@*q-P.?#;Hӽ-,.a[/Qgkini2*t R>nc=aef U =4tJ{x$kLvK{d?Ր{MzB!B!]v{Ia/?;Y'p.D7FMwF^IHb0) ?ӽennYíF2hgY*Jud: EC?vtM ݣA8-D/S sk+^K3\/M_ 뗷6_vW{Ԝocµ ܅B!B >k{(xz@^~O j[#Blto h3VQ2\/39ACwVnmtTY ? k-!MwA 4tpWUW?9tf a>tT{o<e6/ 3 BwuiB!B!@Lۻq9Ŧ?Gbֶ= R63 t*7G4xWء; Ju+ǹ[AtoNtO_?#/09}}CtwdT`\Bhk)aX t =ajp5OsZ=}(pB!B!E;wuG.6FWOJˊYTWҐJ$LQ++J75ŝ,tg-ՕU?ZKכ@~embPӝev9šp7{M gzt';6LLz-L{Mw|as t)pͭ~n_]!B!ڽOTŦiOF ?;w35)f}4 ?7+B@khMwϐq˗e2Nw+f l*ւ{y ,z鎯GztGk]wl- O4ݭ{stG(_n}xZq=={w!B!BGv^Fu_zj=GB ~FC2td%1tπljZ u?K5ݙ^fl<4t-Cwersc- Nw;tRe^py+~uU yX/C)tBP.B!B2[ܾ.ᑑ5 lsYS0 ᳶn llj4_$D=!`;V˷~-ʑN(Mw|PY-M4t@\+tu0:6BCw28t'TI>`Oa!s a-`-xmН StW.B!B iܽONwqY9to' \^^r-Jt7hWʪ6'; fgfHrLt/pː_t{i{j*>2DR{C=me',=sNB?K6ݽ^9g2N~g5R܏ ܅B!B1{^..Wo>%鎯C/s*G55n1\eX7$őZZ Ύ.{;I[xP55ݭv9"Cht:ӽ aE=D/C+dpAP ~Zd0 Md;]!B!s{<.Rӟ14?h5#pdNw6Hte[@ uOLNzuLmtgA7onMw^rt\]]-4ez̡%en`8Oͻz_`eX>aNEHZxBREӽHj]!Nw<`oDO {}AS U7Ǥ]!B!oٵGMwqɚuwg)Ebe:U!z $!z !􌫨bX9eK2>1F2tMw[/{hx\ e}Δ.L/q̒XA7(DLVI@n}FSH #mtoOЧ=bټq`j!ˌЍ= ܅B!BzswGXlh?f[QCн- Bwkx))tT79|֑Z5#tgT'rϛ==@?aABwt_`Nt4LCwk8nl4jY><2LCwVPW6H5[cYw R'Awӝ7ctg' qΝtO_w#k3?#t'!5̠{aqkwb7ͦ{_m>K`3ׄG%ё]B!B!.y莦crvcckA3t/*.T᥶^2ne:htgzʪ eAwӽk_~eVн)*Iݱ;^ ; ]]a¶^*Etgݕ^'R4MLak!Nn}TB!B!. 4HU\p?広(^G-6}8ݭAzH=-^/8b%sHNu(龺;ک^f"@/ÜN2sN1u(^sŹ5ݡaO5`3(D/tׇM{NHucl-++]W7sWk9[{=aM V.B!B'ts;w.2~Y4kvyq ˣuTqvvn&ZX`Q@Knm8Üݱ[;^KC%{-}D/ R5Exݥ_Hu5{4;tg-G@B!B!fu׹]{#^R. _0 rCC~9݇ UYhG2%eX2$ˑ^ql|ÜFGjt1##ijNw x‚n7퍧BMD/S]EC/om?붶62׀ep-vtP.B!BMtw _x=ͣg:ϣn u\/OǩTQAXo¡t9E6#pLtH2Of8z/o;;̵l}f+8 ?{sH~e%k{1,m:/!zlX ͞Y3Bthh38 ӹQ.B!BMs7 B~M͍4pLhޛBmYtIlǰA?@[Nw4s IsuWr:zֶVd /:߶Bwl ReNw}ӽ8Ki \Wf螾GO{`ua9ݭmG=6{k~tNvyy^:sbn|]>9IC{wg(/ۛ=)}1{o+pB!B!ڳ_T*Ս3|Q k#PG8EZgh!M1W^^fSl@8p i'Z@ՕUf7ݽӝuE;:&4ݭ3v'x l)dZNw]9{!aN/o:2c#pYu9;Nt9&C]#{+*6̅9 !B!b6#H/Nk7OC5X˷CI>kRK&T/dž+]}ylǁc^&Xtio=ꚬ)z(]jk͞zI\k q3ؘ+))62!N&2mv.$t/%tA^h<푾4[KEeo[NwMn{R.B!Bo8;CG_sVok>Sfcӽ)s$ѡ!ւ@uc D3a6HeB^/ch>Zvw5zNwӽf=%׆҅p\/c RAz R0aOMҹn4 !B!beܾ~z&'+Bl˭ [En]q tKtO CLL=g]\Q}!)u;n+n Rm `-s$F!˔{@Ά xlΡ;NwzĞ&XtO>/]B!B!lvܫGRߟNFX?"c Uk CRn Ӑ)*P/ŶrH#B8p rh@8Kޞ2R vX͊.k-G͵ 0e~c-Dk?a16!J>tz)]uEo',*MQ? ܅B!Bqet{9MlWuSH[^ldӽvWIt_*suc٦ij48g،C@{8F)`.S,/Nxij9G K^5{ IDATߔ2( s _I;9]!B!WV}qeoFg?\޳Buq{7B/Mэ#ָY'e𳀶ZNN2Odf鎵e3C]-:١;n޺zך=PqDzT |s9qBY^/ӾN)/Bw!B!B\qm"&a}oֶV3pDX;)X}a5!`P^b[Z["IBa8AK~(k}lll-T7;ӽ̻!:[;H@ӽĜ4tgӱ`]w54tS% 3tOg 0ZH' JKϺmmz l-ÓS R{ B!B!bC{#ta;bmjj ˭))tT*'o׹yt-"t3v<0tvvh[[.5HtgJ5,Y6v6e%t*6[ ezL鲸tg=1C2t_z20`Irz|hnn2nlDGt_^52 ߖ_q 9 ;dMJAk}XպQYϹJu 2q.s;Ẓ@U7Sߜ27 lz;tLv+pbq]ndoW|;r%4_kdkuǿ7h{umw=}ӟq7!np<79?u !Bq%e"i@W#lu=meH& _: ;Luc9τ|ArEC Z#rAw[dIkA2جqwt{1},ĝT*.CwN Rbnǹ3&B/-;65::iӽ3g ٣]Mw}x# ^݃_A1ciyȥ_[OcS>Gߑ/g9(pB!❠s~52p׿;𮮮 [v98tOnQG)04P $zs-N2^ԬeNw72P;c\/C33tIzF8Yˬ ݭ{M] mCC䡮ݱ 6{B\/=HP uOGNs ܅ ;>H>42 {+C_ᮾKnc6*𳟻_ w!B!štnzz&Qg ɡ;+CC|*unӽ p^MmOLNNp{N1tGɜ^t4;Z=Zpe;k7J K]*E2uCw2NBw[#hutSLH>958u IwO󫯹S~u}{/Y=͈ qrlL.q !B!.{Ǯjo0h@ >[: tMnAw8"P`;:+JOtҦ; 7K2-tGLC[ "cԇl`huM5U؛=٦{R @ߺ5n*Ǧ,EB2Lkz:hii!Aws kiO_l'V %_/[ ZW.&o~g~v=/}A>w۹{۹gm_WǞp?5gcn_5?=o?>Z}쉧}#sCNx>w~<{K鯽rmnW}Hc/ ~_cv><<{ɯGQ?ᏮP|S)>.lז[>\k^—Wq7xS{xvrǩD!Bp.ϼRX!W^;qM nv92xO o5k^JAkiwpޘﲊ2r&e:I Gڭ.=^ꖖA`z56b {הtk F;YO5$)]׊ f OaP1{[[[Nwebw!6q~ǝw}B3g[=u?s۱soY;i7~}oF?[@+e!?xSzOc:5Ͽv˭gZB!>D~,p w`x6{3}l-g<c?6c7e>? =}gp4zm>\7a'B!B\h螷ŗqǿ_F{7ɷNd۶Xi8@/Vา dNw MeB G>sqYF'w#\Fzttj>>y:0';`zu^2Q!Nw4lQcck2$tT7;ݱfC2ݛ U|L/Y4th:c?=0=3*?]M4h5{?{+<~:{⩯o>pG}&ppLh*}j3p!oޡ#'=t${7?V\>sq!D!׳sH>:/?Pf໾=ol(k6Eb?yO=p^!BtO>$w/8yҕ[`Mw4?gNw2g+᧥Z=ݙMz2H>k'n е0G{c`9F]y=H~&tgN :-D/>/mg:{hC0H8{ gM!Cus7O j: $t 3too7ڝ ܅ؤ{Ǎ G>Gݟ۲entu|*}G-۷g;t$466מ9nCxo< ݿW׷^kpG7ynJ:xO}Yu_'ޟ>k7ȱ(ʃC#V*_~ hggL|xAB!A%"ON-%|,tGx/1*,s+>NGGj [fmCCt-t.52NwV!\.zf8V=`$^ 5bm4tiӽ%rWtZ# R5-A2t76f,m fOy^OAN)X7!zntZ $~ ܁x?{Vo׋-Cl43h}cCF:[wEPā; k ܱwwf2xߨ׽3˴_;^^t}wÏ+>? Zyu!B^&k4H5,h6ok&Zan^ vss[ {Cue~y3;i-5Yӽ>kYBw4Y莀lW9Y7bp"!Nw6Hz`g^flNwv_Vn\w&ت3g 44Njkw'to]M ~~Z>s֭ COdǞvgOvvZ~uyk'>c ^=:gƉ-q_{yw 7-{fSg~#{:/Vw}^Ch5׾msDp$3B!BoصWz?{dCӣFL/|PkXzLd*ɬqZ#$t`ey>q[-^H/Ӗzbr"t/0!M*to{o_y @Qt73o^w^4`#Z0 qCcmPZnv8ݧ ܅ؤ;ηݱ=Xa,az(Wz,pdž1X[/F(8c0)-[^=` 70FwÔ2C]=W)snP S_.YΏgO6{/k??(hz?B!zT_];uk>teN:ki>}0@PN:HMwֺoii&N tϴM{w JtN aMw19E2s.,tOy"NHR_~^kd@(O2h{{^Nw~fO(zsw!A_{g-lCb <khwǿ窫|(}ȱlPz=x-N+K?cwMM&;8 Y|}M`->w;ZY !B!6~Jp55fk>{ӽ %#̶G@g{ow!Nw]^ZV '9htlwk,:aket1 5J;v >tond7H|orНvyy UG2ӽMtuۡ;v%B(p?+pv˭׊>`w?^NwoJ&/~%Xo(j2Kg?/c}oxu./~w;UjCn=h Cc=^~c5~D?m~>mZc9%B!e8wƏɷN $9 3;sk;/_*2L}@X8,tGӝRTVИН Rez.2H58 ˳н1Mw܏L/C7{ca~5ydeNwCC4bO^/jNwB(p?+p~+fz#=~ GHF=; ݡz{y7yEdC8s?RO{?_ߺ>容 ܱ Dž ~|=3o͞O~[to!Bqiْ7]޵MCG^t.࿼bFg!ݟ!`#"84\FȚ,pMvK5NQLyEiZ|=P SkX,qniT`?K2;I3too==}=Z5OXyu^_#@0R vϴFCt' k diq)I2z3tO&s#\EEfF26 l(pbqg|JO~lwcٰ-sw(cp8c8t0K=[o=;'f*mO<˷3 n|m-ꪫ}PUǞ8w/}A>z*_ >Y ܱHs(ǡ-5¹s\r;A=60ֺ1\of6On&B!B\uyقϻɷNo[[Yj +Dj&~2;A8bx)ZZϓ؈nzm 9m&h&x$skn; :==;gm;^l{ $tgaOX`-L/l=@xJ qҲ_ ˜Q_o)\\w@tW.&⪌q޵מ_?7tk_{m{Fm`=kֈAl0ڵlݺvin!yhCq߹hںz>gu]}k9++ :k 9B!Bqܽ=lQkG@Y㸫(]BwUsd%%v8J2^B:~ڡ;6 qi%ւq_ZYWW-HYt ˴9-ws5L8;H5'z  s>tg@&t/f <o<<tMV({OOmAxv ul;k jC6 󮡁;7Κk IDATx p [h ܅B!B! wC&Y7Zη|}l|l2 $t?ttZcxvkי"Tb^fݹ[;D/3;30H2i K2An򫪫c |L/l/- 5b=PS})kotg^tJifz*73c?a\<tl(pB!B! \9iTwwss}^d5NS{ -}`j Cϰv9XseiQv7EvoAhW"t7;yS/>^}#{ziΚK7kOCK=}S%B2P,=D/c97km ܅B!B!a˖-nǮ 42>~ߚA̴t 3̂^&v8ƫ~pk3݉^HӝY0^/toj2jߦ^%Al}jl,tgN Bwel; tz/?sΞ˄l<ΜG}|ep0L#iɓC"{w!B!B};˯BEM q0H| pd;̭ ͊8z|Owg}lFNw~aӽ6>dq ih3>U7 Tວ'bT92}ӽ3A9raN9WY]i--Mޓ\r,3;l Nqz󡮩 w!B!B^ȱo_; "dj hWEYv()+v]5ݙzph6^ln]龘^K|8ݧ} n]3龺ĵ{{k6{M~ 6{l0k^f`TH Μ:yK&QWVfoe3YB!B!4tvE5:{Ofí(Zj #e>1Ҭ4S4f-X/Cu$f8be?ix;a>kgC~`n>Pnܝ !B!Be;xE8cgaYj ito hn#Bwt^!T҅y:H9MUAVkp0oݷ4 y5Ot?EtjӽveӽM\rt8#M9`Mwfӽ7ݡaBw|!zc@ S 6`-)t P,YNh>كINx-B!B!ٵg_F/Ҧ8Kف8IL2SvvHޕq[iB2D;q}쳶ָEHQ|Xh>2C%M&kQZx^ h{ӟgC]OC/dlAӽ +&qm;[ S,EN6S/unݏs62ЬLNw\Wu yt/#6 =UAzRSuӽF]!B!b2;v8/F؝|5?͠7Zsw_YQv?FSA|־u_U=ZXKzqIZkHz뼄^R;>3 t[|++D2$fOEeqQ;^K2\mm `>?Y''⇺.As HZ0{fw!B!B ݷt/\;j&l/>ǭk7ݗpGq̝qӽ`v ɚ]>t7pk|@2X{<@ngݱOAn%hYǝ#~&Mw/8xӽl#8f{Ggb ub;Ѩu[549LN=k^wk@6"| 򒽖!3t:`e2FbNB!B!Fe.Б['u{vgGM0 sGc)],t1mQ o|hxz(zzۭCM8tG0ϚuONNwAΔ.x#RSLFb{Z͞|߲f;6 6͞2,=`=a Fs rq{:i vvyi _!T#u"OTq !B!BlhŇ52G߼Oz;n; ٦{R6݋ ;6jj=XcsK S}@o" fX> ẏbҢ q'(]L/ÜY$i> 2zNz݅˃6|=ݵ',Z$ K=0al-^/S2lxtON}},._竸 aNF:Ke$-Drn9x L< _ظ lb^$';6p[祦7ˌ& ܅B!B!.Eu۱{߆4C#o?kCG: 3,l77"tGn,Bx4!gZbtGW]Sm|Vet[cTd2% 1Ikt-k,LbpkSS Ղ=CwlXRQ jBwK݃3r{j=Unݏ Jt/',,QOX0 lptTv1)pB!B!D\{9ROTlācRaN/VWtA,H3ok>s#ϕl}aq3L{y[NX/cnxA-NDL#_>FzCc7ݹ=/7HOXS9ӽ;3H5鳎2d}lx**LuuoN}k_GB!B!%ڳ2qćLfwjL/ ըB(Nw?]ݝ|nNwi8tHA7v^G2 8t_1>Xu^akr뾀O{>k窗,t>3zBwz Ɠ'|pz4l*4\^2,t=Օnvn6`L]!B!2}½p<^k['#H#Q=9ݡ[ -{oZ{[;v4|@Nw{/ϻzh>MNw;tG@-6;{ qkn5U^[t{v0?::?bi;ݭ'XJks3 I5Ĝ=$t/v###|-u5vtp%s bt;: !B!B\ȱot':ۓ[8t2^tgx@˗Re;p%BA5ӝe!fz!tOG=qk(]!v7 "Hne f=^qG=47|JtqUNw+t;s2Bw鞾fs?^A7 tc'ƹ;螚{& !B!B\&# X#IBn uh&zϚ;HnJt`G-`L p=JE{Iq5H5>>m&S{y^=]n7ݹ^d{SuLxslLy?ܳv n8 />~;zsF~-[p3dw!B!Btv޷a<~?a{IiѺRumuPBeݶ^7xF1k[Mn%rwE98tN&2}(tĦ;R$&F9sˠm 0{y!t\&;;Cv;ec 9&5n`e=}]^=ztgO{`NwB!B!oC' 4ݟ;|qC>|^aֶIlǯt_^vm/m' unG0|UNw4fk뗟?Cw+$Ds<)pj:1պpQ Nw|=l| {ZNw;t?I]AQP%k=Pɜ>N rƂn1b`9whӽ:Z0u?FO{ !B!B-z-nw3gHښ`{y@6[͠;鎖/s:ݭ,|Y;s{yy٦^&}N2K0HemX `CZK^fff8=0HH]2\2H\/toll r 6zzzhn; \UuU&w!B!B1tߕ !Yazr]* Zi8FnJCL=jt:f._t_}$"tGr7K{mُbj;6{ u u^=~Beuke=kZz+tON0 w[k6ݭ:r'7 ү2n=yXNwtW.B!B6s/U~x8^= ?I`rwO^zChtK^b]w!J sЦ;t8ӽ\-qeBBtzztzܝp7vV6j[ DH2Ir5tj 3K!J+5iZ*hK鵬LkCdW!J*^fezֈ וXAOX` :'뺃ܠAep443, !B!Blm LvstGȆBwKtʊBvm-ߪ ڬE5_ SHl:&T/ANw )]N^-{QtJl$t'u\$H/BQāu~Ś%;WeGЍXOX J2Fӟ56Zr` !B!Bl"nV[oB-_,tOjg2+^HNOO 6$tgua;ǕL/C^s-#᥋ v(߇eֆg^ 擦;k9l:{eƙ^&YD/tZ^+]ȓ'b GfOM Uuo١{ ݱN5 RMFNwl<)pB!B!Dvm>B(^,t!;<:ZC$S{yE3z+pBwty' X1)I>?@،X\\hu Bzt5݇6wA8r3dXΪN7^JҦ;:!Q:ݗl;;[Kt1`꺴oxkQ.B!BCϲ;= 72Xt^E5Zox45'RU.B!Bo=̯ i2qXTlhՇ8qK~Ow&p\uФح&D4p[n0bPӝ:݉Zc{z֮2O{4BPuLBBήDγBPBYy ò IDAT55UL~:ظeX>>>Nwl ܅B!B!61~2L1 GGGӽ:-ut}*M+t-:MOtnmlXAwvh9ZZA7D̆ R-vCCCf0?hɚ鎯X}y565$tM{{G96f~'us?6>JU~-DŽ' ,Ս%†OXT8aOE&zEp3_B!B!An[{e9 &']EeAt/>EAzT]z!_1]KUS {tP:StZ^Amm 92H5ECz<P.zՕꊪ ezh>E>t_!kjv9ݱJu ndc4k}yY^pkG#sCÜ,DI <<0؞%KANv+pB!B!Cwv)Zfӽetgrt_Ʉ|-_QZJĐl666ޡ9kelL!z| D/p|^hGK}iy5Q}"Q.tooCTȺ[֨|aN,dLY46',cNloCw(],W,&x ˰t^9C`z]!B!ɓ'MwsdUo=g}F3TC>4螛uuurQ!MT*E.hQF4D q,f{5 PXz< ?a%ZGK͞*3a4 S {g=`m  \w,tǓ)l{`hx𭫯5Cwx34<芍{Qg˄ X8 !B!B ӽnPT:݋F6HGgEPȆH:ݭ3d* ?cu^bt-_~|}`^ 2鎍oyCw&0VMjԪQV";JVmiiUmԪկK&ixߍff5ٱf10ca`YY`6ιgH s==yyU^֜4Tuto,t_4f·*/<]uM`{Lw߼㩉S ULd2 wI$I$I$Ip~a~<={{l~&V G鞟Ù#] .V& fsIe;ޘh,IzAw I3 2C*XιL/vmEAӝk$I3$/^ƞ\TS_k^q{tes84y']$I$I$I$c 2ʼ&TSL`{+**kd+T zj882FDƒj(ӽu𛟗/ye# 0IL@sKKlt'$[|Ʀh+ݫT-=hwy3љƆ`{F',0KUag'kG,>yDeTh]$I$I$I$ItW_UJwLwf\H*k1dw%t"g%t+k-d[21tp{t'cktu3k/3䪫h//Ư/&/LP{(^Bojm굫̙Q:=p ĕ}b-)*˰jJy楡P;c ?s4x ;72^F$I$I$I$IHLwOOC˸7Iel*gk5R1%to4R Ek`~b G(Zޚ ^<7+ZZ -C++c/I(#w\JڼM]+O+C \+}{B OM@LLh,S24k UWLwW$I$I$I$ILdZZZFkttv#]B;x8=d<鏗9V~4Qo!c_zl 31‹2DDŽL`Q&b)Tutg,MMLw \I2+NTo%t>VQ ^fr9s$I$I$I$IC~رc޸JtFf_ TW%t 7u%T^7g3?C9]]ފt{=/8 ϺD*p9`'DXy@toOdٍ3Z}5dCqILәqU3Fb~nqOCx5tQVڣ2p/S`} :UyjGp$I$I$I$I[n\_|UIe|0]]=+ñ;&i5ˏYtO--Z(^?^$iZPwTOTz02n{7e"2CF7A[x g7 `==ls.};} x ) g32srYLw$I$I$I$I;T1߲ˤNu7CL!##U9z&*UW*/ؓ}"[m{=Kpؗ]~ܿv6kz`{UUhx+Av9&\ʪS,8j^J^{ asy5C-=hwY,Le'7RK/Ù XC2 eT'tDTÙ'O#Pu~ęMMޱ2ݭ꾬Ԛ&IjKLb2COYx MA"d#|.I3a{/cO d\2%I$I$I$I۽, P1FwQ?ӽ!ВxQ7@ 5$ޛ] |H5XNLo{~%3}dZLtn~y썺iou)aM?=`3Jdkjj VLOR&tݖ/__2c!xou04~;:=iryWp$I$I$I$IƬtVԄe5R |lT{u0=d%i^Z=\x+;ZL/nkK^tgk=ٳ*=rlT#Jwt fet/VquufW]ug47t dW5FMMΎ`u981/ӌ?y`Lw `L %Jm%4|5bH,EAӝ&R-Lwo/. ݾX#!ݑDǘs$]$I$I$I$ILcǎy/[tArx;d23݇\MM Tt?=6C PP7?t?>`n`p96b} C%҄M؝|~&_7t^ӝBM]+ "oy;8LZ`4^,1\Oew2]Ro`{tBTY E\|cY"]$I$I$I$Iw 3S2(`{uuu=ggg4U3Oxn8ngk[{V~</Cƺj~p<t, Aӽ*/SV(%%/Qi%I SLTK3wvvL2Nzค2ݙwJw6XN$I$I$I$IHz;rt'ӽ*X0>>vP{(^&6ϝ?t Ge[udǎFcɾOd2c}c60Cer{(҅_#ռT#U<0x[n eR9cS-|DžuߢFwYX/rrz1Ñ.ƻIeҽ8bNVU.1z}¦Ut ,V{ \sex` cn{2,bb p$I$I$I$I޷t/((WoLw*1?}]]]]*m`~*k{3}cx& GO5RMPNIttOLw*o{[[73>0`yGU~0^9l%IzwLw4g r=OXLT;aɷv5#^&^4{1SLwo{t.I$I$I$I$}xLƂ+2Tf3c ^oǕ+&H p|7r=H4ϛ^4!2ILwSׂ`˗y)}p0ALFL8s\'t/,>hnN/tO3LP#hneYz, \3ݓ5i~"Xu"ҽp8=d3dK$I$I$I$IX~7*?4R |-r$t?}kQ5NGH5I{}epd,f}p=Y{;w>m2LfYPt}c{5WݟuL{5d+KtO噓f-<eggNM c f‚tNw#8$I$I$I$IҸMw_;FWU?^,A5/-)3z{sƍ}z5R U[e'ӝX.^3ݓޜoeڂLwݗBFw[F/7,Fwp{QQg5t-"Hdw2™A~%/oLwLP{o(ӝ1T.]$I$I$I$InVo;2UU^8FJwo||p{ẃh te.$0ݩe'ihX|De'Y ӽnX`3ǽ7d=O%P]CPxs=\L^y]d76t?2eK$I$I$I$IV~!>Ie>>*k•T=8H~Hp`;s(Ϛq_e e_g7R Vd5ݑe77GWc 22Mx*o{tzL8_>~)xcJwt.I$I$I$I$MwFew3;::Tz+݇F]c!0Ѻ`{;>Yo; x&-3-W]$CH5?z-A{yt/˴E3ݭҽ_/AMp{cScҽ_NXѵƓ.ED *}B7]$I$I$I$I42xyX 4x"oE]}mJqfcc ӧOM3^ñ(?Q;D%gtsȗ'tWeBV.ępuy ӽ>hW&tUEQ/b)>tJ0wR2]kؓt]{;22\$t1^F$I$I$I$I4\^^jD/P]Օ5G=.UebÑ2ݓDXL~.GT_o$=T]NOLwQ*ҥr;|"/NR^g,LwG,|2٪G2!=7݇ey']$I$I$I$IPD/^Jk_5С<|2LT#՚tJdtW<']l8f;.2/;*ݛqٶAӽ=cW3[Z|)#f~3æ{ݗ/TyFV^5R炦{(C ^_/&p:DLPuyssq/%45|#?QUFcV6F7QϱKJvk.g,>e |Kf{#]r]}}fNb@D``eS2}L]),.'KBOX4/IexƂּ4}cFXg&zB$I$I$I$I[nq^JkYRpeC&)3io;*ݩ.-FtMw2Ù4ubc&"ӝt;|{~!/s?wuJ*ﹶLt+2}32}}o;4RFDc=푪. xf_k K@$I$I$I$IL\o3?ӽČp{7[Yi; Fl|^oGƕ~:tf乶2^=/>8菗dMH՛>4=ALQϵ'+f{d't-<1PpBFLwߓ'W]`^)_ wI$I$I$I$G;ÛNst2TxlFlOoOFEm;~5^lh2ݻ2;q-L@#K/Y%k,8 F[{t/ctM!%{$[ut<鍺a;u=/e׭ktxޱߡs]^~TCuuLḧ#]$I$I$I$IFJʪ@vqp$ݪs22ݏxǒ4^&dt*kY$tUƙ|={v^7ӽo[@{G=/x@@8ӝ',.&DB}}} tTyݛ?ltLkWp:"=HE2-O{tӽ!/&t4R=F,ގ wI$I$I$I$G/SXX50}UTj_uuLaݛht`;Ʊҽ8AENKU4jh4p{---tT`'%~2%ua,]sMw(^tut>FD݄ܹs㏗ dEdK$I$I$I$I?JC;=/ };9V{cH#|Kp$z#ozL]i ^*2lmP F7Fc_{\utgeRT (MMLw ho{i  uc{Mwhꏗ _4 eW=FyG}ggG޸'AxF2%I$I$I$It///Ɵd'mlPT\togP{I0G=ΗUO5d;.xXw,4xFG>~6h*}'e/#]$I$I$I$IL^tOP]RZ2vXP{ ǒ`4gt';d Ǥ2&JP ;UߡP#U$>ˏ*ݓdk;bI]o{Ip\L^gxKJw.ojX#tX`>r,XLK wI$I$I$I$戗9~x*_*ODHZlȗq2kkc&4}!=d~6DD%hf3?`J{EE8lL@{X${W4Lo[ez%t]I{Xx Uz0=?aZx -řxp wI$I$I$I$WWQQ|`#[;;b#Lw}&UΙ͠NYrR1ؘ}DCKjgkw1?Ij~FDY@\-G=~nkk Gb^G2;2+Oz I_j,4hlG/=6H*ߐG Q7ٷj2݉% 6RM`8f39f-Mޱ`lw,dOD{gge7OUcI/tntb.ޱ?lK|5t7+mFJw2ݙOFŞ`L4N6/ ^,ZXl]{l]Jx$I$I$I$IMn͛WO8Tކ*kxo`vO*ߚhC'dih-PytcIK(ӝ 5RmMP%X/sԳ5+[Z25xceX.*Fv L$24@{;vrZ E,gs컂 OL2%I$I$I$I^ӽԸ1}14/)㵐X[㭖OM/Lwo7ӽh [{h1eF!ӝOMx5*ݯLw_/bEtt4%t d'k@/O TZm]piQ§=k`LEe,<]6OLep$I$I$I$Inzy睮c~X;;Vil:tiꚎiwWƙ4ݛ]St?sܹp61L-Aӽ=ԕLSLwtmmg;Jf¾cǏWuo@'XPT{I窫\g?rrsLْDUqL`_z%QoֱD+Ao6Ϝ#LwLƦFXQ?h"ȢXƒ;gl:¼g.Cfd5cmKsvs4a{\>X'Şh>.'=nm,k߼:>K?auYAX2+󠭭_>'I$I$I$I$InvUWW5v˗&l<ޗu,>Xx=/' CCc 0a|7 {} %z\%8'j]vܵq_6Np \`]]1:."̻rB!B!B!72܅B!B!B @B!B!B1pB!B!B!&B!B!B! ]!B!B!d !B!B! w!B!B!b.B!B!BL2܅B!B!B @B!B!B1pB!B!B!&B!B!B! ]!B!B!d !B!B! w!B!B!b.B!B!BL2܅B!B!B @B!B!B1pB!B!B!&B!B!B! ]!B!B!d !B!B! w!B!B!b.B!B!BL2܅B!B!B @B!B!B1pB!B!B!&B!B!B! ]!B!B!d !B!B! w!B!B!b.B!B!BL2܅B!B!B @B!B!B1pB!B!B!&B!B!B! ]!B!B!d !B!B! w!B!B!b.B!B!BL2܅B!B!B @B!B!B1pB!B!B!&B!B!B! ]!B!B!d !B!B! w!B!B!b.B!B!BL2܅B!B!B @B!B!B1pB!B!B!&BD\|'+:pB1B!Bp&a``}//׾Deee:xB|iimu}Ͻ{9=!ܛKt.\p2W^qbǷg>s$C/e+V痽iwͺm?]hkttv4x+g-p/mZ϶Nȶ[Ϟu&n}[\KK^w--k'Ntoz˭Nw-ڿOkUAmm{adi}[uݲm+)-?p{}ÙFӫ.B;2܅It}S?SKc&CNn{z3W67u,]ի#;t力3oo=?An;N8,z޶apyoxMbjwܼݾ Uk\{GǏ<;^|z[d;!{^7}ƳvϜi_|sכ&ѵԔ4=J3<-DkUkݡ9صŗݚmW_Xe׿HNII* @nZfݳ7Da J===iWXTb>k}&_䊊KtЅBcG7 T|Z'F?3?~~acH__Sok[ӯ_p՜uX' IDATUU5flgֳm]zl[?/ ?{puu#~Nm;Tf~Guuw6CCC66JW}ǙtEǻڎf/_흮Ӟmc܇)g׶n{NGǶBغ1_sr6ǕqTͿjuz8tv0(UMwr3k6:gnmmTeՈ*]ù>c'ܹ9z@`g#/]|ɞrn[ծ?8w5ͷZͬ2Cbǃ>dkhog76lpm+ccS)~m.ۣ C|˶O wɀOS~xsC&}iKqӫnJ;sE?9gL-Pf'ɜ>9;j !BB$]v5kָk׺uֹiӦ6lѪի\kkC002V C>aF W'jf`0{S2s<]-6anNQɆ cg̚J0ڨcӞe|*܂6џ8'N::Ϲ'⊊S}lɑ?33c0^f̚cf49o{': CO,,7`lqcuvv3uwa7e ;>|`\w__i3f[?4"IDv:~WX\bǽ"#hN8*cؔZ`*)7p'$ZcO> mbXb ݷ߶Ucn`pŽѼkljv3k={߶pN{vt9= Xڗ'M0>PPX%smRz?/Ev;3\iQ;&OX|)uk#=jb3]})ׯh?ETEe3gLiOD1Eǎm:Ue2,pr?}U׹W6&}0e1Ϗh[YYO>o??όiƍc"3?s^00<}m˶+҆\i1300100x7Uaw*fx`:cR5U[[gC*Ʀ&3?0=b0П46L޽ٶ>g`V@Ĥ ~5YqkVWbbİiv(>3*b1q+ѽGLg=UTSY~{Ifq,9>ݘ>lgfVcQ:@=3LHppg&Rk{I HeZ[bUk֧ wྊQfI7OoMzzÚZX` =5B!2܅ fǯy+_h1o| _pxCNooIܙ}ӟvÏ\r_ytE>n6s?sc6m__1x?E2ر;gg7~7??Cب%~"XLЇd^&Ne*OP凉FE_PiNe!\ШQr%kEdm`^Lf>c~`M:Ƌq֮{54X$U$cUgp30|kOXU$ -1Ӛ?sĆ;5f#~!:[nƬ,Dp|c9ɈQD3 (Tw>}7 lr1000Iydh!&d톗ҟ wPH4uLHXH2ܳü2sy8C$(-">gSXppq fµ6iS&?9%m /U@Ɓ> d7BX܌Or퉌as{۸Bls!cEX{hDV;9fglc8;XX9pULVY`3a!Vf7 N# h~"~xCD,d3YteE,} p=@=k\~S,Oy=iX'E! 2܅4"=6bblQQgo0P?t萛1c ̙3)S???{#;yPgE]d\p1U w ,"H0^ټ !9fMqil t*F8& E+bJQJ㓦ظcP'%K`1c"c,yWdgu^!~x}Ցs./cӆ(kn0ϱp31@OWq`_Y()9Ljx8roU͎7S[%|fR'Բ+I"b|Fr'>}Ū5 w1Xx9 Ƽb$c\#r4X܇ssƑ1K`&=769Â7#\4亍 mƐp9gۼ3}0CSS,-^ViJK=hn51_hOq@ T R?B$p%oxz;zG N4܉ʬp #yŷ(,/$oAP w!B|Hp&gς &u-bψ^9;?_җ4nyuuu䓖D=E3ɍn~acx\L?>"y[eq4̝;zeOT[LcsgΌ|k@s> 1NǴؾcņPOE{1iCrO HcfV˿Kz;TmnvE|6Q;;V͚iBdLLKKˈ}+{τ8 *cÝ&ׯO~ Lȹ'k>l+G*0000]i8nׂasf.c &21M:\gMTUT?Q}L_dUֈa nU&fY֩^@.IWcVbJom͞۵{OĈa/c;v2sK*13 |gL![Tc8 ˸S?99Ă*0S;Ӫ-3mz5D1cJE<̪~ }X XE/tvnXs* S_7SsJM&,P9q/F|jbtxev1srs\cFX i˖MꉕkE3̹ֈOE5q[Rٲ\'TTh_c'qkE5:Mnf{e[,h,\4|g_o? らKN[pPefӗYռmc",,q8YyN;Rz]s T y<] 0D k{%ڽ)vKSk7X\LC9jJ\g/8'JyJ!BBd3O<9飡s3pgܙ`dcgFW3>ϦsM.L==]1˞]Iqc1446"Tdf4E3åKZFLbMdäINfo?X 8XDN25 _,Dq_/<? =x͘EJe>݂d|xṦ'bG~ݻB#F71H~746?~aei;,F4Mp͵jw~>:2X} _e!B\N&;Vt@B!GB wU?c]TTdL1i6}tLq>=@!+79_WI w-?"&6?OߏqF׿{ioC>oG&MB!B! 2܅@wf69q)4׾~${" 8R&s\4B _eˌp+Ϝ9c?~[oo|i}Æ }sc~]!B!B|Xp&&dCUUqdJf4ٳm#x>agKKkZw]cSSں!ZQqUU׌h}$۽+׊L\]]sڌp\Zx IDAT}~0q)1)"9K9X:@3n՚un +݆6F'NDdw1_/(*v>+=z,uupҴ_P͘_=w[cas y=k"UQ?ϺssO>=LI5ݴ݌Yss}Ecd fϙ6]|1Ǿ}vpBSccS=,\fLS{ںhsKkl]g#ރξ,_'Fy -4ܷlx1W}D &^;Qt/'N;'Ï>隚[wߩʪh~KW]?ӞeQXX!H;+e-<=u_XdojjvGcb=?na#yv~ݶ(bS*z!BB!G*xľ*]j}ǭ#C`՚iS=֏1N Uk79۶;?cΝjl3ϼh{Tܘl׮^ؾ ^iۍ͘^ټ-[q}Å _szIhr-(e`7@5h.mt=ۣ  R̚lp&&R~~w0|,ͤsRx #ϱg[e|TH3xGW:~b}U[y<ƘݾzsKUb WǟrG,8=$329W\c_n{=ˎ7޴Jb畆u&1$޾ SS7տl )~u5&{ wr}($lAz?cAlZE\3Ŋ~MM T-Rc7CO2 w![vlyg~?ݟmDZ0܋8ѵU[_g /=;oas1yl׮3n;9qq,mѽ{0mm ï !B w!#Ug>6o:fU]oYѻqVV7e71(ֽ=?y ;01ccy Y=Tޛgb=D!>ۄL#dŪUVՈ{̬fSIcSq<ʒ+^O`*o6+xOMnUƯF.6d"6ymt~p׽fsVZc C/[ijݙqԝac{֌-?:Wܺ /sKSl~ڂc~}ǮNӓwF2sݲl[Sx'=8/3n5y**);JJKʹT gFHahcr@qIǬb3pn{}.55v1N~_ r L=:<97anlzcDN|q!!O`ޡ}}vl!Zd,XT>3&wb *+c цҌEp*(,u+lɧZYTg6 6[[KCd ۝4y-q5w>Ȣ&1X~~eõ"eG5c M-'ζY{ٳgm\5!B|.B|ʙHW &=z{zӆ;նTbPww921^% CSl[49{^Ä_jUMjd׮w[mm*1U6"r[cn0WYk?U?"l|ͶمE[ mʴVEK.'yƁكɟ1yRL$Ǖ/p&9M–RcsynMv7 )>jҘ,P`.x}'̜1 =?䶿-`pAz߁XTe%WU]힚<==ǘo&p;py*_Xbc8=ص u3^ܸɢYcgxQjɲfBg9Inl="~ Üpͮ< SIG/`NYXb,q276XFO`U0vmf>Ae<󜅌Xinj1b0y  ܟyG܇?O>qJe_~ڈs`I(&)ը=fcbcbdw4È2wy˘TbJ̘=Ǫ={ږV1JN<%*cj L 9{?Ԯ6{,CS=+6Q0\40ɴi8>3f"e[tL/Xӿ ~p(tw~l-UT,fPmL-gTp00ki|/UG D<OLt 6W0v[_ 8cm2ҲcyYz{'08TziT2/ol1[FŷpET\ER^1ס:|מFÙPΓ2c5:%Ӛb>ǂQGaqʱa1m I'!Ep' "{ wcڵ it  3ѽ{ik!{Ⱥ)`SqnۢB5o,r>y {+ Uw|uѵa@ќ7Nt VB#&̙VW˟1Y\$wcOL{~Ʈλ)CS{y|R:yB!pB!>P΁cNT &kmHWeTcpn֮pnW]Scխlc4D`5{02e_Xp'bJRQF.|Yz?af0G_h4f!440)Vϸ0ĴdF`qhH1UG`yb1%moƷXo%$^3Rt)-,N/o۲c{X;c1sכfjMzzŅ0gL@?JJJddK+Q[Ĵq?+O5a3j^I EXoB!@B3 swmn{{V)9(=zc5$==bO>=miA }*z sl;R67b;%H%󻉅ΖY TtSYy|;cFNaG1 q9dR+XR3+r=?l-و w2` D{sU;<7!x2ܟpgNpN&)3*q&vGG 3> 4+I 貲sB֭M$3 dg.dOMfOĈxvܸcg͒3 wW"w2vaaגqus-f&5INn$Ƹm0B!d !Q01-Xl'as=a)UTb/Jq荏c"[q[]}u1}|.ZC_0ʼnax40㿯eS}2[R~y/ՋV?MOU9 K1p w* o*E˱}6O314 f1ŀg|Th4vgDB&qhÝ{{Fǒ͙|G Jh&'Q pN1x wLÝis^eT濵g-԰TWV T ;\p| ?4h`*&fc5Hnoo[;fQ) s/ vk7 ie_Xh>cnʱ&[o5Ü7Cn<#+iL K`Uq<;MqՌFy[knkDqr͚ 5/bbÝ*Q5vђn媵#Lxqc#i3f;wxA!DBn/Z|jh5L4K7YD5f&f t4XEPOGƁE`a-X*[bSΰiF6G3 e h6ѷni@u;߁Ǿ7@zx #w03+z1i3$Qq~VUAU_a(<42}ecRrFNf}]IE-UD%`ql8鱟m30fQO b3f<}) IR T 7Ŝ|fegB7OkWݬ\?\C80{|kzu1Ȣ sB&D6L}C{`{պqܓHAEY"%(( k`iuW~O.wzw8$V|QAh@KKw`DjB[ѓFw>zVAZ:}MjKMK;?=l( ``?c ^Lr#SJUU_`alH/*gC *ԗYafѡ۩iU yѕ Ut\1sǵ?]pT UUѣ*5yF]-Y#S&llj8_9s'ڵz}!o5Ȝe g|lj{>.9<*{{_qtGʗJ^`?XX_{  8zï *f,\`Mv?(Uw;-s落Ok#pX XUMފf }#p wb p w8q򴕔[Ѧ2+Y ̹ 699 llj>]͛a~ ~_g[go r̭j"xĖ~~ ʷ|9FGGgGZYƂu? ۑ5lkUoa==Oph=|Ȟtvڻwfs{zv<ƭMǴݳgm||_4 p,[~v-' ,#3*Uۛ7z__o!;ϒ3^x^m۫ʵ>_c-={,;'קڱ 6>1?}fkm{@DIf[j733v n2j)3|-_Ǝ5{U\Bj]޽{/^kW?IR[mVX\:<6WT֪VOLJ>䉇/-9m7>%vz{{UqVe_0;? ]v⋂{߽om0"*kWs^*[ZZgSjmBtTk.LJ޼Ox[/wdt}sUrjgtN=ON_ NLLڃ6/ZF-evG_4W˘S2oj2:iZ,^+~}v:o^ZKIʝ~Kj?s:s߶Ǝk~"+TiS0;? /oKmkmlŽUTVy=~Vc'ct^Eť1++s?ﵟ~]Y [\B]1WmAקlb7p4@PДar--#C##nɲ^iYRZn6YJopΊvq >4KqHh |;_4'x\i-"{[[f۷WGFST>\=jFqk >c ,LȲ+WĚu?z?CD#p]} tGmtͪ@6'X] ]hVՇ:*v%WFn6:Uj{>c 7\7>gW2ys?ɻ`QxkpVI+⼇oH D,>!ɺmphȮ]ၷZ%$ڝ2R/_W-^5u|jEс5V/}=whS?\H 9ßZ^ XwwedZ2߱kWƫ˗/fSU촿N<ퟑ._[ (Tn 7~̶M/y*w>|F_+ \v"p/R2g]kJoUV?qƒnVf:-][($)|P,۶Du MMsw;,\ng_Tp~uzM3m$IDAT`K]y!x{{zf>r17dً~ U+ib[*`hRMJN\3ak-z|;w-OAp0Vf}JtNl>٩iQIݩW!=@w/ u˻<N}Þq;FĤTUcA֫}'&'-M]{RrYAUԆ&3'~*UkTTn=u|ܻߒRu]@U*Ua[0k [%ev_N:c`Eׯfn ]m,. Νo[< E*5QuQ w= Rή.P(~>AUj6ዃ߽l۲_VhLN}w9V{* |) P*Up-'{S@[elt?Phi#omdd+0S<=p_-*pU ^h#p?p舟RQՈjDmkT][\96]8>| 3骆@1UKN켍lG`oU ~5z^Mk!fx_v]V' tAUM?IV5бruK]6)L%/^mgDjzWn$VW2s [ܽCٰǹnWKUKxM2pYvݾ+U;\U(/lo62ᄝ ?xr5ʼn}3g{:*S7x^с1 UE[Al-[\+}*^-fjvYuj U}su63:_U+WOL~x'&&}>^tkVZVn {k??+̣b^x`yp?WލZ&\5A=Oဂ*|)4-*|+ {7x- :eŪxoӢ.kjoU{n{N (gdf-VڷUk ͥbk>s6ڝȞtv͚'d*zص뉉IXv*Z*Me&soˢz-:p=GU,^fZĤߗ^2}u:wk@M*~ 2467/-׫}i:\u&o 0uDs l}+w~@ \bj.Y/[iɩν{nDoIi:sۙ(JuUn拗}ꑮ xUM7mmRi>Y . S3檪8Zc)0ױB ?xhݏELӧv۷UzHAq\߱9onݜ2z^׫K!{V8ɓ\xn.n{}~U%?w;hs I;1@@ p:}vummwlo]Wv|嚟=w9f>1CXEVTR6ﺛ-vWq KJI?}>Y^a_V^a1 BQ\Rfe[]72:jР};bCC?`S|݉-=3'{ǏԔ=}:pg;wG~u\y_"&-{=u ݻwv9%VQYeS"-cN^z^kIi]~Î8md'E=pW}o-d:|['OLkd}={묮O>NB;`AZTkjj|QKd3=܋7Yuv٪5ijjF$,+'r>5{F/w/ZҌڭ6[t1ʷl 0pW 7#p,={-!)ŒӃ%F}玵ݶ-3ϫ"uXQIW_|*VEzw<~b9yWĩuSiݻ?-,-#&&[E6S_,|ݾj{'ORyom~~xbB p wb p wb p wb p wb p wb p wb p wb p wbĀ!IENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/tomango/index.md000066400000000000000000000032271507671574500250570ustar00rootroot00000000000000--- title: Tomango date: 2018-05-04 description: 'Showcase: "Tomango site relaunch: Building our JAMstack site"' siteURL: https://www.tomango.co.uk siteSource: https://github.com/trys/tomango-2018 byline: "[Trys Mudford](https://www.trysmudford.com), Lead Developer, Tomango" --- Hugo is our static site generator (SSG) of choice. It's **really quick**. After using it on a number of [client projects](/showcase/hartwell-insurance/), it became clear that our new site _had_ to be built with Hugo. The big benefit of an SSG is how it moves all the heavy lifting to the build time. For example in WordPress, all the category pages are created at runtime, generating a lot of database queries. In Hugo, the paginated category pages are created at build time - so all the computational complexity is done once, and doesn't impact the user at all. Similarly, instead of running a live, or even a heavily cached Instagram feed that checked for new photos on page load, we used IFTTT to flip the feature to work performantly. I've [written about it](https://www.trysmudford.com/blog/making-the-static-dynamic-instagram-importer/) in detail on my blog but in essence: IFTTT sends a webhook to a Netlify Cloud Function every time a photo is uploaded. The function scrapes the photo and commits it to our GitHub repo which triggers a Hugo build on Netlify, deploying the site immediately! Shortcodes allow copy editors to continue using WordPress-esque features, Markdown keeps our developers happy, and our users don't have any of the database overheads. It's win-win! --- This is an extract from our [technical launch post](https://www.tomango.co.uk/thinks/tomango-progressive-web-app/). gohugoio-hugo-6abdaca/docs/content/en/templates/000077500000000000000000000000001507671574500221405ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/templates/404.md000066400000000000000000000043771507671574500230040ustar00rootroot00000000000000--- title: Custom 404 page linkTitle: 404 templates description: Create a template to render a 404 error page. categories: [] keywords: [] weight: 190 --- To render a 404 error page in the root of your site, create a 404 template in the root of the `layouts` directory. For example: ```go-html-template {file="layouts/404.html"} {{ define "main" }}

        404 Not Found

        The page you requested cannot be found.

        Return to the home page

        {{ end }} ``` For multilingual sites, add the language key to the file name: ```text layouts/ ├── 404.de.html ├── 404.en.html └── 404.fr.html ``` Your production server redirects the browser to the 404 page when a page is not found. Capabilities and configuration vary by host. Host|Capabilities and configuration :--|:-- Amazon CloudFront|See [details](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GeneratingCustomErrorResponses.html). Amazon S3|See [details](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CustomErrorDocSupport.html). Apache|See [details](https://httpd.apache.org/docs/2.4/custom-error.html). Azure Static Web Apps|See [details](https://learn.microsoft.com/en-us/azure/static-web-apps/configuration#response-overrides). Azure Storage|See [details](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website#setting-up-a-static-website). Caddy|See [details](https://caddyserver.com/docs/caddyfile/directives/handle_errors). Cloudflare Pages|See [details](https://developers.cloudflare.com/pages/configuration/serving-pages/#not-found-behavior). DigitalOcean App Platform|See [details](https://docs.digitalocean.com/products/app-platform/how-to/manage-static-sites/#configure-a-static-site). Firebase|See [details](https://firebase.google.com/docs/hosting/full-config#404). GitHub Pages|Redirection to is automatic and not configurable. GitLab Pages|See [details](https://docs.gitlab.com/ee/user/project/pages/introduction.html#custom-error-codes-pages). NGINX|See [details](https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page). Netlify|See [details](https://docs.netlify.com/routing/redirects/redirect-options/). gohugoio-hugo-6abdaca/docs/content/en/templates/_index.md000066400000000000000000000002761507671574500237350ustar00rootroot00000000000000--- title: Templates description: Create templates to render your content, resources, and data. categories: [] keywords: [] weight: 10 aliases: [/templates/overview/,/templates/content] --- gohugoio-hugo-6abdaca/docs/content/en/templates/embedded.md000066400000000000000000000170651507671574500242240ustar00rootroot00000000000000--- title: Embedded partial templates description: Hugo provides embedded partial templates for common use cases. categories: [] keywords: [] weight: 170 aliases: [/templates/internal] --- {{< newtemplatesystem >}} ## Disqus > [!note] > To override Hugo's embedded Disqus template, copy the [source code]({{% eturl disqus %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function: > > `{{ partial "disqus.html" . }}` Hugo includes an embedded template for [Disqus], a popular commenting system for both static and dynamic websites. To effectively use Disqus, secure a Disqus "shortname" by [signing up] for the free service. To include the embedded template: ```go-html-template {{ partial "disqus.html" . }} ``` ### Configuration {#configuration-disqus} To use Hugo's Disqus template, first set up a single configuration value: {{< code-toggle file=hugo >}} [services.disqus] shortname = 'your-disqus-shortname' {{}} Hugo's Disqus template accesses this value with: ```go-html-template {{ .Site.Config.Services.Disqus.Shortname }} ``` You can also set the following in the front matter for a given piece of content: - `disqus_identifier` - `disqus_title` - `disqus_url` ### Privacy {#privacy-disqus} Adjust the relevant privacy settings in your site configuration. {{< code-toggle config=privacy.disqus />}} disable : (`bool`) Whether to disable the template. Default is `false`. ## Google Analytics > [!note] > To override Hugo's embedded Google Analytics template, copy the [source code]({{% eturl google_analytics %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function: > > `{{ partial "google_analytics.html" . }}` Hugo includes an embedded template supporting [Google Analytics 4]. To include the embedded template: ```go-html-template {{ partial "google_analytics.html" . }} ``` ### Configuration {#configuration-google-analytics} Provide your tracking ID in your configuration file: {{< code-toggle file=hugo >}} [services.googleAnalytics] id = "G-MEASUREMENT_ID" {{}} To use this value in your own template, access the configured ID with `{{ site.Config.Services.GoogleAnalytics.ID }}`. ### Privacy {#privacy-google-analytics} Adjust the relevant privacy settings in your site configuration. {{< code-toggle config=privacy.googleAnalytics />}} disable : (`bool`) Whether to disable the template. Default is `false`. respectDoNotTrack : (`bool`) Whether to respect the browser's "do not track" setting. Default is `false`. ## Open Graph > [!note] > To override Hugo's embedded Open Graph template, copy the [source code]({{% eturl opengraph %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function: > > `{{ partial "opengraph.html" . }}` Hugo includes an embedded template for the [Open Graph protocol](https://ogp.me/), metadata that enables a page to become a rich object in a social graph. This format is used for Facebook and some other sites. To include the embedded template: ```go-html-template {{ partial "opengraph.html" . }} ``` ### Configuration {#configuration-open-graph} Hugo's Open Graph template is configured using a mix of configuration settings and [front matter](/content-management/front-matter/) on individual pages. {{< code-toggle file=hugo >}} [params] description = 'Text about my cool site' images = ['site-feature-image.jpg'] title = 'My cool site' [params.social] facebook_admin = 'jsmith' [taxonomies] series = 'series' {{}} {{< code-toggle file=content/blog/my-post.md fm=true >}} title = "Post title" description = "Text about this post" date = 2024-03-08T08:18:11-08:00 images = ["post-cover.png"] audio = [] videos = [] series = [] tags = [] {{}} Hugo uses the page title and description for the title and description metadata. The first 6 URLs from the `images` array are used for image metadata. If [page bundles](/content-management/page-bundles/) are used and the `images` array is empty or undefined, images with file names matching `*feature*`, `*cover*`, or `*thumbnail*` are used for image metadata. Various optional metadata can also be set: - Date, published date, and last modified data are used to set the published time metadata if specified. - `audio` and `videos` are URL arrays like `images` for the audio and video metadata tags, respectively. - The first 6 `tags` on the page are used for the tags metadata. - The `series` taxonomy is used to specify related "see also" pages by placing them in the same series. If using YouTube this will produce a og:video tag like ``. Use the `https://youtu.be/` format with YouTube videos (example: `https://youtu.be/qtIqKaDlqXo`). ## Pagination See [details](/templates/pagination/). ## Schema > [!note] > To override Hugo's embedded Schema template, copy the [source code]({{% eturl schema %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function: > > `{{ partial "schema.html" . }}` Hugo includes an embedded template to render [microdata] `meta` elements within the `head` element of your templates. To include the embedded template: ```go-html-template {{ partial "schema.html" . }} ``` ## X (Twitter) Cards > [!note] > To override Hugo's embedded Twitter Cards template, copy the [source code]({{% eturl twitter_cards %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function: > > `{{ partial "twitter_cards.html" . }}` Hugo includes an embedded template for [X (Twitter) Cards](https://developer.x.com/en/docs/twitter-for-websites/cards/overview/abouts-cards), metadata used to attach rich media to Tweets linking to your site. To include the embedded template: ```go-html-template {{ partial "twitter_cards.html" . }} ``` ### Configuration {#configuration-x-cards} Hugo's X (Twitter) Card template is configured using a mix of configuration settings and [front-matter](/content-management/front-matter/) values on individual pages. {{< code-toggle file=hugo >}} [params] images = ["site-feature-image.jpg"] description = "Text about my cool site" {{}} {{< code-toggle file=content/blog/my-post.md fm=true >}} title = "Post title" description = "Text about this post" images = ["post-cover.png"] {{}} If [page bundles](/content-management/page-bundles/) are used and the `images` array is empty or undefined, images with file names matching `*feature*`, `*cover*`, or `*thumbnail*` are used for image metadata. If no image resources with those names are found, the images defined in the [site config](/configuration/) are used instead. If no images are found at all, then an image-less Twitter `summary` card is used instead of `summary_large_image`. Hugo uses the page title and description for the card's title and description fields. The page summary is used if no description is given. Set the value of `twitter:site` in your site configuration: {{< code-toggle file=hugo >}} [params.social] twitter = "GoHugoIO" {{}} NOTE: The `@` will be added for you ```html ``` [`partial`]: /functions/partials/include/ [Disqus]: https://disqus.com [Google Analytics 4]: https://support.google.com/analytics/answer/10089681 [microdata]: https://html.spec.whatwg.org/multipage/microdata.html#microdata [signing up]: https://disqus.com/profile/signup/ gohugoio-hugo-6abdaca/docs/content/en/templates/introduction.md000066400000000000000000000374401507671574500252130ustar00rootroot00000000000000--- title: Introduction to templating linkTitle: Introduction description: An introduction to Hugo's templating syntax. categories: [] keywords: [] weight: 10 --- {{< newtemplatesystem >}} {{% glossary-term template %}} Templates use [variables], [functions], and [methods] to transform your content, resources, and data into a published page. > [!note] > Hugo uses Go's [text/template] and [html/template] packages. > > The text/template package implements data-driven templates for generating textual output, while the html/template package implements data-driven templates for generating HTML output safe against code injection. > > By default, Hugo uses the html/template package when rendering HTML files. For example, this HTML template initializes the `$v1` and `$v2` variables, then displays them and their product within an HTML paragraph. ```go-html-template {{ $v1 := 6 }} {{ $v2 := 7 }}

        The product of {{ $v1 }} and {{ $v2 }} is {{ mul $v1 $v2 }}.

        ``` While HTML templates are the most common, you can create templates for any [output format](g) including CSV, JSON, RSS, and plain text. ## Context The most important concept to understand before creating a template is _context_, the data passed into each template. The data may be a simple value, or more commonly [objects](g) and associated [methods](g). For example, a _page_ template receives a `Page` object, and the `Page` object provides methods to return values or perform actions. ### Current context Within a template, the dot (`.`) represents the current context. ```go-html-template {file="layouts/page.html"}

        {{ .Title }}

        ``` In the example above the dot represents the `Page` object, and we call its [`Title`] method to return the title as defined in [front matter]. The current context may change within a template. For example, at the top of a template the context might be a `Page` object, but we rebind the context to another value or object within [`range`] or [`with`] blocks. ```go-html-template {file="layouts/page.html"}

        {{ .Title }}

        {{ range slice "foo" "bar" }}

        {{ . }}

        {{ end }} {{ with "baz" }}

        {{ . }}

        {{ end }} ``` In the example above, the context changes as we `range` through the [slice](g) of values. In the first iteration the context is "foo", and in the second iteration the context is "bar". Inside of the `with` block the context is "baz". Hugo renders the above to: ```html

        My Page Title

        foo

        bar

        baz

        ``` ### Template context Within a `range` or `with` block you can access the context passed into the template by prepending a dollar sign (`$`) to the dot: ```go-html-template {file="layouts/page.html"} {{ with "foo" }}

        {{ $.Title }} - {{ . }}

        {{ end }} ``` Hugo renders this to: ```html

        My Page Title - foo

        ``` > [!note] > Make sure that you thoroughly understand the concept of _context_ before you continue reading. The most common templating errors made by new users relate to context. ## Actions In the examples above the paired opening and closing braces represent the beginning and end of a template action, a data evaluation or control structure within a template. A template action may contain literal values ([boolean](g), [string](g), [integer](g), and [float](g)), variables, functions, and methods. ```go-html-template {file="layouts/page.html"} {{ $convertToLower := true }} {{ if $convertToLower }}

        {{ strings.ToLower .Title }}

        {{ end }} ``` In the example above: - `$convertToLower` is a variable - `true` is a literal boolean value - `strings.ToLower` is a function that converts all characters to lowercase - `Title` is a method on a the `Page` object Hugo renders the above to: ```html

        my page title

        ``` ### Whitespace Notice the blank lines and indentation in the previous example? Although irrelevant in production when you typically minify the output, you can remove the adjacent whitespace by using template action delimiters with hyphens: ```go-html-template {file="layouts/page.html"} {{- $convertToLower := true -}} {{- if $convertToLower -}}

        {{ strings.ToLower .Title }}

        {{- end -}} ``` Hugo renders this to: ```html

        my page title

        ``` Whitespace includes spaces, horizontal tabs, carriage returns, and newlines. ### Pipes Within a template action you may [pipe](g) a value to a function or method. The piped value becomes the final argument to the function or method. For example, these are equivalent: ```go-html-template {{ strings.ToLower "Hugo" }} → hugo {{ "Hugo" | strings.ToLower }} → hugo ``` You can pipe the result of one function or method into another. For example, these are equivalent: ```go-html-template {{ strings.TrimSuffix "o" (strings.ToLower "Hugo") }} → hug {{ "Hugo" | strings.ToLower | strings.TrimSuffix "o" }} → hug ``` These are also equivalent: ```go-html-template {{ mul 6 (add 2 5) }} → 42 {{ 5 | add 2 | mul 6 }} → 42 ``` > [!note] > Remember that the piped value becomes the final argument to the function or method to which you are piping. ### Line splitting You can split a template action over two or more lines. For example, these are equivalent: ```go-html-template {{ $v := or $arg1 $arg2 }} {{ $v := or $arg1 $arg2 }} ``` You can also split [raw string literals](g) over two or more lines. For example, these are equivalent: ```go-html-template {{ $msg := "This is line one.\nThis is line two." }} {{ $msg := `This is line one. This is line two.` }} ``` ## Variables A variable is a user-defined [identifier](g) prepended with a dollar sign (`$`), representing a value of any data type, initialized or assigned within a template action. For example, `$foo` and `$bar` are variables. Variables may contain [scalars](g), [slices](g), [maps](g), or [objects](g). Use `:=` to initialize a variable, and use `=` to assign a value to a variable that has been previously initialized. For example: ```go-html-template {{ $total := 3 }} {{ range slice 7 11 21 }} {{ $total = add $total . }} {{ end }} {{ $total }} → 42 ``` Variables initialized inside of an `if`, `range`, or `with` block are scoped to the block. Variables initialized outside of these blocks are scoped to the template. With variables that represent a slice or map, use the [`index`] function to return the desired value. ```go-html-template {{ $slice := slice "foo" "bar" "baz" }} {{ index $slice 2 }} → baz {{ $map := dict "a" "foo" "b" "bar" "c" "baz" }} {{ index $map "c" }} → baz ``` > [!note] > Slices and arrays are zero-based; element 0 is the first element. With variables that represent a map or object, [chain](g) identifiers to return the desired value or to access the desired method. ```go-html-template {{ $map := dict "a" "foo" "b" "bar" "c" "baz" }} {{ $map.c }} → baz {{ $homePage := .Site.Home }} {{ $homePage.Title }} → My Homepage ``` > [!note] > As seen above, object and method names are capitalized. Although not required, to avoid confusion we recommend beginning variable and map key names with a lowercase letter or underscore. ## Functions Used within a template action, a function takes one or more arguments and returns a value. Unlike methods, functions are not associated with an object. Go's text/template and html/template packages provide a small set of functions, operators, and statements for general use. See the [go-templates] section of the function documentation for details. Hugo provides hundreds of custom [functions] categorized by namespace. For example, the `strings` namespace includes these and other functions: Function|Alias :--|:-- [`strings.ToLower`](/functions/strings/tolower)|`lower` [`strings.ToUpper`](/functions/strings/toupper)|`upper` [`strings.Replace`](/functions/strings/replace)|`replace` As shown above, frequently used functions have an alias. Use aliases in your templates to reduce code length. When calling a function, separate the arguments from the function, and from each other, with a space. For example: ```go-html-template {{ $total := add 1 2 3 4 }} ``` ## Methods Used within a template action and associated with an object, a method takes zero or more arguments and either returns a value or performs an action. The most commonly accessed objects are the [`Page`] and [`Site`] objects. This is a small sampling of the [methods] available to each object. Object|Method|Description :--|:--|:-- `Page`|[`Date`](methods/page/date/)|Returns the date of the given page. `Page`|[`Params`](methods/page/params/)|Returns a map of custom parameters as defined in the front matter of the given page. `Page`|[`Title`](methods/page/title/)|Returns the title of the given page. `Site`|[`Data`](methods/site/data/)|Returns a data structure composed from the files in the `data` directory. `Site`|[`Params`](methods/site/params/)|Returns a map of custom parameters as defined in the site configuration. `Site`|[`Title`](methods/site/title/)|Returns the title as defined in the site configuration. Chain the method to its object with a dot (`.`) as shown below, remembering that the leading dot represents the [current context]. ```go-html-template {file="layouts/page.html"} {{ .Site.Title }} → My Site Title {{ .Page.Title }} → My Page Title ``` The context passed into most templates is a `Page` object, so this is equivalent to the previous example: ```go-html-template {file="layouts/page.html"} {{ .Site.Title }} → My Site Title {{ .Title }} → My Page Title ``` Some methods take an argument. Separate the argument from the method with a space. For example: ```go-html-template {file="layouts/page.html"} {{ $page := .Page.GetPage "/books/les-miserables" }} {{ $page.Title }} → Les Misérables ``` ## Comments > [!note] > Do not attempt to use HTML comment delimiters to comment out template code. > > Hugo strips HTML comments when rendering a page, but first evaluates any template code within the HTML comment delimiters. Depending on the template code within the HTML comment delimiters, this could cause unexpected results or fail the build. Template comments are similar to template actions. Paired opening and closing braces represent the beginning and end of a comment. For example: ```text {{/* This is an inline comment. */}} {{- /* This is an inline comment with adjacent whitespace removed. */ -}} ``` Code within a comment is not parsed, executed, or displayed. Comments may be inline, as shown above, or in block form: ```text {{/* This is a block comment. */}} {{- /* This is a block comment with adjacent whitespace removed. */ -}} ``` You may not nest one comment inside of another. To render an HTML comment, pass a string through the [`safeHTML`] template function. For example: ```go-html-template {{ "" | safeHTML }} {{ printf "" .Site.Title | safeHTML }} ``` ## Include Use the [`template`] function to include one or more of Hugo's [embedded templates]: ```go-html-template {{ partial "google_analytics.html" . }} {{ partial "opengraph" . }} {{ partial "pagination.html" . }} {{ partial "schema.html" . }} {{ partial "twitter_cards.html" . }} ``` Use the [`partial`] or [`partialCached`] function to include one or more [partial templates]: ```go-html-template {{ partial "breadcrumbs.html" . }} {{ partialCached "css.html" . }} ``` Create your _partial_ templates in the `layouts/_partials` directory. > [!note] > In the examples above, note that we are passing the current context (the dot) to each of the templates. ## Examples This limited set of contrived examples demonstrates some of concepts described above. Please see the [functions], [methods], and [templates] documentation for specific examples. ### Conditional blocks See documentation for [`if`], [`else`], and [`end`]. ```go-html-template {{ $var := 42 }} {{ if eq $var 6 }} {{ print "var is 6" }} {{ else if eq $var 7 }} {{ print "var is 7" }} {{ else if eq $var 42 }} {{ print "var is 42" }} {{ else }} {{ print "var is something else" }} {{ end }} ``` ### Logical operators See documentation for [`and`] and [`or`]. ```go-html-template {{ $v1 := true }} {{ $v2 := false }} {{ $v3 := false }} {{ $result := false }} {{ if and $v1 $v2 $v3 }} {{ $result = true }} {{ end }} {{ $result }} → false {{ if or $v1 $v2 $v3 }} {{ $result = true }} {{ end }} {{ $result }} → true ``` ### Loops See documentation for [`range`], [`else`], and [`end`]. ```go-html-template {{ $s := slice "foo" "bar" "baz" }} {{ range $s }}

        {{ . }}

        {{ else }}

        The collection is empty

        {{ end }} ``` To loop a specified number of times: ```go-html-template {{ $s := slice }} {{ range 3 }} {{ $s = $s | append . }} {{ end }} {{ $s }} → [0 1 2] ``` ### Rebind context See documentation for [`with`], [`else`], and [`end`]. ```go-html-template {{ $var := "foo" }} {{ with $var }} {{ . }} → foo {{ else }} {{ print "var is falsy" }} {{ end }} ``` To test multiple conditions: ```go-html-template {{ $v1 := 0 }} {{ $v2 := 42 }} {{ with $v1 }} {{ . }} {{ else with $v2 }} {{ . }} → 42 {{ else }} {{ print "v1 and v2 are falsy" }} {{ end }} ``` ### Access site parameters See documentation for the [`Params`](/methods/site/params/) method on a `Site` object. With this site configuration: {{< code-toggle file=hugo >}} title = 'ABC Widgets' baseURL = 'https://example.org' [params] subtitle = 'The Best Widgets on Earth' copyright-year = '2023' [params.author] email = 'jsmith@example.org' name = 'John Smith' [params.layouts] rfc_1123 = 'Mon, 02 Jan 2006 15:04:05 MST' rfc_3339 = '2006-01-02T15:04:05-07:00' {{< /code-toggle >}} Access the custom site parameters by chaining the identifiers: ```go-html-template {{ .Site.Params.subtitle }} → The Best Widgets on Earth {{ .Site.Params.author.name }} → John Smith {{ $layout := .Site.Params.layouts.rfc_1123 }} {{ .Site.Lastmod.Format $layout }} → Tue, 17 Oct 2023 13:21:02 PDT ``` ### Access page parameters See documentation for the [`Params`](/methods/page/params/) method on a `Page` object. By way of example, consider this front matter: {{< code-toggle file=content/annual-conference.md fm=true >}} title = 'Annual conference' date = 2023-10-17T15:11:37-07:00 [params] display_related = true key-with-hyphens = 'must use index function' [params.author] email = 'jsmith@example.org' name = 'John Smith' {{< /code-toggle >}} The `title` and `date` fields are standard [front matter fields], while the other fields are user-defined. Access the custom fields by [chaining](g) the [identifiers](g) when needed: ```go-html-template {{ .Params.display_related }} → true {{ .Params.author.email }} → jsmith@example.org {{ .Params.author.name }} → John Smith ``` In the template example above, each of the keys is a valid identifier. For example, none of the keys contains a hyphen. To access a key that is not a valid identifier, use the [`index`] function: ```go-html-template {{ index .Params "key-with-hyphens" }} → must use index function ``` [`and`]: /functions/go-template/and [`else`]: /functions/go-template/else/ [`end`]: /functions/go-template/end/ [`if`]: /functions/go-template/if/ [`index`]: /functions/collections/indexfunction/ [`or`]: /functions/go-template/or [`Page`]: /methods/page/ [`partial`]: /functions/partials/include/ [`partialCached`]: /functions/partials/includecached/ [`range`]: /functions/go-template/range/ [`safeHTML`]: /functions/safe/html [`Site`]: /methods/site/ [`template`]: /functions/go-template/template/ [`Title`]: /methods/page/title [`with`]: /functions/go-template/with/ [current context]: #current-context [embedded templates]: /templates/embedded/ [front matter]: /content-management/front-matter/ [front matter fields]: /content-management/front-matter/#fields [functions]: /functions/ [go-templates]: /functions/go-template/ [html/template]: https://pkg.go.dev/html/template [methods]: /methods/ [partial templates]: /templates/types/#partial [templates]: /templates/ [text/template]: https://pkg.go.dev/text/template [variables]: #variables gohugoio-hugo-6abdaca/docs/content/en/templates/lookup-order.md000066400000000000000000000066611507671574500251150ustar00rootroot00000000000000--- title: Template lookup order linkTitle: Lookup order description: Hugo uses the rules below to select a template for a given page, starting from the most specific. categories: [] keywords: [] weight: 20 --- {{< newtemplatesystem >}} ## Lookup rules Hugo takes the parameters listed below into consideration when choosing a template for a given page. The templates are ordered by specificity. This should feel natural, but look at the table below for concrete examples of the different parameter variations. Kind : The page `Kind` (the home page is one). See the example tables below per kind. This also determines if it is a **single page** (i.e. a regular content page. We then look for a template in `_default/single.html` for HTML) or a **list page** (section listings, home page, taxonomy lists, taxonomy terms. We then look for a template in `_default/list.html` for HTML). Layout : Can be set in front matter. Output Format : See [configure output formats](/configuration/output-formats/). An output format has both a `name` (e.g. `rss`, `amp`, `html`) and a `suffix` (e.g. `xml`, `html`). We prefer matches with both (e.g. `index.amp.html`), but look for less specific templates. Note that if the output format's Media Type has more than one suffix defined, only the first is considered. Language : We will consider a language tag in the template name. If the site language is `fr`, `index.fr.amp.html` will win over `index.amp.html`, but `index.amp.html` will be chosen before `index.fr.html`. Type : Is value of `type` if set in front matter, else it is the name of the root section (e.g. "blog"). It will always have a value, so if not set, the value is "page". Section : Is relevant for `section`, `taxonomy` and `term` types. > [!note] > Templates can live in either the project's or the themes' `layout` directories, and the most specific templates will be chosen. Hugo will interleave the lookups listed below, finding the most specific one either in the project or themes. ## Target a template You cannot change the lookup order to target a content page, but you can change a content page to target a template. Specify `type`, `layout`, or both in front matter. Consider this content structure: ```text content/ ├── about.md └── contact.md ``` Files in the root of the `content` directory have a [content type](g) of `page`. To render these pages with a unique template, create a matching subdirectory: ```text layouts/ └── page/ └── single.html ``` But the contact page probably has a form and requires a different template. In the front matter specify `layout`: {{< code-toggle file=content/contact.md fm=true >}} title = 'Contact' layout = 'contact' {{< /code-toggle >}} Then create the template for the contact page: ```text layouts/ └── page/ └── contact.html <-- renders contact.md └── single.html <-- renders about.md ``` As a content type, the word `page` is vague. Perhaps `miscellaneous` would be better. Add `type` to the front matter of each page: {{< code-toggle file=content/about.md fm=true >}} title = 'About' type = 'miscellaneous' {{< /code-toggle >}} {{< code-toggle file=content/contact.md fm=true >}} title = 'Contact' type = 'miscellaneous' layout = 'contact' {{< /code-toggle >}} Now place the layouts in the corresponding directory: ```text layouts/ └── miscellaneous/ └── contact.html <-- renders contact.md └── single.html <-- renders about.md ``` gohugoio-hugo-6abdaca/docs/content/en/templates/menu.md000066400000000000000000000100331507671574500234230ustar00rootroot00000000000000--- title: Menu templates description: Create templates to render one or more menus. categories: [] keywords: [] weight: 150 aliases: [/templates/menus/,/templates/menu-templates/] --- ## Overview After [defining menu entries], use [menu methods] to render a menu. Three factors determine how to render a menu: 1. The method used to define the menu entries: [automatic], [in front matter], or [in site configuration] 1. The menu structure: flat or nested 1. The method used to [localize the menu entries]: site configuration or translation tables The example below handles every combination. ## Example This _partial_ template recursively "walks" a menu structure, rendering a localized, accessible nested list. ```go-html-template {file="layouts/_partials/menu.html" copy=true} {{- $page := .page }} {{- $menuID := .menuID }} {{- with index site.Menus $menuID }} {{- end }} {{- define "_partials/inline/menu/walk.html" }} {{- $page := .page }} {{- range .menuEntries }} {{- $attrs := dict "href" .URL }} {{- if $page.IsMenuCurrent .Menu . }} {{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }} {{- else if $page.HasMenuCurrent .Menu .}} {{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }} {{- end }} {{- $name := .Name }} {{- with .Identifier }} {{- with T . }} {{- $name = . }} {{- end }} {{- end }}
      3. {{ $name }} {{- with .Children }}
          {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
        {{- end }}
      4. {{- end }} {{- end }} ``` Call the partial above, passing a menu ID and the current page in context. ```go-html-template {file="layouts/page.html"} {{ partial "menu.html" (dict "menuID" "main" "page" .) }} {{ partial "menu.html" (dict "menuID" "footer" "page" .) }} ``` ## Page references Regardless of how you [define menu entries], an entry associated with a page has access to page context. This simplistic example renders a page parameter named `version` next to each entry's `name`. Code defensively using `with` or `if` to handle entries where (a) the entry points to an external resource, or (b) the `version` parameter is not defined. ```go-html-template {file="layouts/page.html"} {{- range site.Menus.main }} {{ .Name }} {{- with .Page }} {{- with .Params.version -}} ({{ . }}) {{- end }} {{- end }} {{- end }} ``` ## Menu entry parameters When you define menu entries [in site configuration] or [in front matter], you can include a `params` key as shown in these examples: - [Menu entry defined in site configuration] - [Menu entry defined in front matter] This simplistic example renders a `class` attribute for each anchor element. Code defensively using `with` or `if` to handle entries where `params.class` is not defined. ```go-html-template {file="layouts/_partials/menu.html"} {{- range site.Menus.main }} {{ .Name }} {{- end }} ``` ## Localize Hugo provides two methods to localize your menu entries. See [multilingual]. [automatic]: /content-management/menus/#define-automatically [define menu entries]: /content-management/menus/ [defining menu entries]: /content-management/menus/ [in front matter]: /content-management/menus/#define-in-front-matter [in site configuration]: /content-management/menus/#define-in-site-configuration [localize the menu entries]: /content-management/multilingual/#menus [menu entry defined in front matter]: /content-management/menus/#example [menu entry defined in site configuration]: /configuration/menus [menu methods]: /methods/menu/ [multilingual]: /content-management/multilingual/#menus gohugoio-hugo-6abdaca/docs/content/en/templates/new-templatesystem-overview.md000066400000000000000000000136671507671574500302120ustar00rootroot00000000000000--- title: New template system in Hugo v0.146.0 linktitle: New template system description: Overview of the new template system in Hugo v0.146.0. categories: [] keywords: [] weight: 1 --- In [Hugo v0.146.0], we performed a full re-implementation of how Go templates are handled in Hugo. This includes structural changes to the `layouts` folder and a new, more powerful template lookup system. We have aimed to maintain as much backward compatibility as possible by mapping "old to new," but some reported breakages have occurred. We're working on a full overhaul of the documentation on this topic – until then, this is a one-pager with the most important changes. ## Changes to the `layouts` folder | Description | Action required | | ------------- | ------------- | | The `_default` folder is removed. | Move all files in `layouts/_default` up to the `layouts/` root.| | The `layouts/partials` folder is renamed to `layouts/_partials`. | Rename the folder. | | The `layouts/shortcodes` folder is renamed to `layouts/_shortcodes`. | Rename the folder. | | Any folder in `layouts` that does not start with `_` represents the root of a [Page path]. In [Hugo v0.146.0], this can be nested as deeply as needed, and `_shortcodes` and `_markup` folders can be placed at any level in the tree.| No action required.| | The above also means that there's no top-level `layouts/taxonomy` or `layouts/section` folders anymore, unless it represents a [Page path].|Move them up to `layouts/` with one of the [Page kinds] `section`, `taxonomy` or `term` as the base name, or place the layouts into the taxonomy [Page path]. | |A template named `taxonomy.html` used to be a candidate for both Page kind `term` and `taxonomy`, now it's only considered for `taxonomy`.|Create both `taxonomy.html` and `term.html` or create a more general layout, e.g. `list.html`.| | For base templates (e.g., `baseof.html`), in previous Hugo versions, you could prepend one identifier (layout, type, or kind) with a hyphen in front of the baseof keyword.|Move that identifier after the first "dot," e.g., rename`list-baseof.html` to `baseof.list.html`.| | We have added a new `all` "catch-all" layout. This means that if you have, e.g., `layouts/all.html` and that is the only template, that layout will be used for all HTML page rendering.|| | We have removed the concept of `_internal` Hugo templates.[^internal]|Replace constructs similar to `{{ template "_internal/opengraph.html" . }}` with `{{ partial "opengraph.html" . }}`.| | The identifiers that can be used in a template filename are one of the [Page kinds] (`home`, `page`, `section`, `taxonomy`, or `term`), one of the standard layouts (`list`, `single`, or `all`), a custom layout (as defined in the `layout` front matter field), a language (e.g., `en`), an output format (e.g., `html`, `rss`), and a suffix representing the media type. E.g., `all.en.html` and `home.rss.xml`.|| | The above means that there's no such thing as an `index.html` template for the home page anymore. | Rename `index.html` to `home.html`.| Also, see the [Example folder structure] below for a more concrete example of the new layout system. ## Changes to template lookup order We have consolidated the template lookup so it works the same across all [template types]. The previous setup was very hard to understand and had a massive number of variants. The new setup aims to feel natural with few surprises. The identifiers used in the template weighting, in order of importance, are: | Identifier | Description | | ---------- | ----------- | | Layout custom | The custom `layout` set in front matter. | | [Page kinds] | One of `home`, `section`, `taxonomy`, `term`, `page`. | | Layouts standard 1 | `list` or `single`. | | Output format | The output format (e.g., `html`, `rss`). | | Layouts standard 2 | `all`. | | Language | The language (e.g., `en`). | | Media type | The media type (e.g., `text/html`). | | [Page path] | The page path (e.g., `/blog/mypost`). | | Type | `type` set in front matter.[^type]| For templates placed in a `layouts` folder partly or completely matching a [Page path], a closer match upwards will be considered _better_. In the [Example folder structure] below, this means that: - `layouts/docs/api/_markup/render-link.html` will be used to render links from the Page path `/docs/api` and below. - `layouts/docs/baseof.html` will be used as the base template for the Page path `/docs` and below. - `layouts/tags/term.html` will be used for all `term` rendering in the `tags` taxonomy, except for the `blue` term, which will use `layouts/tags/blue/list.html`. ## Example folder structure ```text layouts ├── baseof.html ├── baseof.term.html ├── home.html ├── page.html ├── section.html ├── taxonomy.html ├── term.html ├── term.mylayout.en.rss.xml ├── _markup │ ├── render-codeblock-go.term.mylayout.no.rss.xml │ └── render-link.html ├── _partials │ └── mypartial.html ├── _shortcodes │ ├── myshortcode.html │ └── myshortcode.section.mylayout.en.rss.xml ├── docs │ ├── baseof.html │ ├── _shortcodes │ │ └── myshortcode.html │ └── api │ ├── mylayout.html │ ├── page.html │ └── _markup │ └── render-link.html └── tags ├── taxonomy.html ├── term.html └── blue └── list.html ``` [^type]: The `type` set in front matter will effectively replace the `section` folder in [Page path] when doing lookups. [^internal]: The old way of doing it made it very hard/impossible to, e.g., override `_internal/disqus.html` in a theme. Now you can just create a partial with the same name. [Example folder structure]: #example-folder-structure [Hugo v0.146.0]: https://github.com/gohugoio/hugo/releases/tag/v0.146.0 [Page kinds]: https://gohugo.io/methods/page/kind/ [Page path]: https://gohugo.io/methods/page/path/ [template types]: /templates/types/ gohugoio-hugo-6abdaca/docs/content/en/templates/pagination.md000066400000000000000000000154611507671574500246220ustar00rootroot00000000000000--- title: Pagination description: Split a list page into two or more subsets. categories: [] keywords: [] weight: 160 aliases: [/extras/pagination,/doc/pagination/] --- Displaying a large page collection on a list page is not user-friendly: - A massive list can be intimidating and difficult to navigate. Users may get lost in the sheer volume of information. - Large pages take longer to load, which can frustrate users and lead to them abandoning the site. - Without any filtering or organization, finding a specific item becomes a tedious scrolling exercise. Improve usability by paginating `home`, `section`, `taxonomy`, and `term` pages. > [!note] > The most common templating mistake related to pagination is invoking pagination more than once for a given list page. See the [caching](#caching) section below. ## Terminology paginate : To split a [list page](g) into two or more subsets. pagination : The process of paginating a list page. pager : Created during pagination, a pager contains a subset of a list page and navigation links to other pagers. paginator : A collection of pagers. ## Configuration See [configure pagination](/configuration/pagination). ## Methods To paginate a `home`, `section`, `taxonomy`, or `term` page, invoke either of these methods on the `Page` object in the corresponding template: - [`Paginate`] - [`Paginator`] The `Paginate` method is more flexible, allowing you to: - Paginate any page collection - Filter, sort, and group the page collection - Override the number of pages per pager as defined in your site configuration By comparison, the `Paginator` method paginates the page collection passed into the template, and you cannot override the number of pages per pager. ## Examples To paginate a list page using the `Paginate` method: ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate $pages.ByTitle 7 }} {{ range $paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ partial "pagination.html" . }} ``` In the example above, we: 1. Build a page collection 1. Sort the page collection by title 1. Paginate the page collection, with 7 pages per pager 1. Range over the paginated page collection, rendering a link to each page 1. Call the embedded pagination template to create navigation links between pagers To paginate a list page using the `Paginator` method: ```go-html-template {{ range .Paginator.Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ partial "pagination.html" . }} ``` In the example above, we: 1. Paginate the page collection passed into the template, with the default number of pages per pager 1. Range over the paginated page collection, rendering a link to each page 1. Call the embedded pagination template to create navigation links between pagers ## Caching > [!note] > The most common templating mistake related to pagination is invoking pagination more than once for a given list page. Regardless of pagination method, the initial invocation is cached and cannot be changed. If you invoke pagination more than once for a given list page, subsequent invocations use the cached result. This means that subsequent invocations will not behave as written. When paginating conditionally, do not use the `compare.Conditional` function due to its eager evaluation of arguments. Use an `if-else` construct instead. ## Grouping Use pagination with any of the [grouping methods]. For example: ```go-html-template {{ $pages := where site.RegularPages "Type" "posts" }} {{ $paginator := .Paginate ($pages.GroupByDate "Jan 2006") }} {{ range $paginator.PageGroups }}

        {{ .Key }}

        {{ range .Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ end }} {{ partial "pagination.html" . }} ``` ## Navigation As shown in the examples above, the easiest way to add navigation between pagers is with Hugo's embedded pagination template: ```go-html-template {{ partial "pagination.html" . }} ``` The embedded pagination template has two formats: `default` and `terse`. The above is equivalent to: ```go-html-template {{ partial "pagination.html" (dict "page" . "format" "default") }} ``` The `terse` format has fewer controls and page slots, consuming less space when styled as a horizontal list. To use the `terse` format: ```go-html-template {{ partial "pagination.html" (dict "page" . "format" "terse") }} ``` > [!note] > To override Hugo's embedded pagination template, copy the [source code] to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function: > > `{{ partial "pagination.html" . }}` Create custom navigation components using any of the `Pager` methods: {{% list-pages-in-section path=/methods/pager %}} ## Structure The example below depicts the published site structure when paginating a list page. With this content: ```text content/ ├── posts/ │ ├── _index.md │ ├── post-1.md │ ├── post-2.md │ ├── post-3.md │ └── post-4.md └── _index.md ``` And this site configuration: {{< code-toggle file=hugo >}} [pagination] disableAliases = false pagerSize = 2 path = 'page' {{< /code-toggle >}} And this _section_ template: ```go-html-template {file="layouts/section.html"} {{ range (.Paginate .Pages).Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ partial "pagination.html" . }} ``` The published site has this structure: ```text public/ ├── posts/ │ ├── page/ │ │ ├── 1/ │ │ │ └── index.html <-- alias to public/posts/index.html │ │ └── 2/ │ │ └── index.html │ ├── post-1/ │ │ └── index.html │ ├── post-2/ │ │ └── index.html │ ├── post-3/ │ │ └── index.html │ ├── post-4/ │ │ └── index.html │ └── index.html └── index.html ``` To disable alias generation for the first pager, change your site configuration: {{< code-toggle file=hugo >}} [pagination] disableAliases = true pagerSize = 2 path = 'page' {{< /code-toggle >}} Now the published site will have this structure: ```text public/ ├── posts/ │ ├── page/ │ │ └── 2/ │ │ └── index.html │ ├── post-1/ │ │ └── index.html │ ├── post-2/ │ │ └── index.html │ ├── post-3/ │ │ └── index.html │ ├── post-4/ │ │ └── index.html │ └── index.html └── index.html ``` [`Paginate`]: /methods/page/paginate/ [`Paginator`]: /methods/page/paginator/ [`partial`]: /functions/partials/include/ [grouping methods]: /quick-reference/page-collections/#group [source code]: {{% eturl pagination %}} gohugoio-hugo-6abdaca/docs/content/en/templates/robots.md000066400000000000000000000030451507671574500237740ustar00rootroot00000000000000--- title: robots.txt template linkTitle: robots.txt templates description: Hugo can generate a customized robots.txt in the same way as any other template. categories: [] keywords: [] weight: 180 aliases: [/extras/robots-txt/] --- To generate a robots.txt file from a template, change the [site configuration]: {{< code-toggle file=hugo >}} enableRobotsTXT = true {{< /code-toggle >}} By default, Hugo generates robots.txt using an [embedded template]. ```text User-agent: * ``` Search engines that honor the Robots Exclusion Protocol will interpret this as permission to crawl everything on the site. ## robots.txt template lookup order You may overwrite the internal template with a custom template. Hugo selects the template using this lookup order: 1. `/layouts/robots.txt` 1. `/themes//layouts/robots.txt` ## robots.txt template example ```text {file="layouts/robots.txt"} User-agent: * {{ range .Pages }} Disallow: {{ .RelPermalink }} {{ end }} ``` This template creates a robots.txt file with a `Disallow` directive for each page on the site. Search engines that honor the Robots Exclusion Protocol will not crawl any page on the site. > [!note] > To create a robots.txt file without using a template: > > 1. Set `enableRobotsTXT` to `false` in the site configuration. > 1. Create a robots.txt file in the `static` directory. > > Remember that Hugo copies everything in the static director to the root of `publishDir` (typically `public`) when you build your site. [embedded template]: {{% eturl robots %}} [site configuration]: /configuration/ gohugoio-hugo-6abdaca/docs/content/en/templates/rss.md000066400000000000000000000040751507671574500232770ustar00rootroot00000000000000--- title: RSS templates description: Use the embedded RSS template, or create your own. categories: [] keywords: [] weight: 140 --- ## Configuration By default, when you build your site, Hugo generates RSS feeds for home, section, taxonomy, and term pages. Control feed generation in your site configuration. For example, to generate feeds for home and section pages, but not for taxonomy and term pages: {{< code-toggle file=hugo >}} [outputs] home = ['html', 'rss'] section = ['html', 'rss'] taxonomy = ['html'] term = ['html'] {{< /code-toggle >}} To disable feed generation for all [page kinds](g): {{< code-toggle file=hugo >}} disableKinds = ['rss'] {{< /code-toggle >}} By default, the number of items in each feed is unlimited. Change this as needed in your site configuration: {{< code-toggle file=hugo >}} [services.rss] limit = 42 {{< /code-toggle >}} Set `limit` to `-1` to generate an unlimited number of items per feed. The built-in RSS template will render the following values, if present, from your site configuration: {{< code-toggle file=hugo >}} copyright = '© 2023 ABC Widgets, Inc.' [params.author] name = 'John Doe' email = 'jdoe@example.org' {{< /code-toggle >}} ## Include feed reference To include a feed reference in the `head` element of your rendered pages, place this within the `head` element of your templates: ```go-html-template {{ with .OutputFormats.Get "rss" }} {{ printf `` .Rel .MediaType.Type .Permalink site.Title | safeHTML }} {{ end }} ``` Hugo will render this to: ```html ``` ## Custom templates Override Hugo's [embedded RSS template] by creating one or more of your own. For example, to use different templates for home, section, taxonomy, and term pages: ```text layouts/ ├── home.rss.xml ├── section.rss.xml ├── taxonomy.rss.xml └── term.rss.xml ``` RSS templates receive the `.Page` and `.Site` objects in context. [embedded RSS template]: {{% eturl rss %}} gohugoio-hugo-6abdaca/docs/content/en/templates/shortcode.md000066400000000000000000000307031507671574500244570ustar00rootroot00000000000000--- title: Shortcode templates description: Create custom shortcodes to simplify and standardize content creation. categories: [] keywords: [] weight: 120 aliases: [/templates/shortcode-templates/] --- {{< newtemplatesystem >}} > [!note] > Before creating custom shortcodes, please review the [shortcodes] page in the [content management] section. Understanding the usage details will help you design and create better templates. ## Introduction Hugo provides [embedded shortcodes] for many common tasks, but you'll likely need to create your own for more specific needs. Some examples of custom shortcodes you might develop include: - Audio players - Video players - Image galleries - Diagrams - Maps - Tables - And many other custom elements ## Directory structure Create _shortcode_ templates within the `layouts/_shortcodes` directory, either at its root or organized into subdirectories. ```text layouts/ └── _shortcodes/ ├── diagrams/ │ ├── kroki.html │ └── plotly.html ├── media/ │ ├── audio.html │ ├── gallery.html │ └── video.html ├── capture.html ├── column.html ├── include.html └── row.html ``` When calling a shortcode in a subdirectory, specify its path relative to the `_shortcode` directory, excluding the file extension. ```text {{}} ``` ## Lookup order Hugo selects _shortcode_ templates based on the shortcode name, the current output format, and the current language. The examples below are sorted by specificity in descending order. The least specific path is at the bottom of the list. Shortcode name|Output format|Language|Template path :--|:--|:--|:-- foo|html|en|`layouts/_shortcodes/foo.en.html` foo|html|en|`layouts/_shortcodes/foo.html.html` foo|html|en|`layouts/_shortcodes/foo.html` foo|html|en|`layouts/_shortcodes/foo.html.en.html` Shortcode name|Output format|Language|Template path :--|:--|:--|:-- foo|json|en|`layouts/_shortcodes/foo.en.json` foo|json|en|`layouts/_shortcodes/foo.json` foo|json|en|`layouts/_shortcodes/foo.json.json` foo|json|en|`layouts/_shortcodes/foo.json.en.json` ## Methods Use these methods in your _shortcode_ templates. Refer to each methods's documentation for details and examples. {{% list-pages-in-section path=/methods/shortcode %}} ## Examples These examples range in complexity from simple to moderately advanced, with some simplified for clarity. ### Insert year Create a shortcode to insert the current year: ```go-html-template {file="layouts/_shortcodes/year.html"} {{- now.Format "2006" -}} ``` Then call the shortcode from within your markup: ```text {file="content/example.md"} This is {{}}, and look at how far we've come. ``` This shortcode can be used inline or as a block on its own line. If a shortcode might be used inline, remove the surrounding [whitespace] by using [template action](g) delimiters with hyphens. ### Insert image This example assumes the following content structure, where `content/example/index.md` is a [page bundle](g) containing one or more [page resources](g). ```text content/ ├── example/ │ ├── a.jpg │ └── index.md └── _index.md ``` Create a shortcode to capture an image as a page resource, resize it to the given width, convert it to the WebP format, and add an `alt` attribute: ```go-html-template {file="layouts/_shortcodes/image.html"} {{- with .Page.Resources.Get (.Get "path") }} {{- with .Process (printf "resize %dx wepb" ($.Get "width")) -}} {{ $.Get {{- end }} {{- end -}} ``` Then call the shortcode from within your markup: ```text {file="content/example/index.md"} {{}} ``` The example above uses: - The [`with`] statement to rebind the [context](g) after each successful operation - The [`Get`] method to retrieve arguments by name - The `$` to access the template context > [!note] > Make sure that you thoroughly understand the concept of context. The most common templating errors made by new users relate to context. > > Read more about context in the [introduction to templating]. ### Insert image with error handling The previous example, while functional, silently fails if the image is missing, and does not gracefully exit if a required argument is missing. We'll add error handling to address these issues: ```go-html-template {file="layouts/_shortcodes/image.html"} {{- with .Get "path" }} {{- with $r := $.Page.Resources.Get ($.Get "path") }} {{- with $.Get "width" }} {{- with $r.Process (printf "resize %dx wepb" ($.Get "width" )) }} {{- $alt := or ($.Get "alt") "" -}} {{ $alt }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a 'width' argument: see %s" $.Name $.Position }} {{- end }} {{- else }} {{- warnf "The %q shortcode was unable to find %s: see %s" $.Name ($.Get "path") $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a 'path' argument: see %s" .Name .Position }} {{- end -}} ``` This template throws an error and gracefully fails the build if the author neglected to provide a `path` or `width` argument, and it emits a warning if it cannot find the image at the specified path. If the author does not provide an `alt` argument, the `alt` attribute is set to an empty string. The [`Name`] and [`Position`] methods provide helpful context for errors and warnings. For example, a missing `width` argument causes the shortcode to throw this error: ```text ERROR The "image" shortcode requires a 'width' argument: see "/home/user/project/content/example/index.md:7:1" ``` ### Positional arguments Shortcode arguments can be [named or positional]. We used named arguments previously; let's explore positional arguments. Here's the named argument version of our example: ```text {file="content/example/index.md"} {{}} ``` Here's how to call it with positional arguments: ```text {file="content/example/index.md"} {{}} ``` Using the `Get` method with zero-indexed keys, we'll initialize variables with descriptive names in our template: ```go-html-template {file="layouts/_shortcodes/image.html"} {{ $path := .Get 0 }} {{ $width := .Get 1 }} {{ $alt := .Get 2 }} ``` > [!note] > Positional arguments work well for frequently used shortcodes with one or two arguments. Since you'll use them often, the argument order will be easy to remember. For less frequently used shortcodes, or those with more than two arguments, named arguments improve readability and reduce the chance of errors. ### Named and positional arguments You can create a shortcode that will accept both named and positional arguments, but not at the same time. Use the [`IsNamedParams`] method to determine whether the shortcode call used named or positional arguments: ```go-html-template {file="layouts/_shortcodes/image.html"} {{ $path := cond (.IsNamedParams) (.Get "path") (.Get 0) }} {{ $width := cond (.IsNamedParams) (.Get "width") (.Get 1) }} {{ $alt := cond (.IsNamedParams) (.Get "alt") (.Get 2) }} ``` This example uses the `cond` alias for the [`compare.Conditional`] function to get the argument by name if `IsNamedParams` returns `true`, otherwise get the argument by position. ### Argument collection Use the [`Params`] method to access the arguments as a collection. When using named arguments, the `Params` method returns a map: ```text {file="content/example/index.md"} {{}} ``` ```go-html-template {file="layouts/_shortcodes/image.html"} {{ .Params.path }} → a.jpg {{ .Params.width }} → 300 {{ .Params.alt }} → A white kitten ``` When using positional arguments, the `Params` method returns a slice: ```text {file="content/example/index.md"} {{}} ``` ```go-html-template {file="layouts/_shortcodes/image.html"} {{ index .Params 0 }} → a.jpg {{ index .Params 1 }} → 300 {{ index .Params 1 }} → A white kitten ``` Combine the `Params` method with the [`collections.IsSet`] function to determine if a parameter is set, even if its value is falsy. ### Inner content Extract the content enclosed within shortcode tags using the [`Inner`] method. This example demonstrates how to pass both content and a title to a shortcode. The shortcode then generates a `div` element containing an `h2` element (displaying the title) and the provided content. ```text {file="content/example.md"} {{}} This is a **bold** word, and this is an _emphasized_ word. {{}} ``` ```go-html-template {file="layouts/_shortcodes/contrived.html"}

        {{ .Get "title" }}

        {{ .Inner | .Page.RenderString }}
        ``` The preceding example called the shortcode using [standard notation], requiring us to process the inner content with the [`RenderString`] method to convert the Markdown to HTML. This conversion is unnecessary when calling a shortcode using [Markdown notation]. ### Nesting The [`Parent`] method provides access to the parent shortcode context when the shortcode in question is called within the context of a parent shortcode. This provides an inheritance model. The following example is contrived but demonstrates the concept. Assume you have a `gallery` shortcode that expects one named `class` argument: ```go-html-template {file="layouts/_shortcodes/gallery.html"}
        {{ .Inner }}
        ``` You also have an `img` shortcode with a single named `src` argument that you want to call inside of `gallery` and other shortcodes, so that the parent defines the context of each `img`: ```go-html-template {file="layouts/_shortcodes/img.html"} {{ $src := .Get "src" }} {{ with .Parent }} {{ else }} {{ end }} ``` You can then call your shortcode in your content as follows: ```text {file="content/example.md"} {{}} {{}} {{}} {{}} {{}} ``` This will output the following HTML. Note how the first two `img` shortcodes inherit the `class` value of `content-gallery` set with the call to the parent `gallery`, whereas the third `img` only uses `src`: ```html ``` ### Other examples For guidance, consider examining Hugo's embedded shortcodes. The source code, available on [GitHub], can provide a useful model. ## Detection The [`HasShortcode`] method allows you to check if a specific shortcode has been called on a page. For example, consider a custom audio shortcode: ```text {file="content/example.md"} {{}} ``` You can use the `HasShortcode` method in your base template to conditionally load CSS if the audio shortcode was used on the page: ```go-html-template {file="layouts/baseof.html"} ... {{ if .HasShortcode "audio" }} {{ end }} ... ``` [`collections.IsSet`]: /functions/collections/isset/ [`compare.Conditional`]: /functions/compare/conditional/ [`Get`]: /methods/shortcode/get/ [`HasShortcode`]: /methods/page/hasshortcode/ [`Inner`]: /methods/shortcode/inner/ [`IsNamedParams`]: /methods/shortcode/isnamedparams/ [`Name`]: /methods/shortcode/name/ [`Params`]: /methods/shortcode/params/ [`Parent`]: /methods/shortcode/parent/ [`Position`]: /methods/shortcode/position/ [`RenderString`]: /methods/page/renderstring/ [`with`]: /functions/go-template/with/ [content management]: /content-management/shortcodes/ [embedded shortcodes]: /shortcodes/ [GitHub]: https://github.com/gohugoio/hugo/tree/master/tpl/tplimpl/embedded/templates/_shortcodes [introduction to templating]: /templates/introduction/ [Markdown notation]: /content-management/shortcodes/#markdown-notation [named or positional]: /content-management/shortcodes/#arguments [shortcodes]: /content-management/shortcodes/ [standard notation]: /content-management/shortcodes/#standard-notation [whitespace]: /templates/introduction/#whitespace gohugoio-hugo-6abdaca/docs/content/en/templates/sitemap.md000066400000000000000000000032721507671574500241300ustar00rootroot00000000000000--- title: Sitemap templates description: Hugo provides built-in sitemap templates. categories: [] keywords: [] weight: 130 aliases: [/layout/sitemap/,/templates/sitemap-template/] --- ## Overview Hugo's embedded sitemap templates conform to v0.9 of the [sitemap protocol]. With a monolingual project, Hugo generates a sitemap.xml file in the root of the [`publishDir`] using the [embedded sitemap template]. With a multilingual project, Hugo generates: - A sitemap.xml file in the root of each site (language) using the [embedded sitemap template] - A sitemap.xml file in the root of the [`publishDir`] using the [embedded sitemapindex template] ## Configuration See [configure sitemap](/configuration/sitemap). ## Override default values Override the default values for a given page in front matter. {{< code-toggle file=news.md fm=true >}} title = 'News' [sitemap] changefreq = 'weekly' disable = true priority = 0.8 {{}} ## Override built-in templates To override the built-in sitemap.xml template, create a new `layouts/sitemap.xml` file. When ranging through the page collection, access the _change frequency_ and _priority_ with `.Sitemap.ChangeFreq` and `.Sitemap.Priority` respectively. To override the built-in sitemapindex.xml template, create a new `layouts/sitemapindex.xml` file. ## Disable sitemap generation You may disable sitemap generation in your site configuration: {{< code-toggle file=hugo >}} disableKinds = ['sitemap'] {{}} [`publishDir`]: /configuration/all/#publishdir [embedded sitemap template]: {{% eturl sitemap %}} [embedded sitemapindex template]: {{% eturl sitemapindex %}} [sitemap protocol]: https://www.sitemaps.org/protocol.html gohugoio-hugo-6abdaca/docs/content/en/templates/types.md000066400000000000000000000335041507671574500236330ustar00rootroot00000000000000--- title: Template types description: Create templates of different types to render your content, resources, and data. categories: [] keywords: [] weight: 30 aliases: [ '/templates/base/', '/templates/content-view/', '/templates/home/', '/templates/lists/', '/templates/partial/', '/templates/section/', '/templates/single/', '/templates/taxonomy/', '/templates/term/', ] --- ## Structure Create templates in the `layouts` directory in the root of your project. Although your site may not require each of these templates, the example below is typical for a site of medium complexity. ```text layouts/ ├── _markup/ │ ├── render-image.html <-- render hook │ └── render-link.html <-- render hook ├── _partials/ │ ├── footer.html │ └── header.html ├── _shortcodes/ │ ├── audio.html │ └── video.html ├── books/ │ ├── page.html │ └── section.html ├── films/ │ ├── view_card.html <-- content view │ ├── view_li.html <-- content view │ ├── page.html │ └── section.html ├── baseof.html ├── home.html ├── page.html ├── section.html ├── taxonomy.html └── term.html ``` Hugo's [template lookup order] determines the template path, allowing you to create unique templates for any page. > [!note] > You must have thorough understanding of the template lookup order when creating templates. Template selection is based on template type, page kind, content type, section, language, and output format. The purpose of each template type is described below. ## Base A _base_ template serves as a foundational layout that other templates can build upon. It typically defines the common structural components of your HTML, such as the `html`, `head`, and `body` elements. It also often includes recurring features like headers, footers, navigation, and script inclusions that appear across multiple pages of your site. By defining these common aspects once in a _base_ template, you avoid redundancy, ensure consistency, and simplify the maintenance of your website. Hugo can apply a _base_ template to the following template types: [home](#home), [page](#page), [section](#section), [taxonomy](#taxonomy), [term](#term), [single](#single), [list](#list), and [all](#all). When Hugo parses any of these template types, it will apply a _base_ template only if the template being parsed meets these specific conditions: - It must include at least one [`define`] [action](g). - It can only contain `define` actions, whitespace, and [template comments]. No other content is allowed. > [!note] > If a template doesn't meet all these criteria, Hugo executes it exactly as provided, without applying a _base_ template. When Hugo applies a _base_ template, it replaces its [`block`] actions with content from the corresponding `define` actions found in the template to which the base template is applied. For example, the _base_ template below calls the [`partial`] function to include `head`, `header`, and `footer` elements. The `block` action acts as a placeholder, and its content will be replaced by a matching `define` action from the template to which it is applied. ```go-html-template {file="layouts/baseof.html"} {{ partial "head.html" . }}
        {{ partial "header.html" . }}
        {{ block "main" . }} This will be replaced with content from the corresponding "define" action found in the template to which this base template is applied. {{ end }}
        {{ partial "footer.html" . }}
        ``` ```go-html-template {file="layouts/home.html"} {{ define "main" }} This will replace the content of the "block" action found in the base template. {{ end }} ``` ## Home A _home_ template renders your site's home page. For example, Hugo applies a _base_ template to the _home_ template below, then renders the page content and a list of the site's regular pages. ```go-html-template {file="layouts/home.html"} {{ define "main" }} {{ .Content }} {{ range .Site.RegularPages }}

        {{ .LinkTitle }}

        {{ end }} {{ end }} ``` {{% include "/_common/filter-sort-group.md" %}} ## Page A _page_ template renders a regular page. For example, Hugo applies a _base_ template to the _page_ template below, then renders the page title and page content. ```go-html-template {file="layouts/page.html"} {{ define "main" }}

        {{ .Title }}

        {{ .Content }} {{ end }} ``` ## Section A _section_ template renders a list of pages within a [section](g). For example, Hugo applies a _base_ template to the _section_ template below, then renders the page title, page content, and a list of pages in the current section. ```go-html-template {file="layouts/section.html"} {{ define "main" }}

        {{ .Title }}

        {{ .Content }} {{ range .Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ end }} ``` {{% include "/_common/filter-sort-group.md" %}} ## Taxonomy A _taxonomy_ template renders a list of terms in a [taxonomy](g). For example, Hugo applies a _base_ template to the _taxonomy_ template below, then renders the page title, page content, and a list of [terms](g) in the current taxonomy. ```go-html-template {file="layouts/taxonomy.html"} {{ define "main" }}

        {{ .Title }}

        {{ .Content }} {{ range .Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ end }} ``` {{% include "/_common/filter-sort-group.md" %}} Within a _taxonomy_ template, the [`Data`] object provides these taxonomy-specific methods: - [`Singular`][taxonomy-singular] - [`Plural`][taxonomy-plural] - [`Terms`] The `Terms` method returns a [taxonomy object](g), allowing you to call any of its methods including [`Alphabetical`] and [`ByCount`]. For example, use the `ByCount` method to render a list of terms sorted by the number of pages associated with each term: ```go-html-template {file="layouts/taxonomy.html"} {{ define "main" }}

        {{ .Title }}

        {{ .Content }} {{ range .Data.Terms.ByCount }}

        {{ .Page.LinkTitle }} ({{ .Count }})

        {{ end }} {{ end }} ``` ## Term A _term_ template renders a list of pages associated with a [term](g). For example, Hugo applies a _base_ template to the _term_ template below, then renders the page title, page content, and a list of pages associated with the current term. ```go-html-template {file="layouts/term.html"} {{ define "main" }}

        {{ .Title }}

        {{ .Content }} {{ range .Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ end }} ``` {{% include "/_common/filter-sort-group.md" %}} Within a _term_ template, the [`Data`] object provides these term-specific methods: - [`Singular`][term-singular] - [`Plural`][term-plural] - [`Term`] ## Single A _single_ template is a fallback for a _page_ template. If a _page_ template does not exist, Hugo will look for a _single_ template instead. For example, Hugo applies a _base_ template to the _single_ template below, then renders the page title and page content. ```go-html-template {file="layouts/single.html"} {{ define "main" }}

        {{ .Title }}

        {{ .Content }} {{ end }} ``` ## List A _list_ template is a fallback for [home](#home), [section](#section), [taxonomy](#taxonomy), and [term](#term) templates. If one of these template types does not exist, Hugo will look for a _list_ template instead. For example, Hugo applies a _base_ template to the _list_ template below, then renders the page title, page content, and a list of pages. ```go-html-template {file="layouts/list.html"} {{ define "main" }}

        {{ .Title }}

        {{ .Content }} {{ range .Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ end }} ``` ## All An _all_ template is a fallback for [home](#home), [page](#page), [section](#section), [taxonomy](#taxonomy), [term](#term), [single](#single), and [list](#list) templates. If one of these template types does not exist, Hugo will look for an _all_ template instead. For example, Hugo applies a _base_ template to the _all_ template below, then conditionally renders a page based on its page kind. ```go-html-template {file="layouts/all.html"} {{ define "main" }} {{ if eq .Kind "home" }} {{ .Content }} {{ range .Site.RegularPages }}

        {{ .LinkTitle }}

        {{ end }} {{ else if eq .Kind "page" }}

        {{ .Title }}

        {{ .Content }} {{ else if in (slice "section" "taxonomy" "term") .Kind }}

        {{ .Title }}

        {{ .Content }} {{ range .Pages }}

        {{ .LinkTitle }}

        {{ end }} {{ else }} {{ errorf "Unsupported page kind: %s" .Kind }} {{ end }} {{ end }} ``` ## Partial A _partial_ template is typically used to render a component of your site, though you may also create _partial_ templates that return values. For example, the _partial_ template below renders copyright information: ```go-html-template {file="layouts/_partials/footer.html"}

        Copyright {{ now.Year }}. All rights reserved.

        ``` Execute the _partial_ template by calling the [`partial`] or [`partialCached`] function, optionally passing context as the second argument: ```go-html-template {file="layouts/baseof.html"} {{ partial "footer.html" . }} ``` Unlike other template types, Hugo does not consider the current page kind, content type, logical path, language, or output format when searching for a matching _partial_ template. However, it _does_ apply the same name matching logic it uses for other template types. This means it tries to find the most specific match first, then progressively looks for more general versions if the specific one isn't found. For example, with this call: ```go-html-template {file="layouts/baseof.html"} {{ partial "footer.section.de.html" . }} ``` Hugo uses this lookup order to find a matching template: 1. `layouts/_partials/footer.section.de.html` 1. `layouts/_partials/footer.section.html` 1. `layouts/_partials/footer.de.html` 1. `layouts/_partials/footer.html` A _partial_ template can also be defined inline within another template. However, it's important to note that the template namespace is global; ensuring unique names for these _partial_ templates is necessary to prevent conflicts. ```go-html-template Value: {{ partial "my-inline-partial.html" . }} {{ define "_partials/my-inline-partial.html" }} {{ $value := 32 }} {{ return $value }} {{ end }} ``` ## Content view A _content view_ template is similar to a _partial_ template, invoked by calling the [`Render`] method on a `Page` object. Unlike _partial_ templates, _content view_ templates: - Inherit the context of the current page - Can target any page kind, content type, logical path, language, or output format For example, Hugo applies a _base_ template to the _home_ template below, then renders the page content and a card component for each page within the "films" section of your site. ```go-html-template {file="layouts/home.html"} {{ define "main" }} {{ .Content }}
          {{ range where site.RegularPages "Section" "films" }} {{ .Render "view_card" }} {{ end }}
        {{ end }} ``` ```go-html-template {file="layouts/films/view_card.html"}

        {{ .LinkTitle }}

        {{ .Summary }}
        ``` In the example above, the content view template's name starts with `view_`. While not strictly required, this naming convention helps distinguish content view templates from other templates within the same directory, improving organization and clarity. ## Render hook A _render hook_ template overrides the conversion of Markdown to HTML. For example, the _render hook_ template below adds an anchor link to the right of each heading. ```go-html-template {file="layouts/_markup/render-heading.html"} {{ .Text }} # ``` Learn more about [render hook templates](/render-hooks/). ## Shortcode A _shortcode_ template is used to render a component of your site. Unlike _partial_ or _content view_ templates, _shortcode_ templates are called from content pages. For example, the _shortcode_ template below renders an audio element from a [global resource](g). ```go-html-template {file="layouts/_shortcodes/audio.html"} {{ with resources.Get (.Get "src") }} {{ end }} ``` Then call the shortcode from within markup: ```text {file="content/example.md"} {{}} ``` Learn more about [shortcode templates](/templates/shortcode/). ## Other Use other specialized templates to create: - [Sitemaps](/templates/sitemap) - [RSS feeds](/templates/rss/) - [404 error pages](/templates/404/) - [robots.txt files](/templates/robots/) [`Alphabetical`]: /methods/taxonomy/alphabetical/ [`block`]: /functions/go-template/block/ [`ByCount`]: /methods/taxonomy/bycount/ [`Data`]: /methods/page/data/ [`define`]: /functions/go-template/define/ [`partial`]: /functions/partials/include/ [`partialCached`]: /functions/partials/includeCached/ [`Render`]: /methods/page/render/ [`Term`]: /methods/page/data/#term [`Terms`]: /methods/page/data/#terms [taxonomy-plural]: /methods/page/data/#plural [taxonomy-singular]: /methods/page/data/#singular [template comments]: /templates/introduction/#comments [template lookup order]: /templates/lookup-order/ [term-plural]: /methods/page/data/#plural-1 [term-singular]: /methods/page/data/#singular-1 gohugoio-hugo-6abdaca/docs/content/en/tools/000077500000000000000000000000001507671574500213025ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/tools/_index.md000066400000000000000000000002121507671574500230650ustar00rootroot00000000000000--- title: Developer tools description: Third-party tools to help you create and manage sites. categories: [] keywords: [] weight: 10 --- gohugoio-hugo-6abdaca/docs/content/en/tools/editors.md000066400000000000000000000066541507671574500233100ustar00rootroot00000000000000--- title: Editor plugins description: The Hugo community uses a wide range of tools and has developed plugins for some of the most popular text editors to help automate parts of your workflow. categories: [] keywords: [] weight: 10 --- ## Visual Studio Code [Front Matter](https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-front-matter) : Once you go for a static site, you need to think about how you are going to manage your articles. Front matter is a tool that helps you maintain the metadata/front matter of your articles like: creation date, modified date, slug, tile, SEO check, and more. [Hugo Helper](https://marketplace.visualstudio.com/items?itemName=rusnasonov.vscode-hugo) : Hugo Helper is a plugin for Visual Studio Code that has some useful commands for Hugo. The source code can be found on its [GitHub repository](https://github.com/rusnasonov/vscode-hugo). [Hugo Language and Syntax Support](https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode) : Hugo Language and Syntax Support is a Visual Studio Code plugin for Hugo syntax highlighting and snippets. The source code can be found on its [GitHub repository](https://github.com/budparr/language-hugo-vscode). [Hugo Themer](https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-hugo-themer) : Hugo Themer is an extension to help you while developing themes. It allows you to easily navigate through your theme files. [Hugofy](https://marketplace.visualstudio.com/items?itemName=akmittal.hugofy) : Hugofy is a plugin for Visual Studio Code to "make life easier" when developing with Hugo. The source code can be found on its [GitHub repository](https://github.com/akmittal/hugofy-vscode). [Prettier Plugin for Go Templates](https://github.com/NiklasPor/prettier-plugin-go-template) : Format Hugo templates using this [Prettier](https://prettier.io/) plugin. See [installation instructions](https://discourse.gohugo.io/t/38403). [Syntax Highlighting for Hugo Shortcodes](https://marketplace.visualstudio.com/items?itemName=kaellarkin.hugo-shortcode-syntax) : This extension adds some syntax highlighting for Shortcodes, making visual identification of individual pieces easier. ## Emacs [emacs-easy-hugo](https://github.com/masasam/emacs-easy-hugo) : Emacs major mode for managing hugo blogs. Note that Hugo also supports [Org-mode][formats]. [ox-hugo.el](https://ox-hugo.scripter.co) : Native Org-mode exporter that exports to Blackfriday Markdown with Hugo front-matter. `ox-hugo` supports two common Org blogging flows --- exporting multiple Org subtrees in a single file to multiple Hugo posts, and exporting a single Org file to a single Hugo post. It also leverages the Org tag and property inheritance features. See [Why ox-hugo?](https://ox-hugo.scripter.co/doc/why-ox-hugo/) for more. ## Sublime Text [Hugofy](https://github.com/akmittal/Hugofy) : Hugofy is a plugin for Sublime Text 3 to make life easier to use Hugo static site generator. [Hugo Snippets](https://packagecontrol.io/packages/Hugo%20Snippets) : Hugo Snippets is a useful plugin for adding automatic snippets to Sublime Text 3. ## Vim [Vim Hugo Helper]: https://github.com/robertbasic/vim-hugo-helper [Vim Hugo Helper] : A small Vim plugin that facilitates authoring pages and blog posts with Hugo. [vim-hugo](https://github.com/phelipetls/vim-hugo) : A Vim plugin with syntax highlighting for templates and a few other features. [formats]: /content-management/formats/ gohugoio-hugo-6abdaca/docs/content/en/tools/front-ends.md000066400000000000000000000045741507671574500237150ustar00rootroot00000000000000--- title: Front-end interfaces linkTitle: Front-ends description: Do you prefer a graphical user interface over a text editor? Give these front-ends a try. categories: [] keywords: [] weight: 20 aliases: [/tools/frontends/] --- ## Commercial [CloudCannon](https://cloudcannon.com/hugo-cms/) : The intuitive Git-based CMS for your Hugo website. CloudCannon syncs changes from your Git repository and pushes content changes back, so your development and content teams are always in sync. Edit all of your content on the page with visual editing, build entire pages with reusable custom components and then publish confidently. [DatoCMS](https://www.datocms.com) : DatoCMS is a fully customizable administrative area for your static websites. Use your favorite website generator, let your clients publish new content independently, and the host the site anywhere you like. [PubCrank](https://www.pubcrank.com/) : PubCrank is a static site editor which lets you define templates for different front matter layouts in your site. This gives writers an easy-to-use visual interface to create and edit content while maintaining the guardrails that the developer has created. PubCrank is free for local editing. [Sitepins](https://sitepins.com) : Sitepins is a Git-based CMS built for static site generators like Hugo. It offers a clean visual editor, media management, role-based permissions, shortcode support, and more. To get started, simply connect your GitHub repository, configure your content folders, and start visually editing your Hugo site with Sitepins. ## Open-source [Decap CMS](https://decapcms.org/) : Decap CMS is an open-source, serverless solution for managing Git based content in static sites, and it works on any platform that can host static sites. A [Hugo/Decap CMS starter](https://github.com/decaporg/one-click-hugo-cms) is available to get new projects running quickly. [Quiqr Desktop](https://quiqr.org/) : Quiqr Desktop is a open-source, cross-platform, offline desktop CMS for Hugo with built-in Git functionality for deploying static sites to any hosting server. [Sveltia CMS](https://github.com/sveltia/sveltia-cms/) : Sveltia CMS is a drop-in replacement for Decap CMS which is built from the ground up with powerful and performant modern UI library Svelte. Sveltia CMS incorporates i18n into every corner of the product, while striving to radically improve UX, performance and productivity. gohugoio-hugo-6abdaca/docs/content/en/tools/migrations.md000066400000000000000000000132541507671574500240050ustar00rootroot00000000000000--- title: Migrate to Hugo linkTitle: Migrations description: A list of community-developed tools for migrating from your existing static site generator or content management system to Hugo. categories: [] keywords: [] weight: 40 aliases: [/developer-tools/migrations/, /developer-tools/migrated/] --- This section highlights some independently developed projects related to Hugo. These tools extend functionality or help you to get started. Take a look at this list of migration tools if you currently use other blogging tools like Jekyll or WordPress but intend to switch to Hugo instead. They'll help you export your content into Hugo-friendly formats. ## Jekyll Alternatively, you can use the [Jekyll import command](/commands/hugo_import_jekyll/). [JekyllToHugo](https://github.com/fredrikloch/JekyllToHugo) : A Small script for converting Jekyll blog posts to a Hugo site. [ConvertToHugo](https://github.com/coderzh/ConvertToHugo) : Convert your blog from Jekyll to Hugo. ## Octopress [octohug](https://github.com/codebrane/octohug) : Octopress to Hugo migrator. ## DokuWiki [dokuwiki-to-hugo](https://github.com/wgroeneveld/dokuwiki-to-hugo) : Migrates your DokuWiki source pages from [DokuWiki syntax](https://www.dokuwiki.org/wiki:syntax) to Hugo Markdown syntax. Includes extras like the TODO plugin. Written with extensibility in mind using Python 3. Also generates a TOML header for each page. Designed to copy-paste the wiki directory into your `content` directory. ## WordPress [wordpress-to-hugo-exporter](https://github.com/SchumacherFM/wordpress-to-hugo-exporter) : A one-click WordPress plugin that converts all posts, pages, taxonomies, metadata, and settings to Markdown and YAML which can be dropped into Hugo. (Note: If you have trouble using this plugin, you can [export your site for Jekyll](https://wordpress.org/plugins/jekyll-exporter/) and use Hugo's built-in Jekyll converter listed above.) [blog2md](https://github.com/palaniraja/blog2md) : Works with [exported xml](https://en.support.wordpress.com/export/) file of your free YOUR-TLD.wordpress.com website. It also saves approved comments to `YOUR-POST-NAME-comments.md` file along with posts. [wordhugopress](https://github.com/nantipov/wordhugopress) : A small utility written in Java that exports the entire WordPress site from the database and resource (e.g., images) files stored locally or remotely. Therefore, migration from the backup files is possible. Supports merging multiple WordPress sites into a single Hugo site. [wp2hugo](https://github.com/ashishb/wp2hugo) : A Go-based CLI tool to migrate WordPress websites to Hugo. It preserves original URLs, GUIDs, image URLs, code highlights, tables of contents, and WordPress navigation categories. It migrates WordPress custom post types, custom taxonomies, custom fields, and page hierarchy. It supports translated WordPress blogs via Polylang or WPML. It imports a WordPress media library database with original titles and dates. The tool can download all media or only media inserted into pages from the original server. It converts WordPress shortcodes and Gutenberg blocks to Hugo shortcodes including galleries, images, audio, YouTube embeds, Gists, and Google Maps. ## Medium [medium2md](https://github.com/gautamdhameja/medium-2-md) : A simple Medium to Hugo exporter able to import stories in one command, including front matter. [medium-to-hugo](https://github.com/bgadrian/medium-to-hugo) : A CLI tool written in Go to export medium posts into a Hugo-compatible Markdown format. Tags and images are included. All images will be downloaded locally and linked appropriately. ## Tumblr [tumblr-importr](https://github.com/carlmjohnson/tumblr-importr) : An importer that uses the Tumblr API to create a Hugo static site. [tumblr2hugomarkdown](https://github.com/Wysie/tumblr2hugomarkdown) : Export all your Tumblr content to Hugo Markdown files with preserved original formatting. [Tumblr to Hugo](https://github.com/jipiboily/tumblr-to-hugo) : A migration tool that converts each of your Tumblr posts to a content file with a proper title and path. It also generates a CSV file to help you set up URL redirects. ## Drupal [drupal2hugo](https://github.com/danapsimer/drupal2hugo) : Convert a Drupal site to Hugo. ## Joomla [hugojoomla](https://github.com/davetcc/hugojoomla) : This utility written in Java takes a Joomla database and converts all the content into Markdown files. It changes any URLs that are in Joomla's internal format and converts them to a suitable form. ## Blogger [blogimport](https://github.com/natefinch/blogimport) : A tool to import from Blogger posts to Hugo. [blogger-to-hugo](https://pypi.org/project/blogger-to-hugo/) : Another tool to import Blogger posts to Hugo. It also downloads embedded images so they will be stored locally. [blog2md](https://github.com/palaniraja/blog2md) : Works with [exported xml](https://support.google.com/blogger/answer/41387?hl=en) file of your YOUR-TLD.blogspot.com website. It also saves comments to `YOUR-POST-NAME-comments.md` file along with posts. [BloggerToHugo](https://github.com/huanlin/blogger-to-hugo) : Yet another tool to import Blogger posts to Hugo. For Windows platform only, and .NET Framework 4.5 is required. See README.md before using this tool. ## Contentful [contentful-hugo](https://github.com/ModiiMedia/contentful-hugo) : A tool to create content-files for Hugo from content on [Contentful](https://www.contentful.com/). ## BlogML [BlogML2Hugo](https://github.com/jijiechen/BlogML2Hugo) : A tool that helps you convert BlogML xml file to Hugo Markdown files. Users need to take care of links to attachments and images by themselves. This helps the blogs that export BlogML files (e.g. BlogEngine.NET) transform to hugo sites easily. gohugoio-hugo-6abdaca/docs/content/en/tools/other.md000066400000000000000000000034341507671574500227510ustar00rootroot00000000000000--- title: Other community projects linkTitle: Other projects description: Some interesting projects developed by the Hugo community that don't quite fit into our other developer tool categories. categories: [] keywords: [] weight: 50 --- And for all the other community projects around Hugo: - [diego](https://github.com/ttybitnik/diego) - A CLI tool that integrates with Hugo to assist in importing and utilizing exported social media data from popular services on Hugo websites. - [Emacs Easy Hugo](https://github.com/masasam/emacs-easy-hugo) - Emacs package for writing blog posts in Markdown or org-mode and building your site with Hugo. - [Hugo SFTP Upload](https://github.com/thomasmey/HugoSftpUpload) - Sync the local build of your Hugo website with your remote web server via SFTP. - [HugoPhotoSwipe](https://github.com/GjjvdBurg/HugoPhotoSwipe) - Make it easy to create image galleries using PhotoSwipe. - [JAMStack Themes](https://jamstackthemes.dev/ssg/hugo/) - A collection of site themes filterable by static site generator and supported CMS to help build CMS-connected sites using Hugo (linking to Hugo-specific themes). - [flickr-hugo-embed](https://github.com/nikhilm/flickr-hugo-embed) - Print shortcodes to embed a set of images from an album on Flickr into Hugo. - [hugo-gallery](https://github.com/icecreammatt/hugo-gallery) - Create an image gallery for Hugo sites. - [hugo-openapispec-shortcode](https://github.com/tenfourty/hugo-openapispec-shortcode) - A shortcode that allows you to include [Open API Spec](https://openapis.org) (formerly known as Swagger Spec) in a page. - [plausible-hugo](https://github.com/divinerites/plausible-hugo) - Easy Hugo integration for Plausible Analytics, a simple, open-source, lightweight and privacy-friendly web analytics alternative to Google Analytics. gohugoio-hugo-6abdaca/docs/content/en/tools/search.md000066400000000000000000000077731507671574500231070ustar00rootroot00000000000000--- title: Search tools linkTitle: Search description: See some of the open-source and commercial search options for your newly created Hugo website. categories: [] keywords: [] weight: 30 --- A static website with a dynamic search function? Yes, Hugo provides an alternative to embeddable scripts from Google or other search engines for static websites. Hugo allows you to provide your visitors with a custom search function by indexing your content files directly. ## Open-source [Pagefind](https://github.com/cloudcannon/pagefind) : A fully static search library that aims to perform well on large sites, while using as little of your users' bandwidth as possible. [GitHub Gist for Hugo Workflow](https://gist.github.com/sebz/efddfc8fdcb6b480f567) : This gist contains a simple workflow to create a search index for your static website. It uses a simple Grunt script to index all your content files and [lunr.js](https://lunrjs.com/) to serve the search results. [hugo-lunr](https://www.npmjs.com/package/hugo-lunr) : A simple way to add site search to your static Hugo site using [lunr.js](https://lunrjs.com/). Hugo-lunr will create an index file of any HTML and Markdown documents in your Hugo project. [hugo-lunr-zh](https://www.npmjs.com/package/hugo-lunr-zh) : A bit like Hugo-lunr, but Hugo-lunr-zh can help you separate the Chinese keywords. [GitHub Gist for Fuse.js integration](https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae) : This gist demonstrates how to leverage Hugo's existing build time processing to generate a searchable JSON index used by [Fuse.js](https://fusejs.io/) on the client side. Although this gist uses Fuse.js for fuzzy matching, any client-side search tool capable of reading JSON indexes will work. Does not require npm, grunt, or other build-time tools except Hugo! [hugo-search-index](https://www.npmjs.com/package/hugo-search-index) : A library containing Gulp tasks and a prebuilt browser script that implements search. Gulp generates a search index from project Markdown files. [hugofastsearch](https://gist.github.com/cmod/5410eae147e4318164258742dd053993) : A usability and speed update to "GitHub Gist for Fuse.js integration" — global, keyboard-optimized search. [JS & Fuse.js tutorial](https://makewithhugo.com/add-search-to-a-hugo-site/) : A simple client-side search solution, using FuseJS (does not require jQuery). [Hugo Lyra](https://github.com/paolomainardi/hugo-lyra) : Hugo-Lyra is a JavaScript module to integrate [Lyra](https://github.com/LyraSearch/lyra) into a Hugo website. It contains the server-side part to generate the index and the client-side library (optional) to bootstrap the search engine easily. [INFINI Pizza for WebAssembly](https://github.com/infinilabs/pizza-docsearch) : Pizza is a super-lightweight yet fully featured search engine written in Rust. You can quickly add offline search functionality to your Hugo website in just five minutes with only three lines of code. For a step-by-step guide on integrating it with Hugo, check out [this blog tutorial](https://dev.to/medcl/adding-search-functionality-to-a-hugo-static-site-based-on-infini-pizza-for-webassembly-4h5e). ## Commercial [Algolia DocSearch](https://docsearch.algolia.com/) : Algolia DocSearch is free for public technical documentation sites and easy to set up. For other use cases, [Algolia's Search API](https://www.algolia.com) makes it easy to deliver a great search experience in your apps and websites. Algolia Search provides hosted full-text, numerical, faceted, and geolocalized search. [Bonsai](https://www.bonsai.io) : Bonsai is a fully-managed hosted Elasticsearch service that is fast, reliable, and simple to set up. Easily ingest your docs from Hugo into Elasticsearch following [this guide from the docs](https://bonsai.io/docs/hugo). [ExpertRec](https://www.expertrec.com/) : ExpertRec is a hosted search-as-a-service solution that is fast and scalable. Set-up and integration is extremely easy and takes only a few minutes. The search settings can be modified without coding using a dashboard. gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/000077500000000000000000000000001507671574500233715ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/_index.md000066400000000000000000000002621507671574500251610ustar00rootroot00000000000000--- title: Troubleshooting description: Use these techniques when troubleshooting your site. categories: [] keywords: [] weight: 10 aliases: [/templates/template-debugging/] --- gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/audit/000077500000000000000000000000001507671574500244775ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/audit/index.md000066400000000000000000000055221507671574500261340ustar00rootroot00000000000000--- title: Site audit linkTitle: Audit description: Run this audit before deploying your production site. categories: [] keywords: [] --- There are several conditions that can produce errors in your published site which are not detected during the build. Run this audit before your final build. ```text {copy=true} HUGO_MINIFY_TDEWOLFF_HTML_KEEPCOMMENTS=true HUGO_ENABLEMISSINGTRANSLATIONPLACEHOLDERS=true hugo && grep -inorE "<\!-- raw HTML omitted -->|ZgotmplZ|\[i18n\]|\(\)|(<nil>)|hahahugo" public/ ``` _Tested with GNU Bash 5.1 and GNU grep 3.7._ ## Example output ![site audit terminal output](screen-capture.png) ## Explanation ### Environment variables `HUGO_MINIFY_TDEWOLFF_HTML_KEEPCOMMENTS=true` : Retain HTML comments even if minification is enabled. This takes precedence over `minify.tdewolff.html.keepComments` in the site configuration. If you minify without keeping HTML comments when performing this audit, you will not be able to detect when raw HTML has been omitted. `HUGO_ENABLEMISSINGTRANSLATIONPLACEHOLDERS=true` : Show a placeholder instead of the default value or an empty string if a translation is missing. This takes precedence over `enableMissingTranslationPlaceholders` in the site configuration. ### Grep options `-i, --ignore-case` : Ignore case distinctions in patterns and input data, so that characters that differ only in case match each other. `-n, --line-number` : Prefix each line of output with the 1-based line number within its input file. `-o, --only-matching` : Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. `-r, --recursive` : Read all files under each directory, recursively, following symbolic links only if they are on the command line. `-E, --extended-regexp` : Interpret PATTERNS as extended regular expressions. ### Patterns `` : By default, Hugo strips raw HTML from your Markdown prior to rendering, and leaves this HTML comment in its place. `ZgotmplZ` : ZgotmplZ is a special value that indicates that unsafe content reached a CSS or URL context at runtime. See [details]. [details]: https://pkg.go.dev/html/template `[i18n]` : This is the placeholder produced instead of the default value or an empty string if a translation is missing. `()` : This string will appear in the rendered HTML when passing a nil value to the `printf` function. `(<nil>)` : Same as above when the value returned from the `printf` function has not been passed through `safeHTML`. `HAHAHUGO` : Under certain conditions a rendered shortcode may include all or a portion of the string HAHAHUGOSHORTCODE in either uppercase or lowercase. This is difficult to detect in all circumstances, but a case-insensitive search of the output for `HAHAHUGO` is likely to catch the majority of cases without producing false positives. gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/audit/screen-capture.png000066400000000000000000001311411507671574500301260ustar00rootroot00000000000000PNG  IHDR"g6u(IDATx콉y>tXFBܳss{߻\ -!`-.$HIX:Nĉ/'v8q(>w陝vԇSoUuT11 `0 FY  `0  `0 2`0 ``0 `0  `0 e`0 ``0 `0,3 `0  `0 2`0 `0Xf0 `0  `0 e`0 ``0 `0,3 `0  `0 2`0 `0Xf0 `0 Fokf-*W䔴' Y|V_53~kl{`1Yff[~T30b͕vf)^tH~=PAopnv/eVfQ4o6}Ez7.ri}xNS%%U ӧ񋃡}'BBTyh/B:|v,` (^tH]3 f@QGucw($̭2J2#)Ƴ I=يſ}]xXD]evar|5"b 3*nsEmt U1)K:frW20NgS]vi5}^hڂC!q`ِet$*~"hʧ]W߮MN8MN?E YXf̘2Ck`{.RZ$%\_:fMp }n7/7^>>yn&},i 8PO*q ~CP ̘:onDm_c6= IK&5Y oRm3&V#.h{C1v \cy*}J8+3|߅ ȸлpU$`ׁ̘m< eƴL+o<,TSfp<.|,3ɣbw.#w7; OȲ)I}jk&N!yMJZ.L~ OҗCfr͢_ӽ{ ٥`_O}R-[X򘚯]Q1P3 [}087kwFwF:9#Cg!vb9\)j,f/㞃Rt󓩓zkr4vkJkPx|lg{ֆ~&aHagm={J 0Pyzj5+p|-ȷX$%x@`hwC\4^AZ5eOEnjsf/_ =?ex'-. OC!o'VT,?Am[_vy:G|!,z'VK yjh,?5;c^ꐴhQYքB0ˆ]6'̠eoL~wȺf2cEp>i܂HN|vHրZf,,g?3Wl_ 'Y<߿pQ##t3mOp&M&v4rAR}L\y$yd ar8&H?</.Rו rn; |@+NBuAuv}yYpY:Rx)P',WeRUTvV5:W֣R 5A:gH.vyb0j}+Nu8;}];|FJbwRukb{(Af4;)V}wt;;E@Yƃp'nlg 8:"2mGǡ|&֎Z.xdLvuo /G_{$I>E-~TAC(|1PՒg:R ZN^ePB2c~z"ѬFZr&I,ѼSrv2˞qwt7Q IͦEWN\ a]]s2&U 9}@.\wŜGS)XAnFf3 15+I0f7ףT!3,F J ٹn6/ .55GkYqdSppY:5;,2C=:7) (H;@ QvetGCk )c!0<ݪ1?'8<㫂Ѧ^I겅!1l}|fdY*@p@XH=x^?׃ϋ@RDEVT~@kL63vQBacF^m%D.vObdmD]&lw}(a.zO}}hl\P\qEfijtwCtB_\K~{?J# :mk?t56J#V3% U {2xVR"3?vCuy,.;F2cP 9fX~(9 otſuvkjl6q ĉi8t/ygԍVssxrE%)e&9"_}KzH$ߌ~LHSx^F]Ib @F#ž?]0)yy`9ew /O} >3oԘ&M fΪWQRẓH4I= @%q9XVxbaiggR|(g^FlWؿ&4+9Αtϻȏ{\ &` NJ*MTgs A]lOv1iL)>+$;56>^^26h{2@\X+yl{d{Y?QPD:5}u5KIg9)dZ!OMLю~xPum/Yf5B-#q?(!dP> l,84}/ʮ!S^@0snȱgȌ, mvMdl==Bf[z!ܫH6S0E,NNKfG_iÄ7Kl,3 zy"},2`Քq[.X]TB钛5i~6sVn vEl(ONhffoV6n{2b_BoX`U}w`hPZc )&ARĎeE[׵d>9>V(dOh6aʂw Bum/Yf%Ԉ=L@XfȳҲ:*֛y#PX _}uZ]in)eƏA r4 Ewoz{epT'-=<#üM7/ي* B;vDf8?hoWL,BflՆX4sXK29fe,K)CΑOzZ^^;ܟ 2C㣮Н|A"3ᨚ_M!YfPt)_!fT.wl/Yf8,3tp"ocT}xH>7\ec)V^&Sxӌ8$'Yfy^3aZ;67eXLfPcɋ &2cUcF !3\ ʌ-^f"Ϻ觟69YsrC: KWU%<%?ߪV| ק )KAAKT;eO] g͕ADOԱ]fI!0eym6(6&u\s]f|+m2튴52C*vs%d`Yk@z lƧO1uBK2㺐暚ә̗ ֶE4\jˌW '_4+\lq:mFdL..`(D+r2{ qiKޖmhTTՑW,ܪVz4ȗ͔JNcG? XꫦpG8@`J 0lt״64vlqPҢ|SI%Pl/VfL̷FcAgϗMD%dXĬ^6mʳ6Zs p O=ENa1dLY Fy?Y#!fspafvꤳv2@3KBU2%Md{>'rYfܟQ(φ 2(]՗b%=̀ BÿF,3J،h_Jm hr3SefEw%:x6>^fh1Q`Jx.WNvh MHk" үJDPM<ޡ"l _lXKafuQ-4Nc ‹&H;.be3eQF۫#367\ 2C\_r4ij{mDžm+ nl~?(T>qC%aי̐=tsL4> ~Cc  ʌ ci,EQd1lȡ?«,3I}b<\imb\"-}+IG)I/gW׫X}eHg 6h##$') _e3fOl֫em*Q!/ɝod<{Kr2 ZćeA[1\h%V,>x?:$PdS(z0{rXRGRsFZvv''xH̺ bp_毨g4bڣ &`A'Rc{ud-Bo4ՔL>pVP'Z| 8 +Rﳙۭ&r?HR'_J!' UKKY;bX1!dN 66&]in^% p}s9ɫ_tw׆cZ<\}=deBpwEp5m oה؀5gvv˞ )z2!!7odF$Bwf] ~/T! ! -m_|G{u~5LhCx*d;F]군v"0d$m*sKoً Q#`%W+q,u4aLx(NsY俧6  hH"9+:lPB%6g nZL$Pᴗ"MT9pst:J#!K+W dF:5BUiTTf'Q}*}j[[1LN:k|1eD ˉ4 W6,q"+R\5磲Lk WHfI%355+C--!8SeiX,eQ].!mmKOJkr `?QNMgy %a@>A1U[P& DŽ/"IeYC]㻄TfoC1#|f#+He YCb#yXD񽱽KXr>XMUU J^ S^&;I[rgt)D:_+c-ΖbeJmg =&'wRhҠY&BH \M.$3u rm_Ƴp$yD1[L,PKeP|Ac(v 8EIHhg2uUTfh.-OKf@iG@o۞Ũ8D~ly+2r=ҝ yd᝿dNS$rKr#($*x\>&̠i7t;;_FU$KeuOϥ2kheEwdRb!!К򶆯KpMe`){3cǧT|Jc(r9یar@;6:*fzk{۝-S"l7Ti5CNAd\OJ4%6T $lӌ4ZʲY (l4 Ilf; t,,KYZ3cƑ-#1e$WL̨-ZTgr)iO(Kjf& bWm$*bp@ #faĚ+8dS?w{ ޅ>"p0I-3h'OԻH w,-W8>_ N;mzzgCK>̿~*h#(` (^tH]3uO1C~5`0Xf-3==a< \d?q[iZ^[QׅoeA\fWy&LJQ++a 2ۏ6WF/]]ՑSi㎞e5fԙ7̽eg-ݶuwS3MuuSfV}f~6d}X40R Qf AQ2#` uE*S4^dKK'VӬ A_9&''?ۍWQ%x4 JzcI%3 ct!vUS7͍Hm/+tQ3fWWb15iVy)rSi6>2[--Fj2eFq2XZNlijي ơa1t<>%a>Bd\]8*p XGo@fL޶i :2zMKn}4Oa@ߍS蹾ejCo︒22`LHQcXr/éyBMMS3]3q ch |hWWray2З2ck[./=8H#z(l߂ǒ|슊Z\EA]۽30: Pe MQc1[L} eLT[i^íPr\Uug < EK6Vg5E ;k;qSȅ2Vߨ_98kEE )(ǓxpeF :){J-rvvT7k8{0~P'ʖFN:p[d=\x_\B&3NjY6-~ۃx9T 7P8.NG+3Ų:CI ƅnjtwБ5v ]n)K:nӲyuה[Tw[ibig O5}hNk+VS퇒Ib~[۾dRan.Q qgJWW<>߿wvMڇk;b_ szد~Nf2/ߔ~" \4[c@E/{z:kk1,3*s NO Q:!IVpG۫!e Xj<2|TbʂFFdF_E9,8g~bEGʹ=Z4 b&  4K7m o p!+:`AԚ^4"42S\ȻH]Wr$0,]IP?.Toqخ<5= :KGJ/E^$U BJR6Fg@ztPj2c04HIԁ.xP\ FaũgkҞϞ퐣 ߻JJ=]Ȇ{-^JX]UۅG?Di{ndFߣskg1'=1B^e.:7R;ΐPLtȸ}Q*GH550U_=UN&3tsO }O(e9!1W[Wf \7]L %IJޮ4J~' ŀ1Rq0l"X֚k"3@Ay`=g062𑦔' x8M,r"`1#B9 9bɾ!J&PdY_*UgGtW:w@AvIVM ddԸ_AK0EP1;wpL:R5X 3͔Eg >O;:ɝѝ pAS8mFWA^jPbmvkF-i2&i7/ Hf|$ ?*VLڠ!]EO(Yj3xiD^}h)TA'PC_fushbDrɌg׎5sH?ho?Nx8"f,?]jj:JEs|nivBfJ 3%k~9랞|+:͊ZFځ!H_JBX*Uv>nh``̨,x$h+ҩea<|I]f($DAʵĿ9ԤZ/[;48򾯅 )c!0<݊[YM#NJq$yWW)M_ Ze YC:c0b; :TZ`{,5:2cb?!.c!*zvԷl4fMu8!$1-J\j.= "L4P,ߧÉWf|Fޤ_ 2V9w[#l9ʎlr&y)'3p>g!ՉҢoIRDgmfIݢ~<,$AWn H: '4J%Q-~`0طX'Kcf>T;%/,,וOv0GtvQIaYO1J*SyytPF#Ǔi/jXti֜OA)W LnWClS>䳴&F}7 !|v!%E9O1Z`2繏|4=3h{2Cwmrs(G+̨qyuͥT91u߾no{Su?6*]I#?X~$A'4؟U92c4f?j~,bj_K~MFdO;G:x73;v2YϤSCrɌnwC2C1I8?S"3@Y\}:r2ar;&2A.G]sL&S!{k{A{& vy!5EL ^889WCUQʶWAfYg5E @SWW49t[BfI${t1|]geX!ԋ#VO`EfdMD [,\1F/MS\jj !$i4%dƫR* *VhS̸[z!vFBPsNz2AߨK# "z1Zu ˌt8E<>QAAW0jʌ-N,.*t͚F^ v_?9y7TM"p'' \7t+jXA/7I,W0>;04Hjgˌޅ `)m)_גZ| ?و) o$$< ed!XS#20-X2Mny4n}qt\ YWW}mz<˩ Bf˲i7ت!.Rf|[ $hPDZ//Af\Scb0,3)34o4(~Yd4U{)3gyiٴJ\byq>IF5mEw[,>kZ.҅ 8X?Fabe?-3oձ}gt0h #RMe( ' U0+.U% JL'+,w7[Wp ʾ!+ !3d6ȧ5zx\qo$8eDfG/xPѫ$F x󮮈m!`0R ,34vʞ&",B_ћ+4!V'3 =ct).B a ۜmPt+l(MlU T(ۋ4ڧ?˶G+ 8uϕw旅͎fuTuٌO7b>(;0><eƵi >0 |eQk6_rvRs}l7b[Ȍ%T5kٌkm̈K~q ʌ7{51 ՗dFEGfG4T,BsUSf#` 0Pl I |Jk:k YMVoF e)i8+-7T.be|iJ>>||iDTBfEeӦx?:$PdS(z0{rXRGRsFZ17:hAru}$H̺ bp_毨g4bڣ &`A'Rc{ud-Bo4"2#bcN DdE }6sVsꞣkjRd*(ES(UYEf+RTHU-;IKܶW+ͧV:m ʌ7$w&ݶ6 8ÿtt==6wyW׋P`2)6 Z _]]oF%eoz{޾nc]ݿJag/i!l6v*u4Z%&2r2״1_SbTc}.{R2>2!!7odF$Bwf] ~/T! ! -m_|G{u~5LhCx*d;F]군v"0d$S A~ ~Rr 7@EaquK] Вx8hU:0X&i>E--NO:k|1eDTHBpe|pҫ7}Λ~|Kn>cޔ h_}] PdixŸ%׌45@:C0j:4Pv5$69E|+|-^$%d]\0 2nI9%wFw B+I+Vl8[++C)xsIIFf| "?x\s54=#dȵ~m|Jnx(qHRAJ ,i*m{  Ydp V i>_Ƴp$yD1[L,PKeP|Ac(v 8EIHhg2uUTfh.-OKf@iG@o۞Ũ8R쯧{{OwX j]oFd0~7ֿhn>H t|im{{gnK_\.3"6Pg‘ҦZ+0=SWmo/>b`0ƛ@l>eOuvf왂⃊Obl E6gQ8Lh'FGc>_Lomo;+ ! T2'Hu %]ۍrTiF-ve,n[n6CP BWvՋT~|Uj bkZ%{uE-@1֮Uウ-rgW|Zcc|R޴;gAjszjk]f2z)2u@[Q[;I;&.eٚ`0X|p]]q˵,3b_```0qOg2BNC52``2`0Japv,ݥN'? 22`0x&[ހB6 2cw[ɷ *Éè^uV`ŲJswvOw::76s'LCw(x 㺕 `0 e`0 ``0 `0,3 `0  `0 d2753jف\rJړ,>Ro {U5 {d ,3\3Pakx-BhuJ;`3/:$?ywtg|0w=τ:djZ7`Qh'OԻH w,-W8>_ N;mzzgCK>̿~*h#(` (^tH]'O~?`utL8!'4uO ˌˌCOolDw2('OjVg+VuunbnztE$&LJQ++a 2ۏ6WF/]]ՑSi㎞x+kls>{ϭݶuwՕyꠚ2>wS]% +`8|4BctzK$Zhe`11d2%3\\b=J5H6JԿtb5͚~n_n|2}xM%XG@p47OT2@2JmW1u~Ӎ܈tۖZ&tO"pyBfo/R{!Nj,7G\ojq:+}wmm+td^K:X̷>|@NyU(r4vpsa6|+jP c2ˌ|MePny=K]nf+l oR隉SHGSfC2 ȓ'\tނDvA*$S_G&`Kd<<+`WT ֪*2l ѝDfYHݟ.{_hnbT(3dꤢޚMcx-nT'{>?[YG-^꽵:F-nYydH'G.,}wFll%7ʡ!-_,-:8IF9<>/3ڝWt+WoMSj;\Yك:Q7 pҁ"o_|_O[\B&3NjY6-~ۃx9T 7P8.NG+3Ų:CI ƅnjt\tdƴeK~cZ*0ees5kB~EɌlnNk"}РyqfuO;;/55ˌZZSb1q E)%q=/5Os ?XW2`LF"4|n $J'd>j~S{c{w;k@-3C] BYȈ/P_lH(QK^DQd;X Aހf)Ԙ67HLs qjMT/~y)_]+9AvҁG'u+ $h'OͳuςґdK:I`<(;.@B|ҧ7Y"PZ) )ڲ z|kgf`sucDf.|)%ɂw?:N \1k`4PpNC6Į@`anoo YbկAգ`6D+Px]*e庢UH Ģ(b*h;(5nEWDhQi~1T N?9tMl/%Ȍfg3eљ*2urgth(+"x=tۭUlGWZf8ԲsQEIڮr[P8r7ɌO]TaGŊI4 %P-{O:-ë-U:Uj78.}U酺1%U9!f~uOżV/Ly#+MO ^]=#{%3j\i]s)QftZzCM"A§E@O˴QON8 R4O}}ꀶig|U9v,3 $!LA:8TaՕ5 pQ8c0 [+R|+W47Ihwk ,Z\m|dmbeƁ͹E9>V(dOh6aʂw Bum/Yf%Ԉ=L@ƹ̘ȌŔ޾p;cN|b_\jj:]]`+F{Fqũ 1Ief@w/P;ܛjR~o5e,/m0Vi˞S,/'34ɨ]n~?ߢzMEp(3^̠z:T[^uDiupuQ}Ҹ̸x \#\dAѱ |t""SܥJd!O\qWĭPYnPM?t~ fhnݶl~O+;.ˌQl6 2I3,1A,YfhR=uMf3DX7Wi BOf<zRvR\&[Ô#@.9۠WPq٪vQ+3h6 O' \iۗmlW"pV+!3vM[>f|TYG)1p,3*/3;7\0ijP{+>:$Bv/dNJ15Zũtv`0,3 M 2#3#Oflя!)3N0(D>%55mD&Z-ඃᠮ:TR T(ۋQ,*aX`Pf,mQ !1M̀\BcD/5\A|QSXfKf ]prh[~|eXfܲfa;Yf0 e T}thФ& D)Z`դyvep';Tው zy)l׬.EԜ٩1~LAx4]]c^̠p5|8h{udƦ&r+WBfY&5"MqQmHm壁GIS+#o㝃Soץ̨XB+3n}u'W֨X7_;4ױsyG 樝X2\#- y-y s.- 2x)Tڋ+)Bev zM:ju"\ ZFE_jf~tu*r8CkBf_4yi2Mvi^q&FgbwmS̘瞧FyeF6 jHWn{;"#1mU.#Kg 4q!mͲl"EvK&g`0Xfaf88BrB U6koZfjFv(ı!箚P5H|]?Å _2ZaUrߌ)JR KV =E"W'%utQ>*18[hX `hwrY~Fe%N }2E= m4yؾȷP=R۫#3h)z^%D11{'a}">9suQ5a5Y)2" B l "3) *$_ ݋ąd9qG_O&:=VVBf9n!BDUny7ҿwvbS&_Wm',2ie`Qӻ"67kJl@޿V` ce}C ZFG]\Q#$dY^F  9ވXN r+僊!==5! Ez.rٟomo@}l9ڨKn` ZL#}_62o_Z@aޑ( 5:n ZrO͢jQG$GP4E{jC`{D/i!"C,f %4QB/jxxf{ඨ%D@N{)D% 9GG>xE@fX#XEFEe}ߧҧ吻e'w5r2bho)t W6,tJ=ފ@Vx2R@E/%͠ޒ4^oћc`0,3>b >+ @AB֐@6q|olz)<VuUp>R.ȔW'Ŏ@Җ)h W$JbRX\ L NMDX[(v 㚫Ʌy!Dn森VrCC RJfMPiKO" [ȷRH%Ҩ6##bbZ*?{CQE-JBBS?˕2.@ӈ_tiy\2J=>:'d~+,Fezi28em7[+O 6ev8ӿiWțe`El>eOuvf왂⃊Obl E6gQ8Lh'FGc>_Lomo;+ ! T2'Hu %]ۍrTiF-ve,n[n6CP BWvՋT~|Uj bkZ%{ur}cƑ-#]YeBwvlO[~fT暚&n^5W`0׿`:[2 cʌje```0,3Xf0 ,3Xf0 DHimH:z-Ew7 22`0*"3t0^jZ2`\?2cw[ɷ *Éè^uV`mkSױճnMNd`0 ``0 `0,3 `0  `0 2`0 `0&st͌ڢEpv v }eU/VIž/vvMb/j&@FҎ3L6ŋoO~n7}i=Zt,p[Kܼlw#`1w'n]C;MYT+N/'[̶W Q%O__F4p/:ٮٓ#HnQR|=__ `y ˌeӡGS;gA'n{5MՋ+j:m7l7z[="*60!jxEp8Af{U<E+:2c= St׿lcV w߲W޶iԙɚʌg4Nxn먭e`0Xf"3d|("U@AQ¥iנ{vrןƫh(<1~1d Uh*ȌnF۶uiMǗӕrʑGTHY=H{qJKOd~?LEeFnzҸc e$UZtdXM7wTV\0em/syk) SY|. BVDf:z]2czM`Бw{odp貋n_wI=7\^7b}}Df%'d>SW细=m)3x6G"1,xWR2=.`0&̨1y,sY2n;EWUGf8L [/'vSqK[iӱPm#/-)Yf]^\5u'ɜO|їK6!׻w+G0%t #,cPƢdTQV`=WHfLq[^[D"+GJ}qK.1'sÕ 8u@_Kx4yN񋿭&G 4̿`bH삂2c ĩ?kl\6jkON3b0Tf<{h.xR/5\Gr7ov8;Y@eSxLLB=2ڕ\@ =9/̘E.{=$KK&R!:J0A[ 15_bf@VW!d`pPGotv$*t6svGtB-ssBpSXS_<=B'S'hkp+נz?|t?jtR Y|Ml7hp{ 3@:a>re7*gkd+9W%nZdoѱ1HJ4}l_i~kʞRݱ(͚ԉeQFxzj{Yৡ̷o+Z ~G6{B%5F T2 6ʌimPҹo<=2q۟=i'tdtm޺m>NᚚLYJuǽHfDQT8?WDپJiA\&UO.ㆆCt\r~(鿻L$6b0Sf' [p| O߀;^)cPˌ1Ǡ5|FP52"3-aD<+.?|dniפ)Dcwt7Fn0H7Y<5t<<2r\09}ZՋFFyyyJN9cFt q@: Jmt4ٺgAgHi2KC$~\}JWQWhSSBZ,^^ZJ-ԔZf ##:0!è=8>6uTrTa;{nE]E6kWWj@蚮.Ҕd;OYY5fpD0Z@(8SbW g]0`777P ,KKE_cQg0"(<.iѲr]Ѫ $bQuL1b+~"h c~_*Y'ɜQGj&dFLayG?:3S4njhv?=tdXy6Wf˦MJ25t-E*E}`0,3J"),_GeBB\KKȝCMz(uZC!5vKӱĐ|Hnŭ&'8<㫂Ѧ^I5wC֐>Nxyk3,g 8V,$ ipp8wvFf35"tWEf|1v <qGx:=;r,c_ݳrW{t8% >X*Kƿwv rDͅFfQ c\ˌž?]0ڕwy`9ew /O} >3hؤlz%<<:DH4x\TN^x:4 ik' ͊ǫm{UdX& ʌIhs)yl{YZ\wh>;xϐǢ'Y|^s\} יq F֭-^cvj c18 ;ٌ4̝L&ɽ;7sg2ejOtUTRK}Ԣԩ-rcyd!3ܜ#mi`){xdS;{2ʌ>׈xJ#\YH$d탡P6[H2m}($ay 3roG}t9Wd@ `QmI8=Uc"3@> I 5G]4L̸\)?" Ny!5Ekk//jX?_s@`"ʶWAfY3~dz~ l Ӫ5WYZ-:䖦 a6n2u7}YgeoӒ ̱Ȍ/3^M 9uN8j$sd~?2"3>J:L23>ookDDTMf\s 3`g ( ĉ JvVSfDQ`w~ Kn嵠,Hm'ɳiW䄶1qg~AҨqۋ{zCDW99uv̘G9 @%de[7d>9BQ1 Ap͋x(vvB{:㶗,3?X5"3| (dˌ{ZBlO5ިoJ}f©UYx<'e.Fd'ԣ2CrKXېE5ey=J}}7uP`2C3;FEfY5i~o5e,/c6EiKSdTݑ䏮k~?_Јu.4_BEeqۋ`SϼU]]-̀:"մ&1i\f\N_6HikF>YfPv-I,.\R^yka&稡 ෝ\5%ߓWf~&I UkΖvُW#&È~R*_72#jD*䌮8N-V c ͔dIMd6C+2Hbu|2㩺tl.eRH;-D,/=ꀢG^a\7M4gJE^̠ 0>/qm__#CѶWfY=WBf/6_02^9\J蕐b.GfTm9bTri`)pJreDQ~v܃Y}<ޑs OrBYL(djֹȑk"36׋]Vke](Nh~('d,`k~bxG*bKrPsx,[)3Wg}MPZFE/5_R3s$0]:ŏiF LP.6Xjhs b7B{%66~Y<_/顮bm'<[,E+̣yՖC*JtW* PL2B#34I>CkBf/2#etNFU41r>uitM2cvlaH+5#Bu3Zbǣ~k{+21y^Vf|Up?63r(ʌy>~Qs ;:6U[N(Gy2$bEp8v"=ɲU6mh||2 @T!ssT(Ѭs<+h w8b|AKRK_Xճh(=vmTPttQx0{rXRgᣳR36W}!Vh܋ʊNN>U\#uu Dp_g\T &W0}!)ձ:2B0*Ɍ\1ŴOP'@p@Vgg5˭lB GlTP ASqkVyJU?e :$_ Rz5m8+Mvkd;33inxW==c45Ys\h\^PmiZrED]랞x]=8Qc`̸62ޕ״) oSbrZm*ւ1is.uTS -hEOagBϼ}6($C7A,d'xhіBE|H&$wbV93D66>K}FR:C''i h(Tm:ņq8KoًAΨ[-Zk:Eݢ& Ipz;;h.ԆTb Q$7B4tEÀZu Jh1_qb6Ϣ::j)D%..-u$d}%}E. 32xla VҨ̀9bLd)m9nYdp"qB~A]C-cPf@TrFy^s'&Hk Fe%3JND/cK}N3 3NYksbFuuM5ȭkXWl1Glo\t3 ƵxP0`y+L @D!Ȕ{ _ p|mtAM\)*q{|Wd)D:_w('EvX* l[a;B A 9G5iao,!2hr!iV /vyw顃 RJfMUZ%@x7 f [)|iTah70 T584o{~;S']EemK#n^1剣r (m@8V,FeF~d8[wu w@oEɌ!t/k%3RS/e&񗾾1L_(p:gr c 4M]#Y^P*U|,GWÈf'Xoڙ竀ɸ3΢~YQ3DnLY t2'H} %y/ U* 43fܬ?[n61Ilz|Uz bgZ?%0z1mEC`xt&aLk;LvF="SCS] {Js_e2\ r~Y?a0ׇ`:  aΆ׉o[C1 Ta0 ,3 bYO\l.?,&줾uOO-O0 ,3+ #I_ X+ls<`2e`Ȱ!>'jV1Ӧ9yڇ`g1;h| *CC^uV`xbm{$zYy w0 x `0 e`0 ``0 `0,3 `0  `0 dF>}{qCa/q>ڥ^1G Gvw߄#f =![h=LG4> rg;`7:4^sy>=x\x-9joH ˌjG(j>=zxO. } N'N㈃u7my{ϧCK1Ŀ4p yk8h?66RK1v2ȌuwwP_2(k5ѥiw{oEm`]_DCc$ zxep87cX*rkcHʌ)Ф'|t7߱ɫ$t7YwOO8M3/>2yawOldzhpb2j7;Rh68+-3>=\CCwez`[8Ȕ`q '?.JflY5Њ* 8ץY\~0;./Ll7EGG>4PgT2ct?vU$q*$3:mw{w6WZ MN8T-6L^)׉mjmUPvt49}gjs68C(55TϿvu)zL*U .Tߵ1c0Xf2XWw:qn__fotvA]`ʌ^>}3L2g]hy獷Id'u-3&>DT_|λg&/2ZxnZ5YQqe/͹ғVzv-2yqWYNb:Mif?fs12Vf{_twӖ}XVkՔxѮ pay웾2cg]n>T./>;@' FA8+ :xEx4~TW43 [}087z=" M}%N v_l߹9l)zѮ);f& L?~餢Z-cf7S8slU񳹵s1`(o:nN5Evy ι,cw\aո-p|WdoQHJ\cc82 qE%}~[ö&GZi܃zmXtl(Ino Ow{ջ š)Z ~Kh|~ : ݅qKj[d,ڠ#lSS}f#R6ٕWjJ282;pӞf-&&/]t:&zHg7=HgS)Z8P%#Tx2.QKDT_s:;zvF"\l}$6s<۱|l2 ** iB/}}10PG/?S&--j_ Q⣡!Ö́#^4 C  hyShm-g^4〝f'D"ҡي{Jn9cF?_ t + $vlj]\s`ᠳ433;H5Aٱz}w*qJH|s;/5Dk@R<:(PSj1X7Hp4q]>2Ūii4Ng{>uC*ly@ˎ"zWWj<@hnw7na40ڬYeΉDMg315>RLqȌW-|$}=wD5~-77rOG8'xEtN"nYsv* XcW*_\s29m"vG9$T/M'.6poDñ DOZR:&H-6^ "3xM9wmqEf];3>nb07xw 2c403dG s:A vrEٱ1@bbWDZk_B_l˕+p Uĕ&@EQ32TvPj6Ak0Eŧb33LMbQhu.:SXŎy1O6%.nh pbmmQjGGZfre1_Wc!֎Z.Șx_:K@2lUѱbB1Tqu薤#; ÕBWPye 8G=lpɫhSNWOO ȁY.> #2XLlz4O}G<[)TyeK--W#뾾^eWI KQ,3\fq .KxEf?M d2C!! RΡ&=B~:x-B3Z8y(٣)v"qbIi4cjr\_I84lu:߰avH9St>b!dkn{udƾ>lB\1/ JMhY: R]loGV`q]p2o4AIbns{x;y4>]F "L\ޑߧ bƏ̘ ۾2nz~T>beA"A,W9񗾾=ѨK0"3K X"A%ǿI)d% &-vb]Ы"f_#nKzlk8{\U?VaEf`0n .yr]f|D피KkkտFc@!3D{P*<`6?\0\izʍYgewψrs(&OYJKi^vk駆6LIOtFnE s$eI %3p2juy&d]]GHؓ;r2#jS gRxd> udL.Mfm6ѽ9q 'L:;Xޥӧê+'3f'k'# 4#q<{:,3DP/~ȗ ̱Ȍ΅FOmcHc,wYfPv-I,.\R^yǧ̘qL=4Ƥ&i'_G(&Xr!X(Z@ʌRc3|ndFfa皛#v.;{=f/VPCf`0nR ,34vf<|EWi BNOfu2"Y6mEBcD/5_A|Q),3 h3ᓵp-CM:\ K[[U&# c ʌ7n8od^&+e4#CkBf/2#etDNFU41r>uitM2cvlaH+5#`݌넣K5Fɒ|&>Hu3fH՗$Ǐ:;Ū㉄>OLXo97且o7_k"3mߖKL&զR=.4l1~&xWS#T @WO۰ZH8gqR3[f_l(ؠPd48Y6fooZfPa5P 9$ww*x<;u*hrmACR /(|@j zC ގ-JCV{.fOK |tVjj/ H;u''xHf](+@1hC `||BDJul̠P(F##J2#WD1Sk=;$>+(*+>)Yr+[P5a3(3~FEeTڰU-ROYd"ɗ1it(þ}ߢ.=5E}"ܢ@._Dzs٥Dɴi& ͣȟs6z l^ͣmjz\ |u$n# GS=ߊ-o;iWPawp`Ec \^R} TuB`.8=HDeU*$78sAƔx $MMxoSaOss'?bhA(Hh| <z[18DA'r ?b!;C3ȍ*Czݽ5! }KԵ g_l&1Y3pP:av@?8IK@Gjԙ/6_ u ǰ|D^ ]\uFlhՊ~X1,u6aLxAsY俧6  hH"+إժSPB%6{ ~DL $TK&*q9p h t#!K++rc S~FEec'O%NQo)w"3j9߇#2d:_&[.vقf&31ǃ/}}WZ[ 8&GYAś>kֈn `Ekqi4K 柋(Vf$O-Flv`2Kd:{PAmRbMK;(sDQaf07 ՒnƟJt晦!_5;Jfh9FЛL;:43z=|v\2hs9f\niQQ,!3a`0n&|ݕt$ Ջ*^o(puՁvM;|3wU\i*EaN3e> Q-@i$6T $l4ZsplQh~BPlv6' pX^U%jŘ3cҙ-312Y=ڧKNA-tB6DvGRo^=rl!r;^.%p@C&U[\.1r`2Qv&d0 Ƹs{Yl%<-sLk}($ `c0Xf0Xf0 MܷK--7#9Y=wY,r.eTiA xc0Xf0Xf0 Mgr!x|Ojiy?I.-ڬe9D1r~   yp:oo>\Cß4_r$r6 ݋`c0nX1;h| *CC^uV`0!Z\7cooYW/ko1s  `0 2`0 ``0 `0,3 `0  `0 `}4PgT2ct?vU$q*$3:mw{w6WZw=X4O'Ӧ*¬Z:l6fvW==W (vthnnSz#2<.im据ZO&*}ɦ~Y}}qC3 ,3#խNץ;F]vW;62cdsߩ) SY}/`yyo v]ˌ߹٩K&lD3V.l\0ipfk(3 < ]fSqf v`X"8U&|:ͅ Յ\k=pX.k Y![h(=d:^,3n/Bؾзd*6j ={L _Z\{}aPbCE6k x6n8i`Y5&3ROlF&qWEZ+3ol}1D~tP ycܡd%HN:|wO2cvoҷv̘Uaz~Me-x:2ㅜ'җ \Hߵ ((gSȌik  nWiC!TI22 ?]$)yy`9x] A,;ULwQ+1L##&ggџ+L=gΦH5M%X}<.N^X_>ik'Ί)W L4.ܮ+3Url{YZ1|潃 y(Z>nlps)7gAK{=#9ܖǛKf9BQ1 Ap͋x(vvB{:㶗,3?X5"3| ( 2cWc|3yb3$iXNfȅZR'Q`Xئֵ"k/f22C3,1A,YfhR&G5iy. @X$*x)eKyN d .47\pu@#lcU%Pl/VflhN˗Ҷ//ޡh+3Db+!3y:5wf|B"泎vGG5= LxyVc|kXxO8ZP.a0Ӕ 3R@s vnm4C ~'NG{4}O 8L[ϐ%(qYeF^4`;3 c0XfTVfhgPE^A/|2csFE?JX髦̨p@6$%`$)ٮdi;l$2d3kMjs.RPuvQ+3䫧Q,*aX`Pf󥕉Ais (j# B勊NaQ@cD}YM5->26LƝ(AfUhT̐SiGe|z2㈜J4Nw`0XfYfhD`̔Rvwn+C;4e&}Ȃ(Is ![h(=TKafwQ=4.ǔM&H;.be|Q?8h{udfr+WBfKKԻkdY3S "Qʥ$)ɕEARf:j4F"1>X l߹s5wToƎo<ޑs%3Db!8HDnRzܒeHLч@ao}}"-+-bqi;bNP)3K?]^f22ckV*TTŖX<·^SfZf:T 4 _jf~IH`:9uӌf'3@G]0mY.`n8{ GbSh5O˚(g,Z-Efͫ<:VQjWAfbb]a6(|ugrmR QE3ZƝޙ}pi^&FΧբ:)Yf̮SU2#lyf1aptiVc7.DGJȨN^Ck_@Dn%uJ&KcU11 P̐a,Zlߖ&Ό.g!먟vuzq9-ȉ?QK}K#)=9`0XfTZf_l(ؠPd48Y6fooZfPa5P 9$ww*x<;u2hrmACR /(|@j zC ގ-JCV{.fOK |tVjj/ H;u''x.:̺ "P/W3.bcцN+ꉔ^APVLf䊙(}j-bgE>q">" :Fƒlnn-xi&tQ鄏]ftJ1.iy0~s7mosX+36I*⥰F_jF 2n3(B]N?{ܣ@M|=:La 4 _'3`QQWJkڄ)~6k49:qc)vMpͧOѰ3gފECt! H<4hK{y">K\Bh{x;wlD]pa"@Ci>#i ucaf̡ DO}AbË8Pr 7@ɠUg-v\g5͢nQg$GAA84E{jC`{(i!a@JU&J%Pm_/,F/n,z*Hé"MTrA(QGBWW2#` #$NJޖSEf''g5r1FdjuhĞM8\ޘO֌bK3έ%[>52HD'p\?\R"Ox 2X ~'z` (tSQy)CѠ1zf22/xp" 1c{)Ahw:[(r 6|o^k3S6mup5^xR.ȔW7EE'"{|Wd)D:_w(o6W[2cUpضv3orMk < v0.2.0 is a minor release. gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/faq.md000066400000000000000000000136271507671574500244730ustar00rootroot00000000000000--- title: Frequently asked questions linkTitle: FAQs description: These questions are frequently asked by new users. categories: [] keywords: [] --- Hugo's [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question. These are just a few of the questions most frequently asked by new users. An error message indicates that a feature is not available. Why? : {{% include "/_common/installation/01-editions.md" %}} When you attempt to use a feature that is not available in the edition that you installed, Hugo throws this error: ```go-html-template this feature is not available in this edition of Hugo ``` To resolve, install a different edition based on the feature table above. See the [installation] section for details. Why do I see "Page Not Found" when visiting the home page? : In the `content/_index.md` file: - Is `draft` set to `true`? - Is the `date` in the future? - Is the `publishDate` in the future? - Is the `expiryDate` in the past? If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`. Why is a given page not published? : In the `content/section/page.md` file, or in the `content/section/page/index.md` file: - Is `draft` set to `true`? - Is the `date` in the future? - Is the `publishDate` in the future? - Is the `expiryDate` in the past? If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`. Why can't I see any of a page's descendants? : You may have an `index.md` file instead of an `_index.md` file. See [details](/content-management/page-bundles/). What is the difference between an `index.md` file and an `_index.md` file? : A directory with an `index.md file` is a [leaf bundle](g). A directory with an `_index.md` file is a [branch bundle](g). See [details](/content-management/page-bundles/). Why is my _partial_ template not rendered as expected? : You may have neglected to pass the required [context](g) when calling the partial. For example: ```go-html-template {{/* incorrect */}} {{ partial "pagination.html" }} {{/* correct */}} {{ partial "pagination.html" . }} ``` In a template, what's the difference between `:=` and `=` when assigning values to variables? : Use `:=` to initialize a variable, and use `=` to assign a value to a variable that has been previously initialized. See [details](https://pkg.go.dev/text/template#hdr-Variables). When I paginate a list page, why is the page collection not filtered as specified? : You are probably invoking the [`Paginate`] or [`Paginator`] method more than once on the same page. See [details](/templates/pagination/). Why are there two ways to call a shortcode? : Use the `{{%/* shortcode */%}}` notation if the _shortcode_ template, or the content between the opening and closing shortcode tags, contains Markdown. Otherwise use the\ `{{}}` notation. See [details](/content-management/shortcodes/#notation). Can I use environment variables to control configuration? : Yes. See [details](/configuration/introduction/#environment-variables). Why am I seeing inconsistent output from one build to the next? : The most common causes are page collisions (publishing two pages to the same path) and the effects of concurrency. Use the `--printPathWarnings` command line flag to check for page collisions, and create a topic on the [forum] if you suspect concurrency problems. Why isn't Hugo's development server detecting file changes? : In its default configuration, Hugo's file watcher may not be able detect file changes when: - Running Hugo within Windows Subsystem for Linux (WSL/WSL2) with project files on a Windows partition - Running Hugo locally with project files on a removable drive - Running Hugo locally with project files on a storage server accessed via the NFS, SMB, or CIFS protocols In these cases, instead of monitoring native file system events, use the `--poll` command line flag. For example, to poll the project files every 700 milliseconds, use `--poll 700ms`. Why is my page Store missing a value? : The [`Store`] method on a `Page` object allows you to create a [scratch pad](g) on the given page to store and manipulate data. Values are often set within a _shortcode_ template, a _partial_ template called by a _shortcode_ template, or by a _render hook_ template. In all three cases, the scratch pad values are not determinate until Hugo renders the page content. If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop](g) variable: ```go-html-template {{ $noop := .Content }} {{ .Store.Get "mykey" }} ``` You can trigger content rendering with other methods as well. See next FAQ. Which page methods trigger content rendering? : The following methods on a `Page` object trigger content rendering: `Content`, `ContentWithoutSummary`, `FuzzyWordCount`, `Len`, `Plain`, `PlainWords`, `ReadingTime`, `Summary`, `Truncated`, and `WordCount`. > [!note] > For other questions please visit the [forum]. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question. [`Paginate`]: /methods/page/paginate/ [`Paginator`]: /methods/page/paginator/ [`Store`]: /methods/page/store [forum]: https://discourse.gohugo.io [installation]: /installation/ [requesting help]: https://discourse.gohugo.io/t/requesting-help/9132 gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/inspection.md000066400000000000000000000021241507671574500260650ustar00rootroot00000000000000--- title: Data inspection linkTitle: Inspection description: Use template functions to inspect values and data structures. categories: [] keywords: [] --- Use the [`debug.Dump`] function to inspect a data structure: ```go-html-template
        {{ debug.Dump .Params }}
        ``` ```text { "date": "2023-11-10T15:10:42-08:00", "draft": false, "iscjklanguage": false, "lastmod": "2023-11-10T15:10:42-08:00", "publishdate": "2023-11-10T15:10:42-08:00", "tags": [ "foo", "bar" ], "title": "My first post" } ``` Use the [`printf`] function (render) or [`warnf`] function (log to console) to inspect simple data structures. The layout string below displays both value and data type. ```go-html-template {{ $value := 42 }} {{ printf "%[1]v (%[1]T)" $value }} → 42 (int) ``` {{< new-in 0.146.0 />}} Use the [`templates.Current`] function to visually mark template execution boundaries or to display the template call stack. [`debug.Dump`]: /functions/debug/dump/ [`printf`]: /functions/fmt/printf/ [`warnf`]: /functions/fmt/warnf/ [`templates.Current`]: /functions/templates/current/ gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/logging.md000066400000000000000000000025371507671574500253500ustar00rootroot00000000000000--- title: Logging description: Enable logging to inspect events while building your site. categories: [] keywords: [] --- ## Command line Enable console logging with the `--logLevel` command line flag. Hugo has four logging levels: error : Display error messages only. ```sh hugo --logLevel error ``` warn : Display warning and error messages. ```sh hugo --logLevel warn ``` info : Display information, warning, and error messages. ```sh hugo --logLevel info ``` debug : Display debug, information, warning, and error messages. ```sh hugo --logLevel debug ``` > [!note] > If you do not specify a logging level with the `--logLevel` flag, warnings and errors are always displayed. ## Template functions You can also use template functions to print warnings or errors to the console. These functions are typically used to report data validation errors, missing files, etc. {{% list-pages-in-section path=/functions/fmt filter=functions_fmt_logging filterType=include %}} ## LiveReload To log Hugo's LiveReload requests in your browser, add this query string to the URL when running Hugo's development server: ```text debug=LR-verbose ``` For example: ```text http://localhost:1313/?debug=LR-verbose ``` Then monitor the reload requests in your browser's dev tools console. Make sure the dev tools "preserve log" option is enabled. gohugoio-hugo-6abdaca/docs/content/en/troubleshooting/performance.md000066400000000000000000000131561507671574500262220ustar00rootroot00000000000000--- title: Performance description: Tools and suggestions for evaluating and improving performance. categories: [] keywords: [] aliases: [/troubleshooting/build-performance/] --- ## Virus scanning Virus scanners are an essential component of system protection, but the performance impact can be severe for applications like Hugo that frequently read and write to disk. For example, with Microsoft Defender Antivirus, build times for some sites may increase by 400% or more. Before building a site, your virus scanner has already evaluated the files in your project directory. Scanning them again while building the site is superfluous. To improve performance, add Hugo's executable to your virus scanner's process exclusion list. For example, with Microsoft Defender Antivirus: **Start** > **Settings** > **Privacy & security** > **Windows Security** > **Open Windows Security** > **Virus & threat protection** > **Manage settings** > **Add or remove exclusions** > **Add an exclusion** > **Process** Then type `hugo.exe` add press the **Add** button. > [!note] > Virus scanning exclusions are common, but use caution when changing these settings. See the [Microsoft Defender Antivirus documentation] for details. Other virus scanners have similar exclusion mechanisms. See their respective documentation. ## Template metrics Hugo is fast, but inefficient templates impede performance. Enable template metrics to determine which templates take the most time, and to identify caching opportunities: ```sh hugo --templateMetrics --templateMetricsHints ``` The result will look something like this: ```text Template Metrics: cumulative average maximum cache percent cached total duration duration duration potential cached count count template ---------- -------- -------- --------- ------- ------ ----- -------- 36.037476822s 135.990478ms 225.765245ms 11 0 0 265 _partials/head.html 35.920040902s 164.018451ms 233.475072ms 0 0 0 219 articles/page.html 34.163268129s 128.917992ms 224.816751ms 23 0 0 265 _partials/head/meta/opengraph.html 1.041227437s 3.92916ms 186.303376ms 47 0 0 265 _partials/head/meta/schema.html 805.628827ms 27.780304ms 114.678523ms 0 0 0 29 section.html 624.08354ms 15.221549ms 108.420729ms 8 0 0 41 _partials/utilities/render-page-collection.html 545.968801ms 775.523µs 105.045775ms 0 0 0 704 summary.html 334.680981ms 1.262947ms 127.412027ms 100 0 0 265 _partials/head/js.html 272.763205ms 2.050851ms 24.371757ms 0 0 0 133 _markup/render-codeblock.html 163.951469ms 14.904679ms 70.267953ms 0 0 0 11 articles/section.html 153.07021ms 577.623µs 73.593597ms 100 0 0 265 _partials/head/init.html 150.910984ms 150.910984ms 150.910984ms 0 0 0 1 page.html 146.785804ms 146.785804ms 146.785804ms 0 0 0 1 contact.html 115.364617ms 115.364617ms 115.364617ms 0 0 0 1 authors/term.html 87.392071ms 329.781µs 10.687132ms 100 0 0 265 _partials/head/css.html 86.803122ms 86.803122ms 86.803122ms 0 0 0 1 home.html ``` From left to right, the columns represent: cumulative duration : The cumulative time spent executing the template. average duration : The average time spent executing the template. maximum duration : The maximum time spent executing the template. cache potential : Displayed as a percentage, any _partial_ template with a 100% cache potential should be called with the [`partialCached`] function instead of the [`partial`] function. See the [caching](#caching) section below. percent cached : The number of times the rendered templated was cached divided by the number of times the template was executed. cached count : The number of times the rendered templated was cached. total count : The number of times the template was executed. template : The path to the template, relative to the `layouts` directory. > [!note] > Hugo builds pages in parallel where multiple pages are generated simultaneously. Because of this parallelism, the sum of "cumulative duration" values is usually greater than the actual time it takes to build a site. ## Caching Some _partial_ templates such as sidebars or menus are executed many times during a site build. Depending on the content within the _partial_ template and the desired output, the template may benefit from caching to reduce the number of executions. The [`partialCached`] template function provides caching capabilities for _partial_ templates. > [!note] > Note that you can create cached variants of each partial by passing additional arguments to `partialCached` beyond the initial context. See the `partialCached` documentation for more details. ## Timers Use the `debug.Timer` function to determine execution time for a block of code, useful for finding performance bottlenecks in templates. See [details](/functions/debug/timer/). [`partial`]: /functions/partials/include/ [`partialCached`]: /functions/partials/includecached/ [Microsoft Defender Antivirus documentation]: https://support.microsoft.com/en-us/topic/how-to-add-a-file-type-or-process-exclusion-to-windows-security-e524cbc2-3975-63c2-f9d1-7c2eb5331e53 gohugoio-hugo-6abdaca/docs/data/000077500000000000000000000000001507671574500167775ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/data/articles.toml000066400000000000000000000545551507671574500215200ustar00rootroot00000000000000[[article]] title = "A visit to the Workshop: Hugo/Unix/Vim integration" url = "https://blog.afoolishmanifesto.com/posts/hugo-unix-vim-integration/" author = "fREW Schmidt" date = "2017-07-22" [[article]] title = "Hugo Easy Gallery - Automagical PhotoSwipe image gallery with a one-line shortcode" url = "https://www.liwen.id.au/heg/" author = "Li-Wen Yip" date = "2017-03-25" [[article]] title = "Automagical Image Gallery in Hugo with PhotoSwipe and jQuery" url = "https://www.liwen.id.au/photoswipe/" author = "Li-Wen Yip" date = "2017-03-04" [[article]] title = "Adding Isso Comments to Hugo" url = "https://stiobhart.net/2017-02-24-isso-comments/" author = "Stíobhart Matulevicz" date = "2017-02-24" [[article]] title = "Hugo Tutorial: How to Build & Host a (Very Fast) Static E-Commerce Site" url = "https://snipcart.com/blog/hugo-tutorial-static-site-ecommerce" author = "Snipcart" date = "2017-02-23" [[article]] title = "How to Password Protect a Hugo Site" url = "https://www.aerobatic.com/blog/password-protect-a-hugo-site/" author = "Aerobatic" date = "2017-02-19" [[article]] title = "Switching from WordPress to Hugo" url = "http://schnuddelhuddel.de/switching-from-wordpress-to-hugo/" author = "Mario Martelli" date = "2017-02-19" [[article]] title = "Zero to HTTP/2 with AWS and Hugo" url = "https://habd.as/zero-to-http-2-aws-hugo/" author = "Josh Habdas" date = "2017-02-16" [[article]] title = "Deploy a Hugo site to Aerobatic with CircleCI" url = "https://www.aerobatic.com/blog/hugo-github-circleci/" author = "Aerobatic" date = "2017-02-14" [[article]] title = "NPM scripts for building and deploying Hugo site" url = "https://www.aerobatic.com/blog/hugo-npm-buildtool-setup/" author = "Aerobatic" date = "2017-02-12" [[article]] title = "Getting started with Hugo and the plain-blog theme, on NearlyFreeSpeech.Net" url = "https://www.penwatch.net/cms/get_started_plain_blog/" author = "Li-aung “Lewis” Yip" date = "2017-02-12" [[article]] title = "Choose Hugo over Jekyll" url = "https://habd.as/choose-hugo-over-jekyll/" author = "Josh Habdas" date = "2017-02-10" [[article]] title = "Build a Hugo site using Cloud9 IDE and host on App Engine" url = "https://loyall.ch/lab/2017/01/build-a-static-website-with-cloud9-hugo-and-app-engine/" author = "Pascal Aubort" date = "2017-02-05" [[article]] title = "Hugo Continuous Deployment with Bitbucket Pipelines and Aerobatic" url = "https://www.aerobatic.com/blog/hugo-bitbucket-pipelines/" author = "Aerobatic" date = "2017-02-04" [[article]] title = "How to use Firebase to host a Hugo site" url = "https://code.selfmadefighter.com/post/static-site-firebase/" author = "Andrew Cuga" date= "2017-02-04" [[article]] title = "A publishing workflow for teams using static site generators" url = "https://www.keybits.net/post/publishing-workflow-for-teams-using-static-site-generators/" author = "Tom Atkins" date = "2017-01-02" [[article]] title = "How To Dynamically Use Google Fonts In A Hugo Website" url = "https://stoned.io/web-development/hugo/How-To-Dynamically-Use-Google-Fonts-In-A-Hugo-Website/" author = "Hash Borgir" date = "2016-10-27" [[article]] title = "Embedding Facebook In A Hugo Template" url = "https://stoned.io/web-development/hugo/Embedding-Facebook-In-A-Hugo-Template/" author = "Hash Borgir" date = "2016-10-22" [[article]] title = "通过 Gitlab-cl 将 Hugo blog 自动部署至 GitHub (Chinese, Continuous integration)" url = "https://zetaoyang.github.io/post/2016/10/17/gitlab-cl.html" author = "Zetao Yang" date = "2016-10-17" [[article]] title = "A Step-by-Step Guide: Hugo on Netlify" url = "https://www.netlify.com/blog/2016/09/21/a-step-by-step-guide-hugo-on-netlify/" author = "Eli Williamson" date = "2016-09-21" [[article]] title = "Building our site: From Django & WordPress to a static generator (Part I)" url = "https://tryolabs.com/blog/2016/09/20/building-our-site-django-wordpress-to-static-part-i/" author = "Alan Descoins" date = "2016-09-20" [[article]] title = "Webseitenmaschine - Statische Websites mit Hugo erzeugen (German, $)" url = "http://www.heise.de/ct/ausgabe/2016-12-Statische-Websites-mit-Hugo-erzeugen-3211704.html" author = "Christian Helmbold" date = "2016-05-27" [[article]] title = "Cómo hacer sitios web estáticos con Hugo y Go - Platzi (Video tutorial)" url = "https://www.youtube.com/watch?v=qaXXpdiCHXE" author = "Verónica López" date = "2016-04-06" [[article]] title = "CDNOverview: A CDN comparison site made with Hugo" url = "https://www.cloakfusion.com/cdnoverview-cdn-comparison-site-made-hugo/" author = "Thijs de Zoete" date = "2016-02-23" [[article]] title = "Hugo: A Modern Website Engine That Just Works" url = "https://github.com/shekhargulati/52-technologies-in-2016/blob/master/07-hugo/README.md" author = "Shekhar Gulati" date = "2016-02-14" [[article]] title = "Minify Hugo Generated HTML" url = "http://ratson.name/blog/minify-hugo-generated-html/" author = "Ratson" date = "2016-02-02" [[article]] title = "HugoのデプロイをWerckerからCircle CIに変更した - log" url = "http://log.deprode.net/logs/2016-01-17/" author = "Deprode" date = "2016-01-17" [[article]] title = "Static site generators: el futuro de las webs estáticas
        (Hugo, Jekyll, Flask y otros)" url = "http://sitelabs.es/static-site-generators-futuro-las-webs-estaticas/" author = "Eneko Sarasola" date = "2016-01-09" [[article]] title = "Writing a Lambda Function for Hugo" url = "https://blog.jolexa.net/post/writing-a-lambda-function-for-hugo/" author = "Jeremy Olexa" date = "2016-01-01" [[article]] title = "Ein Blog mit Hugo erstellen - Tutorial (Deutsch/German)" url = "http://privat.albicker.org/tags/hugo.html" author = "Bernhard Albicker" date = "2015-12-30" [[article]] title = "How to host Hugo static website generator on AWS Lambda" url = "http://bezdelev.com/post/hugo-aws-lambda-static-website/" author = "Ilya Bezdelev" date = "2015-12-15" [[article]] title = "Migrating from Pelican to Hugo" url = "http://www.softinio.com/post/migrating-from-pelican-to-hugo/" author = "Salar Rahmanian" date = "2015-11-29" [[article]] title = "Static Website Generators Reviewed: Jekyll, Middleman, Roots, Hugo" url = "http://www.smashingmagazine.com/2015/11/static-website-generators-jekyll-middleman-roots-hugo-review/" author = "Mathias Biilmann Christensen" date = "2015-11-16" [[article]] title = "How To Deploy a Hugo Site to Production with Git Hooks on Ubuntu 14.04" url = "https://www.digitalocean.com/community/tutorials/how-to-deploy-a-hugo-site-to-production-with-git-hooks-on-ubuntu-14-04" author = "Justin Ellingwood" date = "2015-11-12" [[article]] title = "How To Install and Use Hugo, a Static Site Generator, on Ubuntu 14.04" url = "https://www.digitalocean.com/community/tutorials/how-to-install-and-use-hugo-a-static-site-generator-on-ubuntu-14-04" author = "Justin Ellingwood" date = "2015-11-09" [[article]] title = "Switching from Wordpress to Hugo" url = "http://justinfx.com/2015/11/08/switching-from-wordpress-to-hugo/" author = "Justin Israel" date = "2015-11-08" [[article]] title = "Hands-on Experience with Hugo as a Static Site Generator" url = "http://usersnap.com/blog/hands-on-experience-with-hugo-static-site-generator/" author = "Thomas Peham" date = "2015-10-15" [[article]] title = "Statische Webseites mit Hugo erstellen/Vortrag mit Foliensatz (deutsch)" url = "http://sfd.koelnerlinuxtreffen.de/2015/HaraldWeidner/" author = "Harald Weidner" date = "2015-09-19" [[article]] title = "Moving from WordPress to Hugo" url = "http://abhipandey.com/2015/09/moving-to-hugo/" author = "Abhishek Pandey" date = "2015-09-15" [[article]] title = "通过webhook将Hugo自动部署至GitHub Pages和GitCafe Pages (Automated deployment)" url = "http://blog.coderzh.com/2015/09/13/use-webhook-automated-deploy-hugo/" author = "CoderZh" date = "2015-09-13" [[article]] title = "使用hugo搭建个人博客站点 (Using Hugo to build a personal blog site)" url = "http://blog.coderzh.com/2015/08/29/hugo/" author = "CoderZh" date = "2015-08-29" [[article]] title = "Good-Bye Wordpress, Hello Hugo! (German)" url = "http://blog.arminhanisch.de/2015/08/blog-migration-zu-hugo/" author = "Armin Hanisch" date = "2015-08-18" [[article]] title = "Générer votre site web statique avec Hugo (Generate your static site with Hugo)" url = "http://www.linux-pratique.com/?p=191" author = "Benoît Benedetti" date = "2015-06-26" [[article]] title = "Hugo向けの新しいテーマを作った (I created a new theme for Hugo)" url = "https://yet.unresolved.xyz/blog/2016/10/03/how-to-make-of-hugo-theme/" author = "Daisuke Tsuji" date = "2015-06-20" [[article]] title = "Hugo - Gerando um site com conteúdo estático. (Portuguese Brazil)" url = "http://blog.ffrizzo.com/posts/hugo/" author = "Fabiano Frizzo" date = "2015-06-02" [[article]] title = "An Introduction to Static Site Generators" url = "http://davidwalsh.name/introduction-static-site-generators" author = "Eduardo Bouças" date = "2015-05-20" [[article]] title = "Hugo Still Rules" url = "http://cheekycoder.com/2015/05/hugo-still-rules/" author = "Cheeky Coder" date = "2015-05-18" [[article]] title = "hugo - Static Site Generator" url = "http://gscacco.github.io/post/hugo/" author = "G Scaccoio" date = "2015-05-04" [[article]] title = "WindowsでHugoを使う" url = "http://ureta.net/2015/05/hugo-on-windows/" author = "うれ太郎" date = "2015-05-01" [[article]] title = "Hugoのshortcodesを用いてサイトにスライドなどを埋め込む" url = "http://blog.yucchiy.com/2015/04/29/hugo-shortcode/" author = "Yucchiy" date = "2015-04-29" [[article]] title = "HugoとCircleCIでGitHub PagesにBlogを公開してみたら超簡単だった" url = "http://hori-ryota.github.io/blog/create-blog-with-hugo-and-circleci/" author = "Hori Ryota" date = "2015-04-17" [[article]] title = "10 Best Static Site Generators" url = "http://beebom.com/2015/04/best-static-site-generators" author = "Aniruddha Mysore" date = "2015-04-06" [[article]] title = "Goodbye WordPress; Hello Hugo" url = "http://willwarren.com/2015/04/05/goodbye-wordpress-hello-hugo/" author = "Will Warren" date = "2015-04-05" [[article]] title = "Static Websites with Hugo on Google Cloud Storage" url = "http://www.moxie.io/post/static-websites-with-hugo-on-google-cloud-storage/" author = "Moxie Input/Output" date = "2015-04-02" [[article]] title = "De nuevo iniciando un blog" url = "https://alvarolizama.net/" author = "Alvaro Lizama" date = "2015-03-29" [[article]] title = "We moved our blog from Posthaven to Hugo after only three posts. Why?" url = "http://blog.hypriot.com/post/moved-from-posthaven-to-hugo/" author = "Hypriot" date = "2015-03-27" [[article]] title = "Top Static Site Generators in 2015" url = "http://superdevresources.com/static-site-generators-2015/" author = "Kanishk Kunal" date = "2015-03-12" [[article]] title = "Moving to Hugo" url = "http://abiosoft.com/moving-to-hugo/" author = "Abiola Ibrahim" date = "2015-03-08" [[article]] title = "Migrating a blog (yes, this one!) from Wordpress to Hugo" url = "http://justindunham.net/migrating-from-wordpress-to-hugo/" author = "Justin Dunham" date = "2015-02-13" [[article]] title = "blogをoctopressからHugoに乗り換えたメモ" url = "http://blog.jigyakkuma.org/2015/02/11/hugo/" author = "jigyakkuma" date = "2015-02-11" [[article]] title = "Hugoでブログをつくった" url = "http://porgy13.github.io/post/new-hugo-blog/" author = "porgy13" date = "2015-02-07" [[article]] title = "Hugoにブログを移行した" url = "http://keichi.net/post/first/" author = "Keichi Takahashi" date = "2015-02-04" [[article]] title = "Hugo静态网站生成器中文教程" url = "http://nanshu.wang/post/2015-01-31/" author = "Nanshu Wang" date = "2015-01-31" [[article]] title = "Hugo + Github Pages + Wercker CI = ¥0(無料)
        でコマンド 1 発(自動化)でサイト
        ・ブログを公開・運営・分析・収益化
        " url = "http://qiita.com/yoheimuta/items/8a619cac356bed89a4c9" author = "Yohei Yoshimuta" date = "2015-01-31" [[article]] title = "Running Hugo websites on anynines" url = "http://blog.anynines.com/running-hugo-websites-on-anynines/" author = "Julian Weber" date = "2015-01-30" [[article]] title = "MiddlemanからHugoへ移行した" url = "http://re-dzine.net/2015/01/hugo/" author = "Haruki Konishi" date = "2015-01-21" [[article]] title = "WordPress から Hugo に乗り換えました" url = "http://rakuishi.com/archives/wordpress-to-hugo/" author = "rakuishi" date = "2015-01-20" [[article]] title = "HUGOを使ってサイトを立ち上げる方法" url = "http://qiita.com/syui/items/869538099551f24acbbf" author = "Syui" date = "2015-01-17" [[article]] title = "Jekyllが許されるのは小学生までだよね" url = "http://t32k.me/mol/log/hugo/" author = "Ishimoto Koji" date = "2015-01-16" [[article]] title = "Getting started with Hugo" url = "http://anthonyfok.org/post/getting-started-with-hugo/" author = "Anthony Fok" date = "2015-01-12" [[article]] title = "把这个博客静态化了 (Migrate to Hugo)" url = "http://lich-eng.com/2015/01/03/migrate-to-hugo/" author = "Li Cheng" date = "2015-01-03" [[article]] title = "Porting my blog with Hugo" url = "http://blog.srackham.com/posts/porting-my-blog-with-hugo/" author = "Stuart Rackham" date = "2014-12-30" [[article]] title = "Hugoを使ってみたときのメモ" url = "http://machortz.github.io/posts/usinghugo/" author = "Machortz" date = "2014-12-29" [[article]] title = "OctopressからHugoへ移行した" url = "http://deeeet.com/writing/2014/12/25/hugo/" author = "Taichi Nakashima" date = "2014-12-25" [[article]] title = "Migrating to Hugo From Octopress" url = "http://nathanleclaire.com/blog/2014/12/22/migrating-to-hugo-from-octopress/" author = "Nathan LeClaire" date = "2014-12-22" [[article]] title = "Dynamic Pages with GoHugo.io" url = "http://cyrillschumacher.com/2014/12/21/dynamic-pages-with-gohugo.io/" author = "Cyrill Schumacher" date = "2014-12-21" [[article]] title = "6 Static Blog Generators That Aren’t Jekyll" url = "http://www.sitepoint.com/6-static-blog-generators-arent-jekyll/" author = "David Turnbull" date = "2014-12-08" [[article]] title = "Travel Blogging Setup" url = "http://www.stou.dk/2014/11/travel-blogging-setup/" author = "Rasmus Stougaard" date = "2014-11-23" [[article]] title = "Hosting A Hugo Website Behind Nginx" url = "http://www.bigbeeconsultants.co.uk/blog/hosting-hugo-website-behind-nginx" author = "Rick Beton" date = "2014-11-20" [[article]] title = "使用Hugo搭建免费个人Blog (How to use Hugo)" url = "http://ulricqin.com/post/how-to-use-hugo/" author = "Ulric Qin 秦晓辉" date = "2014-11-11" [[article]] title = "Built in Speed and Built for Speed by Hugo" url = "http://cheekycoder.com/2014/10/built-for-speed-by-hugo/" author = "Cheeky Coder" date = "2014-10-30" [[article]] title = "Hugo para crear sitios web estáticos" url = "http://www.webbizarro.com/noticias/1076/hugo-para-crear-sitios-web-estaticos/" author = "Web Bizarro" date = "2014-08-19" [[article]] title = "Going with Hugo" url = "http://www.markuseliasson.se/article/going-with-hugo/" author = "Markus Eliasson" date = "2014-08-18" [[article]] title = "Benchmarking Jekyll, Hugo and Wintersmith" url = "http://fredrikloch.me/post/2014-08-12-Jekyll-and-its-alternatives-from-a-site-generation-point-of-view/" author = "Fredrik Loch" date = "2014-08-12" [[article]] title = "Goodbye Octopress, Hello Hugo!" url = "http://andreimihu.com/blog/2014/08/11/goodbye-octopress-hello-hugo/" author = "Andrei Mihu" date = "2014-08-11" [[article]] title = "Beautiful sites for Open Source Projects" url = "http://beautifulopen.com/2014/08/09/hugo/" author = "Beautiful Open" date = "2014-08-09" [[article]] title = "Hugo: Beyond the Defaults" url = "http://npf.io/2014/08/hugo-beyond-the-defaults/" author = "Nate Finch" date = "2014-08-08" [[article]] title = "First Impressions of Hugo" url = "https://peteraba.com/blog/first-impressions-of-hugo/" author = "Peter Aba" date = "2014-06-06" [[article]] title = "New Site Workflow" url = "http://vurt.co.uk/post/new_website/" author = "Giles Paterson" date = "2014-08-05" [[article]] title = "How I Learned to Stop Worrying and Love the (Static) Web" url = "http://cognition.ca/post/about-hugo/" author = "Joshua McKenty" date = "2014-08-04" [[article]] title = "Hugo - Static Site Generator" url = "http://kenwoo.io/blog/hugo---static-site-generator/" author = "Kenny Woo" date = "2014-08-03" [[article]] title = "Hugo Is Freakin' Awesome" url = "http://npf.io/2014/08/hugo-is-awesome/" author = "Nate Finch" date = "2014-08-01" [[article]] title = "再次搬家 (Move from WordPress to Hugo)" url = "http://www.chingli.com/misc/move-from-wordpress-to-hugo/" author = "青砾 (chingli)" date = "2014-07-12" [[article]] title = "Embedding Gists in Hugo" url = "http://danmux.com/posts/embedded_gists/" author = "Dan Mull" date = "2014-07-05" [[article]] title = "An Introduction To Hugo" url = "http://www.cirrushosting.com/web-hosting-blog/an-introduction-to-hugo/" author = "Dan Silber" date = "2014-07-01" [[article]] title = "Moving to Hugo" url = "http://danmux.com/posts/hugo_based_blog/" author = "Dan Mull" date = "2014-05-29" [[article]] title = "开源之静态站点生成器排行榜
        (Leaderboard of open-source static website generators)" url = "http://code.csdn.net/news/2819909" author = "CSDN.net" date = "2014-05-23" [[article]] title = "Finally, a satisfying and effective blog setup" url = "http://michaelwhatcott.com/now-powered-by-hugo/" author = "Michael Whatcott" date = "2014-05-20" [[article]] title = "Hugo from scratch" url = "http://zackofalltrades.com/notes/2014/05/hugo-from-scratch/" author = "Zack Williams" date = "2014-05-18" [[article]] title = "Why I switched away from Jekyll" url = "http://www.jakejanuzelli.com/why-I-switched-away-from-jekyll/" author = "Jake Januzelli" date = "2014-05-10" [[article]] title = "Welcome our new blog" url = "http://blog.ninya.io/posts/welcome-our-new-blog/" author = "Ninya.io" date = "2014-04-11" [[article]] title = "Mission Not Accomplished" url = "http://johnsto.co.uk/blog/mission-not-accomplished/" author = "Dave Johnston" date = "2014-04-03" [[article]] title = "Hugo - A Static Site Builder in Go" url = "http://deepfriedcode.com/post/hugo/" author = "Deep Fried Code" date = "2014-03-30" [[article]] title = "Adventures in Angular Podcast" url = "http://devchat.tv/adventures-in-angular/003-aia-gdes" author = "Matias Niemela" date = "2014-03-28" [[article]] title = "Hugo" url = "http://bra.am/post/hugo/" author = "bra.am" date = "2014-03-23" [[article]] title = "Converting Blogger To Markdown" url = "http://trishagee.github.io/project/atom-to-hugo/" author = "Trisha Gee" date = "2014-03-20" [[article]] title = "Moving to Hugo Static Web Pages" url = "http://tepid.org/tech/hugo-web/" author = "Tobias Weingartner" date = "2014-03-16" [[article]] title = "New Blog Engine: Hugo" url = "https://blog.afoolishmanifesto.com/posts/hugo/" author = "fREW Schmidt" date = "2014-03-15" [[article]] title = "Hugo + gulp.js = Huggle" url = "http://ktmud.github.io/huggle/en/intro/)" author = "Jesse Yang 杨建超" date = "2014-03-08" [[article]] title = "Powered by Hugo" url = "http://kieranhealy.org/blog/archives/2014/02/24/powered-by-hugo/" author = "Kieran Healy" date = "2014-02-24" [[article]] title = "静的サイトを素早く構築するために
        GoLangで作られたジェネレータHugo
        " url = "http://hamasyou.com/blog/2014/02/21/hugo/" author = "
        Shogo Hamada
        濱田章吾
        " date = "2014-02-21" [[article]] title = "Latest Roundup of Useful Tools For Developers" url = "http://codegeekz.com/latest-roundup-of-useful-tools-for-developers/" author = "CodeGeekz" date = "2014-02-13" [[article]] title = "Hugo: Static Site Generator written in Go" url = "http://www.braveterry.com/2014/02/06/hugo-static-site-generator-written-in-go/" author = "Brave Terry" date = "2014-02-06" [[article]] title = "10 Useful HTML5 Tools for Web Designers and Developers" url = "http://designdizzy.com/10-useful-html5-tools-for-web-designers-and-developers/" author = "Design Dizzy" date = "2014-02-04" [[article]] title = "Hugo – Fast, Flexible Static Site Generator" url = "http://cube3x.com/hugo-fast-flexible-static-site-generator/" author = "Joby Joseph" date = "2014-01-18" [[article]] title = "Hugo: A new way to build static website" url = "http://www.w3update.com/opensource/hugo-a-new-way-to-build-static-website.html" author = "w3update" date = "2014-01-17" [[article]] title = "Xaprb now uses Hugo" url = "http://xaprb.com/blog/2014/01/15/using-hugo/" author = "Baron Schwartz" date = "2014-01-15" [[article]] title = "New jQuery Plugins And Resources That Web Designers Need" url = "http://www.designyourway.net/blog/resources/new-jquery-plugins-and-resources-that-web-designers-need/" author = "Design Your Way" date = "2014-01-01" [[article]] title = "On Blog Construction" url = "http://alexla.sh/post/on-blog-construction/" author = "Alexander Lash" date = "2013-12-27" [[article]] title = "Hugo" url = "http://onethingwell.org/post/69070926608/hugo" author = "One Thing Well" date = "2013-12-05" [[article]] title = "In Praise Of Hugo" url = "http://sound-guru.com/blog/post/hello-world/" author = "sound-guru.com" date = "2013-10-19" [[article]] title = "Hosting a blog on S3 and Cloudfront" url = "http://www.danesparza.net/2013/07/hosting-a-blog-on-s3-and-cloudfront/" author = "Dan Esparza" date = "2013-07-24" gohugoio-hugo-6abdaca/docs/data/docs.yaml000066400000000000000000003113611507671574500206200ustar00rootroot00000000000000chroma: lexers: - Aliases: - abap Name: ABAP - Aliases: - abnf Name: ABNF - Aliases: - as - actionscript Name: ActionScript - Aliases: - as3 - actionscript3 Name: ActionScript 3 - Aliases: - ada - ada95 - ada2005 Name: Ada - Aliases: - agda Name: Agda - Aliases: - al Name: AL - Aliases: - alloy Name: Alloy - Aliases: - ng2 Name: Angular2 - Aliases: - antlr Name: ANTLR - Aliases: - apacheconf - aconf - apache Name: ApacheConf - Aliases: - apl Name: APL - Aliases: - applescript Name: AppleScript - Aliases: - aql Name: ArangoDB AQL - Aliases: - arduino Name: Arduino - Aliases: - armasm Name: ArmAsm - Aliases: - atl Name: ATL - Aliases: - autohotkey - ahk Name: AutoHotkey - Aliases: - autoit Name: AutoIt - Aliases: - awk - gawk - mawk - nawk Name: Awk - Aliases: - ballerina Name: Ballerina - Aliases: - bash - sh - ksh - zsh - shell Name: Bash - Aliases: - bash-session - console - shell-session Name: Bash Session - Aliases: - bat - batch - dosbatch - winbatch Name: Batchfile - Aliases: - beef Name: Beef - Aliases: - bib - bibtex Name: BibTeX - Aliases: - bicep Name: Bicep - Aliases: - blitzbasic - b3d - bplus Name: BlitzBasic - Aliases: - bnf Name: BNF - Aliases: - bqn Name: BQN - Aliases: - brainfuck - bf Name: Brainfuck - Aliases: - c Name: C - Aliases: - csharp - c# Name: C# - Aliases: - cpp - c++ Name: C++ - Aliases: - caddyfile - caddy Name: Caddyfile - Aliases: - caddyfile-directives - caddyfile-d - caddy-d Name: Caddyfile Directives - Aliases: - capnp Name: Cap'n Proto - Aliases: - cassandra - cql Name: Cassandra CQL - Aliases: - ceylon Name: Ceylon - Aliases: - cfengine3 - cf3 Name: CFEngine3 - Aliases: - cfs Name: cfstatement - Aliases: - chai - chaiscript Name: ChaiScript - Aliases: - chapel - chpl Name: Chapel - Aliases: - cheetah - spitfire Name: Cheetah - Aliases: - clojure - clj - edn Name: Clojure - Aliases: - cmake Name: CMake - Aliases: - cobol Name: COBOL - Aliases: - coffee-script - coffeescript - coffee Name: CoffeeScript - Aliases: - common-lisp - cl - lisp Name: Common Lisp - Aliases: - coq Name: Coq - Aliases: - core Name: Core - Aliases: - cr - crystal Name: Crystal - Aliases: - css Name: CSS - Aliases: - csv Name: CSV - Aliases: - cue Name: CUE - Aliases: - cython - pyx - pyrex Name: Cython - Aliases: - d Name: D - Aliases: - dart Name: Dart - Aliases: - dax Name: Dax - Aliases: - desktop - desktop_entry Name: Desktop file - Aliases: - diff - udiff Name: Diff - Aliases: - django - jinja Name: Django/Jinja - Aliases: - zone - bind Name: dns - Aliases: - docker - dockerfile - containerfile Name: Docker - Aliases: - dtd Name: DTD - Aliases: - dylan Name: Dylan - Aliases: - ebnf Name: EBNF - Aliases: - elixir - ex - exs Name: Elixir - Aliases: - elm Name: Elm - Aliases: - emacs - elisp - emacs-lisp Name: EmacsLisp - Aliases: - erlang Name: Erlang - Aliases: - factor Name: Factor - Aliases: - fennel - fnl Name: Fennel - Aliases: - fish - fishshell Name: Fish - Aliases: - forth Name: Forth - Aliases: - fortran - f90 Name: Fortran - Aliases: - fortranfixed Name: FortranFixed - Aliases: - fsharp Name: FSharp - Aliases: - gas - asm Name: GAS - Aliases: - gdscript - gd Name: GDScript - Aliases: - gdscript3 - gd3 Name: GDScript3 - Aliases: - gemtext - gmi - gmni - gemini Name: Gemtext - Aliases: - genshi - kid - xml+genshi - xml+kid Name: Genshi - Aliases: - html+genshi - html+kid Name: Genshi HTML - Aliases: - genshitext Name: Genshi Text - Aliases: - cucumber - Cucumber - gherkin - Gherkin Name: Gherkin - Aliases: - gleam Name: Gleam - Aliases: - glsl Name: GLSL - Aliases: - gnuplot Name: Gnuplot - Aliases: - go - golang Name: Go - Aliases: - go-html-template Name: Go HTML Template - Aliases: - go-template Name: Go Template - Aliases: - go-text-template Name: Go Text Template - Aliases: - graphql - graphqls - gql Name: GraphQL - Aliases: - groff - nroff - man Name: Groff - Aliases: - groovy Name: Groovy - Aliases: - handlebars - hbs Name: Handlebars - Aliases: - hare Name: Hare - Aliases: - haskell - hs Name: Haskell - Aliases: - hx - haxe - hxsl Name: Haxe - Aliases: - hcl Name: HCL - Aliases: - hexdump Name: Hexdump - Aliases: - hlb Name: HLB - Aliases: - hlsl Name: HLSL - Aliases: - holyc Name: HolyC - Aliases: - html Name: HTML - Aliases: - http Name: HTTP - Aliases: - hylang Name: Hy - Aliases: - idris - idr Name: Idris - Aliases: - igor - igorpro Name: Igor - Aliases: - ini - cfg - dosini Name: INI - Aliases: - io Name: Io - Aliases: - iscdhcpd Name: ISCdhcpd - Aliases: - j Name: J - Aliases: - janet Name: Janet - Aliases: - java Name: Java - Aliases: - js - javascript Name: JavaScript - Aliases: - json Name: JSON - Aliases: - jsonata Name: JSONata - Aliases: - jsonnet Name: Jsonnet - Aliases: - julia - jl Name: Julia - Aliases: - jungle Name: Jungle - Aliases: - kotlin Name: Kotlin - Aliases: - lean4 - lean Name: Lean4 - Aliases: - lighty - lighttpd Name: Lighttpd configuration file - Aliases: - llvm Name: LLVM - Aliases: null Name: lox - Aliases: - lua - luau Name: Lua - Aliases: - make - makefile - mf - bsdmake Name: Makefile - Aliases: - mako Name: Mako - Aliases: - md - mkd Name: markdown - Aliases: - mason Name: Mason - Aliases: - materialize - mzsql Name: Materialize SQL dialect - Aliases: - mathematica - mma - nb Name: Mathematica - Aliases: - matlab Name: Matlab - Aliases: - mcfunction - mcf Name: MCFunction - Aliases: - meson - meson.build Name: Meson - Aliases: - metal Name: Metal - Aliases: - minizinc - MZN - mzn Name: MiniZinc - Aliases: - mlir Name: MLIR - Aliases: - modula2 - m2 Name: Modula-2 - Aliases: - mojo - "\U0001F525" Name: Mojo - Aliases: - monkeyc Name: MonkeyC - Aliases: - moonscript - moon Name: MoonScript - Aliases: - morrowind - mwscript Name: MorrowindScript - Aliases: - myghty Name: Myghty - Aliases: - mysql - mariadb Name: MySQL - Aliases: - nasm Name: NASM - Aliases: - natural Name: Natural - Aliases: - ndisasm Name: NDISASM - Aliases: - newspeak Name: Newspeak - Aliases: - nginx Name: Nginx configuration file - Aliases: - nim - nimrod Name: Nim - Aliases: - nixos - nix Name: Nix - Aliases: - nsis - nsi - nsh Name: NSIS - Aliases: - nu Name: Nu - Aliases: - objective-c - objectivec - obj-c - objc Name: Objective-C - Aliases: - objectpascal Name: ObjectPascal - Aliases: - ocaml Name: OCaml - Aliases: - octave Name: Octave - Aliases: - odin Name: Odin - Aliases: - ones - onesenterprise - 1S - 1S:Enterprise Name: OnesEnterprise - Aliases: - openedge - abl - progress - openedgeabl Name: OpenEdge ABL - Aliases: - openscad Name: OpenSCAD - Aliases: - org - orgmode Name: Org Mode - Aliases: - pacmanconf Name: PacmanConf - Aliases: - perl - pl Name: Perl - Aliases: - php - php3 - php4 - php5 Name: PHP - Aliases: - phtml Name: PHTML - Aliases: - pig Name: Pig - Aliases: - pkgconfig Name: PkgConfig - Aliases: - plpgsql Name: PL/pgSQL - Aliases: - text - plain - no-highlight Name: plaintext - Aliases: - plutus-core - plc Name: Plutus Core - Aliases: - pony Name: Pony - Aliases: - postgresql - postgres Name: PostgreSQL SQL dialect - Aliases: - postscript - postscr Name: PostScript - Aliases: - pov Name: POVRay - Aliases: - powerquery - pq Name: PowerQuery - Aliases: - powershell - posh - ps1 - psm1 - psd1 - pwsh Name: PowerShell - Aliases: - prolog Name: Prolog - Aliases: - promela Name: Promela - Aliases: - promql Name: PromQL - Aliases: - java-properties Name: properties - Aliases: - protobuf - proto Name: Protocol Buffer - Aliases: - prql Name: PRQL - Aliases: - psl Name: PSL - Aliases: - puppet Name: Puppet - Aliases: - python - py - sage - python3 - py3 Name: Python - Aliases: - python2 - py2 Name: Python 2 - Aliases: - qbasic - basic Name: QBasic - Aliases: - qml - qbs Name: QML - Aliases: - splus - s - r Name: R - Aliases: - racket - rkt Name: Racket - Aliases: - ragel Name: Ragel - Aliases: - perl6 - pl6 - raku Name: Raku - Aliases: - jsx - react Name: react - Aliases: - reason - reasonml Name: ReasonML - Aliases: - registry Name: reg - Aliases: - rego Name: Rego - Aliases: - rst - rest - restructuredtext Name: reStructuredText - Aliases: - rexx - arexx Name: Rexx - Aliases: - SQLRPGLE - RPG IV Name: RPGLE - Aliases: - spec Name: RPMSpec - Aliases: - rb - ruby - duby Name: Ruby - Aliases: - rust - rs Name: Rust - Aliases: - sas Name: SAS - Aliases: - sass Name: Sass - Aliases: - scala Name: Scala - Aliases: - scheme - scm Name: Scheme - Aliases: - scilab Name: Scilab - Aliases: - scss Name: SCSS - Aliases: - sed - gsed - ssed Name: Sed - Aliases: - sieve Name: Sieve - Aliases: - smali Name: Smali - Aliases: - smalltalk - squeak - st Name: Smalltalk - Aliases: - smarty Name: Smarty - Aliases: - snbt Name: SNBT - Aliases: - snobol Name: Snobol - Aliases: - sol - solidity Name: Solidity - Aliases: - sp Name: SourcePawn - Aliases: - sparql Name: SPARQL - Aliases: - sql Name: SQL - Aliases: - squidconf - squid.conf - squid Name: SquidConf - Aliases: - sml Name: Standard ML - Aliases: null Name: stas - Aliases: - stylus Name: Stylus - Aliases: - svelte Name: Svelte - Aliases: - swift Name: Swift - Aliases: - systemd Name: SYSTEMD - Aliases: - systemverilog - sv Name: systemverilog - Aliases: - tablegen Name: TableGen - Aliases: - tal - uxntal Name: Tal - Aliases: - tasm Name: TASM - Aliases: - tcl Name: Tcl - Aliases: - tcsh - csh Name: Tcsh - Aliases: - termcap Name: Termcap - Aliases: - terminfo Name: Terminfo - Aliases: - terraform - tf - hcl Name: Terraform - Aliases: - tex - latex Name: TeX - Aliases: - thrift Name: Thrift - Aliases: - toml Name: TOML - Aliases: - tradingview - tv Name: TradingView - Aliases: - tsql - t-sql Name: Transact-SQL - Aliases: - turing Name: Turing - Aliases: - turtle Name: Turtle - Aliases: - twig Name: Twig - Aliases: - ts - tsx - typescript Name: TypeScript - Aliases: - typoscript Name: TypoScript - Aliases: - typoscriptcssdata Name: TypoScriptCssData - Aliases: - typoscripthtmldata Name: TypoScriptHtmlData - Aliases: - typst Name: Typst - Aliases: null Name: ucode - Aliases: - v - vlang Name: V - Aliases: - vsh - vshell Name: V shell - Aliases: - vala - vapi Name: Vala - Aliases: - vb.net - vbnet Name: VB.net - Aliases: - verilog - v Name: verilog - Aliases: - vhdl Name: VHDL - Aliases: - vhs - tape - cassette Name: VHS - Aliases: - vim Name: VimL - Aliases: - vue - vuejs Name: vue - Aliases: null Name: WDTE - Aliases: - wgsl Name: WebGPU Shading Language - Aliases: - vtt Name: WebVTT - Aliases: - whiley Name: Whiley - Aliases: - xml Name: XML - Aliases: - xorg.conf Name: Xorg - Aliases: - yaml Name: YAML - Aliases: - yang Name: YANG - Aliases: - z80 Name: Z80 Assembly - Aliases: - zed Name: Zed - Aliases: - zig Name: Zig styles: - RPGLE - abap - algol - algol_nu - arduino - autumn - average - base16-snazzy - borland - bw - catppuccin-frappe - catppuccin-latte - catppuccin-macchiato - catppuccin-mocha - colorful - doom-one - doom-one2 - dracula - emacs - evergarden - friendly - fruity - github - github-dark - gruvbox - gruvbox-light - hr_high_contrast - hrdark - igor - lovelace - manni - modus-operandi - modus-vivendi - monokai - monokailight - murphy - native - nord - nordic - onedark - onesenterprise - paraiso-dark - paraiso-light - pastie - perldoc - pygments - rainbow_dash - rose-pine - rose-pine-dawn - rose-pine-moon - rrt - solarized-dark - solarized-dark256 - solarized-light - swapoff - tango - tokyonight-day - tokyonight-moon - tokyonight-night - tokyonight-storm - trac - vim - vs - vulcan - witchhazel - xcode - xcode-dark config: HTTPCache: cache: for: excludes: - '**' includes: null polls: - disable: true for: excludes: null includes: - '**' high: 0s low: 0s archeTypeDir: archetypes assetDir: assets author: null baseURL: "" build: buildStats: disableClasses: false disableIDs: false disableTags: false enable: false cacheBusters: - source: (postcss|tailwind)\.config\.js target: (css|styles|scss|sass) noJSConfigInAssets: false useResourceCacheWhen: fallback buildDrafts: false buildExpired: false buildFuture: false cacheDir: "" caches: assets: dir: :resourceDir/_gen maxAge: -1 getcsv: dir: :cacheDir/:project maxAge: -1 getjson: dir: :cacheDir/:project maxAge: -1 getresource: dir: :cacheDir/:project maxAge: -1 images: dir: :resourceDir/_gen maxAge: -1 misc: dir: :cacheDir/:project maxAge: -1 modules: dir: :cacheDir/modules maxAge: -1 canonifyURLs: false capitalizeListTitles: true cascade: [] cleanDestinationDir: false contentDir: content contentTypes: text/asciidoc: {} text/html: {} text/markdown: {} text/org: {} text/pandoc: {} text/rst: {} copyright: "" dataDir: data defaultContentLanguage: en defaultContentLanguageInSubdir: false defaultOutputFormat: html deployment: confirm: false dryRun: false force: false invalidateCDN: true matchers: null maxDeletes: 256 order: null target: "" targets: null workers: 10 disableAliases: false disableDefaultLanguageRedirect: false disableHugoGeneratorInject: false disableKinds: null disableLanguages: null disableLiveReload: false disablePathToLower: false enableEmoji: false enableGitInfo: false enableMissingTranslationPlaceholders: false enableRobotsTXT: false environment: production frontmatter: date: - date - publishdate - pubdate - published - lastmod - modified expiryDate: - expirydate - unpublishdate lastmod: - :git - lastmod - modified - date - publishdate - pubdate - published publishDate: - publishdate - pubdate - published - date hasCJKLanguage: false i18nDir: i18n ignoreCache: false ignoreFiles: null ignoreLogs: null ignoreVendorPaths: "" imaging: bgColor: '#ffffff' hint: photo quality: 75 resampleFilter: box languageCode: "" languages: en: disabled: false languageCode: "" languageDirection: "" languageName: "" title: "" weight: 0 layoutDir: layouts mainSections: null markup: asciidocExt: attributes: {} backend: html5 extensions: [] failureLevel: fatal noHeaderOrFooter: true preserveTOC: false safeMode: unsafe sectionNumbers: false trace: false verbose: false workingFolderCurrent: false defaultMarkdownHandler: goldmark goldmark: duplicateResourceFiles: false extensions: cjk: eastAsianLineBreaks: false eastAsianLineBreaksStyle: simple enable: false escapedSpace: false definitionList: true extras: delete: enable: false insert: enable: false mark: enable: false subscript: enable: false superscript: enable: false footnote: backlinkHTML: '↩︎' enable: true enableAutoIDPrefix: false linkify: true linkifyProtocol: https passthrough: delimiters: block: [] inline: [] enable: false strikethrough: true table: true taskList: true typographer: apostrophe: '’' disable: false ellipsis: '…' emDash: '—' enDash: '–' leftAngleQuote: '«' leftDoubleQuote: '“' leftSingleQuote: '‘' rightAngleQuote: '»' rightDoubleQuote: '”' rightSingleQuote: '’' parser: attribute: block: false title: true autoDefinitionTermID: false autoHeadingID: true autoIDType: github wrapStandAloneImageWithinParagraph: true renderHooks: image: enableDefault: false useEmbedded: auto link: enableDefault: false useEmbedded: auto renderer: hardWraps: false unsafe: false xhtml: false highlight: anchorLineNos: false codeFences: true guessSyntax: false hl_Lines: "" hl_inline: false lineAnchors: "" lineNoStart: 1 lineNos: false lineNumbersInTable: true noClasses: true style: monokai tabWidth: 4 wrapperClass: highlight tableOfContents: endLevel: 3 ordered: false startLevel: 2 mediaTypes: application/json: delimiter: . suffixes: - json application/manifest+json: delimiter: . suffixes: - webmanifest application/octet-stream: delimiter: . application/pdf: delimiter: . suffixes: - pdf application/rss+xml: delimiter: . suffixes: - xml - rss application/toml: delimiter: . suffixes: - toml application/wasm: delimiter: . suffixes: - wasm application/xml: delimiter: . suffixes: - xml application/yaml: delimiter: . suffixes: - yaml - yml font/otf: delimiter: . suffixes: - otf font/ttf: delimiter: . suffixes: - ttf image/bmp: delimiter: . suffixes: - bmp image/gif: delimiter: . suffixes: - gif image/jpeg: delimiter: . suffixes: - jpg - jpeg - jpe - jif - jfif image/png: delimiter: . suffixes: - png image/svg+xml: delimiter: . suffixes: - svg image/tiff: delimiter: . suffixes: - tif - tiff image/webp: delimiter: . suffixes: - webp text/asciidoc: delimiter: . suffixes: - adoc - asciidoc - ad text/calendar: delimiter: . suffixes: - ics text/css: delimiter: . suffixes: - css text/csv: delimiter: . suffixes: - csv text/html: delimiter: . suffixes: - html - htm text/javascript: delimiter: . suffixes: - js - jsm - mjs text/jsx: delimiter: . suffixes: - jsx text/markdown: delimiter: . suffixes: - md - mdown - markdown text/org: delimiter: . suffixes: - org text/pandoc: delimiter: . suffixes: - pandoc - pdc text/plain: delimiter: . suffixes: - txt text/rst: delimiter: . suffixes: - rst text/tsx: delimiter: . suffixes: - tsx text/typescript: delimiter: . suffixes: - ts text/x-gotmpl: delimiter: . suffixes: - gotmpl text/x-sass: delimiter: . suffixes: - sass text/x-scss: delimiter: . suffixes: - scss video/3gpp: delimiter: . suffixes: - 3gpp - 3gp video/mp4: delimiter: . suffixes: - mp4 video/mpeg: delimiter: . suffixes: - mpg - mpeg video/ogg: delimiter: . suffixes: - ogv video/webm: delimiter: . suffixes: - webm video/x-msvideo: delimiter: . suffixes: - avi menus: {} minify: disableCSS: false disableHTML: false disableJS: false disableJSON: false disableSVG: false disableXML: false minifyOutput: false tdewolff: css: inline: false keepCSS2: false precision: 0 version: 0 html: keepComments: false keepConditionalComments: false keepDefaultAttrVals: true keepDocumentTags: true keepEndTags: true keepQuotes: false keepSpecialComments: true keepWhitespace: false templateDelims: - "" - "" js: keepVarNames: false precision: 0 version: 2022 json: keepNumbers: false precision: 0 svg: inline: false keepComments: false precision: 0 xml: keepWhitespace: false module: auth: "" hugoVersion: extended: false max: "" min: "" imports: null mounts: - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: content target: content - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: data target: data - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: layouts target: layouts - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: i18n target: i18n - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: archetypes target: archetypes - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: assets target: assets - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: static target: static noProxy: none noVendor: "" params: null private: '*.*' proxy: direct replacements: null vendorClosest: false workspace: "off" newContentEditor: "" noBuildLock: false noChmod: false noTimes: false outputFormats: "404": baseName: "" isHTML: true isPlainText: false mediaType: text/html noUgly: false notAlternative: true path: "" permalinkable: true protocol: "" rel: "" root: false ugly: true weight: 0 alias: baseName: "" isHTML: true isPlainText: false mediaType: text/html noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: "" root: false ugly: true weight: 0 amp: baseName: index isHTML: true isPlainText: false mediaType: text/html noUgly: false notAlternative: false path: amp permalinkable: true protocol: "" rel: amphtml root: false ugly: false weight: 0 calendar: baseName: index isHTML: false isPlainText: true mediaType: text/calendar noUgly: false notAlternative: false path: "" permalinkable: false protocol: webcal:// rel: alternate root: false ugly: false weight: 0 css: baseName: styles isHTML: false isPlainText: true mediaType: text/css noUgly: false notAlternative: true path: "" permalinkable: false protocol: "" rel: stylesheet root: false ugly: false weight: 0 csv: baseName: index isHTML: false isPlainText: true mediaType: text/csv noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: false ugly: false weight: 0 gotmpl: baseName: "" isHTML: false isPlainText: true mediaType: text/x-gotmpl noUgly: false notAlternative: true path: "" permalinkable: false protocol: "" rel: "" root: false ugly: false weight: 0 html: baseName: index isHTML: true isPlainText: false mediaType: text/html noUgly: false notAlternative: false path: "" permalinkable: true protocol: "" rel: canonical root: false ugly: false weight: 10 json: baseName: index isHTML: false isPlainText: true mediaType: application/json noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: false ugly: false weight: 0 markdown: baseName: index isHTML: false isPlainText: true mediaType: text/markdown noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: false ugly: false weight: 0 robots: baseName: robots isHTML: false isPlainText: true mediaType: text/plain noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: true ugly: false weight: 0 rss: baseName: index isHTML: false isPlainText: false mediaType: application/rss+xml noUgly: true notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: false ugly: false weight: 0 sitemap: baseName: sitemap isHTML: false isPlainText: false mediaType: application/xml noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: sitemap root: false ugly: true weight: 0 sitemapindex: baseName: sitemap isHTML: false isPlainText: false mediaType: application/xml noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: sitemap root: true ugly: true weight: 0 webappmanifest: baseName: manifest isHTML: false isPlainText: true mediaType: application/manifest+json noUgly: false notAlternative: true path: "" permalinkable: false protocol: "" rel: manifest root: false ugly: false weight: 0 outputs: home: - html - rss page: - html rss: - rss section: - html - rss taxonomy: - html - rss term: - html - rss page: nextPrevInSectionSortOrder: desc nextPrevSortOrder: desc paginate: 0 paginatePath: "" pagination: disableAliases: false pagerSize: 10 path: page panicOnWarning: false params: {} permalinks: page: {} section: {} taxonomy: {} term: {} pluralizeListTitles: true printI18nWarnings: false printPathWarnings: false printUnusedTemplates: false privacy: disqus: disable: false googleAnalytics: disable: false respectDoNotTrack: false instagram: disable: false simple: false twitter: disable: false enableDNT: false simple: false vimeo: disable: false enableDNT: false simple: false x: disable: false enableDNT: false simple: false youTube: disable: false privacyEnhanced: false publishDir: public refLinksErrorLevel: "" refLinksNotFoundURL: "" related: includeNewer: false indices: - applyFilter: false cardinalityThreshold: 0 name: keywords pattern: "" toLower: false type: basic weight: 100 - applyFilter: false cardinalityThreshold: 0 name: date pattern: "" toLower: false type: basic weight: 10 - applyFilter: false cardinalityThreshold: 0 name: tags pattern: "" toLower: false type: basic weight: 80 threshold: 80 toLower: false relativeURLs: false removePathAccents: false renderSegments: null resourceDir: resources sectionPagesMenu: "" security: enableInlineShortcodes: false exec: allow: - ^(dart-)?sass(-embedded)?$ - ^go$ - ^git$ - ^npx$ - ^postcss$ - ^tailwindcss$ osEnv: - (?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE|PROGRAMDATA)$ funcs: getenv: - ^HUGO_ - ^CI$ http: mediaTypes: null methods: - (?i)GET|POST urls: - .* segments: null server: headers: null redirects: - force: false from: /** fromHeaders: null fromRe: "" status: 404 to: /404.html services: disqus: shortname: "" googleAnalytics: id: "" instagram: accessToken: "" disableInlineCSS: false rss: limit: -1 twitter: disableInlineCSS: false x: disableInlineCSS: false sitemap: changeFreq: "" disable: false filename: sitemap.xml priority: -1 social: null staticDir: - static staticDir0: null staticDir1: null staticDir2: null staticDir3: null staticDir4: null staticDir5: null staticDir6: null staticDir7: null staticDir8: null staticDir9: null staticDir10: null summaryLength: 70 taxonomies: category: categories tag: tags templateMetrics: false templateMetricsHints: false theme: null themesDir: themes timeZone: "" timeout: 60s title: "" titleCaseStyle: AP uglyURLs: null workingDir: "" config_helpers: mergeStrategy: build: _merge: none caches: _merge: none cascade: _merge: none contenttypes: _merge: none deployment: _merge: none frontmatter: _merge: none httpcache: _merge: none imaging: _merge: none languages: _merge: none en: _merge: none menus: _merge: shallow params: _merge: deep markup: _merge: none mediatypes: _merge: shallow menus: _merge: shallow minify: _merge: none module: _merge: none outputformats: _merge: shallow outputs: _merge: none page: _merge: none pagination: _merge: none params: _merge: deep permalinks: _merge: none privacy: _merge: none related: _merge: none security: _merge: none segments: _merge: none server: _merge: none services: _merge: none sitemap: _merge: none taxonomies: _merge: none output: layouts: {} tpl: funcs: cast: ToFloat: Aliases: - float Args: - v Description: ToFloat converts v to a float. Examples: - - '{{ "1234" | float | printf "%T" }}' - float64 ToInt: Aliases: - int Args: - v Description: ToInt converts v to an int. Examples: - - '{{ "1234" | int | printf "%T" }}' - int ToString: Aliases: - string Args: - v Description: ToString converts v to a string. Examples: - - '{{ 1234 | string | printf "%T" }}' - string collections: After: Aliases: - after Args: - "n" - l Description: After returns all the items after the first n items in list l. Examples: [] Append: Aliases: - append Args: - args Description: "Append appends args up to the last one to the slice in the last argument.\nThis construct allows template constructs like this:\n\n\t{{ $pages = $pages | append $p2 $p1 }}\n\nNote that with 2 arguments where both are slices of the same type,\nthe first slice will be appended to the second:\n\n\t{{ $pages = $pages | append .Site.RegularPages }}" Examples: [] Apply: Aliases: - apply Args: - ctx - c - fname - args Description: Apply takes an array or slice c and returns a new slice with the function fname applied over it. Examples: [] Complement: Aliases: - complement Args: - ls Description: "Complement gives the elements in the last element of ls that are not in\nany of the others.\n\nAll elements of ls must be slices or arrays of comparable types.\n\nThe reasoning behind this rather clumsy API is so we can do this in the templates:\n\n\t{{ $c := .Pages | complement $last4 }}" Examples: - - '{{ slice "a" "b" "c" "d" "e" "f" | complement (slice "b" "c") (slice "d" "e") }}' - '[a f]' D: Aliases: null Args: null Description: "" Examples: null Delimit: Aliases: - delimit Args: - ctx - l - sep - last Description: |- Delimit takes a given list l and returns a string delimited by sep. If last is passed to the function, it will be used as the final delimiter. Examples: - - '{{ delimit (slice "A" "B" "C") ", " " and " }}' - A, B and C Dictionary: Aliases: - dict Args: - values Description: |- Dictionary creates a new map from the given parameters by treating values as key-value pairs. The number of values must be even. The keys can be string slices, which will create the needed nested structure. Examples: [] First: Aliases: - first Args: - limit - l Description: First returns the first limit items in list l. Examples: [] Group: Aliases: - group Args: - key - items Description: |- Group groups a set of items by the given key. This is currently only supported for Pages. Examples: [] In: Aliases: - in Args: - l - v Description: In returns whether v is in the list l. l may be an array or slice. Examples: - - '{{ if in "this string contains a substring" "substring" }}Substring found!{{ end }}' - Substring found! Index: Aliases: - index Args: - item - args Description: |- Index returns the result of indexing its first argument by the following arguments. Thus "index x 1 2 3" is, in Go syntax, x[1][2][3]. Each indexed item must be a map, slice, or array. Adapted from Go stdlib src/text/template/funcs.go. We deviate from the stdlib mostly because of https://github.com/golang/go/issues/14751. Examples: [] Intersect: Aliases: - intersect Args: - l1 - l2 Description: |- Intersect returns the common elements in the given sets, l1 and l2. l1 and l2 must be of the same type and may be either arrays or slices. Examples: [] IsSet: Aliases: - isSet - isset Args: - c - key Description: |- IsSet returns whether a given array, channel, slice, or map in c has the given key defined. Examples: [] KeyVals: Aliases: - keyVals Args: - key - values Description: KeyVals creates a key and values wrapper. Examples: - - '{{ keyVals "key" "a" "b" }}' - 'key: [a b]' Last: Aliases: - last Args: - limit - l Description: Last returns the last limit items in the list l. Examples: [] Merge: Aliases: - merge Args: - params Description: |- Merge creates a copy of the final parameter in params and merges the preceding parameters into it in reverse order. Currently only maps are supported. Key handling is case insensitive. Examples: - - '{{ dict "title" "Hugo Rocks!" | collections.Merge (dict "title" "Default Title" "description" "Yes, Hugo Rocks!") | sort }}' - '[Yes, Hugo Rocks! Hugo Rocks!]' - - '{{ merge (dict "title" "Default Title" "description" "Yes, Hugo Rocks!") (dict "title" "Hugo Rocks!") | sort }}' - '[Yes, Hugo Rocks! Hugo Rocks!]' - - '{{ merge (dict "title" "Default Title" "description" "Yes, Hugo Rocks!") (dict "title" "Hugo Rocks!") (dict "extra" "For reals!") | sort }}' - '[Yes, Hugo Rocks! For reals! Hugo Rocks!]' NewScratch: Aliases: - newScratch Args: null Description: |- NewScratch creates a new Scratch which can be used to store values in a thread safe way. Examples: - - '{{ $scratch := newScratch }}{{ $scratch.Add "b" 2 }}{{ $scratch.Add "b" 2 }}{{ $scratch.Get "b" }}' - "4" Querify: Aliases: - querify Args: - params Description: |- Querify returns a URL query string composed of the given key-value pairs, encoded and sorted by key. Examples: - - '{{ (querify "foo" 1 "bar" 2 "baz" "with spaces" "qux" "this&that=those") | safeHTML }}' - bar=2&baz=with+spaces&foo=1&qux=this%26that%3Dthose - - Search - Search - - '{{ slice "foo" 1 "bar" 2 | querify | safeHTML }}' - bar=2&foo=1 Reverse: Aliases: null Args: null Description: "" Examples: null Seq: Aliases: - seq Args: - args Description: "Seq creates a sequence of integers from args. It's named and used as GNU's seq.\n\nExamples:\n\n\t3 => 1, 2, 3\n\t1 2 4 => 1, 3\n\t-3 => -1, -2, -3\n\t1 4 => 1, 2, 3, 4\n\t1 -2 => 1, 0, -1, -2" Examples: - - '{{ seq 3 }}' - '[1 2 3]' Shuffle: Aliases: - shuffle Args: - l Description: Shuffle returns list l in a randomized order. Examples: [] Slice: Aliases: - slice Args: - args Description: Slice returns a slice of all passed arguments. Examples: - - '{{ slice "B" "C" "A" | sort }}' - '[A B C]' Sort: Aliases: - sort Args: - ctx - l - args Description: Sort returns a sorted copy of the list l. Examples: [] SymDiff: Aliases: - symdiff Args: - s2 - s1 Description: |- SymDiff returns the symmetric difference of s1 and s2. Arguments must be either a slice or an array of comparable types. Examples: - - '{{ slice 1 2 3 | symdiff (slice 3 4) }}' - '[1 2 4]' Union: Aliases: - union Args: - l1 - l2 Description: |- Union returns the union of the given sets, l1 and l2. l1 and l2 must be of the same type and may be either arrays or slices. If l1 and l2 aren't of the same type then l1 will be returned. If either l1 or l2 is nil then the non-nil list will be returned. Examples: - - '{{ union (slice 1 2 3) (slice 3 4 5) }}' - '[1 2 3 4 5]' Uniq: Aliases: - uniq Args: - l Description: Uniq returns a new list with duplicate elements in the list l removed. Examples: - - '{{ slice 1 2 3 2 | uniq }}' - '[1 2 3]' Where: Aliases: - where Args: - ctx - c - key - args Description: Where returns a filtered subset of collection c. Examples: [] compare: Conditional: Aliases: - cond Args: - cond - v1 - v2 Description: |- Conditional can be used as a ternary operator. It returns v1 if cond is true, else v2. Examples: - - '{{ cond (eq (add 2 2) 4) "2+2 is 4" "what?" | safeHTML }}' - 2+2 is 4 Default: Aliases: - default Args: - defaultv - givenv Description: |- Default checks whether a givenv is set and returns the default value defaultv if it is not. "Set" in this context means non-zero for numeric types and times; non-zero length for strings, arrays, slices, and maps; any boolean or struct value; or non-nil for any other types. Examples: - - '{{ "Hugo Rocks!" | default "Hugo Rules!" }}' - Hugo Rocks! - - '{{ "" | default "Hugo Rules!" }}' - Hugo Rules! Eq: Aliases: - eq Args: - first - others Description: Eq returns the boolean truth of arg1 == arg2 || arg1 == arg3 || arg1 == arg4. Examples: - - '{{ if eq .Section "blog" }}current-section{{ end }}' - current-section Ge: Aliases: - ge Args: - first - others Description: Ge returns the boolean truth of arg1 >= arg2 && arg1 >= arg3 && arg1 >= arg4. Examples: - - '{{ if ge hugo.Version "0.80" }}Reasonable new Hugo version!{{ end }}' - Reasonable new Hugo version! Gt: Aliases: - gt Args: - first - others Description: Gt returns the boolean truth of arg1 > arg2 && arg1 > arg3 && arg1 > arg4. Examples: [] Le: Aliases: - le Args: - first - others Description: Le returns the boolean truth of arg1 <= arg2 && arg1 <= arg3 && arg1 <= arg4. Examples: [] Lt: Aliases: - lt Args: - first - others Description: Lt returns the boolean truth of arg1 < arg2 && arg1 < arg3 && arg1 < arg4. Examples: [] LtCollate: Aliases: null Args: null Description: "" Examples: null Ne: Aliases: - ne Args: - first - others Description: Ne returns the boolean truth of arg1 != arg2 && arg1 != arg3 && arg1 != arg4. Examples: [] crypto: FNV32a: Aliases: null Args: null Description: "" Examples: null HMAC: Aliases: - hmac Args: - h - k - m - e Description: HMAC returns a cryptographic hash that uses a key to sign a message. Examples: - - '{{ hmac "sha256" "Secret key" "Hello world, gophers!" }}' - b6d11b6c53830b9d87036272ca9fe9d19306b8f9d8aa07b15da27d89e6e34f40 MD5: Aliases: - md5 Args: - v Description: MD5 hashes the v and returns its MD5 checksum. Examples: - - '{{ md5 "Hello world, gophers!" }}' - b3029f756f98f79e7f1b7f1d1f0dd53b - - '{{ crypto.MD5 "Hello world, gophers!" }}' - b3029f756f98f79e7f1b7f1d1f0dd53b SHA1: Aliases: - sha1 Args: - v Description: SHA1 hashes v and returns its SHA1 checksum. Examples: - - '{{ sha1 "Hello world, gophers!" }}' - c8b5b0e33d408246e30f53e32b8f7627a7a649d4 SHA256: Aliases: - sha256 Args: - v Description: SHA256 hashes v and returns its SHA256 checksum. Examples: - - '{{ sha256 "Hello world, gophers!" }}' - 6ec43b78da9669f50e4e422575c54bf87536954ccd58280219c393f2ce352b46 css: PostCSS: Aliases: - postCSS Args: - args Description: PostCSS processes the given Resource with PostCSS. Examples: [] Quoted: Aliases: null Args: null Description: "" Examples: null Sass: Aliases: - toCSS Args: - args Description: Sass processes the given Resource with SASS. Examples: [] TailwindCSS: Aliases: null Args: null Description: "" Examples: null Unquoted: Aliases: null Args: null Description: "" Examples: null data: GetCSV: Aliases: - getCSV Args: - sep - args Description: |- GetCSV expects the separator sep and one or n-parts of a URL to a resource which can either be a local or a remote one. The data separator can be a comma, semi-colon, pipe, etc, but only one character. If you provide multiple parts for the URL they will be joined together to the final URL. GetCSV returns nil or a slice slice to use in a short code. Examples: [] GetJSON: Aliases: - getJSON Args: - args Description: |- GetJSON expects one or n-parts of a URL in args to a resource which can either be a local or a remote one. If you provide multiple parts they will be joined together to the final URL. GetJSON returns nil or parsed JSON to use in a short code. Examples: [] debug: Dump: Aliases: null Args: - val Description: |- Dump returns a object dump of val as a string. Note that not every value passed to Dump will print so nicely, but we'll improve on that. We recommend using the "go" Chroma lexer to format the output nicely. Also note that the output from Dump may change from Hugo version to the next, so don't depend on a specific output. Examples: - - |- {{ $m := newScratch }} {{ $m.Set "Hugo" "Rocks!" }} {{ $m.Values | debug.Dump | safeHTML }} - |- { "Hugo": "Rocks!" } TestDeprecationErr: Aliases: null Args: null Description: "" Examples: null TestDeprecationInfo: Aliases: null Args: null Description: "" Examples: null TestDeprecationWarn: Aliases: null Args: null Description: "" Examples: null Timer: Aliases: null Args: null Description: "" Examples: null VisualizeSpaces: Aliases: null Args: null Description: "" Examples: null diagrams: Goat: Aliases: null Args: null Description: "" Examples: null encoding: Base64Decode: Aliases: - base64Decode Args: - content Description: Base64Decode returns the base64 decoding of the given content. Examples: - - '{{ "SGVsbG8gd29ybGQ=" | base64Decode }}' - Hello world - - '{{ 42 | base64Encode | base64Decode }}' - "42" Base64Encode: Aliases: - base64Encode Args: - content Description: Base64Encode returns the base64 encoding of the given content. Examples: - - '{{ "Hello world" | base64Encode }}' - SGVsbG8gd29ybGQ= Jsonify: Aliases: - jsonify Args: - args Description: |- Jsonify encodes a given object to JSON. To pretty print the JSON, pass a map or dictionary of options as the first value in args. Supported options are "prefix" and "indent". Each JSON element in the output will begin on a new line beginning with prefix followed by one or more copies of indent according to the indentation nesting. Examples: - - '{{ (slice "A" "B" "C") | jsonify }}' - '["A","B","C"]' - - '{{ (slice "A" "B" "C") | jsonify (dict "indent" " ") }}' - |- [ "A", "B", "C" ] fmt: Errorf: Aliases: - errorf Args: - format - args Description: |- Errorf formats args according to a format specifier and logs an ERROR. It returns an empty string. Examples: - - '{{ errorf "%s." "failed" }}' - "" Erroridf: Aliases: - erroridf Args: - id - format - args Description: |- Erroridf formats args according to a format specifier and logs an ERROR and an information text that the error with the given id can be suppressed in config. It returns an empty string. Examples: - - '{{ erroridf "my-err-id" "%s." "failed" }}' - "" Errormf: Aliases: null Args: null Description: "" Examples: null Print: Aliases: - print Args: - args Description: Print returns a string representation of args. Examples: - - '{{ print "works!" }}' - works! Printf: Aliases: - printf Args: - format - args Description: Printf returns string representation of args formatted with the layout in format. Examples: - - '{{ printf "%s!" "works" }}' - works! Println: Aliases: - println Args: - args Description: Println returns string representation of args ending with a newline. Examples: - - '{{ println "works!" }}' - | works! Warnf: Aliases: - warnf Args: - format - args Description: |- Warnf formats args according to a format specifier and logs a WARNING. It returns an empty string. Examples: - - '{{ warnf "%s." "warning" }}' - "" Warnidf: Aliases: - warnidf Args: - id - format - args Description: |- Warnidf formats args according to a format specifier and logs an WARNING and an information text that the warning with the given id can be suppressed in config. It returns an empty string. Examples: - - '{{ warnidf "my-warn-id" "%s." "warning" }}' - "" Warnmf: Aliases: null Args: null Description: "" Examples: null hash: FNV32a: Aliases: null Args: - v Description: FNV32a hashes v using fnv32a algorithm. Examples: - - '{{ hash.FNV32a "Hugo Rocks!!" }}' - "1515779328" XxHash: Aliases: - xxhash Args: - v Description: XxHash returns the xxHash of the input string. Examples: - - '{{ hash.XxHash "The quick brown fox jumps over the lazy dog" }}' - 0b242d361fda71bc hugo: Deps: Aliases: null Args: null Description: "" Examples: null Generator: Aliases: null Args: null Description: "" Examples: null IsDevelopment: Aliases: null Args: null Description: "" Examples: null IsExtended: Aliases: null Args: null Description: "" Examples: null IsMultiHost: Aliases: null Args: null Description: "" Examples: null IsMultihost: Aliases: null Args: null Description: "" Examples: null IsMultilingual: Aliases: null Args: null Description: "" Examples: null IsProduction: Aliases: null Args: null Description: "" Examples: null IsServer: Aliases: null Args: null Description: "" Examples: null Store: Aliases: null Args: null Description: "" Examples: null Version: Aliases: null Args: null Description: "" Examples: null WorkingDir: Aliases: null Args: null Description: "" Examples: null images: AutoOrient: Aliases: null Args: null Description: "" Examples: null Brightness: Aliases: null Args: null Description: "" Examples: null ColorBalance: Aliases: null Args: null Description: "" Examples: null Colorize: Aliases: null Args: null Description: "" Examples: null Config: Aliases: - imageConfig Args: - path Description: |- Config returns the image.Config for the specified path relative to the working directory. Examples: [] Contrast: Aliases: null Args: null Description: "" Examples: null Dither: Aliases: null Args: null Description: "" Examples: null Filter: Aliases: null Args: null Description: "" Examples: null Gamma: Aliases: null Args: null Description: "" Examples: null GaussianBlur: Aliases: null Args: null Description: "" Examples: null Grayscale: Aliases: null Args: null Description: "" Examples: null Hue: Aliases: null Args: null Description: "" Examples: null Invert: Aliases: null Args: null Description: "" Examples: null Mask: Aliases: null Args: null Description: "" Examples: null Opacity: Aliases: null Args: null Description: "" Examples: null Overlay: Aliases: null Args: null Description: "" Examples: null Padding: Aliases: null Args: null Description: "" Examples: null Pixelate: Aliases: null Args: null Description: "" Examples: null Process: Aliases: null Args: null Description: "" Examples: null QR: Aliases: null Args: null Description: "" Examples: null Saturation: Aliases: null Args: null Description: "" Examples: null Sepia: Aliases: null Args: null Description: "" Examples: null Sigmoid: Aliases: null Args: null Description: "" Examples: null Text: Aliases: null Args: null Description: "" Examples: null UnsharpMask: Aliases: null Args: null Description: "" Examples: null inflect: Humanize: Aliases: - humanize Args: - v Description: |- Humanize returns the humanized form of v. If v is either an integer or a string containing an integer value, the behavior is to add the appropriate ordinal. Examples: - - '{{ humanize "my-first-post" }}' - My first post - - '{{ humanize "myCamelPost" }}' - My camel post - - '{{ humanize "52" }}' - 52nd - - '{{ humanize 103 }}' - 103rd Pluralize: Aliases: - pluralize Args: - v Description: Pluralize returns the plural form of the single word in v. Examples: - - '{{ "cat" | pluralize }}' - cats Singularize: Aliases: - singularize Args: - v Description: Singularize returns the singular form of a single word in v. Examples: - - '{{ "cats" | singularize }}' - cat js: Babel: Aliases: - babel Args: - args Description: Babel processes the given Resource with Babel. Examples: [] Batch: Aliases: null Args: null Description: "" Examples: null Build: Aliases: null Args: null Description: "" Examples: null lang: FormatAccounting: Aliases: null Args: - precision - currency - number Description: |- FormatAccounting returns the currency representation of number for the given currency and precision for the current language in accounting notation. The return value is formatted with at least two decimal places. Examples: - - '{{ 512.5032 | lang.FormatAccounting 2 "NOK" }}' - NOK512.50 FormatCurrency: Aliases: null Args: - precision - currency - number Description: |- FormatCurrency returns the currency representation of number for the given currency and precision for the current language. The return value is formatted with at least two decimal places. Examples: - - '{{ 512.5032 | lang.FormatCurrency 2 "USD" }}' - $512.50 FormatNumber: Aliases: null Args: - precision - number Description: FormatNumber formats number with the given precision for the current language. Examples: - - '{{ 512.5032 | lang.FormatNumber 2 }}' - "512.50" FormatNumberCustom: Aliases: null Args: - precision - number - options Description: |- FormatNumberCustom formats a number with the given precision. The first options parameter is a space-delimited string of characters to represent negativity, the decimal point, and grouping. The default value is `- . ,`. The second options parameter defines an alternate delimiting character. Note that numbers are rounded up at 5 or greater. So, with precision set to 0, 1.5 becomes `2`, and 1.4 becomes `1`. For a simpler function that adapts to the current language, see FormatNumber. Examples: - - '{{ lang.FormatNumberCustom 2 12345.6789 }}' - 12,345.68 - - '{{ lang.FormatNumberCustom 2 12345.6789 "- , ." }}' - 12.345,68 - - '{{ lang.FormatNumberCustom 6 -12345.6789 "- ." }}' - "-12345.678900" - - '{{ lang.FormatNumberCustom 0 -12345.6789 "- . ," }}' - -12,346 - - '{{ lang.FormatNumberCustom 0 -12345.6789 "-|.| " "|" }}' - -12 346 - - '{{ -98765.4321 | lang.FormatNumberCustom 2 }}' - -98,765.43 FormatPercent: Aliases: null Args: - precision - number Description: |- FormatPercent formats number with the given precision for the current language. Note that the number is assumed to be a percentage. Examples: - - '{{ 512.5032 | lang.FormatPercent 2 }}' - 512.50% Merge: Aliases: null Args: null Description: "" Examples: null Translate: Aliases: - i18n - T Args: - ctx - id - args Description: Translate returns a translated string for id. Examples: [] math: Abs: Aliases: null Args: - "n" Description: Abs returns the absolute value of n. Examples: - - '{{ math.Abs -2.1 }}' - "2.1" Acos: Aliases: null Args: - "n" Description: Acos returns the arccosine, in radians, of n. Examples: - - '{{ math.Acos 1 }}' - "0" Add: Aliases: - add Args: - inputs Description: Add adds the multivalued addends n1 and n2 or more values. Examples: - - '{{ add 1 2 }}' - "3" Asin: Aliases: null Args: - "n" Description: Asin returns the arcsine, in radians, of n. Examples: - - '{{ math.Asin 1 }}' - "1.5707963267948966" Atan: Aliases: null Args: - "n" Description: Atan returns the arctangent, in radians, of n. Examples: - - '{{ math.Atan 1 }}' - "0.7853981633974483" Atan2: Aliases: null Args: - "n" - m Description: Atan2 returns the arc tangent of n/m, using the signs of the two to determine the quadrant of the return value. Examples: - - '{{ math.Atan2 1 2 }}' - "0.4636476090008061" Ceil: Aliases: null Args: - "n" Description: Ceil returns the least integer value greater than or equal to n. Examples: - - '{{ math.Ceil 2.1 }}' - "3" Cos: Aliases: null Args: - "n" Description: Cos returns the cosine of the radian argument n. Examples: - - '{{ math.Cos 1 }}' - "0.5403023058681398" Counter: Aliases: null Args: null Description: "" Examples: null Div: Aliases: - div Args: - inputs Description: Div divides n1 by n2. Examples: - - '{{ div 6 3 }}' - "2" Floor: Aliases: null Args: - "n" Description: Floor returns the greatest integer value less than or equal to n. Examples: - - '{{ math.Floor 1.9 }}' - "1" Log: Aliases: null Args: - "n" Description: Log returns the natural logarithm of the number n. Examples: - - '{{ math.Log 1 }}' - "0" Max: Aliases: null Args: - inputs Description: Max returns the greater of all numbers in inputs. Any slices in inputs are flattened. Examples: - - '{{ math.Max 1 2 }}' - "2" MaxInt64: Aliases: null Args: null Description: MaxInt64 returns the maximum value for a signed 64-bit integer. Examples: - - '{{ math.MaxInt64 }}' - "9223372036854775807" Min: Aliases: null Args: - inputs Description: Min returns the smaller of all numbers in inputs. Any slices in inputs are flattened. Examples: - - '{{ math.Min 1 2 }}' - "1" Mod: Aliases: - mod Args: - n1 - n2 Description: Mod returns n1 % n2. Examples: - - '{{ mod 15 3 }}' - "0" ModBool: Aliases: - modBool Args: - n1 - n2 Description: ModBool returns the boolean of n1 % n2. If n1 % n2 == 0, return true. Examples: - - '{{ modBool 15 3 }}' - "true" Mul: Aliases: - mul Args: - inputs Description: Mul multiplies the multivalued numbers n1 and n2 or more values. Examples: - - '{{ mul 2 3 }}' - "6" Pi: Aliases: null Args: null Description: Pi returns the mathematical constant pi. Examples: - - '{{ math.Pi }}' - "3.141592653589793" Pow: Aliases: - pow Args: - n1 - n2 Description: Pow returns n1 raised to the power of n2. Examples: - - '{{ math.Pow 2 3 }}' - "8" Product: Aliases: null Args: null Description: "" Examples: null Rand: Aliases: null Args: null Description: Rand returns, as a float64, a pseudo-random number in the half-open interval [0.0,1.0). Examples: - - '{{ math.Rand }}' - "0.6312770459590062" Round: Aliases: null Args: - "n" Description: Round returns the integer nearest to n, rounding half away from zero. Examples: - - '{{ math.Round 1.5 }}' - "2" Sin: Aliases: null Args: - "n" Description: Sin returns the sine of the radian argument n. Examples: - - '{{ math.Sin 1 }}' - "0.8414709848078965" Sqrt: Aliases: null Args: - "n" Description: Sqrt returns the square root of the number n. Examples: - - '{{ math.Sqrt 81 }}' - "9" Sub: Aliases: - sub Args: - inputs Description: Sub subtracts multivalued. Examples: - - '{{ sub 3 2 }}' - "1" Sum: Aliases: null Args: null Description: "" Examples: null Tan: Aliases: null Args: - "n" Description: Tan returns the tangent of the radian argument n. Examples: - - '{{ math.Tan 1 }}' - "1.557407724654902" ToDegrees: Aliases: null Args: - "n" Description: ToDegrees converts radians into degrees. Examples: - - '{{ math.ToDegrees 1.5707963267948966 }}' - "90" ToRadians: Aliases: null Args: - "n" Description: ToRadians converts degrees into radians. Examples: - - '{{ math.ToRadians 90 }}' - "1.5707963267948966" openapi3: Unmarshal: Aliases: null Args: null Description: "" Examples: [] os: FileExists: Aliases: - fileExists Args: - i Description: FileExists checks whether a file exists under the given path. Examples: - - '{{ fileExists "foo.txt" }}' - "false" Getenv: Aliases: - getenv Args: - key Description: |- Getenv retrieves the value of the environment variable named by the key. It returns the value, which will be empty if the variable is not present. Examples: [] ReadDir: Aliases: - readDir Args: - i Description: ReadDir lists the directory contents relative to the configured WorkingDir. Examples: - - '{{ range (readDir "files") }}{{ .Name }}{{ end }}' - README.txt ReadFile: Aliases: - readFile Args: - i Description: |- ReadFile reads the file named by filename relative to the configured WorkingDir. It returns the contents as a string. There is an upper size limit set at 1 megabytes. Examples: - - '{{ readFile "files/README.txt" }}' - Hugo Rocks! Stat: Aliases: null Args: null Description: "" Examples: null partials: Include: Aliases: - partial Args: - ctx - name - contextList Description: |- Include executes the named partial. If the partial contains a return statement, that value will be returned. Else, the rendered output will be returned: A string if the partial is a text/template, or template.HTML when html/template. Note that ctx is provided by Hugo, not the end user. Examples: - - '{{ partial "header.html" . }}' - Hugo Rocks! IncludeCached: Aliases: - partialCached Args: - ctx - name - context - variants Description: |- IncludeCached executes and caches partial templates. The cache is created with name+variants as the key. Note that ctx is provided by Hugo, not the end user. Examples: [] path: Base: Aliases: null Args: null Description: "" Examples: null BaseName: Aliases: null Args: null Description: "" Examples: null Clean: Aliases: null Args: null Description: "" Examples: null Dir: Aliases: null Args: null Description: "" Examples: null Ext: Aliases: null Args: null Description: "" Examples: null Join: Aliases: null Args: - elements Description: |- Join joins any number of path elements into a single path, adding a separating slash if necessary. All the input path elements are passed into filepath.ToSlash converting any Windows slashes to forward slashes. The result is Cleaned; in particular, all empty strings are ignored. Examples: - - '{{ slice "my/path" "filename.txt" | path.Join }}' - my/path/filename.txt - - '{{ path.Join "my" "path" "filename.txt" }}' - my/path/filename.txt - - '{{ "my/path/filename.txt" | path.Ext }}' - .txt - - '{{ "my/path/filename.txt" | path.Base }}' - filename.txt - - '{{ "my/path/filename.txt" | path.Dir }}' - my/path Split: Aliases: null Args: - path Description: |- Split splits path immediately following the final slash, separating it into a directory and file name component. If there is no slash in path, Split returns an empty dir and file set to path. The input path is passed into filepath.ToSlash converting any Windows slashes to forward slashes. The returned values have the property that path = dir+file. Examples: - - '{{ "/my/path/filename.txt" | path.Split }}' - /my/path/|filename.txt - - '{{ "/my/path/filename.txt" | path.Split }}' - /my/path/|filename.txt reflect: IsMap: Aliases: null Args: - v Description: IsMap reports whether v is a map. Examples: - - '{{ if reflect.IsMap (dict "a" 1) }}Map{{ end }}' - Map IsSlice: Aliases: null Args: - v Description: IsSlice reports whether v is a slice. Examples: - - '{{ if reflect.IsSlice (slice 1 2 3) }}Slice{{ end }}' - Slice resources: Babel: Aliases: null Args: null Description: "" Examples: null ByType: Aliases: null Args: null Description: "" Examples: null Concat: Aliases: null Args: null Description: "" Examples: null Copy: Aliases: null Args: null Description: "" Examples: null ExecuteAsTemplate: Aliases: null Args: null Description: "" Examples: null Fingerprint: Aliases: - fingerprint Args: - args Description: |- Fingerprint transforms the given Resource with a MD5 hash of the content in the RelPermalink and Permalink. Examples: [] FromString: Aliases: null Args: null Description: "" Examples: null Get: Aliases: null Args: - filename Description: |- Get locates the filename given in Hugo's assets filesystem and creates a Resource object that can be used for further transformations. Examples: [] GetMatch: Aliases: null Args: null Description: "" Examples: null GetRemote: Aliases: null Args: - args Description: |- GetRemote gets the URL (via HTTP(s)) in the first argument in args and creates Resource object that can be used for further transformations. A second argument may be provided with an option map. Note: This method does not return any error as a second return value, for any error situations the error can be checked in .Err. Examples: [] Match: Aliases: null Args: null Description: "" Examples: null Minify: Aliases: - minify Args: - r Description: |- Minify minifies the given Resource using the MediaType to pick the correct minifier. Examples: [] PostCSS: Aliases: null Args: null Description: "" Examples: null PostProcess: Aliases: null Args: null Description: "" Examples: null ToCSS: Aliases: null Args: null Description: "" Examples: null safe: CSS: Aliases: - safeCSS Args: - s Description: CSS returns the string s as html/template CSS content. Examples: - - '{{ "Bat&Man" | safeCSS | safeCSS }}' - Bat&Man HTML: Aliases: - safeHTML Args: - s Description: HTML returns the string s as html/template HTML content. Examples: - - '{{ "Bat&Man" | safeHTML | safeHTML }}' - Bat&Man - - '{{ "Bat&Man" | safeHTML }}' - Bat&Man HTMLAttr: Aliases: - safeHTMLAttr Args: - s Description: HTMLAttr returns the string s as html/template HTMLAttr content. Examples: [] JS: Aliases: - safeJS Args: - s Description: JS returns the given string as a html/template JS content. Examples: - - '{{ "(1*2)" | safeJS | safeJS }}' - (1*2) JSStr: Aliases: - safeJSStr Args: - s Description: JSStr returns the given string as a html/template JSStr content. Examples: [] URL: Aliases: - safeURL Args: - s Description: URL returns the string s as html/template URL content. Examples: - - '{{ "http://gohugo.io" | safeURL | safeURL }}' - http://gohugo.io site: AllPages: Aliases: null Args: null Description: "" Examples: null Author: Aliases: null Args: null Description: "" Examples: null Authors: Aliases: null Args: null Description: "" Examples: null BaseURL: Aliases: null Args: null Description: "" Examples: null BuildDrafts: Aliases: null Args: null Description: "" Examples: null CheckReady: Aliases: null Args: null Description: "" Examples: null Config: Aliases: null Args: null Description: "" Examples: null Copyright: Aliases: null Args: null Description: "" Examples: null Current: Aliases: null Args: null Description: "" Examples: null Data: Aliases: null Args: null Description: "" Examples: null ForEeachIdentityByName: Aliases: null Args: null Description: "" Examples: null GetPage: Aliases: null Args: null Description: "" Examples: null Home: Aliases: null Args: null Description: "" Examples: null Hugo: Aliases: null Args: null Description: "" Examples: null IsMultiLingual: Aliases: null Args: null Description: "" Examples: null Key: Aliases: null Args: null Description: "" Examples: null Language: Aliases: null Args: null Description: "" Examples: null LanguageCode: Aliases: null Args: null Description: "" Examples: null LanguagePrefix: Aliases: null Args: null Description: "" Examples: null Languages: Aliases: null Args: null Description: "" Examples: null LastChange: Aliases: null Args: null Description: "" Examples: null Lastmod: Aliases: null Args: null Description: "" Examples: null MainSections: Aliases: null Args: null Description: "" Examples: null Menus: Aliases: null Args: null Description: "" Examples: null Pages: Aliases: null Args: null Description: "" Examples: null Param: Aliases: null Args: null Description: "" Examples: null Params: Aliases: null Args: null Description: "" Examples: null RegularPages: Aliases: null Args: null Description: "" Examples: null Sections: Aliases: null Args: null Description: "" Examples: null ServerPort: Aliases: null Args: null Description: "" Examples: null Sites: Aliases: null Args: null Description: "" Examples: null Social: Aliases: null Args: null Description: "" Examples: null Store: Aliases: null Args: null Description: "" Examples: null Taxonomies: Aliases: null Args: null Description: "" Examples: null Title: Aliases: null Args: null Description: "" Examples: null strings: Chomp: Aliases: - chomp Args: - s Description: Chomp returns a copy of s with all trailing newline characters removed. Examples: - - '{{ chomp "

        Blockhead

        \n" | safeHTML }}' -

        Blockhead

        Contains: Aliases: null Args: - s - substr Description: Contains reports whether substr is in s. Examples: - - '{{ strings.Contains "abc" "b" }}' - "true" - - '{{ strings.Contains "abc" "d" }}' - "false" ContainsAny: Aliases: null Args: - s - chars Description: ContainsAny reports whether any Unicode code points in chars are within s. Examples: - - '{{ strings.ContainsAny "abc" "bcd" }}' - "true" - - '{{ strings.ContainsAny "abc" "def" }}' - "false" ContainsNonSpace: Aliases: null Args: null Description: "" Examples: null Count: Aliases: null Args: - substr - s Description: |- Count counts the number of non-overlapping instances of substr in s. If substr is an empty string, Count returns 1 + the number of Unicode code points in s. Examples: - - '{{ "aabab" | strings.Count "a" }}' - "3" CountRunes: Aliases: - countrunes Args: - s Description: CountRunes returns the number of runes in s, excluding whitespace. Examples: [] CountWords: Aliases: - countwords Args: - s Description: CountWords returns the approximate word count in s. Examples: [] Diff: Aliases: null Args: null Description: "" Examples: null FindRE: Aliases: - findRE Args: - expr - content - limit Description: |- FindRE returns a list of strings that match the regular expression. By default all matches will be included. The number of matches can be limited with an optional third parameter. Examples: - - '{{ findRE "[G|g]o" "Hugo is a static side generator written in Go." 1 }}' - '[go]' FindRESubmatch: Aliases: - findRESubmatch Args: - expr - content - limit Description: |- FindRESubmatch returns a slice of all successive matches of the regular expression in content. Each element is a slice of strings holding the text of the leftmost match of the regular expression and the matches, if any, of its subexpressions. By default all matches will be included. The number of matches can be limited with the optional limit parameter. A return value of nil indicates no match. Examples: - - '{{ findRESubmatch `(.+?)` `
      5. Foo
      6. Bar
      7. ` | print | safeHTML }}' - '[[Foo #foo Foo] [Bar #bar Bar]]' FirstUpper: Aliases: null Args: - s Description: FirstUpper converts s making the first character upper case. Examples: - - '{{ "hugo rocks!" | strings.FirstUpper }}' - Hugo rocks! HasPrefix: Aliases: - hasPrefix Args: - s - prefix Description: HasPrefix tests whether the input s begins with prefix. Examples: - - '{{ hasPrefix "Hugo" "Hu" }}' - "true" - - '{{ hasPrefix "Hugo" "Fu" }}' - "false" HasSuffix: Aliases: - hasSuffix Args: - s - suffix Description: HasSuffix tests whether the input s begins with suffix. Examples: - - '{{ hasSuffix "Hugo" "go" }}' - "true" - - '{{ hasSuffix "Hugo" "du" }}' - "false" Repeat: Aliases: null Args: - "n" - s Description: Repeat returns a new string consisting of n copies of the string s. Examples: - - '{{ "yo" | strings.Repeat 4 }}' - yoyoyoyo Replace: Aliases: - replace Args: - s - old - new - limit Description: |- Replace returns a copy of the string s with all occurrences of old replaced with new. The number of replacements can be limited with an optional fourth parameter. Examples: - - '{{ replace "Batman and Robin" "Robin" "Catwoman" }}' - Batman and Catwoman - - '{{ replace "aabbaabb" "a" "z" 2 }}' - zzbbaabb ReplaceRE: Aliases: - replaceRE Args: - pattern - repl - s - "n" Description: |- ReplaceRE returns a copy of s, replacing all matches of the regular expression pattern with the replacement text repl. The number of replacements can be limited with an optional fourth parameter. Examples: - - '{{ replaceRE "a+b" "X" "aabbaabbab" }}' - XbXbX - - '{{ replaceRE "a+b" "X" "aabbaabbab" 1 }}' - Xbaabbab RuneCount: Aliases: null Args: - s Description: RuneCount returns the number of runes in s. Examples: [] SliceString: Aliases: - slicestr Args: - a - startEnd Description: |- SliceString slices a string by specifying a half-open range with two indices, start and end. 1 and 4 creates a slice including elements 1 through 3. The end index can be omitted, it defaults to the string's length. Examples: - - '{{ slicestr "BatMan" 0 3 }}' - Bat - - '{{ slicestr "BatMan" 3 }}' - Man Split: Aliases: - split Args: - a - delimiter Description: Split slices an input string into all substrings separated by delimiter. Examples: [] Substr: Aliases: - substr Args: - a - nums Description: |- Substr extracts parts of a string, beginning at the character at the specified position, and returns the specified number of characters. It normally takes two parameters: start and length. It can also take one parameter: start, i.e. length is omitted, in which case the substring starting from start until the end of the string will be returned. To extract characters from the end of the string, use a negative start number. In addition, borrowing from the extended behavior described at http://php.net/substr, if length is given and is negative, then that many characters will be omitted from the end of string. Examples: - - '{{ substr "BatMan" 0 -3 }}' - Bat - - '{{ substr "BatMan" 3 3 }}' - Man Title: Aliases: - title Args: - s Description: |- Title returns a copy of the input s with all Unicode letters that begin words mapped to their title case. Examples: - - '{{ title "Bat man" }}' - Bat Man - - '{{ title "somewhere over the rainbow" }}' - Somewhere Over the Rainbow ToLower: Aliases: - lower Args: - s Description: |- ToLower returns a copy of the input s with all Unicode letters mapped to their lower case. Examples: - - '{{ lower "BatMan" }}' - batman ToUpper: Aliases: - upper Args: - s Description: |- ToUpper returns a copy of the input s with all Unicode letters mapped to their upper case. Examples: - - '{{ upper "BatMan" }}' - BATMAN Trim: Aliases: - trim Args: - s - cutset Description: |- Trim returns converts the strings s removing all leading and trailing characters defined contained. Examples: - - '{{ trim "++Batman--" "+-" }}' - Batman TrimLeft: Aliases: null Args: - cutset - s Description: |- TrimLeft returns a slice of the string s with all leading characters contained in cutset removed. Examples: - - '{{ "aabbaa" | strings.TrimLeft "a" }}' - bbaa TrimPrefix: Aliases: null Args: - prefix - s Description: |- TrimPrefix returns s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged. Examples: - - '{{ "aabbaa" | strings.TrimPrefix "a" }}' - abbaa - - '{{ "aabbaa" | strings.TrimPrefix "aa" }}' - bbaa TrimRight: Aliases: null Args: - cutset - s Description: |- TrimRight returns a slice of the string s with all trailing characters contained in cutset removed. Examples: - - '{{ "aabbaa" | strings.TrimRight "a" }}' - aabb TrimSpace: Aliases: null Args: null Description: "" Examples: null TrimSuffix: Aliases: null Args: - suffix - s Description: |- TrimSuffix returns s without the provided trailing suffix string. If s doesn't end with suffix, s is returned unchanged. Examples: - - '{{ "aabbaa" | strings.TrimSuffix "a" }}' - aabba - - '{{ "aabbaa" | strings.TrimSuffix "aa" }}' - aabb Truncate: Aliases: - truncate Args: - s - options Description: Truncate truncates the string in s to the specified length. Examples: - - '{{ "this is a very long text" | truncate 10 " ..." }}' - this is a ... - - '{{ "With [Markdown](/markdown) inside." | markdownify | truncate 14 }}' - With Markdown … templates: Current: Aliases: null Args: null Description: "" Examples: null Defer: Aliases: null Args: - args Description: Defer defers the execution of a template block. Examples: [] DoDefer: Aliases: - doDefer Args: - ctx - id - optsv Description: |- DoDefer defers the execution of a template block. For internal use only. Examples: [] Exists: Aliases: null Args: - name Description: |- Exists returns whether the template with the given name exists. Note that this is the Unix-styled relative path including filename suffix, e.g. partials/header.html Examples: - - '{{ if (templates.Exists "partials/header.html") }}Yes!{{ end }}' - Yes! - - '{{ if not (templates.Exists "partials/doesnotexist.html") }}No!{{ end }}' - No! time: AsTime: Aliases: null Args: - v - args Description: |- AsTime converts the textual representation of the datetime string into a time.Time interface. Examples: - - '{{ (time "2015-01-21").Year }}' - "2015" Duration: Aliases: - duration Args: - unit - number Description: |- Duration converts the given number to a time.Duration. Unit is one of nanosecond/ns, microsecond/us/µs, millisecond/ms, second/s, minute/m or hour/h. Examples: - - '{{ mul 60 60 | duration "second" }}' - 1h0m0s Format: Aliases: - dateFormat Args: - layout - v Description: |- Format converts the textual representation of the datetime string in v into time.Time if needed and formats it with the given layout. Examples: - - 'dateFormat: {{ dateFormat "Monday, Jan 2, 2006" "2015-01-21" }}' - 'dateFormat: Wednesday, Jan 21, 2015' In: Aliases: null Args: null Description: "" Examples: null Now: Aliases: - now Args: null Description: Now returns the current local time or `clock` time Examples: [] ParseDuration: Aliases: null Args: - s Description: |- ParseDuration parses the duration string s. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". See https://golang.org/pkg/time/#ParseDuration Examples: - - '{{ "1h12m10s" | time.ParseDuration }}' - 1h12m10s transform: CanHighlight: Aliases: null Args: null Description: "" Examples: null Emojify: Aliases: - emojify Args: - s Description: |- Emojify returns a copy of s with all emoji codes replaced with actual emojis. See http://www.emoji-cheat-sheet.com/ Examples: - - '{{ "I :heart: Hugo" | emojify }}' - I ❤️ Hugo HTMLEscape: Aliases: - htmlEscape Args: - s Description: HTMLEscape returns a copy of s with reserved HTML characters escaped. Examples: - - '{{ htmlEscape "Cathal Garvey & The Sunshine Band " | safeHTML }}' - Cathal Garvey & The Sunshine Band <cathal@foo.bar> - - '{{ htmlEscape "Cathal Garvey & The Sunshine Band " }}' - Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt; - - '{{ htmlEscape "Cathal Garvey & The Sunshine Band " | htmlUnescape | safeHTML }}' - Cathal Garvey & The Sunshine Band HTMLUnescape: Aliases: - htmlUnescape Args: - s Description: |- HTMLUnescape returns a copy of s with HTML escape requences converted to plain text. Examples: - - '{{ htmlUnescape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | safeHTML }}' - Cathal Garvey & The Sunshine Band - - '{{ "Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | htmlUnescape | htmlUnescape | safeHTML }}' - Cathal Garvey & The Sunshine Band - - '{{ "Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | htmlUnescape | htmlUnescape }}' - Cathal Garvey & The Sunshine Band <cathal@foo.bar> - - '{{ htmlUnescape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | htmlEscape | safeHTML }}' - Cathal Garvey & The Sunshine Band <cathal@foo.bar> Highlight: Aliases: - highlight Args: - s - lang - opts Description: |- Highlight returns a copy of s as an HTML string with syntax highlighting applied. Examples: [] HighlightCodeBlock: Aliases: null Args: null Description: "" Examples: null Markdownify: Aliases: - markdownify Args: - ctx - s Description: Markdownify renders s from Markdown to HTML. Examples: - - '{{ .Title | markdownify }}' - BatMan Plainify: Aliases: - plainify Args: - s Description: Plainify returns a copy of s with all HTML tags removed. Examples: - - '{{ plainify "Hello world, gophers!" }}' - Hello world, gophers! PortableText: Aliases: null Args: null Description: "" Examples: null Remarshal: Aliases: null Args: - format - data Description: |- Remarshal is used in the Hugo documentation to convert configuration examples from YAML to JSON, TOML (and possibly the other way around). The is primarily a helper for the Hugo docs site. It is not a general purpose YAML to TOML converter etc., and may change without notice if it serves a purpose in the docs. Format is one of json, yaml or toml. Examples: - - '{{ "title = \"Hello World\"" | transform.Remarshal "json" | safeHTML }}' - | { "title": "Hello World" } ToMath: Aliases: null Args: null Description: "" Examples: null Unmarshal: Aliases: - unmarshal Args: - args Description: |- Unmarshal unmarshals the data given, which can be either a string, json.RawMessage or a Resource. Supported formats are JSON, TOML, YAML, and CSV. You can optionally provide an options map as the first argument. Examples: - - '{{ "hello = \"Hello World\"" | transform.Unmarshal }}' - map[hello:Hello World] - - '{{ "hello = \"Hello World\"" | resources.FromString "data/greetings.toml" | transform.Unmarshal }}' - map[hello:Hello World] XMLEscape: Aliases: null Args: - s Description: |- XMLEscape returns the given string, removing disallowed characters then escaping the result to its XML equivalent. Examples: - - '{{ transform.XMLEscape "

        abc

        " }}' - '<p>abc</p>' urls: AbsLangURL: Aliases: - absLangURL Args: - s Description: |- AbsLangURL the string s and converts it to an absolute URL according to a page's position in the project directory structure and the current language. Examples: [] AbsURL: Aliases: - absURL Args: - s Description: AbsURL takes the string s and converts it to an absolute URL. Examples: [] Anchorize: Aliases: - anchorize Args: - s Description: |- Anchorize creates sanitized anchor name version of the string s that is compatible with how your configured markdown renderer does it. Examples: - - '{{ "This is a title" | anchorize }}' - this-is-a-title JoinPath: Aliases: null Args: - elements Description: |- JoinPath joins the provided elements into a URL string and cleans the result of any ./ or ../ elements. If the argument list is empty, JoinPath returns an empty string. Examples: - - '{{ urls.JoinPath "https://example.org" "foo" }}' - https://example.org/foo - - '{{ urls.JoinPath (slice "a" "b") }}' - a/b Parse: Aliases: null Args: null Description: "" Examples: null Ref: Aliases: - ref Args: - p - args Description: Ref returns the absolute URL path to a given content item from Page p. Examples: [] RelLangURL: Aliases: - relLangURL Args: - s Description: |- RelLangURL takes the string s and prepends the relative path according to a page's position in the project directory structure and the current language. Examples: [] RelRef: Aliases: - relref Args: - p - args Description: RelRef returns the relative URL path to a given content item from Page p. Examples: [] RelURL: Aliases: - relURL Args: - s Description: |- RelURL takes the string s and prepends the relative path according to a page's position in the project directory structure. Examples: [] URLize: Aliases: - urlize Args: - s Description: URLize returns the strings s formatted as an URL. Examples: [] gohugoio-hugo-6abdaca/docs/data/embedded_template_urls.toml000066400000000000000000000025321507671574500243670ustar00rootroot00000000000000# Used by the embedded template URL (eturl.html) shortcode. # Quoted all keys because some are not valid identifiers. # BaseURL 'base_url' = 'https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates' # Partials 'disqus' = '_partials/disqus.html' 'google_analytics' = '_partials/google_analytics.html' 'opengraph' = '_partials/opengraph.html' 'pagination' = '_partials/pagination.html' 'schema' = '_partials/schema.html' 'twitter_cards' = '_partials/twitter_cards.html' # Render hooks 'render-codeblock-goat' = '_markup/render-codeblock-goat.html' 'render-image' = '_markup/render-image.html' 'render-link' = '_markup/render-link.html' 'render-table' = '_markup/render-table.html' # Shortcodes 'details' = '_shortcodes/details.html' 'figure' = '_shortcodes/figure.html' 'gist' = '_shortcodes/gist.html' 'highlight' = '_shortcodes/highlight.html' 'instagram' = '_shortcodes/instagram.html' 'param' = '_shortcodes/param.html' 'qr' = '_shortcodes/qr.html' 'ref' = '_shortcodes/ref.html' 'relref' = '_shortcodes/relref.html' 'vimeo' = '_shortcodes/vimeo.html' 'vimeo_simple' = '_shortcodes/vimeo_simple.html' 'x' = '_shortcodes/x.html' 'x_simple' = '_shortcodes/x_simple.html' 'youtube' = '_shortcodes/youtube.html' # Other 'alias' = 'alias.html' 'robots' = 'robots.txt' 'rss' = 'rss.xml' 'sitemap' = 'sitemap.xml' 'sitemapindex' = 'sitemapindex.xml' gohugoio-hugo-6abdaca/docs/data/homepagetweets.toml000066400000000000000000000272751507671574500227320ustar00rootroot00000000000000[[tweet]] name = "Heinrich Hartmann" twitter_handle = "@heinrichhartman" quote = "Working with @GoHugoIO is such a joy. Having worked with #Jekyll in the past, the near instant preview is a big win! Did not expect this to make such a huge difference." link = "https://x.com/heinrichhartman/status/1199736512264462341" date = 2019-11-12T00:00:00Z [[tweet]] name = "Joshua Steven‏‏" twitter_handle = "@jscarto" quote = "Can't overstate how much I enjoy @GoHugoIO. My site is relatively small, but *18 ms* to build the whole thing made template development and proofing a breeze." link = "https://x.com/jscarto/status/1039648827815485440" date = 2018-09-12T00:00:00Z [[tweet]] name = "Christophe Diericx" twitter_handle = "@spcrngr_" quote = "The more I use gohugo.io, the more I really like it. Super intuitive/powerful static site generator...great job @GoHugoIO" link = "https://x.com/spcrngr_/status/870863020905435136" date = 2017-06-03T00:00:00Z [[tweet]] name = "marcoscan" twitter_handle = "@marcoscan" quote = "Blog migrated from @WordPress to @GoHugoIO, with a little refresh of my theme, Vim shortcuts and a full featured deploy script #gohugo" link = "https://x.com/marcoscan/status/869661175960752129" date = 2017-05-30T00:00:00Z [[tweet]] name = "Sandra Kuipers" twitter_handle = "@SKuipersDesign" quote = "Who knew static site building could be fun 🤔 Learning #gohugo today" link = "https://x.com/SKuipersDesign/status/868796256902029312" date = 2017-05-28T00:00:00Z [[tweet]] name = "Netlify" twitter_handle = "@Netlify" quote = "Top Ten Static Site Generators of 2017. Congrats to the top 3: 1. @Jekyllrb 2. @GoHugoIO 3. @hexojs" link = "https://x.com/Netlify/status/868122279221362688" date = 2017-05-26T00:00:00Z [[tweet]] name = "Phil Hawksworth" twitter_handle = "@philhawksworth" quote = "I've been keen on #JAMStack for some time, but @GoHugoIO is wooing me all over again. Great fun to build with. And speeeeedy." link = "https://x.com/philhawksworth/status/866684170512326657" date = 2017-05-22T00:00:00Z [[tweet]] name = "Aras Pranckevicius" twitter_handle = "@aras_p" quote = "I've probably said it before...but having Hugo rebuild the whole website in 300ms is amazing. gohugo.io, #gohugo" link = "https://x.com/aras_p/status/861157286823288832" date = 2017-05-07T00:00:00Z [[tweet]] name = "Hans Beck" twitter_handle = "@EnrichedGamesHB" quote = "Diving deeper into @GoHugoIO. A lot of docs there, top work! But I've the impressed that #gohugo is far easier than its feels from the docs!" link = "https://x.com/EnrichedGamesHB/status/836854762440130560" date = 2017-03-01T00:00:00Z [[tweet]] name = "Alan Richardson" twitter_handle = "@eviltester" quote = "I migrated the @BlackOpsTesting .com website from docpad to Hugo last weekend. http://gohugo.io/ Super Fast HTML Generation @spf13 " link = "https://x.com/eviltester/status/553520335115808768" date = 2015-01-09T00:00:00Z [[tweet]] name = "Janez Čadež‏" twitter_handle = "@jamziSLO" quote = "Building @garazaFRI website in #hugo. This static site generator is soooo damn fast! #gohugo #golang" link = "https://x.com/jamziSLO/status/817720283977183234" date = 2017-01-07T00:00:00Z [[tweet]] name = "Execute‏‏" twitter_handle = "@executerun" quote = "Hah, #gohugo. I was working with #gohugo on #linux but now I realised how easy is to set-up it on #windows. Just need to add binary to #path!" link = "https://x.com/executerun/status/809753145270272005" date = 2016-12-16T00:00:00Z [[tweet]] name = "Baron Schwartz" twitter_handle = "@xaprb" quote = "Hugo is impressively capable. It's a static site generator by @spf13 written in #golang . Just upgraded to latest release; very powerful. " link = "https://x.com/xaprb/status/556894866488455169" date = 2015-01-18T00:00:00Z [[tweet]] name = "Dave Cottlehuber" twitter_handle = "@dch__" quote = "I just fell in love with #hugo, a static site/blog engine written by @spf13 in #golang + stellar docs" link = "https://x.com/dch__/status/460158115498176512" date = 2014-04-26T00:00:00Z [[tweet]] name = "David Caunt" twitter_handle = "@dcaunt" quote = "I had a play with Hugo and it was good, uses Markdown files for content" link = "https://x.com/dcaunt/statuses/406466996277374976" date = 2013-11-29T00:00:00Z [[tweet]] name = "David Gay" twitter_handle = "@oddshocks" quote = "Hugo is super-rad." link = "https://x.com/oddshocks/statuses/405083217893421056" date = 2013-11-25T00:00:00Z [[tweet]] name = "Diti" twitter_handle = "@DitiPengi" quote = "The dev version of Hugo is AWESOME! <3 I promise, I will try to learn go ASAP and help contribute to the project! Just too great!" link = "https://x.com/DitiPengi/status/472470974051676160" date = 2014-05-30T00:00:00Z [[tweet]] name = "Douglas Stephen " twitter_handle = "@DougStephenJr" quote = "Even as a long-time Octopress fan, I’ve gotta admit that this project Hugo looks very very cool" link = "https://x.com/DougStephenJr/statuses/364512471660249088" date = 2013-08-05T00:00:00Z [[tweet]] name = "Hugo Rodger-Brown" twitter_handle = "@hugorodgerbrown" quote = "Finally someone builds me my own static site generator" link = "https://x.com/hugorodgerbrown/statuses/364417910153818112" date = 2013-05-08T00:00:00Z [[tweet]] name = "Hugo Roy" twitter_handle = "@hugoroyd" quote = "Finally the answer to the question my parents have been asking: What does Hugo do?" link = "https://x.com/hugoroyd/status/501704796727173120" date = 2014-08-19T00:00:00Z [[tweet]] name = "Daniel Miessler" twitter_handle = "@DanielMiessler" quote = "Websites for named vulnerabilities should run on static site generator platforms like Hugo. Read-only + burst traffic = static." link = "https://x.com/DanielMiessler/status/704703841673957376" date = 2016-03-01T00:00:00Z [[tweet]] name = "Javier Segura" twitter_handle = "@jsegura" quote = "Another site generated with Hugo here! I'm getting in love with it." link = "https://x.com/jsegura/status/465978434154659841" date = 2014-05-12T00:00:00Z [[tweet]] name = "Jim Biancolo" twitter_handle = "@jimbiancolo" quote = "I’m loving the static site generator renaissance we are currently enjoying. Hugo is new, looks great, written in Go" link = "https://x.com/jimbiancolo/statuses/408678420348813314" date = 2013-05-12T00:00:00Z [[tweet]] name = "Jip J. Dekker" twitter_handle = "@jipjdekker" quote = "Building a personal website in Hugo. Works like a charm. And written in @golang!" link = "https://x.com/jipjdekker/status/413783548735152131" date = 2013-12-19T00:00:00Z [[tweet]] name = "Jose Gonzalvo" twitter_handle = "@jgonzalvo" quote = "Checking out Hugo; Loving it so far. Like Jekyll but not so blog-oriented and written in go" link = "https://x.com/jgonzalvo/statuses/408177855819173888" date = 2013-12-04T00:00:00Z [[tweet]] name = "Josh Matz" twitter_handle = "@joshmatz" quote = "A static site generator without the long build times? Yes, please!" link = "https://x.com/joshmatz/statuses/364437436870696960" date = 2013-08-05T00:00:00Z [[tweet]] name = "Kieran Healy" twitter_handle = "@kjhealy" quote = "OK, so in today's speed battle of static site generators, @spf13's hugo is kicking everyone's ass, by miles." link = "https://x.com/kjhealy/status/437349384809115648" date = 2014-02-22T00:00:00Z [[tweet]] name = "Ludovic Chabant" twitter_handle = "@ludovicchabant" quote = "Good work on Hugo, I’m impressed with the speed!" link = "https://x.com/ludovicchabant/statuses/408806199602053120" date = 2013-12-06T00:00:00Z [[tweet]] name = "Luke Holder" twitter_handle = "@lukeholder" quote = "this is AWESOME. a single little executable and so fast." link = "https://x.com/lukeholder/status/430352287936946176" date = 2014-02-03T00:00:00Z [[tweet]] name = "Markus Eliasson" twitter_handle = "@markuseliasson" quote = "Hugo is fast, dead simple to setup and well documented" link = "https://x.com/markuseliasson/status/501594865877008384" date = 2014-08-19T00:00:00Z [[tweet]] name = "mercime" twitter_handle = "@mercime_one" quote = "Hugo: Makes the Web Fun Again" link = "https://x.com/mercime_one/status/500547145087205377" date = 2014-08-16T00:00:00Z [[tweet]] name = "Michael Whatcott" twitter_handle = "@mdwhatcott" quote = "One more satisfied #Hugo blogger. Thanks @spf13 and friends!" link = "https://x.com/mdwhatcott/status/469980686531571712" date = 2014-05-23T00:00:00Z [[tweet]] name = "Nathan Toups" twitter_handle = "@rojoroboto" quote = "I love Hugo! My site is generated with it now http://rjrbt.io" link = "https://x.com/rojoroboto/status/423439915620106242" date = 2014-01-15T00:00:00Z [[tweet]] name = "Ruben Solvang" twitter_handle = "@messo85" quote = "#Hugo is the new @jekyllrb / @middlemanapp! Faster, easier and runs everywhere." link = "https://x.com/messo85/status/472825062027182081" date = 2014-05-31T00:00:00Z [[tweet]] name = "Ryan Martinsen" twitter_handle = "@popthestack" quote = "Also, I re-launched my blog (it looks the same as before) using Hugo, a *fast* static engine. Very happy with it. gohugo.io" link = "https://x.com/popthestack/status/549972754125307904" date = 2014-12-30T00:00:00Z [[tweet]] name = "The Lone Cuber" twitter_handle = "@TheLoneCuber" quote = "Jekyll is dead to me these days though... long live Hugo! Hugo is *by far* the best in its field. Thanks for making it happen." link = "https://x.com/TheLoneCuber/status/495716684456398848" date = 2014-08-02T00:00:00Z [[tweet]] name = "The Lone Cuber" twitter_handle = "@TheLoneCuber" quote = "Finally, a publishing platform that's a joy to use. #NoMoreBarriers" link = "https://x.com/TheLoneCuber/status/495731334711488512" date = 2014-08-02T00:00:00Z [[tweet]] name = "WorkHTML" twitter_handle = "@workhtml" quote = " #Hugo A very good alternative for #wordpress !!! A fast and modern static website engine gohugo.io " link = "https://x.com/workhtml/status/563064361301053440" date = 2015-02-04T00:00:00Z gohugoio-hugo-6abdaca/docs/data/keywords.yaml000066400000000000000000000007071507671574500215360ustar00rootroot00000000000000# We use the front matter keywords field to determine related content. To # ensure consistency, during site build we validate each keyword against the # entries in data/keywords.yaml. # As of March 5, 2025, this feature is experimental, pending usability # assessment. We anticipate that the number of additions to data/keywords.yaml # will decrease over time, though the initial implementation will require some # effort. - menu - resource - highlight gohugoio-hugo-6abdaca/docs/data/page_filters.yaml000066400000000000000000000053611507671574500223340ustar00rootroot00000000000000# Do not delete. Required for layouts/_shortcodes/list-pages-in-section.html. # # When calling the list-pages-in-section shortcode, you can specify a page # filter, and whether the pages in the filter should be included or excluded # from the list. # # For example: # # {{% list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude %}} functions_fmt_logging: - /functions/fmt/errorf - /functions/fmt/erroridf - /functions/fmt/warnf - /functions/fmt/warnidf functions_images_no_filters: - /functions/images/filter - /functions/images/config methods_site_multilingual: - /methods/site/ismultilingual - /methods/site/language - /methods/site/languageprefix - /methods/site/languages methods_site_page_collections: - /methods/site/allpages - /methods/site/pages - /methods/site/regularpages - /methods/site/sections methods_page_dates: - /methods/page/date - /methods/page/expirydate - /methods/page/lastmod - /methods/page/publishdate methods_page_menu: - /methods/page/hasmenucurrent - /methods/page/ismenucurrent methods_page_multilingual: - /methods/page/alltranslations - /methods/page/istranslated - /methods/page/language - /methods/page/translationkey - /methods/page/translations methods_page_page_collections: - /methods/page/pages - /methods/page/regularpages - /methods/page/regularpagesrecursive - /methods/page/sections methods_page_parameters: - /methods/page/param - /methods/page/params methods_page_sections: - /methods/page/ancestors - /methods/page/currentsection - /methods/page/firstsection - /methods/page/insection - /methods/page/isancestor - /methods/page/isdescendant - /methods/page/parent - /methods/page/sections - /methods/page/section methods_pages_sort: - /methods/pages/bydate - /methods/pages/byexpirydate - /methods/pages/bylanguage - /methods/pages/bylastmod - /methods/pages/bylength - /methods/pages/bylinktitle - /methods/pages/byparam - /methods/pages/bypublishdate - /methods/pages/bytitle - /methods/pages/byweight - /methods/pages/reverse methods_pages_group: - /methods/pages/groupby - /methods/pages/groupbydate - /methods/pages/groupbyexpirydate - /methods/pages/groupbylastmod - /methods/pages/groupbyparam - /methods/pages/groupbyparamdate - /methods/pages/groupbypublishdate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/reverse methods_pages_navigation: - /methods/pages/next - /methods/pages/prev methods_page_navigation: - /methods/page/next - /methods/page/nextinsection - /methods/page/prev - /methods/page/previnsection gohugoio-hugo-6abdaca/docs/data/sponsors.toml000066400000000000000000000010101507671574500215520ustar00rootroot00000000000000[[banners]] name = "Linode" link = "https://www.linode.com/" logo = "images/sponsors/linode-logo.svg" utm_campaign = "hugosponsor" bgcolor = "#ffffff" [[banners]] name = "GoLand" title = "The complete IDE crafted for professional Go developers." no_query_params = true link = "https://www.jetbrains.com/go/?utm_source=OSS&utm_medium=referral&utm_campaign=hugo" logo = "images/sponsors/goland.svg" bgcolor = "#f4f4f4" gohugoio-hugo-6abdaca/docs/go.mod000066400000000000000000000000571507671574500171760ustar00rootroot00000000000000module github.com/gohugoio/hugoDocs go 1.22.0 gohugoio-hugo-6abdaca/docs/go.sum000066400000000000000000000003611507671574500172210ustar00rootroot00000000000000github.com/gohugoio/gohugoioTheme v0.0.0-20250116152525-2d382cae7743 h1:gjoqq8+RnGwpuU/LQVYGGR/LsDplrfUjOabWwoROYsM= github.com/gohugoio/gohugoioTheme v0.0.0-20250116152525-2d382cae7743/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM= gohugoio-hugo-6abdaca/docs/hugo.toml000066400000000000000000000112001507671574500177170ustar00rootroot00000000000000baseURL = "https://gohugo.io/" defaultContentLanguage = "en" enableEmoji = true pluralizeListTitles = false timeZone = "Europe/Oslo" title = "Hugo" # We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below). disableAliases = true # See https://github.com/gohugoio/hugo/issues/13806. ignoreLogs = ['warning-frontmatter-params-overrides'] [build] [build.buildStats] disableIDs = true enable = true [[build.cachebusters]] source = "assets/notwatching/hugo_stats\\.json" target = "css" [[build.cachebusters]] source = "(postcss|tailwind)\\.config\\.js" target = "css" [caches] [caches.images] dir = ":cacheDir/images" maxAge = "1440h" [caches.getresource] dir = ':cacheDir/:project' maxAge = "1h" [[cascade]] [cascade.params] hide_in_this_section = true show_publish_date = true [cascade.target] kind = 'page' path = '{/news/**}' [[cascade]] [cascade.params] searchable = true [cascade.target] kind = 'page' [[cascade]] [cascade.params] searchable = false [cascade.target] kind = '{home,section,taxonomy,term}' [frontmatter] date = ['date'] # do not add publishdate; it will affect page sorting expiryDate = ['expirydate'] lastmod = [':git', 'lastmod', 'publishdate', 'date'] publishDate = ['publishdate', 'date'] [languages] [languages.en] languageCode = "en-US" languageName = "English" weight = 1 [markup] [markup.goldmark] [markup.goldmark.extensions] [markup.goldmark.extensions.typographer] disable = false [markup.goldmark.extensions.passthrough] enable = true [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] inline = [['\(', '\)']] [markup.goldmark.parser] autoDefinitionTermID = true [markup.goldmark.parser.attribute] block = true [markup.highlight] lineNumbersInTable = false noClasses = false style = 'solarized-dark' wrapperClass = 'highlight not-prose' [mediaTypes] [mediaTypes."text/netlify"] delimiter = "" [module] [module.hugoVersion] min = "0.144.0" [[module.mounts]] source = "assets" target = "assets" [[module.mounts]] lang = 'en' source = 'content/en' target = 'content' [[module.mounts]] disableWatch = true source = "hugo_stats.json" target = "assets/notwatching/hugo_stats.json" [outputFormats] [outputFormats.redir] baseName = "_redirects" isPlainText = true mediatype = "text/netlify" [outputFormats.headers] baseName = "_headers" isPlainText = true mediatype = "text/netlify" notAlternative = true [outputs] home = ["html", "rss", "redir", "headers"] page = ["html"] section = ["html"] taxonomy = ["html"] term = ["html"] [params] description = "The world’s fastest framework for building websites" ghrepo = "https://github.com/gohugoio/hugoDocs/" [params.render_hooks.link] errorLevel = 'warning' # ignore (default), warning, or error (fails the build) [params.social.mastodon] url = "https://fosstodon.org/@gohugoio" [related] includeNewer = true threshold = 80 toLower = true [[related.indices]] name = 'keywords' weight = 1 [security] [security.funcs] getenv = ['^HUGO_', '^REPOSITORY_URL$', '^BRANCH$'] [server] [[server.headers]] for = "/*" [server.headers.values] X-Frame-Options = "DENY" X-XSS-Protection = "1; mode=block" X-Content-Type-Options = "nosniff" Referrer-Policy = "no-referrer" [[server.headers]] for = "/**.{css,js}" [services] [services.googleAnalytics] ID = 'G-MBZGKNMDWC' [taxonomies] category = 'categories' ######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES ######## [menus] [[menus.global]] identifier = 'news' name = 'News' pageRef = '/news/' weight = 1 [[menus.global]] identifier = 'docs' name = 'Docs' url = '/documentation/' weight = 5 [[menus.global]] identifier = 'themes' name = 'Themes' url = 'https://themes.gohugo.io/' weight = 10 [[menus.global]] identifier = 'community' name = 'Community' post = 'external' url = 'https://discourse.gohugo.io/' weight = 150 [[menus.global]] identifier = 'github' name = 'GitHub' post = 'external' url = 'https://github.com/gohugoio/hugo' weight = 200 gohugoio-hugo-6abdaca/docs/hugo.work000066400000000000000000000000221507671574500177260ustar00rootroot00000000000000go 1.22.0 use . gohugoio-hugo-6abdaca/docs/hugoreleaser.yaml000066400000000000000000000012451507671574500214410ustar00rootroot00000000000000project: hugoDocs release_settings: name: ${HUGORELEASER_TAG} type: github repository: hugoDocs repository_owner: gohugoio draft: true prerelease: false release_notes_settings: generate: true generate_on_host: false short_threshold: 10 short_title: What's Changed groups: - regexp: snapcraft:|Merge commit|Merge branch|netlify:|release:|Squashed ignore: true - title: Typo fixes regexp: typo ordinal: 20 - title: Dependency Updates regexp: deps ordinal: 30 - title: Improvements regexp: .* ordinal: 10 releases: - paths: - archives/** path: myrelease gohugoio-hugo-6abdaca/docs/layouts/000077500000000000000000000000001507671574500175665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/404.html000066400000000000000000000015111507671574500207610ustar00rootroot00000000000000{{ define "main" }}

        Page not found gopher

        {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_markup/000077500000000000000000000000001507671574500212245ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_markup/render-blockquote.html000066400000000000000000000023061507671574500255400ustar00rootroot00000000000000{{- if eq .Type "alert" }} {{- $alerts := dict "caution" (dict "color" "red" "icon" "exclamation-triangle") "important" (dict "color" "blue" "icon" "exclamation-circle") "note" (dict "color" "blue" "icon" "information-circle") "tip" (dict "color" "green" "icon" "light-bulb") "warning" (dict "color" "orange" "icon" "exclamation-triangle") }} {{- $alertTypes := slice }} {{- range $k, $_ := $alerts }} {{- $alertTypes = $alertTypes | append $k }} {{- end }} {{- $alertTypes = $alertTypes | sort }} {{- $alertType := strings.ToLower .AlertType }} {{- if in $alertTypes $alertType }} {{- partial "layouts/blocks/alert.html" (dict "color" (or ((index $alerts $alertType).color) "blue") "icon" (or ((index $alerts $alertType).icon) "information-circle") "text" .Text "title" .AlertTitle "class" .Attributes.class ) }} {{- else }} {{- errorf `Invalid blockquote alert type. Received %s. Expected one of %s (case-insensitive). See %s.` .AlertType (delimit $alertTypes ", " ", or ") .Page.String }} {{- end }} {{- else }}
        {{ .Text }}
        {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_markup/render-codeblock.html000066400000000000000000000054661507671574500253270ustar00rootroot00000000000000{{/* prettier-ignore-start */}} {{/* Renders a highlighted code block using the given options and attributes. In addition to the options available to the transform.Highlight function, you may also specify the following parameters: @param {bool} [copy=false] Whether to display a copy-to-clipboard button. @param {string} [file] The file name to display above the rendered code. @param {bool} [details=false] Whether to wrap the highlighted code block within a details element. @param {bool} [open=false] Whether to initially display the content of the details element. @param {string} [summary=Details] The content of the details summary element rendered from Markdown to HTML. @returns {template.HTML} @examples ```go fmt.Println("Hello world!") ``` ```go {linenos=true file="layouts/index.html" copy=true} fmt.Println("Hello world!") ``` */}} {{/* prettier-ignore-end */}} {{- $copy := false }} {{- $file := or .Attributes.file "" }} {{- $details := false }} {{- $open := "" }} {{- $summary := or .Attributes.summary "Details" | .Page.RenderString }} {{- $ext := strings.TrimPrefix "." (path.Ext $file) }} {{- $lang := or .Type $ext "text" }} {{- if in (slice "html" "gotmpl") $lang }} {{- $lang = "go-html-template" }} {{- end }} {{- if eq $lang "md" }} {{- $lang = "text" }} {{- end }} {{- with .Attributes.copy }} {{- if in (slice true "true" 1) . }} {{- $copy = true }} {{- else if in (slice false "false" 0) . }} {{- $copy = false }} {{- end }} {{- end }} {{- with .Attributes.details }} {{- if in (slice true "true" 1) . }} {{- $details = true }} {{- else if in (slice false "false" 0) . }} {{- $details = false }} {{- end }} {{- end }} {{- with .Attributes.open }} {{- if in (slice true "true" 1) . }} {{- $open = "open" }} {{- else if in (slice false "false" 0) . }} {{- $open = "" }} {{- end }} {{- end }} {{- if $details }}
        {{ $summary }} {{- end }}
        {{- $fileSelectClass := "select-none" }} {{- if $copy }} {{- $fileSelectClass = "select-text" }} {{- end }} {{- with $file }}
        {{ . }}
        {{- end }}
        {{- transform.Highlight (strings.TrimSpace .Inner) $lang .Options }}
        {{- if $details }}
        {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_markup/render-link.html000066400000000000000000000275521507671574500243370ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Last modified: 2025-01-19T14:44:56-08:00 */}} {{- /* Copyright 2025 Veriphor LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */}} {{- /* This render hook resolves internal destinations by looking for a matching: 1. Content page 2. Page resource (a file in the current page bundle) 3. Section resource (a file in the current section) 4. Global resource (a file in the assets directory) It skips the section resource lookup if the current page is a leaf bundle. External destinations are not modified. You must place global resources in the assets directory. If you have placed your resources in the static directory, and you are unable or unwilling to move them, you must mount the static directory to the assets directory by including both of these entries in your site configuration: [[module.mounts]] source = 'assets' target = 'assets' [[module.mounts]] source = 'static' target = 'assets' By default, if this render hook is unable to resolve a destination, including a fragment if present, it passes the destination through without modification. To emit a warning or error, set the error level in your site configuration: [params.render_hooks.link] errorLevel = 'warning' # ignore (default), warning, or error (fails the build) When you set the error level to warning, and you are in a development environment, you can visually highlight broken internal links: [params.render_hooks.link] errorLevel = 'warning' # ignore (default), warning, or error (fails the build) highlightBroken = true # true or false (default) This will add a "broken" class to anchor elements with invalid src attributes. Add a rule to your CSS targeting the broken links: a.broken { background: #ff0; border: 2px solid #f00; padding: 0.1em 0.2em; } This render hook may be unable to resolve destinations created with the ref and relref shortcodes. Unless you set the error level to ignore you should not use either of these shortcodes in conjunction with this render hook. @context {string} Destination The link destination. @context {page} Page A reference to the page containing the link. @context {string} PlainText The link description as plain text. @context {string} Text The link description. @context {string} Title The link title. @returns {template.html} */ -}} {{/* prettier-ignore-end */ -}} {{- /* Initialize. */}} {{- $renderHookName := "link" }} {{- /* Verify minimum required version. */}} {{- $minHugoVersion := "0.141.0" }} {{- if lt hugo.Version $minHugoVersion }} {{- errorf "The %q render hook requires Hugo v%s or later." $renderHookName $minHugoVersion }} {{- end }} {{- /* Error level when unable to resolve destination: ignore, warning, or error. */}} {{- $errorLevel := or site.Params.render_hooks.link.errorLevel "ignore" | lower }} {{- /* If true, adds "broken" class to broken links. Applicable in development environment when errorLevel is warning. */}} {{- $highlightBrokenLinks := or site.Params.render_hooks.link.highlightBroken false }} {{- /* Validate error level. */}} {{- if not (in (slice "ignore" "warning" "error") $errorLevel) }} {{- errorf "The %q render hook is misconfigured. The errorLevel %q is invalid. Please check your site configuration." $renderHookName $errorLevel }} {{- end }} {{- /* Determine content path for warning and error messages. */}} {{- $contentPath := .Page.String }} {{- /* Parse destination. */}} {{- $u := urls.Parse .Destination }} {{- /* Set common message. */}} {{- $msg := printf "The %q render hook was unable to resolve the destination %q in %s" $renderHookName $u.String $contentPath }} {{- /* Set attributes for anchor element. */}} {{- $attrs := dict "href" $u.String }} {{- if eq $u.String "g" }} {{- /* Destination is a glossary term. */}} {{- $ctx := dict "contentPath" $contentPath "errorLevel" $errorLevel "renderHookName" $renderHookName "text" .Text }} {{- $attrs = partial "inline/h-rh-l/get-glossary-link-attributes.html" $ctx }} {{- else if $u.IsAbs }} {{- /* Destination is a remote resource. */}} {{- $attrs = merge $attrs (dict "rel" "external") }} {{- else }} {{- with $u.Path }} {{- with $p := or ($.PageInner.GetPage .) ($.PageInner.GetPage (strings.TrimRight "/" .)) }} {{- /* Destination is a page. */}} {{- $href := .RelPermalink }} {{- with $u.RawQuery }} {{- $href = printf "%s?%s" $href . }} {{- end }} {{- with $u.Fragment }} {{- $ctx := dict "contentPath" $contentPath "errorLevel" $errorLevel "page" $p "parsedURL" $u "renderHookName" $renderHookName }} {{- partial "inline/h-rh-l/validate-fragment.html" $ctx }} {{- $href = printf "%s#%s" $href . }} {{- end }} {{- $attrs = dict "href" $href }} {{- else with $.PageInner.Resources.Get $u.Path }} {{- /* Destination is a page resource; drop query and fragment. */}} {{- $attrs = dict "href" .RelPermalink }} {{- else with (and (ne $.Page.BundleType "leaf") ($.Page.CurrentSection.Resources.Get $u.Path)) }} {{- /* Destination is a section resource, and current page is not a leaf bundle. */}} {{- $attrs = dict "href" .RelPermalink }} {{- else with resources.Get $u.Path }} {{- /* Destination is a global resource; drop query and fragment. */}} {{- $attrs = dict "href" .RelPermalink }} {{- else }} {{- if eq $errorLevel "warning" }} {{- warnf $msg }} {{- if and $highlightBrokenLinks hugo.IsDevelopment }} {{- $attrs = merge $attrs (dict "class" "broken") }} {{- end }} {{- else if eq $errorLevel "error" }} {{- errorf $msg }} {{- end }} {{- end }} {{- else }} {{- with $u.Fragment }} {{- /* Destination is on the same page; prepend relative permalink. */}} {{- $ctx := dict "contentPath" $contentPath "errorLevel" $errorLevel "page" $.Page "parsedURL" $u "renderHookName" $renderHookName }} {{- partial "inline/h-rh-l/validate-fragment.html" $ctx }} {{- $attrs = dict "href" (printf "%s#%s" $.Page.RelPermalink .) }} {{- else }} {{- if eq $errorLevel "warning" }} {{- warnf $msg }} {{- if and $highlightBrokenLinks hugo.IsDevelopment }} {{- $attrs = merge $attrs (dict "class" "broken") }} {{- end }} {{- else if eq $errorLevel "error" }} {{- errorf $msg }} {{- end }} {{- end }} {{- end }} {{- end }} {{- /* Render anchor element. */ -}} {{ .Text }} {{- define "_partials/inline/h-rh-l/validate-fragment.html" }} {{- /* Validates the fragment portion of a link destination. @context {string} contentPath The page containing the link. @context {string} errorLevel The error level when unable to resolve destination; ignore (default), warning, or error. @context {page} page The page corresponding to the link destination @context {struct} parsedURL The link destination parsed by urls.Parse. @context {string} renderHookName The name of the render hook. */}} {{- /* Initialize. */}} {{- $contentPath := .contentPath }} {{- $errorLevel := .errorLevel }} {{- $p := .page }} {{- $u := .parsedURL }} {{- $renderHookName := .renderHookName }} {{- /* Validate. */}} {{- with $u.Fragment }} {{- if $p.Fragments.Identifiers.Contains . }} {{- if gt ($p.Fragments.Identifiers.Count .) 1 }} {{- $msg := printf "The %q render hook detected duplicate heading IDs %q in %s" $renderHookName . $contentPath }} {{- if eq $errorLevel "warning" }} {{- warnf $msg }} {{- else if eq $errorLevel "error" }} {{- errorf $msg }} {{- end }} {{- end }} {{- else }} {{- /* Determine target path for warning and error message. */}} {{- $targetPath := "" }} {{- with $p.File }} {{- $targetPath = .Path }} {{- else }} {{- $targetPath = .Path }} {{- end }} {{- /* Set common message. */}} {{- $msg := printf "The %q render hook was unable to find heading ID %q in %s. See %s" $renderHookName . $targetPath $contentPath }} {{- if eq $targetPath $contentPath }} {{- $msg = printf "The %q render hook was unable to find heading ID %q in %s" $renderHookName . $targetPath }} {{- end }} {{- /* Throw warning or error. */}} {{- if eq $errorLevel "warning" }} {{- warnf $msg }} {{- else if eq $errorLevel "error" }} {{- errorf $msg }} {{- end }} {{- end }} {{- end }} {{- end }} {{- define "_partials/inline/h-rh-l/get-glossary-link-attributes.html" }} {{- /* Returns the anchor element attributes for a link to the given glossary term. It first checks for the existence of a glossary page for the given term. If no page is found, it then checks for a glossary page for the singular form of the term. If neither page exists it throws a warning or error dependent on the errorLevel setting The returned href attribute does not point to the glossary term page. Instead, via its fragment, it points to an entry on the glossary page. @context {string} contentPath The page containing the link. @context {string} errorLevel The error level when unable to resolve destination; ignore (default), warning, or error. @context {string} renderHookName The name of the render hook. @context {string} text The link text. */}} {{- /* Get context.. */}} {{- $contentPath := .contentPath }} {{- $errorLevel := .errorLevel }} {{- $renderHookName := .renderHookName }} {{- $text := .text | transform.Plainify | strings.ToLower }} {{- /* Initialize. */}} {{- $glossaryPath := "/quick-reference/glossary" }} {{- $termGiven := $text }} {{- $termActual := "" }} {{- $termSingular := inflect.Singularize $termGiven }} {{- /* Verify that the glossary page exists. */}} {{- $glossaryPage := site.GetPage $glossaryPath }} {{- if not $glossaryPage }} {{- errorf "The %q render hook was unable to find %s: see %s" $renderHookName $glossaryPath $contentPath }} {{- end }} {{- /* There's a better way to handle this, but it works for now. */}} {{- $cheating := dict "chaining" "chain" "localize" "localization" "localized" "localization" "paginating" "paginate" "walking" "walk" "ci/cd" "cicd" }} {{- /* Verify that a glossary term page exists for the given term. */}} {{- if site.GetPage (urls.JoinPath $glossaryPath ($termGiven | urlize)) }} {{- $termActual = $termGiven }} {{- else if site.GetPage (urls.JoinPath $glossaryPath ($termSingular | urlize)) }} {{- $termActual = $termSingular }} {{- else }} {{- $termToTest := index $cheating $termGiven }} {{- if site.GetPage (urls.JoinPath $glossaryPath ($termToTest | urlize)) }} {{- $termActual = $termToTest }} {{- end }} {{- end }} {{- if not $termActual }} {{- errorf "The %q render hook was unable to find a glossary page for either the singular or plural form of the term %q: see %s" $renderHookName $termGiven $contentPath }} {{- end }} {{- /* Create the href attribute. */}} {{- $href := "" }} {{- if $termActual }} {{- $href = fmt.Printf "%s#%s" $glossaryPage.RelPermalink (anchorize $termActual) }} {{- end }} {{- return (dict "href" $href) }} {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/_markup/render-passthrough.html000066400000000000000000000006501507671574500257370ustar00rootroot00000000000000{{- $opts := dict "output" "htmlAndMathml" "displayMode" (eq .Type "block") }} {{- with try (transform.ToMath .Inner $opts) }} {{- with .Err }} {{ errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }} {{- else }} {{- .Value }} {{- $.Page.Store.Set "hasMath" true }} {{- end }} {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/_markup/render-table.html000066400000000000000000000013161507671574500244570ustar00rootroot00000000000000
        {{- range .THead }} {{- range . }} {{- end }} {{- end }} {{- range .TBody }} {{- range . }} {{- end }} {{- end }}
        {{- .Text -}}
        {{- .Text -}}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/000077500000000000000000000000001507671574500215445ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/docs/000077500000000000000000000000001507671574500224745ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/docs/functions-aliases.html000066400000000000000000000005331507671574500270120ustar00rootroot00000000000000{{- with .Params.functions_and_methods.aliases }} {{- $label := "Alias" }} {{- if gt (len .) 1 }} {{- $label = "Aliases" }} {{- end }}

        {{ $label }}

        {{- range . }}
        {{- . -}}
        {{- end }} {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/_partials/docs/functions-return-type.html000066400000000000000000000003261507671574500276670ustar00rootroot00000000000000{{- with .Params.functions_and_methods.returnType }}

        Returns

        {{- . -}}
        {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/_partials/docs/functions-signatures.html000066400000000000000000000006361507671574500275610ustar00rootroot00000000000000{{- with .Params.functions_and_methods.signatures }}

        Syntax

        {{- range . }} {{- $signature := . }} {{- if $.Params.function.returnType }} {{- $signature = printf "%s ⟼ %s" . $.Params.function.returnType }} {{- end }}
        {{- $signature -}}
        {{- end }} {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/000077500000000000000000000000001507671574500232065ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/debug/000077500000000000000000000000001507671574500242745ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/debug/list-item-metadata.html000066400000000000000000000010731507671574500306500ustar00rootroot00000000000000
        weight: {{ .Weight }}
        keywords: {{ delimit (or .Keywords "") ", " }}
        categories: {{ delimit (or .Params.categories "") ", " }}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/funcs/000077500000000000000000000000001507671574500243245ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/funcs/color-from-string.html000066400000000000000000000013541507671574500306000ustar00rootroot00000000000000{{ $colors := slice "slate" "green" "cyan" "blue" }} {{ with .single }} {{ $colors = slice . }} {{ end }} {{ $shades := slice 300 400 500 }} {{ if not .dark }} {{ $shades = slice 700 800 }} {{ end }} {{ $hash := (hash.FNV32a .text) }} {{ $i := mod $hash (len $colors) }} {{ $j := mod $hash (len $shades) }} {{ $color := index $colors $i }} {{ $shade1 := index $shades $j }} {{ $shade2 := 0 }} {{ $shade3 := 0 }} {{ if gt $shade1 500 }} {{ $shade2 = math.Min (sub $shade1 500) 100 | int }} {{ $shade3 = sub $shade1 100 }} {{ else }} {{ $shade2 = math.Max (add $shade1 500) 700 | int }} {{ $shade3 = add $shade1 200 }} {{ end }} {{ $res := dict "color" $color "shade1" $shade1 "shade2" $shade2 "shade3" $shade3 }} {{ return $res }} gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/funcs/get-github-info.html000066400000000000000000000016751507671574500302130ustar00rootroot00000000000000{{ $url := "https://api.github.com/repos/gohugoio/hugo" }} {{ $cacheKey := print $url (now.Format "2006-01-02") }} {{ $headers := dict }} {{ with os.Getenv "HUGO_GH_TOKEN" }} {{ $headers = dict "Authorization" (printf "Bearer %s" .) }} {{ end }} {{ $opts := dict "headers" $headers "key" $cacheKey }} {{ $githubRepoInfo := dict }} {{ with try (resources.GetRemote $url $opts) }} {{ with .Err }} {{ warnf "Failed to get GitHub repo info: %s" . }} {{ else with (.Value | transform.Unmarshal) }} {{ $githubRepoInfo = dict "html_url" .html_url "stargazers_url" .stargazers_url "watchers_count" .watchers_count "stargazers_count" .stargazers_count "forks_count" .forks_count "contributors_url" .contributors_url "releases_url" .releases_url "forks_count" .forks_count }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} {{ return $githubRepoInfo }} gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/funcs/get-remote-data.html000066400000000000000000000012301507671574500301650ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{/* Parses the serialized data from the given URL and returns a map or an array. Supports CSV, JSON, TOML, YAML, and XML. @param {string} . The URL from which to retrieve the serialized data. @returns {any} @example {{ partial "get-remote-data.html" "https://example.org/foo.json" }} */}} {{/* prettier-ignore-end */ -}} {{ $url := . }} {{ $data := dict }} {{ with try (resources.GetRemote $url) }} {{ with .Err }} {{ errorf "%s" . }} {{ else with .Value }} {{ $data = .Content | transform.Unmarshal }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ end }} {{ return $data }} gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/gtag.html000066400000000000000000000015251507671574500250210ustar00rootroot00000000000000{{ with site.Config.Services.GoogleAnalytics.ID }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/linkcss.html000066400000000000000000000012531507671574500255430ustar00rootroot00000000000000{{ $r := .r }} {{ $attr := .attributes | default dict }} {{ if hugo.IsDevelopment }} {{ else }} {{ with $r | minify | fingerprint }} {{ end }} {{ end }} {{ define "render-attributes" }} {{- range $k, $v := . -}} {{- if $v -}} {{- printf ` %s=%q` $k $v | safeHTMLAttr -}} {{- else -}} {{- printf ` %s` $k | safeHTMLAttr -}} {{- end -}} {{- end -}} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/linkjs.html000066400000000000000000000006401507671574500253660ustar00rootroot00000000000000{{ $r := .r }} {{ $attr := .attributes | default dict }} {{ if hugo.IsDevelopment }} {{ else }} {{ with $r | fingerprint }} {{ end }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/picture.html000066400000000000000000000017011507671574500255460ustar00rootroot00000000000000{{ $image := .image }} {{ $width := .width | default 1000 }} {{ $width1x := div $width 2 }} {{ $imageWebp := $image.Resize (printf "%dx webp" $width) }} {{ $image1x := $image.Resize (printf "%dx" $width1x) }} {{ $image1xWebp := $image.Resize (printf "%dx webp" $width1x) }} {{ $class := .class | default "h-64 tablet:h-96 lg:h-full w-full object-cover lg:absolute" }} {{ $loading := .loading | default "eager" }} gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/validation/000077500000000000000000000000001507671574500253405ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/helpers/validation/validate-keywords.html000066400000000000000000000015661507671574500316740ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* We use the front matter keywords field to determine related content. To ensure consistency, during site build we validate each keyword against the entries in data/keywords.yaml. As of March 5, 2025, this feature is experimental, pending usability assessment. We anticipate that the number of additions to data/keywords.yaml will decrease over time, though the initial implementation will require some effort. */}} {{/* prettier-ignore-end */ -}} {{- $t := debug.Timer "validateKeywords" }} {{- $allowedKeywords := collections.Apply site.Data.keywords "strings.ToLower" "." }} {{- range $p := site.Pages }} {{- range .Params.keywords }} {{- if not (in $allowedKeywords (lower .)) }} {{- warnf "The word or phrase %q is not in the keywords data file. See %s." . $p.Page.String }} {{- end }} {{- end }} {{- end }} {{- $t.Stop }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/000077500000000000000000000000001507671574500232445ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/blocks/000077500000000000000000000000001507671574500245215ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/blocks/alert.html000066400000000000000000000014421507671574500265170ustar00rootroot00000000000000{{- $title := .title | default "" }} {{- $color := .color | default "yellow" }} {{- $icon := .icon | default "exclamation-triangle" }} {{- $text := .text | default "" }} {{- $class := .class | default "mt-6 mb-8" }}
        {{- with $title }}

        {{ . }}

        {{- end }}
        {{ $text }}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/blocks/modal.html000066400000000000000000000020421507671574500265010ustar00rootroot00000000000000
        {{ .modal_button }}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/breadcrumbs.html000066400000000000000000000026441507671574500264310ustar00rootroot00000000000000{{ $documentation := site.GetPage "/documentation" }} {{ define "breadcrumbs-arrow" }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/date.html000066400000000000000000000003151507671574500250460ustar00rootroot00000000000000{{ $humanDate := time.Format "January 2, 2006" . }} {{ $machineDate := time.Format "2006-01-02T15:04:05-07:00" . }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/docsheader.html000066400000000000000000000004021507671574500262270ustar00rootroot00000000000000
        {{ partial "layouts/breadcrumbs.html" . }} {{ if and .IsPage (not (eq .Layout "list")) }}

        {{ .Title }}

        {{ end }}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/explorer.html000066400000000000000000000027661507671574500260050ustar00rootroot00000000000000{{/* This is currently not in use, but kept in case I change my mind. */}} {{ define "docs-explorer-section" }} {{ $p := .p }} {{ $level := .level }} {{ $pleft := $level }} {{ if gt $level 0 }} {{ $pleft = add $level 1 }} {{ end }} {{ $pl := printf "pl-%d" $pleft }} {{ $pages := $p.Sections }} {{ range $pages }} {{ $hasChildren := gt (len .Pages) 0 }} {{ $class := cond (eq $level 0) "text-primary hover:text-primary/70" "text-gray-900 dark:text-gray-400 hover:dark:text-gray-300" }}
      8. {{ .LinkTitle }} {{ if $hasChildren }}
          {{ template "docs-explorer-section" (dict "p" . "level" (add $level 1)) }}
        {{ end }}
      9. {{ end }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/footer.html000066400000000000000000000044731507671574500254400ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/head/000077500000000000000000000000001507671574500241455ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/head/head-js.html000066400000000000000000000010601507671574500263430ustar00rootroot00000000000000{{ $githubInfo := partialCached "helpers/funcs/get-github-info.html" . "-" }} {{ $opts := dict "minify" true }} {{ with resources.Get "js/head-early.js" | js.Build $opts }} {{ partial "helpers/linkjs.html" (dict "r" . "attributes" (dict "async" "")) }} {{ end }} {{ with resources.Get "js/main.js" | js.Build $opts }} {{ partial "helpers/linkjs.html" (dict "r" . "attributes" (dict "defer" "")) }} {{ end }} {{ with resources.Get "js/turbo.js" | js.Build $opts }} {{ partial "helpers/linkjs.html" (dict "r" . "attributes" (dict "defer" "")) }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/head/head.html000066400000000000000000000022201507671574500257300ustar00rootroot00000000000000 {{ hugo.Generator }} {{ if hugo.IsProduction }} {{ else }} {{ end }} {{ with .Title }}{{ . }} |{{ end }} {{ .Site.Title }} {{ range .AlternativeOutputFormats -}} {{ end -}} {{ partial "opengraph/opengraph.html" . }} {{ partial "schema.html" . }} {{ partial "twitter_cards.html" . }} {{ if hugo.IsProduction }} {{ partial "helpers/gtag.html" . }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/header/000077500000000000000000000000001507671574500244745ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/header/githubstars.html000066400000000000000000000013721507671574500277240ustar00rootroot00000000000000{{ with partialCached "helpers/funcs/get-github-info.html" . "-" }} {{ printf "%0.1fk" (div .stargazers_count 1000) }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/header/header.html000066400000000000000000000037721507671574500266230ustar00rootroot00000000000000
        {{ with site.Home }} HUGO {{ end }}
        {{ range .Site.Menus.global }} {{ .Name }} {{ end }}
        {{/* Search. */}} {{ partial "layouts/search/input.html" . }}
        {{/* QR code. */}} {{ partial "layouts/header/qr.html" . }} {{/* Theme selector. */}} {{ partial "layouts/header/theme.html" . }} {{/* Social. */}}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/header/mastodon.html000066400000000000000000000052341507671574500272120ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/header/qr.html000066400000000000000000000016111507671574500260030ustar00rootroot00000000000000{{ $t := debug.Timer "qr" }} {{ $qr := partial "_inline/qr" (dict "page" $ "img_class" "w-10 bg-white view-transition-qr" ) }} {{ $qrBig := partial "_inline/qr" (dict "page" $ "img_class" "w-64 p-4") }} {{ $t.Stop }} {{ define "_partials/_inline/qr" }} {{ $img_class := .img_class | default "w-10" }} {{ with images.QR $.page.Permalink (dict "targetDir" "images/qr") }} QR code linking to {{ $.page.Permalink }} {{ end }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/header/theme.html000066400000000000000000000027521507671574500264720ustar00rootroot00000000000000
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/home/000077500000000000000000000000001507671574500241745ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/home/features.html000066400000000000000000000103451507671574500267030ustar00rootroot00000000000000{{/* icons source: https://heroicons.com/ */}} {{ $dataTOML := ` [[features]] heading = "Optimized for speed" copy = "Written in Go, optimized for speed and designed for flexibility. With its advanced templating system and fast asset pipelines, Hugo renders a large site in seconds, often less." icon = """ """ [[features]] heading = "Flexible framework" copy = "With its multilingual support, and powerful taxonomy system, Hugo is widely used to create documentation sites, landing pages, corporate, government, nonprofit, education, news, event, and project sites." icon = """ """ [[features]] heading = "Fast assets pipeline" copy = "Image processing (convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract EXIF data), JavaScript bundling (tree shake, code splitting), Sass processing, great TailwindCSS support." icon = """ """ [[features]] heading = "Embedded web server" copy = "Use Hugo's embedded web server during development to instantly see changes to content, structure, behavior, and presentation. " icon = """ """ ` }} {{ $data := $dataTOML | transform.Unmarshal }}
        {{ range $data.features }}
        {{ .icon | safeHTML }}
        {{ .heading }}
        {{ .copy }}
        {{ end }}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/home/opensource.html000066400000000000000000000153121507671574500272460ustar00rootroot00000000000000{{ $githubInfo := partialCached "helpers/funcs/get-github-info.html" . "-" }}

        Open source

        Hugo is open source and free to use. It is distributed under the Apache 2.0 License.

        Popular.
        Hugo has {{ $githubInfo.stargazers_count | lang.FormatNumber 0 }} stars on GitHub as of {{ now.Format "January 2, 2006" }}. Join the crowd and hit the Star button.
        Active.
        Hugo has a large and active community. If you have questions or need help, you can ask in the Hugo forums.
        Frequent releases.
        Hugo has a fast release cycle. The project is actively maintained and new features are added regularly.
        {{ partial "helpers/picture.html" (dict "image" (resources.Get "images/hugo-github-screenshot.png") "alt" "Hugo GitHub Repository" "width" 640 "class" "w-full max-w-[38rem] ring-1 shadow-xl dark:shadow-gray-500 ring-gray-400/10") }}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/home/sponsors.html000066400000000000000000000040551507671574500267540ustar00rootroot00000000000000{{ $gtag := .gtag | default "unknown" }} {{ $gtag := .gtag | default "unknown" }} {{ $isFooter := (eq $gtag "footer") }} {{ $utmSource := cond $isFooter "hugofooter" "hugohome" }} {{ $containerClass := .containerClass | default "mx-auto max-w-7xl px-6 lg:px-8" }} {{ with .ctx.Site.Data.sponsors }}

        Hugo Sponsors

        {{ range .banners }}
        {{ $query_params := .query_params | default "" }} {{ $url := .link }} {{ if not .no_query_params }} {{ $url = printf "%s?%s%s" .link $query_params (querify "utm_source" (.utm_source | default $utmSource ) "utm_medium" (.utm_medium | default "banner") "utm_campaign" (.utm_campaign | default "hugosponsor") "utm_content" (.utm_content | default "gohugoio")) | safeURL }} {{ end }} {{ $logo := resources.Get .logo }} {{ $gtagID := printf "Sponsor %s %s" .name $gtag | title }}
        {{ end }}
        {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/hooks/000077500000000000000000000000001507671574500243675ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/hooks/body-end.html000066400000000000000000000001321507671574500267520ustar00rootroot00000000000000{{- if .IsHome }} {{- partial "helpers/validation/validate-keywords.html" }} {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/hooks/body-main-start.html000066400000000000000000000007131507671574500302700ustar00rootroot00000000000000{{ if or .IsSection .IsPage }} {{end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/hooks/body-start.html000066400000000000000000000002431507671574500273440ustar00rootroot00000000000000{{ with resources.Get "js/body-start.js" | js.Build (dict "minify" true) }} {{ partial "helpers/linkjs.html" (dict "r" . "attributes" (dict "" "")) }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/icons.html000066400000000000000000000117511507671574500252520ustar00rootroot00000000000000 {{/* https://heroicons.com/mini exclamation-circle */}} {{/* https://heroicons.com/mini exclamation-triangle */}} {{/* https://heroicons.com/mini information-circle */}} {{/* https://heroicons.com/mini light-bulb */}} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/in-this-section.html000066400000000000000000000020501507671574500271440ustar00rootroot00000000000000{{- with .CurrentSection.RegularPages }} {{ $hasTocOrRelated := or ($.Store.Get "hasToc") ($.Store.Get "hasRelated") }}

        In this section

        {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/page-edit.html000066400000000000000000000015101507671574500257660ustar00rootroot00000000000000

        Last updated: {{ .Lastmod.Format "January 2, 2006" }}{{ with .GitInfo }} : {{ .Subject }} ({{ .AbbreviatedHash }}) {{ end }}
        {{ with .File }} {{ if not .IsContentAdapter }} {{ $href := printf "%sedit/master/content/%s/%s" site.Params.ghrepo $.Lang .Path }} Improve this page {{ end }} {{ end }}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/related.html000066400000000000000000000011701507671574500255510ustar00rootroot00000000000000{{- $heading := "See also" }} {{- $related := site.Pages.Related . }} {{- $related = $related | complement .CurrentSection.Pages | first 7 }} {{- with $related }} {{ $.Store.Set "hasRelated" true }}

        {{ $heading }}

        {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/search/000077500000000000000000000000001507671574500245115ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/search/algolialogo.html000066400000000000000000000122141507671574500276700ustar00rootroot00000000000000
        Search by
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/search/button.html000066400000000000000000000014741507671574500267200ustar00rootroot00000000000000{{ $textColor := "text-gray-300" }} {{ $fillColor := "fill-slate-400 dark:fill-slate-500" }} {{ if .standalone }} {{ $textColor = "text-gray-800 dark:text-gray-300 " }} {{ $fillColor = "fill-slate-500 dark:fill-slate-400" }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/search/input.html000066400000000000000000000002611507671574500265350ustar00rootroot00000000000000
        {{ partial "layouts/search/button.html" (dict "page" . "standalone" false) }} {{ partial "layouts/search/results.html" . }}
        gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/search/results.html000066400000000000000000000075571507671574500271160ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/templates.html000066400000000000000000000003641507671574500261330ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/layouts/_partials/layouts/toc.html000066400000000000000000000025451507671574500247250ustar00rootroot00000000000000{{ with .Fragments }} {{ with .Headings }}

        On this page

        {{ end }} {{ end }} {{ define "render-toc-level" }} {{ range .h }} {{ if and .ID (and (ge .Level 2) (le .Level 4)) }} {{ $indentation := "ml-0" }} {{ if eq .Level 3 }} {{ $indentation = "ml-2 lg:ml-3" }} {{ else if eq .Level 4 }} {{ $indentation = "ml-4 lg:ml-6" }} {{ end }} {{ $.p.Store.Set "hasToc" true }}
      10. {{ .Title | safeHTML }}
      11. {{ end }} {{ with .Headings }}
          {{ template "render-toc-level" (dict "h" . "p" $.p) }}
        {{ end }} {{ end }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_partials/opengraph/000077500000000000000000000000001507671574500235275ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_partials/opengraph/get-featured-image.html000066400000000000000000000012701507671574500300510ustar00rootroot00000000000000{{ $images := $.Resources.ByType "image" }} {{ $featured := $images.GetMatch "*feature*" }} {{ if not $featured }} {{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }} {{ end }} {{ if not $featured }} {{ $featured = resources.Get "/opengraph/gohugoio-card-base-1.png" }} {{ $size := 80 }} {{ $title := $.LinkTitle }} {{ if gt (len $title) 20 }} {{ $size = 70 }} {{ end }} {{ $text := $title }} {{ $textOptions := dict "color" "#FFF" "size" $size "lineSpacing" 10 "x" 65 "y" 80 "font" (resources.Get "/opengraph/mulish-black.ttf") }} {{ $featured = $featured | images.Filter (images.Text $text $textOptions) }} {{ end }} {{ return $featured }} gohugoio-hugo-6abdaca/docs/layouts/_partials/opengraph/opengraph.html000066400000000000000000000044741507671574500264110ustar00rootroot00000000000000 {{- with $.Params.images -}} {{- range first 6 . }} {{ end -}} {{- else -}} {{- $featured := partial "opengraph/get-featured-image.html" . }} {{- with $featured -}} {{- else -}} {{- with $.Site.Params.images }} {{ end -}} {{- end -}} {{- end -}} {{- if .IsPage }} {{- $iso8601 := "2006-01-02T15:04:05-07:00" -}} {{ with .PublishDate }} {{ end }} {{ with .Lastmod }} {{ end }} {{- end -}} {{- with .Params.audio }}{{ end }} {{- with .Params.locale }} {{ end }} {{- with .Site.Params.title }} {{ end }} {{- with .Params.videos }} {{- range . }} {{ end }} {{ end }} {{- /* If it is part of a series, link to related articles */}} {{- $permalink := .Permalink }} {{- $siteSeries := .Site.Taxonomies.series }} {{ with .Params.series }} {{- range $name := . }} {{- $series := index $siteSeries ($name | urlize) }} {{- range $page := first 6 $series.Pages }} {{- if ne $page.Permalink $permalink }} {{ end }} {{- end }} {{ end }} {{ end }} {{- /* Facebook Page Admin ID for Domain Insights */}} {{- with site.Params.social.facebook_admin }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/000077500000000000000000000000001507671574500221025ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/chroma-lexers.html000066400000000000000000000011611507671574500255400ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders an HTML template of Chroma lexers and their aliases. @example {{< chroma-lexers >}} */ -}} {{/* prettier-ignore-end */ -}}
        {{- range site.Data.docs.chroma.lexers }} {{- end }}
        Language Identifiers
        {{ .Name }} {{- range $k, $_ := .Aliases }} {{- if $k }},{{ end }} {{ . }} {{- end }}
        gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/code-toggle.html000066400000000000000000000107151507671574500251650ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats. @param {string} [config] The section of site.Data.docs.config to render. @param {bool} [copy=false] Whether to display a copy-to-clipboard button. @param {string} [dataKey] The section of site.Data.docs to render. @param {string} [file] The file name to display above the rendered code. @param {bool} [fm=false] Whether to render the code as front matter. @param {bool} [skipHeader=false] Whether to omit top level key(s) when rendering a section of site.Data.docs.config. @example {{< code-toggle file=hugo config=build />}} @example {{< code-toggle file=content/example.md fm="true" }} title='Example' draft='false {{< /code-toggle }} */ -}} {{/* prettier-ignore-end */ -}} {{- /* Initialize. */}} {{- $config := "" }} {{- $copy := false }} {{- $dataKey := "" }} {{- $file := "" }} {{- $fm := false }} {{- $skipHeader := false }} {{- /* Get parameters. */}} {{- $config = .Get "config" }} {{- $dataKey = .Get "dataKey" }} {{- $file = .Get "file" }} {{- if in (slice "false" false 0) (.Get "copy") }} {{- $copy = false }} {{- else if in (slice "true" true 1) (.Get "copy") }} {{- $copy = true }} {{- end }} {{- if in (slice "false" false 0) (.Get "fm") }} {{- $fm = false }} {{- else if in (slice "true" true 1) (.Get "fm") }} {{- $fm = true }} {{- end }} {{- if in (slice "false" false 0) (.Get "skipHeader") }} {{- $skipHeader = false }} {{- else if in (slice "true" true 1) (.Get "skipHeader") }} {{- $skipHeader = true }} {{- end }} {{- /* Define constants. */}} {{- $delimiters := dict "toml" "+++" "yaml" "---" }} {{- $langs := slice "yaml" "toml" "json" }} {{- $placeHolder := "#-hugo-placeholder-#" }} {{- /* Render. */}} {{- $code := "" }} {{- if $config }} {{- $file = $file | default "hugo" }} {{- $sections := (split $config ".") }} {{- $configSection := index $.Site.Data.docs.config $sections }} {{- $code = dict $sections $configSection }} {{- if $skipHeader }} {{- $code = $configSection }} {{- end }} {{- else if $dataKey }} {{- $file = $file | default $dataKey }} {{- $sections := (split $dataKey ".") }} {{- $code = index $.Site.Data.docs $sections }} {{- else }} {{- $code = $.Inner }} {{- end }}
        {{- if $copy }} {{- end }} {{- if $code }} {{- range $i, $lang := $langs }}
        {{- $hCode := $code | transform.Remarshal . }} {{- if and $fm (in (slice "toml" "yaml") .) }} {{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder }} {{- end }} {{- $hCode = $hCode | replaceRE `\n+` "\n" }} {{- highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
        {{- end }} {{- end }}
        gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/datatable.html000066400000000000000000000016231507671574500247130ustar00rootroot00000000000000{{ $package := (index .Params 0) }} {{ $listname := (index .Params 1) }} {{ $list := (index (index .Site.Data.docs $package) $listname) }} {{ $fields := after 2 .Params }}
        {{ range $fields }} {{ $s := . }} {{ if eq $s "_key" }} {{ $s = "type" }} {{ end }} {{ end }} {{ range $k1, $v1 := $list }} {{ range $k2, $v2 := . }} {{ $.Scratch.Set $k2 $v2 }} {{ end }} {{ range $fields }} {{ $s := "" }} {{ if eq . "_key" }} {{ $s = $k1 }} {{ else }} {{ $s = $.Scratch.Get . }} {{ end }} {{ end }} {{ end }}
        {{ $s }}
        {{ $s }}
        gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/deprecated-in.html000066400000000000000000000021161507671574500254740ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders a callout indicating the version in which a feature was deprecated. Include descriptive text between the opening and closing tags, or omit the descriptive text and call the shortcode with a self-closing tag. @param {string} 0 The semantic version string, with or without a leading v. @example {{< deprecated-in 0.144.0 />}} @example {{< deprecated-in 0.144.0 >}} Some descriptive text here. {{< /deprecated-in >}} */ -}} {{/* prettier-ignore-end */ -}} {{- with $version := .Get 0 | strings.TrimLeft "vV" }} {{- $href := printf "https://github.com/gohugoio/hugo/releases/tag/v%s" $version }} {{- $inner := strings.TrimSpace $.Inner }} {{- $text := printf "Deprecated in [v%s](%s)\n\n%s" $version $href $inner | $.Page.RenderString (dict "display" "block") }} {{- partial "layouts/blocks/alert.html" (dict "color" "orange" "icon" "exclamation" "text" $text ) }} {{- else }} {{- errorf "The %q shortcode requires a single positional parameter indicating version. See %s" .Name .Position }} {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/eturl.html000066400000000000000000000022301507671574500241200ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders an absolute URL to the source code for an embedded template. Accepts either positional or named parameters, and depends on the embedded_templates.toml file in the data directory. @param {string} filename The embedded template's file name, excluding extension. @example {{% et robots.txt %}} @example {{% et filename=robots.txt %}} */ -}} {{/* prettier-ignore-end */ -}} {{- with $filename := or (.Get "filename") (.Get 0) }} {{- with site.Data.embedded_template_urls }} {{- with index . $filename }} {{- urls.JoinPath site.Data.embedded_template_urls.base_url . }} {{- else }} {{- errorf "The %q shortcode was unable to find a URL for the embedded template named %q. Check the name. See %s" $.Name $filename $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode was unable to find the embedded_template_urls data file in the site's data directory. See %s" $.Name $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcodes requires a named or positional parameter, the file name of the embedded template, excluding its extension. See %s" .Name .Position }} {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/glossary-term.html000066400000000000000000000011701507671574500255770ustar00rootroot00000000000000{{- /* Renders the definition of the given glossary term. @param {string} (.Get 0) The glossary term. @example {{% glossary-term float %}} @example {{% glossary-term "floating point" %}} */ -}} {{- with .Get 0 }} {{- $path := printf "/quick-reference/glossary/%s" (urlize .) }} {{- with site.GetPage $path }} {{ .RenderShortcodes }}{{/* Do not indent. */}} {{- else }} {{- errorf "The glossary term (%s) shortcode was unable to find %s: see %s" $.Name $path $.Position }} {{- end }} {{- else }} {{- errorf "The glossary term (%s) shortcode requires one positional parameter: see %s" $.Name $.Position }} {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/glossary.html000066400000000000000000000034351507671574500246400ustar00rootroot00000000000000{{- /* Renders the glossary of terms. When you call this shortcode using the {{% %}} notation, the glossary terms are Markdown headings (level 6) which means they are members of .Fragments. This allows the link render hook to verify links to glossary terms. Yes, the terms themselves are pages, but we don't want to link to the pages, at least not right now. Instead, we want to link to the ids rendered by this shortcode. @example {{% glossary %}} */ -}} {{- $path := "/quick-reference/glossary" }} {{- with site.GetPage $path }} {{- /* Build and render alphabetical index. */}} {{- $m := dict }} {{- range $p := .Pages.ByTitle }} {{- $k := substr .Title 0 1 | strings.ToUpper }} {{- if index $m $k }} {{- continue }} {{- end }} {{- $anchor := path.BaseName .Path | anchorize }} {{- $m = merge $m (dict $k $anchor) }} {{- end }} {{- range $k, $v := $m }} [{{ $k }}](#{{ $v }}) {{/* Do not indent. */}} {{- end }} {{/* Render glossary terms. */}} {{- range $p := .Pages.ByTitle }} {{ .Title }}{{/* Do not indent. */}} : {{ .RawContent | strings.TrimSpace | safeHTML }}{{/* Do not indent. */}} {{ with .Params.reference }} {{- $destination := "" }} {{- with $u := urls.Parse . }} {{- if $u.IsAbs }} {{- $destination = $u.String }} {{- else }} {{- with site.GetPage $u.Path }} {{- $destination = .RelPermalink }} {{- else }} {{- errorf "The %q shortcode was unable to find the reference link %s: see %s" $.Name . $p.String }} {{- end }} {{- end }} {{- end }} : See [details]({{ $destination }}).{{/* Do not indent. */}} {{- end }} {{ end }} {{- else }} {{- errorf "The %q shortcode was unable to get %s: see %s" .Name $path .Position}} {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/hl.html000066400000000000000000000007621507671574500234000ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Returns syntax-highlighted code from the given text. This is useful as a terse way to highlight inline code snippets. Calling the highlight shortcode for inline snippets is verbose. @example This is {{< hl python >}}inline{{< /hl >}} code. */ -}} {{/* prettier-ignore-end */ -}} {{- $code := .Inner | strings.TrimSpace }} {{- $lang := or (.Get 0) "go" }} {{- $opts := dict "hl_inline" true "noClasses" true }} {{- transform.Highlight $code $lang $opts }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/img.html000066400000000000000000000362641507671574500235570ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders the given image using the given filter, if any. When using the text filter, provide the arguments in this order: 0. The text 1. The horizontal offset, in pixels, relative to the left of the image (default 20) 2. The vertical offset, in pixels, relative to the top of the image (default 20) 3. The font size in pixels (default 64) 4. The line height (default 1.2) 5. The font color (default #ffffff) When using the padding filter, provide all arguments in this order: 0. Padding top 1. Padding right 2. Padding bottom 3. Padding right 4. Canvas color @param {string} src The path to the image which must be a remote, page, or global resource. @param {string} [filter] The filter to apply to the image (case-insensitive). @param {string} [filterArgs] A comma-delimited list of arguments to pass to the filter. @param {bool} [example=false] If true, renders a before/after example. @param {int} [exampleWidth=384] Image width, in pixels, when rendering a before/after example. @example {{< img src="zion-national-park.jpg" >}} @example {{< img src="zion-national-park.jpg" alt="Zion National Park" >}} @example {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" >}} @example {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="process" filterArgs="resize 400x webp" >}} @example {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="colorize" filterArgs="180,50,20" >}} @example {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" example=true >}} @example {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" example=true exampleWidth=400 >}} @example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Text" filterArgs="Zion National Park,25,250,56" example=true >}} @example {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Padding" filterArgs="20,50,20,50,#0705" example=true >}} */ -}} {{/* prettier-ignore-end */ -}} {{- /* Initialize. */}} {{- $alt := "" }} {{- $src := "" }} {{- $filter := "" }} {{- $filterArgs := slice }} {{- $example := false }} {{- $exampleWidth := 384 }} {{- /* Default values to use with the text filter. */}} {{ $textFilterOpts := dict "xOffset" 20 "yOffset" 20 "fontSize" 64 "lineHeight" 1.2 "fontColor" "#ffffff" "fontPath" "https://github.com/google/fonts/raw/refs/heads/main/ofl/lato/Lato-Regular.ttf" }} {{- /* Get and validate parameters. */}} {{- with .Get "alt" }} {{- $alt = . }} {{- end }} {{- with .Get "src" }} {{- $src = . }} {{- else }} {{- errorf "The %q shortcode requires a file parameter. See %s" .Name .Position }} {{- end }} {{- with .Get "filter" }} {{- $filter = . | lower }} {{- end }} {{- $validFilters := slice "autoorient" "brightness" "colorbalance" "colorize" "contrast" "dither" "gamma" "gaussianblur" "grayscale" "hue" "invert" "mask" "none" "opacity" "overlay" "padding" "pixelate" "process" "saturation" "sepia" "sigmoid" "text" "unsharpmask" }} {{- with $filter }} {{- if not (in $validFilters .) }} {{- errorf "The filter passed to the %q shortcode is invalid. The filter must be one of %s. See %s" $.Name (delimit $validFilters ", " ", or ") $.Position }} {{- end }} {{- end }} {{- with .Get "filterArgs" }} {{- $filterArgs = split . "," }} {{- $filterArgs = apply $filterArgs "trim" "." " " }} {{- end }} {{- if in (slice "false" false 0) (.Get "example") }} {{- $example = false }} {{- else if in (slice "true" true 1) (.Get "example") }} {{- $example = true }} {{- end }} {{- with .Get "exampleWidth" }} {{- $exampleWidth = . | int }} {{- end }} {{- /* Get image. */}} {{- $ctx := dict "page" .Page "src" $src "name" .Name "position" .Position }} {{- $i := partial "inline/get-resource.html" $ctx }} {{- /* Resize if rendering before/after examples. */}} {{- if $example }} {{- $i = $i.Resize (printf "%dx" $exampleWidth) }} {{- end }} {{- /* Create filter. */}} {{- $f := "" }} {{- $ctx := dict "filter" $filter "args" $filterArgs "name" .Name "position" .Position }} {{- if eq $filter "autoorient" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.AutoOrient }} {{- else if eq $filter "brightness" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Brightness (index $filterArgs 0) }} {{- else if eq $filter "colorbalance" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage red" "argValue" (index $filterArgs 0) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage green" "argValue" (index $filterArgs 1) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage blue" "argValue" (index $filterArgs 2) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.ColorBalance (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- else if eq $filter "colorize" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "hue" "argValue" (index $filterArgs 0) "min" 0 "max" 360) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "saturation" "argValue" (index $filterArgs 1) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 2) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Colorize (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- else if eq $filter "contrast" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Contrast (index $filterArgs 0) }} {{- else if eq $filter "dither" }} {{- $f = images.Dither }} {{- else if eq $filter "gamma" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "gamma" "argValue" (index $filterArgs 0) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Gamma (index $filterArgs 0) }} {{- else if eq $filter "gaussianblur" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "sigma" "argValue" (index $filterArgs 0) "min" 0 "max" 1000) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.GaussianBlur (index $filterArgs 0) }} {{- else if eq $filter "grayscale" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Grayscale }} {{- else if eq $filter "hue" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "shift" "argValue" (index $filterArgs 0) "min" -180 "max" 180) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Hue (index $filterArgs 0) }} {{- else if eq $filter "invert" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Invert }} {{- else if eq $filter "mask" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $ctx := dict "src" (index $filterArgs 0) "name" .Name "position" .Position }} {{- $maskImage := partial "inline/get-resource.html" $ctx }} {{- $f = images.Mask $maskImage }} {{- else if eq $filter "opacity" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "opacity" "argValue" (index $filterArgs 0) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Opacity (index $filterArgs 0) }} {{- else if eq $filter "overlay" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $ctx := dict "src" (index $filterArgs 0) "name" .Name "position" .Position }} {{- $overlayImg := partial "inline/get-resource.html" $ctx }} {{- $f = images.Overlay $overlayImg (index $filterArgs 1 | float ) (index $filterArgs 2 | float) }} {{- else if eq $filter "padding" }} {{- $ctx = merge $ctx (dict "argsRequired" 5) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Padding (index $filterArgs 0 | int) (index $filterArgs 1 | int) (index $filterArgs 2 | int) (index $filterArgs 3 | int) (index $filterArgs 4) }} {{- else if eq $filter "pixelate" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "size" "argValue" (index $filterArgs 0) "min" 0 "max" 1000) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Pixelate (index $filterArgs 0) }} {{- else if eq $filter "process" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Process (index $filterArgs 0) }} {{- else if eq $filter "saturation" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Saturation (index $filterArgs 0) }} {{- else if eq $filter "sepia" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Sepia (index $filterArgs 0) }} {{- else if eq $filter "sigmoid" }} {{- $ctx = merge $ctx (dict "argsRequired" 2) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "midpoint" "argValue" (index $filterArgs 0) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "factor" "argValue" (index $filterArgs 1) "min" -10 "max" 10) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Sigmoid (index $filterArgs 0) (index $filterArgs 1) }} {{- else if eq $filter "text" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $ctx := dict "src" $textFilterOpts.fontPath "name" .Name "position" .Position }} {{- $font := or (partial "inline/get-resource.html" $ctx) }} {{- $fontSize := or (index $filterArgs 3 | int) $textFilterOpts.fontSize }} {{- $lineHeight := math.Max (or (index $filterArgs 4 | float) $textFilterOpts.lineHeight) 1 }} {{- $opts := dict "x" (or (index $filterArgs 1 | int) $textFilterOpts.xOffset) "y" (or (index $filterArgs 2 | int) $textFilterOpts.yOffset) "size" $fontSize "linespacing" (mul (sub $lineHeight 1) $fontSize) "color" (or (index $filterArgs 5) $textFilterOpts.fontColor) "font" $font }} {{- $f = images.Text (index $filterArgs 0) $opts }} {{- else if eq $filter "unsharpmask" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "sigma" "argValue" (index $filterArgs 0) "min" 0 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "amount" "argValue" (index $filterArgs 1) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "threshold" "argValue" (index $filterArgs 2) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.UnsharpMask (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- end }} {{- /* Apply filter. */}} {{- $fi := $i }} {{- with $f }} {{- $fi = $i.Filter . }} {{- end }} {{- /* Render. */}} {{- $class := "border-1 border-gray-300 dark:border-gray-500" }} {{- if $example }}

        Original

        {{ $alt }}

        Processed

        {{ $alt }} {{- else -}} {{ $alt }} {{- end }} {{- define "validate-arg-count" }} {{- $msg := "When using the %q filter, the %q shortcode requires an args parameter with %d %s. See %s" }} {{- if lt (len .args) .argsRequired }} {{- $text := "values" }} {{- if eq 1 .argsRequired }} {{- $text = "value" }} {{- end }} {{- errorf $msg .filter .name .argsRequired $text .position }} {{- end }} {{- end }} {{- define "validate-arg-value" }} {{- $msg := "The %q argument passed to the %q shortcode is invalid. Expected a value in the range [%v,%v], but received %v. See %s" }} {{- if or (lt .argValue .min) (gt .argValue .max) }} {{- errorf $msg .argName .name .min .max .argValue .position }} {{- end }} {{- end }} {{- define "_partials/inline/get-resource.html" }} {{- $r := "" }} {{- $u := urls.Parse .src }} {{- $msg := "The %q shortcode was unable to resolve %s. See %s" }} {{- if $u.IsAbs }} {{- with try (resources.GetRemote $u.String) }} {{- with .Err }} {{- errorf "%s" . }} {{- else with .Value }} {{- /* This is a remote resource. */}} {{- $r = . }} {{- else }} {{- errorf $msg $.name $u.String $.position }} {{- end }} {{- end }} {{- else }} {{- with .page.Resources.Get (strings.TrimPrefix "./" $u.Path) }} {{- /* This is a page resource. */}} {{- $r = . }} {{- else }} {{- with resources.Get $u.Path }} {{- /* This is a global resource. */}} {{- $r = . }} {{- else }} {{- errorf $msg $.name $u.Path $.position }} {{- end }} {{- end }} {{- end }} {{- return $r }} {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/imgproc.html000066400000000000000000000027001507671574500244270ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders the given image using the given process specification. @param {string} path The path to the image, either a page resource or a global resource. @param {string} spec The image processing specification. @param {string} alt The alt attribute of the img element. @example {{< imgproc path="sunset.jpg" spec="resize 300x" alt="A sunset" >}} */ -}} {{/* prettier-ignore-end */ -}} {{- with $.Get "path" }} {{- with $i := or ($.Page.Resources.Get .) (resources.Get .) }} {{- with $spec := $.Get "spec" }} {{- with $i.Process . }}
        {{ $.Get `alt` }}
        {{- with $.Inner }} {{ . }} {{- else }} {{ $spec }} {{- end }}
        {{- end }} {{- else }} {{- errorf "The %q shortcode requires a 'spec' argument containing the image processing specification. See %s" $.Name $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a 'path' argument indicating the image path. The image must be a page resource or a global resource. See %s" $.Name $.Position }} {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/include.html000066400000000000000000000013431507671574500244140ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders the page using the RenderShortcode method on the Page object. You must call this shortcode using the {{% %}} notation. @param {string} (positional parameter 0) The path to the page, relative to the content directory. @example {{% include "functions/_common/glob-patterns" %}} */ -}} {{/* prettier-ignore-end */ -}} {{- with .Get 0 }} {{- with or ($.Page.GetPage .) (site.GetPage .) }} {{- .RenderShortcodes }} {{- else }} {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a positional parameter indicating the path of the file to include. See %s" .Name .Position }} {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/list-pages-in-section.html000066400000000000000000000054531507671574500271150ustar00rootroot00000000000000{{- /* Renders a description list of the pages in the given section. Render a subset of the pages in the section by specifying a predefined filter, and whether to include those pages. Filters are defined in the data directory, in the file named page_filters. Each filter is an array of paths to a file, relative to the root of the content directory. Hugo will throw an error if the specified filter does not exist, or if any of the pages in the filter do not exist. @param {string} path The path to the section. @param {string} [filter=""] The name of filter list. @param {string} [filterType=""] The type of filter, either include or exclude. @param {string} [titlePrefix=""] The string to prepend to the link title. @example {{< list-pages-in-section path=/methods/resources >}} @example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude >}} @example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo >}} */}} {{/* Initialize. */}} {{ $filter := or "" (.Get "filter" | lower) }} {{ $filterType := or (.Get "filterType") "none" | lower }} {{ $filteredPages := slice }} {{ $titlePrefix := or (.Get "titlePrefix") "" }} {{/* Build slice of filtered pages. */}} {{ with $filter }} {{ with index site.Data.page_filters . }} {{ range . }} {{ with site.GetPage . }} {{ $filteredPages = $filteredPages | append . }} {{ else }} {{ errorf "The %q shortcode was unable to find %q as specified in the page_filters data file. See %s" $.Name . $.Position }} {{ end }} {{ end }} {{ else }} {{ errorf "The %q shortcode was unable to find the %q filter in the page_filters data file. See %s" $.Name . $.Position }} {{ end }} {{ end }} {{/* Render. */}} {{ with $sectionPath := .Get "path" }} {{ with site.GetPage . }} {{ with .RegularPages }} {{ range $page := .ByTitle }} {{ if or (and (eq $filterType "include") (in $filteredPages $page)) (and (eq $filterType "exclude") (not (in $filteredPages $page))) (eq $filterType "none") }} {{ $linkTitle := .LinkTitle }} {{ with $titlePrefix }} {{ $linkTitle = printf "%s%s" . $linkTitle }} {{ end }} [{{ $linkTitle }}]({{ $page.RelPermalink }}){{/* Do not indent. */}} : {{ $page.Description }}{{/* Do not indent. */}} {{ end }} {{ end }} {{ else }} {{ warnf "The %q shortcode found no pages in the %q section. See %s" $.Name $sectionPath $.Position }} {{ end }} {{ else }} {{ errorf "The %q shortcode was unable to find %q. See %s" $.Name $sectionPath $.Position }} {{ end }} {{ else }} {{ errorf "The %q shortcode requires a 'path' parameter indicating the path to the section. See %s" $.Name $.Position }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/module-mounts-note.html000066400000000000000000000002031507671574500265360ustar00rootroot00000000000000For a more flexible approach to configuring this directory, consult the section on [module mounts](/configuration/module/#mounts). gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/new-in.html000066400000000000000000000050301507671574500241630ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders a callout or badge indicating the version in which a feature was added. To render a callout, include descriptive text between the opening and closing tags. To render a badge,omit the descriptive text and call the shortcode with a self-closing tag. When comparing the current version to the specified version, the "new in" button will be hidden if any of the following conditions is true: - The major version difference exceeds the majorVersionDiffThreshold - The minor version difference exceeds the minorVersionDiffThreshold @param {string} 0 The semantic version string, with or without a leading v. @example {{< new-in 0.100.0 />}} @example {{{< new-in 0.100.0 >}} Some descriptive text here. {{< /new-in >}} */ -}} {{/* prettier-ignore-end */ -}} {{- $majorVersionDiffThreshold := 0 }} {{- $minorVersionDiffThreshold := 30 }} {{- $displayExpirationWarning := true }} {{- with $version := .Get 0 | strings.TrimLeft "vV" }} {{- $majorVersionDiff := sub (index (split hugo.Version ".") 0 | int) (index (split $version ".") 0 | int) }} {{- $minorVersionDiff := sub (index (split hugo.Version ".") 1 | int) (index (split $version ".") 1 | int) }} {{- if or (gt $majorVersionDiff $majorVersionDiffThreshold) (gt $minorVersionDiff $minorVersionDiffThreshold) }} {{- if $displayExpirationWarning }} {{- warnf "This call to the %q shortcode should be removed: %s. The button is now hidden because the specified version (%s) is older than the display threshold." $.Name $.Position $version }} {{- end }} {{- else }} {{- $href := printf "https://github.com/gohugoio/hugo/releases/tag/v%s" $version }} {{- with $.Inner }} {{- $inner := strings.TrimSpace . }} {{- $text := printf "New in [v%s](%s)\n\n%s" $version $href $inner | $.Page.RenderString (dict "display" "block") }} {{ partial "layouts/blocks/alert.html" (dict "color" "green" "icon" "exclamation" "text" $text ) }} {{- else }} New in v{{ $version }} {{- end }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a single positional parameter indicating version. See %s" .Name .Position }} {{- end }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/newtemplatesystem.html000066400000000000000000000006041507671574500265620ustar00rootroot00000000000000{{ $text := `We did a complete overhaul of Hugo's template system in v0.146.0. We're working on getting all of the relevant documentation up to date, but until then, see [this page](/templates/new-templatesystem-overview/). ` }} {{ partial "layouts/blocks/alert.html" (dict "color" "orange" "icon" "information-circle" "text" ($text | $.Page.RenderString ) "title" "") }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/per-lang-config-keys.html000066400000000000000000000064031507671574500267140ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{- /* Renders a responsive grid of the configuration keys that can be defined separately for each language. */ -}} {{/* prettier-ignore-end */ -}} {{- $siteConfigKeys := slice (dict "baseURL" "/configuration/all/#baseurl") (dict "buildDrafts" "/configuration/all/#builddrafts") (dict "buildExpired" "/configuration/all/#buildexpired") (dict "buildFuture" "/configuration/all/#buildfuture") (dict "canonifyURLs" "/configuration/all/#canonifyurls") (dict "capitalizeListTitles" "/configuration/all/#capitalizelisttitles") (dict "contentDir" "/configuration/all/#contentdir") (dict "copyright" "/configuration/all/#copyright") (dict "disableAliases" "/configuration/all/#disablealiases") (dict "disableHugoGeneratorInject" "/configuration/all/#disablehugogeneratorinject") (dict "disableKinds" "/configuration/all/#disablekinds") (dict "disableLiveReload" "/configuration/all/#disablelivereload") (dict "disablePathToLower" "/configuration/all/#disablepathtolower") (dict "enableEmoji " "/configuration/all/#enableemoji") (dict "frontmatter" "/configuration/front-matter/") (dict "hasCJKLanguage" "/configuration/all/#hascjklanguage") (dict "languageCode" "/configuration/all/#languagecode") (dict "mainSections" "/configuration/all/#mainsections") (dict "markup" "/configuration/markup/") (dict "mediaTypes" "/configuration/media-types/") (dict "menus" "/configuration/menus/") (dict "outputFormats" "/configuration/output-formats") (dict "outputs" "/configuration/outputs/") (dict "page" "/configuration/page/") (dict "pagination" "/configuration/pagination/") (dict "params" "/configuration/params/") (dict "permalinks" "/configuration/permalinks/") (dict "pluralizeListTitles" "/configuration/all/#pluralizelisttitles") (dict "privacy" "/configuration/privacy/") (dict "refLinksErrorLevel" "/configuration/all/#reflinkserrorlevel") (dict "refLinksNotFoundURL" "/configuration/all/#reflinksnotfoundurl") (dict "related" "/configuration/related-content/") (dict "relativeURLs" "/configuration/all/#relativeurls") (dict "removePathAccents" "/configuration/all/#removepathaccents") (dict "renderSegments" "/configuration/all/#rendersegments") (dict "sectionPagesMenu" "/configuration/all/#sectionpagesmenu") (dict "security" "/configuration/security/") (dict "services" "/configuration/services/") (dict "sitemap" "/configuration/sitemap/") (dict "staticDir" "/configuration/all/#staticdir") (dict "summaryLength" "/configuration/all/#summarylength") (dict "taxonomies" "/configuration/taxonomies/") (dict "timeZone" "/configuration/all/#timezone") (dict "title" "/configuration/all/#title") (dict "titleCaseStyle" "/configuration/all/#titlecasestyle") }} {{- $a := len $siteConfigKeys }} {{- $b := math.Ceil (div $a 2.) }} {{- $c := math.Ceil (div $a 3.) }}
        {{- range $siteConfigKeys }} {{ range $k, $v := . }} {{ $u := urls.Parse $v }} {{ if not (site.GetPage $u.Path) }} {{ errorf "The %q shorcode was unable to find %s. See %s." $.Name $u.Path $.Position }} {{ end }} {{ $k }} {{ end }} {{- end }}
        gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/quick-reference.html000066400000000000000000000015701507671574500260430ustar00rootroot00000000000000{{- /* Renders the child sections of the given top-level section, listing each child's immediate descendants. @param {string} section The top-level section to render. @example {{% quick-reference section="/functions" %}} */ -}} {{ $section := "" }} {{ with .Get "section" }} {{ $section = . }} {{ else }} {{ errorf "The %q shortcode requires a 'section' parameter. See %s" .Name .Position }} {{ end }} {{ with site.GetPage $section }} {{ range .Sections }} ## {{ .LinkTitle }}{{/* Do not indent. */}} {{ .Description }}{{/* Do not indent. */}} {{ .Content }} {{ with .Pages }} {{ range . }} [{{ .LinkTitle }}]({{ .RelPermalink }}){{/* Do not indent. */}} : {{ .Description }}{{/* Do not indent. */}} {{ end }} {{ end }} {{ end }} {{ else }} {{ errorf "The %q shortcodes was unable to find the %q section. See %s" .Name $section .Position }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/root-configuration-keys.html000066400000000000000000000025701507671574500275750ustar00rootroot00000000000000{{/* prettier-ignore-start */ -}} {{/* Renders a comma-separated list of links to the root key configuration pages. @example {{< root-configuration-keys >}} */ -}} {{/* prettier-ignore-end */ -}} {{- /* Create scratch map of key:filename. */}} {{- $s := newScratch }} {{- range $k, $v := site.Data.docs.config }} {{- if or (reflect.IsMap .) (reflect.IsSlice .) }} {{- $s.Set $k ($k | humanize | anchorize) }} {{- end }} {{- end }} {{/* Deprecated. */}} {{- $s.Delete "author" }} {{/* Use mounts instead. */}} {{- $s.Delete "staticDir" }} {{- $s.Delete "ignoreFiles" }} {{/* This key is "HTTPCache" not "httpCache". */}} {{- $s.Set "HTTPCache" "http-cache" }} {{/* This key is "frontmatter" not "frontMatter" */}} {{- $s.Set "frontmatter" "front-matter" }} {{/* The page title is "Related content" not "related". */}} {{- $s.Set "related" "related-content" }} {{/* It can be configured as bool or map; we want to show map. */}} {{- $s.Set "uglyURLs" "ugly-urls" }} {{- $links := slice }} {{- range $k, $v := $s.Values }} {{- $path := printf "/configuration/%s" $v }} {{- with site.GetPage $path }} {{- $links = $links | append (printf "%s" .RelPermalink $k) }} {{- else }} {{- errorf "The %q shortcode was unable to find the page %s. See %s." $.Name $path $.Position }} {{- end }} {{- end }} {{- delimit $links ", " ", and " | safeHTML -}} gohugoio-hugo-6abdaca/docs/layouts/_shortcodes/syntax-highlighting-styles.html000066400000000000000000000034171507671574500303070ustar00rootroot00000000000000{{- /* Renders a gallery a Chroma syntax highlighting styles. @example {{% syntax-highlighting-styles %}} */ -}} {{- $examples := slice }} {{- /* Example: css */}} {{- $example := dict "lang" "css" "code" ` body { font-size: 16px; /* comment */ } `}} {{- $examples = $examples | append $example }} {{- /* Example: html */}} {{- $example = dict "lang" "html" "code" ` Example `}} {{- $examples = $examples | append $example }} {{- /* Example: go-html-template */}} {{- $example = dict "lang" "go-html-template" "code" ` {{ with $.Page.Params.content }} {{ . | $.Page.RenderString }} {{/* comment */}} {{ end }} `}} {{- $examples = $examples | append $example }} {{- /* Example: javascript */}} {{- $example = dict "lang" "javascript" "code" ` if ([1,"one",2,"two"].includes(value)){ console.log("Number is either 1 or 2."); // comment } `}} {{- $examples := $examples | append $example }} {{- /* Example: markdown */}} {{- $example = dict "lang" "markdown" "code" ` {{< figure src="kitten.jpg" >}} [example](https://example.org "An example") `}} {{- $examples := $examples | append $example }} {{- /* Example: toml */}} {{- $example = dict "lang" "toml" "code" ` [params] bool = true # comment string = 'foo' `}} {{- $examples := $examples | append $example }} {{- /* Render */}} {{- with site.Data.docs.chroma.styles }} {{- range $style := . }} ### {{ $style }} {class="!mt-7 !mb-6"}{{/* Do not indent. */}} {{- range $examples }} {{ .lang }}{{/* Do not indent. */}} {class="text-sm !-mt-3 !-mb-5"}{{/* Do not indent. */}} ```{{ .lang }} {noClasses=true style="{{ $style }}"}{{/* Do not indent. */}} {{- .code | safeHTML -}}{{/* Do not indent. */}} ```{{/* Do not indent. */}} {{- end }} {{- end }} {{- end }} gohugoio-hugo-6abdaca/docs/layouts/baseof.html000066400000000000000000000044141507671574500217160ustar00rootroot00000000000000 {{ .Title }} {{ partial "layouts/head/head-js.html" . }} {{ with (templates.Defer (dict "key" "global")) }} {{ $t := debug.Timer "tailwindcss" }} {{ with resources.Get "css/styles.css" }} {{ $opts := dict "minify" (not hugo.IsDevelopment) }} {{ with . | css.TailwindCSS $opts }} {{ partial "helpers/linkcss.html" (dict "r" .) }} {{ end }} {{ end }} {{ $t.Stop }} {{ end }} {{ $noop := .WordCount }} {{ if .Page.Store.Get "hasMath" }} {{ end }} {{ partial "layouts/head/head.html" . }} {{ $bodyClass := printf "flex flex-col min-h-full bg-white dark:bg-blue-950 kind-%s" .Kind }} {{ if .Params.searchable }} {{ $bodyClass = printf "%s searchable" $bodyClass }} {{ end }} {{ partial "layouts/hooks/body-start.html" . }} {{/* Layout. */}} {{ block "header" . }} {{ partial "layouts/header/header.html" . }} {{ end }} {{ block "subheader" . }} {{ end }} {{ block "hero" . }} {{ end }}
        {{ partial "layouts/hooks/body-main-start.html" . }} {{ block "main" . }}{{ end }}
        {{ block "rightsidebar" . }} {{ end }}
        {{/* Common icons. */}} {{ partial "layouts/icons.html" . }} {{/* Common templates. */}} {{ partial "layouts/templates.html" . }} {{/* Footer. */}} {{ block "footer" . }} {{ partial "layouts/footer.html" . }} {{ end }} {{ partial "layouts/hooks/body-end.html" . }} gohugoio-hugo-6abdaca/docs/layouts/home.headers000066400000000000000000000002131507671574500220470ustar00rootroot00000000000000/* X-Frame-Options: DENY X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Referrer-Policy: origin-when-cross-origin gohugoio-hugo-6abdaca/docs/layouts/home.html000066400000000000000000000037721507671574500214150ustar00rootroot00000000000000{{ define "main" }}
        {{ partial "layouts/home/opensource.html" . }}
        {{ partial "layouts/home/sponsors.html" (dict "ctx" . "gtag" "home" ) }}
        {{ partial "layouts/home/features.html" . }}
        {{ end }} {{ define "hero" }}
        Hugo Logo

        The world’s fastest framework for building websites

        Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.
        {{ with site.GetPage "/getting-started" }} {{ .LinkTitle }} {{ end }}
        {{ partial "layouts/search/button.html" (dict "page" . "standalone" true) }}
        {{ end }} {{ define "rightsidebar" }} {{ printf "%c" '\u00A0' }} {{ end }} {{ define "leftsidebar" }} {{ printf "%c" '\u00A0' }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/home.redir000066400000000000000000000002741507671574500215500ustar00rootroot00000000000000# Netlify redirects. See https://www.netlify.com/docs/redirects/ {{ range $p := .Site.Pages -}} {{ range .Aliases }} {{ . | printf "%-35s" }} {{ $p.RelPermalink -}} {{ end -}} {{- end -}} gohugoio-hugo-6abdaca/docs/layouts/list.html000066400000000000000000000053071507671574500214340ustar00rootroot00000000000000{{ define "main" }} {{ $pages := "" }} {{ if .IsPage }} {{/* We currently have a slightly odd content structure with no top level /docs section. */}} {{ $pages = .CurrentSection.Pages }} {{ else }} {{ $pages = .Pages }} {{ if eq .Section "news" }} {{ $pages = $pages.ByPublishDate.Reverse }} {{ end }} {{ end }}
        {{ partial "layouts/docsheader.html" . }}
        {{ end }} {{ define "rightsidebar" }} {{ printf "%c" '\u00A0' }} {{ end }} gohugoio-hugo-6abdaca/docs/layouts/list.rss.xml000066400000000000000000000031221507671574500220670ustar00rootroot00000000000000{{- printf "" | safeHTML }} Hugo News Recent news about Hugo, a static site generator written in Go, optimized for speed and designed for flexibility. {{ .Permalink }} Hugo {{ hugo.Version }} {{ or site.Language.LanguageCode site.Language.Lang }} {{- with site.Copyright }} {{ . }} {{- end }} {{- with .OutputFormats.Get "rss" }} {{ printf "" .Permalink .MediaType | safeHTML }} {{- end }} {{- $limit := cond (gt site.Config.Services.RSS.Limit 0) site.Config.Services.RSS.Limit 999 }} {{- $pages := "" }} {{- with site.GetPage "/news" }} {{- $pages = .Pages.ByPublishDate.Reverse | first $limit }} {{- else }} {{- errorf "The list.rss.xml layout was unable to find the 'news' page." }} {{- end }} {{ (index $pages 0).PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} {{- range $pages }} {{ .Title }} {{ or .Params.permalink .Permalink }} {{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} {{ or .Params.permalink .Permalink }} {{ .Summary | transform.XMLEscape | safeHTML }} {{- end }} gohugoio-hugo-6abdaca/docs/layouts/single.html000066400000000000000000000053131507671574500217370ustar00rootroot00000000000000{{ define "main" }} {{ $ttop := debug.Timer "single" }}
        {{ partial "layouts/docsheader.html" . }}
        {{ with .Params.description }}
        {{ . | markdownify }}
        {{ end }} {{ if .Params.show_publish_date }} {{ with .PublishDate }}

        {{ partial "layouts/date.html" . }}

        {{ end }} {{ end }} {{ $t := debug.Timer "single.categories" }} {{ $categories := .GetTerms "categories" }} {{ with $categories }}
        {{ range . }} {{ $text := .LinkTitle }} {{ $class := "" }} {{ range (slice true false ) }} {{ $color := partial "helpers/funcs/color-from-string.html" (dict "text" $text "dark" . "--single" "green" ) }} {{ $prefix := "" }} {{ if . }} {{ $prefix = "dark:" }} {{ end }} {{ $class = printf "%sbg-%s-%d %stext-%s-%d border %sborder-%s-%d" $prefix $color.color $color.shade1 $prefix $color.color $color.shade2 $prefix $color.color $color.shade3 }} {{ end }} {{ .LinkTitle }} {{ end }}
        {{ end }} {{ $t.Stop }} {{ if .Params.functions_and_methods.signatures }}
        {{- partial "docs/functions-signatures.html" . -}} {{- partial "docs/functions-return-type.html" . -}} {{- partial "docs/functions-aliases.html" . -}}
        {{ end }} {{ $t := debug.Timer "single.content" }} {{ .Content }} {{ $t.Stop }} {{ $t := debug.Timer "single.page-edit" }} {{ partial "layouts/page-edit.html" . }} {{ $t.Stop }}
        {{ $ttop.Stop }} {{ end }} {{ define "rightsidebar_content" }} {{/* in-this-section.html depends on these being reneredc first. */}} {{ $related := partial "layouts/related.html" . }} {{ $toc := partial "layouts/toc.html" . }} {{ if not .Params.hide_in_this_section }} {{ partial "layouts/in-this-section.html" . }} {{ end }} {{ $related }} {{ if $.Store.Get "hasToc" }} {{ $toc }} {{ end }} {{ end }} gohugoio-hugo-6abdaca/docs/netlify.toml000066400000000000000000000020601507671574500204330ustar00rootroot00000000000000[build] publish = "public" command = "hugo --gc --minify" [build.environment] HUGO_VERSION = "0.148.2" [context.production.environment] HUGO_ENV = "production" HUGO_ENABLEGITINFO = "true" [context.split1] command = "hugo --gc --minify --enableGitInfo" [context.split1.environment] HUGO_ENV = "production" [context.deploy-preview] command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL --enableGitInfo" [context.branch-deploy] command = "hugo --gc --minify -b $DEPLOY_PRIME_URL" [context.next.environment] HUGO_ENABLEGITINFO = "true" [[headers]] for = "/*.jpg" [headers.values] Cache-Control = "public, max-age=31536000" [[headers]] for = "/*.png" [headers.values] Cache-Control = "public, max-age=31536000" [[headers]] for = "/*.css" [headers.values] Cache-Control = "public, max-age=31536000" [[headers]] for = "/*.js" [headers.values] Cache-Control = "public, max-age=31536000" [[headers]] for = "/*.ttf" [headers.values] Cache-Control = "public, max-age=31536000" gohugoio-hugo-6abdaca/docs/package.hugo.json000066400000000000000000000011451507671574500213160ustar00rootroot00000000000000{ "name": "hugoDocs", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "", "devDependencies": { "@awmottaz/prettier-plugin-void-html": "~1.8.0", "@tailwindcss/cli": "~4.1.0", "@tailwindcss/typography": "~0.5.16", "prettier": "~3.5.3", "prettier-plugin-go-template": "~0.0.15", "tailwindcss": "~4.1.0" }, "dependencies": { "@alpinejs/focus": "~3.14.9", "@alpinejs/persist": "~3.14.9", "@hotwired/turbo": "~8.0.13", "alpinejs": "~3.14.9" } } gohugoio-hugo-6abdaca/docs/package.json000066400000000000000000000011451507671574500203550ustar00rootroot00000000000000{ "name": "hugoDocs", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "", "devDependencies": { "@awmottaz/prettier-plugin-void-html": "~1.8.0", "@tailwindcss/cli": "~4.1.0", "@tailwindcss/typography": "~0.5.16", "prettier": "~3.5.3", "prettier-plugin-go-template": "~0.0.15", "tailwindcss": "~4.1.0" }, "dependencies": { "@alpinejs/focus": "~3.14.9", "@alpinejs/persist": "~3.14.9", "@hotwired/turbo": "~8.0.13", "alpinejs": "~3.14.9" } } gohugoio-hugo-6abdaca/docs/static/000077500000000000000000000000001507671574500173555ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/static/android-chrome-144x144.png000066400000000000000000000166741507671574500237230ustar00rootroot00000000000000PNG  IHDRFgAMA a cHRMz&u0`:pQ<bKGDtIME]]IDATxYpyHWM[^3=3In%g*˭8=x_Sc[y/qblj]S+\ۙxZJWHq  ($@wXjO?lٲW"{=l<b'>## Pp75` 7G#v`:mF-DGaXtH47i=@m`C{Ɇ.q)(OS'h@ftЀ#ҡh c8:8N.gQ צV< 5}PmR\ϟ>5W)2 G$C 6'Ý=ZQNh,dHcQCN vS kt s ?8z8DVO#F4њ?:ush+OF ^$Sd.R"K.ޫڧ_̕frHk:Hh9, "~z#o-F^wR. />]x[H m5cpA:stpt>u8"GJ3_w_ԖԱA:iz{%v5rIT>_MtjKa;7/~(~pU){?wm# P/mD?};saCEYXC(܂H,`d=8E2r5 ԫUXr,~GJ}|QyBiȮka9][Ț/2sʊ Ӊ£pt :2%Ӑ$ɪi?;a7gz&"Cb z:86tLsW(Nc`YP<>>+Gb xlZ5*nWK? 3yj @͂pm^|Qmkմ!:C òփhB6T;^\qiE,6 יǩs?_f CAyc#E#p8]@$dSidIk5P8-?x8]ޓY9ZWwm2z-?Dސ;Lf$U@(Fxl 4GK%ZL|t,[Vrw.W==Aw* $gk]k7=^טw@ˊi90 @HAPMCXB*@1,lkgoݼV#Z1u]6ҕJ[3<.;h$`DW@UU2YqT-,PּO|઼КRk佶YL>f&>i$N!֕F1<,?WpE$YYMA׭+pM:(뭙ҿ,OkpHϣ"t*? :|+)7\"3C90"c1^O ]MTmE5(E*+Q_])8JhoR4&<ƍEʪ<7* U>;,? z+?W5"|x|2R =(}z{e@{Qy=Gw_*q$d~ZNB{凡08;ഋ(\z DJylާ?>$?&,NG=A趀ggdBYϝ2s2{;QP8].F"嶰_Ez$4$ѲMrh/3!o~?Mh1D;ygWNn޾]+˱B  @mvu WT;,YD6"Rxlb,ҜUrweD֗WJ?+F;vڝ 궧y0>qx+D~Xo7|?6}.wSv 9$"B@o qH o# <~{<(rH(Fhc^ZG߼}_tHRx* PUr^ UFc^Fw0*r dm#( T/ofZi[z\>+PJ~OAAX0N Jw;.JxL<  XJ0V??"fmm:5;C҉!mÆaaY?ֲH}O]s"ĻJb=ﷆP7)l7aHϫ.ލB#Q86 E)XA(w(l2jba5"ve^]ר`zZ!,p$x n12N#H$MA-jt~C6D!J)҃y&@tl 㓇LkǃɩS$߬t%T{ѷ-miYl׾ހщ1A6щ1xuc#OW  `3ݽ"ulY+JhveuE X\5^XwiU=JQ a@mj/8=›l -SeJ6@LȖ)2% [dd˔ll -SeJG gL@I'Z ky::,i +.9`'@.^hy [Ȗ)2% [dd˔ll -SeJ6@LȖ)RFLyZb0jM@eRqpoi8.g{}FT Xl:]Sq*YH5&}&D2% [dd˔ll -SeJ6@LȖ)2% [dd˔ll -SeJ6@LȖ)2Dkn?Qo8@B?["TuH42kд>NcEy{H@O5m V ^C>ÿ{S=C) V^F5#a,kgETUE.Akh>t 5^D =G!Et{ !6HfE(( H(f󠚆^i-{;(\ JdQ.F~Ej*2$4YnR~_t"5ZEe>J@ R+q9cE#p86H݊Ȓl*LbZ T-VZY;wJmţ-AVʋȯ!:?vjb.Jb Ҿih+BQh0;KҚPfOdw%~ @rZp<>sobΏZ7}NXB:@a- UUMEơ ^كd4e{8]s{-TIPhl*rP4\{3D@U~!@MJ`!R(0ZzA:2IdS)Hd~iţ.߹PNfѸ(It(6T̊wAv+cΫN̔-Hs "Q#`MaP 7Z3.B2r5U+ ! Ζcu\}=o-߄4??9~ψqc0e??;QQȫ:Lfe |rv0m?m7˸(Z"!(E1ʋWȬ&!KU 1UJ7* tG K9BMw'sg:/.* PˣZ*c((+B+ SOIw%k)ȣPHR  = 5Y -I'Kz- U&d6j| FtlH2$h 8 ZlbKulT~ۗ1X7zRE7ש%2q\,/0 \n7P~XyLZ ;Sѣ Ҽ( F7? ؀@FM@:DOLH @)h y|="`$IVs:tAe!B@)P*+ HCPr2,/ݼ\/JA<6S< %[)CR1CѠ:P{2#U^_,}&\+Qa-J`$H,m55j*҉r :S*G_<8/ޮ{h4~$]E=uB-℘WoF_傜¸M]&HR|p`}GB K҉U_D1̭"@rӓ_׻8#/(NdMQ8ңN;<뾧8~㏍z}ӧ\sspp< cf%]g9ͶRPB!0O"MSX!OR2_~>h|`P7c=NOc}HƵ!A $VOO9qht蠠`YPѱ<~޴xln`j(CLP~hv[Sq#8Fs^+՗")\刔Q/&j(PW!0Cиqj\,v5VwKQ(N.A2*`*2^ɢjte,OziMHUZFĥEEx m#ֲj 2UjUKҊ|7 Q NWfvHk,6Қ71uhevSP0𯷍0 cHQ .rH,9AL姷ϕ?_>%/Qѥ}vXe2@{'c c譇΋OEnh!˱nEǜ?jjtGc+XqP}oiyz@VE#`8[+}tvI>Tbf"((8`8plQMCZC&\f`}JTGw^|zaɴs؍?ңt:4]Zsr}3C~P\nx>܍JXR(A떀À/&\ l?-Zԋ:iJE<Шo"Xu!= .젵pavcKVjO{ ogf r&Oh QAt3Ӛwuo _X\9FA hɫ&y|vG2 Ni9۟>e$Ư]?dUYmĻ.ȏ`>GUz܇ڦ,NGCTxM]y{/9.$@ᨘ(oϔn9vpӕc4)?X}R&" C O= $,(tCB@Yw|ɴIX!߳ڷ,bLki&y,W_zTa+"ZhkOT\<_ :^U;龎:~@d, 7g&/-z=w_pHy_vIGԡ9Hk} .hs}voDG%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/android-chrome-192x192.png000066400000000000000000000240301507671574500237120ustar00rootroot00000000000000PNG  IHDRRlgAMA a cHRMz&u0`:pQ<bKGDtIME]&IDATxwם翷ADQ,JԾyi;I'$ӝg潏Ϝ3O/:O4/st$vH.JBR\@RC"RR HOB۲{{0 ` d/0;E?n?}] %0X_fhK0t&o=<h;?3=&.LlFfb(gB&ioiM+o @w˿{$ȏ8PP.0] Mv |A/A{wYE;A(l0& Z>>es]aA.Zd<ߜj}_NƝ?rKEP)*er{9R|B0fVtC9vPWTӼM޿{v"6`FZ6a{mlDc+O۾)PP% & ~yDK*2t!`A0 |zc;vww?FD-ljag򿉝>0ah yß YWQ^ӝꍹ{/g4 l+ͳy1 L&(p5IqRz~T~op$H3كkW]0"C洈Py9ݱO#/a('~!shO%B˿99 X}/=Fc`,`_O'?rӔRQ'!J٦>\{xF0>( anX{lkn;BI^Ʃ-W{ uW7BTvj=+O7gn&+@QlP3_`5γgo_* uT&޿srOtAj! J{7sGgw1ځx^<8ZPO~喰-2 Z/8|Z]g f_W IH+㘭bs:Ĵ4_q3ǁ:9hP̺O'>ly0[ERZ/PYsϟt7~\@6e>! qkͩu=Uiecnw(&RB& I7aݯ~P):[K|r)j؞^pu~?ˎ7ynkRP0Bp8S MKH#JAKElM3 WߗJ?s|G  @ E#rW>|臑;B&)(G o(CMӐd#͂jr!,Մ_3ɟϋOEVq GϷGaIێ7 t.FG ΁!eDʥ2@Bm*Wmj҇Xl`^?84@[J |Q+*U';aG0FhtvG-~r==*U$cH'U% e'|%}0Vɗ  YR[Ł@+L=wK C?)ٿNT [֤y cp{= J)J"kQRiڋRG̿#s"#-:𶊾@kO&sG5 F Z~K!^;6- `_O?PΑL?}tpn1CaB( kQEDŕʿZQ}7Z_*UIe 7fzU=Ϸ]Vvl{~#VǑ!U=irʍHმWJ!*ElE9w~yv%/&Q8ݮ56JH#JC*8+& ݻ$ݬyH̾U\TUu_:ywz`_x^qxۥ^yP堩Z/ڦPm}Wϟ<_A*z&VOY /[M/P?}:((!p]"n;Я&#J!]GT[M!lo^*:1I,@mM߸ډ-OExRjvD Á`$6 aVZ#O@V{6%H%œbcqGmSK.5ךN ?tK9jBo v!4:p] F8YI$\_GTַkZ=#N)ٕ{aw9`VivMv/HwHn[u@*ѨmM݆pB*UŐI$Pjp )f'*u l:V 8gof=?/ Z~ʚ;y~b>:L$-nX=^嶊nQ[?#T;wl27E{׋(| a(|:* EۦrJMԖC}:UBxn/2;Aw;Z廾ŷ}xRXnS&.'B##m Ro֤2r@owb/mA[w$zqumI Cfy~'Jz DJlC.V>=yozCpm8m41mJMv_:=px X<?c#P5tE|iUڝ.muQ?v"jv;(wyܺ}axMR+3~7n +oooL{Q.vQPwB u%Op$jVj(al: tԧ1os)%hHxoY.F~__fMv6} ndHH␤*)ڶ&{GsoV"h)jg6fc8'X Fhl.O[<NN k:WvG !LAQ;NQp럖T5#py<T&7Goz!@Ec7!ip JkGD,(np$.'`tByG ő![`!L| 0~t D][y~aǎnET!Dx}`[}V`N6,nB<^"c 7OYcp0N u VAQpqhMK@@C-οUt <6`$ fR،h &vՅ__F|cm&vyV_ AN)7@0 !z ul^mX dh ca` 4L 100&@h ca` 4L 100&@h ca` 4L 100>@1;wh J|MF!RhWIjRm/cjR 5I_$ ln9$ dx@4b1T+ Z AӴq%C@P.Y3@e/\,uk(xtt2 #GtGCSB@TJ%ĖWI=1:T HǓ(`(ag"8*!H ToЉ.-Rsy&!PUt(ʅ4vocn3ۤ]?Rr_ PQ) <6 BiJ<(,TEKc#~w9rBIVsh$RX|4稖"V(K\s,>G&h]h\PB=$wm33>\ӹuc%n}* Bcal/Zl2dtr’B8-WsbZNPTV>Jy_jv;, @Jg ȥR7`~R,(fPgx>LЬ7>'ŏfjc< -`#Tr^vj㏀@UTbqr9#a tԯp%($ $3}_. AZ"!OV]6MCZ}˥S;PV$j Ry3K(Ԫb˫gA(A@?u> T=jJgA4f"+$HP)@iۚ;~,QKm}~%/YPslhyRoxp4 cxtuY*4Kqwhv2Z\?t(NzԐhB.ZlN#<8ZqjمgKFq((C zQCW!_qƁfƠ[(~$>tD>pZQ"ΠT,"0<(\/AvƻT4{_b :ܓtGQY WNWt|@zy0ꀖi)=q^z7hH)YYt7ml2z |<_Gn9prW R>?ѿhq6f'X"0$";Q~>Q[YKKDwXtS-!"D !(E1k Ӛ>ɡTo~r_J7c3BЃݟVGT蹿QЋc;g^,{!kɧ̵GW#)%N۫ȍPP6!FGpv]WKe$c$k5 \)\?l23<ڗu7X;14Y$}7'r>DSKե(g Bۥfbacpy\ư\: Ԕ_^jo_^+)5N#Y}lA#3^C D賁1#:5f7ы=׎-/JBXm3x|^۵aSNeFQA<8JbqRulzaF?hY/a3W|;J{^W4 uo oRsxIQLHjs*lVB_$I(dUl"D]M2b ' 6l|˹?_.oG M=?~}]a60@ਿOI nFolq,~z-l`6lNPx1L\~vly QxڍFTUC!Erm\o 7gG eoiyA1ձ$7OEEv4O< ɳ]L]x.k"] Fhl.GwGE$1d)(ba RcpMHw]#i,p- k&S}`8-ReS>yK/T).f2Z>xA} `k6xR=5gr犷,)8@8ǫfm[@nS .%hxifqy4{+^PBh\?0f !h.sH~^#^E "4:Y۴,HǐKd1SkGg7Y*7~_@365ZZ`}Ҽ`bbvm*.gtRlzaS& P*gώKbfA냂:;xfP^ըj}}v!46PM|rMO_R*t#_ޟ-V|{kk}6lF%- Ņه+/-.;|*xivmGM6OY-߇ y~šNoΝ~(dt4V؃œXPU󆟓/_O5EZ  a8._@U5TKed)di=/6ZZH>O l,p{j_s8`tV+cǙ󏽯,UlDM_I( d3x逺td9e^yTg_4E1,ښ~~ɁA-m`L^28om^ꝯf_ ښ}m_&^@Wl i2M,/{~u2<)pT!p PDTÕN>[=>}Ey~ɡ.mfy[斴‰g}hҶi7!(Gx@Zzz\q|g<߼v=γ:t>0ҢڦnJǓΫg%m U7M<,ܼr8!YۚF7pҝa`ǴU:u(oEd;-,U}uEv,};ٮCb6ofǶ(M^2OsN9n[NߕU[H/֕! ez&#w!̴i03Dg8/.shzpDҍ57Ic{<>nmS7/3Nx/ܐfi8ZviGśf+7;)B0c 7^!.y_=sjv́fCie:wL]ݫ}aٚvXl9ґrKV*v5xG}=[9:WJLmy~fƵwc`g3-ڦ+G||~B/)c4+n: &mfg>z>/x+BӮyp(8t֙(Vs)k&&y]l&5?\8~mO_h 濚Tk0`,Y,Ϸ&.b0Pl߫eXw"='[%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/android-chrome-256x256.png000066400000000000000000000353601507671574500237240ustar00rootroot00000000000000PNG  IHDR\rfgAMA a cHRMz&u0`:pQ<bKGDtIME]9IDATxYwcǕ8#rdLKJ dU\.U]]^ G}ݫv.]nٖ풥T*I )> D$H?#)y8;v@0{I߀`|L&7y? l.c 1Bp00la.Bo /f `0 i"}_ A3l^C273|UA8=Nߟm"0"gxH[z9y7|Ik$ s(M)k'C҆k66Ġ_D5^\8ʑIݰ< 7־H8C<0N`srIo\GO`7;+ݩ%Q {bY0e(CTwKwOK X)l57XG?X9c?bA@ !cw֗j[|_[ Hw-awGAO%[?T(ʊ܆+^ 5x!au WZ;wY7ɦ˲C6؞?`@-b}!~rgA/6x!݈+}'?WߜnI cO 2ڊh=FZ^!.@0A61|`OhS1#C2| @jo|©L;}Gs F#2Crr-|ǿz'Q( !A>uK<VR]hBBA@ yh'r\]0fvk 5tXXd4нbPpjϿiWB Ҋ'1]}ވ._վ uƜ oQpJzM3in70>ҁ / Vc1u6~n=Ҋ!cC $6YoM}~ /?[4r?`ɧ_ :&l- Owz\|y <2ݍݶ/7\>=ͤUφpPk-`e]mcp!_vS޵޸w'ѯ~/ơKC(bp93rAK)ky&ʙDr+Ϟ~zD㾝R+x9ېDlzF.t_F_~ ٱ< KZ-;*X0${IuG[z׾ho1 :c`zz>@8D.!P91~W/0mT %Q9Smh2{v)󓵷(2LĶ&̬LE4Y.ſCM>/H̥K%|=1B)Ga= 7 Axx3V/fu j[.0s] s%L|m:e$< 2iC!H3sogta j Lbm{"HtJKgWϗǗ*DZx/vKJ6}f.c /$9 Mz>pycQPYpBgYlR *8*IRKk%rӑ/;iů ]fv;=^ }[qq|XاC,1~:B`&J˲@SuZyyJ:Vrq<󩍒=:\gه奧cA!B(R Fà!1U2Upl3*HRZ_ ?X9owN4o6$]}LO1{[4BWBKs+-۞~>?(|s/)2&aH)vh5`tY\ g\_ uO;J#b/XmSnXbaS]6`{bl>MK&KCONABq=R>L4ȼ7k?*Ly79knpF[ʻwv}(p{p,|pA)hV(gQ-`&ܷ2G@!QY*{'Okӌ&=4WwsɌT]␸>|ɲ`$x:p<I? pl&PT`6^lM [/Ư/"f4 M݁n>z^^]ҍؿ?O.<<` Ra>|H? R _0`8 UU02 +kY5JkNI^WUUܻ<0݊'s=z^뱲WC9DWC,@4?p0oEgYoˣT(jyjY@iW4F)j<{9hu͌]}\!pKyGbڞwQDTp-ӝvR8fb.rF1Ƞp(Ud韯f\PKx@f4߆!z3>ف WK[[_|Em=JǢSF#PT[Q-LrlRsz{Iߕܗώ,? {{!}΂CYIA[MM8u_8yQvt n1|1Gkiε?<^C}uzu @eӤ'^gߝk wA1$A۟(gJuTeX 3f2G/']qr-iFw_r۹Z˷פ>ш%nˆS$S{nqPD1CVcyX.@Ͽ?_ Uӌ!#Mfͺl:s*߈UoDM{ Jt]^,0msry4u0A‘HFd ؇l}*gĚڻ! 3O;~( EP^{&j2j sAP&[v8` !f}-~f鷑vݫww`OZ{g~=/^VXUG;>/vBRsbPwp^OI '8ӧeHS6"* QS45dbh|$!#/!O8#0UxYeAHwo'lv@jv5@u$iRv\{# Q:Sp'?xC][p=NڝYQRF(Pfa/;స[ȵb{g}w{jѮ0nїG[ٹNCR$X:wsGCusonj EPsNsGc$ҐTogyvtlT'M-%*iȤ2`R(4}lE"H̥FE޾`t& _0C'#ERcB9 (mSa ]{A^@O?W((ӕeBaR 1BP.Q\uVvL\[ ^^KU ( lkēIDSIh>0|Č$YBb.`8r.b>f/e[ ׌H_:sH=ޝuh4@0B0|x!}ʹ<ʅV/\?U ^c<;mDb1$ݮgX̽_6 /C4+nÁ,'}'!ecHSV)+CI'R# J0zDP a3` 0BF@0f! #@ a3` 0BF@0f! #@ a3`=Ntr22.Zl6v-uRhw#!^X?{;zNϧLB%LFi \jB5*0οt`$ tZ i3` 0BF@0f! #@ a3` 0BF@0f! #@ a3` 0BF@0f! #@ a3` 0BF@0f! #@ aF8瓾`(Yma!`09 mONfjL[-!Bڭ,˜ iWg`0^4ILUTBm,!QMTK%0`:<թFzvR@sh듾16y8C!C1S_`ͣ?ΩNCٞ 062Osx:IK /c(fsXߜ:;۫w!0Z-=yVx:(J)DPP *ʅ,z6 `PXZjDTZ" FR.R!9ͶF%}74zFZx:h2YQIJ@0::mY( (fshj`7:Wlj$(=M^ctk ZMw&N#JbY #WB6Z۴` jKmwctQWtY!#1?(й; v@gYYGTi?wl۶0&ؑ?,8s RQP t! zCsnvP 0yCn=mlRZ0 gݔQc9V`x' 08bm}r{9̿N PTl4ŐZw  !`Y"ATc 벹jvШVϬZ,ɭ_=>BckS^HvFU U$չY@+~ye۷/+G%:(W'SЃH"@ׁ[^Ep jZ<6r':{'09팥<,Mߝn#v1j=|ǧk\uml@n8w?}'J(4: 0H5Xuȓ|Ʉ Z62)z;Kö\CrB/ (rh5KA{ؾqBz*=u lxNt=K!8~G ]:clvf rN6i$,IwOBNظ;?ZB6z 8+=PJYSw*OҭW֮G\co%@`WO˗[ou=!~gjyY)Lט0>5nѨTNB!k*0頓c;j2ϟ#A<7~HX33g=r^/b&UBHkpgyЋ{{zwLK,Uf=o6/>>D=8+63wUh6 bb$|(;22V֩+h;:5|7XOl3R^ƌ7tp/`+st^_tVSLM0 AwYZہ*5uCP-ֱ칛cYu _!+DՏ^vi ^{g5W^2h;uEF՟y%OsƂd~?=9y~i*RhS(FVH! o`P ۲P)QPv'PՕ'[+[O%U5fk5A9{&u_{glW.*QesL-4B23Ao}c16&$I ل `V.#)uMp;dg}B W.6JϩLxu3ߞf` qg ,TɨYy=iVYm:p&$t:h7W BV5QlN(ڍVڋf#|DeOO+zBaTyofk^vFbKͼ[=Ww)ZƝ]^_>ܷ-? ^66nqfF4B<8tLMYϡjvzO>w@z.]9Vqdv9׹LzgVmwmwG٨uzow{IpG4P<]~>ιO5I(!gnk[ LlmAWL \tˎ)˂AcnjzMAay{z9ji*B}off^Q&"Z/f/ycuKr6WMIő\G eǻpѨՑ_͠R*±L) 3_>W䘹 J6~6=BП+ ^o`3!R\u'ooD_ 5g&,MՐO#>x'tv, , l큀P8STsM;,}ioݔ~4.cIo *Y 8vt..̍dyy%ɇlFVCR!תp龛+`u18ZJJ{`K$P 3aTM*^5׽ ˬ6Sp!{jeteUv7$H᠓4FF9dE(np 6֞ H,jok?=8m~]ߓf˂m;|yUi_[ ziY 2B0‰vsnPB1CZuȬ@B[g{VYϨ${L iŀO xgY@@8Eb~Hx:u4*U2먖˰,0| Y꣇'Gǭ0:R:+&l. ^2>G4h6wWPU'{leM3Y m3mPDTdޫYR?oߪLs' C, =A˂Aل/ydtQM-ŅGCm9lA$ ߏb7@)lD1Ga=V ,>mYիG72gp37s\ݮ<[U ozV貋]KmNe7n^_Nf~n9kNL?CY vVL8|j#~;KJChpȲh"<O;ۮ7[ˠ\xcxBD{k=|i8Vʜ9}wPGީqդo` $a(e;~;q=Rv >$ӈSP5me2]@i=zv #j= 7nk]rmgA ßuc6Ō)eG8ƍәIMfԥ( CH.#A AFμ# 0CW/6h4pK=p;8xf9oމ^C{eY);Htˎ=t3^2452Eϔ麷H]/^yxx@e/o70JƔV/:wWBc5%%PPv p0phx-;~Y%h7(es(f0̶ GU YK6nҐZĶǴR{_$#&kGe-'tuN7VPp*e]_"~~+]vVmTٶՆN ys%-It&{ȩK@UU1c1$Eqp]}DznP-P-`'~[eRy~x3m ж^oATI?l9>^{>sv~1Ǒ(|E{ћqXeMѐ@@%^5ndrdz3ߊ6˂ۖo[5Ň 39i]\y^(S^ CK;9Wlw wGɤlj`jC@xtĊvZϐ&!pOmiNB%v0lWsb?$3,0xmiU;H=yabQ?BlxX3 Z:ѸmaQ2eiŃN3ұQ_0# Krr!98W8~_D3_zBuY@@ IԮExקVOKw[>^!;MW6؂]n?r}UėnH{qb%ESvwe S|x2 "ȰL?B`i/x0/܈^:Ob~&{^ BO>P< WHncO{VUZ+0Cr;7%bSsӎ=Mr[fz|gk'Ch0"}w Fcf^pIx_)ɡ); ĬfܼܸBn:ۀ` ϸFa; QHa%>[iǃ Tr*AH*|5Zp l~!<=_ٶ{D^t^=kӠnݖ٤ӥ?gdY.o3x:"xW܃铏EaڤҊeP8 1Vgo^;YO{#w!#f/}_ .=*s:͈@mgwi:_ӟ'!ӊSkMJ| E3SE:fP_jPP ׮\|{ٸnIßۿŷY&pfno'|dz!GݖL4[+Nnm?&*Bf}ZqǗKG* #ԁW@`$ϞkBAX{, 쭶 VBl['F>i2I#RZw@#2/ܧgZcG^7w7] 3Cvܿ[!:%-#,/_x>Ih nzxڼYǪ[o}o_oCFcVi/Ds {B]~pwَ8!,OG-~V:JBkY;.QqL1w/0I88)DPr-KE=j̝"[^%I;Hߝbxu+$ݯ{=6mս3|}w !F\v{u\V 6 @2~!迺?#cCL r{ _lM!B<KKޓ>_[: q6H+3$e@'os?v-4}~@`'5?2 :Do7? q+W_"` `{!5zsițu1aӈ)f~A^#plnb?!Š%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/android-chrome-36x36.png000066400000000000000000000030701507671574500235450ustar00rootroot00000000000000PNG  IHDR$$hgAMA a cHRMz&u0`:pQ<4PLTEfffffffff+q x{Gkwz{ffffffuz{z"s y{{5o wz{~Mjvz{)qy{fffz{fff z{fff#y#yfff#w{Dlx{ffffffm_g+r y{ffffffySj tzffffffDmvzDlffffffhdf5px{ffffffo\h(r y{(rfffffffffLkvzufffffffffzz| { $95>=}-:<{)ZyvOVxR("8;:~,;w49}BE~DG9~-%:+aS\X~//7 ':|AWtRNSj D,vW=R cgh`-+h $;(HH,Z!3oo %@0PbKGDjtIME];IDAT8c`fV66VfF|-<> &:3:<4}1B|KMXBJw2!H% $s|?T3&{B`Z& i{懍WwfU̍ a~\T۾nģ%bD _lXLj@7mHfA6H.jm>_;] mhuI=~/ UUߗ"0B OFpV&K;Ӡv^J()%rŕU'\FRP? nG3V& `ȳ%£8½)@0<+y2irmT> N.K; UGx֞)q4s?AJ:H,P$B.aine:^uЁF%Tl5߷$&yJh$&<ߙk}mz7ȁe{t0=9\'{?X߀D(Es䬕(B A V{zhP^qJJen7 @2>Ƙw0ȧ'^e6c48@at=@=48jM3;CHv=ep2uw{\%TddKP6dCH7I 8!LC{zhPmU94% ŷ<<P|) A\Xdm9P­;H)LaؖE!B]~I˶ Ys +% ǻ% KdWHbH˲- 2{u3Ry2kzm,bDX2%RoK>H:,z+KFrkߺ)%_@F:e4]ˁ_}yid)%G4 n/ΠnB3W = +,E.i f)l]=Qtʜ.U@- iqLC/ʾ_Q1M a;{B&IP 3@TBJ隫X 76ߘY׀|7a?(_ҁ0i'.JN:s[CۓݺVJ;50BGӵo-%OE`(uu~8"@TH~eע9 u36 :@m!?z]F%Z#Zld̏fO_p󂭒@޹.oMVFSǮ.GDuk ۗd$:_}0iXOS\_;x}vN+pFLgVUiFD$zbwu%K( E"'R ht#mrDfnrq㚍^uyڛ&;AJV}w=5cWЮE~VV#۰rzݙ`@'qӥU?TkާN\ 4M)K=jxDW7h-e.n\7f+r׮=|3-Wlg9jOqMO}?6TQҽ0 9% "4J5Εn]Lz@2ۉ:˪xqĺ^l۟>g1l6LggNxF.jN9ٶmߊwS"?xK)|^3kٔӱ]35Y]ߛv1`gJ8>;]Ի?a {' ^)[(D̫Wv{)L'~ޭpC)TVNMߏjʄ?I] s75}qՐ}gV*XnX`5,c@"Ă):e+sӵ3 ZLg^}î\O~;!?OI܈9;3Y?@Muv|ɺm NT5pQ{>oy^m 0U3;P(gDi㌘]y˞#g%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/android-chrome-96x96.png000066400000000000000000000112131507671574500235570ustar00rootroot00000000000000PNG  IHDR``w8gAMA a cHRMz&u0`:pQ<bKGDtIME],IDATx]koWz~p83)Ȳ_e;786n l|跢c 4@"@AM4ms٤ĖDJH:3pp$eDQ"`9y3 裏>H'`o5WR3 更s'*Lelj0I0'g 30pTjQI"z:g` !=}o\ E㛻_yRD($º2z"|kp';_^ ?$R5Zh4޽t@~>.@&:V =A@[r@% Lh륑5g/cFa ">E.av%މKo_7m燎@n 4Nu=3&TTp=``0Z BX^J"Aƅ#[gTcRGhP>(±=w=yRPN'a  nE%E$(eA!xԯ4汚4lAYc(HW]~L;-!gY ‘Hn[|Pģ1u6:G~?.߾q@mkmЪ|2.^I8"$m\>XxB>/F# 0Lo}rQ3YPjoDCuP->1؂Ɔ h<*g]O=2'\Twd A c 4h?u(kKHDʲS"g>{FkeiSaC4+@Co^x텝C ) |"DlxZ@YqD12:Tְu:rSo8vN]qup{HV, o`<B.U$PJQ!Z@KMߙ9XI>LYؐ,Bp8 Y) \`3 hܡ}H.ıh$4, (_F} (.'G\I涒00D(2%,y#; ưޢ(.EQrX}.QJyЦ[LǍ];2:.ܳ bC~ 0۔FuڄrcǞ s3 PN `Ǟ JW(c dU v}3n. `MV̪_"^V^'o"1SC@ؽ]fT־Y"6o촱vjS7}9 2t}>]F.ðݞ|k6SG^bon`s@'e 2t}ކRm:̗zMK=4yq,'`S +>]F.O@'e 2t}nnfs;HmGlҢIQToǏ4AQQI[|^,^M~Cdݾ JejAn [8I& FpG| :Dr1J ~ui\TѻI&t SXE!娢圦iծ) шju]Ks~EӌN&3( n#mJ&#jS(E<E&)|RK9떿\Si%A:̟ګ秕Orh[yn`9D>E }.6؜AC ƴ#O+†M \rID͞U w}? % sȤF \˗mY}iH!_B"f C=3YΎγT3g˟:\$,WvgYfo܊9/"p| Ej%!4_񗞏mƑ7O_;- Hb_@M!/Tᶈ𦙑#3;/̰] KarFq\}uPY2bwvxqJ߬߈U>_ 6Cm"̫c12ힺ$=?|`ĕ8 TDIg-ȲiHnǀҟg˧ccXۮuqJ*"|L{o8&\3:)Pge BKH.vcEU݈ b19Ptiޭe[Wyc`"BIe;n?i*@ud)cg&N(TT% %7v00_bFHs2a;3eqz5U>]$ހC.LyZ5ttj+]TJ;S Nk^֨&s8*ea^? [@*ؐjفB3vn4uZڊ& {aue5^w=b 8@ jF?VdH.7j;+f-^HaoKhS+Kk'Kɉ;sC"3?0J C߈wn?4:_-7G:$XX'5apydFzvGHl(N|)~rqJhiH:&[V'¿cUc-[MZA稼8t@~ބvQ_緽v2uM7+ϲ{/y(rګ~Wy~Dfo} Sr[_ch-f~TϓaFψOOuɌӂdDoR?4|rQ]ݕHl5Vp?2#=7tٱ5å/L.Dw^7]>$"`햼 k $wTj"XpyeʬyKnzvOIբ&?8e]ps[xER1E}nvǔϊbK=A`a?aJ<`3=Ƽ=C:DpXII;* Uջ #BjpX}cQ56U&.,T `5xHoJcL,o%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/apple-touch-icon.png000066400000000000000000000141361507671574500232370ustar00rootroot00000000000000PNG  IHDRegAMA a cHRMz&u0`:pQ<bKGDtIME7 IDATxٓ}cf0\K\xKRv,(ǎ*ʖd;D< )W^ R$ZۡeGdr;M9x-IAܹ0`ptNQA<0gE70@ j /D+D+D+D+D+D+D+D+D+D+D+̠0x얥N^,4$wFӷѾ}B~*nQʡ[תv-C#tK•V~t L;'EQܺTC)a QaT낼ǰ03gJ _ZA,,9U;qMRZVJOo mYD-Bdȁqx)cMEG614)(DRg9۴\fnCZع9@,41Ԍ\T%Gku/,*|a|e[9imYX^oƯPƉ)>S.t)sej([?1 ؠeM~v~lcy1whNwo߷ t1m%e/.V[!_++c w/Xz9_:g:Xv ;=Vz|[.DF[~t湢0DMC}>a9zS3b-/€)D,Cєc;i9h >DܳU*6ꄑ1mekYi"шEQ^KUEmۋ"_]9%n[:rȈɁ1/i+U/( !?TضS-zOs Y*F!c3RYfhOT7NcwHrR:K&Xnz2[r(gM]ASSoIVèbc^5<؈$%2![] h6b6Weeze gÿ`p,[=yx9?d)0EQB,ȄD!s;BZ-feq<ժC_CܹEܴbj9eӭe* Bt$fZ|V!۲*rq6{+D[>Y eC)W5N-r) x*;FjF)_( f-woIEwm޿} S=|I{T%8 aH,rhWЙ ƻ0BIG8òFLSKr674E"m^\aعaV+;UǴ<#>/JJ 117\\(YbwmRǴo].=Ӵ%'2pkAc٬Z*{Y!ݷ"{pײA;\yazmcFS!!MFmTz" RQxx}UR ȡKoמ;{Ç1 JT4`{]^LT E95 xYޅ}p=ajFgt%&R&qAwkr6]ݹ{J{ }q )wشk'^}oGn~)4M H"3 1b6[-W"8[["C\.:  Mf)W( u;Zٳ5v4M,VEpfKd2U 12(ư:ߞ?=fX8WI3ڹ{QVJe &o?Eѝȯ}U:BPe'< )ÛE˳!⃻՛7cCHc/ W+eKv &)-3<C4ς=)Hq^,gsMM︔znR^vAMg;[`K&L*qce!rh:kYH1,b3jI/os+&}!$ O`^ѿhzx 4M>Or @} afcwApApApApApApApApApApApApApApApel1XNOD:0rP&.@ߘ.*ViI}WWWWWWWWWWW4mhy̠ `x2/Ʒ0 0*w90Yr0h@!`.tH )H 99999999999999999999sӃE qsM]wȇ=`VUTCq鵊ڟ_߷f:C)fF9n߲Gbڬmďymۅ|?f@C:7DB@? BFVVJ%lw%,6.uO%?Af˗Ŗa @}3#<[ #w媪(R: ?>Bi*rIzc<ijE]tq|V_mhjȄ#"EQDgMg84_3C~ duNo2aeQE$)Is!ezQ*lVZNUQj%*yx=tx)6m9x̕a,е B-\x9MU PW%< #EQ'Zyg7e%1b4C|-Z8s`z4c M0Vٖ])YV祿{b#ܥ1\T.k?:*5`M Hb"/w1*|\r Nf1@+s}P'E05ZVcw>Z&3^vMJi4u1`F ) P`ۙ~4+0k>]dG@chj+Ţ2iLgi|v+蠯+]mZwG=%'rR:K&Y-w2[fPsyCk?E Sm $lfƅBtg|?q)B!AHd2B,Bh+mղR*vK#vlW&QȞ6+#/ZiZF8woZq6ʶvn m_B=I{(GaT^H󍫶iz,D|~_,)?DM9/ -屼Y6pm⽷3[VhӼVQ)0mS% B2g?wG4͊\9^ w&boZXy#`ǩϫOδru;W(DFF4wGqR)fx+/|:͡)9ØӏM6aV޸T{Lϋfq&*4 QNkb6%۲<#,b2{k崟_?,G+?=_\?z6-/€@<~~ dF9W( ޷l,m[9j6+MsF)txeB.D"Y./(d4w6z}a(`۩>7YSܥ(ꏹ>.wq<.SY)ZM=E\>sVr) aXB2z ސrdSpD>s˄=[_t)= GCW^>W}vZ;5k[^rwA.Jœ FT({,/f7OMEXB=i|7⽷ȤPqMUtI]y^G";6ž7! fh8NlNεr:wG|p5'5q-/n&G۰]P~yr9x>kK+i87eѦU*W׎g vyJGwm}u5 aAF@.<|PutX6Q|`Mlf~4D+ """""""""""- ۝?v%tEXtdate:create2017-02-21T08:06:29+01:00)\%tEXtdate:modify2017-02-21T08:06:29+01:00XXuWzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/favicon-16x16.png000066400000000000000000000017501507671574500222760ustar00rootroot00000000000000PNG  IHDR(-SgAMA a cHRMz&u0`:pQ<_PLTEzyy}xylzzzzzxzz}zz{{{z { |{{{{zz{yzz}zyzzz ';&)`Q<=T^'1e:;[(nF`grYED DEY%$ML-,%%ml]\mmdd=<}|deA!!a0Ȩh$ظ$$oPdsGT@),G49)yE7=~/:;|+R~qAt@r$U {xz%9z8$?qH ,Y 9y3O==><+|z{{{{{̮y======>9$ {{{{{{z̏y%wzo{{{{{z5>==========>5z{{{{{zowuzP{{{{{z}0=>============>=0}z{{{{{zPuuz5{̥{{{{z{);=<<<=========<<<<=;){z{{{{{̥z5uPzg{{{{{z"8=:ט:======;ޫo:=>4z{{{{ւ!$|{{{.<>==:ט~:======;ުn:==><.{{{|!$!$|{{0>====:ט~:======;ުn:====>0{{|!$!$|{z 8=====:ט~:======;ުn:=====8 z{|!$!$|{z 7=====:ט~:======;ުn:=====7 z{|!$!$|{z 7=====:ט~:======;ުn:=====7 z{|!$!$|{z 7=====:ט~:======;ުn:=====7 z{|!$!$|{z 7=====:ט~:======;ުn:=====7 z{|!$!$|{z 7=====:ט~:======;ުn:=====7 z{|!$!$|{z 7=====:ט|7::::::8ީn:=====7 z{|!$!$|{z 7=====:ט֔֕֕֕֕֕֕֔n:=====7 z{|!$!$|{z 7=====:טn:=====7 z{|!$!$|{z 7=====:טn:=====7 z{|!$!$|{z 7=====:טn:=====7 z{|!$!$|{z 7=====:טn:=====7 z{|!$!$|{z 7=====:טח_bbbbbb`n:=====7 z{|!$!$|{z 7=====:ט}7;;;;;;9ީn:=====7 z{|!$!$|{z 7=====:ט~:======;ުn:=====7 z{|!$!$|{z 7=====:ט~:======;ުn:=====7 z{|!$!$|{z 7=====:ט~:======;ުn:=====7 z{|!$!$|{z 8=====:ט~:======;ުn:=====8 z{|!$!$|{{.>====:ט~:======;ުn:====>.{{|!$!$|{{{ );>==:ט~:======;ުn:==>;) {{{|!${{{{z}0=>:ט:======;ުn:>=0}z{{{{с{V{{{{{z5============><+|z{{{{{ͮz=qu zY{{{{{z~2============1~z{{{{{zYu xzy{{{{{z6>======>6z{{{{{zyxgy,{̙{{{{{{ &:>==>:& {{{{{{{̙y,grzE{ͷ{{{{z|-<<-|z{{{{{ͷzErvzb{{{{{zz{{{{{zbvxẑ{{{{{zz{{{{{ẑxly3{̢{{{{{{{{{̢y2ltzM{ͽ{{{{{ͽzLtwzz{{zzw???( @ yzv{{zvywzI{ͺ{{{{{ͺzIwqz0{̞{{z~~z{{{̞z/ry{{{z}//}z{{{~yy z_{{z{*<>><*{z{{z_x wzA{ʹ{{z #9>====>9# z{{{ͳzAwsz){̕{{z1:;=====<::1z{{{͕z)ss{f{{z}.XӍԏ~B====:~I<==;Ze;=>6z|""|z===:~I<==;Ze;===z|""|z===:~I<==;Ze;===z|""|z===:~I<==;Ze;===z|""|z===:~H;<<:Ye;===z|""|z===:~\PQQPke;===z|""|z===:~e;===z|""|z===:~e;===z|""|z===:~e;===z|""|z===:~g\]][ue;===z|""|z===:~G:;;9Xe;===z|""|z===:~I<==;Ze;===z|""|z===:~I<==;Ze;===z|""|z 4>=:~I<==;Ze;=>4 z|"{{{ %:;}I<==;Yd;:% {{{؁r{Z{{z|+R~~qA=======>7z{{{ͦz5twzQ{{{{ ':>>:' {{{{zQwy{p{{z|,,|z{{{pyz%{̐{{z}}z{{{̐z%uz<{ͭ{{{{{ͭz ? @!B"D#E#F$F$G$H%I%J&K&L'N(O(P)P)Q)R)S*R*T+S+U+V,W,X/^3e5i6k7m8o8q9p9r:r;u @ @@.  $ 6D ,.PR57>@@Bnp    $&)*,,..02446;==?IKVYY\]ahklo  ,  "b  V D 0  .   2P 2P  0 4   "    "   V x Z D  $    "  .  $  (p  &J *  " , $ . l  b T  H 8 0    ExtraBlackBlackExtraBoldBoldSemiBoldMediumRegularLightExtraLightMulishItalic-ExtraBlackMulishItalic-BlackMulishItalic-ExtraBoldMulishItalic-BoldMulishItalic-SemiBoldMulishItalic-MediumMulishItalic-RegularMulishItalic-LightMulishItalic-ExtraLightExtraBlack ItalicBlack ItalicExtraBold ItalicBold ItalicSemiBold ItalicMedium ItalicLight ItalicWeightMulishItalicExtraLight ItalicMulishhttp://scripts.sil.org/OFLThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://www.sansoxygen.comVernon AdamsMulish-ExtraLightItalicVersion 3.603Mulish ExtraLight Italic3.603;NONE;Mulish-ExtraLightItalicItalicMulish ExtraLightCopyright 2016 The Mulish Project Authors (https://github.com/googlefonts/mulish)".:FVbnz&2>JVb#R^jv-9Ico{+7CO[gs.Yeq}&1P\z!-GS_kw'3?O[gs   # / ; G S _ k 1 V |    + 7 C  G ~  # / ; G S _ k { 0Q]iu3?KWr~!-9EQ]iy !-HT`l|$bn*:FRbnz Nz m(3>IT_ju&2N[fr}*6AMYeq !-=IUamy)5AMY(a'2>IQz ".:FR^jz    . N Z f r ~ !!;!G!S!_!z!!!!!""9"E"Q"]"""""# ##*#S#[#g#s##$$$)$g$$$$$$$$$$%%"%t%|%%%%&&4&Z&&&&'+'a'i't'|''((T(((())=))**3*c****+L++++++,,,`,,-- --!-Z---..0.<.H.P.\.d.p.|.....//$/0/
        >>G>x>>>>?? ?[????????@ @/@i@@@AA6AvAABB'BzBBCC0CsCCDD%DxDDDDDDDDDEE E5EMExEEF FIF]FFFFGGGG"G+G4G=GFGOGXGaGjGsG|GGGGGGGGGHHH8HHH\HqHHHI I)IYIfItIIIIJ:JMJ`JmJuJJJJJJJJJJKK3K?KKK[KjKvKKKKKKKKKKKKL!LyLMM`MMNNINNOOEOwOOPPMPPPQ Q=QhQuQQQQQQR R/RDRZRwRRSS.S?STSST T^T{TTTTU UuUV V5VWW;WX XmXXXXXYYY`YYZZ,ZFZRZ`ZnZvZZZZZZ[[&[@[[[h[|[[[[[[[\\"\N\\\]]A]O]i]}]]]]^^^)^<^U^^^^^^^__ ___$_-_6_?_H_Q_Z_c_l_____```'`4`H`[`h`y````aaDa|aaabbb0bXbkbbbbbbbc c3c@cMckcccddGd_dwddde!e\eeeef1f1t''''''''''''''''''''''''''' '\'''''J_SSSSSSSSSSSSSSSlljj&&&&&&&&g%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&'%EEEEEEEEEEE"('''''''L8IIIIIIIIIII??????????????????????????????J???<?Z c9999999<//////KKKKKKKKKKKKKKKKJJJJJJJJJJJBB//#///////BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB???cccccccc aaaaaaaa888888888888888888888888"""""#8"%&'++,>*mm%& '++8@.(U$ ESSl(k/V:%SIe! i 'II]<S@@SSe3(@>''((%%%+++@+I88%5&'S  MTBHHHQF>>>PkkFR@P@M _))6COh@'81;YYXDBB7PISNFk?9? ^BDf==XbZAS`dMMFB>>PPP;&&&CES66GGM27M@CYHFF4B8U-H44??????**? cc???[[E?0/l[aE44FIcWE(BCCEEFFGHHIIIKKNNQRSTUUVWXZZ`abcddijjno}n     !$&'),./0</245678:;<=> > ? @!A!B"A"B"C"D"E#C#D#E#F#G$G$H$Y%I%J&L'L'N(P)O)Q)R*R*S*T+U+V,X-X.\.]/\/^0_0`1]1a2c2d3c3d3e4g4h5h5j6l7m7n8o9q:r:t;r;u;v{?~ @ @@  /9~2~(-37SWY $(.158#:C_cku)/ !%+/7;IS[io{     " & 0 3 : D R p y !!!"!&!.""""""""+"H"`"e%' 0:4&*07SWY#&.157$;Dbjr$.  $*.6:BLZ^lx      & 0 2 9 D R p t !!!"!&!.""""""""+"H"`"d%'!O+$ PB=+(?5cl%}zew~ck_<k PRTVhlp*`bdjNTZdfhntvxz|~~~X.Q5aR9:4y*?)6+,}0 '0HIPUegisu=7>F78@FVY]fhs;<Y/^q`uM@2N'&(1 #@16=_WY[){   . $+PHJLrtv}|!%&"*+C12!>,F43"L;J9N=M<SDQAdUbSXIcT]GVfXh[\k^m`l_narewiylxkj|ou(/jpcv}p ?K:Z  <*B0ZKaR|4~     hijknorstuxpqlyv !w^_m"#$%&'()*+-./012345689:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\],7`a$,.E3D25#O>TERB\Mobqdtgzm{n~q  ?-A/G57%9':(;)8&`Q^Owyz{xUWZV[CABDKLGIJH3eibchsnfg]rpjkozv xDFLTJcyrllatn AZE :CAT CRT :KAZ :MOL ~NLD \ROM :TAT :TRK :     XBSH 2CHU   aaltcaltcaseccmpccmpdnomfracligaloclloclloclloclloclloclnumronumordnsinfsubssupsz    !   "%4ZzJ6N,B ZLLn8`>6>$# g ]F7* s)us$ s>& .%60"(2fg%.bcde"%.2ii]]6,"VVeeUWFHFtR0     ~tj`V<"  )  VT2T  \+GW  FFVV  #vBF gj !X64FV"~rfZNB%.$#" !     egdfCNbc     8%  FFss  ""   2266%8;9 'DDDDDDD9999G'99F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9*9DDDDDDD9/9999999.$99999$6,,]9]99h99999999P9P999999999999EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!E~9~9E99999999\\\\\\\\\\\9BNKNKNKNKNKNKNKQQQQQQQQQQQQQQQQQQQQQQQTPrPrPrPrPr|KIKIKIKIKIKIKIKIKIKIKIIIIII9G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)G)z0z0G0G0)))))))G),(G)G)G)G)G)G)+++++++++++++++++++++++$7)KKKKKKKK:0:+:0:0:0:0000 0-0000000000 0\0\0:0:0:0:0:0:0:00:0:0)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)*)GGG)P.P.P.PP.PP.P###########W0D)D$D)D)D)D)D)D1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;?YQYQYQYQYQ *     90))909?HB99999F9F9F9 9999s9s9P99E9~9DNKRRBI|`9,9I999)KA99\H*99,QK9@KET>)9 9}9"K999%DDNKKIKIK``99l.l.9999`]9F9BB 99EEE*RRR`9A9>||7EPr/~9}9*9 D DM,/%0000J#.#.#.B0B0B0W00080D0/-A0M,$ . LM00+0A00g$0u0&,33@.0>.h$/-#B0(#00.N$F00C0a-,$BB$"L F@3A33 0MD0U0/L0M,M,3#.#'#'B0B0/-/-/- L008M,_Th$MD}:30,,X1 :X1XfX6X(X,X=X<X\X X$X/XYXAXXX X<X9X X||<|| ||||*||||<|| ||||*|||;|i|>|8|?|F|E|W|1|5|;|i|>|8|?|F|E|W|1|5;ipip8z qFUZX 9/^B2B)LLXKL__t_ztzVvvXXXeXIXQX!XJXXXXX$X=X9XX X>X!XX0X$XXX X<XSXXBXXhXYX6X6X?X6X'X'XX6X X X X'X6XGXXX/XVXXXXX1 X>S,SX7&O,:^/D/DFl\vVv""2D^0~E#9, Vvv*J* MtZ:5nT5;>5 %.Dg_R*,"$     bc%&d' !(e"#$%&'()*+,-./01234)*56789+:;<=,>?@ABCDEFG-H.I/JKLMNOPQ0R1STUVWXYZ[f2\]^_`abgcdefghijklmnopqrstuv345wxyz{|}6~78h9:;<=DikljnmEFoGHprsqIJKLtvwuMNOPQ   xRy { |z !"#}$%&STU'()*+,-V./012345W6789:;<X~=>?@ABCDEFGHIJKLMNOYZPQRS[\TUVWXYZ[]\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ? ^`>@B  !aA# _C      !"#$%&'()*+Abreveuni1EAEuni1EB6uni1EB0uni1EB2uni1EB4uni01CDuni1EA4uni1EACuni1EA6uni1EA8uni1EAAuni0200uni0226uni1EA0uni1EA2uni0202AmacronAogonek AringacuteAEacuteuni0181uni1E08 Ccircumflex Cdotaccentuni01C4DcaronDcroatuni1E0Cuni018Auni1E0Euni01C5EbreveEcaronuni0228uni1E1Cuni1EBEuni1EC6uni1EC0uni1EC2uni1EC4uni0204 Edotaccentuni1EB8uni1EBAuni0206Emacronuni1E16uni1E14Eogonekuni1EBCGcaron Gcircumflexuni0122 Gdotaccentuni1E20Hbaruni1E2A Hcircumflexuni1E24IJIbreveuni0208uni1E2Euni1ECAuni1EC8uni020AImacronIogonekItilde Jcircumflexuni0136uni01C7LacuteLcaronuni013BLdotuni1E36uni01C8uni1E3Auni1E42uni01CANacuteNcaronuni0145uni1E44uni1E46Enguni01CBuni1E48Obreveuni1ED0uni1ED8uni1ED2uni1ED4uni1ED6uni020Cuni022Auni0230uni1ECCuni1ECEOhornuni1EDAuni1EE2uni1EDCuni1EDEuni1EE0 Ohungarumlautuni020EOmacronuni1E52uni1E50uni01EA Oslashacuteuni1E4Cuni1E4Euni022CRacuteRcaronuni0156uni0210uni1E5Auni0212uni1E5ESacuteuni1E64uni1E66 Scircumflexuni0218uni1E60uni1E62uni1E68uni1E9Euni018FTbarTcaronuni0162uni021Auni1E6Cuni1E6EUbreveuni0214uni1EE4uni1EE6Uhornuni1EE8uni1EF0uni1EEAuni1EECuni1EEE Uhungarumlautuni0216Umacronuni1E7AUogonekUringUtildeuni1E78Wacute Wcircumflex WdieresisWgrave Ycircumflexuni1E8Euni1EF4Ygraveuni01B3uni1EF6uni0232uni1EF8Zacute Zdotaccentuni1E92Iacute_J.loclNLDabreveuni1EAFuni1EB7uni1EB1uni1EB3uni1EB5uni01CEuni1EA5uni1EADuni1EA7uni1EA9uni1EABuni0201uni0227uni1EA1uni1EA3uni0203amacronaogonek aringacuteaeacuteuni0253uni1E09 ccircumflex cdotaccentdcaronuni1E0Duni0257uni1E0Funi01C6ebreveecaronuni1E1Duni1EBFuni1EC7uni1EC1uni1EC3uni1EC5uni0205 edotaccentuni1EB9uni1EBBuni0207emacronuni1E17uni1E15eogonekuni1EBDuni0259gcaron gcircumflexuni0123 gdotaccentuni1E21uni01E5hbaruni1E2Buni021F hcircumflexuni1E25ibreveuni0209uni1E2F i.loclTRKuni1ECBuni1EC9uni020Bimacroniogonekitildeuni0237 jcircumflexuni01E9uni0137 kgreenlandiclacutelcaronuni013Cldotuni1E37uni01C9uni1E3Buni1E43nacute napostrophencaronuni0146uni1E45uni1E47enguni01CCuni1E49obreveuni1ED1uni1ED9uni1ED3uni1ED5uni1ED7uni020Duni022Buni0231uni1ECDuni1ECFohornuni1EDBuni1EE3uni1EDDuni1EDFuni1EE1 ohungarumlautuni020Fomacronuni1E53uni1E51uni01EB oslashacuteuni1E4Duni1E4Funi022Dracutercaronuni0157uni0211uni1E5Buni0213uni1E5Fsacuteuni1E65uni1E67 scircumflexuni0219uni1E61uni1E63uni1E69tbartcaronuni0163uni021Buni1E97uni1E6Duni1E6Fubreveuni01D4uni0215uni1EE5uni1EE7uhornuni1EE9uni1EF1uni1EEBuni1EEDuni1EEF uhungarumlautuni0217umacronuni1E7Buogonekuringutildeuni1E79wacute wcircumflex wdieresiswgrave ycircumflexuni1E8Funi1EF5ygraveuni01B4uni1EF7uni0233uni1EF9zacute zdotaccentuni1E93germandbls.caltiacute_j.loclNLD I_J.loclNLD i_j.loclNLDuni0410uni0411uni0412uni0413uni0403uni0490uni0414uni0415uni0400uni0401uni0416uni0417uni0418uni0419uni040Duni048Auni041Auni040Cuni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni040Euni0424uni0425uni0427uni0426uni0428uni0429uni040Funi042Cuni042Auni042Buni0409uni040Auni0405uni0404uni042Duni0406uni0407uni0408uni040Buni042Euni042Funi0402uni0462uni046Auni0472uni0474uni0492uni0494uni0496uni0498uni049Auni049Cuni049Euni04A0uni04A2uni04A4uni0524uni04A8uni04AAuni04ACuni04AEuni04B0uni04B2uni04B4uni04B6uni04B8uni04BAuni0526uni04BCuni04BEuni04C0uni04C1uni04C3uni04C5uni04C7uni04C9uni04CBuni04CDuni04D0uni04D2uni04D4uni04D6uni04D8uni04DAuni04DCuni04DEuni04E0uni04E2uni04E4uni04E6uni04E8uni04EAuni04ECuni04EEuni04F0uni04F2uni04F4uni04F6uni04F8uni04FAuni04FCuni04FEuni0510uni0512uni051Auni051Cuni048Cuni048Euni0528uni052Euni0406.loclBSHuni0492.loclBSHuni0498.loclBSHuni04AA.loclBSHuni0498.loclCHUuni04AA.loclCHUuni0430uni0431uni0432uni0433uni0453uni0491uni0434uni0435uni0450uni0451uni0436uni0437uni0438uni0439uni045Duni048Buni043Auni045Cuni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni045Euni0444uni0445uni0447uni0446uni0448uni0449uni045Funi044Cuni044Auni044Buni0459uni045Auni0455uni0454uni044Duni0456uni0457uni0458uni045Buni044Euni044Funi0452uni0463uni046Buni0473uni0475uni0493uni0495uni0497uni0499uni049Buni049Duni049Funi04A1uni04A3uni04A5uni0525uni04A9uni04ABuni04ADuni04AFuni04B1uni04B3uni04B5uni04B7uni04B9uni04BBuni0527uni04BDuni04BFuni04CFuni04C2uni04C4uni04C6uni04C8uni04CAuni04CCuni04CEuni04D1uni04D3uni04D5uni04D7uni04D9uni04DBuni04DDuni04DFuni04E1uni04E3uni04E5uni04E7uni04E9uni04EBuni04EDuni04EFuni04F1uni04F3uni04F5uni04F7uni04F9uni04FBuni04FDuni04FFuni0511uni0513uni051Buni051Duni048Duni048Funi0529uni052Funi0456.loclBSHuni0493.loclBSHuni0499.loclBSHuni04AB.loclBSHuni0499.loclCHUuni04AB.loclCHUuni0394Sigmauni03A9uni03BC zero.tosfone.tosftwo.tosf three.tosf four.tosf five.tosfsix.tosf seven.tosf eight.tosf nine.tosfuni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089 zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numruni2070uni00B9uni00B2uni00B3uni2074uni2075uni2076uni2077uni2078uni2079periodcentered.loclCATuni00AD figuredashuni2015uni2010uni27E8uni27E9uni2007uni200Auni2008uni00A0uni2009uni200BCRuni20B5 colonmonetarydongEurouni20B2uni20B4uni20ADlirauni20BAuni20BCuni20A6pesetauni20B1uni20BDuni20B9uni20B8uni20AEuni20A9uni2219uni2052uni2215emptysetuni2126uni2206uni00B5uniF8FFminuteseconduni2113 estimateduni2116uni02BCuni02BBuni02BAuni02C9uni02CBuni02B9uni02BFuni02BEuni02CAuni02CCuni02C8 uni02BF.case uni02BE.caseuni0308 uni03080301 uni03080304uni0307 uni03070304 gravecomb acutecomb uni03010307uni030B uni030C.altuni0302uni030C uni030C0307uni0306uni030A uni030A0301 tildecomb uni03030308tildecomb_acutecomb uni03030304uni0304 uni03040308 uni03040300 uni03040301 hookabovecombuni030Funi0311uni0312uni031B dotbelowcombuni0324uni0326uni0327uni0328uni032Euni0331uni0335uni0337uni0338tildecomb.case.Ouni031B.O.case uni0308.caseuni03080301.caseuni03080304.case uni0307.caseuni03070304.casegravecomb.caseacutecomb.caseuni03010307.case uni030B.caseuni030C.alt.case uni0302.case uni030C.caseuni030C0307.case uni0306.case uni030A.caseuni030A0301.casetildecomb.caseuni03030308.casetildecomb_acutecomb.caseuni03030304.case uni0304.caseuni03040308.caseuni03040300.caseuni03040301.casehookabovecomb.case uni030F.case uni0311.case uni0312.case uni031B.case uni0335.case uni0337.case uni0338.case uni0335.cy uni0307.i tildecomb.o uni030C.alt.t uni0335.t brevecombcybrevecombcy.case uni03060301 uni03060300 uni03060309 uni03060303 uni03020301 uni03020300 uni03020309 uni03020303uni03060301.caseuni03060300.caseuni03060309.caseuni03060303.caseuni03020301.caseuni03020300.caseuni03020309.caseuni03020303.caseuni0000 #3#'!7'!)+9Kw|u? [&g&^&WT&'f^&X&X&V&^&^&bT&'f^&b&b& T&Zp&gq&fT&f&Z&\&`\&gB&&e&S&a#!!7'!!7'!!7!7'!]m V r g' ' ' G &9"3!27#'32676&&##732676&##9p he ^JMK qVs $L5]k LQa\HQbM^W'BI32&&#"3267ko1bbJn(,_A'r`=r/-\ppR,,$.%`P*/"/1D& D& zDB& DB& 'D& zDq& 9 332#'32676&##9pw7ѫUs'9.&''&'9&'l&'9T&'t'$3#"#766332#'32676&##i'@E ( _Tw7ѫ9<+-NLUs'9l&'t9&''9U 3!!!!!9p~-l0'''9U&0D9U&0;9U&0;9BU&0H9BU&0'H;9U&0;9&0?9TU&0'C;9U&0?9i&0?9U&0 19U&079Up&0D9Uq&0C9TU&0C9U&079U&099U&0=9U\&0D9U&0C9U&0?9BU&09b&0>9K 3!!!!9p-c6''D!"&&7>32&&#"3267#73tt1ceNh&(YFt9f0,2NUZrpR,(%*&'' D&ID&ID&ID&IDq&ID\&I9 33!3#!9p*44*p*66H?R/,3#7373!733##!!7!>Sbb**bbS*6!6<!&&Ry9)&P}9&Pt9T&P|9339p*p?9F&Ue9q&Uw9v&Un.P&Un$ &Uj9Ip&Uw9l&Uv9q&UvT&Uv9&Uj9-&Ul$`&Up6r\&UwB&U&UqF"&'732673#.< t*t)A'<@%2H&F&e9 33335##9p*4A2}=6HR9&g9933!9p*jzf'9FO&ie<9&iw9&i9&i39&i89T&i/9&&iV9l&i/&i9733#3#3#39p%$p'in iP?hg9T7&s9 33#3#39p$}i'p#ii?i9F&ue9&us9&uj9&uv9q&ur9T&ur9?7766773#3#3|,7D i'p$}i's/G/&B<0ii*3J)9&&uV9l&ur9&umE>32#"&&732676&&#"Va`d1bac0<)lT*kTkpR]ooR\fcNbNE&|E&sE&sE&wET&'{sE&wE&wE& iE&oEp&|E&{E&{ET&{E&oE&qEE&E&'ETE&'E&'wE&'yE&'E&|E&uE\&|E&{E&wEB&E)>32#"&&732676&&#"'7777Va`d1bac0<)lT*kT,::;;xkpR]ooR\fcNbN=NONOE&|E&vE&}E&}E&}E0 (!!!!!!"&&7>32&&#"3267p~-n0f~.a`Aj" eF%kVGu+ .n''']opR,.:29aO75B*)9 3!2##32676&##9png BgB28Yi PYka=R)dJKOR9h 3332##732676&##9p*nf BgB!Yi PYka=R)JKOREA&.'7>32#"&&732676&&#"2*0@">a`d1bac0<)lT*kT>I% 4V  pR]ooR\fcNbN93!2#732#'&&##32676&##9p ng Bd<(7 G-AE=39Uf RZj_8O(&/6 iNFMP9&S9&J9&V9&F9T&R9&L9l&R\)"&'732676&''&&7>32&&#"V~+2fO`p >SVeR GtLJr%*bC]y >SWeQ Ep+ $"$N?;F gO7V2-"$%%UF@K \Q2Q.\&:\ &1\&1\ &.B\&D\&1\&C\q&9T\&?T\q&'?99u,"&'732676&##732676&#"#66327b:`#N1Vg P_sRk L^poI*J|nj.E+NR "!MCPO'MIILhj1{xe](F1 `\P`B!"&&77!!732676&#"'6632Ghw&0b]}tMn:8Qg4_Xl'gJ'/#/-WulVK3!7!!i6i''fK&'K&KB&,K&+KT&'Kl&'Q"&&7332673HZq,E*DX|kD*EQ~?|[SzyoMb{9Q&jQ&aQ&aQ&]Qp&jQT&iQ&]Q&_QQE&TQQ&'TuQTQE&'TtQQ&'ThQQ&'TjQQ&'T}Q&jQ&cQ\&jQ&iQB&Q&hQ&dQ&kT!3#3*/_W?rn33#3#3#3*~`'|\.,yRR?`rn&)rn& rnp&)rn&#3#3'#3L0 70o \> VI 33#374.824F&z_&I&'I&Ip&'Iq&&IT&&I&I33#>32&&#"74.)-  24F&<%&I&I\&'I&!` 37!7!7!*>'n'`&'`&`q&&T`&&9F&U&w'e)""&&76632#73#73'2676&#"E]%bF[ )>*jFPsRTPqO>xVxJA6xAJ'qjjqqjjq)&)&) &)T&') &)$&)%&)&)&)9 &)T&') &)$&)%&)&)&)&)T&)&)& )&)&)B&)&))0&)&0VI"&&7>33#"326776&#"'>32#6632!7!6&#"3267#"&'35K" RZ42PtD==Lf  =94W/AG$QI wG@T# qy FS;X6V[-Y%$k3Zg s)H.8;%.-3?dOwKB"KCCK9gE& \e6]<ip$!"&YRP[0V& 0"&'3#3#6632'2676&#"FZ *u*:jJF\%^PqOUOtQJAAJ>xVx'qjjqqjjq0*"&'3#6632&&#"#6632'2676&#"FZ *^ RL  i$jJF\%^PqOUOtQJARJL%nAJ>xVx'qjjqqjjq)"&&76632&&#"3267E`(d0RE!UsST'R# e>xVx phlr"!!$)&)&)B&)B&')&)&)<"&&76632#3#73'2676&#"E]%bF[ :*u*jFPsRTPqO>xVxJAo AJ'qjjqqjjq(&2"&&7>32#6&''7&&'7'75'2676&#"D^' CjCNc,@ C'0Oy g*0 lSsPSSpS;nLCf9UUb=OH # !+.( -vM'i[\hd`]g)&+)'"&&76632#7#73733##73'2676&#"E]%bF[ $*bb^*jFPsRTPqO>xVxJA%ii%AJ'qjjqqjjq)T<&&)+"&&76632#76632&&#"#73'2676&#"E]%bF[ $ UG   7=^*jFPsRTPqO>xVxJANH%<5AJ'qjjqqjjq)l<&&)2&'G8+""&&7>32!7!6&#"3267Nf( FlEBV$ g HV>Z6W_/\%'iAzUNm99gE& \e6]<ip$!"&+&+&+&+B&'"+&+9 &+T&'+ &+$&+%&+&+&+&+T&+&+& +&+&+ &+ &+B&i+&$""&&77!!73266776&#"'6632EY$ }H[;X5W_.\&'i7Nf) Fi9hD& [f6^;ip$!$$AzUMn9)3#7376632&&#"'3#DIdn  WE%  !#3  I$ cIO(9+U$0!##/"&'7326773#"&&76632'732676&#";e%6=&N^  pGE]& dH\)@wMSrPSSsQ##" UOBJBuLr|JC x6khjoccnncco!#&8"!#&8!#&8'!#&8)!#&8(!#&8)!#3?"&'7327#7366773#"&&7>32'73'3#72676&#"=c%6=&}+  pGE]& GlBH\)@W\ n;SrPSSsQ##" i$  BJBuLLj8JC x6k  $GHoccnncco033#6632#6&#"0u*9mG]F1*18HRk .?Bh^4WJbQ+3#73733##6632#6&#"0^cc*"mG]F1*18HRk .R%ii%?Bh^4WJbQ0)&@0&@0&@0T&@033730O*O/ @  w??0330O*O 0H&Gm C&Gg &Gl&G_0 &Gn-@ &Gm0&GmT&Fs&G90&G\(&Gf<&GnB&G& mN&Gk&"&'73267373B %  /4 W*Y O @ (>B'NPQ??&"&'732673B %  /4 W*Y O(>B'NP&(&Wt0 333%35#'#0u*J#>9'-!0&Y0&Y0 333%35#'#0O*$#>9'!0330u*u 0h&]n04&]&]q0&]8D T&]m0&&]Vl&]m&]q0!'36673#6632#6632#6&#"#6&#"0>) a?AI hCPJ1*2 0BIb .*2 /CIa .6x?AB?9H`h:QJbS:QJbS0T!&f0366736632#6&#"0>) mG]F1*18HRk .6x?Bh^4WJbQ0&hY&h\0&h0&h 0&h0T&h0&#366736632#"&'732676&#"0>) mG]F: WE  6= 88HRk .6x?Bh^NV(DBaWJbQ0&&hV:0l&h0&h*"&&7>32'2676&#"E]$ GjBF\& Hj>PsRTPqO>xVPo9>xVPo9'qjjqqjjq*&s*&s*&s*1 &s *T&s'* &s *$&s *%&s*&s*&s*&s*&s*T&s*&s*&s* x&sG* &s'G*T x&s'G* &s'G* &s'G* &s'G *&s*&s*&s* &s* &s*B&sS* "&&7>32'2676&#"'E]$ GjBF\& Hj>PsRTPqO9}>xVPo9>xVPo9'qjjqqjjq7 *&*&s* &s*&s*&s)1="&&7>32#>32!7!6&#"3267#"&'7'2676&#"E]% GjBT`K]/@S#l~ FS;X6V[,Z%$k3Zg  xOPtRTPqO>xVPo9\U>N%8dC!& \e6]<ip$!"&YRTZ'qjjqqjjq("6673#6632#"&'372676&#"`) jJF\%bFZ 7PqOUOtQ`6AJ>xVxJAqjjqqjjq(3#6632#"&'372676&#"*:jJF\%bFZ 7PqOUOtQAJ>xVxJAqjjqqjjq)("3#"&&76632#73'2676&#"{7jJE]%bF[ )`PsRTPqO[AJ>xVxJA6qjjqqjjq.q36673>32&&#".=) :I$   1K.3:m(4'+D&.&.&q&o.q&Tq&k.&lq&k#)"&'732676&''&&7>32&&#"4_ N.BP(3@K9 5R16UF*@L#.CM= 3V!"3*&1 O8): "7*'3 H6&76&#"0Qxf9L" .XG[j) 4T85Y!H-@R !hcJX+ =EW_Qtr'J6)LB DU5,D&">:(C<&($U&$)b& )BU&)U&)U5&x)TU&lU&;"&7332673#73UU1*0 7FOg -*O)i^j4XNdS z>D;&;&;&;&;& ;&;T&;&;&;x&;&';Tx&';&';&' ;&' ;&;&;&;&;B&;&;&;!&?33#3ą.|1 QV33#3#3#3a-Z4^02_ QV&QV&QV&QV&x#'3#735#'3 172'>773#3 1C3#.}237=' !4'<+;(&&&&&&u'>773#>32&&#"1C2#.}+4! #/ 37?' !4'<%,%$5M+;(&&&  37!7!7! Vp $@$ & & & T&9u,"&'732676&##732676&#"#66327b:`#N1Vg P_sRk L^poI*J|nj.E+NR "!MCPO'MIILhj1{xe](F1 `\P`0&/&G&m'WT)3#7376632&&#"'!##73DIdn  WE%  !5= )O*IIO A $ cIO(B@U 0w??)&7]79F&Ue0&&FV?M'"&&7>33#"326776&#"'6632#7#!,)9Up&0K%#76673'3333'#'&&####")b@.4*4)4 1QS)HN>k6*6k@a,?EZGVF?F;S?Z ^N=U,9 33'3#9p'iV$p'ig?k9&e9&h9j!7#73%3'3#"&&'73267DL]_p'iV$p'ie#E6"E45K&AF'g?k7-42+: 1693333'#'&&##9p)4(4 9JS)GP>6VD?F;9&D'>77!#!-N@5!p*j3DX $=g{?vqJ97s9PE93!#!9p5p*ii?f9D KR 373#3- B0.?R&6I(57#"&&7663373'32##7'#"33'326676&&##7b d4$* g3`^$W %z ,jP% %PR ,jR%[P[VVN][F[f'}Sx@>rOVw?`!#"&&773326732'j6]r+*du6g06*p>?}]qU?9j 7!3!33p)jj*jgff9 33!3!39p*jvj*jvj*pff?9j7!3!3!33Xp*jvj*jvj*jgfff9j 7!3!3!'p*jj*pf?9h 3332#'32676&##9p*4rm i`i P`ccX]'GNNJK 3#7!32#'32676&##i4rl i`j P`'ccX]'GNNJ9( 3332#'32676&##39p*4rl i`j P`p*pccX]'GNNJ?W!'>77!32#!!%32676&##-N@5!4rl ii3DX%`j P` $=g{ccX]vqJGNNJ9q33!332#!!%32676&##9p)44*4rl i66`j P`HccX]S'GNNJ\H!".7>32&&#"'!!73267kTvE bbJn(,[E_x=r/-5aTpR-,#.%( +/#/1*!"&'73267!7!6&#"'6632 In),[E_x=s20DRuEb-,#.%(+/#/15aToR9U9Ip&UwFeK3!7!!6632#76&#"i6,(m2z*av5g06''x9#"&&7##336632'2676&&#"S^~5 6*p*4d2e\}*kT&jSl\opS)bNaO 376633"&&7663!##"3#" B(B[( pp*1(:/ 2fj R-) /[AXb?8%#_3"*+79D,.D;"W5E($?8)y 3#73!!3#Z6gg4{-6R&I'&9DW""&'7326776&#"#!!6632K60J][w8`)6)p~,#g6o >^ ( ``d~x'iPg0j+7#73%76673'3333'#'&&####"+T?)b@.4*4)4 1QS)HN>k6*6k@a,'?EZGVF?F;S?Z ^N=U,9j7#73%333'#'&&##2+Tp)4(4 9JS)GP>6'VD?F;93337333'#'&&##7#7#9p*4U$%4 ;JS)GQ>" $U6GB@F;"3#73733#33'#'&&##\X)(4 9JS)GP>6(&ss&VF?F;K7!333'#'&&##Kp)4(4 9JS)GP>6&&eVD?F;9j7#73%3!3#!hip*44*p*66'H?R9 33!!!#!9p)44>i)66H'fS9j 7#73%!#!h{p5p*ii'?fD;"&&7>32&&#"326676&#"3267#".7>32bg3c[% $zvR`@DB[4uQ,BI/GqK :Z9=O CeYspS*I\X``X^H*1\QCa59fFL}Z1Dj 737"&&7>32&&#"3267.,o1bbJn(,_A'r`=r/-\ppR,,$.%`P*/"/1Kj 7#!7!!38hi6cg''II& $j7#73%3#3'#3.+TL0 70̖'o \> VKjm7!#7!#!33#icj*jg''f`j7#73'#"&&77332673?hy2'j6]r+*du6g06*p'>?}]qU?`!#7#7.77373'26732(n6 ' Rj)*^j ' 5i06)p> >z\o U?9b336632#76&#"9p*3(n4Zr,*bu5g06?}]x9j7#73%36632#76&#"bhp*3(n4Zr,*bu5g06'?}]x.L(1".7#"&77333>32!73267"'!6&RuH  [@ ) ,Ga^lx$.u\As/P\Z1\~LMN;8>7qPXl cH*/"+.BL&8B9U&9D!"&'7326776&###3337K60K]d6)p)4)4y >^* _`3tV9Of0j7#73%'>77!#!OL]_-N@5!p*j3DX'$=g{?vqJ9F"&'73267!#3!3#.< :6*p*44*t )@':@lH%7G"9j7#73%3!3#!hL]_p*44*p*66'H?R`j#73#3#"&&77332673*j@52'j6]r+*du6g06*p'>?}]qU?9jJ7#73%3#3#3#3L]_Np%$p'in i'P?hg&Vp&f9[&0;BBp&qp& rp&J{"&'732676&##7!7!732#Y%-uNts S^wG;Hhq Gy4,$.-PKMH$:'^f;T-9\&u9p&uEp&E!7!%>32#"&&732676&&#"dTa`d1bac0<)lT*kTS&&pR]ooR\fcNbNEp&N}*p&7R\&FRp&FR&F`p& ;9jX 7#73'!!h{p{i''f9(p&Ly77667##73!!3#3%>: j6gg4{-0g VJ%CDR&I'&'WVI'6676&''3#3#3'eGJ%{7L0 7$\$3++U0o \> 1X55F& C7*"&&7667&&76632&&#"33#"3267.Zp- hOCC sQ}(+qEas U\]m \sT<15_=JT \KPc+&#&%OGFL'EAPZ+.$*4F"&'73267!'>77!#.< m3DX6-N@5!t )@'9@vqJ$=g{%7G"EArn/3#73733#32#'32676&##mW*rl i`j P`%&vv&ccX]'GNNJ9#332''##3267'7'6676&##9p{d P>06 ,/5& -5 7> JejgB`\fP Ye K8UU}F"&'732673!3#!>#.= t)44)p)6: )@'7CH?S7G"j7#73%'>77!#!hG-N@5!p*j3DX'$=g{?vqJ9q&Uv9KH jr%Dj. Br&NDB& ,!%&"&776677#>32'2676&#"idx pr ?O-F^% Hk>PuRUQqPxq 3)/e.? >xVPo9'qjjqqjjq0"332'2#'32676&##732676&##0O7GM77'3373373'#'.###7#"#"0-.c#*#^6&"K*I+"O&*&P"-(z,. .,!$#")"&'732676&##732676&#"'66327=eU3QR:>kc7J1 !?-.@ :>%, .#7-42+: 16033373'#'.##0O*#n5% L+I+"]& .,!$0&x'>77!##)9(GO*I #0A #5PxVs P]Y;0Y333#3#30O$#O&HHp w90 33!73#7!0O*#@#*O*&& -s03!#!0OO*II 0(!,$3#7!#II$$0&.(#/;3#"&&76632#3#6632#"&'3'2676&#"!2676&#"&6 S97E nO9B 9*9 S78FoP7C 6AX6??Z6t?[7?AW5T?ECxQwE?h?EByQvE?rjhtthjrrjhtthjr L!7#"&&773326773v#!N,?S * BP-H%&*O*U@QI 0~ 7!3!33RO*I3I)IL000 3333330O*II*II+O00 0~7!333333tO*II*II+IK0000~ 7#3!3#O*I=I*O0 0 3332#'32676&##0O*_S i\FQ @FUMLG$5=A:$2 3#7332#'32676&##J_S i\FR @F$UMLG$5=A:0 3332#'32676&##30O*_S i\FR @FO)OUMLG$5=A: @!'>77!32###%32676&##)9(G_S i\J #0AFR @F #5PxVsUMLGP]Y;5=A:0L33!7332##7!%32676&##0O*#A#)_S i\&&pFR @F޿UMLG$5=A:&, "&&7>32&&#"'!!73267Hb( GmE4SF%[r OZ+S#g>xVPo9 r\ ' hr"!!$ "&'73267!7!6&#"'66324SF%[r PZ*S# g1Ga( Gl!r\'hr"!!$>xVPo93F3#&Gq&V.A0 "&7##336632'2676&#"dhs&)O)#s`F]% Hj>PtRTPqOwow>xVPo9'qjjqqjjq376633"&76633#7#"737#"m: HO ]ZO*!f,Bc#GJ =!%PK=H '!8,=<.G$'>76&#"##73733##6632=G& )8HQl .*^cc*"mG]F) 0V% 1O9WJbQR%ii%?Bh^N_3$33#73733#32#'32676&##I&*&_S i\FR @F&&UMLG$5=A:!'#7>33'!'32#'.###7#"37!7#"39)ST(1#K*I +"O&*&O!.(zt,11,"##"$-B\33#>3Dž.|1<(!.%*/#)$ 37#737!!3#E%hh$D%$$$0G'>776&#"#!!6632=G$ 9KRk *OE(mG`H /W% 2O9TWJbQt'?Bh\WH_7~ -7#73%7>7'3373373'#'.###7#"%L"0-.c#*#^6&"K*I+"O&*&P"-(z%,. .,!$#"~-737"&'732676&##732676&#"'66327(=eU3QR:>kc7J32&&#"32676&#"3267#".7>32Mc( GlB$; 7WrXZ]z )*+=]Y7 < 6S6*@(*80HZDzRNm9 $ tdltgX:A@8aa #"?X5-D'(J42S; ,~737"&&76632&&#"3267( E`(d0RE!UsST'R# ez>xVx phlr"!!$$~ 7#73'#7!#PvbII%$$0B( 73#3!-}1 BL7#733#373#z~.|1z$$~ 7#73%'3#735#'3%L/172%$~_7!#7!#!33MIC9I*IL$$T0L~7#73'7#"&&773326773Pvb#!N,?S * BP-H%&*O%*U@QI F!77#7"&773373'66773v#!L$ $^X* AL$ (G%&*O uu _`OJ 3@3~7#73%3#6632#6&#"Pv;u*9mG]F1*18HRk .%?Bh^4WJbQX%."&&7#"&77333>32!73267"'!6&gNe) <1 (,FiDBV$ m Sd/\%'iXn} HAxQ@:'(*) Jg69gEjy$!"&mX \eBX&3] &rx0G'>776&###3373'2=F# CP&*O*#n3 @U$  /W% 0L6$VN )WD%B\:~ 7#73%'>77!##FCwYS)9(GO*I #0A%y#5PxVs P]Y;0?77667!#3!73,5C )&*O*#A#)R .G/&B<8I%0~7#73%3!73#7!FCwYqO*#@#*O*&&% L~#73#37#"&&773326773:&b<'#!N,?S * BP-H%&*O$*U@QI 0~a7#73%33#3#3FCwY(O$#O&HH%p w9,!&,!&!3Y .&'6'&6 &r&sD"&'732676&##7!7!732@g V:[i LSm9GZ% >j""VLQS'0[?=Z10&t"0&t"-&s-"&&7>32'2676&#"'7!E]$ GjBF\& Hj>PsRTPqOW>xVPo9>xVPo9'qjjqqjjq$$-&&&&&L&0~ 7#73'!!lPvbOEI%$00&bL77667#7#737!!3#3#/5 T%hh$DP P;%BD$$$$WUI '6676&''3#'3#735 77!,5B L #0A-)9(GR.H/&B<P]Y;#5PxVs5J',(!TY$3( 16673#66325'#"&'3"327'7'6676&`) jJF\% 8,('=#FZ 7OtQT8+)- "- O`6AJ>xVFc! >=JAqjjq?H X=jq}?776673!73#7!,5B R*#A#)O)&).H/&B< 8I%~ 7#73%'>77!##Pv)9(GO*I #0A%y#5PxVs P]Y;3G0 3!!3#0OE #$%~,~B&s,B&!l #737!(&\Le77!!'7!bC'n!n''#73&&54663253!76654&&#"WVTmDnN*HV~=sP`HPR&JYj]*Lf=_w(&$DÅFl>S\TJ$ (332673#73#"&'7 o*/ 9AVe **M) eG2G-TOjX y;F&%8#>7#7!#'.7#"7,h ,7.&8F ++4 <^$$.>!',P:b;1G "&76632'2676&&#" y`qy_o`zLBayL)mElFf 37337733fdj'tv/mf'63376676&#"'6632'!6@9@ JP@l4-@B[* KB %5Z;GJ(+$(0,U=@k<'(8("&'732676##732676&#"'66327 Ey'-g=Ui caPm NP?l4/Ebg ZDKC -+$,'HO'RJCG(-$,.`Z;a dMX^,2 !7!733#'3'u#Pss Hl! '2 =D""&&'732676&#"#!!#6632-SF,f32&&#"#6632'2676&#"Ml*ZU:e"Q1p~`E`+ ?hK_e WQUq WJ|N*('!n^n:iH<]6)^LXfdOPe\T3!7!\c@'^ D'3"&7667&&766327'2676&#"2676&#" zp fNC? ~qHa* YG1@ qcn Xffm WYj RZ]f Po[KV f@P`1X;@W 0L3Y`(LMMKIIJUYFIJOK@DY$=*"&'7326773#"&&7>322676&#":d"Q1p`D`+ ?jHNj)[Vp US^h V*('!n^n:jG<^5J{N@dOPe]MXf/)"&&7>32'2676&#"Nh* LqDNf+ MpEXzZ_X|[DzRQl7DzRPm7'hofyhofyY 3737733YCI%s1i1%A37>76&#"'6632'!AjY- FL5f--s8b^ Nj5VHA!A@# !XR0alC%D+"&&'732676&##732676&#"'66327,RG,g:Rj UWmkJh KP6g02r;f` QGFB =f'!*&LDLL%JFGF# !cP9_ ]I5P-L 7!733#'3'L#Ijj@!1%`  D"""&&'732676&#"#!!#6632+RC%i2VmOP8a&">2!j;B[( Ej&!*&VUQb.2%-36eFB[.<U*"&&7>32&&#"#6632'2676&#"Ml*ZU:e"Q1p~`E`+ ?hK_e WQUq WJ|N*('!n^n:iH<]6)^LXfdOPe9L-!7!9mD%v D'3"&7667&&766327'2676&#"2676&#" zp fNC? ~qHa* YG1@ qcn Xffm WYj RZ]f Po[KV f@P`1X;@W 0L3Y`(LMMKIIJUYFIJOK@DYE+"&'73266773#"&&7>322676&#"8f$S/JqN`Da* ?jHNj)[Vp US^h V*('!B$ % K)"&'732676&##732676&#"'663270K>%)=52I@1?(+"FQ-D S=,: 0-,B42`DioaY&,6N@7G$1+083,14*h3#7!*%xb%1"&7667&&766327'2676&#"72676&#"FN A-)'Y?CH9,+/ [D6C566B4W1=010@1B:)6 ;#58>5%7 ;,79$+''++''+,$$++$$,X'"&'7326773#"&76632'2676&#"%@6@TL2=D T@3B j',B4*0; 0bX&+7N@7G2`Dio3,141+08;-iL->z -8x -? -F -E -W-1-5-;-iL->z -8x -? -F -E -W-1-5-;#3..ii'-'%| iF'-'%| 8F' -'%| oF373 E FFnF '667#73,3 E  b%F=% 7373c E E FFRFF '667#7373, * E  E b)F=5FFF')'))7373NI5cJ E FF L373 `F$ E bFFq#77>7>54&#"76632736.2!@8(G!!J$1G&':;7 L E $@G,:C%+/.8'-NA:R.FF+?#"&&54667667733267#71G&':;8 6.1"@8)F!!J E 9&.MB:R.#AF-:C%+/.FFF4773F F FFUX%"&&546632 1R1.R40S21RX/P2.Q3.Q31P0Zy'7'7737' q ) \ Ty3%89%4 k37#737#73733733#3##7#737#5Emt[B*AA,Bmu[E,EDR[((((f#3**493(4G73 E GDD^LE&&5466730U5-PkGFrNϫBGL#654&'3-Pk&0T1BGGFq2L("&&76&''7766776633#"#5233$,(,,&)0+TQ)",%(R')'$'))-%$,+%%L(73267>3"&&76&##732#@Q)!,%(R@%+(+,&)0+%%+,$%&)'$'))-)L_3#3)u%%L73#73@%+%L^$77!L &&L^$?"7!!!"7!!!K"7!K!!"7!!!L^$?7!)!!!oF '667#73-3 E  b%F=% F&GGtY&KKz_&LLt 7>7'3t  3 =$!$Fz '667#733 E  %F=% Y&OOY&PPY7'73e2aYY7#7'3C2a-eYvS&RRv3v45 !34I$F^c33͜F!Je\Il4'7.7>373'2&&#"32677 Yl$ZU( FAX:uar:e+MO$s\loQ%#(').!$)Q\$7&&766773'2&&#"3267#7[]\ (,PE!Us K8'R# g3 s{ xsukcE^1 !#{!487&&766773'73'&&#"3267#"&&'7#7&&'7!b"z6+8< A+J  X:uar:e+OO!  7+97 Qs,c x{  #('(/!$) | JR#3'7&&5467'766327'#"&'26654&&"m#JJ#JO++MG$II$HL++N 6W33W65W44W$L P+,PL$LJ$I!P--P J$J 7]99]87]99]7D447.'732676&''.7>773'&&#"7 *WL*eRXj =N\9G ElB(3c#"[>Ut 7F\]R is| !!!$N=8D  3P49S. || )&"%%QGuQs}G?$uu$~?Gw$$mfdoji^u5"&&5#73667#73>32&&#"'3#7'3#73267mQh1{x  x~VvI=^R6X#   `_6_(-oB}V $ M$ \{>+*#('vt$M $ws*/#1.Dn73267#7376633#"'3#7#'2G  '[J&&3EZJ%3B$ l;J'0DV $:J$e37#73!!!!3#WLLQ,`$''$=a4*7.766773'2&&#"3267#737 Um(( FAX:rfw)_#,0iA sWr# "%''9>="&7667#737!7!>76&#"'663273#77!!73267[c -)L~C,0>B?i52}FQ[ 14X/1GL>u4P`PD%= $$ ,),/&)$**G<'B( $$= 19++#*3#733337!!7##W5qq5*5:t7)35O$NN$O g+376677#737#7376632&&#"'3#3#7! 9Ittt{ s^;\G:N\  A-!?0^$r$Pa^%& "LRH$r$K@H'>3??377326773#+{{{{%*")JK ( d]?)?r>+>l*lrl*leeeeYb pi hotT}*0p`m NAp%r$DD $B% @G0YSBT(g!37#737#7332##3#32676&##Keeee:Mc( Cf=6Zj Q\$r$k1[A@V,r$VMVOR*!'&&##73267!7!6&##7!#7'3#7#'32o;:fo a TR- /, {x CjD 3w2&'VU$ >@$$ F/ $@^2%/ g!376677#7376632&&#"3#7! 9Itts^;\G:N[ A-!?0$a^%& "LR$@H'< 3!7!!7!R4R4$$$$S37??!7!!77%$4 )W(W|W(W''W(W|W(Wi3#737#733#3#33#3##3rieVQ&"'JQV!eiL.$r$QQ$r$cB37#737#733#373#3#/35$r$QW$r$V,%73 E FFh #37373** E E 4OFF FFY#3**46(, 77#73733#$#(#$(''6 ,27!6 ''?1; 7'7'77'[163,  7!73736 F  F  ''FFFF';7!7!Fo''''';!7'7#737#7!73#!! D]P D] u''u''%,77%%7P%.)$6%O%%7%76 %$. 1 77%%77!Sk/+$'' O %%7%77! 1 k$/'' / %7#73733#7!(u''u'''|?3"&'&&#"'66323267"&'&&#"'66323267$A1%3!?-$D.&3!=O$A1%3!?-$D.&3!?D*,-*+.*,-*+.6.^%"&'&&#"'66323267$A1%3!?-$D.&3!?*,-*+.G=%7!7!"8('t73#38$'ڌ5a&1'7&&54>327#"&''&&#"26654&'Y,L/9-Pl@*R#L+L*3.Qk=(L!)B%EoA*BoC& >f&nB8fP.d d%k?:fN,@?lE5]_>mF2X!/4'57"&5466326632#"&''2667.#"!2654&#"6=">)!FP!8="?*!DR)-&'(4(-*4(&(+$&B,$>&(**(B,#?&(**($ %'&% 9( -9( - %&'% VH"&'732676632&&#"%  $-g H4&  !$-g H( (1><( )1s><D*373&&54>3273#7>54&#":A'KmEGb38jL5Q7YX<\= .#&EUJqB=mG\.&$'bq|BZj>h~?1\[1$ #737!_(\Lo!#!*\uNLeL #73#3et{a.B '4V (332673#73#"&'7 o*/ 9ATd **M) eD2I(TOjX y;F&%>, /"&&54>32#6.##76632'2>54&#";a9%D`32#"&7#"&546632#73326654.#"326726654&#"_s>Bw^Uk<6[9:8 [0KS9c>8G */""+H-6bLUk;bsV*12O.9;1P.==rf`u?5bRWGG:4:^SJtB70_  $$>qKHyW09jY}`93 7<8b?CG,v-:H&&'3#"&&76677&&7>32'#6673'%267'"6676&]+@4GE[' [K2) +H0)A"%MD 4 *<%C(Eq-3GM M4D UN3A8>/R4>Y.8R3%;#!<+!=@(*IT5C96 ,F3AL7).3'2K*,6^L "&&546633##Q4J(8c@**I,?_5OD8N"&'732654&''&&5467&&546632&&#"7'6654&''&&'Fe 5A'Q[*/[:?,(:b<9a Z0R[(1W>>+):a52M#4 65H"5#! U<.38$M,'L 5R/ $  U<.74%L,'M  5R/%: 1):%9!-*9D-A".54>32'"&54632&&#"32672>54.#"Lb77bMMa77aD^jj^(LAJTTJAN/DvX11XvDEvX11Xv7bLMa77aMLb7ybbr \SRb!m1YvEEvX11XvEEvY1D'=F".54>32'2>54.#"'32#72#'&&##7532654&##Lb77bMMa77aMDvX11XvDEvX11XvBAFGA) 9+8 +X t2103t7bLMa77aMLb7$1YvEEvX11XvEEvY1r>:9=  (+*)Fs#7!#33#3#3#3=V=Cz%C':s:$$H[l-\t"&&546632'2654&#"(@%%@((>%%>(,55,+77&@((@&%@)(A%(9--99--9v3v45 vS&RR"L3"*u"L33y5*55*5tMMDS 7#73733#y?tt"tt? xx t*"&77'7663232676676654#"2+  Re*8.,-G( !"- < .E!$@,Wm 5C&&1a^/%$* 7y7(/&S77#737#73733#3#ytt'tt"tt'ttx xx xE_ 2".54>32!"32673!2554'.#"_f56g]s['}(|NU{3G'Yu "XX#:5 8b~FFg=BoD01:1/>o ))*5 9F ,33#3#37!'"&&546632'26654#"9p#i'p"ig#8'G/$7)G,'6W'6.i?i$$7$0Q1 8%2P-*D'Y+D'+-? '667#733 E ?)F= 2 :j 7667'3 "2 :6"=,AvS&RRy7!y&&%m'3I5{%v,J&&5466&+&- 4(,2"0$&**7654&'7*'&-4,$&#1#0%73z6%73*Td73*Tj&&5466&K&- 4(2"0$&J7654&'7J'&-4$&#1#0l73#73l = = l<<<<&  7373373-o7 = d = d<<<<I 7!73373D = d = &&y<<<<kd73 @ k??I7!73D = &&y<<%s'3O5{%%737%%473'73z7- = %<<%73#73XL0aL0a%*y73*14%73#'V0W"Ou%ȡ%'373!W"Ou$%ȡ%4 '373'73"_#Vn#{ = %yy<<#"&&773267>)=!512@ !+A#-T:JQQJ:T-#"&&546632'2654&#"B33 22 #++#",,#2112 -!!--!!-#0"&&54663273'2654&#"B33"L=q2 #++#",,#21 G_$2 -!!--!!-S'6632327#"&'&&#"Q 5(#4 6'% 4S:?W:?!!'66323267#"&'&&#"773373B!-"#!,"$  = d = !00 !00 o<<<<! '66323267#"&'&&#"773B!-"#!,"$ eo7!00 !00 H!7!'66323267#"&'&&#"F!-"#!,"$ &&00 !00 y7!Py&&I 7!'73373W = d = I&&c<<<<? 7!''3Uf5U?&&K? 7!'73Yo7?&&K%7>54&#"'6632) )(+%  %'3#'3f=/)=/)%#'>326&#"@! *B)*<!521A#;S--S;JQQ:k 7667'3  2 :=$8)A h '7>773.18( U 5& EGT73c @ ??MU573#73 = = <<<< '667#73^ 2 F *A=$8tB2"&'732654&#"'73'6632?) &  &  (@ "  `K%/ZB"&54673267M+.9,((  &1&,G6" :)] "&773267>>J!812> ! SNE7<<7EN5lS7!&& .7!}N $$'7`#q$i'} lk^%m%%%%##SynB,TB'6632327#"&'&&#"D ;,(; :,);:?W:?5GE'3266773#d/*17()E3*6' 1C"4p73#73 = = 4<<<< 7373373Po7 = d = gd<<<<& 7!73373! = d = &&y<<<<;2q73; > 2??&7!73! = &&y<<q'3Kz7i>73>95 73735 = *z7<< 73373 d4}Rc4|%x73%"1573#'@0g%\|'373Bg$[}&  '373'73E_#Vn#{ = yy<<"&&773267]*B$!?55H ! ^(K4@GG@NY"&&546632'2654&#"d33 22 #++#",,2112 -!!--!!-1"&&54663273'2654&#"d33"L=q2 #++#",,21 G_$2 -!!--!!-$'6632327#"&'&&#"N ;,2$; :,3&;:?W:?!"&'&&#"'66323267'73373" !1"!!0 = d =  !00 !00<<<<73"&'&&#"'66323267No7$" !1"!!0gg !00 !007!"&'&&#"'66323267#_" !1"!!0&& !00 !006\7!A66&&& 7!'733734 = d = &&&c<<<<'37!Tf5UgK&&7!'736o7&&K7>54&#"'632I #-(+  ! '3#'3a3I`3H'66326&#"+! ^@+A%!?55HNY(K4AFF. 7667'3."2 6"=,ADE '7>773Q 18( X 6& FMgTy7!NT%%_"'%S"""% ''7777::;;x6NONORJn7!tJ$$wf73 @ w??S'6632327#"&'&&#"Q 7(&4 8'(4S:?W:?*y73*14{'73$$#"&&'73267;>1 !?-.@ :>#7-42+: 16 "&&'73267[#E6"E45K&AF7-42+: 16# "&773267'73;>J!712?! SSn7#NE7<<7ENg# "&773267''3;>J!712?! SCg5V#NE7<<7ENg#$ %"&773267'>54&#"'6632;>J!712?! SH''(+ #NE7<<7ENg #% '"&'73267''66323267#"&'&&#"<7K!7**=!O!-"%!,"&#92$''$1:00 !00 %$  73#'773V{0_"Wod7w%{{e%  73#'7'3V{0_"Wo]5L%{{e%$73#'7>54&#"'6632V{0_"Wo''(+ %{{e %% 73#'''66323267#"&'&&#"Ix0b"Zl -""! +"# %``00 !00  "&773267'73^>J!712?! SSn7NE7<<7ENg "&773267''3]>J!712?! SCg5VNE7<<7ENg %"&773267'>54&#"'6632]>J!712?! SH''(+ NE7<<7ENg   '"&'73267''66323267#"&'&&#"^7K!7**=!O!-"%!,"&92$''$1:00 !00 F 73#'7734{0_"Wod7w{{e 73#'7'34{0_"Wo]5L{{e*73#'7>54&#"'66324{0_"Wo''(+ {{e  73#'''66323267#"&'&&#"&x0b"Zl -""! +"# ``00 !00  .XDFLTcyrllatnkern$markmkmk;~  bH vvlb\RH>vka@\a::baaaia9da:`admaaa`aSVV=9F&D:PO>E:2y:8EDF9999999999999999v9l9l9l999\99R9L9<988888888888888z8p8f8\8\8\88R8H8R8>88488887777777777777 $ 6 Z2@    V7V7V777777 P,)) 't 0r0h y )) |  .L77777777v77l7b7X7N7D7>7.7$7$7$77777 7676666666z6t6t6j6t6`6Z6P6Z6P6F6<6F626(66666z6 66 56`56Z55555555555v5f5\5\5\5R !* <6N12 o0000000000000000000000000000000000000000000000000000000000000000000000000|000000r000h0^0T0^0J0@060&00&00&060&00&00&00&///////////////////////////////////////~//////~/t/////////////////////t////////j////////////`///V///F/6/&/////.//&.////....................x...n...^...^......^....T..^...^...J...^......@...0.&..&.-.-.-----.---.---.---.---.-----.---.------------~---t-~---t----t-j--`-V-L-<-2-(-V-L-<-2--V-L-<-2--V-L-<-2-`-V-L-<-2--V- -<-2-`-V-L-<-2-`-V-L-<-2-`-V-L-<-2--V-L-<-2--V-L-<-2-`-V-L-<-2-`-V-L-<-2-`-V- -<-2--V-L-<-2--V-L-<-2,-V,-<-2,-V,-<-2,-V,-<-2,-V,-<-2,-V,-<-2,-V,-<-2-(-V-L-<-2,-V-L-<-2--V-L-<-2-`-V-L-<-2-`-V-L-<-2,-V-L-<-2-`-V-L-<-2-(-V-L-<-2,-V-L-<-2-`-V-L-<-2-`-V-L-<-2-`-V-L-<-2,,,,v,l,b,X-V,N-<-2,D,:,0,:,&,:,D,,&,:,D,,,:,D,,+++,+++,+,+++,+++,++++++++++++++++++++++++++++p+f+V+F+p+f+V+6+p+f+V+,+p+f+V+"+p+f+V+"+p+f+V++p++V+"+p+f+V+"+p+f+V++p++V*+p++V++p*+V*+p++V*+p++V*+p++V+F+p+f+V*+p+f+V+"+p+f+V++p+f+V++p+f+V*+p+f+V*+p+f+V++p+f+V*********v**v**l*b*X*H*8*H*.*H**H**H*X***H**H**H* *H*)))))))*).)))))))))))))))))))))))))))))))))))))v))))))))v))))))))))))))))))))))))))))))))))))l))))b))))))))))))))))))))R))))H)8).)8)$)))()()))()()()((((((((((((((((((((((((((((((~((((((~(((t((((((t(j(((((((((((((((((((((j(((((`(((P((((((((((((F(((<(((,("((('(((''''''''''''''''''''''''''''''v''l'v''\'v''R'v''l'v''l'v'''v''l'v'''H''l'v''>'v''4'v''l'v''l'v''$'v''''&&&&&&&&&&&&&'v&&&'v&&&'v&&&&|&&&'v&&&&|&&&&&&|&&&'v&&r&h&r&^&T&J&@&J&6&,&@&J&T&"&@&J&T&"&T&"&&J&%%%%)v%%%%%%%%%%%%%%&%%%%%%%%%&%%%%&%%%%&%%%%)v%%%%)v%%%%&%%%%&%%%%&%%%%)v%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%)v%%%%%v%%%%)v%%%%&%%%%&%%%%%l%%%%%b%X%N%X%D%%%%&%%%%&%%%%&%%%%%:%0%&%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$p$`$J$$p$`$J$$p$`$J$$p$`$J$$p$@$J$6$p$`$J$$p$@$J$$p$@$J$,$"$$$$"$$#$"$$$$"$$#$"$$$$"$$$$"$$$,$"#$$$"$$#$"$$#$"#$#$"#$#$"#$#$"#$#$"#$#$"#$$$"$$#$"$$$$"$$$,$"$$$,$"$$$$"$$#$"$$$,$"$$##v#l#b#X#b#N#b#X#b#X#b#D#:#0# ## # # ## ## #0### "# ## "# """"""""""'"000J0@""""/`//"//"//""z"p"f"f"\"f"R"B"2"B-.."(-V-L-<",,v06"++" " *l"!!!,+!!!!....^...0.&!-V-L-<-2""z"p"R"B!!..06"*X*H!t*X*H!t*l"!!!d!d..."..!!-"00!Z000h0^/`//!P+!F+!6!&"p"\"\!-V-L-<"!-V-L-<-2!-V-L-<-2!! !"" *l",X-V,N-<-2**.^../F/6"z"p06""z"p06" ~ n ^ T n ^ T n ^ D : 0 & &  &   xxndZP@6," D : 0  ndZPrhrhXXN>. DZP $  ~ n ^ 0  P nd  : 0 : 0tnn^TJJ@6\a^a??s  > WA b XK2[`KL,]8ڜ\L,^e,e  2 ! ڨ|D  m  [*A _vPH8.^ N T  $䦀 +pF- [ +|rAbK d $'hn =䋆] h = NfF D  e=  TE2 R (E䞆a a aaja Da aa @a ana 1E a    =~X_  >' Pk\aa |Ia a$!X' aHzaZa\Da, @V@ > HH=V(@ zH pX ( V*    )T oW (|_ hV_?^@V V ,W "`^  > &V*  1 Vz9pAf\!R (V :Cp &4B  G ,H"PY  9 9 SY BV lY  X9 ZV :R 0Sd$> k :W VPaxAnkV*Va~e䒺 (VYa @  M  Mpf @0V rE[ K~aaV"D| je6m,fMY XB䢖[ :b VZx[ ,bd:tBFV'XW@s g$ V^>v 䐠X y[bRZV>[ lbbD B4Vaa hn}a8V>a ta$a u vnZPaaat|pr+H>aa @aa`1V&a JL &Va(aZa Ia P At ZVLap8f8.o$VV a2a ka<a2Vaa*lTL a~3a2Da ja*AV a \\:a8V~aa~aa }S~ ~a~p/V~faa~RJ~HeVV"xH Vt j| a  aLa3V\a aa|a c|N ~a}Z9V" TSVa pa nan m At Ka|Va|V<aa Maa|8f1V{af sL{{a Va{a,X X-p{ca{{Jvaba Qaa(a c#V{a Za e>zzB ,.P+RuNw|r~x57>*@@2Bn3q`    $&)*..02448;?IKV YY\]bhkl"oy$}}/024678<=@ABCDJKS_`bcghjmUzpf\RHB2(((~xxnxd^T^TJ@J6,"~d^xzj```VZLLxX VwVwWw: - (10a 8zfNwR`LVHFvM>[I SPPGT*HHG  evf- vb? 0 - 4 , .36' 3#4' /(&+u02/u&u$u% Y  %%$ & / E s@DzuaLӂӂuupuu uuuuؐpu uuuuupu씖u puuupvu~#|pu vuuxuuuuuuruuuuΒuuuppu݂uuuBp p΂uulvuB B pufupؓؐpu ēuӂuuuuӂuuuuuuuuuuuu uu` u uZuӂuuuӂuv Ău puHuTuNu BvuHuBp2zuuӂuuuӓؓpݏBؓuuuuuؒupēΓuuؒݏBuuu puupuu(uĒuu쒺uuuؓ pufuuu ppuu|uuBuؓpuuؐp쒺u vē( uZēu<u-|ɂuuuuuuu uZuu6uuuuu0uZjB pؐpuupvuu#|v pu(|#v(uvBu* Hu~BPu$u~#uZ|u~u2u upupuu uuuuuupu|uuuru݂uu~puu쒺tujj~`uuuu uZuӂuuuHuu v pɒuu v( puݐpɂ Bp p pu B2u vuuuHu~ u u~uuu~ v uZppu u uu uuɂuuu2pΓBu(pPBp u B<ɂuΒuu ɂӓ pΓɓ u uĒؒ ul p(΂uup΂u Ă|ؓuɂɒΓ Ⓔ pΓupɂ Γ p ΓēuFΓ p u uuu~ uZpup ĐppB ΓHuPuFuuu Pp@uPuu씖 uuuuuuu#|pēuēuēpu v씂u HuNΓ┖p؏BؒΓďBؐpuuؐpulu ؓuuu~ v ΓΓ up p uؐpΓ؏BΓēuuuu݂up uؔuuupp( (p uuuB((pݏBuďB p pؐpuPu ppu~ppupuu~uu|݂pēu2uuuĂ uuuupuvētēuu p pΓؓuu ؓuuĂ p(uputuu pvpunuuu B(uruuuu vɂΒBpuuu~pHɂΏBu pu B2uuӂuvɂuuu p putɒu vuup2uTutݐp쒺uu씖t<삂t2Bp)9HC#* + &',--+.HIOPUWdef.gqs  :$$  $677*8?@FGGHUVW4X[\\]efikrs K !*5"6    #  7 ,98  !!-%%))-. //01/22#3345==@@BD"FG IJMO PP,QSTTXY#[[\\ ]]-aaddee ffgg hh%ii>jmnn?oq sstyzz{|}} ~  & A 1E    & %  1&   F%%D)*+,0--..B//C00G11H2344<66I77=::);;<<)>>)?EFHIL(MM2NN3OO2PP3QR';J@' 9 &((%//0GHHHIO PUWdef'gh<iijj'koqrsuvv'w|~MNI! ( )O%'  #@T56677X8?@EGGY\2__@foqrs[Y- ` 'D5F . L:=/  6    &&GK11&  !!;""##1%%')** ++,, ..//=01>34 66177 89;<== ?? AA BC5DE.FGHHIJMPQS/UUWWXY6ZZ\\]];^^&__:aa ccJddeeffgghh0ii jj$kmnnoq"ss$tvwwz|}} ~~ +E8,,U+ 0 , $ +E0"0" $ 8+\, $+$+Z$ )**+,?--*..V//W00]11^2344Q66_77R997;;7<<==7?EFH*IL4MMANNBOOAPPBQR3PCS3CD_D:,,,, ,| N & : N, P",,,,,,,,,(,,,_Ql%'7FHIJKLMNOPQRSTUVWX]^`abcdep"+UW%)*-019;=FGHTtVd&W&dPtP   VdW<N V8W8   5% vO71 f1 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `111, 1;'  @ A B C D E F H I J K L M N O P Q R S T U X Y Z [ ] ^ _ ` a b c d e    :<b<<b><b0Z4T:H<H>H0:44: < > U04G 7VNQPPPPPPPPVVwfN@Q@:P <P >P 0ZZ@ZAZBZCZDZEZFZHZIZJZKZLZMZNZOZPZQZRZSZTZUZXZYZZZ[Z]Z^Z_Z`ZaZbZcZdZeZZZZ02 42: < > I J K L 0  @ A B C D E F H I J K L M N O P Q R S T U X Y Z [ ] ^ _ ` a b c d e    0( 4<:P ,<P ,>P ,I2J2K2L20@ABCDEFHIJKLMN.OPQ.RSTUXYZ[]^_`abcde02(4":< << >< I2J2K2L2z0  @ A B C D E F H I J K L M N O P Q R S T U X Y Z [ ] ^ _ ` a b c d e    0F(4<:N<N>NI2"J2"K2"L2"* t t@ tA tB tC tD tE tF tH tI tJ tK tL tM tN tO tP tQ tR tS tT tU tX tY tZ t[ t] t^ t_ t` ta tb tc td te t t t t: < > ' v v@ vA vB vC vD vE vF vH vI vJ vK vL vM vN vO vP vQ vR vS vT vU vX vY vZ v[ v] v^ v_ v` va vb vc vd ve v v v v'66@6A6B6C6D6E6F6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6X6Y6Z6[6]6^6_6`6a6b6c6d6e666602"2"@2"A2"B2"C2"D2"E2"F2"H2"I2"J2"K2"L2"M2"N2"O2"P2"Q2"R2"S2"T2"U2"X2"Y2"Z2"[2"]2"^2"_2"`2"a2"b2"c2"d2"e2"2"2"2"042x:<>I2J2K2L20((@(A(B(C(D(E(F(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(X(Y(Z([(](^(_(`(a(b(c(d(e((((04 :("<(">("I(PJ(PK(PL(PLE0HH@HAHBHCHDHEHFHHHIHJHKHLHMHNHOHPHQHRHSHTHUHXHYHZH[H]H^H_H`HaHbHcHdHeHHHH04.:(<(>(I "J "K "L "<6+0TT@TATBTCTDTETFTHTITJTKTLTMTNTOTPTQTRTSTTTUTXTYTZT[T]T^T_T`TaTbTcTdTeTTTT0((42:"<">"INJNKNLNR,&&@&A&B&C&D&E&F&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&X&Y&Z&[&]&^&_&`&a&b&c&d&e&&&&04 :<<<>< +@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde0 :F<F>F%qA0NQQ v@h@h@h@h@h@h@h1b1b1b1b1b1b\]F$Q VW^tttttttnnnnnnnnnnn(-("^8\6Z~2Vz zf 0TxX~   T x . R x  , P t  ( L p &JnJn,Pt(LppX~2X|(x .R>2Vz 0Tx,Rx2Vz6Z. $ !!!""("L"p"#n####$"$F$j$$$%&f&&&'':'^''("(F(j(((())B)h)))**$*H*l****+ +\++,,*,N,--2-V-z---.p.../:/^////00011:1^11112282\22223343X3|3334 404T556p7F778 8D8j889T:F:j;6;Z<0>$>H>l>>>>? ?D?h????@@@@ABhBBBBCC@DlDE|EEEF FPFFFFGG6GZG~GGGHH2HXH|HIPItIIJ"JJJJKKDKhKKKLLMBMfMMMMNNNOO<OOPP>PbPPPPQQ<Q`QQQQRR:R`RRRRSS>SbSSTNTrTTTUV VW|X.XXXY YDYhYYZzZZZ[ [.[R[v[[[\]l]]]]^ ^D^h^__._T_z___``6`Z````aa>adaaaab bFbbcc<c`ccdZd~dddee2eeffBfffgg&hh*hii&iLjjjk,kLkkklllllmnnno"opPptppqq<qxqqqrrBsZszstDtuuRuvLvwxxx0xyyyz z{^||}`~2~R~ TB\6XVj 2Rx.<.6Vzr*Nr>FTx B ZB<`6L ,n:lXhd.P .RLP@,, VF<z,Pr&6$HlÐô,ļ\ņP @:ȶ6Xɦ .ʈV|h<ϢX0tb:ԢpxPא~Vpي٤پ &@Z"ۨlh$`>,F`z0Jd~2X~.f:~:*zv pz.N|&T"|(b$XXXxVbLF $"x 6P@Bp82pJPR H    D d  0 b"l4Ln~<V ZP,f N| & `  !B!"V"#z$$$%"%`%&$&b&''\''(())d)))*$*>*X*r*****++(+B+\+v+,J,,- -N---. .^.../F/0 01 12\23 3n334j455N5556L6z67$7R7788899:x:;;>??@V@V @"@@'@ @1?3599 b~ )ej rr :@\ << @\@@@ @ :@@@ @:@@@ @0:@@@ @ :@@@ @/:@@@ @(:@@@ @1:@@@ @:@@@ @%:@@@ @&:@@@ @ %:@@@ @&:@@@ @&:@@@ @3:@@@ @!:@@@ @:@@@ @:@@@ @ :@@@ @!:@@@ @:@@@ @&:@@@ @:@@@ @-:@@@ @ :@@@ @":@@@ @$:<@@M@ @$DGHL(:EH@.$09 ?A ¿ 6?? ƒG4CO;tB [G0_q~@)@}??k}} == @@@ @ )I@@O@ @$"))+/442,-.'$H:C6  ;;;(ƃ-CQQU_hhcYZ\MG@7 Ľ t@ &k$    uuuP#<<<꽋^@@y@ @.!-;=<&GRXY[_eeb]^_XUyL7 +6ktD+ )fC  ;;;(ƃ :*BZvzx+KOn&.VlBV 0R@̀@ރ    uuuP#<<<꽋@@@P@ @ ,INQK7#¹6GGG>5'%  WC mE1/'*   Brrr2lB{j@@@ @ @@@ @ @@@ @@@@ @ @@@ @@@@ @ )@@4@ @%**+#O9DDD ޽ 2JTTVF8@ ; r:BAByyy@@@ @,4:Xh@@@ @*:@@@ @:@@@ @*:@@@ @ :>@@V@ @!-;=<*@JUZ[\TMN0 7jNDDD ޽ :*BZvzx+SI` 4n@Ӏ@ރBAByyy@@@ @ :@@@ @,+:XU@@!@ @ 5D :I&  ??8%j@@,s@L8??}}@@@ @ @@@ @ @@@ @ @@@ @ @@@ @  @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ '@@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ :H>D݄7$t@<({@$66J@@Y@ @#)HNS;!)%! ǻ!CCC=7'&20;: .QBvB+ϺQJ?2*! $BvvvBB znM11@@@ @"!@@@ @"!@@@ @*!@@@ @ !@@@ @$!@@@ @$!@@ @ @ DI##>D""ބAEE|@DD6@@B@ @W]7=2)47OWZT6((((((" A ̿mzdRhmBƺ@lOOOOOO--@@@ @@@@ @ @@@ @ @@ @ @DD0A`@@ @ @0n`@ہ@@@ @00`@@@ @0-`@@@ @05`@@@ @01`@@@ @0/`@@@ @00`@@@ @0/`@@@ @00`@@@ @01`@@@ @0/`@@@ @06`@@@ @0/`@@@ @)0Q`@@@ @04`(@@3@ @ QXUG,>??@@@:5- &# CX{~BtjY/ @@@ @*>T{#@@-@ @DFFhAaBBD=K%y)@@@ @=8y@@@ @DO!FFAA+8A@@ @ @Z8@@@@ @08@@@ @7n8@@@ @8@@@ @- Y8@@@ @ 8@@ @ @G8@@@@ @ 8@@ ` @(8%@@'@ @:((&<iiAssArrs:4PP>.Kx,AуAA@@@ @ ,@@@ @ *$$!)>@@z SϥGGBR| A A@@ @ @N @@@@ @  @@@ @ @@@ @  @@@ @  @@@ @  5@@6@ @!)>*$(&576!@z@ ְBR|SϥGOK> knmB2AA 3@@@ @; u@@@ @  @@@ @  B@@T@ @!(((# NQG/H3CCC ν #APPPF5+B ^:8@7  .eB?ԛBzzzƒ@@@ @7@@@ @ 7@@@ @!7@@@ @"7@@@ @!7@@@ @"7@@@ @"7@@@ @/7@@@ @7@@@ @ 7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @ 7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @ 7@@@ @ 7@@@ @7@@@ @"7@@@ @ 7@@@ @7@@@ @ 7@@@ @07Z@@u@ @+!(((# NQG/H8" )2E)3CCC ν 'Fۻ' #APPPF5+B ^:8@ rFTd8@7  .eB?ԛBzzzM@/@vN@@@ @7@@@ @ 7@@@ @ 7@@@ @ 7@@@ @ 7V@@i@ @* -<2A HNPH.% ?? ǽ2CCC:-Zw c@.Ʈ8C ]2˸??}} ,Bzzz ,dBrY-@@1@ @#*))( ?DI:ƒ /ESRRP@*}A - t8̾;;;ᲃ2@@;@ @DG'.--,$BDL > 555كA6L[YYWG1B 4{:...iii>౱T@@j@ @( <:CI!(((# NQG/H&"3CCC ν wsA #APPPF5+B ^:8@7:<=D  .eB?ԛBzzzƒC@@G@ @! $"" #'>DG: ƒ5GDC9# 7;AEM|A ިt$ ´ɼ˸(((װ@@@ @ $@@@ @$@@@ @$@@@ @!$@@@ @!$@@@ @&$@@@ @!$Z@@j@ @+   %HKN:!2-221()):@AAA' Ŀ')%#-'<*2*88 JB sAcZdcaQ1QsCM!B~~~ MRIF2,@@@ @)$Q@@@ @))Q@@@ @)!Q@@@ @)&Q@@@ @ )Q@@@ @))Q@@@ @ )Q@@@ @)#Q@@@ @ )Q@@@ @ )#Q`@@d@ @./4;3JD1$ /8 9;<9333.,4===']hvfA(bG+]p/ſAqx}0Qhhit{vwrefe\4WhzzzM#::: ޲߁J@@T@ @#/HJG3#)**#! /???ܽ 8$]Bf<  (FRTTF7; 88$]}}})Bzzz  @@@ @ 1; ȳ<'av:AyyAyy@@@ @:@@@ @ :@@@ @ :@@@ @ :@@@ @:@@@ @:.@@8@ @ EGK5&('&  )CCC. B i,KONL6$-RB] @@@ @ $@@@ @ $@@@ @ $@@@ @ $@@@ @ $@@@ @ $@@@ @ $@@@ @ $@@@ @$@@@ @ $@@@ @ $@@@ @ $@@@ @$@@@ @$@@@ @ $@@@ @$@@@ @ $@@@ @ $@@@ @!@$@@@ @ $@@@ @ $@@@ @ $@@@ @ H/@7,YY@^3mXA#@@*@ @F,"&"6llllA~~@WDKC:k!AׁA׃A@@@ @ !@@@ @ !@@@ @!@@@ @ !%@@.@ @>#I.3BE#%%Єڸ|F @[f@+@E%́JJ%@@&@ @ G$E+BA*::@G-CVT tt @@@ @*)T@@@ @*.T@@@ @*(T@@@ @*(T@@@ @*+T@@@ @**T7@@>@ @G$ +BA*::@G-<<,+*(+59VAT tt @@@ @*(T@@@ @*(T@@@ @*-T@@+@ @  `c)@μ3DDA|w5!AQ;.AxxeA@@@ @!.@@@ @.@@@ @ .@@@ @!. @@ @ @0Xn0`@@ہL@@Q@ @$:9879 $CGJ7%  !777tqpnr>FBmJ'A; nn.ל3n@@@ @%(J@@@ @%%J@@@ @%1J@@@ @%"%J@@@ @%1J@@@ @%1J@@@ @%1J@@@ @%%J@@@ @%!J@@@ @%.J@@@ @%"!J@@@ @%.J@@@ @%.J@@@ @%:J@@@ @%'J@@@ @%'J@@@ @%'J@@@ @%"J@@@ @'%MJ@@@ @%(J@@@ @%*J@@@ @%'J@@@ @%%IJ@@@ @%&J@@@ @%'J@@@ @%)J@@@ @?')+ #"$!$  ? /// ** 7770& /˶MQV1걩=EBroj!DHBH&܁?:]]] 㻝7TT:孭&7nnn_L @@@ @܁D@@L@ @!/68::>?DA>3,,/221/=AD/%!777]kpss{~A{gWW]ccb]0Ž 8zA_JσA;$nn.ל3n\@@d@ @,/68::> ,/#$##58DA>3,,/221/=AD/%#!777]kpss{:@Y^EHEEkoA{gWW]ccb]0Ž 8zA_Jρ#A;$nn.ל3n<@@A@ @  +EIM;-$!""   #9993*4 (%35%+VB vYH.$AEB!  GqqqfS@@@ @ !@@@ @ !@@@ @!@@@ @ !@@@ @ !@@@ @ !D@@I@ @!99 $CGJ7%   !!777rr>FBmJ 'AAnn.ל3nl@@q@ @4  &.&.969:99:9#  AFK3+  888./L[K\qlrtrpsqE?º@BgU22Ľ oo/󽀀2o@@@ @,%WJV@@`@ @)9>5-59 $CGJ7%!77߾7#r{iYjr>FBmJ &A4444́nn'B{{{,n@@@ @%$J^@@c@ @-**+229 $CGJ7$  !!ց777'ֿ.6SS:=;:Uddr>FBmH'AAnn.ל3n@@@ @%$J@@@ @%43JheL@@R@ @$ ;?0AC@C1% " 7770&, '$"u}%_C bJ:/+." 孭&7nnn_L@@@ @@@@ @@@@ @@@@ @ @@@ @@@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @@@@ @@@@ @@@@ @ @@@ @,@@@ @@@@ @ @@@ @@@@ @@@@ @@@@ @!@@@@ @L@@L@ @$ 658$ " ///$kjpH 谏)))'" ",,$]]]>Ӝ'9@@F@ @.3:@6479BGGHLC?6EM9 ˄'![eslhoqE}kAq ߽ f@@k@ @1 8665<9! "CGK6#//47888( #!:::+oljiwrB@DBlF/^hopppP2(E8 B%tt7֜ 9t@@@ @##F@@@ @##F@@@ @#F@@@ @#%F@@@ @#%F@@@ @#%F@@@ @?8665<==>9.*2;5$ !DIN:$=*13333++  %"$&'++PP, ,P; oljixyz{q[Tdvk;GBBrH1Ubhggg2,,VV62)#111,((#+I8 CFLOVV,,9AW!X@-@@2@ @?CBB:21535;??!~Btd`jfi6v}~A11!?@@G@ @?D:2;AAA91/425:=?! ~@tdvBqa]gciý3sz~A44 44 ׁ۪@@@ @!!A@@@ @! A@@@ @!(A@@@ @!"A@@@ @ @?@6+@~lV 88 @@@ @@?+@~V @@@ @+,V@@@ @+)V@@@ @+%V@@@ @++V@@@ @++V@@@ @++V@@@ @++V@@@ @+%V@@@ @)+QV@@@ @+,V@@@ @+.V@@@ @++V@@@ @&+*JV@@@ @+-V.@@.@ @;?<%:0+99;;;) u}wIs`UsrvvvS7 :88&@@&@ @ <@=&+99;;;) wyKUsrvvvS7 :@@@ @+U#@@*@ @?BB gAW<;67<7;;4;::;9<= ;>?'yB |vknxmuvhuusv 5rxz9v|~N 11!%%뿗뿗@@@ @'(N5@@:@ @=ABB:21535;??! yBtd`jfi7v}~A  11!@@@ @!%A@@@ @5@@@ @!"A@@@ @! A@@@ @!$A@@@ @!$AM@@R@ @%=ABB:215396$ ;??!! 99;;;&yBtd`jfqlG 7v}~A! 12"4srvvvM1@@ @ @!KA@@@@ @!$A@@@ @!&A>@@C@ @ -444-! "CGJ5' 77739YgggZB: DBjNnn.ל3n@@@ @'(N@@@ @'%N@@@ @'!N@@@ @'.N@@@ @''!N@@@ @'.N@@@ @'.N@@@ @':N@@@ @''N@@@ @''N@@@ @''N@@@ @'N@@@ @''N@@@ @''MN@@@ @'(N@@@ @'7N@@@ @ '7N@@@ @'7'N@@@ @'79N@@@ @ '7N@@@ @ '7N@@@ @'(N@@@ @'*N@@@ @''N@@@ @''N@@@ @'$N@@@ @'+NF@@I@ @! -444-! 8=A,-' 77739YgggZB:7py@X+#ZNnn/Ҝ >n, @@@ @'*N@@@ @')N@@@ @'"N@@@ @'"N@@@ @'"N@@@ @?  /302/2    "DGJ5= !77% 7770&777931  ^f<_c]cA-  #&: DBj=BnnK!孭&7nnn_LӬnn.ל3nL@@T@ @$=BA>3,,/221//68:;?=AD/%!777yA{gWW]ccb]]kpsu~0Ž 8zA_J! ;;$nn.ל3nD@@L@ @!?DA>3,,/221//68:;?=AD/%!777~A{gWW]ccb]]kpsu~0Ž 8zA_JA;$nn.ל3nL@@Q@ @$:9879 $CGJ7%!  !777tqpnr>FBmJ!'A; nn.ל3n5@@;@ @=?3545:<>>4-)"+6:9A9̈́y~eighsw||hZPCUksq@q   @~@@@ @9>q@@@ @9;q@@@ @9)q@@@ @9=q@@@ @9-q@@@ @ 9@q@@@ @9-qZ@@Z@ @+   +-/$%##"! )+/000 +񾹵$3)UZ_H*JEFDA-)U\___< /525.! @@@ @  @@@ @ @@@ @ @@@ @  @@@ @  @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ e@@~@ @1$/FRQRW]_bXVYYXNDB870@BA<* %.! -;@V^@-r5 $ NN +*@@0@ @:292$<;4*$#__s8+dqcG+ .yvgTHE A 4@@@ @ .@@@ @ .@@@ @ .@@@ @ .@@@ @&K.@@@ @=.D@@J@ @!:   92$#<;4*$#__!s8+ 46 )qcG+EyvgTHE A4@@@ @ .@@@ @ .@@@ @ .@@!@ @ JM! 4':: 3#AA/ g Mss@@@ @!@@@ @@@@ @ @@@ @ `@@d@ @./4;3JD1$ /8 9;<9333.,4===']hvfA(bG+]p/ſAqx}0Qhhit{vwrefe\4WhzzzM#::: ޲߁ @@ @ @+8V,Vo@E@@V@ @!$)5;1/-/=EHLCyx%EM%.yod 'GQiub^[]yEJ:AI\Aހ@ȁ ߽  88@@ @ @9cq@Ɓ@@ @ @0n`@ہ@@ @ @+VV@V@@V@ @(%'(" &%%' ) *IMPB, 5JIJ7' &&& 6@@6@ @ ""# ')+  /DDE:# ,MQU=8888@@@ @:0@@6@ @#5C!+*(H: <<<(E2i@3AVSP<.@ .s.>>>(xxxOƃ@@@ @$@@@ @8C8#p@>A{{@@@ @ >@@@ @ 8C  ٪;#p@>A{{2@@:@ @&0/#CAW18>J%>>3>>>>2 K_^FBbpz@I{{f-{{{{ c@@@ @ @@@ @ @@@ @ Q@@j@ @' K/,RV.+crO[[\_ (LR)@KQS  ف@]W A\U F!=OAA@@@ @#>r@@@ @7  OM=:?LUTSOF>,@@%@ @ CN!+, CCCCAAVW=@AA⃀@@$@ @ AL9D11CCCCAr@Ϻbb;AA$@@2@ @AL9D1< <<<(A3AWSP<.@ .|.>>>(xxxOƃ2@@>@ @GL%0.,#P B <<<(A;I`[XD6@6ƾ@6A{{>>>(xxxOƃ0@@<@ @CH!,*(L>jjW <<<(A3AXSP<.@ .|((AԀ@>>>(xxxOƇI@@L@ @#+16 16972-:,686( <<<(#Uak4/, blqmcXt ؚX kolOׁ>>>(A{{ xxxOƃ;@@G@ @CH!& >C+ݾ""  <<<(A BL 떋{@UB{sl9끂CC>>>( xxxOƃ@@@ @)QJ@@]@ @##1MPA6MW>(#$ # ! û FFF=5E. ;374 *cB#kA |OD'%G?D #Buuu>>=BziJ@@\@ @#ٿվ !2>FFF⻻ Ax A~j#.01c{B/>>Buuu @@@ @0`@@@ @0/`@@@ @>{3@@:@ @1?7" ''' )5; ؄ȳ<'a~mD4@NNNRjv;AyyAyy3%ʑL@@n@ @%84+=CCH!'(4CJJKG?@$>jpriS=߃!!CC ν2CofU;(z@A8BMOgF}G>|Dz׽ BB!A?ӛBzzz ,d@E@@N@ @"44%7FOO ">BF3! ޻  hh/JnB5ĨC}AdA 22 2P@@U@ @& ,5;1?9(+<;><-27:<<<' ف  &+%31( ,Xjvȳ;&a~qN;Uxv|wY6couxxxN̒AyyAyy 3&$ >@@L@ @OTPGKT&.864+$Y$ K#  <<<( ELZqliUG@G)@G99 99>>>(xxxOƃR@@j@ @'_lmTS\gim(26U\%?KQ55cda  ف Ճ05H$/:PdlA PA@444466 α6@@M@ @H=IM!VdAJNNQCIC ل@yA?5F0A@@z@z662 0'α&@@-@ @)DI##>D??""ބP8AEE|@2~~DD@@(@ @CH!>C""ބA ,A{@CCA{{@@#@ @)!!9C?? Q9AAq@.~~A{{~@@@ @= %GKO6",JNPC1/*07E?.(# ".556/#<+ 555!"55566 '! !IB kC= ,XCa]T`m@~]OE/ +3B[jjl]F/w   =jjjABDjjjkl H@@X@ @":0 ,INQK7# //¹6GGG>5r_'%  WC mE1/'*^^  Brrr2lB{j@@'@ @ 1ED8@@ȳ<'aAo:AyyAyy⃀@@@ @*T@@@ @*'T1@@=@ @G;>#I.3BE5??%%Є@tڸ|F @[f@+@h~~%́JJ%&@@2@ @#=R%/0#$CCCCE0y@I^_EHA{{C{{A9@@A@ @B6MJP8!::0 ??'''@ kǺB qB!ss` ~~MMM>,A@@F@ @ $&MJP1+-::& (('''' ƹ2GKBa' UZ>ssL *QOM..MMM@,-@@5@ @CJA-$&.430 3?C&+$BYGL[ge_4f~@LUF;;;7,  벲҄:@@B@ @9-CJA-$&.430 3?C0??+$οpXBYGL[ge_4f~@`~~UF;;;7,  벲҄j@@@ @3@9/( $JJM?)-#.16EQQPXsvkVLH??OIIH,NptbF1  :CCC<2 !!ƒ@ r]N@:G" BQY;9EZalJ~}HX1@   %@@@ ?sBxdBBʃ@@ ` @cFA@@@ @0`@@ @ @)SS@H@@Y@ @#%" !!>CCH*XfWMFFFE9):8;<<<' ߃!! IC@9BA9. 2{@AT>GpRtpvyyyN%콽BB2 :(%$4@@7@ @6+''16972-" ??686(jUMMblqmcXC ~~kolO׃A{{6@@B@ @>DDI#+) ??@@@;6ރ""7$ Ʊÿ|@AEVQ5~~BvlCCmH&@@-@ @/DI##>D??""ބ\AEE|@;~~DD8@@=@ @(0&*MJP8!::&??'''P`LTǺB qB!ssL~~MMM>,2@@4@ @=:((&<%??iiAssArrx+s:4PP>.KxI~~AуAA@@@ @(:@@@ @&:@@@ @)@@@ @ @@@ @;@@@ @!;@@ @ @(SQ@@@@ @ہD@@U@ @ ׾٪) .8@@@(ɾ  B|tmԤATQQہ[pBN!A{{ 777@@@ @ @@@ @ @@@ @ 7J@@\@ @#"+!(((# NQG/H!3CCC νDV #APPPF5+B ^:8@799  .eB?ԛBzzzƒ@@@ @#7@@@ @ @@@ @!>@@@ @!>@@@ @">@@@ @&/L@@%@ @ MA8C??A8#p@>~~A{{@@ @ @*WT@8@@F@ @'CPF=HXWQN6*+-- ??  N9Hzk2TWZY1##A{{ ##~~,>@@D@ @E>#I.3:<442# =;, Ё%%  ⻷+@ڸ|F @ [fswfhc5E zvYA$ԟ%́JJ%' @@@ @#!E\@@a@ @,25958<)* #@@@:/,˿"bjq<'iowPځ"    ???EBr]D@@M@ @ 16972-+'/,??@@@;7685&7 ιƴblqmcXUM^W;&~~BwmA{{ koiJ ׁm>@@@ @7@@@ @!>@@L@ @OSQIKT%-753*#X# J"  <<<( EJXojgSE@E'@E99 99>>>(xxxOƃK@@O@ @%*((% +% !>CH 9 "ƒ2:TPPI@VJ !3A|A1'߹r8㻹:::96.9C90ⴄ6@@C@ @CH##=KH: ??@@@<6""7 AEEzAs;~~BylCCm>4@@7@ @0$+''16972- ??686(^FUMMblqmcX: ~~kolO׃A{{@@@ @0/`@@@ @$@@@ @ہ@@@ @@@@ @ہ@@@ @&@@@ @-XT@@a@ @(&'(1/AD@:748=979::3*#%FJN:1&  66ܼ6 H*JL^/Z|@|ojekvnimopbOAFBp]#ll)Bwww,lL@@L@ @$ ,444478:=6671-?6= 3' ))) ݃$@XggggnptzllmaY~0ly+ fN    QQQ5///ڹ@@@ @&9B*DŽL8r@S @@@ @*S@@@ @ &8A*DŽK9p@S /@@:@ @ 8@EKI  @GAcG'7NdA$:Tk|@@1 ;; ;; 1Z@@Z@ @+  &666:::=888!))%,111  +(.1 %-*LkkksssyopoBR)IXaaa9333 ̩   @@&@ @ :H>760%[Zt@ {mkؽ`I A AUW@@@ @%(I@@@ @&%KIH@@U@ @#M3:H>760%,-!/99[Z%%%'@et@{mkؽ`(?=00/"JXZA\rr A AUW-&6>JJJL6&,1@@B@ @BF!QTPOPNHI #=A=  AAG/Ey@z ;; 1„@@@ @ =@z*@@*@ @;:/02,");3$vtп^_cYC(RvgI! #@@0@ @4#BA) ')70GgFA RMRn_ @ AMMALL@@$@ @ BF87=A&Apny@L :: Ä@@@ @/\@@@ @ 879A&Ʉpnʹq@L @@@ @-X@@@ @/@@@ @ 4*;D6DŽ gSv@l @@@ @<@@@ @!<~@@@ @< RWUTOIOX\]\RNQNMMR/ -FHL?8' %8NQUIR  ( 666666  Q]8 6YB}pM)InC@'??(??( kk0ߟ0kkk.ܟ.k@@@ @#C/@@4@ @CCF3!:9((((  B eB!trP 0OOO?* @@"@ @ BK7@E;.<<<<An@v] xx xx@@(@ @ ;DDM ML; <<<<v@AAv xx xx #@@1@ @;DDM MV[RE <<<<<<v@AC@ xx xx xx@@@ @ BK8755&<<ApnjjL xx .@@5@ @BE)0/. H>...!AgfU ...!ALJH,%о^_dYD(}i'vgI! 666'\\\Aڃ=@@D@ @BF8;&%$=A> 4  ...!A pv(=KIG+$y@ |쿺h& :: 666' \\\Aڃ@@@ @H@@Q@ @"(!()0EC?&8CIA0,$#/0/"     111,$N-%8?MO16::^A{I;nB^VGC[^\A  //bbbWGH@@H@ @" #---"$ '-111 "  ķ $FYZZE"G NYaaa//쨨 @@@ @3d@@@ @32d@@@ @3c@@@ @)OH@@`@ @"G@0";@AD(-9=JYaaa[NK4 !9OquxcX777@_DvAOYqzGh#BrDŀ@Á ::(nn.ל3nD@@G@ @ 98%7>G$469*' rp,In{@ =!GhkqSN P@@a@ @& <@CCG>6?DCC;3264:;7+' 55) л  >º 8x@A{k}B vfblhsumUNjiR+ПBvvvف4444 >@@L@ @GHMFAI..432*)MB#  '''EYXedcQP@6 @D NNN2 ƒV@@j@ @)tfXDLTXWY '2JP(4KT99  )A@GAcG'7NdA$:Tk|@@rr1 ;; ;; 1b@@b@ @/<8  &666:::=888!),%,111  /wn(.1 %-*LkkksssyopoBR,<<IXaaa9333 ̩   ;@@Q@ @KBBF!QTPOPNHI #=AH99  AAAG/Ey@@rr ;; 1„M@@b@ @ BF=DLXc`[\54=A}  AzxKv#)!!g|Fihy@@ ;;00;; 1 „A@@U@ @CG>6?G$MRTRQLGI "=C=  ބA{k}@GG.Dz@z44 4444 #»5@@H@ @GK&WZVTUSMN 'BFB   AKG!8NA@ ;; 1„'@@1@ @F=BF87=A%99@xApny@Jrr :: Ä!@@(@ @BF 2;=A#ǁA?+cuy@F :: Ä@@%@ @E<879A%99Ʉ@vpnʹq@Jrr z@@@ @ ' /-BFI@:9&$",6BTVYJNVfjlg^WM9)%36//$$]]$$ ŵxA3j|~@xii<HH4 A PQY^UH <<<<"" B.{@C@ xx xx9@@A@ @H?CCF3!:9'99((( @ }B eB!trNrr 0OOO?* A@@K@ @ '88CCF7%>?6( [ZI)'!!&% :Noo!!-B oI/-{}lQ-A@ ,RMA::AKJ9' @@@ @)O7@@D@ @F=CGFF>65979 ?CC;99@xC {kgqmpǿ=}Arrr11!d@@p@ @08-233,"")2643ZaeVG?.,:89!<`d^$. 7770& ׃pY>/)+cegYD6(&,;CQckhfD~[XsorBxB Y..nnn_L孃@@ @ @D$@Y@@@ @3c@@ @ @(IQ@@@@R@ @) =ABF!RT08ADCDD@48 55)   R)y@AAA`pDho jiR/  ;; 22 4@@7@ @O5;:/02,"3 99;3$@ivtп^_cYC(e rrvgI! 烀/@@6@ @ =ABF8<:3'566   y@A pwte8LjmlBÁ :: <&'@@1@ @L2BF87=A099@cApny@`rr :: Ä9@@A@ @*B=*CCF3!:97""((( S@ ySB eB!trmDD 0OOO?* -@@=@ @Y?4#BA) ')7:99G@~gFA RMRnrrr @ AMMALL@@@ @-0X@@@ @--X@@@ @ꁄ@@@ @@@@ @@@@ @ @@ @ @'IN@@@@ @)$R F@@I@ @! -$M''(,./- '16888  üYG@ NMPW\]Y?%Nbkppp=껻 @@@ @%%I@@@ @%%I@@@ @/.\F@@J@ @! !18881%! wA_Xg\nn/Ҝ >n22؃@@@ @/.\@@@ @$G@@@ @8@@@ @8@@@ @8@@@ @()P@@"@ @ PG&9B)99DŽAL8r@Qrr @@ @ @*UT@8@@B@ @-#?J@8BMPNK3!0,-+  $$  7% YF~@pDgB`XZW2 GG,B@@I@ @==#E/3B?;777/# 1.  ށ''  :K@ckAzssrc4C b\A)ɼ$ NN * "  @@ @ @# C Z@@Z@ @+ -.!69<*/( 79<1*)2+*)   000-&+0 #6WY:<<4@iouQ3\M>kpv_;;QObS<R)     3338```YL;@@;@ @ /02-";?=5*566 ;3$ Կ^_dYD(v}yj> RjmlBvgI! <# @@@ @-X@@@ @"B@@@ @#Dj@@{@ @3AFEB7003664.(*+*3;=>?C AEH3-0777+"2@82+΃Co__ekki[OSU&.:Tety{}@@Be3 ſX( ;;$3nnnUCc@pcVל/@@7@ @ BF87=FD<& & 566 'ApnyAxLL jmlB :: <&4@@7@ @I@;:/02,"( 99;3$@~vtп^_cYC(P rrvgI! 烀@@@ @3d@@@ @ &9C5-;A* لL9q@iYv@S @@@ @)R@@@ @.@@@ @)1R@@@ @ @@'@ @ 53/ \] "++8??8 je^ADVV@]o}}o@]%@@3@ @%OK;6ge0%; Ł6CCJ5AvkA`Jw퉁Ayy$lAU@@n@ @(  %1888;==>B8*FWWWC.$'BB2#  *2BBA2 ˽2A*16Kapppuyz|@ o)= -TD[GNAcF*" 3TcA@c–Byyy(c@5@@=@ @ABF3 87!:=7C#  %:::Bg?pmü$Btzm@E Isss: ̈́=@@K@ @9/KVWN@:7*.EGNST1 !-222q^DtmT[4 Da +AYccc>8@@;@ @ 9>@7 ??!.?$##ُ(r|@n?  }}Bܦ )\}@@#@ @ 1<5*DDDD ʝawiSDsmaA9@@J@ @ɻ  JL ?Կ 0DDBvpjA.~+ΨB~~~  _AV@@h@ @(Ļ(4>>A33>J@@V@ @"  +<,( 4AAA+++ ύC|pyx׍@~%hov@lzB!0ЊUUċU<@@B@ @ :>B$  77%7 $**)$ގ@z s|@H nnI ڜ0n@@@ @ &.*! :::: țL\TB ss ss9@@9@ @ 15!4,5::α6650@ajA/hW9ș  =iss\@@\@ @+ +,4888# + ͖ ,**(22///,+YiqqqE ;;;漙   !@@%@ @'8:0:::6:>N5#<ᨨ QQ8 Z@@h@ @* 9AGCC0  9=@$*  ÿ;;) ;;! ; 0rC`=1(&&#֖&qy@I  B~~~0vvR$$$ uuB櫫#+6=AAA3/// ⳎBv~!#$ݓ+nu|FlzB"gٓ ^^$͔$^@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @4@@4@ @  $'*&&& 麳GMS6KK!䵵K@@@ @ ! //΂// ǨҨ3B@1]]]]6@@:@ @ AB , ///##"A) X ^]]W@@W@ @   (((    /.."'00/0=OOO7"""ɮ   $@@$@ @ *0$*˷')" '''('D@@D@ @ $ #(((  ٸ 5H@># ! ;EOOO- (( S@@S@ @'  $')('    ' 0FMQPO>+'! 7;?Ǻ33>>!>@@@ @ (ҁӄ!P@@@h` @  ! 1!!" 9=A&8;= "??% '?ؾR@@R@ @'  !((( 'м"!" 49?#6BPPP77߿7@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @// _]?@@@ @ **SS@@@ @ ""DD@@@ @ ""DD@@ @ @A%EAJ@ @@&@ @A;90%EE%,>@uq_;J-A6σ @@@ @7A%EmAJ @&@@)@ @ "?85"7,% EE $(C~piCmWJ-A<ۀ @@ @ @$JoH@@ށ@@@ @ E3A6%//EE@e@lJ]]A@@@ @ $E7,%H@nXJ M@@Z@ @%  ")))./*-473D9"/C>4%¼&5/EE! ټ&0DRRR[^TYgmf@r=]@ |gJ4*Axr &Ki]AN@@[@ @% (15BNNN;+*37-)0%#   ,;JJJPS 8119NajC uVTfmYQ)_I=+3-!ϰ?YvD,# @@@ @;1%%%vaJII@@` @ $@@$@ @  ك*&7+ $'вD@@D@ @  #  $"&9E!//!ʻ*9G׸(**''''''**ف**փ@@@ @=H9y @q@@@ @:@9t@q @@ @ @( P?44ƃ"@@-@ @  LOUUUWWH%1 "F@9J>% #@@+@ @7/=HHHC<H m^zCw@ ǶU@@k@ @*"  =4@CBBMMIDBBDFHHSSTQF=F $64999D. *zgQz@9H6;=62misssS@@g@ @*#.?HGPPICTK9H@@@ @ =4@RF=F99ygBy@ss@@@ @  NNF99dž% A@ss@@@ @ !!@-$AAǃ@@@ @$ @@ @ @--ڃ @@ @ @--ڃ @@ @ @ --ڃ @@ @ @--ڃ@@@ @$ @@ @ @ցփ @@&@ @A:8/%EE$+=@tp^:J-A6σ@@ @ @;`v@@@ @ @;`v@@@ @ @;`v@ @@$@ @' 1&% #N:bLJ@6 ȭ@6 @@*@ @ 70.%%Ҽʷ(m`\I%JB2aoAwwAlF@@ @ @0d`@ǁ@@ @ @1db@ǁ@@@ @9754qnjg@@@ @2124cacg@@ ` @AjAӁ@@@ @C,)@WQ́̓ @@@ @ '@@@ @ @@@ @%J@@@ @0@@@ @0@@@ @0S@@a@ @' >DJ8      ÷$III?3ƶ0. 9{A o?% $ 10 ! Bnnn GB}e M@@R@ @$  &?DG@2(  "  09994+ =;#(+!L~B bO>$72&@<""   5`qqqgVs@@@ @8>DJ8    /   ÷$III@3 ϫͶ 9{Ao?% /1() /2]$&%Ӂ Bnnn GB ~e  j@@j@ @3 $333$    ::++:3     ܫIfffH    ssU!ૌ!Usm@@w@ @4 47;,"! <@AAA& ſ '(%! 4 ᤜ;:!#'! (fnvW68CB@=00=;xBLB~~~ LOIA0%  \@@\@ @+&*"#&)#489'777+ŴǭLSD7FLRE믧*gpsM .==++++ف&&mm,ڝ)mp@@@ @5 AHG)#2=?BA8("#1DXZ\G2&=   />>>6* * @}ҹCpa^Z8UG=1@|;/FbDdK'<,(,= ,,  ,, *<]{{{lS5@@7@ @ 599@@115 Ľjrr+A2%A.bbj((33((܁΄[@@d@ @+ ,04/05/59M[[ )5-&=CBB&Ϸ'W_g]7,`j6*^jrB'&jZ4****MyB=@@B@ @0716/; 0!'DDD/ _n1#ak-!^uҜ630 _BM0B^4<<)?@@B@ @ %((<:169:=<(&JPO   @z ?@@?@ @ 6   $8@}@~lŸ9Go$$00A00$$؁AC@@H@ @CHF ;σ   B'ێv  û###ͳV@@\@ @) CHF ;σ  B'ێv###ͳG@@U@ @!   KP4.JLO¿A""""" ȃ  Ah[Bċ@}@77CC77CCCY@@`@ @*ָ2-#   #0883ځAo{@cZE((# F`qpe"""밪ѴԄG@@P@ @! +0618;NXX 5-.?CBB%V_k/#apvB'jZ4((((5\|B@@@ @ %,ځڃ IW 3@@>@ @!, &, &, ݹ߽ ۄធ⟔BX KW KW@n@rAyyAyyӇσC@@I@ @ .,!   zzzz[WA! &!!--AA--!!ՁACC7@@=@ @C/0 (- (+ ;;  @@s *]` PZ OV**uu**҄@@@ @)%RI@@#@ @ &pNC2' ))׃K@AcN RRɮ77 @@ @ @&*KT @@@ @  2:*21111Є @@ @ @ 11Ѓ@@@ @ $! $$$ G=B HGH@@@ @   (& 11**׃@@@ @  1100σ,@@,@ @-+ ˨ 7ZV 0011$1100σ@@@ @ 3f-ޤ ;ƃ@@@ @ .  ; "[@@@ @    C!+11    $@BUaa@@@ @    + A11  $U?@aa#@@#@ @ %%%%111< -7 ,JJJJ,aal@@l@ @3  33%7: &8;3&+2;;;)- %*1:::(,8@@8@ @  (9< &+2;;;)-@@@ @ --ރ@@@ @4:'h8@@d` @    " ' "   !6+/(CFEGhb(rrxxxm`B}}}g<Y@@n@ @*   ƽ0AFCA3! BB7' ,7BBA8*!&,5A%5<@/ګByyy"`CfB.AmN2!!  -WmA@pT7 ń1ALWj@@@%@ @  FG558??8:(A惀jj@:o}}o@:@@@ @EO„CcO@@@ @@@@ @ 1 0LL* b!@_66A5@@8@ @<=A,/.382; ":::wy@Y1]\;focu' Dsss6 τd@@n@ @/ž  ǻ .???!/   77,7ǬBzpy+++/+ 붎Bvvv[~~~B/!!! ٩ mmW/ܵ4mk@@p@ @51* '*+)+++##/KNP8/...***/bS ӚMSV(='$"#4;PVVVEF3]Bp0/  \\&宮%\SSܥS@@@ @?'#&1344+, "7TWXA*1 '*+)*++# #/KNP8!***/...***N8434ELafggVW,DnC/Sb ӚMSV(='#"#4;PUVVEF3]BpBSSܥS/  \\&宮%\SSܥS@@@ @  4B ? >h B{@@@ @?  *** 8  '"%%% ### (( (?   ,64222"ּ 1===(&&)12[nppK(1Pp !%ç"@@&@ @ QQ /7>˄ A@/]n{@@@ @?%* "'("   )DDD:,FB>>>60159993*99+9+%.94?021///!*$"! "-*&%IR6@CNOC +@!QBsWA#{{{l_biqqqfSrrW;qU.& * 1:J[rg?`db___ð "AS>GDA)# 0,! "EZSK,⾩ӃP@@` @('' %9%    ...*"  ? #HqqqH# !!!% &[[[SDP@@` @'&!    #"  ?!!!  2:::;EECвC$Ё ؾ1@@E@ @.7K86GG 9$CBO7ȁȃEE 8'[m))@pkArHBnAA[[A[[#@@:` @   '//'22@@@ @C,)@WQ́̓@@ ` @AjAӁ @@ @ @;;"uuD@@@ @ ;;;;" uuuuD@@@ @ 12)!*2)Ԅ bdQATcR  Z@@Z@ @* 3333.'&1141/*%0-++'&$%*'6:8885- *ƭ9eeedZMLbbia^SI_Y1VVOL;!!!*7FI*!NǯksooojZ&!ȰՃ.@@.@ @23+#+91)12***** dfVFVqaRbcTTT  TT@@@ @!\@@a@ @.*!!"*= 0* !+111,$" "0888,9||#.SȡBBCSz#`S=2.7AUbbbYHC.1D`pppYqAA **88$ 8@@@ @ /"<:952  ^5231Dwtrjd 44!@@@ @ #    F: (.4 *.>>@@ ` @AjAӁ @@ @ @)&&ރ @@ @ @6  @@@ @)Q@@#` @    @@#` @      @@ @ @4g1   @@ @ @)'  @@ @ @)(@@#` @        !'' #%"@@"@ @        $& '% @@` @.% [J$????҃@@@ @ -)     ީ+2#ZR 77????@@@ @  +& && /#UL LL @@ @ @"D3>>ԃ@@@ @&&/#90LL @@ @ @4   @@ @ @-Y1  @@@ @7n4  &&@@@ @0&_L    @@ @ @#F;@@@ @! 2( E &&$@@$@ @  ,,, $( /2' 6WWW6 @@4` @        */*/ /D@@D@ @   /     4@@4@ @ %%% >?"  $$$29@JJJ($ ȃH@@H@ @ 0+! """ $$$$  ==! (_V! $$$.5:DDD5"GGGG@@@@@ @ """    ==! .5 $$$.5:DDD5"77@@@@@ @&& """ 2&  ==! LL $$$.5:DDD5" @@ @ @)&&ރ@@@ @ /*  && && +'^T --LLLL@@@ @2 ."c47777@@@ @ , ީ+277778@@8@ @   ---+('))  @@@ @3* fT   $@@$@ @  "%0/   @@@ @ #    E: *4&.>>@@@ @ 8-**0  oYTT_ ܃@@ ` @ @/**@@` @.& !!!!\%CC@@@ @  " C?>7 ?@@?@ @     )*'''   ,@@,@ @       $,55541@@@ @    &&&  "(.1 0MMM0  @@ @ @)''߃ @@ @ @,$ == WGzz @@ @ @&>3șL{ e@@@ @C2.ICc-[, @@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@5` @    '.888#@@#@ @! ɲ;5626B ̃@@` @-$ Y"11@@@ @  -)  ݨ*1"YQ - -5555@@@ @  *& !! -"SK BBۃ @@ @ @"D499σ@@@ @!! -"7/BBۃ @@ @ @̟12 @@ @ @2d3@@@ @4h.@@@ @D)'@Q @@ @ @1)aRׁ׃@@@ @!9B#Ȅ@@@ @" ȿ C>?@@@ @     ¿?<@7 < @@ @ @  ''' 46  .MMM.@@4` @      #(#((*@@E` @  0   1@@4@ @    ۃ21&.888H@@H@ @!/+!  !  ;;#&]U! #*/:::+ ====@@@@@ @  -4  ;;#- - #*/:::+ @@@@@ @!!  0%  ;;#BB #*/:::+  @@ @ @)((@@@ @ .) !!!! ($ ## BB BB @@@ @1b3,!- ---@@@ @*ݨ*1--- -5@@5@ @  ,,,+*))( @@@ @+(׾UP@|"@@"@ @   '25   @@@ @ $  %%  H< $4:@!,6:JJ@@@ @ 7,))0 nWQR_ ҃ @@ @ @'M;55ă @@ @ @5,ʛ:i X@@"@ @ )# 6  'Fۻ' S'5EmM@/@vN @@ @ @+%߃UI  @@ @ @*!SA883@@4@ @ %%%  $$$18@JJJ($ ȃ @@ @ @#F>  @@ @ @$G:55$@@$@ @  %%%'"02-&6>JJJL6&,"@@"@ @  """#   +1 $/7CCCE/%(@@(@ @  &&&   97/52KKK277(@@(@ @ 4 &&&   97h/2KKK277P@@P@ @%  % &&&  % 97ʿ #'(%2KKK27)  "%%%#%),.17T@@T@ @ ' &&&  ### '  86--'-A81@  @@@ @ ! C>  >A5@|  B@@B@ @ !  (+...0466   ?A&% &,")9OU\\\`gkk  F@@F@ @    ###  35 56  &&&07=@4@{ B@@B@ @   '*...0355>@%$ %+!(8NT[[[_fjj    E@@E@ @    24 45'.3===. gohugoio-hugo-6abdaca/docs/static/fonts/Mulish-VariableFont_wght.ttf000066400000000000000000006370241507671574500261050ustar00rootroot00000000000000@GDEFuGPOS,zGSUB._i ) HVAR{ 8 OS/2qf `STATlavar2cmapD fvar{@l~gaspTglyf+jHgvarcGzheadU 6hheah|$hmtxx#5loca6 Fmaxp3\ nameأ@<post E$~prephL"RN, S  ( 0*84o@@^M_<H\I{ EXKX^,,P KNONE))   wght ,   X   $wghtital ,<HT`lx,X  |q?&-ZBKOXb˖ذٲ۵                    !"#"#$%&&'()*+,-,-../0012325678:<= > ? @!A"D#F$F$G$H%I%J&K&L'N(O(P)P)Q)R*R*S*T+U,W,X/^3e3f4h5i7m8o8q9p9r;u @ @@.  $ 6D ,.PR57>@@Bnp    $&)*,,..02446;==?IKVYY\]ahklo  % P ".   8 ".  "   2b 2b  B 4                    n  ,B  "   &  $ (   *d "B ,    RomanItalicMulishRoman-ExtraBlackMulishRoman-BlackMulishRoman-ExtraBoldMulishRoman-BoldMulishRoman-SemiBoldMulishRoman-MediumMulishRoman-RegularMulishRoman-LightMulishRoman-ExtraLightExtraBlackBlackExtraBoldBoldSemiBoldMediumLightWeightMulishRomanExtraLightMulishhttp://scripts.sil.org/OFLThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://www.sansoxygen.comVernon AdamsMulish-ExtraLightVersion 3.6033.603;NONE;Mulish-ExtraLightRegularMulish ExtraLightCopyright 2016 The Mulish Project Authors (https://github.com/googlefonts/mulish)#/;GWco{'3?KWc?KWcs/FR^jv&2>JVbw .:FR^ju".KWfr} ,8DP\ ,8DP\ht  $ 0 q } , g + 7 C O [ g s   , 8 D P \ h t   . > N Z f r ~ 5P\ht ".Aw'3?KWco{$VA#/?p| ,8DP\ht ,8DP\h %1=O[fq|7B^jv0<amx,8DP\lx 0@LXdp|L)4@KWb a+7CO[gs #6Uamy ? K W c | !-!9!E!Q!!!!!!"""5"="I"U"""""#8#\#h##########$5$=$]$t$$$$%%)%\%%%%&& &&9&n&&&'7'?'`'x''(4(a((())):)))))**0*X***++"+*+6+j+++,,-,9,E,M,Y,a,m,y,,,,,- --"-.-:-F-R-i-u---..H.P.X.../////&/2/>/F/////00 00!0[000011#1/1L1h1}11111112#2+2J2a2w222233H3r3z333344494g44455#595g5566C6n6666707b7{777788C8K8u888899,9O9n99999999:::B:N:Z:f::::::::;;(;W;c;;;;;<*>1>f>>??J?|???@@K@@@A0A8A@AHAPAXA`AhApAxAAAABB7BgBBBC2C;CDCMCVC_ChCqCzCCCCCCCCCCCCCDDD&D1DGDYDuDDDDEE!E=E[EEEEEEF!FYFjF{FFFFFFFFFFGGG%GP|PQ7QRQ|QRZRvRSFSSST TT$T8TMTTTU7UNUeUqU~UUUUUUUVVV)VAVXVdVvVVVVVVVVWWCWtWWXX4XAXXXkX~XXXXYYY"Y9YfYYYYYYYYYYZZZZ!Z*Z3Z*pp$%&++7@.'W# G UUo(n-X9$UJg k&JJ_=U@@UUg3(@>&&(($$$ +++@+J77$5%&UNSAIIIRH>>>QmmHT@Q@Na))6DPj@&71;[[ZFAC4QJVOHn?:?`AFhBBZd\@UbfNNHA>>QQQ;%%%DGV66EHN24M@D[IHH4A7W,I44??????**? ee???]]G?0/o]cG44HJeYG(BCDEEFFGGHHIIKKNNQRSUUVVXYZZ`abcddijjno}q     !$&'),.</0/245678:;;<=> ? A!@!A!B"A"B"C"D"E#C#E#F#G$F$G$H%H%I%J&L'N'Y(N(P(R)O)Q)R*S*T+U+V,X-X.\.]/\/^0]0_0`1`1a2c2d3c3d3e4g4h5h5j6l7m7n8o9q:r:t;r;u;vz>{?~ @ @@  /9~2~(-37SWY $(.158#:C_cku)/ !%+/7;IS[io{     " & 0 3 : D R p y !!!"!&!.""""""""+"H"`"e%' 0:4&*07SWY#&.157$;Dbjr$.  $*.6:BLZ^lx      & 0 2 9 D R p t !!!"!&!.""""""""+"H"`"d%'!O+$ PB=+(?5cl%}zew~ck_<k PRTVhlp*`bdjNTZdfhntvxz|~~~X.Q5aR9:4y*?)6+,}0 '0HIPUegisu=7>F78@FVY]fhs;<Y/^q`uM@2N'&(1 #@16=_WY[){   . $+PHJLrtv}|!%&"*+C12!>,F43"L;J9N=M<SDQAdUbSXIcT]GVfXh[\k^m`l_narewiylxkj|ou(/jpcv}p ?K:Z  <*B0ZKaR|4~     hijknorstuxpqlyv !w^_m"#$%&'()*+-./012345689:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\],7`a$,.E3D25#O>TERB\Mobqdtgzm{n~q  ?-A/G57%9':(;)8&`Q^Owyz{xUWZV[CABDKLGIJH3eibchsnfg]rpjkozv xDFLTJcyrllatn AZE :CAT CRT :KAZ :MOL ~NLD \ROM :TAT :TRK :     XBSH 2CHU   aaltcaltcaseccmpccmpdnomfracligaloclloclloclloclloclloclnumronumordnsinfsubssupsz    !   "%4ZzJ6N,B ZLLn8`>6>$# g ]F7* s)us$ s>& .%60"(2fg%.bcde"%.2ii]]6,"VVeeUWFHFtR0     ~tj`V<"  )  VT2T  \+GW  FFVV  #vBF gj !X64FV"~rfZNB%.$#" !     egdfCNbc     8%  FFss  ""   2266%8;"""""""""""""""""""""""""""a DDDDDDDaa a aGaaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFa*aDDDDDDDaaaaaaaWV*,,]a]aahaaaaaaaaPaPaaaaaaaaaaaaDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD!D~a~aDaaaaaaaa\4\4\4\4\4\4\4\4\4\4\4aDN N N N N N N \\\\\\\\\\\\\\\\\\\\\\\ P*P*P*P*P*|KKKKKKKKKKKI*I*I*I*I*aG6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6G6zHzHGXGX6666666G6,6G6G6G6G6G6G66666666666666666666666637K6K6K6K6K6K6K6K6:X::X:X:X:XMXXMM!XXXXXXXGXMX\P\P:P:PU:P:P:P:P:PP:P:P)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)6)66GPGXG6PPPPPKPEP=PKP@P:::::::::::WXDDDDDDDD1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1U1UY*Y*Y*Y*Y* *33333aXaM9H"aaaaaFaFaFa0aaaasasaPaaDa~aDN   BD|>a,aIaaa) Aaa\4D<a,Q a.@ D >a0a}a aaa%DDN KK >>aallaaaa>]a""FaDD00aaDDD<   >aAa>||GDP*~aW*a0D0DM9/9XXXXJ#9#9#9$BXBXBXWXXX8XDX/9AXMS9 9! CMXX+XAXXgXuX=9.P@X2>h/9#X($#XXNFXXCXa99!"C C@[A[[ XMDXUX/CXM9M9K#9#6#6$BXBX/9/9/9. CXX!!58M9_-hMSD:[X$9$9#X4&1U:X<XXGX=X:XSX@XLX7X8X:XXVX?X9XOXEXQX4X8|%|d|)|$|+|1|)|/|#|%|%|d|)|$|+|1|)|/|#|%|%|d|)|$|+|1|)|/|#|%|%|d|)|$|+|1|)|/|#|%ddpdp$GFGFzGGGL&HR%X/uiB2BnLLXJLG_G_G_GGG++VKKXXXeXHXcXHX'X8XKXX1X3X=XOXX1XEXIXXXXXX1XXXXX XXX4X4XAX4X4X4X5X4X4X4X4X5X4X4X/XX*XX+X$X0X4X1UXC<,<X2DA:5'////l)KVKgg2^0~2#a,sVKnnKttt{{{pXnnnttttmpptYnuujRnFtteoo{c?@ABCDEFG-H.I/JKLMNOPQ0R1STUVWXYZ[f2\]^_`abgcdefghijklmnopqrstuv345wxyz{|}6~78h9:;<=DikljnmEFoGHprsqIJKLtvwuMNOPQ   xRy { |z !"#}$%&STU'()*+,-V./012345W6789:;<X~=>?@ABCDEFGHIJKLMNOYZPQRS[\TUVWXYZ[]\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ? ^`>@B  !aA# _C      !"#$%&'()*+Abreveuni1EAEuni1EB6uni1EB0uni1EB2uni1EB4uni01CDuni1EA4uni1EACuni1EA6uni1EA8uni1EAAuni0200uni0226uni1EA0uni1EA2uni0202AmacronAogonek AringacuteAEacuteuni0181uni1E08 Ccircumflex Cdotaccentuni01C4DcaronDcroatuni1E0Cuni018Auni1E0Euni01C5EbreveEcaronuni0228uni1E1Cuni1EBEuni1EC6uni1EC0uni1EC2uni1EC4uni0204 Edotaccentuni1EB8uni1EBAuni0206Emacronuni1E16uni1E14Eogonekuni1EBCGcaron Gcircumflexuni0122 Gdotaccentuni1E20Hbaruni1E2A Hcircumflexuni1E24IJIbreveuni0208uni1E2Euni1ECAuni1EC8uni020AImacronIogonekItilde Jcircumflexuni0136uni01C7LacuteLcaronuni013BLdotuni1E36uni01C8uni1E3Auni1E42uni01CANacuteNcaronuni0145uni1E44uni1E46Enguni01CBuni1E48Obreveuni1ED0uni1ED8uni1ED2uni1ED4uni1ED6uni020Cuni022Auni0230uni1ECCuni1ECEOhornuni1EDAuni1EE2uni1EDCuni1EDEuni1EE0 Ohungarumlautuni020EOmacronuni1E52uni1E50uni01EA Oslashacuteuni1E4Cuni1E4Euni022CRacuteRcaronuni0156uni0210uni1E5Auni0212uni1E5ESacuteuni1E64uni1E66 Scircumflexuni0218uni1E60uni1E62uni1E68uni1E9Euni018FTbarTcaronuni0162uni021Auni1E6Cuni1E6EUbreveuni0214uni1EE4uni1EE6Uhornuni1EE8uni1EF0uni1EEAuni1EECuni1EEE Uhungarumlautuni0216Umacronuni1E7AUogonekUringUtildeuni1E78Wacute Wcircumflex WdieresisWgrave Ycircumflexuni1E8Euni1EF4Ygraveuni01B3uni1EF6uni0232uni1EF8Zacute Zdotaccentuni1E92Iacute_J.loclNLDabreveuni1EAFuni1EB7uni1EB1uni1EB3uni1EB5uni01CEuni1EA5uni1EADuni1EA7uni1EA9uni1EABuni0201uni0227uni1EA1uni1EA3uni0203amacronaogonek aringacuteaeacuteuni0253uni1E09 ccircumflex cdotaccentdcaronuni1E0Duni0257uni1E0Funi01C6ebreveecaronuni1E1Duni1EBFuni1EC7uni1EC1uni1EC3uni1EC5uni0205 edotaccentuni1EB9uni1EBBuni0207emacronuni1E17uni1E15eogonekuni1EBDuni0259gcaron gcircumflexuni0123 gdotaccentuni1E21uni01E5hbaruni1E2Buni021F hcircumflexuni1E25ibreveuni0209uni1E2F i.loclTRKuni1ECBuni1EC9uni020Bimacroniogonekitildeuni0237 jcircumflexuni01E9uni0137 kgreenlandiclacutelcaronuni013Cldotuni1E37uni01C9uni1E3Buni1E43nacute napostrophencaronuni0146uni1E45uni1E47enguni01CCuni1E49obreveuni1ED1uni1ED9uni1ED3uni1ED5uni1ED7uni020Duni022Buni0231uni1ECDuni1ECFohornuni1EDBuni1EE3uni1EDDuni1EDFuni1EE1 ohungarumlautuni020Fomacronuni1E53uni1E51uni01EB oslashacuteuni1E4Duni1E4Funi022Dracutercaronuni0157uni0211uni1E5Buni0213uni1E5Fsacuteuni1E65uni1E67 scircumflexuni0219uni1E61uni1E63uni1E69tbartcaronuni0163uni021Buni1E97uni1E6Duni1E6Fubreveuni01D4uni0215uni1EE5uni1EE7uhornuni1EE9uni1EF1uni1EEBuni1EEDuni1EEF uhungarumlautuni0217umacronuni1E7Buogonekuringutildeuni1E79wacute wcircumflex wdieresiswgrave ycircumflexuni1E8Funi1EF5ygraveuni01B4uni1EF7uni0233uni1EF9zacute zdotaccentuni1E93germandbls.caltiacute_j.loclNLD I_J.loclNLD i_j.loclNLDuni0410uni0411uni0412uni0413uni0403uni0490uni0414uni0415uni0400uni0401uni0416uni0417uni0418uni0419uni040Duni048Auni041Auni040Cuni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni040Euni0424uni0425uni0427uni0426uni0428uni0429uni040Funi042Cuni042Auni042Buni0409uni040Auni0405uni0404uni042Duni0406uni0407uni0408uni040Buni042Euni042Funi0402uni0462uni046Auni0472uni0474uni0492uni0494uni0496uni0498uni049Auni049Cuni049Euni04A0uni04A2uni04A4uni0524uni04A8uni04AAuni04ACuni04AEuni04B0uni04B2uni04B4uni04B6uni04B8uni04BAuni0526uni04BCuni04BEuni04C0uni04C1uni04C3uni04C5uni04C7uni04C9uni04CBuni04CDuni04D0uni04D2uni04D4uni04D6uni04D8uni04DAuni04DCuni04DEuni04E0uni04E2uni04E4uni04E6uni04E8uni04EAuni04ECuni04EEuni04F0uni04F2uni04F4uni04F6uni04F8uni04FAuni04FCuni04FEuni0510uni0512uni051Auni051Cuni048Cuni048Euni0528uni052Euni0406.loclBSHuni0492.loclBSHuni0498.loclBSHuni04AA.loclBSHuni0498.loclCHUuni04AA.loclCHUuni0430uni0431uni0432uni0433uni0453uni0491uni0434uni0435uni0450uni0451uni0436uni0437uni0438uni0439uni045Duni048Buni043Auni045Cuni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni045Euni0444uni0445uni0447uni0446uni0448uni0449uni045Funi044Cuni044Auni044Buni0459uni045Auni0455uni0454uni044Duni0456uni0457uni0458uni045Buni044Euni044Funi0452uni0463uni046Buni0473uni0475uni0493uni0495uni0497uni0499uni049Buni049Duni049Funi04A1uni04A3uni04A5uni0525uni04A9uni04ABuni04ADuni04AFuni04B1uni04B3uni04B5uni04B7uni04B9uni04BBuni0527uni04BDuni04BFuni04CFuni04C2uni04C4uni04C6uni04C8uni04CAuni04CCuni04CEuni04D1uni04D3uni04D5uni04D7uni04D9uni04DBuni04DDuni04DFuni04E1uni04E3uni04E5uni04E7uni04E9uni04EBuni04EDuni04EFuni04F1uni04F3uni04F5uni04F7uni04F9uni04FBuni04FDuni04FFuni0511uni0513uni051Buni051Duni048Duni048Funi0529uni052Funi0456.loclBSHuni0493.loclBSHuni0499.loclBSHuni04AB.loclBSHuni0499.loclCHUuni04AB.loclCHUuni0394Sigmauni03A9uni03BC zero.tosfone.tosftwo.tosf three.tosf four.tosf five.tosfsix.tosf seven.tosf eight.tosf nine.tosfuni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089 zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numruni2070uni00B9uni00B2uni00B3uni2074uni2075uni2076uni2077uni2078uni2079periodcentered.loclCATuni00AD figuredashuni2015uni2010uni27E8uni27E9uni2007uni200Auni2008uni00A0uni2009uni200BCRuni20B5 colonmonetarydongEurouni20B2uni20B4uni20ADlirauni20BAuni20BCuni20A6pesetauni20B1uni20BDuni20B9uni20B8uni20AEuni20A9uni2219uni2052uni2215emptysetuni2126uni2206uni00B5uniF8FFminuteseconduni2113 estimateduni2116uni02BCuni02BBuni02BAuni02C9uni02CBuni02B9uni02BFuni02BEuni02CAuni02CCuni02C8 uni02BF.case uni02BE.caseuni0308 uni03080301 uni03080304uni0307 uni03070304 gravecomb acutecomb uni03010307uni030B uni030C.altuni0302uni030C uni030C0307uni0306uni030A uni030A0301 tildecomb uni03030308tildecomb_acutecomb uni03030304uni0304 uni03040308 uni03040300 uni03040301 hookabovecombuni030Funi0311uni0312uni031B dotbelowcombuni0324uni0326uni0327uni0328uni032Euni0331uni0335uni0337uni0338tildecomb.case.Ouni031B.O.case uni0308.caseuni03080301.caseuni03080304.case uni0307.caseuni03070304.casegravecomb.caseacutecomb.caseuni03010307.case uni030B.caseuni030C.alt.case uni0302.case uni030C.caseuni030C0307.case uni0306.case uni030A.caseuni030A0301.casetildecomb.caseuni03030308.casetildecomb_acutecomb.caseuni03030304.case uni0304.caseuni03040308.caseuni03040300.caseuni03040301.casehookabovecomb.case uni030F.case uni0311.case uni0312.case uni031B.case uni0335.case uni0337.case uni0338.case uni0335.cy uni0307.i tildecomb.o uni030C.alt.t uni0335.t brevecombcybrevecombcy.case uni03060301 uni03060300 uni03060309 uni03060303 uni03020301 uni03020300 uni03020309 uni03020303uni03060301.caseuni03060300.caseuni03060309.caseuni03060303.caseuni03020301.caseuni03020300.caseuni03020309.caseuni03020303.caseuni0000" 33#'!7'!"/)5.YKW? ["&f"&f"&f"T&'ff"&f"&f"&f"&f"&f"&f"T&'ff"&f"&f"& f"&f"p&f"q&f"T&f"&f"&f"&f"\&f"B&"&f"&f"&f3!!7'!!7'!!'!7'!]l Vr} g*' ' ' G &aY!3!25#'32654&##532654&##aoxSGO[xqVhhV]``]_YDXZM^a'DQRC'KFGJ"+3#"#5463!25#'32654&##532654&##'@=(U[nxRGO[yq_`__]``]9<+-NL_YCY[L^a'ILLI'KFGJDp"&&546632&&#"3267fJJfMu-1eDDe1-vWppW1/#/++/#/1Dp& Dp& DBp& DBp& 'Dp& Dpq& a 332#'32654&##arRRrPssP'a&'' &'a&'t &'aT&'t3#"#546332#'32654&##'@=(ST9<+-NL'al&'ta&''a  3!!!!!a~l'''a &0Ca &0Ca &0CaB &0CaB &0'CCa &0Ca"&0CaT &0'CCa &0Ca &0Ca &0 Ca &0Ca p&0Ca q&0CaT &0Ca &0Ca &0Ca &0Ca \&0Ca &0Ca &0CaB)&0a &0Ca 3!!!!ac''Dz!"&&546632.#"3267#53pKMfMo.!?F/9c, &UrpW1/# '$'Dz&IDz&IDz&IDz&IDzq&IDz\&Ia 33!3#!a***H?R3#5353!533##!!5!fbb**bb*!!&&Rya)&P|a&P|aT&P|a33a*?aF&Uea&Uv&Uv&Uv&Uvp&Uv&UvWq&UvVT&Uv&Uv*&Uv&Uv\&UvB&U:&UvF"&'532653F#.3*;'<@%2H&FF&eaW 33337##a*n=h?uHRaW&g5a33!a*zf'aF&ie<a&iva&ia&i/a&i8aT&i/a&&iVal&i/&ia33#3#3#3a%01$'#P?hgaT&sa 33#3#3a$'#i?iaF&uea&ura&ura&uraq&uraT&ura?'766553#3#3+6:'$'#A.&B<0ii*3J)a&x&uVal&ura&urD46632#"&&732654&#"DIc`LM_bJ-}~apWWopXXoD&{D&{D&{D&{DT&'{{D&{D&{D& {D&{Dp&{D&{D&{DT&{D&{D&{DE&D&'DTE&'D&'D&'D&'D&{D&{D\&{D&{D&{DB&D'46632#"&&732654&#"'7777DIc`LM_bJ-}~l.!. D .!. apWWopXXo2NO,NOD&{D&{D&{D&{D&{D (!!!!!!"&&546632&&#"3267<~nbJIcAj'"jFHm"BN'''XopW$?2%15C"aI 3!2##32654&##akvvkY\\Yf\[gdQJJQaI 3332##532654&##a*kvvkY\\Yf\[gQJJQDA$.'746632#"&&732654&#";;6.N'Ic`LM_bJ-}~>I% 4V pWWopXXoay3!2#732#'&&##32654&##akv6]<(?a/XM=Z^^Zd[;S+%07iOJJNay&Ray&Ray&Ray&RaTy&Ray&Raly&R4+*"&'732654&''&&546632&&#"9U~2%DQ5beGVca^>nIJz,1hC\mFNdh_:m-+$%OB8<VLQ`t$"#$QIHM'MIILgg-x{bVC`  ]N^dD""&&55!!732654&#"'6632kj;0 0n\3NC#/zUeLHXl'gJ( #00VppW @!!5!!6''f @&' @&' B@&' @&' T@&' l@&'\v"&5332653i*mvot*SzyyzM\v&i\v&i\v&i\v&i\vp&i\Tv&i\v&i\v&i\E&T\&'Tt\TE&'Tt\&'Tt\&'Tt\&'Tt\v&i\v&i\v\&i\v&i\Bv&\v&i\v&i\v&i !3#3:-$&,W?*&!3#3#3#3-'+,RR?`*&&(*&&(*&p&(*&&(d33#35#33 33o \> VJ !3#37 1/ F&z_&J&&J&&Jp&&Jq&&TJ&&J&&!3#6632&&#"7 1=# - n&y% %&J&&J\&&J&&*" 35!5!5!*:9'n'*"&&*"&&*"q&&*T"&&aF<&U&v'e6#"&&546632#73#53'2654&#"Dd67dCGe )* fFR``RRaa>tPQs>JA6xAJ'qjjqqjjq6&6&6 &6T&'6 &6$&6%&6&6&6 &6T&'6 &6$&6%&6&6&6&6T&6&6&6&6&6B%&6&60&6&HGG"&&546633#"3266554&#"'6632#6632!5!4&#"3267#"&'32O.6q42dn+G=0I*?A0R*&d4PR iI]kvtTPRbc[-Q&e4Zr i'C+;B%0-3?-Q5wKB$IEEI{j& Xfibj{ "!"&XSP[HG& X "&'3#3#6632'2654&#"4Hd ** dHDc67cDRaaRR``JAAJ>sQPt>'qjjqqjjqX ,"&'3#4632&&#"#6632'2654&#"5He *LF   46 eHDb66cDR``RRaaJARJL%95AJ>sQPt>'qjjqqjjq6"&&546632&&#"3267Ff78fE/W J%VaaV#K!Y?vQQr;%! !oijt" "$6&6&6B&6B&'6&6&6 "&&546632#3#53'2654&#"Cc66cCGf ** fFQbbQR``>tPQs>JAo AJ'qjjqqjjq6'3"&&546632#6&''7&&'7'77'2654&#"Ce78fDPdIK I* 2V#q a3B!4dJSbaSSa_:jGHj:UUb=O!H # !+.!( +qM]@'i[\hh\]g6W&&6Q("&&546632#5#53533##53'2654&#"Cd66dCGe *bb* eFPbbPRaa>tPQs>JA%ii%AJ'qjjqqjjq6T&&6!-"&&546632#546632&&#"#53'2654&#"Cc66cCHe !B/  55* eGRaaRR``>tPQs>JA1C"%95AJ'qjjqqjjq6l&&6&'GB6 "&546632!5!4&#"3267&n:iDA[1gTSXch]/R&fyPt@7gG& Zgxajo$!"&6&6&6&6B&'6&6 &6T&'6 &6$&6%&6&6&6&6T&6&6&6&6&6 &6 &6B&b6&3 "&55!!7326554&#"'6632al}URYbh].S& e7Jk;:h{j& Zgxajo$!#%3#5354632&&#"'3#ldn KE& "#/$ YMU(9+U$06!$0"&'7326553#"&&546632'732654&#"*=k+!:?&NQ gGEe77eEGg )fxSaaSSbb##" UOBJ=pLLo=JC x6khjoccnncco6!&8(6!&8(6!&8(6!&8(6!&8(6!&8(6!A3?"&'7327#5366553#"&&546632#73'3#72654&#"*=k+!:?&| gGEe77eEGg )W\cfSaaSSbb##" i$  BJ=pLLo=JC6k  $GHoccnnccoX33#6632#4&#"X* fC[W*@HPa@A^^B'NPQ??&"&'532653 ' " /**B(>B'NP&&WuX 333%37#%#X*:C=-!X&YX&YX 333%37#%#X*:C=!X33X* X&]mX&]G&]mX&]8EMT&]mX&o&]Vl&]m&]mP'34&'3#6632#6632#4&#"#4&#"X) X?BP _CPT*:AIU*:AIT6x>B?B;F\b:QJbS:QJbSPT&fP34&'3#6632#4&#"X) cCY[*BGQ_6x?A\b:QJbSP&hUA&h\P&hP&hP&hPT&hP&#34&'3#6632#"&'532654&#"X) dCYZJE! 62AGQ`6x?A\bNV(DBgQJbSP&&hV:Pl&hP&h6"&&546632'2654&#"Dd66dDDd77dDRbbRRaa>tPPt>>tPPt>'qjjqqjjq6&s6&s6&s6 &s6T&s'6 &s6$&s6%&s6&s6&s6&s6&s6T&s6&s6&s6x&sE6&s'E6Tx&s'E6&s'E6&s'E6&s'E 6&s6&s6&s6 &s6 &s6B&sL6"&&546632'2654&#"'Dd66dDDd77dDRbbRRaa;:>tPPt>>tPPt>'qjjqqjjq>6&6&s6 &s6&s6&s6u/;"&&546632#6632!5!4&#"3267#"&'3'2654&#"Dd77dDPquP^jl~TPU`d\,Q&;E#[toPRbbRRbb>tPPt>\UU\{j& Xfx`ip "! YUTZ'qjjqqjjqP(#4&'3#6632#"&'372654&#"X) cHDc76dDHc RaaRR```6AJ>sQPt>JAqjjqqjjqX( 3#6632#"&'372654&#"X* dHDc66cDHd R``RRaaAJ>sQPt>JAqjjqqjjq6(#3#"&&546632#73'2654&#" fFDd67dCGe )R``RRaa[AJ>tPQs>JA6qjjqqjjqPI34&'3>32&&#"V) 5E"    .E&:m(4'/E!P\&KU&EI&k=I&KTI&k@`&lI&k:)"&'732654&''&&546632&&#"8c$T/DH.5W@>+Q75YJ+AE+/WDB.T#!4-#+ B1)@%$ !8.#, =2*>":&:4&:&:4&:B&:&:&:&:T&:T&'X2/346325#"&&'732654&&'5>54&#"Xik8O*Nebt2-R8$@7&L-@H,qhFN FBZQow&F1Fl( CQ01H'" >:(C<&=G)5?_^."&5#53573#3267=Add*). %MO<$$B<(.&$.& BB&.&.5&T.&l_&U"&5332653#53WZ*BEM\*) a^a=QKcR z>DU&U&U&U&U&U&UT&U&U&UOx&UO&'UTOx&'UO&'UO&'UO&' U&U&U&U&UB&U&U&U!&33#30/ */33#3#3#3ڰ/5.2 */&*/&*/&*/&3'3#735#'3546'>773#3< /=*00*1;' !4'<+;(&&&&&&N'>773#6632&&#"< /=*0<0  #**1;' !4'<7/%$5M+;(&&&3 35!5!'!3gv $@$3&3&3&3T&ad+"&'732654&##532654&#"#46325?_$)L6VZ\_sR^Y^p^*xnvK>Q`t$"#$QIHM'MIILgg-x{bVC`  ]N^dX&&G&m'WT3#5354632&&#"'!##53ldn KE& "53)*A$ YMU(B@U 0w??&7]7aF&UeM&o&FV %"&54633#"326554&#"'6632#5#-q"12&,(!819&&l5-"&&546632'2654&#"(=$$=((=$$=(/66/.77%D-.C%%C.-D%=::==::="ad 3!!32#'32654&##aiqyyq`^^`']__`'KLMIaYa3!!a{'fa&aW3!53!a){fj536655!3#5!7!!G;7h)kM3Gfsa 0a &0Ja p&0J%376673'3333'#'&&####"w X; 1*1 ;Vy-i"W>k*k@X!g?FZGVF?F;SVF?F;ab&C'>55!#!%*C0*4L &A!#"&55332673$l6*uu6d+*>wU?aj 5!3!33)*gffa 33!3!3a*v*v*ff?aj25!3!3!33 X*v*v*gfffaj 5!3!3!g**f?ad 3332#'32654&##a*qyyq`^^`]__`'KLMI  3#5!32#'32654&##qyyq`__`']__`'KLMIa 3332#'32654&##3a*qyyq`^^`+*]__`'KLMI?T!'>55!32#!!%32654&##%*C0qyyq4L#`__` &32'2654&#"y^L**M]aKL`TkiQWpoX).@376633"&5463!##"3#".9( p}yr *=E~-( e]_e?8"4_< D$"&'7326554&#"#!5!!6632@!= 3KMnw8[&*6 d7-V % ^`e}y''kKf43#53533#32#'32654&##*qyyq____$'vv']__`'KLMI%37>33!'32#'&&####"3!5x8T?HH?T9x-i"V>a*`>V#i)>$ T $>)G:S:G~8DN !3#>3":-$+2A,.@1W2D*$?81 3#53!!3#gg{R&I'&aDS""&'5326554&#"#!!663282JNnw8\&)~ e7-V* ``d~x'iKg5j+5#53%76673'3333'#'&&####"+T*w X; 1*1 ;Vy-i"W>k*k@X!g'?FZGVF?F;S'VF?F;al3335333'#'&&##7#5#a*U$'2 ;W y/h"W>"$UGF?F;3#53533#33'#'&&##)2 ;V y.h"W>(&ss&VF?F; 5!333'#'&&##  ))2 ;V y.h"W>&&eVF?F;aj5#53%3!3#!hQ***'H?Ra 33!!!#!a)>)H'fSaj 5#53%!#!hc5*'?fD2;"&&546632&&#"326654&#"3267#".546632fNLc& ! YFMBCMGX'> G.KzW/.T9:S-/VwUrrV*KZX``XYL*0Z}MHf77fHJ}[2Djp53'"&&546632&&#"3267n,fJJfMu-1eDDe1-vWppW1/#/++/#/1 j@ 5#!5!!3xh6g''JJ& &j5#53%3#35#3n+T3 33'o \> V j5!#5!#!33c*g''f>j5#53'#"&55332673h$l6*uu6d+*'>wU?>A!#7#5&&55353'2673%k6 ' ~*pj ' 5f+)> r U?ad336632#54&#"a*$k6*vu5c,xaj5#53%36632#54&#"h*$k6*vu5c,'x(&0"&'#"&55333>32!732667"'!4&& SS)<@I^k;6G=#!EUP 0nMN;8>7mTXl ( # +gJB(&8<aU&aDS!"&'5326554&###333'82KMw))1-V* _`3tV9Kf4j7#53%'>55!#!4]Ap*C0*4L'&jA#53#3#"&55332673*j@5$l6*uu6d+*'>wU?ajl7#53%3#3#3#34]A6%01$'#'P?hg"&`"p&ea &0EDDp&pp&0Op&I0O"&'732654&##5!5!732G\)5|Oqjdmc5?s4,$.-OLMH$:'Y`^ia\&tap&tDp&D5!%46632#"&&732654&#"VTIc`LM_bJ-}~S&&pWWopXXoDp&N|<hp&6 \&E p&E &E>Ap& :aj 5#53'!!h{''fap&L1'7665##53!!3#3`$>.jgg{gGJ%CDR&I'&'WVIU'6654&''3#3#35GA($33 3&%T$88P1o \> 2Q$FMd& ?Gg+"&&5467&&546632&&#"33#"3267OXv:[MER:pPL/2xGcga\``kpT{4*/Y?K[ YC;V./.$.*OGFL'HMLO,/$,4F"&'53265!'>55! #.34L3*C0;'9@usK&F*% <EficF`\f P Ye"wF"&'532653!3#!#.4)));':@H?S2H&j5#53%'>55!#!h.*C0*4L'&32'2654&#"gxes;M& 8O,Cc66dESaaSRbaZ 3&6Mh:.? >tPPt>'pkkpneqrX!33252#'32654&##532654&##XPVE67'3353373'#'.###5#"f'*2a*`2*(e.b$,"O*P",#a,. .,"##"$)"&'732654&##532654&#"'66325>k $X7SIB>kc7ADB3W()c:XZB5;Lb%!#"!7213&4..5 !#HB1C E6AOX 33#3#3X'\&', ,X&tX&t!X~: 7#53%3#3#3"&&'732671Cw>\'\&'!A5"B01@ Z%, ,#5+20*7 F2X33373'#'.##X*p1)(f/b#-"] .,"#X&x'>55!##0&1 G*@ !6S|Zi F~[X2333#3#3X$#&p w9X 33!53#5!X*@** 9sX3!#!X* 0S(93#5!#¿$$0&9(%1=3#"&&546632#3#6632#"&'3'2654&#"!2654&#"p I95O++N69I * J76O++N77J ?HH??HHt?II??GGT?E?tOOt?E?h?E?tOOt?E?rjhtthjrrjhtthjr!C!5#"&553326753J,g`*MP-E"*^aQI X~+ 5!3!33R*3)M00X 333333X**+00 X~ 5!333333t**+L000X~ 5#3!3# *=*0 X 3332#'32654&##X*^_*T?FIIFPJ1F$$:==97 3#5332#'32654&##Ϩ^_*T?EJJE$PJ1F$$:==9Xh 3332#'32654&##3X*^_*T?FIIF)PJ1F$$:==9 E!'>55!32###%32654&##0&1 F]`*T?@xFIJE !6S|ZiPJ1F$F~[:==9XQ33!5332##5!%32654&##X*A)^_*T?jFIIF޿PJ1F$$:==9=9!"&&546632&&#"'!!73267Ff78fF4_R)>Q(  ^X)Ra?vQQr;% !!6]; ' hr! !%.!"&'73267!5!.#"'66323aP+V`  'P?(S`1Fe78f& !!rg ' ;]6"" %PF&Gp&VAX "&'##336632'2654&#"dxr))sv`Dd77dDSaaSRbbtlz>tPPt>'qjjqqjjq2376633"&54633#5#"735#"2R9P^WW*\4DFECC!)LFDM 0&z:45:G$'>54&#"##53533##66322;@EDQ_*cc* cAZ\!P% 1O9 SGbRR%ii%;@[bE`;83#53533#32#'32654&##*^__^FIIF&&PJJQ$:==9!'37>33'!'32#'.###5#"37!5f+5(ST(5,e.b$,"O*O!-#bL,11,"##"$9833#>30(9(11~*0#*5 35#535!!3#mhhD圜$$$XG'>554&#"#!!663257'3353373'#'.###5#"%Lf'*2a*`2*(e.b$,"O*P",#a%,. .,"##"$~-53'"&'732654&##532654&#"'66325(>k $X7SIB>kc7ADB3W()c:XZB5;Lbz%!#"!7213&4..5 !#HB1C E6AOX~5#53%3373'#'.##%LD*p1)(f/b#-"]% .,"#X33353373'#'.##7#5#X*<$2*)f/b$,"$<ww .,!$ 3#53533#373'#'.##[cc*p1)(f/b$,"]R%ii% .,!$G3#53373'#'.##p1)(f/b$,"]$ .,!$X~95#53%3!53#5!Pv*@**% X 33!5!##5!X*9*$0X~6 5#53%!#!Pv"*Â% 09m6"&546632&&#"32654&#"3267#".54632-r7eE$=9R^jZ]h2*+21Z;13?6Y@"J==I#@UyNr> $ tdltiV:AA:32!73267"'!4&n<<($,554&###3373'2& 55!##1Cw>@&1 G*@%y!6S|Zi F~[X?'7665!#3!53.+58**A)"A/&B<3I*X~:7#53%3!53#5!1Cw>\*@**% C~#53#35#"&553326753w&b<'J,g`*MP-E"*$^aQI X~7#53%33#3#31Cw>$#&%p w99&9& KJ 9&666&6&r$&sD"&'732654&##5!5!'32@l"&Z:[[ZPo?hq5d""YSJP'd\B^2X&t!X&t!9&s9"&&546632'2654&#"'5!Dd66dDDd77dDRbbRRaax>tPPt>>tPPt>'qjjqqjjq$$9&.&&&&C&X~ 5#53'!!PvwE傂%$0Xh&aL'7665#5#535!!3#3I"/)ThhD曛PB:%BD$$$$WU!I'6654&''3#'3#735Q ;<&.j354q!($C#-+?:(;2&8 !& 5)"&5467&&54632&&#"33#"3267dcN:4BeS5b)(T.AL@7ck=BIR7Y$kOA6E C1BH#! 6/.2&2118""!%?'7665#'>55!"+57@7&1 G"A/&B<F~[!6S|Zi3I*9(-28S(/4&'3#66327'7#"&'3"767'7'654&[) cHDc7+(20 3JHc R``R9*39=a`6AJ>sQGl! >=$JAqjjs?H7yjq?'76653!53#5!<+57*A))"A/&B< 3I*~-5#53%'>55!##Pv&1 G*@%y!6S|Zi F~[[GX 3!!3#XE$%$~9~$B&s9B&# 3535!#-(-<\4L$55!!55!4-=ô'n!n'&$353&&54663253!56654&#"&vtPeLzV.tvsklr&GrcM,RvKrG&$LjjL$U(332653#53#"&'3U*BEM\*) aA4NQKcR z>D%473>7#5!#'.5#"!i A=*,'<)<^$$?C(,>(%b;< "&54632'2654&#",t||tu{|tbaababb) 35335733'tv/mf'G356654&#"'66325!^57VR>e,&yDeoD< 7j:GI,-$*4`XC|>'=("&'732654&##532654&#"'66325/F~.4j?Y^b_caP`WOyV'yCbpLAMSy-+$,'PKJM'VIAFY$,2]SC_ _H[i:: !5!533#'35j#ss*! '2 S&""&&'732654&#"#!!#6632A.VL3i=Vc^T;[ &f@Db58f($+(aOQh04'/48cCAd8@ ."&546632&&#"#>32'26654&&#"A|B}W6p!&]1pz;`6S..S66S..S2($+*n>\28d@Ad9{X@.Q55Q..Q55Q.:"&&546632'26654&&#",Hm==mHHn==nH54&#"'66325!i{EJF7c,,n=[bjBlc28;! #"#QIS^%?D ,"&&'732654&##532654&#"'66325--VL2p7V^c_caQ_VO4a+,l32'26654&&#"C{AzW8p"%^2py;`-88-,::kakwaY&,6J;:M$5..33/.4/M3#5!R%x#Y%1"&5467&&546325'2654&#"72654&#"FU9,+0PAAQ0+,8TG6<<66<<61771088<7,: 8%5;;5%8 :,7<$+''++''+,$$++$$,%S'"&'7326553#"&54632'2654&#"'D8?EI2=LP>MS)M*-99--88bX&+7J;;LjbGf54./35..3%VdA)P $E +e 1U )W /M#Y%S%VdA)P $E +e 1U )W /M#Y%Sd<#3r**dl''%| dY''%| $Y' '%| GF353GEFFFF '665#53` *Eb)F79G5353GEEEFFRFFF '665#5353` 3E3Eb)F79FFG3F')'))G7353\ 5 0EFFGL353O  =EbFFL!754676654&#"5663253*7-$I?'D F%7Q-)#1*2E5b?3K(4:.&C. 9>(9T.FF&*e!"&&54667667733267#56R-)#2*)8-$I?'EFE&D- 9>(9T.5b?3J)4:.FFH4753HFFFRY%"&&546632 1T2/S51R31SY/R2.R3/P41R0%y'7'7'37'f ( f `y3%89%3A37#537#53733733#3##7#737#]'mt3%*$$,%mu3','&-3((((#3))43)4uG53uEGDDiL.546673%11%&2662KNNKmoomL#6654&'3E&2662&%11moomKNN2L>'"&54&''5766554633#"#5233)+$+*%+)UQ((Q++*&$%+++%.-%L'532654663"&&54&##532#Q((QU)+$+*%+)%-.%++*&$%+++nL3#3nu%%L53#53%+%LX$75!L &&LX$?"5!!!"5!!!J"5!J!!"5!!!LX$?5!!!!GF '665#53a3Eb&F7$7GF&GGG&KKG&LLG 5467'3G 26 9'FG '665#53a 3E)F79Yc&OO+Yq&PPY7'73}})qqY+Y7#7'3T)qq)}YK &RRK3X 4  }!3X}}%||`a}33||%}}`aH34'5.5466753'2&&#"32677MU{CC{U( IG#_:r{{r:_#GI sVooV)$#/**/#$)c\%5.5466753'2&&#"3267#7( =]53]> ( ,[K)RcaS)L[, s{AoFDlB#!r_ap #{H3467&&5466773'73'&&#"3267#"'7#7&&'7[@(.CzQ #+$? *+0 "#_:r{{r:_#'lA $+%> 5s,^qT x{  #/**/#/0 | '/#3'7&&5467'766327'#"&'26654&&"J#JJ#JO++MG$II$HL++N 6W33W65W44W$L P+,PL$LJ$I!P--P J$J 7]99]87]99]78435"&'732654&''&&5466753'&&#"7" G11eK_aGP_ZW8eB(3l(*a>UgBH_b^9cA s| ).$+'P@5<XI9Y3 || ,-$.(VG9BQF8R-}K. ,"&&546632#5#53533##535!'2654&#">[21\>CX *NN* XKVVJKVT=qLMp=G?$uu$~?Gw$$mfdoodfmI5"&&'#53&67#53>32&&#"'3#7'3#73267FlD {xx~ DlF>e%!X6Xp  pX6X!%eA|X $ M$ Y{A-2#/*vt$M $tv*/#1.1D%53267#5376633#"'3#7#1'2?g PJ&&3> iOJ%3B$ ZIN'0DV $HN335#53!!!!3#LL`$''$=(4+5.5466753'2&&#"3267#537BU{CC{U( IG#_:r{{r)^' d8sVooV)$#/*''O;"&5467#537!5!>54&#"'663273#77!!73267[e"$L~C'+GB?b//wFQ\'-XRQL>m.#MD%@ $$ ,*+.',$-+D<'E( $$=I.2,.#)773#533335!!5##qq*V6;[7O$NN$O12,356655#535#53546632&&#"'3#3#5!15?ttt{-[C8e%%R+>l*lrl*l753'#54&&'7#I4T; ( ;T4)%L=(@$$ F/ $@^2%/13"356655#53546632&&#"3#5!15?tt.[C8e%X*:-*0=$=+?-,,< $>*:-*0=$=DE/.E0-E/.E0-4$^%"&'&&#"'6632327?--,< $>*:.*0=$=E/.E0-4$%5!5!9'/)t73#3/$+ݎ7T&1'7&&54>327#"&''&&#"26654&'L,L/9-Pl@*R#L+L*3.Qk=(L!)B%EoA*BoC& >f&nB8fP.d d%k?:fN,@?lE5]_>mF2X!*/#/7"&546326632#"&''267&&#"!2654&#":CC:#IJ#:CC:#JJ#<<(,,3'--'==K22K),,)K22K)++)$!98 3&%44%&3 89!H"&'532654632&&#"' "$&>4& "$&>( (1><()1s><+-%353&&54663253#56654&&#"+XU8nPQo8VXSG,ZEDY,FS&AxbNMcxA&$KjZ|@A|YjK$$4 3535!$(\0L(!#!0*\uN4L$LW #53#3 t|-ִ '4VU(332653#53#"&'3U*BCM^*) aA4ROH`Q" y>C%4C*"&&546632#.##56632'2654&&#".Fj;;jFGk D}[4PzR*9jIWh2W8XhhBAnX 32#"&7#"&546632#73326654&&#"326726654&#"bq=@vavd1X;;: ^3MU;f@:J *1##.D'[jwc_vY+25R0:>4S0?=reau?\nVGG:4:^SKsB70_  $$>pKbSdw|`94 8<;hAA>8b?CGA,:H&&'3#"&&54677&&5466327#6673'%267'3"6654&.K (zJD`2PM 2,'G0 )& N,xEj%!1>Ww4@'"LD8A8>*K3Ea58N*+@%G>"d8A"GX/=b:A% 5[99bZ0CW/=b:A% 5]3IS/</4IS/<#"F@-A.3:$&H &7M*" " EA-@.49%%I &6N*)>"'-&=)>"'-3/-A".54>32'"&54632&&#"32672>54.#"Lb77bMMa77aD^jj^(LAJTTJAN/DvX11XvDEvX11Xv7bLMa77aMLb7ybbr \SRb!m1YvEEvX11XvEEvY1/'=F".54>32'2>54.#"'32#72#'&&##7532654&##Lb77bMMa77aMDvX11XvDEvX11XvBAFGA) 9+8 +X t2103t7bLMa77aMLb7$1YvEEvX11XvEEvY1r>:9=  (+*)+#5!#33#3#3#3V""'$$H[l-)B"&&546632'2654&#"(@%%@((?%%?(,66,+77&@((@&%@)(A%(9--99--9K3X 4  K &RRgD3g*{gD33g***tUU 7#53533#tt"tt xx t*"&55'74663232676676654#"A/4 HW,%06>);Y ,(+84Xm $6/5e.@/&75#535#53533#3#ssss"ssssx xx x2L 2".54>32!"32673!2554'.#"_f56g]s['}(|NU{3G'Yu "XX#:5 8b~FFg=BoD01:1/>o ))*5 a +33#3#35!'"&&546632'2654&#"a$'#'>$$>'(=$$=(/66/.77i?i$$%D-.C%%C.-D%=::==::=s? '665#53 3E?)F79: 5467'3 3:7 8(FK &RRny5!ny&&n% '3z6h%K, "&5463"3*77* ,6((7$"#,[ 526544*77,##"$7((6%73h6z%53*T53*T "&5463"3*77* 6((7$"#[ 526544*77##"$7((6lo53#532==l<<<<&  7353353b6t=d=d<<<<tI 5!53353=d=&&y<<<<k 53 @k??tI5!53=&&y<<t%'3z6h%%73h6z%%473'53h6zO=%<<%73#73):0O:0O%1531{%73#'m0m#bb%ȡ{%'373m#bb#m%ȡ{%4 '373'53m#bb#m6=%yy<<p#"&&'73267)?$!:129!%>#-T:JQQJ:T-#p"&&546632'2654&#"33 22 #++#",,#2112 -!!--!!-#0"&&54663273'2654&#"33"L=q2 #++#",,#21 G_$2 -!!--!!-XS'6632327#"&'&&#" 2(% 4 2'% S:?W:?-n!!'66323267#"&'&&#"'53353q!,"! !,"! =d=!00 !00 o<<<<n! '66323267#"&'&&#"773q!,"! !,"! Zb6t!00 !00 Hn!5!'66323267#"&'&&#"!,"! !,"! &&00 !00 ty5!y&&tI 5!'53353=d=I&&c<<<<t? 5!''3t6b?&&Kt? 5!'73b6t?&&K%[54>54&#"'6632 (*/% "m%D'3#'3)O0:O0:%p#'>32&&#"o!$?)*>%!921:#;S--S;JQQ:& 5467'3#2:6"=,Ah '5>55304(!A 6& /A$T 53 @??Uo53#532==<<<<# '665#53 2F,A6"=Bo"&'732654#"'73'6632) #' &   .; "   `K"#,B6"&54673267)5/+!#  &2*&E&  p) "&'73267>M!:129!MNE7<<7ENtl5!&&Y .5!N $$|'7h!!R':$likn% %%u%u%j##jRSnyBiB0F'66323267#"&'&&#" 8,+# 7,+!#:?-*:?-E'3266553##6+13("@.*6' /C$4op53#532==4<<<< 7353353b6t=d=gd<<<<t& 5!53353=d=&&y<<<<2q53>2??t&5!53=&&y<<e'38v73v85373==v8<<73373DV4oRU4n1531o73#'y0y%llo'373y%ll%y{  '373'53m#bb#m6=yy<<c "&'73267@V!B55C!VYN@GG@NYp"&&546632'2654&#"33 22 #++#",,2112 -!!--!!-"&&54663273'2654&#"33"L=q2 #++#",,21 G_$2 -!!--!!-<'66323267#"&'&&#" 8,.! # 7,0$"#:?-*:?-n!"&'&&#"'66323267'53353@! !," !,=d= !00 !00<<<<n73"&'&&#"'66323267b6t.! !," !,gg !00 !00n5!"&'&&#"'66323267L! !," !,&& !00 !00e6\5!66&&t& 5!'53353=d=&&&c<<<<t'35!t6bgK&&t5!'73b6t&&K[54>54&#"'632 !-*/  !! ND'3#'3)o4Vn4Uc '6632&&#"|!V@@V!C55BNYYNAFF& 5467'3#26"=,AE '5>55313(!A 6& /A$YTy5!NT%%S'%D"! ''7777.!. D .!. +NO,NOFJn5!tJ$$k 53 @k??XS'6632327#"&'&&#" 2($ 4 2'&4S:?W:?0530z'53{$$_#"&&'73267!A5"B01@ Z#5+20*7 F2K"&&'73267%I:!L78K "f7-42+: I3p# "&'73267'73>M!:129!MVb6t#NE7<<7ENgp# "&'73267''3>M!:129!MJt6b#NE7<<7ENgp#$ %"&'73267'4>54&#"'6632>M!:129!MO  '*-#NE7<<7DOg n#% '"&'73267''66323267#"&'&&#"7L ! :**: ! L!,"  !+#! #92$''$1:00 !00{%  73#'773m0m"ccX6j%{{e{%  73#'7'3m0m"ccj6X%{{e{%$73#'74>54&#"'6632m0m"cc  '*-%{{e n%% 73#'''66323267#"&'&&#"m0m"cc!,"  !+#! %``00 !00p "&'73267'73>M!:129!MVb6tNE7<<7ENgp "&'73267''3>M!:129!MJt6bNE7<<7ENgp %"&'73267'4>54&#"'6632>M!:129!MO  '*-NE7<<7DOg n '"&'73267''66323267#"&'&&#"7L ! :**: ! L!,"  !+#! 92$''$1:00 !00{ 73#'773m0m"ccX6j{{e{ 73#'7'3m0m"ccj6X{{e{73#'74>54&#"'6632m0m"cc  '*-{{e n 73#'''66323267#"&'&&#"m0m"cc!,"  !+#! ``00 !00 .XDFLTcyrllatnkern$markmkmk4:H  V DDDDDDDDDDDDDDD>>>>>>>>>>>>>>>aF4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 44 3333333333333333333333333333333333333333333 $ 6 F,  V222222 P,(N(D OO -b-X  (z(p  ,6L1111111111111111111111111111111111111111111111111111111111111111111111111111 !* <0-4. o--- --- --- --- -,- --- --- --- --- --- --- -,- --- --- --- --- --- --- -,- --- --- --- --- --- --- --- --- ,,,,,,,,,,,,,,,,,,,,,,,|,|,,,|,r,,|,,,|,,h,|,,h,|,|,^,T,J,@,T,J,@,T,J,@,T,J,^,T,J,@,T,J,@,T,J,^,T,J,@,6,J,^,T,J,^,T,J,^,T,J,@,T,J,@,T,J,@,T,J,^,6,J,@,T,J,@,T,J,@,T,J,@,T,J,^,T,J,^,T,J,,,T,J,@,T,J,, +++++++++++++++++++++++++++++++~+++~+++~+++~+++~++++++~++++t++~+++~+++~+++~++++++~+++d+Z+P+Z+@+6+@+,+++++++~+++++++++*+++++++*+++++*+++++***************************t*j****t*j****t*j****t*****t*j**`**t*****t*****t*****t*j****t*j****t*****t*****t***`**t*j****t*j****t*V**L**t*B**L**t*V**8**t*B**L**t*B**L**t*B**L**t*j****t*j****t*j****t*****t*****t*.****t*****t*j****t*j****t*****t*****t*****t*** *)))*)**t))))))))))))))))))))))))))))))))|))))|))|)r)h)^)T)J)^)T)J)@)T)J)^)T)J)^)6)J)^)6)J)^)6)J),)))()))()))()))()))()))),)()()))()))()()()()()()()()()()()()()))()))()))),)))),)))()))()))),)))(((((((((((((((v(f(\(f(\(f(\(f(\(f(v(R(\(f(\(f(\(f(\(f(H(>(4(>(4(>(4(>(H(*+(((''((''(('((('''('((('((('(((''((''(('((('''('((('((('(((''((''((''(('('(''((''((''((''(('(((''(('(((''((''''''''''|''|''''|''|''|''l'\'R'H'>'l'\'R'H'>'l'\'4'H'>'l'\'4'H'>'\'H'>'*' '' ' '' ' '' ' '' ' '' ' ''*' '' '''*' ''*' ''*' '' ' '' ' '' ' ''*''' ' '' ' '&' '' ' ''*' ''*' '&' '' ' '&&&&&&&&&&&&&&&&&x&&&n&&&&&n&&&&&&&x&&&d&Z&J&d&@&J&6&@&J&6&@&J&6&@&J&6&@&J&6&@&J&d&@&J&6&@&J&d&,&J&6&@&J&6&@&J&"&@&J&6&@&J&6&@&J&6&@&J&&&%%%%%%%%%%%%%&@%%%&@%%%&@%%%%z%%%&@%%%%z%%%%%%z%%%&@%%p%f%p%\%R%H%>%H%4%*%>%H%R% %>%H%R% %R% %>%H%%$$$$%$$$$%$$$$%$$$%%$$$$%$$$%%$$$%%$$$%%$$$$%$$$$%$$$%%$$$%%$$$%%$$$$%$$$$%$$$$%$$$$%$$$$%$$$$%$$$$%$$$$%$$$$%$$$$%$$$$%$$$%%$$$%%$$$$%$$$$$~$t$~$%$$$%%$$$%%$$$%%$$$$j$`$V$L$B$8$.$$$$$$$$$#$$$##$$############################################|############r#h#^#T#J#h#^#T#J#h#^#T#J#h#^#T#J#h#^#T#J#h#^#T#J#h#^#T#r#h#@#T#J#h#^#T#J#h#^#T#6#h#,#T#"#h#,#T#6#h##T#"#h#,#T#"#h#,#T#"#h#,#T#J#h#^#T##h#^#T#J#h#^#T#r#h#^#T#r#h#^#T#J#h#^#T#J#h#^#T#r#h#^#T#""""""""""""""""""""""""""""""""""""|""|""|"""r&J"h-- ,,"^"T"J"T,,,T,J"@,T,J"@,T,J"0"&"" " "" !!!!*++!***!* *,!)^)J!!(!!!!))!~!t!j!Z++++~+++d+Z!P****t"0"&"!!!@!0++,!(v(f! (v(f! (!!!!!+++"0++!!*"h-- !-- ,,,,,T,J )h )h """ ***!!P****t ****t !Z !"^"T (!)*)**t((+~++,, "&",!"&",! t j ` V ` L < , " < , " < ,  rhXND4D4*  v  XNf*  \LB8\LB8((  t t L < ,vv j `* vf\ XN RB<<<<<<66a Eb Q% a @T    peԕ p  !ND:0xx Vp>p4 v ^p hVa  z pV ~  J&& M O e aG p F Vs ,! ! < }  e v B  J Td   a:a EaJ6a8|aa`Ia2aRpapea< &E a  j|T9 26~ 7': ?kTEJ>aj`Ca9a zCtat 4II JaaaăeVvlbV {j䟂   䒆V|rV~jVp&lV$  m (V|rh^X<kVDk0"P""#>#4V~vjbVVLDL Z(D kVx*x f\RV* mVma$me m(Va$ t ruuuuumN sVm:m0 ysm "a:V~Dj "(L(B w066VP"b2&Vp'~WfB&R& $ *A~F6 Dv \L~VV8} x W&V&a&&&V&a*& [&>}~>}t(a}(}(}SSvtV}ta}t}xt}niV}.ia}$ qi} T i|'V'a'f''~|~|V?V|9a?|9 SRVRa|>R NR|$||::::<[[ ?|V{ar{^{V{{a{|a U b{{ K{{rV{dra0r{PrV/V(*/ 5V|5r4 oa ~vV2va(zvv c|aL|VB|"8X|.|$V:a& T, 3, ;JCVCa CCtVytayf Ytyfty\a FU.TyNaHyd4fVxfaxfxfxB ,.P+RuNw|r~x57>*@@2Bn3q`    $&)*..02448;?IKV YY\]bhkl"oy$}}/024678<=@ABCDJKS_`bcghjmU||||||||||||||||||||||||||||vf`VVVVVVVV||||||||a 'f ueu~uz u & / E s@DzuaLӂӂuupuu uuuuؐpu uuuuupu씖u puuupvu~#|pu vuuxuuuuuuruuuuΒuuuppu݂uuuBp p΂uulvuB B pufupؓؐpu ēuӂuuuuӂuuuuuuuuuuuu uu` u uZuӂuuuӂuv Ău puHuTuNu BvuHuBp2zuuӂuuuӓؓpݏBؓuuuuuؒupēΓuuؒݏBuuu puupuu(uĒuu쒺uuuؓ pufuuu ppuu|uuBuؓpuuؐp쒺u vē( uZēu<u-|ɂuuuuuuu uZuu6uuuuu0uZjB pؐpuupvuu#|v pu(|#v(uvBu* Hu~BPu$u~#uZ|u~u2u upupuu uuuuuupu|uuuru݂uu~puu쒺tujj~`uuuu uZuӂuuuHuu v pɒuu v( puݐpɂ Bp p pu B2u vuuuHu~ u u~uuu~ v uZppu u uu uuɂuuu2pΓBu(pPBp u B<ɂuΒuu ɂӓ pΓɓ u uĒؒ ul p(΂uup΂u Ă|ؓuɂɒΓ Ⓔ pΓupɂ Γ p ΓēuFΓ p u uuu~ uZpup ĐppB ΓHuPuFuuu Pp@uPuu씖 uuuuuuu#|pēuēuēpu v씂u HuNΓ┖p؏BؒΓďBؐpuuؐpulu ؓuuu~ v ΓΓ up p uؐpΓ؏BΓēuuuu݂up uؔuuupp( (p uuuB((pݏBuďB p pؐpuPu ppu~ppupuu~uu|݂pēu2uuuĂ uuuupuvētēuu p pΓؓuu ؓuuĂ p(uputuu pvpunuuu B(uruuuu vɂΒBpuuu~pHɂΏBu pu B2uuӂuvɂuuu p putɒu vuup2uTutݐp쒺uu씖t<삂t2Bpjmnn?oq sstyzz{|}} ~  & A 1E    & %  1&   F%%D)*+,0--..B//C00G11H2344<66I77=::);;<<)>>)?EFHIL(MM2NN3OO2PP3QR';J@' 9 &((%//0GHHHIO PUWdef'gh<iijj'koqrsuvv'w|~MNI! ( )O%'  #@T56677X8?@EGGY\2__@foqrs[Y- ` 'D5F . L:=/  6    &&GK11&  !!;""##1%%')** ++,, ..//=01>34 66177 89;<== ?? AA BC5DE.FGHHIJMPQS/UUWWXY6ZZ\\]];^^&__:aa ccJddeeffgghh0ii jj$kmnnoq"ss$tvwwz|}} ~~ +E8,,U+ 0 , $ +E0"0" $ 8+\, $+$+Z$ )**+,?--*..V//W00]11^2344Q66_77R997;;7<<==7?EFH*IL4MMANNBOOAPPBQR3PCS3CD_D:,,,, ,| N & : N, P",,,,,,,,,(,,,_Ql%'7FHIJKLMNOPQRSTUVWX]^`abcdep"+UW%)*-019;=FGHTtVd&W&dPtP   VdW<N V8W8  +% v>71 f1 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `11(& 1/'  @ A B C D E F H I J K L M N O P Q R S T U X Y Z [ ] ^ _ ` a b c d e    :<b<<b><b0Z4T:H<H>H0:44: < > C048l 7VNQPPPPPPPPVV\ON@Q@:P <P >P 0ZZ@ZAZBZCZDZEZFZHZIZJZKZLZMZNZOZPZQZRZSZTZUZXZYZZZ[Z]Z^Z_Z`ZaZbZcZdZeZZZZ02 42: < > I J K L 0  @ A B C D E F H I J K L M N O P Q R S T U X Y Z [ ] ^ _ ` a b c d e    0( 4<:P ,<P ,>P ,I2J2K2L20@ABCDEFHIJKLMN.OPQ.RSTUXYZ[]^_`abcde02(4":< << >< I2J2K2L2_0  @ A B C D E F H I J K L M N O P Q R S T U X Y Z [ ] ^ _ ` a b c d e    0F(4<:N<N>NI2"J2"K2"L2"* t t@ tA tB tC tD tE tF tH tI tJ tK tL tM tN tO tP tQ tR tS tT tU tX tY tZ t[ t] t^ t_ t` ta tb tc td te t t t t: < > ' v v@ vA vB vC vD vE vF vH vI vJ vK vL vM vN vO vP vQ vR vS vT vU vX vY vZ v[ v] v^ v_ v` va vb vc vd ve v v v v'66@6A6B6C6D6E6F6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6X6Y6Z6[6]6^6_6`6a6b6c6d6e666602"2"@2"A2"B2"C2"D2"E2"F2"H2"I2"J2"K2"L2"M2"N2"O2"P2"Q2"R2"S2"T2"U2"X2"Y2"Z2"[2"]2"^2"_2"`2"a2"b2"c2"d2"e2"2"2"2"042x:<>I2J2K2L2 0((@(A(B(C(D(E(F(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(X(Y(Z([(](^(_(`(a(b(c(d(e((((04 :("<(">("I(PJ(PK(PL(P<60HH@HAHBHCHDHEHFHHHIHJHKHLHMHNHOHPHQHRHSHTHUHXHYHZH[H]H^H_H`HaHbHcHdHeHHHH04.:(<(>(I "J "K "L "0,%0TT@TATBTCTDTETFTHTITJTKTLTMTNTOTPTQTRTSTTTUTXTYTZT[T]T^T_T`TaTbTcTdTeTTTT0((42:"<">"INJNKNLN@,&&@&A&B&C&D&E&F&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&X&Y&Z&[&]&^&_&`&a&b&c&d&e&&&&04 :<<<>< +@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde0 :F<F>F XA0nNQQ v@h@h@h@h@h@h@h1b1b1b1b1b1b\H7Q fVWItttttttnnnnnnnnnnn(-("^8\6Z~2Vz lX@dLr  2 V z 0 V z . R v  * N r f>,P|2Vz .Rv .2Vz 0,Ptbp&Jn"Fj$Jp$H$Hl Z!!&!J!n!!!!"##$#H#l####$ $F%%&&(&L&p&&&'P't'''((((L(p((()),)R)v)))****N*r*++4+X+|+,,`,,,,--8--..*....//@/00>0b000011<1`111122:2^22223363Z3~3455677B7f7777899::;;;>,>P>t>>>??(?L?p?@:@AABB&BJBnBCD0DDEE2EVEEEEFFBFfFFFFGG>GbGGHHHII*IPIIJJ$JHJnJJJKKKLdLLLLMM<MNN6NZNNO"OFOjOOOOP PDPhPPPPQQBQhQQQQR"RFRjRRS@SdSSSSU UV^WWWWX X.XRXvXYdYYYYZZ<Z`ZZZ[\L\p\\\]]$]H]]^^.^T^z^^^__4_Z____``<`b````aabaabb8b\bc.cRcvcccddddeefeeeeffggghhi^i~ijjDjhjk k*kNkrlDm mpmmn\noohoooopp<p\ppqqrhrrs8sxstttuv8vXwwwx x*xyvzz{b|4|T|}}~<.~ ,>b4TV^~Bb*$HlHlB(l|$Hj:8l*N&Fj:NNp DfX`z"8Z~npFf ~ &vTBhRxd\@*Np~l D<Xzœ¼ì(Ģ @dňPǚ6Ȭɔbʬb@̀fD.Ϯ~rL҈nHb|Ԗ԰2L ֊Nמ@2 0Jd~ۘ۲4Nh܂ܜܶ(Ntݜ$ވް:*,P$,Vv&Jf F~ @@@`BD.$\4lNz8Pt@`*x@~H& f88   J  ,R|b::,P~R~<0h XZD6 :   !!8!R!l!!!!!""""<"V"p"##l##$$8$f$$$%8%d%%&&p&'v'()4))*$*b*+ +^+,,R,v,,--@--..h./$/0@01H12.23234J55P56666 @"@@'@ @1? 2362 b~/cf ld#:@\ << @\@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @ :@@@ @,:@@@ @ :@@@ @ :@@@ @ :<@@H@ @$$NQGF##?J?6$$17=< ¿ 6?? ƒGGCEE~@~lGG:bm)zw )@}??k}} == @@@ @ )G@@G@ @#!%)))0442,,,"??? ? ;;;(ƃ#AIRRR^ggbWWWC=}!!}}鰰}$    uuuP<<< 介[@@|@ @)5BBB#&RVZZZ`eec\\\SPoB( (Aoo?& &?oC ;;;&ƃ::RjB*KOPOB}LL}@ހ@ރ    uuuK<<< 介>@@M@ @ 4MMM4 ù!GGG=5**%)$3gB g3$)& BrrrABzi@@@ @ @@@ @ @@@ @@@@ @ @@@ @ @@@ @ +@@9@ @'+++'DDDDD!ཽ .9' $@?IE'7CfB^#JJ3"!$Bvvv=B {qM11@@@ @%!@@@ @%!@@@ @%!@@@ @!@@@ @%!@@@ @%!@@@ @D#D"ށ@EAD@@$@ @  W7,7WW6 (((@mWmCl OOO-@@@ @@@@ @@@@ @ @@ ` @DD0A`@@ @ @0n`@ہ@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @00`@@@ @(0P`@@@ @00`(@@3@ @QQQG->??@@@:57! '$  CY{~~BtjmC@@@ @(>O{#@@-@ @DDD hAaDDD=K y)@@@ @=<y @@ @ @DF@+8@@@ @ @Z8@@@@ @08@@@ @8o8@@@ @ 8@@@ @, Y8@@@ @ 8@@ @ @G8@@@@ @ 8@@@ @28%@@'@ @: ((/<<iiAssArrsPP>]xx,AуAA@@@ @ ,@@@ @ *$$9>>AAzz SGGq|| A  A@@ @ @N @@@@ @  @@@ @  @@@ @  @@@ @  @@@ @  6@@6@ @9>>*$$$ 576!AzzAŦq||SGGG= knmB2AA  =! @@@ @; u@@@ @  @@@ @  >@@O@ @")))#MM++M CCC!ཽ,DRRRE- AU杝U@7?BABzzz@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7@@@ @/7V@@p@ @)")))#MM++M8'"1 @& CCC!ཽ$Dܽ%,DRRRE- AU杝U@ qO Eb?@7?BABzzz H@1@yJ@@@ @7@@@ @7@@@ @7@@@ @7@@@ @7V@@f@ @* 77 77 +MMM+% ??ɾ CCC8+mmmmUB UϽ??}}C|zzz?BoV+@@3` @(,,,(DDDDƒ>PXXP>A""8 Ӿ;;;@@5` @  D,,DD  55 @5XX5A##: ..iiiᱱP@@d@ @& 75=D")))#MM++M$" CCC!ཽ njz@,DRRRE- AU杝U@7:<=D?BABzzzC@@O@ @!%%%" !#)ʺDDDD ƒ&8JJJC*7;BFRAsBש@$ ɻʸ(((֯@@@ @ $@@@ @ $@@@ @!$@@@ @ $@@@ @!$@@@ @ $@@@ @!$\@@l@ @,  #"/MMM8%1-...$)*8=AAAA& Ŀ "&$%#񴴴"89EC',3]B oIbY[[[G(QpzCL B~~~ DLGI2,@@@ @)$Q@@@ @)$Q@@@ @)$Q@@@ @)$Q@@@ @ )Q@@@ @)$Q@@@ @ )Q@@@ @)$Q@@@ @ )Q@@@ @ )$Q^@@a@ @-&2:5F<* 44*??? ,555;;;7444,)4===% Lcrj@(xT4gg&)U}}}?YjjjuvvogggX4QgzzzI::: ޲ہ  L@@U@ @$ 4HH=%  %+++" /???⽽(gAzI 㫫  -IVVVC,;88$]}}}3Bzzz   @@@ @;>BpppAAAA܁? 6]]]Bȝ5TT4 筭(mmm\M@@@ @܁F@@F@ @"19=>>>??>>:10133320&>>>&%!!777"bsy{{{~~||tb_aeeeb`𿿿K|||KJσAA' nn/ל1n`@@`@ @.19=>>>"%25,-,,5???>>:1/133310&>>>&%%!!777.ary{{{ DJdiXZXXj~~~||sa^aeeea_￿J|||JJρ%AA' nn1ٜ1n>@@C@ @ 2HHH2 9994+&&,<>%4>dB d>5&>[^MPNMfrrr..\B\H 'AAnn1ٜ1n@@@ @%$J@@@ @%53JjeH@@H@ @" ==????(    7770&"#$'''zz >~~~~O*! +"%  筭2nnn_L@@@ @@@@ @@@@ @@@@ @ @@@ @@@@ @@@@ @ @@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @ @@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @ ?@@@ @H@@H@ @"666  /// "甔lll9ϐ )))" ,,#]]]֜* :@@F@ @).9@@><>GMLLLB>>MM9˄%Q[r{y{E{{Aq  h@@m@ @2767777,FFF,#0.37888(#!:::,mlmmmm7++WBWF0]gnpppP2 (E8 B%tt8ל8t@@@ @#%F@@@ @#%F@@@ @#%F@@@ @#%F@@@ @#%F@@@ @#%F@@@ @?999977881''/73+FFF+$=044333++  %#"$&'++PP,+P;rqrrnnopcMM]mf1))UBVH1`giggg2,,VV62)#111+#+IE CFLOVV,,9AX✜W@-@@0@ @??=@:54555 #???!~~z@tjhiiiF~~~A11鿗?@@B@ @??66??=@:56555 #???!  ~~ll~~z@tjkiiiF~~~A44 44ׁө愀@@@ @!"A@@@ @!A@@@ @!A@@@ @!"A @@ @ @?;+~vV 8@@@ @?+~V @@@ @++V@@@ @++V@@@ @++V@@@ @++V@@@ @++V@@@ @++V@@@ @++V@@@ @+%V@@@ @++V@@@ @++V@@@ @++V@@@ @++V@@@ @%++IV@@@ @++V.@@.@ @ :::&55+99;;;) sssJjjUsrvvvS7 :88&@@&@ @ ;;;'+99;;;) uuuLUsrvvvS7 :@@@ @+!U#@@'@ @??? fAW???F~~~C~~~@)) ل@@@ @ F@@@@ @ @"FD@%@@)@ @??? fAW???F~~~C~~~@ )) ل @@ @ @??+~~U@@@ @++U@@@ @5+iU@@@ @++U@@@ @]+AU@@@ @++U@@ @ @+UU@@@@ @++U@@@ @+ +UU@@U@ @)<==?>;5486:;6;;;;$===&???' )wyz~{uiholuuktvvvGzzz"L~~~N 11%%@@@ @'(N5@@5@ @<==@;66555 $???! wyzvkliiiI~~~A  11@@@ @!$A@@@ @5@@@ @!$A@@@ @!$A@@@ @!$A@@@ @!$AM@@M@ @%<==@;555555%  $???!! 99;;;&%wyzujkiiiiH H~~~A! 114srvvvM1@@ @ @!KA@@@@ @!$A@@@ @!$A @@;` @ -5-+FF'7 <:212333112;>???&>>>&%"777%wy{xtdbceeebbdu{}~~򿿿K|||KJ" ;;$ nn1ٜ1nF@@F@ @"??><9101333112:>???&>>>&%777"~~{xqa_aeeebact{}~~񿿿J|||JJ;;$ nn1ٜ1nN@@S@ @%99999-FFF,%"777rqrrr,,YBXJ" $;; nn1ٜ1n5@@@@ @=>?62+.8AAA9̈́w@ rrfcp{y{}lcV[pBq   @{@@@ @9=q@@@ @9=q@@@ @9-q@@@ @9=q@@@ @9-q@@@ @9=q@@@ @9-qZ@@Z@ @+  ///!  )*/000  +ⴴ,:5]]]A";9???0)S^___< ,46<2'@@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ @@@ @ e@@w@ @1 %2GTTTY__SPVVVOB:411-::64" )) $5???K-  )0222 IcMthbbZsskgC6RR5)Hj~~~@-++R_ccc<9(ɴԄ6@@A@ @2MM<>(((>> <<<&EE||8>OOO>8|鲲|.>>>(xxxLƃ@@@ @$ @@ @ @C8A>@{@@@ @ > @@@ @C ٩8A>@{ @@'@ @&%CO;;C%>3>>2KJAuuAI{f+{{ c@@@ @ @@@ @ @@@ @ Q@@k@ @'L,(RR*(bpKTY[` %.RR%/BJPS  ف@WOATP F%J\AI^B@%0 266662 0%α\@@k@ @,ζд  *.9@@@(  ΛBlllϠBggg ہ[qB!P&??? ߯   @@@ @ ==;$$*AA{{ zzuGGT A  A@@@ @ @@@ @ G@@G@ @"( ==;$$* ??AA{{ !!!""OzzuGGT ($ #90=~~A  A #/6BBBC/%-@@>@ @CCO\8AFHLCC? لA.(Fo"4A~662 0%α@@@ @?-~(@@+@ @(''<<<82+5790OMMwwwodU&imq_)A{{@@@ @,@@@ @@@@ @7 @@@ @!C AA@{@@@ @8@@@ @@@@ @:@@@ @ B 16 DD@al>A@@@ @#>m@@@ @,  OO=?HVVVOF?=OO)HHH;OAB+ BAOI30 &8880888& у Az~E~zA QBu; BU?B@3   `Mppp`pppMב@@@ @#E+@@0@ @ MMM1::& '''B b, ssLMMM>,@@@ @C!!!CC@AA@@@@@@ @A91CC@rb;@@@@@ @ A9111CCC@rbba@@@@@@ @C!+ C@AU@,@@6@ @CC(((CC <<<&A8>OOO>8@鲲@.>>>(xxxLƃ2@@<` @GG #,,,# GG <<<&@?EWWE?@##6@{>>>(xxx0@@>` @CC(((CCjjV <<<&@8>OO>8@(A>>>(xxxǂI@@L@ @#(11  <<<82+115790 <<<&#Obb+++wwwodUbōb imq_)>>>(A{{ xxxLǃ;@@F` @CC!!CC!ӷ!"" <<<&@B @Bץ@nC>>>(xxx@@@ @)QH@@Z@ @"  :OL< ;KN:    º FFF?733/A<$>0B}mH@@X@ @ ҿҁ 7?FFF 躺 ݤ@}@|444m}B0>>Bttt  @@@ @0`@@@ @00`@@@ @>{3@@:@ @;;4 '''1;; ؄<߃!!  BB ྾B[[O:,AA-:O[[iDi\! \Dzҽ BB-A@B|||?@=@@G@ @441DNNEEE hh8bB%%BA 222P@@U@ @&  3;;;;5%&;;;;/27:<<<' ف   && ! =fvv;;vvjI4Lvvvv]8couxxxN̒AyyAyy 3&$>@@E` @OOKKOO(+444+(OO#  <<<&BPVhhVP@33G 99>>>(xxxR@@j@ @' _kiPOYdgn!7=\\%+@JP11iia  ف Ճ%#H"/CmyA IV~AaaAҀ@*33333333*ɱ ))@@@ @7%@@1@ @J 20 YY@<1>68>y@bkprv!*)#!(.@:*#" &18880"<7555 55556%(*YB \6)>kB|QFBO\sTEB1 1>Kbppp_D$w,jjj?B,?@@D@ @ ''MMM* ''::& ((''''  ;NN BSNN2ssL 'QOM..MMM@,+@@3@ @CC<)%000!8CC&+$A wP,2@@4@ @3: ((/<<%??iiAssArrd/sPP>]xxI~~AуAA@@@ @(:@@@ @':@@@ @)@@@ @ @@@ @;@@@ @";@@ @ @)SR@@@@ @큅ہB@@S@ @ζִ$ .8@@@(ɾ ΛBlllիAhh Gہ[pBO!A{{777"@@@ @ @@@ @ @@@ @7F@@W@ @!''")))#MM++M CCC!ཽMM,DRRRE- AU杝U@799?BABzzz@@@ @$7@@@ @ @@@ @">@@@ @">@@@ @">@@@ @&0L@@@ @CC?@8A>~@{@@ @ @+VU@8@@E` @''NNCCNNMMM5*+-- ?? NEj3TWZY1#@{#~,>@@D@ @D?H1157444# =;)Ё%%  ֶ 8@~<@ bbimhhh2E zvR-ԟ%́JJ%"@@@ @#"E^@@c@ @ 999777   (@@@9.- 9sss: 8ooo? ځ#    ???&PBq[D@@M@ @ <<<82+('''??@@@;757907! ϸwwwodUOMMM9&~~BwmA{{ imq_)mC@@@ @7@@@ @!>@@E` @NNMMNN(+333+(NN"  <<<&BPVffVP@33E 99>>>(xxxG@@O@ @#&+,,,)%/( &CCC C  ƒKUXXXRJ^O$-=KB ( @8ຸ:::97-6@:)6@@D@ @CC##CCC9 ??@@@;6""7! AEEBq<~~BvlCCmC4@@7@ @&&(''<<<82+ ??5790JJOMMwwwodU: ~~imq_)A{{@@@ @00`@@@ @$@@@ @큄ہ@@@ @@@@ @큅ہ@@@ @#@@@ @-XV@@e@ @) $'9/6?CCC;956=:8:::1$.JJJ/0'  66ۼ6 6%FKp[j{Bsogiwpnqqq`F0/ZB[] ll+Bwww)lJ@@J@ @#"1333899>666.#9999' ))) ݃#Dbfffnqr}kkk\Eq##qq qN  QQQ2///۹ @@ @ @%B*ǁJAS @@@ @*S @@@ @%A*ǁJAS /@@4@ @77</;;2;;::, mmwwBhhh{^uud. uuttY@@@ @@@@ @ @@@ @ U@@n@ @)B PP. `g^\^]UZ ,7PP".8?JN  @?A[G*>WmA-C\o}@@1 ;; ;; 1Z@@Z@ @+ $666999<888 ))%,111 +'&% -& .GkkkrrryoooAR)IXaaa9333 ̩   @@#@ @ 992660%[[ rrckk`I A AUU@@@ @%'I@@@ @%%IF@@P@ @"D3992660 !+$/99[[  %%%%@errckk`#74'%"AUF\rr A AUU'$3:FFFF3$)1@@C@ @AAPVNLNMEI'AA=  A9G 8NAz ;; 1„@@@ @ =?z(@@(@ @ ::888+)<4%ttoooV-RxiJۦ #@@0@ @3AA(4770Ge0A Pgnn_ @ AMMALL@@@ @A7A&@nAL : Á@@@ @/\ @@@ @7A&ɁnAL @@@ @-X@@@ @/ @@@ @3D6ǁeAl @@@ @<@@@ @ <@@@ @,RRQQRPRX\\\XQPSRQRR%%6HHH6. .?QQQ?R ) 666666RJ'&IlBm[98[~B~@ '??)??' kk0ߟ0kkk0ޟ0k@@@ @#C-@@2@ @BBB- 99((((  B Y6rrP 0OOO?* @@@ @A6;.<<@lv] x x@@@ @:CL;<<tCv x x @@@ @ :CLRE<<<tD x x x@@@ @A75&<@njL x 0@@:@ @AA%,,,&A A ...A;JXXXL>;@@: 666- \\\>ڃ"@@?` @G#222,%#G# ...AFTcccWIF@@E 666- \\\>ڃ#@@G` @A,,,&A fU ..A;JXXXL>;@@&&Aˀ@ 666- \\\> I@@I@ @# 88###888+88<4% ...#pp(7EEE9+(oooV-pܶp'xiJۦ 666- \\\>ڃ(@@H` @A7"""A7 ..A nn'5DDD8*'A n۶n& :: 666- \\\>ڃ@@@ @J@@Q@ @# $+0 &(4ADA=$$>AD8(%! 0+#"!  111.&8"$>ET^=>IMfAxFFy@ nMG?=^SDA! //bbbZKJ@@J@ @#%...%$!%-111  #  %H[[[H&G!JZbbb//̩ @@@ @3d@@@ @32d@@@ @3c@@@ @)OH@@O` @"AK'' ..N  Ձ  ˵H+?ZpA+A\o|@MM??\\@### ###ı ڲڃ@@@ @/\#@@'@ @> ,* ]]ӄ{(-:;16XT A@@@ @,H>H1ԁWC{` D@@O@ @ #(AAA%%AA=A=:;::::6,. 55(    E !NBJJCz ztuttttlX\ jiP*߱   _@@|@ @/ TTB PP. `g^\^]UZ ,7PP".8?JY99  A@?A[G*>WmA-C\o}@@rr1 ;; ;; 1b@@b@ @/88 $666999<888 ),%,111 /nn'&% -& .GkkkrrryoooAR,<<IXaaa9333 ̩   ;@@R@ @CCAAPVNLNMEI'AAH99  AA9G 8NA@rr ;; 1„M@@c@ @ AA99``];G3?FP\gd``99AA}  AqqKv , f}FqqA@ ;;00;; 1 „A@@W@ @DD;;DD!OVTRPLFJ)DD>  ބAssA@G 9OAz44 4444 #»5@@H@ @FF"U[SQSQJN !,FFB  ACG(AWA@ ;; 1„@@@ @  =A7A%9x@nAJr : Á@@@ @A;A$@=uAF : Á@@@ @<7A%9ɁvnAJr t@@@ @8# %5EEE821$$$2ZZZ^a    .@@L` @0"##L##" 94+^^--3CE",;EkB kE<-"EC6/<< !5qqqhV@@@ @I3D59ǁ @eAjr @@@ @ 7-00]] {)hnn<+ A 0*@@.@ @7-238800$$]]$$ʺ{)hrs}}nn<HH4 A :HH܃/@@;@ @YY=C00E<E99 ''ބ))$$Aܻy<@__@98999'CCC;99xxC {qopppMBrrr11鿗d@@p@ @04#222) %-4666[abE73,(835'9Q_a[ '. 7770& ׃gE+).cccS>0**1@JYhkkkCneWPofiMqCY. 1nnn_L筃@@ @ @B'@Y@@@ @3c@@ @ @(NP@>@@P@ @* AAAAPW,8BBBB>48 55)     S"AA9AXpC{go jiQ-  ;; 22 2@@5@ @F5 ::888+3 99<4%@ittoooV-e rrxiJۦ Ⴠ/@@7@ @AAAA7772&566  AA nnnc7LjmlBÁ :: >HHJJJ5"1,-+  $$ )WE{hC`XZW2 G,B@@H@ @9;A..A=8555.# 1.  ߁''  8rۻu9@\\@zpjjj]/C b\A)ʽ$ MM * "  @@ @ @# C Z@@Z@ @+-."%# &999$**"777(!!.'() 000-%+, ,=\^EJGAMsssJ,UU%FoooS-,CC^O7R)   3337```YJ9@@9@ @888+ :::5)566 <4% oooV-ttti= RjmlBxiJۦ 655666/*)*$6>ABCC*BBB*,.878+"2?72%΃~A{kijlll]SRT. 1Fk|C%RBR%X. ;;$ 1pnmUCc~ncIٜ/@@8@ @  AA77AAA<& & 566  AnnBwKL jmlB :: >A3J@@W@ @"ٿ 66%# 4>>8;4& -;;;-.  ȿ;;/ ;;--;.+D{{{puhK8/&###ߪ#XvvvX#  B~~~0vv^9$$$uu[-ū-[u@@@ @,̻..XAuu@~h@@h@ @0888:::1 ::%%:0"""!++#%%% Ő;ppp:ȍ8sss81  ttIIt;; 㸌 ;b@@g@ @. +:::+.09AAA+++.轅 !!!ܧ UsssU _qB%)ЊUU; Ӧ ;UD@@D@ @.???.77))7)))ޤ#[}}}[#  nnS$緜$Sn@@@ @ %%!! :::: ګJJBB ss ss5@@5@ @ ,,4+ 5::ѻ333;XX//hU.Ù-iss^@@]@ @,,05888"  +介㼊+++044.,,,,`kqqqD;;;ྙ @@@ @ 10::6<#>>@@@ @(ҁӄà!!P@@@d` @   !!<<>>  ?&&پS@@S@ @'   ((( 'Ϲ"""===3?PPP77޿7@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @2. d\?@@@ @ **SS@@@ @ ""DD@@@ @ ""DD@@@ @6%ElJ@@@!@ @ #666%% EE &$$FlllKJ-A@ @@ @ @66%EllJ @&@@)@ @666%66% EE &$$=lllKllJ-A@ @@ @ @%JoI@@ށ@@@ @ E+66%//EE@VllJ]]A@@@ @ +E66%V@llJ I@@S@ @  #+++&%))-.,99 /C=+ ¼'5/EE#¯%.EUUULIRRZ\Xrr=]@ xU5ϬAxr  $Mi]AJ@@V@ @# !!!&2>GGG1&))&--! %7KKKQT AAAMc{B a>>LQQK%ZZ= 11/!ͱ0KoD-" @@@ @6%%lJI$@@$@ @$ԃ%80"H5 #),#ȧD@@D@ @   ! 9?!))!09Aѿ/**''''''**ف**փ@@@ @:=9syq@@@ @:=9syq@@@ @$H4ƀ%@@0@ @PNQQQNPH$$F@%@@/@ @66AJLLLJAHkkF@ S@@i@ @)" ">>LMOOOOKFEEFKOOOOML>>F $ 78999C! !C{{Q{{@ *H6:;73ׂ opsssS@@e@ @)$6HHHHB=9H* @@@ @=I=F9yBys @@ @ @ OF9ǂAs@@@ @!6$A@@@ @$@@@ @탇--ڃ@@@ @탇--ڃ@@@ @-ڀ@@@ @탇--ڃ@@@ @$@@@ @@@!@ @ 666'%EE  % ##@@_` @&&&7777,ǰLL==LLLL ۨ :mmm=  .==++++ف&&mm.ܝ.mo@@@ @4 &DEC%%5?AA?6%%?ED& 5  ̾  BBB5( KBJJi}A}kJJ~AK ,,  B|||,," /BiPD@@D@ @ ")! 0- <<<2""ƿͰ$$!=CQA116?`Z&xxxdD  D"@@@ @ <<<xx:x 6 [@@j@ @+  $AAA$    ÷FFF=6'ѹ11&# GBGĴ11 Bnnn?B zkM44|@@@ @;˹ (  B<'3UUU=( ;   #2>>>6(!끖˵Crfff5P@66@w66MeBzP72%; ,,ҿ  ,, Fd{{{kO3@@7` @555~~A555 jj+C,.jj(33(܁]@@f@ @, 333,33333CPP *5- &=CBB'۸ɸ  >eeeW11ee11eeeB'jZ4****MyB=@@B@ @000000 0!'DDD/ __&&__&&__򼍍--- _BM0B^4<<)G@@G@ @!(((!<@ @,,,,,, ݹ߽ ۄ䩩䩩WWWWWW@n@rAyyAyyӇσC@@I@ @+   zzzz V,ԩ  &!!--AA--!!ՁACC$@@*@ @E-++ ;; @ @w*YVV*uu*@@@ @#%FI@@@ @>3) {e* R7 @@ @ @(OƱ: @@@ @3311@@@ @1Ѐ@@@ @ ##"ބ %$%߃ EED IGI@@@ @!!1*׀ @@ @ @10π,@@,@ @%&+л4I#K$0011$1100σ@@@ @0`'؞;ƃ@@@ @ 0;'`@@@ @  B!+11  $@AUaa@@@ @  +!B11 $UA@aa@@@ @%%133JJ-ad@@d@ @/ !  ! //  3A ˽  3A ˽/ $+2;;;- $+2;;;-4@@4@ @ !  !4B ˽ $+2;;;-@@@ @-@@@ @3;(f9@@_` @    " ' "  $111&*# 1C$>>- ݻؽB\\\<?6  NC73&&)12[nppK( #5Qp !%ŧ"@@&@ @QQ 77>̈́ A@@nn{@@@ @?     "+. +DDD9'F@=???5$)5???9,>>4;(#&17>4?,.0/// %.#''##  !*&"&@2'+6?=!'3CV\@6/6VBpM@$z~~~jGQj~~~sX{{h=vO)# 1 EKbm{g?Y^`___.ⶥ J\EMMGF1$@2 " BTKE ῭ЃP@@` @(''  %9%    ...*"  5 $IrrrI$ """% &[[[SDV@@` @*)$    #"   1"""  3;;;, 22-)889@@z SFq|X::EYccYE!Rooq@ @)8@@@ @ +#77712  V,+11Fnnncd 44 @@` @== 29 ()(99@@ ` @AjAӁ@@@ @#&ހ @@ @ @Щ30  @@@ @)Q@@` @    @@` @    @@ @ @,W0  @@@ @' @@@ @'@@` @ ' &@@` @  && '' @@ @ @)  Q??Ҁ@@@ @ )   ֤'*Q77??@@@ @ )&#QL@@@ @:>Ԁ @@ @ @&#5L @@ @ @Щ30   @@ @ @,W0  @@@ @1ʅa0  &&@@@ @/&^K    @@ @ @#F=@@@ @ =@  @@@ @ %@= J @@@ @  # @=55 E &&$@@$@ @ ,,,  ,/% 6WWW6 @@4` @        */*/ /D@@D@ @   /     6@@6@ @ #%%%46 $$$.9DJJJ($ ؃G@@H@ @   ))!  """ $$$$!45QQ! $$$*6?DDD5"GGGG?@@@@ @    """  45֤'* $$$*6?DDD5"77?@@@@ @   &&  """ ##45LL $$$*6?DDD5"@@@ @#&ހ@@@ @ )& & #Q-LL@@@ @. ##\*7777@@@ @ ##֤'*77778@@8@ @  +++*)(((  @@@ @2) cR   $@@$@ @  %/,   @@@ @   << ,4%*.>>@@@ @9 ////4  q^^^^g ڃ@@@ @:* @@ @ @) !!QCCր@@@ @   '<<<7 >@@>@ @      )*'''   .@@.@ @     ".55541@@@ @   &&&  ,1 0MMM0 @@@ @#'߀@@@ @"= Cz @@ @ @40љ/g `@@@ @C3'ECf+N, @@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @8@@8@ @   &0888%ʿɃ#@@#@ @ " ȷ@@@<@@@@ @    ֤'*45- -  )4:::+ >@@@@ @  !!  ##45BB  )4:::+ @@@ @#(@@@ @ )!!#Q#B B @@@ @.\*##- ---@@@ @##֤'*--- -5@@5@ @  +++*(''' @@@ @*)׽SQ@{ @@ @ @   63   @@@ @   %% << )8@'16:JJ@@@ @8 ////3p ]]]]f Ѓ@@@ @#E5Ā @@ @ @5.њ1i\@@"@ @ % - $Dܽ% K)<[ H@1@yJ@@@ @*S @@@ @&"KD̀4@@4@ @ "%%%  $$$,8DJJJ($ ȃ @@ @ @$G=@@@ @>5"@@"@ @   %%%% .'$3:FFFF3$) @@ @ @   !!!"*! #/6BBBC/%(@@(@ @  &&&   64֤'*2KKK277(@@(@ @ . &&&   64\*2KKK277P@@P@ @$  % &&&  $ 64Ż ##%2KKK27*  "%%%&',..27R@@T@ @   ' &&&  !### 6445'-  =@4@{  B@@B@ @  &)---0255   =@$$  #"&- '6LRZZZ_dii  D@@F@ @     !### =@45  &&&-7AFFF7$! '@@'@ @  """  64֤'* +DDD+ 0 0'@@'@ @ . """  64\* +DDD+ 0 0O@@O@ @$  # """   $ 64Ż ### +DDD+ 0#  %''+0Q@@S@ @   %"""   6445% &5DDD5& &0:???0@@@ @  J?=@7/@~ @@@ @  B>=@4@{ B@@B@ @  &)---0255 =@$$  #"&- '6LRZZZ_dii    D@@F@ @      =@45&0:???0gohugoio-hugo-6abdaca/docs/static/images/000077500000000000000000000000001507671574500206225ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/static/images/gopher-hero.svg000066400000000000000000000157711507671574500235750ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/static/images/gopher-side_color.svg000066400000000000000000000052041507671574500247500ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/static/images/hugo-logo-wide.svg000066400000000000000000000047221507671574500241760ustar00rootroot00000000000000 gohugoio-hugo-6abdaca/docs/static/img/000077500000000000000000000000001507671574500201315ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/static/img/examples/000077500000000000000000000000001507671574500217475ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/static/img/examples/trees.svg000066400000000000000000000160271507671574500236200ustar00rootroot00000000000000 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 gohugoio-hugo-6abdaca/docs/static/img/hugo-logo-med.png000066400000000000000000000417721507671574500233150ustar00rootroot00000000000000PNG  IHDR|& pHYs  ~ IDATxϋe} Am@0̶!0Zd-T-ċ7afaS^ 6CDGI,,w<-ċdQzO:9oꮺu<]\\N | | | | | | |>>>>>>>@@ K~_;z̍CW[BNs9EO>|{u/'w/z٥X@F.EkNk#!GErTb_ DEf|r#~&zl & |^ה |VZņ8S W>}bE貃@3}{eo93 ȭG$_9X{9q})rzDm|2.eDNorN>Kج`[4wù*wpi(Snm>szʬ@ti}9=ӷi@\ck&;Ӧ P޶ڴ9`;ڶ}y2+rzxsM@yeVM@;%6hS |2=ЕS>'wN^0 wZ i@2sz &L |)9Ц |)%}7]0}NO;4|@L {Y ۴w,i~w$ڴv}Аsȵ >eDNL@̊i@BˬMǯ}|?} zʿߦ)>`9=Fg{kwH܃ߺxSo^A|k$8ףq ٻ)7Lbt.](9waoj+)xcM@93nD.S{H޾)GǮ3}J陾(z!OsO׎E^1JGr=7ڴ"JG"|ޘ9XǸW>A}1eTrYѻ|@UȞ^^-]ʺ(һM|@EDXN;QCސ|ʸr0g9DszC}!΍^c"SN=pwBNoH/dع+w>`L;WOԵ)M@ʬu$:dl=חX"+w>ONO;9Z ivN)>UNgރ"k#,;ߧ @Fٻ)2-ߧM@9s9=eV%ZW{mC-2.}83}q6:Dqř|2+Ӧ6m} |@ywZwvWN/2.!^e\@BoCL/$9ܫ|E/8;s4/W9|9=mps/]fENG;49}!^cV>`]9S(а?ߧK|ߑ{-kFӦ} |vhٴCӃ6m}' |<939^|ZO>e\@ ۡytiC/}ڴkh&#g]E<}Ц SfE;4,ЦMWO6>cNO;Dg0f^rzo;NAUijwZw0Ki~m@@kGrzڡ!|kW>>lvVNG9=!\ڴڡ{mmCeV:wj~>>VfENO;4_N\}Ǟ |=w=Hri;ߧ CJ;4m6ͩ|r靻iw#:Di;LZszgnszʬ` >mڴiCܜ;CֈEH}89=eVC:i6m |=JG3vh6m}}ڴavh=e\zqwKeVm#^m@0XCצM}DHN_9=`|{6m |mueVmV;L.;{mg`|2.}yAp̊vh_<`'("#, zrz݉ rz"gW6 ,"@}ǞɄNhCp(ߧK|ߑg4xw"}ʸ)B0̊^vhrzi#|m9^| 6mq!|hMcNoyH%RwO‡zLR}szn szʬmzi#|i ˸\m1gmT2.}8#|[)9=ko&ׯM|+MCΣȦKrݫ|+bVNO;4/ʸ,eONGN/*{h(!۵i#|ڡ‡ޑPdO~>NA\fENG;49=Z^cA֔;uaj}ʸq·k`>e\i#|ڡMNi;"oޙ {Np|6m}ʸ>ӷki_zi3KF[am[F,f5k  fo&_/ٻiOT -"ߧSV0}+Ӗq9#|doD@6GȞvh }EIˬ:}HγnWn }hγ>qw`/} 4>u\ڡ@%3l'o}qUnEw7O7ߧN ܉%hVx#·ٻNTr2Ѧ"'2+|6m5{1齣lX'#§ޞvh۴mkjwKw;*kix+Ood rz}e\6U/>4."hˆ۴#|ߦjh43U9=X }gt/2+rz)}o#w[mN+ݔ6P>3gy60OK=!Qh=—𝕘Ջ B}Q—TbeVk"ʀ(}7 _>w/*=ZK,AP wUo't.l;'|jqHi],{/X ,պO=t@V)LӜOU&(8s9 z~'V'tDt|·N" C hd,|7r{;!|9L_f(؈ ӷrhI pd(|gOl5ٳ>#|VЁ(?Ff/r iȣ>· >.zVp>WEq<`dk>{>G= #|Oe #|\A5GC.n+K{ 75"N_g|G>5h&f+Bb%u kǯb i]G'ݼ7 [$v1WK_"0+-Laup>2#|y YS~e)|lGm @ 7BG6-|QO @{Vq>%Y(4 #|GG |@#|>G>#|@#|>G#|G>Ghʖ~C!Q\MG+67x,%{ ͖~_Gn>?7Fily5md4$|M(|A3 #|@s@>#|G>G |>#|G |@#|>G>#|@#|>G#|G>G |>#|G>G |G>#|@#|>G>#|*{Ń?y /~o%}ktl>81u8?G_͡p#h@?{1h3(Ycl^AK߼7d1cs"΍toU #|SnkyumTmSoG#|o#?c% CG(y!Z{8*]#|dU"r&۵5Sy=F$yxqO(qڗ>G6[]kiFJ>¾Q.[Fo #|d>GFRRď>G6[\J)nevu-9 <#|l>· Ct [\c%/bS]Gnsj>G#|L[bBiӷΖ&>AQWBo+z>G#|`Xe!!%-žA #|dY 'oy4hז[7oO>K#e}0BK}DҞ-#|l>7ʘH[ޣ>A[ɴ!}>A~92#}>A#}dp#| GHk%(}>A#}2{K#|l>§ #{oKl!| GHŠh6WQeub.Y>G6# +ߦ.c>A Iݣ_!w xI_f1Fqj:vq] #|l>W"A ޽}b2㳭Q1Y=}F{meXA#u&kb1FG ݚDh[8k^"G#e6lcG4eJ>{D]vG#|o·)u[B/=qLtS>A_6Sk9^1=8(gز8./q͵j>G6[j Zpm4M=B4ՊNbcq #|>·[jFK]j{*[jv1R"<G |K,UltϽrʨα#|dUOIGS~%Fr;KIԣ|>AFr1o8WW>AߪFr!%:KߔGG |o5ѮE6q#Ȓ 97>G6kE!k^ٕ0y-7Wj.5@#|.|s.XTuH8ShG#>~*k邾K^ơ\E`ka##|l>·4`iSMmS1b4甤8ψXSℏ„/D+~L]P)|sM9ҵP·Ҧ%m/OcU!5\S[:sMq_"|>GkQCPtx.LQ>G[$5UV 8.qC#|M E+:K8?M>vyG#|os<s #|IoR=[ ^risL]>G}Te198Lp>GX[95պYG#|cK|\Ck#|s%L+8.jG#|oVQXzVo,(~aNG#|o҄oXq\kCN#|>G2X;>G>'|lm>G>W!|>G#|>G#|}z #|#| E>g#|ot؟>G#|)B*E6G#|~ O]t |y0>ᬗnۡswћ?>GOX5"|e _<, ߴnnB1ݚP>Gc—^bژM=Ji$>G6͟[@q":6v֕>G68.\jz[ #|dE"|mq!0J)M>A5~oN~jUEL/9H>G#||vJ|ۖʳ|ܧ>A"ؖX[ur1qj9ɧȸ>GƦo-Qst}O2>q (_|9z#|mZt-?g}s!#s-17E~>G6/|KujZJ%5eWvoL$#|mZPӌk,.R α*ϱcԱ)!#|ZxoK1+7tTXs3X!5u9>·j#۶#i}sNcŔRŘsZ 8g6SO>GߪoRl4d\SY)Sc,9{]{KL|͹Ç^>—Qnɾ9i+,%SCU;eoNI">Wq]r j:iCqsr& S/kquyǜuH>G9nK`+[5taʜoQEs[8>—P%Vczѡ$ k]0~s%q#|,oQZ7R-BPVeϱ:,uCX׼z77#|e!|sfj51̝nK^rorK}ut>##|e!|%{h̩14#K}Xj*9k(xmsGB,~:-{SLSYohߜZjhbK֦}K%>—-{ 1u0-K CKM}Ml_s_e7}9e>G%<Ƣs_koǜ )XHR0gTg)xxG/>G_q7g?ЦoL}C:K^UJ.8Ń=}Q5Iԫn8ɸusoHot4 IDAT>—-Bi$"Y&&: >gرUR eq DZz,KH}}>G%GrR)eR #|/+[(ڷ9*kʁ-Qhu5diGN.mj Jٖ,0Ôh= #|8[UܥAZڶTq(^O#|Y Qyu+>:[r+OK#| _D2X]tb-"}e#|e-|Vg*#{<#|*eK=+rI_턏>WmZGҔ;Y^Vli>G_·Ց5!Ss韼c>G-EC!{S׷>G_1·e*f1XCSmLǔ>GGrJ9ZoA~Sŋ>GH1ո}GazٮѾgv->G_WR(i.yQhϿ}^quB/\>G4kGJ@0Ӝ>G\GJ' %_-^Ӣį>G6#|E53g#@įI#|(I,,zM/}sxRI#|Eg\je!klBwkE+$/%'| 9MZD(~sr#K,a7 ;FqN] $~^F`ǽ>Xo GZLihd<`$%ICؿcTT)gz,ǒ⼈׍yˣ>Co1q:4zG>#|@#|>G>@>G |>#|G>G |>#|>#|@#|>G>#|@>#|G>G |>#|G |G>#|}G_?wӵ~@3{O9?}[{ͯ { fa js_;t k#|n}*]l\%-q >8Qwt?%|>cG |>#|G>#|>G>#|@#|>G>@'||G%ce'|_t@_tВ= kWnhÅ>—}.bZS>~m1Y?}P%s2 ً-L Qq?soO`}wZ", |=QD҅}\;3k kgZ?z"!|yHdV1ŝA~Lg{Ō[ƘBTZF-*F꣣cNɾ |@g}6{/1ea25d+ M}::?1vc˴wűG B >—!]XFv MX—.yޖ"k}~>gZSi*7c XW㦩1Xq s>=Q"O5ˤ)bU)FFLWvI"|?KG>]7k:T#|r[b/`#I^].bI1_};JH}/,{#Q(x\4w%y U/05-> JGj9!yx.e}>ILy6%vק}$;>o6}mzO{!F[##| _q؍1v_AxX$ST ePĿIgS)Hd/^g̚wM#uir8ٮQ4*7ͮ2ҔELbXi?X(:M_/"M6GKEIѬuH )2ZCD6~N?=)ZcrX4Mѻ׏jUO#ur|eFچJT%F_K_/;1ʇ3XERmezOu+|!it.cN64+״O$c1w|FCBXboKDrxf?OnpC&.mi*I4| HRk$д]rw]%X^+hdkiCean%0Bn OQ9>B҄Kh5sY; QpM`C!r."WmF|M*ЦӔ*|]PW1w_msri?k}$i-$~^u$akjt1pi*>7U]١ѣP4qϟjQ`~n[Z& hMkc"~^aL{d/I-}繝Tq!!lcFܞ\R^Utd_*^ů-Z.,ד"@D&=cչ[O8 {-o>@ne[|,DE _ |`wn>|Ͻd `UW2_[~>T2ʗJDr7<+ `kY:"+akk;1gqF462wsw)}KOU9D֟O?AZ"wO/߼Q?xן݇p{%|GOѾV> -b ->싮.(nQsƱ#CyFAKUEG_vSyT+]D0d 'QZ.,|[ b?E%>;KK ,ص4x}BKή5rY$ ǔwl|_LQv/_&1u,|KtgRmffRn~?Hbu3Y1%F)uӈ`Ӷ7T<59%,۷Μ^Tf]yZVmur;ШWW9\RB;շr U#"lf}Ԝ76ӭ)ߘ/Mڗi:w,#|5WXM=r ߵ<'9qHf*|muGb_K-W`Co{6+|%jG\}FRً6AL{VdF9uѳN3ǟ X% Rpݵ"kt`C*|1I }M'iZ?^7^9>e ᫾~9(MeWs:Nmx컖.M_v|aK6X)^U-U0JGᕤ3[>fI>2n|itpiߺ$6$niĿ~oؚ2>WUb6E=U2Fҿ]%&},&mtҾ}{:kN2+A,Y%.~7eJ7'=d)&&Y%|!4%99mBo4w>I?>I @~^k7`p*c%M9U*|險I~޾E|jdvmE"|/I߽^On}/h$;I _CS[}v !ϾKzӹmW6(QCtLiYM}ױj:w5XW۷}c-*i6:2mFѦM]!4ԔK?0>S!—LS֭`&nŦJC Iġ}%?4E|)o%yv;$|u O;׌}a9=GH6mZmHՅK]+| ߐ]d>*?ШKUeid0}Cԧҭ,-"|C>˔·K>[[ڵ_eڮN̡}{Mk}4kZ Zj"|C>/M}A2r9e5.V|ʸdmFVօKڦ.׵ӺI|[U]Zѷ62V]ogYuɅ-V疈NJU9.ohG.mik ,=|e4ESYiZ`kW]&C+?wI֮Y"|mVVk?N%|]K rz178 KN=\%{H瞧$|ito}#2nŶiM|L]j6eUۭU OZ,MyY"|i;gRajK>9nE;8#|SHK[_[Zƥe! SmC(h%IUke""\FkL5]X-Fv﫴OǯZu<K&Nk _v̡Co9Q6BS ߾k)We:ְd;4Ϟ+ 3{LKY}ޮ]W_FRxX -RJ]X1۴Q4S34>I2Ut7>KuJwgilmeпϩ#|S/ڨ_K}X}/%f#3b&!|K5{+M[QKF%nNڴZo+ߢ{Noɗ8[S̅k/|m%m9陾ȅMv5p YSS)c}Z*TNFڡ]!GrqK+rSonӷ.w=w_ -tX6)Ǣ'-3 9k9c@Jc>7 REinssyL̝Z9=‡ }ʸTڴ#gJ;49=‡}ʸTڴM;4RDy>cC#|ЦM6eL]y>KLh޵ޱg+úXj 2+rzWszo ?m*_{YӻSf!2.}ڴ>|{vhŖq$n}vhov36m}6Ӌ=}ϐ#|Цm{>mڀrsz^^39=‡m>vhmڡj )ڴY;񬃝zO|6m@~9=eVp*‡}S7e\CMN}ʸTڴڡi‡}ʸTڴsC6mڴEދo]o&‡}ڴU})"w-w‡)Hj4/0GNJNO;4>*~}W}eVL߂a6m}ڴYӻSf)"W)t}k‡5q$^}@vhrzWo@M[n{9_=GN5>yNkwCCa37CN[iv̊?E6l1ʕމgJe\!HPzNO+aKS7e\vhC>e\*mPrzrz | ~ڴiӆ"x[rzvh |uӦ'@rzۡ}ڴU}0%-2+ |@;ﻚSk":]i l&ߧMVTfENjN-0n6|2.XδC+"W)スڡq.h6;TL L^iØ9_i.xHaHNO;keV@<赻}3}{̊|2.6m}8SfJNĽGNqvhڡ%N=ȞqC]gڴiӆ"ӻ;vc> ^{"PiV "6SfXOJ/B$^t`qn_)l|6mrzWszڡ 6m}_;49+Rf |i^JO\N |@|߹Si[W;49+eV3{ӦmٜǯMs*>`|cB:iv̊@I}ʸTڴM3}{̊@Y}ʸTڴi@RDyDЮC|6mڴ ӻ;r6;ﻚ39k9ckc>RZۜ[6m|_,B yˬ])> 2.}ڴ=}՜2+*"wIH}_-@M 6@͔qѦ+M[L]?zc39=[Kg ~O}y 7{ۘ;q37zIDAT|2.9jh2q*>}5Xihrc9=Se_Lι#/VGДvh0EO=Dɓ [/7׊<0ڵCs8M! qۅ}4@LӦ k&`Z;B9AW0WN-@,;+߇)szʬʸA;4H> LO6tEN |2LN |4Y}DGN1' ([N6˩@l+wJ6MN |6Sƥޱs |M[М&Ӧvhrz>m)$~G}n:g>C|zszo>cNiH8@%~ڴ?}+X,gwZ>3>Qʬ |VSƥ_N9INZs*9wJ+O9cD;xI;4` 6mY@l1wo#9=eV>/rМMw|'ڡ |P=zLЪRRw\_Yu w|ٽ|.œ |W~twT-ql>>>>>>>@@@@@@@@ | | | |C@ M@IENDB`gohugoio-hugo-6abdaca/docs/static/img/hugo-logo.png000066400000000000000000000234231507671574500225430ustar00rootroot00000000000000PNG  IHDR5^T pHYs  ~ IDATx]g'((*J%(Am^J@X龜W{Kd235ބR#1L|DSC6d78q1ͧ~+tW=y83]U~~s6]>r8-2[Ձ8 ̅r8Uv*Y`Ʃ WfF޴Vh Ve͞*7 03z#.403]V h Bs8u=˕rW~˧:0Sgff7qU1GmMȾ}&GeL-wf9Te8GD(,pya /gZ0X|)X63FoFԛ ȾdjMjZƷiHf֝%U ;{3ٗoS i.0#;m 3ߒ%Cu$ԉތͷQ3|:K,jI% 3J%mT+ ̬Ef,ʀ Nb03Ϸxд"y36F),ȷIfjz3ّoSд f,`Q7cmMyD=6iM+oۨ f`P"͎|0SǨf_#Qaf=o&4mFLhPa_xU GJ 3|l:HvPaf-Ao2hGz ɷqj98h{3F0 3x3p~!L-P`q;x׵#1{^N9>ܴۘIf9]t~{y?{b6a;4\8iʿެv^w|Vvis.{[N^={o7]6a6~?t {_˞擟9psDkg;ݛ]rӉ5_o9>@nr! f;'{e7-7fZ4 @gSٟ~Sw\=s󿸔=֫37 e ppӗoԙ 380͛ON8dF Ԙ 3oABY?p L͠2:х@B " `NSu0S (tWvc_2l[S]6saF]mpFe33yŻ0f fK6@e7fZhQ}|6@+L03O?1$o+&ZPྷ>ff 82+@C]m+@s8>W._5j81hyl'& nm&ӛ'lNؾ|[M9 wQgƚx__~۷Y2 .cz3Yʙ&*ADfF}y;4M9dߦʾM X0o[ؙ& ѷT 4#]Lh_۬ X03\({@Cf3 gیVͷɽSz36Uj-Lh#پMW.3s|Tr 3oz3yYq1WJ"`f6U|*M5 ^K 03ے۴*3 7Hhf#6 L,3+Ojz3m1fBr2%쬄ocXF#6 L8̼ nFmt ƫSلUfXތշ!oӬ*̬+)̼M0S7ǒW6۬hZfRh5-My[M6*ʛ6p3o^mOJ`f6q31%U o;M'b6 uƧ1F]&m} ՛AգL03Ϸ!^ڷfRo5-fʅ of@fvIқ nI?m:I6LuX;7&XF#6af`(Eo&4!5Gۥmm7SԈv p3HʷfzVu›1\6`fڀ ތeٷ[7{3 $gx3uTFc6^+ h۳Kͤra)"6aOм)6F) uUJʭ\`6sތiu0WHK*j2{3Z*i*mVbB^mѮ7cmܒE.uD<߆ܒjDFX|8DDiEL#1raX|L"+7cm#|! z3V߆WihvzUy %Ս46Hٷ!\6ʫ RM0&)6M f{>}7dz~C|l'ӷ!M5Fo;?=s߿f>Go^zD2_<}c?f{B&6ƻov/ܖ{|s8xBO<iB4mjUfLr3 Ą/:A?f^|-t߆4Nw!8793~&n@'0c-Yԛ9/? ~_Ѡm+Z@tBs;Ms % 2=bƎ'?38ҥ6##ϑf2ʞ ξM/67#Xیƽ.ԛ6țq[h~&!h]_E*8$Gߦ45 b6@UϊLH-o`CMߣ@PmBhE6φQAV.\F7n .jbTeR6# i{x3=7߹gyq|Ȟv2.e,6%lFZE`TSh٨P c;-l9@MzXƚjBv*H))9TiFVq0ݔ`f6X-)EMtArw8Mx hAM4f=(c7(`r +aifWP )C_¡gAͨHDjE&:ج:РRiрL(ش P3HBzuBqUqԽfx]'Y^ 6:6kP3 vhw6 jKc1@MrL ẃrF; Lk[O#[F;qc1pTƌMjǸC`AݸF?G\iAFl/ӃRĸƴb!7N3e`AU&D Lf;t cƞ&, i/ecYyy *x 9:*ˣlgckI@ '0x0c偠&ۇ# o4i ZC kAU6 ,>5ѫ5qPoNjX 4, UM:`6`)ӥ 5]NYP^IjȡI lݚ(P4tlpp7YPcˀI(P$1x>,԰V `9F_wy ǔ lG@ cS n 7Ka^WP#j5@ui%gՠrУmU 5AFPcJ+xY RvbOy5F)Kj5`ZqhAMZPc\cNK j5A&"`9s/ \Vj,{R^dAFP#5QnI \Vj,"2¾-j5XZ:P$fŢ*-e5AFPc$ij@EN=e|5AFP j,!hY93>Z:AFP#5FqNiHUj,Oepoj5AMPcYb jR AM%a+,;-j5@A"4p FP*Pcj5AMPkFPBZj5AFP#j5AFP#x&AFP#TjOFP#(M,JP#j5h[#݂㥟c$KP#TjxF-e|ϲRPj^嗴k6XA&-hՕ֚I j5AM Z~ԡG5Oh^Ij㇢U5AFPcC ~c\'Ij,^ -Uxm;AFP#DVRjRKJPcՎUip j5A&|-U15moàڱjFP#j PcѾ2XG׫5 VLԝIt'5AFPjp%;xw?ڪ58-Q)(<LM j5A&2Դj35]5 =X i5AMDaÂ8ƻc8GW[`KcJ j5Bſ j"AG ^Njm(&,?{X&1Y*RA&"ԼDT᫪PJ59( /Xo` U$C6kr٠FP#Q[% 5HKU<:k$]2ؠ-fu]WA&"\}tφ U0k{eL}z:Ujmh4VgHP#,SE[PSxUkQEhfUjM /Vi5AM@^uwPٗ&]t=fcc*h<ީ*xUk` h<&J58<5^%bB/Дjq<ܔ-'F MjP̑'itqoL9YqcFPc}`rPsN41&RFW@@ 6X#)'V&Uyܺ;nGac{Lw~\P j.A 7ha&#N9vɁIB 2K붪xA*@^4HoIj^mվX 7Oz]( ZW^P ԜtWrP|'jX\çٹd?$3i  fXh@͹^xqfՠS p]^\ϝ\P|_$5O~+M4ٹpۯo6@$jۗ܍:7hMBȁz2H9R󛿷/IA>Dr.8rӜNcMQA yC5 Acܟ,\ۂv{@&"ԠͱS%v~Ma]\9/_qb U`UtiIjՂGPAѬ˲>*3ay ?OjCiEUex-B^XPSw\6 g@3yNPèjCjp*gfsfŗ#x3av@̸kmCL8au|jsُ:t-)zZMX20oS4tpNv1.蛝` `j+3iUM`tx|͢-)Aͫ[M7o Gsv^sxRa9 jX'~ED`<_ޯKۉԆc{hǶ75ũ 5ےb^Է9`p2,gfzgj;{|5ɲElnxKzSaUe_LK8T'16|W!Gbc,Bތcis(#E lȼLo(u"x3f يۜؗVfniP#a;m-䵘___q+09)М6a;qF#)'~vXo~ZKފ1[T$wۤ3nZhҩp6 @:x1oSKf^,puB`P*vSS{|t7ddD3IظÆR;dՀco)'@y:x!mRJTH45NphTݷ3Cmq7mhr!of173v̅noO!3w6mӉ Mゾ %MQIf#G~Mu(+(sћK-7̆k36QA#FN$0IDATۀ/u۲ω7 Y&xތmkX`,ْJŷahZMKM=oqPSo7nkIi4|.0sdvn73tY{u_VU÷z3Vڂ*8<"16>\Q}!ƈsY}s7m^LJz^!ത+9fx&x3RrٸӦX+ iD{"ܬyB\7[LsGb|XtBY|j"̌fl̀֒׷f#7|R&+qD;]QTߦL-)ܢfJjZҷ[H-[h'|0g\pf#mh#pRRmH fGUy-շIݛ!68V(5oQhH͛0]7Іoa'` ?g{3ǃ4oiW6]ȏ'd" Jfݒ7C\m0Ѯh÷ᎀ'Df+e÷0GSmtm6 ̨rތnlߦ(o 4j's잦yG-c!L]WQCVE6IDATxr@FfPYqDMhY WG8I%Ɔݝf,nO|~:ɯxمq6Ky*eqHSnq bgc*<^ich[p̲ɷE[n9p^f80]@kf<ؤk?& Pl0KNl@Y*۶X~1ԉbݥeҙI%4G}H4txBP&?5{J53_V,Z|sM} r{u,3*&@zQu/PI1*D/`K[ԉ^ ZQ^K{L +(f$Α(/cϞ/N@0KD|:SDe0TvYq N40">^{nvwp2SDS;eD|r:cOМڱ'͘S;%D|)!˫N#^vJajPgj/pNϩ">_vr xpK.SD{w6EaxH D%oݣ ۍ oýt<@  Hj'^ Jj'Gڙ!IQR;3D| Jj'GYfp-怗׽Ej'Gv/q¤v1R;3D| ">@N%3Cڙ#袤v2|\rӉڙ!⃠vrD|/u!h 붭뾛M!tjgT+T2EtS;S{Cne2ئ]ڱPDDS;+5?hLNݤiW">#ڙRe7OZ$S;]i 9D| D2ӕvg?PL$ ~G {q艹`wu 9D|p#ǩ);ŕvdH?u\vN-dw*|v-rx݋KyN췶CoY~">xNk 90ūv>L#8L:syK9YWv3_^";S3_">yNt=H)x3S;xD|/uU ">xyqکpgřWfڙJ|K~S;d2gD|4sڙ͙/KGD|-ߚ ^jm~">pi~">piLOXCX +ADro3g3ާ7y[W#߽">H5;">,)sGćŖv^aD|igjN#3_v"R;g">Hj]7#">y[} a0sD|(#sZwH\R>Cj ԽNćv>^wO; gO3">OjSwJR;ig}֑ +SEj'v%|E|ZHd%5D|Ojg&q+3$3_v5GjgęivfJ vAjg^lR;%"~\R;E2{|3ItII$'q+FjROZ߽f9v%|E|2mx~<D|*W::f">IP39OjiR;T|E|ΐAj">D|ڡw+_ (h2, dQrE ~Aw.4|;<('Ó?{ߒQw+R;R;\t/#äWjIw^3_&3_\a ߽">R;̺g{v|E|v|H0(H09_V't|E|vu|E| xaP{zGjY^fg3_]̈"Fji"U{Z߽7|Jp#">R;|Nwo}Gj3!"g$~|vȒ8m%O+CĈϦ{{">R;$Kv|J.r?#3v.HGdgwDF|nF|vX'q/#F3]^2P߽;">R;,8+~gWj ">R;JGjS%{v'(Ri@@ &P}/6MjՎ8a܃{Z,daj I{F|AR޵N%aj){F|Az?۽#>L bL| ej(;xć YwЈS;@v/S;@ʘvwF||[/v1vajH}5L2daj<滜x9BL]:c] BbjrhBٿ:jB`z_+y.d {f+v uz޵s-Lrq-L r#>ijMEYb]hG7qgzvPm~a1ߦQh.ޅ6z O`w:yߣ {;{#0Z .j&K?9vP$#?S;]̈7~b4uvo3'~Zx=DS{wEDqt#ܓ sN3 63aߊI0|tUO-w鮺;=g{vqGyC! /P#{0r^&u"ӽ˞@(BTѱ00zzt|s5]Ν\G'}=}Sg6r5vB}36>sws<&u$:m[:bX7'g"l3p􁺇_>$}niI @oS'ѡs4nCb*^ )3@~9}>~ON`t4Z8buxr4B=O#>rYlhr ؽɱX<)G6$K>n ŕcɑ)<#Gjx%0/^9Rl,;#=4iHgHt 9>4/^9ΤH5q9Ea0 Q 9JF~ u r?tv SrW2n0v '2} 5}rct :bWR]r{}X0ȝ#[W{!.`rsv{wt@ Q뿡tl+=vc v۷}@ڇrڇNڇNڇNڇNڇNڇNڇNڇNڇNڇNڇNn$ Da^iP RTy>(&D BF\bGcL4Ag:>:>:>:>:>:>:>:>:YT4KCO9$'t=t=iø): UCOs *hVd65j[˴+ٴάeKb'slۦVclu+pvgQN ̟[vhs!ݹ9pܛcO|:,G۔stdL#G5sَ7v0"Urۑ7ee7q|Y{)ѓxI\#ynDє?>@h}@;tWve%  SQt2;@6FDLk&JwQ gqch[_}n<&j4L)'9jfW%jqס}nR_PxRVs%_D:nMv+/^z%jq,Q3ϡ}n5*H+Cou 0cJD>oyLYGS”yAsvœ]A'_qܾOsIFy)[0aMb܄i ~ysn`^};w|Cu`s6eAjrXbskM LIv kcn۷E 9:ϰ!}ٔ> ҇]Rn۷=]Wԍ}nߚOTpas߆4}`qܾ;OF>oASK4}!},ï Z}np lqܾ3V;}G--WR%l >^L}nX{(;ugMqݘ =A|m,Ţ;̨sƝL7c]>wPH*ժo7|P`qܾ*Gs}Pvfq1Yjs&ڏN/ ATfx mP[fsP?ي#TᒈM%^Jg}Tr~PCHbS] ye?#A"nۯMYWez.)I}n_$ip?P>x}n y,=#!g< q3nۯl)呪H$kC>}n9Td1H Rv+.r!s߃2$:]x&2ܔ;>_SQ WCR9@sۗ/dOF8O$|Oki#Q($ {$`\pa]nۯ5VP0;jamnۯ[+b#9db >}7dɨ7^B)u!js_:IBE¼ 1c~?}n_w j AO@P5e_D[E>Ĵg|7GqS9AL_(SrڐĴIM !es: dT4qtޝ DaH',A"\\GB-Kӷ*mT|^f ?~ g?aғ5ת*v)gQ籛 Z"%~qw8U"ۖPd)embQRD& cX|O >/g?=OJ;,>>/j e/zOb@XJނBNJ5^j۞_}_DER^=4DJvgo/% ЫH٦{dl>_Cs+ޔAmez])zWl_j9&8p /I?^[B2@\8aVl?m9j;-ʼnzl߆AUBRq jؾ Oway4$7P{7P{b6l?um 8Rքymd1g5ؾ OׅZXKK~:پOAk%A7aZ??Xq {oS-<#ewyUh »yK2Jؾ Obe|M}֍So{xu;zhپ Ow[ٲ4V훰yfJ,7ؾOCC ٮX֜[y+(]KFïI䓛@4Ch]} 6Sڻ О85 ۷a]C)[Jĩ(-ؾ ?ZQ`נ46Pپ ? nm5dlsۗ u9*G>% J qk*wOQooũoN}tq.Kqj ko[@iq!@Cmy/Px:szЪ}^ ZUϺ:zzbyr=КEKЊ_ oX&΅tly8T9gy߇V2}y}q'Ak~Ak4L߼3ژ<ۗZ=o޽ aGOR 4PJτI*!@-~ڦIvkA@U;Nܙ=+Gy.To߷oU՜mbVU4!U}߾jl+AʞQ$oFodԩlmBegGۏLW2(*}_PYh'ў(GQUo+@e;7ۿݟl?uW*~Z}?ۿki3llz ehR]ݷ+ÆTrgٜBHu;kR̯f@ʾxbO{bﴰY o[yrB>tv'ok߾=,@Uc݊DeQhH|j R;{8};u|η+&,/L) pu+yxBͧהEƔ8$wZ:xcKob%ķ~#`nj̝[8#D(%w 5a셪Z|@1F+05T')% @H)qo'r. #)_zGl i>T5縚6 {$M\[|O(W{*G !eq-=GMiR~%گQGʷ Kk}> PΔvj_ga/[݁s#GH) ~5sqDϸǀ.?(W}t6/2!.@iSj?~UNS=ޑ_7"P0}hƾʴK ۉbO9lZ-)SbW)|i@ujֿ@w o)̡b@ֵ)5}i?P]O/3 WBu6+R~u+&Г|@%Ԑa&PegشSn&SQo^a c5;ٙr,ig԰oRbiBՔZs.ԭ%{aOY÷_y!ʮ5zayKh>W06e ~OR|!R(rTHM%K#dF!r~UouhAdHH];۽Sʵ?аUu n @=k!Zг8UozcF 5A>FFM>=c)s~ۿ~Kf^NR+hb^@"@4o[ʽW~C9r*6M#d&95j[÷_:&1j\P06>0On_4p55yodr4CWC-^+zFܩZ-@#YC\|cYXk-7V-Lil>+{'?]Q0.~vZ]iM;sS0ެ{aVlwWdK3r~SZCGҞl{ yFcCבVp8F*_1 fг]&ot|Un?5ĉ.W}lXWhU5|oO,[3ԏ͏sKۯ|ҿc#E_0Lۯ|h\}=1mRje053lxv5}M Y:L[>o6 ci0)gزq+̲r76OaO߄ |>z,Dz +: C-oC!ʾ& a'/AAYmBDM2`20yg*sE&$C_ $e$PW}W]e:kK~¦K$$H~ʞ8~Ri6qH(# /{PW|'5' ŏ0|e>H`<*iD"cɊ jcx{rH"}HLگt^CzFG$ OTn>r`Kz >{o~g?#c` }ܤ C_1M襯a u -j#+|qz]/%Qנ}1Y6h+a~=¤9)b+H!oĚ~=:6,qWJ>B%ۈj.#2'@X%t6b{:^Qצ}5,ɨ1b/Ft+!ӛk>0mRqцuHVkRcoRת}mgN>kETv yېʓxjfSS)J!}dtͤRDR׮} ?\ i,w}Nx8JCJnkKuگa&ݧrf-|飂EgZAK׊Q{M7IJrB[!;#VrQjrfC%DG7,e/+*(4wZ(L_sԺ͝kdV'<OÓ><OÓ><OÓ><OÓ><OÓ><OÓ><OÓO'}xr܇'}xr܇'}xr܇'}xr܇'}xr܇'}xr܇'}xr܇'ثՄa0W4|, hkXMuw;V;rH<q^gkmY'N9eio8Rʥ}z0I>l!K/f,bR)I,ޟdJk Rr77|.HnUZ/FeV&SpTY̐ rGifg}Rg̴ch:~ hF8Kd&'F 9ZVi-z"o|昖M8uB'J|5!CFN8d$ 'ӇAm$֮mVw"+y@qBqBqBqBqBqBqBqBqB_Ӂ A.}xr܇'}xr܇'}xr܇'}xrb׎mb V؁HAWܑE<7nM>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>dZcmj ͫ-66[hsWK>6{hsVK{m޵N۟@ f}=^|w?K0G N$,I&@LӢ-HѻYq[='*wxُ|ͳo̭nu:Z>hn_S?V̭.+@?.`_Y8s]Obzk/(߳[Ma{3w]OUFWaxWpa-ma߭'{ziM yd*(ٷg05OU>Zzy?|0MÇM:exk<`1 [2[c_k4͌e/}__ߙ('MtҀjO&S#;_k)M0a55_@Ƹk_ֻ+05 iDfudآ/31;)h65"XAn|2*A~@!o_Chz6 eV)U U,6d9L'?/A܏}ӿC.o`6jzxǤMecVrJڠ9yPx՟}/*vg@ew tx>قig ٷg,4俀} b'qN=Q>k9q9$ψ3y/h{П)BC nzGFrٟRfL:t<>pgPk҇cH}OrB+SċrO<_rjɇk_: 6 Ն~ +$5MP szc/Gym_J<׏{̨gU)d1)"G8Y MO-"l[# Pp\A& ~h0 ]+2dAQs~% ߚbG"Ot}E=3 yz|'9akԶ4?$ \@ QrUՂ(EoľĿ1i "-o&ϕAfQ mpo~)*-=Yi\풀EmK.1/Y1;un6KNZ>#&}\~kf}^Q>P7ݹ_>edǺԍ͸U ee7w~e)OIgSfw?e"m$Wݹiz5bEHi2wMfAT%}/#5"*5]>ʾ}1|I@ig+j\~6@O{zqo)y6iddJ/d9F$#:q.2&^Lբ &of:JvF}1s78!"{tQWs_VuP}iMoc~@sR0p4=PE4"^>{ȒW2,cJ6} #5ek3W?тAŽGFӨiZmO+uD\߄28q+֤EN&c߯x#ɄʠmQs-Y|f5s/t[GfAv^C{TݟuA *-fьtޮlz%"ꟇPLԃg&: k֧3U>}oػަa(*Ghe@ @ qɳ%D$ZZѭ U\,]uI{wٔu-Mg74ɝ$^!\}4Z~ME0ߡ^gFM[#Wvd=Trh_`jgڃylSe6En>)~<YX:܎ĹJiws؏*e6"}GMsd=kG[#W& U%vNɴnsszLker@ooiV۬2Sv46tÂDP*@ko7ʍ_A&v&F,ziwC0{2FJf3d0<)kqYR2I|^Juܹ<3ze/B4J(C*3gA[VO3x[&@jsǾ-½}G,8=@:=ScV<CggcWLOYr%IR]UE&%wkRxӫb]emC],9 -v>m-f]js.|u`/E{T9rGA,)AF*.6Av!ޤ3Y<,"<Lΐgy "!S!Qv' \E&M(r "YPiLvC"L*崅4\߃C_)3*0ljBS*uAlv["OE/W[X#"qk}X"!Ľ|#O..#!=@N{`"8BlY?"!Vfc{ 7\qaœv.|tz>"!fׇ[>D~ q {n{>i~B8D^kN@'1AOaN~!SX^!z6esS+lsKAW{Q?nL4n̝WpW P\`7n|ƅ b=;{;?\.J.ul.%h Neb86RWؖKP_T}w[T09\۫*ӺW3\oj- SWB2mY%avZJ砨mq}J#m=|H.m]]ph+K>jzcq{/ù/_^4KqxWWdc^Gb1S6qs|fxTMԈmS RW66Kuk6WҳhH_|5qa?<jV Lo^ຊ;#+^{QkJL"+HsPEIJ>.?3ptק`%>#p^oH_ػ( ÿ:ihYVPZ"<$+ :h+ط],sO]㳋t )1gC&t@) ~e?آcJ||YNM/QxOG%SS/t 1^ 3m}30%">ϋi nu-"C5"|^"v^mWGw/!*鴿3EͧɌ^H=mN)1ECwɅG̗^|.JjǬ3E)VErdw/ Nə)1Ňv쩟z߽&ԧ!]g?{9&nM/ v&׾1ED}^^L$p0仗 Nէ/B}lDY.]x 8H9#LoAީO]">(^">(Q-4kn3_{w'D|PS;5D|P7O]">F;uک ^/ ">M(zR;uD||/SGibMA O]穝*">C~{OA|Gjg_D|57NU^">S ">Tov*">ȑS7NgMj">HOeO]">pH><Ԏ_D|^oN &,yMć?R;y 1nT EQ(i( l ֒/RD?Ic]Xz}!Owo^KćO] vD||9O 7 R;0{ӧ%v-K휈pU֧Ι}.MpWء7s"IS;G">!R;gA߽">]JMćOp+^R;Wp+s7Y^D|~-RR;!b+0vAj3_߽W x} Ⳍ">x}"Fקn3">+xv:W+ӓO6D|V*J&ЗO'P">q?|!e;OO]aD|2ԧv|#SOݑʿ{E|J%3Xקd">SJ'3RoqR;)D|FJYjeR;qD|(Hħ/div+|뻷Wj'OKR;K'XWjg fOR;k4R>EħO]mD|:(O|H?{wGEQtR+eH-H_e j)UCC-W~+3+R;3R">;$-uviЗAħURWjvR;D g+Co9">K]D|YOgCRWjfIK]D|Z%J S䀗t+O^D|%J *i+Oc-?AħQ.">mxviu+OR;쐔v6IK]iu+  R;"sF.o+WjD|6=-u$%h+;D|6H퀈ЩK] Z)_Jpϳ-D|$-u|ЧuRWjD|xvI'# 3妌8#>R;tbORz1Qħ/Cw|ϭ{xv^K]z)?ڡ[^zځ#>R;0cħ/ ">R;>sԕa,SRWjєG|?RHjAG|_ۿ[JY2Sc;_jG|e;֥ؕc+?ycڡXHPNxg,u(<ⓞEG|rڡObx-<ԍ.G|ڡO6R;7 : !C3vh(<Oj#>,ui+<Fj#>1v >@jRD|LjD|Hj2E|LjrE|6ԅU">&Y#>$#>"M׽R;0?ځE|v` S;0##>R;1#-#>xcGj:F|vc/4<ځځ.c ZE|v`YځuG|z#>R;AوlT5c [HE|v`g">R;:^[ϩ.#>R;eT5#E+s>ڻ0T"*ltm *)s8aGE|v`D|v`^E|v OcR;LjDځ">R;M]S[tЗځl= A7?|g@Š1pgBwW;avWx_7aRҤ(mVu+Ou IENDB`gohugoio-hugo-6abdaca/docs/static/img/hugoSM.png000066400000000000000000000035151507671574500220450ustar00rootroot00000000000000PNG  IHDRkXT`PLTEe5T{:=$xٝN/܈gݯ4.x[b}tRNS@fIDATx^YAeK3̇˜YqGdu!2],jߵ^A7P-Kw˵k_t)p ~GK/)z %SYf ?c v/]UYǾ::7i@oiݽ7:K}2^>Y~a5vo_ں7ZeMuݛɦ5d)s}o iL*H̞ F^?x PK"C|€>gݛB|JHM|?p?NCy?{0,&D&@Hi?6|W)^b|T\ra(Gh Kߒ]v< ;K3zʽ2P2zj0-ɎW3{3"zG2dee|}(أ_} ``ر'їIi^C+褡<x/C [یVf̽30<~_{?յU^NO{cM/?M #Felnf9@(˓b/GƁEyK %*K-/ʾ+$so{ Vqh% pW_{JwxZT~4 >,@S l@uY)l@r>% dYFIToн˫V@e޾ݗo)jIk2 |=$|m.]Y ٨ $@7MՖԃpd: |u< /ƙqy; 3noϣ)οݔXbWr֙@+ 8Wά$Φ3+n1,3zs%~)v^ 3@(韙X(w ?4 Iar=m?\M}Q[d~橬7ߛ{Y'SyFc^? {{{}揞QP{ =\Խ>}e{^? |Pܽ^|?+{(7Y'1xﱄIENDB`gohugoio-hugo-6abdaca/docs/static/manifest.json000066400000000000000000000021651507671574500220620ustar00rootroot00000000000000{ "name": "Hugo", "short_name": "Hugo", "icons": [ { "src": "/android-chrome-36x36.png", "sizes": "36x36", "type": "image/png" }, { "src": "/android-chrome-48x48.png", "sizes": "48x48", "type": "image/png" }, { "src": "/android-chrome-72x72.png", "sizes": "72x72", "type": "image/png" }, { "src": "/android-chrome-96x96.png", "sizes": "96x96", "type": "image/png" }, { "src": "/android-chrome-144x144.png", "sizes": "144x144", "type": "image/png" }, { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/android-chrome-256x256.png", "sizes": "256x256", "type": "image/png" } ], "start_url": "./?utm_source=web_app_manifest", "theme_color": "#0A1922", "background_color": "#FFF", "display": "standalone" } gohugoio-hugo-6abdaca/docs/static/mstile-144x144.png000066400000000000000000000141211507671574500223060ustar00rootroot00000000000000PNG  IHDRFgAMA a cHRMz&u0`:pQ<bKGDtIME]IDATx{\U?{z{{fz2 K]pр@T| BZ,*VK R<((* BLLwO߷?'F ff2t9Xcmdyq^ Vh\->͇<~ 䙀П D,嫟%k#߫vϽ*d[^o ȗy@ D E᚝<1t+Or8e؆X bDNmOĮ(cA ^ =ߎv u1v4DkcK]\6,(}oӽ87:m (6h>Pk@5խ)J7cݞNr .976Ι- ͐OUhlS;ddy-X ;ڙKeS[Per|jҞ4UBR*{I0Ƽξ- NJ]U  zJL*>N&Qo(B~[GI߹Nϩ~8Q2¾юB"=+DDGު7[)%|8LT&$DEx~39h}I W1jO^;> ^JrAC%>@}9-R 96Fn#H@>T)l=7*V k Kv~~UڶHm:`H60nѸQYگJ@>(oǁ D 0c?*BШIO$I'T+m*4P\uA/sp]PvDp8F#Dcx|2MoovsC@ۃ^h4Zs`F$8҇k {xվ4G384Llhie,nACCܮ]q ?cPM9R~V'=>A[&wo9Mt_:pT!e0ёa<>rC|`f@JGG`;U{9iRT² Q2;a:V]YH+TeW,GbC9mJxM6 3Y=xr@#HZ+{3[-5wO ]JcK SGَgmg3i1+mK%Hlh0e_kOv/3սNSJ4!LHǩJX^ $6bVEK/s#Na;O*x8Dbw:Z<ғObp$675:G#RbZ<@E&,9ke/'MԾMYuhBYG^@xXܤ hv![gtD 6C˩hBYXQG;>e2$mak]3*70QN%N#%&EH'Ut*숀$PEwppsl . r`nDeti[<֪1X<^(Hu h SG&íE1J4u7D(8Wc1MCA.UH p8[EVA>p(s~ ZŔh_-,La ,La ,La ,La ,La ,La ,LB 7%N}*Zw٣Pwfht{sP , /󄍣! A. Vma K@da K@da K@da K@da K@XVܹ6"VP BvMÉnzNX70^ ak}ԁ%AkewxkuY`&da K@da K@da K@da K@da K@da K@da K@da K@da K@PR29okj:ͦYZL!h6 iBabz B-#WfTb[P/ zC'l*o^#g$G-u!uľ3YtB ɱ8ZE#}!Aa)%|cғk:vg4$dR> a\n%N#jTb zGV), cy@ШwdHlP$ᰄ! 24xJ3kw9j{32 rd \,dSi4Y0 ,(a~idmo&sQ@7?zW]&6R@|&KP$  h6rH* L: Quףwŏ#z T hMRq^xO$^M/[maOh%g"7:Oϖi^? zW>+>%'%RAH/h{MfbïFH.(n2``4Kˌ7ɦ'I Eʂd@CXG |bz&_\Y,{秀At$ͦ a5Y]I Yt. YSo(KÐs9cq,FSA3|kxL[̣_i:θ760J/ /~.$jL2 L7Jr  T'Ïpmn=?ӣ.u\ ,HeH0N Q39$Z(@H*m5ヘoM;v`;tϝl1U48tA1/4\n7b6|gғؽĄU7|~5Ѫ)k}+''4?KGe|d δ!9'7TYAB D@Dß箲vq ;_.aD*J$PnT+QWk?.uW}R]7B'%.>jz[Q42m0Lrۮu;nW>Nͬu =-wF@&4?`p$?_ȡXB.4T瀆ߝ)M鉋P:=W;X +|87 ҥmn -r~(ɥ&5|D}^̶bGIk A7,3R*r$2 q 4۶h'zB&KXpps~$B6ǁ{H%:jLO(JI gg؏.r~޶EZe#3NHJg]"Pޜ|2@/>8:oj m7!q:hAVgrbtbjZ8RKԷe)|7W~Pɜna/:?  Whem[$i8=Vگ !hT09DoˮD }{g;sSV[q +]0r FwH 5F "h>H;-/ $dYT4TG^ΚVe'0x: jd`0BdxwH;-+ &'R 70<-pzѳxcc_]BQ־DzFeL)rYo!A~Vs'w/Fp#A_mcPPdS啗 $ͷ!(f^hF;[ GUn#00pn AT"OKO*-cdms{cy%)nc( =8IRY6*utlzFXP4 -v![&~61/7jk8/5Jmh P:hTqu%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/mstile-150x150.png000066400000000000000000000136041507671574500223050ustar00rootroot00000000000000PNG  IHDRxgAMA a cHRMz&u0`:pQ<bKGDtIME]%IDATxidesc_2323"(BKiez[= `+T)jn[g>ݧgsڞv-60H b`dUFDFFƒg^d d䍌}xGUܼϓz """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""e}q|87D ]iW)|)}1(8C=|/`.sW9Kw)8z%\ɹ;.bOw OTi\z |[yжePp/?9@^`j^g0]@s H)8z̝\N{U~bk9Y"YzW/u{l9 w&/ rUߛ-vu &WyGԏs[cGwZktm`cU7d(te})8;؝FA{[o=48tsMs C];gz y7{<dRH{)8wra[Kw֬~>K7}s$"ngi Ӈsyb|mya0uAL=|F뛘cogt> bqx?C#K%9z ۷M(84=:cCI`i0iu %J1J sTJv>I%Cӯ哿.cdMȗؗLV?U|u % 2<:Br|P8 >P]Z"35Cvfz֎P9p3]\icoE s0ؐY,>!Rqb}q1'b)9ͦq0U{_9vsI(868? {؄:1X# g'3鲐gvrRakP_i w.Q?|/o}}RplPۣ QG#$JƓCV'7;Gfzj׷j4L3?橕6Ppl0ĿzlX#IRㄣdưT075lzގ˗aơ 2w=iBACe0q^b#^wj #qcJP`vrBn[Si~c3{X]H+]7y);we,6َ:F4'm>oɌhf\,a0s5_Ҽ&~QnWz)8^4#+,ю۫p(C#CƓCZ#73KfzR[neu%Mvgp;ݗ&0}^Ҏ6qO"$5>F$]˒Z|MMh4Ҿn%'bY@{WD^#?u.6x'}F%0n7cb~) 4Zz Ooj}z(8:(L"WqaavwXTzDrxM|Sh4gRs۩ TPBn>J4J gğ axlwoT+Y3Ԫv\Ҹvmɹns+Sp;*6L5}ؠY,>*7GXdnr|6G=*p"Kf.u{[f/J "{7M1IJl:ZrNNQ,n{]/.S86RpB">,4m%.$&QC^'7!35M\n &M><6WݢY 6*Oć^Mv$ɱo~{.gNMJzfzl]`P<:~Ş /}h|j=a.{_ xh0>Ѵտ. X|jl_/,2ҾަşpX!z}Yx]m>R[i`xQNCqa-Gr~oZc,r̝XԾb#~\ <u_8wC#ޱgP*o5V`r>k9C;>#pe_83)8<8y0ٵ IymF Ž%]mγ$)@,`睾tF0ԟqM|`pԶ4}}nWf<@ĢtaNLRϷ޾n:zTSpxz4#ma|'ĵX=\O ǘf;1EXn8e`hSA8Q`xe@%GGs,=yQCB0ӷ:4=Jqv#`$D1zht'h;ԅ.|˝"2L!"-SpH"2L!"-SpH"2L!"-SpHE>µˏ1hˏKh]~n G 9 ź=B G!Co_"2L!"-SpH"2L!"-SpH"2| &pH_(8z~C\h;?[UzW4,nPkv{A ^q2+ZeGEe iCDZ)8De iCDZ)8De iCDZ)8De iCDZ)8:bv4T%fOL2?AQpx?nֵdgf).,0<6(PP*cUdgfNP]6`.Uz c$ gc F|64bkmaqmmt{8Ã~kO̮V^g0`H%#q|y:+%Sr󸮋YU 3ǻ=LQ>>}u g0Xגdyq *r6FC\H@(6P-8*27Pw!_]Jc9x[92S3,U*k^a<v.U<}|dWП[yаX1I304v8QVwP0SY;H!^k\ Se4]h nBn)Jŵ14|09Do,G|}" mSTc`hԶqb}}]pmk!`Xb-W7ik܉)r4M}f N*߼ޡhȐ`\<=% 2<:BrlP$P,&;3GVP{\>0:x1E;c.vBcQRc ?@Q3?anjze?8^qsݏ#(8A~?BpBZpx?#L8 cp]<'( CShP;#N~>:Qpt쎏3p~>?ؠY,>Dr8Xlsl/"l4QǨ5߫88Ekob)8:h]`vXO}4K0bxl(phㆇ1ԖdffNRMIbѼvϽ0{f~P2w1g_ ٠XXdqqBۍbejn.Gdq=2 `f._o{_3hAZqt\8ov?1Xeq)v1J ܯi wr};m .;3|zX?$q"(on Ri3uu irq=F%|AoRplwS,}vXߍI1<;iM<;3Kfzjea-v{t1hs.{NRF;qpvx- ! /߾m7ch.L#7;G*c$ĽiGw ?yY 86\:S_%̫lsv"s,mh7%*S;C~n}vW ng =Bۆ۷`㣄#1,+dQN1w\u6≂c"{v܏spu%L1J־&]i/O4po"9<ё5Sc?M??l0; z<^8X 1a ,d9>q U6q|~_>nfM@+MmK08Wb)l[L%jaksX(86;=2JQWgm0bh$E"9L ^dεM`,p5n{3u{.u Mb1{x8wXk}\:M+_7mSapngY|~Z/' v<]= TVor -n'!FhkW@ڡ_Cݞ#it'(gxj2O|>H{vt ,:?qgо iмGow}#ڌiű}=?yF֣"`MoX|EVG78DM!W9s~IӴViQM(8zW a0uQ|X&G,χXU]ھ|sej!&OMh>"2x^>?+~V,5pK6sRp^sV^Fi{Wҡџ~ liX ;Q%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/mstile-310x310.png000066400000000000000000000311251507671574500222770ustar00rootroot00000000000000PNG  IHDR''CPgAMA a cHRMz&u0`:pQ<bKGDtIME]0IDATxy|e}}oڤMe" 0 *ȸwd+eq gQqw\Fq@EPE6itKf=㜂Wp;\ I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$IYv#ثN~f=SʔV>&vz=̤]p"i\ >3K| 2TD@uh:)|;;cG%r"-dDZ_ZzSYy 'PGPK_s㺯\ IqDZqg~zg]%O-RfttV=ܽ⾁#IpDZ`N}ow-L!&͌\+u5Iڽ 'dV4G4xW =yJiWP }k/ k'ӮIa8>Il""!&ZZO|i$iNy4?q2OT<.-Գ/nIIp"CaKN-㍓lvݕ24_>r8$z֑}X8/}9,s(Σkɇb66a a7H)HGxgy1r|v/'ܾ|Gi$ipDN>}:>4A~y&PͪD2{ųy^x;[ҮMaҼtvΑoڗ(vPZtԒ;喑ظr"1ȬW@ %L`*JBR"=_c1xSFZ LsO?m$w Z=5LweN9tMFj_3L|:3""O0g_ܟvM6Écا X΄dIq+ݲDDÿg.矽ӮI#3H׾ɬ8@A`eQo-d!soX{)|i$w7sܡ/)-L]*S""&ɒ%[X(T*P&羙:63q'i#2H8?Mo q|1Z;i_EsK3,QT$IBPdl֑d'7\/. ] É}ǼiqV/Ox˔VzVQGPq Iؖ RB %u⾋?5_k:ÉŪs :lJʔgI2:gPZrȖa353E\iNM1 qė~vMBBZ ^O|O;glɴyX%Jd,]=,[FM]ݣ %U )i׳ipbH&6W}_]-zp"FEqWyfb[>y:;^Kck+$e(?U8(fbtunBm$TzrdGײ+Wi%-$yi?33Q&W+ٱ}uuVEi7fb('n†LLnr m4z/Pxy(4|=eru,^EK<-GS*ؼa m y'_ߴ07}yd]u/q{B\-)Q"br߽i$kpv$!ch[ ɉJMmT'q(_y,(R ci+4='Α_M;J)w3TZYGS{k )V+ad|duV~R,⍷3x3ҮKoBgJsxKOig1F+iogy*= @Vu2(ٺq%" J~u{WӮIOº9lpy-=w|<%rw)\nvJj?J1g6mP9eۘw ӮG 'r.rgLm9ӱ55JR3?֍(rS/?*nO&i.3HQ{G~ g%$ˊ>'LBBss+=+^BZ}%Ueۖ׮csGVna˯0(._Ag= h:@%ՒG7лJړƹZ/($]231Ep~ǪAZhx5d瞻ҮKk¹8C f$%Jdj*#{Gax2 P*9 ?em_&7W>횤p" d94qBk:=$eJDĴWG7̯PPՐ29ulJBbjĿw??ܾ1Ѕvq(+gϳ2D{VIhjlgems䱊cHF7oapm?۫ )Py^Oqb5I2HӼG 1$Lm%XM\߫%R.48(((1uP|uܽ|i$(+WJk8bߗb+ǘCleQ,_F~a<4L1)ڏJ}n6~xδkBb88 {E38^vzVԚP?:~(Z2Ԑ|[>z7|+8v]RBJy)'r{G|bq4wue"(JLLRJٴLL9  m4M~w[Ui#-TM>I?k f.a)ֲeKԸ3[=BM7q`|q&)P9z6 DASCngCse?ɴvWN ^x|3u\ u {A]9w¯czr|1QPLy "zroT r|EYK}s+%i6NmF7o(,1uԌOy[ӮK ݯɾ#_sSGz5kZYΎʕh_I۲YXw𺺥!K1x#ANb<GΗ)SgM"IF:wQSczbB)~r%/'qȱEJ7޴vp61:VۙB9_L6ٳ%5Wj?J~r lX.Q&^-~w\}{5IDs^u<Ŏ|`'p`Z $n q Qۺ5Q92nݚv]cڽ\zT>_y{7K:2 Ց*J8$ad(P|usћKi#=]Y_i^qb_IB\MеǑ? Azr)zy/ҮIa]Q#xy2g5ݧmc:Z(N&йd1KQ`(!efblH))B]v:sM ' xJ=X%ЖǕ[YGs{[ nkQGF\϶,$@Y2_䗟 7N]ׄvp1/z)<1uH!ྒFѱd1Q&GYkP(ޕPM.3w{ Sm N~LTbF395AV@ ZJ~[v=# ꑀ[8oM=ٳ3gD\6W9l)oKpb8ʳE~?l+@&ȷ+8b1g})`οOխL7q RLM(^x 矛v-ɦ]P?͑9g3K^K]Suڣ]-s2^=^k`$?7I t{)%M0~QH|NxRZ7I>`RZUf}*O ._kq7̔xv y.ၐRini\$RZw>'<3z2({^" O)v-;$$-:Vڋ؟Em^He('.dgŪQDHr'r>Z?g8Q0א=4wL>;zcT*1]#P;!gpӮEsa 3Yq.>>U{RS[p0Uzjjk]'$;xdƙ晬~y` $Нf#Kۢ) WJ+T1y kؖل iMN'o7\K-kiqM͎֕jHi[EK{;6 2~34P ' DI㛖)3tuݻ\Cc?,R8dE]XϖaJFr JpP%2e"ijk}7@m\}YE.֮cld> eBpeNCC#}t.'pVOS[ `r2Ql2h(S&e>/[J&W9_JĄT>QDgO7mQ(MfD B2MMgo[[*+%(DխL6KϞ{wq ?vloibS8 _@H}K3{=a?"k 8}&jR\C+ٛl j4[ ',[FC{DsWDC{ KAiN4o%$C4ttSW[=É2e:;V",el}-mh3hފihUG{~5oQLmCs/5$PPOy'\RBB&%bWN4$ QzjGD$p"Ib8$IA1HN$IRP '$)(IÉ$I D$p"Ib8$IA1HN$IRP '$)(IÉ$I D$p"Ib8$IA1HN$IRP '$)(IÉ$I D$p"Ib8$IA1Hd.@,K"l/@}d3N%SEyhJ IDr18*$Qk$i>3HN$IRP '$)(IÉ$I D$p"Ib8$IA1HN$IRP '$)(IÉ$I D$p"Ib8$IA1HN$IRP '$)(IÉ$I J6$ͲB8 %y+Nn[.&f.NԽMӮDnb8b2N(]p"-q_sMP%1k$i>3HN$IRP '$)(IÉ$I D$p"Ib8$IA1HN$IRP '$)(IÉ$I D$p"Ib8$IA1HN$IRP '$)(IÉ$I D$p"Ib8$IA1HN$IRP '$)(IÉ$I D$p"Ib8$IA1HN$IRP '$)([I DiW""@RlKDRDDXT,a:Q*(D~5N4o)3m;D5OD۶Sv%Ҭ2hJHݲ\|T> ~5N4oeȰmdm9.31m##dȤ]4ck^+%%_]QQJJiW#:É浈 # [wQqjXv-oLƐ#!a _3:Z i ;$IX{=LOK&rfY) ) `hÉ nJ^:RP1I֡!095Ah!1hȐajj︋CYGS{[eŐ41D0>2~'s NVѭoF%t/_Fޭ~-C2RHLƵ-X-X12Ãݲ%˖LJnP<OZpPL3@Qu߽lݸ}uuVgKգYǕiÛ\v"4pf\R ' BxExbKQ5LLswж^Z[GѮELmc[HHR])I2wg~{ ԽmR^Ύ$F6oRl z 33 }/wVF6o""z*-92l`ڃ6I;NpdgҮ*(R~Կr\&LiczT*WRKv+xyuHp`|oi찣%?3ڻO-yo~N6oOʺ&?3ML0rd_ƛҮEsa5Eʷt2ؾ}z;~'U3J ®z2'&;پ}[hp8 EʷoI¹R$=twJ8;z6mΛ{X(>R.(>ŏ㍪bȆ{Λ~Ɔ&zV޵QAuȦ gbr<Ⱦh$G7nͩ|᪴kvVXW(Sx}-JO^ɯ?nߚv]cƴ+i'p5}wOp@BB$U355-f7Փ܎Ru|~j { NBeZ#vU~of9++Lz9Aӧ(Z쎭\=Kg q6sGd2E61ܿTp*2r OҮIºҤa%5eM{sBpSZYGkgg*t' q m~ǷJ"Ol-|v]Ү''qH)<퇰uL6wʔi[}77y'MS8S\͕|DѰ&}J~}7i8횤]py냜xx9N@V'ʔfrt-fqRjjdHm216l`ӆ!|$CL5LƏ7]4[ '>I'˾5;tBp(t/拾{1Qf'Gke2$[62nº-F@-5Lϸw]4º Yr(+>ȉ]y ?kii{E-/؏kUGo:~m#C rd~ɴkvÉWqL T<؏ұd1={mleWx`kغqc}%fco>\.횤p ~yJ0M!Q;N䲵,^Cײ|Qv^4gA6$_ NLD5Ԑх_]Li7xy^ yi_D^wQ%o$儑Z;T#rd)Q]մ*fA[(ty24V^A1n$y©fV&>~mci$p"Ucy1S'C<)S&e^Lw_/zQ\$?9P[6RJJAhm_Oi$p"=Y3^N?fbkꪣk ;TCIP`0.LQKFr|k\4횤ЄuJ8Uq+a95(2 -mQgBcHF7map]?۫\ k$!{nbݚp헯v,u*Q&[C;wvҽ|9 cZ29ull_ILD; cqϿ}>c)횤NGls 8Խd|<2e,]=,]V?CJ5TFipb\(I Q#SnB~É>{)O>o(@?Jm={\(;Fg2$[72n@J#LvҮIKº9횤p"=NÞή%i8ĭD\6=t.%˅R83l0H'`(SG1|i$ui/~߱yu?M!rŽ~Fzѱ 2qx(J̖ Ja;_zHExW4>-yoXF?P\R <؏AϊpF9?2ub_ TNԒ^G>} wmK&i>1H4<=}tzB&)PD:,gy[83ՑÔR[8/\ ]4NYqw cg(Mf?9y)L!&[SLD-5ԒRgi$gay oSd(M t襽 b4K[= #63vR_qߚOq͕7^4τw'橓8NS_D6g KQSWzvf=) Aԓc W~\/춴É59aM04(zzz^L21bC`zf*-Z4R?0횤*>ugpԫaYeX>M!2LR߽EQIGSUj6WFΏPWڛXwe\w55v]B}PZgu[lm*(]XKCScx0To)2  uf J"":h5k?u~'>vM 'RPO9@!NJHDYZinm&W_O6[)K䧦>cb*%]nh ߿1z$=p"83}`b(;6{*ያ[8LRukDhfn>8\ʹkºsHz |:Gn?>C;O) v6ThM;3¼Hz 9h8=&kҮg.j!'×k?mn^v=:É4G\G?'SC|TWCO~mkvMÉ4˒8ǾԒ7ԦٴQ ;;/ ^u' 'o>3'wle~F?q ?:vMvDNZJ+)yfw7~yi#3H{gQ)9E!Q%r;"~kNyɬ'>08+yv8sO K\{oXS%0 *im`_\uʝ4Tok(1-ԏ0K 706r"SgrA/gQ Ŵ%j2\t)Wߜv=fD>ʋ_B>w!\7JDhp~ߝ6ݴk4 'p5GqYtbBĕYreWsduI}ߟ$B`3y;`#Lօz'"߳K~i$i!VZ@cp[z_ԒݻH9R,E 9 |ؼ-$^ܓ$f}tL0ĴfkHm5gk:fDZNWsěV fQYbt;7XtN$"Zf{r:_5dvw|VOrH Dq '<,$GGD4HgmkkÉ֜Qx,UCf4]QCҟ~Ɲ_u_#v,i^񴎤q2q~i90OdintK>QMl߽- WN$M1gRqfvQK6fە.w-")|Igysfsæ?b7Jԓ#K7ͷvÉV֝/~*+_%oBh~y""Pt篹Wpok$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$Iz}v'%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`gohugoio-hugo-6abdaca/docs/static/safari-pinned-tab.svg000066400000000000000000000021301507671574500233560ustar00rootroot00000000000000 Created by potrace 1.11, written by Peter Selinger 2001-2013 gohugoio-hugo-6abdaca/docs/static/shared/000077500000000000000000000000001507671574500206235ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/static/shared/examples/000077500000000000000000000000001507671574500224415ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/static/shared/examples/data/000077500000000000000000000000001507671574500233525ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/static/shared/examples/data/books.json000066400000000000000000000117361507671574500253720ustar00rootroot00000000000000[ { "author": "Victor Hugo", "cover": "https://gohugo.io/shared/examples/images/the-hunchback-of-notre-dame.webp", "date": "2024-05-06", "isbn": "978-0140443530", "rating": 4, "summary": "In the vaulted Gothic towers of **Notre-Dame Cathedral** lives Quasimodo, the hunchbacked bellringer. Mocked and shunned for his appearance, he is pitied only by Esmerelda, a beautiful gypsy dancer to whom he becomes completely devoted. Esmerelda, however, has also attracted the attention of the sinister archdeacon Claude Frollo, and when she rejects his lecherous approaches, Frollo hatches a plot to destroy her, that only Quasimodo can prevent. Victor Hugo's sensational, evocative novel brings life to the medieval Paris he loved, and mourns its passing in one of the greatest historical romances of the nineteenth century.", "tags": [ "fiction", "historical" ], "title": "The Hunchback of Notre Dame" }, { "author": "Victor Hugo", "cover": "https://gohugo.io/shared/examples/images/les-misérables.webp", "date": "2022-12-30", "isbn": "978-0451419439", "rating": 5, "summary": "Introducing one of the most **famous characters** in literature, Jean Valjean—the noble peasant imprisoned for stealing a loaf of bread—Les Misérables ranks among the greatest novels of all time. In it, Victor Hugo takes readers deep into the Parisian underworld, immerses them in a battle between good and evil, and carries them to the barricades during the uprising of 1832 with a breathtaking realism that is unsurpassed in modern prose.", "tags": [ "fiction", "historical", "revolution" ], "title": "Les Misérables" }, { "author": "Alexis de Tocqueville", "cover": "https://gohugo.io/shared/examples/images/the-ancien-régime-and-the-revolution.webp", "date": "2023-04-01", "isbn": "978-0141441641", "rating": 3, "summary": "The Ancien Régime and the Revolution is a comparison of **revolutionary France** and the despotic rule it toppled. Alexis de Tocqueville (1805–59) is an objective observer of both periods – providing a merciless critique of the ancien régime, with its venality, oppression and inequality, yet acknowledging the reforms introduced under Louis XVI, and claiming that the post-Revolution state was in many ways as tyrannical as that of the King; its once lofty and egalitarian ideals corrupted and forgotten. Writing in the 1850s, Tocqueville wished to expose the return to despotism he witnessed in his own time under Napoleon III, by illuminating the grand, but ultimately doomed, call to liberty made by the French people in 1789. His eloquent and instructive study raises questions about liberty, nationalism and justice that remain urgent today.", "tags": [ "nonfiction", "revolution" ], "title": "The Ancien Régime and the Revolution" }, { "author": "François Furet", "cover": "https://gohugo.io/shared/examples/images/interpreting-the-french-revolution.webp", "date": "2024-01-12", "isbn": "978-0521280495", "rating": 5, "summary": "The French Revolution is an historical event **unlike any other**. It is more than just a topic of intellectual interest: it has become part of a moral and political heritage. But after two centuries, this central event in French history has usually been thought of in much the same terms as it was by its contemporaries. There have been many accounts of the French Revolution, and though their opinions differ, they have often been commemorative or anniversary interpretations of the original event. The dividing line of revolutionary historiography, in intellectual terms, is therefore not between the right and the left, but between commemorative and conceptual history, as exemplified respectively in the works of Michelet and Tocquevifle. In this book, François Furet analyses how an event like the French Revolution can be conceptualised, and identifies the radically new changes the Revolution produced as well as the continuity it provided, albeit under the appearance of change. This question has become a riddle for the European left, answered neither by Marx nor by the theorists of our own century. In his analysis of the tragic relevance of the Revolution, Furet both refers to contemporary experience and discusses various elements in the work of Alexis de Tocclueville and that of Augustin Cochin, which has never been systematically applied by historians of the Revolution. Furet's book is based on the complementary ideas of these two writers in an attempt to cut through the apparent and misleading clarity of various contradictory views of the Revolution, and to help decipher some of the enigmatic problems of revolutionary ideology. It will be of value to historians of modern Europe and their students; to political, social and economic historians; to sociologists; and to students of political thought.", "tags": [ "nonfiction", "revolution" ], "title": "Interpreting the French Revolution" } ] gohugoio-hugo-6abdaca/docs/static/shared/examples/images/000077500000000000000000000000001507671574500237065ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/static/shared/examples/images/interpreting-the-french-revolution.webp000066400000000000000000000310641507671574500335300ustar00rootroot00000000000000RIFF,2WEBPVP8 2н*^>>I%."']) Mznx|Ρ}Cr?>{F߅.zT?ݧ7^}? / Wǿ~lړw'_\?w>߉ߨx3{s6aOhMK~a:Roн{p4Tҳb>ȉFa摠1hv$=KN]%eY,ᤀm:3dv8riT٦|DGCl=3 u3Ur }ܾ-7n+ZvȮ=Zx&pWp= :-t@JPZjΡwrLa$GpCH˖_xŴ݇QPWʁ0N+T)M7O? `՛n3#! ˕ѐYx52Z[52:GQo fB"Y>ه[=5 e4 #m?0q˰]vX~x( n: aHg 5=w0ŚE6EތKeTe APo@ńz8 HL iP8H>Irzj8.On{.g 6.jH%Thix W>0-ހvV5"˳T > 1+`>פ/%^rGÔ8j'Vo)Y}B/̖uvdM˅°3, k:!QqsieĎ6o*G{nþl@f抍}D6ߨ*nɕN!\p'4XU"f7J&f[kܰJr*7("T=_X{-՘i7E+MV=IH!~s<:%ıwwx9FğgJR%TVrLu;a* t8iX -9oI.g)qc0I%!sU=Ro=U|FstUq#:^)u_@Ρb?lQwQ's^cSnd9¦;񅇷QQږJ% <&VT|fGe˝ÒKdug3M7cI]pkJ)Iu%"7. \2OiHwcG)6P$fB\!,QK‚ #Y%LI51KF:HQۚ~D6*, KIJ] &hT:z:w*qq _K񌛙 ek&?}鄡 D!QEJruWx;: :bU!m)R1:F2Nƒ9XWF^pxľ?~p>\RXHQٶXe!\ H_ΌQMXuv}gUF+R:dK0M$^&1R(z\m:C3.U1YqϼtBy"Y%0{(Z|o(h*\ S/Qa@*6\1\3;J"Fvl3zNF ER1q5u5eBR3rP {UU82Z^f4^34@B?5ۧTK"N!K^KJi\}i[™i_X%&o qVs8U.!߭f *Ezx͈\HnmK`KOLA-囨:Xe8 EJ?5#UlwSa-XLCVe sQ*LrAf țzJ>\=S oo; wA@& L* ӓfxmV'>tުl켧9*vEqF>/q<@btgc{>?i{H4j<rF3rXiG[IJeH;kYTBX[ldTJ‡x2Vab:؋<.%4۱v2臗:L4JU28xAvBx05Hd6hEAXϨSciwWޑˀVC>#Wm`p^+RF: &I~pٓ`\'CoFkz< ѾoPB4,~k0W,F>&9:6K , WE ǯ㋢ȑd`EHJėտ`u>H'Zl;Y#OFoWW1Qs~ezYxnk)81BFHN8E֠n޾]_^46?@YEm6xSԎP`_UǽȂ; N /q+ԝ9\" xd8.D$m.DY e*[ b}I<{I.c?FtWi{[2xn%^Cj']0y7.wp뮸1a>q:BBɦf[N==~л `B}s ɧ׬mp7?@Zn立y&|> Qy!<l5>K*yׅ(@B1>jԷ[*>?q.g0S;&i~jmҨјN 8^Námj#mNp}c^}l5YX4/^b BKDc=wz`aؙ\ɓ)qewṱ IC,͒4^Q !݈r;\#CsۯF4[jϟ>38>WqJ;IH}OLoOˆXxH\̵^Nǔu]ֵ dKeM%KN:#}R<˦1Z1/2dc6y. z[H}&k-H[[Jk3(HPmo`Us9Ş>+0`&u><%ӑJ}kdؖMƖM۵3q]TxɃGX U"̓LS޽j}0[/UgȖ'Pɕnʃ_&mrb6T}%((EB0\ 5g5E߉"(QG'%#22pmivU*̓f r~5W&r/qy XٜɍY'_Hֳz9KRvE~ݭc3;d}zb|;I2F?һ~I:26ǀ*;<^P|;wU%$ DOP&6YL4ZRTu4bPw@N+:&0=$Ki"r$@1U;V׻͋1?'6zZ_@)yi |Xw*rǧwvlעIpkDƭ7~rb #qth&U׀"x|,-K{Sspg"g\:  z< Ł:j47eR!Cy&jZnsMu5G<&*EH1<p&TX siڨ=) O֙%6 i+`ƣ.x\q MFz0vaT[F1!}d8|(%l|] D8Xlsz{#e/B6#)7mo{8> am8["q e.$ V>O3|~wz})A-a5 :H=k8 S,fVi&fՋ%#2сx i\!`**I?*CXxc/@-9_c͡Bx &NlYEWi|d9wW:x$P Ê,7vjF4*EC&rf2Ye%La/`fI"<$yQ` xb++^oj/C~xțud0~׃ȸ O2g?s4B륋^s n^df&+?~)]JSHfk^ㆽYGH"mf<"ZdIޭ׌{9]x.F1+mE_`\v Q~c$+S63UA wNipf2G#G *K}Gf&īȌ{vɚ02 `FF$^|n/}`n>RܓdkFppg򣳳ȘkmeR"POjpdD]Ha~3hjotaIAk=R#a\UZ MmS` 0֔|D%o(`sTa&Fw6t t8_60>,Kd?[+q񹂙`ٵw!I#: ^qs+Jrx~=sǚV=mkMX b'*o+@zV2+pjs"%$_w5T~( v`oڱ9H:GG4GMbSUW) 㮒6\E#&m;OP9A# )pt1h*G/w-ċ3``1 {JVa|ӡ ֯*(Npb}\3\͔ QWO>j\4Z$ M~Ц. "j)\E[ҡZ$t^F$AUI! 0Hd ?F(@[q3ph=3D֐ӡgvcd>:@񽐗'L߭!ڥ"H;_5҃=; +^O!j'siDFe*Fpl4CйU񕖖8ajtCKQՀ836\tmuPP=Ѥ:yiG hE`('&e``f,iMFS-X:qdR{oN@wq%j#bms[UW4DICMT/mE$jNC)u1C]\'uò:IwX/ ,^Д_lZ౔A҉ͅ"VI:QKpցŋ"Qc8Q<?|U#mMIFq-kR'=q[nÕPk@v78=Q=K!v s=]Z߬Wt01:C@< L}m|!%*n=#@]:;+CF$9ẔQ8z{;ڶY7;IZM殚x'"l V(k6L[wM 'ۼ{R{ngxBo+LCݩD`- :gAmQk>it [+8מאTvj4EGSQ=@dah4x[yUuw} Tb8kS%46FQPd}E*]m+.#FGQB.Պ_&0 Qy@Unc7U۹p  =1fJ {GLf{B^wӎKȤj8"Dhj^ 2C.摼x=k/4B F^{%!p[!j>݂,luѐ< p}>քddžt´ *O.Gim^Jl3?;PTw =v;B!({vL0ޟ 5R Rک(K\ح\tfx=E}H~t="VR{k =@<7j%)#unX39{#_?8F"ԔN999Qp\-82!,F p@^ :'YUe FcO8Z[GulLO^c[j?VJirI*H,|U 譟,"l&!(4{wɦ6a13zDީjOڠYSH"`',1Eߖi`P҅$*Cy*O a^uUF%c˯u 9²Sc쵈 [?YIitmXouSNEB'͚b^)-pkgh-T&ovmP=[Wl|+l Ak;z٭''Ϯt}P!sU?zBL'Ll%])c&9x #T/6#a%QKӇ0ά?U[Ԁ#6wH_S=%`ye"+ӯ^XNgXjiTVcJ;/+ڐ/)˶P4.x,91x 43*<~aVVqt396Uw&ZbІ4 OMKmWNT} #℣ ;f0l w)1l= P`X":)3 Iwa=DWVBWg韉~ N?feh6?-%4hړFVJ52ꮍnqL,`` f7Sopu+}DN^&#(qc&O`;rmB*&J<qƀDti&v=- gt_O0/a4~ >V4m6/ Yr,%@i,9?B fpGwiKcf >}ZvrU#:9lD[@=AE aarWHت5+X0uf˹_ ̣@l}=u=T&/1Isۭe<]aU3N !l24ygu2^_HU r9 µJAuM|%1V[^V.";҅wNdS(^&x S J ">W'*^X}@Ηd`}# CЛ~/ɘ 8\R@ 1eVTasu Rj|B5~ķ+R #n$r@5$kz.NJd iF}!C%ooYG'&yK{ _yzKڊyg1mW>/.2m2_T;{!8m0 紸X_ŏ%_,dEJިve0vڼ)x!H^ׄNa"Eiw64zuskO}yqA0,zʓ,=(|mkasAwM䗠{{bNrs͆<)C\G,ht$ i+,]Vs:;G[dxw;q}5-D~9ELSXs"{lM6TE@13z%Sn3!A6`e}Ff@$F%jxz|g(b, = 9]qӆm9u,I:6 , \; Պo֫f /!tpJ>UΩK ׍ML Ay%^ Wv}G 5RN6T73tf)+؎: 0\㛹i8sb3uGziw> A_ 7U`K'̽p_X8ApӂWKCZ>5;jAqR=pWb*\ZmC XW3bɕ P}AAfֹ]TmyQKg^ rfI/ݯxAߚނ=2Y':t:!p0=@jIY[%qji:~)P0 ԆcIe!*t2_ lGiuj'!?.ʣxgŗ0VVw=e1`e/st4 m4!E^׻ؙN0qi.QQrBq +>A>IAUsc*^9*+k%4X.pϠ]эڿ^u%k@v,F(RhfLY1uiqv\69,>2^O K.=t=_b-HЬzT`ʿ2yK *pG(.@R4npR5 qZ:mȁiS_KYy PttV!1D&c`X) 6 ܸFbCxԴ"2GRȈ@qO%Gl]6rW# ZKbugmmljT@iXF^湾5,alBK7@^NM`㏅_XR_@<Ƞu"ie"ǛL2|eew^[U, $;\ĉ5dMuc DMPBIƅEZKKDW.\&"[ QTG#=i,=5}s?Xe'woK;()᣺< {"3#hJvJwKZOC#ÅOY nSMPȒ8M76H mIg+"3'nz[&\Ս;BƁdD|½.4C1RN¯Nr^-P=StR\r~Eҡ]T>Jy#1P)%v:_ɹ!dREG(bȐX uwXr@. 40߁pIH$ 쓯ww-a?m~7[Tv\+#|7aJg`Of؎C3 ZRpwY $xȕ}ifu~+KgjѶFϿBٜY,V҅paMeZM5􀞙stP󎔆FƥkGSd18(ZsDVu**#zI3mBDhe_`YD|㘥9u4,Ҳ I>¥ #4iqq|#G:"|3za;a}.ZS-XڭFAb7^NJs+hyMs°CVZkmT4-mMͯÝ l|MV}>٩GBR#-g 'Bk@Έc|-\ӂ&8#hޝG4CcE&+p%G2966ـk((A% *F|==CG⤸(L iI룍Ix,O~}yFN5T2SYq.ӿgohugoio-hugo-6abdaca/docs/static/shared/examples/images/les-misérables.webp000066400000000000000000000323201507671574500301030ustar00rootroot00000000000000RIFF4WEBPVP8 4Ц*^>:H*,yP cnl`6H|bO}q GoW}C~zv~|-r[%D烿~_2?㶠 Nbw`lwzL'c)j{ΆmWIS0`}$_6.لH~˂{|"E=fWEcT0]MeLtrdRD)%AZMrl@G;+E=(8/U^WV竐!2\BfsF-Ҝ8CX!5dƽ4n`ҁ}tBd+J=D%5o 4w WϏX:ڬƴ^V}-T?>w:`N ͣUI )Fok&? 3 AIpS^uA?F9c!%PM2ɃmL&,r',oXNP`OXat6͇l',o!A }/ i !h@&)^ z@EpdPB QPNpnڭUrqUI1,KJzؒ4o ؗNx|F{;}`u92HHz@k҂6g<^cHA4 RunZI#"#E ^躢/VK /pXth(Yrgb#;vZ/d*kUgzA 7IUY돨a:[Vw-Y&2 ˥ 'nP\FBm+FaWe>\=IR*KCq57S+.<-_t]o ge9@-Ú74Z@}wT䴬ӆ,號(3ddw+?LqmIz1$#@4+%0A(Od+oE513+A:ReX W&y"f/Bqw$bߡlYHEf5sc7U@zӽ 23wYf}_`HQ5Pޗ0~gh@*/^Ăţ9{b_΢L•]'8slUЗ,$YBW*ӟGrm9 iKi"&7:|_N%SI ]M;g,Uq+lz-H% ݎ9ͳ=dx29gŌ>:ZD^"oqxڀlsʲ4{]Hw+FQ r(gK0d[w_|[_A/S͂t[+=*ջ:=k1yYvc͆j7A0 (Ώ&<-g5Zu WR")v-s7,چҪ:$$ <6ct|q]od+jfL hЕx 8h%O1;}MI+Fl7[GDcymOR",Bp_.f 1ik%JZEVl^Pd6W$b+qTV45picvp_ˆ⬺`d{1U6ApIMRi RHOJ=Bw[Җ6*</BE2stxXjGft lI9m24/+^{p2Eq+A9O1[G=e] +rFO*cPʚo[4kMlR&(A.+Зv5>鸤mEXvE"_lVw^KdAʧ _p2EO^xM#&̥kA8X8-2B[hG Vj? +m`),u2=i+rPLn:IM,5'ط U?.UOjسʻb+iɇ@]uE;KkE dKՙX#c*,/ /2`I%pJ]:N|^#q㴍WC;;ʏCn]ROrAD|mrtwo2T\V}ZFw+7QȌ֤Cllk\FgQamviIyj (F* OҎRJNQB%>AR1| u7.3G$ΥCC{~TCT6vց1`qC- kQl'7*Cg^~ܟu"%؂a)Ko飓n?Q=DnogkC1 T[hSoKX`r#Z%"ۤQBiE6DZ|_xwrr1͆q4j.iY9/;`fzĎ-!J[b+bt{y$abx0lJZGwMc@`!LZm.?Z1@+28͉=ɲks8.I2ALxO/7_n=`sr[0K:J+4T; fP)F+ Frֱ^f`5@ u܄YgԱZq)_oMx86LFJlWssAZ}b2y( /,3RPQveHB:ggyy[ԯR>L^Cq3Za>7jq%qnzUq̣bVgʉOo ;wdpIgעEt->O^hl8^[V^+nQZˌywAÑ|@;T78! h7leou O~2 |6&4Qcx0E5Qb@ֳ|ֿX/"IcCU#M%v7y#ۡqښov.DD/cJ a}"2B$m첚se۪m)fg0D-Պں\L5X*,@ I]'m<Ұ C V/1y2Z0 8j:H 9j#S[ ӧtEHZ4~&QͨF;jO]}FBf|љ<]u1ɧd3,&0 w"آetH(ROsHv, Cs >;Sd>)T+ٞ|hkPoSsoS8ם?pQu5Ģ HȢ!&kM%)f XK> LԸ)W #XӜtZ6 7xP fw{c-~$.O @F)(gA [.TYEf-GTc*4<-P2 {a"6:E̶i}w^mzxѾh|U#v]zZ?m%.pJicsI\|hF輞:SҫHD(>xv_C>`{R:MBGmFUDyj>OoՍ3x,9՗d~k nFC=BŎ )΅g 0XpD H*Ɠu.gBpB&'$|)uaQo]vb |"ܓ3:`C`/bw]>e{ԬF=Cf-fJdPEHuE4b > VߕaI>"ӈ09@ƵP+Uyg0qp5F},K$HsOaE3rW&mYC@iϲb@ĢvQrIζVp5#hQl?.jkz#n$ɫ([Dujj;e_LtsnWV ;{[ ~p3QU JBm\a>wed' ^m^0q kL:{OFKxhF);<iW*J?D5Gl^5> FNހhۋ0L]J;%DL KPs)%n'tJ ɟ],OBI! e&aDŽaJ"sA􀟭zWۃ(;U4{D{R<咾+Pct>t[E<(߹Zާ0}5MjX/\$B& ξo-7\mSo-^VpW|U7ig~GD?-=F).NXǮ )MK إb}QB( [|_SBBҘ 4X\4t܉yxm rdܛS>K 54~vs%JJ&s:uo4Jն09"6oVQ)O&J `w6VmI{P * uGmmlgޜ1@Wʳn ]$3TVO/de>iE,{RLg,b) Bĺ?U:Sx布7./C1v0.xv DZlNb2M *>m@ -R(i~F<`-AQ>_uTat-upW,]\$y<ɫT.(u%T2yd,i$߲s.}&RE,r͂Xb /&*blJ8%)CS1G"2R2PrfB3U[ۃqǡZ!wcdsK7_~|D& oqCN"_U3![$k1 Z\sPD^ZQAij1x >?D,7/X3%.uϭkRIyLNe]`Wr6]B'O߬T[d8;Cn<ЖvA|9&;B<]FLݔD-c$Y"e8y>vl2&)`7Mp HQpRXe k|v5 &Ӯz;q4~Mű!У\b;d1Eq)PgԿmB0NnQKu_P;gᩋMQl)t42H?Th`Ra}FpfODM>֞ g_L50Q7fBj5Oe*#S=IྉNr[˷e{⢏҅dqNOFYR(4A7A-<)5"oKwo=vFcPnL~K&+3 pGc7݀ύCtݺ[.gDrokՠU 0prF_z k)9H:$Ι{BAב!-Ig_;$NHH$?o͹}*L`c/${/ܰϻam>Ip:?qc$qիv’| n' !S)22N"Z1XucSpd8$[ET2Ue\ [PP\qs!;ʖcqfq,q5M %.T䐛dx>,a@dknkV2OK(fi:30Nm ?qđQZ.ȉ*踄xv."5+)ݽ*¸I P9$fs^dOd5?/ΊKCM6J`qP#= J#C+|/8])#7;rC'ҘĀD^CZl!#\#p-j?cN52f㿇RTTE9*ۂ*QcY;ĦѮBe] ;,ԱBtthBH1-fK?sM5{lc{jj!KiUywt*?S#s5%ջ뵜> ,y#øБtCFP,g\{MbF,@Tèu%{nBt`㱌F_w2Xw%NG 298[J_!Gn!_I^L--EKie&CҽVk݌Zy7=nRH,Ob05DhN@-,#$Ėȸ,,R,v^n& a26Eȯز*R2231Agy5Z&5"cxTeQ%ş$KIKyIhGʫ`v)RLϮ3sPEwK0ן0`S]sKuP,nL!.LM{P!5nYʬxƥ:co 4c*.LpS! $+!E;TwhQw&(]n5btަ4WPP{9 8;Kgz D52֦@\/<<^X E}8!l_ݳNL%w1~7ŷV_X5x5) ']U IDfL%zʚj(? ~qTKw;5B&f+IeTJV\sD#_T5/fXwkE26&knWQ)q {{Ug3 QKAuPOr^k|f6]*IW ד;@};ZbdI9DN!M >2յOi&<"_DIwO}9|آw2MUOs j^/X޵;3Im_@5S-AQKnVw#kz@ R֟ ,)Kn#NʶLw?j -m;i]xt4xHu e^`zh\@BF;DYuUnTP&5ZBI <4_=7Kp3Q3$:Qnكe'㪯ఋSi{w!IxX &J1Og23 ] րrW PhlNEfxCZ;M͉K0keUu~AH:O4'q_tМ@"(׀3\wwv3gE qx-`Z/*jUSqCYte{!`o| C_AX%t`H|# 9xW>+Dnי*[~Og>SEV݆Wr4:#JG|23$vVc$Q8naڥ Ȳ`ɮD \uR~͠K[ru@ >"UvDӲ_vcn7._#pj-sFAmPⶀF.wj hY TA0_l?N SG!%碘G>E{ZvFxP5! ~M~cQ!nJd:DE}FE]jar4`?,M^- %~FJR27wT.\(;zlc-wN]Rߟu+4jl312 &cOlhT>>EKi}۱z WRBSߝ'z $OMs;.~n&,_ja< v F?93uyEDOS uD`;5+V,]]r!Y`mYT4oU[ePgR<]O֐MN(= u>|Ÿ́ 'X6V#|b،Io~@Ӂ!['9A㈹4Kd_EyZ1a+=MC0̓"ds޹] PoT|d48&ܭ י^q+bghECkEy \7ހB@s ygFUtl"ڞA􂬒<"`i6^,Jz?6!Cq-,,Vȳò*~;3ܓ^Lִ}.L0ka|h3tDk@*K;Fbm üg=+>xq}dY?5#/QY -5V(\z Hb5KXwǒfO_] {6e=Ҕ0j^qRRyӧ˽-#A_YiUQq5moDJ6X M! Qw6no!/S u=qy +?_߲^eg#O?пRڧp^nTٯ|xz>7gOy?k^q?_?`/?ha~7ܿ8EOh|m~y9YbB@j&OPgqH=ba.fR~Zl|#xE eFXX 4G9jd n'+J?l+f탷?46n<9m9d֢(!wةT;&ӼpHPLӜjMa&+ai5걂H $Ar7 D!i.MZY:S2\_{Gǚ8i.NK.jS n)/\{xd}u?S4d 17N杞hOesנXWP\S<qs$]RqܑY5A|r< 3~Snb ۄylm iѷ颃Y8Pj~ѯb*\Q_ϾM߭,S0jmt 72#w/|Wn_Ap5Q9$4y$E8X4,/$Bp: uD-pQ4L-̆:/azLhb˱ 6AŹFuLK?Bi}^-Ӹ jEO6J=N+>4{1UXw%ʬLޫYcB10%z9~v<91{%Mk[-m&w`o l-ejEAGN_< fۆ{3-lrfwCOO Z3#ZrgLGX(7O:S] :@V9v@+w|x vý%oGY}MSm jEE!ۮ|9lo[zFˣv0ckA^b|E-:RkHg.ݐEb B?΍S ^!|HwNTIa9Y'pa9=q¶j`GBX-U^osTI-SˁPDTC|G_!ycL4 ;CM NGؒLiT9+C"X-*2-=ԫ]W*ӬCzlg45]h s}e)<[aZ{c;$|7tfVvg<\d_}qEw$*([ZܡvXoT:4FhXEƐr\qhI1-.x e6Wk5!Wy;*SO(uj&<1jZfɩ esтFkegvJdG? v^Os3]^PsƢrѕwzm\pOJ%$ cyWek9Gv?C+f{gyS l:{L],hr\-گWu{&%O?ltY暋\ȮMY Lws.S6ѥk@b7JiM[vruy(NRy:jv@uɔIp&Mi{v"`HXGWN1c{cdZr3~-Bc2- Qr84ndjp2z+@ ^.EL^HCtÐ,T$Υ~b0*o5h|s վ&!Izgq'[ؙj[Q\-Sdi=O@_MM%r.M -zxu.'-?ʩ'mU~Um vH&cgQ?^w>5 O ;Dn29>)ȅkhI9*(L Bw"S {M ",=BgT_ɜœK<}_HbVGO!6'Tp/ue!BchK@;b,.GAP>&iB^jko%M=m&DJ m3)V iT*y"4]3bd_Ylb7G];&Z+47TD`HMoȴPMmT ahZ.*zPc-ME¿0T#Q`A$zS&-U{ˈf/+>V] K3h2TC;(r|[40Ud}5zUQX QbCGAx͆' ד}N˴qI+VΏe.XJOukR9 a < 0 iߘLt ]i=[jٝOMh95X,slc|zBR,N W7-9*G؂N/#fwc'}2A3Ctfc?*8ky:3SGQy,{Deɏ&ᜲ&bpA:,jJ9c5de.`{;vmdD߾k ̊XT*+ fN&YFcAXA3tM o֋%Y)" B؅і&mI>].?(p5>6uN<;7,A8Xn2*ecbi$#vhb)e pp+ ڢbb .QfOY?\-T=uTjц *1LD"~2Dٜ|IeiQ/Tx&=s kq,(Gc/[{}e-RT"5t)ŝBnF/O͐e{*bH@U:YNk{a"-LœrUOF9!'ACC!mJ`l+An:y[O|[Q>o:cV\<,rB`, .iS>4fsy[oҺ&/+u<;>S3@)xij8 L }aa[{d(:f2]8,seriU7 zDS$s oz,HbԖ !k NX6BdB\;,m[& ])cT)7l?z7Oʯf_t$BЇu3Dp "j^ YReRWi]͸V10v:H]+ 0rZcR\aGv =*r/n{#@<:M㺹|w9fg=AN1eE K8:%*b&n {C<Ώ̤^?Tz?y>O*5lft> [SKv{Q m1hts2nܓD!gwJd -5rއ6O\M٦?y=4tZJaX%')\7 G0]%xp0pWjD<=~r n[Gbq)~!e2]<Asz@) 0m&RY_'|1FFu* P ` ȟ-rgng9$pqrf [.*N J,@,~ib7Qgk4~#Hc9/8\ueif60\'> cEJ D9\"KV?Dĕ}-Ē gohugoio-hugo-6abdaca/docs/static/shared/examples/images/the-hunchback-of-notre-dame.webp000066400000000000000000000563441507671574500317400ustar00rootroot00000000000000RIFF\WEBPVP8 \p*^>6G#")4W  dh]?/ܾkSwNכG0; f+k/&z sG/PP>s޼:twʏ2"?wg}Ko~ 'OMoz_?i'sO{__cg{p??{_}Vk_O{_VM%ڿv71e@И7(F [ƠEҮ]B팷{\ X\#, UgUIqv n#{6kf]8)GGWrݽ}e,MzGGzwD#Tmv Oy:-@k N,sO]n+Rf[211!][dox燕K _Ew58.Bnpb "e+idn_[);`&d}v''ȑ_x1u"2fqJ$գɍwXk<3*QiE91^̪ցI[1NL5xyŚG`(hsS@L~yrt޲j{^GQlAj( ~*;F Mrap 3kh+p@&@RKzd+[ԴsaP99t"ZaTxlN7`m"O70Y蜛BT)2dhK/+kpbGtn~Leyb8aZ0<דzGUO2]a\0"̞I~7;#Y<>>(& ʍ咅M.Iž$92O8E#ik$ B=~ }ے[VYbinFGFf/#ȟMm# \FyG^7OԢیByJٞRfϡhgr׃Ek+JA}s&N9@ όx9+QIE՚ $|ZLǦ9=Y1q6i27+)lLbS~*UĿľ=cS|qT;\߶kd|nHG a ؗ8&sLߵm XcA"5O?mu0|Yb88.[r=-\-͛qxzTI9Y۵![!+yY"cpbYE0a3^(Tnf9%O!$` GT9WaIM r)d/NjA(T#.xt c,k}GZR}HV./<*f+Iw֒:+]95 Mt; O nZ-m`(*R[˓֎ړK}g3N0 }Vf%/TmuʊhT!?C C1˥O] s)bԿ%"˞Sd\~ ?NTr^FCV~'m*Ruѳ u&_voZA_' 3ʮ v҃Zś:ѫ<1[P;ZF&?wKͼl0KMlLyNMehoWHXz5w(~E@#"[O9VZ ;:'Q܁0S JƨAc?f;Sc a._t[sW9h?iڜ&d`'gY<4!|9Άe%4 ^Z%ʃqvmr$LOMuJw@%7k?=X8y#@Zgؕ"85F r,:C @ejrhW3;$!I3A@7o=ζ0%+ "Wʸ᜾~oN.o沈H=*#N;/? Ge)O?lfoB#c|=^ z 4 ne&ItZqA/!z"'l"ʿ:g }Y:5vb yV~;r ;qb 68TfEC:e<;M]ZgFmhIrnz o@3͞'mvV +rݛU:PeW'%"Jb!dˋC2/=Ed"X؀^1,mpa-u7[~mc3;5+5}u5eUE#viLNDZ`Ȗ=#vFT 橢B| H&YZ-y$̮[ёd☑ny&] !R uLxBsY#YEcl(_(Ms9 r1^8] `+,A"oZuXJ$zadwpVHJ{;m_@kU&Wb>_{=.g~v4ÉV[`]+2;At :n1EKݰ $'750R fg֛x@oH8| Xδ! [h)(;3V ؠQ?n naD"`slz%eE2D*gyj) gam$HReA7[VJ&LFjֹ5G w5R`pj Aaj?_8)iM{kB0y8ހ0  Á'_[VblK볺B_ IL;Z^&mR NdRCq擕xP#iq͑lAp "M'6ĭz8aM˨L)P)& ٝ ǭ<ɕQGrŤ n5S`^kT+@jEIF_}\h]9pLv6INEHЯ4@dESh܄;wǫTdwvς4!M+av:Ђʪ]Ղг-v Ync16xx&i $ ]kȔ_f_[G>mϩ S+#e5)cVdg^WL3⻽bQΕ<)}[їc:̚mA%eXF\|]ކ֞FxNW!Hsk@84YHR*B/ )Q̜?z7Z" }8>>3iy+w5`cVm:YWzs4Y=-vs`Πj ݚm%.2RM.O٧x$fB-Owoe8@epq! ֲ4i[C\£afDVs@R1AOK0b^S4u`}HYBĉHthſtK[XoId[W=_K'{#bmZwj|徲qѪ VTW6A[BT#.bXp@z= I+u|.E]4*=&nB56mFJH7oצon'G8нPn06?QF@O_N,llù ß ?sm:eOc]e}.ö1df>f%sMVIDi8Q $zܴe`Wu 53ނ[!`4PZ8$+2h.\ Ft4O+ܗ B+9 mU壞֞X*de侳2%J>dA̚nkݦڶ^;O" #\p;3+dT⇀oxo=2bRZ?\)/hNT 2!8Rǎd_ V9\q61~H*8iд-#(=YhY[ : d0Z+O6/3g)OR_䊆vq36/TkԎɲ gb{`xdm̩ҿѵy`D)tDׇJ[s }^M{o{6! ˡ>Ri20﹎yRwY{Y֎TXBeJY22 ^Ù$; 胵ޟF4hن$KqDi@£}SoV gʟ'2 hݬugsD#6yeINoAea#"x2%q+ZuqPTB{-%ec+C;߬pKp `Bڦ{8:^ 0OIm v/߹t1{WYQ]5'W >~t.Z,d၏:Ryυ^q̥L7$$ MEg ,tVǙ@ [="9g;6ZY "eE2=G&YUd5p7n͓e ۈNI2%JK6b_q}81QFUCk7bJZE 2>3x.JmXd"\S뜛 D7Goi8on0,ZBV"H117@7stiiR'"G + <2Y?yk خ[ 'Xcw$.ljwg͘2ݗR4,{T'`4Ugf:VGM> O8W';X3:qrAJ;%&40Gmz򌡟s> Jxkx~b?1.ӖX}2upP2)Bᇏo4aW2;-]U=qY:A%-XX>ͳy}n͝ᴩW{,ˮO-ïGWB #Մ~%q~ azdl_i{d"Q33N@ؚ[Q((kh0M1̈́ō=R4PȺ"Vm2V]ΪY(:Yԣw@['1ܼ2B|!HqSԶ|厂5_.zѥTe5\K(a`J7˦ Q2q7u4jg veF.7JiJw>#u\C^r6į8FhVvD`sW`QP^!2҄7mLfk`GӤd~qHQI^[Cj7WQKI%a$fY|:rÏRS¶m6D-Z"I1L;O GM ih8|S?uSCvܹ-wf3nU6ebCK ГmP;r[hb+cCU>k t6M 29M\qN}.?.C9>TKMTۥkL/S]x#i(A[s:oN̬OSP{rVW{`V6H;W( a0H#WQ& zwBe:~N\Ꚑ(&_:6qp 'C5+<2Єup4pQ8&q/HȾ=췄+{{/o&S\WbNZP P]PkGRtXptU<-ԇ׉B`2F:Sp#;Lr=gFULD.͊ӂECpb~@x`& ܷd6vr _!JRw@H%Vc gPCsPgL|2PAi2\oi>:8P4hKD%2iwg=iC7*8 ׸B˶U%r YaswuQ Mf$2j?ӹH|,qv!U?}7_}n0uΡ^F;֤!"D :'DG woC īH"4Ypx3B6Ֆ:^HPCܪ? yifŚX-)f5m@;:)DE`~KhVaƷaqD~UvYv#Xh8Au `β)\&ga3|nH"_c0"4֯ڕ̯؀5?:BԂt5 `6:YO!}UG_Dj+ج OJ@c@ɣy}N4іmfg7j6Ur1_e7]]ހ^Nq\sE<*SB[<Έh H8v;jlSWOJDum]v)T.^T?3Wj7cʊM BNɽ3&=ssSx4ɪ:ʏ¼tL{滹 }~ Έ_'y+(X\W[7T G幼![WS?i2&7A\j6Vyh5Bl 1ud M85MG쇱5VaP-D~M0C7׏ۍoUbMFu>zS^w9sƧ,U"WiW7sօGB3J"̨S6bE dp4#\W >%|H# Q Ŀ/8?XMB!|:Ő9pMSC(IrBj;|?X*Zޡ3tKj=2R:"fVI[V! f5}3B!\G? ض̴BTcLE6ɨ!AkXiE|Ikm )i9SP;x6wzd広=Ͽ.CGޗm@aD9\ec߯Ϛ,>]h,4}l;)>~˿Ah$ >,4/5wYۙ|љۜ9NJ*g2oFgL֤MDGr] VQY 7a.ISL~Xj R$14ׁM.S<| " V\ݳu}=D<-˸ޘS$K A2K82 4Y>=oy8hI)YxH :7$=|՜#wMaA؈=[w\SN8KS (/~xɺsDbWHݹ/pկ1 ^ͭ:aYoZS O/ I嫔UAB;UZ:SNkIv<ٙ4*-4a ͖/ʯ1(/*혆KLQ-{Hd]*>$;mj3ur)-Y~o:ƕaq9V,E/չ^I$]ѩ,"%mW" #a@"S؏W]Y*0rD6A=0.e39n'< axel|ȝܲ:=BLqN0BC3Ὤf\zy+Ei ~+/9ˆl~HjKjUϘ'?yYzwk>" }҅tw>z CGX!zi][[+ lV }yZ Q6T1zȎMt]rmTy?8lWQhArbHoBV9}._`RCAe ԦW#ଔbSt9TZ:~\{ĽNZ[^=ݾʙe܂#lu u4oY! sM+WcsU_[pauhV,jhjãg|7$\XBn(uM Z;0yי :8m󊓶FSӻxt[r6i74TsϙO)SN$TMfs_ID^?'::'rd;ܣ9i$DC^ aK3PĽp  !+LV({!盧hpo6a;ݏT:> 3ΩGx#Gix~N]@ؒ*|ZJG\XCP;/ P랤bk7˷_\K%zK==yx>qY'R'A@*ct8S'('H30*7n0^@׃~Ȁ\WȨH`5! |iI zzr9dnF_t|Z9=[הeNĕݮ~fո.8.m0+f zp暠__~$hZΣ]Us36xƃ 'Q{`~ f?IҸڹekvS<S5f- +Kf)kNGrl"]@L J2goVHmIJ +S2{|qQ0 %=]͛X S!ἾSsBX kX+R1Cz"BJd{ 4%aN:zwnA˂3b|[4Y"5fexɒ+]}'v)'y>$(A&>dћ dʧ =ߺhnJT17p'4HzL ltb-lη~(ɭNf|NIu<ﻻmZ]Ofdf wG~=5)1ŘI;){&6P~b$k񍢩X f&$.wfh`|% a!1C7p#=&V\3r#%em[yij24S_7v4r@BfQmJ0_'k:ĴEFkyZh`}h9?)n+#P,5=r `@º5p@Y !yl["[JVޔmSMS\Lkf9ɇEmVw/Qt׶$cǹk#Hj4xQf<zuSO pHaDJ._7 \&dh2d;GgY;%_7MHM"nBZF3.Ft/U+X.HRwOqRUw{ƠpxFiF( S`nmD>!=6= 2nGmr; E yHS,e¡8ĝ^ޠ )Y٬iW4v+}|x %pл$ehhr:>uXoiG8%_')F!غ2ɰ{xRnsӸHxzX22ख़%_UMrKvhò3&JíMgRKBT w6x9h2e.dVI9G{lۛ+˛|1~a+ /hP=7M!>MMO@*``M->'51C|pktiU4 gQQ P;ϮJSG@dͫcK 3PlQgUҷx1yJ.(NtQ xCUIey RCg-DtL䓍]#rmR/Eav<垣M©JBPnӧXԸԹ¿e<_d2MqDnApNg泆H.UHv?Wm {qB3bHn&NC2I*͓/t)+̞u E>Be1>4+  FB}Qua}Ӛ!>lTeK†QwNAO"lz٫@WERs"XA%;izZz"pre<)INʠ%Y11#bpWLrBW>!g7IUKC3LZ{;U0)c-e"c#@_ãjy>{~V1{; Y#\-4nvRXdH^ߗ؜%&\bR!wBEc#OIL. @CG:9uNH;b{υigG핝gM|K>LAc+o6v+_cNQ7ʹE-4Όle{ςˢh0h "0uls r4_~ާ!\R謞 l*;Įas|zx:'δ1k?Lr ~'7&#ŜQ֨/VanA c Gc0V&joi!cߘC|jyq P 1!qs:1 X'G@zzͼnmS\;+.=l$A2sJ OIFi4"K<"3hD9=aWU~!뚺R ?*Zm܃һ3xGb j|t^WHu{V5 H؄})\3> d\2O{.DOn$ޛϽ}Fdk~}wDM63-lĬlЍ@*#vFf㿘́i2$(YL 蕲Os.鵋dt-yQxM;y('Nʭz~EsYN7BpwĨM8m gvL |(' qVn"N='8jH1CUh8j0z;zSHp0&tG>MquY@  ΉRR;]ikp8#`9~$z׹sC \<8M^V&Q[8xhK\i,8Gi{QEms Ðdoj'a[#vFwfB1pS Sڴf1Nl8QlͧzE *.V=[vJ@0eYẘZsU1,棔7^>'1޽gP(X6?gc w(Z"5~¯UU}NPZa.֩H;<|`߾M U[\JEgΡț'LEc9;,.no+䚤anF:;IԠdd"SGm;c(ZIdC9ߨAT y%<W4;Rj:,t[H㦃A~, #%jxtoFb;:XۅZŪNk;"IdX:앛[ 6!%(- )c#$-ďNh"J_ϡ NOin)=V $m\WjV`Fv3C6܊Fizc{s"/6ULJ3*e#ci rQJ`42$=7VX[Z-آ]֭8\K+#uV =-}w8W -0#qR:(M§x0,\oBDb*%0sfyۭYSȨa˦'s > o4 FzzWJ.*TJ~%>Nc:a?Et/=Y<,`$Ɂ)zi~0hlV%ߡ. [híк< fe,$}^*}?U?^IMlʀǤx̗Yڰ(H2yPo &Bܫțʟq$p p$/DATǽ?rtH3`DV}RGa`\ή6~'˒z0%ڲ捻,H1iүkPNUǤD\g<}⋏j%P˔p@|pCF.KH+X x챕9}E(n1̸ n{%'P9 SyE AA)'h@ӆܒHlawjB7U ]>3Cێcs[}SG,s( NcM;wE#j1%')F_SW4hiس~hjB4W>+{7C$W6AKwKk eCpkS}_G Xn4=3-2[2vJbJ17ȐMN':3&ĕpG5 >:{~kdN;p/CU35-tP1wJ|_it+;[XX+ ~'ȹXd׻ffU i-/.BAc_+淯F3 %UAxK^qAٳS$EؽGzV2d)ʄ*=@ T`6˗p$*J]=kFiA^UEġs-|a7C뙣̫ZNJSj`7JlwVEl2Mpq0irwP0}2]/<8:헚*`7A,*yqL$l-眡U43&] &j#ɟh)27MH̖eȵ'gѣ+3oӔOt> J4Ze_~\L]uodi9e8k>p(dckIrvRaX4++Kq, HD/sUoΡ.Md!Ok/V]X{$춿2^N.~sSЂ))~i@w,gP04l)%O} S*dpAR{c_ \JgxeFw1՟rp>2V6̷1e{iVy燅-&/SX.!u"|@uicj`Oafsp(n 8Kz9&axeYyc=Ȣ G2c{'̕xVy&4nI3P M(u!VS G,켎~aVqz2BYXħ"$e?&KCqIsMGB M/n銇e&)`=+VqD;Z4[ƀ5s#7''Z7Pc>x8v!/ T _<=75#Um#PJF4cJv 0aNZ¿%OS`#{QL kߌ?r5m;A`oZN> JG@wWdbH?q%0Ok$dvylW5?M=#u!7eCbٱt$ExI G _ō\wgB274J6H)CkEgko5}XC ~$R}%EB5SU27;"R=4۝b^?5o|rs;\A18#b-ו@[C`PlU}dv|=ssn ˏCګt?|-_ҹTCO<vJ`7S{{5JXEV > V{|16i-{1 gJiz/='7E_z0| ج@Eߗ4|ꙩ*SDd'a/',ypARsZ偝\:~BA] >cs*"n$PH-/o:q;gmĆ?od\JEhiLG RrXn@x)bA #7? my &]IUzێDZ cBF BX/ٔWYt][[kpfwc0dsd_ľ}CcQՌk-ܪ_1$g昷 Wb&N%*rX{ yuV'VZ:@C{lZ(K[9uܲ =N ,U? ]a*־Mt48o`/:c?83ʚ;eR[Su[ 2Hd *^}).bG$&WS4 O3Pf[Yi%xy(,-jh{fCIŔ☾ZOY 3@BKmW".|A%= D/0?g7s,xV>B0/k̒_zvtE,D}Qm;Rv' {_8Qq2'#XR"pgiq۳Ċ'drE%oy5W>哳{t 硴?7fj9=p^s wG òa]T(_ExЫ| U?ZY?q[4E #NCK,=玽:/ul3e|H GKh#.lC`5sn^~|_F_)i5TsT[C01yA^J/` 4|vadk%ORHLޤg>۸5}H<sigjlV E>>By4DL|K&N}5HlO6o\KGu dOk-Ь0=>Qed FZJn5s:R!}U@酃̻߽  :5"(+]O3>sN8# ݋aJnCH'#g%X&""<fZך !h)iHϬ9`@Jaorm&u5^]qY kHg60Dr<~uF?CS}Lh+ruuI]>N~0k~)%k^TM݄>,/oG11_h<5/ʤ]|΀a+$WxdX36T;3Ke#&vVvU{>E?]Uy]v-”sxKyظDZsz"TwQ s*u@qټ0C[zV3q}_V5:s,q<c(6@ @%a *H]wsG +*!:]"/P4NL¯qvR7gNǃ\V۽o;-hn ހR9XCmF'k]hhE.gYD[*q8o\|+BpdNBY wR7W%‡28Ãі֧A[b@Cv5s8nЦz!296ҳ -T+GC k1$= MOa8&IܱBL`Y`!xq^jlLDMf@߯= ey?}3߹q 0KdW6:wUASC0V?.B!,tr ?ˈ+vj9![w3"Bogohugoio-hugo-6abdaca/docshelper/000077500000000000000000000000001507671574500172665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docshelper/docs.go000066400000000000000000000026041507671574500205470ustar00rootroot00000000000000// Copyright 2017-present The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package docshelper provides some helpers for the Hugo documentation, and // is of limited interest for the general Hugo user. package docshelper import "fmt" type ( DocProviderFunc = func() DocProvider DocProvider map[string]any ) var docProviderFuncs []DocProviderFunc func AddDocProviderFunc(fn DocProviderFunc) { docProviderFuncs = append(docProviderFuncs, fn) } func GetDocProvider() DocProvider { provider := make(DocProvider) for _, fn := range docProviderFuncs { p := fn() for k, v := range p { if _, found := provider[k]; found { // We use to merge config, but not anymore. // These constructs will eventually go away, so just make it simple. panic(fmt.Sprintf("Duplicate doc provider key: %q", k)) } provider[k] = v } } return provider } gohugoio-hugo-6abdaca/go.mod000066400000000000000000000221511507671574500162450ustar00rootroot00000000000000module github.com/gohugoio/hugo require ( github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69 github.com/JohannesKaufmann/html-to-markdown/v2 v2.4.0 github.com/alecthomas/chroma/v2 v2.20.0 github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c github.com/aws/aws-sdk-go-v2 v1.39.2 github.com/aws/aws-sdk-go-v2/service/cloudfront v1.54.4 github.com/bep/clocks v0.5.0 github.com/bep/debounce v1.2.0 github.com/bep/gitmap v1.9.0 github.com/bep/goat v0.5.0 github.com/bep/godartsass/v2 v2.5.0 github.com/bep/golibsass v1.2.0 github.com/bep/goportabletext v0.1.0 github.com/bep/gowebp v0.3.0 github.com/bep/helpers v0.6.0 github.com/bep/imagemeta v0.12.0 github.com/bep/lazycache v0.8.0 github.com/bep/logg v0.4.0 github.com/bep/mclib v1.20400.20402 github.com/bep/overlayfs v0.10.0 github.com/bep/simplecobra v0.6.1 github.com/bep/tmc v0.5.1 github.com/cespare/xxhash/v2 v2.3.0 github.com/clbanning/mxj/v2 v2.7.0 github.com/disintegration/gift v1.2.1 github.com/dustin/go-humanize v1.0.1 github.com/evanw/esbuild v0.25.11 github.com/fatih/color v1.18.0 github.com/fortytw2/leaktest v1.3.0 github.com/frankban/quicktest v1.14.6 github.com/fsnotify/fsnotify v1.9.0 github.com/getkin/kin-openapi v0.133.0 github.com/gobuffalo/flect v1.0.3 github.com/gobwas/glob v0.2.3 github.com/goccy/go-yaml v1.18.0 github.com/gohugoio/go-i18n/v2 v2.1.3-0.20251018145728-cfcc22d823c6 github.com/gohugoio/hashstructure v0.6.0 github.com/gohugoio/httpcache v0.8.0 github.com/gohugoio/hugo-goldmark-extensions/extras v0.5.0 github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1 github.com/gohugoio/locales v0.14.0 github.com/gohugoio/localescompressed v1.0.1 github.com/gohugoio/testmodBuilder/mods v0.0.0-20190520184928-c56af20f2e95 github.com/google/go-cmp v0.7.0 github.com/gorilla/websocket v1.5.3 github.com/hairyhenderson/go-codeowners v0.7.0 github.com/jdkato/prose v1.2.1 github.com/kyokomi/emoji/v2 v2.2.13 github.com/magefile/mage v1.15.0 github.com/makeworld-the-better-one/dither/v2 v2.4.0 github.com/marekm4/color-extractor v1.2.1 github.com/mattn/go-isatty v0.0.20 github.com/microcosm-cc/bluemonday v1.0.27 github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c github.com/muesli/smartcrop v0.3.0 github.com/niklasfasching/go-org v1.9.1 github.com/olekukonko/tablewriter v1.1.0 github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pelletier/go-toml/v2 v2.2.4 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c github.com/rogpeppe/go-internal v1.14.1 github.com/sanity-io/litter v1.5.8 github.com/spf13/afero v1.15.0 github.com/spf13/cast v1.10.0 github.com/spf13/cobra v1.9.1 github.com/spf13/fsync v0.10.1 github.com/spf13/pflag v1.0.7 github.com/tdewolff/minify/v2 v2.24.5 github.com/tdewolff/parse/v2 v2.8.5-0.20251020133559-0efcf90bef1a github.com/tetratelabs/wazero v1.9.0 github.com/yuin/goldmark v1.7.13 github.com/yuin/goldmark-emoji v1.0.6 go.uber.org/automaxprocs v1.5.3 gocloud.dev v0.43.0 golang.org/x/image v0.32.0 golang.org/x/mod v0.29.0 golang.org/x/net v0.46.0 golang.org/x/sync v0.17.0 golang.org/x/text v0.30.0 golang.org/x/tools v0.38.0 google.golang.org/api v0.251.0 rsc.io/qr v0.2.0 ) require ( cel.dev/expr v0.24.0 // indirect cloud.google.com/go v0.121.4 // indirect cloud.google.com/go/auth v0.16.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.5.2 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect cloud.google.com/go/storage v1.55.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest/to v0.4.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 // indirect github.com/JohannesKaufmann/dom v0.2.0 // indirect github.com/aws/aws-sdk-go v1.55.7 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11 // indirect github.com/aws/aws-sdk-go-v2/config v1.29.17 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.70 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 // indirect github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.84 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.36 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.4 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17 // indirect github.com/aws/aws-sdk-go-v2/service/s3 v1.84.0 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect github.com/aws/smithy-go v1.23.0 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/dlclark/regexp2 v1.11.5 // indirect github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-jose/go-jose/v4 v4.1.1 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/golang-jwt/jwt/v5 v5.2.3 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/google/wire v0.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect github.com/googleapis/gax-go/v2 v2.15.0 // indirect github.com/gorilla/css v1.0.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect github.com/olekukonko/errors v1.1.0 // indirect github.com/olekukonko/ll v0.0.9 // indirect github.com/perimeterx/marshmallow v1.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/woodsbury/decimal128 v1.3.0 // indirect github.com/zeebo/errs v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/detectors/gcp v1.37.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect golang.org/x/crypto v0.43.0 // indirect golang.org/x/oauth2 v0.31.0 // indirect golang.org/x/sys v0.37.0 // indirect golang.org/x/time v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/genproto v0.0.0-20250715232539-7130f93afb79 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect howett.net/plist v1.0.0 // indirect software.sslmate.com/src/go-pkcs12 v0.2.0 // indirect ) go 1.24.0 gohugoio-hugo-6abdaca/go.sum000066400000000000000000002661551507671574500163100ustar00rootroot00000000000000cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.121.4 h1:cVvUiY0sX0xwyxPwdSU2KsF9knOVmtRyAMt8xou0iTs= cloud.google.com/go v0.121.4/go.mod h1:XEBchUiHFJbz4lKBZwYBDHV/rSyfFktk737TLDU089s= cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY= cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM= cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.55.0 h1:NESjdAToN9u1tmhVqhXCaCwYBuvEhZLLv0gBr+2znf0= cloud.google.com/go/storage v1.55.0/go.mod h1:ztSmTTwzsdXe5syLVS0YsbFxXuvEmEyZj7v7zChEmuY= cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 h1:Wc1ml6QlJs2BHQ/9Bqu1jiyggbsSjramq2oUmp5WeIo= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.0 h1:LR0kAX9ykz8G4YgLCaRDVJ3+n43R8MneB5dTy2konZo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.0/go.mod h1:DWAciXemNf++PQJLeXUB4HHH5OpsAh12HZnu2wXE1jA= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1 h1:lhZdRq7TIx0GJQvSyX2Si406vrYsov2FXGp/RnSEtcs= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1/go.mod h1:8cl44BDmi+effbARHMQjgOKA2AYvcohNm7KEt42mSV8= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest/to v0.4.1 h1:CxNHBqdzTr7rLtdrtb5CMjJcDut+WNGCVv7OmS5+lTc= github.com/Azure/go-autorest/autorest/to v0.4.1/go.mod h1:EtaofgU4zmtvn1zT2ARsjRFdq9vXx0YWtmElwL+GZ9M= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69 h1:+tu3HOoMXB7RXEINRVIpxJCT+KdYiI7LAEAUrOw3dIU= github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69/go.mod h1:L1AbZdiDllfyYH5l5OkAaZtk7VkWe89bPJFmnDBNHxg= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 h1:owcC2UnmsZycprQ5RfRgjydWhuoxg71LUfyiQdijZuM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0/go.mod h1:ZPpqegjbE99EPKsu3iUWV22A04wzGPcAY/ziSIQEEgs= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0 h1:4LP6hvB4I5ouTbGgWtixJhgED6xdf67twf9PoY96Tbg= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0/go.mod h1:jUZ5LYlw40WMd07qxcQJD5M40aUxrfwqQX1g7zxYnrQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 h1:Ron4zCA/yk6U7WOBXhTJcDpsUBG9npumK6xw2auFltQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo= github.com/JohannesKaufmann/dom v0.2.0 h1:1bragmEb19K8lHAqgFgqCpiPCFEZMTXzOIEjuxkUfLQ= github.com/JohannesKaufmann/dom v0.2.0/go.mod h1:57iSUl5RKric4bUkgos4zu6Xt5LMHUnw3TF1l5CbGZo= github.com/JohannesKaufmann/html-to-markdown/v2 v2.4.0 h1:C0/TerKdQX9Y9pbYi1EsLr5LDNANsqunyI/btpyfCg8= github.com/JohannesKaufmann/html-to-markdown/v2 v2.4.0/go.mod h1:OLaKh+giepO8j7teevrNwiy/fwf8LXgoc9g7rwaE1jk= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw= github.com/alecthomas/chroma/v2 v2.20.0/go.mod h1:e7tViK0xh/Nf4BYHl00ycY6rV7b8iXBksI9E359yNmA= github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg= github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c h1:651/eoCRnQ7YtSjAnSzRucrJz+3iGEFt+ysraELS81M= github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aws/aws-sdk-go-v2 v1.39.2 h1:EJLg8IdbzgeD7xgvZ+I8M1e0fL0ptn/M47lianzth0I= github.com/aws/aws-sdk-go-v2 v1.39.2/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11 h1:12SpdwU8Djs+YGklkinSSlcrPyj3H4VifVsKf78KbwA= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.11/go.mod h1:dd+Lkp6YmMryke+qxW/VnKyhMBDTYP41Q2Bb+6gNZgY= github.com/aws/aws-sdk-go-v2/config v1.29.17 h1:jSuiQ5jEe4SAMH6lLRMY9OVC+TqJLP5655pBGjmnjr0= github.com/aws/aws-sdk-go-v2/config v1.29.17/go.mod h1:9P4wwACpbeXs9Pm9w1QTh6BwWwJjwYvJ1iCt5QbCXh8= github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDOhHhaXVd72mmyv4/0= github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.84 h1:cTXRdLkpBanlDwISl+5chq5ui1d1YWg4PWMR9c3kXyw= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.84/go.mod h1:kwSy5X7tfIHN39uucmjQVs2LvDdXEjQucgQQEqCggEo= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9 h1:se2vOWGD3dWQUtfn4wEjRQJb1HK1XsNIt825gskZ970= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9/go.mod h1:hijCGH2VfbZQxqCDN7bwz/4dzxV+hkyhjawAtdPWKZA= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9 h1:6RBnKZLkJM4hQ+kN6E7yWFveOTg8NLPHAkqrs4ZPlTU= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9/go.mod h1:V9rQKRmK7AWuEsOMnHzKj8WyrIir1yUJbZxDuZLFvXI= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.36 h1:GMYy2EOWfzdP3wfVAGXBNKY5vK4K8vMET4sYOYltmqs= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.36/go.mod h1:gDhdAV6wL3PmPqBhiPbnlS447GoWs8HTTOYef9/9Inw= github.com/aws/aws-sdk-go-v2/service/cloudfront v1.54.4 h1:tVpbQcr1A0c+VTqtKEN9vfB0qer2SjfxX3LYojSGUq0= github.com/aws/aws-sdk-go-v2/service/cloudfront v1.54.4/go.mod h1:dYwFVhUsRZt7COcGP23ei0lY8gX8ZSHrbyX49VB93MA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.4 h1:nAP2GYbfh8dd2zGZqFRSMlq+/F6cMPBUuCsGAMkN074= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.4/go.mod h1:LT10DsiGjLWh4GbjInf9LQejkYEhBgBCjLG5+lvk4EE= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzREdtCsiLIoLCWsYliNsRBgyGD/MCK571qk4MI= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17 h1:qcLWgdhq45sDM9na4cvXax9dyLitn8EYBRl8Ak4XtG4= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17/go.mod h1:M+jkjBFZ2J6DJrjMv2+vkBbuht6kxJYtJiwoVgX4p4U= github.com/aws/aws-sdk-go-v2/service/s3 v1.84.0 h1:0reDqfEN+tB+sozj2r92Bep8MEwBZgtAXTND1Kk9OXg= github.com/aws/aws-sdk-go-v2/service/s3 v1.84.0/go.mod h1:kUklwasNoCn5YpyAqC/97r6dzTA1SRKJfKq16SXeoDU= github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 h1:AIRJ3lfb2w/1/8wOOSqYb9fUKGwQbtysJ2H1MofRUPg= github.com/aws/aws-sdk-go-v2/service/sso v1.25.5/go.mod h1:b7SiVprpU+iGazDUqvRSLf5XmCdn+JtT1on7uNL6Ipc= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQjZsc4HEGfMCE4NGy3uFg= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3/go.mod h1:vq/GQR1gOFLquZMSrxUK/cpvKCNVYibNyJ1m7JrU88E= github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1ezajK+yQmkwnPV0= github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w= github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE= github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/bep/clocks v0.5.0 h1:hhvKVGLPQWRVsBP/UB7ErrHYIO42gINVbvqxvYTPVps= github.com/bep/clocks v0.5.0/go.mod h1:SUq3q+OOq41y2lRQqH5fsOoxN8GbxSiT6jvoVVLCVhU= github.com/bep/debounce v1.2.0 h1:wXds8Kq8qRfwAOpAxHrJDbCXgC5aHSzgQb/0gKsHQqo= github.com/bep/debounce v1.2.0/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= github.com/bep/gitmap v1.9.0 h1:2pyb1ex+cdwF6c4tsrhEgEKfyNfxE34d5K+s2sa9byc= github.com/bep/gitmap v1.9.0/go.mod h1:Juq6e1qqCRvc1W7nzgadPGI9IGV13ZncEebg5atj4Vo= github.com/bep/goat v0.5.0 h1:S8jLXHCVy/EHIoCY+btKkmcxcXFd34a0Q63/0D4TKeA= github.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c= github.com/bep/godartsass/v2 v2.5.0 h1:tKRvwVdyjCIr48qgtLa4gHEdtRkPF8H1OeEhJAEv7xg= github.com/bep/godartsass/v2 v2.5.0/go.mod h1:rjsi1YSXAl/UbsGL85RLDEjRKdIKUlMQHr6ChUNYOFU= github.com/bep/golibsass v1.2.0 h1:nyZUkKP/0psr8nT6GR2cnmt99xS93Ji82ZD9AgOK6VI= github.com/bep/golibsass v1.2.0/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA= github.com/bep/goportabletext v0.1.0 h1:8dqym2So1cEqVZiBa4ZnMM1R9l/DnC1h4ONg4J5kujw= github.com/bep/goportabletext v0.1.0/go.mod h1:6lzSTsSue75bbcyvVc0zqd1CdApuT+xkZQ6Re5DzZFg= github.com/bep/gowebp v0.3.0 h1:MhmMrcf88pUY7/PsEhMgEP0T6fDUnRTMpN8OclDrbrY= github.com/bep/gowebp v0.3.0/go.mod h1:ZhFodwdiFp8ehGJpF4LdPl6unxZm9lLFjxD3z2h2AgI= github.com/bep/helpers v0.6.0 h1:qtqMCK8XPFNM9hp5Ztu9piPjxNNkk8PIyUVjg6v8Bsw= github.com/bep/helpers v0.6.0/go.mod h1:IOZlgx5PM/R/2wgyCatfsgg5qQ6rNZJNDpWGXqDR044= github.com/bep/imagemeta v0.12.0 h1:ARf+igs5B7pf079LrqRnwzQ/wEB8Q9v4NSDRZO1/F5k= github.com/bep/imagemeta v0.12.0/go.mod h1:23AF6O+4fUi9avjiydpKLStUNtJr5hJB4rarG18JpN8= github.com/bep/lazycache v0.8.0 h1:lE5frnRjxaOFbkPZ1YL6nijzOPPz6zeXasJq8WpG4L8= github.com/bep/lazycache v0.8.0/go.mod h1:BQ5WZepss7Ko91CGdWz8GQZi/fFnCcyWupv8gyTeKwk= github.com/bep/logg v0.4.0 h1:luAo5mO4ZkhA5M1iDVDqDqnBBnlHjmtZF6VAyTp+nCQ= github.com/bep/logg v0.4.0/go.mod h1:Ccp9yP3wbR1mm++Kpxet91hAZBEQgmWgFgnXX3GkIV0= github.com/bep/mclib v1.20400.20402 h1:olpCE2WSPpOAbFE1R4hnftSEmQ34+xzy2HRzd0m69rA= github.com/bep/mclib v1.20400.20402/go.mod h1:pkrk9Kyfqg34Uj6XlDq9tdEFJBiL1FvCoCgVKRzw1EY= github.com/bep/overlayfs v0.10.0 h1:wS3eQ6bRsLX+4AAmwGjvoFSAQoeheamxofFiJ2SthSE= github.com/bep/overlayfs v0.10.0/go.mod h1:ouu4nu6fFJaL0sPzNICzxYsBeWwrjiTdFZdK4lI3tro= github.com/bep/simplecobra v0.6.1 h1:ORBAC5CSar99/NPZ5fCthCx/uvlm7ry58wwDsZ23a20= github.com/bep/simplecobra v0.6.1/go.mod h1:hmtjyHv6xwD637ScIRP++0NKkR5szrHuMw5BxMUH66s= github.com/bep/tmc v0.5.1 h1:CsQnSC6MsomH64gw0cT5f+EwQDcvZz4AazKunFwTpuI= github.com/bep/tmc v0.5.1/go.mod h1:tGYHN8fS85aJPhDLgXETVKp+PR382OvFi2+q2GkGsq0= github.com/bep/workers v1.0.0 h1:U+H8YmEaBCEaFZBst7GcRVEoqeRC9dzH2dWOwGmOchg= github.com/bep/workers v1.0.0/go.mod h1:7kIESOB86HfR2379pwoMWNy8B50D7r99fRLUyPSNyCs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/disintegration/gift v1.2.1 h1:Y005a1X4Z7Uc+0gLpSAsKhWi4qLtsdEcMIbbdvdZ6pc= github.com/disintegration/gift v1.2.1/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI= github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/evanw/esbuild v0.25.11 h1:NGtezc+xk+Mti4fgWaoD3dncZNCzcTA+r0BxMV3Koyw= github.com/evanw/esbuild v0.25.11/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/getkin/kin-openapi v0.133.0 h1:pJdmNohVIJ97r4AUFtEXRXwESr8b0bD721u/Tz6k8PQ= github.com/getkin/kin-openapi v0.133.0/go.mod h1:boAciF6cXk5FhPqe/NQeBTeenbjqU4LhWBf09ILVvWE= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4= github.com/gobuffalo/flect v1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/gohugoio/go-i18n/v2 v2.1.3-0.20251018145728-cfcc22d823c6 h1:pxlAea9eRwuAnt/zKbGqlFO2ZszpIe24YpOVLf+N+4I= github.com/gohugoio/go-i18n/v2 v2.1.3-0.20251018145728-cfcc22d823c6/go.mod h1:m5hu1im5Qc7LDycVLvee6MPobJiRLBYHklypFJR0/aE= github.com/gohugoio/hashstructure v0.6.0 h1:7wMB/2CfXoThFYhdWRGv3u3rUM761Cq29CxUW+NltUg= github.com/gohugoio/hashstructure v0.6.0/go.mod h1:lapVLk9XidheHG1IQ4ZSbyYrXcaILU1ZEP/+vno5rBQ= github.com/gohugoio/httpcache v0.8.0 h1:hNdsmGSELztetYCsPVgjA960zSa4dfEqqF/SficorCU= github.com/gohugoio/httpcache v0.8.0/go.mod h1:fMlPrdY/vVJhAriLZnrF5QpN3BNAcoBClgAyQd+lGFI= github.com/gohugoio/hugo-goldmark-extensions/extras v0.5.0 h1:dco+7YiOryRoPOMXwwaf+kktZSCtlFtreNdiJbETvYE= github.com/gohugoio/hugo-goldmark-extensions/extras v0.5.0/go.mod h1:CRrxQTKeM3imw+UoS4EHKyrqB7Zp6sAJiqHit+aMGTE= github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1 h1:nUzXfRTszLliZuN0JTKeunXTRaiFX6ksaWP0puLLYAY= github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1/go.mod h1:Wy8ThAA8p2/w1DY05vEzq6EIeI2mzDjvHsu7ULBVwog= github.com/gohugoio/locales v0.14.0 h1:Q0gpsZwfv7ATHMbcTNepFd59H7GoykzWJIxi113XGDc= github.com/gohugoio/locales v0.14.0/go.mod h1:ip8cCAv/cnmVLzzXtiTpPwgJ4xhKZranqNqtoIu0b/4= github.com/gohugoio/localescompressed v1.0.1 h1:KTYMi8fCWYLswFyJAeOtuk/EkXR/KPTHHNN9OS+RTxo= github.com/gohugoio/localescompressed v1.0.1/go.mod h1:jBF6q8D7a0vaEmcWPNcAjUZLJaIVNiwvM3WlmTvooB0= github.com/gohugoio/testmodBuilder/mods v0.0.0-20190520184928-c56af20f2e95 h1:sgew0XCnZwnzpWxTt3V8LLiCO7OQi3C6dycaE67wfkU= github.com/gohugoio/testmodBuilder/mods v0.0.0-20190520184928-c56af20f2e95/go.mod h1:bOlVlCa1/RajcHpXkrUXPSHB/Re1UnlXxD1Qp8SKOd8= github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo= github.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI= github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk= github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.6.0 h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI= github.com/google/wire v0.6.0/go.mod h1:F4QhpQ9EDIdJ1Mbop/NZBRB+5yrR6qg3BnctaoUk6NA= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/hairyhenderson/go-codeowners v0.7.0 h1:s0W4wF8bdsBEjTWzwzSlsatSthWtTAF2xLgo4a4RwAo= github.com/hairyhenderson/go-codeowners v0.7.0/go.mod h1:wUlNgQ3QjqC4z8DnM5nnCYVq/icpqXJyJOukKx5U8/Q= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jdkato/prose v1.2.1 h1:Fp3UnJmLVISmlc57BgKUzdjr0lOtjqTZicL3PaYy6cU= github.com/jdkato/prose v1.2.1/go.mod h1:AiRHgVagnEx2JbQRQowVBKjG0bcs/vtkGCH1dYAL1rA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyokomi/emoji/v2 v2.2.13 h1:GhTfQa67venUUvmleTNFnb+bi7S3aocF7ZCXU9fSO7U= github.com/kyokomi/emoji/v2 v2.2.13/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE= github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/makeworld-the-better-one/dither/v2 v2.4.0 h1:Az/dYXiTcwcRSe59Hzw4RI1rSnAZns+1msaCXetrMFE= github.com/makeworld-the-better-one/dither/v2 v2.4.0/go.mod h1:VBtN8DXO7SNtyGmLiGA7IsFeKrBkQPze1/iAeM95arc= github.com/marekm4/color-extractor v1.2.1 h1:3Zb2tQsn6bITZ8MBVhc33Qn1k5/SEuZ18mrXGUqIwn0= github.com/marekm4/color-extractor v1.2.1/go.mod h1:90VjmiHI6M8ez9eYUaXLdcKnS+BAOp7w+NpwBdkJmpA= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/montanaflynn/stats v0.6.3/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/muesli/smartcrop v0.3.0 h1:JTlSkmxWg/oQ1TcLDoypuirdE8Y/jzNirQeLkxpA6Oc= github.com/muesli/smartcrop v0.3.0/go.mod h1:i2fCI/UorTfgEpPPLWiFBv4pye+YAG78RwcQLUkocpI= github.com/neurosnap/sentences v1.0.6/go.mod h1:pg1IapvYpWCJJm/Etxeh0+gtMf1rI1STY9S7eUCPbDc= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/niklasfasching/go-org v1.9.1 h1:/3s4uTPOF06pImGa2Yvlp24yKXZoTYM+nsIlMzfpg/0= github.com/niklasfasching/go-org v1.9.1/go.mod h1:ZAGFFkWvUQcpazmi/8nHqwvARpr1xpb+Es67oUGX/48= github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//JalHPu/3yz+De2J+4aLtSRlHiY= github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw= github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c= github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o= github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/sanity-io/litter v1.5.8 h1:uM/2lKrWdGbRXDrIq08Lh9XtVYoeGtcQxk9rtQ7+rYg= github.com/sanity-io/litter v1.5.8/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= github.com/sebdah/goldie/v2 v2.7.1 h1:PkBHymaYdtvEkZV7TmyqKxdmn5/Vcj+8TpATWZjnG5E= github.com/sebdah/goldie/v2 v2.7.1/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI= github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shogo82148/go-shuffle v0.0.0-20180218125048-27e6095f230d/go.mod h1:2htx6lmL0NGLHlO8ZCf+lQBGBHIbEujyywxJArf+2Yc= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/fsync v0.10.1 h1:JRnB7G72b+gIBaBcpn5ibJSd7ww1iEahXSX2B8G6dSE= github.com/spf13/fsync v0.10.1/go.mod h1:y+B41vYq5i6Boa3Z+BVoPbDeOvxVkNU5OBXhoT8i4TQ= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tdewolff/minify/v2 v2.24.5 h1:ytxthX3xSxrK3Xx5B38flg5moCKs/dB8VwiD/RzJViU= github.com/tdewolff/minify/v2 v2.24.5/go.mod h1:q09KtNnVai7TyEzGEZeWPAnK+c8Z+NI8prCXZW652bo= github.com/tdewolff/parse/v2 v2.8.5-0.20251020133559-0efcf90bef1a h1:Rmq+utdraciok/97XHRweYdsAo/M4LOswpCboo3yvN4= github.com/tdewolff/parse/v2 v2.8.5-0.20251020133559-0efcf90bef1a/go.mod h1:Hwlni2tiVNKyzR1o6nUs4FOF07URA+JLBLd6dlIXYqo= github.com/tdewolff/test v1.0.11 h1:FdLbwQVHxqG16SlkGveC0JVyrJN62COWTRyUFzfbtBE= github.com/tdewolff/test v1.0.11/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= github.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZBf/I= github.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/woodsbury/decimal128 v1.3.0 h1:8pffMNWIlC0O5vbyHWFZAt5yWvWcrHA+3ovIIjVWss0= github.com/woodsbury/decimal128 v1.3.0/go.mod h1:C5UTmyTjW3JftjUFzOVhC20BEQa2a4ZKOB5I6Zjb+ds= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA= github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yuin/goldmark-emoji v1.0.6 h1:QWfF2FYaXwL74tfGOW5izeiZepUDroDJfWubQI9HTHs= github.com/yuin/goldmark-emoji v1.0.6/go.mod h1:ukxJDKFpdFb5x0a5HqbdlcKtebh086iJpI31LTKmWuA= github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/detectors/gcp v1.37.0 h1:B+WbN9RPsvobe6q4vP6KgM8/9plR/HNjgGBrfcOlweA= go.opentelemetry.io/contrib/detectors/gcp v1.37.0/go.mod h1:K5zQ3TT7p2ru9Qkzk0bKtCql0RGkPj9pRjpXgZJZ+rU= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 h1:6VjV6Et+1Hd2iLZEPtdV7vie80Yyqf7oikJLjQ/myi0= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0/go.mod h1:u8hcp8ji5gaM/RfcOo8z9NMnf1pVLfVY7lBY2VOGuUU= go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= gocloud.dev v0.43.0 h1:aW3eq4RMyehbJ54PMsh4hsp7iX8cO/98ZRzJJOzN/5M= gocloud.dev v0.43.0/go.mod h1:eD8rkg7LhKUHrzkEdLTZ+Ty/vgPHPCd+yMQdfelQVu4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.32.0 h1:6lZQWq75h7L5IWNk0r+SCpUJ6tUVd3v4ZHnbRKLkUDQ= golang.org/x/image v0.32.0/go.mod h1:/R37rrQmKXtO6tYXAjtDLwQgFLHmhW+V6ayXlxzP2Pc= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.251.0 h1:6lea5nHRT8RUmpy9kkC2PJYnhnDAB13LqrLSVQlMIE8= google.golang.org/api v0.251.0/go.mod h1:Rwy0lPf/TD7+T2VhYcffCHhyyInyuxGjICxdfLqT7KI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20250715232539-7130f93afb79 h1:Nt6z9UHqSlIdIGJdz6KhTIs2VRx/iOsA5iE8bmQNcxs= google.golang.org/genproto v0.0.0-20250715232539-7130f93afb79/go.mod h1:kTmlBHMPqR5uCZPBvwa2B18mvubkjyY3CRLI0c6fj0s= google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79 h1:iOye66xuaAK0WnkPuhQPUFy8eJcmwUXqGGP3om6IxX8= google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79/go.mod h1:HKJDgKsFUnv5VAGeQjz8kxcgDP0HoE0iZNp0OdZNlhE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 h1:i8QOKZfYg6AbGVZzUAY3LrNWCKF8O6zFisU9Wl9RER4= google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/neurosnap/sentences.v1 v1.0.6/go.mod h1:YlK+SN+fLQZj+kY3r8DkGDhDr91+S3JmTb5LSxFRQo0= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= software.sslmate.com/src/go-pkcs12 v0.2.0 h1:nlFkj7bTysH6VkC4fGphtjXRbezREPgrHuJG20hBGPE= software.sslmate.com/src/go-pkcs12 v0.2.0/go.mod h1:23rNcYsMabIc1otwLpTkCCPwUq6kQsTyowttG/as0kQ= gohugoio-hugo-6abdaca/helpers/000077500000000000000000000000001507671574500166005ustar00rootroot00000000000000gohugoio-hugo-6abdaca/helpers/content.go000066400000000000000000000124331507671574500206040ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package helpers implements general utility functions that work with // and on content. The helper functions defined here lay down the // foundation of how Hugo works with files and filepaths, and perform // string operations on content. package helpers import ( "bytes" "html/template" "strings" "unicode" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/media" "github.com/spf13/afero" "github.com/gohugoio/hugo/markup/converter" "github.com/gohugoio/hugo/markup" "github.com/gohugoio/hugo/config" ) // ContentSpec provides functionality to render markdown content. type ContentSpec struct { Converters markup.ConverterProvider anchorNameSanitizer converter.AnchorNameSanitizer Cfg config.AllProvider } // NewContentSpec returns a ContentSpec initialized // with the appropriate fields from the given config.Provider. func NewContentSpec(cfg config.AllProvider, logger loggers.Logger, contentFs afero.Fs, ex *hexec.Exec) (*ContentSpec, error) { spec := &ContentSpec{ Cfg: cfg, } converterProvider, err := markup.NewConverterProvider(converter.ProviderConfig{ Conf: cfg, ContentFs: contentFs, Logger: logger, Exec: ex, }) if err != nil { return nil, err } spec.Converters = converterProvider p := converterProvider.Get("markdown") conv, err := p.New(converter.DocumentContext{}) if err != nil { return nil, err } if as, ok := conv.(converter.AnchorNameSanitizer); ok { spec.anchorNameSanitizer = as } else { // Use Goldmark's sanitizer p := converterProvider.Get("goldmark") conv, err := p.New(converter.DocumentContext{}) if err != nil { return nil, err } spec.anchorNameSanitizer = conv.(converter.AnchorNameSanitizer) } return spec, nil } // stripEmptyNav strips out empty

        sr bin ;_W;$O$  H`:}(@x+ H@&= .p6M;ݏvnOdl_WX8]aq|. aA"{eUmoeu7iO) `926uayJij6m7=&)JuYvw==$  HQ#șz_EƆ/_J@oqwl;]WGm(d{r H8n\>Խn w SMA8YE W.cCw NxonB1, Ӽ*v!ns~]u{!7uǑm_ =AkY. ,'}9#1`\ɺ̈́xQ2 3˸4p7vL Z4FIPx4NI~,܊|{oUqc5D%5 H@@J+"PKvиM K] E&׎A4퓬gW)pF!*ͫFP=X~ewm0uE̺R9/$'@a"^Nz%0uD< m'MW  S?ӆxFrC[AD[YV~8#Mȶ[.Kdy}DǑFmdMYS7Z,(3W qM6%_A΍ Sl J@ 784S.K@&Sc}ogT󸊸쎜'}6}VlA+f~a6B?  H`.2HW1,nhjo+bHJJ\!xZvWа#np6ՏI@@XBkC$  l@^ص{LxAM܎RuIV9=%,NằqGV6LXW H@M0#~T}#M0,"#|diGۦ_Ǣܷa<6fl#.ce,aQf5ȸ]$}:^HyYɹbLzjV*IO<}Y1P\!_eL}%_8+Q{f)x. H@c *],*g$  l@^e ڷ;}<:WGbu*m ܷAc@V=pU.Zֱ&|M,:'H@v"Ŭ!d<ٞ(*k!`,;O#!s1vɣJ ;qOjmPI6$W2H#>LuR G~p=#\{b? u7HBX^hZuO1zK@xv=&J |qfM+MKY&Q·.Z;;>F1Kg4|/bU}|b/7X~/p6F H@0$ k.bL6Mdky$n!N!;ZC;(D/e64q;P^6n"qYw߄LΣ&$ zޅguc;wsy~ObFceQC& Q;ueD|hEץ%0< ܇7f@`ȘS a )ZJ>X?LcE`E){D][Ŗ Tϻs HV#v'ow$ qP>LDƈ?}vmWg72MzㆎleۇJ[Cަ[wk8/I@ɸrvoFK@C Xda7Nvg `τ qY}QCJ)p> 0uk;%] ul$ }shMcOBֲXiF7ӎg,|@  DŽc޾jUj4rW=XP5e,$Kٺ|Z}U$5-g 5YFj,& (pOsqV]7U˲۷!©RV22Hkc^dgߜ-gvy I~ؙyk||Xo66G}I@@UŜuJ#vZ* H`_P9 7XA su+"0)]_,PxeuyF>X !+9o=-Z /0p}CLgxFq H@$"OKd$%4G!p_fY4w ^T.˔ܴgΜ7%L-u%pJOߍEsY -\@Par%n]*efwe)d~3eeh#,N~{ۚ2KEv'%  H12ıf13H@XF`'&ՙť 3eߛ )cpN9q]ol@ baBE1K$ s{]$ j*?V>},`}s|-3Egw l܃XBl _ͳRdf+(%PWCGAˆuLԷ Gyh$ P>1t(vȩ+l(^v#ҧv Yf\͘oFsYqh2 b?7Rs{ܜXn g}@M,&DR4D"tk H@c%{&hg>v<7̥lc^ͽ&MxA( jv8@{HD}.xuR{S~N;[qqoe%Z{~ِboK971F\JW%,]rMR5o _,~"&E5)8n (p| T qҳoJkn^?amf%ؒZ)* "M !rs붌߱QBEnZ4 H@, 2e΁RT& H`A ';eh }ysW*Bl,و( dłnH/^C_  U]AXHd<:lj^;3dx7g*p3WΒ]aC!pOT6ã*n%w[3m6Q~܍ F gN= +~#Ei:yem |>uT,m%(Õܷ$ 4LZT&V H@ ̳sA;:2xsACZv }X G2TStXT*J WAJ(}bwYd9jx(pX'\|NLqVo+v(G)_Of)28Ypid,؏II}I>8YhYg=h$>~?e1d.I@*rw.föK?`\О~`0&~onZHvg+m/*yI@ lyb<1=g^UzkL#l_NYqFhmbvmh[ld]h {y3-)>~hsu+;% (pGXCxv}TP4~ Wp],n-|M!O @9lM>0:@iۘ9a~[8aOJ@@Fj9兕% iY6p!n7Y!(p_@9ͳ+sʷa]h=OX w tO+:& 4#7?bn-[W$~McJ;(3gs @m 'Mj:l$  'PU-e*?! H`3gq&%Q*h w"Pב]xLY7!xwV|<nM{\fבlɦa"j75܈Vř$s!RC~L(ܦjN{oe ?FR];>Aݽ6@@ {4.ŬwraRʐiSVUFV_$,B@GϼnXyoe& H@ȂHKWV0 dv|,uT)02# SP.O&MMy2av+xy$0P-?هGM=V9! z6I`*Oe{O& IeN5K3c噖&P9y,gŘt:|I"[ tH ˴}䆥 6>sUS~N;Ń?o]:SI`~ e@o'\Յ6%$]eA@*lw\<HMQQMo?_O& H`hww"YZTK"}}]O$U 0Nܳ*33A~UGIm(2(+KJ)o{q ~Zwt<84`r΢ٕ)ȤFIΟ6G2܅xԱ;sVK@(+2'% FBʖPl\Xm? H`|N ;6\] ;m,C;L8 H }`146ߨ%"[|`E?$0< ܇7fk1YОEpw/YW^nx(CS7 BcYQn>^oo"weAйUkg׊r-saDvwj!{% !ʄ@ & Ho6%hG~΄}ca{$6WGoT9b4K`HuٗEmd>Fݗ$=fѺЄs}isTB>M$ʗFU̬PZl_aCۙbfx4dn@$*aj6ewwxetQ28*d;HM@9/9Ǹ<O@*;*pڙo%PM .%]Hw_ c1 W$ N0/D0 {D1F SeI؏q!1|`}*lJI`X:}2K)um{՛ Cw5 xKn]$ 7yGa灘=Oc4| 9Y͚I`mLRFMg_~ξX7dD`,5 H{봀3bwJ] aE:}tb> f˻['19E  b3]]דFdc^0Y6 H #_z=~7? 77g 8$HV4Ffl5syK/w~xm~p<]"~U3RAqA6V؆CxU1ǹ X I@!}8c5"E[eW!!eL-cYqp#|\56 tO&AFIc:#sC~ MTDms@UġX0/:F$yy ލܲ|Ӷ:sKoB^1OMRp*C9- JJUUf|u20ᓑ_~ bYt<˒*dvcu^ @ZSxWS>YM̿J{|ߺ,+Mk0+_E)2#+Y3j,bV٦[Teq{4Dn GNJ i||}ݗ$ . 0e^Z4~k exsdpt/'8%v W>sJK,']{d}ZnP kDa]~^(#@@|E#>E.z,>I;ǟ_Gp]}sóJЩߵuϜYڙi2$% jX ҋtKuYE}7#AaG HytFжT6'Zw(H0}z r/Cn#kz|WpQ[%0Ud 'Ve 22tC% Uٷ\lY?I@ +/ڍǮڻM~[8'$DdN6ҫιQ( ebOW@hoADa.bMh$~f(b$АI*)*ncT4G>JLT|>50/h4%BTɂ^ A1 L#EL+M*[?3GTl]6qa8?Ej|YH h8j*GImY3G>,VVZLM떌 IH@ e(J~4 H@M0dhRN1{Tv3S&Lu3@40?";B*:=L̗;CJ`rʾDr'i!JJxqVfy6i/ H`eg]\p=M~ \*50 R g% z)xX13Ԣ18_ t'~[>Fp{}qѪ8$P,Xx~ 񨳽ELZ.4i,O)r3ʾW!4~q36[8 v7 DTݗ$"p3;Ks9]1[$ |^{Ahf԰B`Ɨh@\EU)/W$ 5 0gxo;+iyy; t\\ʌsm#{l{'dǧ-9v*h$pӈk719>xµc{^*[?ʞ{Eݏf(R&n>EqG-O\]J{IGSS2iPpn=#& H-obʸ#ߒmQv?c X?&{y،~r}l#k$ lQ\f3~[$ >XQzuej:B+W"P7z7=eգ9Aek=0 S,l mxevbp?je܉$&pg{V1"z˸DCzL}6A@&(8?_3szr{v匽a* pQ%V1ayǶiUi!os<#ӭMgiYfwˋ7fIS$P%j%o7ya@~%.Wsd!}FNvvv .y ft|f|CާlRm6۠1%  T fG#q\N!e3~JC&P 2#n7{9sA{gвݷ6i >)J}P}xMg$ xw]]k:B9U*ǹfs茀Ўcbئ&;7f^G$$0~e1w?{($.GQEM|wqeL. Y@ϺTe6rT$ `.XXv<=y<K`"=3B)JQiw[QbϑBP 0g!ֿOk<6K$  l :I;_ިx<ҳEF=z&m#@}Y\U_Feٻٜ͐mLr^/ʏ%0NVebwumdݹ 6S8!{%=Ifg6ck[ eFr2@}گusA{?1'H&p"!~#lX ,SŇ 0 Ah~cd $Hm[ {̎Y#~(7UËXZk^0 9'!6Fr,KftfV `C"a']۰ސd=Clb@4Y$ 1jGv벒Ychr!@WI G0A;u^'Npڜ==#E ˤEV ym<+E$  d)|C)c~74 LhܶmS(3)ls~{J2%UUjo3^18 C BY<fK%!%|! ''[M%J$4:SmHsHdE@F\ ַ? ?d$2b"w2k4WHzCq&AKCYwUA:zoˎ> -M>,$@#cy~]):~g] [B&L7`NGmcܾ.4^y+A;FxA$DZ?/ L@&wʍ7RM>Gz.盩r6Rj Wz1|+/K$0٨pOlv'1pT9WI H`gdbS h2^pc6zW6FQmH%}X:+ &ßaL 44]aǜ-)*Jn,$ MqX9C˵2ћ}.yh_~k6뎽 0>[5n()&k., Y<4he)('eE}6H@&c|TS?2MG 4j1G]6D~K?@7e} > H`LJ>w!n {պ_}?5+R~5 H`8 ܇c?+#}߆e;k"k2l J-s;ޖ1Ld 3ޏK"bwg8k ܚ b\#fk޹AT7_bI`AX7~oC # HRqlIn5z""|GԖV)$iB&AsHpmI8{I@]ykWv7I5"6UsxOl cWH@ z,9{Y+mR䷗\lvW5 H` ܇>Uq"Xew,?b7  Bnk(t3K@H\)<.-&p؝r]BJ`| [m18E@C)+QΛO `=yhqDsTp gT=$0G%9$ .x ϻu.{N NEK[ іv:5W!j_U6ԮI@#6>H$4?+ֶ$Goba:i O*8g@BkIc=șn뜱LM㳯I@;ӱf0yDr42\C r-ML.ܾ-U"c5cvQ-puaO: yI@v ܷ3Bཛ oW58cˣ.oG$JWHkǛ6}u)rg`B [cn- &4zE H`O"QiTk4ѐoC_HQ]X+<> @wwg?;x k"SN&Vaл=)2?L}gN4Ar%fN! H@!g51?RwFV}. H/ysԹee苩י.+ Nyk GA:/ H`w wg+%  B@?6x%J\3D 9I@ 5.U b$]Ħ6'>E eh'TsCZ3&# ?UUiFC6ގ 9OQ>/ߏ>^k|>(o&]7 c鉞ہs}Px[/זGeMZVc)[ׇw?V=,"=.M] turWlTLwk]hGGz?3U4= A[s1sICc# ̍;Wu*xG\IHFN>MϐYIf&BY"3nQYdCet-#@҇FIFty'?U>@q9sCX)\z18Bt  퍓.?8mpޔ{%2? =rmʂ$ wd:}~<& H YQrf,Ӓ)5sYKI`S#!jIYT{vK@c'}=d$ O?+ /|ṬW|dBG C8gTd$n*}iS-o Kh_bѣ0,SH@h#"Ou$JŦp} qIysDG C@{?G{0f!6Df讫Xe> (@y)Z^Da$P*Nv0/ e<3R63Bo͹o A;A•GAI`h+F_k0Z[@}gIj|V:c9qH{޹8;j!{ q9sQ0>QܞHx(&K{3MF~9_\ `\Ά/?|QOYW~l[7@:1/(p$ΌedKպ#g˙~ln8( py*X*ƹDDK<Эe~]Ќ k<hfLHDc, P8O5 H@;x^SbҺεwFw o!$ A $_U߂wD|z/>mY@iOc<&2N"L x^`ӡrb-G;?F`@CS|?Dm! rן:K/t7:$gˎ9#'96}+ edbEf5$ :(5{hdIZӚ̴8F+z$P{GONۗ@3 Qg?$KKA{d"3y:1J->yhߞT/9' HJՕc5 H_| TIPH Rji] \WE^6_گ3v%  F`ڥۘ>!?&&$p(BAÒYD㏢o iqMɘS!5^>{dwoJ\u\fCS y'PI5}oPgj'쵙"6:M1gW~/+ɩJfwUK-}n9[z-rFU)Ǵ){~ ,@iC$,(:䓠zWV V,!hF6$4ĵ_D>+o=!@$S;1b1_Y# H`E!po #O$J8~}ʺXѴ6<64s}D pR8?Q<1 )6G{6K`~a8[ӵpE~ 5 H@ ƿ(r3VGf62M@-m- &s֥Z7ϣ}%  L \eya?1S_Çhp3QXƐ4׮m)nuQ|%U ItO;$0^'AY!C_Atvk#Q["a#FT!}],awTLJp#aoxlDIig4ħM݁!2ٴf\ \,y^">x%߫yq\n(zG V0q}9CkM@-~L<̊-9*S'_% H`:Y7^HJ*C;kr"%BR $5z. H@w#Pٍ_9oa#:9Ə˅nn_- W)*냟Z $fݍp#rc-!}NJdȌbb6k<-8S?G H`tA6Uf 1_AF5f&LGam.օ'+wi^:^|$P Qe9c>ypnWI@3i;\w0^'A"kI`8Uۮ.𘣟M-(JD*B i |>3މ$0}T\Ub$t/u)웥a7nIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/keycdn/index.md000066400000000000000000000062061507671574500246700ustar00rootroot00000000000000--- title: KeyCDN date: 2020-04-10 description: 'Showcase: "Hugo has become an integral part of our stack."' siteURL: https://www.keycdn.com --- At KeyCDN one of our primary focuses is on performance. With speed being ingrained in our DNA we knew from the start that we must use a fast static website generator that could meet our requirements. When evaluating the right solution, Hugo met our requirements and we looked no further as it was the fastest and most flexible. ## Why we chose Hugo Before our migration to Hugo our website was powered by a PHP-based website that had about 50 pages and a WordPress website that had over 500 posts between our blog and knowledge base. This became harder to maintain as time continued. We felt like we were losing the speed and flexibility that we require. To overcome this we knew we needed to convert our website to be static. This would allow our website to be faster and more secure as it could be delivered by all of our edge locations. It wasn't an easy task at the beginning, however, after evaluating Hugo and benchmarking it we knew we had found the ideal solution. Hugo was by far the fastest setup and offered an intuitive way to build our entire website exactly as needed. The Go-based templates, shortcodes, and configuration options made it easy to build a complex website. In the fall of 2018 we started the migration and within a couple short months we had built a custom static website with Hugo and migrated all content from our old systems. The simplicity and vast amount of functionality that Hugo offers made this process fast and left our entire team, including all of our writers and developers, happy with the migration. Since migrating to Hugo we haven't looked back. Hugo has become an integral part of our stack. We're grateful to all those who have contributed to make Hugo what it is today. ## Technical overview Below is an overview of what we used with Hugo to build our website: - [KeyCDN](https://www.keycdn.com) uses a custom theme and is our primary hub for all style sheets and JavaScript. Our other websites, like [KeyCDN Tools](https://tools.keycdn.com), only import the required style sheets and JavaScript. - We use [Gulp](https://gulpjs.com) in our build process for many tasks, such as combining, versioning, and compressing our style sheets as well as our JavaScript. - Our search is powered by a custom solution that we've built. It allows our pages, blog, and knowledge base to be searched. It uses [Axios](https://github.com/axios/axios) to send a `POST` request containing the search query. An index file in JSON generated by Hugo is searched and the results are then returned. - Our commenting system is also powered by a custom solution that we've built. It uses Axios to send a `GET` request containing the slug to pull the comment thread and a `POST` request containing the name, email address, and comment when submitting a comment. - Our contact form is a simple HTML form, which uses Axios as well. - Our writers use shortcodes to enhance the capability of Markdown. - Our entire website is delivered through KeyCDN using a Pull Zone, which means all of our edge locations are delivering our website. gohugoio-hugo-6abdaca/docs/content/en/showcase/letsencrypt/000077500000000000000000000000001507671574500243325ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/letsencrypt/bio.md000066400000000000000000000003241507671574500254240ustar00rootroot00000000000000Let's Encrypt is a free, automated, and open certificate authority (CA), run for the public's benefit. It is a service provided by the [Internet Security Research Group (ISRG)](https://www.abetterinternet.org/). gohugoio-hugo-6abdaca/docs/content/en/showcase/letsencrypt/featured.png000066400000000000000000004400031507671574500266400ustar00rootroot00000000000000PNG  IHDRV-L&iKiTXtXML:com.adobe.xmp -CDgAMA asRGBPLTEٱ‰ԕܼ۷gg⼄ozyǎѪ叿Ĥykho֝{oоʨyիmЗ`دu՛S}vϊ֘Ӣrqv^}Ξbd߂ӷɋtϥx+?@tYZZ_ݭ YLMMdgenrkPxyxc~phFW+2Wfm$ҴnƢlxG췽qW ?U映 z}=3WSY`;l[|@m IDATx_H}`5ZYV76MO1lP"^U#Đ\L6m40"KI t&6u"_.DD6u.b.ċW9XkY/yR|Se0a„0L0a„ &->z^V#ᘟ#ݺ+Ĺ*Iɷے8'o\%",skVYFۙ0a˜ 9@8gjA`$+β): UUk2Rq>>r½>nvo}=74p$n}$ ܾۃN|ɪ۷?}=713ǘDܜYɪo~ݲn0&L\UPoCd+dJվrseow]row:G#nX+{kk9˚[Ҫ۾Y~o^`hm^Ѯjwhooo(]}2izƲ2{5>5X,Oysv^e\y@l-7躷"EDwDw:+FA'&} Q#䇗!51ڭޞæ~dEo/F0aJ??BX-! ZR)NnfQ5\w3]ʯ "zvq`6SZ*X{{[3җZxn_3W"_t-е{s@o߾yk~EPο75-]Bן#}\=KQ73tEYśYym7o gmt=ya5_ڽWk{AD^&L0Q 94{]Ap1JKt{(+Utjq a]VK۹OtrժB8]0y'$`F`ճ7V۷o/܄!]3 qD^}.Glx>yyyq>6xjճB/{5AXj@ &jQQ訴>*o۠YU>Db1ntTZ" JHV?އR ahw X =ĩ(̷Ik,! h(]\ͯpJNQKiJQHm͐"VSl9%zvߜ_бeQ[oߜZ]='M$B8bm lxoο9C7A"MժIз VM0QVwJ[BjR~JKۓŵ:"lݟ_ٟ_K{ҶUOέVk)R~ӽv'V?]Wv|4>{SY~Ûgon~>.*ó7?j*M/<횳7DX}GH͢zk`͇&L_;; k_V--A vWJ8FUAub@nGpm97FVviAW^7?]/ N"ڎM*nmjʇ(TG!yg"x|Kk̀7V۳H^^2˲[|$LoG0 m`-(z,`Մ WbuD `q%=9YYJnҪ]])/WW-Upˇ39؀uozWf>WV>Lڭ VYYC[Gwf8 ]EW2++CWB9b_^}{~3qjSk?,7odnM?CWW?-uiA4L6 SmY*x t.&M i?ML0a Vn*m>aoȵ dpQj;-NN{x,Jj"k\h3ПZp ,i-j6HG$y5m`l198/n2 O.Vd4T5aDET t%+]i#9~ ܭOoR6 [U}~zs*|k8UU󳷟mHC7 mST5\5a//͛37\5a„L?j„ ?V`Մ & VM0a`Մ &~ !Ī) 0a„a+ӁU74\5a„ʩ*V}pՄ &*6TŪGt-ۼQ&L0q =RFҿ?r+d„ ?0t[?: UM0a:6?꿙VV&L&Xx#8}*CU&L`UO?WUVdVM0a]:j*?+p]jj„ U|/次 &L;Z{% Մ &~ UKhq &L˾?_eoq#&L0q5Ti9՟X7W\0a„XHGf@A k2a„+G);NUPK{oL0a ʉf-JU&L(I*%U"d4E*ʄ &Lr_q=PuX-n·,n0aUeO ?sJzk@-$6a!/__B/{'<}Ρh>+]练%"`j„U=ZxăUkbuDas:ZGF"ۄ &ޙ6{G*Fay8,~ѣ* VM0sjk$BXE*QYZmpG`U~ŵ?V}֋ƾ5ağ?=V?Yϧ-j۷cuqƷO?6vU&L`UŶ`>ga}?Y9CNYw5WK0aHbbr^`Ҳr=/`5'UX+˒A|;ebp _ǛbgQXb~>_IRPOos<>7mtN?%Zxau $ cXwAg@уv[!~f2OM싈/_ߗrݾ?/Y ّb#.x--C#m˹^+p4b6mRoΝ^>jˮ/0SvEHo,k?nn_H@`ߚě# }8 >M趿iW/_ym[_?burvՁӧ}sxrܗfGgUH[+1@_U&Z+Q~m  V%ib+ϚDt b׈讃pWt r<ұXjo,oݳ?b?]q7 g}d/Cq-mV~БX48(?(V5}i\!>bQ{ۻpţ/')AKi>4>9O De *mp2~/œ?=+x/K,5I:8׼X}yrr^ֱMb9*bcK2]+?Cݴe]"4=?d5 ߏ,T:/j'T}mx%Xͯ &ṗun"=29O䪩/y -^nm??s_ X_WoOZo˭uzv] Qd-tgϾ^=^|Ϸ )T4y#[(V!jvksXEIhEaЇއ |_nm!nPU'g{ /!gj3>=?efc>uv 쐿8ԭ=-Lȣ^֞c5O[V?`?7x7q-\-A@w,|K6qDnfxb-=/A]>yjWp^lo-E}c|k.`.V{p5 [>FB Km͠3|N^k|Ntgm@!kxZNlX=\>~5Um j3kX٠5R;_\$VVziʊrx6Gjagf.JJ" xmд0߻=G=uV@܁ )md1(FrnJy_!>!H""Cy}o7W!*5Ϣ'$OyE&(,z#|Aӏcxp|<6|`2lo=q -@ 𞵵%KgVՕR2۰Ze Ѭ*_ XVj1Up V{=qxb@_Hk?Sc>6XU5I%b FvOf=,Fb&󫻯ѽ-.뫊zo2<ȗwᄋVsp ?[ vyzKxa_7VLUw~E~ϠωI4C^TV?}]Gu`X=hj`Ubzq`a{Xbyv"0plX]~Y]yu`R*(ץW;ymcp xcx_@W;X)Id^w>\a`mpuu+V}XW` ГRi+P^Wnfe\]"D8LpуVu''zh\z>Z\p&[,ۥV*բ%z(tdX >R*3GX|tn_')+zmQ|e\/ رJnISV! ;XWkgO>ﵰbOC**`1ZVaC;v& ?Ua{-&~ lD6l } p{mxt2 cPgՊF#'V8ZXP.ڰZea)`X%Xi,d_X>X.}jAeWW껯}[_ZFH  )aT*tj|{˳W@ll?\믾|E`e+=[ _=ȫ僃×H c$M COlN} _T:j_+NXy=祗gn2zg-ƿ<now|_ 9rP<xrvv/pe)Q}eX٣iy—v[UhT-WXv]\Mp_ESkk{G_l; eB:{r9:߳[$ʖ*'P;|?1U\zժ>*4^n- `x࡞0o|xT=Bd=E,g_$U5wL*NN^\~ `xXtԦk׉r̻aY VH; Ʋ{%mOҗiUї0w`]>),d}^$.yy}Wsxt+.Ԕ]ZVʫ-¾"Y9lUK{UrD Ҏ0A`Qf=ڟ7Q@`ugq>&ɫUR'XIKNVr6Vjy7*W)VɓPҺ֋U_ċ{$> XJ3T)kMg޺>TEXͯxMV:UAru~:>pv-Vvy[kkƶ?BgV=BpvYw @o·ӱ,b>VG5*F <$O3[øsgv9&ͬ++9:V-m[?S6(䰲7aZgEZbe(O)^Y5?&9+UJlҜ|ά Y ڞ>=0acbXTjU&L2X5a„od0aď `Մ &~X!*x+n2 &LVWv+/&wρaR5H" #0deE}U䍅߀V*Lo_YE"yfIfm(vĴ.Q0A4JHP`0uЋD9HE4 ~Oį onFxz<$2qʈCM&gd-&ȱ-K;Its.M#FcjjRug hn_nt<9lT> w+"8r@ǿD&QB[t񸐊-D9bst44;?4f3c]+LLaKC-Bl?3y3Fngȡl<Ӑ/nt= _aʠ5 J\q Ge82-= ӧ7YU@@k\A qwN d 0:wgnܯlK/w+A˾!(r]MKOB=E|GC_[ B4jm.o>yQ\RK}9bZzl { rgCeguq%aJ0i͝867tL!%0mdG<~}?@C:LʶL,cFie b:6&IהpXZ2]:"~'rZ"Bڕ yL;ajKGjUwU_7vAYPNU#]TvqDkK. l-:Pun8jӪO8SUɏU?Ҫ=?f?jUP4͢Cô6V.\=@[WچVN9*%K`xZg[f]LRPfcpctA6ۙmk)}' JS8R}BpU+'"!;bVFӈxroM" `:@ ?0eQIQ i WI)Jߕ^Utƪ2r 1szcLi j0C#UuL5ҞS߈D20V##jttt|0[ Sbsu%XL1Z6fiUT\JVLUԂnV 7駛;?#aqP"e)W龲muuC6᪇j]TVᝋRb?h}0@vLfB5(ymR5fۂ5```GD2b@~oHkvX\UjD'XZ;̆fqxN?pu@d+,թIVV6rgN \ƺTrSQLUwj'*cI:1aBl6!@T"-/WmZ#* eqy)F RuHx4ME}W. q^ .جTjjjzմjbsX,q2XOOp?& ^2Vq B*G u U^=E ga\$Ve:Չ IM(X7;lMXijLQrJԘ3O%bFSBZsUu_V&)֪HuQjUkCq VYVa!A!0{,*ٕBdh:m̌UN637XU]W4VLCbSU7ڟ$ju:LR2W)W%JX=8=DLJ@Q%ZqUXɴ1EVxE*-P*Y[8LU&Uc蘤x1uHJ}*W=!|rX ]Kڥ*V~z9L?E߳~.WZjRTt¡jUaCU>q40W[[ϔju==UXjuAUYb[ .666zSFl**~m=nHrUQ*VYj;n@Ed|(W @Jc.U7:44:255*W[T夿Mx}6[U=UH-j|'q$W޾ӯ;XX gY6)uE8YV.N\PZJVU@ra,TT[<;B3W-pKI[hm-͸H 8<;V㑞SUOZZ`ӈMZ  O9tmsQ(uU㊩JY*{TUb+T?]3VeM(SZ%aA*T_:j==(D?f y|eBnx\HV MMXF5UXIꏿVZHϞ.R=.!SoWPKR}ZrꐩB V9l=E?8ocX2ZFοT%*;S+(\ۘ*rL_)h +iYqoQXuVe{_tU}T@@;.Z b" .QT5Vm5V(T/bp и D6C] mePǿ:rܸ JPfq>t*54k*IXW!]K(_ 1SSm4UjJ46)^V(r^_ǒ jUꛚAX]뫠Šװv4Scu]4:X%zW VfP ⡾>54%XM n0J4rK*۾*-\όWYAI)tP*`ՙVuQU\`]r*R 'H>jԤ VmBήTZ_pͶ>q^VŨڇVURTV#:`&U*v!*fۦ?n׉ QgDM :]N9'ƪOmF@Whj**ULU^bSN3%3@u/!Y_@kn,Vb=TL&2Xvh(uSы" + *r:B5ە+jŠJ@JjZ]Z=Qjd A?= k X$a.k!̸*e0롤UmE*S")OU&PUܚn@k$]e+PA;Y٠Kɪ(Wڨ B *2?B8 qVubUªd2zeVCvV)_͏Q$[q|U֤VuթWTkSY+i*+U/(Grg:{qI9BƪL?ib~j-"PX%`]]- } {{E*jHՉ&v@r5R1VEUB,$X%:puuX*_@:4;!tblJ`%jUfP*ES=͙O7&Yj2KPj!@DªNT%gvE47ek8;uJΥJ:C=N𴍫٠C٠`cOEX fZ \gUp cEegPUV@USZoQo<꓄]wok+7<Հ{uꚰ`Iln YD^X] V; 0VS$W%*TqT2Tj!*V}N&O&FGw5K1( V@QBcgf:˫Uȍ9`'ZjTOO65jusap5CLPHMOiV JqP1|X*Ib:-Z?LOkjP U[Jo;%=6 XD*W1U xCw]4j5R˫D,M*=\忝U*R/@֦TF.ASXT0PnP*Vv: N@P[{RqVU=\TxސZrURsѦV0Y 8zՎ[Ǎ?z|)\&` j*6W!iESS/2B+:qE[šPDQ5Hlu#M2q:SꯪNU]U$~sI@+ h Rc:Y,@VjQ*L>MxBtGݯ⭆*?W5~}UDI!U`Pg5Z bTG_UZ1 aUauOYݶ6ͪZ%`]Pժ5NRT䭕ҳ$9U"g字(j~M sR~X TLgVq%Ǫ@R[@bѱZrU[*' `*iDSi\ݜXRfN 6oa JU-z[5O[n SN3oU bU֫m4KZ " bY TqLek ::uZI;?JuZ%@jO1x xUV%},c \%Gj:5\X[Z 6@:*ꄣS**Vc1*]K44z"=D68#WVqEՎ[a]MVbdh`X]V2iYU*Wâ^ŋY%juTl٪UOPɵ=Zu\VSXͰZ\UUNjWIj][ݡwՌYet@peTVjVe_ײ J:)] jU)V8u"J:NVGƪ]*) "[l~Z@L6h4S&VÌ2ڪt&3ݏMil ߧ?`U k̫jT9Ri U} kUlGMWUUj\o0PK#,imju$,U>[UjPJҸ()^jufX)GU7rcUVI*RՔvju=*UBi|lqի™&Q\Uϱh_33ㆄ!F(0X-`52*CRQKea%T Vh 铸4wO7UO`tXV^/ 8mUCU6X:Vj**V \gfZY'9QvfbUnU*: J br; [յWNjBKV ښWUNUXad`B] SW: ٫:izl4}UъR7^yu@'V+jZTVbb5UNBwժf|_zmM6iwPFu\ ⑫rVU2p* D*媶U*T٬UIJJCU<ǫSVN-SŐ@**6bZȴAYYȾn\2flPs0͋TVհ*V[ZWaqHER, ^j_m**PZUUT}oW$q7d+*SI\ꜥ:]YL5hSvI՝32a3s `j*40e\EҪHǍ[/-*B&wQ!FZmMV<-<[5Y.[eXbXu#vvd6\QUb`Z)ZS՜.ae/XERQU!9jkJr[suS"UB)< @2YUQv't _*d$a6P2lp 3WQǴUG*)*]"/hUj!XJ `5VjծT̪x3t%!h a,_$TRTL.gj[TX\IRg+v]Z/k׊jggjaS; "RU KOkKT`b\qV#:kUUՎzU V(/`uQZ`z#*oZuLX*:z}bx*V aSPs VlնUNUYfTZuګ^Z #Wv}`*ŪkJJmݜ IDATZ5%LIUS M=ءcr^cP0gF]tUЪLzՎ[h%MU6`YW*\㕭ZVEV2ʄRhmͪӪ?`۰l*m 4UWԕRJ̭NӬZVM:LWA+Zʒ׬?J-;TF-NJPqZUGh*V '0,_sW-*Lt :VPV;VVb1Z&1\dOjdRK8kںcjXt33bdReYkHjk*<.&V)V.jU`mtjdVURcuaխTE⾬ts*]- goX >Qz=S{j`WD^EN&5Ye5 NPV38G"BjPťVWm2R[-bTu|!]*)`*^|qV\4{͂+,e$GOYUVYq~*9e(J?tH@V6 1*ǜUx^Дڭ:f#m Tѫ&U?ZUQJŪ ?]TVZ4Z*qWFYy*nw+ÜUt-b% lվ'DyU$/ *WeT5fZ#ڭUlj4OUEGAUik3r pXYo*Uu@ڔjT VUEBj\JJUDWߞ#UU\Zn*vUEak ֝TdA9:a_e-3խmrw5Ƈ: cK tUJuu%XT G'26]`IN]b M*V#i*"XQaP/ edOjHnXX}:iYZMhcvvzc5C*W*ڰ)ΚN{zrxiM'TmT`M$jUUvTXU%eUW*WPZfOd&bY@v%cL?JQmV&Uv RwU[*y@RKP6TUZu2T;ƫ@*=W Rr,e瀫AU#TUjVD*UbrUG)lY.MjIN`3`'] bVi*9 E5IZdmc*ǪTW \6z''ꐄU6 XmjutZUjUB T@`ᜯ"}qU iwX+ጕSu*^ Yxyk^ĩcjоdUP\-\EVt EyFl^[EװڂlCY@6(ڧ-Z0ЫE@-BXkUv|UUj> We@d%c8y>W.W9Drմ@ޓ]bTd5AʖpNV+TUSLQ2`e7.bйã`U֨^YhDZ֊]* @`5—VXڪhuc\!VU##6b 8V5U3 P]#V Xa^Uț>}ڿk"TT|VJ5VYѪ$W詒+2,EVq `&ëVX 9mS+*媂U)Ҡ*jPJӫ)*MX  - U.,XyXOH*WqTZM`\] t;v b֘DNSRgB֪}sVUSժʯ ~H@lqGmGu[ ze'z8UنFYJ<\!`U|=b*nXdd>3qr>eUX-J#VU4T᪛*Rն0B'jVl}:Q*OUUZdMZV[BVm&du-GY4Ղ V PI"VYQb Z% ݰ񸽫JVbM44/uB+[-\V¸jU*{i"UJӸZ!V:;4_ժ5ccX%SkRP@M䵫U&V:kUIL`XVY>;@v]= Vdzm蹚kyC[`S$>UoJmnbiX´/@[\OURxpL VI:-b}*U4YUUAՔR+$jj* `Vnj5Mz"y ;`1Jf-r"c'`uW4Iq"IQ* Gp kt{sj@P[-v2յ^U6 e뫮3dG!b1J\5R8[SVYT]RX_O=WD%J XCnZ& `e(|U4`#]!*/ a)XXó!U,V,ae+bu]-}+gucV׮r𰖪.UIfDs)[gզ[`EYtwh aկ4$i`uرԊ4 *TijE[tc *RjgnHԘ STX_Ko NARXʱTiW6(م}q?ԧ)L$ijNR~֪f_c IOVcSKSas:03KVq c.CVVb&Ue?B 09u@OH3gYmkU W=?VujjT`ZMk*Vx j "W*;*^[jrNJU{X*WS]jkQη I U!cEԪc~VeDYM@fU*H s/Zb@ijzܱJ3qV[ĮZ;$&j9* ?*~x>h^*KXPUfp:))1oՉ~U%+XeXme:Z`}VW ` %$U#򪈭X;^Ňi+UC9doUe*КUV+VTEgi5vYgE`CV V7+rNO'ބ*M@PMeX}U.mX-#Vfs z8V[$ֵԹU8gDNbWi kYѨl4u[Z^*j?KŪoӪQ@V:JP%WMV xy f)I_Ո_#Q*Tj5Υ*P` CqN<]oU]uPb5k[JM:bNƮT2E0}rgr&Z9WMUqvas)rɋO Ǐj/-"Z6s]+ǜF*Ф~5V.կqPpV: ӅMCZ9{S}:Sn p3n*_ŭZeZWYsUFP b5"El( UaP`fBuh(KV*y*L)٪TTMVYP5 aV]E *kHTUj$$Wءl/VmJy)q4)FJ+U;tUj6Xx dV;e}dԂKfJ : K*!+pt;=jsz@X=&*W=^iWVIW5ުǑ[ZGB]ߵ@гpnհj:1nڦW\:כ,mŖ]-)pUWWn1Y*MUٔ*|/W΢(]@oFNJJgj^rt؋UX)YxjaW0j$wZxjŪdBR4YEVYUv/"2m,Džd>JLNټUy$VaәʻnZa>`ZUejAU*\*Qy.DpvwN^]V\ sV->%V[*RUV T ~/@Xjs0?V2o!m: 0[MqX&d>{nSV\UH&ThU|U q]N1Һs5nH :'QUtWHV1b* 7Ω<0q_mULhbjG-+2ruXO6΁Ztr}kGUgg_> Ce&WZ.@vpVVkX+VUq(V@Wk*`5S`#S3W5M4+jcͪJjV3bXh6)A5',VTxU*_pXuT$ ukZnM[{㚥V5Pո;Mґ l/ btsYUשVc WSR'Z}ۈ* *_Mګl`]P)-Xc¯Aq_ &TXlŏTŦjKX \}w6;V9Ueɪg3]M+ JiWi9x)֬W:5`X+j"  Wڂ:<-Ɉ +.AV,e娭d]@%FV՘j,ZvUg䪫h4Lg=^Xur^ZOn\U`-V4 vNO=)dɸ9~իӭVV]\թ(Ǫ^tǖ`%屚jjgnj"W9 _ԈV%e (ndkS]E*V诶Q`'UZ*gWi:tdmcDՌBdҪ<PT[wVA5[0ӫl5].qYUfdcPЪBLUkUZگ$U[йU0:+UE"UX&Dp*A%Uat&:PgDV񞐬VIS?Fm-UZ|(lsH_T NO=XRsM*kHdct}]NW VG:LAS@aa@+Z,$sz6^XcUօ!j?ʫUEUґQw=U`U*l9^?(i |MXSh^U2]utDdZ_U^bU-VO{+ȊnUd-e WUW\UzF*6YOOj7GUTM/> q}U&sW妪 R*'Z?JqհvtWuYUVS *Y 5HU}UÎ`KKK?,uWr%U;ls5rU>ux<:7 U1\UT6eUYr xZWokEsVT&M@|MQ թµ [!hD̫gKCTM@l_< ծV{䬵Q՟ rP%jutZVZٚVJ*:ư HS TMc|qTT&UEv\uE^OJW$ WUٙd8jv$nU՘:G+,%%k%Fրhj*[*UjGyJfZ x rªU )դyunjSY- 8vUTJ1S^J+R+R-XAUMZHKyڨip}wĪT` :+IjjZz2C MSunX(9BpJ`5sUȊz@Z\Q*8Ҁxq@͔agW IDATi(]cU0j%TV H9ZV5ELy+ ː/ 4Xu*aP~ZMV`/̃Y:u/& S_H2%ҪjJ(+uTS>) D… lf @4UXp Z5VebU>XDjC<*~NJ~oqTjuU2(e`uy V,W6IVrfCXxbU"$2P-W\%US*y@_p n !]X0tUX*M-V*gsʘ}cezf|NeU'`Jܱz5C`s\i7"f:nZ¸tE tR햗U)+jj?:4Ё[zA4 ZM*kLL:m XMi l>SGV-uwTȋz=Q4j=Z*z[ΜEr%J_36^ZxϏ?{ܣ{#/o_?,>WPP#ۿ9I9ӟ dWm_)A^!UB::?Ra$LRzb{J=?R޾w>eVŪ'Uʭ.{hҏ?\_uX#0ĉ^gWF~lmW&9)9[׃n΃q'~i˧/H =x^|N /pkg1 D4gww?&bjKVΪZ=Њ }xXiQJxyF|C[HA`4a|ia] 2tK?=,F nz)LEe՟oA=7QA,Gw.?yh.jDd2JQ&3z߻۾莦}w87!n`o#j3T+U/7y~͟}&S4  B6@b8o+*P'[}* lu޽ [Y呫}!\}i!w?}+ۯTi,"x>Я 2'O6X\SʢV} wP(V: f P}"]Jk@>>gn!jf<O^Aoj3T?7ɧ礁9Hc~"ChsoҟY>H :Z{=)Q8Ǚv@R#)sN|G<{2\f̑%Ǔ݈GrD5 T dبZV^e4L#2I~BtO3+ ڍ\P-.oưaUzlRZoH`wZZˌpS%*GWU[u귅?;WiU^ nc_ kccc(`ʈUMSU j[ʫE2{ѪU<@BsVWEz%<)P J' `7L`U<VHR/gL1QLk/)X\jk,'+2UmtNg2qUNۜMf>p`eog?6slΪTjL|+)Tju 1 \ jl,U-!iObV|=XdP  1Wo@GtX%_Ul *jZcS5J\$2XE1zS /%o9#ep?}lvCC["/ZRNU!W=3V UE'5Wު cS\$#Em۶~Uz}yfZ\[eE~{?\[U>|%VQ9O\UO"(@M(U:Tj`UT%F’ERHuV4b5rJL>zCbdOt*.]ErAjuAʌeكVjT̺Vl]/ہ:ԭ 9T{UTQ`ەnBƶ`AAoJ(T1q9U:z$XQYR*VEd =Vi*j*|`[z«(Z*Ϋ≪~rү\5)iKJcU>!R*zKV ZbfU 'vfXuaՍKjjc53J}6tbjQ5ZMXdX`-W83>`- 2WVՙƆNnJh2@,T\SUg1U+ZUh 2j@e+[z"|' }ZL zX#X ˜TWh8@cE8w^RL[3} Ց{Yk?sK:!U㑓O/~E^Ein?iUU^U下ls]cDzsU{w}BW(bUWUݍ?;^UJ'5ƿ[l4MŧJeX+SW+Ƣ+BB|#XVE4mco/JNNKT9xja5WLjԅQ~(08嚀T՜XeZVʼn*Rۼ^2j @dy V:կ^yb/UUPz4(myoT>BՓ2[Uo8Sp&7nVjUXzY2cT<gc 53FO WilA^j}jjӆYڰæt_=^y_%J`{V360O؏j5cFdyWj"2ZJww[8 7䊿Z=\ *V-U+C`3zo35Wy=hU<Χ*XkURDnfYR{j(ZSb-*!5,U^*O*VW-Ҫr+YYjX+"fJ@XsZb1LU͢*WH,5YfG{ X2=CUZ\??GjX0*EuZirW"6X(pi.Y]%zUU$+'6f0.*'<{FUO>`Uą3*-%H:j5bU+ʳorUmbǯb\V ŊC#ՓDjf,EmʒTJ#fpt<_Zi(W1 d+WIU%xj`(V@]LY@&Q&Ҙ `sTW#1o'4kUnXijSzASl2MV~\ucG^G5 UUj  `rcFUjN^uZ)11iU AӵRZ|ժf3Y{\*ZMjXT.ʈUղRXrY,ix HMa-W<Ƽb"f.ޘ PaZ}NXz/1QU.X5@K9Uj ;ljk*ZB⑦ PQ|՚j'ʉV.+^UXar\}2;ŲP>Ѫ?SXjê;bUVpLEƊ%r'7ЫbN*˰r0~'VrJ*58TЯ*_bgV)IU@ VEfPT-Sb|-@U*Zc,`}Va.X9 dU`5%5>Uժ`j?(㬊5=U_nq| t+V)V6D:WU|Ҫ ::gJp ai hm*]Rg RB*XU3XUU^So*V IDATϪ5YjYIۥV]XTt7?W6U+bGP*JzxLAV*WiU Tw^;&*06 YYQyjUsT+e*W o@PRTNZb a%#, *̲j |CJ׫ vj9zb{` J+U%]/☎ XFjک*]H 8N"mm5!Qնb7*}XmzoBL0NVMa^4-P y ]XUkZuZ9ԪJUb݆ `U 7n xk?}H*TXEVcBCrB8w$U%ՄR@zz TЩ" #4LUHپlZD%^.OU* j2p9Ij&VuP/]oY/\ %Z`Vn啭x1%dJ9*k5ҸjF xԮ*{YTӀնx[sjT=76UU$ TK޶]嚕jkU2K%Dj].Pp׏?X}׳P`Z#JTc2*U3 W1 Bb Jٙ>j [%*)*U񄡫Cj$0$mU0Se-JhRc"XLMVEMbUV}@-Y @(`5XVh}YUerҕRUfUժB+M}Nj_bUSV#m_|*Q nWmXU鄟DߦZWwYɀµ-pr|>~Lƫ3EVuEJ1ƸHŠ^DPzQG֌0tdjr cVrU6[i2i!B_W:!$,lF0Ɗh.Wl&]Yu @k媒hc%WU8K:X3^2U;^jՖ@*erlbhOh5`*vȂT;5)V;|w*K@O*T9X+%+XVOa?^XЛWL*1f6Q*3ժ>@=UiʹyU]52?2QJ PRWM\PZOVvWM(`mUIZ:jېQ՜L X+aTzU8h-r&cwW˲5Ǫ#ʮVmE(5V$jՑ]!Vczw]UV7ɬrZVªUg$o{G޼W]VQz;_qn ,}^G*gZ+U1^  `p^(U3b1KURTpϼ!VC<ӊCjtQ gB%S"WVEJ*D/*{ &f"T[Ui:*Ud$UY5zBDʱhG4EjUSjD2QRz͒+u"`VE.{m(l V/\`aV5nRwMt@Z˅k7 OMPhՏ?tRy?|V_b߁lߋxl-#aE|sWȹ&aZiUC\- @:?֚RV% ^2v*vQSiUEb:a[%z2ɵjQ aUITAR* @hxU2#k@vWVU*Xt .9_- LX(VS,`s`j3J 8c^ԫw٬_bǫ޴Ex]f^[w?,-W[U?|?)v*:J/2\e\D S:R/J 0guDŽcCtJ+Ţ쒅]E 2ZUri*VS*`i&VL'A*j^Hz*X]ĪU,oUKrWU"ՋeLPMQX E`CKTYfYev-WFڞTOU*Uk'Vڮܵ)U; zW=& f]/MV?j UVh\=ƖxjTejf ke *h'!)>@m&b(:fX!cmU4gZEjPƤ~ TX*BXiZS&G)+!@5^Q`z_)Z%0V0RsŪnbCȻ*glά*OJ( -U+᪕wgڀͤ4VU`h&`U6:XtLRT+V7B _,0UZz'*UюՁW^7{ޝgd_/IH 2hCkc]U0Y"*3?r[L\UVY<_+CT! gLY#BFRu*[_JUB(ˑdr.y<*=U'V/VuZ dH9S;SN'\VgV2-bG/@ RAaBUXȀ!9˴X6@@4 (*YHij|rhtUm.vWI!YYFu橖yUU OWXMFZ/X]UrZX9"ԛ2zWAe^JڀZ|S:gJ^3DXsXuT1IվSD޶M9:D}}d{J{o^s\` }7 ~k*zDq׮bRիN?w┳6H*kůTY%X _UW5/"VGRU \e(2Y|UTHUZE*=j&@[DU[Uj^aj"V,`Du4A @)WsIWs\!WՓ6VaUZe%?oZk1(I ԄtZ9LcE\Ჽ@ɩQ UA.TLvʞB?&V/\i-JJQjVX4rIrGX( T{ؽ{Ȍk_lx飮46<4߈U(P rU.`jU !4O2ZD9ਵ"j^UQVGrU.,pUVHJs`^Uؼ2 VsS2{mzU.WVˮxrJU+-c*Xm7iʉ7xzЮPn`u*mZh}<+w U9Ԫw e)ұC]*0Pji w@{^_Xm'_pnWݺu \?JJ4w dp9j8 5,*,s,J3a+OUKhjlXѪ"WsjԪ@*dxA6TK VY}U ϮxZ5T9#VNUSrJemQX1BZ1rc)RU;䕶xs1U*p@W:Ud2s U2̪ɪj c+RW`}Uj-}V)Uz :8(Nn[4+nZ<3CX7P9UD}ᦨ}'dqM[ U鸈tH0L\՜WT=[ BoR%|+*/WjVq?GU}J+ XExjhC:Ro~DT%ZXq4Vzף|"Cf'vR::zaVϹ uUEx9U.Sy3.Ho{V ޽+&((mX\=ZX+;k{LSz>$\--PrKWV0)*ma_SVT:RH`D JP 6¾< TEp, HvW+١w\juW`+:<3nu=\-X̼VeתW˰rnՠbY=@򜓤 < JP& j2",ѕ~r1UPc sjT߭~YNːk뮹XJYJm8Q hiZ=r҄նưz,r:*TDқ M prAZ`LU1Pժ2Qz ta5bauB9{f[WS&PЧJ\1BQQժl2VT34 kHy֭XՃаkv3zhq[]P$+UJ*upZjU*+Xɿuޮp`i)A^w9@{6@QI`5*&`XU|vxPuU$7.:^Zu{ U5kS+dC  GFTF [Xoy BUAO2z VK@ubxck#ETJԘ6Ucj{w[kRxUC 5*kN*Z.:VoO59;+t,ܷ˱qJW9kWUjxj$ﯛ% ]:Y? ucʑ)fJ)͙*Ԫ9gQC j xsW8^޶`վD%Z{ϰ;q@4Zo;|LOYu jU\eTUX*ڰZ9\& ׺+QEӢZ [@\CwBەDڭ)27c1?46V ]1R{L3ƪ3]NVuL]\\=2XѐU,]%K{j\bb%^զXd cur`*jîV!b#3f#nfzWFOXP+UK ;*3 ^ӝ0*,`H]e[[͋M Pf0O ,S(Of dŜU;U0,,[TEӂ,Bwⰵc*F΀l7̣M22p,)nReӢ}5`N9J°0v(K9R(-2xɰVGى՚xqئq;VZWvaΎa<-P^[ju`=O e;H *ZH2zp IDAT&VŪ>z:H[j"K}:an?oFE0F?] hV= Z4B[{|\9eV[Y9k)Z*eC9g͔i  4f1 P~#> < d͇Vau/\wf2Uՠ(g.& }niϽke=ʗϚfJzbpPx/~Z?תp hU S<{'JaZ_=US|#h}8}J74O-.*X^9},ӯsBև5ڟ#μ)W^.V(d׫rfC/Uy Ց[_q5'}/*?zg+e{\6vWN_6ZRZ5/*jVU4eY8*]*2 S ؂d+vo1PZR^dTUFF;k]z+iD CCݍP(f"VӉDzX=ڝM9qjj5]7oY=ԂS3C>1343Z(̬ ִpnC6򡒝ErTCSBEt-Xq29u~.cF1jHɃoj͋G Cs^`jEirP4SU&EJv؋gHLw%AٹusJpL^p߂yJ <>fguGC.[&ėy4AwׇBL uYsX++\܇௰raA@y:ցe+|VPuGꑁ4rV {ygi|\zk,Y8u}V'1\ĭGd~1럒yڭ|S0 !C[ lLXKW9V;;ù:|ijCzx>z[w>mZO;ku\.NU4:Vu[GFD]V(ժ( XPcXe>hTJ:?"U,@x'SK=tc{z.U6wYެl`Zy4 0_ڮL~~ek3èzZY^dj}wz֚ UNmg+YêOF"X \][!n1Ecf{ckL6Ason`3kGWv*3k鉬ՠ~TX\%*z]_ЄX]SՃxD?ty> ҕoLS[`IհжS/,inYJY\/&U$|i$ɋ2VOzDju8甫Ft 9%8V7&;yCAݘ[!^zf+[AKφijJ>A ;ޡ*q]\y|]KTƲ'@2;|Tm@ah uW|UԦ˞-PVkwVrunܐZӪ Vo4f3g"V9VUg :z}ia ru85Wptfn?d0WZTO Xah;vSE02̧uesgӚiR5AͦOV[27:ZH=FndUSE@@Ugzi2u{-ܛZT@tü՝UA||D?gνpz~*W'_5jhՃc nTJ;>fUΑةj`/vAJ&"Vܹt(vizqI:هK_?VҺx?u#jXx0EjA}dD*_'9hR(JsK sztK3)>u_q/d!`-qhn2A&Q>Eġţ:@q}@RGx+Gt;>ޟ׏+WuKUAGkq&VmT6`e XV!Tjɱ:ȹ:BUz.R-{FVeٿjkRG8knfoHF*VY_XuVXf^eV B[v+[0bu\a=@ZCC="U${Gmf De+[Df̯[M[55=o٭,y5ͭ Qs":p "]@6 U0KV,>&Z?RMwtΣDiR0kM-xj~ =+x/Lo_yϚTJbӛ,wYA.4r#wN~:W13~vdT;.괢ԼBBUƅ}=_E"z\ҼEI煥lA -mY=A3acmmbonCRezL-j6U&~v9ڛ`k7VM TC.<6=4aBT%DmRae@S Van߾_Y؞͇^ ᖐ165[Z]\|fBi?/WWXi?+vj*dX%|fQܤܜF`u5ĪH*iX<.4aV?- ǡԍBYG~BǪ54j Uaj VWi|< K *AKi,Q,`O0:5rEA**Ո`V;j RuPM WR*yU}O_=HRRO4VbUUyYVU'QͫX!}{>djr#@j+ßjVX.}`uce]ju/bFUaAX-Js@bUVCP?ݘo Z\^@"j_* uauugfb5~ʫS 1،bK"Q`Ӑ5KV';lX5]Xի^ŕ;0#U?UsgZ&P*X5ז6SP9XE FpTFUeX} 5G &١`DDʸb8j UQNT\aDhj0qg2[gUQ:jYAZ[uVZ-xUGUުRcP{XuFZ_ڃEl{U2\es@*X~12*UJD'4t50=NXݶcjXQ_̇{ agDMxF}ju gXVmuOm'Vihh'zypXeuV'W*`Ve1އk`;hJC !* j\a]΃xp%[?V B]F[;Uv9xU5du@.`8VU СVrjS^%Vq!#zEE^e\BJBE ?>Pٜ5 @Y*JSXlLjk#jh@x:Gs]r'9Lvb5 Vw+K![=a:U;UL o5Nܺ-0yjQ }j8':#eMetG@ݚ5=+d1t+DX-YV&=#tcE"M9?O $Ŏ˲(%T4e +P0J|A @AVۗ6b5ުŖ8VbV%LJg(2_E}X7TI^wga>T|U<#4q`EZRŶTUWJڈV}5VoH 7ȨYUZU:VY$F^e'^7<*XͭS=0ĩ:,L˧Zc&͖r`՚]l=j */mjoDsO"*_W*` n!dV{r'&B|! ցՈ*YVucHWYL)kB*uӈCE@ &U2e`@?n'V0Vur᮫E5zP0meȂ.u찢<܊a5rdi# Thǭ> )Xݭp VK_atcܑv%"63j,cY 6GQ2VxTWPuT zJӱjmUgY@k%*K_uUdh@cjU6h*N%.- &Wm"bcCCKb'/SKV4j;V Te+d/LUs}aa*`XMO>խ U E=.gWܞ(ie5Up.c Q_qKS@yN>J(GX:Dy3%LfYűʈ[w%(ZYz~:&ՉUVj X"8E׬qq eٳR0z H8VKO=_JvWͲ2̧sLVSf-.BOw&Zj*;=n FbUFZH[ ,TȪDP,?X;RVkVV ,+W)!}bֵꄫ۪<^^e5O< U}p7:PU&WbU7^:XYL*VVQ IDAT`6lMeOnV'/GeH- =XE<ˢhJ"*OoנOa:oZ =7:,BE|&W&ϐ=GA틜t#fs8g j"RV9XyjXJ=juXbj_81\绔Aڿ4bP"XsO?cCC:UUVwp|ѩ/Ͽ=cګ)jUR5 ]@*buza=dX͓OfRY-L )Zp(k"P[שՒ8V$J?|tfuГ![d*<mm9fb*`ǰ -ۜlPiNF>\WPY0Ҏ% *&m1)"QP>H,-ˬ0C G^K*K7"6F@Fj VY*.Y >/[A``_*8֭UlŜȵsYV]bsױjV3D1L #OAK kぉX LiF -q4TY7j'ԟK/ <]Dq fVVSêJcmaoSs[ l<ܭ&]Kƪj0Xfe *#v+kpgnU'VqޗZJ`jwhk} l3Gޫ+Ι|h[[zg`ʰJZXƺ>jg(VYi*܅XD/©K D6e㴫 8{b^"ŪfV:X}"±JoA1* ف^psRr9Ba?K2Yg y7 砓oX-U{ΰkje&Dl><|}cozߴUx7MN _V'v여Jm/'K~GBn끙SŔ+s4RM*U"z@>UFXa ˿-X*֐rSi"F*_J`_pDhdɊWt-/ İ1K],ݘYPCM|2775kmXo^yiɿLp5F Y#!Üa 3F՘Z jV@Ovfaiju;]] >4Zrb5@kZ!cnioY:bNc\›[Y'V/;P?r^VKi̧yGojfV#7xp%M⏴ @. ?} >~"O&g,+|@ hj$䳓 ȪH[OLbq= qoX@Uz2bF+*m+yFVb5M~{JD-o [O ި\dMYx[y%j|D@W V/-α kFgj[ X TJ:>n: M]ūx,ZUJ̲ W pUrYh,}[BǃnJUjTlw Ԛg5U'z)iT:>b? }Wv0iuҺ5>YU[mT Т|aP+MVDfBb ~ Z tټWm@Hl Zrn#8`anY2J9L2/O~V4U0aheBNx%VC^cFAX?{p~5AG@UA(\Ub1,g-oJį[h2%^ j5'$ B0v5L d#XL5DSBT)Zb_+ρשXzAloXfܕj_qjH_h#8F#UTO`YZ௪VVjIU6*1a^`Ei`rT VN:TfXO ZCSQXʱ W2"Ъ.P*`j9pU^KkJcQ:hTAUVh}h輶E*\w0N}$WYUOU0^z@ړ@v5,N~rF*`V!*Fu넪xZ1ڔlZ5^C'T.J>dZՍr&z;g}NV\&Y7V}j`u˵XeG?1\UE%@2ʩsxW9XUj U7fłW==E **XMrBFК3b5b奅PܥV*5>3ؖՐLp#EB7VM!)S*?T_"\#jp4L"X W jZ`PM}*VR nzV 6U[zz@V0*VÒBU>gb4.Jd*tUZ"j Z-^S QTAO&js~R?JFó]FZW(U*VuS]EO_j: ƻusJ6%*`Q6&ayn:V=|UՎ ~&ث˾M]j] P*\{CMT3TZVT*VU'&~FrM2*ڪgM3Ծ47%8VRj ^c^@ycc^\xդ7Vm`ԫV0 SdL%dyT4W p"tbUS퇓d)ʇ1VɩZ-:a3US}UMDS8Ǫ:b`w[ww{6W#6/,XE0(gUj+X^t?,zZ%T%:V}v*j*xW*xpTSlV"(X%{dgAUT[?*gx>ۓycnk3ӕmU"Va ^b5,WS֤*RqOi<ֶ8Tv&+j* ȡ%sSU6<ĜYD oaS^ɱÚ\ؚo6j(z5[j=OCGLuEy,+i\|babASx-XOS*Epdnb3;Ak hW*Hip-$HUG4hT yQ}tfFE^.i}_cb6BH|}.bF_ $V}s5Re $z/\)XB ի},Tj@̮`MW$@UiXMkk kg*_NkUp?%Ur:nv:\kJ5- wf$V^AV!@ `vwv G8D W;N: b5`yX}vU5z?mUi8vt$mPeO(VC)SfEVYVAH]A>% =_%Δ*d/,cu1l1e:]m !`VbmUa"nRժoNB`U9ŋ`JVW V=fhYjuE:" puJUi7TIbdjWbI1=ܺB٥J8j/+UZU(OS)*rDT$=WRժ6Lj Vi$Y%5?gXYڬz ;VU/v[B-kn_ҠflXm `HV%WKj ]EԪ?VZE`zub`*VOVZJ 6P`5U\uZ1)V V峫V5\{iV jB]]&5iW`U=;,Wc2@jbƱU.ZZodw)|;1VZjFxcDRSsK*g*7[5$jg2A^]HǩPBvzJ$hJ6T4r7/? qu"a j9ZZ|JZ7Z}zc_Y݊y?ܾ8:j(WIc@bDv9*W$:VZjʳJ:aZ5-Z `=Mo4CVSiKHZ`] V]מFAVABNTAfuz\?*Q% ΪЩ`uC5kRa5 C &=ZFtUrplp55݋UQcN5()mB5ִ8$*5YYkjkT>X* Wpc;lWVGk~9+zSQr%WN RUg*x8KZ+>"Wp=uѕ,vhոW*XPQ^5o5z79MK55gS7<U*QTө3j5V1J|'h/UrA[WSpKꄝ6>R P*̧W ӠUt [{וVꅳV?\V/>VXUW+yQ]&hSRr?z:ovb*:C5S;"U *jUYUZTsU,saڱDCUYRT* fej5Zgwou&MX:U4u*RPqjT%DX%3`Ra%XXhDpkiXj8$+N6Jx?hh٫.5d⌕VL6_>C\U9Z$ SꨦVGK1j9zWZcu +TfsU۔L@K.'Wj%UcAb0ŚdRS"3Q\M!mn$`cU5JSU+ʴ*d*kb|MVYZLhErUj"Ӎעxz T;$: =a:XcU!pժȤʇ.X*޽[, p_ȀX}{pj9N@QQeF+_R0^R/fWx%ft* >O*i(WժU Rja4bŅTxTmFj⇐UOw~({&!$_OX{:J$lJ_UER*|FVUNUnxŋ=j`TP "VjE2ƨJrU||frSΣ˒weHt:6V}Y)1I@h/vQ+gXb, \M(WN-S/Ԑzt꿸 Bf\i*q@Uy/>H0u<ךRuXUh (EտRf.*nZ}`U#@ mUϜ*iRO*jfr/+L5fCoeXj;.^loփ j!}tX!GT64bUn"zԨ0C 8ʑ*V!jոdōUVJV E )Jժ+: Q3\%VB`Z]M+*ZjW`ՙdRyXn&/NZ!;XM_ O 20Mi}֭PO j;'lG^Z*未KlMW,TV"+fLx+K6ӐVQ Ekb*o jU/Rw*Phջ~X߱XU1TB>%dMr[(GN]}:^k\T`e.;*/WծUUcͧ + {XNRR|U]j ZeX1AERuūHfa?WZND|*MzZ*`2Z@3BQZupځpjh8dh2]r?½U>JrsծR/ԪIr0+y\F!+cUW:cRNշ*} USNm^+k~p7hrՅ$neRU.RU_Vb5KNVeCVx tY~Y檜u IDAT'zhU'TՀT^TeVπ[AoPTU6ջ%y VEJ ֗ pjo25WVԍPzbc r[ QOlURz;mi@hz`-W%0uPX? _S#@ɐf55XZomWX)*C! jAyϪDl TP@*ThEw#а[Mʑ+*LUX5TկCJ:4\'Z?|RTEI[a*Stުaꫫ1}6(JVt \4W`j"q : VR}J*7&DV:Uty+p8j*λ{` .z ߛ`]h`VVc@b}u/Ԫ}gVPѪ5ma;(Ҫe74VYs@PeYZrS5pK/++`j= SU3%@[U\>JV,<%gUZT]Fo|L(Syh['H>-[!V%~UjLhVP1W^G'@yaia$V9SHʕ'?`VMM6)8X5F> ;JB5 3TZMNOs`گ`$He+Tl(He%T*K@PTkylN++ 8ʾ}*}(khXeH[m%̭Y]j]g"W4NPTZQ&&X ҉V?jWW*8|*@_Vq_FnUl[Uj" SZ񄪊WjZպXc"\-Ϩʝr> +nڦ6&&HCV)VI˖rgVYVUx5"/*yUW*ũMVA*zW;S>+`OMӈ-EjJS=QfR:RU4Xylx U Sj5jĪKVc`BV\%cW^}̛XOWUXUgXV5+~ MA MrMj;`Z7Tmk\m;@cQp4ּˆ޾lZ;-SNnVPfk;ޖݩW0fbӯT UJWxlPjewU箆WBVq;\lU_PCh| 5Wg*i= ow_[Īצ.2oUqx +4ꖫ!`5ʊ+U$ pQU*k%Pn`.YRUͬRU< uk+g(XRʢX@%@5X ",A)4f faymp\Ķ6WT-KQncihǫZœUZT}-YUUT(: Tْժ0xZehVvN\TU1?gЪjGU,]q1n2uXU4jOO5 ȣҸjHL! 孆*5X1c4:V?*Y p{yQRX꨺& Va' ԭO3VU+=*/Z<fFEnJAZK%zKV} \mN1=JQ࠰cŃMQL>՗Ba U׎U5 @u/;0LzcgվBSkn3'ƚrwUɅ5tXJ^$e.Vf*1=C XSAZ=mT^T}J4-  В-ˉ\_vעVL V1WKly\Z9vէ#VfVIJ Quz @pddcuܶjꖫ .mS^x?`^_V^mu\\"cX U]e+&V5$-AYϋAkw32U-$ XylôUXm㬁Mu|T6Vw kB_p4SAǻ"VѥE|$yPBf%sTհ5 2VD@M=d v*a67E}=$T+p8,CK hZO_m[XUI@@ee0{\U{~!\He50U:RYʰ+:* X'W&zzRUZ,Pej\纝 UA2WQtQϳH4$jQ6;QQKe/˸j}7V~ow V(Ū'áޞ 6bl U[f^sBڼU?4AT'zY|=WBfҎmpwG8<2][gQdUy|pU\3uê6W@J`E,QҬporT߫T妪VAΪ1 0 Y:*W9U^j. +%o6Ձ<{pUX:,VxPD>A+i,j}x|ЈdjGpE*hNe?\Au[Uˇ%n/1O^xKxQ)h7K@/LZ?^6 Zz_^lL?>)'io/%s}ܖ,oԀK2[ I&^5x|-Vю/҈*]-**SaQ aU>,*sfVZDL]QsuZR\N^]S4YԪmUa_hRSIQM| eU2sWI @U3ٗDh1^X}K;9kl\њ}~p׻9hitc6ٸ(jKrjxm\ oe(Ӷj%~|H| [TFwR*X=w*ud-H+KQ@zSվ.Yk.*h`GZ7@fҢWSiUKVY֖XrL"Xl `U`vbwyv~ ڃùc_xpe26*\%]yiJhsSB슟Ty4VVqN;RIͬ/~y/qU07]jd*GȪhVNZ>Z=+uX2V[iJ+VJoj~mc jǮp$ꃣIf-˚gda_S)vRsfXZ[/Ҧ\Az'}f>_^޶+$: صXumo^QUښo766.޾}h`FO&b-:/V )9ꍎ;n6wȫ,8;&6졐ptV8!1"'@~'T^ h VHs&>L)I~tD7ұ>I],,,][ڢaV ˩ĢkăĚ6PU3/Yy`vZ!'~\}/^^XRLyǨV=:DjV^@0~Y)Qc2YJK/' @YcV(nWM*_WwbF)vUl9\DomZ<`IUhm")jM-h4kWKhO7 I#j"(N*VM[* ZEv~*9ٳ|d;LZ^@/oN;Eu$"AXM'o:z׾`\YBԓTù*_TBK|AF> A1UmNYܮ/Kaup pT5,mXR' @ Ua6P5,r~lūϪd5~S].TO&LW@]+T IQ_'F9UGjl[-2WNaXzNӪ4V˗P"UUQᓅJY_CIc5~= VЕw8 %Vb3 aaDžըö)KlUe*Xz1UE V0WV@Oڱjm՘+==Dž 4)Π:yф:&FQuT S=%j* )Ff>uAMVc9t:sr!Cp%VXm)$\]br`urG-hػ@Z}E*PuBVc̖W RMˋ?vUYTz_T&VbSˢpk+ @K\j>]k`&I# VjA`<5Mz6?(FTԯVgNU }(BN]j|OU?/77sSE޷Ucuk5FXBX9xqVwLޞ߻ݎXu!,Ww G=F_h% T.O]^+WKX#M+|zoLRvJ\CjlITk9_qCVW [`[\ZXjHX`jbRk j?>V]gRkꘑ>%mVz @o`"kBW^:Vg 3UetX^UT›!_@Qz8A~ÁhO r*oHi4vL,XU69ȪX%jȚ[4X]:Sﯺ V3*X&j4 1V,2F>.mܛX8^`Cb{V +0b5/*Q4z/9VMJ;9è͐PjK?@Ӣn J~UgEBU"fѐb~hi k㯄% zZy5gAiS9՗꘯ZU*#O\%W -2WjVGHzBeg߀FzꤍAVU&K^ K6uZO>yn 3V XAܱ5(<,Q୆IT^e* Xχ,y{ʜ*QOB&ZvB8O!&sʞ#\ǘdXݼCp)(I/6oXE{VNsƤRw4ZU\RrH~Ss:qY/h"P[XhjN:'W%zzV(ҚfsV>U*dm1_0]Tc㈫VcPklquX$@Z]\ZL39zV PX5LUy@mV|@ronFH%U0 T\ު=Yމ3_ޡX]~TZX]]=Y[ҰJWkCV|.O|{]ZeYϗX-VUɪh=*kk%3:)qG(/mr0JOc8:|1֤9Ogd4STb F*C]Q@KVq0W#9vD•JZضUlT:BZ SsURVUYŪ h*m"l_:0+o,jB^3l֫lijYaLߚcJnѬO IDAT 葶Maٓ5xHQ&!V׶]XOHyym̀oby-W 8G&c7Ū9HFUfj3ѣGx' V 8V1MXM&O>_ׯ S O(rSJDtU)GqS{s_|U\gLe+Dj@ZdXt8lp]ڔ8ejĪK;)=bWLXvROU: V[ŷkqKjUa5^űZ*RWꣵj5V;6N@b9]LU}婓JytfkmVC /ZjXfUV@5Vѓ]6ru5ŃcqձSTMZ.J gT04k5lx45W%x7Y~e@^PG1iE*$+Z`RXqOI!VZkTtFZ9=]TWkHi譮Y8lX#୊P)*Y[aV7`eJϳeV%oE74glTs ruqtSi՚W`5JaubO r摀V`53![ *jΑy`u5ivN`jeSj£]VT%^g9)'EM" @o#*7nګWb%257ҙX-qSZBy*zZʩ*^ϡ:N?EꢪV(j2ex8ժFUjVTj<`RuTJ)3\UGZ-6X9מU /g3W\mj*^%j5Swq0H"VzZ,aUf.+tٿϱ:X}U*$xбŜfUDqUD*afjVUfA"U8ƿ]V?U*VSsސTu\% KRܦʯ+I))LTբ*H߶cNXJDV2^E QV6Mʕ+KBX,\u't2o5*I*hT@ssu ^;UT5UPY!T]L {jjZ!;fj50 Ѫ$@QSՒ42T4UkXD2# l|稰gWXOpoUJ6ܶJj|rQGo13S1>_QVEwX7ݫ1ρHժUvVUͥGzp9VW?rue<5I=MO'{6{Yz4WZ卨 TG+";Y7V"}~MMAZtΪ7J]\U)Wk5X@y Pn_iL\mE\cUr2(U1gm- 嵽#VI+vƯoc~.Wxkn~,XW]>m[7gI8YgϴXb*s<_߃."~pI;ZUe5hU)M7(>15U::av߰$:pS%ha/BXQ+`)FhjW3 Y) ʝ]EʓV> xnp5H\q kv{ngggnnƪVGKS}V_H.'^aգ_8kfIr$盥2Lํvo⥪K;;ϯVpUUׯVW=>춬81/TYrG VU*Pb 3ParudϿUlUUwVj{[|=X3 <˰^\ImlhgwӞG)oՍ}t{)GGl ܮӞRTvEy$cJ+V?QbE+ a%\.>QKPvD\0c}kޜ pU,Zo[XVʥPnz &X kV%:`uĊŠ*v0jP5֪e֠V˫V U|+Zޫ*xڍUXOɚ`΂jvv4@681p5H~a OgVW}bJ+RKUjU"Sh:lo`̰R)sT:`JV%W^AŴAr۫Q V|bS7&{9tsX|ԊɅ"kĺ֛w~&UCju|L%B J1,W5 @TYju~HʸJHSE VYJrTmb ?VkUwkU}r+9*WA@ٓYJUXyP۪5\jnZhpZ6/*J\X߇QUwrf \ 4I*7UjqFR >%cGVl8RiKxc5fJsu\ td 3`5Cs9k?j `Ƴ-:o_8wL7ww)0>&+`MjUhV'\&tK[a a0Մ2[EW!*&>`}ΜB,, P*mJUzkЫ` 8Cƫb}J=kf=m;[*LV`PZUH JOd^ R s\d77I)"lߑX߆+~t3VVcW]\OWCCWPTd*DMlVM U Vr[ß. F]V 034 @*5WK8?&X+n[U3WDnu;EXg2U:4:]?Sl)*6*|bA-X*-fz4* R54k\(Wu!,AXm7F!5 ZUV)Ua>TRg5*' au(W'#^s.w}3_8XVvS;NIKf)*S9lEGHPY_OuR.]Ocڼ/d*j)Gʕ+yùAΑ-R`j+vYc|N I`PH2 5XcCD)z>WErj"kƪ4+WKW5_P*'lo_pV\]xr=2-6Ujj5XZMFjV OVcVhRWe*S( DjhEo1JUi2%*+j$8Tݰ]VF *}GU9bjp<-IjG!`3_fVBU[XDVU|˗}u'O>wJJdAX~b[*T>\(%W۳gwƪEټ jZT`uFѦjX kVNZ'* O \qm_fj60Bzy%p5{j-jP\RwçL?fVWyLPi&XP"$TJ1'7Tj*GUmU"T***nVy]C2@hXe\ (ͩeE j5?t{'8KVÇAu[@WF IDATA$F_y4*`eZѡɼb5SϪtJU"TͳjXAsjbdO`l j5Xr j B4zԩjUNb tWؓNKHxkV\tMSG\ Ж~TJk Ҫ{JZP_:UjV唩ȱBRR}J+ P>-L֑##mk[o|v7Pӫ#"`OVX+]0Tr'Pey$sW4@v֬&MRVr_jgzgU]  6>dUU r!0Ufq VMU*wV, U[LV*4Sk5Y:UɻZJz&zq訊-r TZ# +p/K @*JCBJ"6̪TdH*|T?:- WǭlW\XeB KWo6\z޿p.dT~VmVTf jհEt M **+j=q <2`*[ hjߠV]ǿ^bհbO UE+7UPc5wJҽTer0ku3) 1@Xsl'jXPm(=%Xm\Gi 玪)^Ec,U` 2dJ@D*7ȸ*6&U6XgU}V#<ڤq*~$V$^IY[p@_=CtL-  ^5QI\dZU62V)+J6^ Z# Peŋ;w^ .^Uc lZQr#r&h`}c`VjGW &F.{wCOg,ʳ$p9@_E*Y VqV VgF @*](eUH1ԬژXU pҊkC[!^Ԛ\% Uԓb*N~)R*~ŦOI}e:=BCUqɥXPLeU2|%8#`\@.Ӊh*QTͱ\j&=Wu\!R.9t O-.4e#Y/ 7^]ɓk]mU k20QqZ8(ک"zX̍b>*i*z{!CaD̸lW*?5T^*bmŷKװ`d? dՊ\LLʽAȂj1U,P1Vpيo:aS:FկDH?s~D*o嬿ܻuU(/-}8x wqU@*JV_V6Phg>]bgwbWoS?Aj**MVx_º8.rUȯEV[o\_AUe⬊*r U7d^D6eUZUVe%& ?u0Uo qg+ =*UmΊ+ `HW1kU3%-\? WME+Q0<벚*7 jj3dfTUE26Y` *'3Vf9 "V%.X-Tr8*VdLjkƊlnEkXoY_tsjh-7WR}e⠪b*R:1gIVi@u[Ց.֔fp]]RR栩AsFTotsD;ҕ[sKyDK.wuX^\8=q)Qbkg>{ ~'$\ 0oTBU`1 &*O5:$:2*wH~-:\3*uXk0 (d%gUy۪\ſ7&5*TB &@0XYzXQ^XK  Yd K-*x89E6Z+X[)ZkXN6xVǨ Jh5(^XĪZM" Sur LY>KlC Wڶoyd=OxUXrJ{s~ƫ/ӫ.b{Wړޮ9 V U~1QAznu ӪJ`(ƪGv|_׍U?Qw:3E6T]R,m' ЪRI3$,hs4hj'>RPx4tJUq5ޗU̪a U2fĊ5* 5#s_UU Qͤ*uR]SZsV`T-)Wwjզܡ*֪fEȘ)5j"6*iNQ*PJe*{U=D~W`2']!ݽpܛoaf?xN tHBr*\mj)jA* x H|X\t9nVX=jmM .J(s\XfUmjyĪW-yjhJU0z$*~+X [PjܻV =(2\\_UVvA'e-V whPC $.]MW kE|?gHO U P*XKNUXfŜU.c@M@'R6UJɩ~M [6V)G EyUT Ǖ{KWqݷ OR}G~ӧO MA4`ON+1@o *r,Ԫ7sѫyWEe6SO_GGi_s‘3pHvUsrJN#Z۠$VQ7̑UXUfE'LDjPkasL*Gte%jaUhʸkU:: \U+l0 KW[R.j沕LvSTuULHOkMU6-:UB61-dOX.+9pUeXUkUe*=|-Pκ-?u|O?b!'b|+Ƈ 論Ua`%VHDR)he\!1bկ}9j*Jeߪ⭖GX~= ϱ;p/Vo׀D%*QznUՊc[l\ "VMTSVhiU4IU]0UsU*Pp)VQ3ڀ Wׯ&Rj9A5ekQG|J~R̩*j5*jW56T6IuΞtXUMU0J€QF jIDUycaݢz![}{?,rʕǏS&R!tnSLUU7U*q:q`O<]cru@*S/U$VݬJ*te n{VK˽ojU@Ul88XZ P#W,4coup0 a͸r&P.V:Θ9R*Uh WW3EUUє GR;ZC`*&R੺_15**WndJ.++[M:P:\%ebJ 'UpRUQ+*Zb-!pO]+H 1qo=Й!+/U[u_YАW5+V *2gfl"cT GjZIVHGUU+@054J*hEV^yUm3U ӫQ */`ުҲ$Z[E^'.FRp%SնTeUʩSj mZo$6[7v+zpqWm"uG?`?RnOssߓP2V/Ϸ~}c|hh_^Q➥!c_6@ @MJ0Y@+^U(`PtebiU5 *jXiյ`R慖pesWyU*\^D:;]Xˏ㯊UVmap '׸P-{d8T[PU V4%_aʔsj XK5՘mjlx\%Qmw 4U9a*kʁXj1ZZXcR{8OǗϿ4LT":1tHUS8b48X;WeHe`lX0- VC[G V~ok03Sdji*nV-' êU*f+t*AW9Wy USf%VE \*mw\UkU)U.VsVXXU^~z&'gYTz[J^aJk*"VyKKWک@\\X7LY`']~,ek'FUwT~X߃+XeɊ gk_~W|ObHD3HQVpЊOoB`U`E`W5dE X }7կ juw\M> Pu46B\NV*^RAHwλ--p :aϳʎ|ViAfu UF_,묆U9ݻÆ.\?y7| !z*yw''ѻNcQ;=iJ*թv l6*& jXzDknV\udFs%@cP_x@TBR+W/o1U;$W Tѝ}8SZ&@h0VTzERA[\tu%WGGLI[T+_x^+'R5wVUmiΪ+P;JKMS߹tRCNdq3٧> ~6'\YJvVb=IOOSg}*;#Z TX3hke$D*xL@6XTF<v_L}{::a"0W374 TCT>oF B.Vиʻ^|,YVr[J>HYpu^->Tv3J:=kr'W5Ժ{L\V멫Kp?l"l曥?oVZb`_ހWs թZscVAw®%<: ]++T:jr!.A :f1=KH*U+U!*p *~G8܆|UN@JM;m}ŝgK2t*&WVi'gWU:eS-+i/gߊA6(SY&^׸ o~?f,^b*r7f7nl Sb䫗Z$"ë FMMB6)e]+OhS,mޟ_PU `{*;οb p=JUTR>CW=iV{i R?bgZ%WJ1䀕!"V9Tͫ\4]NVi|飫O:U/]#VRw폿vå"F@C`:+~r-l?Up]Ym8OV גU(1;/^^UOs1]k&@էXht5wWYUWijy2!,Kn5-`WIr V%V~uQ Kת,$E)nƜ[éyt P"O/v5ǖT[#ޱoZEXJjj5JJqU4Yѷ&%YTW9B2e%=Tr*V󎩾'{ߦt]0+E&k"19wT=ER AQI@)3HjeRrtQKM4N.~Q H-u_8`zׯw:Y?.z>"*vZ}5ҍ?ky2O-Vv g16j %_*j Yqf&1z@G ~(e(*{CVCی6j[m8ª.;`IR,^BGǕjQWzP+9:5 ,-ކok+f.рKUҢ$`-P\rWLoT\U`#iͩ:a#A- YU1k'tSmVg[z%6jW5WgXT?+@ϯ3jC%jzg~u * 2 GQ\:lT^gPUZRѵ c%z:MY6atףeU. B=X ^)I& *D+*VOJM H-5b! ߝ[RlU7<{뮊nt W..ʅfљڨ 3l}R9ceZT.*eʸJP\MQz:Zg[y+rpU^:a&VY@~Sh Փg<=V].aukêTrۿhrArzdH@l5%;W\WQBOXU-n* $Ua\UPV#^2SH# 0 RL/|@X1U*T%` * M8?oT%Bc'lS+KUQ1:mՀՅVЇOuu[*\IP)HsUX-w:{U XXYvWVrlT`Gԫ/TVOOgO(f `ZࢩQтb&bj&w%,=CRSZM%UCU(V U(*lU˽0mՈU3$P&Vi- 2@JVedu,\[V *au"ܪ#"dkRJtDcUջ<~8*Lc!s5+׉REm W?!|:㫶Th,fu!XZ_!N:qϞ=?׮bhaNa$ 暫`֬,Dut 9f1CdY JoriϬ)4V 6V X-xcj "j>cE䆪f3UdaU)Y U54jU*;UqxV(YvEQ%()(;W/qA2ޥ 9Rj@,kfcy=TXtT 0"(+2mU+:ˋMU*L .+YŚVULU=JauvVh>'/3;@]X'O~Nɪs{_ t߿C=]]]:؉ kSkx:mR8@Y5'q:X_U)d4VL_"@/ V <;LTkBa05ʅU ]sZɁ"Z ωZV<^Q b43X-D0ɪBV'̖nMUpVŲ:bia0Vp!UpM窇'`ʃEUX'XU7qae8* V'@[W.mUHjcZoPuTe,uakϾ} Ug||x8tiNկa+`V E<ŪYvتwqcipR4尚~-Xej3;% VT5 hjh \k2 ϑ4 TbBU^4H~l5 5(+YռUG_Eˉ0+VšYi+筒XnްjXQ[F+r\zYtM*dB'V @VrlpY u2 BUruCKVm#6@TSJqC'yT1@j0SVu95.B@*BM*;1* Ӏ_UˣUhVBrjۿu%(OWe5'JW (ovkTjjUT9ʨV[{)؏Uԭ[\SpAo7vMIPkNWUa6i3X!BFPПѲUp,9(NN\mr\Urx*jLUUد*moy,W_ʍlꛇUulΟ`jA|~|@¥PX k+I>tdъش5 ۇU6p5߇QgWefIX-\1*ʺ?lF]9@D2Go[ckTXF*Ve UkUU i$@+Sxk* ?Й,Z9+rVUjjUXaUˢ) 8"sejwwoMJQQXDk֏UYLQg1ؕaU 6 )Y/w{5*y.EUpJ 0<&vUA]'sba$c#T`j*)36VCBdb5Sϯ񵳧V)hYh`JTbڟpKUC*͚J)Xe Uc XMAT3VmP_KMUmEWjmZJ`l| U5*d_TXc#PIUK;$6r]K \ݻL[[+[=jl|PʉRـ:Z,>OW)_1h uX~>j?z0RP *X_ٹ'+\0UONZ4Qcm1xPJ:Վ*R-$¶*UsL ` +Tl(=êRc*`VCnBU9-nēbU.>2nêZG OVQU*M^p:2E w՗ @ݻH[*Tg4Vi"h0YS\żff+䘡^_]ͲUT%ޡT-?,IQ< Z~u W5-V*{5} U.>~3,{$UAT*J U5)Q.5J)G2fUSF?^ޫڪU3SM*e1+U#V[#)1. fQU1ORW :bL1#T #x\WmJVM1`Iבz0T6Ur^>aŪ',Yޚ,FX~*'Og~` VUIS3)R-k. 0EJ1Xgb\nՎm^  FW5YVRyBΩaCD;?>һR TU{v@1+jWlV ZP`i_P~ P4N!0NZ|d5+VuyYV%٪ּ`qF*c0@46i^ kWifM-\*vcU!jg?Zj_^{gJT٫pFTKfUfZTaUQY `z:Se 7n4V9S~I* *`*V%~<X͋1I!46gCXI$]'ZzpUjBeZ_w6FL&^yFqJHå??Fszj?ʵ[?R l`;4j^ TMJ*UgYoùAˑ5 cmY2!TZ{%[k*44.]^V<ԍD:a%k…0N&U9;XVv*=_bLsUīn9KUY}(W-fcZ`%Byʮ jtUziZaAtxHLOƟV &RyW[c8! k[ņ*% atY,TZ :Z)gDk[}g}ThUnV Vdժ ;U 9 vDm5VO噹x߬9U`5GGa57 MSec01ЋV5mE+MIղ׫BT63Ҫ"`eR薥9irL}hpЈՋ0㩇$NIrFRT [}U\}Ϯ_2+UOf/F*!{bgKtXU#<եT/_@ف?y1N X;8kC@.؜T ?Xm*@XujϪ_e*Y" ˢWܚ[hY\\K :+Wv` k,.V9R@e4V+RfپQBxOpB^u*#U'0E0i&`4"UVT۬KiMVKti'$U>+Պ5!/ .R*/f)l1Q f^e>;gTjT\%Lchʙjh^Ӫj]ZQtg֪U4*j 3*VMj0[}­bVU1eUIVR mWàkx W}-lV5){4՗U4WݡoED[6EW]nZQ5S-|Z6\Jխl6jh*ɪ{+b*M jdo<R[:[+}o5lwT*Yr½V=4x'B7M58*jTLL,kt;.}qө `kΝ/6^xS+q|qӖ'DUZƝR-#r|OS' `UΧSe!?-Fh竼qեUwNj^rJpuago!,TRoʩA]z0[UjRWGX*]թ:*@~]C@u `լ A8=cl[ BU&~U9|E L*ܙeɪSKũZS `J%`JkOYvNz&W&0Xmc,] U^Y֢hQ˸"}A^nT$[R}VS+g>vd ^V}cBRc _lJMgs~Ǒ`5V' ,Nk~6j 8;_/Eeq_|}gpUmJ鵛888ªJWz U`Q[ULU" ӛ`@M6d * #Mpu׫R%W,[u#[VGe=s/ 櫂_I+xF,j!ASOhURJWVaEtO>y̸JMcw^UV :R{i>icTUV% d -xV> O&=c*?[TM {`)A۬ڝju;[Bu6663F V>X+nm;]٪m=sĕKg[-폫ŭǛVz >Bc&VyQtXM:ZܥO;77֪J5UYڪq*馿;7:_mmw%KqWu|)_2a夬[Hk"Z֧Ykj_*4p*)l!{!iV'x IDATʚ5*3 ?}dWF%Me5h8_e+Ou V6VU;ZXU էUgS\5RJ>\;~%-T@)?$6qJWV5VWv]bфWl5ʇg ~&I~V+j;k%'Sܩ~EiY"H~2,p5}}} TX}1L+յ{n76ҾYWy^&^YѳV}N~۵5U](xgld'դJNaTC |ڊFiTn-$<UV"lf ;Zg~V?|xURHSwX-qk^<CJQ[W`@-Vru X`%]wk[6S&UZ'Tv$+>{TZA}ZlNgdS+t;X >&t}0L$W&>F *_K&ɗtPYzf `|+Polތ K\`Vöjt$UX1w*j +g/_v^Z;]/uC92uXB|lWհ_e@*2+]uDu*ގNNO?r'_UhUѮS=%hMW+ZZ0U̬|U*!+,-"?VtRԁj@j^Zvp\&X[5YJꪔW`%Q+@)W\9 V \}k_jqqڬʩǠX-*XUV{'+Te ή+xշVȇlت*-3+nU%yY `1l5{f^au֊[rZQk5@C0[ S?"@0\S*.Y5V*\? bijX]m$W5+԰Q@cڬ*S[Uab7Szmk (|'3'5L#kKz>`V:a gQtpX+++>%UQbi2 r!X5v~HH+['ڧi5aKȪhqNi]&8- , D WlV}TtnWkPj߱{. ` 9</d*TU鸀9o*S]S)g)dtB,kU pV W. ՛S`Rh2-U+pVA]֪Gʮz.SX>ⱪx'Zy6PD+@MhzUO7޺$*ԗjCՁn2uUUF]j_MԦtUV7*aUᰤuD昃`*XY~DUtuPdZ$ܨV`t?MX"`u E?Dl?V$+ktYNT/[ݬS-N}AH{FaU9ŋ@~F]ǕUR/_x4@_V$ ӄUR\?u~UK+˝rǯ+8ZYGhHk豒Tz ӲF5UȪJi+ճzcQ?mհP*֤ʯS9sߎ*f7 r\E,Y?}.T[*AhGdJU; I^PI.0hzp^Uť>`Q,O׫۫dkO{r%)o UWK%BV'?U P+FW(@_kUdz*zɃUZV5_%ˍcmՍCUZY%+V*>'mV5:RQk`4k:`56\Հ0[U'N_Xjj*"fu?R|͚Ibk*j 4!sNO?TWW7@ dZSW Rx հYCSd(UtACHfVJXluL8|ꘗz4=먳c5+ vD] @*lW@\Ջo W=wˈ A`]  PH*AOªiNpnՖ VAJ[+9&d9r1h>>WIXݻXm_<6VZkqՍh"96^ DTy 90LyUkN͉3)u@+ 2g*Kİ_UPjUs_TXuBCV║jF'pXh @U1rVѼj95VQP-,c!&|n'P~1z'Zl'Y# U K|@~ϯ`UHCڑR~TU8W+UMc,Q8JwД @rp5:8d* bR屫AJի5VYڤoX"G@49pj? VplGg; JOx/ &+_9T` ujԻ/T P'%2,e*``2+1M_mecQcU Uo5 @j8>ǫZy"dBTuqwYsW­[2y5 W5agrX6,JJv+`Z?ҭUSZǪXo@*S#~UU KQn^TGWAl:2d7߼b,ufCG{V%Էe׀DU?U#ڥ`ت㭣rIjv$/5Bc["pZ,r&R,zZOwA sw'5Ɋ4`Xi&VUzk5V/ _*P;@_X'uj)aaXu[0N!~NjNr2 +õ cX唫 MUU*fV@`xFVlUqiXYlYJHї/jQQJªUPURUO،U`h6FWUՊ3`X<}izp ݨ GW[~;[x<* : V+uM xU$leEFu=/3(YAN :h19 W:]yV}{`1c߯z`}c+kc|V`e'DyheӧY[Mge~Ej{U'Z|9*_q|` V^?*VY_@Mj6Zop_yTѭ TD. WXU+\RUY% idZI Y9꭪zJ7?oMSz{NUoVhU Lu'B RO"&).H+P:uT`b_U}MIT]5zXqV-tSj3 UՄV220:x:Cpx$]kV㵅jQL -PR-ӅwUV9u{Xc"`h@۬֎Cz@{_oO*J2ߌoPC Fg3SWS*k<#T[U.rIFޭ9;IB@teiM2FVcWXϪg+g $j8l-–*z b#Y|Od>jU˟,k rSU-њ3XlV} au[2l3){Og_?"uT`R *`@Se@W׀ylV N)UW!wdHmO6гjd(%WT^ UB: tm~qͫku VOslO]wuU [?جV /lt,n<~A)|Vi֑7.-Z|>ciPI/||\c+Uh *pVCA˵-6C`)*/XU'XqXSt }Q]_%I:f}杫_mKq;3*kP9J:@X%[8!dD԰Z rXtLl*e)zvV]*VOʑցimehWumXlc g:AUҊ?)`ѣ3 Qg? &⪽:4Ś0U QKUJV ځ1u20*ZK+$F:@-׿:"oBgK,Vץot[+qY+!.RKNk<.n| )X ,ītKN_[<^;cer;>MR[enbqm+kD*xJ MQ*ݤ(J6,E-/m/n-мU~a].UYGV[`Mfoe%f]U+X s0̮j7j*dETd-Vau(T_*T@ł T́MV5*G 0ot 뫕kO(r 9J uUxeijV0K|u>⭩^6_mBWF`N.-j㫛;stZcZ;n+i7E. x~C j'@Nwӳ{+=eO_ P\jV9,yba6dbh捤Sr|Wt\*8''_R 8wՒ6XUVZZ%cWlVSJյGMWkXEI _wfA^͚VY$7Yun8<$٪lQ:1uZ%YE%/|57VPu`Ǫ'A[EUY WSWOp!U8:ȽffViGT_  )X*;CR@ᭊ6U&Xu}X\i%טe%aV̶B *aR9*W!ݴZ{O<:+}VwVP[*BAg:4N> MXd,V6Uv=(* TqU#%U 7]rv'RX3LͬlTq_WQs ֟y*WT'ب6+`:ʺNbYU:*6fWaV:mj0]zۨV1T֪G)> JU د:yUV=oq~fP,GW:uSs_?U}qU R9`TnդڅNx?Tc p>zS6=) 8rPpCWۀjNW>+m UK;ƮU^R\UOPQ5ʲVA^Fz+c_Haͼ L,lL^/ix8ڛ9mتPRP*wˎcPUV셡АUUJY\0rk8jXU"@`*BzR0`UV@cDUh^UeΒ§URO?(UM GO6N\{ΐCAx n] =X]F+ HZՓ|0+3,Lv`:"V4j"ZVj %u05lVaQk? |ci#*_jՂUhV)P5&?pi XV^%**6+LUiJ!TUU6Vyg -ݨkUpGk77BjelZI`z*QUL^=-o?[B(f{t=%yB- &wҳãuxp:bP5*S&2bjXt/@=6X-qT+ڠ]k%tv VUTV‚ ,ٸҤ}#*GXT%_dɐe_xlUV)`ZE^~JW2Bamm=U5Ehq*^=P*k_m Y&`[ HWu\Gf+Q9YU5+` ¼ԐWe: TS VC dhr% Wi]P{b%Xwݦ2w2 rGVihD?U `kq54l5Hpp5Wzzwj1U[ IDATuYh+v;@OWgKs~rAd7f-=b򪇭Aҕ(i՝Ss8S )׉h*.[cqPlHU 2*'V+?W˪p &ꍕWe5`Ų1׺g͋]={K|ˢ@:?#켍2IuՀTNU ?u`:@m&޻Oorߪrڪ(RT#k:qEVSMKX(%3!VZ\)Ch@^%ڷj__dVUY^j8V2d-kqSJcAKI1XMWf@aazʀVS@Z`,Y/eW]5S+W jX1Hep,/xf ص9X}zѾTWW]"PBWǽ/JTaV0Tl4 K1dQVnEV*~/36ʋ7[MFޱ9eam%7hY5'z8F4Vp+U4T0>7gsh1 bDUGtAU*Pު|'P,%+RaCe ˸pd*Bvj*:]Gk*;.ir%YLXHA*W8S̛*=utUCUVgޞX}*\j^@iՌv\W*SSKz+KKWQL5V%630 ('`BZ}`B*uX& F(d^U#Yipe?U#*oc($D*V* _I}V,|5ˀJn\Rj8PcQ\5YV9[e7&jXwvPU1ִ+܈NQ݈V TUk:cEýV<̊ZWbCaIe@+VPNܸ:-\Wi 4!Օ7hޯ3V%6FTq+UOũb3̹ !<XJPI0? U]T]M*+^bGmt\: iԇIՙ7_%871UvY&+LH3Ll]U_45ZqK ګhpj%vq?j,Y1UeY?W++TG$+a4lUVqWSqhUYqU|9dn/~j3trNW 3kUsrT=3\?51E\\=@@WbNLd`'@[۠Vi 9< 5+fe)aA劧ZU1X3sʛ%Vu\ .+hCU\T?"UM5ʃ?aSDUjm?nUٜV*Jᵵ՝h6*[Ey\3!@WCﰲ5췐W*W5j/aZ*NVWheꘁ^VkV3*S͠R 뮺OU[%Nd:!y@oVyVYu=*+Z-Յ O;zk&Uf>ݸʻ @:*; 605au[kbf -L?.5DtV"VmUXXOlh@,Ր\\D09UY#ZU}" T)QM(_-*>vU QnªGiu2*jUGJ*lUjVpmvlڵJUiu0QhF3` \yWjZ2f Q"YËxU5UWj= tR; g9oCxQd+`` wkUo披T#V?L#Uhxd`+w,V`DY.QVJZ=-nEKjU* XWTJtVd+-޶FͪyUyZ%U(FJ*7Z`mW8kbWgfpcmmbʠ⫾F U>{TW{: zVq˪p٬*]6;K~ml /5`B[9WM2 `.ب֮*TXDLRUTJʩ:z ^n V04VE pR,E,V=XōU.*ccc㫌KgZQu^ lUy|5%*_T%?tTnm01@<o`!@⫨6fkdLJ.X6D3H|Y|\N7 WoJT zNU-ft/7jL5bdhQ3e5RR@Xl9tgKX:ZCzRoxrw>3TU mzUjR5g|}ઔ{)5-/wQumpk}ct e%fZ&:J*$ u'z5ej574< FOOfTx-Ppm7] QVáVロ5mZ?ȧ/s?]ȟ#ʖ*1*]AP%b=  "J*v l-Q^U'ef`;(LQ%duE` uX*i0.UXjUQ@luƮ:` :JV`mFkTV$V9cxWo%1ҏeU_T%VO3떫P-~8Iz|"Z#ij UYP5z9fU76گBVT4 GPvrJBiWU llu%rQ@fX%'/mm6[ՔYZ1+%n*F_*\7& 3S5cz# kfN|JMU,n:[JՁ)QpPUتӸUXm {`5V־ԭySkFuPJ:#.yןY U FV VBXk *"ǡ'J9)lY_Jz:["4[I;7Hz*VG=!J (] T)yUWиjU|:0+%bv[R!IQUQj77֪ʲ Ƭ.KBZY矏A r%ªE}j~^4zTW-OZkB*GۊDlCzE]rƙ>UIVˊ>DUMp'%@lmj8ʐ5;vÐ+ ;DcU(Th<5W_2 +7UG!*"~*+z9w*R9F0Ub(rYEV(|k(eV 4QO^rU.5U$ڇ +PLL;38N^@yY $*UʗJ_ >ZXVPeTK@`7Ha6<0!j2@[m۰v *mK](XdM2Ʉ$~psGVҗVoo۱j^S*&JjD#ªXP ]xjXHeܒ*Tj%UUAd%(kb׬UK^L]Z%+VJL*Y*)_->Ն4`TH `~s*RW0~zi[%<:V4L݇`{JT0F*WÇ8eefFC뀺>7`}̡ 8j? ~5x|M +5lXsVGi*h=Z/lTF4M*AWT9Yekw pU9[LrFhQ!Nwˣ/zS8ŽK\V]YPXc%ORբI,oUwԷP%U3pj LHL*H@[6a՟xW/9%o){ U NE=VD3|:#Trϣ9)ֱ2Jj+Z@jq?& 5g"jUj Lcxy*o]Q5}oD`5.:li 7%jۯU⩮UEW$9xyGbmd/*YO˼JgJUU,!.]}wK'?g橻d}F!;*Xm_C,uuu_"Yʪ0Xp zŋWmU_u`/W۬J26ܺB@a:媍u$dV,G*ꪋRRUV1]'dN>#TBj)L+L{|3ԿDpJT2X Rvr ijLƪ!kk/Ϲ%aՕ+OrP? sUFx*SXqR\Ӕ`dܪUVM`eOiV%m8㟻0_e9ZxWaZU3dqLuI~:Q :_鈫ݡ+GJ T3d!m6$ \MHѨ+ ThPa5I%+V˙[)Ǐ1Y$Vj0a^7VIDԆ_c:]X$6WV-T PvUXFBZex r|݋딦zX*PaYVvJy`uգdU@%>Ш*"#\XEE+)F0#+7Z!h rPsU02owUd5 Z!՜kAUmW^.;m*y||%khRҵH " z@:@aӊ馹j(M@ƧZ5<X./'!.0\E>V]1+]-qjD\TB sG [UPLW P%q)V%R Sl5(@M`^hlo^Ow¶_ᷖjUpJRT}*jbxjkW_}7f]d% T[cxkAXJ5jKLʢUfjNNT(U2\OxOOFHTS](4_ӍD*PV d|hLԭjE\´c嚃Vu Vh©bX `oP({P6lc|5jk /m#Z%^]UKL]o?.g- 8:TAYV9IeUj!5]-V.SJk[(P R kΘB:W=VI^0M懇qiAZ:iZHV ~Em`*L|JK_zEZ%S&'pAAT Y)z̩UAL4T+OJq ^l`t>%5 \ %d#Zk\Yeued{jvss* *?7]TJVC"<W{v1R8TzVi4Ue)RT4SSd[u @_lS_w|>е%`u^2o+3`;U_!+LtM' $4c+hF,1Zqšj·u &q JhFLj_jO@Y hSoJM' Ɓ8]%`EX&dXC 4oWee~PqV5ջT 8Q҂8@'$T䲒*H Fqtk@ijw%muLZn),lCdճguTuWjjë|lKJP%߀J+~ǟO<`u[l'TER :V=%ت`=sJR%5 -jEWM +Ym>L}4UYXXYe IDAT 9dl$6dRi*xH6+Nu(|-br{-p5)!5_1Y% sjo NU(uM!O/@[Rc1UGp+tQ[[OX)4DUC{՗([JA <\o8 @V/Q8!v9_q|A_Xg~HԒU_o hHP3 $菧 TPmUYlC.46|`uO$'ϰ4sO>9U/{ݣbH{Vo˩U~"jU+A`E2UQ K,K[o :8PmVex$d:A6*UYU`}I&&="(큛@ռ8z|WYy|$ q֜j%uV ``@~ TZ΄|+W-W]lWuaOE~ߵO-3Y[U٬mNl'4ȗ),ޚm+_g\5ku&MmD2/Q5تyuT^b a{ŗ"@(726!q:[s,`_[5VUmɼ.x{mKJk`m"UU#uSVĉ\Xyj`3KS̹*O.w{* Q=T`]U7xW7Lʉ?RLsWY>Qׯ:4bU JQU 9ꥫGlUo_j^u9_JU5DVV?9-A"XhJY٪$[utafw>YW2~UAlUԤ氢&P2yB]_ lB͚Ia)|WNP5ʞTRV.Yਂyk9v7*#abv.Pm뚑ȰDŮ* pTq<=V}_DJNW#NCWtTl`xdk @TWVT z)IYf 60SҢkx?,UMU (`Ĭj[X&, om/WUXwYV!@#T^6`(-!pS0{=6U*eTgFW*T'$<(sYY[ۥDVg]]hT\Ͱ6+&D"| dTGQVG 6kѽʪ9ra(ME՜kĽ'zfڟ$brlB>EoZ<#3 X)1hP+p4Ao@dIkB}g%>* tִ^!ZȊ']U嫪ܹj<"̶dKLpL_xgHRam[oɆUs@,Xg^`sVZn?SEfmr#|!R3{jLT5*U3xFQS Ơz 7ΜlVe*f%b.:]O]ʁ ~ mV_0U8*Iaη]{NQL@`uW[738WU{U4 y,qfϸ3hl^Q ѓAIL1Հ9c$6Hd+!rE #P6PrBPI=?h̲Re{ae5d~{Va?`q :٪eF@ĎJU4]NyLbu'Y/k#T/KK c3BIl\E%JJPmF<(ԋY:djHIy `F3kaK- ɉLBA MXX Sy!d(`K J)G_Vhk 2.rZeWOՑWUxǠJ*CIb*< 5unTxjt3UV_f?JT=@8pU:@TX}UR%U#U)@ UOT'<+EZ)UJ2F>V)XuXdZilc'RR.`ìT47[Jb=%*P{U!􌛎WXŘxgg6V'BaCwoFxZL\k&8m2^`\A)& ` @>\y!k V( Gk\, yYn3UUJ&jmGYldzb #ѲjKʬ*dPUEW)*:l㭂 U3f*wWnwg; u+}O#e̺2|W dl}VFUo#UGZ a]hD\ݣvrI hf.26(۴8&8@tc\d5OV{l&j`O`:*]ŞZ-38{>zܫC)ljFRm43Zɪ RJ۩xj.EQp@n?|6!bz3Qꓩb2VĮbI@A @VQ5'}x@0y%5`e `0R^Ո@SGj*fyb lTޛ8|xr6h;4 NWe$.n.'}~׮z V{¸QƂ+ڸiEv&Kbԉ+StWԍĞh%^)[&Ǿ} 8Y>c-'c{[S)#":[nz8 5n $kb +%7rg섞o~#&jj;V?[ūjUyB`*gV:Hu N P-IU TTla~{+=ZK߮---_}D#oU"U|짏Z*fճl/sW#ϹRo_LO7Y#zPy/eTlQcrv*ʪPj S1s*B|H2­J$tPZ#7aW #B<(. 1Dҿ\]":C``ww֬!,E"_S(ۀ}H%>Vz} rD#P(mYB_?⣻Ջ6!-As۳q?ӿAo4 kY`7Zu EmOG3J*XVOBJ%68+.y>U]?_e*6QBJUZX/*UXIV9cg2Z:q { 1{C,nuw݂xJ|iHڅp,Kȉ.u}}{|NVށKi5 QhB#fiD? )ph12&^axqECDSe4 IVRJ;$8q9(n#?}~g4b%j;eΪJwUP L*kPV^=sF2VEH']lU*wTk 7҄Փ&@JU5KF"RSWHB2:X ITJ͵RMVFW 0ҭB?T]vIJ$>DzJ'ȟu|Mj5TƂqMB,^rq۠ g0 $TiLX STmԤYdƢ5rɕV7MɵC`yصM5XJj[8.P9ݦŽzUO zU<zV~ @zP er*Tez5񌉥"_VMJU)q(ȏѪGըVnhJDw)-&_UReY!*!z5%y)EbHZn("}tT VƬV;\dcU+G,U!J6\F@ѬJJJ !+7Te/49; dzCdknPOqJf(Tk-x%.(/9Y #W9L]16F֤*J̊rdSңBB Vb(UѪ\rh IDAT @IH^}[W$>%s4Q?ǣo7HUOg$(IdOLZ]*X$FNZ=Ӕ_UTu2z;!VH S5-&V=ʢW, VZZ**ZAydd*4V4pŜp!(~`]pԵEUq쥈CU2񤴫ER<)hb&q+GUV`&QRSOUFa"*z 1Rq!הU:U"V\zʼnQ+bWARUbj5)Ug؂.W9SO.Y"~@ڍT+"XRlvb<7Sb)Ӫ_FJ}T9Z2Q_paXE?X噧 K  XՁt gHA+ZS-Js% K<W"5Ǩ"UO$jT%ԘWO`~%StW 4hJ'έX7TY-҇rv2Ux/TÞw?Ȫͭ"Z^Nկ UOYX=I$mitP+ $"]jFVm[tc'i%ThRV֩&^R[Wv Y2ҸYx$oD]C_AM]-xBU+ \r^Mq)+JE KJH ZU'3`ڪX/^{ޞ*Uӳb^j[ɚFN4*J<0UKjhUL1 a @WHעz sJ#,q\Xe(H5նI7W \:ݑ ~yR-ɫ^jT!?ui՛/ĚV}$v[KoJjH(L_j͍-JHFyUdRYUH\UtEfUUvH4$^F)d%ZhV$Z44cRr[2CFJ\ SWi 8fUA*R]굄 M9Q~j5oAFJTQ?:XMh*d*yQ TSYvb0>f-rJj\ΫZRP =( ^>jZ5ҫzsn?}a=>JUDP ޵sϑP\M%Q5UQ UO.cjccUR-TT%aՍI) 'iPՂ<_1XS)d0kpSL3V]2ZerjZeUi V_s} G r kS*G0`̨GMi쪸+Lz| IkJBQJɎRz*\CN榲p\H U|FLX^V7XǴ \X H rgŦo&h&*b*"emϾjX%ag~NS 2SXoCO)x YEI%iӪիgDJRM` heX3M L3Tn/kTx_\8Z\2p eXՓW!@AI[5>f5x^fiOxp ;},h@Ĭ8v 4VC`պʝn;JVʯQ>Ev]Qi+R)O@5WV J%U*l+ȪmZIjwDb5l]ĵ([  |{UO̹Ǟ۳{Ϟynl7m[384-ճtzxƦPj#*XUW)lBJl@^ TuJ@>(LeW ȣdвRVZߴzセ6"VAT;: A*W:UY%j`$u@Vf5Xz{ή%tO H+[iK T'>Q S⿜<ĨO[YfU 7Ъ]* **VIv%_:ZsjUW+x?(^MDj䪡JNijUm%{5jѣW)B2M0j|e˙£6,yj4zMn^OUI.dP HJ)2%TTHJVO\Z|Vbf|]OfojsFjTT@LU䁾ΫtU[s0ˢDV 3X {Z1Z-x[VKƪ\f$G @& X Zj+IzV7`@Kb'Ԫ;IRg~ыXQ5d ݺZL˅)SDjaUQ٢Ich~@UwiRY&IBU?UWfa*)]mj#VM^WK:IU,Un,u VeMRb5j*٪JgzZU2H#4W h23ӪI+J.}%xU6V=*C8.V*jPo~Qd,JjQ&|jJx*Ucb|FE޺JU?LӪZT1|Fc,/Srk.ҙ$\V ZU#V1ppٟ@hU*kՋbZNo3!H^{5IDR:&:*+Z9"zH65՘VUUC@pXUkUS,@9xјX[6vW}ժ+%b *jUCߕ3aj1o*[G*\[[qZI^GKzjP?Z ՘JhL˨YTjQ TZU"RVŴFUn$U֕yݰT,鿵XZHc>z*Z[E'F*MTMTZKQelE }ؤ>&@6ie[E)We ƦzoJUIkY]ZLJjJNOUeL!r5'bAjhA䀮VJI"V4D^NS@ԟZTehեIĺnrj<0^ŊE)^?!XؕIUJ50ZTDCըԈ}O^Y _*䪪P]7G.Wr+&&4\- ;ȹ)J wI)zORMSwEQ3i70ī!Z D˦<[*W Ԫ72ojr c\SaJipG.@NgR"bybW`t zc <*-u4Pz;J'dZ4_%N,em3V53vWks+NcaP+)V 1I!:Әvu *_=Ϩ^|<&>TE5_JOIJ%)'U1 RSURM q1X5x:Z IsyUR+2SϦRrÛJ藐yJO0v*5Ui?.ZYf6 X d@?ٔ TpjB2SUVF$JH/&jڜʏPcrU[&,*Q:wCnj-RάVOIUU bݽGtY%SZӈ8%"=M6lş[qUIF9 MU9sHT(ZP `V)w&M`UZcAt]Ei*\JKfH>NG\+ԥ*dU:C ju)Fi UTׄJ%iԨ۟>EQ1 KD/JǨ\ZPR.Uo$WJ*/@I_=T38 ,4Qr_J#TXUJXJX-|*+c JQn3R=@Uljp*΢$wkr?bʼnԘuJb2UR!WtwPbt\5eD(W5§0q#d*Mj&W"+rٳ7u8˵"c&-*IyĪudVrԪ*Z֦ut)*] "oȬr9є&\4r/l$QN{V'FUV]<_>GB]0Ԑj6ЫR/VUtjNV)cyC!%5)6eLZN1rZbĬ?g0_MDUj,q56L bBKN\D%X*ݴXO:dUuO5V,֜"Zb1瓰lUg&1O1@2ѓƩ(bR.,X}9DnբU*`Qmv*}f9N4b2@ QĪ9ʺ6-ΫnUIªRTR;)<1*WUDx*@8JX5V)jMĵjpb5`mWTXTz?w];D7@M]eN*nǴjAI+Bmp"+ʧHrk2U"WWj(=yjUPh*X`j541deլGBƱVWJ"j@'\*J_T`Q%’\UHO T IDATJU'3xn<ע'h]0]P<ʭa[ [cZuwJ$NUѽ!Z%۪]{N-ˠ8ss$iؿBDZdGe^BF)c*VE:B+ U*Uݜh( ڑjMZesV -U$G VU:>%gE;Ug"@,oWTjgY[MPUZ-j̫XZ @RJRV5J!ɮH_&M KXd6kh?K&Yeqfd4hIJJZZuV" ZT>gdVV]~uUDZMU"-Lb|6S+w%\3hZ;IV?npwp@2fmUg5i|j5l|ߓ' k\(SyZ-M媠ҰRVeVxZyR}S,z@/Uf E?|uDАSNJrU[eP N:զ jiUHMaՓ*XUj5k))o*R,W5"T15 ULXRRdk ͪ |\ZF W0);mmDM^C\i\U߸*f^K(SXŃj4*^MêW*ͤJU5Uz5U**=žTb҉]e#d)lQNQUFÔWQu[LV_ [VfkUw4FPbfu$69D* M+ ~ͫzЧ|U 0|_I-Yc`%dvvժ$X#B4ouɈu}‹tN*rg;tDZ#V|մrJgp_GjExR*iV۰ BYjhꕦq=UY)ԓG5UJVtb KRITUtIUZ឴p:V-R¦TEoh2W5d|(\8p.E$k}2%ZY%XjՔa‘gkTQJUY&<ҫgKͱFnUt%VuUf[%S*0T?"u&y.5\ΩD\Ź4 YdUwUrQg-Gu Ub4}W[IVJ\q%5_Ur*n"ZvgGcҸTXiT4FV3UijX_)ZTa)rg.X56 K U-Z>r_hmE̪kVӸJ/iN*i/UVih 8澟gUJ⯖6fYR+LZ^GTrNrt (UN[ƩWL'V*FE/ʪ1}hUJsz' U}*MTU~\ի2VU+wFn@82]F? *PI b^Z=(V:776zXU ǭ6eZJ,Vƫ>T?Wl̟i.`Y۪JwpUUR%J$i+!4i zk$+iaBUjZMH}̯V},V~3h '\qvԓ^)sҴԘR=EUMOUԪ0UhlhՐ o&5S%UTr*ĪuuZ-U+Bիkz-׊XZ"ɪ%R&7k[jZUr6>zulc jRd%W!;^L:ظZViU9ê^JݎJT@+slڛ@dp*TY$ UcV *:ժ*EZ \$`$nO*K\VV㼚hO]H]j! yE5ĨSTyUt*Bjj5,W4Vj[кBX*W~] TwgoS$ '7ʃv̫EF mVR,sK0ppP[tHm,VOFY"^[zjU]&Z=r{tSEK<wtRu;6<ZqiaT^BsmnԪB|r6QЦj+[]BKlY @WFbUu&dVqkhn)4;+ZcDǟE"ZU %w5fVn!VE\檹IhhJʛԪj:Xw#o%b;nĊP+ -,k"Jj' i JH&&A)pk(JB:w"jIx8 ۸ө^^p\?ūTQ>Se30+Q Uvs >a^ۊ-*jꮪbJZu# p +7.ZUg˪CVuAN$S*Vu*ib,xƿ~%,ϥR)a*dv:X1to5*0IjW2Wz1;h6(5J$JRC_*WEMdSzVlJ]''8Q'7Ϝi:I.16`od=>фh5NV/Makjs%uK{q.=7^9Dz}r&+ۍ)DShO*-M2'~GNr9)=)p@'.y05kc }N55mګ{EƮ:zR%*4Z 2m령YS4,b^w XpnG+% )ASBY^m*UЛ7y3RM-ěU㥗 |>! fX犯->g\(fMF2~/\A.o%i"/^R}xl4_ _kBkw>W?P(KG)_τB|*8[}pXPK}]S}>?;J ,ݫ=ȡKQl:$ݬ?b?U9BOtHf<ލwpWe:J珖Z"*;6er >[ַHG}fɺ|H4"JEzM;wN|k[!֮96Cmt զM!@ N|n[E+S]#E]oБE?̺ZJn'?2֮G (/k)W՜([B7ivO!x;mU> zL6U>h#vlޡ~tVI=J:pO3:dy==u,{QS=GeF5Chirvxo.C|z{/S]S{ڡvўѣ𛍾GدT{uCrrMVOu}?|Owu'O :1SF!=ˣ5OE-c{#ZV `5:.Di{j 刁 &("뜂hU سl*w@{^Lё?Ni}YкH">]ߵ(՝]˶ۍ :8NcYP*(t֢zgj=mZ}g7)zQa#]VW> +k~-f/:'$i5o,wjyz=V9bj寃{hRRex8U@_O E{ rQѣD=SB)Vwf˛8p}W aGj H4ObZ=u4S% Qk z>7wq"u`{-ʮ#X0^W]@'gŜT!Z>q  ca uݐ\#|Vգk=GiԗS"pSGѮ~!Ppv{'S 4 h}odZ?u\^Lr3)"FFcR]@_wĉҗgZZm>;N{5`:Z>: CIM=ulEĩ5zhw:Ek'|qVkSZE>nc/1L6iU9JGz򩐜{~HUZ|h܍̣=]Xw壠n?Z# yrWO&)OZ:ܲn", hޮLXݍ ]yUa% nxMytC(IRHp +I3J65jZ;G6 s)_'5GڻGpj7fR+ OrrPջq *-*1;GkG3p?gK[Orsێ2kq h/ chHs܍<׀\Yl[x˴&,Swrr)Z3"HVy9?Jr=s:/CڌZfy`m>üZu5i-DaV IDAT4AtH5#)+}bUħ>rRUßBbX2i1%$aa8`fzȸ,dPZuI+V-~/pheZ=3djp?L~5V ߰}UplLC`|rm}8`],ٰc=$^`8ѐ,U,i>{ZԀ>?|z?ke356'k@Z<ǖ)ֲ$AlUfwj?P~[quuYKq˫+[;f}yDG.]ɇ՚ZTZ 8CWq3DXZ<ػ<^ݹ/,V!;@ijy z'J)_2_]_7GBVDO*;HVpZP7~b7 TAZڴZQDx/|+3ܽȴ  wmS ٫*X[V/fGV850;̲Z5:`RJߑt7kJvrWjiujZ} d^.hH7ɫHWWyJ{q _n:AhUs{5o媅ŗ Nb? hտ'dwed|+J"UAm"k*XZ^rl6ŗMn.3ci!Coqu]W\pTUzdzhlkSi:w}$0(^e媅ŗV//~`AGuUdLg&ZSZu{s4ZN',%X!Z}G$D /#//>͞ȒM?Z |?2-$Zȉ0;*mLGzkA 5N#m?NJda%q]<TiU̪z/Ƕ|k7.[ BNSeZ=Z5_:VS+Vo|ru,,j|"|YZx<0" Z,Mop_zV{}$jH!LũU:FZ5xjajfRu-[*ra9Uq*p.UZ/Ƀ-V&Z@$?7z9ۖ:?,\mg-]>z~2=rV%v|ъUrYwd\\[K ,~ɧNV " W* X  U^01x) s2x+-cEV`#^܎ܗlz,mS0*ݻ~|,.04-`ıъ#p++2ƎQ焜W?amG#U[-kV}l9cW3[8vZf\ nֹiuKPD#Z# ˋÏ0 C`(-,gQT[S<;D!w/7<1;U yDf'9~qnOona)Vҫf.ߎShLHǪ x)aaیeSo@ͤR,x[}:_6 @cO|`6-^]*!5"WZ4<WAD{im p pԕ`<&nHuh$ k J@ ̞`VhAhēHAn7aڮcW[揸ˊ"Vs&LlXvđxmybH_urå \eok7?7ݛ7o~|7u^9wtj[V+LJz]ݶZYzNfˌfgiLk>^s,G[OR/ > ӃuCiUKGN8 &|Z_bovWW:fc3y2)6Yl]%o&E|{?v^W+OVUȏ)~@- n?w7q UGცkR6ּߪ+V/ȄiXBSZ}thܹ "mIVAN8mocy|e RO>FiUː0DFu9"/LZĖUjҎd~&VWP\h-"3AnHy†(ZM8 Z_A7k!G>AZ!oVZܤ+߸'IWVZL,#@8£x&?0ZEԇ7Q>.Z 3^*Īt(4%?ΪetG6QGL  w# Q-Ҥv CXc.Ѡ𹾛q8oҠޏ |xȱ7H~,V"P\SdZ(aRۿ D MᐐW3tZiA#q,QSA-O`z iO Zet؋мZve"03WPfj )A}w|ǚ6ޯW?o Wna yEV}t)6 ?.D?pSjg^n'^@ƚ @F]h zePey` %iZVY,sgg/fh^ VO7QLB"M'3Ja$97_?ywݯ'u2uu_}*!.o}f% 9w}S $otcREӪ| B5Y]Y:x{ ~[ru&p9Ne=7e b5V B{JE4S Y[~9;$1;Z>!Ayڢ%{ݜIf, TeG!@ixJr9e&)phvO}Aű~0:^Zbմ Xw?ԄX]Y_Y 4đCWQ'ЂᨏV~…fFWtmsx+e{_ P3#5JT8wNBլ^l"a(3^#) lcU<s-w&yK$ I琀d(~V)ۂ[}a{cGyVq9+vQoAwx7PމVXror'9zAY|󜨐oZ'nSn(;j{PFpE*yƗ۷Z$(wkN-)`"̽Z޺䁛.bՏc޾{j8,EסfjbmyK缓 Q&IWYL㛷n*>kS^*n(ZT}W^2`Ѫ-Z,Ḿ-C֖46ū ͆CU]UV!߮=W@ڤQ*u6'*<`y.Z*Q`VH nk 7n_ȴbU?NU-t\rXeUK sݺy74-wݸq+2+¼͛nV5u򙻾yC-'T※oVO fZkaqX>XZ\__ н#Uҝ$ɧ8%OndU-,,~h5d;m;d z~ɇD@Nmh/*5{ou9b*U ەyRzxŲŒK_ZHIgmxcgNz:_kJBOڤ Dyc8q~8lyC+sĮ7޹wƩݾ^.wm7>ھUSp[daϠٶO֢ڦGU֫#`Cv>l6 8`!=M}Fˎn9Ƨi7wqRA]]؊{|N_AVF8 3VZX|h"t5;B$.S*U/8iR9U25e R!=;ÞogFfMu%E><-)|Wv@|py4|m't~b";!(op Y /0}DQxv.:UGU:)aLǀ;%6c5)V Y>5y`+Y;Q%HjMV\\b<L ÷tb_12:_XZ ~|6~ub.jcZu2>=ޘqH`4X:?1'9?7~< '۹lr̂'7.L5Y}p1c|8ߵo\-bpgzR[8r }'&&aw:/l/ 꾅}U_s]mjy7#ӂ$ln;g9os_웇 V0R'jt<q>;\ ӘVH H}!;sPq0:C*sngb<",Fp2J~";qQ~D>DIi6j]syw!Z쬮8ހ4} W&odW=?i?ѫٹ 5uOૄV_Չ `a2<>< _ TeN O6;9OubRo ›8GỜ[^KѐCz> >ꫢuY.Xf:COg8(AV4n!8d,>EO= zbB5U"yVqw cpl.<[:!{"ZE X@F~{a~IDATdi[n9`}h W avrE^X WƆBv,,r] w}H,^1K1ZƱ}yHW/NC*lDZ#X!,c۷88v)#8`ʻ*]!#KK$I( e㮝Z'y:J[U-ꫯl(im*uv/#ee Ĵ^6! uê'1"Fh֬G(XxRLAT@84>)40Em _:+"[XM"VI' F4&@́_JԂ2/ S`@ j` }&;X,q0XR[8W;Mр! T&Uo~Ⲓ1vqg2PSwN=' cH4,([r$'HacwX &GmSjZ4afXcgmTDK_,Va 8$i5ﰊ`&(Ў @Ul1mj-VI""hH(o:!\IwVC(,qR&ĕԌQ4 j)Azl>>-9Vif(٥kFa%M2vUKFSANkT4[5:b$KJX=D)[0 VkU-@iU6FaXjgez VCՕ@ȮM`hH@ZD$~ S(t^E)cמLyCZ!1QY \ZL*UA bڭPV &" 8k7,Y _( -Q qVE"2kMd ]՜f;O: tC䙴X  "RZl#@U0khl;t=S{^޴dp8^cKAA#X%$FTX[$"pG,V!j#Eu *᭕DTVi‘OQ4"X% qjRDIkOsm)V1d֥mGYPsҠ)*0խFiSԐoI.sU(J hUPwR0 3|4fA! +L!=cu|n枙\tؿCs~ba+xk.oqU}cwh,ATHzFLiRv;Q]d1@Nbmw>X?ƽd4ׁ^J7mg&h>rL Me1|ۋp8X@pоS&xia[HQF] F/%0^O[X,{[6mƽN; m)-o^oT+uW~ O4KklV0j:>Bǝl0^&ke+~m< XPC XO|ꀇ߆0! xmC€߆0! x:0C3|K_}ݘ)V2o;ө(OC_k~g)^Q3ˏ?bHXȾH_r?6\=o.\D_XUΧe ׾{UjsF 7EO@;+xQ˷Թj}M)UƲeٳt.9)7\"9Y18PQe_8H:d2Ϙ5CxeRJ'"cF9OW6;'2iFy)d6j\CvLyYfIG79ͦ܃<%',c"QLsy^،{%UYl m}xO!rM۴VK_B|a?DI8Zȓ̞_j.w̽scv;k/¿ezӀyO(ҝ ;5%:kRrVQݙ]n'Zya?|K_}Ͽ寄Z~*3Gi1OeY CAq8+\lwlXO&K=gi> A(2VTiXhNBc c}UybBYb :ͅqHHȻSi+67y\!_j˃WC'FwSu*P-yQẑ6,umb )vb,J֒`SwyT:9rA>C йͲPmb{tycj:ګ{!9{X}d#+"*\{wͧ2mN13aOɓ{|BTZ:{k u p:EZDr^jy''"ykn-+\,g }-@L K묧u^D)YRyrpV_2ur >~kz vw'=/LzfgBJ/QdAx@EA&=VDt3 , ߾u̺*cҸ*dpVYZҤiV3IU{Z꼬U籫$keS9`W8˼eC3gK֙^˪,e篿B2X_hY$H;eU1^^-˴(|VgVf0;QFw9}xHQ0 'PJ6.¨DL%@z s_V!Ʌ@;u$Um>V[C2Ǫ)a Zm3l*ٍijhrV[k.xǪ$.xS'џ)<+ҫr2Pu~KV#Ga+@~tS¬o:=Ŭw/*c}?{?}/XT.[A@0)5L~aN]C?.6,٦f/3L!BӼ Vs¦lZLc/17O/Q9+J3g*lU~j̜\XwwPKSUx)Xz=g}:ÑUװӀ(dx35<5L땻nz*=MyE>"ibNNjzX%zդ]̺T*Q$ôf}c6UvEDI\}qU^GHQF=y ̸EYBj.VU{?06+C[%y\ GII8@˚FZ?WgZ,:/,#NޓV`G _VQЏ`W(=%w $gXͪ8.jJjnUlf+) [yjLD0e? )0!,ds#,`a5TnHwPtX (-,L:ɕ $%­ū4KuԽ-u+/`LqSaEZAi>4XRے9I4ZZLl!*AHB]cQ,:Y *wdsQQ(&BJ!neQŤAסαGG)aSu@e}W̹kU+Jzuuk| bZ~Z3^+j*pqkVU^Vn5 d(buG 9yf,IRs/0oM@ݵ*[*5eci  M*F{x3u'uiZmꙗPbTE{oJHDe,InN5+r+z(̺7ܴaT8(5¬6=Yu  d ۗVNX!h́S]ʠEYQw͆ŒŴv RGQcQHD4t* + Y7P!۞ q%uu";Z(! ݪ{[jNFQUKFBm9yliFGGwo|{*?7o^5J*ga/ {jF wf;RʧP%@RX jp`U%7I1 $)#vPm׃;#_ϚL~f3_N4[$ZJ餙%V0&7JCӠBS_,n7,4 ~. G?m}3v|rq꼐>ևJ/GߙΙucQoJa U: XCXz2XZ7} a뺮2Ƞ-X?&cIENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/letsencrypt/index.md000066400000000000000000000034341507671574500257670ustar00rootroot00000000000000--- title: Let's Encrypt date: 2018-03-13 description: 'Showcase: "Lessons learned from taking letsencrypt.org to Hugo."' siteURL: https://letsencrypt.org/ siteSource: https://github.com/letsencrypt/website byline: "[bep](https://github.com/bep), Hugo Lead" --- The **Let's Encrypt website** has a common set of elements: A landing page and some other static info-pages, a document section, a blog, and a documentation section. Having it moved to Hugo was mostly motivated by a _simpler administration and Hugo's [multilingual support](/content-management/multilingual/)_. They already serve HTTPS to more than 60 million domains, and having the documentation available in more languages will increase that reach.[^1] {{< x user="letsencrypt" id="971755920639307777" >}} I helped them port the site from Jekyll to Hugo. There are usually very few surprises doing this. I know Hugo very well, but working on sites with a history usually comes up with something new. That site is bookmarked in many browsers, so preserving the URLs was a must. Hugo's URL handling is very flexible, but there was one challenge. The website has a mix of standard and what we in Hugo call _ugly URLs_ (`https://letsencrypt.org/2017/12/07/looking-forward-to-2018.html`). In Hugo this is handled automatically, and you can turn it on globally or per language. But before Hugo `0.33` you could not configure it for parts of your site. You could set it manually for the relevant pages in front matter -- which is how it was done in Jekyll -- but that would be hard to manage, especially when you start to introduce translations. So, in Hugo 0.33 I added support for _ugly URLs_ per section and also `url` set in front matter for list pages (`https://letsencrypt.org/blog/`). [^1]: The work on getting the content translated is in progress. gohugoio-hugo-6abdaca/docs/content/en/showcase/linode/000077500000000000000000000000001507671574500232305ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/linode/bio.md000066400000000000000000000003601507671574500243220ustar00rootroot00000000000000**Linode** is a cloud hosting provider that offers high performance SSD Linux servers for your infrastructure needs. **Hugo** offers the documentation team incredible performance as we scale and continue providing quality Linux tutorials. gohugoio-hugo-6abdaca/docs/content/en/showcase/linode/featured.png000066400000000000000000002600451507671574500255440ustar00rootroot00000000000000PNG  IHDR L pHYs   IDATxxOŲz/V'ʝZŒ,{ջd^eVlPB 4$@ IHBΒ-ۘ=6;;;wߑjAAAAA!B           w      D@BR *    w \h{TTgggHR(J     ·\Ld$#,,"     >|9@=44JZ= AAAA A|#ۃ؍:.[CȦ;J0 ʕ   sb4P'蠎ײW:CynA;A_2-Â! 0qAݒa&Rhx 3 |b"(ҝ   v$RF8ʁ( /"",IΰJsAtX - qNL햰Y,X\ ]ITAAA k׍bw/~Wxyѝ Hp'˂F\& +3,-oEl`ؤ$Sa~y.$WArc>jG!\- AAAGVDts9H|I_+"/@_PA;A_&4j*D!d9"`6 .L[\ \pD+VرcM;G.A(}}AOYkYe?}WCA`ΈUȡU>2 {_v=F2o!z> O6-OgÂ/N;A$D( yA2 M􄝽UBp-},UrwLǰv~X?2rH!L Bm܍B3gLB+"=8m;^5<4+/eͼq9㋁gyƔϯ}kC <mx<}Blommb;(GFtgJ WWG899v {GX[[+(Dv"'/_%+_7V|YZ RY4GE#,4<v"$4Tqx_D !B_[d:=g+%~np06C`h(WGVlW1#|;?#1 Vg>Oeܹ|W7粕aW7~e n!&\ۊ+9Ip'w ']n}}`wwMe)w.?iڭg¦h$% EMoee%+BlܹmѿٳBĞd"&Vm5Z $O[gQi_ az͔P&bsq {sbZ40(jX,\/22\lJ`FTWaVV"dX?x;}7 _? o}__Briʾwpf](I" w tԈ@@XEc8OH4;@½گχeLؔZ s!&=B\l\/CHϊ,}9s@-h7_ԩS/s5k ''giAAAb]Fѝ8;իWcڵXx1L|9.cƌʕ+Ų|ƍw܍>ӧ,YbJr1Q 0~7w#FM>v4E ;pjO9\ś(2ءheUBFCl#'/Su0; !J (z+M=ϯk\y=P+lo]M;|;ԄVtu[VAƮiHNNs?zsㄐ?$1Nar=7`Oi.@< #Aw86,jO='p%4ߋ((5Cx$'Cg~ bPccuLFAWOjJڏ1]_ ,A//-xYtΉA8=$jE)p{`s :݉Uy⥚/SΟ{kyK4pJ{Q?`wN{l/eWpcmM  =27hv5wwjS6x ډ:`pf; uVݼݿEӃn>tIry^ǿijħ|}⓿bo>4#F1o"f1F32ȸYQb<||?O|{»1Z?qaG=Ztn{r;o-Ƿcw6|߿/b~wy܍8?Ķ8Eł=8E"j"X;r nbPƍ@pgCkg7TAd!pdz6*^ZhT yHyPֿQpfs8@R }\DŐƶY]7 P Č]| QX)—qpF<,yV6ts'ZaѸxXx;@bi$eMƖ[0kb"BR)b0Q\ǭ%G<&19+ X%ƒ}0"P Etm>aJ"Z;+QV"ŋhyqy8zD_4779 '| GG{9ΖJT :V#^ ,]*Z7VGuC:bcqp9+c[G=" nEhX+"J8aYL(<2Ɛ~T+H‘64؃(qeO_Cu8Ն-w~;يۻz!&Ve_թ`pIj ˍpuF4R,OrqF`Lm;=|a2y%ۇuo 3nbpWq\tը,!$"Ұm?,}lC xLj_|ܽQd?ΐʢ'B/s h$fjbX) bu#Hsn댧/ r( Cͣ)Qŕ8Wsk|sn f5Z]1zL$.*_zW F\ɅE\Z + ͵lK!kYs 5̐\ZX#m /v/bld[[͍Xe1O;A${¤a"ϭ bv*/̀MFh=÷$L8y`c _opHA`X c`9$.⿳#VGok:K&GsՁw0a)[;Vm7o4EEM6 nܹχ\HwŊ+DD+_[zx\D7vYpѝEE56 \^^ȃ ~3(-`2ҰnvTVTFHH,C1jLEy06I\lCgG;ʷeK0&A`⼜.AQag=)FeU5vF:!2Lť娪Ķ#PiqӑWTJmŸ(}G@-Gl.ًNX:i`&OE"TWc̱˞-[6cTDǪ >u,@ӔbΔ1Y eS.&+U`-زfLDaIٸjTR*[^q)Pj17aF !sA7y ;6@sg,@Ohy5;G"B6~: KPSSkWj)t$%bbVaVVo;ىBp<ѲPGAWx bp|4aZH,^+Yq6Xbg gk>U(eϞ<r{GXSOA6TD ۲U;ۅYp D,_#`[A1c3ƦhY9yr;B XUg5rؒ_5fs4-ZkA?-[V#.u4cZYVF83^IBlB4<.v׷!UyMo\:V yE=_^7~=<Ƌ^ٕH,ѝw Hp'|Mo, Nc=HtvsH\-M¹M'\wfbt9! <ʍG6<}ln C."Jc亗 V-F!gܧM?$Zv1YPP ΏQ\HիWKo<(ZcaRw␿xvX'NmRbyt{nnٹ啱C)X^+"2ߠ`xyz? 3s¹zuKR⌥9hAg{+ZXzGvA#Blm,:ښuh,ʯ…l3 1*bMNbˬD&G++ShnmG>U˷Um gۃ+쀑SdC+Q_]=8wt7aU?! ]x| cX +gl܏.lɓudyeSu>2V (4GY3x}3zzpNF,IJx<Ů19pMk&47[tjj[J=o!ʾדh(j:5(C܃Nbb8%"£dOcz2dZvvwhDK+?:pS`3;][[،66OOw;*)@|-9q//Ð6u!2fm8wwl*H53۹Ml{Xo;iɑRgb:<;F K{iRe0"܅~xI]GXXqEQ gγ0k~;ׂ,%=t=lsLZY{эC; .cZ{Hu!Y{hciG<)ys N:΅Zjٖu?%B=~>NkeyY6ut_mBO~#~ )@h Hv1׶"fZSnn6y'A\ wQ\\$A;A_ K{Ӹ2ala, @,ITX(„E '?>Al ,Gcx, Kl B%l{"zf?%H|\CW%<·\6ٿ/Dgt!]pbo~;Lӏ?.ҸaxʸVCDHio,v˹SphxD"dγl5ޒu{XzR㔆IB{lr666qlݴ[P{Pw##AV~l# ~B4t@i'Dm~*(C|pg6A#B}'wy"X5M+wO6Q= ϝ]^}S,wjM7AriHp'w bRaސd2Vv.3F~ vSavmL<K\b[1V .qlin|m"ast,,`{ :w^YYwDT.rQ{v3g74Y dff>i?O0Yp %=yG \3xLN k=t.cJKKEEE&.y6l x(!c4f464hnAbmsl:B6;?ף3nxANY9ED&C{J3S*F)!Һr\pM.[ps ju-ɫ^ٷE(+-FQi ΟǞސ }8y`֭X]E(ځD{|Uv#T6""ݬ0e}!:Pn2<q Fm0 TBpF:tGB7bt)tFšn?qqӸy*-1Pt``!VԆRl@gs*i">ćJ5PKN swB?m6ۛ_$T~E=i ڻQU8yADM746>;bPxJKV6s6|rC6v5;&ݨ[Ho$Le[%hE؞cSl>sD+Ճ: ~r9,6_/DzY][ iqDx#}Ztt(*gg(`AlJ5IDFvNa>1Ą@7~)zq: h'"­_pO.2y݆SS!q DT/p<.qbm*m&ΰy8v ]MG0:k*δt4 bk#Xu"bh!|"yW+0Bq:u˶`_pwĔucmQ]QP]M'C\U| ֌l{/Goމ\PG@ ##|󡹶8 /O>=\?F%{@eEÛ?ӛ]ɵ_c<W6Bv(Ȗc]/DʵmY >7&=fHA|~Ͱ?no%TWbܷC1  ?x $ $cÕN0ep+!*lH.0`^i27n637.k(X5M1,{y.lON/ ڻDO;,g̘Pa}ڹ\r"wjRr{Ga$msOx G_E`7cF)?d+C;wѣGCʕ"(_Mp1hO/X^S)V7C8|09,$2ugԄaQ;Wj!oX "x=YϜ@UU εt% QR}⢩ԍhiFgG N:SulXvnuҌ s3g(//V^q!Ӌセ&$ۅ ׄyiV렊ARp%dPQUjTԢt+=\@\R2!8yK!RwD8ԊP([]`lȯ@Csm-] zLtV0"܍-uc[~vTAPÐ1'Gص=]')~nfzM3!gA:DG8zřtCmu{ٺ Ffư2!6oTny3h/ UjܓI'ײ H}$ޟ3G/}b{7? ,N KnB{m 2Y_266>U7ܿz&y `l7@{w Hp'å0OvbyǺc`+.΁4$U"=䝥3#ad?v8f͂LM 8ڍ|W^yo>#LQJ(]V(.m%:cǪCa\77S%Wpy[ETnKqGTp߁P"\TAQ8Ёc+@)B`on6EjQ$zڰ KgM-B$.1\Sd7J4."l ?~l>nmC *]OJBm`mm/6DI"6D{$S'`ÖnlCGLABel}{K6|:xyQXijQˀ!$< }|4qgTBm.*E4||}a%5_pJ5T~=S̈́Ekl'vcg.Tcjv"¢E>Dg~2:AֈrwDuU%jj OCU۠NBcgN.ADDKdOm\jɉPBj5h -7NpvvںQDWw `VN1zz{Q; QcV - *y0fn0x-\رwt*1 W`zxx nZaB,XNFsΉ>|p=CDi`yQ*Y9*7q:Ѓcu¾ºz';+l$ +)g G!e^cZؽ"+wݮEȺWr}G+gw$=q'{&^-c Cw{ rfn;DEuPȂ2u9:{p&EdT 2'aGaNIr|D{_Eq3R+_h/9; IIl"/8=ysν ف q 8ՌE ]xdL+nyFb)tGVApw UlKk=0 m-CgW7UbȮWKGZ QrŃ5:Y<}*N5uC\4δƥ 4L˄׈L_gٲGwA6 ŻĤDvm׋{x?X`2}8NeiX>^ uYnSKVѩXfR4RQgm.CwOOsPបh:)q uRm=P=/z,=aP钱a[. e|&w_Jl̫BW7?/v,e:EIJZ% =vnpOcu 3RPq [y,DH# W2w[:+֬Bv!z=uku $ˊ)srrИi!YK G. -=xs Z.:AnF\R5{w7W@pVfp2K V܎,.6LG[_, j`2T;L"wԹ;i&:߾&w7un=zwl\rpp\TQ\P3~(p ]]l4.ys>>y(Ro pR;[h렌B7f&nn4ԟƙ =cPD+Ps^D;r܊Nm/ڻۇ֦FttbRg ON;-lhZ#0/hM66"O<28(D5UEGk3+hn6_2aQj8~>XS ._®6|Zc}n'lZZ>a\ A}{x,xMAm8[ QaA;wS'ND'; 7"his7]eUL g)X%E}o? '`>*q-eN~?APE9CȈ¤ŹhhBOg;;/؂}ؓSVlFuϲgNt}HS'RGY]>Fֆo@kK z=ڑE/ǎv,ʈCHtx)QE'γRuvtβ{j#c*t @|1v8!\2CἝÇm( vRVą}(: R.$eb?o'W!) t+axhop +ff >vb olQp݈G$kPTsxP}.EܾEHػj.5_9s/[ӳG~މ8S-7~zsC~o!Qo"z(rtϑym y9hzIO?}xke #// XG{ױfHe ANJ _H2E'\tprboGs^TpA K- G81L wfm\)-B"߯OvG?ܹ .\hLݻ$zs}~EӴ+WcϞ=B4yexZLL z-S~7δN.9rdýۍAK!u 6̔)S=%%%b.\ː8zJ+aȥRh䃋H)ԩ5;w֢ 6BZȈ*akeiEEX6k (5Iذv9>!0k +k{nnY3ɴt5t((+FSXB4 AeUOEi!O YXRFc|ڽ{vB[o2XɳARi(_V'0q QWff%B&b"*ir,1XDIC1z<Ub+,9lPV^9c"Dzu[Q^I:ؖ4Zw qIcp"&GDG+Qsfdw|uZ5Be*,[UŘE€!!{*J*eRyaͨى]5X`.Yϱ GBT䗔v b\f6򋋱bdG>:B>a J*DYUf#ZItqV. iD ԱQH=}9KlD5枽{PQuQ־b= 16AX}EQR9#B1r4vLvkz)^$cuCeNjVfOC,{yVϓp\䣼\\ +*Qm=t1ϺT R|cL|DV/chsjY=volxb>en$kO4 o`c5blg"j?_݆?o^/߼Wڠ WrƯ/bgq=Ca1<˼2}'x_?{#XzHp'w jr<^d8 KDO;KTaj7Zyxr.*aU;l0j_ML1 IDAT~0!O"8|$[l7ڷpI~ {xp / t>4 (> \|y.|?/dK \80a ܓB@ {g (gNQE$_";o5O ?x6C>03;r2;qA,6Nt:aB:uM'1)IX\teJ; FU W78!04ag^7p'b,}讈` 6t?6옄{9dmeeXF`Vם9! *%|m0"PsqvcX`k znJ9Fq?|gù?/ϧ{6vE~!бF 9;vێu>"p>cgG[sCRN9Z;8G;_ nC0blmaůol  "u PLԡHzZ`H1P(ւ}Gh5=+vO'^ "vٮyboY籕5pV=-o>_}PͣX{Y7um-w$OC[6X>W;'W06χb@žIp'w g/w{ (WMVܘ~|X7M(زpl7Hƺb.aqu}˰+S) B*NAаrm.L744 G}t~^UUuϗ|<$$DDPӍV!'C~ !elllDT*7p]HlC'~gV[p,A<~p ޞpn1FPy葔-G=;s"_ 3\06MZ疰 M#a<_h5Mekؖ$pqTN0`*0Ll Eb2oߖvk^(-qOR!8꩟tBdƉ_$A;A-ؘ֣G@`x~"y"ݶzY:H5p3,DD  O-eu%!&)9nh\.˗/cҤI" ˖-O?-"Џ= sssLff&nܸ!:(C>ΣBō<k:aaK/ y!ss?qD)m޶Un_>|X<FOzbO|{9TǠ[N7cՋu{ Z~|{Sk9)7#.Mm[q׶! *K]7 ANys;| >)WaxT̉yta^K8WH&ye08W[G[0PQBNyHoçZf U(QûMC.r{xx Lj?rf:/$o[0./6/_'Wo' ڧT! EPPe$ģu__vp)Y{Biq8Nx>RoCv%KsC^{\(w Hp'ⱵQksqL î< <!2D$yk"! peQG 94e0;RIo{ZZn2t>᳦݂s(η(t{9ro\/Ƿ|96<" G~5أQ$As{ X7_n$EX ;4? -X? ANcF iT'XjST)au~r%$g]\ۼ$I|i+}(/Ӄ/   w Hp'ⱌ ^ᑰNpwX KHf$ߙs!: G,\ v&AAAN;A A[^2V wU m֮jZVZ73F{/a=%@ ,HHx;ܛ!yޯ{{g\{~${]rk/Mج#Tn.p@Cש_GNf)RUrZIٯHn4wRF'FlQGZ6oaB,?SMȬ#K߿o;b w?yR-R|Wk &AHr_h!5EP 㪕nm94\wwU z&)LUZ4#"B=v4+א2P]Gr?Y̼ l@7mDm|y{\54ejԒ{6H-Z@iպ4o]U*)/U{?oF_R/#@jѲjJ6m$o+Z =ҽU+Wx ҬFci`k b09* p\'pq|%"-]X (((((.bS3\Y.;@ pw@;w p@;w p@ pw@;w p@;w p@;w p@; pw;(Y 2M@dn(Sp[gDI;|B|A/%wɇۉl>R٠Y ,4qn-Yd:> j.~1.3.5]݇|q;&N%!\#L1f-߭ROK-'}_z1n{Ǜs!V$sTqB#'Nd~xL5_2KNờ)fΓYeHM2ՠԆZ)x@K[J>oA>Lجcq6y4qgi~ 2JO%Y}$Ȋ clsHLBt/Gv?"}}]e{!}Q%kgp$@>>%t4r}wJKsaewC 2Q~.\F:~ &[OcB% 4`* ! Mc i܄KWf5jnn[lFm9I׀Ïyl=2xX9-)~gMqSgm޼EK[=-}(Q|.+EC;w kQ۴CSTQ3ߠBknrG;κ9KVRJ/J+\ϷeʖrW_m\[o+Ȗ]--ĭ[.5oRh`$b_PjԺ}y??x߼s_/QW/_orFW SBE\B?^}6^h;dx~^0lwԮ0k>" Nً{`zwuWZ [~@^yu!$ThQ|]y'WVO㝏]{AvKm^sٽc'ߒ<#\ p?S m!còeZRBEw 6+ğ4K|$lڹOO-o4uJf/_־^ 5s8`Y X+`?d ]7:tT^z_7ft[om9KV^O*@u$ф7r}_It\M:]r|)ɠ׹tV~1߽πtN6>ͷa.E@Pl#@5̜x |n^C*_w}@/~dD'}EYSym~~|zfyIORWu8MocF8L9;V4ů~[WG{l&ve`VLp|?&!%B'̅;&6="pn͑r0ᤷJ 00&h4itxfTv jJ^:d '41saAZhO v<&<4^y'5|Ӡ6X~ɧ{&8#ދ#~]|m}Vϟ {ԐVkO{LjZpKf]O}7t$Yo̔?Mord}퍷L?l61I2`hYbM?z@_ޒ y ioGI4byC>. }g;-H`7[zcϰ;=W 9iG$O=<_[o5o ٠8wuG3?y.uiC!`u% ,_c™n7l7be<䆾VN+D[ 8+V~(ڙl ʘek6Ѻy]ZiHl;U\9iܴ4iv 1ͷ*Vs#=!gB:*X;mjRlYuW13~lENn!y/m$W~JVmj׫c&o7, ޗ9k4Ot$ti ݋%pKWTf=fuA='LָYs~CKǮ9M: IDATpZq(w7mf.TQKjשk ۦ}`CFo Ց;=-ﮭ\Y5h(w5ۣ_.EC 7;%p@|- Ka}_z[]rOON%ptы;M}s9[ɷ-Go.VI}+r:j7YczSJnt{g~wC3U:&kݔk?"?Fd~ǝ&d޲RƛrUnjnkY`M_KC/vL cCw( )_o3D6l{^'ymEJ W O>=_>^~,)\`\|N=s wc&M8~P:pm.w!ݽI/ߞ܋h 6oԸޖr-M[{>?,fs͟y"`^h[] [!󤨁{,y7{?}=g] m%;a:c/ #T-=r /mYB+ oV{ypme`/ӑ6ާ 3#b;dFo=W:{a㫦_8[$KlwwĆ3, hcGkK-vw }{!hi:: ۾3Bӷ>); ,}bkC-$,NB}(R> =o6ҮS7wL5:"ZoxG6bO2mhCZ{D{sI "3s]1_ը]{9ѫtFm(!=z__\iz.6l 6~_ܐV{ݸ*U f> f ӵuyYj<_/*3˶c^~:;xY# x:/h @Ph홮a OC%:9#ϏF nPZ,L2I룁ޟ<{zUX1]ro6lv?zmp9t<Ƕm9R \]Gj o jM0Wi'՝Zԟm}Cƛn{ } &{~GmeRF}{Uʰ1M!{IK,Bnݙk_”x jvdwX='ybvsGYz2nޮn1}' pذ01U{)wR 0ag~,́q)䵿^u ߗe?e† Wsj{?zml9_|Z03&NkI'}?mX+ۆ9&ǻWm\tAwlpml|t5u^]}-v ?ܾN>uB<ߋ_XamYϿ }vt9OnpW[l\%+p/9*~DxξcKwݗjŧ<ף>Zkf^p}1CPBk[=';g.|>@P0b&h,τʇMp=5΍9_޴~Ti{_SW^unrFA} (ֲ/:H<74!tQG>'3I .q;6G5 Yo| =-=.E{[nC n_)3ھje{.i D╆/e^=EoE ´4y}? /8p= oUѐ߅wj)RpG?1 MvgiĆ&5p#_}5o]g4x& nzErl{*'_| ۈ͑fmwx*2M^ǻ Rپvۮ d5] xx'N5t?&;ɫU!? E> Xre۠~p>餧GFgRD?써ԁ{aVFۨvݺీu&N=owD1RΟ%55;i0-Z.T[7q#Ҹisi3iܬU"mrg]'`5vdcǥy# QЯ(uvD9-;*'7쓯:toΒ&Q0EFMMk[v,[Ѽ/ t[ԭ@ʕ+u6m7m0t&\Z; }k~lm1~lؼVېQGY/[ _E~?y0yVƎQ9К?pToۗ{}z;=G}酱M;yʖq eOta:=o*ϫ]oKϾ+&!ŜcfB;@PRܾ[W{Of-p׀H{g9L)_z3R9<[]Zw]$r'Ϛ_`"M۝P톪f*7Po dw{:0 pУ@orGil[X 9G_hH"Goo_S"-[On=m [n&Uo:E͊[jxw%i's?)=X1wi- myVy-&lq+{^m[ 8{B懯F[/?q?<\Sy{;vt^xW[1z$%S.%;*ݎ4ђk2uZ6teZ#cKzZߣu9un[LNvrVak([gF._%Gkk >ri 5ͨg.PCwjv!7ts@+ΆyjnG݆J'6+ST^Cv^9amq\m_KBQwWz;[/}r9of4E.p]}5Fqغo f^jxw\=̏e߷ pD#m\[3:L*_g~^|Zn^Ky\]{k`Tw;AV 3/?}?†N]Qa[Hho#r wrz}3~yMI~A$&1]?'tus ؉ѥ9.]7JUTjn7hXc ?7i~0M 0f;=1U{)/18) upGGR׼ؔvvF0u}޶C@LVj^-~.4XNqiV }s<7/ɱ P15t8oʾR%PdvCދPT%+uʕIJ&z#>pwe m=`hwD~*YwQ{/+p5&Qx*`;k}{}?6Yb{nޞDgU˚ﴕ2lw{u(2eʘgm˱gejx;&NpCw?}-6 .T=+__%Q[n;*7v h[,4X]}yNk+I7̾nvE^]ÝPcuy ujMw+pݞ:QNkυsd)ISQ]q>wcʖJʕ*z\PC#Lw3 v;nڄy'? @^4u5l+Dev{8,+{jx]V6&Z&h]k;Ͽ+9t ]px뽋 N _-Yޛ]f. E /*WFK(=ܽoDJV @XAfߎ;=n#?mv0ض(_y~9y/ow7nb&Yױ~SFo[AC߱p^ݹ=]R=tĩ߆)o|1fyܖKMs1<& lkRlY3ل5j.hأ?X:> tvD&y}utmW}G@)36ݽ^Yg'$6|^/H|/B pS{I:uJ]o u,Ymhy׿ 3m6{o^kkG~؉QFI0X[lBR}m/ x:%fz,}O4VߛeQ]ü ӎ6oy.^P^Ĺ'| ڭ;Ū؞zn5[}Ӳs mZ] |76O=M!}z_n}MMo$\#:az n3}y ϻk%p3h؉A'MusVo}w?C۷dnGMvt[uz[5^B]2eB dރ=;mGtHGt2Vo[hxK )Re">:Iz6[ _"@{ZUKx}-wv`]@ Pn9(o XڪGS??_=L9ϴ1ݐMl]mWoZ>^?eH%S{0/ ϶=)xbTRGH뤧6Ծ:Igݎ}Ek6RW:n_HC|{aC䑗"t/= xuɜ+m\nحGqe/{m}m}Ҟm;uy̌m^M sn=v$r}FBm˜:Y9)e=S'tG;O`97Rs$սPi>_]_l>{Oosf;^l^xyYwb7n`cGHw;jה뮫,对&LX n k&%<~6gȦQ#VMIrڊ~CO͈[nk&^wtwgt{8m0-+^01O{^~ʫ^ ~L>mOQPf 4x;:^G_?ʻ<{{$zF^|}Hͽwکs go9NZbEӢǶۋ?y7Mڴt_ܭW?sAc?6Eq8p^ѾvzqyǷuRc;x>-[>|{u^ܲs~6]r{mUd5sITcIh=6{io:ޤYssy%{m> |=[ 5̳N)>;(N2W]Tn3N&m齖~q@b޷G7ާ;@ zv[&i𮽀בJGsjhzwrOQ&RuPG7kД[/d@q"[n5 +U X^5PUA)lP3,u't 5Z~rku=xu/LuP_f^jY&3hxvJuG|-F;Lsw5Bq׶Q7t p`.2eQmG9ȅvEr+ThqrGoWb. FꗿyIZom!S; L;jai&^6> Ozc}BKm%+;x~O=#qy}{\L\ǃg=,yoTT9z7nܛX[<'=E_ mKZۏ>:k2 IDAT,]ߟ^Ћh6a?zHѱ-8tgzBc|ھu?{O 9&bYvOжRn9xa.}'odvQho moG[ i[ y._̅s5P&ΘgĈ̻ ttN4YкハLe>ur$ ],~BmGouyRUzqUeI3e\l؞wQGH;0Hj;WzȨos}e::u? ⍷.p_=)䷿C"M^ûc{y[m޿mD9_La^ w/hu8lmv{u\__!AAސ%1C}mٽ?5XV{mەuM^6|cESwR4]= |ttkM{[gZ(׿\:mB(3W%/-D[0iॽN!_ ~އk6`PGokKm, L5ߴObb suڻ^5SGʪ/v&I/'Pю,/hr{=;YN^=:we^O'޽;e,_5?oeGHho3VV PWn )9?Qmt[h5)7fg N#۷$+7l5[oUGq1}D;i|_5u'-5o7BÛoC>;,&ȍw'v:|:6ŪξWkh mפ<|&3R !rYǟ|.?ǟHna2jT3烎Nɔ/ڸI݇g̓KWv1~:뺝t =3O~&icL<9 ӧ"{>9s/~sϷ#eΒfT}V^Ǖ>y-vKO(}{ 2IvY^QMSrBd_^'شK3.g B圻N9lkw0݆6lqպ#~KxCu-{W; }-p3v7ܼqq­CfCBv+ R:f=ǿO:q]}h,o/fŵm.p_O:O.3[9 @;w p@ pw@;w p@&mScoK w}N(Έ? L9%Yz%BwJo؞rFbu4!IN$˦8:F?$SוekI7t62:AcrRR%$J$gReʊB jL^Zz7t2=wLNQEQEQEQKǽWCa3]Gk{wJgdFkeeeK((+22\}T WHwm/C@nw(((ʬL7p_;SEQEQEQ@((("p'p@((("p'p@((("p@F@NQEQEQE;w(((7iJZ} SEQEQEQGu ۯBڇ;Kn+MN;EQEQEQE^@@ B:"HE{ۥej .CWM pϽr(MuYש]EQEQEQ 5<1uf<$'.YG:.7{Pws /oEQEQEQ?pFwʙLoyIig%>grr;w)IqmlXA6n,L_2fI\LDXԤ9ps%YOPEQEQ= ܵgё6l"O.OZ-?$K#c6 7A=;w~9u2Wwi1Xz+=w2 dpo6m/3d>s|eeDv}w_wç3·2s3e1u@9BlPEQEQUP Rga{5 ۇKn+QUrN2yL yu&9dy>;wWtn2G9Q8"gΞib=D.'esiAS ܗO*/"c8BC{$bFII{;lYB>Tvŝ>({1GBHP>ٵsD? )pOsrIٳ{8y>Qb;vȞhI=l`4)\Ϟ-;Jv-%{'ce_T tSx\rs%!>^Nvz ǜK=)ITt=sF/,ws$Ʒ썒#gјhw$ɱEQEQEQ2p7gim eZ&bwuX^2KHY~doQpHl!nvBgMΝ{% fDǝ8ؽ2nXҥ&]|=plvA~K&̞#Gw>L6G%>!&`Ν;I`b M&FNcGH!ҵKt k#](D]*}BCo]Ci3dĀ~2N󈭋K~ؙAH mAE4?Gn']zcnpdǷ8tL7Rz )GO9I Νmե|;c$:<$K=XzIאkHq810(((nw^< U{k湅mewG}Ou\[F'O%p@a${O=~۸ŌJ?q253ɪctIHLdH.sy/;-Q%5-Mbmow~c抎s<{L /ݻvo&͔%))YV#m;wH}ݶVzaS%USGIHn2r$ND%09vhܮD=!t,60ٲp\'o?J$V@Z*Q{XΛ(CQrL>..}%1!^6G,nȘ26-vIĶ(9u*MDaac߱r]"w((.un&L ^.Ln{NzS F>Nz8Fvs#230i#%N9y [:o#mKe1#{Ov2cրeضJ:t*[MKLYl Y2a6YNej858L)'N;uh3\{)[#L)][LBڶ;0=:ucIdd2w|:{)Y8i׾4D&O-k֮KaE]Qݗ:cthY>Ve%bx;yw\3q2x3Yig>&Czu9Q[sG&'ΞK'JparU\=K{w3YBz&yj„2{<(\$9aɸC:|fv 7SIYAff},LSEQEQuQjʌV_3[֑ڳݶqWBY2zU u;={ˢozә^ț ?Gz|,ٱ_E._}-ۣPyٴi$ʐёҶ_ ӵ"}f7SgtoVmre;,)Lz4D[,f@o0{#SeҐ2xBw]ߧ>\Rf8 ;\>Z.BIGo))lHϐ]kfWz˞#',6R:{Lt+{N-wIZF){c✿gKJR\4]'_ٯASEQEQURмRmI;$)J=isgb"ӗg2ogӒdżҮmgٲ/NN`;f$te9)˦,'ImҦ,sl3>r .Fϐ3&pQ%v*OO1JS%i󻤸2k;?~d5rP4qI@~h& #w/rճJ0ٰM$Y2[ܱw'M1Kudҭlp/.4_*N*]۵ V;WFoä߰1}J6meʒrΩǏ>q./ })\v&;bt?]۷IrPɦM[%6}-ka;EQEQEQ7=t62$Hxؓ ڳ=x kh j.{ ppdYsznooӧO>]$$l:d>xw6|;ω=㏾{txx;+xl)d=sOo[l|i5 ~EYVDZ S-T%$1-gK>ɱr}|V.ǯNQEQEQ% G7wڳ]GY%1# wWzgțGUY~lYs rA.6{|e[ٴv Yz ,Oez_,o3;+[0m ,ef2*EQEQEQ,pϏf]iބIS p!MJ2r@٫W&X$GS@QEQEQE^н62PBw_edsg\zSEQEQE^ piCQEQEQEN)(((w p@NQEQEQESEQEQEQSEQEQEQ((("pwEQEQEQ;;w7pO<geeL((+2}fwpQ#SSNK(((Jn;*Amɏ{6!wio}ڇ (2M$ qL#SN4IIq&U-A,v̈R}s8((Έ$11hB$HMQq2auL_ȴo)-td[cNJ9˞"p@:pe?<.fm)mt@at丶k> p@;w pL*kû&Q0k5@t ֌D%DAP$("*"*A@APEݪSS=3 3~>ӡ=\pp w w wpppp w w w wpppp w w w wpppp w w w wN;;;/ IDAT````;;;;````;;@a2W?9c!B!B!B !B!B!a#B!B!B wB!B!B(B!B!B0B!B!B|;B!B!B!pG!B!B!A!B!B!P>!B!B!a#B!B!B wB!B!B(B!B!B0B!B!B|;B!B!B!pG!B!B!A!B!B!P>!B!B!a#B!B!B wB!B!B(B!B!B0B!B!B|;B!B!B!pG!B!B!A!B!B!P>!B!B!a#B!B!B wB!B!B(B!B!B0B!B!B|;B(6m+EH1XBb! wT,Da#2Vv+֬u? @,$pGB;B!){@ Uֹkv AEIB  Xb!B!pJY4`G6@,$!BtB ";B XpGa`2 0B!D X XH,b!B!X+b! @,D! w;&!pd `#0Bб"XBpGѱ:VB  XB! wL&b!;B!@,pGa#+cE,b!!ct@,$!0BLB w;B XpG!:V@NJXBb! B!D X XH,b!Ba#00! w;&!BtB ";Bб"XB:! w;&!pd 9;B!X+b! @,D! w;бd `#0BLB w;BÝ`2 XH,b!B!X+b! @,D! w;&!pd `#0Bб"XB;Bѱ:VB  XB! wL&b!;B!@,pGa#+cE,b!!ct@,$!0BLB w;B XpG!:V@NJXBb! B!D X XH,b!Ba#00! w;&!BtB ";Bб"XBpGa`2 0B! wL&b!;B!X+b! @,D! w+cE,b!! w;&!pQL|@,$;B!X+b! @,D! w;&!p]I]pn {l$ M!pQ;NoXqSa3dȪub@,5>.Z{! w;@22i[gd27 6cLPV5YvV]5-EKLا"|.;B!vfΨSם|)zjFF߭%|v8Xצm[oJtcwd L_w$Z5k}w4h\߀X;sdͼo݀︛nN<5kҽnf~/A[/|=0B! wصDgH)ML&(F 'MkRros/%f0X} 抁hn1cM׿FO? ױsݲ|R|ܼ;B!DJK=,ըQ]+H"CѢTR\~f8:^tP 7zǭ80ϊfoUV?ݬ; B->0hF۶sGuTdWXnٌ *W>txj3! w;g}IYK'V=ÕاlzÝ uo|*[l6IS*U>5 k]i_pv=(֕.Sƕ-W.n3]nlj?p>+VxxUbe{#Fo>*OCwpGa#0ahivwyYa^J_r[:e+TpŋguYO9-\uXa2A^b_NK3R wNsEXdL7WRmڍ8ɯma<3{{h R5k-M_"!p\wbb 2yQLP:VB(Q&Ф_"~[:{PveGufˮdM 5-g+Vf+c={ /(ڎfQ*)#]awwb!Ba#0ܡ5kՊJ$X97 &'}U(߷tJv׬o{`!K|չⳠcE,: AaVflf $~4Db!d]s/^s=:׷9nR2yoG}DZ&Ձ{+C1݉!pBRg}}gzAYF<e+y[Mek[˗Jʨ6hcQτ 7mܖQj}#cj1 Bn0W N>9DeԵl>߼% Bn nek&T{s>+ZHcxcGJ B!uԡk#DgP!Yzuq ꔩcOmGLpK6tV~OMbcE,CX}ݩT4k쿿ۯ?ib##g7-<(6K ^tLסTZ=}ۺQ|v't*޿NsIVNs[,6HNJXiϔϦUdI3כCZ2tL,2X;TJ׿v-dݦ_ U-бv[lUTrW3,UKG0܉!pBرik,U5VSNq?wTv?X U۴tժm-PŰ3ga#G s=79,#Ës Bq>&|+Rۀz{c'?Gj/ʀߚ:+~1I_p pkJB:! w;Y̎:8,Itn>S za\3콷fQ=צ|ϣ}j,>:VB(H[SnLTT?Yi8HW3zI B(0{6^{yJَ_yݷ72m6bnY;O&ddW^u;vmWb}0܉tB! w(ەi+c ^u͵>I\-!vFA=βe˺jիۣƌϑԻo5d/:VtP%eMbOEMמT}W,բ*UD FѢ{Ι@,gQܪVzV.F!Go~Ou{uw9do?W\ Rv} eޙ0܉!pBg#C{eduաwGd&iѭ9"{'VYiWv7tsT7TF7/zyEWCa}NeGYT*g3{ۻXy˭Fu>|X i٪UXRTť)ZL{ڌd ZFK3ڌ6O]O>t4=>]EIf;`#0BP$e5p!Ri:oPf0;tQ&x>:UtPpbD<쳃%JlS F  `M5*R-Z4w p_͙-n%|0B! w(dەY|y_^FLJgϗnq<ܴiϦ}Mx2?X o>sV11N{瞾NTŊ>O}8b!v=uOb\ժ":u\n|Nf6Z4][0B! w(F:5zAɗrrbVlW\u_U?LRб"BA߮Y6CbN-^X,:N1mFLb!씆{T>r`wŷ1m2pGaN9`vKG+'jѽW6fܸN] +b!8m۷f`/+`QGdˠR0X;xgG67ݷ]! w;sZkfS&v}hԏ|e;Ю]'ѡcE,EƵf[u(N-Y]zIaJfvf8 Mm: wpGa#0ܡ}gfe^Xe}̩֨:uO8x鏾G;+b!SWeukY7dp76;.ZHZwGcv}舑$;`#0BKI𻨃eJB_)e++b!4C?i3flw/H*e2e33-0-dɒ?02Bpp w;Bv҅qyg^=iqfvsUUnj{߭O[_3z?ctM  ԅt[1k%eW^0" ;;`#0Bswf~Ltf^zȔwn >`"oL)#+k {?X )6)ja@+=ST)WX1wBpp w;Bv[~!ub,|{R|yGq+7e~1sVx&]xiEܻKha01!pRvyߺÏ8wb/]xkax;Dϡ`2A՗˲A̢ᬞJ+z#^qv BA4[@}]1܉! w;v~Am=#tO{(]&<+L&(_{LCtm@,i[kǫ*p]U;Q֫m'` B!;sQSs=Z50! ^f-e_kb@NJX .oǴ2[՜ & Ǘ;v ڄQG psKe/'׳On*UmMxJ8xN,D! w;Dܐ}FkRlTGi=8c߱SiĻk{`H& -v~xᮿ  epadWX1 y6W8\xWnYv[2_xJ,D! w;XsA6S?aTL%e.i05o2zlҔ)LL&) + 2W= & ,^}ވeիpKޮPWɘ&ԇv/;%!0BPKuwSnѾcR3`3[isKt'xu%˖{00b0ӷi;0׀Xmdɟ|n,F WD|5h`\{D?C*uE \ #0BP8إ̔+WOtf~Q~}tRv܇>:Smڶ.:Ryot鯌+@f 7]ҠaR{"Eڂ6f~35k"z_xF$ B!_|ulm-]7d>WYPcĽޣ+^>[Tr{pS# Ban+*Ʃ(\hu2˕+pZ}ϗQFݺ}+TpWu#|T,]w0B! w()u-ѵyjsOgLPciƍ6wnb!t{P{}>s{'cݫҥK'ʔ)>Ӣ{-F>]Y0B! wi2Չ:}K/5sZLtmKlJ_^f>[0oWYN<ɛH_p[l9eX;e2&;5\%Ko:߮:Z+Hh w;BvL큶mL&(ԱS PoMqd$ @,>f8wIQY+[/9spChf~3ۭKN!p]b:VBk1ͤc;/.Ȁ" aWAgIl84qLF%w *`#nMP IDAT0BLlw 71c$v5]ad/\ؗ|ࡇ/u>ce!pdu ^~#Kϒҁe`#0BLygB Jo`#0BLB w;Bѱ:VB  XB!:V@ B b#0BLB w;BÝF`2 XH, w;Bѱ:VB  XB! wL&b!;B!@,pGa#+cE,b!! wct@,$!0BLB w;BРcE,kXH,,1j-m|:>OpGa k|պI>{ vVto(ǧsv>] ݺM_:V‚v} ki u7e@,95Q]m ;v&mo B!Dj;57wLAXrGؐ8Wmj^S'J+ YkǧvNs,l;rWnŻli]~w_m8eu)Ne; _䯫o~VucԱ 3 k1jO˒1pނܥ6ўޘ>]:0-I_f}3۷a@o?+qXpG!:V<Xo5.ٽץ۫t7xW:vr-?7 QuBREVco9 G&L(2 Ysw߻7n]w nv-k [Nkeu:&4x)ŵm6X ڵ@Qﺶ/wwuW\gu㾚3DZ7hPШqc0q ۲}]͚=oה<峩u]_p>\`b/ [w-6 \Aobk=ztD [QmZڵ+1bEKvK_N;:trv4M>=f_kw+J(?Cm 8]~T< 6}Ocwq9č3B;Bѱʧv5‹|?'Ψ[׍=&_2&}<~% %(+{^CXc~ǝlWO?s|pyFᤏ޻2  2i3}[o[U^xge wba(Qΐ!5.ܡfQAsO} iq[fXѢpWLVM#Gθ<߮]t\+W;B!^hQ:W^uzwo :qIQ,?f|u5?G84]v\vfu|;jժ8ϻEǞi<:f}.ܧjx[mيǠ?|>L3ϗp'?vŤw}Æ䚵h*F[|&z~|w=mϧmsOY=@dw`b[BEWJ[b2@,,4{QI)j?9]ܠAկ%(_2n7n{j&b fV"ϋ/Y2b!Bt n.V{w{2:)SNW\錥xL׭&3ᥗ+Gۋ?_uoVǶt&>8٪EĶDvltH̐j0BŊ>R[+f-ZىΚg&:z% sTO皼cNrS_gܩ3*p wbb\M+1cױ-*emt=fuzXKw f{)VĶ{s4j9S9ڷ0RK}ǿq#S-f23f5Υ{߶Ob!p{J5\J\3Y3Sfv=9-X6qQ{2gG$C[a,3K'y˹}6&~9n'߀oܮ1B! Bf*QR03r*nڗ3ܦ_ ;:dƫ Ì-G_Oosm)˶>US4Ϳ'X*M;N_3/=nڦ_6\ 6n;LJ5md:U 96mA;:?406 oν:_k=8{Js^T? > ߟ}_ϙcu?,z^j(ڹ9SOcc2p}Dƈli !+\ú'^F+*%L>nz؀-o58\/pdn%o=|{tcg{,f7lx]l!oϦ0ƥ3ύ[.nBzN|#H<έ 3Sޣ/l]&'XX w~_D,n굛˜}m}2m=f~mt-oůL(~@\B۔mW]}_ saqL$>w3>z|k/\^?Z5|Na}?ľx神w#SXB! ݮR1f <7.&k6ug}ޫ/iIꀨn O.X;ʞ~q^.]ܷ ӝ?Vo,wr 3KQֻ0yF_tfLWzΓߧ_?7qUv:Ti˲$lZu7'ef嫂 մ;_᛹{ǟu>> 8gv}5m|{~tZ*sL_Lw+֮M we3|; Qc&~O? 'i:e:.m[o2(ϵpdboqQue0RڵkfL]*/kOIcb)D2-ٸR]^Rּ~4怷uףWo_WS wmp},qV:'ED 3~b~rc:z*| u~(nhPV25AtFhP)^(STVKg}UZfB%qEu.慿#[s8ճwo|>ˤ{T֯j9s":fօ-\h1TV,^~c-K,$n w}?uif\PEpڎڕs/׮׮AmwԞhK6t77kKNk[]Ru[Ckf^$W߾o>h 7?n+NlHYo΋9z_[-9sEX zƟ]ױs;|=wos)mc}mP;%hߥ·v^~$·~_z'.^ ̱o?>FqU'1c,V/PH׺mvfIi B!^`0Ck jJyooK:^VL2Ra&u0 [0Z4 !r5D.]:6Ltal Q?Fu4t'zjuE\g_N"99i޲efhwxzKȶߞ}ވޛ !͜XW,e?l_koLz:;zMGm~Ȅ{OHek58 6{N,v[T׷7|sF=T~ʾ$#g-|ϵjڧz_dt=VMhԧb5IƖLh5^wʞQDv{}Qy0 ҥ;ڴfql/te}I[|5ȱ~(U`c%i}k-WͩLYBb6u}|J.d [~ۼBTn҄M1c^SR%ӱj? &-L_oSצt\>wy_ƍ)&z[c䖞2z/x.."Xew5zl}|"K,9ZD #􋲦^5snCZ!] x{`[/!BLIG}T)hBTͣưՉP+;E++R&ԬsQYe>i hRcG޾)s7`e:)KRؘK-sg}TJ;tL4[^̼**ց"SkSĩ᱈;5TciEX{^Ab(2msM߯2C=g"j!.4zͥ]S|שk77z>>ԅjw?Z7f͞;:?P=:tZnp>΃&} ><3?TR|Qk4L'?"p'r2_̜J*.;OͰҠ^|Ɛ=`Pjw}ɒT]WֱdX_~ O^~7jλh_8:_?t_.'z*NmޠeBekK(2q%⩶NֵJ<ʵvȝw~ȑQ)ӿLSoK>oʻo[GsL#-Eo,>Ȫ۝t Ӄ!AЧ5m :(M1yYݞc~߷c4V|'oN?ݝv~FѮN,,؆׬|IӨη n=l]y~{w-}.Xibd`kouBz>aiҔ)cJ*qj=ָI8: c7o6TR,ʫ1kVRf}2=s͚wo7~!PV}pퟍ}%SH_+-\UN]D,'roO9a'Ϳ3mjSjCۍ7=%SLUg=j_߾D |, lD=gyygͬ9s)/pGa jרQ7\5}֛#fkg, ;;2UE3:n&5LV+ H)V77u)$MVDz"?G9Y\ugsj B CubÂ/Л[Vk.z#mr{v,R3^!(+Is-nPK/"ş2YIkuN+Vf> IkUIⳚ6sceӞuoWSO1>jʬ9R9ovo&aO =TffdT)ʈLhRSc܄RJQFvhZ5hd]gVV[O?fVRFU=WmCb\.z-vgZ#H%4H{<6|5E6L^ke4caXZI9*7@ba1S#5]eԵktZjB00xG#Ci"2mM!{m @5Lf]׺n7Kv[~oNGi;uILW&+ݢ_V mcӷ_FδhP ^1[͘CEXtԯX{Ĩ +:7K~ua0B!^ xY+Up Xu8!L8Ymzd:C2lm}g뤓ORfE 41[dTڕr+ڿe㙉9p7K^ڽ- hǞxO=9uΨ[?NRE!)*%іM#]:֩ x1Z4Vw?n~Z0:E[Ḯgh%G-ɴcbѬY9I/y3ܳL#X߆SLb]GV7~.Fם8=^abu5wۿJdĤ[< i*^t7uj82,ϱ5ERϙx-meYeX,P%OY34iO3děYh6~:O26ALWÝXX d_|%ڱ iP00KM Yw߾њBz k PI3mѦu ;NJ\שDNb>4@h|j6f%j6cz x+*(.h=T][[YV.;}QDlC3jgjXrG<ߟ_SgJ} FW}7y265}qX_L B!3ܵaEY4{c϶j-6eꙫ֮jʀPIU+3Iɑj33uvr2e(̋QV;YdT^L%K@ͪGmu$mCr(H<Ń .]m wu~Ɓ+NlޓZmuDצc %I5zI'ZǮY㓱5% L=OViG D~gYeM|Y͌t} 7pW6Of8_!2~صx˭FZTf lNbN"lc|iN{}Ir{>N9(k2e܂Wxbz6#>Ӏ>?ܻO4 n#Zų3.WT2H%e~C-j&ccV `R5˾yL‚na2nvbG| P鲗J>R%=5xذ(+[2_M2&5:h?#IJ50u O e2ܫTkkMG> Dq?];8^m͌OLsT)*qP=Okdͦq:Sx~Cf;Ba#0 d we&wqt"ab7U[;u<3*Ʊ2uu3Q|0_%Yp 4fQ~l4_!3{u~ ύ}ۧOйyPGO۪NpO3MΗ:t.6uQ᱿v++?ؔplqʱPƫ>Z7tSE3?{ RS$SW_ݪYxGQ=j/У@ IDAT4S)2.iFʕ}dP N>S:#Fk2hNX߷ޚmY{Sq{62| 3רg')Ӳ'm;V]&~G߳?4i@Up]w% >k;/D} w{V?ӢЍoc7dNʲ&n PYzfX8VOkvB\׹DYjOwm3XiŜd۠j u׹f['|-69,k=J`p (=Ge[%|\xQT+ fz Z<<|g~Ҵ[)ehbԬQ6XB! g02~,ZceO94;^T ^2 8.,X-iGVnA RvduH8}ע9udSg }2Aj܌_Ǟnܹ~1r[nIe(V,cg:eyU~ֹg }[I[ ,[4Ե9$0|(K-^DU2]<5ӠZ6ӢcA}P[?"Ft?4.ڑcƄe>Be&gkM jpb~d */KD$*d^Œi3fΉ㿤AäA! ~iv}]J97܏;WSGԲob[kأm) 7AB *~z?{ܡcdV"ZxQ7ʘsڶ{1n}8fƦ8gx:Ou^b~i$FD,$/)~: 3fJ(ܷ͚6Mɧg#3_}{6Nx#bG2`չ/d%hu4ʗ+˜v|&Mb;7|ޛo@ESblkZK;efnssTmb2wO˄e3ՔRW&v۾>m4mOw/YmF8%ޣ-je}.V?9곞=o,Up'2fRJTij}/w_]d ٢2F װ#kgShjb{g֯ѺMESٔw}E PYt}b:N\v})Zc},5L=y (Y>(ʤs}mݿ9Fc_9?u/ʨ^ژ;\U&g#޹m\+p߀YuÚl)~g[tidxZu /۶}-.f6n_c{U=TRT*' zeTj1`o&דO%87q}˦NfLc4dh0z w d~l_:ʔ)dΜO~A)АW۟^VW[D^}Xf-,xL'PK3WM=oN=𳝐'XH,OýzQeچ8lbN:dfu~(vY9(] =򨣣kK[L~TXR5/)`-_^==Rk*(Dxiu mfqL3ݫ Kz' .ݺ33hos27Kǭ~/v!?\V1^!BL)氦'Ո-{J)SƛZD+ƎF:-UW}}$W^:i։}pMչhxY3Wu-ŧ;}9{[f\pQ318^,J݈Ǟx`s#^5{ÝX#o!IɉȣY$^|qZsyl1>N,bŊ7ʫ w=>EQI)e_ڽ75,ۗ~w⥩4{El25«gԩ_iAO3mTGfQtW:vLk{>󬳢2:gO\ĊQׅ%ew+2-4\f^]hå]GRAYv>Z7h0)n9Y ׬E7MjWf!uVXH,ܞ qλB1pk^ gr{o h7lMmУ9zo_NC* h~ O<)Ƕfnքlg@&ښ4W]y ڠCp6QAF 6_VoC.iZ+"Y(Ԇ~'[22f\$)+M滑j?Ӭy;Ba#0 CFj|5ۃ'7C_f-[f%xJ.`m*r<3Ȗ 90lLutOsk|sZ>U\ٗ8h[ީKWZZO>Mp3y'ʫxNZ ^hыR̼xνsۦJENt緊 ,k3mYYm-u)=ŋ,&-2NK[kZe?Fd"(t(q]9}KK#Lߧéhjz gER]f0)^_qUi)3^dQk8 ߳R~b5рeU{>Kɠ63+1t?v?o`<ý}};rw‰'fݺ_~y& p׵g[SB ~Z&pO]Ɲ&N c+)k/߾A31bϩ(Q`pp 7c)]hsfz/{׆@V 'smZmg%hͼy[ӻOT^k0Dn MLwWNRb-jl?'|$}7is߳c'";Bý`.KQ{CNdVm[5y"CKjTC^^ӛ2.[yf!ÇڶARud̪Sf.M6q ж ='mLc-ZT=Pߠ2u7ж֫ep\YBǠ"u:u%t>50`Yb2 5MWeoO)VÌ<+2|(Δ-yuu2>ljTf|GPNzːǔ:`۹.3N]},z se|Y(LGYfVY2=3LcE,gkעL箯'}U6 -|n `]C]^}_2tLД>})y{%AT23umW X}>}ٺ-\%v3 H</!デ VƹYƻ34 E ڟw}zm/Mǝґd"h1⢾ÅSCDŽ^}8)uGq%uj˴nPm ͋axƩT.~}L-FiNxF?ҽ.4Xgve$|<5vߊصҮ0fI'ŶcFv>ަKԎdifv1lL?;c5bc'M;ΩL2//؜滑)tBpGa؎W|a,.rMSS_з秫?5ǧsքFի׈]gsC-{.g\/rAsbc>rSoguLe;Yl v%{|15.[waҔ)w_ϝT5kX{syݮ3L?KlޖE.11I,$Y1./z֘Ŷ mmm[dkkq[bdnǖ=R.V=1jkc_N9/GBpGaC!Tx .|˿^3}< `2ŸYTW3\U" `#0B4 iS| Vj׮N"|L&-\ԝ>sMyb!;B!gamRhZO jQtW6JE Lַպ]R! w;-,U/G]dXpGaӨL`&!BtB ";Bб"XBpGa`2 0B! wL&b!;B!X+b! @,D! w+cE,b!tB! wL&b!;B!@,s w;Bѱ:VB  XB! wc@,pGa#00! w;+d"XB;Bѱ:VB  XB! wL&b!;B!@,pGa#+cE,b!! wct@,$!0BLB w;B XpG!:V@NJXBb! B!D X XH,b!Ba#00! w;&!BtB ";Bб"XBpGa`2 0B! wL&b!;B!X+b! @,D! w+cE,b!!pd `#0BLB w;Bѱ:VB  XB!:V@NJXBb! 1B! wL&b!;B!N0XH, w;Bѱ:VB  XB! wL&b!;B!@,pGa#+cE,b!! wct@,$!0BLB w;B XpG!:V@NJXBb! B!D X XH,b!Ba#00! w;&!BtB ";Bб"XBpGa`2 0B! g,(7n򙀄bҢ؅JYJݝt(%;gv ~u_ 3{vg!B/D!w p``b`"B!++!!B !B"pw pG!B& BX!X!/D ! /Dx!B/ pw"dB!!B !B"pwV!Vx!B/ Bx!;0B1"dBx!B/$pw pG!B& B:!^ B;0B1 Bx!^ !B/D!w pw"dB!!B^ B^ B B^"Bw pG!B& B!B/D!w p``b`"B!;o0B1 Bx!^ !B/D!w pw"dB!!B^ B^@ B B^"Bw pG!B& Btܷy3;vsP:qm;!^ B^;v!t$ɓB^"@쁌BDJ^$O Bx!^ O;w;Q(@p p8  IDATGw;Q(@p p8 Gw;Q(@p p8 Gw;Q(@p pch6nl\EIw2RasAQ.3yJ.)Vz5kV{w$ \ygɓL-f>އB֤GN.S6w^d;2o6Ku{n,YН!:i$?>jSEުOn~}=fرM ^c*w "N՞tއBmT) ܳ#w pwt:J{O+ꄄW_s⫯mXDW+@LV:FQYjz_nYqY~_ӘM] /U 5kg9r>8h0*^^5_@ ܻ^|ex3~d3n$3n1_'L4M7M[DɒkqXDl/֗\.*% trk>V-Q+Wn@)cL~U'禧; ;B@(Vqj歾Ct5 +iz/v}o Љĝ7͝7zY^33F/5ۊ?o͜ezm{ǃ{K/=ob #D@N}Nrsˎ6D:V\/ɗ?)vo6>!w pwDN);Q!o Ey/d Wb6j(sw3fϱmn-}u6ms\r%6pwϭ[USd?Tpާ_DOZf6*;;"p'pGLTҔ'kIL3eY{[řoy_魫s憛n29sNDQÓVy*/Di?&>#F5="EL~!C͛Ou;"pw pG ͝7Psαҿs Mڬe+ۣ=T1M=/G8tsK/! B&;U9g=J*m'>polIe;"pw pG d:ln}HP]7&9 m*ҤF62ʘ1}Wm'x!:s[ofsSz>yŗ~vig>ĺ!y˦ifɊx!;;"p'pGL( |衘O{acUږeU<0Nlj맄x!;#wwDȄJ ' }2ޯ+V׬^!Qeembaѻߓ=5ᓫW=;^q|Zև# =/1Z(0 >jzS֋;$Csa4suufE y/_'win+x!:u p|͆DR/vRM|y{\:YzQv}-5R>ZL*@NNU"5j-R~ǝR%KױQI.z7X2U_l0>?f'R0y F4k>vI vTɝ'袋Ur綷MKx"^c*ϳt|z~F)Z_?O޼DRwxQ";:.!րG/Ud63eJUt&2cq1 QDsg=GΔUO-#>U/Z̬X?=Y%*xwr9vC/DǺ#㷹qr>d-U= u׬`暘mcs;:y8S)dںcw銕Z5lwR&~ěHA+k)y/eϞ=E@(svSU뾂 AC%JV0xڣ)[ᦛ2fw~VZx!^=M=nٺ Mƌ+!UШmBw=ZW NPW^iSw& fC['TiJfsM9,\4`~+'Vx!:MJs==@Z똏}bV^cz/qԄ=}0wI&aӶo?!-cFtgp /D2p_jB~op$˼koٶ^;vIx-om)\8&?˺x!:.) O.p p;k@t@%g\&K֬&K#嗇BOkֲ0 :Դ̑V*evّ?TʫӘ X踄 5ipԆO9ˆR[e,Yjީn(l$~첄/Dc%/TT *l Kjp$R̙+T0}R]W^}ж__ f6 Bt|>_o-]fza7{p"t%'|no+ {/WO?c'2H/DU>;4\9?Lʥv2]ugTVx!:!u~\?<*&T/ɐ>6d\ M7s[Ԭݰpo%Uq{#pG@(l5cjl ɻtKF >r vb f.Yj( Bt"BwG>K.Ķ9묳"tB7`J*ߟ1S&'o^}c߰.,E%JK)Ǔf_49T93 @ $ +hT04bӨ7\s|0=GJT}/˞>!cƈYtb/D'TмU+ME5Ye{yrmw-ƺ{͵6jl+3fϱ]Qx]g2|;^@L+"b`7D,\d[]=[bb}֙^4]{4-D"k:8eƌTkݶm!UoWoٱü^r׽kҕ`/ pw"dBB5UXeN=ڶإioM]}#G1 /9xȆn;/D'|ۦL/4_|װ8d3ݺs2|mMb~]S3qTcXt|^b?mZu>/ pw"dBJ3jF{Z`)W$ߺOmcR LUwǒM̵+K=O*tnRr@BLcw?Bx!:),^VJZd9_}3ex!;#!B!D@BL!";0B1 Bx!^ B^ B^@!DȄBx!B;#!B!D B B^"Bw pG1"dBx!B;#!B!D@ !DȄ"B!;++!!B !B"pw pG!B& BX!X!/D@ cm>N!B&t =x!8RX18nӮ|v3 VL:Vc;wؽ~Y4E IDATn/oA։^=xDZ 8ُKgI fw pwtDAl tԁ]xeܿ ˗,_aΛoV^KGSڦރ6G p" “Vc7Iyn,# ˵-;v?,4k7nwX~ݧx O,)X}W)yNIS+f )zRr\z2}s[unnx!;0:B5?y߰iwfX.ܭWm$ݸeЩנ4tM5k1gqzcrjױ}_|i; x!^xr:u6|cv`6lk\80o"ӠQcoܺ-eciͷQ&fSfk9yǺMLe'M:b⫯͋*^z|YMӵGO3ob$ g>4g{CvGm+5kM-LMVL[iM~UCfTN@R]!ivSOۃ%K56& Tu *dnf[ڶf,H[$G 6S#g\f7kݺcg ?%/ELi>7a/!m[\/]ヒ_*q&s}r~ Ս} - [RRƛo Fǘ6ڛnmULi~7K*mV[:|`eMb"1C0]w7]ѯ: s~o=;X_ {Zri;WbEz|M/{U^S<,2;#o{ ѧ}l޶oGUi5j>}of"VjSgΌ` _;\S.v^D..p .U? :tb'#S[`Yj4d<]ML~m5ή= ϣi3gy;a mSϿ>_3/7-6/m[EIϩרlw׻֙1{}^훖 EH"B&| yBO~ {rwS^|):n[vByd:w6Z@,Z# կ J͚ev:ؖײ2vx>_ lp<]ijԖ`7;z`d޷ѿ5 1k7n<Ş k/pw''ucE˖y~5tN+&z?7ACߞ}[߉#2ϋ&{0ݝY;q*MM@x`/|>6bhB'1cU]=TBB/ 7ȝ;w̉m,QZIS?zDo>"LL8:iAATf/P}Z|ƌmcĉve51`f̯5-}lּE3gb@^xKj뮳ߡwqN /VN-V=*^x6mݡm3gWy8tefۦNpź*&:p^ 4uL@1wߵǓn?qה3|/+XPĜC18ٵ_[@=yzn={y1|N&~ 'U!H>Z5:AX澲ڊ~Ov{uq髯':dORFMDhJ/Ax8g5c./#xw:?}y7SLvݶ:u[TkaWw p d:*D`ﳁw;~d&Uo4Y~ɊkB-[jŗG^}t5o*@f~Pz1VԪSߞ*UiWmҴi2eMx=MzjիAWQMAHhb(i֢$c_ͷ߶\vY6[9$U&Ę6kA՚~p tc %? kΗ5>+fmN`{]ɟeD-*@*+w'-{OT̞TSW"|wwTpr,[^V'.[o.K*:| MW|UjVz9_zϡ+zZ䢖&jm'VKwm7? ,'ihRg ]y‹v _y:3}W4RfO2v{ykWLjx+tLVJ'9s+xվIc{t%/xbW_ި*~Y?PVeGW :j^6VOsM VW<&嗇}1sgZBz': ;jyISB<ݼv HbעJ(XlU7{9s{L/|Ez hƛ3=g~]:t5}[&jnX}u"ǿz / pӸBtXŦOj|j5ѥʘ[娶w$wTlW4p}ֵ[oE~0w*K_{0C׶0^q׀@Uk?z۶C8c:N赸 'NW.'7w/.­O caFL(ICU]Ү]w((q!IoӒ|N?\{B}ǎo_z~cbEպM̽ŋNen[j Rzoؼ%f7lDW'^}6D/mzru_yWzm!_}r<^K-, 2:邭߈a#Gt2U'@z[+Պ@WR.dz F(D}Op}q՟*^'M9fr;#]ٓWwDW<SCRU_m/ԶHѢYڶz W w+W+.OU%K ѡ+%]ˮx]۝xm[=ߺ#w܅^q^j[\YknV9u6hOpO{R0pxc훞K]LZ .5 )"M3<.  '݉b7WE&Mcze+WE:9^>+}}vklP+to>x!; ]nZHQ{՚ Lpu*2 Ygj33z?h.^_EuUG t\~ k֮Xv-eSn T]t2dWQͷbBml !׮IzڎW^[(EAϝ7m{mu4e*@ j7W{uju>:[ ~Z?PzL!nT8.V -T"Յݫ`Iޮ} ;' ՃVWlוjT&龊/W۰nv[AzoJMXXOj֍8Qw>VaCmU^85a{]W}t՞{_Oܬ\K=nri }]nw W񎻜خ_\/m3?|R5 )SK [N֏ *>ﷳnںݯWD 9r`]4;ުuNPKh hױ_jTe0p/j=i1pW}ιƝgA^S{^17wL믷*\>ډEݕ _m5<*4P]:N ܵkͥ+'?x5qWI}:65UPDk/w'U}:fm=s7aʔ>Iꪫ} K . ѿkaŚ"%O>e_{ow-w۶̞#O-\G,ҕ~CxZ>/[6Q\v;q{ƍmBT7GM$؊I'pj픆*]uNQ>SOu\ثB~ ?bӵSq6O =וB:^.{hBUضn]~=;^}5==ǟHk'(Odhcng}ֶ: BƸ[FյkTo;IV]9Ę/ pVU^j媏|ȯ~ A'ta 7h{FJnӯշmTqAϯ.}U7Pe,u[ yR^=*]ꕙ )Q ׵pRܠUQjUZXm$dB.w ŔP;"<Ʌ\O= *n={/J9QζM{M(O/hߵ=Pť}? Z&O|w ]O>I8L<`OuUy&KUE ]tKU&ޟ/X<~_Ϸѽ*^'M pK81k[9y:N^keQaGGO\t o(wk l뿥~Kwɛ;~O]+>>-^|O+l4ҕwɧ5Wx^c̄ݵF(]ou־c'[;uNB,Łt;܂K7M\IMm|uˈrg8tϓ7]B@~WZHE3dh?; F奕xӯ-ϷgnMrj&1x'BUmڵ % {{ ~)k){ʫeNV5OUZsqp-eZʨb;XZʤ4ppg? ŏ̝7?zf-mEݱo-]kW3*N_mz$Κ;[[(nO DO*vLj T>&MMi&V'w}v~xw7tơ߯MKϤN5Y#7jpp]boӶBPW]uuv2m̙M5AieȪ—~`!hYwF i µ) Xtɪ5jpozqjto z~7HWq] _~ھ ҃B2^'  LuIԀV t!Pvй^2[ֵ.ɞ=9W\;1z)ZԟpGJm;CMLԧVUp8Ữ}V\Ct;Մ"m϶7^zD?Վꫯ[&wּE0|:q=__֫HwcjFSy5;;]dpX=Qb -eJQm;*<ׁG}a^͹S綵J63) ܝ 7 frڏ?f/Qj"i]׾jjEޓ䎻zܽGxp{kqh2s #df V7oGȣ+~(P>9>zRڊitZj,Yޯ_ZNۍ7c ?ko#GUj/=aߓoچ-[M/s%K$޺a9:;SB_!,Jն}kDNhmK0{/ԟg>6RP/u=:Uiץe~{&Wղjm=. ooP/w!B&;E!Ԇ-[CWUHt[U/3ж5+R+)}n Rn&7ÓQK^-T~ |u7gylrL-MϓQnҘ_᏶שKW:Z',_FĤ \Vz>wyɗ?]OoiyT*~.SlŊ* *(tU`B?|/<wgtٲ~ obK}/-]c j "Q(o"&|H"1KSO?h{mdU oy:iޢ,[pPʓ<Ҥ tyr7[x<A'bWVԬU. V4(4s%tZĚ`79rث4n]u>UN@1[~{Gۘ <.賠i ѿ* ^[׷kSɢx yW)X^}kFK#(n=沪(5w?ӭ.Gc/76=6#0 J\w9ؿ @J{j'Qܸ.}VK!Jyk&N U׹˗^ܮ~0(fkԤ+<\P &Mw:ɽh鄁,?, ̷>z{;QCȺILt|_]UUuU`= O&*^HWq+F=IJ>pݟ"tbL}zV"GMwDߢ\z${ yѸqU;M])S& ౣM*00җypǒ uQz^~ytOW褜^L:㮠4_ʵ nǶ3U3Vu<~7UᶎA]wk}c7@+nOiU|蹦G˼޶zƌԽ^JW-Z`o餎.nn۷o6l0M[egp<,j_˺r/ pV}rU$7sZVJi8宮z^49\}^1>ހ N0( #v. ĺI΂%"dCw}w>%jysHn ߿"ҎT>z޺~|/s;rHۢߓhߍ5ad2'b$OFepZ/Of*^x2c3dco:3\5<氓|.[gdWIw: 3:wLjak2XX+G{b''pk9F۴Nkrd#G+ۮrVqj h.ix|sBw``u: '7:@+X! 9T&Js&͈KbYDȄRf{ uRaG?tԼw1#8RW´Gx+ֺ;ζ'c'9O̮ݩw%ޥ 5p%{<%MO鱥{>=x){եbU彤φ?הk&M pV!B&!i:wmU41&dj/^wsyg5˟0m^)/ pw"dB!n!l?=Cwe>oWy:;o^'O-[;"pw pG!B& Q @n2Ӎ[qNF=CsA@BL!"Ro wW;HnVvw pw"dB!6 f(vAuZ[&pw pG!B& $IiCVrxM۶[|6Bw pG!B& Q\4k4m4oʴuZ}oGӽW/넉fͶ_xZ~v?`f̞m.St3󷹶9x!;#!B(EABK38#E*Sշ]w}L Ok_gF Bw pG!B& Q**7-7ŊAs>33}0HM='5>ޫUnorJq=z___>wB !Bh6hݯ9mcgpö)gD B B^ȵEl޵G6|Vm?t(h-ZlwiCuV{Iۮ{L˫^oZض7zg9)X]ۉxmZƽx!;0B1 Bx!^H~[^`UVW^i;jpמeÖ_Ǚ={.{p~ڵ~|P'M6}0׭3WӡSgӦ]{˸vMڹ[wӶCGӣw3oᢘ_:6lbCߺMU웶m/^WA!Cl(}Yqo/c׫mvngf%~?qTۮm~wYmO;++!ⅧA [_>cǦ͜ezᘓ-Z D}}N^k߱ٸu1;_&N2}4|ˬZ[yisͷ_$aRىS+s?mOaN:^ ׉V#w p``b`"B4e l97eʘjuMZWdž)" ~F)jT}V:ڼW߾[o;'Yr n[Vϫ*EV /7l퉂Y Uzl'?^{)XMUuu˞D}9g6… N])g}^P=HN B B^QM+}iCx}re{_G1-}'_]iy7rY06kծc[~˻^t7h~߶]{ߠA~uQ .ݻ[~h6md=W/"ǂvv+ ^K*K>ÀC>5߼ůsBM";0B1 Bx!^x.3\{Ρ#'_խ& VkzU7oҿO][gܹvWylwﻫ2׾*k=>{o-#āz+dw߇}Poyڍ}~lNg/wV!Vx!B/ ܹru:uf~pfU+޴uy'rmi:uC{-lX\l˗/mV5ZսmGk~UW Ó  ?yߧݽX>c{9|Y0y ^ B B^POh2޺`]Wy]pv8poڼFG9sAxtbJ5kd+W;S^_~]ϼkMYSkk\uG},7}eM-͂KMB^ Ӱ]]fO2%Q`-5p䤩Y K=WĤ&pWż}Ͽ_Ik֚ ] W1}>ēfmfǞ| B^ S&p/ {ku&KZNc~k(_[~:gPE˯j{⩧+m讀ZTu&l?-[*Cן3t$ ܷxZx4Yٲf3z4sg/Zlgϑ> z;++!ⅧJ஠yᒥaz<]qÏ?6M빰==ȓ˔/6(` N}^Ç鯯*W+p/]}zs~:Fc*H;ak2_j ˢǎ` RJ~}ȫ_{:uC| B^ S@ ndb'=U CFhoZ0d&5¨" 2B,VӼ5.uxp=}ѽ~)[>;e[[6W_?>+wݻmL7-఍ƚV/ |gw{0w66)=|>/fgkP\rQ;6:jޟ~l׵||ޏc?Ew,oXP@&V$Md!IY( A6V+sW)s\3\i^S1뜌)j|&ްLHXBPZe5vm S_wc˪axnϺ@Y@&V$Md!IY( IBPP$e!I*((IRD$`bEJ,p+&V,$e!((IRD$$d"IYH w w0"ib% IBYHRI+YHRB$d"IYH w w wT2,$I;;X4$e,$) /B_h*]&IENDB`gohugoio-hugo-6abdaca/docs/content/en/showcase/linode/index.md000066400000000000000000000020111507671574500246530ustar00rootroot00000000000000--- title: Linode Docs date: 2018-02-12 description: 'Showcase: "Hugo allows us to build thousands of pages in seconds."' siteURL: https://linode.com/docs/ siteSource: https://github.com/linode/docs --- The documentation team at Linode has been writing guides since 2009, with the goal of helping new and experienced Linux users find the best tools and get the most out of their systems. As our library grew into thousands of guides, we needed a fast static site generator with intuitive templating and the flexibility to extend Markdown without constantly writing HTML and CSS. Hugo solved a lot of our growing pains with features like shortcodes, customizable URLs, LiveReload, and more. We have already brought our site build time down from minutes to just a few seconds, and we are excited to see what future developments in Hugo will bring. Thank you to all the [Hugo contributors](https://github.com/gohugoio/hugo/graphs/contributors) and especially [@bep](https://github.com/bep) for helping us with the adoption of Hugo. gohugoio-hugo-6abdaca/docs/content/en/showcase/overmindstudios/000077500000000000000000000000001507671574500252145ustar00rootroot00000000000000gohugoio-hugo-6abdaca/docs/content/en/showcase/overmindstudios/bio.md000066400000000000000000000002451507671574500263100ustar00rootroot00000000000000**Overmind Studios** is a visual effects studio headquartered in Southern Germany. The site is built by: - [Tobias Kummer](https://www.overmind-studios.de/about/) gohugoio-hugo-6abdaca/docs/content/en/showcase/overmindstudios/featured.png000066400000000000000000053442071507671574500275400ustar00rootroot00000000000000PNG  IHDR LiTXtXML:com.adobe.xmp zTiCCPsRGB IEC61966-2.1(u+DQ?3hbҰ2&6# fF͌{odl%6~- *klYgf9{~9{Ve3 gUQq'b7AVnI4ii OچZR]>2·ˉ<l*a6 %+a-iҩVz=3;#k6,"# A!-;O"x&$Hb%jVEeȹW+ߗ^'y-tC>GW`]͢:]o@냡T! 4Dj=+s|ʚ|A!gdg pHYs+ IDATxMmuZ{c'8AQb,%\'re8 ,Ѡ2(H ҉DhnH "ED (\ű;kFgg\||x}֚sVU5f}_wD_^^^^^^^^^^^凹Ϳ7af~yE~6{el=О4u~՟]~̀1ǜa;^{v^Q r/C1[:vry} uHku_FUp>3 E}bAYt7f9''<>qh߷w$ҙu`GKXH`6w[1,swYv@2n7lXd+a;<0+ytR׺LOu<ъgYd$TqKgwg"zvU&GWtBuӏw⒴͘yJNXFfNV$J6*!6yͬmA67 ?wioOxi1>#i23I[T@թgVn(.4ߑX {`kۻ׳.Ik.e?\ד%$vF|9iQG o3~t6FVy@B^]PY!Jx;Vp˓TS#fvYO:y4PԣGe3A`wLq߶RMvHt ۩}hLt[LW Bg4ڞ`iK{3(mIf08{iEݩ_1~6yb Zѐںco²śPWxcP.Qkl"cxxpXXԑjc /_Ǵgs#/$m(I1 湴M0F/GV&Hl]WvRaJ ;SEfIgR'w ,%OoE/h+qɊb(~7(&0\\Oi,}TcՌiN}"*نQ7x]cj+ioX |ΌIg֜.`-y&Ajڎq nmI+"6ی"HŶ ne0^itU2̀} :FM@" PT8Fq\u<&j>bR'݁oAz-kCw[<5cHԝ*I{ 8pz.usN"z ˪|pcwÐx6W #p-'ghG{_T^TCsʼOnÌ5l1;}ҥ4[?6Nl&ޠOh1OK/Zk="=-]LtUƫ>X`ZH~pp@^@7^#ڄHAcYrg Z'nĉ 656ao(`'N獿ᜲ` VERMLLFV9ź,ss?{q֘;+ջZ<8cMVG3>ӛ ;K%Vה"tKⷠ; 0JI? U9ic,l 7&xa-&+7^-+Pu)H }Z}kʔmē@qoÞξ^i>T_; ]~jz{.$ I;nT@]} sb5m~ys)&K|AV1i÷ߓ4.ܕOW#H苻m>"#PsE׆,˗W礋Ә́}XQzLlz:OTE,yG]{Y1[ζ$&( 0[)۸(~LH$hH[-XYޮN[bY-\Uc0H(^p]&w/oMf87,&r|jwI=qLL@@e;!w ؀kB}9f.$-wd;>R<\k Ij47ԗǁ[ڄ'j+/+5x?ɹ?e9_}$˽|P^^w}˽˽˽˽˽|܇zMgవϮ}=Gierf\jkŦsY32Jj+e>/_'6Qjg>\ʤrݞ5~DZrnߟQVͺŃjo[-W,]וƯ{\PWEY;Oke=dYVLmA47{$ l`\.\$?ΛHLQ~'*3=( u1?]22URXuHY6պ较격zvbNmClS=V\|/ ,iJy ڼTZ#` c7>V*698N[xƓCBmLl][yy8Ff ʸ#WWk: bN BV؆|Y ҕz+I1H^wȨ< ]r|b|Dg4HƊ^xpq% dWK>PV}1llB;?뮙j^Oa`=&|brrXbA,d颩eE/Timq;#r"28 r=, OӉMB68X3[0VS Ti@BSa^IT悈O~4?JݺD7pzaɍ+w_ _eh. 6/St*]Z6]P$ӓQIQ#l[hV5{иدx4\KleC[NK:yX}e̲۰N`0ǾBRs$:_:!dYhǴ/XM ЏTi T3"6[ZX NZ㢋Bo.ZN\2Ls{{?,3ڛ, F;0-j{ r>pɫ7 0/ bbx$N^F?Uo%訣OL2rl1C :d =Nr6!S:> urP؄8o<1%!2:[Y9}2 8U֏\E $҈ᄆVg ,ޔBqr w`'Ժ 5.AT޳>F3JLoESa\{kxRBDW `m|1\Ȁ9UA)4mQI˷LTqCb V06ux!fFJv՗}}$t;CQK %}P65 & mYq@{U [P,Xe)3HFVVNMdy ]Iړ6· XK'<}qTk*0gMvdJm./f$OIj'Pc,%[6"߼ةgncGȤ߬RN"Rt"m{d}x͖XgrjVpb1=5\߽,5Ka=yVx( \Hm6&KXwo (vn;<(C<,j͋+ţ?/6:oqF,[[E%C4;4}eyŧa#װ_Go7Eo犊5A8@F)۝"SUwMnj׽}aWXJ*hd>[tY2IA^U;I|.tnsUo[!e{6z?cUdfl55&|0 |؎gU>rfԂѱ/Qbm7l%' Mu6X?xDggM\+b3WS5:3f+ZcZH7[o52ѱՆ_+kqf_n^GI{&u ޭ~~ {O~/ (y˽˽˽˽˽˽˽˽˽|"O} nN o}BgH&pկke1.NL1cd\.[>+Dkol'-"+=S־<\YuGooڧj]+]7:*5.m:fQ=&+BJ6WWoeNjNk%j+cꧧ ߂G vJ4NF%ݙD:r Y{kk6Ė*뺮תK2cO8!˂sK]ֽ2c/>f_Jš|v͒~; \ݷ}UՊw@f>g_ Y+ؚzhH_̞;j_WYeNJuoZZs&Aa|ߛmH&֓~d>Th.<|]WQ/+dBZ7=̗MƙΧ<[~ORyl5.[UHiɚQ1i7uk Me+%P}ibRAV'뛧nAu=0FTy&CH׭>I Y }{E0\]&>!mX6AUF?_ew;h@,Yw|;-/Tjgz!>X@ E)%S<<\s.8k+ǵ度29G7El,^˫/9'a|z3Z>un'3FyE}{$:p =VJ)yq:Bv#ϭXAt9'<ا^,ܩV 3$N`\s )o,\)s3rb˸p^ p- KgIz3\#tnxN].\/W<>=V1[{ps/ dS0~ R$0ks GaHQN/Lho(^>3fp 3 IUh[+u ljrh`7Km85[з_ 6s2%/s:[o#yh=HԁyݼwlI[B^e&rʰ^`k 28*"n.o-XOP& UGlO @d\d@EjH >iQbBAndg-9>mϐ/@3m ŝ{'u7k̳!rmeo$Lzʧ=kҤFk8rwag{$o-Et'h MItEs!!&5ї𶍷0M(r~VtBz\m9ml_S^j¾N'cҭ+;jŽ8$Ą);;?_h/W]&;P\X4b}R$ .+ZO(ANۙR5)PM$zYkzhbl%0-%}RMH[ed5dOd,I!(EzU=˃Kجp^WY 1(ӭ*0Q bҏ/w(bPM2Qxm[WI*p۝:5`}l?4FP&k-9 ;L>n3w%yʮ`Ө x,9/ayo.Rӄ>x=yҌO~Izd[cԡ˦XPHwf 0U!&qB@˱*`OkZd##d쀫Щ6OT,,n^E(Vk&2"NjȌϸۇcUN_.U\ϯI*Cdɭʿ6G͐b>b}lms0DL_AKq<o{] fU='SU[؃%0V Cس[pфct-k-Y%&MmdA ?Qww<4͑Z MĺG>Щ<^<-:P<%ĜU[z&݊x^b0{6{je bRǭeky^= P3Hns<u $3jNI9f'A =ȌZq/0K>T`AОy]3}`culsv9fܔWN{}qK_SE&$ |ø\WR$+F9Mv:x55`R$mn؂PjwMsz Ȥ/3=` ;)uqtG}S[ A&P*"$XV,1tyM$:t()T3t؎)ST_NA]#q2k>>"Ri,_}: ljog>ج ӄCh :ıyכ?xST/-0bX|1=@(y|s8+b}F@&?.}5o}A}xzz\Ӏ-{y:𽼯>sWɹ{{{{{OB]GGG=~/r/є:*?/|/>m5[.p寲t%+KeTgU1'. H& S{Ǫfs{Pa,oz}E'U!3ø<`\bgk=뻿xn௚UYF\2`˪QOÍPeu)\ =׹j?Mz^J$WM1ׯ^5H,`NWCV=oNbvJÌ{ QB w;o}7۫V 9WmX 3F@z\m$&inDH/3(lO쇧vBSOv@>bg?#+3ń^1eɌKjvҖG͗U\YYI7k_ls;땹|"3 ̲5GEc6MoClw<3;5l+PPוFE`(`;tSӌ|٫7@843 [N u~5foT-p}TWaƿ— ^ N|94FggjC hkW0CfA->'ɟ3y}G=w+R1Ϲ=ϴ@n}\Y`szc#b rnūppßUcxo뚹.cAXXf#Lzty{OU7ڝ0bH[1 ajIEA֯x*N 6q>k1?% Oxm`d45\wx]񯽱f%ʺnDo+4[oTÑ;B֘VJE3d/c:lmުh%yzґ:>=/Ug*>"˰;4#3~yM&(==Q%(dS7Է*%_mX{qVL}xxz<&1粧 ɵ7t`İus>Ş>'#qřpc[9֛&7㬈<%?tv-mpn,{[ӭLR +`c1xˆȅOĽcX[|Q@K쫎{gG^g#<\^. ׇOVX?~-m|rh^ oOW@ ,K4hO{N|8F02(]?x뭷|/^g~=3ׯ+zַ?.^z x9KjsK@?rfPv_Gpvg*ջByTQX0W*'; L{ (`M8 LՠFlܟ fgvS8] 9A:B€wGK\A)XWcSƑh}i}N1TŕjARʯǶ kS՛8SIIߕԠYM*:Qm48(֐] ?V~QғI2dm_6̺iS@ɲed;wZ [zm}_e}}@$]ef3^{6T/'\W7ï>=O b QґM^KA @!*0Wϑ|~grʉU]ulw&+nѳT$؝yż1m1- i_/Rʇ P*f4&U?7&b.>}}ސ^ɣdR}E1 VwʇDHlK7EI62u^0W^~[4ӶtOxyGolպnշJƉVNKs"5.hM%1a`eQOjlq\J_|i BUI]N+$%#a2}E.yOkKK}\-z*N;t-,qu:l~A&KoZeO(/z8_6Uêߕ ?=_ev]Ƣ?4TԿ;GmUo4G;/\Pߜ}C6s`|w,Ey<-4%wV: 2pj\(5 +t}!J7q?g /ggSi]frM*lzle6pdk9@(^{"4,O iʬ襾 ^6\Q X$-V%qzi `-_f -':*9𡮠&X>)C;ξxv8JG$ip:,0} Sa4}'>=㹕Q&lЛ|#qOV)lvcGSx,T,'83z3=QAs&W ?rIյ,\NDo@iu{IglV<ȄOzm~ #8fnXQ]ǥ/ŋOO e7IVm[?Fy]$|C[O|-Y~g]&P4Ol!ˬqYKsQK[)ٺ/_ѻh6~A #3\6R\7vVyc.}a =7 7\Xͩ>jyn1"2\MW|Vc%ȁT #ޥo@ʨl 'O#[#6?%?{Ll9'<8a/\sۿr9}O\e/~ +_*ǟ?+8f0Opm n~scvO??'qs?{c>=b>=g$&b}\|tG˽˽˽|}OQǏ{{{L{4~ HT \w-7.~ߠ,??.|p6Jf+佺+9wȕ{_M,V+ = +@\. ?W_׾5;ɟIxO9ի6Ήpqyx+3ֽ?^/W|OO_?#o8~fz3<ÍR 0}$,*{3+lJ}v[W-hxl#WeUq~LC[.K_ׯ1s%ޅ^![\-U_=̰`r]i Ҿx^a.{֎N 5M/r+scOAݿFj634KfvUQ#')zp]W[&.ғT{SQw_g";=C'+AۑH}d1hv PYO{@X%5v2[Lk&%QEطr4Q]\t--aAK_-e(eES5⌃{#lBwז[%HJIˌ`J r4l芣[&+l@`= d7$#3j#<#V辽ٸL2>z'4]Ήz;C$nLoG~*ɞh:Ά*O_`Sԇ76}rղ|J^n{3˸rYoGOGT3|<C ')_Pz龪 0-ϓUv_1VFqf9&ڒz9-P֬ˢeW;j<ɽ!<>W}Sa3^VeN5MtɝهĶ=oVT7@douTrb肳l^ ʵxQqH1#0 8GuFJ i[31ƹ+m%f75JOP@.},\7afDz*[O81͝1xHSxbK)zWJ>nz|$}m/1LRGh1$Z~ CJ7cc%SCoVgI %:H[[|Kջ*i(])U.k->vJ '_赈]8Ǧ/$Mn SN?&8kd^=3km#uuyfěe7J[(~9vn+Am!E.1sQL%sg:~X -[{?D7v ).<[xS̐<\b.na]<=>.z⭷իٟ1{ӆvk·D,:1%]TyOn6, g>~o_ ~x={i`"]ٵ?Cf}0y;7_ Ϳ77??y`ӧ,N(`e!oʫ&@v2E?b슰ι# ẺN,v/4H@-İt'{:%k,Ek5a3לڮXx@5 yNfp_9km:z xtՀNT ],@n5ˊS''uR| :91[cn_AZDɪVx *2(hhj-KK4wZQȎyn\:Wlk }^:j'?o.'2[')o8-}:a٦4'E|dK_c-4@E>?B:X;cڤN7>l4{z-K 'cco'`]m%4˜|FmX>_}oOX3 E'JߴxV-pg_ϑw)eb[X:ᜰ֘:][ 1R[X5᳣欅 $tv0} jA,> Υ%Jώ? YS iNƗ. ФH&r;>hgTڇG'ӍAX/17QLg ֊Zy ez0|v1,W;}_Ms,t!1sXrsZ#'8+૨mk&=HūOеXUii*.e~o|׾ϼOOs˗\.xY.]Ff8]MJF#AxXmf%WNǁϟ~;ݿo~W_ OD*ΌQd"Zn1k\εbմF}-ˬNeO8%<jXB Zԁn:w[[%0Zz .1K6qVP9r Mpx2[o__WU|LJC* dm5g 쫍k w+r8pG f^T/~w;??Ⱦ1>uθ;xz^NEIV{,HyK%r/QJ["r/>~cz}[{Ӗ˽|̆A15=t)Uֳ]x"n~yS4}/| ?6۹?ZW4_R2"Z:zre1{`u\e~u{~\2z _~W~7}/_qkku ÊA2hd8KK9qxnrCR+Sd_?o o6o˗xj':׵s<ϟ?rJ3S-WHNYT\Kɕu= \mI_]g2C֣Y+4lO3Qe1/_udJ춚<,K5Y\lcrIvVEv%'m{YG^ VQ=av(rf12J~y#bgv%*Rn'?k]Je4wC+*i1?Wl7>I*C鴇ofGɣή{y`$8e %B$I>8)hN"Њ;ݻ~gRp’J\2F=28<}%гoepLL^mO`oĘ OBP0JJ3VVʼxNqU$4].,Ӭoft(FY%ƅ+e.خW<psTZٜŊ㒆Pr^yf_$K. щ%lҦ qIj m_קLƸd\ۢj<gY q7:Z"N,^sH[,/^^Ql2¶?B˵}BΙa%oNK'cF^T&o k۞Y1_K/:AsMk˳6b-+_L?Z12wQ= $2&.FNcjeӊұX* E/>iRGiM_9>h WFΟEz. Vxx7&rri ͺ3vq\)X{g%gT 6urV?nƌi#V4H[Nf.i{Qx#2uOܟZȸ#D>y2c;\VnjxnF0uϛ&-qVjZDGn1ClC)ڑcyul 7؅oޕv/)K9eJܝ=}B4<0`p.5>MKFK!"isJ1T,}g|p/ Am̐1#~Q_3<{f<_hxs[>\eAKulr}9'ő!\FA 4V[T8[4D$#>8>_:?G/wgϞ _ri H&qp?^7` p?c5-|_?'_W[[O];o4n9t=?`e50@: 3iOV{3ϑc"m̧pFjoPpJ J _7jIfOah^X-pEEP_ԀP s2H."Ejb\f@kg$6u+NkX5WǬW3Y/2>w h ڠ"hKz]ٝlU?eX8>ʷS@4'gR'8pH_rQH6'@nثDڃ\>(r+:] ]*ن|3 {I;B[]bR/>t]+_%Jy՘nR3 N͠G@L>>iXb3*jáM;@tplF\7{k]kbfb sN{qP reɰZ_k@:*o@"'?8r[Pˑ>25eL ;j{wɽ;>IZ&Yrn"g`sCpS4 }ON^˝ӄ: 1Yj|iIl#1AU[H,$ӑ4 Ɣ|Ǹh*r xjpz;k[?х4yd&ܨ>e7P>G' m~@ٱC/6nH)|^6zߥMH{P[܍x./FXM^)Ub``oLMUqڵ URؓΖ~znl~Vą)łF#[kb{u؂ŀK.,3˼{ γ>I(L]4n0eOHIZbd eM~!aFݯqk]EA^Pkf+\׸ I kmF&VNpjK/S-`;p{fWfC}xlYDδy/uw1n!;bM~{ny.tE-m wHݠ  KP3_Q﫻j I4 gSB ˿˸^x||̕&0x"Vr鞇*\ w,zE6޾ sV]_@fֵ8׿77o~Mԟ^>ŧG8@7 ԡt$q_L T:אfkT3'J҉4nqtUWjD*X]=\ _f.z?f Z:ҵ UI`o#8rfpL?)YJ2w+5IzSl|J[e-)we4QP f&Ţ(v*f8XSvlglG'pKw+ؤua˕i[!KdT5\s_9`]rjl 7  , S5h0A3f{V.xsYV4 K¢_oYG:T}-n4e_npptFjӄ{6tz ['N_ |Rsx5lx V~ E^x|Ѿ!V4λŁ?}Al- ۯ ?LUs/r/D;{[nM}\8w/r/?3Qޏ-{W߻wؖjUp]ti8._s?Uw)7pBh+|5w\DŽY[dup ]U fVb V$=_Ưw={3kM{va2#z$ՊwwIv3'|sï~?Nw6p<[o^*2Rc%Y2{eTպ@0l;jIfL ^Fm"nr[4XJ8 Wk53H/36GZI"Bl>\q>dVZmW[S ˗P:ثM^`rU.>q#;)%oy?h˨x.J7}%^.]~ ޾pNjכ2 Sd(UA]󲙲EǬ"B7}+(Qw8Iy]' @Zۥ##ln}#2(&[-f"]댍x פ.2tUMceucaH,{#eHqrlrؖZ[}x8oQn\g\/n b[>Uv q^җœwr*qW_A9Rrԃ|d֐ /_ҳCH`?)}Kݟ3!0^կQlWΆ%rAyUv(y'_"eXO4֩K1u7(T9'%飝,yXc0II󠞞0#{Ye Sm;5C~P_ru 4&T 6S>,QpCX'ъUV i a#[6-j)loZf~PuxJP.}޳thU>GU,J@mJuP㕤CU]PC}8[^hʤ [2~FtWuקsg 4.hUwOJ{ڨ3.z71CL}9 WLm.{;ytjaHm'"1<HbcTy??&UGDfQєY8g yum+ȱ6a]㊇klgR1ux q`>x|zqT7V#2Go9x9={}Xo騳26JX{O/ B#e3\uN;1q#j32{1rmaǘk~u 5<zo>cw,1}p_[0\/׌M2ׇ_W򗿌|;xa {;r['{҃,ʅ90d;A4zPz˗/ q\O?ŷ?7?H)CHĞeXU3@pd&y7k@o{@Ug. Q=<ʀ'3WsT>1\XINMeȁjE0[/uh^Wژ%sXngR&tu#'ڀ5@6>Se2aUGӋ*FYh{5g0=P_R\t捴cPf0 ]/wte tR'jg*;ZN{C8vOIga;$ O c/9 g@I/Ӳ5(k&HƘ P6sQ5"1 Y G}"j\P>jj)__$ˀ! k!5zd!SҘxd Uԡ6UC٥Z@~i`.P$N&;coYXNYMόk^GCrV'H=CM:]h?Ƨ: uL=\R;R Ƕ#^GwyJW e}7R;14]M~h:PXOm<=ՌWŌx2i_"~>=6ph<X$]+hs+S/d^҉$%T!m/ /*R 䉎drاwꁄ'2Ա\Tɸ鞽(f"UDTwӴ37K7蓏[!ew9y"J^R`*UN,V'Sj'jVLh/i,% QW?tL?چ{U$,skDy ru8<|o'o;?q@$xjcl{d4T+ꪕrb("@{w:H.h'7E^@O{V` 2 P͎$q.q̪jDj)\py "FhC-FZI $h^b8C5̌p?6 ̎GDfOwWsdWFx7;v9Sa߫$ Ҁ@v3ޗ ) wev{. p~ XI 6Տx6!&3؛YutGM0J9:m_ '^",C5T@ < *~<:sWPlqe8ֽ 6'k69 G&{Zp' e:aYBVh!-^ h 2#p$9%8R ((vHB σH`'Ec^`*[:ʔ(y%7,&X dl.rUڪ $sˈTcF%Q9+~ A@xf=mK(?Rf]vaTh@ሷyTٯ9ᄡq$:"ldP/)E+LMEpJ A+,FxvN¡w;MfHrp*IԩuVmqT? uC-KuBNAA7%E'+v:\ʘ]Je#gr>f`bߌ2x/S_OlpV5aĀ&đ8ȏJ#[I$(kkʙx`qb#)R wV9WήbV>P,Eʸrq+7xˤXwBUg Eѹ%8DLߝu`nf4VH㮕`|ׇ%C#*~7x3BKxCcGa;n#S R7G N3~kߗoދaXO8r{*z~q/gc_k[*|HҜ.|藜q{sps/^og$wxY];n|z5on^X%p.\VxbUlsqiW53W#eMWl`fhׯ?}c@|x<&/;/_bEpk puxo`S/jY1@{'_uΗiizPOlύ+gqi(s5QWju_'$*$W#YR>dȌȲ2Av uw8-ZhM7 r3#/:%j~ͻZ[sHagr~Atҁ_>JZn$U}ancO1O'+g@x,j/Cەra.v F+y.%Bd|̜r&3B)"^2["?3 3ǔFg &̓&1n仲E&Ow,.])#)d&bC{bg4p _‰RxT!* 8'.*G`GM"3IVuYeGcV9:* 19; 9Vʟc6fW, %mYLDb1и,@@LUn]#+D-Iݕ&bUˀц ɗ6om wdk R^ntl+%f,=N謚Ȳ=꼟a5ܚ bs`y3>ħ^T |xҦ#;p뼿<$uaLvAU&Wz>٩6R:QV}N`wJWRՑ7sޤEepHQ[}meVέ38*RѳUV9 v"P"ڳ NW~ xЖ?'j+&,މҼ \_oτUڟ?(" _YSm}[LN=L<]6|x;ödxH:ҟӒu;HDAi n~_|Z .e%$Mu]pǣw9]={u㧀W+L\Oo|q&f)O`,)X%&JgYq+ĠPLm<ük#뜾e#T5|y·` HB&ޱ.+u Zim1Vp8p8X}6Ӛ6S#i"v>4M2L )$<צ 떹!S譵c;Q$.址3@кzPҕzHKJKts1F}l?l @N Fh9y>Ǿiư\x`___JF%?t5솘DYԽ&↕l" 1lac-8ʛ}ʤ:&;z7XI t46nevr8+SQǝQspag$TG0g}U_l<=>"B MGK+W|N_Ukhϫ7bu_lz6snG^+x!N2"ʶ AF4' V:)8&{ʡk-mmBGV-ɃaU}, /H-ewˆ>L1.*LqYC%Gd7ɪiSdi\T2Ȫۓ+'~NuasFk[}qf"'FD W*M4u ="U@Eᣡ14=gm<\k?:}t|uT'ݔ{Գ=Uw(@F/I;aQfl,'b+(?4Ϩ v[8QE"`{2mhcX+=`pASxGJv%G*.w =i9!}uڀʂuVvm P/%vZc}Vkq9O-˧p g%zLo2yqi~͆VYLh[Tflp!H#"h늵QQӡٶN9w>F~o`+[_}'xh ?lL`nVqm9 {+oC3ev /O>KY=i;̀D%93ScUi*UpRyƉ,D=rdjf-ݳ@[Jl'72ƹT ~tE:ȑhGŕИsW~[̳r7 2D/jħfNc(4mU?.P hu%:q1X%#[ӭ4!*Li?u$_o +ÕsFE1J!Ƴ9SuHCWdj 4}??Slh_9qW-qnd'4&pPRNW#R0pP:|i< / +; 8j.#~REo_Oy,[/gXYנ{T<# ХdCa T'#>'CF5#Чp"iO۠BŇ/JEd?3cCz:̴(@*QPAJHdž@: G5i=׍|Ʉr}C(|gmP ekE-eeCM/Zx%i#ǥl3E8,%VXa~"KGj}l Rf` !iHĤStMн8f#l :;~ Zí MFہ"4271ZyFhC?=n_MGvT4ܫ-2/ی.R7!3sH9}Ϣ{- s!z\@Z+聽>@1aJk;fL JAu3d)BHSma&>VPd_ym')68@-^ǫz2RiDw9rF񱗴FHA6P V :1K|EǍx [C|^\+rU]~<19{eBM-Qh,R%zZp-=Kg'E& Km*Y2ս6 3֬p*W!gDf%Z@'V4ռ( Ck;ئᘯFhҽbܝ~S}pӭ6 P,ظu#1)5LR_iKB8;Ok!VX}OĺDH?_gс{ O>sUU><ڎCD1OoWuڷCSǥ*zjA]@я~sˇ{vxۆ{zgH٧J,?50Qpߞw*=:Ϝjl?ކg]7-swq LT?2u 7.S x{O5(pbcnUI[4Ǯ'U x|MXO(dxܻOvp9Crק>?va@qnmܐGYWl}8aʕ 3awn=|1O@ Y䛙ж2b]W~9jnnn{{} ɡ^k3˥";3SZkQ'k_~2\ϱ#ү" ~v$Wsq";jf-0m.1N]@ H^5})-R͟ۼjjˊ;x< u٢mi*Wv,z $m5! Ӽn<.\M[L%(2pcpbf*3붨 &FkRs~ mZպ IDATr^-"gk0{bjz_qǺ~{B.M҆ߏlZ\D'qIV9Nu7wjS^WFğ37*6;=y{A;G:,ϔfp>3tf(e C<ߋϰ}c219Nrp gڧ^&] aK.c#zaK|KD2CеMx&Skͪ~9Bzef¤{X6uBrotG*7v{/3+t%^i2Ұ HcZ q|ka#Pԉ4,c0غ$GrpmӍ%٢ >23g+Un{`!뒏@ %.&3&}x0g6YӼVltBHr7KFÚفeˑE_֢L3-S7~/35Iu]q<ǂyօ!] 0ƶ㳍g#&"YiI{p,vGeLRu:v+i@9ޅ*4f -^nxh?D^̌W+q$=Qw3*0'i>X$ǖi]{Pe —q6Y6S.l ՒuѼsO=>@qW鞺vk3ۯC@\>ݤxkש us 1 n yjοȞS60O~տR6jCi 27|9{r; C5&OqNۓ0 XFH94B )KGXm}ڵHxh3*UGDd+ ogy{LW;py{i9&HFlR Nw/ 7WTeu~4 nsJI ^Sn*IȸN,3 VXgu/bAY!9Pa]/z[YUkԦ'V 8|Z޼a6ny9x~_.FWyn:M s,PXb 0O(besBq 99l6ڈVLa\քcD_]lWձcNJeY[4RiCM7 $f/EUS8iQ$*:`W0sL\1k6st'"z=lwMӄu]0}ޱB`o͞3SmuB |8W~WwBS1`g ]9֌g07f|(q.q.Fchc$'U1"8DUg5 }x+D(/:=+瓯1OQqļ:)ycAڝ_6H]27ʻ^iAü2˱"=6F_@B aoоC],YKڦtEq(VwC8MIV̠QO}Ly#r(ePGJXUu$'aB3#n,~SQ$ 8J T\Z`i2dxRf7r(覾vm5S .">𝍇s3g, aCٰ5_BIfr.N0f{+3@^ʖ+]^ZM.I['h56ðxYGQT;Amo:Y*z#E H1:d;OT[8jřs$!@e7@{EΪ |@ʑaY>o7uG7Q^h|Te!7qu@eMZeKlb, m"\"yY$Gx>wӲ {ˠiӻLsTk<"i/c7AsRhʟ FS8+@ype}Tu o H (چ2#]^DžM/곪оzq@o)kX9޶![vbфuy֋‘1D!}m>OƹbsG\ʡZ;B?,0bdGWo62^h: "^k,|+wyӾ6SK∹`Ƴ2&i}MSL񍚴=8^a?A /k"ZC~ρ1b@e;Cy&)*!?Gyw?XKB>{8[r10]|[==$x\U1b9(ږyHٖyk(ST1Mɽ~}͗"خX.8̽ς[_a ocd ZݗqO.S񶥬wvеu|]Cߢ1 >.ߓR8DΏ]Mʹ{箋=0H4v;um= {q|,Z~uo>rLJ>o9!x@剏s|d.cz s{{A*Ɨ; .ᣌC/).7ѷǟH)X:׻[lyTw4;/sm Z6O^ɣy-;g'OϽ/mޗav>9|>cJo9w{>(ְYȹ8mGmKjSy.lξcSQ֘0T1ܟ=*j\1xK>7lQf)^S,voMSlO4fXeȉۭܚwr;ɽw#]U{=,5I ˗/ӗе˗hӄgϟ㗾Qˑos)˽Λ/^=^"VGU6a 0saM6"yq;KY D;\HcVl Wo3<[+WZ'9@93$ ER@b\mX^}$=Ym cʳQos_agڎ"x ,V2 8p > nSّmQ9_ΝWpaIf'LXh*;f5OĊuf]Ju0jo a?ļ7T"q9/Ȓ}_5E6U^>ƌ~J.JR~صBexT\wQ3Lz/wFIu!L2R݂''W+u%w!Lpcjk9ȮtDZn !-S&{W+ =Qk`{ӧ1y5z ~&3Lr'$ C9H^I䁳FFG/tm5>Hfv؞KYd=wtybswLOA^5kNX9rKcx2+f眰 "|@sk4`bqzhS/X1|ij_kڈr[/hdbvni <1鉴12qE}G|3HZS'ݑ=QG څyej<em7 ʜǴ{Ü_VW jk~ 5O+<w󒈽wzĩgΡ}eYl ̓_ŒL4j vvgW$LLyoYM3i~ea˂pwʼn=ec)褵2\zS+\fH@`eۥ 3(`ӜMf'*1t2Ƥ;.|v=<y[JyUo kz WhsG+|N{l%..CZ NGDn o$>ئ^DX0ب]^-"]33ʫ. }-tSIbPV.?|xe #= Rȅn77$nlK5Tm(;bڏv貕G_gQ쩢A1QE,]aggDT< e'-ezRTK\tH7qa\ VzW9A[X SD\Q:d["-0C`sĪs/ʽnUW3vFХ4C|2Cp .]zFLgrw?{msdrlN %=-䓓R7iق@7<5kϬ?iQ;v6l RiCIe(!DBތil˜Uf׬E Tf0>G jH.fsjcƢ&ff)z{[f)çW%X. (: `$#РI^U@s{o+.nJ!Psb7DK-qf sP!zBVWHsRT />v\fX8>e?~dЙjp%.%g ^7S?Y )FĎjN.0RaO[az."51cL|C=NQLs܅9'| e6w) 6voe"; EDnUYu"vaNѡ !OqᒔQ.Ew-ƚ @ziE0mZ* 7+8ܡRI(|)v"O"xwVqSY (Gbzۀn=~`|I! $T"q FOI"r[J⇂AE*@Qbp)X/EE6FJc3(-.Pn<ƅ0gvWE,Wlwx\{hnduk^ǿwg)sgp09ۉ>6 hZfr'} _` {k{ 61!,DWCeϻ?ʽ[i5=NY4a-x\p8;5;cP{Jll#vʫ^}\cG}F_eo $V6Zsp DS=d_ia;g>-~j%10ewf]=+i3faSbUmi5 ++SV* zgfby_W|Vo eS6!+GYj;Oo|K~׷]6>?ߠ_'ί}{ zk 777O!^[6ﰻ5y& (Yu-3dޝ|g0Dv֨=La۠ZF-󾿬0&ڸz֤Uf!213 *_n폠ݎk,3cxԢv ^1Fy,^F˺b9{֮նYL}>A'685Ge Ŏᘢ?Ґ5h1^eQG兺HE9*mp!? Uayc?ie koKyqPwUDhstRA:^W:j45jYTD[vG(%X]csJ(-G:Q4 j͔/,C gtRagCt}jY{C(_Kjn5;4|twJ8M- qBL&Le=~뷹4M>*0@h8Ae0z ]ԌjB *gڱ:ST 1V :Ta\$ .B2K=3¼]O1I-v^|#u?_#˂rqSk;\ӟ7qۏ6N> /_,!s}}^˂JéJ i{s^ [iBZU޵M/FQ`CWݐ%B )Fa`S5*0"adp\1ICs20< 2g-JA1T2v3=% r wpc$.0g={kn0pq||6T7?i-Jg-gert}Y[?arRHǥΏv6XY S2"'Ern>Vu1v 5 |ZJ#=ZڃM6էq|(s#+&h𐯅䑂/Mf]5w@+*fX&C͒#'?a?A^8OP{ZfC(-3{iΌ]E_]1TK<\ =TJ)4lBG,  Qd*>/`@ ?$I vAF`YZO~2"u>=#'ďO"i+6Sk^*8t`Y,^#HYPf8:518 ny,rSAnub5N.m j }Yep@p}u p1,K>ӻQJᆐ:>m[K.C[Kf,(?˙h:dYKL H:aj `uNJ Hav)\u[mz ,BM' JsRjW21#@Sy  K+);p @jDP"[v)oZp.]lޥr!'yiJ:Ҧd A%I(p(圳=%}ؔD]b~9u. 4Rb9H!gŁFsfX3cw-(z@L>'H CqWL ԓa hq|p 'A&22H}Qb85yE`V>go^W,C]x6eơB좬_ }2u@br5Rqll;΃<@O52f.<ëW2 #[f.ڌi,xk>jHSU~ ߸&Z>NOCdÌe8yא|Y-8Dʅ52 3iv9;MnPEڀ*!+y햯B{!#{J>^ʚzj~˟D*mĒ$@vSQ/ck!tEge\#ձ{[{6,ϦE>ӞA QRHG:B9Eg^}%`= g$m8bL0Abˈ*lͼʙp!oϴ"lQm2Ye(C9#I*lV'9sq-brU\l4 b1ǁ ~~}iiu"\uk R[l_xR?ԋ|SbڞŻif-~*t0k*\4e3q4:w܁IZ@}U~/ h$& :OxoBQrG$P`Vx@4Zl橄LR_=4UW *v}U 8C|\dM8u"ɺ{oN_k)vO|okc92mY3ߵ[{ըo+׫Nʝ}"@yJ3|? chO(֎ :SKMqv&X Su`: }@Sع=lݺ@|9ݓ8&a7VD9ŭ ǿdwh`?s/,JS3ܗK_CvrO˗uCzS U9"]Wuhq]}ׯ|Sp{ yp@5/Cz/ N|2\wQp}?/9mJK%I "^8#m.[ܽڼ{n.^iuiO3t!>:y3ێ:jyf[(æK5q xӱu:bOm`}OĎձ <$r@g^Sx\'π"H]h{f\gafPLsal_>͕%sg\Ĉ3Hvx/10'{;t/ȫ7 ?j'6>3cxӹ뜌\zw[6qۗ4}xLҀ?gr3;[&|}(D}z?M%K\|z3vzjKg K(JD/lrDpO.Dqw1kz¨N!PXzBD#e!W#~v!9J?lBy*./&U38^}7uqqwwwYJOm[Czю&򝥸{_V+/?C~59F}pF񷍭ʂG_pJv>҇r:[cCyɗY3"/e3&K?&y}&vwJ[ʕQS&5 #v`6wW~ *dDb+Ax0NrzN =^Y}nRhp^DVz B›:k'cɁ(S4Kݒr>)5ț2ttթ"\^1?(h|-Ѷ]p٢.=.4r1&ub,XKMgIM5c.Y` h6SXW/q<<@j}0Ou<{~ivpw w*Wqu}6g cžc)B8n:}޴4}pW^~=6SBRA|/}leQ =؂JXzg3>l >Wq}}=k} MZ_6ԅQ Uq'[&XRGNyI :s A#n< % 'BQJ鈂ǚ N$6i&%puG|s;k|ߨwJ6}pl,i &`~5~ @ث*qA<70wy86<פY X#KC`a(BC?Fp IDAT HۏVj%z c a,M }Ԍ@,୥V [ئIT謹 _u,pr.kNVZ弄:+-) vK|RFDJ~NDjqSrF'l_sF`/:KG@ eBBh8uDYNo赠rnC`C7" +]3 B'&vܠ ˔9XIqӕ%0T;N9:Nőr$zIKG ۃ yt^Z@AؑۗI?)({, mB/yd8`GNr^"yYA)B  Ҧ]|EK5G& Yr]`CA}2k,4Om4ѫМr3SIxm3"R͔!C<pFhŁBo"VjS &E*7AYu_ߢJk+Eá@CZ/U@te.RT8QГq/4~'&UC_;+smBp2]u YQC˒2īF?x8E cy=qJ@>*254R~us¸qEbO`5O=wdp6R_`">6G (eΛ pL;Sj|C|*!e#\i %r*',\ l|ICbGJF[*p~YCeL,JOBƒ4@: M\E7gʾp/ɒT=)isaP})Titv Y}\jeXraU8>,k1 KaG8f!ý'QKD<hT)wPx50P#[CBb4|gF,8y2A]]8Xv)K?Ϻ=WvmE9>xNezDЕ8sa;qQZL4ubm^D_$[%totqR#{EGaל}Ӎ|I^I`SEd%0:Ⓞwy;TPsS-P@ҭV,9d7OKCצ{cP|`T40fО*LԚ@W-FɾJ#l0}W_W,ˊ/Baj+l 7̀V\q+/ӌW?Uw;GHk;<{ /?Ϟ=uwxG8.cQ^&;\2GUV/Jn .ˊW^O> e_"ѽ׺,00)@^׽]P=8aܯ}s! K²҈c ||<&+OB.(d9  fPM\2kd$h*-Z5ڴ h֌D" ŕfE5# H3m2!̏i~{Ozb5"U%POVL +V˜r@@ž3IdJLg5yk\,Bo;] L 7o2Uj@ Zfs4ʭƱ14Y< ; BJ0!I 5c28t821*K" $}2|*n 'pin&"pyp~tB̉xD-Pޭe=FȐ% NNZHɬd]-rޓg03"?;6qE9y1Bg-j lwt#tmC![Hv ;MnL1Hfܩb ΚK@'sSNKAҤ-4>)&#8_ѐ Gxj ߺiJh>(f'cF: !ӹ~iLzHgr*q1MkfN9 d,ܽ 4 h8Z]9 },::C1!OsAuR[G? U{8h/EMev `kE֠#Vf|P{bRPotLeriΫ;w*8ބg0PxqąՍSK{bY(n3* "lݰFЍ$}&cu仹V20D; z$p$V|o,.uV*Y5QfTq2~WM{eBezP"~6](26$邴ڿxH}1e3w?gu YI)Y0H~q1 mk3d>/fUF kn5qm%ј0WZv(bYg˲b],Bw$(LT}Wk{tؗ=v~@޻5ۖ%a_־jZƢ!7T&DGyڍhvy"WKʔs,ɵB`uN,ͪ+qC62Z߭!7mSeT0hNo)L8>WWcח轻'u%#?Ym_~__~__qR}{vv zgFyMTTz %f~[‡~xo]lX8pi̳U~us_>7}٭'je4t"Gک|n,C5ٰxM}Bl0A턟"q]p^g< @~;7ig2Ou"g(~iBωO ZB{|Oޏq?}~9Ls_}-kyD)|Ys{`}OIǀn.`Wۖݛ{Y{ h<_=nn=Lnk{~?>)µ,̾9}I'zf-2}wt-gs*d>[m&-!6/Vv oO'c]MǜΰZS'2;sgIiRuNǣb.GC[#/l2i(<ˋ צXְm9u1g4ZG1/3K}E1蚵duGEi G ų\Nz@q!N7598Ju4hY:qJkyDӧϹ(/֛`Ya5ŅY xòWP Lؔ광vt Z 6Z/8 KWd>Y5REX-1F)Z%p a!ô/y_ɨ"·qjǥjkvKՉK?,Բ{̗Bbͤb˖(*"";6jo/d]6 &uwNRTW:c,H_ݲ,X;8Er{4;\>fOOTY_$If'w} =^< ڰnI[JuLK]Oh@KMأ"w:v&H'~/: !vM;?BXcX]v/KT_3XG9w_0K3B5Q⭜-qnO5zd5K<$!ķa XBEJz)#{X:eucO7%n8wTޠl5f'6ȠrNX ؐi->5pqR~[[n iU.l )m:n 7CcWjYw$RD ٘0Z*V)h\!1s=RU7+!!*;a4* \ eARCLw"%9'U#yu(ZVDv6RU9&CKy򒆝dY@>Iu?öG\M[1Ȧ *5SH)uG|ektR`hrUUQ<ґ& [*~М8nMMk+¸񗀁uى>h%Px*忴p>PܐOL)xTNY-wsu^J7($=ɪ J)hP$1]sXYa$lrx/ex9%GIK)#Ȫ!>L0$h83Id%pya`IǗq>F3fbD1ˣ'Hd7XfuS贰dLZRB/-leEFl (1m1dhRfԛC&|;/s-/u᱀ Cht`F:i+ MJTI-D:$ ^::K.5/׋Ea@\p2E^"cW[D c'>-Ԁ`J7*.,&;&+yگ6>( fEJdluY~Pe ]>q8T섿O*L{Hq|R@Ⱦ \$nnIq,C\ Kc n}*I&&sP26Yp;e3yH݌a h|ǔ=U݇WKa/,uSmY@/@Eu|FEu3*mcމFOJ^MJQuYÕ `ǹ |:3 |F`%HbS i L"ey yen0>~ J']1y\fɵlGH)꿔grh$ K>ca'C85_E(_kifiu:QjaU%Lt$)}ISfT݂Kn3ur˲J6diacW6 BL6&{#jb?(PUwG9{"@[|/y?j҄2뉬6^wZݚ,hŒ9Tq>ʦiB|߫tIG%417 B]̲upL?tdHR˦ }4dV"ftb`TRtVŻTйWp(4p7re^s991OzDz,"T%~aDVWyKIjȩ{8w??D5dL V]4%ka ;njW^1Թf*!#qdEK4,rwz™r ׆TCЈ?Xa.Ayi"|?i 1"n qʓ1p՘@!`ƁHd͡OlӐi-E5&qz#_axsFs$MctH2$0RrV9c=r֠bXPJAQ͵{56infFHKms)!fVvuƩҮ(q5YΩ&[&^ϭx5Шu" hq_R@ #㲍'\gPmtlt0XyXh`Rגm\eSbNH;IA԰.GW^@{"b1-*h"t ?mx g( UQq7r Ip2Npd#J) Q B'8i'(Co_; +f|^fuQ X$3SٔuA'<+{~p}t^7|3m\('Hp7hnUcm :R~>t[~~!`}_(NgQ;o)ywZF&Ԁ˲k_~mNSmw^H{l=?Ljϝ9}m1:SCM_c<7b]?6yZۧwT)׉zYq.q" @gP}XZ`+y7xYQ<4}(¹buݷO "d, SW71'qIEsc&o'Qc9xƼ9Y׾~PDW 1(|5_|Odv# ),N_bVX);hVv x<AD--xw^ߍ+_ KM5v4Tv%D2d 3k=osLw_իWX%2I֖+@$]^=\_]cgiϰĚBdA!M^{_~,@;UqLy~#3 B滸3&HUC-^zmgϫY4f9*𒀣h;cD=l/pqyKaFȪ##(fn[Uso/̍h~cU;dkmh90zIC7\úuO2ߘG0 FFWnL<D*jC&.{,G Ӝ2RzmygMZ̊ URjn%kٲ=3[QM["x:)0a5awXc,U{ܠ6!.ScE$Jt'ǧ =埥A{mgR|%[6zkeϤwC_+,cim -I&?+s#(|{5Trh&~zc?YEU8>NeëmV-I\~ϲD 6 ?O4m6&_R?s}azi&yN7!?^ ۅa3m)Cg[v_]bwu=...~% zB˲,Բp8NP~5n&߰h:ݑnuvf6IV5U}xfRsh gkNvZ+wa=o ,~Tj..cA1Qcn4>2H,YeZ>@.fh,/ 9ZQjǨNcW~Ǯ5,c2F=^`@#ъ{a]Nu\ !}޺09lRx$٧0D,IKXR"hjCry[hbp ?_3͂̓F@c7C45C1 2-J=&d_6}83|o[?[6U#E'>9mf7)s9@QgoرN)~8Ϫ10gl9Sp`Л.ӑl궱2hMA' ܼqG; Q^jλDsg]LDIjbgOR4ݖfI?O3.ba§sM%kjK>~)zswu1pZ~렭/KxSk u#K#mS|eh2r}മ8O{x6p'rk @0Y*j@~CkW6Qdfn+AT'XBp1tn~?? fpolЦI\ ;$: `Yb5^^d>2T9a>޷:fQUuG@I8|5bZ.4JǐVL#ʷs^UBˤ,i#"¦$MIT9.l3>/_ 7Q~XiO ( Z ڜW̙/L8#SN>?:4G0)w arl+awKLnqepހ&vc3  Ioc.3yXfvl&8=Vj N"t=eHqXއv6_脅I쓺4~+8bZه` |ʀxp rQ =Mvi u_Zjeh 34 y|Rnwo5 I*Gf;6i؟b\jѭ7IX:~,Ԉ|q'5yI]|800@"?O 9䓆=7BϗDRژp6JI\wmpBxU"t=@q_ .Hc^tlm8N!Oi=O#|M]? \*4G{U2s HX~ *%/{Ae/]G me}{q~Z+p..bf1Ԟ?:,!׾Z\TD(' 1Ӛ'<2ѝ&iwN[Qy/!U`Bc$Ğ^6>ٖFTa xM[*s3:~+JX__a=R22lׂJui8?ܞO]3ae>3Kbs!Zoo|ѿ;͔m zw7xAڶV]ysm#g~gI{X usxha;~zR禩9q/Ȳk8 ^Zxېog&.'xiʶ=sgiTSQ??{^|6Ax]鵓|~:νO~N2gڎ|~zOZO #<$ߝvAyho"SZ.oЏUH~{qm۞OJUK>+ʫsm;}zh~O<[_E!cECn[)Ϟ>?7筿Vz}ȿ 9|gcRg\OcGF>cga`٤Sy9  9jL*1t|^ jSy0,|>%Nsj&{l9ċug<~|9=Nౡ0<7y< 3c$LjpvfqQgEkgXI ͞E@p'enGQl -d(o6 [[*؏ELf Xdg=Ҩ`m.P)e\YVt2s݄" +no^!|mGv,^I:n`  ./[eǔsX,\3fe2S=j@6+·NC/cD=>@[[[<G3_I$4nu"^}=x 8?dH8 :fr8:+-!<*=r`Y̠7?7\|Y͞"K#4mYKng{rlRG06Ad L8~ XtR[5P멹eYѲb ^Y;Rx3"nY zC6M{Jtkzi&FCabL4X#2^ƛQx#)zmtczs?Ֆ%oAHc74{wh4o )x-IЯB=-%I9Zxrpt0mݥ-vY.,,3ϴEIqePfy"N&Dذ\Sa1қÙrl4X6Inz-J˘e@([ic/-틤+Oi!{fw47E~ݧZ5$ӟW1 1?HXv;\^]xrYrFuy,qL+94ijۯpz'9Y$h%2el_J~ 6='yڇ";iGA#(rgroY]Si+FV-e0a:4̈'\"(wK0Q%MC_0!2B۠<.[F~ ̓$fILGg4h 9\_a@zQbʏK<ŕX~`3bW',BwJNZRz}lm+PZܫrZқ ۔UUV]=~j@dЈ~']! :izڲC:%O Z^KyFщBa͟ju ??Y z;ɑXKW^F%:h~NpKSiNٰ4xZ!BOyG] HLDǐ 8j}\& Zj 0o\/f0hvj`6fIjyiQOA{=Uuv[.9:+\qe;\/[2cj"bɯ#긥cNj4/ְӁ=؉,ahN؈ZfOf?8#$Nw$jI* )k"|BNS;lrCIR.'hp_cAlMyIkKQ|V[tl*>L4_7e[q g?!b4z{J4RGX>ps~p2ܰ5K[4 mƺqȒ+beZx% Z#DB! <=nyI `J |B_7]&g]0b =ptY}=mi̶ .zDRoON IDATRv҅c,'k'e#ghy^:7Ϣ5=\J87ˑyI'7/T]OEC+'m.3=I"O$nʾ Tg7~(@+87W9҃g̶ U 0yoEo9zH+7qn4Ny/7|9.P+1RV!pSxI$}"UJY:Pl(Y\/KoѮerڳE]40'\tD3p@(t'!Ng, ˨T=1d":@'I3ol#׋"*e(ZtD[}\\ˋX! K[pJ#DBPY z i lCU 7ʰ=EЇfguC)dPj ݌#ƧC!ي 8pc=8#nnw':L\qo64v=tZ}]mH*L 7jg/MbM%ٴ&X1Xg/w<u!@S~<^>9niSU/2QeK;pc2|pqV!hE<}:&L bd }N1 OU1pįگ77w@5P6ViAE(B!Y"̸2"K$Q 95*Ht֌~<Ӓ벵zr옹n[,IWa@ora#h 05>F7LZSpNEz*E1DKKe RW@՗T<7R Ãi2dt@]J&ҀdJ}8J|LFj+037t`M .Yd1Xo`fX%x@&ƌ^oxMDg ØƩ*v PzQ2"BfjFnaZ_ Țєfk1kjfv 7܈12#p0YP$ɔY#ޙ1b6tx`@Yqe0 aY+ℏfR1Ǩ8;8SVOx m=n`qGc-cՓ:ewЍ=wI]CM U%Ph>D(Nf~A-p/^K-p^A:P-N 91F ;kOݕJ=LˠqꤢBFB-Й4t ~%i 4;S _ u4]姅1|EFVLZ^I{^d 6q*|67+h03ݘj6lTKW1_[5:r6B,68;\>(aJLaCg G{t~/IۻctZ1 oҮbS,EPGO9mx#3r ʜS4ìȴ2' f N2#FcӢRz|9٪S .ȈG PiȐ`~>)-6uus4A[U7.7LHKhuCV(/ vCP͍7wh0F?;NL>W wL4+_G_cSm4?gq"@/x]Zp2M[ZM$QZ6<fp8W$  k@5K>OG XU04!" Az|2鈾,{^N7H.1NOlϑD"A4/v8[Zv˲1X8^%ͫH4=b,Z'.5hCF}U]XxiS3[VS r[d|u]g_?cvZQW_RYxy ]:x#jٜwi󱗵w1~:v=CL6xK|j| q@H͖n[`ftidT̺?; s"nJcpsk>2s9:Mmc9$;6~HdN،+ϲu}HIa.6-8#0L^G|3L"Ku>|{yvz J}NC2 mSHގ]=sStn v=0=YPy>Wv=(ޘ3CR7sύ%%9xe,./0vf};,393JV#A 3́W HrC`Gբ3d:8}d1[ϒ[nвL, J DskЮND I.9m]P&LGQ>f e4C%se$ǻ*u"Vw6)2ȉ#y_yDɦw>lvc͏t%kJڨ$)D))YRU&ZdH,k#( SxT$h2Y>fNE.ݲex4Aл51{H3,)jFB-AR "딒jޗ2mkbݖ<}LJQvRI*>+ԝ)C\@Eyv^(@|cfl<[ ~k,Y7<HQ/!K<2c=G1`g- ̺1d^m峼9Qч UOҲ=BS?9}enr6DOH[Qr:nI5v<_O7oAai[B/⾃LүDԨD(~y/r Ӽz,m f|a V]YhJ2_ k98N^kw4c:'ksc$;R?ae;UН`i;6Vф U_8Ѐz] n(,RxO'Wz1g]C..;\]]p8t2;K\^\../LXe{'Ug˲u9\+(KA#e`aq/a~`5yڍpwwW/_p8XƷ! \^^F}zvŴ:7u-N[Mò..[vW|Mξo ;NởNG]i5SHNzyʈ$!/Q,L%$Jpq6xWe];c`.//.$SVy@M^N+^~1>#p/N. q>#Th_5܋ 1JzKa| t<%qZ 1Л,Cd7b~i`P T??{kvAFohtϋll4k>!:fv OW/|t}J)p48ʚh(fZKȈ2|w_:K3PExa3]>Gs%Z*aOAƎQmpA@Tr7E>B~\gS(4eBm*!.gLӑ3/&a%fk{"j\ pm,*em=xEvR' ㄍ+S[w#C-|ʎa]G8i4RKǂ搘3s|Tzqj7xi'wC VJMW:|ߺ%as MT]^.J| OA4ꁂ!r|\3 h=k/Gu2{zlB ^E b㰄UYWhz(@"pBfQX(NÒL[M>_2񙯛w+²,v w]!iCXGepDb+e)M`{}^JZ-Kd|LV i9ۮʾv`nV:fY\%ez9 u[{6#)4[|u #2H(ǹVwкJ9"%M?3leA9|@4LТl&>~DWovK5xxH[s~,%[J|A;'7?aRdR?o Kj{hwٱ@yo~KuY-"/ m:h%+V"^TD&i+.v8چ(/ϣYr /Jm&+MjI]( rLt( 8g6 W$iJ2>j6iyƻ+}={rM>mժwؐJWm[ZIy6ܭƨpa1FG[($. Wٺwm҂6$r oͪ qQ2yPtխ_GtiXp! ̲Q .|P݂p{39SĄ9K)Fg/o|fεжm0K(r(u=iߕMX]T,adPд {AKWLk4IJ \iPW"x8 gÔ豫D0x12XqJa$W ETǀ_r|@G̅•oIwgW9>ãw"8)s̀&5cGk$^4E$g%ϋ"G#7 Sݘhs# eF{H$UW$~t$m[}IJ 3I˦ry1\mxvUK烗 ;:GNE̺|4\T?o2]hoK~͏Go|#0SOHue*OׇUF~sM73=|ms;ziڧz}|э\!|GVC=3p㠎DxlVٴܸO1QO/z<;NS}yg6mv5ssno4yQ0?m\(7-QL8-pGxMՌ=kAn\2wwE1CYṽ"yQzv_Uk7BXo |??'*A>[⭶j?ٮVjz_f(z}Ow;o&~{縵ְ_d|]^{[ pEb)kdŮ;wgnf68XqɊ`:սe IDAT<ZE6f#yZ3J( FPf@<#g3U@4JhJ5a܄A9g&hj>lt]d+,IuS%`t\?; F#{OR;Ϸi,ӕ=%lYԈ.!S4x˺vL?x5|YS50Gx5Uafo¼fΦ Z)r޿#2 `OkP+_^J%O?EgLRVNgUUŲ,8XO+F{g^vNYYBquO k 2fYtd]Qӣ3]DXQtq[# <5Z,7дYE~OcرM)zȲ7 { |{bҬn;aG X/W΁D/[-PD_\~b=o;Y}JC" Ppu{F;a,;dRV@PNhuI>G+hRYӜGF1_|2de|$tl;(;H+Kj9 1.rۇg>ηĵ]PI`-²pZz'xp]&7o*D+2H%վqYsfri#l]T{5eJ.U𔏈Ɏe15Qds!9efmz 4"V|jdR:/w҆MX*ʉZ9}5ܑZ]ONB'l'IN]72 MVY3y ۓ(Mi!W]\B݂/^tGcpyy+wɰۛ[דUwq[z$Vf^t`ifz1 ~"j&V<ߛ+ޯ@B~!gL eUμrCDIGDˮ^v_^aq= wN0I~7=CfϬkTdq 1ְ\챻:y?I=+,}GaL zl,4//.X!@p:,WŲawG-io9޴mjTC}Qh8  "x F D Ƞ3bN<J<Ǧ:ѿ7y?`pEe5'`H4D<=|:>\>E^w6`J68t@n.#y,EB Jw s m>",u3AHc44w9EybTy+0"#KJ]Bcvr#]0tid wG "PK`fVCҌHw+o8ί XE &+6R.ǶnO$e YC’rQtl'h{;&ahrvf|!4Ⱦj`n$ڜYkgIJv6HjeCṳj#B! s)"VBnm"k#m )E?EV%祮ZIkZ.fCL:/ FC%c٦4744t-, t\eAax!`ڼOn aEP#P?A;֔58܇LZk:G. LښX: hQ0c]DH /e6a~*B4cՁ7wbu.DИ46_EH H[ Uń<ԒYN2)$&~јh:gH$D sERn%lTmP An&AB+1Q].41U<-^>j 5`4pßk6,.p}ux>%F&P*AjfAS1nh`>قĻH4ikbm, 0R fQus=ZmZS^0˺!m9B[%פMXNEAOlN]sP5'[P)2ުNm0}XYY$!Bq6(>I(ʴ)jk{6SioQbSb4(&JӦ )ͮXά7:~uO'RqA=R#^mMƇmYĜpޯ ) J/Ld@3M-(ʒz '0qta9ltfn* h?.0%0нX'Q}wmUu7Z{v/*E4B $J4Eg4%4H"jQ11h,_ C H/SvYkeε>"(眽Z95ѱqre'lo B`qP\)ʁ,Βm!4Ro%I&y8ǣ_,㨍+̺e ʭ2@*:nۈ b,%!Qj⠈Y  f9vA25fde ;8W>~ SP%|9^[$_@!"гCG!zFal/GA&>,dIF 3CURgKn]O*.9 X~SάJAv*Х!3~6*mPnr_*V['*OY̠`0%khD}LKjHKuT׺L.l?V:[pb,Vq'x,Q7p= ]%_rK-{@0ڦA4YTKaH#`䝆cV/]Y]"W4Qf:9 +l:By2l 4$ͨG3D%@ 'NgN 3Asiu,cuE\]lJT"REM۳=ƊeK} RU#q> ']xv*;{0F:j5`YV8ʳ79>Fpz$N3iD!RBve' Ō'J\ڷ QXCo*亓0:FUldS1uBo`+d.9PխxNߔjfVeJFp("1)zD ]ɔ` o6t2nb/r1#.jT+jѶ`9xӃ b$DSxV $ł::Nv)Ѽ'ܹpZff5UЕBʅ@7ƨ}Ah=?sPCdꦡ `VLGe=n)aL!efg1@(RDeXh%]ɶN;mɓ + a>6ɘd=#NΖ 4Jޜf!:49I']F{H=QX^@*OJ`XRZ3ӂ'r~6.O0}dDtckpUyXMYш<[BEBW0y'S4]!ejߘA hFL&m,N bB0瘕(u;в$Bo^f<ٳLu@#^%wpQ#(f[;. 3/UҧDʄH*ӖMxyl]9{6uNY%NAĬi J&1@Ы`}g~ޡWR0g Y}#Cց6'9ZsOeRFO+)輣9!`oӚO);U6B$4 =\9x|s f w'YiT >sAeo?ɈRy>b NSfךΕLh8|ԵuG"PY I[2mvl}vrYaN+NX:6GvV& (m86YG$!LR(|p2`(ȓ[4l]jElV#0on?6D7c͎vue5Fer$JhP̈6 mmьhI죶m#5jjh}qZEjƷT|3*B3A>O TJ$Q&19Ӌ[O*..\/̷PbT&~9pgHVFP^6-*ͺÃBf˻&D۟",1顶_@t݇!`/ {u;;aL#g&ck3)K:41ຟ_Kx.3 4M@'}`uvԹvϔ%9lRԿEG=l4]w.h0 ?YWJ 0ZمwҦ~Qzn vޡS2['vg0B+z_]V6nW/]JoyR&&eOE|0~^L[}Ǔ]Sퟬ1kez5e,WiZ֝{𚜓k]4k-}ߦf~7¨w-ZZ7C{ܳkAӮڙO\:}ĭލxDsk_ku"syFԺXwl^WQ%m6~Lt\pR.>;?L SϏ p]%GwmVȀ"zWFڂGax݇Iܒ[Oإ;,(#wPNؼQgluꢩr8[̉\Zǥ*Ldz:=5G!wXeQzz:ZQNS~[ Z8ܷmi0<"*{zcOuI -4Bn€P}=X* qMwk2~,/q Ox0 177 9ٹE!{iKD@]cn~ $$*9cM Xj\yةi)U~ q Aa)D(i־P9]x]v:h5y v}H]J`2m8bqN,jrU숶E-,:I`{ In"PU`vv~1WBp2=e ? f < vm+Ľ d"?蓈$dȚ"-R.B2khU]끈jYi,CƀJq&`z˜dubFQ.TxDUVu۶EZuM  Dy' a&uD䎱4o΁4 3WOSꔍBGq,RkX4Z@UծeZyn蟉}`Uy9 D8^Xҽ!:WƉ0:B,;[OZ-#YBηGR TL5 Bi0C9"ͦd.*wܖn+~9#nۆ=mCGӌ];v`yq M *N)F %oTFOFo3.sf0~.lLv|-WM42I BQv $cSH  K0B~1zWY'-#3"[_2O#dC_jm2ȲtK{HHdtiPdX<`30GN7 ɚ d~iԥGSU58&43L׵G'Qyu8=u!}vj,3^#UO~K[}Dy Foo ]3`_ 6UN%9\'e89zGI^6]!J0`{ J||a _qT)`مusk:d= k\EyޭBRX!P xڊm`x+++XZן<xeh667 ^[؆-[ C,/-#^̌Қ~JzzfאJݶ u]zhrݥ7m&3b4\"!,lيmEF@+^2X`eXB.fH1X[TF†Um뫟%Bյ롦_WDP=A@s=;9ȳD7_WZY89zUUnCs6'4H$٩PQ֬su1)7J a8& WC!H]$v\TI VbbhJ d J{0 "^t%7mo{ pcܴ`aVs BU 3ƻ.w)#Hv+9)%58`Qcvډ|øXl=Q1I42{SBȣH+ 2vcLmb`0| \PdsqfcyYwW䕡7p:ߕՌ>v#cs ;Y;meC. f6@P!RD2L4de,8yMMTo3l[ f1JޕPk~_^p䂊҃+\\zB}6Q+3C(֌CX5v F3m^LDsapʃB5VYAF73JbwC e]@_L:BW"{ Fb93h)7tQ_\tW]̹|?tNLVjiN IDATauv%V#V?~`(VFZ΢+10 0PM9 VX۹ڈaEWݝB.fyMSa`\u2%;3;t*{& ı2R^ 2h C6Ӽ%jΑ3ݛ}uޔ; =>v.H*pYs }Q7Hf0ŃB1faQz%4g( ȺY^Pt;.t.a&<8v[")bZ-X{}Nz3|ܓ2^2y*~X!1P:Ǿ 4ƿv3V™^ s}Neb=S,L>1 "uLnWyt}/zH?+u] JU oۡ/ۡe>l0^TW =SAI`P3)I A,!Z0l2 >it&%pFyȷmXblA@^Bq/hP)DM?'C9epip@eA,BӶ2BR =\0G(T@s[=.?+0AY+qc)R?vƋY1T7S@H*^,l}8 n? Xz|GX?pg'L-M`x" Z:qWUZ"g u9Nޟ_d(Ӥ$/h8u)Gؤt'qMsƬqgkBjFOs9xkѴ LFG!Qs'niŔMVN& k29U*t|9;#;WJ M c)x4@+?A?ޫ;2IFLb|j'FaJCy\[1/BA`}BV¤kftJXH0ieЙYk2>S I:Vm7 uh02Dase@{.`JTW"3ݣO1\J_Ure/;̌ yMJ:z(o( -{ۜPN`[cЦI?1td] K^ibCߊb 9Li ).> ?ϸ*"Ahjٻ$b:Gc!kQ:Fb=y.u.l CltCcm0+dnQ_/ ("BԔ1 xJY&uvt ٰ{s4\g qs[Vk =2eY{U+ɱ%FlU9L1jdfg?dً)0hN#bT$ S 7}ʜ$E& Jc6'Rv81%U 2C__U{fe9RLJE֓*FDK ;ȇ`vIQ{SXP^ GAPE>%V'/%1_Q&TFhcH9&F X!Nlt 3*DWu',Hl_R.Vӷ* <)%a5D{s0 ؏ [XJ`YQ3YgxUjG%q^*Y|_^8kx\~nL^ egd(T: L{}rf{3֔T "X^h9gj [&RL=>^vpˁel41Vm1)6$v1J *p;ČMʲfOHGI,g;1BL=d`.}9\cBtylio}N :hLdeL+ї6 sv$Ѳbt5ηpVɀ(H{XI]P]sSHZ/llfpkĭfZ L{ Em1f%ædeT aD75|ۖs&[K.N{vyݿm}:W\6`{yf=y~Z_/n٭*R;mFEĚ})>,iMq{ m,.lP^?jv7?k>{: [h~ݹ6Su]g4ްtgUM8M|s{7M2\O{c@9KZzD֛Db:2h]!뽝Jc6&ڜ.%g~˃XuK>ܙ6ɷ\kuK66ˆt5fxv&8woHn1}=( MDDɡ_Nmr3/–X `pd8UMT{AU$37aD4[_Ùg1N?58Q6Q@竖e6qu8FWҁ=֣hv؁Ex"&UW*gfE>K@Uavn[9T(Nlr>C4Q7 բ5gpUiQ9iysPFeF1d$fZ4Ƚq`4bee ++KG~EbpY@>D=a֥BQ",H*BUQ3g< =ZxB,iOTqRFx,dJ+Ǘ:4#UѲ,қEҌӑiYm{}MlR$qZm(ȷA1%25s5Ŏ`Of(ћNQ #``v@`hD˰X6(/],?dts}e% R9.dŠm|%t9 8%C4fhT[-ZrUU:J|}j|(c[ėXcLL5W*g"&!lD9XQk]UH,z-&dr,Y,d>d3WMH YdY.iRϨx9:S/!IDndo:hgf "幕Fi=(~yds(iatkN(BLLDUMfa'}tČ|_۳@۶itKYc,sa4lQ-=Y=#(F(#)ei)H4]L6&1|K" 9r/ ^̬앺DW05s[)nQr/r8GuWm1nM T{ћUTo(hy2rKYo͋-v)?|JVVVⰌ_i}LΪ,ϙ~bY'IyU(l0,,gI*,j_<~@Muɶ'Mv@lfV@P4٫kՉS,xdtYxTngYfp򣍲^U<<3G3wn\2&8`*w>]1;8難!+AMi(0`1TD9|2?H5De%܄s13Rl gu&~q$ڦA4+;Y5ʼHO:7ɩil))a]w#. V{RrFy9kXN[kޔ2ES B&譽±JZ!^)ՙ#`GVVgAȧ!is* b 11 *XIW6# _'oLmZcL'⫀9c5cOa&aO2QL)xy.JWQL8fq>;,ŒӜPQ)$niPi?Ʃc Ӎ`&$hJ`\P%ܞ9BAP샢eԁfut6p 4fm*ϦQlɑгRN"8%TʷerZe߅]煍pǻБKF7N{.a}FFOfstoC-ifrn ޢL!JÄ)衎*vT3*0*1:3m+Q疐T/} `'Z+; @!GK0Y.ZXPM椇8t~Nv}{sW*ӝ}$Z䖽! ("gҐ /S7gȜFYͨ)v X&M ]>*EsP qa^(*Ce^*O\ -8O2mK;N)Sp}-",_^';"w3r!xm`V'!ض4>zU6ofZ4u"Ca~ fq}q_7ᚫ;0 CeR-U`ªqCM RX vp|lI׮ w׹&Ghb0!<4EwPu1Bek§e~96ngyc孽v(RK*dykFk.b(=)?Cf! GJRB63rBxU1EW%)&RHRàv6~42/;DO1rNQ)ʋ*y<9MNY=+B8tvjY>Wq8>(+u׮PaT-|m>Ⱥ(EQMo.&@{ e+l_w9 9z kH K Dڥ-ǀȸAp%p }/*lcp`q;`HZU$00M#1)8b#%I2XR#R1Ip$)Fu/ ]0`{_J*)2#F޲_1GC>333`O@w܉o_7Wz7nVfFTwdp\YV=h[2!;9X@ң2=*la߲w`NH%N7`zƋV֙A$2 , BYO*_>x2ފ8(C@ŨaAIa0 Lq$9V@+0F$Ғ*­`@cՍM'=e2YTHǐr; DD_$SBcyr/9✳ _i$N^-{dX^!Ť4hLQ{fl{J LyXDv(HVPa"29jQg9e0w-;6'wsWGBN䃕H 6|f7Y"OkN@[Ę3|m%"T u\&gm傒P#[7ǒp, GU=yIxƉ'|$&|_|Oa׮E4mrp $Dkl2 kRV _!NB 3yP(XcL~8.;T2$\OI%gw} {:X1Yϖ &CBA) LHe57Twj q6(Dק,5 8ݳ 8-u8sL3|gZʵp)O:t'/":G uZkעw\]qٳ'ϽgX_+JG,2lPG)=h˲}g M\Wd|[ ga+9P@R [:VɦX}Ȇm}K/"8 ;`U-5)d<lwɲeʐ/Ԫ41Jtt&BKf)%1Gtu8XF[[ר:{Qh`q< S,*"6bֶ 'x8W o IDATfDMV3w 8G֐5,l{NVi9fg=џ}7| .ͼnR<\;t>{ G#OpMzb((a( $} z"G߿mL~lzJ"K+^BjuwSN9>ϭ0\6:ok`ҽT߽^‰x~gfg4'ԽTn$K`Ĥ5fi2MӺi:7}K> N Ty266AYM$1xZ).eް5_~hsijY\S7znޢYusͪГU8Cpя~M,///k_:\sk7iq}6)(Л/ hy0vx-/89`v<}O<Oi*`ۧ^U䯫<,h1ym/m~[i,--a8v <;lvE`=MKKKh;^,n "2;z}lݺ~ssIcVV(uUUXXXڶFQ9&w13FGy  󘛛̌,//NAkly)o襮j,l󸸸81-[},,,Lbf R|f֭X*cX)|?etd<7[+ +z&컎\ɿu~v=#jPckۣKh׻ͅe,z)0k\eq`eyYOz;?HNh"睇O8y{q9gnp?~ +/|dut>`Ν7TK |O~2ƶCC%TI_Yh Lp_!z4 FfxR-I32|egærbW`h |-gI#Ea˖6&8;캾Q.PvF7H4"'VQjж `IΑoYNGˢJ<e]KuqVяY*XI1sC9i=Z7FK!Tfgh6Geud`6KT=3jp=VF cic3AeJI@?8yل X' Q"D 6ghHCv{B;*h8N9 # <cgRגתdu(ʜT>戴Z?k ,o+v0^aQX1|1{vѼ砰P7@ս-8G;qf) Q=1Us3AaVRB*`N[ !meZ2 ѥjrTeF',0C@Mdeڟy2Ƨ +@w׉B|$ g;9Y9A{ym_Fotu Ͳefy)hUsFw? ıΡ'9占nD߀🗋G}ky+߂pLz@7Httr+ף7UfZ E?z#W\#nE/z^Ӱ{]q9o,.`El=gj<.3x߁o}[XZZvu O1?m8{2#gs4..ųKxSa ߀y3wv pN;T|\?;,|, ^gu6ۓd{ % }6?;|_QD_{=ls9`E/ĉ'|/{W0C9z N<,,Ckf|Z駿 ~pUWMo3ӧ/x /˱^{~񖷾 W}*{=/(믿E[i'?077޵kB|/= w,ώ;pvC0eƨmLMUuF⫎Fp?<W$U]qͷ㾇"Wm"+X^Z33r@0]mT>*^LlzAz~o=|w`4o7-k)N|Y/HIJ /C-. ( 3غmls/TO{qq}_~9SٜvUW;oGq.7..0!'tf29z S` =G`WҖ*KטF9L*lʎJzR];WR;h?qϪI >qp{S(WY(\HpJh@L+O'bb݅`i.7 پ7FQvBR%!h]Xٖ9aT /($7ww.@CKT{e(ilyeKl)2ٙgf* GLثd t̐C^VEx DȎ;S+4 oaL.$19^)M^:RG[W(\sap6ZmP17ToECxL#d[kb;-=[ϲWpEۜ[Ht(T`8k<]bOWt RwB2Sx[K_0Gp~uA,A<6犲o`l౮mrc22Oq易k((f>ˁ7 IrKa9vE z2c_.To`wXD4s%uq !ڼ'&U n {]m3{PJ ˤ&_VDC6jsX :\uHJ\Sm  ~1kt_"̋ROxϻ;<9V0,6sp8Z:>hSN Lz|3PYߒL@3!+FYHâI?9f<K`߶%3 Nůs;>샓O~>я7(2\l|dQ4  J~҃A-o~oT]@TV`<V2=/vD-Ѽu r4{U#z$қ>$yyh"7 t8ls,CP~cP;(Ix3pER<_x*vT3Y%kCz8=̌<~cO|B B/xB' e/8}9>_8 aée|_D*dڪ2n C9lٲ!ܹh<Ǝ;P:}# z3 n 'Ar˖S{vڅ;ZXX3yny]馛177 f`˖-زe)%ܹ DرS#Gr\ %33&LS~]w^2|;vܥt \w}YP_l> }}gs>ᦛnV}E>ymY`v-hV|:d00!Cs}A Ρآ^@>Uuu?ahŞatvݽ&ZS>acjg9k#D]N*,YLT` txژQ`"eip#RR,D`◾ {칧@1Fatq۠문u'?$̢ϒn\FhbHȶAτFw<W]yJԤc%ll:c,8m@`Fg=:&I`sa4;b rԵ uDG+6*#GP(u>geHGw0첨2$FUJQLv\A PX1X>qΩf=Y-b(26[9\5e\Rvz(DwoHieMB Y3 vF] W*E7|8!Et?/Nw;4zfCWY 4C‘K@b38YIoJ*t?tnLSNcڢ'ތmCw{+Y&9YQ*/[=(gR'ckaN +rR" ᡖإ 30FScJ`@ ʝl>I"!UэQ`,}L<}gNl+fGF[e@Z1ti,3,_ T+qH_#^V݊ .Y$Ä*M*Y#S*Iym|Jhq 0%%ڒť،"Y:vNOmJi=kmsdL [XHqqڳ5M2XCrlJ0ү.UƈRl )I#Cֱhc插%4IaWp*j%8m[;ЗsN1US%inw\ ӆQb_[T ;Dr5HxFҷ qf Ŷ?l2G^r}*@h x:];rC9;Rl gԟ` ;vzgq 78?=ʼ*Dֈ{,PUZ4;F/hL;aםŝH۶#7( =4B7=AfǢy >w)6WN@| oDwME;PP_pEU>4zi+_WC4ǝOz /vY s4a1kDőcʜǣa,3kuQG}.1g}>)| N9x OOp㢋.Qu^ Ox;MS^Eo:OLP{[3NgaJYr#z8Gc0[{;pu`<1=߾~?K-eп8vq;L^%'.Я{_Uv){ַ7L\|?眄?C'?v*s.Û< x#iO<Gu$[om3ȣ> '۶mk^/Cgz:Ht#puavnp~x ş/-'c۶m׿??p)$r0>oyk9w_JO]w݅s ))afiߛm !($Hs4VqGX'`˾M|[cm{lEؠmHhSh0D3! 8j@k`0!Ym.Ƅ4Q'dXp_t̐g>/;w\ԃNoa-Hlun,^D@3q-`8Btَ{'?zzu]¿_o\.KW_}5D)>=p]^%K5d$0'pg<7t zN?wOc0`<a0%cܴ33c#zUL\V1I␇ҥl եb-I V5? )B4\@7#RJDFM\ΝCAmV.g,Ow(^} MzM>h8%G}_/@Ոtj iR"-vFciPӡdfۘ6-R"-y; $bBUXף IDAT_)005e,Cp Ց=55)7?CyDk}|Wy3kklf?m$-E_O-|n^|]~n/=u=߫Z*{ԹwyUz{zԶ&֧;WÉ.74a4ME ?ֵ:Mgu'k}V G"nr?~_mrnx#'8??ðl='c7|+h63b;F.~)Y?i}/;#؀{/LWo߆ׯ1񍺮}xC[noG?8q `w1{Wⓟ8<<WpaM7݄sy3=N.#׿Ozғgo~җM;w^Wu<6]bɲ%Y,Y. !͐0d& RC@CP .¶\\$ٲ,Y~S{k}+Y&Ox{svY}[mm!e-A~}LВ-vW lV#5 'Mڵeu/\!.}hmÏywqw/nqO|g}.pO|塇dժ4u7߻w/J뮻G}־(HFfgYfc?V.k+FOsϢE )J<?믿Va>lK/^Aoo/?Gxg(nΧ?2}_-iק#o yF)Mg>]_77k8qb[߄amƃ>]w}yrWЮٳm j(!px8ń8׶e>yByYkZR; L #t*,v+A b +xyz*x֭عs'>oz:)O_,KQgҤ qj˜ۯpߟ)׿̢ES*`"y7XbO=˗/g„ { m}UibD;Q|NO%>!h-dbz2h3LQ c ?ӆ˫u˃VP_}}  U~lBM".b)"+m҄RD\&Mr/ݞ6 kkXfB nQR FKc NjbO _*?"qϬzJB~$G=VT7tk ?EMpH˯fJfmATd0ze}/Njڍh/g =Y34 eC 0U͏g #&e&i˵Թi"/t?H@ҵHsÒ(w*IH/97}eB$RYiJ>[%q$Y@G'1q`+#/]ɲ\Wj{\c~4 K`<\qŕsΜZx1/wwG]g^&LsbBEI U<>MNP*z0IZ!TMV\'%Ɛ{披X<5Ah mԞa< mb/hs6 MwLfĉ`xFIҲ\MeJ2JJBZ\`Rm0yB>x{5:`3_tln)v)WߵA\^A <$VUϯ`҇088#?cw}0mR* '(܋Q0: ƘwCcϗNQ`C)YAs,@ 1IhG!ygB☍ޟh#;aHС8{ +z}7^BtёƫFfyO-cDQ0"caZShpTߧWVh[P#x)T9 ÈspunBorg}U~#+@}1 NJ_7 wks.+E(O)1ʂ\ae:{_!>0pU;ԇHtt&ᇰg Kl I1C={>.eۯDT;΄1$I\gc|7[)>cҝįwB"@ע|V-.=O#ޮT^R8 .^kXc<  qE\v饄M5HgxyZֽ?(;E___=G`?nz^xVJl߾&0c x tiZIWQ"Ȉ ܘc'<Ө-V"-%lFHٳ{7֮\.?+V>ͧ毹˘4y N(2׏K+QJJ!&S? $tD\vmrYrPNSzŞ={ٿ@!L97u;v,]]ڵ}{zY+Wl3gSL54<2{1&N۹LDaV9p a s9qcDzqf8ƍٺu+SN%cٳARfqtjl߾C*w#9}*pHNdh.R1A7[(0o]/~jgoY]w}}ڵm^xa5 _ Λ?f<3|WV:C>-"PIJOJct2j:;uPuIO-m C|K_cwROKF^ƍJJR\*JeLZ$>vN=d[@JJe_hë?. .Mc]hmVme7!msu35*%'j>I$Qj㠐Lʁd69:h ^b޹M!gr8jRZYƆukyyǯVS-UgYcyBݖ=Zx!.Cz"׎~?s7sY`:F]!yt;~8[暫_>xI']~lNjҬcYsyL0s뛟YVIjL9\3q$A6F.JmHsVA}x'~7l`_|ΝC\>;YEp٪U '^A4R 8sZT^5ua ܪYv4=r5/Kn,f#&㰾^)رIńib¬0csJIՌ̇0@ &fO7/fC:FT+}{%yF<ߒlDj$ȔE>nmޅ'y+Mtq;N\դ,aW_O'ΩۍǍ*X“h@M/'N%8uOC;#[N'8u{_sxK {/*eAS $:1#?h{h\%IF`_ql )ğ9N_;{ IDAT?v' ~6x 'ۡWO3ѝLm:ɼɾ;xO^Ns=NKv>?_͠DO.^̈͘y{أ]/<#eh|muۿ[|_:ivxĝge4N1zq Ϯw'~[1sh7=0ر8ܴw֠zh6hcդh_o4|B{ ~4ʚ!h4N|Y֐Dl 38؎=4Onsh 30!kW<̊9s GVtdA}hm77M40Gy 38vhjV@mͲV8PͲVѹi<̜93gr-7|VK1ܣ 8!!J%fLɓطo˟z[7vKٽ:i&e QCC}?66+Z>YFs$=N6Ǹ׉kx5~x>?`ҥٳnٳg:޼={8N.e@}h4Hbضe SN٨Yc禗شisi2ʾq@iuhGXw@h rA"͜ 'O^Kggi]p|ޯ}ۦӮ+ $Cs10N6듢E13zZ㧆G!Id\*{J!Pr?MFqR uRi#M_!Jje>G"%OrJV p1VSoͬiև8oǫ^4qhO`۶ z%7OH,wTfIds/o~Ji9s0{lJr(>0f+;v'|\r c"68ƗT[b CVq]< ꩉU* aNUפBDޕ Fx",xb!z'I29f ,>8H1i40cR_|fw+#dWiz+,!?bZNjH"H$8D=dUƄ+lcE^X'4OI*|k R8*cT^=k/Xaz`bZͰY$%QtTJl&Kg?>ƆUBtu9f+/ČjR`7YYr/`JKƏ R U"r ,ךM \x{ƥ o'ISJ]\d!y.<7GxhfW@wM_, 8cu'Ws=nk"xN^/'>I>?i_ի^#яw6nJWGS_%ʟK!31hK U@F| 7EQھW᲌ʆ|4.tTluTP+W4t *fQ9 3*WITbdiZL}gHSJO/t{,I<{`)==ܚig1|0!Y6:!􋡠B-2fRLdv{OyDaZ-?DZ2q֭C9\wMX"c~utt3!'O|O~̜y_֭8vgLi3?~2z==F}. #/YϪUZr?/C)dP#t L#رsY1y1ϠrQ#8i&M'ؚR.3u4+xQ!MKTԪ]<<Ͽ罴 qTj:!1I Z 8=3QhΝ?K/1_1̟>8lݶg+l߾+V{^rk:u*'Oc̘b^UET* &Ԫj$rqdb&h"NDxY1dl'^'Nowūw<3]Z8#;tf}(UktKGGgw4EbCEwJXk3W+^iļ1e{ǯrõW5zU]r%IĎ,xڤp\sĒJ^nOnL)in랓4Q5&'\Zb]Gb4РS"\3I DD$|#f֬Yaynٸq;Y楈k=?i W?O ijf< ťx@lZXcNȃ5&>2ܤ3/]|fu0dSa?>7`'L.3<3g~n@Ga)L0jJ tR C~$[ιaX]ۮս{a&c2v:JOHp-.IG]ƬYgs8묙1}*+W,̝6*R0uZuCgL㬳fRTʆL:z(Ǐ1c f͞EVex ů/T*vZvKYcv{ܹpP%CIL^W*9gl̙CWW'7p=7p ̙3iӦǎ288Ygd% &{uぢeep:aE/YD,ViN#+.R*E9_3AQlܙߩMBa[U"} IRjeT*'iʯN.ϸqc_qᷮ5\`ɭZzvjl 4U}tó,9Y+9Ǐ=.y_a8s4~Eo>~**Pfʔ) eud-P0TJejY'MF;9rir噏j1clӹ{IJS$E@!B NuWbYIW`Za߽KkcrgQE=3N`]Աy\mwΟdj yFp/ &ɀ.N!ON0mE)YG4Xam[\2B\D3~J>pVM7pQ&L2A$Z-V\O^uW_} J4uw1_n0~|xzR:ׯmU'>*y9ZK{*sҲgi0jJJI.APL%u ny>ȭf 2u Hk4x3U'i Nj @iјDŽ+]Ⱦ7kO9y.st4δ!\F%ޣ w%xEJ}m^6y"J#`7 -3Ζ@I0| +4^`gxNX6ȲY=/ ïj#PVN )kwe I5a e#b_uBC$q25p:315iM?g"q+Y_:b &=X)~8y|Q>hM%kf dH(fAsg1 O*gC_~'d_3%jľ4JNǃ Ab+!yH`L_ FBϱJ!\wt֬`CJ NMT`2+Myˠj뜋i o@ j0TŞ>#I‡"]_N_kENdXC~?Ze-Դ#k=+WW .܆% }g$k4_2/K'#Y<5ՌdPv?͘T4Ф]t ӁwOȝ;@3Iy^,i QF',v:oKxHpcZiH:>JB;$ )уbV=pt겆:BƖ[ظq^{ o~l߶1Ccwtv048sϭg-oy3_2<"i*bҘ+|:8s^XP 7n)̍F}<4MJ1KZf\܏PU*\<4qۍ$ɿbىc}FX|<ɐ'U?Gs=g*.,LY˖-[8i*F#\%K^U\I_FgcǏo9o|Otz}6d,]yb :9;9OzD{ˍ/ 6yY`|P}poExW˫R/)i$N|f5Rz<'Ni#yʁDt0xY+)r$7FGw8sAh#4s{qyY6u^Pʲ8qnٲk_b֬_Uq=0}t~VOlٲ__⦛nűcۮ #|gnk4^<|5F'ȣ3ui?>qٴ lag%&ylTR5Cp C/V0P|z!wϩR-|-288|`^ZP0Xrc(9յrJj5.h12/]9PkD?dh6XyFs>V?Ԕ(%){qgQɫM-up6og-jZή.jiZx =B@/[uA-ŒECX]ʝdKes4 &yIP-qyyX"IKjthp5{\XԤ4e5Fp$Cp~.2 r09hyݽ@+QST|^ m}r!܏7 :Hi]<汷E"6y/+i* }w|gߜ" 2F Q'u*|*GZ\ ~u/]gR LR)g:fTlSg9Yaވ=Ąkq:9!腐]i;zfC905ua7 >b+,g2)Kt$UOeWg p:{3gn`?*AJEuaU)/>* `{ugLWqEW jVDGMXȠ{;╖J89zf9aYl $6uZJĤ׬as'2*r:{HwnthΞPnw;IeizP3(w n%/,+fdJj]w.ZiE ȑ~\stXOGɺ{NRRî{Uh]z37ao')rUO6^[k XìYxmoc,_4wa؉ 7sgs%ŵU4eѢE|K_j)k-}}}<|_gMttev᳟Z˒%Kxӛ[8Yf wu7?Aj]$&!zΛ׿ fo}g]IwyQuQ.W*5jhUk׾=|38p /<3W*ù峟,Yq.]=|RZ뢔zspA,?}=sUW$)j']=(J#2{11uh՛gH UT,ʔ˥2(VOJl4{ٺcTj=U~yyNf39P&iWսZC6ZൎZu.qj-s0a"ox/5)0gƹrV}z=~sL1f^fxh,T;;uwR\=}~ !^SXg f-lQuPUC^~ o\rQD<< >w"]_&$ejLT06y=yah,ڋ!:J ]=twwJgm#`:H?_XBZ!o}ihW[݊1\D!F@prK@S eqƗ79DU⤴6'X<䅓 wEC06lZڹ!?sv`s 6E t:Xtlذ_˧3+FÇߞKlTeJ6I l#&hG'162g}Gc 4AhIm:կE!^kۀHYDt[1OLqSȱmdF8J*ٮ`b{cy+_ïIL0 [T wgрp(&),A| cFtl5 > 顷ق<Q'lf3KI6@v;h-=ɚ$kSṈCa<8^P dMJ럇M[.$&ɑcidN?6v43i\w|2y-h„ ]&E; rq(4dLƍˎx'YyG˫}O3w9T&MHڵ9{3QKk׮w~}\{|Ĭٳ-t-[y6>Q֭]o%zt>~5|KO<, ؄<;v]vlvс? ~7+Hthp!tחٱ'޳/rg>qo&}YoSO?^x"ݿw#zP?^|}U˷nwwql']Ӯ!нбhIbikӁ.7SH 9Fŗ^#~71S..BAHC<{B:69u׺ˠIRZZv'ۿmX&<\Ė/aڌn~[/_q נq}DJ4z #~@œ O|s?x&C!ܺ}"ŒE\?dp^7 <~ ]׮_U[)>lT0O[#,\VƕwF=|WR |/B!89=jZAHޣq*֫@̛̦k=p)4}2YЎ&P ~O؁eX5DUO&`yxŗ|~~|~7+[0B4_U\~0shU'd'>? a`w>/O~1R #w̗ε>9ǟpnf$˰<99DG`?#*WT2fU&ԙ51bfp CI ,4zKg\ˌw:{(k`@flFa5Xlo؞]\l.pĺkqP]"4F R1Opz:NN1p˂Q'ѹx#fYBcFd@ nPPpk+ck{Z3cέ0J) tll[l۰-0;%T>uj+SmFMp۞Ǝ-2%p<} pPXΤ2@Jk¿"1N;:,Ttj& 0CPk[FJX MͲԫW\2l is++rBf3}\2GTC[hG{9xV4ijVy;P&͌W!&;9߅CVޡlw?3SWp4aKcfaPpsĒ(+(?S/@ʵl^QDbrnr~4\0.h2A&!}W<;1;wo/Gw) S0/yU4@򹃏uנ Nhxu $O9v=0OغE𕲵f@@5PkEu u6;\Ok[hi2{֭]pb K^d Ҡq&g*l{uTkjmow`H|:ybIa5;Dgx#V駰jEfpY9$N۩zFeU3{&%Ry[} Y y+0B2! zv|g hPbEU~f5"[cAsጚ7ݥŬ@]XukXhcbs~M?`Z>=FH*~sSpG+y`mQEgvOpuEu-i)`PhYʎH2g|+nI=O>?G/Hkц3ZiSOOasq{w5<hnzlލA߽w瑱|^|[cڡ2m1zw]o[*wr<,.6^z wѴ\k8D/vv{/Cy|\k<8nlu@usһ^!]HsxLSKyb-=JP?y\g]}nHL_|(~:f8= CF6 +7^=9?Qr|яsH y[A?Q?`̓nGYc4Wʙt s/ϋ܏g1>w~J6pHe9v]|t>_=,O-xߕ1>|o}+VOG^ܽQ|?~?Ţx(1#<.JVbEDY=ry.y̱9Yq|4K4ꞇ~wx`GR+WG@P>r8Kx)"^~ ]ev˯/xP9f-K!!K7yiԛ9+cr.BL B!}ES5my:#}x#_50_/=y7>/XK ~_=if?.n7 IDATW >3?|b1FPuL` _&~o33<}sh)Ӆ 58@XöJl%MP#?K0uO|}Uϼ]hp_U(R=w[M`4 /ߵ7K0U[ ,gf/GYQNqh] }vzi-56<> z zx5`h}cÓOOĤeFO]pvz3L fk"clgzX3fU erIz6E vc,N7ƬZY+8șp{{qӲdTO޺;/]EöHVdm7a8~g0Mkۿ:9\41K2xY}6io^Q\G'3'33[c~iT##b|eYb-e@"m U zD"0fs~4|W@LzfjW2 vp u 9$-/wYlBE:Ŏ{Ff󝔧er\qw:(sc0V׵ccLh×.Ǜ2UxyqlC!J0),3Xοk)6RXVς#cY^̄>v '''\\ݻ[?Cz ?3'ō[fYgA NNLF,Lbl2+U5{2s,^␏xƆOڻC\0F˿{V6I+E)_8uLR-ug05 bíLUs :.ǝLy |x[.d͊.^o.[ss gL;^]*FRUx'4}ٖ+VD^ADWt"56Kq4&Ed&[!9?$q R | b6WUv `p3=Rgr_O,t!DlLZ3u9?\4zrUy(UbZ|vCN:#i~)Sf VZ ::e\ˮDTJ&3S8WC>ͳCALTՄ̒Qx6zuZC^5٨.fCeoB4u^>6r&}Q!{!]6;Zn%@姫Iknհ.9:#5m$V-c$eU^~/ϪҞ_!`} jeU۝WF&􏭱W sO>Wls03Ϯ"LfM22 ⾭wTG}ڱ f̎ٳiQ3JUgf4?xK7.34:ӿLh9B'4^])bmi5w-` a Z[GfknkFfѸӫTu޻ܵw=iwoh8Ǫِ;]O_{> ttigtYxޱy7MO?[ʜ2peFBB~iX$ʉlRWN~Ymz?{ N(\Khmܚ#+B;/5ܳȝ;iD=9@~>ܱ]@RgcfN,i(Dc@Q0aH=6NC~9 \7~JY%ߋ+3o P, | UcW3PFtaPC$xF5{BllJ a>q(BXi sIw1,h8v.Njh8M;;6/r;$֫VlԵ|F4;HGm+4uq,:!}!G2>n{B%FΓk6xڪ/y) Ju|'7[d0Z_Cgi"fr@ ɰ=[4p{O؀\䫾~b O='eDd7=Gt< (jjm e*X ``PU_ޫ4=m6g-u4?W$-8ϰӝz J*l2xo"f2<=Bo -O ~{tꮧ&0Z5;W& Kw{zAYCW7ޮLsz4QDa*(Vgh/ޗP#@ZC'oL N˕{Q 0Ix%@Q=jK Cl?BhsiаYa]{f^g2qzM(.tL@,Y|ƿG-),+gyޣj m!p| jNR'W*zAx' ^?^4VSW>F0&yǭ_ĵp #i䝦|ep;ٱg+&i[DmČQ4A1?:F PӁQ+8Ѥipt#3` _>X~\R!lh #2Y@‰eCBףxs6ᠵ`2o:,81$-ZG?o*.d0Գ}es}aƯ<"R*&Qc:y1Hj7#WB0.G ; N[m^.-S(>d*apDNҹh #Dfv)'xB-~4`x>ah 3:u\+"=cM6ӫZwW=z{Q@M, Mǀx`E([f5|^:/lZ7[b?@֔SSf`"Y*IIPĹ&D"]u tڂNgnn~ߡgо}rVQ޺@"L3RQu'ڱ\ڰnKUHm\ݪ`aZvg:N6mE5?pTϓP9AH5\=tæf Z88˝>E}*:v.KSP@r❣<#Cup:c[ 0\+x)#htm|w~{Zq~~~FLɻ<`qә:yZ\"v=pƎ.}G~~{Q9Dbv '°| vr-b\< #yt]9R, k:C= r k7(w>c/=,O v`.~(scO#)K+z?9p>Wh9G챽<3uYI \yq pRk~&O[t#7]P3uX@3ğXb;_5䃟Cetn!mr<ߗȑ벘]`#e8_arL^Fpkp?8adDŋ♿B?z# o1<ۇӎg+z%|}Gc\ȀQߞ|xZ_ɥ{KW}Pׁ6u8B(~,Ž4=w ?v`\@"p!ry@PʆG4&G(E@} HJ/VwP O=C3ZJ~޺(!KLPf}`xc:.'lٱf={XtfA:+LQ=AL ?#/5Պ~ڰjo|7>o_avn,{?OgEۼBqrr7īeBq1}>VNN jJ!b1W1NVRQNic0G̑02dcwt+Q*;bg$I7xivjf03 BH1[>3~;qqfI,bgk׸NVR*:{PجS\&߸zFv'܇䗖Č(a"[fX:vg,'1{3+ m9(zGw14CJD *+WҠ"3v-#}Ap)sUG þEƦHAk4"hj$u׎˱}w܎WXX1@|"EأbH֔gV+~Ϙ94c +W1(;EDpfǃ,ΜVZj4դǼ$5p5 6αn,b09hxY+gbVN4fjaWy`gw: X9r)ZL8|;OH:*MX&M8nW*'1? `*>M5zbC3(TM9*]EV\5΍gemTJTkY]4bw̻UsS2&1sْiB34gVr4CƬZt#t庘ߴ]Wa5cs!plxy[)m:%6yװ͞Atةaӟ]aYޣfxZ!;mda]KPKlo.Ɛ<5T&kWU ^КejP {iZZ16!jVLTͅӹ@&o` 1IZ/eVk#|nUʧ'sy@^2^r :LCkm.vvϼimoV ,+hUk`u88p',Gf7Al>f3oCj >MDJbaKQ4a*}HKs?)&?gٷfɄ(ك;&5p/(i..*%KӴ:h5]Bךp0پSXxL)g Tԩ^!dQ~?+z4;3C"+[}8[^-NYeU'(S }`}zĪVl7؞_ϐn X IDATBosGS=v" l[WfTOOp ^~3^>% j5rE4L;|izMs嚖E/ёa_+,S&aךy`Q*W|eAl? P+|0RЋC5^Ɣ^g7?n^W?i:A 7_5}?ov<Ӹw~ne!lzT*NNOp {q6(l2jnH eyh0'm QIIŠ1 =]`!Hd"gٚ} @ŜB uѠ єE9זc)1idh!**X 'e oDl== N\n=> ޷au= f)q|UA8* n%bPHF qgvX8;0 _]u:}%J饰'i8z-N@:帡?p& 8+4ck*Fp(o {'q:hY蔥$:3f"(󋰓X1}5 be5a1\Pi:kj{JF8"f<f o bN^CpV8f 8g?;7~3jN1DxEt&[8{G>w mBq3tQp aga%}ׇl<FhOȫLZapi.@ixO# 9ݜ 0Ag& v3PmVnk#(@{~;wl9=טN$zŹnA:=L?PM<H=&2'^pݘs_(s(8 ch%_r{^vZF?'Z1 94kZ'ZК%ֈ#;#|y/ZDM $tpg^hԻ蒿 udӴy8%c^&_^ n;3$gƺ˰;za]gmc|}F]5?f4@cs[/_vU>ipx2M@~>s;O}W׿s‹/?mߎ?'i;@E7kSO lT%h .ffQKfڱZ#;,@ ՜!N1C֚w"SgfK>odBkLQW k !T g06g;_WS/>Of̤c- &a$h:bwAj}~n٥"3GZ-O3 ](V"LLfW؉Is=()0爨|}߸4(<Ȇ*BUEATnԍ4 N fQ U8t{C26y̔g3x3g :^̑}sƌCK 9$ VUi[vB/INbldυb\_`vy| %h3`as+[7#2Uc/)DLo)NX"1 wH/;쏸qW~̋f+B|O%06}ʬ٫!$"}:'4y^k+sJg c8R|e*zlAXWxtcYjx sRgU>$Pzg0+1n[<6QȒkVeؗ@6=;Q+Z1}edp2d#h3v&8ɇ:͋a|cZ6Z"3˾.'79p]@#ZR޷.W-{fjzF%26c.|oSXPu` ŰyysΦӋLlcA܂ 3Q=ƪ ^hvj$ m *pAJ"?xm_${dx5鑵}7wq]'A '=\!Ocav)+wm<bχcc)˃N:eUd5F::v;[DQyϗteZ;<>trw MK#;6+rQ!rHA6&,gsAwҼq[{O[].mgǑgʧFs>6Cfq86Íye6~ vA Í6;9/= .++!_滏׃]B,dpjb?&˗u /#p8n쏏U>}97WKjqG݁s/g~y}+_>=b S^ZX<K%>:9_+ \(Gi %>kqIr t-F:W=QPG\;e彼{2"8tRCw!*=,j\056/|*W{uC3ty߱Iś?Nw[v s_縲m"CҐ Qq< Q*Zaoe,}KQ;R9(,A.g5H95) qY:Ǹ!C]4(߆F#~ EIճkX%`O.K12x\^qqd1+{dUu:,*ԔtmQ]6zhN_@JCml8nK8C"+oN^K9C݆RXbWxR ,uIPJ Iuge8+0(d&6d `=ΫFkN-9~qZ0wi 0q%L( ".4ML춭P E2Fgi|?DÁI)fy}IT*bV#a}򤞛zuxWsC;1vװ\È?07m<%s#3PpOVeqe9y{;X!O+4*.bRl!$4 | 7n>fy9nݺo~?dmf#u O<*7sq.n~* ~v߼X@ϸs/} {.TMvuXUcaʯMF4aZ-}e_OPZQW`5cV~?c߃Im֣Ԟ%ti èOB:n{8?vEpzA{{3v n꺐a*PQJ1L [UYW\~7{ wnG~ |1'r[衑6wquLf1Vzok3 Ý V4.3ZI,ff(!r()%U-L|c7𜃉3T^:|^o|[SOc;X宽 Lo>MgVR/`5UTt(jW"xkǟċ՚FRD\ѕlf'% FC(ЩD)8h,#jV Ü d%bmu@t!x|,3؍e&1Lh-`7  Ydc"S+d~[U_>?H~B7T~[J뎩N2].K0B1EXrm4}"A5 x5 L1(cJeBc 4O':NsVsuBi3#>N(j'S;fQAS) <ݺxG`ߏ7{-3 J,f)Dm3i?)^A.~J %l̳@g5WY2ic)iS9s0+_FY"˝pIs%#6As! x+_yD jnրHllv$l Nr]5JPrnȅ"HLw֞ n Lj鄴!q:ޝ`]䴐7ߋx7`y.F8!~i?d{Z||_"w['o{| Գ$6 Ljo|}1@DlsS im}UygڮcB*{ vxfOAi{πӇ` LDŽ!AisDw RIڧ2Zw8:'hk-XM+iP=M[>\62NSѻ()N֘NV(x6\}p(6C"!?]Єj膗/ ̓bSHyß)ϋ~E3H66:$٥hC=u1+c`ŵ /YC9 z@RSӽFӮ@m{) biB)A}@kJؾ“ œvo$PCȓΆa@Ӕݯ-p/wF+:R^ IDATE)x8\ 4b@+c#[CCs0X3 f}(T)4Ĭ8_αH: jك4nkpC3(}axK3'52'Te&"a vg<-v5D=SsaqK@EG!4XxSV__g_+˳.v;ik)wbO!Va:2}lϨ);Y,ә٭w> }|n/m3!U!&\gpؘ$ԥ$) x" .ng`ynF6Z$}jQ4+y~+j3|+J/(^?w|̫d|\}Cq\0oD~uM=Ɲ<ݳPA,`ܦC>,lDeUԥZ1'5kWXQ?2G ()GXK9$K(1NP suBf%ך2y}rmp wi@n%yEP^3"辬QVJqΘ9hj*D*7݃͂^F vt:/IA]c5( 5DŽ|FYr{B]6klj-iA:X5{hVضĮJy/m? 19t̐KEnWAɳEo}n{Ml~~ZvR1w3ZoQٜ%gl7m7\ua[*}jD6nLh꟱R޷}SOZ![ )ZdٓS$*Lwݸ?߀_{\Kas~טx,Ɵ;Ytkx;r1vir@'=/s[CBKܷ:#\#+Х|a!{GYz<3o10z<fl>s<ۯKlo 5n7 %\ޑ.M'.8wK3*(v͸v{8#`9,Y*x,`M\A~1cV<52 Q{`H>:2ű##1Fe̠Ix\ޘͳK)gggV'1s*d=$qUږ,WB#2ZUUu}nuK4 a~EB'x'H @B~h- q?1{|֚33x1"sΩ*BU:kΜ#"#Fmv3ckTDV PedC m[Ժ3ٝƽmEzYAaBN^<m[q9Et܌e%>ωGY},Zk"`ꔼ\J+r*c)|&Ԥѳ7KV:8(k7ǥ@Y RHV&Qe %3mO^k0,g~}8+{}YܧF*G%m!WO |m\؁}#va߁s:y!2}C[W%/%pd,(nF@RR$rwdioE W)f TXsQ+*Ywq`Ǟ TANmdmHcV2βLbZh<얲T"_kn>g ޠMuN XqߺdC<-VJ k(óXxĒNGe^ O8“h襁MVb+׶mŶ6f/9SxRd6xO_]ZS>`TqDJ൞vf,m{1cZAaYi>&~T.]NCc:u0;3\XYOoVPJ> 﫞ŀ[ a~5/=Զz*0#,fc6kiJZ% ]1#s} $W? ?QRW 갠s5;uH?'EGzx zuw8BƻyiA!V-/;x=[ñ,rY!;VBVG Em[i hJ]p|~?W/3,훯-uC?Nj/q՘|ƻ_GKc:^~lŢv3AbV aO?/_~@"{b%E&0S^sN7WAY ]8Lt 8kG1{x|qF)d) 3>D4 ;fbܴF*/"F;_<4ђsmlrsDDaH|6'dڙ :/O ý5̵e uVkyh)}4,9^ىcO> FQ< =ٙ|!Ntȵek,?YNŠx ~]k6JR⻰B4JH5lÃQ R L@6mR O"2QHAU ~נ eAkѐr9cke:?Z& @%Y|SO >rāExʴww)^;!&_\hqxiM6%<(2hgrߥ2,=#_dsJk%w}Cq0. #*^Ѕ'6 ;`mv;_xڹ&Mi۶c|񜠾 I8nm%e:1OokV]=OS(9QMY- 85titFB)<+ޔ!mb%O|jkR9AXh0{G[;N̜(όG|zg/ HYT=w 8e;jhmzyT@J^3H*bhz493JW6uASD9GRFzGTI , lι%H"co -8ڐr%C0e& Of%Yz=ܶ^%c:9pr!g@N\^LFdg á׵:om-Jqo $۳5e~&xڜ%"y;VچV7W4d11*Y gau;MLjĻ9?!p:企 %$BcyLnsAw5^LP,[6dĚmJ.GGmN-:mkؚ 3A ZRFoo eӣYmKGl. wpX" z$0N n< SfA Q/wf1;ܒS8 `Ows@ydA3eyBVDh%G@m R9:e-;-(vN&wޢL `Y`$,Ƚs߹ev3ѹfmkjRP˂R'YXr 4cl>F:#໻p71ܜ}CF6qf981"?Ed1-1;qys4g'ktt c#ڐפƵcсR~BJ>ߖ->ch!md!2{i3tp$:0;VHz!9s6lcSd xp=_+:lח]U#^LȮveq(ۢLr{d n6Q pWE0Gl >z@^3:Sp/x =U cGP\k#k>*n5]s)¨ls58q=zeC>U9I)XE#1UײP1ϥó: 6 avh"<P_v6|Q6ߵ{G;;P֡J@~ Qdk%2եSȇSDaK0{EQu5g>dB{#G;¼ǒIbk\ϸhNNyQCԒUgޛsA80%eXkC_lAu,@(TyzAd"A # cXd-J+h@'_d+m] ~{Aw`)iӶvR\Nx|?Rqz45z 8O8l sbۖ: Ln<a< EMSĨ[{rye]HcetX 3}XHH֡8XIO#m[OiܟefCvo-wA-IXaâg3fCJOiVxw8 }U934 hzx~PFRb<>/_S>9w{ȁ&V_^O҇"K#08kzc pyNjy?p8_W?yz:ǜ3KësN{?H1~.ly ;_zAwP >~{_C09~kP _Fxzuw_fDtL7ojUoqfW9S1\Y٦ĵ^ דanWv?C1@ IDAT݈^oL 8nia_n޾Q@Az.sTp5vc]A'30|qO7:'Çe;ݰ\>bN̘z~aW$.O{>^MJ~fwޞk)NtcT;uC^_疢)zuۘv6A7Z8>>+ǚMqe:&Q-5`?VCW s<|2ORb'R{c4OFtg^㸭#:ݝ?OzV<ݿvckN>2wHZv>dn㭩+=rݏn٤qa6ʊ; ړj}w}L1YB+wߙ)z`wf k\a+Q.=4(vOx}܏+"0X&NT%! u!,SA`*.q~[ s'Ugyn]z[nkŸ|{#nt9#Km?'$ב ʢmkrg&.?ܧr۱oڟZ*QΒ#0+ ? ~)ǻƩQ  ONRqpIبg_>a y'G+|xk(چ!:L)ȆPvi-qۆ' ^ /(aQV\+ @ρ,q4-Owsff6x`M cmY׶\lHZ' ۸QD$'ڟm[q>=BK2וK<,RȞHKL4L`ث7 ;9edY&ہ’6  FZOyRg2oyڑ|,zgeGx3ް^Szȼso}o#sԩ+;=jJrHbq,`\U]U76\.kJ6{NTڕbX=G .3c=]8܋Ar79񮢔~De)d46oTⲮ!3ReO,[}3)R9|+H:6fq*{)l놶 'BXX~걕@D"+(Zԡoг4p:m5@3h{ú85Mb]%]6T=fƟV\OΥlN#R܃{XPvmy\V1ۨ,eAY*ė+R?"3Zs_j%i9WB] H(PlcwϹ^¹ }XD|ce RXBjۊmΩ5/C%EܣfK*i/m630wsںn5#Pd}ɳC>x[W&j)u;˲`]W<>uD%W[' /lTI2W۩)8a4Cϫ5d#}Zd! 1ق=h=J@◫ 00tJV)]4z׶Ÿmn¬C9JU(r\JN [s݅DwIGx[Ae+F kL~#K?-bCn Χ3*qXU<ʭGYJŸ/c߉ ~lRS&L\֧ Qطȟ";vzWrN6ҹ7VjBj%lm=1+WZqX>O_A],_x-6]bs{65u-ှul-Y%}*m=c[/mR~ww5#gx%5\.xe{= G}%޿w | |wx޽on|:Rث>eH[<^:1K@y /?<<1pԭ0Cq!r"}Qv@k/,3q%^cL>,q\p~x|ABK`eroRFbS}Ħ2 ;[)$]Y{ٳg8,w 653~ϞG º.c}z~K;R wp>JiPv[.]=(9K8AXZÉ?a`$p^5h[Oh p$TZrwMA/5/D엿9wwϰ-R=JR xu:n J%<o o2n-cq`:d PM |Eb~kr/ժFsD"$QPgyl`N?Olxt!lv7 8I)z#MFWr`%Wa:x7(I95+V#X(x H39`qdOO^2&8&4"SAڑߴQRmʑ*]@G}.TL T87^:V8bɿkj` Rh#!T M`C? Tۭ Y=ñ!caźO\[ذi,# &!P'__ ݣD 3 .D=1/Ms-rs>ؗ M) e(ÁG6t+%|i :<h12x냓9`8(c3X`sqżf,gԽp&F*70@5'%eZ/> jyfFn'gV=*U.VKa[R ^%gf%hriAdHyGZqˉf KU.z>+-[&P4=̀P=zrW''͏qެA5N>F!spm`++9F7}$H_W`uJ{y-$1(\FdN2O6x9P(nxg2t1=2M ڍ}kX 9J}&-YƼCڗt&1gfU4fDR>0QΞ wM{hwnywE'na}t_6txtTc(c3t%cc?#Ή,jt{öŚATpQB ojd ne59u9N3e> I 񞛶XKh,ʤCZ뺷]f$ b5ʶ9 N\犕̀. ;R"ؑSJJsFJCRGerI0@ 5xnj6>"ftwF @[z&cMJg%qƠH<ѱrzFUTon4rV"[Q9ރ+UfrUɒtTrl+[RNCj-͂/|q6Y :JGmޘpRW&F/&IUA>ͣu5ؿMz:2+۠ gD`&νY>y#uN:6UFg.M{B.8[0Kz}Pz#}#ۧ-~O8k)P48,u&T8Jr 7o9' $){ ,!km+tb~yOXpSH}ɗڂȨw!KЍg4o}gobЙj]V4{BBU5%F*"on%V #28(RX.H&Bf| $H !M*T YC{W!k!rwж)D#4/d#?s?uTEO,XcPlA)=p^T $6mÆ#HG|U<44X= i+</6ɌP~20(clG3#OH>|X1WFVkFxبIzqT4nb?:hlSÛ$Cy;,?黅m--eSDH6j*ca0cNk؀R>);*3*C/e|oömXJP}氭1 n5B\y{slmŶ\u#  _N8qBUoGO[Cۼ{7b؎M{m$CrPP]p~|޶-&w}\H ?*b<sr>6VAl䌾c=kP ::*T<xd` JQ1g4%6uJnvWCVIPM!phIm?_}3nX~5klvwv;q :L7);~qPO.x3c`u2yr>2Wsaכj{1m9{Zn=jOuvk~=Ә3_,Sa7ٯo\>(ӚOL͏®wZf?t1aoqdɊȸ޼__%>l?o x /\̶|8c7'X>Gj;}@vs/n7~7u'mlk2?z{job: 8_d7V`cy"R76dB `BLe &̜+?OTUY9S4AѤ4B-.kǵN< H3SC}LkIhfO}>.GK|x+\3 EZqow2/%NW{ۂ'8`9>O>ūW{ *PLs)Nٵ6fL@մ2J &!KD^5E`uJ瓾 1*y"[x||1 2ws8#zDwp:N!Np~̀8em%RjfF9} Kp*e }W"{`8b>6Ҫ61菴/c";uT}Q)fY~:bhW6~ЕT2T+X蹒T6BgG83,o?}}lަ#*p(M渖˅ش2&[N^> cyT8($ի}ree"٨_Z׾dA!e2`6[ IDATUUR9/e?|:t>Uz :lɽtrfj.xmےSPޱ;1ϣ?^Z5- tu ]%6fr; :Q2 #:pXjg5ɖ:RS$Rt{G%JډؕaTk)djIƻ#,b"Ug1wjwq~. )"x>N7pEµ3Hu(Y p8b"cޅ,pR+d5A}pM"}SJAG\ )5̘U{$JbԸEeR}${ z_߬P_`GJ>HHVҥ.%ohAAw>h*9sU/Zo  .+Sja! ҶL;>@VRiPwde7COh&\7lR-88A+̙WGA S ==N3^z~9^|􀇇<;l3w'xePݔQD1J:Ჭض~%>3~ k<<`8x>E _˟ X̢2a^y۶d 5ya^ܽx#q.mxѷVmΏ,#ǻgV60lѷ ; \w+ =o˶b9 Przqzxmrm=c-^}v`]O +zB'ń$.\݋ 7|5JJAGěxן~/>ZZ<4(놞 ۶/ġI/ x{{p8r˅4cQ|~)@ɠ䮤cM`:i6T9eQi` ̓7*DRx(NMT ;]??B hP`^}B{ںwo=ևe=5% <)0-+DadPѰÓN晆c<3M+ ԽgZ}>BS j5 ]WcQ;Jp͌s-s:*sx*%Pr<4qP#BٹQ,N|hB'Gd'PAi ЇN-:keZN{Hj`/tN151w6w9K,Wua$g#l#_qMp<$RYz:/Dy)ߑC:+tp[ &`uYJu m;r Ds"  ԇTG:9,g3:$4'=0DLr'gEIc:j`3S5罀*u}*YR) l dXa1t(w(lC9:*D ֣AJ>\{ g; 05,%GpYzϽUu(&}3 Prܣ@Cj(ŒA_JYض8(5e9JB"/SS@MDNlЋ;YB%th KemmI'M2ǠCѳ(:4;ע@хܵLS࡛jePxpu}O wPT=!#_+6 Cf6YRpT>nNI= Dy싐.<;w ^1sQԝMc1XqHRKj&W*Р n ?o+=e^IWJ Fhl8P%mU~iNp/lv*;ka?$`2Q WG16y"OԞVbUUd.3 4>eKQ$m|l85Bfj|Qc\Krݧ MN'rv&LRO@. I6r68wC 49E@9GȦc :gL0ý.\A^~Χ!ll4?]͔/bds21A?e ӴmݰmkvKNsNP"bq>i2!@aC;AO1>2@^\@y6ԁc`F"8/ 8mC례Z-:xݔ0e|)7[n9%H9])FxX@8`^ԇXT+jb(a͇?;ڗјo>̙QOg8?{cVFvr\): r,mgkFB{ NG-erY'4PۅΞ@V Ȁx0}k zvyVk(5ܶ ΀tS GeFu=(>q`գ;rV#cQCkvl׶Q=u_~1Fľ2ɱ7aG'D}7V,?^w4iǐN˸i$#v/uEeC%a?0cxG5ɇ!!2ܕu>* {0%"BG62d;k6:^H>ݨԻXSPx(:l.cPUf@dpe bch Os Ǻ9,S7ڰ腸2>nfg+Ep svx>+ @H./dxN,3fP^d]n?@=2{%=콡/m"1 Pt(!g TTbmtRud<nGw5bO5%X#^P^b\ΒJ<uͨT6Tv!W#[ R`m6!`Rv2Cs h٠>#{'{Y۸S}GWSR ܧf |%&_ Cʠz,hăqȊwSExV;6 JAzm|_n?r|9DCA[W<>Ck+Cq ^:aGC1\!낲,8?.ޱ^.xxGKu2-j0t-'Zc <Cڊ.X'ޣJzt\-euۊu=c=匲TbA_}|gP!Z߳Կ)"ݱOQV686\m/`'+mm'<|=[$UYNo[f裰e?t=?㎱ =or RZeWpd5(wϾ#d1{w_5~z{z- ~lօaG>?ÈRZǽGpFn ٰ>/r~Yh6vc{n7uzZ/==g,ݵ.^ë~fXzj/?rT}'ݯ7[My\?ßcz2g ٸ~`w7!ȾAԀ=xt^NYZ{qM:fƮ?wQVVУ_e)0{ru?`?)s9(7^t{ݴ, ā8tgG`NXo>f9?guKo܇sO㿿Z9&yțlYSL*Lno<{|Ƶ;DZ\~!\uP;^~\Wĕ|p;}C(1Zpc 4=?1=uZ)7^h֝O87Mts{={:ٷGc/wv|wLs[w_mz3lWöڴMZGq컧|s }׮0ƛ]弥Wu_;ȇ~[ x M/D wSd9jמSwg?:֘Urfբ%5ꅑH3 {5~?I&-1dHClsA4:ڳɷ]ib>(V>o auCrX3s_)ko1ei9ar{t?ݿ?߄!:=oJ:oeWd@]p׊76Rp(Ʋ*w44zflCéˁ~?WK@SR?]w_7>ǫO> %[ku~/?Cgx/F Y@ S~_yqkW^%ZG;h,멟a02+dp< n?rܻeqkaleY~ЦtʫKp1NUJ^XFoWHϧGK|/׸kV* ʲD9Tkh 3Qpnk0bP|W?{0I:aoxȄQ05HFq਎keq-Rj @99#se@WJkfπ$ף3ӫ=N-EG5F,:==J;Ǖ@WFPBmY(g&< *(Ie6  (D &fmҏ0e6kͳt]T:T{xf,aGYʰ2l[r/ҳֈV,'qQDWTh + a9a97Vm]dt芊C]Z|B z[MK}1>V ,.޽{ce_(eAeFI9r5 q~Y->t AAk-x5eEEF{Afr7VVi,@ѡ" C e>n.. .X/Ώ p#+16Ls`xwVpʬ`cy%z9r:V[nomȩ;͗*1QF ˟ k7LcZu^X&ϧ\Ǝ N{g rH t)F͙9S8Zέ5f+sì##R#+'GFYFZep9?HdHɰ1 jUD6T3: N+3e>-EU C5#̰OғOKF*;̗l{-(ܑ|KS=n _π<{wAer,0q,5¦P-n+Ӊ1~%<#vby_jMH pYK*yoK*tޣ8g|baSzJd{ {_-#&?U/1ceB *Ҡ[Iu2bM6lr F.dxMAGz%)蝘RNiBf Ig!a¤k}e=r9ìbY^Fv7nm wwm[lSb:Yn [lYpXpuzYi/GE|`Y0d/@xɫO`Wxk,x| Jowo?|1Bl @A, y!P1cSfe>ŏ~Wug~z#vmmsxIJKWLqρqj]? òo*vr:qzxׯի7%h& pވϞ]R/x<=-rez>;IV-) nQyXeYp|v^Á=^\Vt_/Q GR~z>{ϧ[<=FN]]{`'1VqJ J GXC9(5qPp(&H7ʯ;.($mlڷ U;}]__>ɧy 3.늯? /~ Q o yG 47zCmK)@$Ccc3(|&, Nnl ҁ ~9 DA1^DLF/2AjYʭON G'tJZXֽÈd%t ;d:FC+ z}5pn$Eq?;b1]z^)2Aa6Up6U @7傠!9meL5g -J/y c/̆LӞ:N@W( '2W?x`GҥAG!~U_G IDATIYgU qTU`p;z/2UpR#F 8Rp'։+K[Skczm(گ{CqnG93-.]x=yDʎ=B  hjG DeWΞ%O_V&*Ws}:3 P6)[ KG#W&xdGQ[$eZ!B lL+(#gL&h t uqQbh &wx`&QOt'( >hC:uRw vJYLV {\՚@"`mqlH-t]W) [񀫬il&g/+ik'@{Z ;+|-sq.9J{a7 %hIcfD 0y6ךh'u쎔z uՎK߼3~PV4ҌHWjA=܀q͟m-U4v-b<*꼷^.ںJl ΖܐiM͉6e&v;ܹ ڰqZ,sܽ{ 6 r,{EewuNcO 7^JA˓%j/Ukf2] 8mnz050ɓSjA,R/nO91*BC KSV0S'^&sR299ǽ̘Xs$X~wnzfeٛ@ ,ԗJ͜ޛ-CbսZh`U^$ziH/)yBmfO =>Rk ,3 &љ6b~ e"!| ^rzkqyh85y2ep&n_BoկVJw]r^'_c|nF? JڮEȅ] i}+7pṗ4C a>CW1ŃVT.q \*h9 h]~: ϋ ?x%a|_{< tƇߏֺ^##y{.끱Lp|%=h~V eɷ: ca<3B1K訏ys3z(Z]M/t/^6ޕNt0fǸr͏+zϛ_t0À8CT钡9x{/2lp>o"9U_{u3pB I2rL xq s>}cP} 5iI1/;(=.j*oO3O["[orP 4ȹCzZ. ` zR̪%Hps?:9ʩ{\do 4Vi|<}6_Zk^UB_fdn F^9P*DZI!QZ1]J3)eBm ;XZ2e"WWȄ?R']}^t׮_fpwס8ecLZpcfgJDlegF7Q3zֲH+Cľ 5$cAF<#%/oaע eu{x3|y-e 2qR"g6 2A"uAW'LS[T\9}فC@ʠ7fC+ :/gd8yRSlXB#T[gJaQl5?8@ўipT"2>=!3R>>l{s/O8roT5i^BsUshˎ(t%YDC1p$w;ԥ$ 01eBЉ3 + U ckO)e'OdK%]Ny|6Gț)Jmbᷧҳ9g(B-0cEF]ȨPKrrv/[Y񴝰9`=B^%%gãt?!j1SQ`wv3,@gAaev{QbU]&G5i1٬]Nq}! ~FmͲŞ;m'~A-K@-ϳ*.+@30M\,,:m'Q e*e h1Sм2`7Sv 64M҄Rg1/sTL01H8>э}$'0{jeeb83zq|-y(/]rX4zROSr>6+ǀ6ݻCy؃@D~ ^/3؝B 1aew4nbJ qV & nK.Ղg$'SKidY%وL$Οx<۲U 8JggRTOS#3kCX| B)i2]7,~uJǐ3K{ Dxsʞp>F@ +X5܃A{鬊'5(^MZU1:YU{ BAj-~N-z4"8ٕJG9el6A@,6q.$MZj1ʔc\؎w{Qt ֫Y+@PEǁ|<V-c'^=b 1)1 :S3e`LAjeSVY6-MPFiё"Fe)jYpc 7*kJi#u(ɫ8uc"f =6IB }4g L,CyCkkFjAFLfFЉ4\" nh6AUDڤp\ΓO аZbv^Fva/R("k"`ju 95@ByF[@bGi0dߜvr$z4mG)ÛZ g!bGmDۼsw9$teRӍcrnSoSPȴ)ӈ?"vl2CP72aX4loT>_%|a`GoۜZJOV#Nxۡlı &l+y6+Pc{Ճ ͑5&F:Ŕ&(?Ӕ0m7@tŔ'c',HKgU) JI#YxbD`}]D;V|4Δ l=ə6u O[)}5ly6&at 㺐ߡϩ+A,TR+,ۭ6,`R`dh+(xѢZ6[(J[P%\(zFm6XIP~9ܑBMWz(4V28!(fZ%-J @8?;~G !%5gej+1;)~Уs/9VA 92+ߟ4uͣ+u=Y2s]k'>ᠮ" cgZ\9l~ @%>C#Q0i!O/>xšt`wZvGgBu jʖMO?2bQN+uM#[ű*%go3\ IDATN$Z&:4IFw.QQ* m丿ᥞ Gֶ;;95jM\ok䚨0˜v96,(%GfM;SBVмZdHҡ(B'GBE'ql?Nf vs#D%usxjf"Q9Vxj۸Wwĩ&Yצf+Ռ$В댶bh).SeQϒI} *Y[j7f[{591' v*JJ8ssHeF9խXU V. ΒAewNwUNwttq=mze3ʵv\bsd:< agLC"`Ʃ*dD,[MrK%PtuJYQo-RU`pGcv9Ge9ث(!J"†R̡gwvU;4ݰ뇄O6P̘දTU'2*,&ю(4qgt&9c4 {&]Tٝ%m:'KwTqfA vRFGTCmAcsP'hAڜeq ;gc]M}l#5dUвz8OTU6(,OCat@R{c.tKu^7R !P^`ߠ C-"(ħie@C+[l5Mꠌ; ]m.hAb?/x3BGwK߸c?ɍ}4њ 泻3k OVk1[Q?;ud*pt6>! A|̼Q_:$Ӄ龿}qGYywȊwės|uj" wn3J|TpΩXesIe2+~ ww?;sMsZliБ=xpGln~!t ދ/?²ZkA5FܸZ;|܇?G{vFV+)xJ߽t+Z>5 ݥ.s9+`1ې/V<ݟ{Hxe䂾 tἬq0퀯>x*ܿvVGֳ<+Q$9SȌ^x7aL[0/ GV<7GǸ+焣8 Kf*$o8~7^tWNX9YKd<F3eވp@={*l8W̢bKb; "$edZL2Gcanvto0\(]eX"b)exߠ4aYG9[)VH*ZNȼAq5, v-3yy7['FAD5h"sWGϞi fY`,ˌ{V4"c }zY n l"v_oʃal ^ieY'_vm-ʸsikY\PYFՖ9,|;,;%uRpA ; ȱ>ʯ'{XΆB=L+v ^1I.BT@d;:>h&8p~<ϱrR*9d8x$Emn`9ի8>>¼[ BEfu7111eyr6W y?3QnL i<622_/ԱZ%ml.KZLy+dgfhY!#X\rJPݻg<F"j%G[l+%ޔVy)m9ny0Jݹ5= Dg"%O 䞁n,2YO:wx/owȇL(UסayժAͦCR֫˟A@JEw4g<\k2/R@9hHSQPQU;u{;uT0gN!lÑ4Ky%/Md=Ga{XVW`3Kft`!ų*m&BbE+ۤ'hs'{^᧬qGs•cL-.tc{V9௚dU}8Vqwpk"(hΉga`HjwW4ʝVRr?B@$82VOXfP19朕<^ &t:gR&o7&#c;hcW~)''6b|.'''r)o¾Wh'DXEhհZ+Wp ݻ[={ob5 &'qGqpr &wo3vg{v+׮k8y*&_ (e?c>agr2,@pf&$2M)xGiH[X.39vas9OU_iEag΢Vr^uޟD< Phq޻sgqmhY0Q7 B]Fae@&7 oѱJzSLcR$lfԼjDžk o ߟ a,F  ~ׯ_1Dw;wZvţ>3nݺ;wijࡇ7, y͛ܳVUܾ}wC=Gy$J[kvwNOOCm6<裘 nݻwWs899͛7ݥ͛PU<쳘9x~~g}vpM|GGGR pzj!0eN֍1h͍71p0U7ɕ1`NFaJJɌV{ H8z5ghKPݡRV0S銵a\&i8)h4:GIM0.w4׈ʉrgU]ç0%rxUx o (wލATWu4,( .VٿQt@] iʁIbaƍ;X5cDIģD?.Zk(tXgoF~K (%`\i5\hdXtBg2@P*bcPA{?!hz!#2dL}ju"d+}5ΠS:)xi}hL> 9qYcԔ^m,ogA;kX[oZ5Ö$xr&f1AAJ`@~R?~~ay q>|}A1%y옐Ns&hSxG)Ԫ Hϻ'8ݬs ukz-\5R^-T{gq}hOJ8rGg8JޣC`ϣӆgPYJfc&PpPȔ¨U:\VJϩYq-K]ߥj>9;eBwT:XoH{u^厃V0"N#VAcg/6;*T _eraϑ0zٝ@Ara6AnP o)(ܑ<;= 8BG+Jđ9B{y `Sw$9]vD.<a$oC.&1Yz!kc/9;@&[,=: mLȓC1ߋ8R hVxm,قϵbW$RG'- \V֨,mNsT@_jf9Y#Q9t;":{hs-72WT:04x4w#3d$plS͌FdR hJyѾ "Y$ \5@R*Lv=  }&Z5}Cٝ$1g/Ov^ $b!x~'__k]Kg?Y|#C>{2ADkjF؟I&Achdz+7,񈍋vw(dp';@tF9Qw;tual;&Ed C̔'FKcj+طk"" `~7ghicJU%D^6y6Բ`ޟcw6YT)8{za 1ٳhٗ!qW(TJf,,G.imȎqYc9pfBɎ_arf1ZSzJ炢;+$•lMtؔԳ3 xIjkbXbS>Z(09cӆD9Ա2Mh"Жh{,PxWj[ K 1s=Jȗ܉%`P-'_UFP]kvHpKAmi Z 6d!JnÊ5hάVhT0?GsyVҐ5 @;O yLIkv- hR u32ZbI7(jONFV5]U6^(nPPZas^Yc]|hCbYfT1*$te4fM4` {фMSl˼ҳDo3oePDSV㹆jyY(eճMI7&:tl/նSA4dD- ȬZ GNݱN1[3,h?k"Ͳ@lZojCni=+gyƲ(eY!qu`Xƙ9cf7GOӷ}R =huL]C8;!E6iUF5xJJ9}ZCG?I͝nhBI}$9zmw=NBq>VJ(R@QLtTj(zErO>c*ʓ9#RKЙ̠ըZ-3k]ɪL/?!6GD1=OġgO` #=uN_"0Vx}jݽPO&l!^eʓe^xʿF݄:3Axg.Ȉ'Q{<ҳEqqr{1!jEd">?wN Mi (V}7>C{ϕqW_SfYڼ_xhw[F-$c#i71=X3AhW\f EwYkzE0%ǁ MɊ" X ^ ?. HC>V&.0-9 IDATL590kž#ժN.{$(sܹ} g(uRHE],)<̻3,*t,)Gx01QIϥ;rJuȣJŲXE,)z{y4\ ˼ [Zis}JV ,hQGYf^2jl]t5W.'#@& <{2nwnNtQHfUXf>&>-̐`76?˼لl|Y(#f=R: 4Ų?)'*lR*u/Ǽr߹{˩~}#Ꭰ6ΈzK[p?F9ç~q]mxO~"eo&5OOg׾?#ܾ}puMo·}۷޽{u^җ[[qzz}snwţ>#|=;'?vF|˷| ~~ nK^oիWqU_>я"x׻ޅ׽uxꩧ|'pM|۷}NOOc駟K^|w|^Wc}{}YUz˿q5|S~_r5WW8==oz6]2av?I:ykbkdOW.jutj|`vpa0 3.A~}{'#s_ 2NtQ m_?,wQq03/Zg~\Q\0۟&5S3bǹPn?a .۸ K~aMW>\9z]:l^LhZ_8:|%n>_OWe[" xe3|v+ٸ(㚬?:,_* w%q5/4zzE/+rh G\;sZ"]Oz%VU\>hcrG:Jpſ<cWSwWru?'p\ϋ?XxZ#/\>>Ͼ֫?iO`yEf 2ָp cxe_}8,[=~nǕ9;.VϽ0KW'^8rgLla/K(*.~=O/wq/]7kuɘ+/ZQ^ʥa˥z%`k[t9褗>g#(<}qO]+]{VȲCw~#܃}eУᡇ·'^~=סBiY ڵkx[ߊįʯtO} ??_rmoÛ&˿X|1\)eX4P< gg N_õ7k8n e.8-s Y͙w6gIyt/塜52{?P HjYSUAFČcϪ2u[akП@P ڔ(Kbgܺn~3 mw;̻sDϴZ֘:{EYfȶ!, 6GWp \#ɗN!B`YeoOҵnH;p =%["O. x$m6Ϣ`0MS=;m)SfU f%T,0ֱ܍5ؙd?lzYFN"6=3$ hda4 s+8RʸHtPr9Ԫ(@ۣ-[dB\ G©ݴ;K"R؛枠N̈́i ^/ΔA'3>6n6GHyb)9*]LNKB1;al0MQ'W8y表Q޼,XgNHY0m6l䌲,8{秧ٲ'+ Z0mp#x5\rI{xޝ{(E1굇="'A޹۷n޽u]Y,˂VcVeFmٿ,LlZ,/+o&&Nz#7yU˼`^y@TKn{BiqخW$\y2$Pto@+)m 3yY޻kU@@!]656E]Ūc'''zr`߳ϘEc5I&)& Q'h˂,C%Wb9 V#!D:?3>O'SO=O~x=>~c 㯻9^]WT^iB/߄ё&z3 j0xdiK+DS&p s4aw*-"tvPP{-Z*rp2ԞI`XXRef$ & bgi>; .^n[97w`ۣ .r+0AL \LC8+P`;|ލn1h<7~M(3+C@@pa#"*btAt^: F 쎬 vsGG3xx.4+ucؕNW6Km!]Qq} %w,PIt p;0q UoIYF9hJqnm9h7*^׾7.ق4fй=H$\Ā/ qeԳ@GO9Aei{ADA ߕAU 6 j}6T(&IAhJE`C('̇,DP%;iƽ7Zt#Mf ܠc֣e)'҃yu1۩S9ւohR4d*.B<4q73eXֹ'妈,"iJ33OUJ)%OX9nN_}Ńz[ԊA3XR\'qHo3NII,wT3 Z-v:9!ŭ"i{K.ge5 dќ9܍gs֠\~0vw LN5Xco&)';,YCSv)]7S_fqkthns.r5}oz]Ĝ~yJHmg /n 9! |:7AX|Vk輯~O!jU6Cm Mz;cz68s#fzp)x'b Mfm&'1Z]gΌEAQ;H #Ex^5SvMSk=d wj漲`J 9Hм ]2[ւdYs^ujK YԀbM{HB. 'u[)YŴb)C 9YFٯPڬC`jy VRJ+L6!e̖&ù nʐm) `r)Xw0 0 Nnkhfݡ"\򑏠Wx'WOy㏇#l:qRO𖷼|;/cx+_µks7 ,S3SԽ[mIY6U5\k覛 "C S P=x!11*ĨM"9h;4Ain>ÜszP5ZofcԨz=>/k,k#CfƷqCW HIKʑfq2!#䶆h-'aݿ$@kk/lQzϪs !2͈HDiCHxv g*^G39Q*Kqy`9W_5FEرbZ4wxVD&I!-)2O'uKi `&es2"IpJa/j)D7"ldPk),v'02k7E VkiM\'0<êSLj`W3)a SI Z, ŒH U!!&G۰ EsPk{Fe+ "T `EiOפO A7 "Cs7$psT-4`4fϒV*pIQJ0Og)4&f u_j4n1]sE.zjAH]ZI fEKjڒAHfkUy %E(JEeڠ%kn{􎢘$AZ{Et5yè#Ԛ]&AZoC1Rh<*@$K;ؖ8k AEW *c xulL;0atA.؁f:L2k]bAoFV]V͖@y/P`Ĩ$ 3kŝwLZְO܇IV;dRCsvd8 ȋ3b` w4d.ܧ"=UX/K$AL43@Ъnz-`W V$9,n /x - m_QNXM+/UfTfd*a’mt$$}ܑ4!:=ӭZc˙@(,[携Vf@b@+z}!L&=0sJ{: * ŁSTQ_,ڡİj^70YlͶ6j9.IzH n`V90pdJSdw X:Q>ثւi{Pbh} 0YU̟5;e[EIZ1# 4~tPR PٜJ~`_oj uKEԪ=I{ƀ]Q0QX L?Qe!!ipxpVO攜fH*U;^ 9:֫#"*iQ@qtqOfHTJsF`H7XBz`>-%*iLz5PAMKr`J$u6Ő dCAlypkQ~jKQ4pٟ+$Z&VW+IPASڛRPTFf5gRD~U0䀠r/DUoe ՜=13c#hX HXsEW =P5N`WpHZ tC ^7k^Q}_ay*Wvüf +k IDATQm2`N삿OSfz=SM ^=k0CEV+OX]GE`66? >{=-:_ ,W}i3s-xKv:d>;av2ffغ偏}^/>8dg_]"j+QM:Hz~-K{\ud ;`WZqfAp֤|)u|_homƒ1}˶]sk:dÞy1Ífoen>2[;]mq>!= g'}'q.ھ;>ݵ=.y։y [V41z}GKg ʼ2ckjEU穗'>޳un*fޒ#[Sq͡0u!wq1Ϸa{ØM|=翗 Nw!4W絧a4t&?ɖ3xt/sgdԯű:W s{g<=ט}diC\b'3yl5lǖx||NNLI+|۪zK~ \IlH!lp2gkk\um2hz١n2{ζ.udvjKH<{ot|ܳߩ_1717G}խ~c2=Gٛ20Y:?׷|~VZM" ت^swunFiJطfda*"Ԩzz' 7x[n50F͖quzr햫_vJde-_wZO,yAX}1=EKx,~f<% d$vvv|/_ƃ>Wx ^|++p큙q5|Ƿ-G?C{pm!3g'x.+SgϞK^Lӄ~_zX*PPIjg X9 7=.\- DHRcT Z֑}2,u}Rwp\XYZԲ$G5HdLwkX:vEpXw SfF1-5!VlV~*]PJd^|+qz*Z=' 鞜>:D)UF@ðcy'Sd!D]y:mBC`sf- 9nI\Yi ^P(#r5*ٽlO6zZztˇ:K)E<`r<A{Bg˸Yg Bf$Ґ$Ť}"퀌ZtޣSxf"`PҨP; d\ cPX835ldJ/AD4$QT\oH U(5,ȒRoggNҽS,u$8b3nbT2:ysht3`ORL8u4qU\&:KK+UTq%ҀG܂!Ql 6@`];(Tnu>C\2jΪIiQ ;;H?+%# ¿ٗWE C_6m,HМ1W Y|4Hn v5 %gXh͸(Y*peᶟFZC*8<phӻ"k!D?5*et=%um4Zx˔닲^I6^3sUJB'OXj: ouf{&j@n8UrRYtfY+5{v}1%,϶3/UJ1Bg*cH i\[GGȾ&mNRLPƌ1BT ܞ"@!/"2c'.!fӉRH5dg4Enq8Z7yJ6^`Ϫ8:S5wU1?7Uk|7z"@d B9O*mbbQ kaUP*TU| FQԀ6tt.ɒa2G bx bHDDJ _GVOFmV*g0)Z]B@}aՏ]K&pϪU:hL`.;ti1!"kr*ӿH}QKOʙ5 It hflԻSRmsH].vΤ*pCΙ;aX A z;OY}AR rX`k#*uӐwv/\Sb\t bݳw>g~gz*]O|r2^xǼ,8rR կ}{wW oy[pw; ˗O} ?S?qq_wwןNB7??… 8<<6=ƈ3gٳ8w7u{_}k888Q-4 7Jd rqׯ(Dk"ɞ*lB'̬+[̌L=ҺV*M%';VYBBv3KR'hMC @  /N%!E 8Rv(`slz.H;[,wك뷉;D@P: 2#Cz(xb6f С4YΝjiHH)gIc4*r& `iOA&{o)epN*6{Gv(AZ`L^n (8&,Z)f T6kK I[2ڇ " ϩXd< I:GU8aGW`W+3tvHR٩npgORdX7yFiD4qCq6Ct>Y ei 盛YJZZ|$ڞ)Oz'w>aҵ3"ɥgkEHʀqQ3R#S9&IF[R)H#,7CJl1?,yIȞ4(,iZI7-mP77W6},yɗW[cPy綄6ö%4z @ck;Yxe2a'=־4ԝIQhGRfKK aș=)BнגVQ(=ိKZeLoC!Pd4yNKi UU)-g(C@PZ$m`VFC\klx+ ͑hc֫joO˞Q9(JJy,Fd}v$Yi*̞- ׻5WK3l 򃹤A\vI@rr}BjY8();Pƭ/qP?eN 8#E+{'S[;KYg5M%?\H]D[%Q16OQ{D}KoVbK Et< artUA{0Pуpײ>&Ȃ Isv@oL7f)KjjQqxYC69fثS[JF}VrT8c(I iRq ($ lFq:*Chֺ)mg1H H߰{Z us)UCl[db[' [Mnfg'Q)(d(٭[OlQjbRc i2 , VC֓ɒTUo S0 Ka@^od:1kBYAe,y~)L9%Q9.+c=Ne`ItՏh{Y "SQxgvQD|H\DVA) yV"UG*P'LJ﹩ m`3f/iX`XbİNH6r@L X٬>d Ⰻ,Z˝%vww΍oj7̇Qq~Ju5Xa^$MrZb,IH@ElĔ63Ag%H0j\dW*+U`?{"C7|oě&<ۿ["j|37W馛/|v-܂jַ|#-Qq>1o//77/} /_ޞ'#^O~y<Ӹ{4JbAd7ǒW{^:=A$ \xo}[ϟy s+ w-m[ z}(-mIQ{Y4<ݍj> jhQ7zJ`e CGjÜPk^hI`E7h +\.ێSQЎ!WfiZc^A_6 #ghSdP )T!6jk%QO _2j1kP›*YvD5L8q8 4ihHx ɍ8!DHx lDC0 9OVYrnhS$DoTC\54 )3n{Hz2θ7DMXo;iLHn rkB 啴lct!u4!rQPr$RN9fI`=ArZ\|2hkkd3y v|`վ,6}H#@ ᛦ+j @UyvWjz8mƷS 2A`'5NR%wwIԮ'꼍8YK{6"'H(lR̚黓bMwM@ά`Ҥbw=Ҧ}.G" \*٬')Zb 'L~@JviDO-H9(G2' W|~ Tbbl9g])k%QUR%% Vk\$* Xmh3"mcHDd]bit|Z뛠Z%KȳsIvcC=CR x]"= QulME@Q$i ;"ĄUݣ fB-5bY>WJTɟSu־Yo K ,%HcbkBZ,#f*kZaֻDF0z4SsFE)}`Bzz=yR-t@cdSC*`Uِd[VFty)2NWkjam~ Y]zvxD+{;O P!H8hSGփ3ۨb3 bmrbTOH Q@em2te`AQvDVk< PaBdw~bS\.5泑_EUmmH>dZ k: g僷 r嗂F7/B8V1mr)]ߔ;?RԵRcDՆ1XlVW,xc"3z-H硆 R) Qd{BB[b'lZY8;pVU Ȝ}/2nr5QPly[K׷ԶUkVVJB=$66L;Y(#JYO&t Aʵ}}LWY;")0d*aV4["S:g@Bb :wU ~St5[^Q5erW.^iUjw) J'a9׀aPجYoJ/f> H|*Gg*9mg5kB@y j%0k(V NSFJL*cӈ"yxY``a  --\S: W^h/Y@ E@quyi3yGTIcHbvʀ07g] Ҥ !n( ]J1YFP.z"( %AQ;;0,YbX,yp _"rt[  >< 'E Yt<>[Y%_sv!~w='TW.ԧ>~Uw~w}71F<#{ַ|#=qY}{~O3_#pe|k^vm뮻X.ǥK0M>}/5~a?=88ё+R ]K){/wy'y*ի[kkfC{>o|-x*WL a{܄9@>>"3nTmW ߬wv;h_qOen8wop};/tzuKiqKE=b ԫEZt`Kq^֟Ђ7FN P5Xﯷ! L:!%{(ç#~g  [P,肷۲=l Gɳ7ikh|}ۘ?}c^19RicZꡆ94EW IDATl\s[O=֩FJpVx2[A"֮}moLǴr_gvyfM8dqWz6m|6ReRݟclQ5@6/M'ն+msLmedve6ہc/Lz\v/jEcv76nGo[޹/\ʫd}-l3mUiq3~ q._Tlw}t&>܌VGqlJ&s6ޯ9W 7<lg$oHqNLg܉lgw@$~f 7H7-] wPnzr}el>$H%^zx.9-u/ax{vg=0 3s{Q~U[D~gG4<+[[7]Nz0ס}edg=rzCl,lWz߬O> ig 3`Ffv#L УmD8j1X ;?zF^uPZ㚹>oNjXޟ:yRZu35>:?核ho(ԏߦVYn 5K?|3x?ߓ 8w5~E/2̔x s=XV3GM7݄~[py\t 7e1[oŗe\|/_Ə؏a\v V~hO</ԩSl@Dx˗/?o7|30^ի~OӸ[1 J)wzq5/c=FA8+،"܅2Ƅo|>XoMN 'ypĀ( L7Q"Íe>>Y-r1 J?Q 2>r*}C[xPK3 gnr)qUIC0N"Zsjw{g"ňqWkTRFG #AJ Uݑ Pt+kȈQJa(!Cْ"EIQjhФ`KB ,Ea)V]܆u0X7Be+h:֪DK ( ::h\?OLIGSK&[f#`j;6 ߦ,UC"YMK7Ja $gf;{ц,'0,w0 闔'E%vby@4!*RAi(z_EI8\=߬ OȠ=c ===.Wk8Zm?&s0,$bfµ˗qp/y ;i5Cj\o_Iޛ 9u I%P&a@[Yso 7t3N9YF}Uys[~kRAG10m֘6k|-s 3vHկ~O=ԳqlAIU߲Fj S~I{X򍩕Mz03ؕ;$* # i\,Iq$gj `v"j4̜|k,f7Uf-hs U j_CU̸-A_)/7):}/Fk*h,@JJ"NKSY1)KbOg Ș5R8b]6 RQIrT#4 j5R#s! +{n%fjCqf,|w0uRRH$R(,AHּSbȥF&M*/ނq;id)mr&R]c1LCLH)pŸ0N#R" irg! / j`ofVA`Nu5HTՊ!DM (M Kc1JKڿAKNI堀PROНIɶ\W6 }TU5>;rBd{3PCͦ_b1V=Yϡ(TEC1/&4_dq 2PDP`T:y=gI`UFƨ( )k|PtW{婍)*擙_  ر. ӴA6`kJ5Aeo # *غ揚f35^\%sQ:DwVK$*g0 p+:>/7j'g]jp]B}\zX'*nlO-Aar@=sK:5s"c8"ۓ[Xp&a~a-G;&Ć|o1jEA;ܱu )_sp[|ՃF &r8GZDlr_B_@P*`]>Hj;YHm~ ~7AzNkCQɺڄk-nm U(3qf Hxqę3g7 |9/~1^ZMGsؚsۜ>SKCB.8jEZ:AhΞ96KxTCị6nϻ^PZspqRF9/jP+“@1"H)I=&XCR:@3S B2m4}CY;]]QݐڂfYؘ+jn<~jN6:#fa-39dCsvEtY#Osai(h"P5 .HP!( JS DDk̮-Gx'P$h |MK-WZ=;G5mH0)GmJ,4U^onƶ^휸pBy6$hh%d^ԳQ aɲ}q\q\ke7R%틮rhIE뱠2'\-)^ A9 k:i`(XFZb&*ImjMjMdE.Ey2 ɖMWCa"fMhohHQ@A) ){GA*AIOyRE rm)St-%,<ygo l ʃHVppgh: io=/)Jm WFlh;֌ȔT,A Pd& b62lƍ4f6ԫ2rP!КC«&ϙ3&TFP*4%`J`iPJ›$1>z4F<# 3Q>.ѥ0* #?P0 `A8ɓB=/;OF,u<2E!~L hܿܝdO ${bޟ(tKsc.%BL{xZ!Gu\0M_1$=$jTE$Hs)EdC[Cr Ԋ:j?PCϧ@r0!2( 6̕Iwnj;X *EvVt> 6 %PTDys Rq--q_4ld~Ja$JBQmhQl>y"r*o=u9j99efdP 2 k[Ms%[k~ks܇SwDGS'"@A(Z!~p( ɜ'l6kB-cUr(*$&ZN-r\)itp%E8.7+%BX Ãڻb}t똦'x/ # .SO=n@agΜʯ__o~ׯ_ǣ>*,ƚ{{{x߈}sv0 Μ97 Ї> q{- wމys׿vn\|y,1FO?qZccaf[|_C=g;ŋgg}lo;^(qޞ_bFCwy8AT'¸=^5ߑF/FfW/؏[=Xv-Ѯ[#zLokH=7$%-i=lw澻9ڳAH\vٖmw5oXo<puOOϯɱ^Z&DW?KMu fwfsa|3x[q=m *O^M[맷΍*锹*4{-7}"¿~C }?EEŕiKӏx[yc{9lnQ\mJt?D-08q4Ӷӷ-J {e"4m]KOXEj617iw=X :3{}=C[|o'{=3X^a:==֬3Ƶ_|m&'A!gK1 ${]|õ6[D|Y^سeg~#;78y_.i*:&Kwk̋wḱcP֯1g >>ݛ~ 9G1_9/nseQWh{Sl3a&Zvfqc IDAT3Iq/-؆Dhvd6H{?|=z?-|ngsɽuc۞g^6?˥W&;Ӓ[woƥ 1[`ztՏU[x1O_dv{,&(pOh6(XO};T`, 3vPT{'mcwSR:\>@" '~AB_Tƪ2<FJ¸ݖuh/! }L_ .;G=7fw'ԫU23>cNFYsnHQz"HoMr_bhp[g)9KXkO E`qr,>iHo˄oww~~gs'AR}+_ۿnw܁O~׿>ZjBbn;‡B FӮq㮻RB)_;;x;߉??ٳgqE<{@D>{BݕRHj| ˝%hͳr?5(y(PPͰ9}SИi7 hJސv林l/͒@ A` h a.8<~W^ѓ2irQ?!Ni@Z.!% v$-ߡ(dՉ AŀH—;b- et(g UVZ檜3ֳo b,*d%FXIAur[fCnkۿ^OS5Gv5K6ScE28S U$V%Dd`KLsVd(VΟ7A"eEJ*C+9Tlq@ۓv_kN:R)  ,iHݝ Ys[P9VDb^nJ զCaJ* !D?tNi@J1mKR2_Γ=2#3<4L8s Ο;!&k)BItYYPG1x@nMq `V +6]ب?BClRKJ_҆lHlRDPRXշO+''r=(Pݣ ^T AUm:0^ "D4^mb~i {>2V8O53y53!C)R;o(JCY2RTeR^Sf@ 0 hal~QJV j|F)X Z+ȿʖMb"j,\$,9Ο"bv[T !VTsCkU&B|Oj; yޙR=Ue QK' &Qizmᷕ^"E27ZݩOa9S'9 r2D*|.H_(E ɕeAij C:?}@ @RVd9'`N3QdhOj!r!Y}T =$U ^*"2w#BHj%!M,QjL%k>QXH8I8Aj\-/٪OgkwI-KL:$Cד"9 ΊRʌab2BꋇPŘ`gXE!wU{L(eҸgPJי=$/[^r7(Z5D:K0ڱhTh:'~+mJ&EqGT־jb^ݦ$OkՊ0R0&OCߑ+c*NC4.ilŢ_`U+R*e~.ѭ0LZk:%AJSŽܒme=%1 U҆N)I SDImhɓ-cժeh`U b;P_}O&[{=qD;c@Z`ũ3g3)"9 }#͈jir5zBE*,F* IpEJN= gq9W}X> {ΝCZx¥SO>}@˥BPBGhFZ 8 vvg3"7@jFx7sb^[oQQpϝ5xZ'` Jl4%bd.x6C0gmg:ĦGD {Z6=gzH+-L {skf[Ѓ HztGy0a;@*{P`%^z*<00.1Q @J>ߒP@1f.9;5::>6DK5ћugjjc*$*n8 c67! Ph`_,˄R$"ĢMZIrg-em~m˪g̹{[E/?HL7" cH4ӄ@ؤe@[Ʀ& 5A_,P㜽Zs6xƜksKď,{{|3CٶqNX[6㮴UgV|i`/ђ)Bzu#~JjK4'@T(,Po,m{HS*~4+I D4=5v`<)Y2c7?7sHnBs6Ep4`Xך} v B؈@Qp>)_Éۆ;3yF$#UeSCH|X@2jtn aVᶽڐ3F}$PIUߤ$0rzVwܚ\(i]%h(FGRMnYcLKT@Sr촆eb3^@2nv]|1|[EVRKb=b#0_Lbl]TTE"0h=4dSM}-HR HSXpx΍sV\(cB>l[ۚLXNo}m$9$gn8?zG İقe? ݠg(@g=`lf>A ʲrNàLhՒ+`R6쎎f_1mTz65M+ePOx3iJn`h&U QƗӮ (R>׃ 4A=<-Z4/1PK6 %i I2FZm?9呈` )5Xʞtz(rZ4p)hɓF6-etۅ>!ݞ/ڮM5/duiPN{9GUYQ% _]WVuʴ zqbMw{7nnOhL2PVQuRBgU(#rJ_FQvSwS/ E8wsFj]ޒ{Y{P:`ۙJnhiCҙ:p$cq i~GֆTCOҰ+7G݄u &`٬w7˺b] d{H(]׵`nbB(g{6Z -.L5 TMÛ&m@*PA@ALRrܶ 7:"5fݍxf0ѣG_u|ůگOO/Od}we=^WJܲe޸x1c=D=ƥr'/oE]tÇquu^z ?안Ç|3_U_%p@([:ΫAuz( Zү>gDko<++)4IF$|FNeep+3pNTtzpM‚:"Hpsk TVS6I熠fdCM.mf* w&,2SigNf~ G46ՕxXW:a$f1K fP9FZC++ -~4| | S[st77Fr,k=y6 ֦Hy0F.tԦk-bbD\3XzBE:>Œ`L7[Cu|D)lڂ8Xh۷iHn=}k,'-0Ղt~()znBt-xPK6l 9QZ@tG5 ZOQuvYPDGך;; ώf4O{T8O6 Z U2IJ&h3PuD3:FQ1C 9 #>x30Ut LAQ`Uia(輤 jڠUd50&ݷw n{6 {~u$O;PVmPrf: Y+ȵ)2;jgN uª>`m.PԐ58]9Ù|iqKD[9z0{p9-n7u0ڼ :H{1TbwMڤ;.*uJGn2:VȔ#~xpd ͭ) *$9tbW7NAj[׊T\!THZd/(W)9ڄLqfH+V.KCT&NM"  TxfmgmöGva?ڝ+P=UeΒLHՆb ܂IS+=TK JzT nӎ 61qǮΌM߃AޟaU{.ϫ j"gObD%uDb'4q3B[P @"ڞvvkOi"3O:ns.Ft&C-;`ARS c=q)jo~w]ϛM`sx#D cyj~CJuAEzt;f1`'Ҫ4UT.~o"!*Kv9$)CCWOO11Z]>Ol{bcz3ZMJ*]~@Gg)gOUzuTg6rg5rrZxo֒n+պؘv`WOVuE9qX<~7HѴ$h lM;ohTwO"nydA`v,ւ Ǐ 4Mnj]c_ZPN7yŲĠHf[_DӱP[&rГ,Xzϥb}Tkh~:b]OPkZ*7N|+(![Z՚i4POpN&-wS%*9S_>~?g?Ɨk~'Z+Rp }{ܺ5'H/ek=~~hPG6?mQr۰yֳOTF}hw(StiHlB7Cm&cTЋo^<۹!Dd(ycw>?CI^1ycRl{gsw.ldnud}oX_k>7C}ߍ BѠ'oJyr6Sq7k=y'ݼ܀Q@cٌ2;Llǹ#ڬ`H9&߱K 1>Pp:tYu̟q_O`\с =Oy#gvˁ1XM޶3#i#=8Cv~w|D\y9FՍJg q2]?q/ X~ap:r v Yq ?y b+WڜOܞއA`~ֺ8ȃٙ u:>ߵ!o;ƚ2.>:<_;g7f|"iKcx;o;WqmOw6^T=[A~on'(Nӹ ܱóo;9=L_w.7s33Q/,q}tO65F e]goi ա,\mws$VͳIKxj1t˸:hVz>^"|___W~W><=Usݻwt/n㜾SZĐG>[o=<Ǻx7?xC0hso }kԧ>OWO^)%ZFbx2Ë{𒕹Ө$;sM!l(!Jtic<Ӟ&/է]i;jkhy&~ 4gkp[!zevtgK,  g.1 IDATO~F !0A5^u8zZ+^dk7v}1NU 9/䈚Z=bEc:gf+2<_ ldC кz*Ckwjqe6Y^=+SPWE 1J'hMRЄ~,c{AdH턄V9TTL`/eiZX8sQP5TYѻ{Мz;Y2keIް9Y_ڬRG;W Khyd#д`ٛ)}D3@]"Fm5*9]e i%&&$Ank TDػvR-+ʺyY뺆d)d=zo' իтjk8Ny߃SA1ؑ-.}ypȪF[=L/.p-8hNʻudcU1;~(̞a4dY,>FZ^H*+c mUzxC0KP/ `5 o,^j>,){xO6:fkcie}hi~aكѵQ? @Ig5羮@,H{.s+j)?-yron´a%<'O#kzr^|W{$@;x7p8iƽ^~^w-,ǃW~=@zXt0~>.̻ݿ| /4Mz^cPYײ,?q|k_úxއ|#_ X<} GFnwc0xO~89GGя~7['"DJ)8o0pss:")H|4j`xq9#!irz{4 6L1&/BdK jy~9km5hbB%eO`)N0zvUcr@Re rR5RAS<}$2)gLdD܃c6 ]yӑ|b U2g=lgAqם_4*fΥqX3U/wvsX~d>IB^ʓhyd 2ZvѸHIP@^AES;C|М+[COh9-"Q7[1cοrt9'n+,KǓ%ﻈ!2J^c'A6*SA"BF6h#~]?MѤ!5?LYP@mƵotFKm,ƯJ1ly$y,qJ=8ԓJJJz۸LIqerK`Ct(whm& D8PY)ˀ5g1l2pHxYsOdy, QKɰNx= qQ/{;dAN_3>RWHQ̻,ў`b.%;CxՂZ= >EPJkvDfŝVkqfx6~uFiYQKK)f}bͿCP8杼Q*n,;DR*TQR \ v2̉~<j2$Ln}mTI@ $z)I  EI6OJ ip*AdMpq5BZRP'1od2Fa:lAn[61 l&7Pi6pgo9em {P:؀RȯB=jV6(eEULRihHH˓ O)gym(Zsqʞ,q}Sn<0Ě>;}'Rۍz|jJK-J;3$ }+kjkEBFd\{ vB6lu$=,YYO6#"9Qv[qM!o&^94MfMg>S;AWD!C4a1; EYS)tz_Q77MO r9h]ά=4C3۵Vnm 3nkLy;J%B&Zcfb&@MX~#8lF9!Lc:2! I|svӄ8 2Mfcp4/ijmI|> PRjE^ONwb9%*Q|qR% eǔZ\BՀQ(֕ I{OB/xk(8%'䤘2Zs\@~м64)jM-6YR([yʲ'"_ꋕΩX A.fdUmKD|SӧOo?>_b|%Y~*i£G{{g>Ox7?>HhI,x>Ot:?A_5/ 2p{2ꫯ~KKx?<~'o~=^'> +Ї>~wsۮ֚9~MBK7n]e9x}.t+ynSP[{7lݐ Ar/AXA f%h5B$ E*.'ɩ$MMƈ4 73HXN&S #HǛ7׸~iAWpl`Uw1GIزh)hˊ>ӼwԬɨߡ%CHNh*`Ý(h̙%?Ds'3f`# HrY(l{!"A"xO#*$%:g$ {ʺ3^Vs y`xX88 ]JJ gs7'3td+UxJ̀驔*T h3<P˩ơM s]@hyxߍQsϏpS LC!@ImPF@e1]j.ָ\r1 8:S5g2grR9RɃ>VVKrT$hjk].J]'bf78h sJ*"8xJK, đkphǠ=JZeS=C級P,ٛ?!yϓ;Jl.V&R1xXJV‰G =49ّbZ N)%)QQamHEQ+ {7zO|#Asn2@ҼGM)&l^aT't\u:cb %ؙVXE&"I$Hs.!ѩHRom=ϫ ՄRR}nI;]<φ=jʐ$d8Lts+0,#>g `]Rh" eJSƸy§\O8eAP۹M.'b]hXu &TUԪX\[-bg6k.= k7Y#hIGT?d" PǓJ*4le1z;;WoU@OVMr6gի e Ql6u[4 h )`7VtFg?oߏ \t]vvŠ>1\^^ӧ?|_~M> 6sBGZՐY/| ܻw>ooѣG> `Kyq8? x!7+ ~]W|_ǏȏlϨ*ow~w_Wggx/&ݻ(~g777W/}K?mZk(Ct%nnp~j/Gq4Q6&)Nw[nsmp~}OpcCxNu1e9ED'fz|C3^!G7{H5}nm>8~W}z]lΞx{ {6&5&o_:>l,u~zkxo@ufJ zQGd5gWʂ fOv9?= pdsxY=uo~Cr&HPаb`z7y'Kǹд/E6Ϸngo >og+>d_ c$k CCp-z<gz{C̿ks~nlS7)gg65Gҿ{%sd` &dp$%m n^ l;q\xvXgSDE r<&$ǭ}76031v>^ҳ_o^7~^bzdB?)6{|Fy#\Dn1^|rq| j0J"?j3B.s_wzlKr6Fgsgw`ރnLոw݋t70歰Cb+;bwnbkpK'uw>nuY7oSghӡ/?şk6_U&hWmm_̾Y~Kc=w?GSurv^w6u]Ĺ$H7-}>k^m`crEh$A{M1Yk An䭌fljgk9Ǵe*|}35]9bllA_ tnG_D3P{xo)}R09eJkJ'L'rL#8w=$ y^x.O'3䦷˲9T@%unap=h5uͦ@mXO'G.!r :¸=<&g&Gv1ܜѹv8q^Zf@+ɤQPfk]a%a4b'wOqBlB .+q=Jxon"8OEs~$.wXb$&ODBb]srҼds`e^RsBM/`9мD֨j);zŐJ/t0:6.d4%\\\`rWʊe9eǴ]l~5Ld-bpg0ȹN)aw=$O=t4ZAGIzim YReW2qQn}0dS_^\ 8Vj4OOk?+m@BEչaUS5f@ iah''}a2,{ 3*WʌhS@{Lî  IDAT9]g-G;g4U^{lCVz%PME}e|ҭfNfܖW߫u[*kGAA2eY`9M!teky$U[U )={OQ.5r 꺔:ntSN^b=%nl2EM$EN1o 9O^!η\ɹbhnkH`[3DV=KAg^ i˔'ף50$=UoH @Ř 5jA4Gvbƕڣ{ 9(MNAutCzrb2_Qkͻ=r3I=z+Xa8T~o0 LOX_JiE8ރX}͑ѤQiiBY/(m5&M)c}VUyކ}K`Gr*}/4a ׆AFݕaEf|䏦0 AWÁ/͢){|Lގm%(#X^r߃" nKs\Ƙwk!k^1%ܻ(tȋY+ L$Ʉ8_;sBйb""0^/ og '"9m]=YNN ~b4އ1Ǖst<|8_"'A-'ji7UǃּQwX?#)T7N$fg!D)<,e$K"AԄnֵ!#NӔh$|TUH69QB=0nǢϧk i-eT3&w3D2J]PZCQkMBhgZ Vo&eνэ,˂zSPƲIxs/A@[ltDH T!tʠ6,Χg92}_=[kJz$Y(i6H7D.uL:R buJNmzW;1RJ?sΨś?}R*Xg&2QoMQϯ=TuIJ(@"x드'9d5YPqwgr9]Ag|fO)/"_&Tj1J\+=;&} xfy/r;ݐyvӋNfiD|YҸ*+7Un6N5MSG1q_'O@0k~sa9 #7wW謭=Ɯ'd7lp_ALik@2*CT6 ;xQO%9o􃙼G4dcLR 謪Hg-C`m.-<4+P ,BZ-P lgPr9Ir[TA(ڦOOy?UdW'F;={PAWT!vs^7;[6hP#7͟ՃJ:}ښ~)PLYFQ1ibq8hfH@&cIL F_(@\Ϝ=&Vl{G'O˃,ړzG/%PF[3lӣL(Zuuа~Dn#QUi8T$K9OۄReuebhq0mkNޑ棒^xz.cE(RR91QJ_fϽq)@[Zq>$;H[҄|sdI~ho`6yȭ");|Oo*IB)6vͶkYr$4yV,hSk3}P`~זxx+f7rAd[Yb7&!*Qk!{SaQ?3 zVZz0zq|7Enİ= sFtT8\?œv(F  W(9a]GDZ[oHapd#:j#]¨"99<7l LB@%ogѺq:x\XWsd֒ rD1+lsQIasFf %?r9ĺqZx Jsob/:TGin,ӹ@ltOaҲ ]Ʌ&@kkqħq 8'M溰Ww""`*"Ȥ玟XP3,,uuӄ&-9Z0C54 DŽAO[O-fFǃSMGlBCh5 I *k[3e9k{-ƣ:R8MJTłd[1DEOZAq#zL9uķ}f;t{#[ham*-Ad=fH3{3=~Pojʗ!Hx_QT)`nWP{J2=߱Ixu#I'V#،g[ X 0WB9u;lO0f6Y%gKfدř,ńj3`E[aoi?kVԎ5C y~gg}$RW8t)3dg:u$I{5]9bL3o^'>]V+R|n۳fT>uϿuK9n!pXN7n6N#'SF=>ܵvN#: "-o")g{;nq_w>~BNDYcLMtߟ?lld26M -gnK}Z1Q7 n+אs}֙k3FUܱ׎+lJ@@ygߖ۟Sw|l+N1.8.ݮl)e!_d vշ;W:`sx;FqNN⿟+t|GVdhValT6\:%gxl?I̭ Ĺlt59v~Dury8˱y{>:\NܵpgD0pA&sWuۮ,]sp n-]v1ml/'6G+/|$KeGݾ odibՒSGڌ}#OΫWLVa<ϖ_*:8>UV4ݕSN{tdm`-p_F:n)e&0~svvow[)׷ms_>U&=1&X9wzGbHڟL`>ǭAe⒗1sN,PT*kÿk2~pRJ.$̅sJ2("enx42tYB`l8"ܾ/"у֗JB *emB SH-$a5` JQ.^U|;q:F)ry` nJ'M V:AU!Ypy WΝ|펌\^ ֗NP,g / &`%Kn qI5Vh9h:O5y&;QM@wf3 O?pڊWfdC]h/ʇсW]"LhqŠ9xmK'G:tΘw*spuuK0*,y9'RN8ΕJ kk!&+'mHAkfkU;ҍJh̑䅝m^\\`wS{;o`wVQb(?Ū@ VVquc~*'LSI4mX}hDm Е?+e'Gfʽ|Xddק))c7;Ge4C&G늕G󦛼tY m5c1MV QdӯA m!OӆuY!ji8-'zB+ZuQӪ-Q֠muuM/7m@c=GL7zpݒs6ZS42ͩ©Hv08E9%$5$aG]nsI;pleiգK91tTl/~WU=`/]!rw*R1ڴ {FgL A bh{@XvWH:'GKZ9\|-Rbj03;$ypȐiL&”ԹJښqQ2h˒ї~SĎ|#MPNE|[k\Rgavx<ߣc+>#ﵸs0ͩ\Z dMY0mCUL&&ivmRj2{z byU=\ۤ{R(S%堣<,+Hsd IheYŪ&SB%.S\zCv!pQ*8r۲VԺiA`D[ś:~5 l+6!ǽ֜hq^v0"TCxQ-+IǙ7 <ǭ u~c/ yBfA9C*=y:u1π9uV|t- RF'D`ANAYteLqSv;DQҬrNf I C3ߣtХ\Ґ@pӄ$Tqg'rUA^3 Ab[/GhkĀga V)dnc"ݨr Cl)ϙ|圱D `ҧm]GJ|VG87/y8D/ Ե,+ O<ӛǐ,x˯}@n<.y½qzZp8в{Nj}/^|ܿj'ooO=FMs} = Z@Wc,Rt֒zKlTf` +'6xm(Nq'v '8U:`XhP#$AaR8jNEc%Cy[:U 4r(PrsFv`L-f†l`*6xEk((V3[ḽ*{RZqs fm+u@LECClQ+qE #vOmUqjTWFon%t|QpKDHRDoनC0Ҟ=wQ aw(9%ԣ#\.(R+Vk $,_d%]}Z a?ΡSj/ .j @@f Rzl͙kV2zLp1!ewC3Ӑ%3'z0œFQ|=# ]jc6եd9@a/DVeY ATԅѼ88C{/r12!GWV]4mBBE.Йf`<01Fg(m#H-xeٸ*de|W=Tf23W*%ǣo {Y)9Hm5Q"ρ:Σa*^.xC6lw W ݗ?r?^ fնKRCƾC82h"[GPފbv!3Q i9h_ҕ mr+6|sm"cr|a<`g , Y0i5 ҃0TFBszŸ[XsNuh訙3cOqor5θ][ 7 vRto#qDyLyʬ 1S 9W9~Y64z.l y8{Aȼ <@ LJo a%a1d_:YwY @pc?aM}QegE+r 6.2dj7g_[C'>zK:#1D@|\kK63-{_t5#0Y>n+8+RDOw$#1jOwɤ .{*Wzc 3oٌ9lEfoO3L7EXי%[(2Q1v@CgWFi%7ĊLg@=gjA~n/J!$*Jcm A:{=י=z6ɟ;%|DcdVp[s~k큦V ٣k8߾| v?c=ހa87|33ׯx{{Ck wfV7@bUX%?}#_i_<^rǁ?x<޾S l Og\l wM<F1UƊ}c@4-/?nv۱np8^ׯhuVfzG$`|o% pUR>wUazоwƽo@x>J e{3j`ϪƂrq¬+$..Z?P` 掂Am'Zk  3Uv3 Lbig #m1ЊPZ=_x 6Z+ G?-g0N|C@Y\O[ỵ 剾ȿ\\_S5,|a n:p> ?5[ot$ֲ\o>]>%3)#0Ӑg=xGj5FOE?(fZ DB~R#Jq#NۓZ\r̟uQ]tDYe&m]w|~ZEVcpBshO?x<h!3V9ހȀO>| ]ˣ9uik~[-tvyg@d鿯?">wY}9N^9ed&ӳ߲?*ٺ X^w~]uսcsυ,%;Z >?{/u=~[>xl'4*c˫ϗb%!u?h]b>3E1{벾kvJ -x_ژ\eq?Ӯz@&\& sa [p[8?_>kݼ?Xm+:OkީzE8/Xɲ'# _~ Xn`;Uu8g>q>ww &fp~nXS\Us]/ mhzcRhxc|9S ] @T\tK؛1z+Js=|?i{ZJ12H52WꆺI '֓i諺HZ)H`*?~_ y ]I 9PeDWt&2L.! ͤj9Y 䜕Ɂ5ٲo-3 Keq+& _ϕJ[[ڑ˞o.oјܙ.J#"*{>X?g)f\-uf)f-K1=0dQ8~gM//?U7 ` ; P#@a7ۍȠs`Ɉ2hI#uK߬f~n_;-~ix%*+p4u~m!xYD^m*FwQ!ێo?oA٤ø*^M#3#!Ss7KogSV2}lf=YV<ooo8σeUA#EѓDzn*r$wď?~/ 6R;0/Z"5ѭ\S J^;Kgq o}$-=\e}4D(c08D`ߍaVܶ+hVodZl)9ہq:Se{ ۶㦽UV&ySŀ!T)2`fY?o.>Ɨ/?%.EqY* e/J]*Jo0C*_ g; ^ߝ҇?ciAb{dCBY,tXѴUAHYuޡl9_i2S֤:l5Y0 CB4n'.)x1(n n^6 shx3ݗN~*Zdִ]hG}-nMvMR*Wa0!yudp_~_~x|BuS<;]*evˍGC VUɌLA 7HESjml_ @:XL>37 .OQ~ =3ߣ?LvRaITه-{8 5ݚO.{425aɧJ{l"` ۾qJ\N ^\ ̆|EV1P@4qD4 %//׿+iGhaă|OQOPm*b/0 g b1nwE*#IzK %"E[24k@tP753q9tǼqÈ[եG&,K4 HL5J@w~ cp'~N2FF r 1)aՔ',Qsck_0O?Wڪv'9,AZȁ( hc5"rCxH\<sQXe4H&J!Qc<}{8osX9tĪ` h|<.wYgqlmGHIy5lG7c\ jٔb-Vh1"f&,>}L57'67>/侏zԒ;iT<]eOv) GT\ɉw:[p P?J?σA72Kiqt;x̝hfjf R7EprTmP )|@`~ r]M3`kB.?}M&ny zI=HcR^8UBB) xf3(h%{ڴSgL;:a1+zґIP\4 ek\;/!ZP02%]|mL +%(Vp5s޵L>`똣Shsg(ik D@lccO!}aVao |LiLDƵd֨(:ʪ IDATMjhbCYqnAz3l~c N?0c ({r鷴HR)3L, h+ "f7-稉R^ "eDˀM MgJ)pcP[Ƕ?.ցR*|{LYKM]b1`X(œ+hR,Ley<IxDљ!*u tGA DRaQ}CUlV0ΎqPh5l ud^Q8Q Ci$ngp7|1S֤OB2me&R+lW1t-t47 hb{n)}|JO\1CcMCcoaaf8LM\\r.Ex57.uÀpw%B]Ȇd`Tʙ#Ï! MV#6l0}8Yh5JR8P\DoZ4pUƩG>7}Q+W|1 (OBwtF:^gF|`uav{a1g;|(`m̫bafFvc2ҢR?95E!jt؍aV =3x0CFm2d8CgTy%"KphY7~&`SlJ+C:E7bh<2p <4:_~̖aBY \8[Y]:#EA"{!Vc/O# R xj #itݢ2e@gta?;U$:`*g_eQ BCdܽ=< %z_9yz|ɿ|6#xO@pO[ϓ`V9`zG5tR_1pk 92ofwq-?z;)'!hr"YNŠ<2h C{Uj6z);IoƏuh ?PTL&Yﭳșm :q/2@}2ȣ li~g\uDu{|ZSyf l9RD>qvjs}F?uvG ,UM;u1L:8sk1 esv[=Umx[ ܡL2{ӱ-(a:738`q_Jh<fI,ʾC&8aQfm81zěY.. sG7r?1`,h/v,Rߏ1; AQ@Ѭ`9gCkte o y4ʃ{ڮ/q3Jd{ڒ@9^fi*c]+Lk;3sy Dڬ0sg!4C{lA~vs 1*"kvphp٩)KY91hF{VVhs@ÆNZJ;Bg (4o2L6uEt$gS:fWvP?4k؟M {shUm؊1{c;* ?'rcӆ/;W?я rL񣒸ikKqt Rnh EBY}?谂vl,b<`"r~8?)}F;Dg=wG/r//sQ g>Z}t=cbnn0XN_ SvLu8H߯mب϶x}VZmz^`̮ٯ"3ܟ.v9^˟W}CgKy䙗?n3Sv*m}m5R'W{dUene_|}'y/aO> =xyE;1_+4eޟM0yuWAfj!"ayj篇ȿw\o~o=?Z<ٙp;n7ʄ6F8~q>EP6.FJa|}S+y<?k2~~=`FNMh_[|ߒVeT)Cr{cfؘS91LɡqCVy4'TYݳh1fUG)ȘNn203CG,+>Ў7O?v)VyaVկoWai?;c*{^&?f#nbm SFPг$U@*{(x}W<83p=if)cQNV\l2"N{2J툨8έngu p+KJ<dXd˘j@pV*H&xgXqZibֲ rf}g)i-7Ǒv#'}# s73.uTWGϝٻRn#+X2&(A,p$:4Q}L]yRȜ 轪g6+uI#1K):_,0aqf%EWd¢A}=3h'e-ir־Agt ԙ<ihm(X%3ٓgf Fz"'n)R`kozVF3V܄̠L~65)/9p4 >t#٭*eK&l0ƣ zh3阖= BG)= YT SOM'۾~mx=O{ b I{b&'15F'21l.{Հ"Ccge'0h0:Rvqo)`(蛋7uG-GGr(@k݀ŠvwCٍLyVw*A ^^^p{${gq+X_*n//ضFkz W'+o/%ͳj)j"3&>4Gȿ#Dk@R-ÿIy (LJE9,&$Dψ28t9ߏy, `E;AV \W>8 1q,m4Qk)&ijRD0nZ؇^;;00 uGfrqSX\$W(Ʉg9k\ \`Fܫ*ࠥ ]- o[PCD s!O T y2Y*VA dx* * N]o7luJP*ܻ[*0 hiwR9N9ic|`)"$ LjִvbkajrYF呗@ Jp?ecPϱJ*X*5+ܡƓ@(Ւ2NKO,q4 A`AštOnwe0+*@t AAమ@<^C#bf!W~57鋠0et/EIN5j zz؂ zGWYe)3DvM@suɳ-=}Rz)`Rr\GV /D8}GOݼct"B*.94!yM4 d>5@..Q""Ke+lf,(:p ʋB ?Jā&ddX¨b&S 0F2Gؤ_PO#{/aӼfK+/4=f0&|wlxdnap=@ش3b]~R,/u+QDq,@i}&Ւ Jn`, Dk>#e>K>=Ӗ/0m& Q&12AސYmddV4֖6]ޡb]zIbsH ABݸK-C~ĴWR?/i]L]s _`f,!Ȅ#%4%vuM ZGl{kiVoSԏTN;AѶooo<牪}dm` ~˽hs^*RـR0{V="rG; S\jݰ”VRoc8Nd#㍁HQ[FÜ}/sJel>o}AXtȕ1IEm@DLێv^z:lbg;6|hmPwWxlZ76RP2N0٧l[f v\k-[n 8޸?0̙3z!.jU_a?W0'BNI"0zZ?xGS%[,0.JNqN o8 -K!K)Ff1px݀'/)P'8{G@7 o_>vl  Lsfḙ(YS՛WXx2 20NуciA=ľ@DY1 bcө[&P"0\HGn0:W|<hhB;)KJ+o521؈SNJdgVGo^# mm[ZeސH'938Ș8+t!7<ofy"'nx 5b ]Ƅ@;hȏV9h!C\? ̔%8bY| ͪ8 PVj;0x@33|GӀz >P۶Z1h 8Ncp7:!ynagqYZm8^YÉl6=T :u޺e@bLh!GkJ)".q=F*EX)z?Q47 :*L.{kJW0+<@0 ndr|/8a.y])g 6?mIaF.'ɣ\;XǾ_gE ,⚇FF;3s[)C!qNpEΔ!fE`PYNr2z["s`Vs=1WGyT bSq1ϖ>p;q&et1589a{jBO9=r\bV*WK8PƜR،;u68gPN ቬ09ɪN]s*Z !ޫMT ߽̆:m %hNg(u,m0poʢfu`D MYdE;@ y36O)9HmU=*CeYY26_ϗq+#"p;]V>۔qM6V^O*Yxc5@{~&88 ?)Yڰ)^m%˸Az_+/ߠOx}ŠqhG~Q@;x{}ŗ/_Td^gO>GhjV6:2XhLv>䣖BISz*ϞY32PX]\Tپ' F3A{G?O<|E;p>0GcY4䟟h3`ϏʚУ"t %GFiUjeB#VX\KHJ!Db8+0Gi#VMZ1S'1R6 ۛ`E|sk`&.~}XTDk>$)</`# '_75S% /TVۏw)pJH 4 |krU/ӣY832ffA|<2B_]7{_;XxRl\0[9u_>Qj@.g2d@~!JrߩçNMm#3"pDiHxV }t7:}6~3?hA9Ӊ-{ iLe`!/gV?{eWGms˶Wli_p='/&K-WBy2ǒ_uV[#]G!|˯mX#I]A9a,{ggec\~V|Kue3g`0AEvWꠏdz6O44vݗ 8(exQ03hg28U}0 IZtɔs]sR"{ ov6w޴m?jtS<"':h g(s"4??b΅ڰsTpW~24cg~Yhc#l&O8"0y=Y>2Ϋ~?0o <.h뙻Lr<ӦJ6g~+0YHg,iCOkgΣMmꡟ;`I,yc/z?|jՋ,ƬzSq#n#MҸfޖk筱}~ζq~$W>gjs1GN7ic~-v\eFJnL =NE>Zu?Xd L[PEY>̽A~;ςH !KcyM}jSoBm<0{,U瑔k9O/Ɠ.5? ;m(:1qYsj͟_ֱ/5G4GMe٣TȦ6lKv_s-s]ʾY>E6@k >>N $قTաom'G`)Ypv2Cx}翶 q}2!J1eͷo>'g10r2(5ȭQD9\Y,$fbԅ/\dFcq .eM]1:m|i" .yxzTw?wg|2y'J߱wx`g"2esX+V9Q4A[9Y:%m@0ԑaȾ;X=_ .*u|*%mKQ{5k-9cCyYX@8mwE*}OnVf?"D3\+kȜ2MhF9 twqR@D~|SUc,Q; M+hCFUfs)S:BY9n0lt9X"1cmQWǭ+;Ygvm,L%aRZvqDZPh,oY40pVW6QȁCt3H]<ܧ@T:T:Tb Y M++(3o՟V+mp?PXl Rʶ/0_Ryjm<ǁ$Luw A8@7eQ|OY\*J%݊llۊ=jÒ7N&Q FscYjĠʼn*=ays]Xi&VY͡ >yΌLxUGހ*0h{``gʵ,M}*ʾ~핕ægbOpyP8|Vս"oHZ1Y{yϧ׶5߰|~ o7x)ݿŷ%/b=^ϟ9b63u⒇P v0uvA;YUx9Sq"NՏg/P~ξ:cw; ^pmج8gԁ]lꏙ0E%`qo?__Uf "{L{ҾՍɢ^>:U'N;^zW~yh FwNCpԽb(ZTC[~^t%޽uRF`WBZA;Ynu۶ ꈐgs'Ioퟏ=8IП" |Aw4ƉgQj*П0{ar#2t-8LQ rwҀ7|_e"W0 jҬEJFx̺Fgб'0s:Et EKcQs, ^i #e&@ qq8ix6l 2VTB<m˒97NsdsR5G8xnlYM~%q{˥N|pD):ͩ-&|(rFzU8B4%:p޷ DY) v{|d vgw1$(A+Msp0#`Lӽfm4 ށ>AEj< !AB80v1C5 S#|z\䄍L^]x&S۽5d-c͍gԬ%lx|E{8x3JEݨQzA%ٰՍ m# pR:n6߫n29P@&=v:TCX̖>P**(n|v_]Tm39j\O#BTCvɗ1NSK`[Χ}RKmC;F5QWY$f(R.[3=t(ɦ(xj@UXﰪ: ! ~O57f_mY$Zjfj FoL ahΊsq.RU'ofjz]8c=$~:0er(%sekN .ƪ I$m z0PU[ 5iW&e+vP݊RVj4mA5,|hZH7?? kT@Ȇc$ x!iv0} ð0` D,HF2AB߬NnX"~2r"!&0kxtGJ&YӝB3|:`I\k#~9x}y Ǿs(StsJFkhɜR1*`<^eĿ+`>"[t$ Qpy+,`: ȝ^b(XTh8ݐu k#h 5?7GOԫ$[)z?Ђ ͸졮.18T99G=F?k2s 2g%&ҮZnq xoR-6&ԺoShaRJ]_; |ܜwߵ)|/b he df=\0qߘo/xʡПK_ȩ` V;Z|bC,dg (le ;nzgd ۆ 塡ʙd RE (ě-/>u $^԰݊Ǯ۱F=7vEuRȌ>رnŠΠ9OX;Z?Lj;Z}g,wvxLIR %oeۨ$#eޛ]n Nr}O΀<1z2e(vҕϋ ٚ3zv~B_s8$Eb(2ⳖS_9ugXvf1s/+'B$rD(Ns:#OpٺKO%rVyB2>8WOo+x)_vg5ñ 0}-Z*2wXnIg .L*+.;|Wy[k_J@jka;KY?y{^M"^<[OrJbuqNKrMSs>Y(1Zþ]W 5\uƸ o9}=-iYgt~/T~zLm ^ecyUۏkm| lݜDz.y_lE]|)[~~ `]qBKдi8[~E:n6yyG T]?تO#김u[=.^vn9tQgLaOxH]VwÿymJ8ۏ taxldҾ/Ń/vJu IDATe_y HNz&w,~}ws}{~@AȋxEG@РH4}<[qG?}. ! v F'Dm-&&c>e8$L]{^١{!uo]}߷M>5e.p$2eeΟm\9^h>;^NB0}tߋſ,iuikS}^ [q?8;òxOz?`~}Y>h i?lz qo=>qb_#^$$9xW<ǽ"_z\ڗXu=>ǟcK,#$g<.']և|??ޣ]8}W]в~g`_ܿ|qG?m~˂C7cS}Vg~ޣ/ sow-:/ۃ~`f 9MSy])cŜ:cV/~1+aKmz;p D͌mXbwV(g;5=%Yf{c;ds=8L:(lI{]mF:z<*StdzN~ʐQH+%O"k(W>Uͬ~%مSV7 e  _?sJjB?` CrR.98Wyfk!V艓*A12xUkQkgK]jD~zCB j=9JFt#EYAގB2y3saJ_~}85 F4Wqy;D%ʊOl=Z#PMl1VQ,s3JIa"U-eTRC:2j$@r_SA3D˹6[_He\+oSSp+,K2Woe> 0D c wZن䨢dkc@ l m8;cds _*6*Wv$! AACBy_+_~ }Mʙ(@!\v?ܙ֒Xa-~ k%8xN1Lհe"{64JY=JU\ߌZ }7??oq=ِrv}B)YWz]CDEF.He@kEɓqJq}w3NÓ(%p>0@{-w MCf:k,ɻpY8֤;{ZI޿Fq`٣wIˆ'IDG=ЎlKp:,1QV FC~X5ۻ=j)u"N:QCb *Ur?i!r(iCHE R{0ĭ#Zm>P>朡Bڅa לUP$MIކJ;^ohZHͷr 7mk˥S?g3 xz?!sfxCeu>[.x/ק+zk8OEM]d)w]U2l+ 8ۂJ`{:D厣20=hQ:5O:V`Dgq{hhuB-r9Eg3"J [K}:Ա㼋_& |)Ȟ]-rajvDF4G!<~sJ=@3lyWA$\x^^"RDz'| o3ιD0*LDK M:|X0f\ rX;G'쾬sXV^(+8l^6v͍>lb(>Lti s Z{' ʶ#O6[?WJ\-^5{&A^;ja^ml{.]͸&Eӣ-T=Ob;Ubw$lʖ& )A:a~ N92HbDE|+ҍs[Jha]}gR~;^^^q[]p>Cr6d\I]\.>?dAonoHTpy2XJ y|:jtqǁW7ح~֘ݻaڎavFԫ\pyz3o߿bQ( W;"Ek}O$b`1Sx>sz+߽Q .ʕto:Y6:rfP}6tDړ'* ^q%~] SzP_A#`M0Yi(uT%!I¶ƻm&ŀ0PgLb2ݑVh0:Gxu_=NR~#g+,'ZV:Kr-Ԁ Ea6  XXXZI a#]Q5\vsut Nbs%,9.>dt}ub" > /cM|X h3Aȑ,jh2Ksk5g9h 8E(lCy2᱘kTxE {%, V ,tV| 0uU^L7f,-.渗A}3@ᕈ3\bOwu .I>LS9 yxILd5:6##G×_P, )RuBRQ,m~Nޕ0SG.eﻸ"WXWzS-G๨=(m9+-=y$ h*sݮg+a4p@~D}}VooIXB7@[RGP')'(:BЗ, t=+q>dާ0~H0Pӧg Eǡ#Qny2#ꂑ8 .±^~VǙ).'q? =m$X@_V(̕Rƶ]жgb(oMH VQwq6l@JFޘ.q.9qNVr"e~+؞OqҖ/<2Zz^UatT &6/TO\0PۦYB~$-O{o9sop%eGUQP0 |GsΧH1sE_*&$`DڤfJV i0.a:zhKOfU@mDְT^UgJ8zŸB kLwE8 Z[2,ނx?aDA Eo q[xȟ}&<1ё[jct{kݐ\cf^UJ@:|z"E@S~{eV"Ш/x)쓡釪Sb~! 9Sq?noPH2ƍ;&zXdmsr:dR&vvjIѠ(Eu3CN]w`@wkF TePm\!5iNM&> pIDxn'Ћ,F_JK NXВ0.Lc rkZ oD"tQ{Es::FE IdI%ԛ ;$b2qg5Zpcl7Ǒn@=p]HxqsJ<[Y4FyPttZgI}bʬ k8G 0|8.AF75[E=vIwTH:Yǔnk8j"5XwsSF"MGĐ>$UG+yq,R8&ǖ@wPtQ ReLYЖ4EP`Fb~:qQQYpAo!BIq<x | Ă؝w9|\m,$R JI i8r;gne+Zq<Βjo 9QĽ'[)#V+ 2kjU$X|+eASit}VAN+QvxvMO.6n]q60uu8\e$s-;:Fe} QEU Dzme.bJE="%Ϭ[A$q8gydrKH%GIHl'\CClmϿVP.].4'*`@7ѡCUPA/gY,0G#/dGb?|!v`|6D L$^B mckbA_T73ԇ7p/=f rDYAU6b@#!ء읾wN \L+,N)(fRm uV5"69|b{rQ3C!^?fpX'Qgs ?Ó}4LP1h9: =6BJ9j$Ocd R Ԝw_-6sƊ.P/{aiKMy{Õ-8:(;S5;݀nCԭrl/0eσ񅚎@7IPtοO?3/+Vsn)bՌzc8vV1w};:ċqk23DndV!lĠ]%L=hR<?Y}]Hv4:XY> VҶS1VBҢA0KI RB$彏I#\ (D6q`DN ~K;HK'P&=@9u8n#'&Q{$l;D k96^ R)c04[rAm6_з5hYh9~{傒}vg\igRXc`rxI@wvԆ7^mUn< IV%|q-{f|XGZk֩\2Zg]w[bv,}=2;b10 nooxN % ; c °!qg%5Aa9CwO_~qwmDni is"8SͿpp@|~Yݒ1y{B\dͿɄ#]3XӱgBٛ[`Og)" XXۖuc&3<Ϗ`~N{(/užx=o˗p:}ޚ O 랭̮yﴷrd7Nq_$cov]$O9gUM|~aXsFEmY ux}Ýs  t鎹x9\tǺSnIO=>[qExpfۃ>y M] s/=E.<;vKNkc}FMټ7?ƌV}<VY~=#q .֮]}zY~<r_uY|o)k"^q8i/v-?!>'\"SZMb>p^b"H1j3N > IDATO8ԁ~l6V0_\󈧾\`3:;t*;d';%.>&<"ѥ tmHaPzBju vS2c։,cܽu[Ns,2鉣nvK3%A2=..*v oM:!ɴA>L>/ ʶx}{5}@Z[IMb_}:9Ts.2WHqFes pMݓNr=[c|`\Y kwBƠ3b Q-P#xdؚ%Y| 1jssH$Vm]Mo]7*rr;TKrpFmfj\mtp\j*'ӎl B4KX~?q-vl|wgdU7ͨ@ ߊ͋m0Kbml\~u<=˗{DZjDN31V q-:->O`+O7Z0vE?X;da _dC?^0tw|nG6[ya0-JF~~ӧO3ox7~3aN؏{=ٜZo([6'I+(!~m)`'uʹ5tȤL\f\6ZIP\WRȪ?{b` GtZ.OWl劔81Pk.+g7 &@YzQ2G-Z!*6 RBJV}T/y̆SH$ajMN1m;ʞ͂)5:wtʦnKAwHMka ځQ9i Nэ9ÒTj.=2~+^W _8pU!ETdk{9ga@,3 kP+[~4JI+4ÜRz:tt-A2>A:.`΁ b"aJ ;P&2|8 y;Kp&)y$*&,1gh#\,"9]^Uyg&~H6\"1/ ϶\RJ;Atݒ_ boFc.asOƢSBWhSCbXФ2F0cA|b0[p\e$km4-."%.Qb@rj+ڢG 3gZUBG}b A#ꎴmڽ Nkw\Rn4C7ßU͑As ?%|6V?Luۢm4&u &5c'CL6| `5OӇaNdQTJtO"1g!qP5gŢ{xTpg{':;4.~$" 5_Cu *C$XQD{˚Ma`l{RQJ<~=6Y$UC75gx u%ʃx#@ J(_]mH6fEp͋h"PI>'w 4TYx$D_Ёef'/1ɰM=%![3`,3Nmv#,FwVC,R}kgeJoJ&~x@ hMQ D~ K[A^ȡ)^M(ң%- a}\8xݸ/T }#Z vZfq,½VpҜŀ%Fb`\H'Cя )H (rCo︿oHY զ@EUX5Ñ 0]IPd!$d`~C;Z;tSVfՑ3ew jo04<1vrz2B d:ZHL9J. **TGPrb|5`6Ī/w c~W|ςe(+3;b}0 `(E19}HA DBf<$sЉpZSгbCs^0gq ?M?nwwtAd*4; pg<ݹ"wGx1} ޷wlO'Wc&/93d;/z,NYL-p( =lX6t0Lh{ГbXdJsݑoumq#c&ctCyJLL׺wţ, JjhsL#7Q,f`[#Gy͕8߂)B̬-+5}˙[~p:_:W:RBOc@l_Dߥa*P+@V, _-D6EZt ]>B;QP"54'+o,w1 {bLj[3hlA5@KL&ɑF0Xl7U@rbouq}Ge }7[`5` lڱmh;q#>H\{A{z1&]`-@ "lM&yS$BԂKZ>Hzp0Z[[X h%QsEU4Hx 28K‡ҧ/ 9U2)-PgRj XHegffs-u% 5Tx;ahSޗ`5#ؓ+{bSq uKDCqjIH O ÑbH\&>`QX2(Vް;|ކ#Z'Cƽneyf2"AACE7F3UjmL젓G6Z~Na vYmJ:~t@wTE7@=1]  QfTl 9n)Џ=t1mv1fMɈ* cXr+ʳ0cSiW,4>0Fg׊pV!HĂVm'<暂܊}3aO $i5O[rrq%XվcY%̮ ]ϨM1dˉ"]:4 06q ᳺ'/j=,N1hthٽkN3V[KB"5s`3GJ̟6bAhjJ:|FܦXy-N{o91=tD8nkƚ.p)>Q8Pҧy.>/D`566vV`)lʥu?ޢs=vv|ؠc=G-Q\hn6PI$wE);cO&&=vj1̎(P끣$Q&p{+;Ub?vm5:f.7Ȁ3+ZZ#2~@QG^icȵͽYL$1b zy!+./}xtU  | _eYDU w s}c uSyF?pg43s3|\əAl~T}e@c5(EaG;w\z؟x Th|5$0mzo38 $-9=c5Oyy5n]g/CvZ?˛,Fhqݢ~g+Rp7 nLqwDpW|7wGiO qEnL}{Ok~٢u?A{Z|a)SVS%;hXw"}Ȯtc^ zxF$҈snY@lkc{}>㣭?59'>lكыdKפA)}ݮg5NX(a+YI,ؔ}.3[ŗ "5"$hϽgI ۟e۩=֗B?iq۹?Z.:mhOrۼ gY YG7)c'ޕ?m~pN? Dq^*;iYH !.N?eC?èw5D{M>칎=B~?E韹 nZ>ugWyYlre;rz_uoZⲨ<瞠Ė>w?gڦi/E?{Б#SVyQEW߬1W ϖIݰu_ >ݏzls팣` fy;g[p?n^?c~ @tL X({U7,NxyPA|o/kZsqRX9ݗyء)e*W9,z=-V&c2ЃPˍ.S~|>4Vw>_ EU/VڀwW_7?S.s x=dLs"hv"{ez@) mS_-υ~V[y84Sgy&+Q=LմjRO3dg2o?sJ7"!mO~&VnzoZe]{˷6~F^@oulO,s@_c\D{fQ 1! r0~:*VTU 9RMQ$_jM9*^''1 k/gm *r*[ VGv@ Ak1JDJMN [Oa{/^F%9`uGgvŗ'ovqb@8|z_+.ۆ~oF9:z{V~$(e3@ؐy+(C1xhop~ IDAT(~9@A oԮN$A8vD3FLB yJv}_W~H Lz>:rcr(Kɡ8|$H ir)Ȃ攍Ӏ `G5(f*wy'#`|3y-B먷~_'n6:A[jmy6%*ha\\g||'\jrfeq ƂjHR6gzV00۩O лX)) 7j%'d4Ź-k 'sYtj彥W_^pLΌw[;Xh)#7TѼSH֪ uNOH66’sK{5䨒$ϻTr!MY>t4gr*Umg%[wRth ٮi[X詔4~jM<ꉝQwVlOH-PL+aIIğڸ4ǜ3T[P5Qy@@6IDX!rt D-hdCu" /'[z%Z[]Y-L+R|*`)F;(ga[@.[ dc6_~t{7_fU ~%l$ېu䠥T%FklLO;PRAWrPLj߭}j׵=2^ʆ\zܣʹAc4Ba &}se#5=\1!2KʛyUu>jCф1⬂] :1O2@-O 0Ǵ^fJa᭣eY0{D^II݇λ܄:0ݗ= s%a[JAzDDniO 7ZYl6ѹc xaZNpHXw k,67BnGj2FЎ;q廭wS߲SO1(].3 #vR唠^d<}sM ZΈ@}rA6(`g<== oo C7|ON_,<}{^٭?4? ^_^p}Ǩ L[W$rA $ z5 -/=?x c`.O /߿vCR<==c 6Pخ/x~,úx{aǖc=ٟP>3f9q^B9j@;.4lh O:AB@QՑZd]e۬bpҖe'sr*yސP-=§Ca98zz9ܕ1Z3Ecۿ8qy3z;%[00P& M LNtsIFmaTtt"G׹sVT8M _6$P\F"w1mPMNfK^2:*K["lFRLԺ.^|;Ķm8{,:vL3=ג""9Vk@m9nvE,)yiH>ɓlvDe>[U7o}Voe #!wx()moኖ 陙x,YwDDZ?bIu ;mgֆ̣-Ր 9wj@%竂DݼLŒD"waix)p1=s5nwKsś8<9NԱJtIJ{s"aJm7H0, =^`V37ܩ4V˰˿[];75p wlJčdհI 0Lr7RF%-tkk\D `cIouf`uA?H$Eͮ+Fako%G\]s){YIHPUna{$0\R2##ͮ}] 9kM81XӝD!JJUterP>:Z*8V6T<b :}A2X[gdȥDyR)jKRnĈ:A`hBf[7_WP fЍX3O fJ|Q>_`isӁp- \PZ 6ϟ%OXL,JOoLzUTS#!(Y۪8UQL%y;FOQ {ED7FS`"d~Fd!h"&+|N^R7F,R݆ܸjw80I$oړxrCM0֦-̱#YؒRC&JAD)ka뷭$gxӮ>īl :R%G8XЭ}3Je6HW c$TpsLgue;tr>g435+@1Tl%qv']mFTLY@(p~b&Jr;x0QM3!Cah`I6FKNIg߅f#Λ4ԟYRXT9","Zk&rGs^t/kfc~߅IX!jP~SPd=/B%oM"K92y]gur:|5/5%sEQg-(΂w 5G/'h]-+٩J e Pq}a Y0Eʆ^*o˟1$g*2\Ҡڊ`g+}VgvU( da*K>)@.kʛ2Ғ0c:0p 8OW ѓ+ZZ:Ԏq?C;{T# G@ tGsXN].-u8$p^Y@ǹR}`%J`` lTPe5 gʄߡdCr` (J)a$T,)P6{ԬNϠrxk #8wG 汝\^ӹ5ZS51 ,Qz]jF8d8+\KK]WH#ZCM9>t> ZQvse { Ssuċ Yx{e9jt #P ZR a[oP1;6jg9cD%CKɀ*ϯV萕##ey&+fGYAq\skd^; JaNKɣ/>ttR <|+(D 19ő ԉG(Ù y`2M}[y\ >k{du{CqE{*/0ݘs! {Ќ„' l4/%+G P; : BpfvOU&GYY9GvƠT1+s @JGVOlln1ERsTžx,~!20s.c[&%FDƎ+MLcr)\@}1uG|1:ldaQ:0bz̍RdpVb:D&Vx)*D9Cܝnsݶn;cN\mWVaozͽɤ%}Xۍn@XžA!g ߷w_veb]ϱ(DxV"vUQ z{Da }vdWzc`(uih-C(γqǐ1Ά_p4>`F,/psvM&:{ǁysjvB]%: ^>|ľ︿~_~qpᴊ9w0A8 yKq;4kipW!;9إSs.@;81I6' &p %Oᙵe#-L TkŅCVa=hK]9 t?|1CZT""_gX齾|;qg[2sMu/ ,q>W 1,h`F㼘ܸʗQQE[](yktuK'3Ao^t(Z3yTJY-y"Y]rS Ƙ-u {hW<>O"}<3'xʊ9<ߔWXeɗk< Rx"~9W'=ݬ{S~fpyVo L uu_bre&Z`_9{-4y- }ջ벏 r]U6'*[mBT$LWy~3R[շ6WUtcYL.i4>SV(]|'3?}ˢEɧ]f-"둃΄|idN}eYt vUk  Qr >2ٱkt#|i221ϲ\;ϗ7i݊Yu}r7R<[ڐ&] Uu^KkjkdW\eiU.gl{ m<]}]iˉugeaP+/g X?x|߷kU|>/:rE?O9Iڥ|O-e;ĩ4,zlevޞ5$`yp:;5W6b!lq)3O*[2ݴ|^a x@|Ui3sM}8\݋:f5)UlXv_Ƕy |kq#ZϘ[ܣn<#=?~ɳn{όo{`r?ZyݸlG>ʭƭ#g)_ ܿ0|="a" x>˚\Wgᒩ%w^b%C]0%^otR.e2/?v,^mzϵ=,7~]K*ԷeNK"j<=NeM27u[fiUJjH̽RFMۅ/k`>1u30L&X2q:J5[`Ls+y9qڭM>Lڳ9y7C1`aT\vth_*)%Y+Hw S&,_1Q #UI{?sq%Xeˋ~v.@es\O=lYcvsz]1{RF;w9Zo@u`Ń'*spDUy$c]'1*ll͂dlgi@>} w< &Jiv}O~f{u.Zh[o~uOOQePKT֊2Uooq>?%H`,8wgX)8φll<[mյW-x6fgu**@Lv~x޶ h(cq6Nxݰ}o:*(CAByf Auq!-\lD:2)vtɅHQmVC9a0Zꯆ&+SQV//lRjvɱrϥǁgo_fK(?6>tgw Ł%|pxV X ~? xj*9P \39Ѓ!tNγŰX!DE_|y?B `i\Ta#I<4" u3l/?-h ۱"dg"=l,+S@ډjqhvVul3yQ#lX# 75̪MQi\oٍm;-*lf"&+QKTy_>Z8*_ [Mi-_kM!sඓ+AAy*ywN l8; //7>B[̋hm ?ܑK^~F<©y_qvL"ڭ UB$11DT Xނ#mFBUvnA"{peG@ͪꞳn`Ǐo7 o{̙伽28h;fX[E&tĥ8Ow}}8p΢al@N9ێL oo8xVp{x{{|㧏́By8~m;yn:F{`½w]1K4>qÉioQwԗ~5~@븿qE<"N(|]9܋fS)m nd$h) :KT ]H"%.ז_mCtD<ҘD+hPҐ z831 *C D4WRG6+2JTh4 * U-g l]&?u[!d(uQ`dQUsp&Z (ET (3y9[ BAwţ尘5lϔGugfӓv qНzIW׍fcttBmNZۍb*hE=`_/1;:E#ǸNPdVɯw 6N9Vr4#딉+ǺF`v& 3܇c`fԚ1+^0/fI<˹ Z kpwEs!V<:R68ѵ0l r^<Š%ff ԍL5TcG 3"9#PPadA nZJKpUU*A}A +G}8[ldT uwі7:ϰXT -0'eF4Bz6c-:$?kPy}i\C>#lNS@ZW]U:uy}҃@@Jx ԙr<3b倆/eWJA0ktR gkf+); 0[ء}sX|W#eRmuj'Tb?j|L J<{F6wVJ%;dWxZ-iK@ *YPH2\sERNXڏ/"`%`XMU9m9!fn1P*`#^w2SPF:p5|}[?RHPgd ޕy^[]\.!?J%Bװ}>ԈI&Ь '; bA)pqOlg$)@:"T #'E1`wa *QQus(V>F*'%ϹW;D\L-٬=4&m"u\ϐk,M\Y#} ʴ1&|T^`2C߾.xՓ?CXNmn/@<)wyoE5\AܽHĆY աD#IR1Pg+e:AV?]r 5 R}q~IX &$*) xOIʎ\E~UѢ)~fpxuVnZJ ܗ8ҷ1M~HI?h wh9:B bJDB>LM(%GX\&̌ؤ{R4W8)DKs6֒7LAiW@:R?G:#)Q19)_K)QᾞH\sr( Y<(L*@h6 ͢h(`BXMW֯ЉzohE +S3r1ZrY<篤K\{yϵV^nh:)ڟXdli@ԪP4 8ΖGj>;^[E;EdioBu-V0JMmjPT8k`D<6ҳf}'R~Ç(?b<8_߾*Ϛj`*ZbQS#*XTrgV%gRkqT rL҄x +)Qa1AXfF1:aA\` B0IVP|kEדw8ħX*b}*Z* 静tcmQ5TB 0J5ddNC ׊7 ~8_ jzb'޾:y=T K_A6SCV'!'eV?Q$:!DFU\q3xQ<x7ON~w-.ÿI6!coҙ9j +bB5)3Rrׁ=gbH wkffgb&+Y;Vnjqg}㈌z(يF>{7i s(`Mni[mV;-E4dyE*Z uXABjAEef;p/@ME1h+`YK`ւcy>IgiYy1y}8sYI qHGA-8euH>g > tzgwD=G&馳Cϡ[F:x#lN%d- skc4ɣ|!蓐)X#y6 :5NdH@,5+HF fqVfWrM yx7=@on(\$zA3˭C<%VN+;C}&yf;èMkE f-q7ȏ4\_~-+cDnf`V=6 YNLJŘvԍ~d$c/h (FR*wbDZ1)7 YPN Vo-Ք/-PFRVCKuF0/,,ӰHu~ܓ}C@lлpS6s x5@tig朝px ɽU7:S<0j{qxpD2oq(&gB}T ss=:8*iPXWK>}BXa<2ПI br~nĹp>(@,ТDAK'>wةx<w;SeQPWev!iNG!}'gTZ^p>[֠L6&&b;|\nxO?fx-N<:|RS{څş}$ @zC @oVJٶ#wE1  <>pq__8opڸ~A.r La[Duނ=I >_*(`' ]`׿Ө!z>OYkPp\?/K>U%/L_yRП>sf%٢cAQ8?oW.v]t ڞ^`i7Zo8/ӣE=!,-G)l?T뺹!+W и%;9u; <}-q<Q1$oMVURc>^١xr]oqjo D. kgq,Z̪TvX}Ku+tJ=S6pԽN96G~\t6L9Mgy=ía7%~̳s&sGwy_ʋ=3%za\o[}Bs$SM9`>PGTurMGH\_7,=چϩ@z\yX?y囮מ6mה@Ku/6Θ@Y NR* .>r%>/`f95.&,O;7ׁy/O_^OX?X;Hy &^e~BZǷ|}_-Ln_Qۈɿ~?н炿^sb{lg'u(F'SOoe|ur+$ڃUg򀁾g Qʲ{>lAy=#>ӊKp <}SmَLY@ń>E`=Ҷ~p[gwxevj^n*X]>\e s-<uMtnO>k:p=wV.~ r ƕ\9 HS֭qQĉ[قbdy< ~MWxLTH>QU[fەk}`tGA Y͢B>89ϳ~GUeB{ΣdF/k}8}Jf`Q5@#$0 SX 7<g@:f1t冗[p8gTyҊ¹m;sD|Nuǯ{O˟~pxŧ7^B(@nk+s D2m4t$rjd69*I{kDYz U68pRUüITd~WQ(Q{|PּDԥgmvwVeGy椗:Ky/:OzٍtSC羯2}v7q^GRI[2Ny=a˪fڋi8O?r3$ qϸ?Ť0=˺ 2Bmq? IDATp #xlb»-; |XT^sqkfQ5+QGocIb/EF4dGesc=@*Ĩ#EPB~њԔsȤc͆G';͂ڹ&?v̸ 5V[|~7XW`HZZXe͒RF VXQ QtL\iM1p 6uoh]q~L=᷼|:7-ᫍԺ.~xGҬdGO?`} لahWk'i轚~Pk?el/BQD7Ӷ׿->~qvvgA(cS9Bp1/&|)rr`d`!(ҢMtO3ِj4@`0 jC795=պJ j1=)R#esHդq:yQ04 !28|cjE--( 3eb(W;o%dhl})(ǰH <0lufYmbv Xbrb,h ԖiZӃv2 ނK r c\Aй;/$*#s#t.:Bꁤ7_. ctL[X"Eq2Js깹f?W0ϰ}g-g] 4z< 4妏Э^>Ш grr)*mSN'G6Hw(;~epى 9 1bU|,Z^EXfMˁkBVJ{zFw% &HGx33/I١ 4GM{ ,V|#(d%&[qgt|:Ob 2|%")Y@`OgKR ,)/r~p(ۆ9@vR)&;<17&5rٌOdh.c 7a<شƹ2߭Wl@_axIUY WvQz#boI[hJPb(HW5h-}ě%Q$jfZ.>s]@|1E\j'Vo ^">wDzƍu1 XhwX݂ 9p >Z mǿupsAIPT aGWf7@^- A:_ΡI t*wDیu*.qp#z-v֎TvNg?C='>bi`yҳUk[X9XDY5A)#4Z2N#^493 6FĤF*xf0n7~xD F쨠Y}뗨R.? (è "Ґ5X,mx1N؈B*a~FqZ?8Z/̀tbF MӗDOsUhHuH;V! ,wh ХdI Cx<h8$Țr>l *lWѹ2s0s::J*2xѧ3Yٹrc:-A|s:*T6Lsv,GQCtwqA<'ץnYxDB[ Ӝ ~Sj=tg)/`٨Y,Rp*7ꆢgg75[BX W*7&p{} ~L8uҜ훪Gmg!'g<0 2A'zjoYnt1Pԧ z]ubtbu3s-RʹQcqI}jن^ٌ7%R/zxȹ!dπB`^/*)E 9@Ayzv 8 @/a=tVA4Ɉd 3!3Lnz%>NO|M\Ʈ H9^៸k .;l[qQu]_?8~ Fw Ttk= .?Y:S/3_War04~Eu 7q/Jv0J XT k\9&EW3Nx|ca7cܦs!SVX4YTcwn]#<}y6<7@k1ڙ>:Pa~;d:@YH4okCIљf)Q-]c (-f$F:ۉ]ڛ}pb<HsdK{U,'@@v;Fo"spSЗ:`` 7HYEoBGY,wY9u.b*m@H(i=`{VȰj\::ϓ\[d>]>ZQBݛ 8+ߊD'tϯT54螡׋hm7:{2T _k8_'֣`\lQBVy}^/\d-I~(y}u~l-zqsP˼s.IѲJ%{Dƿ;`q/Sf_5Cu vϾUBnetXw>&uش,Vn}?f5;*L|O$v,~<\g~˺c{y-+{Qz$V^?_jy[c-S:+V.O{s#gygW6:u ^5庆ysbx}]ln2_v=c`Zp}M^3*Yֿs#gxg}?)|L:e /vfs.M=s=6{ߏy3^s#;1~'V?m6ԑ6O\W{tH/,}Xa}u lvJS=@ˊ<}|_R=ݦ}g_}#m>/ϺzUV~QG6qO~szf-e=!%zF1L}`eҾi~/k{{'3Ne{?| >[=yFs,~f|cmkm\^7a従B;nMG<íK_3M5b)+e;W[+v\nGJx*P6&:[ey𔗫UW`DkUz`]kX\o*ne6kl>K|fl&;a>ܓY"5ْWq%rĜ4g=s%;ke./|]̖G#*R7~o;@ひ]D gSFq);)⒭۶V@3ȶ97 Tf;[V.ROf"jqf 2PJAcK?Y(W)8hwT8` ^8LdQ bM chybff ڶAUHP+B-jʞ|@v?[~şG|_0ڃT;dv{~o~7x{ŗO O TeG`ڦg۞J$xtG &Pmj80mjvv.} a*w8K//o?O~fQ@`v6{pr. ڇ:ؠAjsBUMJ&NxkC]]*ڤ5%7r笄gUØD]a2ڀSe_?G!%phJb<>P e۩F;13NZ7Xݱ|~çl;WApJ_)9u#W_}9.\dۡ[V& ~ o1kPk7& ~wӵkq8z~/n6gU^V ߺsS7g;!/^>Jɡ-fu Zi 5 "*L?cF VКmFPL'N| L8K<yu)'מ.ܞa9۶h @O:idΙL ԧłVl􆳝xtБ;~$#Z0:gjog5d: {t<˂&U?AOyx!*$Vl];;a-|UUN*2% :_7n V׼.NMEN1-݀ۚA"<`/;0[5L'y!>i gV9ECOl - +LL G{U%4 R)Zy(uNjfJ~6F}l1(N݇S JÀPdYRu8ڎR+ 4T]]k2JN;֮q޶UC9W3D0 IDAThP_ޮI$ISsȬٛ[@ E(؝鮪w7>Gv/atwUV|}1`ϿiR)%~ɱ C@ʑqcRBN~q^ȘY {fx`Rc*n_֬V*p*3ZؚrHiN?rΝ}ɡ4>ND:E 6kȥ Op&ș9P3(`wR2ʡ5eff\؂Ct'7"GIM-7`l6gxٞir%'|KBv5Ebap9{q #CR Q,l=hCޣ)C bI4G9kF}I759r%.}:"y[!sHLD2T[CFрiH7d Ԏ+ȽV RHG@˙RD[@G• f LPz*{3h2/tmJBVGc5zt(+Ra=ad6`n K^I^sG(r5`σr>coˀr ߜAhZz> ͐X FEWE}y-oRJpsnSlKdWCƠ :*e (3; ǵ2CKGȇ@+Ă3q]#wϰN,Ъ |hJ {{ 14s?翍.?\`?B1ԁ%g(s3;,(>HJ7 $AXF`yٞ>ͺ@UZ9o#7;cvAπ(i> }0f ^EKMBa(=;fJ>Ii a]'#X9F{$ 8D6b{;_o 1OHI<)>*h7uB2I+?55P<ت߬]Z'sd"{L lxvE9scZ>vA%\azH[k>Gy*VZKbb=뚮}}G1m]KL\(.rLsYw_/J@3u<ґq)7cJ֫B?dQib8I?#lbSqHs0K# J+n0*17=fDY%xu]83.YZ(uӇ:, # WڇX=ZRXlΜMI! =ch"sIƪ/:e&IY c% FTFcccЕ曅Ǽ|Lcx>Uvry:01P䊌XZ*" Aҙ(Cʺg,gQ߶^I/?9({C;>8БsgPteL 5*~9|L {0 ̈́{9ՀщJ$[͂ȬFaaT $8F8lj(ck֯KBh|:gTV`8A8$n,7b,Ap1vzk#/ fprT$Vw ø!Af5emXYPJdcN*XyFD=5 5BHixc*"CgGY@l8ʲ8(gVf%x9c=3n@iTGPz<1~[YE?1΂pC |~~C{TF| gByjJeUiotzI #jϠ xݳt (x@0./Y鮽W&YFũq෿|~O~@:>:zV\S0Gb5h cu_cWPcәtФհ Pde4uL{8H43"*z8gw Tz8'WdĤ>&஥fwv$8 }8gP~Xeu*\f'`~M]L$qmlhXj:}x><譇g4RC+ <#m7S{es<>&b&=,*by'r0|s %K D !>ޣ3p 9xІ8WVtP:Z Y8`]HU/jr ٮ9cd_(1=FAcvc0DWAFV4`EdD= 1mý[12 Z f=Τ C [:FY %D8t<уǒP6Ww(grH Z6 :.Q:T1ħ$Dt! F6G`` C`@O.`.Ge Б3VX\8mN6[m4FhK56C89C>RPkp6+ +{^Y<6DԻEd3r?OG#?* ̲\8xbm z(3o 0x@ÆK)}? ΄4D;l5뉥,Rv R@ab(@_x u9d0pSon}ӗzcKc+/eD=ժF߹YpkL1[Om`'#9! dbkO&^‚uH/r^':w%d:1}"9ŀEN}5+r0:+8Z#Cǚg*p\w }p-@/%1^&lbfu@eJh.T( .p*W*r(,碇,T\ә0X, ʈ=#% -ZSR^jl,^Jm))7뜲Yg6uzƈ89yVK^OO*΀;+E,cU0âC,:缡{No#gIp4SŴ[ϨCKLgLnO(=O<4nQz,gH";'޶ [TOۆ39V-4=0x$18F':KQ*vWQ3+2?Vav|=brdf'pCI=U0AƳpcY|Ô+)L7C+cf*4 >F-gV:mV}kL&g;`ЌX>q;J1<NIyl.NlPxR(&P!pO`7mɈGcgWV.@d@KD!egro ̟/伖kJz4Vw׵v=|^73pi};guOko\-{$~#GgdgpgV{{Y֖=9T!_QP~mT幖{X/쀘NG׬|òfYO9]>%cұ÷~ɶ‹9^uպJdz_vd}uxƋԦtuݓ?ArsM_mƼe tpAkrwYSL[k#[< -2kSv3iguW=-_݃AiԬR^AaRߡ %4YLh^3p<_u>~pvYu=֟}vyt~e+X󪣘gR@ UJlr_ggk!49)V{`.F{E7Uc՞^z{-~Q#M=a\/<[=Z X1o쟜eͧw$rVe[;N_K p.~ݟطqK.~˳"?ø.яv,Ɣa5i빝6VGY>_.1`Aw\GǛ蘁P_'[ױ{wнD.2kGXA.W:[ϗ34n̿(s3eo{W,}sbXzWM./krz}0b%??e-} Ֆg]ܑTmO@6`SXQKkSׄf]֨`ٞ Ƙ?Y#U,qb[ULbZO?~)ƺ 60UOU>8.({%@g<3G!'&Au]!=_pL_ >@e ڞ+M4/;*KK-`^k 9Xu ۍs##TVܠ #˵FevG2LXC'jٮ-2h;n(eK>M#FtӘ|fLpDeƴHw2='ptUvR,8U-3X}ZTYQ;k,Ґ'7_P`̼LEլb8؆=NGp3!->l}VQ;mNQV]f tB4]$}`O^~Һoowl~CEt6ްn( /_p_޾`mT}}QRT8wڃcej |O@d%:`pVC(QAa*|;߿''_c7Xm_n@cjTãKc/gK;ZmN}ۃ߾۷)lܱzV]?*-@~oq9[s1:Gv/PDk-8ܷ=FЍgpm[nös>S]}Yžm1R,`a 9\gWpy:o  `vfRHtr .+gg_ VSkzBV*O'exe.RBۆ߿xƌ3chzF^[$wj貎1!)p@H^P;19TӞ:; S_j80=|"#1@+:x"k9BsqW;] eߢ+v J1<"'߸eS`٘:O Ġq}Đ=}+6ҲjTJAwB4owB>S[.w3˖gΊqc[Ir qՆjS+504 ((N`F2l]YwG.h5+)ރ=x <ݨ+JТ2 ;F`fU@;TUT.) l94 sGtnPyÆ[֢#d+mCՖVJ\e+>{KYed/%c|L+:Ay,Q6fPtғΡN\,I%@tk|D+ ,T}(%: 772P`fedDGdmu "C)#<ȟg+ZŇj' VI: KmRrLGT,  t,e}LTʏm ~D}y6ĩ&XmI4u'I!<"yL=9Ϲ=q||DiU0b[qW"Y7ELr"0)L ZؗN,-b D=8k}M'hAC8{ cCr"+\@&.%Ll g\ @S6' .ڲ7FfMт" HրYmbԳkE:ʶJ-W q:\X$ Epaq Y̑P{:iEl)8:Yk+Xd^g((&8H̅Mt+Zi7c9 ns,8h"~!`n˪k EWRFH&MIi)pl-ۂ lB=ws?~M|@'-X8o:E2_q}m%o%H|Ak>;>}\OmY:k ؑ{- aIZ{$`2RE+:"3-iεLf ֹ Š*S{XxSBsT*{ckà # 7$pNܹLJNyJ9ꆠawCCt]ڀ<ϊ +sys7ء+ƌ`Hh#|M6EQ N,/왈 V,̵_ :*1y<*ÂET~y}DQIeӖ؈E`tGfO@[LBFm lYd*l@h.~ց:{=3oݶ- :Jɞhle^o;Fdx>Tұw݀z/cΝ:;:(?#1*.ܥ_khL<>iGwPKo>8a/sXAYˑBcf3G?YבC@QTu\X3982*ǁ,x2Qз뎎zrOJ<L^ެB/R:6AXtw:γ&\'TMe>XpFjaF γ9N@+Iq9ȽY w?9",fOgfhf;GpO@h&_`Z DW׀l^Yĥy}XTςUՌեP0>C +תԞ@+wl; 7˨KZ=rP.UD4h: 3xXҮ!6+ Fm9NN̈́"" >ԒZ4w4&eFk7йNB`Nm-f26* eOc-$9 gS@~>Z|NʁFZ)K]sݳY.|݁2seml ߋ*3ޏ2Us5Tn%MD 8\F{C1^ 6}(8`u1i ) n٥n@(0MzUY;'Z;a,XN{(9v1cdElb:ZkQdHxk藋)v"7"P鷁 QOUGE){nrd/9uV\s/3_KMhNf)p+ZcZ&Fi/2b^&.U 8ǾXNǑOl{ri z Gؑ2MymeғytFAQmY|5#,bT7(QY蜥w+!_7 ۾0aDrB*up<{t|D Dn8#w0߃`x㉙qЙI^Cr(#y> t񝯃&`M <Gx@A AglAW-uvcR{b>?V? xӺi-_~2cAkgNyYӗc{}=Z|.Kr'6u&ހY=~N\mp~tnk9tYJY٘yN}Y",ԽI< (yMIX)[^=G}+mJX04틾,6YmecXs,]7cW|r//P3SΧuA K'zNlls\~o}j_g #oeˌ"oM}8FW0y]97}ȴW";G˙ў:7 ?,zgLUy~3?_լ65]؎ERW6~ŅB39wye/{X ֘qeX_UFJ~(eki*p/^ϔcY7:?)آgumb4r_UX^/ϊ,.\3eӗud⟮{̧imXmvbPжB3U1IRfWqd@X. e =ܑ}x|9jt?f(:ƔyzIðb51[IALŀcYڄ)[(B'}R{>_|wN[|K%I:{{r29qm} j\@rZ/۩+帴I~~GN3lsmE#{po@)lJ66-1m) kۃh-RuCV9弻G_VTc4x5Jl8DGeO5ZhJT1Nn1M8CgE)( /_YկԊmۙQ@';bD|G#߬yC]ESE٬mzO6iFoV] -dqNu,nQt*oww-NU ^5Y.J9ZBqK1l?p /_b߃?r De [[On=)PIG1zC;%c-; 3fg\M5=k.Suޘ3$rɬ"}9;jDWzvb*(+嘆 }gŲìb V*;ΣP Vs:%BG' >'Fþqw|>8ݻmI.q*mk_QW .Q/N;rI GB)~oql9eeYwՋo硯ׯ[ rӖ;}.~|tPܑ4 PUcxk=ύ1LveHolUEG\j!f8_Î`R@Zϗ @ bYjI/%15eJE4-X4֊LʸHh/^luKxjRDб'&Fz撄}ߨॶ8dsJ*Wc)W \ya9ѱnoc qK rN룳 Bc+A;7 lhsKa{X?1x\Q_MY9{,~KW(/L)zS}~vdڻ}3 3G&*+{_xep:n7lGBuvï1g2+v[0Bg^no7mOq o7ܿC/Ԃ_GĿ=wG-TάS{̃D1ZRp|j vDo'gn;sY0X;֠e/;rS vb6dx<AJ:Du_̣3< ,EAl0%R,kMSk`@Bm D|O\QtM_p5$dRFL0R9/l\8j bQ}@cu7j4*'/$rKbtvbOK5XCC(\gJ8 "Ԃ8rEˡr9mZHJ1b&eF;Ḷ~} IjrӰ?(^ 7=xxPktL4GqJ0q  (j Ve6 Ҳ;6ʨOl /U(Sdo3YUshV =z0/` Xˀ` +Q6~t&1-~XX@P9NmZK~rfC/ERJt\IG5վǵ7M]1my&8H3ȘA[))cV"Nu*xxN-Yb)O RƬ`q ET͏cYUe)3c. Gp*[%*7F ; YU01AXaʃlZ iMCUI3f'dHZhB/2|f%|+-8/U:S K'nHԾ<[hc})hǕٰ!4 Q%B>Y臡s]` c7a[PG"w(/SQtDB*3 2 }8FCɔKWUD0{ža a#3<96&bE]x{ JfRm&q ILT!`os0y\01g)(DXþudެȣoPաxkER5rʒg+t83mN!EN;zv+I {H <^s+71hH53\U@_JEa1˵d0(`ǽ&T#ukCbMD=Ϸ߷셳8N}I&k|RP_|?>vQ%'NU#0@T )m kKyH f85A_LCO$ rC~<h-) a8gAQ@G_#>]g*)})? |%|nxH~RӞ9x-$ c@"# *>$f‡eVdz5XoVÍ\[ΚOEKwvZt_I^]Y:ϯīC{ Pw#H7CJt1 ȩ@>ci in1 ( b}Hy.JJUfOĻnj!# r&(=B 8E+)Fj#j~O6R>g˹'\eT8`3?Sx8s6(x< K5i;*H YNFC67 !VT| vUA-OuM~5 tZMScwQb* R*A 8P{ 8| g=Qx`([$Jz?~1<ߞ--6]TXb0J geԐaej\g-̊ϬUVkT-ie{A-!,$4+n|JJOFEiQ^ y1C}|ZG8cL߽%s9<L`ҠVpUe*BBo>>?pL*K\9dW:K2 ߕKx{@tHDGb)[ŀ1+ @!,^X蜟(!1b|vYRBy8s[> qZΧbU"*I4mHmܩ*g|8Vdo|lp߁8WeۖD&W&=tTDp'pZ 暣iTl<~~~AN-D;jhgTF0{K^T: nl:Aeɀ@~A;13n?jBDUhz~+cT'Qb+mK}~xGT ϝ< ~q<t 5B;ƦqXd3@0we\=ўHf{#]=9|RAi9n܆|TWg8*c5,Y ѱ0lG})&GY66;*_$/29f,w7 @wqefx+ϙ+xN_bAGݧR7yշ.B=nd@( mH0YȹUDV dtݶ#5pswlD"q| ϡP

      `, or `` (case-insensitive; it need not match the start tag). 2. **Start condition:** line begins with the string ``. 3. **Start condition:** line begins with the string ``. 4. **Start condition:** line begins with the string ``. 5. **Start condition:** line begins with the string ``. 6. **Start condition:** line begins the string `<` or ``, or the string `/>`.\ **End condition:** line is followed by a [blank line]. 7. **Start condition:** line begins with a complete [open tag] (with any [tag name] other than `script`, `style`, or `pre`) or a complete [closing tag], followed only by [whitespace] or the end of the line.\ **End condition:** line is followed by a [blank line]. HTML blocks continue until they are closed by their appropriate [end condition], or the last line of the document or other [container block](#container-blocks). This means any HTML **within an HTML block** that might otherwise be recognised as a start condition will be ignored by the parser and passed through as-is, without changing the parser's state. For instance, `
      ` within a HTML block started by `` will not affect
      the parser state; as the HTML block was started in by start condition 6, it
      will end at any blank line. This can be surprising:
      
      ```````````````````````````````` example
      
      **Hello**,
      
      _world_.
      
      .
      **Hello**,
      

      world.

      ```````````````````````````````` In this case, the HTML block is terminated by the newline — the `**Hello**` text remains verbatim — and regular parsing resumes, with a paragraph, emphasised `world` and inline and block HTML following. All types of [HTML blocks] except type 7 may interrupt a paragraph. Blocks of type 7 may not interrupt a paragraph. (This restriction is intended to prevent unwanted interpretation of long tags inside a wrapped paragraph as starting HTML blocks.) Some simple examples follow. Here are some basic HTML blocks of type 6: ```````````````````````````````` example
      hi
      okay. .
      hi

      okay.

      ```````````````````````````````` ```````````````````````````````` example
      *foo* ```````````````````````````````` Here we have two HTML blocks with a Markdown paragraph between them: ```````````````````````````````` example
      *Markdown*
      .

      Markdown

      ```````````````````````````````` The tag on the first line can be partial, as long as it is split where there would be whitespace: ```````````````````````````````` example
      .
      ```````````````````````````````` ```````````````````````````````` example
      .
      ```````````````````````````````` An open tag need not be closed: ```````````````````````````````` example
      *foo* *bar* .
      *foo*

      bar

      ```````````````````````````````` A partial tag need not even be completed (garbage in, garbage out): ```````````````````````````````` example
      . ```````````````````````````````` ```````````````````````````````` example
      foo
      .
      foo
      ```````````````````````````````` Everything until the next blank line or end of document gets included in the HTML block. So, in the following example, what looks like a Markdown code block is actually part of the HTML block, which continues until a blank line or the end of the document is reached: ```````````````````````````````` example
      ``` c int x = 33; ``` .
      ``` c int x = 33; ``` ```````````````````````````````` To start an [HTML block] with a tag that is *not* in the list of block-level tags in (6), you must put the tag by itself on the first line (and it must be complete): ```````````````````````````````` example *bar* . *bar* ```````````````````````````````` In type 7 blocks, the [tag name] can be anything: ```````````````````````````````` example *bar* . *bar* ```````````````````````````````` ```````````````````````````````` example *bar* . *bar* ```````````````````````````````` ```````````````````````````````` example *bar* . *bar* ```````````````````````````````` These rules are designed to allow us to work with tags that can function as either block-level or inline-level tags. The `` tag is a nice example. We can surround content with `` tags in three different ways. In this case, we get a raw HTML block, because the `` tag is on a line by itself: ```````````````````````````````` example *foo* . *foo* ```````````````````````````````` In this case, we get a raw HTML block that just includes the `` tag (because it ends with the following blank line). So the contents get interpreted as CommonMark: ```````````````````````````````` example *foo* .

      foo

      ```````````````````````````````` Finally, in this case, the `` tags are interpreted as [raw HTML] *inside* the CommonMark paragraph. (Because the tag is not on a line by itself, we get inline HTML rather than an [HTML block].) ```````````````````````````````` example *foo* .

      foo

      ```````````````````````````````` HTML tags designed to contain literal content (`script`, `style`, `pre`), comments, processing instructions, and declarations are treated somewhat differently. Instead of ending at the first blank line, these blocks end at the first line containing a corresponding end tag. As a result, these blocks can contain blank lines: A pre tag (type 1): ```````````````````````````````` example
      
      import Text.HTML.TagSoup
      
      main :: IO ()
      main = print $ parseTags tags
      
      okay .
      
      import Text.HTML.TagSoup
      
      main :: IO ()
      main = print $ parseTags tags
      

      okay

      ```````````````````````````````` A script tag (type 1): ```````````````````````````````` example okay .

      okay

      ```````````````````````````````` A style tag (type 1): ```````````````````````````````` example okay .

      okay

      ```````````````````````````````` If there is no matching end tag, the block will end at the end of the document (or the enclosing [block quote][block quotes] or [list item][list items]): ```````````````````````````````` example *foo* .

      foo

      ```````````````````````````````` ```````````````````````````````` example *bar* *baz* . *bar*

      baz

      ```````````````````````````````` Note that anything on the last line after the end tag will be included in the [HTML block]: ```````````````````````````````` example 1. *bar* . 1. *bar* ```````````````````````````````` A comment (type 2): ```````````````````````````````` example okay .

      okay

      ```````````````````````````````` A processing instruction (type 3): ```````````````````````````````` example '; ?> okay . '; ?>

      okay

      ```````````````````````````````` A declaration (type 4): ```````````````````````````````` example . ```````````````````````````````` CDATA (type 5): ```````````````````````````````` example okay .

      okay

      ```````````````````````````````` The opening tag can be indented 1-3 spaces, but not 4: ```````````````````````````````` example .
      <!-- foo -->
      
      ```````````````````````````````` ```````````````````````````````` example
      .
      <div>
      
      ```````````````````````````````` An HTML block of types 1--6 can interrupt a paragraph, and need not be preceded by a blank line. ```````````````````````````````` example Foo
      bar
      .

      Foo

      bar
      ```````````````````````````````` However, a following blank line is needed, except at the end of a document, and except for blocks of types 1--5, [above][HTML block]: ```````````````````````````````` example
      bar
      *foo* .
      bar
      *foo* ```````````````````````````````` HTML blocks of type 7 cannot interrupt a paragraph: ```````````````````````````````` example Foo baz .

      Foo baz

      ```````````````````````````````` This rule differs from John Gruber's original Markdown syntax specification, which says: > The only restrictions are that block-level HTML elements — > e.g. `
      `, ``, `
      `, `

      `, etc. — must be separated from > surrounding content by blank lines, and the start and end tags of the > block should not be indented with tabs or spaces. In some ways Gruber's rule is more restrictive than the one given here: - It requires that an HTML block be preceded by a blank line. - It does not allow the start tag to be indented. - It requires a matching end tag, which it also does not allow to be indented. Most Markdown implementations (including some of Gruber's own) do not respect all of these restrictions. There is one respect, however, in which Gruber's rule is more liberal than the one given here, since it allows blank lines to occur inside an HTML block. There are two reasons for disallowing them here. First, it removes the need to parse balanced tags, which is expensive and can require backtracking from the end of the document if no matching end tag is found. Second, it provides a very simple and flexible way of including Markdown content inside HTML tags: simply separate the Markdown from the HTML using blank lines: Compare: ```````````````````````````````` example

      *Emphasized* text.
      .

      Emphasized text.

      ```````````````````````````````` ```````````````````````````````` example
      *Emphasized* text.
      .
      *Emphasized* text.
      ```````````````````````````````` Some Markdown implementations have adopted a convention of interpreting content inside tags as text if the open tag has the attribute `markdown=1`. The rule given above seems a simpler and more elegant way of achieving the same expressive power, which is also much simpler to parse. The main potential drawback is that one can no longer paste HTML blocks into Markdown documents with 100% reliability. However, *in most cases* this will work fine, because the blank lines in HTML are usually followed by HTML block tags. For example: ```````````````````````````````` example
      Hi
      .
      Hi
      ```````````````````````````````` There are problems, however, if the inner tags are indented *and* separated by spaces, as then they will be interpreted as an indented code block: ```````````````````````````````` example
      Hi
      .
      <td>
        Hi
      </td>
      
      ```````````````````````````````` Fortunately, blank lines are usually not necessary and can be deleted. The exception is inside `
      ` tags, but as described
      [above][HTML blocks], raw HTML blocks starting with `
      `
      *can* contain blank lines.
      
      ## Link reference definitions
      
      A [link reference definition](@)
      consists of a [link label], indented up to three spaces, followed
      by a colon (`:`), optional [whitespace] (including up to one
      [line ending]), a [link destination],
      optional [whitespace] (including up to one
      [line ending]), and an optional [link
      title], which if it is present must be separated
      from the [link destination] by [whitespace].
      No further [non-whitespace characters] may occur on the line.
      
      A [link reference definition]
      does not correspond to a structural element of a document.  Instead, it
      defines a label which can be used in [reference links]
      and reference-style [images] elsewhere in the document.  [Link
      reference definitions] can come either before or after the links that use
      them.
      
      ```````````````````````````````` example
      [foo]: /url "title"
      
      [foo]
      .
      

      foo

      ```````````````````````````````` ```````````````````````````````` example [foo]: /url 'the title' [foo] .

      foo

      ```````````````````````````````` ```````````````````````````````` example [Foo*bar\]]:my_(url) 'title (with parens)' [Foo*bar\]] .

      Foo*bar]

      ```````````````````````````````` ```````````````````````````````` example [Foo bar]: 'title' [Foo bar] .

      Foo bar

      ```````````````````````````````` The title may extend over multiple lines: ```````````````````````````````` example [foo]: /url ' title line1 line2 ' [foo] .

      foo

      ```````````````````````````````` However, it may not contain a [blank line]: ```````````````````````````````` example [foo]: /url 'title with blank line' [foo] .

      [foo]: /url 'title

      with blank line'

      [foo]

      ```````````````````````````````` The title may be omitted: ```````````````````````````````` example [foo]: /url [foo] .

      foo

      ```````````````````````````````` The link destination may not be omitted: ```````````````````````````````` example [foo]: [foo] .

      [foo]:

      [foo]

      ```````````````````````````````` However, an empty link destination may be specified using angle brackets: ```````````````````````````````` example [foo]: <> [foo] .

      foo

      ```````````````````````````````` The title must be separated from the link destination by whitespace: ```````````````````````````````` example [foo]: (baz) [foo] .

      [foo]: (baz)

      [foo]

      ```````````````````````````````` Both title and destination can contain backslash escapes and literal backslashes: ```````````````````````````````` example [foo]: /url\bar\*baz "foo\"bar\baz" [foo] .

      foo

      ```````````````````````````````` A link can come before its corresponding definition: ```````````````````````````````` example [foo] [foo]: url .

      foo

      ```````````````````````````````` If there are several matching definitions, the first one takes precedence: ```````````````````````````````` example [foo] [foo]: first [foo]: second .

      foo

      ```````````````````````````````` As noted in the section on [Links], matching of labels is case-insensitive (see [matches]). ```````````````````````````````` example [FOO]: /url [Foo] .

      Foo

      ```````````````````````````````` ```````````````````````````````` example [ΑΓΩ]: /φου [αγω] .

      αγω

      ```````````````````````````````` Here is a link reference definition with no corresponding link. It contributes nothing to the document. ```````````````````````````````` example [foo]: /url . ```````````````````````````````` Here is another one: ```````````````````````````````` example [ foo ]: /url bar .

      bar

      ```````````````````````````````` This is not a link reference definition, because there are [non-whitespace characters] after the title: ```````````````````````````````` example [foo]: /url "title" ok .

      [foo]: /url "title" ok

      ```````````````````````````````` This is a link reference definition, but it has no title: ```````````````````````````````` example [foo]: /url "title" ok .

      "title" ok

      ```````````````````````````````` This is not a link reference definition, because it is indented four spaces: ```````````````````````````````` example [foo]: /url "title" [foo] .
      [foo]: /url "title"
      

      [foo]

      ```````````````````````````````` This is not a link reference definition, because it occurs inside a code block: ```````````````````````````````` example ``` [foo]: /url ``` [foo] .
      [foo]: /url
      

      [foo]

      ```````````````````````````````` A [link reference definition] cannot interrupt a paragraph. ```````````````````````````````` example Foo [bar]: /baz [bar] .

      Foo [bar]: /baz

      [bar]

      ```````````````````````````````` However, it can directly follow other block elements, such as headings and thematic breaks, and it need not be followed by a blank line. ```````````````````````````````` example # [Foo] [foo]: /url > bar .

      Foo

      bar

      ```````````````````````````````` ```````````````````````````````` example [foo]: /url bar === [foo] .

      bar

      foo

      ```````````````````````````````` ```````````````````````````````` example [foo]: /url === [foo] .

      === foo

      ```````````````````````````````` Several [link reference definitions] can occur one after another, without intervening blank lines. ```````````````````````````````` example [foo]: /foo-url "foo" [bar]: /bar-url "bar" [baz]: /baz-url [foo], [bar], [baz] .

      foo, bar, baz

      ```````````````````````````````` [Link reference definitions] can occur inside block containers, like lists and block quotations. They affect the entire document, not just the container in which they are defined: ```````````````````````````````` example [foo] > [foo]: /url .

      foo

      ```````````````````````````````` Whether something is a [link reference definition] is independent of whether the link reference it defines is used in the document. Thus, for example, the following document contains just a link reference definition, and no visible content: ```````````````````````````````` example [foo]: /url . ```````````````````````````````` ## Paragraphs A sequence of non-blank lines that cannot be interpreted as other kinds of blocks forms a [paragraph](@). The contents of the paragraph are the result of parsing the paragraph's raw content as inlines. The paragraph's raw content is formed by concatenating the lines and removing initial and final [whitespace]. A simple example with two paragraphs: ```````````````````````````````` example aaa bbb .

      aaa

      bbb

      ```````````````````````````````` Paragraphs can contain multiple lines, but no blank lines: ```````````````````````````````` example aaa bbb ccc ddd .

      aaa bbb

      ccc ddd

      ```````````````````````````````` Multiple blank lines between paragraph have no effect: ```````````````````````````````` example aaa bbb .

      aaa

      bbb

      ```````````````````````````````` Leading spaces are skipped: ```````````````````````````````` example aaa bbb .

      aaa bbb

      ```````````````````````````````` Lines after the first may be indented any amount, since indented code blocks cannot interrupt paragraphs. ```````````````````````````````` example aaa bbb ccc .

      aaa bbb ccc

      ```````````````````````````````` However, the first line may be indented at most three spaces, or an indented code block will be triggered: ```````````````````````````````` example aaa bbb .

      aaa bbb

      ```````````````````````````````` ```````````````````````````````` example aaa bbb .
      aaa
      

      bbb

      ```````````````````````````````` Final spaces are stripped before inline parsing, so a paragraph that ends with two or more spaces will not end with a [hard line break]: ```````````````````````````````` example aaa bbb .

      aaa
      bbb

      ```````````````````````````````` ## Blank lines [Blank lines] between block-level elements are ignored, except for the role they play in determining whether a [list] is [tight] or [loose]. Blank lines at the beginning and end of the document are also ignored. ```````````````````````````````` example aaa # aaa .

      aaa

      aaa

      ```````````````````````````````` # Container blocks A [container block](#container-blocks) is a block that has other blocks as its contents. There are two basic kinds of container blocks: [block quotes] and [list items]. [Lists] are meta-containers for [list items]. We define the syntax for container blocks recursively. The general form of the definition is: > If X is a sequence of blocks, then the result of > transforming X in such-and-such a way is a container of type Y > with these blocks as its content. So, we explain what counts as a block quote or list item by explaining how these can be *generated* from their contents. This should suffice to define the syntax, although it does not give a recipe for *parsing* these constructions. (A recipe is provided below in the section entitled [A parsing strategy](#appendix-a-parsing-strategy).) ## Block quotes A [block quote marker](@) consists of 0-3 spaces of initial indent, plus (a) the character `>` together with a following space, or (b) a single character `>` not followed by a space. The following rules define [block quotes]: 1. **Basic case.** If a string of lines *Ls* constitute a sequence of blocks *Bs*, then the result of prepending a [block quote marker] to the beginning of each line in *Ls* is a [block quote](#block-quotes) containing *Bs*. 2. **Laziness.** If a string of lines *Ls* constitute a [block quote](#block-quotes) with contents *Bs*, then the result of deleting the initial [block quote marker] from one or more lines in which the next [non-whitespace character] after the [block quote marker] is [paragraph continuation text] is a block quote with *Bs* as its content. [Paragraph continuation text](@) is text that will be parsed as part of the content of a paragraph, but does not occur at the beginning of the paragraph. 3. **Consecutiveness.** A document cannot contain two [block quotes] in a row unless there is a [blank line] between them. Nothing else counts as a [block quote](#block-quotes). Here is a simple example: ```````````````````````````````` example > # Foo > bar > baz .

      Foo

      bar baz

      ```````````````````````````````` The spaces after the `>` characters can be omitted: ```````````````````````````````` example ># Foo >bar > baz .

      Foo

      bar baz

      ```````````````````````````````` The `>` characters can be indented 1-3 spaces: ```````````````````````````````` example > # Foo > bar > baz .

      Foo

      bar baz

      ```````````````````````````````` Four spaces gives us a code block: ```````````````````````````````` example > # Foo > bar > baz .
      > # Foo
      > bar
      > baz
      
      ```````````````````````````````` The Laziness clause allows us to omit the `>` before [paragraph continuation text]: ```````````````````````````````` example > # Foo > bar baz .

      Foo

      bar baz

      ```````````````````````````````` A block quote can contain some lazy and some non-lazy continuation lines: ```````````````````````````````` example > bar baz > foo .

      bar baz foo

      ```````````````````````````````` Laziness only applies to lines that would have been continuations of paragraphs had they been prepended with [block quote markers]. For example, the `> ` cannot be omitted in the second line of ``` markdown > foo > --- ``` without changing the meaning: ```````````````````````````````` example > foo --- .

      foo


      ```````````````````````````````` Similarly, if we omit the `> ` in the second line of ``` markdown > - foo > - bar ``` then the block quote ends after the first line: ```````````````````````````````` example > - foo - bar .
      • foo
      • bar
      ```````````````````````````````` For the same reason, we can't omit the `> ` in front of subsequent lines of an indented or fenced code block: ```````````````````````````````` example > foo bar .
      foo
      
      bar
      
      ```````````````````````````````` ```````````````````````````````` example > ``` foo ``` .

      foo

      ```````````````````````````````` Note that in the following case, we have a [lazy continuation line]: ```````````````````````````````` example > foo - bar .

      foo - bar

      ```````````````````````````````` To see why, note that in ```markdown > foo > - bar ``` the `- bar` is indented too far to start a list, and can't be an indented code block because indented code blocks cannot interrupt paragraphs, so it is [paragraph continuation text]. A block quote can be empty: ```````````````````````````````` example > .
      ```````````````````````````````` ```````````````````````````````` example > > > .
      ```````````````````````````````` A block quote can have initial or final blank lines: ```````````````````````````````` example > > foo > .

      foo

      ```````````````````````````````` A blank line always separates block quotes: ```````````````````````````````` example > foo > bar .

      foo

      bar

      ```````````````````````````````` (Most current Markdown implementations, including John Gruber's original `Markdown.pl`, will parse this example as a single block quote with two paragraphs. But it seems better to allow the author to decide whether two block quotes or one are wanted.) Consecutiveness means that if we put these block quotes together, we get a single block quote: ```````````````````````````````` example > foo > bar .

      foo bar

      ```````````````````````````````` To get a block quote with two paragraphs, use: ```````````````````````````````` example > foo > > bar .

      foo

      bar

      ```````````````````````````````` Block quotes can interrupt paragraphs: ```````````````````````````````` example foo > bar .

      foo

      bar

      ```````````````````````````````` In general, blank lines are not needed before or after block quotes: ```````````````````````````````` example > aaa *** > bbb .

      aaa


      bbb

      ```````````````````````````````` However, because of laziness, a blank line is needed between a block quote and a following paragraph: ```````````````````````````````` example > bar baz .

      bar baz

      ```````````````````````````````` ```````````````````````````````` example > bar baz .

      bar

      baz

      ```````````````````````````````` ```````````````````````````````` example > bar > baz .

      bar

      baz

      ```````````````````````````````` It is a consequence of the Laziness rule that any number of initial `>`s may be omitted on a continuation line of a nested block quote: ```````````````````````````````` example > > > foo bar .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example >>> foo > bar >>baz .

      foo bar baz

      ```````````````````````````````` When including an indented code block in a block quote, remember that the [block quote marker] includes both the `>` and a following space. So *five spaces* are needed after the `>`: ```````````````````````````````` example > code > not code .
      code
      

      not code

      ```````````````````````````````` ## List items A [list marker](@) is a [bullet list marker] or an [ordered list marker]. A [bullet list marker](@) is a `-`, `+`, or `*` character. An [ordered list marker](@) is a sequence of 1--9 arabic digits (`0-9`), followed by either a `.` character or a `)` character. (The reason for the length limit is that with 10 digits we start seeing integer overflows in some browsers.) The following rules define [list items]: 1. **Basic case.** If a sequence of lines *Ls* constitute a sequence of blocks *Bs* starting with a [non-whitespace character], and *M* is a list marker of width *W* followed by 1 ≤ *N* ≤ 4 spaces, then the result of prepending *M* and the following spaces to the first line of *Ls*, and indenting subsequent lines of *Ls* by *W + N* spaces, is a list item with *Bs* as its contents. The type of the list item (bullet or ordered) is determined by the type of its list marker. If the list item is ordered, then it is also assigned a start number, based on the ordered list marker. Exceptions: 1. When the first list item in a [list] interrupts a paragraph---that is, when it starts on a line that would otherwise count as [paragraph continuation text]---then (a) the lines *Ls* must not begin with a blank line, and (b) if the list item is ordered, the start number must be 1. 2. If any line is a [thematic break][thematic breaks] then that line is not a list item. For example, let *Ls* be the lines ```````````````````````````````` example A paragraph with two lines. indented code > A block quote. .

      A paragraph with two lines.

      indented code
      

      A block quote.

      ```````````````````````````````` And let *M* be the marker `1.`, and *N* = 2. Then rule #1 says that the following is an ordered list item with start number 1, and the same contents as *Ls*: ```````````````````````````````` example 1. A paragraph with two lines. indented code > A block quote. .
      1. A paragraph with two lines.

        indented code
        

        A block quote.

      ```````````````````````````````` The most important thing to notice is that the position of the text after the list marker determines how much indentation is needed in subsequent blocks in the list item. If the list marker takes up two spaces, and there are three spaces between the list marker and the next [non-whitespace character], then blocks must be indented five spaces in order to fall under the list item. Here are some examples showing how far content must be indented to be put under the list item: ```````````````````````````````` example - one two .
      • one

      two

      ```````````````````````````````` ```````````````````````````````` example - one two .
      • one

        two

      ```````````````````````````````` ```````````````````````````````` example - one two .
      • one
       two
      
      ```````````````````````````````` ```````````````````````````````` example - one two .
      • one

        two

      ```````````````````````````````` It is tempting to think of this in terms of columns: the continuation blocks must be indented at least to the column of the first [non-whitespace character] after the list marker. However, that is not quite right. The spaces after the list marker determine how much relative indentation is needed. Which column this indentation reaches will depend on how the list item is embedded in other constructions, as shown by this example: ```````````````````````````````` example > > 1. one >> >> two .
      1. one

        two

      ```````````````````````````````` Here `two` occurs in the same column as the list marker `1.`, but is actually contained in the list item, because there is sufficient indentation after the last containing blockquote marker. The converse is also possible. In the following example, the word `two` occurs far to the right of the initial text of the list item, `one`, but it is not considered part of the list item, because it is not indented far enough past the blockquote marker: ```````````````````````````````` example >>- one >> > > two .
      • one

      two

      ```````````````````````````````` Note that at least one space is needed between the list marker and any following content, so these are not list items: ```````````````````````````````` example -one 2.two .

      -one

      2.two

      ```````````````````````````````` A list item may contain blocks that are separated by more than one blank line. ```````````````````````````````` example - foo bar .
      • foo

        bar

      ```````````````````````````````` A list item may contain any kind of block: ```````````````````````````````` example 1. foo ``` bar ``` baz > bam .
      1. foo

        bar
        

        baz

        bam

      ```````````````````````````````` A list item that contains an indented code block will preserve empty lines within the code block verbatim. ```````````````````````````````` example - Foo bar baz .
      • Foo

        bar
        
        
        baz
        
      ```````````````````````````````` Note that ordered list start numbers must be nine digits or less: ```````````````````````````````` example 123456789. ok .
      1. ok
      ```````````````````````````````` ```````````````````````````````` example 1234567890. not ok .

      1234567890. not ok

      ```````````````````````````````` A start number may begin with 0s: ```````````````````````````````` example 0. ok .
      1. ok
      ```````````````````````````````` ```````````````````````````````` example 003. ok .
      1. ok
      ```````````````````````````````` A start number may not be negative: ```````````````````````````````` example -1. not ok .

      -1. not ok

      ```````````````````````````````` 2. **Item starting with indented code.** If a sequence of lines *Ls* constitute a sequence of blocks *Bs* starting with an indented code block, and *M* is a list marker of width *W* followed by one space, then the result of prepending *M* and the following space to the first line of *Ls*, and indenting subsequent lines of *Ls* by *W + 1* spaces, is a list item with *Bs* as its contents. If a line is empty, then it need not be indented. The type of the list item (bullet or ordered) is determined by the type of its list marker. If the list item is ordered, then it is also assigned a start number, based on the ordered list marker. An indented code block will have to be indented four spaces beyond the edge of the region where text will be included in the list item. In the following case that is 6 spaces: ```````````````````````````````` example - foo bar .
      • foo

        bar
        
      ```````````````````````````````` And in this case it is 11 spaces: ```````````````````````````````` example 10. foo bar .
      1. foo

        bar
        
      ```````````````````````````````` If the *first* block in the list item is an indented code block, then by rule #2, the contents must be indented *one* space after the list marker: ```````````````````````````````` example indented code paragraph more code .
      indented code
      

      paragraph

      more code
      
      ```````````````````````````````` ```````````````````````````````` example 1. indented code paragraph more code .
      1. indented code
        

        paragraph

        more code
        
      ```````````````````````````````` Note that an additional space indent is interpreted as space inside the code block: ```````````````````````````````` example 1. indented code paragraph more code .
      1.  indented code
        

        paragraph

        more code
        
      ```````````````````````````````` Note that rules #1 and #2 only apply to two cases: (a) cases in which the lines to be included in a list item begin with a [non-whitespace character], and (b) cases in which they begin with an indented code block. In a case like the following, where the first block begins with a three-space indent, the rules do not allow us to form a list item by indenting the whole thing and prepending a list marker: ```````````````````````````````` example foo bar .

      foo

      bar

      ```````````````````````````````` ```````````````````````````````` example - foo bar .
      • foo

      bar

      ```````````````````````````````` This is not a significant restriction, because when a block begins with 1-3 spaces indent, the indentation can always be removed without a change in interpretation, allowing rule #1 to be applied. So, in the above case: ```````````````````````````````` example - foo bar .
      • foo

        bar

      ```````````````````````````````` 3. **Item starting with a blank line.** If a sequence of lines *Ls* starting with a single [blank line] constitute a (possibly empty) sequence of blocks *Bs*, not separated from each other by more than one blank line, and *M* is a list marker of width *W*, then the result of prepending *M* to the first line of *Ls*, and indenting subsequent lines of *Ls* by *W + 1* spaces, is a list item with *Bs* as its contents. If a line is empty, then it need not be indented. The type of the list item (bullet or ordered) is determined by the type of its list marker. If the list item is ordered, then it is also assigned a start number, based on the ordered list marker. Here are some list items that start with a blank line but are not empty: ```````````````````````````````` example - foo - ``` bar ``` - baz .
      • foo
      • bar
        
      • baz
        
      ```````````````````````````````` When the list item starts with a blank line, the number of spaces following the list marker doesn't change the required indentation: ```````````````````````````````` example - foo .
      • foo
      ```````````````````````````````` A list item can begin with at most one blank line. In the following example, `foo` is not part of the list item: ```````````````````````````````` example - foo .

      foo

      ```````````````````````````````` Here is an empty bullet list item: ```````````````````````````````` example - foo - - bar .
      • foo
      • bar
      ```````````````````````````````` It does not matter whether there are spaces following the [list marker]: ```````````````````````````````` example - foo - - bar .
      • foo
      • bar
      ```````````````````````````````` Here is an empty ordered list item: ```````````````````````````````` example 1. foo 2. 3. bar .
      1. foo
      2. bar
      ```````````````````````````````` A list may start or end with an empty list item: ```````````````````````````````` example * .
      ```````````````````````````````` However, an empty list item cannot interrupt a paragraph: ```````````````````````````````` example foo * foo 1. .

      foo *

      foo 1.

      ```````````````````````````````` 4. **Indentation.** If a sequence of lines *Ls* constitutes a list item according to rule #1, #2, or #3, then the result of indenting each line of *Ls* by 1-3 spaces (the same for each line) also constitutes a list item with the same contents and attributes. If a line is empty, then it need not be indented. Indented one space: ```````````````````````````````` example 1. A paragraph with two lines. indented code > A block quote. .
      1. A paragraph with two lines.

        indented code
        

        A block quote.

      ```````````````````````````````` Indented two spaces: ```````````````````````````````` example 1. A paragraph with two lines. indented code > A block quote. .
      1. A paragraph with two lines.

        indented code
        

        A block quote.

      ```````````````````````````````` Indented three spaces: ```````````````````````````````` example 1. A paragraph with two lines. indented code > A block quote. .
      1. A paragraph with two lines.

        indented code
        

        A block quote.

      ```````````````````````````````` Four spaces indent gives a code block: ```````````````````````````````` example 1. A paragraph with two lines. indented code > A block quote. .
      1.  A paragraph
          with two lines.
      
              indented code
      
          > A block quote.
      
      ```````````````````````````````` 5. **Laziness.** If a string of lines *Ls* constitute a [list item](#list-items) with contents *Bs*, then the result of deleting some or all of the indentation from one or more lines in which the next [non-whitespace character] after the indentation is [paragraph continuation text] is a list item with the same contents and attributes. The unindented lines are called [lazy continuation line](@)s. Here is an example with [lazy continuation lines]: ```````````````````````````````` example 1. A paragraph with two lines. indented code > A block quote. .
      1. A paragraph with two lines.

        indented code
        

        A block quote.

      ```````````````````````````````` Indentation can be partially deleted: ```````````````````````````````` example 1. A paragraph with two lines. .
      1. A paragraph with two lines.
      ```````````````````````````````` These examples show how laziness can work in nested structures: ```````````````````````````````` example > 1. > Blockquote continued here. .
      1. Blockquote continued here.

      ```````````````````````````````` ```````````````````````````````` example > 1. > Blockquote > continued here. .
      1. Blockquote continued here.

      ```````````````````````````````` 6. **That's all.** Nothing that is not counted as a list item by rules #1--5 counts as a [list item](#list-items). The rules for sublists follow from the general rules [above][List items]. A sublist must be indented the same number of spaces a paragraph would need to be in order to be included in the list item. So, in this case we need two spaces indent: ```````````````````````````````` example - foo - bar - baz - boo .
      • foo
        • bar
          • baz
            • boo
      ```````````````````````````````` One is not enough: ```````````````````````````````` example - foo - bar - baz - boo .
      • foo
      • bar
      • baz
      • boo
      ```````````````````````````````` Here we need four, because the list marker is wider: ```````````````````````````````` example 10) foo - bar .
      1. foo
        • bar
      ```````````````````````````````` Three is not enough: ```````````````````````````````` example 10) foo - bar .
      1. foo
      • bar
      ```````````````````````````````` A list may be the first block in a list item: ```````````````````````````````` example - - foo .
        • foo
      ```````````````````````````````` ```````````````````````````````` example 1. - 2. foo .
          1. foo
      ```````````````````````````````` A list item can contain a heading: ```````````````````````````````` example - # Foo - Bar --- baz .
      • Foo

      • Bar

        baz
      ```````````````````````````````` ### Motivation John Gruber's Markdown spec says the following about list items: 1. "List markers typically start at the left margin, but may be indented by up to three spaces. List markers must be followed by one or more spaces or a tab." 2. "To make lists look nice, you can wrap items with hanging indents.... But if you don't want to, you don't have to." 3. "List items may consist of multiple paragraphs. Each subsequent paragraph in a list item must be indented by either 4 spaces or one tab." 4. "It looks nice if you indent every line of the subsequent paragraphs, but here again, Markdown will allow you to be lazy." 5. "To put a blockquote within a list item, the blockquote's `>` delimiters need to be indented." 6. "To put a code block within a list item, the code block needs to be indented twice — 8 spaces or two tabs." These rules specify that a paragraph under a list item must be indented four spaces (presumably, from the left margin, rather than the start of the list marker, but this is not said), and that code under a list item must be indented eight spaces instead of the usual four. They also say that a block quote must be indented, but not by how much; however, the example given has four spaces indentation. Although nothing is said about other kinds of block-level content, it is certainly reasonable to infer that *all* block elements under a list item, including other lists, must be indented four spaces. This principle has been called the *four-space rule*. The four-space rule is clear and principled, and if the reference implementation `Markdown.pl` had followed it, it probably would have become the standard. However, `Markdown.pl` allowed paragraphs and sublists to start with only two spaces indentation, at least on the outer level. Worse, its behavior was inconsistent: a sublist of an outer-level list needed two spaces indentation, but a sublist of this sublist needed three spaces. It is not surprising, then, that different implementations of Markdown have developed very different rules for determining what comes under a list item. (Pandoc and python-Markdown, for example, stuck with Gruber's syntax description and the four-space rule, while discount, redcarpet, marked, PHP Markdown, and others followed `Markdown.pl`'s behavior more closely.) Unfortunately, given the divergences between implementations, there is no way to give a spec for list items that will be guaranteed not to break any existing documents. However, the spec given here should correctly handle lists formatted with either the four-space rule or the more forgiving `Markdown.pl` behavior, provided they are laid out in a way that is natural for a human to read. The strategy here is to let the width and indentation of the list marker determine the indentation necessary for blocks to fall under the list item, rather than having a fixed and arbitrary number. The writer can think of the body of the list item as a unit which gets indented to the right enough to fit the list marker (and any indentation on the list marker). (The laziness rule, #5, then allows continuation lines to be unindented if needed.) This rule is superior, we claim, to any rule requiring a fixed level of indentation from the margin. The four-space rule is clear but unnatural. It is quite unintuitive that ``` markdown - foo bar - baz ``` should be parsed as two lists with an intervening paragraph, ``` html
      • foo

      bar

      • baz
      ``` as the four-space rule demands, rather than a single list, ``` html
      • foo

        bar

        • baz
      ``` The choice of four spaces is arbitrary. It can be learned, but it is not likely to be guessed, and it trips up beginners regularly. Would it help to adopt a two-space rule? The problem is that such a rule, together with the rule allowing 1--3 spaces indentation of the initial list marker, allows text that is indented *less than* the original list marker to be included in the list item. For example, `Markdown.pl` parses ``` markdown - one two ``` as a single list item, with `two` a continuation paragraph: ``` html
      • one

        two

      ``` and similarly ``` markdown > - one > > two ``` as ``` html
      • one

        two

      ``` This is extremely unintuitive. Rather than requiring a fixed indent from the margin, we could require a fixed indent (say, two spaces, or even one space) from the list marker (which may itself be indented). This proposal would remove the last anomaly discussed. Unlike the spec presented above, it would count the following as a list item with a subparagraph, even though the paragraph `bar` is not indented as far as the first paragraph `foo`: ``` markdown 10. foo bar ``` Arguably this text does read like a list item with `bar` as a subparagraph, which may count in favor of the proposal. However, on this proposal indented code would have to be indented six spaces after the list marker. And this would break a lot of existing Markdown, which has the pattern: ``` markdown 1. foo indented code ``` where the code is indented eight spaces. The spec above, by contrast, will parse this text as expected, since the code block's indentation is measured from the beginning of `foo`. The one case that needs special treatment is a list item that *starts* with indented code. How much indentation is required in that case, since we don't have a "first paragraph" to measure from? Rule #2 simply stipulates that in such cases, we require one space indentation from the list marker (and then the normal four spaces for the indented code). This will match the four-space rule in cases where the list marker plus its initial indentation takes four spaces (a common case), but diverge in other cases. ## Lists A [list](@) is a sequence of one or more list items [of the same type]. The list items may be separated by any number of blank lines. Two list items are [of the same type](@) if they begin with a [list marker] of the same type. Two list markers are of the same type if (a) they are bullet list markers using the same character (`-`, `+`, or `*`) or (b) they are ordered list numbers with the same delimiter (either `.` or `)`). A list is an [ordered list](@) if its constituent list items begin with [ordered list markers], and a [bullet list](@) if its constituent list items begin with [bullet list markers]. The [start number](@) of an [ordered list] is determined by the list number of its initial list item. The numbers of subsequent list items are disregarded. A list is [loose](@) if any of its constituent list items are separated by blank lines, or if any of its constituent list items directly contain two block-level elements with a blank line between them. Otherwise a list is [tight](@). (The difference in HTML output is that paragraphs in a loose list are wrapped in `

      ` tags, while paragraphs in a tight list are not.) Changing the bullet or ordered list delimiter starts a new list: ```````````````````````````````` example - foo - bar + baz .

      • foo
      • bar
      • baz
      ```````````````````````````````` ```````````````````````````````` example 1. foo 2. bar 3) baz .
      1. foo
      2. bar
      1. baz
      ```````````````````````````````` In CommonMark, a list can interrupt a paragraph. That is, no blank line is needed to separate a paragraph from a following list: ```````````````````````````````` example Foo - bar - baz .

      Foo

      • bar
      • baz
      ```````````````````````````````` `Markdown.pl` does not allow this, through fear of triggering a list via a numeral in a hard-wrapped line: ``` markdown The number of windows in my house is 14. The number of doors is 6. ``` Oddly, though, `Markdown.pl` *does* allow a blockquote to interrupt a paragraph, even though the same considerations might apply. In CommonMark, we do allow lists to interrupt paragraphs, for two reasons. First, it is natural and not uncommon for people to start lists without blank lines: ``` markdown I need to buy - new shoes - a coat - a plane ticket ``` Second, we are attracted to a > [principle of uniformity](@): > if a chunk of text has a certain > meaning, it will continue to have the same meaning when put into a > container block (such as a list item or blockquote). (Indeed, the spec for [list items] and [block quotes] presupposes this principle.) This principle implies that if ``` markdown * I need to buy - new shoes - a coat - a plane ticket ``` is a list item containing a paragraph followed by a nested sublist, as all Markdown implementations agree it is (though the paragraph may be rendered without `

      ` tags, since the list is "tight"), then ``` markdown I need to buy - new shoes - a coat - a plane ticket ``` by itself should be a paragraph followed by a nested sublist. Since it is well established Markdown practice to allow lists to interrupt paragraphs inside list items, the [principle of uniformity] requires us to allow this outside list items as well. ([reStructuredText](http://docutils.sourceforge.net/rst.html) takes a different approach, requiring blank lines before lists even inside other list items.) In order to solve of unwanted lists in paragraphs with hard-wrapped numerals, we allow only lists starting with `1` to interrupt paragraphs. Thus, ```````````````````````````````` example The number of windows in my house is 14. The number of doors is 6. .

      The number of windows in my house is 14. The number of doors is 6.

      ```````````````````````````````` We may still get an unintended result in cases like ```````````````````````````````` example The number of windows in my house is 1. The number of doors is 6. .

      The number of windows in my house is

      1. The number of doors is 6.
      ```````````````````````````````` but this rule should prevent most spurious list captures. There can be any number of blank lines between items: ```````````````````````````````` example - foo - bar - baz .
      • foo

      • bar

      • baz

      ```````````````````````````````` ```````````````````````````````` example - foo - bar - baz bim .
      • foo
        • bar
          • baz

            bim

      ```````````````````````````````` To separate consecutive lists of the same type, or to separate a list from an indented code block that would otherwise be parsed as a subparagraph of the final list item, you can insert a blank HTML comment: ```````````````````````````````` example - foo - bar - baz - bim .
      • foo
      • bar
      • baz
      • bim
      ```````````````````````````````` ```````````````````````````````` example - foo notcode - foo code .
      • foo

        notcode

      • foo

      code
      
      ```````````````````````````````` List items need not be indented to the same level. The following list items will be treated as items at the same list level, since none is indented enough to belong to the previous list item: ```````````````````````````````` example - a - b - c - d - e - f - g .
      • a
      • b
      • c
      • d
      • e
      • f
      • g
      ```````````````````````````````` ```````````````````````````````` example 1. a 2. b 3. c .
      1. a

      2. b

      3. c

      ```````````````````````````````` Note, however, that list items may not be indented more than three spaces. Here `- e` is treated as a paragraph continuation line, because it is indented more than three spaces: ```````````````````````````````` example - a - b - c - d - e .
      • a
      • b
      • c
      • d - e
      ```````````````````````````````` And here, `3. c` is treated as in indented code block, because it is indented four spaces and preceded by a blank line. ```````````````````````````````` example 1. a 2. b 3. c .
      1. a

      2. b

      3. c
      
      ```````````````````````````````` This is a loose list, because there is a blank line between two of the list items: ```````````````````````````````` example - a - b - c .
      • a

      • b

      • c

      ```````````````````````````````` So is this, with a empty second item: ```````````````````````````````` example * a * * c .
      • a

      • c

      ```````````````````````````````` These are loose lists, even though there is no space between the items, because one of the items directly contains two block-level elements with a blank line between them: ```````````````````````````````` example - a - b c - d .
      • a

      • b

        c

      • d

      ```````````````````````````````` ```````````````````````````````` example - a - b [ref]: /url - d .
      • a

      • b

      • d

      ```````````````````````````````` This is a tight list, because the blank lines are in a code block: ```````````````````````````````` example - a - ``` b ``` - c .
      • a
      • b
        
        
        
      • c
      ```````````````````````````````` This is a tight list, because the blank line is between two paragraphs of a sublist. So the sublist is loose while the outer list is tight: ```````````````````````````````` example - a - b c - d .
      • a
        • b

          c

      • d
      ```````````````````````````````` This is a tight list, because the blank line is inside the block quote: ```````````````````````````````` example * a > b > * c .
      • a

        b

      • c
      ```````````````````````````````` This list is tight, because the consecutive block elements are not separated by blank lines: ```````````````````````````````` example - a > b ``` c ``` - d .
      • a

        b

        c
        
      • d
      ```````````````````````````````` A single-paragraph list is tight: ```````````````````````````````` example - a .
      • a
      ```````````````````````````````` ```````````````````````````````` example - a - b .
      • a
        • b
      ```````````````````````````````` This list is loose, because of the blank line between the two block elements in the list item: ```````````````````````````````` example 1. ``` foo ``` bar .
      1. foo
        

        bar

      ```````````````````````````````` Here the outer list is loose, the inner list tight: ```````````````````````````````` example * foo * bar baz .
      • foo

        • bar

        baz

      ```````````````````````````````` ```````````````````````````````` example - a - b - c - d - e - f .
      • a

        • b
        • c
      • d

        • e
        • f
      ```````````````````````````````` # Inlines Inlines are parsed sequentially from the beginning of the character stream to the end (left to right, in left-to-right languages). Thus, for example, in ```````````````````````````````` example `hi`lo` .

      hilo`

      ```````````````````````````````` `hi` is parsed as code, leaving the backtick at the end as a literal backtick. ## Backslash escapes Any ASCII punctuation character may be backslash-escaped: ```````````````````````````````` example \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\`\{\|\}\~ .

      !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

      ```````````````````````````````` Backslashes before other characters are treated as literal backslashes: ```````````````````````````````` example \→\A\a\ \3\φ\« .

      \→\A\a\ \3\φ\«

      ```````````````````````````````` Escaped characters are treated as regular characters and do not have their usual Markdown meanings: ```````````````````````````````` example \*not emphasized* \
      not a tag \[not a link](/foo) \`not code` 1\. not a list \* not a list \# not a heading \[foo]: /url "not a reference" \ö not a character entity .

      *not emphasized* <br/> not a tag [not a link](/foo) `not code` 1. not a list * not a list # not a heading [foo]: /url "not a reference" &ouml; not a character entity

      ```````````````````````````````` If a backslash is itself escaped, the following character is not: ```````````````````````````````` example \\*emphasis* .

      \emphasis

      ```````````````````````````````` A backslash at the end of the line is a [hard line break]: ```````````````````````````````` example foo\ bar .

      foo
      bar

      ```````````````````````````````` Backslash escapes do not work in code blocks, code spans, autolinks, or raw HTML: ```````````````````````````````` example `` \[\` `` .

      \[\`

      ```````````````````````````````` ```````````````````````````````` example \[\] .
      \[\]
      
      ```````````````````````````````` ```````````````````````````````` example ~~~ \[\] ~~~ .
      \[\]
      
      ```````````````````````````````` ```````````````````````````````` example .

      http://example.com?find=\*

      ```````````````````````````````` ```````````````````````````````` example . ```````````````````````````````` But they work in all other contexts, including URLs and link titles, link references, and [info strings] in [fenced code blocks]: ```````````````````````````````` example [foo](/bar\* "ti\*tle") .

      foo

      ```````````````````````````````` ```````````````````````````````` example [foo] [foo]: /bar\* "ti\*tle" .

      foo

      ```````````````````````````````` ```````````````````````````````` example ``` foo\+bar foo ``` .
      foo
      
      ```````````````````````````````` ## Entity and numeric character references Valid HTML entity references and numeric character references can be used in place of the corresponding Unicode character, with the following exceptions: - Entity and character references are not recognized in code blocks and code spans. - Entity and character references cannot stand in place of special characters that define structural elements in CommonMark. For example, although `*` can be used in place of a literal `*` character, `*` cannot replace `*` in emphasis delimiters, bullet list markers, or thematic breaks. Conforming CommonMark parsers need not store information about whether a particular character was represented in the source using a Unicode character or an entity reference. [Entity references](@) consist of `&` + any of the valid HTML5 entity names + `;`. The document is used as an authoritative source for the valid entity references and their corresponding code points. ```````````````````````````````` example   & © Æ Ď ¾ ℋ ⅆ ∲ ≧̸ .

        & © Æ Ď ¾ ℋ ⅆ ∲ ≧̸

      ```````````````````````````````` [Decimal numeric character references](@) consist of `&#` + a string of 1--7 arabic digits + `;`. A numeric character reference is parsed as the corresponding Unicode character. Invalid Unicode code points will be replaced by the REPLACEMENT CHARACTER (`U+FFFD`). For security reasons, the code point `U+0000` will also be replaced by `U+FFFD`. ```````````````````````````````` example # Ӓ Ϡ � .

      # Ӓ Ϡ �

      ```````````````````````````````` [Hexadecimal numeric character references](@) consist of `&#` + either `X` or `x` + a string of 1-6 hexadecimal digits + `;`. They too are parsed as the corresponding Unicode character (this time specified with a hexadecimal numeral instead of decimal). ```````````````````````````````` example " ആ ಫ .

      " ആ ಫ

      ```````````````````````````````` Here are some nonentities: ```````````````````````````````` example   &x; &#; &#x; � &#abcdef0; &ThisIsNotDefined; &hi?; .

      &nbsp &x; &#; &#x; &#87654321; &#abcdef0; &ThisIsNotDefined; &hi?;

      ```````````````````````````````` Although HTML5 does accept some entity references without a trailing semicolon (such as `©`), these are not recognized here, because it makes the grammar too ambiguous: ```````````````````````````````` example © .

      &copy

      ```````````````````````````````` Strings that are not on the list of HTML5 named entities are not recognized as entity references either: ```````````````````````````````` example &MadeUpEntity; .

      &MadeUpEntity;

      ```````````````````````````````` Entity and numeric character references are recognized in any context besides code spans or code blocks, including URLs, [link titles], and [fenced code block][] [info strings]: ```````````````````````````````` example . ```````````````````````````````` ```````````````````````````````` example [foo](/föö "föö") .

      foo

      ```````````````````````````````` ```````````````````````````````` example [foo] [foo]: /föö "föö" .

      foo

      ```````````````````````````````` ```````````````````````````````` example ``` föö foo ``` .
      foo
      
      ```````````````````````````````` Entity and numeric character references are treated as literal text in code spans and code blocks: ```````````````````````````````` example `föö` .

      f&ouml;&ouml;

      ```````````````````````````````` ```````````````````````````````` example föfö .
      f&ouml;f&ouml;
      
      ```````````````````````````````` Entity and numeric character references cannot be used in place of symbols indicating structure in CommonMark documents. ```````````````````````````````` example *foo* *foo* .

      *foo* foo

      ```````````````````````````````` ```````````````````````````````` example * foo * foo .

      * foo

      • foo
      ```````````````````````````````` ```````````````````````````````` example foo bar .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example foo .

      →foo

      ```````````````````````````````` ```````````````````````````````` example [a](url "tit") .

      [a](url "tit")

      ```````````````````````````````` ## Code spans A [backtick string](@) is a string of one or more backtick characters (`` ` ``) that is neither preceded nor followed by a backtick. A [code span](@) begins with a backtick string and ends with a backtick string of equal length. The contents of the code span are the characters between the two backtick strings, normalized in the following ways: - First, [line endings] are converted to [spaces]. - If the resulting string both begins *and* ends with a [space] character, but does not consist entirely of [space] characters, a single [space] character is removed from the front and back. This allows you to include code that begins or ends with backtick characters, which must be separated by whitespace from the opening or closing backtick strings. This is a simple code span: ```````````````````````````````` example `foo` .

      foo

      ```````````````````````````````` Here two backticks are used, because the code contains a backtick. This example also illustrates stripping of a single leading and trailing space: ```````````````````````````````` example `` foo ` bar `` .

      foo ` bar

      ```````````````````````````````` This example shows the motivation for stripping leading and trailing spaces: ```````````````````````````````` example ` `` ` .

      ``

      ```````````````````````````````` Note that only *one* space is stripped: ```````````````````````````````` example ` `` ` .

      ``

      ```````````````````````````````` The stripping only happens if the space is on both sides of the string: ```````````````````````````````` example ` a` .

      a

      ```````````````````````````````` Only [spaces], and not [unicode whitespace] in general, are stripped in this way: ```````````````````````````````` example ` b ` .

       b 

      ```````````````````````````````` No stripping occurs if the code span contains only spaces: ```````````````````````````````` example ` ` ` ` .

       

      ```````````````````````````````` [Line endings] are treated like spaces: ```````````````````````````````` example `` foo bar baz `` .

      foo bar baz

      ```````````````````````````````` ```````````````````````````````` example `` foo `` .

      foo

      ```````````````````````````````` Interior spaces are not collapsed: ```````````````````````````````` example `foo bar baz` .

      foo bar baz

      ```````````````````````````````` Note that browsers will typically collapse consecutive spaces when rendering `` elements, so it is recommended that the following CSS be used: code{white-space: pre-wrap;} Note that backslash escapes do not work in code spans. All backslashes are treated literally: ```````````````````````````````` example `foo\`bar` .

      foo\bar`

      ```````````````````````````````` Backslash escapes are never needed, because one can always choose a string of *n* backtick characters as delimiters, where the code does not contain any strings of exactly *n* backtick characters. ```````````````````````````````` example ``foo`bar`` .

      foo`bar

      ```````````````````````````````` ```````````````````````````````` example ` foo `` bar ` .

      foo `` bar

      ```````````````````````````````` Code span backticks have higher precedence than any other inline constructs except HTML tags and autolinks. Thus, for example, this is not parsed as emphasized text, since the second `*` is part of a code span: ```````````````````````````````` example *foo`*` .

      *foo*

      ```````````````````````````````` And this is not parsed as a link: ```````````````````````````````` example [not a `link](/foo`) .

      [not a link](/foo)

      ```````````````````````````````` Code spans, HTML tags, and autolinks have the same precedence. Thus, this is code: ```````````````````````````````` example `` .

      <a href="">`

      ```````````````````````````````` But this is an HTML tag: ```````````````````````````````` example
      ` .

      `

      ```````````````````````````````` And this is code: ```````````````````````````````` example `` .

      <http://foo.bar.baz>`

      ```````````````````````````````` But this is an autolink: ```````````````````````````````` example ` .

      http://foo.bar.`baz`

      ```````````````````````````````` When a backtick string is not closed by a matching backtick string, we just have literal backticks: ```````````````````````````````` example ```foo`` .

      ```foo``

      ```````````````````````````````` ```````````````````````````````` example `foo .

      `foo

      ```````````````````````````````` The following case also illustrates the need for opening and closing backtick strings to be equal in length: ```````````````````````````````` example `foo``bar`` .

      `foobar

      ```````````````````````````````` ## Emphasis and strong emphasis John Gruber's original [Markdown syntax description](http://daringfireball.net/projects/markdown/syntax#em) says: > Markdown treats asterisks (`*`) and underscores (`_`) as indicators of > emphasis. Text wrapped with one `*` or `_` will be wrapped with an HTML > `` tag; double `*`'s or `_`'s will be wrapped with an HTML `` > tag. This is enough for most users, but these rules leave much undecided, especially when it comes to nested emphasis. The original `Markdown.pl` test suite makes it clear that triple `***` and `___` delimiters can be used for strong emphasis, and most implementations have also allowed the following patterns: ``` markdown ***strong emph*** ***strong** in emph* ***emph* in strong** **in strong *emph*** *in emph **strong*** ``` The following patterns are less widely supported, but the intent is clear and they are useful (especially in contexts like bibliography entries): ``` markdown *emph *with emph* in it* **strong **with strong** in it** ``` Many implementations have also restricted intraword emphasis to the `*` forms, to avoid unwanted emphasis in words containing internal underscores. (It is best practice to put these in code spans, but users often do not.) ``` markdown internal emphasis: foo*bar*baz no emphasis: foo_bar_baz ``` The rules given below capture all of these patterns, while allowing for efficient parsing strategies that do not backtrack. First, some definitions. A [delimiter run](@) is either a sequence of one or more `*` characters that is not preceded or followed by a non-backslash-escaped `*` character, or a sequence of one or more `_` characters that is not preceded or followed by a non-backslash-escaped `_` character. A [left-flanking delimiter run](@) is a [delimiter run] that is (1) not followed by [Unicode whitespace], and either (2a) not followed by a [punctuation character], or (2b) followed by a [punctuation character] and preceded by [Unicode whitespace] or a [punctuation character]. For purposes of this definition, the beginning and the end of the line count as Unicode whitespace. A [right-flanking delimiter run](@) is a [delimiter run] that is (1) not preceded by [Unicode whitespace], and either (2a) not preceded by a [punctuation character], or (2b) preceded by a [punctuation character] and followed by [Unicode whitespace] or a [punctuation character]. For purposes of this definition, the beginning and the end of the line count as Unicode whitespace. Here are some examples of delimiter runs. - left-flanking but not right-flanking: ``` ***abc _abc **"abc" _"abc" ``` - right-flanking but not left-flanking: ``` abc*** abc_ "abc"** "abc"_ ``` - Both left and right-flanking: ``` abc***def "abc"_"def" ``` - Neither left nor right-flanking: ``` abc *** def a _ b ``` (The idea of distinguishing left-flanking and right-flanking delimiter runs based on the character before and the character after comes from Roopesh Chander's [vfmd](http://www.vfmd.org/vfmd-spec/specification/#procedure-for-identifying-emphasis-tags). vfmd uses the terminology "emphasis indicator string" instead of "delimiter run," and its rules for distinguishing left- and right-flanking runs are a bit more complex than the ones given here.) The following rules define emphasis and strong emphasis: 1. A single `*` character [can open emphasis](@) iff (if and only if) it is part of a [left-flanking delimiter run]. 2. A single `_` character [can open emphasis] iff it is part of a [left-flanking delimiter run] and either (a) not part of a [right-flanking delimiter run] or (b) part of a [right-flanking delimiter run] preceded by punctuation. 3. A single `*` character [can close emphasis](@) iff it is part of a [right-flanking delimiter run]. 4. A single `_` character [can close emphasis] iff it is part of a [right-flanking delimiter run] and either (a) not part of a [left-flanking delimiter run] or (b) part of a [left-flanking delimiter run] followed by punctuation. 5. A double `**` [can open strong emphasis](@) iff it is part of a [left-flanking delimiter run]. 6. A double `__` [can open strong emphasis] iff it is part of a [left-flanking delimiter run] and either (a) not part of a [right-flanking delimiter run] or (b) part of a [right-flanking delimiter run] preceded by punctuation. 7. A double `**` [can close strong emphasis](@) iff it is part of a [right-flanking delimiter run]. 8. A double `__` [can close strong emphasis] iff it is part of a [right-flanking delimiter run] and either (a) not part of a [left-flanking delimiter run] or (b) part of a [left-flanking delimiter run] followed by punctuation. 9. Emphasis begins with a delimiter that [can open emphasis] and ends with a delimiter that [can close emphasis], and that uses the same character (`_` or `*`) as the opening delimiter. The opening and closing delimiters must belong to separate [delimiter runs]. If one of the delimiters can both open and close emphasis, then the sum of the lengths of the delimiter runs containing the opening and closing delimiters must not be a multiple of 3 unless both lengths are multiples of 3. 10. Strong emphasis begins with a delimiter that [can open strong emphasis] and ends with a delimiter that [can close strong emphasis], and that uses the same character (`_` or `*`) as the opening delimiter. The opening and closing delimiters must belong to separate [delimiter runs]. If one of the delimiters can both open and close strong emphasis, then the sum of the lengths of the delimiter runs containing the opening and closing delimiters must not be a multiple of 3 unless both lengths are multiples of 3. 11. A literal `*` character cannot occur at the beginning or end of `*`-delimited emphasis or `**`-delimited strong emphasis, unless it is backslash-escaped. 12. A literal `_` character cannot occur at the beginning or end of `_`-delimited emphasis or `__`-delimited strong emphasis, unless it is backslash-escaped. Where rules 1--12 above are compatible with multiple parsings, the following principles resolve ambiguity: 13. The number of nestings should be minimized. Thus, for example, an interpretation `...` is always preferred to `...`. 14. An interpretation `...` is always preferred to `...`. 15. When two potential emphasis or strong emphasis spans overlap, so that the second begins before the first ends and ends after the first ends, the first takes precedence. Thus, for example, `*foo _bar* baz_` is parsed as `foo _bar baz_` rather than `*foo bar* baz`. 16. When there are two potential emphasis or strong emphasis spans with the same closing delimiter, the shorter one (the one that opens later) takes precedence. Thus, for example, `**foo **bar baz**` is parsed as `**foo bar baz` rather than `foo **bar baz`. 17. Inline code spans, links, images, and HTML tags group more tightly than emphasis. So, when there is a choice between an interpretation that contains one of these elements and one that does not, the former always wins. Thus, for example, `*[foo*](bar)` is parsed as `*foo*` rather than as `[foo](bar)`. These rules can be illustrated through a series of examples. Rule 1: ```````````````````````````````` example *foo bar* .

      foo bar

      ```````````````````````````````` This is not emphasis, because the opening `*` is followed by whitespace, and hence not part of a [left-flanking delimiter run]: ```````````````````````````````` example a * foo bar* .

      a * foo bar*

      ```````````````````````````````` This is not emphasis, because the opening `*` is preceded by an alphanumeric and followed by punctuation, and hence not part of a [left-flanking delimiter run]: ```````````````````````````````` example a*"foo"* .

      a*"foo"*

      ```````````````````````````````` Unicode nonbreaking spaces count as whitespace, too: ```````````````````````````````` example * a * .

      * a *

      ```````````````````````````````` Intraword emphasis with `*` is permitted: ```````````````````````````````` example foo*bar* .

      foobar

      ```````````````````````````````` ```````````````````````````````` example 5*6*78 .

      5678

      ```````````````````````````````` Rule 2: ```````````````````````````````` example _foo bar_ .

      foo bar

      ```````````````````````````````` This is not emphasis, because the opening `_` is followed by whitespace: ```````````````````````````````` example _ foo bar_ .

      _ foo bar_

      ```````````````````````````````` This is not emphasis, because the opening `_` is preceded by an alphanumeric and followed by punctuation: ```````````````````````````````` example a_"foo"_ .

      a_"foo"_

      ```````````````````````````````` Emphasis with `_` is not allowed inside words: ```````````````````````````````` example foo_bar_ .

      foo_bar_

      ```````````````````````````````` ```````````````````````````````` example 5_6_78 .

      5_6_78

      ```````````````````````````````` ```````````````````````````````` example пристаням_стремятся_ .

      пристаням_стремятся_

      ```````````````````````````````` Here `_` does not generate emphasis, because the first delimiter run is right-flanking and the second left-flanking: ```````````````````````````````` example aa_"bb"_cc .

      aa_"bb"_cc

      ```````````````````````````````` This is emphasis, even though the opening delimiter is both left- and right-flanking, because it is preceded by punctuation: ```````````````````````````````` example foo-_(bar)_ .

      foo-(bar)

      ```````````````````````````````` Rule 3: This is not emphasis, because the closing delimiter does not match the opening delimiter: ```````````````````````````````` example _foo* .

      _foo*

      ```````````````````````````````` This is not emphasis, because the closing `*` is preceded by whitespace: ```````````````````````````````` example *foo bar * .

      *foo bar *

      ```````````````````````````````` A newline also counts as whitespace: ```````````````````````````````` example *foo bar * .

      *foo bar *

      ```````````````````````````````` This is not emphasis, because the second `*` is preceded by punctuation and followed by an alphanumeric (hence it is not part of a [right-flanking delimiter run]: ```````````````````````````````` example *(*foo) .

      *(*foo)

      ```````````````````````````````` The point of this restriction is more easily appreciated with this example: ```````````````````````````````` example *(*foo*)* .

      (foo)

      ```````````````````````````````` Intraword emphasis with `*` is allowed: ```````````````````````````````` example *foo*bar .

      foobar

      ```````````````````````````````` Rule 4: This is not emphasis, because the closing `_` is preceded by whitespace: ```````````````````````````````` example _foo bar _ .

      _foo bar _

      ```````````````````````````````` This is not emphasis, because the second `_` is preceded by punctuation and followed by an alphanumeric: ```````````````````````````````` example _(_foo) .

      _(_foo)

      ```````````````````````````````` This is emphasis within emphasis: ```````````````````````````````` example _(_foo_)_ .

      (foo)

      ```````````````````````````````` Intraword emphasis is disallowed for `_`: ```````````````````````````````` example _foo_bar .

      _foo_bar

      ```````````````````````````````` ```````````````````````````````` example _пристаням_стремятся .

      _пристаням_стремятся

      ```````````````````````````````` ```````````````````````````````` example _foo_bar_baz_ .

      foo_bar_baz

      ```````````````````````````````` This is emphasis, even though the closing delimiter is both left- and right-flanking, because it is followed by punctuation: ```````````````````````````````` example _(bar)_. .

      (bar).

      ```````````````````````````````` Rule 5: ```````````````````````````````` example **foo bar** .

      foo bar

      ```````````````````````````````` This is not strong emphasis, because the opening delimiter is followed by whitespace: ```````````````````````````````` example ** foo bar** .

      ** foo bar**

      ```````````````````````````````` This is not strong emphasis, because the opening `**` is preceded by an alphanumeric and followed by punctuation, and hence not part of a [left-flanking delimiter run]: ```````````````````````````````` example a**"foo"** .

      a**"foo"**

      ```````````````````````````````` Intraword strong emphasis with `**` is permitted: ```````````````````````````````` example foo**bar** .

      foobar

      ```````````````````````````````` Rule 6: ```````````````````````````````` example __foo bar__ .

      foo bar

      ```````````````````````````````` This is not strong emphasis, because the opening delimiter is followed by whitespace: ```````````````````````````````` example __ foo bar__ .

      __ foo bar__

      ```````````````````````````````` A newline counts as whitespace: ```````````````````````````````` example __ foo bar__ .

      __ foo bar__

      ```````````````````````````````` This is not strong emphasis, because the opening `__` is preceded by an alphanumeric and followed by punctuation: ```````````````````````````````` example a__"foo"__ .

      a__"foo"__

      ```````````````````````````````` Intraword strong emphasis is forbidden with `__`: ```````````````````````````````` example foo__bar__ .

      foo__bar__

      ```````````````````````````````` ```````````````````````````````` example 5__6__78 .

      5__6__78

      ```````````````````````````````` ```````````````````````````````` example пристаням__стремятся__ .

      пристаням__стремятся__

      ```````````````````````````````` ```````````````````````````````` example __foo, __bar__, baz__ .

      foo, bar, baz

      ```````````````````````````````` This is strong emphasis, even though the opening delimiter is both left- and right-flanking, because it is preceded by punctuation: ```````````````````````````````` example foo-__(bar)__ .

      foo-(bar)

      ```````````````````````````````` Rule 7: This is not strong emphasis, because the closing delimiter is preceded by whitespace: ```````````````````````````````` example **foo bar ** .

      **foo bar **

      ```````````````````````````````` (Nor can it be interpreted as an emphasized `*foo bar *`, because of Rule 11.) This is not strong emphasis, because the second `**` is preceded by punctuation and followed by an alphanumeric: ```````````````````````````````` example **(**foo) .

      **(**foo)

      ```````````````````````````````` The point of this restriction is more easily appreciated with these examples: ```````````````````````````````` example *(**foo**)* .

      (foo)

      ```````````````````````````````` ```````````````````````````````` example **Gomphocarpus (*Gomphocarpus physocarpus*, syn. *Asclepias physocarpa*)** .

      Gomphocarpus (Gomphocarpus physocarpus, syn. Asclepias physocarpa)

      ```````````````````````````````` ```````````````````````````````` example **foo "*bar*" foo** .

      foo "bar" foo

      ```````````````````````````````` Intraword emphasis: ```````````````````````````````` example **foo**bar .

      foobar

      ```````````````````````````````` Rule 8: This is not strong emphasis, because the closing delimiter is preceded by whitespace: ```````````````````````````````` example __foo bar __ .

      __foo bar __

      ```````````````````````````````` This is not strong emphasis, because the second `__` is preceded by punctuation and followed by an alphanumeric: ```````````````````````````````` example __(__foo) .

      __(__foo)

      ```````````````````````````````` The point of this restriction is more easily appreciated with this example: ```````````````````````````````` example _(__foo__)_ .

      (foo)

      ```````````````````````````````` Intraword strong emphasis is forbidden with `__`: ```````````````````````````````` example __foo__bar .

      __foo__bar

      ```````````````````````````````` ```````````````````````````````` example __пристаням__стремятся .

      __пристаням__стремятся

      ```````````````````````````````` ```````````````````````````````` example __foo__bar__baz__ .

      foo__bar__baz

      ```````````````````````````````` This is strong emphasis, even though the closing delimiter is both left- and right-flanking, because it is followed by punctuation: ```````````````````````````````` example __(bar)__. .

      (bar).

      ```````````````````````````````` Rule 9: Any nonempty sequence of inline elements can be the contents of an emphasized span. ```````````````````````````````` example *foo [bar](/url)* .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example *foo bar* .

      foo bar

      ```````````````````````````````` In particular, emphasis and strong emphasis can be nested inside emphasis: ```````````````````````````````` example _foo __bar__ baz_ .

      foo bar baz

      ```````````````````````````````` ```````````````````````````````` example _foo _bar_ baz_ .

      foo bar baz

      ```````````````````````````````` ```````````````````````````````` example __foo_ bar_ .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example *foo *bar** .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example *foo **bar** baz* .

      foo bar baz

      ```````````````````````````````` ```````````````````````````````` example *foo**bar**baz* .

      foobarbaz

      ```````````````````````````````` Note that in the preceding case, the interpretation ``` markdown

      foobarbaz

      ``` is precluded by the condition that a delimiter that can both open and close (like the `*` after `foo`) cannot form emphasis if the sum of the lengths of the delimiter runs containing the opening and closing delimiters is a multiple of 3 unless both lengths are multiples of 3. For the same reason, we don't get two consecutive emphasis sections in this example: ```````````````````````````````` example *foo**bar* .

      foo**bar

      ```````````````````````````````` The same condition ensures that the following cases are all strong emphasis nested inside emphasis, even when the interior spaces are omitted: ```````````````````````````````` example ***foo** bar* .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example *foo **bar*** .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example *foo**bar*** .

      foobar

      ```````````````````````````````` When the lengths of the interior closing and opening delimiter runs are *both* multiples of 3, though, they can match to create emphasis: ```````````````````````````````` example foo***bar***baz .

      foobarbaz

      ```````````````````````````````` ```````````````````````````````` example foo******bar*********baz .

      foobar***baz

      ```````````````````````````````` Indefinite levels of nesting are possible: ```````````````````````````````` example *foo **bar *baz* bim** bop* .

      foo bar baz bim bop

      ```````````````````````````````` ```````````````````````````````` example *foo [*bar*](/url)* .

      foo bar

      ```````````````````````````````` There can be no empty emphasis or strong emphasis: ```````````````````````````````` example ** is not an empty emphasis .

      ** is not an empty emphasis

      ```````````````````````````````` ```````````````````````````````` example **** is not an empty strong emphasis .

      **** is not an empty strong emphasis

      ```````````````````````````````` Rule 10: Any nonempty sequence of inline elements can be the contents of an strongly emphasized span. ```````````````````````````````` example **foo [bar](/url)** .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example **foo bar** .

      foo bar

      ```````````````````````````````` In particular, emphasis and strong emphasis can be nested inside strong emphasis: ```````````````````````````````` example __foo _bar_ baz__ .

      foo bar baz

      ```````````````````````````````` ```````````````````````````````` example __foo __bar__ baz__ .

      foo bar baz

      ```````````````````````````````` ```````````````````````````````` example ____foo__ bar__ .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example **foo **bar**** .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example **foo *bar* baz** .

      foo bar baz

      ```````````````````````````````` ```````````````````````````````` example **foo*bar*baz** .

      foobarbaz

      ```````````````````````````````` ```````````````````````````````` example ***foo* bar** .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example **foo *bar*** .

      foo bar

      ```````````````````````````````` Indefinite levels of nesting are possible: ```````````````````````````````` example **foo *bar **baz** bim* bop** .

      foo bar baz bim bop

      ```````````````````````````````` ```````````````````````````````` example **foo [*bar*](/url)** .

      foo bar

      ```````````````````````````````` There can be no empty emphasis or strong emphasis: ```````````````````````````````` example __ is not an empty emphasis .

      __ is not an empty emphasis

      ```````````````````````````````` ```````````````````````````````` example ____ is not an empty strong emphasis .

      ____ is not an empty strong emphasis

      ```````````````````````````````` Rule 11: ```````````````````````````````` example foo *** .

      foo ***

      ```````````````````````````````` ```````````````````````````````` example foo *\** .

      foo *

      ```````````````````````````````` ```````````````````````````````` example foo *_* .

      foo _

      ```````````````````````````````` ```````````````````````````````` example foo ***** .

      foo *****

      ```````````````````````````````` ```````````````````````````````` example foo **\*** .

      foo *

      ```````````````````````````````` ```````````````````````````````` example foo **_** .

      foo _

      ```````````````````````````````` Note that when delimiters do not match evenly, Rule 11 determines that the excess literal `*` characters will appear outside of the emphasis, rather than inside it: ```````````````````````````````` example **foo* .

      *foo

      ```````````````````````````````` ```````````````````````````````` example *foo** .

      foo*

      ```````````````````````````````` ```````````````````````````````` example ***foo** .

      *foo

      ```````````````````````````````` ```````````````````````````````` example ****foo* .

      ***foo

      ```````````````````````````````` ```````````````````````````````` example **foo*** .

      foo*

      ```````````````````````````````` ```````````````````````````````` example *foo**** .

      foo***

      ```````````````````````````````` Rule 12: ```````````````````````````````` example foo ___ .

      foo ___

      ```````````````````````````````` ```````````````````````````````` example foo _\__ .

      foo _

      ```````````````````````````````` ```````````````````````````````` example foo _*_ .

      foo *

      ```````````````````````````````` ```````````````````````````````` example foo _____ .

      foo _____

      ```````````````````````````````` ```````````````````````````````` example foo __\___ .

      foo _

      ```````````````````````````````` ```````````````````````````````` example foo __*__ .

      foo *

      ```````````````````````````````` ```````````````````````````````` example __foo_ .

      _foo

      ```````````````````````````````` Note that when delimiters do not match evenly, Rule 12 determines that the excess literal `_` characters will appear outside of the emphasis, rather than inside it: ```````````````````````````````` example _foo__ .

      foo_

      ```````````````````````````````` ```````````````````````````````` example ___foo__ .

      _foo

      ```````````````````````````````` ```````````````````````````````` example ____foo_ .

      ___foo

      ```````````````````````````````` ```````````````````````````````` example __foo___ .

      foo_

      ```````````````````````````````` ```````````````````````````````` example _foo____ .

      foo___

      ```````````````````````````````` Rule 13 implies that if you want emphasis nested directly inside emphasis, you must use different delimiters: ```````````````````````````````` example **foo** .

      foo

      ```````````````````````````````` ```````````````````````````````` example *_foo_* .

      foo

      ```````````````````````````````` ```````````````````````````````` example __foo__ .

      foo

      ```````````````````````````````` ```````````````````````````````` example _*foo*_ .

      foo

      ```````````````````````````````` However, strong emphasis within strong emphasis is possible without switching delimiters: ```````````````````````````````` example ****foo**** .

      foo

      ```````````````````````````````` ```````````````````````````````` example ____foo____ .

      foo

      ```````````````````````````````` Rule 13 can be applied to arbitrarily long sequences of delimiters: ```````````````````````````````` example ******foo****** .

      foo

      ```````````````````````````````` Rule 14: ```````````````````````````````` example ***foo*** .

      foo

      ```````````````````````````````` ```````````````````````````````` example _____foo_____ .

      foo

      ```````````````````````````````` Rule 15: ```````````````````````````````` example *foo _bar* baz_ .

      foo _bar baz_

      ```````````````````````````````` ```````````````````````````````` example *foo __bar *baz bim__ bam* .

      foo bar *baz bim bam

      ```````````````````````````````` Rule 16: ```````````````````````````````` example **foo **bar baz** .

      **foo bar baz

      ```````````````````````````````` ```````````````````````````````` example *foo *bar baz* .

      *foo bar baz

      ```````````````````````````````` Rule 17: ```````````````````````````````` example *[bar*](/url) .

      *bar*

      ```````````````````````````````` ```````````````````````````````` example _foo [bar_](/url) .

      _foo bar_

      ```````````````````````````````` ```````````````````````````````` example * .

      *

      ```````````````````````````````` ```````````````````````````````` example ** .

      **

      ```````````````````````````````` ```````````````````````````````` example __ .

      __

      ```````````````````````````````` ```````````````````````````````` example *a `*`* .

      a *

      ```````````````````````````````` ```````````````````````````````` example _a `_`_ .

      a _

      ```````````````````````````````` ```````````````````````````````` example **a .

      **ahttp://foo.bar/?q=**

      ```````````````````````````````` ```````````````````````````````` example __a .

      __ahttp://foo.bar/?q=__

      ```````````````````````````````` ## Links A link contains [link text] (the visible text), a [link destination] (the URI that is the link destination), and optionally a [link title]. There are two basic kinds of links in Markdown. In [inline links] the destination and title are given immediately after the link text. In [reference links] the destination and title are defined elsewhere in the document. A [link text](@) consists of a sequence of zero or more inline elements enclosed by square brackets (`[` and `]`). The following rules apply: - Links may not contain other links, at any level of nesting. If multiple otherwise valid link definitions appear nested inside each other, the inner-most definition is used. - Brackets are allowed in the [link text] only if (a) they are backslash-escaped or (b) they appear as a matched pair of brackets, with an open bracket `[`, a sequence of zero or more inlines, and a close bracket `]`. - Backtick [code spans], [autolinks], and raw [HTML tags] bind more tightly than the brackets in link text. Thus, for example, `` [foo`]` `` could not be a link text, since the second `]` is part of a code span. - The brackets in link text bind more tightly than markers for [emphasis and strong emphasis]. Thus, for example, `*[foo*](url)` is a link. A [link destination](@) consists of either - a sequence of zero or more characters between an opening `<` and a closing `>` that contains no line breaks or unescaped `<` or `>` characters, or - a nonempty sequence of characters that does not start with `<`, does not include ASCII space or control characters, and includes parentheses only if (a) they are backslash-escaped or (b) they are part of a balanced pair of unescaped parentheses. (Implementations may impose limits on parentheses nesting to avoid performance issues, but at least three levels of nesting should be supported.) A [link title](@) consists of either - a sequence of zero or more characters between straight double-quote characters (`"`), including a `"` character only if it is backslash-escaped, or - a sequence of zero or more characters between straight single-quote characters (`'`), including a `'` character only if it is backslash-escaped, or - a sequence of zero or more characters between matching parentheses (`(...)`), including a `(` or `)` character only if it is backslash-escaped. Although [link titles] may span multiple lines, they may not contain a [blank line]. An [inline link](@) consists of a [link text] followed immediately by a left parenthesis `(`, optional [whitespace], an optional [link destination], an optional [link title] separated from the link destination by [whitespace], optional [whitespace], and a right parenthesis `)`. The link's text consists of the inlines contained in the [link text] (excluding the enclosing square brackets). The link's URI consists of the link destination, excluding enclosing `<...>` if present, with backslash-escapes in effect as described above. The link's title consists of the link title, excluding its enclosing delimiters, with backslash-escapes in effect as described above. Here is a simple inline link: ```````````````````````````````` example [link](/uri "title") .

      link

      ```````````````````````````````` The title may be omitted: ```````````````````````````````` example [link](/uri) .

      link

      ```````````````````````````````` Both the title and the destination may be omitted: ```````````````````````````````` example [link]() .

      link

      ```````````````````````````````` ```````````````````````````````` example [link](<>) .

      link

      ```````````````````````````````` The destination can only contain spaces if it is enclosed in pointy brackets: ```````````````````````````````` example [link](/my uri) .

      [link](/my uri)

      ```````````````````````````````` ```````````````````````````````` example [link](
      ) .

      link

      ```````````````````````````````` The destination cannot contain line breaks, even if enclosed in pointy brackets: ```````````````````````````````` example [link](foo bar) .

      [link](foo bar)

      ```````````````````````````````` ```````````````````````````````` example [link]() .

      [link]()

      ```````````````````````````````` The destination can contain `)` if it is enclosed in pointy brackets: ```````````````````````````````` example [a]() .

      a

      ```````````````````````````````` Pointy brackets that enclose links must be unescaped: ```````````````````````````````` example [link]() .

      [link](<foo>)

      ```````````````````````````````` These are not links, because the opening pointy bracket is not matched properly: ```````````````````````````````` example [a]( [a](c) .

      [a](<b)c [a](<b)c> [a](c)

      ```````````````````````````````` Parentheses inside the link destination may be escaped: ```````````````````````````````` example [link](\(foo\)) .

      link

      ```````````````````````````````` Any number of parentheses are allowed without escaping, as long as they are balanced: ```````````````````````````````` example [link](foo(and(bar))) .

      link

      ```````````````````````````````` However, if you have unbalanced parentheses, you need to escape or use the `<...>` form: ```````````````````````````````` example [link](foo\(and\(bar\)) .

      link

      ```````````````````````````````` ```````````````````````````````` example [link]() .

      link

      ```````````````````````````````` Parentheses and other symbols can also be escaped, as usual in Markdown: ```````````````````````````````` example [link](foo\)\:) .

      link

      ```````````````````````````````` A link can contain fragment identifiers and queries: ```````````````````````````````` example [link](#fragment) [link](http://example.com#fragment) [link](http://example.com?foo=3#frag) .

      link

      link

      link

      ```````````````````````````````` Note that a backslash before a non-escapable character is just a backslash: ```````````````````````````````` example [link](foo\bar) .

      link

      ```````````````````````````````` URL-escaping should be left alone inside the destination, as all URL-escaped characters are also valid URL characters. Entity and numerical character references in the destination will be parsed into the corresponding Unicode code points, as usual. These may be optionally URL-escaped when written as HTML, but this spec does not enforce any particular policy for rendering URLs in HTML or other formats. Renderers may make different decisions about how to escape or normalize URLs in the output. ```````````````````````````````` example [link](foo%20bä) .

      link

      ```````````````````````````````` Note that, because titles can often be parsed as destinations, if you try to omit the destination and keep the title, you'll get unexpected results: ```````````````````````````````` example [link]("title") .

      link

      ```````````````````````````````` Titles may be in single quotes, double quotes, or parentheses: ```````````````````````````````` example [link](/url "title") [link](/url 'title') [link](/url (title)) .

      link link link

      ```````````````````````````````` Backslash escapes and entity and numeric character references may be used in titles: ```````````````````````````````` example [link](/url "title \""") .

      link

      ```````````````````````````````` Titles must be separated from the link using a [whitespace]. Other [Unicode whitespace] like non-breaking space doesn't work. ```````````````````````````````` example [link](/url "title") .

      link

      ```````````````````````````````` Nested balanced quotes are not allowed without escaping: ```````````````````````````````` example [link](/url "title "and" title") .

      [link](/url "title "and" title")

      ```````````````````````````````` But it is easy to work around this by using a different quote type: ```````````````````````````````` example [link](/url 'title "and" title') .

      link

      ```````````````````````````````` (Note: `Markdown.pl` did allow double quotes inside a double-quoted title, and its test suite included a test demonstrating this. But it is hard to see a good rationale for the extra complexity this brings, since there are already many ways---backslash escaping, entity and numeric character references, or using a different quote type for the enclosing title---to write titles containing double quotes. `Markdown.pl`'s handling of titles has a number of other strange features. For example, it allows single-quoted titles in inline links, but not reference links. And, in reference links but not inline links, it allows a title to begin with `"` and end with `)`. `Markdown.pl` 1.0.1 even allows titles with no closing quotation mark, though 1.0.2b8 does not. It seems preferable to adopt a simple, rational rule that works the same way in inline links and link reference definitions.) [Whitespace] is allowed around the destination and title: ```````````````````````````````` example [link]( /uri "title" ) .

      link

      ```````````````````````````````` But it is not allowed between the link text and the following parenthesis: ```````````````````````````````` example [link] (/uri) .

      [link] (/uri)

      ```````````````````````````````` The link text may contain balanced brackets, but not unbalanced ones, unless they are escaped: ```````````````````````````````` example [link [foo [bar]]](/uri) .

      link [foo [bar]]

      ```````````````````````````````` ```````````````````````````````` example [link] bar](/uri) .

      [link] bar](/uri)

      ```````````````````````````````` ```````````````````````````````` example [link [bar](/uri) .

      [link bar

      ```````````````````````````````` ```````````````````````````````` example [link \[bar](/uri) .

      link [bar

      ```````````````````````````````` The link text may contain inline content: ```````````````````````````````` example [link *foo **bar** `#`*](/uri) .

      link foo bar #

      ```````````````````````````````` ```````````````````````````````` example [![moon](moon.jpg)](/uri) .

      moon

      ```````````````````````````````` However, links may not contain other links, at any level of nesting. ```````````````````````````````` example [foo [bar](/uri)](/uri) .

      [foo bar](/uri)

      ```````````````````````````````` ```````````````````````````````` example [foo *[bar [baz](/uri)](/uri)*](/uri) .

      [foo [bar baz](/uri)](/uri)

      ```````````````````````````````` ```````````````````````````````` example ![[[foo](uri1)](uri2)](uri3) .

      [foo](uri2)

      ```````````````````````````````` These cases illustrate the precedence of link text grouping over emphasis grouping: ```````````````````````````````` example *[foo*](/uri) .

      *foo*

      ```````````````````````````````` ```````````````````````````````` example [foo *bar](baz*) .

      foo *bar

      ```````````````````````````````` Note that brackets that *aren't* part of links do not take precedence: ```````````````````````````````` example *foo [bar* baz] .

      foo [bar baz]

      ```````````````````````````````` These cases illustrate the precedence of HTML tags, code spans, and autolinks over link grouping: ```````````````````````````````` example [foo .

      [foo

      ```````````````````````````````` ```````````````````````````````` example [foo`](/uri)` .

      [foo](/uri)

      ```````````````````````````````` ```````````````````````````````` example [foo .

      [foohttp://example.com/?search=](uri)

      ```````````````````````````````` There are three kinds of [reference link](@)s: [full](#full-reference-link), [collapsed](#collapsed-reference-link), and [shortcut](#shortcut-reference-link). A [full reference link](@) consists of a [link text] immediately followed by a [link label] that [matches] a [link reference definition] elsewhere in the document. A [link label](@) begins with a left bracket (`[`) and ends with the first right bracket (`]`) that is not backslash-escaped. Between these brackets there must be at least one [non-whitespace character]. Unescaped square bracket characters are not allowed inside the opening and closing square brackets of [link labels]. A link label can have at most 999 characters inside the square brackets. One label [matches](@) another just in case their normalized forms are equal. To normalize a label, strip off the opening and closing brackets, perform the *Unicode case fold*, strip leading and trailing [whitespace] and collapse consecutive internal [whitespace] to a single space. If there are multiple matching reference link definitions, the one that comes first in the document is used. (It is desirable in such cases to emit a warning.) The contents of the first link label are parsed as inlines, which are used as the link's text. The link's URI and title are provided by the matching [link reference definition]. Here is a simple example: ```````````````````````````````` example [foo][bar] [bar]: /url "title" .

      foo

      ```````````````````````````````` The rules for the [link text] are the same as with [inline links]. Thus: The link text may contain balanced brackets, but not unbalanced ones, unless they are escaped: ```````````````````````````````` example [link [foo [bar]]][ref] [ref]: /uri .

      link [foo [bar]]

      ```````````````````````````````` ```````````````````````````````` example [link \[bar][ref] [ref]: /uri .

      link [bar

      ```````````````````````````````` The link text may contain inline content: ```````````````````````````````` example [link *foo **bar** `#`*][ref] [ref]: /uri .

      link foo bar #

      ```````````````````````````````` ```````````````````````````````` example [![moon](moon.jpg)][ref] [ref]: /uri .

      moon

      ```````````````````````````````` However, links may not contain other links, at any level of nesting. ```````````````````````````````` example [foo [bar](/uri)][ref] [ref]: /uri .

      [foo bar]ref

      ```````````````````````````````` ```````````````````````````````` example [foo *bar [baz][ref]*][ref] [ref]: /uri .

      [foo bar baz]ref

      ```````````````````````````````` (In the examples above, we have two [shortcut reference links] instead of one [full reference link].) The following cases illustrate the precedence of link text grouping over emphasis grouping: ```````````````````````````````` example *[foo*][ref] [ref]: /uri .

      *foo*

      ```````````````````````````````` ```````````````````````````````` example [foo *bar][ref] [ref]: /uri .

      foo *bar

      ```````````````````````````````` These cases illustrate the precedence of HTML tags, code spans, and autolinks over link grouping: ```````````````````````````````` example [foo [ref]: /uri .

      [foo

      ```````````````````````````````` ```````````````````````````````` example [foo`][ref]` [ref]: /uri .

      [foo][ref]

      ```````````````````````````````` ```````````````````````````````` example [foo [ref]: /uri .

      [foohttp://example.com/?search=][ref]

      ```````````````````````````````` Matching is case-insensitive: ```````````````````````````````` example [foo][BaR] [bar]: /url "title" .

      foo

      ```````````````````````````````` Unicode case fold is used: ```````````````````````````````` example [Толпой][Толпой] is a Russian word. [ТОЛПОЙ]: /url .

      Толпой is a Russian word.

      ```````````````````````````````` Consecutive internal [whitespace] is treated as one space for purposes of determining matching: ```````````````````````````````` example [Foo bar]: /url [Baz][Foo bar] .

      Baz

      ```````````````````````````````` No [whitespace] is allowed between the [link text] and the [link label]: ```````````````````````````````` example [foo] [bar] [bar]: /url "title" .

      [foo] bar

      ```````````````````````````````` ```````````````````````````````` example [foo] [bar] [bar]: /url "title" .

      [foo] bar

      ```````````````````````````````` This is a departure from John Gruber's original Markdown syntax description, which explicitly allows whitespace between the link text and the link label. It brings reference links in line with [inline links], which (according to both original Markdown and this spec) cannot have whitespace after the link text. More importantly, it prevents inadvertent capture of consecutive [shortcut reference links]. If whitespace is allowed between the link text and the link label, then in the following we will have a single reference link, not two shortcut reference links, as intended: ``` markdown [foo] [bar] [foo]: /url1 [bar]: /url2 ``` (Note that [shortcut reference links] were introduced by Gruber himself in a beta version of `Markdown.pl`, but never included in the official syntax description. Without shortcut reference links, it is harmless to allow space between the link text and link label; but once shortcut references are introduced, it is too dangerous to allow this, as it frequently leads to unintended results.) When there are multiple matching [link reference definitions], the first is used: ```````````````````````````````` example [foo]: /url1 [foo]: /url2 [bar][foo] .

      bar

      ```````````````````````````````` Note that matching is performed on normalized strings, not parsed inline content. So the following does not match, even though the labels define equivalent inline content: ```````````````````````````````` example [bar][foo\!] [foo!]: /url .

      [bar][foo!]

      ```````````````````````````````` [Link labels] cannot contain brackets, unless they are backslash-escaped: ```````````````````````````````` example [foo][ref[] [ref[]: /uri .

      [foo][ref[]

      [ref[]: /uri

      ```````````````````````````````` ```````````````````````````````` example [foo][ref[bar]] [ref[bar]]: /uri .

      [foo][ref[bar]]

      [ref[bar]]: /uri

      ```````````````````````````````` ```````````````````````````````` example [[[foo]]] [[[foo]]]: /url .

      [[[foo]]]

      [[[foo]]]: /url

      ```````````````````````````````` ```````````````````````````````` example [foo][ref\[] [ref\[]: /uri .

      foo

      ```````````````````````````````` Note that in this example `]` is not backslash-escaped: ```````````````````````````````` example [bar\\]: /uri [bar\\] .

      bar\

      ```````````````````````````````` A [link label] must contain at least one [non-whitespace character]: ```````````````````````````````` example [] []: /uri .

      []

      []: /uri

      ```````````````````````````````` ```````````````````````````````` example [ ] [ ]: /uri .

      [ ]

      [ ]: /uri

      ```````````````````````````````` A [collapsed reference link](@) consists of a [link label] that [matches] a [link reference definition] elsewhere in the document, followed by the string `[]`. The contents of the first link label are parsed as inlines, which are used as the link's text. The link's URI and title are provided by the matching reference link definition. Thus, `[foo][]` is equivalent to `[foo][foo]`. ```````````````````````````````` example [foo][] [foo]: /url "title" .

      foo

      ```````````````````````````````` ```````````````````````````````` example [*foo* bar][] [*foo* bar]: /url "title" .

      foo bar

      ```````````````````````````````` The link labels are case-insensitive: ```````````````````````````````` example [Foo][] [foo]: /url "title" .

      Foo

      ```````````````````````````````` As with full reference links, [whitespace] is not allowed between the two sets of brackets: ```````````````````````````````` example [foo] [] [foo]: /url "title" .

      foo []

      ```````````````````````````````` A [shortcut reference link](@) consists of a [link label] that [matches] a [link reference definition] elsewhere in the document and is not followed by `[]` or a link label. The contents of the first link label are parsed as inlines, which are used as the link's text. The link's URI and title are provided by the matching link reference definition. Thus, `[foo]` is equivalent to `[foo][]`. ```````````````````````````````` example [foo] [foo]: /url "title" .

      foo

      ```````````````````````````````` ```````````````````````````````` example [*foo* bar] [*foo* bar]: /url "title" .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example [[*foo* bar]] [*foo* bar]: /url "title" .

      [foo bar]

      ```````````````````````````````` ```````````````````````````````` example [[bar [foo] [foo]: /url .

      [[bar foo

      ```````````````````````````````` The link labels are case-insensitive: ```````````````````````````````` example [Foo] [foo]: /url "title" .

      Foo

      ```````````````````````````````` A space after the link text should be preserved: ```````````````````````````````` example [foo] bar [foo]: /url .

      foo bar

      ```````````````````````````````` If you just want bracketed text, you can backslash-escape the opening bracket to avoid links: ```````````````````````````````` example \[foo] [foo]: /url "title" .

      [foo]

      ```````````````````````````````` Note that this is a link, because a link label ends with the first following closing bracket: ```````````````````````````````` example [foo*]: /url *[foo*] .

      *foo*

      ```````````````````````````````` Full and compact references take precedence over shortcut references: ```````````````````````````````` example [foo][bar] [foo]: /url1 [bar]: /url2 .

      foo

      ```````````````````````````````` ```````````````````````````````` example [foo][] [foo]: /url1 .

      foo

      ```````````````````````````````` Inline links also take precedence: ```````````````````````````````` example [foo]() [foo]: /url1 .

      foo

      ```````````````````````````````` ```````````````````````````````` example [foo](not a link) [foo]: /url1 .

      foo(not a link)

      ```````````````````````````````` In the following case `[bar][baz]` is parsed as a reference, `[foo]` as normal text: ```````````````````````````````` example [foo][bar][baz] [baz]: /url .

      [foo]bar

      ```````````````````````````````` Here, though, `[foo][bar]` is parsed as a reference, since `[bar]` is defined: ```````````````````````````````` example [foo][bar][baz] [baz]: /url1 [bar]: /url2 .

      foobaz

      ```````````````````````````````` Here `[foo]` is not parsed as a shortcut reference, because it is followed by a link label (even though `[bar]` is not defined): ```````````````````````````````` example [foo][bar][baz] [baz]: /url1 [foo]: /url2 .

      [foo]bar

      ```````````````````````````````` ## Images Syntax for images is like the syntax for links, with one difference. Instead of [link text], we have an [image description](@). The rules for this are the same as for [link text], except that (a) an image description starts with `![` rather than `[`, and (b) an image description may contain links. An image description has inline elements as its contents. When an image is rendered to HTML, this is standardly used as the image's `alt` attribute. ```````````````````````````````` example ![foo](/url "title") .

      foo

      ```````````````````````````````` ```````````````````````````````` example ![foo *bar*] [foo *bar*]: train.jpg "train & tracks" .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example ![foo ![bar](/url)](/url2) .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example ![foo [bar](/url)](/url2) .

      foo bar

      ```````````````````````````````` Though this spec is concerned with parsing, not rendering, it is recommended that in rendering to HTML, only the plain string content of the [image description] be used. Note that in the above example, the alt attribute's value is `foo bar`, not `foo [bar](/url)` or `foo bar`. Only the plain string content is rendered, without formatting. ```````````````````````````````` example ![foo *bar*][] [foo *bar*]: train.jpg "train & tracks" .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example ![foo *bar*][foobar] [FOOBAR]: train.jpg "train & tracks" .

      foo bar

      ```````````````````````````````` ```````````````````````````````` example ![foo](train.jpg) .

      foo

      ```````````````````````````````` ```````````````````````````````` example My ![foo bar](/path/to/train.jpg "title" ) .

      My foo bar

      ```````````````````````````````` ```````````````````````````````` example ![foo]() .

      foo

      ```````````````````````````````` ```````````````````````````````` example ![](/url) .

      ```````````````````````````````` Reference-style: ```````````````````````````````` example ![foo][bar] [bar]: /url .

      foo

      ```````````````````````````````` ```````````````````````````````` example ![foo][bar] [BAR]: /url .

      foo

      ```````````````````````````````` Collapsed: ```````````````````````````````` example ![foo][] [foo]: /url "title" .

      foo

      ```````````````````````````````` ```````````````````````````````` example ![*foo* bar][] [*foo* bar]: /url "title" .

      foo bar

      ```````````````````````````````` The labels are case-insensitive: ```````````````````````````````` example ![Foo][] [foo]: /url "title" .

      Foo

      ```````````````````````````````` As with reference links, [whitespace] is not allowed between the two sets of brackets: ```````````````````````````````` example ![foo] [] [foo]: /url "title" .

      foo []

      ```````````````````````````````` Shortcut: ```````````````````````````````` example ![foo] [foo]: /url "title" .

      foo

      ```````````````````````````````` ```````````````````````````````` example ![*foo* bar] [*foo* bar]: /url "title" .

      foo bar

      ```````````````````````````````` Note that link labels cannot contain unescaped brackets: ```````````````````````````````` example ![[foo]] [[foo]]: /url "title" .

      ![[foo]]

      [[foo]]: /url "title"

      ```````````````````````````````` The link labels are case-insensitive: ```````````````````````````````` example ![Foo] [foo]: /url "title" .

      Foo

      ```````````````````````````````` If you just want a literal `!` followed by bracketed text, you can backslash-escape the opening `[`: ```````````````````````````````` example !\[foo] [foo]: /url "title" .

      ![foo]

      ```````````````````````````````` If you want a link after a literal `!`, backslash-escape the `!`: ```````````````````````````````` example \![foo] [foo]: /url "title" .

      !foo

      ```````````````````````````````` ## Autolinks [Autolink](@)s are absolute URIs and email addresses inside `<` and `>`. They are parsed as links, with the URL or email address as the link label. A [URI autolink](@) consists of `<`, followed by an [absolute URI] followed by `>`. It is parsed as a link to the URI, with the URI as the link's label. An [absolute URI](@), for these purposes, consists of a [scheme] followed by a colon (`:`) followed by zero or more characters other than ASCII [whitespace] and control characters, `<`, and `>`. If the URI includes these characters, they must be percent-encoded (e.g. `%20` for a space). For purposes of this spec, a [scheme](@) is any sequence of 2--32 characters beginning with an ASCII letter and followed by any combination of ASCII letters, digits, or the symbols plus ("+"), period ("."), or hyphen ("-"). Here are some valid autolinks: ```````````````````````````````` example .

      http://foo.bar.baz

      ```````````````````````````````` ```````````````````````````````` example .

      http://foo.bar.baz/test?q=hello&id=22&boolean

      ```````````````````````````````` ```````````````````````````````` example .

      irc://foo.bar:2233/baz

      ```````````````````````````````` Uppercase is also fine: ```````````````````````````````` example .

      MAILTO:FOO@BAR.BAZ

      ```````````````````````````````` Note that many strings that count as [absolute URIs] for purposes of this spec are not valid URIs, because their schemes are not registered or because of other problems with their syntax: ```````````````````````````````` example .

      a+b+c:d

      ```````````````````````````````` ```````````````````````````````` example .

      made-up-scheme://foo,bar

      ```````````````````````````````` ```````````````````````````````` example .

      http://../

      ```````````````````````````````` ```````````````````````````````` example .

      localhost:5001/foo

      ```````````````````````````````` Spaces are not allowed in autolinks: ```````````````````````````````` example .

      <http://foo.bar/baz bim>

      ```````````````````````````````` Backslash-escapes do not work inside autolinks: ```````````````````````````````` example .

      http://example.com/\[\

      ```````````````````````````````` An [email autolink](@) consists of `<`, followed by an [email address], followed by `>`. The link's label is the email address, and the URL is `mailto:` followed by the email address. An [email address](@), for these purposes, is anything that matches the [non-normative regex from the HTML5 spec](https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email)): /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])? (?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ Examples of email autolinks: ```````````````````````````````` example .

      foo@bar.example.com

      ```````````````````````````````` ```````````````````````````````` example .

      foo+special@Bar.baz-bar0.com

      ```````````````````````````````` Backslash-escapes do not work inside email autolinks: ```````````````````````````````` example .

      <foo+@bar.example.com>

      ```````````````````````````````` These are not autolinks: ```````````````````````````````` example <> .

      <>

      ```````````````````````````````` ```````````````````````````````` example < http://foo.bar > .

      < http://foo.bar >

      ```````````````````````````````` ```````````````````````````````` example .

      <m:abc>

      ```````````````````````````````` ```````````````````````````````` example .

      <foo.bar.baz>

      ```````````````````````````````` ```````````````````````````````` example http://example.com .

      http://example.com

      ```````````````````````````````` ```````````````````````````````` example foo@bar.example.com .

      foo@bar.example.com

      ```````````````````````````````` ## Raw HTML Text between `<` and `>` that looks like an HTML tag is parsed as a raw HTML tag and will be rendered in HTML without escaping. Tag and attribute names are not limited to current HTML tags, so custom tags (and even, say, DocBook tags) may be used. Here is the grammar for tags: A [tag name](@) consists of an ASCII letter followed by zero or more ASCII letters, digits, or hyphens (`-`). An [attribute](@) consists of [whitespace], an [attribute name], and an optional [attribute value specification]. An [attribute name](@) consists of an ASCII letter, `_`, or `:`, followed by zero or more ASCII letters, digits, `_`, `.`, `:`, or `-`. (Note: This is the XML specification restricted to ASCII. HTML5 is laxer.) An [attribute value specification](@) consists of optional [whitespace], a `=` character, optional [whitespace], and an [attribute value]. An [attribute value](@) consists of an [unquoted attribute value], a [single-quoted attribute value], or a [double-quoted attribute value]. An [unquoted attribute value](@) is a nonempty string of characters not including [whitespace], `"`, `'`, `=`, `<`, `>`, or `` ` ``. A [single-quoted attribute value](@) consists of `'`, zero or more characters not including `'`, and a final `'`. A [double-quoted attribute value](@) consists of `"`, zero or more characters not including `"`, and a final `"`. An [open tag](@) consists of a `<` character, a [tag name], zero or more [attributes], optional [whitespace], an optional `/` character, and a `>` character. A [closing tag](@) consists of the string ``. An [HTML comment](@) consists of ``, where *text* does not start with `>` or `->`, does not end with `-`, and does not contain `--`. (See the [HTML5 spec](http://www.w3.org/TR/html5/syntax.html#comments).) A [processing instruction](@) consists of the string ``, and the string `?>`. A [declaration](@) consists of the string ``, and the character `>`. A [CDATA section](@) consists of the string ``, and the string `]]>`. An [HTML tag](@) consists of an [open tag], a [closing tag], an [HTML comment], a [processing instruction], a [declaration], or a [CDATA section]. Here are some simple open tags: ```````````````````````````````` example .

      ```````````````````````````````` Empty elements: ```````````````````````````````` example .

      ```````````````````````````````` [Whitespace] is allowed: ```````````````````````````````` example .

      ```````````````````````````````` With attributes: ```````````````````````````````` example .

      ```````````````````````````````` Custom tag names can be used: ```````````````````````````````` example Foo .

      Foo

      ```````````````````````````````` Illegal tag names, not parsed as HTML: ```````````````````````````````` example <33> <__> .

      <33> <__>

      ```````````````````````````````` Illegal attribute names: ```````````````````````````````` example
      .

      <a h*#ref="hi">

      ```````````````````````````````` Illegal attribute values: ```````````````````````````````` example
      .

      </a href="foo">

      ```````````````````````````````` Comments: ```````````````````````````````` example foo .

      foo

      ```````````````````````````````` ```````````````````````````````` example foo .

      foo <!-- not a comment -- two hyphens -->

      ```````````````````````````````` Not comments: ```````````````````````````````` example foo foo --> foo .

      foo <!--> foo -->

      foo <!-- foo--->

      ```````````````````````````````` Processing instructions: ```````````````````````````````` example foo .

      foo

      ```````````````````````````````` Declarations: ```````````````````````````````` example foo .

      foo

      ```````````````````````````````` CDATA sections: ```````````````````````````````` example foo &<]]> .

      foo &<]]>

      ```````````````````````````````` Entity and numeric character references are preserved in HTML attributes: ```````````````````````````````` example foo
      .

      foo

      ```````````````````````````````` Backslash escapes do not work in HTML attributes: ```````````````````````````````` example foo .

      foo

      ```````````````````````````````` ```````````````````````````````` example .

      <a href=""">

      ```````````````````````````````` ## Hard line breaks A line break (not in a code span or HTML tag) that is preceded by two or more spaces and does not occur at the end of a block is parsed as a [hard line break](@) (rendered in HTML as a `
      ` tag): ```````````````````````````````` example foo baz .

      foo
      baz

      ```````````````````````````````` For a more visible alternative, a backslash before the [line ending] may be used instead of two spaces: ```````````````````````````````` example foo\ baz .

      foo
      baz

      ```````````````````````````````` More than two spaces can be used: ```````````````````````````````` example foo baz .

      foo
      baz

      ```````````````````````````````` Leading spaces at the beginning of the next line are ignored: ```````````````````````````````` example foo bar .

      foo
      bar

      ```````````````````````````````` ```````````````````````````````` example foo\ bar .

      foo
      bar

      ```````````````````````````````` Line breaks can occur inside emphasis, links, and other constructs that allow inline content: ```````````````````````````````` example *foo bar* .

      foo
      bar

      ```````````````````````````````` ```````````````````````````````` example *foo\ bar* .

      foo
      bar

      ```````````````````````````````` Line breaks do not occur inside code spans ```````````````````````````````` example `code span` .

      code span

      ```````````````````````````````` ```````````````````````````````` example `code\ span` .

      code\ span

      ```````````````````````````````` or HTML tags: ```````````````````````````````` example
      .

      ```````````````````````````````` ```````````````````````````````` example .

      ```````````````````````````````` Hard line breaks are for separating inline content within a block. Neither syntax for hard line breaks works at the end of a paragraph or other block element: ```````````````````````````````` example foo\ .

      foo\

      ```````````````````````````````` ```````````````````````````````` example foo .

      foo

      ```````````````````````````````` ```````````````````````````````` example ### foo\ .

      foo\

      ```````````````````````````````` ```````````````````````````````` example ### foo .

      foo

      ```````````````````````````````` ## Soft line breaks A regular line break (not in a code span or HTML tag) that is not preceded by two or more spaces or a backslash is parsed as a [softbreak](@). (A softbreak may be rendered in HTML either as a [line ending] or as a space. The result will be the same in browsers. In the examples here, a [line ending] will be used.) ```````````````````````````````` example foo baz .

      foo baz

      ```````````````````````````````` Spaces at the end of the line and beginning of the next line are removed: ```````````````````````````````` example foo baz .

      foo baz

      ```````````````````````````````` A conforming parser may render a soft line break in HTML either as a line break or as a space. A renderer may also provide an option to render soft line breaks as hard line breaks. ## Textual content Any characters not given an interpretation by the above rules will be parsed as plain textual content. ```````````````````````````````` example hello $.;'there .

      hello $.;'there

      ```````````````````````````````` ```````````````````````````````` example Foo χρῆν .

      Foo χρῆν

      ```````````````````````````````` Internal spaces are preserved verbatim: ```````````````````````````````` example Multiple spaces .

      Multiple spaces

      ```````````````````````````````` # Appendix: A parsing strategy In this appendix we describe some features of the parsing strategy used in the CommonMark reference implementations. ## Overview Parsing has two phases: 1. In the first phase, lines of input are consumed and the block structure of the document---its division into paragraphs, block quotes, list items, and so on---is constructed. Text is assigned to these blocks but not parsed. Link reference definitions are parsed and a map of links is constructed. 2. In the second phase, the raw text contents of paragraphs and headings are parsed into sequences of Markdown inline elements (strings, code spans, links, emphasis, and so on), using the map of link references constructed in phase 1. At each point in processing, the document is represented as a tree of **blocks**. The root of the tree is a `document` block. The `document` may have any number of other blocks as **children**. These children may, in turn, have other blocks as children. The last child of a block is normally considered **open**, meaning that subsequent lines of input can alter its contents. (Blocks that are not open are **closed**.) Here, for example, is a possible document tree, with the open blocks marked by arrows: ``` tree -> document -> block_quote paragraph "Lorem ipsum dolor\nsit amet." -> list (type=bullet tight=true bullet_char=-) list_item paragraph "Qui *quodsi iracundia*" -> list_item -> paragraph "aliquando id" ``` ## Phase 1: block structure Each line that is processed has an effect on this tree. The line is analyzed and, depending on its contents, the document may be altered in one or more of the following ways: 1. One or more open blocks may be closed. 2. One or more new blocks may be created as children of the last open block. 3. Text may be added to the last (deepest) open block remaining on the tree. Once a line has been incorporated into the tree in this way, it can be discarded, so input can be read in a stream. For each line, we follow this procedure: 1. First we iterate through the open blocks, starting with the root document, and descending through last children down to the last open block. Each block imposes a condition that the line must satisfy if the block is to remain open. For example, a block quote requires a `>` character. A paragraph requires a non-blank line. In this phase we may match all or just some of the open blocks. But we cannot close unmatched blocks yet, because we may have a [lazy continuation line]. 2. Next, after consuming the continuation markers for existing blocks, we look for new block starts (e.g. `>` for a block quote). If we encounter a new block start, we close any blocks unmatched in step 1 before creating the new block as a child of the last matched block. 3. Finally, we look at the remainder of the line (after block markers like `>`, list markers, and indentation have been consumed). This is text that can be incorporated into the last open block (a paragraph, code block, heading, or raw HTML). Setext headings are formed when we see a line of a paragraph that is a [setext heading underline]. Reference link definitions are detected when a paragraph is closed; the accumulated text lines are parsed to see if they begin with one or more reference link definitions. Any remainder becomes a normal paragraph. We can see how this works by considering how the tree above is generated by four lines of Markdown: ``` markdown > Lorem ipsum dolor sit amet. > - Qui *quodsi iracundia* > - aliquando id ``` At the outset, our document model is just ``` tree -> document ``` The first line of our text, ``` markdown > Lorem ipsum dolor ``` causes a `block_quote` block to be created as a child of our open `document` block, and a `paragraph` block as a child of the `block_quote`. Then the text is added to the last open block, the `paragraph`: ``` tree -> document -> block_quote -> paragraph "Lorem ipsum dolor" ``` The next line, ``` markdown sit amet. ``` is a "lazy continuation" of the open `paragraph`, so it gets added to the paragraph's text: ``` tree -> document -> block_quote -> paragraph "Lorem ipsum dolor\nsit amet." ``` The third line, ``` markdown > - Qui *quodsi iracundia* ``` causes the `paragraph` block to be closed, and a new `list` block opened as a child of the `block_quote`. A `list_item` is also added as a child of the `list`, and a `paragraph` as a child of the `list_item`. The text is then added to the new `paragraph`: ``` tree -> document -> block_quote paragraph "Lorem ipsum dolor\nsit amet." -> list (type=bullet tight=true bullet_char=-) -> list_item -> paragraph "Qui *quodsi iracundia*" ``` The fourth line, ``` markdown > - aliquando id ``` causes the `list_item` (and its child the `paragraph`) to be closed, and a new `list_item` opened up as child of the `list`. A `paragraph` is added as a child of the new `list_item`, to contain the text. We thus obtain the final tree: ``` tree -> document -> block_quote paragraph "Lorem ipsum dolor\nsit amet." -> list (type=bullet tight=true bullet_char=-) list_item paragraph "Qui *quodsi iracundia*" -> list_item -> paragraph "aliquando id" ``` ## Phase 2: inline structure Once all of the input has been parsed, all open blocks are closed. We then "walk the tree," visiting every node, and parse raw string contents of paragraphs and headings as inlines. At this point we have seen all the link reference definitions, so we can resolve reference links as we go. ``` tree document block_quote paragraph str "Lorem ipsum dolor" softbreak str "sit amet." list (type=bullet tight=true bullet_char=-) list_item paragraph str "Qui " emph str "quodsi iracundia" list_item paragraph str "aliquando id" ``` Notice how the [line ending] in the first paragraph has been parsed as a `softbreak`, and the asterisks in the first list item have become an `emph`. ### An algorithm for parsing nested emphasis and links By far the trickiest part of inline parsing is handling emphasis, strong emphasis, links, and images. This is done using the following algorithm. When we're parsing inlines and we hit either - a run of `*` or `_` characters, or - a `[` or `![` we insert a text node with these symbols as its literal content, and we add a pointer to this text node to the [delimiter stack](@). The [delimiter stack] is a doubly linked list. Each element contains a pointer to a text node, plus information about - the type of delimiter (`[`, `![`, `*`, `_`) - the number of delimiters, - whether the delimiter is "active" (all are active to start), and - whether the delimiter is a potential opener, a potential closer, or both (which depends on what sort of characters precede and follow the delimiters). When we hit a `]` character, we call the *look for link or image* procedure (see below). When we hit the end of the input, we call the *process emphasis* procedure (see below), with `stack_bottom` = NULL. #### *look for link or image* Starting at the top of the delimiter stack, we look backwards through the stack for an opening `[` or `![` delimiter. - If we don't find one, we return a literal text node `]`. - If we do find one, but it's not *active*, we remove the inactive delimiter from the stack, and return a literal text node `]`. - If we find one and it's active, then we parse ahead to see if we have an inline link/image, reference link/image, compact reference link/image, or shortcut reference link/image. + If we don't, then we remove the opening delimiter from the delimiter stack and return a literal text node `]`. + If we do, then * We return a link or image node whose children are the inlines after the text node pointed to by the opening delimiter. * We run *process emphasis* on these inlines, with the `[` opener as `stack_bottom`. * We remove the opening delimiter. * If we have a link (and not an image), we also set all `[` delimiters before the opening delimiter to *inactive*. (This will prevent us from getting links within links.) #### *process emphasis* Parameter `stack_bottom` sets a lower bound to how far we descend in the [delimiter stack]. If it is NULL, we can go all the way to the bottom. Otherwise, we stop before visiting `stack_bottom`. Let `current_position` point to the element on the [delimiter stack] just above `stack_bottom` (or the first element if `stack_bottom` is NULL). We keep track of the `openers_bottom` for each delimiter type (`*`, `_`) and each length of the closing delimiter run (modulo 3). Initialize this to `stack_bottom`. Then we repeat the following until we run out of potential closers: - Move `current_position` forward in the delimiter stack (if needed) until we find the first potential closer with delimiter `*` or `_`. (This will be the potential closer closest to the beginning of the input -- the first one in parse order.) - Now, look back in the stack (staying above `stack_bottom` and the `openers_bottom` for this delimiter type) for the first matching potential opener ("matching" means same delimiter). - If one is found: + Figure out whether we have emphasis or strong emphasis: if both closer and opener spans have length >= 2, we have strong, otherwise regular. + Insert an emph or strong emph node accordingly, after the text node corresponding to the opener. + Remove any delimiters between the opener and closer from the delimiter stack. + Remove 1 (for regular emph) or 2 (for strong emph) delimiters from the opening and closing text nodes. If they become empty as a result, remove them and remove the corresponding element of the delimiter stack. If the closing node is removed, reset `current_position` to the next element in the stack. - If none is found: + Set `openers_bottom` to the element before `current_position`. (We know that there are no openers for this kind of closer up to and including this point, so this puts a lower bound on future searches.) + If the closer at `current_position` is not a potential opener, remove it from the delimiter stack (since we know it can't be a closer either). + Advance `current_position` to the next element in the stack. After we're done, we remove all delimiters above `stack_bottom` from the delimiter stack. gohugoio-hugo-6abdaca/hugolib/testhelpers_test.go000066400000000000000000000624401507671574500225250ustar00rootroot00000000000000package hugolib import ( "bytes" "context" "fmt" "image/jpeg" "io" "io/fs" "math/rand" "os" "path/filepath" "regexp" "strings" "testing" "text/template" "time" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/config/security" "github.com/gohugoio/hugo/htesting" "github.com/gohugoio/hugo/output" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/google/go-cmp/cmp" "github.com/gohugoio/hugo/parser" "github.com/fsnotify/fsnotify" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/resources/page" "github.com/sanity-io/litter" "github.com/spf13/afero" "github.com/spf13/cast" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/resources/resource" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/hugofs" ) var ( deepEqualsPages = qt.CmpEquals(cmp.Comparer(func(p1, p2 *pageState) bool { return p1 == p2 })) deepEqualsOutputFormats = qt.CmpEquals(cmp.Comparer(func(o1, o2 output.Format) bool { return o1.Name == o2.Name && o1.MediaType.Type == o2.MediaType.Type })) ) type sitesBuilder struct { Cfg config.Provider Configs *allconfig.Configs environ []string Fs *hugofs.Fs T testing.TB depsCfg deps.DepsCfg *qt.C logger loggers.Logger rnd *rand.Rand dumper litter.Options // Used to test partial rebuilds. changedFiles []string removedFiles []string // Aka the Hugo server mode. running bool H *HugoSites theme string // Default toml configFormat string configFileSet bool configSet bool // Default is empty. // TODO(bep) revisit this and consider always setting it to something. // Consider this in relation to using the BaseFs.PublishFs to all publishing. workingDir string addNothing bool // Base data/content contentFilePairs []filenameContent templateFilePairs []filenameContent i18nFilePairs []filenameContent dataFilePairs []filenameContent // Additional data/content. // As in "use the base, but add these on top". contentFilePairsAdded []filenameContent templateFilePairsAdded []filenameContent i18nFilePairsAdded []filenameContent dataFilePairsAdded []filenameContent } type filenameContent struct { filename string content string } func newTestSitesBuilder(t testing.TB) *sitesBuilder { v := config.New() v.Set("publishDir", "public") v.Set("disableLiveReload", true) fs := hugofs.NewFromOld(afero.NewMemMapFs(), v) litterOptions := litter.Options{ HidePrivateFields: true, StripPackageNames: true, Separator: " ", } return &sitesBuilder{ T: t, C: qt.New(t), Fs: fs, configFormat: "toml", dumper: litterOptions, rnd: rand.New(rand.NewSource(time.Now().Unix())), } } func newTestSitesBuilderFromDepsCfg(t testing.TB, d deps.DepsCfg) *sitesBuilder { c := qt.New(t) litterOptions := litter.Options{ HidePrivateFields: true, StripPackageNames: true, Separator: " ", } b := &sitesBuilder{T: t, C: c, depsCfg: d, Fs: d.Fs, dumper: litterOptions, rnd: rand.New(rand.NewSource(time.Now().Unix()))} workingDir := d.Configs.LoadingInfo.BaseConfig.WorkingDir b.WithWorkingDir(workingDir) return b } func (s *sitesBuilder) Running() *sitesBuilder { s.running = true return s } func (s *sitesBuilder) WithNothingAdded() *sitesBuilder { s.addNothing = true return s } func (s *sitesBuilder) WithLogger(logger loggers.Logger) *sitesBuilder { s.logger = logger return s } func (s *sitesBuilder) WithWorkingDir(dir string) *sitesBuilder { s.workingDir = filepath.FromSlash(dir) return s } func (s *sitesBuilder) WithEnviron(env ...string) *sitesBuilder { for i := 0; i < len(env); i += 2 { s.environ = append(s.environ, fmt.Sprintf("%s=%s", env[i], env[i+1])) } return s } func (s *sitesBuilder) WithConfigTemplate(data any, format, configTemplate string) *sitesBuilder { s.T.Helper() if format == "" { format = "toml" } templ, err := template.New("test").Parse(configTemplate) if err != nil { s.Fatalf("Template parse failed: %s", err) } var b bytes.Buffer templ.Execute(&b, data) return s.WithConfigFile(format, b.String()) } func (s *sitesBuilder) WithViper(v config.Provider) *sitesBuilder { s.T.Helper() if s.configFileSet { s.T.Fatal("WithViper: use Viper or config.toml, not both") } defer func() { s.configSet = true }() // Write to a config file to make sure the tests follow the same code path. var buff bytes.Buffer m := v.Get("").(maps.Params) s.Assert(parser.InterfaceToConfig(m, metadecoders.TOML, &buff), qt.IsNil) return s.WithConfigFile("toml", buff.String()) } func (s *sitesBuilder) WithConfigFile(format, conf string) *sitesBuilder { s.T.Helper() if s.configSet { s.T.Fatal("WithConfigFile: use config.Config or config.toml, not both") } s.configFileSet = true filename := s.absFilename("config." + format) writeSource(s.T, s.Fs, filename, conf) s.configFormat = format return s } func (s *sitesBuilder) WithThemeConfigFile(format, conf string) *sitesBuilder { s.T.Helper() if s.theme == "" { s.theme = "test-theme" } filename := filepath.Join("themes", s.theme, "config."+format) writeSource(s.T, s.Fs, s.absFilename(filename), conf) return s } func (s *sitesBuilder) WithSourceFile(filenameContent ...string) *sitesBuilder { s.T.Helper() for i := 0; i < len(filenameContent); i += 2 { writeSource(s.T, s.Fs, s.absFilename(filenameContent[i]), filenameContent[i+1]) } return s } func (s *sitesBuilder) absFilename(filename string) string { filename = filepath.FromSlash(filename) if filepath.IsAbs(filename) { return filename } if s.workingDir != "" && !strings.HasPrefix(filename, s.workingDir) { filename = filepath.Join(s.workingDir, filename) } return filename } const commonConfigSections = ` [services] [services.disqus] shortname = "disqus_shortname" [services.googleAnalytics] id = "UA-ga_id" [privacy] [privacy.disqus] disable = false [privacy.googleAnalytics] respectDoNotTrack = true [privacy.instagram] simple = true [privacy.x] enableDNT = true [privacy.vimeo] disable = false [privacy.youtube] disable = false privacyEnhanced = true ` func (s *sitesBuilder) WithSimpleConfigFile() *sitesBuilder { s.T.Helper() return s.WithSimpleConfigFileAndBaseURL("http://example.com/") } func (s *sitesBuilder) WithSimpleConfigFileAndBaseURL(baseURL string) *sitesBuilder { s.T.Helper() return s.WithSimpleConfigFileAndSettings(map[string]any{"baseURL": baseURL}) } func (s *sitesBuilder) WithSimpleConfigFileAndSettings(settings any) *sitesBuilder { s.T.Helper() var buf bytes.Buffer parser.InterfaceToConfig(settings, metadecoders.TOML, &buf) config := buf.String() + commonConfigSections return s.WithConfigFile("toml", config) } func (s *sitesBuilder) WithDefaultMultiSiteConfig() *sitesBuilder { defaultMultiSiteConfig := ` baseURL = "http://example.com/blog" disablePathToLower = true defaultContentLanguage = "en" defaultContentLanguageInSubdir = true [pagination] pagerSize = 1 [permalinks] other = "/somewhere/else/:filename" [Taxonomies] tag = "tags" [Languages] [Languages.en] weight = 10 title = "In English" languageName = "English" [[Languages.en.menu.main]] url = "/" name = "Home" weight = 0 [Languages.fr] weight = 20 title = "Le Français" languageName = "Français" [Languages.fr.Taxonomies] plaque = "plaques" [Languages.nn] weight = 30 title = "På nynorsk" languageName = "Nynorsk" [Languages.nn.pagination] path = "side" [Languages.nn.Taxonomies] lag = "lag" [[Languages.nn.menu.main]] url = "/" name = "Heim" weight = 1 [Languages.nb] weight = 40 title = "På bokmål" languageName = "Bokmål" [Languages.nb.pagination] path = "side" [Languages.nb.Taxonomies] lag = "lag" ` + commonConfigSections return s.WithConfigFile("toml", defaultMultiSiteConfig) } func (s *sitesBuilder) WithSunset(in string) { // Write a real image into one of the bundle above. src, err := os.Open(filepath.FromSlash("testdata/sunset.jpg")) s.Assert(err, qt.IsNil) out, err := s.Fs.Source.Create(filepath.FromSlash(filepath.Join(s.workingDir, in))) s.Assert(err, qt.IsNil) _, err = io.Copy(out, src) s.Assert(err, qt.IsNil) out.Close() src.Close() } func (s *sitesBuilder) createFilenameContent(pairs []string) []filenameContent { var slice []filenameContent s.appendFilenameContent(&slice, pairs...) return slice } func (s *sitesBuilder) appendFilenameContent(slice *[]filenameContent, pairs ...string) { if len(pairs)%2 != 0 { panic("file content mismatch") } for i := 0; i < len(pairs); i += 2 { c := filenameContent{ filename: pairs[i], content: pairs[i+1], } *slice = append(*slice, c) } } func (s *sitesBuilder) WithContent(filenameContent ...string) *sitesBuilder { s.appendFilenameContent(&s.contentFilePairs, filenameContent...) return s } func (s *sitesBuilder) WithContentAdded(filenameContent ...string) *sitesBuilder { s.appendFilenameContent(&s.contentFilePairsAdded, filenameContent...) return s } func (s *sitesBuilder) WithTemplates(filenameContent ...string) *sitesBuilder { s.appendFilenameContent(&s.templateFilePairs, filenameContent...) return s } func (s *sitesBuilder) WithTemplatesAdded(filenameContent ...string) *sitesBuilder { s.appendFilenameContent(&s.templateFilePairsAdded, filenameContent...) return s } func (s *sitesBuilder) WithData(filenameContent ...string) *sitesBuilder { s.appendFilenameContent(&s.dataFilePairs, filenameContent...) return s } func (s *sitesBuilder) WithDataAdded(filenameContent ...string) *sitesBuilder { s.appendFilenameContent(&s.dataFilePairsAdded, filenameContent...) return s } func (s *sitesBuilder) WithI18n(filenameContent ...string) *sitesBuilder { s.appendFilenameContent(&s.i18nFilePairs, filenameContent...) return s } func (s *sitesBuilder) WithI18nAdded(filenameContent ...string) *sitesBuilder { s.appendFilenameContent(&s.i18nFilePairsAdded, filenameContent...) return s } func (s *sitesBuilder) EditFiles(filenameContent ...string) *sitesBuilder { for i := 0; i < len(filenameContent); i += 2 { filename, content := filepath.FromSlash(filenameContent[i]), filenameContent[i+1] absFilename := s.absFilename(filename) s.changedFiles = append(s.changedFiles, absFilename) writeSource(s.T, s.Fs, absFilename, content) } return s } func (s *sitesBuilder) RemoveFiles(filenames ...string) *sitesBuilder { for _, filename := range filenames { absFilename := s.absFilename(filename) s.removedFiles = append(s.removedFiles, absFilename) s.Assert(s.Fs.Source.Remove(absFilename), qt.IsNil) } return s } func (s *sitesBuilder) writeFilePairs(folder string, files []filenameContent) *sitesBuilder { // We have had some "filesystem ordering" bugs that we have not discovered in // our tests running with the in memory filesystem. // That file system is backed by a map so not sure how this helps, but some // randomness in tests doesn't hurt. // TODO(bep) this turns out to be more confusing than helpful. // s.rnd.Shuffle(len(files), func(i, j int) { files[i], files[j] = files[j], files[i] }) for _, fc := range files { target := folder // TODO(bep) clean up this magic. if strings.HasPrefix(fc.filename, folder) { target = "" } if s.workingDir != "" { target = filepath.Join(s.workingDir, target) } writeSource(s.T, s.Fs, filepath.Join(target, fc.filename), fc.content) } return s } func (s *sitesBuilder) CreateSites() *sitesBuilder { if err := s.CreateSitesE(); err != nil { s.Fatalf("Failed to create sites: %s", err) } s.Assert(s.Fs.PublishDir, qt.IsNotNil) s.Assert(s.Fs.WorkingDirReadOnly, qt.IsNotNil) return s } func (s *sitesBuilder) LoadConfig() error { if !s.configFileSet { s.WithSimpleConfigFile() } flags := config.New() flags.Set("internal", map[string]any{ "running": s.running, "watch": s.running, }) if s.workingDir != "" { flags.Set("workingDir", s.workingDir) } res, err := allconfig.LoadConfig(allconfig.ConfigSourceDescriptor{ Fs: s.Fs.Source, Logger: s.logger, Flags: flags, Environ: s.environ, Filename: "config." + s.configFormat, }) if err != nil { return err } s.Cfg = res.LoadingInfo.Cfg s.Configs = res return nil } func (s *sitesBuilder) CreateSitesE() error { if !s.addNothing { if _, ok := s.Fs.Source.(*afero.OsFs); ok { for _, dir := range []string{ "content/sect", "layouts/_default", "layouts/_default/_markup", "layouts/partials", "layouts/shortcodes", "data", "i18n", } { if err := os.MkdirAll(filepath.Join(s.workingDir, dir), 0o777); err != nil { return fmt.Errorf("failed to create %q: %w", dir, err) } } } s.addDefaults() s.writeFilePairs("content", s.contentFilePairsAdded) s.writeFilePairs("layouts", s.templateFilePairsAdded) s.writeFilePairs("data", s.dataFilePairsAdded) s.writeFilePairs("i18n", s.i18nFilePairsAdded) s.writeFilePairs("i18n", s.i18nFilePairs) s.writeFilePairs("data", s.dataFilePairs) s.writeFilePairs("content", s.contentFilePairs) s.writeFilePairs("layouts", s.templateFilePairs) } if err := s.LoadConfig(); err != nil { return fmt.Errorf("failed to load config: %w", err) } s.Fs.PublishDir = hugofs.NewCreateCountingFs(s.Fs.PublishDir) depsCfg := s.depsCfg depsCfg.Fs = s.Fs if depsCfg.Configs.IsZero() { depsCfg.Configs = s.Configs } depsCfg.TestLogger = s.logger sites, err := NewHugoSites(depsCfg) if err != nil { return fmt.Errorf("failed to create sites: %w", err) } s.H = sites return nil } func (s *sitesBuilder) BuildE(cfg BuildCfg) error { if s.H == nil { s.CreateSites() } return s.H.Build(cfg) } func (s *sitesBuilder) Build(cfg BuildCfg) *sitesBuilder { s.T.Helper() return s.build(cfg, false) } func (s *sitesBuilder) BuildFail(cfg BuildCfg) *sitesBuilder { s.T.Helper() return s.build(cfg, true) } func (s *sitesBuilder) changeEvents() []fsnotify.Event { var events []fsnotify.Event for _, v := range s.changedFiles { events = append(events, fsnotify.Event{ Name: v, Op: fsnotify.Write, }) } for _, v := range s.removedFiles { events = append(events, fsnotify.Event{ Name: v, Op: fsnotify.Remove, }) } return events } func (s *sitesBuilder) build(cfg BuildCfg, shouldFail bool) *sitesBuilder { s.Helper() defer func() { s.changedFiles = nil }() if s.H == nil { s.CreateSites() } err := s.H.Build(cfg, s.changeEvents()...) if err == nil { logErrorCount := s.H.NumLogErrors() if logErrorCount > 0 { err = fmt.Errorf("logged %d errors", logErrorCount) } } if err != nil && !shouldFail { s.Fatalf("Build failed: %s", err) } else if err == nil && shouldFail { s.Fatalf("Expected error") } return s } func (s *sitesBuilder) addDefaults() { var ( contentTemplate = `--- title: doc1 weight: 1 tags: - tag1 date: "2018-02-28" --- # doc1 *some "content"* {{< shortcode >}} {{< lingo >}} ` defaultContent = []string{ "content/sect/doc1.en.md", contentTemplate, "content/sect/doc1.fr.md", contentTemplate, "content/sect/doc1.nb.md", contentTemplate, "content/sect/doc1.nn.md", contentTemplate, } listTemplateCommon = "{{ $p := .Paginator }}{{ $p.PageNumber }}|{{ .Title }}|{{ i18n \"hello\" }}|{{ .Permalink }}|Pager: {{ template \"_internal/pagination.html\" . }}|Kind: {{ .Kind }}|Content: {{ .Content }}|Len Pages: {{ len .Pages }}|Len RegularPages: {{ len .RegularPages }}| HasParent: {{ if .Parent }}YES{{ else }}NO{{ end }}" defaultTemplates = []string{ "_default/single.html", "Single: {{ .Title }}|{{ i18n \"hello\" }}|{{.Language.Lang}}|RelPermalink: {{ .RelPermalink }}|Permalink: {{ .Permalink }}|{{ .Content }}|Resources: {{ range .Resources }}{{ .MediaType }}: {{ .RelPermalink}} -- {{ end }}|Summary: {{ .Summary }}|Truncated: {{ .Truncated }}|Parent: {{ .Parent.Title }}", "_default/list.html", "List Page " + listTemplateCommon, "index.html", "{{ $p := .Paginator }}Default Home Page {{ $p.PageNumber }}: {{ .Title }}|{{ .IsHome }}|{{ i18n \"hello\" }}|{{ .Permalink }}|{{ .Site.Data.hugo.slogan }}|String Resource: {{ ( \"Hugo Pipes\" | resources.FromString \"text/pipes.txt\").RelPermalink }}|String Resource Permalink: {{ ( \"Hugo Pipes\" | resources.FromString \"text/pipes.txt\").Permalink }}", "index.fr.html", "{{ $p := .Paginator }}French Home Page {{ $p.PageNumber }}: {{ .Title }}|{{ .IsHome }}|{{ i18n \"hello\" }}|{{ .Permalink }}|{{ .Site.Data.hugo.slogan }}|String Resource: {{ ( \"Hugo Pipes\" | resources.FromString \"text/pipes.txt\").RelPermalink }}|String Resource Permalink: {{ ( \"Hugo Pipes\" | resources.FromString \"text/pipes.txt\").Permalink }}", "_default/terms.html", "Taxonomy Term Page " + listTemplateCommon, "_default/taxonomy.html", "Taxonomy List Page " + listTemplateCommon, // Shortcodes "shortcodes/shortcode.html", "Shortcode: {{ i18n \"hello\" }}", // A shortcode in multiple languages "shortcodes/lingo.html", "LingoDefault", "shortcodes/lingo.fr.html", "LingoFrench", // Special templates "404.html", "404|{{ .Lang }}|{{ .Title }}", "robots.txt", "robots|{{ .Lang }}|{{ .Title }}", } defaultI18n = []string{ "en.yaml", ` hello: other: "Hello" `, "fr.yaml", ` hello: other: "Bonjour" `, } defaultData = []string{ "hugo.toml", "slogan = \"Hugo Rocks!\"", } ) if len(s.contentFilePairs) == 0 { s.writeFilePairs("content", s.createFilenameContent(defaultContent)) } if len(s.templateFilePairs) == 0 { s.writeFilePairs("layouts", s.createFilenameContent(defaultTemplates)) } if len(s.dataFilePairs) == 0 { s.writeFilePairs("data", s.createFilenameContent(defaultData)) } if len(s.i18nFilePairs) == 0 { s.writeFilePairs("i18n", s.createFilenameContent(defaultI18n)) } } func (s *sitesBuilder) Fatalf(format string, args ...any) { s.T.Helper() s.T.Fatalf(format, args...) } func (s *sitesBuilder) AssertFileContentFn(filename string, f func(s string) bool) { s.T.Helper() content := s.FileContent(filename) if !f(content) { s.Fatalf("Assert failed for %q in content\n%s", filename, content) } } // Helper to migrate tests to new format. func (s *sitesBuilder) DumpTxtar() string { var sb strings.Builder skipRe := regexp.MustCompile(`^(public|resources|package-lock.json|go.sum)`) afero.Walk(s.Fs.Source, s.workingDir, func(path string, info fs.FileInfo, err error) error { if err != nil { return err } rel := strings.TrimPrefix(path, s.workingDir+"/") if skipRe.MatchString(rel) { if info.IsDir() { return filepath.SkipDir } return nil } if info == nil || info.IsDir() { return nil } sb.WriteString(fmt.Sprintf("-- %s --\n", rel)) b, err := afero.ReadFile(s.Fs.Source, path) s.Assert(err, qt.IsNil) sb.WriteString(strings.TrimSpace(string(b))) sb.WriteString("\n") return nil }) return sb.String() } func (s *sitesBuilder) AssertHome(matches ...string) { s.AssertFileContent("public/index.html", matches...) } func (s *sitesBuilder) AssertFileContent(filename string, matches ...string) { s.T.Helper() content := s.FileContent(filename) for _, m := range matches { lines := strings.Split(m, "\n") for _, match := range lines { match = strings.TrimSpace(match) if match == "" { continue } if !strings.Contains(content, match) { s.Assert(content, qt.Contains, match, qt.Commentf(match+" not in: \n"+content)) } } } } func (s *sitesBuilder) AssertFileDoesNotExist(filename string) { if s.CheckExists(filename) { s.Fatalf("File %q exists but must not exist.", filename) } } func (s *sitesBuilder) AssertImage(width, height int, filename string) { f, err := s.Fs.WorkingDirReadOnly.Open(filename) s.Assert(err, qt.IsNil) defer f.Close() cfg, err := jpeg.DecodeConfig(f) s.Assert(err, qt.IsNil) s.Assert(cfg.Width, qt.Equals, width) s.Assert(cfg.Height, qt.Equals, height) } func (s *sitesBuilder) AssertNoDuplicateWrites() { s.Helper() hugofs.WalkFilesystems(s.Fs.PublishDir, func(fs afero.Fs) bool { if dfs, ok := fs.(hugofs.DuplicatesReporter); ok { s.Assert(dfs.ReportDuplicates(), qt.Equals, "") } return false }) } func (s *sitesBuilder) FileContent(filename string) string { s.Helper() filename = filepath.FromSlash(filename) return readWorkingDir(s.T, s.Fs, filename) } func (s *sitesBuilder) AssertObject(expected string, object any) { s.T.Helper() got := s.dumper.Sdump(object) expected = strings.TrimSpace(expected) if expected != got { fmt.Println(got) diff := htesting.DiffStrings(expected, got) s.Fatalf("diff:\n%s\nexpected\n%s\ngot\n%s", diff, expected, got) } } func (s *sitesBuilder) AssertFileContentRe(filename string, matches ...string) { content := readWorkingDir(s.T, s.Fs, filename) for _, match := range matches { r := regexp.MustCompile("(?s)" + match) if !r.MatchString(content) { s.Fatalf("No match for %q in content for %s\n%q", match, filename, content) } } } func (s *sitesBuilder) CheckExists(filename string) bool { return workingDirExists(s.Fs, filepath.Clean(filename)) } func (s *sitesBuilder) GetPage(ref string) page.Page { p, err := s.H.Sites[0].getPage(nil, ref) s.Assert(err, qt.IsNil) return p } func (s *sitesBuilder) GetPageRel(p page.Page, ref string) page.Page { p, err := s.H.Sites[0].getPage(p, ref) s.Assert(err, qt.IsNil) return p } func (s *sitesBuilder) NpmInstall() hexec.Runner { sc := security.DefaultConfig var err error sc.Exec.Allow, err = security.NewWhitelist("npm") s.Assert(err, qt.IsNil) ex := hexec.New(sc, s.workingDir, loggers.NewDefault()) command, err := ex.New("npm", "install") s.Assert(err, qt.IsNil) return command } func newTestHelperFromProvider(cfg config.Provider, fs *hugofs.Fs, t testing.TB) (testHelper, *allconfig.Configs) { res, err := allconfig.LoadConfig(allconfig.ConfigSourceDescriptor{ Flags: cfg, Fs: fs.Source, }) if err != nil { t.Fatal(err) } return newTestHelper(res.Base, fs, t), res } func newTestHelper(cfg *allconfig.Config, fs *hugofs.Fs, t testing.TB) testHelper { return testHelper{ Cfg: cfg, Fs: fs, C: qt.New(t), } } type testHelper struct { Cfg *allconfig.Config Fs *hugofs.Fs *qt.C } func (th testHelper) assertFileContent(filename string, matches ...string) { th.Helper() filename = th.replaceDefaultContentLanguageValue(filename) content := readWorkingDir(th, th.Fs, filename) for _, match := range matches { match = th.replaceDefaultContentLanguageValue(match) th.Assert(strings.Contains(content, match), qt.Equals, true, qt.Commentf(match+" not in: \n"+content)) } } func (th testHelper) assertFileNotExist(filename string) { exists, err := helpers.Exists(filename, th.Fs.PublishDir) th.Assert(err, qt.IsNil) th.Assert(exists, qt.Equals, false) } func (th testHelper) replaceDefaultContentLanguageValue(value string) string { defaultInSubDir := th.Cfg.DefaultContentLanguageInSubdir replace := th.Cfg.DefaultContentLanguage + "/" if !defaultInSubDir { value = strings.Replace(value, replace, "", 1) } return value } func loadTestConfigFromProvider(cfg config.Provider) (*allconfig.Configs, error) { workingDir := cfg.GetString("workingDir") fs := afero.NewMemMapFs() if workingDir != "" { fs.MkdirAll(workingDir, 0o755) } res, err := allconfig.LoadConfig(allconfig.ConfigSourceDescriptor{Flags: cfg, Fs: fs}) return res, err } func newTestCfg(withConfig ...func(cfg config.Provider) error) (config.Provider, *hugofs.Fs) { mm := afero.NewMemMapFs() cfg := config.New() cfg.Set("defaultContentLanguageInSubdir", false) cfg.Set("publishDir", "public") fs := hugofs.NewFromOld(hugofs.NewBaseFileDecorator(mm), cfg) return cfg, fs } func newTestSitesFromConfig(t testing.TB, afs afero.Fs, tomlConfig string, layoutPathContentPairs ...string) (testHelper, *HugoSites) { if len(layoutPathContentPairs)%2 != 0 { t.Fatalf("Layouts must be provided in pairs") } c := qt.New(t) writeToFs(t, afs, filepath.Join("content", ".gitkeep"), "") writeToFs(t, afs, "config.toml", tomlConfig) cfg, err := allconfig.LoadConfig(allconfig.ConfigSourceDescriptor{Fs: afs}) c.Assert(err, qt.IsNil) fs := hugofs.NewFrom(afs, cfg.LoadingInfo.BaseConfig) th := newTestHelper(cfg.Base, fs, t) for i := 0; i < len(layoutPathContentPairs); i += 2 { writeSource(t, fs, layoutPathContentPairs[i], layoutPathContentPairs[i+1]) } h, err := NewHugoSites(deps.DepsCfg{Fs: fs, Configs: cfg}) c.Assert(err, qt.IsNil) return th, h } // TODO(bep) replace these with the builder func buildSingleSite(t testing.TB, depsCfg deps.DepsCfg, buildCfg BuildCfg) *Site { t.Helper() return buildSingleSiteExpected(t, false, false, depsCfg, buildCfg) } func buildSingleSiteExpected(t testing.TB, expectSiteInitError, expectBuildError bool, depsCfg deps.DepsCfg, buildCfg BuildCfg) *Site { t.Helper() b := newTestSitesBuilderFromDepsCfg(t, depsCfg).WithNothingAdded() err := b.CreateSitesE() if expectSiteInitError { b.Assert(err, qt.Not(qt.IsNil)) return nil } else { b.Assert(err, qt.IsNil) } h := b.H b.Assert(len(h.Sites), qt.Equals, 1) if expectBuildError { b.Assert(h.Build(buildCfg), qt.Not(qt.IsNil)) return nil } b.Assert(h.Build(buildCfg), qt.IsNil) return h.Sites[0] } func writeSourcesToSource(t *testing.T, base string, fs *hugofs.Fs, sources ...[2]string) { for _, src := range sources { writeSource(t, fs, filepath.Join(base, src[0]), src[1]) } } func getPage(in page.Page, ref string) page.Page { p, err := in.GetPage(ref) if err != nil { panic(err) } return p } func content(c resource.ContentProvider) string { cc, err := c.Content(context.Background()) if err != nil { panic(err) } ccs, err := cast.ToStringE(cc) if err != nil { panic(err) } return ccs } gohugoio-hugo-6abdaca/hugolib/testsite/000077500000000000000000000000001507671574500204335ustar00rootroot00000000000000gohugoio-hugo-6abdaca/hugolib/testsite/.gitignore000066400000000000000000000000131507671574500224150ustar00rootroot00000000000000config.tomlgohugoio-hugo-6abdaca/hugolib/testsite/CODEOWNERS000066400000000000000000000000061507671574500220220ustar00rootroot00000000000000* @bepgohugoio-hugo-6abdaca/hugolib/testsite/content/000077500000000000000000000000001507671574500221055ustar00rootroot00000000000000gohugoio-hugo-6abdaca/hugolib/testsite/content/first-post.md000066400000000000000000000000621507671574500245370ustar00rootroot00000000000000--- title: "My First Post" lastmod: 2018-02-28 ---gohugoio-hugo-6abdaca/hugolib/testsite/content_nn/000077500000000000000000000000001507671574500226005ustar00rootroot00000000000000gohugoio-hugo-6abdaca/hugolib/testsite/content_nn/first-post.md000066400000000000000000000000641507671574500252340ustar00rootroot00000000000000--- title: "Min første dag" lastmod: 1972-02-28 ---gohugoio-hugo-6abdaca/hugoreleaser.env000066400000000000000000000004401507671574500203330ustar00rootroot00000000000000# Release env. # These will be replaced by script before release. HUGORELEASER_TAG=v0.152.1 HUGORELEASER_COMMITISH=5869cbddd88590563c2b7b400e804ccc7d2cb697 gohugoio-hugo-6abdaca/hugoreleaser.yaml000066400000000000000000000156551507671574500205230ustar00rootroot00000000000000project: hugo # Common definitions. definitions: archive_type_zip: &archive_type_zip type: format: zip extension: .zip env_extended_linux: &env_extended_linux - CGO_ENABLED=1 - CC=aarch64-linux-gnu-gcc - CXX=aarch64-linux-gnu-g++ env_extended_windows: &env_extended_windows - CGO_ENABLED=1 - CC=x86_64-w64-mingw32-gcc - CXX=x86_64-w64-mingw32-g++ env_extended_darwin: &env_extended_darwin - CGO_ENABLED=1 - CC=o64-clang - CXX=o64-clang++ name_template_extended_withdeploy: &name_template_extended_withdeploy "{{ .Project }}_extended_withdeploy_{{ .Tag | trimPrefix `v` }}_{{ .Goos }}-{{ .Goarch }}" name_template_extended: &name_template_extended "{{ .Project }}_extended_{{ .Tag | trimPrefix `v` }}_{{ .Goos }}-{{ .Goarch }}" archive_deb: &archive_deb binary_dir: /usr/local/bin extra_files: [] type: format: _plugin extension: .deb plugin: id: deb type: gorun command: github.com/gohugoio/hugoreleaser-archive-plugins/deb@latest custom_settings: vendor: gohugo.io homepage: https://github.com/gohugoio/hugo maintainer: Bjørn Erik Pedersen description: A fast and flexible Static Site Generator written in Go. license: Apache-2.0 archive_alias_replacements: linux-amd64.tar.gz: Linux-64bit.tar.gz go_settings: go_proxy: https://proxy.golang.org go_exe: go build_settings: binary: hugo flags: - -buildmode - exe env: - CGO_ENABLED=0 ldflags: -s -w -X github.com/gohugoio/hugo/common/hugo.vendorInfo=gohugoio archive_settings: name_template: "{{ .Project }}_{{ .Tag | trimPrefix `v` }}_{{ .Goos }}-{{ .Goarch }}" extra_files: - source_path: README.md target_path: README.md - source_path: LICENSE target_path: LICENSE type: format: tar.gz extension: .tar.gz release_settings: name: ${HUGORELEASER_TAG} type: github repository: hugo repository_owner: gohugoio draft: true prerelease: false release_notes_settings: generate: true short_threshold: 10 short_title: What's Changed groups: - regexp: "Merge commit|Squashed|releaser:" ignore: true - title: Note regexp: (note|deprecated) ordinal: 10 - title: Bug fixes regexp: fix ordinal: 15 - title: Dependency Updates regexp: deps ordinal: 30 - title: Build Setup regexp: (snap|release|update to) ordinal: 40 - title: Documentation regexp: (doc|readme) ordinal: 40 - title: Improvements regexp: .* ordinal: 20 builds: - path: container1/unix/regular os: - goos: darwin archs: - goarch: universal - goos: linux archs: - goarch: amd64 - goarch: arm64 - goarch: arm build_settings: env: - CGO_ENABLED=0 - GOARM=7 - goos: dragonfly archs: - goarch: amd64 - goos: freebsd archs: - goarch: amd64 - goos: netbsd archs: - goarch: amd64 - goos: openbsd archs: - goarch: amd64 - goos: solaris archs: - goarch: amd64 - path: container1/unix/extended build_settings: flags: - -buildmode - exe - -tags - extended env: - CGO_ENABLED=1 os: - goos: darwin build_settings: env: *env_extended_darwin archs: - goarch: universal - goos: linux archs: - goarch: amd64 - path: container1/unix/extended-withdeploy build_settings: flags: - -buildmode - exe - -tags - extended,withdeploy env: - CGO_ENABLED=1 os: - goos: darwin build_settings: env: *env_extended_darwin archs: - goarch: universal - goos: linux archs: - goarch: amd64 - path: container2/linux/extended build_settings: flags: - -buildmode - exe - -tags - extended os: - goos: linux build_settings: env: *env_extended_linux archs: - goarch: arm64 - path: container2/linux/extended-withdeploy build_settings: flags: - -buildmode - exe - -tags - extended,withdeploy os: - goos: linux build_settings: env: *env_extended_linux archs: - goarch: arm64 - path: container1/windows/regular os: - goos: windows build_settings: binary: hugo.exe archs: - goarch: amd64 - goarch: arm64 - path: container1/windows/extended build_settings: flags: - -buildmode - exe - -tags - extended env: *env_extended_windows ldflags: -s -w -X github.com/gohugoio/hugo/common/hugo.vendorInfo=gohugoio -extldflags '-static' os: - goos: windows build_settings: binary: hugo.exe archs: - goarch: amd64 - path: container1/windows/extended-withdeploy build_settings: flags: - -buildmode - exe - -tags - extended,withdeploy env: *env_extended_windows ldflags: -s -w -X github.com/gohugoio/hugo/common/hugo.vendorInfo=gohugoio -extldflags '-static' os: - goos: windows build_settings: binary: hugo.exe archs: - goarch: amd64 archives: - paths: - builds/container1/unix/regular/** - paths: - builds/container1/unix/extended/** archive_settings: name_template: *name_template_extended - paths: - builds/container1/unix/extended-withdeploy/** archive_settings: name_template: *name_template_extended_withdeploy - paths: - builds/container2/*/extended/** archive_settings: name_template: *name_template_extended - paths: - builds/container2/*/extended-withdeploy/** archive_settings: name_template: *name_template_extended_withdeploy - paths: - builds/**/windows/regular/** archive_settings: *archive_type_zip - paths: - builds/**/windows/extended/** archive_settings: name_template: *name_template_extended <<: *archive_type_zip - paths: - builds/**/windows/extended-withdeploy/** archive_settings: name_template: *name_template_extended_withdeploy <<: *archive_type_zip - paths: - builds/**/regular/linux/{arm64,amd64} archive_settings: *archive_deb - paths: - builds/**/extended/linux/{arm64,amd64} archive_settings: name_template: *name_template_extended <<: *archive_deb - paths: - builds/**/extended-withdeploy/linux/{arm64,amd64} archive_settings: name_template: *name_template_extended_withdeploy <<: *archive_deb releases: - paths: - archives/** path: r1 gohugoio-hugo-6abdaca/identity/000077500000000000000000000000001507671574500167675ustar00rootroot00000000000000gohugoio-hugo-6abdaca/identity/finder.go000066400000000000000000000154201507671574500205670ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package identity import ( "fmt" "sync" "github.com/gohugoio/hugo/compare" ) // NewFinder creates a new Finder. // This is a thread safe implementation with a cache. func NewFinder(cfg FinderConfig) *Finder { return &Finder{cfg: cfg, answers: make(map[ManagerIdentity]FinderResult), seenFindOnce: make(map[Identity]bool)} } var searchIDPool = sync.Pool{ New: func() any { return &searchID{seen: make(map[Manager]bool)} }, } func getSearchID() *searchID { return searchIDPool.Get().(*searchID) } func putSearchID(sid *searchID) { sid.id = nil sid.isDp = false sid.isPeq = false sid.hasEqer = false sid.maxDepth = 0 sid.dp = nil sid.peq = nil sid.eqer = nil clear(sid.seen) searchIDPool.Put(sid) } // GetSearchID returns a searchID from the pool. // Finder finds identities inside another. type Finder struct { cfg FinderConfig answers map[ManagerIdentity]FinderResult muAnswers sync.RWMutex seenFindOnce map[Identity]bool muSeenFindOnce sync.RWMutex } type FinderResult int const ( FinderNotFound FinderResult = iota FinderFoundOneOfManyRepetition FinderFoundOneOfMany FinderFound ) // Contains returns whether in contains id. func (f *Finder) Contains(id, in Identity, maxDepth int) FinderResult { if id == Anonymous || in == Anonymous { return FinderNotFound } if id == GenghisKhan && in == GenghisKhan { return FinderNotFound } if id == GenghisKhan { return FinderFound } if id == in { return FinderFound } if id == nil || in == nil { return FinderNotFound } var ( isDp bool isPeq bool dp IsProbablyDependentProvider peq compare.ProbablyEqer ) if !f.cfg.Exact { dp, isDp = id.(IsProbablyDependentProvider) peq, isPeq = id.(compare.ProbablyEqer) } eqer, hasEqer := id.(compare.Eqer) sid := getSearchID() sid.id = id sid.isDp = isDp sid.isPeq = isPeq sid.hasEqer = hasEqer sid.dp = dp sid.peq = peq sid.eqer = eqer sid.maxDepth = maxDepth defer putSearchID(sid) r := FinderNotFound if i := f.checkOne(sid, in, 0); i > r { r = i } if r == FinderFound { return r } m := GetDependencyManager(in) if m != nil { if i := f.checkManager(sid, m, 0); i > r { r = i } } return r } func (f *Finder) checkMaxDepth(sid *searchID, level int) FinderResult { if sid.maxDepth >= 0 && level > sid.maxDepth { return FinderNotFound } if level > 100 { // This should never happen, but some false positives are probably better than a panic. if !f.cfg.Exact { return FinderFound } panic("too many levels") } return -1 } func (f *Finder) checkManager(sid *searchID, m Manager, level int) FinderResult { if r := f.checkMaxDepth(sid, level); r >= 0 { return r } if m == nil { return FinderNotFound } if sid.seen[m] { return FinderNotFound } sid.seen[m] = true f.muAnswers.RLock() r, ok := f.answers[ManagerIdentity{Manager: m, Identity: sid.id}] f.muAnswers.RUnlock() if ok { return r } r = f.search(sid, m, level) if r == FinderFoundOneOfMany { // Don't cache this one. return r } f.muAnswers.Lock() f.answers[ManagerIdentity{Manager: m, Identity: sid.id}] = r f.muAnswers.Unlock() return r } func (f *Finder) checkOne(sid *searchID, v Identity, depth int) (r FinderResult) { if ff, ok := v.(FindFirstManagerIdentityProvider); ok { f.muSeenFindOnce.RLock() mi := ff.FindFirstManagerIdentity() seen := f.seenFindOnce[mi.Identity] f.muSeenFindOnce.RUnlock() if seen { return FinderFoundOneOfManyRepetition } r = f.doCheckOne(sid, mi.Identity, depth) if r == 0 { r = f.checkManager(sid, mi.Manager, depth) } if r > FinderFoundOneOfManyRepetition { f.muSeenFindOnce.Lock() // Double check. if f.seenFindOnce[mi.Identity] { f.muSeenFindOnce.Unlock() return FinderFoundOneOfManyRepetition } f.seenFindOnce[mi.Identity] = true f.muSeenFindOnce.Unlock() r = FinderFoundOneOfMany } return r } else { return f.doCheckOne(sid, v, depth) } } func (f *Finder) doCheckOne(sid *searchID, v Identity, depth int) FinderResult { id2 := Unwrap(v) if id2 == Anonymous { return FinderNotFound } id := sid.id if sid.hasEqer { if sid.eqer.Eq(id2) { return FinderFound } } else if id == id2 { return FinderFound } if f.cfg.Exact { return FinderNotFound } if id2 == nil { return FinderNotFound } if id2 == GenghisKhan { return FinderFound } if id.IdentifierBase() == id2.IdentifierBase() { return FinderFound } if sid.isDp && sid.dp.IsProbablyDependent(id2) { return FinderFound } if sid.isPeq && sid.peq.ProbablyEq(id2) { return FinderFound } if pdep, ok := id2.(IsProbablyDependencyProvider); ok && pdep.IsProbablyDependency(id) { return FinderFound } if peq, ok := id2.(compare.ProbablyEqer); ok && peq.ProbablyEq(id) { return FinderFound } return FinderNotFound } // search searches for id in ids. func (f *Finder) search(sid *searchID, m Manager, depth int) FinderResult { id := sid.id if id == Anonymous { return FinderNotFound } if !f.cfg.Exact && id == GenghisKhan { return FinderNotFound } var r FinderResult m.forEeachIdentity( func(v Identity) bool { i := f.checkOne(sid, v, depth) if i > r { r = i } if r == FinderFound { return true } m := GetDependencyManager(v) if i := f.checkManager(sid, m, depth+1); i > r { r = i } if r == FinderFound { return true } return false }, ) return r } // FinderConfig provides configuration for the Finder. // Note that we by default will use a strategy where probable matches are // good enough. The primary use case for this is to identity the change set // for a given changed identity (e.g. a template), and we don't want to // have any false negatives there, but some false positives are OK. Also, speed is important. type FinderConfig struct { // Match exact matches only. Exact bool } // ManagerIdentity wraps a pair of Identity and Manager. type ManagerIdentity struct { Identity Manager } func (p ManagerIdentity) String() string { return fmt.Sprintf("%s:%s", p.Identity.IdentifierBase(), p.Manager.IdentifierBase()) } type searchID struct { id Identity isDp bool isPeq bool hasEqer bool maxDepth int seen map[Manager]bool dp IsProbablyDependentProvider peq compare.ProbablyEqer eqer compare.Eqer } gohugoio-hugo-6abdaca/identity/finder_test.go000066400000000000000000000027261507671574500216330ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package provides ways to identify values in Hugo. Used for dependency tracking etc. package identity_test import ( "testing" "github.com/gohugoio/hugo/identity" ) func BenchmarkFinder(b *testing.B) { m1 := identity.NewManager("") m2 := identity.NewManager("") m3 := identity.NewManager("") m1.AddIdentity( testIdentity{"base", "id1", "", "pe1"}, testIdentity{"base2", "id2", "eq1", ""}, m2, m3, ) b4 := testIdentity{"base4", "id4", "", ""} b5 := testIdentity{"base5", "id5", "", ""} m2.AddIdentity(b4) f := identity.NewFinder(identity.FinderConfig{}) b.Run("Find one", func(b *testing.B) { for i := 0; i < b.N; i++ { r := f.Contains(b4, m1, -1) if r == 0 { b.Fatal("not found") } } }) b.Run("Find none", func(b *testing.B) { for i := 0; i < b.N; i++ { r := f.Contains(b5, m1, -1) if r > 0 { b.Fatal("found") } } }) } gohugoio-hugo-6abdaca/identity/identity.go000066400000000000000000000310441507671574500211510ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package provides ways to identify values in Hugo. Used for dependency tracking etc. package identity import ( "fmt" "path" "path/filepath" "sort" "strings" "sync" "sync/atomic" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/compare" ) const ( // Anonymous is an Identity that can be used when identity doesn't matter. Anonymous = StringIdentity("__anonymous") // GenghisKhan is an Identity everyone relates to. GenghisKhan = StringIdentity("__genghiskhan") StructuralChangeAdd = StringIdentity("__structural_change_add") StructuralChangeRemove = StringIdentity("__structural_change_remove") ) var NopManager = new(nopManager) // NewIdentityManager creates a new Manager. func NewManager(name string, opts ...ManagerOption) Manager { idm := &identityManager{ Identity: Anonymous, name: name, ids: Identities{}, } for _, o := range opts { o(idm) } return idm } // CleanString cleans s to be suitable as an identifier. func CleanString(s string) string { s = strings.ToLower(s) s = strings.Trim(filepath.ToSlash(s), "/") return "/" + path.Clean(s) } // CleanStringIdentity cleans s to be suitable as an identifier and wraps it in a StringIdentity. func CleanStringIdentity(s string) StringIdentity { return StringIdentity(CleanString(s)) } // GetDependencyManager returns the DependencyManager from v or nil if none found. func GetDependencyManager(v any) Manager { switch vv := v.(type) { case Manager: return vv case types.Unwrapper: return GetDependencyManager(vv.Unwrapv()) case DependencyManagerProvider: return vv.GetDependencyManager() } return nil } // FirstIdentity returns the first Identity in v, Anonymous if none found func FirstIdentity(v any) Identity { var result Identity = Anonymous WalkIdentitiesShallow(v, func(level int, id Identity) bool { result = id return result != Anonymous }) return result } // PrintIdentityInfo is used for debugging/tests only. func PrintIdentityInfo(v any) { WalkIdentitiesDeep(v, func(level int, id Identity) bool { var s string if idm, ok := id.(*identityManager); ok { s = " " + idm.name } fmt.Printf("%s%s (%T)%s\n", strings.Repeat(" ", level), id.IdentifierBase(), id, s) return false }) } func Unwrap(id Identity) Identity { switch t := id.(type) { case IdentityProvider: return t.GetIdentity() default: return id } } // WalkIdentitiesDeep walks identities in v and applies cb to every identity found. // Return true from cb to terminate. // If deep is true, it will also walk nested Identities in any Manager found. func WalkIdentitiesDeep(v any, cb func(level int, id Identity) bool) { seen := make(map[Identity]bool) walkIdentities(v, 0, true, seen, cb) } // WalkIdentitiesShallow will not walk into a Manager's Identities. // See WalkIdentitiesDeep. // cb is called for every Identity found and returns whether to terminate the walk. func WalkIdentitiesShallow(v any, cb func(level int, id Identity) bool) { walkIdentitiesShallow(v, 0, cb) } // WithOnAddIdentity sets a callback that will be invoked when an identity is added to the manager. func WithOnAddIdentity(f func(id Identity)) ManagerOption { return func(m *identityManager) { m.onAddIdentity = f } } // DependencyManagerProvider provides a manager for dependencies. type DependencyManagerProvider interface { GetDependencyManager() Manager } // DependencyManagerProviderFunc is a function that implements the DependencyManagerProvider interface. type DependencyManagerProviderFunc func() Manager func (d DependencyManagerProviderFunc) GetDependencyManager() Manager { return d() } // DependencyManagerScopedProvider provides a manager for dependencies with a given scope. type DependencyManagerScopedProvider interface { GetDependencyManagerForScope(scope int) Manager GetDependencyManagerForScopesAll() []Manager } // ForEeachIdentityProvider provides a way iterate over identities. type ForEeachIdentityProvider interface { // ForEeachIdentityProvider calls cb for each Identity. // If cb returns true, the iteration is terminated. // The return value is whether the iteration was terminated. ForEeachIdentity(cb func(id Identity) bool) bool } // ForEeachIdentityProviderFunc is a function that implements the ForEeachIdentityProvider interface. type ForEeachIdentityProviderFunc func(func(id Identity) bool) bool func (f ForEeachIdentityProviderFunc) ForEeachIdentity(cb func(id Identity) bool) bool { return f(cb) } // ForEeachIdentityByNameProvider provides a way to look up identities by name. type ForEeachIdentityByNameProvider interface { // ForEeachIdentityByName calls cb for each Identity that relates to name. // If cb returns true, the iteration is terminated. ForEeachIdentityByName(name string, cb func(id Identity) bool) } type FindFirstManagerIdentityProvider interface { Identity FindFirstManagerIdentity() ManagerIdentity } func NewFindFirstManagerIdentityProvider(m Manager, id Identity) FindFirstManagerIdentityProvider { return findFirstManagerIdentity{ Identity: Anonymous, ManagerIdentity: ManagerIdentity{ Manager: m, Identity: id, }, } } type findFirstManagerIdentity struct { Identity ManagerIdentity } func (f findFirstManagerIdentity) FindFirstManagerIdentity() ManagerIdentity { return f.ManagerIdentity } // Identities stores identity providers. type Identities map[Identity]bool func (ids Identities) AsSlice() []Identity { s := make([]Identity, len(ids)) i := 0 for v := range ids { s[i] = v i++ } sort.Slice(s, func(i, j int) bool { return s[i].IdentifierBase() < s[j].IdentifierBase() }) return s } func (ids Identities) String() string { var sb strings.Builder i := 0 for id := range ids { sb.WriteString(fmt.Sprintf("[%s]", id.IdentifierBase())) if i < len(ids)-1 { sb.WriteString(", ") } i++ } return sb.String() } // Identity represents a thing in Hugo (a Page, a template etc.) // Any implementation must be comparable/hashable. type Identity interface { IdentifierBase() string } // IdentityGroupProvider can be implemented by tightly connected types. // Current use case is Resource transformation via Hugo Pipes. type IdentityGroupProvider interface { GetIdentityGroup() Identity } // IdentityProvider can be implemented by types that isn't itself and Identity, // usually because they're not comparable/hashable. type IdentityProvider interface { GetIdentity() Identity } // SignalRebuilder is an optional interface for types that can signal a rebuild. type SignalRebuilder interface { SignalRebuild(ids ...Identity) } // IncrementByOne implements Incrementer adding 1 every time Incr is called. type IncrementByOne struct { counter uint64 } func (c *IncrementByOne) Incr() int { return int(atomic.AddUint64(&c.counter, uint64(1))) } // Incrementer increments and returns the value. // Typically used for IDs. type Incrementer interface { Incr() int } // IsProbablyDependentProvider is an optional interface for Identity. type IsProbablyDependentProvider interface { IsProbablyDependent(other Identity) bool } // IsProbablyDependencyProvider is an optional interface for Identity. type IsProbablyDependencyProvider interface { IsProbablyDependency(other Identity) bool } // Manager is an Identity that also manages identities, typically dependencies. type Manager interface { Identity AddIdentity(ids ...Identity) AddIdentityForEach(ids ...ForEeachIdentityProvider) GetIdentity() Identity Reset() forEeachIdentity(func(id Identity) bool) bool } type ManagerOption func(m *identityManager) // StringIdentity is an Identity that wraps a string. type StringIdentity string func (s StringIdentity) IdentifierBase() string { return string(s) } type identityManager struct { Identity // Only used for debugging. name string // mu protects _changes_ to this manager, // reads currently assumes no concurrent writes. mu sync.RWMutex ids Identities forEachIds []ForEeachIdentityProvider // Hooks used in debugging. onAddIdentity func(id Identity) } func (im *identityManager) AddIdentity(ids ...Identity) { im.mu.Lock() defer im.mu.Unlock() for _, id := range ids { if id == nil || id == Anonymous { continue } if _, found := im.ids[id]; !found { if im.onAddIdentity != nil { im.onAddIdentity(id) } im.ids[id] = true } } } func (im *identityManager) AddIdentityForEach(ids ...ForEeachIdentityProvider) { im.mu.Lock() im.forEachIds = append(im.forEachIds, ids...) im.mu.Unlock() } func (im *identityManager) ContainsIdentity(id Identity) FinderResult { if im.Identity != Anonymous && id == im.Identity { return FinderFound } f := NewFinder(FinderConfig{Exact: true}) r := f.Contains(id, im, -1) return r } // Managers are always anonymous. func (im *identityManager) GetIdentity() Identity { return im.Identity } func (im *identityManager) Reset() { im.mu.Lock() im.ids = Identities{} im.mu.Unlock() } func (im *identityManager) GetDependencyManagerForScope(int) Manager { return im } func (im *identityManager) GetDependencyManagerForScopesAll() []Manager { return []Manager{im} } func (im *identityManager) String() string { return fmt.Sprintf("IdentityManager(%s)", im.name) } func (im *identityManager) forEeachIdentity(fn func(id Identity) bool) bool { // The absence of a lock here is deliberate. This is currently only used on server reloads // in a single-threaded context. for id := range im.ids { if fn(id) { return true } } for _, fe := range im.forEachIds { if fe.ForEeachIdentity(fn) { return true } } return false } type nopManager int func (m *nopManager) AddIdentity(ids ...Identity) { } func (m *nopManager) AddIdentityForEach(ids ...ForEeachIdentityProvider) { } func (m *nopManager) IdentifierBase() string { return "" } func (m *nopManager) GetIdentity() Identity { return Anonymous } func (m *nopManager) Reset() { } func (m *nopManager) forEeachIdentity(func(id Identity) bool) bool { return false } // returns whether further walking should be terminated. func walkIdentities(v any, level int, deep bool, seen map[Identity]bool, cb func(level int, id Identity) bool) { if level > 20 { panic("too deep") } var cbRecursive func(level int, id Identity) bool cbRecursive = func(level int, id Identity) bool { if id == nil { return false } if deep && seen[id] { return false } seen[id] = true if cb(level, id) { return true } if deep { if m := GetDependencyManager(id); m != nil { m.forEeachIdentity(func(id2 Identity) bool { return walkIdentitiesShallow(id2, level+1, cbRecursive) }) } } return false } walkIdentitiesShallow(v, level, cbRecursive) } // returns whether further walking should be terminated. // Anonymous identities are skipped. func walkIdentitiesShallow(v any, level int, cb func(level int, id Identity) bool) bool { cb2 := func(level int, id Identity) bool { if id == Anonymous { return false } if id == nil { return false } return cb(level, id) } if id, ok := v.(Identity); ok { if cb2(level, id) { return true } } if ipd, ok := v.(IdentityProvider); ok { if cb2(level, ipd.GetIdentity()) { return true } } if ipdgp, ok := v.(IdentityGroupProvider); ok { if cb2(level, ipdgp.GetIdentityGroup()) { return true } } return false } var ( _ Identity = (*orIdentity)(nil) _ compare.ProbablyEqer = (*orIdentity)(nil) ) func Or(a, b Identity) Identity { return orIdentity{a: a, b: b} } type orIdentity struct { a, b Identity } func (o orIdentity) IdentifierBase() string { return o.a.IdentifierBase() } func (o orIdentity) ProbablyEq(other any) bool { otherID, ok := other.(Identity) if !ok { return false } return probablyEq(o.a, otherID) || probablyEq(o.b, otherID) } func probablyEq(a, b Identity) bool { if a == b { return true } if a == Anonymous || b == Anonymous { return false } if a.IdentifierBase() == b.IdentifierBase() { return true } if a2, ok := a.(compare.ProbablyEqer); ok && a2.ProbablyEq(b) { return true } if a2, ok := a.(IsProbablyDependentProvider); ok { return a2.IsProbablyDependent(b) } return false } gohugoio-hugo-6abdaca/identity/identity_test.go000066400000000000000000000113621507671574500222110ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package identity_test import ( "fmt" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/identity/identitytesting" ) func BenchmarkIdentityManager(b *testing.B) { createIds := func(num int) []identity.Identity { ids := make([]identity.Identity, num) for i := range num { name := fmt.Sprintf("id%d", i) ids[i] = &testIdentity{base: name, name: name} } return ids } b.Run("identity.NewManager", func(b *testing.B) { for i := 0; i < b.N; i++ { m := identity.NewManager("") if m == nil { b.Fatal("manager is nil") } } }) b.Run("Add unique", func(b *testing.B) { ids := createIds(b.N) im := identity.NewManager("") b.ResetTimer() for i := 0; i < b.N; i++ { im.AddIdentity(ids[i]) } b.StopTimer() }) b.Run("Add duplicates", func(b *testing.B) { id := &testIdentity{base: "a", name: "b"} im := identity.NewManager("") b.ResetTimer() for i := 0; i < b.N; i++ { im.AddIdentity(id) } b.StopTimer() }) b.Run("Nop StringIdentity const", func(b *testing.B) { const id = identity.StringIdentity("test") for i := 0; i < b.N; i++ { identity.NopManager.AddIdentity(id) } }) b.Run("Nop StringIdentity const other package", func(b *testing.B) { for i := 0; i < b.N; i++ { identity.NopManager.AddIdentity(identitytesting.TestIdentity) } }) b.Run("Nop StringIdentity var", func(b *testing.B) { id := identity.StringIdentity("test") for i := 0; i < b.N; i++ { identity.NopManager.AddIdentity(id) } }) b.Run("Nop pointer identity", func(b *testing.B) { id := &testIdentity{base: "a", name: "b"} for i := 0; i < b.N; i++ { identity.NopManager.AddIdentity(id) } }) b.Run("Nop Anonymous", func(b *testing.B) { for i := 0; i < b.N; i++ { identity.NopManager.AddIdentity(identity.Anonymous) } }) } func BenchmarkIsNotDependent(b *testing.B) { runBench := func(b *testing.B, id1, id2 identity.Identity) { for i := 0; i < b.N; i++ { isNotDependent(id1, id2) } } newNestedManager := func(depth, count int) identity.Manager { m1 := identity.NewManager("") for range depth { m2 := identity.NewManager("") m1.AddIdentity(m2) for j := range count { id := fmt.Sprintf("id%d", j) m2.AddIdentity(&testIdentity{id, id, "", ""}) } m1 = m2 } return m1 } type depthCount struct { depth int count int } for _, dc := range []depthCount{{10, 5}} { b.Run(fmt.Sprintf("Nested not found %d %d", dc.depth, dc.count), func(b *testing.B) { im := newNestedManager(dc.depth, dc.count) id1 := identity.StringIdentity("idnotfound") b.ResetTimer() runBench(b, im, id1) }) } } func TestIdentityManager(t *testing.T) { c := qt.New(t) newNestedManager := func() identity.Manager { m1 := identity.NewManager("") m2 := identity.NewManager("") m3 := identity.NewManager("") m1.AddIdentity( testIdentity{"base", "id1", "", "pe1"}, testIdentity{"base2", "id2", "eq1", ""}, m2, m3, ) m2.AddIdentity(testIdentity{"base4", "id4", "", ""}) return m1 } c.Run("Anonymous", func(c *qt.C) { im := newNestedManager() c.Assert(im.GetIdentity(), qt.Equals, identity.Anonymous) im.AddIdentity(identity.Anonymous) c.Assert(isNotDependent(identity.Anonymous, identity.Anonymous), qt.IsTrue) }) c.Run("GenghisKhan", func(c *qt.C) { c.Assert(isNotDependent(identity.GenghisKhan, identity.GenghisKhan), qt.IsTrue) }) } type testIdentity struct { base string name string idEq string idProbablyEq string } func (id testIdentity) Eq(other any) bool { ot, ok := other.(testIdentity) if !ok { return false } if ot.idEq == "" || id.idEq == "" { return false } return ot.idEq == id.idEq } func (id testIdentity) IdentifierBase() string { return id.base } func (id testIdentity) Name() string { return id.name } func (id testIdentity) ProbablyEq(other any) bool { ot, ok := other.(testIdentity) if !ok { return false } if ot.idProbablyEq == "" || id.idProbablyEq == "" { return false } return ot.idProbablyEq == id.idProbablyEq } func isNotDependent(a, b identity.Identity) bool { f := identity.NewFinder(identity.FinderConfig{}) r := f.Contains(b, a, -1) return r == 0 } gohugoio-hugo-6abdaca/identity/identitytesting/000077500000000000000000000000001507671574500222165ustar00rootroot00000000000000gohugoio-hugo-6abdaca/identity/identitytesting/identitytesting.go000066400000000000000000000002041507671574500257700ustar00rootroot00000000000000package identitytesting import "github.com/gohugoio/hugo/identity" const TestIdentity = identity.StringIdentity("__testIdentity") gohugoio-hugo-6abdaca/identity/predicate_identity.go000066400000000000000000000046441507671574500231770ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package provides ways to identify values in Hugo. Used for dependency tracking etc. package identity import ( "fmt" "sync/atomic" hglob "github.com/gohugoio/hugo/hugofs/glob" ) // NewGlobIdentity creates a new Identity that // is probably dependent on any other Identity // that matches the given pattern. func NewGlobIdentity(pattern string) Identity { glob, err := hglob.GetGlob(pattern) if err != nil { panic(err) } predicate := func(other Identity) bool { return glob.Match(other.IdentifierBase()) } return NewPredicateIdentity(predicate, nil) } var predicateIdentityCounter = &atomic.Uint32{} type predicateIdentity struct { id string probablyDependent func(Identity) bool probablyDependency func(Identity) bool } var ( _ IsProbablyDependencyProvider = &predicateIdentity{} _ IsProbablyDependentProvider = &predicateIdentity{} ) // NewPredicateIdentity creates a new Identity that implements both IsProbablyDependencyProvider and IsProbablyDependentProvider // using the provided functions, both of which are optional. func NewPredicateIdentity( probablyDependent func(Identity) bool, probablyDependency func(Identity) bool, ) *predicateIdentity { if probablyDependent == nil { probablyDependent = func(Identity) bool { return false } } if probablyDependency == nil { probablyDependency = func(Identity) bool { return false } } return &predicateIdentity{probablyDependent: probablyDependent, probablyDependency: probablyDependency, id: fmt.Sprintf("predicate%d", predicateIdentityCounter.Add(1))} } func (id *predicateIdentity) IdentifierBase() string { return id.id } func (id *predicateIdentity) IsProbablyDependent(other Identity) bool { return id.probablyDependent(other) } func (id *predicateIdentity) IsProbablyDependency(other Identity) bool { return id.probablyDependency(other) } gohugoio-hugo-6abdaca/identity/predicate_identity_test.go000066400000000000000000000036431507671574500242340ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package provides ways to identify values in Hugo. Used for dependency tracking etc. package identity import ( "testing" qt "github.com/frankban/quicktest" ) func TestGlobIdentity(t *testing.T) { c := qt.New(t) gid := NewGlobIdentity("/a/b/*") c.Assert(isNotDependent(gid, StringIdentity("/a/b/c")), qt.IsFalse) c.Assert(isNotDependent(gid, StringIdentity("/a/c/d")), qt.IsTrue) c.Assert(isNotDependent(StringIdentity("/a/b/c"), gid), qt.IsTrue) c.Assert(isNotDependent(StringIdentity("/a/c/d"), gid), qt.IsTrue) } func isNotDependent(a, b Identity) bool { f := NewFinder(FinderConfig{}) r := f.Contains(a, b, -1) return r == 0 } func TestPredicateIdentity(t *testing.T) { c := qt.New(t) isDependent := func(id Identity) bool { return id.IdentifierBase() == "foo" } isDependency := func(id Identity) bool { return id.IdentifierBase() == "baz" } id := NewPredicateIdentity(isDependent, isDependency) c.Assert(id.IsProbablyDependent(StringIdentity("foo")), qt.IsTrue) c.Assert(id.IsProbablyDependent(StringIdentity("bar")), qt.IsFalse) c.Assert(id.IsProbablyDependent(id), qt.IsFalse) c.Assert(id.IsProbablyDependent(NewPredicateIdentity(isDependent, nil)), qt.IsFalse) c.Assert(id.IsProbablyDependency(StringIdentity("baz")), qt.IsTrue) c.Assert(id.IsProbablyDependency(StringIdentity("foo")), qt.IsFalse) } gohugoio-hugo-6abdaca/identity/question.go000066400000000000000000000030131507671574500211620ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package identity import "sync" // NewQuestion creates a new question with the given identity. func NewQuestion[T any](id Identity) *Question[T] { return &Question[T]{ Identity: id, } } // Answer takes a func that knows the answer. // Note that this is a one-time operation, // fn will not be invoked again it the question is already answered. // Use Result to check if the question is answered. func (q *Question[T]) Answer(fn func() T) { q.mu.Lock() defer q.mu.Unlock() if q.answered { return } q.fasit = fn() q.answered = true } // Result returns the fasit of the question (if answered), // and a bool indicating if the question has been answered. func (q *Question[T]) Result() (any, bool) { q.mu.RLock() defer q.mu.RUnlock() return q.fasit, q.answered } // A Question is defined by its Identity and can be answered once. type Question[T any] struct { Identity fasit T mu sync.RWMutex answered bool } gohugoio-hugo-6abdaca/identity/question_test.go000066400000000000000000000017321507671574500222270ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package identity import ( "testing" qt "github.com/frankban/quicktest" ) func TestQuestion(t *testing.T) { c := qt.New(t) q := NewQuestion[int](StringIdentity("2+2?")) v, ok := q.Result() c.Assert(ok, qt.Equals, false) c.Assert(v, qt.Equals, 0) q.Answer(func() int { return 4 }) v, ok = q.Result() c.Assert(ok, qt.Equals, true) c.Assert(v, qt.Equals, 4) } gohugoio-hugo-6abdaca/internal/000077500000000000000000000000001507671574500167525ustar00rootroot00000000000000gohugoio-hugo-6abdaca/internal/js/000077500000000000000000000000001507671574500173665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/internal/js/api.go000066400000000000000000000030411507671574500204640ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package js import ( "context" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/resources/resource" ) // BatcherClient is used to do JS batch operations. type BatcherClient interface { New(id string) (Batcher, error) Store() *maps.Cache[string, Batcher] } // BatchPackage holds a group of JavaScript resources. type BatchPackage interface { Groups() map[string]resource.Resources } // Batcher is used to build JavaScript packages. type Batcher interface { Build(context.Context) (BatchPackage, error) Config(ctx context.Context) OptionsSetter Group(ctx context.Context, id string) BatcherGroup } // BatcherGroup is a group of scripts and instances. type BatcherGroup interface { Instance(sid, iid string) OptionsSetter Runner(id string) OptionsSetter Script(id string) OptionsSetter } // OptionsSetter is used to set options for a batch, script or instance. type OptionsSetter interface { SetOptions(map[string]any) string } gohugoio-hugo-6abdaca/internal/js/esbuild/000077500000000000000000000000001507671574500210155ustar00rootroot00000000000000gohugoio-hugo-6abdaca/internal/js/esbuild/batch-esm-runner.gotmpl000066400000000000000000000011661507671574500254170ustar00rootroot00000000000000{{ range $i, $e := .Scripts -}} {{ if eq .Export "*" }} {{- printf "import %s as Script%d from %q;" .Export $i .Import -}} {{ else -}} {{- printf "import { %s as Script%d } from %q;" .Export $i .Import -}} {{ end -}} {{ end -}} {{ range $i, $e := .Runners }} {{- printf "import { %s as Run%d } from %q;" .Export $i .Import -}} {{ end -}} {{ if .Runners -}} let group = { id: "{{ $.ID }}", scripts: [] } {{ range $i, $e := .Scripts -}} group.scripts.push({{ .RunnerJSON $i }}); {{ end -}} {{ range $i, $e := .Runners -}} {{ $id := printf "Run%d" $i }} {{ $id }}(group); {{ end -}} {{ end -}} gohugoio-hugo-6abdaca/internal/js/esbuild/batch.go000066400000000000000000001014451507671574500224320ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package esbuild provides functions for building JavaScript resources. package esbuild import ( "bytes" "context" _ "embed" "encoding/json" "fmt" "io" "path" "path/filepath" "reflect" "sort" "strings" "sync" "sync/atomic" "github.com/evanw/esbuild/pkg/api" "github.com/gohugoio/hugo/cache/dynacache" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/internal/js" "github.com/gohugoio/hugo/lazy" "github.com/gohugoio/hugo/media" "github.com/gohugoio/hugo/resources" "github.com/gohugoio/hugo/resources/resource" "github.com/gohugoio/hugo/resources/resource_factories/create" "github.com/gohugoio/hugo/tpl/tplimpl" "github.com/mitchellh/mapstructure" "github.com/spf13/cast" ) var _ js.Batcher = (*batcher)(nil) const ( NsBatch = "_hugo-js-batch" propsKeyImportContext = "importContext" propsResoure = "resource" ) //go:embed batch-esm-runner.gotmpl var runnerTemplateStr string var _ js.BatchPackage = (*Package)(nil) var _ buildToucher = (*optsHolder[scriptOptions])(nil) var ( _ buildToucher = (*scriptGroup)(nil) _ isBuiltOrTouchedProvider = (*scriptGroup)(nil) ) func NewBatcherClient(deps *deps.Deps) (js.BatcherClient, error) { c := &BatcherClient{ d: deps, buildClient: NewBuildClient(deps.BaseFs.Assets, deps.ResourceSpec), createClient: create.New(deps.ResourceSpec), batcherStore: maps.NewCache[string, js.Batcher](), bundlesStore: maps.NewCache[string, js.BatchPackage](), } deps.BuildEndListeners.Add(func(...any) bool { c.bundlesStore.Reset() return false }) return c, nil } func (o optionsMap[K, C]) ByKey() optionsGetSetters[K, C] { var values []optionsGetSetter[K, C] for _, v := range o { values = append(values, v) } sort.Slice(values, func(i, j int) bool { return values[i].Key().String() < values[j].Key().String() }) return values } func (o *opts[K, C]) Compiled() C { o.h.checkCompileErr() return o.h.compiled } func (os optionsGetSetters[K, C]) Filter(predicate func(K) bool) optionsGetSetters[K, C] { var a optionsGetSetters[K, C] for _, v := range os { if predicate(v.Key()) { a = append(a, v) } } return a } func (o *optsHolder[C]) IdentifierBase() string { return o.optionsID } func (o *opts[K, C]) Key() K { return o.key } func (o *opts[K, C]) Reset() { mu := o.once.ResetWithLock() defer mu.Unlock() o.h.resetCounter++ } func (o *opts[K, C]) Get(id uint32) js.OptionsSetter { var b *optsHolder[C] o.once.Do(func() { b = o.h b.setBuilt(id) }) return b } func (o *opts[K, C]) GetIdentity() identity.Identity { return o.h } func (o *optsHolder[C]) SetOptions(m map[string]any) string { o.optsSetCounter++ o.optsPrev = o.optsCurr o.optsCurr = m o.compiledPrev = o.compiled o.compiled, o.compileErr = o.compiled.compileOptions(m, o.defaults) o.checkCompileErr() return "" } // ValidateBatchID validates the given ID according to some very func ValidateBatchID(id string, isTopLevel bool) error { if id == "" { return fmt.Errorf("id must be set") } // No Windows slashes. if strings.Contains(id, "\\") { return fmt.Errorf("id must not contain backslashes") } // Allow forward slashes in top level IDs only. if !isTopLevel && strings.Contains(id, "/") { return fmt.Errorf("id must not contain forward slashes") } return nil } func newIsBuiltOrTouched() isBuiltOrTouched { return isBuiltOrTouched{ built: make(buildIDs), touched: make(buildIDs), } } func newOpts[K any, C optionsCompiler[C]](key K, optionsID string, defaults defaultOptionValues) *opts[K, C] { return &opts[K, C]{ key: key, h: &optsHolder[C]{ optionsID: optionsID, defaults: defaults, isBuiltOrTouched: newIsBuiltOrTouched(), }, } } // BatcherClient is a client for building JavaScript packages. type BatcherClient struct { d *deps.Deps once sync.Once runnerTemplate *tplimpl.TemplInfo createClient *create.Client buildClient *BuildClient batcherStore *maps.Cache[string, js.Batcher] bundlesStore *maps.Cache[string, js.BatchPackage] } // New creates a new Batcher with the given ID. // This will be typically created once and reused across rebuilds. func (c *BatcherClient) New(id string) (js.Batcher, error) { var initErr error c.once.Do(func() { // We should fix the initialization order here (or use the Go template package directly), but we need to wait // for the Hugo templates to be ready. tmpl, err := c.d.TemplateStore.TextParse("batch-esm-runner", runnerTemplateStr) if err != nil { initErr = err return } c.runnerTemplate = tmpl }) if initErr != nil { return nil, initErr } dependencyManager := c.d.Conf.NewIdentityManager("jsbatch_" + id) configID := "config_" + id b := &batcher{ id: id, scriptGroups: make(map[string]*scriptGroup), dependencyManager: dependencyManager, client: c, configOptions: newOpts[scriptID, configOptions]( scriptID(configID), configID, defaultOptionValues{}, ), } c.d.BuildEndListeners.Add(func(...any) bool { b.reset() return false }) idFinder := identity.NewFinder(identity.FinderConfig{}) c.d.OnChangeListeners.Add(func(ids ...identity.Identity) bool { for _, id := range ids { if r := idFinder.Contains(id, b.dependencyManager, 50); r > 0 { b.staleVersion.Add(1) return false } sp, ok := id.(identity.DependencyManagerScopedProvider) if !ok { continue } idms := sp.GetDependencyManagerForScopesAll() for _, g := range b.scriptGroups { g.forEachIdentity(func(id2 identity.Identity) bool { bt, ok := id2.(buildToucher) if !ok { return false } for _, id3 := range idms { // This handles the removal of the only source for a script group (e.g. all shortcodes in a contnt page). // Note the very shallow search. if r := idFinder.Contains(id2, id3, 0); r > 0 { bt.setTouched(b.buildCount) return false } } return false }) } } return false }) return b, nil } func (c *BatcherClient) Store() *maps.Cache[string, js.Batcher] { return c.batcherStore } func (c *BatcherClient) buildBatchGroup(ctx context.Context, t *batchGroupTemplateContext) (resource.Resource, string, error) { var buf bytes.Buffer if err := c.d.GetTemplateStore().ExecuteWithContext(ctx, c.runnerTemplate, &buf, t); err != nil { return nil, "", err } s := paths.AddLeadingSlash(t.keyPath + ".js") r, err := c.createClient.FromString(s, buf.String()) if err != nil { return nil, "", err } return r, s, nil } // Package holds a group of JavaScript resources. type Package struct { id string b *batcher groups map[string]resource.Resources } func (p *Package) Groups() map[string]resource.Resources { return p.groups } type batchGroupTemplateContext struct { keyPath string ID string Runners []scriptRunnerTemplateContext Scripts []scriptBatchTemplateContext } type batcher struct { mu sync.Mutex id string buildCount uint32 staleVersion atomic.Uint32 scriptGroups scriptGroups client *BatcherClient dependencyManager identity.Manager configOptions optionsGetSetter[scriptID, configOptions] // The last successfully built package. // If this is non-nil and not stale, we can reuse it (e.g. on server rebuilds) prevBuild *Package } // Build builds the batch if not already built or if it's stale. func (b *batcher) Build(ctx context.Context) (js.BatchPackage, error) { key := dynacache.CleanKey(b.id + ".js") p, err := b.client.bundlesStore.GetOrCreate(key, func() (js.BatchPackage, error) { return b.build(ctx) }) if err != nil { return nil, fmt.Errorf("failed to build JS batch %q: %w", b.id, err) } return p, nil } func (b *batcher) Config(ctx context.Context) js.OptionsSetter { return b.configOptions.Get(b.buildCount) } func (b *batcher) Group(ctx context.Context, id string) js.BatcherGroup { if err := ValidateBatchID(id, false); err != nil { panic(err) } b.mu.Lock() defer b.mu.Unlock() group, found := b.scriptGroups[id] if !found { idm := b.client.d.Conf.NewIdentityManager("jsbatch_" + id) b.dependencyManager.AddIdentity(idm) group = &scriptGroup{ id: id, b: b, isBuiltOrTouched: newIsBuiltOrTouched(), dependencyManager: idm, scriptsOptions: make(optionsMap[scriptID, scriptOptions]), instancesOptions: make(optionsMap[instanceID, paramsOptions]), runnersOptions: make(optionsMap[scriptID, scriptOptions]), } b.scriptGroups[id] = group } group.setBuilt(b.buildCount) return group } func (b *batcher) isStale() bool { if b.staleVersion.Load() > 0 { return true } if b.removeNotSet() { return true } if b.configOptions.isStale() { return true } for _, v := range b.scriptGroups { if v.isStale() { return true } } return false } func (b *batcher) build(ctx context.Context) (js.BatchPackage, error) { b.mu.Lock() defer b.mu.Unlock() defer func() { b.staleVersion.Store(0) b.buildCount++ }() if b.prevBuild != nil { if !b.isStale() { return b.prevBuild, nil } } p, err := b.doBuild(ctx) if err != nil { return nil, err } b.prevBuild = p return p, nil } func (b *batcher) doBuild(ctx context.Context) (*Package, error) { type importContext struct { name string resourceGetter resource.ResourceGetter scriptOptions scriptOptions dm identity.Manager } state := struct { importResource *maps.Cache[string, resource.Resource] resultResource *maps.Cache[string, resource.Resource] importerImportContext *maps.Cache[string, importContext] pathGroup *maps.Cache[string, string] }{ importResource: maps.NewCache[string, resource.Resource](), resultResource: maps.NewCache[string, resource.Resource](), importerImportContext: maps.NewCache[string, importContext](), pathGroup: maps.NewCache[string, string](), } multihostBasePaths := b.client.d.ResourceSpec.MultihostTargetBasePaths // Entry points passed to ESBuid. var entryPoints []string addResource := func(group, pth string, r resource.Resource, isResult bool) { state.pathGroup.Set(paths.TrimExt(pth), group) state.importResource.Set(pth, r) if isResult { state.resultResource.Set(pth, r) } entryPoints = append(entryPoints, pth) } for _, g := range b.scriptGroups.Sorted() { keyPath := g.id t := &batchGroupTemplateContext{ keyPath: keyPath, ID: g.id, } instances := g.instancesOptions.ByKey() for _, vv := range g.scriptsOptions.ByKey() { keyPath := keyPath + "_" + vv.Key().String() opts := vv.Compiled() impPath := path.Join(PrefixHugoVirtual, opts.Dir(), keyPath+opts.Resource.MediaType().FirstSuffix.FullSuffix) impCtx := opts.ImportContext state.importerImportContext.Set(impPath, importContext{ name: keyPath, resourceGetter: impCtx, scriptOptions: opts, dm: g.dependencyManager, }) bt := scriptBatchTemplateContext{ opts: vv, Import: impPath, Instances: []scriptInstanceBatchTemplateContext{}, } state.importResource.Set(bt.Import, vv.Compiled().Resource) predicate := func(k instanceID) bool { return k.scriptID == vv.Key() } for _, vvv := range instances.Filter(predicate) { bt.Instances = append(bt.Instances, scriptInstanceBatchTemplateContext{opts: vvv}) } t.Scripts = append(t.Scripts, bt) } for _, vv := range g.runnersOptions.ByKey() { runnerKeyPath := keyPath + "_" + vv.Key().String() runnerImpPath := paths.AddLeadingSlash(runnerKeyPath + "_runner" + vv.Compiled().Resource.MediaType().FirstSuffix.FullSuffix) t.Runners = append(t.Runners, scriptRunnerTemplateContext{opts: vv, Import: runnerImpPath}) addResource(g.id, runnerImpPath, vv.Compiled().Resource, false) } r, s, err := b.client.buildBatchGroup(ctx, t) if err != nil { return nil, fmt.Errorf("failed to build JS batch: %w", err) } state.importerImportContext.Set(s, importContext{ name: s, resourceGetter: nil, dm: g.dependencyManager, }) addResource(g.id, s, r, true) } mediaTypes := b.client.d.ResourceSpec.MediaTypes() externalOptions := b.configOptions.Compiled().Options if externalOptions.Format == "" { externalOptions.Format = "esm" } if externalOptions.Format != "esm" { return nil, fmt.Errorf("only esm format is currently supported") } jsOpts := Options{ ExternalOptions: externalOptions, InternalOptions: InternalOptions{ DependencyManager: b.dependencyManager, Splitting: true, ImportOnResolveFunc: func(imp string, args api.OnResolveArgs) string { var importContextPath string if args.Kind == api.ResolveEntryPoint { importContextPath = args.Path } else { importContextPath = args.Importer } importContext, importContextFound := state.importerImportContext.Get(importContextPath) // We want to track the dependencies closest to where they're used. dm := b.dependencyManager if importContextFound { dm = importContext.dm } if r, found := state.importResource.Get(imp); found { dm.AddIdentity(identity.FirstIdentity(r)) return imp } if importContext.resourceGetter != nil { resolved := ResolveResource(imp, importContext.resourceGetter) if resolved != nil { resolvePath := resources.InternalResourceTargetPath(resolved) dm.AddIdentity(identity.FirstIdentity(resolved)) imp := PrefixHugoVirtual + resolvePath state.importResource.Set(imp, resolved) state.importerImportContext.Set(imp, importContext) return imp } } return "" }, ImportOnLoadFunc: func(args api.OnLoadArgs) string { imp := args.Path if r, found := state.importResource.Get(imp); found { content, err := r.(resource.ContentProvider).Content(ctx) if err != nil { panic(err) } return cast.ToString(content) } return "" }, ImportParamsOnLoadFunc: func(args api.OnLoadArgs) json.RawMessage { if importContext, found := state.importerImportContext.Get(args.Path); found { if !importContext.scriptOptions.IsZero() { return importContext.scriptOptions.Params } } return nil }, ErrorMessageResolveFunc: func(args api.Message) *ErrorMessageResolved { if loc := args.Location; loc != nil { path := strings.TrimPrefix(loc.File, NsHugoImportResolveFunc+":") if r, found := state.importResource.Get(path); found { sourcePath := resources.InternalResourceSourcePathBestEffort(r) var contentr hugio.ReadSeekCloser if cp, ok := r.(hugio.ReadSeekCloserProvider); ok { contentr, _ = cp.ReadSeekCloser() } return &ErrorMessageResolved{ Content: contentr, Path: sourcePath, Message: args.Text, } } } return nil }, ResolveSourceMapSource: func(s string) string { if r, found := state.importResource.Get(s); found { if ss := resources.InternalResourceSourcePath(r); ss != "" { return ss } return PrefixHugoMemory + s } return "" }, EntryPoints: entryPoints, }, } result, err := b.client.buildClient.Build(jsOpts) if err != nil { return nil, fmt.Errorf("failed to build JS bundle: %w", err) } groups := make(map[string]resource.Resources) createAndAddResource := func(targetPath, group string, o api.OutputFile, mt media.Type) error { var sourceFilename string if r, found := state.importResource.Get(targetPath); found { sourceFilename = resources.InternalResourceSourcePathBestEffort(r) } targetPath = path.Join(b.id, targetPath) rd := resources.ResourceSourceDescriptor{ LazyPublish: true, OpenReadSeekCloser: func() (hugio.ReadSeekCloser, error) { return hugio.NewReadSeekerNoOpCloserFromBytes(o.Contents), nil }, MediaType: mt, TargetPath: targetPath, SourceFilenameOrPath: sourceFilename, } r, err := b.client.d.ResourceSpec.NewResource(rd) if err != nil { return err } groups[group] = append(groups[group], r) return nil } outDir := b.client.d.AbsPublishDir createAndAddResources := func(o api.OutputFile) (bool, error) { p := paths.ToSlashPreserveLeading(strings.TrimPrefix(o.Path, outDir)) ext := path.Ext(p) mt, _, found := mediaTypes.GetBySuffix(ext) if !found { return false, nil } group, found := state.pathGroup.Get(paths.TrimExt(p)) if !found { return false, nil } if err := createAndAddResource(p, group, o, mt); err != nil { return false, err } return true, nil } for _, o := range result.OutputFiles { handled, err := createAndAddResources(o) if err != nil { return nil, err } if !handled { // Copy to destination. // In a multihost setup, we will have multiple targets. var targetFilenames []string if len(multihostBasePaths) > 0 { for _, base := range multihostBasePaths { p := strings.TrimPrefix(o.Path, outDir) targetFilename := filepath.Join(base, b.id, p) targetFilenames = append(targetFilenames, targetFilename) } } else { p := strings.TrimPrefix(o.Path, outDir) targetFilename := filepath.Join(b.id, p) targetFilenames = append(targetFilenames, targetFilename) } fs := b.client.d.BaseFs.PublishFs if err := func() error { fw, err := helpers.OpenFilesForWriting(fs, targetFilenames...) if err != nil { return err } defer fw.Close() fr := bytes.NewReader(o.Contents) _, err = io.Copy(fw, fr) return err }(); err != nil { return nil, fmt.Errorf("failed to copy to %q: %w", targetFilenames, err) } } } p := &Package{ id: path.Join(NsBatch, b.id), b: b, groups: groups, } return p, nil } func (b *batcher) removeNotSet() bool { // We already have the lock. var removed bool currentBuildID := b.buildCount for k, v := range b.scriptGroups { if !v.isBuilt(currentBuildID) && v.isTouched(currentBuildID) { // Remove entire group. removed = true delete(b.scriptGroups, k) continue } if v.removeTouchedButNotSet() { removed = true } if v.removeNotSet() { removed = true } } return removed } func (b *batcher) reset() { b.mu.Lock() defer b.mu.Unlock() b.configOptions.Reset() for _, v := range b.scriptGroups { v.Reset() } } type buildIDs map[uint32]bool func (b buildIDs) Has(buildID uint32) bool { return b[buildID] } func (b buildIDs) Set(buildID uint32) { b[buildID] = true } type buildToucher interface { setTouched(buildID uint32) } type configOptions struct { Options ExternalOptions } func (s configOptions) isStaleCompiled(prev configOptions) bool { return false } func (s configOptions) compileOptions(m map[string]any, defaults defaultOptionValues) (configOptions, error) { config, err := DecodeExternalOptions(m) if err != nil { return configOptions{}, err } return configOptions{ Options: config, }, nil } type defaultOptionValues struct { defaultExport string } type instanceID struct { scriptID scriptID instanceID string } func (i instanceID) String() string { return i.scriptID.String() + "_" + i.instanceID } type isBuiltOrTouched struct { built buildIDs touched buildIDs } func (i isBuiltOrTouched) setBuilt(id uint32) { i.built.Set(id) } func (i isBuiltOrTouched) isBuilt(id uint32) bool { return i.built.Has(id) } func (i isBuiltOrTouched) setTouched(id uint32) { i.touched.Set(id) } func (i isBuiltOrTouched) isTouched(id uint32) bool { return i.touched.Has(id) } type isBuiltOrTouchedProvider interface { isBuilt(uint32) bool isTouched(uint32) bool } type key interface { comparable fmt.Stringer } type optionsCompiler[C any] interface { isStaleCompiled(C) bool compileOptions(map[string]any, defaultOptionValues) (C, error) } type optionsGetSetter[K, C any] interface { isBuiltOrTouchedProvider identity.IdentityProvider // resource.StaleInfo Compiled() C Key() K Reset() Get(uint32) js.OptionsSetter isStale() bool currPrev() (map[string]any, map[string]any) } type optionsGetSetters[K key, C any] []optionsGetSetter[K, C] type optionsMap[K key, C any] map[K]optionsGetSetter[K, C] type opts[K any, C optionsCompiler[C]] struct { key K h *optsHolder[C] once lazy.OnceMore } type optsHolder[C optionsCompiler[C]] struct { optionsID string defaults defaultOptionValues // Keep track of one generation so we can detect changes. // Note that most of this tracking is performed on the options/map level. compiled C compiledPrev C compileErr error resetCounter uint32 optsSetCounter uint32 optsCurr map[string]any optsPrev map[string]any isBuiltOrTouched } type paramsOptions struct { Params json.RawMessage } func (s paramsOptions) isStaleCompiled(prev paramsOptions) bool { return false } func (s paramsOptions) compileOptions(m map[string]any, defaults defaultOptionValues) (paramsOptions, error) { v := struct { Params map[string]any }{} if err := mapstructure.WeakDecode(m, &v); err != nil { return paramsOptions{}, err } paramsJSON, err := json.Marshal(v.Params) if err != nil { return paramsOptions{}, err } return paramsOptions{ Params: paramsJSON, }, nil } type scriptBatchTemplateContext struct { opts optionsGetSetter[scriptID, scriptOptions] Import string Instances []scriptInstanceBatchTemplateContext } func (s *scriptBatchTemplateContext) Export() string { return s.opts.Compiled().Export } func (c scriptBatchTemplateContext) MarshalJSON() (b []byte, err error) { return json.Marshal(&struct { ID string `json:"id"` Instances []scriptInstanceBatchTemplateContext `json:"instances"` }{ ID: c.opts.Key().String(), Instances: c.Instances, }) } func (b scriptBatchTemplateContext) RunnerJSON(i int) string { script := fmt.Sprintf("Script%d", i) v := struct { ID string `json:"id"` // Read-only live JavaScript binding. Binding string `json:"binding"` Instances []scriptInstanceBatchTemplateContext `json:"instances"` }{ b.opts.Key().String(), script, b.Instances, } bb, err := json.Marshal(v) if err != nil { panic(err) } s := string(bb) // Remove the quotes to make it a valid JS object. s = strings.ReplaceAll(s, fmt.Sprintf("%q", script), script) return s } type scriptGroup struct { mu sync.Mutex id string b *batcher isBuiltOrTouched dependencyManager identity.Manager scriptsOptions optionsMap[scriptID, scriptOptions] instancesOptions optionsMap[instanceID, paramsOptions] runnersOptions optionsMap[scriptID, scriptOptions] } // For internal use only. func (b *scriptGroup) GetDependencyManager() identity.Manager { return b.dependencyManager } // For internal use only. func (b *scriptGroup) IdentifierBase() string { return b.id } func (s *scriptGroup) Instance(sid, id string) js.OptionsSetter { if err := ValidateBatchID(sid, false); err != nil { panic(err) } if err := ValidateBatchID(id, false); err != nil { panic(err) } s.mu.Lock() defer s.mu.Unlock() iid := instanceID{scriptID: scriptID(sid), instanceID: id} if v, found := s.instancesOptions[iid]; found { return v.Get(s.b.buildCount) } fullID := "instance_" + s.key() + "_" + iid.String() s.instancesOptions[iid] = newOpts[instanceID, paramsOptions]( iid, fullID, defaultOptionValues{}, ) return s.instancesOptions[iid].Get(s.b.buildCount) } func (g *scriptGroup) Reset() { for _, v := range g.scriptsOptions { v.Reset() } for _, v := range g.instancesOptions { v.Reset() } for _, v := range g.runnersOptions { v.Reset() } } func (s *scriptGroup) Runner(id string) js.OptionsSetter { if err := ValidateBatchID(id, false); err != nil { panic(err) } s.mu.Lock() defer s.mu.Unlock() sid := scriptID(id) if v, found := s.runnersOptions[sid]; found { return v.Get(s.b.buildCount) } runnerIdentity := "runner_" + s.key() + "_" + id // A typical signature for a runner would be: // export default function Run(scripts) {} // The user can override the default export in the templates. s.runnersOptions[sid] = newOpts[scriptID, scriptOptions]( sid, runnerIdentity, defaultOptionValues{ defaultExport: "default", }, ) return s.runnersOptions[sid].Get(s.b.buildCount) } func (s *scriptGroup) Script(id string) js.OptionsSetter { if err := ValidateBatchID(id, false); err != nil { panic(err) } s.mu.Lock() defer s.mu.Unlock() sid := scriptID(id) if v, found := s.scriptsOptions[sid]; found { return v.Get(s.b.buildCount) } scriptIdentity := "script_" + s.key() + "_" + id s.scriptsOptions[sid] = newOpts[scriptID, scriptOptions]( sid, scriptIdentity, defaultOptionValues{ defaultExport: "*", }, ) return s.scriptsOptions[sid].Get(s.b.buildCount) } func (s *scriptGroup) isStale() bool { for _, v := range s.scriptsOptions { if v.isStale() { return true } } for _, v := range s.instancesOptions { if v.isStale() { return true } } for _, v := range s.runnersOptions { if v.isStale() { return true } } return false } func (v *scriptGroup) forEachIdentity( f func(id identity.Identity) bool, ) bool { if f(v) { return true } for _, vv := range v.instancesOptions { if f(vv.GetIdentity()) { return true } } for _, vv := range v.scriptsOptions { if f(vv.GetIdentity()) { return true } } for _, vv := range v.runnersOptions { if f(vv.GetIdentity()) { return true } } return false } func (s *scriptGroup) key() string { return s.b.id + "_" + s.id } func (g *scriptGroup) removeNotSet() bool { currentBuildID := g.b.buildCount if !g.isBuilt(currentBuildID) { // This group was never accessed in this build. return false } var removed bool if g.instancesOptions.isBuilt(currentBuildID) { // A new instance has been set in this group for this build. // Remove any instance that has not been set in this build. for k, v := range g.instancesOptions { if v.isBuilt(currentBuildID) { continue } delete(g.instancesOptions, k) removed = true } } if g.runnersOptions.isBuilt(currentBuildID) { // A new runner has been set in this group for this build. // Remove any runner that has not been set in this build. for k, v := range g.runnersOptions { if v.isBuilt(currentBuildID) { continue } delete(g.runnersOptions, k) removed = true } } if g.scriptsOptions.isBuilt(currentBuildID) { // A new script has been set in this group for this build. // Remove any script that has not been set in this build. for k, v := range g.scriptsOptions { if v.isBuilt(currentBuildID) { continue } delete(g.scriptsOptions, k) // Also remove any instance with this ID. for kk := range g.instancesOptions { if kk.scriptID == k { delete(g.instancesOptions, kk) } } removed = true } } return removed } func (g *scriptGroup) removeTouchedButNotSet() bool { currentBuildID := g.b.buildCount var removed bool for k, v := range g.instancesOptions { if v.isBuilt(currentBuildID) { continue } if v.isTouched(currentBuildID) { delete(g.instancesOptions, k) removed = true } } for k, v := range g.runnersOptions { if v.isBuilt(currentBuildID) { continue } if v.isTouched(currentBuildID) { delete(g.runnersOptions, k) removed = true } } for k, v := range g.scriptsOptions { if v.isBuilt(currentBuildID) { continue } if v.isTouched(currentBuildID) { delete(g.scriptsOptions, k) removed = true // Also remove any instance with this ID. for kk := range g.instancesOptions { if kk.scriptID == k { delete(g.instancesOptions, kk) } } } } return removed } type scriptGroups map[string]*scriptGroup func (s scriptGroups) Sorted() []*scriptGroup { var a []*scriptGroup for _, v := range s { a = append(a, v) } sort.Slice(a, func(i, j int) bool { return a[i].id < a[j].id }) return a } type scriptID string func (s scriptID) String() string { return string(s) } type scriptInstanceBatchTemplateContext struct { opts optionsGetSetter[instanceID, paramsOptions] } func (c scriptInstanceBatchTemplateContext) ID() string { return c.opts.Key().instanceID } func (c scriptInstanceBatchTemplateContext) MarshalJSON() (b []byte, err error) { return json.Marshal(&struct { ID string `json:"id"` Params json.RawMessage `json:"params"` }{ ID: c.opts.Key().instanceID, Params: c.opts.Compiled().Params, }) } type scriptOptions struct { // The script to build. Resource resource.Resource // The import context to use. // Note that we will always fall back to the resource's own import context. ImportContext resource.ResourceGetter // The export name to use for this script's group's runners (if any). // If not set, the default export will be used. Export string // Params marshaled to JSON. Params json.RawMessage } func (o *scriptOptions) Dir() string { return path.Dir(resources.InternalResourceTargetPath(o.Resource)) } func (s scriptOptions) IsZero() bool { return s.Resource == nil } func (s scriptOptions) isStaleCompiled(prev scriptOptions) bool { if prev.IsZero() { return false } // All but the ImportContext are checked at the options/map level. i1nil, i2nil := prev.ImportContext == nil, s.ImportContext == nil if i1nil && i2nil { return false } if i1nil || i2nil { return true } // On its own this check would have too many false positives, but combined with the other checks it should be fine. // We cannot do equality checking here. if !prev.ImportContext.(resource.IsProbablySameResourceGetter).IsProbablySameResourceGetter(s.ImportContext) { return true } return false } func (s scriptOptions) compileOptions(m map[string]any, defaults defaultOptionValues) (scriptOptions, error) { v := struct { Resource resource.Resource ImportContext any Export string Params map[string]any }{} if err := mapstructure.WeakDecode(m, &v); err != nil { panic(err) } var paramsJSON []byte if v.Params != nil { var err error paramsJSON, err = json.Marshal(v.Params) if err != nil { panic(err) } } if v.Export == "" { v.Export = defaults.defaultExport } compiled := scriptOptions{ Resource: v.Resource, Export: v.Export, ImportContext: resource.NewCachedResourceGetter(v.ImportContext), Params: paramsJSON, } if compiled.Resource == nil { return scriptOptions{}, fmt.Errorf("resource not set") } return compiled, nil } type scriptRunnerTemplateContext struct { opts optionsGetSetter[scriptID, scriptOptions] Import string } func (s *scriptRunnerTemplateContext) Export() string { return s.opts.Compiled().Export } func (c scriptRunnerTemplateContext) MarshalJSON() (b []byte, err error) { return json.Marshal(&struct { ID string `json:"id"` }{ ID: c.opts.Key().String(), }) } func (o optionsMap[K, C]) isBuilt(id uint32) bool { for _, v := range o { if v.isBuilt(id) { return true } } return false } func (o *opts[K, C]) isBuilt(id uint32) bool { return o.h.isBuilt(id) } func (o *opts[K, C]) isStale() bool { if o.h.isStaleOpts() { return true } if o.h.compiled.isStaleCompiled(o.h.compiledPrev) { return true } return false } func (o *optsHolder[C]) isStaleOpts() bool { if o.optsSetCounter == 1 && o.resetCounter > 0 { return false } isStale := func() bool { if len(o.optsCurr) != len(o.optsPrev) { return true } for k, v := range o.optsPrev { vv, found := o.optsCurr[k] if !found { return true } if strings.EqualFold(k, propsKeyImportContext) { // This is checked later. } else if si, ok := vv.(resource.StaleInfo); ok { if si.StaleVersion() > 0 { return true } } else { if !reflect.DeepEqual(v, vv) { return true } } } return false }() return isStale } func (o *opts[K, C]) isTouched(id uint32) bool { return o.h.isTouched(id) } func (o *optsHolder[C]) checkCompileErr() { if o.compileErr != nil { panic(o.compileErr) } } func (o *opts[K, C]) currPrev() (map[string]any, map[string]any) { return o.h.optsCurr, o.h.optsPrev } func init() { // We don't want any dependencies/change tracking on the top level Package, // we want finer grained control via Package.Group. var p any = &Package{} if _, ok := p.(identity.Identity); ok { panic("esbuid.Package should not implement identity.Identity") } if _, ok := p.(identity.DependencyManagerProvider); ok { panic("esbuid.Package should not implement identity.DependencyManagerProvider") } } gohugoio-hugo-6abdaca/internal/js/esbuild/batch_integration_test.go000066400000000000000000000475451507671574500261060ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package js provides functions for building JavaScript resources package esbuild_test import ( "os" "path/filepath" "strings" "testing" qt "github.com/frankban/quicktest" "github.com/bep/logg" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/internal/js/esbuild" ) // Used to test misc. error situations etc. const jsBatchFilesTemplate = ` -- hugo.toml -- disableKinds = ["taxonomy", "term", "section"] disableLiveReload = true -- assets/js/styles.css -- body { background-color: red; } -- assets/js/main.js -- import './styles.css'; import * as params from '@params'; import * as foo from 'mylib'; console.log("Hello, Main!"); console.log("params.p1", params.p1); export default function Main() {}; -- assets/js/runner.js -- console.log("Hello, Runner!"); -- node_modules/mylib/index.js -- console.log("Hello, My Lib!"); -- layouts/shortcodes/hdx.html -- {{ $path := .Get "r" }} {{ $r := or (.Page.Resources.Get $path) (resources.Get $path) }} {{ $batch := (js.Batch "mybatch") }} {{ $scriptID := $path | anchorize }} {{ $instanceID := .Ordinal | string }} {{ $group := .Page.RelPermalink | anchorize }} {{ $params := .Params | default dict }} {{ $export := .Get "export" | default "default" }} {{ with $batch.Group $group }} {{ with .Runner "create-elements" }} {{ .SetOptions (dict "resource" (resources.Get "js/runner.js")) }} {{ end }} {{ with .Script $scriptID }} {{ .SetOptions (dict "resource" $r "export" $export "importContext" (slice $.Page) ) }} {{ end }} {{ with .Instance $scriptID $instanceID }} {{ .SetOptions (dict "params" $params) }} {{ end }} {{ end }} hdx-instance: {{ $scriptID }}: {{ $instanceID }}| -- layouts/_default/baseof.html -- Base. {{ $batch := (js.Batch "mybatch") }} {{ with $batch.Config }} {{ .SetOptions (dict "params" (dict "id" "config") "sourceMap" "" ) }} {{ end }} {{ with (templates.Defer (dict "key" "global")) }} Defer: {{ $batch := (js.Batch "mybatch") }} {{ range $k, $v := $batch.Build.Groups }} {{ range $kk, $vv := . -}} {{ $k }}: {{ .RelPermalink }} {{ end }} {{ end -}} {{ end }} {{ block "main" . }}Main{{ end }} End. -- layouts/_default/single.html -- {{ define "main" }} ==> Single Template Content: {{ .Content }}$ {{ $batch := (js.Batch "mybatch") }} {{ with $batch.Group "mygroup" }} {{ with .Runner "run" }} {{ .SetOptions (dict "resource" (resources.Get "js/runner.js")) }} {{ end }} {{ with .Script "main" }} {{ .SetOptions (dict "resource" (resources.Get "js/main.js") "params" (dict "p1" "param-p1-main" )) }} {{ end }} {{ with .Instance "main" "i1" }} {{ .SetOptions (dict "params" (dict "title" "Instance 1")) }} {{ end }} {{ end }} {{ end }} -- layouts/index.html -- {{ define "main" }} Home. {{ end }} -- content/p1/index.md -- --- title: "P1" --- Some content. {{< hdx r="p1script.js" myparam="p1-param-1" >}} {{< hdx r="p1script.js" myparam="p1-param-2" >}} -- content/p1/p1script.js -- console.log("P1 Script"); ` // Just to verify that the above file setup works. func TestBatchTemplateOKBuild(t *testing.T) { b := hugolib.Test(t, jsBatchFilesTemplate, hugolib.TestOptWithOSFs()) b.AssertPublishDir("mybatch/mygroup.js", "mybatch/mygroup.css") } func TestBatchRemoveAllInGroup(t *testing.T) { files := jsBatchFilesTemplate b := hugolib.TestRunning(t, files, hugolib.TestOptWithOSFs()) b.AssertFileContent("public/p1/index.html", "p1: /mybatch/p1.js") b.EditFiles("content/p1/index.md", ` --- title: "P1" --- Empty. `) b.Build() b.AssertFileContent("public/p1/index.html", "! p1: /mybatch/p1.js") // Add one script back. b.EditFiles("content/p1/index.md", ` --- title: "P1" --- {{< hdx r="p1script.js" myparam="p1-param-1-new" >}} `) b.Build() b.AssertFileContent("public/mybatch/p1.js", "p1-param-1-new", "p1script.js") } func TestBatchEditInstance(t *testing.T) { files := jsBatchFilesTemplate b := hugolib.TestRunning(t, files, hugolib.TestOptWithOSFs()) b.AssertFileContent("public/mybatch/mygroup.js", "Instance 1") b.EditFileReplaceAll("layouts/_default/single.html", "Instance 1", "Instance 1 Edit").Build() b.AssertFileContent("public/mybatch/mygroup.js", "Instance 1 Edit") } func TestBatchEditScriptParam(t *testing.T) { files := jsBatchFilesTemplate b := hugolib.TestRunning(t, files, hugolib.TestOptWithOSFs()) b.AssertFileContent("public/mybatch/mygroup.js", "param-p1-main") b.EditFileReplaceAll("layouts/_default/single.html", "param-p1-main", "param-p1-main-edited").Build() b.AssertFileContent("public/mybatch/mygroup.js", "param-p1-main-edited") } func TestBatchMultiHost(t *testing.T) { files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term", "section"] [languages] [languages.en] weight = 1 baseURL = "https://example.com/en" [languages.fr] weight = 2 baseURL = "https://example.com/fr" disableLiveReload = true -- assets/js/styles.css -- body { background-color: red; } -- assets/js/main.js -- import * as foo from 'mylib'; console.log("Hello, Main!"); -- assets/js/runner.js -- console.log("Hello, Runner!"); -- node_modules/mylib/index.js -- console.log("Hello, My Lib!"); -- layouts/index.html -- Home. {{ $batch := (js.Batch "mybatch") }} {{ with $batch.Config }} {{ .SetOptions (dict "params" (dict "id" "config") "sourceMap" "" ) }} {{ end }} {{ with (templates.Defer (dict "key" "global")) }} Defer: {{ $batch := (js.Batch "mybatch") }} {{ range $k, $v := $batch.Build.Groups }} {{ range $kk, $vv := . -}} {{ $k }}: {{ .RelPermalink }} {{ end }} {{ end -}} {{ end }} {{ $batch := (js.Batch "mybatch") }} {{ with $batch.Group "mygroup" }} {{ with .Runner "run" }} {{ .SetOptions (dict "resource" (resources.Get "js/runner.js")) }} {{ end }} {{ with .Script "main" }} {{ .SetOptions (dict "resource" (resources.Get "js/main.js") "params" (dict "p1" "param-p1-main" )) }} {{ end }} {{ with .Instance "main" "i1" }} {{ .SetOptions (dict "params" (dict "title" "Instance 1")) }} {{ end }} {{ end }} ` b := hugolib.Test(t, files, hugolib.TestOptWithOSFs()) b.AssertPublishDir( "en/mybatch/chunk-TOZKWCDE.js", "en/mybatch/mygroup.js ", "fr/mybatch/mygroup.js", "fr/mybatch/chunk-TOZKWCDE.js") } func TestBatchRenameBundledScript(t *testing.T) { files := jsBatchFilesTemplate b := hugolib.TestRunning(t, files, hugolib.TestOptWithOSFs()) b.AssertFileContent("public/mybatch/p1.js", "P1 Script") b.RenameFile("content/p1/p1script.js", "content/p1/p1script2.js") _, err := b.BuildE() b.Assert(err, qt.IsNotNil) b.Assert(err.Error(), qt.Contains, "resource not set") // Rename it back. b.RenameFile("content/p1/p1script2.js", "content/p1/p1script.js") b.Build() } func TestBatchErrorScriptResourceNotSet(t *testing.T) { files := strings.Replace(jsBatchFilesTemplate, `(resources.Get "js/main.js")`, `(resources.Get "js/doesnotexist.js")`, 1) b, err := hugolib.TestE(t, files, hugolib.TestOptWithOSFs()) b.Assert(err, qt.IsNotNil) b.Assert(err.Error(), qt.Contains, `error calling SetOptions: resource not set`) } func TestBatchSlashInBatchID(t *testing.T) { files := strings.ReplaceAll(jsBatchFilesTemplate, `"mybatch"`, `"my/batch"`) b, err := hugolib.TestE(t, files, hugolib.TestOptWithOSFs()) b.Assert(err, qt.IsNil) b.AssertPublishDir("my/batch/mygroup.js") } func TestBatchSourceMaps(t *testing.T) { filesTemplate := ` -- hugo.toml -- disableKinds = ["taxonomy", "term", "section"] disableLiveReload = true -- assets/js/styles.css -- body { background-color: red; } -- assets/js/main.js -- import * as foo from 'mylib'; console.log("Hello, Main!"); -- assets/js/runner.js -- console.log("Hello, Runner!"); -- node_modules/mylib/index.js -- console.log("Hello, My Lib!"); -- layouts/shortcodes/hdx.html -- {{ $path := .Get "r" }} {{ $r := or (.Page.Resources.Get $path) (resources.Get $path) }} {{ $batch := (js.Batch "mybatch") }} {{ $scriptID := $path | anchorize }} {{ $instanceID := .Ordinal | string }} {{ $group := .Page.RelPermalink | anchorize }} {{ $params := .Params | default dict }} {{ $export := .Get "export" | default "default" }} {{ with $batch.Group $group }} {{ with .Runner "create-elements" }} {{ .SetOptions (dict "resource" (resources.Get "js/runner.js")) }} {{ end }} {{ with .Script $scriptID }} {{ .SetOptions (dict "resource" $r "export" $export "importContext" (slice $.Page) ) }} {{ end }} {{ with .Instance $scriptID $instanceID }} {{ .SetOptions (dict "params" $params) }} {{ end }} {{ end }} hdx-instance: {{ $scriptID }}: {{ $instanceID }}| -- layouts/_default/baseof.html -- Base. {{ $batch := (js.Batch "mybatch") }} {{ with $batch.Config }} {{ .SetOptions (dict "params" (dict "id" "config") "sourceMap" "" ) }} {{ end }} {{ with (templates.Defer (dict "key" "global")) }} Defer: {{ $batch := (js.Batch "mybatch") }} {{ range $k, $v := $batch.Build.Groups }} {{ range $kk, $vv := . -}} {{ $k }}: {{ .RelPermalink }} {{ end }} {{ end -}} {{ end }} {{ block "main" . }}Main{{ end }} End. -- layouts/_default/single.html -- {{ define "main" }} ==> Single Template Content: {{ .Content }}$ {{ $batch := (js.Batch "mybatch") }} {{ with $batch.Group "mygroup" }} {{ with .Runner "run" }} {{ .SetOptions (dict "resource" (resources.Get "js/runner.js")) }} {{ end }} {{ with .Script "main" }} {{ .SetOptions (dict "resource" (resources.Get "js/main.js") "params" (dict "p1" "param-p1-main" )) }} {{ end }} {{ with .Instance "main" "i1" }} {{ .SetOptions (dict "params" (dict "title" "Instance 1")) }} {{ end }} {{ end }} {{ end }} -- layouts/index.html -- {{ define "main" }} Home. {{ end }} -- content/p1/index.md -- --- title: "P1" --- Some content. {{< hdx r="p1script.js" myparam="p1-param-1" >}} {{< hdx r="p1script.js" myparam="p1-param-2" >}} -- content/p1/p1script.js -- import * as foo from 'mylib'; console.lg("Foo", foo); console.log("P1 Script"); export default function P1Script() {}; ` files := strings.Replace(filesTemplate, `"sourceMap" ""`, `"sourceMap" "linked"`, 1) b := hugolib.TestRunning(t, files, hugolib.TestOptWithOSFs()) b.AssertFileContent("public/mybatch/mygroup.js.map", "main.js", "! ns-hugo") b.AssertFileContent("public/mybatch/mygroup.js", "sourceMappingURL=mygroup.js.map") b.AssertFileContent("public/mybatch/p1.js", "sourceMappingURL=p1.js.map") b.AssertFileContent("public/mybatch/mygroup_run_runner.js", "sourceMappingURL=mygroup_run_runner.js.map") b.AssertFileContent("public/mybatch/chunk-UQKPPNA6.js", "sourceMappingURL=chunk-UQKPPNA6.js.map") checkMap := func(p string, expectLen int) { s := b.FileContent(p) sources := esbuild.SourcesFromSourceMap(s) b.Assert(sources, qt.HasLen, expectLen) // Check that all source files exist. for _, src := range sources { filename, ok := paths.UrlStringToFilename(src) b.Assert(ok, qt.IsTrue) _, err := os.Stat(filename) b.Assert(err, qt.IsNil) } } checkMap("public/mybatch/mygroup.js.map", 1) checkMap("public/mybatch/p1.js.map", 1) checkMap("public/mybatch/mygroup_run_runner.js.map", 0) checkMap("public/mybatch/chunk-UQKPPNA6.js.map", 1) } func TestBatchErrorRunnerResourceNotSet(t *testing.T) { files := strings.Replace(jsBatchFilesTemplate, `(resources.Get "js/runner.js")`, `(resources.Get "js/doesnotexist.js")`, 1) b, err := hugolib.TestE(t, files, hugolib.TestOptWithOSFs()) b.Assert(err, qt.IsNotNil) b.Assert(err.Error(), qt.Contains, `resource not set`) } func TestBatchErrorScriptResourceInAssetsSyntaxError(t *testing.T) { // Introduce JS syntax error in assets/js/main.js files := strings.Replace(jsBatchFilesTemplate, `console.log("Hello, Main!");`, `console.log("Hello, Main!"`, 1) b, err := hugolib.TestE(t, files, hugolib.TestOptWithOSFs()) b.Assert(err, qt.IsNotNil) b.Assert(err.Error(), qt.Contains, filepath.FromSlash(`assets/js/main.js:5:0": Expected ")" but found "console"`)) } func TestBatchErrorScriptResourceInBundleSyntaxError(t *testing.T) { // Introduce JS syntax error in content/p1/p1script.js files := strings.Replace(jsBatchFilesTemplate, `console.log("P1 Script");`, `console.log("P1 Script"`, 1) b, err := hugolib.TestE(t, files, hugolib.TestOptWithOSFs()) b.Assert(err, qt.IsNotNil) b.Assert(err.Error(), qt.Contains, filepath.FromSlash(`/content/p1/p1script.js:3:0": Expected ")" but found end of file`)) } func TestBatch(t *testing.T) { files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term"] disableLiveReload = true baseURL = "https://example.com" -- package.json -- { "devDependencies": { "react": "^18.3.1", "react-dom": "^18.3.1" } } -- assets/js/shims/react.js -- -- assets/js/shims/react-dom.js -- module.exports = window.ReactDOM; module.exports = window.React; -- content/mybundle/index.md -- --- title: "My Bundle" --- -- content/mybundle/mybundlestyles.css -- @import './foo.css'; @import './bar.css'; @import './otherbundlestyles.css'; .mybundlestyles { background-color: blue; } -- content/mybundle/bundlereact.jsx -- import * as React from "react"; import './foo.css'; import './mybundlestyles.css'; window.React1 = React; let text = 'Click me, too!' export default function MyBundleButton() { return ( ) } -- assets/js/reactrunner.js -- import * as ReactDOM from 'react-dom/client'; import * as React from 'react'; export default function Run(group) { for (const module of group.scripts) { for (const instance of module.instances) { /* This is a convention in this project. */ let elId = §§${module.id}-${instance.id}§§; let el = document.getElementById(elId); if (!el) { console.warn(§§Element with id ${elId} not found§§); continue; } const root = ReactDOM.createRoot(el); const reactEl = React.createElement(module.mod, instance.params); root.render(reactEl); } } } -- assets/other/otherbundlestyles.css -- .otherbundlestyles { background-color: red; } -- assets/other/foo.css -- @import './bar.css'; .foo { background-color: blue; } -- assets/other/bar.css -- .bar { background-color: red; } -- assets/js/button.css -- button { background-color: red; } -- assets/js/bar.css -- .bar-assets { background-color: red; } -- assets/js/helper.js -- import './bar.css' export function helper() { console.log('helper'); } -- assets/js/react1styles_nested.css -- .react1styles_nested { background-color: red; } -- assets/js/react1styles.css -- @import './react1styles_nested.css'; .react1styles { background-color: red; } -- assets/js/react1.jsx -- import * as React from "react"; import './button.css' import './foo.css' import './react1styles.css' window.React1 = React; let text = 'Click me' export default function MyButton() { return ( ) } -- assets/js/react2.jsx -- import * as React from "react"; import { helper } from './helper.js' import './foo.css' window.React2 = React; let text = 'Click me, too!' export function MyOtherButton() { return ( ) } -- assets/js/main1.js -- import * as React from "react"; import * as params from '@params'; console.log('main1.React', React) console.log('main1.params.id', params.id) -- assets/js/main2.js -- import * as React from "react"; import * as params from '@params'; console.log('main2.React', React) console.log('main2.params.id', params.id) export default function Main2() {}; -- assets/js/main3.js -- import * as React from "react"; import * as params from '@params'; import * as config from '@params/config'; console.log('main3.params.id', params.id) console.log('config.params.id', config.id) export default function Main3() {}; -- layouts/_default/single.html -- Single. {{ $r := .Resources.GetMatch "*.jsx" }} {{ $batch := (js.Batch "mybundle") }} {{ $otherCSS := (resources.Match "/other/*.css").Mount "/other" "." }} {{ with $batch.Config }} {{ $shims := dict "react" "js/shims/react.js" "react-dom/client" "js/shims/react-dom.js" }} {{ .SetOptions (dict "target" "es2018" "params" (dict "id" "config") "shims" $shims ) }} {{ end }} {{ with $batch.Group "reactbatch" }} {{ with .Script "r3" }} {{ .SetOptions (dict "resource" $r "importContext" (slice $ $otherCSS) "params" (dict "id" "r3") ) }} {{ end }} {{ with .Instance "r3" "r2i1" }} {{ .SetOptions (dict "title" "r2 instance 1")}} {{ end }} {{ end }} -- layouts/index.html -- Home. {{ with (templates.Defer (dict "key" "global")) }} {{ $batch := (js.Batch "mybundle") }} {{ range $k, $v := $batch.Build.Groups }} {{ range $kk, $vv := . }} {{ $k }}: {{ $kk }}: {{ .RelPermalink }} {{ end }} {{ end }} {{ end }} {{ $myContentBundle := site.GetPage "mybundle" }} {{ $batch := (js.Batch "mybundle") }} {{ $otherCSS := (resources.Match "/other/*.css").Mount "/other" "." }} {{ with $batch.Group "mains" }} {{ with .Script "main1" }} {{ .SetOptions (dict "resource" (resources.Get "js/main1.js") "params" (dict "id" "main1") ) }} {{ end }} {{ with .Script "main2" }} {{ .SetOptions (dict "resource" (resources.Get "js/main2.js") "params" (dict "id" "main2") ) }} {{ end }} {{ with .Script "main3" }} {{ .SetOptions (dict "resource" (resources.Get "js/main3.js") ) }} {{ end }} {{ with .Instance "main1" "m1i1" }}{{ .SetOptions (dict "params" (dict "title" "Main1 Instance 1"))}}{{ end }} {{ with .Instance "main1" "m1i2" }}{{ .SetOptions (dict "params" (dict "title" "Main1 Instance 2"))}}{{ end }} {{ end }} {{ with $batch.Group "reactbatch" }} {{ with .Runner "reactrunner" }} {{ .SetOptions ( dict "resource" (resources.Get "js/reactrunner.js") )}} {{ end }} {{ with .Script "r1" }} {{ .SetOptions (dict "resource" (resources.Get "js/react1.jsx") "importContext" (slice $myContentBundle $otherCSS) "params" (dict "id" "r1") ) }} {{ end }} {{ with .Instance "r1" "i1" }}{{ .SetOptions (dict "params" (dict "title" "Instance 1"))}}{{ end }} {{ with .Instance "r1" "i2" }}{{ .SetOptions (dict "params" (dict "title" "Instance 2"))}}{{ end }} {{ with .Script "r2" }} {{ .SetOptions (dict "resource" (resources.Get "js/react2.jsx") "export" "MyOtherButton" "importContext" $otherCSS "params" (dict "id" "r2") ) }} {{ end }} {{ with .Instance "r2" "i1" }}{{ .SetOptions (dict "params" (dict "title" "Instance 2-1"))}}{{ end }} {{ end }} ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{ T: t, NeedsOsFS: true, NeedsNpmInstall: true, TxtarString: files, Running: true, LogLevel: logg.LevelWarn, // PrintAndKeepTempDir: true, }).Build() b.AssertFileContent("public/index.html", "mains: 0: /mybundle/mains.js", "reactbatch: 2: /mybundle/reactbatch.css", ) b.AssertFileContent("public/mybundle/reactbatch.css", ".bar {", ) // Verify params resolution. b.AssertFileContent("public/mybundle/mains.js", ` var id = "main1"; console.log("main1.params.id", id); var id2 = "main2"; console.log("main2.params.id", id2); # Params from top level config. var id3 = "config"; console.log("main3.params.id", void 0); console.log("config.params.id", id3); `) b.EditFileReplaceAll("content/mybundle/mybundlestyles.css", ".mybundlestyles", ".mybundlestyles-edit").Build() b.AssertFileContent("public/mybundle/reactbatch.css", ".mybundlestyles-edit {") b.EditFileReplaceAll("assets/other/bar.css", ".bar {", ".bar-edit {").Build() b.AssertFileContent("public/mybundle/reactbatch.css", ".bar-edit {") b.EditFileReplaceAll("assets/other/bar.css", ".bar-edit {", ".bar-edit2 {").Build() b.AssertFileContent("public/mybundle/reactbatch.css", ".bar-edit2 {") } gohugoio-hugo-6abdaca/internal/js/esbuild/build.go000066400000000000000000000134721507671574500224520ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package esbuild provides functions for building JavaScript resources. package esbuild import ( "errors" "fmt" "os" "path/filepath" "strings" "github.com/evanw/esbuild/pkg/api" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/common/text" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib/filesystems" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources" ) // NewBuildClient creates a new BuildClient. func NewBuildClient(fs *filesystems.SourceFilesystem, rs *resources.Spec) *BuildClient { return &BuildClient{ rs: rs, sfs: fs, } } // BuildClient is a client for building JavaScript resources using esbuild. type BuildClient struct { rs *resources.Spec sfs *filesystems.SourceFilesystem } // Build builds the given JavaScript resources using esbuild with the given options. func (c *BuildClient) Build(opts Options) (api.BuildResult, error) { dependencyManager := opts.DependencyManager if dependencyManager == nil { dependencyManager = identity.NopManager } opts.OutDir = c.rs.AbsPublishDir opts.ResolveDir = c.rs.Cfg.BaseConfig().WorkingDir // where node_modules gets resolved opts.AbsWorkingDir = opts.ResolveDir opts.TsConfig = c.rs.ResolveJSConfigFile("tsconfig.json") assetsResolver := newFSResolver(c.rs.Assets.Fs) if err := opts.validate(); err != nil { return api.BuildResult{}, err } if err := opts.compile(); err != nil { return api.BuildResult{}, err } var err error opts.compiled.Plugins, err = createBuildPlugins(c.rs, assetsResolver, dependencyManager, opts) if err != nil { return api.BuildResult{}, err } if opts.Inject != nil { // Resolve the absolute filenames. for i, ext := range opts.Inject { impPath := filepath.FromSlash(ext) if filepath.IsAbs(impPath) { return api.BuildResult{}, fmt.Errorf("inject: absolute paths not supported, must be relative to /assets") } m := assetsResolver.resolveComponent(impPath) if m == nil { return api.BuildResult{}, fmt.Errorf("inject: file %q not found", ext) } opts.Inject[i] = m.Filename } opts.compiled.Inject = opts.Inject } result := api.Build(opts.compiled) if len(result.Errors) > 0 { createErr := func(msg api.Message) error { if msg.Location == nil { return errors.New(msg.Text) } var ( contentr hugio.ReadSeekCloser errorMessage string loc = msg.Location errorPath = loc.File err error ) var resolvedError *ErrorMessageResolved if opts.ErrorMessageResolveFunc != nil { resolvedError = opts.ErrorMessageResolveFunc(msg) } if resolvedError == nil { if errorPath == stdinImporter { errorPath = opts.StdinSourcePath } errorMessage = msg.Text var namespace string for _, ns := range hugoNamespaces { if strings.HasPrefix(errorPath, ns) { namespace = ns break } } if namespace != "" { namespace += ":" errorMessage = strings.ReplaceAll(errorMessage, namespace, "") errorPath = strings.TrimPrefix(errorPath, namespace) contentr, err = hugofs.Os.Open(errorPath) } else { var fi os.FileInfo fi, err = c.sfs.Fs.Stat(errorPath) if err == nil { m := fi.(hugofs.FileMetaInfo).Meta() errorPath = m.Filename contentr, err = m.Open() } } } else { contentr = resolvedError.Content errorPath = resolvedError.Path errorMessage = resolvedError.Message } if contentr != nil { defer contentr.Close() } if err == nil { fe := herrors. NewFileErrorFromName(errors.New(errorMessage), errorPath). UpdatePosition(text.Position{Offset: -1, LineNumber: loc.Line, ColumnNumber: loc.Column}). UpdateContent(contentr, nil) return fe } return fmt.Errorf("%s", errorMessage) } var errors []error for _, msg := range result.Errors { errors = append(errors, createErr(msg)) } // Return 1, log the rest. for i, err := range errors { if i > 0 { c.rs.Logger.Errorf("js.Build failed: %s", err) } } return result, errors[0] } inOutputPathToAbsFilename := opts.ResolveSourceMapSource opts.ResolveSourceMapSource = func(s string) string { if inOutputPathToAbsFilename != nil { if filename := inOutputPathToAbsFilename(s); filename != "" { return filename } } if m := assetsResolver.resolveComponent(s); m != nil { return m.Filename } return "" } for i, o := range result.OutputFiles { if err := fixOutputFile(&o, func(s string) string { if s == "" { return opts.ResolveSourceMapSource(opts.StdinSourcePath) } var isNsHugo bool if strings.HasPrefix(s, "ns-hugo") { isNsHugo = true idxColon := strings.Index(s, ":") s = s[idxColon+1:] } if !strings.HasPrefix(s, PrefixHugoVirtual) { if !filepath.IsAbs(s) { s = filepath.Join(opts.OutDir, s) } } if isNsHugo { if ss := opts.ResolveSourceMapSource(s); ss != "" { if strings.HasPrefix(ss, PrefixHugoMemory) { // File not on disk, mark it for removal from the sources slice. return "" } return ss } return "" } return s }); err != nil { return result, err } result.OutputFiles[i] = o } return result, nil } gohugoio-hugo-6abdaca/internal/js/esbuild/helpers.go000066400000000000000000000012721507671574500230100ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package esbuild provides functions for building JavaScript resources. package esbuild gohugoio-hugo-6abdaca/internal/js/esbuild/options.go000066400000000000000000000252551507671574500230500ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package esbuild import ( "encoding/json" "fmt" "path/filepath" "strings" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/identity" "github.com/evanw/esbuild/pkg/api" "github.com/gohugoio/hugo/media" "github.com/mitchellh/mapstructure" ) var ( nameTarget = map[string]api.Target{ "": api.ESNext, "esnext": api.ESNext, "es5": api.ES5, "es6": api.ES2015, "es2015": api.ES2015, "es2016": api.ES2016, "es2017": api.ES2017, "es2018": api.ES2018, "es2019": api.ES2019, "es2020": api.ES2020, "es2021": api.ES2021, "es2022": api.ES2022, "es2023": api.ES2023, "es2024": api.ES2024, } // source names: https://github.com/evanw/esbuild/blob/9eca46464ed5615cb36a3beb3f7a7b9a8ffbe7cf/internal/config/config.go#L208 nameLoader = map[string]api.Loader{ "none": api.LoaderNone, "base64": api.LoaderBase64, "binary": api.LoaderBinary, "copy": api.LoaderFile, "css": api.LoaderCSS, "dataurl": api.LoaderDataURL, "default": api.LoaderDefault, "empty": api.LoaderEmpty, "file": api.LoaderFile, "global-css": api.LoaderGlobalCSS, "js": api.LoaderJS, "json": api.LoaderJSON, "jsx": api.LoaderJSX, "local-css": api.LoaderLocalCSS, "text": api.LoaderText, "ts": api.LoaderTS, "tsx": api.LoaderTSX, } ) // DecodeExternalOptions decodes the given map into ExternalOptions. func DecodeExternalOptions(m map[string]any) (ExternalOptions, error) { opts := ExternalOptions{ SourcesContent: true, } if err := mapstructure.WeakDecode(m, &opts); err != nil { return opts, err } if opts.TargetPath != "" { opts.TargetPath = paths.ToSlashTrimLeading(opts.TargetPath) } opts.Target = strings.ToLower(opts.Target) opts.Format = strings.ToLower(opts.Format) return opts, nil } // ErrorMessageResolved holds a resolved error message. type ErrorMessageResolved struct { Path string Message string Content hugio.ReadSeekCloser } // ExternalOptions holds user facing options for the js.Build template function. type ExternalOptions struct { // If not set, the source path will be used as the base target path. // Note that the target path's extension may change if the target MIME type // is different, e.g. when the source is TypeScript. TargetPath string // Whether to minify to output. Minify bool // One of "inline", "external", "linked" or "none". SourceMap string SourcesContent bool // The language target. // One of: es2015, es2016, es2017, es2018, es2019, es2020 or esnext. // Default is esnext. Target string // The output format. // One of: iife, cjs, esm // Default is to esm. Format string // One of browser, node, neutral. // Default is browser. // See https://esbuild.github.io/api/#platform Platform string // External dependencies, e.g. "react". Externals []string // This option allows you to automatically replace a global variable with an import from another file. // The filenames must be relative to /assets. // See https://esbuild.github.io/api/#inject Inject []string // User defined symbols. Defines map[string]any // This tells esbuild to edit your source code before building to drop certain constructs. // See https://esbuild.github.io/api/#drop Drop string // Maps a component import to another. Shims map[string]string // Configuring a loader for a given file type lets you load that file type with an // import statement or a require call. For example, configuring the .png file extension // to use the data URL loader means importing a .png file gives you a data URL // containing the contents of that image // // See https://esbuild.github.io/api/#loader Loaders map[string]string // User defined params. Will be marshaled to JSON and available as "@params", e.g. // import * as params from '@params'; Params any // What to use instead of React.createElement. JSXFactory string // What to use instead of React.Fragment. JSXFragment string // What to do about JSX syntax. // See https://esbuild.github.io/api/#jsx JSX string // Which library to use to automatically import JSX helper functions from. Only works if JSX is set to automatic. // See https://esbuild.github.io/api/#jsx-import-source JSXImportSource string // There is/was a bug in WebKit with severe performance issue with the tracking // of TDZ checks in JavaScriptCore. // // Enabling this flag removes the TDZ and `const` assignment checks and // may improve performance of larger JS codebases until the WebKit fix // is in widespread use. // // See https://bugs.webkit.org/show_bug.cgi?id=199866 // Deprecated: This no longer have any effect and will be removed. // TODO(bep) remove. See https://github.com/evanw/esbuild/commit/869e8117b499ca1dbfc5b3021938a53ffe934dba AvoidTDZ bool } // InternalOptions holds internal options for the js.Build template function. type InternalOptions struct { MediaType media.Type OutDir string Contents string SourceDir string ResolveDir string AbsWorkingDir string Metafile bool StdinSourcePath string DependencyManager identity.Manager Stdin bool // Set to true to pass in the entry point as a byte slice. Splitting bool TsConfig string EntryPoints []string ImportOnResolveFunc func(string, api.OnResolveArgs) string ImportOnLoadFunc func(api.OnLoadArgs) string ImportParamsOnLoadFunc func(args api.OnLoadArgs) json.RawMessage ErrorMessageResolveFunc func(api.Message) *ErrorMessageResolved ResolveSourceMapSource func(string) string // Used to resolve paths in error source maps. } // Options holds the options passed to Build. type Options struct { ExternalOptions InternalOptions compiled api.BuildOptions } func (opts *Options) compile() (err error) { target, found := nameTarget[opts.Target] if !found { err = fmt.Errorf("invalid target: %q", opts.Target) return } var loaders map[string]api.Loader if opts.Loaders != nil { loaders = make(map[string]api.Loader) for k, v := range opts.Loaders { loader, found := nameLoader[v] if !found { err = fmt.Errorf("invalid loader: %q", v) return } loaders[k] = loader } } mediaType := opts.MediaType if mediaType.IsZero() { mediaType = media.Builtin.JavascriptType } var loader api.Loader switch mediaType.SubType { case media.Builtin.JavascriptType.SubType: loader = api.LoaderJS case media.Builtin.TypeScriptType.SubType: loader = api.LoaderTS case media.Builtin.TSXType.SubType: loader = api.LoaderTSX case media.Builtin.JSXType.SubType: loader = api.LoaderJSX default: err = fmt.Errorf("unsupported Media Type: %q", opts.MediaType) return } var format api.Format // One of: iife, cjs, esm switch opts.Format { case "", "iife": format = api.FormatIIFE case "esm": format = api.FormatESModule case "cjs": format = api.FormatCommonJS default: err = fmt.Errorf("unsupported script output format: %q", opts.Format) return } var jsx api.JSX switch opts.JSX { case "", "transform": jsx = api.JSXTransform case "preserve": jsx = api.JSXPreserve case "automatic": jsx = api.JSXAutomatic default: err = fmt.Errorf("unsupported jsx type: %q", opts.JSX) return } var platform api.Platform switch opts.Platform { case "", "browser": platform = api.PlatformBrowser case "node": platform = api.PlatformNode case "neutral": platform = api.PlatformNeutral default: err = fmt.Errorf("unsupported platform type: %q", opts.Platform) return } var defines map[string]string if opts.Defines != nil { defines = maps.ToStringMapString(opts.Defines) } var drop api.Drop switch opts.Drop { case "": case "console": drop = api.DropConsole case "debugger": drop = api.DropDebugger default: err = fmt.Errorf("unsupported drop type: %q", opts.Drop) } // By default we only need to specify outDir and no outFile outDir := opts.OutDir outFile := "" var sourceMap api.SourceMap switch opts.SourceMap { case "inline": sourceMap = api.SourceMapInline case "external": sourceMap = api.SourceMapExternal case "linked": sourceMap = api.SourceMapLinked case "", "none": sourceMap = api.SourceMapNone default: err = fmt.Errorf("unsupported sourcemap type: %q", opts.SourceMap) return } sourcesContent := api.SourcesContentInclude if !opts.SourcesContent { sourcesContent = api.SourcesContentExclude } opts.compiled = api.BuildOptions{ Outfile: outFile, Bundle: true, Metafile: opts.Metafile, AbsWorkingDir: opts.AbsWorkingDir, Target: target, Format: format, Platform: platform, Sourcemap: sourceMap, SourcesContent: sourcesContent, Loader: loaders, MinifyWhitespace: opts.Minify, MinifyIdentifiers: opts.Minify, MinifySyntax: opts.Minify, Outdir: outDir, Splitting: opts.Splitting, Define: defines, External: opts.Externals, Drop: drop, JSXFactory: opts.JSXFactory, JSXFragment: opts.JSXFragment, JSX: jsx, JSXImportSource: opts.JSXImportSource, Tsconfig: opts.TsConfig, EntryPoints: opts.EntryPoints, } if opts.Stdin { // This makes ESBuild pass `stdin` as the Importer to the import. opts.compiled.Stdin = &api.StdinOptions{ Contents: opts.Contents, ResolveDir: opts.ResolveDir, Loader: loader, } } return } func (o Options) loaderFromFilename(filename string) api.Loader { ext := filepath.Ext(filename) if optsLoaders := o.compiled.Loader; optsLoaders != nil { if l, found := optsLoaders[ext]; found { return l } } l, found := extensionToLoaderMap[ext] if found { return l } return api.LoaderJS } func (opts *Options) validate() error { if opts.ImportOnResolveFunc != nil && opts.ImportOnLoadFunc == nil { return fmt.Errorf("ImportOnLoadFunc must be set if ImportOnResolveFunc is set") } if opts.ImportOnResolveFunc == nil && opts.ImportOnLoadFunc != nil { return fmt.Errorf("ImportOnResolveFunc must be set if ImportOnLoadFunc is set") } if opts.AbsWorkingDir == "" { return fmt.Errorf("AbsWorkingDir must be set") } return nil } gohugoio-hugo-6abdaca/internal/js/esbuild/options_test.go000066400000000000000000000144161507671574500241040ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package esbuild import ( "testing" "github.com/gohugoio/hugo/media" "github.com/evanw/esbuild/pkg/api" qt "github.com/frankban/quicktest" ) func TestToBuildOptions(t *testing.T) { c := qt.New(t) opts := Options{ InternalOptions: InternalOptions{ MediaType: media.Builtin.JavascriptType, Stdin: true, }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled, qt.DeepEquals, api.BuildOptions{ Bundle: true, Target: api.ESNext, Format: api.FormatIIFE, Platform: api.PlatformBrowser, SourcesContent: 1, Stdin: &api.StdinOptions{ Loader: api.LoaderJS, }, }) opts = Options{ ExternalOptions: ExternalOptions{ Target: "es2018", Format: "cjs", Minify: true, AvoidTDZ: true, }, InternalOptions: InternalOptions{ MediaType: media.Builtin.JavascriptType, Stdin: true, }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled, qt.DeepEquals, api.BuildOptions{ Bundle: true, Target: api.ES2018, Format: api.FormatCommonJS, Platform: api.PlatformBrowser, SourcesContent: 1, MinifyIdentifiers: true, MinifySyntax: true, MinifyWhitespace: true, Stdin: &api.StdinOptions{ Loader: api.LoaderJS, }, }) opts = Options{ ExternalOptions: ExternalOptions{ Target: "es2018", Format: "cjs", Minify: true, SourceMap: "inline", }, InternalOptions: InternalOptions{ MediaType: media.Builtin.JavascriptType, Stdin: true, }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled, qt.DeepEquals, api.BuildOptions{ Bundle: true, Target: api.ES2018, Format: api.FormatCommonJS, Platform: api.PlatformBrowser, MinifyIdentifiers: true, MinifySyntax: true, MinifyWhitespace: true, SourcesContent: 1, Sourcemap: api.SourceMapInline, Stdin: &api.StdinOptions{ Loader: api.LoaderJS, }, }) opts = Options{ ExternalOptions: ExternalOptions{ Target: "es2018", Format: "cjs", Minify: true, SourceMap: "inline", }, InternalOptions: InternalOptions{ MediaType: media.Builtin.JavascriptType, Stdin: true, }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled, qt.DeepEquals, api.BuildOptions{ Bundle: true, Target: api.ES2018, Format: api.FormatCommonJS, Platform: api.PlatformBrowser, MinifyIdentifiers: true, MinifySyntax: true, MinifyWhitespace: true, Sourcemap: api.SourceMapInline, SourcesContent: 1, Stdin: &api.StdinOptions{ Loader: api.LoaderJS, }, }) opts = Options{ ExternalOptions: ExternalOptions{ Target: "es2018", Format: "cjs", Minify: true, SourceMap: "external", }, InternalOptions: InternalOptions{ MediaType: media.Builtin.JavascriptType, Stdin: true, }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled, qt.DeepEquals, api.BuildOptions{ Bundle: true, Target: api.ES2018, Format: api.FormatCommonJS, Platform: api.PlatformBrowser, MinifyIdentifiers: true, MinifySyntax: true, MinifyWhitespace: true, Sourcemap: api.SourceMapExternal, SourcesContent: 1, Stdin: &api.StdinOptions{ Loader: api.LoaderJS, }, }) opts = Options{ ExternalOptions: ExternalOptions{ JSX: "automatic", JSXImportSource: "preact", }, InternalOptions: InternalOptions{ MediaType: media.Builtin.JavascriptType, Stdin: true, }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled, qt.DeepEquals, api.BuildOptions{ Bundle: true, Target: api.ESNext, Format: api.FormatIIFE, Platform: api.PlatformBrowser, SourcesContent: 1, Stdin: &api.StdinOptions{ Loader: api.LoaderJS, }, JSX: api.JSXAutomatic, JSXImportSource: "preact", }) opts = Options{ ExternalOptions: ExternalOptions{ Drop: "console", }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled.Drop, qt.Equals, api.DropConsole) opts = Options{ ExternalOptions: ExternalOptions{ Drop: "debugger", }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled.Drop, qt.Equals, api.DropDebugger) opts = Options{ ExternalOptions: ExternalOptions{ Drop: "adsfadsf", }, } c.Assert(opts.compile(), qt.ErrorMatches, `unsupported drop type: "adsfadsf"`) } func TestToBuildOptionsTarget(t *testing.T) { c := qt.New(t) for _, test := range []struct { target string expect api.Target }{ {"es2015", api.ES2015}, {"es2016", api.ES2016}, {"es2017", api.ES2017}, {"es2018", api.ES2018}, {"es2019", api.ES2019}, {"es2020", api.ES2020}, {"es2021", api.ES2021}, {"es2022", api.ES2022}, {"es2023", api.ES2023}, {"", api.ESNext}, {"esnext", api.ESNext}, } { c.Run(test.target, func(c *qt.C) { opts := Options{ ExternalOptions: ExternalOptions{ Target: test.target, }, InternalOptions: InternalOptions{ MediaType: media.Builtin.JavascriptType, }, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled.Target, qt.Equals, test.expect) }) } } func TestDecodeExternalOptions(t *testing.T) { c := qt.New(t) m := map[string]any{ "platform": "node", } ext, err := DecodeExternalOptions(m) c.Assert(err, qt.IsNil) c.Assert(ext, qt.DeepEquals, ExternalOptions{ SourcesContent: true, Platform: "node", }) opts := Options{ ExternalOptions: ext, } c.Assert(opts.compile(), qt.IsNil) c.Assert(opts.compiled, qt.DeepEquals, api.BuildOptions{ Bundle: true, Target: api.ESNext, Format: api.FormatIIFE, Platform: api.PlatformNode, SourcesContent: api.SourcesContentInclude, }) } gohugoio-hugo-6abdaca/internal/js/esbuild/resolve.go000066400000000000000000000217031507671574500230260ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package esbuild import ( "encoding/json" "fmt" "os" "path/filepath" "strings" "github.com/evanw/esbuild/pkg/api" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources" "github.com/gohugoio/hugo/resources/resource" "github.com/spf13/afero" "slices" ) const ( NsHugoImport = "ns-hugo-imp" NsHugoImportResolveFunc = "ns-hugo-imp-func" nsHugoParams = "ns-hugo-params" pathHugoConfigParams = "@params/config" stdinImporter = "" ) var hugoNamespaces = []string{NsHugoImport, NsHugoImportResolveFunc, nsHugoParams} const ( PrefixHugoVirtual = "__hu_v" PrefixHugoMemory = "__hu_m" ) var extensionToLoaderMap = map[string]api.Loader{ ".js": api.LoaderJS, ".mjs": api.LoaderJS, ".cjs": api.LoaderJS, ".jsx": api.LoaderJSX, ".ts": api.LoaderTS, ".tsx": api.LoaderTSX, ".css": api.LoaderCSS, ".json": api.LoaderJSON, ".txt": api.LoaderText, } // This is a common sub-set of ESBuild's default extensions. // We assume that imports of JSON, CSS etc. will be using their full // name with extension. var commonExtensions = []string{".js", ".ts", ".tsx", ".jsx"} // ResolveComponent resolves a component using the given resolver. func ResolveComponent[T any](impPath string, resolve func(string) (v T, found, isDir bool)) (v T, found bool) { findFirst := func(base string) (v T, found, isDir bool) { for _, ext := range commonExtensions { if strings.HasSuffix(impPath, ext) { // Import of foo.js.js need the full name. continue } if v, found, isDir = resolve(base + ext); found { return } } // Not found. return } // We need to check if this is a regular file imported without an extension. // There may be ambiguous situations where both foo.js and foo/index.js exists. // This import order is in line with both how Node and ESBuild's native // import resolver works. // It may be a regular file imported without an extension, e.g. // foo or foo/index. v, found, _ = findFirst(impPath) if found { return v, found } base := filepath.Base(impPath) if base == "index" { // try index.esm.js etc. v, found, _ = findFirst(impPath + ".esm") if found { return v, found } } // Check the path as is. var isDir bool v, found, isDir = resolve(impPath) if found && isDir { v, found, _ = findFirst(filepath.Join(impPath, "index")) if !found { v, found, _ = findFirst(filepath.Join(impPath, "index.esm")) } } if !found && strings.HasSuffix(base, ".js") { v, found, _ = findFirst(strings.TrimSuffix(impPath, ".js")) } return } // ResolveResource resolves a resource using the given resourceGetter. func ResolveResource(impPath string, resourceGetter resource.ResourceGetter) (r resource.Resource) { resolve := func(name string) (v resource.Resource, found, isDir bool) { r := resourceGetter.Get(name) return r, r != nil, false } r, found := ResolveComponent(impPath, resolve) if !found { return nil } return r } func newFSResolver(fs afero.Fs) *fsResolver { return &fsResolver{fs: fs, resolved: maps.NewCache[string, *hugofs.FileMeta]()} } type fsResolver struct { fs afero.Fs resolved *maps.Cache[string, *hugofs.FileMeta] } func (r *fsResolver) resolveComponent(impPath string) *hugofs.FileMeta { v, _ := r.resolved.GetOrCreate(impPath, func() (*hugofs.FileMeta, error) { resolve := func(name string) (*hugofs.FileMeta, bool, bool) { if fi, err := r.fs.Stat(name); err == nil { return fi.(hugofs.FileMetaInfo).Meta(), true, fi.IsDir() } return nil, false, false } v, _ := ResolveComponent(impPath, resolve) return v, nil }) return v } func createBuildPlugins(rs *resources.Spec, assetsResolver *fsResolver, depsManager identity.Manager, opts Options) ([]api.Plugin, error) { fs := rs.Assets resolveImport := func(args api.OnResolveArgs) (api.OnResolveResult, error) { impPath := args.Path shimmed := false if opts.Shims != nil { override, found := opts.Shims[impPath] if found { impPath = override shimmed = true } } if slices.Contains(opts.Externals, impPath) { return api.OnResolveResult{ Path: impPath, External: true, }, nil } if opts.ImportOnResolveFunc != nil { if s := opts.ImportOnResolveFunc(impPath, args); s != "" { return api.OnResolveResult{Path: s, Namespace: NsHugoImportResolveFunc}, nil } } importer := args.Importer isStdin := importer == stdinImporter var relDir string if !isStdin { if strings.HasPrefix(importer, PrefixHugoVirtual) { relDir = filepath.Dir(strings.TrimPrefix(importer, PrefixHugoVirtual)) } else { rel, found := fs.MakePathRelative(importer, true) if !found { if shimmed { relDir = opts.SourceDir } else { // Not in any of the /assets folders. // This is an import from a node_modules, let // ESBuild resolve this. return api.OnResolveResult{}, nil } } else { relDir = filepath.Dir(rel) } } } else { relDir = opts.SourceDir } // Imports not starting with a "." is assumed to live relative to /assets. // Hugo makes no assumptions about the directory structure below /assets. if relDir != "" && strings.HasPrefix(impPath, ".") { impPath = filepath.Join(relDir, impPath) } m := assetsResolver.resolveComponent(impPath) if m != nil { depsManager.AddIdentity(m.PathInfo) // Store the source root so we can create a jsconfig.json // to help IntelliSense when the build is done. // This should be a small number of elements, and when // in server mode, we may get stale entries on renames etc., // but that shouldn't matter too much. rs.JSConfigBuilder.AddSourceRoot(m.SourceRoot) return api.OnResolveResult{Path: m.Filename, Namespace: NsHugoImport}, nil } // Fall back to ESBuild's resolve. return api.OnResolveResult{}, nil } importResolver := api.Plugin{ Name: "hugo-import-resolver", Setup: func(build api.PluginBuild) { build.OnResolve(api.OnResolveOptions{Filter: `.*`}, func(args api.OnResolveArgs) (api.OnResolveResult, error) { return resolveImport(args) }) build.OnLoad(api.OnLoadOptions{Filter: `.*`, Namespace: NsHugoImport}, func(args api.OnLoadArgs) (api.OnLoadResult, error) { b, err := os.ReadFile(args.Path) if err != nil { return api.OnLoadResult{}, fmt.Errorf("failed to read %q: %w", args.Path, err) } c := string(b) return api.OnLoadResult{ // See https://github.com/evanw/esbuild/issues/502 // This allows all modules to resolve dependencies // in the main project's node_modules. ResolveDir: opts.ResolveDir, Contents: &c, Loader: opts.loaderFromFilename(args.Path), }, nil }) build.OnLoad(api.OnLoadOptions{Filter: `.*`, Namespace: NsHugoImportResolveFunc}, func(args api.OnLoadArgs) (api.OnLoadResult, error) { c := opts.ImportOnLoadFunc(args) if c == "" { return api.OnLoadResult{}, fmt.Errorf("ImportOnLoadFunc failed to resolve %q", args.Path) } return api.OnLoadResult{ ResolveDir: opts.ResolveDir, Contents: &c, Loader: opts.loaderFromFilename(args.Path), }, nil }) }, } params := opts.Params if params == nil { // This way @params will always resolve to something. params = make(map[string]any) } b, err := json.Marshal(params) if err != nil { return nil, fmt.Errorf("failed to marshal params: %w", err) } paramsPlugin := api.Plugin{ Name: "hugo-params-plugin", Setup: func(build api.PluginBuild) { build.OnResolve(api.OnResolveOptions{Filter: `^@params(/config)?$`}, func(args api.OnResolveArgs) (api.OnResolveResult, error) { resolvedPath := args.Importer if args.Path == pathHugoConfigParams { resolvedPath = pathHugoConfigParams } return api.OnResolveResult{ Path: resolvedPath, Namespace: nsHugoParams, }, nil }) build.OnLoad(api.OnLoadOptions{Filter: `.*`, Namespace: nsHugoParams}, func(args api.OnLoadArgs) (api.OnLoadResult, error) { bb := b if args.Path != pathHugoConfigParams && opts.ImportParamsOnLoadFunc != nil { bb = opts.ImportParamsOnLoadFunc(args) } s := string(bb) if s == "" { s = "{}" } return api.OnLoadResult{ Contents: &s, Loader: api.LoaderJSON, }, nil }) }, } return []api.Plugin{importResolver, paramsPlugin}, nil } gohugoio-hugo-6abdaca/internal/js/esbuild/resolve_test.go000066400000000000000000000065021507671574500240650ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package esbuild import ( "path" "path/filepath" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/testconfig" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib/filesystems" "github.com/gohugoio/hugo/hugolib/paths" "github.com/spf13/afero" ) func TestResolveComponentInAssets(t *testing.T) { c := qt.New(t) for _, test := range []struct { name string files []string impPath string expect string }{ {"Basic, extension", []string{"foo.js", "bar.js"}, "foo.js", "foo.js"}, {"Basic, no extension", []string{"foo.js", "bar.js"}, "foo", "foo.js"}, {"Basic, no extension, typescript", []string{"foo.ts", "bar.js"}, "foo", "foo.ts"}, {"Not found", []string{"foo.js", "bar.js"}, "moo.js", ""}, {"Not found, double js extension", []string{"foo.js.js", "bar.js"}, "foo.js", ""}, {"Index file, folder only", []string{"foo/index.js", "bar.js"}, "foo", "foo/index.js"}, {"Index file, folder and index", []string{"foo/index.js", "bar.js"}, "foo/index", "foo/index.js"}, {"Index file, folder and index and suffix", []string{"foo/index.js", "bar.js"}, "foo/index.js", "foo/index.js"}, {"Index ESM file, folder only", []string{"foo/index.esm.js", "bar.js"}, "foo", "foo/index.esm.js"}, {"Index ESM file, folder and index", []string{"foo/index.esm.js", "bar.js"}, "foo/index", "foo/index.esm.js"}, {"Index ESM file, folder and index and suffix", []string{"foo/index.esm.js", "bar.js"}, "foo/index.esm.js", "foo/index.esm.js"}, // We added these index.esm.js cases in v0.101.0. The case below is unlikely to happen in the wild, but add a test // to document Hugo's behavior. We pick the file with the name index.js; anything else would be breaking. {"Index and Index ESM file, folder only", []string{"foo/index.esm.js", "foo/index.js", "bar.js"}, "foo", "foo/index.js"}, // Issue #8949 {"Check file before directory", []string{"foo.js", "foo/index.js"}, "foo", "foo.js"}, } { c.Run(test.name, func(c *qt.C) { baseDir := "assets" mfs := afero.NewMemMapFs() for _, filename := range test.files { c.Assert(afero.WriteFile(mfs, filepath.Join(baseDir, filename), []byte("let foo='bar';"), 0o777), qt.IsNil) } conf := testconfig.GetTestConfig(mfs, config.New()) fs := hugofs.NewFrom(mfs, conf.BaseConfig()) p, err := paths.New(fs, conf) c.Assert(err, qt.IsNil) bfs, err := filesystems.NewBase(p, nil) c.Assert(err, qt.IsNil) resolver := newFSResolver(bfs.Assets.Fs) got := resolver.resolveComponent(test.impPath) gotPath := "" expect := test.expect if got != nil { gotPath = filepath.ToSlash(got.Filename) expect = path.Join(baseDir, test.expect) } c.Assert(gotPath, qt.Equals, expect) }) } } gohugoio-hugo-6abdaca/internal/js/esbuild/sourcemap.go000066400000000000000000000041361507671574500233460ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package esbuild import ( "encoding/json" "strings" "github.com/evanw/esbuild/pkg/api" "github.com/gohugoio/hugo/common/paths" ) type sourceMap struct { Version int `json:"version"` Sources []string `json:"sources"` SourcesContent []string `json:"sourcesContent"` Mappings string `json:"mappings"` Names []string `json:"names"` } func fixOutputFile(o *api.OutputFile, resolve func(string) string) error { if strings.HasSuffix(o.Path, ".map") { b, err := fixSourceMap(o.Contents, resolve) if err != nil { return err } o.Contents = b } return nil } func fixSourceMap(s []byte, resolve func(string) string) ([]byte, error) { var sm sourceMap if err := json.Unmarshal([]byte(s), &sm); err != nil { return nil, err } sm.Sources = fixSourceMapSources(sm.Sources, resolve) b, err := json.Marshal(sm) if err != nil { return nil, err } return b, nil } func fixSourceMapSources(s []string, resolve func(string) string) []string { var result []string for _, src := range s { if s := resolve(src); s != "" { // Absolute filenames works fine on U*ix (tested in Chrome on MacOs), but works very poorly on Windows (again Chrome). // So, convert it to a URL. if u, err := paths.UrlFromFilename(s); err == nil { result = append(result, u.String()) } } } return result } // Used in tests. func SourcesFromSourceMap(s string) []string { var sm sourceMap if err := json.Unmarshal([]byte(s), &sm); err != nil { return nil } return sm.Sources } gohugoio-hugo-6abdaca/internal/warpc/000077500000000000000000000000001507671574500200665ustar00rootroot00000000000000gohugoio-hugo-6abdaca/internal/warpc/build.sh000077500000000000000000000002711507671574500215240ustar00rootroot00000000000000# TODO1 clean up when done. go generate ./gen javy compile js/greet.bundle.js -d -o wasm/greet.wasm javy compile js/renderkatex.bundle.js -d -o wasm/renderkatex.wasm touch warpc_test.gogohugoio-hugo-6abdaca/internal/warpc/gen/000077500000000000000000000000001507671574500206375ustar00rootroot00000000000000gohugoio-hugo-6abdaca/internal/warpc/gen/main.go000066400000000000000000000033561507671574500221210ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:generate go run main.go package main import ( "fmt" "log" "os" "path/filepath" "strings" "github.com/evanw/esbuild/pkg/api" ) var scripts = []string{ "greet.js", "renderkatex.js", } func main() { for _, script := range scripts { filename := filepath.Join("../js", script) err := buildJSBundle(filename) if err != nil { log.Fatal(err) } } } func buildJSBundle(filename string) error { minify := true result := api.Build( api.BuildOptions{ EntryPoints: []string{filename}, Bundle: true, MinifyWhitespace: minify, MinifyIdentifiers: minify, MinifySyntax: minify, Target: api.ES2020, Outfile: strings.Replace(filename, ".js", ".bundle.js", 1), SourceRoot: "../js", }) if len(result.Errors) > 0 { return fmt.Errorf("build failed: %v", result.Errors) } if len(result.OutputFiles) != 1 { return fmt.Errorf("expected 1 output file, got %d", len(result.OutputFiles)) } of := result.OutputFiles[0] if err := os.WriteFile(filepath.FromSlash(of.Path), of.Contents, 0o644); err != nil { return fmt.Errorf("write file failed: %v", err) } return nil } gohugoio-hugo-6abdaca/internal/warpc/js/000077500000000000000000000000001507671574500205025ustar00rootroot00000000000000gohugoio-hugo-6abdaca/internal/warpc/js/.gitignore000066400000000000000000000000371507671574500224720ustar00rootroot00000000000000node_modules/ package-lock.jsongohugoio-hugo-6abdaca/internal/warpc/js/common.js000066400000000000000000000036111507671574500223310ustar00rootroot00000000000000// Read JSONL from stdin. export function readInput(handle) { const buffSize = 1024; let currentLine = []; const buffer = new Uint8Array(buffSize); // These are not implemented by QuickJS. console.warn = (value) => { console.log(value); }; console.error = (value) => { throw new Error(value); }; // Read all the available bytes while (true) { // Stdin file descriptor const fd = 0; let bytesRead = 0; try { bytesRead = Javy.IO.readSync(fd, buffer); } catch (e) { // IO.readSync fails with os error 29 when stdin closes. if (e.message.includes('os error 29')) { break; } throw new Error('Error reading from stdin'); } if (bytesRead < 0) { throw new Error('Error reading from stdin'); break; } if (bytesRead === 0) { break; } currentLine = [...currentLine, ...buffer.subarray(0, bytesRead)]; // Check for newline. If not, we need to read more data. if (!currentLine.includes(10)) { continue; } // Split array into chunks by newline. let i = 0; for (let j = 0; i < currentLine.length; i++) { if (currentLine[i] === 10) { const chunk = currentLine.splice(j, i + 1); const arr = new Uint8Array(chunk); let message; try { message = JSON.parse(new TextDecoder().decode(arr)); } catch (e) { throw new Error(`Error parsing JSON '${new TextDecoder().decode(arr)}' from stdin: ${e.message}`); } try { handle(message); } catch (e) { let header = message.header; header.err = e.message; writeOutput({ header: header }); } j = i + 1; } } // Remove processed data. currentLine = currentLine.slice(i); } } // Write JSONL to stdout export function writeOutput(output) { const encodedOutput = new TextEncoder().encode(JSON.stringify(output) + '\n'); const buffer = new Uint8Array(encodedOutput); // Stdout file descriptor const fd = 1; Javy.IO.writeSync(fd, buffer); } gohugoio-hugo-6abdaca/internal/warpc/js/greet.bundle.js000066400000000000000000000016651507671574500234260ustar00rootroot00000000000000(()=>{function w(r){let e=[],c=new Uint8Array(1024);for(console.warn=n=>{console.log(n)},console.error=n=>{throw new Error(n)};;){let o=0;try{o=Javy.IO.readSync(0,c)}catch(a){if(a.message.includes("os error 29"))break;throw new Error("Error reading from stdin")}if(o<0)throw new Error("Error reading from stdin");if(o===0)break;if(e=[...e,...c.subarray(0,o)],!e.includes(10))continue;let t=0;for(let a=0;t{function Wt(r){let t=[],a=new Uint8Array(1024);for(console.warn=n=>{console.log(n)},console.error=n=>{throw new Error(n)};;){let s=0;try{s=Javy.IO.readSync(0,a)}catch(h){if(h.message.includes("os error 29"))break;throw new Error("Error reading from stdin")}if(s<0)throw new Error("Error reading from stdin");if(s===0)break;if(t=[...t,...a.subarray(0,s)],!t.includes(10))continue;let l=0;for(let h=0;l15?f="\u2026"+h.slice(n-15,n):f=h.slice(0,n);var v;s+15":">","<":"<",'"':""","'":"'"},Ba=/[&><"']/g;function Da(r){return String(r).replace(Ba,e=>qa[e])}var zr=function r(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?r(e.body[0]):e:e.type==="font"?r(e.body):e},Ca=function(e){var t=zr(e);return t.type==="mathord"||t.type==="textord"||t.type==="atom"},_a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},Na=function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},O={contains:Ma,deflt:za,escape:Da,hyphenate:Ta,getBaseElem:zr,isCharacterBox:Ca,protocolFromUrl:Na},Oe={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:r=>"#"+r},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(r,e)=>(e.push(r),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:r=>Math.max(0,r),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:r=>Math.max(0,r),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:r=>Math.max(0,r),cli:"-e, --max-expand ",cliProcessor:r=>r==="Infinity"?1/0:parseInt(r)},globalGroup:{type:"boolean",cli:!1}};function Oa(r){if(r.default)return r.default;var e=r.type,t=Array.isArray(e)?e[0]:e;if(typeof t!="string")return t.enum[0];switch(t){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var de=class{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var t in Oe)if(Oe.hasOwnProperty(t)){var a=Oe[t];this[t]=e[t]!==void 0?a.processor?a.processor(e[t]):e[t]:Oa(a)}}reportNonstrict(e,t,a){var n=this.strict;if(typeof n=="function"&&(n=n(e,t,a)),!(!n||n==="ignore")){if(n===!0||n==="error")throw new z("LaTeX-incompatible input and strict mode is set to 'error': "+(t+" ["+e+"]"),a);n==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]"))}}useStrictBehavior(e,t,a){var n=this.strict;if(typeof n=="function")try{n=n(e,t,a)}catch{n="error"}return!n||n==="ignore"?!1:n===!0||n==="error"?!0:n==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var t=O.protocolFromUrl(e.url);if(t==null)return!1;e.protocol=t}var a=typeof this.trust=="function"?this.trust(e):this.trust;return!!a}},k0=class{constructor(e,t,a){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=a}sup(){return M0[Ia[this.id]]}sub(){return M0[Ea[this.id]]}fracNum(){return M0[Ra[this.id]]}fracDen(){return M0[$a[this.id]]}cramp(){return M0[La[this.id]]}text(){return M0[Fa[this.id]]}isTight(){return this.size>=2}},At=0,Ee=1,ae=2,N0=3,pe=4,v0=5,ne=6,o0=7,M0=[new k0(At,0,!1),new k0(Ee,0,!0),new k0(ae,1,!1),new k0(N0,1,!0),new k0(pe,2,!1),new k0(v0,2,!0),new k0(ne,3,!1),new k0(o0,3,!0)],Ia=[pe,v0,pe,v0,ne,o0,ne,o0],Ea=[v0,v0,v0,v0,o0,o0,o0,o0],Ra=[ae,N0,pe,v0,ne,o0,ne,o0],$a=[N0,N0,v0,v0,o0,o0,o0,o0],La=[Ee,Ee,N0,N0,v0,v0,o0,o0],Fa=[At,Ee,ae,N0,ae,N0,ae,N0],E={DISPLAY:M0[At],TEXT:M0[ae],SCRIPT:M0[pe],SCRIPTSCRIPT:M0[ne]},pt=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function Ha(r){for(var e=0;e=n[0]&&r<=n[1])return t.name}return null}var Ie=[];pt.forEach(r=>r.blocks.forEach(e=>Ie.push(...e)));function Ar(r){for(var e=0;e=Ie[e]&&r<=Ie[e+1])return!0;return!1}var re=80,Pa=function(e,t){return"M95,"+(622+e+t)+` c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 c69,-144,104.5,-217.7,106.5,-221 l`+e/2.075+" -"+e+` c5.3,-9.3,12,-14,20,-14 H400000v`+(40+e)+`H845.2724 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z M`+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Ga=function(e,t){return"M263,"+(601+e+t)+`c0.7,0,18,39.7,52,119 c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 c340,-704.7,510.7,-1060.3,512,-1067 l`+e/2.084+" -"+e+` c4.7,-7.3,11,-11,19,-11 H40000v`+(40+e)+`H1012.3 s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z M`+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Va=function(e,t){return"M983 "+(10+e+t)+` l`+e/3.13+" -"+e+` c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 c53.7,-170.3,84.5,-266.8,92.5,-289.5z M`+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Ua=function(e,t){return"M424,"+(2398+e+t)+` c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 v`+(40+e)+`H1014.6 s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+t+` h400000v`+(40+e)+"h-400000z"},Xa=function(e,t){return"M473,"+(2713+e+t)+` c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, 606zM`+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"},Wa=function(e){var t=e/2;return"M400000 "+e+" H0 L"+t+" 0 l65 45 L145 "+(e-80)+" H400000z"},Ya=function(e,t,a){var n=a-54-t-e;return"M702 "+(e+t)+"H400000"+(40+e)+` H742v`+n+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 219 661 l218 661zM702 `+t+"H400000v"+(40+e)+"H742z"},Za=function(e,t,a){t=1e3*t;var n="";switch(e){case"sqrtMain":n=Pa(t,re);break;case"sqrtSize1":n=Ga(t,re);break;case"sqrtSize2":n=Va(t,re);break;case"sqrtSize3":n=Ua(t,re);break;case"sqrtSize4":n=Xa(t,re);break;case"sqrtTall":n=Ya(t,re,a)}return n},ja=function(e,t){switch(e){case"\u239C":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z"+("M367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z");case"\u239F":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23A2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23A5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23AA":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23D0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257z"+("M478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z");default:return""}},Yt={doubleleftarrow:`M262 157 l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 -86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 -2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l -10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 -33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 -17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 -13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 -107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 -5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 -45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 -331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 435 0h399565z`,leftgroupunder:`M400000 262 H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 -3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 -18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 -196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 -4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 -10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 -152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 -2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 -83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 -68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 -.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 -53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 -5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 -320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 -451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 -480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 -707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 -16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 -40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 -12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l -6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 -174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 -3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 -10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 -18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 -7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 -27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 -64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 -13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 -52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 -167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 -70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 -40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 -37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 -19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 -2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 -68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 -8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 -11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 -11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 -1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 -7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, -5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 -27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 -84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 -119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 -12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, 1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, -152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Ka=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+` v1759 h347 v-84 H403z M403 1759 V0 H319 V1759 v`+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+` v1759 H0 v84 H347z M347 1759 V0 H263 V1759 v`+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+t+` v585 h43z M367 15 v585 v`+t+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+` v1715 h263 v84 H319z MM319 602 V0 H403 V602 v`+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+` v1799 H0 v-84 H319z MM319 602 V0 H403 V602 v`+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+` v602 h84z M403 1759 V0 H319 V1759 v`+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+` v602 h84z M347 1759 V0 h-84 V1759 v`+t+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, -36,557 l0,`+(t+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, 949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, -544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 l0,-`+(t+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, -210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, 63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(t+9)+` c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 l0,-`+(t+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, -470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},Y0=class{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return O.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),t=0;tt.toText();return this.children.map(e).join("")}},z0={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},ke={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Zt={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};function Ja(r,e){z0[r]=e}function Tt(r,e,t){if(!z0[e])throw new Error("Font metrics not found for font: "+e+".");var a=r.charCodeAt(0),n=z0[e][a];if(!n&&r[0]in Zt&&(a=Zt[r[0]].charCodeAt(0),n=z0[e][a]),!n&&t==="text"&&Ar(a)&&(n=z0[e][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var tt={};function Qa(r){var e;if(r>=5?e=0:r>=3?e=1:e=2,!tt[e]){var t=tt[e]={cssEmPerMu:ke.quad[e]/18};for(var a in ke)ke.hasOwnProperty(a)&&(t[a]=ke[a][e])}return tt[e]}var e1=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],jt=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Kt=function(e,t){return t.size<2?e:e1[e-1][t.size-1]},Re=class r{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||r.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=jt[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a]);return new r(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Kt(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:jt[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=Kt(r.BASESIZE,e);return this.size===t&&this.textSize===r.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==r.BASESIZE?["sizing","reset-size"+this.size,"size"+r.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Qa(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};Re.BASESIZE=6;var ft={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},t1={ex:!0,em:!0,mu:!0},Tr=function(e){return typeof e!="string"&&(e=e.unit),e in ft||e in t1||e==="ex"},Q=function(e,t){var a;if(e.unit in ft)a=ft[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if(e.unit==="mu")a=t.fontMetrics().cssEmPerMu;else{var n;if(t.style.isTight()?n=t.havingStyle(t.style.text()):n=t,e.unit==="ex")a=n.fontMetrics().xHeight;else if(e.unit==="em")a=n.fontMetrics().quad;else throw new z("Invalid unit: '"+e.unit+"'");n!==t&&(a*=n.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*a,t.maxSize)},T=function(e){return+e.toFixed(4)+"em"},G0=function(e){return e.filter(t=>t).join(" ")},qr=function(e,t,a){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=a||{},t){t.style.isTight()&&this.classes.push("mtight");var n=t.getColor();n&&(this.style.color=n)}},Br=function(e){var t=document.createElement(e);t.className=G0(this.classes);for(var a in this.style)this.style.hasOwnProperty(a)&&(t.style[a]=this.style[a]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&t.setAttribute(n,this.attributes[n]);for(var s=0;s/=\x00-\x1f]/,Dr=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+O.escape(G0(this.classes))+'"');var a="";for(var n in this.style)this.style.hasOwnProperty(n)&&(a+=O.hyphenate(n)+":"+this.style[n]+";");a&&(t+=' style="'+O.escape(a)+'"');for(var s in this.attributes)if(this.attributes.hasOwnProperty(s)){if(r1.test(s))throw new z("Invalid attribute name '"+s+"'");t+=" "+s+'="'+O.escape(this.attributes[s])+'"'}t+=">";for(var l=0;l",t},Z0=class{constructor(e,t,a,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,qr.call(this,e,a,n),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return O.contains(this.classes,e)}toNode(){return Br.call(this,"span")}toMarkup(){return Dr.call(this,"span")}},fe=class{constructor(e,t,a,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,qr.call(this,t,n),this.children=a||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return O.contains(this.classes,e)}toNode(){return Br.call(this,"a")}toMarkup(){return Dr.call(this,"a")}},vt=class{constructor(e,t,a){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=a}hasClass(e){return O.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var t in this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){var e=''+O.escape(this.alt)+'0&&(t=document.createElement("span"),t.style.marginRight=T(this.italic)),this.classes.length>0&&(t=t||document.createElement("span"),t.className=G0(this.classes));for(var a in this.style)this.style.hasOwnProperty(a)&&(t=t||document.createElement("span"),t.style[a]=this.style[a]);return t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="0&&(a+="margin-right:"+this.italic+"em;");for(var n in this.style)this.style.hasOwnProperty(n)&&(a+=O.hyphenate(n)+":"+this.style[n]+";");a&&(e=!0,t+=' style="'+O.escape(a)+'"');var s=O.escape(this.text);return e?(t+=">",t+=s,t+="",t):s}},S0=class{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");for(var a in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,a)&&t.setAttribute(a,this.attributes[a]);for(var n=0;n':''}},ve=class{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"line");for(var a in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,a)&&t.setAttribute(a,this.attributes[a]);return t}toMarkup(){var e=" but got "+String(r)+".")}var i1={bin:1,close:1,inner:1,open:1,punct:1,rel:1},s1={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},Y={math:{},text:{}};function i(r,e,t,a,n,s){Y[r][n]={font:e,group:t,replace:a},s&&a&&(Y[r][a]=Y[r][n])}var o="math",k="text",u="main",d="ams",Z="accent-token",C="bin",l0="close",ie="inner",I="mathord",t0="op-token",p0="open",Ve="punct",p="rel",R0="spacing",g="textord";i(o,u,p,"\u2261","\\equiv",!0);i(o,u,p,"\u227A","\\prec",!0);i(o,u,p,"\u227B","\\succ",!0);i(o,u,p,"\u223C","\\sim",!0);i(o,u,p,"\u22A5","\\perp");i(o,u,p,"\u2AAF","\\preceq",!0);i(o,u,p,"\u2AB0","\\succeq",!0);i(o,u,p,"\u2243","\\simeq",!0);i(o,u,p,"\u2223","\\mid",!0);i(o,u,p,"\u226A","\\ll",!0);i(o,u,p,"\u226B","\\gg",!0);i(o,u,p,"\u224D","\\asymp",!0);i(o,u,p,"\u2225","\\parallel");i(o,u,p,"\u22C8","\\bowtie",!0);i(o,u,p,"\u2323","\\smile",!0);i(o,u,p,"\u2291","\\sqsubseteq",!0);i(o,u,p,"\u2292","\\sqsupseteq",!0);i(o,u,p,"\u2250","\\doteq",!0);i(o,u,p,"\u2322","\\frown",!0);i(o,u,p,"\u220B","\\ni",!0);i(o,u,p,"\u221D","\\propto",!0);i(o,u,p,"\u22A2","\\vdash",!0);i(o,u,p,"\u22A3","\\dashv",!0);i(o,u,p,"\u220B","\\owns");i(o,u,Ve,".","\\ldotp");i(o,u,Ve,"\u22C5","\\cdotp");i(o,u,g,"#","\\#");i(k,u,g,"#","\\#");i(o,u,g,"&","\\&");i(k,u,g,"&","\\&");i(o,u,g,"\u2135","\\aleph",!0);i(o,u,g,"\u2200","\\forall",!0);i(o,u,g,"\u210F","\\hbar",!0);i(o,u,g,"\u2203","\\exists",!0);i(o,u,g,"\u2207","\\nabla",!0);i(o,u,g,"\u266D","\\flat",!0);i(o,u,g,"\u2113","\\ell",!0);i(o,u,g,"\u266E","\\natural",!0);i(o,u,g,"\u2663","\\clubsuit",!0);i(o,u,g,"\u2118","\\wp",!0);i(o,u,g,"\u266F","\\sharp",!0);i(o,u,g,"\u2662","\\diamondsuit",!0);i(o,u,g,"\u211C","\\Re",!0);i(o,u,g,"\u2661","\\heartsuit",!0);i(o,u,g,"\u2111","\\Im",!0);i(o,u,g,"\u2660","\\spadesuit",!0);i(o,u,g,"\xA7","\\S",!0);i(k,u,g,"\xA7","\\S");i(o,u,g,"\xB6","\\P",!0);i(k,u,g,"\xB6","\\P");i(o,u,g,"\u2020","\\dag");i(k,u,g,"\u2020","\\dag");i(k,u,g,"\u2020","\\textdagger");i(o,u,g,"\u2021","\\ddag");i(k,u,g,"\u2021","\\ddag");i(k,u,g,"\u2021","\\textdaggerdbl");i(o,u,l0,"\u23B1","\\rmoustache",!0);i(o,u,p0,"\u23B0","\\lmoustache",!0);i(o,u,l0,"\u27EF","\\rgroup",!0);i(o,u,p0,"\u27EE","\\lgroup",!0);i(o,u,C,"\u2213","\\mp",!0);i(o,u,C,"\u2296","\\ominus",!0);i(o,u,C,"\u228E","\\uplus",!0);i(o,u,C,"\u2293","\\sqcap",!0);i(o,u,C,"\u2217","\\ast");i(o,u,C,"\u2294","\\sqcup",!0);i(o,u,C,"\u25EF","\\bigcirc",!0);i(o,u,C,"\u2219","\\bullet",!0);i(o,u,C,"\u2021","\\ddagger");i(o,u,C,"\u2240","\\wr",!0);i(o,u,C,"\u2A3F","\\amalg");i(o,u,C,"&","\\And");i(o,u,p,"\u27F5","\\longleftarrow",!0);i(o,u,p,"\u21D0","\\Leftarrow",!0);i(o,u,p,"\u27F8","\\Longleftarrow",!0);i(o,u,p,"\u27F6","\\longrightarrow",!0);i(o,u,p,"\u21D2","\\Rightarrow",!0);i(o,u,p,"\u27F9","\\Longrightarrow",!0);i(o,u,p,"\u2194","\\leftrightarrow",!0);i(o,u,p,"\u27F7","\\longleftrightarrow",!0);i(o,u,p,"\u21D4","\\Leftrightarrow",!0);i(o,u,p,"\u27FA","\\Longleftrightarrow",!0);i(o,u,p,"\u21A6","\\mapsto",!0);i(o,u,p,"\u27FC","\\longmapsto",!0);i(o,u,p,"\u2197","\\nearrow",!0);i(o,u,p,"\u21A9","\\hookleftarrow",!0);i(o,u,p,"\u21AA","\\hookrightarrow",!0);i(o,u,p,"\u2198","\\searrow",!0);i(o,u,p,"\u21BC","\\leftharpoonup",!0);i(o,u,p,"\u21C0","\\rightharpoonup",!0);i(o,u,p,"\u2199","\\swarrow",!0);i(o,u,p,"\u21BD","\\leftharpoondown",!0);i(o,u,p,"\u21C1","\\rightharpoondown",!0);i(o,u,p,"\u2196","\\nwarrow",!0);i(o,u,p,"\u21CC","\\rightleftharpoons",!0);i(o,d,p,"\u226E","\\nless",!0);i(o,d,p,"\uE010","\\@nleqslant");i(o,d,p,"\uE011","\\@nleqq");i(o,d,p,"\u2A87","\\lneq",!0);i(o,d,p,"\u2268","\\lneqq",!0);i(o,d,p,"\uE00C","\\@lvertneqq");i(o,d,p,"\u22E6","\\lnsim",!0);i(o,d,p,"\u2A89","\\lnapprox",!0);i(o,d,p,"\u2280","\\nprec",!0);i(o,d,p,"\u22E0","\\npreceq",!0);i(o,d,p,"\u22E8","\\precnsim",!0);i(o,d,p,"\u2AB9","\\precnapprox",!0);i(o,d,p,"\u2241","\\nsim",!0);i(o,d,p,"\uE006","\\@nshortmid");i(o,d,p,"\u2224","\\nmid",!0);i(o,d,p,"\u22AC","\\nvdash",!0);i(o,d,p,"\u22AD","\\nvDash",!0);i(o,d,p,"\u22EA","\\ntriangleleft");i(o,d,p,"\u22EC","\\ntrianglelefteq",!0);i(o,d,p,"\u228A","\\subsetneq",!0);i(o,d,p,"\uE01A","\\@varsubsetneq");i(o,d,p,"\u2ACB","\\subsetneqq",!0);i(o,d,p,"\uE017","\\@varsubsetneqq");i(o,d,p,"\u226F","\\ngtr",!0);i(o,d,p,"\uE00F","\\@ngeqslant");i(o,d,p,"\uE00E","\\@ngeqq");i(o,d,p,"\u2A88","\\gneq",!0);i(o,d,p,"\u2269","\\gneqq",!0);i(o,d,p,"\uE00D","\\@gvertneqq");i(o,d,p,"\u22E7","\\gnsim",!0);i(o,d,p,"\u2A8A","\\gnapprox",!0);i(o,d,p,"\u2281","\\nsucc",!0);i(o,d,p,"\u22E1","\\nsucceq",!0);i(o,d,p,"\u22E9","\\succnsim",!0);i(o,d,p,"\u2ABA","\\succnapprox",!0);i(o,d,p,"\u2246","\\ncong",!0);i(o,d,p,"\uE007","\\@nshortparallel");i(o,d,p,"\u2226","\\nparallel",!0);i(o,d,p,"\u22AF","\\nVDash",!0);i(o,d,p,"\u22EB","\\ntriangleright");i(o,d,p,"\u22ED","\\ntrianglerighteq",!0);i(o,d,p,"\uE018","\\@nsupseteqq");i(o,d,p,"\u228B","\\supsetneq",!0);i(o,d,p,"\uE01B","\\@varsupsetneq");i(o,d,p,"\u2ACC","\\supsetneqq",!0);i(o,d,p,"\uE019","\\@varsupsetneqq");i(o,d,p,"\u22AE","\\nVdash",!0);i(o,d,p,"\u2AB5","\\precneqq",!0);i(o,d,p,"\u2AB6","\\succneqq",!0);i(o,d,p,"\uE016","\\@nsubseteqq");i(o,d,C,"\u22B4","\\unlhd");i(o,d,C,"\u22B5","\\unrhd");i(o,d,p,"\u219A","\\nleftarrow",!0);i(o,d,p,"\u219B","\\nrightarrow",!0);i(o,d,p,"\u21CD","\\nLeftarrow",!0);i(o,d,p,"\u21CF","\\nRightarrow",!0);i(o,d,p,"\u21AE","\\nleftrightarrow",!0);i(o,d,p,"\u21CE","\\nLeftrightarrow",!0);i(o,d,p,"\u25B3","\\vartriangle");i(o,d,g,"\u210F","\\hslash");i(o,d,g,"\u25BD","\\triangledown");i(o,d,g,"\u25CA","\\lozenge");i(o,d,g,"\u24C8","\\circledS");i(o,d,g,"\xAE","\\circledR");i(k,d,g,"\xAE","\\circledR");i(o,d,g,"\u2221","\\measuredangle",!0);i(o,d,g,"\u2204","\\nexists");i(o,d,g,"\u2127","\\mho");i(o,d,g,"\u2132","\\Finv",!0);i(o,d,g,"\u2141","\\Game",!0);i(o,d,g,"\u2035","\\backprime");i(o,d,g,"\u25B2","\\blacktriangle");i(o,d,g,"\u25BC","\\blacktriangledown");i(o,d,g,"\u25A0","\\blacksquare");i(o,d,g,"\u29EB","\\blacklozenge");i(o,d,g,"\u2605","\\bigstar");i(o,d,g,"\u2222","\\sphericalangle",!0);i(o,d,g,"\u2201","\\complement",!0);i(o,d,g,"\xF0","\\eth",!0);i(k,u,g,"\xF0","\xF0");i(o,d,g,"\u2571","\\diagup");i(o,d,g,"\u2572","\\diagdown");i(o,d,g,"\u25A1","\\square");i(o,d,g,"\u25A1","\\Box");i(o,d,g,"\u25CA","\\Diamond");i(o,d,g,"\xA5","\\yen",!0);i(k,d,g,"\xA5","\\yen",!0);i(o,d,g,"\u2713","\\checkmark",!0);i(k,d,g,"\u2713","\\checkmark");i(o,d,g,"\u2136","\\beth",!0);i(o,d,g,"\u2138","\\daleth",!0);i(o,d,g,"\u2137","\\gimel",!0);i(o,d,g,"\u03DD","\\digamma",!0);i(o,d,g,"\u03F0","\\varkappa");i(o,d,p0,"\u250C","\\@ulcorner",!0);i(o,d,l0,"\u2510","\\@urcorner",!0);i(o,d,p0,"\u2514","\\@llcorner",!0);i(o,d,l0,"\u2518","\\@lrcorner",!0);i(o,d,p,"\u2266","\\leqq",!0);i(o,d,p,"\u2A7D","\\leqslant",!0);i(o,d,p,"\u2A95","\\eqslantless",!0);i(o,d,p,"\u2272","\\lesssim",!0);i(o,d,p,"\u2A85","\\lessapprox",!0);i(o,d,p,"\u224A","\\approxeq",!0);i(o,d,C,"\u22D6","\\lessdot");i(o,d,p,"\u22D8","\\lll",!0);i(o,d,p,"\u2276","\\lessgtr",!0);i(o,d,p,"\u22DA","\\lesseqgtr",!0);i(o,d,p,"\u2A8B","\\lesseqqgtr",!0);i(o,d,p,"\u2251","\\doteqdot");i(o,d,p,"\u2253","\\risingdotseq",!0);i(o,d,p,"\u2252","\\fallingdotseq",!0);i(o,d,p,"\u223D","\\backsim",!0);i(o,d,p,"\u22CD","\\backsimeq",!0);i(o,d,p,"\u2AC5","\\subseteqq",!0);i(o,d,p,"\u22D0","\\Subset",!0);i(o,d,p,"\u228F","\\sqsubset",!0);i(o,d,p,"\u227C","\\preccurlyeq",!0);i(o,d,p,"\u22DE","\\curlyeqprec",!0);i(o,d,p,"\u227E","\\precsim",!0);i(o,d,p,"\u2AB7","\\precapprox",!0);i(o,d,p,"\u22B2","\\vartriangleleft");i(o,d,p,"\u22B4","\\trianglelefteq");i(o,d,p,"\u22A8","\\vDash",!0);i(o,d,p,"\u22AA","\\Vvdash",!0);i(o,d,p,"\u2323","\\smallsmile");i(o,d,p,"\u2322","\\smallfrown");i(o,d,p,"\u224F","\\bumpeq",!0);i(o,d,p,"\u224E","\\Bumpeq",!0);i(o,d,p,"\u2267","\\geqq",!0);i(o,d,p,"\u2A7E","\\geqslant",!0);i(o,d,p,"\u2A96","\\eqslantgtr",!0);i(o,d,p,"\u2273","\\gtrsim",!0);i(o,d,p,"\u2A86","\\gtrapprox",!0);i(o,d,C,"\u22D7","\\gtrdot");i(o,d,p,"\u22D9","\\ggg",!0);i(o,d,p,"\u2277","\\gtrless",!0);i(o,d,p,"\u22DB","\\gtreqless",!0);i(o,d,p,"\u2A8C","\\gtreqqless",!0);i(o,d,p,"\u2256","\\eqcirc",!0);i(o,d,p,"\u2257","\\circeq",!0);i(o,d,p,"\u225C","\\triangleq",!0);i(o,d,p,"\u223C","\\thicksim");i(o,d,p,"\u2248","\\thickapprox");i(o,d,p,"\u2AC6","\\supseteqq",!0);i(o,d,p,"\u22D1","\\Supset",!0);i(o,d,p,"\u2290","\\sqsupset",!0);i(o,d,p,"\u227D","\\succcurlyeq",!0);i(o,d,p,"\u22DF","\\curlyeqsucc",!0);i(o,d,p,"\u227F","\\succsim",!0);i(o,d,p,"\u2AB8","\\succapprox",!0);i(o,d,p,"\u22B3","\\vartriangleright");i(o,d,p,"\u22B5","\\trianglerighteq");i(o,d,p,"\u22A9","\\Vdash",!0);i(o,d,p,"\u2223","\\shortmid");i(o,d,p,"\u2225","\\shortparallel");i(o,d,p,"\u226C","\\between",!0);i(o,d,p,"\u22D4","\\pitchfork",!0);i(o,d,p,"\u221D","\\varpropto");i(o,d,p,"\u25C0","\\blacktriangleleft");i(o,d,p,"\u2234","\\therefore",!0);i(o,d,p,"\u220D","\\backepsilon");i(o,d,p,"\u25B6","\\blacktriangleright");i(o,d,p,"\u2235","\\because",!0);i(o,d,p,"\u22D8","\\llless");i(o,d,p,"\u22D9","\\gggtr");i(o,d,C,"\u22B2","\\lhd");i(o,d,C,"\u22B3","\\rhd");i(o,d,p,"\u2242","\\eqsim",!0);i(o,u,p,"\u22C8","\\Join");i(o,d,p,"\u2251","\\Doteq",!0);i(o,d,C,"\u2214","\\dotplus",!0);i(o,d,C,"\u2216","\\smallsetminus");i(o,d,C,"\u22D2","\\Cap",!0);i(o,d,C,"\u22D3","\\Cup",!0);i(o,d,C,"\u2A5E","\\doublebarwedge",!0);i(o,d,C,"\u229F","\\boxminus",!0);i(o,d,C,"\u229E","\\boxplus",!0);i(o,d,C,"\u22C7","\\divideontimes",!0);i(o,d,C,"\u22C9","\\ltimes",!0);i(o,d,C,"\u22CA","\\rtimes",!0);i(o,d,C,"\u22CB","\\leftthreetimes",!0);i(o,d,C,"\u22CC","\\rightthreetimes",!0);i(o,d,C,"\u22CF","\\curlywedge",!0);i(o,d,C,"\u22CE","\\curlyvee",!0);i(o,d,C,"\u229D","\\circleddash",!0);i(o,d,C,"\u229B","\\circledast",!0);i(o,d,C,"\u22C5","\\centerdot");i(o,d,C,"\u22BA","\\intercal",!0);i(o,d,C,"\u22D2","\\doublecap");i(o,d,C,"\u22D3","\\doublecup");i(o,d,C,"\u22A0","\\boxtimes",!0);i(o,d,p,"\u21E2","\\dashrightarrow",!0);i(o,d,p,"\u21E0","\\dashleftarrow",!0);i(o,d,p,"\u21C7","\\leftleftarrows",!0);i(o,d,p,"\u21C6","\\leftrightarrows",!0);i(o,d,p,"\u21DA","\\Lleftarrow",!0);i(o,d,p,"\u219E","\\twoheadleftarrow",!0);i(o,d,p,"\u21A2","\\leftarrowtail",!0);i(o,d,p,"\u21AB","\\looparrowleft",!0);i(o,d,p,"\u21CB","\\leftrightharpoons",!0);i(o,d,p,"\u21B6","\\curvearrowleft",!0);i(o,d,p,"\u21BA","\\circlearrowleft",!0);i(o,d,p,"\u21B0","\\Lsh",!0);i(o,d,p,"\u21C8","\\upuparrows",!0);i(o,d,p,"\u21BF","\\upharpoonleft",!0);i(o,d,p,"\u21C3","\\downharpoonleft",!0);i(o,u,p,"\u22B6","\\origof",!0);i(o,u,p,"\u22B7","\\imageof",!0);i(o,d,p,"\u22B8","\\multimap",!0);i(o,d,p,"\u21AD","\\leftrightsquigarrow",!0);i(o,d,p,"\u21C9","\\rightrightarrows",!0);i(o,d,p,"\u21C4","\\rightleftarrows",!0);i(o,d,p,"\u21A0","\\twoheadrightarrow",!0);i(o,d,p,"\u21A3","\\rightarrowtail",!0);i(o,d,p,"\u21AC","\\looparrowright",!0);i(o,d,p,"\u21B7","\\curvearrowright",!0);i(o,d,p,"\u21BB","\\circlearrowright",!0);i(o,d,p,"\u21B1","\\Rsh",!0);i(o,d,p,"\u21CA","\\downdownarrows",!0);i(o,d,p,"\u21BE","\\upharpoonright",!0);i(o,d,p,"\u21C2","\\downharpoonright",!0);i(o,d,p,"\u21DD","\\rightsquigarrow",!0);i(o,d,p,"\u21DD","\\leadsto");i(o,d,p,"\u21DB","\\Rrightarrow",!0);i(o,d,p,"\u21BE","\\restriction");i(o,u,g,"\u2018","`");i(o,u,g,"$","\\$");i(k,u,g,"$","\\$");i(k,u,g,"$","\\textdollar");i(o,u,g,"%","\\%");i(k,u,g,"%","\\%");i(o,u,g,"_","\\_");i(k,u,g,"_","\\_");i(k,u,g,"_","\\textunderscore");i(o,u,g,"\u2220","\\angle",!0);i(o,u,g,"\u221E","\\infty",!0);i(o,u,g,"\u2032","\\prime");i(o,u,g,"\u25B3","\\triangle");i(o,u,g,"\u0393","\\Gamma",!0);i(o,u,g,"\u0394","\\Delta",!0);i(o,u,g,"\u0398","\\Theta",!0);i(o,u,g,"\u039B","\\Lambda",!0);i(o,u,g,"\u039E","\\Xi",!0);i(o,u,g,"\u03A0","\\Pi",!0);i(o,u,g,"\u03A3","\\Sigma",!0);i(o,u,g,"\u03A5","\\Upsilon",!0);i(o,u,g,"\u03A6","\\Phi",!0);i(o,u,g,"\u03A8","\\Psi",!0);i(o,u,g,"\u03A9","\\Omega",!0);i(o,u,g,"A","\u0391");i(o,u,g,"B","\u0392");i(o,u,g,"E","\u0395");i(o,u,g,"Z","\u0396");i(o,u,g,"H","\u0397");i(o,u,g,"I","\u0399");i(o,u,g,"K","\u039A");i(o,u,g,"M","\u039C");i(o,u,g,"N","\u039D");i(o,u,g,"O","\u039F");i(o,u,g,"P","\u03A1");i(o,u,g,"T","\u03A4");i(o,u,g,"X","\u03A7");i(o,u,g,"\xAC","\\neg",!0);i(o,u,g,"\xAC","\\lnot");i(o,u,g,"\u22A4","\\top");i(o,u,g,"\u22A5","\\bot");i(o,u,g,"\u2205","\\emptyset");i(o,d,g,"\u2205","\\varnothing");i(o,u,I,"\u03B1","\\alpha",!0);i(o,u,I,"\u03B2","\\beta",!0);i(o,u,I,"\u03B3","\\gamma",!0);i(o,u,I,"\u03B4","\\delta",!0);i(o,u,I,"\u03F5","\\epsilon",!0);i(o,u,I,"\u03B6","\\zeta",!0);i(o,u,I,"\u03B7","\\eta",!0);i(o,u,I,"\u03B8","\\theta",!0);i(o,u,I,"\u03B9","\\iota",!0);i(o,u,I,"\u03BA","\\kappa",!0);i(o,u,I,"\u03BB","\\lambda",!0);i(o,u,I,"\u03BC","\\mu",!0);i(o,u,I,"\u03BD","\\nu",!0);i(o,u,I,"\u03BE","\\xi",!0);i(o,u,I,"\u03BF","\\omicron",!0);i(o,u,I,"\u03C0","\\pi",!0);i(o,u,I,"\u03C1","\\rho",!0);i(o,u,I,"\u03C3","\\sigma",!0);i(o,u,I,"\u03C4","\\tau",!0);i(o,u,I,"\u03C5","\\upsilon",!0);i(o,u,I,"\u03D5","\\phi",!0);i(o,u,I,"\u03C7","\\chi",!0);i(o,u,I,"\u03C8","\\psi",!0);i(o,u,I,"\u03C9","\\omega",!0);i(o,u,I,"\u03B5","\\varepsilon",!0);i(o,u,I,"\u03D1","\\vartheta",!0);i(o,u,I,"\u03D6","\\varpi",!0);i(o,u,I,"\u03F1","\\varrho",!0);i(o,u,I,"\u03C2","\\varsigma",!0);i(o,u,I,"\u03C6","\\varphi",!0);i(o,u,C,"\u2217","*",!0);i(o,u,C,"+","+");i(o,u,C,"\u2212","-",!0);i(o,u,C,"\u22C5","\\cdot",!0);i(o,u,C,"\u2218","\\circ",!0);i(o,u,C,"\xF7","\\div",!0);i(o,u,C,"\xB1","\\pm",!0);i(o,u,C,"\xD7","\\times",!0);i(o,u,C,"\u2229","\\cap",!0);i(o,u,C,"\u222A","\\cup",!0);i(o,u,C,"\u2216","\\setminus",!0);i(o,u,C,"\u2227","\\land");i(o,u,C,"\u2228","\\lor");i(o,u,C,"\u2227","\\wedge",!0);i(o,u,C,"\u2228","\\vee",!0);i(o,u,g,"\u221A","\\surd");i(o,u,p0,"\u27E8","\\langle",!0);i(o,u,p0,"\u2223","\\lvert");i(o,u,p0,"\u2225","\\lVert");i(o,u,l0,"?","?");i(o,u,l0,"!","!");i(o,u,l0,"\u27E9","\\rangle",!0);i(o,u,l0,"\u2223","\\rvert");i(o,u,l0,"\u2225","\\rVert");i(o,u,p,"=","=");i(o,u,p,":",":");i(o,u,p,"\u2248","\\approx",!0);i(o,u,p,"\u2245","\\cong",!0);i(o,u,p,"\u2265","\\ge");i(o,u,p,"\u2265","\\geq",!0);i(o,u,p,"\u2190","\\gets");i(o,u,p,">","\\gt",!0);i(o,u,p,"\u2208","\\in",!0);i(o,u,p,"\uE020","\\@not");i(o,u,p,"\u2282","\\subset",!0);i(o,u,p,"\u2283","\\supset",!0);i(o,u,p,"\u2286","\\subseteq",!0);i(o,u,p,"\u2287","\\supseteq",!0);i(o,d,p,"\u2288","\\nsubseteq",!0);i(o,d,p,"\u2289","\\nsupseteq",!0);i(o,u,p,"\u22A8","\\models");i(o,u,p,"\u2190","\\leftarrow",!0);i(o,u,p,"\u2264","\\le");i(o,u,p,"\u2264","\\leq",!0);i(o,u,p,"<","\\lt",!0);i(o,u,p,"\u2192","\\rightarrow",!0);i(o,u,p,"\u2192","\\to");i(o,d,p,"\u2271","\\ngeq",!0);i(o,d,p,"\u2270","\\nleq",!0);i(o,u,R0,"\xA0","\\ ");i(o,u,R0,"\xA0","\\space");i(o,u,R0,"\xA0","\\nobreakspace");i(k,u,R0,"\xA0","\\ ");i(k,u,R0,"\xA0"," ");i(k,u,R0,"\xA0","\\space");i(k,u,R0,"\xA0","\\nobreakspace");i(o,u,R0,null,"\\nobreak");i(o,u,R0,null,"\\allowbreak");i(o,u,Ve,",",",");i(o,u,Ve,";",";");i(o,d,C,"\u22BC","\\barwedge",!0);i(o,d,C,"\u22BB","\\veebar",!0);i(o,u,C,"\u2299","\\odot",!0);i(o,u,C,"\u2295","\\oplus",!0);i(o,u,C,"\u2297","\\otimes",!0);i(o,u,g,"\u2202","\\partial",!0);i(o,u,C,"\u2298","\\oslash",!0);i(o,d,C,"\u229A","\\circledcirc",!0);i(o,d,C,"\u22A1","\\boxdot",!0);i(o,u,C,"\u25B3","\\bigtriangleup");i(o,u,C,"\u25BD","\\bigtriangledown");i(o,u,C,"\u2020","\\dagger");i(o,u,C,"\u22C4","\\diamond");i(o,u,C,"\u22C6","\\star");i(o,u,C,"\u25C3","\\triangleleft");i(o,u,C,"\u25B9","\\triangleright");i(o,u,p0,"{","\\{");i(k,u,g,"{","\\{");i(k,u,g,"{","\\textbraceleft");i(o,u,l0,"}","\\}");i(k,u,g,"}","\\}");i(k,u,g,"}","\\textbraceright");i(o,u,p0,"{","\\lbrace");i(o,u,l0,"}","\\rbrace");i(o,u,p0,"[","\\lbrack",!0);i(k,u,g,"[","\\lbrack",!0);i(o,u,l0,"]","\\rbrack",!0);i(k,u,g,"]","\\rbrack",!0);i(o,u,p0,"(","\\lparen",!0);i(o,u,l0,")","\\rparen",!0);i(k,u,g,"<","\\textless",!0);i(k,u,g,">","\\textgreater",!0);i(o,u,p0,"\u230A","\\lfloor",!0);i(o,u,l0,"\u230B","\\rfloor",!0);i(o,u,p0,"\u2308","\\lceil",!0);i(o,u,l0,"\u2309","\\rceil",!0);i(o,u,g,"\\","\\backslash");i(o,u,g,"\u2223","|");i(o,u,g,"\u2223","\\vert");i(k,u,g,"|","\\textbar",!0);i(o,u,g,"\u2225","\\|");i(o,u,g,"\u2225","\\Vert");i(k,u,g,"\u2225","\\textbardbl");i(k,u,g,"~","\\textasciitilde");i(k,u,g,"\\","\\textbackslash");i(k,u,g,"^","\\textasciicircum");i(o,u,p,"\u2191","\\uparrow",!0);i(o,u,p,"\u21D1","\\Uparrow",!0);i(o,u,p,"\u2193","\\downarrow",!0);i(o,u,p,"\u21D3","\\Downarrow",!0);i(o,u,p,"\u2195","\\updownarrow",!0);i(o,u,p,"\u21D5","\\Updownarrow",!0);i(o,u,t0,"\u2210","\\coprod");i(o,u,t0,"\u22C1","\\bigvee");i(o,u,t0,"\u22C0","\\bigwedge");i(o,u,t0,"\u2A04","\\biguplus");i(o,u,t0,"\u22C2","\\bigcap");i(o,u,t0,"\u22C3","\\bigcup");i(o,u,t0,"\u222B","\\int");i(o,u,t0,"\u222B","\\intop");i(o,u,t0,"\u222C","\\iint");i(o,u,t0,"\u222D","\\iiint");i(o,u,t0,"\u220F","\\prod");i(o,u,t0,"\u2211","\\sum");i(o,u,t0,"\u2A02","\\bigotimes");i(o,u,t0,"\u2A01","\\bigoplus");i(o,u,t0,"\u2A00","\\bigodot");i(o,u,t0,"\u222E","\\oint");i(o,u,t0,"\u222F","\\oiint");i(o,u,t0,"\u2230","\\oiiint");i(o,u,t0,"\u2A06","\\bigsqcup");i(o,u,t0,"\u222B","\\smallint");i(k,u,ie,"\u2026","\\textellipsis");i(o,u,ie,"\u2026","\\mathellipsis");i(k,u,ie,"\u2026","\\ldots",!0);i(o,u,ie,"\u2026","\\ldots",!0);i(o,u,ie,"\u22EF","\\@cdots",!0);i(o,u,ie,"\u22F1","\\ddots",!0);i(o,u,g,"\u22EE","\\varvdots");i(k,u,g,"\u22EE","\\varvdots");i(o,u,Z,"\u02CA","\\acute");i(o,u,Z,"\u02CB","\\grave");i(o,u,Z,"\xA8","\\ddot");i(o,u,Z,"~","\\tilde");i(o,u,Z,"\u02C9","\\bar");i(o,u,Z,"\u02D8","\\breve");i(o,u,Z,"\u02C7","\\check");i(o,u,Z,"^","\\hat");i(o,u,Z,"\u20D7","\\vec");i(o,u,Z,"\u02D9","\\dot");i(o,u,Z,"\u02DA","\\mathring");i(o,u,I,"\uE131","\\@imath");i(o,u,I,"\uE237","\\@jmath");i(o,u,g,"\u0131","\u0131");i(o,u,g,"\u0237","\u0237");i(k,u,g,"\u0131","\\i",!0);i(k,u,g,"\u0237","\\j",!0);i(k,u,g,"\xDF","\\ss",!0);i(k,u,g,"\xE6","\\ae",!0);i(k,u,g,"\u0153","\\oe",!0);i(k,u,g,"\xF8","\\o",!0);i(k,u,g,"\xC6","\\AE",!0);i(k,u,g,"\u0152","\\OE",!0);i(k,u,g,"\xD8","\\O",!0);i(k,u,Z,"\u02CA","\\'");i(k,u,Z,"\u02CB","\\`");i(k,u,Z,"\u02C6","\\^");i(k,u,Z,"\u02DC","\\~");i(k,u,Z,"\u02C9","\\=");i(k,u,Z,"\u02D8","\\u");i(k,u,Z,"\u02D9","\\.");i(k,u,Z,"\xB8","\\c");i(k,u,Z,"\u02DA","\\r");i(k,u,Z,"\u02C7","\\v");i(k,u,Z,"\xA8",'\\"');i(k,u,Z,"\u02DD","\\H");i(k,u,Z,"\u25EF","\\textcircled");var Cr={"--":!0,"---":!0,"``":!0,"''":!0};i(k,u,g,"\u2013","--",!0);i(k,u,g,"\u2013","\\textendash");i(k,u,g,"\u2014","---",!0);i(k,u,g,"\u2014","\\textemdash");i(k,u,g,"\u2018","`",!0);i(k,u,g,"\u2018","\\textquoteleft");i(k,u,g,"\u2019","'",!0);i(k,u,g,"\u2019","\\textquoteright");i(k,u,g,"\u201C","``",!0);i(k,u,g,"\u201C","\\textquotedblleft");i(k,u,g,"\u201D","''",!0);i(k,u,g,"\u201D","\\textquotedblright");i(o,u,g,"\xB0","\\degree",!0);i(k,u,g,"\xB0","\\degree");i(k,u,g,"\xB0","\\textdegree",!0);i(o,u,g,"\xA3","\\pounds");i(o,u,g,"\xA3","\\mathsterling",!0);i(k,u,g,"\xA3","\\pounds");i(k,u,g,"\xA3","\\textsterling",!0);i(o,d,g,"\u2720","\\maltese");i(k,d,g,"\u2720","\\maltese");var Qt='0123456789/@."';for(Me=0;Me0)return w0(s,f,n,t,l.concat(v));if(c){var b,x;if(c==="boldsymbol"){var w=u1(s,n,t,l,a);b=w.fontName,x=[w.fontClass]}else h?(b=Or[c].fontName,x=[c]):(b=Be(c,t.fontWeight,t.fontShape),x=[c,t.fontWeight,t.fontShape]);if(Ue(s,b,n).metrics)return w0(s,b,n,t,l.concat(x));if(Cr.hasOwnProperty(s)&&b.slice(0,10)==="Typewriter"){for(var A=[],q=0;q{if(G0(r.classes)!==G0(e.classes)||r.skew!==e.skew||r.maxFontSize!==e.maxFontSize)return!1;if(r.classes.length===1){var t=r.classes[0];if(t==="mbin"||t==="mord")return!1}for(var a in r.style)if(r.style.hasOwnProperty(a)&&r.style[a]!==e.style[a])return!1;for(var n in e.style)if(e.style.hasOwnProperty(n)&&r.style[n]!==e.style[n])return!1;return!0},m1=r=>{for(var e=0;et&&(t=l.height),l.depth>a&&(a=l.depth),l.maxFontSize>n&&(n=l.maxFontSize)}e.height=t,e.depth=a,e.maxFontSize=n},h0=function(e,t,a,n){var s=new Z0(e,t,a,n);return qt(s),s},_r=(r,e,t,a)=>new Z0(r,e,t,a),d1=function(e,t,a){var n=h0([e],[],t);return n.height=Math.max(a||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=T(n.height),n.maxFontSize=1,n},p1=function(e,t,a,n){var s=new fe(e,t,a,n);return qt(s),s},Nr=function(e){var t=new Y0(e);return qt(t),t},f1=function(e,t){return e instanceof Y0?h0([],[e],t):e},v1=function(e){if(e.positionType==="individualShift"){for(var t=e.children,a=[t[0]],n=-t[0].shift-t[0].elem.depth,s=n,l=1;l{var t=h0(["mspace"],[],e),a=Q(r,e);return t.style.marginRight=T(a),t},Be=function(e,t,a){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}var s;return t==="textbf"&&a==="textit"?s="BoldItalic":t==="textbf"?s="Bold":t==="textit"?s="Italic":s="Regular",n+"-"+s},Or={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ir={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},y1=function(e,t){var[a,n,s]=Ir[e],l=new A0(a),h=new S0([l],{width:T(n),height:T(s),style:"width:"+T(n),viewBox:"0 0 "+1e3*n+" "+1e3*s,preserveAspectRatio:"xMinYMin"}),c=_r(["overlay"],[h],t);return c.height=s,c.style.height=T(s),c.style.width=T(n),c},y={fontMap:Or,makeSymbol:w0,mathsym:l1,makeSpan:h0,makeSvgSpan:_r,makeLineSpan:d1,makeAnchor:p1,makeFragment:Nr,wrapFragment:f1,makeVList:g1,makeOrd:h1,makeGlue:b1,staticSvg:y1,svgData:Ir,tryCombineChars:m1},J={number:3,unit:"mu"},W0={number:4,unit:"mu"},_0={number:5,unit:"mu"},x1={mord:{mop:J,mbin:W0,mrel:_0,minner:J},mop:{mord:J,mop:J,mrel:_0,minner:J},mbin:{mord:W0,mop:W0,mopen:W0,minner:W0},mrel:{mord:_0,mop:_0,mopen:_0,minner:_0},mopen:{},mclose:{mop:J,mbin:W0,mrel:_0,minner:J},mpunct:{mord:J,mop:J,mrel:_0,mopen:J,mclose:J,mpunct:J,minner:J},minner:{mord:J,mop:J,mbin:W0,mrel:_0,mopen:J,mpunct:J,minner:J}},w1={mord:{mop:J},mop:{mord:J,mop:J},mbin:{},mrel:{},mopen:{},mclose:{mop:J},mpunct:{},minner:{mop:J}},Er={},Le={},Fe={};function B(r){for(var{type:e,names:t,props:a,handler:n,htmlBuilder:s,mathmlBuilder:l}=r,h={type:e,numArgs:a.numArgs,argTypes:a.argTypes,allowedInArgument:!!a.allowedInArgument,allowedInText:!!a.allowedInText,allowedInMath:a.allowedInMath===void 0?!0:a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,primitive:!!a.primitive,handler:n},c=0;c{var _=q.classes[0],D=A.classes[0];_==="mbin"&&O.contains(k1,D)?q.classes[0]="mord":D==="mbin"&&O.contains(S1,_)&&(A.classes[0]="mord")},{node:b},x,w),rr(s,(A,q)=>{var _=bt(q),D=bt(A),N=_&&D?A.hasClass("mtight")?w1[_][D]:x1[_][D]:null;if(N)return y.makeGlue(N,f)},{node:b},x,w),s},rr=function r(e,t,a,n,s){n&&e.push(n);for(var l=0;lx=>{e.splice(b+1,0,x),l++})(l)}n&&e.pop()},Rr=function(e){return e instanceof Y0||e instanceof fe||e instanceof Z0&&e.hasClass("enclosing")?e:null},A1=function r(e,t){var a=Rr(e);if(a){var n=a.children;if(n.length){if(t==="right")return r(n[n.length-1],"right");if(t==="left")return r(n[0],"left")}}return e},bt=function(e,t){return e?(t&&(e=A1(e,t)),z1[e.classes[0]]||null):null},ge=function(e,t){var a=["nulldelimiter"].concat(e.baseSizingClasses());return I0(t.concat(a))},G=function(e,t,a){if(!e)return I0();if(Le[e.type]){var n=Le[e.type](e,t);if(a&&t.size!==a.size){n=I0(t.sizingClasses(a),[n],t);var s=t.sizeMultiplier/a.sizeMultiplier;n.height*=s,n.depth*=s}return n}else throw new z("Got group of unknown type: '"+e.type+"'")};function De(r,e){var t=I0(["base"],r,e),a=I0(["strut"]);return a.style.height=T(t.height+t.depth),t.depth&&(a.style.verticalAlign=T(-t.depth)),t.children.unshift(a),t}function yt(r,e){var t=null;r.length===1&&r[0].type==="tag"&&(t=r[0].tag,r=r[0].body);var a=a0(r,e,"root"),n;a.length===2&&a[1].hasClass("tag")&&(n=a.pop());for(var s=[],l=[],h=0;h0&&(s.push(De(l,e)),l=[]),s.push(a[h]));l.length>0&&s.push(De(l,e));var f;t?(f=De(a0(t,e,!0)),f.classes=["tag"],s.push(f)):n&&s.push(n);var v=I0(["katex-html"],s);if(v.setAttribute("aria-hidden","true"),f){var b=f.children[0];b.style.height=T(v.height+v.depth),v.depth&&(b.style.verticalAlign=T(-v.depth))}return v}function $r(r){return new Y0(r)}var s0=class{constructor(e,t,a){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=a||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=G0(this.classes));for(var a=0;a0&&(e+=' class ="'+O.escape(G0(this.classes))+'"'),e+=">";for(var a=0;a",e}toText(){return this.children.map(e=>e.toText()).join("")}},g0=class{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return O.escape(this.toText())}toText(){return this.text}},xt=class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",T(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},M={MathNode:s0,TextNode:g0,SpaceNode:xt,newDocumentFragment:$r},y0=function(e,t,a){return Y[t][e]&&Y[t][e].replace&&e.charCodeAt(0)!==55349&&!(Cr.hasOwnProperty(e)&&a&&(a.fontFamily&&a.fontFamily.slice(4,6)==="tt"||a.font&&a.font.slice(4,6)==="tt"))&&(e=Y[t][e].replace),new M.TextNode(e)},Bt=function(e){return e.length===1?e[0]:new M.MathNode("mrow",e)},Dt=function(e,t){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold";var a=t.font;if(!a||a==="mathnormal")return null;var n=e.mode;if(a==="mathit")return"italic";if(a==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(a==="mathbf")return"bold";if(a==="mathbb")return"double-struck";if(a==="mathsfit")return"sans-serif-italic";if(a==="mathfrak")return"fraktur";if(a==="mathscr"||a==="mathcal")return"script";if(a==="mathsf")return"sans-serif";if(a==="mathtt")return"monospace";var s=e.text;if(O.contains(["\\imath","\\jmath"],s))return null;Y[n][s]&&Y[n][s].replace&&(s=Y[n][s].replace);var l=y.fontMap[a].fontName;return Tt(s,l,n)?y.fontMap[a].variant:null};function nt(r){if(!r)return!1;if(r.type==="mi"&&r.children.length===1){var e=r.children[0];return e instanceof g0&&e.text==="."}else if(r.type==="mo"&&r.children.length===1&&r.getAttribute("separator")==="true"&&r.getAttribute("lspace")==="0em"&&r.getAttribute("rspace")==="0em"){var t=r.children[0];return t instanceof g0&&t.text===","}else return!1}var m0=function(e,t,a){if(e.length===1){var n=X(e[0],t);return a&&n instanceof s0&&n.type==="mo"&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var s=[],l,h=0;h=1&&(l.type==="mn"||nt(l))){var f=c.children[0];f instanceof s0&&f.type==="mn"&&(f.children=[...l.children,...f.children],s.pop())}else if(l.type==="mi"&&l.children.length===1){var v=l.children[0];if(v instanceof g0&&v.text==="\u0338"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var b=c.children[0];b instanceof g0&&b.text.length>0&&(b.text=b.text.slice(0,1)+"\u0338"+b.text.slice(1),s.pop())}}}s.push(c),l=c}return s},V0=function(e,t,a){return Bt(m0(e,t,a))},X=function(e,t){if(!e)return new M.MathNode("mrow");if(Fe[e.type]){var a=Fe[e.type](e,t);return a}else throw new z("Got group of unknown type: '"+e.type+"'")};function ar(r,e,t,a,n){var s=m0(r,t),l;s.length===1&&s[0]instanceof s0&&O.contains(["mrow","mtable"],s[0].type)?l=s[0]:l=new M.MathNode("mrow",s);var h=new M.MathNode("annotation",[new M.TextNode(e)]);h.setAttribute("encoding","application/x-tex");var c=new M.MathNode("semantics",[l,h]),f=new M.MathNode("math",[c]);f.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&f.setAttribute("display","block");var v=n?"katex":"katex-mathml";return y.makeSpan([v],[f])}var Lr=function(e){return new Re({style:e.displayMode?E.DISPLAY:E.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Fr=function(e,t){if(t.displayMode){var a=["katex-display"];t.leqno&&a.push("leqno"),t.fleqn&&a.push("fleqn"),e=y.makeSpan(a,[e])}return e},T1=function(e,t,a){var n=Lr(a),s;if(a.output==="mathml")return ar(e,t,n,a.displayMode,!0);if(a.output==="html"){var l=yt(e,n);s=y.makeSpan(["katex"],[l])}else{var h=ar(e,t,n,a.displayMode,!1),c=yt(e,n);s=y.makeSpan(["katex"],[h,c])}return Fr(s,a)},q1=function(e,t,a){var n=Lr(a),s=yt(e,n),l=y.makeSpan(["katex"],[s]);return Fr(l,a)},B1={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},D1=function(e){var t=new M.MathNode("mo",[new M.TextNode(B1[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},C1={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},_1=function(e){return e.type==="ordgroup"?e.body.length:1},N1=function(e,t){function a(){var h=4e5,c=e.label.slice(1);if(O.contains(["widehat","widecheck","widetilde","utilde"],c)){var f=e,v=_1(f.base),b,x,w;if(v>5)c==="widehat"||c==="widecheck"?(b=420,h=2364,w=.42,x=c+"4"):(b=312,h=2340,w=.34,x="tilde4");else{var A=[1,1,2,2,3,3][v];c==="widehat"||c==="widecheck"?(h=[0,1062,2364,2364,2364][A],b=[0,239,300,360,420][A],w=[0,.24,.3,.3,.36,.42][A],x=c+A):(h=[0,600,1033,2339,2340][A],b=[0,260,286,306,312][A],w=[0,.26,.286,.3,.306,.34][A],x="tilde"+A)}var q=new A0(x),_=new S0([q],{width:"100%",height:T(w),viewBox:"0 0 "+h+" "+b,preserveAspectRatio:"none"});return{span:y.makeSvgSpan([],[_],t),minWidth:0,height:w}}else{var D=[],N=C1[c],[$,H,F]=N,P=F/1e3,V=$.length,j,U;if(V===1){var D0=N[3];j=["hide-tail"],U=[D0]}else if(V===2)j=["halfarrow-left","halfarrow-right"],U=["xMinYMin","xMaxYMin"];else if(V===3)j=["brace-left","brace-center","brace-right"],U=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support `+V+" children.");for(var i0=0;i00&&(n.style.minWidth=T(s)),n},O1=function(e,t,a,n,s){var l,h=e.height+e.depth+a+n;if(/fbox|color|angl/.test(t)){if(l=y.makeSpan(["stretchy",t],[],s),t==="fbox"){var c=s.color&&s.getColor();c&&(l.style.borderColor=c)}}else{var f=[];/^[bx]cancel$/.test(t)&&f.push(new ve({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&f.push(new ve({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var v=new S0(f,{width:"100%",height:T(h)});l=y.makeSvgSpan([],[v],s)}return l.height=h,l.style.height=T(h),l},E0={encloseSpan:O1,mathMLnode:D1,svgSpan:N1};function L(r,e){if(!r||r.type!==e)throw new Error("Expected node of type "+e+", but got "+(r?"node of type "+r.type:String(r)));return r}function Ct(r){var e=Xe(r);if(!e)throw new Error("Expected node of symbol group type, but got "+(r?"node of type "+r.type:String(r)));return e}function Xe(r){return r&&(r.type==="atom"||s1.hasOwnProperty(r.type))?r:null}var _t=(r,e)=>{var t,a,n;r&&r.type==="supsub"?(a=L(r.base,"accent"),t=a.base,r.base=t,n=n1(G(r,e)),r.base=a):(a=L(r,"accent"),t=a.base);var s=G(t,e.havingCrampedStyle()),l=a.isShifty&&O.isCharacterBox(t),h=0;if(l){var c=O.getBaseElem(t),f=G(c,e.havingCrampedStyle());h=Jt(f).skew}var v=a.label==="\\c",b=v?s.height+s.depth:Math.min(s.height,e.fontMetrics().xHeight),x;if(a.isStretchy)x=E0.svgSpan(a,e),x=y.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"elem",elem:x,wrapperClasses:["svg-align"],wrapperStyle:h>0?{width:"calc(100% - "+T(2*h)+")",marginLeft:T(2*h)}:void 0}]},e);else{var w,A;a.label==="\\vec"?(w=y.staticSvg("vec",e),A=y.svgData.vec[1]):(w=y.makeOrd({mode:a.mode,text:a.label},e,"textord"),w=Jt(w),w.italic=0,A=w.width,v&&(b+=w.depth)),x=y.makeSpan(["accent-body"],[w]);var q=a.label==="\\textcircled";q&&(x.classes.push("accent-full"),b=s.height);var _=h;q||(_-=A/2),x.style.left=T(_),a.label==="\\textcircled"&&(x.style.top=".2em"),x=y.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:-b},{type:"elem",elem:x}]},e)}var D=y.makeSpan(["mord","accent"],[x],e);return n?(n.children[0]=D,n.height=Math.max(D.height,n.height),n.classes[0]="mord",n):D},Hr=(r,e)=>{var t=r.isStretchy?E0.mathMLnode(r.label):new M.MathNode("mo",[y0(r.label,r.mode)]),a=new M.MathNode("mover",[X(r.base,e),t]);return a.setAttribute("accent","true"),a},I1=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(r=>"\\"+r).join("|"));B({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(r,e)=>{var t=He(e[0]),a=!I1.test(r.funcName),n=!a||r.funcName==="\\widehat"||r.funcName==="\\widetilde"||r.funcName==="\\widecheck";return{type:"accent",mode:r.parser.mode,label:r.funcName,isStretchy:a,isShifty:n,base:t}},htmlBuilder:_t,mathmlBuilder:Hr});B({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(r,e)=>{var t=e[0],a=r.parser.mode;return a==="math"&&(r.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+r.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:r.funcName,isStretchy:!1,isShifty:!0,base:t}},htmlBuilder:_t,mathmlBuilder:Hr});B({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"accentUnder",mode:t.mode,label:a,base:n}},htmlBuilder:(r,e)=>{var t=G(r.base,e),a=E0.svgSpan(r,e),n=r.label==="\\utilde"?.12:0,s=y.makeVList({positionType:"top",positionData:t.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:t}]},e);return y.makeSpan(["mord","accentunder"],[s],e)},mathmlBuilder:(r,e)=>{var t=E0.mathMLnode(r.label),a=new M.MathNode("munder",[X(r.base,e),t]);return a.setAttribute("accentunder","true"),a}});var Ce=r=>{var e=new M.MathNode("mpadded",r?[r]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};B({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(r,e,t){var{parser:a,funcName:n}=r;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:t[0]}},htmlBuilder(r,e){var t=e.style,a=e.havingStyle(t.sup()),n=y.wrapFragment(G(r.body,a,e),e),s=r.label.slice(0,2)==="\\x"?"x":"cd";n.classes.push(s+"-arrow-pad");var l;r.below&&(a=e.havingStyle(t.sub()),l=y.wrapFragment(G(r.below,a,e),e),l.classes.push(s+"-arrow-pad"));var h=E0.svgSpan(r,e),c=-e.fontMetrics().axisHeight+.5*h.height,f=-e.fontMetrics().axisHeight-.5*h.height-.111;(n.depth>.25||r.label==="\\xleftequilibrium")&&(f-=n.depth);var v;if(l){var b=-e.fontMetrics().axisHeight+l.height+.5*h.height+.111;v=y.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:f},{type:"elem",elem:h,shift:c},{type:"elem",elem:l,shift:b}]},e)}else v=y.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:f},{type:"elem",elem:h,shift:c}]},e);return v.children[0].children[0].children[1].classes.push("svg-align"),y.makeSpan(["mrel","x-arrow"],[v],e)},mathmlBuilder(r,e){var t=E0.mathMLnode(r.label);t.setAttribute("minsize",r.label.charAt(0)==="x"?"1.75em":"3.0em");var a;if(r.body){var n=Ce(X(r.body,e));if(r.below){var s=Ce(X(r.below,e));a=new M.MathNode("munderover",[t,s,n])}else a=new M.MathNode("mover",[t,n])}else if(r.below){var l=Ce(X(r.below,e));a=new M.MathNode("munder",[t,l])}else a=Ce(),a=new M.MathNode("mover",[t,a]);return a}});var E1=y.makeSpan;function Pr(r,e){var t=a0(r.body,e,!0);return E1([r.mclass],t,e)}function Gr(r,e){var t,a=m0(r.body,e);return r.mclass==="minner"?t=new M.MathNode("mpadded",a):r.mclass==="mord"?r.isCharacterBox?(t=a[0],t.type="mi"):t=new M.MathNode("mi",a):(r.isCharacterBox?(t=a[0],t.type="mo"):t=new M.MathNode("mo",a),r.mclass==="mbin"?(t.attributes.lspace="0.22em",t.attributes.rspace="0.22em"):r.mclass==="mpunct"?(t.attributes.lspace="0em",t.attributes.rspace="0.17em"):r.mclass==="mopen"||r.mclass==="mclose"?(t.attributes.lspace="0em",t.attributes.rspace="0em"):r.mclass==="minner"&&(t.attributes.lspace="0.0556em",t.attributes.width="+0.1111em")),t}B({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"mclass",mode:t.mode,mclass:"m"+a.slice(5),body:e0(n),isCharacterBox:O.isCharacterBox(n)}},htmlBuilder:Pr,mathmlBuilder:Gr});var We=r=>{var e=r.type==="ordgroup"&&r.body.length?r.body[0]:r;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};B({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(r,e){var{parser:t}=r;return{type:"mclass",mode:t.mode,mclass:We(e[0]),body:e0(e[1]),isCharacterBox:O.isCharacterBox(e[1])}}});B({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(r,e){var{parser:t,funcName:a}=r,n=e[1],s=e[0],l;a!=="\\stackrel"?l=We(n):l="mrel";var h={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:a!=="\\stackrel",body:e0(n)},c={type:"supsub",mode:s.mode,base:h,sup:a==="\\underset"?null:s,sub:a==="\\underset"?s:null};return{type:"mclass",mode:t.mode,mclass:l,body:[c],isCharacterBox:O.isCharacterBox(c)}},htmlBuilder:Pr,mathmlBuilder:Gr});B({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"pmb",mode:t.mode,mclass:We(e[0]),body:e0(e[0])}},htmlBuilder(r,e){var t=a0(r.body,e,!0),a=y.makeSpan([r.mclass],t,e);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(r,e){var t=m0(r.body,e),a=new M.MathNode("mstyle",t);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var R1={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},nr=()=>({type:"styling",body:[],mode:"math",style:"display"}),ir=r=>r.type==="textord"&&r.text==="@",$1=(r,e)=>(r.type==="mathord"||r.type==="atom")&&r.text===e;function L1(r,e,t){var a=R1[r];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return t.callFunction(a,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var n=t.callFunction("\\\\cdleft",[e[0]],[]),s={type:"atom",text:a,mode:"math",family:"rel"},l=t.callFunction("\\Big",[s],[]),h=t.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[n,l,h]};return t.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return t.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var f={type:"textord",text:"\\Vert",mode:"math"};return t.callFunction("\\Big",[f],[])}default:return{type:"textord",text:" ",mode:"math"}}}function F1(r){var e=[];for(r.gullet.beginGroup(),r.gullet.macros.set("\\cr","\\\\\\relax"),r.gullet.beginGroup();;){e.push(r.parseExpression(!1,"\\\\")),r.gullet.endGroup(),r.gullet.beginGroup();var t=r.fetch().text;if(t==="&"||t==="\\\\")r.consume();else if(t==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new z("Expected \\\\ or \\cr or \\end",r.nextToken)}for(var a=[],n=[a],s=0;s-1))if("<>AV".indexOf(f)>-1)for(var b=0;b<2;b++){for(var x=!0,w=c+1;wAV=|." after @',l[c]);var A=L1(f,v,r),q={type:"styling",body:[A],mode:"math",style:"display"};a.push(q),h=nr()}s%2===0?a.push(h):a.shift(),a=[],n.push(a)}r.gullet.endGroup(),r.gullet.endGroup();var _=new Array(n[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:n,arraystretch:1,addJot:!0,rowGaps:[null],cols:_,colSeparationType:"CD",hLinesBeforeRow:new Array(n.length+1).fill([])}}B({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r;return{type:"cdlabel",mode:t.mode,side:a.slice(4),label:e[0]}},htmlBuilder(r,e){var t=e.havingStyle(e.style.sup()),a=y.wrapFragment(G(r.label,t,e),e);return a.classes.push("cd-label-"+r.side),a.style.bottom=T(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(r,e){var t=new M.MathNode("mrow",[X(r.label,e)]);return t=new M.MathNode("mpadded",[t]),t.setAttribute("width","0"),r.side==="left"&&t.setAttribute("lspace","-1width"),t.setAttribute("voffset","0.7em"),t=new M.MathNode("mstyle",[t]),t.setAttribute("displaystyle","false"),t.setAttribute("scriptlevel","1"),t}});B({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(r,e){var{parser:t}=r;return{type:"cdlabelparent",mode:t.mode,fragment:e[0]}},htmlBuilder(r,e){var t=y.wrapFragment(G(r.fragment,e),e);return t.classes.push("cd-vert-arrow"),t},mathmlBuilder(r,e){return new M.MathNode("mrow",[X(r.fragment,e)])}});B({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(r,e){for(var{parser:t}=r,a=L(e[0],"ordgroup"),n=a.body,s="",l=0;l=1114111)throw new z("\\@char with invalid code point "+s);return c<=65535?f=String.fromCharCode(c):(c-=65536,f=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:t.mode,text:f}}});var Vr=(r,e)=>{var t=a0(r.body,e.withColor(r.color),!1);return y.makeFragment(t)},Ur=(r,e)=>{var t=m0(r.body,e.withColor(r.color)),a=new M.MathNode("mstyle",t);return a.setAttribute("mathcolor",r.color),a};B({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(r,e){var{parser:t}=r,a=L(e[0],"color-token").color,n=e[1];return{type:"color",mode:t.mode,color:a,body:e0(n)}},htmlBuilder:Vr,mathmlBuilder:Ur});B({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(r,e){var{parser:t,breakOnTokenText:a}=r,n=L(e[0],"color-token").color;t.gullet.macros.set("\\current@color",n);var s=t.parseExpression(!0,a);return{type:"color",mode:t.mode,color:n,body:s}},htmlBuilder:Vr,mathmlBuilder:Ur});B({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(r,e,t){var{parser:a}=r,n=a.gullet.future().text==="["?a.parseSizeGroup(!0):null,s=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:s,size:n&&L(n,"size").value}},htmlBuilder(r,e){var t=y.makeSpan(["mspace"],[],e);return r.newLine&&(t.classes.push("newline"),r.size&&(t.style.marginTop=T(Q(r.size,e)))),t},mathmlBuilder(r,e){var t=new M.MathNode("mspace");return r.newLine&&(t.setAttribute("linebreak","newline"),r.size&&t.setAttribute("height",T(Q(r.size,e)))),t}});var wt={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Xr=r=>{var e=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new z("Expected a control sequence",r);return e},H1=r=>{var e=r.gullet.popToken();return e.text==="="&&(e=r.gullet.popToken(),e.text===" "&&(e=r.gullet.popToken())),e},Wr=(r,e,t,a)=>{var n=r.gullet.macros.get(t.text);n==null&&(t.noexpand=!0,n={tokens:[t],numArgs:0,unexpandable:!r.gullet.isExpandable(t.text)}),r.gullet.macros.set(e,n,a)};B({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(r){var{parser:e,funcName:t}=r;e.consumeSpaces();var a=e.fetch();if(wt[a.text])return(t==="\\global"||t==="\\\\globallong")&&(a.text=wt[a.text]),L(e.parseFunction(),"internal");throw new z("Invalid token after macro prefix",a)}});B({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=e.gullet.popToken(),n=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new z("Expected a control sequence",a);for(var s=0,l,h=[[]];e.gullet.future().text!=="{";)if(a=e.gullet.popToken(),a.text==="#"){if(e.gullet.future().text==="{"){l=e.gullet.future(),h[s].push("{");break}if(a=e.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new z('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new z('Argument number "'+a.text+'" out of order');s++,h.push([])}else{if(a.text==="EOF")throw new z("Expected a macro definition");h[s].push(a.text)}var{tokens:c}=e.gullet.consumeArg();return l&&c.unshift(l),(t==="\\edef"||t==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(n,{tokens:c,numArgs:s,delimiters:h},t===wt[t]),{type:"internal",mode:e.mode}}});B({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=Xr(e.gullet.popToken());e.gullet.consumeSpaces();var n=H1(e);return Wr(e,a,n,t==="\\\\globallet"),{type:"internal",mode:e.mode}}});B({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=Xr(e.gullet.popToken()),n=e.gullet.popToken(),s=e.gullet.popToken();return Wr(e,a,s,t==="\\\\globalfuture"),e.gullet.pushToken(s),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}});var ce=function(e,t,a){var n=Y.math[e]&&Y.math[e].replace,s=Tt(n||e,t,a);if(!s)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return s},Nt=function(e,t,a,n){var s=a.havingBaseStyle(t),l=y.makeSpan(n.concat(s.sizingClasses(a)),[e],a),h=s.sizeMultiplier/a.sizeMultiplier;return l.height*=h,l.depth*=h,l.maxFontSize=s.sizeMultiplier,l},Yr=function(e,t,a){var n=t.havingBaseStyle(a),s=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=T(s),e.height-=s,e.depth+=s},P1=function(e,t,a,n,s,l){var h=y.makeSymbol(e,"Main-Regular",s,n),c=Nt(h,t,n,l);return a&&Yr(c,n,t),c},G1=function(e,t,a,n){return y.makeSymbol(e,"Size"+t+"-Regular",a,n)},Zr=function(e,t,a,n,s,l){var h=G1(e,t,s,n),c=Nt(y.makeSpan(["delimsizing","size"+t],[h],n),E.TEXT,n,l);return a&&Yr(c,n,E.TEXT),c},it=function(e,t,a){var n;t==="Size1-Regular"?n="delim-size1":n="delim-size4";var s=y.makeSpan(["delimsizinginner",n],[y.makeSpan([],[y.makeSymbol(e,t,a)])]);return{type:"elem",elem:s}},st=function(e,t,a){var n=z0["Size4-Regular"][e.charCodeAt(0)]?z0["Size4-Regular"][e.charCodeAt(0)][4]:z0["Size1-Regular"][e.charCodeAt(0)][4],s=new A0("inner",ja(e,Math.round(1e3*t))),l=new S0([s],{width:T(n),height:T(t),style:"width:"+T(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),h=y.makeSvgSpan([],[l],a);return h.height=t,h.style.height=T(t),h.style.width=T(n),{type:"elem",elem:h}},St=.008,_e={type:"kern",size:-1*St},V1=["|","\\lvert","\\rvert","\\vert"],U1=["\\|","\\lVert","\\rVert","\\Vert"],jr=function(e,t,a,n,s,l){var h,c,f,v,b="",x=0;h=f=v=e,c=null;var w="Size1-Regular";e==="\\uparrow"?f=v="\u23D0":e==="\\Uparrow"?f=v="\u2016":e==="\\downarrow"?h=f="\u23D0":e==="\\Downarrow"?h=f="\u2016":e==="\\updownarrow"?(h="\\uparrow",f="\u23D0",v="\\downarrow"):e==="\\Updownarrow"?(h="\\Uparrow",f="\u2016",v="\\Downarrow"):O.contains(V1,e)?(f="\u2223",b="vert",x=333):O.contains(U1,e)?(f="\u2225",b="doublevert",x=556):e==="["||e==="\\lbrack"?(h="\u23A1",f="\u23A2",v="\u23A3",w="Size4-Regular",b="lbrack",x=667):e==="]"||e==="\\rbrack"?(h="\u23A4",f="\u23A5",v="\u23A6",w="Size4-Regular",b="rbrack",x=667):e==="\\lfloor"||e==="\u230A"?(f=h="\u23A2",v="\u23A3",w="Size4-Regular",b="lfloor",x=667):e==="\\lceil"||e==="\u2308"?(h="\u23A1",f=v="\u23A2",w="Size4-Regular",b="lceil",x=667):e==="\\rfloor"||e==="\u230B"?(f=h="\u23A5",v="\u23A6",w="Size4-Regular",b="rfloor",x=667):e==="\\rceil"||e==="\u2309"?(h="\u23A4",f=v="\u23A5",w="Size4-Regular",b="rceil",x=667):e==="("||e==="\\lparen"?(h="\u239B",f="\u239C",v="\u239D",w="Size4-Regular",b="lparen",x=875):e===")"||e==="\\rparen"?(h="\u239E",f="\u239F",v="\u23A0",w="Size4-Regular",b="rparen",x=875):e==="\\{"||e==="\\lbrace"?(h="\u23A7",c="\u23A8",v="\u23A9",f="\u23AA",w="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(h="\u23AB",c="\u23AC",v="\u23AD",f="\u23AA",w="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(h="\u23A7",v="\u23A9",f="\u23AA",w="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(h="\u23AB",v="\u23AD",f="\u23AA",w="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(h="\u23A7",v="\u23AD",f="\u23AA",w="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(h="\u23AB",v="\u23A9",f="\u23AA",w="Size4-Regular");var A=ce(h,w,s),q=A.height+A.depth,_=ce(f,w,s),D=_.height+_.depth,N=ce(v,w,s),$=N.height+N.depth,H=0,F=1;if(c!==null){var P=ce(c,w,s);H=P.height+P.depth,F=2}var V=q+$+H,j=Math.max(0,Math.ceil((t-V)/(F*D))),U=V+j*F*D,D0=n.fontMetrics().axisHeight;a&&(D0*=n.sizeMultiplier);var i0=U/2-D0,r0=[];if(b.length>0){var X0=U-q-$,u0=Math.round(U*1e3),x0=Ka(b,Math.round(X0*1e3)),$0=new A0(b,x0),K0=(x/1e3).toFixed(3)+"em",J0=(u0/1e3).toFixed(3)+"em",je=new S0([$0],{width:K0,height:J0,viewBox:"0 0 "+x+" "+u0}),L0=y.makeSvgSpan([],[je],n);L0.height=u0/1e3,L0.style.width=K0,L0.style.height=J0,r0.push({type:"elem",elem:L0})}else{if(r0.push(it(v,w,s)),r0.push(_e),c===null){var F0=U-q-$+2*St;r0.push(st(f,F0,n))}else{var f0=(U-q-$-H)/2+2*St;r0.push(st(f,f0,n)),r0.push(_e),r0.push(it(c,w,s)),r0.push(_e),r0.push(st(f,f0,n))}r0.push(_e),r0.push(it(h,w,s))}var le=n.havingBaseStyle(E.TEXT),Ke=y.makeVList({positionType:"bottom",positionData:i0,children:r0},le);return Nt(y.makeSpan(["delimsizing","mult"],[Ke],le),E.TEXT,n,l)},ot=80,lt=.08,ut=function(e,t,a,n,s){var l=Za(e,n,a),h=new A0(e,l),c=new S0([h],{width:"400em",height:T(t),viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return y.makeSvgSpan(["hide-tail"],[c],s)},X1=function(e,t){var a=t.havingBaseSizing(),n=ea("\\surd",e*a.sizeMultiplier,Qr,a),s=a.sizeMultiplier,l=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),h,c=0,f=0,v=0,b;return n.type==="small"?(v=1e3+1e3*l+ot,e<1?s=1:e<1.4&&(s=.7),c=(1+l+lt)/s,f=(1+l)/s,h=ut("sqrtMain",c,v,l,t),h.style.minWidth="0.853em",b=.833/s):n.type==="large"?(v=(1e3+ot)*me[n.size],f=(me[n.size]+l)/s,c=(me[n.size]+l+lt)/s,h=ut("sqrtSize"+n.size,c,v,l,t),h.style.minWidth="1.02em",b=1/s):(c=e+l+lt,f=e+l,v=Math.floor(1e3*e+l)+ot,h=ut("sqrtTall",c,v,l,t),h.style.minWidth="0.742em",b=1.056),h.height=f,h.style.height=T(c),{span:h,advanceWidth:b,ruleWidth:(t.fontMetrics().sqrtRuleThickness+l)*s}},Kr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],W1=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],Jr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],me=[0,1.2,1.8,2.4,3],Y1=function(e,t,a,n,s){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),O.contains(Kr,e)||O.contains(Jr,e))return Zr(e,t,!1,a,n,s);if(O.contains(W1,e))return jr(e,me[t],!1,a,n,s);throw new z("Illegal delimiter: '"+e+"'")},Z1=[{type:"small",style:E.SCRIPTSCRIPT},{type:"small",style:E.SCRIPT},{type:"small",style:E.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],j1=[{type:"small",style:E.SCRIPTSCRIPT},{type:"small",style:E.SCRIPT},{type:"small",style:E.TEXT},{type:"stack"}],Qr=[{type:"small",style:E.SCRIPTSCRIPT},{type:"small",style:E.SCRIPT},{type:"small",style:E.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],K1=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},ea=function(e,t,a,n){for(var s=Math.min(2,3-n.style.size),l=s;lt)return a[l]}return a[a.length-1]},ta=function(e,t,a,n,s,l){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var h;O.contains(Jr,e)?h=Z1:O.contains(Kr,e)?h=Qr:h=j1;var c=ea(e,t,h,n);return c.type==="small"?P1(e,c.style,a,n,s,l):c.type==="large"?Zr(e,c.size,a,n,s,l):jr(e,t,a,n,s,l)},J1=function(e,t,a,n,s,l){var h=n.fontMetrics().axisHeight*n.sizeMultiplier,c=901,f=5/n.fontMetrics().ptPerEm,v=Math.max(t-h,a+h),b=Math.max(v/500*c,2*v-f);return ta(e,b,!0,n,s,l)},O0={sqrtImage:X1,sizedDelim:Y1,sizeToMaxHeight:me,customSizedDelim:ta,leftRightDelim:J1},sr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Q1=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Ye(r,e){var t=Xe(r);if(t&&O.contains(Q1,t.text))return t;throw t?new z("Invalid delimiter '"+t.text+"' after '"+e.funcName+"'",r):new z("Invalid delimiter type '"+r.type+"'",r)}B({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(r,e)=>{var t=Ye(e[0],r);return{type:"delimsizing",mode:r.parser.mode,size:sr[r.funcName].size,mclass:sr[r.funcName].mclass,delim:t.text}},htmlBuilder:(r,e)=>r.delim==="."?y.makeSpan([r.mclass]):O0.sizedDelim(r.delim,r.size,e,r.mode,[r.mclass]),mathmlBuilder:r=>{var e=[];r.delim!=="."&&e.push(y0(r.delim,r.mode));var t=new M.MathNode("mo",e);r.mclass==="mopen"||r.mclass==="mclose"?t.setAttribute("fence","true"):t.setAttribute("fence","false"),t.setAttribute("stretchy","true");var a=T(O0.sizeToMaxHeight[r.size]);return t.setAttribute("minsize",a),t.setAttribute("maxsize",a),t}});function or(r){if(!r.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}B({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=r.parser.gullet.macros.get("\\current@color");if(t&&typeof t!="string")throw new z("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:r.parser.mode,delim:Ye(e[0],r).text,color:t}}});B({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=Ye(e[0],r),a=r.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var s=L(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:t.text,right:s.delim,rightColor:s.color}},htmlBuilder:(r,e)=>{or(r);for(var t=a0(r.body,e,!0,["mopen","mclose"]),a=0,n=0,s=!1,l=0;l{or(r);var t=m0(r.body,e);if(r.left!=="."){var a=new M.MathNode("mo",[y0(r.left,r.mode)]);a.setAttribute("fence","true"),t.unshift(a)}if(r.right!=="."){var n=new M.MathNode("mo",[y0(r.right,r.mode)]);n.setAttribute("fence","true"),r.rightColor&&n.setAttribute("mathcolor",r.rightColor),t.push(n)}return Bt(t)}});B({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=Ye(e[0],r);if(!r.parser.leftrightDepth)throw new z("\\middle without preceding \\left",t);return{type:"middle",mode:r.parser.mode,delim:t.text}},htmlBuilder:(r,e)=>{var t;if(r.delim===".")t=ge(e,[]);else{t=O0.sizedDelim(r.delim,1,e,r.mode,[]);var a={delim:r.delim,options:e};t.isMiddle=a}return t},mathmlBuilder:(r,e)=>{var t=r.delim==="\\vert"||r.delim==="|"?y0("|","text"):y0(r.delim,r.mode),a=new M.MathNode("mo",[t]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var Ot=(r,e)=>{var t=y.wrapFragment(G(r.body,e),e),a=r.label.slice(1),n=e.sizeMultiplier,s,l=0,h=O.isCharacterBox(r.body);if(a==="sout")s=y.makeSpan(["stretchy","sout"]),s.height=e.fontMetrics().defaultRuleThickness/n,l=-.5*e.fontMetrics().xHeight;else if(a==="phase"){var c=Q({number:.6,unit:"pt"},e),f=Q({number:.35,unit:"ex"},e),v=e.havingBaseSizing();n=n/v.sizeMultiplier;var b=t.height+t.depth+c+f;t.style.paddingLeft=T(b/2+c);var x=Math.floor(1e3*b*n),w=Wa(x),A=new S0([new A0("phase",w)],{width:"400em",height:T(x/1e3),viewBox:"0 0 400000 "+x,preserveAspectRatio:"xMinYMin slice"});s=y.makeSvgSpan(["hide-tail"],[A],e),s.style.height=T(b),l=t.depth+c+f}else{/cancel/.test(a)?h||t.classes.push("cancel-pad"):a==="angl"?t.classes.push("anglpad"):t.classes.push("boxpad");var q=0,_=0,D=0;/box/.test(a)?(D=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),q=e.fontMetrics().fboxsep+(a==="colorbox"?0:D),_=q):a==="angl"?(D=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),q=4*D,_=Math.max(0,.25-t.depth)):(q=h?.2:0,_=q),s=E0.encloseSpan(t,a,q,_,e),/fbox|boxed|fcolorbox/.test(a)?(s.style.borderStyle="solid",s.style.borderWidth=T(D)):a==="angl"&&D!==.049&&(s.style.borderTopWidth=T(D),s.style.borderRightWidth=T(D)),l=t.depth+_,r.backgroundColor&&(s.style.backgroundColor=r.backgroundColor,r.borderColor&&(s.style.borderColor=r.borderColor))}var N;if(r.backgroundColor)N=y.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:l},{type:"elem",elem:t,shift:0}]},e);else{var $=/cancel|phase/.test(a)?["svg-align"]:[];N=y.makeVList({positionType:"individualShift",children:[{type:"elem",elem:t,shift:0},{type:"elem",elem:s,shift:l,wrapperClasses:$}]},e)}return/cancel/.test(a)&&(N.height=t.height,N.depth=t.depth),/cancel/.test(a)&&!h?y.makeSpan(["mord","cancel-lap"],[N],e):y.makeSpan(["mord"],[N],e)},It=(r,e)=>{var t=0,a=new M.MathNode(r.label.indexOf("colorbox")>-1?"mpadded":"menclose",[X(r.body,e)]);switch(r.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(t=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*t+"pt"),a.setAttribute("height","+"+2*t+"pt"),a.setAttribute("lspace",t+"pt"),a.setAttribute("voffset",t+"pt"),r.label==="\\fcolorbox"){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(r.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return r.backgroundColor&&a.setAttribute("mathbackground",r.backgroundColor),a};B({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(r,e,t){var{parser:a,funcName:n}=r,s=L(e[0],"color-token").color,l=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:s,body:l}},htmlBuilder:Ot,mathmlBuilder:It});B({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(r,e,t){var{parser:a,funcName:n}=r,s=L(e[0],"color-token").color,l=L(e[1],"color-token").color,h=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:l,borderColor:s,body:h}},htmlBuilder:Ot,mathmlBuilder:It});B({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"enclose",mode:t.mode,label:"\\fbox",body:e[0]}}});B({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"enclose",mode:t.mode,label:a,body:n}},htmlBuilder:Ot,mathmlBuilder:It});B({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(r,e){var{parser:t}=r;return{type:"enclose",mode:t.mode,label:"\\angl",body:e[0]}}});var ra={};function T0(r){for(var{type:e,names:t,props:a,handler:n,htmlBuilder:s,mathmlBuilder:l}=r,h={type:e,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},c=0;c{var e=r.parser.settings;if(!e.displayMode)throw new z("{"+r.envName+"} can be used only in display mode.")};function Et(r){if(r.indexOf("ed")===-1)return r.indexOf("*")===-1}function U0(r,e,t){var{hskipBeforeAndAfter:a,addJot:n,cols:s,arraystretch:l,colSeparationType:h,autoTag:c,singleRow:f,emptySingleRow:v,maxNumCols:b,leqno:x}=e;if(r.gullet.beginGroup(),f||r.gullet.macros.set("\\cr","\\\\\\relax"),!l){var w=r.gullet.expandMacroAsText("\\arraystretch");if(w==null)l=1;else if(l=parseFloat(w),!l||l<0)throw new z("Invalid \\arraystretch: "+w)}r.gullet.beginGroup();var A=[],q=[A],_=[],D=[],N=c!=null?[]:void 0;function $(){c&&r.gullet.macros.set("\\@eqnsw","1",!0)}function H(){N&&(r.gullet.macros.get("\\df@tag")?(N.push(r.subparse([new b0("\\df@tag")])),r.gullet.macros.set("\\df@tag",void 0,!0)):N.push(!!c&&r.gullet.macros.get("\\@eqnsw")==="1"))}for($(),D.push(lr(r));;){var F=r.parseExpression(!1,f?"\\end":"\\\\");r.gullet.endGroup(),r.gullet.beginGroup(),F={type:"ordgroup",mode:r.mode,body:F},t&&(F={type:"styling",mode:r.mode,style:t,body:[F]}),A.push(F);var P=r.fetch().text;if(P==="&"){if(b&&A.length===b){if(f||h)throw new z("Too many tab characters: &",r.nextToken);r.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}r.consume()}else if(P==="\\end"){H(),A.length===1&&F.type==="styling"&&F.body[0].body.length===0&&(q.length>1||!v)&&q.pop(),D.length0&&($+=.25),f.push({pos:$,isDashed:we[Se]})}for(H(l[0]),a=0;a0&&(i0+=N,Vwe))for(a=0;a=h)){var ee=void 0;(n>0||e.hskipBeforeAndAfter)&&(ee=O.deflt(f0.pregap,x),ee!==0&&(x0=y.makeSpan(["arraycolsep"],[]),x0.style.width=T(ee),u0.push(x0)));var te=[];for(a=0;a0){for(var Sa=y.makeLineSpan("hline",t,v),ka=y.makeLineSpan("hdashline",t,v),Je=[{type:"elem",elem:c,shift:0}];f.length>0;){var Ut=f.pop(),Xt=Ut.pos-r0;Ut.isDashed?Je.push({type:"elem",elem:ka,shift:Xt}):Je.push({type:"elem",elem:Sa,shift:Xt})}c=y.makeVList({positionType:"individualShift",children:Je},t)}if(K0.length===0)return y.makeSpan(["mord"],[c],t);var Qe=y.makeVList({positionType:"individualShift",children:K0},t);return Qe=y.makeSpan(["tag"],[Qe],t),y.makeFragment([c,Qe])},en={c:"center ",l:"left ",r:"right "},B0=function(e,t){for(var a=[],n=new M.MathNode("mtd",[],["mtr-glue"]),s=new M.MathNode("mtd",[],["mml-eqn-num"]),l=0;l0){var A=e.cols,q="",_=!1,D=0,N=A.length;A[0].type==="separator"&&(x+="top ",D=1),A[A.length-1].type==="separator"&&(x+="bottom ",N-=1);for(var $=D;$0?"left ":"",x+=j[j.length-1].length>0?"right ":"";for(var U=1;U-1?"alignat":"align",s=e.envName==="split",l=U0(e.parser,{cols:a,addJot:!0,autoTag:s?void 0:Et(e.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:s?2:void 0,leqno:e.parser.settings.leqno},"display"),h,c=0,f={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&t[0].type==="ordgroup"){for(var v="",b=0;b0&&w&&(_=1),a[A]={type:"align",align:q,pregap:_,postgap:0}}return l.colSeparationType=w?"align":"alignat",l};T0({type:"array",names:["array","darray"],props:{numArgs:1},handler(r,e){var t=Xe(e[0]),a=t?[e[0]]:L(e[0],"ordgroup").body,n=a.map(function(l){var h=Ct(l),c=h.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new z("Unknown column alignment: "+c,l)}),s={cols:n,hskipBeforeAndAfter:!0,maxNumCols:n.length};return U0(r.parser,s,Rt(r.envName))},htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(r){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[r.envName.replace("*","")],t="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:t}]};if(r.envName.charAt(r.envName.length-1)==="*"){var n=r.parser;if(n.consumeSpaces(),n.fetch().text==="["){if(n.consume(),n.consumeSpaces(),t=n.fetch().text,"lcr".indexOf(t)===-1)throw new z("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),a.cols=[{type:"align",align:t}]}}var s=U0(r.parser,a,Rt(r.envName)),l=Math.max(0,...s.body.map(h=>h.length));return s.cols=new Array(l).fill({type:"align",align:t}),e?{type:"leftright",mode:r.mode,body:[s],left:e[0],right:e[1],rightColor:void 0}:s},htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(r){var e={arraystretch:.5},t=U0(r.parser,e,"script");return t.colSeparationType="small",t},htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["subarray"],props:{numArgs:1},handler(r,e){var t=Xe(e[0]),a=t?[e[0]]:L(e[0],"ordgroup").body,n=a.map(function(l){var h=Ct(l),c=h.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new z("Unknown column alignment: "+c,l)});if(n.length>1)throw new z("{subarray} can contain only one column");var s={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if(s=U0(r.parser,s,"script"),s.body.length>0&&s.body[0].length>1)throw new z("{subarray} can contain only one column");return s},htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(r){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},t=U0(r.parser,e,Rt(r.envName));return{type:"leftright",mode:r.mode,body:[t],left:r.envName.indexOf("r")>-1?".":"\\{",right:r.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:na,htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(r){O.contains(["gather","gather*"],r.envName)&&Ze(r);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Et(r.envName),emptySingleRow:!0,leqno:r.parser.settings.leqno};return U0(r.parser,e,"display")},htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:na,htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(r){Ze(r);var e={autoTag:Et(r.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:r.parser.settings.leqno};return U0(r.parser,e,"display")},htmlBuilder:q0,mathmlBuilder:B0});T0({type:"array",names:["CD"],props:{numArgs:0},handler(r){return Ze(r),F1(r.parser)},htmlBuilder:q0,mathmlBuilder:B0});m("\\nonumber","\\gdef\\@eqnsw{0}");m("\\notag","\\nonumber");B({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(r,e){throw new z(r.funcName+" valid only within array environment")}});var ur=ra;B({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];if(n.type!=="ordgroup")throw new z("Invalid environment name",n);for(var s="",l=0;l{var t=r.font,a=e.withFont(t);return G(r.body,a)},sa=(r,e)=>{var t=r.font,a=e.withFont(t);return X(r.body,a)},hr={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};B({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=He(e[0]),s=a;return s in hr&&(s=hr[s]),{type:"font",mode:t.mode,font:s.slice(1),body:n}},htmlBuilder:ia,mathmlBuilder:sa});B({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(r,e)=>{var{parser:t}=r,a=e[0],n=O.isCharacterBox(a);return{type:"mclass",mode:t.mode,mclass:We(a),body:[{type:"font",mode:t.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}});B({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(r,e)=>{var{parser:t,funcName:a,breakOnTokenText:n}=r,{mode:s}=t,l=t.parseExpression(!0,n),h="math"+a.slice(1);return{type:"font",mode:s,font:h,body:{type:"ordgroup",mode:t.mode,body:l}}},htmlBuilder:ia,mathmlBuilder:sa});var oa=(r,e)=>{var t=e;return r==="display"?t=t.id>=E.SCRIPT.id?t.text():E.DISPLAY:r==="text"&&t.size===E.DISPLAY.size?t=E.TEXT:r==="script"?t=E.SCRIPT:r==="scriptscript"&&(t=E.SCRIPTSCRIPT),t},$t=(r,e)=>{var t=oa(r.size,e.style),a=t.fracNum(),n=t.fracDen(),s;s=e.havingStyle(a);var l=G(r.numer,s,e);if(r.continued){var h=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;l.height=l.height0?A=3*x:A=7*x,q=e.fontMetrics().denom1):(b>0?(w=e.fontMetrics().num2,A=x):(w=e.fontMetrics().num3,A=3*x),q=e.fontMetrics().denom2);var _;if(v){var N=e.fontMetrics().axisHeight;w-l.depth-(N+.5*b){var t=new M.MathNode("mfrac",[X(r.numer,e),X(r.denom,e)]);if(!r.hasBarLine)t.setAttribute("linethickness","0px");else if(r.barSize){var a=Q(r.barSize,e);t.setAttribute("linethickness",T(a))}var n=oa(r.size,e.style);if(n.size!==e.style.size){t=new M.MathNode("mstyle",[t]);var s=n.size===E.DISPLAY.size?"true":"false";t.setAttribute("displaystyle",s),t.setAttribute("scriptlevel","0")}if(r.leftDelim!=null||r.rightDelim!=null){var l=[];if(r.leftDelim!=null){var h=new M.MathNode("mo",[new M.TextNode(r.leftDelim.replace("\\",""))]);h.setAttribute("fence","true"),l.push(h)}if(l.push(t),r.rightDelim!=null){var c=new M.MathNode("mo",[new M.TextNode(r.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),l.push(c)}return Bt(l)}return t};B({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=e[1],l,h=null,c=null,f="auto";switch(a){case"\\dfrac":case"\\frac":case"\\tfrac":l=!0;break;case"\\\\atopfrac":l=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":l=!1,h="(",c=")";break;case"\\\\bracefrac":l=!1,h="\\{",c="\\}";break;case"\\\\brackfrac":l=!1,h="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\dfrac":case"\\dbinom":f="display";break;case"\\tfrac":case"\\tbinom":f="text";break}return{type:"genfrac",mode:t.mode,continued:!1,numer:n,denom:s,hasBarLine:l,leftDelim:h,rightDelim:c,size:f,barSize:null}},htmlBuilder:$t,mathmlBuilder:Lt});B({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=e[1];return{type:"genfrac",mode:t.mode,continued:!0,numer:n,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});B({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(r){var{parser:e,funcName:t,token:a}=r,n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:a}}});var cr=["display","text","script","scriptscript"],mr=function(e){var t=null;return e.length>0&&(t=e,t=t==="."?null:t),t};B({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(r,e){var{parser:t}=r,a=e[4],n=e[5],s=He(e[0]),l=s.type==="atom"&&s.family==="open"?mr(s.text):null,h=He(e[1]),c=h.type==="atom"&&h.family==="close"?mr(h.text):null,f=L(e[2],"size"),v,b=null;f.isBlank?v=!0:(b=f.value,v=b.number>0);var x="auto",w=e[3];if(w.type==="ordgroup"){if(w.body.length>0){var A=L(w.body[0],"textord");x=cr[Number(A.text)]}}else w=L(w,"textord"),x=cr[Number(w.text)];return{type:"genfrac",mode:t.mode,numer:a,denom:n,continued:!1,hasBarLine:v,barSize:b,leftDelim:l,rightDelim:c,size:x}},htmlBuilder:$t,mathmlBuilder:Lt});B({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(r,e){var{parser:t,funcName:a,token:n}=r;return{type:"infix",mode:t.mode,replaceWith:"\\\\abovefrac",size:L(e[0],"size").value,token:n}}});B({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=_a(L(e[1],"infix").size),l=e[2],h=s.number>0;return{type:"genfrac",mode:t.mode,numer:n,denom:l,continued:!1,hasBarLine:h,barSize:s,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:$t,mathmlBuilder:Lt});var la=(r,e)=>{var t=e.style,a,n;r.type==="supsub"?(a=r.sup?G(r.sup,e.havingStyle(t.sup()),e):G(r.sub,e.havingStyle(t.sub()),e),n=L(r.base,"horizBrace")):n=L(r,"horizBrace");var s=G(n.base,e.havingBaseStyle(E.DISPLAY)),l=E0.svgSpan(n,e),h;if(n.isOver?(h=y.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:l}]},e),h.children[0].children[0].children[1].classes.push("svg-align")):(h=y.makeVList({positionType:"bottom",positionData:s.depth+.1+l.height,children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:s}]},e),h.children[0].children[0].children[0].classes.push("svg-align")),a){var c=y.makeSpan(["mord",n.isOver?"mover":"munder"],[h],e);n.isOver?h=y.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:a}]},e):h=y.makeVList({positionType:"bottom",positionData:c.depth+.2+a.height+a.depth,children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return y.makeSpan(["mord",n.isOver?"mover":"munder"],[h],e)},tn=(r,e)=>{var t=E0.mathMLnode(r.label);return new M.MathNode(r.isOver?"mover":"munder",[X(r.base,e),t])};B({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r;return{type:"horizBrace",mode:t.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:la,mathmlBuilder:tn});B({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[1],n=L(e[0],"url").url;return t.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:t.mode,href:n,body:e0(a)}:t.formatUnsupportedCmd("\\href")},htmlBuilder:(r,e)=>{var t=a0(r.body,e,!1);return y.makeAnchor(r.href,[],t,e)},mathmlBuilder:(r,e)=>{var t=V0(r.body,e);return t instanceof s0||(t=new s0("mrow",[t])),t.setAttribute("href",r.href),t}});B({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=L(e[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:a}))return t.formatUnsupportedCmd("\\url");for(var n=[],s=0;s{var{parser:t,funcName:a,token:n}=r,s=L(e[0],"raw").string,l=e[1];t.settings.strict&&t.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var h,c={};switch(a){case"\\htmlClass":c.class=s,h={command:"\\htmlClass",class:s};break;case"\\htmlId":c.id=s,h={command:"\\htmlId",id:s};break;case"\\htmlStyle":c.style=s,h={command:"\\htmlStyle",style:s};break;case"\\htmlData":{for(var f=s.split(","),v=0;v{var t=a0(r.body,e,!1),a=["enclosing"];r.attributes.class&&a.push(...r.attributes.class.trim().split(/\s+/));var n=y.makeSpan(a,t,e);for(var s in r.attributes)s!=="class"&&r.attributes.hasOwnProperty(s)&&n.setAttribute(s,r.attributes[s]);return n},mathmlBuilder:(r,e)=>V0(r.body,e)});B({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r;return{type:"htmlmathml",mode:t.mode,html:e0(e[0]),mathml:e0(e[1])}},htmlBuilder:(r,e)=>{var t=a0(r.html,e,!1);return y.makeFragment(t)},mathmlBuilder:(r,e)=>V0(r.mathml,e)});var ht=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new z("Invalid size: '"+e+"' in \\includegraphics");var a={number:+(t[1]+t[2]),unit:t[3]};if(!Tr(a))throw new z("Invalid unit: '"+a.unit+"' in \\includegraphics.");return a};B({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(r,e,t)=>{var{parser:a}=r,n={number:0,unit:"em"},s={number:.9,unit:"em"},l={number:0,unit:"em"},h="";if(t[0])for(var c=L(t[0],"raw").string,f=c.split(","),v=0;v{var t=Q(r.height,e),a=0;r.totalheight.number>0&&(a=Q(r.totalheight,e)-t);var n=0;r.width.number>0&&(n=Q(r.width,e));var s={height:T(t+a)};n>0&&(s.width=T(n)),a>0&&(s.verticalAlign=T(-a));var l=new vt(r.src,r.alt,s);return l.height=t,l.depth=a,l},mathmlBuilder:(r,e)=>{var t=new M.MathNode("mglyph",[]);t.setAttribute("alt",r.alt);var a=Q(r.height,e),n=0;if(r.totalheight.number>0&&(n=Q(r.totalheight,e)-a,t.setAttribute("valign",T(-n))),t.setAttribute("height",T(a+n)),r.width.number>0){var s=Q(r.width,e);t.setAttribute("width",T(s))}return t.setAttribute("src",r.src),t}});B({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(r,e){var{parser:t,funcName:a}=r,n=L(e[0],"size");if(t.settings.strict){var s=a[1]==="m",l=n.value.unit==="mu";s?(l||t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, "+("not "+n.value.unit+" units")),t.mode!=="math"&&t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):l&&t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:t.mode,dimension:n.value}},htmlBuilder(r,e){return y.makeGlue(r.dimension,e)},mathmlBuilder(r,e){var t=Q(r.dimension,e);return new M.SpaceNode(t)}});B({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"lap",mode:t.mode,alignment:a.slice(5),body:n}},htmlBuilder:(r,e)=>{var t;r.alignment==="clap"?(t=y.makeSpan([],[G(r.body,e)]),t=y.makeSpan(["inner"],[t],e)):t=y.makeSpan(["inner"],[G(r.body,e)]);var a=y.makeSpan(["fix"],[]),n=y.makeSpan([r.alignment],[t,a],e),s=y.makeSpan(["strut"]);return s.style.height=T(n.height+n.depth),n.depth&&(s.style.verticalAlign=T(-n.depth)),n.children.unshift(s),n=y.makeSpan(["thinbox"],[n],e),y.makeSpan(["mord","vbox"],[n],e)},mathmlBuilder:(r,e)=>{var t=new M.MathNode("mpadded",[X(r.body,e)]);if(r.alignment!=="rlap"){var a=r.alignment==="llap"?"-1":"-0.5";t.setAttribute("lspace",a+"width")}return t.setAttribute("width","0px"),t}});B({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(r,e){var{funcName:t,parser:a}=r,n=a.mode;a.switchMode("math");var s=t==="\\("?"\\)":"$",l=a.parseExpression(!1,s);return a.expect(s),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:l}}});B({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(r,e){throw new z("Mismatched "+r.funcName)}});var dr=(r,e)=>{switch(e.style.size){case E.DISPLAY.size:return r.display;case E.TEXT.size:return r.text;case E.SCRIPT.size:return r.script;case E.SCRIPTSCRIPT.size:return r.scriptscript;default:return r.text}};B({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(r,e)=>{var{parser:t}=r;return{type:"mathchoice",mode:t.mode,display:e0(e[0]),text:e0(e[1]),script:e0(e[2]),scriptscript:e0(e[3])}},htmlBuilder:(r,e)=>{var t=dr(r,e),a=a0(t,e,!1);return y.makeFragment(a)},mathmlBuilder:(r,e)=>{var t=dr(r,e);return V0(t,e)}});var ua=(r,e,t,a,n,s,l)=>{r=y.makeSpan([],[r]);var h=t&&O.isCharacterBox(t),c,f;if(e){var v=G(e,a.havingStyle(n.sup()),a);f={elem:v,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-v.depth)}}if(t){var b=G(t,a.havingStyle(n.sub()),a);c={elem:b,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-b.height)}}var x;if(f&&c){var w=a.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+r.depth+l;x=y.makeVList({positionType:"bottom",positionData:w,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:T(-s)},{type:"kern",size:c.kern},{type:"elem",elem:r},{type:"kern",size:f.kern},{type:"elem",elem:f.elem,marginLeft:T(s)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(c){var A=r.height-l;x=y.makeVList({positionType:"top",positionData:A,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:T(-s)},{type:"kern",size:c.kern},{type:"elem",elem:r}]},a)}else if(f){var q=r.depth+l;x=y.makeVList({positionType:"bottom",positionData:q,children:[{type:"elem",elem:r},{type:"kern",size:f.kern},{type:"elem",elem:f.elem,marginLeft:T(s)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else return r;var _=[x];if(c&&s!==0&&!h){var D=y.makeSpan(["mspace"],[],a);D.style.marginRight=T(s),_.unshift(D)}return y.makeSpan(["mop","op-limits"],_,a)},ha=["\\smallint"],se=(r,e)=>{var t,a,n=!1,s;r.type==="supsub"?(t=r.sup,a=r.sub,s=L(r.base,"op"),n=!0):s=L(r,"op");var l=e.style,h=!1;l.size===E.DISPLAY.size&&s.symbol&&!O.contains(ha,s.name)&&(h=!0);var c;if(s.symbol){var f=h?"Size2-Regular":"Size1-Regular",v="";if((s.name==="\\oiint"||s.name==="\\oiiint")&&(v=s.name.slice(1),s.name=v==="oiint"?"\\iint":"\\iiint"),c=y.makeSymbol(s.name,f,"math",e,["mop","op-symbol",h?"large-op":"small-op"]),v.length>0){var b=c.italic,x=y.staticSvg(v+"Size"+(h?"2":"1"),e);c=y.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:x,shift:h?.08:0}]},e),s.name="\\"+v,c.classes.unshift("mop"),c.italic=b}}else if(s.body){var w=a0(s.body,e,!0);w.length===1&&w[0]instanceof c0?(c=w[0],c.classes[0]="mop"):c=y.makeSpan(["mop"],w,e)}else{for(var A=[],q=1;q{var t;if(r.symbol)t=new s0("mo",[y0(r.name,r.mode)]),O.contains(ha,r.name)&&t.setAttribute("largeop","false");else if(r.body)t=new s0("mo",m0(r.body,e));else{t=new s0("mi",[new g0(r.name.slice(1))]);var a=new s0("mo",[y0("\u2061","text")]);r.parentIsSupSub?t=new s0("mrow",[t,a]):t=$r([t,a])}return t},rn={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};B({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=a;return n.length===1&&(n=rn[n]),{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:se,mathmlBuilder:be});B({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:e0(a)}},htmlBuilder:se,mathmlBuilder:be});var an={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};B({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(r){var{parser:e,funcName:t}=r;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:t}},htmlBuilder:se,mathmlBuilder:be});B({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(r){var{parser:e,funcName:t}=r;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:t}},htmlBuilder:se,mathmlBuilder:be});B({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(r){var{parser:e,funcName:t}=r,a=t;return a.length===1&&(a=an[a]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:se,mathmlBuilder:be});var ca=(r,e)=>{var t,a,n=!1,s;r.type==="supsub"?(t=r.sup,a=r.sub,s=L(r.base,"operatorname"),n=!0):s=L(r,"operatorname");var l;if(s.body.length>0){for(var h=s.body.map(b=>{var x=b.text;return typeof x=="string"?{type:"textord",mode:b.mode,text:x}:b}),c=a0(h,e.withFont("mathrm"),!0),f=0;f{for(var t=m0(r.body,e.withFont("mathrm")),a=!0,n=0;nv.toText()).join("");t=[new M.TextNode(h)]}var c=new M.MathNode("mi",t);c.setAttribute("mathvariant","normal");var f=new M.MathNode("mo",[y0("\u2061","text")]);return r.parentIsSupSub?new M.MathNode("mrow",[c,f]):M.newDocumentFragment([c,f])};B({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"operatorname",mode:t.mode,body:e0(n),alwaysHandleSupSub:a==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:ca,mathmlBuilder:nn});m("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");j0({type:"ordgroup",htmlBuilder(r,e){return r.semisimple?y.makeFragment(a0(r.body,e,!1)):y.makeSpan(["mord"],a0(r.body,e,!0),e)},mathmlBuilder(r,e){return V0(r.body,e,!0)}});B({type:"overline",names:["\\overline"],props:{numArgs:1},handler(r,e){var{parser:t}=r,a=e[0];return{type:"overline",mode:t.mode,body:a}},htmlBuilder(r,e){var t=G(r.body,e.havingCrampedStyle()),a=y.makeLineSpan("overline-line",e),n=e.fontMetrics().defaultRuleThickness,s=y.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},e);return y.makeSpan(["mord","overline"],[s],e)},mathmlBuilder(r,e){var t=new M.MathNode("mo",[new M.TextNode("\u203E")]);t.setAttribute("stretchy","true");var a=new M.MathNode("mover",[X(r.body,e),t]);return a.setAttribute("accent","true"),a}});B({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"phantom",mode:t.mode,body:e0(a)}},htmlBuilder:(r,e)=>{var t=a0(r.body,e.withPhantom(),!1);return y.makeFragment(t)},mathmlBuilder:(r,e)=>{var t=m0(r.body,e);return new M.MathNode("mphantom",t)}});B({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"hphantom",mode:t.mode,body:a}},htmlBuilder:(r,e)=>{var t=y.makeSpan([],[G(r.body,e.withPhantom())]);if(t.height=0,t.depth=0,t.children)for(var a=0;a{var t=m0(e0(r.body),e),a=new M.MathNode("mphantom",t),n=new M.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}});B({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"vphantom",mode:t.mode,body:a}},htmlBuilder:(r,e)=>{var t=y.makeSpan(["inner"],[G(r.body,e.withPhantom())]),a=y.makeSpan(["fix"],[]);return y.makeSpan(["mord","rlap"],[t,a],e)},mathmlBuilder:(r,e)=>{var t=m0(e0(r.body),e),a=new M.MathNode("mphantom",t),n=new M.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}});B({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(r,e){var{parser:t}=r,a=L(e[0],"size").value,n=e[1];return{type:"raisebox",mode:t.mode,dy:a,body:n}},htmlBuilder(r,e){var t=G(r.body,e),a=Q(r.dy,e);return y.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:t}]},e)},mathmlBuilder(r,e){var t=new M.MathNode("mpadded",[X(r.body,e)]),a=r.dy.number+r.dy.unit;return t.setAttribute("voffset",a),t}});B({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(r){var{parser:e}=r;return{type:"internal",mode:e.mode}}});B({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(r,e,t){var{parser:a}=r,n=t[0],s=L(e[0],"size"),l=L(e[1],"size");return{type:"rule",mode:a.mode,shift:n&&L(n,"size").value,width:s.value,height:l.value}},htmlBuilder(r,e){var t=y.makeSpan(["mord","rule"],[],e),a=Q(r.width,e),n=Q(r.height,e),s=r.shift?Q(r.shift,e):0;return t.style.borderRightWidth=T(a),t.style.borderTopWidth=T(n),t.style.bottom=T(s),t.width=a,t.height=n+s,t.depth=-s,t.maxFontSize=n*1.125*e.sizeMultiplier,t},mathmlBuilder(r,e){var t=Q(r.width,e),a=Q(r.height,e),n=r.shift?Q(r.shift,e):0,s=e.color&&e.getColor()||"black",l=new M.MathNode("mspace");l.setAttribute("mathbackground",s),l.setAttribute("width",T(t)),l.setAttribute("height",T(a));var h=new M.MathNode("mpadded",[l]);return n>=0?h.setAttribute("height",T(n)):(h.setAttribute("height",T(n)),h.setAttribute("depth",T(-n))),h.setAttribute("voffset",T(n)),h}});function ma(r,e,t){for(var a=a0(r,e,!1),n=e.sizeMultiplier/t.sizeMultiplier,s=0;s{var t=e.havingSize(r.size);return ma(r.body,t,e)};B({type:"sizing",names:pr,props:{numArgs:0,allowedInText:!0},handler:(r,e)=>{var{breakOnTokenText:t,funcName:a,parser:n}=r,s=n.parseExpression(!1,t);return{type:"sizing",mode:n.mode,size:pr.indexOf(a)+1,body:s}},htmlBuilder:sn,mathmlBuilder:(r,e)=>{var t=e.havingSize(r.size),a=m0(r.body,t),n=new M.MathNode("mstyle",a);return n.setAttribute("mathsize",T(t.sizeMultiplier)),n}});B({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(r,e,t)=>{var{parser:a}=r,n=!1,s=!1,l=t[0]&&L(t[0],"ordgroup");if(l)for(var h="",c=0;c{var t=y.makeSpan([],[G(r.body,e)]);if(!r.smashHeight&&!r.smashDepth)return t;if(r.smashHeight&&(t.height=0,t.children))for(var a=0;a{var t=new M.MathNode("mpadded",[X(r.body,e)]);return r.smashHeight&&t.setAttribute("height","0px"),r.smashDepth&&t.setAttribute("depth","0px"),t}});B({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(r,e,t){var{parser:a}=r,n=t[0],s=e[0];return{type:"sqrt",mode:a.mode,body:s,index:n}},htmlBuilder(r,e){var t=G(r.body,e.havingCrampedStyle());t.height===0&&(t.height=e.fontMetrics().xHeight),t=y.wrapFragment(t,e);var a=e.fontMetrics(),n=a.defaultRuleThickness,s=n;e.style.idt.height+t.depth+l&&(l=(l+b-t.height-t.depth)/2);var x=c.height-t.height-l-f;t.style.paddingLeft=T(v);var w=y.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t,wrapperClasses:["svg-align"]},{type:"kern",size:-(t.height+x)},{type:"elem",elem:c},{type:"kern",size:f}]},e);if(r.index){var A=e.havingStyle(E.SCRIPTSCRIPT),q=G(r.index,A,e),_=.6*(w.height-w.depth),D=y.makeVList({positionType:"shift",positionData:-_,children:[{type:"elem",elem:q}]},e),N=y.makeSpan(["root"],[D]);return y.makeSpan(["mord","sqrt"],[N,w],e)}else return y.makeSpan(["mord","sqrt"],[w],e)},mathmlBuilder(r,e){var{body:t,index:a}=r;return a?new M.MathNode("mroot",[X(t,e),X(a,e)]):new M.MathNode("msqrt",[X(t,e)])}});var fr={display:E.DISPLAY,text:E.TEXT,script:E.SCRIPT,scriptscript:E.SCRIPTSCRIPT};B({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r,e){var{breakOnTokenText:t,funcName:a,parser:n}=r,s=n.parseExpression(!0,t),l=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:l,body:s}},htmlBuilder(r,e){var t=fr[r.style],a=e.havingStyle(t).withFont("");return ma(r.body,a,e)},mathmlBuilder(r,e){var t=fr[r.style],a=e.havingStyle(t),n=m0(r.body,a),s=new M.MathNode("mstyle",n),l={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},h=l[r.style];return s.setAttribute("scriptlevel",h[0]),s.setAttribute("displaystyle",h[1]),s}});var on=function(e,t){var a=e.base;if(a)if(a.type==="op"){var n=a.limits&&(t.style.size===E.DISPLAY.size||a.alwaysHandleSupSub);return n?se:null}else if(a.type==="operatorname"){var s=a.alwaysHandleSupSub&&(t.style.size===E.DISPLAY.size||a.limits);return s?ca:null}else{if(a.type==="accent")return O.isCharacterBox(a.base)?_t:null;if(a.type==="horizBrace"){var l=!e.sub;return l===a.isOver?la:null}else return null}else return null};j0({type:"supsub",htmlBuilder(r,e){var t=on(r,e);if(t)return t(r,e);var{base:a,sup:n,sub:s}=r,l=G(a,e),h,c,f=e.fontMetrics(),v=0,b=0,x=a&&O.isCharacterBox(a);if(n){var w=e.havingStyle(e.style.sup());h=G(n,w,e),x||(v=l.height-w.fontMetrics().supDrop*w.sizeMultiplier/e.sizeMultiplier)}if(s){var A=e.havingStyle(e.style.sub());c=G(s,A,e),x||(b=l.depth+A.fontMetrics().subDrop*A.sizeMultiplier/e.sizeMultiplier)}var q;e.style===E.DISPLAY?q=f.sup1:e.style.cramped?q=f.sup3:q=f.sup2;var _=e.sizeMultiplier,D=T(.5/f.ptPerEm/_),N=null;if(c){var $=r.base&&r.base.type==="op"&&r.base.name&&(r.base.name==="\\oiint"||r.base.name==="\\oiiint");(l instanceof c0||$)&&(N=T(-l.italic))}var H;if(h&&c){v=Math.max(v,q,h.depth+.25*f.xHeight),b=Math.max(b,f.sub2);var F=f.defaultRuleThickness,P=4*F;if(v-h.depth-(c.height-b)0&&(v+=V,b-=V)}var j=[{type:"elem",elem:c,shift:b,marginRight:D,marginLeft:N},{type:"elem",elem:h,shift:-v,marginRight:D}];H=y.makeVList({positionType:"individualShift",children:j},e)}else if(c){b=Math.max(b,f.sub1,c.height-.8*f.xHeight);var U=[{type:"elem",elem:c,marginLeft:N,marginRight:D}];H=y.makeVList({positionType:"shift",positionData:b,children:U},e)}else if(h)v=Math.max(v,q,h.depth+.25*f.xHeight),H=y.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:h,marginRight:D}]},e);else throw new Error("supsub must have either sup or sub.");var D0=bt(l,"right")||"mord";return y.makeSpan([D0],[l,y.makeSpan(["msupsub"],[H])],e)},mathmlBuilder(r,e){var t=!1,a,n;r.base&&r.base.type==="horizBrace"&&(n=!!r.sup,n===r.base.isOver&&(t=!0,a=r.base.isOver)),r.base&&(r.base.type==="op"||r.base.type==="operatorname")&&(r.base.parentIsSupSub=!0);var s=[X(r.base,e)];r.sub&&s.push(X(r.sub,e)),r.sup&&s.push(X(r.sup,e));var l;if(t)l=a?"mover":"munder";else if(r.sub)if(r.sup){var f=r.base;f&&f.type==="op"&&f.limits&&e.style===E.DISPLAY||f&&f.type==="operatorname"&&f.alwaysHandleSupSub&&(e.style===E.DISPLAY||f.limits)?l="munderover":l="msubsup"}else{var c=r.base;c&&c.type==="op"&&c.limits&&(e.style===E.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===E.DISPLAY)?l="munder":l="msub"}else{var h=r.base;h&&h.type==="op"&&h.limits&&(e.style===E.DISPLAY||h.alwaysHandleSupSub)||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(h.limits||e.style===E.DISPLAY)?l="mover":l="msup"}return new M.MathNode(l,s)}});j0({type:"atom",htmlBuilder(r,e){return y.mathsym(r.text,r.mode,e,["m"+r.family])},mathmlBuilder(r,e){var t=new M.MathNode("mo",[y0(r.text,r.mode)]);if(r.family==="bin"){var a=Dt(r,e);a==="bold-italic"&&t.setAttribute("mathvariant",a)}else r.family==="punct"?t.setAttribute("separator","true"):(r.family==="open"||r.family==="close")&&t.setAttribute("stretchy","false");return t}});var da={mi:"italic",mn:"normal",mtext:"normal"};j0({type:"mathord",htmlBuilder(r,e){return y.makeOrd(r,e,"mathord")},mathmlBuilder(r,e){var t=new M.MathNode("mi",[y0(r.text,r.mode,e)]),a=Dt(r,e)||"italic";return a!==da[t.type]&&t.setAttribute("mathvariant",a),t}});j0({type:"textord",htmlBuilder(r,e){return y.makeOrd(r,e,"textord")},mathmlBuilder(r,e){var t=y0(r.text,r.mode,e),a=Dt(r,e)||"normal",n;return r.mode==="text"?n=new M.MathNode("mtext",[t]):/[0-9]/.test(r.text)?n=new M.MathNode("mn",[t]):r.text==="\\prime"?n=new M.MathNode("mo",[t]):n=new M.MathNode("mi",[t]),a!==da[n.type]&&n.setAttribute("mathvariant",a),n}});var ct={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},mt={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};j0({type:"spacing",htmlBuilder(r,e){if(mt.hasOwnProperty(r.text)){var t=mt[r.text].className||"";if(r.mode==="text"){var a=y.makeOrd(r,e,"textord");return a.classes.push(t),a}else return y.makeSpan(["mspace",t],[y.mathsym(r.text,r.mode,e)],e)}else{if(ct.hasOwnProperty(r.text))return y.makeSpan(["mspace",ct[r.text]],[],e);throw new z('Unknown type of space "'+r.text+'"')}},mathmlBuilder(r,e){var t;if(mt.hasOwnProperty(r.text))t=new M.MathNode("mtext",[new M.TextNode("\xA0")]);else{if(ct.hasOwnProperty(r.text))return new M.MathNode("mspace");throw new z('Unknown type of space "'+r.text+'"')}return t}});var vr=()=>{var r=new M.MathNode("mtd",[]);return r.setAttribute("width","50%"),r};j0({type:"tag",mathmlBuilder(r,e){var t=new M.MathNode("mtable",[new M.MathNode("mtr",[vr(),new M.MathNode("mtd",[V0(r.body,e)]),vr(),new M.MathNode("mtd",[V0(r.tag,e)])])]);return t.setAttribute("width","100%"),t}});var gr={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},br={"\\textbf":"textbf","\\textmd":"textmd"},ln={"\\textit":"textit","\\textup":"textup"},yr=(r,e)=>{var t=r.font;if(t){if(gr[t])return e.withTextFontFamily(gr[t]);if(br[t])return e.withTextFontWeight(br[t]);if(t==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(ln[t])};B({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"text",mode:t.mode,body:e0(n),font:a}},htmlBuilder(r,e){var t=yr(r,e),a=a0(r.body,t,!0);return y.makeSpan(["mord","text"],a,t)},mathmlBuilder(r,e){var t=yr(r,e);return V0(r.body,t)}});B({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"underline",mode:t.mode,body:e[0]}},htmlBuilder(r,e){var t=G(r.body,e),a=y.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,s=y.makeVList({positionType:"top",positionData:t.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:t}]},e);return y.makeSpan(["mord","underline"],[s],e)},mathmlBuilder(r,e){var t=new M.MathNode("mo",[new M.TextNode("\u203E")]);t.setAttribute("stretchy","true");var a=new M.MathNode("munder",[X(r.body,e),t]);return a.setAttribute("accentunder","true"),a}});B({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(r,e){var{parser:t}=r;return{type:"vcenter",mode:t.mode,body:e[0]}},htmlBuilder(r,e){var t=G(r.body,e),a=e.fontMetrics().axisHeight,n=.5*(t.height-a-(t.depth+a));return y.makeVList({positionType:"shift",positionData:n,children:[{type:"elem",elem:t}]},e)},mathmlBuilder(r,e){return new M.MathNode("mpadded",[X(r.body,e)],["vcenter"])}});B({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(r,e,t){throw new z("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(r,e){for(var t=xr(r),a=[],n=e.havingStyle(e.style.text()),s=0;sr.body.replace(/ /g,r.star?"\u2423":"\xA0"),P0=Er,pa=`[ \r ]`,un="\\\\[a-zA-Z@]+",hn="\\\\[^\uD800-\uDFFF]",cn="("+un+")"+pa+"*",mn=`\\\\( |[ \r ]+ ?)[ \r ]*`,kt="[\u0300-\u036F]",dn=new RegExp(kt+"+$"),pn="("+pa+"+)|"+(mn+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(kt+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(kt+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+cn)+("|"+hn+")"),Pe=class{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(pn,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new b0("EOF",new d0(this,t,t));var a=this.tokenRegex.exec(e);if(a===null||a.index!==t)throw new z("Unexpected character: '"+e[t]+"'",new b0(e[t],new d0(this,t,t+1)));var n=a[6]||a[3]||(a[2]?"\\ ":" ");if(this.catcodes[n]===14){var s=e.indexOf(` `,this.tokenRegex.lastIndex);return s===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}return new b0(n,new d0(this,t,this.tokenRegex.lastIndex))}},Mt=class{constructor(e,t){e===void 0&&(e={}),t===void 0&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new z("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(e[t]==null?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,a){if(a===void 0&&(a=!1),a){for(var n=0;n0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var s=this.undefStack[this.undefStack.length-1];s&&!s.hasOwnProperty(e)&&(s[e]=this.current[e])}t==null?delete this.current[e]:this.current[e]=t}},fn=aa;m("\\noexpand",function(r){var e=r.popToken();return r.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});m("\\expandafter",function(r){var e=r.popToken();return r.expandOnce(!0),{tokens:[e],numArgs:0}});m("\\@firstoftwo",function(r){var e=r.consumeArgs(2);return{tokens:e[0],numArgs:0}});m("\\@secondoftwo",function(r){var e=r.consumeArgs(2);return{tokens:e[1],numArgs:0}});m("\\@ifnextchar",function(r){var e=r.consumeArgs(3);r.consumeSpaces();var t=r.future();return e[0].length===1&&e[0][0].text===t.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});m("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");m("\\TextOrMath",function(r){var e=r.consumeArgs(2);return r.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var wr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};m("\\char",function(r){var e=r.popToken(),t,a="";if(e.text==="'")t=8,e=r.popToken();else if(e.text==='"')t=16,e=r.popToken();else if(e.text==="`")if(e=r.popToken(),e.text[0]==="\\")a=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new z("\\char` missing argument");a=e.text.charCodeAt(0)}else t=10;if(t){if(a=wr[e.text],a==null||a>=t)throw new z("Invalid base-"+t+" digit "+e.text);for(var n;(n=wr[r.future().text])!=null&&n{var n=r.consumeArg().tokens;if(n.length!==1)throw new z("\\newcommand's first argument must be a macro name");var s=n[0].text,l=r.isDefined(s);if(l&&!e)throw new z("\\newcommand{"+s+"} attempting to redefine "+(s+"; use \\renewcommand"));if(!l&&!t)throw new z("\\renewcommand{"+s+"} when command "+s+" does not yet exist; use \\newcommand");var h=0;if(n=r.consumeArg().tokens,n.length===1&&n[0].text==="["){for(var c="",f=r.expandNextToken();f.text!=="]"&&f.text!=="EOF";)c+=f.text,f=r.expandNextToken();if(!c.match(/^\s*[0-9]+\s*$/))throw new z("Invalid number of arguments: "+c);h=parseInt(c),n=r.consumeArg().tokens}return l&&a||r.macros.set(s,{tokens:n,numArgs:h}),""};m("\\newcommand",r=>Ft(r,!1,!0,!1));m("\\renewcommand",r=>Ft(r,!0,!1,!1));m("\\providecommand",r=>Ft(r,!0,!0,!0));m("\\message",r=>{var e=r.consumeArgs(1)[0];return console.log(e.reverse().map(t=>t.text).join("")),""});m("\\errmessage",r=>{var e=r.consumeArgs(1)[0];return console.error(e.reverse().map(t=>t.text).join("")),""});m("\\show",r=>{var e=r.popToken(),t=e.text;return console.log(e,r.macros.get(t),P0[t],Y.math[t],Y.text[t]),""});m("\\bgroup","{");m("\\egroup","}");m("~","\\nobreakspace");m("\\lq","`");m("\\rq","'");m("\\aa","\\r a");m("\\AA","\\r A");m("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");m("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");m("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");m("\u212C","\\mathscr{B}");m("\u2130","\\mathscr{E}");m("\u2131","\\mathscr{F}");m("\u210B","\\mathscr{H}");m("\u2110","\\mathscr{I}");m("\u2112","\\mathscr{L}");m("\u2133","\\mathscr{M}");m("\u211B","\\mathscr{R}");m("\u212D","\\mathfrak{C}");m("\u210C","\\mathfrak{H}");m("\u2128","\\mathfrak{Z}");m("\\Bbbk","\\Bbb{k}");m("\xB7","\\cdotp");m("\\llap","\\mathllap{\\textrm{#1}}");m("\\rlap","\\mathrlap{\\textrm{#1}}");m("\\clap","\\mathclap{\\textrm{#1}}");m("\\mathstrut","\\vphantom{(}");m("\\underbar","\\underline{\\text{#1}}");m("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');m("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");m("\\ne","\\neq");m("\u2260","\\neq");m("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");m("\u2209","\\notin");m("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");m("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");m("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");m("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");m("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");m("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");m("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");m("\u27C2","\\perp");m("\u203C","\\mathclose{!\\mkern-0.8mu!}");m("\u220C","\\notni");m("\u231C","\\ulcorner");m("\u231D","\\urcorner");m("\u231E","\\llcorner");m("\u231F","\\lrcorner");m("\xA9","\\copyright");m("\xAE","\\textregistered");m("\uFE0F","\\textregistered");m("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');m("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');m("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');m("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');m("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");m("\u22EE","\\vdots");m("\\varGamma","\\mathit{\\Gamma}");m("\\varDelta","\\mathit{\\Delta}");m("\\varTheta","\\mathit{\\Theta}");m("\\varLambda","\\mathit{\\Lambda}");m("\\varXi","\\mathit{\\Xi}");m("\\varPi","\\mathit{\\Pi}");m("\\varSigma","\\mathit{\\Sigma}");m("\\varUpsilon","\\mathit{\\Upsilon}");m("\\varPhi","\\mathit{\\Phi}");m("\\varPsi","\\mathit{\\Psi}");m("\\varOmega","\\mathit{\\Omega}");m("\\substack","\\begin{subarray}{c}#1\\end{subarray}");m("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");m("\\boxed","\\fbox{$\\displaystyle{#1}$}");m("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");m("\\implies","\\DOTSB\\;\\Longrightarrow\\;");m("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");m("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");m("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Sr={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};m("\\dots",function(r){var e="\\dotso",t=r.expandAfterFuture().text;return t in Sr?e=Sr[t]:(t.slice(0,4)==="\\not"||t in Y.math&&O.contains(["bin","rel"],Y.math[t].group))&&(e="\\dotsb"),e});var Ht={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};m("\\dotso",function(r){var e=r.future().text;return e in Ht?"\\ldots\\,":"\\ldots"});m("\\dotsc",function(r){var e=r.future().text;return e in Ht&&e!==","?"\\ldots\\,":"\\ldots"});m("\\cdots",function(r){var e=r.future().text;return e in Ht?"\\@cdots\\,":"\\@cdots"});m("\\dotsb","\\cdots");m("\\dotsm","\\cdots");m("\\dotsi","\\!\\cdots");m("\\dotsx","\\ldots\\,");m("\\DOTSI","\\relax");m("\\DOTSB","\\relax");m("\\DOTSX","\\relax");m("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");m("\\,","\\tmspace+{3mu}{.1667em}");m("\\thinspace","\\,");m("\\>","\\mskip{4mu}");m("\\:","\\tmspace+{4mu}{.2222em}");m("\\medspace","\\:");m("\\;","\\tmspace+{5mu}{.2777em}");m("\\thickspace","\\;");m("\\!","\\tmspace-{3mu}{.1667em}");m("\\negthinspace","\\!");m("\\negmedspace","\\tmspace-{4mu}{.2222em}");m("\\negthickspace","\\tmspace-{5mu}{.277em}");m("\\enspace","\\kern.5em ");m("\\enskip","\\hskip.5em\\relax");m("\\quad","\\hskip1em\\relax");m("\\qquad","\\hskip2em\\relax");m("\\tag","\\@ifstar\\tag@literal\\tag@paren");m("\\tag@paren","\\tag@literal{({#1})}");m("\\tag@literal",r=>{if(r.macros.get("\\df@tag"))throw new z("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});m("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");m("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");m("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");m("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");m("\\newline","\\\\\\relax");m("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var fa=T(z0["Main-Regular"][84][1]-.7*z0["Main-Regular"][65][1]);m("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+fa+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");m("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+fa+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");m("\\hspace","\\@ifstar\\@hspacer\\@hspace");m("\\@hspace","\\hskip #1\\relax");m("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");m("\\ordinarycolon",":");m("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");m("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');m("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');m("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');m("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');m("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');m("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');m("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');m("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');m("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');m("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');m("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');m("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');m("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');m("\u2237","\\dblcolon");m("\u2239","\\eqcolon");m("\u2254","\\coloneqq");m("\u2255","\\eqqcolon");m("\u2A74","\\Coloneqq");m("\\ratio","\\vcentcolon");m("\\coloncolon","\\dblcolon");m("\\colonequals","\\coloneqq");m("\\coloncolonequals","\\Coloneqq");m("\\equalscolon","\\eqqcolon");m("\\equalscoloncolon","\\Eqqcolon");m("\\colonminus","\\coloneq");m("\\coloncolonminus","\\Coloneq");m("\\minuscolon","\\eqcolon");m("\\minuscoloncolon","\\Eqcolon");m("\\coloncolonapprox","\\Colonapprox");m("\\coloncolonsim","\\Colonsim");m("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");m("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");m("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");m("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");m("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");m("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");m("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");m("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");m("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");m("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");m("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");m("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");m("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");m("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");m("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");m("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");m("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");m("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");m("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");m("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");m("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");m("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");m("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");m("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");m("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");m("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");m("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");m("\\imath","\\html@mathml{\\@imath}{\u0131}");m("\\jmath","\\html@mathml{\\@jmath}{\u0237}");m("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");m("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");m("\u27E6","\\llbracket");m("\u27E7","\\rrbracket");m("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");m("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");m("\u2983","\\lBrace");m("\u2984","\\rBrace");m("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");m("\u29B5","\\minuso");m("\\darr","\\downarrow");m("\\dArr","\\Downarrow");m("\\Darr","\\Downarrow");m("\\lang","\\langle");m("\\rang","\\rangle");m("\\uarr","\\uparrow");m("\\uArr","\\Uparrow");m("\\Uarr","\\Uparrow");m("\\N","\\mathbb{N}");m("\\R","\\mathbb{R}");m("\\Z","\\mathbb{Z}");m("\\alef","\\aleph");m("\\alefsym","\\aleph");m("\\Alpha","\\mathrm{A}");m("\\Beta","\\mathrm{B}");m("\\bull","\\bullet");m("\\Chi","\\mathrm{X}");m("\\clubs","\\clubsuit");m("\\cnums","\\mathbb{C}");m("\\Complex","\\mathbb{C}");m("\\Dagger","\\ddagger");m("\\diamonds","\\diamondsuit");m("\\empty","\\emptyset");m("\\Epsilon","\\mathrm{E}");m("\\Eta","\\mathrm{H}");m("\\exist","\\exists");m("\\harr","\\leftrightarrow");m("\\hArr","\\Leftrightarrow");m("\\Harr","\\Leftrightarrow");m("\\hearts","\\heartsuit");m("\\image","\\Im");m("\\infin","\\infty");m("\\Iota","\\mathrm{I}");m("\\isin","\\in");m("\\Kappa","\\mathrm{K}");m("\\larr","\\leftarrow");m("\\lArr","\\Leftarrow");m("\\Larr","\\Leftarrow");m("\\lrarr","\\leftrightarrow");m("\\lrArr","\\Leftrightarrow");m("\\Lrarr","\\Leftrightarrow");m("\\Mu","\\mathrm{M}");m("\\natnums","\\mathbb{N}");m("\\Nu","\\mathrm{N}");m("\\Omicron","\\mathrm{O}");m("\\plusmn","\\pm");m("\\rarr","\\rightarrow");m("\\rArr","\\Rightarrow");m("\\Rarr","\\Rightarrow");m("\\real","\\Re");m("\\reals","\\mathbb{R}");m("\\Reals","\\mathbb{R}");m("\\Rho","\\mathrm{P}");m("\\sdot","\\cdot");m("\\sect","\\S");m("\\spades","\\spadesuit");m("\\sub","\\subset");m("\\sube","\\subseteq");m("\\supe","\\supseteq");m("\\Tau","\\mathrm{T}");m("\\thetasym","\\vartheta");m("\\weierp","\\wp");m("\\Zeta","\\mathrm{Z}");m("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");m("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");m("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");m("\\bra","\\mathinner{\\langle{#1}|}");m("\\ket","\\mathinner{|{#1}\\rangle}");m("\\braket","\\mathinner{\\langle{#1}\\rangle}");m("\\Bra","\\left\\langle#1\\right|");m("\\Ket","\\left|#1\\right\\rangle");var va=r=>e=>{var t=e.consumeArg().tokens,a=e.consumeArg().tokens,n=e.consumeArg().tokens,s=e.consumeArg().tokens,l=e.macros.get("|"),h=e.macros.get("\\|");e.macros.beginGroup();var c=b=>x=>{r&&(x.macros.set("|",l),n.length&&x.macros.set("\\|",h));var w=b;if(!b&&n.length){var A=x.future();A.text==="|"&&(x.popToken(),w=!0)}return{tokens:w?n:a,numArgs:0}};e.macros.set("|",c(!1)),n.length&&e.macros.set("\\|",c(!0));var f=e.consumeArg().tokens,v=e.expandTokens([...s,...f,...t]);return e.macros.endGroup(),{tokens:v.reverse(),numArgs:0}};m("\\bra@ket",va(!1));m("\\bra@set",va(!0));m("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");m("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");m("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");m("\\angln","{\\angl n}");m("\\blue","\\textcolor{##6495ed}{#1}");m("\\orange","\\textcolor{##ffa500}{#1}");m("\\pink","\\textcolor{##ff00af}{#1}");m("\\red","\\textcolor{##df0030}{#1}");m("\\green","\\textcolor{##28ae7b}{#1}");m("\\gray","\\textcolor{gray}{#1}");m("\\purple","\\textcolor{##9d38bd}{#1}");m("\\blueA","\\textcolor{##ccfaff}{#1}");m("\\blueB","\\textcolor{##80f6ff}{#1}");m("\\blueC","\\textcolor{##63d9ea}{#1}");m("\\blueD","\\textcolor{##11accd}{#1}");m("\\blueE","\\textcolor{##0c7f99}{#1}");m("\\tealA","\\textcolor{##94fff5}{#1}");m("\\tealB","\\textcolor{##26edd5}{#1}");m("\\tealC","\\textcolor{##01d1c1}{#1}");m("\\tealD","\\textcolor{##01a995}{#1}");m("\\tealE","\\textcolor{##208170}{#1}");m("\\greenA","\\textcolor{##b6ffb0}{#1}");m("\\greenB","\\textcolor{##8af281}{#1}");m("\\greenC","\\textcolor{##74cf70}{#1}");m("\\greenD","\\textcolor{##1fab54}{#1}");m("\\greenE","\\textcolor{##0d923f}{#1}");m("\\goldA","\\textcolor{##ffd0a9}{#1}");m("\\goldB","\\textcolor{##ffbb71}{#1}");m("\\goldC","\\textcolor{##ff9c39}{#1}");m("\\goldD","\\textcolor{##e07d10}{#1}");m("\\goldE","\\textcolor{##a75a05}{#1}");m("\\redA","\\textcolor{##fca9a9}{#1}");m("\\redB","\\textcolor{##ff8482}{#1}");m("\\redC","\\textcolor{##f9685d}{#1}");m("\\redD","\\textcolor{##e84d39}{#1}");m("\\redE","\\textcolor{##bc2612}{#1}");m("\\maroonA","\\textcolor{##ffbde0}{#1}");m("\\maroonB","\\textcolor{##ff92c6}{#1}");m("\\maroonC","\\textcolor{##ed5fa6}{#1}");m("\\maroonD","\\textcolor{##ca337c}{#1}");m("\\maroonE","\\textcolor{##9e034e}{#1}");m("\\purpleA","\\textcolor{##ddd7ff}{#1}");m("\\purpleB","\\textcolor{##c6b9fc}{#1}");m("\\purpleC","\\textcolor{##aa87ff}{#1}");m("\\purpleD","\\textcolor{##7854ab}{#1}");m("\\purpleE","\\textcolor{##543b78}{#1}");m("\\mintA","\\textcolor{##f5f9e8}{#1}");m("\\mintB","\\textcolor{##edf2df}{#1}");m("\\mintC","\\textcolor{##e0e5cc}{#1}");m("\\grayA","\\textcolor{##f6f7f7}{#1}");m("\\grayB","\\textcolor{##f0f1f2}{#1}");m("\\grayC","\\textcolor{##e3e5e6}{#1}");m("\\grayD","\\textcolor{##d6d8da}{#1}");m("\\grayE","\\textcolor{##babec2}{#1}");m("\\grayF","\\textcolor{##888d93}{#1}");m("\\grayG","\\textcolor{##626569}{#1}");m("\\grayH","\\textcolor{##3b3e40}{#1}");m("\\grayI","\\textcolor{##21242c}{#1}");m("\\kaBlue","\\textcolor{##314453}{#1}");m("\\kaGreen","\\textcolor{##71B307}{#1}");var ga={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},zt=class{constructor(e,t,a){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Mt(fn,t.macros),this.mode=a,this.stack=[]}feed(e){this.lexer=new Pe(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var t,a,n;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;t=this.popToken(),{tokens:n,end:a}=this.consumeArg(["]"])}else({tokens:n,start:t,end:a}=this.consumeArg());return this.pushToken(new b0("EOF",a.loc)),this.pushTokens(n),t.range(a,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var t=[],a=e&&e.length>0;a||this.consumeSpaces();var n=this.future(),s,l=0,h=0;do{if(s=this.popToken(),t.push(s),s.text==="{")++l;else if(s.text==="}"){if(--l,l===-1)throw new z("Extra }",s)}else if(s.text==="EOF")throw new z("Unexpected end of input in a macro argument, expected '"+(e&&a?e[h]:"}")+"'",s);if(e&&a)if((l===0||l===1&&e[h]==="{")&&s.text===e[h]){if(++h,h===e.length){t.splice(-h,h);break}}else h=0}while(l!==0||a);return n.text==="{"&&t[t.length-1].text==="}"&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:n,end:s}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new z("The length of delimiters doesn't match the number of args!");for(var a=t[0],n=0;nthis.settings.maxExpand)throw new z("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),a=t.text,n=t.noexpand?null:this._getExpansion(a);if(n==null||e&&n.unexpandable){if(e&&n==null&&a[0]==="\\"&&!this.isDefined(a))throw new z("Undefined control sequence: "+a);return this.pushToken(t),!1}this.countExpansion(1);var s=n.tokens,l=this.consumeArgs(n.numArgs,n.delimiters);if(n.numArgs){s=s.slice();for(var h=s.length-1;h>=0;--h){var c=s[h];if(c.text==="#"){if(h===0)throw new z("Incomplete placeholder at end of macro body",c);if(c=s[--h],c.text==="#")s.splice(h+1,1);else if(/^[1-9]$/.test(c.text))s.splice(h,2,...l[+c.text-1]);else throw new z("Not a valid argument number",c)}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new b0(e)]):void 0}expandTokens(e){var t=[],a=this.stack.length;for(this.pushTokens(e);this.stack.length>a;)if(this.expandOnce(!0)===!1){var n=this.stack.pop();n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(n)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t&&t.map(a=>a.text).join("")}_getExpansion(e){var t=this.macros.get(e);if(t==null)return t;if(e.length===1){var a=this.lexer.catcodes[e];if(a!=null&&a!==13)return}var n=typeof t=="function"?t(this):t;if(typeof n=="string"){var s=0;if(n.indexOf("#")!==-1)for(var l=n.replace(/##/g,"");l.indexOf("#"+(s+1))!==-1;)++s;for(var h=new Pe(n,this.settings),c=[],f=h.lex();f.text!=="EOF";)c.push(f),f=h.lex();c.reverse();var v={tokens:c,numArgs:s};return v}return n}isDefined(e){return this.macros.has(e)||P0.hasOwnProperty(e)||Y.math.hasOwnProperty(e)||Y.text.hasOwnProperty(e)||ga.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return t!=null?typeof t=="string"||typeof t=="function"||!t.unexpandable:P0.hasOwnProperty(e)&&!P0[e].primitive}},kr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Ne=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),dt={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},Mr={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},Ge=class r{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new zt(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(t===void 0&&(t=!0),this.fetch().text!==e)throw new z("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new b0("}")),this.gullet.pushTokens(e);var a=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,a}parseExpression(e,t){for(var a=[];;){this.mode==="math"&&this.consumeSpaces();var n=this.fetch();if(r.endOfExpression.indexOf(n.text)!==-1||t&&n.text===t||e&&P0[n.text]&&P0[n.text].infix)break;var s=this.parseAtom(t);if(s){if(s.type==="internal")continue}else break;a.push(s)}return this.mode==="text"&&this.formLigatures(a),this.handleInfixNodes(a)}handleInfixNodes(e){for(var t=-1,a,n=0;n=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var h=Y[this.mode][t].group,c=d0.range(e),f;if(i1.hasOwnProperty(h)){var v=h;f={type:"atom",mode:this.mode,family:v,loc:c,text:t}}else f={type:h,mode:this.mode,loc:c,text:t};l=f}else if(t.charCodeAt(0)>=128)this.settings.strict&&(Ar(t.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'"'+(" ("+t.charCodeAt(0)+")"),e)),l={type:"textord",mode:"text",loc:d0.range(e),text:t};else return null;if(this.consume(),s)for(var b=0;b=0;n--)r[n].loc.start>a&&(t+=" ",a=r[n].loc.start),t+=r[n].text,a+=r[n].text.length;var s=W.go(S.go(t,e));return s},S={go:function(r,e){if(!r)return[];e===void 0&&(e="ce");var t="0",a={};a.parenthesisLevel=0,r=r.replace(/\n/g," "),r=r.replace(/[\u2212\u2013\u2014\u2010]/g,"-"),r=r.replace(/[\u2026]/g,"...");for(var n,s=10,l=[];;){n!==r?(s=10,n=r):s--;var h=S.stateMachines[e],c=h.transitions[t]||h.transitions["*"];e:for(var f=0;f0){if(b.revisit||(r=v.remainder),!b.toContinue)break e}else return l}}if(s<=0)throw["MhchemBugU","mhchem bug U. Please report."]}},concatArray:function(r,e){if(e)if(Array.isArray(e))for(var t=0;t":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"- orbital overlap":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,"pm-operator":/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,operator:/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"\\bond{(...)}":function(r){return S.patterns.findObserveGroups(r,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,CMT:/^[CMT](?=\[)/,"[(...)]":function(r){return S.patterns.findObserveGroups(r,"[","","","]")},"1st-level escape":/^(&|\\\\|\\hline)\s*/,"\\,":/^(?:\\[,\ ;:])/,"\\x{}{}":function(r){return S.patterns.findObserveGroups(r,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"\\x{}":function(r){return S.patterns.findObserveGroups(r,"",/^\\[a-zA-Z]+\{/,"}","")},"\\ca":/^\\ca(?:\s+|(?![a-zA-Z]))/,"\\x":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\/~|]/,"\\frac{(...)}":function(r){return S.patterns.findObserveGroups(r,"\\frac{","","","}","{","","","}")},"\\overset{(...)}":function(r){return S.patterns.findObserveGroups(r,"\\overset{","","","}","{","","","}")},"\\underset{(...)}":function(r){return S.patterns.findObserveGroups(r,"\\underset{","","","}","{","","","}")},"\\underbrace{(...)}":function(r){return S.patterns.findObserveGroups(r,"\\underbrace{","","","}_","{","","","}")},"\\color{(...)}0":function(r){return S.patterns.findObserveGroups(r,"\\color{","","","}")},"\\color{(...)}{(...)}1":function(r){return S.patterns.findObserveGroups(r,"\\color{","","","}","{","","","}")},"\\color(...){(...)}2":function(r){return S.patterns.findObserveGroups(r,"\\color","\\","",/^(?=\{)/,"{","","","}")},"\\ce{(...)}":function(r){return S.patterns.findObserveGroups(r,"\\ce{","","","}")},oxidation$:/^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"d-oxidation$":/^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"roman numeral":/^[IVX]+/,"1/2$":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,amount:function(r){var e;if(e=r.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/),e)return{match_:e[0],remainder:r.substr(e[0].length)};var t=S.patterns.findObserveGroups(r,"","$","$","");return t&&(e=t.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/),e)?{match_:e[0],remainder:r.substr(e[0].length)}:null},amount2:function(r){return this.amount(r)},"(KV letters),":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(r){if(r.match(/^\([a-z]+\)$/))return null;var e=r.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:r.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*[*.]\s*/},findObserveGroups:function(r,e,t,a,n,s,l,h,c,f){var v=function(D,N){if(typeof N=="string")return D.indexOf(N)!==0?null:N;var $=D.match(N);return $?$[0]:null},b=function(D,N,$){for(var H=0;N0,null},x=v(r,e);if(x===null||(r=r.substr(x.length),x=v(r,t),x===null))return null;var w=b(r,x.length,a||n);if(w===null)return null;var A=r.substring(0,a?w.endMatchEnd:w.endMatchBegin);if(s||l){var q=this.findObserveGroups(r.substr(w.endMatchEnd),s,l,h,c);if(q===null)return null;var _=[A,q.match_];return{match_:f?_.join(""):_,remainder:q.remainder}}else return{match_:A,remainder:r.substr(w.endMatchEnd)}},match_:function(r,e){var t=S.patterns.patterns[r];if(t===void 0)throw["MhchemBugP","mhchem bug P. Please report. ("+r+")"];if(typeof t=="function")return S.patterns.patterns[r](e);var a=e.match(t);if(a){var n;return a[2]?n=[a[1],a[2]]:a[1]?n=a[1]:n=a[0],{match_:n,remainder:e.substr(a[0].length)}}return null}},actions:{"a=":function(r,e){r.a=(r.a||"")+e},"b=":function(r,e){r.b=(r.b||"")+e},"p=":function(r,e){r.p=(r.p||"")+e},"o=":function(r,e){r.o=(r.o||"")+e},"q=":function(r,e){r.q=(r.q||"")+e},"d=":function(r,e){r.d=(r.d||"")+e},"rm=":function(r,e){r.rm=(r.rm||"")+e},"text=":function(r,e){r.text_=(r.text_||"")+e},insert:function(r,e,t){return{type_:t}},"insert+p1":function(r,e,t){return{type_:t,p1:e}},"insert+p1+p2":function(r,e,t){return{type_:t,p1:e[0],p2:e[1]}},copy:function(r,e){return e},rm:function(r,e){return{type_:"rm",p1:e||""}},text:function(r,e){return S.go(e,"text")},"{text}":function(r,e){var t=["{"];return S.concatArray(t,S.go(e,"text")),t.push("}"),t},"tex-math":function(r,e){return S.go(e,"tex-math")},"tex-math tight":function(r,e){return S.go(e,"tex-math tight")},bond:function(r,e,t){return{type_:"bond",kind_:t||e}},"color0-output":function(r,e){return{type_:"color0",color:e[0]}},ce:function(r,e){return S.go(e)},"1/2":function(r,e){var t=[];e.match(/^[+\-]/)&&(t.push(e.substr(0,1)),e=e.substr(1));var a=e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);return a[1]=a[1].replace(/\$/g,""),t.push({type_:"frac",p1:a[1],p2:a[2]}),a[3]&&(a[3]=a[3].replace(/\$/g,""),t.push({type_:"tex-math",p1:a[3]})),t},"9,9":function(r,e){return S.go(e,"9,9")}},createTransitions:function(r){var e,t,a,n,s={};for(e in r)for(t in r[e])for(a=t.split("|"),r[e][t].stateArray=a,n=0;n":{"0|1|2|3":{action_:"r=",nextState:"r"},"a|as":{action_:["output","r="],nextState:"r"},"*":{action_:["output","r="],nextState:"r"}},"+":{o:{action_:"d= kv",nextState:"d"},"d|D":{action_:"d=",nextState:"d"},q:{action_:"d=",nextState:"qd"},"qd|qD":{action_:"d=",nextState:"qd"},dq:{action_:["output","d="],nextState:"d"},3:{action_:["sb=false","output","operator"],nextState:"0"}},amount:{"0|2":{action_:"a=",nextState:"a"}},"pm-operator":{"0|1|2|a|as":{action_:["sb=false","output",{type_:"operator",option:"\\pm"}],nextState:"0"}},operator:{"0|1|2|a|as":{action_:["sb=false","output","operator"],nextState:"0"}},"-$":{"o|q":{action_:["charge or bond","output"],nextState:"qd"},d:{action_:"d=",nextState:"d"},D:{action_:["output",{type_:"bond",option:"-"}],nextState:"3"},q:{action_:"d=",nextState:"qd"},qd:{action_:"d=",nextState:"qd"},"qD|dq":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},"-9":{"3|o":{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"3"}},"- orbital overlap":{o:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},d:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"}},"-":{"0|1|2":{action_:[{type_:"output",option:1},"beginsWithBond=true",{type_:"bond",option:"-"}],nextState:"3"},3:{action_:{type_:"bond",option:"-"}},a:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},as:{action_:[{type_:"output",option:2},{type_:"bond",option:"-"}],nextState:"3"},b:{action_:"b="},o:{action_:{type_:"- after o/d",option:!1},nextState:"2"},q:{action_:{type_:"- after o/d",option:!1},nextState:"2"},"d|qd|dq":{action_:{type_:"- after o/d",option:!0},nextState:"2"},"D|qD|p":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},amount2:{"1|3":{action_:"a=",nextState:"a"}},letters:{"0|1|2|3|a|as|b|p|bp|o":{action_:"o=",nextState:"o"},"q|dq":{action_:["output","o="],nextState:"o"},"d|D|qd|qD":{action_:"o after d",nextState:"o"}},digits:{o:{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},q:{action_:["output","o="],nextState:"o"},a:{action_:"o=",nextState:"o"}},"space A":{"b|p|bp":{}},space:{a:{nextState:"as"},0:{action_:"sb=false"},"1|2":{action_:"sb=true"},"r|rt|rd|rdt|rdq":{action_:"output",nextState:"0"},"*":{action_:["output","sb=true"],nextState:"1"}},"1st-level escape":{"1|2":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}]},"*":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}],nextState:"0"}},"[(...)]":{"r|rt":{action_:"rd=",nextState:"rd"},"rd|rdt":{action_:"rq=",nextState:"rdq"}},"...":{"o|d|D|dq|qd|qD":{action_:["output",{type_:"bond",option:"..."}],nextState:"3"},"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"ellipsis"}],nextState:"1"}},". |* ":{"*":{action_:["output",{type_:"insert",option:"addition compound"}],nextState:"1"}},"state of aggregation $":{"*":{action_:["output","state of aggregation"],nextState:"1"}},"{[(":{"a|as|o":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"0|1|2|3":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"*":{action_:["output","o=","output","parenthesisLevel++"],nextState:"2"}},")]}":{"0|1|2|3|b|p|bp|o":{action_:["o=","parenthesisLevel--"],nextState:"o"},"a|as|d|D|q|qd|qD|dq":{action_:["output","o=","parenthesisLevel--"],nextState:"o"}},", ":{"*":{action_:["output","comma"],nextState:"0"}},"^_":{"*":{}},"^{(...)}|^($...$)":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"D"},q:{action_:"d=",nextState:"qD"},"d|D|qd|qD|dq":{action_:["output","d="],nextState:"D"}},"^a|^\\x{}{}|^\\x{}|^\\x|'":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"d"},q:{action_:"d=",nextState:"qd"},"d|qd|D|qD":{action_:"d="},dq:{action_:["output","d="],nextState:"d"}},"_{(state of aggregation)}$":{"d|D|q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x":{"0|1|2|as":{action_:"p=",nextState:"p"},b:{action_:"p=",nextState:"bp"},"3|o":{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},"q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"=<>":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"#":{"0|1|2|3|a|as|o":{action_:[{type_:"output",option:2},{type_:"bond",option:"#"}],nextState:"3"}},"{}":{"*":{action_:{type_:"output",option:1},nextState:"1"}},"{...}":{"0|1|2|3|a|as|b|p|bp":{action_:"o=",nextState:"o"},"o|d|D|q|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"$...$":{a:{action_:"a="},"0|1|2|3|as|b|p|bp|o":{action_:"o=",nextState:"o"},"as|o":{action_:"o="},"q|d|D|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"\\bond{(...)}":{"*":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"\\frac{(...)}":{"*":{action_:[{type_:"output",option:1},"frac-output"],nextState:"3"}},"\\overset{(...)}":{"*":{action_:[{type_:"output",option:2},"overset-output"],nextState:"3"}},"\\underset{(...)}":{"*":{action_:[{type_:"output",option:2},"underset-output"],nextState:"3"}},"\\underbrace{(...)}":{"*":{action_:[{type_:"output",option:2},"underbrace-output"],nextState:"3"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:[{type_:"output",option:2},"color-output"],nextState:"3"}},"\\color{(...)}0":{"*":{action_:[{type_:"output",option:2},"color0-output"]}},"\\ce{(...)}":{"*":{action_:[{type_:"output",option:2},"ce"],nextState:"3"}},"\\,":{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"1"}},"\\x{}{}|\\x{}|\\x":{"0|1|2|3|a|as|b|p|bp|o|c0":{action_:["o=","output"],nextState:"3"},"*":{action_:["output","o=","output"],nextState:"3"}},others:{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"3"}},else2:{a:{action_:"a to o",nextState:"o",revisit:!0},as:{action_:["output","sb=true"],nextState:"1",revisit:!0},"r|rt|rd|rdt|rdq":{action_:["output"],nextState:"0",revisit:!0},"*":{action_:["output","copy"],nextState:"3"}}}),actions:{"o after d":function(r,e){var t;if((r.d||"").match(/^[0-9]+$/)){var a=r.d;r.d=void 0,t=this.output(r),r.b=a}else t=this.output(r);return S.actions["o="](r,e),t},"d= kv":function(r,e){r.d=e,r.dType="kv"},"charge or bond":function(r,e){if(r.beginsWithBond){var t=[];return S.concatArray(t,this.output(r)),S.concatArray(t,S.actions.bond(r,e,"-")),t}else r.d=e},"- after o/d":function(r,e,t){var a=S.patterns.match_("orbital",r.o||""),n=S.patterns.match_("one lowercase greek letter $",r.o||""),s=S.patterns.match_("one lowercase latin letter $",r.o||""),l=S.patterns.match_("$one lowercase latin letter$ $",r.o||""),h=e==="-"&&(a&&a.remainder===""||n||s||l);h&&!r.a&&!r.b&&!r.p&&!r.d&&!r.q&&!a&&s&&(r.o="$"+r.o+"$");var c=[];return h?(S.concatArray(c,this.output(r)),c.push({type_:"hyphen"})):(a=S.patterns.match_("digits",r.d||""),t&&a&&a.remainder===""?(S.concatArray(c,S.actions["d="](r,e)),S.concatArray(c,this.output(r))):(S.concatArray(c,this.output(r)),S.concatArray(c,S.actions.bond(r,e,"-")))),c},"a to o":function(r){r.o=r.a,r.a=void 0},"sb=true":function(r){r.sb=!0},"sb=false":function(r){r.sb=!1},"beginsWithBond=true":function(r){r.beginsWithBond=!0},"beginsWithBond=false":function(r){r.beginsWithBond=!1},"parenthesisLevel++":function(r){r.parenthesisLevel++},"parenthesisLevel--":function(r){r.parenthesisLevel--},"state of aggregation":function(r,e){return{type_:"state of aggregation",p1:S.go(e,"o")}},comma:function(r,e){var t=e.replace(/\s*$/,""),a=t!==e;return a&&r.parenthesisLevel===0?{type_:"comma enumeration L",p1:t}:{type_:"comma enumeration M",p1:t}},output:function(r,e,t){var a;if(!r.r)a=[],!r.a&&!r.b&&!r.p&&!r.o&&!r.q&&!r.d&&!t||(r.sb&&a.push({type_:"entitySkip"}),!r.o&&!r.q&&!r.d&&!r.b&&!r.p&&t!==2?(r.o=r.a,r.a=void 0):!r.o&&!r.q&&!r.d&&(r.b||r.p)?(r.o=r.a,r.d=r.b,r.q=r.p,r.a=r.b=r.p=void 0):r.o&&r.dType==="kv"&&S.patterns.match_("d-oxidation$",r.d||"")?r.dType="oxidation":r.o&&r.dType==="kv"&&!r.q&&(r.dType=void 0),a.push({type_:"chemfive",a:S.go(r.a,"a"),b:S.go(r.b,"bd"),p:S.go(r.p,"pq"),o:S.go(r.o,"o"),q:S.go(r.q,"pq"),d:S.go(r.d,r.dType==="oxidation"?"oxidation":"bd"),dType:r.dType}));else{var n;r.rdt==="M"?n=S.go(r.rd,"tex-math"):r.rdt==="T"?n=[{type_:"text",p1:r.rd||""}]:n=S.go(r.rd);var s;r.rqt==="M"?s=S.go(r.rq,"tex-math"):r.rqt==="T"?s=[{type_:"text",p1:r.rq||""}]:s=S.go(r.rq),a={type_:"arrow",r:r.r,rd:n,rq:s}}for(var l in r)l!=="parenthesisLevel"&&l!=="beginsWithBond"&&delete r[l];return a},"oxidation-output":function(r,e){var t=["{"];return S.concatArray(t,S.go(e,"oxidation")),t.push("}"),t},"frac-output":function(r,e){return{type_:"frac-ce",p1:S.go(e[0]),p2:S.go(e[1])}},"overset-output":function(r,e){return{type_:"overset",p1:S.go(e[0]),p2:S.go(e[1])}},"underset-output":function(r,e){return{type_:"underset",p1:S.go(e[0]),p2:S.go(e[1])}},"underbrace-output":function(r,e){return{type_:"underbrace",p1:S.go(e[0]),p2:S.go(e[1])}},"color-output":function(r,e){return{type_:"color",color1:e[0],color2:S.go(e[1])}},"r=":function(r,e){r.r=e},"rdt=":function(r,e){r.rdt=e},"rd=":function(r,e){r.rd=e},"rqt=":function(r,e){r.rqt=e},"rq=":function(r,e){r.rq=e},operator:function(r,e,t){return{type_:"operator",kind_:t||e}}}},a:{transitions:S.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},"$(...)$":{"*":{action_:"tex-math tight",nextState:"1"}},",":{"*":{action_:{type_:"insert",option:"commaDecimal"}}},else2:{"*":{action_:"copy"}}}),actions:{}},o:{transitions:S.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},letters:{"*":{action_:"rm"}},"\\ca":{"*":{action_:{type_:"insert",option:"circa"}}},"\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"{text}"}},else2:{"*":{action_:"copy"}}}),actions:{}},text:{transitions:S.createTransitions({empty:{"*":{action_:"output"}},"{...}":{"*":{action_:"text="}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"\\greek":{"*":{action_:["output","rm"]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:["output","copy"]}},else:{"*":{action_:"text="}}}),actions:{output:function(r){if(r.text_){var e={type_:"text",p1:r.text_};for(var t in r)delete r[t];return e}}}},pq:{transitions:S.createTransitions({empty:{"*":{}},"state of aggregation $":{"*":{action_:"state of aggregation"}},i$:{0:{nextState:"!f",revisit:!0}},"(KV letters),":{0:{action_:"rm",nextState:"0"}},formula$:{0:{nextState:"f",revisit:!0}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"!f",revisit:!0}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"a-z":{f:{action_:"tex-math"}},letters:{"*":{action_:"rm"}},"-9.,9":{"*":{action_:"9,9"}},",":{"*":{action_:{type_:"insert+p1",option:"comma enumeration S"}}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"state of aggregation":function(r,e){return{type_:"state of aggregation subscript",p1:S.go(e,"o")}},"color-output":function(r,e){return{type_:"color",color1:e[0],color2:S.go(e[1],"pq")}}}},bd:{transitions:S.createTransitions({empty:{"*":{}},x$:{0:{nextState:"!f",revisit:!0}},formula$:{0:{nextState:"f",revisit:!0}},else:{0:{nextState:"!f",revisit:!0}},"-9.,9 no missing 0":{"*":{action_:"9,9"}},".":{"*":{action_:{type_:"insert",option:"electron dot"}}},"a-z":{f:{action_:"tex-math"}},x:{"*":{action_:{type_:"insert",option:"KV x"}}},letters:{"*":{action_:"rm"}},"'":{"*":{action_:{type_:"insert",option:"prime"}}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"color-output":function(r,e){return{type_:"color",color1:e[0],color2:S.go(e[1],"bd")}}}},oxidation:{transitions:S.createTransitions({empty:{"*":{}},"roman numeral":{"*":{action_:"roman-numeral"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},else:{"*":{action_:"copy"}}}),actions:{"roman-numeral":function(r,e){return{type_:"roman numeral",p1:e||""}}}},"tex-math":{transitions:S.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},else:{"*":{action_:"o="}}}),actions:{output:function(r){if(r.o){var e={type_:"tex-math",p1:r.o};for(var t in r)delete r[t];return e}}}},"tex-math tight":{transitions:S.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},"-|+":{"*":{action_:"tight operator"}},else:{"*":{action_:"o="}}}),actions:{"tight operator":function(r,e){r.o=(r.o||"")+"{"+e+"}"},output:function(r){if(r.o){var e={type_:"tex-math",p1:r.o};for(var t in r)delete r[t];return e}}}},"9,9":{transitions:S.createTransitions({empty:{"*":{}},",":{"*":{action_:"comma"}},else:{"*":{action_:"copy"}}}),actions:{comma:function(){return{type_:"commaDecimal"}}}},pu:{transitions:S.createTransitions({empty:{"*":{action_:"output"}},space$:{"*":{action_:["output","space"]}},"{[(|)]}":{"0|a":{action_:"copy"}},"(-)(9)^(-9)":{0:{action_:"number^",nextState:"a"}},"(-)(9.,9)(e)(99)":{0:{action_:"enumber",nextState:"a"}},space:{"0|a":{}},"pm-operator":{"0|a":{action_:{type_:"operator",option:"\\pm"},nextState:"0"}},operator:{"0|a":{action_:"copy",nextState:"0"}},"//":{d:{action_:"o=",nextState:"/"}},"/":{d:{action_:"o=",nextState:"/"}},"{...}|else":{"0|d":{action_:"d=",nextState:"d"},a:{action_:["space","d="],nextState:"d"},"/|q":{action_:"q=",nextState:"q"}}}),actions:{enumber:function(r,e){var t=[];return e[0]==="+-"||e[0]==="+/-"?t.push("\\pm "):e[0]&&t.push(e[0]),e[1]&&(S.concatArray(t,S.go(e[1],"pu-9,9")),e[2]&&(e[2].match(/[,.]/)?S.concatArray(t,S.go(e[2],"pu-9,9")):t.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),e[3]==="e"||e[3].substr(0,1)==="*"?t.push({type_:"cdot"}):t.push({type_:"times"}))),e[3]&&t.push("10^{"+e[5]+"}"),t},"number^":function(r,e){var t=[];return e[0]==="+-"||e[0]==="+/-"?t.push("\\pm "):e[0]&&t.push(e[0]),S.concatArray(t,S.go(e[1],"pu-9,9")),t.push("^{"+e[2]+"}"),t},operator:function(r,e,t){return{type_:"operator",kind_:t||e}},space:function(){return{type_:"pu-space-1"}},output:function(r){var e,t=S.patterns.match_("{(...)}",r.d||"");t&&t.remainder===""&&(r.d=t.match_);var a=S.patterns.match_("{(...)}",r.q||"");if(a&&a.remainder===""&&(r.q=a.match_),r.d&&(r.d=r.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),r.d=r.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),r.q){r.q=r.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),r.q=r.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F");var n={d:S.go(r.d,"pu"),q:S.go(r.q,"pu")};r.o==="//"?e={type_:"pu-frac",p1:n.d,p2:n.q}:(e=n.d,n.d.length>1||n.q.length>1?e.push({type_:" / "}):e.push({type_:"/"}),S.concatArray(e,n.q))}else e=S.go(r.d,"pu-2");for(var s in r)delete r[s];return e}}},"pu-2":{transitions:S.createTransitions({empty:{"*":{action_:"output"}},"*":{"*":{action_:["output","cdot"],nextState:"0"}},"\\x":{"*":{action_:"rm="}},space:{"*":{action_:["output","space"],nextState:"0"}},"^{(...)}|^(-1)":{1:{action_:"^(-1)"}},"-9.,9":{0:{action_:"rm=",nextState:"0"},1:{action_:"^(-1)",nextState:"0"}},"{...}|else":{"*":{action_:"rm=",nextState:"1"}}}),actions:{cdot:function(){return{type_:"tight cdot"}},"^(-1)":function(r,e){r.rm+="^{"+e+"}"},space:function(){return{type_:"pu-space-2"}},output:function(r){var e=[];if(r.rm){var t=S.patterns.match_("{(...)}",r.rm||"");t&&t.remainder===""?e=S.go(t.match_,"pu"):e={type_:"rm",p1:r.rm}}for(var a in r)delete r[a];return e}}},"pu-9,9":{transitions:S.createTransitions({empty:{0:{action_:"output-0"},o:{action_:"output-o"}},",":{0:{action_:["output-0","comma"],nextState:"o"}},".":{0:{action_:["output-0","copy"],nextState:"o"}},else:{"*":{action_:"text="}}}),actions:{comma:function(){return{type_:"commaDecimal"}},"output-0":function(r){var e=[];if(r.text_=r.text_||"",r.text_.length>4){var t=r.text_.length%3;t===0&&(t=3);for(var a=r.text_.length-3;a>0;a-=3)e.push(r.text_.substr(a,3)),e.push({type_:"1000 separator"});e.push(r.text_.substr(0,t)),e.reverse()}else e.push(r.text_);for(var n in r)delete r[n];return e},"output-o":function(r){var e=[];if(r.text_=r.text_||"",r.text_.length>4){for(var t=r.text_.length-3,a=0;a":return"rightarrow";case"\u2192":return"rightarrow";case"\u27F6":return"rightarrow";case"<-":return"leftarrow";case"<->":return"leftrightarrow";case"<-->":return"rightleftarrows";case"<=>":return"rightleftharpoons";case"\u21CC":return"rightleftharpoons";case"<=>>":return"rightequilibrium";case"<<=>":return"leftequilibrium";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getBond:function(r){switch(r){case"-":return"{-}";case"1":return"{-}";case"=":return"{=}";case"2":return"{=}";case"#":return"{\\equiv}";case"3":return"{\\equiv}";case"~":return"{\\tripledash}";case"~-":return"{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";case"~=":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";case"~--":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";case"-~-":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";case"...":return"{{\\cdot}{\\cdot}{\\cdot}}";case"....":return"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";case"->":return"{\\rightarrow}";case"<-":return"{\\leftarrow}";case"<":return"{<}";case">":return"{>}";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getOperator:function(r){switch(r){case"+":return" {}+{} ";case"-":return" {}-{} ";case"=":return" {}={} ";case"<":return" {}<{} ";case">":return" {}>{} ";case"<<":return" {}\\ll{} ";case">>":return" {}\\gg{} ";case"\\pm":return" {}\\pm{} ";case"\\approx":return" {}\\approx{} ";case"$\\approx$":return" {}\\approx{} ";case"v":return" \\downarrow{} ";case"(v)":return" \\downarrow{} ";case"^":return" \\uparrow{} ";case"(^)":return" \\uparrow{} ";default:throw["MhchemBugT","mhchem bug T. Please report."]}}};var wn=function(r){let e=r.data,t=e.expression,a=e.options,n=r.header;n.warnings=[],a.strict=="warn"&&(a.strict=(l,h)=>{n.warnings.push(`katex: LaTeX-incompatible input and strict mode is set to 'warn': ${h} [${l}]`)});let s=oe.renderToString(t,a);et({header:n,data:{output:s}})};Wt(wn);})(); gohugoio-hugo-6abdaca/internal/warpc/js/renderkatex.js000066400000000000000000000014671507671574500233640ustar00rootroot00000000000000import { readInput, writeOutput } from './common'; import katex from 'katex'; import 'katex/contrib/mhchem/mhchem.js'; const render = function (input) { const data = input.data; const expression = data.expression; const options = data.options; const header = input.header; header.warnings = []; if (options.strict == 'warn') { // By default, KaTeX will write to console.warn, that's a little hard to handle. options.strict = (errorCode, errorMsg) => { header.warnings.push( `katex: LaTeX-incompatible input and strict mode is set to 'warn': ${errorMsg} [${errorCode}]`, ); }; } // Any error thrown here will be caught by the common.js readInput function. const output = katex.renderToString(expression, options); writeOutput({ header: header, data: { output: output } }); }; readInput(render); gohugoio-hugo-6abdaca/internal/warpc/katex.go000066400000000000000000000050321507671574500215310ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package warpc import ( _ "embed" ) //go:embed wasm/renderkatex.wasm var katexWasm []byte // See https://katex.org/docs/options.html type KatexInput struct { Expression string `json:"expression"` Options KatexOptions `json:"options"` } // KatexOptions defines the options for the KaTeX rendering. // See https://katex.org/docs/options.html type KatexOptions struct { // html, mathml (default), htmlAndMathml Output string `json:"output"` // If true, display math in display mode, false in inline mode. DisplayMode bool `json:"displayMode"` // Render \tags on the left side instead of the right. Leqno bool `json:"leqno"` // If true, render flush left with a 2em left margin. Fleqn bool `json:"fleqn"` // The color used for typesetting errors. // A color string given in the format "#XXX" or "#XXXXXX" ErrorColor string `json:"errorColor"` // A collection of custom macros. Macros map[string]string `json:"macros,omitempty"` // Specifies a minimum thickness, in ems, for fraction lines. MinRuleThickness float64 `json:"minRuleThickness"` // If true, KaTeX will throw a ParseError when it encounters an unsupported command. ThrowOnError bool `json:"throwOnError"` // Controls how KaTeX handles LaTeX features that offer convenience but // aren't officially supported, one of error (default), ignore, or warn. // // - error: Throws an error when convenient, unsupported LaTeX features // are encountered. // - ignore: Allows convenient, unsupported LaTeX features without any // feedback. // - warn: Emits a warning when convenient, unsupported LaTeX features are // encountered. // // The "newLineInDisplayMode" error code, which flags the use of \\ // or \newline in display mode outside an array or tabular environment, is // intentionally designed not to throw an error, despite this behavior // being questionable. Strict string `json:"strict"` } type KatexOutput struct { Output string `json:"output"` } gohugoio-hugo-6abdaca/internal/warpc/warpc.go000066400000000000000000000313401507671574500215320ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package warpc import ( "bytes" "context" _ "embed" "encoding/json" "errors" "fmt" "io" "strings" "sync" "sync/atomic" "time" "github.com/gohugoio/hugo/common/hugio" "golang.org/x/sync/errgroup" "github.com/tetratelabs/wazero" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/experimental" "github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1" ) const currentVersion = 1 //go:embed wasm/quickjs.wasm var quickjsWasm []byte // Header is in both the request and response. type Header struct { // Major version of the protocol. Version uint16 `json:"version"` // Unique ID for the request. // Note that this only needs to be unique within the current request set time window. ID uint32 `json:"id"` // Set in the response if there was an error. Err string `json:"err"` // Warnings is a list of warnings that may be returned in the response. Warnings []string `json:"warnings,omitempty"` } type Message[T any] struct { Header Header `json:"header"` Data T `json:"data"` } func (m Message[T]) GetID() uint32 { return m.Header.ID } type Dispatcher[Q, R any] interface { Execute(ctx context.Context, q Message[Q]) (Message[R], error) Close() error } func (p *dispatcherPool[Q, R]) getDispatcher() *dispatcher[Q, R] { i := int(p.counter.Add(1)) % len(p.dispatchers) return p.dispatchers[i] } func (p *dispatcherPool[Q, R]) Close() error { return p.close() } type dispatcher[Q, R any] struct { zero Message[R] mu sync.RWMutex encMu sync.Mutex pending map[uint32]*call[Q, R] inOut *inOut shutdown bool closing bool } type inOut struct { sync.Mutex stdin hugio.ReadWriteCloser stdout hugio.ReadWriteCloser dec *json.Decoder enc *json.Encoder } var ErrShutdown = fmt.Errorf("dispatcher is shutting down") var timerPool = sync.Pool{} func getTimer(d time.Duration) *time.Timer { if v := timerPool.Get(); v != nil { timer := v.(*time.Timer) timer.Reset(d) return timer } return time.NewTimer(d) } func putTimer(t *time.Timer) { if !t.Stop() { select { case <-t.C: default: } } timerPool.Put(t) } // Execute sends a request to the dispatcher and waits for the response. func (p *dispatcherPool[Q, R]) Execute(ctx context.Context, q Message[Q]) (Message[R], error) { d := p.getDispatcher() if q.GetID() == 0 { return d.zero, errors.New("ID must not be 0 (note that this must be unique within the current request set time window)") } call, err := d.newCall(q) if err != nil { return d.zero, err } if err := d.send(call); err != nil { return d.zero, err } timer := getTimer(30 * time.Second) defer putTimer(timer) select { case call = <-call.donec: case <-p.donec: return d.zero, p.Err() case <-ctx.Done(): return d.zero, ctx.Err() case <-timer.C: return d.zero, errors.New("timeout") } if call.err != nil { return d.zero, call.err } resp, err := call.response, p.Err() if err == nil && resp.Header.Err != "" { err = errors.New(resp.Header.Err) } return resp, err } func (d *dispatcher[Q, R]) newCall(q Message[Q]) (*call[Q, R], error) { call := &call[Q, R]{ donec: make(chan *call[Q, R], 1), request: q, } if d.shutdown || d.closing { call.err = ErrShutdown call.done() return call, nil } d.mu.Lock() d.pending[q.GetID()] = call d.mu.Unlock() return call, nil } func (d *dispatcher[Q, R]) send(call *call[Q, R]) error { d.mu.RLock() if d.closing || d.shutdown { d.mu.RUnlock() return ErrShutdown } d.mu.RUnlock() d.encMu.Lock() defer d.encMu.Unlock() err := d.inOut.enc.Encode(call.request) if err != nil { return err } return nil } func (d *dispatcher[Q, R]) input() { var inputErr error for d.inOut.dec.More() { var r Message[R] if err := d.inOut.dec.Decode(&r); err != nil { inputErr = fmt.Errorf("decoding response: %w", err) break } d.mu.Lock() call, found := d.pending[r.GetID()] if !found { d.mu.Unlock() panic(fmt.Errorf("call with ID %d not found", r.GetID())) } delete(d.pending, r.GetID()) d.mu.Unlock() call.response = r call.done() } // Terminate pending calls. d.shutdown = true if inputErr != nil { isEOF := inputErr == io.EOF || strings.Contains(inputErr.Error(), "already closed") if isEOF { if d.closing { inputErr = ErrShutdown } else { inputErr = io.ErrUnexpectedEOF } } } d.mu.Lock() defer d.mu.Unlock() for _, call := range d.pending { call.err = inputErr call.done() } } type call[Q, R any] struct { request Message[Q] response Message[R] err error donec chan *call[Q, R] } func (call *call[Q, R]) done() { select { case call.donec <- call: default: } } // Binary represents a WebAssembly binary. type Binary struct { // The name of the binary. // For quickjs, this must match the instance import name, "javy_quickjs_provider_v2". // For the main module, we only use this for caching. Name string // THe wasm binary. Data []byte } type Options struct { Ctx context.Context Infof func(format string, v ...any) Warnf func(format string, v ...any) // E.g. quickjs wasm. May be omitted if not needed. Runtime Binary // The main module to instantiate. Main Binary CompilationCacheDir string PoolSize int // Memory limit in MiB. Memory int } type CompileModuleContext struct { Opts Options Runtime wazero.Runtime } type CompiledModule struct { // Runtime (e.g. QuickJS) may be nil if not needed (e.g. embedded in Module). Runtime wazero.CompiledModule // If Runtime is not nil, this should be the name of the instance. RuntimeName string // The main module to instantiate. // This will be insantiated multiple times in a pool, // so it does not need a name. Module wazero.CompiledModule } // Start creates a new dispatcher pool. func Start[Q, R any](opts Options) (Dispatcher[Q, R], error) { if opts.Main.Data == nil { return nil, errors.New("Main.Data must be set") } if opts.Main.Name == "" { return nil, errors.New("Main.Name must be set") } if opts.Runtime.Data != nil && opts.Runtime.Name == "" { return nil, errors.New("Runtime.Name must be set") } if opts.PoolSize == 0 { opts.PoolSize = 1 } return newDispatcher[Q, R](opts) } type dispatcherPool[Q, R any] struct { counter atomic.Uint32 dispatchers []*dispatcher[Q, R] close func() error opts Options errc chan error donec chan struct{} } func (p *dispatcherPool[Q, R]) SendIfErr(err error) { if err != nil { p.errc <- err } } func (p *dispatcherPool[Q, R]) Err() error { select { case err := <-p.errc: return err default: return nil } } func newDispatcher[Q, R any](opts Options) (*dispatcherPool[Q, R], error) { if opts.Ctx == nil { opts.Ctx = context.Background() } if opts.Infof == nil { opts.Infof = func(format string, v ...any) { // noop } } if opts.Warnf == nil { opts.Warnf = func(format string, v ...any) { // noop } } if opts.Memory <= 0 { // 32 MiB opts.Memory = 32 } ctx := opts.Ctx // Page size is 64KB. numPages := opts.Memory * 1024 / 64 runtimeConfig := wazero.NewRuntimeConfig().WithMemoryLimitPages(uint32(numPages)) if opts.CompilationCacheDir != "" { compilationCache, err := wazero.NewCompilationCacheWithDir(opts.CompilationCacheDir) if err != nil { return nil, err } runtimeConfig = runtimeConfig.WithCompilationCache(compilationCache) } // Create a new WebAssembly Runtime. r := wazero.NewRuntimeWithConfig(opts.Ctx, runtimeConfig) // Instantiate WASI, which implements system I/O such as console output. if _, err := wasi_snapshot_preview1.Instantiate(ctx, r); err != nil { return nil, err } inOuts := make([]*inOut, opts.PoolSize) for i := range opts.PoolSize { var stdin, stdout hugio.ReadWriteCloser stdin = hugio.NewPipeReadWriteCloser() stdout = hugio.NewPipeReadWriteCloser() inOuts[i] = &inOut{ stdin: stdin, stdout: stdout, dec: json.NewDecoder(stdout), enc: json.NewEncoder(stdin), } } var ( runtimeModule wazero.CompiledModule mainModule wazero.CompiledModule err error ) if opts.Runtime.Data != nil { runtimeModule, err = r.CompileModule(ctx, opts.Runtime.Data) if err != nil { return nil, err } } mainModule, err = r.CompileModule(ctx, opts.Main.Data) if err != nil { return nil, err } toErr := func(what string, errBuff bytes.Buffer, err error) error { return fmt.Errorf("%s: %s: %w", what, errBuff.String(), err) } run := func() error { g, ctx := errgroup.WithContext(ctx) for _, c := range inOuts { c := c g.Go(func() error { var errBuff bytes.Buffer ctx := context.WithoutCancel(ctx) configBase := wazero.NewModuleConfig().WithStderr(&errBuff).WithStdout(c.stdout).WithStdin(c.stdin).WithStartFunctions() if opts.Runtime.Data != nil { // This needs to be anonymous, it will be resolved in the import resolver below. runtimeInstance, err := r.InstantiateModule(ctx, runtimeModule, configBase.WithName("")) if err != nil { return toErr("quickjs", errBuff, err) } ctx = experimental.WithImportResolver(ctx, func(name string) api.Module { if name == opts.Runtime.Name { return runtimeInstance } return nil }, ) } mainInstance, err := r.InstantiateModule(ctx, mainModule, configBase.WithName("")) if err != nil { return toErr(opts.Main.Name, errBuff, err) } if _, err := mainInstance.ExportedFunction("_start").Call(ctx); err != nil { return toErr(opts.Main.Name, errBuff, err) } // The console.log in the Javy/quickjs WebAssembly module will write to stderr. // In non-error situations, write that to the provided infof logger. if errBuff.Len() > 0 { opts.Infof("%s", errBuff.String()) } return nil }) } return g.Wait() } dp := &dispatcherPool[Q, R]{ dispatchers: make([]*dispatcher[Q, R], len(inOuts)), opts: opts, errc: make(chan error, 10), donec: make(chan struct{}), } go func() { // This will block until stdin is closed or it encounters an error. err := run() dp.SendIfErr(err) close(dp.donec) }() for i := range inOuts { d := &dispatcher[Q, R]{ pending: make(map[uint32]*call[Q, R]), inOut: inOuts[i], } go d.input() dp.dispatchers[i] = d } dp.close = func() error { for _, d := range dp.dispatchers { d.closing = true if err := d.inOut.stdin.Close(); err != nil { return err } if err := d.inOut.stdout.Close(); err != nil { return err } } // We need to wait for the WebAssembly instances to finish executing before we can close the runtime. <-dp.donec if err := r.Close(ctx); err != nil { return err } // Return potential late compilation errors. return dp.Err() } return dp, dp.Err() } type lazyDispatcher[Q, R any] struct { opts Options dispatcher Dispatcher[Q, R] startOnce sync.Once started bool startErr error } func (d *lazyDispatcher[Q, R]) start() (Dispatcher[Q, R], error) { d.startOnce.Do(func() { start := time.Now() d.dispatcher, d.startErr = Start[Q, R](d.opts) d.started = true d.opts.Infof("started dispatcher in %s", time.Since(start)) }) return d.dispatcher, d.startErr } // Dispatchers holds all the dispatchers for the warpc package. type Dispatchers struct { katex *lazyDispatcher[KatexInput, KatexOutput] } func (d *Dispatchers) Katex() (Dispatcher[KatexInput, KatexOutput], error) { return d.katex.start() } func (d *Dispatchers) Close() error { var errs []error if d.katex.started { if err := d.katex.dispatcher.Close(); err != nil { errs = append(errs, err) } } if len(errs) == 0 { return nil } return fmt.Errorf("%v", errs) } // AllDispatchers creates all the dispatchers for the warpc package. // Note that the individual dispatchers are started lazily. // Remember to call Close on the returned Dispatchers when done. func AllDispatchers(katexOpts Options) *Dispatchers { if katexOpts.Runtime.Data == nil { katexOpts.Runtime = Binary{Name: "javy_quickjs_provider_v2", Data: quickjsWasm} } if katexOpts.Main.Data == nil { katexOpts.Main = Binary{Name: "renderkatex", Data: katexWasm} } if katexOpts.Infof == nil { katexOpts.Infof = func(format string, v ...any) { // noop } } return &Dispatchers{ katex: &lazyDispatcher[KatexInput, KatexOutput]{opts: katexOpts}, } } gohugoio-hugo-6abdaca/internal/warpc/warpc_test.go000066400000000000000000000213731507671574500225760ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package warpc import ( "context" _ "embed" "fmt" "sync" "sync/atomic" "testing" qt "github.com/frankban/quicktest" ) //go:embed wasm/greet.wasm var greetWasm []byte type person struct { Name string `json:"name"` } func TestKatex(t *testing.T) { c := qt.New(t) opts := Options{ PoolSize: 8, Runtime: quickjsBinary, Main: katexBinary, } d, err := Start[KatexInput, KatexOutput](opts) c.Assert(err, qt.IsNil) defer d.Close() runExpression := func(c *qt.C, id uint32, expression string) (Message[KatexOutput], error) { c.Helper() ctx := context.Background() input := KatexInput{ Expression: expression, Options: KatexOptions{ Output: "html", DisplayMode: true, ThrowOnError: true, }, } message := Message[KatexInput]{ Header: Header{ Version: currentVersion, ID: uint32(id), }, Data: input, } return d.Execute(ctx, message) } c.Run("Simple", func(c *qt.C) { id := uint32(32) result, err := runExpression(c, id, "c = \\pm\\sqrt{a^2 + b^2}") c.Assert(err, qt.IsNil) c.Assert(result.GetID(), qt.Equals, id) }) c.Run("Chemistry", func(c *qt.C) { id := uint32(32) result, err := runExpression(c, id, "C_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}") c.Assert(err, qt.IsNil) c.Assert(result.GetID(), qt.Equals, id) }) c.Run("Invalid expression", func(c *qt.C) { id := uint32(32) result, err := runExpression(c, id, "c & \\foo\\") c.Assert(err, qt.IsNotNil) c.Assert(result.GetID(), qt.Equals, id) }) } func TestGreet(t *testing.T) { c := qt.New(t) opts := Options{ PoolSize: 1, Runtime: quickjsBinary, Main: greetBinary, Infof: t.Logf, } for range 2 { func() { d, err := Start[person, greeting](opts) if err != nil { t.Fatal(err) } defer func() { c.Assert(d.Close(), qt.IsNil) }() ctx := context.Background() inputMessage := Message[person]{ Header: Header{ Version: currentVersion, }, Data: person{ Name: "Person", }, } for j := range 20 { inputMessage.Header.ID = uint32(j + 1) g, err := d.Execute(ctx, inputMessage) if err != nil { t.Fatal(err) } if g.Data.Greeting != "Hello Person!" { t.Fatalf("got: %v", g) } if g.GetID() != inputMessage.GetID() { t.Fatalf("%d vs %d", g.GetID(), inputMessage.GetID()) } } }() } } func TestGreetParallel(t *testing.T) { c := qt.New(t) opts := Options{ Runtime: quickjsBinary, Main: greetBinary, PoolSize: 4, } d, err := Start[person, greeting](opts) c.Assert(err, qt.IsNil) defer func() { c.Assert(d.Close(), qt.IsNil) }() var wg sync.WaitGroup for i := 1; i <= 10; i++ { wg.Add(1) go func(i int) { defer wg.Done() ctx := context.Background() for j := range 5 { base := i * 100 id := uint32(base + j) inputPerson := person{ Name: fmt.Sprintf("Person %d", id), } inputMessage := Message[person]{ Header: Header{ Version: currentVersion, ID: id, }, Data: inputPerson, } g, err := d.Execute(ctx, inputMessage) if err != nil { t.Error(err) return } c.Assert(g.Data.Greeting, qt.Equals, fmt.Sprintf("Hello Person %d!", id)) c.Assert(g.GetID(), qt.Equals, inputMessage.GetID()) } }(i) } wg.Wait() } func TestKatexParallel(t *testing.T) { c := qt.New(t) opts := Options{ Runtime: quickjsBinary, Main: katexBinary, PoolSize: 6, } d, err := Start[KatexInput, KatexOutput](opts) c.Assert(err, qt.IsNil) defer func() { c.Assert(d.Close(), qt.IsNil) }() var wg sync.WaitGroup for i := 1; i <= 10; i++ { wg.Add(1) go func(i int) { defer wg.Done() ctx := context.Background() for j := range 1 { base := i * 100 id := uint32(base + j) input := katexInputTemplate inputMessage := Message[KatexInput]{ Header: Header{ Version: currentVersion, ID: id, }, Data: input, } result, err := d.Execute(ctx, inputMessage) if err != nil { t.Error(err) return } if result.GetID() != inputMessage.GetID() { t.Errorf("%d vs %d", result.GetID(), inputMessage.GetID()) return } } }(i) } wg.Wait() } func BenchmarkExecuteKatex(b *testing.B) { opts := Options{ Runtime: quickjsBinary, Main: katexBinary, } d, err := Start[KatexInput, KatexOutput](opts) if err != nil { b.Fatal(err) } defer d.Close() ctx := context.Background() input := katexInputTemplate b.ResetTimer() for i := 0; i < b.N; i++ { message := Message[KatexInput]{ Header: Header{ Version: currentVersion, ID: uint32(i + 1), }, Data: input, } result, err := d.Execute(ctx, message) if err != nil { b.Fatal(err) } if result.GetID() != message.GetID() { b.Fatalf("%d vs %d", result.GetID(), message.GetID()) } } } func BenchmarkKatexStartStop(b *testing.B) { optsTemplate := Options{ Runtime: quickjsBinary, Main: katexBinary, CompilationCacheDir: b.TempDir(), } runBench := func(b *testing.B, opts Options) { for i := 0; i < b.N; i++ { d, err := Start[KatexInput, KatexOutput](opts) if err != nil { b.Fatal(err) } if err := d.Close(); err != nil { b.Fatal(err) } } } for _, poolSize := range []int{1, 8, 16} { name := fmt.Sprintf("PoolSize%d", poolSize) b.Run(name, func(b *testing.B) { opts := optsTemplate opts.PoolSize = poolSize runBench(b, opts) }) } } var katexInputTemplate = KatexInput{ Expression: "c = \\pm\\sqrt{a^2 + b^2}", Options: KatexOptions{Output: "html", DisplayMode: true}, } func BenchmarkExecuteKatexPara(b *testing.B) { optsTemplate := Options{ Runtime: quickjsBinary, Main: katexBinary, } runBench := func(b *testing.B, opts Options) { d, err := Start[KatexInput, KatexOutput](opts) if err != nil { b.Fatal(err) } defer d.Close() ctx := context.Background() b.ResetTimer() var id atomic.Uint32 b.RunParallel(func(pb *testing.PB) { for pb.Next() { message := Message[KatexInput]{ Header: Header{ Version: currentVersion, ID: id.Add(1), }, Data: katexInputTemplate, } result, err := d.Execute(ctx, message) if err != nil { b.Fatal(err) } if result.GetID() != message.GetID() { b.Fatalf("%d vs %d", result.GetID(), message.GetID()) } } }) } for _, poolSize := range []int{1, 8, 16} { name := fmt.Sprintf("PoolSize%d", poolSize) b.Run(name, func(b *testing.B) { opts := optsTemplate opts.PoolSize = poolSize runBench(b, opts) }) } } func BenchmarkExecuteGreet(b *testing.B) { opts := Options{ Runtime: quickjsBinary, Main: greetBinary, } d, err := Start[person, greeting](opts) if err != nil { b.Fatal(err) } defer d.Close() ctx := context.Background() input := person{ Name: "Person", } b.ResetTimer() for i := 0; i < b.N; i++ { message := Message[person]{ Header: Header{ Version: currentVersion, ID: uint32(i + 1), }, Data: input, } result, err := d.Execute(ctx, message) if err != nil { b.Fatal(err) } if result.GetID() != message.GetID() { b.Fatalf("%d vs %d", result.GetID(), message.GetID()) } } } func BenchmarkExecuteGreetPara(b *testing.B) { opts := Options{ Runtime: quickjsBinary, Main: greetBinary, PoolSize: 8, } d, err := Start[person, greeting](opts) if err != nil { b.Fatal(err) } defer d.Close() ctx := context.Background() inputTemplate := person{ Name: "Person", } b.ResetTimer() var id atomic.Uint32 b.RunParallel(func(pb *testing.PB) { for pb.Next() { message := Message[person]{ Header: Header{ Version: currentVersion, ID: id.Add(1), }, Data: inputTemplate, } result, err := d.Execute(ctx, message) if err != nil { b.Fatal(err) } if result.GetID() != message.GetID() { b.Fatalf("%d vs %d", result.GetID(), message.GetID()) } } }) } type greeting struct { Greeting string `json:"greeting"` } var ( greetBinary = Binary{ Name: "greet", Data: greetWasm, } katexBinary = Binary{ Name: "renderkatex", Data: katexWasm, } quickjsBinary = Binary{ Name: "javy_quickjs_provider_v2", Data: quickjsWasm, } ) gohugoio-hugo-6abdaca/internal/warpc/wasm/000077500000000000000000000000001507671574500210355ustar00rootroot00000000000000gohugoio-hugo-6abdaca/internal/warpc/wasm/greet.wasm000066400000000000000000000047541507671574500230460ustar00rootroot00000000000000asm```~javy_quickjs_provider_v2canonical_abi_reallocjavy_quickjs_provider_v2 eval_bytecodejavy_quickjs_provider_v2memory _start  #!AAAA "AA  A   C/function.mjswigconsolelog&Greet module loadedrecoathldsuwarn errorJavyIOreadSyncincludesos error 290Error reading from stdinsubarray splice parseTextDecoder decode(Error parsing JSON '' from stdin: headererr slicenfTextEncoder encodestringify writeSync Hello data!greeting   ). %@M8B$)!Z 6  C              aa&8!8C8Caam"8ABb$c.m*A4B$)8!//b8!/b)&bRbBb$RcbB $[abbjbbG jaaabBbb$8b!m-8B8!Bb$$c@ m;8B^8!Bb$ A4$!//m b4 m/a bA b A4C b L/bcbcbBb$c.  * ( 4!   . 0  L  L      -0  (  $ /X  .$ 4       B8B$)E  B 8!/g   CP  aa8 !B 8B $ $8b!8ABb$)< $ 1 $   C1 AL AA8LL)4     m@ producerslanguage JavaScriptES2020 processed-byJavy3.0.1 javy_sourceiw'Z:t[ 4(9@L 산#i;iY>f_ E u<:o26s-XLҡɠZB19vz:ч9ջlϳ`*+TSc߀Q3`ovյuJW|C7uUo-tcF *XrT:fSDVk@b=oa B'VaCD)d^BV F|Ze &ii`'怲Tu] hnX dO 6fVf7q \*1MZC=V6cjE{/#{mVC!%Ɓ|XևFݳU%PJo1_Q25KؓkIF%ni-Lω]J29-ȽjkW{(&-A~q[n7GhQgohugoio-hugo-6abdaca/internal/warpc/wasm/quickjs.wasm000066400000000000000000056232311507671574500234130ustar00rootroot00000000000000asmt````~~`~~````~~`~~`~~`~~~`~~`~~~`~~`|||`||`~~~`~~`~`~`~~~`~`~`~`~`~~~`~~~~`~~`~~``~`~~`~~`~``~`~```~``~``|`~`~``~`~`|`~`~~``~`|`~~`|`~`~~```~`~`~`~~`~~~~`~~`~~`~~`~~~`~~`~`~`~~~`~`~~`~~~`~~~`~~`~~~`~`~~~~`|`|~`~~~~`~~`~`~~~`~~~~`|`~~~`~~`~~~~`~` ` ``~~~~~~~`~~~~``~`~~`|||`||`|`|~~|`|`||`|`|`~` ``~`~~~~ wasi_snapshot_preview1clock_time_getwasi_snapshot_preview1fd_readwasi_snapshot_preview1fd_writewasi_snapshot_preview1 environ_getwasi_snapshot_preview1environ_sizes_getwasi_snapshot_preview1fd_closewasi_snapshot_preview1 fd_fdstat_getwasi_snapshot_preview1fd_prestat_getwasi_snapshot_preview1fd_prestat_dir_namewasi_snapshot_preview1fd_seek$wasi_snapshot_preview1 proc_exit%&'''()*+%'%%',,--..%%%%%''''%%'),-/01'%")+--,'''1/12)/'&*'/'3'4455''67'1''''819%%'%%'')'%%%"%%%'":%')';%)#<<'<===>?!  @>ABC 5>D1># E FG     ::"?>"H)? " ??I6? ??>>>AA - -J-"#  "K#-- LMN@ @@@@HOP-GMM$ A--.@@Q@R@@@ ST-- J>? @U!> V @M @WJ <#"<'J #Q------??X-?I<U Y@ -- ->- 4>@-Z =" [?@  !   I@ \ M $>  - @ " ] A@ @H       " %:%^  _`<#<#a<@#a+#+=<- -   -   G      >     b     -         - c"""""""""" --#<=d<+<#=#<#e##<=<##ee,<##=a<#</=04 59`^\]_OanhmlkgioPQ            Du@@@ Aq A: Aj!  ( ) ؅ (!   )ۇ A : 2@ ( A6 6 Aj6 Aۑ o#Ak"$@@ ("- ÂA!   Aj6 AЂA A jAԂ! Aj$ D (!@ ("Aq @ A q 䑀    ( (  G Aj(! ("(! A6 (! A6 (" )7  6A #A k"$@ ("AF AI Aj!@@ - A6 A6 B7  Aj6 AjA͑  @ ("E ( Aʀ A j$   (!@ ("E A!@  A lj"(!@ ("E A$j!@@ A|j("AxrAxF ( Aʀ @ Alj("AF Apj(! @  E  Atj( Aʀ  E Atj( AtAʀ A,j! Aj" @ ("E  A,lAʀ Aj" G @ ("E  A lAʀ @ ("E ( Aʀ #A k"$@ ("AF AI Aj!@@ - A6 A6 B7  Aj6 AjA͑  A j$  A(6 A6  A(6 A6 A6   " B璧7 B́7 ! B̡7 BN7 @@@ (" ("K (!  (!@@  A!  Aʀ   A ˀ"E   6  6 6 6 A  #A k"$ (! (!@@ ("AI AjA   ( ! (!  @  A!A!  @ - A!A!  A!@ AF @ - A!  A! AF -E A! AF -E A! AF -E A! AF -E  !A! AF  A -"! E!  !A! @@   6  6  6  Aj (! (!Ax!  6 6 6 6 A j$ >#A k"$ Aj  Aj! A j$  aA-ʀ@A$Aɀ" AA$ A6  6  6  )7 A j Aj    A6 Aj6  A6 Aj6 A  A6 6  A6 6 <#A k"$ Aj Aj! A j$ mA-ʀ@A(Aɀ" AA( AԄ6  )7  )7 A j Aj  A$j Aj(6   #A!@  G  E!   ( (   ( (  @ ("E ( Aʀ  ( (   ( (  r#A k"$@@@ - A6 A6 B7  Aj6 AjA͑  A j$ b#A k"$  6  Aj6  Aj6  A j6  Aj6 AjADŽ A j$ F~ ("(! A6 (! A6 )! ((" 6  7A  AjA (AF o#Ak"$ Aj Aj(6  )7@ (AF   @ ("E )7 6 Aj$ #A0k"$ A j A jAj" AvAq: A:  ( A~q A tAqr6  (A|q AvAqr6 A$j AjAj (6  ) 7 Aj A0j$ =@ ("Aq @ A q ԑ  푀 ώ [#Ak"$ Aj ⎀  ( ( ( (! (6 6 Aj$ ! Bq7 BɿŠ7 BY7 Bѓݍd7 a#Ak"$  Aj6 AA AA AąAԅA A jA! Aj$ I@@ ("AK AG  Aj Aj"  A(Aʀ 4@@ ("AK AG  Aj A$Aʀ ) AjA BͅQA BŹQ ( AjA BӑQA B|Q 4@@ ("AK AG  Aj A$Aʀ 4@@ ("AK AG  Aj A(Aʀ #Ak"$ ( !@@@@@ (  AA!  E  Aj ő Aj!  ("( (! Aj$ ㎀ G#Ak"$ Aj ⎀ (  ( (! Aj$ ~#Ak"$ Aj (Aj" ( !  ۅ64 Aj A4j؅  @@ -p"AG Aj (t (x@ -p"AG Aj Aj)"7 Aj AjAj)"7 Aj 7 A8jAj 7  )x"7W  78 A8jArم Aj A4j؅  Ā  Aj" AjAj)7 Aj" AjAj)7 AjAj )7 AjAj )7  q   :  AjAj AjAj)7 AjAj AjAj(6  -s:  /q;  t   : A4jم  (Aj6@@ -AG @ E AA!  Aj$ AjAj AjAj    p   (!  ۅ6P Aj؅ Aj񀀀! Ajم  (Aj6  6P A6t A6p B7| AB Aj7  Aj6x Aj̏׏ #Ak"$  6  7  6 Aj!@@@ Ajڄ" A:  A j @ - AF   Aj A jAj   AA󀀀 Ajф  Ajф م A j! م Aj$ #A0k"$ AjA@@ (E Aj AjAj(6 )7 A jAʀ  ( E  A6( A6 A6 B7 Aj6AA+ AjAAЉ呀 (6 AA+ A jAA呀 A0j$ #Ak"$ A,jA@@@ (,E AjAj A,jAj(6  ),7 A,j ⑀ (,  A,j AjAA (0 (4 (,AxG   (068AA+ A8jAA呀  (06AA+ AjAA呀  )078AA+ A8jAA呀 A jAj A,jAj("6  ),7 Aj A jA 6ʀA (6ʀ Aj$Aʀ 0@Aʀ" A葀  À ~#Ak"$@Aʀ"E  À  6(  6$ A 6 A6@@  AA AB " Aj7   A$j7 AjA: AjA6 AjB 7 AjA6 AjA: AjA6 AjB7 AjA6 A6x A6X A:T A6P B 7H A6@ A68 A6 A6 AЇ6  A8j6 A6  Aj6 A,j Ajő  A6< A68 B7D AB Aj7  Aj6@ A,j A8jő Aj (Aj" (!  ۅ"6AA 䅀 (4! Aj A,j (! (!@@ (" AxG A8j Aj  AAӅ A: E   Aʀ   (6H  6D  6@  6< A:8 @@ -8"AG )@! Aj؅! Aj Aj؅  Ā  Aj (<6 AjAj A8jAj(6  (96  )L7  (H6  )@7  : Ajم  (Aj6@@@ -AG E AA!  A8jAj AjAj    8 Aj  ( !  ۅ6 Aj؅ A8j񀀀! Ajم  (Aj6  6 A6< A68 B7D AB Aj7  Aj6@ A8j̏׏ Aj$ Å葀  ߏ!        Ꮐ!   ⏀!   ~~~#Ak"$@@@@ -Anj Aj Aj"텀@ (" @@@ -Anj 셀 م  π A6 A:  ( !  6  6  Aj Aj ( (΄  A j6<  ("6D  ("6@@@ -AG ((! ) !  6L  6HA! Aj A(j" (( ) "  AӅ@ -P"AG (\! (X! ؅! Aj Ajم !  )T! (l! (`! (\! )d! -S! /Q! Aj Ajم  6X  7P Ajф AjAjم At Atr r! B ! ! A! ! !  (4! ((! ($! )! (! ),! A  6  B > Aj A0jЄ  (60  )"7( )! A(jф A(jAjم AjAj!@  R Ajф مA!  A68 A6, A6( B70 A(j! Ajф م  A68 A6, A6( B70 A(jԃ! Aj$ ~~#Ak"$ Aj ΀@@@@@@@@@@@ ("AF AjAj! AjAj! AjAj! AjAj! AjAj! @ (! )! (! )!    6  7  6  7 Aj Aj  ("6  )" 7@@ E  6  7 Aj AjЄ )! (! Aj AjЄ  6  7  (6  )x7 Aj Aj Aj -" AG   (6  )7 Ajф م   (6  )7 Aj Aj - @@@@ -E 5B BR  Ajф م@  (  E  Ajф م  @@@ )ƇA|j A8j AjA! (@" E )8!  6  7 A(j AjЄ Aj Aj )( (0぀ Aj! -" AG (! )! Aj AjЄ ( ! )! @ (@" (E Ajф Ajم A jф A(jم (@! 6( 7 6 7 Ajф م Aj AjЄ (! )! (! )! @ (@" (E Ajф Ajم A jф A(jم (@! 6( 7 6 7A! Aj AjA! (p" E )h!  6  7 Aj AjЄ Aj Aj )X (`぀ Aj!@ -" AG )! (! Aj AjЄ )H! (P! (@Aj (@" 6( 7 6 7 Ajф م Aj (6 AjAj AjAj(6  (6  )7  (6  )7  :A! Ajむ! A: 6 Ajф م Ajф م Ajф م Aj ΀ ("AG "  A: A: (! A! A: 6  Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Ajむ! A: 6 Ajф م Ajф م  6 A:  (! (!  6  7  6  6  7  6 Ajむ! A: 6  Aj (6 AjAj AjAj(6  (6  )7  (6  )7  :A! Ajむ! A: 6 Ajф م  )! (! (@"ф Ajم (@" 6  7A! (@A:<@@  (@" A:A!  6 :A! E  Ajф م @@@  (  E  Ajф م   Ajф م E  Ajф م Aj$ ~#Ak"$@ (@"(E Aj AjЄ )! (!  A jЄ  6(  7  ("68  )"70 ф Ajم  6  7 A jф A jAjم (8At! )! (4!@@@ E   Apj" j")R A j AjAAᄀ A jむ!   ! Aj$  A葀 ~#Ak"$@@ ("(8"E  Aj"68 (4 Atj"(!  )">  6  B > Aj Є  (60  )"7( )! A(jф A(jAjم AjAj!@  R Ajф مA!  A68 A6, A6( B70 A(j! Ajф م  A68 A6, A6( B70 A(jԃ! Aj$ ~#Ak"$@@@@@@@@@@@@@ (" (I "  A; Aj  @ -`"AF Aj (d6 AjAj AjAj(6  (a6  )t7  (p6  )h7  : Ajむ! A: 6  (p6(  )h7 Aj A j  ("68  )"70 A0jAj! A jAj!   Aj A j@ -E (! A: 6 (8E  A0jф م  @ - Aj؅! (" ф Ajم (" 6 B 7  ) ! ((! (" ф Ajم (" 6 7A!  A: 6  6H  7@ ؅! A6h B7` A: A 6 A6 AР6 A6 A6  Aj6 Aj Ajԑ  AjAj! AjAj AjAj(" 6  )`7P Aj  (T  Aj Aj  A jЄ  (6  )7 Aj Aj Aj偀 -`"AG  )h! (p! (" ф Ajم (" 6 7 Ajф م A!  (Aj6 (" (8At! )! (4!@ E   Apj" j" )R Aj AjAAᄀ Ajむ! A: 6@  (8  E   Aj (d6 AjAj AjAj(6  (a6  )t7  (p6  )h7  : Ajむ! A: 6 Ajф م  @@  " A:A!  6A! :   (8   A0jф م E  A jф م  AA7 AjAA呀 A0jф م E A jф م Aj$ ʂ ~#Ak"$  Aj؅6 AjAj Aj  A6`   @ A j Ajɂ@@@ - "AG AjAj" A jAj("6  )("7 ($! AjAj" 6  7 AjAjم  6 Aj؅! Aj ("6  6@  )"7D  6  7 Ajم 6 (E  Aj (Є Aj ) ( (D!@@ (@"AxF  (H"6(  6$  6 Aj Aj  @ -@AG Aj AjA!@ -AF  )7@ Aj҃! A j A j Aj Aj   )@7@ Aj҃! A j A j Aj Aj  6@@@  A:h Ajم  Aj  󀀀 Aj Ajダ Ajم  /!; )47 Aj -#: Aj A jAj("6 Aj A jAj(6  )("7 ($! Aj 6 7 6 : AjAjم Ajم Aj$ AAAȬϑ ~#Ak"$  Aj؅6 A(jAj Aj  A6H   ( Aj A(jɂ@@@@@ -"AG AjAj AjAj("6  )"7 ( ! AjAj" 6  7p A(jAjم  6| Aj؅! AjAj (6  6  )p7 A(jAA (,! ((  A6  (06  6 6 A(j Aj Aj@@ -(AF  )(""Av:+  Av;)  B >,  <( A(j҃! Aj Aj Ajم Aj Aj  A4j Aj(6  )7,  6( A(jAj"  A(j  ( ( Aj Aj (0!  6   ((! Aj  󀀀  / ; )7 Aj - : Aj AjAj("6 Aj AjAj(6  )"7 ( ! Aj 6 7 6 : A(jAjم Ajم   (0  6`  )(7X A:P Ajم Aj Aj⃀ Ajم Aj$ =@ ("Aq @ A q ԑ  푀 ώ    @@@@@ -A}j  Aj"   -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ (AxF  Aj"  (AxF Aj"   AA #Ak"$@@@@ AI A6 AI @ AO  A vAr:  AvA?qAr: A!A!   AvA?qAr:  A vA?qAr:  AvAqAr: A!A!  @ (" (G  ( j : Aj6   AvAr: A!A! A j r A?qAr: A j  Aj$A   A #Ak"$@@@@@@@@@@@@@@@@@@@ -  AA !  AA!  AA !   Aj6 AA A jA!   Aj6 AA A jAħ!  Aj6 AԧA A jAا!  Aj6 AA A jA!  Aj6 AA A jA!  Aj6 AA A jA! AA !   Aj6 AAAA AjAĄA A jAAΨA A jAب!   Aj6 AAAA AjAĄA A jAAΨA A jAب!   Aj6 AA AA AjAAA A jA!   Aj6 AA AA AjAAA A jA!   Aj6 AA A jA!  AЩA!  AA !  AA! Aj$ #Ak"$  6 Aj Aj܅  (6(  )7 Aj A jAA׀ A jAj!@@@@@@ -AG AjAjф AjAj"م Aj A jAA׀ -AG   (68  )70  Ajǁ Aj Aj؅兀 -"AF  Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj!A!  AjAj    AA+ AjAA呀  (68  )70 Aj Aj؅Ձ Aj Aj؅ف Aj (兀@@@ -"AG  (6  )7 AjAj" AjAj   @  Aj AjAA Ajـ@@ -"AG AjAj   `  Aj AjAA Ajـ@@ -AG Aj A0jAA ) (؀ -AG  Aj A jAA )0 (8؀A!@ -AF AjAj AjAj     Aj! A jф م  Aj$ AjAj AjAj     Aj!  AjAj AjAj     Aj!  AjAj     Aj! Ajф AjAjم AG   Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj! @@ -`AG Ajф Ajم  Ajǁ AF @ -@AG Ajф Ajم  Ajǁ A0jф A8jمA! A jф م E Ajم  6AA) AjAAȪ呀 ~~#Ak"$  6, Aj A,j܅  ( 68  )70 Aj A0jAA׀ A0jAj!@@@@@@@@@@@@@@@@ -"AG  (6H  )7@ Aj AjAAՀ AjAj!@@@ -"AG  ("6X  )"7P Aj AjAA Հ -"AG   ("6h  )"7` A,j؅!  6  7 A6 Aj  Ajہ@ -"AG  (6x  )7p Aj AjA񄀀@ -AG Aj AjAA恀 -AG  A,j؅!  6  7A! A6 Aj  Aj݁ -"AG   (6  )7 Aj AjAA 恀 -AG  Aj AjA񄀀 -AG Aj A,j܅  (6  )7 Aj AjAA׀ AjAj! -" AG"  (6  )7 Aj AjAA )p (x؀ AjAj! -AG" Aj AjAA ) (؀ -AF  AjAj AjAj     Aj! AjAj AjAj     Aj! Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj!  Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj!  Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj! Ajф AjAjم  Ajф م Ajф م Ajф م A0jф م A,jم Aj$ AjAj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj!  AjAj AjAj     Aj!  Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj! AjAj AjAj     Aj!A!  AjAj AjAj     Aj!A!  AjAj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj!A!  AjAj AjAj     Aj!  A!  Ajф م Ajф م E  Ajф Ajم   AF  Ajф Ajم E  Ajф AjAjم Ajф م A0jф م A,jم  6AتA$ AjAA呀 #Ak"$  6H  7@  ( 6T AjAj Aj("6  )7X AjAj!@@@@@@@@@@@@  A0j (\"Є  (8"6  )0"7 B "AyjAnI  AjAj! Aj  Aj AjAA Aj! A6 6  6 7  A j Є Aj Aj ) ((򀀀 (! ("AxF   ("6  6  6 Aj Aj؅  @@ ("E )7  Aj (ρ6 6 Aj Aj Ajф م  Aj AjAAᄀ Aj! A6 6  Aj (\"Є )! (!  AjЄ  6  7  (6  )7 Aj Aj Aj䁀 -AF  AjAj AjAj     Aj6 A6  A6 6  )7 (6  Ajф م  Aj Aj Ajم  Aj Aj Ajم Ajф م Aj$ #Ak"$  6 @@@ A jƃE @@ A jƃ" A! AjAA (P! (L  (T"Aԫ  6  6 A6  A6H B7@ A:l A 6\ A6h A6d A6T A6L  Aj6`  Aj  AjAj AjAj("6  )@7 (! A j   A j! Aj Aj A jώ Aj$   (T AȥA7 AjAAܦ呀 ~#Ak"$  6  7  ( 6 AjAj Aj("6  )7 AjAj!@@@@@@@@@@@@@@@  Aj؅6 B07 Aj Aj Aj (Є  (6  )"7 AjAj!@ BoV Aj AjЄ  ("6 )x!  Aj Aj (p"E  )h!  6  7 Aj AjЄ  (`"6  )X"7 Aj ؅AA AjAj! -"AG   (6  )7  6  7 Aj Aj Aj@ -"AG  ("6  )"7 Ajф م  Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj! A6 6  Aj ("Є )! (! Aj AjЄ  6  7  (6  )7 Aj Aj Aj䁀 -AF  AjAj AjAj     Aj6 A6 A(j ("Є )(! (0! Aj AjЄ )! ( ! Aj A jЄ  6  7  6  7  (6  )7 Aj Aj Aj⁀ -AF  AjAj AjAj     Aj6 A6  Aj AjЄ  (P"6 )H!  Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj! A6 6 Ajф AjAjم  )7 (6  Ajф م Ajф م Aj Aj   7 AjAj!@@@@  퇀 @ (Aj  A8j AjЄ Aj )8 (@ (! ("AxF  Aj  (" ⑀ (   6  6  6 Aj (  @ -"AG )! (6 7 Aj Aj Ajф م Ajф م Aj Aj Aj (6 AjAj AjAj(6  (6  )7  (6  )7  : Aj! A6 6 Aj Aj Ajф م Ajф م Aj Aj  ؅! B07  6A!   )"B >  >  6  6  6 AjՃ! A6 6 Ajф م Ajф م Aj Aj  6 Ajф م Ajф م Aj Aj Ajم  )7 (6 Aj Aj Ajم Ajф م Aj$ #Ak"$  6  7 샀! Aj Aj؅ ㄀ Aj ) ( Aj타@@ -HAG AjA0j AjA0j)7 AjA j AjA j  AjAj AjAj    H Aj   H  Aj AjAj  Aj䄀 Ajم -E AjAr"  Aj$ ~#A k"$A-ʀ@AAɀ"E  6  6   Aج@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ AA ~#A k"$A-ʀ@AAɀ"E  6  6   A@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ AA ~#A k"$  AA@@ -"AG (! )! 僀   (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ ~#A k"$  AA@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ ~#A k"$A-ʀ@AAɀ"E  6  6   A@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ AA ~#A k"$  AA@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ ~#A k"$  AA@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ ~#A k"$  AAȭ@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ ~#A k"$  AAح@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ ~#A k"$A-ʀ@AAɀ"E    Aj Aj)7   A@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ AA ~#A k"$  AA@@ -"AG (! )! 僀   (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ ~#A k"$A-ʀ@AAɀ"E    Aj Aj)7   A@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ AA ~#A k"$A-ʀ@AAɀ"E  6  6   A@@ -"AG (! )!    (򄀀  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$ AA I#Ak"$ Aj Aj؅A㄀ Aj  Aj$ #Ak"$ !  Aj؅ ㄀ AjAj" Aj    X A8j Aj @@ -8AG AjA0j A0j)7 AjA j A j   Aj    X Aj   8  Aj A8jAj  䄀 A0jم -E Ar"  Aj$ #Ak"$  6  7 ! Aj Aj؅ ㄀ Aj ) ( Aj@@ -HAG AjA0j AjA0j)7 AjA j AjA j  AjAj AjAj    H Aj   H  Aj AjAj  Aj䄀 Ajم -E AjAr"  Aj$ #Ak"$ ك!  Aj؅ ㄀ AjA j" A j  AjAj" Aj    X A8j Aj ڃ@@ -8AG AjA0j A0j)7  A j   Aj    X Aj   8  Aj A8jAj  䄀 A0jم -E Ar"  Aj$ #Ak"$  6  7 ! Aj Aj؅ ㄀ Aj ) ( Aj@@ -HAG AjA0j AjA0j)7 AjA j AjA j  AjAj AjAj    H Aj   H  Aj AjAj  Aj䄀 Ajم -E AjAr"  Aj$ #Ak"$ ׃!  Aj؅ ㄀ AjAj" Aj    X A8j Aj ؃@@ -8AG AjA0j A0j)7 AjA j A j   Aj    X Aj   8  Aj A8jAj  䄀 A0jم -E Ar"  Aj$ #Ak"$ !  Aj؅ ㄀ AjA j" A j  AjAj" Aj    X A8j Aj @@ -8AG AjA0j A0j)7  A j   Aj    X Aj   8  Aj A8jAj  䄀 A0jم -E Ar"  Aj$ ~#A k"$    Aj"넀@@ -"AG )! )! (! (@  A8 AAH A:  ԅ  (6 )7 Aj (6 Aj Aj(6 )! (6 7 : A j$  Ajф Ajم #Ak"$ Aj Aj     A j僀@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j胀 Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A jÁ Aj$ #Ak"$ Aj Aj     A j@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j Aj$ #Ak"$ Aj Aj     A j僀@@@@ (" ( "I -(E   ($"M A !  A ! 6 6 : Ajم  A jAj Aj      A j惀 Aj$  #Ak"$ ("AA As! Aj!  j! A! ! @ ! A!@@@@@@@@@@@@@@ j" G @  F @@ !   M   j",AL     k AA A: Aj$ Aj! -"A€j-" E @ j" Aj"O @ E @  K  F    j,A@H @@  I j    j j,AL   j Aj j! Aj        A A!  A6  AqA€j-:  AvA€j-:  A jA AA  AA  AA  AA  AA  A! A"F  AA(Aґ  A    jAjAЯ #A k"$@@ Dc !  ("AA Aj  AjÄ AAA! A j$ #A0k"$ ("AAA !@@  Au"s k"AO !  A !@ Aj j"A|j An"Alk"AqAn"AtAj/; A~j  AlkAqAtAj/; A|j! A/K! !  @@ AK !  Aj A~j"j  AqAn"AlkAqAtAj/; @@ A I Aj A~j"j AtAj/;  Aj Aj"j A0r: @ AJ Aj Aj"jA-:  Aj jA k AA A0j$A ~#A0k"$ ("AAA!@@  B?" }"BZ !  A!@ Aj j"A|j  B"B~}"AqAn"AtAj/; A~j  AlkAqAtAj/; A|j! B/V! !  @ "AM Aj A~j"j " AqAn"AlkAqAtAj/; @@ A I Aj A~j"j AtAj/;  Aj Aj"j A0r: @ BU Aj Aj"jA-:  Aj jA k AA A0j$A  #A0k"$ ("AAA !@@ AO !  A !@ Aj j"A|j  An"Alk"AqAn"AtAj/; A~j  AlkAqAtAj/; A|j! A/K! !  @@ AK !  Aj A~j"j  AqAn"AlkAqAtAj/; @@ A I Aj A~j"j AtAj/;  Aj Aj"j A0r:  Aj jA k AA A0j$A U ("AA@@  AA  AA AAA  #Ak"$ ( !@@@@@ (  AAȃ!  E  Aj ő Aj!  ("( (ȃ! Aj$  A; B7  #Ak"$ A j@@@@@@@ - "AG  ($6 AjA… (!@@ - " (!  ("AqE  -! (! Aj Aj" (!@ ((󆀀" E  怀 ׅ  (Aj" 6 E   (Aj6  6$  6 Aj  ( !  A jۅ"6@@ AqE  @ AqE  @ AqE  @ AqE  @ AqE      (Aj6  6H A6D A:@ Aj!  AjAj A jAj   -#:C  /!;A  )(7H  ($6D  :@ Aj! A6 6  A6P A6D A6@ B7H Aj! A6 6  ́  @ A qE  @ AqE  @ AqE  @ AqE  @ AqE  @ AqE  @ AqE  @ AqE  @ AqE  @@ Aq      @ AqE  @ AqE ́ Ajم  (Aj6 (6 6 6 Aj$ V#Ak"$ Aj (Aj ( ! (! (Aj6 Aj$  #Ak"$ Aj (Aj" ( !  ۅ64 Aj A4j؅    Ⴠ@@ -@"AG  )D78 Aj A8jA A<  <8 A8j҃!  (h  B >l  68 A8jم  A6< A68 B7D  6 A B Aj7 A B Aj7  Aj6@ Aj A8jő Aj!  /; ),7 Aj -: Aj AjAj("6 Aj AjAj(6  ) "7 (! Aj 6 7 6 : A8jAjم Ajم   A摀 AБ  )8""Av:;  Av;9  B ><  <8 A8j҃! Aj Aj Ajم  68 Aj  󀀀 Aj Aj⃀ Ajم Aj$ #Ak"$ ( !@@@@@ (  AAȃ!  E  Aj ő Aj!  ("( (ȃ! Aj$ ~||#Ak"$  Aj؅6 A(jAj Aj  A6H   ( Aj A(jɂ@@@@@@@ -"AG AjAj AjAj("6  )"7 ( ! AjAj" 6  7p A(jAjم  6  Aj؅"6 AjAj ("6  )p7 (! A6 A6@ AI @ )"BT A68 A6, A6( B70 A(j!  @@@@ " 6 ) "B "E  AyjAnO  B|!   6 A6, A6( B74 AကB Aj7  Aj60 A(j!  A68 A6, A6( B70 A(j!  ! @@ DAc Df"qE !  A! @@ )0"B " E @ AyjAnO B|!  A68 A6, A6( B70 A(j!  ! A6@  Aj )≀" A68 A6, A̼6( B70 A(j!  A A  DAd!@@ DAc Df"qE !  A! A A  DAd" j" I  (" K  A(j Aj j  -(AG @@ (,""AA Ax Df DAd  b"" a " Q B~ B| BV!  ! Aj Aj  6` A:P  >X  B >\  6( A(jم  A6, A6( B74  6 A B Aj7 A B Aj7  Aj60 Aj A(jő Aj!  / ; )7 Aj - : Aj AjAj("6 Aj AjAj(6  )"7 ( ! Aj 6 7 6 : A(jAjم Ajم   A摀 AБ  )(""Av:+  Av;)  B >,  <( A(j҃! Aj Aj Ajم  6( Aj  󀀀 Aj Aj⃀ Ajم Aj$ V#Ak"$@  F @  6 A jA Aj" G Aj$ ώ #Ak"$@ ( " ("F  kAv!@ ф Ajم Aj! Aj"  (6  (6 Aj Aj$ #Ak"$  6 Aj Aj܅  (6(  )7 Aj A jAA׀ A jAj!@@@@@@ -p"AF @@@@@ A}j  -tAG  (x"(!@ Aj("("E   @ ("E   (ʀ A Aʀ  (AxF  Aj"   (AxF  Aj"   AjAr"  Aj Aj؅兀 -P"AG  A0j A jAA )X (`؀ -0AF  AjAj A0jAj   0 p Aj!  AjAjф Ajم Aj Aj؅ׁ Aj A jAA Ajـ -PAG  Aj Aj؅ځ Aj A jAA Ajـ -PAG  Aj AjAAA@ -PAF AjAj AjAj   P p Aj!  A jф م Ajم Aj$ Aj (T6 AjAj AjAj(6  (Q6q  )d7  (`6  )X7x  :p Aj!  AjAj AjAj   P p Aj!  AjAj AjAj   P p Aj! A jф م Ajم  6pAA) AjAȲA呀 #Ak"$ A0j  @@@ -0"AG )8!  (@6(  7 Aj A jAj"܅  (6X  )7P A0j AjAր AjAj! -0"AG  (@! )8! Ajф م@ A j  Ҁ AjA鄀 (! ( ! Ax6 6 6 A6 A6 A : A jф م  ((6 ) 7 A:  (16 )D7 Aj (46 Aj A0jAj(6 )8! (@6 7 :  (16 )D7 Aj (46 Aj A0jAj(6 )8! (@6 7 : Ajф م A jф م Aj$ ~#Ak"$ A0j  ރ@@ -0"AG )8!  (@6  7  AjAj"܅  (6X  )7P A0j AjAԀ AjAj!@ -0"AG  (@6(  )87 Ajф م A j ) (с A jф A jAjم  (16 )D7 Aj (46 Aj A0jAj(6 )8! (@6 7 : Ajф م Ajф م  (16 )D7 Aj (46 Aj A0jAj(6 )8! (@6 7 : Aj$ ~#Ak"$  ˂@@ ( )!  (! (! ߅"Aj!@ ("E @ ("(" E   (" E  (ʀ  6  6 (Bۇ! Aj$  ~#A0k"$AA 䅀    A  AqAs"Ar  Aq"Ar  Aq" Ar AI@@ -"AG  ) ؅  (6 Aj (6 A jAj Aj)"7  )"7 )7 : 7 Aj 7 A0j$ #A k"$ Aj  ̑ ( ! Aj Aj (! (!@@ (" AxG  (    Ӆ A: E   Aʀ  (6 6 6 6 A: A j$ -  (-At"Aj( Aj( #Ak"$@@@@@@@@@@@@@ ("-  AA! AA! AA! AA!  AA!  AA!  AA!  AA!  AA!  AA!   Aj6 AA AjAȿ!   Aj6 AؿA A jA! Aj$  [#Ak"$ Aj ⎀  ( ( ( (! (6 6 Aj$ E#Ak"$ Aj  ( ! (6 6 Aj$ ! Bʮ7 B7 ! Bq7 BɿŠ7 ! B†͘7 B׮K7 ! BĴң7 Bү,7 BY7 Bѓݍd7 " B䔶ˠ7 B7 ! Bۿ7 B۴7 ! BƘ7 Bþ7 ! B7 B 7 L#Ak"$ Aj ȑ Aj!   Aj$  I@@ ("AK AG  Aj߂ Aj"  A0Aʀ ?@@ ("AK AG  Aj߂ Ajώ A Aʀ 4@@ ("AK AG  Aj߂ A$Aʀ @@ ("AK AG  Aj߂ @@@@@ -A}j  A j"   - AG  ($"(!@ Aj("("E   @ ("E   (ʀ A Aʀ  (0AxF  A0j"   (0AxF A0j"  A@ ("E (!@ ф Ajم Aj! Aj" @ ("E (!A!@@  A lj"("E (A j!@@ (AxF  @ Apj("AF Atj!@     A,j! Aj"  Aj" G #A!@  G  E!   ( (   ( (   ( (   ( (  ~#Ak"$  6@@@@@@ AʀLJ @@@@@@ "Aʀ"LJ A jAA  ( AxG  ((! ($! A6@ A6< A68 A64  60   A0jȇ! A:   E  Aʀ  " B "AF  AtM  " (Aj"6 AJ   ه  A!@    Aʀ  A0j Aj -0"AF  Aj Aj(6  (46  (16  )D7 )8! (@! : (6 6 7 )7 Aj (6 Aj Aj(6  (@"E )8!     (! A0j Aj Aʀ҇Ӆ -0"AG A-ʀ )8! AAɀ"E   6  6 ׇ 7 A: (6    0AA$ A0jAA呀 AA (16 @  Aj (46 )87 : @ ("E   @ ("E  (ʀ Ajم Aj$  ( Ύ -  (-At"Aj( Aj( =@ ("Aq @ A q ԑ  푀 =@@ ("AK AG  Aj߂ Aj"  e@ -AG ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ ώ @ -"AtjA AsjAqA)IAq"AI @@ Aaj  -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ Aj"  @@@ ("( ("E  ( Aʀ  -AG ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ AAʀ          @@@@@ -A}j  Aj"   -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ (AxF  Aj"  (AxF Aj"  @@ ("AK AG  Aj߂ @ -AG ( "(!@ Aj("("E   @ ("E   (ʀ A Aʀ 3@@ ("AK AG  Aj߂ Ajώ 3@@ ("AK AG  Aj߂ Aj 3@@ ("AK AG  Aj߂ Aj =@@ ("AK AG  Aj߂ Aj"  3@@ ("AK AG  Aj߂ Aj (@@ ("AK AG  Aj߂  A(6 A6  A(6 A6 A6   B؄7 Bt7 t#Ak"$  Aj6 AAAA AjAAA AAA A jA! Aj$ Q#Ak"$  6 AA A jA A jA! Aj$ a#Ak"$  A j6 AA AA AAA A jA! Aj$ #Ak"$@@@@@@@@@@@@@@@@@@@ -  AA !  AA!  AA !   Aj6 AA A jA!   Aj6 AA A jA!  Aj6 AA A jA!  Aj6 AA A jA!  Aj6 AA A jA!  Aj6 AA A jA! AA !   Aj6 AAAA AjAAA A jAAA A jA!   Aj6 AAAA AjAAA A jAAA A jA!   Aj6 AA AA AjAAA A jA!   Aj6 AA AA AjAAA A jA!   Aj6 AA A jA!  AA!  AA !  AA! Aj$ m#Ak"$@@ (AG AA!   6 AA A jA! Aj$      A 6 A6  AA  <#A k"$ Aj Aj! A j$ mA-ʀ@A(Aɀ" AA( A6  )7  )7 A j Aj  A$j Aj(6   <#A k"$ Aj Ajʃ! A j$  A6 Aj6  A6 Aj6  A6 Aj6  A6 Aj6  A6 Aj6  A6 Aj6  A6 Aj6  A6 Aj6 A  A6 6  A6 6  A6 6  A6 6  A6 6  A6 6  A6 6  A6 6 - ("BƑBڧ ((  , ("BtB؄ ((  >#A k"$ Aj  AjɃ! A j$  aA-ʀ@A$Aɀ" AA$ A6  6  6  )7 A j Aj   qA-ʀ@AL AjمA!  Aj  󀀀@ -@"AG (P!A!  (A6 )T7 Aj (D6 Aj AjAj(6 (P! )H! 6 7 : Ajم Aj$ #Ak"$ ( !@@@@@ (  AAȃ!  E  Aj ő Aj!  ("( (ȃ! Aj$ ~||~#Ak"$  Aj؅6 AjAj Aj  A68    Aj Ajɂ@@@@@@ -"AG AjAj AjAj("6  )"7 (! AjAj" 6  7` AjAjم  6p  Aj؅6t AjAj ("6  )`7x@@@@ AG @ (|"ׄ" A6( A6 A6 B7 Aj烀!  @ " A6( A6 A6 B7 Aj烀!  Aj @ (" A6( A6 A6 B7 Aj烀!  ( ! )"B "E  AyjAnO  B|!  A6 A6 B7$  6 A B Aj7  Aj6 Aj Ajő Aj!  A6( A6 A6 B7 Aj烀!  ! @@ DAc Df"qE !  A! @@ ) "B " E @ AyjAnO B|!  A6( A6 A6 B7 Aj烀!  ! @@ DAc Df" qE !  A! @ )0"BpBQ A6( A6 A6 B7 Aj烀!  @ )@"BpBQ A6( A6 A6 B7 Aj烀!  @@A A  DAd"A A  DAd" j" I  M  A6( A6 A6 B7 Aj烀!  B!  j! AI  BPE  -AG  -AG  -AG  A}j! Aj!  /; )7 Aj -: Aj AjAj("6 Aj AjAj(6  )"7 (! Aj 6 7 6 : AjAjم Ajم  @@ P"E Aj  đ (t!  Ajփ Aj  ( ( (AxF  Aj Aj   Aj؅"6 Aj  ⑀@ (E Aj AjAA$ᄀ -! AjAj AjAj(6  -:  /;   $  )7  : Aj! Ajم  Aj  ( ( (!@ -"AG (! (! Aj Aj@  Ajم  6L  6H  6 AjمA!  )! Aj (6 AjAj AjAj(6  (6  )7,  6(  7  : Aj! Aj Aj   Ajم  Aj Aj Ajم  6 Aj  󀀀@ -@"AG (P!A!  (A6 )T7 Aj (D6 Aj AjAj(6 (P! )H! 6 7 : Ajم Aj$ ( AA (-"AA  ώ    A e#A k"$    @@ -AG A:    Aj Aj  A j$ #Ak"$@@ 5B BQ A6 A6 A6 B7 Aj烀! Ax6 6  @ Ԅ"E Aj @@ -AG Aj Aj(6  )7  A0jAj AjAj    0  Aj  A0j􀀀 )7 Aj Aj(6  A葀 Aj$ #Ak"$  6 Aj Aj܅  (6(  )7 Aj Aj؅ԁ A0j A jAA Ajـ A(j!@@@ -0AG Aj Aj؅܁ A0j A jAA Ajـ -0AG  A0j AjAAA@ -0AF AjAj A0jAj   0 P Aj!  A jф م Ajم Aj$ AjAj A0jAj   0 P Aj!  AjAj A0jAj   0 P Aj! A jф م Ajم  6PAA% AjAA呀 d@ ("(AG ("A: ("E  Aʀ @ AF ("Aj6 AG A Aʀ ~ (8 j68@@ (<" A!  A!@@ A k"  I"AO A!B!  5! @ Ar O  j3 At ! Ar! @  O  j1 At ! )0  AtA8q"70@  K ) ) "|" )" B )|" " |" B7 B 7 B"B  B |"7  7   j6<  k"Aq!@  Axq"O )! )! )! )! @   j)" " |" B  |" "|" B!  B"B  B |" ! B ! ! Aj" I 7 7 7 7 A!@@ AO A!B!   j5! @ Ar O  j j3 At ! Ar! @  O   jj1 At ! 70 6< {~#Ak"$ Aj "   modnarodsetybdet   uespemosarenegyl    0 ڏ (!  )7X Aj AjA񃀀  6X Aj AjA񃀀 "6T  )7X Aj AjA񃀀  ("Aj6@ AG Aj )! )(! )@! 5H! )! ) ! B7   B8""B  |""B  |"B |"" B  B " |"B B|"" B    B" |"B |""B   B " |"B |""B   B" |"B |""B  B " |"B |"B B " B |" B |" B 7 Aj$ ~#A k"$@@A)ʀP A)ʀ!  Aj򃀀AB7ʀ )! A Bʹ-|"7ʀ Bٺ܋B B Aj)! )! A j$  B B?D @ - "A6F AtjA AsjAqA)IAq"AI @@ Aaj  -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ   ~~~@@   j-! !   Aj"j-"APjAqA I 6 A#: 6 @@ AqA0G @  Aj"j-"Aj- B!  6 A#: 6 @ APj"AqA I 6 A#: Aq6 B!  Aj"j-"APj" AqA K Aj!@ B ~ B|!  j! Aj" ! -"APj" AqA I Aj! B! @@ AqA.F ! !  @  Aj" j-" APj"AqA I 6 A#: 6 ! B ~ B|! @  Aj" j-" APj" AqA K Aj!@ B ~ B|!  j! Aj"! -" APj" AqA I Aj!  }! Asj!@@@@ A rAqAF ! AqA.F  AM       A!@@@  Aj"j-AUj Aj!A!  Aj! @  j-" APj"AqA I 6 A#: 6 B"B ~  Aj" j-APj"B|  AqA I""B ~  Aj "j-APj" B|  AqA I" !@   j"j-"APj"AqA K @ BW !  Aj! @@ B ~ B|! Aj! j-"APj"AqA O  ! BU  ! B }   |! @ AI Aj! ! @@@ AqARj  j-! Aj! Aqj k kAI  j  k  @  j-"AtAj(E As  j  k  6 A#: 6 @ Aq"AtAj( 6 A#: 6 A: A6 B } 7 6 A#: Aq6 {{#A k"$A!@@@  Aj"j" " \\\\\\\\\\\\\\\\" #d" Aj """"""""""""""""" #d"q  j!A!@ Aj qAq   j! Aj! Aj" #d" Aj #d"qE A6  j6  Arhj6   Arh" j" jAj" A!@ #d"Aj #d"q A!@@@ Aj qAq Aj! Aj!  @ Arh"j" j"Aj-"AF @ AȂj-" 6 A!: 6   j" j : Aj! Aj!    j"j!@@@@@@@@@@ -Aj,At -Aj,A tr -Aj,Atr -Aj,r"Axq" AF AF  AO  !  A! -AG  -AG  - Aj,At -Aj,A tr - Aj,Atr - Aj,r" rAK  AI  A|j A tAejrAj!A !  AI A! AI  AI A!A!   A?qAr:  A vAr:A!  AvA?qAr:A!   A?qAr:  AvAr:  AvA?qAr:  A vA?qAr:A!   A?qAr:A!  AvAr:A! A!  6 A&: A6 A$: Aj􃀀   :A!A!A! A6:  6  6 Aj􃀀@ E 6 A&: A6   j! j!  j j" #d"Aj #d"qE  j" j j   Arhj" 6 A6  j j6 A j$ #Ak"$ A j A jA (!@@@@@ ( (! A j Av"A (! (  Aj"AO  (! A-ʀ A ɀ" E  Aj A (H! (D  A6@  (L6<  68 A64  60  6,  6( B7  6  6 A6  6  6   A j A j A j Aj"  (, (( ($ʀ A8j"  Aj$  (  A   (  (L W {{~{~ {~#Ak"$ Aj (A (D!@@@@@ (@ (H! A6 A6  6  6  A j"  6@@ ($ Aj"I ( !  AO A-ʀ A ɀ"E  ( ( (ʀ A6(  6$  6  6 A 6    ( j" " A0j  A j  Aj   6, ($ I   6(A! A6 A j" Av@ AO ! B! B! B! B! B! !  A A@j"  K!A! " ! !B!B! B!B! B! @@@  j"" "P  "P 0"Pd !     "(    "(P "N !I"   "Am 殺" AmN 磃"  "NNQ   (   (P N   " Am  AmN  NNQP    (    (P N    " Am  AmN  NNQP    (    (P N    "Am  AmN   NNQP!  ߿s! ! B!@  """""""""""""""""#dB  #dAt  #dr  #dB0  \\\\\\\\\\\\\\\\"#dB  #dAt  #dr  #dB0" B" BB" Bժժժժ|" Bժժժժ   Bժժժժ |BժժժժB"P !@ B B }}! B| "BR T!! (!" A  "  "&dB  &dAt  &dr  &dB0! @ P A@j! "At! !@ ( j z B| "z B| "z B| "z  Aj! B| "BR !!  P! ! B?!  " {j6   " Am   "  "NN" "N "#dB  Am   NN" N #dAt  Am   NN" N #dr  Am   NN" N #dB0B"  "N #dB  N #dAt  N #dr  N #dB0" B"B  B  B! B?" ! Aj" O   (H  A  A6D A6@ B7L A B " A$j78   A,j70  A0j6H AjA͑ @@  K !  Aj  k"jA AA k A?K Aj  j  !@ P" @"P `"P p"PdE    "(    "(P "N !I"   "Am 殺" AmN 磃"  "NNQ   (   (P N   " Am  AmN  NNQP    (    (P N    " Am  AmN  NNQP    (    (P N    "Am  AmN   NNQP!  ߿s! @@  """""""""""""""""#dB  #dAt  #dr  #dB0  \\\\\\\\\\\\\\\\"#dB  #dAt  #dr  #dB0"B"  BB" Bժժժ* | Bժժժժ   Bժժժժ |BժժժժB"PE B!  !B!@ B B }}! B| "BR (!" A  "  "&dB  &dAt  &dr  &dB0! @ P A@j! "At! !@ ( j z B| "z B| "z B| "z  Aj! B| "BR  P! ! B?!  " {j6   " Am   "  "NN" "N "#dB  Am   NN" N #dAt  Am   NN" N #dr  Am   NN" N #dB0B" "N #dB  N #dAt  N #dr  N #dB0" BB B   B! Aj! A!!A,!"A!@@ BR (! A@ P A@j! At! !@ ( j z B| "z B| "z B| "z  Aj! B| "BR   {j"6@  A*!"  BR A$!"  PS A6 (!# ((!$ ( ! (!" Aj  A64 A,j  (0!% (!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  "("j"-"!Aj! !A^j  %A6 B7 A:A!& AF @  "("j-"!A"F !AG A!'A!(  Aj   $ # @ (@"!AG A: Aj )D7A!'A!(A"!!A!&  A(j Aj(6  )D7  )Q7 A6  Aj(6  %A6 B7 A:A!( AF A!!A!&  "("j-"AF !!A!' @ )"BBի B AqAtAȄj5P A6  A; A6 AF A!!A-!"  @ )"BB± B(AqAtAȄj5P A6  A; A6 AF A!!A-!"  @ )"BB B AqAtAȄj5P A6  A: A6 AF A!!A-!"  Aj   $ #  (@"!AF  A jAj Aj"Aj(6  )Q7 A6  )7  Aj(6 Aj   $A (@"!AF  A(j Aj(6  )D7  )Q7 A6  Aj(6 @ !APjAqA I A6 A !"  Aj   $A (@"AG   H  A6 AF A-!"  A6  A(j Aj(6  )D7  )Q7 A6  Aj(6 -P!" (\! !!   H  A6 A-!"A-!! AF    )D7 A: A6 AF A"!!A-!"  A6  A!'A!&A!( AjAj!) Aj!*A!A!+A!,@ (!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &Aq @ !Aq"&Aj!     &A^j   @  I  6 !Aq!!A,!" . @  " Atj("j-"!A:F  6 A!" . @ Aj"! I  6 A:!!A,!" . Aj!-@@@@@@@@  " !Atj("j"&-"!Aj! @ !A^j  Aj   $ # @ (@"!AF A jAj )Aj(6  )Q7  6  ))7  Aj(6 *  Atj"! )D7 !A: Aj!( - O 1 Aj!.@  " -Atj("j-"!A,F A!& .! !AF ' 0 . O -  " .Atj("j-"!A"G  Aj   $ # @ (@"!AG 'Aj!' Aj!  (Atj"! )D7 !A: % A jAj )Aj(6  )Q7  (6  ))7  Aj(6 )  AtjA; Aj!( &)"BBի B AqAtAȄj5PE " - O ! Aj!.@  " -Atj("j-"!A,F A!& .! !AF & / . O ,  " .Atj("j-"!A"G  Aj   $ # @ (@"!AG 'Aj!' Aj!  (Atj"! )D7 !A: $ A jAj )Aj(6  )Q7  (6  ))7  Aj(6 (  AtjA; Aj!( &)"BB± B(AqAtAȄj5PE  - O  Aj!.@  " -Atj("j-"!A,F A!& .! !AF % . . O +  " .Atj("j-"!A"G  Aj   $ # @ (@"!AG 'Aj!' Aj!  (Atj"! )D7 !A: # A jAj )Aj(6  )Q7  (6  ))7  Aj(6 '  AtjA: Aj!( &)"BB B AqAtAȄj5PE  - O  Aj!.@  " -Atj("j-"!A,F A!& .! !AF $ - . O *  " .Atj("j-"!A"G  Aj   $ # @ (@"!AG 'Aj!' Aj!  (Atj"! )D7 !A: " A jAj )Aj(6  )Q7  (6  ))7  Aj(6 & Aj   $A@ (@"!AF A(j Aj(6  )D7  )Q7  6  Aj(6 &  Atj *  Aj!( - O  Aj!.@  " -Atj("j-"!A,F A!& .! !AF # , . O )  " .Atj("j-"!A"G  Aj   $ # @ (@"!AG 'Aj!' Aj!  (Atj"! )D7 !A: ! A jAj )Aj(6  )Q7  (6  ))7  Aj(6 % % ,A lj"! '6 ! +6 !A6  Atj"!B7 !A: Aj!( - O  ,Aj!, Aj!@  " -Atj("j-"!A"F A!'A!& !+ !AF " + Aj   $ # @ (@"!AG  (Atj"! )D7 !A: Aj!(A!'A"!!A!& A jAj )Aj(6  )Q7  (6  ))7  Aj(6 $ % ,A lj"! '6 ! +6 !A6  Atj"!B7 !A: Aj!( - O  ,Aj!, Aj!A!&A!' !+  " -Atj("j-"!AG A!'A!!A!& @ !APjAqA I  6 A !" . Aj   $A (@"&AG  Atj *  Aj!(@ - I  (6 A,!" . Aj!.@  " -Atj("j-"!A,F A!& .! !AF ) . O &  " .Atj("j-"!A"G Aj   $ # @ (@"!AG 'Aj!' Aj!  (Atj"! )D7 !A:  A jAj )Aj(6  )Q7  (6  ))7  Aj(6 " ,E   +Atj"&-A{jAq"(A (AIAjAqAO & '6 &  +Asj6@@ % ,Aj",A lj"&(  @  I  6 !Aq!!A,!" . &(!' &(!+A!& Aj!(@  " Atj("j-"!A,F (! !( !AF  6 * ( O   " (Atj("j-"!A"G  Aj   $ # @ (@"!AG 'Aj!' Aj!  Atj"! )D7 !A: Aj!(  A jAj )Aj(6  )Q7  6  ))7  Aj(6 " @  I  6 !Aq!!A,!" - &(!' &(!+A!& Aj!(@  " Atj("j-"!A,F (! !( !AF   6 A0!" - ( O A!& Aj! 'Aj!'  " (Atj("j-!! !(  Aj   $ # @ (@"!AF A jAj )Aj(6  )Q7  6  ))7  Aj(6 !  Atj"! )D7 !A: Aj!(  O (A!& Aj!@  " Atj("j-"!A,F ! !AF    O $A!& Aj! 'Aj!'  " Atj("j-!!   AtjA; Aj!(  j)"BBի B AqAtAȄj5PE   O A!& Aj!@  " Atj("j-"!A,F ! !AF    O #A!& Aj! 'Aj!'  " Atj("j-!!   AtjA; Aj!(  j)"BB± B(AqAtAȄj5PE   O A!& Aj!@  " Atj("j-"!A,F ! !AF   O "A!& Aj! 'Aj!'  " Atj("j-!!   AtjA: Aj!(  j)"BB B AqAtAȄj5PE   O A!& Aj!@  " Atj("j-"!A,F ! !AF   O !A!& Aj! 'Aj!'  " Atj("j-!!  Aj   $A@ (@"!AF A(j Aj(6  )D7  )Q7  6  Aj(6   Atj *  Aj!(  O A!& Aj!@  " Atj("j-"!A,F ! !AF   O A!& Aj! 'Aj!'  " Atj("j-!!  % ,A lj"! '6 ! +6 !A6  Atj"!B7 !A: Aj!(  O  ,Aj!,A!& Aj!+@  " Atj("j-"!A"F A!' +! !+ !AF  " Aj   $ # @ (@"!AG  (Atj" )D7 A: Aj!(A!'A"!!A!& +!  A jAj )Aj(6  )Q7  (6  ))7  Aj(6  % ,A lj"! '6 ! +6 !A6  Atj"!B7 !A: Aj!(  O ,Aj!,A!'A!& At!! Aj"-! !+  " !j("j-"!AG A!'A!!A!& -! !+  @ !APjAqA I  6 !Aq!!A !" $ Aj   $A (@"&AG   Atj *  Aj!(@  I  (6 !Aq!!A,!" $ A!& Aj!@  " Atj("j-"!A,F ! !AF    O A!& Aj! 'Aj!'  " Atj("j-!!   6  G   A(j Aj(6  )D7  )Q7  6  Aj(6 -P!" (\! &!! !  (6 A2!" AȌA(AЍґ  6 A2!"  A(j Aj(6  )D7  )Q7  6  Aj(6 -P!" (\! &!!   (6 A0!"   6  !Aq!!A !"   6 !Aq!!A,!"   (6  (6   (6 A-!!A,!"   (6 A!!A,!"   (6  (6 A!!A,!"   (6  (6 A!!A,!"   (6  Aj!( A"!!A!& )7 A6 A6 A j A j(6 A!!A,!" -P!" (\! A!!A!" A!!A!"  A!!A!"   (6 A,!"A,!!   (6 A1!"   (6 A"!!A,!"  A6 A!!A,!" !6 ) 7 ": )7 6 Aj (6 A j A(j(6 Aj Aj Aj$ G#A k"$ A6 A6 A6 B7 AjA؎͑ ~~ #A k"$@@ AI Aj!A)! Aj! Aj!@ /!  7 A  A A ! A ;@@ E  5" B~" >  B~ B |" >  B~ B |" >  Bڠ~ B |" >  B~ B |" >  B~ B |" >  B~ B |" >  B ~ B |" >  B~ B |" >  Bׁ~ B |" >@@ B " A !  A ! A ;  6 AF A! Aj!A!@@ Atj(" E A ! A ;  " B~" >  B~ B |" >  B~ B |" >  Bڠ~ B |" >  B~ B |" >  B~ B |" >  B~ B |" >  B ~ B |" >  B~ B |" >  Bׁ~ B |" >@ B " E A ! A ;  6 @@A /" k" K O j" AK @ M Aj AtjA kAt  ; Aq!A! A! @  j"Aj" (" Aj j"(j"6  I!@ AqE  Aj" 6  Er! Aj" (" Aj(j"6  I! @ E  Aj"6 Er! Aj" A(G @ E  jAj" (" Aj j(j" 6 I!@ !   Aj" 6  Er! E @ j" /"O  j! Aj Atj! @@ (Aj"6 /!   Aj! I! Aj!    AK Aj AtjA6  /Aj;  A!  Aj! Aj! Aj" G /" E  ! @  Atj(   Aj" ; Aq" Aj AjA AjA A~j"AK A! ! @A A A A F AF"AF ! ! A!@ A Aq l! AK! l! Av!  @  I @@ /" E l!  @  k" O  @@ Aq" E AjAq"Aj"Aq! B! ! @ AI Aq!B! ! @ 5 ~ |" > Aj" 5 ~ B |" > Aj" 5 ~ B |" > A j" 5 ~ B |" > B ! Aj! A|j" @ E @ 5 ~ |" > Aj! B ! Aj" " E @ /" AM A!  Atj 6 /Aj;  k" I  /! A! E A!@@@ A{j AA(Aؓґ A! /" E AjAq" Aj"Aq!  Atj5! @@ AO B! !  Aq!B! ! @ 5~ |" > Aj" 5~ B |" > Aj" 5~ B |" > A j" 5~ B |" > B ! Aj! A|j" @ E @ 5~ |" > Aj! B ! Aj" @ " A!  A! /"AK Atj 6A! /Aj; A j$  ("( Aj(  ~~#Ak"$ A; (!A!@ ("E A!@  j-A0G   Aj"G ! A!A!@@@@@@@@@@@@@A! @@  kAI  kAI  j)" Bƌȑ| BПO|" BBR B ~ B|" BBB ~ BB䀀~|B ! A! Aj! Aj!  ! A! @@ I !   j!    K" k! j k!A!@@@  F  j! A l j-APjAqj! Aj" j! AK   O  j!@ ("E (! A!@  A! E A!@  j-A0G  Aj"G ! Axj! Axj!@@@@ AvjAwM !  @  kAO !  @ kAO !   k!  k! @@  j)" Bƌȑ| BПO|" BBQ !  A/l B ~ B|" BBB ~ BB䀀~|B j! Aj! Aj! Aj! A~jAwK  AI  Axj! AK! Axj! !  @@ AK  O   K! ! @@  G ! !  A l  j-APjAqj! Aj! Aj! Aj! AK  !  I  ! ! @  G @@@ E Aj AtAj(E  Aj  A葀  j! A k!  A葀 @@@@ jAK A k!@  O   j! Aj! -A0F AjA E  AjAE  Aj! Axj! )! Aj! B0Q @@ AjA E AjAE  Aj! A葀 A葀 A葀 A葀 @@@@ Aq"E AjAq"Aj" Aq! @ AO Aj!B!  Aq! Aj!B! @  5B~ |" > Aj" 5B~ B |" > Aj" 5B~ B |" > A j" 5B~ B |" > B ! Aj! A|j"  A!A! A! E   @ E @  5B~ |" > Aj! B ! Aj" /!@ " E AK  Aj Atj 6  /Aj"; Aq! AG!@ E AqE A! Aj! @ (" j"6  I! /!@  I ! !  Aj!  I! ! ! Aj! A! A! E  Aq! ! AK  Aj Atj 6  /Aj";A! A!  Aؖ葀 Aؖ葀 @ E @@@@ Aq" A! E   AjAq"Aj" Aq! AtAj5! @@ AO Aj!B!  Aq! Aj!B!@  5~ |"> Aj" 5~ B |"> Aj" 5~ B |"> A j" 5~ B |"> B ! Aj! A|j" @ E @  5~ |"> Aj! B ! Aj" /!@ "E AK  Aj Atj 6  /Aj"; Aq! AG!@ E AqE Aj!A!@  (" j" 6 I! /!@ I ! !  Aj!  I! ! ! Aj! E  AqAK  Aj Atj 6  /Aj;  A葀 A葀 AjA 6   j! j! @@@@@@@  G  Aq"E  AjAq"Aj"Aq!@ AO Aj!B!  Aq! Aj!B! @  5B~ |" > Aj" 5B~ B |" > Aj" 5B~ B |" > A j" 5B~ B |" > B ! Aj! A|j"  Aj AtAj(E  Aj  A葀 A! E   A葀 @ E @  5B~ |" > Aj! B ! Aj" /!@ "E AK  Aj Atj 6  /Aj"; Aq! AG! @ E AqE A! Aj!@  (" j" 6 I! /!@ I ! !  Aj! I! ! ! Aj!  E  Aq! ! AK  Aj Atj 6  /Aj";  A葀 A葀  j! A k!@@@  jAK A k!  Axj! )! Aj! B0Q AjA E  AjAE  Aj!  @@@  O   j! Aj! -A0G  ("E  (!A! ! @@  jAK A k!@  O   j! Aj! -A0F AjA E AjAE Aj!  Axj! )! Aj! B0Q AjA E  AjAE  Aj!  AjA E  AjAE Aj! AjA 6 Aj$ A葀 A葀 AȖ葀 AȖ葀 AȖ葀 AȖ葀 A葀 A葀 ~@ /" A AjAq"Aj"Aq! !@@ AO B! !  Aq!B! !@  5 ~ |"> Aj" 5 ~ B |"> Aj" 5 ~ B |"> A j" 5 ~ B |"> B ! Aj! A|j" @ E @  5 ~ |"> Aj! B ! Aj" @ " A A!@ /"AK Atj 6A! /Aj;   AG! /!@ E E !A!@  (" j"6  I! /!@  I !  Aj!  I! ! Aj!  A!@ E A! AK Atj 6A! /Aj;  ~{{#Ak"$  A!@@ Aj"AtJ B A k"A AHA?q A?J"BV!  @ A j"AL B!A!  B B!  BB" B B4 B" P""Ar6  B "6 AA ;@@@@@@@@@ E AjAA kE  @@Aw B4Awj  k" AJ AN A!A k" Aq"   Aq"E A k! @@ /" A!  @@ AjAq"AO Aj!A!  Aj Aj" Aq"Atj! ! Aj! !@  "     P  Aj! ! A|j" ! F  Aj Atj!@   v (" tr6 Aj" G  v"E  /"AK  Aj Atj 6  /Aj;  A k! @ /" E @@ AjAq"AO !A!   Aj" Aq"Atj! ! ! !@  "     P  Aj! ! A|j" ! F   Atj!@   v (" tr6 Aj" G  v"E  /"AK   Atj 6  /Aj;  A葀 A I  Av" /"j!@ E AK Aj Atj Aj At Aj!  AI  A葀 A I  Av" /"j! E  AK   Atj  At ! A At ;  AI  A葀 @A /" /"G  I" At! At! AjA|j! A|j! @A! E  E   j! j! A|j! A|j!A (" ("G I"E @@ AuH B !@@@@ Aq B!  B!  B! B  |"BA A BT j"AJ"!A  !  B!B A k"A AHA?q A?J!@@@ Aq B!  B!  |"BV! 6 7 Aj$ {~@ A E @ Aq"E A k!@@ /" A!  A! !@ AjAq"AI  Aj" Aq" Atj! ! ! !@  "   P  Aj! ! A|j" ! F   Atj!@   v (" tr6 Aj" G  v"E /"AK   Atj 6  /Aj; /!@ A I Av" j!@ E AK  At"j  At A  ; !  AO  A!B! B!B!@@@@@@@ Aq"  At"j"Atj)"A A|j("g"k  A s" !A!  BR  Apj!@ A G! A F   j! A|j! (E  (" gA s!  )" y! A! A!@ AqE  AtjA|j"E (g! B ! At k!B! B" BV  BQ  BB rq! A AA  |"BTj" AJ"6 B B 7 Aȗ葀  ~~~~~|#A k"$@@@  A!  A!@@ -AUj A6 B7  A! @@@@@  M B! !@  k"AI B! !@  j)" Bƌȑ| BПO|" BBR  B ~ B|" BBB ~ BB䀀~|B B/~|! Aj! Axj"AK @  O @  j-APj"AqA K  B ~ B|!  Aj"G ! A!@  G !   j! -! -!  k"AM A! -A0G  !  6 B07  B!@@@@@@  O  j- AqF  A!A!  @@  Aj"k"AO !  !@  j)" Bƌȑ| BПO|" BBR  B ~ B|" BBB ~ BB䀀~|B B/~|! Aj! Axj"AK @  O @  j-APj"AqA K  B ~ B|!  Aj"G ! @  k"E  j!B }!  A!  @  j" A!  B!@@  I !  @  j-"AjAqAIAt rAq AjAqAIAt rAqF !  A!A!@ Aj" O @@  j-AUj A! Aj! ! A! O B! !B! @@  j-APj" AqA K  B ~ B|" BS" !   !  Aj"G !  F B }  " |! ! A! AI  ! A k! Amj! ! !@@ -" A0G  Aj" jA  I! A Aj"  K!  j  AqF" j O   j j! k j!@ -A0G A Aj" K! Aj! Aj"  !  @ E A!@@ j-A0G   Aj"G ! B!A!@  kAM B! j)"Bƌȑ| BПO|"BBR B ~ B|"BBB ~ BB䀀~|B !A !@  Aj" kAO !  @ j)"Bƌȑ| BПO|"BBQ !  Aj! B ~ B|"BBB ~ BB䀀~|B B/~|!A! @@  O @@ B ~ j-APjB|! " Aj! Aj" O  AG AF  @  A葀 A!@ E BR A!@  j-A0G   Aj"G ! @ A I  k! @ AI   j)" Bƌȑ| BПO|" BBR  B ~ B|" BBB ~ BB䀀~|B B/~|! Axj! Aj! Axj"AK B!  O E Aj! @ ! B ~  j-APjB|! Aj" O  Aj!   } |! AG! A! G AjAj" 6 Aj : AjAj" 6 AjAj 7 AjAj 7  6 AjAj )7  :  6 AjAj    7  7h Aj Aj@ )XAG +`9 A6  Aj )h" )p" -" (P! )H!@  -E AH A8j B|A@  )8R  (@F  A(j  y"A7 A lAu )0" B?As" jkA~j! ! AN  )! @ BZ !  @ B|! B/V! B"!   6 6 A6  @@ BZ !  @ B|! BV! B"!  @ B T @ B|! BV! B !  Aj AjA Aj AjA@ ( kAj"AJ Aj Aj  Aj  ( ! )!  Aj Aj  (! )! A6 B4 "  9 A j$ %@ ( ("k O   %@ ( ("k O   %@ ( ("k O   %@ ( ("k O    ~~#Ak"$@@@@@@@@@  B! !  j-" A0G   B!  Aj"j-" A0F  APjB!@  Aj" j-" APj" AqA K Aj!@  BB B )BR  )" B|" T   j! Aj" ! -" APj" AqA I Aj! @  BU  7 A: A6  BQ  BV  A: A6 B }7  B7 A: A6  6 A#: Aq6   j  k    j  k   7 A: A6 Aj$ |#A0k"$ Aj A/j@@@@ (A0F Aj A/j  Aj  A€ ( + "Da  9 A: A6   j! 6 A#: -6 A0j$ ~|#A k"$@@@@ AjH BV AH  @ PE A: A6 DD 9  @ Aj"AI     Aj At"AИj)B  y" " B Aj)! Aؘj4! )" BX  BBR   AtAj)B B Aj)" |" T |!B! @ BQ !  )BX  BBR      !@@ AH AtA€j+ !  A€ Atk+! A: A6   9   B?"B |! @@@ BR BBR BBQ   }| B |"BV"|" B~|BT      @B BB BB  B|B4"BDa 7 A: A6  6 A#:  j-6 A j$ @@@ E AH @@@ (E @ (" @  !  A-ʀ  (   ˀ!  @  !  A-ʀ  ɀ! @ E 6 6 A6 6 6  A6  A6 A6 @  B7 A6 @@ AI A6  At!@@  A-ʀ Aɀ!  À! @ E 6 6 A6 6 A6 A6 @  B7 A6 @@ AI A6  At!@@  A-ʀ Aɀ!  À! @ E 6 6 A6 6 A6 A6 @  B7 A6 @ AJ A6 A6 @@  A-ʀ Aɀ!  À! @ E 6 6 A6 6 A6 A6 @  B7 A6 @@@ AժK A l"AH @@  A-ʀ Aɀ!  À! @ E 6 6 A6 6 A6  A6  A6 A6 #A k"$@  j" O AA A! ("At"   K"A AK"At! AIAt!@@  A!   At6  (6  6 Aj   Aj@ (E ( ( ( ! 6 6 A j$ #A k"$@  j" O AA A! ("At"   K"A AK"A l! AժIAt!@@  A!   A l6  (6  6 Aj   Aj@ (E ( ( ( ! 6 6 A j$ #A k"$@  j" O AA ("At"   K"A AK"At! AIAt!@@  A!   At6  (6A!  6 Aj   Aj@ (E ( ( ( ! 6 6 A j$ #A k"$@  j" O AA A! ("At"   K"A AK"AsAv!@@  A!   6  (6  6 Aj   Aj@ (E ( ( ( ! 6 6 A j$ #@ ("E ( AtAʀ #@ ("E ( A lAʀ #@ ("E ( AtAʀ @ ("E ( Aʀ A06 ~~~#Ak"$B!A!@ B}S P A! BU    y"A7 )"B?"! ! )!@@ B|BT  BQ   B |" !@ A lAu k jA?j"AxH AA B   Q  BBQ  BT  B|BT"B |"BV"  j"AK B BB ! !  A! AwI  A kA?q"B |"BV! B!  A lAu As" jkA~j!  ! 6 7 Aj$ ~|#Ak"$B!@@ )"BjY  @ B%W  @ )"BX  -!Aq @@ BS B!  B AtA€j)B@ )BQ  )"BV  DMD!  ! !@ BS AtA€j+ !  A€ Atk+!   - !B! 9 7 Aj$  (  #Ak"$@@@@@@@@@@@@@ ("-  A€A! A€A! A€A! AԀA!  Aǔ€A!  Aʔ€A!  AΔ€A!  Aє€A!  Aה€A!  Aܔ€A!   Aj6 A€A AjA€!   Aj6 A€A A jA€! Aj$  o#Ak"$@@ ("-A G A€A!   6 A€A A jA€! Aj$ -  (-At"Aț€j( A€j( #Ak"$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - "AtjA AsjAqA)IAq*  !"#$%&'()  A j6 A€A A€ A jA€! ) A€A ! ( AŖ€A ! ' Aϖ€A ! & Aܖ€A! % A€A! $ A€A ! # A€A ! " A€A! ! A€A ! A€A!  A׀A!  Aӗ€A!  A€A !  A€A !  A€A !  A€A!  A€A!  A€A!  A€A!   6 A€A A jAИ€!  A€A !  A€A!  A€A !  A€A !  A€A!  A€A!  A€A!  Aϙ€A ! Aڙ€A! A€A!  6 A€A A jA€! A€A! A€A !  A€A!  A€A!  A€A!  AڀA!  Aؚ€A!  A€A!  A€A!   6 A€A A jA€! Aj$  A€A   ("Aj( Aj(  j#Ak"$@@ -A G A€A!   6 A€A A jA€! Aj$ #Ak"$@@ ("AF  6 Aܕ€6 B7 A쁀B A j78 A B Aj70 A6 A큀B Aj7(  A(j6 ( ( Ajב!  A6, A€6( B74 A B Aj7 A큀B Aj7  Aj60 ( ( A(jב! Aj$ ~#A k"$@ Aj"AK Aj AtA€j")B B )!@B B AI" AjAj)" R  )B B Aj)" |" T |! 7 7 A j$ AA؜€ϑ x#Ak"$@ (" ("M   (! (! Aj  (  ( ! (6 6 Aj$ L@ ( ("k O   (! ( j   ( j6 @ ( I 6  :#Ak"$ A6 AjAA! Aj$  :#Ak"$ A6 AjAA! Aj$      A€A  ( (  #Ak"$@@@@ AI A6 AI @ AO  A vAr:  AvA?qAr: A!A!   AvA?qAr:  A vA?qAr:  AvAqAr: A!A!  @ (" (G  ( j : Aj6   AvAr: A!A! A j r A?qAr: A j  Aj$A   A TA-ʀ@AAɀ" AA  6  6  )7 Aj Aj(6  H~A-ʀ )!@AAɀ" AA B7 7 A6 @@@@@@@@@@@@@@@@@@@@@@@@@ (   ( ( Aj  A€A A€A A€A A€A A€A  A€A A€A A€A A€A A€A  A€A A€A A€A A€A A€A> A€A A€A4 A€A, A€A$ A€A A€A A€A A€A g#Ak"$@@ ("(AF A!  Aj Aj ( ! (! 6 6 Aj$ ~#A0k"$@@ ("( !  A6 A€6 B7 A B " Aj7(   A j7 AB 7  Aj6 ( ( ב! A0j$ ~#Ak"$ (! A6H B7@ A:l A 6\ A6h A€6d A6T A6L  Aj6`@ AjE A€A7 AjA€A€呀 A0jAj AjAj(6  )@70 A6 A€6 B7 A B " Aj7(   A j7 AB A0j7  Aj6 ( ( ב! A0j A0j Aj$ ~#Ak"$ Aj (" ("A€A @@@@@@ ( -  -! ("E  (@!@@  (D"I  F    j,A@H  @  j"Aj-" " AJ @@ A~j-" " AL Aq!  @@ A}j-" " AL Aq!  A|j-AqAt A?qr! At A?qr! At A?qr! Aq  AF A!@ AI A~! AI A}A| AI! @  j" A!  @@  I  G    j,AL   j"Aj,AJ  A~j,AJ  (0" (L"k" (D"O  (@! (4! ($"   K! (H"Aj! (8! ((! )!@@@@   j" 1Aq ! ! AG   @@@@@@     I AF""Aj" O  j! A k!  jAj!@ E   O  Aj!  j! -! Aj! Aj! -F k k!   !      "   K! !@  F F   j O  j!  j! Aj! - -F k! ! E    A€ϑ  A€ϑ A€ϑ   j"  K A€ϑ ! k" I  A! AqE   k! A ! A j! A j"!@@@@@ j! !@  j" E @ O  j",AJ     j! @@@@ !  -APjAqA I  ! !@ E @  M  j",AJ    G   j! A!   kA€AE  k! Aj! Aj"!@  j! !@ j" E @ O  j",AJ     j! @@@@ !  -APjAqA I  ! I I @ E @  I  F    j,A@H  @ E @  K  G    j,AL  Aj  j k -  I  (! @ E @  I  F    j,A@H  @ E  G  Aj  j  k - (!A!  I @ E  M  j,AL   Aj! Aj! Aj!  A€A0A€ґ Aj! Aj! Aj!     A€    A€   A€   A€   A€ A! AjAj Aj(6  )7 Aj AjA-ʀ ( ! (!@AAɀ"E  6 A6 A  6 A 6  6 Aj$  AA  A A€  A€ ב    $A!@  I   !  #Ak"$@@@@ AI A6 AI @ AO  A vAr:  AvA?qAr: A!A!   AvA?qAr:  A vA?qAr:  AvAqAr: A!A!  @ (" (G  ( j : Aj6   AvAr: A!A! A j r A?qAr: A j  Aj$A   A #A!@  G  E!  @@@ E AH @@@ (E @ (" @  !  A-ʀ  (   ˀ!  @  !  A-ʀ  ɀ! @ E 6 6 A6 6 6  A6  A6 A6 #A k"$@@@ (" I E  (!@  A!  Aʀ   A ˀ" A  A6 A6 A€6 B7 AjA€͑ 6 6 A j$ #A k"$@  j" O AA A! ("At"   K"A AK"AsAv!@@  A!   6  (6  6 Aj   Aj@ (E ( ( ( ! 6 6 A j$ #A k"$@ ("Aj" AA At"   K"A AK"AsAv!@@  A!   6  (6A!  6 Aj   Aj@ (E ( ( ( ! 6 6 A j$  6 6 @ ("E ( Aʀ ~@@ BZ ! !  Axj" B/"B~ |"An"Ap"AqAn"AtAÀj/; A|j  Alk"AqAn"AtAÀj/; Azj  AlkAqAtAÀj/; A~j  AlkAqAtAÀj/; @@ "AO !  A|j!@  An"Al j"An"AtAÀj/; Aj  AlkAtAÀj/; A|j! A/K! !  Aj! @@ AK !  A~j"  AqAn"AlkAqAtAÀj/; @ A K Aj A0r: A~j AtAÀj/;  ~~~~#Ak"$ "B! B4!A!@ BY A-:A! Aq!@@@@@@@@ BR E  BR AIr! B  "B! B!@ AwjAw "AJ AjAÀ ASlAv AGk" j" At"k)"B B" B AjAÀ k)" B B Aj AjAj)" )|" AjAj) T| AٵlAvkAjAqAs" Aj B  B|" B Aj B B Aj AjAj)" )|" AjAj) T|  Aj B B Aj B B Aj AjAj)" )|" AjAj) T|  )! )! )! @ AI A?O  B BPE   }!  Pq!A!  Aj AlAv AKk" At" A€j)" B B"B Aj A€j)" B B Aj AjAj)" )p|" AjAj)  T| k AϦlAvjAjAqAs" A j B  "B|" B Aj B B  A jAj)" )|" AjAj)  T|  Aj B B Aj B B A0j AjAj)" )@|" AjAj) T|  )0! )! )`! AO @ BA{lA kG A!@ Aj! B͙̙L~"B̙̙3X  O   @ P A!@ Aj! B͙̙L~"B̙̙3T  O}!  B |!A!@ Aj! B͙̙L~"B̙̙3X   j"A/À; AjA-À: B?Aj!   I A!A!  A!@@ B" B"V A! ! ! !  B"Al jA1K!A! @ B " B " X @ Aj! " B ! B " "B " V Avl jAK!  Q r!  A!A! A!@@ B " B "V A! ! !  A!A!@  "AvlA kFq! Aj! AqEq! B " Avl j! ! ! B " B "V @@@ E B " AvlA kF  !  @ ! Aj! AqEq! B "Avl j! ! B " ! ! AvlA kF BR Asr  QqAA BP  AqAF  AqAKr! j! A!@  |"BV A! BV A! B胱V A! BV A ! BV A ! BV A ! Bǯ%V A ! BV A ! B/V A! BV A! B=V A! BV A! BV A! BV A! BV AA B V!  j!@@@@@@@@@@ AH AH  Aj" AI  AjAI  AG   j"AjA:  A0j:  Ar"j! AH  !    j j„@  N  j jA0    j"jA; Aj!     jAj"j„  j" Aj  jA.:   j"A;A k! @ AJ AjA0 A AJA~j    j j"j„  A-:A k! Aj! AJ @ A J  A0j: AvAj j!   AtAÀj/; AvAr j!     j"jAj"„  j" Aj"-: A.: A:  Aj"j! AH  !   An"A0j:   AlkAtAÀj/; AvAj j!  A-:A k! Aj! @ AJ @ A J  A0j: AvAj j!   AtAÀj/; AvAr j!   An"A0j:   AlkAtAÀj/; AvAj j! Aj$  D (!@ ("Aq @ A q ԑ  푀 N#Ak"$ AÀ6  6A AjAÀ A jAÀ AÀ d@ ("(AG ("A: ("E  Aʀ @ AF ("Aj6 AG A Aʀ #A k"$ (!@@@@@@@@ Aq" @   ! Aj r" ("  F" 6  6   k6 A:@@ A k! @ "Aq G @ ("E  ("Aj6 AG AjƄ !  ("  F" 6 A:  6   j6 E @ - @ -E @ ("E  ("Aj6 AG AjƄ (!  @ ("E  ("Aj6 AG AjƄ (!  Aj ("  F6  G! !   (! (! AA 6  Aq"6 AG  Aj"E @ (! (! A6 E  A:  ("Aj6  6@ AG AjƄ ! A j$ A6 Aj Ajń AÀ葀 @@@ E AH @@@ (E @ (" @  !  A-ʀ  (   ˀ!  @  !  A-ʀ  ɀ! @ E 6 6 A6 6 6  A6  A6 A6 @  B7 A6 @ AJ A6 A6 @@  A-ʀ Aɀ!  À! @ E 6 6 A6 6 A6 A6 @  B7 A6 @@ AI A6  At!@@  A-ʀ Aɀ!  À! @ E 6 6 A6 6 A6 A6 #A k"$@  j" O AA A! ("At"   K"A AK"AsAv!@@  A!   6  (6  6 Aj   AjȄ@ (E ( ( ( ! 6 6 A j$ #A k"$@ ("Aj" AA At"   K"A AK"AsAv!@@  A!   6  (6A!  6 Aj   AjȄ@ (E ( ( ( ! 6 6 A j$ @ ("E ( Aʀ Q#Ak"$  6  6 Aj Aj Ajم Aj$ #Ak"$  6  7 ؅  Aj!@ B AuI " (Aj"6 AJ  ه م Aj$ D~ Aj؅!@ )"B AuI " (Aj6 6 7 C~@ )"B AtM (! " (Aj"6 AJ  ه ~A!@ )"B "AyjAnI A!@@@@@@@@@@ A j    A A A A A A A A A!  A! ("  A !  A ! 퇀 A ! AJ A A   3 ҄AqAt"AÀj(6 AÀj(6  A ҄AqAF #Ak"$  6  7@ ҄AqAF Aj!@ B AuI " (Aj"6 AJ  ه مA! 6 7 Aj$  A ҄AqAF  A ҄AxjAqAI #Ak"$  6  7@ ҄AxjAqAI Aj!@ B AuI " (Aj"6 AJ  ه مA! 6 7 Aj$ #Ak"$  6  7@ ҄AwjAqAI Aj!@ B AuI " (Aj"6 AJ  ه مA! 6 7 Aj$  A ҄AqA F  A ҄AqAF #Ak"$  6  7@ ҄AqA F Aj!@ B AuI " (Aj"6 AJ  ه مA! 6 7 Aj$ ! ؅6 B07 A: @@@@@ -A}j  Aj" ̈́  -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ (AxF  Aj" ̈́ (AxF Aj" ̈́ ~#Ak"$  6 A0j Aj އӅ@@@ -0"AG Aj )8 ؄ ("E  )!  6(  7 A0j A jA4  酀@ -0AG 6 7 A:  0  Aj A0jAj  A jф A(jم  (16 @  Aj (46 )87 : Ajم  AÀA&AÀ鑀 Aj$ #Ak"$@ AI A!@@  j-AqAF !  Aj" I  AÀϑ Aj   Aj jA: (!  Aj6 AÀ ߇ A : Aj$ #Ak"$@ AI A!@@  j-AqAF !  Aj" I  AÀϑ Aj   Aj jA: (!  Aj6 AÀ ܆ A : Aj$ ~#A0k"$A!@AÀA  Aj A1煀@@ -AG A! ("AxH   )"7  6@AÀ   B  AÀ  Aj Aj̈́A!  Aj Aj̈́  AjބA! Aj A2慀@@ -AF Ajބ  (E  ("6 AL @ E AÀ   Aj   Aj A3慀@@ -AF Ajބ  (E  ("6 AL AÀ   A j   Aj AÀA腀@@ -AG ("AxH   )"7  6@AÀ   B  Aj Aj̈́  Aj Aj̈́  Ajބ Aj A7煀@@ -AG ("AxN A!  AjބA!   )"7  6@AÀ   B  Aj Aj̈́A!  Aj Aj̈́ A0j$  #Ak"$@@@ AO A!A!A!  A! Aj Aʄ (! (  ( !A! B07( 60 B07   6 6 6 A: : Aj$  (  ~@@@ - -"AO  E  Aj! At! (0!@@ )"B AuI " (Aj"6 AJ  ه Aj! Axj"  ( "E (! At! (0!@@ )"B AuI " (Aj"6 AJ  ه Aj! Axj" @ )("B AtM (0! " (Aj"6 AJ  ه  AAÀБ CA-ʀ@AAɀ" AA B7     F#Ak"$  6 AÀA A jAÀ! Aj$ ~#Ak"$  6 A j Aj ԇ"Ӆ@@@ - "AG Aj  ؄ ("E  )! 6 7 A:  (!6 0  Aj ($6 )(7 : Ajم  AÀAAÀ鑀 Aj$ B~@ ( )"A0 A"BT AÀA$AÀґ  A!AÀ!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Aj  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ A!AÀ!  AÀ!  A!AÀ!  AÀ!  A!AÀ!  A!AÀ!  AÀ!  A!AÀ!  AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  AÀ!  A!AÀ!  A!AÀ!  AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!A!  A!AÀ!  A!AÀ!  A !AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  AÀ!  A !AÀ!  A !AÀ!  A !AÀ!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  AÀ! ~ A!AÀ! } A!AÀ! | A !AÀ! { A!AÀ! z A!AÀ! y A !AÀ! x A!AÀ! w A!AÀ! v A!AÀ! u A!AÀ! t A!AÀ! s A!AÀ! r A!AÀ! q AÀ! p AÀ! o A!AÀ! n A!AÀ! m A!AÀ! l A!AÀ! k A!AÀ! j A!AÀ! i A !AÀ! h A!AÀ! g A !AÀ! f A!AÀ! e A!AÀ! d A!AÀ! c A!AÀ! b A !AÀ! a A!AÀ! ` AÀ! _ AÀ! ^ A !AÀ! ] A!AÀ! \ A!AÀ! [ AÀ! Z A!AÀ! Y A!AÀ! X A!AÀ! W A!AÀ! V A!AÀ! U A!AÀ! T AÀ! S A!AÀ! R A!AÀ! Q A!AÀ! P A !AÀ! O A!AÀ! N A!AÀ! M A !AÀ! L A !AÀ! K A!AÀ! J A!AÀ! I A!AÀ! H A!AÀ! G A!AÀ! F A!AÀ! E A!AÀ! D A!AÀ! C A!AÀ! B A!AÀ! A A !AÀ! @ AÀ! ? AÀ! > AÀ! = A!AÀ! < A!AÀ! ; A !AÀ! : A!AÀ! 9 A !AÀ! 8 A!AÀ! 7 A!AÀ! 6 A !AÀ! 5 A !AÀ! 4 A !AÀ! 3 A !AÀ! 2 A !AÀ! 1 A !AÀ! 0 A !AÀ! / A!AÀ! . A !AÀ! - A !AÀ! , A!AÀ! + A!AÀ! * A!AÀ! ) A !AÀ! ( A !AÀ! ' A !AÀ! & A !AÀ! % A!AÀ! $ A!AÀ! # A!AÀ! " A!AÀ! ! A !AÀ! A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ!  A !AÀ!  A!AÀ!  A !AÀ!  A !AÀ! A!AÀ! A !AÀ! A!AÀ! A !AÀ! A!AÀ!  A!AÀ!  A !AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A!AÀ! 6 6 F#Ak"$ Aj ؅  )7 A: Aj$ #A k"$  ؅  @@ -AG (6 )7 A:    Aj Aj  A j$ ! ؅6 B07 A: #A k"$  6@@@  A! E  B7 B7 AÀ6A AÀ AjAÀ AL  څ! 7 7 6 A: 6 6 A j$ AÀA AjAÀAÀ呀 D~ Aj؅!@ )"B AuI " (Aj6 6 7 ~#A k"$@ ( " (O ( Atj)!  Aj6 Aj؅!@ B AuI " (Aj6 6 7 A j$ A6 A6 AÀ6 B7 AjAÀ͑ O - -rAG: A (" (j"  I6 A (" (j"  I6 X~ Aj"؅! )! (! @  A0 AAH A: ԅ #A0k"$  6  7 Aj"؅@@@  A0 AAJ Aj ԅ -AG  (6 )7 A:    Aj AjAj  ф م A0j$ ~#Ak"$@ "B AuI " (Aj6   ؄@ (" AÀA%AÀ鑀 )7 6 Aj$ ~ Df!@@ DAcE !  Ax! ؅!@@ "AA Ax  DAd  b"Q B~ B| BBV!  ! 6 7 A: #Ak"$  6  7@@ ҄"AwjAqAI B7 AÀ6 A : AtAq"AÀj(6 AÀj(6 ф Ajم  6 7 A: Aj$ #Ak"$  6  7A !AÀ!@@@@@@@@@@@@@@@@@@ ҄Aq  A !AÀ!  A!AÀ! A!AÀ! A!AÀ! A!AÀ! A!AÀ! A!AÀ!  A!AÀ!  AÀ!A!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ! B7 AÀ6 6 6 A : ф Ajم  6 7 A: Aj$ ~#Ak"$ )! A0jAj" Aj)7 A0jAj Aj)7  70  )78 ( !  A0j@@ -"AG )! (  A4j (6 A(j Aj)"7  7  (61  )"7  )78  :0  7@ A0j ! A0j A6 7 Aj$ @@@@@ -A}j  Aj" ̈́  -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ (AxF  Aj" ̈́ (AxF Aj" ̈́ s#Ak"$@@ ("(AxG AÀA!   6 AÀA A jAÀ! Aj$ o#Ak"$@@ ("- AÀA!   Aj6 AÀA A jAÀ! Aj$ ( AÀAÀ (-"AA  n#Ak"$  6 @@  )"E 6 6 A:  A jԅ A jم Aj$ h#Ak"$  6 @@   "E 6 6A!  A jمA ! : Aj$ ~#A k"$   ( (‡Ӆ@@ -"AG )! ؅!  (6 )7 Aj (6 Aj Aj(6 )! (! 6 7 : A j$    6 6 . ( (! ؅! 6 6  ( (Ç #A0k"$  6  7@@@ ҄AqAI Aj   Å -AG  (6 A6 A:  A: A6 ф Ajم    Aj AjAj  A0j$ #A0k"$  6  7@@@ ҄AqAI Aj    -AG  )7 A: A j AjA j(6  A: Ax6 ф Ajم    Aj AjAj  A0j$ ~#Ak"$  6 Aj A j   AӅ@@@ -"AG @ (" A:  A: Aj ( 6 6 A:  (6 Aj (6 A8j AjAj)"7  ) "70 )7 : 7 Aj 7 A jم Aj$ ~#A0k"$  (Aj6  6  6 Aj AjAj"  BP񈀀Ӆ@@ -"AG )! ؅6 7 )7  (6   Aj (6 )7 م : A0j$ 3@ ( )"AI AÀA(AÀґ ~#A k"$@@ (" Aj )Ać" A:  Aj  (⑀@ (E ) !  χ 7 A:  ( ! Aj ("AɄ (!@ ( (  !  χ 6 6 6 A:   ( A j$ ~#A0k"$  6 Aj A j   Ӆ@@ -"AG )! 6  (6   Aj (6 )! A jم : 7 A0j$ F (! (( !@ - AÀA  AÀA3  H#Ak"$ ( A j )≀! ( 6 6 Aj$ H#Ak"$ ( A j )≀! ( 6 6 Aj$            ̉ ׉ A F#Ak"$  6  6 AjAÀ A jAÀ    ؅   H#Ak"$ A:  6  7 ф Ajم Aj$ #Ak"$      턀  Aj؅6$ A(jAj Aj    (  A$j6H A$j A(j҅! A$jم Aj$  Q~#Ak"$  ؅󄀀 )! (6 7 A: Aj$ @@@ꆀ" A6@ ("E @ ("("E  ("E  (ʀ ("E @ ( "("E  ("E   (ʀ A-ʀAAɀ"E      醀 A6 6  AA  (톀AG  ( 놀 #Ak"$@A-ʀAF Aʀ6  Aj6 AʀA A jAÀą A(ʀ"(!@ Aj("("E   @ ("E   (ʀ AAʀ Aj$ q#Ak"$@A-ʀAF Aʀ6  Aj6 AʀA A jAÀą A(ʀ Aj$ _#Ak"$@ -AF  6  Aj6 AjA A jAÀą (! Aj$ ~|#Ak"$  6  7 Aj!A !A!AÀ!B !AÀ! @@@@@@@@@@@@@@@@@@ ҄Aq  AÀ!B !  AÀ!B!  AÀ!B!  AÀ!B! AÀ!B! AÀ!B! AÀ!B ! AÀ!B! AÀ!B!  AÀ!B !  AÀ!B!  AÀ!B!  AÀ!B!  AÀ!B !  "B ! A!A!  B|B ! A!A! ! ф م B B!@@@@@@ E @@@ " Dc DAd  A: DAc Df"qE  !  A ! A AɄ (! (  ("AjA-À: A)À7  A! AAɄ (! (  ("B앓۷7 6 6 6 A6 AÀ6 A6 AÀ6 A :  B7 7 6 :  A! A A  DAd6 Aj$  (  ( #Ak"$  6  7 Aj!A !AÀ!@@@@@@@@@@@@@@@@@@ ҄Aq  A: AG:  A !AÀ!  A!AÀ! A!AÀ! A!AÀ! A!AÀ! A!AÀ! A!AÀ!  A !AÀ!  AÀ!A!  A!AÀ!  A !AÀ!  A!AÀ!  A!AÀ!  A!AÀ!  A !AÀ! B7 AÀ6 6 6 A : ф م Aj$ ~#Ak"$ Aj   (68  )70 A8j!@@ A0jׄ"E Aj  (H"E (D! (@!A!A!  Aj A0jӄA !A !A!AÀ! ( ! (! A0jф م@@@ E  6$  6  6( ) ! @A-ʀAF Aʀ60  A0j6@AʀA AjAÀą  A(ʀ"E   ᅀ"60 (! (! AjAj Aj    @  Aj (  A0j⅀ A jф A(jم  Ax6 6 6 6 6 : Ajم Aj$ AÀA5AÀ鑀 -  (-At"AÀj( AÀj(  (  @@@@@@@@@@@@@@@@@@@@@@@@@@ -  A!AÀA' E   A!AÀA= E   A!AÀA9 E   A!AÀA&   Aj ÑE   A!AÀA   Aj E   A!AÀA   Aj E   A!AÀA   Aj E   A!AÀA   (! (( ! - A!AÀA   (! (( ! - A!AÀA E   A!AÀA   ( (  AÀA   ( (  A!AÀA   (AxF ("E AÀA   (  E  A!AÀA  ( (  AÀA  ( (  A!AÀA  (AxF ("E AÀA  (  E A!AÀA  Aj ԑ AÀA  Aj ԑ AÀA E A!AÀA  Aj ԑ AÀA  Aj ԑ AÀA E A!AÀA, E A!AÀA3 E  A!AÀA'    AÀA. E   AÀA9 E   AÀA- E   AÀA. E   AÀA9 E   AÀA- E   A!AÀA)  A! Aj   A!    ̈́ @@@@@ -A}j  Aj" ̈́  -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ (AxF  Aj" ̈́ (AxF Aj" ̈́  AÀA #Ak"$@@@@ AI A6 AI @ AO  A vAr:  AvA?qAr: A!A!   AvA?qAr:  A vA?qAr:  AvAqAr: A!A!  @ (" (G ̄ ( j : Aj6   AvAr: A!A! A j r A?qAr: A j  Aj$A   A ~#Ak"$B!@@@@@@ - (ņ!   60 A6 AÀ6 B7 AB A0j7p  Aj6 Aj Ajő (H!  )@7 A Aj"  K6 Aj Aj‘ ( ! (!  ("6 A(À ܆! A: E   Aʀ   60 A6 AÀ6 B7 AB A0j7p  Aj6 Aj Ajő (H!  )@7 A Aj"  K6 Aj Aj‘ (! (!  ("6 A(À Aj! A: E   Aʀ   60 A6 AÀ6 B7 AB A0j7p  Aj6 Aj Ajő (H!  )@7 A Aj"  K6 A(j Aj‘ (,! (!  (("6 A(À A jĆ! A: E   Aʀ  ("އ"BpBQ  ؅"68  70 A6x B7p A: A 6 A6 AÀ6 A6 A6  Aj6@ Aj AjAj AjAj(6  )p7` Aj A0jA4 Ajꅀ@@@ -@Awj    񅀀ۇ!  Aj A0jф A0jAjمB!  AjAj AjAj   @  A6t AÀ6p B7| AB Aj7`  Aj6x AjAÀ͑ AÀA7 AjAÀAÀ呀 Aj$   ("Aj( Aj( ͅ  ("Aj( Aj(  V#Ak"$  ("6 AÀA A jAÀ A jAÀ! Aj$ f#Ak"$  ("Aj6 AÀA AÀA AÀAÀA A jAÀ! Aj$ =@ ("Aq @ A q ԑ  푀  AÀ ב ̈́ @@@@@ -A}j  Aj̈́  -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ (AxF  Aj̈́ (AxF Aj̈́ #Ak"$@@@@ AI A6 AI @ AO  A?qAr:  A vAr:  AvA?qAr: A!   A?qAr:  AvA?qAr:  A vA?qAr:  AvAqAr: A!  @ (" (G ̄ ( j : Aj6   A?qAr:  AvAr: A! @ ( ("k O  ˄ (! ( j A j  ( j6 Aj$A N@ ( ("k O  ˄ (! ( j   ( j6A L@ ( ("k O  ˄ (! ( j   ( j6  #A0k"$  6  7 Aj  ( ·"Ӆ Aj!@@ -"AG ؅6  (6   Aj (6 )! ф م : 7 A0j$ #Ak"$  6(  7 A0j  ( ·"Ӆ A jAj!@@ -0"AG ؅!  AjAj Aj(6  (46  (16  )D7 )8! (@! A jф م@@@ AG  6(  7 A0j A j A jф A(jم -0AG  )47 A: A j A0jA j(6  A4j (6 Aj Aj(6  (61  )7D  6@  78  :0 0  Aj A0jAj  Aj$  ( ( 넀 ̈́ ~#A0k"$ Aj Aj"؅AÀA @@ -"AG  ("6  (6 Aj  ( )"  AӅ@ -"AG )! ؅6 7 A: Aj Ajم  (6 Aj   Aj (6 )7 : Aj Ajم  /;   Aj -: Aj AjAj(6 )7 : A0j$ #Ak"$A! A6 A6 Aj Aj A: @ (E A j A,j Aj(6  )7$ A6 A j儀6A! : Aj$ T#Ak"$ Aj (AjՅ ( ! (  (Aj6 Aj$ #A k"$  6  7 Aj!@@ ( Aj AH (6 A:  ԅ Ajф م A j$ #A k"$@@@@@@ - E  A: ("(! A6 E  A6 AjŇ  (6 A: A j$ A6 A6 AÀ6 B7 Aj ͑ AÀ葀 A6 A6 AÀ6 B7 Aj ͑ D (!@ ("Aq @ A q   푀  ( (   (  D (!@ ("Aq @ A q ԑ  푀 Q#Ak"$  (6 AÀAAÀA A jAÀ! Aj$ o#Ak"$@@ ("(  Aj6 AÀA A jAÀ!  AÀA! Aj$  AÀAё D (!@ ("Aq @ A q 䑀   u#Ak"$ Aj @ E @  6 Aj A jAÀ Aj! Aj" Aj! Aj$ =@ ("Aq @ A q ԑ  푀   ̈́ @@@@@ -A}j  Aj" ̈́  -AG  ("(!@ Aj("("E   @ ("E   (ʀ A Aʀ (AxF  Aj" ̈́ (AxF Aj" ̈́ Q#Ak"$  6 AÀA A jAÀ A jAÀ! Aj$ ~#Ak"$  @@ ( )!  (! (! ("膀"Aj!@ ("E @ ("(" E   (" E  (ʀ  6 6 Bۇ! Aj$  e@@ BpBR (膀"(! A6A ! E   (Џ 7A! : @ (膀"(! A6@ E  (Џ A : 2@ ( A6 6 Aj6 AĀۑ  (" A: 6 ~#Ak"$   6 @@@@@@@ "Aʀ"LJ AjAĀA  (AxG  (! (! A60 A6, A6( A6$  6   A jȇ! A:   E  Aʀ "B "AF  AtM  " (Aj"6 AJ  ه  A!@    Aʀ  A j A j - "AF  Aj AG   G A!   Aj6 -AF A!  AJ  A A j"AxqAG  ( A Aj"AxqAG   (6 A t jAȀej!  A jA! AM A!   Aj6 @@  G @@ AK AvAqAǀj( vAq!  !  A!  @@ AK AvAqAǀj( vAq!  AqAF AGr!  A!  @  kAL A!  @ AK  : Aj! ( !    j! ( ! A! A:  ( Aj6 Aj$  t@ (D"E ! Aj("AH  j!A!@@ " G     Aj!  jAj" I A @ (<"AJ (8AJ A! A6K Aj : Aj! Aj-"AF APjA I AqAjAI  j"Aj! Aj! Aj j!  Aj! Aj! Aj! A: Aj! A=G @ -"AF APjA I AqAjAM Aj! A!@ Aj j" :@  j"Aj-"AF APjA I AqAjAO AjA>K  Aj : Aj! Aj-"AF APjA I AqAjAI  jAj! Aj j! ((!  6 @ A j At"AL ! @ A~G ( -"E Aŀ A  E  AŀAA! A!  (I  AŀAA! ( ! AJ A A j"AI  ((  AŀAA!  Aj6  AŀAA!  Aj! Aj! A:@ AF AŀAA!  A!@@ AjAĀAE AjAŀAE A! AjAĀAE (PAG   (@A  Aj "E   A~G  AĀAA!  @@ AjAĀAE AjAŀA   (@A  Aj"E   A~G  AĀAA!  -  (@A@  Aj"AG   AJ   Aj"E   A~G  AŀAA!  @ AG    Aj6 A!  ( 6  AĀAA!  A! Aj$  #Ak"$@@ ("AI AŀAA!  @ AK A A6 A jAA!  @ At (j"A|j("AG Axj(! Av!@ AK A  ; A jAA! (AH A!A!@  ( j(; A jA A ( jAj(Aj" A~F; A jA Aj! Aj" (H  A  ; A jAA! (AH A!A!@  ( j(6 A jA  ( jAj(Aj6 A jA Aj! Aj" (H Aj$  @ AN A A!A!@@A! j"-"Aǀj-!A!@@@@ Aj A! / t j! Aj! !  j" H  A!@ AH A!A!@ j"-"Aǀj-!A!A!@@@@ Aj A! / t j! A! !  j" H  O#Ak"$ Aq   (kA|j6 A jA Aj$  Aj   ( S@ ("Aj  (" ("- A: AĀAĆ A:  ~#Ak"$  6 A!@ ("- A! ("E )"BpT @@ "/"Asj ALj ( E! A   ɇ Aj$B <@ ("- A: AĀAĆ A: B d@ ("Aj  ("E A  @ ("- A: AĀAĆ A:   ("Aj  ( \ ("Aj   (!@ E  ("- A: AĀAĆ A:  p@@ ("Aj Aj (" ("-  A: AĀAĆ A:     jA:   #A0k"$  6 B7 A6@@@ AjA ("E AA"Aj Aj)7  )7@ ( A6  )7 A6l Aj AjAj)7 AjA  AjA6 AjA6 AjA6 AjA6 AjA6 A6 AjA6 AjA6 AjA6 AjA6 AjA6 A6 AjA6 AjA6 AjA6 AjA6 AjA6 A6 Aj Aj"6  6 A:h Aj Aj"6  6X Aj Aj"6  6P Aj Aj"6  6H A64 A6$ A6< B7(@ Aj"A ("E A! AA! (4!@ ($"E @@  Atj("E (8! @ Atj("( !   Aj-Atj" (6 6 ! ($! Aj" I   ( A60 A6$  64Aǀ! A! @  "Aj ("E  A6 A6 Aq7 Aj  jA:  AAA AK AFӆE  jAj! Aj" AG Aǀ! A(j! A!@ AjAj" B7 A6 Aj(6 B7  Aj(6   Aj (ԆAL  A j! Aj"A0G A6 B7 (D"AjAǀ6 AjA6 AjA6 AjAǀ6 AjAǀ6 AjA6 AjA6 A ("  A6 ن A!  B7 A8jB7 A0jB7 A(jB7 A jB7 AjB7 AjB7 AjB7 B 7 Ap6x B7p  6 A0j$  A  Aj   (  A͔ŀA܆A  A͔ŀA܆B @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ A͔ŀA܆A K@ B AuI " ("Aj6 AJ ( ㆀ A͔ŀA܆A B~  A͔ŀA܆B ~~@@@@@@@ AJ @ )"B> G @ BX ( !  (8" (4 B ($AjqAtj("Atj(" F @@ E   ( "Atj(" F  AŀAŀAAĀҐ "Aq!@@ B"P ! E  Aq!@@ AO A! !  Aj!  k! A! !@ Al Azj/jAl A|j/jAl A~j/jAl /j! Aj! Aj" G E  At jAj!@ Al /j! Aj! Aj"  ! E Aq!@@ AO A! !   k! A! !@ Al  j"Aj-jAl Aj-jAl Aj-jAl Aj-j! Aj"G E  jAj!@ Al -j! Aj! Aj" @ (4 ($Aj Aq"q" Atj(" !  Aj! (8! @@ Atj(")"B Aq G B> G Aq G Aj! @ BBR @ BR E   ! !@@  A!  @ / -k"  Aj! Aj! Aj" A! A kE   @ BR ! ! E @ / -G  Aj! Aj! Aj"E  ! ! E @ / /G  Aj! Aj! Aj"E  ( " !  A! AG!A! @ (< A! Aj" (8 (,AlAm"A AJ" At ("E @@ (," @ A ("   (  B@7 A6  6A! A6 6, A6< 68 ((Aj6(  6< 68 6,  O  Aj! Aj! @ kAqE (8 AtjA AtAr  F6 ! F At! As j! AtAj!@ (8 j A~jA 6 (8 jAjA  Aj F6 A~j! Aj! Aj! Aj" G @@ E @ )"B?V   B>7  @ Aj" "Au Aq AvtjAj (" A!  A6  )Bw )B"7  Bx )B7 Aj Aj ("Aq Avt AsAvj  ("Aj6@ AL !  @ )BT 熀 !    ( !  @ AjA (" A B7 (8 (<"Atj"(!  6 Av6<  5 B B>7  6 ((Aj6( AF   (4 Atj"(6  6 (( (0H  ($At  AH  (Aj6 E   ("Aj6 AJ @ )BT 熀  Aj  (  AJ  (Aj6    A!@ AK @@ (@" M (D" Alj(E   Aj" AlAv"  J"A: A:J!@ Aj(" Aj" F Aj! At! @@ ( (" A @  (@"L  Asj! @  kAq"E At! Atj!@ B 7 Aj! Aj! Axj" AI  k! AtjA8j!@ B 7 AxjB 7 ApjB 7 AhjB 7 A`jB 7 AXjB 7 APjB 7 AHjB 7 Aj! Axj"  6 (" G Aj (D Al ("E   (@"AljA  kAl 6@ 6D  Alj" 6@ AH (8 Atj(" (Aj6  6  )7  ) 7A!  #"!A!@ BpT " /AG ( ! @ -" L  AtAjAqk" $@ AH  At As j! ! @ kAq"E Atj! ! @ B07 Aj! Aj! Aj" @ AI At! k! @ j"B07 A8jB07 A0jB07 A(jB07 A jB07 AjB07 AjB07 AjB07 Aj! Axj" !    / Aj (! $   |#Ak"$ "A)j-! A(j-! (" (! "Aj6 6@@ A!  ((Aq! ( ! 7 68 64@@ J !   AtAjAqk" $@ AH  At As j! !@ kAq"E Atj! !@ B07 Aj! Aj! Aj" @ AI k! At jA8j!@ B07 AxjB07 ApjB07 AhjB07 A`jB07 AXjB07 APjB07 AHjB07 Aj! Axj" 64 6 ($! @@@@@@@@@@@@@@@@@@   Aq B0! AG  Aq B0! AF    A*j. !   !  ) !  A*j. !  ) A*j. ! @ )"B "AuI " (Aj6  @ AK !  AyjAmK  B|!  @ )"B "AuI " (Aj6  @ AK 9  AyjAmK  B|7    Aj A*j. "BpBQ  ("AF   چ!  Ő   !  Aj ۆE B!  @@@ )"B "AuI " (Aj6  @ AK !  AyjAmK B|!  @ ۆE B!  +! @@@ +  "DfE DAe  !  !@@ DAcE !  Ax!  R !  B~ B| BBV!  @ Aj ۆE B!  +! @@@  "DfE DAe  !  !@@ DAcE !  Ax!  R !  B~ B| BBV!  AĀA܆B! (6 Aj$  ~@@@@ ("AjA (" B! ("-  A: AĀAĆ A:B B7     "6@  A6  (  (!@@  )B0 ( Aj(A߆"Bp"BQ B0R  Aj(Axj")! B07 Bp! A6  A8jᆀ  ↀ BQ @ B AuI " ("Aj6 AJ ( ㆀ A/䆀"BpBQ  BpT  6  AŀAŀAAŀҐ ( 冀 ("Aj  (B  #"!  "( " (" j" AtAjApqk" $@ AH Aq! A!@ AI A|q!A!A!@ j" j"Aj)7 Aj A j)7 Aj A(j)7 Aj A0j)7 A j!  Aj"G E At"j!  jAj!@  )7 Aj! Aj! Aj" @ AH Atj  At @ AqE @ B AuI  (Aj6 @ B AuI " (Aj6  A݆! )"    Aކ! $  ) )B0 A߆! $  ~#Ak"$@ )"B AuI " ("Aj6 AJ ㆀ @ Aj(" Aj"F Aj!@ (!@ ("AH Aj!A! @@ )"B AuI " (" Aj6 AJ ㆀ (! Aj! Aj" H   ( !  G 6 6 憀@ Aj( AjG @ (@" AH A!A! @@ (D j"(E Aj("AH (8 Atj(" ("Aj6 AJ 熀 (@! Aj! Aj" H Aj" (D ( Aj@ (,"AH A!A! @@ (8 j(" Aq  ( (,! Aj! Aj" H  (8 (  (4 (  ( ( Aj Aj)7  )7  ( Aj$ AŀAŀAAίŀҐ ~~@@@@@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 A"BpBR  ! B AuI  " ("Aj6 AH   A B0B0A!@ B AuI " ("Aj6 AJ ( ㆀ @ AH A AGBB0B0AAL  B! B AuI  " ("Aj6B! ! AJ  ( ㆀ  |#Ak"$@@ A"BpBR A!D!  @@@@@A B " AyjAnIA j  B|7  "Aj AjA區 AuI   ("Aj6 AJ  ( ㆀ  Ő  9 A! +!  9 Aj$ ~#Ak"$  6 A!@ ("- A! ("E )"BpT @@ "/"Asj ALj ( E! A   ɇ Aj$B |#A0k"$A B " AyjAnI!A!@@@@@@@@@@@@@A B " AyjAnI" A j     AG  F! F! AyG   E!   F AxFq!  AG   F!  ! @@  !  B|!  B|! @@  B|!  ! @ E @ a" aq b s!  @ AG a!  Q!  a!  A! AvG  Aj ʉ"  ʉ"Í!@  AjG ("E ((" E ( A Aj( E!  G  ("E  ("E  ( A Aj(  AwG  " Aj! "Aj! @ E @ AG A j(AxG A! A j(AxF  E!  ÍE!  AuG Aj AjÍE! @ AuI " ("Aj6 AJ ( ㆀ AuI " ("Aj6 AJ ( ㆀ A0j$  ~~ ("Aj6@@ AJ B!   @@@ BpT @ "-Aq AŀA܆B Ar! /"A F  ((D Alj("  AŀA܆B       @ ( -AqE B0    ߆ B! A䆀" BpBQ @@     ߆"BoV BpBR  B AuI  " ("Aj6 AJ  ( ㆀ  @ B AuI " ("Aj6 AJ ( ㆀ !   ~~~~~|#Ak"! $ (! (" Aj6@@ AJ B!   @@@@@@@ BoV AqE  "Aj" (! Aj(" ($! ( ! A6 (! A8j"6  68 Aj(" /*Atj! (0! Aj("! Aj(" ! (E   " /" A F  (D Alj("  AŀA܆B!       !  Aj Aj" 6  ( "-6  7  6  6A! ($!  /. /*"j /(" A J AqAv"jAtAjAqk"$ !@ E @   H"AH Aq!A!@ AF A~q!A! ! !@@ )"B AuI " (Aj6  7@ Aj)"B AuI " (Aj6 Aj 7 Aj! Aj!  Aj"G @ E @  At"j)"B AuI " (Aj6  j 7 ! @  O As j!@ kAq"E  Atj!@ B07 Aj! Aj! Aj" AI k! At jA8j!@ B07 AxjB07 ApjB07 AhjB07 A`jB07 AXjB07 APjB07 AHjB07 Aj! Axj"  6 !  6   Atj"6@ E Aq!A!@ AI AtAq!A! A!@  j"B07 A8jB07 A0jB07 A(jB07 A jB07 AjB07 AjB07 AjB07 Aj!  Aj" G E  At Atjj!@ B07 Aj! Aj"  (6 Aj6 (0! (! Aj!  Atj"! A!  A! @@@@@@@  Aj! Aj! Bp! Aj! Aj! B "A~q! B ! ! ! AjAj!! Aj!" !@@@ Aj!B0! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -"Aj$  !"#(&&))*+,-./012345678899:<;=>?@ABCklmqrtusnopv}|ywwwxDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij~{z%%%% @ (4 (Atj)"B AuI " (Aj6  7 Aj! Aj!   A~j7 Aj!   0B7 Aj! Aj!   2B7 Aj! Aj!  @ (4 -Atj)"B AuI " (Aj6 Aj!  7 Aj!  @ (4 -Atj)"B AuI " (Aj6 Aj!    "7 Aj! BpBR   (" (,A/M  (8(" (Aj6  B7 Aj!   Axj")"A0 A"BpBQ @ )" B AuI " (" Aj6 AJ ( ㆀ  7 !    (A7 Aj! Aj!  B07 Aj!  B 7 Aj!  @@@ AF -Aq @ AG )"B AtK    "BpBR   ! AuI  " (Aj6  7 Aj!  B7 Aj!  B7 Aj!  @@@ Aj("Aj( (()"A BoV"#AylAyj"A Aj(kvAtj("E @@ ( G (, #G ( E  (("  #A􆀀"  B7 Aj!   (Aj6   A"7 Aj! BpBR   Aj!@@@@@@@@ -    "7 Aj! BpBR         /("  H"7 Aj! BpBR   @ )"B AuI " (Aj6  7 Aj!  @ AuI (Aj6  7 Aj!  @@ ((" B0!  (Aj6 Bp!  7 Aj!   B AЇ"7 Aj! BpBR    "7 Aj! BpBR   Ő ($" (Aj6 /!  A"$Bp!% Aj!@  N %BQ  }!&  Atj!B!A!@@ )" B AuI "# #(Aj6 !'@ AJ B~ "'B| 'BBV!' @  $ ' AAL Aj! Aj! & B|"Q   @ $B AuI $" ("Aj6 AJ ( $ㆀ B7 Aj!   $7 Aj! %BR   @ Axj")"B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Apj" )"B AuI " ("Aj6 AJ ( ㆀ Axj")7  @ Ahj" )"B AuI " ("Aj6 AJ ( ㆀ Apj")7  Axj")7  @ Axj)"B AuI " (Aj6  7 Aj!  @ Apj)"B AuI " (Aj6  7@ Axj)"B AuI " (Aj6  7 Aj!  @ Ahj)"B AuI " (Aj6  7@ Apj)"B AuI " (Aj6  7@ Axj)"B AuI " (Aj6  7 Aj!   Axj" )7@ Apj)"B AuI " (Aj6 7 Aj!   Axj" )"7 Apj")7@ B AuI " (Aj6  7 Aj!   Axj" )"7 Apj")!  Ahj")7 7@ B AuI " (Aj6  7 Aj!   Axj" )"7 Apj")!  Ahj")7 7  A`j" )7@ B AuI " (Aj6 7 Aj!  Apj" )! Ahj")7  7 !  Ahj" )! Apj")7 Axj" )! 7  7 !  A`j" )! Ahj")7 Apj" )! Axj")7  7  7 !  AXj" )! A`j")7 Ahj" )! Apj")7  7  Axj" )7 7 !  Axj" )! Apj")7 Ahj" )! 7  7 !  Apj" )! Ahj")7 A`j" )! 7  7 !  Apj" )! Ahj")7 A`j" )! AXj")7  7  7 !  Axj" )! Apj")7  7 !  A`j" )! Apj")7 Axj" )! Ahj")7  7  7 !  @ (4 (Atj)"B AuI " (Aj6    "7 Aj! Aj! BpBR   A~j!#  Aj! /!#  6   #Atk"Axj)B0B0 # A߆" BpBQ  A#F  #Aj!  #AtkAxj! @@ )"B AuI " ("Aj6 AJ ( ㆀ Aj! Aj"  #AsAtj" 7 Aj!   Aj"6   /"#At"k"Apj) Axj) # Aކ" BpBQ  Apj!A k! @@  j)"B AuI " ("Aj6 AJ ( ㆀ Aj" AG A~ #kAtj" 7 Aj!   Aj"6   /"#Atk"Axj) Apj)B0 # A߆" BpBQ  A%F  Apj!A #Atk! @@  j)"B AuI " ("Aj6 AJ ( ㆀ Aj" AG A~ #kAtj" 7 Aj!  ($" (Aj6 /!( Aj!  A" BpBQ   (Atk!)@ (E A! )!@  Axj )"B0B0A!#@ B AuI "* *("*Aj6 *AJ ( ㆀ B07@ #AL Aj! ( Aj"F   B AuI  " ("Aj6 AJ  ( ㆀ  ) 7 )Aj!  Aj!  Ahj")  Apj" /"BpBQ @ )" B AuI " (" Aj6 AJ ( ㆀ @ )" B AuI " (" Aj6 AJ ( ㆀ @ Axj)" B AuI " ("Aj6 AJ ( ㆀ  7  B!@ Axj)" BoV B! BpB0Q AŀA܆   7 Aj!  @ B0Q !  AŀA܆   Apj) Axj)"AH @ E !  AĀA܆  @ Axj"))"BoV AĀA܆  Apj"*)! @@@ "(" (AsAtAyrj("#E A0j!@  #AjAt"#j"((AF  ((Aq"# ("(,AM  (8("# #(Aj6@  #Aӆ"# ("-  A: AĀAĆ A:  (8 #Atj("B!  AAч! (!#@   #Aj6 #AJ  ( ㆀ   #Aj6  7  ( #j)"B AuI " (Aj6 @ "#)"BX #( !  ("(8"( (4 B ($AjqAtj("Atj(" #G    Axj")ۇ  Aj! (!@@@@@@ -"  AĀ   Aŀ   񇀀  AŀA  AŀA܆   6 Aŀ AjĆ   Aj"6 /!( )!@  /"#Atk"Axj")" B AuI "* *(Aj6 @ B AuI "* *(Aj6 @@  A݆E @ # B0!  @ )" BpBQ B AuI  " (Aj6  @  Aj Ać" B!  @@ (" AŀA܆B!  B0  (AŀA (Aj ! Apj" ("Aj6 AJ  ( Bㆀ   )B0B0 # A߆! BpBQ  Axj!A #Atk! @@  j)"B AuI " ("Aj6 AJ ( ㆀ Aj" AG  #AsAtj" 7 Aj!  Aj! /!  Aj Axj")"*E  )!@ Apj"))" B AuI "# #(Aj6 @ B AuI "# #(Aj6 @@  A݆E @ ("# B0!  @ *)" BpBQ B AuI  " (Aj6  @  Aj Ać"( B!  @@ ("+ AŀA܆B!  B0 ( (AŀA Aj +! (Apj" ("(Aj6 (AJ  ( Bㆀ   ))B0B0 ("# *A߆! @ #E *!@@ )"B AuI "( (("(Aj6 (AJ ( ㆀ Aj! #Aj"# ("Aj * ( BpBQ @ ))"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ ) 7  Apj! B0 ) Axj")7 !   Axj")净"BpBQ @ )" B AuI " (" Aj6 AJ ( ㆀ  7 !  Axj"()!$B ! @ ("*("E @@ )"BpT @@ "/"#Asj #ALj @@ ( "#/"Aq AqE  #(@"AJ  E   A!  ("   *(8 At"j("# #(Aj6  A! Aj("#(8 j(" ("Aj6 AJ # 熀 BpBQ  @  AjB0ˆ"&BpBR B AuI  " ("Aj6 AJ  ( ㆀ  )! )!'@@ ("AjA8 (" (" -  A: AĀAĆ A:  A6 A6 6@ 'B AuI '" (Aj6 '7@ B AuI " (Aj6 A j 7@ B AuI " (Aj6 A(j 7@ $B AuI $" (Aj6 ("6  6 A0j $7  6 Aj6 @ B AuI " (" Aj6 AJ ( ㆀ @ 'B AuI '" (" Aj6 AJ ( 'ㆀ @ B AuI " (" Aj6 AN ( ㆀ @ ()"B AuI " (" Aj6 AJ ( ㆀ ( &7 !  Aj!@@ (Aj(" ( ("qAsAtj("#E A0j!(@A! ( #AjAtj"#( F  #(Aq"#  ) "AH   AGB7 Aj!  Aj!@@@ ("*(" ( ("#qAsAtj("(E A0j!@  (AjAt"(j")( #F  )(Aq"(  )" #  AIj"Bp!  @ *( (j)"Bp" BR  #񇀀  B AuI " (Aj6 BQ   7 Aj!  Aj!  ( Axj") AGjĈAJ   Aj! (!@ Apj"#(    @   Axj)AĈ"AL #!  AvAq! #!  ,!#A!@ (")Aj(" ( ("qAsAtj("(E A0j!*@@ (At *jAxj"( G !  (Aq"( Aj!@ #AJ E  Aj-AqE   @@  )-Aq   #AqE  ("A q  A|qAF AqAF   Aj( Aj 6 Aŀ A j܆  Aj!@   ,"*AJ")("(Aj(" ( ("qAsAtj("#E A0j!@@  #AjAtj"#( G !  #(Aq"# @ (-Aq !   (  *AqAr *AqAr )ч"E  B0B )7 !  Axj")! -!(@@ )" Aj(" ( ("qAsAtj("#E A0j!)@@ #At )jAxj"(!* ( F  *Aq"#  A!# *A qE  (Ar!# Aj!   B0B0 #AH @ )"B AuO !  " ("Aj6@ AL !  ( ㆀ !  @  /Atj)"B AuI " (Aj6 Aj!  7 Aj!   /Atj")!  Axj")7 Aj!@ B AuO !  " (" Aj6@ AL !  ( ㆀ !   /Atj!@ Axj)" B AuI " (Aj6 Aj! )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @  /Atj)"B AuI " (Aj6 Aj!  7 Aj!   /Atj")!  Axj")7 Aj!@ B AuO !  " (" Aj6@ AL !  ( ㆀ !   /Atj!@ Axj)" B AuI " (Aj6 Aj! )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @  -Atj)"B AuI " (Aj6 Aj!  7 Aj!   -Atj")!  Axj")7 Aj!@ B AuO !  " (" Aj6@ AL !  ( ㆀ !   -Atj!@ Axj)" B AuI " (Aj6 Aj! )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ )"B AuI " (Aj6  7 Aj!  @ )"B AuI " (Aj6  7 Aj!  @ )"B AuI " (Aj6  7 Aj!  @ )"B AuI " (Aj6  7 Aj!  )!  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  )!  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  )!  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  )!  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Axj)" B AuI " (Aj6 )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Axj)" B AuI " (Aj6 )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Axj)" B AuI " (Aj6 )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Axj)" B AuI " (Aj6 )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ )"B AuI " (Aj6  7 Aj!  @ )"B AuI " (Aj6  7 Aj!  @ )"B AuI " (Aj6  7 Aj!  @ )"B AuI " (Aj6  7 Aj!  )!  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  )!  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  )!  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  )!  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Axj)" B AuI " (Aj6 )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Axj)" B AuI " (Aj6 )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Axj)" B AuI " (Aj6 )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ Axj)" B AuI " (Aj6 )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ (()"B AuI " (Aj6  7 Aj!  @ (()"B AuI " (Aj6  7 Aj!  @ (()"B AuI " (Aj6  7 Aj!  @ ( ()"B AuI " (Aj6  7 Aj!  ((" )! Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  ((" )! Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  ((" )! Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  ( (" )! Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  ((! @ Axj)" B AuI " (Aj6 )! 7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  ((! @ Axj)" B AuI " (Aj6 )! 7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  ((! @ Axj)" B AuI " (Aj6 )! 7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  ( (! @ Axj)" B AuI " (Aj6 )! 7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  @ /Atj(()"B AuI " (Aj6 Aj!  7 Aj!  /Atj((")!  Axj")7 Aj!@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  /Atj((!@ Axj)" B AuI " (Aj6 Aj! )!  7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  Aj!@ /"Atj(()"BpBQ @ B AuI " (Aj6  7 Aj!   ($ Atj(񇀀  Aj!@ /"Atj((")"BpBQ  Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !   ($ Atj(񇀀  Aj!@ /"Atj(("5B BQ  ($ Atj(񇀀   Axj")7 !   /Atj")! B7 Aj!@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  Aj!@  /"Atj)"BpBR A!@ ( "E  /( jAtj(!  񇀀  @ B AuI " (Aj6  7 Aj!  Aj!@  /"Atj)"BpBR A!@ ( "E  /( jAtj(! 񇀀  @ B AuI " (Aj6  7 Aj!  Aj!@  /"Atj")"BpBR A!@ ( "E  /( jAtj(!  񇀀   Axj")7@ B AuO !  " (" Aj6@ AL !  ( ㆀ !  Aj!@  /Atj"5B BQ AŀA   Axj")7 !  Aj!@ (" G !  /!@ " (!@ Anj/ G Amj"#-Aq  ("(6 ( 6 A6 A6@ ("(E ( ((Aj"*6 * ("*-hAF ((") (A j"+(",6 , )6 +A6 ( *Aj")6 *Aj"-(!, - (Aj"(6 , (6 + ,6 *-h *A:h@ *(\"( )F @ (Axj"(( n * (򆀀 *(\"( )G *A:h @ ( Atj)"B AuI "( ((Aj6 7 Axj 6 # #-Ar:  G !  Aj! /!( (!#@@@ ("Aj(AyA Aj(kvAtj("E @@ (AyG (, ( E  ((" AA􆀀"  B7 Aj!   (Aj6   A"7 Aj!*@ BpBR *!  @ AG (Atj(" (Aj6    ( AFň"  *!  Aj!@@@@@ )""#(" ( ("qAsAtj("(E A0j!@  (AjAt"*j"(( F  ((Aq"(  ) "AH   B0!  @ #( *j5B BR  񇀀  @ (Aj-Aq  AĀ  B AtK   )"B AuI  !# # #(Aj6  7   A7 Aj!   ("Aj6  (j!@ AL !  ! E    ("Aj6  .j!@ AL !  ! E   ,!  ("Aj6  j!@ AL !  ! E   @@ Axj")"B?V !   ꇀ! Aj!@@  !  ( jA|j!  ("Aj6 AJ  E  !  @@ Axj")"B?V !   ꇀ! Aj!@@ E !  ( jA|j!  ("Aj6 AJ  E  !  @@ Axj")"B?V !   ꇀ! Aj!@@  !  , jAj!  ("Aj6 AJ  E  !  @@ Axj")"B?V !   ꇀ! Aj!@@ E !  , jAj!  ("Aj6 AJ  E  !    (j (kB7 Aj! Aj!   (kAj7  (j! Aj!  @ Axj")"BV ( "M ( j! !  AͫŀAĆ  @@ Axj"()"B "#Aj"AK A tAqE !   ! #AuI " ("Aj6 AJ ( ㆀ ("AjA (! (!@  @ - A: AĀAĆ A: B AuI v " ("Aj6 AH u v @ Aj(AyA Aj(kvAtj("E @@ (AyG (, ( E ` ((" AA􆀀"E r q B!&B0!'@ Axj)"$BpT $"./AG .( !)@@ )(" )( I B0!' ))"BBpB0Q @ )- @ .( "/)"B AuI " (Aj6 @@@@@  ƈ"Bp" B Q  BQ @  Aj Aj "-AE B AuI  - -("Aj6 AN   (!+@ (",E @ +E ,Aj! +!@@ ("#AH ("*(8 #Atj("# #("(Aj6 (AJ * #熀 Aj! Aj" ("Aj , ( @ +E @ B AuI - -("Aj6 AJ ( ㆀ /-  /( !   ("Aj6A!@ AJ ! E B AuI  - -("Aj6 AN  ( ㆀ  B AuI  " (" Aj6 AJ  ( ㆀ   Aj Aj /(A!  /A: / (6 / ("6 @ E A!A!@  $ /( j(B B0B0AAH  Aj! Aj" /( I )A: ))!  净! @ B AuI " ("Aj6 AJ ( ㆀ ) 7 Bp"B Q  BQ   ("Aj6@ AJ   ))!  Aj Aj A! @ )("+E @ )( "E +Aj!@@ ("#AH ("*(8 #Atj("# #("(Aj6 (AJ * #熀 Aj! Aj" ("Aj + ( ) (6 ) (6 )A6  @@ )-E ) Aj6 Axr!  ) Aj6 )( Atj"(! (!@ )-E A . "#AH  #   $ B B0B0AAH  E  A )( "AH  E B!&  A!'  &7  '7 Aj! }  Axj")" ALj"BpBQ @ B AuI " ("Aj6 AJ ( ㆀ  7  A A"BpBQ  B7  7 Aj! | -!A! A6 Aj!B0!@ A} kAtj"#)" BpB0Q A!@  A~ kAtj) AjȈ"BpBQ (" A!  @ #)" B AuI " ("Aj6 AJ ( ㆀ #B07 AH @ B AuI " (" Aj6 AJ ( ㆀ B0!  7  AGB7 Aj! {  Axj")" ALj"BpBQ ~@ B AuI " ("Aj6 AJ ( ㆀ  7  A A"BpBQ ~ B7  7 Aj! z @ Axj")"BoV AĀA܆ ~  A A" BpBQ }  ꇀ!  A A" BpBQ } " (" Aj6@ AJ ( ㆀ  7  AGB7 Aj! y @ Axj)BoX ! y AĀA܆ | @ Apj")"B AuI " ("Aj6 AJ ( ㆀ @ Ahj")"BpB0R ! x @  AɈE ! | @ )"B AuO ! x " (" Aj6@ AL ! x ( ㆀ ! w Axj")! @@  K !  @ "Axj")"BpBQ @ B AuI " ("Aj6 AJ ( ㆀ !  K @  G AŀAĆ   ! { Axj 7 ! v  Ahj) A`j)B0A Axj"A߆"BpBQ y@ )" B AuI " (" Aj6 AJ ( ㆀ  7 ! u Aj!B!@  A`j")" AA -"Aq A"'Bp" B Q B0Q BQ y )!@@@ AqE  ' B0AAA߆! 'B AuI  '" ("Aj6 AH    ' B0A AxjA߆! 'B AuI  '" ("Aj6 AJ  ( 'ㆀ BpBQ y@ Axj" )" B AuI " ("Aj6 AJ ( ㆀ 7B!  7 Aj! t @@ Axj" )"B?V AG!   ꇀ! EB7 ! s Aj!  Axj")" ( A"BpBQ v@ )" B AuI " (" Aj6 AJ ( ㆀ  7 ! r Aj!  Axj)" ( A"BpBQ u  7 Aj! q  Apj")" ( Axj) A!@ )"B AuI " ("Aj6 AJ ( ㆀ Aj! AJ p ! t ("AL O ("(, M P Aj! (8 Atj(" (Aj6@  Aӆ" ("- t A: AĀAĆ A: t  (8 Atj5B7 Aj! o Axj!@ Apj"*)"BoV AĀA܆B! a @ )" BpBQ AŀA܆B! a (!)@ "#)" BX #( ! ` )(8"( )(4 B )($AjqAtj("Atj(" #G ^ _ Apj)! Axj!)@ Ahj")" BoV AĀA܆ [ @ ))"'BpBQ AŀA܆ [ (!*@ '"#)"'BX #( ! Z *(8"( *(4 'B *($AjqAtj("Atj(" #G X Y Axj)! Apj!@ Ahj)" BoV AĀA܆ V @ )"'BpBQ AŀA܆ V (!*@ '"#)"'BX #( ! U *(8"( *(4 'B *($AjqAtj("Atj(" #G S T  Apj) ( Axj")"B0B0A!@ B AuI " ("Aj6 AJ ( ㆀ Aj! AJ k ! o Aj! !  Axj) (ʈAJ j n !  Axj) Apj)ˈAJ i m @@ Axj")"BoV BpB R   Apj) A⇀AH m @ B AuO ! i " ("Aj6@ AL ! i ( ㆀ ! h @ Axj)"BpZ ! h Apj)! !@@ " /"Asjii ! ALjhhhh @ ( -Aq ! h @ A(j("E  ("Aj6 AJ ( Bpㆀ A!@ BpT " (Aj6 6( ! g @@ AG A}!#  Apj)"  l Aj! (!A~!#  #Atj!#@@@@@ -"*Aq B0!&A! Axj)"'!%  B0!%A! B0!& Axj)"'!0  B0!%A! Axj)"'!& B0!0 #)!$  A!@ AH ((8 Atj()" B@BR B@T B?BRrq BBQ Aŀ Aŀ̈! Aŀ!#@@ Aq Aŀ!# A qE   # Aŀ̈! Axj!(A!#@ BpBQ  'A8 B0B0A!)@ B AuI "+ +("+Aj6 +AJ ( ㆀ )AH *Aqr! @ 'BpT @@ '"#/"*Asj *ALj #( -AqE @ #A(j("*E * *(")Aj6 )AJ ( *Bpㆀ A!*@ $BpT $"* *(Aj6 # *6(  $  % 0 & !# @ ()"B AuI " (" Aj6 AJ ( ㆀ A! @ AG @ AH ("(8 Atj(" ("Aj6 AJ  熀 A~! Apj)"B AuI " ("Aj6 AJ ( ㆀ Aj!  Atj!@ #AL ! g #AvAq! ! g Aj! Axj"+)!& Apj!) (!-@@@ -AqE B !$@ ))" BpB R A!( )0" B AuI  " (Aj6  B0!'Aŀ!@@ BpZ B0!$  @ -Aq B0!$   A= A"$Bp"B Q  BQ N $BpZ Aŀ!  A܆ M @ (()"$B AuI $" (Aj6 )0" B AuI " (Aj6 $A $BoV!( @@@ ("Aj( (AylAyj"#A Aj(kvAtj("E @@ ( #G (, (G ( E  (("  (A􆀀" B0!B!' M  (Aj6  A"'BpBQ J &"*-A0q G@@@ ("Aj( ",A BoV"(AylAyj"#A Aj(kvAtj("E @@ ( #G (, (G ( E  (("  (A􆀀" B! M  (Aj6  A "BpBQ K@   * ͈"BpBR B0!& L @ BpT @@@ "/"#Asj #ALj ( -AqE @ A(j("#E # #("(Aj6 (AJ ( #Bpㆀ A!#@ 'BpT '"# #(Aj6  #6(  -Ar: B0!&  A0 *3,B0B0A@@ AG   Ahj)ˈAN  M   -ʈAH L @@ B AtK  'A> B0B0A!  " (Aj6  'A> B0B0A!  ("#Aj6 #AJ ( ㆀ AH K@@ 'B AtK  A= 'B0B0A!  '" (Aj6  A= 'B0B0A!  ("#Aj6 #AJ ( 'ㆀ AH K@ $B AuI $" (" Aj6 AJ ( $ㆀ @ B AuI , ,(" Aj6 AJ ( ㆀ + '7 ) 7 ! e  Apj") Axj")󇀀!@ )" B AuI " ("Aj6 AJ ( ㆀ  7 BpBR d ! h Axj!   Apj) )󇀀"7 ! BpBR c g Axj)!@ Apj)" BpB0R  "E g    Ç g @ B AuI " (Aj6  󇀀"BpBQ f  7 Aj! b  Axj"()"E e  Apj")  Ahj"#)A!@ AH (")(8 Atj(" ("*Aj6 *AJ ) 熀 BpBQ e@ ()" B AuI " ("Aj6 AJ ( ㆀ @ )" B AuI " ("Aj6 AJ ( ㆀ @ #)" B AuI " ("Aj6 AJ ( ㆀ # 7 a  Ahj") Apj) Axj)A!@ )"B AuI " ("Aj6 AJ ( ㆀ AJ ` ! d (Aj(!@@@ Ahj")"BpB0R @ E -(AqE  Apj)"E g    Ç g @ )"B AuI " (Aj6  7  E A! ((Aq  A!   Apj) Axj) !@ )"B AuI " (" Aj6 AJ ( ㆀ @ AL ! ` AvAq! ! ` @ Ahj")BoV AĀA܆ c  Apj"#)"E b  )  Axj) A`j")A! @ AH ("*(8 Atj(" ("(Aj6 (AJ * 熀 @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ #)"B AuI " ("Aj6 AJ ( ㆀ @ AL ! _ AvAq! ! _ Ahj)! @ Apj)"B AuI " (Aj6   Axj")AAJ ] ! a @ Apj"()" BT AŀAĆ a A!  Axj"#)"A A"BpBQ `@ BpT "/A G ($AG A*j/AF! @ B AuI " ("Aj6 AJ ( ㆀ  #)ALj"$BpBQ `@  $A $A"&BpBR $B AuI a $" ("Aj6 AJ a ( $ㆀ a !@@@ E &BpT &"/A G ($AG A*j/ #)"BpT "/AG -AqE A(j(!* ($!  Aj Ј  ( *G *E  Ahj!)@ ))! @ )"B AuI "+ +(Aj6 @@ AH !'  B~ "'B| 'BBV!'  ' AAL  Aj! Aj! *Aj"*E   $ & AjȈ"BpBQ Ahj!@ (  )!'@@ AH !  B~ " B| BBV!  ' AAL  Aj!  $ & AjȈ"BpBR  $AɈ@ $B AuI $" ("Aj6 AJ ( $ㆀ &B AuI a &" ("Aj6 AJ a ( &ㆀ a ( 7@ $B AuI $" ("Aj6 AJ ( $ㆀ @ &B AuI &" ("Aj6 AJ ( &ㆀ @ #)"B AuO #! ] " ("Aj6@ AL #! ] ( ㆀ #! \ Aj! !   -"As"#AtA`rj)  #AtA@rAxqj)  AvAsAtj)AшE [ _ @@ Axj")" B "( Apj")"B "#r |"B|BV   B7 \ @ #AyjAmK (AyjAmK B~ B| B|"B| BBV7 \ BpBR BpBR    ҈"7 BpBR [ ! _  ӈE Z ^ Aj!@@  -Atj")"B " Axj")" B "#r  |"'B|BV   'B7 ! [ @ AyjAmK #AyjAmK B~ B| B|"B| BBV7 ! [ BpBR  A"BpBQ ^@  ( ԈE   ! [ @ )" B AuI " (Aj6  ҈"BpBQ ^    ! Z @ AuI " (Aj6  7x  7p  !ӈ ]   )p ! Y @ Axj"#)"B "* Apj")" B "(r }"B|BV   B7 #! Y (AyjAmK  *AyjAmK  B~ B| B|"B| BBV7 #! X @@ Axj")" B "* Apj"#)"'B "(r @ '~"B|BT @ -(AqE Bp|B`T  !1  @ BR 'BBQ D!1  # B7 Y (AyjAmK  *AyjAmK  -(Aq  'B| B|!1 #B~ 1"B| BBV7 W Axj")" Apj"#)" BV  -(Aq @@ "1DfE 1DAe  1! ; 1!@@ 1DAcE 1!  Ax!  R : # 7 ! V Axj")" Apj"#)"BV "(AH "*AH # ( *p7 ! U   Ո X Axj! T @ A|j(" ! T @ AyjAnO ! T !  AֈE S W @@@ Axj")"B " @ " D!1  @ AxG DA!1  B }B7 ! U AyjAmK  B||!1 B~ 1"B| BBV7 ! S !  AֈE R V @ Axj")"BV BBQ  B|B7 ! R !  AֈE Q U @ Axj")"BV BBQ  B|B7 ! Q !  AֈE P T @  Axj")A"BpBR B07 T  7@ B AuI " (Aj6  7  Aj" A~jֈE O S Aj!@  -Atj")"BV BBQ  B|B7 ! O @ B AuI " (Aj6  7  "Aֈ R )!  )7@ B AuI " (" Aj6 AJ ( ㆀ ! N Aj!@  -Atj")"BV BBQ  B|B7 ! N @ B AuI " (Aj6  7  "Aֈ Q )!  )7@ B AuI " (" Aj6 AJ ( ㆀ ! M @ Axj")"BV  B7 ! M !  ׈E L P @@@ Axj")" Apj"#)" BV ! -(AqE  AK B|BT   A؈E M Q Aq! # t7 K @ Axj")" Apj")" BV @ v"AH  7 ! L B~ "B| BBV7 ! K !  وE J N @ Axj")" Apj"#)" BV @ "A I -(Aq  Aq! # u7 J  A؈E I M @ Axj")" Apj")" BV   7 ! I !  A؈E H L @ Axj") Apj")"BV  7 ! H !  A؈E G K @ Axj")" Apj")" BV   7 ! G !  A؈E F J @ Axj")" Apj")" BV  HB7 ! F !  AڈE E I @ Axj")" Apj")" BV  LB7 ! E !  AڈE D H @ Axj")" Apj")" BV  JB7 ! D !  AڈE C G @ Axj")" Apj")" BV  NB7 ! C !  AڈE B F @ Axj")" Apj")" BV  FB7 ! B !  AۈE A E @ Axj")" Apj")" BV  GB7 ! A !  AۈE @ D @ Axj" )" Apj")" BV  FB7 ! @  A܈ ! ? @ Axj" )" Apj")" BV  GB7 ! ?  A܈ ! >   ( A Axj! = @ Axj"#)"BoV AҿŀA܆ A  Apj"()" "E @   !@ AH (")(8 Atj(" ("*Aj6 *AJ ) 熀 AH @@ B AuI " ("Aj6 AJ ( ㆀ " ("Aj6@ AJ ( ㆀ ( AGB7 #! < @ Apj"()"BoV AҿŀA܆ @ @@ Axj")" BpT   "AN  A  "#E @@@ (" ( #qAsAtj(" E A0j!@@ At jAxj"( #F  (Aq" A! #AJ  AG!  A! #AH  ("*(8 #Atj(" (" Aj6@ AJ * 熀 AG! @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ ( AGB7 ;  Apj")" Axj")" 釀"#AH >@ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ  #AGB7 : A!@@@@@@@@@@@A Axj")"B " AyjAnIA j    A! A!  A!  A!  A!  A!  @ "#,AN A!  BpT A! #/"(A F @@ (A0G #( -!#  ((D (Alj(AG!# #  A!  A!  A! @ AuI " (" Aj6 AJ ( ㆀ   A7 ! 9 Apj"()!  Axj")" "#E )!  7 B AuI  " (" Aj6 AJ  ( ㆀ    * Apj") A!@ )"B AuI " ("Aj6 AJ ( ㆀ AN  =  "BpBQ <  "# *!@ B AuI # #("(Aj6 (AJ ( ㆀ AH <@ )"B AuI " (" Aj6 AJ ( ㆀ  AGB7    *A7 Aj!    * A"BpBQ :  7 Aj!    * A"BpBQ 9@ )" B AuI " (" Aj6 AJ ( ㆀ  7 B07 Aj! ) jA{j! ! 4 @ )"B AuO ! 4 " ("Aj6@ AL ! 4 ( ㆀ ! 3 Axj)"BpB0Q   Axj)"BpB Q   @A Axj)"B " AyjAnIAj ,AL   Axj)"BpT  " ,AH  /"A F @@ A0G ( -!  ((D Alj(AG! E  B AuI  " (" Aj6 AJ  ( ㆀ  Axj)"B`B Q  Axj! @ B AuI " ("Aj6 AJ ( ㆀ B7 ! , (!  6  As j6 AĀ Ć /  57 Aj! Aj! * B! / B0! . B! - B! , B! + Axj")! + AŀAŀAA߫ŀҐ AŀAŀAAŀҐ AŀAŀA+AĀҐ  (Aj6  AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAĀҐ AxjB7 !  #B~ B| BBV7 !  B0! @ B AuI " ("Aj6 AJ ( ㆀ @ $B AuI $" ("Aj6 AJ ( $ㆀ @ &B AuI &" ("Aj6 AJ ( &ㆀ @ 'B AuI '" ("Aj6 AJ ( 'ㆀ @ B AuI " ("Aj6 AJ ( ㆀ +B07 )B07  @@ E  ( ( "Atj(" #F  AŀAŀAAĀҐ @@ "((" ( qAsAtj("#E A0j!@  #AjAtj"#( F  #(Aq"#  ( Aч"E   7A!   * Aj 6` AĀ Aj܆ A! B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ   !  @@ E  ( ( "Atj(" #F  AŀAŀAAĀҐ @ "((" ( qAsAtj("#E A0j!@  #AjAt"#j"+( F  +(Aq"#  * Aj 6P AĀ Aj܆ A! B AuI  " ("Aj6 AJ  ( ㆀ  (( #j")!  7A! B AuI " ("Aj6A! AJ * ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ ))"B AuI " ("Aj6 AJ ( ㆀ   !  @@ E  ( ( "Atj(" #F  AŀAŀAAĀҐ @@ "((" ( qAsAtj("#E A0j!@  #AjAt"#j"+( F  +(Aq"#  ) Aj 6@ AĀ Aj܆B!  (( #j)"B AuI " (Aj6 @ )" B AuI " ("Aj6 AJ ( ㆀ @ *)" B AuI " ("Aj6 AJ ( ㆀ * 7 BpBR !   A"BpBR  ("Aj  ( B AuI  " ("Aj6 AH   A6  7 B7 AjA; ") 6 #A~qAF @ "*-AqE @ *("( "#AH A0j!@ Aj-Aq  Aj! #Aj"# A: *A(j!   Aj Aj *A!E  B AuI  ) )("Aj6 ! AN  ( ㆀ (B7  (6 Aj!  (6 ( 7 !  @  ( #A"ч"  *!  6   #A7 Aj!  @ (Aj(" ( qAsAtj("# !  A0j!@  #AjAtj"#( F  #(Aq"# !   Aj( Aj 60 Aŀ A0j߇  @@ E  ( ( "Atj(" #F  AŀAŀAAĀҐ @@ BpT @@ "((" ( qAsAtj("#E A0j!@  #AjAtj"#( F  #(Aq"#  ( Aч!@ AH ("((8 Atj(" ("#Aj6 #AJ ( 熀 E  B07  @ AH ("(8 Atj(" ("Aj6 AJ  熀 AĀA܆  AH ("(8 Atj(" (" Aj6 AJ  熀 @ *)"B AuI " ("Aj6 AJ ( ㆀ @ ))"B AuO *!  " ("Aj6@ AL *!  ( ㆀ *! A! ! ! E ! A!  @@ )"BpT " /AG @@ Aj(" (AsAtA~rj("E A0j! @ AjAtj"(A7F  (Aq"  6  AAAA݈ )! BpT " /AG -A q   M !@@ Axj")"B AuI " (" Aj6 AJ ( ㆀ @ BpBR " @ Apj")"B AuI " (" Aj6 AJ ( ㆀ  Ahj)AɈ !  K B! -A0qE   6,  6  @ Aj( AjF ᆀ  O @@ )"B AuI " (" Aj6 AJ ( ㆀ Aj" I (6   )7 B 7 ( j! !A! Aj$  @@ ("AjA (" A! ("-  A: AĀAĆ A:A AjAA (! A:  (P"6  Aj"6  6P A6 Aj Aj"6 A j Aj6  6 Aj " ( "(6 Aj -Ar6@ ("Aj /("   J" /*j /.j"A AJAt (" @ ("- A: AĀAĆ A: (! AjA6 Aj  (A Aj 6@ B AuI (Aj6 Aj 7@ B AuI " (Aj6  6  7 Aj 6 Aj Atj"6 Aj /*" Atj6@ AH Aq! A!@ AF A~q!A! ! !@@ )"B AuI " (Aj6 7@ Aj)"B AuI " (Aj6 Aj 7 Aj! Aj!  Aj"G E @  At"j)"B AuI " (Aj6 j 7 @ j" L  Asj!@  kAq"E Atj!@ B07 Aj! Aj! Aj" AI  k! At jA8j!@ B07 AxjB07 ApjB07 AhjB07 A`jB07 AXjB07 APjB07 AHjB07 Aj! Axj" B07( A6 A0jB07  ~@@ Aj(" Aj"F Aj!@ "(!@ ("E  (Aj"6  -hAF (" A j"(" 6 6 A6  6 (\! Aj"6\  6  6 -h A:h@ (\" F @ Axj"(  򆀀 (\" G A:h Anj/!@@@ Amj"-AqE ( Atj)" B AtK   ( Atj)" B AuI  " (Aj6  7 Axj 6  -Ar:  G  AŀAŀA+AĀҐ ~@@ Aj("E Aj("E @  O @@ )"B AuI " ("Aj6 AJ ㆀ (d! Aj" I (H! Aj  ( A6H @ Aj)"B AuI " ("Aj6 AJ ㆀ @ )"B AuI " ("Aj6 AJ ㆀ  AŀAŀAӔAŀҐ #Ak"$@@@@@@@@@@ B "A j  ")BT  熀  -hAF  "(" A j"("6  6 A6  Aj"6 Aj"(!  Aj"6  6  6 -h  A:h@ (\" F @ Axj"( 򆀀 (\" G A:h  Ő @ "("E Aj("E ( A Aj( Aj  (  @ "("E Aj("E ( A Aj( Aj  (  熀   6Aŀ Ő Aj  ( Aj$ AŀAŀA+AĀҐ ~@@@ BpB0R (( Atj)"B AtK   @ A= A"BpBR  BoV @ B AuI " ("Aj6 AJ ( ㆀ @ " B (( Atj)"B AuI  " (Aj6 @@@@ ("Aj( "A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6  ! @ B AuI  ("Aj6 AJ ( ㆀ  @@ (AF @ ("E  (Aj"6@  -hAF (" A j"("6  6 A6  Aj"6 Aj"(!  Aj"6  6  6 -h A:h@ (\" F @ Axj"(  򆀀 (\" G A:h A6 A6  AŀAŀA+AĀҐ ~ Aj Aj"6 6`@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Aj(" Aj"F @ A|j"-"AO  (! Axj!@@@@@@@ 9 @ (0"AH (,!@@ )" B`T " (" AL  Aj" 6 -AqAG A j" (" (" 6 A6 6 (" 6 Aj" 6  6 6 Aj! Aj" (("E  ("AL   Aj"6   -AqAG  A j"(" (" 6 A6 6  (" 6 Aj"6  6  6  ("("AL   Aj"6@  -AqAG A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6 @ ( " AH A0j! ( !@@ Aj(E @@@@@ (Av @ (" E (" AL  Aj" 6 -AqAG A j" (" ("6 A6  6 (" 6 Aj" 6  6 6 Aj(" E  (" AL  Aj" 6  -AqAG  A j" (" ("6 A6  6 (" 6 Aj" 6  (" (" AL  Aj" 6  -AqAG  A j" (" ("6 A6  6 (" 6 Aj" 6  (A|q" (" AL  Aj" 6  -AqAG  A j" (" ("6 A6  6 (" 6 Aj" 6  )" B`T  " (" AL  Aj" 6  -AqAG  A j" (" ("6 A6  6 (" 6 Aj" 6  6 6 Aj! Aj! Aj" A~j/"AF  (D Alj( "E  BpA   @ A}j-AqE ()" B`T  "("AL   Aj"6   -AqAG  A j"(" (" 6 A6 6  (" 6 Aj"6  6  6  ("E  ("AL   Aj"6   -AqAG  A j"(" (" 6 A6 6  (" 6 Aj"6  6  6  @ ( @ )8" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 (\" E (@" O @@ )" B`T "(" AL   Aj" 6 -AqAG A j" (" (" 6 A6 6  (" 6 Aj"6  6 6 Aj" I @ ) " B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 )(" B`T  "("AL   Aj"6   -AqAG  A j"(" (" 6 A6 6  (" 6 Aj"6  6  6  ($"E  ("AL   Aj"6   -AqAG  A j"(" (" 6 A6 6  (" 6 Aj"6  6  6  @ (" Aj"F @@ ("AH (Aj!@@ Aj( (" E (" AL  Aj" 6 -AqAG A j" (" ("6 A6  6 (" 6 Aj" 6  6 6 Aj! Aj" @ )8" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )@" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 (" G @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL   Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL !  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )P" B_X "("AL "  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )X" B`T "("AL #  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )`" B`T "("AL $  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )h" B`T "("AL %  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )p" B`T "("AL &  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )x" B`T "("AL '  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL (  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL )  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ (@"AL ( !@@ )" B`T " (" AL , Aj" 6 -AqAG A j" (" (" 6 A6 6 (" 6 Aj" 6  6 6 Aj! Aj" @ )" B`T "("AL +  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )" B`T "("AL ,  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )H" B`T "("AL -  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )8" B`T "("AL .  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )@" B`T "("AL /  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )0" B`T "("AL 0  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 @ )(" B`T "("AL 1  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6 ("E ("AL 1  Aj"6  -AqAG A j"(" (" 6 A6 6  (" 6 Aj"6  6  6  -AqAr:@ ( (" ("6 A6  6  ("6  6  6  6 !  G (T" F @ Axj"(AL 1 A|j" -Aq":@@@@@@@ 9 @ (0" AH A!A! @@ (, j)" B`T " (" Aj6 A j" (" ("6 A6  6  (" 6 Aj"6  6  -Aq: 6 (0! Aj! Aj" H (("E   ("Aj6   A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq:  (" ("Aj6@  A j"(" (" 6 A6 6 ("6  Aj" 6  6  6 -Aq: @ ( AH A!A! @@ j"A4j(E ( j! @@@@@ A0j(Av @ ("E  ("Aj6  A j"(" ("6 A6  6  ("6  Aj"6  6  6  -Aq: Aj("E   (" Aj6  A j(" ("6 A6  6  ("6  Aj" 6  (" (" Aj6  A j(" ("6 A6  6  ("6  Aj" 6  (A|q" (" Aj6  A j(" ("6 A6  6  ("6  Aj" 6  )" B`T  " (" Aj6  A j(" ("6 A6  6  ("6  Aj" 6  6  6  -Aq: Aj! Aj" ( H A~j/"AF  (D Alj( "E  BpA‚   @ A}j-AqE ()" B`T  " ("Aj6   A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq:  ("E   ("Aj6   A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq:  @ ( @ )8" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: (\" E (@" O @@ )" B`T " (" Aj6 A j" (" (" 6 A6 6  (" 6 Aj" 6  6  -Aq: 6 (\! Aj" I @ ) " B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: )(" B`T  " ("Aj6   A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq:  ($"E   ("Aj6   A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq:  @ (" Aj"F @@ (" AH A!A!@@ ( j" Aj( (" E ("Aj6  A j" (" ("6 A6  6 ("6  Aj"6  6 -Aq: 6 (! Aj! Aj" H @ )8" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )@" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: (" G @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )P" B_X " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )X" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )`" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )h" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )p" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )x" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ (@" AL A!A! @@ ( j)" B`T " (" Aj6 A j" (" ("6 A6  6  (P" 6 Aj"6 6P  -Aq: 6 (@! Aj! Aj" H @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )H" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )8" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )@" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )0" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: @ )(" B`T " ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: ("E  ("Aj6  A j"(" (" 6 A6 6  (" 6 Aj" 6  6  6  -Aq: (" G @ (d" F @@@@@@@@ A|j-Aq9 @ (0"AH Aq! (,!A!@ AF A~q! A! !@@ )" B`T " (Aj6 @ Aj)" B`T " (Aj6 Aj! Aj"G E  Atj)" B`T " (Aj6 (("E   (Aj6  (" (Aj6@ ( " AH A0j! ( !@@ Aj(E @@@@@ (Av @ (" E (Aj6 Aj("   (!  (A|q!  )" B`T  ! (Aj6 Aj! Aj! Aj" A~j/"AF  (D Alj( "E  AxjBpA   @ A}j-AqE ()" B`T  " (Aj6  ("E   (Aj6  @ ( @ )8" B`T " (Aj6 @ )" B`T " (Aj6 (\"E (@" O @@ )" B`T " (Aj6 Aj" I @ ) " B`T " (Aj6 )(" B`T  " (Aj6  ($"E   (Aj6  @ (" Aj"F @@ (" AH Aq! (! A!@ AF Aj! A~q! A!@@ Alj( Ahj(" E (Aj6 @ ( A|j(" E (Aj6 A(j! Aj"G E Alj"( ("E  (Aj6 @ )8" B`T " (Aj6 @ )@" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 (" G @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ )P" B_X " (Aj6 @ )X" B`T " (Aj6 @ )`" B`T " (Aj6 @ )h" B`T " (Aj6 @ )p" B`T " (Aj6 @ )x" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ (@"AL Aq! ( !A!@ AF A~q! A! !@@ )" B`T " (Aj6 @ Aj)" B`T " (Aj6 Aj! Aj"G E  Atj)" B`T " (Aj6 @ )" B`T " (Aj6 @ )" B`T " (Aj6 @ )H" B`T " (Aj6 @ )8" B`T " (Aj6 @ )@" B`T " (Aj6 @ )0" B`T " (Aj6 @ )(" B`T " (Aj6 ("E  (Aj6 (" G A:h (d" F Aj! @@@ A|j-Aq"AK A tAqE Axj򆀀  (" (" 6 A6 6  ("6  6 6  6 (d" G A:h@ Aj(" Aj" F Aj! @@ A|j-Aq"AI AG 4 Axj! (!  (  G 6\ 6X AŀAŀA-AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA,AŀҐ AŀAŀA-AŀҐ Ő AŀAŀA-AĀҐ ~ ( !@@@@ )"B@T (8!  @@ (8" (4 B ($AjqAtj"("Atj(" G  6  @ ! E   ( "Atj(" G  6 !  Atj ( B0B0 Ar " (Aj6 A> B0B0 Ar  ("Aj6@ AJ ( ㆀ ~#Ak"$@@ )"BpBQ B AuI  " (Aj6  )!@ A j Ać" B!  @@ (" AŀA܆B!    ( AŀAA ! Apj" ("Aj6 AJ ( Bㆀ Aj$  ~||#Ak"$A!@@@@@@@A  Bp"B0Q" @@ )"BpT "/A G ) "B "A j!@ E AI  @ AK !  @ AI B|!   ۆ  +!  @ B AuI " (Aj6  A"78@@ BpBR   A8j! " ("Aj6@ AJ ( ㆀ BpBQ @ B "AK  9 +!  AyjAmK   B|7 +!  @ B "AK  9 +!  @ AyjAmK  B|7 +!   ۆ    ۆE  B!  A0jB7 A(jB7 A jB7 AjB7 AjB?7 B7 B7 A AH! @@ AH A AJ! A!A!@@@@  j)"B " AuI " (Aj6  @ AK  " 98  AyjAmK  B|"78 !  A8j ۆ  +8! " Dd DcrAG   j 9@  +" DfE DY@cE  D@9 Aj! Aj"G ! D!  G  A!  B!  A )B )B~|!  +! DD D>CeD D>f! @ A 䆀"BpBR !  @@@@ DfE DAe  !  !@@ DAcE !  Ax!  R !  B~ B| BBV!  @ B0Q !    A! B AuI " ("Aj6 AJ ( ㆀ Aj$   A肀6 ~#Ak"$A!@@@ BpB0Q B!A! Aj Ać"E @ (\"E A! !@A! @@@@@@@@@ ,Aj A!  A!  A!  A!  A!  A ! qE  Apj" (" Aj6@ AJ ( Bㆀ AĀA߇  Aj! r! Aj" Apj" ("Aj6 AJ ( Bㆀ B! Aj  AsAvAqć" E Aj AjA (\  ! Apj" ("Aj6@ AJ ( Bㆀ @   Aj6 Aŀ ߇  (! @@ (X"AJ (,A/M  (8(" (Aj6 B!  @ Aj Aj (" B! (" -  A: AĀAĆ A:  A6 A6 7 Aj   jA: B! (" Aj  ( Aj$  AŀAŀAA߫ŀҐ ~~ )!A!@ )"BpT @ A A"Bp"BR  @ B0R /AF!  ꇀ"AN B @@ BpB0R Aj(Aj(Aj)! E BpB0R @ A> A"BpBR  @ B "AuI " (Aj6 @ B AuI " (Aj6  A݆! @ AuI " ("Aj6 AJ Aj( ㆀ E B AuI  " (Aj6  @@@@@ BpT "/AG ( " (Aj6 B! BpB0R  ($" (Aj6   B @@@@ E @ A A"BpBR B0! !  @ BpB0R ! A A"BpBR   ! B AtK   @ B AuI " (Aj6 B AuI  " (Aj6 ! @ BpB0R ("(,A/M  (8(" (Aj6 B!  A͇!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ   A͇"BpBR   AŀAŀAA߫ŀҐ  "BpBQ @ B AuI " ("Aj6 AJ ( ㆀ    @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI " ("Aj6 AJ ( ㆀ   )AǀA h@ BpT "/A0G ( "E @ )"B`T   )"B`T   @ BpT "/A0G ( "E @ )"B AuI " ("Aj6 AJ ㆀ @ )"B AuI " ("Aj6 AJ ㆀ Aj  ( ~#A k"$@@ AqE A!@ BpT "/A0G ( ! @ -E AĀA܆B!  B! )"A A"Bp" BQ @@ )" BpT -Aq  AŀA܆  @B0  B Q"BpB0R   Aކ!  B!@  " BpBQ )!  7  7  7  )B0A A߆"BoV BpBQ @ B AuI " ("Aj6 AJ ( ㆀ AĀA܆B! @ B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AJ  ( ㆀ  A!@ BpT "/A0G ( ! @ -E AĀA܆B!  B! )"A A"Bp" BQ B0  B Q!@ - @ B AuI " ("Aj6 AJ ( ㆀ AŀA܆  @ BpB0R ) B0  A߆!  B!@  " BpBQ )!  7  7  7  )B0A A߆! @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A j$  ~@@ )"BpT )"BoV  AĀA܆B @@@ ("Aj(AyA Aj(kvAtj("E @@ (AyG (, ( E  ((" AA􆀀" B  (Aj6 @@ A0"BpBQ @ ("AjA (" @ ("- A: AĀAĆ A: B! B AuI  " ("Aj6 AJ  ( ㆀB @ B AuI " (Aj6  7@ B AuI " (Aj6  7@@ "/"A G A!  @ A0G ( -!  ((D Alj(AG! A:  : BpT " 6 -Aq -Aqr: !  ~#A k"$@@  A&j䆀"BpBQ @@ ("AjA (" ("-  A: AĀAĆ A:  B7  AvAq6 AjB7 Aj Aj"6  6@ BpT  6 A6@ ("AjA (" @ ("- A: AĀAĆ A: A6   6 A6  6  6 AH  )"BBpB0Q @ AA Aq" A" BpBQ @@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆  @ ALj"BpBQ @ A A" BpBQ   AjȈ" 7 BpBQ @@@@@  @ (  BpT  B󇀀" BpBQ  B󇀀" BpBQ   7  7 B0A A߆"BpBQ        AjȈ" 7 BpBR  ( @@ B0A AjA߆" BpBR )   )   AjȈ" 7 BpBQ  (E      AĀA܆B0! B0!    @ BpT AɈ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B! A j$  ~#Ak"$@ )"B AuI " (Aj6 @@@ Aj  )"BT  AĀAᇀ B!   AAA邀AA! Aj$  ~#Ak"$@ )"B AuI " (Aj6 @@@ Aj  )"BT  AĀAᇀ B!   AAA邀AA! Aj$   AŀA܆B ~~#Ak"$ Aǀj-"!@@@@@@ )"BoV @ B AuI " (Aj6 @ Aj E B!  )"BT  AĀAᇀB!  @ " /" AmjAqAK ( ! @ )"B AuI " (Aj6 @@ Aj  )" BT  AĀAᇀ B!  @ -E AŀA܆B!  @@ A tAs"BR (" "X  AĀAᇀB!  @@ )" BpB0R q   } !  B! Aj  @ -E AŀA܆  )"  | 4X  AŀAᇀB!  @ AkjAqA K   ㉀!  @  䆀" BpBQ @@@@ A A" Bp"B Q B0Q BQ  ($" (Aj6A!@ A"BpBQ B0AAA߆"Bp! @@ BoV BQ @ B AuI " ("Aj6 AJ ( ㆀ AĀA܆  @ BQ @ A A"BpBQ   AjȈ" BpBQ A!@@ (E     @@ AL !  B~ "B| BBV!   AAH  Aj!   AjȈ" BpBR B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A!@ B AuI " ("Aj6 AJ ( ㆀ B! @ B AuI " ("Aj6 AJ ( ㆀ BpBQ   " 7  @ A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ   (Aj6 )! ! B0 AAA邀AA"BpBQ "/Aǀj1! )!@ ("AjA (" @ ("- A: AĀAĆ A: B AuI  " ("Aj6 AJ  ( ㆀ   " ( "( " 6 6   > A6  6  6  6  A j6 A(j >  6  (6$ )BS B!A!@@@ Aj"AH  󇀀"BpBR   B~ "B| BBV"󇀀"BpBQ   AAH  ! Aj! ) W  B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B!  B! B! B0  AAA邀AA"BpBQ     )"B AuI " (Aj6 B! @  䆀"BpBR B AuI  " ("Aj6 AJ  ( ㆀ  "/Aǀj1! @ ("AjA (" @ ("- A: AĀAĆ A: @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI   ("Aj6 AJ  ( ㆀ   "( "( " 6 6   >  " 6  6  6 6  A j6 A(j >  6  ( j6$ ! Aj$ ~~#Ak"$@@@ )"BpT "/AmjAqAI   Aj(" Aj (DAj(6 Aŀ ܆B!  B! ( "E B!@ AH @ )"B AuI " (Aj6 Aj   )"BT AĀAᇀ  @ -E AŀA܆  @  (" X AĀAᇀ  " k! @ AH )"BpB0Q Aj  @ )" X AŀAᇀ  ! B! A 䆀"BpBQ @@@ -E AŀA܆  AÆ"  B AuI  " ("Aj6 AJ  ( ㆀ   ( "6 6  6  6  6  "6  (Aj6  6  A j6 6 ! Aj$  ~@@@ ("AjA (" B! ("-  A: AĀAĆ A:B B7 Aj"A6 Aj A j"6  6     "6@ E (  (!@@  )B0 ( Aj(A߆" Bp"BQ B0R  Aj(Axj")! B07 Bp! A6  A8jᆀ  ↀ BQ @ B AuI " ("Aj6 AJ ( ㆀ A9䆀"BpBQ  "6 BpT  6  ( B!  AŀAŀAAŀҐ ~ "/AKj! ( !@@ AN B0!  )!  6 B !@@ E @ AuI " (Aj6 ("Aj! )"B AuI  " ("Aj6 AJ   ㆀ  @ AuI " (Aj6 Aj(Axj!  7 B0 @    " B B!@@@@@ A(jB0ˆ"BpBR  (Aj"6   ("-hAF  (" A j"("6  6 A6  Aj"6 Aj"(!  Aj"6  6  6 -h  Aj! A:hB! (\" F @ Axj"(  򆀀 (\" G    (Aj"6@ E  @ ("-hAG  (" A j"("6  6 A6  Aj"6 Aj"(!  Aj"6  6  6@ -hE  Aj! A:h@ (\" F @ Axj"(  򆀀 (\" G ! A:  AŀAŀA+AĀҐ AŀAŀA+AĀҐ ~#A k"$@ "( "E (" ( A6 /ANj!@@@ AN B0!  )!  BpT " (Aj6@ )" B AuI " (Aj6 @@@  A݆E AʑŀA܆  A A" BpBR  (")! B 7 ) A B AuI  " ("Aj6 AJ  ( ㆀ  @ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!    )     7  7  )7 AꂀA 솀  A j$B0 ~~#A k"$@@@@ )"BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆  A1䆀"BpBQ @@ ("AjA (" ("-  A: AĀAĆ A:  B7 Aj"B7 Aj"B7 B07  Aj" 6  A j"6  6  6@ BpT  6 Aj  @@ B0B0A AjA߆"BpBR (")! B 7  7 )B0B0A AjA߆! @ )" B AuI " ("Aj6 AJ ( ㆀ BpBQ   @ B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ )"B AuI  " ("Aj6 AJ  ( ㆀ  ) ) B AuI " ("Aj6 AJ ( ㆀ B! A j$   A ĉ #A0k"$@@@ Aj ʉ" A! B AuI A! " ("Aj6 AH   @  ʉ" @  AjG ("E (("E ( A Aj( A! B AuI A! " ("Aj6 ! AH   @@@@@@@ A~j  ÍAH!   ÍAv!   ÍAH!   ÍE!  Ő  ÍAv! @  AjG ("E (("E ( A Aj( @  G ("E ("E ( A Aj( @ B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AJ  ( ㆀ A0j$  ~#Ak"$@@@@@@@@@@@@ Aj"("AjA (" ("-  A: AĀAĆ A:  A6 ( Aj"  B~" 7@ B " AuI " (Aj6 @@ A8j "E @ B " AuI " (Aj6 A j " @  A8jG (8"E  (H" E  ( A Aj(  A|j" (" Aj6 AJ Aj( B~ㆀ  ("Aj6 AJ  Aj( ㆀ  @@@@@@@ A~j     AAՍ!    AA̍!  @ Aj(Aj("E -(Aq  (     AAAύ! ("E ("E ( A Aj(   AAA֍Aq!   AAA֍Aq! (E A! Aj(Aj("E -(AqE @ Aj (()   lj"E  A8jȉ A jȉ  A!@ AN A!  )7 ɉ" BpBR   A8jȉ A jȉ @ B AuI " ("Aj6 AJ Aj( ㆀ A! B AuI A! " ("Aj6 AJ Aj( ㆀ Aj! Aj(! (! @@ AG   ލ!    Ar!  A8jȉ A jȉ  @ A q"E  ƉA!  7A!    AA!   A獀@@ ("AxF" AG  AAx  "k  AF6    (AA͍r! (AJ  A܍A$q r!    䍀!    ፀ!    ㍀!  Ő   AAݍ! @@  A8jG (8"E  (H"E  ( A Aj(  A|j" ("Aj6 AJ Aj( B~ㆀ @@ A jG ( "E  (0" E  ( A Aj(  A|j" (" Aj6 AJ Aj( B~ㆀ @ AuI " ("Aj6 AJ Aj( ㆀ @ AuI " ("Aj6 AJ Aj( ㆀ @ E  ƉA!  A!A!@ Aj(Aj(" E ((AvAq!  ʼn7 Aj$  ~#A k"$@@@ AF (!  @ Aj("Aj("E -(Aq  AŀA܆A! B AuI A! " ("Aj6 AJ  Aj( ㆀ  @ AjA (" @ Aj("- A: AĀAĆ A: A! B AuI A! " ("Aj6 AJ  Aj( ㆀ  A6 ( Aj" !@ B " AtM " (Aj6 B~!@ Aj " A!  ("Aj6@ AJ Aj( ㆀ AuI A! " ("Aj6 AJ  Aj( ㆀ  @@@@@@ A~j   !   ! Aj" (As6   BAAӍ! Aj" (As6  Ő   AtA}jAAӍ! @@  AjG ("E  ("E  ( A Aj(  A|j" ("Aj6 AJ Aj( B~ㆀ @ AuI " ("Aj6 AJ Aj( ㆀ @ E  ƉA!  A!A!@ Aj(Aj("E ((AvAq!   ʼn7 A j$  ~@@ ("AjA (" B! ("-  A: AĀAĆ A:B A6 ( Aj" B~!@  A AA񍀀A qE  ("Aj6@ AJ ( ㆀ B! ("-  A: AĀAĆ A:B  A vAqʼn!  ~#A k"$@@@ BpB0Q AŀA܆  @ )"B AuI " (Aj6 Aj!@@@@@@@A B " AyjAnIA j @ Aj(Aj("E -(AqE B!  !  @@@@ Aj ʉ" AuI " ("Aj6 AH  @ Aj(AH @ AuI " ("Aj6 AJ Aj( ㆀ AĀAᇀB!  Aj"("AjA (" @ ("- A: AĀAĆ A: AuI  " ("Aj6 AN  Aj( ㆀ  A6 ( Aj"   A܍r! !@ AtM " ("Aj6 AJ Aj( ㆀ B~!@ A qE  ("Aj6@ AJ Aj( ㆀ B! Aj("-  A: AĀAĆ A:  @ AqE  ("Aj6@ AJ Aj( ㆀ A݋ŀAᇀB!  @@ Aj(Aj(" A!  ((AvAq!  ʼn!  AjG  ("E  ("E  ( A Aj(  A͇!@ AuI " ("Aj6 AJ ( ㆀ ! BpBR   ˉ"BpB~R  AŀA߇  A"BpBR  @ AuI " ("Aj6 AJ Aj( ㆀ AĀA܆ B! A j$  ~@ ("(@ M (( Atj")! 7@ B AuI " ("Aj6 AJ  ㆀ  AĀAŀAAŀҐ F~ )!  7@ B AuI " ("Aj6 AJ ( ㆀ _~@ ((@ M @ (( Atj)"B AuI " (Aj6  AĀAŀAAŀҐ  )0  (Aj6 ~ ("Aj"6@@ AJ   (!@ Aj(" Aj"F @ Axj! (!   G Aj!@ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )X"B AtM " ("Aj6 AJ ( ㆀ @ Aj)"B AuI " ("Aj6 AJ ( ㆀ @ Aj)"B AuI " ("Aj6 AJ ( ㆀ @ Aj)"B AuI " ("Aj6 AJ ( ㆀ @ Aj)"B AuI " ("Aj6 AJ ( ㆀ @ Aj)"B AuI " ("Aj6 AJ ( ㆀ @ Aj)"B AuI " ("Aj6 AJ ( ㆀ @ Aj)"B AuI " ("Aj6 AJ ( ㆀ A!@ (@"AL A!@@ (( j)"B AuI " ("Aj6 AJ ( ㆀ (@! Aj! Aj" H Aj (( (@ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )P"B AuI " ("Aj6 AJ ( ㆀ @ )@"B AuI " ("Aj6 AJ ( ㆀ @ )H"B AuI " ("Aj6 AJ ( ㆀ @ )8"B AuI " ("Aj6 AJ ( ㆀ @ )0"B AuI " ("Aj6 AJ ( ㆀ (!@ ($"E  ("Aj6 AJ   (! Aj"(" ("6  6 A6 A6 A j"(" ("6  6 A6 A6 Aj (  AŀAŀAAĀҐ ~@ ("AH ("(8 Atj(" ("Aj6 AJ  熀 @ ("AH A!A!@@ ( j("AH ("(8 Atj(" ("Aj6 AJ  熀 (! Aj! Aj" H ("Aj ( (@ ( AH A!A!@@ ( j"( ( A|j( @ Aj("AH ("(8 Atj(" ("Aj6 AJ  熀 @ Aj("AH ("(8 Atj(" ("Aj6 AJ  熀 Aj! Aj" ( H ("Aj ( ( ("Aj (( (@ (8"AH A!A!@@ (4 j("AH ("(8 Atj(" ("Aj6 AJ  熀 (8! A j! Aj" H ("Aj (4 ( ("Aj (d (@ )@"B AuI " ("Aj6 AJ ( ㆀ @ )H"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ Aj)"B AuI " ("Aj6 AJ ( ㆀ A j"(" ("6  6 A6 A6 ("Aj  ( @ ( @ -E ( (A (kvAtj!@ "("A(j!  G  ((6 (Aj6 @ (,"E  ("Aj6 AJ Bpㆀ @ ( "E A4j!A!@@ ("AH (8 Atj(" ("Aj6 AJ 熀 ( ! Aj! Aj" I A j"(" ("6  6 A6 A6 Aj  (AsAtj ( AŀAŀA"AŀҐ  ( -@ AH ((8 Atj(" (Aj6  ~#A k"$  j! !@ AH !@ ,AH  Aj" I @@@  k"AI AߤŀAĆB!  @@@@@  G (!@ AJ (,A/M  (8(" (Aj6 B!  @ Aj Aj (" B! ("-  A: AĀAĆ A:  A6 A6  7 Aj   jA: B!  B7 A6  6  6@ ("Aj Aj (" @ ("- A: AĀAĆ A: (! AjA (B!  A6 A6  Aq7  6  L   A  (E @  G (!  Aq! A! (! (! @ As jAI A|q! At jAj!A!@   j"-; Aj Aj-; Aj Aj-; Aj Aj-; Aj! Aj"G E   j!  jAt jAj!@  -; Aj! Aj! Aj"  AŀAŀAA߫ŀҐ ( (" jAj    j6 @  O @@@ -""AH Aj!@ (" ( H  Aj   @ (E ( ("AtjAj Aq;  Aj6  ( ("jAj :  Aj6  @@   k" Aj"AK (!  @@ AI A!  O  Aj!@ ,A@N  Aj! Aj! Aj" !  A vAj! (!@@ (" ( N (E ( AtjAj ;  Aj6    AqAr!  @ " O  Aj! ,A@H @ (" ( N @ (E ( AtjAj ;  Aj6  AK ( jAj :  Aj6     I B! ( (!@ (" ("("Aj  ( ("(,A/M  (8(" (Aj6 B!  @@  ( H (!  (("Aj   ("t kAj ("  ! @   jAjA:  At Aqr6 B! A j$  AŀAŀAA߫ŀҐ ~~@ )"Aq"AujAvI @@ BP" /!  -! APj"A K @@@ A0F AI @@  Aj! Aj!  Aj! Aj!@ -APj"A K  B ~ |"BZ  Aj! ! Aj"  @ /APj"A K  B ~ |"BZ  Aj! ! Aj"E  A! AF   "AH   ("Aj6@ AJ @ BT 熀  Aj  ( Axr Aӆ A!@ ( @@@ AH (AߤŀAĆ (("Aj ( ( A6 B7   ( AlAm"  J! (!@ AH   ("("Aj (  tAj" k" (! (!@@  F  -  A: AĀAĆ A:   ( !   (("Aj ( ( A6 B7 A6A 6A! A  k"  K (v j"A AH6  @@ (" ( H A! Aj   @@ (E ("Aj6 ( AtjAj ;  @ AK ("Aj6  (jAj :  A! (   ("Aj6 ( AtjAj ; A!  ~#Ak"$A!@@ AH Axr!   6 AjA AĀ  Aj Aj"BpBQ ( Aӆ! Aj$   @  Ajq @ Aj" At" ("E A! A ! (4!@ ($"E AjAq!@@  Atj("E (8! @ Atj("( !    Aj(qAtj" (6 6 ! ($! Aj" I   ( At60 6$ 64  AŀAŀAAŀҐ  A B@ AH ("(8 Atj(" ("Aj6 AJ  熀 ~@@@@@@ BpBQ A͇"BpBQ  !  " (Aj6 Aj! )""Aq!@@@@ BBR @@ E Aq! @@ AO A! A!   k! A! A! @  j"Aj-Avj Aj-Avj Aj-Avj Aj-Avj! Aj" G @ E jAj!@ -Avj! Aj! Aj"  !    @ ("Aj j" Aj (" (" -  Aj!  A! A6 A6 Aq7 Aq! Aj!@ AF  k!A! @@@  j" Aj,"AH Aj!   A?qAr: Aj! AqAvA@r!  :@@ Aj,"AJ A?qAr: Aj! AqAvA@r!  Aj! :  Aj" G  !  @ (" Aj Al" Aj (" (" -  Aj!  A6 A6 7 Aj! E @ E @@@ /"AI j!  : Aj! Aj! Aj"  A! @ Aj!@@  Atj/" AK : Aj!  @ AqAG  N  Atj/"AqAG Aj! A t jAȀej! j! !  H  @@  j,"AJ  A?qAr: Aj! AqAvA@r!  Aj!  : A: )Bx Aj"kAq7@ B AuI  (" Aj6 AJ ( ㆀ E  (Aq!  A: AĀAĆ A: A!A!A! E   6 ! 0@ (" AA(ʀ"Aj6ʀ 6  A!@ BpT /!  *A!@ (@ M (D Alj(AG!  ~@@ ("" A!  Aq!@@ AO A!A!  A|q!A!A!@ Al  j"-jAl Aj-jAl Aj-jAl Aj-j!  Aj"G @ E  j!@ Al -j! Aj! Aj" Aq! A! @@@ (4 ($Aj qAtj("E (8!@@  Atj(")" B Aq G B@BR Aq G BBR Aj   @ AH  (Aj6   Ԇ!  E    Ԇ ( " Aj Aj ("E  A6 A6  Aq7 Aj   jA: Aӆ"E    Ԇ! AH  (8 Atj(" ("Aj6 AJ 熀 ~#Ak"$ A  @@@@ ("Aj( AtjAj)"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B !   (Aj6 @ A"BpBR B !  A4  "B0B0A B AuI " ("Aj6 AJ ( ㆀ @ E AAAA݈ @ (")"B AuI " ("Aj6 AJ  ㆀ  7 Aj$ t@@ (" ( H A! Aj   ("Aj6 (Aj!@@ (E  Atj ;   j : A!  p@ (" ( N @ (E Aj6 ( AtjAj ;A AK Aj6 ( jAj :A  ~B!@@ ( (!@ (" (("Aj  ( A6 (("(,A/M  (8(" (Aj6 B @  ( N @ (("Aj   ("t kAj (" (! 6 @ ("  (jAjA: (!  )Bw At"7  Bx 5B7 A6 B!  AŀAŀAA߫ŀҐ ~#Ak"$Aŀ!B!@@@@@@@@@@@@@@@@A B " AyjAnIA j     @ AuO ! " (Aj6 !  > AjA Aŀ  Aj! AA A! ("(,AM @ (8"(")"B@BQ BBR (!  (Aj6 B! ("(,AM @ (8"(")"B@BQ BBR (!  (Aj6 B!  @ AuI " (Aj6 @ A"BpBR !   ͇! B AuI  " ("Aj6 AJ  ( ㆀ  @ E @ AuO !  " (Aj6 !  AŀA܆  Aj B|A AA Aj Aj!   ((!   ((!   ((!  Aŀ!  ! Aj$  AŀAŀAA߫ŀҐ AŀAŀAA߫ŀҐ  A͇ =@ E Apj" ("Aj6 AJ ( Bㆀ @@@ ("Aj( A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6     Aj!@@@@ ("-E @@@ ("Aj( ( jAyl jAyl"A Aj(kvAtj("E A0j! @@ ( G (, (,G ( ( " AjG @ E A0j! ! ! @ Aj( Aj(G  ( (sA O  Aj! Aj! Aj"  Atj" A4j( G A0j(Av F  ((" (AF  䇀" A @ (" (F Aj ( At" (! @ E A! (" -  A: AĀAĆ A:A @ A  6 (!  (Aj6  6  (" Aj6@ AJ   ( At (jAxj  (" ( (A (kvAtj" (6( 6 A: (Aj6 (" (" Aj6@ AJ (   6 (AG  A!     (( At (jAxj!  AŀAŀA?AĀҐ ~@@@ ("Aj( (( Atj)"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6   @@@ ("Aj( A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A " ($" (Aj6 A ~@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A ~~~@@@ ("Aj( )0"A BoV"AylAyj" A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 @ A" BpBR  @@@@ ("Aj AtAj (" @ ("- A: AĀAĆ A: B! B AuI  " ("Aj6B! ! AH   ; : : 6@ AH Aq!A!@ AF Aj! A~q!A! ! @@ )"B AuI " (Aj6 Axj 7@ Aj)"B AuI " (Aj6  7 Aj! Aj!  Aj"G E @  At"j)"B AuI " (Aj6 jAj 7 @ BpT 6 A0 B0B0A ("(,A/M  (8(" (Aj6 A8 B" B0B0A  (" Aj6 ! AJ  ( ㆀ  AŀAŀAA߫ŀҐ @ BpT 6 p A:h@@ Aj(" Aj"F @ Axj"(  򆀀 (\" G A:h AŀAŀA+AĀҐ  ( ㆀ *~@ )"B AuI " (Aj6  Q~@ (")"B AuI " ("Aj6 AJ ㆀ 7B ~ (")! B 7   A!@ Aj-AqE Aj("E  Aj(j! Aj("!A!@ !  O  Aj!@@@@ -" @  I  Aj! ," Aq! AH    Aj" AqAn" AlkAqjAj! !  @  I  Aj! ," AqAt r! AJ @  I  Aj! ," AqAt r! AJ @  I  Aj! ," AqAt r! AJ @  I  @ ," AJ  Aj! At r! @  k"AN  @  j" I  Aj! ," Aq!@ AN @  I  Aj! ,"AqAt r!@ AL !  @ I  Aj! ," AqAt r! AJ @  I  Aj! ,"AqAt r!@ AL !  @ I  @ ," AJ  Aj! At r! @  k" AN  AvA Aqks j!  j! j" M  ~@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A ~#Ak"$  6 A!@ ("- A! ("E )"BpT @@ "/"Asj ALj ( E! A   ɇ Aj$B ~#Ak"$  6 A!@ ("- A! ("E )"BpT @@ "/"Asj ALj ( E! A   ɇ Aj$B ~#Ak"$  6 A!@ ("- A! ("E )"BpT @@ "/"Asj ALj ( E! A   ɇ Aj$B @@@ E B`B R   BpT  A!A!@@ B "Aj ! @@ BoV   @ "/A0G   ㇀ ("(, F @ -Aq @  A AŀA܆A @ E !@@  G @  A AŀA܆A ((," AuI " (Aj6 @ -E @ (AF @ 䇀" A (" ("Aj6@ AJ (   6  (" ( (A (kvAtj!@ "("A(j!  G  ((6 A: (Aj6 (! @ (,"E Bp  6,A!  AĀA܆A ~#Ak"$A!@ BpT "/A0G ( ! @@@ -E AĀA܆  )"A A"Bp"BQ )!@B0  B Q"BpB0R   ⇀!   7  7  )B0A A߆!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ @ ꇀ @  A!  AɮŀA܆  @ )"BpT @@ "/A0F -Aq!  燀"AH  A!   )! 净"BpBQ @  G A!  AŀA܆ A! Aj$  @@ ("Aj (AjAt" (AtjA0j" (" A! ("-  A: AĀAĆ A:A   (AsAtj ! (!  j"A: (P" Aj"6  6 A6 A: A j Aj6  6P@ (,"E  (Aj6 ( "E Aq! A0j!@ AF A~q!@@ Aj("AH ((8 Atj(" (Aj6 @ A j("AH ((8 Atj(" (Aj6 Aj! A~j" E ("AH ((8 Atj(" (Aj6  ~@ BpT @ "/A0G 懀 @ ((," B  (Aj6 Bp B !@A B "A j AyjAnI"AK A vAqE (( AtAȀj(Atj)"B AuI " (Aj6  ~A!@ BpT "/A0G ( ! @@@ -E AĀA܆  B! )"A A"Bp"BQ @B0  B Q"BpB0R )净  )B0A A߆!@ B AuI " ("Aj6 AJ ( ㆀ @ BpBR  @@ B "Aj @ )"BpT @@ "/A0F -Aq!  燀"AJ B! AuI  " ("Aj6 AJ  ( ㆀB @ E  )! @ 净"BpBR B   G  @ AuI " ("Aj6 AJ ( ㆀ AŀA܆ B!  ~@@@@A!@ BpT A! "/A0G ( ! @ -E AĀA܆  )"A A"Bp"BQ B0  B Q"BpB0R @ )"BpZ A "/A0F -Aq  )B0A A߆!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ ꇀ!@@ )"BpZ A!  @ "/A0F -Aq!  燀"AH   F  AŀA܆ A!  Z~B !@A B "A j AyjAnI"AK A vAqE (( AtAȀj(Atj)!  ~#Ak"$  7@@@ BpT @ A A"Bp"B Q B0Q A! BQ   B0A AjA߆!@ B AuI " ("Aj6 AJ ( ㆀ ꇀ!  "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆A!   뇀! Aj$  |A!@@@@@@@@ B "A j AG  " ("Aj6 )BBR! AJ  ( ㆀ  " ("Aj6 A j(AjA~I! AJ  ( ㆀ  " ("Aj6 A j(AjA~I! AJ  ( ㆀ  " ("Aj6 ,AJ! AJ  ( ㆀ  @ AyjAmK B|"Dd Dcr A! AuI " ("Aj6A! AJ ( ㆀ  ~A!@ BpT @@ "/"A F @ A0F ((D Alj(E  AG   ( )釀 ( -E  BoV   BpT  @@ A= A"BoV A! BpBQ  AĀA܆  ! !@@@ ((," A! /A0G   (Aj6 Bp!@@ 净!  Bp"B Q  BQ @  G   ("Aj6A!@ AJ ! ! E  A!  !  G A! B AuI " ("Aj6 AJ ( ㆀ  R  B0  A߆!@ B AuI " ("Aj6 AJ ( ㆀ  VA!@ BpT @ "/"A G A @ A0G ( - ((D Alj(AG!  ~ A6A!@ ("("E  ( E AŀAĆA! ()"BpT "/AG -A r:  I#Ak"$  Aj( Aj 6  ܆ Aj$ ~ ("AjA (!@@ AK @  B! ("-  A: AĀAĆ A:B A:  : A6 B7 A6 B @  B! ("-  A: AĀAĆ A:B  ; A6 B7 A6 B!  e#Ak"$@@  Aŵŀ!  Aj( Aj !  6 Aŀ  Aj$ ~@ ("-E @ (AF @ 䇀" A  kAPjAu! (" ("Aj6@ AJ (   6  AtjA0j!  ("( (A (kvAtj!@ "("A(j!  G A:  ((6  (Aj6 ("A|q   ( AqAtAǀj(! (A|q  (Aq6 B0 BpBQ"7AA  @@ BpT BV !@@@@@@@@@@@ "/A~j  A(j( M ($ Atj)"B AuI " (Aj6  A(j( M ($ j0B A(j( M  ($ j1 A(j( M  ($ Atj2B A(j( M  ($ Atj3 A(j( M  ($ Atj5 A(j( M @ ($ Atj("AH  B~ "B| BBV A(j( M  ($ Atj)!@ Aj(Aj("E B|BV ((AqE @ B|BV B B~ "B| BBV  A(j( M  ($ Atj) A(j( M B~ ($ Atj*"B| BBV A(j( M B~ ($ Atj)"B| BBV !@ B AuI " ("Aj6 AJ ( ㆀ @  B   A! AH ("(8 Atj(" ("Aj6 AJ 熀  M~A!@ "Bp"B0Q @ BQ A A!  M#Ak"$  Aj( Aj 6 Aŀ  Aj$ Z~@ AH  󇀀 B~ "B| BBV󇀀 ~~@ AJ Aq @ ("(, M @@ (8 Atj(")"B@BR Aj! Aq!@@ BP E  !@ /"A-G Aj! /"A0G B! AF  AFjAuK  AG   Atj kAG  AjAǀAE   E  !@ -"A-G Aj! -"A0G B! AF  AFjAuK AG   j kAG  AjAĀA   (Aj6@ BA"BpBR  @ A͇"BpBR B AuI  " ("Aj6 AJ  ( ㆀ   "!@ B AuI  ("Aj6 AJ ( ㆀ @    B0!  AŀAŀAAŀҐ 5@ BoV AĀA܆A     ~#A0k"$A! A6 A6 A6, A6(A!A!A! @@@@@@@@@ (" ( AH A0q! Aq! A! A!A! A!A!@@ j"A4j("E A0j(!A!A!@ AH @@ Aj((8 Atj()"B>Aj A!A!@ B Aq A!  A!A! @ E AqE   vAqE @ E A|qAxG ( j((5B BR 񇀀A!  @ A$j E Aj!  @ E Aj!  Aj! Aj! Aj" ( H @@ -" AqE @ AqE AqE  A(j( j!  @ /" AG AqE A!A! @ ) "BpBR (Aq! j!  Aj((D Alj(" E ("E A! A,j A(j Bp   (("E A0q! (,! AqE! A! A! A!@A!@  jAj("AH A!@@ Aj((8 Atj()"B>Aj A!@ B Aq A!  A! @  vAqE @@  A!  @   "AJ @ (,"E (("E  Aj! Aj!@@ (" AH ("(8 Atj(" ("Aj6 AJ  熀 Aj! Aj" Aj(" Aj  ( A! @@  A!  (!@ )"B AuI " ("Aj6 AJ Aj( ㆀ Av!@ )"B AuI " ("Aj6 AJ Aj( ㆀ Aq! )"B AuI " ("Aj6 AJ Aj( ㆀ (," j 6 ((!  AGrj! Aj! Aj" I A!@ Aj"(" Aj  j" j j"A AJAt (" @ (" - A: AĀAĆ A: A! (," E @ ((" E Aj! Aj!@@ ("AH ("(8 Atj(" ("Aj6 AJ  熀 Aj! Aj" Aj("Aj (  @@ ("( "AN A! ! !  A4j! Aq! A! A! ! ! A!@@ ("E A|j(!A!A! @ AH @@ Aj((8 Atj()"B>Aj A!A! @ B Aq A!  A!A! Aq!@ E E   vAqE @@ A$j E Aj!A! ! !  @ E Aj! ! ! !  Aj! ! ! ! Av!@ AH Aj((8 Atj(" (Aj6  Atj" 6  6 ( ! ! ! ! Aj! Aj" H -" AqE @ AqE AqE  A(j(!  /AF @ ((E Aq!A! A!@ (, j"(!A! @ Aj("AH A! @@ Aj((8 Atj()"B>Aj A! @ B Aq A!  A! @@@ E E   vAqE  Atj" 6 6 Aj!  AH Aj("(8 Atj(" (" Aj6 AJ  熀 Aj! Aj" ((I Aj(" Aj (, (  Aj(" Aj  (A!  Ő AqE  ) "BpBR  (Aq! AH Aq! @@ AO A!  A|q! At jAj! A!@ Apj Axj6 AdjA6 Ahj Axj6 Axj Axj6 AljA6 Axj6 AtjA6 A|jA6 A j!  Aj"G  j! E  Atj! @ A6 Aj Axr6 Aj! Aj! Aj! Aj"  G  G   G @ E   AA낀   6  6A! A0j$  AĀAŀA A! ( !  6 Aj$ #Ak"$@@@@@@@ (" ( qAs"Atj("E A!@@ A0j" Aj" Atj"( G A! !  @ (Aq" E  !  Aj" Atj" ! ( G Aj-AqE @ -E @ (AF @ 䇀" A!  (" ("Aj6@ AJ (   6  AtjA0j!  (" ( (A (kvAtj!@ "("A(j!  G  ((6 A: (Aj6 (! @@ E  kAuA AtjA0j" (A`q (Aqr6   Atj (Aq6 A!  ($Aj6$ ( ( Atj" (Av@ ("AH ("(8 Atj(" (" Aj6 AJ  熀 A6 (Aq6 B07 ($"AH A!  ( AvI  (" -  ( ($k"A AJ" (K  (Aj!@ "Av" O @ ("Aj At" At"jA0j (" A! ("- A! A: AĀAĆ A:  Aj! Aj"(" A j" ("6  6A! A6 A6 j" A(j A(j)7 A j" A j)7 Aj Aj)7 Aj Aj)7 )7 Aj" )7  ("(P"6  6  6P A j Aj6 A A!@ ("E A4j! A0j!A! ("! !A!@@ ("E  6  (Aq A|j(A`q"r6  ( qAsAtj"(Aq r6  Aj" 6  Atj )7 Aj! ( ! ! Aj! Aj! Aj" I   ($kG  6 A6$ 6 6  6 ("Aj (AsAtj ( ("Aj (  (!@ E  A! ("- A! A: AĀAĆ A:  A! E   6  A! -"AqE  AqE  A j E  ( " (("O A!@ /A~j @  AjG ($ Atj)  6(A!  E A!  ((D /Alj("E ("E Bp  ! Aj$  AŀAŀA#AŀҐ AŀAŀA#AŀҐ AŀAŀA$AŀҐ ~|@@@@@@@@@@A B "" AyjAnIA j Aj(Aj("E  -(AqE  (     Aj(Aj("E  -(AqE  B|""Dd DcrAG  (   捀  Aj ! Aj(Aj("E  -(AqE  "A j(AJ  (   Aj A܍ AuI   ("Aj6 AJ  Aj( ㆀ  @ ˉ"Bp"BR A B~R  AŀA߇A A"BpBR A @ AuI " ("Aj6 AJ ( ㆀ A! AĀA܆  |#A k"$@@@@@@@A B " AyjAnIA j !  A!@ B|"Df A!  A! Do@d  򐀀!  ( Aj Aj "Aj AjA܍ Aj AjA獀@ ("E ("E ( A Aj( @ AuI  ("Aj6 AJ ( ㆀ (!  A! A"BpBR A!  A! A AH"A AJ!  6 A j$  Aj!@ ("-E @ (AF @ 䇀" A (" ("Aj6@ AJ (   6  ("( (A (kvAtj!@ "("A(j!  G  ((6 A:  (Aj6 (! @@ ( A(j("j" (M A!     ($!@ E A!@  AxrAч )7 Aj!  Aj"G ($! ("Aj  (A! A6( B7  -Aq:  @ ("- A @@ (AF @@  A!  ( kAPjAu! @ 䇀" A (" ("Aj6@ AJ (   6A! E    AtjA0j6A ("( (A (kvAtj!@ "("A(j!  G A! A: ((6  (Aj6  ~@@ E ("AL   Aj"6  @@ -AqE )"B AuI  " ("Aj6 AJ  ㆀ  (" ("6  6 A6 A6 A j("E  (Aj"6  -hAF (" A j"("6  6 A6  Aj6 Aj"(!  Aj"6  6  6 -h ؇ A j"(" ("6  6 A6 A6 Aj  (  AŀAŀA)AŀҐ N@ B AuI " (Aj6 @ B AuI " (Aj6  A݆ @ ("(Av F @ ("-E @ (AF @ 䇀" A  kAPjAu! (" ("Aj6@ AJ (   6   AtjA0j"6  ("( (A (kvAtj!@ "("A(j!  G ((6 A:  (Aj6 (!  (Aq Atr6 A k@@ B "AuI " (Aj6  @ AK  9A AyjAmK  B|7A  ۆ A!@@@@@@A B " AyjAnIA j BB B|B? "Aj(E  A j(AxG Aj( Aj(!   ("Aj ($  ( AlAv"  J"At" (! (!@@  E A! -  A: AĀAĆ A:A  ( !@  A  6$A! A k"  KAv j6  `~@@ AH !  B~ "B| BBV!   A #A0k"$@@ BV   A!   7 AjAAŀ @@ Aj Aj"BpBQ ( Aӆ"  A! B AuI A! " ("Aj6 AJ  ( ㆀ     A! AH ("(8 Atj(" ("Aj6 AJ  熀 A0j$  #A0k"$@@ BV Axr!   7 AjAAŀ A! Aj Aj"BpBQ ( Aӆ! A0j$  @@ Aq A! AqAF @ AqE  sAq  AqE A! A0q"AF A0q"AGs  AqAG Aq AF E  A!    ("(AlAm"  J!@@ E ("Aj ( At" (!@ E  A! ("-  A: AĀAĆ A:A @  A  6 (Aj!@ "At!  I @ ("Aj At At"jA0j (" A! ("-  A: AĀAĆ A:A A j"(" (" 6 6 A6 A6  j  ( AtA0j" ("(P" 6 Aj" 6  6P A j Aj6@@  (AjF  Aj" 6 A ! ( "E   AtjA4j!A!@@@ (" Aj!  A|j" (A`q   qAsAtj"(Aqr6  Aj"6 ( ! Aj!  I    Atk  ("Aj  (AsAtj (  6  6A!  ~~ )"Aq" )"Aq"  H! B!@@@@ BBR @ BR Aj Aj !  A!@ E Aj! Aj!@ / -k"  Aj! Aj! Aj" A! A k!  Aj! Aj!@ BR E @ / -k"  Aj! Aj! Aj"E  E @ / /k"  Aj! Aj! Aj"E    A!  F AA  I!  [   B0B0 Ar!@ B AuI " ("Aj6 AJ ( ㆀ   !@ B AuI " ("Aj6 AJ ( ㆀ @  A   B0B0 Ar!@ B AuI " ("Aj6 AJ ( ㆀ @ AH ("(8 Atj(" ("Aj6 AJ  熀  q@ B|BV  B   B~ "B| BBV   A!@ "BpBQ " !@ B AuI  ("Aj6 AJ ( ㆀ  @ Aq A! AqE  Aj(Aj("E  -(AqE  AĀA܆A!  ~@@@@@@@@@@A B " AyjAnIA j AĀA܆B @ AuO  " (Aj6  @@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A!!  @@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A"!  @@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A$!  @@@ ("Aj( (() "A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A!  !@@@@ ("Aj( (()("A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 A! A0 )BB0B0A  @@@ ("Aj( (()0"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A!  @@@ ("Aj( (()8"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 A! @ BpBQ @ AuI " (Aj6    ~@@ AvAq"E @@@ Aj @ ("E  ("Aj6 AJ Bpㆀ ("E   ("Aj6 AJ  Bpㆀ ( (A|q )"B AuI " ("Aj6 AJ ㆀ #A0k"$@@ BV  Axr !   7 AjAAŀ @ Aj Aj"BpBR A!  @ ( Aӆ" A!    ! AH ("(8 Atj(" ("Aj6 AJ  熀 A0j$  &A!@ BpT -AvAq!  #A!@ BpT /AF!  ,A!@ BpT "/ G ( !  #Ak"$@@ BpT "/ G ( "   Aj(" Aj (D Alj(6 Aŀ ܆A! Aj$  O@ B "AK  9A @ AyjAmK  B|7A  ۆ |#Ak"$@@@@A!A!@@@A B " AyjAnIA j @ B|" a A6  @ DcE Ax6  @ DAdE A6  @ DAcE  6  Ax6  A j "AjA獀 AuI   ("Aj6 AJ  ( ㆀ  A! A"BpBR   > A! ( !  6 Aj$  j@ B AuI " (Aj6 @  " @@ (" N  j"   J!   L   6 |@@@@@@@@A B " AyjAnIA j  7A B7  @ B|" a B7A @ DcE B7A @ DCfE B7A @@ DCcE !  B!  7A A!  "AjA荀 AuI   ("Aj6 AJ  ( ㆀA A"BpBR B7 A!  n@ B AuI " (Aj6 @  " @ )"BU   |"7 @  S !  W   7 |~#Ak"$@ B AuI " (Aj6 @@@@@@@A B " AyjAnIA j @ B|"B4Aq"AK @ "DCcE  7  B7  @ AK B BB Awj"}  BS7  B7  Aj "AjA荀 AuI   ("Aj6 AJ  ( ㆀ  A"BpBR A!B!   7 A! )!  7 Aj$  .@ B AuI " (Aj6   #Ak"$@ B AuI " (Aj6 A!@ Aj  A!@ )"BT AĀAᇀA!B!  7 Aj$  ~~#Ak"$@@ BpZ !  Aoq!@@@ Aq A A"Bp"B Q B0Q BQ   AA AFA A7  B0A AjA߆!@ B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ BpBQ  " ("Aj6@ AJ ( ㆀ BpT   AŀA܆B!  A;A9  A"BpBQ @@@ BpT @ "/"A F @@ A0G ( -!  ((D Alj(AG! E   B0AAA߆!  ("Aj6@ AJ ( ㆀ BpBQ  BoX  " ("Aj6 AH   B AuI  " ("Aj6 ! AJ  ( ㆀ A9A;  A"BpBQ @@@ BpT @ "/"A F @@ A0G ( -!  ((D Alj(AG! E   B0AAA߆!  ("Aj6@ AJ ( ㆀ BpBQ  BpT  " ("Aj6 AH   B AuI  " ("Aj6 ! AJ  ( ㆀ AŀA܆ " ("Aj6B! AJ  ( ㆀ  " ("Aj6 AJ ( ㆀ Aj$  |~#Ak"$@@ "Dc @  a AAŀ󅀀  @ DcE AAĀ󅀀  AAĀ󅀀  @@@@@@@  D?Cd  D?c @@ DCcE !  B!  b  A:  B?" }! Aj!@@ A G @ Aj"  B " B ~}A0r: B T! ! E  ! @ Aj"   " ~}Aǀj-:  Z! !  @ BU Aj"A-: A 󅀀  D  Da!@ AG  9h  Aj" 6` AjAAŀ Aj"AO @  AjjAj-A5G  9X  6P AjAAŀ AjAO   9H  6@ AjAAŀ AjAO   60  98 AAŀ A0jAI AŀAŀAAŀҐ AqAF  AjAj! AjAr! AjAr!A!A!@  9(   j"Av"Aj" 6 AjAAŀ A j  -:@ AI   Aj jA:@@ AjA b A AH!@ AH  j! Aj" ! -A0F Aj!  Aj!  I A!  AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ  9  6 AjAAŀ Aj  -:@ AH AjAr AjAr  @ Aj j-A5G  9  6 AjAAŀ Aj  9x  6p AjAAŀ Aj !  9  Aj"6 AjAAŀ Aj  -: -! @ AH AjAr AjAr  Aj jA: Aj j AJjAj! ! @ AqA-G A-: Aj! @ Aq @ AH  N @  Aj"J Aj " j!@  k" AH A0  j! A:  Aj " j"A.: Aj!@  k" AH  Aj j   jAj! A:  AzI A; Aj!@ AF A0 As kAj!  Aj  jA:  -:@@ AN Aj!  Aj"A.: Aj AjAr   j! A:@@ AN Aj!  A+: Aj!  6  kAjAŀ  Aj$ J~#Ak"$       ! Aj$  :A!@ BpT @ /"A0G  AF!  u@@A! BpT  "/A0G  ( "E @ -E AĀA܆A )"BpT  /"A0F AF!  @ Aj(Aj("E B|BV ((AqE @ B|BV B B~ "B| BBV    B0  A߆ ~@@@@@@ ("Aj( (( "/AvAqAǀj/"Atj)"A BoV"AylAyj" A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E    (Aj6  "BpBR  B! B AuI   ("Aj6 AJ  ( ㆀB @    ͈"BpBQ (! A0 3,B0B0A A8 A/ A"B0B0A@ B AuI " ("Aj6 AJ ( ㆀ @@@@@ /"AqE @ ("Aj( ((AA A0qA0Fj)"A BoV"AylAyj" A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E   AqE  BpT  " -Ar:@ (" (AsAtA~rj("E A0j! @ AjAtj"(A=F  (Aq" A=A2ч"E  (Aj6  6 Aq  A6   (Aj6  Ő AŀAŀAAĀҐ A"BpBQ A= B0B0A B AuI  " ("Aj6 AJ  ( ㆀ  @ B AuI " ("Aj6 AJ ( ㆀ B!  ~~@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 @ A"BpBQ "A0Aч 7@@@@@ AN A!  ("Aj At (" E  Aq! A!@ AF A~q! A! ! !@@ )"B AuI " (Aj6  7@ Aj)"B AuI " (Aj6 Aj 7 Aj! Aj! Aj"G E @  At"j)"B AuI " (Aj6 j 7  6$ A(j 6 )"B AtK  A B0B0A  @ ("- A: AĀAĆ A: @ B AuO B  ("Aj6@ AL B ( ㆀB " (Aj6 A B0B0A  ("Aj6 AJ ( ㆀ AB0 )" A0  ~~~@@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"    (Aj6 @@ A " BpBQ " A0Aч 7@ AH A!@  Aň"E @ Axj"A'ч" (    6 Axj" G @  N  Atj!@@ )"B AuI " (Aj6 @@ AH !  B~ " B| BBV! AAH  Aj!  Aj"G @@ )"B AtK A B0B0A  " (Aj6 A B0B0A  ("Aj6 AJ ( ㆀ @ (()"B AtK A B0B0A  " (Aj6 A B0B0A  ("Aj6 AJ ( ㆀ  B AuI ("Aj6 AJ ( ㆀ B ~~@@ ("("E @@ )"BpT @@ "/"Asj ALj @@ ( "/"Aq AqE  (@"AH  (8 Atj(" (Aj6  ("   E  A!@ Aj(" Aj"F @@ A|j( G Axj!  (" G @ AH (8 Atj(" ("Aj6 AJ  熀   AĀA܆B @@ )"BpB0R @@@ ("Aj(AyA Aj(kvAtj("E @@ (AyG (, ( E  ((" AA􆀀" B  (Aj6 B! A"BpBQ   7 @ B AuI " (Aj6 !  ~#Ak"$@@@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆B!  )!@@@ )" B "AF AF  AF   AF   B0AAA߆!  @ A j " B!  ( !@@ AqE    Aކ!   B0  A߆! @ E !@@ )"B AuI " ("Aj6 AJ ( ㆀ Aj! Aj" ("Aj  ( Aj$  AĀ!@@ BpT @@ "/"Asj ALj A(j("E @ (" (AsAtAyrj("E A0j!@@  Aj"Atj"(AF  (Aq"E  BpT  ( Atj)"BpBR @@ ")"BX ( !  Aj("(8" (4 B ($AjqAtj("Atj(" F @@ E  ( "Atj(" F  AŀAŀAAĀҐ @ (" ( qAsAtj("E A0j!@A! AjAtj"( F  (Aq" A Aŀ! A܆A!  I#Ak"$  Aj( Aj 6  ߇ Aj$ ~~#Ak"$@@ BoV A! AĀA܆  A! A0 A"BpBQ A j  @ ( "AI A6 Aŀ ᇀ  @ ("Aj A AKAt" (" A! ("-  A:A! AĀAĆ A:  A !@@@ "/A~j -AqE  A(j(G E  Aq! A! @ AF A~q! A! A!@@ ($ jAxj)"B AuI " (Aj6  j" Axj 7@ ($ j)"B AuI " (Aj6 7 Aj! Aj" G E @ ($ At"j)"B AuI " (Aj6  j 7  E !B!A! ! @ !@ AJ B~ "B| BBV! @  󇀀"BpBR @ E !@@ )"B AuI " ("Aj6 AJ ( ㆀ Aj! Aj" ("Aj  (A!  7 Aj! Aj!  B|"R  6 Aj$  @@@@ BpBR BpBQ  AŀA܆  A䆀"BpBQ " >$  > ABB0B0A  @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI " ("Aj6 AJ ( ㆀB  ~~~#A k"$ B07 B07  A삀AAA Ajև"7@ BpBQ @@ BpB0R   Aj!   A AjAކ! @@@ BpBQ A!@ )"BpT "/AG ( ! @ )"BpT Aj!@ "/" A F @@ A0G ( -!  ((D Alj(AG! E  Aj)" BpT @ " /" A F @@ A0G ( -!  ((D Alj(AG! E   7  (Aj6@ )"B AuI " (Aj6  7 B AuI  " ("Aj6 ! AN   AŀA܆ @ )"B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6 AJ  Aj! !B! ( ㆀ ! A j$  ~~#Ak"$@@@ )"BpBQ A! AŀA܆  )!A! A Ać"E @ A Ać" !    ꈀ Apj" ("Aj6@ AJ ( Bㆀ Apj" ("Aj6 AJ  ( Bㆀ  (")! B 7  7@ )B0B0A AjA߆"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ E Apj" ("Aj6 AJ ( Bㆀ Aj$B0 ~@@ ("(" ( qAsAtj("E A0j!@  Aj"Atj"( F  (Aq" @@ Aj(Aj("E A! ((Aq  A! )"     ( Atj")!@ AF @ BpBR  Aj(񇀀A Aj-Aq  AĀA  7@ B AuI " ("Aj6 AJ ( ㆀ A @ Aj(" Aj"F @@ Anj/ G Amj-AvAq G Ahj" (Aj6  (" G @@ ("AjA( (" A! ("-  A: AĀAĆ A:A A6 (! A:  (P"6  Aj"6 6P  ;  -Aq AtAqr: A j Aj6 (" Aj"6  6  6  6@@ -(AqE A j AHj"6  (Aj6  A jA6 @ E  ( Atj6   ( Atj6  ~@@ BpT @ "/A0G 懀!  @ ((," B !   (Aj6 Bp!  B !A B "A j AyjAnI"AK A vAqE (( AtAȀj(Atj)"B AuI " (Aj6 @ B AuI " ("Aj6 AJ ( ㆀ  ~@@@@@@@@ E @ A A"Bp"B Q BQ  B0R  A A"BpBQ @  B0AAA߆"BoV BpBQ @ B AuI " ("Aj6 AJ ( ㆀ AĀA܆B! @ B AuI " ("Aj6 AJ ( ㆀ B!@ BpBR  A A"BpBQ @ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E   A A"BpBQ  @@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   @ B AuI " ("Aj6 AJ ( ㆀ AŀA܆B @  B0AAA߆"BoV BpBQ @ B AuI " ("Aj6 AJ ( ㆀ AĀA܆B!  ("Aj6@ AJ ( ㆀ !   (Aj6 A7"BpBR  B AuI  " ("Aj6 AJ  ( ㆀ  @ AƆ"  B!  @ B AuI " (Aj6  7  7@ BpT  6 ! B AuI " ("Aj6 AJ ( ㆀ   #Ak"$@@  AA A j"BpBQ @ ( "AF  6  A A"BpBQ  ꇀ"6B0!@  A A! @ B AuO !  " ("Aj6@ AL !  ( ㆀ !  @ B AuI " ("Aj6 AJ ( ㆀ A6B! Aj$  ~~@@  B0!A!  (")! B 7A! @@ A A"Bp"B Q B0Q A! BQ   B0AAA߆!@ B AuI " ("Aj6 AJ ( ㆀ @  @ BpBQ BoV  AĀA܆ A! B AuI " ("Aj6 AJ ( ㆀ ! @ E @ (")"B AuI " ("Aj6 AJ ㆀ 7  ~@ BpT E @ "(" (AsAtA~rj("E A0j!@@  Aj"Atj"(! (A8F  Aq"  AK  ( Atj)"BpBR  (Aq  A8 A"B0B0A!@ B AuI " ("Aj6 AJ ( ㆀ AN A A ~@@ BpT A!@ "(" (AsAtA~rj("E A0j!@@  Aj"Atj"(! (A8F  Aq"  AK  ( Atj)" BpBR  (Aq  "E  A!@ AH @ Aj((8 Atj()" B@BR B@T B?BRrq BBQ Aŀ Aŀ̈! AI Aj("(8 Atj(" ("Aj6 AJ  熀 BpBQ  A8 B0B0A!@ B AuI " ("Aj6 AJ ( ㆀ AH  A!  ~ #A k"$@@@@@@ BpBR !  A͇!  BpBQ  ! ! A6 A6  "(" Av" 6   j Aqj" 6  6 (" Aj Au tjAj ("  (" - A: AĀAĆ A: B! B AuI  " (" Aj6 AJ  ( ㆀ  A6 A6 Aq Axqr7  6 @@  L Aj A  (! @@ E A! @ AJ (!  Aq! (! ( !@ AI A|q! At jAj! A! @  j" -; Aj Aj-; Aj Aj-; Aj Aj-; Aj!  Aj" G E   j! jAt jAj! @ -; Aj! Aj! Aj"  ( (" jAj    j6 @ )"" Aq"E Aj!@@@@ BP Aq! @@ AO A! A!  Aj!  k!A! A! @ Azj/r A|j/r A~j/r /r! Aj!  Aj" G @ E At jAj! @ /r! Aj! Aj" @@@ ( j" (" L Aj E   ("  AH  Aj   (!  A AK" Aq! A! (! ( !@ AjAI  j! Aq! A! @ j" Aj -: Aj Aj-: Aj Aj-: Aj Aj-: Aj! Aj" G E  At jAj! j jAj! @ -: Aj! Aj! Aj"  @ ( j" (L Aj A  ( ! (! (E  Aq! A! @ AI  k! At jAj! A! @  j" Aj-; Aj Aj-; Aj Aj-; Aj Aj-; Aj!  Aj" G E  jAj! jAt jAj! @ -; Aj! Aj! Aj"  ( ("AtjAj  At  Aj j     j6 @@ ( j" (L Aj A  @@ (E A! @ AJ (!  Aq! (! ( !@ AI A|q! At jAj! A! @  j" -; Aj Aj-; Aj Aj-; Aj Aj-; Aj!  Aj" G E   j! jAt jAj! @ -; Aj! Aj! Aj"  ( ("jAj     j6 @ B AuI  (" Aj6 AJ ( ㆀ B! ( ( ! @ (" (" (" Aj ( (" (,A/M  (8(" (Aj6 B!  @@ (H (!  ((" Aj (" t kAj (" ! @ jAjA: At Aqr6 B! A j$  AŀAŀAA߫ŀҐ ~ " 6 B7$@@@ (<"E @ ("Aj At" (" ("-  A: AĀAĆ A:  A!  A 6$ (@ A0 A"BpBR A6A    #A0k"$A!@ BpT A!@ "-AqE ((D /Alj(" E AA (! A! A,j A(j   @@@ ((" E A BoV! (," Aj! Aj! AK! !@@@@ E A ("E AH   @  Aj  ("AH  E  (!@ )"B AuI " ("Aj6 AJ ( ㆀ @ ) "B AuI " ("Aj6 AJ ( ㆀ Aq!@ )"B AuI " ("Aj6 AJ ( ㆀ E   ( A"BpBQ (!@@ E    A!    B0B0A! B AuI " ("Aj6 AJ ( ㆀ AJ  Aj! @@ ("AH (" (8 Atj(" ("Aj6 AJ 熀 Aj! A! Aj" E  Aj! Aj" E  Aj! @@ ("AH (" (8 Atj(" (" Aj6 AJ 熀 Aj! Aj"  (," A!  Aj! A! (" Aj ( A0j$  ~~@@ BpBR !  A͇!  BpBR B @@ BpBR !  A͇!  BpBR B @ " ԈE @ B AuO  " ("Aj6@ AL  ( ㆀ  @@ ")"Aq )"Aqj"AI AߤŀAĆB!  @ ("Aj  " Au  AvtjAj (" B! ("-  A: AĀAĆ A:  A6 A6  Axq r7 Aj! @@ AH Aj (Aq" (Aqj Aj (Aq jA:  )"" Aq!@@ BP Aj At  E Aq! A! @ AI  k! A! !@   j" Aj-; Aj Aj-; Aj Aj-; Aj Aj-; Aj! Aj" G E jAj! At jAj! @ -; Aj! Aj! Aj" )"" Aq! (" Atj!@ BP  Aj At  E Aq! A! @ AI k! A! @   j" Aj-; Aj Aj-; Aj Aj-; Aj Aj-; Aj! Aj" G E At AqAtj jAj! jAj! @  -; Aj! Aj! Aj" B! @ B AuI  ("Aj6 AJ ( ㆀ @ B AuI  ("Aj6 AJ ( ㆀ  ~~|#Ak"$A Axj")"B " AyjAnI!@@@@A Apj")"B " AyjAnI"AG AG B~ B| B|"B| BBV7  @@ AF AG  @@@ AG Aj" A K A tA qE  AG  Aj"A K A tA q  Aj  AAA"E @ AuI " ("Aj6 AJ ( ㆀ @ AuI " ("Aj6 AJ ( ㆀ A! AH   )7  @ A"BpBR AuI  " ("Aj6 AJ  ( ㆀ  B !@ A"BpBR AuI  " ("Aj6 AJ  ( ㆀ  A B " AyjAnI!A  AyjAnI! @@ AyF AyG    ҈"7A! BpBQ   @ A"BpBR B AuI  " ("Aj6 AJ  ( ㆀ  B !@ A"BpBR AuI  " ("Aj6 AJ  ( ㆀ  @A  AyjAnI"A B " AyjAnI"r @  |"B|BV  B7  B~ "B| BBV7  @@ AuF AuG  A    (Aj(   @@ AwF AwG  A    (Aj(   @@@ AvF AvG  (!  @ Aj E     @ Aj("Aj("E -(AqE +" " D?CeE Dd DcrAG b +" " D?CeE Dd DcrAG a  B~ + +"B| BBV7  A    Aj(  A!  B07 B07A! Aj$  ~A!@@ BpBR @ "(AqE (AG   (( !@ )"BP )"" "jAtAjI  BBR  BP  Aj! Aj!A!@A!  Atj  j-;  B|B Bx"7 Aj" (AqI  )"BBR  Aq" Aq"jAjI  Aj" j Aj   )" )|B" Bx7  jA: A!   AqAtjAj Aj At  )" )|B Bx7A ~~~|#A k"$A Axj")"B " AyjAnI!@@@@@@@@@@@@@A Apj")" B " AyjAnI" AG AG  B|7  B|7  @@@ AG A~qAG  AG  A~qAF  Aj  AA"E @ AuI " ("Aj6 AJ ( ㆀ @ AuI " ("Aj6 AJ ( ㆀ A! AH   )7 @ A" BpBR AuI  " ("Aj6 AJ  ( ㆀ  B !@ A"BpBR AuI  " ("Aj6 AJ  ( ㆀ  @A  AyjAnI"A B " AyjAnI"r ! !@@@@@@@@@@ A~j    ~! @ Aj("Aj(" E -(AqE Bp|B`T  B! BR   rAJ  B7A!  @ Aj("Aj(" E -(Aq  B~  " B| BBV7A!  E " " BU @ AJ }!  |!  @@ AH AJ  @@  ꐀ" DfE DAe  !  ! @@ DAcE !  Ax! R  !   p!  @ Aj("Aj(" E -(Aq @@  󐀀" DfE DAe  !  ! @@ DAcE !  Ax! R !  }! B|BV  ! B!  B~ " B| BBV!  7A! @@ AuF AuG     (Aj( A! @@ AwF AwG     (Aj( A! @@ AvF AvG  (!  @ Aj E   Aj   @ Aj("Aj("E -(AqE +" " D?CeE Dd DcrAG b +" " D?CeE Dd DcrAG a  @@@@@ A~j + +!  + +!  + +ꐀ!  + +" ꐀ" DcE  !  +! @ +"Dc D! D?a  󐀀!  Ő + +! B~ " B| BBV7A!  Aŀ6 Aŀ ᇀ     Aj( A!  B07 B07A!  B~ B| BBV!  7A!  B~ B| BBV!  7A! A j$  ~~|#Ak"$@@@@@@@@ Axj")"B "AyjAnI @ BpT Aj  "AH  E @ AuI " ("Aj6 AJ ( ㆀ  )7A!  A"BpBQ @@@@ B A j  !@@@@ A~j B P B }!   AtA}j|! @@ B|BV B!  B~ "B| BBV!  7A! B7A! (!     (Aj( A!     (Aj( A!  @ Aj("Aj("E -(Aq  B|!@ A~j !  Ő AtA}j ! B~ "B| BBV7A!     Aj( A!  B07 A! Aj$ ~~#Ak"$@@@ Axj")"BpT Aj A"AH  E " ("Aj6@ AJ ( ㆀ  )7A!  @ A"Bp"BQ @@ Aj("Aj(" A!  -(AqAv! @@ B~Q E  A  Aj( A!  Aj   5B7A!  B07 A! Aj$ ~~#Ak"$A Axj")"B " AyjAnI!@@@@@A Apj")" B " AyjAnI" AG A~qAG  AG  A~qAF    AA"E @ AuI " ("Aj6 AJ ( ㆀ @ AuI " ("Aj6 AJ ( ㆀ A! AH   )7  @ A" BpBR AuI  " ("Aj6 AJ  ( ㆀ  @ A"BpBR B AuI  " ("Aj6 AJ  ( ㆀ  @@@@ Aj("Aj("E -(Aq  B !@ B "AvF AvG   F @ AuI " ("Aj6 AJ  ㆀ @ AuI " ("Aj6 AJ Aj( ㆀ AĀA܆     Aj(   @  E   A j  @@@@@@@ A~j ( ( u!  ( (q!  ( (r!  ( (s!  Ő ( ( t!  7 A!  B07 B07A! Aj$ ~~#Ak"$ Axj")!@@@@@ Apj")A"Bp"BR B AuI  " ("Aj6 AJ  Aj!  @ A"Bp"BR B AuI  " ("Aj6 AJ  Aj! !  @ Aj"(Aj(" E -(Aq  @ B~Q B~R  AŀA܆@ B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AN  ( ㆀ B07 B07A!  A j  Aj @@ ( (v"AH !  B~ "B| BBV!  7A! Aj$ ~~|#Ak"$A Axj")"B " AyjAnI!@@@@@A Apj")" B " AyjAnI" AG A~qAG  AG  A~qAF  Aj  AA"E @ AuI " ("Aj6 AJ ( ㆀ @ AuI " ("Aj6 AJ ( ㆀ A! AH   )7  @ A" BpBR AuI  " ("Aj6 AJ  ( ㆀ  B !@ A"BpBR AuI  " ("Aj6 AJ  ( ㆀ  A B " AyjAnI!@@A  AyjAnI"AyG AyG " "!@@@@@ A~j Av!  AH!  AJ!  AJ! @ AuI  ("Aj6 AJ ( ㆀ AuI   ("Aj6 AJ  ( ㆀ  @@ AK A tAqE AK A tAq  @@@ AvF AyFq AvF AyFqE  @ Aj(Aj("E -(Aq  @@ AyG ˉ" BpB~R  AyG  ˉ"BpB~Q   A!  @ A" BpBR   A"BpBR   @@A B " AyjAnI"AuF A B " AyjAnI"AuG    (Aj("AH   @@ AwF AwG    (Aj("AH   @ AvF AvG    (Aj("AH   B|  AF! B| AF! @@@@ A~j c!  e!  d!  f! A!  AGB7  B07 B07A! Aj$  ~~~|#Ak"$AA ! Axj")! Apj")!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A B " AyjAnI" Aj   A B " " AyjAnI"AF  A j" AK A!A tAq  AF  A G  B!A!A!  @A B " " AyjAnI"A j" AK A tAqE A j" AK A tAq   F  Aj  A! A B " " AyjAnI"Aj   B!A!B! A j" AK A tAqE  @  r  F!  @@@@@ AG  AG    !  B|! AG   B|a!   a!  @@ AuF AuG  A   (Aj(" AH   (! @@ AwF AwG  A   Aj(" AH   A   Aj(" AN   AG  Aj   AA"E @ AuI " (" Aj6 AJ ( ㆀ @ AuI " (" Aj6 AJ ( ㆀ A! AH   )7  Ay! A j" AK  A F @A tAqE A!  AG  ! Ay!Ax!  B!A! A! A! AF  !  ! Ay! ! Ay!A! A! A B " " AyjAnI"Aj   B!  ! Ay!A!  AG A jAI   AG  A jAI  @ Aj   AA"E @ AuI " (" Aj6 AJ ( ㆀ @ AuI " (" Aj6 AJ ( ㆀ A! AH  )7 @ A"BpBR AuI " ("Aj6 AN A"BpBR B AuI  " ("Aj6 ! AN   A!  A!  B!A! A! A! A~q! @@ BpT AG A! ,AH  A! @ BpT ,AH! A~qAF q! @ AuI " ("Aj6 AJ ( ㆀ AuI  " ("Aj6 AJ  ( ㆀ   A݆!  @@ AvF AvG  @ Aj(Aj("E -(Aq  @@  ˉ"BpB~R   ˉ"BpB~Q  @ B AuI " ("Aj6 AJ Aj( ㆀ A! B AuI  " ("Aj6 AJ  Aj( ㆀ  @ A"BpBR AuI  " ("Aj6 AN   A"BpBR  B AuI  " ("Aj6 ! AN  ( ㆀ B07 B07A!   A݆!  GB7A! Aj$ 2 Apj!  ) Axj)A݆ GB7 ~ #Ak"$ Aj Aj"(A킀@@@  A!A!   6 AjAŀ Aj@ AF  6 AjAŀ Aj @ AF  6p AjAŀ Aj AjA  A1  " B0B0A@ B AuI " ("Aj6 AJ Aj( ㆀ ! ! AqE ! !  (("E Aj! @@@ AqE A!  @@ )" BpT " (" (AsAtA~rj(" E A0j!@@  AjAt"j"(! (A8F  Aq"  AK ( j)" BpBR A Ać"E Apj! @ - Aŀ6P AjAŀ Aj ("Aj6 AJ  ( Bㆀ   6` AjAŀ Aj ("Aj6 AJ  ( Bㆀ  Aŀ6@ AjAŀ Aj @@@ ("/" Asj ALj @ ( "/" AqE (As ( j!@@@ Aj("   ݇! Aj(!   Aj(j!A! Aj("!@@ !  O  Aj! @@@@ -" @ I !  Aj! ,"Aq! AH    Aj" AqAn"AlkAqjAj! !  @  I !  Aj! ,"AqAt r! AJ @  I !  Aj! ,"AqAt r! AJ @  I !  Aj! ,"AqAt r! AJ @  I !  @ ,"AJ !  Aj! At r! @  k"AN !  @ j" I !  Aj! ,"Aq! @ AN @  I !  Aj! ,"AqAt r! @ AL !  @  I !  Aj! ,"AqAt r! AJ @  I !  Aj! ,"AqAt r! @ AL !  @  I !  @ ,"AJ !  Aj! At r! @  k"AN !  AvA Aqks j!  j!  j" M   ݇! AG  ! @ AG Aj(! AF! Aj!@@ (@A" BpBR Aŀ6 AjAŀ A j  A Ać!@ B AuI " ("Aj6 AJ ( ㆀ  Aŀ 60 AjAŀ A0j E Apj" ("Aj6 AJ ( Bㆀ A  ! AF! AF! @ AF  6 AjAŀ Aj AF  6 AjAŀ   !   ! AjA) AjA  Aq   AjAŀA AjA  (" AjAB ! @ ( (!  ! Aj A7 B0B0A@ B AuI " ("Aj6 AJ Aj( ㆀ @ AF A2 B0B0A AF A3 B0B0A Aj$     Aކ     Aކ }~@   A"BpBR   B0  A߆!@ B AuI " ("Aj6 AJ ( ㆀ  #Ak"$ (!  6 A! A  Aɇ@ (P"E (hAGAt! @@ (" ( "K (!   ! (6  (j"6  () ( ( A AJ ݈ Aj$A  (!@@@@@@ E  @ "Aj! -"AwjAI @ A`j @@@ -"AVj @@ Aq"A K A tAq  -! Aj! Aj!@@@ -"A*F E   Aj-A/G Aj!  Aj! A/!  @ "Aj!A !@ -"Awj5 @ -"A*F A/! A/G   Aj!@@@ -"A*F  Aj-A/G Aj!  Aj! @@ AH Aǀ AvAqj( vAq!  ! E @@@@@ Aj  @ -"AG @ -㈀ A -! AqAG  -AG  -AG  -AG  -AG  -㈀  Aj6AO -AG  -㈀ A[ -AG  -AG  -AG  -AG  -AG  -㈀  Aj6AM -AG -AG -AG -AG -AG -AG -AG -㈀ AG A A=!A! -A>F  !  @@ AK Aǀ AvAqj( vAq A~qAF AGr #Ak"$@@@ ( "AH (Aj! ! @ ( F  Aj! Aj" @ ($ J A! AjA A$j Aj刀  ( !  Aj6 (" Al"j"B7 AjA6 AjB7@ AH ((8 Atj(" (Aj6 j 6 @ AH ((8 Atj(" (Aj6 Alj" 6 6  @@ E  Aj( A j 6 Aŀ Ajሀ   Aj( Aj 6 Aŀ ߇ A! Aj$   ("Aj (  (AlAm"  J" l" (! (!@@ E  A! -  A: AĀAĆ A:A  ( !@  A  6A! A k"  K n j6  ~~ #Ak"$@@@@@ )@"BpB0R @@@ Aj("Aj( (()X"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E    (Aj6 B! A "Bp"BQ  AjAjB7 A jB7 B7 Aj A爀! Aj("Aj ( ( ! @ E ($!  ($! @@ (," AJ A A   Aj! A! @@@@@ A lj"("E  6  6  (! A6x B7p Aj Aj   Aj鈀!@ (x"AH A!A!@@ (p j("AH ("(8 Atj(" ("Aj6 AJ  熀 (x! Aj! Aj" H ("Aj (p (@@  (!Aŀ!@@ Aj  Aŀ! Aj"( Aj !  ( A0j (6  6  ߇  (! Aj! Aj!@ ( AG A6  (( (Atj(6  A6@ ("E  6   ((H($ (Atj(6  A6 Aj" G A A @ BoV !@@ Aj(AG Aj(! (A&ч"E   (Aj6  6 A j! Aj" E  Ar! Aq!A!@@@@@@ A lj"(Aj (!@ (" ( ("qAsAtj("E A0j!@  AjAtj"( F  (Aq" A6ч"E  (Aj6  6    6  6  (! (A&ч"E   (Aj6  6 Aj" F  Ő AŀAŀAAĀҐ Aj"("Aj ( ("(,AM @ (8"(")"B@BQ BBR (!  (Aj6 A B"B0B0A  ("Aj6@ AJ Aj( ㆀ -Aq:B! BQ   7@ @ B AuI " (Aj6 !  AŀAŀAA߫ŀҐ Aj("Aj ( B AuI ("Aj6 AJ Aj( ㆀ B! Aj$  @ ("AH (! !@@ ( F  Aj! Aj"E  A @@ ( J A! A Aj Aj刀  (!  Aj6 ( Atj 6@@ ( AH Aj! A j!A! @ ( Alj" (!@@ E AF  @@ (" AH (! !@ ( F  A j! Aj" @ ( J A  Aj刀  Aj(! (!  Aj6 ( A lj" 6@@  (E  A6   6  AjA6 Aj" ( H @ (,AN A A!A!@  ( (( j(Atj(A爀  Aj! Aj" (,H A A!  ~  (A!  (A!A!@ BpBQ BpBQ  ! @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ #Ak"$ Aj! (!@@ A6 A6@ AH (! ! @@ ( G Aj( G A!  Aj! Aj" @@ ( L !  @ A  Aj刀E A!  (!  Aj"6 ( Atj" 6@ AH ((8 Atj(" (Aj6 6@@ ( " AH (! @ Aj( F  Aj! Aj" @ AF @ (,AH A! A! @@@ A j Aj ( (( j(Atj(  鈀"Aj @ ("E @ ( ( G (( ( F  A6 A6A!   ( 6  (6 Aj! Aj" (,H A! (  A!  @ Aj(E A j("AF ( (Atj(!   6  6A! Aj$  ~#A0k"$@@@  눀"E @ 숀AJ Aj(" Aj"F @ (!@ Aj- Axj !  G   (Aj6 BP" )AA툀"BpBR  (")! B 7  7@ )B0B0A A߆"B AuI " ("Aj6 AJ ( ㆀ )"B AuI  " ("Aj6 AJ  ( ㆀ   (Aj6  7  )7  )7  AAAA և"7 AAAA և!  ("Aj6  7(@ AJ ( ㆀ @   A j"B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A0j$ #Ak"$@@@@ ("(" @ -A.F Aj "Aj (" A! ("-  A:A! AĀAĆ A:  A/!A!@ Aj   kA "jAj" (" ("-  A:A! AĀAĆ A:    " jA:@@ -A.G @A!@@ -ARj -A/G  -E  A/"Aj  "AŀE  AŀE    KkA:A!  j"-A.F -E  Aŀ􅀀   􅀀    ( " A!     jA: @  " ("Aj  (A!  @@@ Aj(" Aj"F @ A|j( F  (" G @ AH ("(8 Atj(" ("Aj6 AJ  熀 ("   6 Aŀ  ("Aj  (A!  ("Aj  ( Axj! AH  ("(8 Atj(" ("Aj6 AJ  熀   ( ! ("Aj  ( Aj$  ~A!@ (T"Aq  A|qAr6T (AH A!A!@ ( j"(!@ (A"BpBR A A Ać!@ B AuI " ("Aj6 AJ ( ㆀ @  A @@@@ A"BpBQ A Ać!@ B AuI " ("Aj6 AJ ( ㆀ   A! Apj" (" Aj6A! AH    눀! Apj" (" Aj6@ AJ ( Bㆀ Apj" ("Aj6 AJ  ( Bㆀ @  A Aj 6A! 숀AL  Aj! Aj" (H A  #A k"$@@@@@@@@@@@@@@@@@ B "Aj   " B0AAA߆! B AuI  " ("Aj6 AJ  ( ㆀ  " ("Aj6@ AJ ( ㆀ B! 򈀀AH @ (T"AI Av"A|jAI AG  A6  AjA󈀀! (!@ AJ E @ (T"AxqAG   Aq6T (`"   @ (T"Av"A|jAI" AG  @  AG  @ ApqA G (! @@@ )"BpB0Q B AtK    Aj"B0ˆ"7B! BpBQ  A6@@ A Aj Aj􈀀AJ )"B !@ ("E (T"Axq!@ AuI AG !@ A:  AqA(r6T  7  6  (Aj6 (`"E  (T"AxqAG  AG @  7 A:  6  AqA(r6T (`"E  (T"AxqAG @ AuI " ("Aj6 AJ ( ㆀ Aj-AtA(G -E Aj)B0B0A AjA߆"B AuI  " ("Aj6 AJ  ( ㆀ  (T"ApqA G - @ (t AxqA(G  B07 )B0B0A AjA߆"B AuI " ("Aj6 AJ ( ㆀ (  )"B AuI  " (Aj6 B! BpBR   @ AuI " ("Aj6 AJ ( ㆀ AŀA܆B! ! A j$  AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ ~#Ak"$  (戀"7@@ BpBR (")! B 7  7 )B0B0A AjA߆"B AuI  " ("Aj6 AJ  ( ㆀ  @ )B0B0A A߆"B AuI " ("Aj6 AJ ( ㆀ )"B AuI " ("Aj6 AJ ( ㆀ Aj$B0 ~#Ak"$B0!@ AH )!  7@ )B0B0A AjA߆"B AuI " ("Aj6 AJ ( ㆀ Aj$B0 ~#Ak"$@@@ BpT "/A1G (   Aj(" Aj (DA j(6 Aŀ ܆B!  B0"BpBQ Aj ˆ!@ B AuI " ("Aj6 AJ ( ㆀ @ BpBR !    Aj!@ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @  !  B! B AuI " ("Aj6 AJ ( ㆀ Aj$    )AA툀 ~A!@ Aj- @@@@ (PE ( "AH A!A!@@ ( j"( @ ("AjA( (" A! ("-  A: AĀAĆ A:A B07 A6  -Ar: (! A: (P" Aj" 6  6  Aj6 A j Aj6  6P A|j 6 ( ! Aj! Aj" H  )H! @@@ ("Aj( )0" A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" A  (Aj6 @ A " BpBR A " "6  (Aj6 B7$@ (<"E @ ("Aj At" (" ("-  Aj"A: AĀAĆ  A! A 6$ (<"AH A!@@ ($ j-"AqE @ ("AjA( (" ("-  Aj"A: AĀAĆ  A6 BB0 Aq7  -Ar: (! A: (P" Aj" 6  6  Aj6 A j Aj6  6P  6 (Aj B?P   A|j(" AqE AO  Aj! Aj! Aj" I @ AO !  @  ArAq AK! Av"!  Aq ( " E  A0j!A! @@ (" E (! @ AH @ Aj((8 Atj()"B>Aj B?PE   ("AqE AK @@@ AJ AtAr!  A j   ( At! @@ AO !  @  ArAq AK! Av" !  Aq @ ( Atj)E A!  ( ! Aj! Aj" I A!  AŀA܆A! Aj$  Ő @ ( "-E (AŀA܆A Aj"A@@ ("AO !  @  ArAq AK! Av"!   Aq  ( (A #Ak"$@ ( "- Aj"A@@ ("AO !  @  ArAq AK! Av"!   Aq  57  AjA@@ (@ (<"J A! ( A8jA Aj Aj刀  (      B! A G @ " Bp" B0Q BQ   A AAH  BpT /A0G    B AuO B!  -Aq:  ("Aj6@ AL B! ( ㆀB!  O  Aj! ," AqAt r! AJ O  Aj! ," AqAt r! AJ O  Aj! ," AqAt r! AJ O  ,"AL  Aj! At r!  6 k"AJ  @ ( (AŀA߇ A6      j6@@ E  6@ ("Aj At" (" @ ("- A: AĀAĆ A: A6    A!  A 6 (AH A!@ ( j  Aj! Aj" (H @@@@@ (" ( "O Aj! ," Aq!@ AJ O  Aj! ," AqAt r! AJ O  Aj! ," AqAt r! AJ O  Aj! ," AqAt r! AJ O  ,"AL  Aj! At r!  6 k"AL    j6 E   6$   AlƆ"6 E  ( AN   A6 @ ( (AŀA߇ A6    A!A!@@@ ( " ("kAJ @ ( (AŀA߇ A6   (!  Aj" 6  j"Aj -" 6@@@    O  Aj! ,"Aq!@ AJ  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  ," AL  Aj! At r!  6  k"AL  j6 A j  Aj  Aj! Aj" ( N   A6 @ ( (AŀA߇ A6     :( A,j" @@@@ ("E  60   AtƆ"6( E  (AH (! ( ! A! @  O  Aj! ,"Aq! @@ AL !   O  Aj! ,"AqAt r! @ AL !   O  Aj! ,"AqAt r! @ AL !   O  Aj! ,"AqAt r! @ AL !   O  ,"AL  Aj! At r!  6  6 Aj! Aj" (H A8j"  ("E   6<   A lƆ"64 E  (AH A!A!  A6@ ( (AŀA߇ A6    @ (4 j"Axj  A|j    A j! Aj" (H A(j  -(AG:T  " 7H BpBQ BP!      O  Aj! ," AqAt r! AJ  O  Aj! ," AqAt r! AJ  O  Aj! ," AqAt r! AJ  O  ,"AL  Aj! At r!  k"AJ  @ ( AŀA߇ A6B!    j6 AvA Aqks! Aj$  #Ak"$@@@@ (" ( "O Aj! ,"Aq!@ AN  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  ,"AL  Aj! At r!  k"AJ  (  (AŀA߇   j"6 Av!@@ AqE  Axr6  @@@  ("O AK   @  k" (I (!   (k6 Aŀ ߇ A6  ( Atj("AH  (((8 Atj(" (Aj6  6 A!  A! A6 Aj$  @@ (" ( "O Aj! ,"Aq!@ AN  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  ,"AL  Aj! At r!  k"AJ  @ ( (AŀA߇ A6 A;A  j6  ;A @@ (" ( "O Aj! ,"Aq!@ AJ  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  ,"AL  Aj! At r!  6  k"AL   j6A A6 @ ( (AŀA߇ A6A ^@ ( ("kAJ A:@ ( (AŀA߇ A6A Aj6  -:A #Ak"$@@@@@@@@ A"j-E ( ("k O  (  (AŀA߇   j!@   6  @ E ( ("k O  (  (AŀA߇   6  j6       6 ( j6 A"j!A!@  j"-"Aj  AKAt"Aǀj-! @ Aǀj-AijAqAK (!@ -E AH  (((8 Atj(" (Aj6  @ AH @@  (" O AK    k" (O  ( Atj("AH  (((8 Atj(" (Aj6  6  j" I A!  (!  ( (k6 Aŀ ߇  6 A! A6 Aj$  m@ E @@ E ( ("k O  @ ( (AŀA߇ A6A    ( j6 A ~ (!@@@@ (" ( "O Aj! ,"Aq!@ AN  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  Aj! ,"AqAt r! AJ  O  ,"AL  Aj! At r!  k"AJ  @ ( AŀA߇ A6   j"6@  kAJ @ ( AŀA߇ A6  Aj6@ B0 A (AAA"BpBQ ( AI @ (, (("J ( A$jA A,j Aj刀  ((! Aj6( ($ Atj 6  B AuI " ("Aj6 AJ ( ㆀ B!   Aj  (  (!@  䆀"BpBQ @@@@@ BT A! AŀAᇀ  @ (" AjA (" A! ("-  A:A! AĀAĆ A:  " 6 E @ AG (" E Aj( A AJ "6 E  A   ("Aj A AJ" (" @ ("- A: AĀAĆ A: A6 @ B AuI " ("Aj6 AJ ( ㆀ ("Aj (B A 6  @ AG Aj("E Aj(   6 6 6 A: Aj A j"6 6 AF:@ E E (   BpT  6  #Ak"$@@@ BpT "/AmjAqAI   Aj(" Aj (DAj(6 Aŀ ܆A!  ( ! Aj$ @@ -AG @ ((8"("(Aq Aj"Aj"G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G Aj   A @ ("(Aq G A! Aj  E  Ő  !   6  6 A6  6 A6@ ("Aj  t kAj (" @ ("- A: AĀAĆ A: A6 A6 A6A  At Aqr7 A6 A6  6A @@ AI A! A vAjˇ  AqAr! @ (" ( N @ (E Aj6 ( AtjAj ;A AK Aj6 ( jAj :A !  A  ("Aj   (  Aт6 ~#Ak"$ AA" 6  6   j6L  6H  6  6 B7 A6  Aq6\@@  @ "BpBQ ( AF  AŀAሀ B AuI " ("Aj6 AJ ( ㆀ  A jB! Aj$  ~#Ak"$ A j" (H"6D A$j(6  6@@@@@@ 6, A6( 6 ("6$@@@@@@@@@@@@@@@@ ,"Aq"{     (LI A6  A"!  Aj  -A F! A6 Aj"6 Aj6  6 (\E   Aj"6 (\E @ -AVj  Aj!@  6@@@@@@@ -"  (LI AĀ!  A6 Aj"6 (Aj6  A*F  AJ  A Aj! (! AG  -A/G  Aj"6 Aj! A'! (\  AN Aŀ!  -AFjAvI   -AFjAvI   (\E  -AFjAvI  (  AjAA (\" AGAtA"BpBQ  A6 A0j 7   6  Aj6  A!  Aj"6 A6  :  Aj6 @@@@ ,"AN Aj!  Aj!A!@@Aǀ AvAqj( vAqE   j!@  (AzjI ( A j Aj Aj  ( !  j : Aj! Aj,"AJ  j! (  !  Aj!A! @ ( " AjF (("Aj  (  6 E  B74 A6 A0j 6  Aj!@  6@@@@ -"  (LO   AJ @ A Aj"A~qAG (!  (! AG Aj! Aሀ  A Aj  AjE  A6A!  (6HA! (( @@ (" ( "K (!   ! (6  (j"6 6( Aj$  ~~#A k"$ (!@@@@@@@@@@@ ( "AJ Aj AF @ AF AG B!  @ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E (("  A􆀀"E  B!  ($" (Aj6  A"BpBQ @ ( AF "BpBQ A!@@@ AH !  B~ "B| BBV!    AAH ( A,G   @ (\E ( AF  Aj! "BpBR A  @ A0j)"B AuI " (Aj6    A0j)!    A0j(Aj"AK  AtAȀj)!    AĀAሀ  (H!  A,j("6   k6 Aŀ ሀ   (Aj6  A"BpBQ @@ ( "AF @@@ AG  )0"   (\E  AG  (0"AH ((8 Atj(" (Aj6 @@  @ ( A:F A:6 Aŀ Ajሀ  Ç   "BpBR   Ç     B0B0A!@ B AuI " ("Aj6 AJ ( ㆀ @ AH (" (8 Atj(" ("Aj6 AJ 熀 AH  ( A,G    ( ! (\E AG A   AŀAሀ B AuI " ("Aj6 AJ ( ㆀ B! A j$  ~@@@@@@ ("Aj, )"B AuI  (! " ("Aj6 AJ  ( ㆀ )"B AuI  (! " ("Aj6 AJ  ( ㆀ (!@ )"B AuI " ("Aj6 AJ ( ㆀ (! Aj)"B AuI  " ("Aj6 AJ  ( ㆀ ("AH  (("(8 Atj(" ("Aj6 AJ   熀 AjA-K ("AH (("(8 Atj(" ("Aj6 AJ  熀 ~~|~#Ak"$  6LAA A q! Aq!A! @@@@@@@@@ -" AUj A!  Aj"6L AqE    Aj"6LA! AqE  -! AqA0G @@@@@@@@@ -" Aj  AG  A! Aoq  Aj" 6LA!A!  @  AF  AF @  AF    APjAqA K A! AqE  Aj! Aj!@ -! Aj! AqA0F AqA8G A!A!  A!   A! AqE   Aj" 6LA!A!  A!   A! AqE A!  Aj" 6LA!   6LA!A! A! @ -" APj"A I @ AjAK AIj!  AjA$ AjAI! B~!  H   Aq ArAG AĀ AjE @ AG @ ("AjA (" B! ("-  A: AĀAĆ A:  A6 ( Aj"   B~!  BB{ !  A!   A ! A! (L! @@ j"-" APj"A I @ AjAK AIj!  AjA$ AjAI! !@@  H  G @ A G AG jAj-A0F  @ jAj-"APj"A I @ AjAK AIj!  AjA$ AjAI!  N   jAj6L Aj!  A!@ Aq A!@ A.G @  @ jAj-"APj" A I @ AjAK AIj!  AjA$ AjAI! N   jAj"6LB~!  ," F  Aj!@@ Aq"APj"A I @ AjAK AIj!  AjA$ AjAI! @@  H  G @ -"APj" A I @ AjAK AIj!  AjA$ AjAI! N   6L -! Aj!  Aj!A!  M @@ -"AF @ A G AF  A rAG  AK A tAq   A G  A! Aj!@@@ -AUj Aj!  Aj! -AFjAvI Aj!@  6L -"! @ AFjAvO A!  G  Aj-AFjAuM  Aj! @  G B~!  !@@@@@  k"Aj"AI ("Aj  ("E  @@ A!  A-:A! @ AH A! Aq! @ AsA kF A~q!A! @@ j"-"AF  j : Aj! @ Aj-"AF  j : Aj!  Aj" G E j-" AF  j : Aj!  jA:@@@ AqE @@@@ (L"-Aj  Aj6LA!   Aj6LA!   Aj6LA!  @ AqE B~!  A !  A G    @ AqE B~!  EAt!  A! A F  B~!   @@@@ Aw @@@ A G    -"A-Fj!@ -! Aj" ! A0F @@@@ A G B! E @@ Aq"APj" A I AjAI  AjAK  AK  Aj! B̙V  B ~ |! -! Aj!  A!A k ! B! !  !B! @@ Aq" APj"A I @ AjAK AIj!  AjA$ AjAI! @  N ~ | V"!  j! -! Aj!  ! E  󐀀 !   A-F!  A! @@ DfE DAe  !  ! @@ DAcE !  Ax! R  !  B~!  r    A (Aj(!  B~!      (Aj(!  B~! A G  A A (Aj(!  B! ("-  A: AĀAĆ A:  Ő B~ B| BBV! AI ("Aj  ( @ E  (L6 Aj$ A ("Av j AժzK! (!@@@@ (" G Aj  (" A! ("-  A: AĀAĆ A:A Aj   (!@ E  A! ("-  A: AĀAĆ A:A  A     6  6A!  #A0k"$  6,@@ (" ( "K (!   ! (6  (j"6 A(j 6 B7 B7  ("6@@@ ("AjA1 (" @ ("- A: AĀAĆ A: A6  B 7 A6 A6  6@ (L" M AG! @@ -"AK @ (P E  AΥŀAሀ  @ A G A ! Aj  -A F!  Avj  Aj"6,@@@@@@@@  F AF  A$G A$!  -AqAG   Aj6,A$! A6 Aj 6  Aj̇7  (,6A! A! @@@@@ -"(  O  Aj6,A!  AA -A F!   jAj"6, AF  6 A6 6 (Aj6  AF  @@@@ APjAqA K (P"E @ AF -nAqE  @ A0G -APjAqA I  Aj6,A! AF  A7K  E A۷ŀAሀ AJ A A j"AO   ( "6, A~qAF   A,jA"AG  E AϞŀAሀ AJ   (,Aj6,  AJ  A A j"AK   ( 6, @ AO !  Aj A vAjˇ  AqAr!  E  AʻŀAሀ   Aj6, @ (" (N @ ( E ( AtjAj ;  Aj6 (,!  AK ( jAj :  Aj6 (,!  Aj   (,!  (L" I E AŀAሀ (("Aj ( (A! A0j$  Z#Ak"$@@ ( F  6 Aŀ ሀA!  ! Aj$ ~#Ak"$ B070 B07( B07 ("(,!  Aj6@@@@ A/M (8(" (Aj6 AjAjB7 B7P  6H  B78 AjA (" @ ("- A: AĀAĆ A: A6\ A6T A6L  AŀAŀAA߫ŀҐ B7 A6 A6  6L ($" (Aj6  A"7 B!B0! @@ BpBQ @ BpT @@@ "/"A F @ A0F ((D Alj(  A0F  AF!  ( -E   7  "AH  E ($" (Aj6  A" 7(B! BpBQ B!@ A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ B!   )BS B! B!B! @   "7 Bp" BQ @@@@ BpT /AqAG   "7 BpBR B!  @@ B "E A jAI   "7 BpBR B!  BR  @ A Aj" BBR   ꇀ  B|!   B|" )S @ B "AuI " (Aj6 @ BpT @@@ "/A|j A!  A͇!@ AuI  ("Aj6 AJ ( ㆀ ! B! BpBQ  B ! @@@ E A jAI  @ Aj  A!@@ ("AH A ! A I  !  Aŀ "70  B!  @@ BpBR "A (Aq"A A H!  )8"B AuI " (Aj6  70 AuI " ("Aj6 AJ ( ㆀ B! BpBQ @@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B! B!   (Aj6 B! A" BpBQ @@ B AuI " (Aj6 A/ AAH   (Aj6  A/ AAH  B0! Aj  )8""Bp"B0Q B!@ BR !  Aj   (@̇!  (@"(("Aj ( ( A6 @ B AuI " ("Aj6 AJ ( ㆀ @ )8"B AuI " ("Aj6 AJ ( ㆀ @ )0"B AuI " ("Aj6 AJ ( ㆀ @ )("B AuI " ("Aj6 AJ ( ㆀ @ ) "B AuI " ("Aj6 AJ ( ㆀ Aj$  ~#A0k"$@@ BV  󇀀!   7 AjAAŀ B! Aj Aj"BpBQ ( Aӆ"E   A! AH ("(8 Atj(" ("Aj6 AJ  熀 A0j$  J~ A͇!@ B AuI " ("Aj6 AJ ( ㆀ  ~~#Ak"$@@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  B!@ )" BS B! B7@ AH @ )"B AuI " (Aj6   @@ )"BU   |"7B! BS  !  X   7 ! @ BpT "/AG -AqE  A(j5" Z ($!@@ )" B AuI " (Aj6 @  Atj)"B AuI " (Aj6 @ A݆E B!   )B|"7  S  )Y @  " BpBQ @ )"B AuI " (Aj6 @  A݆E B!   )B|"7  )S B AuI  " ("Aj6 AN   B! B AuI  " ("Aj6B! AJ  ( ㆀ Aj$  ~ )!@  Aq G  (Aj6 B  k!@@@ BP AH @  L Aq!@@ As jAO A! !  A|q! At jAj! A! !@ / A~j/ A|j/ Azj/ rrrr! Aj! Aj! A|j" @ E At jAj! @ / r! Aj! Aj" AqAI @ (" Aj At"Aj (" B! (" -  A: AĀAĆ A:B A6 A6 Axr7 Aj  AtjAj  B @ (" Aj Aj (" B! (" -  A: AĀAĆ A:B A! A6 A6 Aq7 Aq!@ As jAI A|q! At jAj! A!@ j"Aj -: Aj Aj-: Aj Aj-: Aj Aj-: Aj!  Aj"G @ E  jAj!  jAt jAj!@ -: Aj! Aj! Aj" jAjA: B (! @ AJ (,A/M  (8(" (Aj6 B @ Aj Aj (" B! (" -  A: AĀAĆ A:B A6 A6 7 Aj  jAj  jA: B!  AŀAŀAA߫ŀҐ ~#A k"$  7@@@@@@ BoV Bp"B~Q B~Q B~R  @ A A"BpBR !  @ BpT @ "/"A F @@ A0G ( -!  ((D Alj(AG! E   B0A AjA߆!  ("Aj6@ AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ BpBR   B AuI " ("Aj6 AJ ( ㆀ ! @@ )"BpB0R !   )7  7  B0A A߆!@ B AuI " ("Aj6 AJ ( ㆀ ! BpBQ  @A B " AyjAnIA j"AK @A tAqE !  A G @ BpZ !  "/"A F @@ A0G ( -!  ((D Alj(AG!  !  B0! AuI  " ("Aj6B0! AN   B! B AuI  " ("Aj6B! ! AJ  ( ㆀ A j$  ~~#Ak"$  7@@@@@ BpZ !  @@@@@@ "/A|j! A͇!  ("Aj6@ AJ ( ㆀ B0! !B0!B0! B0! B0! BpBR   @ ) "B AuI " (Aj6  ("Aj6 AJ  ( ㆀ  B0! )A Aj" BBQ @ ꇀE AŀA܆  @ B AuI " (Aj6 @ )" B AuI " (Aj6 @  ҈" BpBR B0!B0! B0!  @@@ )" BpBR (AqE  @ B AuI " (Aj6 @ Aŀ Aŀ̈" BpBR B0!B0!  AŀA"BpBR B0!  @ ) "B AuI " (Aj6 ! @ )A AjAE B0!  @ /"A0F AF!  "AN B0!  B0! A"!B0!B0! B0! B0! BpBR   @@@@ E @  E B0!  ((AʇA! )BS  A(j" ( B0!@ B" BpBR B0!  B" BpBQ    ! @ Bp" BR B0!  B0!@ B B0Q E B0!  @ )" BS B! @ (A,ʇ ( @  "BpBR B0! ! @ BT B~ " B| BBV! " BpBQ    ! @ Bp"BR B0! B0! @ B  B0Q  B|" )" Y   B0!  BS @ )" BpBQ B0!A!B0!  B0!A!B0! (Aq   @@ )"Bp" B0Q B AuI  " (Aj6  AA"Bp! B0! BQ     ((AʇA!@ )BY B0!  A(j! B! A!B0! @   " BpBQ @ B AuI " (Aj6  󇀀"BpBQ @    "Bp"B0Q BQ @ E (A,ʇ @ " BpBR  ((  ((  ((A:ʇ (( A!     B|" )S E A! )" BpBR A! (AqE  (A ʇ (   B0!B0! (( ʇA! )  A         B0!  @@@@@A B " AyjAnIA j !@ AuI " ("Aj6 AJ ( ㆀ B0! !B0!B0! B0! B0! BpBR   B|BDc B ! (( !  AĀA܆B0! !B0!  A! AuI  " ("Aj6 AJ  ( ㆀ  B0! B0! B0! @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ A! B AuI A! " ("Aj6 AJ ( ㆀ Aj$  ~@ A0 A"BpBR B7A @ B "AuI " (Aj6 @  " B!@ )"BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  ~~#Ak"$@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  @ )" " |" BS AŀA܆  @@@ AH" E  B A!B! E     ! @@ )" B AuI " (Aj6   AH  B|! Aj! B|" PE @@ B|" BV B!  B~ "B| BBV! A0  AAH @ B AuI " ("Aj6 AJ ( ㆀ @ BV B!  B~ "B| BBV!  B! B AuI " ("Aj6 AJ ( ㆀ Aj$  I@ B AuI " ("Aj6 AJ ( ㆀ BpBQ A!@ ( @ BpBQ @ ( A͇"BpBR (("Aj ( ( A6 B7 A6A "A (Aq! (   "A (Aq!  ~~#A0k"$B!@ "BpBQ @@@@@ A,j A(j " Aoq ($" (Aj6@ A"BpBQ (,! (("E  Aj! Aq! Aj! ! A!@ (!@@@ E @ Aj  " AN A!  @ A!  @ )" B AuI " (" Aj6 AJ ( ㆀ @ ) " B AuI " (" Aj6 AJ ( ㆀ @ )" B AuI " (" Aj6 AJ ( ㆀ A! (AqE  @@@@@  A" BpBR     A" BpBR   ($" (Aj6 A" BpBQ  A"BpBQ  B AAH    A"BpBQ  B AAH  @@ AL !  B~ "B| BBV!   AAH  Aj!    AF AF   Aj! Aj"  B AuI " ("Aj6 AJ ( ㆀ B! ((! (,"E  E  Aj!@@ (" AH (" (8 Atj(" ("Aj6 AJ 熀 Aj! Aj"  E  ("Aj  ( B AuI  ("Aj6 AJ ( ㆀ A0j$  H~ !@ B AuI " ("Aj6 AJ ( ㆀ  ~~#Ak"$@@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  @@@ )" BY B! B0!  B|! @@@@ BpT "/AG -AqE A(j(" R ($! E  )!  Aj AtAxj ((Aj!  @@ E B󇀀"BpBQ  BB )B|AE    "BpBQ   AAH    Aj"Atj)!  6( BT B~ " B| BBV! A0 AAH B AuI  " ("Aj6 AN   B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6B! AJ  ( ㆀ Aj$  ~ #Ak"$@@ B`B R A˙ŀA܆B!  A͇"BpBQ B78  "(Aq"Aj"64  6(@@ ("Aj Aj (" @ ("- A: AĀAĆ A: A6,  A6 A6 A":  7 A60  6,@ )"Aq"E Aj! A!@ Aj!@@@ BP Atj/"AqAG   N  Atj/"AqAG  Aj! A t jAȀej!  j-! ! @@@@@@@@@@@@@ Axj AF  @ A I ApqAG   6 AjAAĀ  (0 Aj" j" (4L  A(j AE  A!  A!  A!  A!  A! @ (0" (4H A(j AjA  (0!  Aj"60 (," Aj! @@ (8" E AtjA;  jA: @  (4H A(j Aj   (0! (,! (8!  Aj60 Aj!@ E  Atj ;   j :  (8E @ AJ (0!  Aq! A! (0! (,!@ AI A|q!  AtjAj!A!@  Aj j"-; Aj Aj-; Aj Aj-; Aj Aj-; Aj! Aj"G E    jAtjAj! Aj j!@  -; Aj! Aj! Aj"  A(j    (, (0" jAj Aj   j60  )"Aq"H A(jA"ʇ  A(j̇!  @ B AuI  ("Aj6 AJ ( ㆀ ((("Aj (, (B! Aj$  @@ (E A! B AuI  (!A! " ("Aj6 AJ  ( ㆀA @ BpBQ ( "BpBR (("Aj ( ( A6 B7 A6A "A (Aq! B AuI (!  ("Aj6 AJ ( ㆀ  ~ ($" (Aj6@ A"BpBQ @ AN  !B!@@@ )"B AuI " (Aj6   AAL  Aj!  B|"R  B AuI " ("Aj6 AJ ( ㆀ B 6A!@ BpT "/A1G ( "E (!  U~B0!@ BpT "/A1G ( "E )"B AuI " (Aj6  ~@ 5B B0R @ )"B AuI " (Aj6  7 A j5B B0R @ )"B AuI " (Aj6  7B0 AĀA܆B ~~~@ BpT "/A1G ( "E ( @ B "AuI " (Aj6 )!  7@ B AuI " ("Aj6 AJ ( ㆀ  Aj"6@ AG ( ("("E  A (  @  Atj"Aj(" Aj" F AGB! ! @ "Aj)! )! )! (! @@ ("AjA (" ("-  A: AĀAĆ A:  A6 A񂀀6  6@ B AuI " (Aj6  7@ B AuI " (Aj6 A j 7@ B AuI " (Aj6 A0j 7 A(j 7@ AuI (Aj6  ("6  6 A8j 7  6  Aj6 (" ("6  6 A6 A6 (!@ )"B AuI " ("Aj6 AJ  ㆀ @ )"B AuI " ("Aj6 AJ  ㆀ @ )"B AuI " ("Aj6 AJ  ㆀ Aj  ( G A kAtj"Aj(" Aj" F @ "(" ("6  6 A6 A6 (!@ )"B AuI " ("Aj6 AJ  ㆀ @ Aj)"B AuI " ("Aj6 AJ  ㆀ @ )"B AuI " ("Aj6 AJ  ㆀ Aj  (  G ~#A k"$@ AG )! )!@@ Aj )AN B!  @  B0A AjA߆"BpBR (")! B 7  7 )B0B0A AjA߆! )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ )"B AuI " ("Aj6 AJ ( ㆀ A j$  AŀAŀAAŀҐ ~~#Ak"$@@@@@@ ( (!@@  )B0 ( Aj(A߆"Bp"BQ B0R  Aj(Axj")! B07 A6  A8jᆀ  ↀ  78@ ( E BpBQ  )(B0B0A A8jA߆!@ )8"B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AJ  ( ㆀ   Aj(Axj")7( B07@ )8"B AuI " ("Aj6 AJ ( ㆀ )P  A(jA⊀!@ )("B AuI " ("Aj6 AJ ( ㆀ BpBQ @ ("Aj( )0"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E   AŀAŀAAŀҐ  (Aj6  A5"7 BpBQ  (Aj6 " 6 @@@@ ("Aj( )0" A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"    (Aj6  A6" 7 BpBQ  (Aj6 " 6 B07 B07  Aj !@ B AtM " ("Aj6 AJ ( ㆀ @ B AuI  ("Aj6 AJ ( ㆀ @ B AuI  ("Aj6 AJ ( ㆀ    B AuI  ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ (")! B 7  70 A0j)B0B0A A0jA߆!@ )0"B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ Aj$ ~@ Aj(" A j"F Aj!@ "(!@ )"B AuI " ("Aj6 AJ ㆀ @ )"B AuI " ("Aj6 AJ ㆀ @ ) "B AuI " ("Aj6 AJ ㆀ @ A(j)"B AuI " ("Aj6 AJ ㆀ   (  G @@ ("E  (Aj"6  -hAF (" A j"("6  6 A6  Aj"6 Aj"(!  Aj"6  6  6 -h A:h@ (\" F @ Axj"(  򆀀 (\" G A:h Aj  ( AŀAŀA+AĀҐ ~~@@ ("AjA (" A! ("-  A: AĀAĆ A:A B7@@@@ ("Aj( )0"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" A!   (Aj6 A! A2"BpBQ @@ ("AjA (" E ! 6  (Aj6@ B " AuI (Aj6 7@ BpT  6 A0BB0B0A@ ("(,A/M (8(" (Aj6 A8 B" B0B0A  ("Aj6@ AJ ( ㆀ  7@@@ ("Aj( )0"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E    (Aj6 A3"BpBQ  ("AjA ("E   6  (Aj6@ AuI (Aj6  7@ BpT  6 A0BB0B0A ("(,A0I (8(" (Aj6 A8 B"B0B0A  ("Aj6@ AJ ( ㆀ  7A!  AŀAŀAA߫ŀҐ @ ("- A: AĀAĆ A: @ B AuI " ("Aj6 AJ ( ㆀ E  )"B AuI A! " ("Aj6 AJ ( ㆀ  (Aj"6  ("Aj  (  @ BpT @@@@@@ "/Atj- ( (0 ( "E  -E  AĀA܆A ( ! )"BoV  ( ! (~~|#Ak"$A!B!@ )A͇"BpBQ @ ")"BP A! Aj" ! @@@ BP /!  j-!  jA-A AF  AK: Aj! AK  Aj! !  )"AqI  jA: AjB7 AjB7 B7 B7 Aj! Aj! @@@@@@ -"AUj -"APjAqA K  -" APjAqA K  -" APjAqA K  -" APjAqA K  -"APjAqA K  -"APjAqA K A! A6  A l jA l jA l jA l jA l jA}j"6 A-G  E  A k6  APjAqA O  -"APjAqA K  -" APjAqA K  -" APjAqA K A! A6  A l jA l jA l jA|j6 @  r-"A-G  Aj"r-APj"AqA K  Aj Aj"  r-APj" AqA I" " kAH   6 A lj  "E   Aj6  r-"A-G  Aj"j-"APjAqA K  Aj Aj"  j-" APj" AqA I" kAH   6  APj"A l jAPj  AqA I"6 E   j-! A!@ AqAG A! Aj"!@  j-APj" AqA K @  Aj"j-" APjAqA M !  Aj! A l jAPj! @@  kAH  6  j-A:G A! Aj" !@  j-APj" AqA K @  Aj"j-" APjAqA M !  Aj! A l jAPj!  kAJ  A6A!   6  6A!  j-"A:G A! Aj" !@  j-APj" AqA K @  Aj"j-" APjAqA M !  Aj! A l jAPj!  kAH   6  6  Aj   (j-!A! AqE   Aj AE  (j- A!  AjA r"B7 AjB7 AjB7 A6 Bя7 Ar!A!A!A!A! A!A!A!A!@ !@@  j-"A F !  @  j! Aj" ! -"A F @@@@@@@ AUj  6  6  6@ E @  Aj AE A!A!  (!  Aj"6  j-APj"AqA K @  Aj" j-" APjAqA K A l jAPj!  Aj" j-" APjAqA K A l jAPj!  Aj" j-" APjAqA K A l jAPj!  Aj" j-" APjAqA K A l jAPj!  Aj" j-" APjAqA K A l jAPj!  Aj" j-" APjAqA K A l jAPj!  Aj" j-" APjAqA K A l jAPj!  A j" j-" APjAqA K A j" L  A l jAPj!  6@ A-G E A k!  6A!  E  @ APj" AqA I Aj! Aj!  @@  Aj"j-"APjAqA K @  Aj" j-"APjAqA K @  Aj"j-"APjAqA K @  Aj"j-"APjAqA K @  Aj"j-"APjAqA K @  Aj"j-"APjAqA K @  Aj"j-"APjAqA K @  Aj"j-"APjAqA K AN  6  6 A l jA l jA l jA l jA l jA l jA l jA l jA|j!  A j"j-!   6  6 A l jA l jA l jA l jA l jA l jA l jAׁ~j!   6  6 A l jA l jA l jA l jA l jA l jAfj! !   6  6 A l jA l jA l jA l jA l jA}j! !   6  6 A l jA l jA l jA l jA_j! !   6  6 A l jA l jA l jA|j! !   6  6 A l jA l jAVj! !   6  6 A l jA{j! ! !   6  6 ! !  6@ AqA:G  6  Aj" j-APj" AqA K @  Aj"j-" APjAqA K Aj" L  A l jAPj!  j-!  6  6A! AqA:G   Aj" j-APj"AqA K @  Aj" j-" APjAqA K Aj" L  A l jAPj!  6  6  Aj   @  kAH  6A!  @ A`jA`K AA AI jAA A2Ij6A!  AF  Aj Atj 6 Aj!   6  6  j jAJ @@@@@     (!@ E  6   6  @ E  )7  @ E  (6 AA ("AH jAA A2Hj6   )7   )7 AA ("AH jAA A2Hj6 ("AH  (AL   Aj6  A`j  AjAqAI!  j!  j!A! Aǀ!@@@@@ Aq" -"A`j  AjAqAIAqG -"A`j  AjAqAIAq Aj-"A`j  AjAqAIAqG -"A`j  AjAqAIAq Aj-"A`j  AjAqAIAqF  Aj! Aj" A G     6  6  6  Aj"6A!@  j1"B?V B BBR  @B  jAj1"B! Aj"! B?V ! P  6  @@ Aj -"A`j  AjAqAIAqAG A! ! A J  A j!A! !  -"A`j  AjAqAIAqAG A! ! A G A! !   j!A!A!AȀ! @@@@@ At"AȀj-" !  A!@  j-" A`j AjAqAIAq A`j  AjAqAIAqG  j! Aj" ! -" j! AȀj.!A! Aq   Aj! AI! Aj"AG !  6  6  6@@ AXj A!@@  j-"E  Aj!  A(Fj A)Fk"  6   6 AH    j jA kG @  j1"B?V B B(BR  @B  j1"B(! Aj"! B?V ! P  6 @@  ("j-AqA,F !  @  j! Aj" ! -AqA,F  6 (! (! !  B~!  ("ACeD D>f! Aj$  ~| #Ak"$B!@  Aj Av"AqA"AH Aq! @  @ AG AŀAᇀ  AҬŀA !  @@ +" DAcE !  Ax! @@ +" DAcE !  Ax! @@ +" DAcE !  Ax! @@ +" DAcE !  Ax! @@ +" DAcE !  Ax! @@ +" DAcE !  Ax! @@ +" DAcE !  Ax! @@ +" DAcE !  Ax! Aq!@@ +" DAcE !  Ax! A!@ E Aq!@@@@  Aj 6  6T  AvAr6\  AlAǀj6X  AlAǀj6P AjAAŀ Aj!  Aj 6  6x  AvAr6|  AlAǀj6t  AlAǀj6p AjAAŀ Aj! AG  Aj jA : Aj!   6 AjAAŀAŀ AI Aj!  6  Aj6   AjjA kAŀ Ajj!   6  Aj6  6  AvAr6 AjAAŀ Aj! AG Aj jA; Aj! @ AqE @@@@   6  6  6 Aj jA kAŀ  j!   6(  6$  6 Aj Aj jA kAŀ A j j"jA-A+ AH:  Au"s k"AG ( G  A6  Aj6  A!  @@ -AUj A6  Aj6  A6  Aj6 -A=G  A6  Aj6 @@ -AVj A6  Aj6 @ -A=G A6  Aj6 A6  Aj6 -AFjAvI  (P-nAqE  AŀAሀ  @ -"A.G -A.G  A6  Aj6 APjAqA O  (P-n! A8j"A6@@ (  A jAAA Aq "Bp"B~Q BQ  ( A Aj㈀E  @ B AuI (! " ("Aj6 AJ ( ㆀ AŀAሀ  70 A6   Aj"6  Aj"6A!@@@@@ -"AG -AG  AjA!  AJ A Aj! AK  ! Aǀ AvAqj( vAq!  ! ! @  AŀAሀ   (6 A j Aj A"E  A6 A0j 6  A6  Aj6 !  -AG   Aj6@@ AjA"AH @@ AK Aǀ AvAqj( vAq!  !   ( !   (6 A6 A j Aj A"E  (64 A6 A0j 6 A8jA6    6  Aj6  A6A!  A/6  Aj6  A6  Aj6 ( 6HA! (( @ (" ( "K (6(   ! (6  (j"6 6( Aj$  Aj!A! @@@@@@@@   6  @ -" AJ  A A j"A~qAF  ( ! AF  A!  Aj!   (LO  Aj! A! A6 6 A6@ Aj6 ( !  #A0k"$A!@ ( AG A,j(! A$j(! (@! (! (! ( ! (! @ (H!  (," Aj6   kA~j6 AjAAŀ A!  @@@@ ( Aj E   (@E  @@@ AjAĀA  A! (P"A6@  @ AjAŀA  (P!A!  (-E  AjAϣŀA   (P!A!  -n r:n ( AF  6H 6 6 6 6 6$ 6@ ! A0j$   #Ak"$@@@@@@@@@ ( "AGF A j! Aj(!@@ AG A0j(AG  (4   Aj(6 A jA∀AGF  (! @@ A3j (E  Aj((! (!A!  @@ ("A9j  AAE AF   (E  Aj(6 @ A jA∀AXj Aj((! (!@ E A! (8!@@@@@ ("Aj @  A0j)" A!  E A! AH A! ("(8 Atj(" ("Aj6 AJ  熀 @ A8j(E  (Aj( A j A0j(6 Aŀ AjሀA! @ A0j("AH ((8 Atj(" (Aj6 A!  A!  A   Ç (A,G @ E A! (! @ AF A*G @ E A! @@ (AG A0j(AG (4E  AŀAሀA! @ E A! @ ("AF A%jAQK AŀAሀA! @ (0"AH ((8 Atj(" (Aj6 A!  A!  A   Ç  @ E A! @@ ("AF @ AF A%jAQK AŀAሀA!  @ (0"AH" ((8 Atj(" (Aj6  @@ (AG (0AG (4  @ ("AF A%jAQK AŀAሀ @ (0"AH ((8 Atj(" (Aj6 E   !  ((8 Atj(" (Aj6 !    @ AH (" (8 Atj(" (" Aj6 AJ 熀 @  ("(8 Atj(" ("Aj6 AJ  熀 (A,G A! E A! A " A! @@@ (" AN A!  (!A!@ ( F  Aj! Aj"G ! @ ( J A!  AjA Aj Aj刀  (!  Aj6 ( Atj!@ AH ((8 Atj(" (Aj6  6 A6 ! @ AH (" (8 Atj(" ("Aj6 AJ 熀 @ AN A! @ (8" L  Asj! (4!@  kAq"E A l jAj!@  6 A j! Aj! Aj" AI  k! A l jAj!@  6 Atj 6 Ahj 6 A\j 6 APj 6 ADj 6 Aj 6 Aj 6 Aj! Axj" ("AF @ A;F AF  (@  A;6 Aŀ ሀA! A! E  A! A   A! AA A,j( A$j( A(j(AAE   AH ("(8 Atj(" ("Aj6 AJ  熀 A! AH A! ("(8 Atj(" ("Aj6 AJ   熀  A0j(AG  (4   Aj(6 A jA∀AGG  AA A,j( A$j( A(j(AAE    @@@@@@@@ Aj! @ A*F AG  ( ! @@ ("AF @ AF A%jAQK AŀAሀ @ (0"AH" ((8 Atj(" (Aj6 A!@@@  (AG  (0AG  (4   @ ("AF A%jAQK A! AŀAሀ  @ (0"AH ((8 Atj(" (Aj6 E   Ç !  ((8 Atj(" (Aj6 ! (   A䈀!  Ç  Ç E (A,G  E A (AG  (0AG  (4  "E   !  Ç AH ( N  Al!@ ( j" 6 AjA6 Aj! Aj" ( H  @ (AG A0j(AG (4  @ ("AF A%jAQK AŀAሀ @ (0"AH ((8 Atj(" (Aj6  "E   !  Ç AH ( A A䈀!  Ç E  6  "E   !  Ç AH   AN  @@ ("A9j AAE  AF   A AE   AĀAሀ  A0j(AG  (4   Aj(6 A jA∀AGG  AA A,j( A$j( A(j(AAE   A  A Aj"(AAAH  A (! A6 Aj A jA (! A; Aj A jA ( AAA䈀E    A!   Ç Aj$  #Ak"$ (P"Aj!@ ( (F A  (6  A jA  (6  Aj(6   Aj$ #Ak"$@ Aj"("-l"E @  Aj!@ ( (F A  (6  A jA  (6  Aj(6 AA!  A! AG Aj!@ ( (F A  (6  A jA  (6  Aj(6 A @ ("("E Aj! Aj!@@@ ( (AF  @  ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A@@ (E ("Aj! (! (! @ -lAG @ F A  (6  A jA  (6  Aj(6 A ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A (! A6 Aj A jA ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A AA! ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A$ (! A; Aj A jA ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A AA! (!@ AH Aj! @ ( (F A  (6 A jA  (6  Aj(6 A (!  6 Aj A jA ("( Alj Aj(6 Aj!@ ( (F A  (6  A jA  (6  Aj(6 A (!@ AH Aj!@ ( (F A  (6  A jA  (6  Aj(6 A (!  6 Aj A jA ("( Alj Aj(6 Aj!@ ( (F A  (6  A jA  (6  Aj(6 A  @ F A  (6  A jA  (6  Aj(6 A ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A ("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A  A ( A! (" (! @@ (`E @@  A!  Aj!@ ( (F A  (6  A jA  (6  Aj(6 A* AA! Aj("Aj!@ ( (F A  (6  A jA  (6  Aj(6 A (! Aj!@ ( (F A  (6  A jA  (6  Aj(6 A (! A6 Aj A jA (! A; Aj A jA (!@ AH Aj!@ ( (F A  (6  A jA  (6  Aj(6 A (!  6 Aj A jA ("( Alj Aj(6 Aj!@ ( (F A  (6  A jA  (6  Aj(6 A(  @ -lE Aj!@ ( (F A  (6  A jA  (6  Aj(6 A.  A(A) ! Aj!@ ( (F A  (6  A jA  (6  Aj(6   Aj$  ~ #Ak"$@ ("AH Aq! (!A!@ AI A$j! Axq!A!@ A6 AjA6 AjA6 AjA6 AxjA6 ApjA6 AhjA6 A`jA6 Aj!  Aj"G E At jAj!@ A6 Aj! Aj" @ (AA AqA  r!@ ("AH ((8 Atj(" (Aj6 Aq!  6 Aj AjA Aj AqA! @ ("AJ E  AH  AjA  (6 Aj AjA ( AG  AjA A6 Aj AjA  AjA @@@ Aj AjA  ; Aj AjA  AjA@ ( "AH ((8 Atj(" (Aj6  6 Aj AjA AjA  AjA9@ ( "AH ((8 Atj(" (Aj6  6 Aj AjA @ ( "AH ("(8 Atj(" ("Aj6 AJ  熀 Aj" (H @ (E AjA) AjA  6 Aj AjA ( Alj (6 ("Aj ( ( B7 A6 ( Atj("AH @ (t Atj"( G @  (F @ ( AvAqAjAK AjA  A j(Au6 Aj AjA AjA  ; Aj AjA  AjA  ; Aj AjA ("AJ  AŀAŀAAÝŀҐ AĀAŀAAÝŀҐ AĀAŀAAĀҐ AĀAŀAAĀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ  (Aj6 (!  AjA  (! AjA  6 Aj AjA  A6 Bց7 Aj  AjE @ ("AH  (N (! (! (! !@ (" Alj(! (!@@@@  j"-"A~j Aj! AG  Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j  AG   Aj(Alj(!@@@  j"-"A~j  AG  Aj(Alj(!@@@  j"-"A~j  AG  Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j AG   Aj(Alj(!@@@  j"-"A~j!!!!!!!!!!!!!!! AG  Aj(Alj(!@@@  j"-"A~j############### AG "  Aj(Alj(!@@@  j"-"A~j%%%%%%%%%%%%%%% AG $  Aj(Alj(!@@  j-A~j&&&&&&&&&&&&&&&& Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Aj! Bp7  6 A6@ Aj  AjE (!  A6t  6p Aj  AjE   (Aj6@@@@ (" L (" Alj" ("Aj6 AL  ("AH   L   Alj" ("Aj6 A~L  Aj Aq  6 Aj AjA@ AG ! @  G !  (Aj6 AjA  6 Aj AjA ! ! AĀAŀAAÝŀҐ AŀAŀAAÝŀҐ AĀAŀAAÝŀҐ AŀAŀAAÝŀҐ AĀAŀAAĀҐ  (Aj6  (E  Aj   ( /"Atj("AH @ (t Atj"( G @ - AqE AjA  ; Aj AjA ("AJ  H  Aj AjAj)7 Aj AjAj)7  )7@ Aj(E ("-  A: AĀAĆ A:   Aj(!  Aj("6@ ("Aj At" (" ("-  A: AĀAĆ A:   6@ AH A  A6@@@@@ ("Aj At (" @ ("- A: AĀAĆ A: A6  B7 A6  6 AjAAAA @ ("AH @  Aj"6@ ( Atj("j" -"AjAqAK  6  6 Aŀ Ć  @  Aj  AK"At"Aǀj-j" (L  6  6 Aŀ AjĆ  (" Atj/! Aǀj-!@@@ A_jAI A1G  / j!  AqAG  jA~j! @  L  6$  6 Aŀ A jĆ  (" Atj(!@ Aǀj- k j" (L  6 AH  64  60 Aŀ A0jĆ  !@@@@@@@@@@@@@@@@@ Arj      (jAj!   .jAj! Aj" j,j! Aj  (jAj   E  Aj  (jAj  Aj E  Aj  (jAj  Aj E Aj  (jAj  Aj E  Aj  (jAj  Aj E  Aj  (jAj   ! ! E  !  Aj!  Aj! AH   j-AG  Atj/jG   Atj(!  @ AJ  6@ Aŀ AjĆ   Atj/ j-AGjAj!  Atj(!  Aj Aj" j,j     Aj      (! AJ ("Aj ( ( ("Aj ( ( ("Aj ( (AA -nAq"" (Atj!@@ E ! (DE  (| (jAt j! (! (At j" Aj"(jƆ"E  A6   j" 6  ("6 Aj"(  ("Aj ( ( A6  (p6 (|" ("jAH  -nAqE  (D @ AH A!A!@@ (t j(" AH (" (8 Atj(" ("Aj6 AJ 熀 (! Aj! Aj" H (! @ AH A!A!@@ ( j(" AH (" (8 Atj(" ("Aj6 AJ 熀 (! Aj! Aj" H ("AH  (!A!A!@@  j(" AH ("(8 Atj(" (" Aj6 AJ  熀 (! (!  jA6 Aj! Aj" H  ("Aj ( ( ("Aj ( ( ("Aj ( (    j"6 @ At"E  (  (|! At"E ( (Atj (t   (|;*  (;(  (;, ("Aj ( ( ("Aj (t (  ("68@ E   j"64  ( At ("Aj ( (  ;. A6@@ -nAqE (Ç Aj Aj   /Ar;  (6@ Aj )7 Aj" ( Aj(Ȇ6 Aj ( Aj(Ȇ"6@ (  (6X @   (6\ Aj (6 Aj (6 Aj (6 Aj (6 @ (" AjF ("Aj  (  ("6<@ E   j"6$  ( At ("Aj ( ( A6  /A~q /4Aqr";  /8AtAq A}qr";  -n:  /`AtAq A{qr";  AOq /lAtA0qr";A!@ (AJ (AGAt!   Awqr";  /PAtAq Aqr";  A~q /TAtAqr";  A}q /XAtAqr";  A{q /\A tAqr";  Aoq /hA tAqr";  Aq ($A~qAFA tr; (Aj6 Aj(! A:  (P"6  60  Aj"6  6P A j Aj6@ (E Aj"(" ("6  6 A6 A6 ("Aj  ( B`!  ÉB! Aj$   ~@ Aj(" Aj"F @ Ahj! (! É  G Aj!@ Aj("AH (! (! (! A!@  j" -"Aj  AK  At"Aǀj-!@ Aǀj-AijAqAK ("AH (8 Atj(" (" Aj6 AJ  熀  j" H  ("Aj ( ( ("Aj ( ( ("Aj ( ( ("Aj ( (@ ("AH A!A!@@ ( j)" B AuI " (" Aj6 AJ ( ㆀ (! Aj! Aj" H ("Aj ( (@ (p"AH ("(8 Atj(" ("Aj6 AJ  熀 @ (|" AH A!A!@@ (t j("AH ("(8 Atj(" ("Aj6 AJ  熀 (|! Aj! Aj" H ("Aj (t (@ (" AH A!A!@@ ( j("AH ("(8 Atj(" ("Aj6 AJ  熀 (! Aj! Aj" H ("Aj ( (@ (" AH A!A !@@ ( j("AH ("(8 Atj(" ("Aj6 AJ  熀 (! Aj! Aj" H ("Aj ( (@ (" AH A!A!@@ ( j("AH ("(8 Atj(" ("Aj6 AJ  熀 (! Aj! Aj" H ("Aj ( (@ (" AjF ("Aj  ( @ ("AH ("(8 Atj(" ("Aj6 AJ  熀 Aj Aj ("Aj ( (@ (E Aj"(" ("6  6 A6 A6 ("Aj  ( ~#A k"$@ B AuI " (Aj6 B!@ Aj "E (!@ (AxG A6 A  AA󍀀!  6@@  AjG ("E  ("E  ( A Aj(  A|j" ("Aj6 AJ ( B~ㆀ @  ("-  A: AĀAĆ A:   ! ("( A Aj( A j$  ~#Ak"$@@ BpB~R !@ E Aj AjA荀 )"BpS BU  ("Aj6@ AJ ( ㆀ )! @ B|BV B!  B~ "B| BBV!  A j(AxG Aj(E (AG  A6 Aj$  AŀAŀAAŀҐ #Ak"$@@ A qE ("-  A: AĀAĆ A:  AŀAŀAĀ Aq Aq6 Aŀ ᇀ Aj$ ~#Ak"$A!@ A A"Bp"B0Q @ BQ @@ BpT " /A%G ( "   Aj(" Aj (DAj(6 Aŀ ܆  @ A~j"A(O B BP @ AtAȀj(AtjAj(" ("Aj6 AJ  ( ㆀ  @ B AuI " (Aj6 A"BpBQ @ B AuI " (Aj6 @ A"BpBR    (Aj6  7  7 BpB0A Aj쇀!   BpBQ    7A!  Ő @ B AuI " ("Aj6 AJ ( ㆀ B07A! Aj$  n@@  G ("E  ("E  ( A Aj( A|j" ("Aj6 AJ ( B~ㆀ ~@@ ("AjA (" B! ("-  A: AĀAĆ A:B A6 ( Aj B~!  @@@@@@@A B " AyjAnIA j (      (   B|捀E  A! ("E  ("E  ( A Aj(A Aj (   !  ~#Ak"$ Aj Ać!@ B AuI " ("Aj6 AJ ( ㆀ @@  B!   6 !@@@ ,"AH @ Aq"AwjAI A G  Aj!  A A jE  ( !  6 Aj(Aj(!@@  k (G @ E B! -(Aq  B!  @@ E A! ((Aq  A!  AjA A! ("!@@@ ,"AH @ Aq"AwjAI A G  Aj!  A A jE  ( !  (  kj"6@ BpBR !  @  k (G !  B~! B AuI " ("Aj6 AJ Aj( ㆀ Apj" ("Aj6 AJ ( Bㆀ Aj$  ~~ ("A򂀀6 AjA󂀀6 AjA􂀀6 AjAむ6 AjA6 AjA6 AjA6@@@@ Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 A! (( 7 AȀA (()! AAĀAAA )0"AĀ  AȀA @@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 A! (( 7 AȀA  (()! AAĀAAA )0"AĀ  AȀA  A AA Չ ~~#Ak"$@@ ("AjA (" A! ("-  A: AĀAĆ A:  A6 ( Aj" B~! Axj)!@ Aj Apj")"ʉ" A!  (" Aj6 AJ  ( ㆀ  @@ BpB~R " (Aj6@ A(j " B7A!  Aj A荀@ A(jG A! ((" E  (8" E A! ( A Aj(  A|j" (" Aj6A! AJ  ( B~ㆀ  Aj ! @ E @  AjG ("E ( " E ( A Aj( A!  (" Aj6 AJ  ( ㆀ   A ( ( Aj(ꍀ@  AjG ("E ( "E ( A Aj( @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ  7A! Aj$  #A k"$ ( Aj Aj A A5Aꍀ! Aj A區@ ("E ("E ( A Aj( @@ A qE B! ("-  A: AĀAĆ A:  B~ )"B| BBV! A j$  ~#A0k"$@@@@ ("AjA (" ("-  A: AĀAĆ A:  A6 ( Aj" B~!@ Aj ʉ"  (" Aj6 AJ  ( ㆀ   ʉ" @ AjG (" E (("E ( A Aj(  (" Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ A! B AuI A! " (" Aj6 AJ  ( ㆀ  ( @@@@@@@@@ A~j  ( Aj(Ս!   ( Aj(̍!   ( Aj(ލ!   ( Aj(A֍!   ( Aj(A֍!   ( Aj(Ar!  Ő  ( Aj(ݍ! @ AjG (" E (("E ( A Aj( @ G (" E ("E ( A Aj( @ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ @ A qE  ƉA!   7A! A0j$  ~#A k"$@@@ AF (!  @ Aj("Aj("E -(Aq  AŀA܆A! B AuI A! " ("Aj6 AJ  Aj( ㆀ  @ AjA (" @ ("- A: AĀAĆ A: A! B AuI A! " ("Aj6 AJ  ( ㆀ  A6 ( Aj" B~!@ Aj ʉ"E @@@@@ A~j  !   ! Aj" (As6  Ő   AtA}j ( Aj(Ӎ! @  AjG ("E ("E ( A Aj( @ B AuI " ("Aj6 AJ ( ㆀ @ A qE  ƉA!   7A!  A!  ("Aj6@ AJ ( ㆀ B AuI A! " ("Aj6 AJ ( ㆀ A j$  ~@@@ ("AjA (" B! ("-  Aj!  A6 ( Aj" !@@ AqE   A AA 퍀!   A  ( Aj(񍀀! B~! A qE   ("Aj6@ AJ ( ㆀ B! ("-  Aj! A: AĀAĆ A:B!  ~#Ak"$@@ BpB0Q AŀA܆B!  @  @ ("AjA (" B! ("-  A: AĀAĆ A:  A6 ( Aj" A B~!  @ )"B AuI " (Aj6 @@@@@@@@@@A B " AyjAnIA j  ("AjA (" B! ("- A: AĀAĆ A: @ ("AjA (" B! ("- A: AĀAĆ A: A6 ( Aj" ! B~"!     BB~!  A͇!@ AuI " ("Aj6 AJ ( ㆀ ! BpBR   Aj Ać!@ AuI " ("Aj6 AJ ( ㆀ @ E  6 !@@@ ,"AH @ Aq"AwjAI A G  Aj!  A A jE  ( !  6@@  k (G B! ɉ"BpBQ  AjAA!  @  AjAA A"BpBR Apj" ("Aj6 AJ  ( BㆀB!   (։ (j"6  k (F! Apj" ("Aj6@ AJ ( Bㆀ @ E !   AŀA߇ B!  A"BpBR  @ AuI " ("Aj6 AJ ( ㆀ AĀA܆B!  A6 ( Aj" B|! B~"!  捀E  " ("Aj6B! AJ ( ㆀ Aj$  ~~#Ak"$  57@@@ )"BpB0R Aj(!  @ B AuI " (Aj6 B! Aj  @ )B||B|V AŀAᇀ  A! AH )"BpB0Q @ B AuI " (Aj6 Aj   ("AI AŀAᇀ  @@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 B! A#"BpBQ @ ("AjA (" ("-  A: AĀAĆ A:  A6  6  )>@ BpT  6 ! Aj$  ~#A0k"$@ B AuI " (Aj6 @@ A"Bp"BR !  @ Aj ʉ" B! B AuI  " ("Aj6 AJ  ( ㆀ  (!@ (AxG A6 Ar! @@ A qA G @  AjqE @@ B~Q A!A5!  Aj(Aq! (! (      A     r󍀀! ("E  ("E  ( A Aj(  A  A 󍀀!  A    󍀀!  6@  AjG ("E (("E ( A Aj( @ B AuI " ("Aj6 AJ ( ㆀ @  B! ("-  A: AĀAĆ A:   ! ("( A Aj( A0j$  #Ak"$ !@@@ ,"AH @ Aq"AwjAI A G  Aj!  A A jE  ( ! Aj$  k ~~ ("A6 AjA6 AjA6 AjA6 AjA6@@@@ Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 A! (( 7 AȀA (()! AAРŀAAA )0"AРŀ  AȀA  AAމ ~~@@@ A߉"Bp"BR A! B AuI A! " ("Aj6 AH   @ A߉"Bp"BR A! B AuI A! " ("Aj6 ! AH   @@ B~R Aj!  A! AŀA܆ @@ B~R Aj!  A! AŀA܆ @@@@@@@ A~j  ÍAH!   ÍAv!   ÍAH!   ÍE!  Ő  ÍAv! @ B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AJ  ( ㆀ  ~#A k"$@@@ ("AjA (" ("-  A: AĀAĆ A:  A6 ( Aj" B~!@ BpB~R BpB~R "Aj! " Aj! @@@@@@@@@ A~j  AA!   AA!   AA!   AAA!   AAA!  ( Aj@ Aj "E ("E  (" E  ( A Aj(  A!@ AjAE ("E  (" E  ( A Aj(  Aj Aj!@ (" E (" E ( A Aj(  A! (" AH   !  Ő  AA!  ("Aj6@ AJ ( ㆀ ("Aj6@ AJ ( ㆀ @ E  ƉA!   7A!  AŀA܆  ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ A! B AuI A! " ("Aj6 AJ ( ㆀ A j$  ~@@@ AF (!  @ Aj("Aj("E -(Aq  AŀA܆A! B AuI A! " ("Aj6 AJ  Aj( ㆀA @ AjA (" @ ("- A: AĀAĆ A: A! B AuI A! " ("Aj6 AJ  ( ㆀA A6 ( Aj" B~!@ BpB~Q AŀA܆A!  ("Aj6@ AJ ( ㆀ B AuI A! " ("Aj6 AJ  ( ㆀA "Aj!@@@@@ A~j  !   ! Aj" (As6  Ő   AtA}jAA!  ("Aj6@ AJ ( ㆀ @ E  ƉA  7A!  ~@@@ ("AjA (" B! ("-  Aj!  A6 ( Aj" B~!  AAAA qE   ("Aj6@ AJ ( ㆀ B! ("-  Aj! A: AĀAĆ A:B!  @ BpB0Q AŀA܆B @@  @ ("AjA (" B! ("-  A: AĀAĆ A:B A6 ( Aj" A B~ @ )"B AuI " (Aj6 A߉!  @ BpB~Q AŀA܆B "Aj! Aj(!@ A j(AxG A6 A   Ar!  6@@  B! ("-  A: AĀAĆ A:B  ! ("( A Aj(  ~#Ak"$@@@@@@@@@@A B " AyjAnIA j  E  @ ("AjA (" B! ("-  A: AĀAĆ A:  A6 ( Aj" B~!@   !   ("Aj6B! AJ  ( ㆀ  A͇!@ AuI " ("Aj6 AJ ( ㆀ ! BpBR   Aj Ać!@ AuI " ("Aj6 AJ ( ㆀ E   6 !@@@ ,"AH @ Aq"AwjAI A G  Aj!  A A jE  ( !  6@@  k (G @ ("AjA (" B! ("-  A: AĀAĆ A:  A! A6 ( Aj" A B~!  @  AjAAA"BpBR Apj" ("Aj6 AJ  ( Bㆀ   (։ (j"6  k (F! Apj" ("Aj6@ AJ ( Bㆀ    AŀA߇  A"BpBR  E @ ("AjA (" B! ("-  A: AĀAĆ A:  A6 ( Aj"  B~!  @ AuI " ("Aj6 AJ ( ㆀ AŀA܆ B! Aj$  : " B0 AA    A #Ak"$@@@@@ BpT "/AmjAqAI   Aj(" Aj (DAj(6 Aŀ ܆  ( "E -E  AŀA܆ A! A6   (6 (! Aj$ ~~@  䆀"BpBQ @@@ "A j("A j(A j("Aj- B0 A(j("" Aǀj1AAA邀AA" BpBQ  A j(A j(A j(Aj-E  B AuI " ("Aj6 AJ ( ㆀ AŀA܆  A! @ BpT " /AG ( !  B  @@ / F E B! A!  ( ( (j (  @@@ AH !  󇀀" BpBR   B~ " B| BBV" 󇀀" BpBQ   AAH  Aj!  B|" Q  @ B AuI " ("Aj6 AJ ( ㆀ B!  @ "A(j(E A!A!@@ ($ j)"B AuI " ("Aj6 AJ ㆀ Aj! Aj" ((I Aj ($ ( c@ "A(j("E A!A!@@ ($ j)"B`T   ((! Aj! Aj" I H@ ") "B AuI " ("Aj6 AJ ㆀ B07 $@ ) "B`T   @ ( "E  @ ( "E   @ "A(j("E  ("Aj6 AJ Bpㆀ @ ( "E @ ($"E @ ( Bp"B0B0A!  ("Aj6@ AJ ( ㆀ @ AL  B AuI " ("Aj6 AJ ( ㆀ B 戀 ~@@@@@ -  (!@  " B A! AH  ("(8 Atj(" ("Aj6 AJ   熀  @@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 A!  ( (   Ő ( ( - - . )0!  @ E @ E Aj!@@ ("AH ("(8 Atj(" ("Aj6 AJ  熀 Aj! Aj" ("Aj  ( ~@ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ #Ak"$@@ "-AqE A j E ( A(j(O A!        Ar! Aj$ ~#Ak"$A!@ /AI A!B0! A A" Bp" B0Q @ BQ @@ BpT "/A%G ( "   Aj(" A j (DAj(6 Aŀ ܆  A A" Bp" BQ @ B0R A!  A%" E @ (E (E  A!  ! @@@@ (" ("G  AtjAj!  @  M (T"AH  Aj(!@@ ( G At jAj!  A A"Bp"BR  @ B0R B AuI  " (Aj6  @ BoV @ B AuI " ("Aj6 AJ ( ㆀ AĀA܆  A A! " ("Aj6@ AJ ( ㆀ @@ Bp"B Q @ BR  B0R  B AuI  " (Aj6  @ BpT -AqE   AŀA܆ B!  ~~~~#Ak"$A!@ BpT A! "/A1G ( ! A6 @@ ("AjA ("E B7 AjB7 AjB7 AjB7@ )"B AtM " (Aj6  7@ )"B AuI " (Aj6 Aj 7B0!@ )" BpT @ "/" A F @@ A0G ( -!  ((D Alj(AG! E   (Aj6 !  7  6 ("AjA ("E B7 AjB7 AjB7 AjB7@ )"B AuI " (Aj6  7@ )"B AuI " (Aj6 Aj 7B0!@ )" BpT @ "/"A F @@ A0G ( -!  ((D Alj(AG! E   (Aj6 !  7  6 @@@@ (" (" 6  6  Aj6  6 A j"(" 6  6  6  6  A! ( ("(" E  )A (  (! Aj Aj" Atj(")! )! Aj)! )! @@ ("AjA (" ("-  A: AĀAĆ A:  AG! A6 A񂀀6  6@ B AuI " (Aj6 !  7@ B AuI " (Aj6 B! A j 7@ B AuI " (Aj6 A0j 7 A(j 7@ B AuI " (Aj6  (" 6 6 A8j 7  6  Aj6 (!@ )"B AuI " ("Aj6 AJ  ㆀ @ )"B AuI " ("Aj6 AJ  ㆀ @ )"B AuI " ("Aj6 AJ  ㆀ Aj  ( (!@ )"B AuI " ("Aj6 AJ  ㆀ @ )"B AuI " ("Aj6 AJ  ㆀ @ )"B AuI " ("Aj6 AJ  ㆀ Aj  ( A6A!  @ ("- A: AĀAĆ A: A! E (!@ )"B AuI " ("Aj6 AJ ㆀ @ Aj)"B AuI " ("Aj6 AJ ㆀ @ )"B AuI " ("Aj6 AJ ㆀ Aj  ( Aj$  ~~#Ak"$@ AG )!@ )"B AuI " (Aj6 ꇀ!  ) "7@@@@ BpB0R B !@ E @ AuI " (Aj6 @ (")"B AuI " ("Aj6 AJ  ㆀ  7  AuI  " (Aj6  B0B0A AjA߆!  7A! BpBR  (")! B 7  7A! B0!@  Atj)"BpB0Q B0B0A A߆! )! @ B AuI " ("Aj6 AJ ( ㆀ Aj$  AŀAŀAAŀҐ @@ ("AjA( (" ("-  A: AĀAĆ A:  A6 BB0 7  -Ar: (! A: (P" Aj"6  6  Aj6 A j Aj6 6P  ~#A k"$@ )HB0AA "BpBQ  (Aj6  BP"7  AAAA Ajև"7  AAAA Ajև"7@   "B AuI " ("Aj6 AJ ( ㆀ  ("Aj6@ AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A j$ ~@@@@ (P"E  AH   )HB0AA "BpBQ @ BpT "/A1G ( "E @@ (Aj  ("Aj6 AJ  ( ㆀ  @ )"B AuI " (Aj6  7A!  ("Aj6 AJ  ( ㆀA @ B AuI " ("Aj6 AJ ( ㆀ AŀA܆ (")! B 7  7A!  B07A ~#A k"$@@@@@@@@ ("(T"AvA|j B0! - AŀAŀAAŀҐ AŀAŀAAŀҐ -  (tE  A6t  AqA(r6T@ Aj5B B0Q ( G  B07 )B0B0A AjA߆"B AuI " ("Aj6 AJ ( ㆀ B7 A6  Aj! (! @@ AN B!  ( " AAA@ AH !@@@ ("(T" AxqA(G - AŀAŀAAŀҐ @ AqE   @  AJ  (Aj6  BP"7     Aj  (" Aj6@ AJ ( ㆀ )"B AuI  " ("Aj6 AJ  ( ㆀ  AjA: Aj5B B0Q ( G  B07 )B0B0A AjA߆"B AuI " ("Aj6 AJ ( ㆀ Aj! Aj" B0! ("Aj ( A j$  AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ AŀAŀAAŀҐ ~#Ak"$ (!  )"7@@@@@@@ (T"AvA|j - AŀAŀAAŀҐ AŀAŀAAŀҐ -  (tE  A:@ B AuI " (Aj6 (T!  7  AqA(r6T@ (hAH A!A! @ (d j(" (Aj6  BP"7   Aj    (" Aj6@ AJ ( ㆀ Aj! Aj" (hH Aj5B B0Q ( G  Aj)B0B0A AjA߆"B AuI " ("Aj6 AJ ( ㆀ Aj$B0 AŀAŀAAŀҐ AŀAŀAAŀҐ AdzŀAŀAAŀҐ @ (hAH Aj!A!@ (d Atj(!@@ ("AH (! !@ ( F  Aj! Aj" (- @@@@ Aj-AtA G -  (tE  (p"AL   Aj"6p  @@ ( J A  Aj刀  (!  Aj6 ( Atj 6 -T   E  A AŀAŀAAĀҐ AŀAŀAAĀҐ AŀAŀAAĀҐ AŀAŀAAĀҐ Aj" (hH A ~ ()x" ()x"U  Sk A!@ AJ ) "BpBR Aq" ")"AqO A! E Aj!@@ BP  Atj/!   j-! A6 ("AjA (!@@ AqAK @  B! ("-  A: AĀAĆ A:  A:  : A6 B7 A6 B!  @  B! ("-  A: AĀAĆ A:   ; A6 B7 A6 B! B07 B07  7  M@@ AJ ) "BpBR A! Aq (AqI  A!  ~@@ AJ ) "BpBR Aq" " )"AqO @ AqAF AqAF @ AqE A0q  AqAF  A! AqE  BpBR " )"BBR Aj! @@ BP Atj/!  j-! @@ BP /!  -!  F  AִŀA      Ar!  ~ #Ak"$A!@ A͇"BpBQ @@@ ("Aj "(Aq" A AJAt (" E A!  @ ("- A: AĀAĆ A: B AuI A!  ("Aj6 AJ  ( ㆀ  Aj! A! ! A!@ Aj!@@@ )"BP Atj/"AqAG   AqN  Atj/"AqAG  Aj! A t jAȀej!  j-! ! 6 Aj! Aj!  H @ B AuI  ("Aj6 AJ ( ㆀ A j  (A킀! (" Aj ( AH  ( 6 ! Aj$  ~~#Ak"$@@ BoV AĀA܆B!   AŀA " A!@ AH ("(8 Atj(" ("Aj6 AJ  熀 B! ꇀ"AH @@  Aj!  A: A j! A Aꇀ"AH @ E A: Aj!  AŀA " A!@ AH ("(8 Atj(" ("Aj6 AJ  熀 ꇀ"AH @ E A: Aj!  AŀA " A!@ AH ("(8 Atj(" ("Aj6 AJ  熀 ꇀ"AH @ E A: Aj!  AŀA" A!@ AH ("(8 Atj(" ("Aj6 AJ  熀 ꇀ"AH @ E A: Aj! A Aꇀ"AH @ E A: Aj!  AĀA" A!@ AH ("(8 Atj(" ("Aj6 AJ  熀 ꇀ"AH @ E A: Aj! Aj  Ajk! Aj$  ~#Ak"$@@ BoV AĀA܆B!  " (Aj6@ (()"B AuI " (Aj6 @@  A݆ @ /AF  Aj(" Aj (DAj(6 Aŀ ܆B!  ( ")""Aq"  AŀA!  A6$ A6  Av"6  6  6@@ ("Aj Au  tjAj (" @ ("- A: AĀAĆ A: A6$ A6 A6  A6  B7 A6  6 @ (Aq"E Aj! A! A!@ !@@ )B"P" Atj/!  j-! Aj!A!@@@@@@@@@ Aj @ Avj A/G  E A! A/!  A!  N  Aj!@ Atj/! !  j-! !  A! A!  A!@ E A!  @  H A!  Aj!@ BR AA j-AF" !   !A!  A! AA Atj/AF" !   !  A!  A!  A! A/! A! @@ (" (N @ ( E ( AtjAj ;  Aj6  AK ( jAj :  Aj6  Aj  @ AH @ (" (N @ ( E ( AtjAj ;  Aj6  AK ( jAj :  Aj6  Aj   H Aj̇! Aj$  ~~#Ak"$@@ BoV AĀA܆B!  @ "/AF  (Aj6@ (()"B AuI " (Aj6 B0!  A݆   Aj(" Aj (DAj(6 Aŀ ܆B!  ($Aj qAGB! Aj$   ~~~~#Ak"$@@@ BpT "/AF   Aj(" Aj (DAj(6 Aŀ ܆B!  A!B! )A͇"BpBQ B!B ! B0! @@@ A A" BpBQ @ B "AuI " (Aj6 @ Aj " B! @ )"BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ @ ($Aj""A!q" B7 @@ "AN A!  ("Aj At (" A! ("-  A:A! AĀAĆ A:  @@@@@@@@@ )" " )" BU   Aj"  "Aq Av" "AF  AH   B ! AG  B ! AB AAN B !  AŀAĆ  @ E A ( k u AAH  ($" (Aj6B! A" BpBQ B0!B0! @ "E B! B Ӈ" BpBR B!  @@ Aq B0!  ($" (Aj6B! A" BpBQ  E B! B Ӈ"BpBQ  @ AH Bp! Bp! ! !B!@@@@  A!  @ PE A!  A -!  jAj! A!@@ (" A!  A! Aj("E  k u!  k u! @@ B0Q @@ AG B0!  ($" (Aj6B! A" BpBQ B AAL  B AAL  @ E B0Q @ B AuI " (Aj6   AAJ B!  AAH  @@ AG B0!  B!  " BpBQ  @ E @ B AuI " (Aj6  AAL   AAL Aj!  B|"Q   B!  B!  A A!B!B0! AH  A ( k uAAH @ A AAN B0! !B0!  B0! @ BpB0R B0!B0! !  @ A AAN B0!B!B0!  B0! A AAH  ! B0! B0!  B!   ! @ B AuI " ("Aj6 AJ ( ㆀ ! B AuI  " ("Aj6 AJ  ( ㆀ  B! @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ ("Aj  ( Aj$  ~#Ak"$@@@@@ BpT "/AF   Aj(" Aj (DAj(6 Aŀ ܆  )!@@@ )"BpT "/AG @ BpB0Q AŀA܆  ( " (Aj6 ($" (Aj6 B! B!  @@ BpB0R ("(,A/M  (8(" (Aj6 B!  A͇! BpBQ   "BpBQ  ( " ("Aj6@ AJ ( Bㆀ ($" ("Aj6@ AJ ( Bㆀ  >$  > AB AAH   (Aj6  B AuI " ("Aj6 AJ ( ㆀ B! Aj$  AŀAŀAA߫ŀҐ }~B!@  )"Bp"BQ @ B AuI " ("Aj6 AJ ( ㆀ B RB!  #Ak"$  7@ A A"BpBQ @ BpT @ "/"A F @@ A0G ( -!  ((D Alj(AG! E   B0A AjA߆!  ("Aj6@ AJ ( ㆀ @ BoX !  @ BB R !   AŀA܆B!  @ B AuI " ("Aj6 AJ ( ㆀ   Aj! Aj$  #A k"$@@@ BoV AĀA܆  AjAjB7 B7  6@@ ("AjA (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 B7 A6  6 @ AjAA/  ("Aj6 ( Aj!@ (E  AtjA/;   jA/: @ Aj A A @@ (" (H Aj AjA/  (!  Aj6 ( Aj!@ (E  AtjA/;   jA/: Aj A A Aj̇!  (("Aj ( ( B! A j$  ~~~~#Ak"$@@ BoV AĀA܆B!  )! AjAjB7 B7P  6H@@ ("AjA (" @ ("- A: AĀAĆ A: A6\ A6T A6L  A6 B7 A6  6L A6@ B78  6  Aj"6B!B0! @@@ )A͇" BpBR B0! B0! B0! B0!B0!  @@ BpT B0!@ "/"A G A!A!  @@ A0G ( -!  ((D Alj(AG! A!A!   B!@ A͇"BpBR B0! B0! B0! B0!  !A! B!@ A A"BpBR B0! B0! B0! !  A͇!@ B AuI " ("Aj6 AJ ( ㆀ B!@ BpBQ "Aj! )" Aq!@@@@ BP E @ /AF  Aj! Aj"E  E @ -AF  Aj! Aj"E  A Aꇀ"AH A! AB AAH   A!A! @ E As (AqAGr E  !  !B0! B0! @@@@@@  " Bp"B Q  BQ B! (@ @@ (8" ( A"BpBQ )H!@ B "AuI " (Aj6 @ B AuI " (Aj6  A݆!@ AuI " ("Aj6 AJ ( ㆀ @  A A! A A"BpBQ @ BpT "/A G ($AG A*j/E! @ B AuI " ("Aj6 AJ ( ㆀ !  ~~#Ak"$@@@@ BpT "/AF   Aj(" Aj (DAj(6 Aŀ ܆  AjAjB7 B7  6@@ ("AjA (" @ ("- A: AĀAĆ A: A6$ A6 A6  A6 B7 A6  6 A!@ A͇"BpBQ @@ ($Aj""A!q" B7  A! A A" BpBQ @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  A!A!@ " AH ("Aj At (" A! ("-  A:A! AĀAĆ A:  @@ )" " )" BU Aj! "Av!@@ Aq A!   Aq  "AG   ( k u"7@ ( k u" AH Aj A   A  AAN   !@ AqE A!@ !@    Aq  "AF !   ( k u"7@  ( k u"N Aj    !@  G Aj!  )" Aq"O BP Atj/AqAG  N Aj  Atj/AqAF!  " 7 )" B Y  A!@@    Aq  "AF !   ( k u"7@  ( k u"N Aj       Fj"" 7 ! )" B Y  AH @  AG  AB AAH  Aj  (Aq   ("Aj  ( Aj̇!  AŀAĆ @ B AuI " ("Aj6 AJ ( ㆀ ("Aj  ( (("Aj ( ( B! Aj$  ~@ B "AuI " (Aj6 @  " B!@ )"BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  ~@@ E )"B W BBR  B| "Aj!@ Aj" Atj/AqAG  AqN Aj  Atj/AqAF!  ~~ #A0k"$@@@@@ )("BpBR )"BpBQ  AŀA܆  ) ! )! )! AjAjB7 B7  6@@ ("AjA (" @ (" - A: AĀAĆ A: A6 A6 A6  A6 B7 A6  6 A6$@@ BpB0Q A0 A" BpBQ  A$j   A0 A" BpBQ A(j  @ )" B AuI " (Aj6 A,j AH ! " Aj! Bp! (( (,"j! )"Aq! ($!A!@ Aq! @@ BP M  Atj! !@ /A$F  Aj! Aj"G  M  !@ j-A$F  Aj"F  AH  Aj" O  Aj  @@ )BP" Atj/!  j-! Aj!@@@@@@@@ A\j @ (" (H Aj AjA$  (!  Aj6 ( Aj!@ (E  AtjA$; )!   jA$: )!  Aj  (Aq )!  AF  @@ APj"A K @  O @@ Atj/!  j-! APjA K Aj   A lj"A0K APj" Iq" !   ! E   O   " Bp"B0Q  BQ  Aj E   A "AH  "BpBQ @  󇀀" Bp"B0Q BQ  Aj   Aj! )!  Aj    Aj E  ( ! (!  )!  Aj A  )! ("Aj  ( B!  Aj   Aj̇! A0j$  ~~~#Ak"$@@ BoV AĀA܆B!  B!@ )A͇"BpBQ @@ A A"BpBR !  A͇!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ " Aj! )"Aq! @@@@@ BP E @ /AF  Aj! Aj"  E @ -AF  Aj! Aj" B0!  !  A Aꇀ" AH  AB AAH  ($" (Aj6B0! A" BpBQ  ! B0!B! @@ B AuI " ("Aj6 AJ ( ㆀ @  "Bp" B Q BQ  B󇀀"A͇! @ B AuI " ("Aj6 AJ ( ㆀ @@ Bp"BQ A! BR   (AqE! AH @ E Aj A AAH @@ ) " B|BV B!  B~ " B| BBV! A AAL  B|!  @ E !  B !     @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ Aj$  ~#A k"$@@ BoV AĀA܆B!  B0!@@ )A͇"BpBR B0!B0!B0!  @  )H" BpBR B0!B0!  A A"A͇!@ B AuI " ("Aj6 AJ ( ㆀ @ BpBR B0!   7  7 A AjAކ"BpBQ Aj A A @@ )"B|BV B!  B~ "B| BBV! A  AAH B! A.҇"BpBQ @ A Æ" !   7  7  " AAAsAv6 AA! A6  AsAv6@ BpT  6    @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~ )"Aq!@@ BP A!  L  At jAj!@@ / G  Aj!  Aj"G  A! AK  L Aj! Aq!@@ j- G   Aj"G  ~@ BoV AĀA܆B B0!@@@@ )A͇"BpBR B0!  A A"BpBQ @ B AuI " (Aj6 @ BA݆ AB AAH  B0!@  "Bp"BQ A A"BpBQ @  E   A  AAN B0! B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6 AJ  ( ㆀ   B! B Q A A!    ~~#A0k"$@@ BoV AĀA܆B!  B!B0!@@ )A͇"BpBR B0!B0!B0!  B!@  )H" BpBR B0!B0!  A A"A͇!@ B AuI " (" Aj6 AJ ( ㆀ B!@ BpBR B0!  " Aj! )"Aq! @@@@@ BP" @ A!  A! @ /AF  Aj! Aj" G  @ A!  A! @ j-AF  Aj" G A! Aj! AsAv! @  E @ /AF  Aj! Aj"  E @ -AF  Aj! Aj" B! Aŀ AĀ̈"BpBR B0!   7(  7 B! A A jAކ"BpBQ ($" (Aj6B0!@ A"BpBQ A! @ )"BpB0Q @ B AuI " (Aj6 @ Aj AN B0!  (" B0!  @@ " )"Aq" E B! "B~|!B0!B!A! A!@ A " AAH  @@@  "Bp"B Q BQ  Aj A A @ )" W  7 !  Q  "BpBQ    AAH  B|" Q  (! Aj  @ )BY ! !   }!B!@  B|""BpBQ    | AAH   Q  B|! !  )Y   !   |! ! I  @  "Bp"B R B!A!  BQ     I "BpBQ   AAJ  @ B AuI " (" Aj6 AJ ( ㆀ B! @ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ B AuI " (" Aj6 AJ ( ㆀ A0j$  $@ B AuI " (Aj6  ~#Ak"$@@@@@ BpT "/A.G ( "   Aj(" Aj (DAj(6 Aŀ ܆B!  @ (E B0!A!  @ )" )" "Bp" BR B0!  @ B R A! A6B0!  @ (E B󇀀" A͇! @ B AuI " ("Aj6 AJ ( ㆀ Bp" BQ @ BR (Aq Aj A AAH @@ ) (" B|BV B!  B~ " B| BBV! A AAL    A6 A!  @ B AuI " ("Aj6 AJ ( ㆀ B!A! B AuI " ("Aj6 AJ ( ㆀ  6 Aj$  ~~#Ak"$A!A!@ BpT @ "/AG -Aq  A! @ BS @@@ E AH! AJ! B! @ B | " |! |! @@@@ -AqE BS 5("Z T  A!  Aj"AH  E B!  )AN    }!@  B|"  S" B|"  S"BS  At! At! !@ ($" j!@  j)" B AuI " (Aj6 )!  7@ B AuI " ("Aj6 AJ ( ㆀ Axj! Axj! B|"PE    }"  S"  }"  S"BS  At! At! !@ ($" j!@  j)" B AuI " (Aj6 )!  7@ B AuI " ("Aj6 AJ ( ㆀ Aj! Aj! B|"PE  B!  AAH   |" S  AH @A!   Aj"AH @@ E   )AN    AAH  B|! B|! B|"PE A!  B|! B|!@A!  | Aj"AH   |! @@ E  )AN    AAH  A! B|"PE Aj$   )A  @@ BV @  Axr"AN B07   󇀀"BpBR   7A @ " B07A @@  "AN B0!    A"BpBR A! Ç  7  ~~#Ak"$@@ A j )Ać" B!   ( AŀA! Apj" ("Aj6@ AJ ( Bㆀ @ AN !  @ BpBR !  @ )"BpZ !  @ "/"A F @@ A0G ( -!  ((D Alj(AG!  !  @@@@@@ ("Aj( (()" A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E    (Aj6 A" BpBR  B! B AuI  " ("Aj6B! AH   A/ B0B0A!@ B AuI " ("Aj6 AJ ( ㆀ @ AJ B! B AuI  " ("Aj6B! ! AH   A/ ! B AuI  " ("Aj6 ! AJ  ( ㆀ Aj$  ~~~#A k"$ A6 A6@@   A"BpBR !  @@@ BpT @@ "/"A0F AF!  "AH  @@@@@@ E A0 A" BpBQ  A j E   Aj A j AAJ (!  (! ( " E  Aj! A!@@@ E @ AH Axr!   6 AjA AĀ  Aj Aj" BpBQ  ( Aӆ"   ("AH ((8 Atj(" (Aj6 @@@@   " Bp"B0Q BR  AH  ("(8 Atj(" ("Aj6 AJ   熀  A! " BpBQ  " ! B AuI   ("Aj6 AH     B0B0A! B AuI  " ("Aj6 AJ  ( ㆀ @ AH ("(8 Atj(" ("Aj6 AJ  熀 AH  Aj! Aj"F  E @ ( "E Aj!@@ ("AH (" (8 Atj(" (" Aj6 AJ 熀 Aj! Aj" ("Aj (  E  Aj!@@ ("AH (" (8 Atj(" (" Aj6 AJ 熀 Aj! Aj"  E  ("Aj ( A" BpBQ  7  7  B0A AjA߆!@ B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AN   B! B AuI  " ("Aj6B! AJ  ( ㆀ A j$   ) ) ) ~~#Ak"$A!@ BpT "/A0G ( ! @@ -E AĀA܆A!  A! )"A A"Bp"BQ (!@B0  B Q"BpB0R   !  @ A"BpBR B AuI A! " ("Aj6 AJ  ( ㆀ  )!  7H  7@  )B0A AjA߆! @ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ Bp"BQ @@@ BoV B0Q   A!@   "AJ   @@  A! B0Q    B0R -AqE A! -AqE   A!@ )"BpT @ "/A0F -Aq!  A! 燀"AJ   A j Š! @ AN A!  @@ E ("A:A ( "Aq rE  Aq  Aq  Aq  Aq   E - Aq  A j AŀA܆A!  @@ E  ) 7 Aj A jAj)7 Aj A jAj)7 Aj A jAj)7  A j A! Aj$  ~@ BoV AĀA܆A @@@ A? A!  A! A? A"BpBQ AA ꇀ! @ AE A! A A"BpBQ AA ꇀ r! @ AE A! A A"BpBQ AA ꇀ r! B0!@@@ A B0!  B0!@ A A"BpBR B0!  Ar! @@ AE B0! Ar! A A"Bp"B0Q Aŀ! BQ  BpT  " /" A F @@ A0G ( -!  ((D Alj(AG! E  @@ A B0!  A r! A A"Bp"B0Q Aŀ! BQ  BpT  " /" A F @@ A0G ( -!  ((D Alj(AG! E  @ A0qE Aŀ! Aq   7  7  7  6A A܆ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ A! B AuI A! " ("Aj6 AJ ( ㆀ  ~~~#A0k"$A!@ BpT "/A0G ( ! @@ -E AĀA܆A!  A! )"A A"Bp"BQ @B0  B Q"BpB0R   (A!   )B0A A߆!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ A! A6$ A6, A6(@@@@ A0 A"BpBR A! A6,  A,j  A! A! @@ (," E @ ("Aj At" (" A! ("-  A:A! AĀAĆ A:  ! B!A! A "!@ !@ AJ B~ "B| BBV! @  󇀀"Bp"BQ BQ BQ   AĀA܆  ! @ B AuI " ("Aj6 AJ ( ㆀ E  A6 Aj 6 Aj! Aj! B|"R AI Aj!A!@@ AH  Atj(! ! !@ ( F  Aj! Aj" Aj" G @ )"BpT @ "/A0F -Aq!  燀" AH  @ -E AĀA܆  A$j A(j (A @ (("E ($! A!@@ -E AĀA܆   ( Atj"("AH @ E @ -AqE  @@ AH Aj(! ! !@ Aj( F  Aj! Aj" AĀA܆  A6 Aj" G @ E ! !@@ (E  Aj! Aj"E  AĀA܆  ($    6  6A!  AĀA܆ ($" E  ((! @ E Aj!@@ ("AH ("(8 Atj(" ("Aj6 AJ  熀 Aj! Aj" ("Aj ( @ E @ (,"E Aj!@@ ("AH ("(8 Atj(" ("Aj6 AJ  熀 Aj! Aj" ("Aj ( B AuI A! " ("Aj6 AJ ( ㆀ A0j$  ~#A0k"$A!@ BpT "/A0G ( ! @@ -E AĀA܆A!  A! )"A A"Bp"BQ @B0  B Q"BpB0R )"BpBQ  " ! B AuI   ("Aj6 AJ  ( ㆀ  @ A"BpBR B AuI A! " ("Aj6 AJ  ( ㆀ  )!  7(  7  )B0A A jA߆!@ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ BpBQ @ ꇀ" A!   ( "AH @ E @@@ -AqE )"BpT @@ "/A0F -Aq!  燀"AH    AĀA܆    ! A0j$  ~~#Ak"$A!@ BpT " /A0G ( ! @@ -E AĀA܆A!  A! )"A A"Bp" BQ @B0  B Q"BpB0R )     !  @ A" BpBR A! B AuI A! " (" Aj6 AJ  ( ㆀ  @@@@@ (" Aj( (()" A BoV" AylAyj"A Aj(kvAtj(" E @@ ( G (, G ( E  ((" A􆀀" E   (Aj6 A" BpBQ @ AqE @ B AtK A B0B0A  " (Aj6 A B0B0A ("Aj6 AJ ( ㆀ @ A qE @ B AtK A B0B0A  " (Aj6 A B0B0A ("Aj6 AJ ( ㆀ @ AqE @ B AtK A B0B0A  " (Aj6 A B0B0A ("Aj6 AJ ( ㆀ @ AqE A AvAqBB0B0A @ AqE A AvAqBB0B0A @ AqE A? AqBB0B0A )!  70  7(  7  )B0A A jA߆!@ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ BpBQ  ꇀ A! AqE  AÒŀA܆A!  @ B AuI " (" Aj6 AJ ( ㆀ A! B AuI A! " (" Aj6 AJ  ( ㆀ   (" " AH Aq! @@@ AF A! -AqE   @ (" E @ AG Aq  @@ A0qE AqAG @ AqE  )E  A qE   )   AqE Aq! @ Aq AF   )E  AqE  (AqAG   AĀA܆A!  A! Aj$ ~#A0k"$A!@ BpT "/A0G ( ! @@@@ -E AĀA܆  A! )"A A"Bp"BQ @B0  B Q"BpB0R ) !  @ A"BpBR A! B AuI A! " ("Aj6 AJ  ( ㆀ  )!  7(  7  )B0A A jA߆!@ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ BpBQ  ꇀ"   (" "AH E  (! @ AqE -Aq  AŀA܆ A!  A! A0j$  ~#Ak"$A!@ BpT "/A0G ( ! @@@@ -E AĀA܆  B! )"A A"Bp"BQ @B0  B Q"BpB0R )  A!  B!@ A"BpBR B AuI  " ("Aj6 AJ  ( ㆀ  )!  70  7(  7  )B0A A jA߆!@ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ Bp"BQ  ( "AH E @@ ("Aq ) E   AqAG  Aj5B B0R  B0Q    AĀA܆ B!   Aj$  ~#Ak"$A!@ BpT "/A0G ( ! @@@@ -E AĀA܆  A! )"A A"Bp" BQ @B0  B Q"BpB0R )!@ B AuI " (Aj6     !  @ A" BpBR A! B AuI A! " ("Aj6 AJ  ( ㆀ  )!  78  70  7(  7  )B0A A jA߆!@ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ BpBQ @ ꇀ"E  ( "AH  E @@ ("Aq ) E   AqAG  Aj5B B0R   AĀA܆  @ Aq A! AqE  Aj(Aj("E  -(AqE  AĀA܆ A!   Aj$  ~#Ak"$B!@   "BpBQ  7@@ AAAA Ajև"BpBQ @@@ ("Aj( (()"A BoV"AylAyj" A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E    (Aj6 A"BpBQ Aj! A B0B0A@ B AuI " (" Aj6 AJ ( ㆀ A B0B0A B AuI  " (" Aj6 AH   @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6 AJ  Aj!B! ( ㆀ Aj$  n~@ )"BpT "/A0G ( "E A:  ("Aj6@ AJ ( ㆀ B 7 B0 ~#Ak"$ A&j!@@@ BpT  "/G ( "   Aj(" Aj (D Alj(6 Aŀ ܆B!  B )" B AyjAnI B|BP! @ (E BoV AĀA܆B!  B0! @ Aq )! @@  ̊"E )(" B AuI  " ("Aj6 AJ  ( ㆀ  @ ("AjA0 (" B! ("-  A: AĀAĆ A:   6 B7@@ (E  "(6  6  B AuI " (Aj6  7  (" ("Aj ͊qAtj"(" 6 Aj" 6  6 Aj 6  ("6  Aj" 6  ( Aj"6  6 Aj Aj"6  (I (" Aj A At AF" At" (! (!@ E  -  A: AĀAĆ A:   ( ! E A! @A k"  KAv j"E Aq! @ AjAI Aj! A|q!A! @ A j Aj"6 Aj 6 A|j Axj"6 Atj Apj" 6 6  6  6 6 A j!  Aj" G E  Atj!@ Aj 6 6 Aj! Aj" @ Aj(" F Aj! @@ Atj(  )͊ qAtj"(" Aj" 6 6 6  6 (" G  6  6  At6 @ B AuI " (Aj6  7( B AuI  (Aj6 Aj$  ~@@ ( (Aj ͊q"Atj"(" F @ B AtK At!@@ )"B AuI " (Aj6  A݆  (" ( jG  ! At!@@ )"B AuI " (Aj6  (Aj6  A݆  (" ( jG A Ahj |A!@@@@@@@A B " AyjAnI"Aj s ")""Aq!@ BP E  Aq!@@ AO A!A!  Aj!  k!A!A!@ Al Azj/jAl A|j/jAl A~j/jAl /j! Aj!  Aj"G E  At jAj!@ Al /j! Aj! Aj"  E  Aq!@@ AO A!A!   k!A!A!@ Al  j"Aj-jAl Aj-jAl Aj-jAl Aj-j!  Aj"G E   jAj!@ Al -j! Aj! Aj"  Al!  s !  B|"" a B! B AlAs #Ak"$ A&j!@@@ BpT  "/G ( "   Aj(" Aj (D Alj(6 Aŀ ܆B!  @ B )" B AyjAnI  B|BP̊" B0!  )("B AuI " (Aj6 Aj$  #Ak"$ A&j!@@@ BpT  "/G ( "   Aj(" Aj (D Alj(6 Aŀ ܆B!  B )" B AyjAnI  B|BP̊AGB! Aj$  #Ak"$ A&j!@@@ BpT  "/G ( "   Aj(" Aj (D Alj(6 Aŀ ܆B!  @ B )" B AyjAnI  B|BP̊" B!  (  ъB! Aj$  ~@ ( Aj"(" ("6  6 A6 A6 ) !@@ (E @@@ "("E @  G Aj!  @ "( "E   F  AŀAŀAAŀҐ A j!  ( 6  B AuI " ("Aj6 AJ ㆀ @ )("B AuI " ("Aj6 AJ ㆀ  (Aj"6@@  Aj"(" ("6  6 A6 A6 Aj  (  B07( B07 A6  ( Aj6 #Ak"$ A&j!@@@ BpT  "/G ( "   Aj(" Aj (D Alj(6 Aŀ ܆B!  B0! Aj(" Aj"F @ Apj! (! (  ъ  G Aj$  #Ak"$ A&j!@@@ BpT  "/G ( "   Aj(" Aj (D Alj(6 Aŀ ܆B!  @ ( "AH !  B~ "B| BBV! Aj$  ~~#Ak"$ A&j!@@@@ BpT  "/G ( "   Aj(" Aj (D Alj(6 Aŀ ܆B!  )! B0! @ AH )! @@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆B!  @ Aj(" Aj"F @@@ Atj"( Apj" (Aj6@ )"B AuI " (Aj6  7@  )"B AuI " (Aj6  7  7 B0A AjA߆!@ )" B AuI " (" Aj6 AJ ( ㆀ @  )" B AuI " (" Aj6 AJ ( ㆀ  (Aj" 6 (! @ (E  (! (" 6 6 A6 A6 Aj  ( BpBQ @ B AuO !  " ("Aj6@ AL !  ( ㆀ !  (!  G B0! Aj$  AĀAŀAAʼŀҐ ~~#Ak"$ Aq"A&j!@@@ BpT  "/G (   Aj(" Aj (D Alj(6 Aŀ ܆B!  @@@ ("Aj( (( A*j" Atj)" A BoV" AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 B!  " BpBQ @ ("AjA (" @ ("- A: AĀAĆ A: B AuI  " ("Aj6 AJ  ( ㆀ  Au!@ B AuI  (Aj6 A6  6  7@ BpT 6 ! Aj$ ~~#Ak"$ A*j!@@@@@@ BpT  "/G ( "   Aj(" Aj (D Alj(6 Aŀ ܆ A6  B0!@@ )" BpB0Q BpT  A&j "/G  ( " E @@ ( " Aj(!   (Aj" 6 Aj(! (E  (! (" 6  6 A6 A6 Aj  ( @  Aj"F @ Atj(E  (" G A6 @ )" B AuI " ("Aj6 AJ ( ㆀ B07 A6  Apj" (Aj6 6 A6 )!@ (" B AuI  " (Aj6  ! @  )! @ AG @ B AuO !  " (Aj6 !  ($" (Aj6 A"BpBQ @ B AtM " (Aj6 @ B AAL @ B AuI " (Aj6 B AAH !  B AuI " ("Aj6 AJ ( ㆀ B! Aj$  AŀAŀAAĀҐ AĀAŀAAʼŀҐ ~~~#Ak"$@@@ )"BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆B!  B! )ALj" BpBQ @ A A" BpBQ @@ E B0AAA!  B Ӈ! @ BpBQ ! Aj!B! @@@@@  AjȈ"7 BpBQ @@@ (  7 !@ BT B~ "B| BBV!  7  )B0A AjA߆"BpBQ @@ E @@ BpT /A&G ( "   Aj(" A j (DAj(6 Aŀ ܆ @ B  B AyjAnI  B|BP̊" A!  A! )("B AuI  " (Aj6  !@ B AuI " ("Aj6 AJ ( ㆀ B0! E   A! Bp"B0Q  BR     ($" (Aj6 A"BpBQ @ E  7  7 AjAˊ"BpBQ  B AuI  " ("Aj6 AJ  ( ㆀ  @ B AuI " (Aj6  AAH  A AjABpBQ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ AH ("(8 Atj(" ("Aj6 AJ  熀 @ B AuI " ("Aj6 AJ ( ㆀ B07 B|" BR AĀA܆B0!B0! AɈ  @ AH Aj("(8 Atj(" ("Aj6 AJ  熀 B AuI " ("Aj6 AJ Aj( ㆀ B AuI " ("Aj6 AJ Aj( ㆀ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI " ("Aj6 AJ ( ㆀ Aj$ @ BpT "/A1G ( "E Aj!@ Aj(" Aj"F @ "(!@ )"B AuI " ("Aj6 AJ ㆀ @ Aj)"B AuI " ("Aj6 AJ ㆀ @ )"B AuI " ("Aj6 AJ ㆀ   (  G @ Aj(" A j"F @ "(!@ )"B AuI " ("Aj6 AJ ㆀ @ Aj)"B AuI " ("Aj6 AJ ㆀ @ )"B AuI " ("Aj6 AJ ㆀ   (  G @ )"B AuI " ("Aj6 AJ ㆀ   ( @ BpT "/A1G ( "E @ Aj(" Aj"F @@ )"B`T   @ Aj)"B`T   @ )"B`T   (" G @ Aj(" A j"F @@ )"B`T   @ Aj)"B`T   @ )"B`T   (" G )"B`T   @ ( "E (" (Aj"6@  Aj  ( @ )"B AuI " ("Aj6 AJ ㆀ Aj  ( 0@ ( "E )"B`T   @@ ( "E  (Aj"6  -hAF (" A j"("6  6 A6  Aj"6 Aj"(!  Aj"6  6  6 -h A:h@ (\" F @ Axj"(  򆀀 (\" G A:h  AŀAŀA+AĀҐ @ ( "E   @ BpT "/A7G ( "E @ )"B AuI " ("Aj6 AJ ㆀ @ )"B AuI " ("Aj6 AJ ㆀ Aj  ( h@ BpT "/A7G ( "E @ )"B`T   )"B`T   3@ BpT "/A9G ( "E  @ BpT "/A9G ( "E @ Aj(" A j"F @@ )"B`T   @ )"B`T   @ ) "B`T   @ A(j)"B`T   (" G ("E   ~~#Ak"$@@ BoV AĀA܆B!  @  )"BpT "/A1G ( E A> A"BpBQ @ B AuI" " (Aj6 " (Aj6  A݆!@  " ("Aj6 AJ ( ㆀ E )"B AuI  " (Aj6  @  ˆ"BpBQ  Atj)B0B0A A߆!@ )" B AuI " ("Aj6 AJ ( ㆀ @ )" B AuI " ("Aj6 AJ ( ㆀ @ BpBR B AuI  " ("Aj6 AJ  ( ㆀ  B AuI " ("Aj6 AJ ( ㆀ ! Aj$  ~#Ak"$ B07  )7@@ A A"BpBR !   B0A A߆! B AuI " ("Aj6 AJ ( ㆀ Aj$  ~~#A k"$ )!@@ B0"BpBR !  @@@@@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   @ B AuI " (Aj6  7  7   7  7  AAAA և"7B! BpBQ   AAAA և" 7 BpBQ  @ B AuI " ("Aj6 AJ ( ㆀ @@ A A"BpBR !   B0A AjA߆! B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ )"B AuI  " ("Aj6 AJ  ( ㆀ  B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A j$  ~#Ak"$ )!  )B0B0AAA߆"7@ BpBQ   AjA⊀!@ )"B AuI " ("Aj6 AJ ( ㆀ @ BpBR !   AA AAA և"7@@ BpBR B AuI  " ("Aj6 AH   AA 芀! )"B AuI  " ("Aj6 AJ  ( ㆀ Aj$  r~@ )"B AuI " (Aj6 @ (")"B AuI " ("Aj6 AJ  ㆀ  7B )~@ )"B AuI " (Aj6  ~@@   A"BpBR !   B0  A߆! B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ  ~~~#Ak"$ B07P@@ BoV AĀA܆B!  Aj ˆ"BpBQ B0!B0!B0! @@ A A" BpBQ @@ BpT " /" A F @@ A0G ( -!  ((D Alj(AG!  AŀA܆B0!B0!B0!  @@ )ALj" BpBR B0!  A A"BpBQ ($" (Aj6  A"7P BpBQ ($" (Aj6 A"BpBQ  BBAAH    A jȈ" 7X BpBQ  Aj AFAtr!B! )`"B AtK! )h" B AuI! @@@@@ (  B0A AjA߆! )X BpBQ   7 B7  )P7  70  )7( AA A Ajև"BpBQ @@ AG ! AAAA Ajև"BpBQ   @@ AG )P B0AAH  ! ! !    ! ! !  " (Aj6 @ A늀AL  7H  7@ AA Aj芀!       A jȈ"7X B|! BpBQ      A늀" AH  E @ AG )P슀"BpBQ  )P  7P )B0B0A AjA߆   !  AɈ  B0! (")! B 7  7 )h" B0B0A A߆!@ )"B AuI " ("Aj6 AJ ( ㆀ @@ BpBQ B AuI  " ("Aj6 AN   @ B AuO B!  " ("Aj6 !B! AH B!  ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ )P"B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ )`"B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ Aj$  ~~~~#A k"$@ )"B AuI " (Aj6 ꇀ!  )" 7 )! ) ! @ )"B AuI " (Aj6 B! @ Aj  @  B7@@ Aq"AG @@@ ("Aj( (()"A BoV" AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"    (Aj6 B! A"BpBQ B! @ AŀAŀ Aq"AA "BpBQ A AAH AA !@ )"B AuI " (Aj6   AAJ  B AuI  " ("Aj6 AJ  ( ㆀ  )"B AuI " (Aj6 @@ ("AH !  B~ " B| BBV! B!  AAH B! B󇀀"BpBQ  Aj   B (Aj"AAL   @@ AG  슀"7B! BpBQ  B0B0A AjA߆! )  B0B0A AjA߆! BpBQ   B0! A j$ ~#Ak"$A!@ B󇀀"BpBQ A j  B ( j"AAH E! Aj$  ~@@@ ("Aj( Aj)"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 @ A"BpBQ @ B AtK A6 B0B0A  " (Aj6 A6 B0B0A  ("Aj6 AJ ( ㆀ  ~~#A0k"$@@ BoV AĀA܆B!  A j ˆ"BpBQ B0!B0!@@ A A"BpBQ @@ BpT " /" A F @@ A0G ( -!  ((D Alj(AG!  AŀA܆B0!B0!  @ )ALj"BpBR B0!  A A"BpBQ @    AjȈ" 7 BpBQ  (   B0A AjA߆! @ )" B AuI " ("Aj6 AJ ( ㆀ @ BpBQ @ AA A j芀" B AuI " ("Aj6 AJ ( ㆀ BpBR  AɈ (")! B 7  7 )(B0B0A AjA߆!@ )" B AuI " ("Aj6 AJ ( ㆀ @@ BpBQ B AuI  " ("Aj6 AN   @ B AuO B!  " ("Aj6 !B! AH B!  ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ ) "B AuI " ("Aj6 AJ ( ㆀ )("B AuI " ("Aj6 AJ ( ㆀ A0j$  ~#Ak"$@@ BoV AĀA܆B!  @  ˆ"BpBR !  @@@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"E    (Aj6 A"BpBR  @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6 AJ  ( ㆀ  A B0B0A@ B AuI " ("Aj6 AJ ( ㆀ A )"B0B0A@ B AuI " ("Aj6 AJ ( ㆀ A )"B0B0A B AuI " ("Aj6 AJ ( ㆀ Aj$  $@ B AuI " (Aj6  ~~#A0k"$B!@ A jB0ˆ"BpBQ @@@@@ BpT "/A7G ( "  AŀA܆  @@@@  )"B "AuI  " (Aj6  )"AA AF A"Bp"B Q  B0Q  BQ  B !  )  AJ  Aj"7@ AuI " ("Aj6 AJ ( ㆀ Bp"BQ @ (AG   Aj"7  Bp"BQ  BR   )"B !@ AG @ AuI " (Aj6  Aچ7A!  @ AuI " (Aj6  7  @ )P  AjA⊀"BpBR )   (񊀀" 7B!@ BpBQ ) B07   A j!   )  )(@ E B!  !   ) )  )(   (")! B 7  7 A! A j Atr)B0B0A A߆!@ )"B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ ) "B AuI " ("Aj6 AJ ( ㆀ @ )("B AuO !  " ("Aj6@ AL !  ( ㆀ ! A0j$  Q~#Ak"$  AGB7 AAAA Ajև! Aj$  ^~@ )"B AuI " (Aj6 @ )"B AuI " (Aj6  ꇀچ ~#A k"$A!@ BpT "/A9G ( ! @@@ AjB0ˆ"BpBQ @  AĀA܆ (")! B 7  7 )"B0B0A AjA߆! @ )" B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ )" B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AJ  ( ㆀ  ("AjA0 (" @ ("- A: AĀAĆ A: @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B!  Aj" B7 B7 A(jB7 A jB7 AjB7 AjB7 6@ )"B AuI " (Aj6  7@ B AuI " (Aj6  ( "6  6  7  )7 A(j )7  6  A j6 (AF 􊀀 A j$   ~#A0k"$@ Aj"(" A j"F @@@@@@@@@@@ ("  (!  @ ( (!  A6 (" (Aj"6@  ("-hAF (" A j"(" 6 6 A6  Aj"6 Aj" (! Aj"6 6  6 -h A:h@ (\" F @ Axj"(   򆀀 (\" G A:h A6  @@@ ( B0A A6  )  )A  @ )" B AuI " (Aj6 (!@ AG AG @ (")" B AuI " ("Aj6 AJ  ㆀ  7 (!A!  ("Aj"(" 7 Axj 7  Aj6 A! A6  6 @ ( A j!@ (!@@  )B0 ( Aj(A߆" Bp" BQ B0R  Aj(Axj")! B07 A6  A8jᆀ  ↀ @@@@@@@@ ("( E @ BpBR (")! B 7@ (AF A6  (Aj"6@  -hAF (" A j"(" 6 6 A6  Aj"6 Aj" (! Aj"6 6  6 -h A:h@ (\" F @ Axj"(   򆀀 (\" G A:h A6 ( A B AuI " ("Aj6 AJ ( ㆀ @ (AF A6  (Aj"6@  ("-hAF (" A j"(" 6 6 A6  Aj"6 Aj" (! Aj"6 6  6 -h A:h@ (\" F @ Axj"(   򆀀 (\" G A:h A6 @ B AuI" " (Aj6 Aچ! ( A@ B AuI " ("Aj6 AJ ( ㆀ  " ("Aj6 AJ ( ㆀ BZ  Aj(Axj")! B07@ "E AjAK  >@ B AuI" " (Aj6 Aچ! ( A@ B AuI " ("Aj6 AJ ( ㆀ  " ("Aj6 AJ ( ㆀ  7 )P  A jA⊀" BpBQ   5Bp7( AAAA A(jև" BpBQ   7 AAAA A(jև"BpBQ   7 B07 B07 Aj !@ B AtM " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ  A!  AŀAŀA+AĀҐ AŀAŀA+AĀҐ AŀAŀAAĀҐ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A! @ B AuI " ("Aj6 AJ ( ㆀ E  ("A6 A j! ( E AŀAŀAAŀҐ AŀAŀA+AĀҐ Ő (" G A0j$ x@ B AuI " (Aj6  چ! Aj( A@ B AuI " ("Aj6 AJ ( ㆀ ~#A0k"$  7 @@ )P  A jA⊀"BpBR (")! B 7  7 )P  AjA⊀!@ )"B AuI " ("Aj6 AJ ( ㆀ BpBQ   5Bp7(@@@ AAAA A(jև"BpBQ  7 AAAA A(jև"BpBR  B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AH    7 B07 B07   Aj@ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AJ  ( ㆀ A0j$ #Ak"$ (" ("6  6 A6 A6  7@  AtjA j)B0B0A AjA߆"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ @ ) "B AuI " ("Aj6 AJ ( ㆀ @ A(j)"B AuI " ("Aj6 AJ ( ㆀ ("Aj  ( Aj$ ~~A!@ )"BpT "/A9G ( ! Aq! (! )!@@@@ AH A~qAG  A6@ E Aj( AB0 @ B AuI " (Aj6 Aچ! Aj( A B AuI  " ("Aj6 AJ  ( ㆀB0 AG  (" 6 B !@@ E @ AuI " (Aj6 ("Aj! )" B AuI  " ("Aj6 AJ   ㆀ  @ AuI " (Aj6 Aj(Axj!  7 􊀀 B0 AŀAŀAAŀҐ AŀAŀAAŀҐ ~|#Ak"$@@@@ BpT "/A G ) "B "A j!@ E AI  @ AK !  AI  B|!  AĀA܆B!  B! Aj ۆ  +! @@@ DfE DAe  !  !@@ DAcE !  Ax!  R !  B~ B| BBV! Aj$  |~#Ak"$@@@@@@ BpT "/A G ) "B "A j!@ E AI  @ AK !  AI  B|!  AĀA܆A!  A!  ۆ  +!  a @ E D! B!  A!  @@ DCcE !  B! @  D!   B78 A8j Aj (,ACeD D>f! @ ) "B AuI " ("Aj6 AJ ( ㆀ @@ DfE DAe  !  !@@ DAcE !  Ax!  R  !  AĀA܆ B!  B~ B| BBV!  7 B AuI " (Aj6 Aj$  ~~|#Ak"$B!@  Aj Aq" AvAq"E" AH @  AvAq k"  H"AH A k! Aj Atj!@@@@ )" B "AuI " (Aj6  @ AK  " 9  AyjAmK  B|" 7 !  Aj ۆ  +!  9 A " Dd Dcr! Aj! Aj! Aj" D! @ AH E Aj ! @@@ BpT "/A G @ ) " B AuI " ("Aj6 AJ ( ㆀ @@ DfE DAe  !  ! @@ DAcE !  Ax! R  !  AĀA܆  B~ B| BBV!  7 B AuI " (Aj6 Aj$  ~~|#Ak"$@@@@ BpT "/A G ) "B "A j!@ E AI  @ AK  9  AI   B|7  AĀA܆B!  B! Aj ۆ  @@@ )"B "AuI " (Aj6  @ AK !  AyjAmK B|!  B! Aj ۆ  +! @ " Dd DcrAG " D@ DY@c Df! @@@@ DfE DAe  !  !@@ DAcE !  Ax!  R !  B~ B| BBV!  7 A A! Aj$  ~|~#Ak"$@ "B "AuI " (Aj6 B!@ A"BpBQ B "A j! @@ E AI  @@ AK !  @ AI B|!  Aj ۆAH  +! " Dd DcrAF B !   AզŀA " A! @ AH (" (8 Atj(" (" Aj6 AJ 熀 B! BpBQ @@@ BpT "/" A F @@ A0G ( -!  ((D Alj(AG!  AŀA܆ B AuI  " ("Aj6B! AH   B0AAA߆!  (" Aj6 AJ  ( ㆀ @ AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ Aj$  @ ("j-AqA,G Aj"j-"APjAqA K AlAZj!@ Aj"j-"APjAqA K A l jA|j! Aj"j-"APjAqA K  jAPj! Aj"j-APjAqA K Aj"j-APjAqA K Aj"j-APjAqA K Aj"j-APjAqA K Aj"j-APjAqA K A j"j-APjAqA K A j" L   6  6  ("Aj!A!A!@@@@ j-"AUj A! AF   @ j-APj"AqA M A @ Aj" j-"APjAqA K A l jAPj! Aj" j-"APjAqA K A l jAPj! Aj" j-"APjAqA K A l jAPj! Aj" j-"APjAqA K A l jAPj! Aj" j-"APjAqA K A l jAPj! Aj" j-"APjAqA K A l jAPj! Aj" j-"APjAqA K A l jAPj! A j" j-"APjAqA K @ A j" J A A l jAPj! k!@ E AF AF A @@@@ AH kAj! !@ Am! A~j"AK  AH  ! Am"Alk! !  A!@ j-A:F !  A!A! Aj"!@ j-APj" AqA K @ Aj"j-"APjAqA M !  Aj! A l jAPj!  kAH  @ AL A A! A;J  AGr"     @ ($" A$jƋ  ($! ( j (6@ -nAq (" Aj ( ( ($ (H k"6   Ɇ! ($ 6 E   @ (8E A A A A-@ (0" A0jŋ  (0! ( (P Aj AjA A!  A!  A! A0j)A   A!  A! (H j6H@ (( AŀAሀA!  A!  A! A0j")A@ (" ) A8j) (" BpBR @ ("E (hAGAt! (" () ( A$j( (( ݈  A! (    A3  A! A!     A) A! A!A! AA A,j( A$j( ((AAE A!A! AAE A!  AA! A!  A Aj"(! A6P Aj AjA (!A! A;P Aj AjA  A!  A A!  A!   A A!  @ A8j(E  (Aj( Aj (06@ Aŀ AjሀA!  A!@@@@@ (0"AG (4   Aj(6P AjA∀A G  (0! A! AG  ((\  AŀAሀA! A$j(! A,j(! ((! A!  A! (AGG A! AA  AAE  @ AH (((8 Atj(" (Aj6 ! E ( ÇA!  A Aj"(!  6P Aj AjA  ("(;P Aj AjAA!  @@ AjAA=G AAA (LAqAAH   @ (AG A6   A  Aj!A! @@ ("AF @@@ AG  A ("Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A ("Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A (AjA ("Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A ("Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A  ((! ($! (,! AjAAA"AH @@@ AG A ("  ("(;P Aj AjA  @ (A(G @@ A~q" AG Aj!A!  A}jA A|jAI!A!   AA @@ (" A  A  (Aj AjArA AFAq  A:  A @@ ("AF   ‹ A A  @ E A߰ŀAሀA!  AA!   A  AH ((" (8 Atj(" ("Aj6 AJ 熀 A6 (A,G  E  ("AH  (("(8 Atj(" ("Aj6 AJ   熀A! A    A!A!@@ ("AF A! @ ! AF  A,F  A @@ ("A,F AF    ("AF Aj" AKrAG  Aj! A& Aj" (!  ;P Aj AjA ( !@@@@ AM !  A!@@@@ A,F @ AF @ AF A  ("Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A (!  Axr6P Aj AjA Aj!A! ("A,G   !  !  A! Aj!  (! A! AG AG  E  A A Aj"(!  6P Aj AjA A (! A06P Aj AjA  A Aj" (!  6P Aj AjA@@@@@ ("AF A! A,G A!   A! AE  AF  A AA! ("Aj! @ ( (F A  (6P AjA  (6  Aj(6  (A,G  E @ E A A Aj(! A06P Aj AjA  A A  A!  A!A! AAË   A!  @ (A.G  @@ (AG A0j(AG (4E  AŀAሀ  @ (T AŀAሀ    A  Aj(AjAA!  A( @  AŀAሀ  A  A)  A5A!A!  A!  @@@@ ("AXj A! ((T  AŀAሀ  AF  AŀAሀ  @ ((X AŀAሀ  A Aj"(! A6P Aj AjA (!A! A;P Aj AjA A (! A6P Aj AjA (! A;P Aj AjA A4  A!  @ (A.G  @@ (AG A0j(AG (4E  AĀAሀ  @ ((P AĀAሀ    A Aj"(! A6P Aj AjA (!A! A;P Aj AjA  A A!@ (A(G A!  A A! Aj(!A! A;P Aj AjA A6 Aj! Aj! @ (!@@@@@@@@@ ("AG" @ E A! @ ("A(G A!   AG   @ AG  A!@ (AN A! A!  AŀAሀA! A(G A! E  @ E A! A! @ E A! !  A! A!A!@ ("AH @@@@@@@ ( j" -"A~j  @ Aj  A:A!A!  A: Aj (Aj6 Aj(! AA! (!@ AH Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A (!  6P Aj AjA ("( Alj Aj(6 Aj!@ ( (F A  (6P  AjA  (6  Aj(6 AA!A! AH  ("Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A (!  6P Aj AjA ("( Alj Aj(6  A:A!A!  A:A!A!  A: Aj (Aj6 Aj(! AA! (!@ AH Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A (!  6P Aj AjA ("( Alj Aj(6 Aj!@ ( (F A  (6P  AjA  (6  Aj(6 AA!A! AH  ("Aj!@ ( (F A  (6P  AjA  (6  Aj(6 A (!  6P Aj AjA ("( Alj Aj(6  @  A1!  Aj(A  @ B AuI " (Aj6 B! Aj  @ ("AbjAdK AĀAᇀ   (ApqA AtkAqr6  @ B AuI " (Aj6 @@ Aj  ("AI  AŀAᇀ B!   (Axq r6  @ B AuI " (Aj6 ꇀ!  (Awq AGAtr6  @ B AuI " (Aj6 ꇀ A6 B0! Aj$  #Ak"$@@@ BpT "/A#G ( "   Aj(" Aj (DAj(6 Aŀ ܆B!  A6B0! Aj$  L~@ ("AL  B~ "B| BBV AA Aj(AvA?q"k A?F ~~#Ak"$ )!@ )"B AuI " (Aj6 B!@   @ )"B||B|V AŀAᇀ  A6 A!@@ AH )" BpB0Q @ B AuI " (Aj6 A j   ( "AbjAeI A AtkAqAr! )! )! Aj 6 > B0B0AAA߆! 7  AĀAᇀ Aj$  ~@ BpB~Q @ BpT "/A$G ) "BpB~Q  AŀA܆B " (Aj6 A͇!  ("Aj6@ AJ ( ㆀ  @ BpB~R " (Aj6  @ BpT "/A$G ) "BpB~R " (Aj6  AŀA܆B ~#Ak"$@@ BpB~Q @ BpT "/A$G ) "BpB~Q  AŀA܆B!  " (Aj6@ )"BpB0R A͇!  ("Aj6 AJ  ( ㆀ  @ B AuI " (Aj6 @ Aj  @ )"B||B|V AĀAᇀ  A!@ AH )򋀀"AH  )!   މ!  ("Aj6 AJ  ( ㆀ   ("Aj6B! AJ ( ㆀ Aj$  #Ak"$@@ A j Ać" A!  @@  ( G @ Aŀ A!  @ Aŀ A!  @ Aŀ A!  @ Aŀ A!  @ Aŀ A!  Aŀ A!  A! Apj" ("Aj6@ AJ ( Bㆀ AŀA܆  Apj" ("Aj6 AJ ( Bㆀ Aj$  ~#Ak"$@@ BpB~Q @ BpT "/A$G ) "BpB~Q  AŀA܆B!  " (Aj6@ )"B AuI " (Aj6 @ Aj  @ )"BT AĀAᇀ  A!@ AH )򋀀"AH  Ar! )!   މ!  ("Aj6 AJ  ( ㆀ   ("Aj6B! AJ ( ㆀ Aj$  ~#Ak"$@@ BpB~Q @ BpT "/A$G ) "BpB~Q  AŀA܆B!  " (Aj6@ )"B AuI " (Aj6 @ Aj  @@ 5B B0R AAމ!  @ )"BT AĀAᇀ  A!@ AH )򋀀"AH  Ar! )!  Aj މ!  ("Aj6 AJ  ( ㆀ   ("Aj6B! AJ ( ㆀ Aj$  ~~~#Ak"$@ )"B AuI " (Aj6 @@ A"Bp" B~Q B!@ BR !  AŀA܆ B AuI  " ("Aj6 AJ  ( ㆀ  !A! B0!@@@@@@@@@@@@@@ A}j @ )"B AuI " (Aj6 @ A"Bp" B~Q BR   ("Aj6 AJ  ( ㆀ  Aj! @@AA A}jA}q" H B! A!  @  Atj)" BoV AĀA܆  A A" BpBQ  򋀀!@ B AuI " ("Aj6 AJ ( ㆀ AH  A A" Bp"BQ B! @@@@ B0Q Aj   )" B||B|T  A A" Bp" B0Q  BQ @ B0Q  AĀA܆  Aj   )" BT  AŀA܆  B0R  AĀA܆  Ar! @ ("AjA (" ("-  A: AĀAĆ A:  Aj! A6 ( Aj"  A}j  AŀA܆  ("Aj6@ AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ  !   !   !   A!   !  "A q  !  Ő  !  ("Aj6@ AJ ( ㆀ !@ B AuI " ("Aj6 AJ ( ㆀ B~! A'qE   ("Aj6@ AJ ( ㆀ @ A qE B! ("-  A: AĀAĆ A:  AŀAŀAĀ Aq Aq6 Aŀ ᇀ B! Aj$  ~~@ BoV AĀA܆B @@@@ A8 A"BpB0R ("(,AM @ (8"(")"B@BQ BBR (!  (Aj6 B!  A͇! B AuI " ("Aj6 AJ ( ㆀ B!@ Bp"BQ @@ A4 A"BpB0R ("(,A/M  (8(" (Aj6 B!  A͇! B AuI " ("Aj6 AJ ( ㆀ B!@ Bp" BR B AuI  " ("Aj6 AJ  ( ㆀB @@ BR (AqE  @ BR (AqE  Aŀ Aŀ̈!  ҈!  AŀAŀAA߫ŀҐ AŀAŀAA߫ŀҐ ~~@ )"BoV" BpB Q AޮŀA܆B @@@ ("Aj( A "AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B  (Aj6 @ A"BpBQ @ )" BpB0R  @    B AuI " ("Aj6 AJ ( ㆀ B ~#Ak"$@@ BoV AĀA܆A!  A! "BpBQ A j Aj "A! (!@@@@@ AN A!B0!  E  ( Aj!B0! ! @@ B AuI " ("Aj6 AJ ( ㆀ @  ( A"BpBR A!  A!  ( AAL  Aj! Aj" A! ( " E  E  Aj!@@ (" AH (" (8 Atj(" (" Aj6 AJ 熀 Aj! Aj"  B0!A! ( " E  ("Aj ( @ B AuI  ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ Aj$  M~@ )"B "AF @  A~qAG  AĀA܆B 净 J~@ )" )A⇀AN B @ B AuI " (Aj6  ~@ )"BoV AĀA܆B )!B!@ )"E    EAt!@ AH (" (8 Atj(" ("Aj6 AJ 熀 AH @ E AGB " (Aj6 !  ~#A k"$@@  ŠAN A!    )" )" )" ( r!@ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A j$  J~B!@ )" ) @ B AuI " (Aj6 !   )AA  )AA ~@ )"BoV @  B AĀA܆B @@ "/A0F -Aq!  燀"AN B AGB ~@@ )"BoV @ E AĀA܆B B AuI  " (Aj6  @@@ "/A0G @ "AN B     AŀA܆B  -Aq:A! E  AGB  (Aj6  ~~~#A k"$ )!@@@ E @ BoV AĀA܆B!  " (Aj6  "BpBQ  @ )"E B0!@@@ BpT   "AH  E @@@ ("Aj( (()"A BoV" AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 A"BpBQ @@ -AqE @ )" B AuI " (Aj6 A AAH @ )" B AuI " (Aj6 A AAH   @ )" B AuI " (Aj6 A AAH  A 5BBBAAH  A 5BBBAAH  A? 5BBAAH   @ AH (" (8 Atj(" ("Aj6 AJ 熀 @ B AuI " ("Aj6 AJ ( ㆀ !  @ )" B AuI " ("Aj6 AJ ( ㆀ @ )" B AuI " ("Aj6 AJ ( ㆀ @ )" B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ AH (" (8 Atj(" ("Aj6 AJ 熀 @ B AuI " ("Aj6 AJ ( ㆀ B! A j$  ~~#A k"$B!@ )"BpBQ B0!@@@ Aj Aj "A @@@ ("Aj( (()"A BoV" AylAyj" A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀" B!   (Aj6 A"BpBQ Aj! (! @@@ (" E Aj! ! @ (A" BpBQ   7  7   A!@ B AuI " ("Aj6 AJ ( ㆀ @ Bp" B0Q BQ   ( B0B0A!@ B AuI " ("Aj6 AJ ( ㆀ AL  Aj! Aj" E  Aj!@@ (" AH ("(8 Atj(" ("Aj6 AJ  熀 Aj! Aj"  E  ("Aj ( B AuI   ("Aj6 ! AN   @ ("E @ (" E Aj!@@ (" AH ("(8 Atj(" (" Aj6 AJ  熀 Aj! Aj" ("Aj  ( @ B AuI  ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AJ  Aj! !B! ( ㆀ ! A j$  e~ )!@ )"B AuI " (Aj6 @ B AuI " (Aj6  A݆AGB ~B0!@@ )"BpBQ AH  Aj! Aj!@@ )"BBpB0Q "BpBQ   B0Aш  B AuI " ("Aj6 AJ ( ㆀ Aj! Aj"  @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI " ("Aj6 AJ ( ㆀ  ~~#A0k"$B!@ )"BpT B! A,j A(j "A @@@@ (("E (," Aj! ! @ Aj  (" AH @ E @ )" B AuI " (" Aj6 AJ ( ㆀ @ ) " B AuI " (" Aj6 AJ ( ㆀ @ )" B AuI " (" Aj6 AJ ( ㆀ @ (" Aq E  AqE  A!  Aj! Aj" @@ /A0F -Aq!  燀" AH  As! (," E  @ E Aj! @@ (" AH ("(8 Atj(" (" Aj6 AJ  熀 Aj! Aj" ("Aj ( AGB!  Aj! @@ (" AH ("(8 Atj(" (" Aj6 AJ  熀 Aj! Aj" ("Aj ( A0j$  a~A/!@ )"BpT @ "/"A0G A A0 ( -Aq! ((D Alj(! A ~~#Ak"$ )!@@@@@ ("Aj( (()"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"    (Aj6 A"BpBQ @ ALj"BpBQ @ A A" BpBQ  A jȈ" BpBQ @@ ( E @ B AuI " ("Aj6 AJ ( ㆀ    @@@ BoV AĀA܆  B󇀀" BpBQ @ B󇀀" BpBR    AAJ  B AuI  " ("Aj6 AJ  ( ㆀ    A jȈ" BpBR @ BpT AɈ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B! Aj$  ~@ )"BpBQ @ )" B A " !@ AH ("(8 Atj(" ("Aj6 AJ  熀 @ B AuI  ("Aj6 AJ ( ㆀ @ AN B AGB!  ~@@@@ Bp"B0Q B R  A؜ŀA!  AŀA !  @ "BpBR  !@@ BpT A! /"AF @ A0G @ "AJ  ("Aj6B! AJ  ( ㆀB   /! A! Aq" A F @@ A0G ( -!  ((D AqAlj(AG!   A! /"AK A tAqE ((D Alj(! A A!@ B AuI  ("Aj6 AJ ( ㆀ Bp"BQ BQ   A! Aŀ Aŀ̈!  ~@ A9 A"BpBR   B0AAA߆!@ B AuI " ("Aj6 AJ ( ㆀ   @ )" B @@ "BpBR AH  ("(8 Atj(" ("Aj6 AJ   熀  A " !@ AH ("(8 Atj(" ("Aj6 AJ  熀 @ B AuI  ("Aj6 AJ ( ㆀ @ AN B AGB!  ~B!@ )"BpT B! "BpBQ " (Aj6 !@@@ ƈ"Bp"BQ  ! B Q   F  ("Aj6A!@ AJ ! E @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI   ("Aj6 AJ  ( ㆀB @ B AuI  ("Aj6 AJ ( ㆀ @ B AuI  ("Aj6 AJ ( ㆀ B RB!  ~~#A k"$B!@ "BpBQ )"E @@   "AN B!  @  B!  5B!@ )"B AuI " ("Aj6 AJ ( ㆀ B!@ )"B AuI " ("Aj6 AJ ( ㆀ B! )"B AuI " ("Aj6 AJ ( ㆀ AH ("(8 Atj(" ("Aj6 AJ  熀 @ B AuI " ("Aj6 AJ ( ㆀ A j$  k~@ "BpBR  净!@ B AuI " ("Aj6 AJ ( ㆀ  ~B0!@ BBpB0R AĀA܆B @@ BoV BpB R  BB0  A⇀AH!  ~ )! )!B!@ "BpBQ @@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆ B AuI  " ("Aj6 AJ  ( ㆀB @ " B @@ E  B0B0 A!   B0 B0A! @ B AuI " ("Aj6 AJ ( ㆀ @ AH ("(8 Atj(" ("Aj6 AJ  熀 BB0 AH!  ~~#A k"$B!@ "BpBQ )"E @@   "AN B!  @@@ E @@ -Aq B0! )!  ) )" "B AuI " (Aj6 @ B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ )"B AuI  " ("Aj6 AJ  ( ㆀ  ƈ"Bp"B Q  BQ  ("Aj6@ AJ E B!    "AN B!  B0! AH ("(8 Atj(" ("Aj6 AJ  熀 @ B AuI " ("Aj6 AJ ( ㆀ A j$  J@ AJ B0B0AAA߆  )B0 Aj AjA߆ ~~|@@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆B @@@@ ("Aj( )0"A BoV"AylAyj"A Aj(kvAtj("E @@ ( G (, G ( E  ((" A􆀀"    (Aj6 A" BpBQ " -Aq -Aqr:@@ ("Aj A AJ" Aj" AtAj (" ("-  A: AĀAĆ A:  @ B AuI  (Aj6 7@ )"B AuI " (Aj6 6 7@ AI Aq!A!@ AF A j! Aj! A~q!A!@@ )"B AuI " (Aj6 Axj 7 Aj!@ Aj)"B AuI " (Aj6  7 Aj! Aj!  G E @ At" jAj)"B AuI " (Aj6 jAj 7 6 A A0"AH @@@@ E A0 A"BpBQ @ BV A " k J!  @ B AyjAmK D!@ B|" b " "e  ! @@ DfE DAe  !  !@@ DAcE !  Ax!  R  !   A0BB0B0A  B~ B| BBV! A0 B0B0A B AuI " ("Aj6 AJ ( ㆀ @ A8 A"Bp"BQ BQ   A/A! Aŀ Aŀ̈"BpBQ A8 A  B AuI ("Aj6 AJ ( ㆀ B @@@@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆B Aŀ!@ Asj ALj @ ( "/"AqE Aj("E  Aj( Aŀ! AvAqAj"AK AtAȀj(! @@ A8 A"BpB0R ("(,A/M  (8(" (Aj6 B!  AĀ̈ AŀAŀAA߫ŀҐ +B ) 뇀"AGB AH n~B0!@ BpT @@ "/"Asj ALj ( "E Aj-AqE (@A!  h~B0!@ BpT @@ "/"Asj ALj ( "E Aj-AqE Aj5!  h~B0!@ BpT @@ "/"Asj ALj ( "E Aj-AqE Aj5!  ~~#A k"$@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  @ )"B AuI " (Aj6 Aj  )!@ )"BU   |"7 @@@ BS  S  B07  @ BpT "/AG -AqE  A(j5Z @ ($ Atj)"B AuI " (Aj6  7    Aj"AH   B07 @ B AuI " ("Aj6 AJ ( ㆀ )!  B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~~~~#A k"$B!@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ B!  @ )"B AuI " (Aj6 Aj  )! @@@ )"BU  |"7 BS   S   7 Aŀ ᇀ  B! " BpBQ ($!@@@ BpT "/AG -AqE ) A(j5R ($! B! @ )BS !B!@@ )"B AuI " (Aj6  7 Aj! Aj!  )S! B|" ! @ )"B AuI " (Aj6  7 )" W  B|!@  }BP Aj!@ Atj)" B AuI " (Aj6  7 B|!  Q  Aj! Atj!@ Axj!@ )"B AuI " (Aj6  7@ Aj)"B AuI " (Aj6  7 Aj! Aj!  B|" R  B!@@ )BS @   AF  Aj! B|" )S @ )"B AuI " (Aj6  7@ B|" )"Y    Aj"AG B!@  )S !  @ B07 Aj! B|" )S !  @@ B|BV B!  B~ "B| BBV! B0 A0  AAH"!B ! B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ A j$  ~@ BS AТŀAᇀB ($" (Aj6 A!@@ BS BpBQ ("Aj "($ " ( AlAv"  J"At" (! (!@@@  E -  A: AĀAĆ A:   ( !   B! B AuI   ("Aj6 AJ  ( ㆀB  6$ A(j 6 A  k" KAv j6 !  ~~~#Ak"$@@ "BpBQ B!@ B"BpBQ @@@@ AH B!A!@ !@ AH  Atj)! @@ BpT @@@@ A A" Bp" B0Q BQ ꇀ!  /" A0G  ! AH  AF! E @ A0 A" BpBR B7  @ B AuI" " (Aj6 @  " B! @ )" BS B! BT   7 @ " (" Aj6 AJ ( ㆀ  )" |BU  BS B! @  Aj" AH @ E )! @@  |" B|BV B!  B~ " B| BBV!  AAH B|" )S  |!  @ BS AŀA܆  @ B AuI " (Aj6 @@ B|BV B!  B~ " B| BBV!  AAH  B|! Aj" G B|BV  B!  B~ "B| BBV! A0  AAH    AŀA܆ B AuI " (" Aj6 AJ ( ㆀ @ B AuI " (" Aj6 AJ ( ㆀ B! Aj$  #Ak"$  7@@@ BpT @@ /"A0F AF!  "AN B!    B0A Aj!  @ A> A"Bp"BR !  @@@ BpT @ "-AqE @ "  ("Aj6B! AJ  ( ㆀ   F  (Aj6@ )@"B AuI " (Aj6  A݆E  ("Aj6 AJ  ( ㆀ  A A!  ("Aj6@ AJ ( ㆀ Bp"BQ B0  B Q"Bp! B0R  B0A Aj!   A AjAކ! B AuI " ("Aj6 AJ ( ㆀ Aj$  ~~#A0k"$ B07(@@@@@ Aq"E @ B AuI " (Aj6 @@@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆  A j(A j(A j(Aj-E  AŀA܆ B7   A(j4"7 BY   @ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  )! B0! @ AH )! @@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆  B0!@@@@@@@@   B!  B!  @@ )"B|BV B!  B~ "B| BBV!  "BpBR    7  57 A Aj"BpBR   ($" (Aj6 A"BpBQ   B"BpBQ  B!@@ )BS B!@@@@ E   " 7( BpBR     A(j"AH  E  ! @ BT" B~ " B| BBV! BpBQ   7  )("7  7 B0A AjA߆! @ B AuI " ("Aj6 AJ ( ㆀ BpBQ @@@@@@@   ꇀ B! ꇀE B!  ! @  B~ " B| BBV!  AAN    B AAN   ꇀE @ B AuI " (Aj6 @@ B|BV B!  B~ " B| BBV!  AAH  B|!  B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B07( B|" )S @ A F !   7  B7 A Aj"BpBQ   7 AA Aj   @ )(" B AuI " ("Aj6 AJ ( ㆀ B AuI  " ("Aj6 AH   B AuI " ("Aj6 AJ ( ㆀ @ )("B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6B! AJ  ( ㆀ A0j$  ~~#Ak"$@@@ )"BpT "/AkjAqA I  AĀ6 Aŀ ܆B!  @ B0"Bp"BR !  Aj!@ B0R B0   /!   A AJAj ! B AuI " ("Aj6 AJ ( ㆀ Aj$  ~~#Ak"$ B078 B070@@@@@ Aq"E @ B AuI " (Aj6 @@@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆  A j(A j(A j(Aj-E  AŀA܆ B7   A(j4"7 BS   @ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  @@ )" BpT " /"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆  @@@@@ AJ Aq!  B! B!@ )" W    |  A0j"AH  B|! B|! E )0!  B! )"B AuI  " (Aj6  )"BU  AĀA܆    B|B "70B! BpBQ  @@ )" W B! Aq!@ | ! @@@ E   "78 BpBR    A8j"AH  E  @@ B|BV B!  B~ " B| BBV! BpBQ   7  7(  )8"7  7 B0B0A AjA߆!@ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B078 BpBQ @ B AuI " ("Aj6 AJ ( ㆀ ! B|! )" B|" U B AuI  " ("Aj6 AN    70 @ )0"B AuI " ("Aj6 AJ ( ㆀ @ )8"B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6B! AJ  ( ㆀ Aj$  ~~#A k"$@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  B7@@ AJ  )"7  @ )"BpB0Q )!@ B AuI " (Aj6 Aj  @@ )"BU   |"7B! BS  !  W   7  )"7@ AO !  @ )"BpB0R !  @ B AuI " (Aj6 Aj  @@ )"BU   |"7B! BS  !  W   7 ! @ )" Y @@ )"B AuI " (Aj6   AH   )B|"7  )S !  B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~~#A0k"$@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ @@ )" BpT " /"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆  B0! @ AH )! @@ )"B|B A~qAF"" B  "Q BB !B0! @@@ B|BV B!  B~ "B| BBV! BpBQ   󇀀" BpBQ   7  7  7 B0A AjA߆"BpBQ @ ꇀE @@ Aj      !  @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ  |" R @ B AuI " ("Aj6 AJ ( ㆀ B0B AjA}q!  @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B! B AuI " ("Aj6 AJ ( ㆀ A0j$  ~~#A k"$@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  @@ )"BS B! B7@ AH @ )"B AuI " (Aj6 Aj  @@ )"BU   |"7B! BS  !  X   7 ! @ BpT "/AG -AqE  A(j5" Z ($!@@ )"B AuI " (Aj6 @  Atj)"B AuI " (Aj6  A݆! )!    B|"7  S  )Y @   Aj"AH @@  )!  @ )"B AuI " (Aj6  )A݆! )!    B|"7  )S B! @ B AuI " ("Aj6 AJ ( ㆀ @ B|BV B!  B~ "B| BBV!  B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~~#A k"$@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  @@ )"BY B!   B|" 7@@ AN !  @ )"B AuI " (Aj6 Aj  B! @@@ )"BU   |"7 BS  !  S   7 ! BY B!  @   Aj"AH @ E @ )"B AuI " (Aj6  )A݆E )!  B!  )"B|"7 BU @ B AuI " ("Aj6 AJ ( ㆀ @ B|BV B!  B~ "B| BBV!  B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~~~#A k"$@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @  " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  A,! A!B0! @ AH  B0! )"BpB0Q A͇" BpBQ A! "(AG -! AjAjB7 B7  6@@ ("AjA (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 B7 A6  6 @@ )BS @ B󇀀" Bp"B Q B0Q BQ @@  !  @ BB0R A͇! B AuI  " ("Aj6 AJ  ( ㆀ  A:AA芀! Aj   )BS AH! A!B!@@@ @ (" (H Aj Aj   (!  Aj6 ( Aj!@ (E  Atj ;   j :  Aj A (Aq @@ AH B!  B~ " B| BBV! @  󇀀" Bp" B Q B0Q BQ @@  !  @ BB0R A͇! B AuI  " ("Aj6 AJ  ( ㆀ  A:AA芀! Aj   Aj! B|" )S @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ Aj̇!  (("Aj ( ( B AuI " ("Aj6 AJ ( ㆀ B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~B!@ "BpBQ B!@ A A"BpBQ @@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   @ B AuI " ("Aj6 AJ ( ㆀ  !   B0AAA߆!  ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ  ~~#A k"$ B07@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  @@ BpT "/AG -AqE )" A(j("R @ AO !  Aj! At ($"jAxj!A!@ )! )7  7 Aj! Axj!  Aj" I! Aj! !  )! @ BY !  B|!B!@@@   Aj"AH   Aj"AH @@@ E   )AH  E    )AN   E   AAH    )AH  B07   AAN  )"B AuI  " ("Aj6 AJ  ( ㆀ  B|" B|"S !  B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~~#Ak"$B!@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ B!  B! )" BpBQ @@ )" BS B|! " ($!@@ BpT "/AG -AqE A(j5R ($!@@ BPE !  @  Atj)" B AuI " (Aj6  7 Aj! B~|! P  B|! At jAxj!@@ Aj)"B AuI " (Aj6  7@ )"B AuI " (Aj6 Aj 7 Aj! Apj! B~|" BU  !B! @@   AG @@ }BPE !  B! B! @ B07 Aj! B|" R  }! BT  B|!@ B07 A8jB07 A0jB07 A(jB07 A jB07 AjB07 AjB07 AjB07 Aj! Bx|"PE  Aj! B|! Aj! BU! B|! @@ )"B|BV B!  B~ "B| BBV! A0  AAL  !  B AuI ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ Aj$  ~~~#A k"$ B7  6  )"7@@@@ BpB0Q @@ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   A! AŀA܆B0!  A6 A!@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @  " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ A!  @@@ )BY B! A!A!  B! B!A!A!A!@@  I (" Aj   AvjAjApq" Al" (! (! @ E A! -  A:A! AĀAĆ A:  ( ! @ A!  A k"  KAn j! ! A!    Alj" " AH @ E @ 5B B0R B|!  7 A6 Aj! B|" )S  AA Aj@ ( E A!  @ E !B! !A! @@ Aj(" E (" Aj6 AJ ( Bㆀ )!@@  Aj)R B AuI  " (" Aj6 AJ  ( ㆀ    AH  Aj! Aj!  B|"R ("Aj  ( !@ BS B|!@  B0AH  B|! B|"BU @  )S !  @  AAH  B|" )S !  O  k!  Alj!@@ )"B AuI " ("Aj6 AJ ( ㆀ @ Aj("E  (" Aj6 AJ ( Bㆀ Aj! Aj" ("Aj  ( B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~|~#A k"$A!@ ( (!@@@@ (E ) )Q   )7  )7  )B0B0A AjA߆"BpBQ @ BV "Au AGr!  @@ B "AK !  @ AyjAmK B|!   Aj ۆAH  +! Dd Dck!  @ ("  )A͇"BpBQ  "6 @ ("  )A͇"BpBQ   " 6 (!  !   )" )" U  Sk!  A6 A j$  ~~#Ak"$@@ )"BpB0Q @ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆B!  B!@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ B!  B! )" BpBQ @@ )"BS ($!@@ BpT "/AG -AqE  A(j5R ($!B!@@ )"B AuI " (Aj6  7 Aj! Aj! B|" )"S  B!@@   AG B!  )Y @ B07 Aj! B|" )S  Aj! B|" )"S @@ B|BV B!  B~ "B| BBV! A0  AAN B!  "BpBQ @ B AuI " ("Aj6 AJ ( ㆀ !  B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ Aj$  ~~#A0k"$@@@@ "A0 A"BpBR B7 B0!  @ B "AuI " (Aj6 @ A j " B! @ ) " BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ B0!  ) ! @ )" B AuI " (Aj6 Aj  @@@ )" BU  |" 7B! BS  ! W   7 ! @@@@ E @@@  B!  ) }!  ) ! @ )" B AuI " (Aj6 Aj   A~j!B! @ )" BS }" U !   7   ) " 7B0!@ )" BpB0Q Aj B   )! )! }"B BU! A!   7A! ) | }BS AŀA܆  @@ B|BV B!  B~ "B| BBV!  ! @ B AuI " ("Aj6 AJ ( ㆀ @ BpBQ  )" |" 7B!@@ BpZ !  @ "/AF !  @ -Aq !  @ BpZ !  @ "/AF !  @ -Aq !  @ BY !  @ A(j5" S !  ($ Atj!B!@@ )" B AuI " (Aj6 ! @ BT B~ " B| BBV! AAH  B|" |" )" Y  Aj! S @ Y @  A(j"AH @ E )(! ! @ BT B~ " B| BBV! AAH  B|! B|" )S @ BT B~ "B| BBV! A0  AAH E  ) " " | )"}! @  Q  )" | |" }AA  SAH  ) !@  W   B|"AAN  @ E Aj!B!@  )|! @ )" B AuI " (Aj6  AH  Aj! B|"R @@ B|BV B!  B~ "B| BBV! A0  AAN  ! @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6 AJ  ( ㆀ   A0j$ ~~~~#A k"$B!@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ B!  B! B7@@ AH )! @ )"B AuI " (Aj6 Aj  @@@ )"BU   |"7B! BS  !  W   7 !  ) }" 7@ AO !  @ )"B AuI " (Aj6 Aj  B! @ )"BS !  W   7 !  B7 @ ) A~jA AJ"" | }" BS AТŀA܆  B! " BpBQ @ BY !  " ($" Atj! @@@@ BpT "/AG -AqE ) A(j5R ($!B! )BS  !@@ )"B AuI " (Aj6  7 Aj! Aj! B|" )Y  B!@@ )BS @   AF  Aj! B|" )S @ E B!@@ AG A!  Aj! B!A!@@ Axj)" B AuI " (Aj6  7@ )" B AuI " (Aj6 Aj 7 Aj! Aj! Aj! B~|"BR P @  Atj)" B AuI " (Aj6  7 Aj! ) |" )Y @   AF  Aj! B|" )S   F @ B07 Aj" G  @ E B!@@ AG A!  Aj! B! A!@@ Axj)"B AuI " (Aj6  7@ )"B AuI " (Aj6 Aj 7 Aj! Aj! Aj! B~|" BR P @  Atj)"B AuI " (Aj6  7 Aj! ) |" )Y  Atj!@@ )"B AuI " (Aj6  7 Aj! Aj! B|" )S  G @@ B|BV B!  B~ "B| BBV! A0  AAH !  B AuI ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ A j$  AĀAŀAAŀҐ ~~#A k"$@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B!@ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  )!@ )"B AuI " (Aj6 Aj  @@@ )"BU   |"7B! BS  !  W   7 )!@ )"B AuI " (Aj6 Aj  @@@ )"BU   |"7B! BS  !  W   7 !  )" 7@@ AN !  @ )"BpB0R !   B   )! )! )!  )"  }" }" S" AA  |SA  S !  B! B AuI " ("Aj6 AJ ( ㆀ A j$  ~~#Ak"$@@@@@@@ "A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ B0!   A6 E  )!B0! @ AH )! @ BpT "/"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆ B0!  @ AN B0!B0!  B0!B0! )" BpB0Q @ B AuI " (Aj6 B0!B0! Aj AH  @ B" BpBR !  @  )B (  BY !  B AuI  " ("Aj6 AN   @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6B! ! AJ  ( ㆀ Aj$ ~~~#A0k"$@ BS Aj! Bp! AH! B! @ ! B!  A(j"AH @@@  !  @ B0Q  )(7 !@ BT B~ "B| BBV!  7  7   B0A A߆"7(@ )"B AuI " ("Aj6 AJ ( ㆀ @ )"B AuI " ("Aj6 AJ ( ㆀ BpBQ  @ )("BpT @@ "/"A0F AF!  "AH  E @ A0 A"BpBR B7  @ B AuI" " (Aj6 @ A j " B!@ ) "BS B! BT   7 @  " ("Aj6 AJ ( ㆀ AH    ) B0B0" BS   ("Aj6@ AL !  ( ㆀ !  @ BS AФŀA܆ )(!  )(!@@ B|BV B!  B~ "B| BBV!   AAH  B|!  B|" R   B AuI " ("Aj6 AJ ( ㆀ A0j$  ~~#Ak"$@@    Aކ"BpBR !  @@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆  @ A j(A j(A j(Aj-E AŀA܆  A(j("AH @ AF !  @ )"B "AuI " (Aj6 @ Aj " B!@ )"BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  @ ) U !  AŀA܆ B! B AuI " ("Aj6 AJ ( ㆀ Aj$  ~A!@ )"BpT @ /"A0G @@ ( "E  -  )"BpT  /"A0F AF!  AĀA܆B AF! B ~~~#A k"$ )!A!@@@ AN B0!B0!  B0! )"BpB0Q @@ BpT " /"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆B!  A! AI )! @@@@@@@@@ A A" Bp" B0Q BQ @ B AuI " ("Aj6 AJ ( ㆀ @@ BpT -AqE  AAAކ!  ($" (Aj6 A! B0! @ BpBR B0! B0!  @@ B AuI " (Aj6 ALj"BpBQ   ("Aj6 AJ  ( ㆀ  ALj"BpBR  B0! !  B! B0! @ " BpBR B0!  B! @ A0 A"BpBR B7B0!  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ @ AN B! B0!  @@ )" B|BV B!  B~ " B| BBV!  7@@ BpT -AqE  A AjAކ!  B0A Aj! @ B AuI " ("Aj6 AJ ( ㆀ B0! @ BpBR B0!  @ )BY B0!B!B0!  @@  B!B0! @@ "BpBR B0!  B"7  7  B0A AjA߆! @ B AuI " ("Aj6 AJ ( ㆀ @ BpBR B0! @ BT B~ "B| BBV! @  AAN B0! B|" )S  B!@B0! @ "BpBR B0! !@ BT B~ "B| BBV! @  AAN B0! B|" )S B0! B0!  @ A A" BpBR B0!   AjȈ" BpBQ @  B!B0! @ (   B"7  7  B0A AjA߆!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ @ BT B~ " B| BBV!  AAH  B|!  AjȈ" BpBR  B!@@ (E B0!  ! @ BT B~ " B| BBV! AAH  B|!  AjȈ" BpBQ  "AH  B!  B~ "B| BBV! A0  AAN   B0! BpB0Q AɈ @ B AuI " ("Aj6 AJ ( ㆀ B! @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A j$ ~~#Ak"$@@ BpT -AqE  7  A AjAކ!  ($" (Aj6 A! B!@ BpBQ @@ AH !B!@@ )" B AuI " (Aj6   AAH  Aj!  B|"R @@ AH !  B~ "B| BBV! A0  AAL !  B AuI " ("Aj6 AJ ( ㆀ Aj$  ~~#Ak"$B!@ A )Ać"E @ )"B AuI " (Aj6 @ Aj E Apj" ("Aj6 AJ  ( Bㆀ  @@ (" E B~! A[jA]I  !@@@ ,"AH @ Aq"AwjAI A G  Aj!  A A jE  ( ! A AA! Apj" ("Aj6 AJ ( Bㆀ Aj$  ~#Ak"$@@ A )Ać" B!  !@@@ ,"AH @ Aq"AwjAI A G  Aj!  A A jE  ( ! AA AA! Apj" ("Aj6 AJ ( Bㆀ Aj$  ~|#Ak"$@@@@ )"B "AuI " (Aj6  @ AK !  AyjAmK B|!  @ Aj ۆE B!  +!  bB! Aj$  ~|#Ak"$@@@@ )"B "AuI " (Aj6  @ AK !  AyjAmK B|!  @ Aj ۆE B!  +! DcB! Aj$  ~~#A k"$@ )A͇"BpBQ AjAjB7 B7  6@@ ("AjA (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 B7 A6  6 @ ")"BP Aj! A! @@@ BP Atj/!  j-! @@@@@ A%G @  "AH Aj! @ AK  A% Aŀ A " ! Aj !  @@@ A`qAG A! A! A!  @ ApqAG A! A! A!  AxqAG A! A! A! Aj!  q!@ !  "AH  AqAG  A?q At"r! Aj! Aj" AK  H AJ AqAG  AŀA @ B AuI  ("Aj6 AJ ( ㆀ (("Aj ( (B!  Aj!  AI @ Aj A vAjˇE !  AqAr! ! @ (" (N @ (E ( AtjAj ;  Aj6  AK ( jAj :  Aj6  Aj  )"AqH @ B AuI  ("Aj6 AJ ( ㆀ Aj̇! A j$  ~Aŀ!@@ )"Aq" L Aj!@@ BP"  Atj/!   j-! A%G AĀ! Aj N Aj!@@@@   Atj/"APj"A I  AjAK  AIj!  @  j-"APj"A I @ AjAI AjAzI  Aj!  AIj!  jAj-"APj"A I @ AjAI AjAzI  Aj!  AIj!  AjAzI  Aj! At jAj/"APj"A I @ AjAI AjAzI  Aj!  AIj!  Atr"AJ  AA!  ~#Ak"$  6 A!@ ("- A! ("E )"BpT @@ "/"Asj ALj ( E! A   ɇ Aj$ ~~#A k"$@ )A͇"BpBQ B7 A6  6 (!  ")"Aq" 6@@ Aj Aj (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 A6  B7  6 @@ )"Aq" E Aj! A! @ Aj! @@@@ B"BR j-!  Atj/"AK  @ APjA I AqAjAI Aŀ A   Aŀ A E  @ (" (N  Aj6 ( Aj! @ (E Atj ;  j :  Aj   @@ Aq" AF AG Aŀ!  A҆ŀ! N @@ P Atj/!  j-! AqAG  Aj! A t jAȀej! @ AJ Aj   @@ AK AvAr!  @@ AK A vAr!  Aj AvAr A vA?qAr! Aj  AvA?qAr! Aj  Aj A?qAr " )"Aq" H @ B AuI  ("Aj6 AJ ( ㆀ Aj̇!  A@ B AuI  ("Aj6 AJ ( ㆀ (("Aj ( (B! A j$  #Ak"$ A%: A!@ AH A:  AvAqAŀj-:  A vAqAŀj-: A! A j j"Aj AqAŀj-:  AvAqAŀj-:@@ ( Ar"j" ( L A  @@ (E ( (AtjAj - ; (At (jAj - ; AF  (At (jAj - ; AF  (At (jAj - ; (At (jAj -; (At (jAj -;  ( (jAj A j  ( j6 Aj$ ~~#A k"$@ )A͇"BpBQ B7 A6  6 (!  ")"Aq"6@@ Aj Aj (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 A6  B7  6 @ (Aq" E Aj! Aj"! @@@@@ -Aq -!  /"AK  AȀ AE @ (" (N  Aj6 ( Aj! @ (E Atj ;  j :  Aj   Aj  Aj! Aj! Aj" @ B AuI  ("Aj6 AJ ( ㆀ Aj̇! A j$  ~~#A k"$@ )A͇"BpBQ AjAjB7 B7  6@@ ("AjA (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 B7 A6  6 @ "(Aq"E Aj!A!@@@ )B" P"  Atj/!   j-! @ A%G @ Aj J Aj! @@@@@@ BR  j-AG   j" Aj-" APj" A I  AjAI  AjAzI  Aj!   Atj/AG  At j" Aj/" APj" A I  AjAK  AIj!  AIj! @ Aj-"APj" A I @ AjAI AjAzI  Aj!  AIj! @ Aj-"APj"A I @ AjAI AjAzI  Aj!  AIj!  At Atrr! Aj-" APj" A I @ AjAI AjAzI  Aj!  AIj!  AjAzI  Aj! @ Aj/"APj" A I @ AjAI AjAzI  Aj!  AIj! @ Aj/"APj"A I @ AjAI AjAzI  Aj!  AIj!  At Atrr! A j/" APj" A I @ AjAI AjAzI  Aj!  AIj! Atr" AH Aj!  A%! Aj J Aj! @@@@  Atj/" APj" A I  AjAK  AIj!  @  j-" APj" A I @ AjAI A! AjAzI  Aj!  AIj! @  jAj-" APj" A I @ AjAI A! AjAzI  Aj!  AIj! Atr!  A! AjAzI  Aj! @ At jAj/" APj" A I @ AjAI A! AjAzI  Aj!  AIj! Atr! Aj  AJ" ! A% ! @@ (" (N @ (E ( AtjAj ;  Aj6  AK ( jAj :  Aj6  Aj  Aj" H @ B AuI  ("Aj6 AJ ( ㆀ Aj̇! A j$  ~|#Ak"$@@ B "E A jAK @ BpT "/AG ) "B "E  A jAK  AŀA܆B!  @ BpBR !  @@ B "AK  9  @ AyjAmK  B|7  B!  ۆ  @ )"B AuI " (Aj6 B! A j  @ +"Dc B~ "B| BBV"A͇! B AuI  " ("Aj6 AJ  ( ㆀ  @@ 5B B0R A!A!  @ ( "AI AĀAᇀ  Aj!A! Aj A   Aj Aj! Aj$  ~|#Ak"$@@ B "E A jAK @ BpT "/AG ) "B "E  A jAK  AŀA܆B!  @ BpBR !  @@ B "AK  9  @ AyjAmK  B|7  B!  ۆ  @ )"B AuI " (Aj6 B! A j  @ ( "AI AĀAᇀ  @ +"DPKDfE B~ "B| BBV!  A A! Aj$  ~|#Ak"$@@ B "E A jAK @ BpT "/AG ) "B "E  A jAK  AŀA܆B!  @ BpBR !  @@ B "AK  9  @ AyjAmK  B|7  B!  ۆ  @@@ )"BpB0R )!  @ B AuI " (Aj6 B! A j   +"Dc  ! B~ B| BBV"A͇! B AuI  " ("Aj6 AJ  ( ㆀ  @ ( "AjAK AĀAᇀ  A A! Aj$  ~~||#Ak"$@@ B "E A jAK @ BpT "/AG ) "B "E  A jAK  AŀA܆B!  @ BpBR !  A !@  )"BpB0Q @ B AuI " (Aj6 @ Aj  ("A[jA\K  AŀAᇀ B! B AuI  " ("Aj6 AJ  ( ㆀ  @ BV A:U " B?" }! B ! Aj!@@ A G @ Aj"  B "B ~}A0r: B T! ! E  !@ Aj"   " ~}Aǀj-:  Z! !  @ BpU Aj"A-:  !  @@ B "AK  9  @ AyjAmK  B|7  B! Aj ۆ  +! @ A G Aj A AA Aj Aj!  @ " Dc AA!  A: Aj!@@@@ " D?Ce "f  !  !@@ DCcE !  B! ! @@ Y !  ! @ Aj" " ~}Aǀj-: !  Y Aj" Aǀj-: Da  A.: Aj! "񐀀!@ BU DȐ@! @@@ " "DAcE !  Ax!  Aǀj-: Aj! " Da  ~ |" BU  " Dd A:@@  Avf Aj!  @ Aj"-" Aǀj-"G @ A: Aj"-" F Aj! @ A.G A:@ Aj- F !  A~j!@ AjA0: -! Aj"!  F Aj! @  G A~j"A1:  Aj" -Aj:  @@ -"A0G  A: Aj! A.G  A:  @ " D?Cf!@@ ꐀ" DAcE !  Ax! Aj"A  Aǀj-: ! f Aj!@@ DAcE !  Ax!  Aǀj-: AjA-:  Dck!  ! Aj$  m@ B "E A jAK @ BpT "/AG ) "B "E  A jAK  AŀA܆B!  ~~|#Ak"$ )"B "A j!@@ E B! AI  @@ AK !  @ AI B|!  @ Aj ۆE B!  +!  bB! Aj$  ~~|#Ak"$ )"B "A j!@@ E B! AI  @@ AK !  @ AI B|!  @ Aj ۆE B!  +! DcB! Aj$  ~~|#Ak"$ )"B "A j!@@ E B! AI  @@@ AK !  @ AI B|!  Aj ۆ  +! Dc  aqB!  B! Aj$  ~~|#Ak"$ )"B "A j!@@ E B! AI  @@ AK !  @ AI B|!  @ Aj ۆE B!  +! " D?Ce Dc  aqqB! Aj$  @@@ B Aj "/AG ) "BpBQ  AŀA܆B @ BpBQ AA A!  \@@@ B Aj "/AG ) "BpBQ  AŀA܆B!  ~#A k"$  6  6 B7 A6@@ ("Aj Aj (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 A6  Aq7  6 @@ AH @@ )"B AuI " (Aj6 @@ Aj  /!@ (" (N @ (E ( AtjAj ;  Aj6  AK ( jAj :  Aj6  Aj E  (("Aj ( (B!  Aj! Aj" Aj̇! A j$  ~|#A k"$  6  6 B7 A6@@@ ("Aj Aj (" @ ("- A: AĀAĆ A: A6  A6 A6  Aq7  6@@ AH @@@ )"BV "AM   @@@ B "AuI " (Aj6  @ AK  "9  AyjAmK  B|"7 !  Aj ۆ  +! DfE  D0Ad @@ DAcE !  Ax!  b  @ AI  A vAjˇ  AqAr! @@ (" ( N @ (E ( AtjAj ;  Aj6  AK ( jAj :  Aj6     Aj! Aj" ̇!  AĀAᇀ (("Aj ( (B! A j$  ~~#A k"$ AjAjB7 B7  6@@ ("AjA (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 B7 A6  6 B0!@@ )"BpBQ A A"!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ @ A0 A"BpBR B7  @ B "AuI " (Aj6 @  " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ AH @ )BS Aj! ! B!@  " " A͇!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ  Aj  B|!@ )" B|Y  Y Aj )  )! Aj!  S @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ Aj̇!  @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ (("Aj ( (B! A j$  ~#Ak"$@@@ B`B R A˙ŀA܆B!  @ A͇"BpBR !  @ )"B AuI " (Aj6 !@ A j E B! B AuI   ("Aj6 AJ  ( ㆀ  ( !@ E AJ (Aq j! @@@ AH  )"AqI  B0!   ("(,A/M  (8(" (Aj6 B!  Aj!@@ BP  Atj/!   j-! ("AjA (!@ AqAK @  B! ("-  A: AĀAĆ A:  A:  : A6 B7 A6 B!  @  B! ("-  A: AĀAĆ A:   ; A6 B7 A6 B! B AuI  ("Aj6 AJ ( ㆀ Aj$  AŀAŀAA߫ŀҐ ~~#Ak"$@@ B`B R A˙ŀA܆B!  @ A͇"BpBR !  @ )"B AuI " (Aj6 !@ A j E B! B AuI   ("Aj6 AJ  ( ㆀ  B~!@ ( "AH  )"AqO Aj!@ BP  Atj3!   j1! B AuI  ("Aj6 AJ ( ㆀ Aj$  ~@ B`B R A˙ŀA܆B A͇!@ AH BpBQ A!@@ )"B AuI " (Aj6  ҈!  N  Aj! Aj! BpBR  ~~#Ak"$@@ B`B R A˙ŀA܆B!  @ A͇"BpBR !  @ )"B AuI " (Aj6 !@ A j E B! B AuI   ("Aj6 AJ  ( ㆀ  B0!@ ( "AH  )"Aq"O Aj! @@ BP Atj/" AqAG  Aj" O  Atj/"AqAG  A t jAȀej!  j-! ! B AuI  ("Aj6 AJ ( ㆀ Aj$  ~@ B`B R A˙ŀA܆B B!@ A͇"BpBQ @@ ")"BP Aq"E Aj!A!@@@  Atj/" AqAF !  AqAG  Aj" N   Atj/AqAG  Aj" H A! @ B AuI  (" Aj6 AJ ( ㆀ AvB!  ~~@ B`B R A˙ŀA܆B B!@ A͇"BpBQ @ ")"BPE  @ "Aq"  Aj!A! @@@@  Atj/" AqAF !  AqAG  Aj" N   Atj/AqAG  Aj" H  @ AN  @@ (" Aj At"Aj (" B! (" -  A: AĀAĆ A:  A6 A6 BB7 Aj   B! @ B AuI  (" Aj6 AJ ( ㆀ B! BpBQ @ ")"Aq"O Aj!@@@  Atj"/" AqAG @ AqAG Aj" N  Atj/AqAF  A; )! ! Aj" Aq"H !  ~~|#Ak"$@@ B`B R A˙ŀA܆B!  A͇"BpBQ @@@ )A͇"BpBQ "(Aq! " (Aq! @@@ E k!A! A! @ AN !  @ )"B "AuI " (Aj6  @ AK !  AyjAmK  B|!  A! A6 @ AH @ )"B AuI " (Aj6 A j  A!@ ( " AH ! M  ! k! A!   ۆ  +!  a  !  @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6 AJ  ( ㆀ  A! De !  cE @ DAcE !  Ax! A!@ I k lAH @  !  Aj! )B!@@@ Aj-Aq P  jAj!@ ! ! !@@ / -G  Aj! Aj! Aj" !  F   j! j! @@ P At! At jAj! !  At! At jAj!@ ! ! !@@ / -G  Aj! Aj! Aj" !  F   j! j! @ ! ! !@@ / /G  Aj! Aj! Aj"E   F   j!  j! jAj!@ ! ! !@@ - -F F   j! j!  Aj! Aj! Aj" !  A! @ B AuI ("Aj6 AJ ( ㆀ @ B AuI  ("Aj6 AJ ( ㆀ ! Aj$  ~#Ak"$@@ B`B R A˙ŀA܆B!  @ A͇"BpBR !  @@@@@@@@ )"BpT B0!@@ A A"Bp" B0Q BQ  ꇀ!  /AF!  )! A͇"BpBQ   " (Aq" A AF6 " (! @ AH )"BpB0Q A j A A  Aq"k!  AH AŀA܆ @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6 AJ  ( ㆀ  ( !  ( " J!B! ! E   ( k" ! B! AH J @ E Aj! )B! @@ Aj-Aq P  jAj!@ ! ! !@@ / -G  Aj! Aj! Aj"  Aj! F! Aj! E  @ P At jAj!@ ! ! !@@ / /F Aj! G! Aj!    Aj! Aj! Aj"  At jAj!@ ! ! !@@ / -G  Aj! Aj! Aj"  Aj! F! Aj! E  jAj!@ ! ! !@@ - -F Aj! F! Aj! E   Aj! Aj! Aj" B! @ B AuI ("Aj6 AJ ( ㆀ B AuI ("Aj6 AJ ( ㆀ Aj$  ~#A0k"$  7(@@ BBpB0R AĀA܆B!  @ )"BBpB0Q B!   A"Bp" BQ @ AG ٌAJ   BB0Q  A A(j쇀!   A͇"7B! BpBQ  7@@@@ AF A!B0!  AŀA"BpBQ   7A! )H"  AjAކ! @ B AuI " ("Aj6 AJ ( ㆀ BpBR  B AuI  " ("Aj6 AJ  ( ㆀ  A Aj芀! ) A0j$  ~A!@ BpT A! A A"Bp"BQ @@ B0R /AF!  ꇀ"AH  @  A AĀ!@ A A"Bp"B Q B0Q BQ  A͇!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ A! AA!  AJ Aԧŀ! A܆A!  ~~~#Ak"$@@ BBpB0R AĀA܆B!  )!@ )"Bp"BB0Q A A" Bp"B Q B0Q BQ   7  7 A 쇀!  B0! @@ A͇"BpBQ ($" (Aj6B0! @ A"BpBQ @@ BpB0R A6  @ B AuI " (Aj6  AN B0!  ")! A͇" BpBQ (" E A! B! @ B0Q " )B!@ B"P  } P"}" S  B|!B! !A! B! @  ی" AH   " BpBQ    AAH   Q  B|! Aj!  |" |" U  P   Aq"BpBQ  AAN  B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B! B AuI  " ("Aj6 AJ  ( ㆀ    Aj$  ~~ @ )"Aq"  )"!@@ BP" /!  -! Aq! A! Aj! B!@@@ AI Aj! P  Aj! Aj! Aj!@@  j L A @ J A Atj! !@@  Atj/F  Aj! Aj" G A @ AN A @  j L A ! ! ! !@@  @ /" /"G  Aj! Aj! Aj"  @ /" -"G  Aj! Aj! Aj"E  Aj!  G   j J @@ P L  At jAj!@  /F  Aj! Aj"G  AK  L  Aq!@ j- F  Aj"G  AA   j J AH!  Aj! Aj! Aj! AK!@@  j L A @ E A @ J A j! !@@ jAj- AqF  Aj! Aj"G A @ AN A @  j L A @@  ! !@ /" -"G  Aj! Aj! Aj"  A!@  j-"  j-" G  Aj"G  Aj! G  ~#Ak"$@@ B`B R A˙ŀA܆B!  @ A͇"BpBR !  "(!@ )"B AuI " (Aj6 @@@@ A j  A! @@ ( "AH  Aq" M  !  (Aq"6 )"BpB0R  !  B! B AuI   ("Aj6 AJ  ( ㆀ  @ B AuI " (Aj6 Aj  A! @ ("AH !  M  !     H    J! B AuI   ("Aj6 AJ  ( ㆀ  B! B AuI  ("Aj6 AJ ( ㆀ Aj$  ~#Ak"$@@ B`B R A˙ŀA܆B!  @ A͇"BpBR !  "(!@ )"B AuI " (Aj6 @@@@ A j  Aq!@@@ ( "AJ  j"A AJ!  !  M  !   k"6 )"BpB0R  !  B! B AuI   ("Aj6 AJ  ( ㆀ  @ B AuI " (Aj6 Aj  A! @ ("AH !  L  !    j! B AuI   ("Aj6 AJ  ( ㆀ  B! B AuI  ("Aj6 AJ ( ㆀ Aj$  ~#Ak"$@@ B`B R A˙ŀA܆B!  @ A͇"BpBR !  "(!@ )"B AuI " (Aj6 @@@@@ A j  Aq!@@@ ( "AJ  j"A AJ!  !  M  !  6 )"BpB0Q @ B AuI " (Aj6 Aj   ("AJ   j"A AJ!  B! B AuI   ("Aj6 AJ  ( ㆀ   M  !      J! B AuI   ("Aj6 AJ  ( ㆀ  B! B AuI  ("Aj6 AJ ( ㆀ Aj$  ~~#A k"$@@ B`B R A˙ŀA܆B!  B!@ A͇"BpBQ @ )"B AuI " (Aj6   AĀ!@ )"BV @ ")"" Aq" !  @ " AG !  Aŀ! B ~BV Aj l Av @@ AF E  Aj!@ Aj A  Aj"AK  @@ Aj-AqE /!  -! Aj    Aj̇!  Aᇀ B AuI " ("Aj6 AJ ( ㆀ A j$  @@ ( j" ( L A!    @@ AI Aj!@@ Aj"AN A @@ (" ( N (E Aj6 ( AtjAj ;A!  ! E  Aj!@@ Aj"AN A @ (" ( N Aj6 (Aj!@ (E  Atj ;AE    j :AE   E A!  ~~#Ak"$@@ BBpB0R AĀA܆B!  )!@@@ )"BBpB0Q @ E ٌAH  A A" Bp"B Q B0Q BQ   7(  7 A A j쇀!  AjAjB7 B7  6@@ ("AjA (" @ ("- A: AĀAĆ A: A6 A6 A6  A6 B7 A6  6 B0! @@ A͇"BpBR B0!  A͇"BpBQ @@@@@@ BpT " /"A F @@ A0G ( -!  ((D Alj(AG!   A͇" BpBQ  " Aj! " )B! E  PE A!  ! A!@ " (AqE Aی"AN B0!   70  7  7(B0! B0B0A A jA߆"A͇! @ B AuI " ("Aj6 AJ ( ㆀ BpBQ  Aj! Aj A  Aj  )" Aq j!@ E @@@ BBR  (AqO  Aj!  ی"AH   70  7  7( B0B0A A jA߆"A͇! @ B AuI " ("Aj6 AJ ( ㆀ @ BpBR B0!  Aj   Aj  )" Aq j! B0!  @@ PE A!  Aی"AH   7H B07@ B078  7(  7  70 A j"BpBQ  Aj A  Aj  (Aq j!  Aی"AH   7H B07@ B078  7(  7  70 A j"BpBQ  Aj A @ Aj  )"Aq j!@@ BP ی"AN    (AqO  Aj!  7H B07@ B078  7(  7  70 A j"BpBQ  Aj   Aj  (Aq    Aj̇!  (("Aj ( (@ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B!  (("Aj ( (   Aj$  ~~#A k"$@@ B`B R A˙ŀA܆B!  @ A͇"BpBQ @ )"B AuI " (Aj6 @ Aj  (" " (Aq" L A ! B0!A!@ AH B0! )" BpB0Q A͇"BpBQ @@ ")" Aq   @@ BP /!  -! A! @ AH AŀAᇀ  B7 A6  6  6@@ ("Aj Aj (" ("-  A: AĀAĆ A:  A6 A6  Aq7  6 @@ E Aj A    k!@@ E AH @ Aj A  (Aq"  H"   k"AH  Aj   @  Aj A     Aj̇!  (("Aj ( ( B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ B! A j$  ~@ B`B R A˙ŀA܆B A!@ A͇"BpBR  "(Aq!@ AqE E A! Aj! Aj" ! @@@ -AqE /!  j-! E  Aj!  Aj"G ! @@ Aq !  AtAj! Aj!@ " L @@ -AqE  j/!   jAj-! Aj! A~j!    ! @ B AuI  ("Aj6 AJ ( ㆀ @@@ B Aj " (Aj6  "/AG ) "BpBR " (Aj6  AŀA܆B  ~#Ak"$@@ B`B R A˙ŀA܆B!  B! A͇"BpBQ B!@ )A͇"BpBR B AuI  " ("Aj6 AJ  ( ㆀ  A j A!@ B AuI " ("Aj6 AJ ( ㆀ @ AJ B! B AuI  " ("Aj6 AJ  ( ㆀ  Aj A!@ B AuI " ("Aj6 AJ ( ㆀ ( ! @ AJ ("Aj (B!  (! @@    H" " E ! ! @ ( (k"  Aj! Aj! Aj" AAA   F! ("Aj ( ("Aj ( ! Aj$  ~#A0k"$@@ B`B R A˙ŀA܆B!  A͇"BpBQ ")"Aq"E B7( A6  6$  6@@ (" Aj Aj (" @ ("- A: AĀAĆ A: A6  A6 A6  B7  6@ )"Aq" E Aj! A! Aj! @ "Aj! @@@@ BP @ Atj/" AqAG N Atj/" AqAG  Aj! A t jAȀej!  E  AG @@@ AN A!  Aj!@@ -AqE Atj/" AqAG  AI  A~j"Atj/"AqAG  A tjAȀej!  j-! !  E  !@@  )"Aq"N  Aj! @@@ BP Atj/"AqAG  N  Atj/"AqAG  Aj! A t jAȀej!  j-! !    A6 A!  j-! A j " AH  A j!@@ ("AI Aj A vAjˇ  AqAr! @@ ( " ($N @ ((E ( AtjAj ;  Aj6  AK ( jAj :  Aj6  Aj   Aj! Aj" )"Aq" H  Aj̇!  @ B AuI  ("Aj6 AJ ( ㆀ (("Aj ( (B! A0j$  ~~#A k"$@@ B`B R A˙ŀA܆B!  B! A͇"BpBQ B7 B7  6@@@@ ("AjA (" @ ("- A: AĀAĆ A: A6A! A6 A6  B7 A6 A6  6 (" (H  Aj AjA<  (! ( !  Aj6 Aj!@ (E  AtjA<;   jA<: @@ ( AtAȀj(" " j" (L Aj A  @@ (E AH  Aq! A!@ AF A~q! A!@ (  (jAtjAj j" -;  (jAt ( jAj Aj-; Aj"G E  ( ( jAtjAj j-;  ( (jAj   ( j6 @A= vAq AtAȀj! @@ (" (H Aj AjA   (!  Aj6 ( Aj!@ (E  AtjA ;   jA : @@ ( ("" j" (L Aj AE (!  @@ (E AH  Aq! A!@ AF A~q! A!@ (  (jAtjAj  j" -;  (jAt ( jAj Aj-; Aj"G E  ( ( jAtjAj  j-;  ( (jAj    ( j"6 @@ Aj" (L Aj A  ( Aj! (! @@ (E  AtjA=; (At ( jAjA";   jA;  (Aj6 @@@ )"B`B R A˙ŀA܆  A͇"BpBR  @ B AuI " ("Aj6 AJ ( ㆀ (("Aj ( (  @ " )"BP Aj" !A!@@@ BP /!  j-! (!@@ A"G @ Aj" (L Aj A  ( Aj! (!@@ (E AtjA&; (At ( jAjA; (At ( jAjA; (At ( jAjA; (At ( jAjA; (At ( jAjA;; (!  j" A(ŀ6 AjA/ŀ;  Aj6  @  (N @ (E  Aj6 ( AtjAj ;  AK  Aj6 ( jAj :  Aj  Aj! Aj" )"AqI @ B AuI ("Aj6 AJ ( ㆀ @ (" (H Aj AjA"  (!  Aj6 ( Aj!@ (E AtjA";  jA": @@ (" (H Aj AjA>  (!  Aj6 ( Aj!@ (E AtjA>;  jA>: Aj @@ (Aj" (L Aj AE (!  ( Aj! (!@@ (E  AtjA<; (At ( jAjA/;   jA;  (Aj"6 @@  "j" (L Aj AE (!  @@ (E AH  Aq!A!@ AF A~q! A!@ (  (jAtjAj j"-;  (jAt ( jAj Aj-; Aj"G E  ( ( jAtjAj j-;  ( (jAj   ( j"6 @@  (H Aj AjA>  (!  Aj6 ( Aj!@ (E AtjA>;  jA>: Aj̇! A j$  ~~#Ak"$@@@ BpT "/A-G ( "   Aj(" Aj (DAj(6 Aŀ ܆ A6B!  B0!@@ )"BpB0Q ( " " )" Aq" I @ B AuI (" Aj6 AJ ( ㆀ B07 A6  Aj! Aj!@@@ BP  Atj"/" AqAG  N   Atj/AqAG   Aj6 A6 ("AjA (" B! ("-  A: AĀAĆ A:   j-!  6 A6 ("AjA (!@ AO @  B! ("-  A: AĀAĆ A:  A:  : A6 B7 A6 B!  @  B! ("-  A: AĀAĆ A:   ; A6 B7 A6 B!  A6 B7 A6  (6 B! Aj$  ~||#Ak"$@@  BB{ !  @@ )"BV !@ AH Aj! A! @@ )"BT !   "  J   H ! Aj!  Aj" G !  @@ B "AuI " (Aj6  @@ AK !  AyjAmK  B|! A!  B! Aj ۆ A! +! @ N @ E  k!  Atj!@@@@ )"B " AuI " (Aj6  @ AK  9  AyjAmK  B|7   ۆE B!  @ b @ +" a !  @ Db Db !  Ȑ! Aj! Aj"   k!  Atj!@@@@@ )"B " AtK AI  AyjAmK   B|7  " (Aj6  ۆE B!   9 @ b @ +" a !  @@ Db Da  ǐ!  ! Aj! Aj" @@@ DfE DAe  !  !@@ DAcE !  Ax!  R !  B~ B| BBV! Aj$  ~~@ "B4Aq"AK B!@ BQ AG B?  @ AK B? |BA k"B|B }! 7DD? Dc" Dd r |~~|#Ak"$ B7@@@ AN D!  @@@ )"B "AuI " (Aj6  @ AK  9  AyjAmK  B|7  B! Aj ۆ  +!@ AF Aj! Aj!@@@@ )"B "AuI " (Aj6  @ AK  " 9  AyjAmK  B|"7 !  @  ۆE B!  +! Aj!  됀! Aj"  ! @@@ DfE DAe  !  !@@ DAcE !  Ax!  R !  B~ B| BBV! Aj$  ~ )"B "B "B "7B~ B%~B B?D𿠽"B| BBV  ~~#Ak"$@ )"B AuI " (Aj6 B!@ A j  @ )"B AuI " (Aj6 Aj  ( ( l! Aj$  k~#Ak"$@ )"B AuI " (Aj6 A j ! ( ! Aj$B g   )  AjA ~#Ak"$ )! )"!@@ AH @ )"BpT -Aq  AŀA܆B!  @ A j " B!    ( " Aކ!@ E !@@ )"B AuI " (" Aj6 AJ ( ㆀ Aj! Aj" ("Aj  ( Aj$  ~@ )"BoV AĀA܆B @ )" B A!@ "BpBQ " ! B AuI  ("Aj6 AJ ( ㆀ @ AH ("(8 Atj(" ("Aj6 AJ  熀 @ AN B AGB ~@ )"BoV AĀA܆B )! !@ AH )! @ " B   A!@ AH ("(8 Atj(" ("Aj6 AJ  熀  ~@ )"BoV AĀA܆B B!@ )"E  !@ AH ("(8 Atj(" ("Aj6 AJ  熀 AH AGB!  >~@ )"BoV AĀA܆B AA ~ )"!@ AH )! @ BoV AĀA܆B )!B!@ )"E @ B AuI " (Aj6    A!@ AH ("(8 Atj(" ("Aj6 AJ  熀 AH AGB!  0B ) )A⇀"AGB AH ~#Ak"$@@@@ B Aj "/AG ) "BpBQ  AŀA܆B!   7 " (Aj6@ BpBR !  B0A Aj! B AuI  ("Aj6 AJ ( ㆀ Aj$  @@@ B Aj " (Aj6  "/AG ) "BpBR " (Aj6  AŀA܆B ~@@@ B Aj "/AG ) "BpBQ  AŀA܆B " (Aj6@ BpBR  B0!@ )"AxF @@ BX ( !  ("(8" (4 B ($AjqAtj("Atj(" F @@ E   ( "Atj(" F  AŀAŀAAĀҐ A! @ B AuI  ("Aj6 AJ ( ㆀ  ~B!@ )A͇"BpBQ @ (" Aӆ" ("-  A: AĀAĆ A:B (8 Atj5B!  ~@ )"BpBQ AŀA܆B B0!@ ")B@BR  (Aj6 BB!  ~@@@@@@@@ BpT "/A/F  A6  ( ! A6   AŀA܆  @@@@@ ("Aj  A! ("!  (!@ )"B AuI " (Aj6 @ AF Aj"("Axj 7 !  @ AF Aj"("Axj 7B!  !@ (")" B AuI " ("Aj6 ! AJ  ㆀ (!  7A!  Aj( 冀 B0!@@ Aj )"B AuI  " (Aj6  @ )"B AuI " (Aj6 @ (")" B AuI " ("Aj6 AJ ㆀ 7  AŀA܆ B!   7  Aj6A! ! A6  6@@ ( Aj(!@@  )B0 ( Aj(A߆"Bp" BQ B0R  Aj(Axj")! B07 A6  A8jᆀ  ↀ A6@ (( E Aj( 冀  BZ  Aj(Axj")! B07@ BR A6 A6  A6  AŀAŀAAŀҐ AŀAŀAAĀҐ #Ak"$@@@ BpT "/ G ( "   Aj(" Aj (D Alj(6 Aŀ ܆B!  @ ("AH !  B~ "B| BBV! Aj$  ~~#Ak"$@@@@ BpT "/ G ( "   Aj(" A j (D Alj(6 Aŀ ܆  @ -E AŀA܆  4!@ )"B AuI " (Aj6 B! A j  @@@ ) "BU   |"7 B! BS  !  W   7  7@@ )"BpB0R !  @ B AuI " (Aj6 Aj  @@ )" BU  |" 7B! BS  ! W   7 ! ) !@ B0"Bp" BR !  }" B BU!@@ B0R B0  AA邀AA!  ! @ BT B~ " B| BBV!  7  A AjAކ!  ) BpBQ @ "E Aٌŀ!@  Aŀ! - Aŀ!  4U Aŀ! - ( ( ( j   A܆  B! Aj$ <~B!@ )"BpT /AkjAqA IB!  |#Ak"$@@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆B!  A(j5! Aj$  ~#Ak"$@@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆B!  @ A j(A j(A j(Aj-E AŀA܆B!  @ )"B AuI " (Aj6 B! Aj  A(j5!@ )"BU   |"7 B0! BS  Y  ! Aj$  ~~#Ak"$@@@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆  @ )"B AuI " (Aj6 B! Aj   A(j5! @ )"BU   |"7 @@ BS  S  AĀAᇀ  @ )"B AuI " (Aj6 B! A"BpBQ B!@ B0  /㉀"BpBR B AuI  " ("Aj6 AJ  ( ㆀ  @  ) AL !   B! Aj$  #Ak"$@@@ BpT "/!@ E AqA G   AkjAqA I  AĀAĀ 6 Aŀ ܆B!  ( ( " (Aj6 Bp! Aj$  #Ak"$@@@@ BpT "/!@ E AqA G  A j("A j(A j(Aj-E  AŀA܆B!  AkjAqA I  AĀAĀ 6 Aŀ ܆B!  B! A j("A j(A j(Aj-  5! Aj$  #Ak"$@@@@ BpT "/!@ E AqA G  A j("A j(A j(Aj-E  AŀA܆B!  AkjAqA I  AĀAĀ 6 Aŀ ܆B!  B! A j("A j(A j(Aj-  5! Aj$  ~~~#A k"$B0!@ AH )! @@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆B!  )!@ B AuI " (Aj6 B! Aj  @@@@@@ )BY B0!  B0! A j(A j(A j(Aj-  "BpBQ @ "/AkjAqA K ( "( ( " -  /Aǀj1! A j(" ( ( !  A(j5"7 )" A(j5 }U  / /G  ( (j j ( (j    @ A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ  ) A(j5 )"}W  AТŀAᇀ  BS B!A!@@ AJ B~ "B| BBV!  󇀀"BpBQ @@  (j"AH !  B~ " B| BBV!  AAH  ) Aj""U B0! B AuI   ("Aj6 AJ  ( ㆀ  AŀA܆ B AuI " ("Aj6 AJ ( ㆀ A j$  #Ak"$@@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆B!  @ A j(A j(A j(Aj-E AŀA܆B!     Έ! Aj$  P~B0!@ BpT /"AkjAqA K ((D Alj(A!  ~#Ak"$@@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆B!  @ A j(A j(A j(Aj-E AŀA܆B!  @ A(j("AN B!  @ )"B AuI " (Aj6 @ A j E B!  @@@ ( "AJ  j"A AJ!  !  M  ! @ )"B AuI " (Aj6 @ Aj E B!  @@@ (" AJ j" A AJ!  ! M  !  6 ! @ AH ! )"BpB0Q @ Aj A  E B!  (! @ k"  k"  H"AH @ A j(A j(A j(Aj-E AŀA܆B!  ($"  /Aǀj-"tj  tj  t  (Aj6 Aj$  ~~#A0k"$@@@@ BpT "/"AkjAqA I  AĀ6 Aŀ ܆B!  @ A j(A j(A j(Aj-E AŀA܆B!  B! A(j("AH @@ Aq" AG @ )" B AuI " (Aj6 Aj    47  @ AK @ )" B AuI " (Aj6 Aj    57  @ AqAK @ )" B AuI " (Aj6 Aj "E  Aj A荀@  AjG ("E  ((" E  ( A Aj(  A|j" (" Aj6 AJ  ( B~ㆀ  @@@ )" B " AuI " (Aj6  @ AK  9  AyjAmK  B|7  Aj ۆ  /! @@ AqAG +!  )!  7 A! A6@ AH @ )" B AuI " (Aj6 Aj  @@@ ("AJ  j"A AJ!  !  M  !  6 AI )" BpB0Q @ B AuI " (Aj6 Aj  @ ("AJ  j"A AJ!   K ! @ A j(A j(A j(Aj-E AŀA܆  @@@@@ /Aǀj-  M   Asj!@  kAq"E At!@ ($ j )7 Aj! Aj! Aj" AI  At!  k!@ ($ j )7 ($ jAj )7 ($ jAj )7 ($ jAj )7 A j! A|j"   M   Asj! (!@  kAq"E At!@ ($ j 6 Aj! Aj! Aj" AI  At!  k!@ ($ j 6 ($ jAj 6 ($ jAj 6 ($ jA j 6 Aj! A|j"   M   Asj! /!@  kAq"E At!@ ($ j ; Aj! Aj! Aj" AI  At!  k!@ ($ j ; ($ jAj ; ($ jAj ; ($ jAj ; Aj! A|j"   M ($ j -  k @ B AuI  (Aj6 ! A0j$  Ő ~~#A0k"$@@@@ BpT "/AkjAqA I  AĀ6 Aŀ ܆  @ A j(A j(A j(Aj-E AŀA܆  B! A(j("AH @@ )"BpT " /" A F @@ A0G ( -!  ((D Alj(AG!  AŀA܆  B0! @ AH )! @@ AjA A~qAF" "A  "F AA !@  " 󇀀"BpBQ   7  7  7  B0A AjA߆" BpBQ @ ꇀE @ Aj @ B AuO !  " ("Aj6@ AL !  ( ㆀ !  @ B AuI " (" Aj6 AJ ( ㆀ   j"G B0B AjA}q!  B AuI " ("Aj6 AJ ( ㆀ B! A0j$  ~#Ak"$@@@@ BpT "/"AkjAqA I  AĀ6 Aŀ ܆B!  @ A j(A j(A j(Aj-E AŀA܆B!  @ A(j("AN B!  @ E @@@@ Aǀj- ($" jAj"O @ -! -:  : Aj" Aj"I  ($" AtjA~j"O @ /! /;  ; Aj" A~j"I  ($" AtjA|j"O @ (! (6  6 Aj" A|j"I  ($" AtjAxj"O @ )! )7  7 Aj" Axj"I B AuI  (Aj6 Aj$  Ő ~#Ak"$@@@ BpT /"AkjAqA I  AĀ6 Aŀ ܆B!  B! B0  ㉀"BpBQ   ! B AuI " ("Aj6 AJ ( ㆀ Aj$  ~~~#Ak"$@@@@ BpT "Aj/AkjAqA I  AĀ60 Aŀ A0j܆  @ A j(A j(A j(Aj-E AŀA܆  B! A(j("AH @ )"B AuI " (Aj6 A  "6  6  6 6  A j6 A(j >  6  ( j6$A!   0B , ,k  1 - -k  2B . .k  3 / /k  5  (" ("H  Jk K~@ ("AH  B~ "B| BBV  (" ("I  Kk ~ )!@ Aj(Aj("E B|BV ((AqE @ B|BV B B~ "B| BBV  ~ )" )"S  Uk  ) ~ )" )"T  Vk ;~B~ *"B| BBV u}~ *!@ *" [  [ A!@  \  ] A!  ^ A! C\ !@ AJ B?As B?!  9~B~ )"B| BBV x|~ +!@ +" a  a A!@  b  c A!  d A! Db !@ BU B?As B?!  ~~~#A k"$ )!A!@@@ AN B0!B0!  B0! )"BpB0Q @@ BpT " /"A F @@ A0G ( -!  ((D Alj(AG!   AŀA܆B!  A! AI )! @@@@ A A" Bp" B0Q BQ @ B AuI " ("Aj6 AJ ( ㆀ ($" (Aj6B! @ A" BpBR B0! B0!  @@ B AuI " (Aj6B! ALj" BpBQ   ("Aj6 AJ  ( ㆀ  B! ALj" BpBR  B0! !  B! B0! B0!B0! " BpBQ   B! @ A A" BpBR B0!  B! @ AjȈ"BpBQ B!@@ (E !  !@ BT B~ "B| BBV!  AAH  B|! AjȈ"BpBR BpB0Q  AɈ  B! @@@ A0 A"BpBR B7  @ B "AuI " (Aj6 @ Aj " B! @ )" BS B! BT   7 @ AuI " ("Aj6 AJ ( ㆀ @ AN B!  @@ )" B|BV B!  B~ " B| BBV!  7 A Aj!@ B AuI " ("Aj6 AJ ( ㆀ B! @ BpBQ )BS @@  B!  B!@ " BpBQ    AH  B|" )Y  @ " BpBQ   B7  7  B0A AjA߆!@ B AuI " ("Aj6 AJ ( ㆀ BpBQ    AH  B|" )Y  B AuI " ("Aj6 AJ ( ㆀ !  ! ! @ B AuI " ("Aj6 AJ ( ㆀ @ B AuI " ("Aj6 AJ ( ㆀ B AuI " ("Aj6 AJ ( ㆀ A j$ ~#Ak"$  "7@@ A Aj"BpBR !  @ AN !  B!@@@ )"B AuI " (Aj6   AAL  Aj!  B|"R !  B! B AuI " ("Aj6 AJ ( ㆀ Aj$  ~#Ak"$@@@ BpT "/A G ( "   Aj(" Aj (DAj(6 Aŀ ܆B!  Aǀj-!@ )"B AuI " (Aj6 @@ Aj  )"BT  AĀAᇀ B!  A!@ AH @ )" B AuI " (Aj6 ꇀAG! @ ( ( "-E AŀA܆B!  @ A t| 5X AŀAᇀB!  ( (j j!@@@@@@@@@@@ Ajj  1! /" At Avr B! /" At Avr B!  (" At AqAtr AvAq Avrr !  @ (" At AqAtr AvAq Avrr "AH !  B~ "B| BBV!  )" B8 BB( BB BB BB BB B(B B8 !  )" B8 BB( BB BB BB BB B(B B8 !  B~ (" At AqAtr AvAq Avrr "B| BBV!  B~ )" B8 BB( BB BB BB BB B(B B8 "B| BBV!  Ő 0B! Aj$  ~#Ak"$@@@@ BpT "/A G ( "   Aj(" Aj (DAj(6 Aŀ ܆  Aǀj-!@ )"B AuI " (Aj6 Aj  @ )" BT AĀAᇀ  A6 B7 )! @@ AJ @ B AuI " (Aj6 B! Aj    @ AK @ B AuI " (Aj6 Aj "E  Aj A荀@  AjG ("E  ( " E  ( A Aj(  A|j" (" Aj6 AJ  ( B~ㆀ  @@@ B "AuI " (Aj6  @ AK  9  AyjAmK  B|7  Aj ۆ  @ AG  +8   )7 A!@ AH @ )"B AuI " (Aj6 ꇀE! @ ( ( "-E AŀA܆  @ A t| 5X AŀAᇀ  ( (j j!@@@@@ Ajj  (:B0!  /"At Avr  ;B0!  ("At AqAtr AvAq Avrr  6B0!  )"B8 BB( BB BB BB BB B(B B8  7B0!  Ő B! Aj$  S B7 6 6 A8jA6 A0jB7 A(jB7 A jB7 AjB7 AjB7  @ (8"E A!@A!A!@@  Alj Alj"A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 @ A j"("E ("( A Aj( A6 A! Aq!A!  Aj"AG ( A Aj( A68 Aj!@ ("E Aj("E ( A Aj( B7 AjB7 AjB7 A j!@ ( "E A0j("E ( A Aj( B7 AjB7 AjB7 B7 B7  6 _A!@ ( F ("( ( At Aj(!@ E A! E  6 6A!  A! A6@@ BR Ax6 ( E  ("( (A Aj(! A6 6A ( !@@ BV @@ AG (!  ("( (A Aj("E  A6 6   g"> A k6A @@ AG (!  ("( (A Aj("E  A6 6  " B "g"t6   t Av Asvr6 A k6A @ ( E ("( (A Aj(! A6 6 B7A !  O@ ( E ("( (A Aj(! A6 6 B7 1@ BU B }! A6   Q@ ( E ("( (A Aj(! A6 6 6 Ax6 Q@ ( E ("( (A Aj(! A6 6 6 A6 A!@ F @@ ( ( "F ("( ( At Aj(!@ E E  6 6 ( ! )7 At"E  ( ( A @ ( E ("( (A Aj(! A6 6 B7A !    ( "At!A`! !@@ E  A j! Aj! A|j" ("j"(E ( k6 Aj! @ (g"E Aq! A k!A! A!@ AI A|q! A! !A!@  (" t  vr6 Aj" (" t  vr6 Aj" (" t  vr6 A j" (" t  vr6 Aj! Aj" G @ E Aq!  Atj!@   v (" tr6 Aj! Aj" ( k6   A Ax6@  A ("( (A Aj(! A6 6A  AAAA AvA?q"kt A?F"k!@@@ AqE A! AF  ( j!  ! (" N ! AqE AF  A}j j j! At! A! A! @ Aq" AF A! @A~ A AJk" j" AN A!  A! A! ( Av" Atj"(AA~ tAs AqAFq Aj! A|j! @A! Aj"AJ! AH  (! A|j! E A! A! (!A!@ As"j"AH A! Au" O  Atj( vAq!  r! @@@@@@  ! Er A! k"AH  Au" O   Atj( vAq!  !  !  Ő A ( AFF! Ar  ! @@@ AJ E @ ( AF @ ("( A Aj(" (!  A6 6 Ax6 ( kAj6 Ar @ E @ k"Au" O  Atj" (" A tj"6  O  Aj F As j! At jAj!@  (Aj" 6  Aj! Aj" @ Aj" H A!  k"Aq!@ AsA kF A~q! At jAxj!A! @ Aj" At (" Avr6  At (" Avr6 Axj! A~j! A~j" E  Atj" At (Avr6 (Aj6 @ (" N AqE  AvAq r!  L  (   (!@ ( E (" ( A Aj(! A6 6 6 Ax6 Ar A!@ k" AH Au! Aq" E  Atj" (AA ktAs tq6 Aj! At!@ Aj!  j! Aj" ! (E @ AH   jA|j At kAj  k! @ ( F ("( ( At Aj(!@ E E  6 6  AŀAŀAAнŀҐ @@@ Aq"AF AF AqE @ AG AF    AG  A!A! ( E  ("( (A Aj(! A6 6  @@@ ( Aj"Av"G (!  ("( ( At Aj(!@ A I E  6 6 AA A k"Aq"ktAs tA 6@ AI AjA A AKAtA|j AAA AvA?q"kt A?F!A!  A !A!@ ( A!  A! ("( (A Aj(! A6 6 6 6  #@ ( " A   A  @ (" ("F AA  H ( "Aj! ( "Aj! AtA|j! AtA|j!    JAj!@@A! AH A! A! @  M ( j(! @  M ( j(! Aj! A|j! Aj! A|j! Aj! F AA I!  A! (!A!@@@ ("AG !  A! AG  A   F @ (" (F A Atk @@  F AA  H!  ( "Aj! ( " Aj! AtA|j! AtA|j!   JAj!@A! AH A!A! @  M ( j(! @ M ( j(! Aj! Aj! A|j! Aj! A|j! F AA I! A k    A!@ ("AF ("AF @ (" (F @ AxG A! AxF  A Atk @@  F AA  H!  ( "Aj! ( "Aj! AtA|j! AtA|j!    JAj!@A! AH A!A! @  M ( j(! @  M ( j(! Aj! Aj! A|j! Aj! A|j! F AA I! A k  !  ~~#A k"$@@@    HAH  6A! Aj    AōE   @ E Aq! 5! @@ Aj" A! B!  A~q! A! B! ! !@  5 ~ |" > Aj Aj5 ~ B |" > B ! Aj! Aj! Aj" G @ E  At"j  j5 ~ |" > B !  Atj > AI  Aj! A~q! Aq!A!@  At"j5! @@ B! A!  B! A! ! !@ A|j" 5 ~ | 5|" >  Aj5 ~ B | 5|" > B ! Aj! Aj!  Aj" G @ E  j At"j"  j5 ~ | 5|" > B !   jAtj > Aj! Aj" G  A6 AI AjA AtA|j A! A j$  ~~#Ak"$@@ (8" A! @ (AA Aj(" A!  AjAA  6 68 ! @  At" jAjB AȀj("" " > B! At! AjAv!A!A!@ j"Aj 6 Aj "B >  ~" BB ~B ~ |}" B Au q|"B q j! Aj"AG AȀj(!A!@ j"Aj 6 Aj "B >  ~" BB ~B ~ |}" B Au q|"B q j! A|j"AG AȀj(!A!@ j"Aj 6 Aj "B >  ~" BB ~B ~ |}" B Au q|"B q j! A|j"AG Aj! Aj" AG Bժ7 AjBĈ7 AjBێӪ*7 AjB߄ݻ77 AjBǦ"7 B A j Aj  j"ƍ" !@@@@ Aq Aq  ( E  ("( (A Aj(! A6  6  Aq  ! !  ! ! ! ! @ ("(A (" At"l" Aj(" A!       ( "A k" Ǎ@ AqAG ( E ("( (A Aj(! A6  6 Aq! ("Aj(! (!@@@@@ A J A! A  "E       Ǎ@  ( E ("( (A Aj(! A6  6 AL  A J A k! At!A!@@   j  j ȍ  j! Aj"AF  !  A! A  "E  AL  At!A k! !@     AǍ@    ȍE !   j! Aj"AG @@  @ ( E ("( (A Aj(! A6  6 A! ("( A Aj( ( F  ("( ( At Aj(!@ E E   6  6  ("( A Aj(  (    ɍA! !  ("( A Aj(A! E  (" ( A Aj( Aj$  At!A*!A!A!@@@A!AA  jAj n"Ajgk AI"AK @  A~j"jAJ A! Aj tAl!  Aj" A!A! A9!A! @@AA  jAj n"Ajgk AI"AK @  A~j" jAJ Aj tAt" O A! ! ! !  Aj" A!A! @@@AA  jAj n"Ajgk AI"AK @  A~j" jAJ A! Aj tAl O   Aj" ! ! !  Ő  6 A=A= t I  A=J6   ~~A! A  lAt@   AtjAj n"  H" AH A tAsA Aq! At! Aj! At! A J! AH! A=J! AI!@  l"Aq!A! @ Au" O  Atj(! @ E A!@ Aj" O  Atj(! At Ast vr! @@  q" !  A!@ A jAu" O  Atj(! @ E A!@ Aj" O  Atj(! At Ast vr! @ A=K qB !  @@  A!@ AjAu" O  Atj(! @ E A!@ Aj" O  Atj(! At Ast  vr!  q!  q!A! B Av B!! Aq! @  BB! ! ! !@ E ! ! ! !@  AȀj("    j5"~B "~ At"|}"  B Auq|"B q jB " BB ~B ~ |}"  B Auq|"B q j6 Aj!  j! Aj"  @  AȀj("   j5~B ~ At|}" B Auq|"B q j6 Aj!  j! Aj" Aj! Aj" G ~A!@   Av"A AH AH"  k"A t" A t" A     A  @@  F A! @  tAt"j  j   ȍ Aj" G    A !  Alj Atj"Aj5! Aj(! At" AȀj("! jAj5! At!A! A! @  j"  ("A   Ik  j5~" BB ~B ~ |}" B Au q|"B q j" l   ~B lk6 Aj! v! Aj! E ("(AA t Aj(" E    A ! ("( A Aj( AA !  &~#Ak"$ A jAjA6 AjA6 B7 B7( B7 B7 A At! Aj" lA~m! @A t" Aj" Atj n" H" AH A tAsA Aq"!AȀ At" k! Av"A AK! Aj! At! A~q! Aq! A~j! As j!AȀ k! A j Atj"Aj! A j At" j! Aj j!  kAt"j! AjAr! AH!! A I!" Aj N!#A!$A!%@@@@ AH A!@ E Aj! ! @   t %jAtj("A A|j(" Ik6 Aj  Aj t %jAtj("A (" Ik6 Aj! Aj! Aj" G @ E Aj At" j   t %jAtj("A  j("  Ik6 AH A! !& !' !(A!)@@ )" Aj") N  (j!*  Atj! Aj Atj!+A! &! '! @ ( +(k (" j", AȀj(l  j5 ,~B lk",A , Ik6 Aj! Aj! Aj! ( Aj" G *! &Aj!& 'Aj!' (Aj!( ) F   (6 A!, !   (6 A!, ! ! A! A!, !(@ Aq!+  (At"j5!- Aj j(! @@ , A!  A~q!A! A j!@  - 5~ |".> Aj" - 5~ .B |".> .B ".! Aj! Aj" G .! @ +E A j Atj" - 5~ |"-> -B !. A j Atj .> ,Aj!, (Aj!( Aj" G A! !, ,Aq!(  Atj5!-A! (@!@@ ,AG  ,A~q! A! A j! ! @  - 5~ | 5|".> Aj" - 5~ .B | Aj5|".> .B ".! Aj! Aj! Aj" G .! @ (E A j At"j" - 5~ |  j5|"-> -B !. A j ,At"j  j( .j6 % l!@ " A $Aq",k!+ A j! !@ (! @ Au" O  Atj"( (( ,tr6 @ ,E Aj" O  Atj" ( +vr6 Aj! A j! Aj" Aq! (" q!@ Au" O  Atj" ( tr6 @ E Aj" O  Atj" ( A kvr6 @@ E @ L ! ! !@  (" At Ast vr6 Aj! Aj! ! Aj"  ( v6  #    $ j!$ %Aj"% G Aj$ @@@@@ AK (A At"Ar"At Aj"(! (A AtAj ("E  E @ E A A AKAt  AtjA6     ˍ  Aj"Aq! A! @ AI A|q! A!A! @  j"  j"(6 Aj Aj(6 Aj Aj(6 A j A j(6 Aj! Aj" G @ E  At"j!  j!@  (6 Aj! Aj! Aj" @ AH ! !@ (  Aj! Aj" AK   ("Aj6 E    Aj! Aj!@ !  ("Aj6   Aj! Aj!   (A  Aj" Av" k" j"Aj"At Aj"(! (A A lAj (! E  E   At"j"  j ʍ      Aj"č @  Atj"(E A~q! Aq! As j!  Atj"Aj! At jAj! AH!@@   ("Aj6 F  ! !@ !  ("Aj6   Aj! Aj!  @@ AN A!  A! @@ A!  ! !A!@  (" (" k" k6 Aj" (" Aj("k" I  Ir"k6  I  Ir! Aj! Aj!  Aj" G E  At"j" ("  j("k" k6  I Ir! @   (" k6 F  O ! !@ !  ("Aj6   Aj! Aj!  ( A!@ AK AtAr k"Aq!@@  A!A!  A~q! !A!A!@ A (" k" k6 Aj" A (" k" I AGr"k6  I AGr! Aj!  Aj"G A k! @ E  Atj"  (k6 (Aj!  6   Atj  k  č  A AK" Aq!A!@ AjAI  At A lkj!A! A Aqk! !@  (6 Aj Aj(6 Aj Aj(6 A j A j(6 Aj! Aj! A|j" G A k! @ E   Atj AlkAtj!  Atj!@  (6 Aj! Aj! Aj" F  AtAtj!A! Aq!A! @ AsA kF A! A A~qk! ! !A! @  (" (j" j"6 Aj" Aj(" (j"  I  Irj"6 I  Ir! Aj! Aj!  A~j" G A k! E  At"j"  j( (j j6 ( A Aj"( ( A (A E  ( A Aj( @ E ( A Aj( A ~~ ~  Aj"Atj(!@@@@@ AG @@@ AK   A6  A! AjAH   AtA|j"j!  j! AsB B " B! A!@   (" Au"k~  q j|B j" B B ~|"B "jAj6  q j! A|j! A|j! Aj"  Aj!  AtA|j" j!  j! ! B!@ B 5" " >  ~}! A|j! A|j! Aj" AK !  6  @@@@  k"   HA2H  F  (A Aj"   I"Aj"At Aj"(! (A At (! E  E @  I @  F A  kAt E  Aq! A! @ AI  At Atkj!A! A A|qk! ! @  (6 Aj Aj(6 Aj Aj(6 A j A j(6 Aj! Aj!  A|j" G A k! E   Atj!   j kAtj! @ (6 Aj! Aj! Aj"  @ E Aq! A! @ AI  At Atkj!A! A A|qk! ! @ (6 Aj Aj(6 Aj Aj(6 A j A j(6 Aj! Aj!  A|j" G A k! E  Atj!  j kAtj! @  (6 Aj! Aj! Aj" !A! A! @@  (" "j" 6 O  Aj! Aj! I" O  A At" jA6  A!@ AI AsB B ! @@@ AH At jA|j! At jA|j! ! @@ (" ("G  A|j! A|j! Aj" AH   Atj O"6     AtjA6 AH  Atj! Aq!@@  A! A!  A~q!A! ! !A! @  (" ("k" k6 Aj" (" Aj("k"  I Ir" k6  I  Ir! Aj! Aj!  Aj" G E  At"j" (  j( jk6 A! Aj"AH  At Atk jA|j! Aq!A A~qk! ! !@@@   jAtj"(" I A!  @ E   A|j(" Au" k ~ q j|B j" B ~ B |B jAj!  B A|j5 ! At!@ E !@@  A!A!  A! ! ! A! @  5 5 ~ |}" > Aj" 5 Aj5 ~B B }B|}" >A B " k! Aj! Aj! A~j" G A k!  j!@ E  At"j" 5  j5 ~ |}">A B " k!  (" j6  O @@@  A!A!  A!A!A! @  j"  j"(" (j" j" 6 Aj" Aj(" (j" I Irj" 6 I Ir! Aj! A~j"G A k! @ E  At"j"  j(" (j" j" 6  I Ir! Aj! AqE  (Aj"6   j 6 A|j! Aj"AJ  AŀAŀA AŀҐ   ʍ      Atj AsAtj č @ E Aq! A! @ AI  At Atj Atkj!A!A A|qk!A!@  j"  j" Aj(6 Aj Aj(6 Aj A j(6 A j Aj(6 Aj!  A|j"G A k! E At jAtj Atk jAj!  Atj! @ (6 Aj! Aj! Aj" ( A Aj"( ( A (@ (A AtAj (" A     č @ AK Aj"Aq!@@  A! A!  A~q!A! ! !A! @  (" ("k" k6 Aj" (" Aj("k"  I  Ir" k6  I  Ir! Aj! Aj!  Aj" G E  At"j" (  j( jk6 ( A Aj( Aj! A~q! Aq!  At"j!  A|j"j!  j!@@ (" ! ! ! @ Aj" AH  (! (! A|j! A|j!  F  I  @@ AN A!  A! @@  A!  ! !A! @  (" ("k" k6 Aj" (" Aj("k"  I  Ir" k6 I  Ir! Aj! Aj!  Aj" G @ E  At"j" ("  j("k" k6 I Ir! (!   k6 E A! !A! @  (" j" 6 Aj! Aj! I! O  ! E  A!  @ E ( A Aj(  A ( A Aj(A  ~~#A k"$   ( ( I""(   "(s! @@@ ( " @@ ("AF ("AG  @ ( E ("( (A Aj(! A6 6 B7A!  @@ AF AG  @@ AG AxF   AxG  AG  @ ( E ("( (A Aj(! A6 6 B7A!  @ ( E ("( (A Aj(! A6 6 6 Ax6A!  ( "! ! @ AqAG  A!jAv"  H!    H! ( Atj Atk! ( Atj Atk! @@@@@@ AI A! (  F"Ar   Fō   @@  F  F ( !A! !  B7 B7  (6 Aj!A! ! @  j"G (!  ("( ( At Aj(! E    ! @ ( E ("( (A Aj(! A6 6 B7A !   6  6 @@ E Aq! 5!@@ Aj" A!B!  A~q!A!B! ! !@  5 ~ |"> Aj Aj5 ~ B |"> B ! Aj! Aj!  Aj"G @ E  At"j j5 ~ |"> B !  Atj > AI  Aj! Aq!A A~qk!A!@ At"j5!@@  B!A!  B!A! ! !@ A|j" 5 ~ | 5|">  Aj5 ~ B | 5|"> B ! Aj! Aj!  A~j"G A k! @ E  j At"j" j5 ~ | 5|"> B !   jAtj > Aj! Aj" G  A6 AI AjA AtA|j ! 6 ( (j"6 ( "At! A j! !@@ E  A`j! Aj! A|j" ("j"(E 6 Aj!@ (g"E Aq! A k!A! A!@ AI A|q! A! !A!@  (" t  vr6 Aj" (" t  vr6 Aj" (" t  vr6 A j" (" t  vr6 Aj! Aj" G @ E Aq!  Atj!@   v (" tr6 Aj! Aj" ( k6   A!  Ax6@  A!  A! ("( (A Aj(! A6 6  AjF  AjG @ ("E ("( A Aj(  )7 Aj AjAj(6 Aj AjAj)7  @ ( E ("( (A Aj(! A6 6 6 A6A! A j$  R@ ( " A ( A| A|J"A AHj6   A U@ ( "E At! (!@@ ("E h (j k Aj! A`j! Aj" A  #A0k"$@@@@@@ F F  F   F  F @@ ( "E ( "  @ ( E (" ( (A Aj(! A6 6 B7@@ ("AF ("AG  @ ( E ("( (A Aj(! A6  6 B7A!  @@ AF AxG  @ ( E ("( (A Aj(! A6  6 B7A!  ( "! @@@ ( F ("( ( At Aj(!@ E E   6  6 (! ( !  6  (6@ At"E ( (  ( !  A!  @ ( E ("( (A Aj(! A6  6 B7A!     A!  ( (" s! A! @@@@@ A~j !  As!  A!  !  6$ A6  6 A6  (" 6  ("6(  ("6  ("6@@ F H   Aj! Aj!   JAj! At jA|j! At jA|j!@ AH A!A!@  M (! @ M (! Aj! Aj! A|j! Aj! A|j!  F  O  B7@ ( E ("( (A Aj(! A6 6 Aj F A!@@ ( F ("( ( At Aj("E   6  6 ( ! (! ($!  6  6 At"E  ( ((   @ ( E ("( (A Aj(! A6  6 B7  AŀAŀA AŀҐ AŀAŀA AŀҐ AŀAŀA AŀҐ Aj  k"A AJAjAAᅀэ@ ( "E AA A  AA̍  Aj AAҍ @@@@ Aj(" AF Aj("AF @ ( "  ( (s6 6A!  @@@   (" Aj"6@@@  F  N   ( " J! AtA|j! At (jA|j!A!@  jAH A!A!@ jM ( j(! @   jM (! A|j! Aj! A|j!  F  I   6   6 AF  ( "At k"AH  Au" O  ( Atj( vAqE    ( (s6 6  BAAӍ   AAҍrA q ( !  @ ( E ("( (A Aj(! A6 6 B7@ ( E ("( (A Aj(! A6  6 B7A !   6  ( (s6 6 A!     A! A0j$   ( (s! (!@@@@@@ ("AJ ("AJ  AxG  ( ! AxG @ E ( (A Aj(! A6 6 B7A AF  (! AG  @ ( E ( (A Aj(! A6 6 B7A ( !@ AG" AG @ E ( (A Aj(! A6 6 B7A @  @ E ( (A Aj(! A6 6 6 A6A @ E ( (A Aj(! A6 6 6 Ax6A @ E ( (A Aj(! A6 6 6 Ax6A @ AxG @ ( E ( (A Aj(! A6 6 6 A6A @@ (A ( " A!jAv"  J" ( "j"AtAj Aj(" E A  ( kAt" " j ( ( At@@@ ( Aj" G (!  (" ( ( At Aj(" E  6 6   ( ˍE  ( A Aj( @ ( E ("( (A Aj(! A6 6 B7A  @ AH !@@ (  Aj! Aj"E  (" (Ar6 ("( A Aj( 6 ( (kA j6   #A k"$@@@ F G  B7 B7  (6 Aj     ! Aj F @ ("E ("( A Aj( )7 Aj AjAj(6 Aj AjAj)7      ! A j$  #A k"$@@@ F G  B7 B7  (6 Aj    A! Aj F @ ("E ("( A Aj( )7 Aj AjAj(6 Aj AjAj)7     A! A j$  #A k"$ B7  ("6@@@@ BU Aj(! (!@B }"BV A! AA "E  A6   g">  6A k!  A! AA "E  A6  " B " g"t6  t Av Asvr6  6A k!  A! A6 @ BR Ax6  Aj(! (!@@ BV A! AA "E  A6   g">  6 A k6  A! AA "E A6  " B " g"t6  t Av Asvr6  6 A k6  B7 A !  A !A! A6  6  Aj  ԍ!@ ("E ("E ( A Aj( A j$ r #A k"$@@@ F G  B7 B7  (6 Aj    A! Aj F @ ("E ("( A Aj( )7 Aj AjAj(6 Aj AjAj)7     A! A j$      ҍ #A k"$ B7 B7  (6 Aj     ύ!@ ("E ("E ( A Aj( A j$ #A k"$ B7 B7  (6 Aj      ύ!A!@ ("AxjAxI (! (!@ AK A At jA|j(A kv"k  ( !  At k"Aq!A!@ Au" O  Atj(! @ E A!@ Aj" O  Atj(! At Ast  vr! A k  ( ! 6@ ("E ("E ( A Aj( A j$  ~#Ak"$@@@ AG  ٍ!  A!  Av" Atj"  A~q" Atj"  k"  A j؍  ( !@ AH E A! Aq!A!@ AsA kF A~q!A! ! !A!@  (" ("k" k6 Aj" (" Aj("k"  I  Ir"k6  I  Ir! Aj! Aj!  Aj"G E At"j" ( j( jk6   At"j"  ˍ   j( j!@@ AK Aq!  A AK"Aq!A!@ AjAI Aq!A!A!@  j"  j"(6 Aj Aj(6 Aj Aj(6 A j A j(6 Aj!  Aj"G @ E  At"j!  j!@  (6 Aj! Aj! Aj" Aq! AI Aj! At jA|j!@  At ("Avr6 A|j! Aj"AK Av!A!@@@@ AqE F A! Aq!A!@ AsA kF A~q!A! ! !A!@  (" (j" j"6 Aj" Aj(" (j"  I  Irj"6  I  Ir! Aj! Aj!  Aj"G E  At"j" j(" (j" j"6  I  Ir! @ F AI A! !@ (" j"6  O  Aj! Aj!  I" AK   A! AO   Atj   č @ AN A!  At!A! !@  ("  j"(" k" k6 Aj" (" Aj("k"  I  Ir"k6  I  Ir! Aj! A~j" @ AqE (" k6  I!  k"AJ A!@@@ AH  ("Aj6   Aj! A~j!@ !  ("Aj6   Aj! Aj! E  Aq!@@ AG B!A!  A~q!B!A! ! !@  5B | 5|"> Aj" Aj5B B | 5|"> B ! Aj! Aj!  Aj" G @ E  At"j"  j5B | 5|"> B ! !A!A!@@  (" j"6  I!  O  Aj! Aj!   j!  j!  6A! Aj$  ~ ("Aq AvAqAнȀj/"At"AsA Av  lk" K" jAt AvAqr"  j"At"n" lk   lkAtj"Au At j"Aj"AtArq jB ("Av"    AH"At"" ~}B Aq! At!@@ "AI Bp|!    ~B}!  j!@ BU  Aj"B|B|! 6  > B #A k"$@@@@ ( @@@@ ("Axj @ ( E ("( (A Aj(! A6 6 B7  (  F @ ( 6 (6  ("( (A Aj(! A6 6 )7 ( At"E  (  A! E  B7 ( E A! ("( (A Aj(! A6  6  (E  @ ( E ("( (A Aj(! A6 6 B7A! E  B7 ( E  ("( (A Aj(! A6  6   (AjAmAۍ@ ( "E AA A !@  B7 B7  (6 Aj!  AA̍  (As6   AAԍA !@ Aj(AF ( AGAt!  ("E ("E ( A Aj( A j$  #A k"$@@@@@@@@ F @@@ ( @@@ ("Axj @ ( E ("( (A Aj(! A6 6 B7A! (  @ ( 6 (6A! A! ("( (A Aj(! A6 6 )7 ( At"E  (  (E  @ ( E ("( (A Aj(! A6 6 B7A!  (!@ ( AtAj"Av" F ("( ( At Aj(!@ AI E  6 6 A! (A At" Aj("E  A At" ( " H" kAt" j At"k ( ( Atj k @ -AqE AI  Aj! At jA|j!A!@  At ("Avr6 A|j! Aj" AK Aq! Aj! (! AM  (A A?qAj Aj("E     Atj؍!  F  ( A Aj(  AŀAŀAAĀҐ Aj! (!A!    Atj؍! E  ( A Aj( @ ( E ("( (A Aj(! A6 6 B7A !  @@@ At! A!@@ j("  G! Aj!  ( A Aj(  ( k"AH  (!@ (  Aj! Aj"E  ( A Aj( (" (Ar6 A! A6 (AjAu6 ( "E   A! A j$  &@ ( " A A Ar A     ԍ     Aᅀэ #A k"$A! A6  ("6 B7@@ BR Ax6  Aj(! (!@@ BV A! AA "E  A6   g">  6 A k6  A! AA "E A6  " B " g"t6  t Av Asvr6  6 A k6  B7 A !  Aj  ̍!@ ("E ("E ( A Aj( A j$ r #A k"$ B7  ("6@@@@ BU Aj(! (!@B }"BV A! AA "E  A6   g">  6A k!  A! AA "E  A6  " B " g"t6  t Av Asvr6  6A k!  A! A6 @ BR Ax6  Aj(! (!@@ BV A! AA "E  A6   g">  6 A k6  A! AA "E A6  " B " g"t6  t Av Asvr6  6 A k6  B7 A !  A !A! A6  6  Aj  ̍!@ ("E ("E ( A Aj( A j$ r   A⍀ #Ak"$@@@@@@ F F A!A!@ (AH (! @ (AH (! @ E B7 B7  ("6 B7D  68A! A6<@@ (AA Aj("E A! A6D Ax6  6H  A6
       ~}" ! A|j! A|j! Aj"AK  @ g" Aj!  AtA|j"j! j! AsB B " B! @  (" B~"j" I B j"  Au" k~ q j|B j" B  B ~|"B "jAj6  q j! A|j! A|j! Aj" AK   t" AsB B " B! Aj! A k!  AtA|j"j! j!@  (" B~"j" I B j t  vr"   t"Au"k~  q j|B j" B  B ~|"B "jAj6 q j v! A|j! A|j! Aj" AK  ~~ #Ak"$@@ AG  5B~ 5|" B g"A>q7 Aj Ajٍ   ( Avv"" ~}"BAxq AvrB~B "B씣 ~ |"A씣|j  AK" 6 6 j!  Av" At" j"  A~q"Atj"  k" !@ AH E A! Aq!A!@ AsA kF A~q!A! ! !A!@  (" ( j"k"Aj  I"6 Aj" (" Aj( j"k"Aj  I"6 Aj! Aj!  Aj" G E  At"j" (" j( j"k" Aj  I6 A! A   j"    j( j! @@@@ AK Av! A! Aq   A AK"Aq!@ AjAI Aq!A!A! @ j"  j" (6 Aj Aj(6 Aj Aj(6 A j A j(6 Aj!  Aj" G @ E  At"j! j!@  (6 Aj! Aj! Aj" Aq!@@ AO E!  AʵA ! Aj! At jA|j!@  ("Av j6 A|j!A Aq"kAʵq! Aj" AK E! Av! A!   @ AN A!  A! Aq!A!@ AsA kF A~q!A! ! !A!@  (" j (j"A씣|j"   M" 6 Aj" (" j Aj(j" A씣|j"  M"6 Aj! Aj!  Aj"G E  At"j" (" j j(j"A씣|j"   M"6 AH (" j" A씣|j"  K"6 AF  A~j! At jAj!@ ! AA씣| ("AI"  j6  Aj! Aj!  @ AK  At"j A! AH !@  ("  j"( j" k" Aj  I"6 Aj" (" Aj( j"k"Aj  I" 6 Aj! A~j" @@ Aq !   (" k"Aj   I"6  k" AJ A!@ AH ("AjA 6@  Aj! A~j!@ !  ("AjA 6   Aj! Aj! A! !A!@  j" j("Av At" j" Ij  (j" IjAt AvrB~B "A씣|l j"A씣|j  AK" 6 j! Aj! Aj" AA씣| ("AI"  j6  j! A! Aj! Aj! @ AA씣| ("AI j6 AM  Aj! Aj" A!  j! Aj$  ~#Ak"$@  Aj"Atj("E  k! @@@ AʵI @@@ AH At jA|j! At jA|j! ! @@ (" (" G  A|j! A|j! Aj" AH   Atj O"6     AtjA6 AH  Atj! Aq!@@  A! A!  A~q!A! ! !A! @  (" ( j" k"Aj  I" 6 Aj" (" Aj( j" k"Aj  I" 6 Aj! Aj!  Aj" G E  At"j" ("  j( j"k" Aj I6 Aj! A!  A Ajn!@@@ AH (A At Aj(" A!  ! AH  !A! ! A! @  j  j5 ~"j" I B jAt AvrB~B " A씣|l j" A씣|j AK" 6 j! Aj! Aj" !@@ AN A!  !A! ! ! @  5 ~"j" I B jAt AvrB~B " A씣|l j" A씣|j AK" 6 j! Aj! Aj"  Atj 6 A!@ AH A~q! Aq!  Atj!  Atj!@A!@  " jAtj"(" ("O A|j(" B~"j" IB |B ! At!@ AH  j! !A! ! ! ! @ ("  5 ~"j" I B jAt AvrB~B "A씣|l j"A씣|j  AK" "k"Aj  I"6 j j! Aj! Aj! Aj"  (" k" Aj I6 O @@@  A! A!  A! A! A! @  j" (" j  j" (j" A씣|j"  M" 6 Aj" (" j Aj(j" A씣|j" M" 6 Aj!  Aj" G @ E  At" j" (" j  j(j" A씣|j" M" 6 Aj! AqE  (Aj" 6 AG  j 6 A|j! Aj! AJ AF A!    A  F E A! ( A Aj( Aj$  AŀAŀA-AŀҐ !@ ( " A    _A!@ ( F ("( ( At Aj(!@ E A! E  6 6A!  ~@@@ B T @@ ( AG (!  ("( (A Aj("E  A6 6  B֭ >  B"B>   B~}>A!  ( !@ BT @@ AG (!  ("( (A Aj("E  A6 6  "An"6   Alk6A!  @@ AG (!  ("( (A Aj("E  A6 6  >A ! A6 6 AA @ ( E ("( (A Aj(! A6 6 B7A 1@ BU B }! A6       A텀э     A ~ (!@@ (" ("F AA  H!  ( " Aj! ( " Aj! AtA|j! AtA|j! JAj!@A! AH A! A!@ M ( j(! @ M ( j(! Aj! Aj! A|j! Aj! A|j!  F AA  I!  s! (! (!   AH"! @ F (AJ AqAF!@ ( E ( (A Aj(! A6 6 6 Ax6A   !  !@@ ( "E ( "  @ (" AH @ AG @ ( E ( (A Aj(! A6 6 B7A ( !@ (AG F @ E ( (A Aj(! A6 6 B7A @ E ( (A Aj(! A6 6 6 A6A @@ F @ ( F ( ( At Aj(! @ E E  6 6 (! ( ! 6 (6 At"E ( (  6   @ ( E ("( (A Aj(! A6 6 B7A  @@@@ (  (" (k" AjA m" j"  J"F ( ( At Aj(!@ E E  6 6 (! ( ! 6 6 !@  k" AH (A At ( ! @ E ( At Atkj! (!A! @  (6 Aj! Aj! Aj" ( I ( !@@ A o" (! !  (A Aj"At Aj("E @@@ AK A! ( "AJ A k!  AŀAŀA.AŀҐ Aj!  At"j!  (jA|j! AtAȀj(! At" AȀj-! AȀj-! AȀj5!A k"AtAȀj(!A! @  (" ~B " k v j v" lj6 lk! A|j! A|j! Aj"AK  AtAȀj( l6 ( ! ("   j"k"Atj!@ F AH  Aq! @@ AG A!A!  A! A A~qk! ! !A! @  (" ( j" k" Aj  I" 6 Aj" (" Aj( j" k" Aj  I" 6 Aj! Aj!  A~j" G A k! @ E  At"j" ("  j( j"k" Aj  I" 6 AqE @   jk" AH  Atj" (" k"Aj   I6  O  AF As j! At Atj Atk jAj!@  ("AjA 6   Aj! Aj" AŀAŀA4AŀҐ AH  Aq! @@ AG A!A!  A! A A~qk! ! !A! @  (" j (j" A씣|j" M"6 Aj" (" j Aj(j"A씣|j"  M" 6 Aj! Aj!  A~j" G A k! @ E  At"j" (" j  j(j"A씣|j"  M" 6 AqE @   jk"AH  Atj" (" j" A씣|j" K"6   AF As j! At Atj Atk jAj!@ AA씣| ("AI"  j6  Aj! Aj" AjE  E E ( A Aj( @ ( E ("( (A Aj(! A6 6 B7A  ( AtjA6 (A j6 @ E E ( A Aj(        #A k"$@@@ F G  B7 B7  (6 Aj    A! Aj F @ ("E ("( A Aj( )7 Aj AjAj(6 Aj AjAj)7     A! A j$   #A k"$   ( ( I""(   "(s!@@@ ( " @@ ("AF ("AG  @ ( E ("( (A Aj(! A6 6 B7A!  @@ AF AG  @@ AG AxF   AxG  AG  @ ( E ("( (A Aj(! A6 6 B7A!  @ ( E ("( (A Aj(! A6 6 6 Ax6A!  ( ! @@  F  F ( ! A! !  B7 B7  (6 Aj!A! ! (! (! @@@@ j"G (!  ("( ( At Aj(!@ E E   6  6   6  ( (j6   !  @ ( E ("( (A Aj(! A6  6 B7A !  AjF   AjG @ ("E ("( A Aj(  )7 Aj AjAj(6 Aj AjAj)7  @ ( E ("( (A Aj(! A6 6 6 A6A! A j$ #A k"$ B7 B7  (6@@ BU AjB }! A6  Aj !  Aj  !@ ("E ("E ( A Aj( A j$ r #A k"$ B7 B7  (6@@ BU AjB }! A6  Aj !  Aj  A텀э!@ ("E ("E ( A Aj( A j$ r     Aэ  ( (s!@@@@@@ ("AJ ("AJ  AxG  ( ! AxG @ E ("( (A Aj(! A6 6 B7A AF  (! AG  @ ( E ("( (A Aj(! A6 6 B7A ( !@ AG" AG @ E ("( (A Aj(! A6 6 B7A @  @ E ("( (A Aj(! A6 6 6 A6A @ E ("( (A Aj(! A6 6 6 Ax6A @ E ("( (A Aj(! A6 6 6 Ax6A @ AxG @ ( E ("( (A Aj(! A6 6 6 A6A ( !@@ AG Aj!  @ AqE   k"A AJjA jA n!  A jA n! @ ("(A ( "  J" j"AtAj Aj("E A  ( kAt" " j ( ( At@@@ ( Aj" G (!  ("( ( At Aj(!@ E E  6 6 (   (  A!@ E A! !@ (  Aj!  Aj"G ! ("( A Aj(@  F @ AG @ ( E ("( (A Aj(! A6 6 B7A (" (Ar6 6 ( (kA j6   ("( A Aj( @ ( E ("( (A Aj(! A6 6 B7A  #Ak"$@@@@@@ F F  F   F  F  (!@@ ( " E ( "  @ ( E ( (A Aj(! A6 6 B7@@ ("AF (" AG  @ ( E ("( (A Aj(! A6  6 B7A!  @@ AF AxG  @ ( E ("( (A Aj(! A6  6 B7A!  ( " ! @@@ ( F ("( ( At Aj(!@ E E   6  6 (! ( !  6  (6@ At"E ( (  ( ! A!  @ ( E ("( (A Aj(! A6  6 B7A!     !  ( (" s! A!@@@@@ A~j !  As!  A!  !  6D A6<  6, A6$  (" 6@  ("6H  (" 6(  ("60@@ F H   Aj! Aj! JAj! At jA|j! At jA|j!@ AH A!A!@ M (! @ M (! Aj! Aj! A|j! Aj! A|j!  F  O  @@@@ ( AG (!  ( (A Aj(" E  A6 6 A6 B7 AA  @ ( E (" ( (A Aj(! A6 6 B7 A8j F @@ ( (D" F (" ( ( At Aj(! @ E E   6  6 (D!  )<7 At" E  ( (H   @ ( E (" ( (A Aj(! A6  6 B7  AŀAŀA6AŀҐ AŀAŀA6AŀҐ AŀAŀA6AŀҐ A8j A jAAAэ  A jAA  A8j AA @ Aj(AF Aj(AF @ ( " E @@@  B7 B7  6@ Aj F @ (A At Aj(" @ (E (" ( (A Aj(! A6  6 B7   6  6  )7 ( At" E (  @ Aj AjBAAE (" E  (" E  ( A Aj(  Aj ! @ (" E ("E ( A Aj( AJ   AF  ( ( " A l Aj(kAq   E  BAA   A jAArA q   ( (s6 6@ ( " A!     !  @ ( E (" ( (A Aj(! A6 6 B7@ ( E ("( (A Aj(! A6  6 B7A ! Aj$  @ (" ("F AA  H ( "Aj! ( "Aj! AtA|j! AtA|j!    JAj!@@A! AH A! A! @  M ( j(! @  M ( j(! Aj! Aj! A|j! Aj! A|j! F AA I! @@ AH A n!  AxjA m! A!@ AH  O Atj(" Awl jAt"AȀj5 ~B "k AȀj-v j AȀj-vA p!  #A k"$ B7 B7  (6 Aj     !@ ("E ("E ( A Aj( A j$ $@ ( " A A Ar   ~~#A k"$@ F @@@@ ( @@@ ("Axj @ ( E ("( (A Aj(! A6 6 B7A!  (  @ ( 6 (6A!  A! ("( (A Aj(! A6 6 )7 ( At"E  ( (   AF (E  @ ( E ("( (A Aj(! A6 6 B7A!  !@ AqE @@ ("AH AjAv!  AA kAvk!  j"A AJ! (!@@ ( At"Aj"Am" F ("( ( At Aj(!@ AjA\K E  6 6 A! (A At" Aj("E A At" ( " H" kAt" j At"k ( ( Atj k @ -AqE AH Aj! At jA|j!A! @  (" B ~B "kAv jAv" A/lj6  Avlj! A|j! Aj" AK A!@ A$H At jA|j("AK A! A!@ Aj! Aj! AI! At!  AH A t!A! ! !@  5 ~"j" I B jAt AvrB~B "A씣|l j" A씣|j AK"6  j! Aj! Aj" (! !@@ AI (A A|qAj Aj"("E   Atj  6@  F ( A Aj( @ E ("  A tA @ A! AoH Aj! !@@ (  Aj! Aj"E  A! ( A Aj(@@ ( k"AH  (!@ (  Aj! Aj"E  (" (Ar6 A! A6 (AjAu6 ( "E    !  ( A ( @ ( E ("( (A Aj(! A6 6 B7A ! A j$  AŀAŀA7AĀҐ ~@@ ("AH A!A! AG  (Aj6A @ AN A6A @ A K A ( At (jA|j("A kAt"AȀj5 ~B "k AȀj-v j AȀj-v"k  (6A @ A G (" ( "Aj"Atj5!@@ A l"Aj"AH A n!  AwjA m! B ~!B!@ AH  O  Atj(" Awl jAt"AȀj5 ~B "k AȀj-v j AȀj-vA p! ("Aj"A  |""k    V"6 At (Aj!A! 6  @ F @  @@@ ( AG (!  ("( (A Aj("E  A6 6 A6 B7 AA @ ( E ("( (A Aj(! A6 6 B7A  @@@ ( ( "F ("( ( At Aj(!@ E E  6 6 ( ! )7A! At"E  ( (   @ ( E ("( (A Aj(! A6 6 B7A ! @ g"AF A k!@ AA r!@  Aj"vAqE AA r! AJ  AŀAŀA8AءŀҐ  A  A􍀀 =#Ak"$ A j  A  A! Aj$   ( s! (!@@ (" ("F AA  H!  ( " Aj! ( " Aj! AtA|j! AtA|j! JAj!@A! AH A! A!@ M ( j(! @ M ( j(! Aj! Aj! A|j! Aj! A|j!  F AA  I!  s!   AH"!@ E (AJ AqAF!@ ( E ("( (A Aj(! A6 6 6 Ax6A   !   !@@@@ ( " E ( "  @ ("AH @ AG @ ( E ("( (A Aj(! A6 6 B7A ( !@ (AG E @ E ("( (A Aj(! A6 6 B7A @ E ("( (A Aj(! A6 6 6 A6A @  F @@ ( F ("( ( At Aj(!@ E E  6 6 (! ( ! 6 (6 At"E  ( (  6  @ ( E ("( (A Aj(! A6 6 A6 6  (6 6 (" ("k!@@  A!  A! AJ Aq! At!  Atj k! (!A!@A!@  j"AjAu"M ( Atj(! A!@  j"A`jAu" O  Atj(! @ E A! @ Aj" O  Atj(! At Ast  vr! @  G A`j!   s" g! @@ AO kAj!  AA k" tAs"qg"  Asqg"  H" k!  Ajk G  A_j! A@j!A k! As!@A!A! @ Au" M ( Atj(! @ Au" O  Atj(! @ E A!@ Aj" O  Atj(! At t  vr! A`j!@ A`j! A`j! AF  g" Asg"  H k! @ (  jA!jAv" AjA m j" J"  H"F ("( ( At Aj(!@ E E  6 6 ( ! ( ! A!A k! kAt j! ! @  k"AJ A k"k" Au q! Aq! At!A kAu!A! ! @ At j!@@@@@  j" AH I  @ AaH" A!  H  Au q"   H  !A! A!  ( Atj(! A! AaH   N  (!A! @ Au" O  Atj(! E A!@ Aj" O  Atj(! At Ast vr! Aj! s" j" I  j" Ir! r! AH @@  (!  At Atk!A! A k! Aq! (! (!@A! @ ( jM ( j j(! A!@ Au" ( "O  Atj(! @ E A!@ Aj" O  Atj(! At Ast  vr!  j  s" j" j" 6  I Ir! Aj! A j! Aj"  ( AGr6  E @ ( Aj"F ("(  At Aj(!@ E E  6 6  AtjA6 (A j6 ( " At! A`! !@@ E  A j! Aj! A|j" ("j" (E ( k6 Aj! @ (g"E Aq!A k! A!A! @ AI A|q! A! !A! @  (" t vr6 Aj" (" t vr6 Aj" (" t vr6 A j" (" t vr6 Aj! Aj"G @ E Aq!  Atj!@  v (" tr6 Aj! Aj" ( k6   A Ax6@ A ("( (A Aj(! A6 6A @ ( E ("( (A Aj(! A6 6 B7A #A k"$@@ AG 5!  At Aj"vAjAv! @  Alj" (  AA덀"   Atj  k    " AA̍" B7 B7  (6@ Aj     " AjAAԍ! ("E ("E ( A Aj( A j$  ~ #A0k"$@@@@@@  AŀAŀAAŀҐ ( "At (k" Aq! (! A!@ Au" O Atj(! @ E A! @ Aj" O Atj(! At Ast  vr!  6  ( "At (k" Aq! (! A!@ A jAu" O Atj(! @ E A! @ Aj" O Atj(! At Ast  vr! ! A!@ Au" O Atj(! B ! @ E A! @ Aj" O Atj(! At Ast  vr! ! @ AG  B">  B~}>   "">   ~}>  B7$ B7 B7 B7  (" 6  6  At Aj"vAjAv"k! At" ArAlj! A!A! @ A(lj"( A!   AA덀! A6@@ (AA Aj(" E A6 Ax6  6 A6  B7A !  r   Aj lAjAAᅀэr! Aj   lA̍ r!@ ($" E AjAA A! @@  r  Aj AA̍r   AAҍrA q A!@ (E A! ( E A!@   AAԍ  Aj! (E  ( A j! Alj"Aj! Aj!@@@@ (" ("F  N   ( "Aj! ("Aj! ( AtjA|j! AtA|j!    JAj!@ AH A! A! @  M (! @  M ( j(! Aj! Aj! A|j! Aj! A|j! F I    AAҍ  Aj! @ E Aj Aj AAӍ   Atj Aj            E  @ ("E (("E ( A Aj( @ ("E ("E ( A Aj( A!  @ ("E (("E ( A Aj( ("E ("E ( A Aj( A! A0j$  ~#Ak"$ (!@@ B| R B7,  6 A! A6 B7  6  BB|   B~"B|AAߍ   B{|AAߍ A6$@@ (AA Aj(" B7$ A j A j AAߍ A6  A6, Ax6  60 A6( (! A j A j AAߍ A6 ! @@ (AA Aj("E A6 A|6  6 A6  @ E (AA Aj(! A6  6 B7 A j A j AjAAԍ  A jAA̍ Aq6     AAߍ   AAߍ B7D A6<  ("68@@ (AA Aj("E A6D  6H Bᎄ7A6!  A6  l  ~B lk"A   Ik! Aj!  v! Aj! E  6 !  ?@@ (" ("G   Aj6 -! :  G:  (  ((  AȀ ב ( ֎@ ("E ( Aʀ #A!@  I  E!   (!A!@@@ ( (!  (Aj" AȀ ( ! !@@@ ( (Aj" AȀ (! @@  K  M    Б   摀 6 6 #Ak"$@@@@ AI A6 AI @ AO  A vAr:  AvA?qAr: A!A!   AvA?qAr:  A vA?qAr:  AvAqAr: A!A!  @ (" (G  Aj6 ( j :   AvAr: A!A! A j r A?qAr: A j ӎ Aj$A #A k"$@ ("Aj" AA At"   K"A AK"AsAv!@@  A!   6  (6A!  6 Aj   AjĎ@ (E ( ( ( ! 6 6 A j$   ӎA #Ak"$  6  6 (! (!@@ E @  K  F    j,A@H  @ E @@  K  G    j,AJ  AȀA*AȀґ  Aj6< A68 A60  A j64 Aj A0jԎ  6(   j6, Ajˎ Aj莀 Aj$ AȀA*AȀґ @@@ E AH @@@ (E @ (" @  !  A-ʀ  (   ˀ!  @  !  A-ʀ  ɀ! @ E 6 6 A6 6 6  A6  A6 A6 @  B7 A6 @ AJ A6 A6 @@  A-ʀ Aɀ!  À! @ E 6 6 A6 6 A6 A6 #A k"$@  j" O AA A! ("At"   K"A AK"AsAv!@@  A!   6  (6  6 Aj   AjĎ@ (E ( ( ( ! 6 6 A j$ #A!@  G  E!  @ ("E ( Aʀ #@ ("E ( AtAʀ A!@ E  j!@@ "Aj"-""AJ @@ A~j"-""A@H Aq!  @@ A}j"-""AL Aq!  A|j"-AqAt A?qr! At A?qr! At A?qr"AF  @@ AwjAI A F AI @@@@ Av"Ajj AG   AqAʀj-AqE     AqAʀj-Aq   A-G   G    k! 6 6 #A k"$ B7@@ ( ( Ajَ  Aj"掀E @ (" ("F  k玀 掀E  Aj ڎ  (6  ("6  6   ("j6@ E 玀 Aj厀 Aj؎ A j$ #Ak"$@@@@ ( ("   (" ( F   Aj6 (! (!  Aj  ("(  )7  A! 6 6 Aj$  ( 䎀  ( ㎀  (" (( #Ak"$ A6 @@@@ AI AI  AO   A?qAr:  A vAr:  AvA?qAr: A!   : A!   A?qAr:  AvAr: A!   A?qAr:  AvA?qAr:  A vA?qAr:  AvAqAr: A! A j ю! Aj$  ~ #Ak"$ A68 A;4  60 A6, A:( A 6$  6 A6  6  6 A 6A B A#Ak"$A䏀  6  6 AjAȀ돀 #Ak"$A!@@@@@A-ʀ AȀA(AȀґ A!  A!  AjAȀA@@ ("AxF A! (!@@@ ( Aj -A0FAt!  AȀAE! @ E  Aʀ Aj!  A!A! A :ʀ Aj$  @ -"AF -"Aq"AF  K AA -"AI! ("Aj!  ("AjA j"Aj! Aj! (! -Aq! (" !@ !@@@@@@@@ Aq !@@@@@  !  !   A! A: !  A:A! @@@@@@  !  !  !  !  A! K A!@@@@@@  !  !  !  !  A!  I  6 6 :   k6   j6 ) 7 A j Aj)7 Aj Aj(6 A: E @ E A:  Aj6  Aj6 AAAȀΑ E A!@@@  j-A/G A!  Aj"G A! ! A !@@@@  A -A.F!  -A.G AA -A.F!  A ! @@  j"I  k"6   j" 6A! ! A G    AȀΑ 6 6 : AȀБ  AȀΑ A:  A! ! @@@  @ A! !  -!@ AF AqA.G -A/F  !  @ AF !  AqA.F  !  A: @ E A:  Aj6  Aj6 AAAȀΑ  AqM A : A!@@@ -"AM A!A!  A!A!@ -" A! -"A{jAqAK (! (!A!A!@  A! AqAF A! AI   F  j"-!@@ Aj"  jF"Aq AqA.G -A/F   As AqA.GrAq  A! AG!  @@@@@@ - (Aj!  ( ("AjA jAj!  (Aj!  ( ("AjA jAj!  A!  A!  j j A AȀΑ @ ԏ" ("K (" j!A! !@@@@  G A!  Aj! Aj! Aj" j"-A/G  k" K A! Aj! A !@@@@  k" -A.G AA -AqAI!  -A.G AA -A.F!  A ! 6 6 :  j6  AȀΑ  AȀΑ  #Ak"$A!A!@ E -A/F! @ E -A/F!  :^ A:H  6D  6@ A;\ Aj! Aj!A!A! A!@@@@@@ AqAF AjAj A(jAj(6 AjAj A(jAj)7  )(7  )7 Aj" AjAj" )7 Aj" AjAj(6  :h  6d  6`  :~  :}  :| Aj Ajӏ Aj Ajӏ AjAj AjAj(6 AjAj AjAj)7 AjAj)7  )7 Aj AjAj)7 Aj AjAj)7 Aj AjAj(6  )7 -! @ -A G AqA G  AjAj A(jAj(6 AjAj A(jAj)7  )(7  @ AqA F Aj E  A(jAj )7 A(jAj (6  )7( -! -~! -}! -|! -h! (d! (`!  AjAj A(jAj(6 AjAj A(jAj)7  )(7 AqAG  A!  Aj Aj(6 Aj Aj)7  )7  :  :  :  :  :  6  6 Aj Aj ( ! (! 6 6 Aj$  #A k"$@@@@@A-ʀ"AI A~j AA:ʀ (! A6 E A-ʀAAɀ"E  B7 A: A6  6 B7 AjA:AA:ʀ A j$ AȀ葀 AA A6 A6 AȀ6 B7 AjAȀ͑ #A k"$@@@@@A-ʀ"AI A~j AA:ʀ (! A6 E A-ʀAAɀ"E  B7 B7  6 A:AA:ʀ A j$ AȀ葀 AA A6 A6 AȀ6 B7 AjAȀ͑ ~#A k"$ AjAB@ /E  / ;AȀA+ AjAȀAȀ呀 )"B"7  B~}> A j$ ~#Ak"$ (! (! -! Aj )!@ ("AxG BBR B "(!@ Aj("(" E   @ (" E  (ʀ A Aʀ @@@ AȀA ( " @ Aq AȀA   A! AxrAxF   A! AxrAxF   Aʀ Aj$  ݏ #Ak"$ ("( !@@@@ (  A!A!   ("(! (!   6 Ax6 AȀ ("( ( - -ꏀ  6  6 AȀ ("( ( - -ꏀ #A0k"$@A-ʀ A6 AȀ6 B7 A B A(j7  6(  A j6  A/j Aj (!@@ -"AK AG  (!@ Aj("("E   @ ("E   (ʀ A Aʀ A0j$ A6 AȀ6 B7  6 A B 7  A j6 AjAȀ͑ q#Ak"$@@@ AK  M  A6 A j A AK !A ( !  ! Aj$   #Ak"$@@@ AK  M  A! A6 A j A AK   ( "E      I!  !  ! Aj$  #Ak"$@@@ AK  M  A! A6 A j A AK   ( "E  A !  A! Aj$  ~#Ak"$ AȀ6 B7 AB " 570 AB 57(   57  A j6 A6 Aj    (!@@ -"AK AG  (!@ Aj("("E   @ ("E   (ʀ A Aʀ @@@@@@ ( - A-ʀ!AA:ʀ  :  A6$ AȀ6 B7, AB A?j7 A:?  6( Aj  A j AA:ʀ (!@ -"AK AG  (!@ Aj("("E   @ ("E   (ʀ A Aʀ  A-ʀ!AA:ʀ  :  A6$ AȀ6 B7, AB A?j7 A:?  6( Aj  A j AA:ʀ (!@ -"AK AG  (!@ Aj("("E   @ ("E   (ʀ A Aʀ  A-ʀ!AA:ʀ E A60 A6$ AȀ6 B7(   A j  (!@ -"AK AG  (!@ Aj("("E   @ ("E   (ʀ A Aʀ Aj$ B7, B7$ AȀ6  A j B7, B7$ AȀ6  A j ^A!AA(ʀ"Aj6ʀ@ AH A!A-ʀ A :ʀAA(ʀAj6ʀA!  R#Ak"$@ (" AȀ葀  ( 6  6  6 Aj܏ ~#A0k"$@ (AxG ( ! A$jAj"A6 B7$ A$jAȀ ב AjAj ("6  )$"7 Aj 6  7 )! B7 AjAj" Aj"(6 A6A-ʀ  7@A Aɀ" AA   )7 Aj (6 AȀ6 6 A0j$ ~#A k"$@ (AxG ( ! AjAj"A6 B7 AjAȀ ב AjAj ("6  )"7 Aj 6  7 AȀ6 6 A j$ XA-ʀ (! (!@AAɀ" AA  6  6 AȀ6 6  AȀ6 6 #Ak"$AA(ʀ"Aj6ʀ@@@@@@@@@@ AH A-ʀ AA:ʀAA(ʀAj6ʀ  :)  :(  6$  6 A(ʀ"AL A Aj6ʀA(ʀ! Aj (  )7   Aj   :)  :(  6$  6 AȀ6 A6 A6\ AȀ6X B7d AB Aj70  A0j6` Aj Aj Aj (T!@ -P"AK AG (!@ Aj("("E   @ ("E   (ʀ A Aʀ     A(ʀ AjA(ʀ( AA(ʀAj6ʀAA:ʀ E  돀 A6\ AȀ6X B7d  Aj6` A0j Aj Aj -0 (4 A6h A6\ AȀ6X B7` A0j Aj Aj -0 (4 ( !@@@ (  A!A!    ("(! (!  6  6 B7$ B7  Aj6 Aj!  A! A6 A6  :A  :@  6<  68 AȀ64 A60 A6\ AȀ6X B7d AB A0j7P  Aj6` Aj Aj Aj (L!@ -H"AK AG  (!@ Aj("("E   @ ("E   (ʀ A Aʀ  #Ak"$  񏀀6 A6 AȀ6 B7$ A B A j70  A0j6 Aj A?j Aj - ( $~ )! AȀ6 A6 7 )7 *  -At"AȀj( AȀj( * A(ʀ"A ׏     ( (  =@ ("Aq @ A q 瑀  ܑ , .At"AȊɀj(6 Aɀj(6 , .At"Aɀj(6 Aɀj(6 #A0k"$ Aj AɀA AjAȀA Aɀ㑀! Aj 􏀀  )7 AȀA A jAȀ㑀! Aj   )7( AȀA A(jAȀ㑀󑀀! A0j$ [#Ak"$@@   Aj" )7A!  ;A! ; Aj$ ]#Ak"$@@    A j" ( 6A!  ;A! ; Aj$ ]#Ak"$@@    A j" ( 6A!  ;A! ; Aj$  #Ak"$A!@@@@ (" ("I  k"6 (" j"6 AG  -!@ -"APj"A I A A r"Aj"  AjI"AO  @ APj"A I A A r"Aj"  AjI"AO  @@@@@@@@@ At r"AJ A! Aq"AI A!A! AI  Aq"AO A!A!  A! A6 A: A;  :  A j6  A!A! AO   6 A: A;  :  A j6 AI  A~j" 6 Aj6 -!@ -" APj"A I A A r"Aj" AjI"AK  @ APj" A I A A r"Aj" AjI" AK   At r: AqAI AI  A|j" 6 Aj6 -!@ -"APj"A I A A r"Aj"  AjI"AK  @ APj"A I A A r"Aj"  AjI"AK   At r:  AI  Azj6 Aj6 -!@ -"APj"A I A A r"Aj"  AjI"AK  @ APj"A I A A r"Aj"  AjI"AK   At r: A0j A j ⑀ (0   (8"6  (4"6  j! A! !  Aɀ葀 Aɀ葀 @ ,"AL Aj! Aq!  -A?q! Aq!@ A_K At r! Aj!  At -A?qr!@ ApO A tr! Aj!  At -A?qr AtAqr! Aj! @@@ G A!  ,"AJ  A`I  ApI  -A?qAt -A?qA tr -A?qr AqAtAqrAF! AF   ! A B Aj7@ AB Aj78 AB Aj70  6L A6 Aɀ6 B7$  A0j6 AjAɀ͑ A! Aj$  AɀA(Aɀґ Aɀ葀 Aɀ葀 &@  k"AI    ( (  #Ak"$ (! (! Aj @ E @  6 Aj A jAɀ Aj! Aj" Aj! Aj$ D (!@ ("Aq @ A q 䑀   -  (-At"Aɀj( Aɀj( q#A k"$@@ ("(E !  A6  6 B7  )7 AjA! A j$ #A0k"$ (! (! (!A!@@@@@ " G A!  @@@@@@@@ E  G! Aj! ! !@@@ ," AL Aq!  -A?q! Aq! @ A_K At r!  At -A?qr! @ ApO A tr!  At -A?qr AtAqr" AF  APjA K  Aj! @@ AG A!  ,A@H  Aj! !  Aɀ葀  k! @  F  j,AL  Aj  @@@ - @ (" ! !  M  j",AL  ,AL   k!   -:AɀA+ AjAɀAțɀ呀  G  j!A! E   G  (AqE  -AG @ AF ,AL  Aj" jAj! @@  G A! @@ ," AL Aj! Aq!  -A?q! Aq!@ A_K At r! Aj!  At -A?qr! @ ApO A tr! Aj!  @ At -A?qr AtAqr" AG A! Aj! APjA I A rAjAO  A Aęɀ  A Aԙɀ  Aɀ A Aɀ A Aɀ @ E AɀAE !  @ AI /AG ,AL  Aj! Aj! @@ ! @@@@@@@@@@@ "E @ -A\j  AF  ,AJ  A Aɀ j! A! !@ ! " F @@ ," AL Aj! Aq!  -A?q! Aq!@ A_K At r! Aj!  At -A?qr!@ ApO  A tr! Aj!  At -A?qr AtAqr" AF Aj! k j! A\j  Aj! AF"  ,AJ  A Aɀ @@@ E  K   G  E   E A!  ! !  E A! j,AL   E A! @@  M j",A@H   k! j!A!  F  Aɀ  Aj"6$ A6  6  6 A:, A$6 A$6( Aj Aj (E @@@@@@ ( "AF Aj!@ ,A@H  @ I F   j,A@H  Aj!  AȚɀ ! ! Aj" E  @@  M j,A@H   k!  A!  G  j!@   @ /AӠG Aɀ!  @ /A G Aɀ!  @ /AҌG Aɀ!  @ /ĄG Aɀ!  @ /AǨG Aɀ!  @ /A̠G Aɀ!  /AҠG Aɀ!  -AG AI  ,AL   Aɀ! -AG  A!  AE  @@ Aj","AL Aq!  -A?q! Aq! @ A_K At r!  At -A?qr! @ ApO A tr!  At -A?qr AtAqr! @ A.F A! AɀA Aj! ,AJ  A Aɀ @ AɀAE A! Aj!A! AI  A~j! ,AJ  A Aɀ Aj!A! A! AɀAE    Aؚɀ Aj A Aɀ A Aɀ -AG  Aj" Aj"j! !@@A!  F @@ ," AL Aj! Aq!  -A?q! Aq!@ A_K At r! Aj!  At -A?qr!@ ApO  A tr! Aj!  At -A?qr AtAqr" AF  Aj! APjA I AjAI A! Aj  A -  AsA (" AsAjAI"AFr   6   Aj E A!  !  E A0j$  A AȚɀ A Aɀ ~#Ak"$@@@@@@ ("E ( Aj"6 AM @ ("E A!AɀA   A:  @ (" A!  AɀA !  @@@@@@@@@@@@@ (" ("O A! Aj"6@@@@@@@@@  j-"Aj ("E AܠɀA E       A0j A -0   )8" 7@ (E A0j  (0E  A jAj A0jAj)7  )07 ("E A! A j   ("E  P  (Aq A! AɀA  Aj (  (AɀAE   @ (" A!  AɀA !     (! -4"E  E A!AɀA    (! -1"E E A!AɀA   @  O Aj6@  j-"AjAqAI Aj!A! AqAO  @ E A!  @@@@@@@@@ ( A! ("E @AɀA E A!  (E  A0j A -0  (E  )8! A0j  (0E  AjAj A0jAj)7  )07@ AG  (D (LrE  ("E AɀA E A!  ("E AɀA !  @ (" A!  AɀA !  @ (" A!  AɀA E A!  ("E A! Aj E   (! @@@@ Aj  60 E A! A0j E   E A!AɀA E   E A!AɀA   (! (D (LrE E A!AɀA   ("E  Aj   (! (! -4"E E A!AɀA   (! -1"E  E A!AɀA    ("E A!AܠɀA     O   j-AG  Aj"6@@@@  O  j-AF     K!B! @@  O  j-AF   F @  j-"APj"AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6 Aj BB>B )BR  )" B|" Z  Aj6  Aj6 B}X  ("E A!AܠɀA E   ("E AɀA E   ("E A!AܠɀA E    @ ("E A!AɀA   A!  @ AF @ ("E AɀA   A  ("E A!AɀA E A! A: A6 E A!AܠɀA  :  E A!AܠɀA  :  E A!AɀA   (!  70 E  A0j   ("E A!AҝɀA E   E A!AܠɀA   :  E A!AܠɀA   : A! A6  @ ("E A!AɀA   A!   ("E A!AɀA   A! (E ( Aj6 Aj$   AɀAё #Ak"$ A6 @@@@ AI AI  AO   A?qAr:  A vAr:  AvA?qAr: A!   : A!   A?qAr:  AvAr: A!   A?qAr:  AvA?qAr:  A vA?qAr:  AvAqAr: A! (" k6 (AG  Ir"6A!@  ( A j ! Aj$   Aɀ ב ~@ Aj" ("j" O A (" k!  (" k! (! )!@@@@@@@@   j1BPE   j"6   K "   K!  j! ! @@  G A  ! ! @@  I   j" 6@  A6 6 6 A6 Aj" O  j" O   j-  j-F  j"6 ! E    j O   j!  j! Aj! - -F j j! A! E    Aɀϑ   j"  K Aɀϑ Aܕɀϑ  6 !  j" I  6 A6 #Ak"$@@@@@@@@@@@@ ( AF  AK   A; B7 A;  A; B7 A;  A; B7 A;  A; B7 A;  A; B7 Aܸ;  A; B7 A;  A; B7 A;  ޑE AjAjA: A; A:  AqAɀj-:  AvAqAɀj-:  AvAqAɀj-:  A vAqAɀj-:  AvAqAɀj-:  AvAqAɀj-: @ ArgAv"A~j"A O Aj jA:  AjjAjA; )7 Aj AjAj/; A : :  A Aɀϑ @ ߑE 6 A:  AjAjA: A; A:  AqAɀj-:  AvAqAɀj-:  AvAqAɀj-:  A vAqAɀj-:  AvAqAɀj-:  AvAqAɀj-: @ ArgAv"A~j"A O Aj jA:  AjjAjA; )7 Aj AjAj/; A : :  A Aɀϑ Aj$  AɀA N#Ak"$  6 AɀA AɀA A jAɀ! Aj$ ~@@@@@ ( -   - "As: (4! (0!@@ (" !  @  O  j",AJ    G   j! @@  F @@ ,"AL Aq!  -A?q! Aq!@ A_K At r!  At -A?qr!@ ApO  A tr!  At -A?qr AtAqr! Aq  AF A!@ AI A! AI AA AI! 6 A6  j"6  6 Aq  A6 A: (" (4"F  (0! !@  (<" Aj" j" O (8!  j!  j!  (" k! (" j! k! )! ($"AF! ! !@  G @@@   j1Aq  6A! !     K "  K! !@@@@@  G A  ! !@@  I  6@ AF A6$ 6 6 A6 Aj" O   j" O   j-  j-F  6 ! ! E    j O  j!  j! Aj! - -F  j!A! E    Aɀϑ   j"  K Aɀϑ  Aܕɀϑ  6$ !  j" I ! A!@ E !@@@  I  G  !   j,AL !  Aj" 6 6 A6     K6 A6 A6 6 6 A6    Aɀ  #Ak"$@@@@ (" ( "I  ("K  k! (" j! Aj" -" jAj-! @ AK Aq! @@@ AI Aj   ( ! (!  A! A!  F A! @@  j- G A!   Aj" G A! ! AG   jAj"6 @  I  K   k" j  6 6A!   j!  k!  O  Aq! @@@ AI    (! (!  A! A!  F A! @@  j- G A!   Aj" G A! ! AG   jAj"6 @  I  M   j!  k!  O A!  AAɀБ  6 6 Aj$ ~#Ak"$A! A jAA@@ ( "  ( (!  (! ("-!@@ ("E  j! A! A j! !@@@ ," AL Aj! Aq!  -A?q! Aq! @ A_K At r! Aj!  At -A?qr! @ ApO A tr! Aj!  At -A?qr AtAqr" AF  Aj! AF  6 Aj! Aj! G  j! A AK! Aj! At"Aj! A jjA|j! A jApj!A!A! ! A!A!A! @@@ Aj"AqAI APjAqA K  Ajj! Aj! @@AA$ k" A$K" A AIA A$I" Aq" K F AA k" AK"A AIA AI! A$ k!A!@@ -"Aj" AqAI APjAqA K  Ajj! Aq" "~"B  j" I @ K A$ k~"B  ! A IkjAj" A AIA K! A$j! ! Aj" G   Aj!  !  j" I   Aj"n" j" I  AsAjAI   F @@  lk" M  j k! ! @  kAq" E A! !@ Aj (6 A|j! Aj" G  k! AI   Atj!@ A j Aj)7 Aj )7 Apj! A|j" K  AO  A j Atj 6@ F -!A!@@ n" n j"AO !  A!@ A$j! AK! A#n" ! Aj!  A$lAq A&jAqnj! Aj! Aj! Aj!A! ! !  @ AO A j!@  (6 Aj "  Aj! A|j"  AAɀБ AAɀϑ A! AȝɀA  @ E    A! AѝɀA  A!    AҝɀA! Aj$ ~#Ak"$   AӝɀA@ Aj  (D"E @@@ Aj (H!  ! @@  kAM B!  B!B!  F  j!  j!B!@@@ ,"AL Aj! Aq!  -A?q! Aq!@ A_K At r! Aj!  At -A?qr!@ ApO  A tr! Aj!  At -A?qr AtAqr"AF  Aj! @@ APj"A I A A r"Aj"  AjI"AO  B !  F   Aԝɀ葀 7 7 Aj$  (" ("  K! (!A! !@@@  F   Aj"6 Aj!  j! ! -" APjAqA I ! AjAqAI AqAG  Aj"K @@ E @  I  G   M    j,A@H   K    K  6  j6 A6 A:    Aɀ ~~#Ak"$ (!@@@@@@ (" ("O  j-AF     K!B!@@@  O  j-AF   F @  j-"APj" AqA I @ AjAqAI AjAqAO  Acj!  Aj!  Aj"6  BB>B )BR  )" B|" Z A:  A!  Aj6@ B|"P 7A!  A:  B7  Aj6A!  A:  A: A! : Aj$ ~~#Ak"$@@@@ (" ("O (" j- AqF  B7   Aj"6@@@@@  O  j-AF     K!B!@@  O  j-AF   F @  j-" APj"AqA I @ AjAqAI AjAqAO  Acj!  Aj!  Aj"6  BB>B )BR  )" B|" Z   Aj6B!   Aj6 B|"PE  A:A!  @ B|"P 7  A:A!  A! : Aj$ ~A!@ (" ("O ( j-AG A!  Aj"6 @@@@  O (" j-APj"Aq"A K  Aj"6@  A!  Aq!  O @  j-APjAq"A K   Aj"6 B ~"B  " j" I   G !  A6 A: A6 A:  O  j-AG  Aj"6 @@@@@@@  j" I  6  K  E   I   F   A6 A:  j,A@H  @ E  O  j,AL   j!  k! @  B7 6 6 A!A k!  j!A!@@@  G A! !  Aj" j"-AG  j!@@A k F @  I  A! ! As G   ,AL  @ Aj" O Aj",AJ   AG  Aj! ! k! ! @ A6 A: 6 6 6 6 A6 A: A Aɀ  Aɀ    Aɀ e#Ak"$ (! A6@ A 6 Aj$ AȜɀA= AjAɀA̠ɀ呀 ~~#A k"$@@@@@@@@ ("E @ (" ("O  j-AF     K! !B!@@  O  j-AF   F @  j-" APj" AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6  BB>B )BR  )" B|" Z  @ (" A!  AɀA !  Aj6 B|"PE   Aj6B!  AjZ A! (! @ ( Aj"AK A!  E A!A! AɀA    A! (" E A!AܠɀA   :A! A6  AjAj" Aj" )7 6 >  )7 AqAG! )7 )7 A j$  ~~#A k"$@@@@@@@@ ("E @ (" ("O  j-AF     K! !B!@@  O  j-AF   F @  j-" APj" AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6  BB>B )BR  )" B|" Z  @ (" A!  AɀA !  Aj6 B|"PE   Aj6B!  AjZ A! (! @ ( Aj"AK A!  E A!A! AɀA    A! (" E A!AܠɀA   :A! A6  AjAj" Aj" )7 6 >  )7 AqAG! )7 )7 A j$  ~#A0k"$@@@@@@ ("E (" ("I  ("E A!AܠɀA E   @ (" A!  AɀA !  Aj"6  j-! ( Aj"6 @@@@@@@@@@ AK @@@@@@@@@@@@@@ Aj9         ("E A!AܠɀA E   ("E A!AɀA E    O   j-AF   A! E   Aj6 ("E A!AѝɀA E   A(j @ (("E   (,@@@ )AG )" BV  ("E A!AܠɀA    ("E A!AɀA E   ("E A!AɀA E   (! -,"E  E A!AɀA    A(j @ (("E Aj  (,@ )E )" BV "AsAjAK ("E A!AܠɀA E   (! -,"E E A!AɀA   @  ("E A!AɀA   @ ("E A!AɀA   A! E   O  j-AF  @  ("E A!AɀA   @ ("E A!AɀA   AF  ("E A!AɀA E   @  ("E A!AɀA   @ ("E A!AɀA   A!   ("E A!AɀA E   @  ("E A!AɀA   @ ("E A!AɀA   A j A! ( @ ($AG ("E A!AɀA   ("E A!AɀA E   @  ("E A!AɀA   A! A @@@@@ ("E (" (O  Aj6  j-Aj  @ (" A!  AɀA !  ("E A!AܠɀA E   @ ("E A!AɀA   A!   ("E A!AɀA E   @ ("E A!AɀA   A!   ("E AɀA E   ("E AܠɀA E  A!  @ ("E A!AɀA  A:  A! ( E Aj6A! E A! A   ("E A!AҝɀA E   E A!AܠɀA   :  E A!AܠɀA   : A! A6  A! A: A6  A!   A! (E ( Aj6 A0j$  ~~#A k"$@@@@@@@@ ("E @ (" ("O  j-AF     K! !B!@@  O  j-AF   F @  j-"APj" AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6  BB>B )BR  )" B|" Z  @ (" A!  AɀA !  Aj6 B|"PE   Aj6B!  AjZ A! (!@ ( Aj"AK  A!  E A!A! AɀA    A! ("E A!AܠɀA   :A! A6  AjAj" Aj" )7 6 >  )7 ! )7 )7 A j$  ~#A k"$@@@@@@@@@@@@@ ("E (" (O  Aj6  j-"Aj"Aq"AK A vAqE  (" A! @ (" A! AɀA ! AqAt"Aɀj( Aɀj( ! ( Aj"6 @ AK @@@@@@@@@@@@@@ Aj    @ ("E A!AɀA   ("E  (" (O   j-AG  Aj6 Aj  -  )"PE   @ ("E A!AɀA   (! AG  E A!AɀA E   @ ("E A!AɀA   A!  @ AG @ ("E AɀA   A! A  ("E A!AɀA E   @ ("E A!AɀA   Aj A! ( @ ( AG ("E A!AɀA   ("E A!AɀA E   @ ("E A!AɀA   A!   ("E  (" (O   j-AG  Aj6 Aj  -  )"P @ ("E A!AɀA   A! E   A! E   A!   ("E A!AɀA E   A!    (! -"E E A!AɀA   E A!AɀA   A! E ("E AܠɀA   (! -"E  E A!AɀA   6A! AE @ ("E A!AɀA  A:  ("E A!AܠɀA E   E A!AܠɀA   :  A! A: A6  E A!AܠɀA   : A! A6  @ AF ("E A!AɀA   A!   A! (E ( Aj6 A j$  #Ak"$@@ A!  A! A' Aj!@@@@@ A"F @ AG A'!    -AG A!@@@ AqAF - " - O   Aj:  j-!  A! A6 (! B7 E  A! A"E   - " - "  K!@  F   j! Aj! -E  A! A! Aj$  ~#Ak"$@@ (" A!  A!AɀA  @ BR AɀA !  @@ 5" T  }"BT A!AɀA    7 Aj !  AܠɀA  A! A: A6   Aj6 Aj ! Aj$  ~~#Ak"$@@@@@@@ ("E B! (" ("O   j-AG  Aj"6@  O  j-AF     K!B!@@  O  j-AF   F @  j-" APj"AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6  BB>B )BR  )" B|" Z  @ (" A!  AɀA !  Aj6 B|"PE   Aj6B! B|"PE  @ ("E A!AܠɀA   A! A: A6  @ (" A!@@ (" (O  j-AG Aj6A!  @ E ("E AɀA E A!  @ E A!  Aj! (" A!  @ P A!AɀA   (Aj6@ BE A!  B!@@  R ("E A!AɀA E   @ P ("E AɀA E A!  A! (Aj6 B|! BE  @@ (" A!  A!@@@ (" (O  j-AG Aj6A!  @ E ("E AɀA     Aj! (" A!  A! ( k6 Aj$  #A k"$A!@ "AqAF @@@ ("E (" (O  j-AG Aj6 (!@@ Aq E A!AɀA E   E A!AɀA   @@ (E   (E  AjAj Aj)7  )7@ ("E A! Aj   ("E AɀA   A!  @ ("E  (" (O   j-AG  Aj6@ ("E @AɀA E A!  (E    (E  AjAj Aj)7  )7@ ("E A! Aj   ("E AɀA   A! E  ("E AɀA !  (!@@ -"E E A!AɀA    E A!AܠɀA   :A! A6  AqE  ("E A!AɀA   A! A j$  ~~#Ak"$@@@@@@@ ("E B! (" ("O   j-AG  Aj"6@  O  j-AF     K!B!@@  O  j-AF   F @  j-" APj"AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6  BB>B )BR  )" B|" Z  @ (" A!  AɀA !  Aj6 B|"PE   Aj6B! B|"PE  @ ("E A!AܠɀA   A! A: A6  @@ ("E P A!AɀA   (Aj6@ BE A!  B!@@  R ("E A!AɀA E   @ P ("E AɀA E A!  A! (Aj6 B|! BE  !  ! ( k6 Aj$  #Ak"$@@ ("E A!@ (" ("O  j-AG A! Aj"6 @@@@  O  j-AF  E A!  Aj"6@@  O  j-AG Aj6A!Aɀ!  A(j @ (("E @ (,"E (4E  @ ("E A!AܠɀA   A! A: A6  (!@@ -,"E E A!AɀA    E A!AܠɀA   :A! A6  E  @ ("E A!AɀA   E  @ ("E A!AɀA   A;$  6 A6 A: A6  6 A6  6  6 A6 A(j @@ (( @ -% A:%@@ -$E ( ! (!  ( " ("F  ( j!  k!  Aȡɀ葀 (!  (06  j! (, k! @@ E     A(jA j A j)7 A(jAj Aj)7 A(jAj Aj)7 A(jAj Aj)7  )7(@ -M !@ (,! Aj A(j@@ (T -M  A:M@@ -LE (H! (D!  (H" (D"F  (, j!  k!  (D!  (\6D  j! (X k! @@  A!  AѝɀA  @ (" A!A!  !     -ME E AءɀA E  A!  @ ("E A!AڡɀA   @@@@ (" A!  A!@@ (" (O  j-AG Aj6  @ E ("E AɀA E A!    Aj! (" A! @ ("E A!AɀA   (! E  (" (O   j-AG  Aj6A!  A!  @ ("E A!AݡɀA   ! Aj$  @@ ("E A!@@ (" (O  j-AG Aj6  @ E ("E AɀA E A A! A  Aj! (" A!  @ ("E A!@@ (" (O  j-AG Aj6A @ E ("E AɀA E A @ E A Aj! (" A ~~#Ak"$@@ ("E (" ("O @  j"-AG Aj"6@@@  O  j-AF     K!B!@@@@  O  j-AF   F @  j-"APj"AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6  BB>B )BR  )" B|" Z  Aj6 B|"PE  @ ("E A!AܠɀA   A! A: A6  Aj6B! !  -AG Aj6 A!  ! Aj$  @@@ (" A!  A!@@ (" (O  j-AG  Aj6  @ E ("E AɀA E A!  A! A  Aj! (" A! 6 6 @@@ (" A!  A!@@ (" (O  j-AG  Aj6  @ E ("E AɀA E A!  @ E A!  Aj! (" A! 6 6 ~~#A0k"$@@ ("E A!@@ (" (O  j-AG Aj6  @@@@@@@@ E ("E @AɀA E A! ("E  (" ("O   j-AG  Aj"6@@@@  O  j-AF     K!B!@@  O  j-AF   F @  j-" APj"AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6  BB>B )BR  )" B|" Z  Aj6  Aj6 B}X  @ ("E AܠɀA   A: A6  ("E A!AɀA    Aj @ (E A jAj AjAj)7  )7 @ ("E A j  AɀA   A! AE   (! -"E  E AɀA E   A!  E AܠɀA   : A6  A!  Aj! (" A! A0j$  ~~#A k"$@@@ ("E (" ("O @  j"-AG Aj"6@@@@@@@@  O  j-AF     K!B!@@@  O  j-AF   F @  j-"APj" AqA I @ AjAqAI AjAqAO  Acj!  Aj! Aj"6  BB>B )BR  )" B|" Z  Aj6 B|"PE   Aj6B!  Z A! (! ( Aj" AK  E  AjAj" Aj")7 6  >  )7 !  )7 )7  A! ("E AܠɀA    E AɀA E  A!  : A6 A!  -AG Aj6 AE A!  AA A!  @ ("E AɀA E A!  @ (" A!  A!@@@ (" (O  j-AG A! Aj6  @ E (" E A!AɀA     Aj! (" A!  A! A j$   #A0k"$@@@@@@ ("E ("  ("  Kk!A! !@  jE   jAj6 Aj!  j! Aj" ! -"APjAqA I ! AjAqAI AqAG   jAj!@@ E @  I  M    K   j,A@H    K  @ Aj"Aq B 7  jAj" 6  6   j"6 @ A j"AI AF  ("E A!AܠɀA    @ (" A!  AɀA !  @ (" A!  A! A"  B 7  6  6  6 @ A j"AF A(j! @@@@@@ AF A'F  A j  - AG A!@@@ AqAF -*" -+O   Aj:* A j j-!  A! A6 ($! B7  E  AɀA+ A jAɀAɀ呀 A'E   -*" -+"  K!@  F  A j j! Aj!  -E A!  A j"AG A"!  ("E A!AܠɀA   A! A: A6 A0j$     Aɀ  #A k"$@@@@@@@@ ("E (" ("  K!A! !@  F  Aj" 6 Aj!  j! ! -" APjAqA I ! AjAqAI AqAG  Aj!@@ E @  I  M   K  j,A@H   K  Aj  j"  )  (" A!  @ (" A!  AɀA !  A!AɀA    E   (!  )7@ A!  A! Aj   A! -Aq  Aj"Aq"AO A vAqE  AtAq"Aɀj( Aɀj( !  @ (" E A!AܠɀA   A! A: A6  Aɀ葀 A j$     Aɀ  ~#Ak"$ Aj  AɀA@@@@@@@@@@@@@@@@@@ ( @ Aj Aj (T"AF  Aj Aj (@ (D (H (L (4AF (!   (X6A!  A! E  !@ ("Aj"E @  M  j",AJ    G   j!   kj!@@  F @@ ,"AL Aj! Aq!  -A?q! Aq! @ A_K At r! Aj!  At -A?qr!@ ApO  A tr! Aj!  At -A?qr AtAqr"AF  Aj! A@jAI APjA I  @  A!A!A!  @  I  F    j,AL  !   A A̢ɀ @@@@@@@@@@@@@@@@ AI Aɀ AE  /AڜF A! AF (A߾F  AG  /AڜG A! Aj!A!  Aj!A!@ AG A!  ,AL  A}j!  ,AL  A~j! Aj!  Aj!A!@ AO A!  @ ,AL A|j!   A Aɀ  A Aɀ  A Aɀ  j! A!@@@  F   j! Aj! ,AJ  E @@ ,"AL Aj! Aq!  -A?q! Aq! @ A_K At r! Aj!  At -A?qr!@ ApO  A tr! Aj!  At -A?qr AtAqr! Aj! @@ AG A!  AF A! @ APjA K A!@@ APj" A I @ E @  F @@ ,"AL Aj! Aq!  -A?q! Aq! @ A_K At r! Aj!  At -A?qr! @ ApO A tr! Aj!  At -A?qr AtAqr"AF  Aj! Aj" Aj! AG   B ~" B  " j" I   F @@ ,"AL Aj! Aq!  -A?q! Aq! @ A_K At r! Aj!  At -A?qr! @ ApO A tr! Aj!  At -A?qr AtAqr! Aj! AF  k!  AK  AG  A! -AF  A!A!  ! @ /AߤG ,"A@H  A~j! Aj!  -AG  ! @ ,"A@H Aj! Aj!   A Aɀ  A Aɀ A!A!A! AF A! @A؛ɀ AE !  @ ,"AL A}j! Aj!   A Aɀ ! A!A!@ AjAqAM A! A!  A!@@ F   j! Aj! ,AJ A! A!A!A!  AjAjB7 B7  6  6 AjA  -!@ (" !  (" / Aj-AtrAt r" O   j-AjAqAO  (! B7  6  6  6  6 AjA  -! ("  ! A!A! A! A!  AȜɀA= AjAɀAɀ呀 AȜɀA= AjAɀAɀ呀 (! / Aj-AtrAt r! A!@  !  @@ M  j",A@H  k!  G  j!A!A! A!    Aɀ @ A! A!  A.!A! -A.F  A! A!   j! !@@@ AJ -A?q! Aq!@ Aq"AK At r! Aj!  At -A?qr!@ AO  A tr! Aj!  @ At -A?qr AtAqr"AF Aj!  A!  Aj! Aq! @ A_jAI AqAjAI @ AFj' AjAM A!A!  @  F -!  A! 6 6 6 6 6 6 6 6 Aj$    Aɀ }#A k"$   @@ (E )7 Aj Aj)7 Aj Aj)7 Aj Aj)7  A6 A j$ F (" k6 (AG  Ir"6A!@  (  !  ~#Ak"$@@@ ( A!  ( (    Aj6 (!  6 B7 AB Aj!@@ AqE  70 A6, A6 Aܢɀ6 A6$ A:X A6T B 7L A6D A6<  Aj! A k!@@@@ AtAʀj(" A!A!  A! AA Avk AFt!A! @@ (Axq k" O ! !  A! ! !   Aj("   AvAqjAj("F  ! At!  @  r A! A t"A kr q"E  hAtAʀj(! E  @ (Axq k" I!@ (" Aj(!   !  ! !  E A(ʀ kO (!@ ( " F ("A(ʀI 6  6 @ Aj"(" ("E  Aj! @ ! "Aj"(" Aj! (" A6 @A(ʀ" I A(ʀ!@@  k"AI  j" Ar6  j 6  Ar6   Ar6  j" (Ar6A!A! A 6ʀA 6ʀ Aj! @A(ʀ" M  j"  k"Ar6A 6ʀA 6ʀ  Ar6 Aj! @@A(ʀE A(ʀ!  AB7ʀAB7ʀA A jApqAتժs6ʀAA6ʀAA6ʀA! A!@  Aj"j"A k"q" K AA06ʀ @A(ʀ"E @A(ʀ" j" M M  A!AA06ʀ A-ʀAq @@@ E Aʀ!@@ (" K  (j K  (" AА"AF  !@A(ʀ"Aj" qE k  jA kqj!  M  AK @A(ʀ"E A(ʀ" j" M   K  А" G   k q"AK  А" ( (jF  ! @  AjO AF @  kA(ʀ"jA kq"AM !  @ АAF  j! !  A kА  ! AG   A!  A!  AG  AA(ʀAr6ʀ AK  А!AА! AF  AF  O   k" A8jM  AA(ʀ j"6ʀ@ A(ʀM A 6ʀ @@@@A(ʀ"E Aʀ!@ (" (" jF  ("  @@A(ʀ"E O  A 6ʀ A!A 6ʀA 6ʀAA6ʀAA(ʀ6ʀAA6ʀ@ Aʀj Aʀj"6  Aʀj"6 Aʀj 6 Aʀj Aʀj"6  6 Aʀj Aʀj"6  6 Aʀj 6 A j"AG Ax kAq"j" AHj" k"Ar6AA(ʀ6ʀA 6ʀA 6ʀ jA86   O  I ( Aq Ax kAq"j"A(ʀ j" k"Ar6  j6AA(ʀ6ʀA 6ʀA 6ʀ  jA86  @ A(ʀO A 6ʀ j!Aʀ!@@@@@ ( F  ("  - AqE  Aʀ!@@@ (" K  (j" K  (! Ax kAq"j" AHj" k"Ar6 jA86  A7 kAqjAAj" AjI" A#6AA(ʀ6ʀA 6ʀA 6ʀ AjA)ʀ7 A)ʀ7A Aj6ʀA 6ʀA 6ʀAA6ʀ A$j!@ A6 Aj" I F  (A~q6 k"6  Ar6@ AK AxqAʀj!@@A(ʀ"A Avt"q A  r6ʀ !  (!  6  6  6  6  A!@ AK A& Avg"kvAq AtkA>j!  6 B7 AtAʀj!@A(ʀ" A t"q  6A r6ʀ  6  6  6  AA Avk AFt! (! @ "(Axq F  Av! At!  AqjAj"("  6  6  6  6   6  ( j6  !  (" 6  6 A6  6  6 A(ʀ" M A(ʀ" j"  k"Ar6A 6ʀA 6ʀ  Ar6 Aj!  A!AA06ʀ  @ E @@ ("AtAʀj"(G  6 A A~ wq" 6ʀ  AA ( Fj 6 E  6@ ("E 6  6 Aj("E Aj 6  6 @@ AK  r"Ar6 j" (Ar6  j" Ar6 Ar6 j 6@ AK AxqAʀj!@@A(ʀ"A Avt"q A  r6ʀ !  (!  6  6 6 6  A!@ AK A& Avg"kvAq AtkA>j! 6 B7 AtAʀj!@ A t"q  6A r6ʀ 6 6 6  AA Avk AFt! (!@@ "(Axq F  Av! At!  AqjAj"("  6 6 6 6  (" 6  6 A6 6 6 Aj!  @ E @@ ("AtAʀj"(G  6 A A~ wq6ʀ  AA ( Fj 6 E  6@ ("E 6  6 Aj("E Aj 6  6 @@ AK  r"Ar6 j" (Ar6  j" Ar6 Ar6  j 6@ E AxqAʀj!A(ʀ!@@A Avt" q A r6ʀ !  (! 6  6  6  6 A 6ʀA 6ʀ Aj! Aj$   Ax kAqj" Ar6 Ax kAqj"  j"k!@@ A(ʀG A 6ʀAA(ʀ j"6ʀ  Ar6  @ A(ʀG A 6ʀAA(ʀ j"6ʀ  Ar6  j 6  @ ("AqAG Axq!@@ AK (" Av"AtAʀj"F@ ( " G AA(ʀA~ wq6ʀ  F 6  6  (! @@ ( " F ("A(ʀI  6 6  @@ Aj"(" ("E  Aj! @ ! "Aj"(" Aj! (" A6  A! E @@  ("AtAʀj"(G 6  AA(ʀA~ wq6ʀ  AA ( Fj 6 E   6@ ("E  6 6 Aj("E Aj 6 6  j!  j"(!  A~q6  j 6  Ar6@ AK AxqAʀj!@@A(ʀ"A Avt"q A  r6ʀ !  (!  6 6  6  6  A!@ AK A& Avg"kvAq AtkA>j!  6 B7 AtAʀj!@A(ʀ"A t"q  6A  r6ʀ  6  6  6  AA Avk AFt! (!@@ "(Axq F  Av! At!  AqjAj"("  6  6  6  6  (" 6  6 A6  6  6 Aj  @ E Axj" A|j("Axq"j!@ Aq AqE   ("k"A(ʀ"I   j!@@@ A(ʀF @ AK (" Av"AtAʀj"F@ ( " G AA(ʀA~ wq6ʀ   F  6  6  (!@ ( " F (" I  6  6  @ Aj"(" ("E  Aj! @ ! "Aj"(" Aj! (" A6  ("AqAG   A~q6A 6ʀ  6  Ar6 A! E @@  ("AtAʀj"(G  6  AA(ʀA~ wq6ʀ  AA ( Fj 6 E   6@ ("E  6  6 Aj("E Aj 6  6  O ("AqE @@@@@ Aq @ A(ʀG A 6ʀAA(ʀ j"6ʀ  Ar6 A(ʀG AA6ʀAA6ʀ @ A(ʀG A 6ʀAA(ʀ j"6ʀ  Ar6  j 6 Axq j!@ AK (" Av"AtAʀj"F@ ( " G AA(ʀA~ wq6ʀ   F  6  6  (!@ ( " F ("A(ʀI  6  6  @ Aj"(" ("E  Aj! @ ! "Aj"(" Aj! (" A6   A~q6  j 6  Ar6  A! E @@  ("AtAʀj"(G  6  AA(ʀA~ wq6ʀ  AA ( Fj 6 E   6@ ("E  6  6 Aj("E Aj 6  6  j 6  Ar6 A(ʀG A 6ʀ @ AK AxqAʀj!@@A(ʀ"A Avt"q A  r6ʀ !  (! 6  6  6  6 A!@ AK A& Avg"kvAq AtkA>j!  6 B7 AtAʀj!@@A(ʀ"A t"q  6A  r6ʀ  6  6  6  AA Avk AFt! (!@@ "(Axq F  Av! At!  AqjAj"("  6  6  6  6  (" 6  6 A6  6  6 AA(ʀAj"A 6ʀ k~@@ A!  ~"!  rAI A  B AG! @ "E A|j-AqE A   @  @ A@I AA06ʀA A AjApq A I! A|j"("Axq!@@@ Aq AI   ArI   kA(ʀAtM   Axj" j!@  I  k"AI    AqrAr6  j" Ar6  (Ar6    @ A(ʀG A(ʀ j" M    AqrAr6A  j"6ʀA  k"6ʀ  Ar6  @ A(ʀG A(ʀ j" I @@  k"AI   AqrAr6  j" Ar6  j" 6  (A~q6   Aq rAr6  j" (Ar6A!A! A 6ʀA 6ʀ  ("Aq Axq j" I k! @@ AK (" Av" AtAʀj"F@ ( " G AA(ʀA~ wq6ʀ   F  6  6  (! @@ ( " F ("A(ʀI  6  6  @@ Aj"(" ("E  Aj! @ ! "Aj"(" Aj! (" A6  A! E @@  ("AtAʀj"(G  6  AA(ʀA~ wq6ʀ  AA ( Fj 6 E   6@ ("E  6  6 Aj("E Aj 6  6 @ AK  Aq rAr6  j" (Ar6    AqrAr6  j" Ar6  j" (Ar6    @ " A  A|Ax ("Aq Axqj"   I!  !  j!@@ ("Aq AqE  (" j!@@@@ k"A(ʀF @ AK (" Av"AtAʀj"F ( " G AA(ʀA~ wq6ʀ  (!@ ( " F ("A(ʀI  6  6  @ Aj"(" ("E  Aj! @ ! "Aj"(" Aj! (" A6  ("AqAG   A~q6A 6ʀ  6 Ar6  F  6  6  A! E @@ ("AtAʀj"(G  6  AA(ʀA~ wq6ʀ  AA ( Fj 6 E   6@ ("E  6  6 Aj("E Aj 6  6 @@@@@ ("Aq @ A(ʀG A 6ʀAA(ʀ j"6ʀ Ar6 A(ʀG AA6ʀAA6ʀ @ A(ʀG A 6ʀAA(ʀ j"6ʀ Ar6 j 6 Axq j!@ AK (" Av"AtAʀj"F@ ( " G AA(ʀA~ wq6ʀ   F  6  6  (!@ ( " F ("A(ʀI  6  6  @ Aj"(" ("E  Aj! @ ! "Aj"(" Aj! (" A6   A~q6 j 6 Ar6  A! E @@  ("AtAʀj"(G  6  AA(ʀA~ wq6ʀ  AA ( Fj 6 E   6@ ("E  6  6 Aj("E Aj 6  6 j 6 Ar6 A(ʀG A 6ʀ @ AK AxqAʀj!@@A(ʀ"A Avt"q A  r6ʀ !  (!  6  6 6 6 A!@ AK A& Avg"kvAq AtkA>j! 6 B7 AtAʀj!@A(ʀ"A t"q  6A  r6ʀ 6 6 6  AA Avk AFt! (!@@ "(Axq F  Av! At!  AqjAj"("  6 6 6 6 (" 6  6 A6 6 6 z@@@ AG !  A! AI  Aq  Av" Ajq A0!A@ k I  A AK ! @  A0 6A!  @@ A AK" Ajq !  A !@ "At! I @A@ k K AA06ʀA @ A AjApq A I"jA j" A Axj!@@ Aj q !  A|j"("Axq  jAjA kqAxj"A  kAKj" k"k!@ Aq 6 ( j6   (AqrAr6 j" (Ar6   (AqrAr6  j" (Ar6   @ ("AqE Axq" AjM  AqrAr6 j"  k"Ar6 j" (Ar6   Aj p~#Ak"$@ E B7AB Aj )"B"7  B~}An7 Aj$A 'ΐ@ " A A 6ʀA Đ @A(ʀAG  #Ak"$@@ A j Aj @ ( " Aʀ!  @@ Aj"E ("E A"   A  E    A A 6ʀ Aj$  Aq  Aq   Aq  Aq  Aq  Aq   Aq    Aq    Aq   cA(ʀ!@@ " AA06ʀA @ Aj M AA6ʀA ! "@ b @  a  !  "@ b @  a  !       #Ak"$@A-ʀAq A-ʀAq A!@@@@  Aj"E AG AA:ʀ  @ - ( "Aj"E       ( jA:  ϐ   Aj! A A Aj$ @@ Aj E @A(ʀ"A(ʀG A(ʀ!@A AtA "" A   At!A 6ʀA 6ʀ  @@@@ "-ARj Aj!  Aj! -"E A/G  Aj! @ " A A Aj6ʀA(ʀ Atj" 6  6A Ő N@ ?At @ Aq AL @ Av@"AG AA06ʀA At Ő @ A=" G A A!@  k"j- A(ʀ"E ("E Aj!@@@    j"-A=F  (! Aj!   Aj!  M#Ak"$  6  6  6  6AʀAŀ Ő  Ӑ ~|@ "B Aq"AI @ A|j r DD-DT! @ BU D  @@ AK D-DT!?! AI D\3&< "     D =?DuI?D;h(DUDU?D}oԿDUUUUUU?    D.Ÿ?DYl濠DȊY*@DK-':D? D-DT!? @ BU D-DT!? D?D?""  D =?DuI?D;h(DUDU?D}oԿDUUUUUU? D.Ÿ?DYl濠DȊY*@DK-':D?D\3&"  D? D?" D =?DuI?D;h(DUDU?D}oԿDUUUUUU? D.Ÿ?DYl濠DȊY*@DK-':D? " Bp"    " !  @ B4Aq"AK D" 𐀀 @ AK D D𿠟  D9B.? ~|@ "B Aq"AI @ A|j r D-DT!?Dp8 D  @@ AK A@jAI  "     D =?DuI?D;h(DUDU?D}oԿDUUUUUU?    D.Ÿ?DYl濠DȊY*@DK-':D?  D? D?" D =?DuI?D;h(DUDU?D}oԿDUUUUUU? D.Ÿ?DYl濠DȊY*@DK-':D?! !@@ AI D-DT!?   " D\3&!  D-DT!? Bp"    D\3&<    " D-DT!?! BS! |~ !@@ "B4Aq"AI D9B.?!  @ AI  D?  D?!  AI  " D?D?𐀀!   BS ~|@@ "B Aq"AI b D-DT!?  @@ AK A! AO   !@ AK @ AK D D@!A!  D D?!A!  @ AK D D?D?!A!  D !A! " "    D/lj,DDR-ޭDmt򰳿Dq#qD똙ɿ!      D":?D v$K{?DQ=Рf ?Dn LE?D$I?D UUUUU?!@ AK   At"Aɀj+   Aɀj+ " BS! ~|@  a aq  @ "B "A|j "r ِ AvAq" "B?r!@@ B Aq" r !@@  D-DT! @ D-DT!  @ Aq" r D-DT!?  @@ AG AG  AtAɀj+ @@ AF A j O  D-DT!?  @@ E D! A j I  ِ! @@@   D-DT! @ D\3& D\3&D-DT!  AtAɀj+!  |~ !@@@ "B4Aq"AK AI   "  D? !  D? " ! 𐀀D?!   BS ~|@ "B Aq"AI  A!@@ A?K A! DPC"B Aq"E  An jB B"   "   D?DQD迠  DIJ`?D $(Da? B|B|"  "    ! |D? "D?""D?      D>DwQlVDLUUUUU?  "   D8Dı!>DRO~  ! ||#Ak"$A! A}jAm"A AJ"Ahl j! @ AtAɀj(" Aj" j"AH  k! j" Aq!@ E At AtkAɀj! A~q! Aj!A!@D!D!@ j" AH A|j(!  9@ AH (! Aj 9 Aj! Aj!  Aj"G j! E @@ AN D!  AtAɀj(! Aj Atj 9 Ahj!A! A AJ! Aq! Aq! At AjjApj!@ ! @@ AN D!  A!D!@ E ! !@ Aj+ + + Aj+ ! Apj! Aj! Aj"G E Atj+ Aj j kAtj+ !  Atj 9 Aj! Aj! G Aq! Aq!A/ k!A0 k! AjA|j" Atj! AjAxj! AjApj! Apj! Agj! ! @@  At"j+!@ AH" A!@@ AG !  Aq!  j!A! Aj!@@@ Dp>"DAcE !  Ax! @@ "Dp "DAcE !  Ax!  6@@ Aj+ "Dp>"DAcE !  Ax! @@ "Dp "DAcE !  Ax! Aj 6 + ! Aj! Apj!  Aj"G k! AqE At!@@ Dp>"DAcE !  Ax! Aj j!@@ "Dp "DAcE !  Ax!  6 At jAxj+ ! @@  "D?D "DAcE !  Ax!  !@@@@@ AH" At AjjA|j" ("  u" tk"6  u!  j!    At AjjA|j(Au! AH   A! D?f A!  @@ E A!  A!A!@ AF Aq! A! Aj!A!@ (!A!@@  A!  A!    k6A! Aj"(!A!@@ E A!  A!    k6A! Aj! Aj"G AqE Aj Atj"(!A!@  A!  A!    k6A! @  A!@@  A! At AjjA|j" ( q6 Aj! AG D? !A! E D? ! @ Db @ L k"Aq!A! !@ kA|K A|q!  Atj!A! !@ ( Aj( Aj( A j( rrrr! Apj! A|j! A|j" @ E  Atj!@ ( r! A|j! Aj" E Aj AtjA|j! ! @ Aj! Ahj! (! A|j! E  ! !@ Aj! (! A|j! E   jAtj!@ Aj j"Atj Aj" jAtAɀj(9@@ AN D!  A!D!@ E ! !@ Aj+ + + Aj+ ! Apj! Aj! Aj"G E Atj+ Aj  kAtj+ !  Atj 9 Aj! H !  @@ A k"DpAfE At!@@ Dp>"DAcE !  Ax! Aj j!@@ Dp "DAcE !  Ax!  6 Aj!  @@ DAcE !  Ax! ! Aj Atj 6 @ AH D? !@@ AqE !   Atj  Aj Atj(9 Aj! Dp>! @ E Aj! At AjjA|j! At jAxj!@  Dp>" (9 Aj  Aj(9 Axj! Apj! Dp>! A~j" AH  Atj! !@@@ "k" H"AN D!  @@  A!D!  AjA~q!D!A!A!@ Aȼɀj+ j"Aj+ Aɀj+ + ! Aj!  Aj"G Aq AtAɀj+   jAtj+ ! Aj Atj 9 Axj! Aj! AJ @@@@@  D!!@ AH Aj Atj"+!@@ Aq ! !  Aj Aj"Atj" +"" "9   " 9 @ AF" Aj! At AjjApj!@  +"# Aj"+"$ """9 Aj  $ 9   # "9 Apj! "! A~j"AK Aj! Aj Atj"Axj! +!@  +"" "9 Aj  " 9 Axj! ! Aj"AK AF Aj! Aj Atj!D!!@ ! +!! Axj! Aj"AJ +!    9  !9  +9  @@ AN D!  @@ AjAq" D! !  Aj Atj!D! !@ Aj!  +! Axj! Aj" AI Aj! At AjjAhj!@  Aj+ Aj+ Aj+ +! A`j! A|j"    9  @@ AN D!  @@ AjAq" D! !  Aj Atj!D! !@ Aj!  +! Axj! Aj" AI Aj! At AjjAhj!@  Aj+ Aj+ Aj+ +! A`j! A|j"    9 + !A!@ AH Aq!@ AjAI Aq! AjA j!A!@  Ahj+ Apj+ Axj+ +! A j! Aj"G Aj! E Aj Atj!@  +! Aj! Aj"    9   9  !9  +9 Aj$ Aq ~||#A0k"$@@@@ "B "Aq"AԽK A?qA$F @ AK @ BS  D@T!"D1cbaн"9  D1cbaн9A!   D@T!?"D1cba="9  D1cba=9A!  @ BS  D@T! "D1cbaའ"9  D1cbaའ9A!   D@T! @"D1cba="9  D1cba=9A~!  @ AK @ A׀K AˀF @ BS  D0|"Dʔ齠"9  Dʔ齠9A!   D0|@"Dʔ="9  Dʔ=9A}!  AF @ BS  D@T!"D1cba"9  D1cba9A!   D@T!@"D1cba="9  D1cba=9A|!  AK   Dm0_?D8CD8à"D@T!" D1cba=""9 Av" B4AqkAH! @@ DAcE !  Ax! @   D`a="" Dsp.;  ""9@  B4AqkA2N !   D.;"" DI %{9  ""9   9  @ AI  "9  9A!  @@ BB"DAcE !  Ax!  "9@@ DpA"DAcE !  Ax!  "9 A j" DpA9A! @ Aj! +! Axj! Da Aj  AvAwj Aސ! +!@ BU  9  +9A k!   9  +9 A0j$  | "   D|Z:=D+Z  D}W>Da*D?!  !@    DIUUUUUſ   D?    DIUUUUU? |#Ak"$@@ B Aq"AäK D?! AI  Dݐ!  @ AI !  ߐ! +! +!@@@@ Aq  ݐ!   A!   ݐ!   A! Aj$  ( Df 琀DD |@@ "B "AܘK D?! AI  鐀" D?" D? @ AܘK 琀"D? D? ␀!       D䐀  Dp䐀 ~|~@@@ "B4Aq"AxjA?O !  D?! AI A! AI D! BxQ @ AG D? @ BU A吀 A搀 A+ɀ A+ɀ"" "A+ɀ A+ɀ " "  A+ɀA+ɀ  A+ɀA+ɀ "AtAq"Aɀj+ ! Aɀj) B-|!@   萀 " !  |@ BBR B@|" D @ B?|" " "D?cE D?"   D? D! D ~|@@@@@@ "B Aq"AЍI b @ BY D D9B.@dE  D AI  AK @ BS DB.濠!A!DvD۪DUZ?DD?"D@  "D@ !@       !@@@ Aj D?D࿠ @ DпcE  D?D " D? AjB4!@ A9I D?" D  AFD AsB4!@@ AK D?  !   D?! ! ~~@@ "B"P  b "B4Aq"AG  "  @ B" V D  Q B4Aq!@@  A!@ B "BS @ Aj! B"BU A k!  BB! @@  A!@ B "BS @ Aj! B"BU A k!  BB! @  L @@  }"BS ! BR D B! Aj" J ! @  }"BS ! BR D @@ BX !  @ Aj! BT! B"!  B!@@ AH Bx| B4!  A k!   |~|@ " " T"""B4"AF  !@ PE  @ B4"AG  @  kAH  @@ A I D0! D0!Dk!  D?! AK Dk! Dk!D0!   "  "  DA"  ""    DA"  ""   !  DD  " ~|~@ "B@|BV D" DA" " A+ɀ""" ""   A+ɀ A+ɀ A+ɀA+ɀ A+ɀ A+ɀA+ɀ A+ɀ A+ɀA+ɀ      @@ B0"A~jA~K @ BBR A쐀 BQ @@ AK AqAG  퐀 D0CB||! B@|" B4"A+ɀ B-AqAt"Aɀj+" Aɀj+  Bx} Aɀj+ Aɀj+"" "  A+ɀA+ɀ A+ɀA+ɀ A+ɀ A+ɀ  ! ~|@@@@@ "BS B "A?K  @ BBR D  BU  D AK A!Ax!@ AF !   D DPC"B !Aw!  A%j"Avj"D`PD?" A?qAjB BD" D?"Bp"D {?" "  D@"   " "  Dx ?Dxq?D?   DDR>?D˖dF?DY"$I?DUUUUU?  "D {? D6+Y= Dխ8=! ~|| "B !@@@@@ BS AK  @ A{I D! Da  D @ AtAO  D! A{O D!  AM  D?""B A%j"AvAxj!D!@ AK D? D𿠡 AK ! A?qAjB BD! ! DB.? D@" D?"  " "  Dx ?Dxq?D?    DDR>?D˖dF?DY"$I?DUUUUU? DvD2?Dh&0?DW?Dn&?DA?  "!@  A Atk"     " "  Aq @ E D " Bp"  Bp"  D? !  #Ak"$@@ B Aq"AäK AI  DA!  @ AI !  ߐ! + + Aq! Aj$ |@@ "B "A맆I @ AЁI D D?!  D?D@  鐀D@!  @ AI  鐀" D@!  AI D鐀" D@!   BS 7#Ak"$  6  ! Aj$  @("E @@ ( (F AA (  @ (" ("F  kA ($ (4" @A(ʀ"E @ ( (F AA (  (" ("F  kA ($ @A(ʀ"E @ ( (F AA (  (" ("F  kA ($ @A(ʀ"E @ ( (F AA (  (" ("F  kA ($ \ (<"Aj r6<@ ("AqE A r6A B7 (("6 6  (,j6A @@ (" A!   (! @  ("k O   (  A!@ (@AH E j!A!@@  jAj-A F   Aj"j A!    j" ( " I   j!A k! (!    ( j6  j!    l!@@ (" A!   (! @  ("k O   ( !  A!@@  !  A!@ (@AN !  j!@@  jAj-A F   Aj"j A! !    j" ( " I   j!A k! (!    ( j6  j! @  G A   n Aʀ ;#Ak"$  6 Aʀ ! Aj$  9#Ak"$  6   ! Aj$  (8 q#Ak"$A!@@ AJ AA6ʀ  @   A jÐ"E A 6ʀA!  ( ! Aj$  #Ak"$  6  6  ("6  ( k"6A!@@ (8 A"  j"F !@@ AJ A! A6 B7 (A r6 AF   (k!    ("K"Atj" (  A k"j6 A A j" ( k6 !  k" (8  k""G (("6 6  (,j6 ! Aj$  d#Ak"$@@  Aq Aj"E AA  AF6ʀB!  )! Aj$   (8   f#A k"$@@ Aj" A;! -AG -A$q A!  A!A 6ʀ A j$  ; A6 @ -Aq (8 A6@     U@A(ʀ" Aʀ!AAʀ6ʀ A AKAtAʀj/Aؠʀj ( A!@ E @ AK :A @@A(ʀ @ AqAF AA6ʀ  :A @ AK A?qAr: AvAr:A @@ AI A@qAG  A?qAr: A vAr: AvA?qAr:A @ A|jA?K A?qAr: AvAr: AvA?qAr: A vA?qAr:A AA6ʀ A!  @ A A ~@ "B4Aq"AF @  @ Db A6  DC !  (A@j6   Axj6 BB?! $ !AA  A  G #Ak"$  6 AjA jB7 AjB7 AjB7 B7 B7  6@@A  Aj Aj AjAN A!  (!@ (  Aj68 Aj!A! A! !@@ ("E  Aj "AH   kK  Aj!  j" I AH @ Aq"  L AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @ E A!@ ("E  Aj " j" K @ -A q Aj   Aj!  I @ AG  L AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj      J!   AH"q  +8!" A6l@@ "BU "!"A!#A!$AĀ!%  @ AqE A!#A!$AĀ!%  AĀAĀ Aq"#!% #E!$ @ "Dc #Aj!@ Aq  L AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @ ("A q % #  (! @ A q AŀAŀ A q"AŀAŀ  " "bA  @ AqAG  L AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj      J!  @@@ " Aj"" """Da  (l"Aj6l A r"&AG   A r"&AF A  ! (l!   Acj"6lA  ! "DA!" AjAA AH"'At"(j"!@@@ "DAc "DfqE "!  A!  6 Aj! " DeA""Db @@ AN ! !  !@ A AH!@ A|j" I !!B! @  5 ! B|" B" B~}> A|j" O "E A|j" 6 @@ " M  A|j"(E  (l k"6l ! AJ @ AJ AjA nAj!) &AF!*@A k"A A H!@@  I (!  A v!A tAs!A! !@  (" v j6  q l! Aj" I (! E  6 Aj!  (l j"6l   EAtj" *" )Atj   kAu )J! AH A!@  O  kAuA l! ("A I A !@ Aj!  A l"O @ A  &AFk AG &AF"qk"  kAuA lAwjN AjAA 'At"'j Aj"A m"At"+j"*A`j!A !@  A lk"AJ A k")Aq!A !@ AjAI )Axq!A !@ A/l! Axj" E @ A l! Aj" *A`j!)@@ ("  n"& lk" ) F  @@ &Aq D@C!" AG   M  *A_j-AqE  D@C!" D?D?D? ) FD?  Av")F  )I!,@ $ %-A-G ,!, "!"   k"6 " , "a   j"6@ AI ' +jj!@ AjA6@  O A|j"A6  (Aj"6 A|j! AK Aj!  kAuA l! ("A I A !@ Aj!  A l"O Aj"   K!  j (k!@@ ! " M"  A|j! A|j"(E @@  Aq!)  AsA A " J A{Jq" j!AA~  j! Aq") Aw!@  A|j("E A! A p A !A!@ Aj!  A l"pE AuA l!@ A_qAG A!)   jAwj"A AJ"  H!  A!)   j jAwj"A AJ"  H! AA  )r"&J   &AGjAj!*@@ A_qAG"(  *AsJ A AJ!  @@  ! !   Au"s k! ! !@ Aj"  A n"A lkA0r: Aj! A K! !  @  kAJ   kj"A0  AjkAvj A~j"$ : AjA-A+ AH:  $k" *AsJ  *j" #AsJ   #j!@ Aq"  L AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @ -A q % #  @ AG  L AjA0  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   (     K"!@@@@@ ("E A!@ Aj j  A n"A lkA0r: Aj! A K! !  Aj" Ajj!@  F AjAH   AG   A !  G  A0:X !  Aj j" Aj I"A0  Ajj k @ -A q   k  Aj" M @ &E -A q AŀA  @@ AN !  @  I !  @@@@ (" ! !  ! !@ Aj"  A n"A lkA0r: Aj! A K! !   AjM   Ajj k"A0  Ajk @ -A q  A A H  Awj! Aj" O  A J! !  A0 A jA A  AʀA6  A!AĀ! ! ! !   k"  J" AsJ    j"  J" J @ Aq"  L AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @ -A q    @ AG  L AjA0  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @  L AjA0  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @ -A q    AG   L  AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q  Aj    @ AH  Aj  K! !@@@ ("E !@ Aj"  A n"A lkA0r: A I! ! E  A0:X ! @@  F  AjM  AjA0  Ajk Aj!  @ -A q A  Aj!@ ) AH  -A q AŀA   k!@ -A q     H   k! Aj" O  AJ A0 AjAA -A q $  $k  AG   L  AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q  Aj    % AtAuA qj!@ A K @@A k"Aq" D0@!,  Atj!D0@!,@ Aj! ,D0@!, Aj" A k! @ A{jAI @ ,D0@D0@D0@D0@D0@D0@D0@D0@!, Axj" @ -A-G , " ,!"  " , ,!" @@ (l"E  Au"s k! !@ Aj"  A n"A lkA0r: A I! ! E  A0:O ! #Ar! A q! A~j" Aj: AjA-A+ AH: Aq! Aj!@ !@@ "DAcE "!  Ax!  Aʀj- r: " D0@!"@ Aj" AjkAG @  AJ "Da  A.: Aj! "Db A  k" j"k H  Aj  Ajk" A~j H  " j!@ Aq"  L AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @ -A q    @ AG  L AjA0  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @ -A q Aj   @  k"AH AjA0 A AI"@  @@ -A q AjA  A~j"AK -A q Aj   @ -A q    AG  L AjA  k"A AI"@  @@ -A q AjA  A~j"AK -A q Aj      J"AN AʀA=6 A! Aj$  @@@@@@@@@@@@@@@@@@@ Awj   ("Aj6 47  ("Aj6 57  ("Aj6 47  ("Aj6 57  (AjAxq"Aj6 )7  ("Aj6 27  ("Aj6 37  ("Aj6 07  ("Aj6 17  (AjAxq"Aj6 )7  ("Aj6 57  (AjAxq"Aj6 )7  (AjAxq"Aj6 )7  ("Aj6 47  ("Aj6 57  (AjAxq"Aj6 +9   ("Aj6 (6 #Ak"$@  L Aq    k"A AI"!@  @@ -A q A  A~j"AK -A q    Aj$ AŀAʀŐ #Ak"$  Aj "6tA! A Aj"  K6x AA"A6@ AÆ6  Aj6D  Aj6(@@ AJ AA=6ʀ  A:   ! Aj$  (D"(!@ (" ( ("k"  I"E     ( j"6  ( k"6 @    I"E     ( j"6  ( k6 A: (("6 6  @ ,"Arj! Aj"! Aq"A F ! AzK A!@@@@ AUj Aj!A!  A! ,! A!@ APj"A K Aj!A!@ A l k! ,! Aj! APj"A I A k    (<"Aj r6<@ ( (F AA (  A6 B7@ ("AqE A r6A (( (,j"6 6 AtAu T#Ak"$A!@  AjA (AG -! Aj$  G 7X (( ("k7` (!@ P  k W  j! 6T ~ )` (" (("k|!@@@ )X"P  Y  "AJ  (! ((! B7X 6T   k|7`A B|! (! (!@ )X"BQ  }"  kY  j! 6T  ((" k|7`@  K Aj :  % |~~~|#Ak"$A~!A!A!D!@@@  Aw!A5!A! @@@@@ (" (TF Aj6 -!  ! AwjAI @ A`j AA A-F!@ (" (TF Aj6 -!  !  A! @@@ A_q" AG @@ (" (TF Aj6 -!  ! A_qAG @@ (" (TF Aj6 -!  ! A_qAG @@ (" (TF Aj6 -!  ! A!@@ A_q" AG @@ (" (TF Aj6 -!  ! A!@ A_qAG @@ (" (TF Aj6 -!  ! A! A_qAG @@ (" (TF Aj6 -!  ! A! A_qAG @@ (" (TF Aj6 -!  ! A! A_qAF  E  @ )X" BS (Aj6 E AG @ BS (Aj6 A{jA{K @ BS (Aj6 AzjA{K @ BS (Aj6 AyjA{K BS (Aj6 C!  AG @@ (" (TF Aj6 -!  ! A_qAG @@ (" (TF Aj6 -!  ! A_qAG @@ (" (TF Aj6 -!  ! @@ A(G A! A!  D! )XBS  (Aj6  @@@ (" (TF Aj6 -!  ! Aj! @@ APjA I AI Aj! AF AO  Aj! Aj!  @ A)G D!  @ )X" BS (Aj6 @@ E @ D!  Aj! @ AqE Aq! A!@@ BS (Aj6 Aj"G k! AO D!  AA6ʀ B  BS!@@  (A}j6 @  (Aj6 A|j" D!  @ )XBS (Aj6 AA6ʀ B  @@@@@ A0G @@ (" (TF Aj6 -!  ! @ A_qAG    !  (!@ )XBS Aj"6 A k! @@  (TF Aj6 -!  ! k!@@ A0F A.G A!  @ (" (TF Aj6 -!  ! A!A k" k!B! A! A.G  @@ (" (TF Aj6 -!  ! @ A0F A!  B! @@@ (" (TF Aj6 -!  ! B|! A0F A!A!  A!A! B! A! A6 APj! @@@@@@ A.F" B! A M A! A!  B!A!A! A!@@@ AqE @  ! A!  E!  B|!@ AJ  Atj! @ E  (A ljAPj!   A0F! 6A!A Aj" A F"! j!  A0F  (Ar6A! @@ (" (TF Aj6 -!  ! APj! A.F" A I  ! @ E A_qAG @ "BR E B! )XBS (Aj6  |!  E! AH  )XBS (Aj6 E AA6ʀ BD!  BD!  @ (" D!  @ B U R  vErAG  !  @ AvW AA6ʀ DD!  @ AjY AA6ʀ DD!  @ E @ AJ  Atj" (!@@A kAq" !  !@ Aj! A l! Aj" @ A~jAI Awj!@ A/l! Aj" 6 Aj! !@ A N  J AJ @ A G  (!  @ AJ  (A kAtAʀj(!  (!@  A}ljAj"AJ v   AtAȱʀj(!  Aj! At jAj!@ Aj! Axj! A|j" ! (E A!@@ A o" A!  A! A j AH!@@ A!  AA kAtAʀj("m! A! !A!A! @ (" n" j"6 AjAq  F Eq"! Awj  ! Aj!   lk l! Aj"G E 6 Aj!  kA j! @  Atj! AH!@@@  AG  (AK  Aj!A! @ !@@  Aq"Atj" 5B |" BZ A!  B"B~}! ! "6     F AjAq"G! Aj! G Acj! ! E @@ AjAq" F !   AjAqAtj" (  Atj(r6 ! A j!  Atj 6  @@  AqAtj!  AjAqAtj!  AjAq" Atj!@@@@ Aq" F @  Atj("AI AG  AjAq" F  Atj(AK  AG A! !  AG  !  AF  A A AJ!@@ F  j!A v!A tAs!A! !@  Atj" (" v j"6 AjAq F Eq"! Awj  ! q l! AjAq" G E  F   Atj 6 !   j! AI! AF! F! @@@ E E  !  @@ ("AI AG  (AK  E A!  E  ! !   j!  (Ar6 AjAq"At jA|jA6  Atj(! !@ AjAq" G AjAq"At jA|jA6 DeA  Atj( "!D!@@ A5j" k"A AJ  H"" A4M D!  D?A k "  D?A5 kꐀ"! @ AjAq" F @@  Atj("AɵK @  AjAq F  D? !  @ AʵF D? !  @ AjAq G D? !  D? !   D? D?ꐀDb A3K!   !@ Aq A~jL D?  D@Cf"!@  j"A2j J  G Asrq DbqE  AA6ʀ  ! Aj$  ~~|~|@@ (" (TF Aj6 -!  ! B!A!A!A! B! @@@ ARj @@ (" (TF Aj6 -!  ! @@@ A0F A.G A!  @ (" (TF Aj6 -!  ! A! A!B!  @@ (" (TF Aj6 -!  ! A! ! B! A0G B! @@@ (" (TF Aj6 -!  ! B|! A0F A!A! D?! D! A! A!@@ !@@ APj"A I A r!@ A.F AjAK  A.G  A! !  Aj  A9J!@@ BU  Atj!  @ B V  D?" !  D? E AGr"! A ! B|!A! @ (" (TF Aj6 -!  ! @ @@@ )XBS ("Aj6 E  A~j6 E  A}j6    B D @ BU @@B }B"PE !  !@ B|! At! B|"BR B|BT Bx|!@ B|"BR A! @@@@ A_qAG "BR @ E )XBU   BD B! )XBS  (Aj6 B! @ D @  B |B`|"A kW AA6ʀ DD @  AjS @ AH @ D D?f"! B|!  Atr" AJ @@  }B |" "A AJ  S"A5H ! D!  D?A k " ! @ D AqE A H Dbqq" r  " Db AA6ʀ  AA6ʀ DD ~@@ (" (TF Aj6 -!  ! @@@@@ AUj @@ (" (TF Aj6 -!  ! A-F! AFj! E  AuK  )XBS  (Aj6  AFj!A! ! AvI B!@ APjA K A!@  A lj!@@ (" (TF Aj6 -!  ! APj!@ APj"A K A̙H  ! A K @  B ~|!@@ (" (TF Aj6 -!  ! BP|!@ APj"A K BS  A K @@@ (" (TF Aj6 -!  ! APjA I @ )XBS (Aj6 B }  !  B! )XBS (Aj6B  t|#Ak"$  6(  6 A6 B AA!@ E  ( ((kj (`j6 Aj$   AG!@@@@ AqE E @ - AqG ! !  Aj"AG! Aj"AqE  E  - AqF  A~j"AG! Aj"AqE  E  - AqF  A}j"AG! Aj"AqE  E  - AqF  Aj! A|j"AG!  ! ! E @ - AqF AI AqAl!@ ( s"As AwjqAxq  Aj! A|j"AK E  Aq!@@ - G  Aj! Aj" A IA!@ E @@ -" -"G  Aj! Aj! Aj"   k!  @@@ A K AqE  E  -: Aj! Aj! Aj"AqE  E  -: A~j! Aj! Aj"AqE  E  -: A}j! Aj! Aj"AqE  E  -: A|j! Aj! Aj!     ! ! ! @@ Aq" @@ AO !  @ Apj"Aq  )7  )7 Aj! Aj! ! AI !@  )7  )7  )7  )7 A j! A j! A`j"AK @ AI  )7 Aj! Aj! @ AqE  (6 Aj! Aj! @ AqE  /; Aj! Aj! AqE   -:  @@@@@ A I  (":@@ Aj  Av:  Aj)7  (At Avr6 Aj! Aj!A! Aj(!A!   Aj)7  (At Avr6 Aj! Aj!A ! A j(!A!  @@ AO ! !   -:  (6  )7  / ;  -: Aj! Aj! Aq    Av:  Av:  Aj)7  (At Avr6 Aj! Aj!A! Aj(!A !  j 6  )7 Aj! Aj! @ AqE  (6 Aj! Aj! @ AqE  /; Aj! Aj! AqE  -: @@@ A!O F   j"kA AtkK      sAq!@@@ O @ E ! !  @ Aq ! !  E  -: Aj!@ Aj"Aq Aj!  E  -: A~j!@ Aj"Aq Aj!  E  -: A}j!@ Aj"Aq Aj!  E  -: Aj! Aj! A|j!  @  @ AqE E  Aj"j"  j-:@ Aq !  E  A~j"j"  j-:@ Aq !  E  A}j"j"  j-:@ Aq !  E  A|j"j  j-: AI @ A|j"AvAjAq"E A|j! A|j!@  j  j(6 A|j! Aj" A I Apj! Apj!@  j"A j  j"A j(6 Aj Aj(6 Aj Aj(6  (6 Apj"AK E  !@ Aq"E Aj! Aj! !@  j  j-: Aj! Aj" AI  A|j! A|j!@  j"Aj  j"Aj-: Aj Aj-: Aj Aj-:  -: A|j"  AI @ A|j"AvAjAq"E  Atk!@  (6 Aj! Aj! Aj" AI @  (6  (6  (6  ( 6  (6  (6  (6  (6 A j! A j! A`j"AK E @@ Aq" !  Axq!@  -: Aj! Aj! Aj" AI @  -:  -:  -:  -:  -:  -:  -:  -: Aj! Aj! Axj" ~@ A!I    @ E : j"Aj : AI : : A}j : A~j : AI : A|j : A I A kAq"j" AqAl"6   kA|q"j"A|j 6 A I  6  6 Axj 6 Atj 6 AI  6  6  6  6 Apj 6 Alj 6 Ahj 6 Adj 6  AqAr"k"A I B~!  j!@  7  7  7  7 A j! A`j"AK  "A - AqF @@@@ Aq"E AqE @ -"   AqG   j @ Aj"Aq !  -"E   AqF @ Aj"Aq !  -"E   AqF @ Aj"Aq !  -"E   AqF  Aj! @ ("As AwjqAxq Al!@  s"As AwjqAxq  Aj"("As AwjqAxqE Aj! Aq!@ Aj"-"E  G  g -!@ -"E  AqG Aj! Aj!@ -! -"E  Aj! Aj!  AqF  Aqk @@@  sAqE -!  @ AqE -":@   Aj!@ Aj"Aq ! !   -": E  Aj!@ Aj"Aq ! !   -": E  Aj!@ Aj"Aq ! !   -": E  Aj! Aj! ("As AwjqAxq @ 6 Aj! Aj"("As AwjqAxqE :@ Aq  Aj! !@  -": Aj! Aj!    .@ Aj""E    ^@@ "" I A! E   Aj" jA:A  AjA!   !@@ AqE @ - k Aj"AqE -E  Aj"AqE -E  Aj"AqE -E  Aj"Aq  A|j! A{j!@ Aj! Aj"("As AwjqAxqE @ Aj! -! Aj!   k @  A @@ -" A!  Aj! Aj!@@ Aq -"G  E  AF  Aj! Aj! -! Aj!  A! Aq!  -k  A " k   / Aq!@@  A Aj" j"- G    Aj " A6 A6 Aʀ6 A6 ~A!@ B|Bގ~T BŎ||" B"B~}"B |" B"B~}"B |B~AA "Aj  AH"An AЊwjAI"A}l j"A m A}jA I"At AljA Atl j"Am AtjAI" j|!A! B|B! A}l j" ! A!@ AH A! ! @ Aʀj! Aj! k" ," N  A K" |"B䀀x|BpT  E E AGrqjA;j A}j AH6  " Aj AH6  Aj6  " Aj AH" An6  Aj6  Atj  Aj6  Aa Display implementation returned an error unexpectedlyAĒ ?/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rsL K /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/str/pattern.rs O O! O!ErrorAllocationDuplicateExportsInvalidExportInvalidStringA -InvalidCStrA ".Utf8/IoA 0ClassBorrowAȕ -1FunctionBorrowExceptionFromJsfromA 2tomessageA %3IntoJsMissingArgsexpectedAĖ @givenAܖ 4TooManyArgsAsSliceA A5UnrelatedRuntimeWouldBlockUnknown OG$Aȗ Internal errorJSError: Exception generated by QuickJScreating an exception to succeedA Bcrates/javy/src/lib.rs0 mid > lenX  0 +Error length should always be available on underlying buffer0 0 internal error: entered unreachable code: expected Utf8 error =0 Symbol()0 7 /Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/value/function/args.rsH nFpushed more arguments than num_args returned ,H nD}falsetruenull[{,:]C DE>a Display implementation returned an error unexpectedlyA F/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rsK 00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899ErrorTranscoder may only be serialized once/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/serde-transcode-1.1.1/src/lib.rs`U`SG HI>a Display implementation returned an error unexpectedlyA J/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rsK Errorinternal error: entered unreachable codecrates/javy/src/serde/de.rs9b No entries found in the deserializer stackd*circular dependencyUnsupported type9T9-9Popped a mismatched value. Expected the top level sequence value@9n4length to be an object999 valueOftoStringBigInt not supportedK LM>a Display implementation returned an error unexpectedlyA N/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rsK ErrorAllocationDuplicateExportsInvalidExportInvalidStringA -InvalidCStrAȧ ".Utf8/IoA 0ClassBorrowA -1FunctionBorrowExceptionFromJsfromA 2tomessageAܨ %3IntoJsMissingArgsexpectedA OgivenA 4TooManyArgsAsSliceAĩ 5UnrelatedRuntimeWouldBlockUnknownregistering Javy.JSON builtins to succeedP'crates/javy/src/apis/json.rs,10registering JSON builtins to succeed,7&JSONparsestringify"undefined" is not valid JSONExpected string primitiveJSON parse errorJavycalled `Result::unwrap()` on an `Err` valueQ R,*fromStdintoStdout,&Aܬ SA TA UA VA WA XA YAЭ ZA [\]A ^\_A `internal error: entered unreachable code/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/serde_json-1.0.120/src/ser.rsP] P].3P]!@"falsetrue\"\\\b\f\n\r\t00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899JSON Intrinsic is required to override JSON.parse and JSON.stringifyDA dRegistering StreamIO functions to succeede'crates/javy/src/apis/stream_io/mod.rsX%&Javy__javy_io_writeSync__javy_io_readSync(function () { const __javy_io_readSync = globalThis.__javy_io_readSync; const __javy_io_writeSync = globalThis.__javy_io_writeSync; globalThis.Javy.IO = { readSync(fd, data) { if (!(data instanceof Uint8Array)) { throw TypeError("Data needs to be an Uint8Array"); } return __javy_io_readSync( fd, data.buffer, data.byteOffset, data.byteLength ); }, writeSync(fd, data) { if (!(data instanceof Uint8Array)) { throw TypeError("Data needs to be an Uint8Array"); } return __javy_io_writeSync( fd, data.buffer, data.byteOffset, data.byteLength ); }, }; Reflect.deleteProperty(globalThis, "__javy_io_readSync"); Reflect.deleteProperty(globalThis, "__javy_io_writeSync"); })(); expects 4 parameters: the file descriptor, the TypedArray buffer, the TypedArray byteOffset and the TypedArray byteLength. Got: parameters.  Javy.IO.writeSyncFile descriptor must be a number Data must be an ObjectData must be an ArrayBuffer0Could not represent data as &[u8]T!offset must be a numberX%fUnsupported file descriptor: . Only stdout(1) and stderr(2) are supported,Javy.IO.readSynclength must be a numberX%. Only stdin(0) is supportedLobjecteval_scripteval_scriptNullBoolI64I128U64U128F64StringArrayObjectExtendedA̿ fCustomA gI32I16I8U32U16U8UsizeF32CharNone    internal error: entered unreachable code: invalid Once state` </rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys/sync/once/no_threads.rs [6i jk>a Display implementation returned an error unexpectedlyA sl/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rsp!K ErrorUnexpectedA mA nInputTooLargeBadKeyTypeExpectedArrayExpectedArrayCommaExpectedBooleanExpectedEnumExpectedFloatExpectedIntegerExpectedMapExpectedObjectColonExpectedMapCommaExpectedMapEndExpectedNullExpectedTrueExpectedFalseExpectedNumberExpectedSignedExpectedStringExpectedUnsignedInternalErrorA oInvalidEscapeInvalidExponentInvalidNumberInvalidUtf8InvalidUnicodeEscapeInvalidUnicodeCodepointKeyMustBeAStringNoStructureParserEofSerdepSyntaxTrailingDataUnexpectedCharacterUnterminatedStringExpectedArrayContentExpectedObjectContentExpectedObjectKeyOverflowSimdUnsupportedIoA !0NoneSomedA 4A .qTapeErrorFromBytesWithNulErrorkindA rInteriorNulNotNulTerminatedJSError: $ Expected to be an arrayExpected to be an object/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/safe_ref.rs%c#s tu>RustFunctionclass name has an internal null byteyz/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/class.rs%`4description() is deprecated; use DisplayErrorindexA {characterA |errorA E}NulError+FromUtf8Errorbytes~ A [/AllocationDuplicateExportsInvalidExportInvalidString-InvalidCStrA .Utf8IoA 0ClassBorrowA -1FunctionBorrowExceptionFromJsfromA 2tomessageA *3IntoJsMissingArgsexpectedgivenA 4TooManyArgsAsSliceA 55UnrelatedRuntimeWouldBlockUnknownNoneSomeA 1invalid utf-8LayoutErrorA (($)`)~ ~ )  )*  P*((*<<*<<+$$@+  |+00+$$+  0,NotWritableAlreadyBorrowedAlreadyUsedassertion failed: new_size >= original_sizecrates/javy/src/alloc.rs|-(called `Result::unwrap()` on an `Err` valueA .|--A|-A?CustomA   ,-7-F-BufferUsedInvalidAlignmentmap keys must be a stringJ.crates/javy/src/serde/mod.rsl.$Register TextEncoding APIs to succeed'crates/javy/src/apis/text_encoding/mod.rs.)&__javy_decodeUtf8BufferToString__javy_encodeStringToUtf8Buffer(function () { const __javy_decodeUtf8BufferToString = globalThis.__javy_decodeUtf8BufferToString; const __javy_encodeStringToUtf8Buffer = globalThis.__javy_encodeStringToUtf8Buffer; class TextDecoder { constructor(label = "utf-8", options = {}) { label = label.trim().toLowerCase(); const acceptedLabels = ["utf-8", "utf8", "unicode-1-1-utf-8", "unicode11utf8", "unicode20utf8", "x-unicode20utf8"]; if (!acceptedLabels.includes(label)) { // Not spec-compliant behaviour throw new RangeError("The encoding label provided must be utf-8"); } Object.defineProperties(this, { encoding: { value: "utf-8", enumerable: true, writable: false }, fatal: { value: !!options.fatal, enumerable: true, writable: false }, ignoreBOM: { value: !!options.ignoreBOM, enumerable: true, writable: false }, }) } decode(input, options = {}) { if (input === undefined) { return ""; } if (options.stream) { throw new Error("Streaming decode is not supported"); } // backing buffer would not have byteOffset and may have different byteLength let byteOffset = input.byteOffset || 0; let byteLength = input.byteLength; if (ArrayBuffer.isView(input)) { input = input.buffer; } if (!(input instanceof ArrayBuffer)) { throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'"); } return __javy_decodeUtf8BufferToString(input, byteOffset, byteLength, this.fatal, this.ignoreBOM); } } class TextEncoder { constructor() { Object.defineProperties(this, { encoding: { value: "utf-8", enumerable: true, writable: false }, }); } encode(input = "") { input = input.toString(); // non-string inputs are converted to strings return new Uint8Array(__javy_encodeStringToUtf8Buffer(input)); } encodeInto(source, destination) { throw new Error("encodeInto is not supported"); } } globalThis.TextDecoder = TextDecoder; globalThis.TextEncoder = TextEncoder; Reflect.deleteProperty(globalThis, "__javy_decodeUtf8BufferToString"); Reflect.deleteProperty(globalThis, "__javy_encodeStringToUtf8Buffer"); })(); buffer must be an objectI9buffer must be an ArrayBufferl9Couldn't retrive &[u8] from buffer9"offset must be a number9byte_length must be a number9fatal must be a boolean:ignore_bom must be a boolean$:Provided offset and length is not valid for provided bufferH:;The encoded data was not valid utf-8Wrong number of arguments. Expected 5 arguments. Got: :6Argument must be a String:Wrong number of arguments. Expected 1. Got ;+  A A A A A A A A A A "A /A \A  A  Ā A A EA̅ )A 1A }A A qA A internal error: entered unreachable code/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/simd-json-0.13.10/src/stage2.rspF_"capacity overflowF/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/simd-json-0.13.10/src/lib.rsF\t New size () can not be larger then capacity ().hG rG#GF\z Aȏ AЏ A؏ }A qA 5 A  =A -1A A eA A QJsHAkIo#.-x=`X1uV.nM&gxZ*% "42egA  A dA A 'Aȑ AБ @BAؑ A A ʚ;A  TvHrN @zZƤ~o#]xEcd #NJinternal error: entered unreachable code/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lexical-parse-float-0.8.5/src/table_decimal.rshIn-סv=-h1??w{kA  A dA A 'A A @BAȔ Aє Aٔ ʚ;A  TvHrN @zZƤ~o#]xEcd #NJ/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lexical-parse-float-0.8.5/src/slow.rsJe Je Je JeJeJeJeJeJe;Je2Je0Je|2/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lexical-parse-float-0.8.5/src/parse.rsKf0>~;ΥA 5]JB A zΕA IBA `fA 8GA c^s A b/6AЙ {+ջC!A -;eUk%A Ԝ(A v,n% DH+A dW*͖/A >'u2A kq5A ~X1[D9AК Lhr<A E=?A k0bЏCA ijFA <)).IA %I qMA o(TPA J2qSAЛ n1'WA ƚpZA }x=M]A NFaA !&8#XldA o(,nGgA Eyۤ̂kA }A f;^A @J6VcغA hN"uO>AП ZS A U1(\QA A fA -@s]A hA r#j9A NDGCAР "A ɦqA "|A +TA OA 9zc%C1A X=A c5u|&AС <%A ˋ#w"A _uvA 6]IA YyA X7 1A  ? A jgν AТ B`A֋A mSx@I̮A Hh[A -^zyA xA 2_`!A &;\%A oJ(AУ W`+A Wζ]y*bA 5*g8A 1A ~8<<A ^p8G A vڍA ԨA  AЪ +eṗtA ;?ȄA w A UyA ՓA /8'A ;A J0F.DAЫ .>vJA 'DA (0TA x>ݔ A 20: A ?A 巧`A ޥAЬ V֑fA %ΟkA ;i‡F!A k)X$A (A sۓ+A PҸ.A sUrsO2AЭ NdP#5A b}$l8A r]ΖK<A O|?A UraBA uEFA RAIA Q;LAЮ H=PA _ XfSA ѷ?VA ϻYA ӛa՟]A ȂS|n`A {ch icA ->!QagAЯ ijA &ޓmA v:k\mqA e 3RtA Yg+wA @8H۔{A PF~A fנAа `2$^A A `#A ūA ksA d|FݕA  ,A .JAб Dw`zd؟A J|l_bA -]:A y4yxөA `K6A CA >'=zγA )fAв &4*cA R04`ɽA g|A8?,A 6)A 1cA }e5CA .?A 9ϛdAг pÂz}A U&NA (&A ۲A oOFkȒA ˻zA ܝYA TWAд deT-A ~)p$wA 6vA kwA ąYA SuA A R|DAе - A 帟ߦ A &A /xs$^A ;V-A k4yA ׷&A 62$!Aж C1]?$A }t_'A |Hi+A "RD.A Ag1A  k`ŗ5A `鸶8A 8>G#g$;Aз v6?A ΛpDBA ’sEA ;HwIA (JLA 2R l (OA _S#YSA 7yHVAи D"'YA k]A 6-`A wcA 꺔R̆gA 9'jA dmA >qAй +ZꌤtA 11eU%wA >_U{A n*~A duȁA .A =Ķ{s휈A LuZ(ċAк eMq3A {?A _xۏA |VsA 'vcA Y~S|A qޝhA b!q&Aл Ui A ;+*\A [zA @gA 7._߶A ⼺;1aA wl}9A U"SAм uu\TA Ғsi$$A wÿ-A Jbڗ<A aнK'A 9EA CK,΁A 1^_BAн >;5A A H~tA ڝXv%A QӮA R;uDA 'mA ,Aо {tPA dA a}JA ]A I62wA [Mľ A ٬:| A \ 5$Aп KB.A ˈPo ̼A $ A A 6A_p!A aw̫$A BzՔ'A il7+A #GGŧ.A +eX1A ;On5A ףp= ף8A ;A ?A BA EA HA @LA POA $RA VA  YA (k\A `A @CcA fA *焑jA  mA 1_pA tA .wA @v:k zA #NJ~A bxA z&؄A n2xA W ?hA ӎA @aQYA ȥoA : 'ΘA x9?A 6A NgɢA "E@|oA p+ŝA L67ŬA V߄A \l: A {ΗA H½A PvA 1P?A %OA 7иA 'ƫA CưA o\{2~A ]A n0b/5A E=!A ֕C)A L{QFA $+v؈A SﶓA h髤8A AqfcA QlN@< A ePKA DA Ǖh"!A 9oA j%p A E"&'OA ֪" A + A w 3;LA զIxA 'A V:qA CNA '1c A $_E^$A 69u'A D]ȩdL*A J:.A ݈1A MXd4A 슠p`~8A Ȍ8eް;A >A --BA {9.EA ڇzHA 贙LA #"׬OA +֫* RA eǃVA R?VʸYA &ϫ ^\A xa Z^`A 9wuܠcA LqmfA _:JIxXiA {-KmA qB]pA e wetsA _jhwA vjE¿zA }A ;JЕA (aʩ]DA &r<uA X,iMA .wඎA zUA ?7ߎA ~A S^=ߛA lX![A qgA pdڥA X4AA 4>QA ԯA 2#A Ek0SA F|ϹA n_OA IwmA U A c*OA ~MA Q5FA e B‹A _FiYWA 7/-A k}{x A 2cPMEA  fA zBΨ?]A ߌGA #٨A l*A CA wyTA ^TjA 4'RA EA ]dB!A ~IrA iE A ֒P A ś[[A 26hA d#DA vja5A ӨŹA 7h A dZk"!"$A k*'A =]S5*A :B-A xri1A %4A ь[e7A 8y/;A JX>A g].AA \*EA ߈=9tauHA GѹKA "OA +RA _vIUA }AYA zdұ\A _F_A ;#cA J ,fA (iA "ymA (+EWApA u-/sA .|]|wA %94›zA .²}A }DKaA 2A (ʇA x5˲A aA z®kőA [rA c? <A <Ϗ(A A CYxķA apeFA Yy "WA ˇuA ξTSܷA .$*(A VyuA UD`גA jU'9pA bCFA TfAXA jiQ.A A"A ZҪ/<A Uj; A VtubeDžA l8A DžinA &E[A `BrMA x\ӛ A Ζ3B)A A> iyA Mh, XA Ea75 .A |BǼA ]A R5VA S!{ZA ֨YA dpA >ԅ A .7J A ŇA Ա A YJ^MA :0ܵA $~sީqA ]V A ukP#A /A BAA x郮ҀEA 0B$ZHA R0IKA A -^85AuLR Cs Nww&Դ"U 5U]_nU4!#un6%!3G ni %Cp(W^j87.h3DJ!jzd)غ`Y3)$oVyԶӥlwHޔ3 M^Pa,\":1H cm̻, `%N *᮴ fMȟP(rbISz%Taw$jDk(sK2 CgN?͓A"xuRCkxk SVk#췆,2{S̰?h@ѡ¹ #2( ԫlQ?2 g٧=wA͙CV@@r%kf5(HeC2ڂj@>ԾDwZ6q>D[Z † yXr9Mnb-!= 4f|N bf'bK=`?wo!M8UHj`FS*~mBDt.SU'~U5yX4/UKoy^F {fg@'᷂g$m\,nsXjPu9BRm;Ӧ{d JU\HH/&$ڔ;X=vnd KvT }]/L|]C5;ӯmJ{ A5bKc]BcyBY{[o>B,S*xP(d$5V6w?nY{U(ω/3!v]?Skuz(YI\ٻ-qdϪMyUDrĆ"u(1k62c}1]{$crmYGBtRl'.gSۣ(Ͳ"a_ Wky;t60˜D۾D-HUJM-u]cxZb4|qM=5] Y`tK?p8+'Fc{BձL;J_ r{~TC#OaԔdӍ@EHP$W $֭; ץLL!Lϟ^gi GvsA)XRqhf@q0U@HL|jPZ٦cmJ2NY)?@|Y+X0t<6Rj'Dܹ^:)Ht!d4[I4 B@OQ]=Q* rGVieg!Y,S>ih0:BA9JFE߃2kde2?/n{S 6__,t7#8H,,Z"sM`>&1RpIFw3k.dsƣz=N\ b OInHãۉZuZF)#X񗳻,.X}jtWN¨labM w.t V$ ilc?ʲ|0]|k:BzkSҘl{qrIdGϛ= NJ9QX*r(eN2)b"=s_R?Z}5&ϰʵݓCx LKKe^y JFMENKPq/^LZN'sv]oj:6U .tE+ɋ ;D7@n j B-#JF"GV+~xYZUhaέ[ù?Brgɟ Th;#)!e ri>[0 Ho^+Ʊ 68c%8Z~HWQZ-elE1Xd˞?/"=~Frj[ŸG$bGט#?: 쎬$0hS-JyR] X`Unp" ŗ{`=jP|}B`wY78Uf/Flk=;K## ^!J5T.wAP~ dDKN^> ;ZꊭJgpꀍMy%0CXn Snʋ}4Ud^w*J6"݃:B5yrjē<u8c$S^ӄ2l1+ϟCb.2:‡ yh.L K7Soe(E.D?H9iMZDs00 h1=|6+ Liv2=I?Sr3܀N@a&1Zdp= ףp=A @A PA A MA  A (lA 2A @<A KA ԆDU]ʡZ@=J͜m#, 7 4"&EA+p@_v <ji zEz ꎀ֘ErPG+ڦG$g_mA!z j+R-DvSG6e,Bb~:MBާe/눟Uc%kqkD+Sq`1FUAck-~<ƢDRs\dj:EE='WTKxT6ݧjWQDme%Jd ]=U B$ /Sm mhDi}n܁7{S⻅xtm'z81{D&v't#qINgV-ae(R63s4aF]'A1qRuqg~ӄbhx{RVp @v`5ГjCMĸJpz3zr\L.YOtsyob+EV݊6+>m7̶Ȣ" @K ж%dD.\G_,>%tw(N/opk UMlcNTGtT%k$MT¶)s$t-ɒez|/~e>"t*U_':7h*-Ciu+-s)b);{Is!6p$ӌ#@J286>C &|ca/5_([cрyb2üק+GٍQO3VnG/ X'a'͜x8Vc GtlXC 7T%`i *.GATW3LR?#wXHv WAƏ ?AΏ $@A֏ Y@Aݏ @@A @A j@.AcAחAeA _BvH7BmB@0BļB4&k C7yAC؅W4vCNgmC=`XC@xDPKDMDA e.A A  A dA A 'A Aȑ @BAБ Aّ A ʚ;A O TvHrN @zZƤ~o#]xEcd #NJA ?Aƒ $@AΒ Y@AՒ @@Aݒ @A j@.AcAחAeA _BvH7BmB@0BļB4&k C7yAC؅W4vCNgmC=`XC@xDPKDMDA 2NullBoolI64I128U64U128F64StringArrayObjectExtendedA CustomA UNoneSomeI32I16I8U32U16U8UsizeF32Char at character ('')A Ȋ֊يA ȊUnexpectedA A InputTooLargeBadKeyTypeExpectedArrayExpectedArrayCommaExpectedBooleanExpectedEnumExpectedFloatExpectedIntegerExpectedMapExpectedObjectColonExpectedMapCommaExpectedMapEndExpectedNullExpectedTrueExpectedFalseExpectedNumberExpectedSignedExpectedStringExpectedUnsignedInternalErrorAԘ InvalidEscapeInvalidExponentInvalidNumberInvalidUtf8InvalidUnicodeEscapeInvalidUnicodeCodepointKeyMustBeAStringNoStructureParserEofSerdeSyntaxTrailingDataUnexpectedCharacterUnterminatedStringExpectedArrayContentExpectedObjectContentExpectedObjectKeyOverflowSimdUnsupportedIoA ,TapeErrorĊ/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lexical-parse-float-0.8.5/src/lemire.rsgZ;S?;)?eefX$YJv>ᮺI- y]SoΊߙZsy,,+ؑiKyFq6NlHMDz%#rxjm 0O\5Q^3-#Gf+ނ5x,vU0 1̯!P;Lk<ܭ=*$Jx݅KbS 4mk3o=qԇh@drˌɩQhH;f%mtvWK`0K>~;Υ-^85A5]JBϹuLRzΕ CsIB `fNww&8G"U c^s 5U]_nUb/64!{+ջC#u-;eUkn6%!3GԜ niv,n% DH %CpdW*͖(W^j8>'u7kq.h3DJ~X1[D!jzLhrd)غ`YE=3)$ok0bЏVyԶӥijlwH<)).ޔ3%I q o(TM^J2qPa,n1'\":1ƚpH cm}x=M̻, NF`%!&8#XlN *o(,nG᮴ fEyۤ̂MȟP}r%kf5(Hf;^eC2@J6Vc؂j@>ԾhN"uO>DwZZS 6qU1(\Q>D[Z † yXfr9Mnb-@s]Ώ-!= h 4f|r#j9NNDGC bf'"bKɦq=`?wo"|!M8U+THj`FS*~OmBDt.9zc%C1SUX='~U5yc5u|&X4/UK<%oˋ#w"y^F_uv 6]I{fg΄Yy@'᷂X7 1 ?jgνߚgB`A֋$m\,mSx@I̮nsXHh[ڞjPu9-^zyBRmx;Ӧ{2_`d J&;\U\oJHH/W`&$ڔ;Wζ]yZ[lB,1r'0S*xPN1J<(d$5V6^F6w?nY{U(&t~Wω/3OH8oꖐ!v]?cZ SkuzmM(YIӽ`3\ٻ-qd4,9ϪMygAwGܠU`I,DrĆ9b7]"u(1:%˅t׋k62c}dqӨ1]MSf-bg{$cr`=ހmYGBx SatRVfQp[y͋l'.g2FqkSۣ󗿗φ(}Ͳ"al]=_ Wkyc1Ü;t60`wÜD۾;մD-HU-JM-uxF\]cxZb* 44|qzM=5]WF Y`t׬XҘK?p8+#Tw'Fc{,)UdBձL;wsj=J_ >*br{~T5*g8C#Oa1Ԕd~8<<Ӎ@^p8G EHP$vڍW $֭;Ԩ ץL L!Lϟ^+eṗtgi Gv;?ȄsA) w XRqhUyϴf@qՓ0U@HL/8'|jPZ;٦J0F.DcmJ.>vJ2NY'D)?@(0T|Y+ѹx>ݔX0t20:<6Rj㡌?'D巧`^:)ޥHtV֑f!d4[I%Οk4 ;i‡FB@OQ]= k)XQ* rGsۓVieg!YPҸ,S>ih0sUrsO:BANdP#僥b}$l9JFEr]ΖK2kO|de2?/nUraֽ{S ȅuE6__,tRA7#8H,Q;,ZH="sM_ Xf`>ѷ?̨&1ϻRpIFwӛa՟3ȂS|nk.d{ch isƣz=->!QaN\ ib OInH&ޓãۉZv:k\muZF)e 3R#X񗳻Yg+,.X}jt@8H۔WN¨PFlabMfנ w`2$^.t V$ `#ilūc?ʳks|0d|F]| ,k:Bzk.JSҘlDw`zdط{qJ|l_brIdG-]:ϛ= y4yxNJ`K69QX*rC(eN>'=z2)b"=s)f_R?Z}5&4*c&ϰR04`ɵݓg|A8?,Cx 6) LKK1ce^y }e5CJFM.?ENKP9ϛdq/^pÂz}LZN'sv]U&Noj:(&⻋6U ۲.tE+oOFkȒɋ ;˻zD7@n ܝYj B̶TW-#JFdeT-"G~)p$wV+~xY6vZU"RDhaέ[Agù?Br k`ŗgɟ`鸶 T8>G#g$h;#) v6!e rΛpDi>[’s0 ;HwHo^+Ʊ(J 682R l (c%_S#Y8Z~HW7yHQZ-D"'elE1kXd˞6-?/"=~Frwj[꺔R̆ŸG阥9'$bGט#?dҭ: 쎉>$0hS+Zꌤ-_U 例ػn*j[ duuRDZZE.g=Ķ{sk`MFULuZ(Ć&'vcJyY~S|R] X`Uqޝh馴n b!q&pUi " ŗ{`=;+*\jP|}[zB`w@gY78U7._߈f/Flk⼺;1a=;K##wl}9 ^U"S!J5uu\TT.wAP~Ғsi$$ ݇wÿ-dDKN^Jbڗ<> ;ZaнK'ꊭ캔9EJgCK,΁p1^_BMy%>;50CXn SnʋH~t~4Ud^wڝXv%ƞ*J6QӮ"݃:R;uDC5yrj'm<u,9c$S{tP^d弅a}J2l1+]ПCb.2:I62wÇ [Mľ洩yh.L٬:| K7\ 5$SKB.oe(ˈPo ̼E.D?$ I9iMZDs6A_p10 h1aw̫>|6+ BzՔMiv2=il7I?#GGŧTr3܀+eXѩN@a;On&1Zd ףp= ףp= ףp=A A A A A @A PA $A A  A (kA A @CA A *焑A  A 1_A A .A @v:k A #NJA bxA z&A n2xA W ?hA A @aQYA ȥoA : 'A  x9?A @ 6A PNgA "E@|oA Mp+ŝA L67A (lV߄A 2\l: A @<{ΗA K H½A "Ԇ PvD1P?U%O]7иʡZ'ƫ@=JCư͜mo\{2~#],n0b/5 7 E=!4"&E֕C)A+pL{QF@_v <$+v؈ji SﶓzEz h髤8Հ֘ErAqfcPG+ڦGQlN@< $g_ePKmAD!zǕh"! j+R-9oːDvj%p SG6E"&'Oe,Bb֪"~:MB+ާew 3;L/눟UcզIx%kqk<'zE9NFV:q헬uCNR='1cKcL$_E^jt>69uD+SD]ȩdLq`J:1FU݈AckMXd-~<슠p`~QԟYFKpl2#kEk0SFۄF|cgedn_O~`?~OIwm83^U ,ӿ\c*O/ss~Mg(Q5FƸTၲe B‹&B|Z"_FiYWXixu37/-dRk}{x #]g2cPMEF6@ f;PzBΨ?]δߌG76l3o#٨A]DG l*tY C/h7ȇwyTØE)^Tjzm)4'R fX_E.]^]dB!sCupv~IrSyJIjiEhcۇ֒PֶB<]ҩEś[[E# 26hhwld#D& C2vja5IDӨŹ bl _7hzÇ6dZk"!",TIIk*l=]S5Ǭ唔o:B9#wxrinSv* %úJhь[ei]_fX~8y/az?w/JXUg].8σS*\*a{tZ߈=9tauqGѹ]V7z": Ub+ `M1k{W_vI ~Z}AsXzdұȏ%زnY_F޻َ_o;#TX H{%J ,jV(ڔQ+"yB]D(+EWASJt:5u-/\B .|]|ں5ai%94›i~C.²ϻ^g}DKaxº22si*bd(u{}x5˲>DRs\adj:z®kE[rE='WTc? iyӄbMh, Xhx{REa75 .Vp|BǼ @v`]5ГjR5VCMĸS!{ZJpz3zr֨Y\L.YOt dpsyob>ԅ+EV݊.7J6+>mŇ7̶ȠԱ " @YJ^MK ж%:0ܵdD.$~sީq\]V G_,>%tukPw(N//t,4xT%k$M@T¶ Уr)s$ČV<t-qeez|/~~1Vxe>"t*U5k\(3_':VFs7h*,WЅ-Ciu+-gjs)b);B_򘢏{IwqBv/?s!6p$ Sӌ#c]ɞ@J286H|Y{>Cځo (1&|r}cca/<Jo?0:5_(ϧz^KD[cрyfQ6^Ub2ü@4õjȧ+GٍP4cQOع^3VnO 5G/ bbLBX'a'ͽ}瘜x8,ݬ@!Vc GxP]tlX RzRC 7ϖT%`|$ Pi *.G~tґATW3LGQ.GR?嘡c#wXD^/gHv W0123456789abcdefuuuuuuuubtnufruuuuuuuuuuuuuuuuuu"A \A O a Display implementation returned an error unexpectedlyA /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rsK /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/str/pattern.rsOO!OO!Errorassertion failed: self.is_char_boundary(new_len)K O$EOF while parsing a listEOF while parsing an objectEOF while parsing a stringEOF while parsing a valueexpected `:`expected `,` or `]`expected `,` or `}`expected identexpected valueexpected `"`invalid escapeinvalid numbernumber out of rangeinvalid unicode code pointcontrol character (\u0000-\u001F) found while parsing a stringkey must be a stringinvalid value: expected key to be a number in quotesfloat key must be finite (got NaN or +/-inf)lone leading surrogate in hex escapetrailing commatrailing charactersunexpected end of hex escaperecursion limit exceeded at line column A  Error(, line: , column: ),2: D/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/serde_json-1.0.120/src/error.rsh_!h_ h_!h_ *h_, Tried to shrink to a larger capacity0$/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/raw_vec.rs\L A * GzGzGz$ClMb h"lxz,C6Cnah㈵"6X8IǴ6j#RWHOfA90yQ-沔& . Qˁhַ|:4_dyȅ'- @ evIh%q3p+C~)!V瞯751ׅi+ؗZ?7!FFsHE_砫C]r] z<=f4ҶOɃהcQ]#B Ky݂~}O h[bјd*^ 9S⁧DQ@-&ORMXjWA~{P'}4Pe_ɦRˮ@L<6 íSyA`Pgt-gG^ZR)5o$4KHYhe9_)L2#Y]5=[w(b}'^VIL hɫz>:z[Zr.-DE.ʯBE ܲJx8A}n-U/ggudXWw'&lۈmm% =#F8(LIUln`KSO1O`gEr'j7N`rV`U,$DW5λm: *+/vObV4o༻Un ǒJzW@ Koqը|oX' f3L)`ׄ)RɣT Һɨvo^ݥWbOHKKH~QA١YmV3{w{W<*`Y^6&GhkQVUy*#ѧ"}tV4с 1SEls4=DVS(S]R]jbWa.PEHNX[ݦe klqcA(Hdc Sk5GkJr 7qxL۸DFmE_cUIkE867wiAFcVXXrgсyq(UA4aܐ؆nGV5}$ eh䌤%9x0l ׶,󰙻4#aM9G(SN\_T8hZ.,ӹu }C`SD[HX#06|;m&r+A.*r( ǼO9\0 ^0$_ZhIy&/߃v` Qn R^ oKhO+wiŊt\, h|ITo($SW:Uv \vC`y;bs^f+23WdmARļ}` \̶gi=N}ߊwr//.Ւ[s򈬌j>efDBI(V=UJBMAW2h9ayw@[TR yqa-hYPh|[vtV[ҦJ> QD|@MD7Jidή nXPO;燅^{r6_ &7[@ՄF,LG7ь#G?ELg$մG̝Rßr8' KEy,~i†Yة_)F06qzk^'/(bQKu8Ly*Y-ذSr%V.UGHy޷ET| ~/wvrm.yCQx?Z"cd؊dB23_FYYݐ+9_ά£-Li^rHCB։TiT/k tk"rv׾"pF*N(Ngk }xt;Q$~{_|Ma) 1Ac ˔!נ'$4̂wxTϹgo mC!7q-ݥYpMW}Qz?> /.ø2y$ 1f6ǒx\'^lu`|{ Sɼg]ŰBt?j/v'\*2+Π(aoJYJNt3L%)>sQQwqMrx)W{Tu !S2Y݉ jBC(cJnpfj'8 JC!,=ktn{~VNW\XA#J%bA_a`6)g=M !V2dsmf+i#:{λ4b[WKb5Ydy؜;761FJmZƑB'+nW0ѧR<}%%1@0<HyZㄨQ1KǮSʹBR ȅ>!t@:SP J`gB  )7zR5 B0Y*9K >Ba<>=eX, dn #Ӌq@a>PẔ<+aĺuǎ ]1)j hb{wo>'g]@,c>?IuI33QFe G]Pn֏ʧ^QpSɳKWDnN: yG%h`lπyn?*4zK3"9 l.Q*C\ռځU".qߐUSl OZLϨ{x~ "j_}'6T ۗN~wf|yL#t  p-k'TZZPY$ xEفpwj{C[(.{ C, }+œ7[ oq">sH'pdx[ڬ%T ULP`>{a 3f@˕,sRpfRfXGdY#&GlIЂl#)_<u8Yղ)%,{w%ܞlX"+ }z-y=vjNaW` Y  M:E[]c܄دȍ0kJ>b"&n&u)FkpP*Fٝ%TkMytRbo͇xE/|(R]^" jɆBKh<:hm)y@z,`ژ $!3VF6MC)x8ܴܤJkf'Z`!a2MMoNaю=bY ٶ+OGE$^r'~߱ II ;[iРJ]ˤ/|MRSc:\ qgt/oVRH*ـ%K//4Q 4 ~O q>]m (2eW (z:|<,Y ٹC=p_]6Z&9$V" 50٦K]?#=YN2T\98/hy}NS-`]5SdPrve*xv춦Do&}bj߿*"R?'Cod(NNeP 8J (tJoe3; jY"s™l6ٴ5VW ?~I$""}ELd鐕h0щx=CsDS 't̜MR%Ga5ǷM\ِ_! =#3[PhKaP*+jg@"N@\Ukj!SݔN IDQȇHJv ڽlHFlkՑdLIݧO:z C8/.99Si(]/u.G!"?"\TAze訰C87bķ23ۆ&h6:Y둤 '^itP<z^~/c]@tVq8b͆x yz-=Vo-qBaКȊ1""NjhMڪ=O@ty>Sڮd?]]a(lXmP̙}h e`Hz\/D=qa61,2.6Yaw䉛ח?ZN,5}ʃ2V Lo1J(pYݕ^C (J^W^5Ĥgձ~i~R"Zy%/0^IaMXnKD#׭5$+>=YI4V"=nmco$iA7;ћYcu5%3ҐP7x ?vtu @,x1$HgY-[@,ӵM$|_}Vo+phmƘH~=NtW§KMҀGyPDyH؎ŭD)-m3?W Φ$$yFeJvM}:=tozwVdP>1d]ˍJp,kW$GDlSBL!|C#)Ch=32z}hN6TϹ21P@JƹK)Q w31oڹk v)ӿҮ۬dWBI~#͠`19LpMu'UpI }*wCW{b=5jyɎ dbq¼uwle'5kӒAġ_VeadcHO|QܛMP2(}Iqs v;|.~Y;S+ʾ7G/U4KX lÌA A AǦ A֦ @A A jA A A A eAħ  _Aԧ vHA A @0A ļA 4&kA 7yA ؅W4A¨ NgmAҨ =`XA @xA PA MA J-A  yCxA (,*A 42Aϩ @qAߩ 0/'A |!1A 錠9Y>A R$A nA `F"A @x|Aͪ 菇+MraBAݪ %si ydiWCb**"fJa\)c\9T7]ȳG)`x-xֲ@t@K}YPP{q\Ckd 3TYޤ[' o%Һrȡ1(ˮi:~^Ym?Md~@HAq vaT 0}GoE(>nll$239~@j4$Q!=P1PAm%CMZ>d~3gW`M}zF^AmnEH:HD/VZIZ^0\zpue񓾊y쮐afird8n헧?O(}Qrbvy~JG9bԗ]z){} Ud:Ft'UcȋhEq_|ֆ<ֺ.2w 9i9(*WICȷsluuuݏҘbIL깼Ã]֯y)e諴ds~=I"[пfM&mEoX82/'% }/ًn{^Q4g4_6A]7bD2`G~zU[tp] ѵMQ%L9hwRF:D.B Ą' |Ô%Ime%\nsmA/sqի71Fʖ=`R},%|xӫ]@<>+dpBu 05==N=@ !Fҟ&3 hG0J#ÓR=:YxY|Sf$hp&sL Lo틱)>aw<]3sM`j5!ae.{nLBi_ O)87?q=kzN*.rYH p0X !7-4 |oX* 8PJ(L%vq/V(wzYk21UI~_j nQoFOn{*do^% 5= 6~; [,a ]uj[|8zŧ-@4ٶQ9S7#TDH"s:V!iw9OBɫ̕E㒻TiP>XSN3&d.Ng"@upqazjHIdžޠ}+ۧx(Y/v[;p-Td#VO%&2b~t#셣_~Ù:,gg[4@I|:@!ȰeIT):3$[t0V(rWhg^Jp5|HlrNB\BZOL3td peD0/L >?V;=Ȓ;.-+Lzw 4=|lia[ofLGS9ˋW-; (4n8`Sa =U7el#|67Sh*~G,(/u&^Y!E yձ= ڗ:5NJ ="epE+Dx?K8 kG^z΅\zMFB6py,0TkCLf l8*ƫ T~(sV *)*fPzJ7M;kP =!w$lYL)\Ȕ9ت|Lu<  Ky}a[@JOל`rT De*JcOقnQ:*g(#t.3t<{NT={gRDW5P8[)b!rR`d g]Vxt\)O8=*T+bftxe:P R6WbIdN@fM}-\<Ȍ`"ԼnY>0/!x\+ l^<{)3v ml16Kڳ{SHǽŞhPMX-ucVr;`n1xR|CN 000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798990.0A /Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.19.0/src/imp_std.rsT_6T_ uninitializedundefinednullmoduleboolintfloatstringsymbolarrayconstructorfunctionpromiseexceptionobjectbig_intUnknown type  (/8>E    message%s/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/value/exception.rsj" `JS_NewError` did not return an objectjBError:[]: /Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/value/function/args.rsnTryFromIntErrorA arrays should always be objects/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/value/array.rsfassertion failed: qjs::JS_IsInt(val)f# nullfalsetrueifelsereturnvarthisdeletevoidtypeofnewininstanceofdowhileforbreakcontinueswitchcasedefaultthrowtrycatchfinallyfunctiondebuggerwithclassconstenumexportextendsimportsuperimplementsinterfaceletpackageprivateprotectedpublicstaticyieldawaitlengthfileNamelineNumbercolumnNumbermessageerrorsstacknametoStringtoLocaleStringvalueOfevalprototypeconstructorconfigurablewritableenumerablevaluegetsetof__proto__undefinednumberbooleanstringobjectsymbolintegerunknownargumentscalleecallerlastIndextargetindexinputdefinePropertiesapplyjoinconcatsplitconstructgetPrototypeOfsetPrototypeOfisExtensiblepreventExtensionshasdeletePropertydefinePropertygetOwnPropertyDescriptorownKeysadddonenextvaluessourceflagsglobalunicoderawnew.targetthis.active_func#constructorasfrommeta*default**ModulethenresolverejectpromiseproxyrevokeasyncexecgroupsstatusreasonglobalThisbigintbigfloatbigdecimalroundingModemaximumSignificantDigitsmaximumFractionDigitstoJSONObjectArrayErrorNumberStringBooleanSymbolArgumentsMathJSONDateFunctionGeneratorFunctionForInIteratorRegExpArrayBufferSharedArrayBufferUint8ClampedArrayInt8ArrayUint8ArrayInt16ArrayUint16ArrayInt32ArrayUint32ArrayBigInt64ArrayBigUint64ArrayFloat32ArrayFloat64ArrayDataViewBigIntBigFloatBigFloatEnvBigDecimalOperatorSetOperatorsMapSetWeakMapWeakSetMap IteratorSet IteratorArray IteratorString IteratorRegExp String IteratorGeneratorProxyPromisePromiseResolveFunctionPromiseRejectFunctionAsyncFunctionAsyncFunctionResolveAsyncFunctionRejectAsyncGeneratorFunctionAsyncGeneratorEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIErrorInternalErrorSymbol.iteratorSymbol.matchSymbol.matchAllSymbol.replaceSymbol.searchSymbol.splitSymbol.toStringTagSymbol.isConcatSpreadableSymbol.hasInstanceSymbol.speciesSymbol.unscopablesgot a null pointer from quickjs for a non-zero number of args]=A /Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/value/function/params.rsp invalid argument numberA p#.arg called too many times`p `Function.prototype` wasn't an object/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/value/function.rsiuninitializedboolintfloatarrayexceptionmodulebig_intUnknown type4,AEHM44R[ah    NoneSomeA internal error: entered unreachable code/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/value/promise.rsLhPBuffer was already usedBuffer had a different alignment than was requestedBufferUsedInvalidAlignmentarrayUnderflow/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/class/id.rsFc"invalid class object, object didn't have opaque value/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/class.rs`!"RustFunctionf64usizebooluninitializedundefinednullintfloatstringsymbolconstructorfunctionpromiseexceptionobjectmodulebig_intUnknown type   a Display implementation returned an error unexpectedlyA  /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rsLK Errortried to borrow a value which is not writablecan't borrow a value as it is already borrowedtried to use a value, which can only be used once, again.A Agenerated error while throwing error: T&/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/result.rsaTAllocation failed while creating objectTried to export two values with the same name from one moduleTried to export a value which was not previously declaredString contained internal null bytes: CStr didn't end in a null byte: Conversion from string failed: IO Error: Error borrowing class: Error borrowing function: Exception generated by QuickJSError converting from js '' into type '': Error converting from '' into js 'Error calling function with argument(s) while where expected argument(s), function is exhaustive and cannot be called with more then argumentsCould not convert array buffer to slice: Restoring Persistent in an unrelated runtimeError blocking on a promise resulted in a dead lockQuickJS library created a unknown errorNotWritableAlreadyBorrowedAlreadyUsed  NulError A ) Utf8Errorvalid_up_toerror_lenA   descriptionOnce instance has previously been poisoned*one-time initialization may not be performed recursively8/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sync/once.rs L2()A "NulErrorA % FromBytesWithNulErrorkindA InteriorNulA NotNulTerminated/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/safe_ref.rsc#failed to initialized callback class /Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/context/base.rsg/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/context/ctx.rsRustFunctionclass name has an internal null byte/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rquickjs-core-0.6.2/src/class.rs`4AllocationDuplicateExportsInvalidExportInvalidStringInvalidCStrA "Utf8IoA ClassBorrowA̅ - FunctionBorrowExceptionFromJsfromA !tomessageA "IntoJsMissingArgsexpectedgivenTooManyArgsAsSlice#UnrelatedRuntimeWouldBlockUnknownfC-str string contained null character%uninitializedundefinednullboolintfloatstringsymbolarrayconstructorfunctionpromiseexceptionobjectmodulebig_intUnknown type&,29    A  A 0 0sZ0`0lop|@0@@@.0@p0@0@0@000@0000@000@0@0@0@0@0@@PPP@@P@00@(0@1@01@ 0!0"0"@ #(())*+,-.0012344556789:>@AACDDEFINOs@@0000000s0ssss@sss@0@000  (@"0@6E0`@`g@`h01&P1c1f+h~P   t@t@tAtAtBtBtCCD0+H0^@~@?KKLLMM0O@`P0000000000ghhׁ00as؁0bЁЁ00ӁӁ001ف00b11@1[h100@001010223@306070708@9@:0?@d@@u@y&@. S@@S@S@>S@S0S@ S@S0S@SS@S0S0S0S0S0S0S0S0S1S@S1S0S0S@S@S@S@SU PU}}}ځ}}}}}}}}}11((1$X$l1 11Ƃ1ʂ˂тق݂13@3`1 P `1  01""A @Ӏထ0 91@ւAbKrL@AЀ( $K&`y@C4`\`DԀ ASG3-APA  , !!JA A@@@8ڊ ;   ( ȁ(  ݀B_C7 @ 0=  9(A' KߟAԀ$܅܂`oDA ρ̀ @)   ㄈ`O/@B<@€B@@D(BE @BK@ߟB)`uρA#ҁ  $@8 `O#B@B@@A$EV @B<ApςŊ 0*!;ы(@+1 2@Г@1ѐЌҎ@@( 120A8*0 'AH2T`6 ՉC3Ѐ`LR`B"/9@EA8 EO0@AcACՆ4Rl@AЮ p @W ` @A 7 P : !tZ!DZj!EA!Adlam,AdlmAhom,AhomAnatolian_Hieroglyphs,HluwArabic,ArabArmenian,ArmnAvestan,AvstBalinese,BaliBamum,BamuBassa_Vah,BassBatak,BatkBengali,BengBhaiksuki,BhksBopomofo,BopoBrahmi,BrahBraille,BraiBuginese,BugiBuhid,BuhdCanadian_Aboriginal,CansCarian,CariCaucasian_Albanian,AghbChakma,CakmCham,ChamCherokee,CherChorasmian,ChrsCommon,ZyyyCoptic,Copt,QaacCuneiform,XsuxCypriot,CprtCyrillic,CyrlCypro_Minoan,CpmnDeseret,DsrtDevanagari,DevaDives_Akuru,DiakDogra,DogrDuployan,DuplEgyptian_Hieroglyphs,EgypElbasan,ElbaElymaic,ElymEthiopic,EthiGeorgian,GeorGlagolitic,GlagGothic,GothGrantha,GranGreek,GrekGujarati,GujrGunjala_Gondi,GongGurmukhi,GuruHan,HaniHangul,HangHanifi_Rohingya,RohgHanunoo,HanoHatran,HatrHebrew,HebrHiragana,HiraImperial_Aramaic,ArmiInherited,Zinh,QaaiInscriptional_Pahlavi,PhliInscriptional_Parthian,PrtiJavanese,JavaKaithi,KthiKannada,KndaKatakana,KanaKawi,KawiKayah_Li,KaliKharoshthi,KharKhmer,KhmrKhojki,KhojKhitan_Small_Script,KitsKhudawadi,SindLao,LaooLatin,LatnLepcha,LepcLimbu,LimbLinear_A,LinaLinear_B,LinbLisu,LisuLycian,LyciLydian,LydiMakasar,MakaMahajani,MahjMalayalam,MlymMandaic,MandManichaean,ManiMarchen,MarcMasaram_Gondi,GonmMedefaidrin,MedfMeetei_Mayek,MteiMende_Kikakui,MendMeroitic_Cursive,MercMeroitic_Hieroglyphs,MeroMiao,PlrdModi,ModiMongolian,MongMro,MrooMultani,MultMyanmar,MymrNabataean,NbatNag_Mundari,NagmNandinagari,NandNew_Tai_Lue,TaluNewa,NewaNko,NkooNushu,NshuNyiakeng_Puachue_Hmong,HmnpOgham,OgamOl_Chiki,OlckOld_Hungarian,HungOld_Italic,ItalOld_North_Arabian,NarbOld_Permic,PermOld_Persian,XpeoOld_Sogdian,SogoOld_South_Arabian,SarbOld_Turkic,OrkhOld_Uyghur,OugrOriya,OryaOsage,OsgeOsmanya,OsmaPahawh_Hmong,HmngPalmyrene,PalmPau_Cin_Hau,PaucPhags_Pa,PhagPhoenician,PhnxPsalter_Pahlavi,PhlpRejang,RjngRunic,RunrSamaritan,SamrSaurashtra,SaurSharada,ShrdShavian,ShawSiddham,SiddSignWriting,SgnwSinhala,SinhSogdian,SogdSora_Sompeng,SoraSoyombo,SoyoSundanese,SundSyloti_Nagri,SyloSyriac,SyrcTagalog,TglgTagbanwa,TagbTai_Le,TaleTai_Tham,LanaTai_Viet,TavtTakri,TakrTamil,TamlTangut,TangTelugu,TeluThaana,ThaaThai,ThaiTibetan,TibtTifinagh,TfngTirhuta,TirhTangsa,TnsaToto,TotoUgaritic,UgarVai,VaiiVithkuqi,VithWancho,WchoWarang_Citi,WaraYezidi,YeziYi,YiiiZanabazar_Square,ZanbA GGGGGG`GG 8,,,,,,,,,,,$8H555 88  ffRR 8           //////////////// --------------tttttttttttttt  ============= QQQQQQQ $FFFFFFFFFFFǗ$?`(((((1''''''''''''''''''i~~3 BBB]]]]] IIIII ddddB80  HHHj((888888G,G,G,GG,8G,,,,,,,,,,,,,,,,8GGG8,GGGG6?)G((( '''''''''!00 u0000810686>> 1  >11>>G _0A0,L˝GGGGGGzŀ @@} }1;;;``W '''''GG,GWWC1 11p 0 0%G 555555 88&GG>>11111 KKKKKK!K,,.8`!M8ll*noo)vvuu% BJJ JGGGD77xaa/444{{NN?ZYYYAAAAAAAAqmSS::99|| |Or6k kk22`ŞJps%&< <P߁ CC=_____EE+++++++8++++++++`*eeǙ`E!\ \]5`X"`Ҡ !!!!!!!!Ecccǣ҈ y ` TTTHUUUUUUU......`՘O???UL 9` ci $oIpX^^^Κ  w wwwwbOV`[[[?g0D 0 ⟓uD)p>>>>6>66> >+gh #####p88; 8888,`  `&+cGG`t))))) `hhhh`ߞaobb''''dXX(bK`a3`  M76  `9wM 2$c00}0!0 0k0e00z`8,, Gn)G)f2 f2f2 RSs|2  b2 +-/=GQt +-/=GQt ".U+-/=PQctE ".U+-/=IPQctE  " 106>0  106> 106> 106> 106>  0 106>6> 106>06>0X6>6>Y 106>6>0#0;'0700 020W0 0_01)0G "-/C= 106> 6>,6>KK,JKKuSs++6+++\K#;0]0-(){}(){super(...arguments);}() { [native code] }cannot mix ?? with && or ||ctzproxy: property not present in target were returned by non extensible proxyrevoked proxyProxyadd_propertyproxy: cannot set propertyno setter for propertyvalue has no propertycould not delete propertyproxy: duplicate propertyJS_DefineAutoInitPropertyhasOwnPropertyproxy: inconsistent deletePropertyproxy: inconsistent definePropertyJS_DefineProperty!mr->empty-Infinityout of memoryunknown unicode general categoryGeneral_Categoryeveryanyapply'%s' is read-onlyexpecting catch or finallystickystringifysubarrayempty arraynon integer index in typed arraynegative index in typed arrayout-of-bound index in typed arraycannot create numeric index in typed arrayinvalid typed arrayisArrayTypedArraygetDaygetUTCDaygroupBym->dfs_ancestor_index <= m->dfs_indexjs_get_atom_indexinvalid array indexJS_AtomIsArrayIndexfindLastIndexfindIndexinvalid export syntaxinvalid assignment syntaxmaxexpBitsMaxprecMax\u%04xinvalid opcode: pc=%u opcode=0x%02x-+ 0X0x-0X+0X 0X-0x+0x 0xline terminator not allowed after throwbf_pownowinteger overflowstack overflowunderflowmust be called with newisViewDataViewrawBigFloatEnvtdivfdivedivcdiv%uclass declarations can't appear in single-statement contextfunction declarations can't appear in single-statement contextlexical declarations can't appear in single-statement contextduplicate argument names not allowed in this contextduplicate parameter names not allowed in this contextimport.meta not supported in this contextJS_FreeContextjs_map_iterator_nextjs_generator_nextjs_async_generator_resume_nextUnexpected end of JSON inputttexported variable '%s' does not existprivate class field '%s' does not existtestassignment rest property must be lastpval == lastfindLastbf_sqrtbfdec_sqrtsortcbrttrimStartpadStartunknown unicode scriptScripthypotfree_zero_refcountstr_index == num_keys_count + str_keys_countnum_index == num_keys_countclass_id < rt->class_countsym_index == atom_countlabel >= 0 && label < s->label_countlab1 >= 0 && lab1 < s->label_countval < s->capture_countval2 < s->capture_countinvalid repeat countinvalid repetition countfontinvalid code pointfromCodePointinvalid hintcannot convert to bigintboth operands must be bigintprivate method is already presentprecision must be presentencodeURIComponentdecodeURIComponentunexpected end of commentinvalid switch statementcannot convert NaN or Infinity to BigIntcannot convert to BigIntnot a BigIntDo not know how to serialize a BigIntparseIntduplicate defaultsplitexpecting hex digitinvalid digittrimRightreduceRightunshifttrimLeftinvalid offsetinvalid byteOffsetgetTimezoneOffsetresolving function already setproxy: inconsistent setfind_jump_targetexpecting targetinvalid destructuring targetproxy: inconsistent getWeakSetconstructJS_FreeAtomStructuse strictReflectrejectnot an AsyncGenerator objectcannot convert to objectinvalid brand on objectoperand 'prototype' property is not an objectiterator must return an objectnot a Date objectnot a objectObjectinexactcannot convert to bigfloatnot a bigfloatBigFloatparseFloatflatnothing to repeatconcatcodePointAtcharAtcharCodeAtkeysproxy: target property must be present in proxy ownKeysclearStatusexport '%s' in module '%s' is ambiguousprivate class field '%s' already existstoo many argumentsToo many call argumentstoo many elementsinvalid number of digitscannot provide both maximumSignificantDigits and maximumFractionDigitsinvalid number of exponent bitsexpBitsinvalid property accessjs_op_define_classfd->byte_code.buf[define_class_pos] == OP_define_classunsupported object class__getClasssetHoursgetHourssetUTCHoursgetUTCHoursgather_available_ancestorsgetOwnPropertyDescriptorswithResolverstoo many imbricated quantifiersunicode_prop_opsbf_sincosacosfor await is only valid in asynchronous functionsnew.target only allowed within functionsproxy: inconsistent preventExtensionsScript_Extensionsproxy: properties must be strings or symbolsgetOwnPropertySymbolsresolve_labelsJS_EvalThisinvalid descriptor flagsinvalid regular expression flagsvaluessetMinutesgetMinutessetUTCMinutesgetUTCMinutestoo many capturesgetOwnPropertyNamesgc_free_cyclesadd_eval_variablesresolve_variablestoo many local variablestoo many closure variablescompact_propertiesdefinePropertiesentriesfromEntriestoo many rangesincludeshasIndicessetMillisecondsgetMillisecondssetUTCMillisecondsgetUTCMillisecondssetSecondsgetSecondssetUTCSecondsgetUTCSecondsitalicsabsproxy: inconsistent has%.*s (%sset %sget %s at %sno overloaded operator %snot a %sunsupported keyword: %ssubstrproxy: inconsistent getOwnPropertyDescriptorsuper() is only valid in a derived class constructorparent class must be constructornot a constructorArray IteratorSet IteratorMap IteratorRegExp String Iteratornot an Async-from-Sync Iteratorcannot invoke a running generatornot a generatorAsyncGeneratorsyntax errorSyntaxErrorEvalErrorInternalErrorAggregateErrorTypeErrorRangeErrorReferenceErrorURIErrorfloorfontcoloranchorforkeyForexpecting surrogate paira declaration in the head of a for-%s loop can't have an initializer'arguments' identifier is not allowed in class field initializerinvalid number of arguments for getter or setterinvalid setterinvalid getterfiltermissing formal parameter"use strict" not allowed in function with default or destructuring parameterinvalid characterunexpected characterprivate class field forbidden after superinvalid redefinition of lexical identifier'let' is not a valid lexical identifierinvalid redefinition of global identifieryield is a reserved identifier'%s' is a reserved identifieratom1_is_integer && atom2_is_integercannot convert to BigInt: not an integerisIntegerisSafeIntegerread after the end of the bufferJS_WriteSharedArrayBuffercannot use identical ArrayBufferremaindercannot convert bigint to numbercannot convert bigfloat to numbercannot convert symbol to numbercannot convert bigdecimal to numbernot a numbercolumnNumberlineNumbermalformed unicode charclearsetYeargetYearsetFullYeargetFullYearsetUTCFullYeargetUTCFullYearq != runexpected line terminator in regexpunexpected end of regexpbf_expRegExpsupinvalid grouphalf-uppopcontinue must be inside loopbf_logic_opnum_keys_cmpuse stripmapflatMapWeakMapexpecting '{' after \plog1pJS_SetClassProtoJS_GetClassProtodivision by zerodivideByZero0odownhasOwnreturnpromise self resolutionout of memory in regexp executiondescription!m->eval_has_exception!module->eval_has_exceptionproxy: defineProperty exceptionjs_async_generator_resolve_functionjs_create_functionset/add is not a functionreturn not in a functionAsyncGeneratorFunctionAsyncFunctionjs_inner_module_evaluation!m->async_evaluationmodule->async_evaluationinvalid operationunsupported operationinvalidOperationawait in default expressionyield in default expressioninvalid decimal escape in regular expressionback reference out of range in regular expressioninvalid escape sequence in regular expressionexpected 'of' or 'in' in for control expressiontoo complicated destructuring expressionexpected '}' after template expressioninvalid precisiontoPrecisionasinjoinmincopyWithintemplate literal cannot appear in an optional chaincircular prototype chainexpBitsMinprecMinassign!y->signisFrozenhalf-even(pos + len) <= bc_buf_leni < a->lenunexpected ellipsis tokenthensetter is forbiddennull or undefined are forbiddenatanbf_tannannot a booleanBooleangc_scanJS_WriteBigNumJS_NewSymbolFromAtomfromrandomtrimtdivremfdivremedivremcdivrembf_divrembfdec_divremsqrtremm->cycle_root == mimulnot a symbolSymbolRegExp exec method must return an object or nullparent prototype must be an object or nullcannot set property '%s' of nullcannot read property '%s' of nullNullfillnew ArrayBuffer is too smallTypedArray length is too smallcalldotAllmatchAllreplaceAllceilupdate_labelbc_buf[pos] == OP_labelevalinvalid bigint literalinvalid bigfloat literalinvalid number literalinvalid bigdecimal literalmalformed escape sequence in string literalbf_exp_internalbf_log_internalbf_atof_internalbfdec_add_internalbf_ftoa_internalJS_SetPropertyInternalJS_GetOwnPropertyNamesInternal__JS_EvalInternalsubnormalcannot convert to bigdecimalnot a bigdecimalBigDecimalntt_fft_partialtoExponentialsealglobalblinkreturn in a static initializer blocklre_exec_backtracks->is_weakbf_pow_uibfdec_pow_uisetMonthgetMonthsetUTCMonthgetUTCMonthinvalid keyword: withstartsWithendsWithprop == JS_ATOM_lengthinvalid array lengthinvalid array buffer lengthinvalid bignum lengthinvalid string lengthinvalid lengthinvalid byteLengthuse mathMathpushacoshJS_ResizeAtomHashasinhatanhbreak must be inside loop or switchmatchnip_catchsearchforEachbf_logArray too longstring too longArray loo longsubstringcannot convert symbol to stringunexpected end of stringnot a stringinvalid character in a JSON stringtoStringtoDateStringtoLocaleDateStringtoTimeStringtoLocaleTimeStringtoLocaleStringtoGMTStringtoISOStringtoUTCStringceilingjs_inner_module_linkingduplicate import bindinginvalid import bindingpromise is pendingbigregexp must have the 'g' flagofinfInfdiff == (int8_t)diffdiff == (int16_t)diffhrefgc_decreffree_var_refoptimize_scope_make_global_refreset_weak_refdelete_weak_refoptimize_scope_make_refindexOflastIndexOfvalueOfsetPrototypeOfgetPrototypeOfisPrototypeOf%.*ffontsizenew_size <= sh->prop_sizedescr < rt->atom_sizeatom < rt->atom_sizecompute_stack_sizecr_regexp_canonicalizefreezeresolvetoPrimitiveput_lvalueunknown unicode property valuerest element cannot have a default valueinvalid ret value__JS_AtomToValue__quoteisFinitedeletecreateNumber tag expected for datesetDategetDatesetUTCDategetUTCDateInvalid Datereverseparseproxy preventExtensions handler returned falsemodule namespace properties have writable = falsePromisetoLowerCasetoLocaleLowerCasetoUpperCasetoLocaleUpperCaseignoreCaselocaleCompareproxy: inconsistent prototypeproxy: bad prototypenot a prototypeinvalid object typeunescaperest element must be the last onemultilineasync_func_resumesomeJS_FreeRuntimesetTimegetTimeasync_func_free_frameset_object_nameexpecting property nameunknown unicode property nameinvalid property nameduplicate __proto__ property nameinvalid redefinition of parameter nameexpecting group nameduplicate group nameinvalid group nameduplicate label nameinvalid first character of private nameinvalid lexical variable nameinvalid method nameexpecting field nameinvalid field nameclass statement requires a namefileNamejs_link_modulejs_evaluate_modulemodule->cycle_root == modulecompileobject is not extensibleproxy: inconsistent isExtensiblecannot have setter/getter and value or writableproperty is not configurablevalue is not iterablepropertyIsEnumerablemissing initializer for const variablelexical variableinvalid redefinition of a variablerevocablestrikemp_divnorm_largebignum exponent is too largebignum is too largeinvalid class rangemessageinvalid lvalue in strict modeinvalid variable name in strict modecannot delete a direct reference in strict modeoctal escape sequences are not allowed in strict modeoctal literals are deprecated in strict modeinvalid rounding modeunicodeskip_dead_codeinvalid argument name in strict codeinvalid function name in strict codeinvalid redefinition of global identifier in module codeimport.meta only valid in module coderndModefromCharCodeinvalid for in/of left hand-sideinvalid assignment left-hand sidereducesource'this' can be initialized only onceproperty constructor appears more than onceinvalid UTF-8 sequencecircular referenceslicespliceracereplace%+.*eunexpected 'await' keywordunexpected 'yield' keywordmap_decref_recordfmoditerator does not have a throw methodobject needs toISOString method'super' is only valid in a methodfround__bf_round__bfdec_roundbreak/continue label not foundout of boundfpRoundfindbindinvalid index for appendextraneous characters at the endunexpected data at the endunexpected endinvalid increment/decrement operandinvalid 'instanceof' right operandinvalid 'in' operandtrimEndpadEndboldinvalid array index: %lldgc_decref_childresolve_scope_private_fieldcannot delete a private class fieldexpecting private field%s is not initializedfixedtoFixedobject references are not allowedset_object_name_computedeval is not supportedregexp not supportedRegExp are not supportedonly value properties are supportedtoSortedinterrupted!s->is_completed%s object expectedidentifier expectedbytecode function expectedbigdecimal expectedstring expectedfrom clause expectedfunction name expectedvariable name expectedmeta expectedjs_async_module_execution_rejectedjs_set_module_evaluatedtoReversedderived class constructor must return an object or undefinedcannot set property '%s' of undefinedcannot read property '%s' of undefinedflags must be undefinedUndefinedprivate class field is already defined'%s' is not definedgroup name not definedoperator %s: no function definedisWellFormedtoWellFormedallSettledjs_async_module_execution_fulfilledcannot be calledisSealed!sh->is_hashed!abuf->detachedArrayBuffer is detachedjs_array_toSplicedadd%+07d%04d%02d%02dp%+d%c%+d%02d/%02d/%0*d%.3s %.3s %02d %0*dp%d%c%d:%dinvalid throw var type %dscjs_def_malloctruncgcexecprecbf_integer_to_radix_recsetPrecmp_div_decmp_shr_decmp_shl_dec/Users/bep/dev/go/misc/javy/target/wasm32-wasi/release/build/rquickjs-sys-0f1effbd806ace87/out/quickjs.c/Users/bep/dev/go/misc/javy/target/wasm32-wasi/release/build/rquickjs-sys-0f1effbd806ace87/out/libregexp.c/Users/bep/dev/go/misc/javy/target/wasm32-wasi/release/build/rquickjs-sys-0f1effbd806ace87/out/libbf.c/Users/bep/dev/go/misc/javy/target/wasm32-wasi/release/build/rquickjs-sys-0f1effbd806ace87/out/libunicode.csubpromise_reaction_jobjs_promise_resolve_thenable_job0br != a && r != bq != a && q != bc != a && s != ar != a__lookupSetter____defineSetter____lookupGetter____defineGetter____proto__[Symbol.split][Symbol.species][Symbol.iterator][Symbol.asyncIterator][Symbol.matchAll][Symbol.match][Symbol.search][Symbol.toStringTag][Symbol.toPrimitive][unsupported type][function bytecode][Symbol.hasInstance][Symbol.replace][%02d:%02d:%02d.%03dZRNDZPOSITIVE_INFINITYNEGATIVE_INFINITYp->class_id == JS_CLASS_ARRAYstack_len < POP_STACK_LEN_MAXRNDU-%02d-%02dTJS_AtomGetStrRTopcode < REOP_COUNTJS_VALUE_GET_TAG(func_ret) == JS_TAG_INTBYTES_PER_ELEMENT%02d:%02d:%02d GMTJS_VALUE_GET_TAG(sf->cur_func) == JS_TAG_OBJECTshift >= 1 && shift < LIMB_DIGITSvar_kind == JS_VAR_PRIVATE_SETTERMAX_SAFE_INTEGERMIN_SAFE_INTEGERasUintNasIntNisNaNDate value is NaNtoJSONEPSILONp->gc_obj_type == JS_GC_OBJ_TYPE_JS_OBJECT || p->gc_obj_type == JS_GC_OBJ_TYPE_FUNCTION_BYTECODE || p->gc_obj_type == JS_GC_OBJ_TYPE_ASYNC_FUNCTIONRNDNNAN%02d:%02d:%02d %cMstack_top == NULLs->label_slots[label].first_reloc == NULLlabel_slots[i].first_reloc == NULLprs != NULLsf->cur_sp != NULLsf != NULLmr1 != NULLvar_kind != JS_VAR_NORMALb->func_kind == JS_FUNC_NORMALencodeURIdecodeURIPIspecial == PUT_LVALUE_NOKEEP || special == PUT_LVALUE_NOKEEP_DEPTHs->state == JS_ASYNC_GENERATOR_STATE_EXECUTINGm1->status == JS_MODULE_STATUS_EVALUATINGm1->status == JS_MODULE_STATUS_LINKINGprec != BF_PREC_INFprec1 != BF_PREC_INF0123456789ABCDEFRNDFMAX_VALUEMIN_VALUEeval_type == JS_EVAL_TYPE_GLOBAL || eval_type == JS_EVAL_TYPE_MODULELOG2ELOG10Es->state == JS_ASYNC_GENERATOR_STATE_AWAITING_RETURN || s->state == JS_ASYNC_GENERATOR_STATE_COMPLETEDm->status == JS_MODULE_STATUS_UNLINKED || m->status == JS_MODULE_STATUS_LINKED || m->status == JS_MODULE_STATUS_EVALUATING_ASYNC || m->status == JS_MODULE_STATUS_EVALUATEDm1->status == JS_MODULE_STATUS_EVALUATING || m1->status == JS_MODULE_STATUS_EVALUATING_ASYNC || m1->status == JS_MODULE_STATUS_EVALUATEDm1->status == JS_MODULE_STATUS_LINKING || m1->status == JS_MODULE_STATUS_LINKED || m1->status == JS_MODULE_STATUS_EVALUATING_ASYNC || m1->status == JS_MODULE_STATUS_EVALUATEDm->status == JS_MODULE_STATUS_LINKEDm->status == JS_MODULE_STATUS_UNLINKEDRNDDUTCm->status == JS_MODULE_STATUS_EVALUATING_ASYNCmodule->status == JS_MODULE_STATUS_EVALUATING_ASYNCRNDNARNDAbigint operands are forbidden for >>>"setUint8getUint8setInt8getInt8malformed UTF-8radix must be between 2 and 36setUint16getUint16setInt16getInt16argc == 5setBigUint64getBigUint64setBigInt64getBigInt64setFloat64getFloat64argc == 3atan2log2floorLog2SQRT1_2SQRT2LN2clz32setUint32getUint32setInt32getInt32setFloat32getFloat32stack_len >= 2JS_AtomIsNumericIndex1js_fcvt1JS_CompactBigInt1expm1r != a1 && r != b1ls->addr == -1nq >= 1stack_len >= 1p->header.ref_count == 1p->shape->header.ref_count == 1stack_len == 1js_free_shape0log10LN10radix == 10p->ref_count > 0var_ref->header.ref_count > 0m->pending_async_dependencies > 0len > 0stack_size > 0cpool_idx >= 0rt->atom_count >= 0ls->ref_count >= 0carry == 0s->is_eval || s->closure_var_count == 0p->ref_count == 0ctx->header.ref_count == 0sh->header.ref_count == 0p->mark == 0(n2 % strip_len) == 0(pr->u.init.realm_and_id & 3) == 0(new_hash_size & (new_hash_size - 1)) == 0r != 0i != 0size != 0^$\.*+?()[]{}|/0.missing binding pattern...bigint argument with unary +bigfloat argument with unary +bigdecimal argument with unary +async function * })invalid atom index (pos=%u)invalid tag (tag=%d pos=%u)invalid object reference (%u >= %u)list_empty(&rt->gc_obj_list)j == (sh->prop_count - sh->deleted_prop_count)!__JS_AtomIsTaggedInt(descr)!atom_is_free(p)(null)n < sizeof(*buf) (native)js_class_has_bytecode(p->class_id)too many arguments in function call (only %d allowed)invalid version (%d expected=%d)nip_catch: no catch op (pc=%d)inconsistent catch position: %d %d (pc=%d)inconsistent stack size: %d %d (pc=%d)bytecode buffer overflow (op=%d, pc=%d)stack overflow (op=%d, pc=%d)stack underflow (op=%d, pc=%d)invalid opcode (op=%d, pc=%d)unsupported tag (%d)(?:)idx < countof(case_conv_table1)no function filename for import()-_.!~*'() anonymous(Symbol(expecting '}'class constructors must be invoked with 'new'expecting 'as'unexpected token in expression: '%.*s'unexpected token: '%.*s'redeclaration of '%s'duplicate exported name '%s'circular reference when looking for export '%s' in module '%s'Could not find export '%s' in module '%s'could not load module '%s'cannot define variable '%s'undefined private field '%s'unsupported reference to 'super'invalid use of 'super''for await' loop should be used with 'of''for of' expression cannot start with 'async'expecting '%c'unparenthesized unary expression can't appear on the left-hand side of '**'invalid use of 'import()'expecting %%;/?:@&=+$,#set get [object async function bound %.3s, %02d %.3s %0*d async : ) { __JS_FreeValue: unknown tag=%d Support for formatting long double values is currently disabled. To enable it, add -lc-printscan-long-double to the link command. Assertion failed: %s (%s: %s: %d) A Cn,UnassignedLu,Uppercase_LetterLl,Lowercase_LetterLt,Titlecase_LetterLm,Modifier_LetterLo,Other_LetterMn,Nonspacing_MarkMc,Spacing_MarkMe,Enclosing_MarkNd,Decimal_Number,digitNl,Letter_NumberNo,Other_NumberSm,Math_SymbolSc,Currency_SymbolSk,Modifier_SymbolSo,Other_SymbolPc,Connector_PunctuationPd,Dash_PunctuationPs,Open_PunctuationPe,Close_PunctuationPi,Initial_PunctuationPf,Final_PunctuationPo,Other_PunctuationZs,Space_SeparatorZl,Line_SeparatorZp,Paragraph_SeparatorCc,Control,cntrlCf,FormatCs,SurrogateCo,Private_UseLC,Cased_LetterL,LetterM,Mark,Combining_MarkN,NumberS,SymbolP,Punctuation,punctZ,SeparatorC,OtherA >?9="!A@%%&( *H,C.K0L2DB}~vw{|xyu3t./0O!""*456IZ6EBF!@``)@F`m789_eDGObNPHA <ZG[VX`^pioN;gEXXo]\_^a`fghibcdekjmlonqpA sBFILSiNJ 5RH1TW YA(hDF;N=bJ`kA (**+,-@-.A./ 0B@BDBJLLBMBCN/OBP@RBSB UBZ^BC^_BhBkqqDHsDwBy{A|B}D~BBD>A.A@>@@>DDA0D4D5D6D8D:D>a/B@J@LM.V.r wwA. 0"1.2Rvw/@@.A@@@@ ? KLO^fDBDB D D"D"D"D"D>D"D"D>L@@@@   @>D@>C>@@@ @        "D%*@@@AAA@B-B@EEBFH@HHIIJJKBM@NNOBQTTTWX@XXXY@YYYZ@ZZZ[@\\\]@]]]^@^^^_@b>fkAs@@@BDDDDD>D A #E   +E ! " %E$ & % ' -  4 : @  [  D -  -  B " " " "A " % #& ' ' + B1 "4 "4 "5 "A6 "7 = = ? ? -JL EQ S Y d A ) A )A … @ A  D # -  @  #B #E  A @   1A A 3 1 @ 3 @ 5A  @ /B 1A @ / @  @   @ 3 @ @ ! %  @  A ' ? @ B B ?C 1 @ @  @  ?    A @    %E % %A ))))*@*@>J>?j>>>/>ų>>>?A>>A>>@>>>>> > >>>-1>>/>->//????? A D G J V \ ` b d h j p x | 0 a-k  ' 1 ! 5 9 = A E I M Q U Y o q s   " . z (,026<>ACFw{ "(3=ELQW^cipv} #)/269?EYay|AIMSWZnqu{}o Slrx~+IbLRWww}w#08<Rd1 "$&(*H~ )DFHJLNPRrtvxz""""""""""  9=C`-ht,%8:>DJLPRZ]_eg0m3 D E!U![!U"s#A B 23 1o141234AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyyAAACCCCDEEEEEGGGGHIIIIIIJijJKLLLLk kNNNnOOORRRSSSSTTUUUUUUWYYZZZOUD}D~d~LJLjljNJNjnjAIOU&GKOjDZDzdzGNAAEEIIOORRUUSTHAEO.Yhfjry{wy clsx  #8553V:8Ct-###'+e',-!-.#-'M!MM#MTTT( < 0 < 3 <  '''' ' '''  2 < 8 <  &&&+ < G V > ! <  F V >   M2BLQV[@qrqAq%.55 5 5 55:5<5>5B5ABDEGO"PRTUWaPQbdeY[\gkmKoTptuov%iruvRcU\f_aehij{mqprstuxzABBBDDDDDEE(FGHHHHHIKKKL6LLMMMNNNNLLPPRRZRSSZ`bTTTTUUUhjVVWWWWWXXYZZZhtwyaAAEEEIIOOUUYYYY‘µ ! ! !—()()()¹010101™898989¿@@HHPPP¥YYY`a`a`a©hihihi±E E`EpűŬ¶ő ¨tŷŮŕſ¹BBBB`|ş  .....2 2 2 5 5 5 !! ???!!?2 0i456789+=()n0+"=()aeoxYhklmnpstRsa/ca/sCc/oc/uFH $NoPQRRRSMTELTMKBCeEFMoFAX"Ddeij17191101323152535451656183858781IIIIIIVVIVIIVIIIIXXIXIILCDMiiiiiiivviviiviiiixxixiilcdm03!!!!!!"" "#"%"+"+"+"."."."<"C"E"H"=a"M"<>d"e"r"v"z"""""""|"""8011020(1)(10)(20)1.10.20.(a)Aa+"::======*jVN(6?Y?Q&,CWlR^zSSSVWXY YY'YsYP[[[\"\8\n\q\]]]]r^z^^^^ __P_a_s__b6bKb/e4eeeeeeefg(g kbkykkkkkll4lkp*r6r;r?rGrYr[rrssttuu(u0uuuvv}vvvvwww:yyytzzzs||6Q 3)8y Tyr]yRN|Tf[vOnjTSmyOOU|^e{PTE2130 aaaaaa a a aaai ci nNN NVNmQNkQ]NASgkp4l(gёWe*h g>y Tyr]yRy7usYi*QpSlOQck N-N N]S;S[f[vOnjTSY3640501g10gHgergeVLTD0 "$&()*+,-0369<=>?@BDFGHIJKMNOPNT00['J4R90ZI0'O 0OO0T!0TT0OX<F0>B?Q0AGG2000N08=O>O000@<30@4O>0@B0900 E<$O GI0>M0K:K,0 G0> G+0:C0::C04<0*$+ 0A8 0 80,02&I0%<0! 804H"(02Y%0/D00)M<000" 3 ";"D!D09O$0#000*3"3*0: I0:G:+:G 0'<0<00>D000,0005G5P?0BZ'BZIDQ0'(000(0&000:AA0,0p10p20phPadaAUbaroVpcdmdmIUs^b-fT'Yckfl*h_O>ypAnAAmAkAKBMBGBcalkcalpFnFFgmgkgHzkHzMHzGHzTHz!m!d!k!fmnmmmmcmkmc O Omc O P Pmkmm"sm"sPakPaMPaGParadradsrad"spsnssmspVnVVmVkVMVpWnWWmWkWMWkMa.m.BqcccdCkgCo.dBGyhaHPinKKKMktlmlnloglxmbmilmolPHp.m.PPMPRsrSvWbVmAm1e10e20e30egalJLCFQ&S'7kRHfʎȌn2NSQYёUHYaiv?jmps=jNuSkr-P]oͅdb؁^gjmrΐOQRdjrv\2oxy}Ƀ֊X_`|~brxŒXb\jmo/}7~KRQQz}ubj9N[`spuSxO_ Nlxe"}S^XwIklb傠ceuNiQQh|oҊϑRBTsY^eo*yjΞRfwkbt^abd#oIqty}o&#JRRTpˆ^_{ck>|usNV[]`sitF4HOy`NP[?\ejqBv|f.R{ggAmn tYukx}^mQ.bx+P]m*_Dahs)RTe\fNghltuyψ̑?SnTqtWgmz {|rpXN6:RR^b|[mf;LM^@QUZXtfQ*svyIyHyPyVy]yyy@zz{} ~A~ryyW9ӌ8;u`B&NQhQOEQQRRUUUUUZXXDYTYbZ([^^i__`Naaa`aa4bcdRdVetfggVgykkAmnn"opnqw5rr*sqtu;uvvvvvJw@wxz{{|[}}>RyAˊ98rv|Vۗ ;J(D(3;@9@IR\~C*fffiflffiffltste II-./01"+q  33335555'' 8888>>>>BBBB@@@@IIJJJJOOPPPPMMMMaabbIdddd~~}}.||&""###&#$#$#$#$    #$#$#$#$#$     # $!!!#!$$$$$$#$$ J J#J LQQ&  #$   #$  & #$   #$#$#$#$#$  # $#J$ $ $$ $#$$!!!    !     !!!!J$$$$$!!!!!  !!  !$$!@NQ'"#"#"# " # " #"#"#"#"#"#       "#"#"# " # " #"#"#"#"#"#                 $$*                              (!!"!""""!"!"!"!! ! " """""""""""""""""""""  ""5 '   !# ! 5'" # ! ' ' ,00:;!?00&  __(){}0  []> > > > ___,0.;:?! (){}00#&*+-<>=\$%@@ M@!  !!!!""""####$$$$%%%%&&&&''(())))"""""""""!)0 񠢤11O1U1[1a1 %!!!!%%SfVWX^db`'glߎnߎvwqz}~gq, A@1'2'UG>GWUUPU50WeXe_n_o_p_q_rUUUeѺeѻnѼnѻoѼoUUUAaAaiAaACDGJKNOPQSTUVWXYZabcdfhpAaABDEFGJSaABDEFGIJKLMOSaAaAaAaAaAaAa17$ $ $ $ $  000000:>KMN0&( a&%/{Q'*     DwE(,G34*+.6:-JDF395B4.6:o(,G-7JCEF39A5B4*+.68:n' ! #*    (,/H2-7J*    0.0,(A)0S0CRCDWZAHVMVSDSSPPVWCMCMDMRDJK00hhKbW[S0NY)YN f!qeMR_QeRB}uX9TobUcN NJ]-NScpSbyzzTn gg3urRUM00,g NN[pSbvRWe_S08N "`OOOPzPPPP4:MQTQdQwQ4gQQKQQNQQߑQR4;RFRrRwR5 R3>?P, ppSSc SSTT8THThTTTUSUcUUUUUUUWVWQVtVRXWW XW2X1XXXXYY"YbYYZ'ZYfZ66[>[>[[[[[[\S_"\7`\n\\\C]n]k]|]]]/8](^=^i^b8!|8^^^^^1#1#"_"_82ab_k_8____`:99`&`A  (Ha2Fj\g]bTw +=cbhccc+"dcc.:id~ddwdl:Oele 0efIf;f;:QQgfCgg!g^gSg3I;ggRhhm4hhi;Biiij6jmwmAmimxmm=4m/nnn3=nn>mno^??o9ppp=Jp}pwpp%EqcBqC(r5rPrFrr5G   Hzss>s>>Gt\tqttt?$u6L>uLpu!vOODP?@vPPQ3QwwwJw9@wF@@TNxxx@&VVyVVyy/A@zJzOz|YZZzB[{{'B\|B||}_c}C}~E~4C(bGbYCbz>cd#e`ep_3C D>Zgg33kDRFg&G`'F`@6 $` @&' 6-'  )f''@6&f'&F%$&GF'v'&@@E6# AFe%&$78Z ? "aNB"aNb "aNN B"a.64v0V    LL@hH/o/A"A/ aae/"!?B /?j /`,o / / ,/  쀄 ,I  = 4F/  .g p$x{7z( / a((_!"A??$AZF?v 6 06V661v/VQN`V /3f'/J/N &.$RD#V/k88@/ 6倄V% &H$&>&."6." aA??D?$Ee'&o@/ ,v'*&6 V%6'@F''f'&G`6!'&'&E  vO*F%&&%6&'6$ #d.`H''' `)`xx b %%d 8 . O106vPVvV L 6` V V 66L6  6%$@ E@- -l/[/  % sV`%@-k +O@'%z@)`k `" F `` ,!";倯"= $%@ /( %@80`+% &F&feE F`+K&`.@ vHA/++f"& %CFk fv -` %&F%Gf'&6v Fv'6&(G'evfV  GF'&%6e'G&' % %&'g ' G ' @-G'Fe6E(Gg&&%'Gf g&&e&(G'&V #'. F'f`+V1$G&\  %' &V> Gf &g f'F&&VAn @6 &&A%@&%&' &'6&'@'N m ^gԀ ASA#H/M( "BC1I`BkO5FYE[N@DHAL A`͏@OAз AHE(IH(HąBmՀA A@% @@Ѐ@;@ šڊɀ퀏퀏퀏퀏쁏(ꀌʁ 0BC@AZA89瀎@ј( ؋ALA= @䂩A `#@B CZaĭ@ɀ@ʙ @ŀ@ԯ( @A@A @_@׀مAnހŀ@ƀ@恉(((AsA΂DـBXae@AA=A ԪыA@C@BBˀKAFRԄGP`̚@@Έ`T·l.OA *  ! ( * / 0 _ ` 00A -@0:A 0:A[_`a{A !A A =A A NA A A A A A A A A *A p  /A B CCBC'CBBcopyWithinentriesfillfindfindIndexfindLastfindLastIndexflatflatMapincludeskeystoReversedtoSortedtoSplicedvaluesA A nullfalsetrueifelsereturnvarthisdeletevoidtypeofnewininstanceofdowhileforbreakcontinueswitchcasedefaultthrowtrycatchfinallyfunctiondebuggerwithclassconstenumexportextendsimportsuperimplementsinterfaceletpackageprivateprotectedpublicstaticyieldawaitlengthfileNamelineNumbercolumnNumbermessagecauseerrorsstacknametoStringtoLocaleStringvalueOfevalprototypeconstructorconfigurablewritableenumerablevaluegetsetof__proto__undefinednumberbooleanstringobjectsymbolintegerunknownargumentscalleecallerlastIndextargetindexinputdefinePropertiesapplyjoinconcatsplitconstructgetPrototypeOfsetPrototypeOfisExtensiblepreventExtensionshasdeletePropertydefinePropertygetOwnPropertyDescriptorownKeysadddonenextvaluessourceflagsglobalunicoderawnew.targetthis.active_func#constructorasfrommeta*default**ModulethenresolverejectpromiseproxyrevokeasyncexecgroupsindicesstatusreasonglobalThisbigintbigfloatbigdecimalroundingModemaximumSignificantDigitsmaximumFractionDigitsnot-equaltimed-outoktoJSONObjectArrayErrorNumberStringBooleanSymbolArgumentsMathJSONDateFunctionGeneratorFunctionForInIteratorRegExpArrayBufferSharedArrayBufferUint8ClampedArrayInt8ArrayUint8ArrayInt16ArrayUint16ArrayInt32ArrayUint32ArrayBigInt64ArrayBigUint64ArrayFloat32ArrayFloat64ArrayDataViewBigIntBigFloatBigFloatEnvBigDecimalOperatorSetOperatorsMapSetWeakMapWeakSetMap IteratorSet IteratorArray IteratorString IteratorRegExp String IteratorGeneratorProxyPromisePromiseResolveFunctionPromiseRejectFunctionAsyncFunctionAsyncFunctionResolveAsyncFunctionRejectAsyncGeneratorFunctionAsyncGeneratorEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIErrorInternalErrorSymbol.toPrimitiveSymbol.iteratorSymbol.matchSymbol.matchAllSymbol.replaceSymbol.searchSymbol.splitSymbol.toStringTagSymbol.isConcatSpreadableSymbol.hasInstanceSymbol.speciesSymbol.unscopablesSymbol.asyncIteratorSymbol.operatorSetA                        nfinityA +0123456789abcdefghijklmnopqrstuvwxyz 48A I+-*/%**|&^<<>>>>>==<posneg++--~A d?A s]A ~PA WA WA NA T\A 1 A @@A 5dY5RA ^XhgggxggA R5 gKBA ;'jgV1g'jA jZ9):%AVFGCUA [ARj?;U@g U@gSHA J;d%AVFGCUA [ARj?; j?g j?U@ g1:A K9):%AVgOHA ;;d%AVg-:A R5 g>BA R5 g1BA 1gA ;L4R1gVA efUd:Nc0^=A gA gIA gA oR5H*3R5H*3gBA gIA TA RhaSIS aSUS#RS:S3S1'S29A WA TGhGGPQ4V!GV =1=0|?A?@@Q@P@a@`1q1pW@q@p@q@pq?q?p=q=p,V1KL `q  ;> G LR 33 KL[L;d f M 3 \^ zF d  =  ]  P  cJ  H  R3  [3  ,;  ;A  d A =A djA hAЊ hA oA 4pA :pA lA HLA 2?=LAЋ 2A RA TA K`kP;dfM3]^^6RA Y*CA `[{AЍ VTT\0D@?>1;j?U@Z> A!="-?#PL$yP%_U%c&`L&=']@(H)RAܐ *:SA +TA ,0-T.Z/ng01]g2;g2Lg3*g3N405"_6RA 7Ch8Y9A $G:A G;A gA ;< Q=;>0?W?AR?CH?@D?l]@N9@]NA_Bo2B5Ba2BTCTDy@EKFRA̕ YG:SFGHQI\9HZ9I_VA JdbA K6LLaM]N]N1dOKPGHQr;Qj??g j?;?U@?1R=MSSA TgA R5 @g"BA 9Ug;V jWUXkYF8YkZ38ZW[W\0A !jA cA g~PA EABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./A UkP]`^K_R`:S`TA a9 9A g; g;A Y jbUcFdFellA !jA hA hA ,jA 'KL`q;>GLR33KLd[LQQRQQR rnHfqr6T6BMA ?^MqgQA /miW @rUk@q9B.?$m+eG?*m&{?k-DT! @uq;f?}q;f?\:05:\090):A!T%AZ;> 9Tg\:A RA TA̭ hgMA IA [GCKCR5 H *3 gBA gIA QA ]gnFA }3gA QAЯ ]gGFA gA QA *; Q8FA QAа 9A Z9j?g j?;U@gA K0?W ?AR ?CH ?@D ?l]@N9 @]N_o25a2_VA dbA ] 16LaK:STTy@=MSAܴ gA 8FA QA 9A ppppqq4qqqKqppppqq(qqq@qg3A A a$!"!!!!!!!!!!!A A A ! A  A A ftztA `NP@h 7 d1z>u2-iS*0'a(Tzjj&&>%DȺg# )"=Ȳ!+W; )| ~PX,o⦊!] !͝4CxL$e z6 >[K +רhLi4r?C;o.uo8F8;b0YV梕+0}̙_1`{("O jF2= A  G2@&A (1_R27;n$Y5hW/{t8,A UIlF. `2  8)f>2 @/ v./rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/slice/index.rs!O4!O2assertion failed: self.is_char_boundary(n)/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rsb"Kb"K /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/str/pattern.rs/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/vec/mod.rs7#L$A -"O7 : A _#  a Display implementation returned an error unexpectedlyA /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/string.rs<$K Errorassertion failed: self.is_char_boundary(new_len)<$K A backtrace capture failed/Users/bep/.cargo/registry/src/index.crates.io-6f17d22bba15001f/anyhow-1.0.86/src/error.rs%ZA : % Caused by: stack backtrace:Stack backtrace: %S/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/io/borrowed_buf.rsassertion failed: filled <= self.buf.init%S  A reentrant inith&/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/cell/once.rs&M$BA internal error: entered unreachable code/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/vec/mod.rs'L$Utf8Errorvalid_up_toerror_lenA  NoneSome            use of std::thread::current() is not possible after the thread's local data has been destroyedlibrary/std/src/thread/mod.rs(failed to generate unique thread ID: bitspace exhausted(7( mainlibrary/std/src/sync/lazy_lock.rs)!library/std/src/backtrace.rsRUST_LIB_BACKTRACERUST_BACKTRACEunsupported backtracedisabled backtraceL)called `Result::unwrap()` on an `Err` valuefailed to write the buffered data)!A library/std/src/io/buffered/linewritershim.rs4*-Y4*-|'4*-~04*-wmid > len* 4*- )entity not foundpermission deniedconnection refusedconnection resethost unreachablenetwork unreachableconnection abortednot connectedaddress in useaddress not availablenetwork downbroken pipeentity already existsoperation would blocknot a directoryis a directorydirectory not emptyread-only filesystem or storage mediumfilesystem loop or indirection limit (e.g. symlink loop)stale network file handleinvalid input parameterinvalid datatimed outwrite zerono storage spaceseek on unseekable filefilesystem quota exceededfile too largeresource busyexecutable file busydeadlockcross-device link or renametoo many linksinvalid filenameargument list too longoperation interruptedunsupportedunexpected end of fileout of memoryother erroruncategorized errorOscodeA Akindmessage  KindErrorA !CustomerrorA " (os error )A 0. ;.library/std/src/io/stdio.rsT. T.*T.-T.T.T.failed printing to : ..T.^ stderrlibrary/std/src/io/mod.rs/1failed to write whole buffer8/T//$a formatting trait implementation returned an error when the underlying stream did notx/V/4library/std/src/panic.rs/fulllibrary/std/src/path.rs.0!0&0,0 '0'0)0+0/0/0+cannot recursively acquire mutex0 library/std/src/sys/sync/mutex/no_threads.rs0, library/std/src/sync/once.rs01201011lock count overflow in reentrant mutexlibrary/std/src/sync/reentrant_lock.rs1&-file name contained an unexpected NUL byte1*2stack backtrace: note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. /+0A �memory allocation of bytes failed 22 bytes failed22 library/std/src/alloc.rs2b library/std/src/panicking.rsBoxthread '' panicked at : Q3Y3g3i3note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace 3N 3 #A $A "%&'()A =* panicked after panic::always_abort(), aborting. A =L41 thread panicked while processing panic. aborting. A R43thread caused non-unwinding panic. aborting. 4-+,-A .fatal runtime error: failed to initiate panic, error 055i3library/std/src/../../backtrace/src/symbolize/mod.rsx54g0A . - A 5 at :5NotFoundPermissionDeniedConnectionRefusedConnectionResetHostUnreachableNetworkUnreachableConnectionAbortedNotConnectedAddrInUseAddrNotAvailableNetworkDownBrokenPipeAlreadyExistsWouldBlockNotADirectoryIsADirectoryDirectoryNotEmptyReadOnlyFilesystemFilesystemLoopStaleNetworkFileHandleInvalidInputInvalidDataTimedOutWriteZeroStorageFullNotSeekableFilesystemQuotaExceededFileTooLargeResourceBusyExecutableFileBusyDeadlockCrossesDevicesTooManyLinksInvalidFilenameArgumentListTooLongInterruptedUnsupportedUnexpectedEofOutOfMemoryOtherUncategorizedA i/library/std/src/sys/pal/wasi/os.rs08"C6strerror_r failured808"A A 0library/std/src/sys/pal/wasi/time.rs8$ Once instance has previously been poisoned8*one-time initialization may not be performed recursively98fatal runtime error: rwlock locked for writing H9/  &8    **** ++.+@+M+[+p+|+++++++,?,X,o,{,,,,,,,,,- -.->-T-i-t----        666)686G6Y6j6v6666666666677'727:7C7N7Y7p7|77777777778 88" $ ((((((( ((((#((( ((! ((((((&(($(($((( ($(((codename1messageSUCCESS2BIGACCESADDRINUSEADDRNOTAVAILAFNOSUPPORTAGAINALREADYBADFBADMSGBUSYCANCELEDCHILDCONNABORTEDCONNREFUSEDCONNRESETDEADLKDESTADDRREQDOMDQUOTEXISTFAULTFBIGHOSTUNREACHIDRMILSEQINPROGRESSINTRINVALIOISCONNISDIRLOOPMFILEMLINKMSGSIZEMULTIHOPNAMETOOLONGNETDOWNNETRESETNETUNREACHNFILENOBUFSNODEVNOENTNOEXECNOLCKNOLINKNOMEMNOMSGNOPROTOOPTNOSPCNOSYSNOTCONNNOTDIRNOTEMPTYNOTRECOVERABLENOTSOCKNOTSUPNOTTYNXIOOVERFLOWOWNERDEADPERMPIPEPROTOPROTONOSUPPORTPROTOTYPERANGEROFSSPIPESRCHSTALETIMEDOUTTXTBSYXDEVNOTCAPABLENo error occurred. System call completed successfully.Argument list too long.Permission denied.Address in use.Address not available.Address family not supported.Resource unavailable, or operation would block.Connection already in progress.Bad file descriptor.Bad message.Device or resource busy.Operation canceled.No child processes.Connection aborted.Connection refused.Connection reset.Resource deadlock would occur.Destination address required.Mathematics argument out of domain of function.Reserved.File exists.Bad address.File too large.Host is unreachable.Identifier removed.Illegal byte sequence.Operation in progress.Interrupted function.Invalid argument.I/O error.Socket is connected.Is a directory.Too many levels of symbolic links.File descriptor value too large.Too many links.Message too large.Filename too long.Network is down.Connection aborted by network.Network unreachable.Too many files open in system.No buffer space available.No such device.No such file or directory.Executable file format error.No locks available.Not enough space.No message of the desired type.Protocol not available.No space left on device.Function not supported.The socket is not connected.Not a directory or a symbolic link to a directory.Directory not empty.State not recoverable.Not a socket.Not supported, or operation not supported on socket.Inappropriate I/O control operation.No such device or address.Value too large to be stored in data type.Previous owner died.Operation not permitted.Broken pipe.Protocol error.Protocol not supported.Protocol wrong type for socket.Result too large.Read-only file system.Invalid seek.No such process.Connection timed out.Text file busy.Cross-device link.Extension: Capabilities insufficient.ErrnoA 2           {<<<<<<<<<<<<<<<<<<== ====#='=,=6=:=?=A=G=L=P=U=Z=a=i=t={====================>> >>>>#>(>6>?>D>H>M>Q>V>^>d>h>6/ /  "   2 4$*   %r>>>>>>?B?a?u????????@1@`@i@u@@@@@@@@ AA'A6AXAxAA`@AAAAA B%B4BNBkB`@~BBBBBBCBCVClCyCCCCD)DADMD\DsDDDDD`@DDD E()A 6/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs,JP/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/str/pattern.rsJOJO!JO!0123456789abcdef/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/escape.rsKJMcalled `Result::unwrap()` on an `Err` valueA I7ErrorEmptyInvalidDigitPosOverflowNegOverflowZeroParseIntErrorkindA 8A  9:;JOG$JO7_ZN/rust/deps/rustc-demangle-0.1.24/src/legacy.rsCL.= CL.: CL.6 CL.fCL.o'CL.pCL.r!CL.sCL.t::CL.~CL.&CL.!CL.ICL.CL./CCL.5,)(><&*@CL.,CL.%.CL.%A <CL.rH__R/rust/deps/rustc-demangle-0.1.24/src/v0.rsM*2M*/M*+M*Z(`fmt::Error`s should be impossible without a `fmt::Formatter`A =M*KM*M* punycode{-}0M*1internal error: entered unreachable codeM*1M*4Ginternal error: entered unreachable code: str::from_utf8() = was expected to have 1 char, but chars were found,O9eOiO"OM*\boolcharstri8i16i32i64i128isizeu8u16u32u64u128usizef32f64!_...M*M*M*#"M*$%M*{invalid syntax}{recursion limit reached}?'for<> , []::{closureshim:# as mut const ; dyn + unsafe extern "M*-" fn( -> = falsetrue{ { }: 0xM*-.llvm./rust/deps/rustc-demangle-0.1.24/src/lib.rsQ+bQ+iA K{size limit reached}`fmt::Error` from `SizeLimitedFmtAdapter` was discardedA >Q+SSizeLimitExhausted KKKKKOOOPOOOOOOOOOOOPOOOOJPOOOPA `Oag?-DT!? s?-DT!?e/"+z<\3&5D.&pA~_֑9S99_(;/ Zmm~6 'FOf?-_'u={9Rk_]0V{Fk 6^ae_@h'sM1Vɨs{`kGg Y*vDW>3~?2O}2&=k^5:|!j$|n0-w;C,MA ]}Fq-ƚ3b|7U>Mvd*p׫c|zWIV;8$#֊wZT# 1fjWaG~"e2`l6 ]?X;ޛ"((XM2}P[.4bH[HJCg_Bja (ә\wƒa<sxZo׽-c&gUE6(aw&FYDMC)Ip>(q>. E {.G{2/ Umrk1˖yJAy߉蔗1k__6HglqrB]2 1%t90 Kh,XGt$}nHrSQ 3K~ch>_@]UR)7dm2H2[LuNqETn *if']P;vIk}'i)̬Tjى,rPw0p'qfId=݃?C 1A9p;7+\ZlK8Yvba˻lj@Iu'" &/dv ;3Q:\&mM-zV? +@m19 [ƭKNʥ76BhcvhR71 dMf)e0WVG:ju(0f"=W6 NB3#Oe ?[x#v{rƦSonJXڷfv-íwH]ƀ/?\m*۶%:SW)-K~v{Y*ܷ-vl>pn(>ag3*Mmng91[H0-C%a5p0˸llZݠ!oGb\paIkVRPU7շ3n_]0.26!i'w @-O͠ /] B}ʢj\.U'U dA*k%{4hjOJ*OZ-ZǕ M :W_?8 q݆޶`MekQUHr;@5{EN)A|ddپ1wXi:<FFUu_ҽn.]D>Bać)"|o5׍nj|]tkn>r{jϩ)sɺQ t$}`t؊ , ~f)zvVE~6ė1'n6بV-oW4,V k^>*_ J;m,Ԅ.5/9a8!D Jj/SNT"*U pid&Z`?R4-4]^`g3aXWQ>qH-!,FYzTOVy"68"gU&8Q 3iHeL6!{J!@GUt:gB^_{gzU+#AUYn!*9GI@VY+ZGņCb!;,ya*L{,C&x<{:&g e+=| Q'ci)h( D Npc~|#2V!*o~MQa6:rm9zk2\F'[4wUYMqAü E@!?-Dt>F<`Qx;9@ %z8"6i5+eGg@A 28CB.v:; ??fz^n?g5RҌ?m{]<lX?<2? n4jf?/*RVQ[?UNP1l?չ#ɑ-?U\Ӏ ?MuM<1 ?LtB<1Lp?J]9ݏ<d?[;_?hPKJ˩:7?-Qfm?6>q4?γ-?mL*H<"4L?i(z`E?[HX*.! ?Ig,|P?`cC<-a`?d; fZ~dxt_u?}JtH?U2gBV? ^˜T'?47;iL?:^#F?nWrPԔD٨?[g?11̐!Ղ_{3|? G;*)F?ӈ:`tF ?3ƿݣ?WĿ09 XJ?$¿"S?ZYb<n?uG_H?[W{хX#?`'"S?GL:w ?@x?ـY?B}8@{>?o;%s?wOz\ Q? Ũ# 0?x)&j!~%? wk~?PS?eD???M?Z:W?@W2?=?Р?8w?@r?CMr ?`P?cuܲ?v?Q?? wC?L O+?@ގ?`l}?j ?3.n6 ?ί ?9P)&p?g y?1'm?h????gI?NF?|p?: -?9 ?P Q?Y?q?m?}?X)?9|<?TRn3}<`Z_?1LV̮.?wKu<6;?3}< ?(=-ϯ~<|8 `?e70.8B.?0gǓW.=A "[0QUUU?EϿ$?uUſA wUUUUU?Ͽ ݕ?EgUUUſ0D$I?e=B*(q?hC뙹Я?EuR4?y׿,jx? o׿`?Q׿}?x(8[ֿѴ I?xU]ֿ /3G?vֿ#B"q?ʨտOR?PVCOտ$V3?@k7Կܝk?PԿL\Rd?9EԿO,g?9ӿސ[˼?pDΖӿxa?@ӿVFV?FҿkΗc?08ҿ%G?ڌ>ҿEB*?')ѿ߽"?H+mѿ4G?gAѿ@(C?пȣx>?п%?cRGп4$?E"Ͽ -m?uJGϿT9S?0=DοZD':?D οA ?w)`Ϳ>ڂ?̿W]?V) ̿L ?˿+`?ʿu+$?.@EʿП"?hwɿz[u?0Him ɿ6I]?E qȿ@MyF?0ǿ$\/?pb<<ǿI uw?`7ƿ9>7?T1 ƿAN?0$v}sſѩ ?0{Ŀ*?Q,FĿ z?ÿ0`r?IkÿWW}?@T¿;h?yS?,%`;ɪ>? W@+*?I<2A̖y?KW ?@@7 HMI?@>ieR?Ng|~W#?`/ yܺ&t|?(, ?rFp{?%w?8Et1L5d?m^_'Q?\HL2??jM3r,?`y 1(0? bF4?jlkN?@wJڭΟ*]?켫!,cD?@|?3X6ƃ/?g^q9۝?eI\R?@dI(N/{?r5j?RRU,Y?b=,II?(8? {12ye(?]5Hs'$?x?$y `&?o?ta?=5A܇?.c?ģΓ?ͭ<%???ذ?x?[? t?@\? :?Wj'?V` ?u?w? S?| ?8.?\f\?WY?^,'?j5vڷ?,k>n?`NC?ym?` x?m7m&? 2C?X]X?`q1 ?3&?@+g???G?u?0n&?(J ?PŦ?,>e?3eI*??`?hc_Y?)c%? 0?w?`Cr?%g?m&w?Wy?0O? V?/2?kO?<[Bl~?S-~?Ry qf{<g/?$&<{F0?vKN.?7Z@fI??O*?_?<i?p>xQ?>j<[ e? 8ZOE<@?–w|?S ? AI?)G%*z?i퀷~8B.?0gǓW.=A `UUUUUA "?NUY?z)UUUEH[I?&+?A݀ ?A ȹ,ֿV7($<A ?A Xտ A `?A XEwvտmPդb#A @?AɁ -տgA݁  ?A xw_Կ>)iA ?A `‹aԿ̄LH/=A ?A 0Կ: B<A ?Aɂ HiULӿ`QƱ =A݂ ?A GӿMY%=A ?A  ҿ+{&=A `?A Zҿ?϶=A `?AɃ Zҿ?϶=A݃ @?A xA)ҿvS($ZA  ?A iѿThA ?A \gѿ3=A ?AɄ HѿfZĨ&A݄ ?A s$п~k A ?A д%@п-6A ?A д%@п-6A ?AɅ @^mϿ<*W =A݅ `?A `˭ο$&+=A @?A *n'ο?TO/A  ?A Ok!\Ϳhʻ!=A ?AɆ ̿4hOy'=Aކ ?A ̿4hOy'=A ?A -t˿1N=A ?A Nʿf?cN<A ?Aɇ #ʿFd%A݇ ?A #ʿFd%A ?A PZRɿ*A `?A  eȿ +=A @?AɈ ǿXJSr+=A݈ @?A ǿXJSr+=A  ?A ƿfⲣjA ?A p0ſ9PCA ?Aɉ p0ſ9PCA݉ ?A &ſ[ A ?A l+MĿAݕ ?A `F;? V]2%A ?A ѧ?Nۥ^,=A `?A MZ?]<i,A @?Aɖ  ?2흩<Aޖ ?A @Y]^3?G:\#=A ?A `j?h+A ?A @X?ӬZF&=A `?Aɗ  9Ǿ?Eh-Aݗ @?A 9? O4%A ?A '?-x!=A ?A #~+?48D,=A ?Aɘ  a?l=Aݘ ?A e?rK#/<A @?A 3=?xTy%=A  ?A '?}i3&=A ?Aə NW?x.<,=Aݙ ?A pu?!%A ?A PD?CpfA `?A 9믾?,T=A @?Aʚ ZZ?oX(=Aޚ ?A NO{ 6=>V67VW5 )14:EFIJNOde\ 69: 7 ;>fio_ZbST./'(U :?EQ͠"%>? #%&(38:HJLPSUVXZ\^`cefksx}Юno^"{-f/.1$ +D*$$(4 NC7  ;E9c 0!@8K/  @ ' 6: PI73 3. &RK+*& N$ D  H' u B>*; QbH ^"E  : 6,!p-@:*)L DL=<U4,d V 8 ,  w_  8 ("NT  6  %         +- .012 xy0WXKL./?\]_ℍ)147:;=IJ] )14:;EFIJ^de ):;EIW[\^_de EIde񃅋HINOWY^_[\mqno_}~FGNOXZ\^~rstu&./ߚ@0NOZ['/no7=?BESgu _"D /4 PU   NW PC- :%_ mj%Y    j Y+F , 1 ,  /1M<<8+/-!! /; "t  7 \ ; 8F t ZY   L 1&  *L library/core/src/unicode/unicode_data.rs#(P(#(\library/core/src/escape.rslMlibrary/core/src/num/mod.rs  `]  `,+*0 ,o,`-`. 6`66 !7$ 7a9/90aHL@4aPjQOo!RRaSeѡS!TUaW!YY YZp-H 0e#[ :  +<* 7 :  9 9: ;  (7 : 9  HQ b I7 $ f @ -u"v : 010(  8: @!` i P & .0'C /3*(PF 1{6) 1=$> 4 _9QUje   ( . RzH 4;?Q.72d=m`A A A A A A A ;ftA ?A @AA A A 0A A ?A BAA A  A A A :A (0XZUA   $$(44DDxxTT88ddHttxxHHhhİİ԰԰xxxxA ؾ8A xoA (A A 0IA ZUA h@#A :jp\jWG8A A A A A 7@3A Rbfedc54rwvuctsz~}|{54A A sA BA ̃A )p#Hd|AallA A A !HA [ṔA A A  >A CA A A Rn@# c+S/allSettled#cf|AanyMcA )h8A 08A =A Ch8`A  A A #0 A CعH@A A A \#:.Y)race+C HA <FA #A P A A  A A 5  Ô A 0A 8A ̂A ̃A A DA =A A #TnullA Y3 MTInternalError0Pp#p3A *Symbol.toPrimitive3A *Symbol.iterator0Pp3 A *Symbol.match3A *Symbol.matchAll`3A *Symbol.replace 3 A *Symbol.search`3 A *Symbol.split Pp3A *Symbol.toStringTag 3A *Symbol.isConcatSpreadable3A *Symbol.hasInstance`3A *Symbol.species03A *Symbol.unscopables3A *Symbol.asyncIteratorp3A Symbol.operatorSet03=X~__lookupSetter__#Hcall"A A #z3@falseA #7gk[trueA #vz@ifA #^!KelseA #[DreturnA #A4varA #`[thisÀ #s"HdeleteA #X]evoidA #/MxtypeofA #AnewÁ #~z@inA 6# ]instanceof#\u@doA #wwhile #XAforA #9^nbreakA :#0cQcontinue#޻Sswitchà #!HcaseA #9 hdefaultA #E|`CthrowA #"xAtryĀ #rdiRcatchA #&dfinallyA X#"afunction#[d}debugger#^kwithA #tclassA #<-xconstA #b}#KenumĂ #PnexportA #>extendsA #>=KimportA #gQsuperȦ W# F@implements# -+iinterface#:A.letA #UwUpackageÄ #cJprivateA :# Gprotected#2&kpublicA #s0staticẢ #\syieldA #QuFawaitA # A @A #F:lengthÅ `#ФHfileName# VMlineNumber3 mMScolumnNumberA #bmessageA܋ #icauseA #4wAerrorsA #WAPstackA #TnameA܌ B#ξUtoString3+sDtoLocaleStringA #YzfvalueOfA̍ #]+KOevalA `# Y}prototype# 1IYconstructor3 gffXconfigurableA܎ Y#oAwritable# ƴWenumerable#5SGvalueA #EAgetA܏ #\AsetA #@KofA Z# 2p__proto__# sundefined#GnumberA #SqbooleanA #TEstringA #QobjectAܑ #VRsymbolA #e0|integerA #zunknownA :# ]D~arguments#o [calleeA #| [callerA #cA #IAܓ #jNA :# >k#ŕbA :# sqlastIndex#JStargetA #1lfindexA #&finputA $3FI{definePropertiesA #U~applyA #dPjoinA #;hvconcatA̖ #IKsplitA B# SLkconstruct30egetPrototypeOfA "3h֧QsetPrototypeOfA 3 .~isExtensibleA %3sRgpreventExtensionsA̘ #YAhasA "3/}PdeletePropertyA "3^CdefinePropertyA̙ K3jUlgetOwnPropertyDescriptor#T}BownKeysA #\|AaddA #J[doneAܚ #7TnextA #i|avaluesA #TawsourceA #`LflagsAܛ #<,O~DglobalA #̟sunicodeA #GJArawA D# oLnew.target3 Xthis.active_funcA !3 *NA $3 sA +3BGA '3W]A̞ # FA 3 `'H#constructorA #Kr@asA #SD=LfromAܟ #NSmetaA 5# hB&*default*#1@*A #(dModuleAܠ #`[thenA #aresolveA #VPrejectA #HpromiseAܡ #2vproxyA #,]revokeA # Z8BasyncA #-K execAܢ #gmgroupsA #mindicesA #[sstatusA #kFreasonAܣ :# K nglobalThis#>HbigintA `#Egbigfloat# R5NXbigdecimal3 QroundingModeA Y3imaximumSignificantDigits3/ImaximumFractionDigitsA V# Swnot-equal# Wwtimed-out#@okA̦ #5@toJSONA #8_ObjectA #[ArrayA #L\PErrorA̧ #UNumberA #KSStringA #ujBooleanA #2_SymbolĄ 8# =lfArguments#qMathA #1mJSONA #MgDateA̩ E##WFunction3[AGeneratorFunctionA !3 TForInIteratorA̪ #BZRegExpA E# @{ArrayBuffer3YSSharedArrayBufferA %3~IUint8ClampedArrayA # DDInt8Array# \bfUint8Array# VqpInt16Array# IUint16Array# GmInt32Array# g)UUint32Array3 ;okJBigInt64ArrayAܭ "3-nBigUint64ArrayA 3 yFloat32ArrayA 3 w<Float64ArrayA :#HYDataView#mwUBigIntA #xBigFloat# x|BigFloatEnv# RzvBigDecimal# R4OperatorSet# v:COperators#+=gAMapA #qmA6SetA #K,WeakMapA #YKWeakSetA̱ 3 ,FMap IteratorA 3 UPSet IteratorA "3hArray IteratorAܲ #3'kString IteratorA *3za|"RegExp String IteratorA 9# J#HGenerator#6QProxyA #bAPromiseA *3 RqIPromiseResolveFunctionA̴ )39@~}PromiseRejectFunctionA !3 ;M\gAsyncFunctionA (3[+wAsyncFunctionResolveAܵ '3AN+AsyncFunctionRejectA *3@(AsyncGeneratorFunctionA "30g(AsyncGeneratorA b# w`5EvalError# \RRangeError3bReferenceErrorAܷ # rsSyntaxError# VTypeError#(~URIError3 ja}localeCompareB# UestoLowerCaseB X(A !0{=>#A A 3 -5utoWellFormed@`#λWblink#FGbold#r8Ifixed# Afontcolor#(syfontsize#Һfitalics#=RlinkH+"ΠVrepeat#;XFreplace# !9VreplaceAll#AendsWith# uPstartsWith#6Hsmall#QEstrike#lAsub#lAsup3 )`asyncIterator둼# fZoperatorSetH+4B81*P A AĿ s 0#p#$[Reflect C 81`A ^{@A A#A PB##km__quote"xBA 0A A A C:( 09A 8A A S3 #getUTCSeconds3Wt}getMillisecondsA #0Cx@`WOA A A A V3#lsetMilliseconds3zWsetUTCMillisecondsA A# FIsetSeconds# nlLtoUTCStringcA X7A C A #A ` #A )`08"A ;P08B XPA DA #A P cA ![EA P 4A `CA e#KAmap # lfilter #RZsome #A /p CXA %#p SA +     A ? 0x BA ;#0CXA ;#`CxPA ;#@CA ;#pCx8A ;# CpA ;#C8(A B#3ZMxAggregateErrorA C   A !#zevery SA %([bA ` (0A cA %N8{SA 08A CA  pA EA #A A cA (A {SA A 08A $DQ`C 80A FA #A A sA C00   0 @ A A  A Ap3PSR#A ? (BhA C(8A cA !l3A P9A ;A  >A "A A  C h0A GA 13 spropertyIsEnumerable#A ]  3"z#OgetOwnPropertyNames=0#+&DcreateA K3vFgetOwnPropertySymbols0C A 1 A 3 )׳Iset __proto__80#5eEgroupBy#{Qkeys#Eadentriess0P`p@`3Fޑb__lookupGetter__03&@getOwnPropertyDescriptors#z@isP#]Aassign #HZKseal#jfreeze(#g$=MisSealed#S7EtisFrozen# k;Gx__getClass# uUfromEntries# RIyhasOwnA )3 Kget __proto__A T3W#}__defineGetter__ B3XN__defineSetter__A &032v~WhasOwnPropertyA aA C HA Ap0m@3 &NisPrototypeOfA 0A pP 0@P`p 0@A A A A A M  A !8iN;A 0A 8A =A A aA bA gA [A A A A mA A cA d hA A A A A A A A A C A 09 A %@#.rGbinḍcA )(1A P08A =`A  A A !H  A  >A 9A :A ;A A A DFA A A )3 Rq:get fileNameA C (A P:8A DQA D#A A &`3-cDget lineNumberA C `A ; A #A DQA :D3"bsget columnNumber0 A A A 1 6 A $P0A 8A DQA DOA A \A 9D1A D2A D3 >A C (A HA #A cA ) X둼A 08AĀ =À C A IA #A sA -X(-OA P9A 84A  >A C 80pA IA܂ C 8H0A IA #A % bAԃ A܃ %88A  8 4A  >A C h0PAф IA C H0A IA @#A .pC x0A IP A  #A ?  xB hx0A IA C 0A %I@p#Aȇ /C( A A #  A #Lr@at Aۈ L #yGforEach(8B 0A IẢ #Aى 030EkdecodeURIComponent`# zencodeURI3@@encodeURIComponentA #PNescapeA Y#hunescape#zbInfinity#:KhANaNA k # wMAX_VALUE3 ptoExponential #0#IreduceA܌ #ulparseInt# fparseFloat# E7decodeURI " v{ureduceRight#3LfillA #3Lfind# p,cfindIndex 8#HjXfindLast3 bkfindLastIndexA z#qiCindexOf# HlastIndexOf#@eincludes#@Wopush@#/GCshiftA #@(\*unshift#ѫJnreverse # F]Z\toReversed#GRZ=sort_,#fCtoSorted#!~GsliceA #9JspliceAۓ # ItoSpliced# icopyWithin#2x+dflatMap#6L`flat C (  A ! ?0 @ #A / C h  Aܕ ! J  #A 5P   #~P~isArraycAȖ ) A lA , vxCX P  A Aė  A˗  Aӗ # #@ P A ,8B  A   AØ A˘ )3ϴPget [Symbol.species]A CPA A A A @cAș           0 @ P ` p     z      0 @ P ` p     ` `     A A )A Aܜ A %A ('A y*$#"! & A h A | ?**A̞ P(0A۞ A A ^A A A A A A  A  A  A  A  Aß A˟ Aӟ A۟ A ]A  9A :A A A A A A A A Aà Aˠ A A  A m A A A  >A A A A̡ Aء A )  $ A 0A 8A =A !Aâ |Aˢ EDA {3qBFBNEGATIVE_INFINITY3pWPOSITIVE_INFINITY=0C (``A  A -  @#hfk0isNaNA .#0m}isFiniteS A  A  A  A  Ḁ % X A A A  A  A  A A A  Aæ A˦ AӦ Aۦ A A mA [#h/ZtoFixed # stoPrecisionC hA  U A @C hA e2K  S       A #A N`1# CMIN_VALUE#Zk[trimA #xBtrimEndA # {DtrimRight# OmtrimStart#r6utrimLeft" xcodePointAt3 +yfromCodePointA CA 5A A̬ %H:A 08A =A ;A <A rA  A F # |dtoUpperCase3sLtoLocaleLowerCaseA J3#~*^anchorAۮ #_o}AbigA O 3 sJisSafeInteger0C A̯ PV0A *1# ?gjcisIntegerA A A %! Aܰ 08A =A D6P A [A C88`"Aı #Aα kAر P*#A P  #A nA A Aز )((b A P/A 0A 1A 9A :A ;Aó  >Aܳ A  0@GGCA }#?IgsEPSILON3:hMAX_SAFE_INTEGER/*3RWMIN_SAFE_INTEGER=A | #Qsubstr#>epadEnd#MpadStartCA  A ;# C h`Aܷ 2L45A RA A ! A̸ AԸ  A A !h0gA 0A˹ 8AԹ =A۹  #A  $A %A &A 2A 3A 4A 5A .A 6A 78A 9Aĺ :Aܺ #A /`CH010.A A s#/\charAt 3 p!@fromCharCodeB3 tiZisWellFormedA 0C XPA MA U# GzpcharCodeAts(o!sAܽ PDA A A L >#0*^isViewC xA̾  rA #C 88n[0lA !Y0#A n  Aؿ A A lA A жA 0A {A pA A A @A A A A 6A  |P A A A 0p,A A @A A A #A A kA A 5A `A gA  A +A C 8`oA A  A  CA pm!A A ̡A  30A pA 0SA A A A A A  A !xU([]A PDoA DnA DpDA DA DDqA DA DA ̈A A A "9 A A $ >C[($P 0ZA A 30PpC #$$`$A %@V #A 5p# B@revocablecA %($%7A ;08C$H'%(A A  PpA  A  A  A H'H)A #Y A PDA CA eA  A A DA mA  A d  >V'"Ltclear C x((h(A  A #A / C )g&A PDA #A P A LD&Xi"JXLZsize@C %%'A ! #A ['# (oZget sizesP&A E h h hP``hZpCA P@&A %0A 'DCCgX&i'A CA eA  A A D#A C' s 0@@'A W`p@)@))@C %))A !@@P#A /B0PC H)&g0(A !W`S@TT U#A /k C+p,,A cA A !6(7A =A >A 44" QtoStringTag# c\ItoPrimitive#31Kiterator#cyspeciesA k# VD|unscopables" sSNdescriptionC *x,+A A !A  #A +A #3|\|get descriptionA 'C+A !,(%$A A A !+,A P9A ;A A A Dg >A  >A C x,55 -A ^N@A AA ̣A 0*P@pн0`#M.[keyForA ]3misConcatSpreadableP# GjhasInstance@A 0@P`p 0@P`p   0@P`p 0@PA 3A !A  A A 543210/.-,+*)'(%$#" (1u??5A P >A 0A A =>A ^A ?A @A AA A A A BCA DA EA FA _A GA HA A IA JA KA LA MA NA  O P Q RA 9A ;A SA TA UA VA WA X&A YA Z[A \A ]^_A `A aA bA cA dA eA C546P6A A  A ?#``33 C 464A HA #A /4 #oLfloorA E#4Catan2#ƃ~Acos]C- #A ?*BBh33P*3A DA EJA FA *R A A A %  A A !,h3gA 0A 8A =A A iA jA kA DA EJA FA _A lA mA nA opqA rA 5C 0@P4 A A !3X*PCyA lA A A >A C X*h74A OA C(78>0>BA 7#Hceil # AminA #SAmaxA # Z|AabsA #]mroundA #TZsqrtA j#dAexp #sAlog`#ljFacosA 9#fFasin@#lFatanA !#DSQRT2#A tion` 3 ePRustFunction3 gxrtoDateString 0#GA QA `RA RA SA TA A AAȳ UAг pUAس  0@P`p [D# # %yget stickyC kl)A WA !#' #Aص ZA "38Vget hasIndicesA C #h[[[A RAж AAض UC ([[SA A 3A P`[A Aȷ sAط )h[#숇A 08A =DDqA D3nAȸ  o9# Ppп0Pp0Pp0Pp0Pp0Pp0Pp @`0` @` @` @`0Pp Pp @` @` Pp @` @` @`0Pp0Pp Pp0Pp@p0Pp0` P@p 0P@pн0` @`p0` `@`P`0@0@`  @ `       @  P `0 @pp @` @0Pp@p@`0Pp `++-***-.+0+@p778 47 8@8888@4`4`88999:0:P:p:::::;0;P;p;;;;;<0<P<p<<<<<=9P9@ B9 0` @p0P`@@@P@BpBBB0PpPApA@@RR@S`S@TT U VBpTPZPUZSS$0& ''nn`ltpv0vwx y`{`}Ppp @`` Pp@0P0`@`P@0 `@`PЭ0p pp0@д0Ppи00`PP 0@p`P` @0@`Pp   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}A A %&x(A !08DA =A C X&i&A A '"C iighA eWA DCA p@iA p(0A #A /Pj C hhXj@iA PeA  A #A %P  m 'HkA  A  A A (hhhA  A [PjA eA  A A DA  m A   >A CikkjA [A 9CpjA C kkhA rWA CjxZlkA PA DA CA eXilA A A !Xjja+A PDA CA eA A  >A 1CpZ0A 3A 0nA m# NDget lengthlv" 0 HkxlA A A !xZXmPA PjA eA A  >A ClmP ZA CXmmP lA Cmn@\A ;# f^byteLengthC xuA A #A /`l= C m(onA  A #A nA "3=Uget byteLengthA C n0 "A XA #A P m 1xoxoA $_javy_io_readSync = globalThis.__javy_io_readSync; const __javy_io_writeSync = globalThis.__javy_io_writeSync; globalThis.Javy.IO = { readSync(fd, data) { if (!(data instanceof Uint8Array)) { throw TypeError("Data needs to be an Uint8Array"); } return __javy_io_readSync( fd, data.buffer, data.byteOffset, data.byteLength ); }, writeSync(fd, data) { if (!(data instanceof Uint8Array)) { throw TypeError("Data needs to be an Uint8Array"); } return __javy_io_writeSync( fd, data.buffer, data.byteOffset, data.byteLength ); }, }; Reflect.deleteProperty(globalThis, "__javy_io_readSync"); Reflect.deleteProperty(globalThis, "__javy_io_writeSync"); })(); A  A rrA ؾA A A A A A A A MsA A lyA m@gA A kA %!h G0 A m@:?A m@07A .`0"9.ebufferA C uwPvA P A @C8nu~@yA cA ! {}=wA uA A , >v`C utpnA A C vHwwA A %@# 8YbyteOffset#A pvA ;# [abget bufferC wuvA  A #A ?wDxlwB tvA  A C u~wA A #A xD0 #A DA 3Dv}2naPget byteOffsetA K3s7kget [Symbol.toStringTag]C }(| |xA [A `u3A 0A v#A )}"A Ѐ= 3A }A 30#Z\XsubarraycuA  tA wA vA +`uu@wA  0@P`p 0z{C ~{zA GA  A #A `A C z|{|A ZA A #A 5P @ # H JTypedArrayDA A %|hu"8A 08A |A ED=A sA ) 8x8}}A {08A =A +}pC {{@{A PD0A CA `{@P|A u A Chu8x`u@}A A A A #A 0x A +3 HBYTES_PER_ELEMENTA wxA &A !%A A A  A A A A  A A =$#"A HwzA ?*&A PD0A A A DA DA DA DA  mA  A A DA A A A A A  A  A  A  A  A A  A A  A A  ]A :A A A A  9A  >A C(|؀`uxA 3A A v#A ?xB 8 |pxA [A C؀`uxA bA AĂ Â 3A؂ 0A v#A ?pxB  |pAу [A C`uA bA A A 3A PЂAЄ v#A ?PXB ؂ |PA [A̅ Cx`uA bA A A 3A pA v#AȆ ?0x8B ؂ |0A [A CxX`u`Ȧ bA؇ A A 3A A v#A ?XB  |A [A CX8`u@A bA Aĉ Ả 3A؉ pA v#A ?8xB x |Aъ [A C8`u A bA A A 3A PAЋ v#A ?ЇxB xX |ЄA [Ǎ C`uA bA A A 3A 0A v#Aȍ ?5:!!!C X8 |A [A C؇`uA̎ bA؎ A A 3A @A Wv3 fgetBigUint64؆0C 8 |A [A C؇`uA bA AĐ A̐ #f ugetInt8A [#YYgetUint8 #AgetInt16C  |pAё [A CA bA A A C A̒ \A ?@# tKgetUint16C ЉA  A̓ #Aؓ pvA C X0A  A #A nA̔ C A  A #A wA C @зA̕ a5:!!!#AgetInt32# ~KgetUint32# JBgetBigInt64# ~$getFloat32D# 'getFloat64#2%osetInt8# Aܗ C A PHA 03 S3withResolvers0#^usetUint8#c/\setInt16# TsetUint16#m1\setInt32# TsetUint32# LsetBigInt643 aAsetBigUint64 A̚ A# ҇HsetFloat32# HsetFloat64cA A !^iA̛ Aۛ >`#A /pC8ЎA A A̜ cAԜ A !عfXA P8A ̂`#A [ C`p؆A A PA  0@P`p0A Q A A A %X8UA PPDA DAá DAˡ Aӡ Aۡ A A A A A A A A A A A A Aâ Aˢ AӢ Aۢ A  >A M/A kA juvAܣ FA yA A VA A ]A VA A UAĤ iAФ 1A 0+A bA pX\A A "r>{<Aܥ FA PA &]9M<;A zA :A MbAȦ AЦ &Aܦ  dA A OA Z A YA Aȧ TAا YBA A A =.'2Eh$^Sw{%HAШ Aܨ GW~A A i"A ?;EA FA A Aȩ !ar`1A oHA %3A eUA A wZAԪ  -]$A _"4A  A A A Aȫ Aԫ OHL5(A )A 81A /A A S^[AĬ u,AԬ  cR6A QA 'XK#A A CA !3Aȭ b}QA nA 7A =xA fA J A "%TGPBA W@#A gQA d8W*A Aȯ  AAد A s>A a`A BA mA c A D=iA ^A ;#_?Aа  Aܰ  &L28A A N$2A .h-A A V!zAȱ Aб  !Aܱ lA RNA -A  A A A 5+ AԲ A A h7,'A A A {3 0#w.L fdiv0X#@P`A cA %8BA йlA A A CHxA̵ CA 0A @PA ?@#F\[tdiv C ؛A̶ gA @C8P*A ;#0C8A YA ;#YF|easUintN C xpAѸ HA #A @pCppA̹ A !8؛@rA @йlA A A >Aܺ -#SasIntN sA !8zA `uP9A˻ ;Aۻ  >A AC 0@PP,,A @#Hcdiv #-KAedivA #̕eBqtdivrem#ާ/Sfdivrem#+Dcdivrem#MxedivremA Л0@P`pA |#q>sqrtrem# ~floorLog2#~ActzC A  A @#A =A @A A )ؚXGA P9A ;1A 0A /A  >A SA A A 1 A !ؚ A P*0A 8A =A A A A A  A  A  A  A  A A yA A A C `A xA #A /К C XأA  A #A A # Ewget PIA ;#cGjfpRoundCж A A +X@C أ@A 8 A @C A  A #tH9get LN2A ;# ޼^BsubnormalC xPA P  A 0@#A E@DD3 I"M__get MIN_VALUEA C 0A  A #A PA !3 ;Sget MAX_VALUEA C A   A ^# D hset expBits#r{rndModeC x0A E!  8$@# o$`get EPSILONcA КA УA A A A  0@P`p 0@PD8$A &% uA `RA ;#Amul #ЋA9divA A#U7L\fmod # 48)G6remainder#A ,p #iWprecA "D# -WNunderflow#A A  #A /pD" C Xh A !  #A @A ;#+7W get precC A %  +״#A 0A \#4rset precD# +`dexpBitsC h@A v  x ̄A #A 9`|# :]get expBits#A A 5  A A A A #"! A 9XI! ?*#A 00A 8A =A DA DA D5A D4D8A $A &A %uA A vA wxA ̄A yA zA {A |}A ~A A ̀A ́A ̂A ̃A ̅A j dA A A #A PA ;# Mtget rndModeC XA   A #A ЭA t# set rndMode3 7CdivideByZero03}yfinvalidOperationA 0#A pA !3 l]get subnormalA C XA   A #A A !3 a[ set subnormalA ;#BroverflowC A   A D"A ,DxC @A   A (3+wget invalidOperationA C 8PA   A #A pA (3'jset invalidOperationA #[LinexactA C x`A A  PD@3 ivget underflowA 0C A   A $3+Gbiget divideByZeroA C 8XA   A #A A $3@set divideByZeroA #]iwsetPrecA #WgvRNDNA !#cgvRNDZ #A A 3 [get overflowA C X8 A   A #A @A 3 1 gw>set overflowA #A /`P C (гA  A Rp#A @DA \D#MgvRNDD#VdRNDNA C xA   A C 8ȰA   A #A дA !3 GSgset underflowA ;# 4HclearStatusC ضpPA yA @#A A ;# Sget inexactC ȰضA   A #A A |# 3^set inexacts`pP0P0p A  A A  A  A A !(* A PDA DA D"A D%A D(A D+A D.A D1A D4A 7 >A #A  # "  * i8#^gvRNDU C xpA A C H@@A A %{# m$Feval_scriptA c#JgvRNDA #OgvRNDF#;4ZprecMinA #34ZprecMax# pGexpBitsMin# BGexpBitsMax# `TextDecoderC800A ',@Cx(A  A 0A fC  <<#Agmod A PA A  A A A A A A A A ?A A !S A A 1* @A 0A 8A =A DA D8A 9A :A ;<=A >?A @A AA BA CA sA G0@P`pA =A jA pC:HX A A 7BM#A C0Cf__javy_decodeUtf8BufferToStringA C: A A A #A  A QCOA?__javy_encodeStringToUtf8BufferA A  A A %(QR A 0A 8A =A jA dA DxyA XA (AcYAbY8TeiCd Bf%%c$8f 8%b )A ,AЀ Q\\ 1<KM BvtData needs to be an Uint8Array // Not spec-B|/A TtA *G 00fA gA L c8 8h/fAAA#aHlAă AЃ OA 08A =`" writabl readSync(fd, data) { if (!(data instanceof Uint8Array)) { throw TypeError("Data needs to be an Uint8Array"); } return __javy_io_readSync( fd, data.buffer, data.byteOffset, data.byteLength ); }tions.s88AІ A A A A A A A qAĈ /?AЈ m@'A A A A ,A %' G A܉ m@@0?A m@A 1X<A gA |pe '(ArrB A       t@HB/A A̋ *G 0@fA gA F b8 8h/fAAA#A RA A GA A `SAč (writeSync(fd, data) { if (!(data instanceof Uint8Array)) { throw TypeError("Data needs to be an Uint8Array"); } return __javy_io_writeSync( fd, data.buffer, data.byteOffset, data.byteLength ); } }C 8A R A 3H"ePropertH [8j)8h"/f8Buffer"); })(0P 0`@p         A 0  @`7p, 7 P [ $)`hjpZ op0xЀpP0Ї00P  A )ppA A A A A  AЖ apAė AЗ m@)BA  0@P`p@@^A m@ A O3!5_IacceptedLabels0C 8Aܙ A  A #A pB[ycA %x>Aܚ PA _ccA %A PdAЛ 'B[]`C:  A `gA fA CA #A ecA #u[errorAۜ <#J}vconsoleCA A A Q #@G# mJavy#A @BA O #=Loptions#{xolabelsA C hA ɠ@A '@#aJutf-8A̟ !#j~decodeF#A   8ov # U0Y(destination#Z\utf8ode20u#taencodinghxB;A A )G-pPA  x+f$8B[ JLB LA L@LS$)_#peO ?5C)0DThe encoding label provided must be utf-8-#@fatalJ# %V4VignoreBOM3G@unicode-1-1-utf-8A !3 /)unicode11utf8A !3 S_Z|unicode20utf8A #36}~`x-unicode20utf8A Xh@lA dAܥ *GB `PIA KA IKA LA  x+f$aaJ aBN$BU$JMNOPQ&bB$8R!/8B[ JLB LA L@LS ATLB LA L@LT AULB LA L@LU$)x@<A 4A )G,PZAѩ KA ZKA %A  Eaa aa8G(AW8X!/AA8B$A88Y!/fbbATAU##cA %B[OX/A P >A  [A \`#AȬ A ]OI?xX@%A A )G3!P@ZA Z FaB9$8f!(LB LA#DE{v8 #0 +I ?&S(5I cA A !XhA ?P > VT[`C: A pOA +3Wd__javy_io_readSynclA CAܰ 1A )8#A 5P`H3x$AԱ # true, wC H A ``A H#A H3X# #'q|*encode ؾؾAԳ A A A A A R@Aд DA A Aĵ Aе m@>A A A A GA̶ Aܶ m@A m@A ?"Estream C @A̷ qpAܷ +3A A #A  # ? uencodeIntoC!>8k]Streaming decode is not supported/(C  A p0A̹ [3PC PA PA #Aغ /@CA !cA A !-A Pei`cD5uThe provided value is not of type '(ArrayBuffer or ArrayBufferView)' C: A RA C3M0F__javy_io_writeSync#A 5( # ~n TextEncoderSA A I  xB[Aؿ P\A `A gA  fA CA hA aA ecA iA d DA bA f fffg#pALLK8M )5@20C A       e!,+{v8 "Z@readSync#_w@ZfdaA !,( $ ')  " I" - 5 #" A @  xBA A A %G8gnA ]A 68^!/B[CHpA A 153  @?N?Cdecode(input, options = {}) { if (input === undefined) { return ""; } if (options.stream) { throw new Error("Streaming decode is not supported"); } // backing buffer would not have byteOffset and may have different byteLength let byteOffset = input.byteOffset || 0; let byteLength = input.byteLength; if (ArrayBuffer.isView(input)) { input = input.buffer; } if (!(input instanceof ArrayBuffer)) { throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'"); } return __javy_decodeUtf8BufferToString(input, byteOffset, byteLength, this.fatal, this.ignoreBOM); }A encode(input = "") { input = input.toString(); // non-string inputs are converted to strings return new Uint8Array(__javy_encodeStringToUtf8Buffer(input)); }VZSclass TextDecoder { constructor(label = "utf-8", options = {}) { label = label.trim().toLowerCase(); const acceptedLabels = ["utf-8", "utf8", "unicode-1-1-utf-8", "unicode11utf8", "unicode20utf8", "x-unicode20utf8"]; if (!acceptedLabels.includes(label)) { // Not spec-compliant behaviour throw new RangeError("The encoding label provided must be utf-8"); } Object.defineProperties(this, { encoding: { value: "utf-8", enumerable: true, writable: false }, fatal: { value: !!options.fatal, enumerable: true, writable: false }, ignoreBOM: { value: !!options.ignoreBOM, enumerable: true, writable: false }, }) } decode(input, options = {}) { if (input === undefined) { return ""; } if (options.stream) { throw new Error("Streaming decode is not supported"); } // backing buffer would not have byteOffset and may have different byteLength let byteOffset = input.byteOffset || 0; let byteLength = input.byteLength; if (ArrayBuffer.isView(input)) { input = input.buffer; } if (!(input instanceof ArrayBuffer)) { throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'"); } return __javy_decodeUtf8BufferToString(input, byteOffset, byteLength, this.fatal, this.ignoreBOM); } }A 3A A  A CBA A AA  A @9&A *)('A a=<;:876543210/.-,+$ #%A   A "A xA U^EA P A  A  A  A  A  A  A  A  A  A  A  #A  $A %A &A 'A (A )A *A +A ,A -A .A GA A  A  A  A  A  fA  A  <A  A  A ̡A  A ! A  A B         A  A  A  A  A  A  A  A  A  A  A  &A 9A HA ZA `A aA <f!("ppA A A A A A A GC HA A XalA gA A %`"A - #Y@IOgA #{/JIdataneeds t# )3nqwriteSync3$qfencodeInto is not supportedCx0A A A A o@sencodeInto(source, destination) { throw new Error("encodeInto is not supported"); }A C:x pA A @class TextEncoder { constructor() { Object.defineProperties(this, { encoding: { value: "utf-8", enumerable: true, writable: false }, }); } encode(input = "") { input = input.toString(); // non-string inputs are converted to strings return new Uint8Array(__javy_encodeStringToUtf8Buffer(input)); } encodeInto(source, destination) { throw new Error("encodeInto is not supported"); } }A XXA ؾlA A A IG7 :00cbA paa8Ac8Ab8Aa TeTiCd8fBf8c$8fBf8b$)A ɡA A "YX(%alA !,,A "A P' !((A 0javy_io_readSync = globalThis.__javy_io_readSync; const __javy_io_writeSync = globalThis.__javy_io_writeSync; globalThis.Javy.IO = { readSync(fd, data) { if (!(data instanceof Uint8Array)) { throw TypeError("Data needs to be an Uint8Array"); } return __javy_io_readSync( fd, data.buffer, data.byteOffset, data.byteLength ); }, writeSync(fd, data) { if (!(data instanceof Uint8Array)) { throw TypeError("Data needs to be an Uint8Array"); } return __javy_io_writeSync( fd, data.buffer, data.byteOffset, data.byteLength ); }, }; Reflect.deleteProperty(globalThis, "__javy_io_readSync"); Reflect.deleteProperty(globalThis, "__javy_io_writeSync"); }prov hhA , [8j)8h"/ f [ [ A [ A [ A "( hhA w,!options.ignoreBOM, enumerable: true, writable: false }, }) } decode(ina A , if (input === undefined) { return ""; } if (options.stream) { throw new Error("Streaming decode is not supported"); } // backing buffer would not have byteOffset and may have different byteLength let byteOffset = input.byteOffset || 0; let byteLength = input.byteLength; if (ArrayBuffer.isView(input)) { input = input.buffer; } if (!(input instanceof ArrayBuffer)) { throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'"); } return __javy_decodeUtf8BufferToString(input, byteOffset, byteLength, this.fatal, this.ignoreBOM); } } class TextEncoder { constructor() { Object.defineProperties(this, { encoding: { value: "utf-8", enumerable: true, writable: false }, }); } encode(input = "") { input = input.toString(); // non-string inputs are converted to strings return new Uint8Array(__javy_encodeStringToUtf8Buffer(input)); } encodeInto(source, destination) { throw new Error("encodeInto is not supported"); } } globalThis.TextDecoder = TextDecoder; globalThis.TextEncoder = TextEncoder; Reflect.deleteProperty(globalThis, "__javy_decodeUtf8BufferToString"); Reflect.deleteProperty(globalThis, "__javy_encodeStringToUtf8Buffer"); }AA  A 87AEY,,87AFYaaVH)TV*YYiY,aaVZ6T[:T\;YYiY=8bCH>8bCZ@8f Bf8''E $A8f Bf8''F $B)[8%$!/& (f33[:allFbRRXWAT^^XcAU"( LAUURAPePeO1155A P!,hAȎ   &E  ).*"" "A "  * a & c . A܏ A A A A AĐ A 0A A Ȃ A A A A A A AԒ A A A A A Aȓ A A A A A A̔ A A A A Aȕ A A A A AĖ Aܖ A A A 1A 8namejavy_quickjs_provider.wasmS_ZN4wasi13lib_generated22wasi_snapshot_preview114clock_time_get17h739957f33a15189bEK_ZN4wasi13lib_generated22wasi_snapshot_preview17fd_read17ha5f07cd4fa8cada5EL_ZN4wasi13lib_generated22wasi_snapshot_preview18fd_write17hf054d878a92dc86eE-__imported_wasi_snapshot_preview1_environ_get3__imported_wasi_snapshot_preview1_environ_sizes_get*__imported_wasi_snapshot_preview1_fd_close/__imported_wasi_snapshot_preview1_fd_fdstat_get0__imported_wasi_snapshot_preview1_fd_prestat_get5__imported_wasi_snapshot_preview1_fd_prestat_dir_name )__imported_wasi_snapshot_preview1_fd_seek +__imported_wasi_snapshot_preview1_proc_exit C_ZN13rquickjs_core5value7promise7Promise6result17hef9e9f4da0d59e0fE B_ZN13rquickjs_core8safe_ref12Mut$LT$T$GT$4lock17h193f1cad7b4a110eE G_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h2d97963988f13bb2EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hd77b8788bd5784ebEI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h1daad6d15942c5acEZ_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17hc622a041848cc7dfE_ZN4core3ptr111drop_in_place$LT$anyhow..error..ErrorImpl$LT$anyhow..wrapper..MessageError$LT$alloc..string..String$GT$$GT$$GT$17hd31fcb91cf009c89EN_ZN4core3ptr44drop_in_place$LT$std..backtrace..Capture$GT$17h2e325627c138a528Eq_ZN4core3ptr79drop_in_place$LT$anyhow..wrapper..MessageError$LT$alloc..string..String$GT$$GT$17hf08b827861165ed3E_ZN4core3ptr97drop_in_place$LT$anyhow..error..ErrorImpl$LT$anyhow..wrapper..MessageError$LT$$RF$str$GT$$GT$$GT$17h3700105f7de5e18cE5_ZN4core5error5Error11description17h1ccdfe1a2c5fc0e8E5_ZN4core5error5Error11description17h8939b1903e35f200E._ZN4core5error5Error5cause17h991502f2e69ec204E0_ZN4core5error5Error7provide17h2b7e358bfd5ce91eE0_ZN4core5error5Error7provide17h563a8b2c5e5b726dE0_ZN4core5error5Error7type_id17h0021f3fc23ccc514E0_ZN4core5error5Error7type_id17h6f3e3567fba8e468EE_ZN5alloc3vec16Vec$LT$T$C$A$GT$16into_boxed_slice17h7b133f78deaeb6c2Ej_ZN66_$LT$T$u20$as$u20$alloc..ffi..c_str..CString..new..SpecNewImpl$GT$13spec_new_impl17hf5234ad9d2ef6eb0E-_ZN6anyhow4kind5Adhoc3new17ha7feeda8c24bd6cfEO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17hc4f24c06fb15da00E 0_ZN6anyhow5error10object_ref17h0755390210602b63E!0_ZN6anyhow5error10object_ref17h6f70a0b9ee7c2dd6E"2_ZN6anyhow5error12no_backtrace17h083a376f57cd05e7E#2_ZN6anyhow5error12object_boxed17hacb768498a6da96cE$2_ZN6anyhow5error12object_boxed17he8785d76ae743324E%I_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$3msg17he8448de1535d2a31E&O_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17h306323bccc2599d7E'd_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h595c171371ba3409E(h_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h98caf2e1c85a3278E)h_ZN75_$LT$anyhow..wrapper..MessageError$LT$M$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h0ea14f65d8550e2cE*h_ZN75_$LT$anyhow..wrapper..MessageError$LT$M$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h6b68a819d8a92a61E+k_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5b844f8fcf0eef2aE,j_ZN77_$LT$anyhow..wrapper..MessageError$LT$M$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17h0d5f89297e23705eE-j_ZN77_$LT$anyhow..wrapper..MessageError$LT$M$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17hea269875b56384bfE.s_ZN85_$LT$std..sync..lazy_lock..LazyLock$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf752311738358efdE/D_ZN9once_cell3imp17OnceCell$LT$T$GT$10initialize17h8900dbd5c6a6a8bbE0b_ZN9once_cell3imp17OnceCell$LT$T$GT$10initialize28_$u7b$$u7b$closure$u7d$$u7d$17h61e9fb3d5bcfca70E1=_ZN9once_cell4sync17OnceCell$LT$T$GT$3get17h3ca6f4ce728b4985E2=_ZN9once_cell4sync17OnceCell$LT$T$GT$3set17h80bcbe248cb67297E3:_ZN21javy_quickjs_provider7runtime3new17h38c1b905237ade02E4^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17hde970c8e789a879eE5D_ZN4core3ptr34drop_in_place$LT$anyhow..Error$GT$17h4f72cd82779c8e1fE6._ZN4core5error5Error5cause17h17fe68ebe1329740E70_ZN4core5error5Error7type_id17h1bb82280edc00c8fE80_ZN4core5error5Error7type_id17h94151b6cef0900c6E9]_ZN64_$LT$core..str..error..Utf8Error$u20$as$u20$core..fmt..Debug$GT$3fmt17he670eae5db314858E:1_ZN6anyhow5error11object_drop17h04db018e41034961E;1_ZN6anyhow5error11object_drop17h27305bdd0176025eE<5_ZN6anyhow5error15object_downcast17h1dadcce58cda8842E=5_ZN6anyhow5error15object_downcast17h3e1bae0a2aeb41fcE>7_ZN6anyhow5error17object_drop_front17he770b5dac20bfae8E?7_ZN6anyhow5error17object_drop_front17hff720cdb778a3605E@4_ZN6anyhow9__private10format_err17h993e9d83c7edf9c7EAc_ZN70_$LT$anyhow..error..ErrorImpl$LT$E$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h450815eaee277991EBe_ZN72_$LT$anyhow..error..ErrorImpl$LT$E$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17h023d6ed735b9bfb7ECF_ZN21javy_quickjs_provider9execution12run_bytecode17hb6fa45ae04620bf0EDN_ZN21javy_quickjs_provider9execution20handle_maybe_promise17hbeb3ff84ec64d5d5EEwizer.initializeF compile_srcG eval_bytecodeHinvokeI __rust_allocJ__rust_deallocK__rust_reallocL__rust_alloc_zeroedM__rust_alloc_error_handlerN_ZN112_$LT$rquickjs_core..value..object..ObjectIter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h33eae099eb60ba2eEOS_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hbceb2ebaea8180b0EP6_ZN13rquickjs_core5class3ffi5trace17h5c379ab4d2d9e5a7EQ:_ZN13rquickjs_core5class3ffi9finalizer17h1b3f05230f34f8dcERJ_ZN13rquickjs_core5value6object6Object14is_instance_of17hd177932cd881f591ES>_ZN13rquickjs_core5value6object6Object3get17h49397a99aee94e20ET>_ZN13rquickjs_core5value6object6Object3get17h6018778939236003EU>_ZN13rquickjs_core5value6object6Object3get17h7f4873df96a98c1dEV>_ZN13rquickjs_core5value6object6Object3get17hc38b73e258eb8c36EW>_ZN13rquickjs_core5value6object6Object3get17hcc471b702f625d37EX>_ZN13rquickjs_core5value6object6Object3set17h10415ff171b3828aEY>_ZN13rquickjs_core5value6object6Object3set17hbaeada580a8ff222EZD_ZN13rquickjs_core5value6object6Object9own_props17hc8ccdc7126e2a731E[y_ZN13rquickjs_core5value6object8property54_$LT$impl$u20$rquickjs_core..value..object..Object$GT$4prop17h9091907facf20dccE\G_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h90628cc0cc824195E]G_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17ha395c28afea207c1E^^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17hde970c8e789a879eE_D_ZN4core3ptr34drop_in_place$LT$anyhow..Error$GT$17h0b938a1a46245f4bE`Y_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17ha9ba8c42631e0963Ea^_ZN65_$LT$rquickjs_core..result..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h209924c984b2949cEb_ZN102_$LT$javy..apis..console..NonStandardConsole$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h9c8f5c7475e6b29aEc_ZN91_$LT$javy..apis..console..Console$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17he5ad68af209de78fEd-_ZN4javy4apis7console3log17h67953d505bc560f7Ee-_ZN4javy4apis7console3log17hdfd9c5c32ceb3a32Ef_ZN89_$LT$javy..apis..random..Random$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h8e342feb8567bbe8Eg^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17hde970c8e789a879eEhL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hef3f3451a4b4749eEiS_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hbceb2ebaea8180b0Ej=_ZN4core3str7pattern14TwoWaySearcher4next17hee704ad0367fdf6dEkR_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cEl__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83Em]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aEnY_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17ha9ba8c42631e0963Eo^_ZN65_$LT$rquickjs_core..result..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h209924c984b2949cEp4_ZN6anyhow9__private10format_err17h993e9d83c7edf9c7Eq+_ZN4javy13from_js_error17ha83a871d722c9506Er+_ZN4javy13val_to_string17hd48da79b483cd5c0Es)_ZN4javy11to_js_error17hacb72e78d2bf24eaEt-_ZN4javy15to_string_lossy17hd763672528984d3cEuD_ZN13rquickjs_core5value8function4args4Args4this17h6f936f4f4d223b93EvE_ZN13rquickjs_core5value8function4args4Args5apply17h63d2d34425332ca2EwE_ZN13rquickjs_core5value8function4args4Args5apply17h73e547309ef498caExE_ZN13rquickjs_core5value8function4args4Args5apply17h9fecfe921f607fbeEyH_ZN13rquickjs_core5value8function4args4Args8push_arg17h4a0924e711ef8218EzC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hf4bfdf4ba6bb4b1bE{H_ZN13rquickjs_core5value8function4args4Args8push_arg17hce2a8bdcf284551aE|I_ZN13rquickjs_core5value8function4args4Args9construct17hfed3b12e92fa9adeE}2_ZN5alloc7raw_vec11finish_grow17hec02657102919a40E~K_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17h2e1b04c077c42e2cEK_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17hc4b2559fd00b73f6EY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h8466e99fffe3b26dEC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h8be5f08d5a420df8EC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hd009e20ba93eea98Ek_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h30816115278039cbEk_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h38df9bc382c08317Ek_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h457f5d8e7830e1cdEk_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8e2231642757dcdcEk_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8eff546005c8f0edEk_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb0d31e99440667caE:_ZN4core3ops8function6FnOnce9call_once17h2dbeca0f05ca81d0E:_ZN4core3ops8function6FnOnce9call_once17hec67a96abc5c4affEL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hef3f3451a4b4749eEQ_ZN4core3ptr47drop_in_place$LT$javy..serde..de..MapAccess$GT$17h05007297531f3fe1ER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aEm_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_bool17h9ee38a599dbae4d4Em_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_bool17hfd5169081efb2571Em_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_unit17h0fd270252dcca34bEm_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$10visit_unit17hea6048403bbdb725Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_f6417h24b3916326940470Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_f6417h5c9dad6894842712Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_i3217h0389ec816c038b4fEk_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_i3217h0c69e81c8377028fEk_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_i6417h6e38a57ea1daa915Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_i6417hbf053ef9ac9d7af2Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_map17h52db2917954383baEk_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_map17h81af73f49be499a8Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_seq17h68ae522b9fc2aad5Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_seq17h6a2fb5ed171e5d43Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_str17h25e7b9e590905030Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_str17h82442c6a06596b31Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_u3217h250e3690a49812a6Ek_ZN72_$LT$serde_transcode..Visitor$LT$S$GT$$u20$as$u20$serde..de..Visitor$GT$9visit_u3217h44f35db6d1de4560Eq_ZN78_$LT$serde_transcode..Transcoder$LT$D$GT$$u20$as$u20$serde..ser..Serialize$GT$9serialize17h65c2288e48c41bdcEq_ZN78_$LT$serde_transcode..Transcoder$LT$D$GT$$u20$as$u20$serde..ser..Serialize$GT$9serialize17hab93caa2dbb5c446Eq_ZN78_$LT$serde_transcode..Transcoder$LT$D$GT$$u20$as$u20$serde..ser..Serialize$GT$9serialize17hfabb1cbc936dae41Ev_ZN80_$LT$serde_transcode..KeySeed$LT$S$GT$$u20$as$u20$serde..de..DeserializeSeed$GT$11deserialize17hd3610c80fa9c5e54Ev_ZN80_$LT$serde_transcode..SeqSeed$LT$S$GT$$u20$as$u20$serde..de..DeserializeSeed$GT$11deserialize17hfe5254af9552b2c3Ex_ZN82_$LT$serde_transcode..ValueSeed$LT$S$GT$$u20$as$u20$serde..de..DeserializeSeed$GT$11deserialize17h4891834a6a40b99dE_ZN4core3ptr114drop_in_place$LT$core..option..Option$LT$$LP$rquickjs_core..value..Value$C$rquickjs_core..value..Value$RP$$GT$$GT$17h8dc1ab7dc958a4c4EL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hef3f3451a4b4749eES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hbceb2ebaea8180b0E{_ZN4core3ptr89drop_in_place$LT$core..option..Option$LT$rquickjs_core..value..function..Function$GT$$GT$17h9f337bc45661441dER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE4_ZN6anyhow9__private10format_err17h993e9d83c7edf9c7E_ZN104_$LT$javy..serde..de..Deserializer$u20$as$u20$core..convert..From$LT$rquickjs_core..value..Value$GT$$GT$4from17hb685115a909709f1EG_ZN4javy5serde2de12Deserializer18deserialize_number17h0a38d0471334ea00EG_ZN4javy5serde2de12Deserializer18deserialize_number17hc9a6ce711b8b53eeE_ZN85_$LT$$RF$mut$u20$javy..serde..de..Deserializer$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17h7c38a4cd11958e29E2_ZN4javy5serde2de11get_valueof17h4bd2488ddc280c07E4_ZN4javy5serde2de13get_to_string17h69db0181a0648434E2_ZN4javy5serde2de11get_to_json17hb1ed4a2378d1df52E7_ZN4javy5serde2de16ensure_supported17hb7da01318e2efb74E3_ZN4javy5serde2de9MapAccess3new17h5f350d874615a65eE3_ZN4javy5serde2de9SeqAccess3new17h968701609131049fE_ZN85_$LT$$RF$mut$u20$javy..serde..de..Deserializer$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any28_$u7b$$u7b$closure$u7d$$u7d$17h0f85ceec3a914eb7E_ZN85_$LT$$RF$mut$u20$javy..serde..de..Deserializer$u20$as$u20$serde..de..Deserializer$GT$15deserialize_any17hfb87f0845c0c6d47E3_ZN4javy5serde2de9MapAccess3pop17hdf79099e49658b11Ek_ZN67_$LT$javy..serde..de..MapAccess$u20$as$u20$serde..de..MapAccess$GT$13next_key_seed17h0524bfea13e583abEm_ZN67_$LT$javy..serde..de..MapAccess$u20$as$u20$serde..de..MapAccess$GT$15next_value_seed17hfc62c9d57e86494dE3_ZN4javy5serde2de9SeqAccess3pop17h0e88a82e178b506bEo_ZN67_$LT$javy..serde..de..SeqAccess$u20$as$u20$serde..de..SeqAccess$GT$17next_element_seed17h0a0b1607d08f962bE_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$18param_requirements17h133f7aeef9216a2dE_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$4call17h47a1c556d444dbd1E_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$4call17h637c968dc01191aeE^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17hde970c8e789a879eED_ZN4core3ptr34drop_in_place$LT$anyhow..Error$GT$17h0b938a1a46245f4bEL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hef3f3451a4b4749eES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hbceb2ebaea8180b0ER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE^_ZN65_$LT$rquickjs_core..result..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h209924c984b2949cE_ZN89_$LT$javy..apis..json..JavyJson$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h5410b8b90024b558E}_ZN85_$LT$javy..apis..json..Json$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17hff7ed859d7d37b0bE7_ZN4javy4apis4json15call_json_parse17h640519cdfb94dbc3EU_ZN4javy4apis4json15call_json_parse28_$u7b$$u7b$closure$u7d$$u7d$17h38cb985abcc2e2b6E;_ZN4javy4apis4json19call_json_stringify17h1d57c6fc0d9d02fbEL_ZN13rquickjs_core5value8function11Constructor9construct17h1f553cfb2c19eb58EB_ZN13rquickjs_core5value8function8Function3new17h17aeeac9d60d3a6bEB_ZN13rquickjs_core5value8function8Function3new17h194ed2dbb1e27753EB_ZN13rquickjs_core5value8function8Function3new17h1cea5f287c5a5a7cEB_ZN13rquickjs_core5value8function8Function3new17h20f52247366d9766EB_ZN13rquickjs_core5value8function8Function3new17h3bcd90b60e17fc59EB_ZN13rquickjs_core5value8function8Function3new17h5367ee9fa6eeba2bEB_ZN13rquickjs_core5value8function8Function3new17h606e6c44e5a66249EB_ZN13rquickjs_core5value8function8Function3new17h94f1b0db510d3fbcEB_ZN13rquickjs_core5value8function8Function3new17hab6e6b5e3bf4a335EB_ZN13rquickjs_core5value8function8Function3new17hc4f9181a308d73a9EB_ZN13rquickjs_core5value8function8Function3new17hdd50f04e523bcf48EB_ZN13rquickjs_core5value8function8Function3new17hdea8448002be6fe5EB_ZN13rquickjs_core5value8function8Function3new17hf8f697841a98b7a1EC_ZN13rquickjs_core5value8function8Function4call17h2d44fdb2579b23f5EC_ZN13rquickjs_core5value8function8Function4call17h4d5cf11642d8583dEC_ZN13rquickjs_core5value8function8Function4call17h7d22c6ab74fdbebdEC_ZN13rquickjs_core5value8function8Function4call17h87e36ad58fe1cbceEC_ZN13rquickjs_core5value8function8Function4call17h8fcc84ba99fbf78cEC_ZN13rquickjs_core5value8function8Function4call17hc352fc318a8ef305EC_ZN13rquickjs_core5value8function8Function4call17hf3ddcc3612f4dd70EG_ZN13rquickjs_core5value8function8Function8set_name17h66760a977f18b034E_ZN4core3ptr334drop_in_place$LT$rquickjs_core..value..function..Function..new$LT$$LP$rquickjs_core..context..ctx..Ctx$C$rquickjs_core..value..function..types..Rest$LT$rquickjs_core..value..Value$GT$$RP$$C$rquickjs_core..value..function..types..MutFn$LT$javy..apis..json..register..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h9e67718feb3e5c09Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17h0ad5501802a646c6Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17h25df482580f5a600Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17h2b187ad7b0a5bda3Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17h46ca5f3f8e9da4d0Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17h6bbd9eeebbea5abdEa_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17h8e375b5c8e8a4717Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17h9b8b6452a8193117Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17h9dea925ea40598cbEa_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17ha3208d11cb66d01eEa_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17hd0b9ba437a37b1a3Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17hd5cb2e36a39788e4Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17hef28f4fe33fdc4d8Ea_ZN67_$LT$F$u20$as$u20$rquickjs_core..value..function..ffi..RustFunc$GT$4call17hf14a085d4edd0928E;_ZN10serde_json3ser18format_escaped_str17ha1066e287a2e4e31E_ZN89_$LT$serde_json..ser..MapKeySerializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$13serialize_f6417hd0b90fcb38543e69E_ZN89_$LT$serde_json..ser..MapKeySerializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$13serialize_i3217hf59e41f0e792623bE_ZN89_$LT$serde_json..ser..MapKeySerializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$13serialize_i6417hcbfa05c5a37b7f64E_ZN89_$LT$serde_json..ser..MapKeySerializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$13serialize_map17hbffdce8ffea66cf9E_ZN89_$LT$serde_json..ser..MapKeySerializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$13serialize_u3217h2f568d587013b787E_ZN89_$LT$serde_json..ser..MapKeySerializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_bool17h5904468eadba3f59E_ZN89_$LT$serde_json..ser..MapKeySerializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17hae5d235647b11c6cE4_ZN6anyhow9__private10format_err17h993e9d83c7edf9c7E`_ZN63_$LT$javy..config..Config$u20$as$u20$core..default..Default$GT$7default17hb36be94af152ccf3E0_ZN4javy7runtime7Runtime3new17h72f4430ac93bf81cE>_ZN4javy7runtime7Runtime16has_pending_jobs17hcbf09120bf663119EA_ZN4javy7runtime7Runtime19compile_to_bytecode17h8b632b27404be306E_ZN114_$LT$rquickjs_core..value..function..types..Func$LT$T$C$P$GT$$u20$as$u20$rquickjs_core..value..convert..IntoJs$GT$7into_js17h83d9dce4206fd3e2E_ZN122_$LT$rquickjs_core..value..function..types..Rest$LT$T$GT$$u20$as$u20$rquickjs_core..value..function..params..FromParam$GT$10from_param17h8103dbbdbec4ca19E_ZN137_$LT$rquickjs_core..value..object..property..Property$LT$T$GT$$u20$as$u20$rquickjs_core..value..object..property..AsProperty$LT$T$GT$$GT$6config17h06db195755492c4aE<_ZN13rquickjs_core5value5array5Array3get17h98aaa2896f102239E<_ZN13rquickjs_core5value5array5Array3set17h99419463446c6bc2E_ZN13rquickjs_core5value8function9into_func149_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$rquickjs_core..value..function..types..MutFn$LT$Fun$GT$$GT$18param_requirements17h18a36745c0159501E_ZN13rquickjs_core5value8function9into_func149_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$rquickjs_core..value..function..types..MutFn$LT$Fun$GT$$GT$4call17h437f56a7bf90c8f6E_ZN13rquickjs_core5value8function9into_func149_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$rquickjs_core..value..function..types..MutFn$LT$Fun$GT$$GT$4call17h9e54a9cb2d3c9f63E_ZN13rquickjs_core5value8function9into_func149_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$rquickjs_core..value..function..types..MutFn$LT$Fun$GT$$GT$4call17haaf3fac7978cee3dE_ZN13rquickjs_core5value8function9into_func149_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$rquickjs_core..value..function..types..MutFn$LT$Fun$GT$$GT$4call17he497c831409f6eabET_ZN4core3ptr50drop_in_place$LT$javy..serde..de..Deserializer$GT$17h2f0a2206ea0f664aEq_ZN79_$LT$$LP$A$C$$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$8num_args17h4fe993e7ac0bcaedEr_ZN79_$LT$$LP$A$C$$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$9into_args17h6e78c954e4e9ba25Er_ZN80_$LT$$LP$A$C$B$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$8num_args17h17d51d91d50efc79Er_ZN80_$LT$$LP$A$C$B$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$8num_args17h46639932cbde5b78Es_ZN80_$LT$$LP$A$C$B$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$9into_args17h3e000adce12671a7Es_ZN80_$LT$$LP$A$C$B$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$9into_args17h92e4aff350baf67bE'_ZN4javy4json5parse17ha766bcd8579297f5E+_ZN4javy4json9stringify17h07c099692141dd25E_ZN13rquickjs_core5value8function9into_func92_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$$RP$$GT$$u20$for$u20$Fun$GT$18param_requirements17h0c39d1b074bb161eE_ZN13rquickjs_core5value8function9into_func92_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$$RP$$GT$$u20$for$u20$Fun$GT$4call17h38345305b89e52c9E_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$18param_requirements17h0e15efa37d0cfedcE_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$4call17h225d9bcdd24ff192E4_ZN6anyhow9__private10format_err17h993e9d83c7edf9c7E_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$4call17h2507bba49018d658E;_ZN4core3fmt8builders9DebugList7entries17hae4484c5b8476e38ED_ZN4core3ptr34drop_in_place$LT$anyhow..Error$GT$17h0b938a1a46245f4bEt_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h456a27b5971cebaeE_ZN94_$LT$javy..apis..stream_io..StreamIO$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h8c6f1225253739cbE_ZN112_$LT$rquickjs_core..value..typed_array..TypedArray$LT$T$GT$$u20$as$u20$rquickjs_core..value..convert..FromJs$GT$7from_js17h07799579586d90e8ER_ZN13rquickjs_core5value11typed_array19TypedArray$LT$T$GT$3new17h03ab53149a9c77daEo_ZN13rquickjs_core6result50_$LT$impl$u20$rquickjs_core..context..ctx..Ctx$GT$12handle_panic17hf3dfca58f6100f97EI_ZN13rquickjs_core7context3ctx3Ctx17eval_with_options17h04d347f27a05ff7fE?_ZN13rquickjs_core7context3ctx3Ctx8eval_raw17h1fd2a3f6b8c107cdEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h42b9f1d692f13efcEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h6b6618ae25ef98b9E._ZN4core5error5Error5cause17h4c8024cc0e98d19fE._ZN4core5error5Error5cause17h7240f2783ed0e488E0_ZN4core5error5Error7type_id17h0d2a3a1ca60233a2E0_ZN4core5error5Error7type_id17h118d7e87195562c8E0_ZN4core5error5Error7type_id17h7327325953376319E0_ZN4core5error5Error7type_id17h7bc1bdf5d56f0c4dE0_ZN4core5error5Error7type_id17h9ea5861e60144155E0_ZN4core5error5Error7type_id17haca6d4f3735af7ddE0_ZN4core5error5Error7type_id17haf4d68fabb30d96fE0_ZN4core5error5Error7type_id17hb5b883601c3d211fE0_ZN4core5error5Error7type_id17hfb449ff36059a340E^_ZN62_$LT$serde_json..error..Error$u20$as$u20$serde..ser..Error$GT$6custom17h208301a3e06d73b6E1_ZN6anyhow5error11object_drop17h16c242ce7394b74eE1_ZN6anyhow5error11object_drop17h38e886b88ed27ca8E1_ZN6anyhow5error11object_drop17h7bf76b38fdd37403E1_ZN6anyhow5error11object_drop17h92525125429e78feE1_ZN6anyhow5error11object_drop17h9c58a040d150b52aE1_ZN6anyhow5error11object_drop17hb52e2f6b0eda507aE1_ZN6anyhow5error11object_drop17hbbf58a1131839f5cE1_ZN6anyhow5error11object_drop17hc130f78e7fe09c48E5_ZN6anyhow5error15object_downcast17h4dc49d2230824e45E5_ZN6anyhow5error15object_downcast17h5c465f79f297afa5E5_ZN6anyhow5error15object_downcast17h8450d5c72bd72048E5_ZN6anyhow5error15object_downcast17h912f02f99de61446E5_ZN6anyhow5error15object_downcast17ha896c8a4a2d016a6E5_ZN6anyhow5error15object_downcast17ha9d7258606964006E5_ZN6anyhow5error15object_downcast17hd5a6163c89fa99e2E5_ZN6anyhow5error15object_downcast17heb963622f03addbbE7_ZN6anyhow5error17object_drop_front17h313815dbd6848b74E7_ZN6anyhow5error17object_drop_front17h5b22e779c5768e97E7_ZN6anyhow5error17object_drop_front17h622a5841871d7cdbE7_ZN6anyhow5error17object_drop_front17hadf79c0360a9fb72E7_ZN6anyhow5error17object_drop_front17hefe63062065396aaEc_ZN70_$LT$anyhow..error..ErrorImpl$LT$E$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h0c88ca2ea74be924Ee_ZN72_$LT$anyhow..error..ErrorImpl$LT$E$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17h0960e7885bb0ff68Ez_ZN84_$LT$$LP$A$C$B$RP$$u20$as$u20$rquickjs_core..value..function..params..FromParams$GT$11from_params17hbf14a0dbc9ff79faE_ZN84_$LT$$LP$A$C$B$RP$$u20$as$u20$rquickjs_core..value..function..params..FromParams$GT$18param_requirements17h8777b537bff2cae3E)_ZN3std9panicking3try17hbcd3091b61e84f7bES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hbceb2ebaea8180b0EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h4cc2f16d20206936EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h5ce082a5eca7592dEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h825fbfde72b2e258EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h8a24f5c995309070EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h8f90f29e55c49e61EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h993f9d7120b86285EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h99c3ec819815a682EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17he729f72a5cd1c7caEL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hef3f3451a4b4749eE._ZN4core5error5Error5cause17h10828f3598debb8aE._ZN4core5error5Error5cause17h2f26bee9c428d06fE0_ZN4core5error5Error7type_id17h14bc26f0e400985fE0_ZN4core5error5Error7type_id17h38d58594642c646fE0_ZN4core5error5Error7type_id17h7576f3428ff3a582ER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE__ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17hf5a262b1fd1a7865Es_ZN85_$LT$std..sync..lazy_lock..LazyLock$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1acf6eb078177609Ev_ZN9simd_json5serde70_$LT$impl$u20$serde..de..Error$u20$for$u20$simd_json..error..Error$GT$6custom17hd3d40e484a286b4dEt_ZN4javy5serde2de70_$LT$impl$u20$serde..de..Error$u20$for$u20$javy..serde..err..Error$GT$6custom17h1a66c5edf532ee1eE[_ZN62_$LT$javy..serde..err..Error$u20$as$u20$core..fmt..Display$GT$3fmt17h453331c3ed0fadf6E_ZN99_$LT$javy..serde..err..Error$u20$as$u20$core..convert..From$LT$rquickjs_core..result..Error$GT$$GT$4from17h7c59081d7d78594dE@_ZN4javy5serde3ser10Serializer12from_context17hf89855a39320d2deE{_ZN83_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$13serialize_i6417h8072375fbc98cbd4E{_ZN83_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$13serialize_u6417h7ed59a66df16a1b8E{_ZN83_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$13serialize_f6417h6d231e585c9a5510E|_ZN83_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$14serialize_bool17hb14c58177d745d88E{_ZN83_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$13serialize_str17h4c42fb56c233f44bE|_ZN83_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$14serialize_none17hb3165bb3493e974cE{_ZN83_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$13serialize_seq17h79794fc1100a81beE{_ZN83_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..Serializer$GT$13serialize_map17h640cd0c83331f59aE_ZN85_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..SerializeSeq$GT$17serialize_element17h9184b55f8be38333E}_ZN85_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..SerializeMap$GT$13serialize_key17hba389771d915f981E_ZN85_$LT$$RF$mut$u20$javy..serde..ser..Serializer$u20$as$u20$serde..ser..SerializeMap$GT$15serialize_value17h19821fbaffc15eccEB_ZN13rquickjs_core8safe_ref12Mut$LT$T$GT$4lock17hdffb5e6451a249c8EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h031a11686b8e1e04EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h0d337f4988d7924bEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h2fb24894b81209f7EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h7980ed48eefc2890EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h7ca072a9d60aedc8EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h81bbffff2197ce3cEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hb3d4c72c7ea7cd6eEI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h5add1c304cdeb011EI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hbda060e14c86d49cE0_ZN4core3fmt5Write9write_fmt17hcc5c478665c916e1EL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hef3f3451a4b4749eE._ZN4core5error5Error5cause17h41712230a26f22f3E._ZN4core5error5Error5cause17ha3cf6bfa4a21f0b9E._ZN4core5error5Error5cause17hcfd0fb855a3456bfE0_ZN4core5error5Error7type_id17h319e49c55c3b5ae6E0_ZN4core5error5Error7type_id17ha8208c0844ef6efcE0_ZN4core5error5Error7type_id17ha9b2d25e6b10c257E__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aEF_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17hbb2de5d9e3fd05daE^_ZN65_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h8493da9973c7948dEj_ZN66_$LT$T$u20$as$u20$alloc..ffi..c_str..CString..new..SpecNewImpl$GT$13spec_new_impl17hb40dbc27e723c1d3Ed_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h439397ea53f939fcEd_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7c6c325e7e508056Ed_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbb83175d04691f3Eh_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hdb43c39407d965e1Eh_ZN75_$LT$anyhow..wrapper..MessageError$LT$M$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h04761d9eb812a1efEh_ZN75_$LT$anyhow..wrapper..MessageError$LT$M$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h7b9a54f78d422473Ej_ZN77_$LT$anyhow..wrapper..MessageError$LT$M$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17h9677920948611d88Ej_ZN77_$LT$anyhow..wrapper..MessageError$LT$M$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17hc7f25dc536762787EE_ZN13rquickjs_core5class14Class$LT$C$GT$8instance17headecbfec957b676EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h7d139378e9f1fc81EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h940c455969b76a84E^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17hde970c8e789a879eE_ZN4core3ptr111drop_in_place$LT$anyhow..error..ErrorImpl$LT$anyhow..wrapper..MessageError$LT$alloc..string..String$GT$$GT$$GT$17h6fcba6fd3c435eb2EL_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h2082523c9703e95cEN_ZN4core3ptr44drop_in_place$LT$javy..serde..err..Error$GT$17ha91c16279f6424fcEN_ZN4core3ptr44drop_in_place$LT$simd_json..error..Error$GT$17h6dd3e6990c931f2eEO_ZN4core3ptr45drop_in_place$LT$serde_json..error..Error$GT$17hb25b81a59b28afc4EP_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h0ef72ab26ebb82d2ER_ZN4core3ptr48drop_in_place$LT$alloc..ffi..c_str..NulError$GT$17h5b77daa6186d3f33ES_ZN4core3ptr49drop_in_place$LT$alloc..string..FromUtf8Error$GT$17hb31e6982b5a5f911ES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hbceb2ebaea8180b0El_ZN4core3ptr74drop_in_place$LT$anyhow..error..ErrorImpl$LT$std..io..error..Error$GT$$GT$17h3a4ddf12273d2d48En_ZN4core3ptr76drop_in_place$LT$anyhow..error..ErrorImpl$LT$javy..serde..err..Error$GT$$GT$17h5f1cc40641ea6216En_ZN4core3ptr76drop_in_place$LT$anyhow..error..ErrorImpl$LT$simd_json..error..Error$GT$$GT$17ha20f9ebfc5b65b7dEo_ZN4core3ptr77drop_in_place$LT$anyhow..error..ErrorImpl$LT$serde_json..error..Error$GT$$GT$17hd68afe3f45aef9daEs_ZN4core3ptr81drop_in_place$LT$anyhow..error..ErrorImpl$LT$alloc..string..FromUtf8Error$GT$$GT$17hd7e22366e124c712Es_ZN4core3ptr81drop_in_place$LT$anyhow..error..ErrorImpl$LT$rquickjs_core..result..Error$GT$$GT$17hcbb0909263eceeb3E_ZN4core3ptr97drop_in_place$LT$anyhow..error..ErrorImpl$LT$anyhow..wrapper..MessageError$LT$$RF$str$GT$$GT$$GT$17he52d50a4fc72b0bbE5_ZN4core5error5Error11description17h02b1fedcc14af2fcE5_ZN4core5error5Error11description17h0567ceaaeb137db4E._ZN4core5error5Error5cause17h1607b61967c62c8fE0_ZN4core5error5Error7provide17h05dd2d5cee9e9fb4E0_ZN4core5error5Error7provide17h45a6a06a91dd09b0E0_ZN4core5error5Error7type_id17hc0e92b620452595cEY_ZN60_$LT$simd_json..error..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h6a61e54bc4eb71d1E]_ZN64_$LT$alloc..ffi..c_str..NulError$u20$as$u20$core..fmt..Debug$GT$3fmt17he501c9f0204c6944E^_ZN65_$LT$alloc..string..FromUtf8Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h5e0b7fd88a75c5f2E^_ZN65_$LT$rquickjs_core..result..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h209924c984b2949cE__ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17hc7a81360206a737cEe_ZN67_$LT$T$u20$as$u20$rquickjs_core..value..function..args..IntoArg$GT$8into_arg17h5e4ec623500a3c7bEi_ZN67_$LT$alloc..string..FromUtf8Error$u20$as$u20$core..error..Error$GT$11description17hf166678ba1484f86Eb_ZN69_$LT$core..alloc..layout..LayoutError$u20$as$u20$core..fmt..Debug$GT$3fmt17hb398c037eb495ee7E-_ZN6anyhow4kind5Adhoc3new17h38bc48ac6456831cEO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17h0d426ad7b1d49300E-_ZN6anyhow4kind5Trait3new17h88a89096a956601fEI_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$3new17hf57601277b2c0e9cE0_ZN6anyhow5error10object_ref17h0edaee7270f61641E0_ZN6anyhow5error10object_ref17h32cab53bb67a1301E0_ZN6anyhow5error10object_ref17h9a9679e3054a6c45E0_ZN6anyhow5error10object_ref17h9bab451000685363E0_ZN6anyhow5error10object_ref17ha6d0499947f93abcE0_ZN6anyhow5error10object_ref17hd624414bd3e85973E0_ZN6anyhow5error10object_ref17heb8baf5511e4f209E0_ZN6anyhow5error10object_ref17hfec7ade18ae20dc2E2_ZN6anyhow5error12no_backtrace17h083a376f57cd05e7E2_ZN6anyhow5error12object_boxed17h0c14171107c8d99dE2_ZN6anyhow5error12object_boxed17h13e1688f8ddece7bE2_ZN6anyhow5error12object_boxed17h2929a0599033f999E2_ZN6anyhow5error12object_boxed17h3ee90b58caab061eE2_ZN6anyhow5error12object_boxed17h3f4fe20e0d55196fE2_ZN6anyhow5error12object_boxed17h42d0ea955a64508aE2_ZN6anyhow5error12object_boxed17h7b814971bf57026eE2_ZN6anyhow5error12object_boxed17hbb359094bcdd95abES_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$12downcast_ref17h0e3b50f8e385f3b5ES_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$12downcast_ref17h15a9ac7522f440c0EI_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$3msg17hbe92cb391e781131EO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17hdfcd0ed4d10a9d4bEO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17hfa9ee7dbe58b4dd6EN_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$8downcast17h6c9dcbfd4a6c7a2aEO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17h9670ece2a8fc41b5EO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17h9723ab69757ed7c7EO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17ha30ad9d30e6d1167EO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17hf6cdccd886144f2fEO_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$9construct17hffae02b754ad2129Es_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17h1254cc671a43502aEs_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17h14385269bde21865Es_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17h174a3a8f0f3a6062Es_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17h9732dc610b8c6546Es_ZN6anyhow5error72_$LT$impl$u20$core..convert..From$LT$E$GT$$u20$for$u20$anyhow..Error$GT$4from17ha4544c26e6b868c2Ef_ZN71_$LT$alloc..borrow..Cow$LT$B$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17hed4781fa08110334Er_ZN80_$LT$$LP$A$C$B$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$8num_args17hab0a21041889e2caEs_ZN80_$LT$$LP$A$C$B$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$9into_args17h5663a499d2be8f1bEv_ZN84_$LT$$LP$A$C$B$C$C$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$8num_args17hdc58ccd524a9e24eEw_ZN84_$LT$$LP$A$C$B$C$C$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$9into_args17h9971f6906b18a876Ecanonical_abi_realloccanonical_abi_freeY_ZN60_$LT$javy..serde..err..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17hf6a8a6164f058234EK_ZN13rquickjs_core5value12array_buffer11ArrayBuffer3new17h8206b728b7756a9aET_ZN13rquickjs_core5value12array_buffer11ArrayBuffer3new8drop_raw17h5264deb6013388a5ER_ZN13rquickjs_core5value6module23Module$LT$Evaluated$GT$5write17h41db371a822444acEB_ZN13rquickjs_core5value6module6Module7declare17he2203862ca41253eE_ZN13rquickjs_core5value7convert4into101_$LT$impl$u20$rquickjs_core..value..convert..IntoJs$u20$for$u20$core..result..Result$LT$T$C$E$GT$$GT$7into_js17h20708bbb1e1aece7E_ZN13rquickjs_core5value7convert4into101_$LT$impl$u20$rquickjs_core..value..convert..IntoJs$u20$for$u20$core..result..Result$LT$T$C$E$GT$$GT$7into_js17h47c042c3f1bdbe3bEL_ZN13rquickjs_core5value8function3ffi17js_callback_class17he7c5d69a106b7617E_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$18param_requirements17h3762c8d49afa35d5E_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$4call17h34a7835d2a3a15d7E4_ZN6anyhow9__private10format_err17h993e9d83c7edf9c7E_ZN13rquickjs_core5value8function9into_func97_$LT$impl$u20$rquickjs_core..value..function..IntoJsFunc$LT$$LP$A$C$B$RP$$GT$$u20$for$u20$Fun$GT$4call17h475bf984cd0d256cEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h1a5931b100521e8eED_ZN4core3ptr34drop_in_place$LT$anyhow..Error$GT$17h0b938a1a46245f4bEe_ZN67_$LT$T$u20$as$u20$rquickjs_core..value..function..args..IntoArg$GT$8into_arg17hf08ed69f0ff3e338Eq_ZN79_$LT$$LP$A$C$$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$8num_args17h12df3c3a8f5bc4b4Er_ZN79_$LT$$LP$A$C$$RP$$u20$as$u20$rquickjs_core..value..function..args..IntoArgs$GT$9into_args17hf1210cb90595183bE)_ZN4javy5serde6as_key17h650c82f665a1a9caE_ZN102_$LT$javy..apis..text_encoding..TextEncoding$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h4e09a8e51e7f2b2dE>_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hd57b2e2cf9da8fceEf_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h6a1d5b3c835129e0E9_ZN8fastrand10global_rng11random_seed17hc1bb9b122366f8bcE0_ZN8fastrand10global_rng3f6417h06a27cae35a96d3aE_ZN4core3ptr100drop_in_place$LT$core..result..Result$LT$$LP$usize$C$usize$RP$$C$simd_json..error..ErrorType$GT$$GT$17h885ba4f9b0730f7bEo_ZN9simd_json11numberparse7correct41_$LT$impl$u20$simd_json..Deserializer$GT$12parse_number17heb6375d8ce935042E?_ZN9simd_json5impls7simd1285deser9parse_str17h15cbcd421f9dd1adE;_ZN9simd_json12Deserializer10from_slice17h83341eb214e430f2EH_ZN9simd_json12Deserializer23from_slice_with_buffers17h9975004be3cef355E@_ZN9simd_json10AlignedBuf17capacity_overflow17hc51f47f8ebc2d764E7_ZN19lexical_parse_float6bigint3pow17h6c5bdcea5632b333EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h6bf73f2e7707a36aEA_ZN19lexical_parse_float4slow14parse_mantissa17hb0538b52ea29d4cbE=_ZN19lexical_parse_float6bigint9small_mul17ha6a9df6051dcb835EC_ZN19lexical_parse_float6bigint14small_add_from17ha511cde4a6cea610EF_ZN19lexical_parse_float4slow19negative_digit_comp17ha40ceca4790ebea4EF_ZN19lexical_parse_float4slow19positive_digit_comp17h27c1f1f55ad22640EB_ZN19lexical_parse_float5parse14parse_complete17hae911cd3da946298E;_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h876aa3aa142f6fecE;_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hb0a41dec05be9bffE;_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd3dec68772213598E;_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hff47a7ff8883f34cEd_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5a2da07bd4a4358bEK_ZN9simd_json11numberparse7correct19parse_large_integer17h07acb3385462306fEK_ZN9simd_json11numberparse7correct19f64_from_parts_slow17h7fe399648a30efcfEF_ZN9simd_json11numberparse7correct14f64_from_parts17h0d5b7537ac5c6041E2_ZN5alloc7raw_vec11finish_grow17h86fe0cd3ab361c21EK_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17h04150d51b0e99740EK_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17h2ab02bc8a256c576EK_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17hb9bda7aeb583bce1EK_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17hd26ee5ecaa78f120EY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h0cded557920536e5EY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h468fa5033179d4afEY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h60c3d4966bf11b9bEY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17hdd1259cf72fb31aaEk_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h00384de552b0c18fEk_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h42f60a164d1f2a2dEk_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h698de81bac1b7529Ek_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf046618cb0467a23ER_ZN12lexical_util14feature_format21NumberFormat$LT$_$GT$5error17h9765efc273937787EB_ZN19lexical_parse_float6lemire13compute_float17h298c835252e82477EI_ZN19lexical_parse_float6number6Number13try_fast_path17h4b73410c9d91f17aEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h05a0d98a24363ce5EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h1d3edaedcaa41731EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h4c2545cd059a188eEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h510e703eb239c6dcE]_ZN64_$LT$simd_json..error..ErrorType$u20$as$u20$core..fmt..Debug$GT$3fmt17h831fa5b1a42edbacEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h844572efb05b3e45EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h88969ab0fd2cf8aaE__ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17he53d3111054c101eE[_ZN62_$LT$simd_json..error..Error$u20$as$u20$core..fmt..Display$GT$3fmt17h315c6296e07720b6EK_ZN19lexical_parse_float6lemire22compute_product_approx17hd55c8d1ef934b641EE_ZN5alloc3vec16Vec$LT$T$C$A$GT$16into_boxed_slice17hb6a0fe1aa98cc908EF_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h31e86f8a7f002f35E<_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h9e422372a2624e17Ed_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf952a2d8b692438eE=_ZN10serde_json3ser20key_must_be_a_string17h74ec5dd211fc8ed0EA_ZN10serde_json3ser24float_key_must_be_finite17hf28ce71c96df630cEL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h5ad698a8cd733c19ER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cEW_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Debug$GT$3fmt17h64d941e021c149b8E__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE6_ZN10serde_json5error5Error6syntax17h5eae04c72817ea17E2_ZN10serde_json5error5Error2io17h0b9d48d68d5cb701E`_ZN67_$LT$serde_json..error..ErrorCode$u20$as$u20$core..fmt..Display$GT$3fmt17h10b9dab911e16e3eE__ZN63_$LT$serde_json..error..Error$u20$as$u20$core..error..Error$GT$6source17h12cc0a831e6ca4a5E\_ZN63_$LT$serde_json..error..Error$u20$as$u20$core..fmt..Display$GT$3fmt17h7e3f204b8e675743EZ_ZN61_$LT$serde_json..error..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h15ac186372980834E5_ZN10serde_json5error10make_error17h05bb59597313d345E0_ZN4core3fmt5Write9write_fmt17h431d8172c5831551EL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h5ad698a8cd733c19EN_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17ha54e7f177149187fE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aEh_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5e4d5bf863fb6b82E2_ZN5alloc7raw_vec11finish_grow17h8caf83a972f9ff79EI_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$13shrink_to_fit17h8015547652b18ddaEY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17hbb6ea77e16261eafEC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hce8572f10e625befEC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8into_box17hd367fbaab22cdb71Ek_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he9b456eb5b229396E@_ZN3ryu6pretty8mantissa19write_mantissa_long17hb0e246079d046cacE+_ZN3ryu6pretty8format6417h73b0e3a18d35271bEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h05a58394c947a1c1E5_ZN4core9panicking13assert_failed17h611b5e11d331887aE>_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h6d16729fbb29c9aeE9_ZN9once_cell3imp18initialize_or_wait17h96a1c4d0e6f0eea1E2_ZN5alloc7raw_vec11finish_grow17hfdd52e4c9acaaa3dEK_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17h10fa9886c430bc29EK_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17h5bc4be27df7e7088EY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h0add9fed58387c92EC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hef9611a7ea4c0425Ek_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06b61a08fdce2a4cE_ZN13rquickjs_core5value7convert4atom97_$LT$impl$u20$rquickjs_core..value..convert..FromAtom$u20$for$u20$rquickjs_core..value..Value$GT$9from_atom17h2057d6b73083cfb5E_ZN13rquickjs_core5value7convert4atom97_$LT$impl$u20$rquickjs_core..value..convert..IntoAtom$u20$for$u20$rquickjs_core..value..Value$GT$9into_atom17h89805bfa07c95f60Ea_ZN66_$LT$rquickjs_core..value..Value$u20$as$u20$core..clone..Clone$GT$5clone17hc0740ffd9aacfbbfEc_ZN69_$LT$rquickjs_core..value..Value$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4f34499ee51f67acE:_ZN13rquickjs_core5value5Value7type_of17h9be5da17444573d4E<_ZN13rquickjs_core5value5Value9type_name17h9c70ab70c5d3e709E<_ZN13rquickjs_core5value5Value9as_string17h128beafa460d187dE?_ZN13rquickjs_core5value5Value11into_string17h760ca439400e5d8bE<_ZN13rquickjs_core5value5Value9as_symbol17h11a7736da82bcc17E<_ZN13rquickjs_core5value5Value9as_object17h81866ccef0a4db5dE?_ZN13rquickjs_core5value5Value11into_object17hddc01033044569d8EA_ZN13rquickjs_core5value5Value13into_function17h5fee2e0c6bf4f34cE>_ZN13rquickjs_core5value5Value10as_promise17h2374ebef557f8209E;_ZN13rquickjs_core5value5Value8as_array17h54baf2164f577597EB_ZN13rquickjs_core5value5Value14into_exception17haca83951daf701ddEz_ZN89_$LT$rquickjs_core..value..Undefined$u20$as$u20$rquickjs_core..value..convert..IntoJs$GT$7into_js17ha833b2681b089599ES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hf87720f54a6074f5EN_ZN13rquickjs_core5value9exception9Exception12from_message17hfc51cbd5d4f7a2d4EN_ZN13rquickjs_core5value9exception9Exception12throw_syntax17h0086fcffba49e8c3EL_ZN13rquickjs_core5value9exception9Exception10throw_type17ha85ed02b4514e9a5En_ZN81_$LT$rquickjs_core..value..exception..Exception$u20$as$u20$core..fmt..Display$GT$3fmt17hc8abfc5040cc47e3EC_ZN13rquickjs_core5value8function4args4Args3new17h1206e1f06a7f3efbEr_ZN84_$LT$rquickjs_core..value..function..args..Args$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0c605f4ec798a354E1_ZN5alloc2rc11Rc$LT$T$GT$3new17h0ecd1af2c4213955Ec_ZN70_$LT$core..num..error..TryFromIntError$u20$as$u20$core..fmt..Debug$GT$3fmt17hd8abbdc4e95ac790E<_ZN13rquickjs_core5value5array5Array3new17h580c49deb220fec5E<_ZN13rquickjs_core5value5array5Array3len17h8cd3dd70c9698513ET_ZN13rquickjs_core5value4atom10predefined14PredefinedAtom6to_str17h302edd62414d785eE_ZN13rquickjs_core5value7convert4atom124_$LT$impl$u20$rquickjs_core..value..convert..IntoAtom$u20$for$u20$rquickjs_core..value..atom..predefined..PredefinedAtom$GT$9into_atom17h338c5686723e481bE_ZN13rquickjs_core5value7convert4into75_$LT$impl$u20$rquickjs_core..value..convert..IntoJs$u20$for$u20$$RF$str$GT$7into_js17hd3cc7d4f64ad9fe3E_ZN13rquickjs_core5value7convert4into76_$LT$impl$u20$rquickjs_core..value..convert..IntoJs$u20$for$u20$$LP$$RP$$GT$7into_js17hbb7d71eebd941669ES_ZN13rquickjs_core5value8function6params6Params14from_ffi_class17hf183b5c2d2d9fca7EL_ZN13rquickjs_core5value8function6params6Params8function17hf95ff6c8b239b4e8EP_ZN13rquickjs_core5value8function6params14ParamsAccessor3arg17hc4b35ba28d8e47cfEV_ZN13rquickjs_core5value8function6params16ParamRequirement7combine17h2584e5829faf6b51EJ_ZN13rquickjs_core5value8function8Function10set_length17h75756832a98fbfeeEK_ZN13rquickjs_core5value8function8Function11with_length17hfdf16766d096eb26EH_ZN13rquickjs_core5value8function8Function9prototype17h39288773b80ff6ccE_ZN13rquickjs_core5value7convert4into71_$LT$impl$u20$rquickjs_core..value..convert..IntoJs$u20$for$u20$f64$GT$7into_js17h94a114f1937ae2a6E_ZN13rquickjs_core5value108_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$rquickjs_core..value..function..Function$GT$7from_js17h268edd9e4ab1b757E_ZN13rquickjs_core5value111_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$rquickjs_core..value..function..Constructor$GT$7from_js17hd84230384617694bE)_ZN3std9panicking3try17hd0b37d51b91f10daES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hf87720f54a6074f5EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h7d812e9fca91b2deEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h88f08c19c74ecc62EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hd14eddb5853de487EB_ZN13rquickjs_core5value4atom4Atom10from_value17h2641c29a38102038E?_ZN13rquickjs_core5value4atom4Atom8from_str17h7bd2444656587a8eE?_ZN13rquickjs_core5value4atom4Atom8to_value17hd63cfc055ca80dd1EI_ZN13rquickjs_core5value4atom4Atom17from_atom_val_dup17h4b3bb4295faa33c7Ef_ZN71_$LT$rquickjs_core..value..atom..Atom$u20$as$u20$core..clone..Clone$GT$5clone17h78929859e51059dfEh_ZN74_$LT$rquickjs_core..value..atom..Atom$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7cc0f41537e6c2feE_ZN13rquickjs_core5value7convert4from97_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$core..option..Option$LT$T$GT$$GT$7from_js17h3b8ed79bece9be8cE_ZN13rquickjs_core5value7convert4from97_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$core..option..Option$LT$T$GT$$GT$7from_js17hf1823ac0a0f99210E?_ZN13rquickjs_core5value6module6Module4load17hb9ef3f83af3a246eE?_ZN13rquickjs_core5value6module6Module4eval17ha068375331393ae7EB_ZN13rquickjs_core5value7promise7Promise5state17h0db66240c6a6a30fED_ZN13rquickjs_core5value6string6String9to_string17h1c4bd4300f0e42a9EC_ZN13rquickjs_core5value6string6String8from_str17hfdc7d53285ba1c11Et_ZN87_$LT$rquickjs_core..value..array_buffer..AsSliceError$u20$as$u20$core..fmt..Display$GT$3fmt17hef2c92238b1f2255EN_ZN13rquickjs_core5value12array_buffer11ArrayBuffer6as_raw17hdd8450dfc87e5b25EO_ZN13rquickjs_core5value12array_buffer11ArrayBuffer7get_raw17h68d06e42b41d1296E_ZN118_$LT$rquickjs_core..context..builder..intrinsic..BaseObjects$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17hfd42a0c97beee4f6E_ZN111_$LT$rquickjs_core..context..builder..intrinsic..Date$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h05b6e20f03062661E_ZN111_$LT$rquickjs_core..context..builder..intrinsic..Eval$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h8c0cd9243f1d7ec3E_ZN121_$LT$rquickjs_core..context..builder..intrinsic..RegExpCompiler$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17hf5bef37a2de0243aE_ZN113_$LT$rquickjs_core..context..builder..intrinsic..RegExp$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17ha60071826fb6faeeE_ZN111_$LT$rquickjs_core..context..builder..intrinsic..Json$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17hd6afbe9d9d5559a7E_ZN112_$LT$rquickjs_core..context..builder..intrinsic..Proxy$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17hcb70cbc862ee5bd5E_ZN113_$LT$rquickjs_core..context..builder..intrinsic..MapSet$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h33a9a5ebf65329c5E_ZN118_$LT$rquickjs_core..context..builder..intrinsic..TypedArrays$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17hc491ab798004f7eaE_ZN114_$LT$rquickjs_core..context..builder..intrinsic..Promise$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h1d93074479c405e2E_ZN113_$LT$rquickjs_core..context..builder..intrinsic..BigInt$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h507ba4adb1255ec8E_ZN115_$LT$rquickjs_core..context..builder..intrinsic..BigFloat$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h9157debcedd4be4fE_ZN117_$LT$rquickjs_core..context..builder..intrinsic..BigDecimal$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h34bde874dbdcf7f8E_ZN116_$LT$rquickjs_core..context..builder..intrinsic..BignumExt$u20$as$u20$rquickjs_core..context..builder..Intrinsic$GT$13add_intrinsic17h4ea3e119989c8a38E5_ZN4core9panicking13assert_failed17ha2d17e6f66d77d00E_ZN13rquickjs_core5value7convert4atom77_$LT$impl$u20$rquickjs_core..value..convert..IntoAtom$u20$for$u20$$RF$str$GT$9into_atom17hfd8f7ccd1b4f5cf2E_ZN13rquickjs_core5value7convert4from76_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$$LP$$RP$$GT$7from_js17hf1bfaffa9123a4aaEL_ZN13rquickjs_core5value8function3ffi17js_callback_class17h97c81653b1a688d9E_ZN99_$LT$rquickjs_core..value..function..ffi..RustFunction$u20$as$u20$rquickjs_core..class..JsClass$GT$9prototype17hb2269120b5800fb0EB_ZN13rquickjs_core7runtime3raw10RawRuntime3new17hcc33a3eb7a728304EN_ZN13rquickjs_core7runtime3raw10RawRuntime14is_job_pending17hedc89266be18801dEP_ZN13rquickjs_core7runtime3raw10RawRuntime16set_gc_threshold17h7570c38d6ba8ba88E:_ZN13rquickjs_core5class3ffi9finalizer17hb8d62e2328771819E6_ZN13rquickjs_core5class3ffi5trace17h52fdb1393f9095cdE;_ZN13rquickjs_core5class2id7ClassId3get17hcbe04a9f539b9a84E_ZN13rquickjs_core5value7convert4from73_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$usize$GT$7from_js17h599ca98e789e2c0aE_ZN13rquickjs_core5value7convert4from72_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$bool$GT$7from_js17hb15ce9c3bcb92909E_ZN192_$LT$$LT$rquickjs_core..value..function..ffi..RustFunction$u20$as$u20$rquickjs_core..class..JsClass$GT$..function..CarryFunction$u20$as$u20$rquickjs_core..value..function..StaticJsFunction$GT$4call17hf91bc7221cf4f66bEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hb3454db21146f138EI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17hf6d5e4c6d1cfed29E`_ZN67_$LT$rquickjs_core..result..Error$u20$as$u20$core..fmt..Display$GT$3fmt17hf7e8f2dbc123e1dfEL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2d2d73a33e48d624ES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hf87720f54a6074f5ER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE9_ZN13rquickjs_core6result5Error5throw17h2bc20af9c9066b7dEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h5239ef97c6c535efEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h61cc9fc097b7ce32EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h95bc0df60c3ffabaEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hebf121f729d43fb1E^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17hde970c8e789a879eE0_ZN4core3fmt5Write9write_fmt17hcda462dde280b2ddEL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2d2d73a33e48d624ES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hf87720f54a6074f5E__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aEF_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h851cf61c38c451e2Ed_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h62ca1de2b969e61bE_ZN13rquickjs_core5value7convert6coerce150_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$rquickjs_core..value..convert..Coerced$LT$rquickjs_core..value..string..String$GT$$GT$7from_js17hb7266e373fff26c2E_ZN13rquickjs_core5value7convert6coerce135_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$rquickjs_core..value..convert..Coerced$LT$alloc..string..String$GT$$GT$7from_js17ha5da5987204d5605E_ZN13rquickjs_core5value7convert4into89_$LT$impl$u20$rquickjs_core..value..convert..IntoJs$u20$for$u20$alloc..string..String$GT$7into_js17h2cffd1c8fefaf99dEG_ZN13rquickjs_core5value6symbol6Symbol11description17he1b852612802bfbaE?_ZN13rquickjs_core7runtime4base7Runtime3new17h8744f9679477f079EM_ZN13rquickjs_core7runtime4base7Runtime16set_gc_threshold17ha351e80acda2208dE_ZN13rquickjs_core5value7convert6coerce117_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$rquickjs_core..value..convert..Coerced$LT$i32$GT$$GT$7from_js17h1a6dfdaa90104cfaE?_ZN3std3sys4sync4once10no_threads4Once4call17h20643021285599deEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h06ed43c1026679e5EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h35b3efc686578337EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h3a0d07d1428bdc21EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h5017fabc2c1389a1EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h79e2ded41a23ff26EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hb4fdc304276f85faEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hc50484cc924f0092EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hd0696d90bf98fa3dEM_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17he21551635a0e7c78E^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17hde970c8e789a879eER_ZN4core3ptr48drop_in_place$LT$alloc..ffi..c_str..NulError$GT$17ha634b62a56513326ES_ZN4core3ptr49drop_in_place$LT$rquickjs_core..result..Error$GT$17hf87720f54a6074f5E]_ZN64_$LT$alloc..ffi..c_str..NulError$u20$as$u20$core..fmt..Debug$GT$3fmt17he501c9f0204c6944Eo_ZN13rquickjs_core6result50_$LT$impl$u20$rquickjs_core..context..ctx..Ctx$GT$12handle_panic17h4fed012c8c2339eeEs_ZN13rquickjs_core6result50_$LT$impl$u20$rquickjs_core..context..ctx..Ctx$GT$16handle_exception17h00531a01e7a67968Er_ZN13rquickjs_core6result50_$LT$impl$u20$rquickjs_core..context..ctx..Ctx$GT$15raise_exception17h66062d37a5486c83EB_ZN13rquickjs_core8safe_ref12Mut$LT$T$GT$4lock17h02526857293287a0E_ZN102_$LT$rquickjs_core..context..ctx..Ctx$u20$as$u20$rquickjs_core..value..function..params..FromParam$GT$10from_param17hc12ba542edc6f0d3ED_ZN13rquickjs_core7context4base7Context8init_raw17h53a6a54857cc22dcEf_ZN71_$LT$rquickjs_core..context..ctx..Ctx$u20$as$u20$core..clone..Clone$GT$5clone17h2a6b31ba754cb4edEh_ZN74_$LT$rquickjs_core..context..ctx..Ctx$u20$as$u20$core..ops..drop..Drop$GT$4drop17h9cca0cb7a6c45551E?_ZN13rquickjs_core7context3ctx3Ctx8from_ptr17hd585a686c99b28b3E:_ZN13rquickjs_core7context3ctx3Ctx3new17h242f15e506f55ed8E>_ZN13rquickjs_core7context3ctx3Ctx7globals17he84b9484a928a578E<_ZN13rquickjs_core7context3ctx3Ctx5catch17h3ac8b88f25513d6aE<_ZN13rquickjs_core7context3ctx3Ctx5throw17h99d5ce9808cd64d4EB_ZN13rquickjs_core7context3ctx3Ctx10get_opaque17hfbdbd5a8f684b764EJ_ZN13rquickjs_core7context3ctx3Ctx18from_raw_invariant17h957efaebb3512eeaEI_ZN13rquickjs_core5class4cell15JsCell$LT$T$GT$6borrow17h0ff11147bbac5693Es_ZN85_$LT$rquickjs_core..class..cell..Borrow$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h147e84b6e6324ba4E^_ZN65_$LT$rquickjs_core..result..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h209924c984b2949cEQ_ZN13rquickjs_core7context3ctx3Ctx17eval_with_options7no_null17h00805c2660145a2fE>_ZN13rquickjs_core5value6object6Object3new17h2f55e0bc393b2686E>_ZN13rquickjs_core5value6object6Object3get17h45f43f7fe9bb46dbE>_ZN13rquickjs_core5value6object6Object3get17hd858ad563549b7c1E>_ZN13rquickjs_core5value6object6Object3get17hdcf9072778c42eb1E>_ZN13rquickjs_core5value6object6Object3set17h913b5efc44978db7E>_ZN13rquickjs_core5value6object6Object3set17hb686e3dbba3ebcd6EA_ZN13rquickjs_core5value6object9IterState3new17h299e9ab2a0051f02Eo_ZN81_$LT$rquickjs_core..value..object..IterState$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2ef27a3d0383ebe6E_ZN98_$LT$rquickjs_core..value..object..IterState$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h67883f8e121ee522E_ZN13rquickjs_core5value12array_buffer54_$LT$impl$u20$rquickjs_core..value..object..Object$GT$15as_array_buffer17h970f44ce108f62c5Ep_ZN13rquickjs_core5class54_$LT$impl$u20$rquickjs_core..value..object..Object$GT$10into_class17ha1bec1c5caa4f7c9Ep_ZN13rquickjs_core5value54_$LT$impl$u20$rquickjs_core..value..object..Object$GT$10from_value17h069b14363882ae5cEs_ZN13rquickjs_core5value54_$LT$impl$u20$rquickjs_core..value..object..Object$GT$13into_js_value17h5d939e0785222123E_ZN13rquickjs_core5value104_$LT$impl$u20$rquickjs_core..value..convert..FromJs$u20$for$u20$rquickjs_core..value..object..Object$GT$7from_js17hf7344737d2a9fe25Epstrcpypstrcatstrstart dbuf_init2dbuf_default_realloc dbuf_reallocdbuf_put dbuf_put_self dbuf_putc dbuf_putstr dbuf_printf dbuf_freeunicode_to_utf8unicode_from_utf8 utf8_str_lenrqsortexchange_int128sexchange_one_int128exchange_one_int32exchange_int32sexchange_one_int16exchange_int16sexchange_one_byteexchange_bytesexchange_one_int64exchange_int64s lre_case_convlre_case_conv_entrylre_canonicalize lre_is_casedlre_is_in_tablelre_is_case_ignorablecr_initcr_default_realloccr_free cr_realloccr_op cr_union1 cr_invertlre_is_id_startlre_is_id_continueunicode_normalize to_nfd_recunicode_get_ccunicode_decomp_entryunicode_scriptcr_add_intervalcr_regexp_canonicalize unicode_case1cr_sort_and_remove_overlap point_cmpunicode_general_categoryunicode_general_category1 unicode_propunicode_prop_ops unicode_prop1 lre_is_spacelre_parse_escape lre_compilere_parse_disjunctionre_parse_errorre_emit_op_u32 re_parse_termlre_execlre_exec_backtrack lre_get_flagslre_get_capture_countlre_get_groupnames dbuf_insertre_parse_group_namefind_group_namere_has_named_capturesre_parse_capturesre_count_capturesget_class_atom re_emit_rangere_is_simple_quantifierre_need_check_advance re_emit_goto js_realloc_rt js_mallocJS_ThrowInternalErrorJS_ThrowOutOfMemory js_malloczjs_free js_realloc js_strndupJS_NewRuntime2js_malloc_usable_size_unknown js_bf_reallocinvalid_mul_pow10invalid_mul_pow10_to_float64invalid_binary_arithinvalid_unary_arithinvalid_from_stringinvalid_to_string __JS_NewAtom JS_NewClass1js_c_function_data_calljs_call_c_functionjs_generator_function_calljs_call_bound_functionJS_FreeRuntimejs_create_iterator_result__JS_ToFloat64FreeJS_ThrowTypeError js_strict_eq2JS_CallConstructorInternalJS_CallInternalasync_func_initclose_var_refsasync_func_free_frame__JS_FreeValueRTjs_create_from_ctorfree_generator_stack_rtJS_RunGCJS_FreeAtomStructJS_GetRuntimeOpaqueJS_SetRuntimeOpaque JS_NewRuntimeJS_SetGCThreshold JS_EnqueueJobJS_IsJobPending JS_FreeValuegc_decref_childgc_scan_incref_childgc_scan_incref_child2free_gc_objectJS_NewContextRaw js_new_shape2JS_NewObjectFromShapejs_function_protoJS_NewCFunction3JS_SetPropertyFunctionList JS_NewAtomLenJS_DefineProperty__JS_AtomToValueadd_shape_propertyJS_AddIntrinsicBaseObjectsJS_AddIntrinsicDate__JS_EvalInternalJS_AddIntrinsicRegExpJS_AddIntrinsicProxyJS_AddIntrinsicMapSetJS_AddIntrinsicTypedArraysJS_AddIntrinsicPromiseJS_AddIntrinsicBigIntjs_throw_type_errorjs_function_proto_callerjs_object_sealjs_object_constructorJS_NewGlobalCConstructor2js_function_constructorjs_error_constructorjs_array_constructorJS_GetPropertyInternalJS_SetObjectDatajs_number_constructorjs_boolean_constructorjs_string_constructorjs_symbol_constructorJS_AtomGetStrRTJS_DefinePropertyValueStrJS_SetConstructor2js_global_evaljs_date_constructorJS_AddIntrinsicEvaljs_compile_regexpjs_regexp_constructorJS_AddIntrinsicJSON js_proxy_markjs_proxy_finalizer js_proxy_calljs_proxy_constructorjs_map_constructorjs_array_buffer_constructor"js_shared_array_buffer_constructorjs_typed_array_base_constructorjs_typed_array_constructorjs_dataview_constructor js_async_generator_function_calljs_async_function_resolve_calljs_async_function_call js_promise_resolve_function_calljs_promise_constructorjs_bigint_to_stringjs_compare_bigfloatjs_binary_arith_bigintjs_unary_arith_bigintjs_string_to_bigintjs_bigint_constructorJS_SetClassProto set_valueJS_GetClassProtoJS_GetFunctionProto JS_DupContextJS_FreeContextjs_free_module_defjs_free_shape0 JS_GetRuntime JS_DupAtomJS_NewStringLen JS_NewAtomStrstring_buffer_reallocstring_buffer_putc_slowJS_NewAtomUInt32JS_ResizeAtomHashJS_AtomToString JS_FreeAtomJS_ToCStringLen2 JS_NewClassID JS_GetClassIDJS_IsRegisteredClass JS_NewClassJS_ThrowError2string_buffer_putc8string_buffer_putc16string_buffer_endJS_ToStringInternal JS_ToStringJS_FreeCStringJS_NewObjectProtoClass add_propertyJS_NewObjectClassJS_NewObjectProto JS_NewArray JS_NewObjectJS_NewCFunctionData JS_SetOpaquefree_zero_refcount__JS_FreeValueJS_GetGlobalObjectJS_ThrowJS_GetExceptionfind_column_num JS_NewErrorJS_ThrowSyntaxErrorJS_ThrowReferenceErrorJS_ThrowRangeErrorJS_SetPrototypeInternaljs_proxy_setPrototypeOfjs_clone_shapeJS_GetPrototypejs_proxy_getPrototypeOfjs_proxy_isExtensibleJS_GetPrototypePrimitiveJS_IsInstanceOf JS_ToBoolFreeJS_OrdinaryIsInstanceOf JS_CallFree JS_IsFunction__js_poll_interrupts__JS_ThrowTypeErrorAtomjs_new_string_char#JS_ThrowReferenceErrorUninitializedJS_AutoInitPropertyJS_GetPropertyValueJS_AtomIsNumericIndex JS_ThrowReferenceErrorNotDefinedJS_GetPropertyUint32JS_AtomIsNumericIndex1JS_GetOwnPropertyNamesJS_GetOwnPropertyNamesInternalJS_AtomIsArrayIndexJS_GetOwnPropertyInternal num_keys_cmpjs_proxy_preventExtensionsJS_HasPropertyJS_ValueToAtomJS_NewBigInt64_1JS_NewBigUint64JS_SetPropertyInternalset_array_length call_setterJS_SetPropertyValueJS_ThrowTypeErrorOrFalseadd_fast_array_elementJS_CreatePropertyJS_ThrowTypeErrorReadOnlyJS_ToBigInt64FreeJS_ToNumberHintFreeJS_ToArrayLengthFreeJS_ToInt32Freedelete_propertyJS_ToBigIntFreeJS_ToUint8ClampFreeconvert_fast_array_to_arrayjs_shape_prepare_update free_var_ref js_same_valuejs_update_property_flags JS_ToFloat64JS_NumberIsNegativeOrMinusZeroexpand_fast_arrayJS_SetPropertyUint32JS_SetPropertyInt64JS_NewAtomInt64check_define_prop_flagsresize_propertiesjs_string_compareJS_DefinePropertyValueJS_DefinePropertyValueValueJS_DefinePropertyValueInt64JS_DeleteProperty JS_ToObject free_propertyJS_DeletePropertyInt64JS_IsConstructor JS_IsError JS_GetOpaque JS_GetOpaque2JS_ToFloat64FreeJS_ToInt32SatFreeJS_ToInt32ClampJS_ToInt64SatFreeJS_ToInt64Clamp JS_ToInt64 JS_ToInt32 JS_ToIndexJS_ToPrimitiveFreejs_dtoa1js_dtoa JS_IsArrayjs_proxy_isArrayJS_NewBigInt64JS_Call js_closurejs_build_argumentsjs_build_mapped_argumentsjs_import_metajs_function_apply JS_CheckBrand__JS_ThrowSyntaxErrorAtombuild_arg_listjs_regexp_constructor_internaljs_new_promise_capabilityjs_dynamic_import_jobJS_SetGlobalVar get_var_refJS_GetPrototypeFreeJS_GetIteratorJS_IteratorNextJS_IteratorCloseJS_DefineObjectNameJS_DefineObjectNameComputedJS_ConcatString3 js_closure2js_create_array_iteratorjs_array_iterator_nextjs_get_length32JS_CopyDataPropertiesJS_ConcatString js_add_slowJS_ConcatStringInPlacejs_binary_arith_slowjs_unary_arith_slow js_not_slowjs_binary_logic_slow js_shr_slowjs_relational_slow js_eq_slowjs_strict_eq_slowbuild_backtraceJS_CallConstructor2JS_CallConstructor JS_Invokejs_parse_errorsimple_next_tokenlre_js_is_ident_nextadd_export_entry2js_realloc_arrayJS_GetModuleNamespaceget_exported_namesexported_names_cmpjs_resolve_export1JS_LoadModuleInternaljs_host_resolve_imported_modulejs_resolve_moduleJS_EvalFunctionInternaljs_load_module_fulfilledjs_load_module_rejectedjs_promise_thenJS_EvalFunctionjs_create_module_functionjs_inner_module_linkingjs_inner_module_evaluationJS_EvalJS_WriteObject2JS_WriteObjectRecJS_WriteStringbc_atom_to_idx bc_put_atom bc_put_leb128js_object_list_resize_hashJS_WriteObjectTagJS_WriteArrayBufferJS_WriteSharedArrayBuffer JS_WriteTypedArray JS_WriteArray JS_WriteObject JS_ReadObject JS_ReadString JS_ReadObjectRec bc_get_atom bc_get_leb128_u16 bc_get_leb128_int bc_get_u8 JS_ReadFunctionBytecode bc_get_buf JS_ReadSharedArrayBuffer js_array_buffer_free js_array_buffer_constructor3 js_get_array_buffer find_atom string_buffer_init2 string_buffer_putc lre_check_stack_overflow lre_realloc JS_AddIntrinsicRegExpCompiler JS_ParseJSON2 json_next_token json_parse_value free_token js_atof2 ident_realloc js_parse_string json_parse_expect JS_JSONStringify JS_GetPropertyInt64 JS_ToStringFree js_array_includes js_sub_string js_json_check js_json_to_str js_get_length64 js_array_push check_exception_free string_buffer_concat_value JS_GetOwnPropertyNames2 JS_ToQuotedStringFree js_array_pop JS_ToQuotedString string_buffer_concat_value_free js_create_array JS_PromiseState JS_PromiseResult js_promise_executor fulfill_or_reject_promise js_promise_resolve_thenable_job js_async_function_resume js_async_generator_free js_create_resolving_functions JS_GetFunctionRealm js_Date_parse set_date_fields get_date_string js_new_function_def push_scope next_token js_parse_directives js_parse_source_element emit_op emit_return js_create_function js_free_function_def js_bigint_to_string1 JS_CompactBigInt1 throw_bf_exception js_call_binary_op_simple JS_FreeBigInt JS_NewBigFloat JS_ToBigFloat JS_StringToBigInt JS_AddIntrinsicBigFloat js_bigfloat_to_string js_mul_pow10 js_mul_pow10_to_float64 js_binary_arith_bigfloat js_unary_arith_bigfloat js_string_to_bigfloat js_bigfloat_constructor js_float_env_constructor js_ftoa skip_spaces JS_AddIntrinsicBigDecimal js_bigdecimal_to_string js_compare_bigdecimal js_binary_arith_bigdecimal js_unary_arith_bigdecimal js_string_to_bigdecimal js_bigdecimal_constructor js_bigdecimal_to_string1 JS_ToBigDecimalFree JS_EnableBignumExt JS_NewArrayBuffer JS_GetArrayBuffer js_typed_array_constructor_ta js_array_finalizer js_array_mark js_object_data_finalizer js_object_data_mark js_c_function_finalizer js_c_function_mark js_bytecode_function_finalizer js_bytecode_function_mark js_bound_function_finalizer js_bound_function_mark js_c_function_data_finalizer js_c_function_data_mark js_for_in_iterator_finalizer js_for_in_iterator_mark js_regexp_finalizer js_array_buffer_finalizer js_typed_array_finalizer js_typed_array_mark js_float_env_finalizer js_operator_set_finalizer js_operator_set_mark js_map_finalizer js_map_mark js_map_iterator_finalizer js_map_iterator_mark js_array_iterator_finalizer js_array_iterator_mark #js_regexp_string_iterator_finalizer js_regexp_string_iterator_mark js_generator_finalizer js_generator_mark js_def_malloc js_def_free js_def_realloc js_def_malloc_usable_size string_buffer_widen reset_weak_ref js_instantiate_prototype js_module_ns_autoinit JS_InstantiateFunctionListItem2 js_free_prop_enum js_free_desc js_arguments_define_own_property js_call_binary_op_fallback js_call_unary_op_fallback JS_IteratorNext2 JS_IteratorGetCompleteValue string_buffer_concat JS_CreateDataPropertyUint32 get_ovop_from_opcode js_pow js_module_ns_has JS_SpeciesConstructor perform_promise_then promise_reaction_job js_create_module_var js_execute_async_module js_execute_sync_module #js_async_module_execution_fulfilled "js_async_module_execution_rejected gather_available_ancestors exec_module_list_cmp js_string_get_own_property js_string_delete_property js_string_define_own_property js_string_normalize1 js_regexp_get_flags js_regexp_get_source js_regexp_get_flag js_regexp_exec js_regexp_compile js_regexp_test JS_RegExpExec js_regexp_toString js_regexp_Symbol_replace js_is_standard_regexp JS_RegExpDelete JS_ToLengthFree string_advance_index js_string___GetSubstitution js_regexp_Symbol_match js_regexp_Symbol_matchAll string_indexof_char js_regexp_Symbol_search js_regexp_Symbol_split js_get_this js_regexp_string_iterator_next JS_CopySubArray js_object_keys JS_TryGetPropertyInt64 js_json_parse internalize_json_property js_json_stringify js_proxy_get_own_property js_obj_to_desc js_proxy_get_own_property_names js_proxy_delete_property js_proxy_define_own_property js_proxy_has js_proxy_get js_proxy_set js_proxy_revocable js_proxy_revoke js_map_set map_find_record map_hash_key js_map_get js_map_has js_map_delete map_delete_record js_map_clear js_map_get_size js_map_forEach js_create_map_iterator js_map_iterator_next js_object_groupBy js_promise_finalizer js_promise_mark %js_promise_resolve_function_finalizer js_promise_resolve_function_mark #js_async_function_resolve_finalizer js_async_function_resolve_mark %js_async_from_sync_iterator_finalizer js_async_from_sync_iterator_mark js_async_generator_finalizer js_async_generator_mark js_promise_resolve js_promise_catch js_promise_finally js_promise_then_finally_func js_promise_finally_thrower js_promise_finally_value_thunk JS_InvokeFree js_promise_all js_promise_all_resolve_element remainingElementsCount_add js_aggregate_error_constructor js_promise_race js_promise_withResolvers js_iterator_proto_iterator js_async_from_sync_iterator_next .js_async_from_sync_iterator_unwrap_func_create "js_async_from_sync_iterator_unwrap js_async_generator_next js_async_generator_resume_next js_async_generator_resolve #js_async_generator_completed_return $js_async_generator_resolve_or_reject #js_async_generator_resolve_function js_date_getTime get_date_fields js_date_Symbol_toPrimitive js_date_getTimezoneOffset get_date_field js_date_setTime set_date_field js_date_setYear js_date_toJSON string_get_milliseconds string_get_tzoffset js_Date_now js_Date_UTC add_func_var get_closure_var2 resolve_scope_var resolve_scope_private_field1 js_atom_concat_str code_match skip_dead_code resolve_labels ss_check js_parse_template_part parse_ident update_token_ident add_var js_parse_class add_import js_parse_expect js_parse_from_clause js_parse_statement_or_decl js_parse_function_decl2 add_req_module_entry add_star_export_entry js_parse_var js_parse_assign_expr2 set_object_name define_var js_parse_expect_semi emit_atom emit_goto emit_label pop_scope js_parse_expr2 set_eval_ret_undefined js_parse_expr_paren js_parse_skip_parens_token js_parse_for_in_of is_let close_scopes new_label emit_break js_parse_block js_is_live_code js_define_var js_parse_destructuring_element add_scope_var emit_class_field_init "js_parse_error_reserved_identifier "js_parse_check_duplicate_parameter js_parse_function_check_names cpool_add add_global_var find_var js_parse_regexp js_parse_property_name js_parse_destructuring_var js_parse_postfix_expr get_lvalue put_lvalue js_emit_spread_code emit_push_const js_parse_expr set_object_name_computed js_parse_template optional_chain_test emit_class_init_start js_parse_class_default_ctor emit_class_init_end find_private_class_field add_private_class_field js_atom_concat_num js_parse_logical_and_or js_parse_expr_binary js_parse_unary put_short_code find_jump_target add_pc2line_info push_short_int var_object_test resolve_pseudo_var optimize_scope_make_global_ref optimize_scope_make_ref js_bigint_toString js_bigint_valueOf js_get_radix js_bigint_asUintN js_bigint_div js_bigint_sqrt js_bigint_op1 js_bigfloat_toString js_bigfloat_valueOf js_bigfloat_toPrecision bigfloat_get_rnd_mode js_bigfloat_toFixed js_bigfloat_toExponential js_bigfloat_get_const js_bigfloat_parseFloat js_bigfloat_isFinite js_bigfloat_isNaN js_bigfloat_fop js_bigfloat_fop2 js_float_env_proto_get_status js_float_env_proto_set_status js_float_env_clearStatus js_float_env_get_prec js_float_env_get_expBits js_float_env_setPrec js_bigdecimal_toString js_bigdecimal_valueOf js_bigdecimal_toPrecision js_bigdecimal_get_rnd_mode js_bigdecimal_toFixed js_bigdecimal_toExponential js_bigdecimal_fop js_error_toString js_object_create JS_ObjectDefineProperties js_object_getPrototypeOf js_object_setPrototypeOf js_object_defineProperty JS_DefinePropertyDesc js_object_defineProperties js_object_getOwnPropertyNames js_object_getOwnPropertySymbols js_object_isExtensible js_object_preventExtensions "js_object_getOwnPropertyDescriptor #js_object_getOwnPropertyDescriptors js_object_is js_object_assign js_object_isSealed js_object___getClass js_object_fromEntries js_object_hasOwn js_object_toString js_object_toLocaleString js_object_valueOf js_object_hasOwnProperty js_object_isPrototypeOf js_object_propertyIsEnumerable js_object_get___proto__ js_object_set___proto__ js_object___defineGetter__ js_object___lookupGetter__ js_function_call js_function_bind js_function_toString js_function_hasInstance js_function_proto_fileName js_function_proto_lineNumber js_function_proto_columnNumber js_array_at js_array_with js_allocate_fast_array js_array_concat JS_ArraySpeciesCreate js_array_every js_typed_array___speciesCreate js_array_reduce js_array_fill js_array_find js_array_indexOf js_array_lastIndexOf js_array_join js_array_toString js_array_reverse js_array_toReversed js_array_sort js_array_cmp_generic js_array_toSorted js_array_slice js_array_toSpliced js_array_copyWithin js_array_flatten JS_FlattenIntoArray js_typed_array_create js_array_isArray js_array_from js_array_of js_parseInt js_parseFloat js_global_isNaN js_global_isFinite js_global_decodeURI hex_decode js_throw_URIError js_global_encodeURI encodeURI_hex js_global_escape js_global_unescape js_number_toExponential js_number_toFixed js_number_toPrecision js_number_toString js_number_valueOf js_number_isNaN js_number_isFinite js_number_isInteger js_number_isSafeInteger js_boolean_toString js_boolean_valueOf js_string_fromCharCode js_string_fromCodePoint js_string_raw js_string_charAt js_string_charCodeAt js_string_concat js_string_codePointAt js_string_isWellFormed js_string_toWellFormed js_string_indexOf js_string_includes js_string_match check_regexp_g_flag js_string_split string_indexof js_string_substring js_string_substr js_string_slice js_string_repeat string_buffer_fill js_string_replace js_string_pad js_string_trim js_string_toString js_string___quote js_string_localeCompare js_string_toLowerCase js_string_CreateHTML js_string_iterator_next js_math_min_max js_math_round js_math_sign js_math_hypot js_math_random js_math_fround js_math_imul js_math_clz32 js_reflect_apply js_reflect_construct js_reflect_deleteProperty js_reflect_get js_reflect_has js_reflect_ownKeys js_reflect_set js_reflect_setPrototypeOf js_symbol_toString js_symbol_valueOf js_symbol_get_description js_symbol_for js_symbol_keyFor js_generator_next js_array_buffer_get_byteLength js_array_buffer_slice js_array_buffer_isView js_typed_array_get_length js_typed_array_at js_typed_array_with js_typed_array_get_buffer js_typed_array_get_byteLength js_typed_array_get_byteOffset js_typed_array_set js_create_typed_array_iterator js_typed_array_get_toStringTag js_typed_array_copyWithin js_typed_array_fill js_typed_array_find js_typed_array_reverse js_typed_array_toReversed js_typed_array_slice validate_typed_array js_typed_array_subarray js_typed_array_sort js_TA_cmp_generic js_typed_array_toSorted js_typed_array_join js_typed_array_indexOf typed_array_init js_TA_get_int8 js_TA_cmp_int8 js_TA_get_uint8 js_TA_cmp_uint8 js_TA_get_int16 js_TA_cmp_int16 js_TA_get_uint16 js_TA_cmp_uint16 js_TA_get_int32 js_TA_cmp_int32 js_TA_get_uint32 js_TA_cmp_uint32 js_TA_get_int64 js_TA_cmp_int64 js_TA_get_uint64 js_TA_cmp_uint64 js_TA_get_float32 js_TA_cmp_float32 js_TA_get_float64 js_TA_cmp_float64 js_typed_array_from js_typed_array_of js_dataview_getValue js_dataview_setValue bf_context_init bf_context_end bf_clear_cache bf_init bf_resize bf_set_ui bf_set_nan bf_set_si bf_set_zero bf_set_inf bf_set bf_normalize_and_round __bf_round bf_set_overflow bf_round bf_cmpu bf_cmp_full bf_cmp mp_mul fft_mul bf_get_fft_size limb_to_ntt ntt_conv ntt_to_limb mp_recip mp_divnorm bf_mul bf_mul_2exp bf_get_exp_min bf_divrem __bf_div bf_op2 bf_op2.45 bf_add_si bf_op2.44 bf_sub bf_rem bf_remquo mp_sqrtrem_rec mp_sqrtrem2 bf_sqrtrem bf_sqrt bf_rint bf_add bf_div bf_mul_ui bf_mul_si bf_logic_or bf_logic_op bf_logic_xor bf_logic_and bf_get_float64 bf_set_float64 bf_get_int32 bf_get_int64 bf_get_uint64 bf_mul_pow_radix bf_pow_ui_ui bf_pow_ui bf_atof2 bf_atof_internal bfdec_normalize_and_round bf_integer_from_radix bf_atof bf_mul_log2_radix bf_ftoa bf_ftoa_internal bf_dbuf_realloc __bfdec_round output_digits bf_convert_to_radix bf_const_log2 bf_const_log2_internal bf_const_get bf_const_log2_rec bf_const_pi bf_const_pi_internal bf_expcheck_exp_underflow_overflowbf_exp_internalbf_ziv_roundingbf_logbf_log_internalbf_powcheck_exact_power2n bf_pow_intbf_pow_genericbf_cos bf_sincosbf_sinbf_tanbf_tan_internalbf_atanbf_atan_internalbf_atan2bf_atan2_internalbf_asinbf_asin_internalbf_acosmp_mul_basecase_dec mp_div1_decmp_sqrtrem_rec_dec mp_div_dec bfdec_round bfdec_resize bfdec_set_ui bfdec_set_si bfdec_add __bfdec_addbfdec_add_internal bfdec_sub bf_op2.43 bfdec_mul bfdec_mul_si bfdec_add_si bfdec_div __bfdec_div bfdec_divrem bfdec_cmpu get_digit bfdec_rem bfdec_rint bfdec_sqrtbfdec_get_int32 bfdec_pow_ui bfdec_ftoa bfdec_atofbf_add_internalbf_integer_from_radix_recbf_integer_to_radix_recchud_bs bf_sqrt_sinntt_fft_partialntt_fftmul_trigget_trig_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h159e2d54131cb4beEI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h4352284eca17f936E0_ZN4core3fmt5Write9write_fmt17h683342528e71e3baEL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h389d54376dfdff43EN_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hf259bf93c618693bE._ZN4core5slice5index5range17he167985c8890b36dE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83EC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hfab158194c96a063E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE:_ZN5alloc6string6String13replace_range17h533a1d357c8d6907E2_ZN5alloc7raw_vec11finish_grow17h66eaea260f658206EK_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17h13cf71b57ece894aEY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h9299ce9d5d9168b1Eh_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h7ba0fda6659524fdEk_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h31fd13bf84afca31Ek_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h61abc432db4a9345EI_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_matches17ha32328be2abad2aaEo_ZN81_$LT$alloc..vec..splice..Splice$LT$I$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb66c48974cea2adfE}_ZN6anyhow5chain82_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$anyhow..Chain$GT$4next17haae243f559c55664Eh_ZN6anyhow5error62_$LT$impl$u20$core..fmt..Display$u20$for$u20$anyhow..Error$GT$3fmt17he28e04e8c0180f73Ef_ZN6anyhow5error60_$LT$impl$u20$core..fmt..Debug$u20$for$u20$anyhow..Error$GT$3fmt17hada6bd49f6b71a40El_ZN6anyhow5error65_$LT$impl$u20$core..ops..drop..Drop$u20$for$u20$anyhow..Error$GT$4drop17haa723f6f8933a8baE2_ZN4core3fmt5Write10write_char17h1e9a35bc09f8da93Ef_ZN67_$LT$anyhow..fmt..Indented$LT$T$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h16a372971334511cE0_ZN4core3fmt5Write9write_fmt17h4198271a1f39e489EF_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h1596928e49a19857E9_ZN5alloc3vec16Vec$LT$T$C$A$GT$5drain17h82e8e8a70c286a54E<_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17hf79ec3c73b512a84Ed_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7d08734fd041cee8Et_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0166ae62c54a8293Et_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c04628465c2814dE_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17h19e544a20096d534E_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$GT$9from_iter17hcd1322fe121686abE4_ZN4core3fmt9Formatter9write_fmt17h802f9ffd8f5ddb55EL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h389d54376dfdff43ER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE4_ZN5alloc6string6String8truncate17hefe2a5c8aa7c43c5EY_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17ha9ba8c42631e0963E4_ZN6anyhow5error9ErrorImpl5error17h6172c21dc9944200ET_ZN6anyhow3fmt42_$LT$impl$u20$anyhow..error..ErrorImpl$GT$5debug17h1a0cf59f11e89cc7EV_ZN6anyhow3fmt42_$LT$impl$u20$anyhow..error..ErrorImpl$GT$7display17he21ee3cff93308a2Ef_ZN5alloc3vec6splice55_$LT$impl$u20$alloc..vec..drain..Drain$LT$T$C$A$GT$$GT$4fill17h6f47cb8d135d0207Ef_ZN5alloc3vec6splice55_$LT$impl$u20$alloc..vec..drain..Drain$LT$T$C$A$GT$$GT$4fill17hfdd781579b1f4211Ek_ZN5alloc3vec6splice55_$LT$impl$u20$alloc..vec..drain..Drain$LT$T$C$A$GT$$GT$9move_tail17h808195f6e3a4da02Em_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h44932a3bb9210a92EE_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h08d9b2fe83e1d956EE_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h1095ce410adc101fEE_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17h18563e9cae83bb19EE_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17hae90ef06532fae20EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h25982a9598f8b78eEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h2cc639f8ab650329EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h4ed2de3e736e1c80EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h5c67958fad7b99a1EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hf2884d419915b3a7EI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h0733a3b685dc6d0eEI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h9d2cd46cf4dc5d54E\_ZN4core3fmt3num50_$LT$impl$u20$core..fmt..Debug$u20$for$u20$i32$GT$3fmt17h474e29c33a37a9c2E^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17hde970c8e789a879eE2_ZN4core3fmt5Write10write_char17h4d3dede2d28ae446Es_ZN80_$LT$std..io..Write..write_fmt..Adapter$LT$T$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h8caa9840fb3bf804E2_ZN4core3fmt5Write10write_char17h562d40b6adb80c97EY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h6c41788b49cc4567E2_ZN4core3fmt5Write10write_char17hdc628ee93e93fa88E`_ZN61_$LT$std..io..stdio..StderrLock$u20$as$u20$std..io..Write$GT$9write_all17h2201050ad18b5f50E2_ZN4core3fmt5Write10write_char17hfa8a4950ff3b2360E`_ZN61_$LT$std..io..stdio..StdoutLock$u20$as$u20$std..io..Write$GT$9write_all17ha9870daa825a49adE0_ZN4core3fmt5Write9write_fmt17h16c27a814ae30fbcE0_ZN4core3fmt5Write9write_fmt17h3b1c96c74fb5543dE0_ZN4core3fmt5Write9write_fmt17h3ccd32ccade0033fE0_ZN4core3fmt5Write9write_fmt17h6072faff8efe5cc0E0_ZN4core3fmt5Write9write_fmt17hd1875d9fa1f398d2E3_ZN3std9panicking12default_hook17h68409056c7d8af4dEZ_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h2c8b5536d9174cf0EB_ZN3std10sys_common9backtrace15output_filename17ha627bcc85d2c1d03E_ZN4core3ptr118drop_in_place$LT$$LT$std..backtrace..Backtrace$u20$as$u20$core..fmt..Display$GT$..fmt..$u7b$$u7b$closure$u7d$$u7d$$GT$17h91e33dcc97f7385cE>_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hf96288bb2908aba2EL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h55e24719e8a056abEi_ZN4core3ptr71drop_in_place$LT$std..panicking..rust_panic_without_hook..RewrapBox$GT$17ha5e5ecb0a0c4dd2aEo_ZN4core3ptr77drop_in_place$LT$std..panicking..begin_panic_handler..FormatStringPayload$GT$17hc737e4b332032fedEs_ZN4core3ptr81drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$std..io..error..Error$GT$$GT$17h5d854e0bba0c750bEz_ZN4core3ptr88drop_in_place$LT$std..io..Write..write_fmt..Adapter$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h50f89f6492f9b26fEB_ZN4core4cell4once17OnceCell$LT$T$GT$8try_init17hac2951c9c126a997E9_ZN3std6thread8ThreadId3new9exhausted17he10dc1cbcf2b941aE5_ZN4core9panicking13assert_failed17h666a74dd383b19f9EO_ZN50_$LT$$BP$mut$u20$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h039929795fadc3f4EW_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Debug$GT$3fmt17h64d941e021c149b8E__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83EC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h06dc16e0f80dbd42E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE>_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hf2eeb82ddbcf9fcfE2_ZN5alloc7raw_vec11finish_grow17h0177d5d875abff0eEY_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17ha9ba8c42631e0963E]_ZN64_$LT$core..str..error..Utf8Error$u20$as$u20$core..fmt..Debug$GT$3fmt17he670eae5db314858E._ZN3std2io5Write9write_fmt17had48db4995c7a5a8E@_ZN3std3sys3pal4wasi7helpers14abort_internal17h4701a3d5a8d78f8bE*_ZN3std6thread7current17hce8a8bff75eb9e98E'_ZN3std6thread4park17hc67ad76bdc7fa0ddE?_ZN3std3sys4sync4once10no_threads4Once4call17h85831befc27fd036El_ZN79_$LT$std..backtrace_rs..symbolize..SymbolName$u20$as$u20$core..fmt..Display$GT$3fmt17h9d80c2327d176e07E,_ZN3std3env11current_dir17h292161054bcb7ffeE7_ZN3std9backtrace9Backtrace7capture17hb4a66b76ddbcae68E'_ZN3std3env7_var_os17ha50bf6cb63644954E]_ZN64_$LT$std..backtrace..Backtrace$u20$as$u20$core..fmt..Display$GT$3fmt17h3cb7c9cddb3805b5EY_ZN3std12backtrace_rs5print17BacktraceFrameFmt21print_raw_with_column17hace29ee2001fe48cE{_ZN64_$LT$std..backtrace..Backtrace$u20$as$u20$core..fmt..Display$GT$3fmt28_$u7b$$u7b$closure$u7d$$u7d$17h7e7a464bc4011852ET_ZN3std3sys3pal6common14small_c_string24run_with_cstr_allocating17hba2c937f1e0aa6a9EY_ZN60_$LT$std..io..error..Error$u20$as$u20$core..fmt..Display$GT$3fmt17hf05a34fd688607a6Eb_ZN69_$LT$std..sys..os_str..bytes..Slice$u20$as$u20$core..fmt..Display$GT$3fmt17hb4307af5df55a3e4EY_ZN61_$LT$std..path..Component$u20$as$u20$core..cmp..PartialEq$GT$2eq17he482980234c4f4ecEC_ZN3std3sys3pal4wasi7helpers17decode_error_kind17hf2314238eb6e8382E4_ZN3std4path10Components7as_path17h4509b1ec49719100Ep_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$u20$as$u20$std..io..Read$GT$4read17ha2972b9ccad47addEx_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$u20$as$u20$std..io..Read$GT$11read_to_end17h210060d00f460288E3_ZN3std2io19default_read_to_end17h35e2f84fd3dc3936EQ_ZN3std2io8buffered9bufwriter18BufWriter$LT$W$GT$10write_cold17h3bfefefd03de40c1EU_ZN3std2io8buffered9bufwriter18BufWriter$LT$W$GT$14write_all_cold17h48da1c18e0722cb5EW_ZN58_$LT$std..io..error..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h3b6bd31946f424a4E|_ZN3std2io5error82_$LT$impl$u20$core..fmt..Debug$u20$for$u20$std..io..error..repr_unpacked..Repr$GT$3fmt17h7f2fa7bc50edbf59E9_ZN3std3sys3pal4wasi2os12error_string17h8faa973cb2fa15a3Eb_ZN60_$LT$std..io..error..Error$u20$as$u20$core..error..Error$GT$11description17hc95fbc0a21fe5948E[_ZN60_$LT$std..io..error..Error$u20$as$u20$core..error..Error$GT$5cause17h656813b7d7bae00eE\_ZN60_$LT$std..io..error..Error$u20$as$u20$core..error..Error$GT$6source17h8a91d506cd178beeE*_ZN3std2io5stdio5stdin17hf5e04ee3b74f4792EI_ZN3std4sync9once_lock17OnceLock$LT$T$GT$10initialize17h60a25e87731835c9EU_ZN55_$LT$std..io..stdio..Stdin$u20$as$u20$std..io..Read$GT$4read17h8d7cea933262e447E]_ZN55_$LT$std..io..stdio..Stdin$u20$as$u20$std..io..Read$GT$11read_to_end17hc8cfc8b0f30df95cE+_ZN3std2io5stdio6stdout17h75990705c612b280EI_ZN3std4sync9once_lock17OnceLock$LT$T$GT$10initialize17h296160441532a998EX_ZN57_$LT$std..io..stdio..Stdout$u20$as$u20$std..io..Write$GT$5write17h919f0126ed7d47feE\_ZN61_$LT$std..io..stdio..StdoutLock$u20$as$u20$std..io..Write$GT$5write17hf114e0a3a3bebd90EX_ZN57_$LT$std..io..stdio..Stdout$u20$as$u20$std..io..Write$GT$5flush17h07dfc9082c1879d5E\_ZN61_$LT$std..io..stdio..StdoutLock$u20$as$u20$std..io..Write$GT$5flush17h13b3d71429b4d4daE\_ZN57_$LT$std..io..stdio..Stdout$u20$as$u20$std..io..Write$GT$9write_all17hdca17aa7812a8418E\_ZN57_$LT$std..io..stdio..Stdout$u20$as$u20$std..io..Write$GT$9write_fmt17hfb994a7452d7d6e3E`_ZN61_$LT$$RF$std..io..stdio..Stdout$u20$as$u20$std..io..Write$GT$9write_fmt17he26b7575bc123e42EX_ZN57_$LT$std..io..stdio..Stderr$u20$as$u20$std..io..Write$GT$5write17h7275b25d9e45010dE\_ZN61_$LT$$RF$std..io..stdio..Stderr$u20$as$u20$std..io..Write$GT$5write17h8d45e4a4e927d2afEX_ZN57_$LT$std..io..stdio..Stderr$u20$as$u20$std..io..Write$GT$5flush17h01d96619cb7ef6c2E\_ZN61_$LT$$RF$std..io..stdio..Stderr$u20$as$u20$std..io..Write$GT$5flush17haa4935f0a8af64f8E\_ZN57_$LT$std..io..stdio..Stderr$u20$as$u20$std..io..Write$GT$9write_fmt17h2d3a5ef5f0a231fdE`_ZN61_$LT$$RF$std..io..stdio..Stderr$u20$as$u20$std..io..Write$GT$9write_fmt17h02c910b37935ab6bE]_ZN3std3sys12thread_local12static_local20LazyStorage$LT$T$GT$10initialize17haef55f6b271ee756EE_ZN3std2io5stdio31print_to_buffer_if_capture_used17hda9e217d1ed1bc18E._ZN3std2io5Write9write_fmt17ha9724c34ed683e1aE,_ZN3std2io5stdio7_eprint17hd7c6f616d69809dfEs_ZN80_$LT$std..io..Write..write_fmt..Adapter$LT$T$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h74e8f241f9389f0bEs_ZN80_$LT$std..io..Write..write_fmt..Adapter$LT$T$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17ha5c2072c068162b8Es_ZN80_$LT$std..io..Write..write_fmt..Adapter$LT$T$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17he0c71dfc5285e785E0_ZN3std5panic13resume_unwind17haf2f936ba1c5c901E>_ZN3std9panicking23rust_panic_without_hook17h2b0a2f6075b965a6E6_ZN3std5panic19get_backtrace_style17h2f1f03419d97519dEn_ZN80_$LT$std..path..Components$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9718fa64d5ef5b65E=_ZN3std4path10Components15len_before_body17hbb53a8d781c04deaEG_ZN3std4path10Components25parse_next_component_back17h9152bfca55b18935E4_ZN3std4path4Path13_strip_prefix17hd200fd701d9849b1E)_ZN3std7process5abort17h5b698d250ade9076E?_ZN3std3sys4sync4once10no_threads4Once4call17h336fb5c56707ec60E?_ZN3std3sys4sync4once10no_threads4Once4call17h4cb5bdf6c37427ddE,_ZN3std4time7Instant3now17h2471324a1124504eEx_ZN91_$LT$std..sys_common..backtrace.._print..DisplayBacktrace$u20$as$u20$core..fmt..Display$GT$3fmt17hc45bdf1c0d25ed27EM_ZN3std10sys_common9backtrace26__rust_end_short_backtrace17h575fb82445d56667EX_ZN3std9panicking19begin_panic_handler28_$u7b$$u7b$closure$u7d$$u7d$17h0187e6969a85aab0E;_ZN3std5alloc24default_alloc_error_hook17h657d59eb5b8b6cdfE __rdl_alloc __rdl_dealloc __rdl_realloc__rdl_alloc_zeroedQ_ZN3std9panicking12default_hook28_$u7b$$u7b$closure$u7d$$u7d$17h66fa5a68d312208cE;_ZN3std9panicking11panic_count8increase17h510a76abb1d4a775Erust_begin_unwind_ZN102_$LT$std..panicking..begin_panic_handler..FormatStringPayload$u20$as$u20$core..panic..PanicPayload$GT$8take_box17h8635c8c220e838ecE_ZN102_$LT$std..panicking..begin_panic_handler..FormatStringPayload$u20$as$u20$core..panic..PanicPayload$GT$3get17h1d02672a793994e3E_ZN99_$LT$std..panicking..begin_panic_handler..StaticStrPayload$u20$as$u20$core..panic..PanicPayload$GT$8take_box17hb58f6b3c6b343637E_ZN99_$LT$std..panicking..begin_panic_handler..StaticStrPayload$u20$as$u20$core..panic..PanicPayload$GT$3get17hc959c2040fba4703E;_ZN3std9panicking20rust_panic_with_hook17h50e657195af0239cE rust_panic_ZN96_$LT$std..panicking..rust_panic_without_hook..RewrapBox$u20$as$u20$core..panic..PanicPayload$GT$8take_box17h3d186c7b44d331a9E}_ZN96_$LT$std..panicking..rust_panic_without_hook..RewrapBox$u20$as$u20$core..panic..PanicPayload$GT$3get17h7acab6172fcc178dE[_ZN62_$LT$std..io..error..ErrorKind$u20$as$u20$core..fmt..Debug$GT$3fmt17hceaba35bf9d0ed67E*_ZN3std5alloc8rust_oom17h6d1ba1a2793f1284E__rg_oom__rust_start_panicG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hf5748a62a9b4b2c5E\_ZN4core3fmt3num50_$LT$impl$u20$core..fmt..Debug$u20$for$u20$u16$GT$3fmt17hc17d934ffc54e8adE6_ZN4wasi13lib_generated5Errno4name17haf4e5622df101631E9_ZN4wasi13lib_generated5Errno7message17h5891cf6b2cea5d44E\_ZN63_$LT$wasi..lib_generated..Errno$u20$as$u20$core..fmt..Debug$GT$3fmt17h280e1bf3c2360ab7E;_ZN4wasi13lib_generated14clock_time_get17h33aa1d686efa5b42E3_ZN4wasi13lib_generated7fd_read17h3405494fcebee40dE4_ZN4wasi13lib_generated8fd_write17hbe069b13f96a29b1E_ZN104_$LT$core..iter..sources..from_fn..FromFn$LT$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hb81e273538cbbf5dEp_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$5count17h49ac5af0f0fb8230EG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h69fa1495637df56cEO_ZN50_$LT$$RF$mut$u20$T$u20$as$u20$core..fmt..Debug$GT$3fmt17ha4485aec0c83ae5aEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h179fc7342207e18eEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h86c52175ba2f2f1fEI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h7cc3c5c5af74dd57Ed_ZN71_$LT$rustc_demangle..legacy..Demangle$u20$as$u20$core..fmt..Display$GT$3fmt17h992efe7fad281390E>_ZN14rustc_demangle2v07Printer10print_path17h3d8aa7142cb1049dEJ_ZN45_$LT$$LP$$RP$$u20$as$u20$core..fmt..Debug$GT$3fmt17h9a3bdacc1445ff65E2_ZN4core3fmt5Write10write_char17hb9a696518ea1230eE0_ZN4core3fmt5Write9write_fmt17h2380d0579f531752E=_ZN4core3str7pattern14TwoWaySearcher4next17h2fa7773a7f76d6c6ES_ZN4core4char7methods22_$LT$impl$u20$char$GT$16escape_debug_ext17h468341529d0eb095ER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cEa_ZN68_$LT$core..num..error..ParseIntError$u20$as$u20$core..fmt..Debug$GT$3fmt17hded00346e3a2d461En_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17hf43c5e76d330206cEv_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h098a1347fbd9a856E]_ZN64_$LT$rustc_demangle..v0..Ident$u20$as$u20$core..fmt..Display$GT$3fmt17h4337d0ac10e42596EF_ZN14rustc_demangle2v010HexNibbles14try_parse_uint17h0fdd6c17abf751b3E>_ZN14rustc_demangle2v06Parser11hex_nibbles17h0c98631bf1715b60E=_ZN14rustc_demangle2v06Parser10integer_6217ha6ba519d6b595befEA_ZN14rustc_demangle2v06Parser14opt_integer_6217h289a334762eb0eaeE7_ZN14rustc_demangle2v06Parser5ident17hb61541981963a35fEE_ZN14rustc_demangle2v07Printer17skipping_printing17h857c70f1c4a45f00EA_ZN14rustc_demangle2v07Printer13print_backref17h513ac109c1453cfbEA_ZN14rustc_demangle2v07Printer13print_backref17ha0b9c974dd48ad9bE?_ZN14rustc_demangle2v07Printer11print_const17he32a509c5b5efe84EA_ZN14rustc_demangle2v07Printer13print_backref17hdccbfdeca70d3095E>_ZN14rustc_demangle2v07Printer10print_type17haf3364cabc309b89EN_ZN14rustc_demangle2v07Printer26print_quoted_escaped_chars17he6b5257d2380c1d1EM_ZN14rustc_demangle2v07Printer25print_lifetime_from_index17hde21779bce8d7558E<_ZN14rustc_demangle2v07Printer9in_binder17h51bd4da332d4e260EC_ZN14rustc_demangle2v07Printer15print_dyn_trait17hb902bf6458b06476E<_ZN14rustc_demangle2v07Printer9in_binder17h9d56bde8b7e9b94dE\_ZN14rustc_demangle2v07Printer10print_type28_$u7b$$u7b$closure$u7d$$u7d$17h3d73b426a974bb7fEB_ZN14rustc_demangle2v07Printer14print_sep_list17h532179c4f8e78b02EB_ZN14rustc_demangle2v07Printer14print_sep_list17h5ea26cd92085673aEE_ZN14rustc_demangle2v07Printer17print_generic_arg17hcea131a6699c7506EB_ZN14rustc_demangle2v07Printer14print_sep_list17h7e0a1f8bb47482d4EB_ZN14rustc_demangle2v07Printer14print_sep_list17heba392d9d485d47bEB_ZN14rustc_demangle2v07Printer14print_sep_list17hefe0726ac4a6ec6cER_ZN14rustc_demangle2v07Printer30print_path_maybe_open_generics17haf50c653f074efb9EK_ZN14rustc_demangle2v07Printer23print_const_str_literal17h41d795363fed40c2ED_ZN14rustc_demangle2v07Printer16print_const_uint17he5cf2c57cde482c8E0_ZN14rustc_demangle8demangle17hd44c9985cd55821dE5_ZN14rustc_demangle12try_demangle17h2a504be41c0a16f2Ev_ZN83_$LT$rustc_demangle..SizeLimitedFmtAdapter$LT$F$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17hb14387e0093c45acE\_ZN63_$LT$rustc_demangle..Demangle$u20$as$u20$core..fmt..Display$GT$3fmt17h470edcd682a7d991Ed_ZN71_$LT$rustc_demangle..SizeLimitExhausted$u20$as$u20$core..fmt..Debug$GT$3fmt17hb16e76594c0ff64aEmallocdlmalloc prepend_allocfreedlfreecallocrealloc dispose_chunkposix_memaligninternal_memalign gettimeofdayclose_Exit__wasilibc_ensure_environ__wasilibc_initialize_environ__wasi_environ_get__wasi_environ_sizes_get__wasi_clock_time_get__wasi_fd_close__wasi_fd_fdstat_get__wasi_fd_prestat_get__wasi_fd_prestat_dir_name__wasi_fd_seek__wasi_fd_write__wasi_proc_exitabortgetcwdfminfmaxfabssqrtceilfloortrunc__wasilibc_populate_preopens'internal_register_preopened_fd_unlockedsbrkgetenv __assert_faildummy__wasm_call_dtorsacosacoshasinasinhatanatan2atanhcbrt__cos__rem_pio2_large __rem_pio2__sincos__expo2cosh __math_xflow __math_uflow __math_oflowexp specialcaseexpm1fmodhypot__math_divzero__math_invalidloglog10log1plog2lrintpowcheckint specialcasescalbnsinsinh__tantantanhfprintf __stdio_exit __towrite __fwritexfwrite __ofl_lockprintfsnprintf __stdio_closewritev __stdio_write__lseek __stdio_seek__isatty__stdout_writedummy __lctransstrerrorwcrtombwctombfrexpfputsvfprintf printf_corepop_argpadlong_double_not_supported vsnprintfsn_writeatoi__toread__uflow__shlim__shgetc __floatscanhexfloatscanexpstrtodmemchrmemcmpmemcpymemmovememsetstrchr __strchrnulstrcmp__stpcpystrcpystrdup strerror_rstrlenstrncmpstrnlen __memrchrstrrchr__secs_to_zone __secs_to_tm __localtime_r0_ZN4core3fmt5Write9write_fmt17h498efb08531c1676EL_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hee8e15b778ffa808ER_ZN53_$LT$core..fmt..Error$u20$as$u20$core..fmt..Debug$GT$3fmt17h98f2949d4375448cEb_ZN69_$LT$core..alloc..layout..LayoutError$u20$as$u20$core..fmt..Debug$GT$3fmt17hb398c037eb495ee7E8_ZN5alloc7raw_vec17capacity_overflow17ha844c72da6f68b05EY_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h17f8ec6cdd5d9d15E3_ZN5alloc7raw_vec12handle_error17h7e30ce1f05b9350bE2_ZN5alloc7raw_vec11finish_grow17hac99f93d79e8a118EC_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hb214d1d8443bd4bfE7_ZN5alloc5alloc18handle_alloc_error17h1200fd4682b58446Ep_ZN72_$LT$$RF$str$u20$as$u20$alloc..ffi..c_str..CString..new..SpecNewImpl$GT$13spec_new_impl17h8877d3a956b8dec6ED_ZN5alloc3ffi5c_str7CString19_from_vec_unchecked17h50d814f094fe0830EC_ZN5alloc3ffi5c_str7CString18from_vec_unchecked17h7289a3b210b6fc2aE__ZN66_$LT$alloc..ffi..c_str..NulError$u20$as$u20$core..fmt..Display$GT$3fmt17he2db9488ced8269eE<_ZN5alloc6string6String15from_utf8_lossy17hc84dbd6df8c3cc0cE6_ZN5alloc3fmt6format12format_inner17hd266cc6cd66ec944E0_ZN5alloc6string6String4push17hc3387851a7eeab67E`_ZN67_$LT$alloc..string..FromUtf8Error$u20$as$u20$core..fmt..Display$GT$3fmt17h9e4a67cdda357aefE[_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17h388fe2c30f03bec6E]_ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$9write_str17hd7cc20b68bb95e6aE__ZN58_$LT$alloc..string..String$u20$as$u20$core..fmt..Write$GT$10write_char17h4dc2a2d994a80c83ED_ZN5alloc4sync32arcinner_layout_for_value_layout17h5a6f9e71af256231En_ZN80_$LT$alloc..vec..Vec$LT$u8$GT$$u20$as$u20$core..convert..From$LT$$RF$str$GT$$GT$4from17hea58de059f1f2e77E0_ZN4core9panicking9panic_fmt17ha6764f2272b7fb95ED_ZN4core5slice5index26slice_start_index_len_fail17h464ae35af7c6898eE:_ZN4core9panicking18panic_bounds_check17h219d719f2d55cbcdEB_ZN4core5slice5index24slice_end_index_len_fail17h32adee9828d9a43aE._ZN4core3fmt9Formatter3pad17h9c823f28d3149995E,_ZN4core9panicking5panic17h864593189f35325fE9_ZN4core3num23from_str_radix_panic_rt17hb11242dde0519ab0Eb_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h21e83e20c922bcf6E6_ZN4core3num20from_str_radix_panic17h588c215ffecadfe0E\_ZN4core3fmt3num50_$LT$impl$u20$core..fmt..Debug$u20$for$u20$u32$GT$3fmt17h879e88a7b2ffd07bE&_ZN4core3fmt5write17hbfdffefff34f5cf8Ed_ZN71_$LT$core..ops..range..Range$LT$Idx$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h4053a4dd7060db81EE_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$7type_id17hf6450125705d22b7E\_ZN63_$LT$core..cell..BorrowMutError$u20$as$u20$core..fmt..Debug$GT$3fmt17hf791dc1a9a4c94dbE9_ZN4core4cell22panic_already_borrowed17hfdf4e832e2c2aedfE__ZN4core3fmt3num53_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$i16$GT$3fmt17h320ab6446e66dd27ES_ZN4core4char7methods22_$LT$impl$u20$char$GT$16escape_debug_ext17h468341529d0eb095EP_ZN4core7unicode12unicode_data15grapheme_extend11lookup_slow17h381398803aac3be7E<_ZN4core7unicode9printable12is_printable17h8d800542b68813e8Ek_ZN78_$LT$core..ffi..c_str..FromBytesWithNulError$u20$as$u20$core..fmt..Display$GT$3fmt17hc0ea51dc3b5ddafdE@_ZN4core3ffi5c_str4CStr19from_bytes_with_nul17hfb8de03fe159d5c4E3_ZN4core3str8converts9from_utf817hf5df6767648c29f8E<_ZN4core3fmt8builders11DebugStruct5field17h5169b8d642e38addEa_ZN4core3fmt3num3imp51_$LT$impl$u20$core..fmt..Display$u20$for$u20$u8$GT$3fmt17hc85ecf06cc9e3dccE2_ZN4core6result13unwrap_failed17had3752ac9f022e32E@_ZN4core5slice5index22slice_index_order_fail17he2c1c0a8da27f0b5Eb_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u16$GT$3fmt17h7dfe7a8f4edf1ba4E2_ZN4core6option13unwrap_failed17h165f1460d4b9b2e4E2_ZN4core6option13expect_failed17h4bbb25fdd9d02fc5EI_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h4904b04b6447a902Ec_ZN70_$LT$core..panic..location..Location$u20$as$u20$core..fmt..Display$GT$3fmt17hc54b66789c9a8ac2Ef_ZN73_$LT$core..panic..panic_info..PanicInfo$u20$as$u20$core..fmt..Display$GT$3fmt17h6506a85cdc2d0d4aE__ZN4core3fmt3num53_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$i32$GT$3fmt17h8a212632f208eb07E;_ZN4core9panicking19assert_failed_inner17hf16fae5f0227efbaEG_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hde29e90f09362d9fEX_ZN59_$LT$core..fmt..Arguments$u20$as$u20$core..fmt..Display$GT$3fmt17h300410d8e27313beEg_ZN68_$LT$core..fmt..builders..PadAdapter$u20$as$u20$core..fmt..Write$GT$9write_str17h3361d97b57db5468Ei_ZN68_$LT$core..fmt..builders..PadAdapter$u20$as$u20$core..fmt..Write$GT$10write_char17h63c05e7c33d6f640E=_ZN4core3fmt8builders11DebugStruct6finish17ha87c60188ee89c34E;_ZN4core3fmt8builders10DebugTuple5field17h0064a092bf1ad15fE<_ZN4core3fmt8builders10DebugTuple6finish17h8cc79fab01e72fe9E8_ZN4core3fmt8builders8DebugSet5entry17h0787750f83c2d31eE:_ZN4core3fmt8builders9DebugList6finish17hc79ce2b1dce0068cE8_ZN4core3fmt9Formatter12pad_integral17h8dd7664935fab95fE0_ZN4core3fmt5Write9write_fmt17h13ccfd6307048a08E6_ZN4core3str5count14do_count_chars17h3f7e13a0ad1691c6EF_ZN4core3fmt9Formatter12pad_integral12write_prefix17hf81d4cc4fa4dec61E4_ZN4core3fmt9Formatter9write_str17h27ead38f26af9f7cE8_ZN4core3fmt9Formatter12debug_struct17hb7db3f03bb9fa91dEF_ZN4core3fmt9Formatter26debug_struct_field1_finish17h35f98d92498ebacdEF_ZN4core3fmt9Formatter26debug_struct_field2_finish17h826d32d2fef379efEF_ZN4core3fmt9Formatter26debug_struct_field3_finish17hf2bd201525085edeE7_ZN4core3fmt9Formatter11debug_tuple17h0585b8cbfe3da39cEE_ZN4core3fmt9Formatter25debug_tuple_field1_finish17h27de2cb5ad4c9725EE_ZN4core3fmt9Formatter25debug_tuple_field2_finish17h8cfa2faa4f9f3f3eE6_ZN4core3fmt9Formatter10debug_list17h6e240ba3ba66cf6cE^_ZN57_$LT$core..fmt..Formatter$u20$as$u20$core..fmt..Write$GT$10write_char17h1432fb9291e5ef4bEH_ZN43_$LT$bool$u20$as$u20$core..fmt..Display$GT$3fmt17h5bc1718bd81a2971EE_ZN40_$LT$str$u20$as$u20$core..fmt..Debug$GT$3fmt17h0f0794ef7b3da28aE2_ZN4core3str16slice_error_fail17h70b08f4d4f691716EG_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17h337dbcd73fd76d73EF_ZN41_$LT$char$u20$as$u20$core..fmt..Debug$GT$3fmt17h2190504615ba13d6EH_ZN43_$LT$char$u20$as$u20$core..fmt..Display$GT$3fmt17h65812e950aa2239bE3_ZN4core3fmt17pointer_fmt_inner17h04ceec19c0c7b6baE9_ZN4core5slice6memchr14memchr_aligned17h5eb229a17b86a4e2E1_ZN4core5slice6memchr7memrchr17h167f4b6b40ef34b9EI_ZN4core5slice5index31slice_start_index_overflow_fail17h01b90137061edb41EG_ZN4core5slice5index29slice_end_index_overflow_fail17hc5ef886ab3e97fe2E?_ZN4core3str5count23char_count_general_case17hd1ceebde0888387fE__ZN66_$LT$core..str..error..Utf8Error$u20$as$u20$core..fmt..Display$GT$3fmt17h3b98b883e079842cE@_ZN4core3str6traits23str_index_overflow_fail17h4ef3520deadc9a37E9_ZN4core3str7pattern11StrSearcher3new17he9c92f706a7edec5Eu_ZN87_$LT$core..str..lossy..Utf8Chunks$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h63df6111e099aae4E^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..UpperHex$u20$for$u20$i8$GT$3fmt17h915ac1480c2473a0E5_ZN4core3str19slice_error_fail_rt17he890cb065805699bEb_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u64$GT$3fmt17h92fbeb98db7ebf91E4_ZN4core7unicode9printable5check17hb24f7163860e9f0bE^_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$i8$GT$3fmt17h83ea9ef9e2d917ddEi_ZN4core3num62_$LT$impl$u20$core..str..traits..FromStr$u20$for$u20$usize$GT$8from_str17h8ca441835706ac84EG_ZN4core3num21_$LT$impl$u20$u32$GT$14from_str_radix17h024ca29ff559480aE0_ZN4core3fmt3num3imp7fmt_u6417h3c5e505d6883ff36E__ZN4core3fmt3num53_$LT$impl$u20$core..fmt..UpperHex$u20$for$u20$i16$GT$3fmt17ha095122268173dc1E__ZN4core3fmt3num53_$LT$impl$u20$core..fmt..UpperHex$u20$for$u20$i32$GT$3fmt17h36c9a2b4cbce5d0cE__ZN4core3fmt3num53_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$i64$GT$3fmt17h3827774b3a764ba9Eb_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17ha27aae851322f006E<_ZN4core7unicode12unicode_data2cc6lookup17ha7248c71f828c6ddE__multi3 __lshrti3wizer.initialize.command_exportcompile_src.command_exporteval_bytecode.command_exportinvoke.command_export$canonical_abi_realloc.command_export!canonical_abi_free.command_export__stack_pointer .rodata.data producerslanguageRust processed-byrustc1.80.0 (051478957 2024-07-21)clangV16.0.0 (https://github.com/llvm/llvm-project 08d094a0e457360ad8b94b017d2dc277e697ca76)Btarget_features+ bulk-memory+mutable-globals+sign-ext+simd128gohugoio-hugo-6abdaca/internal/warpc/wasm/renderkatex.wasm000066400000000000000000020320631507671574500242500ustar00rootroot00000000000000asm```~javy_quickjs_provider_v2canonical_abi_reallocjavy_quickjs_provider_v2 eval_bytecodejavy_quickjs_provider_v2memory _start  &$AAAA"AA A C&function.mjsWtetd0rb0zMazaAaTaqaBaDazrCa_aNaOOeOadek0AtEeaeN0pev0neo0M0IaEaRa$aLaFaEptHaIeArrePaGaVaUaXaWaYaZajaYtKaY0z0keZtJaTtttQae1jtKtReftt1TrQTG0qrBrr1DrZ0fevta1c0S0A0veJtn1i1s1YiokudZCl0ieIt0p0VepR0gCrQtrtMeeratze$eueAeRKn0C0H0gtheTeqetro1Uew0l1u1h1c1m1qth0_rd1p1Nrf1v1g1b1BeOrIry1yJW0_0x1w1ErLeFeBj0Hee0I0S1k1M1z1a0rrRrA1btgeGDeyt$rs0g0xtMy0BtDtntm0V0XarLrFrT1q1B1D1C1_1N1O1E0LCtXe_tHrI1CeE1PrGrWeR1nrir$1L1F1VrUrwtXrH1WrceNtYrP1G1ZritstSt_eV1U1jrotltutX1KrW1JrmeY1Z1j1QrK1eataJ1O0srQ1YeorOtItraT0aamlrZeEtU0Rtq0enB0nauriasahroa$tLtcrmrlatnhtdruahasebernancannmaprsnfrondactmtvrgrbrlnyrxrP0paunhncnmnktdnpnPeMtfnwrFtSrHtfavagaztkrNedtMrGePtbavngnyaGtbnynxnoexaSWwn range &&>><< "" ''contains deflt escapehyphenategetBaseElemisCharacterBoxprotocolFromUrltypeRender math in display mode, which puts the math in display style (so \int and \sum are large, for example), and centers the math on the page on its own line.description$-d, --display-modeclidisplayModehtmlAndMathmlhtml mathmlZDetermines the markup language of the output.&-F, --format outputrRender display math in leqno style (left-justified tags). leqno>Render display math flush left. fleqn.-t, --no-throw-on-errorRender errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error.cliDescriptionthrowOnError#cc00002-c, --error-color A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.cliProcessorerrorColor"-m, --macro Define custom macro of the form '\foo:expansion' (use multiple -m arguments for multiple macros).cliDefault macrosSpecifies a minimum thickness, in ems, for fraction lines, `\sqrt` top lines, `{array}` vertical lines, `\hline`, `\hdashline`, `\underline`, `\overline`, and the borders of `\fbox`, `\boxed`, and `\fcolorbox`.processor6--min-rule-thickness parseFloat minRuleThicknessMakes \color behave like LaTeX's 2-argument \textcolor, instead of LaTeX's one-argument \color mode change.2-b, --color-is-text-color colorIsTextColorwarn ignore errorTurn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.-S, --strict strictrTrust the input, enabling all HTML features such as \url.-T, --trust trustIf non-zero, all user-specified sizes, e.g. in \rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large$-s, --max-size parseIntmaxSizeLimit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.(-e, --max-expand maxExpandglobalGroupreportNonstrict"useStrictBehaviorisTrustedsupsubfracNumfracDen cramptextisTightDISPLAYTEXT SCRIPTSCRIPTSCRIPT latin blockscyrillicarmenianbrahmicgeorgiancjk hangulforEachM262 157 l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 -86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 -2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z m8 0v40h399730v-40zm0 194v40h399730v-40zdoubleleftarrowM399738 392l -10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 -33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 -17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 -13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 -107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z doublerightarrowM400000 241H110l3-3c68.7-52.7 113.7-120 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 -5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 l-3-3h399890zM100 241v40h399900v-40zleftarrowM6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 -45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 5-6 9-10 13-.7 1-7.3 1-20 1H6zleftbraceM0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 -331-161C60.687 138.7 32.312 99.3 7 54L0 41V6zleftbraceunderM400000 80 H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 435 0h399565zleftgroupM400000 262 H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 435 219h399565zleftgroupunderM0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 -3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 -18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 -196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zleftharpoonM0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 -4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 -10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z m0 0v40h400000v-40zleftharpoonplusM7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 -152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241zleftharpoondownM7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 -2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z&leftharpoondownplusM400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 -83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 -68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 71.5 23h399859zM103 281v-40h399897v40zlefthookM40 281 V428 H0 V94 H40 V241 H400000 v40z M40 281 V428 H0 V94 H40 V241 H400000 v40zleftlinesegmentM40 281 V448H0V74H40V241H400000v40z M40 281 V448H0V74H40V241H400000v40zleftmapstoM0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 -.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40zleftToFromM0 50 h400000 v40H0z m0 194h40000v40H0z M0 50 h400000 v40H0z m0 194h40000v40H0zlongequalM200428 334 c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 -53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120zmidbraceM199572 214 c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 -5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214zmidbraceunderM512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 -320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8zoiintSize1M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 -451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 c0 110 84 276 504 276s502.4-166 502.4-276zoiintSize2M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 -480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8zoiiintSize1M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 -707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4zoiiintSize2M0 241v40h399891c-47.3 35.3-84 78-110 128 -16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 -40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 -12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 151.7 139 205zm0 0v40h399900v-40zrightarrowM400000 542l -6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35zrightbraceM399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 -174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17zrightbraceunderM0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 3-1 3-3v-38c-76-158-257-219-435-219H0zrightgroupM0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0zrightgroupunderM0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 -3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 -10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5zm0 0v40h399900v-40zrightharpoonM0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 -18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z rightharpoonplusM399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 -7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 -27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z rightharpoondownM399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 -64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z m0-194v40h400000v-40zm0 0v40h400000v-40z(rightharpoondownplusM399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 -13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40zrighthookM399960 241 V94 h40 V428 h-40 V281 H0 v-40z M399960 241 V94 h40 V428 h-40 V281 H0 v-40z rightlinesegmentM400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 -52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 -167z M100 147v40h399900v-40zM0 341v40h399900v-40zrightToFromM0 167c68 40 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 -70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 -40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 -37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z twoheadleftarrowM400000 167 c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 -19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z"twoheadrightarrowM200 55.538c-77 0-168 73.953-177 73.953-3 0-7 -2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 -68.267.847-113-73.952-191-73.952z tilde1M344 55.266c-142 0-300.638 81.316-311.5 86.418 -8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 181.476 676 181.476c-149 0-189-126.21-332-126.21z tilde2M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 -11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 -338 0-409-156.573-744-156.573z tilde3M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 -11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 -175.236-744-175.236z tilde4M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 -1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 -7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 c-16-25.333-24-45-24-59zvecM529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13zwidehat1M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11zwidehat2M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11zwidehat3M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11zwidehat4M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, -5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13zwidecheck1M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11zwidecheck2M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11zwidecheck3M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11zwidecheck4M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z"baraboveleftarrowM0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 -27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 -84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 -119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 -12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z$rightarrowabovebarM507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z0baraboveshortleftharpoonM0,241 l0,40c399126,0,399993,0,399993,0 c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z2rightharpoonaboveshortbarM7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, 1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, -152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z0shortbaraboveleftharpoonM53,241l0,40c398570,0,399437,0,399437,0 c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z2shortrightharpoonabovebarhasClass toNodetoMarkup toTextAMS-Regular&Caligraphic-RegularFraktur-RegularMain-BoldMain-BoldItalicMain-ItalicMain-RegularMath-BoldItalicMath-ItalicSansSerif-Bold SansSerif-Italic"SansSerif-RegularScript-RegularSize1-RegularSize2-RegularSize3-RegularSize4-Regular$Typewriter-Regular slant spacestretch shrinkxHeightquadextraSpacenum1num2num3 denom1 denom2sup1sup2sup3sub1sub2supDropsubDrop delim1 delim2axisHeight(defaultRuleThicknessbigOpSpacing1bigOpSpacing2bigOpSpacing3bigOpSpacing4bigOpSpacing5"sqrtRuleThicknessptPerEmdoubleRuleSeparrayRuleWidthfboxsepfboxruleADaFNHP !"#$%U&h'()*+,-./0b1234e567n89:;<=>?@cABCDxEFGwHIJKLMNO extendhavingStyle$havingCrampedStylehavingSizehavingBaseStyle havingBaseSizingwithColorwithPhantomwithFont$withTextFontFamily$withTextFontWeight"withTextFontShapesizingClasses"baseSizingClassesfontMetricsgetColorBASESIZEmmcmbppcddccndncsppxexemmusetAttribute1111bin close inneropen punctrelaccent-tokenmathordop-tokenspacingtextordmathmainamsa" \equivz" \prec{" \succ<"\sim" \perp*\preceq*\succeqC" \simeq#"\midj"\llk"\ggM" \asymp%"\parallel"\bowtie## \smile"\sqsubseteq"\sqsupseteqP" \doteq"# \frown "\ni"\propto" \vdash" \dashv \owns. \ldotp" \cdotp#\#\&5! \aleph"\forall! \hbar"\exists" \nablam& \flat!\elln&\naturalc&\clubsuit!\wpo& \sharpb&\diamondsuit!\Rea&\heartsuit!\Im`&\spadesuit\S\P \dag\textdagger! \ddag\textdaggerdbl#\rmoustache#\lmoustache'\rgroup'\lgroup"\mp"\ominus" \uplus" \sqcap"\ast" \sqcup%\bigcirc"\bullet\ddagger@"\wr?* \amalg\And'\longleftarrow!\Leftarrow'\Longleftarrow'\longrightarrow!\Rightarrow'\Longrightarrow!\leftrightarrow'&\longleftrightarrow!\Leftrightarrow'&\Longleftrightarrow!\mapsto'\longmapsto!\nearrow!\hookleftarrow!\hookrightarrow!\searrow!\leftharpoonup!\rightharpoonup!\swarrow! \leftharpoondown!"\rightharpoondown!\nwarrow!$\rightleftharpoonsn" \nless\@nleqslant\@nleqq* \lneqh" \lneqq \@lvertneqq" \lnsim*\lnapprox" \nprec"\npreceq"\precnsim*\precnapproxA" \nsim\@nshortmid$" \nmid"\nvdash"\nvDash"\ntriangleleft" \ntrianglelefteq"\subsetneq\@varsubsetneq*\subsetneqq\@varsubsetneqqo" \ngtr\@ngeqslant\@ngeqq* \gneqi" \gneqq \@gvertneqq" \gnsim*\gnapprox" \nsucc"\nsucceq"\succnsim*\succnapproxF" \ncong \@nshortparallel&"\nparallel"\nVDash"\ntriangleright""\ntrianglerighteq\@nsupseteqq"\supsetneq\@varsupsetneq*\supsetneqq\@varsupsetneqq"\nVdash*\precneqq*\succneqq\@nsubseteqq" \unlhd" \unrhd!\nleftarrow!\nrightarrow!\nLeftarrow!\nRightarrow! \nleftrightarrow! \nLeftrightarrow%\vartriangle\hslash%\triangledown%\lozenge$\circledS\circledR!"\measuredangle"\nexists'!\mho2! \FinvA! \Game5 \backprime%\blacktriangle%$\blacktriangledown%\blacksquare)\blacklozenge&\bigstar""\sphericalangle"\complement\ethq%\diagupr%\diagdown%\square\Box\Diamond\yen'\checkmark6! \beth8!\daleth7! \gimel\digamma\varkappa %\@ulcorner%\@urcorner%\@llcorner%\@lrcornerf" \leqq}*\leqslant*\eqslantlessr"\lesssim*\lessapproxJ"\approxeq"\lessdot"\lllv"\lessgtr"\lesseqgtr*\lesseqqgtrQ"\doteqdotS"\risingdotseqR"\fallingdotseq="\backsim"\backsimeq*\subseteqq"\Subset"\sqsubset|"\preccurlyeq"\curlyeqprec~"\precsim*\precapprox" \vartriangleleft\trianglelefteq" \vDash"\Vvdash\smallsmile\smallfrownO"\bumpeqN"\Bumpeqg" \geqq~*\geqslant*\eqslantgtrs"\gtrsim*\gtrapprox"\gtrdot"\gggw"\gtrless"\gtreqless*\gtreqqlessV"\eqcircW"\circeq\"\triangleq\thicksimH"\thickapprox*\supseteqq"\Supset"\sqsupset}"\succcurlyeq"\curlyeqsucc"\succsim*\succapprox""\vartriangleright \trianglerighteq" \Vdash\shortmid\shortparallell"\between"\pitchfork\varpropto%$\blacktriangleleft4"\therefore "\backepsilon%&\blacktriangleright5"\because\llless \gggtr\lhd\rhdB" \eqsim \Join \Doteq"\dotplus"\smallsetminus"\Cap"\Cup^*\doublebarwedge"\boxminus"\boxplus"\divideontimes"\ltimes"\rtimes"\leftthreetimes" \rightthreetimes"\curlywedge"\curlyvee"\circleddash"\circledast\centerdot"\intercal\doublecap\doublecup"\boxtimes!\dashrightarrow!\dashleftarrow!\leftleftarrows! \leftrightarrows!\Lleftarrow!"\twoheadleftarrow!\leftarrowtail!\looparrowleft!$\leftrightharpoons!\curvearrowleft! \circlearrowleft!\Lsh!\upuparrows!\upharpoonleft! \downharpoonleft"\origof"\imageof"\multimap!(\leftrightsquigarrow!"\rightrightarrows! \rightleftarrows!$\twoheadrightarrow!\rightarrowtail!\looparrowright! \curvearrowright!"\circlearrowright!\Rsh!\downdownarrows!\upharpoonright!"\downharpoonright! \rightsquigarrow\leadsto!\Rrightarrow\restriction `$\$\textdollar%\%_\_\textunderscore " \angle" \infty2 \prime\triangle \Gamma \Delta \Theta\Lambda\Xi\Pi \Sigma\Upsilon\Phi\Psi \Omega\neg \lnot"\top\bot"\emptyset\varnothing \alpha \beta \gamma \delta\epsilon \zeta\eta \theta \iota \kappa\lambda\mu\nu\xi\omicron\pi\rho \sigma\tau\upsilon\phi\chi\psi \omega\varepsilon\vartheta \varpi\varrho\varsigma\varphi+"- \cdot" \circ\div\pm \times)"\cap*"\cup\setminus'" \land("\lor \wedge\vee" \surd'\langle \lvert \lVert?!'\rangle \rvert \rVert=:\approxE" \conge"\ge\geq! \gets\gt"\in \@not"\subset"\supset"\subseteq"\supseteq"\nsubseteq"\nsupseteq\models\leftarrowd"\le\leq\lt!\rightarrow\toq" \ngeqp" \nleq\ \space\nobreakspace \nobreak\allowbreak,;"\barwedge"\veebar" \odot" \oplus"\otimes"\partial"\oslash"\circledcirc"\boxdot\bigtriangleup \bigtriangledown\dagger"\diamond" \star%\triangleleft%\triangleright{\{\textbraceleft}\}\textbraceright\lbrace\rbrace[\lbrack]\rbrack(\lparen)\rparen\textless\textgreater #\lfloor #\rfloor# \lceil # \rceil\\backslash| \vert\textbar\| \Vert\textbardbl~\textasciitilde\textbackslash^ \textasciicircum!\uparrow!\Uparrow!\downarrow!\Downarrow!\updownarrow!\Updownarrow"\coprod"\bigvee"\bigwedge*\biguplus"\bigcap"\bigcup+"\int \intop," \iint-" \iiint" \prod"\sum*\bigotimes*\bigoplus*\bigodot." \oint/" \oiint0"\oiiint*\bigsqcup\smallint& \textellipsis\mathellipsis \ldots"\@cdots" \ddots"\varvdots \acute \grave \ddot \tilde\bar \breve \check\hat \vec\dot\mathring1\@imath7\@jmath17\i\j\ss\aeS\oe\o\AER\OE\O\'\`\^\~\=\u\.\c\r\v\"\H\textcircled-----``'' \textendash \textemdash\textquoteleft \textquoteright "\textquotedblleft $\textquotedblright\degree\textdegree\pounds\mathsterling\textsterling '\maltese0123456789/@." charAt20123456789!@*()-=+";:?/.,hABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz! !!!!!$!!fromCharCode5\ mathbf textbfmathnormal textitboldsymbolmathscrtextscrmathfraktextfrak mathbb textbbmathboldfraktextboldfrak mathsf textsfmathboldsftextboldsfmathitsftextitsf mathtt textttboldvariantfontName normal mathrm italic mathit"sans-serif-italicmathsfitdouble-struck scriptmathcalfraktursans-serifmonospacefontMapmakeSymbolmathsymmakeSpanmakeSvgSpanmakeLineSpanmakeAnchormakeFragmentwrapFragmentmakeVListmakeOrdmakeGluestaticSvgsvgDatatryCombineCharsunitmopmbinmrel minnermord mopen mclose mpunctleftmostrightmostdisplayscriptscriptgetAttributeMathNodeTextNodeSpaceNode&newDocumentFragmentwidehatwidecheckwidetilde utildeoverleftarrowunderleftarrowxleftarrowoverrightarrowunderrightarrowxrightarrow#underbrace#overbrace#overgroup#undergroup$overleftrightarrow&underleftrightarrowxleftrightarrowOverrightarrowxRightarrowoverleftharpoonxleftharpoonup overrightharpoonxrightharpoonupxLeftarrowxLeftrightarrowxhookleftarrowxhookrightarrowxmapsto"xrightharpoondown xleftharpoondown$xrightleftharpoons$xleftrightharpoons"xtwoheadleftarrow$xtwoheadrightarrowxlongequalxtofrom xrightleftarrows"xrightequilibrium xleftequilibrium\cdrightarrow\cdleftarrow\cdlongequalxMaxYMinxMinYMinoverlinesegment underlinesegmentencloseSpanmathMLnodesvgSpanmap accent\widecheck\widehat\widetilde\overrightarrow\overleftarrow\Overrightarrow&\overleftrightarrow\overgroup \overlinesegment \overleftharpoon"\overrightharpoon namesnumArgs propshandlerhtmlBuildermathmlBuilderallowedInTextallowedInMathprimitiveargTypesaccentUnder\underleftarrow \underrightarrow(\underleftrightarrow\undergroup"\underlinesegment\utilde xArrow\xleftarrow\xrightarrow\xLeftarrow\xRightarrow \xleftrightarrow \xLeftrightarrow\xhookleftarrow \xhookrightarrow\xmapsto$\xrightharpoondown \xrightharpoonup"\xleftharpoondown\xleftharpoonup&\xrightleftharpoons&\xleftrightharpoons\xlongequal&\xtwoheadrightarrow$\xtwoheadleftarrow\xtofrom"\xrightleftarrows$\xrightequilibrium"\xleftequilibrium\\cdrightarrow\\cdleftarrow\\cdlongequalnumOptionalArgs mclass\mathord\mathbin\mathrel\mathopen\mathclose\mathpunct\mathinner\@binrel\stackrel\overset\undersetpmb\pmbVno arrowcdlabel\\cdleft\\cdrightcdlabelparent\\cdparent \@char color\textcolororiginal \color\\\global\\globallong \long \gdef\def \xdef \edef\\globallet\let\\globalfuture\futureletinternalkernsize/ small style largesqrtImagesizedDelimsizeToMaxHeight customSizedDelimleftRightDelim \bigl \Bigl \biggl \Biggl \bigr \Bigr \biggr \Biggr \bigm \Bigm \biggm \Biggm\big\Big \bigg \Biggdelimsizingleftright-right \rightleftright \left middle\middleenclose\colorbox\fcolorbox \fboxhbox\cancel\bcancel\xcancel \sout \phase \anglcenter left l right array darray matrixpmatrixbmatrixBmatrixvmatrixVmatrixmatrix*pmatrix*bmatrix*Bmatrix*vmatrix*Vmatrix*smallmatrixsubarray cases dcases rcasesdrcases align align*alignedgathered gathergather*alignatalignat*alignedatequationequation*CD\nonumber\gdef\@eqnsw{0} \notag \hline\hdashlineenvironment \begin\end\mathbb\Bbb\mathbf \bold\mathfrak \frak\boldsymbol\bmfont\mathrm\mathit\mathnormal\mathsfit\mathcal\mathscr\mathsf\mathtt"allowedInArgument\rm\sf\tt\bf\it\calgenfrac \dfrac \frac \tfrac\dbinom \binom\tbinom\\atopfrac\\bracefrac\\brackfrac \cfrac infix \over\choose \atop \brace \brack\genfrac \above\\abovefrachorizBrace\overbrace\underbracehref \hrefurl\url \hbox\htmlClass\htmlId\htmlStyle\htmlDatahtmlmathml\html@mathmlincludegraphics \includegraphics \kern \mkern \hskip \mskiplap\mathllap\mathrlap\mathclapstyling\(\)\]mathchoice\mathchoiceop\mathop\arcsin\arccos\arctan \arctg\arcctg\arg\ch\cos \cosec \cosh\cot \cotg \coth\csc\ctg\cth\deg\dim\exp\hom\ker\lg\ln\log\sec\sin \sinh\sh\tan \tanh\tg\th\det\gcd\inf\lim\max\min\Pr\supoperatorname\operatorname@.\operatornamewithlimits\operatornameZ\@ifstar\operatornamewithlimits\operatorname@ordgroupoverline\overlinephantom\phantomhphantom\hphantomvphantom\vphantomraisebox\raisebox \relaxrule \rule \tiny\sixptsize\scriptsize\footnotesize \small\normalsize \large \Large \LARGE \huge \Huge sizing smash \smashsqrt \sqrt\displaystyle\textstyle\scriptstyle$\scriptscriptstyle supsubatommi mtextnobreakallowbreakclassNametag \text textrm\textrm\textsf\texttt\textnormal\textbf textmd\textmd\textit textup\textup \emphunderline\underlinevcenter\vcenterverb \verb [ ]\\[a-zA-Z@]+\\[^-](\\( |[ ]+ ?)[ ]* [-o]+$+)|#([!-\[\]-' * --]|[-][-]V|\\verb\*([^]).*?\4|\\verb([^*a-zA-Z]).*?\5setCatcodelexbeginGroupendGroupendGroups\noexpand\expandafter\@firstoftwo\@secondoftwo\@ifnextchar\@ifstar@\@ifnextchar *{\@firstoftwo{#1}}\TextOrMathf \char\newcommand\renewcommand\providecommand\message\errmessage \show\bgroup\egroup\lq\rq\aa\r a\AA\r A\textcopyrightL\html@mathml{\textcircled{c}}{\char`}\copyrightd\TextOrMath{\textcopyright}{\text{\textcopyright}}\textregisteredd\html@mathml{\textcircled{\scriptsize R}}{\char`},!\mathscr{B}0!\mathscr{E}1!\mathscr{F} !\mathscr{H}!\mathscr{I}!\mathscr{L}3!\mathscr{M}!\mathscr{R}-!\mathfrak{C} !\mathfrak{H}(!\mathfrak{Z} \Bbbk\Bbb{k} \llap,\mathllap{\textrm{#1}} \rlap,\mathrlap{\textrm{#1}} \clap,\mathclap{\textrm{#1}}\mathstrut\vphantom{(}\underbar*\underline{\text{#1}}\notb\html@mathml{\mathrel{\mathrlap\@not}}{\char"338}\neqa\html@mathml{\mathrel{\not=}}{\mathrel{\char``"}}\ne`" \notin\html@mathml{\mathrel{{\in}\mathllap{/\mskip1mu}}}{\mathrel{\char` "}} "X"\html@mathml{\mathrel{=\kern{-1em}\raisebox{0.4em}{$\scriptsize\frown$}}}{\mathrel{\char`X"}}Y"u\html@mathml{\stackrel{\tiny\wedge}{=}}{\mathrel{\char`X"}}Z"q\html@mathml{\stackrel{\tiny\vee}{=}}{\mathrel{\char`Z"}}["\html@mathml{\stackrel{\scriptsize\star}{=}}{\mathrel{\char`["}}]"\html@mathml{\stackrel{\tiny\mathrm{def}}{=}}{\mathrel{\char`]"}}^"}\html@mathml{\stackrel{\tiny\mathrm{m}}{=}}{\mathrel{\char`^"}}_"k\html@mathml{\stackrel{\tiny?}{=}}{\mathrel{\char`_"}}'< 4\mathclose{!\mkern-0.8mu!} " \notni#\ulcorner#\urcorner#\llcorner#\lrcornerZ\html@mathml{\@ulcorner}{\mathop{\char"231c}}Z\html@mathml{\@urcorner}{\mathop{\char"231d}}Z\html@mathml{\@llcorner}{\mathop{\char"231e}}Z\html@mathml{\@lrcorner}{\mathop{\char"231f}} \vdots6{\varvdots\rule{0pt}{15pt}}\varGamma\mathit{\Gamma}\varDelta\mathit{\Delta}\varTheta\mathit{\Theta}\varLambda \mathit{\Lambda} \varXi\mathit{\Xi} \varPi\mathit{\Pi}\varSigma\mathit{\Sigma}\varUpsilon"\mathit{\Upsilon}\varPhi\mathit{\Phi}\varPsi\mathit{\Psi}\varOmega\mathit{\Omega}\substackF\begin{subarray}{c}#1\end{subarray} \colon\nobreak\mskip2mu\mathpunct{}\mathchoice{\mkern-3mu}{\mkern-3mu}{}{}{:}\mskip6mu\relax \boxed4\fbox{$\displaystyle{#1}$}\iff:\DOTSB\;\Longleftrightarrow\;\implies2\DOTSB\;\Longrightarrow\;\impliedby0\DOTSB\;\Longleftarrow\; \dddotd{\overset{\raisebox{-0.1ex}{\normalsize ...}}{#1}}\ddddotf{\overset{\raisebox{-0.1ex}{\normalsize ....}}{#1}} \dotsc \dotsb \DOTSB\relbar\Relbar \dotsi \DOTSI\iiiint\idotsint \dotsx \DOTSX \dots \dotso \cdots \dotsm\!\cdots\ldots\,\tmspaceP\TextOrMath{\kern#1#3}{\mskip#1#2}\relax\,.\tmspace+{3mu}{.1667em}\thinspace\>\mskip{4mu}\:.\tmspace+{4mu}{.2222em}\medspace\;.\tmspace+{5mu}{.2777em}\thickspace\!.\tmspace-{3mu}{.1667em}\negthinspace\negmedspace.\tmspace-{4mu}{.2222em}\negthickspace,\tmspace-{5mu}{.277em}\enspace\kern.5em \enskip \hskip.5em\relax \quad\hskip1em\relax \qquad\hskip2em\relax\tag<\@ifstar\tag@literal\tag@paren\tag@paren(\tag@literal{({#1})}\tag@literal \bmod\mathchoice{\mskip1mu}{\mskip1mu}{\mskip5mu}{\mskip5mu}\mathbin{\rm mod}\mathchoice{\mskip1mu}{\mskip1mu}{\mskip5mu}{\mskip5mu}\pod\allowbreak\mathchoice{\mkern18mu}{\mkern8mu}{\mkern8mu}{\mkern8mu}(#1) \pmod4\pod{{\rm mod}\mkern6mu#1}\mod\allowbreak\mathchoice{\mkern18mu}{\mkern12mu}{\mkern12mu}{\mkern12mu}{\rm mod}\,\,#1\newline\\\relax\TeX\textrm{\html@mathml{T\kern-.1667em\raisebox{-.5ex}{E}\kern-.125emX}{TeX}} \LaTeX*\textrm{\html@mathml{,L\kern-.36em\raisebox{"}{\scriptstyle A}0\kern-.15em\TeX}{LaTeX}} \KaTeX,K\kern-.17em\raisebox{0\kern-.15em\TeX}{KaTeX}}\hspace2\@ifstar\@hspacer\@hspace\@hspace\hskip #1\relax\@hspacer<\rule{0pt}{0pt}\hskip #1\relax\ordinarycolon\vcentcolon>\mathrel{\mathop\ordinarycolon}\dblcolon\html@mathml{\mathrel{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon}}{\mathop{\char"2237}}\coloneqq\html@mathml{\mathrel{\vcentcolon\mathrel{\mkern-1.2mu}=}}{\mathop{\char"2254}}\Coloneqq\html@mathml{\mathrel{\dblcolon\mathrel{\mkern-1.2mu}=}}{\mathop{\char"2237\char"3d}}\coloneq\html@mathml{\mathrel{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}}{\mathop{\char"3a\char"2212}}\Coloneq\html@mathml{\mathrel{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}}}{\mathop{\char"2237\char"2212}}\eqqcolon\html@mathml{\mathrel{=\mathrel{\mkern-1.2mu}\vcentcolon}}{\mathop{\char"2255}}\Eqqcolon\html@mathml{\mathrel{=\mathrel{\mkern-1.2mu}\dblcolon}}{\mathop{\char"3d\char"2237}}\eqcolon\html@mathml{\mathrel{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon}}{\mathop{\char"2239}}\Eqcolon\html@mathml{\mathrel{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon}}{\mathop{\char"2212\char"2237}}\colonapprox\html@mathml{\mathrel{\vcentcolon\mathrel{\mkern-1.2mu}\approx}}{\mathop{\char"3a\char"2248}}\Colonapprox\html@mathml{\mathrel{\dblcolon\mathrel{\mkern-1.2mu}\approx}}{\mathop{\char"2237\char"2248}}\colonsim\html@mathml{\mathrel{\vcentcolon\mathrel{\mkern-1.2mu}\sim}}{\mathop{\char"3a\char"223c}}\Colonsim\html@mathml{\mathrel{\dblcolon\mathrel{\mkern-1.2mu}\sim}}{\mathop{\char"2237\char"223c}}7"9"T"U"t* \ratio\coloncolon\colonequals"\coloncolonequals\equalscolon"\equalscoloncolon\colonminus \coloncolonminus\minuscolon \minuscoloncolon"\coloncolonapprox\coloncolonsim\simcolon^\mathrel{\sim\mathrel{\mkern-1.2mu}\vcentcolon}\simcoloncolonZ\mathrel{\sim\mathrel{\mkern-1.2mu}\dblcolon}\approxcolond\mathrel{\approx\mathrel{\mkern-1.2mu}\vcentcolon}"\approxcoloncolon`\mathrel{\approx\mathrel{\mkern-1.2mu}\dblcolon}Q\html@mathml{\not\ni}{\mathrel{\char` "}}\limsup<\DOTSB\operatorname*{lim\,sup}\liminf<\DOTSB\operatorname*{lim\,inf}\injlim<\DOTSB\operatorname*{inj\,lim}\projlim>\DOTSB\operatorname*{proj\,lim}\varlimsupH\DOTSB\operatorname*{\overline{lim}}\varliminfJ\DOTSB\operatorname*{\underline{lim}}\varinjlimV\DOTSB\operatorname*{\underrightarrow{lim}}\varprojlimT\DOTSB\operatorname*{\underleftarrow{lim}}\gvertneqq9\html@mathml{\@gvertneqq}{i"}\lvertneqq9\html@mathml{\@lvertneqq}{h"} \ngeqq1\html@mathml{\@ngeqq}{q"}\ngeqslant9\html@mathml{\@ngeqslant}{q"} \nleqq1\html@mathml{\@nleqq}{p"}\nleqslant9\html@mathml{\@nleqslant}{p"}\nshortmid9\html@mathml{\@nshortmid}{$"}\nshortparallelC\html@mathml{\@nshortparallel}{&"}\nsubseteqq;\html@mathml{\@nsubseteqq}{"}\nsupseteqq;\html@mathml{\@nsupseteqq}{"}\varsubsetneq?\html@mathml{\@varsubsetneq}{"}\varsubsetneqqA\html@mathml{\@varsubsetneqq}{*}\varsupsetneq?\html@mathml{\@varsupsetneq}{"}\varsupsetneqqA\html@mathml{\@varsupsetneqq}{*} \imath1\html@mathml{\@imath}{1} \jmath1\html@mathml{\@jmath}{7}\llbracketw\html@mathml{\mathopen{[\mkern-3.2mu[}}{\mathopen{\char`'}}\rrbracket{\html@mathml{\mathclose{]\mkern-3.2mu]}}{\mathclose{\char`'}}''\lBracey\html@mathml{\mathopen{\{\mkern-3.2mu[}}{\mathopen{\char`)}}\rBrace}\html@mathml{\mathclose{]\mkern-3.2mu\}}}{\mathclose{\char`)}}))\minuso\mathbin{\html@mathml{{\mathrlap{\mathchoice{\kern{0.145em}}{\kern{0.145em}}{\kern{0.1015em}}{\kern{0.0725em}}\circ}{-}}}{\char`)}}) \darr \dArr \Darr \lang \rang \uarr \uArr \Uarr\N\mathbb{N}\R\mathbb{R}\Z\mathbb{Z} \alef\alefsym \Alpha\mathrm{A} \Beta\mathrm{B} \bull\Chi\mathrm{X} \clubs \cnums\mathbb{C}\Complex\Dagger\diamonds \empty\Epsilon\mathrm{E}\Eta\mathrm{H} \exist \harr \hArr \Harr\hearts \image \infin \Iota\mathrm{I} \isin \Kappa\mathrm{K} \larr \lArr \Larr \lrarr \lrArr \Lrarr\Mu\mathrm{M}\natnums\Nu\mathrm{N}\Omicron\mathrm{O}\plusmn \rarr \rArr \Rarr \real \reals \Reals\Rho\mathrm{P} \sdot \sect\spades\sub \sube \supe\Tau\mathrm{T}\thetasym\weierp \Zeta\mathrm{Z}\argmin<\DOTSB\operatorname*{arg\,min}\argmax<\DOTSB\operatorname*{arg\,max} \plimR\DOTSB\mathop{\operatorname{plim}}\limits\bra0\mathinner{\langle{#1}|}\ket0\mathinner{|{#1}\rangle}\braket<\mathinner{\langle{#1}\rangle}\Bra*\left\langle#1\right|\Ket*\left|#1\right\rangle\bra@ket\bra@set\Braket\bra@ket{\left\langle}{\,\middle\vert\,}{\,\middle\vert\,}{\right\rangle}\Set\bra@set{\left\{\:}{\;\middle\vert\;}{\;\middle\Vert\;}{\:\right\}}\set8\bra@set{\{\,}{\mid}{}{\,\}} \angln{\angl n} \blue0\textcolor{##6495ed}{#1}\orange0\textcolor{##ffa500}{#1} \pink0\textcolor{##ff00af}{#1}\red0\textcolor{##df0030}{#1} \green0\textcolor{##28ae7b}{#1} \gray(\textcolor{gray}{#1}\purple0\textcolor{##9d38bd}{#1} \blueA0\textcolor{##ccfaff}{#1} \blueB0\textcolor{##80f6ff}{#1} \blueC0\textcolor{##63d9ea}{#1} \blueD0\textcolor{##11accd}{#1} \blueE0\textcolor{##0c7f99}{#1} \tealA0\textcolor{##94fff5}{#1} \tealB0\textcolor{##26edd5}{#1} \tealC0\textcolor{##01d1c1}{#1} \tealD0\textcolor{##01a995}{#1} \tealE0\textcolor{##208170}{#1}\greenA0\textcolor{##b6ffb0}{#1}\greenB0\textcolor{##8af281}{#1}\greenC0\textcolor{##74cf70}{#1}\greenD0\textcolor{##1fab54}{#1}\greenE0\textcolor{##0d923f}{#1} \goldA0\textcolor{##ffd0a9}{#1} \goldB0\textcolor{##ffbb71}{#1} \goldC0\textcolor{##ff9c39}{#1} \goldD0\textcolor{##e07d10}{#1} \goldE0\textcolor{##a75a05}{#1} \redA0\textcolor{##fca9a9}{#1} \redB0\textcolor{##ff8482}{#1} \redC0\textcolor{##f9685d}{#1} \redD0\textcolor{##e84d39}{#1} \redE0\textcolor{##bc2612}{#1}\maroonA0\textcolor{##ffbde0}{#1}\maroonB0\textcolor{##ff92c6}{#1}\maroonC0\textcolor{##ed5fa6}{#1}\maroonD0\textcolor{##ca337c}{#1}\maroonE0\textcolor{##9e034e}{#1}\purpleA0\textcolor{##ddd7ff}{#1}\purpleB0\textcolor{##c6b9fc}{#1}\purpleC0\textcolor{##aa87ff}{#1}\purpleD0\textcolor{##7854ab}{#1}\purpleE0\textcolor{##543b78}{#1} \mintA0\textcolor{##f5f9e8}{#1} \mintB0\textcolor{##edf2df}{#1} \mintC0\textcolor{##e0e5cc}{#1} \grayA0\textcolor{##f6f7f7}{#1} \grayB0\textcolor{##f0f1f2}{#1} \grayC0\textcolor{##e3e5e6}{#1} \grayD0\textcolor{##d6d8da}{#1} \grayE0\textcolor{##babec2}{#1} \grayF0\textcolor{##888d93}{#1} \grayG0\textcolor{##626569}{#1} \grayH0\textcolor{##3b3e40}{#1} \grayI0\textcolor{##21242c}{#1}\kaBlue0\textcolor{##314453}{#1}\kaGreen0\textcolor{##71B307}{#1}\limits\nolimitsfeedswitchMode futurepopTokenpushTokenpushTokensscanArgumentconsumeSpacesconsumeArgconsumeArgscountExpansionexpandOnce"expandAfterFutureexpandNextTokenexpandMacroexpandTokens"expandMacroAsText_getExpansionisDefinedisExpandable freeze                  bj|,      cs t dve fghijz { | } ~ p t u v w x y ,.013456789:<>?@A},BCGHIMq OP RVWX[]^_`a   'aaaaaaaaaaa aaaaa'aa a bcc' c  c c c'd d d'eeeeeeeee'e eeeeee')fgg!gg gg!g'#h'h h%h#h')iiii/i)i+i-i ij j5k1k k'7l:l >l'<m?mAnDnnn HnEn'Foooo+ooMoOo-oMoSoQoOo ooooo/o1o QpUpWrUr YrYr'Ws[ses as gs]sas'_tt etkt'cuuuuuuu uiuyuku{umu uu ou qv}wwwwuww xxyyyyy3ywyy zzz ~zz|AAAAAAAAAAA AAAAA&AA A BCC'C  CC C'D D D'EEEEEEEEE'E EEEEEE'(FGG GG GG G'"H&H H$H"H'(IIII.I(I*I,I II0J4K0K K'6L9L =L';M>M@NCNNN GNDN'EOOOO*OOLONO,OLOROPONO OOOOO.O0O PPTPVRTR XRXR'VSZSdS `S fS\S`S'^T dTjT'bUUUUUUU UhUxUjUzUlU UU nU pV|WWWWtWXXYYYxYY2YvYZyZ }ZZ{prtvxz| expectconsume fetch parsesubparseparseExpression handleInfixNodes$handleSupSubscript(formatUnsupportedCmdparseAtomparseFunctioncallFunctionparseArguments parseGroupOfType parseStringGroupparseRegexGroupparseColorGroupparseSizeGroupparseUrlGroup$parseArgumentGroupparseGroupformLigaturesparseSymbol\endgroupendOfExpressiondocumentcompatModeCSS1CompatconsoleWarning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype.0.16.22Span AnchorSymbolNodeSvgNodePathNodeLineNodeversion renderrenderToStringParseErrorSETTINGS_SCHEMA__parse"__renderToDomTree$__renderToHTMLTree __setFontMetrics__defineSymbol __defineFunction__defineMacro__domTree\ce\pu\tripledash{\vphantom{-}\raisebox{2.56mu}{$\mkern2mu\tiny\text{-}\mkern1mu\text{-}\mkern1mu\text{-}\mkern2mu$}}goconcatArray empty else2space A space$a-zx$i$letters \greek8one lowercase latin letter $<$one lowercase latin letter$ $8one lowercase greek letter $ digits -9.,9$-9.,9 no missing 0 (-)(9.,9)(e)(99)(-)(9)^(-9),state of aggregation $4_{(state of aggregation)}${[()]}, . ...* ^{(...)}^($...$)^a^\x{}{} ^\x{}^\x ^(-1)_{(...)}_($...$)_9_\x{}{} _\x{}_\x^_{} {...}{(...)} $...$${(...)}$$(...)$=<>-$-9"- orbital overlappm-operatoroperatorarrowUpDown\bond{(...)}->CMT[(...)] 1st-level escape \x{}{}\x{}\ca\xorbital others\frac{(...)}\overset{(...)} \underset{(...)}$\underbrace{(...)}\color{(...)}0*\color{(...)}{(...)}1&\color(...){(...)}2\ce{(...)}oxidation$d-oxidation$roman numeral1/2$ amountamount2(KV letters),formula$uprightEntities//patterns"findObserveGroups match_a=b=p=o=q=d=rm= text= insertinsert+p1insert+p1+p2copyrm {text}tex-mathtex-math tightbondcolor0-output1/29,9actions"createTransitionsstateMachinesaction_(beginsWithBond=falserevisittoContinue 0|1|2 oxidation-outputrdt=nextStaterqt=rdtrdsb=false0|1|2|as0|1|2|3r=a|as d= kvd|Dqdq qd|qDdq0|2 type_ option0|1|2|a|ascharge or bondo|q qD|dq hyphen3|o&beginsWithBond=true- after o/dd|qd|dq D|qD|p1|3*0|1|2|3|a|as|b|p|bp|oq|dqo after dd|D|qd|qD b|p|bpsb=true1|2r|rt|rd|rdt|rdqrd=r|rtrq=rdq rd|rdto|d|D|dq|qd|qDellipsis"addition compound . |* (state of aggregation$parenthesisLevel++ a|as|o$parenthesisLevel-- 0|1|2|3|b|p|bp|o&a|as|d|D|q|qd|qD|dq commaqDd|D|qd|qD|dq"^{(...)}|^($...$)d|qd|D|qD,^a|^\x{}{}|^\x{}|^\x|'d|D|q|qd|qD|dqq|qd|qD|dqL_{(...)}|_($...$)|_9|_\x{}{}|_\x{}|_\x:0|1|2|3|a|as|o|q|d|D|qd|qD|dq0|1|2|3|a|as|o&0|1|2|3|a|as|b|p|bp o|d|D|q|qd|qD|dq&0|1|2|3|as|b|p|bp|oas|oq|d|D|qd|qD|dqfrac-outputoverset-outputunderset-output"underbrace-outputcolor-outputR\color{(...)}{(...)}1|\color(...){(...)}200|1|2|3|a|as|b|p|bp|o|c0\x{}{}|\x{}|\x a to otransitionscommaDecimal circa"${(...)}$|$(...)$"\,|\x{}{}|\x{}|\x!f&comma enumeration Spqelectron dotKV x primebdroman-numeraloxidation.{...}|\,|\x{}{}|\x{}|\xtight operator-|+0|a{[(|)]}number^enumber0|d/|q{...}|elsepucdot^{(...)}|^(-1)pu-2output-0output-o pu-9,9_goInner_go2_getArrow_getBond_getOperatorJavyIOreadSyncincludesos error 290Error reading from stdin spliceTextDecoder decode(Error parsing JSON '' from stdin: headererr slicelogTextEncoder encodestringify writeSync lexer startendlocnoexpandtreatAsRelaxpositionrawMessage&KaTeX parse error: $ at end of input:  at position : replace$&2indexOf-$1toLowerCasebody6Expected non-null, but got test_relativepushmaxInfinityisArrayhasOwnPropertyxLaTeX-incompatible input and strict mode is set to 'error':  [vLaTeX-incompatible input and strict mode is set to 'warn': fLaTeX-incompatible input and strict mode is set to unrecognized '': protocolidcrampedM95, c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 c69,-144,104.5,-217.7,106.5,-221 l -B c5.3,-9.3,12,-14,20,-14 H400000vH845.2724 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z Mh400000vh-400000z M263,c0.7,0,18,39.7,52,119 c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 c340,-704.7,510.7,-1060.3,512,-1067 l@ c4.7,-7.3,11,-11,19,-11 H40000vH1012.3 s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z M M983  l> c4,-6.7,10,-10,18,-10 H400000v H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 c53.7,-170.3,84.5,-266.8,92.5,-289.5z M M424, c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 l>c4,-6.7,10,-10,18,-10 H400000 vH1014.6 s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2z M h400000v M473,N c339.3,-1799.3,509.3,-2700,510,-2702 lD c3.3,-7.3,9.3,-11,18,-11 H400000vH1017.7 s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, 606zMH1017.7zM400000 H0 L 0 l65 45 L145  H400000z M702 H400000 H742vl-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 219 661 l218 661zM702 H400000v H742zsqrtMainsqrtSize1sqrtSize2sqrtSize3sqrtSize4sqrtTall#M291 0 H417 V( H291z M291 0 H417 V H291zM145 0 H188 V( H145z M145 0 H188 V H145zM367 0 H410 V( H367z M367 0 H410 V H367z#M457 0 H583 V( H457z M457 0 H583 V H457z#M319 0 H403 V( H319z M319 0 H403 V H319z#M263 0 H347 V( H263z M263 0 H347 V H263z#M384 0 H504 V( H384z M384 0 H504 V H384z#M312 0 H355 V( H312z M312 0 H355 V H312z M257 0 H300 V( H257z M257 0 H300 V H257zM478 0 H521 V( H478z M478 0 H521 V H478z lbrackDM403 1759 V84 H666 V0 H319 V1759 v` v1759 h347 v-84 H403z M403 1759 V0 H319 V1759 v v1759 h84z rbrack@M347 1759 V0 H0 V84 H263 V1759 vZ v1759 H0 v84 H347z M347 1759 V0 H263 V1759 vvertM145 15 v585 vz v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v v-585 c-2.667,-10,-9.667,-15,-21,-15 c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v v585 h43zdoublevert2 v585 h43z M367 15 v585 v v-585 c-2.667,-10,-9.667,-15,-21,-15 c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v lfloor.M319 602 V0 H403 V602 v\ v1715 h263 v84 H319z MM319 602 V0 H403 V602 v v1715 H319z rfloorZ v1799 H0 v-84 H319z MM319 602 V0 H403 V602 v lceilH v602 h84z M403 1759 V0 H319 V1759 v v602 h84z rceilH v602 h84z M347 1759 V0 h-84 V1759 v lparenM863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, -36,557 l0,c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, 949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, -544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 l0,-c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, -210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z rparenM76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, 63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0, c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 l0,-c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, -470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z6Unknown stretchy delimiter.childrenclasses height depthmaxFontSize,createDocumentFragmentappendChildBFont metrics not found for font: charCodeAtskew widthcssEmPerMutextSizefontFamilyfontWeightfontShapesizeMultiplier_fontMetricsreset-sizetransparentInvalid unit: 'mintoFixed filterattributes mtightcreateElement class=" style="0Invalid attribute name '="_fallbackcreateTextNodemarginRight 4http://www.w3.org/2000/svgcreateElementNSsvgNpathNamealternatepathline 8Expected symbolNode but got FExpected span but got group floor.Unsupported character: metrics*No character metrics for '' in style '' and mode ' amsrmfontClassmodeTypewriter"unexpected type:  in makeOrd"borderBottomWidthpositionTypeindividualShift shiftelemtoppositionData bottomDFirst child must have type "elem".firstBaseline*Invalid positionType pstrutwrapperClasseswrapperStylemarginLeft vlistvlist-s vlist-rvlist-tvlist-t2 mspaceAMSMainSansSerifBoldItalicBold ItalicRegular width:0 0 viewBox&preserveAspectRatiooverlay.Should never be called.rootnodeinsertAfterunshiftnewlinepopenclosing rightleftnulldelimiter8Got group of unknown type: 'base strutverticalAlignkatex-htmlaria-hiddenDhttp://www.w3.org/1998/Math/MathML class ="character     c  c _ c  c AVMissing a D character to complete a CD arrow.BExpected one of "<>AV=|." after @fill pregappostgaparraystretch addJotrowGapscols"colSeparationTypehLinesBeforeRowsidecd-label--1widthvoffset 0.7emdisplaystylescriptlevelfragmentcd-vert-arrow isNaN@\@char has non-numeric argument >\@char with invalid code point mathcolorcolor-token breakOnTokenText\current@color(newLineInDisplayModejIn LaTeX, \\ or \newline does nothing in display modenewLinemarginToplinebreak6Expected a control sequence tokensunexpandable@Invalid token after macro prefix2Invalid argument number ""Argument number "" out of orderEOF6Expected a macro definitionreversedelimiters&Unsupported symbol  and font size delimcenterSize-Regulardelim-size1delim-size4 delimsizinginner roundx0$0K0J0jeL0F0f0leKe##############ceilmult0 0 400000 xMinYMin slice0.853emsqrtSize 1.02em0.742emadvanceWidthruleWidth(Illegal delimiter: '8Add support for delim type '' here.&Invalid delimiter '' after '0Invalid delimiter type ' delim fencemaxsizebBug: The leftright ParseNode wasn't fully parsed.T\current@color set to non-string in \rightleftrightDepthrightColorisMiddleoptions>\middle without preceding \left 0.05emsout phasepaddingLeftcancel-padanglanglpad boxpadcolorbox solidborderStyleborderWidthborderTopWidth borderRightWidthbackgroundColorcancel-lapmenclosenotation updiagonalstrike$downdiagonalstrikephasorangle horizontalstrikeboxactuarialborder: em solid Fupdiagonalstrike downdiagonalstrikemathbackgroundenvNameF} can be used only in display mode.ed&hskipBeforeAndAfterautoTagsingleRowemptySingleRowmaxNumCols\arraystretch.Invalid \arraystretch: 4Too many tab characters: &textEnvrToo few columns specified in the {array} column argument.>Expected & or \\ or \cr or \endtags\@eqnsw\df@tagQ0VteeteyexewaSakaJeUtXtQepossomeeqn-numarraycolsep dashed$vertical-separator borderRightStyle0 margin0Invalid separator type: col-align- hlinehdashlineisDashedweSemtdmtr-gluemml-eqn-nummtrrowspacingtop bottom none solid dashed columnaligntrimcolumnlines0em 1em columnspacing0.2778em 0.5em1emrowlines0Too many math in a row: expected lcr4Unknown column alignment: (Expected l or c or rL{subarray} can contain only one columnlcH valid only within array environment0Invalid environment name*No such environment: argsoptArgs\begin{"Mismatch: \begin{$} matched by \end{nameGroup numercontinued denomhasBarLinebarSizefrac-lineleftDelimrightDelim mfraclinethickness0pxauto8Unrecognized genfrac command tokenDUnrecognized infix genfrac commandreplaceWithisBlank isOvercommandhtmlExtensionRHTML extension is disabled on strict modeJError parsing key-value for \htmlData data-2Unrecognized html commandInvalid size: '*' in \includegraphics,' in \includegraphics.totalheightInvalid key: 'substringlastIndexOf mglyph valignmathVsTextUnitsLaTeX's 2 supports only mu units, not units0 works only in math mode2 doesn't support mu unitsdimensionalignmentclapfixthinboxvboxrlapllap-1-0.5Mismatched op-limits oiintop-symbollarge-opsmall-oprelativelargeopa mssemisimpleoverline-line> mphantomdy blackmathsizesmashHeightsmashDepth mroot msqrtFsupsub must have either sup or sub.msupsubmsubsup.Unknown type of space "50%underline-linep\verb ended by end of line instead of matching delimiterstar#$tokenRegexcatcodes.Unexpected character: 'commentAtEnd% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)currentbuiltinsundefStackUnbalanced namespace destruction: attempt to pop global namespace; please report this as a bug.\char` missing argumentInvalid base- digit \@char{b\newcommand's first argument must be a macro name\newcommand{2} attempting to redefine &; use \renewcommand\renewcommand{} when command H does not yet exist; use \newcommand match:Invalid number of arguments: \@cdots\,Multiple \tag.\gdef\df@tag{\text{#1}}expansionCountExtra }nUnexpected end of input in a macro argument, expected 'tThe length of delimiters doesn't match the number of args!ZUse of the macro doesn't match its definitionToo many expansions: infinite loop or need to increase maxExpand setting8Undefined control sequence: VIncomplete placeholder at end of macro body6Not a valid argument numberExpected '', got 'Bonly one infix operator per group,Expected group after 'TLimit controls must follow a math operator$Double superscriptsuperscript Double subscriptsubscriptGot function '&' with no arguments as (Can't use function '' in text mode' in math mode0No function handler for argument to 'TNull argument, please report this as a bugNA primitive argument cannot be optional$Expected group as ,Unknown group type as Invalid : ' Invalid color: '0pt\begingroup\verb assertion failed -- please report what input caused this bug*unicodeTextInMathModeBAccented Unicode text character "&" used in math mode@Latin-1/Unicode text character "0Unicode text character "unknownSymbol@Unrecognized Unicode character " ("Unknown accent ' Accent unsupported in modeXKaTeX can only parse string typed expressionH\tag works only in display equationstextContentDKaTeX doesn't work in quirks mode.katex-error title color: parenthesisLevelpatterntaskMhchemBugAleftrightarrow<-->rightleftarrows<=>"rightleftharpoons<=>> rightequilibrium<<=>leftequilibrium{-}{=}{\equiv}{\tripledash}~-{\mathrlap{\raisebox{-.1em}{$-$}}\raisebox{.1em}{$\tripledash$}}~={\mathrlap{\raisebox{-.2em}{$-$}}\mathrlap{\raisebox{.2em}{$\tripledash$}}-}~---~-{\mathrlap{\raisebox{-.2em}{$-$}}\mathrlap{\raisebox{.2em}{$-$}}\tripledash}.{{\cdot}{\cdot}{\cdot}}....<{{\cdot}{\cdot}{\cdot}{\cdot}}{\rightarrow}{\leftarrow}{<}{>} {}+{}  {}-{}  {}={}  {}<{}  {}>{} << {}\ll{} >> {}\gg{}  {}\pm{}  {}\approx{} $\approx$ \downarrow{} (v) \uparrow{} (^)dataexpressionwarningskatex: LaTeX-incompatible input and strict mode is set to 'warn': ����� ���� �)�.�� ���"�1����@�@�pp�@�pp�@�p p� �� �� @���@�@���@���@���@�@�@�@ �p�� �p������� ��!��"��#��$��%@�&@�'@�(@�)@�*@�+@�,@�-@�.@�/@�0@�1@�2@�3@�4@�5@�6@�7@�8@�9@�:@�;@�<@�=@ �p�>@�@@�A@�B��C@�D@�E@�F@�G@�H@�I@�pKp�J@�M@�N@�O@�P@�Q@�R@�S@�T@�U@�V@�p�W@�p�Y@�p�[@�]@�p�^@�p�`@�p�b@�p�d@�f@�g@�h@�i@�j��k��l��m��n��o��p��q��r��s��t��u��v��w��x��y��z@�{��|��}��~����������������������@�����@�@�@�@�@���@���@���@�@�@�����@���@�����@�@�@���@�������@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@%�p�@'�p��)�p�@�@�@�@�@�@�@�@�@�@�@�@�@�@���@�@�����@�@�@�@�@���@�@�@�����@�@�@�@�@�@�@�����@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@���@�@�@�@���@�@�@�@�@�@���@�@�@�@�@�����@���@���@�@�@�@�@���@�����@�����@�@�����@�@�@���@�@�@�@�@���@�@�@���@�@���@�@�@�@�@�@�@�@�@�@�@�@�������������@�@�@+�p�@-�p�@�@�@�@�@�����@�@/�p�@�@�@�@�@0�p1p�@�������@�@�������@�@�@�@���&.(0��B��C��E��e��f��j#��ŭ$��Ů.��Ž/��ž0��ſB��F��t��u��v������������Y��Y��Y��Y��Y��Y��Y��Y1��Y7a�a�V����T=���i�i�a�a�V����T=���i�i�a �a �V����  i �i �A=���8���A=���CF���M��� M��� 3 M��� >��L?��@��LA��B��LC��D��LE��F��LG�� 3M���M���M��� LH�� LI��LJ��LK��LL��LM��LN�� I���LO��P��LQ��R��LS��LT�� U��V��W��&�L ���LO��X��LQ��Y��LS��LZ�� I���LO��[��LQ��L\�� I���LO��]��LQ��L^�� I���LO��L���_��LS��`��La��Lb�� J���LO��c��L���d��LS��e��La��Mf��Lf��Lg�� K���LO��h��LS��i��La��&��Lj��Mf��Lf��Lk�� H���LO��l��LQ��Mm��Lm��n��LS��8o��Lf��Lp�� I���LO��q��LQ��r��LS��Ls�� t��u��v��&�L ���I������&�LO��w��LQ��x��LS��Lj��Ly�� I������&�LO��z��LQ��{��LS��L|�� H���LO��L���}��LQ��Mm��Lm��~��LS��8��Lf��L�� H���LO��L�����LQ��Mm��Lm����LS��Mf��Lf��L�� I���LO��LS��L��a�V����T���T���T���i�a�V����T��� T���!T���"T���#T���$T���%T���i� !"#$!�!�!� !�!!�"!�#!�$!�&�%!"!"#$#$&�&""""$$$$&�' !"#$#$&�( ""$$$$&�) ""$$&�*   &�+ %GL��%GL��%!GL��%#GL��, ��L8����O&��o&�&�L�� ��L8����&�&�L�� ��L8���0&�&�L�� ��L8���� &�&�L�� ��L8���&�&�L�� ��L8����00&��N��&����`��&�&�L�� ��L8��������&�&�L��&�-&��/-B��'$�P1)M��2*M��3+M��4,M��5-M��6.M��7/M��80M��91M��: ��L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L�����L����L����L����L����L ��;2M��<a>�3V���4T ���5T ���6T ���7T ���>i>�= 8&�L ��9:&�LA��;<&�LB��=>&�LC��?@&�LD��AB&�LE��CD&�LF��EF&�LG��GH&�LH��IJ&�LI��KLM&�LJ��NO&�LK��PQ&�LL��RS&�LM��TU&�LN��VWX&�LO��YZ&�LP��[\]&�LQ��^_&�LR��`a&�LS��bc&�LT��de&�LU��fg&�LV��h&�LW��ij&�LX��kl&�LY��mn&�LZ��op&�Lk��q&�L��rst&�L��uvw&�L��xy&�L��z{&�L'�|}&�L�~&�L�&�L�&�L�&�L�&�L�&�L5 �&�L!�&�L'!�&�L2!�&�L6!�&�L7!�&�L8!�&�LA!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�&�L!�·&�L!�ŷ&�L!�ȷ&�L!�˷&�L!�η&�L!�з&�L!�ҷ&�L!�Է&�L!�׷&�L!�ٷ&�L!�ܷ&�L!�޷&�L!�ߍ෷&�L!�ⷷ&�L!�䷷&�L!�混&�L!�跷&�L!�귷&�L!�췷&�L!�ﷷ&�L!�&�L"�&�L"�&�L"�&�L "�&�L"�&�L"��������&�L"�����&�L"�����&�L "�����&�L!"� �� �� ��&�L""� �� ����&�L#"�������&�L$"�������&�L%"�������&�L&"�����&�L4"�����&�L5"�������&�L<"��� ��!��&�L="�"��#��$��&�LA"�%��&��'��&�LB"�(��)��*��&�LF"�+��,��-��&�LH"�.��/��0��&�LJ"�1��2��3��&�LN"�4��5��6��&�LO"�7��8��9��&�LQ"�:��;��<��&�LR"�=��>��?��&�LS"�@��A��&�LV"�B��C��D��&�LW"�E��F��G��&�L\"�H��I��J��&�Lf"�K��L��M��&�Lg"�N��O��P��&�Lh"�Q��R��S��&�Li"�T��U��V��&�Ll"�W��X��Y��&�Ln"�Z��[��\��&�Lo"�]��^��_��&�Lp"�`��a��b��&�Lq"�c��d��e��&�Lr"�f��g��h��&�Ls"�i��j��k��&�Lv"�l��m��n��&�Lw"�o��p��q��&�L|"�r��s��t��&�L}"�u��v��w��&�L~"�x��y��z��&�L"�{��|��}��&�L"�~������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�����&�L"�����&�L"�����&�L"�����&�L"�����&�L"�����&�L"�����&�L"�����&�L"�����&�L"�����&�L"�����&�L"�������&�L"�������&�L"�������&�L"�������&�L"�����&�L"�������&�L"�������&�L"�������&�L"�����&�L"�������&�L"�������&�L"�������&�L"�����&�L"�����&�L"�������&�L"�����&�L"�����&�L"�������&�L"�������&�L"�����&�L"�����&�L"�����&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"��������&�L"�������&�L"�������&�L"� �� �� ��&�L"� �� ����&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"����� ��&�L"�!��"��#��&�L"#�$��%��&��&�L##�'��(��)��&�L$�*��+��&�L %�,��-��&�L%�.��/��&�L%�0��1��&�L%�2��3��4��&�Lq%�5��6��7��&�Lr%�8��9��&�L%�:��;��&�L%�<��=��&�L%�>��?��&�L%�@��A��B��&�L%�C��D��&�L%�E��F��&�L%�G��H��I��&�L%�J��K��L��&�L%�M��N��O��&�L&�P��Q��&�L'�R��S��&�L '�T��U��V��&�L)�W��X��Y��&�L^*�Z��[��\��&�L}*�]��^��_��&�L~*�`��a��b��&�L*�c��d��e��&�L*�f��g��h��&�L*�i��j��k��&�L*�l��m��n��&�L*�o��p��q��&�L*�r��s��t��&�L*�u��v��w��&�L*�x��y��z��&�L*�{��|��}��&�L*�~������&�L*�������&�L*�������&�L*�������&�L*�������&�L*�������&�L*�������&�L*�������&�L*�������&�L*�������&�L*�������&�L�������&�L�������&�L�������&�L �������&�L �������&�L �������&�L�������&�L�������&�L�������&�L�������&�L�������&�L�������&�L�������&�L�������&�L�������&�L�L�� ��&�L ��������&�LA����������&�LB����������&�LC����������&�LD����������&�LE����������&�LF������������&�LG����������&�LH��������&�LI������������&�LJ����������&�LK��������&�LL��������&�LM�����������&�LN����������&�LO������ �� ��&�LP�� �� �� ����&�LQ��������&�LR����������&�LS��������&�LT����������&�LU��������&�LV�� ��!��"��#��&�LW��$��%��&��'��&�LX��(��)��*��+��,��&�LY��-��.��/��0��&�LZ��1��&�L��L�� 2��&�L ��3��4��&�L!��5��6��&�L"��7��8��&�L&��9��:��&�L'��;��<��=��&�L(��>��?��@��&�L)��A��B��&�L*��C��D��E��&�L+��F��G��&�L,��H��I��J��&�L-��K��L��&�L.��M��N��O��&�L/��P��Q��&�L0��R��S��&�L1��T��U��&�L2��V��W��X��&�L3��Y��Z��[��&�L4��\��]��^��&�L5��_��`��&�L6��a��b��c��&�L7��d��e��&�L8��f��g��h��&�L9��i��j��&�L:��k��l��m��&�L;��n��o��p��&�L=��q��r��&�L?��s��t��&�LA��u��v��&�LB��w��x��&�LC��y��z��&�LD��{��|��&�LE��}��~����&�LF������&�LG��������&�LH������&�LI��������&�LJ������&�LK������&�LL������&�LM������&�LN������&�LO��������&�LP��������&�LQ������&�LR������&�LS������&�LT������&�LU������&�LV������&�LW������&�LX��������&�LY��������&�LZ��������&�L[��������&�L]������&�L^������&�La������&�Lb������&�Lc������&�Ld������&�Le��������&�Lf��������&�Lg��������&�Lh������&�Li������&�Lj������&�Lk������&�Ll������&�Lm������&�Ln������&�Lo��������&�Lp��������&�Lq������&�Lr������&�Ls������&�Lt������&�Lu������&�Lv������&�Lw��������&�Lx��������&�Ly��������&�Lz����&�L������&�L �����&�L �����&�L������&�L�������&�L��������&�L�������&�L�����&�L�����&�L��� ��&�L�L��  ��&�L �� �� ��&�L!�� ����&�L"��������&�L#��������&�L$��������&�L%������&�L&������&�L'��������&�L(���� ��!��&�L)��"��#��&�L*��$��%��&��&�L+��'��(��)��&�L,��*��+��&�L-��,��-��&�L.��.��/��0��&�L/��1��2��&�L0��3��4��&�L1��5��6��&�L2��7��8��&�L3��9��:��&�L4��;��<��&�L5��=��>��&�L6��?��@��&�L7��A��B��&�L8��C��D��&�L9��E��F��&�L:��G��H��I��&�L;��J��K��L��&�L<��M��N��O��&�L=��P��Q��R��&�L>��S��T��&�L?��U��V��&�L@��W��X��&�LA��Y��Z��&�LB��[��\��&�LC��]��^��&�LD��_��`��&�LE��a��b��&�LF��c��d��&�LG��e��f��&�LH��g��h��&�LI��i��j��&�LJ��k��l��&�LK��m��n��&�LL��o��p��&�LM��q��r��&�LN��s��t��&�LO��u��v��&�LP��w��x��y��&�LQ��z��{��&�LR��|��}��&�LS��~����&�LT������&�LU��������&�LV��������&�LW������&�LX��������&�LY������&�LZ��������&�L[��������&�L\��������&�L]������&�L^����������&�L_������&�La������&�Lb������&�Lc������&�Ld������&�Le��������&�Lf����������&�Lg������&�Lh������&�Li��������&�Lj������&�Lk������&�Ll������&�Lm������&�Ln������&�Lo��������&�Lp��������&�Lq������&�Lr������&�Ls������&�Lt������&�Lu��������&�Lv��������&�Lw������&�Lx����������&�Ly������&�Lz��������&�L{��������&�L|��������&�L}��������&�L~����&�L������&�L������&�L������&�L������&�L��������&�L������&�L������&�L��������&�L��������&�L������&�L�������&�L��������&�L��������&�L���� ��&�L1� �� ��&�LR� �� ��&�LS�������&�L7�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L��� ��&�L�!��"��&�L�#��$��&�L�%��&��&�L�'��(��&�L�)��*��&�L�+��,��&�L�-��.��&�L�/��0��&�L�1��2��&�L�3��4��&�L�5��6��&�L�7��8��&�L�9��:��&�L�;��<��=��&�L �>��?��@��&�L �A��B��&�L �C��D��&�L �E��F��&�L �G��H��&�L �I��J��K��&�L �L��M��N��&�L! �O��P��&�L2 �Q��R��S��&�L �T��U��&�L!�V��W��&�L!�X��Y��&�L!�Z��[��\��&�L!�]��^��&�L!�_��`��&�L5!�a��b��c��&�L!�d��e��f��&�L!�g��h��i��&�L!�j��k��l��&�L!�m��n��o��&�L!�p��q��r��&�L!�s��t��u��&�L!�v��w��x��&�L!�y��z��{��&�L!�|��}��~��&�L!�������&�L!�������&�L!�������&�L!�������&�L!�������&�L!�������&�L!�������&�L!�������&�L!�������&�L!�������&�L!�����&�L�"�������&�L"�����&�L"�������&�L"�����&�L"�������&�L"�������&�L "�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�������&�L"�����&�L"�����&�L"�����&�L "�������&�L#"�������&�L%"�����&�L'"�����&�L("�����&�L)"�����&�L*"���������&�L+"�������&�L<"�������&�L@"�������&�LC"�������&�LE"�������&�LH"�������&�LM"�������&�La"�������&�Ld"�������&�Le"�������&�Lj"�������&�Lk"��������&�Lz"�������&�L{"�������&�L"� �� �� ��&�L"� �� ����&�L"�������&�L"�����&�L"�������&�L"�������&�L"�����&�L"�����&�L"����� ��&�L"�!��"��#��&�L"�$��%��&��&�L"�'��(��)��&�L"�*��+��,��&�L"�-��.��&�L"�/��0��&�L"�1��2��&�L"�3��4��&�L"�5��6��7��&�L"�8��9��:��&�L"�;��<��=��&�L"�>��?��@��&�L#�A��B��C��&�L #�D��E��F��&�L #�G��H��I��&�L #�J��K��L��&�L"#�M��N��O��&�L##�P��Q��R��&�L%�S��T��U��&�L%�V��W��X��&�L%�Y��Z��[��&�L%�\��]��^��&�L%�_��`��a��&�L`&�b��c��d��&�La&�e��f��g��&�Lb&�h��i��j��&�Lc&�k��l��&�Lm&�m��n��o��&�Ln&�p��q��r��&�Lo&�s��t��u��&�L'�v��w��x��&�L'�y��z��&�L?*�{��|��}��&�L*�~������&�L*�����&�L �L�� ��&�L ��������&�L!��������&�L"����������&�L#����������&�L%��������&�L&��������&�L'����������&�L(����������&�L)��������&�L*����������&�L+��������&�L,��������&�L-������&�L.����������&�L/��������&�L0��������&�L1��������&�L2��������&�L3����������&�L4��������&�L5��������&�L6����������&�L7��������&�L8��������&�L9��������&�L:����������&�L;����������&�L=��������&�L?��������&�L@������&�LA��������&�LB��������&�LC��������&�LD��������&�LE��������&�LF��������&�LG��������&�LH��������&�LI���������&�LJ��������&�LK������&�LL��������&�LM�� �� �� ��&�LN�� �� ����&�LO��������&�LP����������&�LQ��������&�LR��������&�LS��������&�LT���� ��!��&�LU��"��#��$��&�LV��%��&��'��&�LW��(��)��*��&�LX��+��,��-��&�LY��.��/��0��&�LZ��1��2��3��4��&�L[��5��6��7��8��&�L]��9��:��;��&�L^��<��=��>��?��&�L_��@��A��B��&�La��C��D��E��&�Lb��F��G��H��&�Lc��I��J��K��&�Ld��L��M��N��&�Le��O��P��Q��R��&�Lf��S��T��U��V��&�Lg��W��X��Y��&�Lh��Z��[��\��&�Li��]��^��_��`��&�Lj��a��b��c��&�Lk��d��e��f��&�Ll��g��h��i��&�Lm��j��k��l��&�Ln��m��n��o��&�Lo��p��q��r��s��&�Lp��t��u��v��w��&�Lq��x��y��z��&�Lr��{��|��}��&�Ls��~������&�Lt��������&�Lu��������&�Lv��������&�Lw��������&�Lx����������&�Ly��������&�Lz����������&�L~����&�L��������&�L������&�L������&�L��������&�L����������&�L����������&�L��������&�L����������&�L��������&�L1�������&�LR�������&�LS���������&�L7�������&�L�������&�L�������&�L�������&�L�����&�L�������&�L�������&�L�����&�L�������&�L�������&�L�������&�L�����&�L�������&�L�����&�L�������&�L�������&�L�������&�L�������&�L�������&�L�������&�L�������&�L�������&�L �������&�L ��������&�L �������&�L �������&�L � �� �� ��&�L �L��  ��&�L �� ������&�L!��������&�L"����������&�L#����������&�L%��������&�L&������ ��&�L'��!��"��#��$��&�L(��%��&��'��(��&�L)��)��*��+��&�L*��,��-��.��/��&�L+��0��1��2��&�L,��3��4��5��&�L-��6��7��&�L.��8��9��:��;��&�L/��<��=��>��&�L0��?��@��A��&�L1��B��C��D��&�L2��E��F��G��&�L3��H��I��J��K��&�L4��L��M��N��&�L5��O��P��Q��&�L6��R��S��T��U��&�L7��V��W��X��&�L8��Y��Z��[��&�L9��\��]��^��&�L:��_��`��a��b��&�L;��c��d��e��f��&�L=��g��h��i��&�L?��j��k��l��&�L@��m��n��&�LA��o��p��q��&�LB��r��s��t��&�LC��u��v��w��&�LD��x��y��z��&�LE��{��|��}��&�LF��~������&�LG��������&�LH��������&�LI��������&�LJ��������&�LK������&�LL��������&�LM��������&�LN��������&�LO��������&�LP����������&�LQ��������&�LR��������&�LS��������&�LT��������&�LU��������&�LV��������&�LW��������&�LX��������&�LY��������&�LZ����������&�L[����������&�L]��������&�L^����������&�L_��������&�La��������&�Lb��������&�Lc��������&�Ld��������&�Le����������&�Lf����������&�Lg��������&�Lh��������&�Li����������&�Lj��������&�Lk��������&�Ll��������&�Lm��������&�Ln��������&�Lo����������&�Lp��������� ��&�Lq�� �� �� ��&�Lr�� �� �� ��&�Ls�� �� �� ��&�Lt�� �� �� ��&�Lu�� �� �� ��&�Lv�� �� �� ��&�Lw�� �� �� ��&�Lx�� �� �� �� ��&�Ly�� �� �� ��&�Lz�� �� �� �� ��&�L~��! ��&�L��" ��# ��$ ��&�L��% ��& ��&�L��' ��( ��&�L��) ��* ��+ ��&�L��, ��- ��. ��/ ��&�L��0 ��1 ��2 ��3 ��&�L��4 ��5 ��6 ��&�L��7 ��8 ��9 ��: ��&�L��; ��< ��= ��&�LR�> ��? ��@ ��&�LS�A ��B ��C ��&�L�D ��E ��F ��&�L�G ��H ��I ��&�L�J ��K ��L ��&�L�M ��N ��&�L�O ��P ��Q ��&�L�R ��S ��T ��&�L�U ��V ��&�L�W ��X ��Y ��&�L�Z ��[ ��\ ��&�L�] ��^ ��_ ��&�L�` ��a ��&�L�b ��c ��d ��&�L�e ��f ��&�L�g ��h ��i ��&�L�j ��k ��l ��&�L�m ��n ��o ��&�L�p ��q ��r ��&�L�s ��t ��u ��&�L�v ��w ��x ��&�L�y ��z ��{ ��&�L�| ��} ��~ ��&�L � �� �� ��&�L � �� �� ��&�L � �� �� ��&�L � �� �� ��&�L � �� �� ��&�L � �� ��&�L!�L��  ��&�L �� �� ��&�L!�� �� ��&�L"�� �� �� ��&�L#�� �� �� ��&�L$�� �� �� ��&�L%�� �� ��&�L&�� �� ��&�L'�� �� �� ��&�L(�� �� �� ��&�L)�� �� ��&�L*�� �� �� ��&�L+�� �� �� ��&�L,�� �� ��&�L-�� �� ��&�L.�� �� �� ��&�L/�� �� ��&�L0�� �� ��&�L1�� �� ��&�L2�� �� ��&�L3�� �� ��&�L4�� �� ��&�L5�� �� ��&�L6�� �� ��&�L7�� �� ��&�L8�� �� ��&�L9�� �� ��&�L:�� �� �� ��&�L;�� �� �� ��&�L<�� �� �� ��&�L=�� �� �� ��&�L>�� �� ��&�L?�� �� ��&�L@�� �� ��&�LA�� �� ��&�LB�� �� ��&�LC�� �� ��&�LD�� �� ��&�LE�� �� ��&�LF�� �� ��&�LG�� �� ��&�LH�� �� ��&�LI�� �� ��&�LJ�� �� ��&�LK�� �� ��&�LL�� �� ��&�LM�� �� ��&�LN�� �� ��&�LO�� �� ��&�LP�� �� �� ��&�LQ��� �� ��&�LR�� �� ��&�LS�� �� ��&�LT�� �� ��&�LU�� �� �� ��&�LV�� �� �� ��&�LW�� �� ��&�LX�� �� �� ��&�LY�� �� ��&�LZ�� �� �� ��&�L[�� �� �� ��&�L\�� �� �� ��&�L]�� �� ��&�L^�� ��! ��" ��# ��&�L_��$ ��% ��&�La��& ��' ��&�Lb��( ��) ��&�Lc��* ��+ ��&�Ld��, ��- ��&�Le��. ��/ ��0 ��&�Lf��1 ��2 ��3 ��4 ��&�Lg��5 ��6 ��&�Lh��7 ��8 ��&�Li��9 ��: ��; ��&�Lj��< ��= ��&�Lk��> ��? ��&�Ll��@ ��A ��&�Lm��B ��C ��&�Ln��D ��E ��&�Lo��F ��G ��H ��&�Lp��I ��J ��K ��&�Lq��L ��M ��&�Lr��N ��O ��&�Ls��P ��Q ��&�Lt��R ��S ��&�Lu��T ��U ��V ��&�Lv��W ��X ��Y ��&�Lw��Z ��[ ��&�Lx��\ ��] ��^ ��_ ��&�Ly��` ��a ��&�Lz��b ��c ��d ��&�L{��e ��f ��g ��&�L|��h ��i ��j ��&�L}��k ��l ��m ��&�L~��n ��&�L��o ��p ��&�L��q ��r ��s ��&�L��t ��u ��&�L��v ��w ��&�L��x ��y ��&�L��z ��{ ��| ��&�L��} ��~ �� ��&�L�� �� ��&�L�� �� ��&�L�� �� �� ��&�L�� �� �� ��&�L�� �� ��&�L�� �� ��&�L�� �� �� ��&�L�� �� �� ��&�L�� �� ��&�L1� �� ��&�LR� �� ��&�LS� �� �� ��&�L7� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� ��&�L� �� �� ��&�L � �� ��&�L � �� ��&�L � �� ��&�L � �� ��&�L � �� ��&�L � �� �� ��&�L � �� �� ��&�L! � �� ��&�L& � �� ��&�L2 � �� �� ��&�L � �� ��&�L!� �� ��&�L!� �� �� ��&�L!� �� �� �� ��&�L!� �� ��&�L!� �� ��&�L5!� �� ��&�L!� �� �� ��&�L!� �� ��&�L!� �� �� ��&�L!� �� ��&�L!� �� �� ��&�L!� ��� ��&�L!� �� ��&�L!� �� ��&�L!� �� ��&�L!� �� ��&�L!� �� �� ��&�L!� �� �� ��&�L!� �� ��&�L!� �� ��&�L!� �� ��&�L!� �� ��&�L!� �� ��&�L!� �� ��&�L!� �� �� ��&�L!� �� ��&�L!� ��! ��" ��&�L!�# ��$ ��&�L!�% ��& ��' ��&�L!�( ��) ��&�L�"�* ��+ ��, ��- ��&�L"�. ��/ ��&�L"�0 ��1 ��2 ��&�L"�3 ��4 ��&�L"�5 ��6 ��7 ��&�L"�8 ��9 ��: ��&�L "�; ��< ��= ��&�L"�> ��? ��@ ��&�L"�A ��B ��C ��&�L"�D ��E ��F ��&�L"�G ��H ��I ��&�L"�J ��K ��L ��&�L"�M ��N ��O ��&�L"�P ��Q ��R ��&�L"�S ��T ��&�L"�U ��&�L"�V ��W ��&�L "�X ��Y ��Z ��&�L#"�[ ��\ ��] ��&�L%"�^ ��_ ��&�L'"�` ��a ��&�L("�b ��c ��&�L)"�d ��e ��&�L*"�f ��g ��h ��i ��&�L+"�j ��k ��l ��&�L<"�m ��n ��o ��&�L@"�p ��q ��r ��&�LC"�s ��t ��u ��&�LE"�v ��w ��x ��&�LH"�y ��z ��{ ��&�LM"�| ��} ��~ ��&�LP"� �� �� ��&�La"� �� �� ��&�Ld"� �� �� ��&�Le"� �� ��&�Lj"� �� ��&�Lk"� �� �� ��&�Lz"� �� �� ��&�L{"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� ��&�L"� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� ��&�L"� �� ��&�L"� �� ��&�L"� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L"� �� �� ��&�L#� �� �� ��&�L #� �� �� ��&�L #� �� �� ��&�L #� �� ��&�L"#� �� ��&�L##� �� �� ��&�L#� �� �� ��&�L#� �� �� ��&�L%� �� �� ��&�L%� �� �� ��&�L%� �� �� ��&�L%� �� ��&�L%� �� �� ��&�L`&�� �� �� ��&�La&� �� �� ��&�Lb&� �� �� ��&�Lc&� �� ��&�Lm&� �� �� ��&�Ln&� �� �� ��&�Lo&� �� �� ��&�L'� �� �� ��&�L'� �� �� ��&�L'� �� �� ��&�L'� �� �� ��&�L'� ��! ��" ��&�L'�# ��$ ��% ��&�L'�& ��' ��( ��&�L'�) ��* ��+ ��&�L'�, ��- ��. ��&�L'�/ ��0 ��1 ��&�L'�2 ��3 ��&�L?*�4 ��5 ��6 ��&�L*�7 ��8 ��9 ��&�L*�: ��; ��&�L �L�� < ��&�L ��= ��> ��&�L0��? ��@ ��&�L1��A ��B ��&�L2��C ��D ��E ��&�L3��F ��G ��H ��&�L4��I ��J ��K ��&�L5��L ��M ��&�L6��N ��O ��P ��&�L7��Q ��R ��&�L8��S ��T ��U ��&�L9��V ��W ��&�LA��X ��Y ��Z ��&�LB��[ ��\ ��] ��&�LC��^ ��_ ��` ��&�LD��a ��b ��c ��&�LE��d ��e ��f ��&�LF��g ��h ��&�LG��i ��j ��k ��&�LH��l ��m ��n ��&�LI��o ��p ��q ��&�LJ��r ��s ��t ��&�LK��u ��v ��&�LL��w ��x ��y ��&�LM��z ��{ ��| ��&�LN��} ��~ �� ��&�LO�� �� �� ��&�LP�� �� �� ��&�LQ�� �� �� ��&�LR�� �� �� ��&�LS�� �� �� ��&�LT�� �� �� ��&�LU�� �� �� ��&�LV�� �� �� ��&�LW�� �� �� ��&�LX�� �� �� ��&�LY�� �� �� ��&�LZ�� �� ��&�La�� �� ��&�Lb�� �� ��&�Lc�� �� ��&�Ld�� �� ��&�Le�� �� �� �� ��&�Lf�� �� �� �� ��&�Lg�� �� ��&�Lh�� �� ��&�Li�� �� �� �� ��&�Lj�� �� �� ��&�Lk�� �� �� ��&�Ll�� �� ��&�Lm�� �� ��&�Ln�� �� ��&�Lo�� �� �� ��&�Lp�� �� �� �� ��&�Lq�� �� �� ��&�Lr�� �� ��&�Ls�� �� ��&�Lt�� �� ��&�Lu�� �� �� ��&�Lv�� �� �� ��&�Lw�� �� ��&�Lx�� �� �� �� ��&�Ly�� �� �� ��&�Lz�� ��&�L�� �� �� ��&�L� �� ��&�L� �� �� ��&�L� �� ��&�L� �� �� ��&�L� �� �� ��&�L� �� �� ��&�L� �� �� ��&�L� �� ��&�L� ��� �� ��&�L� �� �� ��&�L� �� ��&�L� �� �� �� ��&�L� �� �� �� ��&�L� �� �� ��&�L� �� ��&�L� �� �� �� ��&�L� �� �� �� ��&�L� �� �� ��&�L� �� ��&�L�! ��" ��&�L�# ��$ ��&�L�% ��& ��' ��&�L�( ��) ��* ��&�L�+ ��, ��- ��. ��&�L�/ ��0 ��&�L�1 ��2 ��3 ��&�L�4 ��5 ��6 ��&�L�7 ��8 ��9 ��: ��&�L�; ��< ��= ��&�L�> ��? ��@ ��&�L�A ��B ��C ��&�L�D ��E ��F ��&�L�G ��H ��I ��&�L�J ��K ��L ��M ��&�L�N ��O ��P ��&�L�Q ��R ��&�L�S ��T ��U ��&�L�V ��W ��X ��&�L�Y ��Z ��[ ��&�L�\ ��] ��&�L�^ ��_ ��&�L1�` ��a ��b ��&�L7�L�� c ��&�L ��d ��e ��&�L0��f ��g ��&�L1��h ��i ��&�L2��j ��k ��l ��&�L3��m ��n ��o ��&�L4��p ��q ��r ��&�L5��s ��t ��&�L6��u ��v ��w ��&�L7��x ��y ��&�L8��z ��{ ��| ��&�L9��} ��~ �� ��&�LA�� �� �� �� ��&�LB�� �� �� �� ��&�LC�� �� �� �� ��&�LD�� �� �� �� ��&�LE�� �� �� �� ��&�LF�� �� �� ��&�LG�� �� �� �� ��&�LH�� �� �� �� ��&�LI�� �� �� �� ��&�LJ�� �� �� �� ��&�LK�� �� �� ��&�LL�� �� �� �� ��&�LM�� �� �� �� ��&�LN�� �� �� �� ��&�LO�� �� �� �� ��&�LP�� �� �� �� ��&�LQ�� �� �� �� ��&�LR�� �� �� �� ��&�LS�� �� �� �� ��&�LT�� �� �� �� ��&�LU�� �� �� ��&�LV�� �� �� ��&�LW�� �� �� �� ��&�LX�� �� �� ��&�LY�� �� �� �� ��&�LZ�� �� ��&�La�� �� ��&�Lb�� �� �� ��&�Lc�� �� �� ��&�Ld�� �� �� ��&�Le�� �� �� �� �� ��&�Lf�� �� �� �� �� ��&�Lg�� �� ��&�Lh�� �� ��&�Li�� �� �� �� ��&�Lj�� �� �����&�Lk����������&�Ll������&�Lm������&�Ln�� �� �� ��&�Lo�� �� ������&�Lp������������&�Lq����������&�Lr��������&�Ls��������&�Lt���� ��!��&�Lu��"��#��$��%��&�Lv��&��'��(��)��&�Lw��*��+��,��&�Lx��-��.��/��0��1��&�Ly��2��3��4��5��&�Lz��6��&�L��7��8��9��:��&�L�;��<��=��&�L�>��?��@��A��&�L�B��C��D��&�L�E��F��G��H��&�L�I��J��K��L��&�L�M��N��O��P��&�L�Q��R��S��T��&�L�U��V��W��&�L�X��Y��Z��[��&�L�\��]��^��_��&�L�`��a��b��c��&�L�d��e��f��g��h��&�L�i��j��k��l��&�L�m��n��o��p��&�L�q��r��s��&�L�t��u��v��w��x��&�L�y��z��{��|��}��&�L�~��������&�L�������&�L�����&�L�����&�L���������&�L���������&�L�����������&�L�������&�L�������&�L���������&�L�����������&�L�������&�L���������&�L���������&�L���������&�L���������&�L�����������&�L�������&�L�������&�L���������&�L�������&�L���������&�L�������&�L�������&�L1���������&�L7�L�� ��&�L ������&�L!������&�L"��������&�L#��������&�L$��������&�L%������&�L&������&�L'��������&�L(��������&�L)������&�L*��������&�L+��������&�L,������&�L-������&�L.��������&�L/�������&�L0������&�L1������&�L2������&�L3������&�L4�� �� ��&�L5�� �� ��&�L6�� ����&�L7������&�L8������&�L9������&�L:��������&�L;��������&�L=������&�L?������&�L@���� ��&�LA��!��"��&�LB��#��$��&�LC��%��&��&�LD��'��(��&�LE��)��*��&�LF��+��,��&�LG��-��.��&�LH��/��0��&�LI��1��2��&�LJ��3��4��&�LK��5��6��&�LL��7��8��&�LM��9��:��&�LN��;��<��&�LO��=��>��&�LP��?��@��A��&�LQ��B��C��&�LR��D��E��&�LS��F��G��&�LT��H��I��&�LU��J��K��L��&�LV��M��N��O��&�LW��P��Q��&�LX��R��S��T��&�LY��U��V��&�LZ��W��X��Y��&�L[��Z��[��\��&�L]��]��^��&�L^��_��`��a��b��&�L_��c��d��&�La��e��f��&�Lb��g��h��&�Lc��i��j��&�Ld��k��l��&�Le��m��n��o��&�Lf��p��q��r��s��&�Lg��t��u��&�Lh��v��w��&�Li��x��y��z��&�Lj��{��|��&�Lk��}��~��&�Ll������&�Lm������&�Ln������&�Lo��������&�Lp��������&�Lq��������&�Lr������&�Ls������&�Lt������&�Lu��������&�Lv��������&�Lw������&�Lx����������&�Ly������&�Lz��������&�L~����&�L������&�L������&�L������&�L������&�L������&�L1�������&�L7�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�����&�L�������&�L �������&�L �����&�L �����&�L �����&�L �����&�L �L�� ��&�L ��������&�L!��������&�L"����������&�L#����������&�L$����������&�L%��������&�L&��������&�L'�����������&�L(����������&�L)���� �� ��&�L*�� �� �� ����&�L+��������&�L,��������&�L-������&�L.����������&�L/��������&�L0������ ��&�L1��!��"��#��&�L2��$��%��&��&�L3��'��(��)��&�L4��*��+��,��&�L5��-��.��/��&�L6��0��1��2��&�L7��3��4��5��&�L8��6��7��8��&�L9��9��:��;��&�L:��<��=��>��?��&�L;��@��A��B��C��&�L=��D��E��F��&�L?��G��H��I��&�L@��J��K��&�LA��L��M��N��&�LB��O��P��Q��&�LC��R��S��T��&�LD��U��V��W��&�LE��X��Y��Z��&�LF��[��\��]��&�LG��^��_��`��&�LH��a��b��c��&�LI��d��e��f��&�LJ��g��h��i��&�LK��j��k��&�LL��l��m��n��&�LM��o��p��q��&�LN��r��s��t��&�LO��u��v��w��&�LP��x��y��z��{��&�LQ��|��}��~��&�LR��������&�LS��������&�LT��������&�LU��������&�LV��������&�LW��������&�LX��������&�LY��������&�LZ����������&�L[����������&�L]��������&�L^����������&�L_��������&�La��������&�Lb��������&�Lc��������&�Ld��������&�Le��������&�Lf����������&�Lg��������&�Lh��������&�Li����������&�Lj��������&�Lk��������&�Ll��������&�Lm��������&�Ln��������&�Lo����������&�Lp����������&�Lq��������&�Lr��������&�Ls��������&�Lt��������&�Lu��������&�Lv��������&�Lw��������&�Lx����������&�Ly��������&�Lz����������&�L~����&�L���������&�L������&�L������&�L��������&�L1��� �� �� ��&�L7� �� ����&�L�������&�L�������&�L�������&�L�����&�L�������&�L�������&�L� ��!��&�L�"��#��$��&�L�%��&��'��&�L�(��)��*��&�L�+��,��&�L�-��.��/��&�L�0��1��&�L�2��3��4��&�L�5��6��7��&�L�8��9��:��&�L�;��<��=��&�L�>��?��@��&�L�A��B��C��&�L�D��E��F��&�L�G��H��I��&�L �J��K��&�L �L��M��N��&�L �O��P��Q��&�L �R��S��T��&�L �U��V��W��&�L �L�� X��&�L ��Y��Z��&�L!��[��\��&�L"��]��^��_��&�L#��`��a��b��&�L$��c��d��e��&�L%��f��g��&�L&��h��i��&�L'��j��k��l��&�L(��m��n��o��&�L)��p��q��&�L*��r��s��t��&�L+��u��v��w��&�L,��x��y��&�L-��z��{��&�L.��|��}��~��&�L/������&�L0������&�L1������&�L2������&�L3������&�L4������&�L5������&�L6������&�L7������&�L8������&�L9������&�L:��������&�L;��������&�L=������&�L?������&�L@������&�LA������&�LB������&�LC������&�LD������&�LE������&�LF������&�LG������&�LH������&�LI������&�LJ������&�LK������&�LL������&�LM������&�LN������&�LO������&�LP��������&�LQ������&�LR������&�LS������&�LT������&�LU��������&�LV��������&�LW������&�LX��������&�LY������&�LZ��������&�L[��������&�L]������&�L^����������&�L_������&�La������&�Lb������&�Lc������&�Ld������&�Le��������&�Lf����������&�Lg������&�Lh������&�Li��������&�Lj������&�Lk������&�Ll�������&�Lm������&�Ln������&�Lo��������&�Lp���� �� ��&�Lq�� �� �� ��&�Lr������&�Ls������&�Lt������&�Lu��������&�Lv��������&�Lw������&�Lx����������&�Ly�� ��!��&�Lz��"��#��$��&�L~��%��&�L��&��'��&�L��(��)��&�L��*��+��&�L��,��-��&�L1�.��/��0��&�L7�1��2��&�L�3��4��&�L�5��6��&�L�7��8��&�L�9��:��&�L�;��<��&�L�=��>��&�L�?��@��&�L�A��B��&�L�C��D��&�L�E��F��&�L�G��H��&�L�I��J��&�L�K��L��&�L�M��N��&�L�O��P��&�L�Q��R��&�L�S��T��&�L�U��V��&�L�W��X��&�L�Y��Z��&�L�[��\��]��&�L �^��_��&�L �`��a��&�L �b��c��&�L �d��e��&�L �f��g��&�L �L�� h��&�L ��i��j��k��&�LA��l��m��n��&�LB��o��p��q��&�LC��r��s��t��&�LD��u��v��w��&�LE��x��y��z��&�LF��{��|��}��&�LG��~������&�LH��������&�LI����������&�LJ��������&�LK��������&�LL��������&�LM��������&�LN��������&�LO��������&�LP��������&�LQ��������&�LR��������&�LS��������&�LT��������&�LU��������&�LV��������&�LW��������&�LX��������&�LY��������&�LZ����&�L��L�� ��&�L ��������&�L(��������&�L)��������&�L/��������&�L[��������&�L\��������&�L]��������&�L{��������&�L}����&�L������&�L�����&�L�����&�L�����&�L�������&�L �������&�L!�������&�L!�������&�L!�������&�L!�������&�L"�������&�L"�������&�L"�����&�L"�������&�L#"�������&�L%"���������&�L+"����������&�L,"���������&�L-"����� �� ��&�L."� �� �� ��&�L"�������&�L"�������&�L"�������&�L"�������&�L#�������&�L #�������&�L #� ��!��"��&�L #�#��$��%��&�L#�&��'��(��&�L'�)��*��+��&�L'�,��-��.��&�L�*�/��0��1��&�L*�2��3��4��&�L*�5��6��7��&�L*�8��9��:��&�L*�L�� ;��&�L ��<��=��>��&�L(��?��@��A��&�L)��B��C��D��&�L/��E��F��G��&�L[��H��I��J��&�L\��K��L��M��&�L]��N��O��P��&�L{��Q��R��S��&�L}��T��&�L��U��&�L�V��&�L�W��&�L�X��&�L�Y��Z��[��&�L"�\��]��^��&�L"�_��`��a��&�L"�b��c��&�L"�d��e��f��g��&�L+"�h��i��j��k��&�L,"�l��m��n��o��&�L-"�p��q��r��s��&�L."�t��u��v��&�L"�w��x��y��&�L"�z��{��|��&�L"�}��~����&�L"�������&�L#�������&�L #�������&�L #�������&�L #�������&�L'�������&�L'�������&�L�*�������&�L*�������&�L*�������&�L*�������&�L*�L�� ��&�L ��������&�L(��������&�L)��������&�L/��������&�L[��������&�L\��������&�L]��������&�L{��������&�L}����&�L������&�L�����&�L�����&�L�����&�L�����&�L"�������&�L#�������&�L #�������&�L #�������&�L #�������&�L'�������&�L'�L�� ��&�L ��������&�L(��������&�L)��������&�L/��������&�L[��������&�L\��������&�L]��������&�L{��������&�L}����&�L������&�L�����&�L�����&�L�����&�L�����&�L"�������&�L#��������&�L #�������&�L #�������&�L #����� ��&�L#� �� �� ��&�L#� ������&�L#�������&�L#�������&�L#�������&�L#�������&�L#�������&�L#��� ��!��&�L#�"��#��$��&�L#�%��&��'��&�L#�(��)��*��&�L#�+��,��-��&�L#�.��/��0��&�L#�1��2��&�L#�3��4��&�L#�5��6��7��&�L#�8��9��:��&�L#�;��<��&�L#�=��>��?��&�L#�@��A��B��&�L'�C��D��E��&�L'�F��G��H��&�L��I��J��K��&�L�L��M��&�LP�N��O��&�LQ�P��Q��&�LR�R��S��&�LS�L�� T��&�L ��U��V��&�L!��W��X��&�L"��Y��Z��&�L#��[��\��]��&�L$��^��_��`��&�L%��a��b��&�L&��c��d��&�L'��e��f��g��&�L(��h��i��j��&�L)��k��l��&�L*��m��n��o��&�L+��p��q��r��&�L,��s��t��u��&�L-��v��w��&�L.��x��y��z��&�L/��{��|��&�L0��}��~��&�L1������&�L2������&�L3������&�L4������&�L5������&�L6������&�L7������&�L8������&�L9������&�L:��������&�L;��������&�L<��������&�L=��������&�L>������&�L?������&�L@������&�LA������&�LB������&�LC������&�LD������&�LE������&�LF������&�LG������&�LH������&�LI������&�LJ������&�LK������&�LL������&�LM������&�LN������&�LO������&�LP��������&�LQ������&�LR������&�LS������&�LT������&�LU������&�LV������&�LW������&�LX������&�LY������&�LZ��������&�L[��������&�L\��������&�L]������&�L^������&�L_������&�L`������&�La������&�Lb������&�Lc������&�Ld������&�Le������&�Lf��������&�Lg������&�Lh������&�Li��������&�Lj������&�Lk������&�Ll�������&�Lm������&�Ln������&�Lo��������&�Lp���� �� ��&�Lq�� �� ��&�Lr�� ����&�Ls������&�Lt������&�Lu������&�Lv������&�Lw������&�Lx��������&�Ly������&�Lz������ ��&�L{��!��"��#��&�L|��$��%��&��&�L}��'��(��&�L~��)��*��&�L��+��&�L��,��-��&�L��.��/��&�L��0��1��&�L1�2��3��4��&�L7�5��6��&�L�7��8��&�L�9��:��&�L�;��<��&�L�=��>��&�L�?��@��&�L�A��B��&�L�C��D��&�L�E��F��&�L�G��H��&�L�I��J��&�L�K��L��&�L�M��N��&�L�O��P��&�L�Q��R��&�L�S��T��&�L�U��V��&�L�W��X��&�L�Y��Z��&�L�[��\��&�L�]��^��&�L �_��`��&�L �a��b��&�L2 �c��d��e��&�L#$�L��? f��g��h��&�L ��&�L!��&�L"��&�L#��i��j��k��&�L$��l��m��&�L%��&�L&��n��o��p��&�L'��q��r��s��&�L(��t��u��v��&�L)��w��x��y��&�L*��z��{��|��&�L+��}��~����&�L,��������&�L-��������&�L.��������&�L/��������&�L0��������&�L1��������&�L2��������&�L3��������&�L4��������&�L5��������&�L6��������&�L7��������&�L8��������&�L9��������&�L:��������&�L;��������&�L<�� &�L=��������&�L>��������&�L?��������&�L@��������&�LA��@ B��LC��D��LE��?��LF��G��LH��B��LI��?��LJ��B��LK����LL����LM��N��LO��B��LP�� ��LQ��Y��LR����LS��T��LU��T��LV��Y��LW��T��LX����LY��Z��L[�����L\��T��L]��^��L_��D��L`��+��La��x��Lb�����Lc����Ld��e��Lf��g��Lh��;��Li��;��Lj����Lk����Ll����Lm����Ln����Lo��X��Lp��G��Lq��r��Ls��G��Lt�����Lu��x��Lv��w��Lx����Ly��w��Lz��{��L|��{��L}��{��L~��{��L����L��{��L��?��L��{��L��K��L����L��?��L��x��L��r��L����L��{��L��{��L����L����L��G��L����L��G��L��w��L����L�����L��A D&�&�&�&�&�&�&�&� &� &� &�& �F��������������������& �G��M%��HaJ�aK���V������T�����T�����T�����T�����T�����T�����T�����T�����T�����T�����T�����T�����T�����T�����T�����T���KJiK�iJ�IIC�� L ��; L��;�L����L ���# L�� L��L��:L��L��ZkL�����L��# L��L L��L��L��M��M)��N��M*��O��M+��P��M,��Q��M-��R��M.��S����3T��M0��UaW���V1�����T�����T �����T �����T ���WiW�VaY���V2�����T�����T �����T �����T ���YiY�Xa[���V3�����T �����T �����T ���[i[�Z ��L����L����L����L��\a^���V5�����T �����T �����T ���^i^�]a`���V6�����T �����T ���`i`�_ab���V7�����T �����T ���bib�aad���V8������T �����T ���did�c L��L��L��L��L��L��g L��L��L��L��L��h L�� L��i��k��l��m��n��o��p��q��r��s��t��u��v��w��x��yjkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmv����"�jkmv����"�jkmy�����"�jlmy�����"�jkmy?����"�jlmy?����"�jkmy����"�jkmy����"�jkmy����"�jkmy�� ��"�jkmy �� ��"�jkmy �� ��"�jkmy����"�jkmy����"�jkmy����"�jkmy����"�jkmy����"�jkmy����"�jkmy����"�jkmy����"�jkmy����"�jkmy ��!��"�jkmy"��#��"�jlmy"��#��"�jkmy$��%��"�jlmy$��%��"�jkmy&��'��"�jlmy&��'��"�jlmy&��(��"�jkmy)��*��"�jlmy)��*��"�jlmy)��+��"�jkmq,��-��"�jkmu.��/��"�jkmq0��1��"�jkmu2��3��"�jkmp4��5��"�jkmp6��7��"�jkmp8��9��"�jkmp:��;��"�jkmp<��=��"�jkmp>��?��"�jkmp@��A��"�jkmpB��C��"�jkmp)��D��"�jkmpE��F��"�jkmpG��H��"�jkmp?��I��"�jkmwJ��K��"�jkmwL��M��"�jkmwN��O��"�jkmwP��Q��"�jkmwR��S��"�jkmwT��U��"�jkmwV��W��"�jkmwX��Y��"�jkmwZ��[��"�jkmw\��]��"�jkmw^��_��"�jkmw`��a��"�jkmwb��c��"�jkmwd��e��"�jkmwf��g��"�jkmwh��i��"�jkmwj��k��"�jkmwl��m��"�jkmwn��o��"�jkmwp��q��"�jkmwr��s��"�jkmwt��u��"�jkmwv��w��"�jknwx��y��"�jknwz��{��"�jknw|��}��"�jknw~����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknp����"�jknp����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jkny����"�jkny����"�jkny����"�jkny����"�jkny����"�jlny����"�jkny����"�jkny����"�jkny����"�jkny����"�jkny�����"�jkny����"�jkny����"�jkny����"�jkny����"�jkny �� ��"�jkny �� ��"�jkny ����"�jkny����"�jknyI����"�jlmyI��I��"�jkny����"�jkny����"�jkny����"�jkny����"�jkny����"�jkny����"�jlny����"�jkny����"�jlny����"�jkny����"�jkny ��!��"�jkny"��#��"�jkny$��%��"�jkny&��'��"�jknu(��)��"�jknq*��+��"�jknu,��-��"�jknq.��/��"�jknw0��1��"�jknw2��3��"�jknw4��5��"�jknw6��7��"�jknw8��9��"�jknw:��;��"�jknp<��=��"�jknw>��?��"�jknw@��A��"�jknwB��C��"�jknwD��E��"�jknwF��G��"�jknwH��I��"�jknwJ��K��"�jknwL��M��"�jknwN��O��"�jknwP��Q��"�jknwR��S��"�jknwT��U��"�jknwV��W��"�jknwX��Y��"�jknwZ��[��"�jknw\��]��"�jknw^��_��"�jknw��`��"�jknwa��b��"�jknwc��d��"�jknw��e��"�jknw��f��"�jknwg��h��"�jknwi��j��"�jknwk��l��"�jknwm��n��"�jknwo��p��"�jknwq��r��"�jknws��t��"�jknpu��v��"�jknww��x��"�jknwy��z��"�jknw{��|��"�jknw}��~��"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw>����"�jknww����"�jknp^����"�jknp����"�jknw����"�jkmw����"�jknwF����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknp����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jkmw����"�jkmw����"�jknw����"�jknw�����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw �� ��"�jknw �� ��"�jknw ����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jknw����"�jkmy����"�jkmy�� ��"�jlmy�� ��"�jlmy��!��"�jkmy"��#��"�jlmy"��#��"�jkmy$��%��"�jlmy$��%��"�jlmy$��&��"�jkmy'��(��"�jkmy)��*��"�jkmy+��,��"�jkmy��-��"�jkmy.��/��"�jkmy0��1��"�jkmy2��3��"�jkmy4��5��"�jkmy6��7��"�jkmy8��9��"�jkmy:��;��"�jkmy<��=��"�jkmy>��?��"�jkmy@��A��"�jkmyB��C��"�jkmyB��D��"�jkmy��E��"�jkmy ��F��"�jkmyC��G��"�jkmyZ��H��"�jkmyG��I��"�jkmyY��J��"�jkmy��K��"�jkmyT��L��"�jkmy���M��"�jkmy^��N��"�jkmy+��O��"�jkmy��P��"�jkmyQ��R��"�jkmyQ��S��"�jkmyT��U��"�jkmy��V��"�jkmyW��X��"�jknyW��Y��"�jkmsZ��[��"�jkms\��]��"�jkms^��_��"�jkms`��a��"�jkmsb��c��"�jkmsd��e��"�jkmsf��g��"�jkmsh��i��"�jkmsj��k��"�jkmsl��m��"�jkmsn��o��"�jkmsp��q��"�jkmsr��s��"�jkmst��u��"�jkmsv��w��"�jkmsx��y��"�jkmsz��{��"�jkms|��}��"�jkms~����"�jkms����"�jkms����"�jkms����"�jkms����"�jkms����"�jkms����"�jkms����"�jkms����"�jkms����"�jkms����"�jkms����"�jkmp<�����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmp����"�jkmy����"�jkmu����"�jkmu����"�jkmu����"�jkmq����"�jkmq����"�jkmq����"�jkmq����"�jkmq����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmwA����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jkmw����"�jknw����"�jknw����"�jkmwa����"�jkmw����"�jkmw����"�jkmw����"�jkmwC����"�jkmw����"�jkmw����"�jknw����"�jknw����"�jkmx����"�jkmx����"�jkmx����"�jlmx����"�jlmx����"�jlmx����"�jlmx����"�jkmx��"�jkmx��"�jkmv����"�jkmv����"�jknp����"�jknp����"�jkmp����"�jkmp����"�jkmp����"�jkmy����"�jkmp����"�jknp����"�jknp����"�jkmp����"�jkmp����"�jkmp&����"�jkmp�����"�jkmp����"�jkmp����"�jkmp����"�jkmu����"�jlmy����"�jlmy�� ��"�jkmq �� ��"�jlmy �� ��"�jlmy �� ��"�jkmu�� ��"�jkmq ����"�jkmu����"�jlmy����"�jkmq����"�jlmy����"�jkmu����"�jkmq����"�jlmyC����"�jlmyA����"�jkmu����"�jkmq����"�jkmu����"�jkmq�� ��"�jkmy!��"��"�jkmy��#��"�jkmy��$��"�jlmy#��%��"�jkmy��&��"�jkmy��'��"�jlmy��(��"�jlmy)��*��"�jlmy!��+��"�jlmy,��-��"�jkmw.��/��"�jkmw0��1��"�jkmw2��3��"�jkmw4��5��"�jkmw6��7��"�jkmw8��9��"�jkmt:��;��"�jkmt<��=��"�jkmt>��?��"�jkmt@��A��"�jkmtB��C��"�jkmtD��E��"�jkmtF��G��"�jkmtF��H��"�jkmtI��J��"�jkmtK��L��"�jkmtM��N��"�jkmtO��P��"�jkmtQ��R��"�jkmtS��T��"�jkmtU��V��"�jkmtW��X��"�jkmtY��Z��"�jkmt[��\��"�jkmt]��^��"�jkmtF��_��"�jlmr`��a��"�jkmr`��b��"�jlmr`��c��"�jkmr`��c��"�jkmrd��e��"�jkmrf��g��"�jkmyh��i��"�jlmyh��i��"�jkmoj��k��"�jkmol��m��"�jkmon��o��"�jkmo)��p��"�jkmoq��r��"�jkmos��t��"�jkmou��v��"�jkmo,��w��"�jkmox��y��"�jkmoz��{��"�jkmo|��}��"�jkms~����"�jkms����"�jkmy����"�jkmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmoj����"�jlmol����"�jlmo����"�jlmo����"�jlmoq����"�jlmos����"�jlmoz����"�jlmo����"�jlmo|����"�jlmou����"�jlmon����"�jlmo����"�jlmo@����"� L��L��L��L��zjlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy��G��"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jlmy����"�jkmy����"�jlmy����"�jlmy����"�jkmy����"�jkmy����"�jlmy����"�jlmy����"�jkny����"�jlny����"���{}}{#{B��}$�|jkmy||"�}��~ŀĀ~#~B��Ā$�jlmy"���ŁŃăā3āB��ă$�łjkmsĂĂ"�jlmyĂĂ"�jknyD����"�jlnyD����"�jknyZ����"�jlnyZ����"�jknyT����"�jlnyT����"�jkny^����"�jlny^����"�jkny*����"�jlny*����"�jknyX����"�jlnyX����"�jknyC����"�jlnyC����"�jkmsg����"�jlmsg����"�ńņĆāj��āB��Ć$�Ņ8���B��5�����Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5��4��Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5��h��Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5����Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5��l��Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5����Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5����Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5����Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5��p��Ć$�ńjkmsąĄ"�jlmyąĄ"�Ćy8���B��5��8��Ć$�ńjkmsąĄ"�jlmyąĄ"�8���B��5����Ć$�ńjkmsąĄ"�jlmyąĄ"�G��ńjkms@��Ą"�jlmy@��Ą"�ňĈ j��ĈB9���$��Ň8���B��5����Ĉ$�ńjkmsćĄ"�jlmyćĄ"�8���B��5����Ĉ$�ńjkmsćĄ"�jlmyćĄ"�8���B��5����Ĉ$�ńjkmsćĄ"�jlmyćĄ"�8���B��5����Ĉ$�ńjkmsćĄ"�jlmyćĄ"���ʼnŋċĉ3ĉB��ċ$�ŊjkmsĊĊ"�jlmyĊĊ"�������&�������&�������&�������&�������&�������&�������&�&�&�&�������&�������&�������&�������&�������&�������&�������&�������&�������&�������&�������&�������&�&�&�������&�������&�&�Ō������&�&�������&�������&�������&�&�ō��Mb��Ŏ��Mc��ŏ��Md��Ő��Me��ő ��Mf��Œ ��Mg��œ ��Mh��Ŕ ��Mi��ŕ ��Mj��Ŗ��Mk��ŗ��Ml��Ř��Mm��ř��Mn��Ś��Mo��ś��Mp��Ŝ��Mq��ŝ��Mr��Ş��Ms��ş��Mt��Š ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L�� ��L����L��L��š ������&�L��������&�L��������&�L��������&�L���� ��!��&�L��Ţ"��Mw��ţ ġL��ĐL��đL��ėL��ĘL��ęL��ĚL��ěL��ĜL��ĞL��ēL��ğL��ģL��ĢL��ĕL��Ť LH�����L��ť LH�����L��Ŧ LH�����L��ŧ ĥL���ĦL��ħL��ĥL��L�� ĥL��ĥL���ħL��ĥL��L��� ĦL��ĦL���ĦL��ĦL��L�� ħL��ħL���ħL��ħL��L�� L�� ĥL���ĦL��ħL��ĥL��L�� ĥL��ĥL���ħL��ĥL��ĥL��ĥL��ĥL��L�� ĥL��ĥL���ĦL��ħL��ĥL��ĥL��ĥL��L��Ũ ĥL���L�� ĥL��ĥL���L��� L�� L�� L�� ĥL���L�� L�� ĥL���L��ũ Ū ū Ŭ%��M��ů&��M��ŰĤA��ű�������������&�Ų ��������&�ų ,A��L ��,A��L��,A��L��,A��L ��Ŵ ��L�����L�����L����L����L����L����L����L��ŵ'��M��Ŷ(��ŷ)��M��Ÿ*��Ź+��M��ź,��M��Ż-��M��ża�1��V���2��T���3��T ���4��T ���5��T ���6��T ���i�a�7��V���8��T ���9��T ���:��T ���i�a�;��V���<��T ���=��T ���>��T ���i� L ��L��L��ĿL��?��M��@��M��A��M��C��M��D��M��E��M��G��M��H��M��I��M��J��M�� ,��L��u��L��)��L��)��L����L����L����L����L����L����L����L����L����L ��!��L"��V��L#��V��L$��V��L%��R��L&��R��L'��j��L(��j��L)��l��L*��l��L+��L��L,��Z��L-��d��L.��f��L/��^��L0��r��L1��p��L2��v��L3����L4����L5����L6����L7����L8����L9��v��L:����L;����L<����L=����L>��K��M�� ��&�L�� ?��&�L����&�M�� @��&�L����&�N�� ?��&�L����&�O�� @��&�L����&�P�� ?��&�L����&� ?��&�L<����&�Q�� @��&�L����&� @��&�L=����&�R��0?��&�L&����&�S��0?��&�L'����&�T��0@��&�L,����&�U�� @��&�L(����&�V�� @��&�L)����&�W�� @��&�L2����&�X�� ?��&�L*����&�Y�� ?��&�L+����&�Z�� ?��&�L1����&�[��N@��&�L7����&�N@��&�L>����&�\��N@��&�L5����&�]��N?��&�L6������&�^�� &�L#��������&�_��$&�L��������&�`��$&�L������&�a�� &�L$������&�b�� &�L%������&�c��0&�L-������&�d��&�L3������&�e��&�L4������&�f�� &�L.������&�g�� &�L/������&�h�� &�LA������&�i�� &�LB������&�j��V&�L ������&�k��V&�L"������&�l�� &�L0������&�m��&�L8������&�n��&�L9������&�o��&�L:���� ��&�p��&�L;��q��M��r��M��s��M�� LC��LD��LE��w��M��x��M��8���k��m��o��p��r��t��v��w��y��{��}��& �BF��y��$�B]���#��$�!�ĭ G��LO��k��m��o��p��r��t��v��w��y��{��}��H��I��J��K��L��M��N��O��P��Q��R��&�LS�� LT��LU��z��MV��LV��LW��LX��ĭ G��LO����������������������������& �LS�� LT��LY��LZ��[��&�L\��LU��{��MV��LV��LW��LX��ĭ ]��LO��^��_��`��a��b��c��&�LS�� LT��LU��|��MV��LV��}��MW��LW��~��MX��LX����M��ĭ d��LO��e��f��g��h��i��j��k��l��m��n��o��p��q��r��s��t��u��v��w��x��y��z��{��|��}��&�LS�� LT��L~��LU����TV����TW����TX��ĤA��ĭ ��LO����������������&�LS�� LT��L[��LU����TV��LW��LX����M��ĭ ��LO����&�LS�� LT��LU����TV��ĭ ��LO��������&�LS�� LT��LU����TV��LW��LX��ĭ ��LO����&�LS�� LT��LY��LU����TV����TW����TX�� {��LA��|��LC��}��L��/��LB��3��L��'��L#����L����M����M����M��ĭ ��LO������&�LS�� LT��LU����TV����TW����TX��ĭ ��LO����&�LS�� LT��LU����TV����TW����TX��ĭ ��LO����&�LS�� LT��LY��LU����TV����M����M��ĭ ��LO����&�LS�� LT��LY������&�L\��LU����TV��LW��LX��ĭ ��LO����&�LS�� LT��LY����&�L\��LU����TV��LW��LX��ĭ ��LO����&�LS�� LT��L~��LY��LU����TV����TW����TX�� ��L����L����L����L����L����L����L����L����L����M����M����M��ĭ ��LO��������&�LS�� LT��LY��LU����TV��ĭ ��LO����������&�LS�� LT��LY��L[��LU����TV��ĭ ��LO������&�LS�� LT��LY��L[��LU����TV��ĭ ��LO������&�LS�� LT��LY��L[��LU����TV����M����M����M����M����M����M����M����M���� ��LO��L��#������$��&�&������'��&���M��P����M��Y���M��Y������������������ �� �������������� ��������&�Y/��3��7��1��5��9��#��&��$��'����������3��1��2��0��/��-��.��,��&�YC��A��������"������&�Y������&�Y��M��Y ��LO��,A��L�� ��LO��,A��L�� ��LO��,A��L�� ��LO��L�� ��LO��L�� ��LO��L�� ��LO��L��&�Y ��LO��,A��L�� ��LO��,A��L�� ��LO��,A��L�� 7���LO��&�Y ��LO��,A��L�� ��LO��,A��L�� ��LO��,A��L�� ��LO��L�� ��LO��L�� ��LO��L�� ��LO��L�� 7���LO��&�Y ��M��Y ��M��Y ��M��Y ��M��Y  XL��XL��XL��X L��X L��Y ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L�� ��L��L��L��Y������������������ �� �������������� ������C��A����������������������& �3��L ��1��L!��2��L"��0��L#��/��L$��-��L%��.��L&��,��L'����L(��"��L)��#��L*��$��L+��&��L,��'��L-��/��L.��1��L/��3��L0��5��L1��7��L2��9��L3����L4��Yĭ ��LO����������������������������������&�LS�� LT��[��&�L\��LU����MV��LV����MW��LW����MX��LX��ĭ ��LO����&�LS�� LT��L[��LU����MV��LV��ĭ ��LO����&�LS�� LT��L[��LU����MV��LV����MW��LW����MX��LX��ĭ ��LO����&�LS�� LT��L[��LU����MV��LV����MW��LW����MX��LX����M��Y��M��Yĭ ��LO����&�LS�� LT��LY������&�L\��LU����TV��XLW��XLX��ĭ ��LO����&�LS�� LT��LY��������&�L\��LU����TV��XLW��XLX��ĭ ��LO����&�LS�� LT����&�L\��LY��LU����TV��ĭ ��LO������������&�LS�� LT��LU����TV��XLW��XLX��ĭ ��LO����&�LS�� LT����&�L\��LY��LU����TV�� Y Y��M��Y��M��Y ��L����L����L���Y��M��Y ��M��Y!X ��LO������&�LS�� LT��LU����TV��XLW��X LX��X ��LO��������������������������& �LS�� LT��LU����TV��XLW��X LX��X ��LO����&�LS�� LT��LU����TV��XLW��X LX��X ��LO����&�LS�� LT��LU����TV��XLW��X LX��X ��LO����������&�LS�� LT��LU����TV��XLW��X LX��X ��LO��������_���&�LS�� LT��LU��X!LV��XLW��X LX��X ��LO��������&�LS�� LT��LU����TV��XLW��X LX��X ��LO��������&�LS�� LT��LU��X!LV��XLW��X LX��X ��LO������&�LS�� LT��LU����TV��XLW��X LX��X ��LO����&�LS�� LT��LU����TV��XLW��X LX��X����X����ĭ ��LO������&�LS�� LT��LY��LZ��LU����TV��XY"ĭ ��LO������&�LS�� LT����&�L\��LU����TV����M��Y#��M��Y$ ��L� �� ��L �� ��L �� ��L ��Y%ĭ  ��LO�� �� �� �� �� ���� �� �� �� �� ��� �� �� ��&�LS�� LT��L ��LU����MV��LV��X#LW��X$LX��ĭ ��LO�� �� ��&�LS�� LT��LU����MV��LV��ĭ  ��LO�� �� �� �� �� �� ��&�LS�� LT��LY��LU����MV��LV��X#LW��X$LX����M��Y&��M��Y'��M��Y(ĭ  ��LO�� �� �� �� �� �� �� �� �� ��& �LS�� LT��L ��LU����MV��LV��X'LW��X(LX��ĭ  ��LO��! ��&�LS�� LT��LU����MV��LV��ĭ " ��LO��# ��$ ��% ��& ��' ��&�LS�� LT��L" ��LU����TV�� ������ ��&�Y)��M��Y*ĭ  ��LO��( ��&�LS�� LT��L ��������������&�L\��LU����TV��X'LW��X(LX��ĭ " ��LO��) ��&�LS�� LT����&�L\��L" ��LU����TV��ĭ  ��LO��* ��&�LS�� LT��������&�L\��LU����MV��LV��X'LW��X(LX����M��Y+��M��Y,ĭ + ��LO��, ��- ��&�LS�� LT��LU����TV��X+LW��X,LX��ĭ . ��LO��/ ��&�LS�� LT��0 ����&�L\��LY��LU����MV��LV����MW��LW����MX��LX��ĭ . ��LO��1 ��&�LS�� LT��0 ��&�L\��LY��LU����MV��LV��ĭ ��LO��2 ��&�LS�� LT����&�L\��LY��L[��LU����TV����TW����TX��ĭ V��LO��3 ��4 ��5 ��6 ��&�LS�� LT��r�����&�L\��LY��LU����MV��LV����MW��LW����MX��LX��ĭ 7 ��LO��8 ��&�LS�� LT��LY��LU����MV��LV����MW��LW�����MX��LX����M��Y-ĭ 9 ��LO��: ��&�LS�� LT��L~��r���0 ��&�L\��LY��LU����MV��LV����MW��LW����MX��LX��ĭ ��LO��; ��< ��= ��> ��&�LS�� LT����&�L\��L[��LY��LU����TV����TW����TX��ĭ ? ��LO��@ ��A ��B ��&�LS�� LT��LY��LU����MV��LV�� ��MW��LW�� ��MX��LX��ĭ C ��LO��D ����&�LS�� LT��LY��LZ��LU�� ��TV��ĭ ��LO��E ��F ��&�LS�� LT��LY��LZ��LU�� ��TV�� ��M��Y.ĭ G ��LO��H ��&�LS�� LT��L[��LU����MV��LV����MW��LW����MX��LX����M���Y/_��&�Y0��M��Y1��M��Y2 N��LM��;��L:��P��LO��?��L>��=��L<��C��LB��E��LD��V��LU��T��LS��R��LQ��A��L@��^��L]��Y3ĭ I ��LO��;��=��?��A��C��E��H��N��P��R��T��V��^��_��M��:��O��>��<��B��D��U��S��Q��@��]��&�LS�� LT��LU����MV��LV��X1LW��X2LX��ĭ I ��LO��J ��&�LS�� LT��L[��LU����MV��LV��X1LW��X2LX�� G��LF��J��LI��L��LK��X��LW��Z��LY��\��L[��Y4ĭ I ��LO��K ��L ��M ��N ��O ��P ��Q ��R ��S ��T ��U ��V ��W ��X ��Y ��Z ��[ ��\ ��] ��^ ��_ ��` ��a ��b ��c ��d ��e ��f ��g ��h ��i ��j ��& �LS�� LT��LU����TV��X1LW��X2LX��ĭ I ��LO��k ��l ��m ��n ��o ��p ��q ��r ��&�LS�� LT��LU����TV��X1LW��X2LX��ĭ I ��LO��G��J��L��X��Z��\��F��I��K��W��Y��[��& �LS�� LT��LU����TV��X1LW��X2LX����M��Y5��M��Y6ĭ s ��LO��t ��u ��&�LS�� LT��LU����MV��LV��X5LW��X6LX��Xv ��w ��Į x ��LO����TW����TX��ĭ y ��LO��z ��&�LS�� LT��LU����TV����TW�� ��TX��ĭ { ��LO��| ��&�LS�� LT��LY��LU��!��MV��LV��"��MW��LW��#��MX��LX��ĭ } ��LO��~ ��&�LS�� LT��LY��LU��$��MV��LV��%��MW��LW��&��MX��LX��ĭ  ��LO�� ��&�LS�� LT��LY��LU��'��MV��LV��(��MW��LW��)��MX��LX��ĭ  ��LO�� ��&�LS�� LT������&�L\��LY��LU��*��TV��+��TW��,��TX��ĭ ��LO�� ��&�LS�� LT��LY��L ��LU��-��TV��ĭ  ��LO�� ��&�LS�� LT��L~��LY��LZ��������&�L\��LU��.��TV��/��TW��0��TX�� �� �� �� �� �� �� �� �� �� �� ��& �Y82��M ��Y9ĭ  ��LO��X8LS�� LT��LY��LU��3��MV��LV��X9LW��4��MX��LX��ĭ  ��LO�� ��&�LS�� LT��L~��LY��LU��5��MV��LV��6��MW��LW��7��MX��LX��ĭ  ��LO�� ��&�LS�� LT��L~��LU��8��TV��9��TW��:��TX�� ,A��L ��,A��L��,A��L��,A��L ��Y:ĭ C ��LO�� �� �� �� ��&�LS�� LT��LY��L[��LU��;��TV��<��TW��=��TX��>��M ��Y;Į  ��LO��?��TW��@��TX��Į  ��LO��A��TW��B��TX�� ��L ����L����L ��Y<Į ��LO��C��TW��D��TX��Į ��LO��E��TW��F��TX��  ��L�� ��L��Y= L�� L��  ��L ��L)�� L��  ��L ��L��Y>Į ��LO��G��TW��H��TX��I��M��Y?Į  ��LO��J��TX�� L �� ��L ����L ����L �� ��L ��Y@ ��L �� ��L ��YA ��L �� ��L ��YBK��M��YCĭ ��LO�� �� �� �� �� �� �� �� �� �� ��& �LS�� LT����&�L\��L ��LY��LU��L��TV��M��TW��N��TX��ĭ  ��LO�� ��&�LS�� LT��LY��LU��O��TV��P��TW��Q��TX��ĭ  ��LO�� ��&�LS�� LT����&�L\��LY��LU��R��TV��S��TW��T��TX��ĭ  ��LO�� ��&�LS�� LT��LY��LU��U��TV��V��TW��W��TX��X��M��YDĪYE ��YF ��YG ��YH��XG��XF���YI ��YJ ��YK8���XK ��!�YL��XF ��XJ#�� ��XK��� ��XK��� ��#��XI#��XH��YMaOY��V���Z��T ���[��T ���YOiOYNaQ\��V ���]��T ���^��T ���_��T ���`��Te����a��TC����b��TD����YQiQYPXYRX ��c��X ��d��X ��e��X ��f��X ��g��X �� ��X ��h�� L���L��L��L��L��L��L��L��L�� L �� LG�� LB�� Lr�� L�� L�� LD�� LB�� LD��Lw��L ��L ��LN��YSX ��i��j��M#��YTX ��k��X ��l��X ��m��X ��n��X ��o��X ��p��X ����X �� ��X)����X ����X ��G��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X ����X �� ��X �� ��X ��� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X ����X �� ��X �� ��X! ��" ��X# ��$ ��X% ��& ��X' ��( ��X) �� ��X�� ��X* �� ��X" ��+ ��X$ ��, ��X& ��- ��X( ��. ��X/ ��0 ��Xh��/ ��X1 ��2 ��X3 ��4 ��X5 ��6 ��X7 ��8 ��X9 ��: ��X; ��< ��X= ��> ��X? ��@ ��XA ��B ��XC ��D ��XE ��F ��XG ��H ��XI ��J ��XK ��L ��XM ��N ��XO ��P ��XQ ��R ��XS ��T ��XU ��V �� W ��L��X ��L ��X ��L��X ��L��X ��LC��X ��LA��X ��L��X ��L���X ��L��X ��LY ��X ��L;��X ��L=��X ��L?��X ��LA��X ��LC��X ��LE��X ��LN��X ��LP��X ��LR��X ��LT��X ��LV��X ��L^��X ��LI��X ��LQ��X ��LU��X ��LK��X ��LO��X ��LY��X ��L]��X ��L_��X ��La��X ��Lg��X ��L��X ��L��X ��L��X ��LZ ��X ��L[ ��X ��Lf��X ��Le��\ ��L] ��\ ��LG��\ ��LX��\ ��LJ��\ ��LL��\ ��L^ ��\ ��L_ ��` ��La ��YUXb ��q�� L��L��L��L ��L��L��L ��L��L1��L-��L��L��L��L��L��L��L��L��L��YVXc ��r��XW ��s��Xd ��t��XX ��d ��Xe ��d ��X\ ��f ��X` ��g ��X] �� ��XY �� ��Xa �� ��Xh ��i ��Xj ��k ��Xl ��j ��Xm ��n ��Xo ��p ��Xq ��o ��Xr ��s ��Xt ��r ��Xu ��v ��Xw ��u ��Xx ��y ��Xz ��{ ��X| ��} ��X~ �� ��X �� ��X �� ��X �� ��X �� ��X ��u��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��P?��GTGGv��?��GAGGYWX �� �� ��XW �� ��X �� �� ��XW �� ��X �� ��X �� ��X �� ��X ����X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X� �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X ��3��X ��5��X ��5��X ����X ����X ��/��X ��1��X ��1��X! ��" ��X# ��$ ��X% ��& ��X' ����X( ����X) ��* ��X+ ��, ��X- ��C��X. ��/ ��X0 ����X1 ��2 ��X3 ��2 ��X4 ��D��X5 ����X6 ��X��X7 ��8 ��X9 ��: ��X; �� ��X< ��W��X= ��[��X> ��[��X? ����X@ ����XA ��*��XB ��C ��XD ����XE ��F ��XG ����XH ��M��XI ��M��XJ ��W��XK ��[��XL ��[��XM ��N ��XO ��" ��XP ��Q ��XR ��S ��XT ����XU ����XV ��S��XW ��S��XX ����XY ��$ ��XZ ��$ ��X[ ��\ ��X] ����X^ ��#��X_ ��!��X` ����Xa ����Xb ����Xc ��d ��Xe ����Xf ����Xg ��h ��Xi ��j ��Xk ��l ��Xm ��n ��Xo ��p ��Xq ��r ��Xs ��t ��Xu ��v ��Xw ��x ��w��M'��YXXy ��XXXz ��XXX{ ��| ��X} ��~ ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� ��X �� �� L,��L$��L ��L ��YYa[x��V)���y��T ���z��T ���{��T ���|��T ���}��T ���~��T �����T �����T �����T �����T �����T �����T �����T �����T �����T� �����T �����T �����T �����T �����T �����T �����T �����T ���Y[i[YZ����3Y\8���B �� ��L ����L ����L ����L ����L ����L ����L ����L ����L ����L ����L ����L ����L ����L ����L ��G��L ��w��L ��g��L ��>��L �� ��L ��@��L ����L ����L! ��{��L" ��?��L# ��K��L$ �����L% ��& ��L' ��( ��L) ��A��L* ��+ ��L, ����L- ��\��L. ��^��L/ ��z��L0 ����L1 ����L2 ����L3 ����L4 ����L5 ����L6 ����L7 ����L8 ����L9 ����L: ����L; ����L< ����L= ����L> ����L? ����L@ ����LA ��B��LB ����LC ��D��LD �� ��LE ����LF ��Z��LG ��G��LH ��y��LI ��Y��LJ ����LK ����LL ��T��LM �����LN ��^��LO ��X��LP ��+��LQ ��e��LR ����LS ��;��LT ��G��LU ��r��LV ����LW ��B��LX ��w��LY �� ��LZ ��M��L[ ��g��L\ ��>��L] �� ��L^ ��@��L_ ����L` ����La ��{��Lb ��?��Lc ��K��Ld �����Le ��& ��Lf ��( ��Lg ��A��Lh ��+ ��Li ����Lj ����Lk ��x��Ll �����Lm ��\��Ln ��^��Lo ��`��Lp ����Lq ����Lr ��h��Ls ��$�Y] ��L��k��L��Lt �� ��L��m��L��Lu �� ��L��o��L��Lv �� ��L��p��L��Lw �� ��L��r��L��Lx �� ��L��t��L��Ly �� ��L��v��L��Lz �� ��L��w��L��L{ �� ��L��{��L��L| �� ��L��}��L��L} �� ��L��L~ �� ��L��L ��Y^  ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��LH�� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L�� ��L�� ��L�� ��L �� ��L �� ��L �� ��L �� ��L ��� ��L�� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L ��! ��L" ��# ��L$ ��% ��L& ��' ��L( ��) ��L* ��+ ��L, ��- ��L. ��/ ��L0 ��1 ��L2 ��3 ��L4 ��5 ��L6 ��7 ��L8 ��9 ��L: ��; ��L< ��= ��L> ��? ��L@ ��A ��LB ��C ��LD ��E ��LF ��G ��LH ��I ��LJ ��K ��LL ��M ��LN ��O ��LP ��Q ��LR ��S ��LT ��U ��LV ��W ��LX ��Y ��LZ ��[ ��L\ ��] ��L^ ��_ ��L` ��a ��Lb ��c ��Ld ��e ��Lf ��g ��Lh ��i ��Lj ��k ��Ll ��m ��Ln ��o ��Lp ��q ��Lr ��s ��Lt ��u ��Lv ��w ��Lx ��y ��Lz ��{ ��L| ��} ��L~ �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��LC�� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �� ��L �����L����L����L����L����L �� ��L �� ��L ����L����L����L����L����L����L����L����L����L�� ��L!��"��L#��$��L%��&��L'��(��L)��*��L+��,��L-��.��L/��0��L1��2��L3��4��L5��6��L7��8��L9��:��L;��<��L=��>��L?��@��LA��B��LC��D��LE��F��LG��H��LI��J��LK��L��LM��N��LO��P��LQ��R��LS��T��LU��V��LW��X��LY��Z��L[��\��L]��^��L_��`��La��b��Lc��d��Le��f��Lg��h��Li��j��Lk��l��Lm��n��Lo��p��Lq��r��Ls��t��Lu��v��Lw��x��Ly��z��L{��|��L}��~��L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L����L�����L����L����L����L����L �� ��L �� ��L ����L����L����L����L����L����L����L����L����L�� ��L!��"��L#��$��L%��&��L'��(��L)��Y_aaab��V������T*�����T+�����T,�����T �����T-�����T.�����T/�����T0�����T1�����T2�����T3�����T4�����T5�����T6�����T7�����T �����T8�����T9�����T:�����T;�����T<�����T=�����T>�����T?�����T@���YbZaibiaY`X` ��A������?��&�CB����M/��Yc��M0��Yd7C��A��F8C��AD��E��27F��A��8F��Bt��G��$���M0��Zd��M1��Ye��M2��Yf��M3��Yg��M4��Yh��M5��YiH��Yj VLI��XLJ��]LK��_LL��aLM��cLN��Yk XjLO��XdLP��XeLQ��LR��LS��XfLT��XhLU��XiLV��BLW��jLX��ĭLY��XLZ��XkL[��YlXlBZ��\����$�XlBZ��]����$�XlBZ��^��_��$���M9��Ym ��M`��L`����Ma��La�� ����3Lb������3L�������3Lc������3L!������3Ld������3Le������3Lf������3L������3Lg������3Lh������3Li������3Lj������3Lk������3Ll������3Lm������3Ln������3Lo������3Lp����Mq��Lq����Mr��Lr����Ms��Ls������3Lt������3Lu������3Lv������3Lw������3L������3L�������3Lx������3Ly������3Lz����M{��L{����M|��L|���� ��3L}�� ��M~��L~�� ��M��L�� �� ��3L������3L������3LG����M��L����M��L������3L����M��L����M��L������3L������3L������3L����M��L����M��L�� ��M��L��!��M��L��"��M��L��#��$��3L��%��&��3L��'��(��3L��)��*��3L��+��,��3L��-��.��3L��/��0��3L��1��2��3L��3��4��3L��5��6��3L��7��M��L��8��9��3L��:��;��3L��<��M��L��=��>��3L��?��@��3Lj ��A��M��L��B��M��L��C��D��3L��E��F��3L��G��H��3L��I��J��3L��K��M��L��L��M��L��M��M��L��N��M��L��O��M��L��P��M��L��Q��M��L��R��M��L��S��T��3L��U��V��3L��W��X��3L��Y��Z��3L��[��M��L��\��M��L��]��^��3L��_��M��L��`��a��3L��b��c��3L��d��e��3L��f��g��3L���L��h��M��L��i��M��L��L�� j��M��L��k��M��L��l��M��L��m��M��L��n��M��L��o��M��L��p��M��L��q��M��L��r��M��L��s��M��L��t��M��L��u��M��L��v��M��L��w��M��L��x��M��L��y��M��L��z��M��L��{��M��L��|��M��L��}��M��L��~��M��L����M��L��L����M��L�� L��YnXn XnB�� Z��L��L���Lb�� ��L��L��L��L��L��� ��L��L���L�� ��L��P��L��L��� ��L����L��L��L�� ��Z����&�L����L��L��L�� ��Z��&�L����L��L��L�� ��L��?��L��L��L�� ��L�����L��L�� Z����&�L�����L��L�� Z����&�L�����L��L���L�� ��L��B��L��L?�� ��L��B��L��L�� ��L����L��L�� ��L����L��L�� Z����&�L��B��L��L�� ��Z����&�L����L��L��L�� ��L��G��L��L��L�� ��Z�� ��L����L��&�L����L��L��L�� ��Z����&�L����L��L��L�� ��Z��&�L����L��L�� ��L��B��L��LB�� Z�� ��L����L��&�L����L��LD�� ��L����L��L�� ��L����L��L�� Z�� ��L����L��&�L����L��L��L�� Z�� ��L����L��&�L����L��L��L�� Z�� ��L����L��&�L����L��L?�� Z�� ��L����L��&�L����L��LB��L�� Z��L��L���� ��L����L��&�L����L��L�� ��L����L��L��L�� Z�� ��L����L��&�L����L��LG�� Z��L��L�� ��L����L��&�L����L��L{��� ��L��Lr�� ��L��L��L����L��L?�� ��L��L��L����L��L�� ��L��L��L����L��L�� Z�� ��L����L��&�L����L��L��L�� ��L��G��L��L��L�� ��L��?��L��L�� Z����&�L��?��L��L�� ��L��?��L��L��Li�� ��L����L��L?�� ��L����L��L�� Z����&�L��?��L��L�� ��L��?��L��LG��Ln�� L��Ld�� {���L��LG�� ��L��L��� ��L��L�� Z��L����L��L�� Z����&�L����L��L���L!�� Z�� ��L����L��&�L��L�� Z�� ��L����L��&�L����L��L���L�� ��L����L��L�� ��L����L��L��L�� Z�� ��L��y��L��&�L����L��L�� Z��L��L�� ��L����L��&�L����L��L���Ly�� Z�� ��L�����L��&�L����L��L���L�� Z����&�L����L��L���Ls�� ��Z����&�L����L��L�� ��Z����&�L����L��L�� Z����Z����&�L����L��L���Lu�� ����&�L��?��L��L�� Z������&�L��?��L��L��Lv�� Z����&�L����L��L���Lw�� L���L�� ��L��r��L��L�� ��L����L��LK�� ��L��D��L��L�� ��L�� ��L��L�� Z����&�L��D��L��L ��L �� ��L��r��L��L�� ��L����L��LK�� ��L��B��L��L�� ��L����L��L�� ��L��L �� Z����&�L��B��L��L��L �� Z����&�L����L��L��Lt�� ��L��K��L��L�� ��L����L��Lr�� ��L����L��L�� ��L����L��L�� Z����&�L����L��L��L�� Z��L��L����&�L����L��L��L�� Z��L��L�� ��L����L��&�L����L��L��L�� Z��L��L��L����L��L���L�� ��L��?��L��L�� Z����&�L��?��L��L��L�� ��L��LG�� ��L��?��L��L�� ��L��L�� Z����&�L��?��L��L��L�� Z��L��L����&�L����L��L���L�� Z��L��L����&�L����L��L���L�� Z��L��L����&�L����L��L���L�� Z��L��L����&�L����L��L���L�� Z��L��L����&�L����L��L���L�� Z��L��L����&�L����L��L���L�� Z��L��L����&�L��L���L�� Z��L��L����&�L����L��L���L�� Z��L��L����&�L����L��L���Lj �� ��Z��&�L����L��L�� Z����Z��&�L����L��L���L�� Z��L��L����&�L����L��L���L��  ��L��?��L��L��LG�� Z����&�L����L��L��L{��� Z��&�L����L��L��L�� Z����&�L����L��L���Lc��$�L!�� ��M��L����M��L����M��L����M��L����M ��L ����M��L����M��L����M��L����M��L����M��L����M��L����M��L����M��L����MZ��LZ����M��L����M��L����M��L����M��L����M��L����M��L����M��L����M��L����M��L����M��L����M��L����M��L��L��L�� XnB�� L���Lb�� ��L��L���L�� ��L��L��L���L��� ��L����L��L���L�� ��L��"��L��L��L���L�� ��L��L���Lc��$�L!�� L��LG�� XnB�� L���Lb�� ��L��L���L�� ��L��L��L���L��� ��L��L���Li�� ��L��#��L��L��L���L�� ��L��L���L�� ��L��L���L$�� ��L��L���L�� ��L��L���Lc��$�L!�� L��L?�� XnB�� Z��L��L���Lb�� ��L��L���L�� ��L��L���L$�� Z����&�L��L���Lj�� Z����&�L��L���L%�� ��L��L���L���$�L!�� ��MZ��LZ��L��L�� XnB�� L���Lb�� ��L��L���Ls�� &��L��L��L���Lh�� ��L����L��L���L��  ��L��L��L���L�� ��L��L���L�� &��L��L��L���L��� ��L��L���L$�� ��L��L���L�� ��L��L ��Lf�� ��L��L���Li�� ��L��L���Lo�� ��L��'��L��L��L���L�� ��L��L���L�� ��L��L���L�� ��L��L���L�� ��L��L���L%�� ��L��L���Lc��$�L!�� ��M��L����M��L��L��L(�� XnB�� L���Lb�� &��L��L��L���Lg��  ��L��L��L���L�� &��L��L��L���L��� ��L��L���Lp�� ��L��)��L��L��L���L�� ��L��L ��Lf�� ��L��*��L��L��L���L�� ��L��L���Li�� ��L��+��L��L��L���LG�� ��L��L���L$�� ��L��L���L�� ��L��L���L�� ��L��L���L�� ��L��L���L�� ��L��L���L%�� ��L��L���Lc��$�L!�� ��M��L��L��L,�� XnB�� L���Lb�� -��L��L���L�� ��L��L���L$�� ��L��L���L���$�L!�� ��M-��L-��L��L.�� XnB�� Z��L��L���Lb�� Z����&�L��L���L�� ��L��L���L/�� ��L��L���L���$�L!�� ��MZ��LZ��L��L�� XnB�� Z��L��L���Lb�� Z����&�L��L���L�� ��L��L���L/�� 0��L��L���L1�� ��L��L���L���$�L!�� ��M0��L0����MZ��LZ��L��L�� XnB�� L���Lb�� ��L��L���L�� ��L��L���L���$�L!�� ��M��L��L��L�� XnB�� Z��L��L���Lb�� Z��!��&�L��L���Le�� ��L��L2��L3�� 4��L��G��L��L���Lr�� 5��L��G��L��L���Lq�� L2��L!�� ��L����L��L����L��L2��L�� ��L����L��L2��L�� ��L����L��LB��L�� ��L����L��LB��L�� ��L��B��L��L6�� !����&�L��B��L��LG�� ��L����L��L7��L8��$�L!�� ��M5��L5����M4��L4����M��L����M!��L!����MZ��LZ��L��L9�� XnB�� Z��L��L���Lb�� Z��:��&�L����L��L���L��� ��L��L���L�� Z��!��&�L����L��L���L!�� ��L��L��L;�� ��L����L��L��� ��L����L��L��Lo�� ��L����L��L���L8��$�L!�� ��M:��L:����M��L����M!��L!����MZ��LZ��L��L<�� XnB�� =��L��L��� >��L��L?��Lb�� =����&�L��?��L��L���L�� =����&�L��?��L��L���L�� ��L��L���L���$�L!�� ��M��L����M=��L=����M>��L>��L��L?��C�� ��M`��L`����M@��L@����MA��LA����MB��LB����MC��LC����MD��LD��Yo��M<��YpXp)�� � � � � ��&� � 67667� 7775575� � 7777� 7655777� 757� � � � � � � 55555555� � � � � � �8��V�4��Y�Z���%�%� ���� � ��� V� P�� r� � � � � � ����� � � ������$�&� �� � ,� �:� � � ��.� h�:� � ,�� � ,�`� � $� � R�� � "� � V� �"� � � F� � �N� � *� � *� V�:� � ,� �H� � ��� �� 0� � 4� � �� 0� �.� � " �� � *� D�(� � "� � � *� H�^� � ����-�M� � � � � � � � �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��(������ ����"� � � �� ��� � $� �� � $� �� � "� �� � $� �� � � �� �� �� � � ��������� � y0�%� ,� � � � �"� � � /3� � 53� r� c� J� � � � � ,� '� :�� � � � )� @� 3� 6� � :� � G� V� K� � ,� � Q� � #� � � \� h� 3�� � 3� 0� � _� �5 �� �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� �  � �  � �  � �  � � �� �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  �  � � � �� �  � �  � �  � �   �  � �   � �� �  �� �  � �  � �  � �  � �  � �  � �  � �  � � �� � �� � �� � �� � �� � �� � �� � �� �  � �  � � �� � �� �  � �  � �  � �  � � �� � �� � �� � �� � �� � �� � � � � � � � � � � �� � � � � �� � �� � �� � �� � �� � �� � �� � �� � �� � � � � � � �  � �  � � �� �  � � �� � �� � �� �  � �  � �  � � �� � �� � �� � �� � �� �  � �  � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �  � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � � � � � � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� � �� � �� � �� �  � � �� � �� � �� �  � � �� � �� � �� �  � �  � � �� �  � �  � � �� � �� �  � �  � �  � � � � � � � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �  � �  � �  � �  � � �� � �� �  � �  � �  � �  � � �� �  � �  � � �� � �� � �� �  � �  � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �  �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �>� �  � ��  ����  ����  ����  ����  ���� ��� ��  ����  �� � �����  ����  � ��  � ��  ����  ����  ���� �� ��  � ��  �� ��  �� �  ����  �� �  ����  ���� �����  ����  �0� �  � �  � �  � �  � � �� � �� �  � � �� �  � � �� �  � � �� �  � �  � �  � � �� � �� � �� �  � � �� �  � � �� �  � � �� � �� �  � �  � �  � �  � �  � �  � � �� �  � � �� �  � � �� �  � �  � �  � �  � �  � � �� � �� �  � �  � �  � �  � �  � �  � �  � � �� � �� � �� � �� �  � �  � �  � �  � �  � �  � � �� � �� � �� �  � �  � �  � �  � �  � �  � �  � � �� � �� �  � �  � �  � �  � �  � �  � � �� � �� � �� �  �  � �  � �  � �  � � �� � �� � �� �  � �  � �  � �*� �  � �  � � �� � �� � �� �  � �  � � �� � �� �  � � �� � �� �  � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� � �� � �� � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� �  � �  � �  � �  � �  �� �  �� �  � �  �� �  � � �� � �� � �� �  � � ��� �  � �  � �  � �  � �  � �  �� � ��� �  � �  � � �� �  � �  � �  � �  � �  � � �� � �� �  � �  � �  � �  � �  �� �  �� �  � � ��� �  � � �� � �� � �� � �� �  �  � �  � �  � �  � � �� � � �  � � �� � �� �  � �  � � �� � �� �  � �  � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  �� �  �� �  � �  � �  � �  � � �� � �� �  � �  �� �  � �  � �  � � �� �  � �  � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �  � �  �� �  � � �� �  � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �  � �  � �  � � �� � �� �  � �  � �  � �  � � ��� � �� � �� � �� � � � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �  � � �� � �� �  � �  � � �� � �� � �� � �� � �� �  � �  � �  � �  � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �  � � �� � �� � �� � �� �  � � �� � �� � �� �,� �  �� �  �� � ��� � ��� �  �� �  �� � ��� � ��� �  �� � ��� � �� �  �� �  � � ��� �  �� �  �� �  �� �  �� � ��� �  �� �  �� � ��� �  �� �  �� �  �� � ��� � ��� �  �� �  �� �  � �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  � �  �� �  �� �  �� �  �� � ��� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� � ��� � ��� �  �� � ��� �  �� �  �� �  �� �  �� �  �� � ��� � ��� �  �� �  �� � ��� �  �� �  �� �  �� �  �� �  �� � ��� � ��� �  �� �  �� �  �� �  �� �  �� �  �� �  �� � ��� �  �� � ��� �  �  �� �  � � � �  �� � ��� � ��� �  �� � ��� �  �� �  �� �  �� � ��� �  �� �  �� �  �� �  �� �  � �  �� �  �� �  � �  �� �  �� �  �� �  � �  �� �  � �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �.� �  �� �  �� � ��� � ��� �  �� �  �� � ��� � ��� �  �� � ��� � �� �  �� �  � � ��� �  �� �  �� �  �� �  �� � ��� �  �� �  �� � ��� �  �� �  �� �  �� � ��� � ��� �  �� �  �� �  � �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  � �  �� �  �� �  �� �  �� � ��� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� � ��� � ��� �  �� � ��� �  �� �  �� �  �� �  �� �  �� � ��� � ��� �  �� �  �� � ��� �  �� �  �� �  �� �  �� �  �� � ��� � ��� �  �� �  �� �  �� �  �� �  �� �  �� �  �� � ��� �  �� � ��� �  �  �� �  � � � �  �� � ��� � ��� �  �� � ��� �  �� �  �� �  �� �  �� �  �� �  �� �  � �  �� �  �� �  � �  �� �  �� �  �� �  � �  �� �  � �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  � �0� �  � �  � � �� � �� � �� �  � �  � � �� � �� �  � � �� � �� �  � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� � � � � �� � � � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� �  � �  � �  � �  � �  �� �  �� �  � �  �� �  � � �� � �� � �� �  � � ��� �  � �  � �  � �  � �  � �  �� � ��� �  � �  � � �� �  � �  � �  � �  � �  � � �� � �� �  � �  � �  � �  � �  �� �  �� �  � � ��� �  � � �� � �� � �� � �� �  �  � � �� �  � �  � �  � � �� � �� � � �  � � �� � �� �  � �  � � �� � �� �  � �  � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  �� �  �� �  � �  � �  � �  � � �� � �� �  � �  � �  �� �  � �  � �  � �� �� ��  � �  � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � � � � � � � � � � �� � �� � �� � �� � � � � �� � �� � �� � �� � �� � �� �  � �  ����  � � �� �  � � � � � � � � �� � �� � �� � �� � �� � �� � �� �  �  � �  � �  � � �� � �� �  � �  � �  � �  � � ��� � �� � �� � �� � � � � �� � �� � � � � �� � �� � �� � � � � � � � � � � � � � � � � � � � �� � �� �  � � �� � �� �  � �  � � �� � �� � �� � �� � �� �  � �  � �  � �  � � � � � �� � �� � �� � � � � �� � �� � #� � �� � �� � �� � �� � �� � �� � � � � � � � �� � �� � �� � �� � �� � �� � �� � �� � �� �  � � �� � �� � �� � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � �  � � �� � �� � �� �,� �  � �  � �  � � �� � �� � �� �  � � �� �  � � �� �  � �  �� �  �� �  �� �  �� �  �� �  � �  �� �  �� �  �� �  �� �  � �  �� �  �� �  �� �  �� � �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  � �  � �  � �  � �  � � ��� � ��� �  � �  � � ��� �  �� �  �� �  � �  � �  � � �� � ��� �  �� �  � �  � �  � �  �� �  �� �  � � ��� �  �� �  �  �� �  � �  �� �  � �  �� �  �� �  �� �  �� �  � �  �� �  �� �  � � ��� � ��� �  �� �  � � ��� � ��� �  �� �  � �  � �  � � �� �  �� � ��� �  � �  �� � �� � ��� �  �� �  �� �  �� � �� � �� � ��� �  �� �  � � �� �  �� � �� �  � �  � � �� �.� �  � �  � �  � � �� � �� � �� �  � � �� �  � � �� �  � ��  ����  ����  ����  ����  ����  � ��  ����  ����  ����  ����  � ��  ����  ����  ����  ���� �� ��  ����  ����  ����  ����  �� �  �� �  ����  �� �  ����  � �  � �  � ��  � ��  � �� ����� �����  � �  � � ��� �  �� �  ����  � �  � �  � �� �� �� �����  ����  � ��  � ��  � ��  ����  ����  � �� �����  ����  �  ����  � ��  ����  � ��  ����  ����  ����  ����  � ��  ����  ����  �� �� ����� ��� �  ����  � �� ����� �����  ����  � ��  � �  � � �� ��  ���� �����  � ��  �� � �� �� �����  �� �  �� ��  ���� �� �� �� �� �����  �� �  � �� �� ��  �� � �� ��  � ��  � �� �� ��4� �  � �  � � �� � �� � �� �  � �  � � �� � �� �  � � �� � �� �  � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� �  � �  � �  � �  � �  �� �  �� �  � �  �� �  � � �� � �� �  � � ��� �  � �  � �  � �  � �  � �  �� � ��� �  � �  � � �� �  � �  � �  � �  � �  � � �� � �� �  �� �  � �  � �  � �  �� �  �� �  � � ��� �  � � �� �  �  � �  � �  � � � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  �� �  �� �  � �  � �  � �  � �8� �  �� �  �� � ��� � ��� � ��� �  �� �  �� � ��� � ��� �  �� � ��� � � � �  �� �  � � ��� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� � � �� � ��� �  �� �  �� �  � �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  � �  �� �  �� �  �� �  �� � � �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� � ��� � ��� �  �� � ��� �  �� �  �� �  �� �  �� �  �� �  �� � ��� �  �� �  �� � ��� �  �� �  �� �  �� �  �� �  �� � ��� � ��� �  �� �  �� �  �� �  �� �  �� �  �� �  �� � ��� �  �� � ��� �  �  �� �  � � � �  �� � ��� �  �� �  �� �  �� �  �� �  � �  �� �  �� �  � �  �� �  �� �  �� �  � �  �� �  � �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �  �� �2� �  � �  � � �� � �� � �� �  � �  � � �� � �� �  � � �� � � � �  � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � � � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � � � �  � �  � �  � �  � �  �� �  �� �  � �  �� �  � � �� � �� �  � � ��� �  � �  � �  � �  � �  � �  �� � ��� �  � �  � � �� �  � �  � �  � �  � �  � � �� � �� �  �� �  � �  � �  � �  �� �  �� �  � � ��� �  � � �� �  �  � �  � � � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  �� �  �� �  � �  � �  � �  � �,� �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  �,� � �� � �� � �� � �� � �� � �� � �� � �� �  �  � �  � �  � �  � � � � � �  � �  � �  � �  � �� � �� � �� � �� � �� � �� � �� � � � � � � � � � � �� � � �� � �� � �� � �� � �� � �� � �� � �� � � � � �� � �� � �� � �� � �� � �� � �� �2� � �� � �� � �� � �� � �� � �� � �� � �� �  �  � �  � �  � �  � � �� � �� � �� � �� � �� � � � � � � � � � � �� � � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� �4� � �� � �� � �� � �� � �� � �� � �� � �� �  �  � �  � �  � �  � � �� � �� � �� � �� � �� � �� � �� �,� � �� � �� � �� � �� � �� � �� � �� � �� �  �  � �  � �  � �  � � �� � �� � �� � �� � �� � �� � �  � �� � �� � �  � �� � �� � � � � �� � �� � � � � �� � �  � �� � � �   � �  � �� � � � �� � �� � �� � �� � �� �  � �  � �  � �  � �6� �  � �  � �  � � �� � �� �  � �  � � �� � �� �  � � �� � �� � �� �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� � �� � �� � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� � �� � �� �  � � � �  � �  � �  � �  � �  � �  � �  � � �� �  � �  � � �� �  � �  � �  � �  � �  � � �� � �� �  � �  � �  � �  � �  � �  � �  � � �� �  � � �� � �� � �� �  � �  � �  �  � � � �  � � �� �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � �  � � �� �����  �  �  � � � �  � � $ � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � �� � � �� � � � "��� 4�� � (� � � (� � � (� $� � (� � 0��� � $� &��� � ����� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �����         �  �� � � � � l�#��"���� � � � � � �� � � � � � �� � � � �� �� � � � � � R� `� � � 0� �D�D�9 �� ,� ,� ,� &�9�. �.�. ��� ����� � � ����� � ���� �����"�������������7�>���5�<���5�<���3�:��!�6���9�@���9�@���7�>���3�:���1�8���1�8���7�>��!�>���9�@���7�>���A�H���A�H���7�>���7�>���1�8���9�@���7�>���7�>��!�6���0��#�:���&���&���&���&���7�>���9�@���5�<���9�@���7�>���5�<���3�:���;�B���=�D���1�8���7�>�� �C�J���1�8���?�F���1�8���?�F�� �+�2���,�� �+�2���,��!�4��!�4��!�B��!�6��!�6��!�H���C�J���C�J���;�B���;�B���1�8���9�@���7�>���7�>��!�4���7�>���;�B���9�@��!�<���1�8��!�8���*��$�G�N���?�F��$�G�N��&�I�P���A�H��&�I�P��&�I�P��.�Q�X��&�I�P��.�Q�X���9�@���A�H���;�B��$�G�N��&�I�P���;�B��$�G�N��&�I�P���;�B��(�K�R��*�M�T���;�B��,�O�V���7�>��!�B��!�:���5�<���7�>��!�B���7�>���=�D���7�>���;�B���=�D�� �C�J���5�<��!�B���5�<���9�@���9�@��!�H��(�K�R���?�F��!�H���A�H��!�J���5�<��!�B��!�:���5�<���7�>��!�B���7�>���=�D���7�>���;�B���=�D�� �C�J���7�>��!�L���?�F���9�@��!�J��*�M�T��!�D���?�F��!�H���A�H��!�J���9�@���=�D���=�D��!�D��!�8��!�8���A�H�� �C�J���A�H�� �C�J��(�K�R��(�K�R��!�D��!�:��!�F��!�<��!�>���:���:��$�G�N��!�<��!�4���5�<���5�<��!�@��!�H��!�P��!�D��!�F��!�<��&�I�P���A�H���/�6���.��!�:��!�>��!�:��!�4��!�<���/�6���/�6���?�F��!�@���5�<���9�@���7�>���;�B��!�>���A�H���A�H���A�H���A�H���5�<���=�D�� �C�J���;�B���A�H���=�D��!�<���3�:���;�B���?�F���A�H��!�>��"�E�L��$�G�N���;�B���?�F���?�F���9�@���=�D�� �C�J�� �C�J���;�B���A�H��!�L��!�J���7�>���9�@��!�B��!�B���9�@���9�@���5�<���=�D���A�H���9�@���?�F��!�:���3�:���;�B���?�F���A�H���9�@���9�@���?�F��!�>��!�D���?�F���9�@���=�D�� �C�J�� �C�J���;�B���A�H��!�N��!�L���7�>��!�>��!�H���;�B���?�F��!�@��!�P���?�F��!�D��!�R���;�B��!�:��!�8��!�4��!�4���7�>��!�6���7�>���;�B��!�H���3�:���3�:��&�I�P���=�D���;�B��$�G�N���9�@���9�@��&�I�P��(�K�R���A�H���=�D�� �C�J���A�H��!�@���=�D��!�@��!�@���=�D��&�I�P��$�G�N��&�I�P��(�K�R���A�H��*�M�T��$�G�N��$�G�N��,�O�V��&�I�P��(�K�R���3�:���A�H��$�G�N��(�K�R���9�@���;�B���=�D��0�S�Z��*�M�T��(�K�R��,�O�V��&�I�P��&�I�P��(�K�R��*�M�T���3�:��&�I�P��&�I�P��*�M�T��(�K�R��!�<�� �C�J��!�D��!�,���&���&���8���&���&���&���&���@���7�>���7�>��!�8��!�>���7�>���7�>���7�>���9�@���1�8���1�8���7�>���;�B���3�:���3�:���7�>���,���,���,���,���,���,���,���,���,���,���,���,���,���/�6���2��!�4��!�4��!�>��!�B���7�>���5�<���7�>���7�>���;�B���5�<���3�:���7�>���5�<���7�>���9�@���1�8���1�8���1�8���;�B���1�8���3�:���7�>���3�:���;�B���3�:���3�:���3�:���7�>���A�H���=�D���7�>���9�@���=�D���9�@���+�2���"���+�2���5�<���5�<���/�6���-�4���3�:���3�:���3�:���=�D��!�6��!�4���7�>���3�:��!�6���;�B��#�:��#�:���$���$���;�B��#�:��#�:���"���"���9�@���5�<��!�2���3�:��!�6���'�.���1�8��!�6���9�@���9�@���=�D���=�D���?�F���?�F��!�:���?�F��!�2���3�:���'�.���A�H��!�2���5�<���5�<���.���6���D���.���*���6���D� ��6� ��<���$���$���=�D���9�@���5�<���7�>���9�@���;�B���9�@�� �C�J���9�@��!�H��!�L��!�:��!�<��!�6��!�F��!�H���(���&���>���(���&���@���2���2���1�8���/�6���1�8���/�6���1�8���1�8���3�:�� �9�@���;�B���;�B���9�@���9�@� ��8��!�,��!�6���1�8��!�0��!�6��!�B���@� ��@���B���;�B���;�B���?�F���?�F�� �C�J�� �C�J��#�<��#�<��#�@��#�@��#�<��#�<��#�6��#�:��#�8��#�:��#�8��#�6��#�B��#�@��#�>��#�8��#�:��#�<��#�@��#�@��#�H��#�H���9�@���9�@���;�B���9�@��!�>��!�>��!�8��!�8���2���.��!�4��!�8��!�8���*��!�4��!�4��!�>��!�:��!�:��!�6��!�6�� �/�6�� �/�6���-�4���-�4���1�8�� �+�2���-�4���1�8�� �+�2��!�0��!�0��!�0��!�0��!�0��!�0��!�0���,��!�0��!�0���,��!�0��!�D��� ���2�� �-�4��!�B�� �/�6��!�B���+�2��!�H���+�2��!�J�� �-�4��!�N�� �-�4��!�P���5�<���6���=�D���6��"�A�H���6��"�A�H��!�<��!�<���"����� ���+�J���8����� ���+�J���n����� �����I�h�����,���,���,���,���,���,���,���,���,���,���,���,���,���,���,���,�� ����� ���� � �1�:������� � �1�:������� � �1�:������� � �1�:������� � �1�:������� � �1�:������� � �1�:������� � �1�:������� � �1�:�������� � �1�:������� � �1�:���� � ������������� ��� � �1�:������� � �1�:������� � �1�:������� � �1�:������������� �����I�h�����������������&���&���$ � � ����&���&���������&���&���*���*���$���$���(���( � ����,��� 4��� ����*���$��� 4� � � � � � � � � � v� <� � v� ^� p� � � � ��� �(�� $�.�� $�,�� $�4�� $�0�� :�6�� 2�.�� $�@�� &�6�� $�2�� ,�8�� *�4� � � � "�� � "�� � $�� � $�� �� ������ �� � ������&� ��� ��� ��� � � ���� � � ��� � ���� � ���� �� ���� � � ������ � � ������� � � � � � ���� � �� �� � � ��� � l������ � ���� �� � � (� "� � � � � � � � � � �� �� � � ���O�9�9 ����.� � � � ��� � P� ��� � � � �� � &� � $� 0� (� 0� 2� *� (� &� &� (� 8� :� 2� 0� *� 2� 0� 4� 2� (� 2� 0� 2� "� 6� 4� 8� 8� 6� 8� (� � 4� 6� 4� 4� 2� 2� � � �� �� 4�� �� 8�� �� 6�� �� 0�� �� :� �� .�� �� 8� �� 6�(� �� 0�(� �� .�&� �� 8�� �� 6�� �� :�&� �� :� � �� 8� � �� <�(� �� .�� �� 8� �� <�(� �� >�*� �� >��� � ����� �"� �&�� 2��� � *��� � *�$�(� � 0�,�(� � 0�$�0� � (��� � *��� � *�$�(� � ,�$�(� � ��� � �"�&� � ���� ��� � ,�(�,� � .�6�:� � ,�6�:� � � v� � ���� ��� � ������������������ � ��� � ���������������&�$�&�.��(�(� 8�� ��"� � � � � � � � � � � � � � � � � .�� � ��,��"��� � (�&�(�0��*� $�� ���� ��� � � �� �� �(�(�&�(��,�(�*�&�.�.��.�,��*�,�*�&�$� 2��$�,���� � � ������� *����"����� � � � &��g�� � ��� (���"��� � � �� �-{���� � .� ,� (� � $� � � |� N� � � �� *��,� � � ,� ,��,{�� � � "�� ����� � � � � *�� ����"��� � � "�� ���"��� � � ��$� �-� ���� (� D� 2� $� $� $� "� <� .� � � � � "��� 0�� ��� � "���� �� ���� � "�� .�� ���� � "�� 4�� ������ � � � � � � � �� �  � ���� � ��� � *� �� � ��������� �� ���������� ��� ��� �� �������������� ��������  ���� � � � � � � � � � � � � #� � #� � #� � � � � � � � � � � � � �� � � � � � � � � � � #� � #� � #� � #� �� � � � ���&�(�$� ��� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� � �� ���������� �� ���������������������� � � � � � � � � � � � � � � � � � � � � � � (���������������� ���,����� � 0� "��� ��� � $� ��� �� ��� � � $��� ���� ��� � � � � (�� ����"��� � � *�� �����"��� � � ��� ,��� � ����� "���"��� � � ��� ,����������� ��� - � � � � � � � �� ���"��� � ������������ $�� �"��� � � *���"��� � � $���"��� � ���� "���"��� � ���� �� ��"��� � ��� "���"��� � ��� &�� ��"��� � �� &���"��� � � ��j�"�����H���4� � �� *�� � ����#� � (�� ���� ��� x� x�� (� (� (� � � �������������� ��(� ��"��� � �� �� ��� � ������ �� � ��"����� � � � � �������� � .��(� � �"� � � � � "�� �{�� � ����� "���������� &� � � � &��(��������"� � � � � "��� ��� � � .�����"��"����� � � � &�� ,���"��� � � ��� � 4� ����� � � ��� *� ��� � � ��� ,��-�� � ���� (��� � 4� � ���� � &� .�� � ������� � � 0� 6��$�� � *� � ���� � ���� "��� $� �-� � � ��� (�� � ��� � � � � � �� � ��� � � � �� � ����� � � &� ,��� ������� � "� � �� $� (� "� ,� (� (� (� *� ,� .� ,� � � �������������������������� �� ��"��� � � $��� ��"������ "� $� &� $� &� � � �������������������������������� ���"��� � �������� ���"��� � ������������ ���"����� � � � *�$� D�� ��"���"�%�� � �� � "� (��,m� � � � &�� � ����� � "� (�� � ���� � � "� (�� � ����� � "� (���� ,�-�� � "� "�� �(��� � � ��$� � ����3�������"������� � t� � ��� � ��"��� � � "��$� � ��� �� � � ��$�,����� � � (� � � �"�� � :�� ��-� ��� � � �&� � ����� � � � � �� � ����� 2� "� ����*�(��� � � ��� � ������� �� (� (� 0� �� (� �� (� � � � ���������� ��� 4� �-�� � $� *�� �-� � � � &��� 4�-�� � � �� �-� ��� d� �͈ �(�4��� �w�*�����.�� � �^� �D� �j���� �0�\#���� �#�� �#��"�%�� �#����h��!��� ����������� � � � � � � � � � � � ������ ��!�H�"�%�L�&�)�P�����!�������$���$�� �0���������$���$�$�'�����&�)����6���6���6���6���6���6���6���6���8���8���8���.���(���N���N���N���B���T���������$���(������,������������������������*���V���,���2���2���2���2���0���:���>���������������Z���,���H���H���H���L���<���<���H��!�P���@���@���H���p������X���^���^���`��������� � $� � � � � � � � (� *� *� .� .� *� *� &� $� 0� .� ,� .� $� :� :� 8� 8� B� B� *� 2� :� (� ,� ,� *� *� 4� 2� (� $� &� &� (� *� .� (� ������ � ��������"������� � � 7������������.���.���4���4���.���.���.���|� ��H���.� ��0� ��H���,� ��H��!�0� ��H�"�%�4� �#�\�$�'�^���:���F���@���B���^���R� �#����������X������:������ �� ��k�t��4�6�,����4�6�,�����Z���F���h�$�'�2��!�n���������������������������� �#�� �#����������2���0���2���2���2���8��!�>� �#�@�*�-�J� �#�@�*�-�J��!�<�(�+�F��!�<�(�+�F�*�-�P�$�'�D����$�'�� �#��*�-�������d���d���d���h���v���x�����!����n���n���^���n���^���n���n�&�)���!�r��!�r�"�%�z�$�'�~�"�%�z�$�'�~���^���^���������4���4���������.���.������.���4���4���4���.���.���0���0���0� ��.� ��.� ��.���,���2���6���4���.���2���4���6���:���4���@���4���:���2���0���>���>���>���8���(���.���4���&���6���4���4���4���@���@���@���0���:���0���:���*���6���6���6���&���6���6���2���*���$���8���,���2���2���2���:���*���4���d���d���x���P���P���d���L���L��� ����,����,���������`���4���P���T���P���N���R���H���T���R���R���R���R���R���R���R���R���R���R���T���T���T���T���T���R���R���R���R���R���P���P���P���P���P���V���V���V���V���V���V���V���V���V���V���R���R���R���R���R���R���R���R���R���R���R���R���T���V��� ���� �?�\���� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � $� $� $� $� $� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � $� $� $� $� $� ��� � �(� � �(� � �&� � �(� � �$� � �(� � �(� � �$� � �$� � �.� � � ��� "� "� "� .� "� "� "� .� .� .� "� "� .� .� .� "� .� "� .� "� "� .� "� "� "� "� "� "� "� "� "� "� "� "� .� .� "� .� "� "� .� .� .� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� .� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� .� "� .� .� .� "� .� .� "� "� "� .� .� .� "� .� "� "� "� "� "� "� "� "� .� "� .� "� "� "� "� "� "� "� "� "� "� .� .� .� .� "� .� "� .� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� .� "� "� "� .� .� .� "� "� .� .� .� "� .� "� .� "� "� .� "� "� "� "� "� "� "� "� "� "� "� "� .� .� "� .� "� "� .� .� .� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� .� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� .� "� .� .� .� "� .� .� "� "� "� .� .� .� "� .� "� "� "� "� "� "� "� "� .� "� .� "� "� "� "� "� "� "� "� "� .� .� .� .� "� .� "� .� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� "� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,� 8� 8� ,� ,� ,� ,� ,� ,� ,� 8� 8� ,� ,� ,� ,� ,� ,� ,� ,� ,� ,� &��� ����� ��� � ���� ��� ���� �� � ��~��� h� b� � � �� ������ ���$��$��*�,�(�$�&� �� ���)����)����9���� ��������� �2�����������$��d����>�0�.����H�2�.���@���<�"� ���H���4�H� �������"��L�D�V�&�P��v��z�2��:�6���D�P�z�4���������p�z�"���f�N��^�&�(�B� �� �H�H�H�H�H�J�R�\�Z�j�l�6�`�\��t�h��h�H��n�� �����$�� �� ��� >�� ��2 �� "��� "�(����� ,�,��� � (���� ���� ���� ���� � �� $��� ��� ��� ���� ����� ,���� �(������ $�&������ ,����"� (��� ����� � ��� ��� ����� � ������ �*�4 ���� �*����� �*����� #�,�� � ���� ����� �*���� #�� � ������ *� ���� *� ���� *� ����� � ���� ��2�� ���� �"�� ,� �� ��� ���� ��� � ��  ����$��:�� &���� *�2����� &�4���� &�>� ��� ��� ��$���� �$���� #�� �.�� ���� �@�>� ��� D���� �� @��� �� @���� �� @��(�� � @�6��� � @�� ��� &�� � 0��� ��� ��� $��� �*��� �D��� ��� ��� $��� �$����� �F�$��� �d��� ��� ��� ��� �&��� ��B��� #� $��$��� #�� � �� ��� � ��.�� �0��� � ��8�� ���.��� �,� ��� #� $�,� ��� #� 2�2� ��� #� 8�4� ��� #� :�8� ��� #� >�h� ��� #� 4�0� ��� #�B� ��� #� �� ��� #� $�4�8�� � (���� � (�� ��� #� $� �� &� � ��� *� � *�� (� � ��� $�c�c���f�� �T�@�V�p�l�n�r��� �������8�:�:�:�>�r��$�� �  �� �� �� �� 6�� ��� �0� ���� ��$�� �  �� �� �� ��� ��� �>� ��:� ��.� ��"� ���� ��$�� ��&� ��<� ��.� ���@� ���� �������$�� � :� ��8 �� �( �� � �� � �� �� �0� ��.� �� ��*� ��� ��� ��� &�� ��F� ��@� ��>� ��� �� � �0����$�� �  �� � �� � �� �2� ��� ��� �0 ��� ��� �$� ��� ��� �>� ��.� ��n� ��F� ��@� ��>� ��� �� � � ���$�� � (� ��L� ��$� ����"���$�� ��2� ���L� ��� �������$�� ��2� ���L� ��� ��0� ����$�\���$�� � � ��� �����\��$�� ��$� ���*���. �� (�2 �� (��� $���� $�$���� "� �� � �� �&��� ���� ��� �� ����v�\� ��$�� ��� ��� $�� ��� ��� &�. ��$ �� ��� $�&� �� ��� �^�L�\���$� ����" ��� &� ��� $�� �����h���� ���N�2�� ����  � C  ��0�  0 #   ' 0     a�a��&��8����!�8F���Ct��8F��Cv��a�a�m"���8E��AF��BG��b�$�c�.m*���A4���BH��I��$�)8���J��!�//b�8���J��!�/b�)&��b��Rb�B��b�$�Rc��b��BH�� $�[a�b�b��j��b��b�G j���a�a�a�b��BK��b�b�$�8���b�!�m-���8���B-��8L��!��BM��b�$�$�c�@ m;���8���N��B^���8L��!��BM��b�$�O�� A4���$�!�//m ���b�4 m/���a �b�AP�� b � A4���CQ�� b �LP��/b�c�b�c�b��BR��b�$�c��.���� � �����*����� �(��� �4!�� �� � ��. ����0� �� ��� ��L�� ��� ��L�� �� � �� ������ ��� -0�� ��� �����(�� � ����$�� �/�X�� ��� � .����$�� �4��� ���� ����  ����� � � B���� ��8F��BS��$�)�F ����� B����  ��8���!�/�h���� ��� � C��P�� � 0 a�a��8T��!��BU��8���BV��$�W��$�8���b��!�8E��AF��BX��b�$�)<��� ����$�� ����1� �����$� � � B��: ��0�� ���� +f��$��CY��CZ��C[��CY��CZ��C[��)�H5�� �� �� "� �� �� "� ���� "� �� "� �� "� �� B���o ��0�� aӗ/A\��$A\��A\��AY��A\��AY��(f��A\��AY��A\��AZ��A\��A[��!�(A\��(�B�� ��� � � �� �� � �� �� �� ��G�R B��: ��0���� +f��$��C��C\��C]��C^��C��C\��)�8� � �� �� "� ���� "� ���� "� ���� "� �� "� �� B�� ��0���� f��B=��$�!�(�� ���� � � �� B�  ��0�� ��� ��0��#�� ����'��0�� ����   +f�� $�� C8��� C_�� C0��� C`��a��ӞA\��j���AZ��A[��j���AY��AZ���AZ��A[�� b��c��ȸd��BR��$�Be���3f��$�ȿ`��BR��ȿ$�BR��$�ɿBR��ɿ$�`��BR��$�8���!�R��C8���f�A=���CF���C_�� ȟC0���C`��(�� � �� �� "� ���� "� ���� "� ���� "�� �,� �# � � �� � �  �  ��� � * �  � �� � ������: �� ��� ���� �� ��� � � � �� ��� ������ � ��� ��" � � �� 2��"[^]<������� ���� � C����  ��0��Bg��$�(����� ��� C���� ��0��((� �����([A-Z])D������� � �A�Z�  � C��� �� Be��h��$�Bi��%��� ���� � ��$[&><"']T�#������ ��"�"�&�'�<�<�>�>� � C���8���Be���%�� ������ �� � B��� ����G(�  C��R ��� AO��x ��AO����Aj��븬 Aj��G((AO�� �� Aj��((� 7��� ��  �� � � � �� �� �� C��1 ��0���AO����AO����AO�� ��(� "���� �� �� ��  ��  � C���� ��ӗ8���k��8���!�/(� !���� ��� �<�� �O�f�� C��F ��0����3B���$�/ǹG��3Bl��ǸG$�(ǸGBi��$��(m��(� 2���� �l� � ��� � � �:� � �� � d^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)������� �������������� � ������"�$�.�0�>�@�[�]�   a��� 3��� ���:�!���&�#�����������0� 5�8�$���&�#�X�����������0� 3�A����&�C�O�L�O�N�  � 4^[a-zA-Z][a-zA-Z0-9+\-.]*$��F������ ��A�Z�a�z������������+�+�-�.�0�9�A�Z�a�z�  � ��������Ӟ(�� ���� �� ��Bn��$�(��� � � � ������8���Bo��%�� � � � ������8���Bo��%��! � � � ������8���Bo��%��# � � � ������p��(8��(�$�� �� C��o�� ���0��A���A���(AO��8���Bq��$�ǷGȘJ��� A ���G(I���(J���(H���(K��� ()�$]�� ��� ��� �� ��� ����� � ������ � ��� ����� ��� B�� ��0��� ���� +f��$��CT��CZ��C\��C^��Cb��Cg��Ck��Cp��Cs��Cy��C|��C��C��C�� ~:Br��$�-GsGAm��Bm��G$� GI)�&�� ���� "� ���� "� �� �� "� �� �� "� ���� "� ���� "� ���� "� ��"�� "� ��"�� "� ���� "� �� �� "� ���� "� ���� "� ���� "�� ���$�� �  � � � ��  � B�� ��0�� �� �����Ay��ǘ���Ǘ u��j���Ƿ v��s��t��Ӟ��!�/t��57F��A��f8F��Bt��u��t��Ӟ��$�A7F��A��28F��Bt��v��w��Ǟx��Ԟt��Ӟ��$�)�*��� � ����  � �#�� � (���� ���~ � � �������� �� �| � ������ �� �l�"� � � B��� ��0�� �� �����Ay��ǘ���m ���m ���v��/Ǘ u��(Ƿ v��(t��77F��A��$8F��Bt��u��t��Ӟ��$�(7F��A��28F��Bt��v��w��Ǟx��Ԟt��Ӟ��$�(�.��� � ����� � � � �� #��� (�������� �� �| � ������ �� �l�"� � �� B��X ��0��� ����A0 ��)Ay�� BN��A0 ��$�(Cy��A|����� B|��$�A|��ȗ(�1O� � ��� � �#�. � ��  ��"�� ��� ��� � � �� � ��  B��: ��0�� ���� +f��$��Cz��C��C{��Cz��C��C{��)�21�� �� "� �� �� "� ���� "� "� �� "� �� B���� ��%&Az��GG(�3 �� � B���� ��%'Az��GG(�3 �� � B���� ��%(Az��GG(�3 �� � B���� ��%)Az��GG(�4 �� � B���� ��%*Az��GG(�4 �� � B���� ��%+Az��GG(�4 �� � B����� ��A��(�4 ��� � C�A�� ���0�� �� ��-8G̷A��#A��GʷGʸGA8���(Ԕ�(�:?���� ��� �  ���� � � �� �g�S��� ����/A��B���%��<  ��� ��� ����Bn��&��R'��(�< �  C�$�� ���/G ǸG(ǹ⸗(�<%���� � � #�� �G �F��  C���Q ��0��|��nӞԞ}���~��Ӟ��(Ӟ��BӞ��Ԟ��(Ӟ��(� c<=3���� ���z � � ������@ C���Q ��0����YӞԞ���~��Ӟ��(Ӟ��Ӟ��Ԟ��(Ӟ��( dc� 33���� ��� � � ��� ��y&1�@ C���P ��0���� ӞԞ���~��Ӟ��(Ӟ��Ӟ��Ԟ��(Ӟ��(]b� 41���� �� � � ��G� �� ףp= @ C���Q ��0����^ ӞԞ���~��Ӟ��(Ӟ��Ӟ��Ԟ��(Ӟ��( � b +f��$��C��C��C��C��C��C��C��&��C��ǷC��ǷC��ǷC�� C��)�h�� ���� "� ���� "� ���� "� �� �� "� ���� "� �� �� "� ��"� ��-� ��"� �� "� ��"� �� B�� ����BH��A��%����� �� ��+ B�����= ���0����8C��B��$��˷A��B��A��GB ��$��$�(�,���� 6 � �� �� ��9� �Z�� B�����* ���0����˷A��A��GB ��$��˔(�#���  � �� � �� /�F�� B����" ������Mw��A��BF��$�B]���%���� ���� ����� � B���� 0��B ��%��� ������?zS c ??m?zS c ?-R\U?zS c ??m?zS c ??m?zS c ?-R\U?zS c ? F6?zS c ?s?zS c ?s?zS c ?s?KqU?zS c ?������?zS c ?s?zS c ?-R\U?zS c ?b48?zS c ??m?KqU?zS c ?s?zS c ? F6?KqU?zS c ?s?zS c ??m?zS c ?%?zS c ?-R\U?zS c ??m?zS c ??m?zS c ?zS c ??m?zS c ??m?zS c ?-R\U?zS c ?%?������???������?|ʄ_?u&?͍ K?zS c ?%?zS c ?'UHI?ffffff?іs)@?іs)@ffffff?іs)@?іs)@Gw;S?bg ?s?ϽK?s]?-R\U?*s??zS c ?'UHI?zS c ??m?zS c ?%?zS c ?-R\U?zS c ?Biq?zS c ?-R\U?zS c ?pq?žvk?',?������?žvk?',?������?bg ?Nz?bg ?Nz?B ܺ?<;k?B ܺ?<;k?B ܺ?<;k?#G?B ܺ?<;k?#G?*s?*s?bg ?s//?{8?bg ?Nz?u&?������?u&?������?ϽK?ϽK?*?s]?s?*?s]?s?ah?u&?B[Υ?ah?u&?B[Υ?ah?u&?B[Υ?ah?u&?B[Υ?MSt$??MSt$??MSt$??ah?u&?B[Υ?MSt$??ah?u&?B[Υ?B ܺ?<;k?B ܺ?<;k?bg ?Nz?bg ?Nz?bg ?Nz?,g~?Ù_?,g~?Ù_?bg ?s//?Mb?+?MbX?Mb?+?MbX?ffffff?������?zS c ?%?Gw;S?bg ?s?ϽK?(rw?žvk?',?������?*?u&?s?Gw;S?bg ?s?u&?s?u&??m?u&??m?Ù_?<;k??m?Gw;S?bg ?0Bxq?HcC?IQ,?%?Gw;S?bg ?s?HcC?IQ,?������?u&?-R\U?u&?-R\U?bg ?Nz?s?bg ?s//?s?bg ?Nz?s?(\?Gz?s?�:̗`?,g?s?~oӟH?&p?s?Gw;S?bg ?s? ?*s?s? ?*s?s?*?s]?s?*?s]?s?*?s]?s?u&?s?4hb? 'X?s?*?-R\U?s?{ʄ_?je/?s?{ʄ_?je/?s?HcC?4Ry;?s?HcC?4Ry;?s?{ʄ_?je/?������?JiWV?f?s?JiWV?f?s?�:̗`?,g?s?�:̗`?,g?s?4hb? 'X?s?4hb? 'X?s?MSt$??s?MSt$??s?,g~?Ù_?s?,g~?Ù_?s?4hb? 'X?s?4hb? 'X?s?JiWV?f?s?JiWV?f?s?�:̗`?,g?s?�:̗`?,g?s?Ywg?}Y?s?Ywg?}Y?s?Ù_?*s?s?Ù_?*s?s?*?s]?s?*?s]?s?*?s]?s??s??s??s??s?u&? F6?u&??m?u&?pq?zS c ? F6?zS c ? F6?zS c ??m?zS c ??m?Ù_?*s?s?Ù_?*s?s?,g~?Ù_?s?,g~?Ù_?s?*s?#G?ah?ϽK?%?ah?u&? F6?ah?u&? F6?*s?%?Gw;S?bg ?s?Gw;S?bg ?s?Gw;S?bg ?s?u&?s?u&?s?žvk?',?s?*s?-R\U?*s?-R\U?Ù_?*s?s?Ù_?*s?s?*s?-R\U?*s?-R\U?u&?-R\U?MJ?UN@?s?MJ?UN@?s?Ù_?*s?-R\U?Ù_?*s?-R\U?:;%? W?s?:;%? W?s?,g~?Ù_?s?,g~?Ù_?s?�:̗`?,g?s?�:̗`?,g?s?Eb?IQ,?s?Eb?IQ,?s?Eb?IQ,?s?Eb?IQ,?s?JiWV?f?s?JiWV?f?s?�:̗`?,g?s?�:̗`?,g?s?ah?u&?s?ah?u&?s?|ʄ_?u&?9z?u&?������?u&?������?s//?������?s//?������?ah?zS c ?pq?ah?IQ,?pq??s??s?*s??m?*s??m?Ù_?*s?s?*s??m?*s??m?Ù_?*s?s?0Bxq?u&?-R\U?ah?u&?b48?u&?B[Υ?u&?B[Υ?0Bxq?u&?-R\U?ah?je/? F6?,g~?Ù_?s?,g~?Ù_?s?{ʄ_?je/?s?{ʄ_?je/?s?Ywg?}Y?s?Ywg?}Y?s?W 3?4Ry;?s?W 3?4Ry;?s?VC?rK!q?s?VC?rK!q?s?,g~?Ù_?s?,g~?Ù_?s?HcC?4Ry;?s?HcC?4Ry;?s?W 3?4Ry;?s?W 3?4Ry;?s?W 3?4Ry;?s?W 3?4Ry;?s?{ʄ_?je/?s?{ʄ_?je/?s?|S:?,g?s?|S:?,g?s?Gw;S?bg ?0Bxq?Gw;S?bg ?s?Gw;S?bg ?s?ϽK?s]?-R\U?HcC?4Ry;?s?HcC?4Ry;?s?x@? KtA?L?x=\r?0Bxq? y?L?#^ ?r.U? B?ah?L?0Bxq?n)"?L?r.U?Q?L?333333?%?x]`?L?g?RD?vݰm?L??o*Ral?r.U?aۢ?L?#^ ?yt?L?#^ ?r.U?yt?L?7?%?ޓZ?ah?L?#^ ?r.U?yS c?L? .V?%?7 0?������?������?UD ?Zwg?UD ?z{?UD ? ?UD ?e6$#? ?j??? ?j???E??yZK??l!A 3?+ڧ??yZK??l!A 3?+ڧ?? ?j?Y?žvk?Y?žvk?Y?žvk?Y?P}:3?žvk?Y?P}:3?žvk?Y?P}:3?žvk?Y?UD ?Y?P}:3?žvk?Y?UD ?Y?P}:3?žvk?Y?žvk?+ڧ?q&"?žvk?+ڧ?j0 G? ?l!A 3?UD ?Q|a2?UD ?؁sF?UD ?Ӥt{I?UD ?'o|?UD ?>�M?UD ?,g~5?q&"?UD ?;Tގ?UD ?_5!?q&"?UD ?镲 ?UD ?'IL?q&"?UD ?h?UD ?[ Ac?UD ?k, P?UD ?"?UD ?K?UD ?-σv?P}:3?UD ?%1 {?k[?UD ?-σv?UD ??UD ?od?UD ?;k]h?UD ?'"?UD ?m?UD ?dw?UD ?!T?P}:3?UD ?n\?q&"?UD ?yC? ?j?? ?j??UD ?ё\C?žvk?ݘ?UD ?$(~k?žvk?iƢ?E?1%?žvk?GĔH?P}:3?UD ?q?P}:3?žvk?_vO?P}:3?UD ?Жs)?UD ?{Nz?UD ?Dn?UD ?iƢ?UD ?k?žvk?0|DL?žvk?Cf?žvk? QI?P}:3?j0 G?ݘ?P}:3?žvk?sM?žvk? {,}?žvk?ϛT?E?k, P?žvk?鷯?j0 G?8d`?j0 G?q $ ?P}:3?žvk???P}:3?žvk?{?P}:3?žvk?{?������?UD ?z{?UD ?z{?E?L?E?1%?P}:3?UD ?KuT?P}:3?UD ?R,?P}:3?žvk?h:;?UD ?k, P?E?a?žvk??������?~!<8?ffffff?~!<8?'UHI?ah?~!<8?_?x=\r?������?ffffff?x=\r?������?_?~!<8?~@?~!<8?0Bxq?������?������?~@?������?������?~@?������?ffffff??kF=D?~@?ah?jHc?0Bxq?0Bxq?dz?jHc?0Bxq?������?������?ffffff?~@?ffffff?~@?ffffff?~@?ffffff?~@?ffffff?~@?ffffff?~@?ffffff?~@?ffffff?~@?ffffff?~@?ffffff?~@?ffffff?0Bxq?0Bxq?ah?0Bxq?0Bxq?ؙB?w;S?~@?U 7?+<?~@?ؙB?w;S?~@?~!<8?8d`?~!<8?~@?n?s?n?ŏ1w-?n?k+ݓ?n?~!<8?n?ŏ1w-?n?ߡ('?n?W>?n??n? Y9?n?K?n?c?n?q&"?n?,ypw?n??n?0du?n?ߡ('?ah?n?0du?n??n?pq?n??n?rCQO?n?TގpZ?s?n?TގpZ?K?n?s?n?q= ףp?s?n?wӂ}?������?������?0Bxq?������?������?ffffff?������?������?0Bxq?~!<8?ffffff?ףp= ?LuT5?TގpZ?ffffff?0Bxq?9}?~!<8?pq?0Bxq?[[?~!<8?pq?0Bxq?L?~!<8?jHc?Z {,}?ah?0Bxq?TގpZ?ffffff?~!<8?pq?~!<8?0Bxq?ah?~!<8?Z {,}?~!<8?KTo l?~!<8?0Bxq?0Bxq?_?0Bxq?pq?0Bxq?ffffff?ah?0Bxq?pq?ah?0Bxq?KTo l?0Bxq?rCQO?0Bxq?+<?7qrCQ?~@?0Bxq?pq?0Bxq?TގpZ?KTo l?0Bxq?TގpZ?k+ݓ?0Bxq?KTo l?ah?0Bxq?TގpZ?KTo l?0Bxq?[[?������?������?ffffff?������?������?0Bxq?������?������?ffffff?ffffff?N ?ffffff?������?~!<8?B 3m?~!<8?ffffff?0Bxq?dz?~!<8?s??kF=D?~@?%?[[?n?_??kF=D?~@?ah?vӂ?~@?~!<8??m?0Bxq?k+ݓ??kF=D?~@?ah?-R\U?ffffff?0Bxq?0Bxq?n?%?0Bxq?~@?ah?0Bxq?Z {,}?~!<8?ffffff?~!<8?ffffff?1ZGU?ffffff?~!<8?ffffff?~!<8?ffffff?~!<8?ffffff?~!<8?0Bxq?~!<8?s?~!<8?ffffff?~!<8?ffffff?n?q&"?n?_?n?~@?n?^)?n?dz?n??n?k+ݓ?n?~@?n?k+ݓ?n?~@?n?k+ݓ?0Bxq?TގpZ?ffffff?0Bxq?TގpZ? [f?~!<8?0Bxq?~!<8?0Bxq?~!<8?'UHI?~!<8?'UHI?ah?~!<8?[[?ah?~!<8?[[?%?N ?tA}˜.?s?ffffff?~!<8?[_$\?~!<8?k+ݓ?~!<8?rCQO?ah?0Bxq?J?~!<8?k+ݓ?~!<8?wӂ}?U 7?+<? [f?ah?~!<8?ffffff?U 7?+<? [f?ah?~!<8?ffffff?U 7?+<? [f?������?������?ffffff?ah?~!<8? [f?ah?~!<8? [f?ah?~!<8? [f?ah?~!<8? [f?U 7?+<? [f?U 7?+<? [f?U 7?+<? [f?U 7?+<? [f?U 7?+<? [f?ah?~!<8?wӂ}?U 7?+<? [f?ah?~!<8?wӂ}?U 7?+<? [f?������?������?wӂ}?~!<8?pq?~!<8?ЛT[??m?~!<8?pq?x=\r?������?ffffff?n?_?ؙB?w;S?dz?ؙB?w;S?dz??kF=D?~@??kF=D?~@?������?������?ffffff?������?������?ffffff?x=\r?~!<8?ffffff??rCQO?ffffff??rCQO?ffffff? ףp= ?= ףp=?_?0Bxq?~@?0Bxq? [f?u&??m?������?������?0Bxq?������?������?ffffff?%?dz?%?dz?%?dz?%?dz?ah?~!<8?ЛT[?333333?U 7?+<?~@?ah?~!<8?0Bxq?5l/b?5l/?~@?S㥛?"~j?S㥛?aۢ?e6?~@?5l/b?5l/?~@?5l/b?5l/?~@?\Z {,?VCK?~@?\Z {,?VCK?~@?ؙB?w;S? [f?ؙB?w;S? [f?ؙB?w;S?~@?ؙB?w;S?~@?ؙB?w;S?~@?ؙB?w;S?~@?\Z {,?VCK?~@?\Z {,?VCK?~@?%?dz?\Z {,?VCK?~@?\Z {,?VCK?~@?%?dz?%?dz??kF=D?~@??kF=D?~@??kF=D?~@??kF=D?~@??kF=D?~@?~!<8?wӂ}?~!<8?wӂ}?~!<8?~@?~!<8?~@??rCQO?ffffff??rCQO?0Bxq?x=\r?~!<8?ffffff?������?������?[[?������?������?[[?������?������?[[?������?������?[[?%??m? [f?%??m? [f?ah?~!<8?[[?x=\r?~!<8?ffffff?ah?~!<8?[[?x=\r?~!<8?ffffff?ah?~!<8? [f?+MJA?~!<8?~@?+MJA?~!<8?~@?+MJA?~!<8?~@?+MJA?~!<8?~@?������?~@?ah?~!<8?~@?ah?~!<8?~@?������?������?~@?������?������?~@?n??\Z {,?VCK?~@?\Z {,?VCK?~@?ah?~!<8?������?~!<8?//>:?%?~!<8?"-R? q?ah?~!<8? U+~?~!<8?x=\r?������?"Jv?~!<8?~!<8?�Ե?-!lV?~!<8?6;Nё?oT?������?������?%#gaO;?͍ K?������?������?=?͍ K?������?*D/X?|ʄ_?s?CVzN?=?-!lV?ah?c?oT?0Bxq?dp?߉Y/?c?oT?������?������?%#gaO;?|ʄ_?~@? ?|ʄ_?~@? ?|ʄ_?~@? ?|ʄ_?~@? ?|ʄ_?ah?~@? ?|ʄ_?~@? ?|ʄ_?~@? ?|ʄ_?ah?~@? ?|ʄ_?~@? ?|ʄ_?~@? ?|ʄ_?0Bxq?kw#?oT?ah?0Bxq?kw#?oT?U 7?+<? U+~?-!lV?~!<8?uv28J^?|ʄ_?~!<8?4 ?-!lV?n?镲?n?a+e?q&"?n?5l/?)s?n?]P2?h�o?n?kC?F6?n??hbE?n?<β?bE ?n?%?[B>٬?n?מY?5l/?n?(\?aTR'?n?5l/?£?n?N(D!T?n?%?'"*?n?%?[B>٬?n?]P2?y \?n?a+e?p0?ah?n?]P2?y \?n?&kC4?P?n?K8ռ?CԷ?n??( y?n?%?je/?n?ףp= ?镲?n?ףp= ?Q?n?מY?镲?n?= Y?镲?n?5l/?:;%?������?������?������??������?������????~!<8?}k,?|ʄ_?ףp= ?LuT5?vi?|ʄ_?0Bxq?o*Ral!?|ʄ_?~!<8?x#?+<?0Bxq?dp?+<?~!<8?Ynͻ?|ʄ_?0Bxq?(\µ?+<?ah?~!<8?U 7??ah?0Bxq?zG?+<?~!<8?o*Ral!?|ʄ_?s//?f&?oT?ah?s//?Af?oT?~!<8?0Bxq?+<?~!<8?Ynͻ?9z?0Bxq?o*Ral!?~!<8?0Bxq?o*Ral!?CԷ?0Bxq?x#?|ʄ_?ah?0Bxq?x#?|ʄ_?ah?0Bxq?zG?+<?0Bxq?0Bxq?YLl> ?0Bxq?Gw;S?Oc*?7qrCQ?"T?p= ף?0Bxq?o*Ral!? q?0Bxq?0Bxq?+<?0Bxq?0Bxq?2d?0Bxq?m2?Ǻ?ah?0Bxq?zG?bod?0Bxq?%?a+e?ffffff?N ?uv28J^?|ʄ_?������?~!<8?^?|ʄ_?~!<8?9]?%?+<?n?kC?ZGUD]?ah?vӂ?]P2?-!lV?ah?~!<8?xE?HzG?0Bxq?(\µ?)s?ah?-R\U? e6?|ʄ_?0Bxq?o*Ral!?oT?n?kC?:zަ??0Bxq?(\µ?)s?ah?0Bxq? ܺ?p= ף?~!<8?}k,?|ʄ_?~!<8?\Z {,?|ʄ_?K?dp?|ʄ_?~!<8?�Ե?|ʄ_?~!<8?|ʄ_?~!<8?s?|ʄ_?~!<8?6;Nё?oT?~!<8?9]?~!<8?uv28J^?|ʄ_?~!<8?uv28J^?|ʄ_?n??N(D!T?n?~!<8?n?]P2?-!lV?n?9ߡ(?n?'XQ?2d?n?%?[B>٬?n?kC?)s?n?)Wx?-!lV?n?K8լ?)s?n?)Wx?-!lV?n?a+e?)s?0Bxq?vi?|ʄ_?0Bxq?vi? pU?~!<8?6;Nё?oT?~!<8?6;Nё?oT?~!<8?KqUw? q?~!<8?"-R? q?������?~!<8?($ɿ?8*5{?~!<8?|yѱ?"Jv?ah?~!<8?�M?%̴++?x=\r?������?0/>:u?%̴++?~!<8?QѸ?dz?~!<8?($ɿ?8*5{?������?������?-s?Uj@+?������?������?DԷ?Uj@+?������?Gŧ�?[[?!T?E$]3?DԷ?dz?ah??8*5{?ϽK?#0?l??8*5{?������?������?-s?[[?~@?DRZ?[[?~@?DRZ?[[?~@?DRZ?[[?~@?DRZ?[[?ah?~@?DRZ?[[?~@?DRZ?[[?~@?DRZ?[[?ah?~@?DRZ?[[?~@?DRZ?[[?~@?DRZ?[[?ϽK?\ Ac̭?8*5{?ah?ϽK?\ Ac̭?8*5{?bg ?Nz?�M?dz?~!<8?\(\?[[?~!<8?ek}?dz?L?~W[?L? B?g?RD?L? a??L?מY?)\(?L?\ʾ?i?L?d]K?9}?L?k T?Sy;i?L?X?~W[?L?%#gaO;?[B>٬?L?i5$??L? a?&:?L?5l/?L?X?4Op?L?X?~W[?L?מY?dz?L? B?i?ah?L?מY?dz?L?Ynͣ? W?L?WL?!%̴?L?d]K??L?X?~W[?L?P?~W[?L?P?0?L?%#gaO;?~W[?L?:}k?~W[?L? a?Ut?Ɏ@?s?ϽK?%?ϽK?x=\r?s?ϽK?x=\r??m?ϽK?s?ah?ϽK?x=\r?s?ϽK?Biq?������?������?������?������?������?%?������?������?������?ffffff?G8-xW?������?������?~!<8?ǵb?ah?~!<8?Biq?WI_?������?ϽK?-R\U?~!<8?������?hU?_?s?ah?~!<8? F6?%?Biq?L?s?hU?_?s?ah?KTo l?s?~!<8?������?ϽK??m?hU?_?s?ah?s?������?ϽK?%?L?{8?ϽK?s?ah?ϽK?ϽK?~!<8?������??m?������?Uj@+?������?~!<8?������?~!<8?������?~!<8?������?WI_?%?~!<8?������?WI_?������?~!<8?������?L?������?L?B[Υ?L?s?L?b48?L?-R\U?L?������?L??m?L?s?L??m?L?s?L??m?ϽK?x=\r?������?ϽK?x=\r?~!<8?%?~!<8?%?~!<8?������?~!<8?������?ah?~!<8?Biq?ah?~!<8?Biq?rh|?n?%??"^F?@_?������?zS c ?'UHI?~!<8??m?~!<8?0Bxq?B[Υ?ah?ϽK?0Bxq?ʦ\]?~!<8??m?~!<8? F6?bg ?Nz?ah?~!<8?������?bg ?Nz?ah?~!<8?������?bg ?Nz?������?������?������?ah?~!<8?ah?~!<8?ah?~!<8?ah?~!<8?I +?'1Z?I +?'1Z?jt?I +?'1Z?jt?bg ?Nz?bg ?Nz?bg ?Nz?bg ?Nz?I +?Fx?bg ?Nz?ah?~!<8? F6?bg ?Nz?ah?~!<8? F6?bg ?Nz?������?������? F6?~!<8?%?~!<8?x=\r?r.U?H.!?~!<8?%?x=\r?������?������?L?B[Υ?MJ?UN@?-R\U?MJ?UN@?-R\U?hU?_?s?hU?_?s?������?������?������?������?������?������?ơ?%?������?镲 q?Biq?������?镲 q?Biq?������???B[Υ?ϽK?s?ϽK?u&??m?������?������?%?������?������?������?%?-R\U?%?-R\U?%?-R\U?%?-R\U?ah?~!<8?0Bxq?B[Υ?bg ?Nz?s?ah?~!<8?%?(\?Gz?s?I +? +?L7A`?~oӟH?&p?s?(\?Gz?s?/$?K7?L7A`?(\?Gz?s?Ywg?}Y?s?Ywg?}Y?s?MJ?UN@?MJ?UN@?MJ?UN@?s?MJ?UN@?s?MJ?UN@?s?MJ?UN@?s?Ywg?}Y?s?Ywg?}Y?s?%?-R\U?Ywg?}Y?s?Ywg?}Y?s?%?-R\U?%?-R\U?hU?_?s?hU?_?s?hU?_?s?hU?_?s?hU?_?s?~!<8? F6?~!<8? F6?~!<8?s?~!<8?s?Zd;?������?X9v?镲 q?Biq?������?镲 q?Biq?%?ơ?%?������?{Gzt?)\(??Q?L7A`?n?RQ?x&1?n??tV?Pn?������?������?Biq?������?������?Biq?������?������?Biq?������?������?Biq?~!<8?s?~!<8?s?Zd;?+?|?5^?Zd;?ףp= ?|?5^?ah?~!<8?pq?ơ?%?������?ah?~!<8?pq?ơ?%?������?ah?~!<8?+MJA?~!<8?s?+MJA?~!<8?s?+MJA?~!<8?s?+MJA?~!<8?s?������?s?ah?~!<8?s?ah?~!<8?s?������?������?s?������?������?s?Zd;?+?|?5^?Zd;?ףp= ?|?5^?I +?'1Z?X9v?I +?'1Z?h|?5?I +?'1Z?X9v?~jt??X9v?~jt??h|?5?~jt??|?5^?I +?'1Z?h|?5?L?������?Ywg?}Y?s?Ywg?}Y?s?ah?~!<8?������?0Bxq?ffffff?0Bxq?ffffff?0Bxq?ffffff?ah?0Bxq?ffffff?ah?0Bxq?ffffff?ah?0Bxq?ffffff?~@?ffffff?ah?0Bxq?ffffff?~@?ffffff?ah?0Bxq?ffffff?n?s?n?oT? $(~?n?|ݱ?jjZ_$?n?TގpZ?';?n?#?#?n?0Bxq?zS c ?n?�:̗`?n??&pn?n?jHc?[[?n?ƹ?333333?n?|ݱ?P?n?ŏ1w-?n?W!'>?GGE?n?W!'>?n/i?n?TގpZ?.;1?n?0Bxq?£#?ah?n?]P2?n?E>q?LJ?n?ϽK?іs)*?n?0Bxq?E_?n?W!'>? ϛ?n? cZ?@_?n?0Bxq?H.!}?n?jHc?rCQO?n? cZ?J$(?n?|ݱ?{?0Bxq?x@?~!<8?_?0Bxq? m?~!<8?vӂ?0Bxq?IQ,?ah?~!<8?0|D?ME*-?ah?0Bxq?eI)?o?~!<8?[_$\?s//?cZB>?ah?s//?Uد?q&"?~!<8?eI)? Q?~!<8?/n?H?0Bxq??ܵ?0Bxq?ek}?0Bxq?%?ah?0Bxq?dp:?ah?0Bxq?eI)?~ƅ!Y?0Bxq?TގpZ?z,C?0Bxq?������?7qrCQ?N?0Bxq?^}t?0Bxq?eI)?q&"?0Bxq?x=\r?{?0Bxq?"?ah?0Bxq?eI)?s?0Bxq?g\8?ŊL?������?n?0Bxq?K?n?_?n?TގpZ?M(D?n?^)?n?Ĭ?Q?n??&pn?n?#?vR~R?n?0Bxq?,ypw?n?dz?n?�Խ?x@?n?oT?r?0Bxq?,)W?ah?~!<8??o*Ral??m?ah?0Bxq?ЛT[?5?~!<8?£?%?0Bxq?#?ah?~!<8?ү?kF=D?ah?0Bxq?eI)?333333?~!<8?TގpZ?ё\C?0Bxq?4)^?0Bxq?[_$\?~!<8?,ypw?ah?0Bxq?9zަ?0Bxq? \?R!u?ah?~!<8?s ^?kF=D?0Bxq?%?0Bxq?eI)?M?ah?0Bxq?k+ݓ?ah?0Bxq?0|D??m?0Bxq?eI)?`?0Bxq?E>?_?0Bxq?eI)?ŏ1w-?ah?0Bxq? Y9?ah?0Bxq?ё\C?ah?~!<8?eI)?kF=D?0Bxq?eI)?cE a?~!<8?ŏ1w-!?ah?~!<8??0Bxq?TގpZ?333333?ah?0Bxq?k+ݓ?0Bxq?W>?0Bxq?Vn/?ah?0Bxq?"?������?ϽK?������?ϽK?������?ϽK?������?ah?ϽK?������?ah?ϽK?������?ah?ϽK?������?~@?������?ah?ϽK?������?~@?������?ah?ϽK?������?L?%?������?L?9 {ᯩ?r.U? vöE?L?9ѮBO?r.U?9z?L?x=\r?x=\r?ʉvR~?L?lu?r.U?=U?L?%?r.U?N?L?r.U?)\(?L?̴?x=\r??L?-#?0Bxq?q&"?L?~@?KqU?;i?L?9ѮBO?x=\r?ME*-?L?x=\r?%?L?jHc?r.U?zS c ?L?jHc?r.U?%?L?x=\r?r.U?F_Ah?L?%?r.U?6X?ah?L?r.U?0|DL?L?U+~?r.U?@ŊL?L?lu?r.U?=U?L?%?r.U?=?L?jHc?x=\r?KqU?L?0Bxq?_?L?%?b48?L?-#?r.U?vӂ?L?0Bxq?N?L?9ѮBO?r.U?G ^/?ϽK?_5?~!<8?(rw?ϽK?x=\r?V?~!<8?KqU?+ڧ?ϽK?x=\r?U?ah?~!<8?ϽK?KqU?KqU?ah?ϽK?4)^?x=\r?f-?~!<8?rmo?{?Gɫs ?ah?{? N?ЛT[?~!<8?%?T?~!<8?׆q&?r.U?bqm?ϽK?bqm?ϽK?5?ϽK?x=\r?K?ah?ϽK?r.U? ^?ah?ϽK?4)^?r.U?ަ??ϽK?x=\r?x=\r?P1?ϽK?x=\r?������?Ɏ@?r.U??m?ϽK?x=\r?ĔHQ?ϽK?4)^?x=\r?K?ϽK?ϽK?r.U?Q?ϽK?x=\r?'UHI?ah?ϽK?4)^?x=\r?x]`?ϽK?M-[닄?x=\r?N@a?������?L?%?r.U?@_?L?KqU?B[Υ?L?x=\r?r.U?F_Ah?L?KqU?b48?L?]zk`?r.U?Sy;i?L?̴?x=\r??L?lu?r.U?n?L?%?x=\r?_?L?r.U?-R\U?L?)\(?x=\r?eN?L?9 {ᯩ?r.U?m4?ϽK?_vOn?x=\r? h"lx?ah?~!<8??r.U? ^?ah?ϽK?x=\r?E>?~!<8?N@a?x=\r?0Bxq?ϽK?r.U?G ^/?ah?~!<8?3P>?r.U?������?ah?ϽK?4)^?x=\r?%?~!<8?x=\r?r.U?N ?ϽK?x=\r?e/?ϽK?rmo?~!<8?B[Υ?ah?ϽK?x=\r?H?ϽK?\8L?x=\r?v28J^?ah?~!<8?j?0Bxq?������?ϽK?x=\r?K?ϽK?4)^?=?ah?ϽK?r.U?m?ah?ϽK?0Bxq?r.U?b48?ϽK?4)^?~oӟH?ϽK?B>٬?x=\r?ё\C?ϽK?4)^?x=\r?'UHI?ah?ϽK?r.U?;ǀ?ah?ϽK?x=\r?K?ah?~!<8?4)^?0Bxq?G ^/?ϽK?4)^?z,C?~!<8?r.U?z1?ah?~!<8?r.U?8 ?ϽK?x=\r?rZ| ?ah?ϽK?r.U?m?ϽK?x=\r?ё\C?ϽK?x=\r?)D/?ah?ϽK?r.U?N?������?~!<8?(rw?~!<8?u?ah?~!<8?-R\U?x=\r?������??x=\r?������?ezFw?~!<8?N?~!<8?ϽK?������?������?x]`?������?������?x]`?������??W?-R\U?~!<8?-R\U?~!<8?vۅ:?-R\U?~!<8?e-?pq?~!<8?z6>W?#?~!<8?e-??m?~!<8?vi?b48?~!<8?e-?-R\U?~!<8?0{?B[Υ?~!<8?vi?%?~!<8?0{?~!<8?~!<8?e-?b48?~!<8?-R\U?~!<8?0{?������?~!<8?0{?B[Υ?~!<8?z6>W? F6?~!<8?vۅ:?pq?������?~!<8?z6>W? F6?~!<8?vۅ:?B[Υ?~!<8?ǘ?%?~!<8?vi?%?~!<8?0{?������?~!<8?y&1?-R\U?~!<8?y&1?b48?~!<8?vi?-R\U?~!<8?+5{?-R\U?~!<8?e-? F6?������?������?d*g?Z {,}?������?������?ʉvR?Z {,}?~!<8?jMSt?������?ffffff?Z*oG8-?.9?������?0Bxq?HcC?6~?~!<8?sM?`?0Bxq?Ih˹W?Biq?~!<8?dF?`?0Bxq?DRZ?Biq?~!<8?c]K?ϽK?ah?0Bxq?1 {?������?~!<8?m4?`?E|'f?E?N?ah?E|'f?M֨ht?4 ?~!<8?Ih˹W?'UHI?~!<8?dF?N?0Bxq?m4? h"l?0Bxq?m4?`?0Bxq?HK?������?ah?0Bxq? g?`?ah?0Bxq?#EdX?`?0Bxq?1 {?u?0Bxq? g?dz?E>'I?"~??m?0Bxq?#EdX?`?0Bxq?1 {?vӂ?0Bxq?1 {?u?0Bxq? ^x?vӂ?ah?0Bxq?1 {?vӂ?0Bxq?g?s?ffffff?IL?5?������?������?E|'f?c=yX?������?~!<8?`Ù?%?Biq?0Bxq?#EdX?N?ah?0Bxq?#EdX?4 ?~!<8?jMSt?������?~!<8?f?������?됛|?,ypw?������?~!<8?ǘ?������?~!<8?������?~!<8?dF?������?E|'f?fN?%?~!<8?`Ù?؞Y?5?������?~!<8?ǘ?������?~!<8?vi?-R\U?~!<8?B[Υ?~!<8?z6>W?s?~!<8? F6?~!<8?S�g?-R\U?~!<8?0{?B[Υ?~!<8?e-??m?~!<8?Xs`?s?~!<8?E>??m?~!<8?Xs`?s?~!<8?vۅ:??m?0Bxq?.9?������?0Bxq?.9?~!<8?3K?%?~!<8?3K?%?~!<8?X2ı.?������?~!<8?�i?������?������?~!<8?Biq?~!<8?������?ah?~!<8?B[Υ?x=\r?������?������?x=\r?������?B[Υ?~!<8?g?RD?~!<8?%?������?������?s?������?������?s?������?������?hU?_?s?������?hU?%?0Bxq?1ZGU?hU?%?������?������?������?X?������?X?������?X?������?X?������?X?������?X?������?X?������?X?������?X?������?X?������?0Bxq?%?������?0Bxq?%?p= ף?Gz?s?~!<8?~!<8?~!<8?-R\U?~!<8?-R\U?~!<8?-R\U?~!<8?pq?~!<8?#?~!<8??m?~!<8?b48?~!<8?-R\U?~!<8?B[Υ?~!<8?%?~!<8?~!<8?~!<8?b48?~!<8?-R\U?~!<8?������?~!<8?B[Υ?~!<8? F6?~!<8?pq?������?~!<8? F6?~!<8?B[Υ?~!<8?%?~!<8?%?~!<8?������?~!<8?x=\r?-R\U?~!<8?x=\r?b48?~!<8?-R\U?~!<8??-R\U?~!<8? F6?������?������?Z {,}?������?������?Z {,}?~!<8?������?ffffff?Z*oG8-?x=\r?������?0Bxq?6~?~!<8?`?0Bxq?Biq?~!<8?`?0Bxq?Biq?~!<8?Ʊ?ϽK?ah?0Bxq?x=\r?������?~!<8?`?E|'f?N?ah?E|'f?4 ?~!<8?'UHI?~!<8?N?0Bxq? h"l?0Bxq?`?0Bxq?������?ah?0Bxq?`?ah?0Bxq?`?0Bxq?x=\r?u?0Bxq?dz?E>'I??m?0Bxq?`?0Bxq?x=\r?vӂ?0Bxq?x=\r?u?0Bxq?vӂ?ah?0Bxq?x=\r?vӂ?0Bxq?s?ffffff?IL?������?������?E|'f?������?~!<8?-R\U?%?Biq?0Bxq?N?ah?0Bxq?4 ?~!<8?������?~!<8?������?됛|?������?~!<8?������?~!<8?������?~!<8?������?E|'f?%?~!<8?-R\U?؞Y?������?~!<8?������?~!<8?-R\U?~!<8?B[Υ?~!<8?s?~!<8? F6?~!<8?-R\U?~!<8?B[Υ?~!<8??m?~!<8?s?~!<8??m?~!<8?s?~!<8??m?0Bxq?x=\r?������?0Bxq?x=\r?~!<8?%?~!<8?%?~!<8?������?~!<8?������?������?ffffff?MbX?XeS?ffffff?iƢ?B= ?ffffff?%䃞?ݰmQ?ffffff?N`?*Ral!?ffffff?NG??ffffff?k}Жs?pq?ffffff?뭁,??ffffff?7?3?ffffff?6ُ?N?%?ffffff?6ُ?l, P?ffffff?|y?x( 333333?-R\U?h㈵>333333?-R\U?h㈵>333333?s?h㈵>333333?s?k)�?������?b48?k)�?������?b48?k)�?������?s?-xWf?333333?E ax?1Zd?1ZGU?E ax?1Zd?%?)Wx?(\?ZӼ?~!<8?/$?(\?ZӼ?~!<8?/$?(\?ZӼ?~!<8?)Wx?(\?ZӼ?~!<8?k)�?������?B[Υ?k)�?������?B[Υ?k)�?������?B[Υ?k)�?������?B[Υ?-xWf?333333?~!<8?-xWf?333333?~!<8?-xWf?333333?~!<8?-xWf?333333?~!<8?*g\8P?Zd;?-R\U?-xWf?333333?~!<8?-xWf?333333?~!<8?k)�?������?#G?k)�?������?#G?k)�?������?#G?k)�?������?B[Υ?k)�?������?B[Υ?������?7?ffffff??m?7?ffffff??m?7?ffffff?n?7?ffffff?~!<8?7?ffffff?n?7?ffffff?~!<8?7?ffffff?-R\U?7?ffffff?-R\U?������?������?������?������?������?}"O??pq?}"O??pq?}"O??Pkw?7?ffffff?d;O?(\?Biq?%?/$?(\?Biq?%?/$?(\?Biq?%?d;O?(\?Biq?%?}"O??#G?}"O??#G?}"O??#G?}"O??#G?7?ffffff?s?7?ffffff?s?7?ffffff?s?7?ffffff?s?7?ffffff? F6?7?ffffff? F6?}"O??ME*-?}"O??ME*-?}"O??ME*-?}"O??#G?}"O??#G?������?Pf?333333? F6?Pf?333333? F6?Pf?333333?K4?Pf?333333?s?Pf?333333?K4?Pf?333333?s?Pf?333333?������?Pf?333333?������?������?������?Pkw?������?Pkw?������?Pkw?������?Pkw?Pf?333333?Pf?333333?B[Υ?Pf?333333?B[Υ?Pf?333333?B[Υ?Pf?333333?B[Υ?Pf?333333?������?Pf?333333?������?������?UMu�?������?-R\U?UMu�?������?-R\U?UMu�?������?pq?UMu�?������?B[Υ?UMu�?������?pq?UMu�?������?B[Υ?UMu�?������?%?UMu�?������?%?������?ffffff?b48?ffffff?b48?ffffff?b48?ffffff?b48?UMu�?������?UMu�?������?pq?UMu�?������?pq?UMu�?������?pq?UMu�?������?pq?k�?{Gz?������?h㈵>333333?������?k�?{Gz?������?k�?{Gz?������?h㈵>333333?������?k�?{Gz?������?k�?{Gz?-R\U?*g\8P?Zd;?-R\U?k�?{Gz?-R\U?k�?{Gz?-R\U?*g\8P?Zd;?-R\U?k�?{Gz?-R\U?h㈵>?pq?7?ffffff?pq?U?pq?333333?pq?h㈵>?pq?7?ffffff?pq?U?pq?ʉvR?HzG?s?UMu�?������?%?UMu�?������?%?Ƣdpt?\(\?s?Ƣdpt?\(\?s?Q??Q??Q??Q??? F6?? F6?? F6??hU?~!<8??hU?~!<8?? F6?? F6??hU?~!<8??hU?~!<8??_??s]?ё\C??%?������??s]?ё\C??������??hU?~!<8?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6??ϽK??%?ϽK??x=\r?%??X?䠄??x=\r?%?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6??%? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6??hU?~!<8??hU?~!<8??hU?~!<8?? F6??ЛT[?? F6??ϽK?? F6??ϽK?? F6??ϽK?? F6??0Bxq?ϽK?? F6?? F6??0Bxq? F6?? F6?? F6??ϽK??ϽK??ϽK??0Bxq?ϽK??0Bxq?ϽK??ϽK??ϽK??wg??ϽK??ϽK??ϽK??ϽK??0Bxq?ϽK??ϽK??hU?~!<8??hU?~!<8??hU?~!<8?? F6?? F6??? F6??ZӼ??ϽK??0Bxq?ϽK???m??HP?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6?? F6??0Bxq?-#??������?������?������?/$?/$?/$?#~j?Zd;O?Dl?Cl??K7?~jt?S㥛?"~j?/$?T㥛 ?ʡE?Mb?ffffff?Gz?jt?/$?;On?jt?T㥛 ?Zd;?/$?B`"?"~?M?7A`?333333?M??V-?M??NbX9?d;O?V-??V-??Q@333333?Gz?)\(?Pn?Q?������?������?������?{Gz?J +?J +?"~j?"~j?"~j?sh|??sh|??sh|?????333333?Zd;O?Zd;O??M?M?{Gz?{Gz?{Gz????{Gz?{Gz?{Gz?333333?333333?333333?{Gz?{Gz?{Gz?33 C���� ��?sI)���"  C��� ��0�� ��� ��?A0G8�����Ԟ��!�/B��$�GGȗ ӷGӷGGB��$�GGȗ�� GMG+ ȷGL��ȸGL��ȹGL��ȺGL��ȻGL��()�x��& �� ��� �H�_�j�� ��� # � � ���� �#��  �� � �� � � � � � C�Y�� ���0�� ��D@Ӽ ӺG;s A%��GL��I~Br��$� sGGIG(�?����    �� � � � �� ���&  � �� ������?333333?ffffff???333333? ףp= ?S?d;O�@Cl@ C��� ��0��FA��(ӸGA��G(����� �   � B�� ����K J G+f��$��C��C��C��C��C{ ��C ��C��C��C��C��C��Cp��C��A��C��A��C��A�� f�A��C��A��A��C��A{ ��C{ ��A ��C ��A��C��A��C��A��C��A��GC��A��C��Ap��Cp��C��)��� �� �� "� �� �� "� �� �� "� ���� "� ���� "� �� �� "� ���� "� ���� "� ���� "� ���� "� ���� "� ��"�� "� ���� "� �� � � �� � � �� � � � �� � � � � �� � � �� � #� �� � #� �� � #� �� � #� �� � � -� �� � � ��" � "� ���� B�� ��0��� ����J  A��L��A��L��A��L��A��L��A{ ��L{ ��A ��L ��A��L��A��L��A��L��A��L��Ap��Lp��~Br��$� sGIf��!�(�j��� �� � � � � � � � � � � � � � ,� � *� � $� � 2� � $�� ���&  � ����� B��- ����HA��Ӭ(B�� L��A��L��$�(�)���� �� � ��� � ��!�) B�������B��A��B��$��%����� �� � �- B��L ����GA��Ӭ A��Ӭ(B�� A��B��$��L��L��L��ӸGL��$�(�5���� �� �� � ��� � � ��" � B��` ��0�����HJ A��B��$��f�A��A��ǬA��f�A�� A��Ӭ(B�� L��L��$�(�I�� � � �� ���"��� �� ��� �� � ����) B�����O �����A��Az��B�� A��B��$��L��L��%��<�� ��� � �������� ��� � � �I B��� ����B�� L��%������ ��� B�������B�� L{ ��%����� ���! B��� ����B�� L ��%������ �� � B��� ����B�� L��L ��%������ ����3 B��� ����B�� L��L ��%������ ����3 B��� ����B�� L��L ��%������ ����1 B���6 ����A��A��" ����A����A��&�(&��(�$��� �� � �� � �� � B����:��J A��f��A��$ ����A����f��A��&�(&��(�"��� ����� � ��  B����#��EA��A��C��A��(���� � � �� � ��� B�������A{ �����(A��(���� ��� zGR@ C���* ��LMӘJ��� A��ߩ ��(�"�������  � � �� �� C�� ��0�� ��� ��LA��ߩ#A��GB��$��A=��A���A����B��$��A���A��B��$��B��A��B��$��$�A����B��$��A$��8A����B��$��A%����A��G��!�/ԭA��A��8���B��AH���ǛA��%������  � � �� � ( ��  �� ��  � �  � � �'�8 ��  �� ��  ���� ���$ � �=�H�# � � ��� � � �! C���� ��B��$���(�����  ��� C��� ��B���$�B]�����%������ �� �� � B����0��(� C��� ��0�� �� �����&��C�� C��ȷC��ȷC��ȷC�� C��DA��B��$��A��Bn����$�B��$��A��C��)�Z� � ��-� ��#� ��"� �� "� ��"� �� # � � � �� � ��� � � � �� C�� ��0��� �� ��0����Q8C��B��$�A��C ��A��~*A��Br��$�A��sA��GIA��~*A��Br��$�B��A��G$�A�� B��A��GB ��$��$�(���� ����" �� � ��"��� � � � ���& � � � � ��� � � ����& � � ��=� F�� � �� �� ��9� �Z��$[\s"'>/=\x00-\x1f]��G������ � ��� �"�"�'�'�/�/�=�>���� ( ) / / _ _ �0�0 � C�� ��0��� �� ��0��#����QTC��ӞA��#��BJ��A��$�E��A��~:A��Br��$�%BK��$���A��G�� ��BJ��$�E��A��~\A��Br��$�IBl��$� ��ʞG��!�/��ʞ ��BJ��A��G$�E��ˁA��˷A��A��GB ��$��˔ ��ӞA��(���� �� �� � � � �� �2� �� ��� � � � ���& ����� � �  � �� �� ��� � � ����$ � � ��� ���6�E�P �� �� ��-�6�  ���� �� � �� /�F�� � � B��d ��0�� �� ����W R+f��$��C��C��C��C��C��C��C��C��B ��$�&��C��)�i�� ���� "� ���� "� ���� "� ���� "� �� �� "� �� �� "� ���� "� �� �� " � � ��"� �� B���  ��0����A��sI)� � � � B�� ����BH��A��%����� �� ��+ B������SB ����%���� � � � B������UB ����%���� � � � B��k ��0�� �� ����Y R+f��$��C��C��C��C��C��C��C��B ��$�&��C��B��. ��$�)�k�� ���� "� ���� "� ���� "� ���� "� �� �� "� ���� "� �� �� " � � ��� ��-� ���' B���  ��0����A��sI)� � � � B�� ����BH��A��%����� �� ��+ B������SB ��G��%���� � � � B������UB ��G��%���� � � � B��d ��0�� ����[ +f��$��C��C��C��C��C��C��C��C��C����&�C��C��)�g�� ���� "� ���� "� ���� "� ���� "� �� �� "� ���� "� �� �� "� ��"� ��"� ��� � �� B�� ����BH��A��%����� �� ��+ B�����o ���0����8C��B����$�A��C��A��C����C ��A��~(A��Br��$�A��sA��GI(�U�� ����* ��� �  ��� �  ��� ��� � � � ���& � � � � �� B���� ���0�� ������BJ��A��$�E����BJ��A��$�E��A��~8A��Br��$�$BK��$���A��G�� ��BJ��$�E����(�҃w�� � �� ��"�� �� ��"���� � � � ���& ����� � � �� � �� �� � B� ��0�� �� ��0��#�� ����'�����^ .\+f��$��C��C��C��C��C��C��C��C��C��C��C��C��C��[�C��[�C��[�&��C��[� C��ȷC��A��B��$�A��Bn����$��3Bl��A��$�A��GC��)��$� �� �� "� ���� "� �� �� "� ���� "� �� �� "� �� �� "� ���� "� ���� "� �� �� "� �� "� ��"� �� "� ��"� �� ("� �� ("� ��(-� �� (#� ��"�� � � ����8� �� � �(�� � ��"� �� �  []<�������� ���� � B�� ����BH��A��%����� �� ��+ B���� ���0�� ����PQ8C��B��A��$�A��)8C��B����$�A��A��C��A��뷦)8C��B����$�A��C ��A��~@A��Br��$�,8C��B����$�A��sA��GIB��$�((��� ��� �'�8� � �#����, � �� � � � � ��#����, �� � ��$��� � � � ���&����, � � � � �� ��� B���� ���0�� �� ��0����Q��A��*��BJ��A��$�E��A����A����A��~:A��Br��$�%BK��$���A��G�� ��BJ��$�E��BJ��A��$�A����((��� ��� �� � � � �� �2 � �� � �# � � �� ��� � � � ���& ����� � �  � �� �� �� �� ��$�� �  � B��8 ��0����` +f��$��C��C��&��C�� C��)�&� � ���� "� ���� "� ��-� �� B����� ���0�� �� ������8C��B����$�A��~98���A=���Ar��B ��A��$�B��A��G$�A�� B��A��GB ��$��$�(�k�� �>�� �#�2��� � ���� � ��)�2 � � ��=� F�� � �� �� ��9� �Z�� B���� ���0�� ������A��~M8���A=���Ar��B ��A��$�*��Ȟ ��BJ��A��G$�E��A��˷A��A��GB ��$��˔ ��(�k�� �T��� � ���� � ��)�2 �� �� ��-�6� ��� � �� � �� /�F�� � B��, ��0����b +f��$��C!��C"��C!��C"��)�$� � ���� "� ���� "� ��"� �� B����S ���0����;��8C��B��#��$�A"��B��B��A"��$�B��B��A!��G$�(�>�� �>�� �#�4��� � ��� �+�B �� � �1�H B����D��;A"��$��BJ��A"��$�%��($��BJ��A!��G$�%��(�.��� �� �� ��.� � � � ��4 B��# ����d +f��$��C�� C��)��� ���� "� �� B�����b ���0�� ������8C��B��&��$�A��~78���A=���Ar��B ��A��$�B��A��G$�(�I�� �>�� �#�4��� � ���� � ��)�2 � � ��=� F�� B����l ���0����'��A��~M8���A=���Ar��B ��A��$�*��Ȟ ��BJ��A��G$�E��(��(�K�� ���� � ���� � ��)�2 �� �� ��-�6� �� � C��$��]ߨ(8���)��8�����!�/�$������� ��� �>�� ��e C��$��Vߨ(8���*��8�����!�/�$������� ��� �L�� ��s C��6�� ��0�� �� ��0��iG[�s L ��L+��Le��I[�GsG[�GI)���0 � ��((   C�� ��0�� ��� ��0��#�� ����B��$�B��$���������������ɥ3�*8���B,����$�GGGG&�(�ɥ3�*8���B,��� $�GGGG&�(� �߷GG߷GG&�(�ɤ�&�(-��Ӟ!�/����� ��� ���  ��  ����� ��� � �  ��!�*��   �� ��� � �  ��!�*��   ��� ����   �� ���  ��� ���4�? C���5 ��0�� ��iCGGGGAe�� GGAe�� LB���L.��(�%�� �� � �  ��� � C� � ��0�� �� ��0��#��� ����'��0��]A.��AB���PA����A ����A��A��A��A��[�!�Q7F��A��28F��Bt��/��0��Ӟ1��Ԟ2��՞G��$�ӷ[�!�SA��C��A��B��$��A��Bn����$�B��$��A��C��(���(�� � � � � �� �� ���  �� �� � � � � �U�f���� �� �0������� �%�, �� �  � �  �� � ��� � # � �� 2�� C��� ��0�� �� ��i&��A ����/��A.����B^�����&�$�"�(!��GGA ������"�(��B^���3��&�$�"�(�g��$���� �� ��!�(� � ���-�V�� �� � �/�6 � ���1 C���G ��0�� �� ��0��[���'��A.�� ��L����L4��( ��L����L4��(�)��(���� �$�-�4��� 8� �� , C� � ��0�� �� ���0��#�� ����'��0�� ����� � � �?� �� � � � ����ziA5��A����&�����A �� A ��A��B��$�5��%z ���=z+ ���=뷦B^���$�#�j�����#"� A�� A4��&�@GA��&�(^�A��A��A��A��&�^�A.��B^���$�#�^�Br��$�SBR�� $�6��>&�� ' Bn�� GB^���$�"�$� ^� #�����B^�����&�$�#���j���^�GG^�GGA �� ��;^�3��A��A�� B^���3��A��A��$�#� �� 6^� ��A��A��B^���A��A��$�#�^� A��A��B^���A��A��$�#�8���7��՞8��!�/��� �� � �� �� ��  � � ��  ��� � ;K � ����  �� ��0'������ ����  ��  � �'�> � �  � ����  �� ��0���&� ������  ��  �� �� � �N�������� � ���1�b�� �� �� �� �� � � �3�J��  �� � �;��x�� �� � � �5�L��  � � �+��f��  � �'�>��  � � �/��n�� ��� �(�? ���� ��0��� �� ��QA��A�� A��A��A��A��(A��븬!A��G�� ��(A��~)A��Br��$�A��GA��G(A��~)A��Br��$�A��GA��G((��� � � � � � � � ���  ���� ��� ���� �� �  � ���& � � � �� ,�� �  � ���& � � � �� ,��  ���� ���0�� ��]븟j���GǸGߨj���ߨwoB��A��C��8���Bo��A��A��$�C��8���Bo��A��A��$�C��A��C��BK��Ǹ$�Ǒ�a(����� �� �� � �� �� � � � � ��� � � ��. �� � � � ��* �� �  � ������ C���y ��0��� �� ��0��#��˷̷ͷA��QA��GA��Ǧ A��A��Ȧ A��A��ɦ A��C��C��C��)�U������� ���� ��#�� #��#�� ��" �� " �� C�� ��0�� �� ��0���V!�(���$�� �� �� �� �� ��� �� ��0�� ��V!�(� ���� � C��S ��0�� �� ���P&�&��8���Bo��B��$��A6��Ap��$�C��A��A��C9��ǸC��(�A�� �� ���� ��� � ��* �[� � ��$ �� ��" C�� ��0�� �� ��0���X!�(���$�� �� �� �� �� C��  ��0���=!�(����� ��� ��� �� C��� ��0��=ߨ &��&�((������ �� C� �� ��0��� �� ��0��#�� ����'��0�� � �� �� �A:��;��j���A��ǷG&�ǷGA<��ǷGA=��A��θwGA<��ʟGA=��A��GA=��A��GA=��A��Bn�� ��LO��L��$�Bn��G$� L��L��(A:��>��dA?�� A��FA�� G  AO���� A�� A=��A�� A=��A�� �A:��@�� A?���A��G AO��=��8���A��!�/A:��<�� A=��A��A?���� AG��A�� AG��CG�� A��A�� A��C��Bn��$� A�� A�� 8���B�� $�8���Bo�� $� H��&�A�� C��m&��&��H��&�&�A��C��I��&�J��!�&�K��&�&�K��&�&�&�K��&�&�&�L��&�빬A��Bn��M��$� C��C��(�����* ��� ��� ���� � � � ��+�o� �� ���$� �� �� ��� ��� ��� ��� �� �� � � � �� �#�*� �� �� � � ��� � � ��� � � ��� � �� �� �� ���� ��� � �� �� �� �� � � ���$� �� �� �� ���� ��F ��#�, ���4 ���*�� ���$���#�� � �"��'�� , ��$�� ��0��� ��OPN��&�&��A��C��(�+���� ��!�, ���� � �� �� C��� ��0�� �� ���0��3�� O��6 �� P��%�� Q���� 6������ R��)�� S���� T��U����Ȟ(�i�� �� ����� ������������ �������������� �/$? +?9v?V-?Zd;O?J +?w/?V-?Gz?J +? C�� ��0�� ��� ��0��#�� ����a_P�˂�̂�ͅG!�&� L��L��V��L��W��ț��ɛLX��@��LY��!�^�Z��&�&�C��A��C��A��C��(��� � � ��� ���� �� ��� �������,� ���%�,����"� �� �� � �� �� C� �� ���0�� �� ��0��#�� ����1qAO��AS��AU��AV��AW��AX�� LO��AT��LT��A\��L\��A ��L ��AY��LY��AZ��AZ��LZ��A~��L~��A" ��L" ��A[��L[��LV��GsI sI sI)�Մa����5�� � � " � 6 � @ � 8 �* � < � "� �  � $�  � ���# #  CT�� ���0�� ��qAO��AW��AX�� LO��&��LS�� LT��LU���TV��LW��LX��)� �� �N � ����� � B�������8���[��!�/�Ԉ���� ��� � C����$ ��AO��x ��Aj��븬 Aj��G((����� �� � � �  C���� ��AO��x ��Aj��(&�(����� �� �  C�   ��0�� �� ��0���#�� ����'�@0�� ������=&�&��˷;^�G^�A��Bn��&��R'�� Bn��$�^�B��$�՗(븬QӷGAO�� ��B��A��$�(AO��C ��B��^ �A��G$�^ �ַG��&�&��^ �ָG ��&�&��\��^ �� L]��"�^ � L]��"�(�ތ��$�� ����  ���  � ��#�� � � �  � � ��� ��&����  ��� �� ���&��  ��!�4��  ���1�< ���3�>���� �� (�� �� (�� B��b ��?����� ������A��GA��G��BH��$�A��s��I)�� BH��$�A��s��I)�B���� �� ��� � �� ����  � ��  � B��? ��?����� �� ������'"B ����$�GG GGB��^�%�)�6���� �� �� ���&  � �� � � C �@0�� �� ��0��#��@ ����'��0���  Bn��$�j���GA��[�"��B ��N��$�7A]��&A^��B^��$�B_��$�ǒ C]��+[�%B ��`��$���&�C]���C^���I Ba��$��)��, � � ��� ��� � ��  � � �+�2���  ���&�� � �# � ��� ����  �� 1( ���* �� ��$ ���>�?�� B�� �@ �#��(�Ҕ B����� � �#�BK��พ$�)�Ք�� �  �� C���' ��=XVߨB ��b��$�((�#���������� ���, C�D ��0�� ��� ��� 9A��.c��븟Gc��#�d�� ȷGd��#�(�J� �� �� �� � ����� ���2���� � � �� C���  ��0��A��GG((����� � � �� � C��( ��0�� ���e��&�B^���B��$��$�B^���$�#��՗"���� �"� ��<�� �� � C�� ��0�� �� ���0��ӗ#��AO��G]AO��H$�JA��A��;B��$�&�A��A��B��țC��B��țC��(f��AO��G��!�/�m�� ���  � �� � ��  � �  ���"�3�:�� � � �' �'����� ���> � �W C�d�� ��0��� ��Pg��&�h��&�A��A��A��C��A��A��A��Ci��A��B_��$�(�R��"�� � ��& ���� � �� � ��( �  � ��  � � ���� C � �� ��0��� �� ��0��#�� ����'��0�� � �P븬&ӷGAO�� ��ӷGA ��ӷGAj��\��빬 ȸGB �� ��$� Ba��$��&��&��j&��Bn��G$�GB ����$�(GB ����$�GB �� ��$�j���븟YGB ��N��$�DGB ��`��$�.Bn��G$�GB �� ��$�Bn��$�&��MGB ��`��$�8Ba��$��뷦Bn��$�&��Bn��G$�뷦Bn��$�'Է ��&�C��Bn��$� Bn��$�j��&�B��k�����$�LA��G A��A��A��C��A�� A��A��Ci��(�ܛ��"�� � �# ��  � � �� � �" �# ���" � ��� �  �� � � ���$ ���$ ���.�� � ���* ���*�� � � ���*(# � � � �� ���*� �# � � � �� � � ���# � � � ���  ������  � � � � � ��� ��#�*���5�F�� �� �� ���(� � �� � ��� C����=!�(� ������� B��V ��0�� ���� +f��$��CO��C��C��C��CO�� C��&��C��&��C��)�H�� �� �� "� ���� "� ���� "� ���� "� �� "� ��#� ��-� �� B���  ��0����A��sI)� � � � B���  ����A��G(� ���� � B���� ���0�� �� ����Q8C��B��l��AO��$�A��~98���A=���Ar��B ��A��$�B��A��G$�A��뷦A��C ��A��j���A��GwA��ɸGhA��GB ��$��A��ɐGB ��$��A��ɸGA��ɐGB ��$��B��!�B ��$��$�B��A��GB ��$��$�P(��� �� �J� �s���� � ���� � ��)�2 � � ��=� F� ��# �� � ��$�� � ��� ���� � ���� ��� �� � � �� � ��  ���� ��+�J �� ��9���� B���� ���0�� ����QC��AO��A��~Q8���A=���Ar��B ��A��$�.��Ȟ ��BJ��A��G$�E��A��뷦"m��BJ��A��$�E��A��˷A��A��GB ��$��˔ ��AO��A��(��� �� � ��� � ���� � ��)�2 �� �� ��-�6 � � ��# � � � �� �2� ��� � �� � �� /�F�� � � � � B������A��BF���$�B]���%��ݫ��� ����&� � B����  ��B ��%��� B�� ���� +f��$��C��C��)��� �� �� "� �� B�������8C��B��A��%��ά����� �' B������BJ��B ��$��%���� �� � B����� ��A��(���� B� ���� +f��$��C��Cn��C���o��Cn��)p��Cn��)q��Cn��)r��Cn��) s��Cn��)  t��Cn��)  u��Cn��)v��Cn��)Cn��)�խ�� �� �� "� ���� "� �� " � �� ���  � � � ���  � � � ���  � � � ��� ����� ��� ���� � ��� ���� � ��� ���� � ��� � ��镲 q?x=\r?&S?-!lV?镲 q?jMSt?KY8? y?x=\r?镲 q?-!lV?&S?jMSt?镲 q? y?KY8? B����N �����PAn��8C��B��An��%�8C��B��l��N��$�B����A��$�(�C� ������ �'�>�� �� �J�i�~�� �� � � �)�H B����2��PAn��w��An��x��(y��A��%��(�#��� ��� ���$ � � � B�������An��An��(��(�ܳ��� �� � C��� ��0�� ��izGGj���GGAe��j���B��$�5��iBr��$�KFA��A��BR��$�!��"A ��A ��BR��$�!�� GGAe��A��!�(�ʹg�� �� �  �  ��� �  ���& �  �� ��� � � � ���  ��� �� C��� ��븬ӷG(A ��z��!�(����� � �� ���+ C�� ��0�� ��� ��0��#��iCA������(A����QA����A����{��(A������(A����|��(��(A����A����}��(A������(A������(A ��Ǘ ��(A5������(��AO������(}��(����(����(����(����(�� ����(����(����(A��BH�� �� ��&�$�(GGGGAe�� GGAe��A��GA��A��GA��((��� ���� � ���� �� ���2 ���( ���$� �� ���� � ���� � ���� ��� � #����� �� � ���� ����� �������� ����� � ���� �(���� ��� ���� ����� ����� ��� �  ����=�D��� � �  ��� ���� � � �� C��� ���0��ӗ(AO�� ��)A��븬A��GߨA����(AO��~��kA��븬`B ����$����JB ����$���4B ����$���A��GߨA����((�����  �� ���� ����� �� �� �� ���8� ���2� ���2� �� ����� ����  C�� ��0�� �� ���0��#�� ����'��0�� ��븬QӷG@9AO��~��)B������$�B������$�&�(&��̷j��Gjr��jj��AO�� ��OAO�� ��AB ����$�B ����$�!A��Bn��&��A��R'��AO����/AO����!A��Bn��&��A��R'��/AO����!A��Bn��&��A��R'��AO����.)&��A��RA��RC��Ba��$��^AO����AO����nA��븧bAO����MA��G7AO����&&��A��RA��RC��Ba��$���AO�� ��j���A��븬j���A��Gj���A����j���AO��~�� AO�� ��AO����[A��GHA��뷦:A��BR��$���A��BR��$�C��Ba��$��Bn��$�͔f(���  ��� � ����� ��  ���+�: ���+�<��� ��� � ����(�� �����< ���8 �� � ��� ��  �� � � �� ��  �� � ��� �� ��� ��  � �� ���� �� ���� ����� ��� ��  �  �� ��'�� ����� �� �� �� �� ���� �#�� � � ���� � � �  �  � � ����� C���  ��0�� ��#���� �� � � C��F ��0�� ���ӗA ��z��!�(AO��GAO��H$�(f��AO��G��!�/�C������ ���. � �� � �� ����� ���> � �W C� �� ��0�� �� ��0���#�� ����'��0��븬.ǷG'BH��z����&�ǷGAO��$�ǷGA ��z��!�A ����A��!�&�!�B������$�A ����&�!�A ����&�!�B����l��$�B�� ����$�[�����^�B��&�&�%����.�� � � � �� ��� �?�L �� ���+�2�� �� ���� ���9�b ���/�Z�� �� �� �;�H�� ���-�6���)�v���-�@�� ������ C���8 ��I, AT�� A��A��L��A��L��Ap��Lp��!�(�"������� � � �  � 2 �  C��T ��0�� ���AT��K��&�A\��Bn��\��$�A^��Bn��^��$�B��&�$�(�<�� ��� � " �  � � � �  � � � � �� �� C�� ��0�� �� ���0��#�� ����AZ��W��AT��#�AZ��V��B����&�&�$�/AT��"�B����&�&�$�^�#���� �� �� ���� ��/�6 ���� � � ���'�8�� ��/�: � � �� �+�4�� � C��% ��0�� �� ���0��#��B����&�&�$�#��,�� �� �� � � ���'�0�� � C� D ��0���A ��~��A��Be���3$�G!�&�!�B�������$�(�<���� �� �� �� � �� ��'�)�~�� ���/�@^\\6�������� �\� � "~j?"~j?"~j?"~j?/$?/$?"~j?"~j?"~j?"~j?"~j?"~j?"~j?"~j?"~j?"~j?"~j?"~j?"~j???"~j?������?������?������?������?HzG?HzG?"~j?"~j?"~j?"~j?������?������?������?������?������? C���� ��AO��x �� Aj��((����� �� � � C�X �@0�@ ��� ��0��#��a_P�qA��A��A��C��A��^�C��ɷA��^�C��(3� �:��� ��" � ���� # � ���� C ��  �����'��0�� ������ ��?��� � � � � �� � � � �� ��"��0�� ��F��F��F��F��F�� ��������0��A��BR��$�BH����������&�$�jw��Ag��ʼB�� ��< �8$ ���&�G�� ��E&< < < &�G˷�,h&�G&�GGX # $ &�G˷28&�G &�G��!�^�&� ��L��^�L��W��Ǟ��LX����LY��!� ^�B��&�� &�^�$�L��L��L��(&�� ^�G � � �   G��&�&�o!����&�@��?��&�I+������&�@����?��&�8�������!�/j��� G!�^�&� ��L��^�L��W��Ǟ��LX��G��LY��!�^�B��G&�&�^�$� L�� L��L��(A��^�C�� Bn��$�E ^�B����&� ^�$�L�� L��L��(����� � � � � � ������k�r�� � � �" �� ���� � � �� �� ��  �� �� � � � �  ����  ���  ( �� � �  ����  �� � � �#�� ��� ����� �����,� ��� � ��%�>���� � ��� ����� � ��"� &�� "���� ��� "�� ��� � � � ���������"����� �����,�� ��� ��1�8��� � ��-� ���� � � ���� � ���/�H�zG?4(\?Q?333333?333333? ףp= ?zG?p= ף?M?333333?/$?(\? C�  ��0�� �� ��0��#��� ����'��0��c_PA��A��՞֞�3Bl��$�TB����&�&��[�$���j��[�A�� [�B��$��A��C���&��3Bl��$�=Bn�� L|��Lw����L����L����L��!�$�3Bl��$�=Bn�� L|����Lw����L�� L����L��!�$� ��L��L��!�B��&��&�[�$�C��A��C��(���(�� � � �$� � � ���5�<�� �� � �  � ��� �� �� � � � ������ � ,� q� ��� � � � ����� � �&� q� ��� �� ��  ��;�J ��%�,�� ��" � �� �� fbox|color|angl��K������ � *��� ���f�b�o�x����c�o�l�o�r� ���a�n�g�l� � ^[bx]cancel$l��/������ ��b�b�x�x�c�a�n�c�e�l� � 00^x?cancel$��9������ ��������������x� c�a�n�c�e�l� � 00 C���B�� ��ӗ AO��ԭ18�����Ԟ����AO��8���!�/(�5�� # ��� ��� �2�� � �� ���� C�2�� ���Ǘ)8�������AO��8���!�/(� 6���� �� �� ��� �^� � �� ���� C��(��h$AO�� ��Br��AO��$�((� ���� ��  � �!�0 � ��� ��0��� �� ��0��#�� ����'��0�� � �� �� � � �?� ��� ��feP��^�B�� B��L:�� =��LO��L=�� ��LO�� L�� =��LO�� L=��&�L��$� ^�B����G��&� &�$���L:��A��L?�� =��LO��L=����&�LE�� ��LO��L�� =��LO��L=��&�L��$�B������&�&�%��!p���� � �� � �� ���� ��� & � � � �"� � � #� � � ���� ����GQ? ��C�� ��0��� ��BD��A��$�A ����Ag��&�!�B�������$�(�#=���� � ��,�� �� � ���I�R�� ���5�F ��F�� ���A ����&�&��!�B������$�B������$�(�$6���� �� ��#�=�F�� ���)�> ���+�> B���H�� ��0�� ��� ��qA��A�� d��LO��A5��L5��L��ԷGLj��շGL��(�*�� �,�� � �  � � � B�  �� ��0��� �� ��0��#�� ����'��0�� � �A��B��B��$��$�B��Aj��$�A��BR��$�������A��Bn����$�A��AB��B��$��$�B��A��$�A��Bn����$�BE��$�B��$��A5���A��B��$��A5��A��A��A��z�� A��j���B��$��A5��A��A�� B�� ;��L:�� =��LO��L=��L<�� =��LO��L=��L<�� =��LO��L=�� L<��&�L��$�QB�� ;��L:�� =��LO��L=��L<�� =��LO��L=��L<��&�L��$�A��GA��GA��GA��Bn����$�B������&�&�%��*��"�� � � ��. � � ���5�@ � � ��� �� �� � �*�� �  � ��* � � ���7�>�� � �,�� � �� ���  ����  � � �� . � �� '��  �����  ��� 6� � �(� � �(� � �� �� ��� 6� � �(� � �� ��������� � �$ ����?������?������?"~j?������?������?"~j? B���� ��0��� �� ��0��#��BD��A��$�B����A��B��$�������$�Aj��PAj��A��%A��A ����&�!�]A ����&�!�FA��&A��A ����&�!�A ����&�!�(�1��&�� � ��( �� � �� ����o���  � �� � ���  � �� � ���"�� �� �A�T�� �� �3�F � �� � ���"�� �� �5�H� �� �� �3�<�� C��� ��0���Aj��ԷA��&�#��5 ��"�� � �� ��  � � C��� ��0��� ��Aj��A����A ����!�@A����0AM��ȷG ��CO��A �� ��!�AM��ȷG~��CO��A ��~��!�A����%A����C��A����C���A����$A����C��A����C��sA����A����$A����C��A����C��2A����#A����C��A����C��(�5��"�� � ���� ���� ���1�8 �� �  �� � �� �� �'�. �  �� � �� �� �'�. �� ����  ���� �� ���� ����  ��  �� ���� ����  ��  ����  ��� �  B��b�� ��0��� �� ��qA��A��ԷG ��LO��A5��L5����BR��$�L��Lj��BM��$�LM��(�;4�� �,� �� � �  � � � � �  ��* �� ���b�� ���AO��x ��Aj�� Aj��GAO�� ��,A����A������A��(��(�<:���� �� � � � �� �� ��  ��� � B��P�� ��0��� qA�� ��LO��A5��L5��ԷGL��ԸGLj��BM��ԸG$�LM��(�>-�� ��� � �  �  � � � �0 � �! B�� �� ��0��� �� ��0��#�� ����qA��A��ԸGԷG���� I ��LO��A5��L5��L��L��L��LL�����L��Lj��  ��LO��A5��L5��Lg����L����L�� ��LO��A5��L5��L��&�Lj��BM��$�LM��(�?�� �,� � � �� �� ��� � �  � �*�"��(�� $ ��� �  � � ��� � ��� �� � �  � �� $ �� B��?�� ��0��� qA�� ��LO��A5��L5��ԷGL��ԷGLj��(�C"�� ��� � �  �  � � � B��3�� ��0��� ��Aj��ԷB��A��&�$�A����C��(�D0��"�� � ��$ � � �+�2�� � ��� . B��1�� ��0��� ��Aj��A ����!�B������$�(�E1��&�� � ���� ���/�6�� ���)�t ������(� C ��LO��&��Lj����L5�� ��L��(�G��� � ��  ������AO����A����(�H  ��  � ����)�� ��AO����AO�� �� A��Ԭ(�H�� ��  ��  � C� �� ��0�� ��� ��0��#�� ����'��G{�� |��B5��ԷG&�ԸG&�%�/�� 3��j���B5����ԷG&�&��$�  ��LO��L����L5����L��B5����&�&��$�B5����ԸG&�&��$� x ��LO����L5��&�Lj��B5����&�&��%�}��B5��}��&��&��%�'��8 ��LO��'��L����L5��B5����&�&��%� ��LO����L����L5��(�H��&�� ���� .�$�� �  � �1�D� � �� �� ��A�N� � �� �  ���1�> �� ��C�P� � �  � �� ���?�P�$�� ��$�C�T��� � � � � �� ���1�J�� � � �  C�� ���0�� �� ��0��#�� ����'��0� � � �� �� � � �?����&��A��B ��$��A��Ak��BD����� ��$�A��B ��$��Bn��B/����$�$�A��B ��$��A��B ��$��B,��$��A��?�� �� B+��$����븟G뷬 Ba��$����A��!�/&��&�ηj��Gj��GAj��Bn��G$�Bn��$�GA��8���!� s x ��LO����L5��&��Lj��I s x ��LO����L5��&��Lj��I��Bg��$�j�����Bg��$�j��� j���  V^� G ? G���� G!�/ GAj��Bn�� G$� ����G!�/ p��G!�/^� C ��LO�� &�Lj����L5�� ��L��Bn��$�HBn��$� B<��$��&��Bn��$�A��B ��$��A��B ��$��8���ʷG!�B�� ��LO����L���L��L��$� ��LO����L5��Lj��L��L��&�L��L����L��8���븞!�B��&��$�L��(�M���� �� ��  ������4 ��  � � �%� �F ��  �� �� �� �� �� � �� ��# � ��� ���B �Q�h��� �  ��� � �� � �� � � � � � ��� � ����� ��� � � � � � � � � ���-����'��� �������  � ��� ����J�w�� � � ���� ����J�w���� ���H�W�`�� � �� � � � �  � � �� � � � � � �  � � � � ��  �� �� ��� ��.� � � � ��_�l�� � � � ���� �(� *��� ��%�,� � ������?������? B���I�� ��0��� ��qA��A�� ��LO��A5��L5��BR��$�L��ԷGL��(�Y �� �,�� � �  �  � � � B�n�� ��0��� ��PB��A��B��$��$�B��A��$�A��Bn����A��$�A���A��C@��ȷC��ȷC��(�ZX��"�� � � �'�: � � ���7�>�� �� � �%�2 � ��  � � ��" �� "? B��� ��0���A ��z��A��&�!�A ����&�!�B�����$�A��d��B������$�B������$�A ����&�!�B�������$�B����$�(�[��&�� �� �� � ��-�L���� ���3�< ���)�4 ��  ���+�B ���-�@�� ���1�: ���7�J ���5�@01 B���3�� ��0��� qA�� ��LO��A5��L5��ԷGL��(�^�� ��� � � * �  B��*�� ��0���B��A��$�A��Bn����$�(�_+��"�� � ��� �9�@�� �� � �, B����� ��A ��z��A��&�!�(�`��&���� �� ���- B�� �� ��0��� �� ��0��#�� ����'�� qA��ԷGx ��Aj��ηG��A��Δ8��8����ʞ!�/ ���ʞ!�/��8���B��$�1���8���B�� ������$� ��LO��A5��L5��L��(�a����� � �* ��  ��� � �$ �C�N�� ���� � ��� ���H�S�Z#��� ���F�Q�X��� ���� � ���� � �G�X� �  �  ��$�� ��0���Aj��B��A��$�B��%��d'���� � � ��&�?�F�� �� ��@�� ��0��� ��Aj��B��A��$�A ����!�B����A��$�(�e:���� � � ���D�� ���/�6�� �� �5�D B��M�� ��0��� �� �� qA��ԷG��A��ԸG ��LO��A5��L5��L��Lj��(�g,�� �� � �,� �� � �  � � � B��u�� ��0��� �� ��0��qA��A��ԷG��A��A��Ak��BD�����$�B/��$� ��LO��A5��L5��L��Lj��(�hH�� �<� � �,� ����$�+�2�� � �%�,�� � �  � � B���� ��0�� ��� ��0�� qA��A��B ��$��A����B;��$�A��AT��A��B������$� ��LO��A5��L5��L����AB���L��(�kW�� �� ���� ���&� ��  ��$�.�Q��� � �  � � �� B��X�� ��0���POB��N��&�&��$�A��7A��Bn��`��$�A��A��A��C��(�mE��"�� ���-�4�� �  �� � � �  � �� � ���" B��T�� ��0���POA ��N��!�A��9B�����`��$�A��B����A��$�(�nE��&�� �� ���2�� �  ���1�H � �� � ���+�N �%�� ���A���3Bl��$� ��!�/(�q*���� � �0� � ��� ���<�G�N��*^(?:[\\{}$&#^_]|EOF)$��@������ � ����#�$�&�&�\�\�^�_�{�{�}�}� ���E�O�F� � ���P�� ���A��B ��$��A����0A��B ��$��A����A��B ��$��(�r0���� �� �� ��  ��  ��  ��  ���l�� ��0�� �� ���A��Ak��BC���A��$�5շC]�� &�L��LT��A��B ��A��$�L��A��Ak��BD���$�)�sK���� ��� � � �  ��'�� � �� �� . ��� � B��}�� ���0�� ��qA��A��B ��$��B,��$��A��G9�� ��A��GC��B4��$����#���!�/�uK�� �, � �� �  � �� �� �� & �� �  � �'�@�� ���F�Q B� �� ���0�� �� ��0��#�� ����qA��A��A��B ��$��A���3Bl��$� ��!�/&��&�A��B ��$��A����j��A��B ��$��A����j���A��B ��$��A����'A��B ��$��GBn����$��A��B ��$��3Bl��A��$���A��E��!�/8��A����A����!�/Bn��&��$�A����  ��!�/GBn��A��$� qA��A��B ��$��B_��$��� ��A��B ��$�B ��$��A��Ak��BD��� L��LT��L ��G$� ��LO��A5��L5��(�x�� �,� ��  � �0� � ��� ���<�G�N��� � ����  ��  ��  ���� �� � � ��  �� �� � ��� ���8 � �Q�\� ��&�� ���( � �A�f�� � � �� �� ��� �J� � � � �� ��#����� ��  ���� �  ��� ���(� �]�f� � *^(?:[\\{}$&#^_]|EOF)$��@������ � ����#�$�&�&�\�\�^�_�{�{�}�}� ���E�O�F� � ^[1-9]$@�������� ��1�9� � B��e�� ���0�� �� ��qA��A��A��B ��$��A��B ��$����"� ��LO��A5��L5��(�=�� �,� ���0 �� �� �� �� ���<� � B���� ���0�� �� ��0��qA��A��A��B ��$��A��B ��$��A��B ��$����"�A��B ��$�A��B ��$� ��LO��A5��L5��(�T�� �,� ���4 ��  �� �� ���B ���� ����� � C��J ��0�� �� ���0��iCA��GA��GAe��ȗ 8��� ��Ӟ ��Ԟ��!�/(�ȃ<�� �� � � � �  ���� ��� �,�$�k�v�� C��c ��0�� �� ��0���#�� ��B��$�B��B^���B��$�$�&�$�A��A��B��ɛC��B��ɛC��A��C��(�ބJ��$�� � ��* � � ����6�S�^ � ��� �' �' �� �  C��g ��0�� �� ���0��PB��$�˸A��A��B��$��A5��A��Bn����$�A��C>��B��ȟC��B��ȞC��)�E�� �� � ��* � � �� �� � �( � �� �� �' � C��, ��0�� �� ��0��#�� �����B����[�$�[�"�(�ۇ,��,�� � ��;�F ���� � � C��� ��0�� �� ��B����Ԟ��%��ˆ��$�� � �� �E C��K ��0�� �� ��0��#�� �����,[�"�B������Ԟ&�&�$�A��[�"�^�A��(�>��,�� �� ����K�R � �m�t�� �� C� �[ ��0�� �� ���0���� ����B����&�B��&��B��$�&�$�&�$� =��LO��L=��(�C�� �� �� ���� ��& � � ���E��� � �  C� � ��0�� �� ���0��#�� ��?a:_P��GB��$�G��GB��$�GG��GB��$�GG��8���B��ԛ$�!�&� ^�L��^�L��V��^�L��W��Ǜ��8���B��ԛ$�LX��@��LY��!�^�B��&��&�$�C��A��^�C��A��^�C�� =��LO��L=��(�Ë�� �� �" ��� �" ��� �" ���� ��� � � �����T�������������� � ��� B� ���%�,�� ��" � ���� � �� �� � � Mb? C�"�( ��0�� �� ��0��#�� �����'��0�� ������ ��?��� � � � � �� � � � �� ��"��0�� ��F��F��F��F��F��H��H��H��H��H��H��H��H��H� �H�!�<a_,��/�� ��1�� ��3�� ��5�� ��w7��/����3��Y9��1����5��;BH��$�����MBH��$�����,�� ��)���� �������� ��)!����"�������� ��$�� ������H�� ��$���������� ��$��"������ �� ��$!���������� ��)#����$������kg�� ��)%����&������k+��  ��#'��(��)������� �� ��#*��+��,�������3�� 2��'��)�������1�� 0��*��,������_/�� .��'��,������0-�� ,��*��)������[�A��A��[� A�� A�� [� A�� A�� [�A��A��  8���Bo��8���B-�� $�$� B��$��A5�� A��&��뷦j �� 8���B��$�^�8���B��$�^�!�B��$���B��$���^�&� L��L��W����LX��!�^�B��&��&�$�C��A��C��A��C��Bn�� =��LO��L=��$��Bn��^�[�$�Bn��^ �$�& ^ �Bn��^ �$�m ^ �Bn��^ �$�Bn��^ �$�Bn��^�[�$�Bn��^ �$�Bn��^ �$�Bn��^ �$�Bn��^�[�$�B��^ �A��$� ^�B�� @��L:��L?��L�� $�!^ �^�B����.��&�!&� $�^ �A��[�#��ۏ ��,��� � �� � ��� ��� ��� ��� �� ��� �� ���  � ����� � ����� �� ������ �� �� ������ �� �� ����� �� �� ����� �� �� ����� �� �� ����� �� �� ������ �� �� ������ �� �� ������� "�� ������� "�� ������ "�� ������ "�� ������ "�� �� ����"�� � ��� � ��� � ������ �� � ��� �� �� � � �  ���@� ��� � ��� �'��� � � �� � � ���8���� � ����� �������������i�z���'�.��� � �� (� ��(� � � �-�@�  � � � � � ��� �� (�  �� �*�� (�  �� �"� � ��  � � � � � ��  �� �"� � ��  � � � �� � �#�6��� ,���{��������I�R� �m{Gz? C��[ ��0�� �� ��0��#��� ����9a_P!�&� ��L��L��/��՞LX��0��LY��!�^�B����&�&�[�%��K��(�� � ��� ������  ����,� ������; C�  ��0�� ��� ��0��#�� ����'��0�� ��PB��$����A��"�A��8���Bo��Ap��B��$��A<��$�ηAO����`ʛӸ �ʞɜʞɜ^���"�A��1��C��ɜ�AO����g^�A��G^�A��Gʞɜ^�A��Gʞɜ^�2��A��"�A��3��C��ɜMʞʞ8���B,��ӛʞ$�^���"�A��4��C��C��A��^�C�� L��L5��B��$��A<��ʞɛL6��(����� � * � � �C�N �"� � �" ��Q������ ����  � � � � �'�.� ��� � ( ���� �  �  � �� �  �5�<� ���  #  � � ���� �'�.� ��� ���'� ���� � �� ��$ffffff?ffffff?-?L7A`?333333??333333@ C��� ��0�� �� ��0��C���� �� ��(A���� ����BH��$� BH��$�Ը[�#�BH��^�$�^�^�G[�#�^�7��ӞG��!�/���(�� �� ����� �� �� � � �� � ����  ��" �����  �#�*�� ���.�= C����e ��AO������(AO������A����(AO��7�����(8���8��AO��9��!�/�G�� ���� � ���� � � � ���� � �� ��� �> � �_ C�� ��0�� �� ��0���#�� ����'��8���B��A��A��$�gGAO��7���WG��A��A��GAO����B��GA��$�A��ԦG(븟G(�Ƿw��$��� � � ��0 � ���� � ���0 � �  ���� � �)�8 � �� ���� � C� � ��0�� �� ��0��#�� �����C���� �� ��(A���� ����BH��$�BH��$�^�^�^�"�AO����^�A��[�[�"�(AO����^�A��[�[�"�(^ �[�[�"�(�ҹ��,�� �� ����� �� �� ��� � �� � ��#��  ���� �� � �%�, �� � �#�* � C��j ��0�� �� ��0��#�� �����'��0�� ��B��$��A5��A��̼B��$��A=��8���Bo��ǟǞ$�8���Bo��țʛɟ$�[�[�#��K��,�� �� �"� ��� �  ��� � � ��&��  � C�]�� ��0���BH��A��$�(':��A��;��A��G��!�/<��AO��G��!�/�P��"�� ��  � ��(���� ���, � � ���{����6 � ��W ��R�� ��0���ԷG ��LO��A��A5��L5��A��GA��L��A��GA��L��A��L=��(�0���� ���� � � & ��  ��  ��  ���G�� ��A=����B��A��&�$�(B��A=��A��A5��A��&�$�(�,�� �� � ��* � � � �  �K ���� ���0�� ��P&��A=����Bn��A=��A5��$�A ��~��!�A����A����B��>�����$�B��>�����$�B�������$�A��A��GB����$�B��?��$�(�����  �� � � �� �2�� �� �� �'�. ��  �� ���)�: ���)�< ���/�@�� � �-�<�� ���-�4 ���-�4 C�����Aj��8���@��!�/)��� � �� ��� � ��h�� ��0���A��A��Ak��BC�����$�ǘJ��� A��!�/ ��LO��A��A5��L5��ԷGA��L=��L��(�J���� ������.���� ��� �l�� � � . ��  ���  ���� ��0��� �� ��0��ԷGA��BB��CB��B/��$�BB��CB��B*����$�B4��$���� ��LO��A5��L5��Lj��A��Ld��A=��Lc��A��LC��(�`���� �� � � �� � �!�( �  ���#�*�� � �'�N�� � � " � � �  � " �  � �� ��0��� �� ��0��#�� ����'��0�� � �� �Aj��Է����&�"�˷̷͸ηFGAD��18���Bo��GA��$�8���Bo��GA��$�A��A��Ad������&�#B��Ad��A5����&�$�B_��$�MCGAD��*sB��A=��AE��A5��&��$�IAc������&� @AC��B��AC��$� B��Ac�� A5����&�$� Bn�� $�^�B����&�%���� �� �� � ��/�J��� � �� � ���&� � � ��q� � ���  �� � �  � � � �G�\ ����� ��� � �#  �� � � �W�Q���  �� � �*�� � � ��0 � �  � �I�`�� � � ��� �+ ���� ��0��� �� ��Aj��Ad����AA ��~��Ad��A5��&�!�B��>�����$�B_��$�Ac����`A ��~��Ac��A5��&�!�B��>�����$�AC��B����AC��$�Bn��$�^�#���� �� �� � �� ���� �� ��  � ��)�R ���)�: ��� ���� �� ��  � ��)�T ���)�: �  �� �5�N � � ���� ��H�� ��0���ԷGA��AB�� F��!�/ ��LO��A��A5��L5��A��L=��(�9���� �� ���� ���H�S�Z�� � �  ��  ��N�� ��0��� ��A=���� &��6B��A=��A5��&��$� A=��L=��LE��CD��(�@����  �� � � � � � �;�D�� � � ( ��"�� ���� ��0��� ��A=��$��A=��#��#����A=��A5��A ��~��&�!�B��>�����$�B����G��$�B����G��$�(�e���� ��  �� �� � � ��*�� �� �)�2�� ���)�: ���+�@ ���+�@ �  �� ��0��� �� ��0��#�� ����'��0�� � �� �� � � �?� ��� �� ����OP7_aB��Aj��$�A��BR��$�A��ͷBM��Aj��$�H��EB����H��&�$�B��$��A6��ɜC���B��$��A$��I��j�� LH��� ��L�� LH�����L��B��$��A��A��A�� A��^� CJ��8���B,�� ɛ$� ^� ^�^�I�� !�&� ��L��^� L��/�� LX��0��LY��!� B����&� &�$�A��^� C��A��3Bl��$�HA��Bn��K��$�2L��A��Bn��M��$�A��Bn��N��$� 3Bl��$�I8���Bo��B��$��AA��Ap��$�B��$��A@��O�� ]L��E8���Bo��B��$��A6��Ap��$� 8���Bo��A��$� ^�BC�� $� 3Bl��$�%A��P��CQ��A��^�CR��8L��. %A��^�CS��A��^�CT��A��AU��/A��AU��CU��A��A��A��C��AU��QB�� ;��L:�� =��LO��L=��L<�� =��LO��L=��L<��&�L��$�u 3Bl��$� ��&�&��B�� ;��L:�� =��LO��L=��L<�� =��LO��L=��L<��LE��&�L��$�3Bl��$�A��C��A��C��3Bl��$�#B����V��&�&�$�(B����&�&�$�(����� � � ���1�< � � � � �&� � �!�.�� ���)�< �� ��*' �� �� �� ��� �/�: ��� �1�< � & ��� � �  � ��� ��� � � ���"���������&�� ��"��,� � ���;�B � ����  � � �� � �# �� � �&�� �� � � �� � ��� ��� � � �� � �� �=�b ����#��� � ��* �U�z � � � ��(� �'�.�.� � � � ���  � ���� �� ��  � ���� � ��"��  �  � " � �� � �  � �� � ��  �  ��� 6� � �(� � �� ���� �� � ��  ��� 6� � �#� � ��"� ���� �� � ��� � �� � �� � � ����E�L ���+������?333333?ffffff? cancelR��"������ �c�a�n�c�e�l� � box@�������� �b�o�x� � ������??(fbox|boxed|fcolorbox��Z������ � *��� ���f�b�o�x����b�o�x�e�d����f�c�o�l�o�r�b�o�x� � J +?cancel|phase��;������ � ���c�a�n�c�e�l����p�h�a�s�e� �  cancelR��"������ �c�a�n�c�e�l� �  cancelR��"������ �c�a�n�c�e�l� � ���� ��0��� �� ��A ��A��Bg��O��$���W��Aj��&�!�A����B��X��Y��$���B��X��Z��$���B��X��[��$�u��B��X��\��$�U��B��X��]��$�5��B��X��^��$��� ��j���B��$��A@��B��$��A=��B������Ǜ ��$�B������Ǜ ��$�B���� ��$�B���� ��$�A����L8���Bo��B��$��AA��Ap��$�B����_��ɞ`��8���A��$���B��X��a��$�AU��B��b��AU��$�(����� ��� � � ���*�� � ����� �� ���/�X�� ���/�\�� ���/�N�� ���/�X�� ���/�>�� ���/�J�� $�  �� �� ��� �9�F ��� �;�H �� �/�< �� �1�> ���� � � �� �=�b ����� ��[��� ���/�~� �� � " ��" �?�b B��X�� ��0�� ��� ��0��#��qA��A��ԷG��A��ԸG ��LO��A5��L5��L��LU��Lj��(�+�� �,� � �,� �� � �  � �$� B��p�� ��0�� ��� ��0��#�� ��qA��A��ԷG��A��ԸG��A��ԹG ��LO��A5��L5��L��LU��L��Lj��(�:�� �,� � �,� � �,� �� � �  � �$�� B���=�� ��0��� qA�� ��LO��A5��L5����L��ԷGLj��(��� ��� � �  � �  B���B�� ��0��� �� ��qA��A��ԷG ��LO��A5��L5��L��Lj��(��� �,� �� � �  � � B���=�� ��0��� qA�� ��LO��A5��L5����L��ԷGLj��(��� ��� � �  � �  C� �� ���0�� �� ��0��#�� ����1qAO��AS��AU��AV��AW��AX�� LO��AT��LT��LY��L~��LV��GsI sI sI)�?����5�� � � � �$��  � ���# #  C���� ��sI)���  C���� ���0��&��B ��$��B,��$��A�� ��%B+��$��B ��$��B,��$��A���� ��7B+��$��Bn����$�B ��$��B,��$��A��(�[����  � �� �� ����  �  �  �� �� �� �  � ���0 �  �� �� ��.�� ���A��A��AT����Ac��d��!�/)�$���� �� ��� ��� ��' C���$��Bg��e��$�Bg�����$�()��� ���"�� ��� C�@ ��0�� ��� ��0��#�� ���@'��0�� ��� �� � � �?� �� � �� �@�� �� �� ��"���QqAf��A��A��A��A��Ag��Ah��Ai��Aj��A\�� A��B ��$��A��Ak��BD����� ��$�ʗBA��B ��k��$� #8o�� ʗʷl�� !�/A��B ��$��&�� &� &�� &��&��Bn��$�B/������$�A��B ��$��A��B ��$�� x ��LO��A5��L5��Lj��* C ��LO��A5��L5��L��&�Lj�� Bn��$�B,��$��A��?��N= 5m��A��!�/A��B��n��o��$�B+��$����m 븬BAO��C ��1Aj��GAj��뷬 븦  Ba��$�� 븞Bn��&��$����}B+��$��A��B ��$��A����B;��$� Bn�� AB���$�Bn��$�&�� Bn�� $� p��A��!�/A��B ��$��A��B ��$�� ��LO��A5��L5��L��L�� Lj��L�� L��Lf��L��L��Lq�� L\��(�ȅ�& �U �� # ������4�� ��$�#�H� ����# �� ���6�A�H �� �� � � � � � �� ����� �� ��� � ��9�J ��  �� � � � 2� �  � �� � � ��� �� ���#�� ���: �I�` �� ��3� � ����#�� � � �#���� ��(� � ���� � �� ��  ����  ���(� � ��*�� �� �� � ���� ���L �[�r�� ��  �� � �  � �����,�$�(�� C���"��A��Ak��BD���r���$�)��� ������'1 C ���� ���j���A��Ak��BC���s��$�=Bn��B.��s��!�&�$�$�A��Ak��BD���s��$�)Bn��◗A��Ak��BC���r��$��$�)�`��- �����  � ���� �� �N ������ �-�6 � ( �����$�W1 C�����BR��$�B�� ��(��(����� � ���� C�35 ��0�� ��� ��0��#�� ����'�@0�� ��� �� � � �?� �� � �� ���@ �� �� ��"��0�� ��F��F��F��F��F��H��H��H��H��H� �H�!�H�"�H�#�H�$�H�%�I�&�I�'�I�(�I�)�I�*�I�+�I�,�I�-�I�.�I�/�I�0�I�1�J�2�,OPAj��A��η8���!�&��8���Bo��B��$��A?��Ap��$�B��$��A=�� A��3A����%B��A��$�A�� � A�� A���� LH�����L��   A��   ʷGAj��j��Aj��G8���!�EGA�� A��A�� A��sIA��G)A��  C��C��C��sIǸG�B��$��A5��A��&��&��&��Aq��j���Aq��B��$�j���ɤj���GA�� Aq��G!"!B����&�&��$�"4!B��&��&��$�"B��&��^�!Է$�""A��C��"A��C��Bn�� =��LO��"L=�� L<��$��B̷j ��G #$#AO����jJ��$BB����&�&��$�A��^�B��$��A>��C��Bn��$�#A��#��#A����j���#A��#��P����%B����&�&��$�&&A��^�C��&A��^�CT��&A��%C��&A����^�C��''&A��^�'Ci��Bn��&$�^���#A��!�/G #$j��(ȷAf��T^�BI��#A�� $�((6B����&�&��$�A��^�(C��Bn��$�&��)ɤaG**G++M*A��,+*A��C��+*A��C��)Bn�� =��LO��+L=��,L<��$��B�� ;��L:��)L��$�)B����#A����&�)&�$�)Bn��)$�Af��T^�BI��#A�� $�((6B����&�&��$�A��^�(C��Bn��$�B����&�$�뷦j���B����$�-B����$�. =��LO��L=��L<��&�/뷦mBa��$��00A��10A��&/Bn�� =��LO��.L=��1L<��$�$/Bn�� =��LO��-L=��1L<��$�B�� ;��L:��/L��$�뷬B����&�&�%�B�� ;��L:��L��$�2B�� ��&�2&�$�2B��2&�%�� ��� � � �$���� ��� � � �� �I�r ��  �& �(��� � ��,��  � �� �(� ��� �-�4� � ������� �� � ��� � � ����� ��� ��(�� ��� � �� �� ����� �� � � �#���� � #��'�� '��'# � ���� �� � � � � � � � ��� � ��� �� � � �� �  ���/�6�  ���$ � ���/�6�� � ��� � � � ��?���� (� ��� � �� � ���1�:� ��  ��#�B� � ��� �� ������ ��,�E�L� ���� � ��"�� � ��"(� ��� � ����� ����� � ��� ���6�G�^� � ' 2����  # � ,� ���&� # ���1�:� �� �� � � ����� � ��� ����� � ��� � � � ��?�� ��� 6��m�t ��� � �Q�\� � � ( � ,� ��!�(� # ���1�:� �� �� � � �� ���'�0�'�� �� �-�: �� �5�B� � �� ���� ��� � � ��?�J� � � ��?�J ��� 6��m�t��� ���+�2�� ��� 6��m�t�� ����+�2 �� y?ffffff?333333? C 3J��J���'+Ƿ�Bn�� L��GL��$��)�Ɩ%���� � # � � � � �/�+������? B����J��(��� C�  ��0�� ��� ��0��#�� ����'��0�� ��� �� � � �?� �� � �� ���� �� �� ��"��0�� ��P&��A ����&����&�!�A ����&����&�!�ͷAj��j���Aj��G&��*Bn��A ����G&�!�$�Aq��FAq��G:B_��$�Bn��$�A\��B_��$� Bn��$�Bn��A ����!�$�BA ����!�A���A��A��B����$� A��jH��A��뷦j:��A��   GAO���� ��  븟GAO���� �� j��� GAO����) GA��G   ��  B GAO����/ ) GA��#������ wB���� B��$��$�3Bl�� $�B���� B��$��$�A����VA��&������B����B��$��$��A����A����B������$�]A����B������$�9A����B������$�B������$�A�� G뷦��Þ 븟G뷦��Þ 븟0G뷬��GG����3Bl��$�B����B��$��$� í1A ��W��&�!�B��X�� B��$��$�A��5A��)A ����&�!�B����$�(������ �� �� �1�P�� �� �1�V � ��� � � � �� �� ��  � �+� � �\ � � ����� � � � ���� � � � �� �� �)� ���� �� ���/�: �� � ���� ��3�@�� �  � � �'�� �� ����� ���� ���� �� � #� #�� #���������9�J�� � ����9�J �(��� � � � ���#�2�� �=�X �(�  �(��� �9�H �(��� �9�R �(� �� �9�L�� �9�H�� � � ��������� ����a�t�� �� � ����3�D���� ���5�>���3�F �  �#�� ���1�:���5�B������??{Gz? ףp= ?[sd]D�������� ��d�d�s�s� � [sd]D�������� ��d�d�s�s� � 1 C� ��0�� ��� ��0��#�� �@�@'�@0�� ��� �� @ � �?� �� �Ac��Bg��e��$�&��Ac��Bg��S��$�����Ac��_���A�� L��L�� ^�Ac��Lg��Li��L��Lj��A��A��A\��L\�� ��η x ��LO��A5��L5��&��Lj��ԷGYԷGAO��x ��IԷGAj��%ԷGAj��G��  A��8��� Aj��B���$� V��� ��      s ��LO�� L�� L��L��I ����C��(�۷�� ����"# �� �� � ������ �� �� ����  � �:�(��� � ��� ���� � � �  � �����  � ��� � ��4�S�^�� ���  � ������ �� � �� ## � � ������ ��$��  C��x �� ����� �� ����'  �2GC ��Aj��Gx ��Aj��B_��$�ǹ)빜^�ʤ#^�����^���ʞӷG!�/)�̻h���� ��� � �( � ��0 � ���} � � ��� ��� ���6�� � B�Z�� ��0��� �� ��0��ԷG ԷG&�ԷGx ��Aj��BF���$� L��Lf��Lj��^�A��^�Ac��#��J���� � � � � �&� ���� �,� ��� �  � � C��{#�� ��������A����Bg��$� ��LO��L��(#�� ��LO��#��L��(�� ��LO����L��(��Ȟ!�/�]���� �� � � ����� � � (���� � � ,� ���� � � ,� �� ���:�I B��� ���0�� �� ��0��#�� L������&�L������&�L���� ��&�L��#��#��&�L��'��'��&�L��Ac��Be�����$�G�� Lf�� ��LO��L��&�L��Ac��B��Ac��븟$����j���A��B ��$��B,��$��A����j���B+��$��B ��$��B,��$��A����Bg��$���A��!�/B+��$��B ��$��B*����$�B+��$�� ��LO��L��&�C��A��Ac��8���Bo��&�Aj��BF���$�R'��8���!�B�� ��LO��L��$�C��8 ��LO��A5��L5��&�Lj��ǷGLd��ǸGLc��LC��((����� ���� �� � � �� ��  �����&� �*�� � �  �� ���/�:� �� � � ���  �  �  �� � ����� ���. �=�T �  � �� � �  �� � � � �� � � ��>� �� � ��� $���� ��� ��� � � �1�:� � " � �  � ��� ( B���� ��(� B�%�� ���0�� �L��A������C��(�"���� �� � ��0�� ��$� ������? B��� ��0��� �� ��0��ԷG ԷG&�ԷGx ��Aj��BF���$�븦 ��!�/ L��Lf��L��^�A����Aj��뷦Aj��G븦 ��!�/(�}���� � � � � �&� ��� ��� ��� �`�� � �,�� � ��0 � � � ��� ��� �`�� C��=#�� ��������A����Bg��$� ��LO��L��(��Ȟ!�/�7���� �� � � ����� � � (�� ���:�I������? B��� ���0�� �L�� ��LO����L��L��L�� ��LO����L��L��L��&�L��A��Ac�� ��LO��A5��L5��&�Lj��Ac��Bg�����$�����Ld��Ac��Bg�����$� ����Lc��LC��(�v���� ��� � � �#� � � �� � � ��:�� � � " � �  ������  ����� � �� 333333? B���� ���BH������&�Ac��$� ��LO����L��&�L��L����L��Ac��Lg��Li��A��A��A\��L\��A�� ��#��U�� ��� �?�T �� �� � � � ��(� " � �:� ��� �� � � B��L�� ��� Ac��Lg��Li��Lh��Lj��A��A��A\��L\��A�� ��#��9�� �� �� � � �:��� ��� �� � � B�����A��#������ �� � B����� ��A����!�/����� �� ��! B� ��� ��0��� �� ��0��#�� ����'��0�� � �� �� �qA��A��ԷGAO��x �� ��!�/ηAj��Aj��G��A��Δ��j���Br��$���ʞ!�/GqA��A��B6����ʞ ��$� A5��L5��Lc��L��BV��$� B*����$�A�� B4��$���� A8���ʭ$��ʞ�� A8��� �� !�/ ( ��LO��A5��L5��L8���L��(��� �,�  ���� ���6�A�H���  � � � ��.�;�B��  ���$�� ���0�?�F�� �& ����?�J� � �� ��� ����&�� � � �'�F��� ���*�,� ��{����� � � & � � ���� ��0��� ��A ��B��$�Aj��#������ � ����� � � ���� ��0��� ��A ��B��$�Aj��#������ � ����� � � ��[�� ��0��� �� ��0��qA��A��ԷGG  ��LO��A5��L5��BR��$�L ��Lj��(�6�� �,� � ���� � �� �  �  � � � ��v�� ��0��� �� �� qA��ԷGBM��$� ��LO��A5��L5��L��  ��LO��A5��L5����L ��Lj��&�Lj��LM��(�=�� �� � ���$�� � �  �  ��� �  � � $�& ����� ��0��� �� ��0��#�� ��qA��A��A�� qA5��B/��$���BR��$�  ��LO��L5��L �� x ��LO��A5��L5��Lj��Lj��(�@�� �R�� � �%�0� � � ��� � � ��� � �  ���� ��0���, ��)Az��A��Az�� B��$��A��K��A��A��A�� A��%�� A�� �� A��(�O���� ���� � �- �  ��� � ��  � �� ���  � � �� ��0��� �� ��0��#�� ����'��0�� � �� �� � � �?� ��� ���� �� �� �� ��O,A��A��B��$��B��$��B��$�A��A��c�B��$��A=��B��$��A=��A��A��C��A��A��C��B��$�A��A��OA��!A�� B���� $�B����$�A�� A��  B��$��A6�� A��^�A��A��A�� ��8B��$��A'��  B��$��A*�� D B��$��A(�� B��$��A)�� B��$��A+�� j���B��$��A5�� A��  A��  A��   A��  B�� ;��L:�� =��LO��L=�� L<�� =��LO��L=��L<�� =��LO��L=�� L<��&�L��$�� A��A��       B�� ;��L:�� =��LO��L=�� L<�� =��LO��L=�� L<��&�L��$�B��$�B��A��A��C��B��A��A��C��A��^�A��A��B��$��A3��IA��^�A��A��#B��^�A��$�B��$��A4��B��$��A4��A��^���&�0^�B��A��B��$�A5����&�$�A��B��&��$�KA��^���&�0^�B��A��B��$�A5����&�$�B����&�B^���B��$�$�B����&�&�$�&�%������ � ��* �  �  ����� � �� ��� � ��� ������ �� � �  ����� � ��* � � ��� �� �5�> ���1�8�� �  ��,�� ��� �� ��  ' " ��  �� # ��  # ���� '�� ��� (� � �(�� �� ( ��� 6� � �(� � �(� � �� ���� � �#((� ��� 6� � �(� � �� �� ���� � � � � � �� ���  ��  ���  ���,��  ������ ��  � � �" � ��� � �u� � ��� ��  � �"�" � ��� � �w� ��� ����6 ���'�0�������!@������ @������?������?������?������?������?������?������? �  �� ��0��� �� ��0��#�� ����OP,A ����A��A��&�!�A��B������$�%A��A��B����$�^�A��A��A��A��A��YA ����&�!�A��^�A��A��������B����$�B�����$�A�� A��j���&��A��UA ��~��A��A��Be��!��$�!�&�!�B��>�����$�Bn��$�Bn��$�A��UA ��~��A��A��Be��!��$�!�&�!�B��>�����$�Bn��$�^�#�(����� �� �� � �� � ��I�h � �� �9�R ��� ��� �� ��9�F��  � ��& � � � �� ���1�:�� ��� �� ���7�> ���5�@ �� �� ��  �� �� �� �� �� � ��� ��5�)����)�:� � �� � � �� �� �� �� �� � ��� ��7�)����)�:� � ����� ��0 ��� �� ��0��� �� ��0��#�� ����'��qA��A��ԷGԸG�� �� ��  ��� ��y �� ��  ������J ���� ��- ������8�����!�/ ��  ��  �� ��  ����  ��LO��A5��L5��L��L��L��L��L��L��L��L��(��� �,� � �������� � ����� � ����� � � �� ����� ��� ��T���� ���� ��� �� � �  � ������� ���p�� ��0��� �� ��0��qA��A��ԷGԸG  ��LO��A5��L5��L��L��L��L��L��L�� ��L��L��(�҇4�� �,� � �� � �  � ����� �� $ B����� ���0�� �� ��qA��A��A��# ��  ��T$ ��  ��C% ��  ��2& ��  ��!' ��  ��8�����!�/ " ��LO��A5��L5��L��L��(�a�� �<��������������� ��� ��� ��� ��`�� � �  � "� C��� ��0���뷦��(����� � �� �#���  B� ��� ��0��� �� ��0��#�� ����'��0�� � �� �� � � � qA��ԻGԼGԷGAO�� ��A���� A��ԸGAO�� ��A���� A��ԹG�� A��AB��� AH����� ԺG AO��x ��2 Aj��뷦B Aj��G�� 8��� A��G  �� 8��� A��G  ��LO��A5��L5��L��L��L��L�� L��L��L�� L��(�ώ�� �� � � � � �� �� � �� � ����� � �� � �&� �"� ��� � ��� ��� � ��. ���, �� ��� �� � �  � ������� B��]�� ��0��� �� ��qA��A��A�� " ��LO��A5��L5��* ��L��ԷG��AB���L��L��(�ē$�� �<�� � �  � "� * � ��  ���� ��0��� �� ��0��#�� ��qA��A��ԷGԸG" ��A��ԹGAH���  ��LO��A5��L5��L��L��L��L��L��L��L����L��(�J�� �,� � � � �%�6 � ��� � �  � ������ � � �� ��0��� �� ��0��#�� ����,A��AO�� ��RA��A��B��B��$��$�A��B��B��$��$�Ag��+ �� + ��Ag��B��A��$�BE��$�A��j���^�B�� B��L:�� =��LO��L=�� ��LO���L�� =��LO��L=��&�L��$�A��GA��GA��GA��Bn����$��^�B�� @��L:��A��A��L?�� =��LO��L=�� ��LO��L�� =��LO��L=��&�L��$�A��GA��GA��GA��Bn����$�j��^�B����A������&�&�$�A��Y^�B�� B��L:�� =��LO��L=�� ��LO��L�� =��LO��L=��&�L��$�t^�B�� @��L:��A��A��A��L?�� =��LO��L=�� ��LO��L�� =��LO��L=��&�L��$�^�B����A������&�&�%������ � �� � � � ��*�=�D � � ��*�=�D � ��0 ��$�� � � �#��R � �� � ��� 2� � #� � �� � � ������� � �&��� , � � � � (� � �� � � ������� � �&"�� �� ����_�f ���� 2� � (� � �� � � ����� ,�  � � � � #� � �� � � ������ ����_?????? ��<�� ��0���BD��A��$�A ��A������Ag��&�!�(�4���� � ��(���� � ��� � ���k B��S�� ��0��� ��qA��A�� + ��LO��A5��L5��L���3Bl��$�L��ԷGLg��(�%�� �,�� � � $ � ��� � � ^\\overN�� ������ �\�o�v�e�r� � ��}�� ��0��� �� �� qA��ԸGԷG0 ��A0 ��A��B�� / ��L��L0 ��$�& . ��LO��A5��L5��L. ��Lj��(B2��/ ��$�(�K�� �� � � ���� ���� �?�H� �  � � �� �*�) �� �� ��0���Aj��ԸB��A. ��&��%��ߤ#���� � �� �� � �  �- ��8�� ��0���Aj��z��&�!�B��. ��A. ��$�(�8���� � �����������( �� �+�8 ���� ��0��� �� ��0��#�� �� qA��ԷG0 ��A0 ��A��B�� 1 ��L��L0 ��$�B2��1 ��%�&��ͷDG)�� *��Bn�� ��LO����L5��L��$� ��LO��A5��L5�� ��L ��Lj�� . ��LO��A5��L5��L. ��Lj��(��� �� � �� ���� �=�F�� �*�)�<���  ��� �� �( � � � � �K�c��� � �  � � -�� � �  � � � B��5�� ��0��� qA�� ��LO��A5��L5��ԷGLj��(�ª�� ��� � �  �  � B���� ��0���Aj��ԸB��%����"�� � �� �� �� B����� ��A ��z��Aj��!�(�ϫ��&���� �� � ��+ � � �� ��0��� �� ��0��#�� ����'��0�� � �qA��A��A��ԷGr���AJ���ԸGA��Ay��A��B������$� 3 ��C��� 3 ��L��L����4 ��Cz�� 4 ��L��Lz���5 ��C�� 5 ��L��L���6 ��j���B_�����$�MGB_�����$� 빭 ��!�/�� GB��$��s GB��$��I 6 ��L��L��8�����!�/A��B��$�( V��LO��A5��L5��L��Lj��(B2��$�(��� �<� � ��  ��  �� � �?��������� "�� (-��"�� -���� "�� (-�� �� � � ���� � � ���� ��� �`�� � ��� 02��� ��� ��N�� ����� �  � � �� �*�) ��� ��0��� �� ��0��Aj��Ըb��&�A��A���2Bn��&��A��A���B��$��B_����3$�R'��B��$�A��~3���'A��Br��$�B��A��G$�(�p���� � ��$�  ��  �  �� �� � � �� � �� �� � ��  ����& � ��7� @��\s+��M������ �,��������� � � � � ���� ( ) / / _ _ �0�0 � ��� �� ��Aj��#��͵ �� � � ��?�� ��0��� qA�� 7 ��LO��A5��L5��ԷGLV��ԸGLW��(�"�� ��� � � $ �  � � � ���� ��0���AV��ԸB��%������ � �� �� �� ��� �� ��AW��#�� �� �� C� ��0��� ��N�3Bl��$� ӎLH�����L��(3B���$�Ǘ��Ӟ��!�/ ǸGǹGLH���ǺGL����A����!�/(�r���>� � ��� ��� �� �Z� � ��� ���$�3�h�� �  �  � �� �� ���$ � �=�t��8^[-+]? *(\d+(\.\d*)?|\.\d+)$������� � ��������������+�+�-�-� ���������� �  H�������������0�9�  "��� .������������0�9� ���.�����������0�9�  � T([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})������� �  ��������������+�+�-�-� ���������� �  A�������������0�9� ���.������������0�9� ���.�����������0�9� ���������� � �������������a�z�  � � �� ��0�� ��� ��0��#�� ����'��0�� ��� �� � qA�� LH�����L�� �LH�����L�� LH�����L��շGj���շGr���AJ���B_�����$�j���GB_�����$�빬qGB��$�� GB��$���� G�� 7�� '�� ��G��!�/gԷG0 ��A0 �� ì4 Be��3$�B��B����$�$�A��B�� : ��L�� L0 ��$�8 9 ��LO��A5��L5��L��L��L��L�� L��(B2��: ��$�(�ڻ�� ����� ��� ���  (�� � ��� � ���� � � ���� � ��� � �� �� �� �� �� �� ��� ���"�7���� � ���������%�.� ����B ���� 0�U�^� � . � ���� - �*�)?^.*[\\/]l��/������ ����������� �/�/�\�\� � ���� ��0��� �� ��0��#��OPZA��˷A��AH���A��ǟA��AH��� A�� ȞL��ɷ C��ȷ ȍCi��A��A��!�C��C��(����� ���  ��# ���&��  � �# � ���� � �� # �� �� # �� ���� �� � ��%�,����"�� " ���� ��0��� �� ��0��OPA ����&��!�B����A��$�A��̷A��AH��� A��ȟB����ɍ$�B����ɞ$�A��AH���A��B����$�B����A��$�(����� �� ���/�8 �� �)�4�� ���  ��# ���& �� ��+�< �� ��+�< � ��� � �� �� ��)�6�� �� �)�4 B���� ��0��� �� ��0��#��qA��A��ԷG��A��Ay��j���ȸG��AB���A����r:A��B������Ȟ����AB���A����$�A5����JA��B������Ȟ��$�'"A��B������Ȟ��$� ��LO��A5��L5��AB���L��(��� �,� � � �� �� � � � �� # �� �$��8� � � �� ��  �� �$��]�# �� �$��]��� � �  �  B����� ��B��A��%����"�� � ��) B���� ��0���OA��A��!�(���&�� ���"���� �� ���K�� ��0��� �� ��qA��A��ԷG ? ��LO��A5��L5��BR��$�L��Lj��(�#�� �,� �� � �  �  � � � ���� ��0��� �� ��0��PA����3B��&��Aj��&�$�B����&�&�$�B����&�Aj��&�$�B����&�&��$�B��A��&�&�$�B��h��&�$�A��A��A��C��A��A��A��Ci��A��B_��$�B����&�&�$�B������&�&�%������ �� � � ���6 ���-�6 �� � ��'�D�� ���!�. � � �9�D ���(�� � �� � ��( �  � ��  � � ���� ���1�8 ����9 ��q�� ��0��� ��A ����Aj��&�!�A����2A��������B������$�B������$�(�V���� �� �� � ��3�P ���� ��� � �� �/�B�� ���)�8 B����� ��0��� �� ��0��#��qA��A��A5��B ����$�D ��E ����B/��$�B*��$�B ��$� C ��LO��A5��L5����L��Lj��(�W�� �,� � ���&�� �� � � � �%�,�� �� � ���� �  � �  B����� ����A��!�/����� ��� �+ ���j�� ��,A��A��A��A��A ��(A��A��A��(A��A��A��(A��A��A ��(A��(�I���� � � �� �� � � � �� � �� �� � �� �� �*�� ��S�� ��0��� qA�� G ��LO��A5��L5��ԷGL ��ԸGL��ԹGL��ԺGL ��(�2�� ��� � � $ �  � � � � � �, � ���� ��0��� ��ԸB��%��"���� � � ���� �� �� �� ��0���#������ � ��� � �  ��� ��0�� �� ��0��#�� �����'��0�� ������ ��?��� � � �PB��&��&�$� BM��$�WB��[�B��$��$� L=��8���Bo��B��$��A7��B��$��A9��A��$�L��ZB��[�B��$��$� L=��8���Bo��B��$��A8��B��$��A:��A��$�L��j'��j!��B��$��A;��A=��A��A=��A��A��A��[�B�� @��L:��L?�� ��LO��B��$��A;��L�� =��LO��A=��L=��[�LG�� ��LO��A��L�� =��LO��L=�� ��LO��A��L�� =��LO��A=��L=��[�LG�� ��LO��B��$��A;��L��&�L��$�Dj���A��[�B�� >��L:��L?�� ��LO��B��$��A;��L�� =��LO��A=��L=��[�LG�� ��LO��A��L�� =��LO��L=��&�L��$��j���A��[�B�� @��L:��L?�� =��LO��L=�� ��LO��A��L�� =��LO��A=��L=��[�LG�� ��LO��B��$��A;��L��&�L��$�(&� A[�:Ǘ6B��N��&�&��$� A��[�C�� B_�� $�B�������&� %����$ ���"��  ���,�� ���*�5�<� �� � �� �� �� �� ���*�5�<� �� � �� ���� �� #"�� �� � � � � � � " ��� ,�� �  �� � �  � ��� �  � � � #� �  � � �  � �� � �  ��"��"�� �" ��� &�� �  �� � �  � ��� �  � � � � ��"�� � " ��� ,�� � #� �  � � �  � �� � �  ��"������ (���� ���-�4� �� �� ����� �� ��= � �� ��0��� �� ��0��#�� ����'��0�� � �� �� � � �?� ��� ��,]PAO�� ��"A��A��Ag��I ��η I ��A��A��A��A��%AL���BH��A8���$�AL���j\������A8���Z��A8���\��0A8���BR��$���J��L��C8���^�B��A8��������������&�$�뷦jg��A�� ^�B�����$� ^�B�� ;��L:�� =��LO��L=��L<�� =��LO�� L=��L<��&�L��$�!��C8���A��B_�����$� C���Aj��T^�Aj��Է 븬# G^� GA��s���I^�B�����&� $�W&�� A8���+ Bn��^�B��A8��� GA5��$�$� ^�B�����&� $�^�A8���Z��A8���\��8A��-A��A��B��$��A5��A��^�"�(&A����C_��A��^�C>��(������ �� � � � �� ���� �� �� �  � ��*��  � �� � �$ ��  ��  � � � � �� ���� � � � � ���y��'�� ����� �=�D��� 6� � �#� � ��� �� �� � ,�������  � ��  � �� ��#�� ���%�4���  � �� � �  � �1� � �T���%�,�� ��� �� ��  ��  � &�� ��� ��$#� ��� � ���� 21{Gz? ���� ��0��� ��AL���H~��A8���A5��&�!�BH��A8���$�B�������$��Aj��~��^�Aj��!�d ��^�A8���BR��$�!�&�!�~������&�!�A��z��&�!� ^�&�(�����  ����  � ���B � ��* ���-�J � ���  � ���<��� �� � � � ���N�� ���  ����F ���� �!�* � ��� ��\�� ��0��� �� ��qA��A��븬G I ��LO��A5��L5��L��L��LL���L8���(�/�� �,��� �# �� �  � �"�� ��L�� ��0��� �� qA��ԷG I ��LO��A5��L5��L��L��LL���Lj��(�)�� �� �� � �  � �"�� � B���M�� ���0��qA��A�� I ��LO��A5��L5��L��L��LL���L8���(�!�� �,�� � �  � �"�� B���M�� ���0��qA��A�� I ��LO��A5��L5��L��L��LL���L8���(�!�� �,�� � �  � �"�� B��\�� ���0�� ��qA��A��븬G I ��LO��A5��L5��L��L��LL���L8���(�/�� �,��� �# �� �  � �"�� �  �� ��0��� �� ��0��#�� ����'��0��]AO�� ��"A��A��Ag��s ��η s ��Aj��뷦j���Aj��BF���$�B����$�HG5A��Be��3��$�Be��3���$�C��B�����&�$�B�����&�&��$�^�A��"�((������ �� � � � ��2 ��(��  � �'�� � ���  ���&�5�@��� ���� � ���!�,���!� � ���%�6 ���'�.�� � �)�0 ���0 �����A��ǘJ��� ��LO��A5��L5��L��((����� � ������ �  � ( \u22124�������� �" �  \u22174�������� �" � � �� ��0��� �� ��0��#�� ����'��Aj��B����$�˷̷j���GA��j���A ��j���AO�� ��%����N��  ��h~��\A��GA��븬AA��6A��Be���3��$�Be��3���$�C��̔3'BF��$�B]���$�A��!�&�A �� ��!�B������$�A ��~������&�!�A��A ��z��&�!�(B��&�$�(�Ʉ���� � ����D� ��� � � � � �� �� � � � ��� �� � ��� ��� � ���!�,���!� ,������ ���&� � ��� ���&�� �� �� �'�.���5�J�� �� ��  ���)�V�� ��� ���1�: �(�- \u22124�������� �" �  \u22174�������� �" � ���� 0��B ��%���݇ ��X�� ��0��� �� ��qA��A��ԷG s ��LO��A5��L5��Lj��u ��L��L��L��(�+�� �,� �� � � ( �  ��2�� D�" B���;�� ��A��B��Aj��Ը$�(B����&�Aj��Է$�(�6��"�� � � � ���< �� � �� �C B��� �� ��Aj��Է#��ύ��&�� � � B���5�� ��0��� �� qA��ԷG y ��LO��A5��L5��Lj��(��� �� �� � � �  B���� ��0��� �� ��0��Aj��B��$��B����$�B��$��A6��B�� B��L:�� =��LO��L=�� ��LO��ɛL�� =��LO��L=�� ��LO��L��&�L��$�B����y ��&�&�%��k��"�� � ��F �� �9�D ��. ��� 2� � #� �  (� � #� � � ���� ����A B��i�� ��0��� ��A ��~��A����!�&�!�B�������$�A ����Aj��&�!�B��G�����$�(�ȑ]��&�� �� �� �� ���)�` ���/�@�� �� �� � ���G�P�� ���+�< ��7�� ��0��� �� qA��ԷG { ��LO��A5��L5��Lj��(�ޓ�� �� �� � �  �  � ���� ��0���Aj��B��$��B��%�� ���� � ��5�<�� �� ���� ��0���Aj��A ����!�(�!���� � ������ ���3 ���5�� ��0��� �� qA��ԷG } ��LO��A5��L5��Lj��(��� �� �� � � �  ���� ��0��� ��B��&��Aj��B��$��&�$�ǷC��ǷC��A��.A��!A��GC��A��GC��B�� B��L:�� =��LO��L=��&�L��$�B����&�&�%��z���� � � ���R ��" �� " ��� �� ���" ��� �]�b�� ��� 2� � � �� ���+ ��[�� ��0��� �� ��Aj��A ����!�A ����&�!�B������$�B������$�(�S���� � ���&�� ���3�>�� ���3�<�� ���+�: ���)�8 ���5�� ��0��� �� qA��ԷG  ��LO��A5��L5��Lj��(��� �� �� � � �  ��W�� ��0��� ��B����&�Aj��B��$��&�$�B����&�&��$�B������&�&�%��@���� �� � ��'�d ���!�*�� ��� �= ��G�� ��0��� �� ��Aj��A ����!�A ����&�!�B������$�(�F���� � ���&�� ���3�>�� ���3�<�� ���)�8 B��K�� ��0��� �� �� qA��ԷG��AB���ԸG  ��LO��A5��L5��L��Lj��(�(�� �� � �� �� � � � � B��I�� ��0��� ��OAj��A��B�� <��L:��ȍL?�� =��LO��L=��&�L��%��9��"�� � �� � ��� ��� *�� � � � B��F�� ��0��� ��A ����Aj��&�!�A��AH���A��A��B����$�(�9��&�� �� �� � ��3�T � � �� ���-�4 B���+�� ��� qA�� ��LO��A5��L5��(�͢�� ��� � � B��r�� ��0�� ��� ��0��#�� qA��շGԷG��ԸG��  ��LO��A5��L5����AB���L<��AB���L��AB���L��(�>�� �� � � �" � ��� � �  �  ���  �  B��� ��0��� �� ��0��OPB���� ��&�&��$�A��A��A<�� A<��A��CT��A��CS��A��C@��C��ʞC��ʍC���A��C��(���"�� ����7�B � �� ��� � � ���� � ��" �� � �� �� � �� �� �� " �� ' �� ' �� � � ������? B���� ��0��� �� ��0��#�� ��OPA��A��A<�� A<��A�� B��$����A ��N��!�B��b��$�B����$�B����$�A ����&�!�ɷB����$�'B����$�B����ɍ$�B����$�(�ǧ��&�� � �� ��� � � ��� �  � ��� ���2��"�;�B�� ��)�6�� ��+�8�� �� ���3�<�� �� ��+�8�� ��+�8�� ��)�:�� ��-�: C��� ��0�� ��� ��0��#��ԸA��A��̷j���GA��Bg�� ��$�ʷ,8���A=���An��B\���GA��B��$�$�8GA��ʸG��A��GA��ʸs��A��IGB��țC��GB��țC��XB��%����&�� �� � �" ��� ����$ � �� � � ���)�N � � � �  � � � �' ����� �� ���� ��0���B��A��$�Aj��#������ � ��&�� � � ��]�� ��0��� �� ��0��qA��A��A��B/��$�  ��LO��A5��L5��Bg��$�L��Lj��(�0�� �R� � �%�,�� � �  �  ���� ��D�� ��0��� �� ��PB��A��$�Aj��A ����!�B����A��$�(�A���� � ��* � ���� ���/�6�� �� ��/�Z �� �� ��0�� ��� ��0��#�� ����'��0�� qA��̸շG շGx ��QAj��EAj��GA��( ��r�� ̸ ̷ԷG  ��LO��A5��L5��Lj��L��L��(�̲�� ���� � � �&���  � ��� � � ������ ���� �� � �  � �� ���� ��0��� �� ��0��B��&��Aj��&�$�A�� A��(A��/ǷC��A�� A��A��GC��A��/ǷC��A�� A��A��GC��B�� B��L:�� =��LO��L=��&�L��$�B����&�&�%������ � � ���6 � ��� � ��" ��� �� ����1�6 � �� " ��� �� ��� �/�4�� ��� 2� � � ���� ���+ ��Z�� ��0���A ����Aj��&�!�A��B������$�A��B������$�(�D���� �� �� � ��3�P�� �  ���+�: �  ���)�8 B���?�� ��0�� ��� ��0�� qA��շGԷG  ��LO��A5��L5��Lj��LY���(� �� �� � �� � �  � � B��� ��0��� �� ��0��#�� ����'��0�� � �� �� � � �?� ��� �� ��,PAj��B��$��A��B��$��A$��C��B��$�B��$��A6��A��Az��A��Az��B��$��A$��ʻA��A��ɞqA��A6��A5��B��$�A�� A��A�� A��A��A��A�� A��^�CJ��B�� B��L:�� =��LO��L=����&�LE�� ��LO��A�� L�� =��LO��L=�� ��LO��L��&�L��$� AY���j���B��A��$� AY��� � A�� A��B�� <��L:��L?�� =��LO�� L=��&�L��$�B��\��&�&�$�B���� ��&� &�%�B���� ��&� &�%��Һ��"�� � ��B �# �� ��  � ��$�� � �. �  � �  ���� � � � �!H ���"� � � - � ��� � � � ���� �� ��� 2� � �"� � �  �� � � (� � � �� � �� � ��< � ��"��  ��� *�� � � �� ���%�.�� ����=�N�� ����9333333? B��P�� ��0��� ��qAj��AY���A ����&�!�(A ����&�!�(�=��& �"���� �� �� ��=�P�� �� ��/ B���c�� ��0��� �� ��0��#��qA��A��A��B/��$�BR��뼟$� C ��LO��A5��L5��L��Lj��(�5�� �R� � �%�0 � ��!�(�� � �  � � B��)�� ��0��� ��A��GB��$�B��$�Aj��#��*��"�� � �������� � � B��� ��0��� �� ��0��#�� ��A��GB��$�Aj��A ����!� ����&�L �����&�L�����&�L�����&�L ��A��GB����G$�B����G$�(�s��&�� � ���" � ���� ���/�:��� �� �� ,�� ��� ���9�B ���;�D0012 C�� ��0�� ��� ��0��#��,Ag��j���AO��I ��4A��#A��A��A��A��A��((AO��s ��4A��#A��A��A��A��A��((AO��G��BM��Ag��$�^�((AO��+ ��A��A��^�((((����� � " �� �� �  � � �� �(��� ���� � ( � � �� ���� ���� � �!�.�  ����  ���� ������� B��� ��0��� �� ��0��#�� ����'��0�� � �� �� � � �?� ��� �� ���� �� �� ��"��0�� ��F��,P]#�qAg��A��A��B��$��  BM��$� QB��A��B��$��$�  *A�� B��$��A1�� A��A��QB��A��B��$��$�  *A�� B��$��A2�� A��A�� A��A�� A,�� "A��A{�� A.�� A-�� A��^��A=��vAg��LAg��AO��I ��7Ag��A8���(Ag��A8���Z��Ag��A8���\��^�^�A��j&��j��8���Bo�� A��A$��$�8���Bo�� A0��$� A6��A��A�� FA��A�� A$��A��   =��LO��L=�� L<��L��LG�� =��LO��L=��L<��L��&�^�B�� ;��L:��L��$��z8���Bo�� A/��A��A$��$� =��LO��L=��LG��L��&�^�B�� <��L:�� L?��L��$�~�j8���Bo�� A��A$��$�^�B�� <��L:��L?�� =��LO��L=��L��&�L��$�8�����!�/^�c����^�B��&�^�B����&�&�$�&�%����"�� � ��� �� �*� �� � �� ���$�� � � �'�6 � �#���� � �� � � �'�6 � �#� ��� � �� � �� � �� � �� �"���(� �� � � �� � �  � ��  � ������ ��� ('� �� ��+�>� ����� �. � ����� �� ##�� � � ���(� � ��� ��� 6(�k�|� �� ��5�H�� � � ��� ��� *�(�u�� �� ��+�>��� *�� � �� ���� ��� ��b��� ���������+�6�[������?������???������? B�� �� ��0��� �� ��0��#��'���� ��,Ag��@Ag��AO��+ ��+A��Ag��A��Ag��A��Ag��:Ag��AO��I ��Ag��AO��s ��Ag��C��Ag��&�A��Bn��A��$�A��Bn��A��$�����A��j$��A��j���Ag��+AO��I ��A��A��A��6<AO��s ��-A��$A��A�� A�� ����Ag��6AO��I ��%A��A��A�� A��6<AO��s ��-A��$A��A��A�� �����Ag��6AO��I ��%A��A��A�� A��6<AO��s ��-A��$A��A��A�� ����A ��!�(���&�� � � � ��  �� � �  � � �  � �� � �� " � ��2��  � �� � � ��� �" � � ��� �"�� ��  �  � �� � #�� �  � � �� �( � � �� � �� � #�� �  � � � *�� �(�  � �� � �� � #�� �  � � � *�� �(�  � �� ����� ��! B���%�� ��B��A��A5����A��&�%����"�� � � � � � = B���� ��0��� ��A ��~��A��A5��&�!�A����#}��B����$�XA����B�������$�4A����A����B�������$�(�z��&�� �� ��  � ��)�R �� �� � ���  ���5�F �� ���1�B ��  ��  ���/�B�� B����� ��B����%����"�� � � B��P�� ��0��� ��A �� ��A��A5��&�!���AO��GB����$�(�F��&�� �� ��  � � �!�)�Z � ����� �  ���5�< B����� ��B����%����"�� � � B��� ��0��� �� ��A��A5����A5����A �� ��&�!�d�3Bl��A��$�A ����&�!�9A��,��A ��~��&�!�A �� ��&�!�AO��GB����$�(���&�� � � �!�, � ���� ���� ���/�8�� � ��� �� �)�2 ���� �� �)�2�� �� �)�2� �  ���5�< [0-9]<�������� ��0�9� � B���� ��0��� ��Br��A��$�qA��GA ��A5����$B����$�A��Bn��$�(B��N��&�B��A��A5��$�&�%�Br��A��$�B��N��A��G&�&��%���A��E��!�/���" � �!�.�� � �  ���� � ��.�� �� � ���� �� � � � �+�4�e�t � �!�.�� �� � �C�J�� ���4 � �M B��p�� ��0���Br��A��$�%A �� ��A����!�&�!�:Br��A��$�A ��N��!�(��A��E��!�/(�b��&��  � �!�.�� ���� ���/�j � �!�.���� ���2�� ���4 � �M�X�� ����)���A ����&��!�B�������$�(�&�� �� �� �� �)�2�� ���)�8 B��u�� ��0���A ����A ����A ����Aj��&�!�A ����A ��&�!�&�!�&�!�B������$�(�l��&�� �� ���� �� � �� ��  � ��+�J� �� ��  ���+��1��� ���)�: ��o�� ��0���A ��XG B��G%�G B��G%� ��/A����B�� ��$�(B����$�((B��G%��c���� �  �� �& �+�4 �� �& �+�4���� �� �$�#�8 �$�#�B���� �$ �) B��D�� ��0��� �� ��qA��A��ԷG ��LO��A5��L5��Lj��L ��(� �� �,� �� � �  �  �� B��)�� ��0��� ��Aj��ǷB������&�%��-��"�� � � � �� �� ��� �5 B���� ��0���Aj��#����&�� � ��� � � B���3�� ��0��� qA��  ��LO��A5��L5��ԷGLj��(��� ��� � � " �  B���� ��0��� �� ��0��Aj��B����$�B��$��A6��B�� >��L:��A��L?�� ��LO��L�� =��LO��L=�� ��LO��ɛL�� =��LO��L=��&�L��$�B���� ��&�&�%��n��"�� � �� ��"�;�F ��. ��� & � � � #� � #� �  (� � � ���� ����C B��i�� ��0��� ��A ��~��A����!�&�!�B�������$�A ����Aj��&�!�B�������$�(�]��&�� �� �� �� ���)�` ���/�@�� �� �� � ���I�R�� ���5�F B���3�� ��0��� qA��  ��LO��A5��L5��ԷGLj��(��� ��� � �  �  B�b�� ��0��� �� ��Aj��B��$��A5���A��ȟA��ȞB�� <��L:��L?�� =��LO��L=��&�L��%��E��"�� � �� �� � � ��� ��� *�� � � �������? B���$�� ��A ����Aj��&� ��&�!�(� ��&���� �� � ���O B��� �� ��0����!�/� ���� ��� B� ��� ��0��� �� ��0��#��&��B��A��B��$��$�ͷLG)�� *��Bn��B����A5������&�$�$�B������&�B^���B��$�$�B��$�%��ɀ��"�� ��� � � �'�< ��� �� �( � ��* � ��e� �c��� ���� ����6 � ��&� B��8�� ��0��� ��A��!�A �� ��&�!�B������$�(�8��&�� �� � ���0�� ���/�8�� ���5�P ���'��Aj��Be���3A������%�� � �� � ��9 4������� � � � B��d ��0���� +f��$��CZ���C��C��C��CZ���C��8���M��!�C�� L"�� L)��C��)�X� � �� �� "� ���� "� ���� "� ���� "� �� "� ��"� ����� ��&� ��� � B���  ��0����A��sI)� � � � B��� � ���0�� �� ��0����AZ���A��AW�����!�!�(A��B���$� AY���ȭ)��GG��Gȸ!�!�!�/ɽGɺGɹG����A��GhBg��W��A��AW���$�*A��CW���A��B���� ��$�A��CW���B ��%��A��AW���!�!�(��� � �� ��� ������ ��� ���>�� � �� � ��� ��� ���4 ��� ��� ���Q��� � � � � � �� �� �� � �� � ��� � ��� �� �� ��=�� ���1� � ���� ��� � ��;� B��N ��0���� +f��$��  C ��C ��C ��C ��C ��&��C ��)�G� ����� ���� "� ���� "� ���� "� ��"� ��"� �� B�������A ��Bn�� $�)� � �� � B����^ ���0����A ��뷬  ��!�/A ��Ba��$��~/Br��$� G A ��șA ��sGI)�N� ���� ��� ��� � �� �� ���& �� ��� �� � B�������A ��뷦 B ��$��)��� � ��� B���% ����A ��Br��$�A ��Br��$�(�!���� ����&� ��� B���% ����A ��Br��$� A ��G(A ��G(�"���� ����$� �� � B��� ��0�� �� ���0����BA ��A ��Gә�A ��뷦A ��A ��븟GsI4A ��A ��븟GBr��$�sA ��GI A ��ә)A ��sI)����� � ����� ��;�B� ��#� �� ����� � �� ��� ���& � �� � ��� �� � C���@�� ���B ��$��B ��A��$�ǷC]��ǷC^�� &�L��LT��(� ,���� � �� � ��, ��' ��2��  C���'�� ���B ��$��B� ��$� &�L��LT��(� ���� � �� �����  C����� ���B ��$� ǷGL��LT��(� ���� ����� � � C����� ���B ��$� ǸGL��LT��(� ���� ����� � � C���Z�� ���0��B ��$�B ��$��B ��$��ǷG븬$ǷGGA��A�� ǸGL��LT��( ǹGL��LT��(�=���� ��� � �� � �� � � � � �(� � C���9�� ���B ��$�A5���� ǷGL��LT��( ǸGL��LT��(�)���� ����� ��� �(� � C���� ���0�� �� ��B ��$��A��G��B ��$���A��E��B ��$��iA����XB ��$��A��G!��A��B��$�/A���� ��!�/A��B��$� ^A��Gȧ��Ȟ��A��!�/B ��$��A��GȤțʞB ��$����ɞ ��(����� �  �� �  �� �  �� �  � � �  � ���$ �� �� ��� �D � ���& � � �� ��� � �G�T�� ���    � �� � � �� ��0�� �� ���0��#�� ����'��B ��$��A��븭 ��!�/ǷGA��B ��$� ԗ��Ȟ����!�/ɗ ՗��Ȟ��Ȟ��!�/B ��$��A��븬j���ǷGA����j���B ��$��A����)A����A��B ��$��B���3$���!�/8��B ��$��A��Ak��BD��� L��LT��$�(����� �� ��� ��� �x�� � ������ ��� �8 �m���� ���$�$�[���  �� �( �� ��� � $�� ���  � $� � �0�� ���@�K�R��� ���� �� ���/�8^\s*[0-9]+\s*$�������� �,���������� � � � � ���� ( ) / / _ _ �0�0 ����������0�9� ,���������� � � � � ���� ( ) / / _ _ �0�0  � ��� ��Ӹ#��  � ��� ��ӷ#��  � ��� ��ӷ#��  � ��9�� ���B ��$�G8F��BS��B ��$��BF���$�B]���$�$�(�3���� ������� ����� � �=�R ����0��A��(� ��9�� ���B ��$�G8F��Bv��B ��$��BF���$�B]���$�$�(�3���� ������� ����� � �A�V ����0��A��(� ��D�� ���0��iB ��$��A��8F��BS��Ak��BC���$�GA��GA��G$�(�6���� �  � ���� ����  �  � �Y�b C��q�� ���0��ic ��B ��$��A��ߩGOBR��$� ��1A��%BH������&�A��GA+��$�X ��(�?K���� � �(� ���   � ��� � � �� � � �A�T� C�� �� ���B ��$��A��ߩg ��(c��(�C���� �� ��� � C��)�� ���B ��$��A��ߩ��g ��(c��(�C���� �� ��� ���� C�� �� ���B ��$��A��ߩ��(e��(�D���� �� ��� � ���&��Ak��BC���s��$� ��!�/��(�K!�� ���� �� ��� �0�� ffffff? ����@�(� �  ��0��� �@ �@0��#�@ �@��'��0���B ��$��A��B ��$��A��B ��$��A��B ��$��A��Ak��BC���#��$�Ak��BC���&��$�Ak��B ��$���M��Ak��BD���#��$�Ak��BD���&��$�B ��$��A��B ��&��RRR$�Ak��B ��$�� B ��$��L��LT��(����� �� �� �� �� ���� ���� �� �� �  ������ � ��� ���"�� �� ��� � �5�>�� �� �� $ �� �@�#   �(�և ������� ���#� � � � �1Ak��BD���#��$�Ak��BD���&��$�^�^�-)B ��$��A��#��B ��$�� ^�L��LT��(�هV�� ����� � ��� ���� # ��� �  ��  � �� �� B��u ��0�� ���� +f��$��C��C��CY��Ck��C7���C5��C��ǷC��B ��$�Ak��!�Ck��C5��&��C7���)�ğx�� ���� "� ���� "� �� �� "� ���� "� �� �� "� �� �� "� ��"� ��"� � � �� ���� ��(� �� "� �� B�� ����A��!�CY��)��� �� �� � � B���  ����C5��)� �� �� B�������Ak��B ��$��)�� � B�������Ak��B ��$��)�� � B�������Ak��B ��$��)�Ǣ� � B�����8��A7���뷬B ��AY��B ��$��$�A7���A7���븟G(�/��� � �#� �� � �)�8� � � � � B�������B ��$��A7���Ba��%���ң��� � � � B��� ����A7���Bn��$�)��� � � � B��� ����A7���Bn��&��R'��)� �� � �  B�� ��0��� �� ����hB ��$��B ��$��A����(B ��$��$qz{���A��=zG���A[��=B ����&�$�A3qz{���A��=z( ����AZ��=zG���A[��= B ��$��B ����A\��!�$�B ��$�B=��%��ˤ|���� � � ������ � � �� Z� ���,��� Z� � ��� ���� ���>� ��� � � B�����, �����B ��$��A����A7���Ba��$��)����� � �  ��� � �  B�� ��0��� �� ��0��#�� ����&��뷦 B ��$��B ��$��ͷB ��$��Bn��$�A����UA�� ��?��!�/A����% �� G ��G��!�/HE4G��(A��GBK��$�k5k/A����*븟GA�� ��Ba��$��B<��$��B ��$�� L��LZ��L[��(���� �  �� � �� � � �� �  � � � ��� ��� �� �����0 �� �� ���t � ����#� � � � #� � ������(#�� �� ���  � �  � ��� B�� ��0�� ��� ��0��#�� ����GӸ !��!�/ԷG˷(B ��$��GA�� "��!�/&��ηӤ)Bn��B ��G$�A��$�(�ګy�  � �� ��� ��� �  ��� � �  � � �� ���`�k�c���� � � � � �#�,�?� �\�� B��/ ����B��ӞC��A��A��A�� #��!�/)�$�� � '� �� ���� ��� B� ��0��� �� ��0��#�� ������B ��$��A��A]�� B ��$� FA��>,'ȷG!��B ��$�$��Ȟ!�/B ��$�(B ��$�A��B ��AT��A ��$�AT��j���BR��$��븟j���GA����j���%��!�/GA����BK��$�G�3Bl��A��$�$BK��&�A��GR'��&��!�/ZB ��$�(�ү��� � �  � �� � ���" �  � � � �� ����� ���>�I�P��� ���� ���$�� �� � � �/�H �  � �� �� �� �� ��� ���\�g�n -�� ���&�� � � �� � � �� ���<�G����� ��� ^[1-9]$@�������� ��1�9� � B�������B� ��$��B ��%��� ��� � � B�����8 �����B� ��$��A7���Ba��$��A^�� ��C��(�(��� � �� � � � �� �  �� �  B��( ����Ak��Be���$�B ��!�&�$�((�,���� ����� ���� ��4�� B���z ��0��� �� ����&��A7���B ��$�A7���ȦIB� ��$�A7���Ba��$��A^��ɸC]��ɸC^��Bn��$�B ��$�(�r��� � � � ���� ���� � �� ���$�� � � � �  ��' ��2 � � ���� � �!�2 B��' ��0�����B ��$�BF���$�B]���$�(�&��� � ����� ���� � B���� ��A��(� B�  ��0��� �� ��0��#�� ����'��0���� Ak��BC���$�(븬 AY��A��Gȿ )ǘ��� ɘJ���j���Bg����$�-Be���3$�Bg����ʸ$� A��!�&��B ��$��A����Bn��$�B ��$��B ��$�� L��LT��((���� � ���� � �� ��� � � � � ���� ��� ����� ��  ��� �� �� ��$�� ��,���� � ��4� � ��� � �� � �� ��-����##:������� �#�#� � B��T ����iAk��Be���$�@Br��$�2A��Br��$�A��Br��$� Br��$�(�@���� ���� ���& � ���& � ���& �� B��O ��0�����Ak��BC���$�!ǘJ���-ǘ���!A��(Br��$� GA[��(�7��� � ������ � ��� "�  � ���( Q^�[� b|, c de fghij]�^��(������ ��bj |,|, � 01234567890123456789 B��_ ��0���� +f��$��C5��C��C��CB��C����C5��A5��!�C��C��ǷCB��)�`� � �� �� "� ���� "� ���� "� ���� "� ���� "� �� � � ���� � ��,� ��"� �� B��^ ��0����B,��$��A��ӭ2'��Ӟ(��B,��$��A��G��B,��$��!�/ B+��$��)�с>� �� ���� ����� �� �� �u�� B����� ��C��)�� �� B�����+��A��A��B ��$��C��A��(� ��� �� � ��� ��&� B��� ����C5��A��B ��$�)��� �� "� ��� B����� �����A��A��A��B ��$��A��As��A��Ak��BD�������$�mE���B/��$�B*����$�A��A��A��B ��$��pn ���(n���/A��B ��$��o�n� �� � �� � �� $� ������:��� � � �!�(��� �� �� �� � �� �� � B��` ��0��� ����A��B+��$��A��B �� ��!�$�A��B ��$�B/��$�B*�� ��$�C��(�]��� � �� � � ����� ��.� ������ � � �!�(��� �� �� ��" B�� ��0�� ��� ��0���� &��A5���� B ��$��B,��$��f��AB��Bg��A��$�- A��ԬA��GA��GA" ��0B3��$�AO����tBn��$�dA5���� B?��$�B0��%��� ��� � �� � � �� � � � � ��&# �# � � � � �� � ��� ���� � � ���� �� � ���"� �"�! B� � ��0��� �� ��0��#�� ����'����˷8GAO��" ��$Ƕ)��GA��!�/GA��̔Ƕj���j���BR��$�BR��Ǹ$�븬GAO��x ��G x ��LO��A5��L5��Lj��븬GAO��x �� G! x ��LO��A5��L5��Lj��* ��B5��G&�&��$�B5��&�&��$�&�((�׊����  � ��� �� ���H �]�l ��� ("�� � �� � ������ � � � 2���#� � � � 7�� ���� � �  �3�<� �  �)�2��� B��h ��0��� �� ��0����B,��$��A��B+��$��B ��$��B>��$�AO����ɗ*��ȞG��!�/(�܎_��� � �  � � � � � �� �� � ���(�� ��  ���� ���2��I�P�� B��� ��0��� �� ��0����&��˷,Bn�� ��LO����L5��GL��$� ��LO��A5��L5��Lj�� ��LO��A5��L5��A��Ag��L��&�Lj��(�ŐT����  � � � � �  �O� �f�� � � � � � � � � � � �� � �� B� � ��0��� �� ��0��#�� ����'��0�� � �� ��� B>�� ��$�AO���� A5����( B ��$�� B,��$��A�� ��A�� ��j���/AO��I ��!A�� ��C��ǷC��>/AO��s ��!A��A�� ��C�� +��!�/ B+��$��OA��,��# ,��!�/ B1��-��$�A��$��# .��!�/ B1��/��$�A��G��j��� ,��!�/ ��LO�� A5��L5��,��L��&� B+��$�� B,��$��A��G��Bn��$� B+��$�� B,��$��A��,��Bn�� B1��-��$�$� x ��LO�� A5��L5��Lj��A��Gj���Bl��A��$�&��Bn��A��G!�$� B+��$�� B,��$��A�� GBl�� $�"B_�� G!�$� B+��$�� B.��$�  x ��LO����L5�� Lj�� x ��LO����L5�� Lj��/+  ��LO�� A5��L5��Lg��L��L��((���� � ���#�*�� � ������� � �� � �  ��  ��  �� �� �� ��' ��&�  �� � ( �� ��"�� ���Z�e�l� �  ���� ���*�5�<� �&�%�N ���� ���&�1�8� �&�%�J �� �� ���*�5�<�� � � � � � (��� � � ��� � � �� � � ��� � � �&�%��Z� � � � �  � �� � � ���� �� �� �2� � �� � ��  � � � �� ��� ���.� � �� � ���� � � 7� � � � � ��� � � � � � ( B�� ��0�� ��� ��0��#�� ����B,��$��A��Gɗ(B+��$��5 ��,A ��#0��Ȟ1�� 2��ԞÞ!�/A5����AY��3��Ȟ4��!�/A5���� AZ��3��Ȟ5��!�/qA��A��B6��$�B5��%��ќ� �� � �  � ��� � � �� �$�� ���"�,���}�� �� ��� ���.�"�_�f� �� �"�� ���.�"�_�f �&� � �!�(��� �  �) B��F ��0�� �� ��0��#��� ���� L��L��L��[�L��GAV�� BV��%�6��Ӟ!�/�9��� ����&�  ��� � ���� ���6�A B�� ��0�� ��� ��0��#�� ����'����AT��A~��Ƿ &��L��&��L��(&��&��ͷǤj���A\�� A\��GA~��A[��AO�� ��ʸɷG [��B7��7��ӞG��$�Bn��$� Bn��$� 8��!�/O L��L��(�ޡ� �� � � ��� � �� ��� �  � �� �  �� �  � � �� �# ����� � �"� ��Q�X � � �� � � ��� ��� ���� � � B�� ��0�� �� ���0��#������ B:��%��� B;��%�0 �� B<��%��� �� B=��%���BB=����$�+ C ��LO��A5��L5��&�Lj����L��((r���9B8��r���$�" r���LO����L5��A��LJ���(([��7 9��!�/B>��$�:��ӞB,��$��!�/(��  B=��%�;��ӞB,��$��!�/��������� � ��.���� ���,� ��� ���*� ���� �& �)�8��� � �& �)�:�� � � �  � � � �� �� � �"� �-�4�� � � � �  � ���� ��� �b�� � ��� � �� ���*� �C�V��� � ��� ��� �&�%�<�� ���2� �K B�����%��B,��$��A���� B+��$��)��� � ��� � B���Z ��0�� ��� ��0����A��B ��$�(B,��$��A����A��B+��$��B+��$��C��(�M� �� � ����  � ��� ��� � � �� � � � ��� �  �� " B�� ��0�� ��� ��0��#����B,��$��B,��$��A����,Bl��A��$�A��B+��$��ì"<��Ԟ=��A��G��!�/B=��%��d� ��� � �� � � �� � ��  � � � ��� ���� � ��G�N�� � � B� ��0��� �� ����B8����$�(�3B���A��$�ȗ>��A��G��!�/ȷG3Bl��$� ��ɞ ��LO��A5��L5��L��(�îp��� � �"��1�8 � ��� �� �R� � ��� ���& � ��G�N�� �� �"� � ��� � &� � J^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$������� �  a��� %���#� �������������0�9�A�F� 2����������������#�  �������������0�9�A�F� �������������A�Z�  � ^[0-9a-f]{6}$l�/������ � �������������0�9�A�F�  � B� ��0��� �� ��0����NA��B ��$��ӗ4A��B ��$��A����B9���3��$�B8����$�Ǘ(ӗA��뷬?��C��3B���A��$�ɗ��A��G��!�/ ɸGɹGLH���ɺGL����A��G��!�/ ��LO��A5��L5��LB���L��(����� �� � ����� � �d��� �"��/�6��� # � �# �� � �� �Z� � ��� ���$ � ��E�L�� �  �  � �� �� ���$ � ��E�L�� � � � � �^^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$������� � ��������������+�+�-�-� ���������� � h��� )��� ����������������0�9� 5�������������0�9� .������������0�9� ���.������������0�9� ���������� � ��������������a�z� ���������� �  � T([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})������� �  ��������������+�+�-�-� ���������� �  A�������������0�9� ���.������������0�9� ���.�����������0�9� ���������� � �������������a�z�  � B�� ��0��� ����A��AY��B ��"�� $�A��AY��B ��)�� $�B8��0 ��$�A��AY��B ��"��$�A��AY��B ��)�� $�(A��Be���3��$� 0 ��LO��A5��L5��L0 ��(��� �� ����&� �� ����&�� � �"� �-�4� �� ����&� �� ����& � ��� �� � ��&�5�B�� � � � � \\([#$%&~_^{}])b�*������ �\� �#�&�^�_�{�{�}�~�  � B��� ��0�� ��� ��0��#����A��B ��$�(A5�� B ��$�A��B ��$��B/����$�B*����$�A��B ��$�� x ��LO��A5��L5��A\��L\��Lj�� B ��$�(�� �� � ����  � ��� �� � � � ���� �� �� � � �%�4� �� �� �� �� � � � �  � (��� ��� B�� ��0�� ��� ��0��#�� ������B,��$��A���� @��j���B+��$���� ��A��A��B ��$��B/��$�B,��$��B*��$�A��B ��$�� x ��LO��A5��L5��B=��$�L\��Lj��@��L��lB4��$� B@��$��LȷG!��ABr��$�4A��Ab��$��Ȟ!�/B2��$�B+��$��(�ܹ� �� � �  ��� �� � � �� ����� �� �� � � �%�0� � � �� �� �� � � � �  � �� ��� *� � � ��(� �  � � � ���$� ���� ���>�M�T� �*�)�0� � �� B� � ��0��� �� ��0��븟˷ǤjC��GA����j���ȸGA����j���ȸǤXȹGA����FBK��Ⱥ ��LO����L5��B=��ȹG$�L\����L��$�ǹDBK��ȹ ��LO����L5��B=��ȸG$�L\����L��$�ǸG�� ��SȸGA��ʬCBK��ȹ ��LO����L5��B=��ȸG$�L\��ʞL��$�Ǹ)����� �� � �� � � �� ��   �� � � � �  � ��*� �  � � � �  � ��*� � ��� �� �# � � � �  � ��* �� � B���  ���0�� �� ��0��#�� ����'��0� � � �� �� ���ig0 B,��$��A���3Bl��$�j��� B+��$��BR��$�B��$���� BR��$�빤B��$�BR��$� A��!�/BR��$�  ��LO����L5��Lj��L��(Br��ȷG$�k A5��GȷGGY A��Ay��7 A5����& A��B��B��C��ȷGD��$�ȷGGBR��$�B���$�6B��AY���$�>�� �� ���� A5��GGj��� A��Ay��I A5����8^�Bg��$�& A��B��B��E��ȷGD��$� A5��GGA+��^�B=��$�^�Br��$�4  ��LO�� A5��L5�� L��L\��L��$ LO�� A5��L5��L\��L���B��$��j��� A��Ay��j���^�B��$�8 A5����c A��B��B��F��ȷGD��$�< A��B��G��H��ȷGE��I��B��$���$� ��LO����L5��^�B=��$�L\��L��( B+��$��j��� Gj���G G ^� GJ�� G��!�/^� G A5��G ^� GA�� $K�� L�� A5��M��!�/ G��LO�� A5��L5��^�B=��$�L\�� L��L��L��Lg�� <(��� � �  � �&� � �� � �� � � � �� �� � � � �# �� � � � ��� ��� �ń�� � ��� � � �( � �!�. � � � � �� � �� � �� �0�H �,�� � � � ��� � � �# � ��*����� ���  � � (� �� � �� ���#� �� �0�F �,���� � � �� � ����$�� � � � � � �� � �� � �-� ���� � ��  ��� �(� �� � �� �0�6 �,��� �� � �F �� ���� ��� � � � � �� ��� � � '����� #�� ���(��?�F�� � � � �� ����&� � ��m�t� � � � � � ����� ��� ^\\verb[^a-zA-Z]l��/������ �\�v�e�r�b����@�[�`�{� � C�� ��0�� ��� ��ӘJ��� 8���8���N��!�/!�A��Ak��A ��s��B-��$��A��Ak��A ����A��Ak��A ����A��Ak��BC���s��$�OAT�� O��!�/  ��LO����L5��Lj��B.��s��!�&�$�L ��&�(� ����� �� �� �����|�� �� ���� ������ � �� ����&�� ���� �����  ��� ��� �^� � � � ���� �� B�� C�� ��0�� �� ���CP��B ��$��B��$�)��� ��#�� � ��  �� C����� �Q��!�/� ���� ��� C�� ��0�� ���B ��$��(����� � �� �� C��  ��0�� ���!�#������ ��� ��� � C��b ��0�� �� ���]Ab��ߨ/B��R��&�!�&�$�B��S��B9���$��$�B����T��Ag��$�(�L��  � ��� �� ����� �3�L�� �� �-�F ��� �?�X C��& ��0�� ��� ��0�!�m���p(m ���p(/�3���� ��� ���� � ��� � � &�� � C��& ��0�� ��� ��0�!�m���p(m ���p(/�3���� ��� ���� � ��� � � &�� � C�����B ��$�G��#������ ����- C�����B ��$�G9��#������ ����- C���� ��0��� �� ��0��븟GA\��AZ��븟ɷFGA\��AZ��Ȧ��GA\��AZ��GA��GA��̓B`��B`��$�$�(�a����� � ��� � � �� # � �� � � ����   � � ��� C� �� ��0��� �� ��0��#�� ����'��0�� � �� �� �ӗ&��(��� ȷCU��Be��3��$�Be��3��$�Be��3y��$�׿ &��ӭ ʑA��GA!��GA!�����GjQ��A��B��GAV��$�j*��GAW�� A��j���A�� A�� GA��G6A�� A�� GA��HA�� A�� GA��$� qA�� A�� GA��G5A�� A�� GA��HA�� A�� GA��$� %X��Y�� A�� GA����&�/Ba�� $� ! A��뷦! A�� AZ�� A�� (ʷjk[��\��&�/����� �� �� �  ��"" �� ��& ��<�K�V ���'�6��� � ���� �� ���� ����� ����'�.'������� ������ ���g� ��� ��� ���g��� ��B�� � �����  �� ������� '�� �0\n4������� � � � 4[\u2212\u2013\u2014\u2010]L������� ��    "" � [\u2026]<������� ��& & � C���8�� ��0���58���Bq��$�Bn��G$��Bn��$�)�$0��� ����� � � � � �, � � ^$2�������� � � ^.2�������� � � ^.2�������� � � ^\s��<������ � � � � � ���� ( ) / / _ _ �0�0 � ^\s(?=[A-Z\\$])��Q������ � � � � � ���� ( ) / / _ _ �0�0����$�$�A�Z�\�\� � ^\s$��=������ � � � � � ���� ( ) / / _ _ �0�0 �  ^[a-z]>�������� ��a�z� � ^x6�������� �x� � ^x$8�������� �x� � ^i$8�������� �i� � ^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+�M����� � ����?�Z�a�z�{��\� �� �� �� �� �� �� ~�� b�� I�� 0�� �� �� �� �� �� �� �� z�� g�� W�� 8�� (�� �� �� ��� ��� ��� ��� ��� {��� \��� C��� *��� ���a�l�p�h�a� ���b�e�t�a����g�a�m�m�a����d�e�l�t�a����e�p�s�i�l�o�n� ���z�e�t�a� ���e�t�a����t�h�e�t�a� ���i�o�t�a����k�a�p�p�a����l�a�m�b�d�a����m�u����n�u����x�i����o�m�i�c�r�o�n����p�i� ���r�h�o����s�i�g�m�a� ���t�a�u����u�p�s�i�l�o�n� ���p�h�i� ���c�h�i� ���p�s�i����o�m�e�g�a����G�a�m�m�a����D�e�l�t�a����T�h�e�t�a����L�a�m�b�d�a����X�i����P�i����S�i�g�m�a����U�p�s�i�l�o�n� ���P�h�i� ���P�s�i����O�m�e�g�a� R��� B���,��������� � � � � ���� ( ) / / _ _ �0�0 ���{�}���� ����A�Z�a�z� �� ����?�Z�a�z�{��\� �� �� �� �� �� �� ~�� b�� I�� 0�� �� �� �� �� �� �� �� z�� g�� W�� 8�� (�� �� �� ��� ��� ��� ��� ��� {��� \��� C��� *��� ���a�l�p�h�a� ���b�e�t�a����g�a�m�m�a����d�e�l�t�a����e�p�s�i�l�o�n� ���z�e�t�a� ���e�t�a����t�h�e�t�a� ���i�o�t�a����k�a�p�p�a����l�a�m�b�d�a����m�u����n�u����x�i����o�m�i�c�r�o�n����p�i� ���r�h�o����s�i�g�m�a� ���t�a�u����u�p�s�i�l�o�n� ���p�h�i� ���c�h�i� ���p�s�i����o�m�e�g�a����G�a�m�m�a����D�e�l�t�a����T�h�e�t�a����L�a�m�b�d�a����X�i����P�i����S�i�g�m�a����U�p�s�i�l�o�n� ���P�h�i� ���P�s�i����O�m�e�g�a� R��� B���,��������� � � � � ���� ( ) / / _ _ �0�0 ���{�}���� ����A�Z�a�z� \ � ^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))������� �\� �� �� �� �� �� �� ~�� b�� I�� 0�� �� �� �� �� �� �� �� z�� g�� W�� 8�� (�� �� �� ��� ��� ��� ��� ��� {��� \��� C��� *��� ���a�l�p�h�a� ���b�e�t�a����g�a�m�m�a����d�e�l�t�a����e�p�s�i�l�o�n� ���z�e�t�a� ���e�t�a����t�h�e�t�a� ���i�o�t�a����k�a�p�p�a����l�a�m�b�d�a����m�u����n�u����x�i����o�m�i�c�r�o�n����p�i� ���r�h�o����s�i�g�m�a� ���t�a�u����u�p�s�i�l�o�n� ���p�h�i� ���c�h�i� ���p�s�i����o�m�e�g�a����G�a�m�m�a����D�e�l�t�a����T�h�e�t�a����L�a�m�b�d�a����X�i����P�i����S�i�g�m�a����U�p�s�i�l�o�n� ���P�h�i� ���P�s�i����O�m�e�g�a� R��� B���,��������� � � � � ���� ( ) / / _ _ �0�0 ���{�}���� ����A�Z�a�z� � 8^(?:([a-z])(?:$|[^a-zA-Z]))$|��7������ � �a�z�  ���������@�[�`�{� � @^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$��=������ �$� �a�z�  ���������@�[�`�{�$� � ^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$ ��1����� � 6����������������$� ��������������$� |���������������$� \� �� �� �� �� �� �� z�� g�� W�� 8�� (�� �� �� ��� ��� ��� ��� ��� {��� \��� C��� *��� ���a�l�p�h�a� ���b�e�t�a����g�a�m�m�a����d�e�l�t�a����e�p�s�i�l�o�n� ���z�e�t�a� ���e�t�a����t�h�e�t�a� ���i�o�t�a����k�a�p�p�a����l�a�m�b�d�a����m�u����n�u����x�i����o�m�i�c�r�o�n����p�i� ���r�h�o����s�i�g�m�a� ���t�a�u����u�p�s�i�l�o�n� ���p�h�i� ���c�h�i� ���p�s�i����o�m�e�g�a�,���������� � � � � ���� ( ) / / _ _ �0�0 �������������$� R��� B���,��������� � � � � ���� ( ) / / _ _ �0�0 ���{�}���� ����A�Z�a�z�  � ^[0-9]+b��*������ �����������0�9� � f^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))������� � ��������������+�+�-�-� I�������������0�9� &����,�,�.�.�����������0�9� 5��������������0�9� .�����������0�9� � 8^[+\-]?[0-9]+(?:[.,][0-9]+)?�r������ � ��������������+�+�-�-� ����������0�9� &����,�,�.�.�����������0�9�  � C��<�� ���B���3$�)ǷG$ BK��$�L��B]��ǷG$�LZ��((�-0���� � � ��� � �� �( � �� *^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))? �-����� �  ���  8��� +��� ��� ���+�-� ���+�/�-����+����-�F���\�p�m�,������������� � � � � ���� ( ) / / _ _ �0�0   ���  I�������������0�9� &����,�,�.�.�����������0�9� 5��������������0�9� .�����������0�9�   ��� (� I�������������0�9� &����,�,�.�.�����������0�9� 5��������������0�9� .�����������0�9� )�   [��  ����E�E�e�e����,���������� � � � � ���� ( ) / / _ _ �0�0  1��� ��� ���*����x����\�t�i�m�e�s����� ,���������� � � � � ���� ( ) / / _ _ �0�0 1�0�^�   ;��� ��������������+�+�-�-� ����������0�9� <���{� ��������������+�+�-�-� ����������0�9� }�  � C��<�� ���B���3$�)ǷG$ BK��$�L��B]��ǷG$�LZ��((�00���� � � ��� � �� �( � �� *^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})������ �  ���  8��� +��� ��� ���+�-� ���+�/�-����+����-�F���\�p�m�,������������� � � � � ���� ( ) / / _ _ �0�0   I�������������0�9� &����,�,�.�.�����������0�9� <��������������0�9� ���.�����������0�9�  ^�  ;��� ��������������+�+�-�-� ����������0�9� <���{� ��������������+�+�-�-� ����������0�9� }�  � C�f�� ���0��A��B���3��$�AZ��B��3$�(B��3$� ȷGL��B]��ȷG$�LZ��((�2R���� ��$ �2��g�p �� � �6���� � � �V��� � � �� *,^\([a-z]{1,3}(?=[\),])��>������ �(��������������a�z�  ����)�)�,�,� � "^($|[\s,;\)\]\}])��_������ �  ���?���� � � � �)�)�,�,�;�;�]�]�}�}���� ( ) / / _ _ �0�0  � B^(?:\((?:\\ca\s?)?\$[amothc]\$\))������� �(� H���\�c�a�,������������� � � � � ���� ( ) / / _ _ �0�0 $��a�a�c�c�h�h�m�m�o�o�t�t�$�)� � ,^_\{(\([a-z]{1,3}\))\}��=������ �_�{� (��������������a�z� )� }� � ^(?:\\\{|\[|\()p��1������ � ��� ���\�{����[����(� � ^(?:\)|\]|\\\})p��1������ � ��� ���)����]����\�}� � ^[,;]\s*��Y������ ��,�,�;�;�,���������� � � � � ���� ( ) / / _ _ �0�0 �  ^[,;]F�������� ��,�,�;�;� � ^[.]>�������� ��.�.� � 6^([.\u22C5\u00B7\u2022])\s*��e������ � �.�.���" " "" ,���������� � � � � ���� ( ) / / _ _ �0�0 � "^\.\.\.(?=$|[^.])z��6������ �.�.�.���� ��� ������-�/� � ^([*])\s*��Y������ � �*�*� ,���������� � � � � ���� ( ) / / _ _ �0�0 � C�����A��B��^�� ��%��5���� ��$ � �= C�����A��B��,������%��6���� ��$ ����?$^\^([0-9]+|[^\\_])��J������ �^�  �������������0�9� ������[�]�^�`�  � C�� -��A��B��,���3 ���� ��÷% ��7$���� ��$ ��"� �� �}^\\[a-zA-Z]+\{v��4������ �\� ����������A�Z�a�z� {� � C����A��B��,���3 ��%��8���� ��$ ��"��Y^\\[a-zA-Z]+\{v��4������ �\� ����������A�Z�a�z� {� � &^\^(\\[a-zA-Z]+)\s*��u������ �^� \� ����������A�Z�a�z� ,���������� � � � � ���� ( ) / / _ _ �0�0 � ^\^(-?\d+)��F������ �^� �������������-� ����������0�9�  � ^'6�������� �'� � C�����A��B��_�� ��%��9���� ��$ � �= C�����A��B��$������%��9���� ��$ ����?,^_([+\-]?[0-9]+|[^\\])��c������ �_�  ;��� ��������������+�+�-�-� ����������0�9�  ������[�]�  � C�� -��A��B��$���3 ���� ��÷% ��:$���� ��$ ��"� �� �}^\\[a-zA-Z]+\{v��4������ �\� ����������A�Z�a�z� {� � C����A��B��$���3 ��%��;���� ��$ ��"��Y^\\[a-zA-Z]+\{v��4������ �\� ����������A�Z�a�z� {� � $^_(\\[a-zA-Z]+)\s*��u������ �_� \� ����������A�Z�a�z� ,���������� � � � � ���� ( ) / / _ _ �0�0 � 8^(?:\^(?=_)|\_(?=\^)|[\^_]$)��E������ � '��� ���^����_�  ���_����^� ����^�_� �  ^\{\}<�������� �{�}� � C�����A��B���� ��%��<���� ��$ ���= C�����A��B���� ��%��=���� ��$ � �; C�����A��B������%��>���� ��$ ���= C�����A��B��`��a��%��>���� ��$ � �= C�����A��B������%��?���� ��$ � �; ^[=<>]>�������� ��<�>� � ^[#\u2261]F�������� ��#�#�a"a" � ^\+6�������� �+� � <^-(?=[\s_},;\]/]|$|\([a-z]+\))�������� �-�x��� S��� H���� � � � �,�,�/�/�;�;�]�]�_�_�}�}���� ( ) / / _ _ �0�0������(�����������a�z� )� � ^-(?=[0-9])P��!������ �-�����0�9� � H^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))�������� �-�j��� ����d�d�p�p�s�s����s�p� ���?���� � � � �)�)�,�,�;�;�]�]�}�}���� ( ) / / _ _ �0�0 � ^-6�������� �-� � 8^(?:\\pm|\$\\pm\$|\+-|\+\/-)��V������ � 7��� '��� ���\�p�m����$�\�p�m�$����+�-� ���+�/�-� � ~^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))�������� � ���+���� O��� 0��� ��� ����-�-�<�>����<�<����>�>����\�a�p�p�r�o�x����$�\�a�p�p�r�o�x�$�]��� ;��� 0��� � � � � ���� ( ) / / _ _ �0�0�������������������-� �0�9� � P^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])�������� � (��� ��� ���v� ���(�v�)����^� ���(�^�)�K��� ���?���� � � � �)�)�,�,�;�;�]�]�}�}���� ( ) / / _ _ �0�0 � C�����A��B��b�� ��%��B���� ��$ � �Gl^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])�������� � ��� p��� Z��� D��� 4��� $��� ���<�-�>� ���<�-�-�>����-�>����<�-� ���<�=�>�>� ���<�<�=�>� ���<�=�>�����!!!!'' � ^[CMT](?=\[)`��)������ ��C�C�M�M�T�T����[� � C�����A��B������%��C���� ��$ � �;(^(&|\\\\|\\hline)\s*�������� �  ��� ���&����\�\����\�h�l�i�n�e� ,���������� � � � � ���� ( ) / / _ _ �0�0 � ^(?:\\[,\ ;:])T��#������ �\�� � �,�,�:�;� � C�� )��A��B���3 ���� ��÷% ��D"���� ��$ �"� �� �{^\\[a-zA-Z]+\{v��4������ �\� ����������A�Z�a�z� {� � C����A��B���3 ��%��E���� ��$ �"��W^\\[a-zA-Z]+\{v��4������ �\� ����������A�Z�a�z� {� � 2^\\ca(?:\s+|(?![a-zA-Z]))��r������ �\�c�a� B���,��������� � � � � ���� ( ) / / _ _ �0�0 ��� ����A�Z�a�z� � :^(?:\\[a-zA-Z]+\s*|\\[_&{}%])�������� � b���\� ����������A�Z�a�z� ,���������� � � � � ���� ( ) / / _ _ �0�0 ���\��%�&�_�_�{�{�}�}� � f^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])�������� � 1����������������0�9� �d�d�f�h�p�p�s�s������������������0�9� s�p���� ���������@�[�`�{� � ^[\/~|]N�� ������ ��/�/�|�|�~�~� � C�� �'��A��B��c�� ���� ��% ��G���� ��$ � �� �c C�� �'��A��B��d�� ���� ��% ��H���� ��$ � �� �i C�� �'��A��B��e�� ���� ��% ��I���� ��$ � �� �k C�� �'��A��B��f��g���� ��% ��J���� ��$ � � � �q C�����A��B��h�� ��%��K���� ��$ � �I C�� �'��A��B��h�� ���� ��% ��K���� ��$ � �� �e C�� +��A��B����!���3�� ��% ��L ���� ��$ �� �� �s^(?=\{)B�������� ����{� � C�����A��B��i�� ��%��M���� ��$ � �CL^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$�������� � ��� 1����+�+�-�-�����������I�I�V�V�X�X� I���\�p�m�,���������� � � � � ���� ( ) / / _ _ �0�0 0�O���$�\�p�m�$�,���������� � � � � ���� ( ) / / _ _ �0�0 0� � T^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$��9����� � ��� ��� ��������������+�+�-�-� ,������������� � � � � ���� ( ) / / _ _ �0�0 ����������I�I�V�V�X�X� I���\�p�m�,���������� � � � � ���� ( ) / / _ _ �0�0 0�O���$�\�p�m�$�,���������� � � � � ���� ( ) / / _ _ �0�0 0� � ^[IVX]+r��2������ �����������I�I�V�V�X�X� � |^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$������� � ��������������+�+�-�-� 5��� �������������0�9�  ���$��a�z�$�����a�z�/�����������0�9� ��� ���$��a�z�$�����a�z� � C��� ���0��B���3$� ǷGL��B]��ǷG$�LZ��(A��B������$�4A��B��3$� ǷGL��B]��ǷG$�LZ��((�Oj����  � � ��� � � � �� *�� ��$ ���=�F�� �� � �� � � �� *^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s)) ������ � �� �� �� E�� ��� ]���(� ��������������+�+�-�-� ����������0�9� /�����������0�9� )�z��� ��������������+�+�-�-� 5��� �������������0�9�  ���$��a�z�$�����a�z�/�����������0�9� Z��� ��������������+�+�-�-� ����������0�9� �,�,�.�.�����������0�9� 9��� ��������������+�+�-�-� .�����������0�9� 6��� ��������������+�+�-�-� ����������0�9� S����a�z�E���,���������� � � � � ���� ( ) / / _ _ �0�0 �A�Z� n��� ��������������+�+�-�-� �a�z�E���,���������� � � � � ���� ( ) / / _ _ �0�0 �A�Z� 4���+�,��� � � � � ���� ( ) / / _ _ �0�0 � ^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$�!����� �$� �� ����������������(�  ��������������+�+�-�-� ?��������������0�9� ��������������a�z� �+�+�-�-������������0�9� �a�z� ?����+�+�-�-������������0�9� ��������������a�z� �������������)� ���+����-�$� � C��� ����B��%��S���� �� 6^(?:[A-Z][a-z]{0,2}|i)(?=,)��G������ � %����A�Z���������������a�z� ���i����,� � C��B�� ���B���3$�(B��3$� ǷGL��B]��ǷG$�LZ��((�T9�� � � �,��� �� � � ���� � � �� *^\([a-z]+\)$p��1������ �(�����������a�z� )� � ^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$�3����� � ��� ����a�z�������������� � �(�)�+�.�0�9� �a�z� 3������������� � �(�)�+�.�0�9� �a�z������������ � �(�)�+�.�0�9� }����a�z����������� � �(�)�+�.�0�9� 3����a�z����������� � �(�)�+�.�0�9� ��������������a�z�  � P^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])�������� � Q��� >��� .��� ��� ���p�H� ���p�O�H����p�C����p�K� ���i�P�r� ���i�B�u���� ���������@�[�`�{� � ^\s*(\/)\s*�������� �,���������� � � � � ���� ( ) / / _ _ �0�0 /� ,���������� � � � � ���� ( ) / / _ _ �0�0 � ^\s*(\/\/)\s*�������� �,���������� � � � � ���� ( ) / / _ _ �0�0 /�/� ,���������� � � � � ���� ( ) / / _ _ �0�0 � ^\s*[*.]\s*�������� �,���������� � � � � ���� ( ) / / _ _ �0�0 �*�*�.�.�,���������� � � � � ���� ( ) / / _ _ �0�0 � C�  ��� ��0�� �� ��0��#�� ����'��0��@ ������ ��?�������M+ ��Mr��B]��$�([�(B�� Aj��Ak��$�[�[�dB��B]��Aj��$�[�[�[�[�$�(A��&� [ �B]���$�L��AZ��LZ��( L��B]��Aj��$�LZ��(�W�<�� �� ����  � ��" ���� ��� �� ���&�� ��� �� �  � �;�Z(�� � �$ � ��,�_�f�� ��� �� � �� �� � ��� �� �� � � C���0 �� �����ԘJ���Bg��$�((B��$�ǷG((�W0������� ���� �� � � ���  C��q �� ���� ��� �� ��0�dB��$�B]��$�Ƿ Lk��Lj��(��� ��Ƿl��m��&�/�ԐǷ(�Xp�� �� ��� �� � �� ���"�� ��� �� ��������� �0� V����  C���� ��0��� �� ��A��A��Gn��o��Ӟ��&�/ǘ���A��A��H%�B��$�<ȹG ȸGȹG&�ȸGȸGȷG L��B]��ȷG$�LZ��((�]w���� ����� ��B� ����� ������ � � ��� ��   �   �� � �� *�� C������ ��AG��ԞCG��)�` ��  2� C������ ��Ar��ԞCr��)�` ��  2� C������ ��AK��ԞCK��)�` ��  2� C������ ��A?��ԞC?��)�a ��  2� C������ ��A��ԞC��)�a ��  2� C������ ��AB��ԞCB��)�a ��  2� C������ ��A��ԞC��)�a ��  � � C������ ��Ap��ԞCp��)�b�� ��  � � C������ ��0�� L��(�b �� �� � C������ ��0�� L��Ln��(�c �� �� �� C������ ��0�� L��ԷGLn��ԸGLq��(�c�� �� �� � C������ ��(�c���� C������ �� ��L��Ln��(�d ���� ��  C����� ��B`����%��d ����  � C��4�� ��0�����&�Ba��B`����$�$�Bn�� ��$�(�d(���� � �� �  � ��< � � � C����� ��B`����%��e ����  � C����� ��B`����%��e ����  � C������ ��0�� ��L��Lr��(�f �� �� ��  C������ �� s��L��ԷGL��(�f ���� ��  C��� �� ��B`��%��g ���� � C���� ��0��� ��&��B���3$�"Bn��B]��$�$�B]��$�B��3$�ȸsȸGBe��3$�IBn�� t��L��ȸGLn��ȹGLq��$�ȺG3ȺsȺGBe��3$�IBn�� ��L��ȺGLn��$�(�g����  � � �" � � �� �( �� ��� � � ���  �� ��$ � ��  � �?�J �  �� ��$ � ��  �7�D ^[+\-]F�������� ��+�+�-�-� � l^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$������� �  5��� �������������0�9�  ���$��a�z�$�����a�z� /� ����������0�9�   $���  ���$��a�z�$�����a�z�  � \$4������� �$� � \$4������� �$� � C����� ��B`����%��i ����  � C� �� �� ���0�� �� ��0��#�� ����'��0� � ~>G~2B_���#��$�GGCu��Gs&��I~'G~GGAu��&��ͷj���GGA��`&��B^���A��$�C��A��AA��GJ���A��s A��GL��I&��C��B_���#��$�_G���/~#  GBn�� GLV��LW��$�"GGBn�� GLV��LW��$�jj(�j������� ��� � ��� � � � ��" � ������ ��� � ��� �  ��� ������$��������� ���� ���-�� � � �� � ���'� ���/� B �� ���/�����110003332232322230103111222033133333331333103 C�]�� ��0��� ����AB��B���3$�#AB��CB��BZ��$�Cr�� BZ��$�A����H$�(�R���  2�� � �$�� " �� "� �� � �� �� ��� �� ��&^[0-9]+$d��+������ �����������0�9�  � C������ ��CB��v��Cw��)� �� " �� C��M�� ��0�����Ax��<&��Ba��BZ��$�$�Ba��A��B����$�$�(CB��)�â@� ��� �� � � �� �%�< � �� ��/�N�  C�� �� ��0�� ��� ��0��#�� ������A��B����A?��$�A��B��m��A?��$�A��B��k��A?��$�A��B��l��A?��$��� AZ��ì ]AG��RAr��GAK��<AB��1A��&Ǘ ��A?����C?��&��0Ba��BZ��$�$�Bn�� ��L��$��A��B��n��AB��$�C@AZ��ì6Ba��A����H$�$�Ba��BZ��$�$�8Ba��BZ��$�$�Ba��A��B����$�$�(�ۣ� �� ��� 2�+�8 ���> 2�U�b ���> 2�U�b ���B 2�Y�f��  ��� �  �  �  �  � # � "� �� �� �� �� �%�<� �� �0 ��� 2�)�2 � � �� ���H �� �� �%�> �� �� �%�< � �� ��/�R C������AG��C?��CG��)�ۨ ��  6 �� C���� ��ӷCy��)���  C���� ��ӸCy��)���  C���� ��ӷCx��)�Щ�� �� C���� ��ӸCx��)��� �� C���� ��BU��CU��)��� C���� ��BU��CU��)��� C��� �� �� ��L��B`��?��$�Ln��(����� �� 4  � C��E�� ��0��� ��Be���3$�ԭAU�� z��L��Ln��( {��L��Ln��(�-���� ����*��� �&�� 2(�� 2\s*$��N������ �,���������� � � � � ���� ( ) / / _ _ �0�0  � C���� ��0�� ��� ��0��#��A���jd��&��AG��;Ar��0AK��%A?��A��AB��՗k��Ay��Bn�� |��L��$�A?��AA��8AB��/Ar��&AK��չAG��C?��CG���A?��aA��XAB��OAr��AK��=AG��C?��Ar��CB��AK��C��CK��Cr��CG��rA?��=Aw��v��/A��B����AB��$�.��Cw��.A?��%Aw��v��A�� Cw��Bn�� }��L��B`��AG��G��$�LG��B`��Ar��,��$�Lr��B`��AK��(��$�LK��B`��A?��?��$�L?��B`��A��(��$�L��B`��AB��Aw��.��.��,��$�LB��Aw��Lw��$��A����B`��A����$�@A��+��" ��L��A��Ln��&�B`��A��$�A~����B`��A����$�@A~��+��" ��L��A��Ln��&�B`��A��$� ��L��A���L���L��L��~U��x��ʙ(��� ��  ; �  �  �  �  �  � 2 �  � �� �6 � � � � -�  6 �� 7 � � - 2 (  6  6  6   �� n ( �� ��� 2�5�> �� �  2 ��  7 �� �� - � ��   � �  � �  � �  � �  � �   ����Q�j � ��� � �  ��( � ���  � �   � ��� � �  ��( � ���  � �   � ���  � � (���� (�� $�� -�� C��4�� ��0�����&�Ba��B`��.��$�$�Bn�� ��$�(�(���� � �� �  � ��F � � � C���.�� �� ��L��B`��ԷG$�Ln��B`��ԸG$�Lq��(����� ��   � �  � C���.�� �� ��L��B`��ԷG$�Ln��B`��ԸG$�Lq��(����� ��   � �  � C���.�� �� ��L��B`��ԷG$�Ln��B`��ԸG$�Lq��(����� ��   � �  � C���.�� �� ��L��B`��ԷG$�Ln��B`��ԸG$�Lq��(����� ��  � �  � C���%�� �� ��L��ԷGL��B`��ԸG$�L��(�·���� ��  �  � C������ ��C���)���  C������ ��C��)��� �� C������ ��C��)�ø��  C������ ��C~��)��� �� C������ ��C��)���  C������ ��0�� ��L��Lr��(� �� �� �� "111 C���0�� ���0��Ap��( ��L��Ap��Ln��~ș()�"�� � �� ��  � ���� -��0 C��� �� �� ��L��B`��?��$�Ln��(����� �� H  � C���*�� �� ��L��ԷGL��B`��ԸG(��$�L��(����� ��  �  � C���*�� �� ��L��ԷGL��B`��ԸG,��$�L��(����� ��  �  � C������ �� ��L��Ln��(� ���� �� & C���0�� ���0��A?��( ��L��A?��Ln��~ș()��� '�� ��  <���� -�� C���� �� ��A?����Ԟ ��C?��)���  2�� C���0�� ���0��A?��( ��L��A?��Ln��~ș()��� '�� ��  <���� -�� C������ � "��L��(� ���� �00 C��� ��0���&��ԷG�� ԷG��Bn����$�ԷGBn��ԷG$�ԸGj���Ba��B`��ԸG?��$�$�ԹG=ԹGB���3$�Ba��B`��ԹG?��$�$� Bn��ԹG$�ԺsԻGԺGIԺG]ԺsԺGB��$��IԺGw��ԺGB]��$����Bn�� :��L��$�Bn�� ��L��$�ԺGBn����ԼG ��$�(����� �� � � � � � � � � � � � �  �  ���F � � � � �  ���F � � �  �  �  �  � � � ��� � �� �* � �� �0 � � � �!�,[,.]D�������� ��,�,�.�.� � C��w�� ��0���&��ԷG�� ԷG��Bn����$�ԷGBn��ԷG$�Ba��B`��ԸG?��$�$�Bn��^��ԹG ��$�(�R���� �� � � � � � � � � � � � �  ���F � � ��( C������ ��0�� ��L��Lr��(� �� �� �� " C������ � ��L��(� ���� � C��� ���0�� �� ��0��A��B����AB��$�AZ��ìA��CB��A��B����A��$�AZ��ìA��C��AB��?AB��Be���3��$�CB��AB��Be��3��$�CB��A��j��A��Be��3��$�C��A��Be��3��$�C�� B`��AB��9��$�LB��B`��A��9��$�L��A?����% ��L��AB��Ln��A��Lq��[AB��AB��븦 A��븦Bn�� ��L��$�Bn�� ��L��$�Ba��A��$�B`��AB��<��$�~(����� ��� 2�+�4 ��  � �� ��� 2�+�4 ��  �  2  ��.�=�^  ��.�=� ` 6  ��.�=�^  ��.�=�^��  � �  � �  �� ��  � F " �# � � �� �( � �� �$ � ��2  � ���"�� 2��&\u00B0C|\^oC|\^{o}C�B������ � ��� ����C� ���^�o�C����^�{�o�}�C� � &\u00B0F|\^oF|\^{o}F�B������ � ��� ����F� ���^�o�F����^�{�o�}�F� � &\u00B0C|\^oC|\^{o}C�B������ � ��� ����C� ���^�o�C����^�{�o�}�C� � &\u00B0F|\^oF|\^{o}F�B������ � ��� ����F� ���^�o�F����^�{�o�}�F� � 00001 C������ � ��L��(� ���� � C������ ��B��^��Ԟ ��C��)� �� ��  C������ � ��L��(� ���� � C��w�� ���0�� ��&��A��\A��B����A��$�"AZ��ìB`��A��9��$� ��L��A��Ln��~ə(�L����  (�� ��� � �-�6 �  ���$��  � ���� -�� C������ � "��L��(� ���� � C����� ���0�� �� ��&��Ap��Cp��Ap��뻦j���Ap��뺝ȷAp��뺟ɷ6Bn��Ap��B]��ɺ$�$�Bn�� ��L��$�ɺBn��Ap��B]��$�$�B ��$��Bn��Ap��$�~ʙ(�����  �� � # � �'�� � ��#�� � � � � � � ���4 � �� �E �~ � � � ���4 �  � � ����� -�� C����� ���0�� �� ��&��Ap��Cp��Ap��뻦bAp��뺟̷Ȥ6Bn��Ap��B]��ɺ$�$�Bn�� ��L��$�ɺBn��Ap��B]��$�$�Bn��Ap��$�~ʙ(�}����  �� � # � ��� � �� � � � � ���4 � �� �E �~ � � �� ��: � � ����� -�� C��n�� ��0��� �� ��0��ӗ(˸̷:GʘJ���ʞ!BA��$�A����ԗȗ��Ǟ ��(�Y���� ��� � ��� ���  � � � �� (���� �#�� C�����B`��ӷ$�(�����  � C��� ���0�� �� ��0��#��A��}��j�� B@��AG��$�LG��B@��Ar��$�Lr��B@��AK��$�LK��B@��A?��$�L?��B@��A��$�L��B@��AB��$�LB��AG��BAG��B���3$���AG�� ��CG��AG��j ��Ar��AK��r����Ar��Þ��AK��Þ������Ar��Þ����AK��Þ��A?��<A?��B��3$���A?�� ��C?��A?��Aw��v��cAB��A�� ��AB��^��AB�� ��A��j�����A�����Aw��.��RAB����^��AB�� ��A��p����A����PA������A����AB����^��AB�� ������An�� ����rAn��B��3$�FAn��Be����)��$�Be������$�Cn����An�� ����An�� ��b����An�� ��C����B@��An��$�!����B@��An��$���3BC��Ar��$�Ǘ����Ar����&�/t��Jc��An����Aq�� ����ɞ��ɞ��ɞ��ɞ ��r��\c��B@��An��$���B@��Aq��$� ����ʞ��ʞ��ʞ��ʞ ����An������6c��B@��An��$���B@��Aq��$� ����6d��B@��An��$���B@��Aq��$� ��y��6e��B@��An��$���B@��Aq��$� ��;��6f��B@��An��$���B@��Aq��$� ����-��A����B@��A��$���s��h��A�� ����j��� B@��A��$�L��B@��A��$�L����BB��A���$�A����A����A����A�� �� ����BD��Ar��$���An����!�� ��|�� )���� )���� ���� ��t"�� ��bz����An����C{����An����$'����An������ ������ ���)�� ���*�� ���+�� ���:�� ����� ����� ��u#�� ��d,�� ��S+ �� ��B�� ��1�� �� �� ������&�/(� ���� �� �� �� � �� � �� � �� � �� � �� � ��  2 � � �" � "� �  2 �  �$ �  2��$ 2�� �$ �R 2�� �P 2��  2 � � �" � "� - ��  2 �  �& 2 � "� A � "�  �� 2 �$ � "� 2 �$ � "�  2 �$ � "� 2 �$ � "� �� � #��� � � �  ����"����2� #� � #��� � #���.� � ����B� � ���� � ��$�� �$�H � � ���� � #� #��6� � � ����� � � ��� � ����6� � � ��� ���� � ��� � ������ � ��� � ������ � ��� � ������ � ��� � ������ �� � ��&� ��� � ��� �� � � ��$ � �� $� � ��� � #� (�#� � �� � ��,��& ���������������"���� ��,� #���,� #���,� #������(�"���B������������@�������������������� ���� �� @�� ^[+\-]F�������� ��+�+�-�-� �  ^[+\-]F�������� ��+�+�-�-� �  [\^_]<�������� ��^�_� � C����������(����(P����(����(����(����(����(v����(����(����(����&�/�j������ �� �"��� �"��� �"� �� � � �� �*��� �,� �� �0��� �0��� �.��� �4�� � C���������(���(����(��(����(��()����(����(����(����(����(y����(����(����(����(C����(A����(����&�/�Ē�������� ���� ���� ���� ���� � ��� � ��� �*� �� �� �� �� �� �� �� �� �� �B��� �R� �� �*� �� �(��� ���� ��� �123 C����������(����(����(C����(A����(����(����(����(����(����(+ ����(����(,����(����(����&�/��������� ���� ���� ���� ���� �� �� �"� �� �"��� �"��� �*��� �*��� �,� �� �,��� �(� �� �0�� � C��� � 0  `0 a�a�a�a�a��A��b��A��b��AE��AP��b�&��C��b�Ay��t�� b��Cy��BQ��b�b�$� b�LP�� b�LZ��L��)�F��� ��� ���-�� ��� �� ��!�( ���� 3 B���*#�� ��  f��A��Bn����B^���t����$�$�)����� � � � �@ producerslanguage JavaScriptES2020 processed-byJavy3.0.1� javy_source[ttzUg(c4mb tM-pcȅ>TiDʗgН~|ڳ_ MS,΁8!r[0͞T\cP$;׹+k3CDh_sƴ[aqM[ MI(x(O(Z$D5PN#/䦊m5zUqe9�%(Kibnm/G;EJ.qG5"~p^udÿ:0y*)vF* CS7?_Ws)`靉8IO/ aK҇Wz'>2k3)j9 w e}glzQ˜͘e:2$ 鰝duׯQ@j0T%R5eo34=͏oׯV  Ba8앶6&$)ŎkZ՟ڬ7s6jw؄$˱i|TSwKMM"U_7G{,=V -h%\5_o q{95IdJ(/o\9[/5;M2B(|zXz}?$QGS,i)0@++*DF^x` OԲ6n$/SyIw ߗ "_%Λ>H'pb,xJ�!>)}1ݦЭ*](OHk/v.n?~ˊC,ۧfY+ې#ِN�;Oem ?xw�獩{>D8>MQv5ecs6#B2JF)Q˥Ax.7u0ARN g2qϽjgؙTDv/U4wc Hq}y! ݕ!%,W_( % eDi+<؉ݖ!ecrno&3{ę6X�qw"_UC{"\7B1{Q鶪�(؂;+s $DzvtVBw0פzM3�y.Hnu6m/f|c!$QO|ņa/`(Y&,ф|1rL/YE[㷚 @(~;#5<zYf#?}ޔ<D>2{. 4jrkWN"kn^l1>M$۽"YH+kvϋK%Pbph[7q�vOm۠RBEQ{VVa@ס/nϹDvX*)A5 fO{ `~*<$p>#w"FW'V:m*KG`'ڸOP"% 涃tP](@D'ʠG@7nʱ0ei@ o+I>f);A[PGwnov#Iˎ#>.Vb"dyDJmb˸`UF kIXzQ6=hN؉~V*f7>IJixb8gwV`UFlq�7 6*ƚu+3<бڽŢb8pu@,Ǘy6<A5Y lbsh$rʜopW>/7e>) +Nhh{fUT&TO6j4eSLa qׇ%>?jI,@pᵸLD},)fJlgv.^=el ]n3||<~P3'< 0=ֻxFpx}L= rQEpmFJxCn) nmtU.g>l.?+n/ѫ?dFl#K)_u~K!m jռΦYaYR?$;*q=kY.C�_l,wfO�tؽ6yt jx}uGsc_~j}GZ̹6 ʿQRounupŪ,04c0,C D,F]'/6ꪩ9b(X=6{z{1hAD7~WHS'|lRWĠ[Qs#C*3+ItK@,2}Fq5GIyX9z:*m㒗!]=DF'm>~.>,ʢr>BvyDy4l`64WńuҡC)pom; GN|@I_UqH($xy_'`l=b X7Ci(٭.6/)n�J?GbRІM/xIh@*Wd3hQ!z2 `>\r7{<%P}!ar0[׀&Ō#}Ѧătߩ-@uӅY9e^SxFh$"]e=8YSqOL۪ԟxj%9<Ɵ== hC!ҳ崺*BKHL8,}<ePcw "zie#> ] !lؾ{k!k&WU|adCT0 T)2G< A -xIưU7lpjĎ'įhtL8D>VZK ؐ@Ȫ d[k '|<)&YBte z"og|%rӾC U6// † l")J[]9|?~˱-4_o|؂HN4̂؊`5QXkDC Y=vd3U N[ Fa+= #d,QQhډ`I5; tPxJI]iN- :@^@ NY8.at[22aL^^ĕj^o*&PVʲP`-htGN?GϜ*Nf $g*PRv=+6."9>xnطDTPQ55YUq^8]3=Fװ%_HC$L5\El={3ErsTz'pD*0ta_]Th NH:Fmҽ6vZM�횿NS{ԭ%ݼ=ߞE6bC)ee؋M}Q%!E7^#<3< ])ۥ- ;JǢn UA +tgl+$Et!cfV ꞏ!ab+KYsz 1]h:Pw3>˜!pzӯ<:IEumMTʁ 05`&KS;D-,\s%ّ$$n鑾 懌Sdi"5 �!c/bP8Ypys0.t:xb ށ`WU@.@?Fg)x}p8 pkMgo˖EwI=jwᏛ=~ ltz{T @6e);540`̿+LB:a  i-nO}Τa<~%P6*xN^Q&${L~4=՘,h)G HF5D-1@29d^i5Īf5ӥGSD4W9 )2S^~,j.آ-kv%0]NV KrotDE%e~7yD)yt_vI;5#c׿fDS\QIJCZhv>Ňw[ԯ+H_Tm~Nzx60 R1b^4*Rnv<˱`H$>NC0񬃠фy.!ޝ^ e|P6\AG8i{aJ3S8פp![[Mc_H8Y{PD80l}'TsFk5G:=f=+=yTspYň=o,u58EWG+UtZ4JD 4;TA+*68DS>Q,[ƯN+[l:*cɺh[V%qre5FW[XV)8Ծӝ^Δxbm.윋&B a<R(Хijى}vL%ϧ!D'}7Esގ)[[jZ;,jGl)i.G%$֑>;rf,$Xo7.C%>Vጎ_ p+!KY|s7Cu4tsN?}eŕʆ *&r_-ZvT:~'c񌰸5/7E?u^/{|ē_ɏPE/*`k[uw{7s72Xdd`U` : 7mlWo #S<=g'F C\%)sx q{zz_MP8# :x x gOTaV^ۇq \LeԂxY wB3~uFΤ}͚vYN.k<,ToaΖݻgMR ;QK- *=@~Y1뻣e;rx,0}'iCr4t)3p]~%Mw4SGHrϣ nDw%:iъ4�{")̫Vp{Dk.#~c(MMK$ -%Ҡ"TJ",h,\ R%CUMD"H;ES#ʎd,L -Pm[Piri-k`3Xt6仯^a˰05*14j%z>qNR}hnm/Jp_Ui)M&\XL7ez-> sgrK[nj:Bͪu4mh wLQBʂ(5'R1@rx5.RwoUݛcD+fFPME5$OU:,3k;;q/ILӱ2 Tsݘ^CoAyH!"`W]fXn rd7s`8 ?cOS=xv8A_>XM82qCYtYD9a;,ֲSi>]6l߽7!㭙Ԋs >˅)A)TpSۮ auyC!j?X%4TZfozUW6&Ee>#zkw >(t.6x`;Z}�iWZj|OJT_8jBx`s(y>K u~w8'+).Rcgg,J~'Tams`}L"0@UtjV'! &�r)EbAʻ.x]?A,sJ[2wY@'.ENjVj/D4pP-*g;ؤͩ,Xd&lYmђワI䳫 QDɿx~aeZ 8C3k|4ٳҴi5ViMt\t-䲣+Lo׳Dh~سMY]9'}kV_6ގOS?O*!}Mrv-{h$x.mZr| O2B%zQo%cq{S"D!v nMZxێ%~T[,H jYvMez$SK9S{JEhQ¹Қϟ7ك W~lQ.gz ~&&xfX־KΚxdZ Reeɨr!m2[&$w#f>W7bwSSeŮ% s$2eHsW f##L6Ak9StD=lՏp%7\Aä.IJNct77vGq ��D�!?pʉ *d0@!((9"xd44HƀBVլ��JktvO'݃k"DSbE2Rf#Ȳ{~( ,Avo/5\&T6}ONZENMe_d Ok[e]{!kɥ{X `2)>@FpT fz‰A78WGucIjVszRf_TO 1ˤu%%ܧ~sry{|>2v'/&ꋰDeVUo@yct/Q}]v r?\}|L J0ug)Mpy?5=mDV6|lϾpN(AD=ޚpk9s_b1OXRd$^d|֍2ݪw@*]P2)O290RX.z7Z4_T&7 0621IRlN41y`#v bv.4gX꣍M,,n q4r[Tx|H|beƛd鹚ՇRgة⊡JeRvxq!R9w!1QY9 JS(tj0:O+NdtC~C]&!KyGl}L-Q")JÎɌ\٣E"n@t'K[]`|]$3`uLςw33韘 q>DNvRn]UFCQx:>ذ!pR�"ɛyAA[oFeq ؎ YF.*fIqR,F̨m_e|2˼;X>jUTs _x]QMR֔6.4 D$`a4`ƿn:7lj~ nmPрcV:]8W}OFQw-1t[|Sonp緾#$t]:S3xҡq3Qn00_lE;}*ϨwMg ׷4lp ZXX\n } 6rL~?\�G(DGg ǎ1؛/{OK>!dw6a@FFF E^VZ/]8 [ Ѓ& C5b]hٯkihnѻ" ߅Ɲ^!xyt(Qx2:΍@x#-2kR{f ⾴�`��'.V[ð+0lUCd � -�t^If4+i_+ B22,|C+̫0j9;0N/HきNXȹn=zK{<[]viʺs+4j᡹>|>ח5xA]B/2Zzu*t|Otps9s!j o#9X,e$b�Q8@٪Xq~9{OtƷ+LM3V $5"!Fh{}o,Ix3Ev; &G+k}ﺙ?ST84ɪNe-.H, i(cXС@^݋hp&`m*8Qsj"lLD[$6F8syN*~3 b'nmnԤ XmhZ=Ft͆KaaM즵-CJ eY.ϻoH+Ѷ}~#>IsWcrӆVIRS.Mq/3Ba wTy?(%gۗum_;-mTgf4aS{"}b?3]+6[/Ϣ١萠W~s\i3n[r_Аyc6s,ayEww!qtT~ТWr {3F\r}n[c5w۳4X?q܄GeԌqZO#.wK70fG)^ wXSӕWuiP ^WcS[3&eqɵ&ẉ2 Q]SIS:O .`4x\3B7s,Nbj䢹xrI.wfk?M!o!^ 992D5)7LC{ Gj,J[MdӡйU9&EZ4e_JN{) qY3a|8V_3%<’Xuw)Ur7tyRN{(_P#Y(VZ7 B&rmΕmCp?.2="kf|GqUZxq?Z5kK؋>dKA1@;[0f>d52V}]l>]Y jE#iiD9{=\Z,ܙ1;�NqJ:=ȣKY[)I-/vkZr~!A@[F\#\h$[ "M :4Bw1gLP#xӦ`ʈkU +u4 ]u1vH<>8"2æ~af2Z �gf@2i`$ujt/ts7'7CڇS3Arvy4eH)<&=J$ ;MN”Hl)Ht=~ѤN?";F$tμXb4HyQ^Yψvx)?ݚ>kew)y$98Vԩ\4� ]Ց2UP&Ǹ⬓%b?s3BcNȠB.l1Av\RTVpөI2cT2o׿xO|v6$M37b6Gִuwֹdq,%{ǿx`Ɔr]|Ț&y[DV&=u p8v| ;}_=9H(v^4 Iݓt#)!0*4'owPI%p/mnt]Ӧk8zOo/0*njCCcosg͊MQBi^Wҫ<"< %,iKݍTzZ.v%6tǙrc$_^;hpǶv-$`;PԨHA^?Ə~iI^IF뜌Z9`g4&X\aAi͋ra:ƑrTaЬӰTg@v Bw'V&4IvJZFWyzC܉xVֶ%(\1F^c轵^AR=@ᆑ +gt)\ M xvJ:N6ՎŸhS؊e-&ӎDz+غ㷚ŢLZHԱy~n3,YV2"*\;�=j 4H9C7ZSJu8= BC1zFD~eT~C8:XP@.+ 4׽Ð!9Fq4@60?DD?!F%)B;Z-`){33xoBٗGhؘnk/-6R\^A`h0uS[:V$78Y@e$s (=W(E*[]Eyoq9?Tk)1a8@c,fOъ4r SjJvTLg�T4u?k vΪܾ"7={w^˿ݍYA?l#m콜<�~[w¥UlisWb\[Miݫ~m#+^w}8CW`9.?X;Y0 ֒4mǪ"7{t_~&]udCE~*�>z٠W9aDc\o*ݤ䷣-}ë )Ldޛ\܉AuPqM v<$2cw$3ce3sb69]o]]m p!WY.ZZ8_rJ1>޵+0l n%™ 7;! ,-sWZ1>eVsHxfy*<=~#rn N](HD@8VEM)0Ͻge W:Uյ723wݺ#33V>rO &O]2a5vGgR,aפJf"@cw Ͱ�@~`@Ͽ$3cג4(iڲ>n�;e^Vo8X5H8pzT!DŔ~,@Ew VySԽCe pIo$bcў~yNö$ߓ |k5-bhW{w<[z\g) ™s8Q{^foHNIfz(2~¯$&ڞxEFfh'$g%�ŝjO3|}t.;kXrم8xށu`^NSU@ܹۭh7{?@WCRaeA;JY_Wu(ۿE]=ϭްaJsSFհh=^U qwl쬞o9{$.cgPq2T9KŌx,M~?@vz{dlK)wtQbP<ʏ^]zܵ;YPN,Fw%P`=AİωzXHM w tjJkxУZe[c)hŝ-::k2H֖;sy^{`'{*}YfN+WY8t1|7,S(;= |+9 "n3u\pH_VfT&R(aq x(ܢ2YQߩ^=&ձ].ps4xT,ma5˒+6 1GI%`5(S[n )_KQKDTЃ9*\SwIb'G41I ʍEd)>m|řaN08Ǵj:ʣ{-s`L;8b:T;svh \A+SSr P ,?pfqbk*O*QhqDbˉ:Lx3PwZX18Q)`\)zɱ&1|VT餫>=md}EaTV)!$/{IXy1X#cj:~[ݳH 8#\-ɸ˥R;#4/+}%षo͝u:=k]ɓqznzg %FpE]I T3^I�0 ye3 khMC%{(9 b%MLAɡ;X8xs{:N:8JQxt{ɭWOF>]@zsf{´AӥE};%h(8Ɂt- +W|:\|"034jũ#~ȼG+tKAɴǷIA![�3r5_.ɆeDLxCY�+hwnyYKD%JSIQn;=;E2E ,d&i le+[Vl"`0S(wSŕm t RK)Kf@wE``"; Xc} +_N +]F)1B\.bF ?^ZZPXR \ɓ-#~cTٗD"Y'6C6V!x,WAI@Y}(U+&"£n+l Y7ͷ=ZeRi6:Ct}dAbQ*<)ǂMkr >I-r$|ss\C (eح'nj2!hj$:u^8V2y rF}y(]qO^lȔ˂M<7Uͱݦfm +w2׿1q+`g:B>R%nD85uMGڡG11eR|*@Py`(/2$t>&l2TS#!Hy%<9Nu 8ch !bLtj\ͭg8?>]z+=GZss4nJ-!{^_9ʒ=^$ܸs3mbva>@9ɼBf_.wW\Lt2%*:ML3?,<'WC;XV+pbO`E=m͂V)gjGg+(8b#),RG%hϲOx7/i@Uy*VBՖ%ֿANމ&ՔH m4ryAw|3mpg(cg~ 5 j9NĠƬ�mC�E#Շu5>ˉFq è)(f4*!di-$m [p-? [;|C1G��`-)Zĸ#lhI~R /JgT!>Gu@m ETO G4__䁘-Mˢ{$f�ܛ} +Uq Σ׋8X>)8S j.w6�'nUnEm7 D_^s7ո8 ?e b-Fh`K0W6@ژO$Ѧ:oN|aļ›g'U[D_?B˫+crWM(fޡ}Y~ 0,0ߊo n�.`b| vdM ޡsA WL3͕ɯ0=_>|H 8%g+!J>/АZ^O}D^Sb;$YJ8/Wzӂ6;cbA)^y:/F2'X|m:Νp ONˬ\ $8ҊrpFFn8_HK~hN Wґt BC #2WJ:0K^RgRe80>&D49{7KO{' !7H ~IWJo:v4@67Ch4;IfI|Ivp Kτ# Ox3VLtE:;!&g1<_I#) ڊ{+Fx.Zu$hrrZ浔(ʎeA* {%El|\mƶl.yJc>(P(fr Gj܄RS. �?'6x,辁xec;6x%i >6b mU,*v΃[sF9?~ @X9d$Z/ɗo&Lv :'?n}Fd^H=NNu-FhXZ0BׁStW*`dQaï" >]Q;J썐$+#�DFݽ(jĈe7=dnXeS+7%$x֪2ۦ/C2/*3$vDIHָhh/6LЪ+x +9@/A8떧F{VkR$wT!eCt{?!>d:n8b߀ϊ =1By=TAxޗ%2V!J@Mft :ܢ$hHj+E.*�a{1SwNSVH7ĀJO:fF#$�XG1cc,dA~�a텐sC^Czi%mxJ?&L}_2 Aqɥ.D_lJu՗I PhnM\SƘ7 W阊1&;W@[$m* H jilK=#\K 'q "QT#.P v+أ7K nG-k~  CJ� 5#`b9T9EBHeB_CZ>?,)Һ&R~TŎ2R`&2)hIJka/t ,<=(H@ Q`OE9xw0/Cf-[5 o]G+!Cvz>�fvq`Xjf0NNX7 -% "f,L!0YcmEcp.D/\2(hTۅ+;(C[E7ǀ^vho\ͶuSD#}kNvT} 2!wOp֞; "[ Ne Zíߵ">iŢ,_N}MnpUM} ;ɭ8p`>~xMfMku 4v.<كT6񙒽ۗ=n]NƫVymXWFF@ AG0!!N8C qbpPYE0!6@ AG0!6`>u  @� PIoAHY lό$AaE&&I!Ce!qҖpZߖץj\i̥_mYLڥlNC7@8nuwB.obaZR)ϗ"LH;(!l;EGIX ^)-[{7${3:rHKYz2>?R}\~*=F%GL݌uc U@ME ABbijbR,$j`BF qL\/-yDlpP:0'Y ^ $Xޝ0rꌔ/HG,_ݼ5?BսݵH`|^AX@;`!=MqD(# M 9#>c#vplF'bi3,iAà@2#`Qr+RHG@.ðw7,EЄDrB8]9e~l_ y۬!E Cv\ P$g@j}^[iխaz]ɜ|c(?zN𭭒ÕҪuCD>-]4a&^0P e ?5hQ&/ꜘϼV7*2a|�NTgtcc ⫶2:^p#Cﶞ=[Ǚ &~cJrۘ #~ "b >J`:`[÷W`._>Tz I}vxknBߍPD݉:p>?zvLrvM^gX%?T@1~V8&l-`;!W(A-O"D/7h< YyԨf;{qyk( e晏`MAs]B?I F�dP g( iH28]ag+�s~1JƏb.iSw^T^Hƞ!g9qЍIX*y#dM 7}'5S!v1I~tAAI, ZH#=8J( F8vM6{BR!p}=|~ƻ:Vu:E"?Z1.3o|#3|pnHREFL֦ &<6`HN747)I_Croi`.eIt�Efw(]0?l$(H*Z>E5~N_a 8X�Bx:1?P^nl(imE٦ZRYSraqo s(leտU稍eF8\Dm: cN_cFo7Ư3yW$[p:pdfsVwmN*m—C:7#NZ`F"!mKm϶>fY,i.AXHu rLP" p?zn(,)0$yb޴f7XrfӵUe?"Tj&,\g+Y BmO ǭJAfn&utmGmh73g_.U?+g2@i}bC2KRgm+cg.Q"|07x(Ts9>o񷾱~'F zI�z˕v;Nq2#~BHMDvULwM7Q0C![qX%>I:ٳ5Nhۥ2aB$RF{?7[E^/R5nVt'x~ga)ɊMQ^Z?Rc={6sgL9`{>U4觡YH|ۇB/ <'KDFYވ7G e 'I1(,;WTZ^{Hf:v{G[;Z.Vb't|d <| A8<۝R.t_bjkՕ`TnB&M:RҐ[|~ $A iVIź3)7MqJY -I]8%=$l:_o"=fFRNX3ZZV]DNK s8@Tv? =o[IR PБм,>r8PH;?%PT@>&N / f<УsI4 .ܐDW YP;.$.D J^n}%:Qys] y.($$>RZ@p!OHM,*h7>դLTG_ rPŚ}mڷrȭ�'Y*>ʸZW9xרpi0𙧩&:L4Ub&5~ ;?09CƷMW>=>>Brہ@?s;*_(@*<нy6kֽUfTAظR^Et8?Du. {2a,pzY kDdsPu@4_GjGD[hօmH@iݾ_{Ȧx~.-^XG@IQ%VcsՆNS`Y* Q\n+\6X4}B}Ь;3R Ah$3u@/(Y'D:%}}��^[,& $$zu%KʈRB|V/ w)YAahYhav.k|ӔJ!d*}ԇgDc.I2MB*.]B*Nx \*չ|RX@shIR-ƐOŴ!%{YpY\nAt١iez) Uz;yI n8z,,( wyji9\ ;o#ib�[A70 ;.uh>)N�l�ڦ'b5 UT g)miA'1s9C?rUpVCMؼz$ԣCDdJ m›J- t<&b4ȽqE:U<`7Q:Yt�z�#ltDͨdK=pmߙvfXKN0E {8?'܅g%$Ⱥ1݆HI>X RkXk YfKO;3.q퀈2uY+.U6v>[:ʱs!ze+e`YWΑ&h#34ZӮ8`.sȑX jOVC4yi׃X‘A1Uۂ:1\(gtn]vۄ:&A^#fP7 YO;u0GDK!_!$Ѹ>"`LIh}14,lL܏j*¼9&9֓ݔfz1)f=N!o-J#fgjW|9uE\;_t7̪z8ЗkJ =ұV7>is9l.;SAOSs T\/HE}]cn*Zor#XQ%1YOne@cYeIE/vA׈$K$ `鷽0$k,͢Y-Ʉyd&x _Pn C˩%Ț( [<'"yksv;Zs} zL!k#"Ԑ$ؖd̙`DeD+jNC9Mf:`gjBÛH|\kwU5ILv|Hsf}t$F=A[,JPdfMALYyc$2j.?F*֒m"p45lY{MGy-Ґ3آMsTTvԛSRSd359j$ dniAiL ﹑wϤrؤHye,[[Hvp+@-A)AB~W|}XԄm[]%gu/�ӔObj,'z^3s#YDm9۬n{:M0XQ=:s'`/̷pEy(qY/3ĺk>D}*Bgd-L7.k}X q6o]a_՗5 ׆$u@10~.e:#uzf8+2~j\ax- @S14)t&'fbqgD!y`E$ #`e]e+mpa\kq"z|H2YD}[~0X.9 $-J"^4!;E s9*+kQ\l$k2bݚd7cǹ11fyT%7۱v5؎Hip0x] u{(hvn QgZ|>*4=I#뾛L{AR)q -Pؙ_Wnz$;pmXHY{M@u7q!Rx$鵩:FHs8_"W Uznfw>kFFEg>d7ooi]vg!PMHi,~ ϜRaLD\%pe8LQ $߰ EaW߭"L L[Siv~Hn^u' 1ۨ?$!> m m)[ިPSMU*#ZHZRqTIWmKe21e3RMqF?pB?p8}ǹ%D~VjY~1}[Ĩp~ߜZS6^X&ޠXJ\ݬYhWW"Xƻy:$͛!:fgIڡk;Tlxҧ]L-: ;8ǠPАmcv,L&anC+*rَHkV)q\!y]b{zM8!xIʛSQ{M+\xDhz$㽻7pW_Zq nw"ᾍ'?k_DJƗJvU21nR40j;nX;8n@ ?N!ip]ħv[7)=g4h8r".y[XDԋY~eYD=vLؓ6d7NP'Sk^~)eG o@?7<6|`8ԍpbE6=sUenqBBU42TƈCl*Q,cQ\ΐ؅ZtW.@?0'bn(I>2% K" 32abaa,#KwiađǭX1wU zF?xNx\ j;&+*K=3v`톮^K$by"KO5(R!K"8Y@EawVqD*|)!�8]vqG)r،N!f;jhy]of>JG԰?ԹD%pҼ:Ha7BFxt.7cԪ=\#hA&~a4ts; CT�ូӘg@n1>y&{-_(bX۾hOhE�]W踉,"yGZU{aY}/x۩Yx:k�v036nj)SC'Փ+s˂l<SHbu~D~R$é񷣑L#/^sWn@blA3Z:NM:+f%6Mř ^jVPw]:[mU~Ksl aL56Gh%`%0Qv=J`#Uw۝z.rwv19ilLq~3\ I`tYB# h*(}T÷ުcfSrվ%SYMN C >09aX?z-3Q>Zi\E ^ nvc?5d^;P>_ Tl y*1w֝RAynJ({s&#jY!>oxWR $o9{@<Ѥu!# Uw|:4#N&:$aѣ_B=!?[|^uرt9nf0\ž_Bu5~ނ=IXX%·,TAUAzC~Qk%329[e}B~=t̔IJr59Y^|E;6iYֈr#zSin6�|M#j\N=p\Ӊ$p4DnDӾ-0b%øS=fuI:vc@FW0p7t='/:5ءuP-~-ͼcﳝ@/JisS Cʋ7bkqjf&Ūg, [#V +5>aӐ5ļԱ "bkU9m0(bu/ k CJ0|g?DL�x5&JEYtM;cIy@Pȓ@ceNQj'yä]wL +y T >01jVGM E}P.ꑍ*ʲvNKAFA1Mȱ4΀"Q"=V !!-%fZY"_zˉQ,m,S޸E;4 ܃^Jp2q9¾7/@zފ)8鹎5#)t�fI .5h΁IY&'44$A;B?ɵY.GB;2Lk}.EQK}k1GZ~_yB䮻Y#W=uh)*8&)s1sLDKNjrԌ1U>a1eN-_fM5nLuzQFt\{i܋T0G-3Vw>;CH[dr rhtl遦g θ,~&Pr6G_c5jTr:(A٤2HFh$АMˆ8ʸs=\c{ŝ'Ġ7)n@$*-uYkmE'Pd pրXHau$(�l҈08WC$~< f�?:+'L')EO+"K'%e<oH'͘E<`V'o\X/P'4P1qOCt}TpqcZJCSfmRRB_MCH) AC-P &(7u;aԵC/�#V,$+CBLMCPivփMPxv `<8!.QS55i)[]2NPZf۹ۖNZˀ@֬F鄕@[F;ӝnʈ/U}l3W)TH0Q\% ][%=myL^ݱ>C܆.52Y0{^|m*)%fb+t:FՖd*[O:9!$72r*p{2 RKpA\zJL�( Wb%&p/G U=TX0)e0ld!r >Rl !zL*G-!jHf;޻R5/朡;f&,ul]RA^;TF$]q{s 8% Y4^ j*<4i Q!iN >MU.6~Ëb8,Y X3P0 d0=(ݲPtPbLeH%nB= ?o?&SZ/9=+.{5 |O|̥:U� Ϡ#pkIWmzygLtv\;cn =,K@῍|6B G>%wy -VKS`Igؼ+j^Mj!C讀vWIvEe ̳O)o{zŁ?z~55Ju Wv>,:v7E> j тʩ#umx߯Jm~ncLؿwa *p6at5\Z<..\cUܝNiWA\'y 7r*ЗZN61af�M'CZbm1BvP]m;7,t2R--*G_XYR]ŋ"kny!>w;0: ?'KBŵM{m VMt3"d ׈gXB275׃k#@C<MD*B MViP`@]xt8 #ltx!vZ0UF{]no s4|c�>4oSny*z%*yc!Klo1g&sƭƉ+L-{t.-e$_8Ǻ|QptmWn1�!U{= ҫԖtdZeZ?:{Ð.܅+ͱ,`'0lߗR32P݂ |t0d^3в/2!d'q!,$t% R% ZT=y20.Rh_5zf<YK&(!q7ey8CǍ[a#$P~Nuf\\<5*)Vb(U�àL*-Yk8[dYҺTPze D@6c  2)Ap~, RG:X(ƣ'0O w1($�9dGarR}qp)8.}p-S3t} LR˝hbҹHb*c�o` Ruꌊ$wl8lC]NI =}%4\CG %o'ErJ»$Gb-"AVq Wg!~6?ԞZqōm2OV k$ff\M=hGV8{aϾ _"hK<^}um[Gn!%I ⹵]oP>CR桌 {uđ8�)*Y"YxTXͽKСpYݑ=QYeJaJ\Qtϯ*N`bDGq$/oj)b4=e.sl+T3!˯+]uNe=RG5W]0?:=xMy4?vv JG:L뀇\WR٪סR;{:56~[f?w3N)/gʍ&SDχDbTEZgcj6uB<20V b=~2DFQLNU*q~"v{[GW[5Kaeniq#2^]:R~umA1sJ�@N% su1Xi'?p.~JM\%FHZ+,ioj2꼉n e1 C0f=Ȧpx0xECD>ݦihېcTÙ#Ld>kdM8I2~:1o*jq >"s3/ӜM&!*l-͈ cnM(F0͝52JNjskNbRplCwD`Y摁[شZՙ)d=!}?`VT5Օ„-pnMh`)U]݃+r6:jW$3e#Q\i�I*aq pXBqSipCC8 K0cq#yvR"'@Qn!Q`& c+- G񀕨vx6${bJUXY f  /d vä=kL\PY=Xт~`X{}{k`jn %oSk }ÍG0nlZ7{ܬ' 0y 0n!?'Hފr͇(T*ClNW `-3[a#=8tj@W676VgrY{Bҽ&˘LPg7}S>K5bg zZDZ32Rݼ3 qIKC^H܉S' j%|5]]ZaCU '9z80HWTf#;޵:%Eps8dCYqSL`hb tb}#Ϛ |'i?D@Bҫ !Z"H,bIq_;N{^-Xj*i;EGX5>t1Z2a[̜CHuRU`צų1urk4q~)T)ݜg$f9xZ<'7!E#Pc&e+-L\ {HPA717:.| }@tԣX- DC7e?W;neyhAc5)Ų)iڗI@qqn 0KY@&C.b)F+__p~,$@8Eao6JOᙺ*xп@Dz`Dyz"tyj2mc?|G OR yt s=p4$Pa}]s%&Ń{+E+_g_^|}rN5Gni sv*_5�%,P(o"!xt-H B }\ ҉7(>EQ�TϯiP "!tU~'y,ё0|蹰& #E]qV`1 [6\NGpք$Jo#xr4_KÉIn+ž.onx '8Mwڂj�}v<"MK�X1G~kՆAh_&98grwN?U ;F%6Pt[>&Zs#2漭<ƐVu3sفybYa"BZI/d(2T:a�rtoD&MZB(Jh4A9[ĬO)Y}g44 ձ2C2F#&it�U`Qx?h9 3t̆D_R0Tb.< ֋".-G)zP\G[ﳩe?J=VtY9{T&sR/�#Y|$ppkR[%KrŠ*{d*ob!rdoMQ4ĚrR!|MЎ?E]ZCS͢>JW|4;=)b{ rҁ,&2ճ�M2ЮjhP1:d(rPI+ ?X`2Ed ON;Ff.rRx8g1]aukfC&^zk "pWe*=BpQݧlE%fJZز񞻚sٝv%H-%D2ͱ\놺 #<osN:A|I]>4~dnLGŀa!K/I$h"h[gʎ\_&kX0]Y%o|JD'۔:6R]!n_z ʓ7>382`-vz|lYŅC7NHpE,3Gn&."ƊPK.{IJ8diċp ˁxl\@`8B&5Ñ,I}�,*Wd5$ϵ.Z@ A0`,6`JK D=7p5!�}ƫH9ykw &w ޲|L铋/5{ΨkMzJ>ݍ 42hfr渐(m6E QDDc xR$TؘA(rZ#^;Rx'^nHXN2ls9N2}r<}$Rչ5"n?퇛~Wy\n*'pp,PsЮ#p$Voׯ$;}kKd,z f])g@{�,+ DROpCDzwcjWABILZ" q\df^vK݌Ÿ]Ÿ'7W^@QpfK|{f1Y^ ȏ!x\9J2VNLSuT2,Eث \,U %Η%6Yǻ snop׃A=%%W";Lo a*s"nc_(aO-ξ 82:4AzvP$͆᪻ސ�nU 貼sLU NG1IFP(r/Aޱ|8 t6| *Ҙqb zx=j CĮy1ؚmY?_)˄"ݟ#L-Ly6?b,zXCegMeLs:kꨥ@+)TKg{9+zzEo<Xq;B [ۺSlÍ1PKQ^,R0VWNd︢^:PQ3}wi񺝰BU`ϖ%:? +ej{* '\�XJQ@>5fh W�W~Jno =/IrT{vi8Q8m[D-'&'V)9ğO~ZS칢)d0O!'T̛VR9f PS8 +FACvWcb|e(S t7Jq Jf $&&1Ic!yșz{ ,+D,5jyä]J_Z%=ØiT�Qդ_.Ʈ=&jhK~7+]>6`Yl.>mI9rN$%Ɗ! S#.O,\̒c̜!K}uC2]`q; ?zyKUHkv$4Q4]'>Hsn?j)Mg~[՘B2 yŹm%s=pnHmusQW4D=.MnzJh&GA_v4ú NBcok?gpnmIE8s@PAaD nH`f2dhN)`*ij"x~ c^ٓ �<ޟ�'B{DaG 5WX6 Pg TpUH33p͌fٶ C7p (m* ncipy�п &-\k#Pyf #[k:s^uM\ /ͤiTN�o>Кª8#nq p=kt -C.b(8VoZtI՘07zY> +/za%sޔ]k m`c[LX�> ܞ6gjV*)AmApcfj*L^E'9!7:=<+ ¬ aˠ2Mx8E)~hX:Qt$NC/}x6_D \X VmK=Im4b-!(>74(Tbh=HLХٍ?6Α;id>>ZLHS犚D] kSڕMU0#f'9m]i7u0Lo}2ιzK&'Z 4*S$x̓'*X'1 pLKcI+ WZsPϛ:ѭyw~feVVy{9?J宾2Վծ֖}]Hh)(0x~pIi>˕I2YX$R~K�?`ϕ o:oiSݷtOI0SM)elڎAhTk KpߌCJYX5zߏ k2#gEazKL;zޭ ?/^ddjԎZM/'Sg#kG{af?g vFEQvY)#)d9mJ@NJc̉nBR?1afU ~uyR|b| ˍ@7Ή#ZS:y:? U৯zs³i\!83J8=4cwc"hPܭ>X N խ+مr�o4 oH WR#RA[Ç'7?_݌RTC>muˁ͜v({+qVidjT7ʍcD6f)by{2v3ʕ6S:zZ-I++gс:[[j:/ytи^y~9m}Tr|׍io8kڄYRB$؝ w ,s j'P&ɲP]A_c^_([XLTW- V<=SX:y2柘υNXej11G}mr|@dcZLfcHz*<~/^hʲF}N2;xH8iiKgPJ\]k"-.#RkvmlR.O&u.a^Z=aZ𡺪t՘A#˔게D= C?Ñ7dbx!pQ>9{V:A |kf6*<,PuT 0,2a&2 &DP24T VA8ɶq+=߿һ}1 b(\8^zU̺u% ʤqCܪ!b2BZfAiIKSʵny`y`1U ,Q#b@0M9(y wZ8:S~BDWsANl‡LUhWou$_k^*, - 5^pdQ0=.p;;, 4Sr㙢CtPuj`xCNw`(q!ʖ \b\@pXdm:c?Dj`uaFn/�(}0QT<=} tLK+]gU)[ZxFQ3A :BQOk'е/ 9zYRR-J7xҾdqot!Ԙ"-]A[W{f, ݃RWǚ^vxCh/yB>m~w ΢颱Y^IuGcOCəT>{ x^|G"9N FE9ViRCu8ݡzL_+M fVXPS1ʀWdn?bXA< 3**nKfAxd]ԘTc%j萐\EerL}9gG[/$5Q\eB9FEwkY .Hfe\wŖK.d/R |m4R9B'q}U:Ȯ v|au-8( S�Løb6O}wI]2Bg!HS"}޶~!7}C/\`P7 -laՋy�,yo \렵(�4x9܀X[ī&& gIh!xEqb_ᐇ @Y9qK{`G6fsgeOѤ?2.fJ#+Vg.P&V,�B[(G "ѧh 0o9V[OS."9~%zyT(SH9r(71Hc�0${jԣ%N>|'Æd|25< \xpfG-9$+vtyLzCQ.ךifa>V+a\̭xo=)B=`lN]Y.w5BmGD%|)M8\}#L nUw'FV`Y.cVv`41S5vVOpDX矊nWoSa(r#qYL9u%PmOb((O= 1!>@٢SF\Q,Yp`_T03]�$lN *SjښkvTM<8ugFg.ݏJ w,JeoݨK^ ϐ\h6͟fSc5/5z+_Y߶N:lz:BVK:׶:l̉`ѷ/z&hWx%6,IPD5X1D PSGh~< )IvOд+61iS_29aΟIlĀ({CN|"x}uӖ SMr.cxȊZa<(cWMuǀ7euG^wOD?l^֙.Y VnP|+`5fIsk|!/j9_Y"25!KbҮ8cbyLW,CCX"$B!' fv8?U}_n zZTo|w9.':u7L"wmS(d߭R9.i CLsbȧW7] @-}! 4AR'H$;ޱҡ9Cě>[�č\<{via:G䛺wF/<u1b~I^F ^SE 錯j ЈIT>"1T4aOPrUzio]-/"RiOoQt' K"^p.ȺbyLjF WI^o)a73٠bO&{n?n#UQ}?D70M S-o֍.m6a}A8vi{  icɗǍJa|+"߼%8.FyJQʘ I/bKzQWב6;xܾ7i:yU\^kݬt�hA niΑ.>[t*/Y �HHm`GѬW870ugd(>(@jboxvQÒqhi,S.˧~�+uEeT0YED44[*L23PZ-Aw/_ Đ݄?Pݙ \=\6%bpA7?B 5GBN_c :h 86$*T+7?b X%YW2rsJ? .OD8S)gfU#Q3Y)3ى%a7Oˠk{`'Em1 k<}:GS0BɊ4`ISa=U".A3ʽK5S:(@"492r VM۶^)G@ t  &((A$k)@86QҭMtΥR&~qxL|z/\-|>yYgpH0]Ǧ6g'쪤W]FsqNܟ3,@.70F}^xIu\HAAI qrphD́E5>Vz%@? D t@fD3L 6!'&J*m=67a_d[vA{*E}n^si3M( 7n0%UFgP 4GcWrO׽˱8T>ܱ90..љT7Y ]favhSC'/겟Qc˝/3'm z|P1%2.[mR| /;+YѦI;L%Mi(\pt޷-OԲ1ʮ <޴^ʴ -PB +jbߎ^\ Rrە%S"FROMž�T˕2lShR'gɗlOӯ}& ')/}ch!7ZDz*.e]r Թ zm;cw~zY9U#xZ j|d&ٿYO˧IIwqI6O)vGb/'-O7!/Wf\T~|yyy~}R:_KzA{Ɍ"]5P/6:VC Rm8f:f@n~9\yi~k4J*-7KJ2/뭇(y>Ս78ǝL >dKӞ=q3kxx`r' ?N`%w2LVƛH(1SkKq&v. Vw39r.!($=:nT 2n: wd>%[ꜛ�y=z"[QQOđі"YN+nK9"/D1M3W[}]up]xc�(z แ(䟦?Hf͉6*e{.=Ps  u#[-fbAcIT(P٠ !19yF$ Gz<䴖U$z`ca`J<Jh(Wط Y=�;U =?"}{b,ʶ\ Bة/pd�Srx&z҉,mDi9Fokdgn_Z 2A{p^ASHppB>n4xKFhatv(B#2 fE0'}a5Pl7&}U*c(wg:'tp"dL|֥=`1}ri.gJZ&KG8!'\(_n\pEe r2HRlN2VQYt~Q߅o "3oH3=+�!et)6@=[ku-Rl5m3!"zqn*kbI$ Nxt@U@bii;p#^1sHFoIrd`t2r!?Ǥ~щsR񷠻ӶW9V!oUby.GE# ֨6M6 8e[[G֖(g _mƠGe\î[7HDLL(wHۦ�nw&xIY*s8fW`xEr,_#ػkK3ml&h;":eYЯisFj'z+VCUj5 NqBӛB * R`ứv&> x#r5]f A4nS0 d^,rDfuT7uioh*l[t6BM.*=UEeRq7WCϟS'Akdpa+zm(T`aRdH9^FQǕp@h:L.Wix077 #o{!Ѩs;JN7צclϜ�,h2>-\6vxʜQ7bh \PM4Ĕ e5yDrY|JUIII1�YDVXXav=7[F`B2^^MpU|5`5B4MSE)i{i3xkUd1쓢 )ZNsK;ve7K"u SO^6Vl AOmr _(y8B*BPR4TL|GRqႹ.U3I\'ˤ8¡$BFAhbHWcbIauȘ9\SDŽ螡#1eJwM3 ~葌RSi*| &2Jװat a]Vw/R9SyCq:oi+8V%MJ%FW*TOHr> WjG*&A͓7óhμgU~|{ᄂ\Iz`'<\Tt=5L Ptr}?/$[$]t#VppI{PF=0/5/SD5ovCdc.en)ªnH#6~mV^v{&marL;ԄLXBW[R`[IE]'I{H^Nak gVpKڌH260߮]-Dޮ?VݏPci%Tەhm("UK>=I>p3lZB!jDJj??t}Ң4"Xz�2= lGNXvEȀl jފ+*%8aH{֕`\T'Oϗ\-KOdSQ �2(Ȝ|KE-Cl.0V6G"^-}f48ukZtz,82TKqYԿ>%x'̀NIO__[`*S@C Wu)U"ma"^t)T*[YbFD, QG5 LxZoӃr/|wя^"[ղ#SBv~gт)FV>{YDv.TDU6j qE9~˽ah j=hufj桍bUo@T,v,K d  smxh?z$( iQ^(!?ڬZR+=sXQ]Ы۞5?VQYkh#/ (˃+k: X"ˣS4A&4ǽ_<2@U4-I5gڕQF)Sl IG'�%L0Js~QiґM=: 2=&Zi *Yvu6>)> @eB']`6voLc6>(UwL*-#O%/+Ab{\ǣiQEó-44|&'1rӃQH)dFkYlK,l )=(nlL ͰB> /¶'%/XB5q/xk'k@0潱'~2]S"}FALHtG<]"U5 skօRHj{7g'8dA;Kl]|L)EvN[(DZ�н8("'Fd1jq&"XYhqGޡقKW7G{֏){kz I q77Lɸ C!AȜ@B0LL 3{[q9qN& Tq@q酤s3gUk,\�/B*&~xwwqQ;mw-B+4m\Nl]}´g׷ ,푦5C7Ŀ+8r萔82])f!]Pc=#b9e)mx{AN5Y={@`HX hNQHբe=oңrJ!& ?}LD gHDxIr=j~'vqt̻N"̇TW%\%`,\9&"^ow>dwvzgzјJob bEH5<܋aS"pB8{+mبU [sdL 9YՑ'�}E)Wc`gf g7+Vu(*?_ HD"&#s;[{l⹑~Kh&usA ?Oheбc/vÞ~A:zmGb GQ6K>)7%kͬNOCɦt ;3= h4oӱ͌^2'NnLs|uC^HrP"/Jv6o:T|-;fӛ2{po9wsi̳G2{'ew}">F\NFkoٸneMхhf^V mz1F!\icJ#XbIHg]?f=-F_k(=dU4cBnӗVJr�+r~̤|T`fdޭͱ[ug'zG-xQ` ERte.z�zebG=㫜vgrNQΎ5o8+cWwn8;pe: F�6?\D4F {s{_fec4`r{F-î ^=d_1S}e.;-ܨN|O5_G{骣?WxoƀZ$^y[jٙ �Yj�xuOBcdkW=QZ= y[n*r^MDYp}*@isds~Gne$q�ty~.{sLS||]j1GO@Im#H[SGD2caM s8oS%K_X)n. -C@Adg^�!7ȸD͜@ivo I1A[(Z kIH$%8v 6EM0x6"{/]LI:g�,!+Z@}ӫ8"`ewе&qa? |jѰu]R%6|}Kelil`#=UL;F831sw~i}?cKr@@ԈUW]i¼1@ސD `N.D]zo%+[/ Ly.JݎշDh$oi'"#I&o0T9 xr.v)KmXi ߎz,I"i8ѹqOS>}~سALirV]-1("qD$j[я}SAZSPmT?Bu/~xyץKm'Yκn,wnR6 m-M=&S.%6}m6U0vflNXƖhLeorh  A(Dl|yϭh nCl/^]ZnS;S cY]zq Cyi&Ntukrͱ86S rzTL7ݺ[|vQc}o{!CZM9ࣻ]EnITMl[b ,*&2y  ͐ TzYu ÈM5H @ܕΞ_yȦOS ]uaXDV)?Li %Mgu~bFq�d(sἙo`j0KSf5$# 1C!]C{P̙Q$m#L4sQ.j|vZip![hޡ%ٵqY 82d%P[(J;t"Fip1h6!EzI$j"W|6n. uhxx\Kw?h%uLU("cuMY괁C ˰Ӄ a󣬧31_=e{r͎\U,L�9i}(Gq50>:\n g" 95OƩG5Zo|H/ْzM Ⱑ Kg11&'IJ'.~cʻ0s0ve )*coaS~mpf%st-|XWshHڨuRk-;`o9 j]bLeGЕ&�|(khG`%¸".|9 (TCڇ e+/=~.6 UJQ) Ԙ} VjH@3GW QDN rm>\�A 0iv/ rSnUky[3>ss䵷K05 eo\k,eR=ͪ_ AW>ۣѻa`.hgo7Yk̦sC46vSd+Fl % y!UǥT }xɤ K,ò3O!wqI̗ 'ƴvG \)=W t4Seu'~]24e% ZL]"X,D]j)hf$*6s&RS&]Z,603nF((UBҡ)1_l;b(:5f33v=LF6Ԁ !Ǘ#fMߤ(dg͞˾K)/m1 kX2d׎h[-_f#-_>4y6zD3ɩe#ZD&_^b+{wرJwhVfiǀo#YWPjt6V lkڈ$~l!( ||`*< _U]_a0.m_S-Py:HT5MǏg|]:R+G[; c^|(TB…bvv Z{9 6}m,K}k3Fk l·sW/7ؤ_3㜹ӴyS9IsLMK $kQq.F7 [W?M&R;:bCf{/ #@m6Q _d %;qSkWK4zcS*X_@_xPGj_D3,�!A1 y_SBR\P)JUm#?Lyw"&H0ΡaHM%5'j>oEXpαخInf(JbèX5Z`Xsqd er_toGqo?="""".Gt6!w{!vs7Mܹ>75dؚnI27;~r˥n9_'Fù7"t(E1ܲHNFv9*;\z3љvF3ѐEeAZZ(aSвm]C%/iuPx%3 Qx ޢ5Z܋D}(%G#Ұ�a |G7B}0#<1˄[rU4rMy_I/亨tp_FTMQaD 6^o:G;$MX3SQ=A \?nx|ZG%_a#eP'vqp\XPWZ E+L=w'(a[! Ϸe9R G9B I-\? ݎOM%#R `i.C+\ He#/ ڷ1O}c񺅚c^iCjư` { $f}tʥpV W])v�MNĉ֚|ODOt4ZS5LN̊ -^kYVZa` ` Z Є4x֨ dómXdCp[-j lrk&GvWcԐ9B9=s$Ιp*ɺE/=: ; oP$ -XR:ݪ|p{Ev}Xܭ' Z[WJ֦3C}yQV: 7)=@yD] 6&ca2*)[T.m2 -S"gpu r9Oq䖳!4棾� bA_7ϖѐ4I,FD+XD{N T\*\MX f˛N6n m?ӈɩe wS=Y+pT^~Jվ1 tgtx䛄Z.40G2@dYGhHm:T}GZH$DIK:̷d�09{V~;b6A 9-YI:OH�@ l0B+ 'J@tGخ2jwGKb~wc;:M0F&zzouj >"Opa4Y{/#:Eݙ{c[^5:F@V.dV6q?4>_C8ձә79)`,(8v^Is۰N Ԍ^Jj$[N:G<g2Yչs8mik Em ֝bSȠO�DU>FL#>@}E&RM\;4JےK64rb6mC2! wd-T)\�M+Vd Hĺ+7|ٞ;=?}v -s6P/-Ʋbx2QC7T^?vZ)&!W*Z:)QLiAݖ«olpQr\f3ؗQX x-(BщNS3B(^ވ�#$o!Y E= 7](MsbA2@/G^YE[M?R9 n &RnTWG]䉜PeFvP.fw�o-GԧLOz\%L++ t]y_91)na�!\ u_jxB0sTEl1<)[ s|gLA?ꍏ|F�O'[h\e2CU!Fp;5Ƣ^W[DWr\[-uu~" R=f>x_C,h}%s}`Dxa=yL5H0Yfϸ :$` Lœ"Y%H(O6&p? 9XxKȇYoaz/Sjʻ ]'yq�z}Q^6#X8F4[�5>LLkh5!)h ]SO-Rkۣ rvF|&p#K- va#ך{N 8-^1`H-:A99m9W{f/DV88`-9|͏spv;a qEEWq�LnjH$>I뵛Ҽ@>&KYnzC,vۡx@#LjB:q]RL5MJ mv{J<6̾ckZc5LLl |8붺,}M BTEcHolCW3L.7U5 kCD,5{ rK-au$ؐ~Awǵ9싛lLP&'{70<7M: ÐCvJF�}XE[qrIWF/sE{CŴ 6Q?\'$jR6ރF+¾oPВ(1DLN-} PBcowQYu.lxW} 뺥MV niEm2J4nmVcLޥZTjuJ�5w"tQ*n]K% xۨR4@[@ +fm{Іʴ.:tG!d?T_X0\;Ds$ c%7p/0,pM7*؇X�wygT6tTU!+gK !P~:su.t( L1)bYDf-%^+g>z>{bqݒ<w6uK|NPեqAppM`Nij4j Mؚ:F/_+r L]jTu2x8fM*¾R7kOrs"x:f@Uj|٥^/"B;UUZ3PP/n։_buV7ȳ{ׅbtWKGSU'1p[f.z.I>'TI5'ۯkxr*%0ԏJt +.:Lz Ҥ43Pe@mOf;ϧ[f Al'tU1?9bG7bſr3k[YLPO׋`7y)9 ?}[ncS+6Bu,GO"zơ!|ļӛюZ-Ƈ~)x#itaFrJ;AB卒A] ;\D,մM޼VEC;a }Uq[[88`=.&TKR Jo4W^%1rxԲ!4=@+VI:oyfMk {G�;۬ec +1\`}Oû OY>Oc?rz}p˼g|ksC sbY2cnYQ"yS<,To:wtzGH*B(uevŔգF%`.!+R BFF[O2a(7c;J6PĹYE@}EN jܱ"~\ek朚*m6mh56q3*bj.?fa?9P#Z%s0u6IZn}x8-QlSb ~ֺْ&\0oʒ!6lA[=N,M\tbB-y(t)- *'4:1^lz͝Ka,a3)`O_V|<\@:%8C0|pb;DD5\UX /l2^m.wlys-K4F\y5|/\uQ-4pZ7ڪ`BZc@F0^KOC( GO1V"+&T+~D,k>iaNoԂb,` x#PMh;LtV'2+'6kl~"wH?Ad G]y/�$kU'pKɎJ\[o|;ِ``d<萱'FQa|y iɂA5Q*ߝa4+ux֢Z(�PXC�g>X;^" [SHC$ AX_iyIj-]ec' `ÚT`Rts=uh%!#|DnN ࿲$IWZtV<8 Z:?ߑ{kvUPaA+N.~V|\b>7ZaT G}"+`Z瘚1e2CMJ(f@m)v>>:z+ _x̓FAlc{K*9Y6W o, Qoׂ4r(:Ũ@pJ]G0H9FL*Xr;{1a@b^cbsn|7Uݴ\ %T?S+947LB_..,ch"e\qeSpQFg#Ԯ:z[9\9hHS̒D!ꯘw3d5_ź'xa04~FQP:Cv:2$W)%1xծڪ{' {hRe |bIj໿jp;AxW*.4> 6Alm!t{ '*=͛T`q7OnZv.Wo;KrgV^-R%%[ejMz <] Wmhժoxswiաz`8fWlܤtD28wcB"6: j7_id` YNZQWVTFpt:sJ70g7@YNPrMfXL/qZeJjᴲU Rˡfg] v2[["RI1R `\Y HQ)hAN2x(D2wnDBŧ BRI֎])O mPmbΠz{kz?#|iJ%]ϰ3QŶbUnX - Nk.?s˒{Ș3,m$.3 ԪnنY D,dSMtE-A95:H?}U96a{F tbzWWޯ`׵Ͻ՗p~1* +XuUr-mV5Ow72eL~}+ŔoF\ӷ" slr4ri~SxwVmpM@ϫݳK&^c>P:sZHR*AiLC ~K npQ\vԮ]Ƀ }�"3<Änl.襸18{…Own {Π{9L]٘"I?aTS`[a6ߦ=w Y`#7JAWuV"#EdmQ+0~$4[{ɧ!K&&/Tgq5"gx(p߰;Z~{h+0s?ڡ0f+v';2ZN]%u ;|d(+zA-,An@L9S""GoE ]9=8]Тnmg)GE:0(meD!a?zJ~G o` YL;5PhmAwPC28VDWhQ:ea$Z*bvrç@՗ ovFL8ja*+87n1DH'_S|xb! vki�mKQqfw׏Z٧ 0BF԰)|GFĕh+Oytk 0oCL+f+\ɡ3}I  S4nW>+"-g4m2ao`5[Fx^4 + D[t,_}9ȯEs [B숎H"MX:2 7LJ1t1)[~o|?[M'ʔ:s.m 'V mni4E% xd6]}8ޅ]rbSX# R,\MFsmM,sŪIe}β;~QgEB׫ b and 0 if a == b. // Note that the Collator is not thread safe, so you may want // to acquire a lock on it before calling this method. func (c *Collator) CompareStrings(a, b string) int { return c.c.CompareString(a, b) } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/langs/language_test.go��������������������������������������������������������0000664�0000000�0000000�00000003441�15076715745�0021415�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2018 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package langs import ( "sync" "testing" qt "github.com/frankban/quicktest" "golang.org/x/text/collate" "golang.org/x/text/language" ) func TestCollator(t *testing.T) { c := qt.New(t) var wg sync.WaitGroup coll := &Collator{c: collate.New(language.English, collate.Loose)} for range 10 { wg.Add(1) go func() { coll.Lock() defer coll.Unlock() defer wg.Done() for range 10 { k := coll.CompareStrings("abc", "def") c.Assert(k, qt.Equals, -1) } }() } wg.Wait() } func BenchmarkCollator(b *testing.B) { s := []string{"foo", "bar", "éntre", "baz", "qux", "quux", "corge", "grault", "garply", "waldo", "fred", "plugh", "xyzzy", "thud"} doWork := func(coll *Collator) { for i := range s { for j := i + 1; j < len(s); j++ { _ = coll.CompareStrings(s[i], s[j]) } } } b.Run("Single", func(b *testing.B) { coll := &Collator{c: collate.New(language.English, collate.Loose)} for i := 0; i < b.N; i++ { doWork(coll) } }) b.Run("Para", func(b *testing.B) { b.RunParallel(func(pb *testing.PB) { coll := &Collator{c: collate.New(language.English, collate.Loose)} for pb.Next() { coll.Lock() doWork(coll) coll.Unlock() } }) }) } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/lazy/�������������������������������������������������������������������������0000775�0000000�0000000�00000000000�15076715745�0016115�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/lazy/init.go������������������������������������������������������������������0000664�0000000�0000000�00000011446�15076715745�0017415�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package lazy import ( "context" "errors" "sync" "sync/atomic" "time" ) // New creates a new empty Init. func New() *Init { return &Init{} } // Init holds a graph of lazily initialized dependencies. type Init struct { // Used mainly for testing. initCount uint64 mu sync.Mutex prev *Init children []*Init init OnceMore out any err error f func(context.Context) (any, error) } // Add adds a func as a new child dependency. func (ini *Init) Add(initFn func(context.Context) (any, error)) *Init { if ini == nil { ini = New() } return ini.add(false, initFn) } // InitCount gets the number of this this Init has been initialized. func (ini *Init) InitCount() int { i := atomic.LoadUint64(&ini.initCount) return int(i) } // AddWithTimeout is same as Add, but with a timeout that aborts initialization. func (ini *Init) AddWithTimeout(timeout time.Duration, f func(ctx context.Context) (any, error)) *Init { return ini.Add(func(ctx context.Context) (any, error) { return ini.withTimeout(ctx, timeout, f) }) } // Branch creates a new dependency branch based on an existing and adds // the given dependency as a child. func (ini *Init) Branch(initFn func(context.Context) (any, error)) *Init { if ini == nil { ini = New() } return ini.add(true, initFn) } // BranchWithTimeout is same as Branch, but with a timeout. func (ini *Init) BranchWithTimeout(timeout time.Duration, f func(ctx context.Context) (any, error)) *Init { return ini.Branch(func(ctx context.Context) (any, error) { return ini.withTimeout(ctx, timeout, f) }) } // Do initializes the entire dependency graph. func (ini *Init) Do(ctx context.Context) (any, error) { if ini == nil { panic("init is nil") } ini.init.Do(func() { atomic.AddUint64(&ini.initCount, 1) prev := ini.prev if prev != nil { // A branch. Initialize the ancestors. if prev.shouldInitialize() { _, err := prev.Do(ctx) if err != nil { ini.err = err return } } else if prev.inProgress() { // Concurrent initialization. The following init func // may depend on earlier state, so wait. prev.wait() } } if ini.f != nil { ini.out, ini.err = ini.f(ctx) } for _, child := range ini.children { if child.shouldInitialize() { _, err := child.Do(ctx) if err != nil { ini.err = err return } } } }) ini.wait() return ini.out, ini.err } // TODO(bep) investigate if we can use sync.Cond for this. func (ini *Init) wait() { var counter time.Duration for !ini.init.Done() { counter += 10 if counter > 600000000 { panic("BUG: timed out in lazy init") } time.Sleep(counter * time.Microsecond) } } func (ini *Init) inProgress() bool { return ini != nil && ini.init.InProgress() } func (ini *Init) shouldInitialize() bool { return !(ini == nil || ini.init.Done() || ini.init.InProgress()) } // Reset resets the current and all its dependencies. func (ini *Init) Reset() { mu := ini.init.ResetWithLock() ini.err = nil defer mu.Unlock() for _, d := range ini.children { d.Reset() } } func (ini *Init) add(branch bool, initFn func(context.Context) (any, error)) *Init { ini.mu.Lock() defer ini.mu.Unlock() if branch { return &Init{ f: initFn, prev: ini, } } ini.checkDone() ini.children = append(ini.children, &Init{ f: initFn, }) return ini } func (ini *Init) checkDone() { if ini.init.Done() { panic("init cannot be added to after it has run") } } func (ini *Init) withTimeout(ctx context.Context, timeout time.Duration, f func(ctx context.Context) (any, error)) (any, error) { // Create a new context with a timeout not connected to the incoming context. waitCtx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() c := make(chan verr, 1) go func() { v, err := f(ctx) select { case <-waitCtx.Done(): return default: c <- verr{v: v, err: err} } }() select { case <-waitCtx.Done(): //lint:ignore ST1005 end user message. return nil, errors.New("timed out initializing value. You may have a circular loop in a shortcode, or your site may have resources that take longer to build than the `timeout` limit in your Hugo config file.") case ve := <-c: return ve.v, ve.err } } type verr struct { v any err error } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/lazy/init_test.go�������������������������������������������������������������0000664�0000000�0000000�00000011043�15076715745�0020445�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package lazy import ( "context" "errors" "math/rand" "strings" "sync" "testing" "time" qt "github.com/frankban/quicktest" ) var ( rnd = rand.New(rand.NewSource(time.Now().UnixNano())) bigOrSmall = func() int { if rnd.Intn(10) < 5 { return 10000 + rnd.Intn(100000) } return 1 + rnd.Intn(50) } ) func doWork() { doWorkOfSize(bigOrSmall()) } func doWorkOfSize(size int) { _ = strings.Repeat("Hugo Rocks! ", size) } func TestInit(t *testing.T) { c := qt.New(t) var result string f1 := func(name string) func(context.Context) (any, error) { return func(context.Context) (any, error) { result += name + "|" doWork() return name, nil } } f2 := func() func(context.Context) (any, error) { return func(context.Context) (any, error) { doWork() return nil, nil } } root := New() root.Add(f1("root(1)")) root.Add(f1("root(2)")) branch1 := root.Branch(f1("branch_1")) branch1.Add(f1("branch_1_1")) branch1_2 := branch1.Add(f1("branch_1_2")) branch1_2_1 := branch1_2.Add(f1("branch_1_2_1")) var wg sync.WaitGroup ctx := context.Background() // Add some concurrency and randomness to verify thread safety and // init order. for i := range 100 { wg.Add(1) go func(i int) { defer wg.Done() var err error if rnd.Intn(10) < 5 { _, err = root.Do(ctx) c.Assert(err, qt.IsNil) } // Add a new branch on the fly. if rnd.Intn(10) > 5 { branch := branch1_2.Branch(f2()) _, err = branch.Do(ctx) c.Assert(err, qt.IsNil) } else { _, err = branch1_2_1.Do(ctx) c.Assert(err, qt.IsNil) } _, err = branch1_2.Do(ctx) c.Assert(err, qt.IsNil) }(i) wg.Wait() c.Assert(result, qt.Equals, "root(1)|root(2)|branch_1|branch_1_1|branch_1_2|branch_1_2_1|") } } func TestInitAddWithTimeout(t *testing.T) { c := qt.New(t) init := New().AddWithTimeout(100*time.Millisecond, func(ctx context.Context) (any, error) { return nil, nil }) _, err := init.Do(context.Background()) c.Assert(err, qt.IsNil) } func TestInitAddWithTimeoutTimeout(t *testing.T) { c := qt.New(t) init := New().AddWithTimeout(100*time.Millisecond, func(ctx context.Context) (any, error) { time.Sleep(500 * time.Millisecond) return nil, nil }) _, err := init.Do(context.Background()) c.Assert(err, qt.Not(qt.IsNil)) c.Assert(err.Error(), qt.Contains, "timed out") time.Sleep(1 * time.Second) } func TestInitAddWithTimeoutError(t *testing.T) { c := qt.New(t) init := New().AddWithTimeout(100*time.Millisecond, func(ctx context.Context) (any, error) { return nil, errors.New("failed") }) _, err := init.Do(context.Background()) c.Assert(err, qt.Not(qt.IsNil)) } type T struct { sync.Mutex V1 string V2 string } func (t *T) Add1(v string) { t.Lock() t.V1 += v t.Unlock() } func (t *T) Add2(v string) { t.Lock() t.V2 += v t.Unlock() } // https://github.com/gohugoio/hugo/issues/5901 func TestInitBranchOrder(t *testing.T) { c := qt.New(t) base := New() work := func(size int, f func()) func(context.Context) (any, error) { return func(context.Context) (any, error) { doWorkOfSize(size) if f != nil { f() } return nil, nil } } state := &T{} base = base.Add(work(10000, func() { state.Add1("A") })) inits := make([]*Init, 2) for i := range inits { inits[i] = base.Branch(work(i+1*100, func() { // V1 is A ab := state.V1 + "B" state.Add2(ab) })) } var wg sync.WaitGroup ctx := context.Background() for _, v := range inits { v := v wg.Add(1) go func() { defer wg.Done() _, err := v.Do(ctx) c.Assert(err, qt.IsNil) }() } wg.Wait() c.Assert(state.V2, qt.Equals, "ABAB") } // See issue 7043 func TestResetError(t *testing.T) { c := qt.New(t) r := false i := New().Add(func(context.Context) (any, error) { if r { return nil, nil } return nil, errors.New("r is false") }) _, err := i.Do(context.Background()) c.Assert(err, qt.IsNotNil) i.Reset() r = true _, err = i.Do(context.Background()) c.Assert(err, qt.IsNil) } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/lazy/once.go������������������������������������������������������������������0000664�0000000�0000000�00000003045�15076715745�0017372�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package lazy import ( "sync" "sync/atomic" ) // OnceMore is similar to sync.Once. // // Additional features are: // * it can be reset, so the action can be repeated if needed // * it has methods to check if it's done or in progress type OnceMore struct { mu sync.Mutex lock uint32 done uint32 } func (t *OnceMore) Do(f func()) { if atomic.LoadUint32(&t.done) == 1 { return } // f may call this Do and we would get a deadlock. locked := atomic.CompareAndSwapUint32(&t.lock, 0, 1) if !locked { return } defer atomic.StoreUint32(&t.lock, 0) t.mu.Lock() defer t.mu.Unlock() // Double check if t.done == 1 { return } defer atomic.StoreUint32(&t.done, 1) f() } func (t *OnceMore) InProgress() bool { return atomic.LoadUint32(&t.lock) == 1 } func (t *OnceMore) Done() bool { return atomic.LoadUint32(&t.done) == 1 } func (t *OnceMore) ResetWithLock() *sync.Mutex { t.mu.Lock() defer atomic.StoreUint32(&t.done, 0) return &t.mu } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/livereload/�������������������������������������������������������������������0000775�0000000�0000000�00000000000�15076715745�0017264�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/livereload/connection.go������������������������������������������������������0000664�0000000�0000000�00000003055�15076715745�0021755�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2015 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package livereload import ( "bytes" "sync" "github.com/gorilla/websocket" ) type connection struct { // The websocket connection. ws *websocket.Conn // Buffered channel of outbound messages. send chan []byte // There is a potential data race, especially visible with large files. // This is protected by synchronization of the send channel's close. closer sync.Once } func (c *connection) close() { c.closer.Do(func() { close(c.send) }) } func (c *connection) reader() { for { _, message, err := c.ws.ReadMessage() if err != nil { break } if bytes.Contains(message, []byte(`"command":"hello"`)) { c.send <- []byte(`{ "command": "hello", "protocols": [ "http://livereload.com/protocols/official-7" ], "serverName": "Hugo" }`) } } c.ws.Close() } func (c *connection) writer() { for message := range c.send { err := c.ws.WriteMessage(websocket.TextMessage, message) if err != nil { break } } c.ws.Close() } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/livereload/gen/���������������������������������������������������������������0000775�0000000�0000000�00000000000�15076715745�0020035�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/livereload/gen/livereload-hugo-plugin.js��������������������������������������0000664�0000000�0000000�00000001504�15076715745�0024755�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Hugo adds a specific prefix, "__hugo_navigate", to the path in certain situations to signal navigation to another content page. */ function HugoReload() {} HugoReload.identifier = 'hugoReloader'; HugoReload.version = '0.9'; HugoReload.prototype.reload = function (path, options) { var prefix = '__hugo_navigate'; if (path.lastIndexOf(prefix, 0) !== 0) { return false; } path = path.substring(prefix.length); var portChanged = options.overrideURL && options.overrideURL != window.location.port; if (!portChanged && window.location.pathname === path) { window.location.reload(); } else { if (portChanged) { window.location = location.protocol + '//' + location.hostname + ':' + options.overrideURL + path; } else { window.location.pathname = path; } } return true; }; LiveReload.addPlugin(HugoReload); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/livereload/gen/main.go��������������������������������������������������������0000664�0000000�0000000�00000002513�15076715745�0021311�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//go:generate go run main.go package main import ( _ "embed" "fmt" "io" "log" "net/http" "os" "github.com/evanw/esbuild/pkg/api" ) //go:embed livereload-hugo-plugin.js var livereloadHugoPluginJS string func main() { // 4.0.2 // To upgrade to a new version, change to the commit hash of the version you want to upgrade to // then run mage generate from the root. const liveReloadCommit = "d803a41804d2d71e0814c4e9e3233e78991024d9" liveReloadSourceURL := fmt.Sprintf("https://raw.githubusercontent.com/livereload/livereload-js/%s/dist/livereload.js", liveReloadCommit) func() { resp, err := http.Get(liveReloadSourceURL) must(err) defer resp.Body.Close() b, err := io.ReadAll(resp.Body) must(err) // Write the unminified livereload.js file. err = os.WriteFile("../livereload.js", b, 0o644) must(err) // Bundle and minify with ESBuild. result := api.Build(api.BuildOptions{ Stdin: &api.StdinOptions{ Contents: string(b) + livereloadHugoPluginJS, }, Outfile: "../livereload.min.js", Bundle: true, Target: api.ES2015, Write: true, MinifyWhitespace: true, MinifyIdentifiers: true, MinifySyntax: true, }) if len(result.Errors) > 0 { log.Fatal(result.Errors) } }() } func must(err error) { if err != nil { log.Fatal(err) } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/livereload/hub.go�������������������������������������������������������������0000664�0000000�0000000�00000002626�15076715745�0020377�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2015 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package livereload type hub struct { // Registered connections. connections map[*connection]bool // Inbound messages from the connections. broadcast chan []byte // Register requests from the connections. register chan *connection // Unregister requests from connections. unregister chan *connection } var wsHub = hub{ broadcast: make(chan []byte), register: make(chan *connection), unregister: make(chan *connection), connections: make(map[*connection]bool), } func (h *hub) run() { for { select { case c := <-h.register: h.connections[c] = true case c := <-h.unregister: delete(h.connections, c) c.close() case m := <-h.broadcast: for c := range h.connections { select { case c.send <- m: default: delete(h.connections, c) c.close() } } } } } ����������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/livereload/livereload.go������������������������������������������������������0000664�0000000�0000000�00000011100�15076715745�0021732�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Contains an embedded version of livereload.js // // Copyright (c) 2010-2015 Andrey Tarantsov // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. package livereload import ( "fmt" "net" "net/http" "net/url" "path/filepath" _ "embed" "github.com/gohugoio/hugo/media" "github.com/gorilla/websocket" ) // Prefix to signal to LiveReload that we need to navigate to another path. // Do not change this. const hugoNavigatePrefix = "__hugo_navigate" var upgrader = &websocket.Upgrader{ // Hugo may potentially spin up multiple HTTP servers, so we need to exclude the // port when checking the origin. CheckOrigin: func(r *http.Request) bool { origin := r.Header["Origin"] if len(origin) == 0 { return true } u, err := url.Parse(origin[0]) if err != nil { return false } rHost := r.Host // For Github codespace in browser #9936 if forwardedHost := r.Header.Get("X-Forwarded-Host"); forwardedHost != "" { rHost = forwardedHost } if u.Host == rHost { return true } h1, _, err := net.SplitHostPort(u.Host) if err != nil { return false } h2, _, err := net.SplitHostPort(r.Host) if err != nil { return false } return h1 == h2 }, ReadBufferSize: 1024, WriteBufferSize: 1024, } // Handler is a HandlerFunc handling the livereload // Websocket interaction. func Handler(w http.ResponseWriter, r *http.Request) { ws, err := upgrader.Upgrade(w, r, nil) if err != nil { return } c := &connection{send: make(chan []byte, 256), ws: ws} wsHub.register <- c defer func() { wsHub.unregister <- c }() go c.writer() c.reader() } // Initialize starts the Websocket Hub handling live reloads. func Initialize() { go wsHub.run() } // ForceRefresh tells livereload to force a hard refresh. func ForceRefresh() { RefreshPath("/x.js") } // NavigateToPathForPort is similar to NavigateToPath but will also // set window.location.port to the given port value. func NavigateToPathForPort(path string, port int) { refreshPathForPort(hugoNavigatePrefix+path, port) } // RefreshPath tells livereload to refresh only the given path. // If that path points to a CSS stylesheet or an image, only the changes // will be updated in the browser, not the entire page. func RefreshPath(s string) { refreshPathForPort(s, -1) } func refreshPathForPort(s string, port int) { // Tell livereload a file has changed - will force a hard refresh if not CSS or an image urlPath := filepath.ToSlash(s) portStr := "" if port > 0 { portStr = fmt.Sprintf(`, "overrideURL": %d`, port) } msg := fmt.Sprintf(`{"command":"reload","path":%q,"originalPath":"","liveCSS":true,"liveImg":true%s}`, urlPath, portStr) wsHub.broadcast <- []byte(msg) } // ServeJS serves the livereload.js who's reference is injected into the page. func ServeJS(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", media.Builtin.JavascriptType.Type) w.Write(liveReloadJS()) } func liveReloadJS() []byte { return []byte(livereloadJS) } //go:embed livereload.min.js var livereloadJS string ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gohugoio-hugo-6abdaca/livereload/livereload.js������������������������������������������������������0000664�0000000�0000000�00000460162�15076715745�0021761�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i Array#indexOf // true -> Array#includes var toIObject = require('./_to-iobject'); var toLength = require('./_to-length'); var toAbsoluteIndex = require('./_to-absolute-index'); module.exports = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) if (IS_INCLUDES || index in O) { if (O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; },{"./_to-absolute-index":72,"./_to-iobject":74,"./_to-length":75}],6:[function(require,module,exports){ // 0 -> Array#forEach // 1 -> Array#map // 2 -> Array#filter // 3 -> Array#some // 4 -> Array#every // 5 -> Array#find // 6 -> Array#findIndex var ctx = require('./_ctx'); var IObject = require('./_iobject'); var toObject = require('./_to-object'); var toLength = require('./_to-length'); var asc = require('./_array-species-create'); module.exports = function (TYPE, $create) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; var IS_EVERY = TYPE == 4; var IS_FIND_INDEX = TYPE == 6; var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; var create = $create || asc; return function ($this, callbackfn, that) { var O = toObject($this); var self = IObject(O); var f = ctx(callbackfn, that, 3); var length = toLength(self.length); var index = 0; var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; var val, res; for (;length > index; index++) if (NO_HOLES || index in self) { val = self[index]; res = f(val, index, O); if (TYPE) { if (IS_MAP) result[index] = res; // map else if (res) switch (TYPE) { case 3: return true; // some case 5: return val; // find case 6: return index; // findIndex case 2: result.push(val); // filter } else if (IS_EVERY) return false; // every } } return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; }; }; },{"./_array-species-create":8,"./_ctx":13,"./_iobject":31,"./_to-length":75,"./_to-object":76}],7:[function(require,module,exports){ var isObject = require('./_is-object'); var isArray = require('./_is-array'); var SPECIES = require('./_wks')('species'); module.exports = function (original) { var C; if (isArray(original)) { C = original.constructor; // cross-realm fallback if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; if (isObject(C)) { C = C[SPECIES]; if (C === null) C = undefined; } } return C === undefined ? Array : C; }; },{"./_is-array":33,"./_is-object":34,"./_wks":81}],8:[function(require,module,exports){ // 9.4.2.3 ArraySpeciesCreate(originalArray, length) var speciesConstructor = require('./_array-species-constructor'); module.exports = function (original, length) { return new (speciesConstructor(original))(length); }; },{"./_array-species-constructor":7}],9:[function(require,module,exports){ // getting tag from 19.1.3.6 Object.prototype.toString() var cof = require('./_cof'); var TAG = require('./_wks')('toStringTag'); // ES3 wrong here var ARG = cof(function () { return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function (it, key) { try { return it[key]; } catch (e) { /* empty */ } }; module.exports = function (it) { var O, T, B; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T // builtinTag case : ARG ? cof(O) // ES3 arguments fallback : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; }; },{"./_cof":10,"./_wks":81}],10:[function(require,module,exports){ var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; },{}],11:[function(require,module,exports){ var core = module.exports = { version: '2.6.12' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef },{}],12:[function(require,module,exports){ 'use strict'; var $defineProperty = require('./_object-dp'); var createDesc = require('./_property-desc'); module.exports = function (object, index, value) { if (index in object) $defineProperty.f(object, index, createDesc(0, value)); else object[index] = value; }; },{"./_object-dp":45,"./_property-desc":57}],13:[function(require,module,exports){ // optional / simple context binding var aFunction = require('./_a-function'); module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function (/* ...args */) { return fn.apply(that, arguments); }; }; },{"./_a-function":1}],14:[function(require,module,exports){ // 7.2.1 RequireObjectCoercible(argument) module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; },{}],15:[function(require,module,exports){ // Thank's IE8 for his funny defineProperty module.exports = !require('./_fails')(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); },{"./_fails":21}],16:[function(require,module,exports){ var isObject = require('./_is-object'); var document = require('./_global').document; // typeof document.createElement is 'object' in old IE var is = isObject(document) && isObject(document.createElement); module.exports = function (it) { return is ? document.createElement(it) : {}; }; },{"./_global":25,"./_is-object":34}],17:[function(require,module,exports){ // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); },{}],18:[function(require,module,exports){ // all enumerable object keys, includes symbols var getKeys = require('./_object-keys'); var gOPS = require('./_object-gops'); var pIE = require('./_object-pie'); module.exports = function (it) { var result = getKeys(it); var getSymbols = gOPS.f; if (getSymbols) { var symbols = getSymbols(it); var isEnum = pIE.f; var i = 0; var key; while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); } return result; }; },{"./_object-gops":50,"./_object-keys":53,"./_object-pie":54}],19:[function(require,module,exports){ var global = require('./_global'); var core = require('./_core'); var hide = require('./_hide'); var redefine = require('./_redefine'); var ctx = require('./_ctx'); var PROTOTYPE = 'prototype'; var $export = function (type, name, source) { var IS_FORCED = type & $export.F; var IS_GLOBAL = type & $export.G; var IS_STATIC = type & $export.S; var IS_PROTO = type & $export.P; var IS_BIND = type & $export.B; var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); var key, own, out, exp; if (IS_GLOBAL) source = name; for (key in source) { // contains in native own = !IS_FORCED && target && target[key] !== undefined; // export native or passed out = (own ? target : source)[key]; // bind timers to global for call from export context exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // extend global if (target) redefine(target, key, out, type & $export.U); // export if (exports[key] != out) hide(exports, key, exp); if (IS_PROTO && expProto[key] != out) expProto[key] = out; } }; global.core = core; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; },{"./_core":11,"./_ctx":13,"./_global":25,"./_hide":27,"./_redefine":58}],20:[function(require,module,exports){ var MATCH = require('./_wks')('match'); module.exports = function (KEY) { var re = /./; try { '/./'[KEY](re); } catch (e) { try { re[MATCH] = false; return !'/./'[KEY](re); } catch (f) { /* empty */ } } return true; }; },{"./_wks":81}],21:[function(require,module,exports){ module.exports = function (exec) { try { return !!exec(); } catch (e) { return true; } }; },{}],22:[function(require,module,exports){ 'use strict'; require('./es6.regexp.exec'); var redefine = require('./_redefine'); var hide = require('./_hide'); var fails = require('./_fails'); var defined = require('./_defined'); var wks = require('./_wks'); var regexpExec = require('./_regexp-exec'); var SPECIES = wks('species'); var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { // #replace needs built-in support for named groups. // #match works fine because it just return the exec results, even if it has // a "grops" property. var re = /./; re.exec = function () { var result = []; result.groups = { a: '7' }; return result; }; return ''.replace(re, '$') !== '7'; }); var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec var re = /(?:)/; var originalExec = re.exec; re.exec = function () { return originalExec.apply(this, arguments); }; var result = 'ab'.split(re); return result.length === 2 && result[0] === 'a' && result[1] === 'b'; })(); module.exports = function (KEY, length, exec) { var SYMBOL = wks(KEY); var DELEGATES_TO_SYMBOL = !fails(function () { // String methods call symbol-named RegEp methods var O = {}; O[SYMBOL] = function () { return 7; }; return ''[KEY](O) != 7; }); var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { // Symbol-named RegExp methods call .exec var execCalled = false; var re = /a/; re.exec = function () { execCalled = true; return null; }; if (KEY === 'split') { // RegExp[@@split] doesn't call the regex's exec method, but first creates // a new one. We need to return the patched regex when creating the new one. re.constructor = {}; re.constructor[SPECIES] = function () { return re; }; } re[SYMBOL](''); return !execCalled; }) : undefined; if ( !DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) ) { var nativeRegExpMethod = /./[SYMBOL]; var fns = exec( defined, SYMBOL, ''[KEY], function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { if (regexp.exec === regexpExec) { if (DELEGATES_TO_SYMBOL && !forceStringMethod) { // The native String method already delegates to @@method (this // polyfilled function), leasing to infinite recursion. // We avoid it by directly calling the native @@method method. return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; } return { done: true, value: nativeMethod.call(str, regexp, arg2) }; } return { done: false }; } ); var strfn = fns[0]; var rxfn = fns[1]; redefine(String.prototype, KEY, strfn); hide(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) // 21.2.5.11 RegExp.prototype[@@split](string, limit) ? function (string, arg) { return rxfn.call(string, this, arg); } // 21.2.5.6 RegExp.prototype[@@match](string) // 21.2.5.9 RegExp.prototype[@@search](string) : function (string) { return rxfn.call(string, this); } ); } }; },{"./_defined":14,"./_fails":21,"./_hide":27,"./_redefine":58,"./_regexp-exec":60,"./_wks":81,"./es6.regexp.exec":93}],23:[function(require,module,exports){ 'use strict'; // 21.2.5.3 get RegExp.prototype.flags var anObject = require('./_an-object'); module.exports = function () { var that = anObject(this); var result = ''; if (that.global) result += 'g'; if (that.ignoreCase) result += 'i'; if (that.multiline) result += 'm'; if (that.unicode) result += 'u'; if (that.sticky) result += 'y'; return result; }; },{"./_an-object":4}],24:[function(require,module,exports){ module.exports = require('./_shared')('native-function-to-string', Function.toString); },{"./_shared":65}],25:[function(require,module,exports){ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self // eslint-disable-next-line no-new-func : Function('return this')(); if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef },{}],26:[function(require,module,exports){ var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; },{}],27:[function(require,module,exports){ var dP = require('./_object-dp'); var createDesc = require('./_property-desc'); module.exports = require('./_descriptors') ? function (object, key, value) { return dP.f(object, key, createDesc(1, value)); } : function (object, key, value) { object[key] = value; return object; }; },{"./_descriptors":15,"./_object-dp":45,"./_property-desc":57}],28:[function(require,module,exports){ var document = require('./_global').document; module.exports = document && document.documentElement; },{"./_global":25}],29:[function(require,module,exports){ module.exports = !require('./_descriptors') && !require('./_fails')(function () { return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7; }); },{"./_descriptors":15,"./_dom-create":16,"./_fails":21}],30:[function(require,module,exports){ var isObject = require('./_is-object'); var setPrototypeOf = require('./_set-proto').set; module.exports = function (that, target, C) { var S = target.constructor; var P; if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { setPrototypeOf(that, P); } return that; }; },{"./_is-object":34,"./_set-proto":61}],31:[function(require,module,exports){ // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = require('./_cof'); // eslint-disable-next-line no-prototype-builtins module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return cof(it) == 'String' ? it.split('') : Object(it); }; },{"./_cof":10}],32:[function(require,module,exports){ // check on default Array iterator var Iterators = require('./_iterators'); var ITERATOR = require('./_wks')('iterator'); var ArrayProto = Array.prototype; module.exports = function (it) { return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); }; },{"./_iterators":41,"./_wks":81}],33:[function(require,module,exports){ // 7.2.2 IsArray(argument) var cof = require('./_cof'); module.exports = Array.isArray || function isArray(arg) { return cof(arg) == 'Array'; }; },{"./_cof":10}],34:[function(require,module,exports){ module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; },{}],35:[function(require,module,exports){ // 7.2.8 IsRegExp(argument) var isObject = require('./_is-object'); var cof = require('./_cof'); var MATCH = require('./_wks')('match'); module.exports = function (it) { var isRegExp; return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); }; },{"./_cof":10,"./_is-object":34,"./_wks":81}],36:[function(require,module,exports){ // call something on iterator step with safe closing on error var anObject = require('./_an-object'); module.exports = function (iterator, fn, value, entries) { try { return entries ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) } catch (e) { var ret = iterator['return']; if (ret !== undefined) anObject(ret.call(iterator)); throw e; } }; },{"./_an-object":4}],37:[function(require,module,exports){ 'use strict'; var create = require('./_object-create'); var descriptor = require('./_property-desc'); var setToStringTag = require('./_set-to-string-tag'); var IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() require('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; }); module.exports = function (Constructor, NAME, next) { Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); setToStringTag(Constructor, NAME + ' Iterator'); }; },{"./_hide":27,"./_object-create":44,"./_property-desc":57,"./_set-to-string-tag":63,"./_wks":81}],38:[function(require,module,exports){ 'use strict'; var LIBRARY = require('./_library'); var $export = require('./_export'); var redefine = require('./_redefine'); var hide = require('./_hide'); var Iterators = require('./_iterators'); var $iterCreate = require('./_iter-create'); var setToStringTag = require('./_set-to-string-tag'); var getPrototypeOf = require('./_object-gpo'); var ITERATOR = require('./_wks')('iterator'); var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` var FF_ITERATOR = '@@iterator'; var KEYS = 'keys'; var VALUES = 'values'; var returnThis = function () { return this; }; module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { $iterCreate(Constructor, NAME, next); var getMethod = function (kind) { if (!BUGGY && kind in proto) return proto[kind]; switch (kind) { case KEYS: return function keys() { return new Constructor(this, kind); }; case VALUES: return function values() { return new Constructor(this, kind); }; } return function entries() { return new Constructor(this, kind); }; }; var TAG = NAME + ' Iterator'; var DEF_VALUES = DEFAULT == VALUES; var VALUES_BUG = false; var proto = Base.prototype; var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; var $default = $native || getMethod(DEFAULT); var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; var methods, key, IteratorPrototype; // Fix native if ($anyNative) { IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { // Set @@toStringTag to native iterators setToStringTag(IteratorPrototype, TAG, true); // fix for some old engines if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); } } // fix Array#{values, @@iterator}.name in V8 / FF if (DEF_VALUES && $native && $native.name !== VALUES) { VALUES_BUG = true; $default = function values() { return $native.call(this); }; } // Define iterator if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { hide(proto, ITERATOR, $default); } // Plug for library Iterators[NAME] = $default; Iterators[TAG] = returnThis; if (DEFAULT) { methods = { values: DEF_VALUES ? $default : getMethod(VALUES), keys: IS_SET ? $default : getMethod(KEYS), entries: $entries }; if (FORCED) for (key in methods) { if (!(key in proto)) redefine(proto, key, methods[key]); } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); } return methods; }; },{"./_export":19,"./_hide":27,"./_iter-create":37,"./_iterators":41,"./_library":42,"./_object-gpo":51,"./_redefine":58,"./_set-to-string-tag":63,"./_wks":81}],39:[function(require,module,exports){ var ITERATOR = require('./_wks')('iterator'); var SAFE_CLOSING = false; try { var riter = [7][ITERATOR](); riter['return'] = function () { SAFE_CLOSING = true; }; // eslint-disable-next-line no-throw-literal Array.from(riter, function () { throw 2; }); } catch (e) { /* empty */ } module.exports = function (exec, skipClosing) { if (!skipClosing && !SAFE_CLOSING) return false; var safe = false; try { var arr = [7]; var iter = arr[ITERATOR](); iter.next = function () { return { done: safe = true }; }; arr[ITERATOR] = function () { return iter; }; exec(arr); } catch (e) { /* empty */ } return safe; }; },{"./_wks":81}],40:[function(require,module,exports){ module.exports = function (done, value) { return { value: value, done: !!done }; }; },{}],41:[function(require,module,exports){ module.exports = {}; },{}],42:[function(require,module,exports){ module.exports = false; },{}],43:[function(require,module,exports){ var META = require('./_uid')('meta'); var isObject = require('./_is-object'); var has = require('./_has'); var setDesc = require('./_object-dp').f; var id = 0; var isExtensible = Object.isExtensible || function () { return true; }; var FREEZE = !require('./_fails')(function () { return isExtensible(Object.preventExtensions({})); }); var setMeta = function (it) { setDesc(it, META, { value: { i: 'O' + ++id, // object ID w: {} // weak collections IDs } }); }; var fastKey = function (it, create) { // return primitive with prefix if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if (!has(it, META)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return 'F'; // not necessary to add metadata if (!create) return 'E'; // add missing metadata setMeta(it); // return object ID } return it[META].i; }; var getWeak = function (it, create) { if (!has(it, META)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return true; // not necessary to add metadata if (!create) return false; // add missing metadata setMeta(it); // return hash weak collections IDs } return it[META].w; }; // add metadata on freeze-family methods calling var onFreeze = function (it) { if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); return it; }; var meta = module.exports = { KEY: META, NEED: false, fastKey: fastKey, getWeak: getWeak, onFreeze: onFreeze }; },{"./_fails":21,"./_has":26,"./_is-object":34,"./_object-dp":45,"./_uid":78}],44:[function(require,module,exports){ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) var anObject = require('./_an-object'); var dPs = require('./_object-dps'); var enumBugKeys = require('./_enum-bug-keys'); var IE_PROTO = require('./_shared-key')('IE_PROTO'); var Empty = function () { /* empty */ }; var PROTOTYPE = 'prototype'; // Create object with fake `null` prototype: use iframe Object with cleared prototype var createDict = function () { // Thrash, waste and sodomy: IE GC bug var iframe = require('./_dom-create')('iframe'); var i = enumBugKeys.length; var lt = '<'; var gt = '>'; var iframeDocument; iframe.style.display = 'none'; require('./_html').appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); iframeDocument.close(); createDict = iframeDocument.F; while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; return createDict(); }; module.exports = Object.create || function create(O, Properties) { var result; if (O !== null) { Empty[PROTOTYPE] = anObject(O); result = new Empty(); Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = createDict(); return Properties === undefined ? result : dPs(result, Properties); }; },{"./_an-object":4,"./_dom-create":16,"./_enum-bug-keys":17,"./_html":28,"./_object-dps":46,"./_shared-key":64}],45:[function(require,module,exports){ var anObject = require('./_an-object'); var IE8_DOM_DEFINE = require('./_ie8-dom-define'); var toPrimitive = require('./_to-primitive'); var dP = Object.defineProperty; exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return dP(O, P, Attributes); } catch (e) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; },{"./_an-object":4,"./_descriptors":15,"./_ie8-dom-define":29,"./_to-primitive":77}],46:[function(require,module,exports){ var dP = require('./_object-dp'); var anObject = require('./_an-object'); var getKeys = require('./_object-keys'); module.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = getKeys(Properties); var length = keys.length; var i = 0; var P; while (length > i) dP.f(O, P = keys[i++], Properties[P]); return O; }; },{"./_an-object":4,"./_descriptors":15,"./_object-dp":45,"./_object-keys":53}],47:[function(require,module,exports){ var pIE = require('./_object-pie'); var createDesc = require('./_property-desc'); var toIObject = require('./_to-iobject'); var toPrimitive = require('./_to-primitive'); var has = require('./_has'); var IE8_DOM_DEFINE = require('./_ie8-dom-define'); var gOPD = Object.getOwnPropertyDescriptor; exports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) { O = toIObject(O); P = toPrimitive(P, true); if (IE8_DOM_DEFINE) try { return gOPD(O, P); } catch (e) { /* empty */ } if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); }; },{"./_descriptors":15,"./_has":26,"./_ie8-dom-define":29,"./_object-pie":54,"./_property-desc":57,"./_to-iobject":74,"./_to-primitive":77}],48:[function(require,module,exports){ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window var toIObject = require('./_to-iobject'); var gOPN = require('./_object-gopn').f; var toString = {}.toString; var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; var getWindowNames = function (it) { try { return gOPN(it); } catch (e) { return windowNames.slice(); } }; module.exports.f = function getOwnPropertyNames(it) { return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); }; },{"./_object-gopn":49,"./_to-iobject":74}],49:[function(require,module,exports){ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) var $keys = require('./_object-keys-internal'); var hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype'); exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return $keys(O, hiddenKeys); }; },{"./_enum-bug-keys":17,"./_object-keys-internal":52}],50:[function(require,module,exports){ exports.f = Object.getOwnPropertySymbols; },{}],51:[function(require,module,exports){ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) var has = require('./_has'); var toObject = require('./_to-object'); var IE_PROTO = require('./_shared-key')('IE_PROTO'); var ObjectProto = Object.prototype; module.exports = Object.getPrototypeOf || function (O) { O = toObject(O); if (has(O, IE_PROTO)) return O[IE_PROTO]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; } return O instanceof Object ? ObjectProto : null; }; },{"./_has":26,"./_shared-key":64,"./_to-object":76}],52:[function(require,module,exports){ var has = require('./_has'); var toIObject = require('./_to-iobject'); var arrayIndexOf = require('./_array-includes')(false); var IE_PROTO = require('./_shared-key')('IE_PROTO'); module.exports = function (object, names) { var O = toIObject(object); var i = 0; var result = []; var key; for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { ~arrayIndexOf(result, key) || result.push(key); } return result; }; },{"./_array-includes":5,"./_has":26,"./_shared-key":64,"./_to-iobject":74}],53:[function(require,module,exports){ // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = require('./_object-keys-internal'); var enumBugKeys = require('./_enum-bug-keys'); module.exports = Object.keys || function keys(O) { return $keys(O, enumBugKeys); }; },{"./_enum-bug-keys":17,"./_object-keys-internal":52}],54:[function(require,module,exports){ exports.f = {}.propertyIsEnumerable; },{}],55:[function(require,module,exports){ // most Object methods by ES6 should accept primitives var $export = require('./_export'); var core = require('./_core'); var fails = require('./_fails'); module.exports = function (KEY, exec) { var fn = (core.Object || {})[KEY] || Object[KEY]; var exp = {}; exp[KEY] = exec(fn); $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); }; },{"./_core":11,"./_export":19,"./_fails":21}],56:[function(require,module,exports){ // all object keys, includes non-enumerable and symbols var gOPN = require('./_object-gopn'); var gOPS = require('./_object-gops'); var anObject = require('./_an-object'); var Reflect = require('./_global').Reflect; module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { var keys = gOPN.f(anObject(it)); var getSymbols = gOPS.f; return getSymbols ? keys.concat(getSymbols(it)) : keys; }; },{"./_an-object":4,"./_global":25,"./_object-gopn":49,"./_object-gops":50}],57:[function(require,module,exports){ module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; },{}],58:[function(require,module,exports){ var global = require('./_global'); var hide = require('./_hide'); var has = require('./_has'); var SRC = require('./_uid')('src'); var $toString = require('./_function-to-string'); var TO_STRING = 'toString'; var TPL = ('' + $toString).split(TO_STRING); require('./_core').inspectSource = function (it) { return $toString.call(it); }; (module.exports = function (O, key, val, safe) { var isFunction = typeof val == 'function'; if (isFunction) has(val, 'name') || hide(val, 'name', key); if (O[key] === val) return; if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); if (O === global) { O[key] = val; } else if (!safe) { delete O[key]; hide(O, key, val); } else if (O[key]) { O[key] = val; } else { hide(O, key, val); } // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, TO_STRING, function toString() { return typeof this == 'function' && this[SRC] || $toString.call(this); }); },{"./_core":11,"./_function-to-string":24,"./_global":25,"./_has":26,"./_hide":27,"./_uid":78}],59:[function(require,module,exports){ 'use strict'; var classof = require('./_classof'); var builtinExec = RegExp.prototype.exec; // `RegExpExec` abstract operation // https://tc39.github.io/ecma262/#sec-regexpexec module.exports = function (R, S) { var exec = R.exec; if (typeof exec === 'function') { var result = exec.call(R, S); if (typeof result !== 'object') { throw new TypeError('RegExp exec method returned something other than an Object or null'); } return result; } if (classof(R) !== 'RegExp') { throw new TypeError('RegExp#exec called on incompatible receiver'); } return builtinExec.call(R, S); }; },{"./_classof":9}],60:[function(require,module,exports){ 'use strict'; var regexpFlags = require('./_flags'); var nativeExec = RegExp.prototype.exec; // This always refers to the native implementation, because the // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, // which loads this file before patching the method. var nativeReplace = String.prototype.replace; var patchedExec = nativeExec; var LAST_INDEX = 'lastIndex'; var UPDATES_LAST_INDEX_WRONG = (function () { var re1 = /a/, re2 = /b*/g; nativeExec.call(re1, 'a'); nativeExec.call(re2, 'a'); return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; })(); // nonparticipating capturing group, copied from es5-shim's String#split patch. var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; if (PATCH) { patchedExec = function exec(str) { var re = this; var lastIndex, reCopy, match, i; if (NPCG_INCLUDED) { reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); } if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; match = nativeExec.call(re, str); if (UPDATES_LAST_INDEX_WRONG && match) { re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; } if (NPCG_INCLUDED && match && match.length > 1) { // Fix browsers whose `exec` methods don't consistently return `undefined` // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ // eslint-disable-next-line no-loop-func nativeReplace.call(match[0], reCopy, function () { for (i = 1; i < arguments.length - 2; i++) { if (arguments[i] === undefined) match[i] = undefined; } }); } return match; }; } module.exports = patchedExec; },{"./_flags":23}],61:[function(require,module,exports){ // Works with __proto__ only. Old v8 can't work with null proto objects. /* eslint-disable no-proto */ var isObject = require('./_is-object'); var anObject = require('./_an-object'); var check = function (O, proto) { anObject(O); if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); }; module.exports = { set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line function (test, buggy, set) { try { set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2); set(test, []); buggy = !(test instanceof Array); } catch (e) { buggy = true; } return function setPrototypeOf(O, proto) { check(O, proto); if (buggy) O.__proto__ = proto; else set(O, proto); return O; }; }({}, false) : undefined), check: check }; },{"./_an-object":4,"./_ctx":13,"./_is-object":34,"./_object-gopd":47}],62:[function(require,module,exports){ 'use strict'; var global = require('./_global'); var dP = require('./_object-dp'); var DESCRIPTORS = require('./_descriptors'); var SPECIES = require('./_wks')('species'); module.exports = function (KEY) { var C = global[KEY]; if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { configurable: true, get: function () { return this; } }); }; },{"./_descriptors":15,"./_global":25,"./_object-dp":45,"./_wks":81}],63:[function(require,module,exports){ var def = require('./_object-dp').f; var has = require('./_has'); var TAG = require('./_wks')('toStringTag'); module.exports = function (it, tag, stat) { if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); }; },{"./_has":26,"./_object-dp":45,"./_wks":81}],64:[function(require,module,exports){ var shared = require('./_shared')('keys'); var uid = require('./_uid'); module.exports = function (key) { return shared[key] || (shared[key] = uid(key)); }; },{"./_shared":65,"./_uid":78}],65:[function(require,module,exports){ var core = require('./_core'); var global = require('./_global'); var SHARED = '__core-js_shared__'; var store = global[SHARED] || (global[SHARED] = {}); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: core.version, mode: require('./_library') ? 'pure' : 'global', copyright: '© 2020 Denis Pushkarev (zloirock.ru)' }); },{"./_core":11,"./_global":25,"./_library":42}],66:[function(require,module,exports){ // 7.3.20 SpeciesConstructor(O, defaultConstructor) var anObject = require('./_an-object'); var aFunction = require('./_a-function'); var SPECIES = require('./_wks')('species'); module.exports = function (O, D) { var C = anObject(O).constructor; var S; return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); }; },{"./_a-function":1,"./_an-object":4,"./_wks":81}],67:[function(require,module,exports){ 'use strict'; var fails = require('./_fails'); module.exports = function (method, arg) { return !!method && fails(function () { // eslint-disable-next-line no-useless-call arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); }); }; },{"./_fails":21}],68:[function(require,module,exports){ var toInteger = require('./_to-integer'); var defined = require('./_defined'); // true -> String#at // false -> String#codePointAt module.exports = function (TO_STRING) { return function (that, pos) { var s = String(defined(that)); var i = toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; a = s.charCodeAt(i); return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; }; }; },{"./_defined":14,"./_to-integer":73}],69:[function(require,module,exports){ // helper for String#{startsWith, endsWith, includes} var isRegExp = require('./_is-regexp'); var defined = require('./_defined'); module.exports = function (that, searchString, NAME) { if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); return String(defined(that)); }; },{"./_defined":14,"./_is-regexp":35}],70:[function(require,module,exports){ var $export = require('./_export'); var defined = require('./_defined'); var fails = require('./_fails'); var spaces = require('./_string-ws'); var space = '[' + spaces + ']'; var non = '\u200b\u0085'; var ltrim = RegExp('^' + space + space + '*'); var rtrim = RegExp(space + space + '*$'); var exporter = function (KEY, exec, ALIAS) { var exp = {}; var FORCE = fails(function () { return !!spaces[KEY]() || non[KEY]() != non; }); var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY]; if (ALIAS) exp[ALIAS] = fn; $export($export.P + $export.F * FORCE, 'String', exp); }; // 1 -> String#trimLeft // 2 -> String#trimRight // 3 -> String#trim var trim = exporter.trim = function (string, TYPE) { string = String(defined(string)); if (TYPE & 1) string = string.replace(ltrim, ''); if (TYPE & 2) string = string.replace(rtrim, ''); return string; }; module.exports = exporter; },{"./_defined":14,"./_export":19,"./_fails":21,"./_string-ws":71}],71:[function(require,module,exports){ module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; },{}],72:[function(require,module,exports){ var toInteger = require('./_to-integer'); var max = Math.max; var min = Math.min; module.exports = function (index, length) { index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; },{"./_to-integer":73}],73:[function(require,module,exports){ // 7.1.4 ToInteger var ceil = Math.ceil; var floor = Math.floor; module.exports = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; },{}],74:[function(require,module,exports){ // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = require('./_iobject'); var defined = require('./_defined'); module.exports = function (it) { return IObject(defined(it)); }; },{"./_defined":14,"./_iobject":31}],75:[function(require,module,exports){ // 7.1.15 ToLength var toInteger = require('./_to-integer'); var min = Math.min; module.exports = function (it) { return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; },{"./_to-integer":73}],76:[function(require,module,exports){ // 7.1.13 ToObject(argument) var defined = require('./_defined'); module.exports = function (it) { return Object(defined(it)); }; },{"./_defined":14}],77:[function(require,module,exports){ // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = require('./_is-object'); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (it, S) { if (!isObject(it)) return it; var fn, val; if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; throw TypeError("Can't convert object to primitive value"); }; },{"./_is-object":34}],78:[function(require,module,exports){ var id = 0; var px = Math.random(); module.exports = function (key) { return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; },{}],79:[function(require,module,exports){ var global = require('./_global'); var core = require('./_core'); var LIBRARY = require('./_library'); var wksExt = require('./_wks-ext'); var defineProperty = require('./_object-dp').f; module.exports = function (name) { var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); }; },{"./_core":11,"./_global":25,"./_library":42,"./_object-dp":45,"./_wks-ext":80}],80:[function(require,module,exports){ exports.f = require('./_wks'); },{"./_wks":81}],81:[function(require,module,exports){ var store = require('./_shared')('wks'); var uid = require('./_uid'); var Symbol = require('./_global').Symbol; var USE_SYMBOL = typeof Symbol == 'function'; var $exports = module.exports = function (name) { return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; $exports.store = store; },{"./_global":25,"./_shared":65,"./_uid":78}],82:[function(require,module,exports){ var classof = require('./_classof'); var ITERATOR = require('./_wks')('iterator'); var Iterators = require('./_iterators'); module.exports = require('./_core').getIteratorMethod = function (it) { if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; }; },{"./_classof":9,"./_core":11,"./_iterators":41,"./_wks":81}],83:[function(require,module,exports){ 'use strict'; var $export = require('./_export'); var $filter = require('./_array-methods')(2); $export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', { // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) filter: function filter(callbackfn /* , thisArg */) { return $filter(this, callbackfn, arguments[1]); } }); },{"./_array-methods":6,"./_export":19,"./_strict-method":67}],84:[function(require,module,exports){ 'use strict'; var ctx = require('./_ctx'); var $export = require('./_export'); var toObject = require('./_to-object'); var call = require('./_iter-call'); var isArrayIter = require('./_is-array-iter'); var toLength = require('./_to-length'); var createProperty = require('./_create-property'); var getIterFn = require('./core.get-iterator-method'); $export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', { // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { var O = toObject(arrayLike); var C = typeof this == 'function' ? this : Array; var aLen = arguments.length; var mapfn = aLen > 1 ? arguments[1] : undefined; var mapping = mapfn !== undefined; var index = 0; var iterFn = getIterFn(O); var length, result, step, iterator; if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); // if object isn't iterable or it's array with default iterator - use simple case if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); } } else { length = toLength(O.length); for (result = new C(length); length > index; index++) { createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); } } result.length = index; return result; } }); },{"./_create-property":12,"./_ctx":13,"./_export":19,"./_is-array-iter":32,"./_iter-call":36,"./_iter-detect":39,"./_to-length":75,"./_to-object":76,"./core.get-iterator-method":82}],85:[function(require,module,exports){ 'use strict'; var addToUnscopables = require('./_add-to-unscopables'); var step = require('./_iter-step'); var Iterators = require('./_iterators'); var toIObject = require('./_to-iobject'); // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() module.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) { this._t = toIObject(iterated); // target this._i = 0; // next index this._k = kind; // kind // 22.1.5.2.1 %ArrayIteratorPrototype%.next() }, function () { var O = this._t; var kind = this._k; var index = this._i++; if (!O || index >= O.length) { this._t = undefined; return step(1); } if (kind == 'keys') return step(0, index); if (kind == 'values') return step(0, O[index]); return step(0, [index, O[index]]); }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) Iterators.Arguments = Iterators.Array; addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); },{"./_add-to-unscopables":2,"./_iter-define":38,"./_iter-step":40,"./_iterators":41,"./_to-iobject":74}],86:[function(require,module,exports){ 'use strict'; var $export = require('./_export'); var $map = require('./_array-methods')(1); $export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', { // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg]) map: function map(callbackfn /* , thisArg */) { return $map(this, callbackfn, arguments[1]); } }); },{"./_array-methods":6,"./_export":19,"./_strict-method":67}],87:[function(require,module,exports){ 'use strict'; var $export = require('./_export'); var html = require('./_html'); var cof = require('./_cof'); var toAbsoluteIndex = require('./_to-absolute-index'); var toLength = require('./_to-length'); var arraySlice = [].slice; // fallback for not array-like ES3 strings and DOM objects $export($export.P + $export.F * require('./_fails')(function () { if (html) arraySlice.call(html); }), 'Array', { slice: function slice(begin, end) { var len = toLength(this.length); var klass = cof(this); end = end === undefined ? len : end; if (klass == 'Array') return arraySlice.call(this, begin, end); var start = toAbsoluteIndex(begin, len); var upTo = toAbsoluteIndex(end, len); var size = toLength(upTo - start); var cloned = new Array(size); var i = 0; for (; i < size; i++) cloned[i] = klass == 'String' ? this.charAt(start + i) : this[start + i]; return cloned; } }); },{"./_cof":10,"./_export":19,"./_fails":21,"./_html":28,"./_to-absolute-index":72,"./_to-length":75}],88:[function(require,module,exports){ 'use strict'; var global = require('./_global'); var has = require('./_has'); var cof = require('./_cof'); var inheritIfRequired = require('./_inherit-if-required'); var toPrimitive = require('./_to-primitive'); var fails = require('./_fails'); var gOPN = require('./_object-gopn').f; var gOPD = require('./_object-gopd').f; var dP = require('./_object-dp').f; var $trim = require('./_string-trim').trim; var NUMBER = 'Number'; var $Number = global[NUMBER]; var Base = $Number; var proto = $Number.prototype; // Opera ~12 has broken Object#toString var BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER; var TRIM = 'trim' in String.prototype; // 7.1.3 ToNumber(argument) var toNumber = function (argument) { var it = toPrimitive(argument, false); if (typeof it == 'string' && it.length > 2) { it = TRIM ? it.trim() : $trim(it, 3); var first = it.charCodeAt(0); var third, radix, maxCode; if (first === 43 || first === 45) { third = it.charCodeAt(2); if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix } else if (first === 48) { switch (it.charCodeAt(1)) { case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i default: return +it; } for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) { code = digits.charCodeAt(i); // parseInt parses a string to a first unavailable symbol // but ToNumber should return NaN if a string contains unavailable symbols if (code < 48 || code > maxCode) return NaN; } return parseInt(digits, radix); } } return +it; }; if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) { $Number = function Number(value) { var it = arguments.length < 1 ? 0 : value; var that = this; return that instanceof $Number // check on 1..constructor(foo) case && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER) ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it); }; for (var keys = require('./_descriptors') ? gOPN(Base) : ( // ES3: 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES6 (in case, if modules with ES6 Number statics required before): 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' ).split(','), j = 0, key; keys.length > j; j++) { if (has(Base, key = keys[j]) && !has($Number, key)) { dP($Number, key, gOPD(Base, key)); } } $Number.prototype = proto; proto.constructor = $Number; require('./_redefine')(global, NUMBER, $Number); } },{"./_cof":10,"./_descriptors":15,"./_fails":21,"./_global":25,"./_has":26,"./_inherit-if-required":30,"./_object-create":44,"./_object-dp":45,"./_object-gopd":47,"./_object-gopn":49,"./_redefine":58,"./_string-trim":70,"./_to-primitive":77}],89:[function(require,module,exports){ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) var toIObject = require('./_to-iobject'); var $getOwnPropertyDescriptor = require('./_object-gopd').f; require('./_object-sap')('getOwnPropertyDescriptor', function () { return function getOwnPropertyDescriptor(it, key) { return $getOwnPropertyDescriptor(toIObject(it), key); }; }); },{"./_object-gopd":47,"./_object-sap":55,"./_to-iobject":74}],90:[function(require,module,exports){ // 19.1.2.14 Object.keys(O) var toObject = require('./_to-object'); var $keys = require('./_object-keys'); require('./_object-sap')('keys', function () { return function keys(it) { return $keys(toObject(it)); }; }); },{"./_object-keys":53,"./_object-sap":55,"./_to-object":76}],91:[function(require,module,exports){ 'use strict'; // 19.1.3.6 Object.prototype.toString() var classof = require('./_classof'); var test = {}; test[require('./_wks')('toStringTag')] = 'z'; if (test + '' != '[object z]') { require('./_redefine')(Object.prototype, 'toString', function toString() { return '[object ' + classof(this) + ']'; }, true); } },{"./_classof":9,"./_redefine":58,"./_wks":81}],92:[function(require,module,exports){ var global = require('./_global'); var inheritIfRequired = require('./_inherit-if-required'); var dP = require('./_object-dp').f; var gOPN = require('./_object-gopn').f; var isRegExp = require('./_is-regexp'); var $flags = require('./_flags'); var $RegExp = global.RegExp; var Base = $RegExp; var proto = $RegExp.prototype; var re1 = /a/g; var re2 = /a/g; // "new" creates a new object, old webkit buggy here var CORRECT_NEW = new $RegExp(re1) !== re1; if (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () { re2[require('./_wks')('match')] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; }))) { $RegExp = function RegExp(p, f) { var tiRE = this instanceof $RegExp; var piRE = isRegExp(p); var fiU = f === undefined; return !tiRE && piRE && p.constructor === $RegExp && fiU ? p : inheritIfRequired(CORRECT_NEW ? new Base(piRE && !fiU ? p.source : p, f) : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) , tiRE ? this : proto, $RegExp); }; var proxy = function (key) { key in $RegExp || dP($RegExp, key, { configurable: true, get: function () { return Base[key]; }, set: function (it) { Base[key] = it; } }); }; for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); proto.constructor = $RegExp; $RegExp.prototype = proto; require('./_redefine')(global, 'RegExp', $RegExp); } require('./_set-species')('RegExp'); },{"./_descriptors":15,"./_fails":21,"./_flags":23,"./_global":25,"./_inherit-if-required":30,"./_is-regexp":35,"./_object-dp":45,"./_object-gopn":49,"./_redefine":58,"./_set-species":62,"./_wks":81}],93:[function(require,module,exports){ 'use strict'; var regexpExec = require('./_regexp-exec'); require('./_export')({ target: 'RegExp', proto: true, forced: regexpExec !== /./.exec }, { exec: regexpExec }); },{"./_export":19,"./_regexp-exec":60}],94:[function(require,module,exports){ 'use strict'; var anObject = require('./_an-object'); var toLength = require('./_to-length'); var advanceStringIndex = require('./_advance-string-index'); var regExpExec = require('./_regexp-exec-abstract'); // @@match logic require('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) { return [ // `String.prototype.match` method // https://tc39.github.io/ecma262/#sec-string.prototype.match function match(regexp) { var O = defined(this); var fn = regexp == undefined ? undefined : regexp[MATCH]; return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); }, // `RegExp.prototype[@@match]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match function (regexp) { var res = maybeCallNative($match, regexp, this); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); if (!rx.global) return regExpExec(rx, S); var fullUnicode = rx.unicode; rx.lastIndex = 0; var A = []; var n = 0; var result; while ((result = regExpExec(rx, S)) !== null) { var matchStr = String(result[0]); A[n] = matchStr; if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); n++; } return n === 0 ? null : A; } ]; }); },{"./_advance-string-index":3,"./_an-object":4,"./_fix-re-wks":22,"./_regexp-exec-abstract":59,"./_to-length":75}],95:[function(require,module,exports){ 'use strict'; var anObject = require('./_an-object'); var toObject = require('./_to-object'); var toLength = require('./_to-length'); var toInteger = require('./_to-integer'); var advanceStringIndex = require('./_advance-string-index'); var regExpExec = require('./_regexp-exec-abstract'); var max = Math.max; var min = Math.min; var floor = Math.floor; var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; var maybeToString = function (it) { return it === undefined ? it : String(it); }; // @@replace logic require('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { return [ // `String.prototype.replace` method // https://tc39.github.io/ecma262/#sec-string.prototype.replace function replace(searchValue, replaceValue) { var O = defined(this); var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; return fn !== undefined ? fn.call(searchValue, O, replaceValue) : $replace.call(String(O), searchValue, replaceValue); }, // `RegExp.prototype[@@replace]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace function (regexp, replaceValue) { var res = maybeCallNative($replace, regexp, this, replaceValue); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); var functionalReplace = typeof replaceValue === 'function'; if (!functionalReplace) replaceValue = String(replaceValue); var global = rx.global; if (global) { var fullUnicode = rx.unicode; rx.lastIndex = 0; } var results = []; while (true) { var result = regExpExec(rx, S); if (result === null) break; results.push(result); if (!global) break; var matchStr = String(result[0]); if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); } var accumulatedResult = ''; var nextSourcePosition = 0; for (var i = 0; i < results.length; i++) { result = results[i]; var matched = String(result[0]); var position = max(min(toInteger(result.index), S.length), 0); var captures = []; // NOTE: This is equivalent to // captures = result.slice(1).map(maybeToString) // but for some reason `nativeSlice.call(result, 1, result.length)` (called in // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); var namedCaptures = result.groups; if (functionalReplace) { var replacerArgs = [matched].concat(captures, position, S); if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); var replacement = String(replaceValue.apply(undefined, replacerArgs)); } else { replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); } if (position >= nextSourcePosition) { accumulatedResult += S.slice(nextSourcePosition, position) + replacement; nextSourcePosition = position + matched.length; } } return accumulatedResult + S.slice(nextSourcePosition); } ]; // https://tc39.github.io/ecma262/#sec-getsubstitution function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { var tailPos = position + matched.length; var m = captures.length; var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; if (namedCaptures !== undefined) { namedCaptures = toObject(namedCaptures); symbols = SUBSTITUTION_SYMBOLS; } return $replace.call(replacement, symbols, function (match, ch) { var capture; switch (ch.charAt(0)) { case '$': return '$'; case '&': return matched; case '`': return str.slice(0, position); case "'": return str.slice(tailPos); case '<': capture = namedCaptures[ch.slice(1, -1)]; break; default: // \d\d? var n = +ch; if (n === 0) return match; if (n > m) { var f = floor(n / 10); if (f === 0) return match; if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); return match; } capture = captures[n - 1]; } return capture === undefined ? '' : capture; }); } }); },{"./_advance-string-index":3,"./_an-object":4,"./_fix-re-wks":22,"./_regexp-exec-abstract":59,"./_to-integer":73,"./_to-length":75,"./_to-object":76}],96:[function(require,module,exports){ 'use strict'; var isRegExp = require('./_is-regexp'); var anObject = require('./_an-object'); var speciesConstructor = require('./_species-constructor'); var advanceStringIndex = require('./_advance-string-index'); var toLength = require('./_to-length'); var callRegExpExec = require('./_regexp-exec-abstract'); var regexpExec = require('./_regexp-exec'); var fails = require('./_fails'); var $min = Math.min; var $push = [].push; var $SPLIT = 'split'; var LENGTH = 'length'; var LAST_INDEX = 'lastIndex'; var MAX_UINT32 = 0xffffffff; // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); }); // @@split logic require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) { var internalSplit; if ( 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || '.'[$SPLIT](/()()/)[LENGTH] > 1 || ''[$SPLIT](/.?/)[LENGTH] ) { // based on es5-shim implementation, need to rework it internalSplit = function (separator, limit) { var string = String(this); if (separator === undefined && limit === 0) return []; // If `separator` is not a regex, use native split if (!isRegExp(separator)) return $split.call(string, separator, limit); var output = []; var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : ''); var lastLastIndex = 0; var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; // Make `global` and avoid `lastIndex` issues by working with a copy var separatorCopy = new RegExp(separator.source, flags + 'g'); var match, lastIndex, lastLength; while (match = regexpExec.call(separatorCopy, string)) { lastIndex = separatorCopy[LAST_INDEX]; if (lastIndex > lastLastIndex) { output.push(string.slice(lastLastIndex, match.index)); if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); lastLength = match[0][LENGTH]; lastLastIndex = lastIndex; if (output[LENGTH] >= splitLimit) break; } if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop } if (lastLastIndex === string[LENGTH]) { if (lastLength || !separatorCopy.test('')) output.push(''); } else output.push(string.slice(lastLastIndex)); return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; }; // Chakra, V8 } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { internalSplit = function (separator, limit) { return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); }; } else { internalSplit = $split; } return [ // `String.prototype.split` method // https://tc39.github.io/ecma262/#sec-string.prototype.split function split(separator, limit) { var O = defined(this); var splitter = separator == undefined ? undefined : separator[SPLIT]; return splitter !== undefined ? splitter.call(separator, O, limit) : internalSplit.call(String(O), separator, limit); }, // `RegExp.prototype[@@split]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split // // NOTE: This cannot be properly polyfilled in engines that don't support // the 'y' flag. function (regexp, limit) { var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); var C = speciesConstructor(rx, RegExp); var unicodeMatching = rx.unicode; var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (SUPPORTS_Y ? 'y' : 'g'); // ^(? + rx + ) is needed, in combination with some S slicing, to // simulate the 'y' flag. var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; if (lim === 0) return []; if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; var p = 0; var q = 0; var A = []; while (q < S.length) { splitter.lastIndex = SUPPORTS_Y ? q : 0; var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); var e; if ( z === null || (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p ) { q = advanceStringIndex(S, q, unicodeMatching); } else { A.push(S.slice(p, q)); if (A.length === lim) return A; for (var i = 1; i <= z.length - 1; i++) { A.push(z[i]); if (A.length === lim) return A; } q = p = e; } } A.push(S.slice(p)); return A; } ]; }); },{"./_advance-string-index":3,"./_an-object":4,"./_fails":21,"./_fix-re-wks":22,"./_is-regexp":35,"./_regexp-exec":60,"./_regexp-exec-abstract":59,"./_species-constructor":66,"./_to-length":75}],97:[function(require,module,exports){ // 21.1.3.7 String.prototype.includes(searchString, position = 0) 'use strict'; var $export = require('./_export'); var context = require('./_string-context'); var INCLUDES = 'includes'; $export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', { includes: function includes(searchString /* , position = 0 */) { return !!~context(this, searchString, INCLUDES) .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); } }); },{"./_export":19,"./_fails-is-regexp":20,"./_string-context":69}],98:[function(require,module,exports){ 'use strict'; var $at = require('./_string-at')(true); // 21.1.3.27 String.prototype[@@iterator]() require('./_iter-define')(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() }, function () { var O = this._t; var index = this._i; var point; if (index >= O.length) return { value: undefined, done: true }; point = $at(O, index); this._i += point.length; return { value: point, done: false }; }); },{"./_iter-define":38,"./_string-at":68}],99:[function(require,module,exports){ 'use strict'; // ECMAScript 6 symbols shim var global = require('./_global'); var has = require('./_has'); var DESCRIPTORS = require('./_descriptors'); var $export = require('./_export'); var redefine = require('./_redefine'); var META = require('./_meta').KEY; var $fails = require('./_fails'); var shared = require('./_shared'); var setToStringTag = require('./_set-to-string-tag'); var uid = require('./_uid'); var wks = require('./_wks'); var wksExt = require('./_wks-ext'); var wksDefine = require('./_wks-define'); var enumKeys = require('./_enum-keys'); var isArray = require('./_is-array'); var anObject = require('./_an-object'); var isObject = require('./_is-object'); var toObject = require('./_to-object'); var toIObject = require('./_to-iobject'); var toPrimitive = require('./_to-primitive'); var createDesc = require('./_property-desc'); var _create = require('./_object-create'); var gOPNExt = require('./_object-gopn-ext'); var $GOPD = require('./_object-gopd'); var $GOPS = require('./_object-gops'); var $DP = require('./_object-dp'); var $keys = require('./_object-keys'); var gOPD = $GOPD.f; var dP = $DP.f; var gOPN = gOPNExt.f; var $Symbol = global.Symbol; var $JSON = global.JSON; var _stringify = $JSON && $JSON.stringify; var PROTOTYPE = 'prototype'; var HIDDEN = wks('_hidden'); var TO_PRIMITIVE = wks('toPrimitive'); var isEnum = {}.propertyIsEnumerable; var SymbolRegistry = shared('symbol-registry'); var AllSymbols = shared('symbols'); var OPSymbols = shared('op-symbols'); var ObjectProto = Object[PROTOTYPE]; var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; var QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 var setSymbolDesc = DESCRIPTORS && $fails(function () { return _create(dP({}, 'a', { get: function () { return dP(this, 'a', { value: 7 }).a; } })).a != 7; }) ? function (it, key, D) { var protoDesc = gOPD(ObjectProto, key); if (protoDesc) delete ObjectProto[key]; dP(it, key, D); if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); } : dP; var wrap = function (tag) { var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); sym._k = tag; return sym; }; var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { return typeof it == 'symbol'; } : function (it) { return it instanceof $Symbol; }; var $defineProperty = function defineProperty(it, key, D) { if (it === ObjectProto) $defineProperty(OPSymbols, key, D); anObject(it); key = toPrimitive(key, true); anObject(D); if (has(AllSymbols, key)) { if (!D.enumerable) { if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); it[HIDDEN][key] = true; } else { if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; D = _create(D, { enumerable: createDesc(0, false) }); } return setSymbolDesc(it, key, D); } return dP(it, key, D); }; var $defineProperties = function defineProperties(it, P) { anObject(it); var keys = enumKeys(P = toIObject(P)); var i = 0; var l = keys.length; var key; while (l > i) $defineProperty(it, key = keys[i++], P[key]); return it; }; var $create = function create(it, P) { return P === undefined ? _create(it) : $defineProperties(_create(it), P); }; var $propertyIsEnumerable = function propertyIsEnumerable(key) { var E = isEnum.call(this, key = toPrimitive(key, true)); if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; }; var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { it = toIObject(it); key = toPrimitive(key, true); if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; var D = gOPD(it, key); if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; return D; }; var $getOwnPropertyNames = function getOwnPropertyNames(it) { var names = gOPN(toIObject(it)); var result = []; var i = 0; var key; while (names.length > i) { if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); } return result; }; var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { var IS_OP = it === ObjectProto; var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); var result = []; var i = 0; var key; while (names.length > i) { if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); } return result; }; // 19.4.1.1 Symbol([description]) if (!USE_NATIVE) { $Symbol = function Symbol() { if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); var tag = uid(arguments.length > 0 ? arguments[0] : undefined); var $set = function (value) { if (this === ObjectProto) $set.call(OPSymbols, value); if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; setSymbolDesc(this, tag, createDesc(1, value)); }; if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); return wrap(tag); }; redefine($Symbol[PROTOTYPE], 'toString', function toString() { return this._k; }); $GOPD.f = $getOwnPropertyDescriptor; $DP.f = $defineProperty; require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames; require('./_object-pie').f = $propertyIsEnumerable; $GOPS.f = $getOwnPropertySymbols; if (DESCRIPTORS && !require('./_library')) { redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); } wksExt.f = function (name) { return wrap(wks(name)); }; } $export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); for (var es6Symbols = ( // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' ).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); $export($export.S + $export.F * !USE_NATIVE, 'Symbol', { // 19.4.2.1 Symbol.for(key) 'for': function (key) { return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key); }, // 19.4.2.5 Symbol.keyFor(sym) keyFor: function keyFor(sym) { if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; }, useSetter: function () { setter = true; }, useSimple: function () { setter = false; } }); $export($export.S + $export.F * !USE_NATIVE, 'Object', { // 19.1.2.2 Object.create(O [, Properties]) create: $create, // 19.1.2.4 Object.defineProperty(O, P, Attributes) defineProperty: $defineProperty, // 19.1.2.3 Object.defineProperties(O, Properties) defineProperties: $defineProperties, // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) getOwnPropertyDescriptor: $getOwnPropertyDescriptor, // 19.1.2.7 Object.getOwnPropertyNames(O) getOwnPropertyNames: $getOwnPropertyNames, // 19.1.2.8 Object.getOwnPropertySymbols(O) getOwnPropertySymbols: $getOwnPropertySymbols }); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives // https://bugs.chromium.org/p/v8/issues/detail?id=3443 var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); }); $export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { getOwnPropertySymbols: function getOwnPropertySymbols(it) { return $GOPS.f(toObject(it)); } }); // 24.3.2 JSON.stringify(value [, replacer [, space]]) $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { var S = $Symbol(); // MS Edge converts symbol values to JSON as {} // WebKit converts symbol values to JSON as null // V8 throws on boxed symbols return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; })), 'JSON', { stringify: function stringify(it) { var args = [it]; var i = 1; var replacer, $replacer; while (arguments.length > i) args.push(arguments[i++]); $replacer = replacer = args[1]; if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined if (!isArray(replacer)) replacer = function (key, value) { if (typeof $replacer == 'function') value = $replacer.call(this, key, value); if (!isSymbol(value)) return value; }; args[1] = replacer; return _stringify.apply($JSON, args); } }); // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) $Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); // 19.4.3.5 Symbol.prototype[@@toStringTag] setToStringTag($Symbol, 'Symbol'); // 20.2.1.9 Math[@@toStringTag] setToStringTag(Math, 'Math', true); // 24.3.3 JSON[@@toStringTag] setToStringTag(global.JSON, 'JSON', true); },{"./_an-object":4,"./_descriptors":15,"./_enum-keys":18,"./_export":19,"./_fails":21,"./_global":25,"./_has":26,"./_hide":27,"./_is-array":33,"./_is-object":34,"./_library":42,"./_meta":43,"./_object-create":44,"./_object-dp":45,"./_object-gopd":47,"./_object-gopn":49,"./_object-gopn-ext":48,"./_object-gops":50,"./_object-keys":53,"./_object-pie":54,"./_property-desc":57,"./_redefine":58,"./_set-to-string-tag":63,"./_shared":65,"./_to-iobject":74,"./_to-object":76,"./_to-primitive":77,"./_uid":78,"./_wks":81,"./_wks-define":79,"./_wks-ext":80}],100:[function(require,module,exports){ 'use strict'; // https://github.com/tc39/Array.prototype.includes var $export = require('./_export'); var $includes = require('./_array-includes')(true); $export($export.P, 'Array', { includes: function includes(el /* , fromIndex = 0 */) { return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); } }); require('./_add-to-unscopables')('includes'); },{"./_add-to-unscopables":2,"./_array-includes":5,"./_export":19}],101:[function(require,module,exports){ // https://github.com/tc39/proposal-object-getownpropertydescriptors var $export = require('./_export'); var ownKeys = require('./_own-keys'); var toIObject = require('./_to-iobject'); var gOPD = require('./_object-gopd'); var createProperty = require('./_create-property'); $export($export.S, 'Object', { getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { var O = toIObject(object); var getDesc = gOPD.f; var keys = ownKeys(O); var result = {}; var i = 0; var key, desc; while (keys.length > i) { desc = getDesc(O, key = keys[i++]); if (desc !== undefined) createProperty(result, key, desc); } return result; } }); },{"./_create-property":12,"./_export":19,"./_object-gopd":47,"./_own-keys":56,"./_to-iobject":74}],102:[function(require,module,exports){ var $iterators = require('./es6.array.iterator'); var getKeys = require('./_object-keys'); var redefine = require('./_redefine'); var global = require('./_global'); var hide = require('./_hide'); var Iterators = require('./_iterators'); var wks = require('./_wks'); var ITERATOR = wks('iterator'); var TO_STRING_TAG = wks('toStringTag'); var ArrayValues = Iterators.Array; var DOMIterables = { CSSRuleList: true, // TODO: Not spec compliant, should be false. CSSStyleDeclaration: false, CSSValueList: false, ClientRectList: false, DOMRectList: false, DOMStringList: false, DOMTokenList: true, DataTransferItemList: false, FileList: false, HTMLAllCollection: false, HTMLCollection: false, HTMLFormElement: false, HTMLSelectElement: false, MediaList: true, // TODO: Not spec compliant, should be false. MimeTypeArray: false, NamedNodeMap: false, NodeList: true, PaintRequestList: false, Plugin: false, PluginArray: false, SVGLengthList: false, SVGNumberList: false, SVGPathSegList: false, SVGPointList: false, SVGStringList: false, SVGTransformList: false, SourceBufferList: false, StyleSheetList: true, // TODO: Not spec compliant, should be false. TextTrackCueList: false, TextTrackList: false, TouchList: false }; for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { var NAME = collections[i]; var explicit = DOMIterables[NAME]; var Collection = global[NAME]; var proto = Collection && Collection.prototype; var key; if (proto) { if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); Iterators[NAME] = ArrayValues; if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); } } },{"./_global":25,"./_hide":27,"./_iterators":41,"./_object-keys":53,"./_redefine":58,"./_wks":81,"./es6.array.iterator":85}],103:[function(require,module,exports){ "use strict"; require("core-js/modules/es6.symbol.js"); require("core-js/modules/es6.number.constructor.js"); require("core-js/modules/es6.string.iterator.js"); require("core-js/modules/es6.object.to-string.js"); require("core-js/modules/es6.array.iterator.js"); require("core-js/modules/web.dom.iterable.js"); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } var _require = require('./protocol'), Parser = _require.Parser, PROTOCOL_6 = _require.PROTOCOL_6, PROTOCOL_7 = _require.PROTOCOL_7; var VERSION = "4.0.2"; var Connector = /*#__PURE__*/function () { function Connector(options, WebSocket, Timer, handlers) { var _this = this; _classCallCheck(this, Connector); this.options = options; this.WebSocket = WebSocket; this.Timer = Timer; this.handlers = handlers; var path = this.options.path ? "".concat(this.options.path) : 'livereload'; var port = this.options.port ? ":".concat(this.options.port) : ''; this._uri = "ws".concat(this.options.https ? 's' : '', "://").concat(this.options.host).concat(port, "/").concat(path); this._nextDelay = this.options.mindelay; this._connectionDesired = false; this.protocol = 0; this.protocolParser = new Parser({ connected: function connected(protocol) { _this.protocol = protocol; _this._handshakeTimeout.stop(); _this._nextDelay = _this.options.mindelay; _this._disconnectionReason = 'broken'; return _this.handlers.connected(_this.protocol); }, error: function error(e) { _this.handlers.error(e); return _this._closeOnError(); }, message: function message(_message) { return _this.handlers.message(_message); } }); this._handshakeTimeout = new this.Timer(function () { if (!_this._isSocketConnected()) { return; } _this._disconnectionReason = 'handshake-timeout'; return _this.socket.close(); }); this._reconnectTimer = new this.Timer(function () { if (!_this._connectionDesired) { // shouldn't hit this, but just in case return; } return _this.connect(); }); this.connect(); } _createClass(Connector, [{ key: "_isSocketConnected", value: function _isSocketConnected() { return this.socket && this.socket.readyState === this.WebSocket.OPEN; } }, { key: "connect", value: function connect() { var _this2 = this; this._connectionDesired = true; if (this._isSocketConnected()) { return; } // prepare for a new connection this._reconnectTimer.stop(); this._disconnectionReason = 'cannot-connect'; this.protocolParser.reset(); this.handlers.connecting(); this.socket = new this.WebSocket(this._uri); this.socket.onopen = function (e) { return _this2._onopen(e); }; this.socket.onclose = function (e) { return _this2._onclose(e); }; this.socket.onmessage = function (e) { return _this2._onmessage(e); }; this.socket.onerror = function (e) { return _this2._onerror(e); }; } }, { key: "disconnect", value: function disconnect() { this._connectionDesired = false; this._reconnectTimer.stop(); // in case it was running if (!this._isSocketConnected()) { return; } this._disconnectionReason = 'manual'; return this.socket.close(); } }, { key: "_scheduleReconnection", value: function _scheduleReconnection() { if (!this._connectionDesired) { // don't reconnect after manual disconnection return; } if (!this._reconnectTimer.running) { this._reconnectTimer.start(this._nextDelay); this._nextDelay = Math.min(this.options.maxdelay, this._nextDelay * 2); } } }, { key: "sendCommand", value: function sendCommand(command) { if (!this.protocol) { return; } return this._sendCommand(command); } }, { key: "_sendCommand", value: function _sendCommand(command) { return this.socket.send(JSON.stringify(command)); } }, { key: "_closeOnError", value: function _closeOnError() { this._handshakeTimeout.stop(); this._disconnectionReason = 'error'; return this.socket.close(); } }, { key: "_onopen", value: function _onopen(e) { this.handlers.socketConnected(); this._disconnectionReason = 'handshake-failed'; // start handshake var hello = { command: 'hello', protocols: [PROTOCOL_6, PROTOCOL_7] }; hello.ver = VERSION; if (this.options.ext) { hello.ext = this.options.ext; } if (this.options.extver) { hello.extver = this.options.extver; } if (this.options.snipver) { hello.snipver = this.options.snipver; } this._sendCommand(hello); return this._handshakeTimeout.start(this.options.handshake_timeout); } }, { key: "_onclose", value: function _onclose(e) { this.protocol = 0; this.handlers.disconnected(this._disconnectionReason, this._nextDelay); return this._scheduleReconnection(); } }, { key: "_onerror", value: function _onerror(e) {} }, { key: "_onmessage", value: function _onmessage(e) { return this.protocolParser.process(e.data); } }]); return Connector; }(); ; exports.Connector = Connector; },{"./protocol":108,"core-js/modules/es6.array.iterator.js":85,"core-js/modules/es6.number.constructor.js":88,"core-js/modules/es6.object.to-string.js":91,"core-js/modules/es6.string.iterator.js":98,"core-js/modules/es6.symbol.js":99,"core-js/modules/web.dom.iterable.js":102}],104:[function(require,module,exports){ "use strict"; var CustomEvents = { bind: function bind(element, eventName, handler) { if (element.addEventListener) { return element.addEventListener(eventName, handler, false); } if (element.attachEvent) { element[eventName] = 1; return element.attachEvent('onpropertychange', function (event) { if (event.propertyName === eventName) { return handler(); } }); } throw new Error("Attempt to attach custom event ".concat(eventName, " to something which isn't a DOMElement")); }, fire: function fire(element, eventName) { if (element.addEventListener) { var event = document.createEvent('HTMLEvents'); event.initEvent(eventName, true, true); return document.dispatchEvent(event); } else if (element.attachEvent) { if (element[eventName]) { return element[eventName]++; } } else { throw new Error("Attempt to fire custom event ".concat(eventName, " on something which isn't a DOMElement")); } } }; exports.bind = CustomEvents.bind; exports.fire = CustomEvents.fire; },{}],105:[function(require,module,exports){ "use strict"; require("core-js/modules/es6.regexp.match.js"); require("core-js/modules/es6.symbol.js"); require("core-js/modules/es6.array.from.js"); require("core-js/modules/es6.string.iterator.js"); require("core-js/modules/es6.object.to-string.js"); require("core-js/modules/es6.array.iterator.js"); require("core-js/modules/web.dom.iterable.js"); require("core-js/modules/es6.number.constructor.js"); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } var LessPlugin = /*#__PURE__*/function () { function LessPlugin(window, host) { _classCallCheck(this, LessPlugin); this.window = window; this.host = host; } _createClass(LessPlugin, [{ key: "reload", value: function reload(path, options) { if (this.window.less && this.window.less.refresh) { if (path.match(/\.less$/i)) { return this.reloadLess(path); } if (options.originalPath.match(/\.less$/i)) { return this.reloadLess(options.originalPath); } } return false; } }, { key: "reloadLess", value: function reloadLess(path) { var link; var links = function () { var result = []; for (var _i = 0, _Array$from = Array.from(document.getElementsByTagName('link')); _i < _Array$from.length; _i++) { link = _Array$from[_i]; if (link.href && link.rel.match(/^stylesheet\/less$/i) || link.rel.match(/stylesheet/i) && link.type.match(/^text\/(x-)?less$/i)) { result.push(link); } } return result; }(); if (links.length === 0) { return false; } for (var _i2 = 0, _Array$from2 = Array.from(links); _i2 < _Array$from2.length; _i2++) { link = _Array$from2[_i2]; link.href = this.host.generateCacheBustUrl(link.href); } this.host.console.log('LiveReload is asking LESS to recompile all stylesheets'); this.window.less.refresh(true); return true; } }, { key: "analyze", value: function analyze() { return { disable: !!(this.window.less && this.window.less.refresh) }; } }]); return LessPlugin; }(); ; LessPlugin.identifier = 'less'; LessPlugin.version = '1.0'; module.exports = LessPlugin; },{"core-js/modules/es6.array.from.js":84,"core-js/modules/es6.array.iterator.js":85,"core-js/modules/es6.number.constructor.js":88,"core-js/modules/es6.object.to-string.js":91,"core-js/modules/es6.regexp.match.js":94,"core-js/modules/es6.string.iterator.js":98,"core-js/modules/es6.symbol.js":99,"core-js/modules/web.dom.iterable.js":102}],106:[function(require,module,exports){ "use strict"; require("core-js/modules/es6.symbol.js"); require("core-js/modules/es6.number.constructor.js"); require("core-js/modules/es6.array.slice.js"); require("core-js/modules/es6.object.to-string.js"); require("core-js/modules/es6.array.from.js"); require("core-js/modules/es6.string.iterator.js"); require("core-js/modules/es6.array.iterator.js"); require("core-js/modules/web.dom.iterable.js"); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } require("core-js/modules/es6.regexp.match.js"); require("core-js/modules/es6.object.keys.js"); function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /* global alert */ var _require = require('./connector'), Connector = _require.Connector; var _require2 = require('./timer'), Timer = _require2.Timer; var _require3 = require('./options'), Options = _require3.Options; var _require4 = require('./reloader'), Reloader = _require4.Reloader; var _require5 = require('./protocol'), ProtocolError = _require5.ProtocolError; var LiveReload = /*#__PURE__*/function () { function LiveReload(window) { var _this = this; _classCallCheck(this, LiveReload); this.window = window; this.listeners = {}; this.plugins = []; this.pluginIdentifiers = {}; // i can haz console? this.console = this.window.console && this.window.console.log && this.window.console.error ? this.window.location.href.match(/LR-verbose/) ? this.window.console : { log: function log() {}, error: this.window.console.error.bind(this.window.console) } : { log: function log() {}, error: function error() {} }; // i can haz sockets? if (!(this.WebSocket = this.window.WebSocket || this.window.MozWebSocket)) { this.console.error('LiveReload disabled because the browser does not seem to support web sockets'); return; } // i can haz options? if ('LiveReloadOptions' in window) { this.options = new Options(); for (var _i = 0, _Object$keys = Object.keys(window.LiveReloadOptions || {}); _i < _Object$keys.length; _i++) { var k = _Object$keys[_i]; var v = window.LiveReloadOptions[k]; this.options.set(k, v); } } else { this.options = Options.extract(this.window.document); if (!this.options) { this.console.error('LiveReload disabled because it could not find its own
      \n

      testContent

      \n
      \n") } func TestTableOfContents(t *testing.T) { if !asciidocext.Supports() { t.Skip("asciidoctor not installed") } c := qt.New(t) p := getProvider(c, "") conv, err := p.New(converter.DocumentContext{}) c.Assert(err, qt.IsNil) r, err := conv.Convert(converter.RenderContext{Src: []byte(`:toc: macro :toclevels: 4 toc::[] === Introduction == Section 1 === Section 1.1 ==== Section 1.1.1 === Section 1.2 testContent == Section 2 `)}) c.Assert(err, qt.IsNil) toc, ok := r.(converter.TableOfContentsProvider) c.Assert(ok, qt.Equals, true) c.Assert(toc.TableOfContents().Identifiers, qt.DeepEquals, collections.SortedStringSlice{"_introduction", "_section_1", "_section_1_1", "_section_1_1_1", "_section_1_2", "_section_2"}) // Although "Introduction" has a level 3 markup heading, AsciiDoc treats the first heading as level 2. c.Assert(toc.TableOfContents().HeadingsMap["_introduction"].Level, qt.Equals, 2) c.Assert(toc.TableOfContents().HeadingsMap["_section_1"].Level, qt.Equals, 2) c.Assert(toc.TableOfContents().HeadingsMap["_section_1_1"].Level, qt.Equals, 3) c.Assert(toc.TableOfContents().HeadingsMap["_section_1_1_1"].Level, qt.Equals, 4) c.Assert(toc.TableOfContents().HeadingsMap["_section_1_2"].Level, qt.Equals, 3) c.Assert(toc.TableOfContents().HeadingsMap["_section_2"].Level, qt.Equals, 2) c.Assert(string(r.Bytes()), qt.Not(qt.Contains), "
      ") } func TestTableOfContentsWithCode(t *testing.T) { if !asciidocext.Supports() { t.Skip("asciidoctor not installed") } c := qt.New(t) p := getProvider(c, "") conv, err := p.New(converter.DocumentContext{}) c.Assert(err, qt.IsNil) r, err := conv.Convert(converter.RenderContext{Src: []byte(`:toc: auto == Some ` + "`code`" + ` in the title `)}) c.Assert(err, qt.IsNil) toc, ok := r.(converter.TableOfContentsProvider) c.Assert(ok, qt.Equals, true) c.Assert(toc.TableOfContents().HeadingsMap["_some_code_in_the_title"].Title, qt.Equals, "Some code in the title") c.Assert(string(r.Bytes()), qt.Not(qt.Contains), "
      ") } func TestTableOfContentsPreserveTOC(t *testing.T) { if !asciidocext.Supports() { t.Skip("asciidoctor not installed") } c := qt.New(t) confStr := ` [markup] [markup.asciidocExt] preserveTOC = true ` p := getProvider(c, confStr) conv, err := p.New(converter.DocumentContext{}) c.Assert(err, qt.IsNil) r, err := conv.Convert(converter.RenderContext{Src: []byte(`:toc: :idprefix: :idseparator: - == Some title `)}) c.Assert(err, qt.IsNil) toc, ok := r.(converter.TableOfContentsProvider) c.Assert(ok, qt.Equals, true) c.Assert(toc.TableOfContents().Identifiers, qt.DeepEquals, collections.SortedStringSlice{"some-title"}) c.Assert(string(r.Bytes()), qt.Contains, "
      ") } gohugoio-hugo-6abdaca/markup/asciidocext/internal/000077500000000000000000000000001507671574500225505ustar00rootroot00000000000000gohugoio-hugo-6abdaca/markup/asciidocext/internal/converter.go000066400000000000000000000162011507671574500251060ustar00rootroot00000000000000package internal import ( "bytes" "path/filepath" "strings" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/markup/asciidocext/asciidocext_config" "github.com/gohugoio/hugo/markup/converter" "github.com/gohugoio/hugo/markup/internal" "github.com/gohugoio/hugo/markup/tableofcontents" "golang.org/x/net/html" ) type AsciidocConverter struct { Ctx converter.DocumentContext Cfg converter.ProviderConfig } type AsciidocResult struct { converter.ResultRender toc *tableofcontents.Fragments } /* ToDo: RelPermalink patch for svg posts not working*/ type pageSubset interface { RelPermalink() string } func (r AsciidocResult) TableOfContents() *tableofcontents.Fragments { return r.toc } func (a *AsciidocConverter) Convert(ctx converter.RenderContext) (converter.ResultRender, error) { b, err := a.GetAsciidocContent(ctx.Src, a.Ctx) if err != nil { return nil, err } content, toc, err := a.extractTOC(b) if err != nil { return nil, err } return AsciidocResult{ ResultRender: converter.Bytes(content), toc: toc, }, nil } func (a *AsciidocConverter) Supports(_ identity.Identity) bool { return false } // GetAsciidocContent calls asciidoctor as an external helper // to convert AsciiDoc content to HTML. func (a *AsciidocConverter) GetAsciidocContent(src []byte, ctx converter.DocumentContext) ([]byte, error) { if !HasAsciiDoc() { a.Cfg.Logger.Errorln("asciidoctor not found in $PATH: Please install.\n", " Leaving AsciiDoc content unrendered.") return src, nil } args := a.ParseArgs(ctx) args = append(args, "-") a.Cfg.Logger.Infoln("Rendering", ctx.DocumentName, " using asciidoctor args", args, "...") return internal.ExternallyRenderContent(a.Cfg, ctx, src, asciiDocBinaryName, args) } func (a *AsciidocConverter) ParseArgs(ctx converter.DocumentContext) []string { cfg := a.Cfg.MarkupConfig().AsciidocExt args := []string{} args = a.AppendArg(args, "-b", cfg.Backend, asciidocext_config.CliDefault.Backend, asciidocext_config.AllowedBackend) for _, extension := range cfg.Extensions { if strings.LastIndexAny(extension, `\/.`) > -1 { a.Cfg.Logger.Errorln("Unsupported asciidoctor extension was passed in. Extension `" + extension + "` ignored. Only installed asciidoctor extensions are allowed.") continue } args = append(args, "-r", extension) } for attributeKey, attributeValue := range cfg.Attributes { if asciidocext_config.DisallowedAttributes[attributeKey] { a.Cfg.Logger.Errorln("Unsupported asciidoctor attribute was passed in. Attribute `" + attributeKey + "` ignored.") continue } args = append(args, "-a", attributeKey+"="+attributeValue) } if cfg.WorkingFolderCurrent { contentDir := filepath.Dir(ctx.Filename) destinationDir := a.Cfg.Conf.BaseConfig().PublishDir if destinationDir == "" { a.Cfg.Logger.Errorln("markup.asciidocext.workingFolderCurrent requires hugo command option --destination to be set") } var outDir string var err error file := filepath.Base(ctx.Filename) if a.Cfg.Conf.IsUglyURLs("") || file == "_index.adoc" || file == "index.adoc" { outDir, err = filepath.Abs(filepath.Dir(filepath.Join(destinationDir, ctx.DocumentName))) } else { postDir := "" page, ok := ctx.Document.(pageSubset) if ok { postDir = filepath.Base(page.RelPermalink()) } else { a.Cfg.Logger.Errorln("unable to cast interface to pageSubset") } outDir, err = filepath.Abs(filepath.Join(destinationDir, filepath.Dir(ctx.DocumentName), postDir)) } if err != nil { a.Cfg.Logger.Errorln("asciidoctor outDir: ", err) } args = append(args, "--base-dir", contentDir, "-a", "outdir="+outDir) } if cfg.NoHeaderOrFooter { args = append(args, "--no-header-footer") } else { a.Cfg.Logger.Warnln("asciidoctor parameter NoHeaderOrFooter is expected for correct html rendering") } if cfg.SectionNumbers { args = append(args, "--section-numbers") } if cfg.Verbose { args = append(args, "--verbose") } if cfg.Trace { args = append(args, "--trace") } args = a.AppendArg(args, "--failure-level", cfg.FailureLevel, asciidocext_config.CliDefault.FailureLevel, asciidocext_config.AllowedFailureLevel) args = a.AppendArg(args, "--safe-mode", cfg.SafeMode, asciidocext_config.CliDefault.SafeMode, asciidocext_config.AllowedSafeMode) return args } func (a *AsciidocConverter) AppendArg(args []string, option, value, defaultValue string, allowedValues map[string]bool) []string { if value != defaultValue { if allowedValues[value] { args = append(args, option, value) } else { a.Cfg.Logger.Errorln("Unsupported asciidoctor value `" + value + "` for option " + option + " was passed in and will be ignored.") } } return args } const asciiDocBinaryName = "asciidoctor" func HasAsciiDoc() bool { return hexec.InPath(asciiDocBinaryName) } // extractTOC extracts the toc from the given src html. // It returns the html without the TOC, and the TOC data func (a *AsciidocConverter) extractTOC(src []byte) ([]byte, *tableofcontents.Fragments, error) { var buf bytes.Buffer buf.Write(src) node, err := html.Parse(&buf) if err != nil { return nil, nil, err } var ( f func(*html.Node) bool toc *tableofcontents.Fragments toVisit []*html.Node ) f = func(n *html.Node) bool { if n.Type == html.ElementNode && n.Data == "div" && attr(n, "id") == "toc" { toc = parseTOC(n) if !a.Cfg.MarkupConfig().AsciidocExt.PreserveTOC { n.Parent.RemoveChild(n) } return true } if n.FirstChild != nil { toVisit = append(toVisit, n.FirstChild) } if n.NextSibling != nil && f(n.NextSibling) { return true } for len(toVisit) > 0 { nv := toVisit[0] toVisit = toVisit[1:] if f(nv) { return true } } return false } f(node) if err != nil { return nil, nil, err } buf.Reset() err = html.Render(&buf, node) if err != nil { return nil, nil, err } // ltrim and rtrim which are added by html.Render res := buf.Bytes()[25:] res = res[:len(res)-14] return res, toc, nil } // parseTOC returns a TOC root from the given toc Node func parseTOC(doc *html.Node) *tableofcontents.Fragments { var ( toc tableofcontents.Builder f func(*html.Node, int, int) ) f = func(n *html.Node, row, level int) { if n.Type == html.ElementNode { switch n.Data { case "ul": if level == 0 { row++ } level++ f(n.FirstChild, row, level) case "li": for c := n.FirstChild; c != nil; c = c.NextSibling { if c.Type != html.ElementNode || c.Data != "a" { continue } href := attr(c, "href")[1:] toc.AddAt(&tableofcontents.Heading{ Title: nodeContent(c), ID: href, Level: level + 1, }, row, level) } f(n.FirstChild, row, level) } } if n.NextSibling != nil { f(n.NextSibling, row, level) } } f(doc.FirstChild, -1, 0) return toc.Build() } func attr(node *html.Node, key string) string { for _, a := range node.Attr { if a.Key == key { return a.Val } } return "" } func nodeContent(node *html.Node) string { var buf bytes.Buffer for c := node.FirstChild; c != nil; c = c.NextSibling { html.Render(&buf, c) } return buf.String() } gohugoio-hugo-6abdaca/markup/blackfriday/000077500000000000000000000000001507671574500207105ustar00rootroot00000000000000gohugoio-hugo-6abdaca/markup/blackfriday/anchors.go000066400000000000000000000027171507671574500227030ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package blackfriday holds some compatibility functions for the old Blackfriday v1 Markdown engine. package blackfriday import "unicode" // SanitizedAnchorName is how Blackfriday sanitizes anchor names. // Implementation borrowed from https://github.com/russross/blackfriday/blob/a477dd1646916742841ed20379f941cfa6c5bb6f/block.go#L1464 // Note that Hugo removed its Blackfriday support in v0.100.0, but you can still use this strategy for // auto ID generation. func SanitizedAnchorName(text string) string { var anchorName []rune futureDash := false for _, r := range text { switch { case unicode.IsLetter(r) || unicode.IsNumber(r): if futureDash && len(anchorName) > 0 { anchorName = append(anchorName, '-') } futureDash = false anchorName = append(anchorName, unicode.ToLower(r)) default: futureDash = true } } return string(anchorName) } gohugoio-hugo-6abdaca/markup/converter/000077500000000000000000000000001507671574500204445ustar00rootroot00000000000000gohugoio-hugo-6abdaca/markup/converter/converter.go000066400000000000000000000104001507671574500227750ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package converter import ( "bytes" "context" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/markup/converter/hooks" "github.com/gohugoio/hugo/markup/highlight" "github.com/gohugoio/hugo/markup/markup_config" "github.com/gohugoio/hugo/markup/tableofcontents" "github.com/spf13/afero" ) // ProviderConfig configures a new Provider. type ProviderConfig struct { Conf config.AllProvider // Site config ContentFs afero.Fs Logger loggers.Logger Exec *hexec.Exec highlight.Highlighter } func (p ProviderConfig) MarkupConfig() markup_config.Config { return p.Conf.GetConfigSection("markup").(markup_config.Config) } // ProviderProvider creates converter providers. type ProviderProvider interface { New(cfg ProviderConfig) (Provider, error) } // Provider creates converters. type Provider interface { New(ctx DocumentContext) (Converter, error) Name() string } // NewProvider creates a new Provider with the given name. func NewProvider(name string, create func(ctx DocumentContext) (Converter, error)) Provider { return newConverter{ name: name, create: create, } } type newConverter struct { name string create func(ctx DocumentContext) (Converter, error) } func (n newConverter) New(ctx DocumentContext) (Converter, error) { return n.create(ctx) } func (n newConverter) Name() string { return n.name } var NopConverter = new(nopConverter) type nopConverter int func (nopConverter) Convert(ctx RenderContext) (ResultRender, error) { return &bytes.Buffer{}, nil } func (nopConverter) Supports(feature identity.Identity) bool { return false } // Converter wraps the Convert method that converts some markup into // another format, e.g. Markdown to HTML. type Converter interface { Convert(ctx RenderContext) (ResultRender, error) } // ParseRenderer is an optional interface. // The Goldmark converter implements this, and this allows us // to extract the ToC without having to render the content. type ParseRenderer interface { Parse(RenderContext) (ResultParse, error) Render(RenderContext, any) (ResultRender, error) } // ResultRender represents the minimum returned from Convert and Render. type ResultRender interface { Bytes() []byte } // ResultParse represents the minimum returned from Parse. type ResultParse interface { Doc() any TableOfContents() *tableofcontents.Fragments } // DocumentInfo holds additional information provided by some converters. type DocumentInfo interface { AnchorSuffix() string } // TableOfContentsProvider provides the content as a ToC structure. type TableOfContentsProvider interface { TableOfContents() *tableofcontents.Fragments } // AnchorNameSanitizer tells how a converter sanitizes anchor names. type AnchorNameSanitizer interface { SanitizeAnchorName(s string) string } // Bytes holds a byte slice and implements the Result interface. type Bytes []byte // Bytes returns itself func (b Bytes) Bytes() []byte { return b } // DocumentContext holds contextual information about the document to convert. type DocumentContext struct { Document any // May be nil. Usually a page.Page DocumentLookup func(uint64) any // May be nil. DocumentID string DocumentName string Filename string } // RenderContext holds contextual information about the content to render. type RenderContext struct { // Ctx is the context.Context for the current Page render. Ctx context.Context // Src is the content to render. Src []byte // Whether to render TableOfContents. RenderTOC bool // GerRenderer provides hook renderers on demand. GetRenderer hooks.GetRendererFunc } gohugoio-hugo-6abdaca/markup/converter/hooks/000077500000000000000000000000001507671574500215675ustar00rootroot00000000000000gohugoio-hugo-6abdaca/markup/converter/hooks/hooks.go000066400000000000000000000146411507671574500232470ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package hooks import ( "context" "io" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/common/text" "github.com/gohugoio/hugo/common/types/hstring" "github.com/gohugoio/hugo/markup/internal/attributes" ) var _ AttributesOptionsSliceProvider = (*attributes.AttributesHolder)(nil) type AttributesProvider interface { // Attributes passed in from Markdown (e.g. { attrName1=attrValue1 attrName2="attr Value 2" }). Attributes() map[string]any } // LinkContext is the context passed to a link render hook. type LinkContext interface { PageProvider // The link URL. Destination() string // The link title attribute. Title() string // The rendered (HTML) text. Text() hstring.HTML // The plain variant of Text. PlainText() string } // ImageLinkContext is the context passed to a image link render hook. type ImageLinkContext interface { LinkContext // Returns true if this is a standalone image and the config option // markup.goldmark.parser.wrapStandAloneImageWithinParagraph is disabled. IsBlock() bool // Zero-based ordinal for all the images in the current document. Ordinal() int } // CodeblockContext is the context passed to a code block render hook. type CodeblockContext interface { BaseContext AttributesProvider // Chroma highlighting processing options. This will only be filled if Type is a known Chroma Lexer. Options() map[string]any // The type of code block. This will be the programming language, e.g. bash, when doing code highlighting. Type() string // The text between the code fences. Inner() string } // TableContext is the context passed to a table render hook. type TableContext interface { BaseContext AttributesProvider THead() []TableRow TBody() []TableRow } // BaseContext is the base context used in most render hooks. type BaseContext interface { text.Positioner PageProvider // Zero-based ordinal for all elements of this kind in the current document. Ordinal() int } // BlockquoteContext is the context passed to a blockquote render hook. type BlockquoteContext interface { BaseContext AttributesProvider // The blockquote text. // If type is "alert", this will be the alert text. Text() hstring.HTML /// Returns the blockquote type, one of "regular" and "alert". // Type "alert" indicates that this is a GitHub type alert. Type() string // The GitHub alert type converted to lowercase, e.g. "note". // Only set if Type is "alert". AlertType() string // The alert title. // Currently only relevant for Obsidian alerts. // GitHub does not suport alert titles and will not render alerts with titles. AlertTitle() hstring.HTML // The alert sign, "+" or "-" or "" used to indicate folding. // Currently only relevant for Obsidian alerts. // GitHub does not suport alert signs and will not render alerts with signs. AlertSign() string } type PositionerSourceTargetProvider interface { // For internal use. PositionerSourceTarget() []byte } // PassThroughContext is the context passed to a passthrough render hook. type PassthroughContext interface { BaseContext AttributesProvider // Currently one of "inline" or "block". Type() string // The inner content of the passthrough element, excluding the delimiters. Inner() string } type AttributesOptionsSliceProvider interface { AttributesSlice() []attributes.Attribute OptionsSlice() []attributes.Attribute } type LinkRenderer interface { RenderLink(cctx context.Context, w io.Writer, ctx LinkContext) error } type CodeBlockRenderer interface { RenderCodeblock(cctx context.Context, w hugio.FlexiWriter, ctx CodeblockContext) error } type BlockquoteRenderer interface { RenderBlockquote(cctx context.Context, w hugio.FlexiWriter, ctx BlockquoteContext) error } type TableRenderer interface { RenderTable(cctx context.Context, w hugio.FlexiWriter, ctx TableContext) error } type PassthroughRenderer interface { RenderPassthrough(cctx context.Context, w io.Writer, ctx PassthroughContext) error } type IsDefaultCodeBlockRendererProvider interface { IsDefaultCodeBlockRenderer() bool } // HeadingContext contains accessors to all attributes that a HeadingRenderer // can use to render a heading. type HeadingContext interface { PageProvider // Level is the level of the header (i.e. 1 for top-level, 2 for sub-level, etc.). Level() int // Anchor is the HTML id assigned to the heading. Anchor() string // Text is the rendered (HTML) heading text, excluding the heading marker. Text() hstring.HTML // PlainText is the unrendered version of Text. PlainText() string // Attributes (e.g. CSS classes) AttributesProvider } type PageProvider interface { // Page is the page being rendered. Page() any // PageInner may be different than Page when .RenderShortcodes is in play. // The main use case for this is to include other pages' markdown into the current page // but resolve resources and pages relative to the original. PageInner() any } // HeadingRenderer describes a uniquely identifiable rendering hook. type HeadingRenderer interface { // RenderHeading writes the rendered content to w using the data in w. RenderHeading(cctx context.Context, w io.Writer, ctx HeadingContext) error } // ElementPositionResolver provides a way to resolve the start Position // of a markdown element in the original source document. // This may be both slow and approximate, so should only be // used for error logging. type ElementPositionResolver interface { ResolvePosition(ctx any) text.Position } type RendererType int const ( LinkRendererType RendererType = iota + 1 ImageRendererType HeadingRendererType CodeBlockRendererType PassthroughRendererType BlockquoteRendererType TableRendererType ) type GetRendererFunc func(t RendererType, id any) any type TableCell struct { Text hstring.HTML Alignment string // left, center, or right } type TableRow []TableCell type Table struct { THead []TableRow TBody []TableRow } gohugoio-hugo-6abdaca/markup/goldmark/000077500000000000000000000000001507671574500202355ustar00rootroot00000000000000gohugoio-hugo-6abdaca/markup/goldmark/autoid.go000066400000000000000000000073311507671574500220550ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package goldmark import ( "bytes" "strconv" "unicode" "unicode/utf8" "github.com/gohugoio/hugo/markup/blackfriday" "github.com/gohugoio/hugo/markup/goldmark/goldmark_config" "github.com/gohugoio/hugo/common/text" "github.com/yuin/goldmark/ast" east "github.com/yuin/goldmark/extension/ast" "github.com/yuin/goldmark/parser" "github.com/yuin/goldmark/util" bp "github.com/gohugoio/hugo/bufferpool" ) func sanitizeAnchorNameString(s string, idType string) string { return string(sanitizeAnchorName([]byte(s), idType)) } func sanitizeAnchorName(b []byte, idType string) []byte { return sanitizeAnchorNameWithHook(b, idType, nil) } func sanitizeAnchorNameWithHook(b []byte, idType string, hook func(buf *bytes.Buffer)) []byte { buf := bp.GetBuffer() if idType == goldmark_config.AutoIDTypeBlackfriday { // TODO(bep) make it more efficient. buf.WriteString(blackfriday.SanitizedAnchorName(string(b))) } else { asciiOnly := idType == goldmark_config.AutoIDTypeGitHubAscii if asciiOnly { // Normalize it to preserve accents if possible. b = text.RemoveAccents(b) } b = bytes.TrimSpace(b) for len(b) > 0 { r, size := utf8.DecodeRune(b) switch { case asciiOnly && size != 1: case r == '-' || r == ' ': buf.WriteRune('-') case isAlphaNumeric(r): buf.WriteRune(unicode.ToLower(r)) default: } b = b[size:] } } if hook != nil { hook(buf) } result := make([]byte, buf.Len()) copy(result, buf.Bytes()) bp.PutBuffer(buf) return result } func isAlphaNumeric(r rune) bool { return r == '_' || unicode.IsLetter(r) || unicode.IsDigit(r) } var _ parser.IDs = (*idFactory)(nil) type idFactory struct { idType string vals map[string]struct{} duplicates []string } func newIDFactory(idType string) *idFactory { return &idFactory{ vals: make(map[string]struct{}), idType: idType, } } type stringValuesProvider interface { StringValues() []string } var _ stringValuesProvider = (*idFactory)(nil) func (ids *idFactory) StringValues() []string { values := make([]string, 0, len(ids.vals)) for k := range ids.vals { values = append(values, k) } values = append(values, ids.duplicates...) return values } func (ids *idFactory) Generate(value []byte, kind ast.NodeKind) []byte { return sanitizeAnchorNameWithHook(value, ids.idType, func(buf *bytes.Buffer) { if buf.Len() == 0 { if kind == ast.KindHeading { buf.WriteString("heading") } else if kind == east.KindDefinitionTerm { buf.WriteString("term") } else { buf.WriteString("id") } } if _, found := ids.vals[util.BytesToReadOnlyString(buf.Bytes())]; found { // Append a hyphen and a number, starting with 1. buf.WriteRune('-') pos := buf.Len() for i := 1; ; i++ { buf.WriteString(strconv.Itoa(i)) if _, found := ids.vals[util.BytesToReadOnlyString(buf.Bytes())]; !found { break } buf.Truncate(pos) } } ids.put(buf.String()) }) } func (ids *idFactory) put(s string) { if _, found := ids.vals[s]; found { ids.duplicates = append(ids.duplicates, s) } else { ids.vals[s] = struct{}{} } } func (ids *idFactory) Put(value []byte) { ids.put(string(value)) } gohugoio-hugo-6abdaca/markup/goldmark/autoid_test.go000066400000000000000000000072311507671574500231130ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package goldmark import ( "strings" "testing" "github.com/gohugoio/hugo/markup/goldmark/goldmark_config" qt "github.com/frankban/quicktest" ) func TestSanitizeAnchorName(t *testing.T) { c := qt.New(t) // Tests generated manually on github.com tests := ` God is good: 神真美好 Number 32 Question? 1+2=3 Special !"#$%&(parens)=?´* chars Resumé One-Hyphen Multiple--Hyphens Trailing hyphen- Many spaces here Forward/slash Backward\slash Under_score Nonbreaking Space Tab Space ` expect := ` god-is-good-神真美好 number-32 question 123 special-parens-chars resumé one-hyphen multiple--hyphens trailing-hyphen- many---spaces--here forwardslash backwardslash under_score nonbreakingspace tabspace ` tests, expect = strings.TrimSpace(tests), strings.TrimSpace(expect) testlines, expectlines := strings.Split(tests, "\n"), strings.Split(expect, "\n") testlines = append(testlines, "Trailing Space ") expectlines = append(expectlines, "trailing-space") if len(testlines) != len(expectlines) { panic("test setup failed") } for i, input := range testlines { input := input expect := expectlines[i] c.Run(input, func(c *qt.C) { b := []byte(input) got := string(sanitizeAnchorName(b, goldmark_config.AutoIDTypeGitHub)) c.Assert(got, qt.Equals, expect) c.Assert(sanitizeAnchorNameString(input, goldmark_config.AutoIDTypeGitHub), qt.Equals, expect) c.Assert(string(b), qt.Equals, input) }) } } func TestSanitizeAnchorNameAsciiOnly(t *testing.T) { c := qt.New(t) c.Assert(sanitizeAnchorNameString("god is神真美好 good", goldmark_config.AutoIDTypeGitHubAscii), qt.Equals, "god-is-good") c.Assert(sanitizeAnchorNameString("Resumé", goldmark_config.AutoIDTypeGitHubAscii), qt.Equals, "resume") } func TestSanitizeAnchorNameBlackfriday(t *testing.T) { c := qt.New(t) c.Assert(sanitizeAnchorNameString("Let's try this, shall we?", goldmark_config.AutoIDTypeBlackfriday), qt.Equals, "let-s-try-this-shall-we") } func BenchmarkSanitizeAnchorName(b *testing.B) { input := []byte("God is good: 神真美好") b.ResetTimer() for i := 0; i < b.N; i++ { result := sanitizeAnchorName(input, goldmark_config.AutoIDTypeGitHub) if len(result) != 24 { b.Fatalf("got %d", len(result)) } } } func BenchmarkSanitizeAnchorNameAsciiOnly(b *testing.B) { input := []byte("God is good: 神真美好") b.ResetTimer() for i := 0; i < b.N; i++ { result := sanitizeAnchorName(input, goldmark_config.AutoIDTypeGitHubAscii) if len(result) != 12 { b.Fatalf("got %d", len(result)) } } } func BenchmarkSanitizeAnchorNameBlackfriday(b *testing.B) { input := []byte("God is good: 神真美好") b.ResetTimer() for i := 0; i < b.N; i++ { result := sanitizeAnchorName(input, goldmark_config.AutoIDTypeBlackfriday) if len(result) != 24 { b.Fatalf("got %d", len(result)) } } } func BenchmarkSanitizeAnchorNameString(b *testing.B) { input := "God is good: 神真美好" b.ResetTimer() for i := 0; i < b.N; i++ { result := sanitizeAnchorNameString(input, goldmark_config.AutoIDTypeGitHub) if len(result) != 24 { b.Fatalf("got %d", len(result)) } } } gohugoio-hugo-6abdaca/markup/goldmark/blockquotes/000077500000000000000000000000001507671574500225705ustar00rootroot00000000000000gohugoio-hugo-6abdaca/markup/goldmark/blockquotes/blockquotes.go000066400000000000000000000120001507671574500254430ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package blockquotes import ( "regexp" "strings" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/types/hstring" "github.com/gohugoio/hugo/markup/converter/hooks" "github.com/gohugoio/hugo/markup/goldmark/internal/render" "github.com/gohugoio/hugo/markup/internal/attributes" "github.com/yuin/goldmark" "github.com/yuin/goldmark/ast" "github.com/yuin/goldmark/renderer" "github.com/yuin/goldmark/renderer/html" "github.com/yuin/goldmark/util" ) type ( blockquotesExtension struct{} htmlRenderer struct{} ) func New() goldmark.Extender { return &blockquotesExtension{} } func (e *blockquotesExtension) Extend(m goldmark.Markdown) { m.Renderer().AddOptions(renderer.WithNodeRenderers( util.Prioritized(newHTMLRenderer(), 100), )) } func newHTMLRenderer() renderer.NodeRenderer { r := &htmlRenderer{} return r } func (r *htmlRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { reg.Register(ast.KindBlockquote, r.renderBlockquote) } const ( typeRegular = "regular" typeAlert = "alert" ) func (r *htmlRenderer) renderBlockquote(w util.BufWriter, src []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { ctx := w.(*render.Context) n := node.(*ast.Blockquote) if entering { // Store the current pos so we can capture the rendered text. ctx.PushPos(ctx.Buffer.Len()) return ast.WalkContinue, nil } text := ctx.PopRenderedString() ordinal := ctx.GetAndIncrementOrdinal(ast.KindBlockquote) typ := typeRegular alert := resolveBlockQuoteAlert(text) if alert.typ != "" { typ = typeAlert } renderer := ctx.RenderContext().GetRenderer(hooks.BlockquoteRendererType, typ) if renderer == nil { return r.renderBlockquoteDefault(w, n, text) } if typ == typeAlert { // Parse the blockquote content to determine the alert text. The alert // text begins after the first newline, but we need to add an opening p // tag if the first line of the blockquote content does not have a // closing p tag. At some point we might want to move this to the // parser. before, after, found := strings.Cut(strings.TrimSpace(text), "\n") if found { if strings.HasSuffix(before, "

      ") { text = after } else { text = "

      " + after } } else { text = "" } } bqctx := &blockquoteContext{ BaseContext: render.NewBaseContext(ctx, renderer, n, src, nil, ordinal), typ: typ, alert: alert, text: hstring.HTML(text), AttributesHolder: attributes.New(n.Attributes(), attributes.AttributesOwnerGeneral), } cr := renderer.(hooks.BlockquoteRenderer) err := cr.RenderBlockquote( ctx.RenderContext().Ctx, w, bqctx, ) if err != nil { return ast.WalkContinue, herrors.NewFileErrorFromPos(err, bqctx.Position()) } return ast.WalkContinue, nil } // Code borrowed from goldmark's html renderer. func (r *htmlRenderer) renderBlockquoteDefault( w util.BufWriter, n ast.Node, text string, ) (ast.WalkStatus, error) { if n.Attributes() != nil { _, _ = w.WriteString("') } else { _, _ = w.WriteString("

      \n") } _, _ = w.WriteString(text) _, _ = w.WriteString("
      \n") return ast.WalkContinue, nil } type blockquoteContext struct { hooks.BaseContext text hstring.HTML typ string alert blockQuoteAlert *attributes.AttributesHolder } func (c *blockquoteContext) Type() string { return c.typ } func (c *blockquoteContext) AlertType() string { return c.alert.typ } func (c *blockquoteContext) AlertTitle() hstring.HTML { return hstring.HTML(c.alert.title) } func (c *blockquoteContext) AlertSign() string { return c.alert.sign } func (c *blockquoteContext) Text() hstring.HTML { return c.text } var blockQuoteAlertRe = regexp.MustCompile(`^

      \[!([a-zA-Z]+)\](-|\+)?[^\S\r\n]?([^\n]*)\n?`) func resolveBlockQuoteAlert(s string) blockQuoteAlert { m := blockQuoteAlertRe.FindStringSubmatch(strings.TrimSpace(s)) if len(m) == 4 { title := strings.TrimSpace(m[3]) title = strings.TrimSuffix(title, "

      ") return blockQuoteAlert{ typ: strings.ToLower(m[1]), sign: m[2], title: title, } } return blockQuoteAlert{} } // Blockquote alert syntax was introduced by GitHub, but is also used // by Obsidian which also support some extended attributes: More types, alert titles and a +/- sign for folding. type blockQuoteAlert struct { typ string sign string title string } gohugoio-hugo-6abdaca/markup/goldmark/blockquotes/blockquotes_integration_test.go000066400000000000000000000163641507671574500311260ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package blockquotes_test import ( "path/filepath" "strings" "testing" "github.com/gohugoio/hugo/hugolib" ) func TestBlockquoteHook(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- [markup] [markup.goldmark] [markup.goldmark.parser] [markup.goldmark.parser.attribute] block = true title = true -- layouts/_default/_markup/render-blockquote.html -- Blockquote: |{{ .Text }}|{{ .Type }}| -- layouts/_default/_markup/render-blockquote-alert.html -- {{ $text := .Text }} Blockquote Alert: |{{ $text }}|{{ .Type }}| Blockquote Alert Attributes: |{{ $text }}|{{ .Attributes }}| Blockquote Alert Page: |{{ $text }}|{{ .Page.Title }}|{{ .PageInner.Title }}| {{ if .Attributes.showpos }} Blockquote Alert Position: |{{ $text }}|{{ .Position | safeHTML }}| {{ end }} -- layouts/_default/single.html -- Content: {{ .Content }} -- content/p1.md -- --- title: "p1" --- > [!NOTE] > This is a note with some whitespace after the alert type. > [!TIP] > This is a tip. > [!CAUTION] > This is a caution with some whitespace before the alert type. > A regular blockquote. > [!TIP] > This is a tip with attributes. {class="foo bar" id="baz"} > [!NOTE] > Note triggering showing the position. {showpos="true"} > [!nOtE] > Mixed case alert type. ` b := hugolib.Test(t, files) b.AssertFileContentExact("public/p1/index.html", "Blockquote Alert: |

      This is a note with some whitespace after the alert type.

      |alert|", "Blockquote Alert: |

      This is a tip.

      ", "Blockquote Alert: |

      This is a caution with some whitespace before the alert type.

      |alert|", "Blockquote: |

      A regular blockquote.

      \n|regular|", "Blockquote Alert Attributes: |

      This is a tip with attributes.

      |map[class:foo bar id:baz]|", filepath.FromSlash("/content/p1.md:19:3"), "Blockquote Alert Page: |

      This is a tip with attributes.

      |p1|p1|", // Issue 12767. "Blockquote Alert: |

      Mixed case alert type.

      |alert", ) } func TestBlockquoteEmptyIssue12756(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- -- content/p1.md -- --- title: "p1" --- > -- layouts/_default/single.html -- Content: {{ .Content }} ` b := hugolib.Test(t, files) b.AssertFileContentExact("public/p1/index.html", "Content:
      \n
      \n") } func TestBlockquObsidianWithTitleAndSign(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- -- content/_index.md -- --- title: "Home" --- > [!danger] > Do not approach or handle without protective gear. > [!tip] Callouts can have custom titles > Like this one. > [!tip] Title-only callout > [!faq]- Foldable negated callout > Yes! In a foldable callout, the contents are hidden when the callout is collapsed > [!faq]+ Foldable callout > Yes! In a foldable callout, the contents are hidden when the callout is collapsed > [!info] Can callouts be nested? > > [!important] Yes!, they can. > > > [!tip] You can even use multiple layers of nesting. -- layouts/index.html -- {{ .Content }} -- layouts/_default/_markup/render-blockquote.html -- AlertType: {{ .AlertType }}|AlertTitle: {{ .AlertTitle }}|AlertSign: {{ .AlertSign | safeHTML }}|Text: {{ .Text }}| ` b := hugolib.Test(t, files) b.AssertFileContentExact("public/index.html", "AlertType: tip|AlertTitle: Callouts can have custom titles|AlertSign: |", "AlertType: tip|AlertTitle: Title-only callout|AlertSign: |", "AlertType: faq|AlertTitle: Foldable negated callout|AlertSign: -|Text:

      Yes! In a foldable callout, the contents are hidden when the callout is collapsed

      |", "AlertType: faq|AlertTitle: Foldable callout|AlertSign: +|Text:

      Yes! In a foldable callout, the contents are hidden when the callout is collapsed

      |", "AlertType: danger|AlertTitle: |AlertSign: |Text:

      Do not approach or handle without protective gear.

      |", "AlertTitle: Can callouts be nested?|", "AlertTitle: You can even use multiple layers of nesting.|", ) } // Issue 12913 // Issue 13119 // Issue 13302 func TestBlockquoteRenderHookTextParsing(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['page','rss','section','sitemap','taxonomy','term'] -- layouts/index.html -- {{ .Content }} -- layouts/_default/_markup/render-blockquote.html -- AlertType: {{ .AlertType }}|AlertTitle: {{ .AlertTitle }}|Text: {{ .Text }}| -- content/_index.md -- --- title: home --- > [!one] > [!two] title > [!three] > line 1 > [!four] title > line 1 > [!five] > line 1 > line 2 > [!six] title > line 1 > line 2 > [!seven] > - list item > [!eight] title > - list item > [!nine] > line 1 > - list item > [!ten] title > line 1 > - list item > [!eleven] > line 1 > - list item > > line 2 > [!twelve] title > line 1 > - list item > > line 2 > [!thirteen] > ![alt](a.jpg) > [!fourteen] title > ![alt](a.jpg) > [!fifteen] _title_ > [!sixteen] _title_ > line one > seventeen ` b := hugolib.Test(t, files) b.AssertFileContent("public/index.html", "AlertType: one|AlertTitle: |Text: |", "AlertType: two|AlertTitle: title|Text: |", "AlertType: three|AlertTitle: |Text:

      line 1

      |", "AlertType: four|AlertTitle: title|Text:

      line 1

      |", "AlertType: five|AlertTitle: |Text:

      line 1\nline 2

      |", "AlertType: six|AlertTitle: title|Text:

      line 1\nline 2

      |", "AlertType: seven|AlertTitle: |Text:
        \n
      • list item
      • \n
      |", "AlertType: eight|AlertTitle: title|Text:
        \n
      • list item
      • \n
      |", "AlertType: nine|AlertTitle: |Text:

      line 1

      \n
        \n
      • list item
      • \n
      |", "AlertType: ten|AlertTitle: title|Text:

      line 1

      \n
        \n
      • list item
      • \n
      |", "AlertType: eleven|AlertTitle: |Text:

      line 1

      \n
        \n
      • list item
      • \n
      \n

      line 2

      |", "AlertType: twelve|AlertTitle: title|Text:

      line 1

      \n
        \n
      • list item
      • \n
      \n

      line 2

      |", "AlertType: thirteen|AlertTitle: |Text:

      \"alt\"

      |", "AlertType: fourteen|AlertTitle: title|Text:

      \"alt\"

      |", "AlertType: fifteen|AlertTitle: title|Text: |", "AlertType: sixteen|AlertTitle: title|Text:

      line one

      |", "AlertType: |AlertTitle: |Text:

      seventeen

      \n|", ) } // Issue14046 func TestBlockquoteDefaultOutput(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['home','rss','section','sitemap','taxonomy','term'] -- content/p1.md -- --- title: p1 --- > foo -- layouts/page.html -- |{{ .Content }}| -- xxx --
      {{ .Text }}
      ` want := "|
      \n

      foo

      \n
      \n|" b := hugolib.Test(t, files) b.AssertFileContent("public/p1/index.html", want) // fail files = strings.ReplaceAll(files, "xxx", "layouts/_markup/render-blockquote.html") b = hugolib.Test(t, files) b.AssertFileContent("public/p1/index.html", want) } gohugoio-hugo-6abdaca/markup/goldmark/blockquotes/blockquotes_test.go000066400000000000000000000034041507671574500265120ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package blockquotes import ( "testing" qt "github.com/frankban/quicktest" ) func TestResolveBlockQuoteAlert(t *testing.T) { t.Parallel() c := qt.New(t) tests := []struct { input string expected blockQuoteAlert }{ { input: "[!NOTE]", expected: blockQuoteAlert{typ: "note"}, }, { input: "[!FaQ]", expected: blockQuoteAlert{typ: "faq"}, }, { input: "[!NOTE]+", expected: blockQuoteAlert{typ: "note", sign: "+"}, }, { input: "[!NOTE]-", expected: blockQuoteAlert{typ: "note", sign: "-"}, }, { input: "[!NOTE] This is a note", expected: blockQuoteAlert{typ: "note", title: "This is a note"}, }, { input: "[!NOTE]+ This is a note", expected: blockQuoteAlert{typ: "note", sign: "+", title: "This is a note"}, }, { input: "[!NOTE]+ This is a title\nThis is not.", expected: blockQuoteAlert{typ: "note", sign: "+", title: "This is a title"}, }, { input: "[!NOTE]\nThis is not.", expected: blockQuoteAlert{typ: "note"}, }, } for i, test := range tests { c.Assert(resolveBlockQuoteAlert("

      "+test.input+"

      "), qt.Equals, test.expected, qt.Commentf("Test %d", i)) } } gohugoio-hugo-6abdaca/markup/goldmark/codeblocks/000077500000000000000000000000001507671574500223455ustar00rootroot00000000000000gohugoio-hugo-6abdaca/markup/goldmark/codeblocks/codeblocks_integration_test.go000066400000000000000000000203461507671574500304530ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package codeblocks_test import ( "path/filepath" "strings" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/hugolib" ) func TestCodeblocks(t *testing.T) { t.Parallel() files := ` -- config.toml -- [markup] [markup.highlight] anchorLineNos = false codeFences = true guessSyntax = false hl_Lines = '' lineAnchors = '' lineNoStart = 1 lineNos = false lineNumbersInTable = true noClasses = false style = 'monokai' tabWidth = 4 -- layouts/_default/_markup/render-codeblock-goat.html -- {{ $diagram := diagrams.Goat .Inner }} Goat SVG:{{ substr $diagram.Wrapped 0 100 | safeHTML }} }}| Goat Attribute: {{ .Attributes.width}}| -- layouts/_default/_markup/render-codeblock-go.html -- Go Code: {{ .Inner | safeHTML }}| Go Language: {{ .Type }}| -- layouts/_default/single.html -- {{ .Content }} -- content/p1.md -- --- title: "p1" --- ## Ascii Diagram §§§goat { width="600" } ---> §§§ ## Go Code §§§go fmt.Println("Hello, World!"); §§§ ## Golang Code §§§go fmt.Println("Hello, Golang!"); §§§ ## Bash Code §§§bash { linenos=inline,hl_lines=[2,"5-6"],linenostart=32 class=blue } echo "l1"; echo "l2"; echo "l3"; echo "l4"; echo "l5"; echo "l6"; echo "l7"; echo "l8"; §§§ ` b := hugolib.Test(t, files) b.AssertFileContent("public/p1/index.html", ` Goat SVG:Go Code\nGo Code: fmt.Println(\"Hello, World!\");\n|\nGo Language: go|", "

      Golang Code

      \nGo Code: fmt.Println(\"Hello, Golang!\");\n|\nGo Language: go|", "

      Bash Code

      \n
      32echo "l1";\n33",
      	)
      }
      
      func TestHighlightCodeblock(t *testing.T) {
      	t.Parallel()
      
      	files := `
      -- config.toml --
      [markup]
      [markup.highlight]
      anchorLineNos = false
      codeFences = true
      guessSyntax = false
      hl_Lines = ''
      lineAnchors = ''
      lineNoStart = 1
      lineNos = false
      lineNumbersInTable = true
      noClasses = false
      style = 'monokai'
      tabWidth = 4
      -- layouts/_default/_markup/render-codeblock.html --
      {{ $result := transform.HighlightCodeBlock . }}
      Inner: |{{ $result.Inner | safeHTML }}|
      Wrapped: |{{ $result.Wrapped | safeHTML }}|
      -- layouts/_default/single.html --
      {{ .Content }}
      -- content/p1.md --
      ---
      title: "p1"
      ---
      
      ## Go Code
      
      §§§go
      fmt.Println("Hello, World!");
      §§§
      
      `
      
      	b := hugolib.Test(t, files)
      
      	b.AssertFileContent("public/p1/index.html",
      		"Inner: |fmt.Println("Hello, World!");|",
      		"Wrapped: |
      fmt.Println("Hello, World!");
      |", ) } func TestCodeblocksBugs(t *testing.T) { t.Parallel() files := ` -- config.toml -- -- layouts/_default/_markup/render-codeblock.html -- {{ .Position | safeHTML }} -- layouts/_default/single.html -- {{ .Content }} -- content/p1.md -- --- title: "p1" --- ## Issue 9627 §§§text {{}} §§§ ` b := hugolib.Test(t, files) b.AssertFileContent("public/p1/index.html", ` # Issue 9627: For the Position in code blocks we try to match the .Inner with the original source. This isn't always possible. p1.md:0:0 `, ) } func TestCodeChomp(t *testing.T) { t.Parallel() files := ` -- config.toml -- -- content/p1.md -- --- title: "p1" --- §§§bash echo "p1"; §§§ -- layouts/_default/single.html -- {{ .Content }} -- layouts/_default/_markup/render-codeblock.html -- |{{ .Inner | safeHTML }}| ` b := hugolib.Test(t, files) b.AssertFileContent("public/p1/index.html", "|echo \"p1\";|") } func TestCodePosition(t *testing.T) { t.Parallel() files := ` -- config.toml -- -- content/p1.md -- --- title: "p1" --- ## Code §§§ echo "p1"; §§§ -- layouts/_default/single.html -- {{ .Content }} -- layouts/_default/_markup/render-codeblock.html -- Position: {{ .Position | safeHTML }} ` b := hugolib.Test(t, files) b.AssertFileContent("public/p1/index.html", filepath.FromSlash("Position: \"/content/p1.md:7:1\"")) } // Issue 10118 func TestAttributes(t *testing.T) { t.Parallel() files := ` -- config.toml -- -- content/p1.md -- --- title: "p1" --- ## Issue 10118 §§§ {foo="bar"} Hello, World! §§§ -- layouts/_default/single.html -- {{ .Content }} -- layouts/_default/_markup/render-codeblock.html -- Attributes: {{ .Attributes }}|Type: {{ .Type }}| ` b := hugolib.Test(t, files) b.AssertFileContent("public/p1/index.html", "

      Issue 10118

      \nAttributes: map[foo:bar]|Type: |") } // Issue 9571 func TestAttributesChroma(t *testing.T) { t.Parallel() files := ` -- config.toml -- -- content/p1.md -- --- title: "p1" --- ## Code §§§LANGUAGE {style=monokai} echo "p1"; §§§ -- layouts/_default/single.html -- {{ .Content }} -- layouts/_default/_markup/render-codeblock.html -- Attributes: {{ .Attributes }}|Options: {{ .Options }}| ` testLanguage := func(language, expect string) { b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{ T: t, TxtarString: strings.ReplaceAll(files, "LANGUAGE", language), }, ).Build() b.AssertFileContent("public/p1/index.html", expect) } testLanguage("bash", "Attributes: map[]|Options: map[style:monokai]|") testLanguage("hugo", "Attributes: map[style:monokai]|Options: map[]|") } func TestPanics(t *testing.T) { files := ` -- config.toml -- [markup] [markup.goldmark] [markup.goldmark.parser] autoHeadingID = true autoHeadingIDType = "github" [markup.goldmark.parser.attribute] block = true title = true -- content/p1.md -- --- title: "p1" --- BLOCK Common -- layouts/_default/single.html -- {{ .Content }} ` for _, test := range []struct { name string markdown string }{ {"issue-9819", "asdf\n: {#myid}"}, } { test := test t.Run(test.name, func(t *testing.T) { t.Parallel() b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{ T: t, TxtarString: strings.ReplaceAll(files, "BLOCK", test.markdown), }, ).Build() b.AssertFileContent("public/p1/index.html", "Common") }) } } // Issue 10835 func TestAttributesValidation(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term"] -- content/p1.md -- --- title: "p1" --- ## Issue 10835 §§§bash { color=red dimensions=300x200 } Hello, World! §§§ -- layouts/index.html -- -- layouts/_default/single.html -- {{ .Content }} -- layouts/_default/_markup/render-codeblock.html -- Attributes: {{ .Attributes }}|Type: {{ .Type }}| ` b, err := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{ T: t, TxtarString: files, }, ).BuildE() b.Assert(err, qt.Not(qt.IsNil)) b.Assert(err.Error(), qt.Contains, "p1.md:7:9\": failed to parse Markdown attributes; you may need to quote the values") } gohugoio-hugo-6abdaca/markup/goldmark/codeblocks/render.go000066400000000000000000000113411507671574500241530ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package codeblocks import ( "bytes" "errors" "fmt" "strings" "github.com/gohugoio/hugo/common/herrors" htext "github.com/gohugoio/hugo/common/text" "github.com/gohugoio/hugo/markup/converter/hooks" "github.com/gohugoio/hugo/markup/goldmark/internal/render" "github.com/gohugoio/hugo/markup/highlight/chromalexers" "github.com/gohugoio/hugo/markup/internal/attributes" "github.com/yuin/goldmark" "github.com/yuin/goldmark/ast" "github.com/yuin/goldmark/parser" "github.com/yuin/goldmark/renderer" "github.com/yuin/goldmark/text" "github.com/yuin/goldmark/util" ) type ( codeBlocksExtension struct{} htmlRenderer struct{} ) func New() goldmark.Extender { return &codeBlocksExtension{} } func (e *codeBlocksExtension) Extend(m goldmark.Markdown) { m.Renderer().AddOptions(renderer.WithNodeRenderers( util.Prioritized(newHTMLRenderer(), 100), )) } func newHTMLRenderer() renderer.NodeRenderer { r := &htmlRenderer{} return r } func (r *htmlRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { reg.Register(ast.KindFencedCodeBlock, r.renderCodeBlock) } func (r *htmlRenderer) renderCodeBlock(w util.BufWriter, src []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { ctx := w.(*render.Context) if entering { return ast.WalkContinue, nil } n := node.(*ast.FencedCodeBlock) lang := getLang(n, src) renderer := ctx.RenderContext().GetRenderer(hooks.CodeBlockRendererType, lang) if renderer == nil { return ast.WalkStop, fmt.Errorf("no code renderer found for %q", lang) } ordinal := ctx.GetAndIncrementOrdinal(ast.KindFencedCodeBlock) var buff bytes.Buffer l := n.Lines().Len() for i := range l { line := n.Lines().At(i) buff.Write(line.Value(src)) } s := htext.Chomp(buff.String()) var info []byte if n.Info != nil { info = n.Info.Segment.Value(src) } attrtp := attributes.AttributesOwnerCodeBlockCustom if isd, ok := renderer.(hooks.IsDefaultCodeBlockRendererProvider); (ok && isd.IsDefaultCodeBlockRenderer()) || chromalexers.Get(lang) != nil { // We say that this is a Chroma code block if it's the default code block renderer // or if the language is supported by Chroma. attrtp = attributes.AttributesOwnerCodeBlockChroma } attrs, attrStr, err := getAttributes(n, info) if err != nil { return ast.WalkStop, &herrors.TextSegmentError{Err: err, Segment: attrStr} } cbctx := &codeBlockContext{ BaseContext: render.NewBaseContext(ctx, renderer, node, src, func() []byte { return []byte(s) }, ordinal), lang: lang, code: s, AttributesHolder: attributes.New(attrs, attrtp), } cr := renderer.(hooks.CodeBlockRenderer) err = cr.RenderCodeblock( ctx.RenderContext().Ctx, w, cbctx, ) if err != nil { return ast.WalkContinue, herrors.NewFileErrorFromPos(err, cbctx.Position()) } return ast.WalkContinue, nil } type codeBlockContext struct { hooks.BaseContext lang string code string *attributes.AttributesHolder } func (c *codeBlockContext) Type() string { return c.lang } func (c *codeBlockContext) Inner() string { return c.code } func getLang(node *ast.FencedCodeBlock, src []byte) string { langWithAttributes := string(node.Language(src)) lang, _, _ := strings.Cut(langWithAttributes, "{") return lang } func getAttributes(node *ast.FencedCodeBlock, infostr []byte) ([]ast.Attribute, string, error) { if node.Attributes() != nil { return node.Attributes(), "", nil } if infostr != nil { attrStartIdx := -1 attrEndIdx := -1 for idx, char := range infostr { if attrEndIdx == -1 && char == '{' { attrStartIdx = idx } if attrStartIdx != -1 && char == '}' { attrEndIdx = idx break } } if attrStartIdx != -1 && attrEndIdx != -1 { n := ast.NewTextBlock() // dummy node for storing attributes attrStr := infostr[attrStartIdx : attrEndIdx+1] if attrs, hasAttr := parser.ParseAttributes(text.NewReader(attrStr)); hasAttr { for _, attr := range attrs { n.SetAttribute(attr.Name, attr.Value) } return n.Attributes(), "", nil } else { return nil, string(attrStr), errors.New("failed to parse Markdown attributes; you may need to quote the values") } } } return nil, "", nil } gohugoio-hugo-6abdaca/markup/goldmark/convert.go000066400000000000000000000236321507671574500222520ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package goldmark converts Markdown to HTML using Goldmark. package goldmark import ( "bytes" "github.com/gohugoio/hugo-goldmark-extensions/extras" "github.com/gohugoio/hugo/markup/goldmark/blockquotes" "github.com/gohugoio/hugo/markup/goldmark/codeblocks" "github.com/gohugoio/hugo/markup/goldmark/goldmark_config" "github.com/gohugoio/hugo/markup/goldmark/hugocontext" "github.com/gohugoio/hugo/markup/goldmark/images" "github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes" "github.com/gohugoio/hugo/markup/goldmark/internal/render" "github.com/gohugoio/hugo/markup/goldmark/passthrough" "github.com/gohugoio/hugo/markup/goldmark/tables" "github.com/yuin/goldmark/util" "github.com/yuin/goldmark" emoji "github.com/yuin/goldmark-emoji" "github.com/yuin/goldmark/ast" "github.com/yuin/goldmark/extension" "github.com/yuin/goldmark/parser" "github.com/yuin/goldmark/renderer" "github.com/yuin/goldmark/renderer/html" "github.com/yuin/goldmark/text" "github.com/gohugoio/hugo/markup/converter" "github.com/gohugoio/hugo/markup/tableofcontents" ) const ( // Don't change this. This pattern is lso used in the image render hooks. internalAttrPrefix = "_h__" ) // Provider is the package entry point. var Provider converter.ProviderProvider = provide{} type provide struct{} func (p provide) New(cfg converter.ProviderConfig) (converter.Provider, error) { md := newMarkdown(cfg) return converter.NewProvider("goldmark", func(ctx converter.DocumentContext) (converter.Converter, error) { return &goldmarkConverter{ ctx: ctx, cfg: cfg, md: md, sanitizeAnchorName: func(s string) string { return sanitizeAnchorNameString(s, cfg.MarkupConfig().Goldmark.Parser.AutoIDType) }, }, nil }), nil } var _ converter.AnchorNameSanitizer = (*goldmarkConverter)(nil) type goldmarkConverter struct { md goldmark.Markdown ctx converter.DocumentContext cfg converter.ProviderConfig sanitizeAnchorName func(s string) string } func (c *goldmarkConverter) SanitizeAnchorName(s string) string { return c.sanitizeAnchorName(s) } func newMarkdown(pcfg converter.ProviderConfig) goldmark.Markdown { mcfg := pcfg.MarkupConfig() cfg := mcfg.Goldmark var rendererOptions []renderer.Option if cfg.Renderer.HardWraps { rendererOptions = append(rendererOptions, html.WithHardWraps()) } if cfg.Renderer.XHTML { rendererOptions = append(rendererOptions, html.WithXHTML()) } if cfg.Renderer.Unsafe { rendererOptions = append(rendererOptions, html.WithUnsafe()) } tocRendererOptions := make([]renderer.Option, len(rendererOptions)) if rendererOptions != nil { copy(tocRendererOptions, rendererOptions) } tocRendererOptions = append(tocRendererOptions, renderer.WithNodeRenderers(util.Prioritized(extension.NewStrikethroughHTMLRenderer(), 500)), renderer.WithNodeRenderers(util.Prioritized(emoji.NewHTMLRenderer(), 200)), ) inlineTags := []extras.InlineTag{ extras.DeleteTag, extras.InsertTag, extras.MarkTag, extras.SubscriptTag, extras.SuperscriptTag, } for _, tag := range inlineTags { tocRendererOptions = append(tocRendererOptions, renderer.WithNodeRenderers(util.Prioritized(extras.NewInlineTagHTMLRenderer(tag), tag.RenderPriority)), ) } var ( extensions = []goldmark.Extender{ hugocontext.New(pcfg.Logger), newLinks(cfg), newTocExtension(tocRendererOptions), blockquotes.New(), } parserOptions []parser.Option ) extensions = append(extensions, images.New(cfg.Parser.WrapStandAloneImageWithinParagraph)) extensions = append(extensions, extras.New( extras.Config{ Delete: extras.DeleteConfig{Enable: cfg.Extensions.Extras.Delete.Enable}, Insert: extras.InsertConfig{Enable: cfg.Extensions.Extras.Insert.Enable}, Mark: extras.MarkConfig{Enable: cfg.Extensions.Extras.Mark.Enable}, Subscript: extras.SubscriptConfig{Enable: cfg.Extensions.Extras.Subscript.Enable}, Superscript: extras.SuperscriptConfig{Enable: cfg.Extensions.Extras.Superscript.Enable}, }, )) if mcfg.Highlight.CodeFences { extensions = append(extensions, codeblocks.New()) } if cfg.Extensions.Table { extensions = append(extensions, extension.Table) extensions = append(extensions, tables.New()) } if cfg.Extensions.Strikethrough { extensions = append(extensions, extension.Strikethrough) } if cfg.Extensions.Linkify { extensions = append(extensions, extension.Linkify) } if cfg.Extensions.TaskList { extensions = append(extensions, extension.TaskList) } if !cfg.Extensions.Typographer.Disable { t := extension.NewTypographer( extension.WithTypographicSubstitutions(toTypographicPunctuationMap(cfg.Extensions.Typographer)), ) extensions = append(extensions, t) } if cfg.Extensions.DefinitionList { extensions = append(extensions, extension.DefinitionList) } if cfg.Extensions.Footnote.Enable { opts := []extension.FootnoteOption{} opts = append(opts, extension.WithFootnoteBacklinkHTML(cfg.Extensions.Footnote.BacklinkHTML)) if cfg.Extensions.Footnote.EnableAutoIDPrefix { opts = append(opts, extension.WithFootnoteIDPrefixFunction(func(n ast.Node) []byte { documentID := n.OwnerDocument().Meta()["documentID"].(string) return []byte("h" + documentID) })) } f := extension.NewFootnote(opts...) extensions = append(extensions, f) } if cfg.Extensions.CJK.Enable { opts := []extension.CJKOption{} if cfg.Extensions.CJK.EastAsianLineBreaks { if cfg.Extensions.CJK.EastAsianLineBreaksStyle == "css3draft" { opts = append(opts, extension.WithEastAsianLineBreaks(extension.EastAsianLineBreaksCSS3Draft)) } else { opts = append(opts, extension.WithEastAsianLineBreaks()) } } if cfg.Extensions.CJK.EscapedSpace { opts = append(opts, extension.WithEscapedSpace()) } c := extension.NewCJK(opts...) extensions = append(extensions, c) } if cfg.Extensions.Passthrough.Enable { extensions = append(extensions, passthrough.New(cfg.Extensions.Passthrough)) } if pcfg.Conf.EnableEmoji() { extensions = append(extensions, emoji.Emoji) } if cfg.Parser.Attribute.Title { parserOptions = append(parserOptions, parser.WithAttribute()) } if cfg.Parser.Attribute.Block || cfg.Parser.AutoHeadingID || cfg.Parser.AutoDefinitionTermID { extensions = append(extensions, attributes.New(cfg.Parser)) } md := goldmark.New( goldmark.WithExtensions( extensions..., ), goldmark.WithParserOptions( parserOptions..., ), goldmark.WithRendererOptions( rendererOptions..., ), ) return md } type parserResult struct { doc any toc *tableofcontents.Fragments } func (p parserResult) Doc() any { return p.doc } func (p parserResult) TableOfContents() *tableofcontents.Fragments { return p.toc } type renderResult struct { converter.ResultRender } type converterResult struct { converter.ResultRender tableOfContentsProvider } type tableOfContentsProvider interface { TableOfContents() *tableofcontents.Fragments } func (c *goldmarkConverter) Parse(ctx converter.RenderContext) (converter.ResultParse, error) { pctx := c.newParserContext(ctx) reader := text.NewReader(ctx.Src) doc := c.md.Parser().Parse( reader, parser.WithContext(pctx), ) doc.OwnerDocument().AddMeta("documentID", c.ctx.DocumentID) return parserResult{ doc: doc, toc: pctx.TableOfContents(), }, nil } func (c *goldmarkConverter) Render(ctx converter.RenderContext, doc any) (converter.ResultRender, error) { n := doc.(ast.Node) buf := &render.BufWriter{Buffer: &bytes.Buffer{}} rcx := &render.RenderContextDataHolder{ Rctx: ctx, Dctx: c.ctx, } w := &render.Context{ BufWriter: buf, ContextData: rcx, } if err := c.md.Renderer().Render(w, ctx.Src, n); err != nil { return nil, err } return renderResult{ ResultRender: buf, }, nil } func (c *goldmarkConverter) Convert(ctx converter.RenderContext) (converter.ResultRender, error) { parseResult, err := c.Parse(ctx) if err != nil { return nil, err } renderResult, err := c.Render(ctx, parseResult.Doc()) if err != nil { return nil, err } return converterResult{ ResultRender: renderResult, tableOfContentsProvider: parseResult, }, nil } func (c *goldmarkConverter) newParserContext(rctx converter.RenderContext) *parserContext { ctx := parser.NewContext(parser.WithIDs(newIDFactory(c.cfg.MarkupConfig().Goldmark.Parser.AutoIDType))) ctx.Set(tocEnableKey, rctx.RenderTOC) return &parserContext{ Context: ctx, } } type parserContext struct { parser.Context } func (p *parserContext) TableOfContents() *tableofcontents.Fragments { if v := p.Get(tocResultKey); v != nil { return v.(*tableofcontents.Fragments) } return nil } // Note: It's tempting to put this in the config package, but that doesn't work. // TODO(bep) create upstream issue. func toTypographicPunctuationMap(t goldmark_config.Typographer) map[extension.TypographicPunctuation][]byte { return map[extension.TypographicPunctuation][]byte{ extension.LeftSingleQuote: []byte(t.LeftSingleQuote), extension.RightSingleQuote: []byte(t.RightSingleQuote), extension.LeftDoubleQuote: []byte(t.LeftDoubleQuote), extension.RightDoubleQuote: []byte(t.RightDoubleQuote), extension.EnDash: []byte(t.EnDash), extension.EmDash: []byte(t.EmDash), extension.Ellipsis: []byte(t.Ellipsis), extension.LeftAngleQuote: []byte(t.LeftAngleQuote), extension.RightAngleQuote: []byte(t.RightAngleQuote), extension.Apostrophe: []byte(t.Apostrophe), } } gohugoio-hugo-6abdaca/markup/goldmark/convert_test.go000066400000000000000000000521371507671574500233130ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package goldmark_test import ( "context" "fmt" "strings" "testing" "github.com/pelletier/go-toml/v2" "github.com/spf13/cast" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/testconfig" "github.com/gohugoio/hugo/markup/converter/hooks" "github.com/gohugoio/hugo/markup/goldmark" "github.com/gohugoio/hugo/markup/highlight" "github.com/gohugoio/hugo/markup/markup_config" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/markup/converter" qt "github.com/frankban/quicktest" ) var cfgStrHighlichgtNoClasses = ` [markup] [markup.highlight] noclasses=false ` func convert(c *qt.C, conf config.AllProvider, content string) converter.ResultRender { pconf := converter.ProviderConfig{ Logger: loggers.NewDefault(), Conf: conf, } p, err := goldmark.Provider.New( pconf, ) c.Assert(err, qt.IsNil) mconf := pconf.MarkupConfig() h := highlight.New(mconf.Highlight) getRenderer := func(t hooks.RendererType, id any) any { switch t { case hooks.CodeBlockRendererType: return h case hooks.TableRendererType: return tableRenderer(0) } return nil } conv, err := p.New(converter.DocumentContext{DocumentID: "thedoc"}) c.Assert(err, qt.IsNil) b, err := conv.Convert(converter.RenderContext{RenderTOC: true, Src: []byte(content), GetRenderer: getRenderer}) c.Assert(err, qt.IsNil) return b } func TestConvert(t *testing.T) { c := qt.New(t) // Smoke test of the default configuration. content := ` ## Links https://github.com/gohugoio/hugo/issues/6528 [Live Demo here!](https://docuapi.netlify.com/) [I'm an inline-style link with title](https://www.google.com "Google's Homepage") https://bar.baz/ ## Code Fences §§§bash LINE1 §§§ ## Code Fences No Lexer §§§moo LINE1 §§§ ## Custom ID {#custom} ## Auto ID * Autolink: https://gohugo.io/ * Strikethrough:~~Hi~~ Hello, world! ## Table | foo | bar | | --- | --- | | baz | bim | ## Task Lists (default on) - [x] Finish my changes[^1] - [ ] Push my commits to GitHub - [ ] Open a pull request ## Smartypants (default on) * Straight double "quotes" and single 'quotes' into “curly” quote HTML entities * Dashes (“--” and “---”) into en- and em-dash entities * Three consecutive dots (“...”) into an ellipsis entity * Apostrophes are also converted: "That was back in the '90s, that's a long time ago" ## Footnotes That's some text with a footnote.[^1] ## Definition Lists date : the datetime assigned to this page. description : the description for the content. ## 神真美好 ## 神真美好 ## 神真美好 [^1]: And that's the footnote. ` // Code fences content = strings.Replace(content, "§§§", "```", -1) cfg := config.FromTOMLConfigString(` [markup] [markup.highlight] noClasses = false [markup.goldmark.renderer] unsafe = true `) b := convert(c, testconfig.GetTestConfig(nil, cfg), content) got := string(b.Bytes()) // Links c.Assert(got, qt.Contains, `
      Live Demo here!`) c.Assert(got, qt.Contains, `https://foo.bar/`) c.Assert(got, qt.Contains, `https://bar.baz/`) c.Assert(got, qt.Contains, `fake@example.com`) c.Assert(got, qt.Contains, `mailto:fake2@example.com

      `) // Header IDs c.Assert(got, qt.Contains, `

      Custom ID

      `, qt.Commentf(got)) c.Assert(got, qt.Contains, `

      Auto ID

      `, qt.Commentf(got)) c.Assert(got, qt.Contains, `

      神真美好

      `, qt.Commentf(got)) c.Assert(got, qt.Contains, `

      神真美好

      `, qt.Commentf(got)) c.Assert(got, qt.Contains, `

      神真美好

      `, qt.Commentf(got)) // Code fences c.Assert(got, qt.Contains, "
      LINE1\n
      ") c.Assert(got, qt.Contains, "Code Fences No Lexer\n
      LINE1\n
      ") // Extensions c.Assert(got, qt.Contains, `Autolink: https://gohugo.io/`) c.Assert(got, qt.Contains, `Strikethrough:Hi Hello, world`) c.Assert(got, qt.Contains, `Table`) c.Assert(got, qt.Contains, `
    1. Push my commits to GitHub
    2. `) c.Assert(got, qt.Contains, `Straight double “quotes” and single ‘quotes’`) c.Assert(got, qt.Contains, `Dashes (“–” and “—”) `) c.Assert(got, qt.Contains, `Three consecutive dots (“…”)`) c.Assert(got, qt.Contains, `“That was back in the ’90s, that’s a long time ago”`) c.Assert(got, qt.Contains, `footnote.1`) c.Assert(got, qt.Contains, `
      `) c.Assert(got, qt.Contains, `
      date
      `) toc, ok := b.(converter.TableOfContentsProvider) c.Assert(ok, qt.Equals, true) tocHTML, _ := toc.TableOfContents().ToHTML(1, 2, false) c.Assert(string(tocHTML), qt.Contains, "TableOfContents") } func TestConvertAutoIDAsciiOnly(t *testing.T) { c := qt.New(t) content := ` ## God is Good: 神真美好 ` cfg := config.FromTOMLConfigString(` [markup] [markup.goldmark] [markup.goldmark.parser] autoHeadingIDType = 'github-ascii' `) b := convert(c, testconfig.GetTestConfig(nil, cfg), content) got := string(b.Bytes()) c.Assert(got, qt.Contains, "

      ") } func TestConvertAutoIDBlackfriday(t *testing.T) { c := qt.New(t) content := ` ## Let's try this, shall we? ` cfg := config.FromTOMLConfigString(` [markup] [markup.goldmark] [markup.goldmark.parser] autoHeadingIDType = 'blackfriday' `) b := convert(c, testconfig.GetTestConfig(nil, cfg), content) got := string(b.Bytes()) c.Assert(got, qt.Contains, "

      ") } func TestConvertAttributes(t *testing.T) { c := qt.New(t) withBlockAttributes := func(conf *markup_config.Config) { conf.Goldmark.Parser.Attribute.Block = true conf.Goldmark.Parser.Attribute.Title = false } withTitleAndBlockAttributes := func(conf *markup_config.Config) { conf.Goldmark.Parser.Attribute.Block = true conf.Goldmark.Parser.Attribute.Title = true } for _, test := range []struct { name string withConfig func(conf *markup_config.Config) input string expect any }{ { "Title", nil, "## heading {#id .className attrName=attrValue class=\"class1 class2\"}", "

      heading

      \n", }, { "Blockquote", withBlockAttributes, "> foo\n> bar\n{#id .className attrName=attrValue class=\"class1 class2\"}\n", "

      foo\nbar

      \n
      \n", }, /*{ // TODO(bep) this needs an upstream fix, see https://github.com/yuin/goldmark/issues/195 "Code block, CodeFences=false", func(conf *markup_config.Config) { withBlockAttributes(conf) conf.Highlight.CodeFences = false }, "```bash\necho 'foo';\n```\n{.myclass}", "TODO", },*/ { "Code block, CodeFences=true", func(conf *markup_config.Config) { withBlockAttributes(conf) conf.Highlight.CodeFences = true }, "```bash {.myclass id=\"myid\"}\necho 'foo';\n````\n", "
      \n\n
      \n
      1\n
      \n
      echo 'foo';\n
      \n
      \n
      ", }, { "Code block, CodeFences=true,lineanchors, default ordinal", func(conf *markup_config.Config) { withBlockAttributes(conf) conf.Highlight.CodeFences = true conf.Highlight.NoClasses = false }, "```bash {linenos=inline, anchorlinenos=true}\necho 'foo';\nnecho 'bar';\n```\n\n```bash {linenos=inline, anchorlinenos=true}\necho 'baz';\nnecho 'qux';\n```", []string{ "1echo 'foo'", "2necho 'bar'", "2necho 'qux'", }, }, { "Paragraph", withBlockAttributes, "\nHi there.\n{.myclass }", "

      Hi there.

      \n", }, { "Ordered list", withBlockAttributes, "\n1. First\n2. Second\n{.myclass }", "
        \n
      1. First
      2. \n
      3. Second
      4. \n
      \n", }, { "Unordered list", withBlockAttributes, "\n* First\n* Second\n{.myclass }", "
        \n
      • First
      • \n
      • Second
      • \n
      \n", }, { "Unordered list, indented", withBlockAttributes, `* Fruit * Apple * Orange * Banana {.fruits} * Dairy * Milk * Cheese {.dairies} {.list}`, []string{"

      Featured Article

      {{ range first 1 .Pages.ByPublishDate.Reverse }}

      {{ .Title }}

      {{ .Description }}

      {{ end }}